{"version":3,"file":"index.mjs","sources":["../playcanvas-stable.min.js","../__modules__.js","../__settings__.js","../__loading__.js"],"sourcesContent":["/**\n * @license\n * PlayCanvas Engine v2.12.4 revision ffc4f6a (RELEASE)\n * Copyright 2011-2025 PlayCanvas Ltd. All rights reserved.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\nconst TRACEID_RENDER_FRAME = 'RenderFrame';\nconst TRACEID_RENDER_FRAME_TIME = 'RenderFrameTime';\nconst TRACEID_RENDER_PASS = 'RenderPass';\nconst TRACEID_RENDER_PASS_DETAIL = 'RenderPassDetail';\nconst TRACEID_RENDER_ACTION = 'RenderAction';\nconst TRACEID_RENDER_TARGET_ALLOC = 'RenderTargetAlloc';\nconst TRACEID_TEXTURE_ALLOC = 'TextureAlloc';\nconst TRACEID_SHADER_ALLOC = 'ShaderAlloc';\nconst TRACEID_SHADER_COMPILE = 'ShaderCompile';\nconst TRACEID_VRAM_TEXTURE = 'VRAM.Texture';\nconst TRACEID_VRAM_VB = 'VRAM.Vb';\nconst TRACEID_VRAM_IB = 'VRAM.Ib';\nconst TRACEID_VRAM_SB = 'VRAM.Sb';\nconst TRACEID_BINDGROUP_ALLOC = 'BindGroupAlloc';\nconst TRACEID_BINDGROUPFORMAT_ALLOC = 'BindGroupFormatAlloc';\nconst TRACEID_RENDERPIPELINE_ALLOC = 'RenderPipelineAlloc';\nconst TRACEID_COMPUTEPIPELINE_ALLOC = 'ComputePipelineAlloc';\nconst TRACEID_PIPELINELAYOUT_ALLOC = 'PipelineLayoutAlloc';\nconst TRACEID_ELEMENT = 'Element';\nconst TRACEID_TEXTURES = 'Textures';\nconst TRACEID_RENDER_QUEUE = 'RenderQueue';\nconst TRACEID_OCTREE_RESOURCES = 'OctreeResources';\nconst TRACEID_GPU_TIMINGS = 'GpuTimings';\n\nconst version = '2.12.4';\nconst revision = 'ffc4f6a';\nfunction extend(target, ex) {\n\t\tfor(const prop in ex){\n\t\t\t\tconst copy = ex[prop];\n\t\t\t\tif (Array.isArray(copy)) {\n\t\t\t\t\t\ttarget[prop] = extend([], copy);\n\t\t\t\t} else if (copy && typeof copy === 'object') {\n\t\t\t\t\t\ttarget[prop] = extend({}, copy);\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget[prop] = copy;\n\t\t\t\t}\n\t\t}\n\t\treturn target;\n}\n\nconst guid = {\n\t\tcreate () {\n\t\t\t\treturn 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c)=>{\n\t\t\t\t\t\tconst r = Math.random() * 16 | 0;\n\t\t\t\t\t\tconst v = c === 'x' ? r : r & 0x3 | 0x8;\n\t\t\t\t\t\treturn v.toString(16);\n\t\t\t\t});\n\t\t}\n};\n\nconst path = {\n\t\tdelimiter: '/',\n\t\tjoin (...sections) {\n\t\t\t\tlet result = sections[0];\n\t\t\t\tfor(let i = 0; i < sections.length - 1; i++){\n\t\t\t\t\t\tconst one = sections[i];\n\t\t\t\t\t\tconst two = sections[i + 1];\n\t\t\t\t\t\tif (two[0] === path.delimiter) {\n\t\t\t\t\t\t\t\tresult = two;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (one && two && one[one.length - 1] !== path.delimiter && two[0] !== path.delimiter) {\n\t\t\t\t\t\t\t\tresult += path.delimiter + two;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult += two;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t},\n\t\tnormalize (pathname) {\n\t\t\t\tconst lead = pathname.startsWith(path.delimiter);\n\t\t\t\tconst trail = pathname.endsWith(path.delimiter);\n\t\t\t\tconst parts = pathname.split('/');\n\t\t\t\tlet result = '';\n\t\t\t\tlet cleaned = [];\n\t\t\t\tfor(let i = 0; i < parts.length; i++){\n\t\t\t\t\t\tif (parts[i] === '') continue;\n\t\t\t\t\t\tif (parts[i] === '.') continue;\n\t\t\t\t\t\tif (parts[i] === '..' && cleaned.length > 0) {\n\t\t\t\t\t\t\t\tcleaned = cleaned.slice(0, cleaned.length - 2);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i > 0) cleaned.push(path.delimiter);\n\t\t\t\t\t\tcleaned.push(parts[i]);\n\t\t\t\t}\n\t\t\t\tresult = cleaned.join('');\n\t\t\t\tif (!lead && result[0] === path.delimiter) {\n\t\t\t\t\t\tresult = result.slice(1);\n\t\t\t\t}\n\t\t\t\tif (trail && result[result.length - 1] !== path.delimiter) {\n\t\t\t\t\t\tresult += path.delimiter;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t},\n\t\tsplit (pathname) {\n\t\t\t\tconst lastDelimiterIndex = pathname.lastIndexOf(path.delimiter);\n\t\t\t\tif (lastDelimiterIndex !== -1) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tpathname.substring(0, lastDelimiterIndex),\n\t\t\t\t\t\t\t\tpathname.substring(lastDelimiterIndex + 1)\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tpathname\n\t\t\t\t];\n\t\t},\n\t\tgetBasename (pathname) {\n\t\t\t\treturn path.split(pathname)[1];\n\t\t},\n\t\tgetDirectory (pathname) {\n\t\t\t\treturn path.split(pathname)[0];\n\t\t},\n\t\tgetExtension (pathname) {\n\t\t\t\tconst ext = pathname.split('?')[0].split('.').pop();\n\t\t\t\tif (ext !== pathname) {\n\t\t\t\t\t\treturn `.${ext}`;\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t},\n\t\tisRelativePath (pathname) {\n\t\t\t\treturn pathname.charAt(0) !== '/' && pathname.match(/:\\/\\//) === null;\n\t\t},\n\t\textractPath (pathname) {\n\t\t\t\tlet result = '';\n\t\t\t\tconst parts = pathname.split('/');\n\t\t\t\tlet i = 0;\n\t\t\t\tif (parts.length > 1) {\n\t\t\t\t\t\tif (path.isRelativePath(pathname)) {\n\t\t\t\t\t\t\t\tif (parts[0] === '.') {\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult += i === 0 ? parts[i] : `/${parts[i]}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (parts[0] === '..') {\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult += i === 0 ? parts[i] : `/${parts[i]}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresult = '.';\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult += `/${parts[i]}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(i = 0; i < parts.length - 1; ++i){\n\t\t\t\t\t\t\t\t\t\tresult += i === 0 ? parts[i] : `/${parts[i]}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n};\n\nconst detectPassiveEvents = ()=>{\n\t\tlet result = false;\n\t\ttry {\n\t\t\t\tconst opts = Object.defineProperty({}, 'passive', {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\tresult = true;\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\twindow.addEventListener('testpassive', null, opts);\n\t\t\t\twindow.removeEventListener('testpassive', null, opts);\n\t\t} catch (e) {}\n\t\treturn result;\n};\nconst ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\nconst environment = typeof window !== 'undefined' ? 'browser' : typeof global !== 'undefined' ? 'node' : 'worker';\nconst platformName = /android/i.test(ua) ? 'android' : /ip(?:[ao]d|hone)/i.test(ua) ? 'ios' : /windows/i.test(ua) ? 'windows' : /mac os/i.test(ua) ? 'osx' : /linux/i.test(ua) ? 'linux' : /cros/i.test(ua) ? 'cros' : null;\nconst browserName = environment !== 'browser' ? null : /Chrome\\/|Chromium\\/|Edg.*\\//.test(ua) ? 'chrome' : /Safari\\//.test(ua) ? 'safari' : /Firefox\\//.test(ua) ? 'firefox' : 'other';\nconst xbox = /xbox/i.test(ua);\nconst touch = environment === 'browser' && ('ontouchstart' in window || 'maxTouchPoints' in navigator && navigator.maxTouchPoints > 0);\nconst gamepads = environment === 'browser' && (!!navigator.getGamepads || !!navigator.webkitGetGamepads);\nconst workers = typeof Worker !== 'undefined';\nconst passiveEvents = detectPassiveEvents();\nconst platform = {\n\t\tname: platformName,\n\t\tenvironment: environment,\n\t\tglobal: (typeof globalThis !== 'undefined' && globalThis) ?? (environment === 'browser' && window) ?? (environment === 'node' && global) ?? (environment === 'worker' && self),\n\t\tbrowser: environment === 'browser',\n\t\tworker: environment === 'worker',\n\t\tdesktop: [\n\t\t\t\t'windows',\n\t\t\t\t'osx',\n\t\t\t\t'linux',\n\t\t\t\t'cros'\n\t\t].includes(platformName),\n\t\tmobile: [\n\t\t\t\t'android',\n\t\t\t\t'ios'\n\t\t].includes(platformName),\n\t\tios: platformName === 'ios',\n\t\tandroid: platformName === 'android',\n\t\txbox: xbox,\n\t\tgamepads: gamepads,\n\t\ttouch: touch,\n\t\tworkers: workers,\n\t\tpassiveEvents: passiveEvents,\n\t\tbrowserName: browserName\n};\n\nconst ASCII_LOWERCASE = 'abcdefghijklmnopqrstuvwxyz';\nconst ASCII_UPPERCASE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\nconst ASCII_LETTERS = ASCII_LOWERCASE + ASCII_UPPERCASE;\nconst HIGH_SURROGATE_BEGIN = 0xD800;\nconst HIGH_SURROGATE_END = 0xDBFF;\nconst LOW_SURROGATE_BEGIN = 0xDC00;\nconst LOW_SURROGATE_END = 0xDFFF;\nconst ZERO_WIDTH_JOINER = 0x200D;\nconst REGIONAL_INDICATOR_BEGIN = 0x1F1E6;\nconst REGIONAL_INDICATOR_END = 0x1F1FF;\nconst FITZPATRICK_MODIFIER_BEGIN = 0x1F3FB;\nconst FITZPATRICK_MODIFIER_END = 0x1F3FF;\nconst DIACRITICAL_MARKS_BEGIN = 0x20D0;\nconst DIACRITICAL_MARKS_END = 0x20FF;\nconst VARIATION_MODIFIER_BEGIN = 0xFE00;\nconst VARIATION_MODIFIER_END = 0xFE0F;\nfunction getCodePointData(string, i = 0) {\n\t\tconst size = string.length;\n\t\tif (i < 0 || i >= size) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst first = string.charCodeAt(i);\n\t\tif (size > 1 && first >= HIGH_SURROGATE_BEGIN && first <= HIGH_SURROGATE_END) {\n\t\t\t\tconst second = string.charCodeAt(i + 1);\n\t\t\t\tif (second >= LOW_SURROGATE_BEGIN && second <= LOW_SURROGATE_END) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tcode: (first - HIGH_SURROGATE_BEGIN) * 0x400 + second - LOW_SURROGATE_BEGIN + 0x10000,\n\t\t\t\t\t\t\t\tlong: true\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tcode: first,\n\t\t\t\tlong: false\n\t\t};\n}\nfunction isCodeBetween(string, begin, end) {\n\t\tif (!string) {\n\t\t\t\treturn false;\n\t\t}\n\t\tconst codeData = getCodePointData(string);\n\t\tif (codeData) {\n\t\t\t\tconst code = codeData.code;\n\t\t\t\treturn code >= begin && code <= end;\n\t\t}\n\t\treturn false;\n}\nfunction numCharsToTakeForNextSymbol(string, index) {\n\t\tif (index === string.length - 1) {\n\t\t\t\treturn 1;\n\t\t}\n\t\tif (isCodeBetween(string[index], HIGH_SURROGATE_BEGIN, HIGH_SURROGATE_END)) {\n\t\t\t\tconst first = string.substring(index, index + 2);\n\t\t\t\tconst second = string.substring(index + 2, index + 4);\n\t\t\t\tif (isCodeBetween(second, FITZPATRICK_MODIFIER_BEGIN, FITZPATRICK_MODIFIER_END) || isCodeBetween(first, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END) && isCodeBetween(second, REGIONAL_INDICATOR_BEGIN, REGIONAL_INDICATOR_END)) {\n\t\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t\tif (isCodeBetween(second, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\t\t\treturn 3;\n\t\t\t\t}\n\t\t\t\treturn 2;\n\t\t}\n\t\tif (isCodeBetween(string[index + 1], VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\treturn 2;\n\t\t}\n\t\treturn 1;\n}\nconst string = {\n\t\tASCII_LOWERCASE: ASCII_LOWERCASE,\n\t\tASCII_UPPERCASE: ASCII_UPPERCASE,\n\t\tASCII_LETTERS: ASCII_LETTERS,\n\t\tformat (s, ...args) {\n\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\ts = s.replace(`{${i}}`, args[i]);\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t},\n\t\tgetCodePoint (string, i) {\n\t\t\t\tconst codePointData = getCodePointData(string, i);\n\t\t\t\treturn codePointData && codePointData.code;\n\t\t},\n\t\tgetCodePoints (string) {\n\t\t\t\tif (typeof string !== 'string') {\n\t\t\t\t\t\tthrow new TypeError('Not a string');\n\t\t\t\t}\n\t\t\t\tlet i = 0;\n\t\t\t\tconst arr = [];\n\t\t\t\tlet codePoint;\n\t\t\t\twhile(!!(codePoint = getCodePointData(string, i))){\n\t\t\t\t\t\tarr.push(codePoint.code);\n\t\t\t\t\t\ti += codePoint.long ? 2 : 1;\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t},\n\t\tgetSymbols (string) {\n\t\t\t\tif (typeof string !== 'string') {\n\t\t\t\t\t\tthrow new TypeError('Not a string');\n\t\t\t\t}\n\t\t\t\tlet index = 0;\n\t\t\t\tconst length = string.length;\n\t\t\t\tconst output = [];\n\t\t\t\tlet take = 0;\n\t\t\t\tlet ch;\n\t\t\t\twhile(index < length){\n\t\t\t\t\t\ttake += numCharsToTakeForNextSymbol(string, index + take);\n\t\t\t\t\t\tch = string[index + take];\n\t\t\t\t\t\tif (isCodeBetween(ch, DIACRITICAL_MARKS_BEGIN, DIACRITICAL_MARKS_END)) {\n\t\t\t\t\t\t\t\tch = string[index + take++];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isCodeBetween(ch, VARIATION_MODIFIER_BEGIN, VARIATION_MODIFIER_END)) {\n\t\t\t\t\t\t\t\tch = string[index + take++];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ch && ch.charCodeAt(0) === ZERO_WIDTH_JOINER) {\n\t\t\t\t\t\t\t\tch = string[index + take++];\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst char = string.substring(index, index + take);\n\t\t\t\t\t\toutput.push(char);\n\t\t\t\t\t\tindex += take;\n\t\t\t\t\t\ttake = 0;\n\t\t\t\t}\n\t\t\t\treturn output;\n\t\t},\n\t\tfromCodePoint (...args) {\n\t\t\t\treturn args.map((codePoint)=>{\n\t\t\t\t\t\tif (codePoint > 0xFFFF) {\n\t\t\t\t\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\t\t\t\t\treturn String.fromCharCode((codePoint >> 10) + 0xD800, codePoint % 0x400 + 0xDC00);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn String.fromCharCode(codePoint);\n\t\t\t\t}).join('');\n\t\t}\n};\n\nclass EventHandle {\n\t\tconstructor(handler, name, callback, scope, once = false){\n\t\t\t\tthis._removed = false;\n\t\t\t\tthis.handler = handler;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.callback = callback;\n\t\t\t\tthis.scope = scope;\n\t\t\t\tthis._once = once;\n\t\t}\n\t\toff() {\n\t\t\t\tif (this._removed) return;\n\t\t\t\tthis.handler.offByHandle(this);\n\t\t}\n\t\ton(name, callback, scope = this) {\n\t\t\t\treturn this.handler._addCallback(name, callback, scope, false);\n\t\t}\n\t\tonce(name, callback, scope = this) {\n\t\t\t\treturn this.handler._addCallback(name, callback, scope, true);\n\t\t}\n\t\tset removed(value) {\n\t\t\t\tif (!value) return;\n\t\t\t\tthis._removed = true;\n\t\t}\n\t\tget removed() {\n\t\t\t\treturn this._removed;\n\t\t}\n\t\ttoJSON(key) {\n\t\t\t\treturn undefined;\n\t\t}\n}\n\nclass EventHandler {\n\t\tinitEventHandler() {\n\t\t\t\tthis._callbacks = new Map();\n\t\t\t\tthis._callbackActive = new Map();\n\t\t}\n\t\t_addCallback(name, callback, scope, once) {\n\t\t\t\tif (!this._callbacks.has(name)) {\n\t\t\t\t\t\tthis._callbacks.set(name, []);\n\t\t\t\t}\n\t\t\t\tif (this._callbackActive.has(name)) {\n\t\t\t\t\t\tconst callbackActive = this._callbackActive.get(name);\n\t\t\t\t\t\tif (callbackActive && callbackActive === this._callbacks.get(name)) {\n\t\t\t\t\t\t\t\tthis._callbackActive.set(name, callbackActive.slice());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst evt = new EventHandle(this, name, callback, scope, once);\n\t\t\t\tthis._callbacks.get(name).push(evt);\n\t\t\t\treturn evt;\n\t\t}\n\t\ton(name, callback, scope = this) {\n\t\t\t\treturn this._addCallback(name, callback, scope, false);\n\t\t}\n\t\tonce(name, callback, scope = this) {\n\t\t\t\treturn this._addCallback(name, callback, scope, true);\n\t\t}\n\t\toff(name, callback, scope) {\n\t\t\t\tif (name) {\n\t\t\t\t\t\tif (this._callbackActive.has(name) && this._callbackActive.get(name) === this._callbacks.get(name)) {\n\t\t\t\t\t\t\t\tthis._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor (const [key, callbacks] of this._callbackActive){\n\t\t\t\t\t\t\t\tif (!this._callbacks.has(key)) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._callbacks.get(key) !== callbacks) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._callbackActive.set(key, callbacks.slice());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!name) {\n\t\t\t\t\t\tfor (const callbacks of this._callbacks.values()){\n\t\t\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._callbacks.clear();\n\t\t\t\t} else if (!callback) {\n\t\t\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\t\t\tif (callbacks) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\t\t\treturn this;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\tif (callbacks[i].callback !== callback) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scope && callbacks[i].scope !== scope) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallbacks[i].removed = true;\n\t\t\t\t\t\t\t\tcallbacks.splice(i, 1);\n\t\t\t\t\t\t\t\ti--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (callbacks.length === 0) {\n\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\toffByHandle(handle) {\n\t\t\t\tconst name = handle.name;\n\t\t\t\thandle.removed = true;\n\t\t\t\tif (this._callbackActive.has(name) && this._callbackActive.get(name) === this._callbacks.get(name)) {\n\t\t\t\t\t\tthis._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t}\n\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst ind = callbacks.indexOf(handle);\n\t\t\t\tif (ind !== -1) {\n\t\t\t\t\t\tcallbacks.splice(ind, 1);\n\t\t\t\t\t\tif (callbacks.length === 0) {\n\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tfire(name, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n\t\t\t\tif (!name) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst callbacksInitial = this._callbacks.get(name);\n\t\t\t\tif (!callbacksInitial) {\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tlet callbacks;\n\t\t\t\tif (!this._callbackActive.has(name)) {\n\t\t\t\t\t\tthis._callbackActive.set(name, callbacksInitial);\n\t\t\t\t} else if (this._callbackActive.get(name) !== callbacksInitial) {\n\t\t\t\t\t\tcallbacks = callbacksInitial.slice();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; (callbacks || this._callbackActive.get(name)) && i < (callbacks || this._callbackActive.get(name)).length; i++){\n\t\t\t\t\t\tconst evt = (callbacks || this._callbackActive.get(name))[i];\n\t\t\t\t\t\tif (!evt.callback) continue;\n\t\t\t\t\t\tevt.callback.call(evt.scope, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8);\n\t\t\t\t\t\tif (evt._once) {\n\t\t\t\t\t\t\t\tconst existingCallback = this._callbacks.get(name);\n\t\t\t\t\t\t\t\tconst ind = existingCallback ? existingCallback.indexOf(evt) : -1;\n\t\t\t\t\t\t\t\tif (ind !== -1) {\n\t\t\t\t\t\t\t\t\t\tif (this._callbackActive.get(name) === existingCallback) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._callbackActive.set(name, this._callbackActive.get(name).slice());\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst callbacks = this._callbacks.get(name);\n\t\t\t\t\t\t\t\t\t\tif (!callbacks) continue;\n\t\t\t\t\t\t\t\t\t\tcallbacks[ind].removed = true;\n\t\t\t\t\t\t\t\t\t\tcallbacks.splice(ind, 1);\n\t\t\t\t\t\t\t\t\t\tif (callbacks.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._callbacks.delete(name);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\tthis._callbackActive.delete(name);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\thasEvent(name) {\n\t\t\t\treturn !!this._callbacks.get(name)?.length;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._callbacks = new Map();\n\t\t\t\tthis._callbackActive = new Map();\n\t\t}\n}\n\nclass IndexedList {\n\t\tpush(key, item) {\n\t\t\t\tif (this._index[key]) {\n\t\t\t\t\t\tthrow Error(`Key already in index ${key}`);\n\t\t\t\t}\n\t\t\t\tconst location = this._list.push(item) - 1;\n\t\t\t\tthis._index[key] = location;\n\t\t}\n\t\thas(key) {\n\t\t\t\treturn this._index[key] !== undefined;\n\t\t}\n\t\tget(key) {\n\t\t\t\tconst location = this._index[key];\n\t\t\t\tif (location !== undefined) {\n\t\t\t\t\t\treturn this._list[location];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tremove(key) {\n\t\t\t\tconst location = this._index[key];\n\t\t\t\tif (location !== undefined) {\n\t\t\t\t\t\tthis._list.splice(location, 1);\n\t\t\t\t\t\tdelete this._index[key];\n\t\t\t\t\t\tfor(key in this._index){\n\t\t\t\t\t\t\t\tconst idx = this._index[key];\n\t\t\t\t\t\t\t\tif (idx > location) {\n\t\t\t\t\t\t\t\t\t\tthis._index[key] = idx - 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list;\n\t\t}\n\t\tclear() {\n\t\t\t\tthis._list.length = 0;\n\t\t\t\tfor(const prop in this._index){\n\t\t\t\t\t\tdelete this._index[prop];\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._list = [];\n\t\t\t\tthis._index = {};\n\t\t}\n}\n\nconst cachedResult = (func)=>{\n\t\tconst uninitToken = {};\n\t\tlet result = uninitToken;\n\t\treturn ()=>{\n\t\t\t\tif (result === uninitToken) {\n\t\t\t\t\t\tresult = func();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t};\n};\nclass Impl {\n\t\tstatic{\n\t\t\t\tthis.modules = {};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.wasmSupported = cachedResult(()=>{\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tif (typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function') {\n\t\t\t\t\t\t\t\t\t\tconst module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n\t\t\t\t\t\t\t\t\t\tif (module instanceof WebAssembly.Module) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t\treturn false;\n\t\t\t\t});\n\t\t}\n\t\tstatic loadScript(url, callback) {\n\t\t\t\tconst s = document.createElement(\"script\");\n\t\t\t\ts.setAttribute('src', url);\n\t\t\t\ts.onload = ()=>{\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\ts.onerror = ()=>{\n\t\t\t\t\t\tcallback(`Failed to load script='${url}'`);\n\t\t\t\t};\n\t\t\t\tdocument.body.appendChild(s);\n\t\t}\n\t\tstatic loadWasm(moduleName, config, callback) {\n\t\t\t\tconst loadUrl = Impl.wasmSupported() && config.glueUrl && config.wasmUrl ? config.glueUrl : config.fallbackUrl;\n\t\t\t\tif (loadUrl) {\n\t\t\t\t\t\tImpl.loadScript(loadUrl, (err)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst module = window[moduleName];\n\t\t\t\t\t\t\t\t\t\twindow[moduleName] = undefined;\n\t\t\t\t\t\t\t\t\t\tmodule({\n\t\t\t\t\t\t\t\t\t\t\t\tlocateFile: ()=>config.wasmUrl,\n\t\t\t\t\t\t\t\t\t\t\t\tonAbort: ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback('wasm module aborted.');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}).then((instance)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, instance);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback('No supported wasm modules found.', null);\n\t\t\t\t}\n\t\t}\n\t\tstatic getModule(name) {\n\t\t\t\tif (!Impl.modules.hasOwnProperty(name)) {\n\t\t\t\t\t\tImpl.modules[name] = {\n\t\t\t\t\t\t\t\tconfig: null,\n\t\t\t\t\t\t\t\tinitializing: false,\n\t\t\t\t\t\t\t\tinstance: null,\n\t\t\t\t\t\t\t\tcallbacks: []\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn Impl.modules[name];\n\t\t}\n\t\tstatic initialize(moduleName, module) {\n\t\t\t\tif (module.initializing) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst config = module.config;\n\t\t\t\tif (config.glueUrl || config.wasmUrl || config.fallbackUrl) {\n\t\t\t\t\t\tmodule.initializing = true;\n\t\t\t\t\t\tImpl.loadWasm(moduleName, config, (err, instance)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tif (config.errorHandler) {\n\t\t\t\t\t\t\t\t\t\t\t\tconfig.errorHandler(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`failed to initialize module=${moduleName} error=${err}`);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmodule.instance = instance;\n\t\t\t\t\t\t\t\t\t\tmodule.callbacks.forEach((callback)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(instance);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\nclass WasmModule {\n\t\tstatic setConfig(moduleName, config) {\n\t\t\t\tconst module = Impl.getModule(moduleName);\n\t\t\t\tmodule.config = config;\n\t\t\t\tif (module.callbacks.length > 0) {\n\t\t\t\t\t\tImpl.initialize(moduleName, module);\n\t\t\t\t}\n\t\t}\n\t\tstatic getConfig(moduleName) {\n\t\t\t\treturn Impl.modules?.[moduleName]?.config;\n\t\t}\n\t\tstatic getInstance(moduleName, callback) {\n\t\t\t\tconst module = Impl.getModule(moduleName);\n\t\t\t\tif (module.instance) {\n\t\t\t\t\t\tcallback(module.instance);\n\t\t\t\t} else {\n\t\t\t\t\t\tmodule.callbacks.push(callback);\n\t\t\t\t\t\tif (module.config) {\n\t\t\t\t\t\t\t\tImpl.initialize(moduleName, module);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass ReadStream {\n\t\tconstructor(arraybuffer){\n\t\t\t\tthis.offset = 0;\n\t\t\t\tthis.arraybuffer = arraybuffer;\n\t\t\t\tthis.dataView = new DataView(arraybuffer);\n\t\t}\n\t\tget remainingBytes() {\n\t\t\t\treturn this.dataView.byteLength - this.offset;\n\t\t}\n\t\treset(offset = 0) {\n\t\t\t\tthis.offset = offset;\n\t\t}\n\t\tskip(bytes) {\n\t\t\t\tthis.offset += bytes;\n\t\t}\n\t\talign(bytes) {\n\t\t\t\tthis.offset = this.offset + bytes - 1 & ~(bytes - 1);\n\t\t}\n\t\t_inc(amount) {\n\t\t\t\tthis.offset += amount;\n\t\t\t\treturn this.offset - amount;\n\t\t}\n\t\treadChar() {\n\t\t\t\treturn String.fromCharCode(this.dataView.getUint8(this.offset++));\n\t\t}\n\t\treadChars(numChars) {\n\t\t\t\tlet result = '';\n\t\t\t\tfor(let i = 0; i < numChars; ++i){\n\t\t\t\t\t\tresult += this.readChar();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\treadU8() {\n\t\t\t\treturn this.dataView.getUint8(this.offset++);\n\t\t}\n\t\treadU16() {\n\t\t\t\treturn this.dataView.getUint16(this._inc(2), true);\n\t\t}\n\t\treadU32() {\n\t\t\t\treturn this.dataView.getUint32(this._inc(4), true);\n\t\t}\n\t\treadU64() {\n\t\t\t\treturn this.readU32() + 2 ** 32 * this.readU32();\n\t\t}\n\t\treadU32be() {\n\t\t\t\treturn this.dataView.getUint32(this._inc(4), false);\n\t\t}\n\t\treadArray(result) {\n\t\t\t\tfor(let i = 0; i < result.length; ++i){\n\t\t\t\t\t\tresult[i] = this.readU8();\n\t\t\t\t}\n\t\t}\n\t\treadLine() {\n\t\t\t\tconst view = this.dataView;\n\t\t\t\tlet result = '';\n\t\t\t\twhile(true){\n\t\t\t\t\t\tif (this.offset >= view.byteLength) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst c = String.fromCharCode(this.readU8());\n\t\t\t\t\t\tif (c === '\\n') {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult += c;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass SortedLoopArray {\n\t\tconstructor(args){\n\t\t\t\tthis.items = [];\n\t\t\t\tthis.length = 0;\n\t\t\t\tthis.loopIndex = -1;\n\t\t\t\tthis._sortBy = args.sortBy;\n\t\t\t\tthis._sortHandler = this._doSort.bind(this);\n\t\t}\n\t\t_binarySearch(item) {\n\t\t\t\tlet left = 0;\n\t\t\t\tlet right = this.items.length - 1;\n\t\t\t\tconst search = item[this._sortBy];\n\t\t\t\tlet middle;\n\t\t\t\tlet current;\n\t\t\t\twhile(left <= right){\n\t\t\t\t\t\tmiddle = Math.floor((left + right) / 2);\n\t\t\t\t\t\tcurrent = this.items[middle][this._sortBy];\n\t\t\t\t\t\tif (current <= search) {\n\t\t\t\t\t\t\t\tleft = middle + 1;\n\t\t\t\t\t\t} else if (current > search) {\n\t\t\t\t\t\t\t\tright = middle - 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn left;\n\t\t}\n\t\t_doSort(a, b) {\n\t\t\t\tconst sortBy = this._sortBy;\n\t\t\t\treturn a[sortBy] - b[sortBy];\n\t\t}\n\t\tinsert(item) {\n\t\t\t\tconst index = this._binarySearch(item);\n\t\t\t\tthis.items.splice(index, 0, item);\n\t\t\t\tthis.length++;\n\t\t\t\tif (this.loopIndex >= index) {\n\t\t\t\t\t\tthis.loopIndex++;\n\t\t\t\t}\n\t\t}\n\t\tappend(item) {\n\t\t\t\tthis.items.push(item);\n\t\t\t\tthis.length++;\n\t\t}\n\t\tremove(item) {\n\t\t\t\tconst idx = this.items.indexOf(item);\n\t\t\t\tif (idx < 0) return;\n\t\t\t\tthis.items.splice(idx, 1);\n\t\t\t\tthis.length--;\n\t\t\t\tif (this.loopIndex >= idx) {\n\t\t\t\t\t\tthis.loopIndex--;\n\t\t\t\t}\n\t\t}\n\t\tsort() {\n\t\t\t\tconst current = this.loopIndex >= 0 ? this.items[this.loopIndex] : null;\n\t\t\t\tthis.items.sort(this._sortHandler);\n\t\t\t\tif (current !== null) {\n\t\t\t\t\t\tthis.loopIndex = this.items.indexOf(current);\n\t\t\t\t}\n\t\t}\n}\n\nclass Tags extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(parent){\n\t\t\t\tsuper(), this._index = {}, this._list = [];\n\t\t\t\tthis._parent = parent;\n\t\t}\n\t\tadd(...args) {\n\t\t\t\tlet changed = false;\n\t\t\t\tconst tags = this._processArguments(args, true);\n\t\t\t\tif (!tags.length) {\n\t\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tif (this._index[tags[i]]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tthis._index[tags[i]] = true;\n\t\t\t\t\t\tthis._list.push(tags[i]);\n\t\t\t\t\t\tthis.fire('add', tags[i], this._parent);\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis.fire('change', this._parent);\n\t\t\t\t}\n\t\t\t\treturn changed;\n\t\t}\n\t\tremove(...args) {\n\t\t\t\tlet changed = false;\n\t\t\t\tif (!this._list.length) {\n\t\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\tconst tags = this._processArguments(args, true);\n\t\t\t\tif (!tags.length) {\n\t\t\t\t\t\treturn changed;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tif (!this._index[tags[i]]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\tdelete this._index[tags[i]];\n\t\t\t\t\t\tthis._list.splice(this._list.indexOf(tags[i]), 1);\n\t\t\t\t\t\tthis.fire('remove', tags[i], this._parent);\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis.fire('change', this._parent);\n\t\t\t\t}\n\t\t\t\treturn changed;\n\t\t}\n\t\tclear() {\n\t\t\t\tif (!this._list.length) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst tags = this._list.slice(0);\n\t\t\t\tthis._list = [];\n\t\t\t\tthis._index = {};\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tthis.fire('remove', tags[i], this._parent);\n\t\t\t\t}\n\t\t\t\tthis.fire('change', this._parent);\n\t\t}\n\t\thas(...query) {\n\t\t\t\tif (!this._list.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn this._has(this._processArguments(query));\n\t\t}\n\t\t_has(tags) {\n\t\t\t\tif (!this._list.length || !tags.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tif (tags[i].length === 1) {\n\t\t\t\t\t\t\t\tif (this._index[tags[i][0]]) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet multiple = true;\n\t\t\t\t\t\t\t\tfor(let t = 0; t < tags[i].length; t++){\n\t\t\t\t\t\t\t\t\t\tif (this._index[tags[i][t]]) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmultiple = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (multiple) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list.slice(0);\n\t\t}\n\t\t_processArguments(args, flat) {\n\t\t\t\tconst tags = [];\n\t\t\t\tlet tmp = [];\n\t\t\t\tif (!args || !args.length) {\n\t\t\t\t\t\treturn tags;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\tif (args[i] instanceof Array) {\n\t\t\t\t\t\t\t\tif (!flat) {\n\t\t\t\t\t\t\t\t\t\ttmp = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let t = 0; t < args[i].length; t++){\n\t\t\t\t\t\t\t\t\t\tif (typeof args[i][t] !== 'string') {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (flat) {\n\t\t\t\t\t\t\t\t\t\t\t\ttags.push(args[i][t]);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ttmp.push(args[i][t]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!flat && tmp.length) {\n\t\t\t\t\t\t\t\t\t\ttags.push(tmp);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (typeof args[i] === 'string') {\n\t\t\t\t\t\t\t\tif (flat) {\n\t\t\t\t\t\t\t\t\t\ttags.push(args[i]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttags.push([\n\t\t\t\t\t\t\t\t\t\t\t\targs[i]\n\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn tags;\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._list.length;\n\t\t}\n}\n\nconst now = typeof window !== 'undefined' && window.performance && window.performance.now ? performance.now.bind(performance) : Date.now;\n\nfunction createURI(options) {\n\t\tlet s = '';\n\t\tif ((options.authority || options.scheme) && (options.host || options.hostpath)) {\n\t\t\t\tthrow new Error('Can\\'t have \\'scheme\\' or \\'authority\\' and \\'host\\' or \\'hostpath\\' option');\n\t\t}\n\t\tif (options.host && options.hostpath) {\n\t\t\t\tthrow new Error('Can\\'t have \\'host\\' and \\'hostpath\\' option');\n\t\t}\n\t\tif (options.path && options.hostpath) {\n\t\t\t\tthrow new Error('Can\\'t have \\'path\\' and \\'hostpath\\' option');\n\t\t}\n\t\tif (options.scheme) {\n\t\t\t\ts += `${options.scheme}:`;\n\t\t}\n\t\tif (options.authority) {\n\t\t\t\ts += `//${options.authority}`;\n\t\t}\n\t\tif (options.host) {\n\t\t\t\ts += options.host;\n\t\t}\n\t\tif (options.path) {\n\t\t\t\ts += options.path;\n\t\t}\n\t\tif (options.hostpath) {\n\t\t\t\ts += options.hostpath;\n\t\t}\n\t\tif (options.query) {\n\t\t\t\ts += `?${options.query}`;\n\t\t}\n\t\tif (options.fragment) {\n\t\t\t\ts += `#${options.fragment}`;\n\t\t}\n\t\treturn s;\n}\nconst re = /^(([^:/?#]+):)?(\\/\\/([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?/;\nclass URI {\n\t\tconstructor(uri){\n\t\t\t\tconst result = uri.match(re);\n\t\t\t\tthis.scheme = result[2];\n\t\t\t\tthis.authority = result[4];\n\t\t\t\tthis.path = result[5];\n\t\t\t\tthis.query = result[7];\n\t\t\t\tthis.fragment = result[9];\n\t\t}\n\t\ttoString() {\n\t\t\t\tlet s = '';\n\t\t\t\tif (this.scheme) {\n\t\t\t\t\t\ts += `${this.scheme}:`;\n\t\t\t\t}\n\t\t\t\tif (this.authority) {\n\t\t\t\t\t\ts += `//${this.authority}`;\n\t\t\t\t}\n\t\t\t\ts += this.path;\n\t\t\t\tif (this.query) {\n\t\t\t\t\t\ts += `?${this.query}`;\n\t\t\t\t}\n\t\t\t\tif (this.fragment) {\n\t\t\t\t\t\ts += `#${this.fragment}`;\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t}\n\t\tgetQuery() {\n\t\t\t\tconst result = {};\n\t\t\t\tif (this.query) {\n\t\t\t\t\t\tconst queryParams = decodeURIComponent(this.query).split('&');\n\t\t\t\t\t\tfor (const queryParam of queryParams){\n\t\t\t\t\t\t\t\tconst pair = queryParam.split('=');\n\t\t\t\t\t\t\t\tresult[pair[0]] = pair[1];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tsetQuery(params) {\n\t\t\t\tlet q = '';\n\t\t\t\tfor(const key in params){\n\t\t\t\t\t\tif (params.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tif (q !== '') {\n\t\t\t\t\t\t\t\t\t\tq += '&';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tq += `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.query = q;\n\t\t}\n}\n\nclass Tracing {\n\t\tstatic{\n\t\t\t\tthis._traceChannels = new Set();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.stack = false;\n\t\t}\n\t\tstatic set(channel, enabled = true) {}\n\t\tstatic get(channel) {\n\t\t\t\treturn Tracing._traceChannels.has(channel);\n\t\t}\n}\n\nconst CURVE_LINEAR = 0;\nconst CURVE_SMOOTHSTEP = 1;\nconst CURVE_SPLINE = 4;\nconst CURVE_STEP = 5;\n\nconst math = {\n\t\tDEG_TO_RAD: Math.PI / 180,\n\t\tRAD_TO_DEG: 180 / Math.PI,\n\t\tclamp (value, min, max) {\n\t\t\t\tif (value >= max) return max;\n\t\t\t\tif (value <= min) return min;\n\t\t\t\treturn value;\n\t\t},\n\t\tintToBytes24 (i) {\n\t\t\t\tconst r = i >> 16 & 0xff;\n\t\t\t\tconst g = i >> 8 & 0xff;\n\t\t\t\tconst b = i & 0xff;\n\t\t\t\treturn [\n\t\t\t\t\t\tr,\n\t\t\t\t\t\tg,\n\t\t\t\t\t\tb\n\t\t\t\t];\n\t\t},\n\t\tintToBytes32 (i) {\n\t\t\t\tconst r = i >> 24 & 0xff;\n\t\t\t\tconst g = i >> 16 & 0xff;\n\t\t\t\tconst b = i >> 8 & 0xff;\n\t\t\t\tconst a = i & 0xff;\n\t\t\t\treturn [\n\t\t\t\t\t\tr,\n\t\t\t\t\t\tg,\n\t\t\t\t\t\tb,\n\t\t\t\t\t\ta\n\t\t\t\t];\n\t\t},\n\t\tbytesToInt24 (r, g, b) {\n\t\t\t\tif (r.length) {\n\t\t\t\t\t\tb = r[2];\n\t\t\t\t\t\tg = r[1];\n\t\t\t\t\t\tr = r[0];\n\t\t\t\t}\n\t\t\t\treturn r << 16 | g << 8 | b;\n\t\t},\n\t\tbytesToInt32 (r, g, b, a) {\n\t\t\t\tif (r.length) {\n\t\t\t\t\t\ta = r[3];\n\t\t\t\t\t\tb = r[2];\n\t\t\t\t\t\tg = r[1];\n\t\t\t\t\t\tr = r[0];\n\t\t\t\t}\n\t\t\t\treturn (r << 24 | g << 16 | b << 8 | a) >>> 0;\n\t\t},\n\t\tlerp (a, b, alpha) {\n\t\t\t\treturn a + (b - a) * math.clamp(alpha, 0, 1);\n\t\t},\n\t\tlerpAngle (a, b, alpha) {\n\t\t\t\tif (b - a > 180) {\n\t\t\t\t\t\tb -= 360;\n\t\t\t\t}\n\t\t\t\tif (b - a < -180) {\n\t\t\t\t\t\tb += 360;\n\t\t\t\t}\n\t\t\t\treturn math.lerp(a, b, math.clamp(alpha, 0, 1));\n\t\t},\n\t\tpowerOfTwo (x) {\n\t\t\t\treturn x !== 0 && !(x & x - 1);\n\t\t},\n\t\tnextPowerOfTwo (val) {\n\t\t\t\tval--;\n\t\t\t\tval |= val >> 1;\n\t\t\t\tval |= val >> 2;\n\t\t\t\tval |= val >> 4;\n\t\t\t\tval |= val >> 8;\n\t\t\t\tval |= val >> 16;\n\t\t\t\tval++;\n\t\t\t\treturn val;\n\t\t},\n\t\tnearestPowerOfTwo (val) {\n\t\t\t\treturn Math.pow(2, Math.round(Math.log2(val)));\n\t\t},\n\t\trandom (min, max) {\n\t\t\t\tconst diff = max - min;\n\t\t\t\treturn Math.random() * diff + min;\n\t\t},\n\t\tsmoothstep (min, max, x) {\n\t\t\t\tif (x <= min) return 0;\n\t\t\t\tif (x >= max) return 1;\n\t\t\t\tx = (x - min) / (max - min);\n\t\t\t\treturn x * x * (3 - 2 * x);\n\t\t},\n\t\tsmootherstep (min, max, x) {\n\t\t\t\tif (x <= min) return 0;\n\t\t\t\tif (x >= max) return 1;\n\t\t\t\tx = (x - min) / (max - min);\n\t\t\t\treturn x * x * x * (x * (x * 6 - 15) + 10);\n\t\t},\n\t\troundUp (numToRound, multiple) {\n\t\t\t\tif (multiple === 0) {\n\t\t\t\t\t\treturn numToRound;\n\t\t\t\t}\n\t\t\t\treturn Math.ceil(numToRound / multiple) * multiple;\n\t\t},\n\t\tbetween (num, a, b, inclusive) {\n\t\t\t\tconst min = Math.min(a, b);\n\t\t\t\tconst max = Math.max(a, b);\n\t\t\t\treturn inclusive ? num >= min && num <= max : num > min && num < max;\n\t\t}\n};\n\nclass Color {\n\t\tconstructor(r = 0, g = 0, b = 0, a = 1){\n\t\t\t\tconst length = r.length;\n\t\t\t\tif (length === 3 || length === 4) {\n\t\t\t\t\t\tthis.r = r[0];\n\t\t\t\t\t\tthis.g = r[1];\n\t\t\t\t\t\tthis.b = r[2];\n\t\t\t\t\t\tthis.a = r[3] ?? 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.r = r;\n\t\t\t\t\t\tthis.g = g;\n\t\t\t\t\t\tthis.b = b;\n\t\t\t\t\t\tthis.a = a;\n\t\t\t\t}\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.r, this.g, this.b, this.a);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.r = rhs.r;\n\t\t\t\tthis.g = rhs.g;\n\t\t\t\tthis.b = rhs.b;\n\t\t\t\tthis.a = rhs.a;\n\t\t\t\treturn this;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.r === rhs.r && this.g === rhs.g && this.b === rhs.b && this.a === rhs.a;\n\t\t}\n\t\tset(r, g, b, a = 1) {\n\t\t\t\tthis.r = r;\n\t\t\t\tthis.g = g;\n\t\t\t\tthis.b = b;\n\t\t\t\tthis.a = a;\n\t\t\t\treturn this;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.r = lhs.r + alpha * (rhs.r - lhs.r);\n\t\t\t\tthis.g = lhs.g + alpha * (rhs.g - lhs.g);\n\t\t\t\tthis.b = lhs.b + alpha * (rhs.b - lhs.b);\n\t\t\t\tthis.a = lhs.a + alpha * (rhs.a - lhs.a);\n\t\t\t\treturn this;\n\t\t}\n\t\tlinear(src = this) {\n\t\t\t\tthis.r = Math.pow(src.r, 2.2);\n\t\t\t\tthis.g = Math.pow(src.g, 2.2);\n\t\t\t\tthis.b = Math.pow(src.b, 2.2);\n\t\t\t\tthis.a = src.a;\n\t\t\t\treturn this;\n\t\t}\n\t\tgamma(src = this) {\n\t\t\t\tthis.r = Math.pow(src.r, 1 / 2.2);\n\t\t\t\tthis.g = Math.pow(src.g, 1 / 2.2);\n\t\t\t\tthis.b = Math.pow(src.b, 1 / 2.2);\n\t\t\t\tthis.a = src.a;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.r *= scalar;\n\t\t\t\tthis.g *= scalar;\n\t\t\t\tthis.b *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromString(hex) {\n\t\t\t\tconst i = parseInt(hex.replace('#', '0x'), 16);\n\t\t\t\tlet bytes;\n\t\t\t\tif (hex.length > 7) {\n\t\t\t\t\t\tbytes = math.intToBytes32(i);\n\t\t\t\t} else {\n\t\t\t\t\t\tbytes = math.intToBytes24(i);\n\t\t\t\t\t\tbytes[3] = 255;\n\t\t\t\t}\n\t\t\t\tthis.set(bytes[0] / 255, bytes[1] / 255, bytes[2] / 255, bytes[3] / 255);\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.r = arr[offset] ?? this.r;\n\t\t\t\tthis.g = arr[offset + 1] ?? this.g;\n\t\t\t\tthis.b = arr[offset + 2] ?? this.b;\n\t\t\t\tthis.a = arr[offset + 3] ?? this.a;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString(alpha, asArray) {\n\t\t\t\tconst { r, g, b, a } = this;\n\t\t\t\tif (asArray || r > 1 || g > 1 || b > 1) {\n\t\t\t\t\t\treturn `${r.toFixed(3)}, ${g.toFixed(3)}, ${b.toFixed(3)}, ${a.toFixed(3)}`;\n\t\t\t\t}\n\t\t\t\tlet s = `#${((1 << 24) + (Math.round(r * 255) << 16) + (Math.round(g * 255) << 8) + Math.round(b * 255)).toString(16).slice(1)}`;\n\t\t\t\tif (alpha === true) {\n\t\t\t\t\t\tconst aa = Math.round(a * 255).toString(16);\n\t\t\t\t\t\tif (this.a < 16 / 255) {\n\t\t\t\t\t\t\t\ts += `0${aa}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ts += aa;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn s;\n\t\t}\n\t\ttoArray(arr = [], offset = 0, alpha = true) {\n\t\t\t\tarr[offset] = this.r;\n\t\t\t\tarr[offset + 1] = this.g;\n\t\t\t\tarr[offset + 2] = this.b;\n\t\t\t\tif (alpha) {\n\t\t\t\t\t\tarr[offset + 3] = this.a;\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.BLACK = Object.freeze(new Color(0, 0, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.BLUE = Object.freeze(new Color(0, 0, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.CYAN = Object.freeze(new Color(0, 1, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.GRAY = Object.freeze(new Color(0.5, 0.5, 0.5, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.GREEN = Object.freeze(new Color(0, 1, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.MAGENTA = Object.freeze(new Color(1, 0, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RED = Object.freeze(new Color(1, 0, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.WHITE = Object.freeze(new Color(1, 1, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.YELLOW = Object.freeze(new Color(1, 1, 0, 1));\n\t\t}\n}\n\nclass CurveEvaluator {\n\t\tconstructor(curve, time = 0){\n\t\t\t\tthis._left = -Infinity;\n\t\t\t\tthis._right = Infinity;\n\t\t\t\tthis._recip = 0;\n\t\t\t\tthis._p0 = 0;\n\t\t\t\tthis._p1 = 0;\n\t\t\t\tthis._m0 = 0;\n\t\t\t\tthis._m1 = 0;\n\t\t\t\tthis._curve = curve;\n\t\t\t\tthis._reset(time);\n\t\t}\n\t\tevaluate(time, forceReset = false) {\n\t\t\t\tif (forceReset || time < this._left || time >= this._right) {\n\t\t\t\t\t\tthis._reset(time);\n\t\t\t\t}\n\t\t\t\tlet result;\n\t\t\t\tconst type = this._curve.type;\n\t\t\t\tif (type === CURVE_STEP) {\n\t\t\t\t\t\tresult = this._p0;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst t = this._recip === 0 ? 0 : (time - this._left) * this._recip;\n\t\t\t\t\t\tif (type === CURVE_LINEAR) {\n\t\t\t\t\t\t\t\tresult = math.lerp(this._p0, this._p1, t);\n\t\t\t\t\t\t} else if (type === CURVE_SMOOTHSTEP) {\n\t\t\t\t\t\t\t\tresult = math.lerp(this._p0, this._p1, t * t * (3 - 2 * t));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult = this._evaluateHermite(this._p0, this._p1, this._m0, this._m1, t);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_reset(time) {\n\t\t\t\tconst keys = this._curve.keys;\n\t\t\t\tconst len = keys.length;\n\t\t\t\tif (!len) {\n\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\tthis._p0 = this._p1 = this._m0 = this._m1 = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (time < keys[0][0]) {\n\t\t\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\t\t\tthis._right = keys[0][0];\n\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\tthis._p0 = this._p1 = keys[0][1];\n\t\t\t\t\t\t\t\tthis._m0 = this._m1 = 0;\n\t\t\t\t\t\t} else if (time >= keys[len - 1][0]) {\n\t\t\t\t\t\t\t\tthis._left = keys[len - 1][0];\n\t\t\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\tthis._p0 = this._p1 = keys[len - 1][1];\n\t\t\t\t\t\t\t\tthis._m0 = this._m1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet index = 0;\n\t\t\t\t\t\t\t\twhile(time >= keys[index + 1][0]){\n\t\t\t\t\t\t\t\t\t\tindex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._left = keys[index][0];\n\t\t\t\t\t\t\t\tthis._right = keys[index + 1][0];\n\t\t\t\t\t\t\t\tconst diff = 1.0 / (this._right - this._left);\n\t\t\t\t\t\t\t\tthis._recip = isFinite(diff) ? diff : 0;\n\t\t\t\t\t\t\t\tthis._p0 = keys[index][1];\n\t\t\t\t\t\t\t\tthis._p1 = keys[index + 1][1];\n\t\t\t\t\t\t\t\tif (this._curve.type === CURVE_SPLINE) {\n\t\t\t\t\t\t\t\t\t\tthis._calcTangents(keys, index);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_calcTangents(keys, index) {\n\t\t\t\tlet a;\n\t\t\t\tconst b = keys[index];\n\t\t\t\tconst c = keys[index + 1];\n\t\t\t\tlet d;\n\t\t\t\tif (index === 0) {\n\t\t\t\t\t\ta = [\n\t\t\t\t\t\t\t\tkeys[0][0] + (keys[0][0] - keys[1][0]),\n\t\t\t\t\t\t\t\tkeys[0][1] + (keys[0][1] - keys[1][1])\n\t\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\t\ta = keys[index - 1];\n\t\t\t\t}\n\t\t\t\tif (index === keys.length - 2) {\n\t\t\t\t\t\td = [\n\t\t\t\t\t\t\t\tkeys[index + 1][0] + (keys[index + 1][0] - keys[index][0]),\n\t\t\t\t\t\t\t\tkeys[index + 1][1] + (keys[index + 1][1] - keys[index][1])\n\t\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\t\td = keys[index + 2];\n\t\t\t\t}\n\t\t\t\tif (this._curve.type === CURVE_SPLINE) {\n\t\t\t\t\t\tconst s1_ = 2 * (c[0] - b[0]) / (c[0] - a[0]);\n\t\t\t\t\t\tconst s2_ = 2 * (c[0] - b[0]) / (d[0] - b[0]);\n\t\t\t\t\t\tthis._m0 = this._curve.tension * (isFinite(s1_) ? s1_ : 0) * (c[1] - a[1]);\n\t\t\t\t\t\tthis._m1 = this._curve.tension * (isFinite(s2_) ? s2_ : 0) * (d[1] - b[1]);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst s1 = (c[0] - b[0]) / (b[0] - a[0]);\n\t\t\t\t\t\tconst s2 = (c[0] - b[0]) / (d[0] - c[0]);\n\t\t\t\t\t\tconst a_ = b[1] + (a[1] - b[1]) * (isFinite(s1) ? s1 : 0);\n\t\t\t\t\t\tconst d_ = c[1] + (d[1] - c[1]) * (isFinite(s2) ? s2 : 0);\n\t\t\t\t\t\tconst tension = this._curve.tension;\n\t\t\t\t\t\tthis._m0 = tension * (c[1] - a_);\n\t\t\t\t\t\tthis._m1 = tension * (d_ - b[1]);\n\t\t\t\t}\n\t\t}\n\t\t_evaluateHermite(p0, p1, m0, m1, t) {\n\t\t\t\tconst t2 = t * t;\n\t\t\t\tconst twot = t + t;\n\t\t\t\tconst omt = 1 - t;\n\t\t\t\tconst omt2 = omt * omt;\n\t\t\t\treturn p0 * ((1 + twot) * omt2) + m0 * (t * omt2) + p1 * (t2 * (3 - twot)) + m1 * (t2 * (t - 1));\n\t\t}\n}\n\nclass Curve {\n\t\tconstructor(data){\n\t\t\t\tthis.keys = [];\n\t\t\t\tthis.type = CURVE_SMOOTHSTEP;\n\t\t\t\tthis.tension = 0.5;\n\t\t\t\tthis._eval = new CurveEvaluator(this);\n\t\t\t\tif (data) {\n\t\t\t\t\t\tfor(let i = 0; i < data.length - 1; i += 2){\n\t\t\t\t\t\t\t\tthis.keys.push([\n\t\t\t\t\t\t\t\t\t\tdata[i],\n\t\t\t\t\t\t\t\t\t\tdata[i + 1]\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.sort();\n\t\t}\n\t\tget length() {\n\t\t\t\treturn this.keys.length;\n\t\t}\n\t\tadd(time, value) {\n\t\t\t\tconst keys = this.keys;\n\t\t\t\tconst len = keys.length;\n\t\t\t\tlet i = 0;\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\t\tif (keys[i][0] > time) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst key = [\n\t\t\t\t\t\ttime,\n\t\t\t\t\t\tvalue\n\t\t\t\t];\n\t\t\t\tthis.keys.splice(i, 0, key);\n\t\t\t\treturn key;\n\t\t}\n\t\tget(index) {\n\t\t\t\treturn this.keys[index];\n\t\t}\n\t\tsort() {\n\t\t\t\tthis.keys.sort((a, b)=>a[0] - b[0]);\n\t\t}\n\t\tvalue(time) {\n\t\t\t\treturn this._eval.evaluate(time, true);\n\t\t}\n\t\tclosest(time) {\n\t\t\t\tconst keys = this.keys;\n\t\t\t\tconst length = keys.length;\n\t\t\t\tlet min = 2;\n\t\t\t\tlet result = null;\n\t\t\t\tfor(let i = 0; i < length; i++){\n\t\t\t\t\t\tconst diff = Math.abs(time - keys[i][0]);\n\t\t\t\t\t\tif (min >= diff) {\n\t\t\t\t\t\t\t\tmin = diff;\n\t\t\t\t\t\t\t\tresult = keys[i];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst result = new this.constructor();\n\t\t\t\tresult.keys = this.keys.map((key)=>[\n\t\t\t\t\t\t\t\t...key\n\t\t\t\t\t\t]);\n\t\t\t\tresult.type = this.type;\n\t\t\t\tresult.tension = this.tension;\n\t\t\t\treturn result;\n\t\t}\n\t\tquantize(precision) {\n\t\t\t\tprecision = Math.max(precision, 2);\n\t\t\t\tconst values = new Float32Array(precision);\n\t\t\t\tconst step = 1.0 / (precision - 1);\n\t\t\t\tvalues[0] = this._eval.evaluate(0, true);\n\t\t\t\tfor(let i = 1; i < precision; i++){\n\t\t\t\t\t\tvalues[i] = this._eval.evaluate(step * i);\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t}\n\t\tquantizeClamped(precision, min, max) {\n\t\t\t\tconst result = this.quantize(precision);\n\t\t\t\tfor(let i = 0; i < result.length; ++i){\n\t\t\t\t\t\tresult[i] = Math.min(max, Math.max(min, result[i]));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass CurveSet {\n\t\tconstructor(...args){\n\t\t\t\tthis.curves = [];\n\t\t\t\tthis._type = CURVE_SMOOTHSTEP;\n\t\t\t\tif (args.length > 1) {\n\t\t\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\t\t\tthis.curves.push(new Curve(args[i]));\n\t\t\t\t\t\t}\n\t\t\t\t} else if (args.length === 0) {\n\t\t\t\t\t\tthis.curves.push(new Curve());\n\t\t\t\t} else {\n\t\t\t\t\t\tconst arg = args[0];\n\t\t\t\t\t\tif (typeof arg === 'number') {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < arg; i++){\n\t\t\t\t\t\t\t\t\t\tthis.curves.push(new Curve());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < arg.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.curves.push(new Curve(arg[i]));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget length() {\n\t\t\t\treturn this.curves.length;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tthis._type = value;\n\t\t\t\tfor(let i = 0; i < this.curves.length; i++){\n\t\t\t\t\t\tthis.curves[i].type = value;\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tget(index) {\n\t\t\t\treturn this.curves[index];\n\t\t}\n\t\tvalue(time, result = []) {\n\t\t\t\tconst length = this.curves.length;\n\t\t\t\tresult.length = length;\n\t\t\t\tfor(let i = 0; i < length; i++){\n\t\t\t\t\t\tresult[i] = this.curves[i].value(time);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst result = new this.constructor();\n\t\t\t\tresult.curves = [];\n\t\t\t\tfor(let i = 0; i < this.curves.length; i++){\n\t\t\t\t\t\tresult.curves.push(this.curves[i].clone());\n\t\t\t\t}\n\t\t\t\tresult._type = this._type;\n\t\t\t\treturn result;\n\t\t}\n\t\tquantize(precision) {\n\t\t\t\tprecision = Math.max(precision, 2);\n\t\t\t\tconst numCurves = this.curves.length;\n\t\t\t\tconst values = new Float32Array(precision * numCurves);\n\t\t\t\tconst step = 1.0 / (precision - 1);\n\t\t\t\tfor(let c = 0; c < numCurves; c++){\n\t\t\t\t\t\tconst ev = new CurveEvaluator(this.curves[c]);\n\t\t\t\t\t\tfor(let i = 0; i < precision; i++){\n\t\t\t\t\t\t\t\tvalues[i * numCurves + c] = ev.evaluate(step * i);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t}\n\t\tquantizeClamped(precision, min, max) {\n\t\t\t\tconst result = this.quantize(precision);\n\t\t\t\tfor(let i = 0; i < result.length; ++i){\n\t\t\t\t\t\tresult[i] = Math.min(max, Math.max(min, result[i]));\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nconst floatView = new Float32Array(1);\nconst int32View = new Int32Array(floatView.buffer);\nclass FloatPacking {\n\t\tstatic float2Half(value) {\n\t\t\t\tfloatView[0] = value;\n\t\t\t\tconst x = int32View[0];\n\t\t\t\tlet bits = x >> 16 & 0x8000;\n\t\t\t\tlet m = x >> 12 & 0x07ff;\n\t\t\t\tconst e = x >> 23 & 0xff;\n\t\t\t\tif (e < 103) {\n\t\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t\tif (e > 142) {\n\t\t\t\t\t\tbits |= 0x7c00;\n\t\t\t\t\t\tbits |= (e === 255 ? 0 : 1) && x & 0x007fffff;\n\t\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t\tif (e < 113) {\n\t\t\t\t\t\tm |= 0x0800;\n\t\t\t\t\t\tbits |= (m >> 114 - e) + (m >> 113 - e & 1);\n\t\t\t\t\t\treturn bits;\n\t\t\t\t}\n\t\t\t\tbits |= e - 112 << 10 | m >> 1;\n\t\t\t\tbits += m & 1;\n\t\t\t\treturn bits;\n\t\t}\n\t\tstatic float2RGBA8(value, data) {\n\t\t\t\tfloatView[0] = value;\n\t\t\t\tconst intBits = int32View[0];\n\t\t\t\tdata.r = (intBits >> 24 & 0xFF) / 255.0;\n\t\t\t\tdata.g = (intBits >> 16 & 0xFF) / 255.0;\n\t\t\t\tdata.b = (intBits >> 8 & 0xFF) / 255.0;\n\t\t\t\tdata.a = (intBits & 0xFF) / 255.0;\n\t\t}\n}\n\nclass Kernel {\n\t\tstatic concentric(numRings, numPoints) {\n\t\t\t\tconst kernel = [];\n\t\t\t\tkernel.push(0, 0);\n\t\t\t\tconst spacing = 2 * Math.PI / numRings / numPoints;\n\t\t\t\tfor(let ring = 1; ring <= numRings; ring++){\n\t\t\t\t\t\tconst radius = ring / numRings;\n\t\t\t\t\t\tconst circumference = 2 * Math.PI * radius;\n\t\t\t\t\t\tconst pointsPerRing = Math.max(1, Math.floor(circumference / spacing));\n\t\t\t\t\t\tconst angleStep = 2 * Math.PI / pointsPerRing;\n\t\t\t\t\t\tfor(let point = 0; point < pointsPerRing; point++){\n\t\t\t\t\t\t\t\tconst angle = point * angleStep;\n\t\t\t\t\t\t\t\tconst x = radius * Math.cos(angle);\n\t\t\t\t\t\t\t\tconst y = radius * Math.sin(angle);\n\t\t\t\t\t\t\t\tkernel.push(x, y);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn kernel;\n\t\t}\n}\n\nclass Vec3 {\n\t\tconstructor(x = 0, y = 0, z = 0){\n\t\t\t\tif (x.length === 3) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t\t\tthis.z = x[2];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t\t\tthis.z = z;\n\t\t\t\t}\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\tthis.x += rhs.x;\n\t\t\t\tthis.y += rhs.y;\n\t\t\t\tthis.z += rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x + rhs.x;\n\t\t\t\tthis.y = lhs.y + rhs.y;\n\t\t\t\tthis.z = lhs.z + rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScalar(scalar) {\n\t\t\t\tthis.x += scalar;\n\t\t\t\tthis.y += scalar;\n\t\t\t\tthis.z += scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScaled(rhs, scalar) {\n\t\t\t\tthis.x += rhs.x * scalar;\n\t\t\t\tthis.y += rhs.y * scalar;\n\t\t\t\tthis.z += rhs.z * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y, this.z);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\tthis.z = rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tcross(lhs, rhs) {\n\t\t\t\tconst lx = lhs.x;\n\t\t\t\tconst ly = lhs.y;\n\t\t\t\tconst lz = lhs.z;\n\t\t\t\tconst rx = rhs.x;\n\t\t\t\tconst ry = rhs.y;\n\t\t\t\tconst rz = rhs.z;\n\t\t\t\tthis.x = ly * rz - ry * lz;\n\t\t\t\tthis.y = lz * rx - rz * lx;\n\t\t\t\tthis.z = lx * ry - rx * ly;\n\t\t\t\treturn this;\n\t\t}\n\t\tdistance(rhs) {\n\t\t\t\tconst x = this.x - rhs.x;\n\t\t\t\tconst y = this.y - rhs.y;\n\t\t\t\tconst z = this.z - rhs.z;\n\t\t\t\treturn Math.sqrt(x * x + y * y + z * z);\n\t\t}\n\t\tdiv(rhs) {\n\t\t\t\tthis.x /= rhs.x;\n\t\t\t\tthis.y /= rhs.y;\n\t\t\t\tthis.z /= rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x / rhs.x;\n\t\t\t\tthis.y = lhs.y / rhs.y;\n\t\t\t\tthis.z = lhs.z / rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tdivScalar(scalar) {\n\t\t\t\tthis.x /= scalar;\n\t\t\t\tthis.y /= scalar;\n\t\t\t\tthis.z /= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(rhs) {\n\t\t\t\treturn this.x * rhs.x + this.y * rhs.y + this.z * rhs.z;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon;\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\t\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\t\t\tthis.z = lhs.z + alpha * (rhs.z - lhs.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tthis.x *= rhs.x;\n\t\t\t\tthis.y *= rhs.y;\n\t\t\t\tthis.z *= rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x * rhs.x;\n\t\t\t\tthis.y = lhs.y * rhs.y;\n\t\t\t\tthis.z = lhs.z * rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\tthis.z *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tconst lengthSq = src.x * src.x + src.y * src.y + src.z * src.z;\n\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\tthis.x = src.x * invLength;\n\t\t\t\t\t\tthis.y = src.y * invLength;\n\t\t\t\t\t\tthis.z = src.z * invLength;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tfloor(src = this) {\n\t\t\t\tthis.x = Math.floor(src.x);\n\t\t\t\tthis.y = Math.floor(src.y);\n\t\t\t\tthis.z = Math.floor(src.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tceil(src = this) {\n\t\t\t\tthis.x = Math.ceil(src.x);\n\t\t\t\tthis.y = Math.ceil(src.y);\n\t\t\t\tthis.z = Math.ceil(src.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tround(src = this) {\n\t\t\t\tthis.x = Math.round(src.x);\n\t\t\t\tthis.y = Math.round(src.y);\n\t\t\t\tthis.z = Math.round(src.z);\n\t\t\t\treturn this;\n\t\t}\n\t\tmin(rhs) {\n\t\t\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z < this.z) this.z = rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmax(rhs) {\n\t\t\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z > this.z) this.z = rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tproject(rhs) {\n\t\t\t\tconst a_dot_b = this.x * rhs.x + this.y * rhs.y + this.z * rhs.z;\n\t\t\t\tconst b_dot_b = rhs.x * rhs.x + rhs.y * rhs.y + rhs.z * rhs.z;\n\t\t\t\tconst s = a_dot_b / b_dot_b;\n\t\t\t\tthis.x = rhs.x * s;\n\t\t\t\tthis.y = rhs.y * s;\n\t\t\t\tthis.z = rhs.z * s;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y, z) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.z = z;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub(rhs) {\n\t\t\t\tthis.x -= rhs.x;\n\t\t\t\tthis.y -= rhs.y;\n\t\t\t\tthis.z -= rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x - rhs.x;\n\t\t\t\tthis.y = lhs.y - rhs.y;\n\t\t\t\tthis.z = lhs.z - rhs.z;\n\t\t\t\treturn this;\n\t\t}\n\t\tsubScalar(scalar) {\n\t\t\t\tthis.x -= scalar;\n\t\t\t\tthis.y -= scalar;\n\t\t\t\tthis.z -= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\tthis.z = arr[offset + 2] ?? this.z;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}, ${this.z}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\tarr[offset + 2] = this.z;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Vec3(0, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.HALF = Object.freeze(new Vec3(0.5, 0.5, 0.5));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ONE = Object.freeze(new Vec3(1, 1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.UP = Object.freeze(new Vec3(0, 1, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DOWN = Object.freeze(new Vec3(0, -1, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RIGHT = Object.freeze(new Vec3(1, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.LEFT = Object.freeze(new Vec3(-1, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.FORWARD = Object.freeze(new Vec3(0, 0, -1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.BACK = Object.freeze(new Vec3(0, 0, 1));\n\t\t}\n}\n\nclass Mat3 {\n\t\tconstructor(){\n\t\t\t\tthis.data = new Float32Array(9);\n\t\t\t\tthis.data[0] = this.data[4] = this.data[8] = 1;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tconst src = rhs.data;\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\treturn this;\n\t\t}\n\t\tset(src) {\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\treturn this;\n\t\t}\n\t\tgetX(x = new Vec3()) {\n\t\t\t\treturn x.set(this.data[0], this.data[1], this.data[2]);\n\t\t}\n\t\tgetY(y = new Vec3()) {\n\t\t\t\treturn y.set(this.data[3], this.data[4], this.data[5]);\n\t\t}\n\t\tgetZ(z = new Vec3()) {\n\t\t\t\treturn z.set(this.data[6], this.data[7], this.data[8]);\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\tconst l = this.data;\n\t\t\t\tconst r = rhs.data;\n\t\t\t\treturn l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8];\n\t\t}\n\t\tisIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\treturn m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 1 && m[5] === 0 && m[6] === 0 && m[7] === 0 && m[8] === 1;\n\t\t}\n\t\tsetIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 1;\n\t\t\t\tm[5] = 0;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.data.join(', ')}]`;\n\t\t}\n\t\ttranspose(src = this) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst t = this.data;\n\t\t\t\tif (s === t) {\n\t\t\t\t\t\tlet tmp;\n\t\t\t\t\t\ttmp = s[1];\n\t\t\t\t\t\tt[1] = s[3];\n\t\t\t\t\t\tt[3] = tmp;\n\t\t\t\t\t\ttmp = s[2];\n\t\t\t\t\t\tt[2] = s[6];\n\t\t\t\t\t\tt[6] = tmp;\n\t\t\t\t\t\ttmp = s[5];\n\t\t\t\t\t\tt[5] = s[7];\n\t\t\t\t\t\tt[7] = tmp;\n\t\t\t\t} else {\n\t\t\t\t\t\tt[0] = s[0];\n\t\t\t\t\t\tt[1] = s[3];\n\t\t\t\t\t\tt[2] = s[6];\n\t\t\t\t\t\tt[3] = s[1];\n\t\t\t\t\t\tt[4] = s[4];\n\t\t\t\t\t\tt[5] = s[7];\n\t\t\t\t\t\tt[6] = s[2];\n\t\t\t\t\t\tt[7] = s[5];\n\t\t\t\t\t\tt[8] = s[8];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromMat4(m) {\n\t\t\t\tconst src = m.data;\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[4];\n\t\t\t\tdst[4] = src[5];\n\t\t\t\tdst[5] = src[6];\n\t\t\t\tdst[6] = src[8];\n\t\t\t\tdst[7] = src[9];\n\t\t\t\tdst[8] = src[10];\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromQuat(r) {\n\t\t\t\tconst qx = r.x;\n\t\t\t\tconst qy = r.y;\n\t\t\t\tconst qz = r.z;\n\t\t\t\tconst qw = r.w;\n\t\t\t\tconst x2 = qx + qx;\n\t\t\t\tconst y2 = qy + qy;\n\t\t\t\tconst z2 = qz + qz;\n\t\t\t\tconst xx = qx * x2;\n\t\t\t\tconst xy = qx * y2;\n\t\t\t\tconst xz = qx * z2;\n\t\t\t\tconst yy = qy * y2;\n\t\t\t\tconst yz = qy * z2;\n\t\t\t\tconst zz = qz * z2;\n\t\t\t\tconst wx = qw * x2;\n\t\t\t\tconst wy = qw * y2;\n\t\t\t\tconst wz = qw * z2;\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1 - (yy + zz);\n\t\t\t\tm[1] = xy + wz;\n\t\t\t\tm[2] = xz - wy;\n\t\t\t\tm[3] = xy - wz;\n\t\t\t\tm[4] = 1 - (xx + zz);\n\t\t\t\tm[5] = yz + wx;\n\t\t\t\tm[6] = xz + wy;\n\t\t\t\tm[7] = yz - wx;\n\t\t\t\tm[8] = 1 - (xx + yy);\n\t\t\t\treturn this;\n\t\t}\n\t\tinvertMat4(src) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst a0 = s[0];\n\t\t\t\tconst a1 = s[1];\n\t\t\t\tconst a2 = s[2];\n\t\t\t\tconst a4 = s[4];\n\t\t\t\tconst a5 = s[5];\n\t\t\t\tconst a6 = s[6];\n\t\t\t\tconst a8 = s[8];\n\t\t\t\tconst a9 = s[9];\n\t\t\t\tconst a10 = s[10];\n\t\t\t\tconst b11 = a10 * a5 - a6 * a9;\n\t\t\t\tconst b21 = -a10 * a1 + a2 * a9;\n\t\t\t\tconst b31 = a6 * a1 - a2 * a5;\n\t\t\t\tconst b12 = -a10 * a4 + a6 * a8;\n\t\t\t\tconst b22 = a10 * a0 - a2 * a8;\n\t\t\t\tconst b32 = -a6 * a0 + a2 * a4;\n\t\t\t\tconst b13 = a9 * a4 - a5 * a8;\n\t\t\t\tconst b23 = -a9 * a0 + a1 * a8;\n\t\t\t\tconst b33 = a5 * a0 - a1 * a4;\n\t\t\t\tconst det = a0 * b11 + a1 * b12 + a2 * b13;\n\t\t\t\tif (det === 0) {\n\t\t\t\t\t\tthis.setIdentity();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\tconst t = this.data;\n\t\t\t\t\t\tt[0] = b11 * invDet;\n\t\t\t\t\t\tt[1] = b21 * invDet;\n\t\t\t\t\t\tt[2] = b31 * invDet;\n\t\t\t\t\t\tt[3] = b12 * invDet;\n\t\t\t\t\t\tt[4] = b22 * invDet;\n\t\t\t\t\t\tt[5] = b32 * invDet;\n\t\t\t\t\t\tt[6] = b13 * invDet;\n\t\t\t\t\t\tt[7] = b23 * invDet;\n\t\t\t\t\t\tt[8] = b33 * invDet;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\ttransformVector(vec, res = new Vec3()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[3] + z * m[6];\n\t\t\t\tres.y = x * m[1] + y * m[4] + z * m[7];\n\t\t\t\tres.z = x * m[2] + y * m[5] + z * m[8];\n\t\t\t\treturn res;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY = Object.freeze(new Mat3());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Mat3().set([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t}\n}\n\nclass Vec2 {\n\t\tconstructor(x = 0, y = 0){\n\t\t\t\tif (x.length === 2) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t}\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\tthis.x += rhs.x;\n\t\t\t\tthis.y += rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x + rhs.x;\n\t\t\t\tthis.y = lhs.y + rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScalar(scalar) {\n\t\t\t\tthis.x += scalar;\n\t\t\t\tthis.y += scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScaled(rhs, scalar) {\n\t\t\t\tthis.x += rhs.x * scalar;\n\t\t\t\tthis.y += rhs.y * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tcross(rhs) {\n\t\t\t\treturn this.x * rhs.y - this.y * rhs.x;\n\t\t}\n\t\tdistance(rhs) {\n\t\t\t\tconst x = this.x - rhs.x;\n\t\t\t\tconst y = this.y - rhs.y;\n\t\t\t\treturn Math.sqrt(x * x + y * y);\n\t\t}\n\t\tdiv(rhs) {\n\t\t\t\tthis.x /= rhs.x;\n\t\t\t\tthis.y /= rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x / rhs.x;\n\t\t\t\tthis.y = lhs.y / rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tdivScalar(scalar) {\n\t\t\t\tthis.x /= scalar;\n\t\t\t\tthis.y /= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(rhs) {\n\t\t\t\treturn this.x * rhs.x + this.y * rhs.y;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon;\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\t\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tthis.x *= rhs.x;\n\t\t\t\tthis.y *= rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x * rhs.x;\n\t\t\t\tthis.y = lhs.y * rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tconst lengthSq = src.x * src.x + src.y * src.y;\n\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\tthis.x = src.x * invLength;\n\t\t\t\t\t\tthis.y = src.y * invLength;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\trotate(degrees) {\n\t\t\t\tconst angle = Math.atan2(this.x, this.y) + degrees * math.DEG_TO_RAD;\n\t\t\t\tconst len = Math.sqrt(this.x * this.x + this.y * this.y);\n\t\t\t\tthis.x = Math.sin(angle) * len;\n\t\t\t\tthis.y = Math.cos(angle) * len;\n\t\t\t\treturn this;\n\t\t}\n\t\tangle() {\n\t\t\t\treturn Math.atan2(this.x, this.y) * math.RAD_TO_DEG;\n\t\t}\n\t\tangleTo(rhs) {\n\t\t\t\treturn Math.atan2(this.x * rhs.y + this.y * rhs.x, this.x * rhs.x + this.y * rhs.y) * math.RAD_TO_DEG;\n\t\t}\n\t\tfloor(src = this) {\n\t\t\t\tthis.x = Math.floor(src.x);\n\t\t\t\tthis.y = Math.floor(src.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tceil(src = this) {\n\t\t\t\tthis.x = Math.ceil(src.x);\n\t\t\t\tthis.y = Math.ceil(src.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tround(src = this) {\n\t\t\t\tthis.x = Math.round(src.x);\n\t\t\t\tthis.y = Math.round(src.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tmin(rhs) {\n\t\t\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tmax(rhs) {\n\t\t\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub(rhs) {\n\t\t\t\tthis.x -= rhs.x;\n\t\t\t\tthis.y -= rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x - rhs.x;\n\t\t\t\tthis.y = lhs.y - rhs.y;\n\t\t\t\treturn this;\n\t\t}\n\t\tsubScalar(scalar) {\n\t\t\t\tthis.x -= scalar;\n\t\t\t\tthis.y -= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic angleRad(lhs, rhs) {\n\t\t\t\treturn Math.atan2(lhs.x * rhs.y - lhs.y * rhs.x, lhs.x * rhs.x + lhs.y * rhs.y);\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Vec2(0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.HALF = Object.freeze(new Vec2(0.5, 0.5));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ONE = Object.freeze(new Vec2(1, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.UP = Object.freeze(new Vec2(0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DOWN = Object.freeze(new Vec2(0, -1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RIGHT = Object.freeze(new Vec2(1, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.LEFT = Object.freeze(new Vec2(-1, 0));\n\t\t}\n}\n\nclass Vec4 {\n\t\tconstructor(x = 0, y = 0, z = 0, w = 0){\n\t\t\t\tif (x.length === 4) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t\t\tthis.z = x[2];\n\t\t\t\t\t\tthis.w = x[3];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t\t\tthis.z = z;\n\t\t\t\t\t\tthis.w = w;\n\t\t\t\t}\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\tthis.x += rhs.x;\n\t\t\t\tthis.y += rhs.y;\n\t\t\t\tthis.z += rhs.z;\n\t\t\t\tthis.w += rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x + rhs.x;\n\t\t\t\tthis.y = lhs.y + rhs.y;\n\t\t\t\tthis.z = lhs.z + rhs.z;\n\t\t\t\tthis.w = lhs.w + rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScalar(scalar) {\n\t\t\t\tthis.x += scalar;\n\t\t\t\tthis.y += scalar;\n\t\t\t\tthis.z += scalar;\n\t\t\t\tthis.w += scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\taddScaled(rhs, scalar) {\n\t\t\t\tthis.x += rhs.x * scalar;\n\t\t\t\tthis.y += rhs.y * scalar;\n\t\t\t\tthis.z += rhs.z * scalar;\n\t\t\t\tthis.w += rhs.w * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y, this.z, this.w);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\tthis.z = rhs.z;\n\t\t\t\tthis.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv(rhs) {\n\t\t\t\tthis.x /= rhs.x;\n\t\t\t\tthis.y /= rhs.y;\n\t\t\t\tthis.z /= rhs.z;\n\t\t\t\tthis.w /= rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdiv2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x / rhs.x;\n\t\t\t\tthis.y = lhs.y / rhs.y;\n\t\t\t\tthis.z = lhs.z / rhs.z;\n\t\t\t\tthis.w = lhs.w / rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdivScalar(scalar) {\n\t\t\t\tthis.x /= scalar;\n\t\t\t\tthis.y /= scalar;\n\t\t\t\tthis.z /= scalar;\n\t\t\t\tthis.w /= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(rhs) {\n\t\t\t\treturn this.x * rhs.x + this.y * rhs.y + this.z * rhs.z + this.w * rhs.w;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon && Math.abs(this.w - rhs.w) < epsilon;\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tthis.x = lhs.x + alpha * (rhs.x - lhs.x);\n\t\t\t\tthis.y = lhs.y + alpha * (rhs.y - lhs.y);\n\t\t\t\tthis.z = lhs.z + alpha * (rhs.z - lhs.z);\n\t\t\t\tthis.w = lhs.w + alpha * (rhs.w - lhs.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tthis.x *= rhs.x;\n\t\t\t\tthis.y *= rhs.y;\n\t\t\t\tthis.z *= rhs.z;\n\t\t\t\tthis.w *= rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x * rhs.x;\n\t\t\t\tthis.y = lhs.y * rhs.y;\n\t\t\t\tthis.z = lhs.z * rhs.z;\n\t\t\t\tthis.w = lhs.w * rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar) {\n\t\t\t\tthis.x *= scalar;\n\t\t\t\tthis.y *= scalar;\n\t\t\t\tthis.z *= scalar;\n\t\t\t\tthis.w *= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tconst lengthSq = src.x * src.x + src.y * src.y + src.z * src.z + src.w * src.w;\n\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\tthis.x = src.x * invLength;\n\t\t\t\t\t\tthis.y = src.y * invLength;\n\t\t\t\t\t\tthis.z = src.z * invLength;\n\t\t\t\t\t\tthis.w = src.w * invLength;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tfloor(src = this) {\n\t\t\t\tthis.x = Math.floor(src.x);\n\t\t\t\tthis.y = Math.floor(src.y);\n\t\t\t\tthis.z = Math.floor(src.z);\n\t\t\t\tthis.w = Math.floor(src.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tceil(src = this) {\n\t\t\t\tthis.x = Math.ceil(src.x);\n\t\t\t\tthis.y = Math.ceil(src.y);\n\t\t\t\tthis.z = Math.ceil(src.z);\n\t\t\t\tthis.w = Math.ceil(src.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tround(src = this) {\n\t\t\t\tthis.x = Math.round(src.x);\n\t\t\t\tthis.y = Math.round(src.y);\n\t\t\t\tthis.z = Math.round(src.z);\n\t\t\t\tthis.w = Math.round(src.w);\n\t\t\t\treturn this;\n\t\t}\n\t\tmin(rhs) {\n\t\t\t\tif (rhs.x < this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y < this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z < this.z) this.z = rhs.z;\n\t\t\t\tif (rhs.w < this.w) this.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tmax(rhs) {\n\t\t\t\tif (rhs.x > this.x) this.x = rhs.x;\n\t\t\t\tif (rhs.y > this.y) this.y = rhs.y;\n\t\t\t\tif (rhs.z > this.z) this.z = rhs.z;\n\t\t\t\tif (rhs.w > this.w) this.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y, z, w) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.z = z;\n\t\t\t\tthis.w = w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub(rhs) {\n\t\t\t\tthis.x -= rhs.x;\n\t\t\t\tthis.y -= rhs.y;\n\t\t\t\tthis.z -= rhs.z;\n\t\t\t\tthis.w -= rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsub2(lhs, rhs) {\n\t\t\t\tthis.x = lhs.x - rhs.x;\n\t\t\t\tthis.y = lhs.y - rhs.y;\n\t\t\t\tthis.z = lhs.z - rhs.z;\n\t\t\t\tthis.w = lhs.w - rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsubScalar(scalar) {\n\t\t\t\tthis.x -= scalar;\n\t\t\t\tthis.y -= scalar;\n\t\t\t\tthis.z -= scalar;\n\t\t\t\tthis.w -= scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\tthis.z = arr[offset + 2] ?? this.z;\n\t\t\t\tthis.w = arr[offset + 3] ?? this.w;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\tarr[offset + 2] = this.z;\n\t\t\t\tarr[offset + 3] = this.w;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Vec4(0, 0, 0, 0));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.HALF = Object.freeze(new Vec4(0.5, 0.5, 0.5, 0.5));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ONE = Object.freeze(new Vec4(1, 1, 1, 1));\n\t\t}\n}\n\nconst _halfSize$1 = new Vec2();\nconst x$1 = new Vec3();\nconst y = new Vec3();\nconst z = new Vec3();\nconst scale = new Vec3();\nclass Mat4 {\n\t\tconstructor(){\n\t\t\t\tthis.data = new Float32Array(16);\n\t\t\t\tthis.data[0] = this.data[5] = this.data[10] = this.data[15] = 1;\n\t\t}\n\t\tstatic _getPerspectiveHalfSize(halfSize, fov, aspect, znear, fovIsHorizontal) {\n\t\t\t\tif (fovIsHorizontal) {\n\t\t\t\t\t\thalfSize.x = znear * Math.tan(fov * Math.PI / 360);\n\t\t\t\t\t\thalfSize.y = halfSize.x / aspect;\n\t\t\t\t} else {\n\t\t\t\t\t\thalfSize.y = znear * Math.tan(fov * Math.PI / 360);\n\t\t\t\t\t\thalfSize.x = halfSize.y * aspect;\n\t\t\t\t}\n\t\t}\n\t\tadd2(lhs, rhs) {\n\t\t\t\tconst a = lhs.data, b = rhs.data, r = this.data;\n\t\t\t\tr[0] = a[0] + b[0];\n\t\t\t\tr[1] = a[1] + b[1];\n\t\t\t\tr[2] = a[2] + b[2];\n\t\t\t\tr[3] = a[3] + b[3];\n\t\t\t\tr[4] = a[4] + b[4];\n\t\t\t\tr[5] = a[5] + b[5];\n\t\t\t\tr[6] = a[6] + b[6];\n\t\t\t\tr[7] = a[7] + b[7];\n\t\t\t\tr[8] = a[8] + b[8];\n\t\t\t\tr[9] = a[9] + b[9];\n\t\t\t\tr[10] = a[10] + b[10];\n\t\t\t\tr[11] = a[11] + b[11];\n\t\t\t\tr[12] = a[12] + b[12];\n\t\t\t\tr[13] = a[13] + b[13];\n\t\t\t\tr[14] = a[14] + b[14];\n\t\t\t\tr[15] = a[15] + b[15];\n\t\t\t\treturn this;\n\t\t}\n\t\tadd(rhs) {\n\t\t\t\treturn this.add2(this, rhs);\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tconst src = rhs.data, dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\tdst[9] = src[9];\n\t\t\t\tdst[10] = src[10];\n\t\t\t\tdst[11] = src[11];\n\t\t\t\tdst[12] = src[12];\n\t\t\t\tdst[13] = src[13];\n\t\t\t\tdst[14] = src[14];\n\t\t\t\tdst[15] = src[15];\n\t\t\t\treturn this;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\tconst l = this.data, r = rhs.data;\n\t\t\t\treturn l[0] === r[0] && l[1] === r[1] && l[2] === r[2] && l[3] === r[3] && l[4] === r[4] && l[5] === r[5] && l[6] === r[6] && l[7] === r[7] && l[8] === r[8] && l[9] === r[9] && l[10] === r[10] && l[11] === r[11] && l[12] === r[12] && l[13] === r[13] && l[14] === r[14] && l[15] === r[15];\n\t\t}\n\t\tisIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\treturn m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 0 && m[4] === 0 && m[5] === 1 && m[6] === 0 && m[7] === 0 && m[8] === 0 && m[9] === 0 && m[10] === 1 && m[11] === 0 && m[12] === 0 && m[13] === 0 && m[14] === 0 && m[15] === 1;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tconst a = lhs.data;\n\t\t\t\tconst b = rhs.data;\n\t\t\t\tconst r = this.data;\n\t\t\t\tconst a00 = a[0];\n\t\t\t\tconst a01 = a[1];\n\t\t\t\tconst a02 = a[2];\n\t\t\t\tconst a03 = a[3];\n\t\t\t\tconst a10 = a[4];\n\t\t\t\tconst a11 = a[5];\n\t\t\t\tconst a12 = a[6];\n\t\t\t\tconst a13 = a[7];\n\t\t\t\tconst a20 = a[8];\n\t\t\t\tconst a21 = a[9];\n\t\t\t\tconst a22 = a[10];\n\t\t\t\tconst a23 = a[11];\n\t\t\t\tconst a30 = a[12];\n\t\t\t\tconst a31 = a[13];\n\t\t\t\tconst a32 = a[14];\n\t\t\t\tconst a33 = a[15];\n\t\t\t\tlet b0, b1, b2, b3;\n\t\t\t\tb0 = b[0];\n\t\t\t\tb1 = b[1];\n\t\t\t\tb2 = b[2];\n\t\t\t\tb3 = b[3];\n\t\t\t\tr[0] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[1] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[2] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[3] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\tb0 = b[4];\n\t\t\t\tb1 = b[5];\n\t\t\t\tb2 = b[6];\n\t\t\t\tb3 = b[7];\n\t\t\t\tr[4] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[5] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[6] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[7] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\tb0 = b[8];\n\t\t\t\tb1 = b[9];\n\t\t\t\tb2 = b[10];\n\t\t\t\tb3 = b[11];\n\t\t\t\tr[8] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[9] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[10] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[11] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\tb0 = b[12];\n\t\t\t\tb1 = b[13];\n\t\t\t\tb2 = b[14];\n\t\t\t\tb3 = b[15];\n\t\t\t\tr[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30 * b3;\n\t\t\t\tr[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31 * b3;\n\t\t\t\tr[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32 * b3;\n\t\t\t\tr[15] = a03 * b0 + a13 * b1 + a23 * b2 + a33 * b3;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulAffine2(lhs, rhs) {\n\t\t\t\tconst a = lhs.data;\n\t\t\t\tconst b = rhs.data;\n\t\t\t\tconst r = this.data;\n\t\t\t\tconst a00 = a[0];\n\t\t\t\tconst a01 = a[1];\n\t\t\t\tconst a02 = a[2];\n\t\t\t\tconst a10 = a[4];\n\t\t\t\tconst a11 = a[5];\n\t\t\t\tconst a12 = a[6];\n\t\t\t\tconst a20 = a[8];\n\t\t\t\tconst a21 = a[9];\n\t\t\t\tconst a22 = a[10];\n\t\t\t\tconst a30 = a[12];\n\t\t\t\tconst a31 = a[13];\n\t\t\t\tconst a32 = a[14];\n\t\t\t\tlet b0, b1, b2;\n\t\t\t\tb0 = b[0];\n\t\t\t\tb1 = b[1];\n\t\t\t\tb2 = b[2];\n\t\t\t\tr[0] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\t\t\tr[1] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\t\t\tr[2] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\t\t\tr[3] = 0;\n\t\t\t\tb0 = b[4];\n\t\t\t\tb1 = b[5];\n\t\t\t\tb2 = b[6];\n\t\t\t\tr[4] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\t\t\tr[5] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\t\t\tr[6] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\t\t\tr[7] = 0;\n\t\t\t\tb0 = b[8];\n\t\t\t\tb1 = b[9];\n\t\t\t\tb2 = b[10];\n\t\t\t\tr[8] = a00 * b0 + a10 * b1 + a20 * b2;\n\t\t\t\tr[9] = a01 * b0 + a11 * b1 + a21 * b2;\n\t\t\t\tr[10] = a02 * b0 + a12 * b1 + a22 * b2;\n\t\t\t\tr[11] = 0;\n\t\t\t\tb0 = b[12];\n\t\t\t\tb1 = b[13];\n\t\t\t\tb2 = b[14];\n\t\t\t\tr[12] = a00 * b0 + a10 * b1 + a20 * b2 + a30;\n\t\t\t\tr[13] = a01 * b0 + a11 * b1 + a21 * b2 + a31;\n\t\t\t\tr[14] = a02 * b0 + a12 * b1 + a22 * b2 + a32;\n\t\t\t\tr[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\treturn this.mul2(this, rhs);\n\t\t}\n\t\ttransformPoint(vec, res = new Vec3()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[4] + z * m[8] + m[12];\n\t\t\t\tres.y = x * m[1] + y * m[5] + z * m[9] + m[13];\n\t\t\t\tres.z = x * m[2] + y * m[6] + z * m[10] + m[14];\n\t\t\t\treturn res;\n\t\t}\n\t\ttransformVector(vec, res = new Vec3()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[4] + z * m[8];\n\t\t\t\tres.y = x * m[1] + y * m[5] + z * m[9];\n\t\t\t\tres.z = x * m[2] + y * m[6] + z * m[10];\n\t\t\t\treturn res;\n\t\t}\n\t\ttransformVec4(vec, res = new Vec4()) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst { x, y, z, w } = vec;\n\t\t\t\tres.x = x * m[0] + y * m[4] + z * m[8] + w * m[12];\n\t\t\t\tres.y = x * m[1] + y * m[5] + z * m[9] + w * m[13];\n\t\t\t\tres.z = x * m[2] + y * m[6] + z * m[10] + w * m[14];\n\t\t\t\tres.w = x * m[3] + y * m[7] + z * m[11] + w * m[15];\n\t\t\t\treturn res;\n\t\t}\n\t\tsetLookAt(position, target, up) {\n\t\t\t\tz.sub2(position, target).normalize();\n\t\t\t\ty.copy(up).normalize();\n\t\t\t\tx$1.cross(y, z).normalize();\n\t\t\t\ty.cross(z, x$1);\n\t\t\t\tconst r = this.data;\n\t\t\t\tr[0] = x$1.x;\n\t\t\t\tr[1] = x$1.y;\n\t\t\t\tr[2] = x$1.z;\n\t\t\t\tr[3] = 0;\n\t\t\t\tr[4] = y.x;\n\t\t\t\tr[5] = y.y;\n\t\t\t\tr[6] = y.z;\n\t\t\t\tr[7] = 0;\n\t\t\t\tr[8] = z.x;\n\t\t\t\tr[9] = z.y;\n\t\t\t\tr[10] = z.z;\n\t\t\t\tr[11] = 0;\n\t\t\t\tr[12] = position.x;\n\t\t\t\tr[13] = position.y;\n\t\t\t\tr[14] = position.z;\n\t\t\t\tr[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFrustum(left, right, bottom, top, znear, zfar) {\n\t\t\t\tconst temp1 = 2 * znear;\n\t\t\t\tconst temp2 = right - left;\n\t\t\t\tconst temp3 = top - bottom;\n\t\t\t\tconst temp4 = zfar - znear;\n\t\t\t\tconst r = this.data;\n\t\t\t\tr[0] = temp1 / temp2;\n\t\t\t\tr[1] = 0;\n\t\t\t\tr[2] = 0;\n\t\t\t\tr[3] = 0;\n\t\t\t\tr[4] = 0;\n\t\t\t\tr[5] = temp1 / temp3;\n\t\t\t\tr[6] = 0;\n\t\t\t\tr[7] = 0;\n\t\t\t\tr[8] = (right + left) / temp2;\n\t\t\t\tr[9] = (top + bottom) / temp3;\n\t\t\t\tr[10] = (-zfar - znear) / temp4;\n\t\t\t\tr[11] = -1;\n\t\t\t\tr[12] = 0;\n\t\t\t\tr[13] = 0;\n\t\t\t\tr[14] = -temp1 * zfar / temp4;\n\t\t\t\tr[15] = 0;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetPerspective(fov, aspect, znear, zfar, fovIsHorizontal) {\n\t\t\t\tMat4._getPerspectiveHalfSize(_halfSize$1, fov, aspect, znear, fovIsHorizontal);\n\t\t\t\treturn this.setFrustum(-_halfSize$1.x, _halfSize$1.x, -_halfSize$1.y, _halfSize$1.y, znear, zfar);\n\t\t}\n\t\tsetOrtho(left, right, bottom, top, near, far) {\n\t\t\t\tconst r = this.data;\n\t\t\t\tr[0] = 2 / (right - left);\n\t\t\t\tr[1] = 0;\n\t\t\t\tr[2] = 0;\n\t\t\t\tr[3] = 0;\n\t\t\t\tr[4] = 0;\n\t\t\t\tr[5] = 2 / (top - bottom);\n\t\t\t\tr[6] = 0;\n\t\t\t\tr[7] = 0;\n\t\t\t\tr[8] = 0;\n\t\t\t\tr[9] = 0;\n\t\t\t\tr[10] = -2 / (far - near);\n\t\t\t\tr[11] = 0;\n\t\t\t\tr[12] = -(right + left) / (right - left);\n\t\t\t\tr[13] = -(top + bottom) / (top - bottom);\n\t\t\t\tr[14] = -(far + near) / (far - near);\n\t\t\t\tr[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromAxisAngle(axis, angle) {\n\t\t\t\tangle *= math.DEG_TO_RAD;\n\t\t\t\tconst { x, y, z } = axis;\n\t\t\t\tconst c = Math.cos(angle);\n\t\t\t\tconst s = Math.sin(angle);\n\t\t\t\tconst t = 1 - c;\n\t\t\t\tconst tx = t * x;\n\t\t\t\tconst ty = t * y;\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = tx * x + c;\n\t\t\t\tm[1] = tx * y + s * z;\n\t\t\t\tm[2] = tx * z - s * y;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = tx * y - s * z;\n\t\t\t\tm[5] = ty * y + c;\n\t\t\t\tm[6] = ty * z + s * x;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = tx * z + s * y;\n\t\t\t\tm[9] = ty * z - x * s;\n\t\t\t\tm[10] = t * z * z + c;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetTranslate(x, y, z) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = 1;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = 1;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = x;\n\t\t\t\tm[13] = y;\n\t\t\t\tm[14] = z;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetScale(x, y, z) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = x;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = y;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = z;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetViewport(x, y, width, height) {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = width * 0.5;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = height * 0.5;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = 0.5;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = x + width * 0.5;\n\t\t\t\tm[13] = y + height * 0.5;\n\t\t\t\tm[14] = 0.5;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetReflection(normal, distance) {\n\t\t\t\tconst a = normal.x;\n\t\t\t\tconst b = normal.y;\n\t\t\t\tconst c = normal.z;\n\t\t\t\tconst data = this.data;\n\t\t\t\tdata[0] = 1.0 - 2 * a * a;\n\t\t\t\tdata[1] = -2 * a * b;\n\t\t\t\tdata[2] = -2 * a * c;\n\t\t\t\tdata[3] = 0;\n\t\t\t\tdata[4] = -2 * a * b;\n\t\t\t\tdata[5] = 1.0 - 2 * b * b;\n\t\t\t\tdata[6] = -2 * b * c;\n\t\t\t\tdata[7] = 0;\n\t\t\t\tdata[8] = -2 * a * c;\n\t\t\t\tdata[9] = -2 * b * c;\n\t\t\t\tdata[10] = 1.0 - 2 * c * c;\n\t\t\t\tdata[11] = 0;\n\t\t\t\tdata[12] = -2 * a * distance;\n\t\t\t\tdata[13] = -2 * b * distance;\n\t\t\t\tdata[14] = -2 * c * distance;\n\t\t\t\tdata[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tinvert(src = this) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst a00 = s[0];\n\t\t\t\tconst a01 = s[1];\n\t\t\t\tconst a02 = s[2];\n\t\t\t\tconst a03 = s[3];\n\t\t\t\tconst a10 = s[4];\n\t\t\t\tconst a11 = s[5];\n\t\t\t\tconst a12 = s[6];\n\t\t\t\tconst a13 = s[7];\n\t\t\t\tconst a20 = s[8];\n\t\t\t\tconst a21 = s[9];\n\t\t\t\tconst a22 = s[10];\n\t\t\t\tconst a23 = s[11];\n\t\t\t\tconst a30 = s[12];\n\t\t\t\tconst a31 = s[13];\n\t\t\t\tconst a32 = s[14];\n\t\t\t\tconst a33 = s[15];\n\t\t\t\tconst b00 = a00 * a11 - a01 * a10;\n\t\t\t\tconst b01 = a00 * a12 - a02 * a10;\n\t\t\t\tconst b02 = a00 * a13 - a03 * a10;\n\t\t\t\tconst b03 = a01 * a12 - a02 * a11;\n\t\t\t\tconst b04 = a01 * a13 - a03 * a11;\n\t\t\t\tconst b05 = a02 * a13 - a03 * a12;\n\t\t\t\tconst b06 = a20 * a31 - a21 * a30;\n\t\t\t\tconst b07 = a20 * a32 - a22 * a30;\n\t\t\t\tconst b08 = a20 * a33 - a23 * a30;\n\t\t\t\tconst b09 = a21 * a32 - a22 * a31;\n\t\t\t\tconst b10 = a21 * a33 - a23 * a31;\n\t\t\t\tconst b11 = a22 * a33 - a23 * a32;\n\t\t\t\tconst det = b00 * b11 - b01 * b10 + b02 * b09 + b03 * b08 - b04 * b07 + b05 * b06;\n\t\t\t\tif (det === 0) {\n\t\t\t\t\t\tthis.setIdentity();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst invDet = 1 / det;\n\t\t\t\t\t\tconst t = this.data;\n\t\t\t\t\t\tt[0] = (a11 * b11 - a12 * b10 + a13 * b09) * invDet;\n\t\t\t\t\t\tt[1] = (-a01 * b11 + a02 * b10 - a03 * b09) * invDet;\n\t\t\t\t\t\tt[2] = (a31 * b05 - a32 * b04 + a33 * b03) * invDet;\n\t\t\t\t\t\tt[3] = (-a21 * b05 + a22 * b04 - a23 * b03) * invDet;\n\t\t\t\t\t\tt[4] = (-a10 * b11 + a12 * b08 - a13 * b07) * invDet;\n\t\t\t\t\t\tt[5] = (a00 * b11 - a02 * b08 + a03 * b07) * invDet;\n\t\t\t\t\t\tt[6] = (-a30 * b05 + a32 * b02 - a33 * b01) * invDet;\n\t\t\t\t\t\tt[7] = (a20 * b05 - a22 * b02 + a23 * b01) * invDet;\n\t\t\t\t\t\tt[8] = (a10 * b10 - a11 * b08 + a13 * b06) * invDet;\n\t\t\t\t\t\tt[9] = (-a00 * b10 + a01 * b08 - a03 * b06) * invDet;\n\t\t\t\t\t\tt[10] = (a30 * b04 - a31 * b02 + a33 * b00) * invDet;\n\t\t\t\t\t\tt[11] = (-a20 * b04 + a21 * b02 - a23 * b00) * invDet;\n\t\t\t\t\t\tt[12] = (-a10 * b09 + a11 * b07 - a12 * b06) * invDet;\n\t\t\t\t\t\tt[13] = (a00 * b09 - a01 * b07 + a02 * b06) * invDet;\n\t\t\t\t\t\tt[14] = (-a30 * b03 + a31 * b01 - a32 * b00) * invDet;\n\t\t\t\t\t\tt[15] = (a20 * b03 - a21 * b01 + a22 * b00) * invDet;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tset(src) {\n\t\t\t\tconst dst = this.data;\n\t\t\t\tdst[0] = src[0];\n\t\t\t\tdst[1] = src[1];\n\t\t\t\tdst[2] = src[2];\n\t\t\t\tdst[3] = src[3];\n\t\t\t\tdst[4] = src[4];\n\t\t\t\tdst[5] = src[5];\n\t\t\t\tdst[6] = src[6];\n\t\t\t\tdst[7] = src[7];\n\t\t\t\tdst[8] = src[8];\n\t\t\t\tdst[9] = src[9];\n\t\t\t\tdst[10] = src[10];\n\t\t\t\tdst[11] = src[11];\n\t\t\t\tdst[12] = src[12];\n\t\t\t\tdst[13] = src[13];\n\t\t\t\tdst[14] = src[14];\n\t\t\t\tdst[15] = src[15];\n\t\t\t\treturn this;\n\t\t}\n\t\tsetIdentity() {\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = 1;\n\t\t\t\tm[1] = 0;\n\t\t\t\tm[2] = 0;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = 0;\n\t\t\t\tm[5] = 1;\n\t\t\t\tm[6] = 0;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = 0;\n\t\t\t\tm[9] = 0;\n\t\t\t\tm[10] = 1;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetTRS(t, r, s) {\n\t\t\t\tconst qx = r.x;\n\t\t\t\tconst qy = r.y;\n\t\t\t\tconst qz = r.z;\n\t\t\t\tconst qw = r.w;\n\t\t\t\tconst sx = s.x;\n\t\t\t\tconst sy = s.y;\n\t\t\t\tconst sz = s.z;\n\t\t\t\tconst x2 = qx + qx;\n\t\t\t\tconst y2 = qy + qy;\n\t\t\t\tconst z2 = qz + qz;\n\t\t\t\tconst xx = qx * x2;\n\t\t\t\tconst xy = qx * y2;\n\t\t\t\tconst xz = qx * z2;\n\t\t\t\tconst yy = qy * y2;\n\t\t\t\tconst yz = qy * z2;\n\t\t\t\tconst zz = qz * z2;\n\t\t\t\tconst wx = qw * x2;\n\t\t\t\tconst wy = qw * y2;\n\t\t\t\tconst wz = qw * z2;\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = (1 - (yy + zz)) * sx;\n\t\t\t\tm[1] = (xy + wz) * sx;\n\t\t\t\tm[2] = (xz - wy) * sx;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = (xy - wz) * sy;\n\t\t\t\tm[5] = (1 - (xx + zz)) * sy;\n\t\t\t\tm[6] = (yz + wx) * sy;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = (xz + wy) * sz;\n\t\t\t\tm[9] = (yz - wx) * sz;\n\t\t\t\tm[10] = (1 - (xx + yy)) * sz;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = t.x;\n\t\t\t\tm[13] = t.y;\n\t\t\t\tm[14] = t.z;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\ttranspose(src = this) {\n\t\t\t\tconst s = src.data;\n\t\t\t\tconst t = this.data;\n\t\t\t\tif (s === t) {\n\t\t\t\t\t\tlet tmp;\n\t\t\t\t\t\ttmp = s[1];\n\t\t\t\t\t\tt[1] = s[4];\n\t\t\t\t\t\tt[4] = tmp;\n\t\t\t\t\t\ttmp = s[2];\n\t\t\t\t\t\tt[2] = s[8];\n\t\t\t\t\t\tt[8] = tmp;\n\t\t\t\t\t\ttmp = s[3];\n\t\t\t\t\t\tt[3] = s[12];\n\t\t\t\t\t\tt[12] = tmp;\n\t\t\t\t\t\ttmp = s[6];\n\t\t\t\t\t\tt[6] = s[9];\n\t\t\t\t\t\tt[9] = tmp;\n\t\t\t\t\t\ttmp = s[7];\n\t\t\t\t\t\tt[7] = s[13];\n\t\t\t\t\t\tt[13] = tmp;\n\t\t\t\t\t\ttmp = s[11];\n\t\t\t\t\t\tt[11] = s[14];\n\t\t\t\t\t\tt[14] = tmp;\n\t\t\t\t} else {\n\t\t\t\t\t\tt[0] = s[0];\n\t\t\t\t\t\tt[1] = s[4];\n\t\t\t\t\t\tt[2] = s[8];\n\t\t\t\t\t\tt[3] = s[12];\n\t\t\t\t\t\tt[4] = s[1];\n\t\t\t\t\t\tt[5] = s[5];\n\t\t\t\t\t\tt[6] = s[9];\n\t\t\t\t\t\tt[7] = s[13];\n\t\t\t\t\t\tt[8] = s[2];\n\t\t\t\t\t\tt[9] = s[6];\n\t\t\t\t\t\tt[10] = s[10];\n\t\t\t\t\t\tt[11] = s[14];\n\t\t\t\t\t\tt[12] = s[3];\n\t\t\t\t\t\tt[13] = s[7];\n\t\t\t\t\t\tt[14] = s[11];\n\t\t\t\t\t\tt[15] = s[15];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tgetTranslation(t = new Vec3()) {\n\t\t\t\treturn t.set(this.data[12], this.data[13], this.data[14]);\n\t\t}\n\t\tgetX(x = new Vec3()) {\n\t\t\t\treturn x.set(this.data[0], this.data[1], this.data[2]);\n\t\t}\n\t\tgetY(y = new Vec3()) {\n\t\t\t\treturn y.set(this.data[4], this.data[5], this.data[6]);\n\t\t}\n\t\tgetZ(z = new Vec3()) {\n\t\t\t\treturn z.set(this.data[8], this.data[9], this.data[10]);\n\t\t}\n\t\tgetScale(scale = new Vec3()) {\n\t\t\t\tthis.getX(x$1);\n\t\t\t\tthis.getY(y);\n\t\t\t\tthis.getZ(z);\n\t\t\t\tscale.set(x$1.length(), y.length(), z.length());\n\t\t\t\treturn scale;\n\t\t}\n\t\tget scaleSign() {\n\t\t\t\tthis.getX(x$1);\n\t\t\t\tthis.getY(y);\n\t\t\t\tthis.getZ(z);\n\t\t\t\tx$1.cross(x$1, y);\n\t\t\t\treturn x$1.dot(z) < 0 ? -1 : 1;\n\t\t}\n\t\tsetFromEulerAngles(ex, ey, ez) {\n\t\t\t\tex *= math.DEG_TO_RAD;\n\t\t\t\tey *= math.DEG_TO_RAD;\n\t\t\t\tez *= math.DEG_TO_RAD;\n\t\t\t\tconst s1 = Math.sin(-ex);\n\t\t\t\tconst c1 = Math.cos(-ex);\n\t\t\t\tconst s2 = Math.sin(-ey);\n\t\t\t\tconst c2 = Math.cos(-ey);\n\t\t\t\tconst s3 = Math.sin(-ez);\n\t\t\t\tconst c3 = Math.cos(-ez);\n\t\t\t\tconst m = this.data;\n\t\t\t\tm[0] = c2 * c3;\n\t\t\t\tm[1] = -c2 * s3;\n\t\t\t\tm[2] = s2;\n\t\t\t\tm[3] = 0;\n\t\t\t\tm[4] = c1 * s3 + c3 * s1 * s2;\n\t\t\t\tm[5] = c1 * c3 - s1 * s2 * s3;\n\t\t\t\tm[6] = -c2 * s1;\n\t\t\t\tm[7] = 0;\n\t\t\t\tm[8] = s1 * s3 - c1 * c3 * s2;\n\t\t\t\tm[9] = c3 * s1 + c1 * s2 * s3;\n\t\t\t\tm[10] = c1 * c2;\n\t\t\t\tm[11] = 0;\n\t\t\t\tm[12] = 0;\n\t\t\t\tm[13] = 0;\n\t\t\t\tm[14] = 0;\n\t\t\t\tm[15] = 1;\n\t\t\t\treturn this;\n\t\t}\n\t\tgetEulerAngles(eulers = new Vec3()) {\n\t\t\t\tthis.getScale(scale);\n\t\t\t\tconst sx = scale.x;\n\t\t\t\tconst sy = scale.y;\n\t\t\t\tconst sz = scale.z;\n\t\t\t\tif (sx === 0 || sy === 0 || sz === 0) {\n\t\t\t\t\t\treturn eulers.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tconst m = this.data;\n\t\t\t\tconst y = Math.asin(-m[2] / sx);\n\t\t\t\tconst halfPi = Math.PI * 0.5;\n\t\t\t\tlet x, z;\n\t\t\t\tif (y < halfPi) {\n\t\t\t\t\t\tif (y > -halfPi) {\n\t\t\t\t\t\t\t\tx = Math.atan2(m[6] / sy, m[10] / sz);\n\t\t\t\t\t\t\t\tz = Math.atan2(m[1] / sx, m[0] / sx);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tz = 0;\n\t\t\t\t\t\t\t\tx = -Math.atan2(m[4] / sy, m[5] / sy);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tz = 0;\n\t\t\t\t\t\tx = Math.atan2(m[4] / sy, m[5] / sy);\n\t\t\t\t}\n\t\t\t\treturn eulers.set(x, y, z).mulScalar(math.RAD_TO_DEG);\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.data.join(', ')}]`;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY = Object.freeze(new Mat4());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Mat4().set([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t}\n}\n\nclass Quat {\n\t\tconstructor(x = 0, y = 0, z = 0, w = 1){\n\t\t\t\tif (x.length === 4) {\n\t\t\t\t\t\tthis.x = x[0];\n\t\t\t\t\t\tthis.y = x[1];\n\t\t\t\t\t\tthis.z = x[2];\n\t\t\t\t\t\tthis.w = x[3];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = x;\n\t\t\t\t\t\tthis.y = y;\n\t\t\t\t\t\tthis.z = z;\n\t\t\t\t\t\tthis.w = w;\n\t\t\t\t}\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr(this.x, this.y, this.z, this.w);\n\t\t}\n\t\tconjugate(src = this) {\n\t\t\t\tthis.x = src.x * -1;\n\t\t\t\tthis.y = src.y * -1;\n\t\t\t\tthis.z = src.z * -1;\n\t\t\t\tthis.w = src.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.x = rhs.x;\n\t\t\t\tthis.y = rhs.y;\n\t\t\t\tthis.z = rhs.z;\n\t\t\t\tthis.w = rhs.w;\n\t\t\t\treturn this;\n\t\t}\n\t\tdot(other) {\n\t\t\t\treturn this.x * other.x + this.y * other.y + this.z * other.z + this.w * other.w;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.x === rhs.x && this.y === rhs.y && this.z === rhs.z && this.w === rhs.w;\n\t\t}\n\t\tequalsApprox(rhs, epsilon = 1e-6) {\n\t\t\t\treturn Math.abs(this.x - rhs.x) < epsilon && Math.abs(this.y - rhs.y) < epsilon && Math.abs(this.z - rhs.z) < epsilon && Math.abs(this.w - rhs.w) < epsilon;\n\t\t}\n\t\tgetAxisAngle(axis) {\n\t\t\t\tlet rad = Math.acos(this.w) * 2;\n\t\t\t\tconst s = Math.sin(rad / 2);\n\t\t\t\tif (s !== 0) {\n\t\t\t\t\t\taxis.x = this.x / s;\n\t\t\t\t\t\taxis.y = this.y / s;\n\t\t\t\t\t\taxis.z = this.z / s;\n\t\t\t\t\t\tif (axis.x < 0 || axis.y < 0 || axis.z < 0) {\n\t\t\t\t\t\t\t\taxis.x *= -1;\n\t\t\t\t\t\t\t\taxis.y *= -1;\n\t\t\t\t\t\t\t\taxis.z *= -1;\n\t\t\t\t\t\t\t\trad *= -1;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\taxis.x = 1;\n\t\t\t\t\t\taxis.y = 0;\n\t\t\t\t\t\taxis.z = 0;\n\t\t\t\t}\n\t\t\t\treturn rad * math.RAD_TO_DEG;\n\t\t}\n\t\tgetEulerAngles(eulers = new Vec3()) {\n\t\t\t\tlet x, y, z;\n\t\t\t\tconst qx = this.x;\n\t\t\t\tconst qy = this.y;\n\t\t\t\tconst qz = this.z;\n\t\t\t\tconst qw = this.w;\n\t\t\t\tconst a2 = 2 * (qw * qy - qx * qz);\n\t\t\t\tif (a2 <= -0.99999) {\n\t\t\t\t\t\tx = 2 * Math.atan2(qx, qw);\n\t\t\t\t\t\ty = -Math.PI / 2;\n\t\t\t\t\t\tz = 0;\n\t\t\t\t} else if (a2 >= 0.99999) {\n\t\t\t\t\t\tx = 2 * Math.atan2(qx, qw);\n\t\t\t\t\t\ty = Math.PI / 2;\n\t\t\t\t\t\tz = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tx = Math.atan2(2 * (qw * qx + qy * qz), 1 - 2 * (qx * qx + qy * qy));\n\t\t\t\t\t\ty = Math.asin(a2);\n\t\t\t\t\t\tz = Math.atan2(2 * (qw * qz + qx * qy), 1 - 2 * (qy * qy + qz * qz));\n\t\t\t\t}\n\t\t\t\treturn eulers.set(x, y, z).mulScalar(math.RAD_TO_DEG);\n\t\t}\n\t\tinvert(src = this) {\n\t\t\t\treturn this.conjugate(src).normalize();\n\t\t}\n\t\tlength() {\n\t\t\t\treturn Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w);\n\t\t}\n\t\tlengthSq() {\n\t\t\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\n\t\t}\n\t\tlerp(lhs, rhs, alpha) {\n\t\t\t\tconst omt = (1 - alpha) * (lhs.dot(rhs) < 0 ? -1 : 1);\n\t\t\t\tthis.x = lhs.x * omt + rhs.x * alpha;\n\t\t\t\tthis.y = lhs.y * omt + rhs.y * alpha;\n\t\t\t\tthis.z = lhs.z * omt + rhs.z * alpha;\n\t\t\t\tthis.w = lhs.w * omt + rhs.w * alpha;\n\t\t\t\treturn this.normalize();\n\t\t}\n\t\tmul(rhs) {\n\t\t\t\tconst q1x = this.x;\n\t\t\t\tconst q1y = this.y;\n\t\t\t\tconst q1z = this.z;\n\t\t\t\tconst q1w = this.w;\n\t\t\t\tconst q2x = rhs.x;\n\t\t\t\tconst q2y = rhs.y;\n\t\t\t\tconst q2z = rhs.z;\n\t\t\t\tconst q2w = rhs.w;\n\t\t\t\tthis.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\n\t\t\t\tthis.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\n\t\t\t\tthis.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\n\t\t\t\tthis.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\n\t\t\t\treturn this;\n\t\t}\n\t\tmulScalar(scalar, src = this) {\n\t\t\t\tthis.x = src.x * scalar;\n\t\t\t\tthis.y = src.y * scalar;\n\t\t\t\tthis.z = src.z * scalar;\n\t\t\t\tthis.w = src.w * scalar;\n\t\t\t\treturn this;\n\t\t}\n\t\tmul2(lhs, rhs) {\n\t\t\t\tconst q1x = lhs.x;\n\t\t\t\tconst q1y = lhs.y;\n\t\t\t\tconst q1z = lhs.z;\n\t\t\t\tconst q1w = lhs.w;\n\t\t\t\tconst q2x = rhs.x;\n\t\t\t\tconst q2y = rhs.y;\n\t\t\t\tconst q2z = rhs.z;\n\t\t\t\tconst q2w = rhs.w;\n\t\t\t\tthis.x = q1w * q2x + q1x * q2w + q1y * q2z - q1z * q2y;\n\t\t\t\tthis.y = q1w * q2y + q1y * q2w + q1z * q2x - q1x * q2z;\n\t\t\t\tthis.z = q1w * q2z + q1z * q2w + q1x * q2y - q1y * q2x;\n\t\t\t\tthis.w = q1w * q2w - q1x * q2x - q1y * q2y - q1z * q2z;\n\t\t\t\treturn this;\n\t\t}\n\t\tnormalize(src = this) {\n\t\t\t\tlet len = src.length();\n\t\t\t\tif (len === 0) {\n\t\t\t\t\t\tthis.x = this.y = this.z = 0;\n\t\t\t\t\t\tthis.w = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tlen = 1 / len;\n\t\t\t\t\t\tthis.x = src.x * len;\n\t\t\t\t\t\tthis.y = src.y * len;\n\t\t\t\t\t\tthis.z = src.z * len;\n\t\t\t\t\t\tthis.w = src.w * len;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tset(x, y, z, w) {\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.z = z;\n\t\t\t\tthis.w = w;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromAxisAngle(axis, angle) {\n\t\t\t\tangle *= 0.5 * math.DEG_TO_RAD;\n\t\t\t\tconst sa = Math.sin(angle);\n\t\t\t\tconst ca = Math.cos(angle);\n\t\t\t\tthis.x = sa * axis.x;\n\t\t\t\tthis.y = sa * axis.y;\n\t\t\t\tthis.z = sa * axis.z;\n\t\t\t\tthis.w = ca;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromEulerAngles(ex, ey, ez) {\n\t\t\t\tif (ex instanceof Vec3) {\n\t\t\t\t\t\tconst vec = ex;\n\t\t\t\t\t\tex = vec.x;\n\t\t\t\t\t\tey = vec.y;\n\t\t\t\t\t\tez = vec.z;\n\t\t\t\t}\n\t\t\t\tconst halfToRad = 0.5 * math.DEG_TO_RAD;\n\t\t\t\tex *= halfToRad;\n\t\t\t\tey *= halfToRad;\n\t\t\t\tez *= halfToRad;\n\t\t\t\tconst sx = Math.sin(ex);\n\t\t\t\tconst cx = Math.cos(ex);\n\t\t\t\tconst sy = Math.sin(ey);\n\t\t\t\tconst cy = Math.cos(ey);\n\t\t\t\tconst sz = Math.sin(ez);\n\t\t\t\tconst cz = Math.cos(ez);\n\t\t\t\tthis.x = sx * cy * cz - cx * sy * sz;\n\t\t\t\tthis.y = cx * sy * cz + sx * cy * sz;\n\t\t\t\tthis.z = cx * cy * sz - sx * sy * cz;\n\t\t\t\tthis.w = cx * cy * cz + sx * sy * sz;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromMat4(m) {\n\t\t\t\tconst d = m.data;\n\t\t\t\tlet m00 = d[0];\n\t\t\t\tlet m01 = d[1];\n\t\t\t\tlet m02 = d[2];\n\t\t\t\tlet m10 = d[4];\n\t\t\t\tlet m11 = d[5];\n\t\t\t\tlet m12 = d[6];\n\t\t\t\tlet m20 = d[8];\n\t\t\t\tlet m21 = d[9];\n\t\t\t\tlet m22 = d[10];\n\t\t\t\tconst det = m00 * (m11 * m22 - m12 * m21) - m01 * (m10 * m22 - m12 * m20) + m02 * (m10 * m21 - m11 * m20);\n\t\t\t\tif (det < 0) {\n\t\t\t\t\t\tm00 = -m00;\n\t\t\t\t\t\tm01 = -m01;\n\t\t\t\t\t\tm02 = -m02;\n\t\t\t\t}\n\t\t\t\tlet l;\n\t\t\t\tl = m00 * m00 + m01 * m01 + m02 * m02;\n\t\t\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\t\t\tl = 1 / Math.sqrt(l);\n\t\t\t\tm00 *= l;\n\t\t\t\tm01 *= l;\n\t\t\t\tm02 *= l;\n\t\t\t\tl = m10 * m10 + m11 * m11 + m12 * m12;\n\t\t\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\t\t\tl = 1 / Math.sqrt(l);\n\t\t\t\tm10 *= l;\n\t\t\t\tm11 *= l;\n\t\t\t\tm12 *= l;\n\t\t\t\tl = m20 * m20 + m21 * m21 + m22 * m22;\n\t\t\t\tif (l === 0) return this.set(0, 0, 0, 1);\n\t\t\t\tl = 1 / Math.sqrt(l);\n\t\t\t\tm20 *= l;\n\t\t\t\tm21 *= l;\n\t\t\t\tm22 *= l;\n\t\t\t\tif (m22 < 0) {\n\t\t\t\t\t\tif (m00 > m11) {\n\t\t\t\t\t\t\t\tthis.set(1 + m00 - m11 - m22, m01 + m10, m20 + m02, m12 - m21);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.set(m01 + m10, 1 - m00 + m11 - m22, m12 + m21, m20 - m02);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (m00 < -m11) {\n\t\t\t\t\t\t\t\tthis.set(m20 + m02, m12 + m21, 1 - m00 - m11 + m22, m01 - m10);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.set(m12 - m21, m20 - m02, m01 - m10, 1 + m00 + m11 + m22);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.mulScalar(1.0 / this.length());\n\t\t}\n\t\tsetFromDirections(from, to) {\n\t\t\t\tconst dotProduct = 1 + from.dot(to);\n\t\t\t\tif (dotProduct < Number.EPSILON) {\n\t\t\t\t\t\tif (Math.abs(from.x) > Math.abs(from.y)) {\n\t\t\t\t\t\t\t\tthis.x = -from.z;\n\t\t\t\t\t\t\t\tthis.y = 0;\n\t\t\t\t\t\t\t\tthis.z = from.x;\n\t\t\t\t\t\t\t\tthis.w = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.x = 0;\n\t\t\t\t\t\t\t\tthis.y = -from.z;\n\t\t\t\t\t\t\t\tthis.z = from.y;\n\t\t\t\t\t\t\t\tthis.w = 0;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.x = from.y * to.z - from.z * to.y;\n\t\t\t\t\t\tthis.y = from.z * to.x - from.x * to.z;\n\t\t\t\t\t\tthis.z = from.x * to.y - from.y * to.x;\n\t\t\t\t\t\tthis.w = dotProduct;\n\t\t\t\t}\n\t\t\t\treturn this.normalize();\n\t\t}\n\t\tslerp(lhs, rhs, alpha) {\n\t\t\t\tconst lx = lhs.x;\n\t\t\t\tconst ly = lhs.y;\n\t\t\t\tconst lz = lhs.z;\n\t\t\t\tconst lw = lhs.w;\n\t\t\t\tlet rx = rhs.x;\n\t\t\t\tlet ry = rhs.y;\n\t\t\t\tlet rz = rhs.z;\n\t\t\t\tlet rw = rhs.w;\n\t\t\t\tlet cosHalfTheta = lw * rw + lx * rx + ly * ry + lz * rz;\n\t\t\t\tif (cosHalfTheta < 0) {\n\t\t\t\t\t\trw = -rw;\n\t\t\t\t\t\trx = -rx;\n\t\t\t\t\t\try = -ry;\n\t\t\t\t\t\trz = -rz;\n\t\t\t\t\t\tcosHalfTheta = -cosHalfTheta;\n\t\t\t\t}\n\t\t\t\tif (Math.abs(cosHalfTheta) >= 1) {\n\t\t\t\t\t\tthis.w = lw;\n\t\t\t\t\t\tthis.x = lx;\n\t\t\t\t\t\tthis.y = ly;\n\t\t\t\t\t\tthis.z = lz;\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst halfTheta = Math.acos(cosHalfTheta);\n\t\t\t\tconst sinHalfTheta = Math.sqrt(1 - cosHalfTheta * cosHalfTheta);\n\t\t\t\tif (Math.abs(sinHalfTheta) < 0.001) {\n\t\t\t\t\t\tthis.w = lw * 0.5 + rw * 0.5;\n\t\t\t\t\t\tthis.x = lx * 0.5 + rx * 0.5;\n\t\t\t\t\t\tthis.y = ly * 0.5 + ry * 0.5;\n\t\t\t\t\t\tthis.z = lz * 0.5 + rz * 0.5;\n\t\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tconst ratioA = Math.sin((1 - alpha) * halfTheta) / sinHalfTheta;\n\t\t\t\tconst ratioB = Math.sin(alpha * halfTheta) / sinHalfTheta;\n\t\t\t\tthis.w = lw * ratioA + rw * ratioB;\n\t\t\t\tthis.x = lx * ratioA + rx * ratioB;\n\t\t\t\tthis.y = ly * ratioA + ry * ratioB;\n\t\t\t\tthis.z = lz * ratioA + rz * ratioB;\n\t\t\t\treturn this;\n\t\t}\n\t\ttransformVector(vec, res = new Vec3()) {\n\t\t\t\tconst x = vec.x, y = vec.y, z = vec.z;\n\t\t\t\tconst qx = this.x, qy = this.y, qz = this.z, qw = this.w;\n\t\t\t\tconst ix = qw * x + qy * z - qz * y;\n\t\t\t\tconst iy = qw * y + qz * x - qx * z;\n\t\t\t\tconst iz = qw * z + qx * y - qy * x;\n\t\t\t\tconst iw = -qx * x - qy * y - qz * z;\n\t\t\t\tres.x = ix * qw + iw * -qx + iy * -qz - iz * -qy;\n\t\t\t\tres.y = iy * qw + iw * -qy + iz * -qx - ix * -qz;\n\t\t\t\tres.z = iz * qw + iw * -qz + ix * -qy - iy * -qx;\n\t\t\t\treturn res;\n\t\t}\n\t\tfromArray(arr, offset = 0) {\n\t\t\t\tthis.x = arr[offset] ?? this.x;\n\t\t\t\tthis.y = arr[offset + 1] ?? this.y;\n\t\t\t\tthis.z = arr[offset + 2] ?? this.z;\n\t\t\t\tthis.w = arr[offset + 3] ?? this.w;\n\t\t\t\treturn this;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.x}, ${this.y}, ${this.z}, ${this.w}]`;\n\t\t}\n\t\ttoArray(arr = [], offset = 0) {\n\t\t\t\tarr[offset] = this.x;\n\t\t\t\tarr[offset + 1] = this.y;\n\t\t\t\tarr[offset + 2] = this.z;\n\t\t\t\tarr[offset + 3] = this.w;\n\t\t\t\treturn arr;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY = Object.freeze(new Quat(0, 0, 0, 1));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ZERO = Object.freeze(new Quat(0, 0, 0, 0));\n\t\t}\n}\n\nconst tmpVecA$1 = new Vec3();\nconst tmpVecB$1 = new Vec3();\nconst tmpVecC = new Vec3();\nconst tmpVecD = new Vec3();\nconst tmpVecE = new Vec3();\nclass BoundingBox {\n\t\tconstructor(center, halfExtents){\n\t\t\t\tthis.center = new Vec3();\n\t\t\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tthis._min = new Vec3();\n\t\t\t\tthis._max = new Vec3();\n\t\t\t\tif (center) {\n\t\t\t\t\t\tthis.center.copy(center);\n\t\t\t\t}\n\t\t\t\tif (halfExtents) {\n\t\t\t\t\t\tthis.halfExtents.copy(halfExtents);\n\t\t\t\t}\n\t\t}\n\t\tadd(other) {\n\t\t\t\tconst tc = this.center;\n\t\t\t\tconst tcx = tc.x;\n\t\t\t\tconst tcy = tc.y;\n\t\t\t\tconst tcz = tc.z;\n\t\t\t\tconst th = this.halfExtents;\n\t\t\t\tconst thx = th.x;\n\t\t\t\tconst thy = th.y;\n\t\t\t\tconst thz = th.z;\n\t\t\t\tlet tminx = tcx - thx;\n\t\t\t\tlet tmaxx = tcx + thx;\n\t\t\t\tlet tminy = tcy - thy;\n\t\t\t\tlet tmaxy = tcy + thy;\n\t\t\t\tlet tminz = tcz - thz;\n\t\t\t\tlet tmaxz = tcz + thz;\n\t\t\t\tconst oc = other.center;\n\t\t\t\tconst ocx = oc.x;\n\t\t\t\tconst ocy = oc.y;\n\t\t\t\tconst ocz = oc.z;\n\t\t\t\tconst oh = other.halfExtents;\n\t\t\t\tconst ohx = oh.x;\n\t\t\t\tconst ohy = oh.y;\n\t\t\t\tconst ohz = oh.z;\n\t\t\t\tconst ominx = ocx - ohx;\n\t\t\t\tconst omaxx = ocx + ohx;\n\t\t\t\tconst ominy = ocy - ohy;\n\t\t\t\tconst omaxy = ocy + ohy;\n\t\t\t\tconst ominz = ocz - ohz;\n\t\t\t\tconst omaxz = ocz + ohz;\n\t\t\t\tif (ominx < tminx) tminx = ominx;\n\t\t\t\tif (omaxx > tmaxx) tmaxx = omaxx;\n\t\t\t\tif (ominy < tminy) tminy = ominy;\n\t\t\t\tif (omaxy > tmaxy) tmaxy = omaxy;\n\t\t\t\tif (ominz < tminz) tminz = ominz;\n\t\t\t\tif (omaxz > tmaxz) tmaxz = omaxz;\n\t\t\t\ttc.x = (tminx + tmaxx) * 0.5;\n\t\t\t\ttc.y = (tminy + tmaxy) * 0.5;\n\t\t\t\ttc.z = (tminz + tmaxz) * 0.5;\n\t\t\t\tth.x = (tmaxx - tminx) * 0.5;\n\t\t\t\tth.y = (tmaxy - tminy) * 0.5;\n\t\t\t\tth.z = (tmaxz - tminz) * 0.5;\n\t\t}\n\t\tcopy(src) {\n\t\t\t\tthis.center.copy(src.center);\n\t\t\t\tthis.halfExtents.copy(src.halfExtents);\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new BoundingBox(this.center, this.halfExtents);\n\t\t}\n\t\tintersects(other) {\n\t\t\t\tconst aMax = this.getMax();\n\t\t\t\tconst aMin = this.getMin();\n\t\t\t\tconst bMax = other.getMax();\n\t\t\t\tconst bMin = other.getMin();\n\t\t\t\treturn aMin.x <= bMax.x && aMax.x >= bMin.x && aMin.y <= bMax.y && aMax.y >= bMin.y && aMin.z <= bMax.z && aMax.z >= bMin.z;\n\t\t}\n\t\t_intersectsRay(ray, point) {\n\t\t\t\tconst tMin = tmpVecA$1.copy(this.getMin()).sub(ray.origin);\n\t\t\t\tconst tMax = tmpVecB$1.copy(this.getMax()).sub(ray.origin);\n\t\t\t\tconst dir = ray.direction;\n\t\t\t\tif (dir.x === 0) {\n\t\t\t\t\t\ttMin.x = tMin.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t\t\ttMax.x = tMax.x < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\t\ttMin.x /= dir.x;\n\t\t\t\t\t\ttMax.x /= dir.x;\n\t\t\t\t}\n\t\t\t\tif (dir.y === 0) {\n\t\t\t\t\t\ttMin.y = tMin.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t\t\ttMax.y = tMax.y < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\t\ttMin.y /= dir.y;\n\t\t\t\t\t\ttMax.y /= dir.y;\n\t\t\t\t}\n\t\t\t\tif (dir.z === 0) {\n\t\t\t\t\t\ttMin.z = tMin.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t\t\ttMax.z = tMax.z < 0 ? -Number.MAX_VALUE : Number.MAX_VALUE;\n\t\t\t\t} else {\n\t\t\t\t\t\ttMin.z /= dir.z;\n\t\t\t\t\t\ttMax.z /= dir.z;\n\t\t\t\t}\n\t\t\t\tconst realMin = tmpVecC.set(Math.min(tMin.x, tMax.x), Math.min(tMin.y, tMax.y), Math.min(tMin.z, tMax.z));\n\t\t\t\tconst realMax = tmpVecD.set(Math.max(tMin.x, tMax.x), Math.max(tMin.y, tMax.y), Math.max(tMin.z, tMax.z));\n\t\t\t\tconst minMax = Math.min(Math.min(realMax.x, realMax.y), realMax.z);\n\t\t\t\tconst maxMin = Math.max(Math.max(realMin.x, realMin.y), realMin.z);\n\t\t\t\tconst intersects = minMax >= maxMin && maxMin >= 0;\n\t\t\t\tif (intersects) {\n\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(maxMin).add(ray.origin);\n\t\t\t\t}\n\t\t\t\treturn intersects;\n\t\t}\n\t\t_fastIntersectsRay(ray) {\n\t\t\t\tconst diff = tmpVecA$1;\n\t\t\t\tconst cross = tmpVecB$1;\n\t\t\t\tconst prod = tmpVecC;\n\t\t\t\tconst absDiff = tmpVecD;\n\t\t\t\tconst absDir = tmpVecE;\n\t\t\t\tconst rayDir = ray.direction;\n\t\t\t\tdiff.sub2(ray.origin, this.center);\n\t\t\t\tabsDiff.set(Math.abs(diff.x), Math.abs(diff.y), Math.abs(diff.z));\n\t\t\t\tprod.mul2(diff, rayDir);\n\t\t\t\tif (absDiff.x > this.halfExtents.x && prod.x >= 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (absDiff.y > this.halfExtents.y && prod.y >= 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (absDiff.z > this.halfExtents.z && prod.z >= 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tabsDir.set(Math.abs(rayDir.x), Math.abs(rayDir.y), Math.abs(rayDir.z));\n\t\t\t\tcross.cross(rayDir, diff);\n\t\t\t\tcross.set(Math.abs(cross.x), Math.abs(cross.y), Math.abs(cross.z));\n\t\t\t\tif (cross.x > this.halfExtents.y * absDir.z + this.halfExtents.z * absDir.y) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (cross.y > this.halfExtents.x * absDir.z + this.halfExtents.z * absDir.x) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (cross.z > this.halfExtents.x * absDir.y + this.halfExtents.y * absDir.x) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tif (point) {\n\t\t\t\t\t\treturn this._intersectsRay(ray, point);\n\t\t\t\t}\n\t\t\t\treturn this._fastIntersectsRay(ray);\n\t\t}\n\t\tsetMinMax(min, max) {\n\t\t\t\tthis.center.add2(max, min).mulScalar(0.5);\n\t\t\t\tthis.halfExtents.sub2(max, min).mulScalar(0.5);\n\t\t}\n\t\tgetMin() {\n\t\t\t\treturn this._min.copy(this.center).sub(this.halfExtents);\n\t\t}\n\t\tgetMax() {\n\t\t\t\treturn this._max.copy(this.center).add(this.halfExtents);\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tconst min = this.getMin();\n\t\t\t\tconst max = this.getMax();\n\t\t\t\tif (point.x < min.x || point.x > max.x || point.y < min.y || point.y > max.y || point.z < min.z || point.z > max.z) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tsetFromTransformedAabb(aabb, m, ignoreScale = false) {\n\t\t\t\tconst ac = aabb.center;\n\t\t\t\tconst ar = aabb.halfExtents;\n\t\t\t\tconst d = m.data;\n\t\t\t\tlet mx0 = d[0];\n\t\t\t\tlet mx1 = d[4];\n\t\t\t\tlet mx2 = d[8];\n\t\t\t\tlet my0 = d[1];\n\t\t\t\tlet my1 = d[5];\n\t\t\t\tlet my2 = d[9];\n\t\t\t\tlet mz0 = d[2];\n\t\t\t\tlet mz1 = d[6];\n\t\t\t\tlet mz2 = d[10];\n\t\t\t\tif (ignoreScale) {\n\t\t\t\t\t\tlet lengthSq = mx0 * mx0 + mx1 * mx1 + mx2 * mx2;\n\t\t\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\t\t\tmx0 *= invLength;\n\t\t\t\t\t\t\t\tmx1 *= invLength;\n\t\t\t\t\t\t\t\tmx2 *= invLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlengthSq = my0 * my0 + my1 * my1 + my2 * my2;\n\t\t\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\t\t\tmy0 *= invLength;\n\t\t\t\t\t\t\t\tmy1 *= invLength;\n\t\t\t\t\t\t\t\tmy2 *= invLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlengthSq = mz0 * mz0 + mz1 * mz1 + mz2 * mz2;\n\t\t\t\t\t\tif (lengthSq > 0) {\n\t\t\t\t\t\t\t\tconst invLength = 1 / Math.sqrt(lengthSq);\n\t\t\t\t\t\t\t\tmz0 *= invLength;\n\t\t\t\t\t\t\t\tmz1 *= invLength;\n\t\t\t\t\t\t\t\tmz2 *= invLength;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.center.set(d[12] + mx0 * ac.x + mx1 * ac.y + mx2 * ac.z, d[13] + my0 * ac.x + my1 * ac.y + my2 * ac.z, d[14] + mz0 * ac.x + mz1 * ac.y + mz2 * ac.z);\n\t\t\t\tthis.halfExtents.set(Math.abs(mx0) * ar.x + Math.abs(mx1) * ar.y + Math.abs(mx2) * ar.z, Math.abs(my0) * ar.x + Math.abs(my1) * ar.y + Math.abs(my2) * ar.z, Math.abs(mz0) * ar.x + Math.abs(mz1) * ar.y + Math.abs(mz2) * ar.z);\n\t\t}\n\t\tstatic computeMinMax(vertices, min, max, numVerts = vertices.length / 3) {\n\t\t\t\tif (numVerts > 0) {\n\t\t\t\t\t\tlet minx = vertices[0];\n\t\t\t\t\t\tlet miny = vertices[1];\n\t\t\t\t\t\tlet minz = vertices[2];\n\t\t\t\t\t\tlet maxx = minx;\n\t\t\t\t\t\tlet maxy = miny;\n\t\t\t\t\t\tlet maxz = minz;\n\t\t\t\t\t\tconst n = numVerts * 3;\n\t\t\t\t\t\tfor(let i = 3; i < n; i += 3){\n\t\t\t\t\t\t\t\tconst x = vertices[i];\n\t\t\t\t\t\t\t\tconst y = vertices[i + 1];\n\t\t\t\t\t\t\t\tconst z = vertices[i + 2];\n\t\t\t\t\t\t\t\tif (x < minx) minx = x;\n\t\t\t\t\t\t\t\tif (y < miny) miny = y;\n\t\t\t\t\t\t\t\tif (z < minz) minz = z;\n\t\t\t\t\t\t\t\tif (x > maxx) maxx = x;\n\t\t\t\t\t\t\t\tif (y > maxy) maxy = y;\n\t\t\t\t\t\t\t\tif (z > maxz) maxz = z;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmin.set(minx, miny, minz);\n\t\t\t\t\t\tmax.set(maxx, maxy, maxz);\n\t\t\t\t}\n\t\t}\n\t\tcompute(vertices, numVerts) {\n\t\t\t\tBoundingBox.computeMinMax(vertices, tmpVecA$1, tmpVecB$1, numVerts);\n\t\t\t\tthis.setMinMax(tmpVecA$1, tmpVecB$1);\n\t\t}\n\t\tintersectsBoundingSphere(sphere) {\n\t\t\t\tconst sq = this._distanceToBoundingSphereSq(sphere);\n\t\t\t\tif (sq <= sphere.radius * sphere.radius) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_distanceToBoundingSphereSq(sphere) {\n\t\t\t\tconst boxMin = this.getMin();\n\t\t\t\tconst boxMax = this.getMax();\n\t\t\t\tlet sq = 0;\n\t\t\t\tconst axis = [\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t'z'\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < 3; ++i){\n\t\t\t\t\t\tlet out = 0;\n\t\t\t\t\t\tconst pn = sphere.center[axis[i]];\n\t\t\t\t\t\tconst bMin = boxMin[axis[i]];\n\t\t\t\t\t\tconst bMax = boxMax[axis[i]];\n\t\t\t\t\t\tlet val = 0;\n\t\t\t\t\t\tif (pn < bMin) {\n\t\t\t\t\t\t\t\tval = bMin - pn;\n\t\t\t\t\t\t\t\tout += val * val;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pn > bMax) {\n\t\t\t\t\t\t\t\tval = pn - bMax;\n\t\t\t\t\t\t\t\tout += val * val;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsq += out;\n\t\t\t\t}\n\t\t\t\treturn sq;\n\t\t}\n\t\t_expand(expandMin, expandMax) {\n\t\t\t\ttmpVecA$1.add2(this.getMin(), expandMin);\n\t\t\t\ttmpVecB$1.add2(this.getMax(), expandMax);\n\t\t\t\tthis.setMinMax(tmpVecA$1, tmpVecB$1);\n\t\t}\n}\n\nconst tmpVecA = new Vec3();\nconst tmpVecB = new Vec3();\nclass BoundingSphere {\n\t\tconstructor(center = new Vec3(), radius = 0.5){\n\t\t\t\tthis.center = center;\n\t\t\t\tthis.radius = radius;\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tconst lenSq = tmpVecA.sub2(point, this.center).lengthSq();\n\t\t\t\tconst r = this.radius;\n\t\t\t\treturn lenSq < r * r;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tconst m = tmpVecA.copy(ray.origin).sub(this.center);\n\t\t\t\tconst b = m.dot(tmpVecB.copy(ray.direction).normalize());\n\t\t\t\tconst c = m.dot(m) - this.radius * this.radius;\n\t\t\t\tif (c > 0 && b > 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst discr = b * b - c;\n\t\t\t\tif (discr < 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst t = Math.abs(-b - Math.sqrt(discr));\n\t\t\t\tif (point) {\n\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tintersectsBoundingSphere(sphere) {\n\t\t\t\ttmpVecA.sub2(sphere.center, this.center);\n\t\t\t\tconst totalRadius = sphere.radius + this.radius;\n\t\t\t\tif (tmpVecA.lengthSq() <= totalRadius * totalRadius) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nclass Plane {\n\t\tconstructor(normal = Vec3.UP, distance = 0){\n\t\t\t\tthis.normal = new Vec3();\n\t\t\t\tthis.normal.copy(normal);\n\t\t\t\tthis.distance = distance;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(src) {\n\t\t\t\tthis.normal.copy(src.normal);\n\t\t\t\tthis.distance = src.distance;\n\t\t\t\treturn this;\n\t\t}\n\t\tintersectsLine(start, end, point) {\n\t\t\t\tconst d = this.distance;\n\t\t\t\tconst d0 = this.normal.dot(start) + d;\n\t\t\t\tconst d1 = this.normal.dot(end) + d;\n\t\t\t\tconst t = d0 / (d0 - d1);\n\t\t\t\tconst intersects = t >= 0 && t <= 1;\n\t\t\t\tif (intersects && point) {\n\t\t\t\t\t\tpoint.lerp(start, end, t);\n\t\t\t\t}\n\t\t\t\treturn intersects;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tconst denominator = this.normal.dot(ray.direction);\n\t\t\t\tif (denominator === 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst t = -(this.normal.dot(ray.origin) + this.distance) / denominator;\n\t\t\t\tif (t >= 0 && point) {\n\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\t\t\t}\n\t\t\t\treturn t >= 0;\n\t\t}\n\t\tnormalize() {\n\t\t\t\tconst invLength = 1 / this.normal.length();\n\t\t\t\tthis.normal.mulScalar(invLength);\n\t\t\t\tthis.distance *= invLength;\n\t\t\t\treturn this;\n\t\t}\n\t\tset(nx, ny, nz, d) {\n\t\t\t\tthis.normal.set(nx, ny, nz);\n\t\t\t\tthis.distance = d;\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromPointNormal(point, normal) {\n\t\t\t\tthis.normal.copy(normal);\n\t\t\t\tthis.distance = -this.normal.dot(point);\n\t\t\t\treturn this;\n\t\t}\n}\n\nclass Frustum {\n\t\tconstructor(){\n\t\t\t\tthis.planes = [];\n\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\tthis.planes[i] = new Plane();\n\t\t\t\t}\n\t\t}\n\t\tclone() {\n\t\t\t\tconst cstr = this.constructor;\n\t\t\t\treturn new cstr().copy(this);\n\t\t}\n\t\tcopy(src) {\n\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\tthis.planes[i].copy(src.planes[i]);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tsetFromMat4(matrix) {\n\t\t\t\tconst [m00, m01, m02, m03, m10, m11, m12, m13, m20, m21, m22, m23, m30, m31, m32, m33] = matrix.data;\n\t\t\t\tconst planes = this.planes;\n\t\t\t\tplanes[0].set(m03 - m00, m13 - m10, m23 - m20, m33 - m30).normalize();\n\t\t\t\tplanes[1].set(m03 + m00, m13 + m10, m23 + m20, m33 + m30).normalize();\n\t\t\t\tplanes[2].set(m03 + m01, m13 + m11, m23 + m21, m33 + m31).normalize();\n\t\t\t\tplanes[3].set(m03 - m01, m13 - m11, m23 - m21, m33 - m31).normalize();\n\t\t\t\tplanes[4].set(m03 - m02, m13 - m12, m23 - m22, m33 - m32).normalize();\n\t\t\t\tplanes[5].set(m03 + m02, m13 + m12, m23 + m22, m33 + m32).normalize();\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tfor(let p = 0; p < 6; p++){\n\t\t\t\t\t\tconst { normal, distance } = this.planes[p];\n\t\t\t\t\t\tif (normal.dot(point) + distance <= 0) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tcontainsSphere(sphere) {\n\t\t\t\tconst { center, radius } = sphere;\n\t\t\t\tlet c = 0;\n\t\t\t\tfor(let p = 0; p < 6; p++){\n\t\t\t\t\t\tconst { normal, distance } = this.planes[p];\n\t\t\t\t\t\tconst d = normal.dot(center) + distance;\n\t\t\t\t\t\tif (d <= -radius) {\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (d > radius) {\n\t\t\t\t\t\t\t\tc++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn c === 6 ? 2 : 1;\n\t\t}\n}\n\nclass Ray {\n\t\tconstructor(origin, direction){\n\t\t\t\tthis.origin = new Vec3();\n\t\t\t\tthis.direction = Vec3.FORWARD.clone();\n\t\t\t\tif (origin) {\n\t\t\t\t\t\tthis.origin.copy(origin);\n\t\t\t\t}\n\t\t\t\tif (direction) {\n\t\t\t\t\t\tthis.direction.copy(direction);\n\t\t\t\t}\n\t\t}\n\t\tset(origin, direction) {\n\t\t\t\tthis.origin.copy(origin);\n\t\t\t\tthis.direction.copy(direction);\n\t\t\t\treturn this;\n\t\t}\n\t\tcopy(src) {\n\t\t\t\treturn this.set(src.origin, src.direction);\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new this.constructor(this.origin, this.direction);\n\t\t}\n}\n\nconst tmpRay = new Ray();\nconst tmpVec3$2 = new Vec3();\nconst tmpSphere = new BoundingSphere();\nconst tmpMat4$1 = new Mat4();\nclass OrientedBox {\n\t\tconstructor(worldTransform = new Mat4(), halfExtents){\n\t\t\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tif (halfExtents) {\n\t\t\t\t\t\tthis.halfExtents.copy(halfExtents);\n\t\t\t\t}\n\t\t\t\tthis._modelTransform = worldTransform.clone().invert();\n\t\t\t\tthis._worldTransform = worldTransform.clone();\n\t\t\t\tthis._aabb = new BoundingBox(new Vec3(), this.halfExtents);\n\t\t}\n\t\tset worldTransform(value) {\n\t\t\t\tthis._worldTransform.copy(value);\n\t\t\t\tthis._modelTransform.copy(value).invert();\n\t\t}\n\t\tget worldTransform() {\n\t\t\t\treturn this._worldTransform;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\tthis._modelTransform.transformPoint(ray.origin, tmpRay.origin);\n\t\t\t\tthis._modelTransform.transformVector(ray.direction, tmpRay.direction);\n\t\t\t\tif (point) {\n\t\t\t\t\t\tconst result = this._aabb._intersectsRay(tmpRay, point);\n\t\t\t\t\t\ttmpMat4$1.copy(this._modelTransform).invert().transformPoint(point, point);\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn this._aabb._fastIntersectsRay(tmpRay);\n\t\t}\n\t\tcontainsPoint(point) {\n\t\t\t\tthis._modelTransform.transformPoint(point, tmpVec3$2);\n\t\t\t\treturn this._aabb.containsPoint(tmpVec3$2);\n\t\t}\n\t\tintersectsBoundingSphere(sphere) {\n\t\t\t\tthis._modelTransform.transformPoint(sphere.center, tmpSphere.center);\n\t\t\t\ttmpSphere.radius = sphere.radius;\n\t\t\t\tif (this._aabb.intersectsBoundingSphere(tmpSphere)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nconst e1 = new Vec3();\nconst e2 = new Vec3();\nconst h = new Vec3();\nconst s = new Vec3();\nconst q$3 = new Vec3();\nconst EPSILON$1 = 1e-6;\nclass Tri {\n\t\tconstructor(v0 = Vec3.ZERO, v1 = Vec3.ZERO, v2 = Vec3.ZERO){\n\t\t\t\tthis.v0 = new Vec3();\n\t\t\t\tthis.v1 = new Vec3();\n\t\t\t\tthis.v2 = new Vec3();\n\t\t\t\tthis.set(v0, v1, v2);\n\t\t}\n\t\tset(v0, v1, v2) {\n\t\t\t\tthis.v0.copy(v0);\n\t\t\t\tthis.v1.copy(v1);\n\t\t\t\tthis.v2.copy(v2);\n\t\t\t\treturn this;\n\t\t}\n\t\tintersectsRay(ray, point) {\n\t\t\t\te1.sub2(this.v1, this.v0);\n\t\t\t\te2.sub2(this.v2, this.v0);\n\t\t\t\th.cross(ray.direction, e2);\n\t\t\t\tconst a = e1.dot(h);\n\t\t\t\tif (a > -EPSILON$1 && a < EPSILON$1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst f = 1 / a;\n\t\t\t\ts.sub2(ray.origin, this.v0);\n\t\t\t\tconst u = f * s.dot(h);\n\t\t\t\tif (u < 0 || u > 1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tq$3.cross(s, e1);\n\t\t\t\tconst v = f * ray.direction.dot(q$3);\n\t\t\t\tif (v < 0 || u + v > 1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst t = f * e2.dot(q$3);\n\t\t\t\tif (t > EPSILON$1) {\n\t\t\t\t\t\tif (point instanceof Vec3) {\n\t\t\t\t\t\t\t\tpoint.copy(ray.direction).mulScalar(t).add(ray.origin);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\ttoString() {\n\t\t\t\treturn `[${this.v0.toString()}, ${this.v1.toString()}, ${this.v2.toString()}]`;\n\t\t}\n}\n\nconst ADDRESS_REPEAT = 0;\nconst ADDRESS_CLAMP_TO_EDGE = 1;\nconst ADDRESS_MIRRORED_REPEAT = 2;\nconst BLENDMODE_ZERO = 0;\nconst BLENDMODE_ONE = 1;\nconst BLENDMODE_SRC_COLOR = 2;\nconst BLENDMODE_ONE_MINUS_SRC_COLOR = 3;\nconst BLENDMODE_DST_COLOR = 4;\nconst BLENDMODE_ONE_MINUS_DST_COLOR = 5;\nconst BLENDMODE_SRC_ALPHA = 6;\nconst BLENDMODE_SRC_ALPHA_SATURATE = 7;\nconst BLENDMODE_ONE_MINUS_SRC_ALPHA = 8;\nconst BLENDMODE_DST_ALPHA = 9;\nconst BLENDMODE_ONE_MINUS_DST_ALPHA = 10;\nconst BLENDMODE_CONSTANT = 11;\nconst BLENDMODE_ONE_MINUS_CONSTANT = 12;\nconst BLENDEQUATION_ADD = 0;\nconst BLENDEQUATION_SUBTRACT = 1;\nconst BLENDEQUATION_REVERSE_SUBTRACT = 2;\nconst BLENDEQUATION_MIN = 3;\nconst BLENDEQUATION_MAX = 4;\nconst BUFFERUSAGE_READ = 0x0001;\nconst BUFFERUSAGE_WRITE = 0x0002;\nconst BUFFERUSAGE_COPY_SRC = 0x0004;\nconst BUFFERUSAGE_COPY_DST = 0x0008;\nconst BUFFERUSAGE_INDEX = 0x0010;\nconst BUFFERUSAGE_VERTEX = 0x0020;\nconst BUFFERUSAGE_UNIFORM = 0x0040;\nconst BUFFERUSAGE_STORAGE = 0x0080;\nconst BUFFERUSAGE_INDIRECT = 0x0100;\nconst BUFFER_STATIC = 0;\nconst BUFFER_DYNAMIC = 1;\nconst BUFFER_STREAM = 2;\nconst BUFFER_GPUDYNAMIC = 3;\nconst CLEARFLAG_COLOR = 1;\nconst CLEARFLAG_DEPTH = 2;\nconst CLEARFLAG_STENCIL = 4;\nconst CUBEFACE_POSX = 0;\nconst CUBEFACE_NEGX = 1;\nconst CUBEFACE_POSY = 2;\nconst CUBEFACE_NEGY = 3;\nconst CUBEFACE_POSZ = 4;\nconst CUBEFACE_NEGZ = 5;\nconst CULLFACE_NONE = 0;\nconst CULLFACE_BACK = 1;\nconst CULLFACE_FRONT = 2;\nconst CULLFACE_FRONTANDBACK = 3;\nconst FILTER_NEAREST = 0;\nconst FILTER_LINEAR = 1;\nconst FILTER_NEAREST_MIPMAP_NEAREST = 2;\nconst FILTER_NEAREST_MIPMAP_LINEAR = 3;\nconst FILTER_LINEAR_MIPMAP_NEAREST = 4;\nconst FILTER_LINEAR_MIPMAP_LINEAR = 5;\nconst FUNC_NEVER = 0;\nconst FUNC_LESS = 1;\nconst FUNC_EQUAL = 2;\nconst FUNC_LESSEQUAL = 3;\nconst FUNC_GREATER = 4;\nconst FUNC_NOTEQUAL = 5;\nconst FUNC_GREATEREQUAL = 6;\nconst FUNC_ALWAYS = 7;\nconst INDEXFORMAT_UINT8 = 0;\nconst INDEXFORMAT_UINT16 = 1;\nconst INDEXFORMAT_UINT32 = 2;\nconst indexFormatByteSize = [\n\t\t1,\n\t\t2,\n\t\t4\n];\nconst PIXELFORMAT_A8 = 0;\nconst PIXELFORMAT_L8 = 1;\nconst PIXELFORMAT_LA8 = 2;\nconst PIXELFORMAT_RGB565 = 3;\nconst PIXELFORMAT_RGBA5551 = 4;\nconst PIXELFORMAT_RGBA4 = 5;\nconst PIXELFORMAT_RGB8 = 6;\nconst PIXELFORMAT_RGBA8 = 7;\nconst PIXELFORMAT_DXT1 = 8;\nconst PIXELFORMAT_DXT3 = 9;\nconst PIXELFORMAT_DXT5 = 10;\nconst PIXELFORMAT_RGB16F = 11;\nconst PIXELFORMAT_RGBA16F = 12;\nconst PIXELFORMAT_RGB32F = 13;\nconst PIXELFORMAT_RGBA32F = 14;\nconst PIXELFORMAT_R32F = 15;\nconst PIXELFORMAT_DEPTH = 16;\nconst PIXELFORMAT_DEPTHSTENCIL = 17;\nconst PIXELFORMAT_111110F = 18;\nconst PIXELFORMAT_SRGB8 = 19;\nconst PIXELFORMAT_SRGBA8 = 20;\nconst PIXELFORMAT_ETC1 = 21;\nconst PIXELFORMAT_ETC2_RGB = 22;\nconst PIXELFORMAT_ETC2_RGBA = 23;\nconst PIXELFORMAT_PVRTC_2BPP_RGB_1 = 24;\nconst PIXELFORMAT_PVRTC_2BPP_RGBA_1 = 25;\nconst PIXELFORMAT_PVRTC_4BPP_RGB_1 = 26;\nconst PIXELFORMAT_PVRTC_4BPP_RGBA_1 = 27;\nconst PIXELFORMAT_ASTC_4x4 = 28;\nconst PIXELFORMAT_ATC_RGB = 29;\nconst PIXELFORMAT_ATC_RGBA = 30;\nconst PIXELFORMAT_BGRA8 = 31;\nconst PIXELFORMAT_R8I = 32;\nconst PIXELFORMAT_R8U = 33;\nconst PIXELFORMAT_R16I = 34;\nconst PIXELFORMAT_R16U = 35;\nconst PIXELFORMAT_R32I = 36;\nconst PIXELFORMAT_R32U = 37;\nconst PIXELFORMAT_RG8I = 38;\nconst PIXELFORMAT_RG8U = 39;\nconst PIXELFORMAT_RG16I = 40;\nconst PIXELFORMAT_RG16U = 41;\nconst PIXELFORMAT_RG32I = 42;\nconst PIXELFORMAT_RG32U = 43;\nconst PIXELFORMAT_RGBA8I = 44;\nconst PIXELFORMAT_RGBA8U = 45;\nconst PIXELFORMAT_RGBA16I = 46;\nconst PIXELFORMAT_RGBA16U = 47;\nconst PIXELFORMAT_RGBA32I = 48;\nconst PIXELFORMAT_RGBA32U = 49;\nconst PIXELFORMAT_R16F = 50;\nconst PIXELFORMAT_RG16F = 51;\nconst PIXELFORMAT_R8 = 52;\nconst PIXELFORMAT_RG8 = 53;\nconst PIXELFORMAT_DXT1_SRGB = 54;\nconst PIXELFORMAT_DXT3_SRGBA = 55;\nconst PIXELFORMAT_DXT5_SRGBA = 56;\nconst PIXELFORMAT_ETC2_SRGB = 61;\nconst PIXELFORMAT_ETC2_SRGBA = 62;\nconst PIXELFORMAT_ASTC_4x4_SRGB = 63;\nconst PIXELFORMAT_SBGRA8 = 64;\nconst PIXELFORMAT_BC6F = 65;\nconst PIXELFORMAT_BC6UF = 66;\nconst PIXELFORMAT_BC7 = 67;\nconst PIXELFORMAT_BC7_SRGBA = 68;\nconst PIXELFORMAT_DEPTH16 = 69;\nconst pixelFormatInfo = new Map([\n\t\t[\n\t\t\t\tPIXELFORMAT_A8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'A8',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R8',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_L8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'L8',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_LA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'LA8',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG8',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB565,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB565',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA5551,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA5551',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA4,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA4',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_SRGBA8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R16F',\n\t\t\t\t\t\tsize: 2\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG16F',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB16F',\n\t\t\t\t\t\tsize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA16F',\n\t\t\t\t\t\tsize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGB32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGB32F',\n\t\t\t\t\t\tsize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA32F',\n\t\t\t\t\t\tsize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R32F',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DEPTH,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DEPTH',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DEPTH16,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DEPTH16',\n\t\t\t\t\t\tsize: 2\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DEPTHSTENCIL,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DEPTHSTENCIL',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_111110F,\n\t\t\t\t{\n\t\t\t\t\t\tname: '111110F',\n\t\t\t\t\t\tsize: 4\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_SRGB8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'SRGB8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_SRGBA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'SRGBA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BGRA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BGRA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_SBGRA8,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'SBGRA8',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT1',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_DXT1_SRGB\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT3,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT3',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_DXT3_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT5,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT5',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_DXT5_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC1',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_RGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_RGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_ETC2_SRGB\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_RGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_RGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_ETC2_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_2BPP_RGB_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_2BPP_RGB_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_2BPP_RGBA_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_2BPP_RGBA_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_4BPP_RGB_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_4BPP_RGB_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_PVRTC_4BPP_RGBA_1,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PVRTC_4BPP_RGBA_1',\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tblockSize: 8\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ASTC_4x4,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ASTC_4x4',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_ASTC_4x4_SRGB\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ATC_RGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ATC_RGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ATC_RGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ATC_RGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC6F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC6H_RGBF',\n\t\t\t\t\t\tblockSize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC6UF,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC6H_RGBUF',\n\t\t\t\t\t\tblockSize: 16\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC7,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC7_RGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgbFormat: PIXELFORMAT_BC7_SRGBA\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT1_SRGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT1_SRGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT3_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT3_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_DXT5_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'DXT5_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_SRGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_SRGB',\n\t\t\t\t\t\tblockSize: 8,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ETC2_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ETC2_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_ASTC_4x4_SRGB,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'ASTC_4x4_SRGB',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_BC7_SRGBA,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'BC7_SRGBA',\n\t\t\t\t\t\tblockSize: 16,\n\t\t\t\t\t\tldr: true,\n\t\t\t\t\t\tsrgb: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R8I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R8I',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R8U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R8U',\n\t\t\t\t\t\tsize: 1,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R16I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R16I',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R16U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R16U',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R32I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R32I',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_R32U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'R32U',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG8I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG8I',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG8U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG8U',\n\t\t\t\t\t\tsize: 2,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG16I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG16I',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG16U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG16U',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG32I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG32I',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RG32U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RG32U',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA8I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA8I',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA8U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA8U',\n\t\t\t\t\t\tsize: 4,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA16I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA16I',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA16U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA16U',\n\t\t\t\t\t\tsize: 8,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA32I,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA32I',\n\t\t\t\t\t\tsize: 16,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tPIXELFORMAT_RGBA32U,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'RGBA32U',\n\t\t\t\t\t\tsize: 16,\n\t\t\t\t\t\tisInt: true\n\t\t\t\t}\n\t\t]\n]);\nconst isCompressedPixelFormat = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.blockSize !== undefined;\n};\nconst isSrgbPixelFormat = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.srgb === true;\n};\nconst isIntegerPixelFormat = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.isInt === true;\n};\nconst pixelFormatLinearToGamma = (format)=>{\n\t\treturn pixelFormatInfo.get(format)?.srgbFormat || format;\n};\nconst pixelFormatGammaToLinear = (format)=>{\n\t\tfor (const [key, value] of pixelFormatInfo){\n\t\t\t\tif (value.srgbFormat === format) {\n\t\t\t\t\t\treturn key;\n\t\t\t\t}\n\t\t}\n\t\treturn format;\n};\nconst requiresManualGamma = (format)=>{\n\t\tconst info = pixelFormatInfo.get(format);\n\t\treturn !!(info?.ldr && !info?.srgb);\n};\nconst getPixelFormatArrayType = (format)=>{\n\t\tswitch(format){\n\t\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\tcase PIXELFORMAT_RGB32F:\n\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\t\treturn Float32Array;\n\t\t\t\tcase PIXELFORMAT_R32I:\n\t\t\t\tcase PIXELFORMAT_RG32I:\n\t\t\t\tcase PIXELFORMAT_RGBA32I:\n\t\t\t\t\t\treturn Int32Array;\n\t\t\t\tcase PIXELFORMAT_R32U:\n\t\t\t\tcase PIXELFORMAT_RG32U:\n\t\t\t\tcase PIXELFORMAT_RGBA32U:\n\t\t\t\t\t\treturn Uint32Array;\n\t\t\t\tcase PIXELFORMAT_R16I:\n\t\t\t\tcase PIXELFORMAT_RG16I:\n\t\t\t\tcase PIXELFORMAT_RGBA16I:\n\t\t\t\t\t\treturn Int16Array;\n\t\t\t\tcase PIXELFORMAT_RG8:\n\t\t\t\tcase PIXELFORMAT_R16U:\n\t\t\t\tcase PIXELFORMAT_RG16U:\n\t\t\t\tcase PIXELFORMAT_RGBA16U:\n\t\t\t\tcase PIXELFORMAT_RGB565:\n\t\t\t\tcase PIXELFORMAT_RGBA5551:\n\t\t\t\tcase PIXELFORMAT_RGBA4:\n\t\t\t\tcase PIXELFORMAT_R16F:\n\t\t\t\tcase PIXELFORMAT_RG16F:\n\t\t\t\tcase PIXELFORMAT_RGB16F:\n\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\t\treturn Uint16Array;\n\t\t\t\tcase PIXELFORMAT_R8I:\n\t\t\t\tcase PIXELFORMAT_RG8I:\n\t\t\t\tcase PIXELFORMAT_RGBA8I:\n\t\t\t\t\t\treturn Int8Array;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn Uint8Array;\n\t\t}\n};\nconst PRIMITIVE_POINTS = 0;\nconst PRIMITIVE_LINES = 1;\nconst PRIMITIVE_LINELOOP = 2;\nconst PRIMITIVE_LINESTRIP = 3;\nconst PRIMITIVE_TRIANGLES = 4;\nconst PRIMITIVE_TRISTRIP = 5;\nconst PRIMITIVE_TRIFAN = 6;\nconst SEMANTIC_POSITION = 'POSITION';\nconst SEMANTIC_NORMAL = 'NORMAL';\nconst SEMANTIC_TANGENT = 'TANGENT';\nconst SEMANTIC_BLENDWEIGHT = 'BLENDWEIGHT';\nconst SEMANTIC_BLENDINDICES = 'BLENDINDICES';\nconst SEMANTIC_COLOR = 'COLOR';\nconst SEMANTIC_TEXCOORD = 'TEXCOORD';\nconst SEMANTIC_TEXCOORD0 = 'TEXCOORD0';\nconst SEMANTIC_TEXCOORD1 = 'TEXCOORD1';\nconst SEMANTIC_TEXCOORD2 = 'TEXCOORD2';\nconst SEMANTIC_TEXCOORD3 = 'TEXCOORD3';\nconst SEMANTIC_TEXCOORD4 = 'TEXCOORD4';\nconst SEMANTIC_TEXCOORD5 = 'TEXCOORD5';\nconst SEMANTIC_TEXCOORD6 = 'TEXCOORD6';\nconst SEMANTIC_TEXCOORD7 = 'TEXCOORD7';\nconst SEMANTIC_ATTR0 = 'ATTR0';\nconst SEMANTIC_ATTR1 = 'ATTR1';\nconst SEMANTIC_ATTR2 = 'ATTR2';\nconst SEMANTIC_ATTR3 = 'ATTR3';\nconst SEMANTIC_ATTR4 = 'ATTR4';\nconst SEMANTIC_ATTR5 = 'ATTR5';\nconst SEMANTIC_ATTR6 = 'ATTR6';\nconst SEMANTIC_ATTR7 = 'ATTR7';\nconst SEMANTIC_ATTR8 = 'ATTR8';\nconst SEMANTIC_ATTR9 = 'ATTR9';\nconst SEMANTIC_ATTR10 = 'ATTR10';\nconst SEMANTIC_ATTR11 = 'ATTR11';\nconst SEMANTIC_ATTR12 = 'ATTR12';\nconst SEMANTIC_ATTR13 = 'ATTR13';\nconst SEMANTIC_ATTR14 = 'ATTR14';\nconst SEMANTIC_ATTR15 = 'ATTR15';\nconst SHADERTAG_MATERIAL = 1;\nconst STENCILOP_KEEP = 0;\nconst STENCILOP_ZERO = 1;\nconst STENCILOP_REPLACE = 2;\nconst STENCILOP_INCREMENT = 3;\nconst STENCILOP_INCREMENTWRAP = 4;\nconst STENCILOP_DECREMENT = 5;\nconst STENCILOP_DECREMENTWRAP = 6;\nconst STENCILOP_INVERT = 7;\nconst TEXTURELOCK_NONE = 0;\nconst TEXTURELOCK_READ = 1;\nconst TEXTURELOCK_WRITE = 2;\nconst TEXTURETYPE_DEFAULT = 'default';\nconst TEXTURETYPE_RGBM = 'rgbm';\nconst TEXTURETYPE_RGBE = 'rgbe';\nconst TEXTURETYPE_RGBP = 'rgbp';\nconst TEXTURETYPE_SWIZZLEGGGR = 'swizzleGGGR';\nconst TEXHINT_NONE = 0;\nconst TEXHINT_SHADOWMAP = 1;\nconst TEXHINT_ASSET = 2;\nconst TEXHINT_LIGHTMAP = 3;\nconst TEXTUREDIMENSION_1D = '1d';\nconst TEXTUREDIMENSION_2D = '2d';\nconst TEXTUREDIMENSION_2D_ARRAY = '2d-array';\nconst TEXTUREDIMENSION_CUBE = 'cube';\nconst TEXTUREDIMENSION_CUBE_ARRAY = 'cube-array';\nconst TEXTUREDIMENSION_3D = '3d';\nconst SAMPLETYPE_FLOAT = 0;\nconst SAMPLETYPE_UNFILTERABLE_FLOAT = 1;\nconst SAMPLETYPE_DEPTH = 2;\nconst SAMPLETYPE_INT = 3;\nconst SAMPLETYPE_UINT = 4;\nconst TEXTUREPROJECTION_NONE = 'none';\nconst TEXTUREPROJECTION_CUBE = 'cube';\nconst TEXTUREPROJECTION_EQUIRECT = 'equirect';\nconst TEXTUREPROJECTION_OCTAHEDRAL = 'octahedral';\nconst SHADERLANGUAGE_GLSL = 'glsl';\nconst SHADERLANGUAGE_WGSL = 'wgsl';\nconst TYPE_INT8 = 0;\nconst TYPE_UINT8 = 1;\nconst TYPE_INT16 = 2;\nconst TYPE_UINT16 = 3;\nconst TYPE_INT32 = 4;\nconst TYPE_UINT32 = 5;\nconst TYPE_FLOAT32 = 6;\nconst TYPE_FLOAT16 = 7;\nconst UNIFORMTYPE_BOOL = 0;\nconst UNIFORMTYPE_INT = 1;\nconst UNIFORMTYPE_FLOAT = 2;\nconst UNIFORMTYPE_VEC2 = 3;\nconst UNIFORMTYPE_VEC3 = 4;\nconst UNIFORMTYPE_VEC4 = 5;\nconst UNIFORMTYPE_IVEC2 = 6;\nconst UNIFORMTYPE_IVEC3 = 7;\nconst UNIFORMTYPE_IVEC4 = 8;\nconst UNIFORMTYPE_BVEC2 = 9;\nconst UNIFORMTYPE_BVEC3 = 10;\nconst UNIFORMTYPE_BVEC4 = 11;\nconst UNIFORMTYPE_MAT2 = 12;\nconst UNIFORMTYPE_MAT3 = 13;\nconst UNIFORMTYPE_MAT4 = 14;\nconst UNIFORMTYPE_TEXTURE2D = 15;\nconst UNIFORMTYPE_TEXTURECUBE = 16;\nconst UNIFORMTYPE_FLOATARRAY = 17;\nconst UNIFORMTYPE_TEXTURE2D_SHADOW = 18;\nconst UNIFORMTYPE_TEXTURECUBE_SHADOW = 19;\nconst UNIFORMTYPE_TEXTURE3D = 20;\nconst UNIFORMTYPE_VEC2ARRAY = 21;\nconst UNIFORMTYPE_VEC3ARRAY = 22;\nconst UNIFORMTYPE_VEC4ARRAY = 23;\nconst UNIFORMTYPE_MAT4ARRAY = 24;\nconst UNIFORMTYPE_TEXTURE2D_ARRAY = 25;\nconst UNIFORMTYPE_UINT = 26;\nconst UNIFORMTYPE_UVEC2 = 27;\nconst UNIFORMTYPE_UVEC3 = 28;\nconst UNIFORMTYPE_UVEC4 = 29;\nconst UNIFORMTYPE_INTARRAY = 30;\nconst UNIFORMTYPE_UINTARRAY = 31;\nconst UNIFORMTYPE_BOOLARRAY = 32;\nconst UNIFORMTYPE_IVEC2ARRAY = 33;\nconst UNIFORMTYPE_UVEC2ARRAY = 34;\nconst UNIFORMTYPE_BVEC2ARRAY = 35;\nconst UNIFORMTYPE_IVEC3ARRAY = 36;\nconst UNIFORMTYPE_UVEC3ARRAY = 37;\nconst UNIFORMTYPE_BVEC3ARRAY = 38;\nconst UNIFORMTYPE_IVEC4ARRAY = 39;\nconst UNIFORMTYPE_UVEC4ARRAY = 40;\nconst UNIFORMTYPE_BVEC4ARRAY = 41;\nconst UNIFORMTYPE_ITEXTURE2D = 42;\nconst UNIFORMTYPE_UTEXTURE2D = 43;\nconst UNIFORMTYPE_ITEXTURECUBE = 44;\nconst UNIFORMTYPE_UTEXTURECUBE = 45;\nconst UNIFORMTYPE_ITEXTURE3D = 46;\nconst UNIFORMTYPE_UTEXTURE3D = 47;\nconst UNIFORMTYPE_ITEXTURE2D_ARRAY = 48;\nconst UNIFORMTYPE_UTEXTURE2D_ARRAY = 49;\nconst uniformTypeToName = [\n\t\t'bool',\n\t\t'int',\n\t\t'float',\n\t\t'vec2',\n\t\t'vec3',\n\t\t'vec4',\n\t\t'ivec2',\n\t\t'ivec3',\n\t\t'ivec4',\n\t\t'bvec2',\n\t\t'bvec3',\n\t\t'bvec4',\n\t\t'mat2',\n\t\t'mat3',\n\t\t'mat4',\n\t\t'sampler2D',\n\t\t'samplerCube',\n\t\t'',\n\t\t'sampler2DShadow',\n\t\t'samplerCubeShadow',\n\t\t'sampler3D',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'sampler2DArray',\n\t\t'uint',\n\t\t'uvec2',\n\t\t'uvec3',\n\t\t'uvec4',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'',\n\t\t'isampler2D',\n\t\t'usampler2D',\n\t\t'isamplerCube',\n\t\t'usamplerCube',\n\t\t'isampler3D',\n\t\t'usampler3D',\n\t\t'isampler2DArray',\n\t\t'usampler2DArray'\n];\nconst uniformTypeToNameWGSL = [\n\t\t[\n\t\t\t\t'bool'\n\t\t],\n\t\t[\n\t\t\t\t'i32'\n\t\t],\n\t\t[\n\t\t\t\t'f32'\n\t\t],\n\t\t[\n\t\t\t\t'vec2f',\n\t\t\t\t'vec2<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3f',\n\t\t\t\t'vec3<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4f',\n\t\t\t\t'vec4<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec2i',\n\t\t\t\t'vec2<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3i',\n\t\t\t\t'vec3<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4i',\n\t\t\t\t'vec4<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec2<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'mat2x2f',\n\t\t\t\t'mat2x2<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'mat3x3f',\n\t\t\t\t'mat3x3<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'mat4x4f',\n\t\t\t\t'mat4x4<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_cube<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_depth_2d'\n\t\t],\n\t\t[\n\t\t\t\t'texture_depth_cube'\n\t\t],\n\t\t[\n\t\t\t\t'texture_3d<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<mat4x4<f32>>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d_array<f32>'\n\t\t],\n\t\t[\n\t\t\t\t'u32'\n\t\t],\n\t\t[\n\t\t\t\t'vec2u',\n\t\t\t\t'vec2<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec3u',\n\t\t\t\t'vec3<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'vec4u',\n\t\t\t\t'vec4<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'array<bool>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2i>',\n\t\t\t\t'array<vec2<i32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2u>',\n\t\t\t\t'array<vec2<u32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec2b>',\n\t\t\t\t'array<vec2<bool>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3i>',\n\t\t\t\t'array<vec3<i32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3u>',\n\t\t\t\t'array<vec3<u32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec3b>',\n\t\t\t\t'array<vec3<bool>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4i>',\n\t\t\t\t'array<vec4<i32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4u>',\n\t\t\t\t'array<vec4<u32>>'\n\t\t],\n\t\t[\n\t\t\t\t'array<vec4b>',\n\t\t\t\t'array<vec4<bool>>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_cube<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_cube<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_3d<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_3d<u32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d_array<i32>'\n\t\t],\n\t\t[\n\t\t\t\t'texture_2d_array<u32>'\n\t\t]\n];\nconst uniformTypeToNameMapWGSL = new Map();\nuniformTypeToNameWGSL.forEach((names, index)=>{\n\t\tnames.forEach((name)=>uniformTypeToNameMapWGSL.set(name, index));\n});\nconst uniformTypeToStorage = new Uint8Array([\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_FLOAT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32,\n\t\tTYPE_INT32,\n\t\tTYPE_UINT32\n]);\nconst DEVICETYPE_WEBGL2 = 'webgl2';\nconst DEVICETYPE_WEBGPU = 'webgpu';\nconst DEVICETYPE_NULL = 'null';\nconst SHADERSTAGE_VERTEX = 1;\nconst SHADERSTAGE_FRAGMENT = 2;\nconst SHADERSTAGE_COMPUTE = 4;\nconst DISPLAYFORMAT_LDR = 'ldr';\nconst DISPLAYFORMAT_LDR_SRGB = 'ldr_srgb';\nconst DISPLAYFORMAT_HDR = 'hdr';\nconst TEXPROPERTY_MIN_FILTER = 1;\nconst TEXPROPERTY_MAG_FILTER = 2;\nconst TEXPROPERTY_ADDRESS_U = 4;\nconst TEXPROPERTY_ADDRESS_V = 8;\nconst TEXPROPERTY_ADDRESS_W = 16;\nconst TEXPROPERTY_COMPARE_ON_READ = 32;\nconst TEXPROPERTY_COMPARE_FUNC = 64;\nconst TEXPROPERTY_ANISOTROPY = 128;\nconst TEXPROPERTY_ALL = 255;\nconst BINDGROUP_VIEW = 0;\nconst BINDGROUP_MESH = 1;\nconst BINDGROUP_MESH_UB = 2;\nconst bindGroupNames = [\n\t\t'view',\n\t\t'mesh',\n\t\t'mesh_ub'\n];\nconst UNIFORM_BUFFER_DEFAULT_SLOT_NAME = 'default';\nconst UNUSED_UNIFORM_NAME = '_unused_float_uniform';\nconst typedArrayTypes = [\n\t\tInt8Array,\n\t\tUint8Array,\n\t\tInt16Array,\n\t\tUint16Array,\n\t\tInt32Array,\n\t\tUint32Array,\n\t\tFloat32Array,\n\t\tUint16Array\n];\nconst typedArrayTypesByteSize = [\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t4,\n\t\t4,\n\t\t4,\n\t\t2\n];\nconst vertexTypesNames = [\n\t\t'INT8',\n\t\t'UINT8',\n\t\t'INT16',\n\t\t'UINT16',\n\t\t'INT32',\n\t\t'UINT32',\n\t\t'FLOAT32',\n\t\t'FLOAT16'\n];\nconst typedArrayToType = {\n\t\t'Int8Array': TYPE_INT8,\n\t\t'Uint8Array': TYPE_UINT8,\n\t\t'Int16Array': TYPE_INT16,\n\t\t'Uint16Array': TYPE_UINT16,\n\t\t'Int32Array': TYPE_INT32,\n\t\t'Uint32Array': TYPE_UINT32,\n\t\t'Float32Array': TYPE_FLOAT32\n};\nconst typedArrayIndexFormats = [\n\t\tUint8Array,\n\t\tUint16Array,\n\t\tUint32Array\n];\nconst typedArrayIndexFormatsByteSize = [\n\t\t1,\n\t\t2,\n\t\t4\n];\nconst primitiveGlslToWgslTypeMap = new Map([\n\t\t[\n\t\t\t\t'float',\n\t\t\t\t'f32'\n\t\t],\n\t\t[\n\t\t\t\t'vec2',\n\t\t\t\t'vec2f'\n\t\t],\n\t\t[\n\t\t\t\t'vec3',\n\t\t\t\t'vec3f'\n\t\t],\n\t\t[\n\t\t\t\t'vec4',\n\t\t\t\t'vec4f'\n\t\t],\n\t\t[\n\t\t\t\t'int',\n\t\t\t\t'i32'\n\t\t],\n\t\t[\n\t\t\t\t'ivec2',\n\t\t\t\t'vec2i'\n\t\t],\n\t\t[\n\t\t\t\t'ivec3',\n\t\t\t\t'vec3i'\n\t\t],\n\t\t[\n\t\t\t\t'ivec4',\n\t\t\t\t'vec4i'\n\t\t],\n\t\t[\n\t\t\t\t'uint',\n\t\t\t\t'u32'\n\t\t],\n\t\t[\n\t\t\t\t'uvec2',\n\t\t\t\t'vec2u'\n\t\t],\n\t\t[\n\t\t\t\t'uvec3',\n\t\t\t\t'vec3u'\n\t\t],\n\t\t[\n\t\t\t\t'uvec4',\n\t\t\t\t'vec4u'\n\t\t]\n]);\nconst semanticToLocation = {};\nsemanticToLocation[SEMANTIC_POSITION] = 0;\nsemanticToLocation[SEMANTIC_NORMAL] = 1;\nsemanticToLocation[SEMANTIC_BLENDWEIGHT] = 2;\nsemanticToLocation[SEMANTIC_BLENDINDICES] = 3;\nsemanticToLocation[SEMANTIC_COLOR] = 4;\nsemanticToLocation[SEMANTIC_TEXCOORD0] = 5;\nsemanticToLocation[SEMANTIC_TEXCOORD1] = 6;\nsemanticToLocation[SEMANTIC_TEXCOORD2] = 7;\nsemanticToLocation[SEMANTIC_TEXCOORD3] = 8;\nsemanticToLocation[SEMANTIC_TEXCOORD4] = 9;\nsemanticToLocation[SEMANTIC_TEXCOORD5] = 10;\nsemanticToLocation[SEMANTIC_TEXCOORD6] = 11;\nsemanticToLocation[SEMANTIC_TEXCOORD7] = 12;\nsemanticToLocation[SEMANTIC_TANGENT] = 13;\nsemanticToLocation[SEMANTIC_ATTR0] = 0;\nsemanticToLocation[SEMANTIC_ATTR1] = 1;\nsemanticToLocation[SEMANTIC_ATTR2] = 2;\nsemanticToLocation[SEMANTIC_ATTR3] = 3;\nsemanticToLocation[SEMANTIC_ATTR4] = 4;\nsemanticToLocation[SEMANTIC_ATTR5] = 5;\nsemanticToLocation[SEMANTIC_ATTR6] = 6;\nsemanticToLocation[SEMANTIC_ATTR7] = 7;\nsemanticToLocation[SEMANTIC_ATTR8] = 8;\nsemanticToLocation[SEMANTIC_ATTR9] = 9;\nsemanticToLocation[SEMANTIC_ATTR10] = 10;\nsemanticToLocation[SEMANTIC_ATTR11] = 11;\nsemanticToLocation[SEMANTIC_ATTR12] = 12;\nsemanticToLocation[SEMANTIC_ATTR13] = 13;\nsemanticToLocation[SEMANTIC_ATTR14] = 14;\nsemanticToLocation[SEMANTIC_ATTR15] = 15;\n\nlet id$d = 0;\nclass BindBaseFormat {\n\t\tconstructor(name, visibility){\n\t\t\t\tthis.slot = -1;\n\t\t\t\tthis.scopeId = null;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.visibility = visibility;\n\t\t}\n}\nclass BindUniformBufferFormat extends BindBaseFormat {\n}\nclass BindStorageBufferFormat extends BindBaseFormat {\n\t\tconstructor(name, visibility, readOnly = false){\n\t\t\t\tsuper(name, visibility), this.format = '';\n\t\t\t\tthis.readOnly = readOnly;\n\t\t}\n}\nclass BindTextureFormat extends BindBaseFormat {\n\t\tconstructor(name, visibility, textureDimension = TEXTUREDIMENSION_2D, sampleType = SAMPLETYPE_FLOAT, hasSampler = true, samplerName = null){\n\t\t\t\tsuper(name, visibility);\n\t\t\t\tthis.textureDimension = textureDimension;\n\t\t\t\tthis.sampleType = sampleType;\n\t\t\t\tthis.hasSampler = hasSampler;\n\t\t\t\tthis.samplerName = samplerName ?? `${name}_sampler`;\n\t\t}\n}\nclass BindStorageTextureFormat extends BindBaseFormat {\n\t\tconstructor(name, format = PIXELFORMAT_RGBA8, textureDimension = TEXTUREDIMENSION_2D, write = true, read = false){\n\t\t\t\tsuper(name, SHADERSTAGE_COMPUTE);\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.textureDimension = textureDimension;\n\t\t\t\tthis.write = write;\n\t\t\t\tthis.read = read;\n\t\t}\n}\nclass BindGroupFormat {\n\t\tconstructor(graphicsDevice, formats){\n\t\t\t\tthis.uniformBufferFormats = [];\n\t\t\t\tthis.textureFormats = [];\n\t\t\t\tthis.storageTextureFormats = [];\n\t\t\t\tthis.storageBufferFormats = [];\n\t\t\t\tthis.id = id$d++;\n\t\t\t\tlet slot = 0;\n\t\t\t\tformats.forEach((format)=>{\n\t\t\t\t\t\tformat.slot = slot++;\n\t\t\t\t\t\tif (format instanceof BindTextureFormat && format.hasSampler) {\n\t\t\t\t\t\t\t\tslot++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (format instanceof BindUniformBufferFormat) {\n\t\t\t\t\t\t\t\tthis.uniformBufferFormats.push(format);\n\t\t\t\t\t\t} else if (format instanceof BindTextureFormat) {\n\t\t\t\t\t\t\t\tthis.textureFormats.push(format);\n\t\t\t\t\t\t} else if (format instanceof BindStorageTextureFormat) {\n\t\t\t\t\t\t\t\tthis.storageTextureFormats.push(format);\n\t\t\t\t\t\t} else if (format instanceof BindStorageBufferFormat) {\n\t\t\t\t\t\t\t\tthis.storageBufferFormats.push(format);\n\t\t\t\t\t\t} else ;\n\t\t\t\t});\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tconst scope = graphicsDevice.scope;\n\t\t\t\tthis.bufferFormatsMap = new Map();\n\t\t\t\tthis.uniformBufferFormats.forEach((bf, i)=>this.bufferFormatsMap.set(bf.name, i));\n\t\t\t\tthis.textureFormatsMap = new Map();\n\t\t\t\tthis.textureFormats.forEach((tf, i)=>{\n\t\t\t\t\t\tthis.textureFormatsMap.set(tf.name, i);\n\t\t\t\t\t\ttf.scopeId = scope.resolve(tf.name);\n\t\t\t\t});\n\t\t\t\tthis.storageTextureFormatsMap = new Map();\n\t\t\t\tthis.storageTextureFormats.forEach((tf, i)=>{\n\t\t\t\t\t\tthis.storageTextureFormatsMap.set(tf.name, i);\n\t\t\t\t\t\ttf.scopeId = scope.resolve(tf.name);\n\t\t\t\t});\n\t\t\t\tthis.storageBufferFormatsMap = new Map();\n\t\t\t\tthis.storageBufferFormats.forEach((bf, i)=>{\n\t\t\t\t\t\tthis.storageBufferFormatsMap.set(bf.name, i);\n\t\t\t\t\t\tbf.scopeId = scope.resolve(bf.name);\n\t\t\t\t});\n\t\t\t\tthis.impl = graphicsDevice.createBindGroupFormatImpl(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.impl.destroy();\n\t\t}\n\t\tgetTexture(name) {\n\t\t\t\tconst index = this.textureFormatsMap.get(name);\n\t\t\t\tif (index !== undefined) {\n\t\t\t\t\t\treturn this.textureFormats[index];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tgetStorageTexture(name) {\n\t\t\t\tconst index = this.storageTextureFormatsMap.get(name);\n\t\t\t\tif (index !== undefined) {\n\t\t\t\t\t\treturn this.storageTextureFormats[index];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tloseContext() {}\n}\n\nclass DeviceCache {\n\t\tget(device, onCreate) {\n\t\t\t\tif (!this._cache.has(device)) {\n\t\t\t\t\t\tthis._cache.set(device, onCreate());\n\t\t\t\t\t\tdevice.on('destroy', ()=>{\n\t\t\t\t\t\t\t\tthis.remove(device);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdevice.on('devicelost', ()=>{\n\t\t\t\t\t\t\t\tthis._cache.get(device)?.loseContext?.(device);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this._cache.get(device);\n\t\t}\n\t\tremove(device) {\n\t\t\t\tthis._cache.get(device)?.destroy?.(device);\n\t\t\t\tthis._cache.delete(device);\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._cache = new Map();\n\t\t}\n}\n\nclass TextureUtils {\n\t\tstatic calcLevelDimension(dimension, mipLevel) {\n\t\t\t\treturn Math.max(dimension >> mipLevel, 1);\n\t\t}\n\t\tstatic calcMipLevelsCount(width, height, depth = 1) {\n\t\t\t\treturn 1 + Math.floor(Math.log2(Math.max(width, height, depth)));\n\t\t}\n\t\tstatic calcLevelGpuSize(width, height, depth, format) {\n\t\t\t\tconst formatInfo = pixelFormatInfo.get(format);\n\t\t\t\tconst pixelSize = pixelFormatInfo.get(format)?.size ?? 0;\n\t\t\t\tif (pixelSize > 0) {\n\t\t\t\t\t\treturn width * height * depth * pixelSize;\n\t\t\t\t}\n\t\t\t\tconst blockSize = formatInfo.blockSize ?? 0;\n\t\t\t\tlet blockWidth = Math.floor((width + 3) / 4);\n\t\t\t\tconst blockHeight = Math.floor((height + 3) / 4);\n\t\t\t\tconst blockDepth = Math.floor((depth + 3) / 4);\n\t\t\t\tif (format === PIXELFORMAT_PVRTC_2BPP_RGB_1 || format === PIXELFORMAT_PVRTC_2BPP_RGBA_1) {\n\t\t\t\t\t\tblockWidth = Math.max(Math.floor(blockWidth / 2), 1);\n\t\t\t\t}\n\t\t\t\treturn blockWidth * blockHeight * blockDepth * blockSize;\n\t\t}\n\t\tstatic calcGpuSize(width, height, depth, format, mipmaps, cubemap) {\n\t\t\t\tlet result = 0;\n\t\t\t\twhile(1){\n\t\t\t\t\t\tresult += TextureUtils.calcLevelGpuSize(width, height, depth, format);\n\t\t\t\t\t\tif (!mipmaps || width === 1 && height === 1 && depth === 1) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twidth = Math.max(width >> 1, 1);\n\t\t\t\t\t\theight = Math.max(height >> 1, 1);\n\t\t\t\t\t\tdepth = Math.max(depth >> 1, 1);\n\t\t\t\t}\n\t\t\t\treturn result * (cubemap ? 6 : 1);\n\t\t}\n}\n\nlet id$c = 0;\nclass Texture {\n\t\tconstructor(graphicsDevice, options = {}){\n\t\t\t\tthis._gpuSize = 0;\n\t\t\t\tthis.id = id$c++;\n\t\t\t\tthis._invalid = false;\n\t\t\t\tthis._lockedLevel = -1;\n\t\t\t\tthis._lockedMode = TEXTURELOCK_NONE;\n\t\t\t\tthis.renderVersionDirty = 0;\n\t\t\t\tthis._storage = false;\n\t\t\t\tthis._numLevels = 0;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.name = options.name ?? '';\n\t\t\t\tthis._width = Math.floor(options.width ?? 4);\n\t\t\t\tthis._height = Math.floor(options.height ?? 4);\n\t\t\t\tthis._format = options.format ?? PIXELFORMAT_RGBA8;\n\t\t\t\tthis._compressed = isCompressedPixelFormat(this._format);\n\t\t\t\tthis._integerFormat = isIntegerPixelFormat(this._format);\n\t\t\t\tif (this._integerFormat) {\n\t\t\t\t\t\toptions.minFilter = FILTER_NEAREST;\n\t\t\t\t\t\toptions.magFilter = FILTER_NEAREST;\n\t\t\t\t}\n\t\t\t\tthis._volume = options.volume ?? false;\n\t\t\t\tthis._depth = Math.floor(options.depth ?? 1);\n\t\t\t\tthis._arrayLength = Math.floor(options.arrayLength ?? 0);\n\t\t\t\tthis._storage = options.storage ?? false;\n\t\t\t\tthis._cubemap = options.cubemap ?? false;\n\t\t\t\tthis._flipY = options.flipY ?? false;\n\t\t\t\tthis._premultiplyAlpha = options.premultiplyAlpha ?? false;\n\t\t\t\tthis._mipmaps = options.mipmaps ?? true;\n\t\t\t\tthis._numLevelsRequested = options.numLevels;\n\t\t\t\tif (options.numLevels !== undefined) {\n\t\t\t\t\t\tthis._numLevels = options.numLevels;\n\t\t\t\t}\n\t\t\t\tthis._updateNumLevel();\n\t\t\t\tthis._minFilter = options.minFilter ?? FILTER_LINEAR_MIPMAP_LINEAR;\n\t\t\t\tthis._magFilter = options.magFilter ?? FILTER_LINEAR;\n\t\t\t\tthis._anisotropy = options.anisotropy ?? 1;\n\t\t\t\tthis._addressU = options.addressU ?? ADDRESS_REPEAT;\n\t\t\t\tthis._addressV = options.addressV ?? ADDRESS_REPEAT;\n\t\t\t\tthis._addressW = options.addressW ?? ADDRESS_REPEAT;\n\t\t\t\tthis._compareOnRead = options.compareOnRead ?? false;\n\t\t\t\tthis._compareFunc = options.compareFunc ?? FUNC_LESS;\n\t\t\t\tthis._type = options.type ?? TEXTURETYPE_DEFAULT;\n\t\t\t\tthis.projection = TEXTUREPROJECTION_NONE;\n\t\t\t\tif (this._cubemap) {\n\t\t\t\t\t\tthis.projection = TEXTUREPROJECTION_CUBE;\n\t\t\t\t} else if (options.projection && options.projection !== TEXTUREPROJECTION_CUBE) {\n\t\t\t\t\t\tthis.projection = options.projection;\n\t\t\t\t}\n\t\t\t\tthis._levels = options.levels;\n\t\t\t\tconst upload = !!options.levels;\n\t\t\t\tif (!this._levels) {\n\t\t\t\t\t\tthis._clearLevels();\n\t\t\t\t}\n\t\t\t\tthis.recreateImpl(upload);\n\t\t\t\tgraphicsDevice.textures.push(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device) {\n\t\t\t\t\t\tconst idx = device.textures.indexOf(this);\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tdevice.textures.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdevice.scope.removeValue(this);\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this._gpuSize);\n\t\t\t\t\t\tthis._levels = null;\n\t\t\t\t\t\tthis.device = null;\n\t\t\t\t}\n\t\t}\n\t\trecreateImpl(upload = true) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tthis.impl?.destroy(device);\n\t\t\t\tthis.impl = null;\n\t\t\t\tthis.impl = device.createTextureImpl(this);\n\t\t\t\tthis.dirtyAll();\n\t\t\t\tif (upload) {\n\t\t\t\t\t\tthis.upload();\n\t\t\t\t}\n\t\t}\n\t\t_clearLevels() {\n\t\t\t\tthis._levels = this._cubemap ? [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t] : [\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t}\n\t\tresize(width, height, depth = 1) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this._gpuSize);\n\t\t\t\tthis._gpuSize = 0;\n\t\t\t\tthis.impl.destroy(device);\n\t\t\t\tthis._clearLevels();\n\t\t\t\tthis._width = Math.floor(width);\n\t\t\t\tthis._height = Math.floor(height);\n\t\t\t\tthis._depth = Math.floor(depth);\n\t\t\t\tthis._updateNumLevel();\n\t\t\t\tthis.impl = device.createTextureImpl(this);\n\t\t\t\tthis.dirtyAll();\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t\t\tthis.dirtyAll();\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.tex += size;\n\t\t}\n\t\tpropertyChanged(flag) {\n\t\t\t\tthis.impl.propertyChanged(flag);\n\t\t\t\tthis.renderVersionDirty = this.device.renderVersion;\n\t\t}\n\t\t_updateNumLevel() {\n\t\t\t\tconst maxLevels = this.mipmaps ? TextureUtils.calcMipLevelsCount(this.width, this.height) : 1;\n\t\t\t\tconst requestedLevels = this._numLevelsRequested;\n\t\t\t\tthis._numLevels = Math.min(requestedLevels ?? maxLevels, maxLevels);\n\t\t\t\tthis._mipmaps = this._numLevels > 1;\n\t\t}\n\t\tget lockedMode() {\n\t\t\t\treturn this._lockedMode;\n\t\t}\n\t\tset minFilter(v) {\n\t\t\t\tif (this._minFilter !== v) {\n\t\t\t\t\t\tif (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\t\t\t\t\tthis._minFilter = v;\n\t\t\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_MIN_FILTER);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget minFilter() {\n\t\t\t\treturn this._minFilter;\n\t\t}\n\t\tset magFilter(v) {\n\t\t\t\tif (this._magFilter !== v) {\n\t\t\t\t\t\tif (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\t\t\t\t\tthis._magFilter = v;\n\t\t\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_MAG_FILTER);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget magFilter() {\n\t\t\t\treturn this._magFilter;\n\t\t}\n\t\tset addressU(v) {\n\t\t\t\tif (this._addressU !== v) {\n\t\t\t\t\t\tthis._addressU = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ADDRESS_U);\n\t\t\t\t}\n\t\t}\n\t\tget addressU() {\n\t\t\t\treturn this._addressU;\n\t\t}\n\t\tset addressV(v) {\n\t\t\t\tif (this._addressV !== v) {\n\t\t\t\t\t\tthis._addressV = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ADDRESS_V);\n\t\t\t\t}\n\t\t}\n\t\tget addressV() {\n\t\t\t\treturn this._addressV;\n\t\t}\n\t\tset addressW(addressW) {\n\t\t\t\tif (!this._volume) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (addressW !== this._addressW) {\n\t\t\t\t\t\tthis._addressW = addressW;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ADDRESS_W);\n\t\t\t\t}\n\t\t}\n\t\tget addressW() {\n\t\t\t\treturn this._addressW;\n\t\t}\n\t\tset compareOnRead(v) {\n\t\t\t\tif (this._compareOnRead !== v) {\n\t\t\t\t\t\tthis._compareOnRead = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_COMPARE_ON_READ);\n\t\t\t\t}\n\t\t}\n\t\tget compareOnRead() {\n\t\t\t\treturn this._compareOnRead;\n\t\t}\n\t\tset compareFunc(v) {\n\t\t\t\tif (this._compareFunc !== v) {\n\t\t\t\t\t\tthis._compareFunc = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_COMPARE_FUNC);\n\t\t\t\t}\n\t\t}\n\t\tget compareFunc() {\n\t\t\t\treturn this._compareFunc;\n\t\t}\n\t\tset anisotropy(v) {\n\t\t\t\tif (this._anisotropy !== v) {\n\t\t\t\t\t\tthis._anisotropy = v;\n\t\t\t\t\t\tthis.propertyChanged(TEXPROPERTY_ANISOTROPY);\n\t\t\t\t}\n\t\t}\n\t\tget anisotropy() {\n\t\t\t\treturn this._anisotropy;\n\t\t}\n\t\tset mipmaps(v) {\n\t\t\t\tif (this._mipmaps !== v) {\n\t\t\t\t\t\tif (this.device.isWebGPU) ; else if (isIntegerPixelFormat(this._format)) ; else {\n\t\t\t\t\t\t\t\tthis._mipmaps = v;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (v) this._needsMipmapsUpload = true;\n\t\t\t\t}\n\t\t}\n\t\tget mipmaps() {\n\t\t\t\treturn this._mipmaps;\n\t\t}\n\t\tget numLevels() {\n\t\t\t\treturn this._numLevels;\n\t\t}\n\t\tget storage() {\n\t\t\t\treturn this._storage;\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height;\n\t\t}\n\t\tget depth() {\n\t\t\t\treturn this._depth;\n\t\t}\n\t\tget format() {\n\t\t\t\treturn this._format;\n\t\t}\n\t\tget cubemap() {\n\t\t\t\treturn this._cubemap;\n\t\t}\n\t\tget gpuSize() {\n\t\t\t\tconst mips = this.pot && this._mipmaps && !(this._compressed && this._levels.length === 1);\n\t\t\t\treturn TextureUtils.calcGpuSize(this._width, this._height, this._depth, this._format, mips, this._cubemap);\n\t\t}\n\t\tget array() {\n\t\t\t\treturn this._arrayLength > 0;\n\t\t}\n\t\tget arrayLength() {\n\t\t\t\treturn this._arrayLength;\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type !== value) {\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tthis.device._shadersDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset srgb(value) {\n\t\t\t\tconst currentSrgb = isSrgbPixelFormat(this.format);\n\t\t\t\tif (value !== currentSrgb) {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tconst srgbFormat = pixelFormatLinearToGamma(this.format);\n\t\t\t\t\t\t\t\tif (this._format !== srgbFormat) {\n\t\t\t\t\t\t\t\t\t\tthis._format = srgbFormat;\n\t\t\t\t\t\t\t\t\t\tthis.recreateImpl();\n\t\t\t\t\t\t\t\t\t\tthis.device._shadersDirty = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst linearFormat = pixelFormatGammaToLinear(this.format);\n\t\t\t\t\t\t\t\tif (this._format !== linearFormat) {\n\t\t\t\t\t\t\t\t\t\tthis._format = linearFormat;\n\t\t\t\t\t\t\t\t\t\tthis.recreateImpl();\n\t\t\t\t\t\t\t\t\t\tthis.device._shadersDirty = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget srgb() {\n\t\t\t\treturn isSrgbPixelFormat(this.format);\n\t\t}\n\t\tset flipY(flipY) {\n\t\t\t\tif (this._flipY !== flipY) {\n\t\t\t\t\t\tthis._flipY = flipY;\n\t\t\t\t\t\tthis._needsUpload = true;\n\t\t\t\t}\n\t\t}\n\t\tget flipY() {\n\t\t\t\treturn this._flipY;\n\t\t}\n\t\tset premultiplyAlpha(premultiplyAlpha) {\n\t\t\t\tif (this._premultiplyAlpha !== premultiplyAlpha) {\n\t\t\t\t\t\tthis._premultiplyAlpha = premultiplyAlpha;\n\t\t\t\t\t\tthis._needsUpload = true;\n\t\t\t\t}\n\t\t}\n\t\tget premultiplyAlpha() {\n\t\t\t\treturn this._premultiplyAlpha;\n\t\t}\n\t\tget pot() {\n\t\t\t\treturn math.powerOfTwo(this._width) && math.powerOfTwo(this._height);\n\t\t}\n\t\tget encoding() {\n\t\t\t\tswitch(this.type){\n\t\t\t\t\t\tcase TEXTURETYPE_RGBM:\n\t\t\t\t\t\t\t\treturn 'rgbm';\n\t\t\t\t\t\tcase TEXTURETYPE_RGBE:\n\t\t\t\t\t\t\t\treturn 'rgbe';\n\t\t\t\t\t\tcase TEXTURETYPE_RGBP:\n\t\t\t\t\t\t\t\treturn 'rgbp';\n\t\t\t\t}\n\t\t\t\treturn requiresManualGamma(this.format) ? 'srgb' : 'linear';\n\t\t}\n\t\tdirtyAll() {\n\t\t\t\tthis._levelsUpdated = this._cubemap ? [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue,\n\t\t\t\t\t\t\t\ttrue\n\t\t\t\t\t\t]\n\t\t\t\t] : [\n\t\t\t\t\t\ttrue\n\t\t\t\t];\n\t\t\t\tthis._needsUpload = true;\n\t\t\t\tthis._needsMipmapsUpload = this._mipmaps;\n\t\t\t\tthis._mipmapsUploaded = false;\n\t\t\t\tthis.propertyChanged(TEXPROPERTY_ALL);\n\t\t}\n\t\tlock(options = {}) {\n\t\t\t\toptions.level ??= 0;\n\t\t\t\toptions.face ??= 0;\n\t\t\t\toptions.mode ??= TEXTURELOCK_WRITE;\n\t\t\t\tthis._lockedMode = options.mode;\n\t\t\t\tthis._lockedLevel = options.level;\n\t\t\t\tconst levels = this.cubemap ? this._levels[options.face] : this._levels;\n\t\t\t\tif (levels[options.level] === null) {\n\t\t\t\t\t\tconst width = Math.max(1, this._width >> options.level);\n\t\t\t\t\t\tconst height = Math.max(1, this._height >> options.level);\n\t\t\t\t\t\tconst depth = Math.max(1, this._depth >> options.level);\n\t\t\t\t\t\tconst data = new ArrayBuffer(TextureUtils.calcLevelGpuSize(width, height, depth, this._format));\n\t\t\t\t\t\tlevels[options.level] = new (getPixelFormatArrayType(this._format))(data);\n\t\t\t\t}\n\t\t\t\treturn levels[options.level];\n\t\t}\n\t\tsetSource(source, mipLevel = 0) {\n\t\t\t\tlet invalid = false;\n\t\t\t\tlet width, height;\n\t\t\t\tif (this._cubemap) {\n\t\t\t\t\t\tif (source[0]) {\n\t\t\t\t\t\t\t\twidth = source[0].width || 0;\n\t\t\t\t\t\t\t\theight = source[0].height || 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\tconst face = source[i];\n\t\t\t\t\t\t\t\t\t\tif (!face || face.width !== width || face.height !== height || !this.device._isBrowserInterface(face)) {\n\t\t\t\t\t\t\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!invalid) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\tif (this._levels[mipLevel][i] !== source[i]) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel][i] = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.device._isBrowserInterface(source)) {\n\t\t\t\t\t\t\t\tinvalid = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!invalid) {\n\t\t\t\t\t\t\t\tif (source !== this._levels[mipLevel]) {\n\t\t\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (source instanceof HTMLVideoElement) {\n\t\t\t\t\t\t\t\t\t\twidth = source.videoWidth;\n\t\t\t\t\t\t\t\t\t\theight = source.videoHeight;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\twidth = source.width;\n\t\t\t\t\t\t\t\t\t\theight = source.height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (invalid) {\n\t\t\t\t\t\tthis._width = 4;\n\t\t\t\t\t\tthis._height = 4;\n\t\t\t\t\t\tif (this._cubemap) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\tthis._levels[mipLevel][i] = null;\n\t\t\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel][i] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._levels[mipLevel] = null;\n\t\t\t\t\t\t\t\tthis._levelsUpdated[mipLevel] = true;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\tthis._width = width;\n\t\t\t\t\t\t\t\tthis._height = height;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._levels[mipLevel] = source;\n\t\t\t\t}\n\t\t\t\tif (this._invalid !== invalid || !invalid) {\n\t\t\t\t\t\tthis._invalid = invalid;\n\t\t\t\t\t\tthis.upload();\n\t\t\t\t}\n\t\t}\n\t\tgetSource(mipLevel = 0) {\n\t\t\t\treturn this._levels[mipLevel];\n\t\t}\n\t\tunlock() {\n\t\t\t\tif (this._lockedMode === TEXTURELOCK_NONE) ;\n\t\t\t\tif (this._lockedMode === TEXTURELOCK_WRITE) {\n\t\t\t\t\t\tthis.upload();\n\t\t\t\t}\n\t\t\t\tthis._lockedLevel = -1;\n\t\t\t\tthis._lockedMode = TEXTURELOCK_NONE;\n\t\t}\n\t\tupload() {\n\t\t\t\tthis._needsUpload = true;\n\t\t\t\tthis._needsMipmapsUpload = this._mipmaps;\n\t\t\t\tthis.impl.uploadImmediate?.(this.device, this);\n\t\t}\n\t\tread(x, y, width, height, options = {}) {\n\t\t\t\treturn this.impl.read?.(x, y, width, height, options);\n\t\t}\n\t\twrite(x, y, width, height, data) {\n\t\t\t\treturn this.impl.write?.(x, y, width, height, data);\n\t\t}\n}\n\nconst textureData = {\n\t\twhite: [\n\t\t\t\t255,\n\t\t\t\t255,\n\t\t\t\t255,\n\t\t\t\t255\n\t\t],\n\t\tgray: [\n\t\t\t\t128,\n\t\t\t\t128,\n\t\t\t\t128,\n\t\t\t\t255\n\t\t],\n\t\tblack: [\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t255\n\t\t],\n\t\tnormal: [\n\t\t\t\t128,\n\t\t\t\t128,\n\t\t\t\t255,\n\t\t\t\t255\n\t\t],\n\t\tpink: [\n\t\t\t\t255,\n\t\t\t\t128,\n\t\t\t\t255,\n\t\t\t\t255\n\t\t]\n};\nclass BuiltInTextures {\n\t\tdestroy() {\n\t\t\t\tthis.map.forEach((texture)=>{\n\t\t\t\t\t\ttexture.destroy();\n\t\t\t\t});\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t}\n}\nconst deviceCache$3 = new DeviceCache();\nconst getBuiltInTexture = (device, name)=>{\n\t\tconst cache = deviceCache$3.get(device, ()=>{\n\t\t\t\treturn new BuiltInTextures();\n\t\t});\n\t\tif (!cache.map.has(name)) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: `built-in-texture-${name}`,\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8\n\t\t\t\t});\n\t\t\t\tconst pixels = texture.lock();\n\t\t\t\tconst data = textureData[name];\n\t\t\t\tpixels.set(data);\n\t\t\t\ttexture.unlock();\n\t\t\t\tcache.map.set(name, texture);\n\t\t}\n\t\treturn cache.map.get(name);\n};\n\nlet id$b = 0;\nclass DynamicBindGroup {\n\t\tconstructor(){\n\t\t\t\tthis.offsets = [];\n\t\t}\n}\nclass BindGroup {\n\t\tconstructor(graphicsDevice, format, defaultUniformBuffer){\n\t\t\t\tthis.renderVersionUpdated = -1;\n\t\t\t\tthis.uniformBufferOffsets = [];\n\t\t\t\tthis.id = id$b++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.dirty = true;\n\t\t\t\tthis.impl = graphicsDevice.createBindGroupImpl(this);\n\t\t\t\tthis.textures = [];\n\t\t\t\tthis.storageTextures = [];\n\t\t\t\tthis.storageBuffers = [];\n\t\t\t\tthis.uniformBuffers = [];\n\t\t\t\tthis.defaultUniformBuffer = defaultUniformBuffer;\n\t\t\t\tif (defaultUniformBuffer) {\n\t\t\t\t\t\tthis.setUniformBuffer(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, defaultUniformBuffer);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.impl.destroy();\n\t\t\t\tthis.impl = null;\n\t\t\t\tthis.format = null;\n\t\t\t\tthis.defaultUniformBuffer = null;\n\t\t}\n\t\tsetUniformBuffer(name, uniformBuffer) {\n\t\t\t\tconst index = this.format.bufferFormatsMap.get(name);\n\t\t\t\tif (this.uniformBuffers[index] !== uniformBuffer) {\n\t\t\t\t\t\tthis.uniformBuffers[index] = uniformBuffer;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tsetStorageBuffer(name, storageBuffer) {\n\t\t\t\tconst index = this.format.storageBufferFormatsMap.get(name);\n\t\t\t\tif (this.storageBuffers[index] !== storageBuffer) {\n\t\t\t\t\t\tthis.storageBuffers[index] = storageBuffer;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tsetTexture(name, texture) {\n\t\t\t\tconst index = this.format.textureFormatsMap.get(name);\n\t\t\t\tif (this.textures[index] !== texture) {\n\t\t\t\t\t\tthis.textures[index] = texture;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t} else if (this.renderVersionUpdated < texture.renderVersionDirty) {\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tsetStorageTexture(name, texture) {\n\t\t\t\tconst index = this.format.storageTextureFormatsMap.get(name);\n\t\t\t\tif (this.storageTextures[index] !== texture) {\n\t\t\t\t\t\tthis.storageTextures[index] = texture;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t} else if (this.renderVersionUpdated < texture.renderVersionDirty) {\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tupdateUniformBuffers() {\n\t\t\t\tfor(let i = 0; i < this.uniformBuffers.length; i++){\n\t\t\t\t\t\tthis.uniformBuffers[i].update();\n\t\t\t\t}\n\t\t}\n\t\tupdate() {\n\t\t\t\tconst { textureFormats, storageTextureFormats, storageBufferFormats } = this.format;\n\t\t\t\tfor(let i = 0; i < textureFormats.length; i++){\n\t\t\t\t\t\tconst textureFormat = textureFormats[i];\n\t\t\t\t\t\tlet value = textureFormat.scopeId.value;\n\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\t\tif (textureFormat.name === 'uSceneDepthMap') {\n\t\t\t\t\t\t\t\t\t\tvalue = getBuiltInTexture(this.device, 'white');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (textureFormat.name === 'uSceneColorMap') {\n\t\t\t\t\t\t\t\t\t\tvalue = getBuiltInTexture(this.device, 'pink');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!value) {\n\t\t\t\t\t\t\t\t\t\tvalue = getBuiltInTexture(this.device, 'pink');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setTexture(textureFormat.name, value);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < storageTextureFormats.length; i++){\n\t\t\t\t\t\tconst storageTextureFormat = storageTextureFormats[i];\n\t\t\t\t\t\tconst value = storageTextureFormat.scopeId.value;\n\t\t\t\t\t\tthis.setStorageTexture(storageTextureFormat.name, value);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < storageBufferFormats.length; i++){\n\t\t\t\t\t\tconst storageBufferFormat = storageBufferFormats[i];\n\t\t\t\t\t\tconst value = storageBufferFormat.scopeId.value;\n\t\t\t\t\t\tthis.setStorageBuffer(storageBufferFormat.name, value);\n\t\t\t\t}\n\t\t\t\tthis.uniformBufferOffsets.length = this.uniformBuffers.length;\n\t\t\t\tfor(let i = 0; i < this.uniformBuffers.length; i++){\n\t\t\t\t\t\tconst uniformBuffer = this.uniformBuffers[i];\n\t\t\t\t\t\tthis.uniformBufferOffsets[i] = uniformBuffer.offset;\n\t\t\t\t\t\tif (this.renderVersionUpdated < uniformBuffer.renderVersionDirty) {\n\t\t\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.dirty) {\n\t\t\t\t\t\tthis.dirty = false;\n\t\t\t\t\t\tthis.renderVersionUpdated = this.device.renderVersion;\n\t\t\t\t\t\tthis.impl.update(this);\n\t\t\t\t}\n\t\t}\n}\n\nconst BitPacking = {\n\t\tset (storage, value, shift, mask = 1) {\n\t\t\t\tconst data = storage & ~(mask << shift);\n\t\t\t\treturn data | value << shift;\n\t\t},\n\t\tget (storage, shift, mask = 1) {\n\t\t\t\treturn storage >> shift & mask;\n\t\t},\n\t\tall (storage, shift, mask = 1) {\n\t\t\t\tconst shifted = mask << shift;\n\t\t\t\treturn (storage & shifted) === shifted;\n\t\t},\n\t\tany (storage, shift, mask = 1) {\n\t\t\t\treturn (storage & mask << shift) !== 0;\n\t\t}\n};\n\nconst opMask = 0b111;\nconst factorMask = 0b1111;\nconst colorOpShift = 0;\nconst colorSrcFactorShift = 3;\nconst colorDstFactorShift = 7;\nconst alphaOpShift = 11;\nconst alphaSrcFactorShift = 14;\nconst alphaDstFactorShift = 18;\nconst redWriteShift = 22;\nconst greenWriteShift = 23;\nconst blueWriteShift = 24;\nconst alphaWriteShift = 25;\nconst blendShift = 26;\nconst allWriteMasks = 0b1111;\nconst allWriteShift = redWriteShift;\nclass BlendState {\n\t\tconstructor(blend = false, colorOp = BLENDEQUATION_ADD, colorSrcFactor = BLENDMODE_ONE, colorDstFactor = BLENDMODE_ZERO, alphaOp, alphaSrcFactor, alphaDstFactor, redWrite = true, greenWrite = true, blueWrite = true, alphaWrite = true){\n\t\t\t\tthis.target0 = 0;\n\t\t\t\tthis.setColorBlend(colorOp, colorSrcFactor, colorDstFactor);\n\t\t\t\tthis.setAlphaBlend(alphaOp ?? colorOp, alphaSrcFactor ?? colorSrcFactor, alphaDstFactor ?? colorDstFactor);\n\t\t\t\tthis.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite);\n\t\t\t\tthis.blend = blend;\n\t\t}\n\t\tset blend(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, blendShift);\n\t\t}\n\t\tget blend() {\n\t\t\t\treturn BitPacking.all(this.target0, blendShift);\n\t\t}\n\t\tsetColorBlend(op, srcFactor, dstFactor) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, op, colorOpShift, opMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, srcFactor, colorSrcFactorShift, factorMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, dstFactor, colorDstFactorShift, factorMask);\n\t\t}\n\t\tsetAlphaBlend(op, srcFactor, dstFactor) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, op, alphaOpShift, opMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, srcFactor, alphaSrcFactorShift, factorMask);\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, dstFactor, alphaDstFactorShift, factorMask);\n\t\t}\n\t\tsetColorWrite(redWrite, greenWrite, blueWrite, alphaWrite) {\n\t\t\t\tthis.redWrite = redWrite;\n\t\t\t\tthis.greenWrite = greenWrite;\n\t\t\t\tthis.blueWrite = blueWrite;\n\t\t\t\tthis.alphaWrite = alphaWrite;\n\t\t}\n\t\tget colorOp() {\n\t\t\t\treturn BitPacking.get(this.target0, colorOpShift, opMask);\n\t\t}\n\t\tget colorSrcFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, colorSrcFactorShift, factorMask);\n\t\t}\n\t\tget colorDstFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, colorDstFactorShift, factorMask);\n\t\t}\n\t\tget alphaOp() {\n\t\t\t\treturn BitPacking.get(this.target0, alphaOpShift, opMask);\n\t\t}\n\t\tget alphaSrcFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, alphaSrcFactorShift, factorMask);\n\t\t}\n\t\tget alphaDstFactor() {\n\t\t\t\treturn BitPacking.get(this.target0, alphaDstFactorShift, factorMask);\n\t\t}\n\t\tset redWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, redWriteShift);\n\t\t}\n\t\tget redWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, redWriteShift);\n\t\t}\n\t\tset greenWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, greenWriteShift);\n\t\t}\n\t\tget greenWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, greenWriteShift);\n\t\t}\n\t\tset blueWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, blueWriteShift);\n\t\t}\n\t\tget blueWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, blueWriteShift);\n\t\t}\n\t\tset alphaWrite(value) {\n\t\t\t\tthis.target0 = BitPacking.set(this.target0, value ? 1 : 0, alphaWriteShift);\n\t\t}\n\t\tget alphaWrite() {\n\t\t\t\treturn BitPacking.all(this.target0, alphaWriteShift);\n\t\t}\n\t\tget allWrite() {\n\t\t\t\treturn BitPacking.get(this.target0, allWriteShift, allWriteMasks);\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.target0 = rhs.target0;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\tget key() {\n\t\t\t\treturn this.target0;\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.target0 === rhs.target0;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.NOBLEND = Object.freeze(new BlendState());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.NOWRITE = Object.freeze(new BlendState(undefined, undefined, undefined, undefined, undefined, undefined, undefined, false, false, false, false));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ALPHABLEND = Object.freeze(new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ADDBLEND = Object.freeze(new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE));\n\t\t}\n}\n\nclass StringIds {\n\t\tget(name) {\n\t\t\t\tlet value = this.map.get(name);\n\t\t\t\tif (value === undefined) {\n\t\t\t\t\t\tvalue = this.id++;\n\t\t\t\t\t\tthis.map.set(name, value);\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t\t\tthis.id = 0;\n\t\t}\n}\n\nconst stringIds$4 = new StringIds();\nconst funcMask = 0b111;\nconst funcShift = 0;\nconst writeShift = 3;\nclass DepthState {\n\t\tconstructor(func = FUNC_LESSEQUAL, write = true){\n\t\t\t\tthis.data = 0;\n\t\t\t\tthis._depthBias = 0;\n\t\t\t\tthis._depthBiasSlope = 0;\n\t\t\t\tthis.key = 0;\n\t\t\t\tthis.func = func;\n\t\t\t\tthis.write = write;\n\t\t}\n\t\tset test(value) {\n\t\t\t\tthis.func = value ? FUNC_LESSEQUAL : FUNC_ALWAYS;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget test() {\n\t\t\t\treturn this.func !== FUNC_ALWAYS;\n\t\t}\n\t\tset write(value) {\n\t\t\t\tthis.data = BitPacking.set(this.data, value ? 1 : 0, writeShift);\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget write() {\n\t\t\t\treturn BitPacking.all(this.data, writeShift);\n\t\t}\n\t\tset func(value) {\n\t\t\t\tthis.data = BitPacking.set(this.data, value, funcShift, funcMask);\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget func() {\n\t\t\t\treturn BitPacking.get(this.data, funcShift, funcMask);\n\t\t}\n\t\tset depthBias(value) {\n\t\t\t\tthis._depthBias = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget depthBias() {\n\t\t\t\treturn this._depthBias;\n\t\t}\n\t\tset depthBiasSlope(value) {\n\t\t\t\tthis._depthBiasSlope = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget depthBiasSlope() {\n\t\t\t\treturn this._depthBiasSlope;\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis.data = rhs.data;\n\t\t\t\tthis._depthBias = rhs._depthBias;\n\t\t\t\tthis._depthBiasSlope = rhs._depthBiasSlope;\n\t\t\t\tthis.key = rhs.key;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tconst { data, _depthBias, _depthBiasSlope } = this;\n\t\t\t\tconst key = `${data}-${_depthBias}-${_depthBiasSlope}`;\n\t\t\t\tthis.key = stringIds$4.get(key);\n\t\t}\n\t\tequals(rhs) {\n\t\t\t\treturn this.key === rhs.key;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT = Object.freeze(new DepthState());\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.NODEPTH = Object.freeze(new DepthState(FUNC_ALWAYS, false));\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.WRITEDEPTH = Object.freeze(new DepthState(FUNC_ALWAYS, true));\n\t\t}\n}\n\nclass Version {\n\t\tequals(other) {\n\t\t\t\treturn this.globalId === other.globalId && this.revision === other.revision;\n\t\t}\n\t\tcopy(other) {\n\t\t\t\tthis.globalId = other.globalId;\n\t\t\t\tthis.revision = other.revision;\n\t\t}\n\t\treset() {\n\t\t\t\tthis.globalId = 0;\n\t\t\t\tthis.revision = 0;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.globalId = 0;\n\t\t\t\tthis.revision = 0;\n\t\t}\n}\n\nlet idCounter = 0;\nclass VersionedObject {\n\t\tconstructor(){\n\t\t\t\tidCounter++;\n\t\t\t\tthis.version = new Version();\n\t\t\t\tthis.version.globalId = idCounter;\n\t\t}\n\t\tincrement() {\n\t\t\t\tthis.version.revision++;\n\t\t}\n}\n\nclass ScopeId {\n\t\tconstructor(name){\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.value = null;\n\t\t\t\tthis.versionObject = new VersionedObject();\n\t\t}\n\t\ttoJSON(key) {\n\t\t\t\treturn undefined;\n\t\t}\n\t\tsetValue(value) {\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.versionObject.increment();\n\t\t}\n\t\tgetValue() {\n\t\t\t\treturn this.value;\n\t\t}\n}\n\nclass ScopeSpace {\n\t\tconstructor(name){\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.variables = new Map();\n\t\t}\n\t\tresolve(name) {\n\t\t\t\tif (!this.variables.has(name)) {\n\t\t\t\t\t\tthis.variables.set(name, new ScopeId(name));\n\t\t\t\t}\n\t\t\t\treturn this.variables.get(name);\n\t\t}\n\t\tremoveValue(value) {\n\t\t\t\tfor(const uniformName in this.variables){\n\t\t\t\t\t\tconst uniform = this.variables[uniformName];\n\t\t\t\t\t\tif (uniform.value === value) {\n\t\t\t\t\t\t\t\tuniform.value = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nlet id$a = 0;\nclass VertexBuffer {\n\t\tconstructor(graphicsDevice, format, numVertices, options){\n\t\t\t\tthis.usage = BUFFER_STATIC;\n\t\t\t\tthis.usage = options?.usage ?? BUFFER_STATIC;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.numVertices = numVertices;\n\t\t\t\tthis.id = id$a++;\n\t\t\t\tthis.impl = graphicsDevice.createVertexBufferImpl(this, format, options);\n\t\t\t\tthis.numBytes = format.verticesByteSize ? format.verticesByteSize : format.size * numVertices;\n\t\t\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes);\n\t\t\t\tconst initialData = options?.data;\n\t\t\t\tif (initialData) {\n\t\t\t\t\t\tthis.setData(initialData);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.storage = new ArrayBuffer(this.numBytes);\n\t\t\t\t}\n\t\t\t\tthis.device.buffers.push(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst idx = device.buffers.indexOf(this);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tdevice.buffers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tif (this.impl.initialized) {\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this.storage.byteLength);\n\t\t\t\t}\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.vb += size;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\tgetFormat() {\n\t\t\t\treturn this.format;\n\t\t}\n\t\tgetUsage() {\n\t\t\t\treturn this.usage;\n\t\t}\n\t\tgetNumVertices() {\n\t\t\t\treturn this.numVertices;\n\t\t}\n\t\tlock() {\n\t\t\t\treturn this.storage;\n\t\t}\n\t\tunlock() {\n\t\t\t\tthis.impl.unlock(this);\n\t\t}\n\t\tsetData(data) {\n\t\t\t\tif (data.byteLength !== this.numBytes) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.storage = data;\n\t\t\t\tthis.unlock();\n\t\t\t\treturn true;\n\t\t}\n}\n\nfunction hashCode(str) {\n\t\tif (str === null || str === undefined) {\n\t\t\t\treturn 0;\n\t\t}\n\t\tlet hash = 0;\n\t\tfor(let i = 0, len = str.length; i < len; i++){\n\t\t\t\thash = (hash << 5) - hash + str.charCodeAt(i);\n\t\t\t\thash |= 0;\n\t\t}\n\t\treturn hash;\n}\nfunction hash32Fnv1a(array) {\n\t\tconst prime = 16777619;\n\t\tlet hash = 2166136261;\n\t\tfor(let i = 0; i < array.length; i++){\n\t\t\t\thash ^= array[i];\n\t\t\t\thash *= prime;\n\t\t}\n\t\treturn hash >>> 0;\n}\n\nconst stringIds$3 = new StringIds();\nconst webgpuValidElementSizes = [\n\t\t2,\n\t\t4,\n\t\t8,\n\t\t12,\n\t\t16\n];\nconst deviceCache$2 = new DeviceCache();\nclass VertexFormat {\n\t\tconstructor(graphicsDevice, description, vertexCount){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis._elements = [];\n\t\t\t\tthis.hasUv0 = false;\n\t\t\t\tthis.hasUv1 = false;\n\t\t\t\tthis.hasColor = false;\n\t\t\t\tthis.hasTangents = false;\n\t\t\t\tthis.verticesByteSize = 0;\n\t\t\t\tthis.vertexCount = vertexCount;\n\t\t\t\tthis.interleaved = vertexCount === undefined;\n\t\t\t\tthis.instancing = false;\n\t\t\t\tthis.size = description.reduce((total, desc)=>{\n\t\t\t\t\t\treturn total + Math.ceil(desc.components * typedArrayTypesByteSize[desc.type] / 4) * 4;\n\t\t\t\t}, 0);\n\t\t\t\tlet offset = 0, elementSize;\n\t\t\t\tfor(let i = 0, len = description.length; i < len; i++){\n\t\t\t\t\t\tconst elementDesc = description[i];\n\t\t\t\t\t\telementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type];\n\t\t\t\t\t\tif (vertexCount) {\n\t\t\t\t\t\t\t\toffset = math.roundUp(offset, elementSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asInt = elementDesc.asInt ?? false;\n\t\t\t\t\t\tconst normalize = asInt ? false : elementDesc.normalize ?? false;\n\t\t\t\t\t\tconst element = {\n\t\t\t\t\t\t\t\tname: elementDesc.semantic,\n\t\t\t\t\t\t\t\toffset: vertexCount ? offset : elementDesc.hasOwnProperty('offset') ? elementDesc.offset : offset,\n\t\t\t\t\t\t\t\tstride: vertexCount ? elementSize : elementDesc.hasOwnProperty('stride') ? elementDesc.stride : this.size,\n\t\t\t\t\t\t\t\tdataType: elementDesc.type,\n\t\t\t\t\t\t\t\tnumComponents: elementDesc.components,\n\t\t\t\t\t\t\t\tnormalize: normalize,\n\t\t\t\t\t\t\t\tsize: elementSize,\n\t\t\t\t\t\t\t\tasInt: asInt\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis._elements.push(element);\n\t\t\t\t\t\tif (vertexCount) {\n\t\t\t\t\t\t\t\toffset += elementSize * vertexCount;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toffset += Math.ceil(elementSize / 4) * 4;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (elementDesc.semantic === SEMANTIC_TEXCOORD0) {\n\t\t\t\t\t\t\t\tthis.hasUv0 = true;\n\t\t\t\t\t\t} else if (elementDesc.semantic === SEMANTIC_TEXCOORD1) {\n\t\t\t\t\t\t\t\tthis.hasUv1 = true;\n\t\t\t\t\t\t} else if (elementDesc.semantic === SEMANTIC_COLOR) {\n\t\t\t\t\t\t\t\tthis.hasColor = true;\n\t\t\t\t\t\t} else if (elementDesc.semantic === SEMANTIC_TANGENT) {\n\t\t\t\t\t\t\t\tthis.hasTangents = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (vertexCount) {\n\t\t\t\t\t\tthis.verticesByteSize = offset;\n\t\t\t\t}\n\t\t\t\tthis._evaluateHash();\n\t\t}\n\t\tget elements() {\n\t\t\t\treturn this._elements;\n\t\t}\n\t\tstatic getDefaultInstancingFormat(graphicsDevice) {\n\t\t\t\treturn deviceCache$2.get(graphicsDevice, ()=>{\n\t\t\t\t\t\treturn new VertexFormat(graphicsDevice, [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR11,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR12,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR14,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR15,\n\t\t\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t});\n\t\t}\n\t\tstatic isElementValid(graphicsDevice, elementDesc) {\n\t\t\t\tconst elementSize = elementDesc.components * typedArrayTypesByteSize[elementDesc.type];\n\t\t\t\tif (graphicsDevice.isWebGPU && !webgpuValidElementSizes.includes(elementSize)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis._evaluateHash();\n\t\t}\n\t\t_evaluateHash() {\n\t\t\t\tconst stringElementsBatch = [];\n\t\t\t\tconst stringElementsRender = [];\n\t\t\t\tconst len = this._elements.length;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst { name, dataType, numComponents, normalize, offset, stride, size, asInt } = this._elements[i];\n\t\t\t\t\t\tconst stringElementBatch = name + dataType + numComponents + normalize + asInt;\n\t\t\t\t\t\tstringElementsBatch.push(stringElementBatch);\n\t\t\t\t\t\tconst stringElementRender = stringElementBatch + offset + stride + size;\n\t\t\t\t\t\tstringElementsRender.push(stringElementRender);\n\t\t\t\t}\n\t\t\t\tstringElementsBatch.sort();\n\t\t\t\tconst batchingString = stringElementsBatch.join();\n\t\t\t\tthis.batchingHash = hashCode(batchingString);\n\t\t\t\tthis.shaderProcessingHashString = batchingString;\n\t\t\t\tthis.renderingHashString = stringElementsRender.join('_');\n\t\t\t\tthis.renderingHash = stringIds$3.get(this.renderingHashString);\n\t\t}\n}\n\nconst stringIds$2 = new StringIds();\nclass StencilParameters {\n\t\tset func(value) {\n\t\t\t\tthis._func = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget func() {\n\t\t\t\treturn this._func;\n\t\t}\n\t\tset ref(value) {\n\t\t\t\tthis._ref = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget ref() {\n\t\t\t\treturn this._ref;\n\t\t}\n\t\tset fail(value) {\n\t\t\t\tthis._fail = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget fail() {\n\t\t\t\treturn this._fail;\n\t\t}\n\t\tset zfail(value) {\n\t\t\t\tthis._zfail = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget zfail() {\n\t\t\t\treturn this._zfail;\n\t\t}\n\t\tset zpass(value) {\n\t\t\t\tthis._zpass = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget zpass() {\n\t\t\t\treturn this._zpass;\n\t\t}\n\t\tset readMask(value) {\n\t\t\t\tthis._readMask = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget readMask() {\n\t\t\t\treturn this._readMask;\n\t\t}\n\t\tset writeMask(value) {\n\t\t\t\tthis._writeMask = value;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\tget writeMask() {\n\t\t\t\treturn this._writeMask;\n\t\t}\n\t\tconstructor(options = {}){\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis._func = options.func ?? FUNC_ALWAYS;\n\t\t\t\tthis._ref = options.ref ?? 0;\n\t\t\t\tthis._readMask = options.readMask ?? 0xFF;\n\t\t\t\tthis._writeMask = options.writeMask ?? 0xFF;\n\t\t\t\tthis._fail = options.fail ?? STENCILOP_KEEP;\n\t\t\t\tthis._zfail = options.zfail ?? STENCILOP_KEEP;\n\t\t\t\tthis._zpass = options.zpass ?? STENCILOP_KEEP;\n\t\t\t\tthis._evalKey();\n\t\t}\n\t\t_evalKey() {\n\t\t\t\tconst { _func, _ref, _fail, _zfail, _zpass, _readMask, _writeMask } = this;\n\t\t\t\tconst key = `${_func},${_ref},${_fail},${_zfail},${_zpass},${_readMask},${_writeMask}`;\n\t\t\t\tthis._key = stringIds$2.get(key);\n\t\t\t\tthis._dirty = false;\n\t\t}\n\t\tget key() {\n\t\t\t\tif (this._dirty) {\n\t\t\t\t\t\tthis._evalKey();\n\t\t\t\t}\n\t\t\t\treturn this._key;\n\t\t}\n\t\tcopy(rhs) {\n\t\t\t\tthis._func = rhs._func;\n\t\t\t\tthis._ref = rhs._ref;\n\t\t\t\tthis._readMask = rhs._readMask;\n\t\t\t\tthis._writeMask = rhs._writeMask;\n\t\t\t\tthis._fail = rhs._fail;\n\t\t\t\tthis._zfail = rhs._zfail;\n\t\t\t\tthis._zpass = rhs._zpass;\n\t\t\t\tthis._dirty = rhs._dirty;\n\t\t\t\tthis._key = rhs._key;\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT = Object.freeze(new StencilParameters());\n\t\t}\n}\n\nclass GraphicsDevice extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESIZE = 'resizecanvas';\n\t\t}\n\t\tconstructor(canvas, options){\n\t\t\t\tsuper(), this.backBuffer = null, this.backBufferSize = new Vec2(), this.backBufferAntialias = false, this.isWebGPU = false, this.isWebGL2 = false, this.isHdr = false, this.maxIndirectDrawCount = 1024, this.maxColorAttachments = 1, this.maxSamples = 1, this.supportsMultiDraw = true, this.supportsCompute = false, this.supportsStorageTextureRead = false, this.renderTarget = null, this.shaders = [], this.textures = [], this.targets = new Set(), this.renderVersion = 0, this.insideRenderPass = false, this.supportsUniformBuffers = false, this.supportsClipDistances = false, this.textureRG11B10Renderable = false, this.textureFloatFilterable = false, this.blendState = new BlendState(), this.depthState = new DepthState(), this.stencilEnabled = false, this.stencilFront = new StencilParameters(), this.stencilBack = new StencilParameters(), this._destroyed = false, this.defaultClearOptions = {\n\t\t\t\t\t\tcolor: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdepth: 1,\n\t\t\t\t\t\tstencil: 0,\n\t\t\t\t\t\tflags: CLEARFLAG_COLOR | CLEARFLAG_DEPTH\n\t\t\t\t}, this.clientRect = {\n\t\t\t\t\t\twidth: 0,\n\t\t\t\t\t\theight: 0\n\t\t\t\t}, this._shadersDirty = false, this.capsDefines = new Map(), this.mapsToClear = new Set();\n\t\t\t\tthis.canvas = canvas;\n\t\t\t\tif ('setAttribute' in canvas) {\n\t\t\t\t\t\tcanvas.setAttribute('data-engine', `PlayCanvas ${version}`);\n\t\t\t\t}\n\t\t\t\tthis.initOptions = {\n\t\t\t\t\t\t...options\n\t\t\t\t};\n\t\t\t\tthis.initOptions.alpha ??= true;\n\t\t\t\tthis.initOptions.depth ??= true;\n\t\t\t\tthis.initOptions.stencil ??= true;\n\t\t\t\tthis.initOptions.antialias ??= true;\n\t\t\t\tthis.initOptions.powerPreference ??= 'high-performance';\n\t\t\t\tthis.initOptions.displayFormat ??= DISPLAYFORMAT_LDR;\n\t\t\t\tthis._maxPixelRatio = platform.browser ? Math.min(1, window.devicePixelRatio) : 1;\n\t\t\t\tthis.buffers = [];\n\t\t\t\tthis._vram = {\n\t\t\t\t\t\ttex: 0,\n\t\t\t\t\t\tvb: 0,\n\t\t\t\t\t\tib: 0,\n\t\t\t\t\t\tub: 0,\n\t\t\t\t\t\tsb: 0\n\t\t\t\t};\n\t\t\t\tthis._shaderStats = {\n\t\t\t\t\t\tvsCompiled: 0,\n\t\t\t\t\t\tfsCompiled: 0,\n\t\t\t\t\t\tlinked: 0,\n\t\t\t\t\t\tmaterialShaders: 0,\n\t\t\t\t\t\tcompileTime: 0\n\t\t\t\t};\n\t\t\t\tthis.initializeContextCaches();\n\t\t\t\tthis._drawCallsPerFrame = 0;\n\t\t\t\tthis._shaderSwitchesPerFrame = 0;\n\t\t\t\tthis._primsPerFrame = [];\n\t\t\t\tfor(let i = PRIMITIVE_POINTS; i <= PRIMITIVE_TRIFAN; i++){\n\t\t\t\t\t\tthis._primsPerFrame[i] = 0;\n\t\t\t\t}\n\t\t\t\tthis._renderTargetCreationTime = 0;\n\t\t\t\tthis.scope = new ScopeSpace('Device');\n\t\t\t\tthis.textureBias = this.scope.resolve('textureBias');\n\t\t\t\tthis.textureBias.setValue(0.0);\n\t\t}\n\t\tpostInit() {\n\t\t\t\tconst vertexFormat = new VertexFormat(this, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tcomponents: 2,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tconst positions = new Float32Array([\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tthis.quadVertexBuffer = new VertexBuffer(this, vertexFormat, 4, {\n\t\t\t\t\t\tdata: positions\n\t\t\t\t});\n\t\t}\n\t\tinitCapsDefines() {\n\t\t\t\tconst { capsDefines } = this;\n\t\t\t\tcapsDefines.clear();\n\t\t\t\tif (this.textureFloatFilterable) capsDefines.set('CAPS_TEXTURE_FLOAT_FILTERABLE', '');\n\t\t\t\tif (this.textureFloatRenderable) capsDefines.set('CAPS_TEXTURE_FLOAT_RENDERABLE', '');\n\t\t\t\tif (this.supportsMultiDraw) capsDefines.set('CAPS_MULTI_DRAW', '');\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.fire('destroy');\n\t\t\t\tthis.quadVertexBuffer?.destroy();\n\t\t\t\tthis.quadVertexBuffer = null;\n\t\t\t\tthis.dynamicBuffers?.destroy();\n\t\t\t\tthis.dynamicBuffers = null;\n\t\t\t\tthis.gpuProfiler?.destroy();\n\t\t\t\tthis.gpuProfiler = null;\n\t\t\t\tthis._destroyed = true;\n\t\t}\n\t\tonDestroyShader(shader) {\n\t\t\t\tthis.fire('destroy:shader', shader);\n\t\t\t\tconst idx = this.shaders.indexOf(shader);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis.shaders.splice(idx, 1);\n\t\t\t\t}\n\t\t}\n\t\tpostDestroy() {\n\t\t\t\tthis.scope = null;\n\t\t\t\tthis.canvas = null;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.contextLost = true;\n\t\t\t\tthis.backBufferSize.set(-1, -1);\n\t\t\t\tfor (const texture of this.textures){\n\t\t\t\t\t\ttexture.loseContext();\n\t\t\t\t}\n\t\t\t\tfor (const buffer of this.buffers){\n\t\t\t\t\t\tbuffer.loseContext();\n\t\t\t\t}\n\t\t\t\tfor (const target of this.targets){\n\t\t\t\t\t\ttarget.loseContext();\n\t\t\t\t}\n\t\t\t\tthis.gpuProfiler?.loseContext();\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.contextLost = false;\n\t\t\t\tthis.initializeRenderState();\n\t\t\t\tthis.initializeContextCaches();\n\t\t\t\tfor (const buffer of this.buffers){\n\t\t\t\t\t\tbuffer.unlock();\n\t\t\t\t}\n\t\t\t\tthis.gpuProfiler?.restoreContext?.();\n\t\t}\n\t\ttoJSON(key) {\n\t\t\t\treturn undefined;\n\t\t}\n\t\tinitializeContextCaches() {\n\t\t\t\tthis.vertexBuffers = [];\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.shaderValid = undefined;\n\t\t\t\tthis.shaderAsyncCompile = false;\n\t\t\t\tthis.renderTarget = null;\n\t\t}\n\t\tinitializeRenderState() {\n\t\t\t\tthis.blendState = new BlendState();\n\t\t\t\tthis.depthState = new DepthState();\n\t\t\t\tthis.cullMode = CULLFACE_BACK;\n\t\t\t\tthis.vx = this.vy = this.vw = this.vh = 0;\n\t\t\t\tthis.sx = this.sy = this.sw = this.sh = 0;\n\t\t\t\tthis.blendColor = new Color(0, 0, 0, 0);\n\t\t}\n\t\tsetStencilState(stencilFront, stencilBack) {}\n\t\tsetBlendState(blendState) {}\n\t\tsetBlendColor(r, g, b, a) {}\n\t\tsetDepthState(depthState) {}\n\t\tsetCullMode(cullMode) {}\n\t\tsetRenderTarget(renderTarget) {\n\t\t\t\tthis.renderTarget = renderTarget;\n\t\t}\n\t\tsetVertexBuffer(vertexBuffer) {\n\t\t\t\tif (vertexBuffer) {\n\t\t\t\t\t\tthis.vertexBuffers.push(vertexBuffer);\n\t\t\t\t}\n\t\t}\n\t\tclearVertexBuffer() {\n\t\t\t\tthis.vertexBuffers.length = 0;\n\t\t}\n\t\tgetIndirectDrawSlot(count = 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\tget indirectDrawBuffer() {\n\t\t\t\treturn null;\n\t\t}\n\t\tgetRenderTarget() {\n\t\t\t\treturn this.renderTarget;\n\t\t}\n\t\tinitRenderTarget(target) {\n\t\t\t\tif (target.initialized) return;\n\t\t\t\ttarget.init();\n\t\t\t\tthis.targets.add(target);\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {}\n\t\t_isBrowserInterface(texture) {\n\t\t\t\treturn this._isImageBrowserInterface(texture) || this._isImageCanvasInterface(texture) || this._isImageVideoInterface(texture);\n\t\t}\n\t\t_isImageBrowserInterface(texture) {\n\t\t\t\treturn typeof ImageBitmap !== 'undefined' && texture instanceof ImageBitmap || typeof HTMLImageElement !== 'undefined' && texture instanceof HTMLImageElement;\n\t\t}\n\t\t_isImageCanvasInterface(texture) {\n\t\t\t\treturn typeof HTMLCanvasElement !== 'undefined' && texture instanceof HTMLCanvasElement;\n\t\t}\n\t\t_isImageVideoInterface(texture) {\n\t\t\t\treturn typeof HTMLVideoElement !== 'undefined' && texture instanceof HTMLVideoElement;\n\t\t}\n\t\tresizeCanvas(width, height) {\n\t\t\t\tconst pixelRatio = Math.min(this._maxPixelRatio, platform.browser ? window.devicePixelRatio : 1);\n\t\t\t\tconst w = Math.floor(width * pixelRatio);\n\t\t\t\tconst h = Math.floor(height * pixelRatio);\n\t\t\t\tif (w !== this.canvas.width || h !== this.canvas.height) {\n\t\t\t\t\t\tthis.setResolution(w, h);\n\t\t\t\t}\n\t\t}\n\t\tsetResolution(width, height) {\n\t\t\t\tthis.canvas.width = width;\n\t\t\t\tthis.canvas.height = height;\n\t\t\t\tthis.fire(GraphicsDevice.EVENT_RESIZE, width, height);\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.updateClientRect();\n\t\t}\n\t\tupdateClientRect() {\n\t\t\t\tif (platform.worker) {\n\t\t\t\t\t\tthis.clientRect.width = this.canvas.width;\n\t\t\t\t\t\tthis.clientRect.height = this.canvas.height;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst rect = this.canvas.getBoundingClientRect();\n\t\t\t\t\t\tthis.clientRect.width = rect.width;\n\t\t\t\t\t\tthis.clientRect.height = rect.height;\n\t\t\t\t}\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this.canvas.width;\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this.canvas.height;\n\t\t}\n\t\tset fullscreen(fullscreen) {}\n\t\tget fullscreen() {\n\t\t\t\treturn false;\n\t\t}\n\t\tset maxPixelRatio(ratio) {\n\t\t\t\tthis._maxPixelRatio = ratio;\n\t\t}\n\t\tget maxPixelRatio() {\n\t\t\t\treturn this._maxPixelRatio;\n\t\t}\n\t\tget deviceType() {\n\t\t\t\treturn this._deviceType;\n\t\t}\n\t\tstartRenderPass(renderPass) {}\n\t\tendRenderPass(renderPass) {}\n\t\tstartComputePass(name) {}\n\t\tendComputePass() {}\n\t\tframeStart() {\n\t\t\t\tthis.renderPassIndex = 0;\n\t\t\t\tthis.renderVersion++;\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tthis.mapsToClear.forEach((map)=>map.clear());\n\t\t\t\tthis.mapsToClear.clear();\n\t\t}\n\t\tcomputeDispatch(computes, name = 'Unnamed') {}\n\t\tgetRenderableHdrFormat(formats = [\n\t\t\t\tPIXELFORMAT_111110F,\n\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\tPIXELFORMAT_RGBA32F\n\t\t], filterable = true, samples = 1) {\n\t\t\t\tfor(let i = 0; i < formats.length; i++){\n\t\t\t\t\t\tconst format = formats[i];\n\t\t\t\t\t\tswitch(format){\n\t\t\t\t\t\t\t\tcase PIXELFORMAT_111110F:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.textureRG11B10Renderable) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\t\t\t\t\t\tif (this.textureHalfFloatRenderable) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\t\t\t\t\t\tif (this.isWebGPU && samples > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (this.textureFloatRenderable && (!filterable || this.textureFloatFilterable)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tvalidateAttributes(shader, vb0Format, vb1Format) {}\n}\n\nlet id$9 = 0;\nclass RenderTarget {\n\t\tconstructor(options = {}){\n\t\t\t\tthis.id = id$9++;\n\t\t\t\tconst device = options.colorBuffer?.device ?? options.colorBuffers?.[0].device ?? options.depthBuffer?.device ?? options.graphicsDevice;\n\t\t\t\tthis._device = device;\n\t\t\t\tconst { maxSamples } = this._device;\n\t\t\t\tthis._samples = Math.min(options.samples ?? 1, maxSamples);\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tthis._samples = this._samples > 1 ? maxSamples : 1;\n\t\t\t\t}\n\t\t\t\tthis._colorBuffer = options.colorBuffer;\n\t\t\t\tif (options.colorBuffer) {\n\t\t\t\t\t\tthis._colorBuffers = [\n\t\t\t\t\t\t\t\toptions.colorBuffer\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis._depthBuffer = options.depthBuffer;\n\t\t\t\tthis._face = options.face ?? 0;\n\t\t\t\tif (this._depthBuffer) {\n\t\t\t\t\t\tconst format = this._depthBuffer._format;\n\t\t\t\t\t\tif (format === PIXELFORMAT_DEPTH || format === PIXELFORMAT_DEPTH16) {\n\t\t\t\t\t\t\t\tthis._depth = true;\n\t\t\t\t\t\t\t\tthis._stencil = false;\n\t\t\t\t\t\t} else if (format === PIXELFORMAT_DEPTHSTENCIL) {\n\t\t\t\t\t\t\t\tthis._depth = true;\n\t\t\t\t\t\t\t\tthis._stencil = true;\n\t\t\t\t\t\t} else if (format === PIXELFORMAT_R32F && this._depthBuffer.device.isWebGPU && this._samples > 1) {\n\t\t\t\t\t\t\t\tthis._depth = true;\n\t\t\t\t\t\t\t\tthis._stencil = false;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._depth = false;\n\t\t\t\t\t\t\t\tthis._stencil = false;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._depth = options.depth ?? true;\n\t\t\t\t\t\tthis._stencil = options.stencil ?? false;\n\t\t\t\t}\n\t\t\t\tif (options.colorBuffers) {\n\t\t\t\t\t\tif (!this._colorBuffers) {\n\t\t\t\t\t\t\t\tthis._colorBuffers = [\n\t\t\t\t\t\t\t\t\t\t...options.colorBuffers\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\tthis._colorBuffer = options.colorBuffers[0];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.autoResolve = options.autoResolve ?? true;\n\t\t\t\tthis.name = options.name;\n\t\t\t\tif (!this.name) {\n\t\t\t\t\t\tthis.name = this._colorBuffer?.name;\n\t\t\t\t}\n\t\t\t\tif (!this.name) {\n\t\t\t\t\t\tthis.name = this._depthBuffer?.name;\n\t\t\t\t}\n\t\t\t\tif (!this.name) {\n\t\t\t\t\t\tthis.name = 'Untitled';\n\t\t\t\t}\n\t\t\t\tthis.flipY = options.flipY ?? false;\n\t\t\t\tthis._mipLevel = options.mipLevel ?? 0;\n\t\t\t\tif (this._mipLevel > 0 && this._depth) {\n\t\t\t\t\t\tthis._mipLevel = 0;\n\t\t\t\t}\n\t\t\t\tthis._mipmaps = options.mipLevel === undefined;\n\t\t\t\tthis.validateMrt();\n\t\t\t\tthis.impl = device.createRenderTargetImpl(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this._device;\n\t\t\t\tif (device) {\n\t\t\t\t\t\tdevice.targets.delete(this);\n\t\t\t\t\t\tif (device.renderTarget === this) {\n\t\t\t\t\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.destroyFrameBuffers();\n\t\t\t\t}\n\t\t}\n\t\tdestroyFrameBuffers() {\n\t\t\t\tconst device = this._device;\n\t\t\t\tif (device) {\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t}\n\t\t}\n\t\tdestroyTextureBuffers() {\n\t\t\t\tthis._depthBuffer?.destroy();\n\t\t\t\tthis._depthBuffer = null;\n\t\t\t\tthis._colorBuffers?.forEach((colorBuffer)=>{\n\t\t\t\t\t\tcolorBuffer.destroy();\n\t\t\t\t});\n\t\t\t\tthis._colorBuffers = null;\n\t\t\t\tthis._colorBuffer = null;\n\t\t}\n\t\tresize(width, height) {\n\t\t\t\tif (this.width !== width || this.height !== height) {\n\t\t\t\t\t\tif (this.mipLevel > 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst device = this._device;\n\t\t\t\t\t\tthis.destroyFrameBuffers();\n\t\t\t\t\t\tif (device.renderTarget === this) {\n\t\t\t\t\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._depthBuffer?.resize(width, height);\n\t\t\t\t\t\tthis._colorBuffers?.forEach((colorBuffer)=>{\n\t\t\t\t\t\t\t\tcolorBuffer.resize(width, height);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.validateMrt();\n\t\t\t\t\t\tthis.impl = device.createRenderTargetImpl(this);\n\t\t\t\t}\n\t\t}\n\t\tvalidateMrt() {}\n\t\tinit() {\n\t\t\t\tthis.impl.init(this._device, this);\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn this.impl.initialized;\n\t\t}\n\t\tget device() {\n\t\t\t\treturn this._device;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\tresolve(color = true, depth = !!this._depthBuffer) {\n\t\t\t\tif (this._device && this._samples > 1) {\n\t\t\t\t\t\tthis.impl.resolve(this._device, this, color, depth);\n\t\t\t\t}\n\t\t}\n\t\tcopy(source, color, depth) {\n\t\t\t\tif (!this._device) {\n\t\t\t\t\t\tif (source._device) {\n\t\t\t\t\t\t\t\tthis._device = source._device;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst success = this._device.copyRenderTarget(source, this, color, depth);\n\t\t\t\treturn success;\n\t\t}\n\t\tget samples() {\n\t\t\t\treturn this._samples;\n\t\t}\n\t\tget depth() {\n\t\t\t\treturn this._depth;\n\t\t}\n\t\tget stencil() {\n\t\t\t\treturn this._stencil;\n\t\t}\n\t\tget colorBuffer() {\n\t\t\t\treturn this._colorBuffer;\n\t\t}\n\t\tgetColorBuffer(index) {\n\t\t\t\treturn this._colorBuffers?.[index];\n\t\t}\n\t\tget depthBuffer() {\n\t\t\t\treturn this._depthBuffer;\n\t\t}\n\t\tget face() {\n\t\t\t\treturn this._face;\n\t\t}\n\t\tget mipLevel() {\n\t\t\t\treturn this._mipLevel;\n\t\t}\n\t\tget mipmaps() {\n\t\t\t\treturn this._mipmaps;\n\t\t}\n\t\tget width() {\n\t\t\t\tlet width = this._colorBuffer?.width || this._depthBuffer?.width || this._device.width;\n\t\t\t\tif (this._mipLevel > 0) {\n\t\t\t\t\t\twidth = TextureUtils.calcLevelDimension(width, this._mipLevel);\n\t\t\t\t}\n\t\t\t\treturn width;\n\t\t}\n\t\tget height() {\n\t\t\t\tlet height = this._colorBuffer?.height || this._depthBuffer?.height || this._device.height;\n\t\t\t\tif (this._mipLevel > 0) {\n\t\t\t\t\t\theight = TextureUtils.calcLevelDimension(height, this._mipLevel);\n\t\t\t\t}\n\t\t\t\treturn height;\n\t\t}\n\t\tisColorBufferSrgb(index = 0) {\n\t\t\t\tif (this.device.backBuffer === this) {\n\t\t\t\t\t\treturn isSrgbPixelFormat(this.device.backBufferFormat);\n\t\t\t\t}\n\t\t\t\tconst colorBuffer = this.getColorBuffer(index);\n\t\t\t\treturn colorBuffer ? isSrgbPixelFormat(colorBuffer.format) : false;\n\t\t}\n}\n\nclass WebgpuBindGroup {\n\t\tupdate(bindGroup) {\n\t\t\t\tthis.destroy();\n\t\t\t\tconst device = bindGroup.device;\n\t\t\t\tconst desc = this.createDescriptor(device, bindGroup);\n\t\t\t\tthis.bindGroup = device.wgpu.createBindGroup(desc);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.bindGroup = null;\n\t\t}\n\t\tcreateDescriptor(device, bindGroup) {\n\t\t\t\tconst entries = [];\n\t\t\t\tconst format = bindGroup.format;\n\t\t\t\tconst uniformBufferFormats = bindGroup.format.uniformBufferFormats;\n\t\t\t\tbindGroup.uniformBuffers.forEach((ub, i)=>{\n\t\t\t\t\t\tconst slot = uniformBufferFormats[i].slot;\n\t\t\t\t\t\tconst buffer = ub.persistent ? ub.impl.buffer : ub.allocation.gpuBuffer.buffer;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\t\t\tbuffer: buffer,\n\t\t\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\t\t\tsize: ub.format.byteSize\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst textureFormats = bindGroup.format.textureFormats;\n\t\t\t\tbindGroup.textures.forEach((tex, textureIndex)=>{\n\t\t\t\t\t\tconst wgpuTexture = tex.impl;\n\t\t\t\t\t\tconst textureFormat = format.textureFormats[textureIndex];\n\t\t\t\t\t\tconst slot = textureFormats[textureIndex].slot;\n\t\t\t\t\t\tconst view = wgpuTexture.getView(device);\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: view\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (textureFormat.hasSampler) {\n\t\t\t\t\t\t\t\tconst sampler = wgpuTexture.getSampler(device, textureFormat.sampleType);\n\t\t\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\t\t\tbinding: slot + 1,\n\t\t\t\t\t\t\t\t\t\tresource: sampler\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst storageTextureFormats = bindGroup.format.storageTextureFormats;\n\t\t\t\tbindGroup.storageTextures.forEach((tex, textureIndex)=>{\n\t\t\t\t\t\tconst wgpuTexture = tex.impl;\n\t\t\t\t\t\tconst slot = storageTextureFormats[textureIndex].slot;\n\t\t\t\t\t\tconst view = wgpuTexture.getView(device);\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: view\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst storageBufferFormats = bindGroup.format.storageBufferFormats;\n\t\t\t\tbindGroup.storageBuffers.forEach((buffer, bufferIndex)=>{\n\t\t\t\t\t\tconst wgpuBuffer = buffer.impl.buffer;\n\t\t\t\t\t\tconst slot = storageBufferFormats[bufferIndex].slot;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: slot,\n\t\t\t\t\t\t\t\tresource: {\n\t\t\t\t\t\t\t\t\t\tbuffer: wgpuBuffer\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tlayout: bindGroup.format.impl.bindGroupLayout,\n\t\t\t\t\t\tentries: entries\n\t\t\t\t};\n\t\t\t\treturn desc;\n\t\t}\n}\n\nclass WebgpuUtils {\n\t\tstatic shaderStage(stage) {\n\t\t\t\tlet ret = 0;\n\t\t\t\tif (stage & SHADERSTAGE_VERTEX) ret |= GPUShaderStage.VERTEX;\n\t\t\t\tif (stage & SHADERSTAGE_FRAGMENT) ret |= GPUShaderStage.FRAGMENT;\n\t\t\t\tif (stage & SHADERSTAGE_COMPUTE) ret |= GPUShaderStage.COMPUTE;\n\t\t\t\treturn ret;\n\t\t}\n}\n\nconst gpuTextureFormats = [];\ngpuTextureFormats[PIXELFORMAT_A8] = '';\ngpuTextureFormats[PIXELFORMAT_L8] = '';\ngpuTextureFormats[PIXELFORMAT_LA8] = '';\ngpuTextureFormats[PIXELFORMAT_R8] = 'r8unorm';\ngpuTextureFormats[PIXELFORMAT_RG8] = 'rg8unorm';\ngpuTextureFormats[PIXELFORMAT_RGB565] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA5551] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA4] = '';\ngpuTextureFormats[PIXELFORMAT_RGB8] = 'rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_RGBA8] = 'rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_DXT1] = 'bc1-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT3] = 'bc2-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT5] = 'bc3-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_RGB16F] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA16F] = 'rgba16float';\ngpuTextureFormats[PIXELFORMAT_R16F] = 'r16float';\ngpuTextureFormats[PIXELFORMAT_RG16F] = 'rg16float';\ngpuTextureFormats[PIXELFORMAT_RGB32F] = '';\ngpuTextureFormats[PIXELFORMAT_RGBA32F] = 'rgba32float';\ngpuTextureFormats[PIXELFORMAT_R32F] = 'r32float';\ngpuTextureFormats[PIXELFORMAT_DEPTH] = 'depth32float';\ngpuTextureFormats[PIXELFORMAT_DEPTH16] = 'depth16unorm';\ngpuTextureFormats[PIXELFORMAT_DEPTHSTENCIL] = 'depth24plus-stencil8';\ngpuTextureFormats[PIXELFORMAT_111110F] = 'rg11b10ufloat';\ngpuTextureFormats[PIXELFORMAT_SRGB8] = '';\ngpuTextureFormats[PIXELFORMAT_SRGBA8] = 'rgba8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ETC1] = '';\ngpuTextureFormats[PIXELFORMAT_ETC2_RGB] = 'etc2-rgb8unorm';\ngpuTextureFormats[PIXELFORMAT_ETC2_RGBA] = 'etc2-rgba8unorm';\ngpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGB_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_2BPP_RGBA_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGB_1] = '';\ngpuTextureFormats[PIXELFORMAT_PVRTC_4BPP_RGBA_1] = '';\ngpuTextureFormats[PIXELFORMAT_ASTC_4x4] = 'astc-4x4-unorm';\ngpuTextureFormats[PIXELFORMAT_ATC_RGB] = '';\ngpuTextureFormats[PIXELFORMAT_ATC_RGBA] = '';\ngpuTextureFormats[PIXELFORMAT_BGRA8] = 'bgra8unorm';\ngpuTextureFormats[PIXELFORMAT_SBGRA8] = 'bgra8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_R8I] = 'r8sint';\ngpuTextureFormats[PIXELFORMAT_R8U] = 'r8uint';\ngpuTextureFormats[PIXELFORMAT_R16I] = 'r16sint';\ngpuTextureFormats[PIXELFORMAT_R16U] = 'r16uint';\ngpuTextureFormats[PIXELFORMAT_R32I] = 'r32sint';\ngpuTextureFormats[PIXELFORMAT_R32U] = 'r32uint';\ngpuTextureFormats[PIXELFORMAT_RG8I] = 'rg8sint';\ngpuTextureFormats[PIXELFORMAT_RG8U] = 'rg8uint';\ngpuTextureFormats[PIXELFORMAT_RG16I] = 'rg16sint';\ngpuTextureFormats[PIXELFORMAT_RG16U] = 'rg16uint';\ngpuTextureFormats[PIXELFORMAT_RG32I] = 'rg32sint';\ngpuTextureFormats[PIXELFORMAT_RG32U] = 'rg32uint';\ngpuTextureFormats[PIXELFORMAT_RGBA8I] = 'rgba8sint';\ngpuTextureFormats[PIXELFORMAT_RGBA8U] = 'rgba8uint';\ngpuTextureFormats[PIXELFORMAT_RGBA16I] = 'rgba16sint';\ngpuTextureFormats[PIXELFORMAT_RGBA16U] = 'rgba16uint';\ngpuTextureFormats[PIXELFORMAT_RGBA32I] = 'rgba32sint';\ngpuTextureFormats[PIXELFORMAT_RGBA32U] = 'rgba32uint';\ngpuTextureFormats[PIXELFORMAT_BC6F] = 'bc6h-rgb-float';\ngpuTextureFormats[PIXELFORMAT_BC6UF] = 'bc6h-rgb-ufloat';\ngpuTextureFormats[PIXELFORMAT_BC7] = 'bc7-rgba-unorm';\ngpuTextureFormats[PIXELFORMAT_DXT1_SRGB] = 'bc1-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_DXT3_SRGBA] = 'bc2-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_DXT5_SRGBA] = 'bc3-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ETC2_SRGB] = 'etc2-rgb8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ETC2_SRGBA] = 'etc2-rgba8unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_BC7_SRGBA] = 'bc7-rgba-unorm-srgb';\ngpuTextureFormats[PIXELFORMAT_ASTC_4x4_SRGB] = 'astc-4x4-unorm-srgb';\n\nconst samplerTypes = [];\nsamplerTypes[SAMPLETYPE_FLOAT] = 'filtering';\nsamplerTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = 'non-filtering';\nsamplerTypes[SAMPLETYPE_DEPTH] = 'comparison';\nsamplerTypes[SAMPLETYPE_INT] = 'comparison';\nsamplerTypes[SAMPLETYPE_UINT] = 'comparison';\nconst sampleTypes = [];\nsampleTypes[SAMPLETYPE_FLOAT] = 'float';\nsampleTypes[SAMPLETYPE_UNFILTERABLE_FLOAT] = 'unfilterable-float';\nsampleTypes[SAMPLETYPE_DEPTH] = 'depth';\nsampleTypes[SAMPLETYPE_INT] = 'sint';\nsampleTypes[SAMPLETYPE_UINT] = 'uint';\nconst stringIds$1 = new StringIds();\nclass WebgpuBindGroupFormat {\n\t\tconstructor(bindGroupFormat){\n\t\t\t\tconst device = bindGroupFormat.device;\n\t\t\t\tconst { key, desc } = this.createDescriptor(bindGroupFormat);\n\t\t\t\tthis.key = stringIds$1.get(key);\n\t\t\t\tthis.bindGroupLayout = device.wgpu.createBindGroupLayout(desc);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.bindGroupLayout = null;\n\t\t}\n\t\tloseContext() {}\n\t\tcreateDescriptor(bindGroupFormat) {\n\t\t\t\tconst entries = [];\n\t\t\t\tlet key = '';\n\t\t\t\tbindGroupFormat.uniformBufferFormats.forEach((bufferFormat)=>{\n\t\t\t\t\t\tconst visibility = WebgpuUtils.shaderStage(bufferFormat.visibility);\n\t\t\t\t\t\tkey += `#${bufferFormat.slot}U:${visibility}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: bufferFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\tbuffer: {\n\t\t\t\t\t\t\t\t\t\ttype: 'uniform',\n\t\t\t\t\t\t\t\t\t\thasDynamicOffset: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tbindGroupFormat.textureFormats.forEach((textureFormat)=>{\n\t\t\t\t\t\tconst visibility = WebgpuUtils.shaderStage(textureFormat.visibility);\n\t\t\t\t\t\tconst sampleType = textureFormat.sampleType;\n\t\t\t\t\t\tconst viewDimension = textureFormat.textureDimension;\n\t\t\t\t\t\tconst multisampled = false;\n\t\t\t\t\t\tconst gpuSampleType = sampleTypes[sampleType];\n\t\t\t\t\t\tkey += `#${textureFormat.slot}T:${visibility}-${gpuSampleType}-${viewDimension}-${multisampled}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: textureFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\ttexture: {\n\t\t\t\t\t\t\t\t\t\tsampleType: gpuSampleType,\n\t\t\t\t\t\t\t\t\t\tviewDimension: viewDimension,\n\t\t\t\t\t\t\t\t\t\tmultisampled: multisampled\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (textureFormat.hasSampler) {\n\t\t\t\t\t\t\t\tconst gpuSamplerType = samplerTypes[sampleType];\n\t\t\t\t\t\t\t\tkey += `#${textureFormat.slot + 1}S:${visibility}-${gpuSamplerType}`;\n\t\t\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\t\t\tbinding: textureFormat.slot + 1,\n\t\t\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\t\t\tsampler: {\n\t\t\t\t\t\t\t\t\t\t\t\ttype: gpuSamplerType\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tbindGroupFormat.storageTextureFormats.forEach((textureFormat)=>{\n\t\t\t\t\t\tconst { format, textureDimension } = textureFormat;\n\t\t\t\t\t\tconst { read, write } = textureFormat;\n\t\t\t\t\t\tkey += `#${textureFormat.slot}ST:${format}-${textureDimension}-${read ? 'r1' : 'r0'}-${write ? 'w1' : 'w0'}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: textureFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: GPUShaderStage.COMPUTE,\n\t\t\t\t\t\t\t\tstorageTexture: {\n\t\t\t\t\t\t\t\t\t\taccess: read ? write ? 'read-write' : 'read-only' : 'write-only',\n\t\t\t\t\t\t\t\t\t\tformat: gpuTextureFormats[format],\n\t\t\t\t\t\t\t\t\t\tviewDimension: textureDimension\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tbindGroupFormat.storageBufferFormats.forEach((bufferFormat)=>{\n\t\t\t\t\t\tconst readOnly = bufferFormat.readOnly;\n\t\t\t\t\t\tconst visibility = WebgpuUtils.shaderStage(bufferFormat.visibility);\n\t\t\t\t\t\tkey += `#${bufferFormat.slot}SB:${visibility}-${readOnly ? 'ro' : 'rw'}`;\n\t\t\t\t\t\tentries.push({\n\t\t\t\t\t\t\t\tbinding: bufferFormat.slot,\n\t\t\t\t\t\t\t\tvisibility: visibility,\n\t\t\t\t\t\t\t\tbuffer: {\n\t\t\t\t\t\t\t\t\t\ttype: readOnly ? 'read-only-storage' : 'storage'\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tentries: entries\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\t\tkey,\n\t\t\t\t\t\tdesc\n\t\t\t\t};\n\t\t}\n}\n\nclass WebgpuBuffer {\n\t\tconstructor(usageFlags = 0){\n\t\t\t\tthis.buffer = null;\n\t\t\t\tthis.usageFlags = 0;\n\t\t\t\tthis.usageFlags = usageFlags;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tif (this.buffer) {\n\t\t\t\t\t\tthis.buffer.destroy();\n\t\t\t\t\t\tthis.buffer = null;\n\t\t\t\t}\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn !!this.buffer;\n\t\t}\n\t\tloseContext() {}\n\t\tallocate(device, size) {\n\t\t\t\tthis.buffer = device.wgpu.createBuffer({\n\t\t\t\t\t\tsize,\n\t\t\t\t\t\tusage: this.usageFlags\n\t\t\t\t});\n\t\t}\n\t\tunlock(device, storage) {\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tif (!this.buffer) {\n\t\t\t\t\t\tconst size = storage.byteLength + 3 & -4;\n\t\t\t\t\t\tthis.usageFlags |= GPUBufferUsage.COPY_DST;\n\t\t\t\t\t\tthis.allocate(device, size);\n\t\t\t\t}\n\t\t\t\tconst srcOffset = storage.byteOffset ?? 0;\n\t\t\t\tconst srcData = new Uint8Array(storage.buffer ?? storage, srcOffset, storage.byteLength);\n\t\t\t\tconst data = new Uint8Array(this.buffer.size);\n\t\t\t\tdata.set(srcData);\n\t\t\t\twgpu.queue.writeBuffer(this.buffer, 0, data, 0, data.length);\n\t\t}\n\t\tread(device, offset, size, data, immediate) {\n\t\t\t\treturn device.readStorageBuffer(this, offset, size, data, immediate);\n\t\t}\n\t\twrite(device, bufferOffset, data, dataOffset, size) {\n\t\t\t\tdevice.writeStorageBuffer(this, bufferOffset, data, dataOffset, size);\n\t\t}\n\t\tclear(device, offset, size) {\n\t\t\t\tdevice.clearStorageBuffer(this, offset, size);\n\t\t}\n}\n\nclass WebgpuIndexBuffer extends WebgpuBuffer {\n\t\tconstructor(indexBuffer, options){\n\t\t\t\tsuper(BUFFERUSAGE_INDEX | (options?.storage ? BUFFERUSAGE_STORAGE : 0)), this.format = null;\n\t\t\t\tthis.format = indexBuffer.format === INDEXFORMAT_UINT16 ? 'uint16' : 'uint32';\n\t\t}\n\t\tunlock(indexBuffer) {\n\t\t\t\tconst device = indexBuffer.device;\n\t\t\t\tsuper.unlock(device, indexBuffer.storage);\n\t\t}\n}\n\nconst array$1 = {\n\t\tequals (arr1, arr2) {\n\t\t\t\tif (arr1.length !== arr2.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < arr1.length; i++){\n\t\t\t\t\t\tif (arr1[i] !== arr2[i]) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n};\n\nconst gpuVertexFormats = [];\ngpuVertexFormats[TYPE_INT8] = 'sint8';\ngpuVertexFormats[TYPE_UINT8] = 'uint8';\ngpuVertexFormats[TYPE_INT16] = 'sint16';\ngpuVertexFormats[TYPE_UINT16] = 'uint16';\ngpuVertexFormats[TYPE_INT32] = 'sint32';\ngpuVertexFormats[TYPE_UINT32] = 'uint32';\ngpuVertexFormats[TYPE_FLOAT32] = 'float32';\ngpuVertexFormats[TYPE_FLOAT16] = 'float16';\nconst gpuVertexFormatsNormalized = [];\ngpuVertexFormatsNormalized[TYPE_INT8] = 'snorm8';\ngpuVertexFormatsNormalized[TYPE_UINT8] = 'unorm8';\ngpuVertexFormatsNormalized[TYPE_INT16] = 'snorm16';\ngpuVertexFormatsNormalized[TYPE_UINT16] = 'unorm16';\ngpuVertexFormatsNormalized[TYPE_INT32] = 'sint32';\ngpuVertexFormatsNormalized[TYPE_UINT32] = 'uint32';\ngpuVertexFormatsNormalized[TYPE_FLOAT32] = 'float32';\ngpuVertexFormatsNormalized[TYPE_FLOAT16] = 'float16';\nclass WebgpuVertexBufferLayout {\n\t\tget(vertexFormat0, vertexFormat1 = null) {\n\t\t\t\tconst key = this.getKey(vertexFormat0, vertexFormat1);\n\t\t\t\tlet layout = this.cache.get(key);\n\t\t\t\tif (!layout) {\n\t\t\t\t\t\tlayout = this.create(vertexFormat0, vertexFormat1);\n\t\t\t\t\t\tthis.cache.set(key, layout);\n\t\t\t\t}\n\t\t\t\treturn layout;\n\t\t}\n\t\tgetKey(vertexFormat0, vertexFormat1 = null) {\n\t\t\t\treturn `${vertexFormat0?.renderingHashString}-${vertexFormat1?.renderingHashString}`;\n\t\t}\n\t\tcreate(vertexFormat0, vertexFormat1) {\n\t\t\t\tconst layout = [];\n\t\t\t\tconst addFormat = (format)=>{\n\t\t\t\t\t\tconst interleaved = format.interleaved;\n\t\t\t\t\t\tconst stepMode = format.instancing ? 'instance' : 'vertex';\n\t\t\t\t\t\tlet attributes = [];\n\t\t\t\t\t\tconst elementCount = format.elements.length;\n\t\t\t\t\t\tfor(let i = 0; i < elementCount; i++){\n\t\t\t\t\t\t\t\tconst element = format.elements[i];\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[element.name];\n\t\t\t\t\t\t\t\tconst formatTable = element.normalize ? gpuVertexFormatsNormalized : gpuVertexFormats;\n\t\t\t\t\t\t\t\tattributes.push({\n\t\t\t\t\t\t\t\t\t\tshaderLocation: location,\n\t\t\t\t\t\t\t\t\t\toffset: interleaved ? element.offset : 0,\n\t\t\t\t\t\t\t\t\t\tformat: `${formatTable[element.dataType]}${element.numComponents > 1 ? `x${element.numComponents}` : ''}`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!interleaved || i === elementCount - 1) {\n\t\t\t\t\t\t\t\t\t\tlayout.push({\n\t\t\t\t\t\t\t\t\t\t\t\tattributes: attributes,\n\t\t\t\t\t\t\t\t\t\t\t\tarrayStride: element.stride,\n\t\t\t\t\t\t\t\t\t\t\t\tstepMode: stepMode\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tattributes = [];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (vertexFormat0) {\n\t\t\t\t\t\taddFormat(vertexFormat0);\n\t\t\t\t}\n\t\t\t\tif (vertexFormat1) {\n\t\t\t\t\t\taddFormat(vertexFormat1);\n\t\t\t\t}\n\t\t\t\treturn layout;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n}\n\nclass WebgpuPipeline {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tgetPipelineLayout(bindGroupFormats) {\n\t\t\t\tconst bindGroupLayouts = [];\n\t\t\t\tbindGroupFormats.forEach((format)=>{\n\t\t\t\t\t\tbindGroupLayouts.push(format.bindGroupLayout);\n\t\t\t\t});\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tbindGroupLayouts: bindGroupLayouts\n\t\t\t\t};\n\t\t\t\tconst pipelineLayout = this.device.wgpu.createPipelineLayout(desc);\n\t\t\t\treturn pipelineLayout;\n\t\t}\n}\n\nconst _primitiveTopology = [\n\t\t'point-list',\n\t\t'line-list',\n\t\tundefined,\n\t\t'line-strip',\n\t\t'triangle-list',\n\t\t'triangle-strip',\n\t\tundefined\n];\nconst _blendOperation = [\n\t\t'add',\n\t\t'subtract',\n\t\t'reverse-subtract',\n\t\t'min',\n\t\t'max'\n];\nconst _blendFactor = [\n\t\t'zero',\n\t\t'one',\n\t\t'src',\n\t\t'one-minus-src',\n\t\t'dst',\n\t\t'one-minus-dst',\n\t\t'src-alpha',\n\t\t'src-alpha-saturated',\n\t\t'one-minus-src-alpha',\n\t\t'dst-alpha',\n\t\t'one-minus-dst-alpha',\n\t\t'constant',\n\t\t'one-minus-constant'\n];\nconst _compareFunction = [\n\t\t'never',\n\t\t'less',\n\t\t'equal',\n\t\t'less-equal',\n\t\t'greater',\n\t\t'not-equal',\n\t\t'greater-equal',\n\t\t'always'\n];\nconst _cullModes = [\n\t\t'none',\n\t\t'back',\n\t\t'front'\n];\nconst _stencilOps = [\n\t\t'keep',\n\t\t'zero',\n\t\t'replace',\n\t\t'increment-clamp',\n\t\t'increment-wrap',\n\t\t'decrement-clamp',\n\t\t'decrement-wrap',\n\t\t'invert'\n];\nconst _indexFormat = [\n\t\t'',\n\t\t'uint16',\n\t\t'uint32'\n];\nclass CacheEntry {\n}\nclass WebgpuRenderPipeline extends WebgpuPipeline {\n\t\tconstructor(device){\n\t\t\t\tsuper(device), this.lookupHashes = new Uint32Array(14);\n\t\t\t\tthis.vertexBufferLayout = new WebgpuVertexBufferLayout();\n\t\t\t\tthis.cache = new Map();\n\t\t}\n\t\tget(primitive, vertexFormat0, vertexFormat1, ibFormat, shader, renderTarget, bindGroupFormats, blendState, depthState, cullMode, stencilEnabled, stencilFront, stencilBack) {\n\t\t\t\tconst primitiveType = primitive.type;\n\t\t\t\tif (ibFormat && primitiveType !== PRIMITIVE_LINESTRIP && primitiveType !== PRIMITIVE_TRISTRIP) {\n\t\t\t\t\t\tibFormat = undefined;\n\t\t\t\t}\n\t\t\t\tconst lookupHashes = this.lookupHashes;\n\t\t\t\tlookupHashes[0] = primitiveType;\n\t\t\t\tlookupHashes[1] = shader.id;\n\t\t\t\tlookupHashes[2] = cullMode;\n\t\t\t\tlookupHashes[3] = depthState.key;\n\t\t\t\tlookupHashes[4] = blendState.key;\n\t\t\t\tlookupHashes[5] = vertexFormat0?.renderingHash ?? 0;\n\t\t\t\tlookupHashes[6] = vertexFormat1?.renderingHash ?? 0;\n\t\t\t\tlookupHashes[7] = renderTarget.impl.key;\n\t\t\t\tlookupHashes[8] = bindGroupFormats[0]?.key ?? 0;\n\t\t\t\tlookupHashes[9] = bindGroupFormats[1]?.key ?? 0;\n\t\t\t\tlookupHashes[10] = bindGroupFormats[2]?.key ?? 0;\n\t\t\t\tlookupHashes[11] = stencilEnabled ? stencilFront.key : 0;\n\t\t\t\tlookupHashes[12] = stencilEnabled ? stencilBack.key : 0;\n\t\t\t\tlookupHashes[13] = ibFormat ?? 0;\n\t\t\t\tconst hash = hash32Fnv1a(lookupHashes);\n\t\t\t\tlet cacheEntries = this.cache.get(hash);\n\t\t\t\tif (cacheEntries) {\n\t\t\t\t\t\tfor(let i = 0; i < cacheEntries.length; i++){\n\t\t\t\t\t\t\t\tconst entry = cacheEntries[i];\n\t\t\t\t\t\t\t\tif (array$1.equals(entry.hashes, lookupHashes)) {\n\t\t\t\t\t\t\t\t\t\treturn entry.pipeline;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst primitiveTopology = _primitiveTopology[primitiveType];\n\t\t\t\tconst pipelineLayout = this.getPipelineLayout(bindGroupFormats);\n\t\t\t\tconst vertexBufferLayout = this.vertexBufferLayout.get(vertexFormat0, vertexFormat1);\n\t\t\t\tconst cacheEntry = new CacheEntry();\n\t\t\t\tcacheEntry.hashes = new Uint32Array(lookupHashes);\n\t\t\t\tcacheEntry.pipeline = this.create(primitiveTopology, ibFormat, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack);\n\t\t\t\tif (cacheEntries) {\n\t\t\t\t\t\tcacheEntries.push(cacheEntry);\n\t\t\t\t} else {\n\t\t\t\t\t\tcacheEntries = [\n\t\t\t\t\t\t\t\tcacheEntry\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis.cache.set(hash, cacheEntries);\n\t\t\t\treturn cacheEntry.pipeline;\n\t\t}\n\t\tgetBlend(blendState) {\n\t\t\t\tlet blend;\n\t\t\t\tif (blendState.blend) {\n\t\t\t\t\t\tblend = {\n\t\t\t\t\t\t\t\tcolor: {\n\t\t\t\t\t\t\t\t\t\toperation: _blendOperation[blendState.colorOp],\n\t\t\t\t\t\t\t\t\t\tsrcFactor: _blendFactor[blendState.colorSrcFactor],\n\t\t\t\t\t\t\t\t\t\tdstFactor: _blendFactor[blendState.colorDstFactor]\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\talpha: {\n\t\t\t\t\t\t\t\t\t\toperation: _blendOperation[blendState.alphaOp],\n\t\t\t\t\t\t\t\t\t\tsrcFactor: _blendFactor[blendState.alphaSrcFactor],\n\t\t\t\t\t\t\t\t\t\tdstFactor: _blendFactor[blendState.alphaDstFactor]\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn blend;\n\t\t}\n\t\tgetDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack, primitiveTopology) {\n\t\t\t\tlet depthStencil;\n\t\t\t\tconst { depth, stencil } = renderTarget;\n\t\t\t\tif (depth || stencil) {\n\t\t\t\t\t\tdepthStencil = {\n\t\t\t\t\t\t\t\tformat: renderTarget.impl.depthAttachment.format\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (depth) {\n\t\t\t\t\t\t\t\tdepthStencil.depthWriteEnabled = depthState.write;\n\t\t\t\t\t\t\t\tdepthStencil.depthCompare = _compareFunction[depthState.func];\n\t\t\t\t\t\t\t\tconst biasAllowed = primitiveTopology === 'triangle-list' || primitiveTopology === 'triangle-strip';\n\t\t\t\t\t\t\t\tdepthStencil.depthBias = biasAllowed ? depthState.depthBias : 0;\n\t\t\t\t\t\t\t\tdepthStencil.depthBiasSlopeScale = biasAllowed ? depthState.depthBiasSlope : 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdepthStencil.depthWriteEnabled = false;\n\t\t\t\t\t\t\t\tdepthStencil.depthCompare = 'always';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (stencil && stencilEnabled) {\n\t\t\t\t\t\t\t\tdepthStencil.stencilReadMas = stencilFront.readMask;\n\t\t\t\t\t\t\t\tdepthStencil.stencilWriteMask = stencilFront.writeMask;\n\t\t\t\t\t\t\t\tdepthStencil.stencilFront = {\n\t\t\t\t\t\t\t\t\t\tcompare: _compareFunction[stencilFront.func],\n\t\t\t\t\t\t\t\t\t\tfailOp: _stencilOps[stencilFront.fail],\n\t\t\t\t\t\t\t\t\t\tpassOp: _stencilOps[stencilFront.zpass],\n\t\t\t\t\t\t\t\t\t\tdepthFailOp: _stencilOps[stencilFront.zfail]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tdepthStencil.stencilBack = {\n\t\t\t\t\t\t\t\t\t\tcompare: _compareFunction[stencilBack.func],\n\t\t\t\t\t\t\t\t\t\tfailOp: _stencilOps[stencilBack.fail],\n\t\t\t\t\t\t\t\t\t\tpassOp: _stencilOps[stencilBack.zpass],\n\t\t\t\t\t\t\t\t\t\tdepthFailOp: _stencilOps[stencilBack.zfail]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn depthStencil;\n\t\t}\n\t\tcreate(primitiveTopology, ibFormat, shader, renderTarget, pipelineLayout, blendState, depthState, vertexBufferLayout, cullMode, stencilEnabled, stencilFront, stencilBack) {\n\t\t\t\tconst wgpu = this.device.wgpu;\n\t\t\t\tconst webgpuShader = shader.impl;\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tvertex: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint,\n\t\t\t\t\t\t\t\tbuffers: vertexBufferLayout\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprimitive: {\n\t\t\t\t\t\t\t\ttopology: primitiveTopology,\n\t\t\t\t\t\t\t\tfrontFace: 'ccw',\n\t\t\t\t\t\t\t\tcullMode: _cullModes[cullMode]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tdepthStencil: this.getDepthStencil(depthState, renderTarget, stencilEnabled, stencilFront, stencilBack, primitiveTopology),\n\t\t\t\t\t\tmultisample: {\n\t\t\t\t\t\t\t\tcount: renderTarget.samples\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlayout: pipelineLayout\n\t\t\t\t};\n\t\t\t\tif (ibFormat) {\n\t\t\t\t\t\tdesc.primitive.stripIndexFormat = _indexFormat[ibFormat];\n\t\t\t\t}\n\t\t\t\tdesc.fragment = {\n\t\t\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\t\t\ttargets: []\n\t\t\t\t};\n\t\t\t\tconst colorAttachments = renderTarget.impl.colorAttachments;\n\t\t\t\tif (colorAttachments.length > 0) {\n\t\t\t\t\t\tlet writeMask = 0;\n\t\t\t\t\t\tif (blendState.redWrite) writeMask |= GPUColorWrite.RED;\n\t\t\t\t\t\tif (blendState.greenWrite) writeMask |= GPUColorWrite.GREEN;\n\t\t\t\t\t\tif (blendState.blueWrite) writeMask |= GPUColorWrite.BLUE;\n\t\t\t\t\t\tif (blendState.alphaWrite) writeMask |= GPUColorWrite.ALPHA;\n\t\t\t\t\t\tconst blend = this.getBlend(blendState);\n\t\t\t\t\t\tcolorAttachments.forEach((attachment)=>{\n\t\t\t\t\t\t\t\tdesc.fragment.targets.push({\n\t\t\t\t\t\t\t\t\t\tformat: attachment.format,\n\t\t\t\t\t\t\t\t\t\twriteMask: writeMask,\n\t\t\t\t\t\t\t\t\t\tblend: blend\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst pipeline = wgpu.createRenderPipeline(desc);\n\t\t\t\treturn pipeline;\n\t\t}\n}\n\nclass WebgpuComputePipeline extends WebgpuPipeline {\n\t\tget(shader, bindGroupFormat) {\n\t\t\t\tconst pipelineLayout = this.getPipelineLayout([\n\t\t\t\t\t\tbindGroupFormat.impl\n\t\t\t\t]);\n\t\t\t\tconst pipeline = this.create(shader, pipelineLayout);\n\t\t\t\treturn pipeline;\n\t\t}\n\t\tcreate(shader, pipelineLayout) {\n\t\t\t\tconst wgpu = this.device.wgpu;\n\t\t\t\tconst webgpuShader = shader.impl;\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tcompute: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getComputeShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.computeEntryPoint\n\t\t\t\t\t\t},\n\t\t\t\t\t\tlayout: pipelineLayout\n\t\t\t\t};\n\t\t\t\tconst pipeline = wgpu.createComputePipeline(desc);\n\t\t\t\treturn pipeline;\n\t\t}\n}\n\nclass RefCountedObject {\n\t\tincRefCount() {\n\t\t\t\tthis._refCount++;\n\t\t}\n\t\tdecRefCount() {\n\t\t\t\tthis._refCount--;\n\t\t}\n\t\tget refCount() {\n\t\t\t\treturn this._refCount;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._refCount = 0;\n\t\t}\n}\n\nclass Entry extends RefCountedObject {\n\t\tconstructor(obj){\n\t\t\t\tsuper();\n\t\t\t\tthis.object = obj;\n\t\t\t\tthis.incRefCount();\n\t\t}\n}\nclass RefCountedKeyCache {\n\t\tdestroy() {\n\t\t\t\tthis.cache.forEach((entry)=>{\n\t\t\t\t\t\tentry.object?.destroy();\n\t\t\t\t});\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tget(key) {\n\t\t\t\tconst entry = this.cache.get(key);\n\t\t\t\tif (entry) {\n\t\t\t\t\t\tentry.incRefCount();\n\t\t\t\t\t\treturn entry.object;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset(key, object) {\n\t\t\t\tthis.cache.set(key, new Entry(object));\n\t\t}\n\t\trelease(key) {\n\t\t\t\tconst entry = this.cache.get(key);\n\t\t\t\tif (entry) {\n\t\t\t\t\t\tentry.decRefCount();\n\t\t\t\t\t\tif (entry.refCount === 0) {\n\t\t\t\t\t\t\t\tthis.cache.delete(key);\n\t\t\t\t\t\t\t\tentry.object?.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n}\n\nclass MultisampledTextureCache extends RefCountedKeyCache {\n\t\tloseContext(device) {\n\t\t\t\tthis.clear();\n\t\t}\n}\nconst multisampledTextureCache = new DeviceCache();\nconst getMultisampledTextureCache = (device)=>{\n\t\treturn multisampledTextureCache.get(device, ()=>{\n\t\t\t\treturn new MultisampledTextureCache();\n\t\t});\n};\n\nconst stringIds = new StringIds();\nclass ColorAttachment {\n\t\tdestroy() {\n\t\t\t\tthis.multisampledBuffer?.destroy();\n\t\t\t\tthis.multisampledBuffer = null;\n\t\t}\n}\nclass DepthAttachment {\n\t\tconstructor(gpuFormat){\n\t\t\t\tthis.depthTexture = null;\n\t\t\t\tthis.depthTextureInternal = false;\n\t\t\t\tthis.multisampledDepthBuffer = null;\n\t\t\t\tthis.format = gpuFormat;\n\t\t\t\tthis.hasStencil = gpuFormat === 'depth24plus-stencil8';\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tif (this.depthTextureInternal) {\n\t\t\t\t\t\tthis.depthTexture?.destroy();\n\t\t\t\t\t\tthis.depthTexture = null;\n\t\t\t\t}\n\t\t\t\tif (this.multisampledDepthBuffer) {\n\t\t\t\t\t\tthis.multisampledDepthBuffer = null;\n\t\t\t\t\t\tgetMultisampledTextureCache(device).release(this.multisampledDepthBufferKey);\n\t\t\t\t}\n\t\t}\n}\nclass WebgpuRenderTarget {\n\t\tconstructor(renderTarget){\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.colorAttachments = [];\n\t\t\t\tthis.depthAttachment = null;\n\t\t\t\tthis.assignedColorTexture = null;\n\t\t\t\tthis.renderPassDescriptor = {};\n\t\t\t\tthis.isBackbuffer = false;\n\t\t\t\tthis.renderTarget = renderTarget;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tthis.initialized = false;\n\t\t\t\tthis.assignedColorTexture = null;\n\t\t\t\tthis.colorAttachments.forEach((colorAttachment)=>{\n\t\t\t\t\t\tcolorAttachment.destroy();\n\t\t\t\t});\n\t\t\t\tthis.colorAttachments.length = 0;\n\t\t\t\tthis.depthAttachment?.destroy(device);\n\t\t\t\tthis.depthAttachment = null;\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tconst rt = this.renderTarget;\n\t\t\t\tlet key = `${rt.samples}:${this.depthAttachment ? this.depthAttachment.format : 'nodepth'}`;\n\t\t\t\tthis.colorAttachments.forEach((colorAttachment)=>{\n\t\t\t\t\t\tkey += `:${colorAttachment.format}`;\n\t\t\t\t});\n\t\t\t\tthis.key = stringIds.get(key);\n\t\t}\n\t\tassignColorTexture(device, gpuTexture) {\n\t\t\t\tthis.assignedColorTexture = gpuTexture;\n\t\t\t\tconst view = gpuTexture.createView({\n\t\t\t\t\t\tformat: device.backBufferViewFormat\n\t\t\t\t});\n\t\t\t\tconst colorAttachment = this.renderPassDescriptor.colorAttachments[0];\n\t\t\t\tconst samples = this.renderTarget.samples;\n\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\tcolorAttachment.resolveTarget = view;\n\t\t\t\t} else {\n\t\t\t\t\t\tcolorAttachment.view = view;\n\t\t\t\t}\n\t\t\t\tthis.setColorAttachment(0, undefined, device.backBufferViewFormat);\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tsetColorAttachment(index, multisampledBuffer, format) {\n\t\t\t\tif (!this.colorAttachments[index]) {\n\t\t\t\t\t\tthis.colorAttachments[index] = new ColorAttachment();\n\t\t\t\t}\n\t\t\t\tif (multisampledBuffer) {\n\t\t\t\t\t\tthis.colorAttachments[index].multisampledBuffer = multisampledBuffer;\n\t\t\t\t}\n\t\t\t\tif (format) {\n\t\t\t\t\t\tthis.colorAttachments[index].format = format;\n\t\t\t\t}\n\t\t}\n\t\tinit(device, renderTarget) {\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tthis.initDepthStencil(device, wgpu, renderTarget);\n\t\t\t\tif (renderTarget._colorBuffers) {\n\t\t\t\t\t\trenderTarget._colorBuffers.forEach((colorBuffer, index)=>{\n\t\t\t\t\t\t\t\tthis.setColorAttachment(index, undefined, colorBuffer.impl.format);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.renderPassDescriptor.colorAttachments = [];\n\t\t\t\tconst count = this.isBackbuffer ? 1 : renderTarget._colorBuffers?.length ?? 0;\n\t\t\t\tfor(let i = 0; i < count; ++i){\n\t\t\t\t\t\tconst colorAttachment = this.initColor(device, wgpu, renderTarget, i);\n\t\t\t\t\t\tconst isDefaultFramebuffer = i === 0 && this.colorAttachments[0]?.format;\n\t\t\t\t\t\tif (colorAttachment.view || isDefaultFramebuffer) {\n\t\t\t\t\t\t\t\tthis.renderPassDescriptor.colorAttachments.push(colorAttachment);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.initialized = true;\n\t\t}\n\t\tinitDepthStencil(device, wgpu, renderTarget) {\n\t\t\t\tconst { samples, width, height, depth, depthBuffer } = renderTarget;\n\t\t\t\tif (depth || depthBuffer) {\n\t\t\t\t\t\tlet renderingView;\n\t\t\t\t\t\tif (!depthBuffer) {\n\t\t\t\t\t\t\t\tthis.depthAttachment = new DepthAttachment('depth24plus-stencil8');\n\t\t\t\t\t\t\t\tconst depthTextureDesc = {\n\t\t\t\t\t\t\t\t\t\tsize: [\n\t\t\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\t\t\t\t\t\tformat: this.depthAttachment.format,\n\t\t\t\t\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\t\t\t\t\tdepthTextureDesc.usage |= GPUTextureUsage.TEXTURE_BINDING;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdepthTextureDesc.usage |= GPUTextureUsage.COPY_SRC;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst depthTexture = wgpu.createTexture(depthTextureDesc);\n\t\t\t\t\t\t\t\tthis.depthAttachment.depthTexture = depthTexture;\n\t\t\t\t\t\t\t\tthis.depthAttachment.depthTextureInternal = true;\n\t\t\t\t\t\t\t\trenderingView = depthTexture.createView();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.depthAttachment = new DepthAttachment(depthBuffer.impl.format);\n\t\t\t\t\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\t\t\t\t\tconst depthFormat = 'depth24plus-stencil8';\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.format = depthFormat;\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.hasStencil = depthFormat === 'depth24plus-stencil8';\n\t\t\t\t\t\t\t\t\t\tconst key = `${depthBuffer.id}:${width}:${height}:${samples}:${depthFormat}`;\n\t\t\t\t\t\t\t\t\t\tconst msTextures = getMultisampledTextureCache(device);\n\t\t\t\t\t\t\t\t\t\tlet msDepthTexture = msTextures.get(key);\n\t\t\t\t\t\t\t\t\t\tif (!msDepthTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst multisampledDepthDesc = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsize: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformat: depthFormat,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | (depthFormat !== depthBuffer.impl.format ? GPUTextureUsage.TEXTURE_BINDING : 0)\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\tmsDepthTexture = wgpu.createTexture(multisampledDepthDesc);\n\t\t\t\t\t\t\t\t\t\t\t\tmsTextures.set(key, msDepthTexture);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.multisampledDepthBuffer = msDepthTexture;\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.multisampledDepthBufferKey = key;\n\t\t\t\t\t\t\t\t\t\trenderingView = msDepthTexture.createView();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst depthTexture = depthBuffer.impl.gpuTexture;\n\t\t\t\t\t\t\t\t\t\tthis.depthAttachment.depthTexture = depthTexture;\n\t\t\t\t\t\t\t\t\t\trenderingView = depthTexture.createView();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderPassDescriptor.depthStencilAttachment = {\n\t\t\t\t\t\t\t\tview: renderingView\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tinitColor(device, wgpu, renderTarget, index) {\n\t\t\t\tconst colorAttachment = {};\n\t\t\t\tconst { samples, width, height, mipLevel } = renderTarget;\n\t\t\t\tconst colorBuffer = renderTarget.getColorBuffer(index);\n\t\t\t\tlet colorView = null;\n\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\tconst mipLevelCount = 1;\n\t\t\t\t\t\tif (colorBuffer.cubemap) {\n\t\t\t\t\t\t\t\tcolorView = colorBuffer.impl.createView({\n\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\tbaseArrayLayer: renderTarget.face,\n\t\t\t\t\t\t\t\t\t\tarrayLayerCount: 1,\n\t\t\t\t\t\t\t\t\t\tmipLevelCount,\n\t\t\t\t\t\t\t\t\t\tbaseMipLevel: mipLevel\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcolorView = colorBuffer.impl.createView({\n\t\t\t\t\t\t\t\t\t\tmipLevelCount,\n\t\t\t\t\t\t\t\t\t\tbaseMipLevel: mipLevel\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (samples > 1) {\n\t\t\t\t\t\tconst format = this.isBackbuffer ? device.backBufferViewFormat : colorBuffer.impl.format;\n\t\t\t\t\t\tconst multisampledTextureDesc = {\n\t\t\t\t\t\t\t\tsize: [\n\t\t\t\t\t\t\t\t\t\twidth,\n\t\t\t\t\t\t\t\t\t\theight,\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\tsampleCount: samples,\n\t\t\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst multisampledColorBuffer = wgpu.createTexture(multisampledTextureDesc);\n\t\t\t\t\t\tthis.setColorAttachment(index, multisampledColorBuffer, multisampledTextureDesc.format);\n\t\t\t\t\t\tcolorAttachment.view = multisampledColorBuffer.createView();\n\t\t\t\t\t\tcolorAttachment.resolveTarget = colorView;\n\t\t\t\t} else {\n\t\t\t\t\t\tcolorAttachment.view = colorView;\n\t\t\t\t}\n\t\t\t\treturn colorAttachment;\n\t\t}\n\t\tsetupForRenderPass(renderPass, renderTarget) {\n\t\t\t\tconst count = this.renderPassDescriptor.colorAttachments?.length ?? 0;\n\t\t\t\tfor(let i = 0; i < count; ++i){\n\t\t\t\t\t\tconst colorAttachment = this.renderPassDescriptor.colorAttachments[i];\n\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\tconst srgb = renderTarget.isColorBufferSrgb(i);\n\t\t\t\t\t\tcolorAttachment.clearValue = srgb ? colorOps.clearValueLinear : colorOps.clearValue;\n\t\t\t\t\t\tcolorAttachment.loadOp = colorOps.clear ? 'clear' : 'load';\n\t\t\t\t\t\tcolorAttachment.storeOp = colorOps.store ? 'store' : 'discard';\n\t\t\t\t}\n\t\t\t\tconst depthAttachment = this.renderPassDescriptor.depthStencilAttachment;\n\t\t\t\tif (depthAttachment) {\n\t\t\t\t\t\tdepthAttachment.depthClearValue = renderPass.depthStencilOps.clearDepthValue;\n\t\t\t\t\t\tdepthAttachment.depthLoadOp = renderPass.depthStencilOps.clearDepth ? 'clear' : 'load';\n\t\t\t\t\t\tdepthAttachment.depthStoreOp = renderPass.depthStencilOps.storeDepth ? 'store' : 'discard';\n\t\t\t\t\t\tdepthAttachment.depthReadOnly = false;\n\t\t\t\t\t\tif (this.depthAttachment.hasStencil) {\n\t\t\t\t\t\t\t\tdepthAttachment.stencilClearValue = renderPass.depthStencilOps.clearStencilValue;\n\t\t\t\t\t\t\t\tdepthAttachment.stencilLoadOp = renderPass.depthStencilOps.clearStencil ? 'clear' : 'load';\n\t\t\t\t\t\t\t\tdepthAttachment.stencilStoreOp = renderPass.depthStencilOps.storeStencil ? 'store' : 'discard';\n\t\t\t\t\t\t\t\tdepthAttachment.stencilReadOnly = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.initialized = false;\n\t\t}\n\t\tresolve(device, target, color, depth) {}\n}\n\nconst uniformTypeToNumComponents = [];\nuniformTypeToNumComponents[UNIFORMTYPE_FLOAT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_VEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_INT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_IVEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_BOOL] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_BVEC4] = 4;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT2] = 8;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT3] = 12;\nuniformTypeToNumComponents[UNIFORMTYPE_MAT4] = 16;\nuniformTypeToNumComponents[UNIFORMTYPE_UINT] = 1;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC2] = 2;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC3] = 3;\nuniformTypeToNumComponents[UNIFORMTYPE_UVEC4] = 4;\nclass UniformFormat {\n\t\tget isArrayType() {\n\t\t\t\treturn this.count > 0;\n\t\t}\n\t\tconstructor(name, type, count = 0){\n\t\t\t\tthis.shortName = name;\n\t\t\t\tthis.name = count ? `${name}[0]` : name;\n\t\t\t\tthis.type = type;\n\t\t\t\tthis.numComponents = uniformTypeToNumComponents[type];\n\t\t\t\tthis.updateType = type;\n\t\t\t\tif (count > 0) {\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_FLOAT:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_FLOATARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_INT:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_INTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UINT:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UINTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BOOL:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BOOLARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC2:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC3:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_VEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_IVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_UVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_BVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_MAT4:\n\t\t\t\t\t\t\t\t\t\tthis.updateType = UNIFORMTYPE_MAT4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.count = count;\n\t\t\t\tlet componentSize = this.numComponents;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tcomponentSize = math.roundUp(componentSize, 4);\n\t\t\t\t}\n\t\t\t\tthis.byteSize = componentSize * 4;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tthis.byteSize *= count;\n\t\t\t\t}\n\t\t}\n\t\tcalculateOffset(offset) {\n\t\t\t\tlet alignment = this.byteSize <= 8 ? this.byteSize : 16;\n\t\t\t\tif (this.count) {\n\t\t\t\t\t\talignment = 16;\n\t\t\t\t}\n\t\t\t\toffset = math.roundUp(offset, alignment);\n\t\t\t\tthis.offset = offset / 4;\n\t\t}\n}\nclass UniformBufferFormat {\n\t\tconstructor(graphicsDevice, uniforms){\n\t\t\t\tthis.byteSize = 0;\n\t\t\t\tthis.map = new Map();\n\t\t\t\tthis.scope = graphicsDevice.scope;\n\t\t\t\tthis.uniforms = uniforms;\n\t\t\t\tlet offset = 0;\n\t\t\t\tfor(let i = 0; i < uniforms.length; i++){\n\t\t\t\t\t\tconst uniform = uniforms[i];\n\t\t\t\t\t\tuniform.calculateOffset(offset);\n\t\t\t\t\t\toffset = uniform.offset * 4 + uniform.byteSize;\n\t\t\t\t\t\tuniform.scopeId = this.scope.resolve(uniform.name);\n\t\t\t\t\t\tthis.map.set(uniform.name, uniform);\n\t\t\t\t}\n\t\t\t\tthis.byteSize = math.roundUp(offset, 16);\n\t\t}\n\t\tget(name) {\n\t\t\t\treturn this.map.get(name);\n\t\t}\n}\n\nconst KEYWORD$2 = /[ \\t]*(\\battribute\\b|\\bvarying\\b|\\buniform\\b)/g;\nconst KEYWORD_LINE$1 = /(\\battribute\\b|\\bvarying\\b|\\bout\\b|\\buniform\\b)[ \\t]*([^;]+)(;+)/g;\nconst MARKER$1 = '@@@';\nconst ARRAY_IDENTIFIER = /([\\w-]+)\\[(.*?)\\]/;\nconst precisionQualifiers = new Set([\n\t\t'highp',\n\t\t'mediump',\n\t\t'lowp'\n]);\nconst shadowSamplers = new Set([\n\t\t'sampler2DShadow',\n\t\t'samplerCubeShadow',\n\t\t'sampler2DArrayShadow'\n]);\nconst textureDimensions = {\n\t\tsampler2D: TEXTUREDIMENSION_2D,\n\t\tsampler3D: TEXTUREDIMENSION_3D,\n\t\tsamplerCube: TEXTUREDIMENSION_CUBE,\n\t\tsamplerCubeShadow: TEXTUREDIMENSION_CUBE,\n\t\tsampler2DShadow: TEXTUREDIMENSION_2D,\n\t\tsampler2DArray: TEXTUREDIMENSION_2D_ARRAY,\n\t\tsampler2DArrayShadow: TEXTUREDIMENSION_2D_ARRAY,\n\t\tisampler2D: TEXTUREDIMENSION_2D,\n\t\tusampler2D: TEXTUREDIMENSION_2D,\n\t\tisampler3D: TEXTUREDIMENSION_3D,\n\t\tusampler3D: TEXTUREDIMENSION_3D,\n\t\tisamplerCube: TEXTUREDIMENSION_CUBE,\n\t\tusamplerCube: TEXTUREDIMENSION_CUBE,\n\t\tisampler2DArray: TEXTUREDIMENSION_2D_ARRAY,\n\t\tusampler2DArray: TEXTUREDIMENSION_2D_ARRAY\n};\nconst textureDimensionInfo = {\n\t\t[TEXTUREDIMENSION_2D]: 'texture2D',\n\t\t[TEXTUREDIMENSION_CUBE]: 'textureCube',\n\t\t[TEXTUREDIMENSION_3D]: 'texture3D',\n\t\t[TEXTUREDIMENSION_2D_ARRAY]: 'texture2DArray'\n};\nlet UniformLine$1 = class UniformLine {\n\t\tconstructor(line, shader){\n\t\t\t\tthis.line = line;\n\t\t\t\tconst words = line.trim().split(/\\s+/);\n\t\t\t\tif (precisionQualifiers.has(words[0])) {\n\t\t\t\t\t\tthis.precision = words.shift();\n\t\t\t\t}\n\t\t\t\tthis.type = words.shift();\n\t\t\t\tif (line.includes(',')) ;\n\t\t\t\tif (line.includes('[')) {\n\t\t\t\t\t\tconst rest = words.join(' ');\n\t\t\t\t\t\tconst match = ARRAY_IDENTIFIER.exec(rest);\n\t\t\t\t\t\tthis.name = match[1];\n\t\t\t\t\t\tthis.arraySize = Number(match[2]);\n\t\t\t\t\t\tif (isNaN(this.arraySize)) {\n\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.name = words.shift();\n\t\t\t\t\t\tthis.arraySize = 0;\n\t\t\t\t}\n\t\t\t\tthis.isSampler = this.type.indexOf('sampler') !== -1;\n\t\t\t\tthis.isSignedInt = this.type.indexOf('isampler') !== -1;\n\t\t\t\tthis.isUnsignedInt = this.type.indexOf('usampler') !== -1;\n\t\t}\n};\nclass ShaderProcessorGLSL {\n\t\tstatic run(device, shaderDefinition, shader) {\n\t\t\t\tconst varyingMap = new Map();\n\t\t\t\tconst vertexExtracted = ShaderProcessorGLSL.extract(shaderDefinition.vshader);\n\t\t\t\tconst fragmentExtracted = ShaderProcessorGLSL.extract(shaderDefinition.fshader);\n\t\t\t\tconst attributesMap = new Map();\n\t\t\t\tconst attributesBlock = ShaderProcessorGLSL.processAttributes(vertexExtracted.attributes, shaderDefinition.attributes, attributesMap, shaderDefinition.processingOptions);\n\t\t\t\tconst vertexVaryingsBlock = ShaderProcessorGLSL.processVaryings(vertexExtracted.varyings, varyingMap, true);\n\t\t\t\tconst fragmentVaryingsBlock = ShaderProcessorGLSL.processVaryings(fragmentExtracted.varyings, varyingMap, false);\n\t\t\t\tconst outBlock = ShaderProcessorGLSL.processOuts(fragmentExtracted.outs);\n\t\t\t\tconst concatUniforms = vertexExtracted.uniforms.concat(fragmentExtracted.uniforms);\n\t\t\t\tconst uniforms = Array.from(new Set(concatUniforms));\n\t\t\t\tconst parsedUniforms = uniforms.map((line)=>new UniformLine$1(line, shader));\n\t\t\t\tconst uniformsData = ShaderProcessorGLSL.processUniforms(device, parsedUniforms, shaderDefinition.processingOptions, shader);\n\t\t\t\tconst vBlock = `${attributesBlock}\\n${vertexVaryingsBlock}\\n${uniformsData.code}`;\n\t\t\t\tconst vshader = vertexExtracted.src.replace(MARKER$1, vBlock);\n\t\t\t\tconst fBlock = `${fragmentVaryingsBlock}\\n${outBlock}\\n${uniformsData.code}`;\n\t\t\t\tconst fshader = fragmentExtracted.src.replace(MARKER$1, fBlock);\n\t\t\t\treturn {\n\t\t\t\t\t\tvshader: vshader,\n\t\t\t\t\t\tfshader: fshader,\n\t\t\t\t\t\tattributes: attributesMap,\n\t\t\t\t\t\tmeshUniformBufferFormat: uniformsData.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: uniformsData.meshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic extract(src) {\n\t\t\t\tconst attributes = [];\n\t\t\t\tconst varyings = [];\n\t\t\t\tconst outs = [];\n\t\t\t\tconst uniforms = [];\n\t\t\t\tlet replacement = `${MARKER$1}\\n`;\n\t\t\t\tlet match;\n\t\t\t\twhile((match = KEYWORD$2.exec(src)) !== null){\n\t\t\t\t\t\tconst keyword = match[1];\n\t\t\t\t\t\tswitch(keyword){\n\t\t\t\t\t\t\t\tcase 'attribute':\n\t\t\t\t\t\t\t\tcase 'varying':\n\t\t\t\t\t\t\t\tcase 'uniform':\n\t\t\t\t\t\t\t\tcase 'out':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD_LINE$1.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst lineMatch = KEYWORD_LINE$1.exec(src);\n\t\t\t\t\t\t\t\t\t\t\t\tif (keyword === 'attribute') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tattributes.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (keyword === 'varying') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvaryings.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (keyword === 'out') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\touts.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (keyword === 'uniform') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tuniforms.push(lineMatch[2]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tsrc = ShaderProcessorGLSL.cutOut(src, match.index, KEYWORD_LINE$1.lastIndex, replacement);\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD$2.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\t\t\t\t\t\t\treplacement = '';\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\tattributes,\n\t\t\t\t\t\tvaryings,\n\t\t\t\t\t\touts,\n\t\t\t\t\t\tuniforms\n\t\t\t\t};\n\t\t}\n\t\tstatic processUniforms(device, uniforms, processingOptions, shader) {\n\t\t\t\tconst uniformLinesSamplers = [];\n\t\t\t\tconst uniformLinesNonSamplers = [];\n\t\t\t\tuniforms.forEach((uniform)=>{\n\t\t\t\t\t\tif (uniform.isSampler) {\n\t\t\t\t\t\t\t\tuniformLinesSamplers.push(uniform);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuniformLinesNonSamplers.push(uniform);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst meshUniforms = [];\n\t\t\t\tuniformLinesNonSamplers.forEach((uniform)=>{\n\t\t\t\t\t\tif (!processingOptions.hasUniform(uniform.name)) {\n\t\t\t\t\t\t\t\tconst uniformType = uniformTypeToName.indexOf(uniform.type);\n\t\t\t\t\t\t\t\tconst uniformFormat = new UniformFormat(uniform.name, uniformType, uniform.arraySize);\n\t\t\t\t\t\t\t\tmeshUniforms.push(uniformFormat);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniforms.length === 0) {\n\t\t\t\t\t\tmeshUniforms.push(new UniformFormat(UNUSED_UNIFORM_NAME, UNIFORMTYPE_FLOAT));\n\t\t\t\t}\n\t\t\t\tconst meshUniformBufferFormat = meshUniforms.length ? new UniformBufferFormat(device, meshUniforms) : null;\n\t\t\t\tconst textureFormats = [];\n\t\t\t\tuniformLinesSamplers.forEach((uniform)=>{\n\t\t\t\t\t\tif (!processingOptions.hasTexture(uniform.name)) {\n\t\t\t\t\t\t\t\tlet sampleType = SAMPLETYPE_FLOAT;\n\t\t\t\t\t\t\t\tif (uniform.isSignedInt) {\n\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_INT;\n\t\t\t\t\t\t\t\t} else if (uniform.isUnsignedInt) {\n\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_UINT;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (uniform.precision === 'highp') {\n\t\t\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_UNFILTERABLE_FLOAT;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (shadowSamplers.has(uniform.type)) {\n\t\t\t\t\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_DEPTH;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst dimension = textureDimensions[uniform.type];\n\t\t\t\t\t\t\t\ttextureFormats.push(new BindTextureFormat(uniform.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, dimension, sampleType));\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst meshBindGroupFormat = new BindGroupFormat(device, textureFormats);\n\t\t\t\tlet code = '';\n\t\t\t\tprocessingOptions.uniformFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += ShaderProcessorGLSL.getUniformShaderDeclaration(format, bindGroupIndex, 0);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniformBufferFormat) {\n\t\t\t\t\t\tcode += ShaderProcessorGLSL.getUniformShaderDeclaration(meshUniformBufferFormat, BINDGROUP_MESH_UB, 0);\n\t\t\t\t}\n\t\t\t\tprocessingOptions.bindGroupFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += ShaderProcessorGLSL.getTexturesShaderDeclaration(format, bindGroupIndex);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcode += ShaderProcessorGLSL.getTexturesShaderDeclaration(meshBindGroupFormat, BINDGROUP_MESH);\n\t\t\t\treturn {\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmeshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic processVaryings(varyingLines, varyingMap, isVertex) {\n\t\t\t\tlet block = '';\n\t\t\t\tconst op = isVertex ? 'out' : 'in';\n\t\t\t\tvaryingLines.forEach((line, index)=>{\n\t\t\t\t\t\tconst words = ShaderProcessorGLSL.splitToWords(line);\n\t\t\t\t\t\tconst type = words.slice(0, -1).join(' ');\n\t\t\t\t\t\tconst name = words[words.length - 1];\n\t\t\t\t\t\tif (isVertex) {\n\t\t\t\t\t\t\t\tvaryingMap.set(name, index);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindex = varyingMap.get(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tblock += `layout(location = ${index}) ${op} ${type} ${name};\\n`;\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t}\n\t\tstatic processOuts(outsLines) {\n\t\t\t\tlet block = '';\n\t\t\t\toutsLines.forEach((line, index)=>{\n\t\t\t\t\t\tblock += `layout(location = ${index}) out ${line};\\n`;\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t}\n\t\tstatic getTypeCount(type) {\n\t\t\t\tconst lastChar = type.substring(type.length - 1);\n\t\t\t\tconst num = parseInt(lastChar, 10);\n\t\t\t\treturn isNaN(num) ? 1 : num;\n\t\t}\n\t\tstatic processAttributes(attributeLines, shaderDefinitionAttributes, attributesMap, processingOptions) {\n\t\t\t\tlet block = '';\n\t\t\t\tattributeLines.forEach((line)=>{\n\t\t\t\t\t\tconst words = ShaderProcessorGLSL.splitToWords(line);\n\t\t\t\t\t\tlet type = words[0];\n\t\t\t\t\t\tlet name = words[1];\n\t\t\t\t\t\tif (shaderDefinitionAttributes.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tconst semantic = shaderDefinitionAttributes[name];\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[semantic];\n\t\t\t\t\t\t\t\tattributesMap.set(location, name);\n\t\t\t\t\t\t\t\tlet copyCode;\n\t\t\t\t\t\t\t\tconst element = processingOptions.getVertexElement(semantic);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tconst dataType = element.dataType;\n\t\t\t\t\t\t\t\t\t\tif (dataType !== TYPE_FLOAT32 && dataType !== TYPE_FLOAT16 && !element.normalize && !element.asInt) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst attribNumElements = ShaderProcessorGLSL.getTypeCount(type);\n\t\t\t\t\t\t\t\t\t\t\t\tconst newName = `_private_${name}`;\n\t\t\t\t\t\t\t\t\t\t\t\tcopyCode = `vec${attribNumElements} ${name} = vec${attribNumElements}(${newName});\\n`;\n\t\t\t\t\t\t\t\t\t\t\t\tname = newName;\n\t\t\t\t\t\t\t\t\t\t\t\tconst isSignedType = dataType === TYPE_INT8 || dataType === TYPE_INT16 || dataType === TYPE_INT32;\n\t\t\t\t\t\t\t\t\t\t\t\tif (attribNumElements === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = isSignedType ? 'int' : 'uint';\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = isSignedType ? `ivec${attribNumElements}` : `uvec${attribNumElements}`;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tblock += `layout(location = ${location}) in ${type} ${name};\\n`;\n\t\t\t\t\t\t\t\tif (copyCode) {\n\t\t\t\t\t\t\t\t\t\tblock += copyCode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn block;\n\t\t}\n\t\tstatic splitToWords(line) {\n\t\t\t\tline = line.replace(/\\s+/g, ' ').trim();\n\t\t\t\treturn line.split(' ');\n\t\t}\n\t\tstatic cutOut(src, start, end, replacement) {\n\t\t\t\treturn src.substring(0, start) + replacement + src.substring(end);\n\t\t}\n\t\tstatic getUniformShaderDeclaration(format, bindGroup, bindIndex) {\n\t\t\t\tconst name = bindGroupNames[bindGroup];\n\t\t\t\tlet code = `layout(set = ${bindGroup}, binding = ${bindIndex}, std140) uniform ub_${name} {\\n`;\n\t\t\t\tformat.uniforms.forEach((uniform)=>{\n\t\t\t\t\t\tconst typeString = uniformTypeToName[uniform.type];\n\t\t\t\t\t\tcode += `    ${typeString} ${uniform.shortName}${uniform.count ? `[${uniform.count}]` : ''};\\n`;\n\t\t\t\t});\n\t\t\t\treturn `${code}};\\n`;\n\t\t}\n\t\tstatic getTexturesShaderDeclaration(bindGroupFormat, bindGroup) {\n\t\t\t\tlet code = '';\n\t\t\t\tbindGroupFormat.textureFormats.forEach((format)=>{\n\t\t\t\t\t\tlet textureType = textureDimensionInfo[format.textureDimension];\n\t\t\t\t\t\tconst isArray = textureType === 'texture2DArray';\n\t\t\t\t\t\tconst sampleTypePrefix = format.sampleType === SAMPLETYPE_UINT ? 'u' : format.sampleType === SAMPLETYPE_INT ? 'i' : '';\n\t\t\t\t\t\ttextureType = `${sampleTypePrefix}${textureType}`;\n\t\t\t\t\t\tlet namePostfix = '';\n\t\t\t\t\t\tlet extraCode = '';\n\t\t\t\t\t\tif (isArray) {\n\t\t\t\t\t\t\t\tnamePostfix = '_texture';\n\t\t\t\t\t\t\t\textraCode = `#define ${format.name} ${sampleTypePrefix}sampler2DArray(${format.name}${namePostfix}, ${format.name}_sampler)\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode += `layout(set = ${bindGroup}, binding = ${format.slot}) uniform ${textureType} ${format.name}${namePostfix};\\n`;\n\t\t\t\t\t\tif (format.hasSampler) {\n\t\t\t\t\t\t\t\tcode += `layout(set = ${bindGroup}, binding = ${format.slot + 1}) uniform sampler ${format.name}_sampler;\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode += extraCode;\n\t\t\t\t});\n\t\t\t\treturn code;\n\t\t}\n}\n\nconst KEYWORD$1 = /^[ \\t]*(attribute|varying|uniform)[\\t ]+/gm;\nconst KEYWORD_LINE = /^[ \\t]*(attribute|varying|uniform)[ \\t]*([^;]+)(;+)/gm;\nconst KEYWORD_RESOURCE = /^[ \\t]*var\\s*(?:(<storage,[^>]*>)\\s*([\\w\\d_]+)\\s*:\\s*(.*?)\\s*;|(<(?!storage,)[^>]*>)?\\s*([\\w\\d_]+)\\s*:\\s*(texture_.*|storage_texture_.*|storage\\w.*|external_texture|sampler(?:_comparison)?)\\s*;)\\s*$/gm;\nconst VARYING = /(?:@interpolate\\([^)]*\\)\\s*)?([\\w]+)\\s*:/;\nconst MARKER = '@@@';\nconst ENTRY_FUNCTION = /(@vertex|@fragment)\\s*fn\\s+\\w+\\s*\\(\\s*(\\w+)\\s*:[\\s\\S]*?\\{/;\nconst textureBaseInfo = {\n\t\t'texture_1d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_1D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_2d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_2d_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_3d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_3D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_cube': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_cube_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_multisampled_2d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_FLOAT\n\t\t},\n\t\t'texture_depth_2d': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_depth_2d_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_depth_cube': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_depth_cube_array': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_CUBE_ARRAY,\n\t\t\t\tbaseSampleType: SAMPLETYPE_DEPTH\n\t\t},\n\t\t'texture_external': {\n\t\t\t\tviewDimension: TEXTUREDIMENSION_2D,\n\t\t\t\tbaseSampleType: SAMPLETYPE_UNFILTERABLE_FLOAT\n\t\t}\n};\nconst getTextureInfo = (baseType, componentType)=>{\n\t\tconst baseInfo = textureBaseInfo[baseType];\n\t\tlet finalSampleType = baseInfo.baseSampleType;\n\t\tif (baseInfo.baseSampleType === SAMPLETYPE_FLOAT && baseType !== 'texture_multisampled_2d') {\n\t\t\t\tswitch(componentType){\n\t\t\t\t\t\tcase 'u32':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_UINT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'i32':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'f32':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'uff':\n\t\t\t\t\t\t\t\tfinalSampleType = SAMPLETYPE_UNFILTERABLE_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tviewDimension: baseInfo.viewDimension,\n\t\t\t\tsampleType: finalSampleType\n\t\t};\n};\nconst getTextureDeclarationType = (viewDimension, sampleType)=>{\n\t\tif (sampleType === SAMPLETYPE_DEPTH) {\n\t\t\t\tswitch(viewDimension){\n\t\t\t\t\t\tcase TEXTUREDIMENSION_2D:\n\t\t\t\t\t\t\t\treturn 'texture_depth_2d';\n\t\t\t\t\t\tcase TEXTUREDIMENSION_2D_ARRAY:\n\t\t\t\t\t\t\t\treturn 'texture_depth_2d_array';\n\t\t\t\t\t\tcase TEXTUREDIMENSION_CUBE:\n\t\t\t\t\t\t\t\treturn 'texture_depth_cube';\n\t\t\t\t\t\tcase TEXTUREDIMENSION_CUBE_ARRAY:\n\t\t\t\t\t\t\t\treturn 'texture_depth_cube_array';\n\t\t\t\t}\n\t\t}\n\t\tlet baseTypeString;\n\t\tswitch(viewDimension){\n\t\t\t\tcase TEXTUREDIMENSION_1D:\n\t\t\t\t\t\tbaseTypeString = 'texture_1d';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_2D:\n\t\t\t\t\t\tbaseTypeString = 'texture_2d';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_2D_ARRAY:\n\t\t\t\t\t\tbaseTypeString = 'texture_2d_array';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_3D:\n\t\t\t\t\t\tbaseTypeString = 'texture_3d';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_CUBE:\n\t\t\t\t\t\tbaseTypeString = 'texture_cube';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase TEXTUREDIMENSION_CUBE_ARRAY:\n\t\t\t\t\t\tbaseTypeString = 'texture_cube_array';\n\t\t\t\t\t\tbreak;\n\t\t}\n\t\tlet coreFormatString;\n\t\tswitch(sampleType){\n\t\t\t\tcase SAMPLETYPE_FLOAT:\n\t\t\t\tcase SAMPLETYPE_UNFILTERABLE_FLOAT:\n\t\t\t\t\t\tcoreFormatString = 'f32';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase SAMPLETYPE_UINT:\n\t\t\t\t\t\tcoreFormatString = 'u32';\n\t\t\t\t\t\tbreak;\n\t\t\t\tcase SAMPLETYPE_INT:\n\t\t\t\t\t\tcoreFormatString = 'i32';\n\t\t\t\t\t\tbreak;\n\t\t}\n\t\treturn `${baseTypeString}<${coreFormatString}>`;\n};\nconst wrappedArrayTypes = {\n\t\t'f32': 'WrappedF32',\n\t\t'i32': 'WrappedI32',\n\t\t'u32': 'WrappedU32',\n\t\t'vec2f': 'WrappedVec2F',\n\t\t'vec2i': 'WrappedVec2I',\n\t\t'vec2u': 'WrappedVec2U'\n};\nconst splitToWords = (line)=>{\n\t\tline = line.replace(/\\s+/g, ' ').trim();\n\t\treturn line.split(/[\\s:]+/);\n};\nconst UNIFORM_ARRAY_REGEX = /array<([^,]+),\\s*([^>]+)>/;\nclass UniformLine {\n\t\tconstructor(line, shader){\n\t\t\t\tthis.ubName = null;\n\t\t\t\tthis.arraySize = 0;\n\t\t\t\tthis.line = line;\n\t\t\t\tconst parts = splitToWords(line);\n\t\t\t\tif (parts.length < 2) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.name = parts[0];\n\t\t\t\tthis.type = parts.slice(1).join(' ');\n\t\t\t\tif (this.type.includes('array<')) {\n\t\t\t\t\t\tconst match = UNIFORM_ARRAY_REGEX.exec(this.type);\n\t\t\t\t\t\tthis.type = match[1].trim();\n\t\t\t\t\t\tthis.arraySize = Number(match[2]);\n\t\t\t\t\t\tif (isNaN(this.arraySize)) {\n\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\nconst TEXTURE_REGEX = /^\\s*var\\s+(\\w+)\\s*:\\s*(texture_\\w+)(?:<(\\w+)>)?;\\s*$/;\nconst STORAGE_TEXTURE_REGEX = /^\\s*var\\s+([\\w\\d_]+)\\s*:\\s*(texture_storage_2d|texture_storage_2d_array)<([\\w\\d_]+),\\s*(\\w+)>\\s*;\\s*$/;\nconst STORAGE_BUFFER_REGEX = /^\\s*var\\s*<storage,\\s*(read|write)?>\\s*([\\w\\d_]+)\\s*:\\s*(.*)\\s*;\\s*$/;\nconst EXTERNAL_TEXTURE_REGEX = /^\\s*var\\s+([\\w\\d_]+)\\s*:\\s*texture_external;\\s*$/;\nconst SAMPLER_REGEX = /^\\s*var\\s+([\\w\\d_]+)\\s*:\\s*(sampler|sampler_comparison)\\s*;\\s*$/;\nclass ResourceLine {\n\t\tconstructor(line, shader){\n\t\t\t\tthis.originalLine = line;\n\t\t\t\tthis.line = line;\n\t\t\t\tthis.isTexture = false;\n\t\t\t\tthis.isSampler = false;\n\t\t\t\tthis.isStorageTexture = false;\n\t\t\t\tthis.isStorageBuffer = false;\n\t\t\t\tthis.isExternalTexture = false;\n\t\t\t\tthis.type = '';\n\t\t\t\tthis.matchedElements = [];\n\t\t\t\tconst textureMatch = this.line.match(TEXTURE_REGEX);\n\t\t\t\tif (textureMatch) {\n\t\t\t\t\t\tthis.name = textureMatch[1];\n\t\t\t\t\t\tthis.type = textureMatch[2];\n\t\t\t\t\t\tthis.textureFormat = textureMatch[3];\n\t\t\t\t\t\tthis.isTexture = true;\n\t\t\t\t\t\tthis.matchedElements.push(...textureMatch);\n\t\t\t\t\t\tconst info = getTextureInfo(this.type, this.textureFormat);\n\t\t\t\t\t\tthis.textureDimension = info.viewDimension;\n\t\t\t\t\t\tthis.sampleType = info.sampleType;\n\t\t\t\t}\n\t\t\t\tconst storageTextureMatch = this.line.match(STORAGE_TEXTURE_REGEX);\n\t\t\t\tif (storageTextureMatch) {\n\t\t\t\t\t\tthis.isStorageTexture = true;\n\t\t\t\t\t\tthis.name = storageTextureMatch[1];\n\t\t\t\t\t\tthis.textureType = storageTextureMatch[2];\n\t\t\t\t\t\tthis.format = storageTextureMatch[3];\n\t\t\t\t\t\tthis.access = storageTextureMatch[4];\n\t\t\t\t\t\tthis.matchedElements.push(...storageTextureMatch);\n\t\t\t\t}\n\t\t\t\tconst storageBufferMatch = this.line.match(STORAGE_BUFFER_REGEX);\n\t\t\t\tif (storageBufferMatch) {\n\t\t\t\t\t\tthis.isStorageBuffer = true;\n\t\t\t\t\t\tthis.accessMode = storageBufferMatch[1] || 'none';\n\t\t\t\t\t\tthis.name = storageBufferMatch[2];\n\t\t\t\t\t\tthis.type = storageBufferMatch[3];\n\t\t\t\t\t\tthis.matchedElements.push(...storageBufferMatch);\n\t\t\t\t}\n\t\t\t\tconst externalTextureMatch = this.line.match(EXTERNAL_TEXTURE_REGEX);\n\t\t\t\tif (externalTextureMatch) {\n\t\t\t\t\t\tthis.name = externalTextureMatch[1];\n\t\t\t\t\t\tthis.isExternalTexture = true;\n\t\t\t\t\t\tthis.matchedElements.push(...storageBufferMatch);\n\t\t\t\t}\n\t\t\t\tconst samplerMatch = this.line.match(SAMPLER_REGEX);\n\t\t\t\tif (samplerMatch) {\n\t\t\t\t\t\tthis.name = samplerMatch[1];\n\t\t\t\t\t\tthis.samplerType = samplerMatch[2];\n\t\t\t\t\t\tthis.isSampler = true;\n\t\t\t\t\t\tthis.matchedElements.push(...samplerMatch);\n\t\t\t\t}\n\t\t\t\tif (this.matchedElements.length === 0) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t}\n\t\t}\n\t\tequals(other) {\n\t\t\t\tif (this.name !== other.name) return false;\n\t\t\t\tif (this.type !== other.type) return false;\n\t\t\t\tif (this.isTexture !== other.isTexture) return false;\n\t\t\t\tif (this.isSampler !== other.isSampler) return false;\n\t\t\t\tif (this.isStorageTexture !== other.isStorageTexture) return false;\n\t\t\t\tif (this.isStorageBuffer !== other.isStorageBuffer) return false;\n\t\t\t\tif (this.isExternalTexture !== other.isExternalTexture) return false;\n\t\t\t\tif (this.textureFormat !== other.textureFormat) return false;\n\t\t\t\tif (this.textureDimension !== other.textureDimension) return false;\n\t\t\t\tif (this.sampleType !== other.sampleType) return false;\n\t\t\t\tif (this.textureType !== other.textureType) return false;\n\t\t\t\tif (this.format !== other.format) return false;\n\t\t\t\tif (this.access !== other.access) return false;\n\t\t\t\tif (this.accessMode !== other.accessMode) return false;\n\t\t\t\tif (this.samplerType !== other.samplerType) return false;\n\t\t\t\treturn true;\n\t\t}\n}\nclass WebgpuShaderProcessorWGSL {\n\t\tstatic run(device, shaderDefinition, shader) {\n\t\t\t\tconst varyingMap = new Map();\n\t\t\t\tconst vertexExtracted = WebgpuShaderProcessorWGSL.extract(shaderDefinition.vshader);\n\t\t\t\tconst fragmentExtracted = WebgpuShaderProcessorWGSL.extract(shaderDefinition.fshader);\n\t\t\t\tconst attributesMap = new Map();\n\t\t\t\tconst attributesBlock = WebgpuShaderProcessorWGSL.processAttributes(vertexExtracted.attributes, shaderDefinition.attributes, attributesMap, shaderDefinition.processingOptions, shader);\n\t\t\t\tconst vertexVaryingsBlock = WebgpuShaderProcessorWGSL.processVaryings(vertexExtracted.varyings, varyingMap, true);\n\t\t\t\tconst fragmentVaryingsBlock = WebgpuShaderProcessorWGSL.processVaryings(fragmentExtracted.varyings, varyingMap, false);\n\t\t\t\tconst concatUniforms = vertexExtracted.uniforms.concat(fragmentExtracted.uniforms);\n\t\t\t\tconst uniforms = Array.from(new Set(concatUniforms));\n\t\t\t\tconst parsedUniforms = uniforms.map((line)=>new UniformLine(line, shader));\n\t\t\t\tconst uniformsData = WebgpuShaderProcessorWGSL.processUniforms(device, parsedUniforms, shaderDefinition.processingOptions, shader);\n\t\t\t\tvertexExtracted.src = WebgpuShaderProcessorWGSL.renameUniformAccess(vertexExtracted.src, parsedUniforms);\n\t\t\t\tfragmentExtracted.src = WebgpuShaderProcessorWGSL.renameUniformAccess(fragmentExtracted.src, parsedUniforms);\n\t\t\t\tconst parsedResources = WebgpuShaderProcessorWGSL.mergeResources(vertexExtracted.resources, fragmentExtracted.resources, shader);\n\t\t\t\tconst resourcesData = WebgpuShaderProcessorWGSL.processResources(device, parsedResources, shaderDefinition.processingOptions, shader);\n\t\t\t\tconst fOutput = WebgpuShaderProcessorWGSL.generateFragmentOutputStruct(fragmentExtracted.src, device.maxColorAttachments);\n\t\t\t\tvertexExtracted.src = WebgpuShaderProcessorWGSL.copyInputs(vertexExtracted.src, shader);\n\t\t\t\tfragmentExtracted.src = WebgpuShaderProcessorWGSL.copyInputs(fragmentExtracted.src, shader);\n\t\t\t\tconst vBlock = `${attributesBlock}\\n${vertexVaryingsBlock}\\n${uniformsData.code}\\n${resourcesData.code}\\n`;\n\t\t\t\tconst vshader = vertexExtracted.src.replace(MARKER, vBlock);\n\t\t\t\tconst fBlock = `${fragmentVaryingsBlock}\\n${fOutput}\\n${uniformsData.code}\\n${resourcesData.code}\\n`;\n\t\t\t\tconst fshader = fragmentExtracted.src.replace(MARKER, fBlock);\n\t\t\t\treturn {\n\t\t\t\t\t\tvshader: vshader,\n\t\t\t\t\t\tfshader: fshader,\n\t\t\t\t\t\tattributes: attributesMap,\n\t\t\t\t\t\tmeshUniformBufferFormat: uniformsData.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: resourcesData.meshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic extract(src) {\n\t\t\t\tconst attributes = [];\n\t\t\t\tconst varyings = [];\n\t\t\t\tconst uniforms = [];\n\t\t\t\tconst resources = [];\n\t\t\t\tlet replacement = `${MARKER}\\n`;\n\t\t\t\tlet match;\n\t\t\t\twhile((match = KEYWORD$1.exec(src)) !== null){\n\t\t\t\t\t\tconst keyword = match[1];\n\t\t\t\t\t\tKEYWORD_LINE.lastIndex = match.index;\n\t\t\t\t\t\tconst lineMatch = KEYWORD_LINE.exec(src);\n\t\t\t\t\t\tif (keyword === 'attribute') {\n\t\t\t\t\t\t\t\tattributes.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'varying') {\n\t\t\t\t\t\t\t\tvaryings.push(lineMatch[2]);\n\t\t\t\t\t\t} else if (keyword === 'uniform') {\n\t\t\t\t\t\t\t\tuniforms.push(lineMatch[2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsrc = WebgpuShaderProcessorWGSL.cutOut(src, match.index, KEYWORD_LINE.lastIndex, replacement);\n\t\t\t\t\t\tKEYWORD$1.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\treplacement = '';\n\t\t\t\t}\n\t\t\t\twhile((match = KEYWORD_RESOURCE.exec(src)) !== null){\n\t\t\t\t\t\tresources.push(match[0]);\n\t\t\t\t\t\tsrc = WebgpuShaderProcessorWGSL.cutOut(src, match.index, KEYWORD_RESOURCE.lastIndex, replacement);\n\t\t\t\t\t\tKEYWORD_RESOURCE.lastIndex = match.index + replacement.length;\n\t\t\t\t\t\treplacement = '';\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tsrc,\n\t\t\t\t\t\tattributes,\n\t\t\t\t\t\tvaryings,\n\t\t\t\t\t\tuniforms,\n\t\t\t\t\t\tresources\n\t\t\t\t};\n\t\t}\n\t\tstatic processUniforms(device, uniforms, processingOptions, shader) {\n\t\t\t\tconst meshUniforms = [];\n\t\t\t\tuniforms.forEach((uniform)=>{\n\t\t\t\t\t\tif (!processingOptions.hasUniform(uniform.name)) {\n\t\t\t\t\t\t\t\tuniform.ubName = 'ub_mesh_ub';\n\t\t\t\t\t\t\t\tconst uniformType = uniformTypeToNameMapWGSL.get(uniform.type);\n\t\t\t\t\t\t\t\tconst uniformFormat = new UniformFormat(uniform.name, uniformType, uniform.arraySize);\n\t\t\t\t\t\t\t\tmeshUniforms.push(uniformFormat);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuniform.ubName = 'ub_view';\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniforms.length === 0) {\n\t\t\t\t\t\tmeshUniforms.push(new UniformFormat(UNUSED_UNIFORM_NAME, UNIFORMTYPE_FLOAT));\n\t\t\t\t}\n\t\t\t\tconst meshUniformBufferFormat = new UniformBufferFormat(device, meshUniforms);\n\t\t\t\tlet code = '';\n\t\t\t\tprocessingOptions.uniformFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += WebgpuShaderProcessorWGSL.getUniformShaderDeclaration(format, bindGroupIndex, 0);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meshUniformBufferFormat) {\n\t\t\t\t\t\tcode += WebgpuShaderProcessorWGSL.getUniformShaderDeclaration(meshUniformBufferFormat, BINDGROUP_MESH_UB, 0);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmeshUniformBufferFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic renameUniformAccess(source, uniforms) {\n\t\t\t\tuniforms.forEach((uniform)=>{\n\t\t\t\t\t\tconst srcName = `uniform.${uniform.name}`;\n\t\t\t\t\t\tconst dstName = `${uniform.ubName}.${uniform.name}`;\n\t\t\t\t\t\tconst regex = new RegExp(`\\\\b${srcName}\\\\b`, 'g');\n\t\t\t\t\t\tsource = source.replace(regex, dstName);\n\t\t\t\t});\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic mergeResources(vertex, fragment, shader) {\n\t\t\t\tconst resources = vertex.map((line)=>new ResourceLine(line, shader));\n\t\t\t\tconst fragmentResources = fragment.map((line)=>new ResourceLine(line, shader));\n\t\t\t\tfragmentResources.forEach((fragmentResource)=>{\n\t\t\t\t\t\tconst existing = resources.find((resource)=>resource.name === fragmentResource.name);\n\t\t\t\t\t\tif (existing) {\n\t\t\t\t\t\t\t\tif (!existing.equals(fragmentResource)) {\n\t\t\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresources.push(fragmentResource);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn resources;\n\t\t}\n\t\tstatic processResources(device, resources, processingOptions, shader) {\n\t\t\t\tconst textureFormats = [];\n\t\t\t\tfor(let i = 0; i < resources.length; i++){\n\t\t\t\t\t\tconst resource = resources[i];\n\t\t\t\t\t\tif (resource.isTexture) {\n\t\t\t\t\t\t\t\tconst sampler = resources[i + 1];\n\t\t\t\t\t\t\t\tconst hasSampler = sampler?.isSampler;\n\t\t\t\t\t\t\t\tconst sampleType = resource.sampleType;\n\t\t\t\t\t\t\t\tconst dimension = resource.textureDimension;\n\t\t\t\t\t\t\t\ttextureFormats.push(new BindTextureFormat(resource.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, dimension, sampleType, hasSampler, hasSampler ? sampler.name : null));\n\t\t\t\t\t\t\t\tif (hasSampler) i++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (resource.isStorageBuffer) {\n\t\t\t\t\t\t\t\tconst readOnly = resource.accessMode !== 'read_write';\n\t\t\t\t\t\t\t\tconst bufferFormat = new BindStorageBufferFormat(resource.name, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT, readOnly);\n\t\t\t\t\t\t\t\tbufferFormat.format = resource.type;\n\t\t\t\t\t\t\t\ttextureFormats.push(bufferFormat);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst meshBindGroupFormat = new BindGroupFormat(device, textureFormats);\n\t\t\t\tlet code = '';\n\t\t\t\tprocessingOptions.bindGroupFormats.forEach((format, bindGroupIndex)=>{\n\t\t\t\t\t\tif (format) {\n\t\t\t\t\t\t\t\tcode += WebgpuShaderProcessorWGSL.getTextureShaderDeclaration(format, bindGroupIndex, 1);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcode += WebgpuShaderProcessorWGSL.getTextureShaderDeclaration(meshBindGroupFormat, BINDGROUP_MESH, 0);\n\t\t\t\treturn {\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tmeshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic getUniformShaderDeclaration(ubFormat, bindGroup, bindIndex) {\n\t\t\t\tconst name = bindGroupNames[bindGroup];\n\t\t\t\tconst structName = `struct_ub_${name}`;\n\t\t\t\tlet code = `struct ${structName} {\\n`;\n\t\t\t\tubFormat.uniforms.forEach((uniform)=>{\n\t\t\t\t\t\tlet typeString = uniformTypeToNameWGSL[uniform.type][0];\n\t\t\t\t\t\tif (uniform.count > 0) {\n\t\t\t\t\t\t\t\tif (wrappedArrayTypes.hasOwnProperty(typeString)) {\n\t\t\t\t\t\t\t\t\t\ttypeString = wrappedArrayTypes[typeString];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcode += `    ${uniform.shortName}: array<${typeString}, ${uniform.count}>,\\n`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcode += `    ${uniform.shortName}: ${typeString},\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tcode += '};\\n';\n\t\t\t\tcode += `@group(${bindGroup}) @binding(${bindIndex}) var<uniform> ub_${name} : ${structName};\\n\\n`;\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic getTextureShaderDeclaration(format, bindGroup, startBindIndex) {\n\t\t\t\tlet code = '';\n\t\t\t\tlet bindIndex = startBindIndex;\n\t\t\t\tformat.textureFormats.forEach((format)=>{\n\t\t\t\t\t\tconst textureTypeName = getTextureDeclarationType(format.textureDimension, format.sampleType);\n\t\t\t\t\t\tcode += `@group(${bindGroup}) @binding(${bindIndex}) var ${format.name}: ${textureTypeName};\\n`;\n\t\t\t\t\t\tbindIndex++;\n\t\t\t\t\t\tif (format.hasSampler) {\n\t\t\t\t\t\t\t\tconst samplerName = format.sampleType === SAMPLETYPE_DEPTH ? 'sampler_comparison' : 'sampler';\n\t\t\t\t\t\t\t\tcode += `@group(${bindGroup}) @binding(${bindIndex}) var ${format.samplerName}: ${samplerName};\\n`;\n\t\t\t\t\t\t\t\tbindIndex++;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tformat.storageBufferFormats.forEach((format)=>{\n\t\t\t\t\t\tconst access = format.readOnly ? 'read' : 'read_write';\n\t\t\t\t\t\tcode += `@group(${bindGroup}) @binding(${bindIndex}) var<storage, ${access}> ${format.name} : ${format.format};\\n`;\n\t\t\t\t\t\tbindIndex++;\n\t\t\t\t});\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic processVaryings(varyingLines, varyingMap, isVertex) {\n\t\t\t\tlet block = '';\n\t\t\t\tlet blockPrivates = '';\n\t\t\t\tlet blockCopy = '';\n\t\t\t\tvaryingLines.forEach((line, index)=>{\n\t\t\t\t\t\tconst match = line.match(VARYING);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\tconst name = match[1];\n\t\t\t\t\t\t\t\tif (isVertex) {\n\t\t\t\t\t\t\t\t\t\tvaryingMap.set(name, index);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tindex = varyingMap.get(name);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tblock += `    @location(${index}) ${line},\\n`;\n\t\t\t\t\t\t\t\tif (!isVertex) {\n\t\t\t\t\t\t\t\t\t\tblockPrivates += `    var<private> ${line};\\n`;\n\t\t\t\t\t\t\t\t\t\tblockCopy += `    ${name} = input.${name};\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (isVertex) {\n\t\t\t\t\t\tblock += '    @builtin(position) position : vec4f,\\n';\n\t\t\t\t} else {\n\t\t\t\t\t\tblock += '    @builtin(position) position : vec4f,\\n';\n\t\t\t\t\t\tblock += '    @builtin(front_facing) frontFacing : bool,\\n';\n\t\t\t\t\t\tblock += '    @builtin(sample_index) sampleIndex : u32\\n';\n\t\t\t\t}\n\t\t\t\tconst fragmentGlobals = isVertex ? '' : `\n\t\t\t\t\t\tvar<private> pcPosition: vec4f;\n\t\t\t\t\t\tvar<private> pcFrontFacing: bool;\n\t\t\t\t\t\tvar<private> pcSampleIndex: u32;\n\t\t\t\t\t\t${blockPrivates}\n\t\t\t\t\t\t\n\t\t\t\t\t\t// function to copy inputs (varyings) to private global variables\n\t\t\t\t\t\tfn _pcCopyInputs(input: FragmentInput) {\n\t\t\t\t\t\t\t\t${blockCopy}\n\t\t\t\t\t\t\t\tpcPosition = input.position;\n\t\t\t\t\t\t\t\tpcFrontFacing = input.frontFacing;\n\t\t\t\t\t\t\t\tpcSampleIndex = input.sampleIndex;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tconst structName = isVertex ? 'VertexOutput' : 'FragmentInput';\n\t\t\t\treturn `\n\t\t\t\t\t\tstruct ${structName} {\n\t\t\t\t\t\t\t\t${block}\n\t\t\t\t\t\t};\n\t\t\t\t\t\t${fragmentGlobals}\n\t\t\t\t`;\n\t\t}\n\t\tstatic generateFragmentOutputStruct(src, numRenderTargets) {\n\t\t\t\tlet structCode = 'struct FragmentOutput {\\n';\n\t\t\t\tfor(let i = 0; i < numRenderTargets; i++){\n\t\t\t\t\t\tstructCode += `    @location(${i}) color${i > 0 ? i : ''} : pcOutType${i},\\n`;\n\t\t\t\t}\n\t\t\t\tconst needsFragDepth = src.search(/\\.fragDepth\\s*=/) !== -1;\n\t\t\t\tif (needsFragDepth) {\n\t\t\t\t\t\tstructCode += '    @builtin(frag_depth) fragDepth : f32\\n';\n\t\t\t\t}\n\t\t\t\treturn `${structCode}};\\n`;\n\t\t}\n\t\tstatic floatAttributeToInt(type, signed) {\n\t\t\t\tconst longToShortMap = {\n\t\t\t\t\t\t'f32': 'f32',\n\t\t\t\t\t\t'vec2<f32>': 'vec2f',\n\t\t\t\t\t\t'vec3<f32>': 'vec3f',\n\t\t\t\t\t\t'vec4<f32>': 'vec4f'\n\t\t\t\t};\n\t\t\t\tconst shortType = longToShortMap[type] || type;\n\t\t\t\tconst floatToIntShort = {\n\t\t\t\t\t\t'f32': signed ? 'i32' : 'u32',\n\t\t\t\t\t\t'vec2f': signed ? 'vec2i' : 'vec2u',\n\t\t\t\t\t\t'vec3f': signed ? 'vec3i' : 'vec3u',\n\t\t\t\t\t\t'vec4f': signed ? 'vec4i' : 'vec4u'\n\t\t\t\t};\n\t\t\t\treturn floatToIntShort[shortType] || null;\n\t\t}\n\t\tstatic processAttributes(attributeLines, shaderDefinitionAttributes = {}, attributesMap, processingOptions, shader) {\n\t\t\t\tlet blockAttributes = '';\n\t\t\t\tlet blockPrivates = '';\n\t\t\t\tlet blockCopy = '';\n\t\t\t\tattributeLines.forEach((line)=>{\n\t\t\t\t\t\tconst words = splitToWords(line);\n\t\t\t\t\t\tconst name = words[0];\n\t\t\t\t\t\tlet type = words[1];\n\t\t\t\t\t\tconst originalType = type;\n\t\t\t\t\t\tif (shaderDefinitionAttributes.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tconst semantic = shaderDefinitionAttributes[name];\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[semantic];\n\t\t\t\t\t\t\t\tattributesMap.set(location, name);\n\t\t\t\t\t\t\t\tconst element = processingOptions.getVertexElement(semantic);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tconst dataType = element.dataType;\n\t\t\t\t\t\t\t\t\t\tif (dataType !== TYPE_FLOAT32 && dataType !== TYPE_FLOAT16 && !element.normalize && !element.asInt) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst isSignedType = dataType === TYPE_INT8 || dataType === TYPE_INT16 || dataType === TYPE_INT32;\n\t\t\t\t\t\t\t\t\t\t\t\ttype = WebgpuShaderProcessorWGSL.floatAttributeToInt(type, isSignedType);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tblockAttributes += `    @location(${location}) ${name}: ${type},\\n`;\n\t\t\t\t\t\t\t\tblockPrivates += `    var<private> ${line};\\n`;\n\t\t\t\t\t\t\t\tblockCopy += `    ${name} = ${originalType}(input.${name});\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn `\n\t\t\t\t\t\tstruct VertexInput {\n\t\t\t\t\t\t\t\t${blockAttributes}\n\t\t\t\t\t\t\t\t@builtin(vertex_index) vertexIndex : u32,       // built-in vertex index\n\t\t\t\t\t\t\t\t@builtin(instance_index) instanceIndex : u32    // built-in instance index\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t${blockPrivates}\n\t\t\t\t\t\tvar<private> pcVertexIndex: u32;\n\t\t\t\t\t\tvar<private> pcInstanceIndex: u32;\n\n\t\t\t\t\t\tfn _pcCopyInputs(input: VertexInput) {\n\t\t\t\t\t\t\t\t${blockCopy}\n\t\t\t\t\t\t\t\tpcVertexIndex = input.vertexIndex;\n\t\t\t\t\t\t\t\tpcInstanceIndex = input.instanceIndex;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t}\n\t\tstatic copyInputs(src, shader) {\n\t\t\t\tconst match = src.match(ENTRY_FUNCTION);\n\t\t\t\tif (!match || !match[2]) {\n\t\t\t\t\t\treturn src;\n\t\t\t\t}\n\t\t\t\tconst inputName = match[2];\n\t\t\t\tconst braceIndex = match.index + match[0].length - 1;\n\t\t\t\tconst beginning = src.slice(0, braceIndex + 1);\n\t\t\t\tconst end = src.slice(braceIndex + 1);\n\t\t\t\tconst lineToInject = `\\n    _pcCopyInputs(${inputName});`;\n\t\t\t\treturn beginning + lineToInject + end;\n\t\t}\n\t\tstatic cutOut(src, start, end, replacement) {\n\t\t\t\treturn src.substring(0, start) + replacement + src.substring(end);\n\t\t}\n}\n\nclass WebgpuShader {\n\t\tconstructor(shader){\n\t\t\t\tthis._vertexCode = null;\n\t\t\t\tthis._fragmentCode = null;\n\t\t\t\tthis._computeCode = null;\n\t\t\t\tthis.vertexEntryPoint = 'main';\n\t\t\t\tthis.fragmentEntryPoint = 'main';\n\t\t\t\tthis.computeEntryPoint = 'main';\n\t\t\t\tthis.shader = shader;\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tif (definition.shaderLanguage === SHADERLANGUAGE_WGSL) {\n\t\t\t\t\t\tif (definition.cshader) {\n\t\t\t\t\t\t\t\tthis._computeCode = definition.cshader ?? null;\n\t\t\t\t\t\t\t\tthis.computeUniformBufferFormats = definition.computeUniformBufferFormats;\n\t\t\t\t\t\t\t\tthis.computeBindGroupFormat = definition.computeBindGroupFormat;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.vertexEntryPoint = 'vertexMain';\n\t\t\t\t\t\t\t\tthis.fragmentEntryPoint = 'fragmentMain';\n\t\t\t\t\t\t\t\tif (definition.processingOptions) {\n\t\t\t\t\t\t\t\t\t\tthis.processWGSL();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._vertexCode = definition.vshader ?? null;\n\t\t\t\t\t\t\t\t\t\tthis._fragmentCode = definition.fshader ?? null;\n\t\t\t\t\t\t\t\t\t\tshader.meshUniformBufferFormat = definition.meshUniformBufferFormat;\n\t\t\t\t\t\t\t\t\t\tshader.meshBindGroupFormat = definition.meshBindGroupFormat;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshader.ready = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (definition.processingOptions) {\n\t\t\t\t\t\t\t\tthis.processGLSL();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy(shader) {\n\t\t\t\tthis._vertexCode = null;\n\t\t\t\tthis._fragmentCode = null;\n\t\t}\n\t\tcreateShaderModule(code, shaderType) {\n\t\t\t\tconst device = this.shader.device;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst shaderModule = wgpu.createShaderModule({\n\t\t\t\t\t\tcode: code\n\t\t\t\t});\n\t\t\t\treturn shaderModule;\n\t\t}\n\t\tgetVertexShaderModule() {\n\t\t\t\treturn this.createShaderModule(this._vertexCode, 'Vertex');\n\t\t}\n\t\tgetFragmentShaderModule() {\n\t\t\t\treturn this.createShaderModule(this._fragmentCode, 'Fragment');\n\t\t}\n\t\tgetComputeShaderModule() {\n\t\t\t\treturn this.createShaderModule(this._computeCode, 'Compute');\n\t\t}\n\t\tprocessGLSL() {\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tconst processed = ShaderProcessorGLSL.run(shader.device, shader.definition, shader);\n\t\t\t\tthis._vertexCode = this.transpile(processed.vshader, 'vertex', shader.definition.vshader);\n\t\t\t\tthis._fragmentCode = this.transpile(processed.fshader, 'fragment', shader.definition.fshader);\n\t\t\t\tif (!(this._vertexCode && this._fragmentCode)) {\n\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tshader.ready = true;\n\t\t\t\t}\n\t\t\t\tshader.meshUniformBufferFormat = processed.meshUniformBufferFormat;\n\t\t\t\tshader.meshBindGroupFormat = processed.meshBindGroupFormat;\n\t\t\t\tshader.attributes = processed.attributes;\n\t\t}\n\t\tprocessWGSL() {\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tconst processed = WebgpuShaderProcessorWGSL.run(shader.device, shader.definition, shader);\n\t\t\t\tthis._vertexCode = processed.vshader;\n\t\t\t\tthis._fragmentCode = processed.fshader;\n\t\t\t\tshader.meshUniformBufferFormat = processed.meshUniformBufferFormat;\n\t\t\t\tshader.meshBindGroupFormat = processed.meshBindGroupFormat;\n\t\t\t\tshader.attributes = processed.attributes;\n\t\t}\n\t\ttranspile(src, shaderType, originalSrc) {\n\t\t\t\tconst device = this.shader.device;\n\t\t\t\tif (!device.glslang || !device.twgsl) {\n\t\t\t\t\t\tconsole.error(`Cannot transpile shader [${this.shader.label}] - shader transpilers (glslang/twgsl) are not available. Make sure to provide glslangUrl and twgslUrl when creating the device.`, {\n\t\t\t\t\t\t\t\tshader: this.shader\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\t\tconst spirv = device.glslang.compileGLSL(src, shaderType);\n\t\t\t\t\t\tconst wgsl = device.twgsl.convertSpirV2WGSL(spirv);\n\t\t\t\t\t\treturn wgsl;\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(`Failed to transpile webgl ${shaderType} shader [${this.shader.label}] to WebGPU while rendering ${ void 0}, error:\\n [${err.stack}]`, {\n\t\t\t\t\t\t\t\tprocessed: src,\n\t\t\t\t\t\t\t\toriginal: originalSrc,\n\t\t\t\t\t\t\t\tshader: this.shader,\n\t\t\t\t\t\t\t\terror: err,\n\t\t\t\t\t\t\t\tstack: err.stack\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tget vertexCode() {\n\t\t\t\treturn this._vertexCode;\n\t\t}\n\t\tget fragmentCode() {\n\t\t\t\treturn this._fragmentCode;\n\t\t}\n\t\tloseContext() {}\n\t\trestoreContext(device, shader) {}\n}\n\nconst gpuAddressModes = [];\ngpuAddressModes[ADDRESS_REPEAT] = 'repeat';\ngpuAddressModes[ADDRESS_CLAMP_TO_EDGE] = 'clamp-to-edge';\ngpuAddressModes[ADDRESS_MIRRORED_REPEAT] = 'mirror-repeat';\nconst gpuFilterModes = [];\ngpuFilterModes[FILTER_NEAREST] = {\n\t\tlevel: 'nearest',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_LINEAR] = {\n\t\tlevel: 'linear',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_NEAREST_MIPMAP_NEAREST] = {\n\t\tlevel: 'nearest',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_NEAREST_MIPMAP_LINEAR] = {\n\t\tlevel: 'nearest',\n\t\tmip: 'linear'\n};\ngpuFilterModes[FILTER_LINEAR_MIPMAP_NEAREST] = {\n\t\tlevel: 'linear',\n\t\tmip: 'nearest'\n};\ngpuFilterModes[FILTER_LINEAR_MIPMAP_LINEAR] = {\n\t\tlevel: 'linear',\n\t\tmip: 'linear'\n};\nconst dummyUse = (thingOne)=>{};\nclass WebgpuTexture {\n\t\tconstructor(texture){\n\t\t\t\tthis.samplers = [];\n\t\t\t\tthis.texture = texture;\n\t\t\t\tthis.format = gpuTextureFormats[texture.format];\n\t\t\t\tthis.create(texture.device);\n\t\t}\n\t\tcreate(device) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst numLevels = texture.numLevels;\n\t\t\t\tthis.desc = {\n\t\t\t\t\t\tsize: {\n\t\t\t\t\t\t\t\twidth: texture.width,\n\t\t\t\t\t\t\t\theight: texture.height,\n\t\t\t\t\t\t\t\tdepthOrArrayLayers: texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tformat: this.format,\n\t\t\t\t\t\tmipLevelCount: numLevels,\n\t\t\t\t\t\tsampleCount: 1,\n\t\t\t\t\t\tdimension: texture.volume ? '3d' : '2d',\n\t\t\t\t\t\tusage: GPUTextureUsage.TEXTURE_BINDING | GPUTextureUsage.COPY_DST | GPUTextureUsage.COPY_SRC | (isCompressedPixelFormat(texture.format) ? 0 : GPUTextureUsage.RENDER_ATTACHMENT) | (texture.storage ? GPUTextureUsage.STORAGE_BINDING : 0)\n\t\t\t\t};\n\t\t\t\tthis.gpuTexture = wgpu.createTexture(this.desc);\n\t\t\t\tlet viewDescr;\n\t\t\t\tif (this.texture.format === PIXELFORMAT_DEPTHSTENCIL) {\n\t\t\t\t\t\tviewDescr = {\n\t\t\t\t\t\t\t\tformat: 'depth24plus',\n\t\t\t\t\t\t\t\taspect: 'depth-only'\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.view = this.createView(viewDescr);\n\t\t}\n\t\tdestroy(device) {}\n\t\tpropertyChanged(flag) {\n\t\t\t\tthis.samplers.length = 0;\n\t\t}\n\t\tgetView(device) {\n\t\t\t\tthis.uploadImmediate(device, this.texture);\n\t\t\t\treturn this.view;\n\t\t}\n\t\tcreateView(viewDescr) {\n\t\t\t\tconst options = viewDescr ?? {};\n\t\t\t\tconst textureDescr = this.desc;\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst defaultViewDimension = ()=>{\n\t\t\t\t\t\tif (texture.cubemap) return 'cube';\n\t\t\t\t\t\tif (texture.volume) return '3d';\n\t\t\t\t\t\tif (texture.array) return '2d-array';\n\t\t\t\t\t\treturn '2d';\n\t\t\t\t};\n\t\t\t\tconst desc = {\n\t\t\t\t\t\tformat: options.format ?? textureDescr.format,\n\t\t\t\t\t\tdimension: options.dimension ?? defaultViewDimension(),\n\t\t\t\t\t\taspect: options.aspect ?? 'all',\n\t\t\t\t\t\tbaseMipLevel: options.baseMipLevel ?? 0,\n\t\t\t\t\t\tmipLevelCount: options.mipLevelCount ?? textureDescr.mipLevelCount,\n\t\t\t\t\t\tbaseArrayLayer: options.baseArrayLayer ?? 0,\n\t\t\t\t\t\tarrayLayerCount: options.arrayLayerCount ?? textureDescr.depthOrArrayLayers\n\t\t\t\t};\n\t\t\t\tconst view = this.gpuTexture.createView(desc);\n\t\t\t\treturn view;\n\t\t}\n\t\tgetSampler(device, sampleType) {\n\t\t\t\tlet sampler = this.samplers[sampleType];\n\t\t\t\tif (!sampler) {\n\t\t\t\t\t\tconst texture = this.texture;\n\t\t\t\t\t\tconst desc = {\n\t\t\t\t\t\t\t\taddressModeU: gpuAddressModes[texture.addressU],\n\t\t\t\t\t\t\t\taddressModeV: gpuAddressModes[texture.addressV],\n\t\t\t\t\t\t\t\taddressModeW: gpuAddressModes[texture.addressW]\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!sampleType && texture.compareOnRead) {\n\t\t\t\t\t\t\t\tsampleType = SAMPLETYPE_DEPTH;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sampleType === SAMPLETYPE_DEPTH || sampleType === SAMPLETYPE_INT || sampleType === SAMPLETYPE_UINT) {\n\t\t\t\t\t\t\t\tdesc.compare = 'less';\n\t\t\t\t\t\t\t\tdesc.magFilter = 'linear';\n\t\t\t\t\t\t\t\tdesc.minFilter = 'linear';\n\t\t\t\t\t\t} else if (sampleType === SAMPLETYPE_UNFILTERABLE_FLOAT) {\n\t\t\t\t\t\t\t\tdesc.magFilter = 'nearest';\n\t\t\t\t\t\t\t\tdesc.minFilter = 'nearest';\n\t\t\t\t\t\t\t\tdesc.mipmapFilter = 'nearest';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst forceNearest = !device.textureFloatFilterable && (texture.format === PIXELFORMAT_RGBA32F || texture.format === PIXELFORMAT_RGBA16F);\n\t\t\t\t\t\t\t\tif (forceNearest || this.texture.format === PIXELFORMAT_DEPTHSTENCIL || isIntegerPixelFormat(this.texture.format)) {\n\t\t\t\t\t\t\t\t\t\tdesc.magFilter = 'nearest';\n\t\t\t\t\t\t\t\t\t\tdesc.minFilter = 'nearest';\n\t\t\t\t\t\t\t\t\t\tdesc.mipmapFilter = 'nearest';\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdesc.magFilter = gpuFilterModes[texture.magFilter].level;\n\t\t\t\t\t\t\t\t\t\tdesc.minFilter = gpuFilterModes[texture.minFilter].level;\n\t\t\t\t\t\t\t\t\t\tdesc.mipmapFilter = gpuFilterModes[texture.minFilter].mip;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst allLinear = desc.minFilter === 'linear' && desc.magFilter === 'linear' && desc.mipmapFilter === 'linear';\n\t\t\t\t\t\tdesc.maxAnisotropy = allLinear ? math.clamp(Math.round(texture._anisotropy), 1, device.maxTextureAnisotropy) : 1;\n\t\t\t\t\t\tsampler = device.wgpu.createSampler(desc);\n\t\t\t\t\t\tthis.samplers[sampleType] = sampler;\n\t\t\t\t}\n\t\t\t\treturn sampler;\n\t\t}\n\t\tloseContext() {}\n\t\tuploadImmediate(device, texture) {\n\t\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\tthis.uploadData(device);\n\t\t\t\t\t\ttexture._needsUpload = false;\n\t\t\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t\t}\n\t\t}\n\t\tuploadData(device) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tif (texture._levels) {\n\t\t\t\t\t\tlet anyUploads = false;\n\t\t\t\t\t\tlet anyLevelMissing = false;\n\t\t\t\t\t\tconst requiredMipLevels = texture.numLevels;\n\t\t\t\t\t\tfor(let mipLevel = 0; mipLevel < requiredMipLevels; mipLevel++){\n\t\t\t\t\t\t\t\tconst mipObject = texture._levels[mipLevel];\n\t\t\t\t\t\t\t\tif (mipObject) {\n\t\t\t\t\t\t\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst faceSource = mipObject[face];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (faceSource) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.isExternalImage(faceSource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, faceSource, mipLevel, face);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(faceSource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, faceSource, mipLevel, face);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if (texture._volume) ; else if (texture.array) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (texture.arrayLength === mipObject.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let index = 0; index < texture._arrayLength; index++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst arraySource = mipObject[index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.isExternalImage(arraySource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, arraySource, mipLevel, index);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(arraySource)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, arraySource, mipLevel, index);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.isExternalImage(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadExternalImage(device, mipObject, mipLevel, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (ArrayBuffer.isView(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.uploadTypedArrayData(device, mipObject, mipLevel, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyUploads = true;\n\t\t\t\t\t\t\t\t\t\t\t\t} else ;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tanyLevelMissing = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (anyUploads && anyLevelMissing && texture.mipmaps && !isCompressedPixelFormat(texture.format) && !isIntegerPixelFormat(texture.format)) {\n\t\t\t\t\t\t\t\tdevice.mipmapRenderer.generate(this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (texture._gpuSize) {\n\t\t\t\t\t\t\t\ttexture.adjustVramSizeTracking(device._vram, -texture._gpuSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttexture._gpuSize = texture.gpuSize;\n\t\t\t\t\t\ttexture.adjustVramSizeTracking(device._vram, texture._gpuSize);\n\t\t\t\t}\n\t\t}\n\t\tisExternalImage(image) {\n\t\t\t\treturn typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap || typeof HTMLVideoElement !== 'undefined' && image instanceof HTMLVideoElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas;\n\t\t}\n\t\tuploadExternalImage(device, image, mipLevel, index) {\n\t\t\t\tconst src = {\n\t\t\t\t\t\tsource: image,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tflipY: false\n\t\t\t\t};\n\t\t\t\tconst dst = {\n\t\t\t\t\t\ttexture: this.gpuTexture,\n\t\t\t\t\t\tmipLevel: mipLevel,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t],\n\t\t\t\t\t\taspect: 'all'\n\t\t\t\t};\n\t\t\t\tconst copySize = {\n\t\t\t\t\t\twidth: this.desc.size.width,\n\t\t\t\t\t\theight: this.desc.size.height,\n\t\t\t\t\t\tdepthOrArrayLayers: 1\n\t\t\t\t};\n\t\t\t\tdevice.submit();\n\t\t\t\tdummyUse(image instanceof HTMLCanvasElement && image.getContext('2d'));\n\t\t\t\tdevice.wgpu.queue.copyExternalImageToTexture(src, dst, copySize);\n\t\t}\n\t\tuploadTypedArrayData(device, data, mipLevel, index) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst dest = {\n\t\t\t\t\t\ttexture: this.gpuTexture,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tindex\n\t\t\t\t\t\t],\n\t\t\t\t\t\tmipLevel: mipLevel\n\t\t\t\t};\n\t\t\t\tconst width = TextureUtils.calcLevelDimension(texture.width, mipLevel);\n\t\t\t\tconst height = TextureUtils.calcLevelDimension(texture.height, mipLevel);\n\t\t\t\tTextureUtils.calcLevelGpuSize(width, height, 1, texture.format);\n\t\t\t\tconst formatInfo = pixelFormatInfo.get(texture.format);\n\t\t\t\tlet dataLayout;\n\t\t\t\tlet size;\n\t\t\t\tif (formatInfo.size) {\n\t\t\t\t\t\tdataLayout = {\n\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\tbytesPerRow: formatInfo.size * width,\n\t\t\t\t\t\t\t\trowsPerImage: height\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsize = {\n\t\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\t\theight: height\n\t\t\t\t\t\t};\n\t\t\t\t} else if (formatInfo.blockSize) {\n\t\t\t\t\t\tconst blockDim = (size)=>{\n\t\t\t\t\t\t\t\treturn Math.floor((size + 3) / 4);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tdataLayout = {\n\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\tbytesPerRow: formatInfo.blockSize * blockDim(width),\n\t\t\t\t\t\t\t\trowsPerImage: blockDim(height)\n\t\t\t\t\t\t};\n\t\t\t\t\t\tsize = {\n\t\t\t\t\t\t\t\twidth: Math.max(4, width),\n\t\t\t\t\t\t\t\theight: Math.max(4, height)\n\t\t\t\t\t\t};\n\t\t\t\t} else ;\n\t\t\t\tdevice.submit();\n\t\t\t\twgpu.queue.writeTexture(dest, data, dataLayout, size);\n\t\t}\n\t\tread(x, y, width, height, options) {\n\t\t\t\tconst mipLevel = options.mipLevel ?? 0;\n\t\t\t\tconst face = options.face ?? 0;\n\t\t\t\tconst data = options.data ?? null;\n\t\t\t\tconst immediate = options.immediate ?? false;\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst formatInfo = pixelFormatInfo.get(texture.format);\n\t\t\t\tconst bytesPerRow = width * formatInfo.size;\n\t\t\t\tconst paddedBytesPerRow = math.roundUp(bytesPerRow, 256);\n\t\t\t\tconst size = paddedBytesPerRow * height;\n\t\t\t\tconst device = texture.device;\n\t\t\t\tconst stagingBuffer = device.createBufferImpl(BUFFERUSAGE_READ | BUFFERUSAGE_COPY_DST);\n\t\t\t\tstagingBuffer.allocate(device, size);\n\t\t\t\tconst src = {\n\t\t\t\t\t\ttexture: this.gpuTexture,\n\t\t\t\t\t\tmipLevel: mipLevel,\n\t\t\t\t\t\torigin: [\n\t\t\t\t\t\t\t\tx,\n\t\t\t\t\t\t\t\ty,\n\t\t\t\t\t\t\t\tface\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t\t\tconst dst = {\n\t\t\t\t\t\tbuffer: stagingBuffer.buffer,\n\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\tbytesPerRow: paddedBytesPerRow\n\t\t\t\t};\n\t\t\t\tconst copySize = {\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tdepthOrArrayLayers: 1\n\t\t\t\t};\n\t\t\t\tconst commandEncoder = device.getCommandEncoder();\n\t\t\t\tcommandEncoder.copyTextureToBuffer(src, dst, copySize);\n\t\t\t\treturn device.readBuffer(stagingBuffer, size, null, immediate).then((temp)=>{\n\t\t\t\t\t\tconst target = data?.constructor === Uint8Array ? data : new Uint8Array(data?.buffer ?? height * bytesPerRow);\n\t\t\t\t\t\tfor(let i = 0; i < height; i++){\n\t\t\t\t\t\t\t\tconst srcOffset = i * paddedBytesPerRow;\n\t\t\t\t\t\t\t\tconst dstOffset = i * bytesPerRow;\n\t\t\t\t\t\t\t\tconst sub = temp.subarray(srcOffset, srcOffset + bytesPerRow);\n\t\t\t\t\t\t\t\ttarget.set(sub, dstOffset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn data ?? target;\n\t\t\t\t});\n\t\t}\n}\n\nclass WebgpuUniformBuffer extends WebgpuBuffer {\n\t\tconstructor(uniformBuffer){\n\t\t\t\tsuper(BUFFERUSAGE_UNIFORM);\n\t\t}\n\t\tunlock(uniformBuffer) {\n\t\t\t\tconst device = uniformBuffer.device;\n\t\t\t\tsuper.unlock(device, uniformBuffer.storageInt32.buffer);\n\t\t}\n}\n\nclass WebgpuVertexBuffer extends WebgpuBuffer {\n\t\tconstructor(vertexBuffer, format, options){\n\t\t\t\tsuper(BUFFERUSAGE_VERTEX | (options?.storage ? BUFFERUSAGE_STORAGE : 0));\n\t\t}\n\t\tunlock(vertexBuffer) {\n\t\t\t\tconst device = vertexBuffer.device;\n\t\t\t\tsuper.unlock(device, vertexBuffer.storage);\n\t\t}\n}\n\nconst KEYWORD = /[ \\t]*#(ifn?def|if|endif|else|elif|define|undef|extension|include)/g;\nconst DEFINE = /define[ \\t]+([^\\n]+)\\r?(?:\\n|$)/g;\nconst EXTENSION = /extension[ \\t]+([\\w-]+)[ \\t]*:[ \\t]*(enable|require)/g;\nconst UNDEF = /undef[ \\t]+([^\\n]+)\\r?(?:\\n|$)/g;\nconst IF = /(ifdef|ifndef|if)[ \\t]*([^\\r\\n]+)\\r?\\n/g;\nconst ENDIF = /(endif|else|elif)(?:[ \\t]+([^\\r\\n]*))?\\r?\\n?/g;\nconst IDENTIFIER$1 = /\\{?[\\w-]+\\}?/;\nconst DEFINED = /(!|\\s)?defined\\(([\\w-]+)\\)/;\nconst DEFINED_PARENS = /!?defined\\s*\\([^)]*\\)/g;\nconst DEFINED_BEFORE_PAREN = /!?defined\\s*$/;\nconst COMPARISON = /([a-z_]\\w*)\\s*(==|!=|<|<=|>|>=)\\s*([\\w\"']+)/i;\nconst INVALID = /[+\\-]/g;\nconst INCLUDE = /include[ \\t]+\"([\\w-]+)(?:\\s*,\\s*([\\w-]+))?\"/g;\nconst LOOP_INDEX = /\\{i\\}/g;\nconst FRAGCOLOR = /(pcFragColor[1-8])\\b/g;\nclass Preprocessor {\n\t\tstatic run(source, includes = new Map(), options = {}) {\n\t\t\t\tPreprocessor.sourceName = options.sourceName;\n\t\t\t\tsource = this.stripComments(source);\n\t\t\t\tsource = source.split(/\\r?\\n/).map((line)=>line.trimEnd()).join('\\n');\n\t\t\t\tconst defines = new Map();\n\t\t\t\tconst injectDefines = new Map();\n\t\t\t\tsource = this._preprocess(source, defines, injectDefines, includes, options.stripDefines);\n\t\t\t\tif (source === null) return null;\n\t\t\t\tconst intDefines = new Map();\n\t\t\t\tdefines.forEach((value, key)=>{\n\t\t\t\t\t\tif (Number.isInteger(parseFloat(value)) && !value.includes('.')) {\n\t\t\t\t\t\t\t\tintDefines.set(key, value);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tsource = this.stripComments(source);\n\t\t\t\tsource = this.stripUnusedColorAttachments(source, options);\n\t\t\t\tsource = this.RemoveEmptyLines(source);\n\t\t\t\tsource = this.processArraySize(source, intDefines);\n\t\t\t\tsource = this.injectDefines(source, injectDefines);\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic stripUnusedColorAttachments(source, options) {\n\t\t\t\tif (options.stripUnusedColorAttachments) {\n\t\t\t\t\t\tconst counts = new Map();\n\t\t\t\t\t\tconst matches = source.match(FRAGCOLOR);\n\t\t\t\t\t\tmatches?.forEach((match)=>{\n\t\t\t\t\t\t\t\tconst index = parseInt(match.charAt(match.length - 1), 10);\n\t\t\t\t\t\t\t\tcounts.set(index, (counts.get(index) ?? 0) + 1);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst anySingleUse = Array.from(counts.values()).some((count)=>count === 1);\n\t\t\t\t\t\tif (anySingleUse) {\n\t\t\t\t\t\t\t\tconst lines = source.split('\\n');\n\t\t\t\t\t\t\t\tconst keepLines = [];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < lines.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst match = lines[i].match(FRAGCOLOR);\n\t\t\t\t\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst index = parseInt(match[0].charAt(match[0].length - 1), 10);\n\t\t\t\t\t\t\t\t\t\t\t\tif (index > 0 && counts.get(index) === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tkeepLines.push(lines[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsource = keepLines.join('\\n');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic stripComments(source) {\n\t\t\t\treturn source.replace(/\\/\\*[\\s\\S]*?\\*\\/|([^\\\\:]|^)\\/\\/.*$/gm, '$1');\n\t\t}\n\t\tstatic processArraySize(source, intDefines) {\n\t\t\t\tif (source !== null) {\n\t\t\t\t\t\tintDefines.forEach((value, key)=>{\n\t\t\t\t\t\t\t\tsource = source.replace(new RegExp(`\\\\[${key}\\\\]`, 'g'), `[${value}]`);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic injectDefines(source, injectDefines) {\n\t\t\t\tif (source !== null && injectDefines.size > 0) {\n\t\t\t\t\t\tconst lines = source.split('\\n');\n\t\t\t\t\t\tinjectDefines.forEach((value, key)=>{\n\t\t\t\t\t\t\t\tconst regex = new RegExp(key, 'g');\n\t\t\t\t\t\t\t\tfor(let i = 0; i < lines.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (!lines[i].includes('#')) {\n\t\t\t\t\t\t\t\t\t\t\t\tlines[i] = lines[i].replace(regex, value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsource = lines.join('\\n');\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic RemoveEmptyLines(source) {\n\t\t\t\tif (source !== null) {\n\t\t\t\t\t\tsource = source.split(/\\r?\\n/).map((line)=>line.trim() === '' ? '' : line).join('\\n');\n\t\t\t\t\t\tsource = source.replace(/(\\n\\n){3,}/g, '\\n\\n');\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic _preprocess(source, defines = new Map(), injectDefines, includes, stripDefines) {\n\t\t\t\tconst originalSource = source;\n\t\t\t\tconst stack = [];\n\t\t\t\tlet error = false;\n\t\t\t\tlet match;\n\t\t\t\twhile((match = KEYWORD.exec(source)) !== null && !error){\n\t\t\t\t\t\tconst keyword = match[1];\n\t\t\t\t\t\tswitch(keyword){\n\t\t\t\t\t\t\t\tcase 'define':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tDEFINE.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst define = DEFINE.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= define === null;\n\t\t\t\t\t\t\t\t\t\t\t\tconst expression = define[1];\n\t\t\t\t\t\t\t\t\t\t\t\tIDENTIFIER$1.lastIndex = define.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifierValue = IDENTIFIER$1.exec(expression);\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = identifierValue[0];\n\t\t\t\t\t\t\t\t\t\t\t\tlet value = expression.substring(identifier.length).trim();\n\t\t\t\t\t\t\t\t\t\t\t\tif (value === '') value = 'true';\n\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\tlet stripThisDefine = stripDefines;\n\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst replacementDefine = identifier.startsWith('{') && identifier.endsWith('}');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (replacementDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstripThisDefine = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (replacementDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinjectDefines.set(identifier, value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefines.set(identifier, value);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (stripThisDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, define.index - 1) + source.substring(DEFINE.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = define.index - 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!stripThisDefine) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = define.index + define[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'undef':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tUNDEF.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst undef = UNDEF.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = undef[1].trim();\n\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefines.delete(identifier);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (stripDefines) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, undef.index - 1) + source.substring(UNDEF.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = undef.index - 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!stripDefines) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = undef.index + undef[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'extension':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tEXTENSION.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst extension = EXTENSION.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= extension === null;\n\t\t\t\t\t\t\t\t\t\t\t\tif (extension) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = extension[1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdefines.set(identifier, 'true');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = extension.index + extension[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'ifdef':\n\t\t\t\t\t\t\t\tcase 'ifndef':\n\t\t\t\t\t\t\t\tcase 'if':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tIF.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst iff = IF.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\tconst expression = iff[2];\n\t\t\t\t\t\t\t\t\t\t\t\tconst evaluated = Preprocessor.evaluate(expression, defines);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= evaluated.error;\n\t\t\t\t\t\t\t\t\t\t\t\tlet result = evaluated.result;\n\t\t\t\t\t\t\t\t\t\t\t\tif (keyword === 'ifndef') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = !result;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyKeep: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeep: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstart: match.index,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tend: IF.lastIndex\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = iff.index + iff[0].length;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'endif':\n\t\t\t\t\t\t\t\tcase 'else':\n\t\t\t\t\t\t\t\tcase 'elif':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tENDIF.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst endif = ENDIF.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\tconst blockInfo = stack.pop();\n\t\t\t\t\t\t\t\t\t\t\t\tif (!blockInfo) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`Shader preprocessing encountered \"#${endif[1]}\" without a preceding #if #ifdef #ifndef while preprocessing ${Preprocessor.sourceName} on line:\\n ${source.substring(match.index, match.index + 100)}...`, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource: originalSource\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst blockCode = blockInfo.keep ? source.substring(blockInfo.end, match.index) : '';\n\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, blockInfo.start) + blockCode + source.substring(ENDIF.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = blockInfo.start + blockCode.length;\n\t\t\t\t\t\t\t\t\t\t\t\tconst endifCommand = endif[1];\n\t\t\t\t\t\t\t\t\t\t\t\tif (endifCommand === 'else' || endifCommand === 'elif') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet result = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!blockInfo.anyKeep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (endifCommand === 'else') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = !blockInfo.keep;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst evaluated = Preprocessor.evaluate(endif[2], defines);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult = evaluated.result;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror ||= evaluated.error;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstack.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanyKeep: blockInfo.anyKeep || result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkeep: result,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tstart: KEYWORD.lastIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tend: KEYWORD.lastIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'include':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tINCLUDE.lastIndex = match.index;\n\t\t\t\t\t\t\t\t\t\t\t\tconst include = INCLUDE.exec(source);\n\t\t\t\t\t\t\t\t\t\t\t\terror ||= include === null;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!include) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = include[1].trim();\n\t\t\t\t\t\t\t\t\t\t\t\tconst countIdentifier = include[2]?.trim();\n\t\t\t\t\t\t\t\t\t\t\t\tconst keep = Preprocessor._keep(stack);\n\t\t\t\t\t\t\t\t\t\t\t\tif (keep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet includeSource = includes?.get(identifier);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (includeSource !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tincludeSource = this.stripComments(includeSource);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (countIdentifier) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst countString = defines.get(countIdentifier);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst count = parseFloat(countString);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (Number.isInteger(count)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet result = '';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult += includeSource.replace(LOOP_INDEX, String(i));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tincludeSource = result;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`Include Count identifier \"${countIdentifier}\" not resolved while preprocessing ${Preprocessor.sourceName} on line:\\n ${source.substring(match.index, match.index + 100)}...`, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toriginalSource: originalSource,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource: source\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource = source.substring(0, include.index - 1) + includeSource + source.substring(INCLUDE.lastIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tKEYWORD.lastIndex = include.index - 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconsole.error(`Include \"${identifier}\" not resolved while preprocessing ${Preprocessor.sourceName}`, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toriginalSource: originalSource,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsource: source\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (stack.length > 0) {\n\t\t\t\t\t\tconsole.error(`Shader preprocessing reached the end of the file without encountering the necessary #endif to close a preceding #if, #ifdef, or #ifndef block. ${Preprocessor.sourceName}`);\n\t\t\t\t\t\terror = true;\n\t\t\t\t}\n\t\t\t\tif (error) {\n\t\t\t\t\t\tconsole.error('Failed to preprocess shader: ', {\n\t\t\t\t\t\t\t\tsource: originalSource\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn source;\n\t\t}\n\t\tstatic _keep(stack) {\n\t\t\t\tfor(let i = 0; i < stack.length; i++){\n\t\t\t\t\t\tif (!stack[i].keep) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tstatic evaluateAtomicExpression(expr, defines) {\n\t\t\t\tlet error = false;\n\t\t\t\texpr = expr.trim();\n\t\t\t\tlet invert = false;\n\t\t\t\tif (expr === 'true') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: true,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (expr === 'false') {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: false,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst definedMatch = DEFINED.exec(expr);\n\t\t\t\tif (definedMatch) {\n\t\t\t\t\t\tinvert = definedMatch[1] === '!';\n\t\t\t\t\t\texpr = definedMatch[2].trim();\n\t\t\t\t\t\tconst exists = defines.has(expr);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: invert ? !exists : exists,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst comparisonMatch = COMPARISON.exec(expr);\n\t\t\t\tif (comparisonMatch) {\n\t\t\t\t\t\tconst left = defines.get(comparisonMatch[1].trim()) ?? comparisonMatch[1].trim();\n\t\t\t\t\t\tconst right = defines.get(comparisonMatch[3].trim()) ?? comparisonMatch[3].trim();\n\t\t\t\t\t\tconst operator = comparisonMatch[2].trim();\n\t\t\t\t\t\tlet result = false;\n\t\t\t\t\t\tswitch(operator){\n\t\t\t\t\t\t\t\tcase '==':\n\t\t\t\t\t\t\t\t\t\tresult = left === right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '!=':\n\t\t\t\t\t\t\t\t\t\tresult = left !== right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '<':\n\t\t\t\t\t\t\t\t\t\tresult = left < right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '<=':\n\t\t\t\t\t\t\t\t\t\tresult = left <= right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '>':\n\t\t\t\t\t\t\t\t\t\tresult = left > right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase '>=':\n\t\t\t\t\t\t\t\t\t\tresult = left >= right;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\terror = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult,\n\t\t\t\t\t\t\t\terror\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst result = defines.has(expr);\n\t\t\t\treturn {\n\t\t\t\t\t\tresult,\n\t\t\t\t\t\terror\n\t\t\t\t};\n\t\t}\n\t\tstatic processParentheses(expression, defines) {\n\t\t\t\tlet error = false;\n\t\t\t\tlet processed = expression.trim();\n\t\t\t\twhile(processed.startsWith('(') && processed.endsWith(')')){\n\t\t\t\t\t\tlet depth = 0;\n\t\t\t\t\t\tlet wrapsEntire = true;\n\t\t\t\t\t\tfor(let i = 0; i < processed.length - 1; i++){\n\t\t\t\t\t\t\t\tif (processed[i] === '(') depth++;\n\t\t\t\t\t\t\t\telse if (processed[i] === ')') {\n\t\t\t\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t\t\t\t\tif (depth === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\twrapsEntire = false;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (wrapsEntire) {\n\t\t\t\t\t\t\t\tprocessed = processed.slice(1, -1).trim();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twhile(true){\n\t\t\t\t\t\tlet foundParen = false;\n\t\t\t\t\t\tlet depth = 0;\n\t\t\t\t\t\tlet maxDepth = 0;\n\t\t\t\t\t\tlet deepestStart = -1;\n\t\t\t\t\t\tlet deepestEnd = -1;\n\t\t\t\t\t\tlet inDefinedParen = 0;\n\t\t\t\t\t\tfor(let i = 0; i < processed.length; i++){\n\t\t\t\t\t\t\t\tif (processed[i] === '(') {\n\t\t\t\t\t\t\t\t\t\tconst beforeParen = processed.substring(0, i);\n\t\t\t\t\t\t\t\t\t\tif (DEFINED_BEFORE_PAREN.test(beforeParen)) {\n\t\t\t\t\t\t\t\t\t\t\t\tinDefinedParen++;\n\t\t\t\t\t\t\t\t\t\t} else if (inDefinedParen === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\t\t\t\t\t\tif (depth > maxDepth) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxDepth = depth;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeepestStart = i;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfoundParen = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (processed[i] === ')') {\n\t\t\t\t\t\t\t\t\t\tif (inDefinedParen > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tinDefinedParen--;\n\t\t\t\t\t\t\t\t\t\t} else if (depth > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (depth === maxDepth && deepestStart !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdeepestEnd = i;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!foundParen || deepestStart === -1 || deepestEnd === -1) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst subExpr = processed.substring(deepestStart + 1, deepestEnd);\n\t\t\t\t\t\tconst { result, error: subError } = Preprocessor.evaluate(subExpr, defines);\n\t\t\t\t\t\terror = error || subError;\n\t\t\t\t\t\tprocessed = processed.substring(0, deepestStart) + (result ? 'true' : 'false') + processed.substring(deepestEnd + 1);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\texpression: processed,\n\t\t\t\t\t\terror\n\t\t\t\t};\n\t\t}\n\t\tstatic evaluate(expression, defines) {\n\t\t\t\tconst correct = INVALID.exec(expression) === null;\n\t\t\t\tlet processedExpr = expression;\n\t\t\t\tlet parenError = false;\n\t\t\t\tconst withoutDefined = expression.replace(DEFINED_PARENS, '');\n\t\t\t\tif (withoutDefined.indexOf('(') !== -1) {\n\t\t\t\t\t\tconst processed = Preprocessor.processParentheses(expression, defines);\n\t\t\t\t\t\tprocessedExpr = processed.expression;\n\t\t\t\t\t\tparenError = processed.error;\n\t\t\t\t}\n\t\t\t\tif (parenError) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tresult: false,\n\t\t\t\t\t\t\t\terror: true\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst orSegments = processedExpr.split('||');\n\t\t\t\tfor (const orSegment of orSegments){\n\t\t\t\t\t\tconst andSegments = orSegment.split('&&');\n\t\t\t\t\t\tlet andResult = true;\n\t\t\t\t\t\tfor (const andSegment of andSegments){\n\t\t\t\t\t\t\t\tconst { result, error } = Preprocessor.evaluateAtomicExpression(andSegment.trim(), defines);\n\t\t\t\t\t\t\t\tif (!result || error) {\n\t\t\t\t\t\t\t\t\t\tandResult = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (andResult) {\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tresult: true,\n\t\t\t\t\t\t\t\t\t\terror: !correct\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tresult: false,\n\t\t\t\t\t\terror: !correct\n\t\t\t\t};\n\t\t}\n}\n\nvar gles3PS = `\n#ifndef outType_0\n#define outType_0 vec4\n#endif\nlayout(location = 0) out highp outType_0 pcFragColor0;\n#if COLOR_ATTACHMENT_1\nlayout(location = 1) out highp outType_1 pcFragColor1;\n#endif\n#if COLOR_ATTACHMENT_2\nlayout(location = 2) out highp outType_2 pcFragColor2;\n#endif\n#if COLOR_ATTACHMENT_3\nlayout(location = 3) out highp outType_3 pcFragColor3;\n#endif\n#if COLOR_ATTACHMENT_4\nlayout(location = 4) out highp outType_4 pcFragColor4;\n#endif\n#if COLOR_ATTACHMENT_5\nlayout(location = 5) out highp outType_5 pcFragColor5;\n#endif\n#if COLOR_ATTACHMENT_6\nlayout(location = 6) out highp outType_6 pcFragColor6;\n#endif\n#if COLOR_ATTACHMENT_7\nlayout(location = 7) out highp outType_7 pcFragColor7;\n#endif\n#define gl_FragColor pcFragColor0\n#define varying in\n#define texture2D texture\n#define texture2DBias texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLod textureLod\n#define texture2DProjLod textureProjLod\n#define textureCubeLod textureLod\n#define texture2DGrad textureGrad\n#define texture2DProjGrad textureProjGrad\n#define textureCubeGrad textureGrad\n#define utexture2D texture\n#define itexture2D texture\n#define texture2DLodEXT texture2DLodEXT_is_no_longer_supported_use_texture2DLod_instead\n#define texture2DProjLodEXT texture2DProjLodEXT_is_no_longer_supported_use_texture2DProjLod\n#define textureCubeLodEXT textureCubeLodEXT_is_no_longer_supported_use_textureCubeLod_instead\n#define texture2DGradEXT texture2DGradEXT_is_no_longer_supported_use_texture2DGrad_instead\n#define texture2DProjGradEXT texture2DProjGradEXT_is_no_longer_supported_use_texture2DProjGrad_instead\n#define textureCubeGradEXT textureCubeGradEXT_is_no_longer_supported_use_textureCubeGrad_instead\n#define textureShadow(res, uv) textureGrad(res, uv, vec2(1, 1), vec2(1, 1))\n#define SHADOWMAP_PASS(name) name\n#define SHADOWMAP_ACCEPT(name) sampler2DShadow name\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n#define GL2\n`;\n\nvar gles3VS = `\n#extension GL_ANGLE_multi_draw : enable\n#define attribute in\n#define varying out\n#define texture2D texture\n#define utexture2D texture\n#define itexture2D texture\n#define GL2\n#define VERTEXSHADER\n#define TEXTURE_PASS(name) name\n#define TEXTURE_ACCEPT(name) sampler2D name\n#define TEXTURE_ACCEPT_HIGHP(name) highp sampler2D name\n`;\n\nvar webgpuPS$1 = `\n#extension GL_EXT_samplerless_texture_functions : require\n#ifndef outType_0\n#define outType_0 vec4\n#endif\n#ifndef outType_1\n#define outType_1 vec4\n#endif\n#ifndef outType_2\n#define outType_2 vec4\n#endif\n#ifndef outType_3\n#define outType_3 vec4\n#endif\n#ifndef outType_4\n#define outType_4 vec4\n#endif\n#ifndef outType_5\n#define outType_5 vec4\n#endif\n#ifndef outType_6\n#define outType_6 vec4\n#endif\n#ifndef outType_7\n#define outType_7 vec4\n#endif\nlayout(location = 0) out highp outType_0 pcFragColor0;\nlayout(location = 1) out highp outType_1 pcFragColor1;\nlayout(location = 2) out highp outType_2 pcFragColor2;\nlayout(location = 3) out highp outType_3 pcFragColor3;\nlayout(location = 4) out highp outType_4 pcFragColor4;\nlayout(location = 5) out highp outType_5 pcFragColor5;\nlayout(location = 6) out highp outType_6 pcFragColor6;\nlayout(location = 7) out highp outType_7 pcFragColor7;\n#define gl_FragColor pcFragColor0\n#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv)\n#define texture2DBias(res, uv, bias) texture(sampler2D(res, res ## _sampler), uv, bias)\n#define texture2DLod(res, uv, lod) textureLod(sampler2D(res, res ## _sampler), uv, lod)\n#define textureCube(res, uv) texture(samplerCube(res, res ## _sampler), uv)\n#define textureCubeLod(res, uv, lod) textureLod(samplerCube(res, res ## _sampler), uv, lod)\n#define textureShadow(res, uv) textureLod(sampler2DShadow(res, res ## _sampler), uv, 0.0)\n#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv)\n#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv)\n#define texture2DLodEXT texture2DLodEXT_is_no_longer_supported_use_texture2DLod_instead\n#define texture2DProjLodEXT texture2DProjLodEXT_is_no_longer_supported_use_texture2DProjLod\n#define textureCubeLodEXT textureCubeLodEXT_is_no_longer_supported_use_textureCubeLod_instead\n#define texture2DGradEXT texture2DGradEXT_is_no_longer_supported_use_texture2DGrad_instead\n#define texture2DProjGradEXT texture2DProjGradEXT_is_no_longer_supported_use_texture2DProjGrad_instead\n#define textureCubeGradEXT textureCubeGradEXT_is_no_longer_supported_use_textureCubeGrad_instead\n#define SHADOWMAP_PASS(name) name, name ## _sampler\n#define SHADOWMAP_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_PASS(name) name, name ## _sampler\n#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT\n#define GL2\n#define WEBGPU\n`;\n\nvar webgpuVS$1 = `\n#extension GL_EXT_samplerless_texture_functions : require\n#define texture2D(res, uv) texture(sampler2D(res, res ## _sampler), uv)\n#define itexture2D(res, uv) texture(isampler2D(res, res ## _sampler), uv)\n#define utexture2D(res, uv) texture(usampler2D(res, res ## _sampler), uv)\n#define TEXTURE_PASS(name) name, name ## _sampler\n#define TEXTURE_ACCEPT(name) texture2D name, sampler name ## _sampler\n#define TEXTURE_ACCEPT_HIGHP TEXTURE_ACCEPT\n#define GL2\n#define WEBGPU\n#define VERTEXSHADER\n#define gl_VertexID gl_VertexIndex\n#define gl_InstanceID gl_InstanceIndex\n`;\n\nvar webgpuPS = `\n`;\n\nvar webgpuVS = `\n#define VERTEXSHADER\n`;\n\nvar sharedGLSL = `\nvec2 getGrabScreenPos(vec4 clipPos) {\n\tvec2 uv = (clipPos.xy / clipPos.w) * 0.5 + 0.5;\n\t#ifdef WEBGPU\n\t\tuv.y = 1.0 - uv.y;\n\t#endif\n\treturn uv;\n}\nvec2 getImageEffectUV(vec2 uv) {\n\t#ifdef WEBGPU\n\t\tuv.y = 1.0 - uv.y;\n\t#endif\n\treturn uv;\n}\n`;\n\nvar sharedWGSL = `\nfn getGrabScreenPos(clipPos: vec4<f32>) -> vec2<f32> {\n\tvar uv: vec2<f32> = (clipPos.xy / clipPos.w) * 0.5 + vec2<f32>(0.5);\n\tuv.y = 1.0 - uv.y;\n\treturn uv;\n}\nfn getImageEffectUV(uv: vec2<f32>) -> vec2<f32> {\n\tvar modifiedUV: vec2<f32> = uv;\n\tmodifiedUV.y = 1.0 - modifiedUV.y;\n\treturn modifiedUV;\n}\nstruct WrappedF32 { @size(16) element: f32 }\nstruct WrappedI32 { @size(16) element: i32 }\nstruct WrappedU32 { @size(16) element: u32 }\nstruct WrappedVec2F { @size(16) element: vec2f }\nstruct WrappedVec2I { @size(16) element: vec2i }\nstruct WrappedVec2U { @size(16) element: vec2u }\n`;\n\nconst _attrib2Semantic = {\n\t\tvertex_position: SEMANTIC_POSITION,\n\t\tvertex_normal: SEMANTIC_NORMAL,\n\t\tvertex_tangent: SEMANTIC_TANGENT,\n\t\tvertex_texCoord0: SEMANTIC_TEXCOORD0,\n\t\tvertex_texCoord1: SEMANTIC_TEXCOORD1,\n\t\tvertex_texCoord2: SEMANTIC_TEXCOORD2,\n\t\tvertex_texCoord3: SEMANTIC_TEXCOORD3,\n\t\tvertex_texCoord4: SEMANTIC_TEXCOORD4,\n\t\tvertex_texCoord5: SEMANTIC_TEXCOORD5,\n\t\tvertex_texCoord6: SEMANTIC_TEXCOORD6,\n\t\tvertex_texCoord7: SEMANTIC_TEXCOORD7,\n\t\tvertex_color: SEMANTIC_COLOR,\n\t\tvertex_boneIndices: SEMANTIC_BLENDINDICES,\n\t\tvertex_boneWeights: SEMANTIC_BLENDWEIGHT\n};\nclass ShaderDefinitionUtils {\n\t\tstatic createDefinition(device, options) {\n\t\t\t\tconst normalizedOutputTypes = (options)=>{\n\t\t\t\t\t\tlet fragmentOutputTypes = options.fragmentOutputTypes ?? 'vec4';\n\t\t\t\t\t\tif (!Array.isArray(fragmentOutputTypes)) {\n\t\t\t\t\t\t\t\tfragmentOutputTypes = [\n\t\t\t\t\t\t\t\t\t\tfragmentOutputTypes\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn fragmentOutputTypes;\n\t\t\t\t};\n\t\t\t\tconst getDefines = (gpu, gl2, isVertex, options)=>{\n\t\t\t\t\t\tconst deviceIntro = device.isWebGPU ? gpu : gl2;\n\t\t\t\t\t\tlet attachmentsDefine = '';\n\t\t\t\t\t\tif (!isVertex) {\n\t\t\t\t\t\t\t\tconst fragmentOutputTypes = normalizedOutputTypes(options);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < device.maxColorAttachments; i++){\n\t\t\t\t\t\t\t\t\t\tattachmentsDefine += `#define COLOR_ATTACHMENT_${i}\\n`;\n\t\t\t\t\t\t\t\t\t\tconst outType = fragmentOutputTypes[i] ?? 'vec4';\n\t\t\t\t\t\t\t\t\t\tattachmentsDefine += `#define outType_${i} ${outType}\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn attachmentsDefine + deviceIntro;\n\t\t\t\t};\n\t\t\t\tconst getDefinesWgsl = (isVertex, options)=>{\n\t\t\t\t\t\tlet attachmentsDefine = '';\n\t\t\t\t\t\tif (!isVertex) {\n\t\t\t\t\t\t\t\tconst fragmentOutputTypes = normalizedOutputTypes(options);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < device.maxColorAttachments; i++){\n\t\t\t\t\t\t\t\t\t\tconst glslOutType = fragmentOutputTypes[i] ?? 'vec4';\n\t\t\t\t\t\t\t\t\t\tconst wgslOutType = primitiveGlslToWgslTypeMap.get(glslOutType);\n\t\t\t\t\t\t\t\t\t\tattachmentsDefine += `alias pcOutType${i} = ${wgslOutType};\\n`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn attachmentsDefine;\n\t\t\t\t};\n\t\t\t\tconst name = options.name ?? 'Untitled';\n\t\t\t\tlet vertCode;\n\t\t\t\tlet fragCode;\n\t\t\t\tconst vertexDefinesCode = ShaderDefinitionUtils.getDefinesCode(device, options.vertexDefines);\n\t\t\t\tconst fragmentDefinesCode = ShaderDefinitionUtils.getDefinesCode(device, options.fragmentDefines);\n\t\t\t\tconst wgsl = options.shaderLanguage === SHADERLANGUAGE_WGSL;\n\t\t\t\tif (wgsl) {\n\t\t\t\t\t\tvertCode = `\n\t\t\t\t\t\t\t\t${getDefinesWgsl(true, options)}\n\t\t\t\t\t\t\t\t${webgpuVS}\n\t\t\t\t\t\t\t\t${sharedWGSL}\n\t\t\t\t\t\t\t\t${vertexDefinesCode}\n\t\t\t\t\t\t\t\t${options.vertexCode}\n\t\t\t\t\t\t`;\n\t\t\t\t\t\tfragCode = `\n\t\t\t\t\t\t\t\t${getDefinesWgsl(false, options)}\n\t\t\t\t\t\t\t\t${webgpuPS}\n\t\t\t\t\t\t\t\t${sharedWGSL}\n\t\t\t\t\t\t\t\t${fragmentDefinesCode}\n\t\t\t\t\t\t\t\t${options.fragmentCode}\n\t\t\t\t\t\t`;\n\t\t\t\t} else {\n\t\t\t\t\t\tvertCode = `${ShaderDefinitionUtils.versionCode(device) + getDefines(webgpuVS$1, gles3VS, true, options) + vertexDefinesCode + ShaderDefinitionUtils.precisionCode(device)}\n\t\t\t\t\t\t\t\t${sharedGLSL}\n\t\t\t\t\t\t\t\t${ShaderDefinitionUtils.getShaderNameCode(name)}\n\t\t\t\t\t\t\t\t${options.vertexCode}`;\n\t\t\t\t\t\tfragCode = `${(options.fragmentPreamble || '') + ShaderDefinitionUtils.versionCode(device) + getDefines(webgpuPS$1, gles3PS, false, options) + fragmentDefinesCode + ShaderDefinitionUtils.precisionCode(device)}\n\t\t\t\t\t\t\t\t${sharedGLSL}\n\t\t\t\t\t\t\t\t${ShaderDefinitionUtils.getShaderNameCode(name)}\n\t\t\t\t\t\t\t\t${options.fragmentCode}`;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tshaderLanguage: options.shaderLanguage ?? SHADERLANGUAGE_GLSL,\n\t\t\t\t\t\tattributes: options.attributes,\n\t\t\t\t\t\tvshader: vertCode,\n\t\t\t\t\t\tvincludes: options.vertexIncludes,\n\t\t\t\t\t\tfincludes: options.fragmentIncludes,\n\t\t\t\t\t\tfshader: fragCode,\n\t\t\t\t\t\tfeedbackVaryings: options.feedbackVaryings,\n\t\t\t\t\t\tuseTransformFeedback: options.useTransformFeedback,\n\t\t\t\t\t\tmeshUniformBufferFormat: options.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: options.meshBindGroupFormat\n\t\t\t\t};\n\t\t}\n\t\tstatic getDefinesCode(device, defines) {\n\t\t\t\tlet code = '';\n\t\t\t\tdevice.capsDefines.forEach((value, key)=>{\n\t\t\t\t\t\tcode += `#define ${key} ${value}\\n`;\n\t\t\t\t});\n\t\t\t\tcode += '\\n';\n\t\t\t\tdefines?.forEach((value, key)=>{\n\t\t\t\t\t\tcode += `#define ${key} ${value}\\n`;\n\t\t\t\t});\n\t\t\t\tcode += '\\n';\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic getShaderNameCode(name) {\n\t\t\t\treturn `#define SHADER_NAME ${name}\\n`;\n\t\t}\n\t\tstatic versionCode(device) {\n\t\t\t\treturn device.isWebGPU ? '#version 450\\n' : '#version 300 es\\n';\n\t\t}\n\t\tstatic precisionCode(device, forcePrecision) {\n\t\t\t\tif (forcePrecision && forcePrecision !== 'highp' && forcePrecision !== 'mediump' && forcePrecision !== 'lowp') {\n\t\t\t\t\t\tforcePrecision = null;\n\t\t\t\t}\n\t\t\t\tif (forcePrecision) {\n\t\t\t\t\t\tif (forcePrecision === 'highp' && device.maxPrecision !== 'highp') {\n\t\t\t\t\t\t\t\tforcePrecision = 'mediump';\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (forcePrecision === 'mediump' && device.maxPrecision === 'lowp') {\n\t\t\t\t\t\t\t\tforcePrecision = 'lowp';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst precision = forcePrecision ? forcePrecision : device.precision;\n\t\t\t\tconst code = `\n\t\t\t\t\t\tprecision ${precision} float;\n\t\t\t\t\t\tprecision ${precision} int;\n\t\t\t\t\t\tprecision ${precision} usampler2D;\n\t\t\t\t\t\tprecision ${precision} isampler2D;\n\t\t\t\t\t\tprecision ${precision} sampler2DShadow;\n\t\t\t\t\t\tprecision ${precision} samplerCubeShadow;\n\t\t\t\t\t\tprecision ${precision} sampler2DArray;\n\t\t\t\t`;\n\t\t\t\treturn code;\n\t\t}\n\t\tstatic collectAttributes(vsCode) {\n\t\t\t\tconst attribs = {};\n\t\t\t\tlet attrs = 0;\n\t\t\t\tlet found = vsCode.indexOf('attribute');\n\t\t\t\twhile(found >= 0){\n\t\t\t\t\t\tif (found > 0 && vsCode[found - 1] === '/') break;\n\t\t\t\t\t\tlet ignore = false;\n\t\t\t\t\t\tif (found > 0) {\n\t\t\t\t\t\t\t\tlet startOfLine = vsCode.lastIndexOf('\\n', found);\n\t\t\t\t\t\t\t\tstartOfLine = startOfLine !== -1 ? startOfLine + 1 : 0;\n\t\t\t\t\t\t\t\tconst lineStartString = vsCode.substring(startOfLine, found);\n\t\t\t\t\t\t\t\tif (lineStartString.includes('#')) {\n\t\t\t\t\t\t\t\t\t\tignore = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!ignore) {\n\t\t\t\t\t\t\t\tconst endOfLine = vsCode.indexOf(';', found);\n\t\t\t\t\t\t\t\tconst startOfAttribName = vsCode.lastIndexOf(' ', endOfLine);\n\t\t\t\t\t\t\t\tconst attribName = vsCode.substring(startOfAttribName + 1, endOfLine);\n\t\t\t\t\t\t\t\tif (attribs[attribName]) ; else {\n\t\t\t\t\t\t\t\t\t\tconst semantic = _attrib2Semantic[attribName];\n\t\t\t\t\t\t\t\t\t\tif (semantic !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tattribs[attribName] = semantic;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tattribs[attribName] = `ATTR${attrs}`;\n\t\t\t\t\t\t\t\t\t\t\t\tattrs++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfound = vsCode.indexOf('attribute', found + 1);\n\t\t\t\t}\n\t\t\t\treturn attribs;\n\t\t}\n}\n\nlet id$8 = 0;\nclass Shader {\n\t\tconstructor(graphicsDevice, definition){\n\t\t\t\tthis.attributes = new Map();\n\t\t\t\tthis.id = id$8++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.definition = definition;\n\t\t\t\tthis.name = definition.name || 'Untitled';\n\t\t\t\tthis.init();\n\t\t\t\tif (definition.cshader) {\n\t\t\t\t\t\tdefinition.cshader = Preprocessor.run(definition.cshader, definition.cincludes, {\n\t\t\t\t\t\t\t\tsourceName: `compute shader for ${this.label}`,\n\t\t\t\t\t\t\t\tstripDefines: true\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tconst wgsl = definition.shaderLanguage === SHADERLANGUAGE_WGSL;\n\t\t\t\t\t\tdefinition.vshader = Preprocessor.run(definition.vshader, definition.vincludes, {\n\t\t\t\t\t\t\t\tsourceName: `vertex shader for ${this.label}`,\n\t\t\t\t\t\t\t\tstripDefines: wgsl\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (definition.shaderLanguage === SHADERLANGUAGE_GLSL) {\n\t\t\t\t\t\t\t\tdefinition.attributes ??= ShaderDefinitionUtils.collectAttributes(definition.vshader);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst stripUnusedColorAttachments = graphicsDevice.isWebGL2 && (platform.name === 'osx' || platform.name === 'ios');\n\t\t\t\t\t\tdefinition.fshader = Preprocessor.run(definition.fshader, definition.fincludes, {\n\t\t\t\t\t\t\t\tstripUnusedColorAttachments,\n\t\t\t\t\t\t\t\tstripDefines: wgsl,\n\t\t\t\t\t\t\t\tsourceName: `fragment shader for ${this.label}`\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!definition.vshader || !definition.fshader) {\n\t\t\t\t\t\t\t\tthis.failed = true;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.impl = graphicsDevice.createShaderImpl(this);\n\t\t}\n\t\tinit() {\n\t\t\t\tthis.ready = false;\n\t\t\t\tthis.failed = false;\n\t\t}\n\t\tget label() {\n\t\t\t\treturn `Shader Id ${this.id} (${this.definition.shaderLanguage === SHADERLANGUAGE_WGSL ? 'WGSL' : 'GLSL'}) ${this.name}`;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.device.onDestroyShader(this);\n\t\t\t\tthis.impl.destroy(this);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.init();\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.impl.restoreContext(this.device, this);\n\t\t}\n}\n\nclass UsedBuffer {\n}\nclass DynamicBufferAllocation {\n}\nclass DynamicBuffers {\n\t\tconstructor(device, bufferSize, bufferAlignment){\n\t\t\t\tthis.gpuBuffers = [];\n\t\t\t\tthis.stagingBuffers = [];\n\t\t\t\tthis.usedBuffers = [];\n\t\t\t\tthis.activeBuffer = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.bufferSize = bufferSize;\n\t\t\t\tthis.bufferAlignment = bufferAlignment;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.gpuBuffers.forEach((gpuBuffer)=>{\n\t\t\t\t\t\tgpuBuffer.destroy(this.device);\n\t\t\t\t});\n\t\t\t\tthis.gpuBuffers = null;\n\t\t\t\tthis.stagingBuffers.forEach((stagingBuffer)=>{\n\t\t\t\t\t\tstagingBuffer.destroy(this.device);\n\t\t\t\t});\n\t\t\t\tthis.stagingBuffers = null;\n\t\t\t\tthis.usedBuffers = null;\n\t\t\t\tthis.activeBuffer = null;\n\t\t}\n\t\talloc(allocation, size) {\n\t\t\t\tif (this.activeBuffer) {\n\t\t\t\t\t\tconst alignedStart = math.roundUp(this.activeBuffer.size, this.bufferAlignment);\n\t\t\t\t\t\tconst space = this.bufferSize - alignedStart;\n\t\t\t\t\t\tif (space < size) {\n\t\t\t\t\t\t\t\tthis.scheduleSubmit();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.activeBuffer) {\n\t\t\t\t\t\tlet gpuBuffer = this.gpuBuffers.pop();\n\t\t\t\t\t\tif (!gpuBuffer) {\n\t\t\t\t\t\t\t\tgpuBuffer = this.createBuffer(this.device, this.bufferSize, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet stagingBuffer = this.stagingBuffers.pop();\n\t\t\t\t\t\tif (!stagingBuffer) {\n\t\t\t\t\t\t\t\tstagingBuffer = this.createBuffer(this.device, this.bufferSize, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.activeBuffer = new UsedBuffer();\n\t\t\t\t\t\tthis.activeBuffer.stagingBuffer = stagingBuffer;\n\t\t\t\t\t\tthis.activeBuffer.gpuBuffer = gpuBuffer;\n\t\t\t\t\t\tthis.activeBuffer.offset = 0;\n\t\t\t\t\t\tthis.activeBuffer.size = 0;\n\t\t\t\t}\n\t\t\t\tconst activeBuffer = this.activeBuffer;\n\t\t\t\tconst alignedStart = math.roundUp(activeBuffer.size, this.bufferAlignment);\n\t\t\t\tallocation.gpuBuffer = activeBuffer.gpuBuffer;\n\t\t\t\tallocation.offset = alignedStart;\n\t\t\t\tallocation.storage = activeBuffer.stagingBuffer.alloc(alignedStart, size);\n\t\t\t\tactiveBuffer.size = alignedStart + size;\n\t\t}\n\t\tscheduleSubmit() {\n\t\t\t\tif (this.activeBuffer) {\n\t\t\t\t\t\tthis.usedBuffers.push(this.activeBuffer);\n\t\t\t\t\t\tthis.activeBuffer = null;\n\t\t\t\t}\n\t\t}\n\t\tsubmit() {\n\t\t\t\tthis.scheduleSubmit();\n\t\t}\n}\n\nconst _updateFunctions = [];\n_updateFunctions[UNIFORMTYPE_FLOAT] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_VEC2] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_VEC3] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_VEC4] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_INT] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_IVEC2] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_IVEC3] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_IVEC4] = function(uniformBuffer, value, offset) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_MAT2] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 4] = value[2];\n\t\tdst[offset + 5] = value[3];\n\t\tdst[offset + 8] = value[4];\n\t\tdst[offset + 9] = value[5];\n};\n_updateFunctions[UNIFORMTYPE_MAT3] = (uniformBuffer, value, offset)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 4] = value[3];\n\t\tdst[offset + 5] = value[4];\n\t\tdst[offset + 6] = value[5];\n\t\tdst[offset + 8] = value[6];\n\t\tdst[offset + 9] = value[7];\n\t\tdst[offset + 10] = value[8];\n};\n_updateFunctions[UNIFORMTYPE_FLOATARRAY] = function(uniformBuffer, value, offset, count) {\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_VEC2ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 2];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_VEC3ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageFloat32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 3];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\t\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_UINT] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value;\n};\n_updateFunctions[UNIFORMTYPE_UVEC2] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n};\n_updateFunctions[UNIFORMTYPE_UVEC3] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n};\n_updateFunctions[UNIFORMTYPE_UVEC4] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tdst[offset] = value[0];\n\t\tdst[offset + 1] = value[1];\n\t\tdst[offset + 2] = value[2];\n\t\tdst[offset + 3] = value[3];\n};\n_updateFunctions[UNIFORMTYPE_INTARRAY] = function(uniformBuffer, value, offset, count) {\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_BOOLARRAY] = _updateFunctions[UNIFORMTYPE_INTARRAY];\n_updateFunctions[UNIFORMTYPE_UINTARRAY] = function(uniformBuffer, value, offset, count) {\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_IVEC2ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 2];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_BVEC2ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC2ARRAY];\n_updateFunctions[UNIFORMTYPE_UVEC2ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 2];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 2 + 1];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_IVEC3ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageInt32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 3];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\t\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t\t}\n};\n_updateFunctions[UNIFORMTYPE_BVEC3ARRAY] = _updateFunctions[UNIFORMTYPE_IVEC3ARRAY];\n_updateFunctions[UNIFORMTYPE_UVEC3ARRAY] = (uniformBuffer, value, offset, count)=>{\n\t\tconst dst = uniformBuffer.storageUint32;\n\t\tfor(let i = 0; i < count; i++){\n\t\t\t\tdst[offset + i * 4] = value[i * 3];\n\t\t\t\tdst[offset + i * 4 + 1] = value[i * 3 + 1];\n\t\t\t\tdst[offset + i * 4 + 2] = value[i * 3 + 2];\n\t\t}\n};\nclass UniformBuffer {\n\t\tconstructor(graphicsDevice, format, persistent = true){\n\t\t\t\tthis.renderVersionDirty = 0;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.persistent = persistent;\n\t\t\t\tif (persistent) {\n\t\t\t\t\t\tthis.impl = graphicsDevice.createUniformBufferImpl(this);\n\t\t\t\t\t\tconst storage = new ArrayBuffer(format.byteSize);\n\t\t\t\t\t\tthis.assignStorage(new Int32Array(storage));\n\t\t\t\t\t\tgraphicsDevice._vram.ub += this.format.byteSize;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.allocation = new DynamicBufferAllocation();\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.persistent) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tdevice._vram.ub -= this.format.byteSize;\n\t\t\t\t}\n\t\t}\n\t\tget offset() {\n\t\t\t\treturn this.persistent ? 0 : this.allocation.offset;\n\t\t}\n\t\tassignStorage(storage) {\n\t\t\t\tthis.storageInt32 = storage;\n\t\t\t\tthis.storageUint32 = new Uint32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4);\n\t\t\t\tthis.storageFloat32 = new Float32Array(storage.buffer, storage.byteOffset, storage.byteLength / 4);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl?.loseContext();\n\t\t}\n\t\tsetUniform(uniformFormat, value) {\n\t\t\t\tconst offset = uniformFormat.offset;\n\t\t\t\tif (value !== null && value !== undefined) {\n\t\t\t\t\t\tconst updateFunction = _updateFunctions[uniformFormat.updateType];\n\t\t\t\t\t\tif (updateFunction) {\n\t\t\t\t\t\t\t\tupdateFunction(this, value, offset, uniformFormat.count);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.storageFloat32.set(value, offset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset(name, value) {\n\t\t\t\tconst uniformFormat = this.format.map.get(name);\n\t\t\t\tif (uniformFormat) {\n\t\t\t\t\t\tthis.setUniform(uniformFormat, value);\n\t\t\t\t}\n\t\t}\n\t\tstartUpdate(dynamicBindGroup) {\n\t\t\t\tif (!this.persistent) {\n\t\t\t\t\t\tconst allocation = this.allocation;\n\t\t\t\t\t\tconst oldGpuBuffer = allocation.gpuBuffer;\n\t\t\t\t\t\tthis.device.dynamicBuffers.alloc(allocation, this.format.byteSize);\n\t\t\t\t\t\tthis.assignStorage(allocation.storage);\n\t\t\t\t\t\tif (dynamicBindGroup) {\n\t\t\t\t\t\t\t\tdynamicBindGroup.bindGroup = allocation.gpuBuffer.getBindGroup(this);\n\t\t\t\t\t\t\t\tdynamicBindGroup.offsets[0] = allocation.offset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (oldGpuBuffer !== allocation.gpuBuffer) {\n\t\t\t\t\t\t\t\tthis.renderVersionDirty = this.device.renderVersion;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tendUpdate() {\n\t\t\t\tif (this.persistent) {\n\t\t\t\t\t\tthis.impl.unlock(this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.storageFloat32 = null;\n\t\t\t\t\t\tthis.storageInt32 = null;\n\t\t\t\t}\n\t\t}\n\t\tupdate(dynamicBindGroup) {\n\t\t\t\tthis.startUpdate(dynamicBindGroup);\n\t\t\t\tconst uniforms = this.format.uniforms;\n\t\t\t\tfor(let i = 0; i < uniforms.length; i++){\n\t\t\t\t\t\tconst value = uniforms[i].scopeId.value;\n\t\t\t\t\t\tthis.setUniform(uniforms[i], value);\n\t\t\t\t}\n\t\t\t\tthis.endUpdate();\n\t\t}\n}\n\nconst primitive = {\n\t\ttype: PRIMITIVE_TRISTRIP,\n\t\tbase: 0,\n\t\tbaseVertex: 0,\n\t\tcount: 4,\n\t\tindexed: false\n};\nclass WebgpuClearRenderer {\n\t\tconstructor(device){\n\t\t\t\tconst code = `\n\n\t\t\t\t\t\tstruct ub_mesh {\n\t\t\t\t\t\t\t\tcolor : vec4f,\n\t\t\t\t\t\t\t\tdepth: f32\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(2) @binding(0) var<uniform> ubMesh : ub_mesh;\n\n\t\t\t\t\t\tvar<private> pos : array<vec2f, 4> = array<vec2f, 4>(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0),\n\t\t\t\t\t\t\t\tvec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\t\toutput.position = vec4(pos[vertexIndex], ubMesh.depth, 1.0);\n\t\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain() -> @location(0) vec4f {\n\t\t\t\t\t\t\t\treturn ubMesh.color;\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.shader = new Shader(device, {\n\t\t\t\t\t\tname: 'WebGPUClearRendererShader',\n\t\t\t\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\t\t\t\tvshader: code,\n\t\t\t\t\t\tfshader: code\n\t\t\t\t});\n\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, new UniformBufferFormat(device, [\n\t\t\t\t\t\tnew UniformFormat('color', UNIFORMTYPE_VEC4),\n\t\t\t\t\t\tnew UniformFormat('depth', UNIFORMTYPE_FLOAT)\n\t\t\t\t]), false);\n\t\t\t\tthis.dynamicBindGroup = new DynamicBindGroup();\n\t\t\t\tthis.colorData = new Float32Array(4);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader.destroy();\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.uniformBuffer.destroy();\n\t\t\t\tthis.uniformBuffer = null;\n\t\t}\n\t\tclear(device, renderTarget, options, defaultOptions) {\n\t\t\t\toptions = options || defaultOptions;\n\t\t\t\tconst flags = options.flags ?? defaultOptions.flags;\n\t\t\t\tif (flags !== 0) {\n\t\t\t\t\t\tconst { uniformBuffer, dynamicBindGroup } = this;\n\t\t\t\t\t\tuniformBuffer.startUpdate(dynamicBindGroup);\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, dynamicBindGroup.bindGroup, dynamicBindGroup.offsets);\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH, device.emptyBindGroup);\n\t\t\t\t\t\tif (flags & CLEARFLAG_COLOR && (renderTarget.colorBuffer || renderTarget.impl.assignedColorTexture)) {\n\t\t\t\t\t\t\t\tconst color = options.color ?? defaultOptions.color;\n\t\t\t\t\t\t\t\tthis.colorData.set(color);\n\t\t\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdevice.setBlendState(BlendState.NOWRITE);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tuniformBuffer.set('color', this.colorData);\n\t\t\t\t\t\tif (flags & CLEARFLAG_DEPTH && renderTarget.depth) {\n\t\t\t\t\t\t\t\tconst depth = options.depth ?? defaultOptions.depth;\n\t\t\t\t\t\t\t\tuniformBuffer.set('depth', depth);\n\t\t\t\t\t\t\t\tdevice.setDepthState(DepthState.WRITEDEPTH);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tuniformBuffer.set('depth', 1);\n\t\t\t\t\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flags & CLEARFLAG_STENCIL && renderTarget.stencil) ;\n\t\t\t\t\t\tuniformBuffer.endUpdate();\n\t\t\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\t\t\tdevice.setShader(this.shader);\n\t\t\t\t\t\tdevice.draw(primitive);\n\t\t\t\t}\n\t\t}\n}\n\nclass WebgpuMipmapRenderer {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tconst code = `\n \n\t\t\t\t\t\tvar<private> pos : array<vec2f, 4> = array<vec2f, 4>(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0),\n\t\t\t\t\t\t\t\tvec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f,\n\t\t\t\t\t\t\t\t@location(0) texCoord : vec2f\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\toutput.texCoord = pos[vertexIndex] * vec2f(0.5, -0.5) + vec2f(0.5);\n\t\t\t\t\t\t\toutput.position = vec4f(pos[vertexIndex], 0, 1);\n\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var imgSampler : sampler;\n\t\t\t\t\t\t@group(0) @binding(1) var img : texture_2d<f32>;\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain(@location(0) texCoord : vec2f) -> @location(0) vec4f {\n\t\t\t\t\t\t\treturn textureSample(img, imgSampler, texCoord);\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.shader = new Shader(device, {\n\t\t\t\t\t\tname: 'WebGPUMipmapRendererShader',\n\t\t\t\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\t\t\t\tvshader: code,\n\t\t\t\t\t\tfshader: code\n\t\t\t\t});\n\t\t\t\tthis.minSampler = device.wgpu.createSampler({\n\t\t\t\t\t\tminFilter: 'linear'\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader.destroy();\n\t\t\t\tthis.shader = null;\n\t\t}\n\t\tgenerate(webgpuTexture) {\n\t\t\t\tconst textureDescr = webgpuTexture.desc;\n\t\t\t\tif (textureDescr.mipLevelCount <= 1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (webgpuTexture.texture.volume) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst webgpuShader = this.shader.impl;\n\t\t\t\tconst pipeline = wgpu.createRenderPipeline({\n\t\t\t\t\t\tlayout: 'auto',\n\t\t\t\t\t\tvertex: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfragment: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\t\t\t\t\ttargets: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tformat: textureDescr.format\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprimitive: {\n\t\t\t\t\t\t\t\ttopology: 'triangle-strip'\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst texture = webgpuTexture.texture;\n\t\t\t\tconst numFaces = texture.cubemap ? 6 : texture.array ? texture.arrayLength : 1;\n\t\t\t\tconst srcViews = [];\n\t\t\t\tfor(let face = 0; face < numFaces; face++){\n\t\t\t\t\t\tsrcViews.push(webgpuTexture.createView({\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\tbaseMipLevel: 0,\n\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tconst commandEncoder = device.getCommandEncoder();\n\t\t\t\tfor(let i = 1; i < textureDescr.mipLevelCount; i++){\n\t\t\t\t\t\tfor(let face = 0; face < numFaces; face++){\n\t\t\t\t\t\t\t\tconst dstView = webgpuTexture.createView({\n\t\t\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\t\t\tbaseMipLevel: i,\n\t\t\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst passEncoder = commandEncoder.beginRenderPass({\n\t\t\t\t\t\t\t\t\t\tcolorAttachments: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tview: dstView,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tloadOp: 'clear',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstoreOp: 'store'\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst bindGroup = wgpu.createBindGroup({\n\t\t\t\t\t\t\t\t\t\tlayout: pipeline.getBindGroupLayout(0),\n\t\t\t\t\t\t\t\t\t\tentries: [\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinding: 0,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource: this.minSampler\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinding: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresource: srcViews[face]\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\t\t\t\t\tpassEncoder.setBindGroup(0, bindGroup);\n\t\t\t\t\t\t\t\tpassEncoder.draw(4);\n\t\t\t\t\t\t\t\tpassEncoder.end();\n\t\t\t\t\t\t\t\tsrcViews[face] = dstView;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdevice.pipeline = null;\n\t\t}\n}\n\nclass DynamicBuffer {\n\t\tconstructor(device){\n\t\t\t\tthis.bindGroupCache = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.bindGroupFormat = new BindGroupFormat(this.device, [\n\t\t\t\t\t\tnew BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)\n\t\t\t\t]);\n\t\t}\n\t\tgetBindGroup(ub) {\n\t\t\t\tconst ubSize = ub.format.byteSize;\n\t\t\t\tlet bindGroup = this.bindGroupCache.get(ubSize);\n\t\t\t\tif (!bindGroup) {\n\t\t\t\t\t\tbindGroup = new BindGroup(this.device, this.bindGroupFormat, ub);\n\t\t\t\t\t\tbindGroup.update();\n\t\t\t\t\t\tthis.bindGroupCache.set(ubSize, bindGroup);\n\t\t\t\t}\n\t\t\t\treturn bindGroup;\n\t\t}\n}\n\nclass WebgpuDynamicBuffer extends DynamicBuffer {\n\t\tconstructor(device, size, isStaging){\n\t\t\t\tsuper(device), this.buffer = null, this.mappedRange = null;\n\t\t\t\tthis.buffer = device.wgpu.createBuffer({\n\t\t\t\t\t\tsize: size,\n\t\t\t\t\t\tusage: isStaging ? GPUBufferUsage.MAP_WRITE | GPUBufferUsage.COPY_SRC : GPUBufferUsage.UNIFORM | GPUBufferUsage.COPY_DST,\n\t\t\t\t\t\tmappedAtCreation: isStaging\n\t\t\t\t});\n\t\t\t\tif (isStaging) {\n\t\t\t\t\t\tthis.onAvailable();\n\t\t\t\t}\n\t\t\t\tdevice._vram.ub += size;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tdevice._vram.ub -= this.buffer.size;\n\t\t\t\tthis.buffer.destroy();\n\t\t\t\tthis.buffer = null;\n\t\t}\n\t\tonAvailable() {\n\t\t\t\tthis.mappedRange = this.buffer.getMappedRange();\n\t\t}\n\t\talloc(offset, size) {\n\t\t\t\treturn new Int32Array(this.mappedRange, offset, size / 4);\n\t\t}\n}\n\nclass WebgpuDynamicBuffers extends DynamicBuffers {\n\t\tcreateBuffer(device, size, isStaging) {\n\t\t\t\treturn new WebgpuDynamicBuffer(device, size, isStaging);\n\t\t}\n\t\tsubmit() {\n\t\t\t\tsuper.submit();\n\t\t\t\tconst count = this.usedBuffers.length;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tconst gpuBuffers = this.gpuBuffers;\n\t\t\t\t\t\tconst commandEncoder = device.wgpu.createCommandEncoder();\n\t\t\t\t\t\tfor(let i = count - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\tconst usedBuffer = this.usedBuffers[i];\n\t\t\t\t\t\t\t\tconst { stagingBuffer, gpuBuffer, offset, size } = usedBuffer;\n\t\t\t\t\t\t\t\tconst src = stagingBuffer.buffer;\n\t\t\t\t\t\t\t\tsrc.unmap();\n\t\t\t\t\t\t\t\tcommandEncoder.copyBufferToBuffer(src, offset, gpuBuffer.buffer, offset, size);\n\t\t\t\t\t\t\t\tgpuBuffers.push(gpuBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst cb = commandEncoder.finish();\n\t\t\t\t\t\tdevice.addCommandBuffer(cb, true);\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tconst stagingBuffer = this.usedBuffers[i].stagingBuffer;\n\t\t\t\t\t\t\t\tthis.pendingStagingBuffers.push(stagingBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.usedBuffers.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tonCommandBuffersSubmitted() {\n\t\t\t\tconst count = this.pendingStagingBuffers.length;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tconst stagingBuffer = this.pendingStagingBuffers[i];\n\t\t\t\t\t\t\t\tstagingBuffer.buffer.mapAsync(GPUMapMode.WRITE).then(()=>{\n\t\t\t\t\t\t\t\t\t\tif (this.stagingBuffers) {\n\t\t\t\t\t\t\t\t\t\t\t\tstagingBuffer.onAvailable();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.stagingBuffers.push(stagingBuffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.pendingStagingBuffers.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.pendingStagingBuffers = [];\n\t\t}\n}\n\nclass GpuProfiler {\n\t\tloseContext() {\n\t\t\t\tthis.pastFrameAllocations.clear();\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enableRequest = value;\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enableRequest;\n\t\t}\n\t\tprocessEnableRequest() {\n\t\t\t\tif (this._enableRequest !== this._enabled) {\n\t\t\t\t\t\tthis._enabled = this._enableRequest;\n\t\t\t\t\t\tif (!this._enabled) {\n\t\t\t\t\t\t\t\tthis._frameTime = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\trequest(renderVersion) {\n\t\t\t\tthis.pastFrameAllocations.set(renderVersion, this.frameAllocations);\n\t\t\t\tthis.frameAllocations = [];\n\t\t}\n\t\treport(renderVersion, timings) {\n\t\t\t\tif (timings) {\n\t\t\t\t\t\tconst allocations = this.pastFrameAllocations.get(renderVersion);\n\t\t\t\t\t\tif (timings.length > 0) {\n\t\t\t\t\t\t\t\tthis._frameTime = timings.reduce((sum, t)=>sum + t, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Tracing.get(TRACEID_GPU_TIMINGS)) {\n\t\t\t\t\t\t\t\tlet total = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < allocations.length; ++i){\n\t\t\t\t\t\t\t\t\t\tallocations[i];\n\t\t\t\t\t\t\t\t\t\ttotal += timings[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.pastFrameAllocations.delete(renderVersion);\n\t\t}\n\t\tgetSlot(name) {\n\t\t\t\tif (this.frameAllocations.length >= this.maxCount) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tconst slot = this.frameAllocations.length;\n\t\t\t\tthis.frameAllocations.push(name);\n\t\t\t\treturn slot;\n\t\t}\n\t\tget slotCount() {\n\t\t\t\treturn this.frameAllocations.length;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.frameAllocations = [];\n\t\t\t\tthis.pastFrameAllocations = new Map();\n\t\t\t\tthis._enabled = false;\n\t\t\t\tthis._enableRequest = false;\n\t\t\t\tthis._frameTime = 0;\n\t\t\t\tthis.maxCount = 9999;\n\t\t}\n}\n\nclass WebgpuQuerySet {\n\t\tconstructor(device, isTimestamp, capacity){\n\t\t\t\tthis.stagingBuffers = [];\n\t\t\t\tthis.activeStagingBuffer = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.capacity = capacity;\n\t\t\t\tthis.bytesPerSlot = isTimestamp ? 8 : 4;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tthis.querySet = wgpu.createQuerySet({\n\t\t\t\t\t\ttype: isTimestamp ? 'timestamp' : 'occlusion',\n\t\t\t\t\t\tcount: capacity\n\t\t\t\t});\n\t\t\t\tthis.queryBuffer = wgpu.createBuffer({\n\t\t\t\t\t\tsize: this.bytesPerSlot * capacity,\n\t\t\t\t\t\tusage: GPUBufferUsage.QUERY_RESOLVE | GPUBufferUsage.STORAGE | GPUBufferUsage.COPY_SRC | GPUBufferUsage.COPY_DST\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.querySet?.destroy();\n\t\t\t\tthis.querySet = null;\n\t\t\t\tthis.queryBuffer?.destroy();\n\t\t\t\tthis.queryBuffer = null;\n\t\t\t\tthis.activeStagingBuffer = null;\n\t\t\t\tthis.stagingBuffers.forEach((stagingBuffer)=>{\n\t\t\t\t\t\tstagingBuffer.destroy();\n\t\t\t\t});\n\t\t\t\tthis.stagingBuffers = null;\n\t\t}\n\t\tgetStagingBuffer() {\n\t\t\t\tlet stagingBuffer = this.stagingBuffers.pop();\n\t\t\t\tif (!stagingBuffer) {\n\t\t\t\t\t\tstagingBuffer = this.device.wgpu.createBuffer({\n\t\t\t\t\t\t\t\tsize: this.queryBuffer.size,\n\t\t\t\t\t\t\t\tusage: GPUBufferUsage.COPY_DST | GPUBufferUsage.MAP_READ\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn stagingBuffer;\n\t\t}\n\t\tresolve(count) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst commandEncoder = device.getCommandEncoder();\n\t\t\t\tcommandEncoder.resolveQuerySet(this.querySet, 0, count, this.queryBuffer, 0);\n\t\t\t\tconst activeStagingBuffer = this.getStagingBuffer();\n\t\t\t\tthis.activeStagingBuffer = activeStagingBuffer;\n\t\t\t\tcommandEncoder.copyBufferToBuffer(this.queryBuffer, 0, activeStagingBuffer, 0, this.bytesPerSlot * count);\n\t\t}\n\t\trequest(count, renderVersion) {\n\t\t\t\tconst stagingBuffer = this.activeStagingBuffer;\n\t\t\t\tthis.activeStagingBuffer = null;\n\t\t\t\treturn stagingBuffer.mapAsync(GPUMapMode.READ).then(()=>{\n\t\t\t\t\t\tconst srcTimings = new BigInt64Array(stagingBuffer.getMappedRange());\n\t\t\t\t\t\tconst timings = [];\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\ttimings.push(Number(srcTimings[i * 2 + 1] - srcTimings[i * 2]) * 0.000001);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstagingBuffer.unmap();\n\t\t\t\t\t\tthis.stagingBuffers?.push(stagingBuffer);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\trenderVersion,\n\t\t\t\t\t\t\t\ttimings\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n}\n\nclass WebgpuGpuProfiler extends GpuProfiler {\n\t\tconstructor(device){\n\t\t\t\tsuper();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.maxCount = 1024;\n\t\t\t\tthis.timestampQueriesSet = device.supportsTimestampQuery ? new WebgpuQuerySet(device, true, 2 * this.maxCount) : null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.timestampQueriesSet?.destroy();\n\t\t\t\tthis.timestampQueriesSet = null;\n\t\t}\n\t\tframeStart() {\n\t\t\t\tthis.processEnableRequest();\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.timestampQueriesSet?.resolve(this.slotCount * 2);\n\t\t\t\t}\n\t\t}\n\t\trequest() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tconst renderVersion = this.device.renderVersion;\n\t\t\t\t\t\tthis.timestampQueriesSet?.request(this.slotCount, renderVersion).then((results)=>{\n\t\t\t\t\t\t\t\tthis.report(results.renderVersion, results.timings);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsuper.request(renderVersion);\n\t\t\t\t}\n\t\t}\n}\n\nclass WebgpuResolver {\n\t\tconstructor(device){\n\t\t\t\tthis.pipelineCache = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tconst code = `\n \n\t\t\t\t\t\tvar<private> pos : array<vec2f, 4> = array<vec2f, 4>(\n\t\t\t\t\t\t\t\tvec2(-1.0, 1.0), vec2(1.0, 1.0), vec2(-1.0, -1.0), vec2(1.0, -1.0)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tstruct VertexOutput {\n\t\t\t\t\t\t\t\t@builtin(position) position : vec4f,\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t@vertex\n\t\t\t\t\t\tfn vertexMain(@builtin(vertex_index) vertexIndex : u32) -> VertexOutput {\n\t\t\t\t\t\t\tvar output : VertexOutput;\n\t\t\t\t\t\t\toutput.position = vec4f(pos[vertexIndex], 0, 1);\n\t\t\t\t\t\t\treturn output;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t@group(0) @binding(0) var img : texture_depth_multisampled_2d;\n\n\t\t\t\t\t\t@fragment\n\t\t\t\t\t\tfn fragmentMain(@builtin(position) fragColor: vec4f) -> @location(0) vec4f {\n\t\t\t\t\t\t\t\t// load th depth value from sample index 0\n\t\t\t\t\t\t\t\tvar depth = textureLoad(img, vec2i(fragColor.xy), 0u);\n\t\t\t\t\t\t\t\treturn vec4f(depth, 0.0, 0.0, 0.0);\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.shader = new Shader(device, {\n\t\t\t\t\t\tname: 'WebGPUResolverDepthShader',\n\t\t\t\t\t\tshaderLanguage: SHADERLANGUAGE_WGSL,\n\t\t\t\t\t\tvshader: code,\n\t\t\t\t\t\tfshader: code\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader.destroy();\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.pipelineCache = null;\n\t\t}\n\t\tgetPipeline(format) {\n\t\t\t\tlet pipeline = this.pipelineCache.get(format);\n\t\t\t\tif (!pipeline) {\n\t\t\t\t\t\tpipeline = this.createPipeline(format);\n\t\t\t\t\t\tthis.pipelineCache.set(format, pipeline);\n\t\t\t\t}\n\t\t\t\treturn pipeline;\n\t\t}\n\t\tcreatePipeline(format) {\n\t\t\t\tconst webgpuShader = this.shader.impl;\n\t\t\t\tconst pipeline = this.device.wgpu.createRenderPipeline({\n\t\t\t\t\t\tlayout: 'auto',\n\t\t\t\t\t\tvertex: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getVertexShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.vertexEntryPoint\n\t\t\t\t\t\t},\n\t\t\t\t\t\tfragment: {\n\t\t\t\t\t\t\t\tmodule: webgpuShader.getFragmentShaderModule(),\n\t\t\t\t\t\t\t\tentryPoint: webgpuShader.fragmentEntryPoint,\n\t\t\t\t\t\t\t\ttargets: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tformat: format\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\tprimitive: {\n\t\t\t\t\t\t\t\ttopology: 'triangle-strip'\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn pipeline;\n\t\t}\n\t\tresolveDepth(commandEncoder, sourceTexture, destinationTexture) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst wgpu = device.wgpu;\n\t\t\t\tconst pipeline = this.getPipeline(destinationTexture.format);\n\t\t\t\tconst numFaces = sourceTexture.depthOrArrayLayers;\n\t\t\t\tfor(let face = 0; face < numFaces; face++){\n\t\t\t\t\t\tconst srcView = sourceTexture.createView({\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\taspect: 'depth-only',\n\t\t\t\t\t\t\t\tbaseMipLevel: 0,\n\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst dstView = destinationTexture.createView({\n\t\t\t\t\t\t\t\tdimension: '2d',\n\t\t\t\t\t\t\t\tbaseMipLevel: 0,\n\t\t\t\t\t\t\t\tmipLevelCount: 1,\n\t\t\t\t\t\t\t\tbaseArrayLayer: face\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst passEncoder = commandEncoder.beginRenderPass({\n\t\t\t\t\t\t\t\tcolorAttachments: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tview: dstView,\n\t\t\t\t\t\t\t\t\t\t\t\tloadOp: 'clear',\n\t\t\t\t\t\t\t\t\t\t\t\tstoreOp: 'store'\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst bindGroup = wgpu.createBindGroup({\n\t\t\t\t\t\t\t\tlayout: pipeline.getBindGroupLayout(0),\n\t\t\t\t\t\t\t\tentries: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tbinding: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tresource: srcView\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\t\t\tpassEncoder.setBindGroup(0, bindGroup);\n\t\t\t\t\t\tpassEncoder.draw(4);\n\t\t\t\t\t\tpassEncoder.end();\n\t\t\t\t}\n\t\t\t\tdevice.pipeline = null;\n\t\t}\n}\n\nclass WebgpuCompute {\n\t\tconstructor(compute){\n\t\t\t\tthis.uniformBuffers = [];\n\t\t\t\tthis.bindGroup = null;\n\t\t\t\tthis.compute = compute;\n\t\t\t\tconst { device, shader } = compute;\n\t\t\t\tconst { computeBindGroupFormat, computeUniformBufferFormats } = shader.impl;\n\t\t\t\tthis.bindGroup = new BindGroup(device, computeBindGroupFormat);\n\t\t\t\tif (computeUniformBufferFormats) {\n\t\t\t\t\t\tfor(const name in computeUniformBufferFormats){\n\t\t\t\t\t\t\t\tif (computeUniformBufferFormats.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\t\t\tconst ub = new UniformBuffer(device, computeUniformBufferFormats[name], true);\n\t\t\t\t\t\t\t\t\t\tthis.uniformBuffers.push(ub);\n\t\t\t\t\t\t\t\t\t\tthis.bindGroup.setUniformBuffer(name, ub);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.pipeline = device.computePipeline.get(shader, computeBindGroupFormat);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.uniformBuffers.forEach((ub)=>ub.destroy());\n\t\t\t\tthis.uniformBuffers.length = 0;\n\t\t\t\tthis.bindGroup.destroy();\n\t\t\t\tthis.bindGroup = null;\n\t\t}\n\t\tupdateBindGroup() {\n\t\t\t\tconst { bindGroup } = this;\n\t\t\t\tbindGroup.updateUniformBuffers();\n\t\t\t\tbindGroup.update();\n\t\t}\n\t\tdispatch(x, y, z) {\n\t\t\t\tconst device = this.compute.device;\n\t\t\t\tdevice.setBindGroup(0, this.bindGroup);\n\t\t\t\tconst passEncoder = device.passEncoder;\n\t\t\t\tpassEncoder.setPipeline(this.pipeline);\n\t\t\t\tpassEncoder.dispatchWorkgroups(x, y, z);\n\t\t}\n}\n\nlet id$7 = 0;\nclass StorageBuffer {\n\t\tconstructor(graphicsDevice, byteSize, bufferUsage = 0){\n\t\t\t\tthis.id = id$7++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.byteSize = byteSize;\n\t\t\t\tthis.bufferUsage = bufferUsage;\n\t\t\t\tthis.impl = graphicsDevice.createBufferImpl(BUFFERUSAGE_STORAGE | bufferUsage);\n\t\t\t\tthis.impl.allocate(graphicsDevice, byteSize);\n\t\t\t\tthis.device.buffers.push(this);\n\t\t\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.byteSize);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst idx = device.buffers.indexOf(this);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tdevice.buffers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this.byteSize);\n\t\t\t\tthis.impl.destroy(device);\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.sb += size;\n\t\t}\n\t\tread(offset = 0, size = this.byteSize, data = null, immediate = false) {\n\t\t\t\treturn this.impl.read(this.device, offset, size, data, immediate);\n\t\t}\n\t\twrite(bufferOffset = 0, data, dataOffset = 0, size) {\n\t\t\t\tthis.impl.write(this.device, bufferOffset, data, dataOffset, size);\n\t\t}\n\t\tclear(offset = 0, size = this.byteSize) {\n\t\t\t\tthis.impl.clear(this.device, offset, size);\n\t\t}\n}\n\nclass WebgpuDrawCommands {\n\t\tconstructor(device){\n\t\t\t\tthis.gpuIndirect = null;\n\t\t\t\tthis.gpuIndirectSigned = null;\n\t\t\t\tthis.storage = null;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tallocate(maxCount) {\n\t\t\t\tthis.gpuIndirect = new Uint32Array(5 * maxCount);\n\t\t\t\tthis.gpuIndirectSigned = new Int32Array(this.gpuIndirect.buffer);\n\t\t\t\tthis.storage = new StorageBuffer(this.device, this.gpuIndirect.byteLength, BUFFERUSAGE_INDIRECT | BUFFERUSAGE_COPY_DST);\n\t\t}\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex, baseVertex = 0, firstInstance = 0) {\n\t\t\t\tconst o = i * 5;\n\t\t\t\tthis.gpuIndirect[o + 0] = indexOrVertexCount;\n\t\t\t\tthis.gpuIndirect[o + 1] = instanceCount;\n\t\t\t\tthis.gpuIndirect[o + 2] = firstIndexOrVertex;\n\t\t\t\tthis.gpuIndirectSigned[o + 3] = baseVertex;\n\t\t\t\tthis.gpuIndirect[o + 4] = firstInstance;\n\t\t}\n\t\tupdate(count) {\n\t\t\t\tif (this.storage && count > 0) {\n\t\t\t\t\t\tconst used = count * 5;\n\t\t\t\t\t\tthis.storage.write(0, this.gpuIndirect, 0, used);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.storage?.destroy();\n\t\t\t\tthis.storage = null;\n\t\t}\n}\n\nconst _uniqueLocations = new Map();\nconst _indirectEntryByteSize = 5 * 4;\nclass WebgpuGraphicsDevice extends GraphicsDevice {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas, options), this.renderPipeline = new WebgpuRenderPipeline(this), this.computePipeline = new WebgpuComputePipeline(this), this._indirectDrawBuffer = null, this._indirectDrawBufferCount = 0, this._indirectDrawNextIndex = 0, this.pipeline = null, this.bindGroupFormats = [], this.commandEncoder = null, this.commandBuffers = [], this.glslang = null, this.twgsl = null;\n\t\t\t\toptions = this.initOptions;\n\t\t\t\toptions.alpha = options.alpha ?? true;\n\t\t\t\tthis.backBufferAntialias = options.antialias ?? false;\n\t\t\t\tthis.isWebGPU = true;\n\t\t\t\tthis._deviceType = DEVICETYPE_WEBGPU;\n\t\t\t\tthis.scope.resolve(UNUSED_UNIFORM_NAME).setValue(0);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.clearRenderer.destroy();\n\t\t\t\tthis.clearRenderer = null;\n\t\t\t\tthis.mipmapRenderer.destroy();\n\t\t\t\tthis.mipmapRenderer = null;\n\t\t\t\tthis.resolver.destroy();\n\t\t\t\tthis.resolver = null;\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tinitDeviceCaps() {\n\t\t\t\tconst limits = this.wgpu?.limits;\n\t\t\t\tthis.limits = limits;\n\t\t\t\tthis.precision = 'highp';\n\t\t\t\tthis.maxPrecision = 'highp';\n\t\t\t\tthis.maxSamples = 4;\n\t\t\t\tthis.maxTextures = 16;\n\t\t\t\tthis.maxTextureSize = limits.maxTextureDimension2D;\n\t\t\t\tthis.maxCubeMapSize = limits.maxTextureDimension2D;\n\t\t\t\tthis.maxVolumeSize = limits.maxTextureDimension3D;\n\t\t\t\tthis.maxColorAttachments = limits.maxColorAttachments;\n\t\t\t\tthis.maxPixelRatio = 1;\n\t\t\t\tthis.maxAnisotropy = 16;\n\t\t\t\tthis.fragmentUniformsCount = limits.maxUniformBufferBindingSize / 16;\n\t\t\t\tthis.vertexUniformsCount = limits.maxUniformBufferBindingSize / 16;\n\t\t\t\tthis.supportsUniformBuffers = true;\n\t\t\t\tthis.supportsAreaLights = true;\n\t\t\t\tthis.supportsGpuParticles = true;\n\t\t\t\tthis.supportsCompute = true;\n\t\t\t\tthis.textureFloatRenderable = true;\n\t\t\t\tthis.textureHalfFloatRenderable = true;\n\t\t\t\tthis.supportsImageBitmap = true;\n\t\t\t\tthis.samples = this.backBufferAntialias ? 4 : 1;\n\t\t\t\tconst wgslFeatures = window.navigator.gpu.wgslLanguageFeatures;\n\t\t\t\tthis.supportsStorageTextureRead = wgslFeatures?.has('readonly_and_readwrite_storage_textures');\n\t\t\t\tthis.initCapsDefines();\n\t\t}\n\t\tasync initWebGpu(glslangUrl, twgslUrl) {\n\t\t\t\tif (!window.navigator.gpu) {\n\t\t\t\t\t\tthrow new Error('Unable to retrieve GPU. Ensure you are using a browser that supports WebGPU rendering.');\n\t\t\t\t}\n\t\t\t\tif (glslangUrl && twgslUrl) {\n\t\t\t\t\t\tconst buildUrl = (srcPath)=>{\n\t\t\t\t\t\t\t\treturn new URL(srcPath, window.location.href).toString();\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst results = await Promise.all([\n\t\t\t\t\t\t\t\timport(/* @vite-ignore */ /* webpackIgnore: true */ `${buildUrl(twgslUrl)}`).then((module)=>twgsl(twgslUrl.replace('.js', '.wasm'))),\n\t\t\t\t\t\t\t\timport(/* @vite-ignore */ /* webpackIgnore: true */ `${buildUrl(glslangUrl)}`).then((module)=>module.default())\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.twgsl = results[0];\n\t\t\t\t\t\tthis.glslang = results[1];\n\t\t\t\t}\n\t\t\t\treturn this.createDevice();\n\t\t}\n\t\tasync createDevice() {\n\t\t\t\tconst adapterOptions = {\n\t\t\t\t\t\tpowerPreference: this.initOptions.powerPreference !== 'default' ? this.initOptions.powerPreference : undefined,\n\t\t\t\t\t\txrCompatible: this.initOptions.xrCompatible\n\t\t\t\t};\n\t\t\t\tthis.gpuAdapter = await window.navigator.gpu.requestAdapter(adapterOptions);\n\t\t\t\tconst requiredFeatures = [];\n\t\t\t\tconst requireFeature = (feature)=>{\n\t\t\t\t\t\tconst supported = this.gpuAdapter.features.has(feature);\n\t\t\t\t\t\tif (supported) {\n\t\t\t\t\t\t\t\trequiredFeatures.push(feature);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn supported;\n\t\t\t\t};\n\t\t\t\tthis.textureFloatFilterable = requireFeature('float32-filterable');\n\t\t\t\tthis.textureFloatBlendable = requireFeature('float32-blendable');\n\t\t\t\tthis.extCompressedTextureS3TC = requireFeature('texture-compression-bc');\n\t\t\t\tthis.extCompressedTextureS3TCSliced3D = requireFeature('texture-compression-bc-sliced-3d');\n\t\t\t\tthis.extCompressedTextureETC = requireFeature('texture-compression-etc2');\n\t\t\t\tthis.extCompressedTextureASTC = requireFeature('texture-compression-astc');\n\t\t\t\tthis.extCompressedTextureASTCSliced3D = requireFeature('texture-compression-astc-sliced-3d');\n\t\t\t\tthis.supportsTimestampQuery = requireFeature('timestamp-query');\n\t\t\t\tthis.supportsDepthClip = requireFeature('depth-clip-control');\n\t\t\t\tthis.supportsDepth32Stencil = requireFeature('depth32float-stencil8');\n\t\t\t\tthis.supportsIndirectFirstInstance = requireFeature('indirect-first-instance');\n\t\t\t\tthis.supportsShaderF16 = requireFeature('shader-f16');\n\t\t\t\tthis.supportsStorageRGBA8 = requireFeature('bgra8unorm-storage');\n\t\t\t\tthis.textureRG11B10Renderable = requireFeature('rg11b10ufloat-renderable');\n\t\t\t\tthis.supportsClipDistances = requireFeature('clip-distances');\n\t\t\t\tconst adapterLimits = this.gpuAdapter?.limits;\n\t\t\t\tconst requiredLimits = {};\n\t\t\t\tif (adapterLimits) {\n\t\t\t\t\t\tfor(const limitName in adapterLimits){\n\t\t\t\t\t\t\t\tif (limitName === 'minSubgroupSize' || limitName === 'maxSubgroupSize') {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trequiredLimits[limitName] = adapterLimits[limitName];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst deviceDescr = {\n\t\t\t\t\t\trequiredFeatures,\n\t\t\t\t\t\trequiredLimits,\n\t\t\t\t\t\tdefaultQueue: {\n\t\t\t\t\t\t\t\tlabel: 'Default Queue'\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.wgpu = await this.gpuAdapter.requestDevice(deviceDescr);\n\t\t\t\tthis.wgpu.lost?.then(this.handleDeviceLost.bind(this));\n\t\t\t\tthis.initDeviceCaps();\n\t\t\t\tthis.gpuContext = this.canvas.getContext('webgpu');\n\t\t\t\tlet canvasToneMapping = 'standard';\n\t\t\t\tlet preferredCanvasFormat = window.navigator.gpu.getPreferredCanvasFormat();\n\t\t\t\tconst displayFormat = this.initOptions.displayFormat;\n\t\t\t\tthis.backBufferFormat = preferredCanvasFormat === 'rgba8unorm' ? displayFormat === DISPLAYFORMAT_LDR_SRGB ? PIXELFORMAT_SRGBA8 : PIXELFORMAT_RGBA8 : displayFormat === DISPLAYFORMAT_LDR_SRGB ? PIXELFORMAT_SBGRA8 : PIXELFORMAT_BGRA8;\n\t\t\t\tthis.backBufferViewFormat = displayFormat === DISPLAYFORMAT_LDR_SRGB ? `${preferredCanvasFormat}-srgb` : preferredCanvasFormat;\n\t\t\t\tif (displayFormat === DISPLAYFORMAT_HDR && this.textureFloatFilterable) {\n\t\t\t\t\t\tconst hdrMediaQuery = window.matchMedia('(dynamic-range: high)');\n\t\t\t\t\t\tif (hdrMediaQuery?.matches) {\n\t\t\t\t\t\t\t\tthis.backBufferFormat = PIXELFORMAT_RGBA16F;\n\t\t\t\t\t\t\t\tthis.backBufferViewFormat = 'rgba16float';\n\t\t\t\t\t\t\t\tpreferredCanvasFormat = 'rgba16float';\n\t\t\t\t\t\t\t\tthis.isHdr = true;\n\t\t\t\t\t\t\t\tcanvasToneMapping = 'extended';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.canvasConfig = {\n\t\t\t\t\t\tdevice: this.wgpu,\n\t\t\t\t\t\tcolorSpace: 'srgb',\n\t\t\t\t\t\talphaMode: this.initOptions.alpha ? 'premultiplied' : 'opaque',\n\t\t\t\t\t\tformat: preferredCanvasFormat,\n\t\t\t\t\t\ttoneMapping: {\n\t\t\t\t\t\t\t\tmode: canvasToneMapping\n\t\t\t\t\t\t},\n\t\t\t\t\t\tusage: GPUTextureUsage.RENDER_ATTACHMENT | GPUTextureUsage.COPY_SRC | GPUTextureUsage.COPY_DST,\n\t\t\t\t\t\tviewFormats: displayFormat === DISPLAYFORMAT_LDR_SRGB ? [\n\t\t\t\t\t\t\t\tthis.backBufferViewFormat\n\t\t\t\t\t\t] : []\n\t\t\t\t};\n\t\t\t\tthis.gpuContext?.configure(this.canvasConfig);\n\t\t\t\tthis.createBackbuffer();\n\t\t\t\tthis.clearRenderer = new WebgpuClearRenderer(this);\n\t\t\t\tthis.mipmapRenderer = new WebgpuMipmapRenderer(this);\n\t\t\t\tthis.resolver = new WebgpuResolver(this);\n\t\t\t\tthis.postInit();\n\t\t\t\treturn this;\n\t\t}\n\t\tasync handleDeviceLost(info) {\n\t\t\t\tif (info.reason !== 'destroyed') {\n\t\t\t\t\t\tsuper.loseContext();\n\t\t\t\t\t\tawait this.createDevice();\n\t\t\t\t\t\tsuper.restoreContext();\n\t\t\t\t}\n\t\t}\n\t\tpostInit() {\n\t\t\t\tsuper.postInit();\n\t\t\t\tthis.initializeRenderState();\n\t\t\t\tthis.setupPassEncoderDefaults();\n\t\t\t\tthis.gpuProfiler = new WebgpuGpuProfiler(this);\n\t\t\t\tthis.dynamicBuffers = new WebgpuDynamicBuffers(this, 100 * 1024, this.limits.minUniformBufferOffsetAlignment);\n\t\t\t\tthis.emptyBindGroup = new BindGroup(this, new BindGroupFormat(this, []));\n\t\t\t\tthis.emptyBindGroup.update();\n\t\t}\n\t\tcreateBackbuffer() {\n\t\t\t\tthis.supportsStencil = this.initOptions.stencil;\n\t\t\t\tthis.backBuffer = new RenderTarget({\n\t\t\t\t\t\tname: 'WebgpuFramebuffer',\n\t\t\t\t\t\tgraphicsDevice: this,\n\t\t\t\t\t\tdepth: this.initOptions.depth,\n\t\t\t\t\t\tstencil: this.supportsStencil,\n\t\t\t\t\t\tsamples: this.samples\n\t\t\t\t});\n\t\t\t\tthis.backBuffer.impl.isBackbuffer = true;\n\t\t}\n\t\tframeStart() {\n\t\t\t\tsuper.frameStart();\n\t\t\t\tthis.gpuProfiler.frameStart();\n\t\t\t\tthis.submit();\n\t\t\t\tconst outColorBuffer = this.gpuContext?.getCurrentTexture?.() ?? this.externalBackbuffer?.impl.gpuTexture;\n\t\t\t\tif (this.backBufferSize.x !== outColorBuffer.width || this.backBufferSize.y !== outColorBuffer.height) {\n\t\t\t\t\t\tthis.backBufferSize.set(outColorBuffer.width, outColorBuffer.height);\n\t\t\t\t\t\tthis.backBuffer.destroy();\n\t\t\t\t\t\tthis.backBuffer = null;\n\t\t\t\t\t\tthis.createBackbuffer();\n\t\t\t\t}\n\t\t\t\tconst rt = this.backBuffer;\n\t\t\t\tconst wrt = rt.impl;\n\t\t\t\twrt.setColorAttachment(0, undefined, this.backBufferViewFormat);\n\t\t\t\tthis.initRenderTarget(rt);\n\t\t\t\twrt.assignColorTexture(this, outColorBuffer);\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tsuper.frameEnd();\n\t\t\t\tthis.gpuProfiler.frameEnd();\n\t\t\t\tthis.submit();\n\t\t\t\tif (!this.contextLost) {\n\t\t\t\t\t\tthis.gpuProfiler.request();\n\t\t\t\t}\n\t\t\t\tthis._indirectDrawNextIndex = 0;\n\t\t}\n\t\tcreateBufferImpl(usageFlags) {\n\t\t\t\treturn new WebgpuBuffer(usageFlags);\n\t\t}\n\t\tcreateUniformBufferImpl(uniformBuffer) {\n\t\t\t\treturn new WebgpuUniformBuffer(uniformBuffer);\n\t\t}\n\t\tcreateVertexBufferImpl(vertexBuffer, format, options) {\n\t\t\t\treturn new WebgpuVertexBuffer(vertexBuffer, format, options);\n\t\t}\n\t\tcreateIndexBufferImpl(indexBuffer, options) {\n\t\t\t\treturn new WebgpuIndexBuffer(indexBuffer, options);\n\t\t}\n\t\tcreateShaderImpl(shader) {\n\t\t\t\treturn new WebgpuShader(shader);\n\t\t}\n\t\tcreateDrawCommandImpl(drawCommands) {\n\t\t\t\treturn new WebgpuDrawCommands(this);\n\t\t}\n\t\tcreateTextureImpl(texture) {\n\t\t\t\treturn new WebgpuTexture(texture);\n\t\t}\n\t\tcreateRenderTargetImpl(renderTarget) {\n\t\t\t\treturn new WebgpuRenderTarget(renderTarget);\n\t\t}\n\t\tcreateBindGroupFormatImpl(bindGroupFormat) {\n\t\t\t\treturn new WebgpuBindGroupFormat(bindGroupFormat);\n\t\t}\n\t\tcreateBindGroupImpl(bindGroup) {\n\t\t\t\treturn new WebgpuBindGroup();\n\t\t}\n\t\tcreateComputeImpl(compute) {\n\t\t\t\treturn new WebgpuCompute(compute);\n\t\t}\n\t\tget indirectDrawBuffer() {\n\t\t\t\tthis.allocateIndirectDrawBuffer();\n\t\t\t\treturn this._indirectDrawBuffer;\n\t\t}\n\t\tallocateIndirectDrawBuffer() {\n\t\t\t\tif (this._indirectDrawNextIndex === 0 && this._indirectDrawBufferCount < this.maxIndirectDrawCount) {\n\t\t\t\t\t\tthis._indirectDrawBuffer?.destroy();\n\t\t\t\t\t\tthis._indirectDrawBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this._indirectDrawBuffer === null) {\n\t\t\t\t\t\tthis._indirectDrawBuffer = new StorageBuffer(this, this.maxIndirectDrawCount * _indirectEntryByteSize, BUFFERUSAGE_INDIRECT | BUFFERUSAGE_COPY_DST);\n\t\t\t\t\t\tthis._indirectDrawBufferCount = this.maxIndirectDrawCount;\n\t\t\t\t}\n\t\t}\n\t\tgetIndirectDrawSlot(count = 1) {\n\t\t\t\tthis.allocateIndirectDrawBuffer();\n\t\t\t\tconst slot = this._indirectDrawNextIndex;\n\t\t\t\tconst nextIndex = this._indirectDrawNextIndex + count;\n\t\t\t\tthis._indirectDrawNextIndex = nextIndex;\n\t\t\t\treturn slot;\n\t\t}\n\t\tsetBindGroup(index, bindGroup, offsets) {\n\t\t\t\tif (this.passEncoder) {\n\t\t\t\t\t\tthis.passEncoder.setBindGroup(index, bindGroup.impl.bindGroup, offsets ?? bindGroup.uniformBufferOffsets);\n\t\t\t\t\t\tthis.bindGroupFormats[index] = bindGroup.format.impl;\n\t\t\t\t}\n\t\t}\n\t\tsubmitVertexBuffer(vertexBuffer, slot) {\n\t\t\t\tconst format = vertexBuffer.format;\n\t\t\t\tconst { interleaved, elements } = format;\n\t\t\t\tconst elementCount = elements.length;\n\t\t\t\tconst vbBuffer = vertexBuffer.impl.buffer;\n\t\t\t\tif (interleaved) {\n\t\t\t\t\t\tthis.passEncoder.setVertexBuffer(slot, vbBuffer);\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < elementCount; i++){\n\t\t\t\t\t\tthis.passEncoder.setVertexBuffer(slot + i, vbBuffer, elements[i].offset);\n\t\t\t\t}\n\t\t\t\treturn elementCount;\n\t\t}\n\t\tvalidateVBLocations(vb0, vb1) {\n\t\t\t\tconst validateVB = (vb)=>{\n\t\t\t\t\t\tconst { elements } = vb.format;\n\t\t\t\t\t\tfor(let i = 0; i < elements.length; i++){\n\t\t\t\t\t\t\t\tconst name = elements[i].name;\n\t\t\t\t\t\t\t\tconst location = semanticToLocation[name];\n\t\t\t\t\t\t\t\tif (_uniqueLocations.has(location)) ;\n\t\t\t\t\t\t\t\t_uniqueLocations.set(location, name);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tvalidateVB(vb0);\n\t\t\t\tvalidateVB(vb1);\n\t\t\t\t_uniqueLocations.clear();\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances = 1, drawCommands, first = true, last = true) {\n\t\t\t\tif (this.shader.ready && !this.shader.failed) {\n\t\t\t\t\t\tconst passEncoder = this.passEncoder;\n\t\t\t\t\t\tlet pipeline = this.pipeline;\n\t\t\t\t\t\tconst vb0 = this.vertexBuffers[0];\n\t\t\t\t\t\tconst vb1 = this.vertexBuffers[1];\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\tif (vb0) {\n\t\t\t\t\t\t\t\t\t\tconst vbSlot = this.submitVertexBuffer(vb0, 0);\n\t\t\t\t\t\t\t\t\t\tif (vb1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.submitVertexBuffer(vb1, vbSlot);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tpipeline = this.renderPipeline.get(primitive, vb0?.format, vb1?.format, indexBuffer?.format, this.shader, this.renderTarget, this.bindGroupFormats, this.blendState, this.depthState, this.cullMode, this.stencilEnabled, this.stencilFront, this.stencilBack);\n\t\t\t\t\t\t\t\tif (this.pipeline !== pipeline) {\n\t\t\t\t\t\t\t\t\t\tthis.pipeline = pipeline;\n\t\t\t\t\t\t\t\t\t\tpassEncoder.setPipeline(pipeline);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\t\t\tpassEncoder.setIndexBuffer(indexBuffer.impl.buffer, indexBuffer.impl.format);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (drawCommands) {\n\t\t\t\t\t\t\t\tconst storage = drawCommands.impl?.storage ?? this.indirectDrawBuffer;\n\t\t\t\t\t\t\t\tconst indirectBuffer = storage.impl.buffer;\n\t\t\t\t\t\t\t\tconst drawsCount = drawCommands.count;\n\t\t\t\t\t\t\t\tfor(let d = 0; d < drawsCount; d++){\n\t\t\t\t\t\t\t\t\t\tconst indirectOffset = (drawCommands.slotIndex + d) * _indirectEntryByteSize;\n\t\t\t\t\t\t\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tpassEncoder.drawIndexedIndirect(indirectBuffer, indirectOffset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tpassEncoder.drawIndirect(indirectBuffer, indirectOffset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\t\t\t\t\tpassEncoder.drawIndexed(primitive.count, numInstances, primitive.base, primitive.baseVertex ?? 0, 0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tpassEncoder.draw(primitive.count, numInstances, primitive.base, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (last) {\n\t\t\t\t\t\tthis.clearVertexBuffer();\n\t\t\t\t\t\tthis.pipeline = null;\n\t\t\t\t}\n\t\t}\n\t\tsetShader(shader, asyncCompile = false) {\n\t\t\t\tif (shader !== this.shader) {\n\t\t\t\t\t\tthis.shader = shader;\n\t\t\t\t}\n\t\t}\n\t\tsetBlendState(blendState) {\n\t\t\t\tthis.blendState.copy(blendState);\n\t\t}\n\t\tsetDepthState(depthState) {\n\t\t\t\tthis.depthState.copy(depthState);\n\t\t}\n\t\tsetStencilState(stencilFront, stencilBack) {\n\t\t\t\tif (stencilFront || stencilBack) {\n\t\t\t\t\t\tthis.stencilEnabled = true;\n\t\t\t\t\t\tthis.stencilFront.copy(stencilFront ?? StencilParameters.DEFAULT);\n\t\t\t\t\t\tthis.stencilBack.copy(stencilBack ?? StencilParameters.DEFAULT);\n\t\t\t\t\t\tconst ref = this.stencilFront.ref;\n\t\t\t\t\t\tif (this.stencilRef !== ref) {\n\t\t\t\t\t\t\t\tthis.stencilRef = ref;\n\t\t\t\t\t\t\t\tthis.passEncoder.setStencilReference(ref);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.stencilEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\tsetBlendColor(r, g, b, a) {\n\t\t\t\tconst c = this.blendColor;\n\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\t\tc.set(r, g, b, a);\n\t\t\t\t\t\tthis.passEncoder.setBlendConstant(c);\n\t\t\t\t}\n\t\t}\n\t\tsetCullMode(cullMode) {\n\t\t\t\tthis.cullMode = cullMode;\n\t\t}\n\t\tsetAlphaToCoverage(state) {}\n\t\tinitializeContextCaches() {\n\t\t\t\tsuper.initializeContextCaches();\n\t\t}\n\t\tsetupPassEncoderDefaults() {\n\t\t\t\tthis.pipeline = null;\n\t\t\t\tthis.stencilRef = 0;\n\t\t\t\tthis.blendColor.set(0, 0, 0, 0);\n\t\t}\n\t\t_uploadDirtyTextures() {\n\t\t\t\tthis.textures.forEach((texture)=>{\n\t\t\t\t\t\tif (texture._needsUpload || texture._needsMipmaps) {\n\t\t\t\t\t\t\t\ttexture.upload();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tsetupTimeStampWrites(passDesc, name) {\n\t\t\t\tif (this.gpuProfiler._enabled) {\n\t\t\t\t\t\tif (this.gpuProfiler.timestampQueriesSet) {\n\t\t\t\t\t\t\t\tconst slot = this.gpuProfiler.getSlot(name);\n\t\t\t\t\t\t\t\tif (slot === -1) ; else {\n\t\t\t\t\t\t\t\t\t\tpassDesc = passDesc ?? {};\n\t\t\t\t\t\t\t\t\t\tpassDesc.timestampWrites = {\n\t\t\t\t\t\t\t\t\t\t\t\tquerySet: this.gpuProfiler.timestampQueriesSet.querySet,\n\t\t\t\t\t\t\t\t\t\t\t\tbeginningOfPassWriteIndex: slot * 2,\n\t\t\t\t\t\t\t\t\t\t\t\tendOfPassWriteIndex: slot * 2 + 1\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn passDesc;\n\t\t}\n\t\tstartRenderPass(renderPass) {\n\t\t\t\tthis._uploadDirtyTextures();\n\t\t\t\tconst rt = renderPass.renderTarget || this.backBuffer;\n\t\t\t\tthis.renderTarget = rt;\n\t\t\t\tconst wrt = rt.impl;\n\t\t\t\tif (rt !== this.backBuffer) {\n\t\t\t\t\t\tthis.initRenderTarget(rt);\n\t\t\t\t}\n\t\t\t\twrt.setupForRenderPass(renderPass, rt);\n\t\t\t\tconst renderPassDesc = wrt.renderPassDescriptor;\n\t\t\t\tthis.setupTimeStampWrites(renderPassDesc, renderPass.name);\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tthis.passEncoder = commandEncoder.beginRenderPass(renderPassDesc);\n\t\t\t\tthis.passEncoder.label = `${renderPass.name}-PassEncoder RT:${rt.name}`;\n\t\t\t\tthis.setupPassEncoderDefaults();\n\t\t\t\tconst { width, height } = rt;\n\t\t\t\tthis.setViewport(0, 0, width, height);\n\t\t\t\tthis.setScissor(0, 0, width, height);\n\t\t\t\tthis.insideRenderPass = true;\n\t\t}\n\t\tendRenderPass(renderPass) {\n\t\t\t\tthis.passEncoder.end();\n\t\t\t\tthis.passEncoder = null;\n\t\t\t\tthis.insideRenderPass = false;\n\t\t\t\tthis.bindGroupFormats.length = 0;\n\t\t\t\tconst target = this.renderTarget;\n\t\t\t\tif (target) {\n\t\t\t\t\t\tif (target.depthBuffer && renderPass.depthStencilOps.resolveDepth) {\n\t\t\t\t\t\t\t\tif (renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\t\t\tconst depthAttachment = target.impl.depthAttachment;\n\t\t\t\t\t\t\t\t\t\tconst destTexture = target.depthBuffer.impl.gpuTexture;\n\t\t\t\t\t\t\t\t\t\tif (depthAttachment && destTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.resolver.resolveDepth(this.commandEncoder, depthAttachment.multisampledDepthBuffer, destTexture);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < renderPass.colorArrayOps.length; i++){\n\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\tif (colorOps.genMipmaps) {\n\t\t\t\t\t\t\t\tthis.mipmapRenderer.generate(renderPass.renderTarget._colorBuffers[i].impl);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstartComputePass(name) {\n\t\t\t\tthis.pipeline = null;\n\t\t\t\tconst computePassDesc = this.setupTimeStampWrites(undefined, name);\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tthis.passEncoder = commandEncoder.beginComputePass(computePassDesc);\n\t\t\t\tthis.insideRenderPass = true;\n\t\t}\n\t\tendComputePass() {\n\t\t\t\tthis.passEncoder.end();\n\t\t\t\tthis.passEncoder = null;\n\t\t\t\tthis.insideRenderPass = false;\n\t\t\t\tthis.bindGroupFormats.length = 0;\n\t\t}\n\t\tcomputeDispatch(computes, name = 'Unnamed') {\n\t\t\t\tthis.startComputePass(name);\n\t\t\t\tfor(let i = 0; i < computes.length; i++){\n\t\t\t\t\t\tconst compute = computes[i];\n\t\t\t\t\t\tcompute.applyParameters();\n\t\t\t\t\t\tcompute.impl.updateBindGroup();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < computes.length; i++){\n\t\t\t\t\t\tconst compute = computes[i];\n\t\t\t\t\t\tcompute.impl.dispatch(compute.countX, compute.countY, compute.countZ);\n\t\t\t\t}\n\t\t\t\tthis.endComputePass();\n\t\t}\n\t\tgetCommandEncoder() {\n\t\t\t\tlet commandEncoder = this.commandEncoder;\n\t\t\t\tif (!commandEncoder) {\n\t\t\t\t\t\tcommandEncoder = this.wgpu.createCommandEncoder();\n\t\t\t\t\t\tthis.commandEncoder = commandEncoder;\n\t\t\t\t}\n\t\t\t\treturn commandEncoder;\n\t\t}\n\t\tendCommandEncoder() {\n\t\t\t\tconst { commandEncoder } = this;\n\t\t\t\tif (commandEncoder) {\n\t\t\t\t\t\tconst cb = commandEncoder.finish();\n\t\t\t\t\t\tthis.addCommandBuffer(cb);\n\t\t\t\t\t\tthis.commandEncoder = null;\n\t\t\t\t}\n\t\t}\n\t\taddCommandBuffer(commandBuffer, front = false) {\n\t\t\t\tif (front) {\n\t\t\t\t\t\tthis.commandBuffers.unshift(commandBuffer);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.commandBuffers.push(commandBuffer);\n\t\t\t\t}\n\t\t}\n\t\tsubmit() {\n\t\t\t\tthis.endCommandEncoder();\n\t\t\t\tif (this.commandBuffers.length > 0) {\n\t\t\t\t\t\tthis.dynamicBuffers.submit();\n\t\t\t\t\t\tthis.wgpu.queue.submit(this.commandBuffers);\n\t\t\t\t\t\tthis.commandBuffers.length = 0;\n\t\t\t\t\t\tthis.dynamicBuffers.onCommandBuffersSubmitted();\n\t\t\t\t}\n\t\t}\n\t\tclear(options) {\n\t\t\t\tif (options.flags) {\n\t\t\t\t\t\tthis.clearRenderer.clear(this, this.renderTarget, options, this.defaultClearOptions);\n\t\t\t\t}\n\t\t}\n\t\tsetViewport(x, y, w, h) {\n\t\t\t\tif (this.passEncoder) {\n\t\t\t\t\t\tif (!this.renderTarget.flipY) {\n\t\t\t\t\t\t\t\ty = this.renderTarget.height - y - h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.vx = x;\n\t\t\t\t\t\tthis.vy = y;\n\t\t\t\t\t\tthis.vw = w;\n\t\t\t\t\t\tthis.vh = h;\n\t\t\t\t\t\tthis.passEncoder.setViewport(x, y, w, h, 0, 1);\n\t\t\t\t}\n\t\t}\n\t\tsetScissor(x, y, w, h) {\n\t\t\t\tif (this.passEncoder) {\n\t\t\t\t\t\tif (!this.renderTarget.flipY) {\n\t\t\t\t\t\t\t\ty = this.renderTarget.height - y - h;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.sx = x;\n\t\t\t\t\t\tthis.sy = y;\n\t\t\t\t\t\tthis.sw = w;\n\t\t\t\t\t\tthis.sh = h;\n\t\t\t\t\t\tthis.passEncoder.setScissorRect(x, y, w, h);\n\t\t\t\t}\n\t\t}\n\t\tclearStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize) {\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tcommandEncoder.clearBuffer(storageBuffer.buffer, offset, size);\n\t\t}\n\t\treadStorageBuffer(storageBuffer, offset = 0, size = storageBuffer.byteSize - offset, data = null, immediate = false) {\n\t\t\t\tconst stagingBuffer = this.createBufferImpl(BUFFERUSAGE_READ | BUFFERUSAGE_COPY_DST);\n\t\t\t\tstagingBuffer.allocate(this, size);\n\t\t\t\tconst destBuffer = stagingBuffer.buffer;\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tcommandEncoder.copyBufferToBuffer(storageBuffer.buffer, offset, destBuffer, 0, size);\n\t\t\t\treturn this.readBuffer(stagingBuffer, size, data, immediate);\n\t\t}\n\t\treadBuffer(stagingBuffer, size, data = null, immediate = false) {\n\t\t\t\tconst destBuffer = stagingBuffer.buffer;\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tconst read = ()=>{\n\t\t\t\t\t\t\t\tdestBuffer?.mapAsync(GPUMapMode.READ).then(()=>{\n\t\t\t\t\t\t\t\t\t\tdata ??= new Uint8Array(size);\n\t\t\t\t\t\t\t\t\t\tconst copySrc = destBuffer.getMappedRange(0, size);\n\t\t\t\t\t\t\t\t\t\tconst srcType = data.constructor;\n\t\t\t\t\t\t\t\t\t\tdata.set(new srcType(copySrc));\n\t\t\t\t\t\t\t\t\t\tdestBuffer.unmap();\n\t\t\t\t\t\t\t\t\t\tstagingBuffer.destroy(this);\n\t\t\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (immediate) {\n\t\t\t\t\t\t\t\tthis.submit();\n\t\t\t\t\t\t\t\tread();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\t\t\tread();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\twriteStorageBuffer(storageBuffer, bufferOffset = 0, data, dataOffset = 0, size) {\n\t\t\t\tthis.wgpu.queue.writeBuffer(storageBuffer.buffer, bufferOffset, data, dataOffset, size);\n\t\t}\n\t\tcopyRenderTarget(source, dest, color, depth) {\n\t\t\t\tconst copySize = {\n\t\t\t\t\t\twidth: source ? source.width : dest.width,\n\t\t\t\t\t\theight: source ? source.height : dest.height,\n\t\t\t\t\t\tdepthOrArrayLayers: 1\n\t\t\t\t};\n\t\t\t\tconst commandEncoder = this.getCommandEncoder();\n\t\t\t\tif (color) {\n\t\t\t\t\t\tconst copySrc = {\n\t\t\t\t\t\t\t\ttexture: source ? source.colorBuffer.impl.gpuTexture : this.backBuffer.impl.assignedColorTexture,\n\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst copyDst = {\n\t\t\t\t\t\t\t\ttexture: dest ? dest.colorBuffer.impl.gpuTexture : this.backBuffer.impl.assignedColorTexture,\n\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tcommandEncoder.copyTextureToTexture(copySrc, copyDst, copySize);\n\t\t\t\t}\n\t\t\t\tif (depth) {\n\t\t\t\t\t\tconst sourceRT = source ? source : this.renderTarget;\n\t\t\t\t\t\tconst sourceTexture = sourceRT.impl.depthAttachment.depthTexture;\n\t\t\t\t\t\tif (source.samples > 1) {\n\t\t\t\t\t\t\t\tconst destTexture = dest.colorBuffer.impl.gpuTexture;\n\t\t\t\t\t\t\t\tthis.resolver.resolveDepth(commandEncoder, sourceTexture, destTexture);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst destTexture = dest ? dest.depthBuffer.impl.gpuTexture : this.renderTarget.impl.depthAttachment.depthTexture;\n\t\t\t\t\t\t\t\tconst copySrc = {\n\t\t\t\t\t\t\t\t\t\ttexture: sourceTexture,\n\t\t\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst copyDst = {\n\t\t\t\t\t\t\t\t\t\ttexture: destTexture,\n\t\t\t\t\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tcommandEncoder.copyTextureToTexture(copySrc, copyDst, copySize);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n}\n\nclass WebglBuffer {\n\t\tdestroy(device) {\n\t\t\t\tif (this.bufferId) {\n\t\t\t\t\t\tdevice.gl.deleteBuffer(this.bufferId);\n\t\t\t\t\t\tthis.bufferId = null;\n\t\t\t\t}\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn !!this.bufferId;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.bufferId = null;\n\t\t}\n\t\tunlock(device, usage, target, storage) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!this.bufferId) {\n\t\t\t\t\t\tlet glUsage;\n\t\t\t\t\t\tswitch(usage){\n\t\t\t\t\t\t\t\tcase BUFFER_STATIC:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.STATIC_DRAW;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BUFFER_DYNAMIC:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.DYNAMIC_DRAW;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BUFFER_STREAM:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.STREAM_DRAW;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BUFFER_GPUDYNAMIC:\n\t\t\t\t\t\t\t\t\t\tglUsage = gl.DYNAMIC_COPY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.bufferId = gl.createBuffer();\n\t\t\t\t\t\tgl.bindBuffer(target, this.bufferId);\n\t\t\t\t\t\tgl.bufferData(target, storage, glUsage);\n\t\t\t\t} else {\n\t\t\t\t\t\tgl.bindBuffer(target, this.bufferId);\n\t\t\t\t\t\tgl.bufferSubData(target, 0, storage);\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.bufferId = null;\n\t\t}\n}\n\nclass WebglVertexBuffer extends WebglBuffer {\n\t\tdestroy(device) {\n\t\t\t\tsuper.destroy(device);\n\t\t\t\tdevice.unbindVertexArray();\n\t\t}\n\t\tloseContext() {\n\t\t\t\tsuper.loseContext();\n\t\t\t\tthis.vao = null;\n\t\t}\n\t\tunlock(vertexBuffer) {\n\t\t\t\tconst device = vertexBuffer.device;\n\t\t\t\tsuper.unlock(device, vertexBuffer.usage, device.gl.ARRAY_BUFFER, vertexBuffer.storage);\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.vao = null;\n\t\t}\n}\n\nclass WebglIndexBuffer extends WebglBuffer {\n\t\tconstructor(indexBuffer){\n\t\t\t\tsuper();\n\t\t\t\tconst gl = indexBuffer.device.gl;\n\t\t\t\tconst format = indexBuffer.format;\n\t\t\t\tif (format === INDEXFORMAT_UINT8) {\n\t\t\t\t\t\tthis.glFormat = gl.UNSIGNED_BYTE;\n\t\t\t\t} else if (format === INDEXFORMAT_UINT16) {\n\t\t\t\t\t\tthis.glFormat = gl.UNSIGNED_SHORT;\n\t\t\t\t} else if (format === INDEXFORMAT_UINT32) {\n\t\t\t\t\t\tthis.glFormat = gl.UNSIGNED_INT;\n\t\t\t\t}\n\t\t}\n\t\tunlock(indexBuffer) {\n\t\t\t\tconst device = indexBuffer.device;\n\t\t\t\tsuper.unlock(device, indexBuffer.usage, device.gl.ELEMENT_ARRAY_BUFFER, indexBuffer.storage);\n\t\t}\n}\n\nclass WebglShaderInput {\n\t\tconstructor(graphicsDevice, name, type, locationId){\n\t\t\t\tthis.locationId = locationId;\n\t\t\t\tthis.scopeId = graphicsDevice.scope.resolve(name);\n\t\t\t\tthis.version = new Version();\n\t\t\t\tif (name.substring(name.length - 3) === '[0]') {\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_FLOAT:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_FLOATARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_INT:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_INTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UINT:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UINTARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BOOL:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BOOLARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_VEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_IVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC2:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BVEC2ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_VEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_IVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC3:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BVEC3ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_VEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_VEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_IVEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_IVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_UVEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_UVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase UNIFORMTYPE_BVEC4:\n\t\t\t\t\t\t\t\t\t\ttype = UNIFORMTYPE_BVEC4ARRAY;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.dataType = type;\n\t\t\t\tthis.value = [\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t\t\tthis.array = [];\n\t\t}\n}\n\nconst _vertexShaderBuiltins = new Set([\n\t\t'gl_VertexID',\n\t\t'gl_InstanceID',\n\t\t'gl_DrawID',\n\t\t'gl_BaseVertex',\n\t\t'gl_BaseInstance'\n]);\nclass CompiledShaderCache {\n\t\tdestroy(device) {\n\t\t\t\tthis.map.forEach((shader)=>{\n\t\t\t\t\t\tdevice.gl.deleteShader(shader);\n\t\t\t\t});\n\t\t}\n\t\tloseContext(device) {\n\t\t\t\tthis.map.clear();\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t}\n}\nconst _vertexShaderCache = new DeviceCache();\nconst _fragmentShaderCache = new DeviceCache();\nclass WebglShader {\n\t\tconstructor(shader){\n\t\t\t\tthis.compileDuration = 0;\n\t\t\t\tthis.init();\n\t\t\t\tthis.compile(shader.device, shader);\n\t\t\t\tthis.link(shader.device, shader);\n\t\t\t\tshader.device.shaders.push(shader);\n\t\t}\n\t\tdestroy(shader) {\n\t\t\t\tif (this.glProgram) {\n\t\t\t\t\t\tshader.device.gl.deleteProgram(this.glProgram);\n\t\t\t\t\t\tthis.glProgram = null;\n\t\t\t\t}\n\t\t}\n\t\tinit() {\n\t\t\t\tthis.uniforms = [];\n\t\t\t\tthis.samplers = [];\n\t\t\t\tthis.attributes = [];\n\t\t\t\tthis.glProgram = null;\n\t\t\t\tthis.glVertexShader = null;\n\t\t\t\tthis.glFragmentShader = null;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.init();\n\t\t}\n\t\trestoreContext(device, shader) {\n\t\t\t\tthis.compile(device, shader);\n\t\t\t\tthis.link(device, shader);\n\t\t}\n\t\tcompile(device, shader) {\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tthis.glVertexShader = this._compileShaderSource(device, definition.vshader, true);\n\t\t\t\tthis.glFragmentShader = this._compileShaderSource(device, definition.fshader, false);\n\t\t}\n\t\tlink(device, shader) {\n\t\t\t\tif (this.glProgram) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (gl.isContextLost()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst glProgram = gl.createProgram();\n\t\t\t\tthis.glProgram = glProgram;\n\t\t\t\tgl.attachShader(glProgram, this.glVertexShader);\n\t\t\t\tgl.attachShader(glProgram, this.glFragmentShader);\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tconst attrs = definition.attributes;\n\t\t\t\tif (definition.useTransformFeedback) {\n\t\t\t\t\t\tlet outNames = definition.feedbackVaryings;\n\t\t\t\t\t\tif (!outNames) {\n\t\t\t\t\t\t\t\toutNames = [];\n\t\t\t\t\t\t\t\tfor(const attr in attrs){\n\t\t\t\t\t\t\t\t\t\tif (attrs.hasOwnProperty(attr)) {\n\t\t\t\t\t\t\t\t\t\t\t\toutNames.push(`out_${attr}`);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.transformFeedbackVaryings(glProgram, outNames, gl.INTERLEAVED_ATTRIBS);\n\t\t\t\t}\n\t\t\t\tfor(const attr in attrs){\n\t\t\t\t\t\tif (attrs.hasOwnProperty(attr)) {\n\t\t\t\t\t\t\t\tconst semantic = attrs[attr];\n\t\t\t\t\t\t\t\tconst loc = semanticToLocation[semantic];\n\t\t\t\t\t\t\t\tgl.bindAttribLocation(glProgram, loc, attr);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tgl.linkProgram(glProgram);\n\t\t}\n\t\t_compileShaderSource(device, src, isVertexShader) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (gl.isContextLost()) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst shaderDeviceCache = isVertexShader ? _vertexShaderCache : _fragmentShaderCache;\n\t\t\t\tconst shaderCache = shaderDeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new CompiledShaderCache();\n\t\t\t\t});\n\t\t\t\tlet glShader = shaderCache.map.get(src);\n\t\t\t\tif (!glShader) {\n\t\t\t\t\t\tglShader = gl.createShader(isVertexShader ? gl.VERTEX_SHADER : gl.FRAGMENT_SHADER);\n\t\t\t\t\t\tgl.shaderSource(glShader, src);\n\t\t\t\t\t\tgl.compileShader(glShader);\n\t\t\t\t\t\tshaderCache.map.set(src, glShader);\n\t\t\t\t}\n\t\t\t\treturn glShader;\n\t\t}\n\t\tfinalize(device, shader) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (gl.isContextLost()) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst glProgram = this.glProgram;\n\t\t\t\tconst definition = shader.definition;\n\t\t\t\tconst linkStatus = gl.getProgramParameter(glProgram, gl.LINK_STATUS);\n\t\t\t\tif (!linkStatus) {\n\t\t\t\t\t\tif (!this._isCompiled(device, shader, this.glVertexShader, definition.vshader, 'vertex')) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._isCompiled(device, shader, this.glFragmentShader, definition.fshader, 'fragment')) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst message = `Failed to link shader program. Error: ${gl.getProgramInfoLog(glProgram)}`;\n\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst numAttributes = gl.getProgramParameter(glProgram, gl.ACTIVE_ATTRIBUTES);\n\t\t\t\tshader.attributes.clear();\n\t\t\t\tfor(let i = 0; i < numAttributes; i++){\n\t\t\t\t\t\tconst info = gl.getActiveAttrib(glProgram, i);\n\t\t\t\t\t\tconst location = gl.getAttribLocation(glProgram, info.name);\n\t\t\t\t\t\tif (_vertexShaderBuiltins.has(info.name)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (definition.attributes[info.name] === undefined) {\n\t\t\t\t\t\t\t\tconsole.error(`Vertex shader attribute \"${info.name}\" is not mapped to a semantic in shader definition, shader [${shader.label}]`, shader);\n\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tshader.attributes.set(location, info.name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst samplerTypes = device._samplerTypes;\n\t\t\t\tconst numUniforms = gl.getProgramParameter(glProgram, gl.ACTIVE_UNIFORMS);\n\t\t\t\tfor(let i = 0; i < numUniforms; i++){\n\t\t\t\t\t\tconst info = gl.getActiveUniform(glProgram, i);\n\t\t\t\t\t\tconst location = gl.getUniformLocation(glProgram, info.name);\n\t\t\t\t\t\tif (_vertexShaderBuiltins.has(info.name)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst shaderInput = new WebglShaderInput(device, info.name, device.pcUniformType[info.type], location);\n\t\t\t\t\t\tif (samplerTypes.has(info.type)) {\n\t\t\t\t\t\t\t\tthis.samplers.push(shaderInput);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.uniforms.push(shaderInput);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshader.ready = true;\n\t\t\t\treturn true;\n\t\t}\n\t\t_isCompiled(device, shader, glShader, source, shaderType) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!gl.getShaderParameter(glShader, gl.COMPILE_STATUS)) {\n\t\t\t\t\t\tconst infoLog = gl.getShaderInfoLog(glShader);\n\t\t\t\t\t\tconst [code, error] = this._processError(source, infoLog);\n\t\t\t\t\t\tconst message = `Failed to compile ${shaderType} shader:\\n\\n${infoLog}\\n${code} while rendering ${ void 0}`;\n\t\t\t\t\t\tconsole.error(message);\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tisLinked(device) {\n\t\t\t\tconst { extParallelShaderCompile } = device;\n\t\t\t\tif (extParallelShaderCompile) {\n\t\t\t\t\t\treturn device.gl.getProgramParameter(this.glProgram, extParallelShaderCompile.COMPLETION_STATUS_KHR);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\t_processError(src, infoLog) {\n\t\t\t\tconst error = {};\n\t\t\t\tlet code = '';\n\t\t\t\tif (src) {\n\t\t\t\t\t\tconst lines = src.split('\\n');\n\t\t\t\t\t\tlet from = 0;\n\t\t\t\t\t\tlet to = lines.length;\n\t\t\t\t\t\tif (infoLog && infoLog.startsWith('ERROR:')) {\n\t\t\t\t\t\t\t\tconst match = infoLog.match(/^ERROR:\\s(\\d+):(\\d+):\\s*(.+)/);\n\t\t\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\t\t\terror.message = match[3];\n\t\t\t\t\t\t\t\t\t\terror.line = parseInt(match[2], 10);\n\t\t\t\t\t\t\t\t\t\tfrom = Math.max(0, error.line - 6);\n\t\t\t\t\t\t\t\t\t\tto = Math.min(lines.length, error.line + 5);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = from; i < to; i++){\n\t\t\t\t\t\t\t\tconst linePrefix = i + 1 === error.line ? '> ' : '  ';\n\t\t\t\t\t\t\t\tcode += `${linePrefix}${i + 1}:\\t${lines[i]}\\n`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\terror.source = src;\n\t\t\t\t}\n\t\t\t\treturn [\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\terror\n\t\t\t\t];\n\t\t}\n}\n\nclass WebglDrawCommands {\n\t\tconstructor(indexSizeBytes){\n\t\t\t\tthis.glCounts = null;\n\t\t\t\tthis.glOffsetsBytes = null;\n\t\t\t\tthis.glInstanceCounts = null;\n\t\t\t\tthis.indexSizeBytes = indexSizeBytes;\n\t\t}\n\t\tallocate(maxCount) {\n\t\t\t\tthis.glCounts = new Int32Array(maxCount);\n\t\t\t\tthis.glOffsetsBytes = new Int32Array(maxCount);\n\t\t\t\tthis.glInstanceCounts = new Int32Array(maxCount);\n\t\t}\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex) {\n\t\t\t\tthis.glCounts[i] = indexOrVertexCount;\n\t\t\t\tthis.glOffsetsBytes[i] = firstIndexOrVertex * this.indexSizeBytes;\n\t\t\t\tthis.glInstanceCounts[i] = instanceCount;\n\t\t}\n}\n\nfunction downsampleImage(image, size) {\n\t\tconst srcW = image.width;\n\t\tconst srcH = image.height;\n\t\tif (srcW > size || srcH > size) {\n\t\t\t\tconst scale = size / Math.max(srcW, srcH);\n\t\t\t\tconst dstW = Math.floor(srcW * scale);\n\t\t\t\tconst dstH = Math.floor(srcH * scale);\n\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\tcanvas.width = dstW;\n\t\t\t\tcanvas.height = dstH;\n\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\tcontext.drawImage(image, 0, 0, srcW, srcH, 0, 0, dstW, dstH);\n\t\t\t\treturn canvas;\n\t\t}\n\t\treturn image;\n}\nclass WebglTexture {\n\t\tconstructor(texture){\n\t\t\t\tthis._glTexture = null;\n\t\t\t\tthis.dirtyParameterFlags = 0;\n\t\t\t\tthis.texture = texture;\n\t\t}\n\t\tdestroy(device) {\n\t\t\t\tif (this._glTexture) {\n\t\t\t\t\t\tfor(let i = 0; i < device.textureUnits.length; i++){\n\t\t\t\t\t\t\t\tconst textureUnit = device.textureUnits[i];\n\t\t\t\t\t\t\t\tfor(let j = 0; j < textureUnit.length; j++){\n\t\t\t\t\t\t\t\t\t\tif (textureUnit[j] === this._glTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\ttextureUnit[j] = null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdevice.gl.deleteTexture(this._glTexture);\n\t\t\t\t\t\tthis._glTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis._glTexture = null;\n\t\t}\n\t\tpropertyChanged(flag) {\n\t\t\t\tthis.dirtyParameterFlags |= flag;\n\t\t}\n\t\tinitialize(device, texture) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis._glTexture = gl.createTexture();\n\t\t\t\tthis._glTarget = texture._cubemap ? gl.TEXTURE_CUBE_MAP : texture._volume ? gl.TEXTURE_3D : texture.array ? gl.TEXTURE_2D_ARRAY : gl.TEXTURE_2D;\n\t\t\t\tswitch(texture._format){\n\t\t\t\t\t\tcase PIXELFORMAT_A8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.ALPHA;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_L8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.LUMINANCE;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.LUMINANCE;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_LA8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.LUMINANCE_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.LUMINANCE_ALPHA;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB565:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB565;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_5_6_5;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA5551:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB5_A1;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_5_5_5_1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA4:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA4;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT_4_4_4_4;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BGRA8:\n\t\t\t\t\t\tcase PIXELFORMAT_SBGRA8:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGB_S3TC_DXT1_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT3:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT3_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT5:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC.COMPRESSED_RGBA_S3TC_DXT5_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC1.COMPRESSED_RGB_ETC1_WEBGL;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_2BPP_RGB_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_2BPP_RGBA_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_4BPP_RGB_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_PVRTC_4BPP_RGBA_1:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTexturePVRTC.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_RGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGB8_ETC2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_RGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_RGBA8_ETC2_EAC;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ASTC_4x4:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureASTC.COMPRESSED_RGBA_ASTC_4x4_KHR;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ATC_RGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGB_ATC_WEBGL;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ATC_RGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureATC.COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC6F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC6UF:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC7:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_RGBA_BPTC_UNORM_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT1_SRGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC_SRGB.COMPRESSED_SRGB_S3TC_DXT1_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT3_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC_SRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DXT5_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureS3TC_SRGB.COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_SRGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_SRGB8_ETC2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ETC2_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureETC.COMPRESSED_SRGB8_ALPHA8_ETC2_EAC;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_ASTC_4x4_SRGB:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.SRGB_ALPHA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extCompressedTextureASTC.COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_BC7_SRGBA:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = device.extTextureCompressionBPTC.COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA16F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA16F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.HALF_FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGB32F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGB32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA32F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DEPTH:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DEPTH16:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.DEPTH_COMPONENT16;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_DEPTHSTENCIL:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.DEPTH_STENCIL;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.DEPTH24_STENCIL8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT_24_8;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_111110F:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R11F_G11F_B10F;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT_10F_11F_11F_REV;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_SRGB8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGB;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.SRGB8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_SRGBA8:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.SRGB8_ALPHA8;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R8I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R8I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R8U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R8UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R16I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R16I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R16U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R16UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R32I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R32I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_R32U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RED_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.R32UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG8I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG8I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG8U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG8UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG16I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG16I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG16U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG16UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG32I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG32I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RG32U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RG_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RG32UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA8I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA8I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA8U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA8UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_BYTE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA16I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA16I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA16U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA16UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA32I:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA32I;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase PIXELFORMAT_RGBA32U:\n\t\t\t\t\t\t\t\tthis._glFormat = gl.RGBA_INTEGER;\n\t\t\t\t\t\t\t\tthis._glInternalFormat = gl.RGBA32UI;\n\t\t\t\t\t\t\t\tthis._glPixelType = gl.UNSIGNED_INT;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tthis._glCreated = false;\n\t\t}\n\t\tupload(device, texture) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!texture._needsUpload && (texture._needsMipmapsUpload && texture._mipmapsUploaded || !texture.pot)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet mipLevel = 0;\n\t\t\t\tlet mipObject;\n\t\t\t\tlet resMult;\n\t\t\t\tconst requiredMipLevels = texture.numLevels;\n\t\t\t\tif (texture.array && !this._glCreated) {\n\t\t\t\t\t\tgl.texStorage3D(gl.TEXTURE_2D_ARRAY, requiredMipLevels, this._glInternalFormat, texture._width, texture._height, texture._arrayLength);\n\t\t\t\t}\n\t\t\t\twhile(texture._levels[mipLevel] || mipLevel === 0){\n\t\t\t\t\t\tif (!texture._needsUpload && mipLevel === 0) {\n\t\t\t\t\t\t\t\tmipLevel++;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t} else if (mipLevel && (!texture._needsMipmapsUpload || !texture._mipmaps)) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmipObject = texture._levels[mipLevel];\n\t\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\t\tif (mipLevel === 1 && !texture._compressed && !texture._integerFormat && texture._levels.length < requiredMipLevels) {\n\t\t\t\t\t\t\t\tgl.generateMipmap(this._glTarget);\n\t\t\t\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (texture._cubemap) {\n\t\t\t\t\t\t\t\tlet face;\n\t\t\t\t\t\t\t\tif (device._isBrowserInterface(mipObject[0])) {\n\t\t\t\t\t\t\t\t\t\tfor(face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (!texture._levelsUpdated[0][face]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tlet src = mipObject[face];\n\t\t\t\t\t\t\t\t\t\t\t\tif (device._isImageBrowserInterface(src)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (src.width > device.maxCubeMapSize || src.height > device.maxCubeMapSize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc = downsampleImage(src, device.maxCubeMapSize);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._width = src.width;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._height = src.height;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, this._glFormat, this._glPixelType, src);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, src);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\t\t\t\t\t\tfor(face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (!texture._levelsUpdated[0][face]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst texData = mipObject[face];\n\t\t\t\t\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && texData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glInternalFormat, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && texData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_CUBE_MAP_POSITIVE_X + face, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, texData);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (texture._volume) {\n\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\tgl.compressedTexImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, mipObject);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\tgl.texImage3D(gl.TEXTURE_3D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), Math.max(texture._depth * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (texture.array && typeof mipObject === 'object') {\n\t\t\t\t\t\t\t\tif (texture._arrayLength === mipObject.length) {\n\t\t\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let index = 0; index < texture._arrayLength; index++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glInternalFormat, mipObject[index]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let index = 0; index < texture._arrayLength; index++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage3D(gl.TEXTURE_2D_ARRAY, mipLevel, 0, 0, index, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 1, this._glFormat, this._glPixelType, mipObject[index]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (device._isBrowserInterface(mipObject)) {\n\t\t\t\t\t\t\t\t\t\tif (device._isImageBrowserInterface(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (mipObject.width > device.maxTextureSize || mipObject.height > device.maxTextureSize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmipObject = downsampleImage(mipObject, device.maxTextureSize);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._width = mipObject.width;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._height = mipObject.height;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst w = mipObject.width || mipObject.videoWidth;\n\t\t\t\t\t\t\t\t\t\tconst h = mipObject.height || mipObject.videoHeight;\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(texture._flipY);\n\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\tif (this._glCreated && texture._width === w && texture._height === h && !device._isImageVideoInterface(mipObject)) {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._width = w;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture._height = h;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresMult = 1 / Math.pow(2, mipLevel);\n\t\t\t\t\t\t\t\t\t\tif (texture._compressed) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && mipObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), this._glInternalFormat, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.compressedTexImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(Math.floor(texture._width * resMult), 1), Math.max(Math.floor(texture._height * resMult), 1), 0, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackFlipY(false);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setUnpackPremultiplyAlpha(texture._premultiplyAlpha);\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._glCreated && mipObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, mipLevel, 0, 0, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.texImage2D(gl.TEXTURE_2D, mipLevel, this._glInternalFormat, Math.max(texture._width * resMult, 1), Math.max(texture._height * resMult, 1), 0, this._glFormat, this._glPixelType, mipObject);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mipLevel === 0) {\n\t\t\t\t\t\t\t\t\t\ttexture._mipmapsUploaded = false;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmipLevel++;\n\t\t\t\t}\n\t\t\t\tif (texture._needsUpload) {\n\t\t\t\t\t\tif (texture._cubemap) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\t\t\ttexture._levelsUpdated[0][i] = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttexture._levelsUpdated[0] = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!texture._compressed && !texture._integerFormat && texture._mipmaps && texture._needsMipmapsUpload && texture._levels.length === 1) {\n\t\t\t\t\t\tgl.generateMipmap(this._glTarget);\n\t\t\t\t\t\ttexture._mipmapsUploaded = true;\n\t\t\t\t}\n\t\t\t\tif (texture._gpuSize) {\n\t\t\t\t\t\ttexture.adjustVramSizeTracking(device._vram, -texture._gpuSize);\n\t\t\t\t}\n\t\t\t\ttexture._gpuSize = texture.gpuSize;\n\t\t\t\ttexture.adjustVramSizeTracking(device._vram, texture._gpuSize);\n\t\t\t\tthis._glCreated = true;\n\t\t}\n\t\tuploadImmediate(device, texture) {\n\t\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\tdevice.setTexture(texture, 0);\n\t\t\t\t\t\ttexture._needsUpload = false;\n\t\t\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t\t}\n\t\t}\n\t\tread(x, y, width, height, options) {\n\t\t\t\tconst texture = this.texture;\n\t\t\t\tconst device = texture.device;\n\t\t\t\treturn device.readTextureAsync(texture, x, y, width, height, options);\n\t\t}\n\t\twrite(x, y, width, height, data) {\n\t\t\t\tconst { texture } = this;\n\t\t\t\tconst { device } = texture;\n\t\t\t\tdevice.setTexture(texture, 0);\n\t\t\t\treturn device.writeTextureAsync(texture, x, y, width, height, data);\n\t\t}\n}\n\nclass FramebufferPair {\n\t\tconstructor(msaaFB, resolveFB){\n\t\t\t\tthis.msaaFB = msaaFB;\n\t\t\t\tthis.resolveFB = resolveFB;\n\t\t}\n\t\tdestroy(gl) {\n\t\t\t\tif (this.msaaFB) {\n\t\t\t\t\t\tgl.deleteRenderbuffer(this.msaaFB);\n\t\t\t\t\t\tthis.msaaFB = null;\n\t\t\t\t}\n\t\t\t\tif (this.resolveFB) {\n\t\t\t\t\t\tgl.deleteRenderbuffer(this.resolveFB);\n\t\t\t\t\t\tthis.resolveFB = null;\n\t\t\t\t}\n\t\t}\n}\nclass WebglRenderTarget {\n\t\tdestroy(device) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis._isInitialized = false;\n\t\t\t\tif (this._glFrameBuffer) {\n\t\t\t\t\t\tif (this._glFrameBuffer !== this.suppliedColorFramebuffer) {\n\t\t\t\t\t\t\t\tgl.deleteFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._glFrameBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this._glDepthBuffer) {\n\t\t\t\t\t\tgl.deleteRenderbuffer(this._glDepthBuffer);\n\t\t\t\t\t\tthis._glDepthBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this._glResolveFrameBuffer) {\n\t\t\t\t\t\tif (this._glResolveFrameBuffer !== this.suppliedColorFramebuffer) {\n\t\t\t\t\t\t\t\tgl.deleteFramebuffer(this._glResolveFrameBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._glResolveFrameBuffer = null;\n\t\t\t\t}\n\t\t\t\tthis._glMsaaColorBuffers.forEach((buffer)=>{\n\t\t\t\t\t\tgl.deleteRenderbuffer(buffer);\n\t\t\t\t});\n\t\t\t\tthis._glMsaaColorBuffers.length = 0;\n\t\t\t\tthis.colorMrtFramebuffers?.forEach((framebuffer)=>{\n\t\t\t\t\t\tframebuffer.destroy(gl);\n\t\t\t\t});\n\t\t\t\tthis.colorMrtFramebuffers = null;\n\t\t\t\tif (this._glMsaaDepthBuffer) {\n\t\t\t\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t\t\t\t\tif (this.msaaDepthBufferKey) {\n\t\t\t\t\t\t\t\tgetMultisampledTextureCache(device).release(this.msaaDepthBufferKey);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.suppliedColorFramebuffer = undefined;\n\t\t}\n\t\tget initialized() {\n\t\t\t\treturn this._isInitialized;\n\t\t}\n\t\tinit(device, target) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis._isInitialized = true;\n\t\t\t\tconst buffers = [];\n\t\t\t\tif (this.suppliedColorFramebuffer !== undefined) {\n\t\t\t\t\t\tthis._glFrameBuffer = this.suppliedColorFramebuffer;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._glFrameBuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\tconst colorBufferCount = target._colorBuffers?.length ?? 0;\n\t\t\t\t\t\tconst attachmentBaseConstant = gl.COLOR_ATTACHMENT0;\n\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; ++i){\n\t\t\t\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\t\t\t\t\tif (!colorBuffer.impl._glTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tcolorBuffer._width = Math.min(colorBuffer.width, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tcolorBuffer._height = Math.min(colorBuffer.height, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setTexture(colorBuffer, 0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant + i, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, target.mipLevel);\n\t\t\t\t\t\t\t\t\t\tbuffers.push(attachmentBaseConstant + i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.drawBuffers(buffers);\n\t\t\t\t\t\tconst depthBuffer = target._depthBuffer;\n\t\t\t\t\t\tif (depthBuffer || target._depth) {\n\t\t\t\t\t\t\t\tconst attachmentPoint = target._stencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\t\t\tif (depthBuffer) {\n\t\t\t\t\t\t\t\t\t\tif (!depthBuffer.impl._glTexture) {\n\t\t\t\t\t\t\t\t\t\t\t\tdepthBuffer._width = Math.min(depthBuffer.width, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tdepthBuffer._height = Math.min(depthBuffer.height, device.maxRenderBufferSize);\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setTexture(depthBuffer, 0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentPoint, depthBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, target._depthBuffer.impl._glTexture, target.mipLevel);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst willRenderMsaa = target._samples > 1;\n\t\t\t\t\t\t\t\t\t\tif (!willRenderMsaa) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!this._glDepthBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._glDepthBuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst internalFormat = target._stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.renderbufferStorage(gl.RENDERBUFFER, internalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentPoint, gl.RENDERBUFFER, this._glDepthBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, null);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (target._samples > 1) {\n\t\t\t\t\t\tthis._glResolveFrameBuffer = this._glFrameBuffer;\n\t\t\t\t\t\tthis._glFrameBuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\tconst colorBufferCount = target._colorBuffers?.length ?? 0;\n\t\t\t\t\t\tif (this.suppliedColorFramebuffer !== undefined) {\n\t\t\t\t\t\t\t\tconst buffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\tthis._glMsaaColorBuffers.push(buffer);\n\t\t\t\t\t\t\t\tconst internalFormat = device.backBufferFormat === PIXELFORMAT_RGBA8 ? gl.RGBA8 : gl.RGB8;\n\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, internalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; ++i){\n\t\t\t\t\t\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\t\t\t\t\t\tif (colorBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst buffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._glMsaaColorBuffers.push(buffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, colorBuffer.impl._glInternalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0 + i, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target._depth) {\n\t\t\t\t\t\t\t\tconst internalFormat = target._stencil ? gl.DEPTH24_STENCIL8 : gl.DEPTH_COMPONENT32F;\n\t\t\t\t\t\t\t\tconst attachmentPoint = target._stencil ? gl.DEPTH_STENCIL_ATTACHMENT : gl.DEPTH_ATTACHMENT;\n\t\t\t\t\t\t\t\tlet key;\n\t\t\t\t\t\t\t\tconst depthBuffer = target._depthBuffer;\n\t\t\t\t\t\t\t\tif (depthBuffer) {\n\t\t\t\t\t\t\t\t\t\tkey = `${depthBuffer.id}:${target.width}:${target.height}:${target._samples}:${internalFormat}:${attachmentPoint}`;\n\t\t\t\t\t\t\t\t\t\tthis._glMsaaDepthBuffer = getMultisampledTextureCache(device).get(key);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!this._glMsaaDepthBuffer) {\n\t\t\t\t\t\t\t\t\t\tthis._glMsaaDepthBuffer = gl.createRenderbuffer();\n\t\t\t\t\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\t\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, internalFormat, target.width, target.height);\n\t\t\t\t\t\t\t\t\t\tthis._glMsaaDepthBuffer.destroy = function() {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.deleteRenderbuffer(this);\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tif (depthBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tgetMultisampledTextureCache(device).set(key, this._glMsaaDepthBuffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.msaaDepthBufferKey = key;\n\t\t\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, attachmentPoint, gl.RENDERBUFFER, this._glMsaaDepthBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (colorBufferCount > 1) {\n\t\t\t\t\t\t\t\tthis._createMsaaMrtFramebuffers(device, target, colorBufferCount);\n\t\t\t\t\t\t\t\tdevice.setFramebuffer(this._glFrameBuffer);\n\t\t\t\t\t\t\t\tgl.drawBuffers(buffers);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_createMsaaMrtFramebuffers(device, target, colorBufferCount) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tthis.colorMrtFramebuffers = [];\n\t\t\t\tfor(let i = 0; i < colorBufferCount; ++i){\n\t\t\t\t\t\tconst colorBuffer = target.getColorBuffer(i);\n\t\t\t\t\t\tconst srcFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(srcFramebuffer);\n\t\t\t\t\t\tconst buffer = this._glMsaaColorBuffers[i];\n\t\t\t\t\t\tgl.bindRenderbuffer(gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\tgl.renderbufferStorageMultisample(gl.RENDERBUFFER, target._samples, colorBuffer.impl._glInternalFormat, target.width, target.height);\n\t\t\t\t\t\tgl.framebufferRenderbuffer(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.RENDERBUFFER, buffer);\n\t\t\t\t\t\tgl.drawBuffers([\n\t\t\t\t\t\t\t\tgl.COLOR_ATTACHMENT0\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tconst dstFramebuffer = gl.createFramebuffer();\n\t\t\t\t\t\tdevice.setFramebuffer(dstFramebuffer);\n\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, colorBuffer._cubemap ? gl.TEXTURE_CUBE_MAP_POSITIVE_X + target._face : gl.TEXTURE_2D, colorBuffer.impl._glTexture, 0);\n\t\t\t\t\t\tthis.colorMrtFramebuffers[i] = new FramebufferPair(srcFramebuffer, dstFramebuffer);\n\t\t\t\t}\n\t\t}\n\t\t_checkFbo(device, target, type = '') {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tconst status = gl.checkFramebufferStatus(gl.FRAMEBUFFER);\n\t\t\t\tswitch(status){\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_ATTACHMENT:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_INCOMPLETE_DIMENSIONS:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase gl.FRAMEBUFFER_UNSUPPORTED:\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis._glFrameBuffer = null;\n\t\t\t\tthis._glDepthBuffer = null;\n\t\t\t\tthis._glResolveFrameBuffer = null;\n\t\t\t\tthis._glMsaaColorBuffers.length = 0;\n\t\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t\t\tthis.msaaDepthBufferKey = undefined;\n\t\t\t\tthis.colorMrtFramebuffers = null;\n\t\t\t\tthis.suppliedColorFramebuffer = undefined;\n\t\t\t\tthis._isInitialized = false;\n\t\t}\n\t\tinternalResolve(device, src, dst, target, mask) {\n\t\t\t\tdevice.setScissor(0, 0, target.width, target.height);\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, src);\n\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst);\n\t\t\t\tgl.blitFramebuffer(0, 0, target.width, target.height, 0, 0, target.width, target.height, mask, gl.NEAREST);\n\t\t}\n\t\tresolve(device, target, color, depth) {\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (this.colorMrtFramebuffers) {\n\t\t\t\t\t\tif (color) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this.colorMrtFramebuffers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst fbPair = this.colorMrtFramebuffers[i];\n\t\t\t\t\t\t\t\t\t\tthis.internalResolve(device, fbPair.msaaFB, fbPair.resolveFB, target, gl.COLOR_BUFFER_BIT);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (depth) {\n\t\t\t\t\t\t\t\tthis.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target, gl.DEPTH_BUFFER_BIT);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.internalResolve(device, this._glFrameBuffer, this._glResolveFrameBuffer, target, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0));\n\t\t\t\t}\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, this._glFrameBuffer);\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._glFrameBuffer = null;\n\t\t\t\tthis._glDepthBuffer = null;\n\t\t\t\tthis._glResolveFrameBuffer = null;\n\t\t\t\tthis.colorMrtFramebuffers = null;\n\t\t\t\tthis._glMsaaColorBuffers = [];\n\t\t\t\tthis._glMsaaDepthBuffer = null;\n\t\t\t\tthis._isInitialized = false;\n\t\t}\n}\n\nclass FrameQueriesInfo {\n\t\tdestroy(gl) {\n\t\t\t\tthis.queries.forEach((query)=>gl.deleteQuery(query));\n\t\t\t\tthis.queries = null;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.queries = [];\n\t\t}\n}\nclass WebglGpuProfiler extends GpuProfiler {\n\t\tconstructor(device){\n\t\t\t\tsuper(), this.freeQueries = [], this.frameQueries = [], this.previousFrameQueries = [], this.timings = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.ext = device.extDisjointTimerQuery;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.freeQueries.forEach((query)=>this.device.gl.deleteQuery(query));\n\t\t\t\tthis.frameQueries.forEach((query)=>this.device.gl.deleteQuery(query));\n\t\t\t\tthis.previousFrameQueries.forEach((frameQueriesInfo)=>frameQueriesInfo.destroy(this.device.gl));\n\t\t\t\tthis.freeQueries = null;\n\t\t\t\tthis.frameQueries = null;\n\t\t\t\tthis.previousFrameQueries = null;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tsuper.loseContext();\n\t\t\t\tthis.freeQueries = [];\n\t\t\t\tthis.frameQueries = [];\n\t\t\t\tthis.previousFrameQueries = [];\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.ext = this.device.extDisjointTimerQuery;\n\t\t}\n\t\tgetQuery() {\n\t\t\t\treturn this.freeQueries.pop() ?? this.device.gl.createQuery();\n\t\t}\n\t\tstart(name) {\n\t\t\t\tif (this.ext) {\n\t\t\t\t\t\tconst slot = this.getSlot(name);\n\t\t\t\t\t\tconst query = this.getQuery();\n\t\t\t\t\t\tthis.frameQueries[slot] = query;\n\t\t\t\t\t\tthis.device.gl.beginQuery(this.ext.TIME_ELAPSED_EXT, query);\n\t\t\t\t\t\treturn slot;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tend(slot) {\n\t\t\t\tif (slot !== undefined) {\n\t\t\t\t\t\tthis.device.gl.endQuery(this.ext.TIME_ELAPSED_EXT);\n\t\t\t\t}\n\t\t}\n\t\tframeStart() {\n\t\t\t\tthis.processEnableRequest();\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.frameGPUMarkerSlot = this.start('GpuFrame');\n\t\t\t\t}\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.end(this.frameGPUMarkerSlot);\n\t\t\t\t}\n\t\t}\n\t\trequest() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tconst ext = this.ext;\n\t\t\t\t\t\tconst gl = this.device.gl;\n\t\t\t\t\t\tconst renderVersion = this.device.renderVersion;\n\t\t\t\t\t\tconst frameQueries = this.frameQueries;\n\t\t\t\t\t\tif (frameQueries.length > 0) {\n\t\t\t\t\t\t\t\tthis.frameQueries = [];\n\t\t\t\t\t\t\t\tconst frameQueriesInfo = new FrameQueriesInfo();\n\t\t\t\t\t\t\t\tframeQueriesInfo.queries = frameQueries;\n\t\t\t\t\t\t\t\tframeQueriesInfo.renderVersion = renderVersion;\n\t\t\t\t\t\t\t\tthis.previousFrameQueries.push(frameQueriesInfo);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.previousFrameQueries.length > 0) {\n\t\t\t\t\t\t\t\tconst previousQueriesInfo = this.previousFrameQueries[0];\n\t\t\t\t\t\t\t\tconst previousQueries = previousQueriesInfo.queries;\n\t\t\t\t\t\t\t\tconst lastQuery = previousQueries[previousQueries.length - 1];\n\t\t\t\t\t\t\t\tconst available = gl.getQueryParameter(lastQuery, gl.QUERY_RESULT_AVAILABLE);\n\t\t\t\t\t\t\t\tconst disjoint = gl.getParameter(ext.GPU_DISJOINT_EXT);\n\t\t\t\t\t\t\t\tif (available && !disjoint) {\n\t\t\t\t\t\t\t\t\t\tthis.previousFrameQueries.shift();\n\t\t\t\t\t\t\t\t\t\tconst timings = this.timings;\n\t\t\t\t\t\t\t\t\t\ttimings.length = 0;\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < previousQueries.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst query = previousQueries[i];\n\t\t\t\t\t\t\t\t\t\t\t\tconst duration = gl.getQueryParameter(query, gl.QUERY_RESULT);\n\t\t\t\t\t\t\t\t\t\t\t\ttimings[i] = duration * 0.000001;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.freeQueries.push(query);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.report(previousQueriesInfo.renderVersion, timings);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (disjoint) {\n\t\t\t\t\t\t\t\t\t\tthis.previousFrameQueries.forEach((frameQueriesInfo)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tthis.report(frameQueriesInfo.renderVersion, null);\n\t\t\t\t\t\t\t\t\t\t\t\tframeQueriesInfo.destroy(gl);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tthis.previousFrameQueries.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsuper.request(renderVersion);\n\t\t\t\t}\n\t\t}\n}\n\nconst invalidateAttachments = [];\nclass WebglGraphicsDevice extends GraphicsDevice {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas, options), this._defaultFramebuffer = null, this._defaultFramebufferChanged = false;\n\t\t\t\toptions = this.initOptions;\n\t\t\t\tthis.updateClientRect();\n\t\t\t\tthis.initTextureUnits();\n\t\t\t\tthis.contextLost = false;\n\t\t\t\tthis._contextLostHandler = (event)=>{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tthis.loseContext();\n\t\t\t\t\t\tthis.fire('devicelost');\n\t\t\t\t};\n\t\t\t\tthis._contextRestoredHandler = ()=>{\n\t\t\t\t\t\tthis.restoreContext();\n\t\t\t\t\t\tthis.fire('devicerestored');\n\t\t\t\t};\n\t\t\t\tconst ua = typeof navigator !== 'undefined' && navigator.userAgent;\n\t\t\t\tthis.forceDisableMultisampling = ua && ua.includes('AppleWebKit') && (ua.includes('15.4') || ua.includes('15_4'));\n\t\t\t\tif (this.forceDisableMultisampling) {\n\t\t\t\t\t\toptions.antialias = false;\n\t\t\t\t}\n\t\t\t\tif (platform.browserName === 'firefox') {\n\t\t\t\t\t\tconst ua = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n\t\t\t\t\t\tconst match = ua.match(/Firefox\\/(\\d+(\\.\\d+)*)/);\n\t\t\t\t\t\tconst firefoxVersion = match ? match[1] : null;\n\t\t\t\t\t\tif (firefoxVersion) {\n\t\t\t\t\t\t\t\tconst version = parseFloat(firefoxVersion);\n\t\t\t\t\t\t\t\tconst disableAntialias = platform.name === 'windows' && (version >= 120 || version === 115) || platform.name === 'android' && version >= 132;\n\t\t\t\t\t\t\t\tif (disableAntialias) {\n\t\t\t\t\t\t\t\t\t\toptions.antialias = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.backBufferAntialias = options.antialias ?? false;\n\t\t\t\toptions.antialias = false;\n\t\t\t\tconst gl = options.gl ?? canvas.getContext('webgl2', options);\n\t\t\t\tif (!gl) {\n\t\t\t\t\t\tthrow new Error('WebGL not supported');\n\t\t\t\t}\n\t\t\t\tthis.gl = gl;\n\t\t\t\tthis.isWebGL2 = true;\n\t\t\t\tthis._deviceType = DEVICETYPE_WEBGL2;\n\t\t\t\tthis.updateBackbufferFormat(null);\n\t\t\t\tconst isChrome = platform.browserName === 'chrome';\n\t\t\t\tconst isSafari = platform.browserName === 'safari';\n\t\t\t\tconst isMac = platform.browser && navigator.appVersion.indexOf('Mac') !== -1;\n\t\t\t\tthis._tempEnableSafariTextureUnitWorkaround = isSafari;\n\t\t\t\tthis._tempMacChromeBlitFramebufferWorkaround = isMac && isChrome && !options.alpha;\n\t\t\t\tcanvas.addEventListener('webglcontextlost', this._contextLostHandler, false);\n\t\t\t\tcanvas.addEventListener('webglcontextrestored', this._contextRestoredHandler, false);\n\t\t\t\tthis.initializeExtensions();\n\t\t\t\tthis.initializeCapabilities();\n\t\t\t\tthis.initializeRenderState();\n\t\t\t\tthis.initializeContextCaches();\n\t\t\t\tthis.createBackbuffer(null);\n\t\t\t\tthis.supportsImageBitmap = !isSafari && typeof ImageBitmap !== 'undefined';\n\t\t\t\tthis._samplerTypes = new Set([\n\t\t\t\t\t\tgl.SAMPLER_2D,\n\t\t\t\t\t\tgl.SAMPLER_CUBE,\n\t\t\t\t\t\tgl.UNSIGNED_INT_SAMPLER_2D,\n\t\t\t\t\t\tgl.INT_SAMPLER_2D,\n\t\t\t\t\t\tgl.SAMPLER_2D_SHADOW,\n\t\t\t\t\t\tgl.SAMPLER_CUBE_SHADOW,\n\t\t\t\t\t\tgl.SAMPLER_3D,\n\t\t\t\t\t\tgl.INT_SAMPLER_3D,\n\t\t\t\t\t\tgl.UNSIGNED_INT_SAMPLER_3D,\n\t\t\t\t\t\tgl.SAMPLER_2D_ARRAY,\n\t\t\t\t\t\tgl.INT_SAMPLER_2D_ARRAY,\n\t\t\t\t\t\tgl.UNSIGNED_INT_SAMPLER_2D_ARRAY\n\t\t\t\t]);\n\t\t\t\tthis.glAddress = [\n\t\t\t\t\t\tgl.REPEAT,\n\t\t\t\t\t\tgl.CLAMP_TO_EDGE,\n\t\t\t\t\t\tgl.MIRRORED_REPEAT\n\t\t\t\t];\n\t\t\t\tthis.glBlendEquation = [\n\t\t\t\t\t\tgl.FUNC_ADD,\n\t\t\t\t\t\tgl.FUNC_SUBTRACT,\n\t\t\t\t\t\tgl.FUNC_REVERSE_SUBTRACT,\n\t\t\t\t\t\tgl.MIN,\n\t\t\t\t\t\tgl.MAX\n\t\t\t\t];\n\t\t\t\tthis.glBlendFunctionColor = [\n\t\t\t\t\t\tgl.ZERO,\n\t\t\t\t\t\tgl.ONE,\n\t\t\t\t\t\tgl.SRC_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_COLOR,\n\t\t\t\t\t\tgl.DST_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_COLOR,\n\t\t\t\t\t\tgl.SRC_ALPHA,\n\t\t\t\t\t\tgl.SRC_ALPHA_SATURATE,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_ALPHA,\n\t\t\t\t\t\tgl.DST_ALPHA,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_ALPHA,\n\t\t\t\t\t\tgl.CONSTANT_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_CONSTANT_COLOR\n\t\t\t\t];\n\t\t\t\tthis.glBlendFunctionAlpha = [\n\t\t\t\t\t\tgl.ZERO,\n\t\t\t\t\t\tgl.ONE,\n\t\t\t\t\t\tgl.SRC_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_COLOR,\n\t\t\t\t\t\tgl.DST_COLOR,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_COLOR,\n\t\t\t\t\t\tgl.SRC_ALPHA,\n\t\t\t\t\t\tgl.SRC_ALPHA_SATURATE,\n\t\t\t\t\t\tgl.ONE_MINUS_SRC_ALPHA,\n\t\t\t\t\t\tgl.DST_ALPHA,\n\t\t\t\t\t\tgl.ONE_MINUS_DST_ALPHA,\n\t\t\t\t\t\tgl.CONSTANT_ALPHA,\n\t\t\t\t\t\tgl.ONE_MINUS_CONSTANT_ALPHA\n\t\t\t\t];\n\t\t\t\tthis.glComparison = [\n\t\t\t\t\t\tgl.NEVER,\n\t\t\t\t\t\tgl.LESS,\n\t\t\t\t\t\tgl.EQUAL,\n\t\t\t\t\t\tgl.LEQUAL,\n\t\t\t\t\t\tgl.GREATER,\n\t\t\t\t\t\tgl.NOTEQUAL,\n\t\t\t\t\t\tgl.GEQUAL,\n\t\t\t\t\t\tgl.ALWAYS\n\t\t\t\t];\n\t\t\t\tthis.glStencilOp = [\n\t\t\t\t\t\tgl.KEEP,\n\t\t\t\t\t\tgl.ZERO,\n\t\t\t\t\t\tgl.REPLACE,\n\t\t\t\t\t\tgl.INCR,\n\t\t\t\t\t\tgl.INCR_WRAP,\n\t\t\t\t\t\tgl.DECR,\n\t\t\t\t\t\tgl.DECR_WRAP,\n\t\t\t\t\t\tgl.INVERT\n\t\t\t\t];\n\t\t\t\tthis.glClearFlag = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tgl.COLOR_BUFFER_BIT,\n\t\t\t\t\t\tgl.DEPTH_BUFFER_BIT,\n\t\t\t\t\t\tgl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT | gl.DEPTH_BUFFER_BIT,\n\t\t\t\t\t\tgl.STENCIL_BUFFER_BIT | gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT\n\t\t\t\t];\n\t\t\t\tthis.glCull = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tgl.BACK,\n\t\t\t\t\t\tgl.FRONT,\n\t\t\t\t\t\tgl.FRONT_AND_BACK\n\t\t\t\t];\n\t\t\t\tthis.glFilter = [\n\t\t\t\t\t\tgl.NEAREST,\n\t\t\t\t\t\tgl.LINEAR,\n\t\t\t\t\t\tgl.NEAREST_MIPMAP_NEAREST,\n\t\t\t\t\t\tgl.NEAREST_MIPMAP_LINEAR,\n\t\t\t\t\t\tgl.LINEAR_MIPMAP_NEAREST,\n\t\t\t\t\t\tgl.LINEAR_MIPMAP_LINEAR\n\t\t\t\t];\n\t\t\t\tthis.glPrimitive = [\n\t\t\t\t\t\tgl.POINTS,\n\t\t\t\t\t\tgl.LINES,\n\t\t\t\t\t\tgl.LINE_LOOP,\n\t\t\t\t\t\tgl.LINE_STRIP,\n\t\t\t\t\t\tgl.TRIANGLES,\n\t\t\t\t\t\tgl.TRIANGLE_STRIP,\n\t\t\t\t\t\tgl.TRIANGLE_FAN\n\t\t\t\t];\n\t\t\t\tthis.glType = [\n\t\t\t\t\t\tgl.BYTE,\n\t\t\t\t\t\tgl.UNSIGNED_BYTE,\n\t\t\t\t\t\tgl.SHORT,\n\t\t\t\t\t\tgl.UNSIGNED_SHORT,\n\t\t\t\t\t\tgl.INT,\n\t\t\t\t\t\tgl.UNSIGNED_INT,\n\t\t\t\t\t\tgl.FLOAT,\n\t\t\t\t\t\tgl.HALF_FLOAT\n\t\t\t\t];\n\t\t\t\tthis.pcUniformType = {};\n\t\t\t\tthis.pcUniformType[gl.BOOL] = UNIFORMTYPE_BOOL;\n\t\t\t\tthis.pcUniformType[gl.INT] = UNIFORMTYPE_INT;\n\t\t\t\tthis.pcUniformType[gl.FLOAT] = UNIFORMTYPE_FLOAT;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_VEC2] = UNIFORMTYPE_VEC2;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_VEC3] = UNIFORMTYPE_VEC3;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_VEC4] = UNIFORMTYPE_VEC4;\n\t\t\t\tthis.pcUniformType[gl.INT_VEC2] = UNIFORMTYPE_IVEC2;\n\t\t\t\tthis.pcUniformType[gl.INT_VEC3] = UNIFORMTYPE_IVEC3;\n\t\t\t\tthis.pcUniformType[gl.INT_VEC4] = UNIFORMTYPE_IVEC4;\n\t\t\t\tthis.pcUniformType[gl.BOOL_VEC2] = UNIFORMTYPE_BVEC2;\n\t\t\t\tthis.pcUniformType[gl.BOOL_VEC3] = UNIFORMTYPE_BVEC3;\n\t\t\t\tthis.pcUniformType[gl.BOOL_VEC4] = UNIFORMTYPE_BVEC4;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_MAT2] = UNIFORMTYPE_MAT2;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_MAT3] = UNIFORMTYPE_MAT3;\n\t\t\t\tthis.pcUniformType[gl.FLOAT_MAT4] = UNIFORMTYPE_MAT4;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_2D] = UNIFORMTYPE_TEXTURE2D;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_CUBE] = UNIFORMTYPE_TEXTURECUBE;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT] = UNIFORMTYPE_UINT;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC2] = UNIFORMTYPE_UVEC2;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC3] = UNIFORMTYPE_UVEC3;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_VEC4] = UNIFORMTYPE_UVEC4;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_2D_SHADOW] = UNIFORMTYPE_TEXTURE2D_SHADOW;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_CUBE_SHADOW] = UNIFORMTYPE_TEXTURECUBE_SHADOW;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_2D_ARRAY] = UNIFORMTYPE_TEXTURE2D_ARRAY;\n\t\t\t\tthis.pcUniformType[gl.SAMPLER_3D] = UNIFORMTYPE_TEXTURE3D;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_2D] = UNIFORMTYPE_ITEXTURE2D;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURE2D;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_CUBE] = UNIFORMTYPE_ITEXTURECUBE;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D] = UNIFORMTYPE_UTEXTURECUBE;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_3D] = UNIFORMTYPE_ITEXTURE3D;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_3D] = UNIFORMTYPE_UTEXTURE3D;\n\t\t\t\tthis.pcUniformType[gl.INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_ITEXTURE2D_ARRAY;\n\t\t\t\tthis.pcUniformType[gl.UNSIGNED_INT_SAMPLER_2D_ARRAY] = UNIFORMTYPE_UTEXTURE2D_ARRAY;\n\t\t\t\tthis.targetToSlot = {};\n\t\t\t\tthis.targetToSlot[gl.TEXTURE_2D] = 0;\n\t\t\t\tthis.targetToSlot[gl.TEXTURE_CUBE_MAP] = 1;\n\t\t\t\tthis.targetToSlot[gl.TEXTURE_3D] = 2;\n\t\t\t\tlet scopeX, scopeY, scopeZ, scopeW;\n\t\t\t\tlet uniformValue;\n\t\t\t\tthis.commitFunction = [];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BOOL] = function(uniform, value) {\n\t\t\t\t\t\tif (uniform.value !== value) {\n\t\t\t\t\t\t\t\tgl.uniform1i(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniform.value = value;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_INT] = this.commitFunction[UNIFORMTYPE_BOOL];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_FLOAT] = function(uniform, value) {\n\t\t\t\t\t\tif (uniform.value !== value) {\n\t\t\t\t\t\t\t\tgl.uniform1f(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniform.value = value;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC2] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\t\t\t\t\tgl.uniform2fv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC3] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\t\t\t\t\tgl.uniform3fv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC4] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tscopeW = value[3];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\t\t\t\t\tgl.uniform4fv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC2] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\t\t\t\t\tgl.uniform2iv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC2] = this.commitFunction[UNIFORMTYPE_IVEC2];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC3] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\t\t\t\t\tgl.uniform3iv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC3] = this.commitFunction[UNIFORMTYPE_IVEC3];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC4] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tscopeW = value[3];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\t\t\t\t\tgl.uniform4iv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC4] = this.commitFunction[UNIFORMTYPE_IVEC4];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT2] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix2fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT3] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix3fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT4] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix4fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_FLOATARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform1fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC2ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform2fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC3ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform3fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_VEC4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform4fv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UINT] = function(uniform, value) {\n\t\t\t\t\t\tif (uniform.value !== value) {\n\t\t\t\t\t\t\t\tgl.uniform1ui(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniform.value = value;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC2] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY) {\n\t\t\t\t\t\t\t\tgl.uniform2uiv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC3] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ) {\n\t\t\t\t\t\t\t\tgl.uniform3uiv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC4] = function(uniform, value) {\n\t\t\t\t\t\tuniformValue = uniform.value;\n\t\t\t\t\t\tscopeX = value[0];\n\t\t\t\t\t\tscopeY = value[1];\n\t\t\t\t\t\tscopeZ = value[2];\n\t\t\t\t\t\tscopeW = value[3];\n\t\t\t\t\t\tif (uniformValue[0] !== scopeX || uniformValue[1] !== scopeY || uniformValue[2] !== scopeZ || uniformValue[3] !== scopeW) {\n\t\t\t\t\t\t\t\tgl.uniform4uiv(uniform.locationId, value);\n\t\t\t\t\t\t\t\tuniformValue[0] = scopeX;\n\t\t\t\t\t\t\t\tuniformValue[1] = scopeY;\n\t\t\t\t\t\t\t\tuniformValue[2] = scopeZ;\n\t\t\t\t\t\t\t\tuniformValue[3] = scopeW;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_INTARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform1iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UINTARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform1uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BOOLARRAY] = this.commitFunction[UNIFORMTYPE_INTARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC2ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform2iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC2ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform2uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC2ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC2ARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC3ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform3iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC3ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform3uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC3ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC3ARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_IVEC4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform4iv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_UVEC4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniform4uiv(uniform.locationId, value);\n\t\t\t\t};\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_BVEC4ARRAY] = this.commitFunction[UNIFORMTYPE_IVEC4ARRAY];\n\t\t\t\tthis.commitFunction[UNIFORMTYPE_MAT4ARRAY] = function(uniform, value) {\n\t\t\t\t\t\tgl.uniformMatrix4fv(uniform.locationId, false, value);\n\t\t\t\t};\n\t\t\t\tthis.constantTexSource = this.scope.resolve('source');\n\t\t\t\tthis.postInit();\n\t\t}\n\t\tpostInit() {\n\t\t\t\tsuper.postInit();\n\t\t\t\tthis.gpuProfiler = new WebglGpuProfiler(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tif (this.feedback) {\n\t\t\t\t\t\tgl.deleteTransformFeedback(this.feedback);\n\t\t\t\t}\n\t\t\t\tthis.clearVertexArrayObjectCache();\n\t\t\t\tthis.canvas.removeEventListener('webglcontextlost', this._contextLostHandler, false);\n\t\t\t\tthis.canvas.removeEventListener('webglcontextrestored', this._contextRestoredHandler, false);\n\t\t\t\tthis._contextLostHandler = null;\n\t\t\t\tthis._contextRestoredHandler = null;\n\t\t\t\tthis.gl = null;\n\t\t\t\tsuper.postDestroy();\n\t\t}\n\t\tcreateBackbuffer(frameBuffer) {\n\t\t\t\tthis.supportsStencil = this.initOptions.stencil;\n\t\t\t\tthis.backBuffer = new RenderTarget({\n\t\t\t\t\t\tname: 'WebglFramebuffer',\n\t\t\t\t\t\tgraphicsDevice: this,\n\t\t\t\t\t\tdepth: this.initOptions.depth,\n\t\t\t\t\t\tstencil: this.supportsStencil,\n\t\t\t\t\t\tsamples: this.samples\n\t\t\t\t});\n\t\t\t\tthis.backBuffer.impl.suppliedColorFramebuffer = frameBuffer;\n\t\t}\n\t\tupdateBackbufferFormat(framebuffer) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);\n\t\t\t\tconst alphaBits = this.gl.getParameter(this.gl.ALPHA_BITS);\n\t\t\t\tthis.backBufferFormat = alphaBits ? PIXELFORMAT_RGBA8 : PIXELFORMAT_RGB8;\n\t\t}\n\t\tupdateBackbuffer() {\n\t\t\t\tconst resolutionChanged = this.canvas.width !== this.backBufferSize.x || this.canvas.height !== this.backBufferSize.y;\n\t\t\t\tif (this._defaultFramebufferChanged || resolutionChanged) {\n\t\t\t\t\t\tif (this._defaultFramebufferChanged) {\n\t\t\t\t\t\t\t\tthis.updateBackbufferFormat(this._defaultFramebuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._defaultFramebufferChanged = false;\n\t\t\t\t\t\tthis.backBufferSize.set(this.canvas.width, this.canvas.height);\n\t\t\t\t\t\tthis.backBuffer.destroy();\n\t\t\t\t\t\tthis.createBackbuffer(this._defaultFramebuffer);\n\t\t\t\t}\n\t\t}\n\t\tcreateVertexBufferImpl(vertexBuffer, format) {\n\t\t\t\treturn new WebglVertexBuffer();\n\t\t}\n\t\tcreateIndexBufferImpl(indexBuffer) {\n\t\t\t\treturn new WebglIndexBuffer(indexBuffer);\n\t\t}\n\t\tcreateShaderImpl(shader) {\n\t\t\t\treturn new WebglShader(shader);\n\t\t}\n\t\tcreateDrawCommandImpl(drawCommands) {\n\t\t\t\treturn new WebglDrawCommands(drawCommands.indexSizeBytes);\n\t\t}\n\t\tcreateTextureImpl(texture) {\n\t\t\t\treturn new WebglTexture(texture);\n\t\t}\n\t\tcreateRenderTargetImpl(renderTarget) {\n\t\t\t\treturn new WebglRenderTarget();\n\t\t}\n\t\tgetPrecision() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tlet precision = 'highp';\n\t\t\t\tif (gl.getShaderPrecisionFormat) {\n\t\t\t\t\t\tconst vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\n\t\t\t\t\t\tconst vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);\n\t\t\t\t\t\tconst fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\n\t\t\t\t\t\tconst fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT);\n\t\t\t\t\t\tif (vertexShaderPrecisionHighpFloat && vertexShaderPrecisionMediumpFloat && fragmentShaderPrecisionHighpFloat && fragmentShaderPrecisionMediumpFloat) {\n\t\t\t\t\t\t\t\tconst highpAvailable = vertexShaderPrecisionHighpFloat.precision > 0 && fragmentShaderPrecisionHighpFloat.precision > 0;\n\t\t\t\t\t\t\t\tconst mediumpAvailable = vertexShaderPrecisionMediumpFloat.precision > 0 && fragmentShaderPrecisionMediumpFloat.precision > 0;\n\t\t\t\t\t\t\t\tif (!highpAvailable) {\n\t\t\t\t\t\t\t\t\t\tif (mediumpAvailable) {\n\t\t\t\t\t\t\t\t\t\t\t\tprecision = 'mediump';\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tprecision = 'lowp';\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn precision;\n\t\t}\n\t\tgetExtension() {\n\t\t\t\tfor(let i = 0; i < arguments.length; i++){\n\t\t\t\t\t\tif (this.supportedExtensions.indexOf(arguments[i]) !== -1) {\n\t\t\t\t\t\t\t\treturn this.gl.getExtension(arguments[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tget extDisjointTimerQuery() {\n\t\t\t\tif (!this._extDisjointTimerQuery) {\n\t\t\t\t\t\tthis._extDisjointTimerQuery = this.getExtension('EXT_disjoint_timer_query_webgl2', 'EXT_disjoint_timer_query');\n\t\t\t\t}\n\t\t\t\treturn this._extDisjointTimerQuery;\n\t\t}\n\t\tinitializeExtensions() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tthis.supportedExtensions = gl.getSupportedExtensions() ?? [];\n\t\t\t\tthis._extDisjointTimerQuery = null;\n\t\t\t\tthis.textureRG11B10Renderable = true;\n\t\t\t\tthis.extColorBufferFloat = this.getExtension('EXT_color_buffer_float');\n\t\t\t\tthis.textureFloatRenderable = !!this.extColorBufferFloat;\n\t\t\t\tthis.extColorBufferHalfFloat = this.getExtension('EXT_color_buffer_half_float');\n\t\t\t\tthis.textureHalfFloatRenderable = !!this.extColorBufferHalfFloat || !!this.extColorBufferFloat;\n\t\t\t\tthis.extDebugRendererInfo = this.getExtension('WEBGL_debug_renderer_info');\n\t\t\t\tthis.extTextureFloatLinear = this.getExtension('OES_texture_float_linear');\n\t\t\t\tthis.textureFloatFilterable = !!this.extTextureFloatLinear;\n\t\t\t\tthis.extFloatBlend = this.getExtension('EXT_float_blend');\n\t\t\t\tthis.extTextureFilterAnisotropic = this.getExtension('EXT_texture_filter_anisotropic', 'WEBKIT_EXT_texture_filter_anisotropic');\n\t\t\t\tthis.extParallelShaderCompile = this.getExtension('KHR_parallel_shader_compile');\n\t\t\t\tthis.extMultiDraw = this.getExtension('WEBGL_multi_draw');\n\t\t\t\tthis.supportsMultiDraw = !!this.extMultiDraw;\n\t\t\t\tthis.extCompressedTextureETC1 = this.getExtension('WEBGL_compressed_texture_etc1');\n\t\t\t\tthis.extCompressedTextureETC = this.getExtension('WEBGL_compressed_texture_etc');\n\t\t\t\tthis.extCompressedTexturePVRTC = this.getExtension('WEBGL_compressed_texture_pvrtc', 'WEBKIT_WEBGL_compressed_texture_pvrtc');\n\t\t\t\tthis.extCompressedTextureS3TC = this.getExtension('WEBGL_compressed_texture_s3tc', 'WEBKIT_WEBGL_compressed_texture_s3tc');\n\t\t\t\tthis.extCompressedTextureS3TC_SRGB = this.getExtension('WEBGL_compressed_texture_s3tc_srgb');\n\t\t\t\tthis.extCompressedTextureATC = this.getExtension('WEBGL_compressed_texture_atc');\n\t\t\t\tthis.extCompressedTextureASTC = this.getExtension('WEBGL_compressed_texture_astc');\n\t\t\t\tthis.extTextureCompressionBPTC = this.getExtension('EXT_texture_compression_bptc');\n\t\t}\n\t\tinitializeCapabilities() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tlet ext;\n\t\t\t\tconst userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n\t\t\t\tthis.maxPrecision = this.precision = this.getPrecision();\n\t\t\t\tconst contextAttribs = gl.getContextAttributes();\n\t\t\t\tthis.supportsMsaa = contextAttribs?.antialias ?? false;\n\t\t\t\tthis.supportsStencil = contextAttribs?.stencil ?? false;\n\t\t\t\tthis.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n\t\t\t\tthis.maxCubeMapSize = gl.getParameter(gl.MAX_CUBE_MAP_TEXTURE_SIZE);\n\t\t\t\tthis.maxRenderBufferSize = gl.getParameter(gl.MAX_RENDERBUFFER_SIZE);\n\t\t\t\tthis.maxTextures = gl.getParameter(gl.MAX_TEXTURE_IMAGE_UNITS);\n\t\t\t\tthis.maxCombinedTextures = gl.getParameter(gl.MAX_COMBINED_TEXTURE_IMAGE_UNITS);\n\t\t\t\tthis.maxVertexTextures = gl.getParameter(gl.MAX_VERTEX_TEXTURE_IMAGE_UNITS);\n\t\t\t\tthis.vertexUniformsCount = gl.getParameter(gl.MAX_VERTEX_UNIFORM_VECTORS);\n\t\t\t\tthis.fragmentUniformsCount = gl.getParameter(gl.MAX_FRAGMENT_UNIFORM_VECTORS);\n\t\t\t\tthis.maxColorAttachments = gl.getParameter(gl.MAX_COLOR_ATTACHMENTS);\n\t\t\t\tthis.maxVolumeSize = gl.getParameter(gl.MAX_3D_TEXTURE_SIZE);\n\t\t\t\text = this.extDebugRendererInfo;\n\t\t\t\tthis.unmaskedRenderer = ext ? gl.getParameter(ext.UNMASKED_RENDERER_WEBGL) : '';\n\t\t\t\tthis.unmaskedVendor = ext ? gl.getParameter(ext.UNMASKED_VENDOR_WEBGL) : '';\n\t\t\t\tconst maliRendererRegex = /\\bMali-G52+/;\n\t\t\t\tconst samsungModelRegex = /SM-[a-zA-Z0-9]+/;\n\t\t\t\tthis.supportsGpuParticles = !(this.unmaskedVendor === 'ARM' && userAgent.match(samsungModelRegex)) && !this.unmaskedRenderer.match(maliRendererRegex);\n\t\t\t\text = this.extTextureFilterAnisotropic;\n\t\t\t\tthis.maxAnisotropy = ext ? gl.getParameter(ext.MAX_TEXTURE_MAX_ANISOTROPY_EXT) : 1;\n\t\t\t\tconst antialiasSupported = !this.forceDisableMultisampling;\n\t\t\t\tthis.maxSamples = antialiasSupported ? gl.getParameter(gl.MAX_SAMPLES) : 1;\n\t\t\t\tthis.maxSamples = Math.min(this.maxSamples, 4);\n\t\t\t\tthis.samples = antialiasSupported && this.backBufferAntialias ? this.maxSamples : 1;\n\t\t\t\tthis.supportsAreaLights = !platform.android;\n\t\t\t\tif (this.maxTextures <= 8) {\n\t\t\t\t\t\tthis.supportsAreaLights = false;\n\t\t\t\t}\n\t\t\t\tthis.initCapsDefines();\n\t\t}\n\t\tinitializeRenderState() {\n\t\t\t\tsuper.initializeRenderState();\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tgl.disable(gl.BLEND);\n\t\t\t\tgl.blendFunc(gl.ONE, gl.ZERO);\n\t\t\t\tgl.blendEquation(gl.FUNC_ADD);\n\t\t\t\tgl.colorMask(true, true, true, true);\n\t\t\t\tgl.blendColor(0, 0, 0, 0);\n\t\t\t\tgl.enable(gl.CULL_FACE);\n\t\t\t\tthis.cullFace = gl.BACK;\n\t\t\t\tgl.cullFace(gl.BACK);\n\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t\tgl.depthFunc(gl.LEQUAL);\n\t\t\t\tgl.depthMask(true);\n\t\t\t\tthis.stencil = false;\n\t\t\t\tgl.disable(gl.STENCIL_TEST);\n\t\t\t\tthis.stencilFuncFront = this.stencilFuncBack = FUNC_ALWAYS;\n\t\t\t\tthis.stencilRefFront = this.stencilRefBack = 0;\n\t\t\t\tthis.stencilMaskFront = this.stencilMaskBack = 0xFF;\n\t\t\t\tgl.stencilFunc(gl.ALWAYS, 0, 0xFF);\n\t\t\t\tthis.stencilFailFront = this.stencilFailBack = STENCILOP_KEEP;\n\t\t\t\tthis.stencilZfailFront = this.stencilZfailBack = STENCILOP_KEEP;\n\t\t\t\tthis.stencilZpassFront = this.stencilZpassBack = STENCILOP_KEEP;\n\t\t\t\tthis.stencilWriteMaskFront = 0xFF;\n\t\t\t\tthis.stencilWriteMaskBack = 0xFF;\n\t\t\t\tgl.stencilOp(gl.KEEP, gl.KEEP, gl.KEEP);\n\t\t\t\tgl.stencilMask(0xFF);\n\t\t\t\tthis.alphaToCoverage = false;\n\t\t\t\tthis.raster = true;\n\t\t\t\tgl.disable(gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\t\tgl.disable(gl.RASTERIZER_DISCARD);\n\t\t\t\tthis.depthBiasEnabled = false;\n\t\t\t\tgl.disable(gl.POLYGON_OFFSET_FILL);\n\t\t\t\tthis.clearDepth = 1;\n\t\t\t\tgl.clearDepth(1);\n\t\t\t\tthis.clearColor = new Color(0, 0, 0, 0);\n\t\t\t\tgl.clearColor(0, 0, 0, 0);\n\t\t\t\tthis.clearStencil = 0;\n\t\t\t\tgl.clearStencil(0);\n\t\t\t\tgl.hint(gl.FRAGMENT_SHADER_DERIVATIVE_HINT, gl.NICEST);\n\t\t\t\tgl.enable(gl.SCISSOR_TEST);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_COLORSPACE_CONVERSION_WEBGL, gl.NONE);\n\t\t\t\tthis.unpackFlipY = false;\n\t\t\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, false);\n\t\t\t\tthis.unpackPremultiplyAlpha = false;\n\t\t\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, false);\n\t\t\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, 1);\n\t\t}\n\t\tinitTextureUnits(count = 16) {\n\t\t\t\tthis.textureUnits = [];\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tthis.textureUnits.push([\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tinitializeContextCaches() {\n\t\t\t\tsuper.initializeContextCaches();\n\t\t\t\tthis._vaoMap = new Map();\n\t\t\t\tthis.boundVao = null;\n\t\t\t\tthis.activeFramebuffer = null;\n\t\t\t\tthis.feedback = null;\n\t\t\t\tthis.transformFeedbackBuffer = null;\n\t\t\t\tthis.textureUnit = 0;\n\t\t\t\tthis.initTextureUnits(this.maxCombinedTextures);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tsuper.loseContext();\n\t\t\t\tfor (const shader of this.shaders){\n\t\t\t\t\t\tshader.loseContext();\n\t\t\t\t}\n\t\t}\n\t\trestoreContext() {\n\t\t\t\tthis.initializeExtensions();\n\t\t\t\tthis.initializeCapabilities();\n\t\t\t\tsuper.restoreContext();\n\t\t\t\tfor (const shader of this.shaders){\n\t\t\t\t\t\tshader.restoreContext();\n\t\t\t\t}\n\t\t}\n\t\tsetViewport(x, y, w, h) {\n\t\t\t\tif (this.vx !== x || this.vy !== y || this.vw !== w || this.vh !== h) {\n\t\t\t\t\t\tthis.gl.viewport(x, y, w, h);\n\t\t\t\t\t\tthis.vx = x;\n\t\t\t\t\t\tthis.vy = y;\n\t\t\t\t\t\tthis.vw = w;\n\t\t\t\t\t\tthis.vh = h;\n\t\t\t\t}\n\t\t}\n\t\tsetScissor(x, y, w, h) {\n\t\t\t\tif (this.sx !== x || this.sy !== y || this.sw !== w || this.sh !== h) {\n\t\t\t\t\t\tthis.gl.scissor(x, y, w, h);\n\t\t\t\t\t\tthis.sx = x;\n\t\t\t\t\t\tthis.sy = y;\n\t\t\t\t\t\tthis.sw = w;\n\t\t\t\t\t\tthis.sh = h;\n\t\t\t\t}\n\t\t}\n\t\tsetFramebuffer(fb) {\n\t\t\t\tif (this.activeFramebuffer !== fb) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, fb);\n\t\t\t\t\t\tthis.activeFramebuffer = fb;\n\t\t\t\t}\n\t\t}\n\t\tcopyRenderTarget(source, dest, color, depth) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tif (source === this.backBuffer) {\n\t\t\t\t\t\tsource = null;\n\t\t\t\t}\n\t\t\t\tif (color) {\n\t\t\t\t\t\tif (!dest) {\n\t\t\t\t\t\t\t\tif (!source._colorBuffer) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (source) {\n\t\t\t\t\t\t\t\tif (!source._colorBuffer || !dest._colorBuffer) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (source._colorBuffer._format !== dest._colorBuffer._format) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (depth && source) {\n\t\t\t\t\t\tif (!source._depth) {\n\t\t\t\t\t\t\t\tif (!source._depthBuffer || !dest._depthBuffer) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (source._depthBuffer._format !== dest._depthBuffer._format) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst prevRt = this.renderTarget;\n\t\t\t\tthis.renderTarget = dest;\n\t\t\t\tthis.updateBegin();\n\t\t\t\tconst src = source ? source.impl._glFrameBuffer : this.backBuffer?.impl._glFrameBuffer;\n\t\t\t\tconst dst = dest ? dest.impl._glFrameBuffer : this.backBuffer?.impl._glFrameBuffer;\n\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, src);\n\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, dst);\n\t\t\t\tconst w = source ? source.width : dest ? dest.width : this.width;\n\t\t\t\tconst h = source ? source.height : dest ? dest.height : this.height;\n\t\t\t\tgl.blitFramebuffer(0, 0, w, h, 0, 0, w, h, (color ? gl.COLOR_BUFFER_BIT : 0) | (depth ? gl.DEPTH_BUFFER_BIT : 0), gl.NEAREST);\n\t\t\t\tthis.renderTarget = prevRt;\n\t\t\t\tgl.bindFramebuffer(gl.FRAMEBUFFER, prevRt ? prevRt.impl._glFrameBuffer : null);\n\t\t\t\treturn true;\n\t\t}\n\t\tframeStart() {\n\t\t\t\tsuper.frameStart();\n\t\t\t\tthis.updateBackbuffer();\n\t\t\t\tthis.gpuProfiler.frameStart();\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tsuper.frameEnd();\n\t\t\t\tthis.gpuProfiler.frameEnd();\n\t\t\t\tthis.gpuProfiler.request();\n\t\t}\n\t\tstartRenderPass(renderPass) {\n\t\t\t\tconst rt = renderPass.renderTarget ?? this.backBuffer;\n\t\t\t\tthis.renderTarget = rt;\n\t\t\t\tthis.updateBegin();\n\t\t\t\tconst { width, height } = rt;\n\t\t\t\tthis.setViewport(0, 0, width, height);\n\t\t\t\tthis.setScissor(0, 0, width, height);\n\t\t\t\tconst colorOps = renderPass.colorOps;\n\t\t\t\tconst depthStencilOps = renderPass.depthStencilOps;\n\t\t\t\tif (colorOps?.clear || depthStencilOps.clearDepth || depthStencilOps.clearStencil) {\n\t\t\t\t\t\tlet clearFlags = 0;\n\t\t\t\t\t\tconst clearOptions = {};\n\t\t\t\t\t\tif (colorOps?.clear) {\n\t\t\t\t\t\t\t\tclearFlags |= CLEARFLAG_COLOR;\n\t\t\t\t\t\t\t\tclearOptions.color = [\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.r,\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.g,\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.b,\n\t\t\t\t\t\t\t\t\t\tcolorOps.clearValue.a\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (depthStencilOps.clearDepth) {\n\t\t\t\t\t\t\t\tclearFlags |= CLEARFLAG_DEPTH;\n\t\t\t\t\t\t\t\tclearOptions.depth = depthStencilOps.clearDepthValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (depthStencilOps.clearStencil) {\n\t\t\t\t\t\t\t\tclearFlags |= CLEARFLAG_STENCIL;\n\t\t\t\t\t\t\t\tclearOptions.stencil = depthStencilOps.clearStencilValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclearOptions.flags = clearFlags;\n\t\t\t\t\t\tthis.clear(clearOptions);\n\t\t\t\t}\n\t\t\t\tthis.insideRenderPass = true;\n\t\t}\n\t\tendRenderPass(renderPass) {\n\t\t\t\tthis.unbindVertexArray();\n\t\t\t\tconst target = this.renderTarget;\n\t\t\t\tconst colorBufferCount = renderPass.colorArrayOps.length;\n\t\t\t\tif (target) {\n\t\t\t\t\t\tinvalidateAttachments.length = 0;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; i++){\n\t\t\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\t\t\tif (!(colorOps.store || colorOps.resolve)) {\n\t\t\t\t\t\t\t\t\t\tinvalidateAttachments.push(gl.COLOR_ATTACHMENT0 + i);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target !== this.backBuffer) {\n\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.storeDepth) {\n\t\t\t\t\t\t\t\t\t\tinvalidateAttachments.push(gl.DEPTH_ATTACHMENT);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.storeStencil) {\n\t\t\t\t\t\t\t\t\t\tinvalidateAttachments.push(gl.STENCIL_ATTACHMENT);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (invalidateAttachments.length > 0) {\n\t\t\t\t\t\t\t\tif (renderPass.fullSizeClearRect) {\n\t\t\t\t\t\t\t\t\t\tgl.invalidateFramebuffer(gl.DRAW_FRAMEBUFFER, invalidateAttachments);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (colorBufferCount && renderPass.colorOps?.resolve) {\n\t\t\t\t\t\t\t\tif (renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\t\t\ttarget.resolve(true, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target.depthBuffer && renderPass.depthStencilOps.resolveDepth) {\n\t\t\t\t\t\t\t\tif (renderPass.samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\t\t\ttarget.resolve(false, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < colorBufferCount; i++){\n\t\t\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[i];\n\t\t\t\t\t\t\t\tif (colorOps.genMipmaps) {\n\t\t\t\t\t\t\t\t\t\tconst colorBuffer = target._colorBuffers[i];\n\t\t\t\t\t\t\t\t\t\tif (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.activeTexture(this.maxCombinedTextures - 1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.bindTexture(colorBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.insideRenderPass = false;\n\t\t}\n\t\tset defaultFramebuffer(value) {\n\t\t\t\tif (this._defaultFramebuffer !== value) {\n\t\t\t\t\t\tthis._defaultFramebuffer = value;\n\t\t\t\t\t\tthis._defaultFramebufferChanged = true;\n\t\t\t\t}\n\t\t}\n\t\tget defaultFramebuffer() {\n\t\t\t\treturn this._defaultFramebuffer;\n\t\t}\n\t\tupdateBegin() {\n\t\t\t\tthis.boundVao = null;\n\t\t\t\tif (this._tempEnableSafariTextureUnitWorkaround) {\n\t\t\t\t\t\tfor(let unit = 0; unit < this.textureUnits.length; ++unit){\n\t\t\t\t\t\t\t\tfor(let slot = 0; slot < 3; ++slot){\n\t\t\t\t\t\t\t\t\t\tthis.textureUnits[unit][slot] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst target = this.renderTarget ?? this.backBuffer;\n\t\t\t\tconst targetImpl = target.impl;\n\t\t\t\tif (!targetImpl.initialized) {\n\t\t\t\t\t\tthis.initRenderTarget(target);\n\t\t\t\t}\n\t\t\t\tthis.setFramebuffer(targetImpl._glFrameBuffer);\n\t\t}\n\t\tupdateEnd() {\n\t\t\t\tthis.unbindVertexArray();\n\t\t\t\tconst target = this.renderTarget;\n\t\t\t\tif (target && target !== this.backBuffer) {\n\t\t\t\t\t\tif (target._samples > 1 && target.autoResolve) {\n\t\t\t\t\t\t\t\ttarget.resolve();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst colorBuffer = target._colorBuffer;\n\t\t\t\t\t\tif (colorBuffer && colorBuffer.impl._glTexture && colorBuffer.mipmaps) {\n\t\t\t\t\t\t\t\tthis.activeTexture(this.maxCombinedTextures - 1);\n\t\t\t\t\t\t\t\tthis.bindTexture(colorBuffer);\n\t\t\t\t\t\t\t\tthis.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetUnpackFlipY(flipY) {\n\t\t\t\tif (this.unpackFlipY !== flipY) {\n\t\t\t\t\t\tthis.unpackFlipY = flipY;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipY);\n\t\t\t\t}\n\t\t}\n\t\tsetUnpackPremultiplyAlpha(premultiplyAlpha) {\n\t\t\t\tif (this.unpackPremultiplyAlpha !== premultiplyAlpha) {\n\t\t\t\t\t\tthis.unpackPremultiplyAlpha = premultiplyAlpha;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, premultiplyAlpha);\n\t\t\t\t}\n\t\t}\n\t\tactiveTexture(textureUnit) {\n\t\t\t\tif (this.textureUnit !== textureUnit) {\n\t\t\t\t\t\tthis.gl.activeTexture(this.gl.TEXTURE0 + textureUnit);\n\t\t\t\t\t\tthis.textureUnit = textureUnit;\n\t\t\t\t}\n\t\t}\n\t\tbindTexture(texture) {\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tconst textureTarget = impl._glTarget;\n\t\t\t\tconst textureObject = impl._glTexture;\n\t\t\t\tconst textureUnit = this.textureUnit;\n\t\t\t\tconst slot = this.targetToSlot[textureTarget];\n\t\t\t\tif (this.textureUnits[textureUnit][slot] !== textureObject) {\n\t\t\t\t\t\tthis.gl.bindTexture(textureTarget, textureObject);\n\t\t\t\t\t\tthis.textureUnits[textureUnit][slot] = textureObject;\n\t\t\t\t}\n\t\t}\n\t\tbindTextureOnUnit(texture, textureUnit) {\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tconst textureTarget = impl._glTarget;\n\t\t\t\tconst textureObject = impl._glTexture;\n\t\t\t\tconst slot = this.targetToSlot[textureTarget];\n\t\t\t\tif (this.textureUnits[textureUnit][slot] !== textureObject) {\n\t\t\t\t\t\tthis.activeTexture(textureUnit);\n\t\t\t\t\t\tthis.gl.bindTexture(textureTarget, textureObject);\n\t\t\t\t\t\tthis.textureUnits[textureUnit][slot] = textureObject;\n\t\t\t\t}\n\t\t}\n\t\tsetTextureParameters(texture) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst flags = texture.impl.dirtyParameterFlags;\n\t\t\t\tconst target = texture.impl._glTarget;\n\t\t\t\tif (flags & TEXPROPERTY_MIN_FILTER) {\n\t\t\t\t\t\tlet filter = texture._minFilter;\n\t\t\t\t\t\tif (!texture._mipmaps || texture._compressed && texture._levels.length === 1) {\n\t\t\t\t\t\t\t\tif (filter === FILTER_NEAREST_MIPMAP_NEAREST || filter === FILTER_NEAREST_MIPMAP_LINEAR) {\n\t\t\t\t\t\t\t\t\t\tfilter = FILTER_NEAREST;\n\t\t\t\t\t\t\t\t} else if (filter === FILTER_LINEAR_MIPMAP_NEAREST || filter === FILTER_LINEAR_MIPMAP_LINEAR) {\n\t\t\t\t\t\t\t\t\t\tfilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_MIN_FILTER, this.glFilter[filter]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_MAG_FILTER) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_MAG_FILTER, this.glFilter[texture._magFilter]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ADDRESS_U) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_S, this.glAddress[texture._addressU]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ADDRESS_V) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_T, this.glAddress[texture._addressV]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ADDRESS_W) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_WRAP_R, this.glAddress[texture._addressW]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_COMPARE_ON_READ) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_COMPARE_MODE, texture._compareOnRead ? gl.COMPARE_REF_TO_TEXTURE : gl.NONE);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_COMPARE_FUNC) {\n\t\t\t\t\t\tgl.texParameteri(target, gl.TEXTURE_COMPARE_FUNC, this.glComparison[texture._compareFunc]);\n\t\t\t\t}\n\t\t\t\tif (flags & TEXPROPERTY_ANISOTROPY) {\n\t\t\t\t\t\tconst ext = this.extTextureFilterAnisotropic;\n\t\t\t\t\t\tif (ext) {\n\t\t\t\t\t\t\t\tgl.texParameterf(target, ext.TEXTURE_MAX_ANISOTROPY_EXT, math.clamp(Math.round(texture._anisotropy), 1, this.maxAnisotropy));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetTexture(texture, textureUnit) {\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tif (!impl._glTexture) {\n\t\t\t\t\t\timpl.initialize(this, texture);\n\t\t\t\t}\n\t\t\t\tif (impl.dirtyParameterFlags > 0 || texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\tthis.activeTexture(textureUnit);\n\t\t\t\t\t\tthis.bindTexture(texture);\n\t\t\t\t\t\tif (impl.dirtyParameterFlags) {\n\t\t\t\t\t\t\t\tthis.setTextureParameters(texture);\n\t\t\t\t\t\t\t\timpl.dirtyParameterFlags = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (texture._needsUpload || texture._needsMipmapsUpload) {\n\t\t\t\t\t\t\t\timpl.upload(this, texture);\n\t\t\t\t\t\t\t\ttexture._needsUpload = false;\n\t\t\t\t\t\t\t\ttexture._needsMipmapsUpload = false;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.bindTextureOnUnit(texture, textureUnit);\n\t\t\t\t}\n\t\t}\n\t\tcreateVertexArray(vertexBuffers) {\n\t\t\t\tlet key, vao;\n\t\t\t\tconst useCache = vertexBuffers.length > 1;\n\t\t\t\tif (useCache) {\n\t\t\t\t\t\tkey = '';\n\t\t\t\t\t\tfor(let i = 0; i < vertexBuffers.length; i++){\n\t\t\t\t\t\t\t\tconst vertexBuffer = vertexBuffers[i];\n\t\t\t\t\t\t\t\tkey += vertexBuffer.id + vertexBuffer.format.renderingHash;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvao = this._vaoMap.get(key);\n\t\t\t\t}\n\t\t\t\tif (!vao) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tvao = gl.createVertexArray();\n\t\t\t\t\t\tgl.bindVertexArray(vao);\n\t\t\t\t\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, null);\n\t\t\t\t\t\tfor(let i = 0; i < vertexBuffers.length; i++){\n\t\t\t\t\t\t\t\tconst vertexBuffer = vertexBuffers[i];\n\t\t\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer.impl.bufferId);\n\t\t\t\t\t\t\t\tconst elements = vertexBuffer.format.elements;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < elements.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst e = elements[j];\n\t\t\t\t\t\t\t\t\t\tconst loc = semanticToLocation[e.name];\n\t\t\t\t\t\t\t\t\t\tif (e.asInt) {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.vertexAttribIPointer(loc, e.numComponents, this.glType[e.dataType], e.stride, e.offset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.vertexAttribPointer(loc, e.numComponents, this.glType[e.dataType], e.normalize, e.stride, e.offset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tgl.enableVertexAttribArray(loc);\n\t\t\t\t\t\t\t\t\t\tif (vertexBuffer.format.instancing) {\n\t\t\t\t\t\t\t\t\t\t\t\tgl.vertexAttribDivisor(loc, 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.bindVertexArray(null);\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\n\t\t\t\t\t\tif (useCache) {\n\t\t\t\t\t\t\t\tthis._vaoMap.set(key, vao);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn vao;\n\t\t}\n\t\tunbindVertexArray() {\n\t\t\t\tif (this.boundVao) {\n\t\t\t\t\t\tthis.boundVao = null;\n\t\t\t\t\t\tthis.gl.bindVertexArray(null);\n\t\t\t\t}\n\t\t}\n\t\tsetBuffers(indexBuffer) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tlet vao;\n\t\t\t\tif (this.vertexBuffers.length === 1) {\n\t\t\t\t\t\tconst vertexBuffer = this.vertexBuffers[0];\n\t\t\t\t\t\tif (!vertexBuffer.impl.vao) {\n\t\t\t\t\t\t\t\tvertexBuffer.impl.vao = this.createVertexArray(this.vertexBuffers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvao = vertexBuffer.impl.vao;\n\t\t\t\t} else {\n\t\t\t\t\t\tvao = this.createVertexArray(this.vertexBuffers);\n\t\t\t\t}\n\t\t\t\tif (this.boundVao !== vao) {\n\t\t\t\t\t\tthis.boundVao = vao;\n\t\t\t\t\t\tgl.bindVertexArray(vao);\n\t\t\t\t}\n\t\t\t\tconst bufferId = indexBuffer ? indexBuffer.impl.bufferId : null;\n\t\t\t\tgl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, bufferId);\n\t\t}\n\t\t_multiDrawLoopFallback(mode, primitive, indexBuffer, numInstances, drawCommands) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tif (primitive.indexed) {\n\t\t\t\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\t\t\t\tconst { glCounts, glOffsetsBytes, glInstanceCounts, count } = drawCommands.impl;\n\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawElementsInstanced(mode, glCounts[i], format, glOffsetsBytes[i], glInstanceCounts[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawElements(mode, glCounts[i], format, glOffsetsBytes[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst { glCounts, glOffsetsBytes, glInstanceCounts, count } = drawCommands.impl;\n\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawArraysInstanced(mode, glOffsetsBytes[i], glCounts[i], glInstanceCounts[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tgl.drawArrays(mode, glOffsetsBytes[i], glCounts[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tif (shader) {\n\t\t\t\t\t\tthis.activateShader();\n\t\t\t\t\t\tif (this.shaderValid) {\n\t\t\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\t\t\tthis.setBuffers(indexBuffer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet textureUnit = 0;\n\t\t\t\t\t\t\t\tconst samplers = shader.impl.samplers;\n\t\t\t\t\t\t\t\tfor(let i = 0, len = samplers.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst sampler = samplers[i];\n\t\t\t\t\t\t\t\t\t\tlet samplerValue = sampler.scopeId.value;\n\t\t\t\t\t\t\t\t\t\tif (!samplerValue) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst samplerName = sampler.scopeId.name;\n\t\t\t\t\t\t\t\t\t\t\t\tif (samplerName === 'uSceneDepthMap') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsamplerValue = getBuiltInTexture(this, 'white');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (samplerName === 'uSceneColorMap') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsamplerValue = getBuiltInTexture(this, 'pink');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!samplerValue) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsamplerValue = getBuiltInTexture(this, 'pink');\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (samplerValue instanceof Texture) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst texture = samplerValue;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setTexture(texture, textureUnit);\n\t\t\t\t\t\t\t\t\t\t\t\tif (sampler.slot !== textureUnit) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.uniform1i(sampler.locationId, textureUnit);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampler.slot = textureUnit;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttextureUnit++;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tsampler.array.length = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tconst numTextures = samplerValue.length;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < numTextures; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst texture = samplerValue[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setTexture(texture, textureUnit);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsampler.array[j] = textureUnit;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextureUnit++;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tgl.uniform1iv(sampler.locationId, sampler.array);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst uniforms = shader.impl.uniforms;\n\t\t\t\t\t\t\t\tfor(let i = 0, len = uniforms.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst uniform = uniforms[i];\n\t\t\t\t\t\t\t\t\t\tconst scopeId = uniform.scopeId;\n\t\t\t\t\t\t\t\t\t\tconst uniformVersion = uniform.version;\n\t\t\t\t\t\t\t\t\t\tconst programVersion = scopeId.versionObject.version;\n\t\t\t\t\t\t\t\t\t\tif (uniformVersion.globalId !== programVersion.globalId || uniformVersion.revision !== programVersion.revision) {\n\t\t\t\t\t\t\t\t\t\t\t\tuniformVersion.globalId = programVersion.globalId;\n\t\t\t\t\t\t\t\t\t\t\t\tuniformVersion.revision = programVersion.revision;\n\t\t\t\t\t\t\t\t\t\t\t\tconst value = scopeId.value;\n\t\t\t\t\t\t\t\t\t\t\t\tif (value !== null && value !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.commitFunction[uniform.dataType](uniform, value);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.transformFeedbackBuffer) {\n\t\t\t\t\t\t\t\t\t\tgl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, this.transformFeedbackBuffer.impl.bufferId);\n\t\t\t\t\t\t\t\t\t\tgl.beginTransformFeedback(gl.POINTS);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mode = this.glPrimitive[primitive.type];\n\t\t\t\t\t\t\t\tconst count = primitive.count;\n\t\t\t\t\t\t\t\tif (drawCommands) {\n\t\t\t\t\t\t\t\t\t\tif (this.extMultiDraw) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst impl = drawCommands.impl;\n\t\t\t\t\t\t\t\t\t\t\t\tif (primitive.indexed) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawElementsInstancedWEBGL(mode, impl.glCounts, 0, format, impl.glOffsetsBytes, 0, impl.glInstanceCounts, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawElementsWEBGL(mode, impl.glCounts, 0, format, impl.glOffsetsBytes, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawArraysInstancedWEBGL(mode, impl.glOffsetsBytes, 0, impl.glCounts, 0, impl.glInstanceCounts, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.extMultiDraw.multiDrawArraysWEBGL(mode, impl.glOffsetsBytes, 0, impl.glCounts, 0, drawCommands.count);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._multiDrawLoopFallback(mode, primitive, indexBuffer, numInstances, drawCommands);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (primitive.indexed) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst format = indexBuffer.impl.glFormat;\n\t\t\t\t\t\t\t\t\t\t\t\tconst offset = primitive.base * indexBuffer.bytesPerIndex;\n\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawElementsInstanced(mode, count, format, offset, numInstances);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawElements(mode, count, format, offset);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst first = primitive.base;\n\t\t\t\t\t\t\t\t\t\t\t\tif (numInstances > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawArraysInstanced(mode, first, count, numInstances);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tgl.drawArrays(mode, first, count);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.transformFeedbackBuffer) {\n\t\t\t\t\t\t\t\t\t\tgl.endTransformFeedback();\n\t\t\t\t\t\t\t\t\t\tgl.bindBufferBase(gl.TRANSFORM_FEEDBACK_BUFFER, 0, null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._drawCallsPerFrame++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (last) {\n\t\t\t\t\t\tthis.clearVertexBuffer();\n\t\t\t\t}\n\t\t}\n\t\tclear(options) {\n\t\t\t\tconst defaultOptions = this.defaultClearOptions;\n\t\t\t\toptions = options || defaultOptions;\n\t\t\t\tconst flags = options.flags ?? defaultOptions.flags;\n\t\t\t\tif (flags !== 0) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tif (flags & CLEARFLAG_COLOR) {\n\t\t\t\t\t\t\t\tconst color = options.color ?? defaultOptions.color;\n\t\t\t\t\t\t\t\tconst r = color[0];\n\t\t\t\t\t\t\t\tconst g = color[1];\n\t\t\t\t\t\t\t\tconst b = color[2];\n\t\t\t\t\t\t\t\tconst a = color[3];\n\t\t\t\t\t\t\t\tconst c = this.clearColor;\n\t\t\t\t\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.clearColor(r, g, b, a);\n\t\t\t\t\t\t\t\t\t\tthis.clearColor.set(r, g, b, a);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flags & CLEARFLAG_DEPTH) {\n\t\t\t\t\t\t\t\tconst depth = options.depth ?? defaultOptions.depth;\n\t\t\t\t\t\t\t\tif (depth !== this.clearDepth) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.clearDepth(depth);\n\t\t\t\t\t\t\t\t\t\tthis.clearDepth = depth;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.setDepthState(DepthState.WRITEDEPTH);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flags & CLEARFLAG_STENCIL) {\n\t\t\t\t\t\t\t\tconst stencil = options.stencil ?? defaultOptions.stencil;\n\t\t\t\t\t\t\t\tif (stencil !== this.clearStencil) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.clearStencil(stencil);\n\t\t\t\t\t\t\t\t\t\tthis.clearStencil = stencil;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tgl.stencilMask(0xFF);\n\t\t\t\t\t\t\t\tthis.stencilWriteMaskFront = 0xFF;\n\t\t\t\t\t\t\t\tthis.stencilWriteMaskBack = 0xFF;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tgl.clear(this.glClearFlag[flags]);\n\t\t\t\t}\n\t\t}\n\t\tsubmit() {\n\t\t\t\tthis.gl.flush();\n\t\t}\n\t\treadPixels(x, y, w, h, pixels) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tgl.readPixels(x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, pixels);\n\t\t}\n\t\tclientWaitAsync(flags, interval_ms) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst sync = gl.fenceSync(gl.SYNC_GPU_COMMANDS_COMPLETE, 0);\n\t\t\t\tthis.submit();\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tfunction test() {\n\t\t\t\t\t\t\t\tconst res = gl.clientWaitSync(sync, flags, 0);\n\t\t\t\t\t\t\t\tif (res === gl.TIMEOUT_EXPIRED) {\n\t\t\t\t\t\t\t\t\t\tsetTimeout(test, interval_ms);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tgl.deleteSync(sync);\n\t\t\t\t\t\t\t\t\t\tif (res === gl.WAIT_FAILED) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(new Error('webgl clientWaitSync sync failed'));\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttest();\n\t\t\t\t});\n\t\t}\n\t\tasync readPixelsAsync(x, y, w, h, pixels) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst impl = this.renderTarget.colorBuffer?.impl;\n\t\t\t\tconst format = impl?._glFormat ?? gl.RGBA;\n\t\t\t\tconst pixelType = impl?._glPixelType ?? gl.UNSIGNED_BYTE;\n\t\t\t\tconst buf = gl.createBuffer();\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n\t\t\t\tgl.bufferData(gl.PIXEL_PACK_BUFFER, pixels.byteLength, gl.STREAM_READ);\n\t\t\t\tgl.readPixels(x, y, w, h, format, pixelType, 0);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n\t\t\t\tawait this.clientWaitAsync(0, 16);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, buf);\n\t\t\t\tgl.getBufferSubData(gl.PIXEL_PACK_BUFFER, 0, pixels);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_PACK_BUFFER, null);\n\t\t\t\tgl.deleteBuffer(buf);\n\t\t\t\treturn pixels;\n\t\t}\n\t\treadTextureAsync(texture, x, y, width, height, options) {\n\t\t\t\tconst face = options.face ?? 0;\n\t\t\t\tconst renderTarget = options.renderTarget ?? new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tface: face\n\t\t\t\t});\n\t\t\t\tconst buffer = new ArrayBuffer(TextureUtils.calcLevelGpuSize(width, height, 1, texture._format));\n\t\t\t\tconst data = options.data ?? new (getPixelFormatArrayType(texture._format))(buffer);\n\t\t\t\tthis.setRenderTarget(renderTarget);\n\t\t\t\tthis.initRenderTarget(renderTarget);\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tthis.readPixelsAsync(x, y, width, height, data).then((data)=>{\n\t\t\t\t\t\t\t\tif (this._destroyed) return;\n\t\t\t\t\t\t\t\tif (!options.renderTarget) {\n\t\t\t\t\t\t\t\t\t\trenderTarget.destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresolve(data);\n\t\t\t\t\t\t}).catch(reject);\n\t\t\t\t});\n\t\t}\n\t\tasync writeTextureAsync(texture, x, y, width, height, data) {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tconst impl = texture.impl;\n\t\t\t\tconst format = impl?._glFormat ?? gl.RGBA;\n\t\t\t\tconst pixelType = impl?._glPixelType ?? gl.UNSIGNED_BYTE;\n\t\t\t\tconst buf = gl.createBuffer();\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, buf);\n\t\t\t\tgl.bufferData(gl.PIXEL_UNPACK_BUFFER, data, gl.STREAM_DRAW);\n\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, impl._glTexture);\n\t\t\t\tgl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, width, height, format, pixelType, 0);\n\t\t\t\tgl.bindBuffer(gl.PIXEL_UNPACK_BUFFER, null);\n\t\t\t\ttexture._needsUpload = false;\n\t\t\t\ttexture._mipmapsUploaded = false;\n\t\t\t\tawait this.clientWaitAsync(0, 16);\n\t\t}\n\t\tsetAlphaToCoverage(state) {\n\t\t\t\tif (this.alphaToCoverage !== state) {\n\t\t\t\t\t\tthis.alphaToCoverage = state;\n\t\t\t\t\t\tif (state) {\n\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.SAMPLE_ALPHA_TO_COVERAGE);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetTransformFeedbackBuffer(tf) {\n\t\t\t\tif (this.transformFeedbackBuffer !== tf) {\n\t\t\t\t\t\tthis.transformFeedbackBuffer = tf;\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tif (tf) {\n\t\t\t\t\t\t\t\tif (!this.feedback) {\n\t\t\t\t\t\t\t\t\t\tthis.feedback = gl.createTransformFeedback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tgl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, this.feedback);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgl.bindTransformFeedback(gl.TRANSFORM_FEEDBACK, null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetRaster(on) {\n\t\t\t\tif (this.raster !== on) {\n\t\t\t\t\t\tthis.raster = on;\n\t\t\t\t\t\tif (on) {\n\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.RASTERIZER_DISCARD);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.RASTERIZER_DISCARD);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetStencilTest(enable) {\n\t\t\t\tif (this.stencil !== enable) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tif (enable) {\n\t\t\t\t\t\t\t\tgl.enable(gl.STENCIL_TEST);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tgl.disable(gl.STENCIL_TEST);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.stencil = enable;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilFunc(func, ref, mask) {\n\t\t\t\tif (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask || this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) {\n\t\t\t\t\t\tthis.gl.stencilFunc(this.glComparison[func], ref, mask);\n\t\t\t\t\t\tthis.stencilFuncFront = this.stencilFuncBack = func;\n\t\t\t\t\t\tthis.stencilRefFront = this.stencilRefBack = ref;\n\t\t\t\t\t\tthis.stencilMaskFront = this.stencilMaskBack = mask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilFuncFront(func, ref, mask) {\n\t\t\t\tif (this.stencilFuncFront !== func || this.stencilRefFront !== ref || this.stencilMaskFront !== mask) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.stencilFuncSeparate(gl.FRONT, this.glComparison[func], ref, mask);\n\t\t\t\t\t\tthis.stencilFuncFront = func;\n\t\t\t\t\t\tthis.stencilRefFront = ref;\n\t\t\t\t\t\tthis.stencilMaskFront = mask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilFuncBack(func, ref, mask) {\n\t\t\t\tif (this.stencilFuncBack !== func || this.stencilRefBack !== ref || this.stencilMaskBack !== mask) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tgl.stencilFuncSeparate(gl.BACK, this.glComparison[func], ref, mask);\n\t\t\t\t\t\tthis.stencilFuncBack = func;\n\t\t\t\t\t\tthis.stencilRefBack = ref;\n\t\t\t\t\t\tthis.stencilMaskBack = mask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilOperation(fail, zfail, zpass, writeMask) {\n\t\t\t\tif (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass || this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) {\n\t\t\t\t\t\tthis.gl.stencilOp(this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\t\t\t\tthis.stencilFailFront = this.stencilFailBack = fail;\n\t\t\t\t\t\tthis.stencilZfailFront = this.stencilZfailBack = zfail;\n\t\t\t\t\t\tthis.stencilZpassFront = this.stencilZpassBack = zpass;\n\t\t\t\t}\n\t\t\t\tif (this.stencilWriteMaskFront !== writeMask || this.stencilWriteMaskBack !== writeMask) {\n\t\t\t\t\t\tthis.gl.stencilMask(writeMask);\n\t\t\t\t\t\tthis.stencilWriteMaskFront = writeMask;\n\t\t\t\t\t\tthis.stencilWriteMaskBack = writeMask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilOperationFront(fail, zfail, zpass, writeMask) {\n\t\t\t\tif (this.stencilFailFront !== fail || this.stencilZfailFront !== zfail || this.stencilZpassFront !== zpass) {\n\t\t\t\t\t\tthis.gl.stencilOpSeparate(this.gl.FRONT, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\t\t\t\tthis.stencilFailFront = fail;\n\t\t\t\t\t\tthis.stencilZfailFront = zfail;\n\t\t\t\t\t\tthis.stencilZpassFront = zpass;\n\t\t\t\t}\n\t\t\t\tif (this.stencilWriteMaskFront !== writeMask) {\n\t\t\t\t\t\tthis.gl.stencilMaskSeparate(this.gl.FRONT, writeMask);\n\t\t\t\t\t\tthis.stencilWriteMaskFront = writeMask;\n\t\t\t\t}\n\t\t}\n\t\tsetStencilOperationBack(fail, zfail, zpass, writeMask) {\n\t\t\t\tif (this.stencilFailBack !== fail || this.stencilZfailBack !== zfail || this.stencilZpassBack !== zpass) {\n\t\t\t\t\t\tthis.gl.stencilOpSeparate(this.gl.BACK, this.glStencilOp[fail], this.glStencilOp[zfail], this.glStencilOp[zpass]);\n\t\t\t\t\t\tthis.stencilFailBack = fail;\n\t\t\t\t\t\tthis.stencilZfailBack = zfail;\n\t\t\t\t\t\tthis.stencilZpassBack = zpass;\n\t\t\t\t}\n\t\t\t\tif (this.stencilWriteMaskBack !== writeMask) {\n\t\t\t\t\t\tthis.gl.stencilMaskSeparate(this.gl.BACK, writeMask);\n\t\t\t\t\t\tthis.stencilWriteMaskBack = writeMask;\n\t\t\t\t}\n\t\t}\n\t\tsetBlendState(blendState) {\n\t\t\t\tconst currentBlendState = this.blendState;\n\t\t\t\tif (!currentBlendState.equals(blendState)) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tconst { blend, colorOp, alphaOp, colorSrcFactor, colorDstFactor, alphaSrcFactor, alphaDstFactor } = blendState;\n\t\t\t\t\t\tif (currentBlendState.blend !== blend) {\n\t\t\t\t\t\t\t\tif (blend) {\n\t\t\t\t\t\t\t\t\t\tgl.enable(gl.BLEND);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tgl.disable(gl.BLEND);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentBlendState.colorOp !== colorOp || currentBlendState.alphaOp !== alphaOp) {\n\t\t\t\t\t\t\t\tconst glBlendEquation = this.glBlendEquation;\n\t\t\t\t\t\t\t\tgl.blendEquationSeparate(glBlendEquation[colorOp], glBlendEquation[alphaOp]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentBlendState.colorSrcFactor !== colorSrcFactor || currentBlendState.colorDstFactor !== colorDstFactor || currentBlendState.alphaSrcFactor !== alphaSrcFactor || currentBlendState.alphaDstFactor !== alphaDstFactor) {\n\t\t\t\t\t\t\t\tgl.blendFuncSeparate(this.glBlendFunctionColor[colorSrcFactor], this.glBlendFunctionColor[colorDstFactor], this.glBlendFunctionAlpha[alphaSrcFactor], this.glBlendFunctionAlpha[alphaDstFactor]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentBlendState.allWrite !== blendState.allWrite) {\n\t\t\t\t\t\t\t\tthis.gl.colorMask(blendState.redWrite, blendState.greenWrite, blendState.blueWrite, blendState.alphaWrite);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentBlendState.copy(blendState);\n\t\t\t\t}\n\t\t}\n\t\tsetBlendColor(r, g, b, a) {\n\t\t\t\tconst c = this.blendColor;\n\t\t\t\tif (r !== c.r || g !== c.g || b !== c.b || a !== c.a) {\n\t\t\t\t\t\tthis.gl.blendColor(r, g, b, a);\n\t\t\t\t\t\tc.set(r, g, b, a);\n\t\t\t\t}\n\t\t}\n\t\tsetStencilState(stencilFront, stencilBack) {\n\t\t\t\tif (stencilFront || stencilBack) {\n\t\t\t\t\t\tthis.setStencilTest(true);\n\t\t\t\t\t\tif (stencilFront === stencilBack) {\n\t\t\t\t\t\t\t\tthis.setStencilFunc(stencilFront.func, stencilFront.ref, stencilFront.readMask);\n\t\t\t\t\t\t\t\tthis.setStencilOperation(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstencilFront ??= StencilParameters.DEFAULT;\n\t\t\t\t\t\t\t\tthis.setStencilFuncFront(stencilFront.func, stencilFront.ref, stencilFront.readMask);\n\t\t\t\t\t\t\t\tthis.setStencilOperationFront(stencilFront.fail, stencilFront.zfail, stencilFront.zpass, stencilFront.writeMask);\n\t\t\t\t\t\t\t\tstencilBack ??= StencilParameters.DEFAULT;\n\t\t\t\t\t\t\t\tthis.setStencilFuncBack(stencilBack.func, stencilBack.ref, stencilBack.readMask);\n\t\t\t\t\t\t\t\tthis.setStencilOperationBack(stencilBack.fail, stencilBack.zfail, stencilBack.zpass, stencilBack.writeMask);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.setStencilTest(false);\n\t\t\t\t}\n\t\t}\n\t\tsetDepthState(depthState) {\n\t\t\t\tconst currentDepthState = this.depthState;\n\t\t\t\tif (!currentDepthState.equals(depthState)) {\n\t\t\t\t\t\tconst gl = this.gl;\n\t\t\t\t\t\tconst write = depthState.write;\n\t\t\t\t\t\tif (currentDepthState.write !== write) {\n\t\t\t\t\t\t\t\tgl.depthMask(write);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet { func, test } = depthState;\n\t\t\t\t\t\tif (!test && write) {\n\t\t\t\t\t\t\t\ttest = true;\n\t\t\t\t\t\t\t\tfunc = FUNC_ALWAYS;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentDepthState.func !== func) {\n\t\t\t\t\t\t\t\tgl.depthFunc(this.glComparison[func]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (currentDepthState.test !== test) {\n\t\t\t\t\t\t\t\tif (test) {\n\t\t\t\t\t\t\t\t\t\tgl.enable(gl.DEPTH_TEST);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tgl.disable(gl.DEPTH_TEST);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { depthBias, depthBiasSlope } = depthState;\n\t\t\t\t\t\tif (depthBias || depthBiasSlope) {\n\t\t\t\t\t\t\t\tif (!this.depthBiasEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.depthBiasEnabled = true;\n\t\t\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.POLYGON_OFFSET_FILL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tgl.polygonOffset(depthBiasSlope, depthBias);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.depthBiasEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.depthBiasEnabled = false;\n\t\t\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.POLYGON_OFFSET_FILL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrentDepthState.copy(depthState);\n\t\t\t\t}\n\t\t}\n\t\tsetCullMode(cullMode) {\n\t\t\t\tif (this.cullMode !== cullMode) {\n\t\t\t\t\t\tif (cullMode === CULLFACE_NONE) {\n\t\t\t\t\t\t\t\tthis.gl.disable(this.gl.CULL_FACE);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.cullMode === CULLFACE_NONE) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.enable(this.gl.CULL_FACE);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mode = this.glCull[cullMode];\n\t\t\t\t\t\t\t\tif (this.cullFace !== mode) {\n\t\t\t\t\t\t\t\t\t\tthis.gl.cullFace(mode);\n\t\t\t\t\t\t\t\t\t\tthis.cullFace = mode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.cullMode = cullMode;\n\t\t\t\t}\n\t\t}\n\t\tsetShader(shader, asyncCompile = false) {\n\t\t\t\tif (shader !== this.shader) {\n\t\t\t\t\t\tthis.shader = shader;\n\t\t\t\t\t\tthis.shaderAsyncCompile = asyncCompile;\n\t\t\t\t\t\tthis.shaderValid = undefined;\n\t\t\t\t}\n\t\t}\n\t\tactivateShader() {\n\t\t\t\tconst { shader } = this;\n\t\t\t\tconst { impl } = shader;\n\t\t\t\tif (this.shaderValid === undefined) {\n\t\t\t\t\t\tif (shader.failed) {\n\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t} else if (!shader.ready) {\n\t\t\t\t\t\t\t\tif (this.shaderAsyncCompile) {\n\t\t\t\t\t\t\t\t\t\tif (impl.isLinked(this)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!impl.finalize(this, shader)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!impl.finalize(this, shader)) {\n\t\t\t\t\t\t\t\t\t\t\t\tshader.failed = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.shaderValid = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.shaderValid === undefined) {\n\t\t\t\t\t\tthis.gl.useProgram(impl.glProgram);\n\t\t\t\t\t\tthis.shaderValid = true;\n\t\t\t\t}\n\t\t}\n\t\tclearVertexArrayObjectCache() {\n\t\t\t\tconst gl = this.gl;\n\t\t\t\tthis._vaoMap.forEach((item, key, mapObj)=>{\n\t\t\t\t\t\tgl.deleteVertexArray(item);\n\t\t\t\t});\n\t\t\t\tthis._vaoMap.clear();\n\t\t}\n\t\tset fullscreen(fullscreen) {\n\t\t\t\tif (fullscreen) {\n\t\t\t\t\t\tconst canvas = this.gl.canvas;\n\t\t\t\t\t\tcanvas.requestFullscreen();\n\t\t\t\t} else {\n\t\t\t\t\t\tdocument.exitFullscreen();\n\t\t\t\t}\n\t\t}\n\t\tget fullscreen() {\n\t\t\t\treturn !!document.fullscreenElement;\n\t\t}\n}\n\nclass NullIndexBuffer {\n\t\tunlock(indexBuffer) {}\n}\n\nclass NullRenderTarget {\n\t\tdestroy(device) {}\n\t\tinit(device, renderTarget) {}\n\t\tloseContext() {}\n\t\tresolve(device, target, color, depth) {}\n}\n\nclass NullShader {\n\t\tdestroy(shader) {}\n\t\tloseContext() {}\n\t\trestoreContext(device, shader) {}\n}\n\nclass NullTexture {\n\t\tdestroy(device) {}\n\t\tpropertyChanged(flag) {}\n\t\tloseContext() {}\n}\n\nclass NullVertexBuffer {\n\t\tdestroy(device) {}\n\t\tunlock(vertexBuffer) {}\n}\n\nclass NullDrawCommands {\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex) {}\n}\n\nclass NullGraphicsDevice extends GraphicsDevice {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas, options);\n\t\t\t\toptions = this.initOptions;\n\t\t\t\tthis.isNull = true;\n\t\t\t\tthis._deviceType = DEVICETYPE_NULL;\n\t\t\t\tthis.samples = 1;\n\t\t\t\tthis.backBuffer = new RenderTarget({\n\t\t\t\t\t\tname: 'Framebuffer',\n\t\t\t\t\t\tgraphicsDevice: this,\n\t\t\t\t\t\tdepth: this.initOptions.depth,\n\t\t\t\t\t\tstencil: this.supportsStencil,\n\t\t\t\t\t\tsamples: this.samples\n\t\t\t\t});\n\t\t\t\tthis.initDeviceCaps();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tinitDeviceCaps() {\n\t\t\t\tthis.disableParticleSystem = true;\n\t\t\t\tthis.precision = 'highp';\n\t\t\t\tthis.maxPrecision = 'highp';\n\t\t\t\tthis.maxSamples = 4;\n\t\t\t\tthis.maxTextures = 16;\n\t\t\t\tthis.maxTextureSize = 4096;\n\t\t\t\tthis.maxCubeMapSize = 4096;\n\t\t\t\tthis.maxVolumeSize = 4096;\n\t\t\t\tthis.maxColorAttachments = 8;\n\t\t\t\tthis.maxPixelRatio = 1;\n\t\t\t\tthis.maxAnisotropy = 16;\n\t\t\t\tthis.supportsUniformBuffers = false;\n\t\t\t\tthis.supportsAreaLights = true;\n\t\t\t\tthis.supportsGpuParticles = false;\n\t\t\t\tthis.textureFloatRenderable = true;\n\t\t\t\tthis.textureHalfFloatRenderable = true;\n\t\t\t\tthis.supportsImageBitmap = false;\n\t\t}\n\t\tpostInit() {\n\t\t\t\tsuper.postInit();\n\t\t}\n\t\tframeStart() {\n\t\t\t\tsuper.frameStart();\n\t\t}\n\t\tframeEnd() {\n\t\t\t\tsuper.frameEnd();\n\t\t}\n\t\tupdateBegin() {}\n\t\tupdateEnd() {}\n\t\treadPixels(x, y, w, h, pixels) {}\n\t\tcreateVertexBufferImpl(vertexBuffer, format) {\n\t\t\t\treturn new NullVertexBuffer(vertexBuffer, format);\n\t\t}\n\t\tcreateIndexBufferImpl(indexBuffer) {\n\t\t\t\treturn new NullIndexBuffer(indexBuffer);\n\t\t}\n\t\tcreateShaderImpl(shader) {\n\t\t\t\treturn new NullShader(shader);\n\t\t}\n\t\tcreateTextureImpl(texture) {\n\t\t\t\treturn new NullTexture(texture);\n\t\t}\n\t\tcreateRenderTargetImpl(renderTarget) {\n\t\t\t\treturn new NullRenderTarget(renderTarget);\n\t\t}\n\t\tcreateDrawCommandImpl(drawCommands) {\n\t\t\t\treturn new NullDrawCommands();\n\t\t}\n\t\tdraw(primitive, indexBuffer, numInstances, drawCommands, first = true, last = true) {}\n\t\tsetShader(shader, asyncCompile = false) {}\n\t\tsetBlendState(blendState) {}\n\t\tsetDepthState(depthState) {}\n\t\tsetStencilState(stencilFront, stencilBack) {}\n\t\tsetBlendColor(r, g, b, a) {}\n\t\tsetCullMode(cullMode) {}\n\t\tsetAlphaToCoverage(state) {}\n\t\tinitializeContextCaches() {\n\t\t\t\tsuper.initializeContextCaches();\n\t\t}\n\t\tclear(options) {}\n\t\tsetViewport(x, y, w, h) {}\n\t\tsetScissor(x, y, w, h) {}\n\t\tcopyRenderTarget(source, dest, color, depth) {\n\t\t\t\treturn true;\n\t\t}\n}\n\nfunction createGraphicsDevice(canvas, options = {}) {\n\t\tconst deviceTypes = options.deviceTypes ?? [];\n\t\tif (!deviceTypes.includes(DEVICETYPE_WEBGL2)) {\n\t\t\t\tdeviceTypes.push(DEVICETYPE_WEBGL2);\n\t\t}\n\t\tif (!deviceTypes.includes(DEVICETYPE_NULL)) {\n\t\t\t\tdeviceTypes.push(DEVICETYPE_NULL);\n\t\t}\n\t\tif (platform.browser && !!navigator.xr) {\n\t\t\t\toptions.xrCompatible ??= true;\n\t\t}\n\t\tconst deviceCreateFuncs = [];\n\t\tfor(let i = 0; i < deviceTypes.length; i++){\n\t\t\t\tconst deviceType = deviceTypes[i];\n\t\t\t\tif (deviceType === DEVICETYPE_WEBGPU && window?.navigator?.gpu) {\n\t\t\t\t\t\tdeviceCreateFuncs.push(()=>{\n\t\t\t\t\t\t\t\tconst device = new WebgpuGraphicsDevice(canvas, options);\n\t\t\t\t\t\t\t\treturn device.initWebGpu(options.glslangUrl, options.twgslUrl);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (deviceType === DEVICETYPE_WEBGL2) {\n\t\t\t\t\t\tdeviceCreateFuncs.push(()=>{\n\t\t\t\t\t\t\t\treturn new WebglGraphicsDevice(canvas, options);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (deviceType === DEVICETYPE_NULL) {\n\t\t\t\t\t\tdeviceCreateFuncs.push(()=>{\n\t\t\t\t\t\t\t\treturn new NullGraphicsDevice(canvas, options);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\tlet attempt = 0;\n\t\t\t\tconst next = ()=>{\n\t\t\t\t\t\tif (attempt >= deviceCreateFuncs.length) {\n\t\t\t\t\t\t\t\treject(new Error('Failed to create a graphics device'));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tPromise.resolve(deviceCreateFuncs[attempt++]()).then((device)=>{\n\t\t\t\t\t\t\t\t\t\tif (device) {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(device);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\t\t\tnext();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tnext();\n\t\t});\n}\n\nclass ComputeParameter {\n\t\tconstructor(){\n\t\t\t\tthis.scopeId = null;\n\t\t}\n}\nclass Compute {\n\t\tconstructor(graphicsDevice, shader, name = 'Unnamed'){\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.parameters = new Map();\n\t\t\t\tthis.countX = 1;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.shader = shader;\n\t\t\t\tthis.name = name;\n\t\t\t\tif (graphicsDevice.supportsCompute) {\n\t\t\t\t\t\tthis.impl = graphicsDevice.createComputeImpl(this);\n\t\t\t\t}\n\t\t}\n\t\tsetParameter(name, value) {\n\t\t\t\tlet param = this.parameters.get(name);\n\t\t\t\tif (!param) {\n\t\t\t\t\t\tparam = new ComputeParameter();\n\t\t\t\t\t\tparam.scopeId = this.device.scope.resolve(name);\n\t\t\t\t\t\tthis.parameters.set(name, param);\n\t\t\t\t}\n\t\t\t\tparam.value = value;\n\t\t}\n\t\tgetParameter(name) {\n\t\t\t\treturn this.parameters.get(name)?.value;\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tthis.parameters.delete(name);\n\t\t}\n\t\tapplyParameters() {\n\t\t\t\tfor (const [, param] of this.parameters){\n\t\t\t\t\t\tparam.scopeId.setValue(param.value);\n\t\t\t\t}\n\t\t}\n\t\tsetupDispatch(x, y, z) {\n\t\t\t\tthis.countX = x;\n\t\t\t\tthis.countY = y;\n\t\t\t\tthis.countZ = z;\n\t\t}\n}\n\nclass DrawCommands {\n\t\tget maxCount() {\n\t\t\t\treturn this._maxCount;\n\t\t}\n\t\tget count() {\n\t\t\t\treturn this._count;\n\t\t}\n\t\tconstructor(device, indexSizeBytes = 0){\n\t\t\t\tthis._maxCount = 0;\n\t\t\t\tthis.impl = null;\n\t\t\t\tthis._count = 1;\n\t\t\t\tthis.slotIndex = 0;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.indexSizeBytes = indexSizeBytes;\n\t\t\t\tthis.impl = device.createDrawCommandImpl(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.impl?.destroy?.();\n\t\t\t\tthis.impl = null;\n\t\t}\n\t\tallocate(maxCount) {\n\t\t\t\tthis._maxCount = maxCount;\n\t\t\t\tthis.impl.allocate?.(maxCount);\n\t\t}\n\t\tadd(i, indexOrVertexCount, instanceCount, firstIndexOrVertex, baseVertex = 0, firstInstance = 0) {\n\t\t\t\tthis.impl.add(i, indexOrVertexCount, instanceCount, firstIndexOrVertex, baseVertex, firstInstance);\n\t\t}\n\t\tupdate(count) {\n\t\t\t\tthis._count = count;\n\t\t\t\tthis.impl.update?.(count);\n\t\t}\n}\n\nlet id$6 = 0;\nclass IndexBuffer {\n\t\tconstructor(graphicsDevice, format, numIndices, usage = BUFFER_STATIC, initialData, options){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.format = format;\n\t\t\t\tthis.numIndices = numIndices;\n\t\t\t\tthis.usage = usage;\n\t\t\t\tthis.id = id$6++;\n\t\t\t\tthis.impl = graphicsDevice.createIndexBufferImpl(this, options);\n\t\t\t\tconst bytesPerIndex = typedArrayIndexFormatsByteSize[format];\n\t\t\t\tthis.bytesPerIndex = bytesPerIndex;\n\t\t\t\tthis.numBytes = this.numIndices * bytesPerIndex;\n\t\t\t\tif (initialData) {\n\t\t\t\t\t\tthis.setData(initialData);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.storage = new ArrayBuffer(this.numBytes);\n\t\t\t\t}\n\t\t\t\tthis.adjustVramSizeTracking(graphicsDevice._vram, this.numBytes);\n\t\t\t\tthis.device.buffers.push(this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst idx = device.buffers.indexOf(this);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tdevice.buffers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tif (this.device.indexBuffer === this) {\n\t\t\t\t\t\tthis.device.indexBuffer = null;\n\t\t\t\t}\n\t\t\t\tif (this.impl.initialized) {\n\t\t\t\t\t\tthis.impl.destroy(device);\n\t\t\t\t\t\tthis.adjustVramSizeTracking(device._vram, -this.storage.byteLength);\n\t\t\t\t}\n\t\t}\n\t\tadjustVramSizeTracking(vram, size) {\n\t\t\t\tvram.ib += size;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.impl.loseContext();\n\t\t}\n\t\tgetFormat() {\n\t\t\t\treturn this.format;\n\t\t}\n\t\tgetNumIndices() {\n\t\t\t\treturn this.numIndices;\n\t\t}\n\t\tlock() {\n\t\t\t\treturn this.storage;\n\t\t}\n\t\tunlock() {\n\t\t\t\tthis.impl.unlock(this);\n\t\t}\n\t\tsetData(data) {\n\t\t\t\tif (data.byteLength !== this.numBytes) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.storage = data;\n\t\t\t\tthis.unlock();\n\t\t\t\treturn true;\n\t\t}\n\t\t_lockTypedArray() {\n\t\t\t\tconst lock = this.lock();\n\t\t\t\tconst indices = this.format === INDEXFORMAT_UINT32 ? new Uint32Array(lock) : this.format === INDEXFORMAT_UINT16 ? new Uint16Array(lock) : new Uint8Array(lock);\n\t\t\t\treturn indices;\n\t\t}\n\t\twriteData(data, count) {\n\t\t\t\tconst indices = this._lockTypedArray();\n\t\t\t\tif (data.length > count) {\n\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\tdata = data.subarray(0, count);\n\t\t\t\t\t\t\t\tindices.set(data);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tindices[i] = data[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tindices.set(data);\n\t\t\t\t}\n\t\t\t\tthis.unlock();\n\t\t}\n\t\treadData(data) {\n\t\t\t\tconst indices = this._lockTypedArray();\n\t\t\t\tconst count = this.numIndices;\n\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\tdata.set(indices);\n\t\t\t\t} else {\n\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tdata[i] = indices[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n}\n\nclass ColorAttachmentOps {\n\t\tconstructor(){\n\t\t\t\tthis.clearValue = new Color(0, 0, 0, 1);\n\t\t\t\tthis.clearValueLinear = new Color(0, 0, 0, 1);\n\t\t\t\tthis.clear = false;\n\t\t\t\tthis.store = false;\n\t\t\t\tthis.resolve = true;\n\t\t\t\tthis.genMipmaps = false;\n\t\t}\n}\nclass DepthStencilAttachmentOps {\n\t\tconstructor(){\n\t\t\t\tthis.clearDepthValue = 1;\n\t\t\t\tthis.clearStencilValue = 0;\n\t\t\t\tthis.clearDepth = false;\n\t\t\t\tthis.clearStencil = false;\n\t\t\t\tthis.storeDepth = false;\n\t\t\t\tthis.resolveDepth = false;\n\t\t\t\tthis.storeStencil = false;\n\t\t}\n}\nclass RenderPass {\n\t\tget colorOps() {\n\t\t\t\treturn this.colorArrayOps[0];\n\t\t}\n\t\tconstructor(graphicsDevice){\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._skipStart = false;\n\t\t\t\tthis._skipEnd = false;\n\t\t\t\tthis.executeEnabled = true;\n\t\t\t\tthis.samples = 0;\n\t\t\t\tthis.colorArrayOps = [];\n\t\t\t\tthis.requiresCubemaps = true;\n\t\t\t\tthis.fullSizeClearRect = true;\n\t\t\t\tthis.beforePasses = [];\n\t\t\t\tthis.afterPasses = [];\n\t\t\t\tthis.device = graphicsDevice;\n\t\t}\n\t\tset name(value) {\n\t\t\t\tthis._name = value;\n\t\t}\n\t\tget name() {\n\t\t\t\tif (!this._name) {\n\t\t\t\t\t\tthis._name = this.constructor.name;\n\t\t\t\t}\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset scaleX(value) {\n\t\t\t\tthis._options.scaleX = value;\n\t\t}\n\t\tget scaleX() {\n\t\t\t\treturn this._options.scaleX;\n\t\t}\n\t\tset scaleY(value) {\n\t\t\t\tthis._options.scaleY = value;\n\t\t}\n\t\tget scaleY() {\n\t\t\t\treturn this._options.scaleY;\n\t\t}\n\t\tset options(value) {\n\t\t\t\tthis._options = value;\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.scaleX = this.scaleX ?? 1;\n\t\t\t\t\t\tthis.scaleY = this.scaleY ?? 1;\n\t\t\t\t}\n\t\t}\n\t\tget options() {\n\t\t\t\treturn this._options;\n\t\t}\n\t\tinit(renderTarget = null, options) {\n\t\t\t\tthis.options = options;\n\t\t\t\tthis.renderTarget = renderTarget;\n\t\t\t\tthis.samples = Math.max(this.renderTarget ? this.renderTarget.samples : this.device.samples, 1);\n\t\t\t\tthis.allocateAttachments();\n\t\t\t\tthis.postInit();\n\t\t}\n\t\tallocateAttachments() {\n\t\t\t\tconst rt = this.renderTarget;\n\t\t\t\tthis.depthStencilOps = new DepthStencilAttachmentOps();\n\t\t\t\tif (rt?.depthBuffer) {\n\t\t\t\t\t\tthis.depthStencilOps.storeDepth = true;\n\t\t\t\t}\n\t\t\t\tconst numColorOps = rt ? rt._colorBuffers?.length ?? 0 : 1;\n\t\t\t\tthis.colorArrayOps.length = 0;\n\t\t\t\tfor(let i = 0; i < numColorOps; i++){\n\t\t\t\t\t\tconst colorOps = new ColorAttachmentOps();\n\t\t\t\t\t\tthis.colorArrayOps[i] = colorOps;\n\t\t\t\t\t\tif (this.samples === 1) {\n\t\t\t\t\t\t\t\tcolorOps.store = true;\n\t\t\t\t\t\t\t\tcolorOps.resolve = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst colorBuffer = this.renderTarget?._colorBuffers?.[i];\n\t\t\t\t\t\tif (this.renderTarget?.mipmaps && colorBuffer?.mipmaps) {\n\t\t\t\t\t\t\t\tconst intFormat = isIntegerPixelFormat(colorBuffer._format);\n\t\t\t\t\t\t\t\tcolorOps.genMipmaps = !intFormat;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {}\n\t\tpostInit() {}\n\t\tframeUpdate() {\n\t\t\t\tif (this._options && this.renderTarget) {\n\t\t\t\t\t\tconst resizeSource = this._options.resizeSource ?? this.device.backBuffer;\n\t\t\t\t\t\tconst width = Math.floor(resizeSource.width * this.scaleX);\n\t\t\t\t\t\tconst height = Math.floor(resizeSource.height * this.scaleY);\n\t\t\t\t\t\tthis.renderTarget.resize(width, height);\n\t\t\t\t}\n\t\t}\n\t\tbefore() {}\n\t\texecute() {}\n\t\tafter() {}\n\t\tonEnable() {}\n\t\tonDisable() {}\n\t\tset enabled(value) {\n\t\t\t\tif (this._enabled !== value) {\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.onDisable();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tsetClearColor(color) {\n\t\t\t\tconst count = this.colorArrayOps.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst colorOps = this.colorArrayOps[i];\n\t\t\t\t\t\tif (color) {\n\t\t\t\t\t\t\t\tcolorOps.clearValue.copy(color);\n\t\t\t\t\t\t\t\tcolorOps.clearValueLinear.linear(color);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcolorOps.clear = !!color;\n\t\t\t\t}\n\t\t}\n\t\tsetClearDepth(depthValue) {\n\t\t\t\tif (depthValue !== undefined) {\n\t\t\t\t\t\tthis.depthStencilOps.clearDepthValue = depthValue;\n\t\t\t\t}\n\t\t\t\tthis.depthStencilOps.clearDepth = depthValue !== undefined;\n\t\t}\n\t\tsetClearStencil(stencilValue) {\n\t\t\t\tif (stencilValue !== undefined) {\n\t\t\t\t\t\tthis.depthStencilOps.clearStencilValue = stencilValue;\n\t\t\t\t}\n\t\t\t\tthis.depthStencilOps.clearStencil = stencilValue !== undefined;\n\t\t}\n\t\trender() {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tconst realPass = this.renderTarget !== undefined;\n\t\t\t\t\t\tthis.before();\n\t\t\t\t\t\tif (this.executeEnabled) {\n\t\t\t\t\t\t\t\tif (realPass && !this._skipStart) {\n\t\t\t\t\t\t\t\t\t\tdevice.startRenderPass(this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.execute();\n\t\t\t\t\t\t\t\tif (realPass && !this._skipEnd) {\n\t\t\t\t\t\t\t\t\t\tdevice.endRenderPass(this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.after();\n\t\t\t\t\t\tdevice.renderPassIndex++;\n\t\t\t\t}\n\t\t}\n}\n\nclass TransformFeedback {\n\t\tconstructor(inputBuffer, outputBuffer, usage = BUFFER_GPUDYNAMIC){\n\t\t\t\tif (outputBuffer !== undefined && !(outputBuffer instanceof VertexBuffer)) {\n\t\t\t\t\t\tusage = outputBuffer;\n\t\t\t\t\t\toutputBuffer = undefined;\n\t\t\t\t}\n\t\t\t\tthis.device = inputBuffer.device;\n\t\t\t\tconst gl = this.device.gl;\n\t\t\t\tconst outVB = outputBuffer ?? inputBuffer;\n\t\t\t\tif (usage === BUFFER_GPUDYNAMIC && outVB.usage !== usage) {\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, outVB.impl.bufferId);\n\t\t\t\t\t\tgl.bufferData(gl.ARRAY_BUFFER, outVB.storage, gl.DYNAMIC_COPY);\n\t\t\t\t}\n\t\t\t\tthis._inputBuffer = inputBuffer;\n\t\t\t\tthis._destroyOutputBuffer = !outputBuffer;\n\t\t\t\tthis._outputBuffer = outputBuffer ?? new VertexBuffer(inputBuffer.device, inputBuffer.format, inputBuffer.numVertices, {\n\t\t\t\t\t\tusage: usage,\n\t\t\t\t\t\tdata: inputBuffer.storage\n\t\t\t\t});\n\t\t}\n\t\tstatic createShader(graphicsDevice, vertexCode, name, feedbackVaryings) {\n\t\t\t\treturn new Shader(graphicsDevice, ShaderDefinitionUtils.createDefinition(graphicsDevice, {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tvertexCode,\n\t\t\t\t\t\tfeedbackVaryings,\n\t\t\t\t\t\tuseTransformFeedback: true,\n\t\t\t\t\t\tfragmentCode: 'void main(void) {gl_FragColor = vec4(0.0);}'\n\t\t\t\t}));\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._destroyOutputBuffer) {\n\t\t\t\t\t\tthis._outputBuffer.destroy();\n\t\t\t\t}\n\t\t}\n\t\tprocess(shader, swap = true) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst oldRt = device.getRenderTarget();\n\t\t\t\tdevice.setRenderTarget(null);\n\t\t\t\tdevice.updateBegin();\n\t\t\t\tdevice.setVertexBuffer(this._inputBuffer);\n\t\t\t\tdevice.setRaster(false);\n\t\t\t\tdevice.setTransformFeedbackBuffer(this._outputBuffer);\n\t\t\t\tdevice.setShader(shader);\n\t\t\t\tdevice.draw({\n\t\t\t\t\t\ttype: PRIMITIVE_POINTS,\n\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\tcount: this._inputBuffer.numVertices,\n\t\t\t\t\t\tindexed: false\n\t\t\t\t});\n\t\t\t\tdevice.setTransformFeedbackBuffer(null);\n\t\t\t\tdevice.setRaster(true);\n\t\t\t\tdevice.updateEnd();\n\t\t\t\tdevice.setRenderTarget(oldRt);\n\t\t\t\tif (swap) {\n\t\t\t\t\t\tlet tmp = this._inputBuffer.impl.bufferId;\n\t\t\t\t\t\tthis._inputBuffer.impl.bufferId = this._outputBuffer.impl.bufferId;\n\t\t\t\t\t\tthis._outputBuffer.impl.bufferId = tmp;\n\t\t\t\t\t\ttmp = this._inputBuffer.impl.vao;\n\t\t\t\t\t\tthis._inputBuffer.impl.vao = this._outputBuffer.impl.vao;\n\t\t\t\t\t\tthis._outputBuffer.impl.vao = tmp;\n\t\t\t\t}\n\t\t}\n\t\tget inputBuffer() {\n\t\t\t\treturn this._inputBuffer;\n\t\t}\n\t\tget outputBuffer() {\n\t\t\t\treturn this._outputBuffer;\n\t\t}\n}\n\nfunction set1(a) {\n\t\tthis.array[this.index] = a;\n}\nfunction set2(a, b) {\n\t\tthis.array[this.index] = a;\n\t\tthis.array[this.index + 1] = b;\n}\nfunction set3(a, b, c) {\n\t\tthis.array[this.index] = a;\n\t\tthis.array[this.index + 1] = b;\n\t\tthis.array[this.index + 2] = c;\n}\nfunction set4(a, b, c, d) {\n\t\tthis.array[this.index] = a;\n\t\tthis.array[this.index + 1] = b;\n\t\tthis.array[this.index + 2] = c;\n\t\tthis.array[this.index + 3] = d;\n}\nfunction arraySet1(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n}\nfunction arraySet2(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n\t\tthis.array[index + 1] = inputArray[inputIndex + 1];\n}\nfunction arraySet3(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n\t\tthis.array[index + 1] = inputArray[inputIndex + 1];\n\t\tthis.array[index + 2] = inputArray[inputIndex + 2];\n}\nfunction arraySet4(index, inputArray, inputIndex) {\n\t\tthis.array[index] = inputArray[inputIndex];\n\t\tthis.array[index + 1] = inputArray[inputIndex + 1];\n\t\tthis.array[index + 2] = inputArray[inputIndex + 2];\n\t\tthis.array[index + 3] = inputArray[inputIndex + 3];\n}\nfunction arrayGet1(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n}\nfunction arrayGet2(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n\t\toutputArray[outputIndex + 1] = this.array[offset + 1];\n}\nfunction arrayGet3(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n\t\toutputArray[outputIndex + 1] = this.array[offset + 1];\n\t\toutputArray[outputIndex + 2] = this.array[offset + 2];\n}\nfunction arrayGet4(offset, outputArray, outputIndex) {\n\t\toutputArray[outputIndex] = this.array[offset];\n\t\toutputArray[outputIndex + 1] = this.array[offset + 1];\n\t\toutputArray[outputIndex + 2] = this.array[offset + 2];\n\t\toutputArray[outputIndex + 3] = this.array[offset + 3];\n}\nclass VertexIteratorAccessor {\n\t\tconstructor(buffer, vertexElement, vertexFormat){\n\t\t\t\tthis.index = 0;\n\t\t\t\tthis.numComponents = vertexElement.numComponents;\n\t\t\t\tif (vertexFormat.interleaved) {\n\t\t\t\t\t\tthis.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.array = new typedArrayTypes[vertexElement.dataType](buffer, vertexElement.offset, vertexFormat.vertexCount * vertexElement.numComponents);\n\t\t\t\t}\n\t\t\t\tthis.stride = vertexElement.stride / this.array.constructor.BYTES_PER_ELEMENT;\n\t\t\t\tswitch(vertexElement.numComponents){\n\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\tthis.set = set1;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet1;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet1;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\tthis.set = set2;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet2;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet2;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\tthis.set = set3;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet3;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet3;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\tthis.set = set4;\n\t\t\t\t\t\t\t\tthis.getToArray = arrayGet4;\n\t\t\t\t\t\t\t\tthis.setFromArray = arraySet4;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tget(offset) {\n\t\t\t\treturn this.array[this.index + offset];\n\t\t}\n\t\tset(a, b, c, d) {}\n\t\tgetToArray(offset, outputArray, outputIndex) {}\n\t\tsetFromArray(index, inputArray, inputIndex) {}\n}\nclass VertexIterator {\n\t\tconstructor(vertexBuffer){\n\t\t\t\tthis.vertexBuffer = vertexBuffer;\n\t\t\t\tthis.vertexFormatSize = vertexBuffer.getFormat().size;\n\t\t\t\tthis.buffer = this.vertexBuffer.lock();\n\t\t\t\tthis.accessors = [];\n\t\t\t\tthis.element = {};\n\t\t\t\tconst vertexFormat = this.vertexBuffer.getFormat();\n\t\t\t\tfor(let i = 0; i < vertexFormat.elements.length; i++){\n\t\t\t\t\t\tconst vertexElement = vertexFormat.elements[i];\n\t\t\t\t\t\tthis.accessors[i] = new VertexIteratorAccessor(this.buffer, vertexElement, vertexFormat);\n\t\t\t\t\t\tthis.element[vertexElement.name] = this.accessors[i];\n\t\t\t\t}\n\t\t}\n\t\tnext(count = 1) {\n\t\t\t\tlet i = 0;\n\t\t\t\tconst accessors = this.accessors;\n\t\t\t\tconst numAccessors = this.accessors.length;\n\t\t\t\twhile(i < numAccessors){\n\t\t\t\t\t\tconst accessor = accessors[i++];\n\t\t\t\t\t\taccessor.index += count * accessor.stride;\n\t\t\t\t}\n\t\t}\n\t\tend() {\n\t\t\t\tthis.vertexBuffer.unlock();\n\t\t}\n\t\twriteData(semantic, data, numVertices) {\n\t\t\t\tconst element = this.element[semantic];\n\t\t\t\tif (element) {\n\t\t\t\t\t\tif (numVertices > this.vertexBuffer.numVertices) {\n\t\t\t\t\t\t\t\tnumVertices = this.vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst numComponents = element.numComponents;\n\t\t\t\t\t\tif (this.vertexBuffer.getFormat().interleaved) {\n\t\t\t\t\t\t\t\tlet index = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\t\t\t\t\t\t\telement.setFromArray(index, data, i * numComponents);\n\t\t\t\t\t\t\t\t\t\tindex += element.stride;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (data.length > numVertices * numComponents) {\n\t\t\t\t\t\t\t\t\t\tconst copyCount = numVertices * numComponents;\n\t\t\t\t\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata = data.subarray(0, copyCount);\n\t\t\t\t\t\t\t\t\t\t\t\telement.array.set(data);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < copyCount; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\telement.array[i] = data[i];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telement.array.set(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treadData(semantic, data) {\n\t\t\t\tconst element = this.element[semantic];\n\t\t\t\tlet count = 0;\n\t\t\t\tif (element) {\n\t\t\t\t\t\tcount = this.vertexBuffer.numVertices;\n\t\t\t\t\t\tlet i;\n\t\t\t\t\t\tconst numComponents = element.numComponents;\n\t\t\t\t\t\tif (this.vertexBuffer.getFormat().interleaved) {\n\t\t\t\t\t\t\t\tif (Array.isArray(data)) {\n\t\t\t\t\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement.index = 0;\n\t\t\t\t\t\t\t\tlet offset = 0;\n\t\t\t\t\t\t\t\tfor(i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\telement.getToArray(offset, data, i * numComponents);\n\t\t\t\t\t\t\t\t\t\toffset += element.stride;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\t\t\tdata.set(element.array);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\t\t\t\t\tconst copyCount = count * numComponents;\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < copyCount; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tdata[i] = element.array[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n}\n\nconst ACTION_MOUSE = 'mouse';\nconst ACTION_KEYBOARD = 'keyboard';\nconst ACTION_GAMEPAD = 'gamepad';\nconst AXIS_MOUSE_X = 'mousex';\nconst AXIS_MOUSE_Y = 'mousey';\nconst AXIS_PAD_L_X = 'padlx';\nconst AXIS_PAD_L_Y = 'padly';\nconst AXIS_PAD_R_X = 'padrx';\nconst AXIS_PAD_R_Y = 'padry';\nconst AXIS_KEY = 'key';\nconst KEY_BACKSPACE = 8;\nconst KEY_TAB = 9;\nconst KEY_RETURN = 13;\nconst KEY_ENTER = 13;\nconst KEY_SHIFT = 16;\nconst KEY_CONTROL = 17;\nconst KEY_ALT = 18;\nconst KEY_PAUSE = 19;\nconst KEY_CAPS_LOCK = 20;\nconst KEY_ESCAPE = 27;\nconst KEY_SPACE = 32;\nconst KEY_PAGE_UP = 33;\nconst KEY_PAGE_DOWN = 34;\nconst KEY_END = 35;\nconst KEY_HOME = 36;\nconst KEY_LEFT = 37;\nconst KEY_UP = 38;\nconst KEY_RIGHT = 39;\nconst KEY_DOWN = 40;\nconst KEY_PRINT_SCREEN = 44;\nconst KEY_INSERT = 45;\nconst KEY_DELETE = 46;\nconst KEY_0 = 48;\nconst KEY_1 = 49;\nconst KEY_2 = 50;\nconst KEY_3 = 51;\nconst KEY_4 = 52;\nconst KEY_5 = 53;\nconst KEY_6 = 54;\nconst KEY_7 = 55;\nconst KEY_8 = 56;\nconst KEY_9 = 57;\nconst KEY_SEMICOLON = 59;\nconst KEY_EQUAL = 61;\nconst KEY_A = 65;\nconst KEY_B = 66;\nconst KEY_C = 67;\nconst KEY_D = 68;\nconst KEY_E = 69;\nconst KEY_F = 70;\nconst KEY_G = 71;\nconst KEY_H = 72;\nconst KEY_I = 73;\nconst KEY_J = 74;\nconst KEY_K = 75;\nconst KEY_L = 76;\nconst KEY_M = 77;\nconst KEY_N = 78;\nconst KEY_O = 79;\nconst KEY_P = 80;\nconst KEY_Q = 81;\nconst KEY_R = 82;\nconst KEY_S = 83;\nconst KEY_T = 84;\nconst KEY_U = 85;\nconst KEY_V = 86;\nconst KEY_W = 87;\nconst KEY_X = 88;\nconst KEY_Y = 89;\nconst KEY_Z = 90;\nconst KEY_WINDOWS = 91;\nconst KEY_CONTEXT_MENU = 93;\nconst KEY_NUMPAD_0 = 96;\nconst KEY_NUMPAD_1 = 97;\nconst KEY_NUMPAD_2 = 98;\nconst KEY_NUMPAD_3 = 99;\nconst KEY_NUMPAD_4 = 100;\nconst KEY_NUMPAD_5 = 101;\nconst KEY_NUMPAD_6 = 102;\nconst KEY_NUMPAD_7 = 103;\nconst KEY_NUMPAD_8 = 104;\nconst KEY_NUMPAD_9 = 105;\nconst KEY_MULTIPLY = 106;\nconst KEY_ADD = 107;\nconst KEY_SEPARATOR = 108;\nconst KEY_SUBTRACT = 109;\nconst KEY_DECIMAL = 110;\nconst KEY_DIVIDE = 111;\nconst KEY_F1 = 112;\nconst KEY_F2 = 113;\nconst KEY_F3 = 114;\nconst KEY_F4 = 115;\nconst KEY_F5 = 116;\nconst KEY_F6 = 117;\nconst KEY_F7 = 118;\nconst KEY_F8 = 119;\nconst KEY_F9 = 120;\nconst KEY_F10 = 121;\nconst KEY_F11 = 122;\nconst KEY_F12 = 123;\nconst KEY_COMMA = 188;\nconst KEY_PERIOD = 190;\nconst KEY_SLASH = 191;\nconst KEY_OPEN_BRACKET = 219;\nconst KEY_BACK_SLASH = 220;\nconst KEY_CLOSE_BRACKET = 221;\nconst KEY_META = 224;\nconst MOUSEBUTTON_NONE = -1;\nconst MOUSEBUTTON_LEFT = 0;\nconst MOUSEBUTTON_MIDDLE = 1;\nconst MOUSEBUTTON_RIGHT = 2;\nconst PAD_1 = 0;\nconst PAD_2 = 1;\nconst PAD_3 = 2;\nconst PAD_4 = 3;\nconst PAD_FACE_1 = 0;\nconst PAD_FACE_2 = 1;\nconst PAD_FACE_3 = 2;\nconst PAD_FACE_4 = 3;\nconst PAD_L_SHOULDER_1 = 4;\nconst PAD_R_SHOULDER_1 = 5;\nconst PAD_L_SHOULDER_2 = 6;\nconst PAD_R_SHOULDER_2 = 7;\nconst PAD_SELECT = 8;\nconst PAD_START = 9;\nconst PAD_L_STICK_BUTTON = 10;\nconst PAD_R_STICK_BUTTON = 11;\nconst PAD_UP = 12;\nconst PAD_DOWN = 13;\nconst PAD_LEFT = 14;\nconst PAD_RIGHT = 15;\nconst PAD_VENDOR = 16;\nconst PAD_L_STICK_X = 0;\nconst PAD_L_STICK_Y = 1;\nconst PAD_R_STICK_X = 2;\nconst PAD_R_STICK_Y = 3;\nconst XRPAD_TOUCHPAD_X = 0;\nconst XRPAD_TOUCHPAD_Y = 1;\nconst XRPAD_STICK_X = 2;\nconst XRPAD_STICK_Y = 3;\nconst XRPAD_TOUCHPAD_BUTTON = 2;\nconst XRPAD_TRIGGER = 0;\nconst XRPAD_SQUEEZE = 1;\nconst XRPAD_STICK_BUTTON = 3;\nconst XRPAD_A = 4;\nconst XRPAD_B = 5;\n\nclass KeyboardEvent {\n\t\tconstructor(keyboard, event){\n\t\t\t\tthis.key = null;\n\t\t\t\tthis.element = null;\n\t\t\t\tthis.event = null;\n\t\t\t\tif (event) {\n\t\t\t\t\t\tthis.key = event.keyCode;\n\t\t\t\t\t\tthis.element = event.target;\n\t\t\t\t\t\tthis.event = event;\n\t\t\t\t}\n\t\t}\n}\n\nconst _keyboardEvent = new KeyboardEvent();\nfunction makeKeyboardEvent(event) {\n\t\t_keyboardEvent.key = event.keyCode;\n\t\t_keyboardEvent.element = event.target;\n\t\t_keyboardEvent.event = event;\n\t\treturn _keyboardEvent;\n}\nfunction toKeyCode(s) {\n\t\tif (typeof s === 'string') {\n\t\t\t\treturn s.toUpperCase().charCodeAt(0);\n\t\t}\n\t\treturn s;\n}\nconst _keyCodeToKeyIdentifier = {\n\t\t'9': 'Tab',\n\t\t'13': 'Enter',\n\t\t'16': 'Shift',\n\t\t'17': 'Control',\n\t\t'18': 'Alt',\n\t\t'27': 'Escape',\n\t\t'37': 'Left',\n\t\t'38': 'Up',\n\t\t'39': 'Right',\n\t\t'40': 'Down',\n\t\t'46': 'Delete',\n\t\t'91': 'Win'\n};\nclass Keyboard extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_KEYDOWN = 'keydown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_KEYUP = 'keyup';\n\t\t}\n\t\tconstructor(element, options = {}){\n\t\t\t\tsuper(), this._element = null, this._keymap = {}, this._lastmap = {};\n\t\t\t\tthis._keyDownHandler = this._handleKeyDown.bind(this);\n\t\t\t\tthis._keyUpHandler = this._handleKeyUp.bind(this);\n\t\t\t\tthis._keyPressHandler = this._handleKeyPress.bind(this);\n\t\t\t\tthis._visibilityChangeHandler = this._handleVisibilityChange.bind(this);\n\t\t\t\tthis._windowBlurHandler = this._handleWindowBlur.bind(this);\n\t\t\t\tif (element) {\n\t\t\t\t\t\tthis.attach(element);\n\t\t\t\t}\n\t\t\t\tthis.preventDefault = options.preventDefault || false;\n\t\t\t\tthis.stopPropagation = options.stopPropagation || false;\n\t\t}\n\t\tattach(element) {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('keydown', this._keyDownHandler, false);\n\t\t\t\tthis._element.addEventListener('keypress', this._keyPressHandler, false);\n\t\t\t\tthis._element.addEventListener('keyup', this._keyUpHandler, false);\n\t\t\t\tdocument.addEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\twindow.addEventListener('blur', this._windowBlurHandler, false);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('keydown', this._keyDownHandler);\n\t\t\t\tthis._element.removeEventListener('keypress', this._keyPressHandler);\n\t\t\t\tthis._element.removeEventListener('keyup', this._keyUpHandler);\n\t\t\t\tthis._element = null;\n\t\t\t\tdocument.removeEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\twindow.removeEventListener('blur', this._windowBlurHandler, false);\n\t\t}\n\t\ttoKeyIdentifier(keyCode) {\n\t\t\t\tkeyCode = toKeyCode(keyCode);\n\t\t\t\tconst id = _keyCodeToKeyIdentifier[keyCode.toString()];\n\t\t\t\tif (id) {\n\t\t\t\t\t\treturn id;\n\t\t\t\t}\n\t\t\t\tlet hex = keyCode.toString(16).toUpperCase();\n\t\t\t\tconst length = hex.length;\n\t\t\t\tfor(let count = 0; count < 4 - length; count++){\n\t\t\t\t\t\thex = `0${hex}`;\n\t\t\t\t}\n\t\t\t\treturn `U+${hex}`;\n\t\t}\n\t\t_handleKeyDown(event) {\n\t\t\t\tconst code = event.keyCode || event.charCode;\n\t\t\t\tif (code === undefined) return;\n\t\t\t\tconst id = this.toKeyIdentifier(code);\n\t\t\t\tthis._keymap[id] = true;\n\t\t\t\tthis.fire('keydown', makeKeyboardEvent(event));\n\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.stopPropagation) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t}\n\t\t_handleKeyUp(event) {\n\t\t\t\tconst code = event.keyCode || event.charCode;\n\t\t\t\tif (code === undefined) return;\n\t\t\t\tconst id = this.toKeyIdentifier(code);\n\t\t\t\tdelete this._keymap[id];\n\t\t\t\tthis.fire('keyup', makeKeyboardEvent(event));\n\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.stopPropagation) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t}\n\t\t_handleKeyPress(event) {\n\t\t\t\tthis.fire('keypress', makeKeyboardEvent(event));\n\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t\tif (this.stopPropagation) {\n\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\t\t}\n\t\t_handleVisibilityChange() {\n\t\t\t\tif (document.visibilityState === 'hidden') {\n\t\t\t\t\t\tthis._handleWindowBlur();\n\t\t\t\t}\n\t\t}\n\t\t_handleWindowBlur() {\n\t\t\t\tthis._keymap = {};\n\t\t\t\tthis._lastmap = {};\n\t\t}\n\t\tupdate() {\n\t\t\t\tfor(const prop in this._lastmap){\n\t\t\t\t\t\tdelete this._lastmap[prop];\n\t\t\t\t}\n\t\t\t\tfor(const prop in this._keymap){\n\t\t\t\t\t\tif (this._keymap.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tthis._lastmap[prop] = this._keymap[prop];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tisPressed(key) {\n\t\t\t\tconst keyCode = toKeyCode(key);\n\t\t\t\tconst id = this.toKeyIdentifier(keyCode);\n\t\t\t\treturn !!this._keymap[id];\n\t\t}\n\t\twasPressed(key) {\n\t\t\t\tconst keyCode = toKeyCode(key);\n\t\t\t\tconst id = this.toKeyIdentifier(keyCode);\n\t\t\t\treturn !!this._keymap[id] && !!!this._lastmap[id];\n\t\t}\n\t\twasReleased(key) {\n\t\t\t\tconst keyCode = toKeyCode(key);\n\t\t\t\tconst id = this.toKeyIdentifier(keyCode);\n\t\t\t\treturn !!!this._keymap[id] && !!this._lastmap[id];\n\t\t}\n}\n\nfunction isMousePointerLocked() {\n\t\treturn !!(document.pointerLockElement || document.mozPointerLockElement || document.webkitPointerLockElement);\n}\nclass MouseEvent {\n\t\tconstructor(mouse, event){\n\t\t\t\tthis.x = 0;\n\t\t\t\tthis.y = 0;\n\t\t\t\tthis.dx = 0;\n\t\t\t\tthis.dy = 0;\n\t\t\t\tthis.button = MOUSEBUTTON_NONE;\n\t\t\t\tthis.wheelDelta = 0;\n\t\t\t\tthis.ctrlKey = false;\n\t\t\t\tthis.altKey = false;\n\t\t\t\tthis.shiftKey = false;\n\t\t\t\tthis.metaKey = false;\n\t\t\t\tlet coords = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0\n\t\t\t\t};\n\t\t\t\tif (event) {\n\t\t\t\t\t\tif (event instanceof MouseEvent) {\n\t\t\t\t\t\t\t\tthrow Error('Expected MouseEvent');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcoords = mouse._getTargetCoords(event);\n\t\t\t\t} else {\n\t\t\t\t\t\tevent = {};\n\t\t\t\t}\n\t\t\t\tif (coords) {\n\t\t\t\t\t\tthis.x = coords.x;\n\t\t\t\t\t\tthis.y = coords.y;\n\t\t\t\t} else if (isMousePointerLocked()) {\n\t\t\t\t\t\tthis.x = 0;\n\t\t\t\t\t\tthis.y = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (event.type === 'wheel') {\n\t\t\t\t\t\tif (event.deltaY > 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = 1;\n\t\t\t\t\t\t} else if (event.deltaY < 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = -1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isMousePointerLocked()) {\n\t\t\t\t\t\tthis.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0;\n\t\t\t\t\t\tthis.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.dx = this.x - mouse._lastX;\n\t\t\t\t\t\tthis.dy = this.y - mouse._lastY;\n\t\t\t\t}\n\t\t\t\tif (event.type === 'mousedown' || event.type === 'mouseup') {\n\t\t\t\t\t\tthis.button = event.button;\n\t\t\t\t}\n\t\t\t\tthis.buttons = mouse._buttons.slice(0);\n\t\t\t\tthis.element = event.target;\n\t\t\t\tthis.ctrlKey = event.ctrlKey ?? false;\n\t\t\t\tthis.altKey = event.altKey ?? false;\n\t\t\t\tthis.shiftKey = event.shiftKey ?? false;\n\t\t\t\tthis.metaKey = event.metaKey ?? false;\n\t\t\t\tthis.event = event;\n\t\t}\n}\n\nclass Mouse extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEMOVE = 'mousemove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEDOWN = 'mousedown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEUP = 'mouseup';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEWHEEL = 'mousewheel';\n\t\t}\n\t\tconstructor(element){\n\t\t\t\tsuper(), this._lastX = 0, this._lastY = 0, this._buttons = [\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse\n\t\t\t\t], this._lastbuttons = [\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tfalse\n\t\t\t\t], this._target = null, this._attached = false;\n\t\t\t\tthis._upHandler = this._handleUp.bind(this);\n\t\t\t\tthis._downHandler = this._handleDown.bind(this);\n\t\t\t\tthis._moveHandler = this._handleMove.bind(this);\n\t\t\t\tthis._wheelHandler = this._handleWheel.bind(this);\n\t\t\t\tthis._contextMenuHandler = (event)=>{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t};\n\t\t\t\tthis.attach(element);\n\t\t}\n\t\tstatic isPointerLocked() {\n\t\t\t\treturn isMousePointerLocked();\n\t\t}\n\t\tattach(element) {\n\t\t\t\tthis._target = element;\n\t\t\t\tif (this._attached) return;\n\t\t\t\tthis._attached = true;\n\t\t\t\tconst passiveOptions = {\n\t\t\t\t\t\tpassive: false\n\t\t\t\t};\n\t\t\t\tconst options = platform.passiveEvents ? passiveOptions : false;\n\t\t\t\twindow.addEventListener('mouseup', this._upHandler, options);\n\t\t\t\twindow.addEventListener('mousedown', this._downHandler, options);\n\t\t\t\twindow.addEventListener('mousemove', this._moveHandler, options);\n\t\t\t\twindow.addEventListener('wheel', this._wheelHandler, options);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._attached) return;\n\t\t\t\tthis._attached = false;\n\t\t\t\tthis._target = null;\n\t\t\t\tconst passiveOptions = {\n\t\t\t\t\t\tpassive: false\n\t\t\t\t};\n\t\t\t\tconst options = platform.passiveEvents ? passiveOptions : false;\n\t\t\t\twindow.removeEventListener('mouseup', this._upHandler, options);\n\t\t\t\twindow.removeEventListener('mousedown', this._downHandler, options);\n\t\t\t\twindow.removeEventListener('mousemove', this._moveHandler, options);\n\t\t\t\twindow.removeEventListener('wheel', this._wheelHandler, options);\n\t\t}\n\t\tdisableContextMenu() {\n\t\t\t\tif (!this._target) return;\n\t\t\t\tthis._target.addEventListener('contextmenu', this._contextMenuHandler);\n\t\t}\n\t\tenableContextMenu() {\n\t\t\t\tif (!this._target) return;\n\t\t\t\tthis._target.removeEventListener('contextmenu', this._contextMenuHandler);\n\t\t}\n\t\tenablePointerLock(success, error) {\n\t\t\t\tif (!document.body.requestPointerLock) {\n\t\t\t\t\t\tif (error) {\n\t\t\t\t\t\t\t\terror();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst s = ()=>{\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tdocument.removeEventListener('pointerlockchange', s);\n\t\t\t\t};\n\t\t\t\tconst e = ()=>{\n\t\t\t\t\t\terror();\n\t\t\t\t\t\tdocument.removeEventListener('pointerlockerror', e);\n\t\t\t\t};\n\t\t\t\tif (success) {\n\t\t\t\t\t\tdocument.addEventListener('pointerlockchange', s, false);\n\t\t\t\t}\n\t\t\t\tif (error) {\n\t\t\t\t\t\tdocument.addEventListener('pointerlockerror', e, false);\n\t\t\t\t}\n\t\t\t\tdocument.body.requestPointerLock();\n\t\t}\n\t\tdisablePointerLock(success) {\n\t\t\t\tif (!document.exitPointerLock) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst s = ()=>{\n\t\t\t\t\t\tsuccess();\n\t\t\t\t\t\tdocument.removeEventListener('pointerlockchange', s);\n\t\t\t\t};\n\t\t\t\tif (success) {\n\t\t\t\t\t\tdocument.addEventListener('pointerlockchange', s, false);\n\t\t\t\t}\n\t\t\t\tdocument.exitPointerLock();\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis._lastbuttons[0] = this._buttons[0];\n\t\t\t\tthis._lastbuttons[1] = this._buttons[1];\n\t\t\t\tthis._lastbuttons[2] = this._buttons[2];\n\t\t}\n\t\tisPressed(button) {\n\t\t\t\treturn this._buttons[button];\n\t\t}\n\t\twasPressed(button) {\n\t\t\t\treturn this._buttons[button] && !this._lastbuttons[button];\n\t\t}\n\t\twasReleased(button) {\n\t\t\t\treturn !this._buttons[button] && this._lastbuttons[button];\n\t\t}\n\t\t_handleUp(event) {\n\t\t\t\tthis._buttons[event.button] = false;\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mouseup', e);\n\t\t}\n\t\t_handleDown(event) {\n\t\t\t\tthis._buttons[event.button] = true;\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mousedown', e);\n\t\t}\n\t\t_handleMove(event) {\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mousemove', e);\n\t\t\t\tthis._lastX = e.x;\n\t\t\t\tthis._lastY = e.y;\n\t\t}\n\t\t_handleWheel(event) {\n\t\t\t\tconst e = new MouseEvent(this, event);\n\t\t\t\tif (!e.event) return;\n\t\t\t\tthis.fire('mousewheel', e);\n\t\t}\n\t\t_getTargetCoords(event) {\n\t\t\t\tconst rect = this._target.getBoundingClientRect();\n\t\t\t\tconst left = Math.floor(rect.left);\n\t\t\t\tconst top = Math.floor(rect.top);\n\t\t\t\tif (event.clientX < left || event.clientX >= left + this._target.clientWidth || event.clientY < top || event.clientY >= top + this._target.clientHeight) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tx: event.clientX - left,\n\t\t\t\t\t\ty: event.clientY - top\n\t\t\t\t};\n\t\t}\n}\n\nclass Controller {\n\t\tconstructor(element, options = {}){\n\t\t\t\tthis._element = null;\n\t\t\t\tthis._actions = {};\n\t\t\t\tthis._axes = {};\n\t\t\t\tthis._axesValues = {};\n\t\t\t\tthis._keyboard = options.keyboard || null;\n\t\t\t\tthis._mouse = options.mouse || null;\n\t\t\t\tthis._gamepads = options.gamepads || null;\n\t\t\t\tif (element) {\n\t\t\t\t\t\tthis.attach(element);\n\t\t\t\t}\n\t\t}\n\t\tattach(element) {\n\t\t\t\tthis._element = element;\n\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\tthis._keyboard.attach(element);\n\t\t\t\t}\n\t\t\t\tif (this._mouse) {\n\t\t\t\t\t\tthis._mouse.attach(element);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\tthis._keyboard.detach();\n\t\t\t\t}\n\t\t\t\tif (this._mouse) {\n\t\t\t\t\t\tthis._mouse.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = null;\n\t\t}\n\t\tdisableContextMenu() {\n\t\t\t\tif (!this._mouse) {\n\t\t\t\t\t\tthis._enableMouse();\n\t\t\t\t}\n\t\t\t\tthis._mouse.disableContextMenu();\n\t\t}\n\t\tenableContextMenu() {\n\t\t\t\tif (!this._mouse) {\n\t\t\t\t\t\tthis._enableMouse();\n\t\t\t\t}\n\t\t\t\tthis._mouse.enableContextMenu();\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\tthis._keyboard.update();\n\t\t\t\t}\n\t\t\t\tif (this._mouse) {\n\t\t\t\t\t\tthis._mouse.update();\n\t\t\t\t}\n\t\t\t\tif (this._gamepads) {\n\t\t\t\t\t\tthis._gamepads.update();\n\t\t\t\t}\n\t\t\t\tthis._axesValues = {};\n\t\t\t\tfor(const key in this._axes){\n\t\t\t\t\t\tthis._axesValues[key] = [];\n\t\t\t\t}\n\t\t}\n\t\tappendAction(action_name, action) {\n\t\t\t\tthis._actions[action_name] = this._actions[action_name] || [];\n\t\t\t\tthis._actions[action_name].push(action);\n\t\t}\n\t\tregisterKeys(action, keys) {\n\t\t\t\tif (!this._keyboard) {\n\t\t\t\t\t\tthis._enableKeyboard();\n\t\t\t\t}\n\t\t\t\tif (this._actions[action]) {\n\t\t\t\t\t\tthrow new Error(`Action: ${action} already registered`);\n\t\t\t\t}\n\t\t\t\tif (keys === undefined) {\n\t\t\t\t\t\tthrow new Error('Invalid button');\n\t\t\t\t}\n\t\t\t\tif (!keys.length) {\n\t\t\t\t\t\tkeys = [\n\t\t\t\t\t\t\t\tkeys\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis.appendAction(action, {\n\t\t\t\t\t\ttype: ACTION_KEYBOARD,\n\t\t\t\t\t\tkeys\n\t\t\t\t});\n\t\t}\n\t\tregisterMouse(action, button) {\n\t\t\t\tif (!this._mouse) {\n\t\t\t\t\t\tthis._enableMouse();\n\t\t\t\t}\n\t\t\t\tif (button === undefined) {\n\t\t\t\t\t\tthrow new Error('Invalid button');\n\t\t\t\t}\n\t\t\t\tthis.appendAction(action, {\n\t\t\t\t\t\ttype: ACTION_MOUSE,\n\t\t\t\t\t\tbutton\n\t\t\t\t});\n\t\t}\n\t\tregisterPadButton(action, pad, button) {\n\t\t\t\tif (button === undefined) {\n\t\t\t\t\t\tthrow new Error('Invalid button');\n\t\t\t\t}\n\t\t\t\tthis.appendAction(action, {\n\t\t\t\t\t\ttype: ACTION_GAMEPAD,\n\t\t\t\t\t\tbutton,\n\t\t\t\t\t\tpad\n\t\t\t\t});\n\t\t}\n\t\tregisterAxis(options) {\n\t\t\t\tconst name = options.name;\n\t\t\t\tif (!this._axes[name]) {\n\t\t\t\t\t\tthis._axes[name] = [];\n\t\t\t\t}\n\t\t\t\tconst i = this._axes[name].push(name);\n\t\t\t\toptions = options || {};\n\t\t\t\toptions.pad = options.pad || PAD_1;\n\t\t\t\tconst bind = function(controller, source, value, key) {\n\t\t\t\t\t\tswitch(source){\n\t\t\t\t\t\t\t\tcase 'mousex':\n\t\t\t\t\t\t\t\t\t\tcontroller._mouse.on('mousemove', (e)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcontroller._axesValues[name][i] = e.dx / 10;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'mousey':\n\t\t\t\t\t\t\t\t\t\tcontroller._mouse.on('mousemove', (e)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcontroller._axesValues[name][i] = e.dy / 10;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'key':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._keyboard.isPressed(key) ? value : 0;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padrx':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_R_STICK_X);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padry':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_R_STICK_Y);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padlx':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_L_STICK_X);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'padly':\n\t\t\t\t\t\t\t\t\t\tcontroller._axes[name].push(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn controller._gamepads.getAxis(options.pad, PAD_L_STICK_Y);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthrow new Error('Unknown axis');\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tbind(this, options.positive, 1, options.positiveKey);\n\t\t\t\tif (options.negativeKey || options.negative !== options.positive) {\n\t\t\t\t\t\tbind(this, options.negative, -1, options.negativeKey);\n\t\t\t\t}\n\t\t}\n\t\tisPressed(actionName) {\n\t\t\t\tif (!this._actions[actionName]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst length = this._actions[actionName].length;\n\t\t\t\tfor(let index = 0; index < length; ++index){\n\t\t\t\t\t\tconst action = this._actions[actionName][index];\n\t\t\t\t\t\tswitch(action.type){\n\t\t\t\t\t\t\t\tcase ACTION_KEYBOARD:\n\t\t\t\t\t\t\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst len = action.keys.length;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._keyboard.isPressed(action.keys[i])) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_MOUSE:\n\t\t\t\t\t\t\t\t\t\tif (this._mouse && this._mouse.isPressed(action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_GAMEPAD:\n\t\t\t\t\t\t\t\t\t\tif (this._gamepads && this._gamepads.isPressed(action.pad, action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\twasPressed(actionName) {\n\t\t\t\tif (!this._actions[actionName]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst length = this._actions[actionName].length;\n\t\t\t\tfor(let index = 0; index < length; ++index){\n\t\t\t\t\t\tconst action = this._actions[actionName][index];\n\t\t\t\t\t\tswitch(action.type){\n\t\t\t\t\t\t\t\tcase ACTION_KEYBOARD:\n\t\t\t\t\t\t\t\t\t\tif (this._keyboard) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst len = action.keys.length;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._keyboard.wasPressed(action.keys[i])) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_MOUSE:\n\t\t\t\t\t\t\t\t\t\tif (this._mouse && this._mouse.wasPressed(action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ACTION_GAMEPAD:\n\t\t\t\t\t\t\t\t\t\tif (this._gamepads && this._gamepads.wasPressed(action.pad, action.button)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tgetAxis(name) {\n\t\t\t\tlet value = 0;\n\t\t\t\tif (this._axes[name]) {\n\t\t\t\t\t\tconst len = this._axes[name].length;\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tif (typeof this._axes[name][i] === 'function') {\n\t\t\t\t\t\t\t\t\t\tconst v = this._axes[name][i]();\n\t\t\t\t\t\t\t\t\t\tif (Math.abs(v) > Math.abs(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = v;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (this._axesValues[name]) {\n\t\t\t\t\t\t\t\t\t\tif (Math.abs(this._axesValues[name][i]) > Math.abs(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = this._axesValues[name][i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t}\n\t\t_enableMouse() {\n\t\t\t\tthis._mouse = new Mouse();\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\tthrow new Error('Controller must be attached to an Element');\n\t\t\t\t}\n\t\t\t\tthis._mouse.attach(this._element);\n\t\t}\n\t\t_enableKeyboard() {\n\t\t\t\tthis._keyboard = new Keyboard();\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\tthrow new Error('Controller must be attached to an Element');\n\t\t\t\t}\n\t\t\t\tthis._keyboard.attach(this._element);\n\t\t}\n}\n\nconst dummyArray = Object.freeze([]);\nlet getGamepads = function() {\n\t\treturn dummyArray;\n};\nif (typeof navigator !== 'undefined') {\n\t\tgetGamepads = (navigator.getGamepads || navigator.webkitGetGamepads || getGamepads).bind(navigator);\n}\nconst MAPS_INDEXES = {\n\t\tbuttons: {\n\t\t\t\tPAD_FACE_1,\n\t\t\t\tPAD_FACE_2,\n\t\t\t\tPAD_FACE_3,\n\t\t\t\tPAD_FACE_4,\n\t\t\t\tPAD_L_SHOULDER_1,\n\t\t\t\tPAD_R_SHOULDER_1,\n\t\t\t\tPAD_L_SHOULDER_2,\n\t\t\t\tPAD_R_SHOULDER_2,\n\t\t\t\tPAD_SELECT,\n\t\t\t\tPAD_START,\n\t\t\t\tPAD_L_STICK_BUTTON,\n\t\t\t\tPAD_R_STICK_BUTTON,\n\t\t\t\tPAD_UP,\n\t\t\t\tPAD_DOWN,\n\t\t\t\tPAD_LEFT,\n\t\t\t\tPAD_RIGHT,\n\t\t\t\tPAD_VENDOR,\n\t\t\t\tXRPAD_TRIGGER,\n\t\t\t\tXRPAD_SQUEEZE,\n\t\t\t\tXRPAD_TOUCHPAD_BUTTON,\n\t\t\t\tXRPAD_STICK_BUTTON,\n\t\t\t\tXRPAD_A,\n\t\t\t\tXRPAD_B\n\t\t},\n\t\taxes: {\n\t\t\t\tPAD_L_STICK_X,\n\t\t\t\tPAD_L_STICK_Y,\n\t\t\t\tPAD_R_STICK_X,\n\t\t\t\tPAD_R_STICK_Y,\n\t\t\t\tXRPAD_TOUCHPAD_X,\n\t\t\t\tXRPAD_TOUCHPAD_Y,\n\t\t\t\tXRPAD_STICK_X,\n\t\t\t\tXRPAD_STICK_Y\n\t\t}\n};\nconst MAPS = {\n\t\tDEFAULT: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'PAD_FACE_1',\n\t\t\t\t\t\t'PAD_FACE_2',\n\t\t\t\t\t\t'PAD_FACE_3',\n\t\t\t\t\t\t'PAD_FACE_4',\n\t\t\t\t\t\t'PAD_L_SHOULDER_1',\n\t\t\t\t\t\t'PAD_R_SHOULDER_1',\n\t\t\t\t\t\t'PAD_L_SHOULDER_2',\n\t\t\t\t\t\t'PAD_R_SHOULDER_2',\n\t\t\t\t\t\t'PAD_SELECT',\n\t\t\t\t\t\t'PAD_START',\n\t\t\t\t\t\t'PAD_L_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_R_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_UP',\n\t\t\t\t\t\t'PAD_DOWN',\n\t\t\t\t\t\t'PAD_LEFT',\n\t\t\t\t\t\t'PAD_RIGHT',\n\t\t\t\t\t\t'PAD_VENDOR'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'PAD_L_STICK_X',\n\t\t\t\t\t\t'PAD_L_STICK_Y',\n\t\t\t\t\t\t'PAD_R_STICK_X',\n\t\t\t\t\t\t'PAD_R_STICK_Y'\n\t\t\t\t]\n\t\t},\n\t\tDEFAULT_DUAL: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'PAD_FACE_1',\n\t\t\t\t\t\t'PAD_FACE_2',\n\t\t\t\t\t\t'PAD_FACE_3',\n\t\t\t\t\t\t'PAD_FACE_4',\n\t\t\t\t\t\t'PAD_L_SHOULDER_1',\n\t\t\t\t\t\t'PAD_R_SHOULDER_1',\n\t\t\t\t\t\t'PAD_L_SHOULDER_2',\n\t\t\t\t\t\t'PAD_R_SHOULDER_2',\n\t\t\t\t\t\t'PAD_SELECT',\n\t\t\t\t\t\t'PAD_START',\n\t\t\t\t\t\t'PAD_L_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_R_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_VENDOR'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'PAD_L_STICK_X',\n\t\t\t\t\t\t'PAD_L_STICK_Y',\n\t\t\t\t\t\t'PAD_R_STICK_X',\n\t\t\t\t\t\t'PAD_R_STICK_Y'\n\t\t\t\t],\n\t\t\t\tsynthesizedButtons: {\n\t\t\t\t\t\tPAD_UP: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 1\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPAD_DOWN: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: -1,\n\t\t\t\t\t\t\t\tmax: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPAD_LEFT: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: -1,\n\t\t\t\t\t\t\t\tmax: 0\n\t\t\t\t\t\t},\n\t\t\t\t\t\tPAD_RIGHT: {\n\t\t\t\t\t\t\t\taxis: 0,\n\t\t\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\t\t\tmax: 1\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t},\n\t\tPS3: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'PAD_FACE_1',\n\t\t\t\t\t\t'PAD_FACE_2',\n\t\t\t\t\t\t'PAD_FACE_4',\n\t\t\t\t\t\t'PAD_FACE_3',\n\t\t\t\t\t\t'PAD_L_SHOULDER_1',\n\t\t\t\t\t\t'PAD_R_SHOULDER_1',\n\t\t\t\t\t\t'PAD_L_SHOULDER_2',\n\t\t\t\t\t\t'PAD_R_SHOULDER_2',\n\t\t\t\t\t\t'PAD_SELECT',\n\t\t\t\t\t\t'PAD_START',\n\t\t\t\t\t\t'PAD_L_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_R_STICK_BUTTON',\n\t\t\t\t\t\t'PAD_UP',\n\t\t\t\t\t\t'PAD_DOWN',\n\t\t\t\t\t\t'PAD_LEFT',\n\t\t\t\t\t\t'PAD_RIGHT',\n\t\t\t\t\t\t'PAD_VENDOR'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'PAD_L_STICK_X',\n\t\t\t\t\t\t'PAD_L_STICK_Y',\n\t\t\t\t\t\t'PAD_R_STICK_X',\n\t\t\t\t\t\t'PAD_R_STICK_Y'\n\t\t\t\t],\n\t\t\t\tmapping: 'standard'\n\t\t},\n\t\tDEFAULT_XR: {\n\t\t\t\tbuttons: [\n\t\t\t\t\t\t'XRPAD_TRIGGER',\n\t\t\t\t\t\t'XRPAD_SQUEEZE',\n\t\t\t\t\t\t'XRPAD_TOUCHPAD_BUTTON',\n\t\t\t\t\t\t'XRPAD_STICK_BUTTON',\n\t\t\t\t\t\t'XRPAD_A',\n\t\t\t\t\t\t'XRPAD_B'\n\t\t\t\t],\n\t\t\t\taxes: [\n\t\t\t\t\t\t'XRPAD_TOUCHPAD_X',\n\t\t\t\t\t\t'XRPAD_TOUCHPAD_Y',\n\t\t\t\t\t\t'XRPAD_STICK_X',\n\t\t\t\t\t\t'XRPAD_STICK_Y'\n\t\t\t\t],\n\t\t\t\tmapping: 'xr-standard'\n\t\t}\n};\nconst PRODUCT_CODES = {\n\t\t'Product: 0268': 'PS3'\n};\nconst custom_maps = {};\nfunction getMap(pad) {\n\t\tconst custom = custom_maps[pad.id];\n\t\tif (custom) {\n\t\t\t\treturn custom;\n\t\t}\n\t\tfor(const code in PRODUCT_CODES){\n\t\t\t\tif (pad.id.indexOf(code) !== -1) {\n\t\t\t\t\t\tconst product = PRODUCT_CODES[code];\n\t\t\t\t\t\tif (!pad.mapping) {\n\t\t\t\t\t\t\t\tconst raw = MAPS[`RAW_${product}`];\n\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\t\treturn raw;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn MAPS[product];\n\t\t\t\t}\n\t\t}\n\t\tif (pad.mapping === 'xr-standard') {\n\t\t\t\treturn MAPS.DEFAULT_XR;\n\t\t}\n\t\tconst defaultmap = MAPS.DEFAULT;\n\t\tconst map = pad.buttons.length < defaultmap.buttons.length ? MAPS.DEFAULT_DUAL : defaultmap;\n\t\tmap.mapping = pad.mapping;\n\t\treturn map;\n}\nlet deadZone = 0.25;\nfunction sleep(ms) {\n\t\treturn new Promise((resolve)=>{\n\t\t\t\tsetTimeout(resolve, ms);\n\t\t});\n}\nclass GamePadButton {\n\t\tconstructor(current, previous){\n\t\t\t\tthis.value = 0;\n\t\t\t\tthis.pressed = false;\n\t\t\t\tthis.touched = false;\n\t\t\t\tthis.wasPressed = false;\n\t\t\t\tthis.wasReleased = false;\n\t\t\t\tthis.wasTouched = false;\n\t\t\t\tif (typeof current === 'number') {\n\t\t\t\t\t\tthis.value = current;\n\t\t\t\t\t\tthis.pressed = current === 1;\n\t\t\t\t\t\tthis.touched = current > 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.value = current.value;\n\t\t\t\t\t\tthis.pressed = current.pressed;\n\t\t\t\t\t\tthis.touched = current.touched ?? current.value > 0;\n\t\t\t\t}\n\t\t\t\tif (previous) {\n\t\t\t\t\t\tif (typeof previous === 'number') {\n\t\t\t\t\t\t\t\tthis.wasPressed = previous !== 1 && this.pressed;\n\t\t\t\t\t\t\t\tthis.wasReleased = previous === 1 && !this.pressed;\n\t\t\t\t\t\t\t\tthis.wasTouched = previous === 0 && this.touched;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.wasPressed = !previous.pressed && this.pressed;\n\t\t\t\t\t\t\t\tthis.wasReleased = previous.pressed && !this.pressed;\n\t\t\t\t\t\t\t\tthis.wasTouched = !(previous.touched ?? previous.value > 0) && this.touched;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(button) {\n\t\t\t\tconst { value, pressed } = button;\n\t\t\t\tconst touched = button.touched ?? value > 0;\n\t\t\t\tthis.wasPressed = !this.pressed && pressed;\n\t\t\t\tthis.wasReleased = this.pressed && !pressed;\n\t\t\t\tthis.wasTouched = !this.touched && touched;\n\t\t\t\tthis.value = value;\n\t\t\t\tthis.pressed = pressed;\n\t\t\t\tthis.touched = touched;\n\t\t}\n}\nconst dummyButton = Object.freeze(new GamePadButton(0));\nclass GamePad {\n\t\tconstructor(gamepad, map){\n\t\t\t\tthis._compiledMapping = {\n\t\t\t\t\t\tbuttons: [],\n\t\t\t\t\t\taxes: []\n\t\t\t\t};\n\t\t\t\tthis.id = gamepad.id;\n\t\t\t\tthis.index = gamepad.index;\n\t\t\t\tthis._buttons = gamepad.buttons.map((b)=>new GamePadButton(b));\n\t\t\t\tthis._axes = [\n\t\t\t\t\t\t...gamepad.axes\n\t\t\t\t];\n\t\t\t\tthis._previousAxes = [\n\t\t\t\t\t\t...gamepad.axes\n\t\t\t\t];\n\t\t\t\tthis.mapping = map.mapping;\n\t\t\t\tthis.map = map;\n\t\t\t\tthis.hand = gamepad.hand || 'none';\n\t\t\t\tthis.pad = gamepad;\n\t\t\t\tthis._compileMapping();\n\t\t}\n\t\tget connected() {\n\t\t\t\treturn this.pad.connected;\n\t\t}\n\t\t_compileMapping() {\n\t\t\t\tconst { axes, buttons } = this._compiledMapping;\n\t\t\t\tconst axesIndexes = MAPS_INDEXES.axes;\n\t\t\t\tconst buttonsIndexes = MAPS_INDEXES.buttons;\n\t\t\t\taxes.length = 0;\n\t\t\t\tbuttons.length = 0;\n\t\t\t\tconst axesMap = this.map.axes;\n\t\t\t\tif (axesMap) {\n\t\t\t\t\t\tthis.map.axes.forEach((axis, i)=>{\n\t\t\t\t\t\t\t\taxes[axesIndexes[axis]] = ()=>this.pad.axes[i] || 0;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, l = axes.length; i < l; i++){\n\t\t\t\t\t\tif (!axes[i]) {\n\t\t\t\t\t\t\t\taxes[i] = ()=>0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst buttonsMap = this.map.buttons;\n\t\t\t\tif (buttonsMap) {\n\t\t\t\t\t\tbuttonsMap.forEach((button, i)=>{\n\t\t\t\t\t\t\t\tbuttons[buttonsIndexes[button]] = ()=>this._buttons[i] || dummyButton;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst synthesizedButtonsMap = this.map.synthesizedButtons;\n\t\t\t\tif (synthesizedButtonsMap) {\n\t\t\t\t\t\tObject.entries(synthesizedButtonsMap).forEach((button)=>{\n\t\t\t\t\t\t\t\tconst { axis, max, min } = button[1];\n\t\t\t\t\t\t\t\tbuttons[buttonsIndexes[button[0]]] = ()=>new GamePadButton(Math.abs(math.clamp(this._axes[axis] ?? 0, min, max)), Math.abs(math.clamp(this._previousAxes[axis] ?? 0, min, max)));\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, l = buttons.length; i < l; i++){\n\t\t\t\t\t\tif (!buttons[i]) {\n\t\t\t\t\t\t\t\tbuttons[i] = ()=>dummyButton;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(gamepad) {\n\t\t\t\tthis.pad = gamepad;\n\t\t\t\tconst previousAxes = this._previousAxes;\n\t\t\t\tconst axes = this._axes;\n\t\t\t\tpreviousAxes.length = 0;\n\t\t\t\tpreviousAxes.push(...axes);\n\t\t\t\taxes.length = 0;\n\t\t\t\taxes.push(...gamepad.axes);\n\t\t\t\tconst buttons = this._buttons;\n\t\t\t\tfor(let i = 0, l = buttons.length; i < l; i++){\n\t\t\t\t\t\tbuttons[i].update(gamepad.buttons[i]);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tupdateMap(map) {\n\t\t\t\tmap.mapping = 'custom';\n\t\t\t\tcustom_maps[this.id] = map;\n\t\t\t\tthis.map = map;\n\t\t\t\tthis.mapping = 'custom';\n\t\t\t\tthis._compileMapping();\n\t\t}\n\t\tresetMap() {\n\t\t\t\tif (custom_maps[this.id]) {\n\t\t\t\t\t\tdelete custom_maps[this.id];\n\t\t\t\t\t\tconst map = getMap(this.pad);\n\t\t\t\t\t\tthis.map = map;\n\t\t\t\t\t\tthis.mapping = map.mapping;\n\t\t\t\t\t\tthis._compileMapping();\n\t\t\t\t}\n\t\t}\n\t\tget axes() {\n\t\t\t\treturn this._compiledMapping.axes.map((a)=>a());\n\t\t}\n\t\tget buttons() {\n\t\t\t\treturn this._compiledMapping.buttons.map((b)=>b());\n\t\t}\n\t\tasync pulse(intensity, duration, options) {\n\t\t\t\tconst actuators = this.pad.vibrationActuator ? [\n\t\t\t\t\t\tthis.pad.vibrationActuator\n\t\t\t\t] : this.pad.hapticActuators || dummyArray;\n\t\t\t\tif (actuators.length) {\n\t\t\t\t\t\tconst startDelay = options?.startDelay ?? 0;\n\t\t\t\t\t\tconst strongMagnitude = options?.strongMagnitude ?? intensity;\n\t\t\t\t\t\tconst weakMagnitude = options?.weakMagnitude ?? intensity;\n\t\t\t\t\t\tconst results = await Promise.all(actuators.map(async (actuator)=>{\n\t\t\t\t\t\t\t\tif (!actuator) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (actuator.playEffect) {\n\t\t\t\t\t\t\t\t\t\treturn actuator.playEffect(actuator.type, {\n\t\t\t\t\t\t\t\t\t\t\t\tduration,\n\t\t\t\t\t\t\t\t\t\t\t\tstartDelay,\n\t\t\t\t\t\t\t\t\t\t\t\tstrongMagnitude,\n\t\t\t\t\t\t\t\t\t\t\t\tweakMagnitude\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else if (actuator.pulse) {\n\t\t\t\t\t\t\t\t\t\tawait sleep(startDelay);\n\t\t\t\t\t\t\t\t\t\treturn actuator.pulse(intensity, duration);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}));\n\t\t\t\t\t\treturn results.some((r)=>r === true || r === 'complete');\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tgetButton(index) {\n\t\t\t\tconst button = this._compiledMapping.buttons[index];\n\t\t\t\treturn button ? button() : dummyButton;\n\t\t}\n\t\tisPressed(button) {\n\t\t\t\treturn this.getButton(button).pressed;\n\t\t}\n\t\twasPressed(button) {\n\t\t\t\treturn this.getButton(button).wasPressed;\n\t\t}\n\t\twasReleased(button) {\n\t\t\t\treturn this.getButton(button).wasReleased;\n\t\t}\n\t\tisTouched(button) {\n\t\t\t\treturn this.getButton(button).touched;\n\t\t}\n\t\twasTouched(button) {\n\t\t\t\treturn this.getButton(button).wasTouched;\n\t\t}\n\t\tgetValue(button) {\n\t\t\t\treturn this.getButton(button).value;\n\t\t}\n\t\tgetAxis(axis) {\n\t\t\t\tconst a = this.axes[axis];\n\t\t\t\treturn a && Math.abs(a) > deadZone ? a : 0;\n\t\t}\n}\nclass GamePads extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_GAMEPADCONNECTED = 'gamepadconnected';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_GAMEPADDISCONNECTED = 'gamepaddisconnected';\n\t\t}\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis.gamepadsSupported = platform.gamepads;\n\t\t\t\tthis.current = [];\n\t\t\t\tthis._previous = [];\n\t\t\t\tthis._ongamepadconnectedHandler = this._ongamepadconnected.bind(this);\n\t\t\t\tthis._ongamepaddisconnectedHandler = this._ongamepaddisconnected.bind(this);\n\t\t\t\twindow.addEventListener('gamepadconnected', this._ongamepadconnectedHandler, false);\n\t\t\t\twindow.addEventListener('gamepaddisconnected', this._ongamepaddisconnectedHandler, false);\n\t\t\t\tthis.poll();\n\t\t}\n\t\tset deadZone(value) {\n\t\t\t\tdeadZone = value;\n\t\t}\n\t\tget deadZone() {\n\t\t\t\treturn deadZone;\n\t\t}\n\t\tget previous() {\n\t\t\t\tconst current = this.current;\n\t\t\t\tfor(let i = 0, l = current.length; i < l; i++){\n\t\t\t\t\t\tconst buttons = current[i]._buttons;\n\t\t\t\t\t\tif (!this._previous[i]) {\n\t\t\t\t\t\t\t\tthis._previous[i] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let j = 0, m = buttons.length; j < m; j++){\n\t\t\t\t\t\t\t\tconst button = buttons[i];\n\t\t\t\t\t\t\t\tthis.previous[i][j] = button ? !button.wasPressed && button.pressed || button.wasReleased : false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._previous.length = this.current.length;\n\t\t\t\treturn this._previous;\n\t\t}\n\t\t_ongamepadconnected(event) {\n\t\t\t\tconst pad = new GamePad(event.gamepad, this.getMap(event.gamepad));\n\t\t\t\tconst current = this.current;\n\t\t\t\tlet padIndex = current.findIndex((gp)=>gp.index === pad.index);\n\t\t\t\twhile(padIndex !== -1){\n\t\t\t\t\t\tcurrent.splice(padIndex, 1);\n\t\t\t\t\t\tpadIndex = current.findIndex((gp)=>gp.index === pad.index);\n\t\t\t\t}\n\t\t\t\tcurrent.push(pad);\n\t\t\t\tthis.fire('gamepadconnected', pad);\n\t\t}\n\t\t_ongamepaddisconnected(event) {\n\t\t\t\tconst current = this.current;\n\t\t\t\tconst padIndex = current.findIndex((gp)=>gp.index === event.gamepad.index);\n\t\t\t\tif (padIndex !== -1) {\n\t\t\t\t\t\tthis.fire('gamepaddisconnected', current[padIndex]);\n\t\t\t\t\t\tcurrent.splice(padIndex, 1);\n\t\t\t\t}\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.poll();\n\t\t}\n\t\tpoll(pads = []) {\n\t\t\t\tif (pads.length > 0) {\n\t\t\t\t\t\tpads.length = 0;\n\t\t\t\t}\n\t\t\t\tconst padDevices = getGamepads();\n\t\t\t\tfor(let i = 0, len = padDevices.length; i < len; i++){\n\t\t\t\t\t\tif (padDevices[i]) {\n\t\t\t\t\t\t\t\tconst pad = this.findByIndex(padDevices[i].index);\n\t\t\t\t\t\t\t\tif (pad) {\n\t\t\t\t\t\t\t\t\t\tpads.push(pad.update(padDevices[i]));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst nPad = new GamePad(padDevices[i], this.getMap(padDevices[i]));\n\t\t\t\t\t\t\t\t\t\tthis.current.push(nPad);\n\t\t\t\t\t\t\t\t\t\tpads.push(nPad);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn pads;\n\t\t}\n\t\tdestroy() {\n\t\t\t\twindow.removeEventListener('gamepadconnected', this._ongamepadconnectedHandler, false);\n\t\t\t\twindow.removeEventListener('gamepaddisconnected', this._ongamepaddisconnectedHandler, false);\n\t\t}\n\t\tgetMap(pad) {\n\t\t\t\treturn getMap(pad);\n\t\t}\n\t\tisPressed(orderIndex, button) {\n\t\t\t\treturn this.current[orderIndex]?.isPressed(button) || false;\n\t\t}\n\t\twasPressed(orderIndex, button) {\n\t\t\t\treturn this.current[orderIndex]?.wasPressed(button) || false;\n\t\t}\n\t\twasReleased(orderIndex, button) {\n\t\t\t\treturn this.current[orderIndex]?.wasReleased(button) || false;\n\t\t}\n\t\tgetAxis(orderIndex, axis) {\n\t\t\t\treturn this.current[orderIndex]?.getAxis(axis) || 0;\n\t\t}\n\t\tpulse(orderIndex, intensity, duration, options) {\n\t\t\t\tconst pad = this.current[orderIndex];\n\t\t\t\treturn pad ? pad.pulse(intensity, duration, options) : Promise.resolve(false);\n\t\t}\n\t\tpulseAll(intensity, duration, options) {\n\t\t\t\treturn Promise.all(this.current.map((pad)=>pad.pulse(intensity, duration, options)));\n\t\t}\n\t\tfindById(id) {\n\t\t\t\treturn this.current.find((gp)=>gp && gp.id === id) || null;\n\t\t}\n\t\tfindByIndex(index) {\n\t\t\t\treturn this.current.find((gp)=>gp && gp.index === index) || null;\n\t\t}\n}\n\nfunction getTouchTargetCoords(touch) {\n\t\tlet totalOffsetX = 0;\n\t\tlet totalOffsetY = 0;\n\t\tlet target = touch.target;\n\t\twhile(!(target instanceof HTMLElement) && target){\n\t\t\t\ttarget = target.parentNode;\n\t\t}\n\t\twhile(target){\n\t\t\t\ttotalOffsetX += target.offsetLeft - target.scrollLeft;\n\t\t\t\ttotalOffsetY += target.offsetTop - target.scrollTop;\n\t\t\t\ttarget = target.offsetParent;\n\t\t}\n\t\treturn {\n\t\t\t\tx: touch.pageX - totalOffsetX,\n\t\t\t\ty: touch.pageY - totalOffsetY\n\t\t};\n}\nclass Touch {\n\t\tconstructor(touch){\n\t\t\t\tconst coords = getTouchTargetCoords(touch);\n\t\t\t\tthis.id = touch.identifier;\n\t\t\t\tthis.x = coords.x;\n\t\t\t\tthis.y = coords.y;\n\t\t\t\tthis.target = touch.target;\n\t\t\t\tthis.touch = touch;\n\t\t}\n}\nclass TouchEvent {\n\t\tconstructor(device, event){\n\t\t\t\tthis.touches = [];\n\t\t\t\tthis.changedTouches = [];\n\t\t\t\tthis.element = event.target;\n\t\t\t\tthis.event = event;\n\t\t\t\tthis.touches = Array.from(event.touches).map((touch)=>new Touch(touch));\n\t\t\t\tthis.changedTouches = Array.from(event.changedTouches).map((touch)=>new Touch(touch));\n\t\t}\n\t\tgetTouchById(id, list) {\n\t\t\t\treturn list.find((touch)=>touch.id === id) || null;\n\t\t}\n}\n\nclass TouchDevice extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHSTART = 'touchstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHEND = 'touchend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHMOVE = 'touchmove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHCANCEL = 'touchcancel';\n\t\t}\n\t\tconstructor(element){\n\t\t\t\tsuper();\n\t\t\t\tthis._element = null;\n\t\t\t\tthis._startHandler = this._handleTouchStart.bind(this);\n\t\t\t\tthis._endHandler = this._handleTouchEnd.bind(this);\n\t\t\t\tthis._moveHandler = this._handleTouchMove.bind(this);\n\t\t\t\tthis._cancelHandler = this._handleTouchCancel.bind(this);\n\t\t\t\tthis.attach(element);\n\t\t}\n\t\tattach(element) {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('touchstart', this._startHandler, false);\n\t\t\t\tthis._element.addEventListener('touchend', this._endHandler, false);\n\t\t\t\tthis._element.addEventListener('touchmove', this._moveHandler, false);\n\t\t\t\tthis._element.addEventListener('touchcancel', this._cancelHandler, false);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.removeEventListener('touchstart', this._startHandler, false);\n\t\t\t\t\t\tthis._element.removeEventListener('touchend', this._endHandler, false);\n\t\t\t\t\t\tthis._element.removeEventListener('touchmove', this._moveHandler, false);\n\t\t\t\t\t\tthis._element.removeEventListener('touchcancel', this._cancelHandler, false);\n\t\t\t\t}\n\t\t\t\tthis._element = null;\n\t\t}\n\t\t_handleTouchStart(e) {\n\t\t\t\tthis.fire('touchstart', new TouchEvent(this, e));\n\t\t}\n\t\t_handleTouchEnd(e) {\n\t\t\t\tthis.fire('touchend', new TouchEvent(this, e));\n\t\t}\n\t\t_handleTouchMove(e) {\n\t\t\t\te.preventDefault();\n\t\t\t\tthis.fire('touchmove', new TouchEvent(this, e));\n\t\t}\n\t\t_handleTouchCancel(e) {\n\t\t\t\tthis.fire('touchcancel', new TouchEvent(this, e));\n\t\t}\n}\n\nclass Http {\n\t\tstatic{\n\t\t\t\tthis.ContentType = {\n\t\t\t\t\t\tAAC: 'audio/aac',\n\t\t\t\t\t\tBASIS: 'image/basis',\n\t\t\t\t\t\tBIN: 'application/octet-stream',\n\t\t\t\t\t\tDDS: 'image/dds',\n\t\t\t\t\t\tFORM_URLENCODED: 'application/x-www-form-urlencoded',\n\t\t\t\t\t\tGIF: 'image/gif',\n\t\t\t\t\t\tGLB: 'model/gltf-binary',\n\t\t\t\t\t\tJPEG: 'image/jpeg',\n\t\t\t\t\t\tJSON: 'application/json',\n\t\t\t\t\t\tMP3: 'audio/mpeg',\n\t\t\t\t\t\tMP4: 'audio/mp4',\n\t\t\t\t\t\tOGG: 'audio/ogg',\n\t\t\t\t\t\tOPUS: 'audio/ogg; codecs=\"opus\"',\n\t\t\t\t\t\tPNG: 'image/png',\n\t\t\t\t\t\tTEXT: 'text/plain',\n\t\t\t\t\t\tWAV: 'audio/x-wav',\n\t\t\t\t\t\tXML: 'application/xml'\n\t\t\t\t};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ResponseType = {\n\t\t\t\t\t\tTEXT: 'text',\n\t\t\t\t\t\tARRAY_BUFFER: 'arraybuffer',\n\t\t\t\t\t\tBLOB: 'blob',\n\t\t\t\t\t\tDOCUMENT: 'document',\n\t\t\t\t\t\tJSON: 'json'\n\t\t\t\t};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.binaryExtensions = [\n\t\t\t\t\t\t'.model',\n\t\t\t\t\t\t'.wav',\n\t\t\t\t\t\t'.ogg',\n\t\t\t\t\t\t'.mp3',\n\t\t\t\t\t\t'.mp4',\n\t\t\t\t\t\t'.m4a',\n\t\t\t\t\t\t'.aac',\n\t\t\t\t\t\t'.dds',\n\t\t\t\t\t\t'.basis',\n\t\t\t\t\t\t'.glb',\n\t\t\t\t\t\t'.opus'\n\t\t\t\t];\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.retryDelay = 100;\n\t\t}\n\t\tget(url, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\tconst result = this.request('GET', url, options, callback);\n\t\t\t\tconst { progress } = options;\n\t\t\t\tif (progress) {\n\t\t\t\t\t\tconst handler = (event)=>{\n\t\t\t\t\t\t\t\tif (event.lengthComputable) {\n\t\t\t\t\t\t\t\t\t\tprogress.fire('progress', event.loaded, event.total);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst endHandler = (event)=>{\n\t\t\t\t\t\t\t\thandler(event);\n\t\t\t\t\t\t\t\tresult.removeEventListener('loadstart', handler);\n\t\t\t\t\t\t\t\tresult.removeEventListener('progress', handler);\n\t\t\t\t\t\t\t\tresult.removeEventListener('loadend', endHandler);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tresult.addEventListener('loadstart', handler);\n\t\t\t\t\t\tresult.addEventListener('progress', handler);\n\t\t\t\t\t\tresult.addEventListener('loadend', endHandler);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tpost(url, data, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\toptions.postdata = data;\n\t\t\t\treturn this.request('POST', url, options, callback);\n\t\t}\n\t\tput(url, data, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\toptions.postdata = data;\n\t\t\t\treturn this.request('PUT', url, options, callback);\n\t\t}\n\t\tdel(url, options, callback) {\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\treturn this.request('DELETE', url, options, callback);\n\t\t}\n\t\trequest(method, url, options, callback) {\n\t\t\t\tlet uri, query, postdata;\n\t\t\t\tlet errored = false;\n\t\t\t\tif (typeof options === 'function') {\n\t\t\t\t\t\tcallback = options;\n\t\t\t\t\t\toptions = {};\n\t\t\t\t}\n\t\t\t\tif (options.retry) {\n\t\t\t\t\t\toptions = Object.assign({\n\t\t\t\t\t\t\t\tretries: 0,\n\t\t\t\t\t\t\t\tmaxRetries: 5\n\t\t\t\t\t\t}, options);\n\t\t\t\t}\n\t\t\t\toptions.callback = callback;\n\t\t\t\tif (options.async == null) {\n\t\t\t\t\t\toptions.async = true;\n\t\t\t\t}\n\t\t\t\tif (options.headers == null) {\n\t\t\t\t\t\toptions.headers = {};\n\t\t\t\t}\n\t\t\t\tif (options.postdata != null) {\n\t\t\t\t\t\tif (options.postdata instanceof Document) {\n\t\t\t\t\t\t\t\tpostdata = options.postdata;\n\t\t\t\t\t\t} else if (options.postdata instanceof FormData) {\n\t\t\t\t\t\t\t\tpostdata = options.postdata;\n\t\t\t\t\t\t} else if (options.postdata instanceof Object) {\n\t\t\t\t\t\t\t\tlet contentType = options.headers['Content-Type'];\n\t\t\t\t\t\t\t\tif (contentType === undefined) {\n\t\t\t\t\t\t\t\t\t\toptions.headers['Content-Type'] = Http.ContentType.FORM_URLENCODED;\n\t\t\t\t\t\t\t\t\t\tcontentType = options.headers['Content-Type'];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tswitch(contentType){\n\t\t\t\t\t\t\t\t\t\tcase Http.ContentType.FORM_URLENCODED:\n\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostdata = '';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet bFirstItem = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(const key in options.postdata){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (options.postdata.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (bFirstItem) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbFirstItem = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostdata += '&';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst encodedKey = encodeURIComponent(key);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst encodedValue = encodeURIComponent(options.postdata[key]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostdata += `${encodedKey}=${encodedValue}`;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tcase Http.ContentType.JSON:\n\t\t\t\t\t\t\t\t\t\t\t\tif (contentType == null) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toptions.headers['Content-Type'] = Http.ContentType.JSON;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tpostdata = JSON.stringify(options.postdata);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tpostdata = options.postdata;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.cache === false) {\n\t\t\t\t\t\tconst timestamp = now();\n\t\t\t\t\t\turi = new URI(url);\n\t\t\t\t\t\tif (!uri.query) {\n\t\t\t\t\t\t\t\turi.query = `ts=${timestamp}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\turi.query = `${uri.query}&ts=${timestamp}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\turl = uri.toString();\n\t\t\t\t}\n\t\t\t\tif (options.query) {\n\t\t\t\t\t\turi = new URI(url);\n\t\t\t\t\t\tquery = extend(uri.getQuery(), options.query);\n\t\t\t\t\t\turi.setQuery(query);\n\t\t\t\t\t\turl = uri.toString();\n\t\t\t\t}\n\t\t\t\tconst xhr = new XMLHttpRequest();\n\t\t\t\txhr.open(method, url, options.async);\n\t\t\t\txhr.withCredentials = options.withCredentials !== undefined ? options.withCredentials : false;\n\t\t\t\txhr.responseType = options.responseType || this._guessResponseType(url);\n\t\t\t\tfor(const header in options.headers){\n\t\t\t\t\t\tif (options.headers.hasOwnProperty(header)) {\n\t\t\t\t\t\t\t\txhr.setRequestHeader(header, options.headers[header]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\txhr.onreadystatechange = ()=>{\n\t\t\t\t\t\tthis._onReadyStateChange(method, url, options, xhr);\n\t\t\t\t};\n\t\t\t\txhr.onerror = ()=>{\n\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\terrored = true;\n\t\t\t\t};\n\t\t\t\ttry {\n\t\t\t\t\t\txhr.send(postdata);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t\tif (!errored) {\n\t\t\t\t\t\t\t\toptions.error(xhr.status, xhr, e);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn xhr;\n\t\t}\n\t\t_guessResponseType(url) {\n\t\t\t\tconst uri = new URI(url);\n\t\t\t\tconst ext = path.getExtension(uri.path).toLowerCase();\n\t\t\t\tif (Http.binaryExtensions.indexOf(ext) >= 0) {\n\t\t\t\t\t\treturn Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t} else if (ext === '.json') {\n\t\t\t\t\t\treturn Http.ResponseType.JSON;\n\t\t\t\t} else if (ext === '.xml') {\n\t\t\t\t\t\treturn Http.ResponseType.DOCUMENT;\n\t\t\t\t}\n\t\t\t\treturn Http.ResponseType.TEXT;\n\t\t}\n\t\t_isBinaryContentType(contentType) {\n\t\t\t\tconst binTypes = [\n\t\t\t\t\t\tHttp.ContentType.BASIS,\n\t\t\t\t\t\tHttp.ContentType.BIN,\n\t\t\t\t\t\tHttp.ContentType.DDS,\n\t\t\t\t\t\tHttp.ContentType.GLB,\n\t\t\t\t\t\tHttp.ContentType.MP3,\n\t\t\t\t\t\tHttp.ContentType.MP4,\n\t\t\t\t\t\tHttp.ContentType.OGG,\n\t\t\t\t\t\tHttp.ContentType.OPUS,\n\t\t\t\t\t\tHttp.ContentType.WAV\n\t\t\t\t];\n\t\t\t\tif (binTypes.indexOf(contentType) >= 0) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_isBinaryResponseType(responseType) {\n\t\t\t\treturn responseType === Http.ResponseType.ARRAY_BUFFER || responseType === Http.ResponseType.BLOB || responseType === Http.ResponseType.JSON;\n\t\t}\n\t\t_onReadyStateChange(method, url, options, xhr) {\n\t\t\t\tif (xhr.readyState === 4) {\n\t\t\t\t\t\tswitch(xhr.status){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (xhr.responseURL && xhr.responseURL.startsWith('file:///')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._onSuccess(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 200:\n\t\t\t\t\t\t\t\tcase 201:\n\t\t\t\t\t\t\t\tcase 206:\n\t\t\t\t\t\t\t\tcase 304:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tthis._onSuccess(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tthis._onError(method, url, options, xhr);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSuccess(method, url, options, xhr) {\n\t\t\t\tlet response;\n\t\t\t\tlet contentType;\n\t\t\t\tconst header = xhr.getResponseHeader('Content-Type');\n\t\t\t\tif (header) {\n\t\t\t\t\t\tconst parts = header.split(';');\n\t\t\t\t\t\tcontentType = parts[0].trim();\n\t\t\t\t}\n\t\t\t\ttry {\n\t\t\t\t\t\tif (this._isBinaryContentType(contentType) || this._isBinaryResponseType(xhr.responseType)) {\n\t\t\t\t\t\t\t\tresponse = xhr.response;\n\t\t\t\t\t\t} else if (contentType === Http.ContentType.JSON || url.split('?')[0].endsWith('.json')) {\n\t\t\t\t\t\t\t\tresponse = JSON.parse(xhr.responseText);\n\t\t\t\t\t\t} else if (xhr.responseType === Http.ResponseType.DOCUMENT || contentType === Http.ContentType.XML) {\n\t\t\t\t\t\t\t\tresponse = xhr.responseXML;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresponse = xhr.responseText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.callback(null, response);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\toptions.callback(err);\n\t\t\t\t}\n\t\t}\n\t\t_onError(method, url, options, xhr) {\n\t\t\t\tif (options.retrying) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (options.retry && options.retries < options.maxRetries) {\n\t\t\t\t\t\toptions.retries++;\n\t\t\t\t\t\toptions.retrying = true;\n\t\t\t\t\t\tconst retryDelay = math.clamp(Math.pow(2, options.retries) * Http.retryDelay, 0, options.maxRetryDelay || 5000);\n\t\t\t\t\t\tconsole.log(`${method}: ${url} - Error ${xhr.status}. Retrying in ${retryDelay} ms`);\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\toptions.retrying = false;\n\t\t\t\t\t\t\t\tthis.request(method, url, options, options.callback);\n\t\t\t\t\t\t}, retryDelay);\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.callback(xhr.status === 0 ? 'Network error' : xhr.status, null);\n\t\t\t\t}\n\t\t}\n}\nconst http = new Http();\n\nconst DISTANCE_LINEAR = 'linear';\nconst DISTANCE_INVERSE = 'inverse';\nconst DISTANCE_EXPONENTIAL = 'exponential';\n\nclass Listener {\n\t\tconstructor(manager){\n\t\t\t\tthis.position = new Vec3();\n\t\t\t\tthis.orientation = new Mat4();\n\t\t\t\tthis._manager = manager;\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this.position;\n\t\t}\n\t\tsetPosition(position) {\n\t\t\t\tthis.position.copy(position);\n\t\t\t\tconst listener = this.listener;\n\t\t\t\tif (listener) {\n\t\t\t\t\t\tif ('positionX' in listener) {\n\t\t\t\t\t\t\t\tlistener.positionX.value = position.x;\n\t\t\t\t\t\t\t\tlistener.positionY.value = position.y;\n\t\t\t\t\t\t\t\tlistener.positionZ.value = position.z;\n\t\t\t\t\t\t} else if (listener.setPosition) {\n\t\t\t\t\t\t\t\tlistener.setPosition(position.x, position.y, position.z);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetOrientation(orientation) {\n\t\t\t\tthis.orientation.copy(orientation);\n\t\t\t\tconst listener = this.listener;\n\t\t\t\tif (listener) {\n\t\t\t\t\t\tconst m = orientation.data;\n\t\t\t\t\t\tif ('forwardX' in listener) {\n\t\t\t\t\t\t\t\tlistener.forwardX.value = -m[8];\n\t\t\t\t\t\t\t\tlistener.forwardY.value = -m[9];\n\t\t\t\t\t\t\t\tlistener.forwardZ.value = -m[10];\n\t\t\t\t\t\t\t\tlistener.upX.value = m[4];\n\t\t\t\t\t\t\t\tlistener.upY.value = m[5];\n\t\t\t\t\t\t\t\tlistener.upZ.value = m[6];\n\t\t\t\t\t\t} else if (listener.setOrientation) {\n\t\t\t\t\t\t\t\tlistener.setOrientation(-m[8], -m[9], -m[10], m[4], m[5], m[6]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetOrientation() {\n\t\t\t\treturn this.orientation;\n\t\t}\n\t\tget listener() {\n\t\t\t\tconst context = this._manager.context;\n\t\t\t\treturn context ? context.listener : null;\n\t\t}\n}\n\nconst CONTEXT_STATE_RUNNING = 'running';\nconst USER_INPUT_EVENTS = [\n\t\t'click',\n\t\t'touchstart',\n\t\t'mousedown'\n];\nclass SoundManager extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis._context = null;\n\t\t\t\tthis.AudioContext = typeof AudioContext !== 'undefined' && AudioContext || typeof webkitAudioContext !== 'undefined' && webkitAudioContext;\n\t\t\t\tif (!this.AudioContext) ;\n\t\t\t\tthis._unlockHandlerFunc = this._unlockHandler.bind(this);\n\t\t\t\tthis._userSuspended = false;\n\t\t\t\tthis.listener = new Listener(this);\n\t\t\t\tthis._volume = 1;\n\t\t}\n\t\tset volume(volume) {\n\t\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\t\tthis._volume = volume;\n\t\t\t\tthis.fire('volumechange', volume);\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\tget suspended() {\n\t\t\t\treturn this._userSuspended;\n\t\t}\n\t\tget context() {\n\t\t\t\tif (!this._context && this.AudioContext) {\n\t\t\t\t\t\tthis._context = new this.AudioContext();\n\t\t\t\t\t\tif (this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\t\t\tthis._registerUnlockListeners();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._context;\n\t\t}\n\t\tsuspend() {\n\t\t\t\tif (!this._userSuspended) {\n\t\t\t\t\t\tthis._userSuspended = true;\n\t\t\t\t\t\tif (this._context && this._context.state === CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\t\t\tthis._suspend();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tresume() {\n\t\t\t\tif (this._userSuspended) {\n\t\t\t\t\t\tthis._userSuspended = false;\n\t\t\t\t\t\tif (this._context && this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\t\t\tthis._resume();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.fire('destroy');\n\t\t\t\tif (this._context) {\n\t\t\t\t\t\tthis._removeUnlockListeners();\n\t\t\t\t\t\tthis._context?.close();\n\t\t\t\t\t\tthis._context = null;\n\t\t\t\t}\n\t\t}\n\t\t_resume() {\n\t\t\t\tthis._context.resume().then(()=>{\n\t\t\t\t\t\tconst source = this._context.createBufferSource();\n\t\t\t\t\t\tsource.buffer = this._context.createBuffer(1, 1, this._context.sampleRate);\n\t\t\t\t\t\tsource.connect(this._context.destination);\n\t\t\t\t\t\tsource.start(0);\n\t\t\t\t\t\tsource.onended = (event)=>{\n\t\t\t\t\t\t\t\tsource.disconnect(0);\n\t\t\t\t\t\t\t\tthis.fire('resume');\n\t\t\t\t\t\t};\n\t\t\t\t}, (e)=>{}).catch((e)=>{});\n\t\t}\n\t\t_suspend() {\n\t\t\t\tthis._context.suspend().then(()=>{\n\t\t\t\t\t\tthis.fire('suspend');\n\t\t\t\t}, (e)=>{}).catch((e)=>{});\n\t\t}\n\t\t_unlockHandler() {\n\t\t\t\tthis._removeUnlockListeners();\n\t\t\t\tif (!this._userSuspended && this._context.state !== CONTEXT_STATE_RUNNING) {\n\t\t\t\t\t\tthis._resume();\n\t\t\t\t}\n\t\t}\n\t\t_registerUnlockListeners() {\n\t\t\t\tUSER_INPUT_EVENTS.forEach((eventName)=>{\n\t\t\t\t\t\twindow.addEventListener(eventName, this._unlockHandlerFunc, false);\n\t\t\t\t});\n\t\t}\n\t\t_removeUnlockListeners() {\n\t\t\t\tUSER_INPUT_EVENTS.forEach((eventName)=>{\n\t\t\t\t\t\twindow.removeEventListener(eventName, this._unlockHandlerFunc, false);\n\t\t\t\t});\n\t\t}\n}\n\nclass Sound {\n\t\tconstructor(resource){\n\t\t\t\tif (resource instanceof Audio) {\n\t\t\t\t\t\tthis.audio = resource;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.buffer = resource;\n\t\t\t\t}\n\t\t}\n\t\tget duration() {\n\t\t\t\tlet duration = 0;\n\t\t\t\tif (this.buffer) {\n\t\t\t\t\t\tduration = this.buffer.duration;\n\t\t\t\t} else if (this.audio) {\n\t\t\t\t\t\tduration = this.audio.duration;\n\t\t\t\t}\n\t\t\t\treturn duration || 0;\n\t\t}\n}\n\nfunction hasAudioContext() {\n\t\treturn !!(typeof AudioContext !== 'undefined' || typeof webkitAudioContext !== 'undefined');\n}\n\nconst STATE_PLAYING = 0;\nconst STATE_PAUSED = 1;\nconst STATE_STOPPED = 2;\nfunction capTime(time, duration) {\n\t\treturn time % duration || 0;\n}\nclass SoundInstance extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tconstructor(manager, sound, options){\n\t\t\t\tsuper(), this.source = null;\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._volume = options.volume !== undefined ? math.clamp(Number(options.volume) || 0, 0, 1) : 1;\n\t\t\t\tthis._pitch = options.pitch !== undefined ? Math.max(0.01, Number(options.pitch) || 0) : 1;\n\t\t\t\tthis._loop = !!(options.loop !== undefined ? options.loop : false);\n\t\t\t\tthis._sound = sound;\n\t\t\t\tthis._state = STATE_STOPPED;\n\t\t\t\tthis._suspended = false;\n\t\t\t\tthis._suspendEndEvent = 0;\n\t\t\t\tthis._suspendInstanceEvents = false;\n\t\t\t\tthis._playWhenLoaded = true;\n\t\t\t\tthis._startTime = Math.max(0, Number(options.startTime) || 0);\n\t\t\t\tthis._duration = Math.max(0, Number(options.duration) || 0);\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tthis._onPlayCallback = options.onPlay;\n\t\t\t\tthis._onPauseCallback = options.onPause;\n\t\t\t\tthis._onResumeCallback = options.onResume;\n\t\t\t\tthis._onStopCallback = options.onStop;\n\t\t\t\tthis._onEndCallback = options.onEnd;\n\t\t\t\tif (hasAudioContext()) {\n\t\t\t\t\t\tthis._startedAt = 0;\n\t\t\t\t\t\tthis._currentTime = 0;\n\t\t\t\t\t\tthis._currentOffset = 0;\n\t\t\t\t\t\tthis._inputNode = null;\n\t\t\t\t\t\tthis._connectorNode = null;\n\t\t\t\t\t\tthis._firstNode = null;\n\t\t\t\t\t\tthis._lastNode = null;\n\t\t\t\t\t\tthis._waitingContextSuspension = false;\n\t\t\t\t\t\tthis._initializeNodes();\n\t\t\t\t\t\tthis._endedHandler = this._onEnded.bind(this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._isReady = false;\n\t\t\t\t\t\tthis._loadedMetadataHandler = this._onLoadedMetadata.bind(this);\n\t\t\t\t\t\tthis._timeUpdateHandler = this._onTimeUpdate.bind(this);\n\t\t\t\t\t\tthis._endedHandler = this._onEnded.bind(this);\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t}\n\t\tset currentTime(value) {\n\t\t\t\tif (value < 0) return;\n\t\t\t\tif (this._state === STATE_PLAYING) {\n\t\t\t\t\t\tconst suspend = this._suspendInstanceEvents;\n\t\t\t\t\t\tthis._suspendInstanceEvents = true;\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tthis._startOffset = value;\n\t\t\t\t\t\tthis.play();\n\t\t\t\t\t\tthis._suspendInstanceEvents = suspend;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._startOffset = value;\n\t\t\t\t\t\tthis._currentTime = value;\n\t\t\t\t}\n\t\t}\n\t\tget currentTime() {\n\t\t\t\tif (this._startOffset !== null) {\n\t\t\t\t\t\treturn this._startOffset;\n\t\t\t\t}\n\t\t\t\tif (this._state === STATE_PAUSED) {\n\t\t\t\t\t\treturn this._currentTime;\n\t\t\t\t}\n\t\t\t\tif (this._state === STATE_STOPPED || !this.source) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tthis._updateCurrentTime();\n\t\t\t\treturn this._currentTime;\n\t\t}\n\t\tset duration(value) {\n\t\t\t\tthis._duration = Math.max(0, Number(value) || 0);\n\t\t\t\tconst isPlaying = this._state === STATE_PLAYING;\n\t\t\t\tthis.stop();\n\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t}\n\t\tget duration() {\n\t\t\t\tif (!this._sound) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tif (this._duration) {\n\t\t\t\t\t\treturn capTime(this._duration, this._sound.duration);\n\t\t\t\t}\n\t\t\t\treturn this._sound.duration;\n\t\t}\n\t\tget isPaused() {\n\t\t\t\treturn this._state === STATE_PAUSED;\n\t\t}\n\t\tget isPlaying() {\n\t\t\t\treturn this._state === STATE_PLAYING;\n\t\t}\n\t\tget isStopped() {\n\t\t\t\treturn this._state === STATE_STOPPED;\n\t\t}\n\t\tget isSuspended() {\n\t\t\t\treturn this._suspended;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = !!value;\n\t\t\t\tif (this.source) {\n\t\t\t\t\t\tthis.source.loop = this._loop;\n\t\t\t\t}\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tset pitch(pitch) {\n\t\t\t\tthis._currentOffset = this.currentTime;\n\t\t\t\tthis._startedAt = this._manager.context.currentTime;\n\t\t\t\tthis._pitch = Math.max(Number(pitch) || 0, 0.01);\n\t\t\t\tif (this.source) {\n\t\t\t\t\t\tthis.source.playbackRate.value = this._pitch;\n\t\t\t\t}\n\t\t}\n\t\tget pitch() {\n\t\t\t\treturn this._pitch;\n\t\t}\n\t\tset sound(value) {\n\t\t\t\tthis._sound = value;\n\t\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t}\n\t\tget sound() {\n\t\t\t\treturn this._sound;\n\t\t}\n\t\tset startTime(value) {\n\t\t\t\tthis._startTime = Math.max(0, Number(value) || 0);\n\t\t\t\tconst isPlaying = this._state === STATE_PLAYING;\n\t\t\t\tthis.stop();\n\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t}\n\t\tget startTime() {\n\t\t\t\treturn this._startTime;\n\t\t}\n\t\tset volume(volume) {\n\t\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\t\tthis._volume = volume;\n\t\t\t\tif (this.gain) {\n\t\t\t\t\t\tthis.gain.gain.value = volume * this._manager.volume;\n\t\t\t\t}\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\t_onPlay() {\n\t\t\t\tthis.fire('play');\n\t\t\t\tif (this._onPlayCallback) {\n\t\t\t\t\t\tthis._onPlayCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onPause() {\n\t\t\t\tthis.fire('pause');\n\t\t\t\tif (this._onPauseCallback) {\n\t\t\t\t\t\tthis._onPauseCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onResume() {\n\t\t\t\tthis.fire('resume');\n\t\t\t\tif (this._onResumeCallback) {\n\t\t\t\t\t\tthis._onResumeCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onStop() {\n\t\t\t\tthis.fire('stop');\n\t\t\t\tif (this._onStopCallback) {\n\t\t\t\t\t\tthis._onStopCallback(this);\n\t\t\t\t}\n\t\t}\n\t\t_onEnded() {\n\t\t\t\tif (this._suspendEndEvent > 0) {\n\t\t\t\t\t\tthis._suspendEndEvent--;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fire('end');\n\t\t\t\tif (this._onEndCallback) {\n\t\t\t\t\t\tthis._onEndCallback(this);\n\t\t\t\t}\n\t\t\t\tthis.stop();\n\t\t}\n\t\t_onManagerVolumeChange() {\n\t\t\t\tthis.volume = this._volume;\n\t\t}\n\t\t_onManagerSuspend() {\n\t\t\t\tif (this._state === STATE_PLAYING && !this._suspended) {\n\t\t\t\t\t\tthis._suspended = true;\n\t\t\t\t\t\tthis.pause();\n\t\t\t\t}\n\t\t}\n\t\t_onManagerResume() {\n\t\t\t\tif (this._suspended) {\n\t\t\t\t\t\tthis._suspended = false;\n\t\t\t\t\t\tthis.resume();\n\t\t\t\t}\n\t\t}\n\t\t_initializeNodes() {\n\t\t\t\tthis.gain = this._manager.context.createGain();\n\t\t\t\tthis._inputNode = this.gain;\n\t\t\t\tthis._connectorNode = this.gain;\n\t\t\t\tthis._connectorNode.connect(this._manager.context.destination);\n\t\t}\n\t\tplay() {\n\t\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this._manager.suspended) {\n\t\t\t\t\t\tthis._manager.once('resume', this._playAudioImmediate, this);\n\t\t\t\t\t\tthis._waitingContextSuspension = true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._playAudioImmediate();\n\t\t\t\treturn true;\n\t\t}\n\t\t_playAudioImmediate() {\n\t\t\t\tthis._waitingContextSuspension = false;\n\t\t\t\tif (this._state !== STATE_PLAYING) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.source) {\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t\t\tlet offset = capTime(this._startOffset, this.duration);\n\t\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tif (this._duration) {\n\t\t\t\t\t\tthis.source.start(0, offset, this._duration);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.source.start(0, offset);\n\t\t\t\t}\n\t\t\t\tthis._startedAt = this._manager.context.currentTime;\n\t\t\t\tthis._currentTime = 0;\n\t\t\t\tthis._currentOffset = offset;\n\t\t\t\tthis.volume = this._volume;\n\t\t\t\tthis.loop = this._loop;\n\t\t\t\tthis.pitch = this._pitch;\n\t\t\t\tthis._manager.on('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\tthis._manager.on('suspend', this._onManagerSuspend, this);\n\t\t\t\tthis._manager.on('resume', this._onManagerResume, this);\n\t\t\t\tthis._manager.on('destroy', this._onManagerDestroy, this);\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onPlay();\n\t\t\t\t}\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (this._state !== STATE_PLAYING) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._state = STATE_PAUSED;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tthis._updateCurrentTime();\n\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\tthis.source.stop(0);\n\t\t\t\tthis.source = null;\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onPause();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tresume() {\n\t\t\t\tif (this._state !== STATE_PAUSED) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tlet offset = this.currentTime;\n\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tif (!this.source) {\n\t\t\t\t\t\tthis._createSource();\n\t\t\t\t}\n\t\t\t\tif (this._startOffset !== null) {\n\t\t\t\t\t\toffset = capTime(this._startOffset, this.duration);\n\t\t\t\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t}\n\t\t\t\tif (this._duration) {\n\t\t\t\t\t\tthis.source.start(0, offset, this._duration);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.source.start(0, offset);\n\t\t\t\t}\n\t\t\t\tthis._startedAt = this._manager.context.currentTime;\n\t\t\t\tthis._currentOffset = offset;\n\t\t\t\tthis.volume = this._volume;\n\t\t\t\tthis.loop = this._loop;\n\t\t\t\tthis.pitch = this._pitch;\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onResume();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tstop() {\n\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\tif (this._state === STATE_STOPPED) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst wasPlaying = this._state === STATE_PLAYING;\n\t\t\t\tthis._state = STATE_STOPPED;\n\t\t\t\tif (this._waitingContextSuspension) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tthis._manager.off('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\tthis._manager.off('suspend', this._onManagerSuspend, this);\n\t\t\t\tthis._manager.off('resume', this._onManagerResume, this);\n\t\t\t\tthis._manager.off('destroy', this._onManagerDestroy, this);\n\t\t\t\tthis._startedAt = 0;\n\t\t\t\tthis._currentTime = 0;\n\t\t\t\tthis._currentOffset = 0;\n\t\t\t\tthis._startOffset = null;\n\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\tif (wasPlaying && this.source) {\n\t\t\t\t\t\tthis.source.stop(0);\n\t\t\t\t}\n\t\t\t\tthis.source = null;\n\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\tthis._onStop();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tsetExternalNodes(firstNode, lastNode) {\n\t\t\t\tif (!firstNode) {\n\t\t\t\t\t\tconsole.error('The firstNode must be a valid Audio Node');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!lastNode) {\n\t\t\t\t\t\tlastNode = firstNode;\n\t\t\t\t}\n\t\t\t\tconst speakers = this._manager.context.destination;\n\t\t\t\tif (this._firstNode !== firstNode) {\n\t\t\t\t\t\tif (this._firstNode) {\n\t\t\t\t\t\t\t\tthis._connectorNode.disconnect(this._firstNode);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._connectorNode.disconnect(speakers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._firstNode = firstNode;\n\t\t\t\t\t\tthis._connectorNode.connect(firstNode);\n\t\t\t\t}\n\t\t\t\tif (this._lastNode !== lastNode) {\n\t\t\t\t\t\tif (this._lastNode) {\n\t\t\t\t\t\t\t\tthis._lastNode.disconnect(speakers);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._lastNode = lastNode;\n\t\t\t\t\t\tthis._lastNode.connect(speakers);\n\t\t\t\t}\n\t\t}\n\t\tclearExternalNodes() {\n\t\t\t\tconst speakers = this._manager.context.destination;\n\t\t\t\tif (this._firstNode) {\n\t\t\t\t\t\tthis._connectorNode.disconnect(this._firstNode);\n\t\t\t\t\t\tthis._firstNode = null;\n\t\t\t\t}\n\t\t\t\tif (this._lastNode) {\n\t\t\t\t\t\tthis._lastNode.disconnect(speakers);\n\t\t\t\t\t\tthis._lastNode = null;\n\t\t\t\t}\n\t\t\t\tthis._connectorNode.connect(speakers);\n\t\t}\n\t\tgetExternalNodes() {\n\t\t\t\treturn [\n\t\t\t\t\t\tthis._firstNode,\n\t\t\t\t\t\tthis._lastNode\n\t\t\t\t];\n\t\t}\n\t\t_createSource() {\n\t\t\t\tif (!this._sound) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst context = this._manager.context;\n\t\t\t\tif (this._sound.buffer) {\n\t\t\t\t\t\tthis.source = context.createBufferSource();\n\t\t\t\t\t\tthis.source.buffer = this._sound.buffer;\n\t\t\t\t\t\tthis.source.connect(this._inputNode);\n\t\t\t\t\t\tthis.source.onended = this._endedHandler;\n\t\t\t\t\t\tthis.source.loopStart = capTime(this._startTime, this.source.buffer.duration);\n\t\t\t\t\t\tif (this._duration) {\n\t\t\t\t\t\t\t\tthis.source.loopEnd = Math.max(this.source.loopStart, capTime(this._startTime + this._duration, this.source.buffer.duration));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.source;\n\t\t}\n\t\t_updateCurrentTime() {\n\t\t\t\tthis._currentTime = capTime((this._manager.context.currentTime - this._startedAt) * this._pitch + this._currentOffset, this.duration);\n\t\t}\n\t\t_onManagerDestroy() {\n\t\t\t\tif (this.source && this._state === STATE_PLAYING) {\n\t\t\t\t\t\tthis.source.stop(0);\n\t\t\t\t\t\tthis.source = null;\n\t\t\t\t}\n\t\t}\n}\nif (!hasAudioContext()) {\n\t\tObject.assign(SoundInstance.prototype, {\n\t\t\t\tplay: function() {\n\t\t\t\t\t\tif (this._state !== STATE_STOPPED) {\n\t\t\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.source) {\n\t\t\t\t\t\t\t\tif (!this._createSource()) {\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.volume = this._volume;\n\t\t\t\t\t\tthis.pitch = this._pitch;\n\t\t\t\t\t\tthis.loop = this._loop;\n\t\t\t\t\t\tthis.source.play();\n\t\t\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tthis._manager.on('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\t\t\tthis._manager.on('suspend', this._onManagerSuspend, this);\n\t\t\t\t\t\tthis._manager.on('resume', this._onManagerResume, this);\n\t\t\t\t\t\tthis._manager.on('destroy', this._onManagerDestroy, this);\n\t\t\t\t\t\tif (this._manager.suspended) {\n\t\t\t\t\t\t\t\tthis._onManagerSuspend();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\tthis._onPlay();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tpause: function() {\n\t\t\t\t\t\tif (!this.source || this._state !== STATE_PLAYING) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tthis._state = STATE_PAUSED;\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\tthis._onPause();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tresume: function() {\n\t\t\t\t\t\tif (!this.source || this._state !== STATE_PAUSED) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._state = STATE_PLAYING;\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tif (this.source.paused) {\n\t\t\t\t\t\t\t\tthis.source.play();\n\t\t\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\t\t\tthis._onResume();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tstop: function() {\n\t\t\t\t\t\tif (!this.source || this._state === STATE_STOPPED) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._manager.off('volumechange', this._onManagerVolumeChange, this);\n\t\t\t\t\t\tthis._manager.off('suspend', this._onManagerSuspend, this);\n\t\t\t\t\t\tthis._manager.off('resume', this._onManagerResume, this);\n\t\t\t\t\t\tthis._manager.off('destroy', this._onManagerDestroy, this);\n\t\t\t\t\t\tthis._suspendEndEvent++;\n\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\tthis._playWhenLoaded = false;\n\t\t\t\t\t\tthis._state = STATE_STOPPED;\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\tif (!this._suspendInstanceEvents) {\n\t\t\t\t\t\t\t\tthis._onStop();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tsetExternalNodes: function() {},\n\t\t\t\tclearExternalNodes: function() {},\n\t\t\t\tgetExternalNodes: function() {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t\t_onLoadedMetadata: function() {\n\t\t\t\t\t\tthis.source.removeEventListener('loadedmetadata', this._loadedMetadataHandler);\n\t\t\t\t\t\tthis._isReady = true;\n\t\t\t\t\t\tlet offset = capTime(this._startOffset, this.duration);\n\t\t\t\t\t\toffset = capTime(this._startTime + offset, this._sound.duration);\n\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\tthis.source.currentTime = offset;\n\t\t\t\t},\n\t\t\t\t_createSource: function() {\n\t\t\t\t\t\tif (this._sound && this._sound.audio) {\n\t\t\t\t\t\t\t\tthis._isReady = false;\n\t\t\t\t\t\t\t\tthis.source = this._sound.audio.cloneNode(true);\n\t\t\t\t\t\t\t\tthis.source.addEventListener('loadedmetadata', this._loadedMetadataHandler);\n\t\t\t\t\t\t\t\tthis.source.addEventListener('timeupdate', this._timeUpdateHandler);\n\t\t\t\t\t\t\t\tthis.source.onended = this._endedHandler;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this.source;\n\t\t\t\t},\n\t\t\t\t_onTimeUpdate: function() {\n\t\t\t\t\t\tif (!this._duration) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.source.currentTime > capTime(this._startTime + this._duration, this.source.duration)) {\n\t\t\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\t\t\tthis.source.currentTime = capTime(this._startTime, this.source.duration);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.source.removeEventListener('timeupdate', this._timeUpdateHandler);\n\t\t\t\t\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\t\t\t\t\tthis._onEnded();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t_onManagerDestroy: function() {\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tthis.source.pause();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'volume', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._volume;\n\t\t\t\t},\n\t\t\t\tset: function(volume) {\n\t\t\t\t\t\tvolume = math.clamp(volume, 0, 1);\n\t\t\t\t\t\tthis._volume = volume;\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tthis.source.volume = volume * this._manager.volume;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'pitch', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._pitch;\n\t\t\t\t},\n\t\t\t\tset: function(pitch) {\n\t\t\t\t\t\tthis._pitch = Math.max(Number(pitch) || 0, 0.01);\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tthis.source.playbackRate = this._pitch;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'sound', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._sound;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tthis._sound = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance.prototype, 'currentTime', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\tif (this._startOffset !== null) {\n\t\t\t\t\t\t\t\treturn this._startOffset;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._state === STATE_STOPPED || !this.source) {\n\t\t\t\t\t\t\t\treturn 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this.source.currentTime - this._startTime;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tif (value < 0) return;\n\t\t\t\t\t\tthis._startOffset = value;\n\t\t\t\t\t\tif (this.source && this._isReady) {\n\t\t\t\t\t\t\t\tthis.source.currentTime = capTime(this._startTime + capTime(value, this.duration), this._sound.duration);\n\t\t\t\t\t\t\t\tthis._startOffset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n}\n\nconst MAX_DISTANCE = 10000;\nclass SoundInstance3d extends SoundInstance {\n\t\tconstructor(manager, sound, options = {}){\n\t\t\t\tsuper(manager, sound, options), this._position = new Vec3(), this._velocity = new Vec3();\n\t\t\t\tif (options.position) {\n\t\t\t\t\t\tthis.position = options.position;\n\t\t\t\t}\n\t\t\t\tthis.maxDistance = options.maxDistance !== undefined ? Number(options.maxDistance) : MAX_DISTANCE;\n\t\t\t\tthis.refDistance = options.refDistance !== undefined ? Number(options.refDistance) : 1;\n\t\t\t\tthis.rollOffFactor = options.rollOffFactor !== undefined ? Number(options.rollOffFactor) : 1;\n\t\t\t\tthis.distanceModel = options.distanceModel !== undefined ? options.distanceModel : DISTANCE_LINEAR;\n\t\t}\n\t\t_initializeNodes() {\n\t\t\t\tthis.gain = this._manager.context.createGain();\n\t\t\t\tthis.panner = this._manager.context.createPanner();\n\t\t\t\tthis.panner.connect(this.gain);\n\t\t\t\tthis._inputNode = this.panner;\n\t\t\t\tthis._connectorNode = this.gain;\n\t\t\t\tthis._connectorNode.connect(this._manager.context.destination);\n\t\t}\n\t\tset position(value) {\n\t\t\t\tthis._position.copy(value);\n\t\t\t\tconst panner = this.panner;\n\t\t\t\tif ('positionX' in panner) {\n\t\t\t\t\t\tpanner.positionX.value = value.x;\n\t\t\t\t\t\tpanner.positionY.value = value.y;\n\t\t\t\t\t\tpanner.positionZ.value = value.z;\n\t\t\t\t} else if (panner.setPosition) {\n\t\t\t\t\t\tpanner.setPosition(value.x, value.y, value.z);\n\t\t\t\t}\n\t\t}\n\t\tget position() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tset velocity(velocity) {\n\t\t\t\tthis._velocity.copy(velocity);\n\t\t}\n\t\tget velocity() {\n\t\t\t\treturn this._velocity;\n\t\t}\n\t\tset maxDistance(value) {\n\t\t\t\tthis.panner.maxDistance = value;\n\t\t}\n\t\tget maxDistance() {\n\t\t\t\treturn this.panner.maxDistance;\n\t\t}\n\t\tset refDistance(value) {\n\t\t\t\tthis.panner.refDistance = value;\n\t\t}\n\t\tget refDistance() {\n\t\t\t\treturn this.panner.refDistance;\n\t\t}\n\t\tset rollOffFactor(value) {\n\t\t\t\tthis.panner.rolloffFactor = value;\n\t\t}\n\t\tget rollOffFactor() {\n\t\t\t\treturn this.panner.rolloffFactor;\n\t\t}\n\t\tset distanceModel(value) {\n\t\t\t\tthis.panner.distanceModel = value;\n\t\t}\n\t\tget distanceModel() {\n\t\t\t\treturn this.panner.distanceModel;\n\t\t}\n}\nif (!hasAudioContext()) {\n\t\tlet offset = new Vec3();\n\t\tconst fallOff = function(posOne, posTwo, refDistance, maxDistance, rollOffFactor, distanceModel) {\n\t\t\t\toffset = offset.sub2(posOne, posTwo);\n\t\t\t\tconst distance = offset.length();\n\t\t\t\tif (distance < refDistance) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (distance > maxDistance) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tlet result = 0;\n\t\t\t\tif (distanceModel === DISTANCE_LINEAR) {\n\t\t\t\t\t\tresult = 1 - rollOffFactor * (distance - refDistance) / (maxDistance - refDistance);\n\t\t\t\t} else if (distanceModel === DISTANCE_INVERSE) {\n\t\t\t\t\t\tresult = refDistance / (refDistance + rollOffFactor * (distance - refDistance));\n\t\t\t\t} else if (distanceModel === DISTANCE_EXPONENTIAL) {\n\t\t\t\t\t\tresult = Math.pow(distance / refDistance, -rollOffFactor);\n\t\t\t\t}\n\t\t\t\treturn math.clamp(result, 0, 1);\n\t\t};\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'position', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._position;\n\t\t\t\t},\n\t\t\t\tset: function(position) {\n\t\t\t\t\t\tthis._position.copy(position);\n\t\t\t\t\t\tif (this.source) {\n\t\t\t\t\t\t\t\tconst listener = this._manager.listener;\n\t\t\t\t\t\t\t\tconst lpos = listener.getPosition();\n\t\t\t\t\t\t\t\tconst factor = fallOff(lpos, this._position, this.refDistance, this.maxDistance, this.rollOffFactor, this.distanceModel);\n\t\t\t\t\t\t\t\tconst v = this.volume;\n\t\t\t\t\t\t\t\tthis.source.volume = v * factor * this._manager.volume;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'maxDistance', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._maxDistance;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._maxDistance = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'refDistance', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._refDistance;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._refDistance = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'rollOffFactor', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._rollOffFactor;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._rollOffFactor = value;\n\t\t\t\t}\n\t\t});\n\t\tObject.defineProperty(SoundInstance3d.prototype, 'distanceModel', {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._distanceModel;\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._distanceModel = value;\n\t\t\t\t}\n\t\t});\n}\n\nconst BLEND_SUBTRACTIVE = 0;\nconst BLEND_ADDITIVE = 1;\nconst BLEND_NORMAL = 2;\nconst BLEND_NONE = 3;\nconst BLEND_PREMULTIPLIED = 4;\nconst BLEND_MULTIPLICATIVE = 5;\nconst BLEND_ADDITIVEALPHA = 6;\nconst BLEND_MULTIPLICATIVE2X = 7;\nconst BLEND_SCREEN = 8;\nconst BLEND_MIN = 9;\nconst BLEND_MAX = 10;\nconst blendNames = {\n\t\t[BLEND_SUBTRACTIVE]: 'SUBTRACTIVE',\n\t\t[BLEND_ADDITIVE]: 'ADDITIVE',\n\t\t[BLEND_NORMAL]: 'NORMAL',\n\t\t[BLEND_NONE]: 'NONE',\n\t\t[BLEND_PREMULTIPLIED]: 'PREMULTIPLIED',\n\t\t[BLEND_MULTIPLICATIVE]: 'MULTIPLICATIVE',\n\t\t[BLEND_ADDITIVEALPHA]: 'ADDITIVEALPHA',\n\t\t[BLEND_MULTIPLICATIVE2X]: 'MULTIPLICATIVE2X',\n\t\t[BLEND_SCREEN]: 'SCREEN',\n\t\t[BLEND_MIN]: 'MIN',\n\t\t[BLEND_MAX]: 'MAX'\n};\nconst FOG_NONE = 'none';\nconst FOG_LINEAR = 'linear';\nconst FOG_EXP = 'exp';\nconst FOG_EXP2 = 'exp2';\nconst FRESNEL_NONE = 0;\nconst FRESNEL_SCHLICK = 2;\nconst fresnelNames = {\n\t\t[FRESNEL_NONE]: 'NONE',\n\t\t[FRESNEL_SCHLICK]: 'SCHLICK'\n};\nconst LAYER_HUD = 0;\nconst LAYER_GIZMO = 1;\nconst LAYER_WORLD = 15;\nconst LAYERID_WORLD = 0;\nconst LAYERID_DEPTH = 1;\nconst LAYERID_SKYBOX = 2;\nconst LAYERID_IMMEDIATE = 3;\nconst LAYERID_UI = 4;\nconst LIGHTTYPE_DIRECTIONAL = 0;\nconst LIGHTTYPE_OMNI = 1;\nconst LIGHTTYPE_POINT = LIGHTTYPE_OMNI;\nconst LIGHTTYPE_SPOT = 2;\nconst LIGHTTYPE_COUNT = 3;\nconst lightTypeNames = {\n\t\t[LIGHTTYPE_DIRECTIONAL]: 'DIRECTIONAL',\n\t\t[LIGHTTYPE_OMNI]: 'OMNI',\n\t\t[LIGHTTYPE_SPOT]: 'SPOT'\n};\nconst LIGHT_COLOR_DIVIDER = 100;\nconst LIGHTSHAPE_PUNCTUAL = 0;\nconst LIGHTSHAPE_RECT = 1;\nconst LIGHTSHAPE_DISK = 2;\nconst LIGHTSHAPE_SPHERE = 3;\nconst lightShapeNames = {\n\t\t[LIGHTSHAPE_PUNCTUAL]: 'PUNCTUAL',\n\t\t[LIGHTSHAPE_RECT]: 'RECT',\n\t\t[LIGHTSHAPE_DISK]: 'DISK',\n\t\t[LIGHTSHAPE_SPHERE]: 'SPHERE'\n};\nconst LIGHTFALLOFF_LINEAR = 0;\nconst LIGHTFALLOFF_INVERSESQUARED = 1;\nconst lightFalloffNames = {\n\t\t[LIGHTFALLOFF_LINEAR]: 'LINEAR',\n\t\t[LIGHTFALLOFF_INVERSESQUARED]: 'INVERSESQUARED'\n};\nconst SHADOW_PCF3_32F = 0;\nconst SHADOW_PCF3 = 0;\nconst SHADOW_VSM_16F = 2;\nconst SHADOW_VSM16 = 2;\nconst SHADOW_VSM_32F = 3;\nconst SHADOW_VSM32 = 3;\nconst SHADOW_PCF5_32F = 4;\nconst SHADOW_PCF5 = 4;\nconst SHADOW_PCF1_32F = 5;\nconst SHADOW_PCF1 = 5;\nconst SHADOW_PCSS_32F = 6;\nconst SHADOW_PCF1_16F = 7;\nconst SHADOW_PCF3_16F = 8;\nconst SHADOW_PCF5_16F = 9;\nconst shadowTypeInfo = new Map([\n\t\t[\n\t\t\t\tSHADOW_PCF1_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF1_32F',\n\t\t\t\t\t\tkind: 'PCF1',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF3_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF3_32F',\n\t\t\t\t\t\tkind: 'PCF3',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF5_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF5_32F',\n\t\t\t\t\t\tkind: 'PCF5',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF1_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF1_16F',\n\t\t\t\t\t\tkind: 'PCF1',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH16,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF3_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF3_16F',\n\t\t\t\t\t\tkind: 'PCF3',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH16,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCF5_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCF5_16F',\n\t\t\t\t\t\tkind: 'PCF5',\n\t\t\t\t\t\tformat: PIXELFORMAT_DEPTH16,\n\t\t\t\t\t\tpcf: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_VSM_16F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'VSM_16F',\n\t\t\t\t\t\tkind: 'VSM',\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA16F,\n\t\t\t\t\t\tvsm: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_VSM_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'VSM_32F',\n\t\t\t\t\t\tkind: 'VSM',\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32F,\n\t\t\t\t\t\tvsm: true\n\t\t\t\t}\n\t\t],\n\t\t[\n\t\t\t\tSHADOW_PCSS_32F,\n\t\t\t\t{\n\t\t\t\t\t\tname: 'PCSS_32F',\n\t\t\t\t\t\tkind: 'PCSS',\n\t\t\t\t\t\tformat: PIXELFORMAT_R32F,\n\t\t\t\t\t\tpcss: true\n\t\t\t\t}\n\t\t]\n]);\nconst SHADOW_CASCADE_0 = 1;\nconst SHADOW_CASCADE_1 = 2;\nconst SHADOW_CASCADE_2 = 4;\nconst SHADOW_CASCADE_3 = 8;\nconst SHADOW_CASCADE_ALL = 255;\nconst BLUR_BOX = 0;\nconst BLUR_GAUSSIAN = 1;\nconst PARTICLESORT_NONE = 0;\nconst PARTICLESORT_DISTANCE = 1;\nconst PARTICLESORT_NEWER_FIRST = 2;\nconst PARTICLESORT_OLDER_FIRST = 3;\nconst PARTICLEMODE_GPU = 0;\nconst PARTICLEMODE_CPU = 1;\nconst EMITTERSHAPE_BOX = 0;\nconst EMITTERSHAPE_SPHERE = 1;\nconst PARTICLEORIENTATION_SCREEN = 0;\nconst PARTICLEORIENTATION_WORLD = 1;\nconst PARTICLEORIENTATION_EMITTER = 2;\nconst PROJECTION_PERSPECTIVE = 0;\nconst PROJECTION_ORTHOGRAPHIC = 1;\nconst RENDERSTYLE_SOLID = 0;\nconst RENDERSTYLE_WIREFRAME = 1;\nconst RENDERSTYLE_POINTS = 2;\nconst CUBEPROJ_NONE = 0;\nconst CUBEPROJ_BOX = 1;\nconst cubemaProjectionNames = {\n\t\t[CUBEPROJ_NONE]: 'NONE',\n\t\t[CUBEPROJ_BOX]: 'BOX'\n};\nconst DETAILMODE_MUL = 'mul';\nconst DETAILMODE_ADD = 'add';\nconst DETAILMODE_SCREEN = 'screen';\nconst DETAILMODE_OVERLAY = 'overlay';\nconst DETAILMODE_MIN = 'min';\nconst DETAILMODE_MAX = 'max';\nconst GAMMA_NONE = 0;\nconst GAMMA_SRGB = 1;\nconst gammaNames = {\n\t\t[GAMMA_NONE]: 'NONE',\n\t\t[GAMMA_SRGB]: 'SRGB'\n};\nconst TONEMAP_LINEAR = 0;\nconst TONEMAP_FILMIC = 1;\nconst TONEMAP_HEJL = 2;\nconst TONEMAP_ACES = 3;\nconst TONEMAP_ACES2 = 4;\nconst TONEMAP_NEUTRAL = 5;\nconst TONEMAP_NONE = 6;\nconst tonemapNames = [\n\t\t'LINEAR',\n\t\t'FILMIC',\n\t\t'HEJL',\n\t\t'ACES',\n\t\t'ACES2',\n\t\t'NEUTRAL',\n\t\t'NONE'\n];\nconst SPECOCC_NONE = 0;\nconst SPECOCC_AO = 1;\nconst SPECOCC_GLOSSDEPENDENT = 2;\nconst specularOcclusionNames = {\n\t\t[SPECOCC_NONE]: 'NONE',\n\t\t[SPECOCC_AO]: 'AO',\n\t\t[SPECOCC_GLOSSDEPENDENT]: 'GLOSSDEPENDENT'\n};\nconst REFLECTIONSRC_NONE = 'none';\nconst REFLECTIONSRC_ENVATLAS = 'envAtlas';\nconst REFLECTIONSRC_ENVATLASHQ = 'envAtlasHQ';\nconst REFLECTIONSRC_CUBEMAP = 'cubeMap';\nconst REFLECTIONSRC_SPHEREMAP = 'sphereMap';\nconst reflectionSrcNames = {\n\t\t[REFLECTIONSRC_NONE]: 'NONE',\n\t\t[REFLECTIONSRC_ENVATLAS]: 'ENVATLAS',\n\t\t[REFLECTIONSRC_ENVATLASHQ]: 'ENVATLASHQ',\n\t\t[REFLECTIONSRC_CUBEMAP]: 'CUBEMAP',\n\t\t[REFLECTIONSRC_SPHEREMAP]: 'SPHEREMAP'\n};\nconst AMBIENTSRC_AMBIENTSH = 'ambientSH';\nconst AMBIENTSRC_ENVALATLAS = 'envAtlas';\nconst AMBIENTSRC_CONSTANT = 'constant';\nconst ambientSrcNames = {\n\t\t[AMBIENTSRC_AMBIENTSH]: 'AMBIENTSH',\n\t\t[AMBIENTSRC_ENVALATLAS]: 'ENVALATLAS',\n\t\t[AMBIENTSRC_CONSTANT]: 'CONSTANT'\n};\nconst SHADERDEF_NOSHADOW = 1;\nconst SHADERDEF_SKIN = 2;\nconst SHADERDEF_UV0 = 4;\nconst SHADERDEF_UV1 = 8;\nconst SHADERDEF_VCOLOR = 16;\nconst SHADERDEF_INSTANCING = 32;\nconst SHADERDEF_LM = 64;\nconst SHADERDEF_DIRLM = 128;\nconst SHADERDEF_SCREENSPACE = 256;\nconst SHADERDEF_TANGENTS = 512;\nconst SHADERDEF_MORPH_POSITION = 1024;\nconst SHADERDEF_MORPH_NORMAL = 2048;\nconst SHADERDEF_LMAMBIENT = 4096;\nconst SHADERDEF_MORPH_TEXTURE_BASED_INT = 8192;\nconst SHADERDEF_BATCH = 16384;\nconst SHADOWUPDATE_NONE = 0;\nconst SHADOWUPDATE_THISFRAME = 1;\nconst SHADOWUPDATE_REALTIME = 2;\nconst MASK_AFFECT_DYNAMIC = 1;\nconst MASK_AFFECT_LIGHTMAPPED = 2;\nconst MASK_BAKE = 4;\nconst SHADER_FORWARD = 0;\nconst SHADER_PREPASS = 1;\nconst SHADER_SHADOW = 2;\nconst SHADER_PICK = 3;\nconst SHADERPASS_FORWARD = 'forward';\nconst SHADERPASS_ALBEDO = 'debug_albedo';\nconst SHADERPASS_WORLDNORMAL = 'debug_world_normal';\nconst SHADERPASS_OPACITY = 'debug_opacity';\nconst SHADERPASS_SPECULARITY = 'debug_specularity';\nconst SHADERPASS_GLOSS = 'debug_gloss';\nconst SHADERPASS_METALNESS = 'debug_metalness';\nconst SHADERPASS_AO = 'debug_ao';\nconst SHADERPASS_EMISSION = 'debug_emission';\nconst SHADERPASS_LIGHTING = 'debug_lighting';\nconst SHADERPASS_UV0 = 'debug_uv0';\nconst SPRITE_RENDERMODE_SIMPLE = 0;\nconst SPRITE_RENDERMODE_SLICED = 1;\nconst SPRITE_RENDERMODE_TILED = 2;\nconst spriteRenderModeNames = {\n\t\t[SPRITE_RENDERMODE_SIMPLE]: 'SIMPLE',\n\t\t[SPRITE_RENDERMODE_SLICED]: 'SLICED',\n\t\t[SPRITE_RENDERMODE_TILED]: 'TILED'\n};\nconst BAKE_COLOR = 0;\nconst BAKE_COLORDIR = 1;\nconst VIEW_CENTER = 0;\nconst VIEW_LEFT = 1;\nconst VIEW_RIGHT = 2;\nconst SORTMODE_NONE = 0;\nconst SORTMODE_MANUAL = 1;\nconst SORTMODE_MATERIALMESH = 2;\nconst SORTMODE_BACK2FRONT = 3;\nconst SORTMODE_FRONT2BACK = 4;\nconst SORTMODE_CUSTOM = 5;\nconst ASPECT_AUTO = 0;\nconst ASPECT_MANUAL = 1;\nconst ORIENTATION_HORIZONTAL = 0;\nconst ORIENTATION_VERTICAL = 1;\nconst SKYTYPE_INFINITE = 'infinite';\nconst SKYTYPE_BOX = 'box';\nconst SKYTYPE_DOME = 'dome';\nconst DITHER_NONE = 'none';\nconst DITHER_BAYER8 = 'bayer8';\nconst DITHER_BLUENOISE = 'bluenoise';\nconst DITHER_IGNNOISE = 'ignnoise';\nconst ditherNames = {\n\t\t[DITHER_NONE]: 'NONE',\n\t\t[DITHER_BAYER8]: 'BAYER8',\n\t\t[DITHER_BLUENOISE]: 'BLUENOISE',\n\t\t[DITHER_IGNNOISE]: 'IGNNOISE'\n};\nconst EVENT_PRERENDER = 'prerender';\nconst EVENT_POSTRENDER = 'postrender';\nconst EVENT_PRERENDER_LAYER = 'prerender:layer';\nconst EVENT_POSTRENDER_LAYER = 'postrender:layer';\nconst EVENT_PRECULL = 'precull';\nconst EVENT_POSTCULL = 'postcull';\nconst EVENT_CULL_END = 'cull:end';\n\nclass ShaderProcessorOptions {\n\t\tconstructor(viewUniformFormat, viewBindGroupFormat, vertexFormat){\n\t\t\t\tthis.uniformFormats = [];\n\t\t\t\tthis.bindGroupFormats = [];\n\t\t\t\tthis.uniformFormats[BINDGROUP_VIEW] = viewUniformFormat;\n\t\t\t\tthis.bindGroupFormats[BINDGROUP_VIEW] = viewBindGroupFormat;\n\t\t\t\tthis.vertexFormat = vertexFormat;\n\t\t}\n\t\thasUniform(name) {\n\t\t\t\tfor(let i = 0; i < this.uniformFormats.length; i++){\n\t\t\t\t\t\tconst uniformFormat = this.uniformFormats[i];\n\t\t\t\t\t\tif (uniformFormat?.get(name)) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\thasTexture(name) {\n\t\t\t\tfor(let i = 0; i < this.bindGroupFormats.length; i++){\n\t\t\t\t\t\tconst groupFormat = this.bindGroupFormats[i];\n\t\t\t\t\t\tif (groupFormat?.getTexture(name)) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tgetVertexElement(semantic) {\n\t\t\t\treturn this.vertexFormat?.elements.find((element)=>element.name === semantic);\n\t\t}\n\t\tgenerateKey(device) {\n\t\t\t\tlet key = JSON.stringify(this.uniformFormats) + JSON.stringify(this.bindGroupFormats);\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tkey += this.vertexFormat?.shaderProcessingHashString;\n\t\t\t\t}\n\t\t\t\treturn key;\n\t\t}\n}\n\nconst programLibraryDeviceCache = new DeviceCache();\nfunction getProgramLibrary(device) {\n\t\tconst library = programLibraryDeviceCache.get(device);\n\t\treturn library;\n}\nfunction setProgramLibrary(device, library) {\n\t\tprogramLibraryDeviceCache.get(device, ()=>{\n\t\t\t\treturn library;\n\t\t});\n}\n\nclass ShaderGenerator {\n\t\tstatic definesHash(defines) {\n\t\t\t\tconst sortedArray = Array.from(defines).sort((a, b)=>a[0] > b[0] ? 1 : -1);\n\t\t\t\treturn hashCode(JSON.stringify(sortedArray));\n\t\t}\n}\n\nconst shaderPassDeviceCache = new DeviceCache();\nclass ShaderPassInfo {\n\t\tconstructor(name, index, options = {}){\n\t\t\t\tthis.defines = new Map();\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.index = index;\n\t\t\t\tObject.assign(this, options);\n\t\t\t\tthis.buildShaderDefines();\n\t\t}\n\t\tbuildShaderDefines() {\n\t\t\t\tlet keyword;\n\t\t\t\tif (this.isShadow) {\n\t\t\t\t\t\tkeyword = 'SHADOW';\n\t\t\t\t} else if (this.isForward) {\n\t\t\t\t\t\tkeyword = 'FORWARD';\n\t\t\t\t} else if (this.index === SHADER_PICK) {\n\t\t\t\t\t\tkeyword = 'PICK';\n\t\t\t\t}\n\t\t\t\tthis.defines.set(`${keyword}_PASS`, '');\n\t\t\t\tthis.defines.set(`${this.name.toUpperCase()}_PASS`, '');\n\t\t}\n}\nclass ShaderPass {\n\t\tconstructor(){\n\t\t\t\tthis.passesNamed = new Map();\n\t\t\t\tthis.passesIndexed = [];\n\t\t\t\tthis.nextIndex = 0;\n\t\t\t\tconst add = (name, index, options)=>{\n\t\t\t\t\t\tthis.allocate(name, options);\n\t\t\t\t};\n\t\t\t\tadd('forward', SHADER_FORWARD, {\n\t\t\t\t\t\tisForward: true\n\t\t\t\t});\n\t\t\t\tadd('prepass');\n\t\t\t\tadd('shadow');\n\t\t\t\tadd('pick');\n\t\t}\n\t\tstatic get(device) {\n\t\t\t\treturn shaderPassDeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new ShaderPass();\n\t\t\t\t});\n\t\t}\n\t\tallocate(name, options) {\n\t\t\t\tlet info = this.passesNamed.get(name);\n\t\t\t\tif (info === undefined) {\n\t\t\t\t\t\tinfo = new ShaderPassInfo(name, this.nextIndex, options);\n\t\t\t\t\t\tthis.passesNamed.set(info.name, info);\n\t\t\t\t\t\tthis.passesIndexed[info.index] = info;\n\t\t\t\t\t\tthis.nextIndex++;\n\t\t\t\t}\n\t\t\t\treturn info;\n\t\t}\n\t\tgetByIndex(index) {\n\t\t\t\tconst info = this.passesIndexed[index];\n\t\t\t\treturn info;\n\t\t}\n\t\tgetByName(name) {\n\t\t\t\treturn this.passesNamed.get(name);\n\t\t}\n}\n\nclass ShaderChunkMap extends Map {\n\t\tset(name, code) {\n\t\t\t\tif (!this.has(name) || this.get(name) !== code) {\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t\t\treturn super.set(name, code);\n\t\t}\n\t\tadd(object, override = true) {\n\t\t\t\tfor (const [key, value] of Object.entries(object)){\n\t\t\t\t\t\tif (override || !this.has(key)) {\n\t\t\t\t\t\t\t\tthis.set(key, value);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tdelete(name) {\n\t\t\t\tconst existed = this.has(name);\n\t\t\t\tconst result = super.delete(name);\n\t\t\t\tif (existed && result) {\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tclear() {\n\t\t\t\tif (this.size > 0) {\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t\t\tsuper.clear();\n\t\t}\n\t\tmarkDirty() {\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis._keyDirty = true;\n\t\t}\n\t\tisDirty() {\n\t\t\t\treturn this._dirty;\n\t\t}\n\t\tresetDirty() {\n\t\t\t\tthis._dirty = false;\n\t\t}\n\t\tget key() {\n\t\t\t\tif (this._keyDirty) {\n\t\t\t\t\t\tthis._keyDirty = false;\n\t\t\t\t\t\tthis._key = Array.from(this.entries()).sort(([a], [b])=>a < b ? -1 : a > b ? 1 : 0).map(([k, v])=>`${k}=${hashCode(v)}`).join(',');\n\t\t\t\t}\n\t\t\t\treturn this._key;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.clear();\n\t\t\t\tfor (const [key, value] of source){\n\t\t\t\t\t\tthis.set(key, value);\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._keyDirty = false, this._key = '';\n\t\t}\n}\n\nconst _chunksCache = new DeviceCache();\nclass ShaderChunks {\n\t\tstatic get(device, shaderLanguage = SHADERLANGUAGE_GLSL) {\n\t\t\t\tconst cache = _chunksCache.get(device, ()=>{\n\t\t\t\t\t\treturn new ShaderChunks();\n\t\t\t\t});\n\t\t\t\treturn shaderLanguage === SHADERLANGUAGE_GLSL ? cache.glsl : cache.wgsl;\n\t\t}\n\t\tget useWGSL() {\n\t\t\t\treturn this.glsl.size === 0 || this.wgsl.size > 0;\n\t\t}\n\t\tget key() {\n\t\t\t\treturn `GLSL:${this.glsl.key}|WGSL:${this.wgsl.key}|API:${this.version}`;\n\t\t}\n\t\tisDirty() {\n\t\t\t\treturn this.glsl.isDirty() || this.wgsl.isDirty();\n\t\t}\n\t\tresetDirty() {\n\t\t\t\tthis.glsl.resetDirty();\n\t\t\t\tthis.wgsl.resetDirty();\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.version = source.version;\n\t\t\t\tthis.glsl.copy(source.glsl);\n\t\t\t\tthis.wgsl.copy(source.wgsl);\n\t\t\t\treturn this;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.glsl = new ShaderChunkMap();\n\t\t\t\tthis.wgsl = new ShaderChunkMap();\n\t\t\t\tthis.version = '';\n\t\t}\n}\n\nclass MapUtils {\n\t\tstatic merge(...maps) {\n\t\t\t\tconst result = new Map(maps[0] ?? []);\n\t\t\t\tfor(let i = 1; i < maps.length; i++){\n\t\t\t\t\t\tconst map = maps[i];\n\t\t\t\t\t\tif (map) {\n\t\t\t\t\t\t\t\tfor (const [key, value] of map){\n\t\t\t\t\t\t\t\t\t\tresult.set(key, value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass ShaderGeneratorPassThrough extends ShaderGenerator {\n\t\tconstructor(key, shaderDefinition){\n\t\t\t\tsuper();\n\t\t\t\tthis.key = key;\n\t\t\t\tthis.shaderDefinition = shaderDefinition;\n\t\t}\n\t\tgenerateKey(options) {\n\t\t\t\treturn this.key;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\treturn this.shaderDefinition;\n\t\t}\n}\nclass ShaderUtils {\n\t\tstatic createShader(device, options) {\n\t\t\t\tconst programLibrary = getProgramLibrary(device);\n\t\t\t\tlet shader = programLibrary.getCachedShader(options.uniqueName);\n\t\t\t\tif (!shader) {\n\t\t\t\t\t\tconst wgsl = device.isWebGPU && (!!options.vertexWGSL || !!options.vertexChunk) && (!!options.fragmentWGSL || !!options.fragmentChunk);\n\t\t\t\t\t\tconst chunksMap = ShaderChunks.get(device, wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\t\t\tconst vertexCode = options.vertexChunk ? chunksMap.get(options.vertexChunk) : wgsl ? options.vertexWGSL : options.vertexGLSL;\n\t\t\t\t\t\tconst fragmentCode = options.fragmentChunk ? chunksMap.get(options.fragmentChunk) : wgsl ? options.fragmentWGSL : options.fragmentGLSL;\n\t\t\t\t\t\tconst fragmentIncludes = MapUtils.merge(chunksMap, options.fragmentIncludes);\n\t\t\t\t\t\tconst vertexIncludes = MapUtils.merge(chunksMap, options.vertexIncludes);\n\t\t\t\t\t\tshader = new Shader(device, ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\t\t\tname: options.uniqueName,\n\t\t\t\t\t\t\t\tshaderLanguage: wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL,\n\t\t\t\t\t\t\t\tattributes: options.attributes,\n\t\t\t\t\t\t\t\tvertexCode: vertexCode,\n\t\t\t\t\t\t\t\tfragmentCode: fragmentCode,\n\t\t\t\t\t\t\t\tuseTransformFeedback: options.useTransformFeedback,\n\t\t\t\t\t\t\t\tvertexIncludes: vertexIncludes,\n\t\t\t\t\t\t\t\tvertexDefines: options.vertexDefines,\n\t\t\t\t\t\t\t\tfragmentIncludes: fragmentIncludes,\n\t\t\t\t\t\t\t\tfragmentDefines: options.fragmentDefines,\n\t\t\t\t\t\t\t\tfragmentOutputTypes: options.fragmentOutputTypes\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tprogramLibrary.setCachedShader(options.uniqueName, shader);\n\t\t\t\t}\n\t\t\t\treturn shader;\n\t\t}\n\t\tstatic getCoreDefines(material, params) {\n\t\t\t\tconst defines = new Map(material.defines);\n\t\t\t\tparams.cameraShaderParams.defines.forEach((value, key)=>defines.set(key, value));\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(params.device).getByIndex(params.pass);\n\t\t\t\tshaderPassInfo.defines.forEach((value, key)=>defines.set(key, value));\n\t\t\t\treturn defines;\n\t\t}\n\t\tstatic processShader(shader, processingOptions) {\n\t\t\t\tconst shaderDefinition = shader.definition;\n\t\t\t\tconst name = shaderDefinition.name ?? 'shader';\n\t\t\t\tconst key = `${name}-id-${shader.id}`;\n\t\t\t\tconst materialGenerator = new ShaderGeneratorPassThrough(key, shaderDefinition);\n\t\t\t\tconst libraryModuleName = 'shader';\n\t\t\t\tconst library = getProgramLibrary(shader.device);\n\t\t\t\tlibrary.register(libraryModuleName, materialGenerator);\n\t\t\t\tconst variant = library.getProgram(libraryModuleName, {}, processingOptions);\n\t\t\t\tlibrary.unregister(libraryModuleName);\n\t\t\t\treturn variant;\n\t\t}\n\t\tstatic addScreenDepthChunkDefines(device, cameraShaderParams, defines) {\n\t\t\t\tif (cameraShaderParams.sceneDepthMapLinear) {\n\t\t\t\t\t\tdefines.set('SCENE_DEPTHMAP_LINEAR', '');\n\t\t\t\t}\n\t\t\t\tif (device.textureFloatRenderable) {\n\t\t\t\t\t\tdefines.set('SCENE_DEPTHMAP_FLOAT', '');\n\t\t\t\t}\n\t\t}\n}\nfunction createShader(device, vsName, fsName, useTransformFeedback = false, shaderDefinitionOptions = {}) {}\nfunction createShaderFromCode(device, vsCode, fsCode, uniqueName, attributes, useTransformFeedback = false, shaderDefinitionOptions = {}) {\n\t\tif (typeof useTransformFeedback === 'boolean') {\n\t\t\t\tshaderDefinitionOptions.useTransformFeedback = useTransformFeedback;\n\t\t} else if (typeof useTransformFeedback === 'object') {\n\t\t\t\tshaderDefinitionOptions = {\n\t\t\t\t\t\t...shaderDefinitionOptions,\n\t\t\t\t\t\t...useTransformFeedback\n\t\t\t\t};\n\t\t}\n\t\tconst programLibrary = getProgramLibrary(device);\n\t\tlet shader = programLibrary.getCachedShader(uniqueName);\n\t\tif (!shader) {\n\t\t\t\tshader = new Shader(device, ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\t...shaderDefinitionOptions,\n\t\t\t\t\t\tname: uniqueName,\n\t\t\t\t\t\tvertexCode: vsCode,\n\t\t\t\t\t\tfragmentCode: fsCode,\n\t\t\t\t\t\tattributes: attributes\n\t\t\t\t}));\n\t\t\t\tprogramLibrary.setCachedShader(uniqueName, shader);\n\t\t}\n\t\treturn shader;\n}\n\nconst _quadPrimitive = {\n\t\ttype: PRIMITIVE_TRISTRIP,\n\t\tbase: 0,\n\t\tbaseVertex: 0,\n\t\tcount: 4,\n\t\tindexed: false\n};\nconst _tempViewport = new Vec4();\nconst _tempScissor = new Vec4();\nconst _dynamicBindGroup$1 = new DynamicBindGroup();\nclass QuadRender {\n\t\tconstructor(shader){\n\t\t\t\tconst device = shader.device;\n\t\t\t\tthis.shader = shader;\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tconst processingOptions = new ShaderProcessorOptions();\n\t\t\t\t\t\tthis.shader = ShaderUtils.processShader(shader, processingOptions);\n\t\t\t\t\t\tconst ubFormat = this.shader.meshUniformBufferFormat;\n\t\t\t\t\t\tif (ubFormat) {\n\t\t\t\t\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, ubFormat, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst bindGroupFormat = this.shader.meshBindGroupFormat;\n\t\t\t\t\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.uniformBuffer?.destroy();\n\t\t\t\tthis.uniformBuffer = null;\n\t\t\t\tthis.bindGroup?.destroy();\n\t\t\t\tthis.bindGroup = null;\n\t\t}\n\t\trender(viewport, scissor) {\n\t\t\t\tconst device = this.shader.device;\n\t\t\t\tif (viewport) {\n\t\t\t\t\t\t_tempViewport.set(device.vx, device.vy, device.vw, device.vh);\n\t\t\t\t\t\t_tempScissor.set(device.sx, device.sy, device.sw, device.sh);\n\t\t\t\t\t\tscissor = scissor ?? viewport;\n\t\t\t\t\t\tdevice.setViewport(viewport.x, viewport.y, viewport.z, viewport.w);\n\t\t\t\t\t\tdevice.setScissor(scissor.x, scissor.y, scissor.z, scissor.w);\n\t\t\t\t}\n\t\t\t\tdevice.setVertexBuffer(device.quadVertexBuffer);\n\t\t\t\tconst shader = this.shader;\n\t\t\t\tdevice.setShader(shader);\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_VIEW, device.emptyBindGroup);\n\t\t\t\t\t\tconst bindGroup = this.bindGroup;\n\t\t\t\t\t\tbindGroup.update();\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH, bindGroup);\n\t\t\t\t\t\tconst uniformBuffer = this.uniformBuffer;\n\t\t\t\t\t\tif (uniformBuffer) {\n\t\t\t\t\t\t\t\tuniformBuffer.update(_dynamicBindGroup$1);\n\t\t\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, _dynamicBindGroup$1.bindGroup, _dynamicBindGroup$1.offsets);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, device.emptyBindGroup);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdevice.draw(_quadPrimitive);\n\t\t\t\tif (viewport) {\n\t\t\t\t\t\tdevice.setViewport(_tempViewport.x, _tempViewport.y, _tempViewport.z, _tempViewport.w);\n\t\t\t\t\t\tdevice.setScissor(_tempScissor.x, _tempScissor.y, _tempScissor.z, _tempScissor.w);\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassQuad extends RenderPass {\n\t\tconstructor(device, quad, rect, scissorRect){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.quad = quad;\n\t\t\t\tthis.rect = rect;\n\t\t\t\tthis.scissorRect = scissorRect;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { device } = this;\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\tthis.quad.render(this.rect, this.scissorRect);\n\t\t}\n}\n\nconst _tempRect = new Vec4();\nfunction drawQuadWithShader(device, target, shader, rect, scissorRect) {\n\t\tconst quad = new QuadRender(shader);\n\t\tif (!rect) {\n\t\t\t\trect = _tempRect;\n\t\t\t\trect.x = 0;\n\t\t\t\trect.y = 0;\n\t\t\t\trect.z = target ? target.width : device.width;\n\t\t\t\trect.w = target ? target.height : device.height;\n\t\t}\n\t\tconst renderPass = new RenderPassQuad(device, quad, rect, scissorRect);\n\t\trenderPass.init(target);\n\t\trenderPass.colorOps.clear = false;\n\t\trenderPass.depthStencilOps.clearDepth = false;\n\t\tif (device.isWebGPU && target === null && device.samples > 1) {\n\t\t\t\trenderPass.colorOps.store = true;\n\t\t}\n\t\trenderPass.render();\n\t\tquad.destroy();\n}\n\nclass Batch {\n\t\tconstructor(meshInstances, dynamic, batchGroupId){\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.origMeshInstances = meshInstances;\n\t\t\t\tthis.dynamic = dynamic;\n\t\t\t\tthis.batchGroupId = batchGroupId;\n\t\t}\n\t\tdestroy(scene, layers) {\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tthis.removeFromLayers(scene, layers);\n\t\t\t\t\t\tthis.meshInstance.destroy();\n\t\t\t\t\t\tthis.meshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\taddToLayers(scene, layers) {\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveFromLayers(scene, layers) {\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateBoundingBox() {\n\t\t\t\tthis._aabb.copy(this.origMeshInstances[0].aabb);\n\t\t\t\tfor(let i = 1; i < this.origMeshInstances.length; i++){\n\t\t\t\t\t\tthis._aabb.add(this.origMeshInstances[i].aabb);\n\t\t\t\t}\n\t\t\t\tthis.meshInstance.aabb = this._aabb;\n\t\t\t\tthis.meshInstance._aabbVer = 0;\n\t\t}\n\t\tget model() {\n\t\t\t\treturn undefined;\n\t\t}\n}\n\nclass BatchGroup {\n\t\tconstructor(id, name, dynamic, maxAabbSize, layers = [\n\t\t\t\tLAYERID_WORLD\n\t\t]){\n\t\t\t\tthis._ui = false;\n\t\t\t\tthis._sprite = false;\n\t\t\t\tthis._obj = {\n\t\t\t\t\t\tmodel: [],\n\t\t\t\t\t\telement: [],\n\t\t\t\t\t\tsprite: [],\n\t\t\t\t\t\trender: []\n\t\t\t\t};\n\t\t\t\tthis.id = id;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.dynamic = dynamic;\n\t\t\t\tthis.maxAabbSize = maxAabbSize;\n\t\t\t\tthis.layers = layers;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.MODEL = 'model';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.ELEMENT = 'element';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.SPRITE = 'sprite';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.RENDER = 'render';\n\t\t}\n}\n\nconst _invMatrix = new Mat4();\nclass SkinInstance {\n\t\tconstructor(skin){\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis._rootBone = null;\n\t\t\t\tthis._skinUpdateIndex = -1;\n\t\t\t\tthis._updateBeforeCull = true;\n\t\t\t\tif (skin) {\n\t\t\t\t\t\tthis.initSkin(skin);\n\t\t\t\t}\n\t\t}\n\t\tset rootBone(rootBone) {\n\t\t\t\tthis._rootBone = rootBone;\n\t\t}\n\t\tget rootBone() {\n\t\t\t\treturn this._rootBone;\n\t\t}\n\t\tinit(device, numBones) {\n\t\t\t\tconst numPixels = numBones * 3;\n\t\t\t\tlet width = Math.ceil(Math.sqrt(numPixels));\n\t\t\t\twidth = math.roundUp(width, 3);\n\t\t\t\tconst height = Math.ceil(numPixels / width);\n\t\t\t\tthis.boneTexture = new Texture(device, {\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32F,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\tname: 'skin'\n\t\t\t\t});\n\t\t\t\tthis.matrixPalette = this.boneTexture.lock({\n\t\t\t\t\t\tmode: TEXTURELOCK_READ\n\t\t\t\t});\n\t\t\t\tthis.boneTexture.unlock();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.boneTexture) {\n\t\t\t\t\t\tthis.boneTexture.destroy();\n\t\t\t\t\t\tthis.boneTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tresolve(rootBone, entity) {\n\t\t\t\tthis.rootBone = rootBone;\n\t\t\t\tconst skin = this.skin;\n\t\t\t\tconst bones = [];\n\t\t\t\tfor(let j = 0; j < skin.boneNames.length; j++){\n\t\t\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\t\t\tlet bone = rootBone.findByName(boneName);\n\t\t\t\t\t\tif (!bone) {\n\t\t\t\t\t\t\t\tbone = entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbones.push(bone);\n\t\t\t\t}\n\t\t\t\tthis.bones = bones;\n\t\t}\n\t\tinitSkin(skin) {\n\t\t\t\tthis.skin = skin;\n\t\t\t\tthis.bones = [];\n\t\t\t\tconst numBones = skin.inverseBindPose.length;\n\t\t\t\tthis.init(skin.device, numBones);\n\t\t\t\tthis.matrices = [];\n\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\tthis.matrices[i] = new Mat4();\n\t\t\t\t}\n\t\t}\n\t\tuploadBones(device) {\n\t\t\t\tthis.boneTexture.upload();\n\t\t}\n\t\t_updateMatrices(rootNode, skinUpdateIndex) {\n\t\t\t\tif (this._skinUpdateIndex !== skinUpdateIndex) {\n\t\t\t\t\t\tthis._skinUpdateIndex = skinUpdateIndex;\n\t\t\t\t\t\t_invMatrix.copy(rootNode.getWorldTransform()).invert();\n\t\t\t\t\t\tfor(let i = this.bones.length - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\tthis.matrices[i].mulAffine2(_invMatrix, this.bones[i].getWorldTransform());\n\t\t\t\t\t\t\t\tthis.matrices[i].mulAffine2(this.matrices[i], this.skin.inverseBindPose[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateMatrices(rootNode, skinUpdateIndex) {\n\t\t\t\tif (this._updateBeforeCull) {\n\t\t\t\t\t\tthis._updateMatrices(rootNode, skinUpdateIndex);\n\t\t\t\t}\n\t\t}\n\t\tupdateMatrixPalette(rootNode, skinUpdateIndex) {\n\t\t\t\tthis._updateMatrices(rootNode, skinUpdateIndex);\n\t\t\t\tconst mp = this.matrixPalette;\n\t\t\t\tconst count = this.bones.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst pe = this.matrices[i].data;\n\t\t\t\t\t\tconst base = i * 12;\n\t\t\t\t\t\tmp[base] = pe[0];\n\t\t\t\t\t\tmp[base + 1] = pe[4];\n\t\t\t\t\t\tmp[base + 2] = pe[8];\n\t\t\t\t\t\tmp[base + 3] = pe[12];\n\t\t\t\t\t\tmp[base + 4] = pe[1];\n\t\t\t\t\t\tmp[base + 5] = pe[5];\n\t\t\t\t\t\tmp[base + 6] = pe[9];\n\t\t\t\t\t\tmp[base + 7] = pe[13];\n\t\t\t\t\t\tmp[base + 8] = pe[2];\n\t\t\t\t\t\tmp[base + 9] = pe[6];\n\t\t\t\t\t\tmp[base + 10] = pe[10];\n\t\t\t\t\t\tmp[base + 11] = pe[14];\n\t\t\t\t}\n\t\t\t\tthis.uploadBones(this.skin.device);\n\t\t}\n}\n\nclass SkinBatchInstance extends SkinInstance {\n\t\tconstructor(device, nodes, rootNode){\n\t\t\t\tsuper();\n\t\t\t\tconst numBones = nodes.length;\n\t\t\t\tthis.init(device, numBones);\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.rootNode = rootNode;\n\t\t\t\tthis.bones = nodes;\n\t\t}\n\t\tupdateMatrices(rootNode, skinUpdateIndex) {}\n\t\tupdateMatrixPalette(rootNode, skinUpdateIndex) {\n\t\t\t\tconst mp = this.matrixPalette;\n\t\t\t\tconst count = this.bones.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst pe = this.bones[i].getWorldTransform().data;\n\t\t\t\t\t\tconst base = i * 12;\n\t\t\t\t\t\tmp[base] = pe[0];\n\t\t\t\t\t\tmp[base + 1] = pe[4];\n\t\t\t\t\t\tmp[base + 2] = pe[8];\n\t\t\t\t\t\tmp[base + 3] = pe[12];\n\t\t\t\t\t\tmp[base + 4] = pe[1];\n\t\t\t\t\t\tmp[base + 5] = pe[5];\n\t\t\t\t\t\tmp[base + 6] = pe[9];\n\t\t\t\t\t\tmp[base + 7] = pe[13];\n\t\t\t\t\t\tmp[base + 8] = pe[2];\n\t\t\t\t\t\tmp[base + 9] = pe[6];\n\t\t\t\t\t\tmp[base + 10] = pe[10];\n\t\t\t\t\t\tmp[base + 11] = pe[14];\n\t\t\t\t}\n\t\t\t\tthis.uploadBones(this.device);\n\t\t}\n}\n\nlet id$5 = 0;\nclass GeometryData {\n\t\tconstructor(){\n\t\t\t\tthis.initDefaults();\n\t\t}\n\t\tinitDefaults() {\n\t\t\t\tthis.recreate = false;\n\t\t\t\tthis.verticesUsage = BUFFER_STATIC;\n\t\t\t\tthis.indicesUsage = BUFFER_STATIC;\n\t\t\t\tthis.maxVertices = 0;\n\t\t\t\tthis.maxIndices = 0;\n\t\t\t\tthis.vertexCount = 0;\n\t\t\t\tthis.indexCount = 0;\n\t\t\t\tthis.vertexStreamsUpdated = false;\n\t\t\t\tthis.indexStreamUpdated = false;\n\t\t\t\tthis.vertexStreamDictionary = {};\n\t\t\t\tthis.indices = null;\n\t\t}\n\t\t_changeVertexCount(count, semantic) {\n\t\t\t\tif (!this.vertexCount) {\n\t\t\t\t\t\tthis.vertexCount = count;\n\t\t\t\t}\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_POSITION = 3;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_NORMAL = 3;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_UV = 2;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.DEFAULT_COMPONENTS_COLORS = 4;\n\t\t}\n}\nclass GeometryVertexStream {\n\t\tconstructor(data, componentCount, dataType, dataTypeNormalize, asInt){\n\t\t\t\tthis.data = data;\n\t\t\t\tthis.componentCount = componentCount;\n\t\t\t\tthis.dataType = dataType;\n\t\t\t\tthis.dataTypeNormalize = dataTypeNormalize;\n\t\t\t\tthis.asInt = asInt;\n\t\t}\n}\nclass Mesh extends RefCountedObject {\n\t\tconstructor(graphicsDevice, options){\n\t\t\t\tsuper(), this.indexBuffer = [\n\t\t\t\t\t\tnull\n\t\t\t\t], this.vertexBuffer = null, this.primitive = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\ttype: 0,\n\t\t\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t}\n\t\t\t\t], this.skin = null, this.boneAabb = null, this._aabbVer = 0, this._aabb = new BoundingBox(), this._geometryData = null, this._morph = null, this._storageIndex = false, this._storageVertex = false;\n\t\t\t\tthis.id = id$5++;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis._storageIndex = options?.storageIndex || false;\n\t\t\t\tthis._storageVertex = options?.storageVertex || false;\n\t\t}\n\t\tstatic fromGeometry(graphicsDevice, geometry, options = {}) {\n\t\t\t\tconst mesh = new Mesh(graphicsDevice, options);\n\t\t\t\tconst { positions, normals, tangents, colors, uvs, uvs1, blendIndices, blendWeights, indices } = geometry;\n\t\t\t\tif (positions) {\n\t\t\t\t\t\tmesh.setPositions(positions);\n\t\t\t\t}\n\t\t\t\tif (normals) {\n\t\t\t\t\t\tmesh.setNormals(normals);\n\t\t\t\t}\n\t\t\t\tif (tangents) {\n\t\t\t\t\t\tmesh.setVertexStream(SEMANTIC_TANGENT, tangents, 4);\n\t\t\t\t}\n\t\t\t\tif (colors) {\n\t\t\t\t\t\tmesh.setColors32(colors);\n\t\t\t\t}\n\t\t\t\tif (uvs) {\n\t\t\t\t\t\tmesh.setUvs(0, uvs);\n\t\t\t\t}\n\t\t\t\tif (uvs1) {\n\t\t\t\t\t\tmesh.setUvs(1, uvs1);\n\t\t\t\t}\n\t\t\t\tif (blendIndices) {\n\t\t\t\t\t\tmesh.setVertexStream(SEMANTIC_BLENDINDICES, blendIndices, 4, blendIndices.length / 4, TYPE_UINT8);\n\t\t\t\t}\n\t\t\t\tif (blendWeights) {\n\t\t\t\t\t\tmesh.setVertexStream(SEMANTIC_BLENDWEIGHT, blendWeights, 4);\n\t\t\t\t}\n\t\t\t\tif (indices) {\n\t\t\t\t\t\tmesh.setIndices(indices);\n\t\t\t\t}\n\t\t\t\tmesh.update();\n\t\t\t\treturn mesh;\n\t\t}\n\t\tset morph(morph) {\n\t\t\t\tif (morph !== this._morph) {\n\t\t\t\t\t\tif (this._morph) {\n\t\t\t\t\t\t\t\tthis._morph.decRefCount();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._morph = morph;\n\t\t\t\t\t\tif (morph) {\n\t\t\t\t\t\t\t\tmorph.incRefCount();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget morph() {\n\t\t\t\treturn this._morph;\n\t\t}\n\t\tset aabb(aabb) {\n\t\t\t\tthis._aabb = aabb;\n\t\t\t\tthis._aabbVer++;\n\t\t}\n\t\tget aabb() {\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst morph = this.morph;\n\t\t\t\tif (morph) {\n\t\t\t\t\t\tthis.morph = null;\n\t\t\t\t\t\tif (morph.refCount < 1) {\n\t\t\t\t\t\t\t\tmorph.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\tthis.vertexBuffer.destroy();\n\t\t\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\t}\n\t\t\t\tfor(let j = 0; j < this.indexBuffer.length; j++){\n\t\t\t\t\t\tthis._destroyIndexBuffer(j);\n\t\t\t\t}\n\t\t\t\tthis.indexBuffer.length = 0;\n\t\t\t\tthis._geometryData = null;\n\t\t}\n\t\t_destroyIndexBuffer(index) {\n\t\t\t\tif (this.indexBuffer[index]) {\n\t\t\t\t\t\tthis.indexBuffer[index].destroy();\n\t\t\t\t\t\tthis.indexBuffer[index] = null;\n\t\t\t\t}\n\t\t}\n\t\t_initBoneAabbs(morphTargets) {\n\t\t\t\tthis.boneAabb = [];\n\t\t\t\tthis.boneUsed = [];\n\t\t\t\tlet x, y, z;\n\t\t\t\tlet bMax, bMin;\n\t\t\t\tconst boneMin = [];\n\t\t\t\tconst boneMax = [];\n\t\t\t\tconst boneUsed = this.boneUsed;\n\t\t\t\tconst numBones = this.skin.boneNames.length;\n\t\t\t\tlet maxMorphX, maxMorphY, maxMorphZ;\n\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\tboneMin[i] = new Vec3(Number.MAX_VALUE, Number.MAX_VALUE, Number.MAX_VALUE);\n\t\t\t\t\t\tboneMax[i] = new Vec3(-Number.MAX_VALUE, -Number.MAX_VALUE, -Number.MAX_VALUE);\n\t\t\t\t}\n\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\tconst posElement = iterator.element[SEMANTIC_POSITION];\n\t\t\t\tconst weightsElement = iterator.element[SEMANTIC_BLENDWEIGHT];\n\t\t\t\tconst indicesElement = iterator.element[SEMANTIC_BLENDINDICES];\n\t\t\t\tconst numVerts = this.vertexBuffer.numVertices;\n\t\t\t\tfor(let j = 0; j < numVerts; j++){\n\t\t\t\t\t\tfor(let k = 0; k < 4; k++){\n\t\t\t\t\t\t\t\tconst boneWeight = weightsElement.array[weightsElement.index + k];\n\t\t\t\t\t\t\t\tif (boneWeight > 0) {\n\t\t\t\t\t\t\t\t\t\tconst boneIndex = indicesElement.array[indicesElement.index + k];\n\t\t\t\t\t\t\t\t\t\tboneUsed[boneIndex] = true;\n\t\t\t\t\t\t\t\t\t\tx = posElement.array[posElement.index];\n\t\t\t\t\t\t\t\t\t\ty = posElement.array[posElement.index + 1];\n\t\t\t\t\t\t\t\t\t\tz = posElement.array[posElement.index + 2];\n\t\t\t\t\t\t\t\t\t\tbMax = boneMax[boneIndex];\n\t\t\t\t\t\t\t\t\t\tbMin = boneMin[boneIndex];\n\t\t\t\t\t\t\t\t\t\tif (bMin.x > x) bMin.x = x;\n\t\t\t\t\t\t\t\t\t\tif (bMin.y > y) bMin.y = y;\n\t\t\t\t\t\t\t\t\t\tif (bMin.z > z) bMin.z = z;\n\t\t\t\t\t\t\t\t\t\tif (bMax.x < x) bMax.x = x;\n\t\t\t\t\t\t\t\t\t\tif (bMax.y < y) bMax.y = y;\n\t\t\t\t\t\t\t\t\t\tif (bMax.z < z) bMax.z = z;\n\t\t\t\t\t\t\t\t\t\tif (morphTargets) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet minMorphX = maxMorphX = x;\n\t\t\t\t\t\t\t\t\t\t\t\tlet minMorphY = maxMorphY = y;\n\t\t\t\t\t\t\t\t\t\t\t\tlet minMorphZ = maxMorphZ = z;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let l = 0; l < morphTargets.length; l++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst target = morphTargets[l];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst dx = target.deltaPositions[j * 3];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst dy = target.deltaPositions[j * 3 + 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst dz = target.deltaPositions[j * 3 + 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dx < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminMorphX += dx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxMorphX += dx;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dy < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminMorphY += dy;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxMorphY += dy;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (dz < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tminMorphZ += dz;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmaxMorphZ += dz;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMin.x > minMorphX) bMin.x = minMorphX;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMin.y > minMorphY) bMin.y = minMorphY;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMin.z > minMorphZ) bMin.z = minMorphZ;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMax.x < maxMorphX) bMax.x = maxMorphX;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMax.y < maxMorphY) bMax.y = maxMorphY;\n\t\t\t\t\t\t\t\t\t\t\t\tif (bMax.z < maxMorphZ) bMax.z = maxMorphZ;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\titerator.next();\n\t\t\t\t}\n\t\t\t\tconst positionElement = this.vertexBuffer.getFormat().elements.find((e)=>e.name === SEMANTIC_POSITION);\n\t\t\t\tif (positionElement && positionElement.normalize) {\n\t\t\t\t\t\tconst func = (()=>{\n\t\t\t\t\t\t\t\tswitch(positionElement.dataType){\n\t\t\t\t\t\t\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>Math.max(x / 127.0, -1);\n\t\t\t\t\t\t\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>x / 255.0;\n\t\t\t\t\t\t\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>Math.max(x / 32767.0, -1);\n\t\t\t\t\t\t\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>x / 65535.0;\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\treturn (x)=>x;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})();\n\t\t\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\t\t\tif (boneUsed[i]) {\n\t\t\t\t\t\t\t\t\t\tconst min = boneMin[i];\n\t\t\t\t\t\t\t\t\t\tconst max = boneMax[i];\n\t\t\t\t\t\t\t\t\t\tmin.set(func(min.x), func(min.y), func(min.z));\n\t\t\t\t\t\t\t\t\t\tmax.set(func(max.x), func(max.y), func(max.z));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numBones; i++){\n\t\t\t\t\t\tconst aabb = new BoundingBox();\n\t\t\t\t\t\taabb.setMinMax(boneMin[i], boneMax[i]);\n\t\t\t\t\t\tthis.boneAabb.push(aabb);\n\t\t\t\t}\n\t\t}\n\t\t_initGeometryData() {\n\t\t\t\tif (!this._geometryData) {\n\t\t\t\t\t\tthis._geometryData = new GeometryData();\n\t\t\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\t\t\tthis._geometryData.vertexCount = this.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tthis._geometryData.maxVertices = this.vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\tthis._geometryData.indexCount = this.indexBuffer[0].numIndices;\n\t\t\t\t\t\t\t\tthis._geometryData.maxIndices = this.indexBuffer[0].numIndices;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tclear(verticesDynamic, indicesDynamic, maxVertices = 0, maxIndices = 0) {\n\t\t\t\tthis._initGeometryData();\n\t\t\t\tthis._geometryData.initDefaults();\n\t\t\t\tthis._geometryData.recreate = true;\n\t\t\t\tthis._geometryData.maxVertices = maxVertices;\n\t\t\t\tthis._geometryData.maxIndices = maxIndices;\n\t\t\t\tthis._geometryData.verticesUsage = verticesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC;\n\t\t\t\tthis._geometryData.indicesUsage = indicesDynamic ? BUFFER_STATIC : BUFFER_DYNAMIC;\n\t\t}\n\t\tsetVertexStream(semantic, data, componentCount, numVertices, dataType = TYPE_FLOAT32, dataTypeNormalize = false, asInt = false) {\n\t\t\t\tthis._initGeometryData();\n\t\t\t\tconst vertexCount = numVertices || data.length / componentCount;\n\t\t\t\tthis._geometryData._changeVertexCount(vertexCount, semantic);\n\t\t\t\tthis._geometryData.vertexStreamsUpdated = true;\n\t\t\t\tthis._geometryData.vertexStreamDictionary[semantic] = new GeometryVertexStream(data, componentCount, dataType, dataTypeNormalize, asInt);\n\t\t}\n\t\tgetVertexStream(semantic, data) {\n\t\t\t\tlet count = 0;\n\t\t\t\tlet done = false;\n\t\t\t\tif (this._geometryData) {\n\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t\t\tif (stream) {\n\t\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\t\tcount = this._geometryData.vertexCount;\n\t\t\t\t\t\t\t\tif (ArrayBuffer.isView(data)) {\n\t\t\t\t\t\t\t\t\t\tdata.set(stream.data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdata.length = 0;\n\t\t\t\t\t\t\t\t\t\tdata.push(stream.data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!done) {\n\t\t\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\t\t\t\t\tcount = iterator.readData(semantic, data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n\t\tsetPositions(positions, componentCount = GeometryData.DEFAULT_COMPONENTS_POSITION, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_POSITION, positions, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetNormals(normals, componentCount = GeometryData.DEFAULT_COMPONENTS_NORMAL, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_NORMAL, normals, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetUvs(channel, uvs, componentCount = GeometryData.DEFAULT_COMPONENTS_UV, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_TEXCOORD + channel, uvs, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetColors(colors, componentCount = GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_COLOR, colors, componentCount, numVertices, TYPE_FLOAT32, false);\n\t\t}\n\t\tsetColors32(colors, numVertices) {\n\t\t\t\tthis.setVertexStream(SEMANTIC_COLOR, colors, GeometryData.DEFAULT_COMPONENTS_COLORS, numVertices, TYPE_UINT8, true);\n\t\t}\n\t\tsetIndices(indices, numIndices) {\n\t\t\t\tthis._initGeometryData();\n\t\t\t\tthis._geometryData.indexStreamUpdated = true;\n\t\t\t\tthis._geometryData.indices = indices;\n\t\t\t\tthis._geometryData.indexCount = numIndices || indices.length;\n\t\t}\n\t\tgetPositions(positions) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_POSITION, positions);\n\t\t}\n\t\tgetNormals(normals) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_NORMAL, normals);\n\t\t}\n\t\tgetUvs(channel, uvs) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_TEXCOORD + channel, uvs);\n\t\t}\n\t\tgetColors(colors) {\n\t\t\t\treturn this.getVertexStream(SEMANTIC_COLOR, colors);\n\t\t}\n\t\tgetIndices(indices) {\n\t\t\t\tlet count = 0;\n\t\t\t\tif (this._geometryData && this._geometryData.indices) {\n\t\t\t\t\t\tconst streamIndices = this._geometryData.indices;\n\t\t\t\t\t\tcount = this._geometryData.indexCount;\n\t\t\t\t\t\tif (ArrayBuffer.isView(indices)) {\n\t\t\t\t\t\t\t\tindices.set(streamIndices);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindices.length = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0, il = streamIndices.length; i < il; i++){\n\t\t\t\t\t\t\t\t\t\tindices.push(streamIndices[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\tconst indexBuffer = this.indexBuffer[0];\n\t\t\t\t\t\t\t\tcount = indexBuffer.readData(indices);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n\t\tupdate(primitiveType = PRIMITIVE_TRIANGLES, updateBoundingBox = true) {\n\t\t\t\tif (this._geometryData) {\n\t\t\t\t\t\tif (updateBoundingBox) {\n\t\t\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[SEMANTIC_POSITION];\n\t\t\t\t\t\t\t\tif (stream) {\n\t\t\t\t\t\t\t\t\t\tif (stream.componentCount === 3) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._aabb.compute(stream.data, this._geometryData.vertexCount);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._aabbVer++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet destroyVB = this._geometryData.recreate;\n\t\t\t\t\t\tif (this._geometryData.vertexCount > this._geometryData.maxVertices) {\n\t\t\t\t\t\t\t\tdestroyVB = true;\n\t\t\t\t\t\t\t\tthis._geometryData.maxVertices = this._geometryData.vertexCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (destroyVB) {\n\t\t\t\t\t\t\t\tif (this.vertexBuffer) {\n\t\t\t\t\t\t\t\t\t\tthis.vertexBuffer.destroy();\n\t\t\t\t\t\t\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet destroyIB = this._geometryData.recreate;\n\t\t\t\t\t\tif (this._geometryData.indexCount > this._geometryData.maxIndices) {\n\t\t\t\t\t\t\t\tdestroyIB = true;\n\t\t\t\t\t\t\t\tthis._geometryData.maxIndices = this._geometryData.indexCount;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (destroyIB) {\n\t\t\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\t\t\tthis.indexBuffer[0].destroy();\n\t\t\t\t\t\t\t\t\t\tthis.indexBuffer[0] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._geometryData.vertexStreamsUpdated) {\n\t\t\t\t\t\t\t\tthis._updateVertexBuffer();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._geometryData.indexStreamUpdated) {\n\t\t\t\t\t\t\t\tthis._updateIndexBuffer();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.primitive[0].type = primitiveType;\n\t\t\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\t\t\tif (this._geometryData.indexStreamUpdated) {\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].count = this._geometryData.indexCount;\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].indexed = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this._geometryData.vertexStreamsUpdated) {\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].count = this._geometryData.vertexCount;\n\t\t\t\t\t\t\t\t\t\tthis.primitive[0].indexed = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._geometryData.vertexCount = 0;\n\t\t\t\t\t\tthis._geometryData.indexCount = 0;\n\t\t\t\t\t\tthis._geometryData.vertexStreamsUpdated = false;\n\t\t\t\t\t\tthis._geometryData.indexStreamUpdated = false;\n\t\t\t\t\t\tthis._geometryData.recreate = false;\n\t\t\t\t\t\tthis.updateRenderStates();\n\t\t\t\t}\n\t\t}\n\t\t_buildVertexFormat(vertexCount) {\n\t\t\t\tconst vertexDesc = [];\n\t\t\t\tfor(const semantic in this._geometryData.vertexStreamDictionary){\n\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t\t\tvertexDesc.push({\n\t\t\t\t\t\t\t\tsemantic: semantic,\n\t\t\t\t\t\t\t\tcomponents: stream.componentCount,\n\t\t\t\t\t\t\t\ttype: stream.dataType,\n\t\t\t\t\t\t\t\tnormalize: stream.dataTypeNormalize,\n\t\t\t\t\t\t\t\tasInt: stream.asInt\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn new VertexFormat(this.device, vertexDesc, vertexCount);\n\t\t}\n\t\t_updateVertexBuffer() {\n\t\t\t\tif (!this.vertexBuffer) {\n\t\t\t\t\t\tconst allocateVertexCount = this._geometryData.maxVertices;\n\t\t\t\t\t\tconst format = this._buildVertexFormat(allocateVertexCount);\n\t\t\t\t\t\tthis.vertexBuffer = new VertexBuffer(this.device, format, allocateVertexCount, {\n\t\t\t\t\t\t\t\tusage: this._geometryData.verticesUsage,\n\t\t\t\t\t\t\t\tstorage: this._storageVertex\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst iterator = new VertexIterator(this.vertexBuffer);\n\t\t\t\tconst numVertices = this._geometryData.vertexCount;\n\t\t\t\tfor(const semantic in this._geometryData.vertexStreamDictionary){\n\t\t\t\t\t\tconst stream = this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t\t\titerator.writeData(semantic, stream.data, numVertices);\n\t\t\t\t\t\tdelete this._geometryData.vertexStreamDictionary[semantic];\n\t\t\t\t}\n\t\t\t\titerator.end();\n\t\t}\n\t\t_updateIndexBuffer() {\n\t\t\t\tif (this.indexBuffer.length <= 0 || !this.indexBuffer[0]) {\n\t\t\t\t\t\tconst maxVertices = this._geometryData.maxVertices;\n\t\t\t\t\t\tconst createFormat = maxVertices > 0xffff || maxVertices === 0 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16;\n\t\t\t\t\t\tconst options = this._storageIndex ? {\n\t\t\t\t\t\t\t\tstorage: true\n\t\t\t\t\t\t} : undefined;\n\t\t\t\t\t\tthis.indexBuffer[0] = new IndexBuffer(this.device, createFormat, this._geometryData.maxIndices, this._geometryData.indicesUsage, undefined, options);\n\t\t\t\t}\n\t\t\t\tconst srcIndices = this._geometryData.indices;\n\t\t\t\tif (srcIndices) {\n\t\t\t\t\t\tconst indexBuffer = this.indexBuffer[0];\n\t\t\t\t\t\tindexBuffer.writeData(srcIndices, this._geometryData.indexCount);\n\t\t\t\t\t\tthis._geometryData.indices = null;\n\t\t\t\t}\n\t\t}\n\t\tprepareRenderState(renderStyle) {\n\t\t\t\tif (renderStyle === RENDERSTYLE_WIREFRAME) {\n\t\t\t\t\t\tthis.generateWireframe();\n\t\t\t\t} else if (renderStyle === RENDERSTYLE_POINTS) {\n\t\t\t\t\t\tthis.primitive[RENDERSTYLE_POINTS] = {\n\t\t\t\t\t\t\t\ttype: PRIMITIVE_POINTS,\n\t\t\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\t\t\tcount: this.vertexBuffer ? this.vertexBuffer.numVertices : 0,\n\t\t\t\t\t\t\t\tindexed: false\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tupdateRenderStates() {\n\t\t\t\tif (this.primitive[RENDERSTYLE_POINTS]) {\n\t\t\t\t\t\tthis.prepareRenderState(RENDERSTYLE_POINTS);\n\t\t\t\t}\n\t\t\t\tif (this.primitive[RENDERSTYLE_WIREFRAME]) {\n\t\t\t\t\t\tthis.prepareRenderState(RENDERSTYLE_WIREFRAME);\n\t\t\t\t}\n\t\t}\n\t\tgenerateWireframe() {\n\t\t\t\tthis._destroyIndexBuffer(RENDERSTYLE_WIREFRAME);\n\t\t\t\tconst numVertices = this.vertexBuffer.numVertices;\n\t\t\t\tconst lines = [];\n\t\t\t\tlet format;\n\t\t\t\tif (this.indexBuffer.length > 0 && this.indexBuffer[0]) {\n\t\t\t\t\t\tconst offsets = [\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst base = this.primitive[RENDERSTYLE_SOLID].base;\n\t\t\t\t\t\tconst count = this.primitive[RENDERSTYLE_SOLID].count;\n\t\t\t\t\t\tconst baseVertex = this.primitive[RENDERSTYLE_SOLID].baseVertex || 0;\n\t\t\t\t\t\tconst indexBuffer = this.indexBuffer[RENDERSTYLE_SOLID];\n\t\t\t\t\t\tconst srcIndices = new typedArrayIndexFormats[indexBuffer.format](indexBuffer.storage);\n\t\t\t\t\t\tconst seen = new Set();\n\t\t\t\t\t\tfor(let j = base; j < base + count; j += 3){\n\t\t\t\t\t\t\t\tfor(let k = 0; k < 3; k++){\n\t\t\t\t\t\t\t\t\t\tconst i1 = srcIndices[j + offsets[k][0]] + baseVertex;\n\t\t\t\t\t\t\t\t\t\tconst i2 = srcIndices[j + offsets[k][1]] + baseVertex;\n\t\t\t\t\t\t\t\t\t\tconst hash = i1 > i2 ? i2 * numVertices + i1 : i1 * numVertices + i2;\n\t\t\t\t\t\t\t\t\t\tif (!seen.has(hash)) {\n\t\t\t\t\t\t\t\t\t\t\t\tseen.add(hash);\n\t\t\t\t\t\t\t\t\t\t\t\tlines.push(i1, i2);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tformat = indexBuffer.format;\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; i += 3){\n\t\t\t\t\t\t\t\tlines.push(i, i + 1, i + 1, i + 2, i + 2, i);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tformat = lines.length > 65535 ? INDEXFORMAT_UINT32 : INDEXFORMAT_UINT16;\n\t\t\t\t}\n\t\t\t\tconst wireBuffer = new IndexBuffer(this.vertexBuffer.device, format, lines.length);\n\t\t\t\tconst dstIndices = new typedArrayIndexFormats[wireBuffer.format](wireBuffer.storage);\n\t\t\t\tdstIndices.set(lines);\n\t\t\t\twireBuffer.unlock();\n\t\t\t\tthis.primitive[RENDERSTYLE_WIREFRAME] = {\n\t\t\t\t\t\ttype: PRIMITIVE_LINES,\n\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\tcount: lines.length,\n\t\t\t\t\t\tindexed: true\n\t\t\t\t};\n\t\t\t\tthis.indexBuffer[RENDERSTYLE_WIREFRAME] = wireBuffer;\n\t\t}\n}\n\nconst defaultMaterialDeviceCache = new DeviceCache();\nfunction getDefaultMaterial(device) {\n\t\tconst material = defaultMaterialDeviceCache.get(device);\n\t\treturn material;\n}\nfunction setDefaultMaterial(device, material) {\n\t\tdefaultMaterialDeviceCache.get(device, ()=>{\n\t\t\t\treturn material;\n\t\t});\n}\n\nclass RefCountedCache {\n\t\tdestroy() {\n\t\t\t\tthis.cache.forEach((refCount, object)=>{\n\t\t\t\t\t\tobject.destroy();\n\t\t\t\t});\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tincRef(object) {\n\t\t\t\tconst refCount = (this.cache.get(object) || 0) + 1;\n\t\t\t\tthis.cache.set(object, refCount);\n\t\t}\n\t\tdecRef(object) {\n\t\t\t\tif (object) {\n\t\t\t\t\t\tlet refCount = this.cache.get(object);\n\t\t\t\t\t\tif (refCount) {\n\t\t\t\t\t\t\t\trefCount--;\n\t\t\t\t\t\t\t\tif (refCount === 0) {\n\t\t\t\t\t\t\t\t\t\tthis.cache.delete(object);\n\t\t\t\t\t\t\t\t\t\tobject.destroy();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.cache.set(object, refCount);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n}\n\nclass LightmapCache {\n\t\tstatic{\n\t\t\t\tthis.cache = new RefCountedCache();\n\t\t}\n\t\tstatic incRef(texture) {\n\t\t\t\tthis.cache.incRef(texture);\n\t\t}\n\t\tstatic decRef(texture) {\n\t\t\t\tthis.cache.decRef(texture);\n\t\t}\n\t\tstatic destroy() {\n\t\t\t\tthis.cache.destroy();\n\t\t}\n}\n\nlet id$4 = 0;\nconst _tmpAabb = new BoundingBox();\nconst _tempBoneAabb = new BoundingBox();\nconst _tempSphere = new BoundingSphere();\nconst _meshSet = new Set();\nconst lookupHashes = new Uint32Array(4);\nclass InstancingData {\n\t\tconstructor(numObjects){\n\t\t\t\tthis.vertexBuffer = null;\n\t\t\t\tthis._destroyVertexBuffer = false;\n\t\t\t\tthis.count = numObjects;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._destroyVertexBuffer) {\n\t\t\t\t\t\tthis.vertexBuffer?.destroy();\n\t\t\t\t}\n\t\t\t\tthis.vertexBuffer = null;\n\t\t}\n}\nclass ShaderInstance {\n\t\tgetBindGroup(device) {\n\t\t\t\tif (!this.bindGroup) {\n\t\t\t\t\t\tconst shader = this.shader;\n\t\t\t\t\t\tconst bindGroupFormat = shader.meshBindGroupFormat;\n\t\t\t\t\t\tthis.bindGroup = new BindGroup(device, bindGroupFormat);\n\t\t\t\t}\n\t\t\t\treturn this.bindGroup;\n\t\t}\n\t\tgetUniformBuffer(device) {\n\t\t\t\tif (!this.uniformBuffer) {\n\t\t\t\t\t\tconst shader = this.shader;\n\t\t\t\t\t\tconst ubFormat = shader.meshUniformBufferFormat;\n\t\t\t\t\t\tthis.uniformBuffer = new UniformBuffer(device, ubFormat, false);\n\t\t\t\t}\n\t\t\t\treturn this.uniformBuffer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.bindGroup?.destroy();\n\t\t\t\tthis.bindGroup = null;\n\t\t\t\tthis.uniformBuffer?.destroy();\n\t\t\t\tthis.uniformBuffer = null;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.bindGroup = null;\n\t\t\t\tthis.uniformBuffer = null;\n\t\t}\n}\nclass MeshInstance {\n\t\tconstructor(mesh, material, node = null){\n\t\t\t\tthis.castShadow = false;\n\t\t\t\tthis.shadowCascadeMask = SHADOW_CASCADE_ALL;\n\t\t\t\tthis.cull = true;\n\t\t\t\tthis.drawOrder = 0;\n\t\t\t\tthis._drawBucket = 127;\n\t\t\t\tthis.visible = true;\n\t\t\t\tthis.visibleThisFrame = false;\n\t\t\t\tthis.flipFacesFactor = 1;\n\t\t\t\tthis.gsplatInstance = null;\n\t\t\t\tthis.id = id$4++;\n\t\t\t\tthis.isVisibleFunc = null;\n\t\t\t\tthis.instancingData = null;\n\t\t\t\tthis.indirectData = null;\n\t\t\t\tthis.drawCommands = null;\n\t\t\t\tthis.meshMetaData = null;\n\t\t\t\tthis.parameters = {};\n\t\t\t\tthis.pick = true;\n\t\t\t\tthis.stencilFront = null;\n\t\t\t\tthis.stencilBack = null;\n\t\t\t\tthis.transparent = false;\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis._aabbVer = -1;\n\t\t\t\tthis._aabbMeshVer = -1;\n\t\t\t\tthis._customAabb = null;\n\t\t\t\tthis._updateAabb = true;\n\t\t\t\tthis._updateAabbFunc = null;\n\t\t\t\tthis._sortKeyShadow = 0;\n\t\t\t\tthis._sortKeyForward = 0;\n\t\t\t\tthis._sortKeyDynamic = 0;\n\t\t\t\tthis._layer = LAYER_WORLD;\n\t\t\t\tthis._material = null;\n\t\t\t\tthis._skinInstance = null;\n\t\t\t\tthis._morphInstance = null;\n\t\t\t\tthis._receiveShadow = true;\n\t\t\t\tthis._renderStyle = RENDERSTYLE_SOLID;\n\t\t\t\tthis._screenSpace = false;\n\t\t\t\tthis._shaderCache = new Map();\n\t\t\t\tthis._shaderDefs = MASK_AFFECT_DYNAMIC << 16;\n\t\t\t\tthis._calculateSortDistance = null;\n\t\t\t\tthis.node = node;\n\t\t\t\tthis._mesh = mesh;\n\t\t\t\tmesh.incRefCount();\n\t\t\t\tthis.material = material;\n\t\t\t\tif (mesh.vertexBuffer) {\n\t\t\t\t\t\tconst format = mesh.vertexBuffer.format;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasUv0 ? SHADERDEF_UV0 : 0;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasUv1 ? SHADERDEF_UV1 : 0;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasColor ? SHADERDEF_VCOLOR : 0;\n\t\t\t\t\t\tthis._shaderDefs |= format.hasTangents ? SHADERDEF_TANGENTS : 0;\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tset drawBucket(bucket) {\n\t\t\t\tthis._drawBucket = Math.floor(bucket) & 0xff;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget drawBucket() {\n\t\t\t\treturn this._drawBucket;\n\t\t}\n\t\tset renderStyle(renderStyle) {\n\t\t\t\tthis._renderStyle = renderStyle;\n\t\t\t\tthis.mesh.prepareRenderState(renderStyle);\n\t\t}\n\t\tget renderStyle() {\n\t\t\t\treturn this._renderStyle;\n\t\t}\n\t\tset mesh(mesh) {\n\t\t\t\tif (mesh === this._mesh) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._mesh) {\n\t\t\t\t\t\tthis._mesh.decRefCount();\n\t\t\t\t}\n\t\t\t\tthis._mesh = mesh;\n\t\t\t\tif (mesh) {\n\t\t\t\t\t\tmesh.incRefCount();\n\t\t\t\t}\n\t\t}\n\t\tget mesh() {\n\t\t\t\treturn this._mesh;\n\t\t}\n\t\tset aabb(aabb) {\n\t\t\t\tthis._aabb = aabb;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (!this._updateAabb) {\n\t\t\t\t\t\treturn this._aabb;\n\t\t\t\t}\n\t\t\t\tif (this._updateAabbFunc) {\n\t\t\t\t\t\treturn this._updateAabbFunc(this._aabb);\n\t\t\t\t}\n\t\t\t\tlet localAabb = this._customAabb;\n\t\t\t\tlet toWorldSpace = !!localAabb;\n\t\t\t\tif (!localAabb) {\n\t\t\t\t\t\tlocalAabb = _tmpAabb;\n\t\t\t\t\t\tif (this.skinInstance) {\n\t\t\t\t\t\t\t\tif (!this.mesh.boneAabb) {\n\t\t\t\t\t\t\t\t\t\tconst morphTargets = this._morphInstance ? this._morphInstance.morph._targets : null;\n\t\t\t\t\t\t\t\t\t\tthis.mesh._initBoneAabbs(morphTargets);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst boneUsed = this.mesh.boneUsed;\n\t\t\t\t\t\t\t\tlet first = true;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this.mesh.boneAabb.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (boneUsed[i]) {\n\t\t\t\t\t\t\t\t\t\t\t\t_tempBoneAabb.setFromTransformedAabb(this.mesh.boneAabb[i], this.skinInstance.matrices[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocalAabb.center.copy(_tempBoneAabb.center);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocalAabb.halfExtents.copy(_tempBoneAabb.halfExtents);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlocalAabb.add(_tempBoneAabb);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttoWorldSpace = true;\n\t\t\t\t\t\t} else if (this.node._aabbVer !== this._aabbVer || this.mesh._aabbVer !== this._aabbMeshVer) {\n\t\t\t\t\t\t\t\tif (this.mesh) {\n\t\t\t\t\t\t\t\t\t\tlocalAabb.center.copy(this.mesh.aabb.center);\n\t\t\t\t\t\t\t\t\t\tlocalAabb.halfExtents.copy(this.mesh.aabb.halfExtents);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlocalAabb.center.set(0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tlocalAabb.halfExtents.set(0, 0, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.mesh && this.mesh.morph) {\n\t\t\t\t\t\t\t\t\t\tconst morphAabb = this.mesh.morph.aabb;\n\t\t\t\t\t\t\t\t\t\tlocalAabb._expand(morphAabb.getMin(), morphAabb.getMax());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttoWorldSpace = true;\n\t\t\t\t\t\t\t\tthis._aabbVer = this.node._aabbVer;\n\t\t\t\t\t\t\t\tthis._aabbMeshVer = this.mesh._aabbVer;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (toWorldSpace) {\n\t\t\t\t\t\tthis._aabb.setFromTransformedAabb(localAabb, this.node.getWorldTransform());\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tclearShaders() {\n\t\t\t\tthis._shaderCache.forEach((shaderInstance)=>{\n\t\t\t\t\t\tshaderInstance.destroy();\n\t\t\t\t});\n\t\t\t\tthis._shaderCache.clear();\n\t\t}\n\t\tgetShaderInstance(shaderPass, lightHash, scene, cameraShaderParams, viewUniformFormat, viewBindGroupFormat, sortedLights) {\n\t\t\t\tconst shaderDefs = this._shaderDefs;\n\t\t\t\tlookupHashes[0] = shaderPass;\n\t\t\t\tlookupHashes[1] = lightHash;\n\t\t\t\tlookupHashes[2] = shaderDefs;\n\t\t\t\tlookupHashes[3] = cameraShaderParams.hash;\n\t\t\t\tconst hash = hash32Fnv1a(lookupHashes);\n\t\t\t\tlet shaderInstance = this._shaderCache.get(hash);\n\t\t\t\tif (!shaderInstance) {\n\t\t\t\t\t\tconst mat = this._material;\n\t\t\t\t\t\tshaderInstance = new ShaderInstance();\n\t\t\t\t\t\tshaderInstance.shader = mat.variants.get(hash);\n\t\t\t\t\t\tshaderInstance.hashes = new Uint32Array(lookupHashes);\n\t\t\t\t\t\tif (!shaderInstance.shader) {\n\t\t\t\t\t\t\t\tconst shader = mat.getShaderVariant({\n\t\t\t\t\t\t\t\t\t\tdevice: this.mesh.device,\n\t\t\t\t\t\t\t\t\t\tscene: scene,\n\t\t\t\t\t\t\t\t\t\tobjDefs: shaderDefs,\n\t\t\t\t\t\t\t\t\t\tcameraShaderParams: cameraShaderParams,\n\t\t\t\t\t\t\t\t\t\tpass: shaderPass,\n\t\t\t\t\t\t\t\t\t\tsortedLights: sortedLights,\n\t\t\t\t\t\t\t\t\t\tviewUniformFormat: viewUniformFormat,\n\t\t\t\t\t\t\t\t\t\tviewBindGroupFormat: viewBindGroupFormat,\n\t\t\t\t\t\t\t\t\t\tvertexFormat: this.mesh.vertexBuffer?.format\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmat.variants.set(hash, shader);\n\t\t\t\t\t\t\t\tshaderInstance.shader = shader;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._shaderCache.set(hash, shaderInstance);\n\t\t\t\t}\n\t\t\t\treturn shaderInstance;\n\t\t}\n\t\tset material(material) {\n\t\t\t\tthis.clearShaders();\n\t\t\t\tconst prevMat = this._material;\n\t\t\t\tif (prevMat) {\n\t\t\t\t\t\tprevMat.removeMeshInstanceRef(this);\n\t\t\t\t}\n\t\t\t\tthis._material = material;\n\t\t\t\tif (material) {\n\t\t\t\t\t\tmaterial.addMeshInstanceRef(this);\n\t\t\t\t\t\tthis.transparent = material.transparent;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\t_updateShaderDefs(shaderDefs) {\n\t\t\t\tif (shaderDefs !== this._shaderDefs) {\n\t\t\t\t\t\tthis._shaderDefs = shaderDefs;\n\t\t\t\t\t\tthis.clearShaders();\n\t\t\t\t}\n\t\t}\n\t\tset calculateSortDistance(calculateSortDistance) {\n\t\t\t\tthis._calculateSortDistance = calculateSortDistance;\n\t\t}\n\t\tget calculateSortDistance() {\n\t\t\t\treturn this._calculateSortDistance;\n\t\t}\n\t\tset receiveShadow(val) {\n\t\t\t\tif (this._receiveShadow !== val) {\n\t\t\t\t\t\tthis._receiveShadow = val;\n\t\t\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs & ~SHADERDEF_NOSHADOW : this._shaderDefs | SHADERDEF_NOSHADOW);\n\t\t\t\t}\n\t\t}\n\t\tget receiveShadow() {\n\t\t\t\treturn this._receiveShadow;\n\t\t}\n\t\tset batching(val) {\n\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_BATCH : this._shaderDefs & ~SHADERDEF_BATCH);\n\t\t}\n\t\tget batching() {\n\t\t\t\treturn (this._shaderDefs & SHADERDEF_BATCH) !== 0;\n\t\t}\n\t\tset skinInstance(val) {\n\t\t\t\tthis._skinInstance = val;\n\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SKIN : this._shaderDefs & ~SHADERDEF_SKIN);\n\t\t\t\tthis._setupSkinUpdate();\n\t\t}\n\t\tget skinInstance() {\n\t\t\t\treturn this._skinInstance;\n\t\t}\n\t\tset morphInstance(val) {\n\t\t\t\tthis._morphInstance?.destroy();\n\t\t\t\tthis._morphInstance = val;\n\t\t\t\tlet shaderDefs = this._shaderDefs;\n\t\t\t\tshaderDefs = val && val.morph.morphPositions ? shaderDefs | SHADERDEF_MORPH_POSITION : shaderDefs & ~SHADERDEF_MORPH_POSITION;\n\t\t\t\tshaderDefs = val && val.morph.morphNormals ? shaderDefs | SHADERDEF_MORPH_NORMAL : shaderDefs & ~SHADERDEF_MORPH_NORMAL;\n\t\t\t\tshaderDefs = val && val.morph.intRenderFormat ? shaderDefs | SHADERDEF_MORPH_TEXTURE_BASED_INT : shaderDefs & ~SHADERDEF_MORPH_TEXTURE_BASED_INT;\n\t\t\t\tthis._updateShaderDefs(shaderDefs);\n\t\t}\n\t\tget morphInstance() {\n\t\t\t\treturn this._morphInstance;\n\t\t}\n\t\tset screenSpace(val) {\n\t\t\t\tif (this._screenSpace !== val) {\n\t\t\t\t\t\tthis._screenSpace = val;\n\t\t\t\t\t\tthis._updateShaderDefs(val ? this._shaderDefs | SHADERDEF_SCREENSPACE : this._shaderDefs & ~SHADERDEF_SCREENSPACE);\n\t\t\t\t}\n\t\t}\n\t\tget screenSpace() {\n\t\t\t\treturn this._screenSpace;\n\t\t}\n\t\tset key(val) {\n\t\t\t\tthis._sortKeyForward = val;\n\t\t}\n\t\tget key() {\n\t\t\t\treturn this._sortKeyForward;\n\t\t}\n\t\tset mask(val) {\n\t\t\t\tconst toggles = this._shaderDefs & 0x0000FFFF;\n\t\t\t\tthis._updateShaderDefs(toggles | val << 16);\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._shaderDefs >> 16;\n\t\t}\n\t\tset instancingCount(value) {\n\t\t\t\tif (this.instancingData) {\n\t\t\t\t\t\tthis.instancingData.count = value;\n\t\t\t\t}\n\t\t}\n\t\tget instancingCount() {\n\t\t\t\treturn this.instancingData ? this.instancingData.count : 0;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst mesh = this.mesh;\n\t\t\t\tif (mesh) {\n\t\t\t\t\t\tthis.mesh = null;\n\t\t\t\t\t\tif (mesh.refCount < 1) {\n\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], null);\n\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], null);\n\t\t\t\tthis._skinInstance?.destroy();\n\t\t\t\tthis._skinInstance = null;\n\t\t\t\tthis.morphInstance?.destroy();\n\t\t\t\tthis.morphInstance = null;\n\t\t\t\tthis.clearShaders();\n\t\t\t\tthis.material = null;\n\t\t\t\tthis.instancingData?.destroy();\n\t\t\t\tthis.destroyDrawCommands();\n\t\t}\n\t\tdestroyDrawCommands() {\n\t\t\t\tif (this.drawCommands) {\n\t\t\t\t\t\tfor (const cmd of this.drawCommands.values()){\n\t\t\t\t\t\t\t\tcmd?.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.drawCommands = null;\n\t\t\t\t}\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.lightmapParamNames = [\n\t\t\t\t\t\t'texture_lightMap',\n\t\t\t\t\t\t'texture_dirLightMap'\n\t\t\t\t];\n\t\t}\n\t\tstatic _prepareRenderStyleForArray(meshInstances, renderStyle) {\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i]._renderStyle = renderStyle;\n\t\t\t\t\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\tif (!_meshSet.has(mesh)) {\n\t\t\t\t\t\t\t\t\t\t_meshSet.add(mesh);\n\t\t\t\t\t\t\t\t\t\tmesh.prepareRenderState(renderStyle);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_meshSet.clear();\n\t\t\t\t}\n\t\t}\n\t\t_isVisible(camera) {\n\t\t\t\tif (this.visible) {\n\t\t\t\t\t\tif (this.isVisibleFunc) {\n\t\t\t\t\t\t\t\treturn this.isVisibleFunc(camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_tempSphere.center = this.aabb.center;\n\t\t\t\t\t\t_tempSphere.radius = this._aabb.halfExtents.length();\n\t\t\t\t\t\treturn camera.frustum.containsSphere(_tempSphere) > 0;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tconst { material } = this;\n\t\t\t\tthis._sortKeyForward = this._drawBucket << 23 | (material.alphaToCoverage || material.alphaTest ? 0x400000 : 0) | material.id & 0x3fffff;\n\t\t}\n\t\tsetInstancing(vertexBuffer, cull = false) {\n\t\t\t\tif (vertexBuffer) {\n\t\t\t\t\t\tthis.instancingData = new InstancingData(vertexBuffer.numVertices);\n\t\t\t\t\t\tthis.instancingData.vertexBuffer = vertexBuffer;\n\t\t\t\t\t\tvertexBuffer.format.instancing = true;\n\t\t\t\t\t\tthis.cull = cull;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.instancingData = null;\n\t\t\t\t\t\tthis.cull = true;\n\t\t\t\t}\n\t\t\t\tthis._updateShaderDefs(vertexBuffer ? this._shaderDefs | SHADERDEF_INSTANCING : this._shaderDefs & ~SHADERDEF_INSTANCING);\n\t\t}\n\t\tsetIndirect(camera, slot, count = 1) {\n\t\t\t\tconst key = camera?.camera ?? null;\n\t\t\t\tif (slot === -1) {\n\t\t\t\t\t\tthis._deleteDrawCommandsKey(key);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.drawCommands ??= new Map();\n\t\t\t\t\t\tconst cmd = this.drawCommands.get(key) ?? new DrawCommands(this.mesh.device);\n\t\t\t\t\t\tcmd.slotIndex = slot;\n\t\t\t\t\t\tcmd.update(count);\n\t\t\t\t\t\tthis.drawCommands.set(key, cmd);\n\t\t\t\t\t\tconst device = this.mesh.device;\n\t\t\t\t\t\tdevice.mapsToClear.add(this.drawCommands);\n\t\t\t\t}\n\t\t}\n\t\tsetMultiDraw(camera, maxCount = 1) {\n\t\t\t\tconst key = camera?.camera ?? null;\n\t\t\t\tlet cmd;\n\t\t\t\tif (maxCount === 0) {\n\t\t\t\t\t\tthis._deleteDrawCommandsKey(key);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.drawCommands ??= new Map();\n\t\t\t\t\t\tcmd = this.drawCommands.get(key);\n\t\t\t\t\t\tif (!cmd) {\n\t\t\t\t\t\t\t\tconst indexBuffer = this.mesh.indexBuffer?.[0];\n\t\t\t\t\t\t\t\tconst indexFormat = indexBuffer?.format;\n\t\t\t\t\t\t\t\tconst indexSizeBytes = indexFormat !== undefined ? indexFormatByteSize[indexFormat] : 0;\n\t\t\t\t\t\t\t\tcmd = new DrawCommands(this.mesh.device, indexSizeBytes);\n\t\t\t\t\t\t\t\tthis.drawCommands.set(key, cmd);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcmd.allocate(maxCount);\n\t\t\t\t}\n\t\t\t\treturn cmd;\n\t\t}\n\t\t_deleteDrawCommandsKey(key) {\n\t\t\t\tconst cmds = this.drawCommands;\n\t\t\t\tif (cmds) {\n\t\t\t\t\t\tconst cmd = cmds.get(key);\n\t\t\t\t\t\tcmd?.destroy();\n\t\t\t\t\t\tcmds.delete(key);\n\t\t\t\t\t\tif (cmds.size === 0) {\n\t\t\t\t\t\t\t\tthis.destroyDrawCommands();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetDrawCommands(camera) {\n\t\t\t\tconst cmds = this.drawCommands;\n\t\t\t\tif (!cmds) return undefined;\n\t\t\t\treturn cmds.get(camera) ?? cmds.get(null);\n\t\t}\n\t\tgetIndirectMetaData() {\n\t\t\t\tconst prim = this.mesh?.primitive[this.renderStyle];\n\t\t\t\tconst data = this.meshMetaData ?? (this.meshMetaData = new Int32Array(4));\n\t\t\t\tdata[0] = prim.count;\n\t\t\t\tdata[1] = prim.base;\n\t\t\t\tdata[2] = prim.baseVertex;\n\t\t\t\treturn data;\n\t\t}\n\t\tensureMaterial(device) {\n\t\t\t\tif (!this.material) {\n\t\t\t\t\t\tthis.material = getDefaultMaterial(device);\n\t\t\t\t}\n\t\t}\n\t\tclearParameters() {\n\t\t\t\tthis.parameters = {};\n\t\t}\n\t\tgetParameters() {\n\t\t\t\treturn this.parameters;\n\t\t}\n\t\tgetParameter(name) {\n\t\t\t\treturn this.parameters[name];\n\t\t}\n\t\tsetParameter(name, data, passFlags = 0xFFFFFFFF) {\n\t\t\t\tconst param = this.parameters[name];\n\t\t\t\tif (param) {\n\t\t\t\t\t\tparam.data = data;\n\t\t\t\t\t\tparam.passFlags = passFlags;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.parameters[name] = {\n\t\t\t\t\t\t\t\tscopeId: null,\n\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\tpassFlags: passFlags\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tsetRealtimeLightmap(name, texture) {\n\t\t\t\tconst old = this.getParameter(name);\n\t\t\t\tif (old === texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (old) {\n\t\t\t\t\t\tLightmapCache.decRef(old.data);\n\t\t\t\t}\n\t\t\t\tif (texture) {\n\t\t\t\t\t\tLightmapCache.incRef(texture);\n\t\t\t\t\t\tthis.setParameter(name, texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.deleteParameter(name);\n\t\t\t\t}\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tif (this.parameters[name]) {\n\t\t\t\t\t\tdelete this.parameters[name];\n\t\t\t\t}\n\t\t}\n\t\tsetParameters(device, passFlag) {\n\t\t\t\tconst parameters = this.parameters;\n\t\t\t\tfor(const paramName in parameters){\n\t\t\t\t\t\tconst parameter = parameters[paramName];\n\t\t\t\t\t\tif (parameter.passFlags & passFlag) {\n\t\t\t\t\t\t\t\tif (!parameter.scopeId) {\n\t\t\t\t\t\t\t\t\t\tparameter.scopeId = device.scope.resolve(paramName);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparameter.scopeId.setValue(parameter.data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetLightmapped(value) {\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis.mask = (this.mask | MASK_AFFECT_LIGHTMAPPED) & -6;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], null);\n\t\t\t\t\t\tthis.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], null);\n\t\t\t\t\t\tthis._shaderDefs &= -4289;\n\t\t\t\t\t\tthis.mask = (this.mask | MASK_AFFECT_DYNAMIC) & -7;\n\t\t\t\t}\n\t\t}\n\t\tsetCustomAabb(aabb) {\n\t\t\t\tif (aabb) {\n\t\t\t\t\t\tif (this._customAabb) {\n\t\t\t\t\t\t\t\tthis._customAabb.copy(aabb);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._customAabb = aabb.clone();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._customAabb = null;\n\t\t\t\t\t\tthis._aabbVer = -1;\n\t\t\t\t}\n\t\t\t\tthis._setupSkinUpdate();\n\t\t}\n\t\t_setupSkinUpdate() {\n\t\t\t\tif (this._skinInstance) {\n\t\t\t\t\t\tthis._skinInstance._updateBeforeCull = !this._customAabb;\n\t\t\t\t}\n\t\t}\n}\n\nconst _triFanIndices = [\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t2,\n\t\t3,\n\t\t1\n];\nconst _triStripIndices = [\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t0,\n\t\t3,\n\t\t2\n];\nconst mat3 = new Mat3();\nfunction paramsIdentical(a, b) {\n\t\tif (a && !b) return false;\n\t\tif (!a && b) return false;\n\t\ta = a.data;\n\t\tb = b.data;\n\t\tif (a === b) return true;\n\t\tif (a instanceof Float32Array && b instanceof Float32Array) {\n\t\t\t\tif (a.length !== b.length) return false;\n\t\t\t\tfor(let i = 0; i < a.length; i++){\n\t\t\t\t\t\tif (a[i] !== b[i]) return false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\treturn false;\n}\nfunction equalParamSets(params1, params2) {\n\t\tfor(const param in params1){\n\t\t\t\tif (params1.hasOwnProperty(param) && !paramsIdentical(params1[param], params2[param])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\t\tfor(const param in params2){\n\t\t\t\tif (params2.hasOwnProperty(param) && !paramsIdentical(params2[param], params1[param])) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\t\treturn true;\n}\nfunction getScaleSign(mi) {\n\t\treturn mi.node.worldTransform.scaleSign;\n}\nclass BatchManager {\n\t\tconstructor(device, root, scene){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.rootNode = root;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis._init = false;\n\t\t\t\tthis._batchGroups = {};\n\t\t\t\tthis._batchGroupCounter = 0;\n\t\t\t\tthis._batchList = [];\n\t\t\t\tthis._dirtyGroups = [];\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.device = null;\n\t\t\t\tthis.rootNode = null;\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis._batchGroups = {};\n\t\t\t\tthis._batchList = [];\n\t\t\t\tthis._dirtyGroups = [];\n\t\t}\n\t\taddGroup(name, dynamic, maxAabbSize, id, layers) {\n\t\t\t\tif (id === undefined) {\n\t\t\t\t\t\tid = this._batchGroupCounter;\n\t\t\t\t\t\tthis._batchGroupCounter++;\n\t\t\t\t}\n\t\t\t\tif (this._batchGroups[id]) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst group = new BatchGroup(id, name, dynamic, maxAabbSize, layers);\n\t\t\t\tthis._batchGroups[id] = group;\n\t\t\t\treturn group;\n\t\t}\n\t\tremoveGroup(id) {\n\t\t\t\tif (!this._batchGroups[id]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst newBatchList = [];\n\t\t\t\tfor(let i = 0; i < this._batchList.length; i++){\n\t\t\t\t\t\tif (this._batchList[i].batchGroupId === id) {\n\t\t\t\t\t\t\t\tthis.destroyBatch(this._batchList[i]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tnewBatchList.push(this._batchList[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._batchList = newBatchList;\n\t\t\t\tthis._removeModelsFromBatchGroup(this.rootNode, id);\n\t\t\t\tdelete this._batchGroups[id];\n\t\t}\n\t\tmarkGroupDirty(id) {\n\t\t\t\tif (this._dirtyGroups.indexOf(id) < 0) {\n\t\t\t\t\t\tthis._dirtyGroups.push(id);\n\t\t\t\t}\n\t\t}\n\t\tgetGroupByName(name) {\n\t\t\t\tconst groups = this._batchGroups;\n\t\t\t\tfor(const group in groups){\n\t\t\t\t\t\tif (!groups.hasOwnProperty(group)) continue;\n\t\t\t\t\t\tif (groups[group].name === name) {\n\t\t\t\t\t\t\t\treturn groups[group];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tgetBatches(batchGroupId) {\n\t\t\t\tconst results = [];\n\t\t\t\tconst len = this._batchList.length;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst batch = this._batchList[i];\n\t\t\t\t\t\tif (batch.batchGroupId === batchGroupId) {\n\t\t\t\t\t\t\t\tresults.push(batch);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn results;\n\t\t}\n\t\t_removeModelsFromBatchGroup(node, id) {\n\t\t\t\tif (!node.enabled) return;\n\t\t\t\tif (node.model && node.model.batchGroupId === id) {\n\t\t\t\t\t\tnode.model.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (node.render && node.render.batchGroupId === id) {\n\t\t\t\t\t\tnode.render.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (node.element && node.element.batchGroupId === id) {\n\t\t\t\t\t\tnode.element.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (node.sprite && node.sprite.batchGroupId === id) {\n\t\t\t\t\t\tnode.sprite.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\tthis._removeModelsFromBatchGroup(node._children[i], id);\n\t\t\t\t}\n\t\t}\n\t\tinsert(type, groupId, node) {\n\t\t\t\tconst group = this._batchGroups[groupId];\n\t\t\t\tif (group) {\n\t\t\t\t\t\tif (group._obj[type].indexOf(node) < 0) {\n\t\t\t\t\t\t\t\tgroup._obj[type].push(node);\n\t\t\t\t\t\t\t\tthis.markGroupDirty(groupId);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremove(type, groupId, node) {\n\t\t\t\tconst group = this._batchGroups[groupId];\n\t\t\t\tif (group) {\n\t\t\t\t\t\tconst idx = group._obj[type].indexOf(node);\n\t\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\t\t\tgroup._obj[type].splice(idx, 1);\n\t\t\t\t\t\t\t\tthis.markGroupDirty(groupId);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_extractRender(node, arr, group, groupMeshInstances) {\n\t\t\t\tif (node.render) {\n\t\t\t\t\t\tarr = groupMeshInstances[node.render.batchGroupId] = arr.concat(node.render.meshInstances);\n\t\t\t\t\t\tnode.render.removeFromLayers();\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t}\n\t\t_extractModel(node, arr, group, groupMeshInstances) {\n\t\t\t\tif (node.model && node.model.model) {\n\t\t\t\t\t\tarr = groupMeshInstances[node.model.batchGroupId] = arr.concat(node.model.meshInstances);\n\t\t\t\t\t\tnode.model.removeModelFromLayers();\n\t\t\t\t}\n\t\t\t\treturn arr;\n\t\t}\n\t\t_extractElement(node, arr, group) {\n\t\t\t\tif (!node.element) return;\n\t\t\t\tlet valid = false;\n\t\t\t\tif (node.element._text && node.element._text._model.meshInstances.length > 0) {\n\t\t\t\t\t\tarr.push(node.element._text._model.meshInstances[0]);\n\t\t\t\t\t\tnode.element.removeModelFromLayers(node.element._text._model);\n\t\t\t\t\t\tvalid = true;\n\t\t\t\t} else if (node.element._image) {\n\t\t\t\t\t\tarr.push(node.element._image._renderable.meshInstance);\n\t\t\t\t\t\tnode.element.removeModelFromLayers(node.element._image._renderable.model);\n\t\t\t\t\t\tif (node.element._image._renderable.unmaskMeshInstance) {\n\t\t\t\t\t\t\t\tarr.push(node.element._image._renderable.unmaskMeshInstance);\n\t\t\t\t\t\t\t\tif (!node.element._image._renderable.unmaskMeshInstance.stencilFront || !node.element._image._renderable.unmaskMeshInstance.stencilBack) {\n\t\t\t\t\t\t\t\t\t\tnode.element._dirtifyMask();\n\t\t\t\t\t\t\t\t\t\tnode.element._onPrerender();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvalid = true;\n\t\t\t\t}\n\t\t\t\tif (valid) {\n\t\t\t\t\t\tgroup._ui = true;\n\t\t\t\t}\n\t\t}\n\t\t_collectAndRemoveMeshInstances(groupMeshInstances, groupIds) {\n\t\t\t\tfor(let g = 0; g < groupIds.length; g++){\n\t\t\t\t\t\tconst id = groupIds[g];\n\t\t\t\t\t\tconst group = this._batchGroups[id];\n\t\t\t\t\t\tif (!group) continue;\n\t\t\t\t\t\tlet arr = groupMeshInstances[id];\n\t\t\t\t\t\tif (!arr) arr = groupMeshInstances[id] = [];\n\t\t\t\t\t\tfor(let m = 0; m < group._obj.model.length; m++){\n\t\t\t\t\t\t\t\tarr = this._extractModel(group._obj.model[m], arr, group, groupMeshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let r = 0; r < group._obj.render.length; r++){\n\t\t\t\t\t\t\t\tarr = this._extractRender(group._obj.render[r], arr, group, groupMeshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let e = 0; e < group._obj.element.length; e++){\n\t\t\t\t\t\t\t\tthis._extractElement(group._obj.element[e], arr, group);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let s = 0; s < group._obj.sprite.length; s++){\n\t\t\t\t\t\t\t\tconst node = group._obj.sprite[s];\n\t\t\t\t\t\t\t\tif (node.sprite && node.sprite._meshInstance && (group.dynamic || node.sprite.sprite._renderMode === SPRITE_RENDERMODE_SIMPLE)) {\n\t\t\t\t\t\t\t\t\t\tarr.push(node.sprite._meshInstance);\n\t\t\t\t\t\t\t\t\t\tnode.sprite.removeModelFromLayers();\n\t\t\t\t\t\t\t\t\t\tgroup._sprite = true;\n\t\t\t\t\t\t\t\t\t\tnode.sprite._batchGroup = group;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgenerate(groupIds) {\n\t\t\t\tconst groupMeshInstances = {};\n\t\t\t\tif (!groupIds) {\n\t\t\t\t\t\tgroupIds = Object.keys(this._batchGroups);\n\t\t\t\t}\n\t\t\t\tconst newBatchList = [];\n\t\t\t\tfor(let i = 0; i < this._batchList.length; i++){\n\t\t\t\t\t\tif (groupIds.indexOf(this._batchList[i].batchGroupId) < 0) {\n\t\t\t\t\t\t\t\tnewBatchList.push(this._batchList[i]);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.destroyBatch(this._batchList[i]);\n\t\t\t\t}\n\t\t\t\tthis._batchList = newBatchList;\n\t\t\t\tthis._collectAndRemoveMeshInstances(groupMeshInstances, groupIds);\n\t\t\t\tif (groupIds === this._dirtyGroups) {\n\t\t\t\t\t\tthis._dirtyGroups.length = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst newDirtyGroups = [];\n\t\t\t\t\t\tfor(let i = 0; i < this._dirtyGroups.length; i++){\n\t\t\t\t\t\t\t\tif (groupIds.indexOf(this._dirtyGroups[i]) < 0) newDirtyGroups.push(this._dirtyGroups[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyGroups = newDirtyGroups;\n\t\t\t\t}\n\t\t\t\tlet group, lists, groupData, batch;\n\t\t\t\tfor(const groupId in groupMeshInstances){\n\t\t\t\t\t\tif (!groupMeshInstances.hasOwnProperty(groupId)) continue;\n\t\t\t\t\t\tgroup = groupMeshInstances[groupId];\n\t\t\t\t\t\tgroupData = this._batchGroups[groupId];\n\t\t\t\t\t\tif (!groupData) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlists = this.prepare(group, groupData.dynamic, groupData.maxAabbSize, groupData._ui || groupData._sprite);\n\t\t\t\t\t\tfor(let i = 0; i < lists.length; i++){\n\t\t\t\t\t\t\t\tbatch = this.create(lists[i], groupData.dynamic, parseInt(groupId, 10));\n\t\t\t\t\t\t\t\tif (batch) {\n\t\t\t\t\t\t\t\t\t\tbatch.addToLayers(this.scene, groupData.layers);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepare(meshInstances, dynamic, maxAabbSize = Number.POSITIVE_INFINITY, translucent) {\n\t\t\t\tif (meshInstances.length === 0) return [];\n\t\t\t\tconst halfMaxAabbSize = maxAabbSize * 0.5;\n\t\t\t\tconst maxInstanceCount = 1024;\n\t\t\t\tconst maxNumVertices = 0xffffffff;\n\t\t\t\tconst aabb = new BoundingBox();\n\t\t\t\tconst testAabb = new BoundingBox();\n\t\t\t\tlet skipTranslucentAabb = null;\n\t\t\t\tlet sf;\n\t\t\t\tconst lists = [];\n\t\t\t\tlet j = 0;\n\t\t\t\tif (translucent) {\n\t\t\t\t\t\tmeshInstances.sort((a, b)=>{\n\t\t\t\t\t\t\t\treturn a.drawOrder - b.drawOrder;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet meshInstancesLeftA = meshInstances;\n\t\t\t\tlet meshInstancesLeftB;\n\t\t\t\tconst skipMesh = translucent ? function(mi) {\n\t\t\t\t\t\tif (skipTranslucentAabb) {\n\t\t\t\t\t\t\t\tskipTranslucentAabb.add(mi.aabb);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tskipTranslucentAabb = mi.aabb.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstancesLeftB.push(mi);\n\t\t\t\t} : function(mi) {\n\t\t\t\t\t\tmeshInstancesLeftB.push(mi);\n\t\t\t\t};\n\t\t\t\twhile(meshInstancesLeftA.length > 0){\n\t\t\t\t\t\tlists[j] = [\n\t\t\t\t\t\t\t\tmeshInstancesLeftA[0]\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmeshInstancesLeftB = [];\n\t\t\t\t\t\tconst material = meshInstancesLeftA[0].material;\n\t\t\t\t\t\tconst layer = meshInstancesLeftA[0].layer;\n\t\t\t\t\t\tconst defs = meshInstancesLeftA[0]._shaderDefs;\n\t\t\t\t\t\tconst params = meshInstancesLeftA[0].parameters;\n\t\t\t\t\t\tconst stencil = meshInstancesLeftA[0].stencilFront;\n\t\t\t\t\t\tlet vertCount = meshInstancesLeftA[0].mesh.vertexBuffer.getNumVertices();\n\t\t\t\t\t\tconst drawOrder = meshInstancesLeftA[0].drawOrder;\n\t\t\t\t\t\taabb.copy(meshInstancesLeftA[0].aabb);\n\t\t\t\t\t\tconst scaleSign = getScaleSign(meshInstancesLeftA[0]);\n\t\t\t\t\t\tconst vertexFormatBatchingHash = meshInstancesLeftA[0].mesh.vertexBuffer.format.batchingHash;\n\t\t\t\t\t\tconst indexed = meshInstancesLeftA[0].mesh.primitive[0].indexed;\n\t\t\t\t\t\tskipTranslucentAabb = null;\n\t\t\t\t\t\tfor(let i = 1; i < meshInstancesLeftA.length; i++){\n\t\t\t\t\t\t\t\tconst mi = meshInstancesLeftA[i];\n\t\t\t\t\t\t\t\tif (dynamic && lists[j].length >= maxInstanceCount) {\n\t\t\t\t\t\t\t\t\t\tmeshInstancesLeftB = meshInstancesLeftB.concat(meshInstancesLeftA.slice(i));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (material !== mi.material || layer !== mi.layer || vertexFormatBatchingHash !== mi.mesh.vertexBuffer.format.batchingHash || indexed !== mi.mesh.primitive[0].indexed || defs !== mi._shaderDefs || vertCount + mi.mesh.vertexBuffer.getNumVertices() > maxNumVertices) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttestAabb.copy(aabb);\n\t\t\t\t\t\t\t\ttestAabb.add(mi.aabb);\n\t\t\t\t\t\t\t\tif (testAabb.halfExtents.x > halfMaxAabbSize || testAabb.halfExtents.y > halfMaxAabbSize || testAabb.halfExtents.z > halfMaxAabbSize) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (stencil) {\n\t\t\t\t\t\t\t\t\t\tif (!(sf = mi.stencilFront) || stencil.func !== sf.func || stencil.zpass !== sf.zpass) {\n\t\t\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scaleSign !== getScaleSign(mi)) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!equalParamSets(params, mi.parameters)) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (translucent && skipTranslucentAabb && skipTranslucentAabb.intersects(mi.aabb) && mi.drawOrder !== drawOrder) {\n\t\t\t\t\t\t\t\t\t\tskipMesh(mi);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\taabb.add(mi.aabb);\n\t\t\t\t\t\t\t\tvertCount += mi.mesh.vertexBuffer.getNumVertices();\n\t\t\t\t\t\t\t\tlists[j].push(mi);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tj++;\n\t\t\t\t\t\tmeshInstancesLeftA = meshInstancesLeftB;\n\t\t\t\t}\n\t\t\t\treturn lists;\n\t\t}\n\t\tcollectBatchedMeshData(meshInstances, dynamic) {\n\t\t\t\tlet streams = null;\n\t\t\t\tlet batchNumVerts = 0;\n\t\t\t\tlet batchNumIndices = 0;\n\t\t\t\tlet material = null;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tif (meshInstances[i].visible) {\n\t\t\t\t\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\tconst numVerts = mesh.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tbatchNumVerts += numVerts;\n\t\t\t\t\t\t\t\tif (mesh.primitive[0].indexed) {\n\t\t\t\t\t\t\t\t\t\tbatchNumIndices += mesh.primitive[0].count;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst primitiveType = mesh.primitive[0].type;\n\t\t\t\t\t\t\t\t\t\tif (primitiveType === PRIMITIVE_TRIFAN || primitiveType === PRIMITIVE_TRISTRIP) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (mesh.primitive[0].count === 4) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbatchNumIndices += 6;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!streams) {\n\t\t\t\t\t\t\t\t\t\tmaterial = meshInstances[i].material;\n\t\t\t\t\t\t\t\t\t\tstreams = {};\n\t\t\t\t\t\t\t\t\t\tconst elems = mesh.vertexBuffer.format.elements;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < elems.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst semantic = elems[j].name;\n\t\t\t\t\t\t\t\t\t\t\t\tstreams[semantic] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumComponents: elems[j].numComponents,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdataType: elems[j].dataType,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnormalize: elems[j].normalize,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\t\t\t\t\tstreams[SEMANTIC_BLENDINDICES] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumComponents: 1,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdataType: TYPE_FLOAT32,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnormalize: false,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tstreams: streams,\n\t\t\t\t\t\tbatchNumVerts: batchNumVerts,\n\t\t\t\t\t\tbatchNumIndices: batchNumIndices,\n\t\t\t\t\t\tmaterial: material\n\t\t\t\t};\n\t\t}\n\t\tcreate(meshInstances, dynamic, batchGroupId) {\n\t\t\t\tif (!this._init) {\n\t\t\t\t\t\tthis.vertexFormats = {};\n\t\t\t\t\t\tthis._init = true;\n\t\t\t\t}\n\t\t\t\tlet stream = null;\n\t\t\t\tlet semantic;\n\t\t\t\tlet mesh, numVerts;\n\t\t\t\tlet batch = null;\n\t\t\t\tconst batchData = this.collectBatchedMeshData(meshInstances, dynamic);\n\t\t\t\tif (batchData.streams) {\n\t\t\t\t\t\tconst streams = batchData.streams;\n\t\t\t\t\t\tlet material = batchData.material;\n\t\t\t\t\t\tconst batchNumVerts = batchData.batchNumVerts;\n\t\t\t\t\t\tconst batchNumIndices = batchData.batchNumIndices;\n\t\t\t\t\t\tbatch = new Batch(meshInstances, dynamic, batchGroupId);\n\t\t\t\t\t\tthis._batchList.push(batch);\n\t\t\t\t\t\tlet indexBase, indexBaseVertex, numIndices, indexData;\n\t\t\t\t\t\tlet verticesOffset = 0;\n\t\t\t\t\t\tlet indexOffset = 0;\n\t\t\t\t\t\tlet transform;\n\t\t\t\t\t\tconst indexArrayType = batchNumVerts <= 0xffff ? Uint16Array : Uint32Array;\n\t\t\t\t\t\tconst indices = new indexArrayType(batchNumIndices);\n\t\t\t\t\t\tfor(semantic in streams){\n\t\t\t\t\t\t\t\tstream = streams[semantic];\n\t\t\t\t\t\t\t\tstream.typeArrayType = typedArrayTypes[stream.dataType];\n\t\t\t\t\t\t\t\tstream.elementByteSize = typedArrayTypesByteSize[stream.dataType];\n\t\t\t\t\t\t\t\tstream.buffer = new stream.typeArrayType(batchNumVerts * stream.numComponents);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tif (!meshInstances[i].visible) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\tnumVerts = mesh.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tif (!dynamic) {\n\t\t\t\t\t\t\t\t\t\ttransform = meshInstances[i].node.getWorldTransform();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(semantic in streams){\n\t\t\t\t\t\t\t\t\t\tif (semantic !== SEMANTIC_BLENDINDICES) {\n\t\t\t\t\t\t\t\t\t\t\t\tstream = streams[semantic];\n\t\t\t\t\t\t\t\t\t\t\t\tconst subarray = new stream.typeArrayType(stream.buffer.buffer, stream.elementByteSize * stream.count);\n\t\t\t\t\t\t\t\t\t\t\t\tconst totalComponents = mesh.getVertexStream(semantic, subarray) * stream.numComponents;\n\t\t\t\t\t\t\t\t\t\t\t\tstream.count += totalComponents;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!dynamic && stream.numComponents >= 3) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (semantic === SEMANTIC_POSITION) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m = transform.data;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m0 = m[0];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m1 = m[1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m2 = m[2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m4 = m[4];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m5 = m[5];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m6 = m[6];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m8 = m[8];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m9 = m[9];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m10 = m[10];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m12 = m[12];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m13 = m[13];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst m14 = m[14];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet x, y, z;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < totalComponents; j += stream.numComponents){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tx = subarray[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ty = subarray[j + 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tz = subarray[j + 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j] = x * m0 + y * m4 + z * m8 + m12;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 1] = x * m1 + y * m5 + z * m9 + m13;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 2] = x * m2 + y * m6 + z * m10 + m14;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else if (semantic === SEMANTIC_NORMAL || semantic === SEMANTIC_TANGENT) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmat3.invertMat4(transform).transpose();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst [m0, m1, m2, m3, m4, m5, m6, m7, m8] = mat3.data;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet x, y, z;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < totalComponents; j += stream.numComponents){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tx = subarray[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ty = subarray[j + 1];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tz = subarray[j + 2];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j] = x * m0 + y * m3 + z * m6;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 1] = x * m1 + y * m4 + z * m7;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tsubarray[j + 2] = x * m2 + y * m5 + z * m8;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\t\t\tstream = streams[SEMANTIC_BLENDINDICES];\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < numVerts; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tstream.buffer[stream.count++] = i;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mesh.primitive[0].indexed) {\n\t\t\t\t\t\t\t\t\t\tindexBase = mesh.primitive[0].base;\n\t\t\t\t\t\t\t\t\t\tindexBaseVertex = mesh.primitive[0].baseVertex || 0;\n\t\t\t\t\t\t\t\t\t\tnumIndices = mesh.primitive[0].count;\n\t\t\t\t\t\t\t\t\t\tconst srcFormat = mesh.indexBuffer[0].getFormat();\n\t\t\t\t\t\t\t\t\t\tindexData = new typedArrayIndexFormats[srcFormat](mesh.indexBuffer[0].storage);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tindexBaseVertex = 0;\n\t\t\t\t\t\t\t\t\t\tconst primitiveType = mesh.primitive[0].type;\n\t\t\t\t\t\t\t\t\t\tif (primitiveType === PRIMITIVE_TRIFAN || primitiveType === PRIMITIVE_TRISTRIP) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (mesh.primitive[0].count === 4) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindexBase = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumIndices = 6;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindexData = primitiveType === PRIMITIVE_TRIFAN ? _triFanIndices : _triStripIndices;\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumIndices = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let j = 0; j < numIndices; j++){\n\t\t\t\t\t\t\t\t\t\tindices[j + indexOffset] = indexData[indexBase + j] + indexBaseVertex + verticesOffset;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tindexOffset += numIndices;\n\t\t\t\t\t\t\t\tverticesOffset += numVerts;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmesh = new Mesh(this.device);\n\t\t\t\t\t\tfor(semantic in streams){\n\t\t\t\t\t\t\t\tstream = streams[semantic];\n\t\t\t\t\t\t\t\tmesh.setVertexStream(semantic, stream.buffer, stream.numComponents, undefined, stream.dataType, stream.normalize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (indices.length > 0) {\n\t\t\t\t\t\t\t\tmesh.setIndices(indices);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmesh.update(PRIMITIVE_TRIANGLES, false);\n\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\tmaterial = material.clone();\n\t\t\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material, this.rootNode);\n\t\t\t\t\t\tmeshInstance.castShadow = batch.origMeshInstances[0].castShadow;\n\t\t\t\t\t\tmeshInstance.parameters = batch.origMeshInstances[0].parameters;\n\t\t\t\t\t\tmeshInstance.layer = batch.origMeshInstances[0].layer;\n\t\t\t\t\t\tmeshInstance._shaderDefs = batch.origMeshInstances[0]._shaderDefs;\n\t\t\t\t\t\tmeshInstance.batching = true;\n\t\t\t\t\t\tmeshInstance.cull = batch.origMeshInstances[0].cull;\n\t\t\t\t\t\tconst batchGroup = this._batchGroups[batchGroupId];\n\t\t\t\t\t\tif (batchGroup && batchGroup._ui) {\n\t\t\t\t\t\t\t\tmeshInstance.cull = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (dynamic) {\n\t\t\t\t\t\t\t\tconst nodes = [];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < batch.origMeshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tnodes.push(batch.origMeshInstances[i].node);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInstance.skinInstance = new SkinBatchInstance(this.device, nodes, this.rootNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstance._updateAabb = false;\n\t\t\t\t\t\tmeshInstance.drawOrder = batch.origMeshInstances[0].drawOrder;\n\t\t\t\t\t\tmeshInstance.stencilFront = batch.origMeshInstances[0].stencilFront;\n\t\t\t\t\t\tmeshInstance.stencilBack = batch.origMeshInstances[0].stencilBack;\n\t\t\t\t\t\tmeshInstance.flipFacesFactor = getScaleSign(batch.origMeshInstances[0]);\n\t\t\t\t\t\tmeshInstance.castShadow = batch.origMeshInstances[0].castShadow;\n\t\t\t\t\t\tbatch.meshInstance = meshInstance;\n\t\t\t\t\t\tbatch.updateBoundingBox();\n\t\t\t\t}\n\t\t\t\treturn batch;\n\t\t}\n\t\tupdateAll() {\n\t\t\t\tif (this._dirtyGroups.length > 0) {\n\t\t\t\t\t\tthis.generate(this._dirtyGroups);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._batchList.length; i++){\n\t\t\t\t\t\tif (!this._batchList[i].dynamic) continue;\n\t\t\t\t\t\tthis._batchList[i].updateBoundingBox();\n\t\t\t\t}\n\t\t}\n\t\tclone(batch, clonedMeshInstances) {\n\t\t\t\tconst batch2 = new Batch(clonedMeshInstances, batch.dynamic, batch.batchGroupId);\n\t\t\t\tthis._batchList.push(batch2);\n\t\t\t\tconst nodes = [];\n\t\t\t\tfor(let i = 0; i < clonedMeshInstances.length; i++){\n\t\t\t\t\t\tnodes.push(clonedMeshInstances[i].node);\n\t\t\t\t}\n\t\t\t\tbatch2.meshInstance = new MeshInstance(batch.meshInstance.mesh, batch.meshInstance.material, batch.meshInstance.node);\n\t\t\t\tbatch2.meshInstance._updateAabb = false;\n\t\t\t\tbatch2.meshInstance.parameters = clonedMeshInstances[0].parameters;\n\t\t\t\tbatch2.meshInstance.cull = clonedMeshInstances[0].cull;\n\t\t\t\tbatch2.meshInstance.layer = clonedMeshInstances[0].layer;\n\t\t\t\tif (batch.dynamic) {\n\t\t\t\t\t\tbatch2.meshInstance.skinInstance = new SkinBatchInstance(this.device, nodes, this.rootNode);\n\t\t\t\t}\n\t\t\t\tbatch2.meshInstance.castShadow = batch.meshInstance.castShadow;\n\t\t\t\treturn batch2;\n\t\t}\n\t\tdestroyBatch(batch) {\n\t\t\t\tbatch.destroy(this.scene, this._batchGroups[batch.batchGroupId].layers);\n\t\t}\n}\n\nconst _colorUniformName = 'uSceneColorMap';\nclass RenderPassColorGrab extends RenderPass {\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.releaseRenderTarget(this.colorRenderTarget);\n\t\t}\n\t\tshouldReallocate(targetRT, sourceTexture, sourceFormat) {\n\t\t\t\tconst targetFormat = targetRT?.colorBuffer.format;\n\t\t\t\tif (targetFormat !== sourceFormat) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst width = sourceTexture?.width || this.device.width;\n\t\t\t\tconst height = sourceTexture?.height || this.device.height;\n\t\t\t\treturn !targetRT || width !== targetRT.width || height !== targetRT.height;\n\t\t}\n\t\tallocateRenderTarget(renderTarget, sourceRenderTarget, device, format) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: _colorUniformName,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\twidth: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width,\n\t\t\t\t\t\theight: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height,\n\t\t\t\t\t\tmipmaps: true,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR_MIPMAP_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tif (renderTarget) {\n\t\t\t\t\t\trenderTarget.destroyFrameBuffers();\n\t\t\t\t\t\trenderTarget._colorBuffer = texture;\n\t\t\t\t\t\trenderTarget._colorBuffers = [\n\t\t\t\t\t\t\t\ttexture\n\t\t\t\t\t\t];\n\t\t\t\t} else {\n\t\t\t\t\t\trenderTarget = new RenderTarget({\n\t\t\t\t\t\t\t\tname: 'ColorGrabRT',\n\t\t\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\t\t\tstencil: false,\n\t\t\t\t\t\t\t\tautoResolve: false\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn renderTarget;\n\t\t}\n\t\treleaseRenderTarget(rt) {\n\t\t\t\tif (rt) {\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst sourceRt = this.source;\n\t\t\t\tconst sourceFormat = sourceRt?.colorBuffer.format ?? this.device.backBufferFormat;\n\t\t\t\tif (this.shouldReallocate(this.colorRenderTarget, sourceRt?.colorBuffer, sourceFormat)) {\n\t\t\t\t\t\tthis.releaseRenderTarget(this.colorRenderTarget);\n\t\t\t\t\t\tthis.colorRenderTarget = this.allocateRenderTarget(this.colorRenderTarget, sourceRt, device, sourceFormat);\n\t\t\t\t}\n\t\t\t\tconst colorBuffer = this.colorRenderTarget.colorBuffer;\n\t\t\t\tdevice.scope.resolve(_colorUniformName).setValue(colorBuffer);\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst sourceRt = this.source;\n\t\t\t\tconst colorBuffer = this.colorRenderTarget.colorBuffer;\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tdevice.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false);\n\t\t\t\t\t\tdevice.mipmapRenderer.generate(this.colorRenderTarget.colorBuffer.impl);\n\t\t\t\t} else {\n\t\t\t\t\t\tdevice.copyRenderTarget(sourceRt, this.colorRenderTarget, true, false);\n\t\t\t\t\t\tdevice.activeTexture(device.maxCombinedTextures - 1);\n\t\t\t\t\t\tdevice.bindTexture(colorBuffer);\n\t\t\t\t\t\tdevice.gl.generateMipmap(colorBuffer.impl._glTarget);\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.colorRenderTarget = null, this.source = null;\n\t\t}\n}\n\nconst _depthUniformName = 'uSceneDepthMap';\nclass RenderPassDepthGrab extends RenderPass {\n\t\tconstructor(device, camera){\n\t\t\t\tsuper(device), this.depthRenderTarget = null, this.camera = null;\n\t\t\t\tthis.camera = camera;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.releaseRenderTarget(this.depthRenderTarget);\n\t\t}\n\t\tshouldReallocate(targetRT, sourceTexture) {\n\t\t\t\tconst width = sourceTexture?.width || this.device.width;\n\t\t\t\tconst height = sourceTexture?.height || this.device.height;\n\t\t\t\treturn !targetRT || width !== targetRT.width || height !== targetRT.height;\n\t\t}\n\t\tallocateRenderTarget(renderTarget, sourceRenderTarget, device, format, isDepth) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: _depthUniformName,\n\t\t\t\t\t\tformat,\n\t\t\t\t\t\twidth: sourceRenderTarget ? sourceRenderTarget.colorBuffer.width : device.width,\n\t\t\t\t\t\theight: sourceRenderTarget ? sourceRenderTarget.colorBuffer.height : device.height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tif (renderTarget) {\n\t\t\t\t\t\trenderTarget.destroyFrameBuffers();\n\t\t\t\t\t\tif (isDepth) {\n\t\t\t\t\t\t\t\trenderTarget._depthBuffer = texture;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trenderTarget._colorBuffer = texture;\n\t\t\t\t\t\t\t\trenderTarget._colorBuffers = [\n\t\t\t\t\t\t\t\t\t\ttexture\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\trenderTarget = new RenderTarget({\n\t\t\t\t\t\t\t\tname: 'DepthGrabRT',\n\t\t\t\t\t\t\t\tcolorBuffer: isDepth ? null : texture,\n\t\t\t\t\t\t\t\tdepthBuffer: isDepth ? texture : null,\n\t\t\t\t\t\t\t\tdepth: !isDepth,\n\t\t\t\t\t\t\t\tstencil: device.supportsStencil,\n\t\t\t\t\t\t\t\tautoResolve: false\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn renderTarget;\n\t\t}\n\t\treleaseRenderTarget(rt) {\n\t\t\t\tif (rt) {\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t}\n\t\tbefore() {\n\t\t\t\tconst camera = this.camera;\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst destinationRt = camera?.renderTarget ?? device.backBuffer;\n\t\t\t\tlet useDepthBuffer = true;\n\t\t\t\tlet format = destinationRt.stencil ? PIXELFORMAT_DEPTHSTENCIL : PIXELFORMAT_DEPTH;\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\tconst numSamples = destinationRt.samples;\n\t\t\t\t\t\tif (numSamples > 1) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_R32F;\n\t\t\t\t\t\t\t\tuseDepthBuffer = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst sourceTexture = camera.renderTarget?.depthBuffer ?? camera.renderTarget?.colorBuffer;\n\t\t\t\tif (this.shouldReallocate(this.depthRenderTarget, sourceTexture)) {\n\t\t\t\t\t\tthis.releaseRenderTarget(this.depthRenderTarget);\n\t\t\t\t\t\tthis.depthRenderTarget = this.allocateRenderTarget(this.depthRenderTarget, camera.renderTarget, device, format, useDepthBuffer);\n\t\t\t\t}\n\t\t\t\tconst colorBuffer = useDepthBuffer ? this.depthRenderTarget.depthBuffer : this.depthRenderTarget.colorBuffer;\n\t\t\t\tdevice.scope.resolve(_depthUniformName).setValue(colorBuffer);\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device.isWebGL2 && device.renderTarget.samples > 1) {\n\t\t\t\t\t\tconst src = device.renderTarget.impl._glFrameBuffer;\n\t\t\t\t\t\tconst dest = this.depthRenderTarget;\n\t\t\t\t\t\tdevice.renderTarget = dest;\n\t\t\t\t\t\tdevice.updateBegin();\n\t\t\t\t\t\tthis.depthRenderTarget.impl.internalResolve(device, src, dest.impl._glFrameBuffer, this.depthRenderTarget, device.gl.DEPTH_BUFFER_BIT);\n\t\t\t\t} else {\n\t\t\t\t\t\tdevice.copyRenderTarget(device.renderTarget, this.depthRenderTarget, false, true);\n\t\t\t\t}\n\t\t}\n}\n\nclass CameraShaderParams {\n\t\tget hash() {\n\t\t\t\tif (this._hash === undefined) {\n\t\t\t\t\t\tconst key = `${this.gammaCorrection}_${this.toneMapping}_${this.srgbRenderTarget}_${this.fog}_${this.ssaoEnabled}_${this.sceneDepthMapLinear}`;\n\t\t\t\t\t\tthis._hash = hashCode(key);\n\t\t\t\t}\n\t\t\t\treturn this._hash;\n\t\t}\n\t\tget defines() {\n\t\t\t\tconst defines = this._defines;\n\t\t\t\tif (this._definesDirty) {\n\t\t\t\t\t\tthis._definesDirty = false;\n\t\t\t\t\t\tdefines.clear();\n\t\t\t\t\t\tif (this._sceneDepthMapLinear) defines.set('SCENE_DEPTHMAP_LINEAR', true);\n\t\t\t\t\t\tdefines.set('FOG', this._fog.toUpperCase());\n\t\t\t\t\t\tdefines.set('TONEMAP', tonemapNames[this._toneMapping]);\n\t\t\t\t\t\tdefines.set('GAMMA', gammaNames[this.shaderOutputGamma]);\n\t\t\t\t}\n\t\t\t\treturn defines;\n\t\t}\n\t\tmarkDirty() {\n\t\t\t\tthis._hash = undefined;\n\t\t\t\tthis._definesDirty = true;\n\t\t}\n\t\tset fog(type) {\n\t\t\t\tif (this._fog !== type) {\n\t\t\t\t\t\tthis._fog = type;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget fog() {\n\t\t\t\treturn this._fog;\n\t\t}\n\t\tset ssaoEnabled(value) {\n\t\t\t\tif (this._ssaoEnabled !== value) {\n\t\t\t\t\t\tthis._ssaoEnabled = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget ssaoEnabled() {\n\t\t\t\treturn this._ssaoEnabled;\n\t\t}\n\t\tset gammaCorrection(value) {\n\t\t\t\tthis._gammaCorrectionAssigned = true;\n\t\t\t\tif (this._gammaCorrection !== value) {\n\t\t\t\t\t\tthis._gammaCorrection = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget gammaCorrection() {\n\t\t\t\treturn this._gammaCorrection;\n\t\t}\n\t\tset toneMapping(value) {\n\t\t\t\tif (this._toneMapping !== value) {\n\t\t\t\t\t\tthis._toneMapping = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget toneMapping() {\n\t\t\t\treturn this._toneMapping;\n\t\t}\n\t\tset srgbRenderTarget(value) {\n\t\t\t\tif (this._srgbRenderTarget !== value) {\n\t\t\t\t\t\tthis._srgbRenderTarget = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget srgbRenderTarget() {\n\t\t\t\treturn this._srgbRenderTarget;\n\t\t}\n\t\tset sceneDepthMapLinear(value) {\n\t\t\t\tif (this._sceneDepthMapLinear !== value) {\n\t\t\t\t\t\tthis._sceneDepthMapLinear = value;\n\t\t\t\t\t\tthis.markDirty();\n\t\t\t\t}\n\t\t}\n\t\tget sceneDepthMapLinear() {\n\t\t\t\treturn this._sceneDepthMapLinear;\n\t\t}\n\t\tget shaderOutputGamma() {\n\t\t\t\tconst gammaOutput = this._gammaCorrection === GAMMA_SRGB && !this._srgbRenderTarget;\n\t\t\t\treturn gammaOutput ? GAMMA_SRGB : GAMMA_NONE;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._gammaCorrection = GAMMA_SRGB;\n\t\t\t\tthis._toneMapping = TONEMAP_LINEAR;\n\t\t\t\tthis._srgbRenderTarget = false;\n\t\t\t\tthis._ssaoEnabled = false;\n\t\t\t\tthis._fog = FOG_NONE;\n\t\t\t\tthis._sceneDepthMapLinear = false;\n\t\t\t\tthis._defines = new Map();\n\t\t\t\tthis._definesDirty = true;\n\t\t}\n}\n\nconst _deviceCoord = new Vec3();\nconst _halfSize = new Vec3();\nconst _point$1 = new Vec3();\nconst _invViewProjMat = new Mat4();\nconst _frustumPoints = [\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3()\n];\nclass Camera {\n\t\tconstructor(){\n\t\t\t\tthis.shaderPassInfo = null;\n\t\t\t\tthis.renderPassColorGrab = null;\n\t\t\t\tthis.renderPassDepthGrab = null;\n\t\t\t\tthis.fogParams = null;\n\t\t\t\tthis.shaderParams = new CameraShaderParams();\n\t\t\t\tthis.renderPasses = [];\n\t\t\t\tthis.jitter = 0;\n\t\t\t\tthis._aspectRatio = 16 / 9;\n\t\t\t\tthis._aspectRatioMode = ASPECT_AUTO;\n\t\t\t\tthis._calculateProjection = null;\n\t\t\t\tthis._calculateTransform = null;\n\t\t\t\tthis._clearColor = new Color(0.75, 0.75, 0.75, 1);\n\t\t\t\tthis._clearColorBuffer = true;\n\t\t\t\tthis._clearDepth = 1;\n\t\t\t\tthis._clearDepthBuffer = true;\n\t\t\t\tthis._clearStencil = 0;\n\t\t\t\tthis._clearStencilBuffer = true;\n\t\t\t\tthis._cullFaces = true;\n\t\t\t\tthis._farClip = 1000;\n\t\t\t\tthis._flipFaces = false;\n\t\t\t\tthis._fov = 45;\n\t\t\t\tthis._frustumCulling = true;\n\t\t\t\tthis._horizontalFov = false;\n\t\t\t\tthis._layers = [\n\t\t\t\t\t\tLAYERID_WORLD,\n\t\t\t\t\t\tLAYERID_DEPTH,\n\t\t\t\t\t\tLAYERID_SKYBOX,\n\t\t\t\t\t\tLAYERID_UI,\n\t\t\t\t\t\tLAYERID_IMMEDIATE\n\t\t\t\t];\n\t\t\t\tthis._layersSet = new Set(this._layers);\n\t\t\t\tthis._nearClip = 0.1;\n\t\t\t\tthis._node = null;\n\t\t\t\tthis._orthoHeight = 10;\n\t\t\t\tthis._projection = PROJECTION_PERSPECTIVE;\n\t\t\t\tthis._rect = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis._renderTarget = null;\n\t\t\t\tthis._scissorRect = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis._scissorRectClear = false;\n\t\t\t\tthis._aperture = 16.0;\n\t\t\t\tthis._shutter = 1.0 / 1000.0;\n\t\t\t\tthis._sensitivity = 1000;\n\t\t\t\tthis._projMat = new Mat4();\n\t\t\t\tthis._projMatDirty = true;\n\t\t\t\tthis._projMatSkybox = new Mat4();\n\t\t\t\tthis._viewMat = new Mat4();\n\t\t\t\tthis._viewMatDirty = true;\n\t\t\t\tthis._viewProjMat = new Mat4();\n\t\t\t\tthis._viewProjMatDirty = true;\n\t\t\t\tthis._shaderMatricesVersion = 0;\n\t\t\t\tthis._viewProjInverse = new Mat4();\n\t\t\t\tthis._viewProjCurrent = null;\n\t\t\t\tthis._viewProjPrevious = new Mat4();\n\t\t\t\tthis._jitters = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.frustum = new Frustum();\n\t\t\t\tthis._xr = null;\n\t\t\t\tthis._xrProperties = {\n\t\t\t\t\t\thorizontalFov: this._horizontalFov,\n\t\t\t\t\t\tfov: this._fov,\n\t\t\t\t\t\taspectRatio: this._aspectRatio,\n\t\t\t\t\t\tfarClip: this._farClip,\n\t\t\t\t\t\tnearClip: this._nearClip\n\t\t\t\t};\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.renderPassColorGrab?.destroy();\n\t\t\t\tthis.renderPassColorGrab = null;\n\t\t\t\tthis.renderPassDepthGrab?.destroy();\n\t\t\t\tthis.renderPassDepthGrab = null;\n\t\t\t\tthis.renderPasses.length = 0;\n\t\t}\n\t\t_storeShaderMatrices(viewProjMat, jitterX, jitterY, renderVersion) {\n\t\t\t\tif (this._shaderMatricesVersion !== renderVersion) {\n\t\t\t\t\t\tthis._shaderMatricesVersion = renderVersion;\n\t\t\t\t\t\tthis._viewProjPrevious.copy(this._viewProjCurrent ?? viewProjMat);\n\t\t\t\t\t\tthis._viewProjCurrent ??= new Mat4();\n\t\t\t\t\t\tthis._viewProjCurrent.copy(viewProjMat);\n\t\t\t\t\t\tthis._viewProjInverse.invert(viewProjMat);\n\t\t\t\t\t\tthis._jitters[2] = this._jitters[0];\n\t\t\t\t\t\tthis._jitters[3] = this._jitters[1];\n\t\t\t\t\t\tthis._jitters[0] = jitterX;\n\t\t\t\t\t\tthis._jitters[1] = jitterY;\n\t\t\t\t}\n\t\t}\n\t\tget fullSizeClearRect() {\n\t\t\t\tconst rect = this._scissorRectClear ? this.scissorRect : this._rect;\n\t\t\t\treturn rect.x === 0 && rect.y === 0 && rect.z === 1 && rect.w === 1;\n\t\t}\n\t\tset aspectRatio(newValue) {\n\t\t\t\tif (this._aspectRatio !== newValue) {\n\t\t\t\t\t\tthis._aspectRatio = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget aspectRatio() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.aspectRatio : this._aspectRatio;\n\t\t}\n\t\tset aspectRatioMode(newValue) {\n\t\t\t\tif (this._aspectRatioMode !== newValue) {\n\t\t\t\t\t\tthis._aspectRatioMode = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget aspectRatioMode() {\n\t\t\t\treturn this._aspectRatioMode;\n\t\t}\n\t\tset calculateProjection(newValue) {\n\t\t\t\tthis._calculateProjection = newValue;\n\t\t\t\tthis._projMatDirty = true;\n\t\t}\n\t\tget calculateProjection() {\n\t\t\t\treturn this._calculateProjection;\n\t\t}\n\t\tset calculateTransform(newValue) {\n\t\t\t\tthis._calculateTransform = newValue;\n\t\t}\n\t\tget calculateTransform() {\n\t\t\t\treturn this._calculateTransform;\n\t\t}\n\t\tset clearColor(newValue) {\n\t\t\t\tthis._clearColor.copy(newValue);\n\t\t}\n\t\tget clearColor() {\n\t\t\t\treturn this._clearColor;\n\t\t}\n\t\tset clearColorBuffer(newValue) {\n\t\t\t\tthis._clearColorBuffer = newValue;\n\t\t}\n\t\tget clearColorBuffer() {\n\t\t\t\treturn this._clearColorBuffer;\n\t\t}\n\t\tset clearDepth(newValue) {\n\t\t\t\tthis._clearDepth = newValue;\n\t\t}\n\t\tget clearDepth() {\n\t\t\t\treturn this._clearDepth;\n\t\t}\n\t\tset clearDepthBuffer(newValue) {\n\t\t\t\tthis._clearDepthBuffer = newValue;\n\t\t}\n\t\tget clearDepthBuffer() {\n\t\t\t\treturn this._clearDepthBuffer;\n\t\t}\n\t\tset clearStencil(newValue) {\n\t\t\t\tthis._clearStencil = newValue;\n\t\t}\n\t\tget clearStencil() {\n\t\t\t\treturn this._clearStencil;\n\t\t}\n\t\tset clearStencilBuffer(newValue) {\n\t\t\t\tthis._clearStencilBuffer = newValue;\n\t\t}\n\t\tget clearStencilBuffer() {\n\t\t\t\treturn this._clearStencilBuffer;\n\t\t}\n\t\tset cullFaces(newValue) {\n\t\t\t\tthis._cullFaces = newValue;\n\t\t}\n\t\tget cullFaces() {\n\t\t\t\treturn this._cullFaces;\n\t\t}\n\t\tset farClip(newValue) {\n\t\t\t\tif (this._farClip !== newValue) {\n\t\t\t\t\t\tthis._farClip = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget farClip() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.farClip : this._farClip;\n\t\t}\n\t\tset flipFaces(newValue) {\n\t\t\t\tthis._flipFaces = newValue;\n\t\t}\n\t\tget flipFaces() {\n\t\t\t\treturn this._flipFaces;\n\t\t}\n\t\tset fov(newValue) {\n\t\t\t\tif (this._fov !== newValue) {\n\t\t\t\t\t\tthis._fov = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget fov() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.fov : this._fov;\n\t\t}\n\t\tset frustumCulling(newValue) {\n\t\t\t\tthis._frustumCulling = newValue;\n\t\t}\n\t\tget frustumCulling() {\n\t\t\t\treturn this._frustumCulling;\n\t\t}\n\t\tset horizontalFov(newValue) {\n\t\t\t\tif (this._horizontalFov !== newValue) {\n\t\t\t\t\t\tthis._horizontalFov = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget horizontalFov() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.horizontalFov : this._horizontalFov;\n\t\t}\n\t\tset layers(newValue) {\n\t\t\t\tthis._layers = newValue.slice(0);\n\t\t\t\tthis._layersSet = new Set(this._layers);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tget layersSet() {\n\t\t\t\treturn this._layersSet;\n\t\t}\n\t\tset nearClip(newValue) {\n\t\t\t\tif (this._nearClip !== newValue) {\n\t\t\t\t\t\tthis._nearClip = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget nearClip() {\n\t\t\t\treturn this.xr?.active ? this._xrProperties.nearClip : this._nearClip;\n\t\t}\n\t\tset node(newValue) {\n\t\t\t\tthis._node = newValue;\n\t\t}\n\t\tget node() {\n\t\t\t\treturn this._node;\n\t\t}\n\t\tset orthoHeight(newValue) {\n\t\t\t\tif (this._orthoHeight !== newValue) {\n\t\t\t\t\t\tthis._orthoHeight = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget orthoHeight() {\n\t\t\t\treturn this._orthoHeight;\n\t\t}\n\t\tset projection(newValue) {\n\t\t\t\tif (this._projection !== newValue) {\n\t\t\t\t\t\tthis._projection = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget projection() {\n\t\t\t\treturn this._projection;\n\t\t}\n\t\tget projectionMatrix() {\n\t\t\t\tthis._evaluateProjectionMatrix();\n\t\t\t\treturn this._projMat;\n\t\t}\n\t\tset rect(newValue) {\n\t\t\t\tthis._rect.copy(newValue);\n\t\t}\n\t\tget rect() {\n\t\t\t\treturn this._rect;\n\t\t}\n\t\tset renderTarget(newValue) {\n\t\t\t\tthis._renderTarget = newValue;\n\t\t}\n\t\tget renderTarget() {\n\t\t\t\treturn this._renderTarget;\n\t\t}\n\t\tset scissorRect(newValue) {\n\t\t\t\tthis._scissorRect.copy(newValue);\n\t\t}\n\t\tget scissorRect() {\n\t\t\t\treturn this._scissorRect;\n\t\t}\n\t\tget viewMatrix() {\n\t\t\t\tif (this._viewMatDirty) {\n\t\t\t\t\t\tconst wtm = this._node.getWorldTransform();\n\t\t\t\t\t\tthis._viewMat.copy(wtm).invert();\n\t\t\t\t\t\tthis._viewMatDirty = false;\n\t\t\t\t}\n\t\t\t\treturn this._viewMat;\n\t\t}\n\t\tset aperture(newValue) {\n\t\t\t\tthis._aperture = newValue;\n\t\t}\n\t\tget aperture() {\n\t\t\t\treturn this._aperture;\n\t\t}\n\t\tset sensitivity(newValue) {\n\t\t\t\tthis._sensitivity = newValue;\n\t\t}\n\t\tget sensitivity() {\n\t\t\t\treturn this._sensitivity;\n\t\t}\n\t\tset shutter(newValue) {\n\t\t\t\tthis._shutter = newValue;\n\t\t}\n\t\tget shutter() {\n\t\t\t\treturn this._shutter;\n\t\t}\n\t\tset xr(newValue) {\n\t\t\t\tif (this._xr !== newValue) {\n\t\t\t\t\t\tthis._xr = newValue;\n\t\t\t\t\t\tthis._projMatDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget xr() {\n\t\t\t\treturn this._xr;\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new Camera().copy(this);\n\t\t}\n\t\tcopy(other) {\n\t\t\t\tthis._aspectRatio = other._aspectRatio;\n\t\t\t\tthis._farClip = other._farClip;\n\t\t\t\tthis._fov = other._fov;\n\t\t\t\tthis._horizontalFov = other._horizontalFov;\n\t\t\t\tthis._nearClip = other._nearClip;\n\t\t\t\tthis._xrProperties.aspectRatio = other._xrProperties.aspectRatio;\n\t\t\t\tthis._xrProperties.farClip = other._xrProperties.farClip;\n\t\t\t\tthis._xrProperties.fov = other._xrProperties.fov;\n\t\t\t\tthis._xrProperties.horizontalFov = other._xrProperties.horizontalFov;\n\t\t\t\tthis._xrProperties.nearClip = other._xrProperties.nearClip;\n\t\t\t\tthis.aspectRatioMode = other.aspectRatioMode;\n\t\t\t\tthis.calculateProjection = other.calculateProjection;\n\t\t\t\tthis.calculateTransform = other.calculateTransform;\n\t\t\t\tthis.clearColor = other.clearColor;\n\t\t\t\tthis.clearColorBuffer = other.clearColorBuffer;\n\t\t\t\tthis.clearDepth = other.clearDepth;\n\t\t\t\tthis.clearDepthBuffer = other.clearDepthBuffer;\n\t\t\t\tthis.clearStencil = other.clearStencil;\n\t\t\t\tthis.clearStencilBuffer = other.clearStencilBuffer;\n\t\t\t\tthis.cullFaces = other.cullFaces;\n\t\t\t\tthis.flipFaces = other.flipFaces;\n\t\t\t\tthis.frustumCulling = other.frustumCulling;\n\t\t\t\tthis.layers = other.layers;\n\t\t\t\tthis.orthoHeight = other.orthoHeight;\n\t\t\t\tthis.projection = other.projection;\n\t\t\t\tthis.rect = other.rect;\n\t\t\t\tthis.renderTarget = other.renderTarget;\n\t\t\t\tthis.scissorRect = other.scissorRect;\n\t\t\t\tthis.aperture = other.aperture;\n\t\t\t\tthis.shutter = other.shutter;\n\t\t\t\tthis.sensitivity = other.sensitivity;\n\t\t\t\tthis.shaderPassInfo = other.shaderPassInfo;\n\t\t\t\tthis.jitter = other.jitter;\n\t\t\t\tthis._projMatDirty = true;\n\t\t\t\treturn this;\n\t\t}\n\t\t_enableRenderPassColorGrab(device, enable) {\n\t\t\t\tif (enable) {\n\t\t\t\t\t\tif (!this.renderPassColorGrab) {\n\t\t\t\t\t\t\t\tthis.renderPassColorGrab = new RenderPassColorGrab(device);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderPassColorGrab?.destroy();\n\t\t\t\t\t\tthis.renderPassColorGrab = null;\n\t\t\t\t}\n\t\t}\n\t\t_enableRenderPassDepthGrab(device, renderer, enable) {\n\t\t\t\tif (enable) {\n\t\t\t\t\t\tif (!this.renderPassDepthGrab) {\n\t\t\t\t\t\t\t\tthis.renderPassDepthGrab = new RenderPassDepthGrab(device, this);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.renderPassDepthGrab?.destroy();\n\t\t\t\t\t\tthis.renderPassDepthGrab = null;\n\t\t\t\t}\n\t\t}\n\t\t_updateViewProjMat() {\n\t\t\t\tif (this._projMatDirty || this._viewMatDirty || this._viewProjMatDirty) {\n\t\t\t\t\t\tthis._viewProjMat.mul2(this.projectionMatrix, this.viewMatrix);\n\t\t\t\t\t\tthis._viewProjMatDirty = false;\n\t\t\t\t}\n\t\t}\n\t\tworldToScreen(worldCoord, cw, ch, screenCoord = new Vec3()) {\n\t\t\t\tthis._updateViewProjMat();\n\t\t\t\tthis._viewProjMat.transformPoint(worldCoord, screenCoord);\n\t\t\t\tconst vpm = this._viewProjMat.data;\n\t\t\t\tconst w = worldCoord.x * vpm[3] + worldCoord.y * vpm[7] + worldCoord.z * vpm[11] + 1 * vpm[15];\n\t\t\t\tscreenCoord.x = (screenCoord.x / w + 1) * 0.5;\n\t\t\t\tscreenCoord.y = (1 - screenCoord.y / w) * 0.5;\n\t\t\t\tconst { x: rx, y: ry, z: rw, w: rh } = this._rect;\n\t\t\t\tscreenCoord.x = screenCoord.x * rw * cw + rx * cw;\n\t\t\t\tscreenCoord.y = screenCoord.y * rh * ch + (1 - ry - rh) * ch;\n\t\t\t\treturn screenCoord;\n\t\t}\n\t\tscreenToWorld(x, y, z, cw, ch, worldCoord = new Vec3()) {\n\t\t\t\tconst { x: rx, y: ry, z: rw, w: rh } = this._rect;\n\t\t\t\tconst range = this.farClip - this.nearClip;\n\t\t\t\t_deviceCoord.set((x - rx * cw) / (rw * cw), 1 - (y - (1 - ry - rh) * ch) / (rh * ch), z / range);\n\t\t\t\t_deviceCoord.mulScalar(2);\n\t\t\t\t_deviceCoord.sub(Vec3.ONE);\n\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tMat4._getPerspectiveHalfSize(_halfSize, this.fov, this.aspectRatio, this.nearClip, this.horizontalFov);\n\t\t\t\t\t\t_halfSize.x *= _deviceCoord.x;\n\t\t\t\t\t\t_halfSize.y *= _deviceCoord.y;\n\t\t\t\t\t\tconst invView = this._node.getWorldTransform();\n\t\t\t\t\t\t_halfSize.z = -this.nearClip;\n\t\t\t\t\t\tinvView.transformPoint(_halfSize, _point$1);\n\t\t\t\t\t\tconst cameraPos = this._node.getPosition();\n\t\t\t\t\t\tworldCoord.sub2(_point$1, cameraPos);\n\t\t\t\t\t\tworldCoord.normalize();\n\t\t\t\t\t\tworldCoord.mulScalar(z);\n\t\t\t\t\t\tworldCoord.add(cameraPos);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._updateViewProjMat();\n\t\t\t\t\t\t_invViewProjMat.copy(this._viewProjMat).invert();\n\t\t\t\t\t\t_invViewProjMat.transformPoint(_deviceCoord, worldCoord);\n\t\t\t\t}\n\t\t\t\treturn worldCoord;\n\t\t}\n\t\t_evaluateProjectionMatrix() {\n\t\t\t\tif (this._projMatDirty) {\n\t\t\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\t\t\tthis._projMat.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip, this.horizontalFov);\n\t\t\t\t\t\t\t\tthis._projMatSkybox.copy(this._projMat);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst y = this._orthoHeight;\n\t\t\t\t\t\t\t\tconst x = y * this.aspectRatio;\n\t\t\t\t\t\t\t\tthis._projMat.setOrtho(-x, x, -y, y, this.nearClip, this.farClip);\n\t\t\t\t\t\t\t\tthis._projMatSkybox.setPerspective(this.fov, this.aspectRatio, this.nearClip, this.farClip);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._projMatDirty = false;\n\t\t\t\t}\n\t\t}\n\t\tgetProjectionMatrixSkybox() {\n\t\t\t\tthis._evaluateProjectionMatrix();\n\t\t\t\treturn this._projMatSkybox;\n\t\t}\n\t\tgetExposure() {\n\t\t\t\tconst ev100 = Math.log2(this._aperture * this._aperture / this._shutter * 100.0 / this._sensitivity);\n\t\t\t\treturn 1.0 / (Math.pow(2.0, ev100) * 1.2);\n\t\t}\n\t\tgetScreenSize(sphere) {\n\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst distance = this._node.getPosition().distance(sphere.center);\n\t\t\t\t\t\tif (distance < sphere.radius) {\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewAngle = Math.asin(sphere.radius / distance);\n\t\t\t\t\t\tconst sphereViewHeight = Math.tan(viewAngle);\n\t\t\t\t\t\tconst screenViewHeight = Math.tan(this.fov / 2 * math.DEG_TO_RAD);\n\t\t\t\t\t\treturn Math.min(sphereViewHeight / screenViewHeight, 1);\n\t\t\t\t}\n\t\t\t\treturn math.clamp(sphere.radius / this._orthoHeight, 0, 1);\n\t\t}\n\t\tgetFrustumCorners(near = this.nearClip, far = this.farClip) {\n\t\t\t\tconst fov = this.fov * Math.PI / 180.0;\n\t\t\t\tlet x, y;\n\t\t\t\tif (this.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tif (this.horizontalFov) {\n\t\t\t\t\t\t\t\tx = near * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\ty = x / this.aspectRatio;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ty = near * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\tx = y * this.aspectRatio;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\ty = this._orthoHeight;\n\t\t\t\t\t\tx = y * this.aspectRatio;\n\t\t\t\t}\n\t\t\t\tconst points = _frustumPoints;\n\t\t\t\tpoints[0].x = x;\n\t\t\t\tpoints[0].y = -y;\n\t\t\t\tpoints[0].z = -near;\n\t\t\t\tpoints[1].x = x;\n\t\t\t\tpoints[1].y = y;\n\t\t\t\tpoints[1].z = -near;\n\t\t\t\tpoints[2].x = -x;\n\t\t\t\tpoints[2].y = y;\n\t\t\t\tpoints[2].z = -near;\n\t\t\t\tpoints[3].x = -x;\n\t\t\t\tpoints[3].y = -y;\n\t\t\t\tpoints[3].z = -near;\n\t\t\t\tif (this._projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tif (this.horizontalFov) {\n\t\t\t\t\t\t\t\tx = far * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\ty = x / this.aspectRatio;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ty = far * Math.tan(fov / 2.0);\n\t\t\t\t\t\t\t\tx = y * this.aspectRatio;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tpoints[4].x = x;\n\t\t\t\tpoints[4].y = -y;\n\t\t\t\tpoints[4].z = -far;\n\t\t\t\tpoints[5].x = x;\n\t\t\t\tpoints[5].y = y;\n\t\t\t\tpoints[5].z = -far;\n\t\t\t\tpoints[6].x = -x;\n\t\t\t\tpoints[6].y = y;\n\t\t\t\tpoints[6].z = -far;\n\t\t\t\tpoints[7].x = -x;\n\t\t\t\tpoints[7].y = -y;\n\t\t\t\tpoints[7].z = -far;\n\t\t\t\treturn points;\n\t\t}\n\t\tsetXrProperties(properties) {\n\t\t\t\tObject.assign(this._xrProperties, properties);\n\t\t\t\tthis._projMatDirty = true;\n\t\t}\n}\n\nconst scaleCompensatePosTransform = new Mat4();\nconst scaleCompensatePos = new Vec3();\nconst scaleCompensateRot = new Quat();\nconst scaleCompensateRot2 = new Quat();\nconst scaleCompensateScale = new Vec3();\nconst scaleCompensateScaleForParent = new Vec3();\nconst tmpMat4 = new Mat4();\nconst tmpQuat = new Quat();\nconst position$3 = new Vec3();\nconst invParentWtm$1 = new Mat4();\nconst rotation$5 = new Quat();\nconst invParentRot = new Quat();\nconst matrix = new Mat4();\nconst target = new Vec3();\nconst up$1 = new Vec3();\nfunction createTest(attr, value) {\n\t\tif (attr instanceof Function) {\n\t\t\t\treturn attr;\n\t\t}\n\t\treturn (node)=>{\n\t\t\t\tlet x = node[attr];\n\t\t\t\tif (x instanceof Function) {\n\t\t\t\t\t\tx = x();\n\t\t\t\t}\n\t\t\t\treturn x === value;\n\t\t};\n}\nfunction findNode(node, test) {\n\t\tif (test(node)) {\n\t\t\t\treturn node;\n\t\t}\n\t\tconst children = node._children;\n\t\tconst len = children.length;\n\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\tconst result = findNode(children[i], test);\n\t\t\t\tif (result) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t}\n\t\treturn null;\n}\nclass GraphNode extends EventHandler {\n\t\tconstructor(name = 'Untitled'){\n\t\t\t\tsuper(), this.tags = new Tags(this), this.localPosition = new Vec3(), this.localRotation = new Quat(), this.localScale = new Vec3(1, 1, 1), this.localEulerAngles = new Vec3(), this.position = new Vec3(), this.rotation = new Quat(), this.eulerAngles = new Vec3(), this._scale = null, this.localTransform = new Mat4(), this._dirtyLocal = false, this._aabbVer = 0, this._frozen = false, this.worldTransform = new Mat4(), this._dirtyWorld = false, this._worldScaleSign = 0, this._normalMatrix = new Mat3(), this._dirtyNormal = true, this._right = null, this._up = null, this._forward = null, this._parent = null, this._children = [], this._graphDepth = 0, this._enabled = true, this._enabledInHierarchy = false, this.scaleCompensation = false;\n\t\t\t\tthis.name = name;\n\t\t}\n\t\tget right() {\n\t\t\t\tif (!this._right) {\n\t\t\t\t\t\tthis._right = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getX(this._right).normalize();\n\t\t}\n\t\tget up() {\n\t\t\t\tif (!this._up) {\n\t\t\t\t\t\tthis._up = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getY(this._up).normalize();\n\t\t}\n\t\tget forward() {\n\t\t\t\tif (!this._forward) {\n\t\t\t\t\t\tthis._forward = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getZ(this._forward).normalize().mulScalar(-1);\n\t\t}\n\t\tget normalMatrix() {\n\t\t\t\tconst normalMat = this._normalMatrix;\n\t\t\t\tif (this._dirtyNormal) {\n\t\t\t\t\t\tnormalMat.invertMat4(this.getWorldTransform()).transpose();\n\t\t\t\t\t\tthis._dirtyNormal = false;\n\t\t\t\t}\n\t\t\t\treturn normalMat;\n\t\t}\n\t\tset enabled(enabled) {\n\t\t\t\tif (this._enabled !== enabled) {\n\t\t\t\t\t\tthis._enabled = enabled;\n\t\t\t\t\t\tif (enabled && this._parent?.enabled || !enabled) {\n\t\t\t\t\t\t\t\tthis._notifyHierarchyStateChanged(this, enabled);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled && this._enabledInHierarchy;\n\t\t}\n\t\tget parent() {\n\t\t\t\treturn this._parent;\n\t\t}\n\t\tget path() {\n\t\t\t\tlet node = this._parent;\n\t\t\t\tif (!node) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\tlet result = this.name;\n\t\t\t\twhile(node && node._parent){\n\t\t\t\t\t\tresult = `${node.name}/${result}`;\n\t\t\t\t\t\tnode = node._parent;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tget root() {\n\t\t\t\tlet result = this;\n\t\t\t\twhile(result._parent){\n\t\t\t\t\t\tresult = result._parent;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tget children() {\n\t\t\t\treturn this._children;\n\t\t}\n\t\tget graphDepth() {\n\t\t\t\treturn this._graphDepth;\n\t\t}\n\t\t_notifyHierarchyStateChanged(node, enabled) {\n\t\t\t\tnode._onHierarchyStateChanged(enabled);\n\t\t\t\tconst c = node._children;\n\t\t\t\tfor(let i = 0, len = c.length; i < len; i++){\n\t\t\t\t\t\tif (c[i]._enabled) {\n\t\t\t\t\t\t\t\tthis._notifyHierarchyStateChanged(c[i], enabled);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onHierarchyStateChanged(enabled) {\n\t\t\t\tthis._enabledInHierarchy = enabled;\n\t\t\t\tif (enabled && !this._frozen) {\n\t\t\t\t\t\tthis._unfreezeParentToRoot();\n\t\t\t\t}\n\t\t}\n\t\t_cloneInternal(clone) {\n\t\t\t\tclone.name = this.name;\n\t\t\t\tconst tags = this.tags._list;\n\t\t\t\tclone.tags.clear();\n\t\t\t\tfor(let i = 0; i < tags.length; i++){\n\t\t\t\t\t\tclone.tags.add(tags[i]);\n\t\t\t\t}\n\t\t\t\tclone.localPosition.copy(this.localPosition);\n\t\t\t\tclone.localRotation.copy(this.localRotation);\n\t\t\t\tclone.localScale.copy(this.localScale);\n\t\t\t\tclone.localEulerAngles.copy(this.localEulerAngles);\n\t\t\t\tclone.position.copy(this.position);\n\t\t\t\tclone.rotation.copy(this.rotation);\n\t\t\t\tclone.eulerAngles.copy(this.eulerAngles);\n\t\t\t\tclone.localTransform.copy(this.localTransform);\n\t\t\t\tclone._dirtyLocal = this._dirtyLocal;\n\t\t\t\tclone.worldTransform.copy(this.worldTransform);\n\t\t\t\tclone._dirtyWorld = this._dirtyWorld;\n\t\t\t\tclone._dirtyNormal = this._dirtyNormal;\n\t\t\t\tclone._aabbVer = this._aabbVer + 1;\n\t\t\t\tclone._enabled = this._enabled;\n\t\t\t\tclone.scaleCompensation = this.scaleCompensation;\n\t\t\t\tclone._enabledInHierarchy = false;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\tthis._cloneInternal(clone);\n\t\t\t\treturn clone;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tsource._cloneInternal(this);\n\t\t\t\treturn this;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.remove();\n\t\t\t\tconst children = this._children;\n\t\t\t\twhile(children.length){\n\t\t\t\t\t\tconst child = children.pop();\n\t\t\t\t\t\tchild._parent = null;\n\t\t\t\t\t\tchild.destroy();\n\t\t\t\t}\n\t\t\t\tthis.fire('destroy', this);\n\t\t\t\tthis.off();\n\t\t}\n\t\tfind(attr, value) {\n\t\t\t\tconst results = [];\n\t\t\t\tconst test = createTest(attr, value);\n\t\t\t\tthis.forEach((node)=>{\n\t\t\t\t\t\tif (test(node)) {\n\t\t\t\t\t\t\t\tresults.push(node);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn results;\n\t\t}\n\t\tfindOne(attr, value) {\n\t\t\t\tconst test = createTest(attr, value);\n\t\t\t\treturn findNode(this, test);\n\t\t}\n\t\tfindByTag(...query) {\n\t\t\t\tconst results = [];\n\t\t\t\tconst queryNode = (node, checkNode)=>{\n\t\t\t\t\t\tif (checkNode && node.tags.has(...query)) {\n\t\t\t\t\t\t\t\tresults.push(node);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\t\t\tqueryNode(node._children[i], true);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tqueryNode(this, false);\n\t\t\t\treturn results;\n\t\t}\n\t\tfindByName(name) {\n\t\t\t\treturn this.findOne('name', name);\n\t\t}\n\t\tfindByPath(path) {\n\t\t\t\tconst parts = Array.isArray(path) ? path : path.split('/');\n\t\t\t\tlet result = this;\n\t\t\t\tfor(let i = 0, imax = parts.length; i < imax; ++i){\n\t\t\t\t\t\tresult = result.children.find((c)=>c.name === parts[i]);\n\t\t\t\t\t\tif (!result) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tforEach(callback, thisArg) {\n\t\t\t\tcallback.call(thisArg, this);\n\t\t\t\tconst children = this._children;\n\t\t\t\tconst len = children.length;\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\tchildren[i].forEach(callback, thisArg);\n\t\t\t\t}\n\t\t}\n\t\tisDescendantOf(node) {\n\t\t\t\tlet parent = this._parent;\n\t\t\t\twhile(parent){\n\t\t\t\t\t\tif (parent === node) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparent = parent._parent;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tisAncestorOf(node) {\n\t\t\t\treturn node.isDescendantOf(this);\n\t\t}\n\t\tgetEulerAngles() {\n\t\t\t\tthis.getWorldTransform().getEulerAngles(this.eulerAngles);\n\t\t\t\treturn this.eulerAngles;\n\t\t}\n\t\tgetLocalEulerAngles() {\n\t\t\t\tthis.localRotation.getEulerAngles(this.localEulerAngles);\n\t\t\t\treturn this.localEulerAngles;\n\t\t}\n\t\tgetLocalPosition() {\n\t\t\t\treturn this.localPosition;\n\t\t}\n\t\tgetLocalRotation() {\n\t\t\t\treturn this.localRotation;\n\t\t}\n\t\tgetLocalScale() {\n\t\t\t\treturn this.localScale;\n\t\t}\n\t\tgetLocalTransform() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t}\n\t\t\t\treturn this.localTransform;\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tthis.getWorldTransform().getTranslation(this.position);\n\t\t\t\treturn this.position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tthis.rotation.setFromMat4(this.getWorldTransform());\n\t\t\t\treturn this.rotation;\n\t\t}\n\t\tgetScale() {\n\t\t\t\tif (!this._scale) {\n\t\t\t\t\t\tthis._scale = new Vec3();\n\t\t\t\t}\n\t\t\t\treturn this.getWorldTransform().getScale(this._scale);\n\t\t}\n\t\tgetWorldTransform() {\n\t\t\t\tif (!this._dirtyLocal && !this._dirtyWorld) {\n\t\t\t\t\t\treturn this.worldTransform;\n\t\t\t\t}\n\t\t\t\tif (this._parent) {\n\t\t\t\t\t\tthis._parent.getWorldTransform();\n\t\t\t\t}\n\t\t\t\tthis._sync();\n\t\t\t\treturn this.worldTransform;\n\t\t}\n\t\tget worldScaleSign() {\n\t\t\t\tif (this._worldScaleSign === 0) {\n\t\t\t\t\t\tthis._worldScaleSign = this.getWorldTransform().scaleSign;\n\t\t\t\t}\n\t\t\t\treturn this._worldScaleSign;\n\t\t}\n\t\tremove() {\n\t\t\t\tthis._parent?.removeChild(this);\n\t\t}\n\t\treparent(parent, index) {\n\t\t\t\tthis.remove();\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\t\tparent.insertChild(this, index);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparent.addChild(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetLocalEulerAngles(x, y, z) {\n\t\t\t\tthis.localRotation.setFromEulerAngles(x, y, z);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetLocalPosition(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.localPosition.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localPosition.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetLocalRotation(x, y, z, w) {\n\t\t\t\tif (x instanceof Quat) {\n\t\t\t\t\t\tthis.localRotation.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localRotation.set(x, y, z, w);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetLocalScale(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.localScale.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localScale.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\t_dirtifyLocal() {\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\t\t\tif (!this._dirtyWorld) {\n\t\t\t\t\t\t\t\tthis._dirtifyWorld();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_unfreezeParentToRoot() {\n\t\t\t\tlet p = this._parent;\n\t\t\t\twhile(p){\n\t\t\t\t\t\tp._frozen = false;\n\t\t\t\t\t\tp = p._parent;\n\t\t\t\t}\n\t\t}\n\t\t_dirtifyWorld() {\n\t\t\t\tif (!this._dirtyWorld) {\n\t\t\t\t\t\tthis._unfreezeParentToRoot();\n\t\t\t\t}\n\t\t\t\tthis._dirtifyWorldInternal();\n\t\t}\n\t\t_dirtifyWorldInternal() {\n\t\t\t\tif (!this._dirtyWorld) {\n\t\t\t\t\t\tthis._frozen = false;\n\t\t\t\t\t\tthis._dirtyWorld = true;\n\t\t\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\t\t\tif (!this._children[i]._dirtyWorld) {\n\t\t\t\t\t\t\t\t\t\tthis._children[i]._dirtifyWorldInternal();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._dirtyNormal = true;\n\t\t\t\tthis._worldScaleSign = 0;\n\t\t\t\tthis._aabbVer++;\n\t\t}\n\t\tsetPosition(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$3.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$3.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localPosition.copy(position$3);\n\t\t\t\t} else {\n\t\t\t\t\t\tinvParentWtm$1.copy(this._parent.getWorldTransform()).invert();\n\t\t\t\t\t\tinvParentWtm$1.transformPoint(position$3, this.localPosition);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetRotation(x, y, z, w) {\n\t\t\t\tif (x instanceof Quat) {\n\t\t\t\t\t\trotation$5.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\trotation$5.set(x, y, z, w);\n\t\t\t\t}\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localRotation.copy(rotation$5);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\t\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\t\t\t\tthis.localRotation.copy(invParentRot).mul(rotation$5);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetPositionAndRotation(position, rotation) {\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localPosition.copy(position);\n\t\t\t\t\t\tthis.localRotation.copy(rotation);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst parentWtm = this._parent.getWorldTransform();\n\t\t\t\t\t\tinvParentWtm$1.copy(parentWtm).invert();\n\t\t\t\t\t\tinvParentWtm$1.transformPoint(position, this.localPosition);\n\t\t\t\t\t\tthis.localRotation.setFromMat4(invParentWtm$1).mul(rotation);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tsetEulerAngles(x, y, z) {\n\t\t\t\tthis.localRotation.setFromEulerAngles(x, y, z);\n\t\t\t\tif (this._parent !== null) {\n\t\t\t\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\t\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\t\t\t\tthis.localRotation.mul2(invParentRot, this.localRotation);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\taddChild(node) {\n\t\t\t\tthis._prepareInsertChild(node);\n\t\t\t\tthis._children.push(node);\n\t\t\t\tthis._onInsertChild(node);\n\t\t}\n\t\taddChildAndSaveTransform(node) {\n\t\t\t\tconst wPos = node.getPosition();\n\t\t\t\tconst wRot = node.getRotation();\n\t\t\t\tthis._prepareInsertChild(node);\n\t\t\t\tnode.setPosition(tmpMat4.copy(this.worldTransform).invert().transformPoint(wPos));\n\t\t\t\tnode.setRotation(tmpQuat.copy(this.getRotation()).invert().mul(wRot));\n\t\t\t\tthis._children.push(node);\n\t\t\t\tthis._onInsertChild(node);\n\t\t}\n\t\tinsertChild(node, index) {\n\t\t\t\tthis._prepareInsertChild(node);\n\t\t\t\tthis._children.splice(index, 0, node);\n\t\t\t\tthis._onInsertChild(node);\n\t\t}\n\t\t_prepareInsertChild(node) {\n\t\t\t\tnode.remove();\n\t\t}\n\t\t_fireOnHierarchy(name, nameHierarchy, parent) {\n\t\t\t\tthis.fire(name, parent);\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tthis._children[i]._fireOnHierarchy(nameHierarchy, nameHierarchy, parent);\n\t\t\t\t}\n\t\t}\n\t\t_onInsertChild(node) {\n\t\t\t\tnode._parent = this;\n\t\t\t\tconst enabledInHierarchy = node._enabled && this.enabled;\n\t\t\t\tif (node._enabledInHierarchy !== enabledInHierarchy) {\n\t\t\t\t\t\tnode._enabledInHierarchy = enabledInHierarchy;\n\t\t\t\t\t\tnode._notifyHierarchyStateChanged(node, enabledInHierarchy);\n\t\t\t\t}\n\t\t\t\tnode._updateGraphDepth();\n\t\t\t\tnode._dirtifyWorld();\n\t\t\t\tif (this._frozen) {\n\t\t\t\t\t\tnode._unfreezeParentToRoot();\n\t\t\t\t}\n\t\t\t\tnode._fireOnHierarchy('insert', 'inserthierarchy', this);\n\t\t\t\tif (this.fire) this.fire('childinsert', node);\n\t\t}\n\t\t_updateGraphDepth() {\n\t\t\t\tthis._graphDepth = this._parent ? this._parent._graphDepth + 1 : 0;\n\t\t\t\tfor(let i = 0, len = this._children.length; i < len; i++){\n\t\t\t\t\t\tthis._children[i]._updateGraphDepth();\n\t\t\t\t}\n\t\t}\n\t\tremoveChild(child) {\n\t\t\t\tconst index = this._children.indexOf(child);\n\t\t\t\tif (index === -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._children.splice(index, 1);\n\t\t\t\tchild._parent = null;\n\t\t\t\tchild._fireOnHierarchy('remove', 'removehierarchy', this);\n\t\t\t\tthis.fire('childremove', child);\n\t\t}\n\t\t_sync() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t}\n\t\t\t\tif (this._dirtyWorld) {\n\t\t\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\t\t\tthis.worldTransform.copy(this.localTransform);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.scaleCompensation) {\n\t\t\t\t\t\t\t\t\t\tlet parentWorldScale;\n\t\t\t\t\t\t\t\t\t\tconst parent = this._parent;\n\t\t\t\t\t\t\t\t\t\tlet scale = this.localScale;\n\t\t\t\t\t\t\t\t\t\tlet parentToUseScaleFrom = parent;\n\t\t\t\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\t\t\t\t\twhile(parentToUseScaleFrom && parentToUseScaleFrom.scaleCompensation){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentToUseScaleFrom = parentToUseScaleFrom._parent;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentToUseScaleFrom = parentToUseScaleFrom._parent;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (parentToUseScaleFrom) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tparentWorldScale = parentToUseScaleFrom.worldTransform.getScale();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscaleCompensateScale.mul2(parentWorldScale, this.localScale);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscale = scaleCompensateScale;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tscaleCompensateRot2.setFromMat4(parent.worldTransform);\n\t\t\t\t\t\t\t\t\t\tscaleCompensateRot.mul2(scaleCompensateRot2, this.localRotation);\n\t\t\t\t\t\t\t\t\t\tlet tmatrix = parent.worldTransform;\n\t\t\t\t\t\t\t\t\t\tif (parent.scaleCompensation) {\n\t\t\t\t\t\t\t\t\t\t\t\tscaleCompensateScaleForParent.mul2(parentWorldScale, parent.getLocalScale());\n\t\t\t\t\t\t\t\t\t\t\t\tscaleCompensatePosTransform.setTRS(parent.worldTransform.getTranslation(scaleCompensatePos), scaleCompensateRot2, scaleCompensateScaleForParent);\n\t\t\t\t\t\t\t\t\t\t\t\ttmatrix = scaleCompensatePosTransform;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttmatrix.transformPoint(this.localPosition, scaleCompensatePos);\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.setTRS(scaleCompensatePos, scaleCompensateRot, scale);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.mulAffine2(this._parent.worldTransform, this.localTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyWorld = false;\n\t\t\t\t}\n\t\t}\n\t\tsyncHierarchy() {\n\t\t\t\tif (!this._enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._frozen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._frozen = true;\n\t\t\t\tif (this._dirtyLocal || this._dirtyWorld) {\n\t\t\t\t\t\tthis._sync();\n\t\t\t\t}\n\t\t\t\tconst children = this._children;\n\t\t\t\tfor(let i = 0, len = children.length; i < len; i++){\n\t\t\t\t\t\tchildren[i].syncHierarchy();\n\t\t\t\t}\n\t\t}\n\t\tlookAt(x, y, z, ux = 0, uy = 1, uz = 0) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\ttarget.copy(x);\n\t\t\t\t\t\tif (y instanceof Vec3) {\n\t\t\t\t\t\t\t\tup$1.copy(y);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tup$1.copy(Vec3.UP);\n\t\t\t\t\t\t}\n\t\t\t\t} else if (z === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget.set(x, y, z);\n\t\t\t\t\t\tup$1.set(ux, uy, uz);\n\t\t\t\t}\n\t\t\t\tmatrix.setLookAt(this.getPosition(), target, up$1);\n\t\t\t\trotation$5.setFromMat4(matrix);\n\t\t\t\tthis.setRotation(rotation$5);\n\t\t}\n\t\ttranslate(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$3.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$3.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tposition$3.add(this.getPosition());\n\t\t\t\tthis.setPosition(position$3);\n\t\t}\n\t\ttranslateLocal(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$3.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$3.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tthis.localRotation.transformVector(position$3, position$3);\n\t\t\t\tthis.localPosition.add(position$3);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\trotate(x, y, z) {\n\t\t\t\trotation$5.setFromEulerAngles(x, y, z);\n\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\tthis.localRotation.mul2(rotation$5, this.localRotation);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst rot = this.getRotation();\n\t\t\t\t\t\tconst parentRot = this._parent.getRotation();\n\t\t\t\t\t\tinvParentRot.copy(parentRot).invert();\n\t\t\t\t\t\trotation$5.mul2(invParentRot, rotation$5);\n\t\t\t\t\t\tthis.localRotation.mul2(rotation$5, rot);\n\t\t\t\t}\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\trotateLocal(x, y, z) {\n\t\t\t\trotation$5.setFromEulerAngles(x, y, z);\n\t\t\t\tthis.localRotation.mul(rotation$5);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n}\n\nconst _viewMat$1 = new Mat4();\nconst _viewProjMat = new Mat4();\nconst _viewportMatrix = new Mat4();\nclass LightCamera {\n\t\tstatic{\n\t\t\t\tthis.pointLightRotations = [\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, 90, 180),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, -90, 180),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(90, 0, 0),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(-90, 0, 0),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, 180, 180),\n\t\t\t\t\t\tnew Quat().setFromEulerAngles(0, 0, 180)\n\t\t\t\t];\n\t\t}\n\t\tstatic create(name, lightType, face) {\n\t\t\t\tconst camera = new Camera();\n\t\t\t\tcamera.node = new GraphNode(name);\n\t\t\t\tcamera.aspectRatio = 1;\n\t\t\t\tcamera.aspectRatioMode = ASPECT_MANUAL;\n\t\t\t\tcamera._scissorRectClear = true;\n\t\t\t\tswitch(lightType){\n\t\t\t\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\t\t\t\t\tcamera.node.setRotation(LightCamera.pointLightRotations[face]);\n\t\t\t\t\t\t\t\tcamera.fov = 90;\n\t\t\t\t\t\t\t\tcamera.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t\t\t\t\tcamera.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\t\t\t\t\tcamera.projection = PROJECTION_ORTHOGRAPHIC;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn camera;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._spotCookieCamera = null;\n\t\t}\n\t\tstatic evalSpotCookieMatrix(light) {\n\t\t\t\tlet cookieCamera = LightCamera._spotCookieCamera;\n\t\t\t\tif (!cookieCamera) {\n\t\t\t\t\t\tcookieCamera = LightCamera.create('SpotCookieCamera', LIGHTTYPE_SPOT);\n\t\t\t\t\t\tLightCamera._spotCookieCamera = cookieCamera;\n\t\t\t\t}\n\t\t\t\tcookieCamera.fov = light._outerConeAngle * 2;\n\t\t\t\tconst cookieNode = cookieCamera._node;\n\t\t\t\tcookieNode.setPosition(light._node.getPosition());\n\t\t\t\tcookieNode.setRotation(light._node.getRotation());\n\t\t\t\tcookieNode.rotateLocal(-90, 0, 0);\n\t\t\t\t_viewMat$1.setTRS(cookieNode.getPosition(), cookieNode.getRotation(), Vec3.ONE).invert();\n\t\t\t\t_viewProjMat.mul2(cookieCamera.projectionMatrix, _viewMat$1);\n\t\t\t\tconst cookieMatrix = light.cookieMatrix;\n\t\t\t\tconst rectViewport = light.atlasViewport;\n\t\t\t\t_viewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w);\n\t\t\t\tcookieMatrix.mul2(_viewportMatrix, _viewProjMat);\n\t\t\t\treturn cookieMatrix;\n\t\t}\n}\n\nconst tempVec3$1 = new Vec3();\nconst tempAreaLightSizes = new Float32Array(6);\nconst areaHalfAxisWidth = new Vec3(-0.5, 0, 0);\nconst areaHalfAxisHeight = new Vec3(0, 0, 0.5);\nconst TextureIndexFloat = {\n\t\tPOSITION_RANGE: 0,\n\t\tDIRECTION_FLAGS: 1,\n\t\tCOLOR_ANGLES_BIAS: 2,\n\t\tPROJ_MAT_0: 3,\n\t\tATLAS_VIEWPORT: 3,\n\t\tPROJ_MAT_1: 4,\n\t\tPROJ_MAT_2: 5,\n\t\tPROJ_MAT_3: 6,\n\t\tAREA_DATA_WIDTH: 7,\n\t\tAREA_DATA_HEIGHT: 8,\n\t\tCOUNT: 9\n};\nconst enums = {\n\t\t'LIGHTSHAPE_PUNCTUAL': `${LIGHTSHAPE_PUNCTUAL}u`,\n\t\t'LIGHTSHAPE_RECT': `${LIGHTSHAPE_RECT}u`,\n\t\t'LIGHTSHAPE_DISK': `${LIGHTSHAPE_DISK}u`,\n\t\t'LIGHTSHAPE_SPHERE': `${LIGHTSHAPE_SPHERE}u`,\n\t\t'LIGHT_COLOR_DIVIDER': `${LIGHT_COLOR_DIVIDER}.0`\n};\nconst buildShaderDefines = (object, prefix)=>{\n\t\treturn Object.keys(object).map((key)=>`#define {${prefix}${key}} ${object[key]}`).join('\\n');\n};\nconst lightBufferDefines = `\\n\n\t\t${buildShaderDefines(TextureIndexFloat, 'CLUSTER_TEXTURE_')}\n\t\t${buildShaderDefines(enums, '')}\n`;\nclass LightsBuffer {\n\t\tconstructor(device){\n\t\t\t\tthis.areaLightsEnabled = false;\n\t\t\t\tthis.device = device;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('lightBufferDefinesPS', lightBufferDefines);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('lightBufferDefinesPS', lightBufferDefines);\n\t\t\t\tthis.cookiesEnabled = false;\n\t\t\t\tthis.shadowsEnabled = false;\n\t\t\t\tthis.areaLightsEnabled = false;\n\t\t\t\tthis.maxLights = 255;\n\t\t\t\tconst pixelsPerLightFloat = TextureIndexFloat.COUNT;\n\t\t\t\tthis.lightsFloat = new Float32Array(4 * pixelsPerLightFloat * this.maxLights);\n\t\t\t\tthis.lightsUint = new Uint32Array(this.lightsFloat.buffer);\n\t\t\t\tthis.lightsTexture = this.createTexture(this.device, pixelsPerLightFloat, this.maxLights, PIXELFORMAT_RGBA32F, 'LightsTexture');\n\t\t\t\tthis._lightsTextureId = this.device.scope.resolve('lightsTexture');\n\t\t\t\tthis.invMaxColorValue = 0;\n\t\t\t\tthis.invMaxAttenuation = 0;\n\t\t\t\tthis.boundsMin = new Vec3();\n\t\t\t\tthis.boundsDelta = new Vec3();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.lightsTexture?.destroy();\n\t\t\t\tthis.lightsTexture = null;\n\t\t}\n\t\tcreateTexture(device, width, height, format, name) {\n\t\t\t\tconst tex = new Texture(device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tanisotropy: 1\n\t\t\t\t});\n\t\t\t\treturn tex;\n\t\t}\n\t\tsetBounds(min, delta) {\n\t\t\t\tthis.boundsMin.copy(min);\n\t\t\t\tthis.boundsDelta.copy(delta);\n\t\t}\n\t\tuploadTextures() {\n\t\t\t\tthis.lightsTexture.lock().set(this.lightsFloat);\n\t\t\t\tthis.lightsTexture.unlock();\n\t\t}\n\t\tupdateUniforms() {\n\t\t\t\tthis._lightsTextureId.setValue(this.lightsTexture);\n\t\t}\n\t\tgetSpotDirection(direction, spot) {\n\t\t\t\tconst mat = spot._node.getWorldTransform();\n\t\t\t\tmat.getY(direction).mulScalar(-1);\n\t\t\t\tdirection.normalize();\n\t\t}\n\t\tgetLightAreaSizes(light) {\n\t\t\t\tconst mat = light._node.getWorldTransform();\n\t\t\t\tmat.transformVector(areaHalfAxisWidth, tempVec3$1);\n\t\t\t\ttempAreaLightSizes[0] = tempVec3$1.x;\n\t\t\t\ttempAreaLightSizes[1] = tempVec3$1.y;\n\t\t\t\ttempAreaLightSizes[2] = tempVec3$1.z;\n\t\t\t\tmat.transformVector(areaHalfAxisHeight, tempVec3$1);\n\t\t\t\ttempAreaLightSizes[3] = tempVec3$1.x;\n\t\t\t\ttempAreaLightSizes[4] = tempVec3$1.y;\n\t\t\t\ttempAreaLightSizes[5] = tempVec3$1.z;\n\t\t\t\treturn tempAreaLightSizes;\n\t\t}\n\t\taddLightData(light, lightIndex) {\n\t\t\t\tconst isSpot = light._type === LIGHTTYPE_SPOT;\n\t\t\t\tconst hasAtlasViewport = light.atlasViewportAllocated;\n\t\t\t\tconst isCookie = this.cookiesEnabled && !!light._cookie && hasAtlasViewport;\n\t\t\t\tconst isArea = this.areaLightsEnabled && light.shape !== LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tconst castShadows = this.shadowsEnabled && light.castShadows && hasAtlasViewport;\n\t\t\t\tconst pos = light._node.getPosition();\n\t\t\t\tlet lightProjectionMatrix = null;\n\t\t\t\tlet atlasViewport = null;\n\t\t\t\tif (isSpot) {\n\t\t\t\t\t\tif (castShadows) {\n\t\t\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\t\t\t\t\tlightProjectionMatrix = lightRenderData.shadowMatrix;\n\t\t\t\t\t\t} else if (isCookie) {\n\t\t\t\t\t\t\t\tlightProjectionMatrix = LightCamera.evalSpotCookieMatrix(light);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (castShadows || isCookie) {\n\t\t\t\t\t\t\t\tatlasViewport = light.atlasViewport;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst dataFloat = this.lightsFloat;\n\t\t\t\tconst dataUint = this.lightsUint;\n\t\t\t\tconst dataFloatStart = lightIndex * this.lightsTexture.width * 4;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 0] = pos.x;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 1] = pos.y;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 2] = pos.z;\n\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.POSITION_RANGE + 3] = light.attenuationEnd;\n\t\t\t\tconst clusteredData = light.clusteredData;\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 0] = clusteredData[0];\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 1] = clusteredData[1];\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 2] = clusteredData[2];\n\t\t\t\tif (light.castShadows) {\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\t\t\tconst biases = light._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\tconst biasHalf = FloatPacking.float2Half(biases.bias);\n\t\t\t\t\t\tconst normalBiasHalf = FloatPacking.float2Half(biases.normalBias);\n\t\t\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.COLOR_ANGLES_BIAS + 3] = biasHalf | normalBiasHalf << 16;\n\t\t\t\t}\n\t\t\t\tif (isSpot) {\n\t\t\t\t\t\tthis.getSpotDirection(tempVec3$1, light);\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 0] = tempVec3$1.x;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 1] = tempVec3$1.y;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 2] = tempVec3$1.z;\n\t\t\t\t}\n\t\t\t\tdataUint[dataFloatStart + 4 * TextureIndexFloat.DIRECTION_FLAGS + 3] = light.getClusteredFlags(castShadows, isCookie);\n\t\t\t\tif (lightProjectionMatrix) {\n\t\t\t\t\t\tconst matData = lightProjectionMatrix.data;\n\t\t\t\t\t\tfor(let m = 0; m < 16; m++){\n\t\t\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.PROJ_MAT_0 + m] = matData[m];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (atlasViewport) {\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 0] = atlasViewport.x;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 1] = atlasViewport.y;\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.ATLAS_VIEWPORT + 2] = atlasViewport.z / 3;\n\t\t\t\t}\n\t\t\t\tif (isArea) {\n\t\t\t\t\t\tconst areaSizes = this.getLightAreaSizes(light);\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 0] = areaSizes[0];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 1] = areaSizes[1];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_WIDTH + 2] = areaSizes[2];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 0] = areaSizes[3];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 1] = areaSizes[4];\n\t\t\t\t\t\tdataFloat[dataFloatStart + 4 * TextureIndexFloat.AREA_DATA_HEIGHT + 2] = areaSizes[5];\n\t\t\t\t}\n\t\t}\n}\n\nconst tempVec3 = new Vec3();\nconst tempMin3 = new Vec3();\nconst tempMax3 = new Vec3();\nconst tempBox = new BoundingBox();\nclass ClusterLight {\n\t\tconstructor(){\n\t\t\t\tthis.light = null;\n\t\t\t\tthis.min = new Vec3();\n\t\t\t\tthis.max = new Vec3();\n\t\t}\n}\nclass WorldClusters {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.name = 'Untitled';\n\t\t\t\tthis.reportCount = 0;\n\t\t\t\tthis.boundsMin = new Vec3();\n\t\t\t\tthis.boundsMax = new Vec3();\n\t\t\t\tthis.boundsDelta = new Vec3();\n\t\t\t\tthis._cells = new Vec3(1, 1, 1);\n\t\t\t\tthis._cellsLimit = new Vec3();\n\t\t\t\tthis.cells = this._cells;\n\t\t\t\tthis.maxCellLightCount = 4;\n\t\t\t\tthis._usedLights = [];\n\t\t\t\tthis._usedLights.push(new ClusterLight());\n\t\t\t\tthis.lightsBuffer = new LightsBuffer(device);\n\t\t\t\tthis.registerUniforms(device);\n\t\t}\n\t\tset maxCellLightCount(count) {\n\t\t\t\tif (count !== this._maxCellLightCount) {\n\t\t\t\t\t\tthis._maxCellLightCount = count;\n\t\t\t\t\t\tthis._cellsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget maxCellLightCount() {\n\t\t\t\treturn this._maxCellLightCount;\n\t\t}\n\t\tset cells(value) {\n\t\t\t\ttempVec3.copy(value).floor();\n\t\t\t\tif (!this._cells.equals(tempVec3)) {\n\t\t\t\t\t\tthis._cells.copy(tempVec3);\n\t\t\t\t\t\tthis._cellsLimit.copy(tempVec3).sub(Vec3.ONE);\n\t\t\t\t\t\tthis._cellsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget cells() {\n\t\t\t\treturn this._cells;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.lightsBuffer.destroy();\n\t\t\t\tthis.releaseClusterTexture();\n\t\t}\n\t\treleaseClusterTexture() {\n\t\t\t\tif (this.clusterTexture) {\n\t\t\t\t\t\tthis.clusterTexture.destroy();\n\t\t\t\t\t\tthis.clusterTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tregisterUniforms(device) {\n\t\t\t\tthis._clusterSkipId = device.scope.resolve('clusterSkip');\n\t\t\t\tthis._clusterMaxCellsId = device.scope.resolve('clusterMaxCells');\n\t\t\t\tthis._clusterWorldTextureId = device.scope.resolve('clusterWorldTexture');\n\t\t\t\tthis._clusterTextureSizeId = device.scope.resolve('clusterTextureSize');\n\t\t\t\tthis._clusterTextureSizeData = new Float32Array(3);\n\t\t\t\tthis._clusterBoundsMinId = device.scope.resolve('clusterBoundsMin');\n\t\t\t\tthis._clusterBoundsMinData = new Float32Array(3);\n\t\t\t\tthis._clusterBoundsDeltaId = device.scope.resolve('clusterBoundsDelta');\n\t\t\t\tthis._clusterBoundsDeltaData = new Float32Array(3);\n\t\t\t\tthis._clusterCellsCountByBoundsSizeId = device.scope.resolve('clusterCellsCountByBoundsSize');\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData = new Float32Array(3);\n\t\t\t\tthis._clusterCellsDotId = device.scope.resolve('clusterCellsDot');\n\t\t\t\tthis._clusterCellsDotData = new Float32Array(3);\n\t\t\t\tthis._clusterCellsMaxId = device.scope.resolve('clusterCellsMax');\n\t\t\t\tthis._clusterCellsMaxData = new Float32Array(3);\n\t\t}\n\t\tupdateParams(lightingParams) {\n\t\t\t\tif (lightingParams) {\n\t\t\t\t\t\tthis.cells = lightingParams.cells;\n\t\t\t\t\t\tthis.maxCellLightCount = lightingParams.maxLightsPerCell;\n\t\t\t\t\t\tthis.lightsBuffer.cookiesEnabled = lightingParams.cookiesEnabled;\n\t\t\t\t\t\tthis.lightsBuffer.shadowsEnabled = lightingParams.shadowsEnabled;\n\t\t\t\t\t\tthis.lightsBuffer.areaLightsEnabled = lightingParams.areaLightsEnabled;\n\t\t\t\t}\n\t\t}\n\t\tupdateCells() {\n\t\t\t\tif (this._cellsDirty) {\n\t\t\t\t\t\tthis._cellsDirty = false;\n\t\t\t\t\t\tconst cx = this._cells.x;\n\t\t\t\t\t\tconst cy = this._cells.y;\n\t\t\t\t\t\tconst cz = this._cells.z;\n\t\t\t\t\t\tconst numCells = cx * cy * cz;\n\t\t\t\t\t\tconst totalPixels = this.maxCellLightCount * numCells;\n\t\t\t\t\t\tlet width = Math.ceil(Math.sqrt(totalPixels));\n\t\t\t\t\t\twidth = math.roundUp(width, this.maxCellLightCount);\n\t\t\t\t\t\tconst height = Math.ceil(totalPixels / width);\n\t\t\t\t\t\tthis._clusterCellsMaxData[0] = cx;\n\t\t\t\t\t\tthis._clusterCellsMaxData[1] = cy;\n\t\t\t\t\t\tthis._clusterCellsMaxData[2] = cz;\n\t\t\t\t\t\tthis._clusterCellsDotData[0] = this.maxCellLightCount;\n\t\t\t\t\t\tthis._clusterCellsDotData[1] = cx * cz * this.maxCellLightCount;\n\t\t\t\t\t\tthis._clusterCellsDotData[2] = cx * this.maxCellLightCount;\n\t\t\t\t\t\tthis.clusters = new Uint8ClampedArray(totalPixels);\n\t\t\t\t\t\tthis.counts = new Int32Array(numCells);\n\t\t\t\t\t\tthis._clusterTextureSizeData[0] = width;\n\t\t\t\t\t\tthis._clusterTextureSizeData[1] = 1.0 / width;\n\t\t\t\t\t\tthis._clusterTextureSizeData[2] = 1.0 / height;\n\t\t\t\t\t\tthis.releaseClusterTexture();\n\t\t\t\t\t\tthis.clusterTexture = this.lightsBuffer.createTexture(this.device, width, height, PIXELFORMAT_R8, 'ClusterTexture');\n\t\t\t\t}\n\t\t}\n\t\tuploadTextures() {\n\t\t\t\tthis.clusterTexture.lock().set(this.clusters);\n\t\t\t\tthis.clusterTexture.unlock();\n\t\t\t\tthis.lightsBuffer.uploadTextures();\n\t\t}\n\t\tupdateUniforms() {\n\t\t\t\tthis._clusterSkipId.setValue(this._usedLights.length > 1 ? 0 : 1);\n\t\t\t\tthis.lightsBuffer.updateUniforms();\n\t\t\t\tthis._clusterWorldTextureId.setValue(this.clusterTexture);\n\t\t\t\tthis._clusterMaxCellsId.setValue(this.maxCellLightCount);\n\t\t\t\tconst boundsDelta = this.boundsDelta;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData[0] = this._cells.x / boundsDelta.x;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData[1] = this._cells.y / boundsDelta.y;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeData[2] = this._cells.z / boundsDelta.z;\n\t\t\t\tthis._clusterCellsCountByBoundsSizeId.setValue(this._clusterCellsCountByBoundsSizeData);\n\t\t\t\tthis._clusterBoundsMinData[0] = this.boundsMin.x;\n\t\t\t\tthis._clusterBoundsMinData[1] = this.boundsMin.y;\n\t\t\t\tthis._clusterBoundsMinData[2] = this.boundsMin.z;\n\t\t\t\tthis._clusterBoundsDeltaData[0] = boundsDelta.x;\n\t\t\t\tthis._clusterBoundsDeltaData[1] = boundsDelta.y;\n\t\t\t\tthis._clusterBoundsDeltaData[2] = boundsDelta.z;\n\t\t\t\tthis._clusterTextureSizeId.setValue(this._clusterTextureSizeData);\n\t\t\t\tthis._clusterBoundsMinId.setValue(this._clusterBoundsMinData);\n\t\t\t\tthis._clusterBoundsDeltaId.setValue(this._clusterBoundsDeltaData);\n\t\t\t\tthis._clusterCellsDotId.setValue(this._clusterCellsDotData);\n\t\t\t\tthis._clusterCellsMaxId.setValue(this._clusterCellsMaxData);\n\t\t}\n\t\tevalLightCellMinMax(clusteredLight, min, max) {\n\t\t\t\tmin.copy(clusteredLight.min);\n\t\t\t\tmin.sub(this.boundsMin);\n\t\t\t\tmin.div(this.boundsDelta);\n\t\t\t\tmin.mul2(min, this.cells);\n\t\t\t\tmin.floor();\n\t\t\t\tmax.copy(clusteredLight.max);\n\t\t\t\tmax.sub(this.boundsMin);\n\t\t\t\tmax.div(this.boundsDelta);\n\t\t\t\tmax.mul2(max, this.cells);\n\t\t\t\tmax.ceil();\n\t\t\t\tmin.max(Vec3.ZERO);\n\t\t\t\tmax.min(this._cellsLimit);\n\t\t}\n\t\tcollectLights(lights) {\n\t\t\t\tconst maxLights = this.lightsBuffer.maxLights;\n\t\t\t\tconst usedLights = this._usedLights;\n\t\t\t\tlet lightIndex = 1;\n\t\t\t\tlights.forEach((light)=>{\n\t\t\t\t\t\tconst runtimeLight = !!(light.mask & (MASK_AFFECT_DYNAMIC | MASK_AFFECT_LIGHTMAPPED));\n\t\t\t\t\t\tconst zeroAngleSpotlight = light.type === LIGHTTYPE_SPOT && light._outerConeAngle === 0;\n\t\t\t\t\t\tif (light.enabled && light.type !== LIGHTTYPE_DIRECTIONAL && light.visibleThisFrame && light.intensity > 0 && runtimeLight && !zeroAngleSpotlight) {\n\t\t\t\t\t\t\t\tif (lightIndex < maxLights) {\n\t\t\t\t\t\t\t\t\t\tlet clusteredLight;\n\t\t\t\t\t\t\t\t\t\tif (lightIndex < usedLights.length) {\n\t\t\t\t\t\t\t\t\t\t\t\tclusteredLight = usedLights[lightIndex];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tclusteredLight = new ClusterLight();\n\t\t\t\t\t\t\t\t\t\t\t\tusedLights.push(clusteredLight);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tclusteredLight.light = light;\n\t\t\t\t\t\t\t\t\t\tlight.getBoundingBox(tempBox);\n\t\t\t\t\t\t\t\t\t\tclusteredLight.min.copy(tempBox.getMin());\n\t\t\t\t\t\t\t\t\t\tclusteredLight.max.copy(tempBox.getMax());\n\t\t\t\t\t\t\t\t\t\tlightIndex++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tusedLights.length = lightIndex;\n\t\t}\n\t\tevaluateBounds() {\n\t\t\t\tconst usedLights = this._usedLights;\n\t\t\t\tconst min = this.boundsMin;\n\t\t\t\tconst max = this.boundsMax;\n\t\t\t\tif (usedLights.length > 1) {\n\t\t\t\t\t\tmin.copy(usedLights[1].min);\n\t\t\t\t\t\tmax.copy(usedLights[1].max);\n\t\t\t\t\t\tfor(let i = 2; i < usedLights.length; i++){\n\t\t\t\t\t\t\t\tmin.min(usedLights[i].min);\n\t\t\t\t\t\t\t\tmax.max(usedLights[i].max);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tmin.set(0, 0, 0);\n\t\t\t\t\t\tmax.set(1, 1, 1);\n\t\t\t\t}\n\t\t\t\tthis.boundsDelta.sub2(max, min);\n\t\t\t\tthis.lightsBuffer.setBounds(min, this.boundsDelta);\n\t\t}\n\t\tupdateClusters(lightingParams) {\n\t\t\t\tthis.counts.fill(0);\n\t\t\t\tthis.clusters.fill(0);\n\t\t\t\tthis.lightsBuffer.areaLightsEnabled = lightingParams ? lightingParams.areaLightsEnabled : false;\n\t\t\t\tconst divX = this._cells.x;\n\t\t\t\tconst divZ = this._cells.z;\n\t\t\t\tconst counts = this.counts;\n\t\t\t\tconst limit = this._maxCellLightCount;\n\t\t\t\tconst clusters = this.clusters;\n\t\t\t\tconst pixelsPerCellCount = this.maxCellLightCount;\n\t\t\t\tconst usedLights = this._usedLights;\n\t\t\t\tfor(let i = 1; i < usedLights.length; i++){\n\t\t\t\t\t\tconst clusteredLight = usedLights[i];\n\t\t\t\t\t\tconst light = clusteredLight.light;\n\t\t\t\t\t\tthis.lightsBuffer.addLightData(light, i);\n\t\t\t\t\t\tthis.evalLightCellMinMax(clusteredLight, tempMin3, tempMax3);\n\t\t\t\t\t\tconst xStart = tempMin3.x;\n\t\t\t\t\t\tconst xEnd = tempMax3.x;\n\t\t\t\t\t\tconst yStart = tempMin3.y;\n\t\t\t\t\t\tconst yEnd = tempMax3.y;\n\t\t\t\t\t\tconst zStart = tempMin3.z;\n\t\t\t\t\t\tconst zEnd = tempMax3.z;\n\t\t\t\t\t\tfor(let x = xStart; x <= xEnd; x++){\n\t\t\t\t\t\t\t\tfor(let z = zStart; z <= zEnd; z++){\n\t\t\t\t\t\t\t\t\t\tfor(let y = yStart; y <= yEnd; y++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst clusterIndex = x + divX * (z + y * divZ);\n\t\t\t\t\t\t\t\t\t\t\t\tconst count = counts[clusterIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (count < limit) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclusters[pixelsPerCellCount * clusterIndex + count] = i;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcounts[clusterIndex] = count + 1;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(lights, lightingParams = null) {\n\t\t\t\tthis.updateParams(lightingParams);\n\t\t\t\tthis.updateCells();\n\t\t\t\tthis.collectLights(lights);\n\t\t\t\tthis.evaluateBounds();\n\t\t\t\tthis.updateClusters(lightingParams);\n\t\t\t\tthis.uploadTextures();\n\t\t}\n\t\tactivate() {\n\t\t\t\tthis.updateUniforms();\n\t\t}\n}\n\nconst base64String = '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';\nlet data = null;\nconst initData = ()=>{\n\t\tif (!data) {\n\t\t\t\tconst binaryString = atob(base64String);\n\t\t\t\tdata = Uint8Array.from(binaryString, (char)=>char.charCodeAt(0));\n\t\t}\n};\nconst blueNoiseData = ()=>{\n\t\tinitData();\n\t\treturn data;\n};\nclass BlueNoise {\n\t\tconstructor(seed = 0){\n\t\t\t\tthis.seed = 0;\n\t\t\t\tthis.seed = seed * 4;\n\t\t\t\tinitData();\n\t\t}\n\t\t_next() {\n\t\t\t\tthis.seed = (this.seed + 4) % data.length;\n\t\t}\n\t\tvalue() {\n\t\t\t\tthis._next();\n\t\t\t\treturn data[this.seed] / 255;\n\t\t}\n\t\tvec4(dest = new Vec4()) {\n\t\t\t\tthis._next();\n\t\t\t\treturn dest.set(data[this.seed], data[this.seed + 1], data[this.seed + 2], data[this.seed + 3]).mulScalar(1 / 255);\n\t\t}\n}\n\nconst lightCubeDir = [\n\t\tnew Vec3(-1, 0, 0),\n\t\tnew Vec3(1, 0, 0),\n\t\tnew Vec3(0, -1, 0),\n\t\tnew Vec3(0, 1, 0),\n\t\tnew Vec3(0, 0, -1),\n\t\tnew Vec3(0, 0, 1)\n];\nclass LightCube {\n\t\tupdate(ambientLight, lights) {\n\t\t\t\tconst colors = this.colors;\n\t\t\t\tconst { r, g, b } = ambientLight;\n\t\t\t\tfor(let j = 0; j < 6; j++){\n\t\t\t\t\t\tcolors[j * 3] = r;\n\t\t\t\t\t\tcolors[j * 3 + 1] = g;\n\t\t\t\t\t\tcolors[j * 3 + 2] = b;\n\t\t\t\t}\n\t\t\t\tfor(let j = 0; j < lights.length; j++){\n\t\t\t\t\t\tconst light = lights[j];\n\t\t\t\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tfor(let c = 0; c < 6; c++){\n\t\t\t\t\t\t\t\t\t\tconst weight = Math.max(lightCubeDir[c].dot(light._direction), 0) * light._intensity;\n\t\t\t\t\t\t\t\t\t\tconst lightColor = light._color;\n\t\t\t\t\t\t\t\t\t\tcolors[c * 3] += lightColor.r * weight;\n\t\t\t\t\t\t\t\t\t\tcolors[c * 3 + 1] += lightColor.g * weight;\n\t\t\t\t\t\t\t\t\t\tcolors[c * 3 + 2] += lightColor.b * weight;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.colors = new Float32Array(6 * 3);\n\t\t}\n}\n\nconst createTexture = (device, namePrefix, size, data)=>{\n\t\tconst texture = new Texture(device, {\n\t\t\t\tname: `${namePrefix}${size}`,\n\t\t\t\twidth: size,\n\t\t\t\theight: size,\n\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\t\taddressV: ADDRESS_REPEAT,\n\t\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\tanisotropy: 1,\n\t\t\t\tmipmaps: false\n\t\t});\n\t\ttexture.lock().set(data);\n\t\ttexture.unlock();\n\t\treturn texture;\n};\nconst deviceCacheBlueNoise = new DeviceCache();\nconst getBlueNoiseTexture = (device)=>{\n\t\treturn deviceCacheBlueNoise.get(device, ()=>{\n\t\t\t\tconst data = blueNoiseData();\n\t\t\t\tconst size = Math.sqrt(data.length / 4);\n\t\t\t\treturn createTexture(device, 'BlueNoise', size, data);\n\t\t});\n};\n\nclass ShadowMap {\n\t\tconstructor(texture, targets){\n\t\t\t\tthis.texture = texture;\n\t\t\t\tthis.cached = false;\n\t\t\t\tthis.renderTargets = targets;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.texture) {\n\t\t\t\t\t\tthis.texture.destroy();\n\t\t\t\t\t\tthis.texture = null;\n\t\t\t\t}\n\t\t\t\tconst targets = this.renderTargets;\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\ttargets[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.renderTargets.length = 0;\n\t\t}\n\t\tstatic create(device, light) {\n\t\t\t\tlet shadowMap = null;\n\t\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tshadowMap = this.createCubemap(device, light._shadowResolution, light._shadowType);\n\t\t\t\t} else {\n\t\t\t\t\t\tshadowMap = this.create2dMap(device, light._shadowResolution, light._shadowType);\n\t\t\t\t}\n\t\t\t\treturn shadowMap;\n\t\t}\n\t\tstatic createAtlas(device, resolution, shadowType) {\n\t\t\t\tconst shadowMap = this.create2dMap(device, resolution, shadowType);\n\t\t\t\tconst targets = shadowMap.renderTargets;\n\t\t\t\tconst rt = targets[0];\n\t\t\t\tfor(let i = 0; i < 5; i++){\n\t\t\t\t\t\ttargets.push(rt);\n\t\t\t\t}\n\t\t\t\treturn shadowMap;\n\t\t}\n\t\tstatic create2dMap(device, size, shadowType) {\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tlet format = shadowInfo.format;\n\t\t\t\tif (format === PIXELFORMAT_R32F && !device.textureFloatRenderable && device.textureHalfFloatRenderable) {\n\t\t\t\t\t\tformat = PIXELFORMAT_R16F;\n\t\t\t\t}\n\t\t\t\tconst formatName = pixelFormatInfo.get(format)?.name;\n\t\t\t\tlet filter = FILTER_LINEAR;\n\t\t\t\tif (shadowType === SHADOW_VSM_32F) {\n\t\t\t\t\t\tfilter = device.extTextureFloatLinear ? FILTER_LINEAR : FILTER_NEAREST;\n\t\t\t\t}\n\t\t\t\tif (shadowType === SHADOW_PCSS_32F) {\n\t\t\t\t\t\tfilter = FILTER_NEAREST;\n\t\t\t\t}\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: filter,\n\t\t\t\t\t\tmagFilter: filter,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: `ShadowMap2D_${formatName}`\n\t\t\t\t});\n\t\t\t\tlet target = null;\n\t\t\t\tif (shadowInfo?.pcf) {\n\t\t\t\t\t\ttexture.compareOnRead = true;\n\t\t\t\t\t\ttexture.compareFunc = FUNC_LESS;\n\t\t\t\t\t\ttarget = new RenderTarget({\n\t\t\t\t\t\t\t\tdepthBuffer: texture\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\t\t\tdepth: true\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\ttarget.flipY = true;\n\t\t\t\t}\n\t\t\t\treturn new ShadowMap(texture, [\n\t\t\t\t\t\ttarget\n\t\t\t\t]);\n\t\t}\n\t\tstatic createCubemap(device, size, shadowType) {\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tconst formatName = pixelFormatInfo.get(shadowInfo.format)?.name;\n\t\t\t\tconst isPcss = shadowType === SHADOW_PCSS_32F;\n\t\t\t\tconst filter = isPcss ? FILTER_NEAREST : FILTER_LINEAR;\n\t\t\t\tconst cubemap = new Texture(device, {\n\t\t\t\t\t\tformat: shadowInfo?.format,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: filter,\n\t\t\t\t\t\tmagFilter: filter,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: `ShadowMapCube_${formatName}`\n\t\t\t\t});\n\t\t\t\tif (!isPcss) {\n\t\t\t\t\t\tcubemap.compareOnRead = true;\n\t\t\t\t\t\tcubemap.compareFunc = FUNC_LESS;\n\t\t\t\t}\n\t\t\t\tconst targets = [];\n\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\tif (isPcss) {\n\t\t\t\t\t\t\t\ttargets.push(new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tcolorBuffer: cubemap,\n\t\t\t\t\t\t\t\t\t\tface: i,\n\t\t\t\t\t\t\t\t\t\tdepth: true\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttargets.push(new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tdepthBuffer: cubemap,\n\t\t\t\t\t\t\t\t\t\tface: i\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn new ShadowMap(cubemap, targets);\n\t\t}\n}\n\nconst _tempArray = [];\nconst _tempArray2 = [];\nconst _viewport$3 = new Vec4();\nconst _scissor = new Vec4();\nclass Slot {\n\t\tconstructor(rect){\n\t\t\t\tthis.size = Math.floor(rect.w * 1024);\n\t\t\t\tthis.used = false;\n\t\t\t\tthis.lightId = -1;\n\t\t\t\tthis.rect = rect;\n\t\t}\n}\nclass LightTextureAtlas {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.version = 1;\n\t\t\t\tthis.shadowAtlasResolution = 2048;\n\t\t\t\tthis.shadowAtlas = null;\n\t\t\t\tthis.shadowEdgePixels = 3;\n\t\t\t\tthis.cookieAtlasResolution = 4;\n\t\t\t\tthis.cookieAtlas = new Texture(this.device, {\n\t\t\t\t\t\tname: 'CookieAtlas',\n\t\t\t\t\t\twidth: this.cookieAtlasResolution,\n\t\t\t\t\t\theight: this.cookieAtlasResolution,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tthis.cookieRenderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.cookieAtlas,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tflipY: true\n\t\t\t\t});\n\t\t\t\tthis.slots = [];\n\t\t\t\tthis.atlasSplit = [];\n\t\t\t\tthis.cubeSlotsOffsets = [\n\t\t\t\t\t\tnew Vec2(0, 0),\n\t\t\t\t\t\tnew Vec2(0, 1),\n\t\t\t\t\t\tnew Vec2(1, 0),\n\t\t\t\t\t\tnew Vec2(1, 1),\n\t\t\t\t\t\tnew Vec2(2, 0),\n\t\t\t\t\t\tnew Vec2(2, 1)\n\t\t\t\t];\n\t\t\t\tthis.scissorVec = new Vec4();\n\t\t\t\tthis.allocateShadowAtlas(1);\n\t\t\t\tthis.allocateCookieAtlas(1);\n\t\t\t\tthis.allocateUniforms();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyShadowAtlas();\n\t\t\t\tthis.destroyCookieAtlas();\n\t\t}\n\t\tdestroyShadowAtlas() {\n\t\t\t\tthis.shadowAtlas?.destroy();\n\t\t\t\tthis.shadowAtlas = null;\n\t\t}\n\t\tdestroyCookieAtlas() {\n\t\t\t\tthis.cookieAtlas?.destroy();\n\t\t\t\tthis.cookieAtlas = null;\n\t\t\t\tthis.cookieRenderTarget?.destroy();\n\t\t\t\tthis.cookieRenderTarget = null;\n\t\t}\n\t\tallocateShadowAtlas(resolution, shadowType = SHADOW_PCF3_32F) {\n\t\t\t\tconst existingFormat = this.shadowAtlas?.texture.format;\n\t\t\t\tconst requiredFormat = shadowTypeInfo.get(shadowType).format;\n\t\t\t\tif (!this.shadowAtlas || this.shadowAtlas.texture.width !== resolution || existingFormat !== requiredFormat) {\n\t\t\t\t\t\tthis.version++;\n\t\t\t\t\t\tthis.destroyShadowAtlas();\n\t\t\t\t\t\tthis.shadowAtlas = ShadowMap.createAtlas(this.device, resolution, shadowType);\n\t\t\t\t\t\tthis.shadowAtlas.cached = true;\n\t\t\t\t\t\tconst scissorOffset = 4 / this.shadowAtlasResolution;\n\t\t\t\t\t\tthis.scissorVec.set(scissorOffset, scissorOffset, -2 * scissorOffset, -2 * scissorOffset);\n\t\t\t\t}\n\t\t}\n\t\tallocateCookieAtlas(resolution) {\n\t\t\t\tif (this.cookieAtlas.width !== resolution) {\n\t\t\t\t\t\tthis.cookieRenderTarget.resize(resolution, resolution);\n\t\t\t\t\t\tthis.version++;\n\t\t\t\t}\n\t\t}\n\t\tallocateUniforms() {\n\t\t\t\tthis._shadowAtlasTextureId = this.device.scope.resolve('shadowAtlasTexture');\n\t\t\t\tthis._shadowAtlasParamsId = this.device.scope.resolve('shadowAtlasParams');\n\t\t\t\tthis._shadowAtlasParams = new Float32Array(2);\n\t\t\t\tthis._cookieAtlasTextureId = this.device.scope.resolve('cookieAtlasTexture');\n\t\t}\n\t\tupdateUniforms() {\n\t\t\t\tconst rt = this.shadowAtlas.renderTargets[0];\n\t\t\t\tconst shadowBuffer = rt.depthBuffer;\n\t\t\t\tthis._shadowAtlasTextureId.setValue(shadowBuffer);\n\t\t\t\tthis._shadowAtlasParams[0] = this.shadowAtlasResolution;\n\t\t\t\tthis._shadowAtlasParams[1] = this.shadowEdgePixels;\n\t\t\t\tthis._shadowAtlasParamsId.setValue(this._shadowAtlasParams);\n\t\t\t\tthis._cookieAtlasTextureId.setValue(this.cookieAtlas);\n\t\t}\n\t\tsubdivide(numLights, lightingParams) {\n\t\t\t\tlet atlasSplit = lightingParams.atlasSplit;\n\t\t\t\tif (!atlasSplit) {\n\t\t\t\t\t\tconst gridSize = Math.ceil(Math.sqrt(numLights));\n\t\t\t\t\t\tatlasSplit = _tempArray2;\n\t\t\t\t\t\tatlasSplit[0] = gridSize;\n\t\t\t\t\t\tatlasSplit.length = 1;\n\t\t\t\t}\n\t\t\t\tconst arraysEqual = (a, b)=>a.length === b.length && a.every((v, i)=>v === b[i]);\n\t\t\t\tif (!arraysEqual(atlasSplit, this.atlasSplit)) {\n\t\t\t\t\t\tthis.version++;\n\t\t\t\t\t\tthis.slots.length = 0;\n\t\t\t\t\t\tthis.atlasSplit.length = 0;\n\t\t\t\t\t\tthis.atlasSplit.push(...atlasSplit);\n\t\t\t\t\t\tconst splitCount = this.atlasSplit[0];\n\t\t\t\t\t\tif (splitCount > 1) {\n\t\t\t\t\t\t\t\tconst invSize = 1 / splitCount;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < splitCount; i++){\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < splitCount; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst rect = new Vec4(i * invSize, j * invSize, invSize, invSize);\n\t\t\t\t\t\t\t\t\t\t\t\tconst nextLevelSplit = this.atlasSplit[1 + i * splitCount + j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (nextLevelSplit > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let x = 0; x < nextLevelSplit; x++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let y = 0; y < nextLevelSplit; y++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst invSizeNext = invSize / nextLevelSplit;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst rectNext = new Vec4(rect.x + x * invSizeNext, rect.y + y * invSizeNext, invSizeNext, invSizeNext);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.slots.push(new Slot(rectNext));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.slots.push(new Slot(rect));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.slots.push(new Slot(new Vec4(0, 0, 1, 1)));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.slots.sort((a, b)=>{\n\t\t\t\t\t\t\t\treturn b.size - a.size;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tcollectLights(localLights, lightingParams) {\n\t\t\t\tconst cookiesEnabled = lightingParams.cookiesEnabled;\n\t\t\t\tconst shadowsEnabled = lightingParams.shadowsEnabled;\n\t\t\t\tlet needsShadowAtlas = false;\n\t\t\t\tlet needsCookieAtlas = false;\n\t\t\t\tconst lights = _tempArray;\n\t\t\t\tlights.length = 0;\n\t\t\t\tconst processLights = (list)=>{\n\t\t\t\t\t\tfor(let i = 0; i < list.length; i++){\n\t\t\t\t\t\t\t\tconst light = list[i];\n\t\t\t\t\t\t\t\tif (light.visibleThisFrame) {\n\t\t\t\t\t\t\t\t\t\tconst lightShadow = shadowsEnabled && light.castShadows;\n\t\t\t\t\t\t\t\t\t\tconst lightCookie = cookiesEnabled && !!light.cookie;\n\t\t\t\t\t\t\t\t\t\tneedsShadowAtlas ||= lightShadow;\n\t\t\t\t\t\t\t\t\t\tneedsCookieAtlas ||= lightCookie;\n\t\t\t\t\t\t\t\t\t\tif (lightShadow || lightCookie) {\n\t\t\t\t\t\t\t\t\t\t\t\tlights.push(light);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (cookiesEnabled || shadowsEnabled) {\n\t\t\t\t\t\tprocessLights(localLights);\n\t\t\t\t}\n\t\t\t\tlights.sort((a, b)=>{\n\t\t\t\t\t\treturn b.maxScreenSize - a.maxScreenSize;\n\t\t\t\t});\n\t\t\t\tif (needsShadowAtlas) {\n\t\t\t\t\t\tthis.allocateShadowAtlas(this.shadowAtlasResolution, lightingParams.shadowType);\n\t\t\t\t}\n\t\t\t\tif (needsCookieAtlas) {\n\t\t\t\t\t\tthis.allocateCookieAtlas(this.cookieAtlasResolution);\n\t\t\t\t}\n\t\t\t\tif (needsShadowAtlas || needsCookieAtlas) {\n\t\t\t\t\t\tthis.subdivide(lights.length, lightingParams);\n\t\t\t\t}\n\t\t\t\treturn lights;\n\t\t}\n\t\tsetupSlot(light, rect) {\n\t\t\t\tlight.atlasViewport.copy(rect);\n\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\tif (light.castShadows || light._cookie) {\n\t\t\t\t\t\t\t\t_viewport$3.copy(rect);\n\t\t\t\t\t\t\t\t_scissor.copy(rect);\n\t\t\t\t\t\t\t\tif (light._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\t\t\t\t_viewport$3.add(this.scissorVec);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (light._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\t\t\t\tconst smallSize = _viewport$3.z / 3;\n\t\t\t\t\t\t\t\t\t\tconst offset = this.cubeSlotsOffsets[face];\n\t\t\t\t\t\t\t\t\t\t_viewport$3.x += smallSize * offset.x;\n\t\t\t\t\t\t\t\t\t\t_viewport$3.y += smallSize * offset.y;\n\t\t\t\t\t\t\t\t\t\t_viewport$3.z = smallSize;\n\t\t\t\t\t\t\t\t\t\t_viewport$3.w = smallSize;\n\t\t\t\t\t\t\t\t\t\t_scissor.copy(_viewport$3);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (light.castShadows) {\n\t\t\t\t\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, face);\n\t\t\t\t\t\t\t\t\t\tlightRenderData.shadowViewport.copy(_viewport$3);\n\t\t\t\t\t\t\t\t\t\tlightRenderData.shadowScissor.copy(_scissor);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tassignSlot(light, slotIndex, slotReassigned) {\n\t\t\t\tlight.atlasViewportAllocated = true;\n\t\t\t\tconst slot = this.slots[slotIndex];\n\t\t\t\tslot.lightId = light.id;\n\t\t\t\tslot.used = true;\n\t\t\t\tif (slotReassigned) {\n\t\t\t\t\t\tlight.atlasSlotUpdated = true;\n\t\t\t\t\t\tlight.atlasVersion = this.version;\n\t\t\t\t\t\tlight.atlasSlotIndex = slotIndex;\n\t\t\t\t}\n\t\t}\n\t\tupdate(localLights, lightingParams) {\n\t\t\t\tthis.shadowAtlasResolution = lightingParams.shadowAtlasResolution;\n\t\t\t\tthis.cookieAtlasResolution = lightingParams.cookieAtlasResolution;\n\t\t\t\tconst lights = this.collectLights(localLights, lightingParams);\n\t\t\t\tif (lights.length > 0) {\n\t\t\t\t\t\tconst slots = this.slots;\n\t\t\t\t\t\tfor(let i = 0; i < slots.length; i++){\n\t\t\t\t\t\t\t\tslots[i].used = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst assignCount = Math.min(lights.length, slots.length);\n\t\t\t\t\t\tfor(let i = 0; i < assignCount; i++){\n\t\t\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\t\t\tif (light.castShadows) {\n\t\t\t\t\t\t\t\t\t\tlight._shadowMap = this.shadowAtlas;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst previousSlot = slots[light.atlasSlotIndex];\n\t\t\t\t\t\t\t\tif (light.atlasVersion === this.version && light.id === previousSlot?.lightId) {\n\t\t\t\t\t\t\t\t\t\tconst previousSlot = slots[light.atlasSlotIndex];\n\t\t\t\t\t\t\t\t\t\tif (previousSlot.size === slots[i].size && !previousSlot.used) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.assignSlot(light, light.atlasSlotIndex, false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet usedCount = 0;\n\t\t\t\t\t\tfor(let i = 0; i < assignCount; i++){\n\t\t\t\t\t\t\t\twhile(usedCount < slots.length && slots[usedCount].used){\n\t\t\t\t\t\t\t\t\t\tusedCount++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\t\t\tif (!light.atlasViewportAllocated) {\n\t\t\t\t\t\t\t\t\t\tthis.assignSlot(light, usedCount, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst slot = slots[light.atlasSlotIndex];\n\t\t\t\t\t\t\t\tthis.setupSlot(light, slot.rect);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateUniforms();\n\t\t}\n}\n\nconst blendModes = [];\nblendModes[BLEND_SUBTRACTIVE] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_REVERSE_SUBTRACT\n};\nblendModes[BLEND_NONE] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ZERO,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_NORMAL] = {\n\t\tsrc: BLENDMODE_SRC_ALPHA,\n\t\tdst: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\t\top: BLENDEQUATION_ADD,\n\t\talphaSrc: BLENDMODE_ONE\n};\nblendModes[BLEND_PREMULTIPLIED] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE_MINUS_SRC_ALPHA,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_ADDITIVE] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_ADDITIVEALPHA] = {\n\t\tsrc: BLENDMODE_SRC_ALPHA,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MULTIPLICATIVE2X] = {\n\t\tsrc: BLENDMODE_DST_COLOR,\n\t\tdst: BLENDMODE_SRC_COLOR,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_SCREEN] = {\n\t\tsrc: BLENDMODE_ONE_MINUS_DST_COLOR,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MULTIPLICATIVE] = {\n\t\tsrc: BLENDMODE_DST_COLOR,\n\t\tdst: BLENDMODE_ZERO,\n\t\top: BLENDEQUATION_ADD\n};\nblendModes[BLEND_MIN] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_MIN\n};\nblendModes[BLEND_MAX] = {\n\t\tsrc: BLENDMODE_ONE,\n\t\tdst: BLENDMODE_ONE,\n\t\top: BLENDEQUATION_MAX\n};\nlet id$3 = 0;\nclass Material {\n\t\tconstructor(){\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.name = 'Untitled';\n\t\t\t\tthis.userId = '';\n\t\t\t\tthis.id = id$3++;\n\t\t\t\tthis.variants = new Map();\n\t\t\t\tthis.defines = new Map();\n\t\t\t\tthis._definesDirty = false;\n\t\t\t\tthis.parameters = {};\n\t\t\t\tthis.alphaTest = 0;\n\t\t\t\tthis.alphaToCoverage = false;\n\t\t\t\tthis._blendState = new BlendState();\n\t\t\t\tthis._depthState = new DepthState();\n\t\t\t\tthis.cull = CULLFACE_BACK;\n\t\t\t\tthis.stencilFront = null;\n\t\t\t\tthis.stencilBack = null;\n\t\t\t\tthis._shaderChunks = null;\n\t\t\t\tthis._oldChunks = {};\n\t\t\t\tthis._dirtyShader = true;\n\t\t\t\tthis._shaderVersion = 0;\n\t\t\t\tthis._scene = null;\n\t\t\t\tthis.dirty = true;\n\t\t}\n\t\tget hasShaderChunks() {\n\t\t\t\treturn this._shaderChunks != null;\n\t\t}\n\t\tget shaderChunks() {\n\t\t\t\tif (!this._shaderChunks) {\n\t\t\t\t\t\tthis._shaderChunks = new ShaderChunks();\n\t\t\t\t}\n\t\t\t\treturn this._shaderChunks;\n\t\t}\n\t\tgetShaderChunks(shaderLanguage = SHADERLANGUAGE_GLSL) {\n\t\t\t\tconst chunks = this.shaderChunks;\n\t\t\t\treturn shaderLanguage === SHADERLANGUAGE_GLSL ? chunks.glsl : chunks.wgsl;\n\t\t}\n\t\tset shaderChunksVersion(value) {\n\t\t\t\tthis.shaderChunks.version = value;\n\t\t}\n\t\tget shaderChunksVersion() {\n\t\t\t\treturn this.shaderChunks.version;\n\t\t}\n\t\tset chunks(value) {\n\t\t\t\tthis._oldChunks = value;\n\t\t}\n\t\tget chunks() {\n\t\t\t\tObject.assign(this._oldChunks, Object.fromEntries(this.shaderChunks.glsl));\n\t\t\t\treturn this._oldChunks;\n\t\t}\n\t\tset depthBias(value) {\n\t\t\t\tthis._depthState.depthBias = value;\n\t\t}\n\t\tget depthBias() {\n\t\t\t\treturn this._depthState.depthBias;\n\t\t}\n\t\tset slopeDepthBias(value) {\n\t\t\t\tthis._depthState.depthBiasSlope = value;\n\t\t}\n\t\tget slopeDepthBias() {\n\t\t\t\treturn this._depthState.depthBiasSlope;\n\t\t}\n\t\tset redWrite(value) {\n\t\t\t\tthis._blendState.redWrite = value;\n\t\t}\n\t\tget redWrite() {\n\t\t\t\treturn this._blendState.redWrite;\n\t\t}\n\t\tset greenWrite(value) {\n\t\t\t\tthis._blendState.greenWrite = value;\n\t\t}\n\t\tget greenWrite() {\n\t\t\t\treturn this._blendState.greenWrite;\n\t\t}\n\t\tset blueWrite(value) {\n\t\t\t\tthis._blendState.blueWrite = value;\n\t\t}\n\t\tget blueWrite() {\n\t\t\t\treturn this._blendState.blueWrite;\n\t\t}\n\t\tset alphaWrite(value) {\n\t\t\t\tthis._blendState.alphaWrite = value;\n\t\t}\n\t\tget alphaWrite() {\n\t\t\t\treturn this._blendState.alphaWrite;\n\t\t}\n\t\tget transparent() {\n\t\t\t\treturn this._blendState.blend;\n\t\t}\n\t\t_updateTransparency() {\n\t\t\t\tconst transparent = this.transparent;\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].transparent = transparent;\n\t\t\t\t}\n\t\t}\n\t\tset blendState(value) {\n\t\t\t\tthis._blendState.copy(value);\n\t\t\t\tthis._updateTransparency();\n\t\t}\n\t\tget blendState() {\n\t\t\t\treturn this._blendState;\n\t\t}\n\t\tset blendType(type) {\n\t\t\t\tconst blendMode = blendModes[type];\n\t\t\t\tthis._blendState.setColorBlend(blendMode.op, blendMode.src, blendMode.dst);\n\t\t\t\tthis._blendState.setAlphaBlend(blendMode.alphaOp ?? blendMode.op, blendMode.alphaSrc ?? blendMode.src, blendMode.alphaDst ?? blendMode.dst);\n\t\t\t\tconst blend = type !== BLEND_NONE;\n\t\t\t\tif (this._blendState.blend !== blend) {\n\t\t\t\t\t\tthis._blendState.blend = blend;\n\t\t\t\t\t\tthis._updateTransparency();\n\t\t\t\t}\n\t\t\t\tthis._updateMeshInstanceKeys();\n\t\t}\n\t\tget blendType() {\n\t\t\t\tif (!this.transparent) {\n\t\t\t\t\t\treturn BLEND_NONE;\n\t\t\t\t}\n\t\t\t\tconst { colorOp, colorSrcFactor, colorDstFactor, alphaOp, alphaSrcFactor, alphaDstFactor } = this._blendState;\n\t\t\t\tfor(let i = 0; i < blendModes.length; i++){\n\t\t\t\t\t\tconst blendMode = blendModes[i];\n\t\t\t\t\t\tif (blendMode.src === colorSrcFactor && blendMode.dst === colorDstFactor && blendMode.op === colorOp && blendMode.src === alphaSrcFactor && blendMode.dst === alphaDstFactor && blendMode.op === alphaOp) {\n\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn BLEND_NORMAL;\n\t\t}\n\t\tset depthState(value) {\n\t\t\t\tthis._depthState.copy(value);\n\t\t}\n\t\tget depthState() {\n\t\t\t\treturn this._depthState;\n\t\t}\n\t\tset depthTest(value) {\n\t\t\t\tthis._depthState.test = value;\n\t\t}\n\t\tget depthTest() {\n\t\t\t\treturn this._depthState.test;\n\t\t}\n\t\tset depthFunc(value) {\n\t\t\t\tthis._depthState.func = value;\n\t\t}\n\t\tget depthFunc() {\n\t\t\t\treturn this._depthState.func;\n\t\t}\n\t\tset depthWrite(value) {\n\t\t\t\tthis._depthState.write = value;\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this._depthState.write;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.name = source.name;\n\t\t\t\tthis.alphaTest = source.alphaTest;\n\t\t\t\tthis.alphaToCoverage = source.alphaToCoverage;\n\t\t\t\tthis._blendState.copy(source._blendState);\n\t\t\t\tthis._depthState.copy(source._depthState);\n\t\t\t\tthis.cull = source.cull;\n\t\t\t\tthis.stencilFront = source.stencilFront?.clone();\n\t\t\t\tif (source.stencilBack) {\n\t\t\t\t\t\tthis.stencilBack = source.stencilFront === source.stencilBack ? this.stencilFront : source.stencilBack.clone();\n\t\t\t\t}\n\t\t\t\tthis.clearParameters();\n\t\t\t\tfor(const name in source.parameters){\n\t\t\t\t\t\tif (source.parameters.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tthis._setParameterSimple(name, source.parameters[name].data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.defines.clear();\n\t\t\t\tsource.defines.forEach((value, key)=>this.defines.set(key, value));\n\t\t\t\tthis._shaderChunks = source.hasShaderChunks ? new ShaderChunks() : null;\n\t\t\t\tthis._shaderChunks?.copy(source._shaderChunks);\n\t\t\t\treturn this;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new this.constructor();\n\t\t\t\treturn clone.copy(this);\n\t\t}\n\t\t_updateMeshInstanceKeys() {\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].updateKey();\n\t\t\t\t}\n\t\t}\n\t\tupdateUniforms(device, scene) {\n\t\t\t\tif (this._dirtyShader) {\n\t\t\t\t\t\tthis.clearVariants();\n\t\t\t\t}\n\t\t}\n\t\tgetShaderVariant(params) {}\n\t\tupdate() {\n\t\t\t\tif (Object.keys(this._oldChunks).length > 0) {\n\t\t\t\t\t\tfor (const [key, value] of Object.entries(this._oldChunks)){\n\t\t\t\t\t\t\t\tthis.shaderChunks.glsl.set(key, value);\n\t\t\t\t\t\t\t\tdelete this._oldChunks[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._definesDirty || this._shaderChunks?.isDirty()) {\n\t\t\t\t\t\tthis._definesDirty = false;\n\t\t\t\t\t\tthis._shaderChunks?.resetDirty();\n\t\t\t\t\t\tthis.clearVariants();\n\t\t\t\t}\n\t\t\t\tthis.dirty = true;\n\t\t}\n\t\tclearParameters() {\n\t\t\t\tthis.parameters = {};\n\t\t}\n\t\tgetParameters() {\n\t\t\t\treturn this.parameters;\n\t\t}\n\t\tclearVariants() {\n\t\t\t\tthis.variants.clear();\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tconst count = meshInstances.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tmeshInstances[i].clearShaders();\n\t\t\t\t}\n\t\t}\n\t\tgetParameter(name) {\n\t\t\t\treturn this.parameters[name];\n\t\t}\n\t\t_setParameterSimple(name, data) {\n\t\t\t\tconst param = this.parameters[name];\n\t\t\t\tif (param) {\n\t\t\t\t\t\tparam.data = data;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.parameters[name] = {\n\t\t\t\t\t\t\t\tscopeId: null,\n\t\t\t\t\t\t\t\tdata: data\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tsetParameter(name, data) {\n\t\t\t\tif (data === undefined && typeof name === 'object') {\n\t\t\t\t\t\tconst uniformObject = name;\n\t\t\t\t\t\tif (uniformObject.length) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < uniformObject.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.setParameter(uniformObject[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tname = uniformObject.name;\n\t\t\t\t\t\tdata = uniformObject.value;\n\t\t\t\t}\n\t\t\t\tthis._setParameterSimple(name, data);\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tif (this.parameters[name]) {\n\t\t\t\t\t\tdelete this.parameters[name];\n\t\t\t\t}\n\t\t}\n\t\tsetParameters(device, names) {\n\t\t\t\tconst parameters = this.parameters;\n\t\t\t\tif (names === undefined) names = parameters;\n\t\t\t\tfor(const paramName in names){\n\t\t\t\t\t\tconst parameter = parameters[paramName];\n\t\t\t\t\t\tif (parameter) {\n\t\t\t\t\t\t\t\tif (!parameter.scopeId) {\n\t\t\t\t\t\t\t\t\t\tparameter.scopeId = device.scope.resolve(paramName);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparameter.scopeId.setValue(parameter.data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetDefine(name, value) {\n\t\t\t\tlet modified = false;\n\t\t\t\tconst { defines } = this;\n\t\t\t\tif (value !== undefined && value !== false) {\n\t\t\t\t\t\tmodified = !defines.has(name) || defines.get(name) !== value;\n\t\t\t\t\t\tdefines.set(name, value);\n\t\t\t\t} else {\n\t\t\t\t\t\tmodified = defines.has(name);\n\t\t\t\t\t\tdefines.delete(name);\n\t\t\t\t}\n\t\t\t\tthis._definesDirty ||= modified;\n\t\t}\n\t\tgetDefine(name) {\n\t\t\t\treturn this.defines.has(name);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.variants.clear();\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\t\t\t\tmeshInstance.clearShaders();\n\t\t\t\t\t\tmeshInstance._material = null;\n\t\t\t\t\t\tif (meshInstance.mesh) {\n\t\t\t\t\t\t\t\tconst defaultMaterial = getDefaultMaterial(meshInstance.mesh.device);\n\t\t\t\t\t\t\t\tif (this !== defaultMaterial) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.material = defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.meshInstances.length = 0;\n\t\t}\n\t\taddMeshInstanceRef(meshInstance) {\n\t\t\t\tthis.meshInstances.push(meshInstance);\n\t\t}\n\t\tremoveMeshInstanceRef(meshInstance) {\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tconst i = meshInstances.indexOf(meshInstance);\n\t\t\t\tif (i !== -1) {\n\t\t\t\t\t\tmeshInstances.splice(i, 1);\n\t\t\t\t}\n\t\t}\n}\n\nclass ShadowMapCache {\n\t\tconstructor(){\n\t\t\t\tthis.cache = new Map();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.clear();\n\t\t\t\tthis.cache = null;\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.cache.forEach((shadowMaps)=>{\n\t\t\t\t\t\tshadowMaps.forEach((shadowMap)=>{\n\t\t\t\t\t\t\t\tshadowMap.destroy();\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis.cache.clear();\n\t\t}\n\t\tgetKey(light) {\n\t\t\t\tconst isCubeMap = light._type === LIGHTTYPE_OMNI;\n\t\t\t\tconst shadowType = light._shadowType;\n\t\t\t\tconst resolution = light._shadowResolution;\n\t\t\t\treturn `${isCubeMap}-${shadowType}-${resolution}`;\n\t\t}\n\t\tget(device, light) {\n\t\t\t\tconst key = this.getKey(light);\n\t\t\t\tconst shadowMaps = this.cache.get(key);\n\t\t\t\tif (shadowMaps && shadowMaps.length) {\n\t\t\t\t\t\treturn shadowMaps.pop();\n\t\t\t\t}\n\t\t\t\tconst shadowMap = ShadowMap.create(device, light);\n\t\t\t\tshadowMap.cached = true;\n\t\t\t\treturn shadowMap;\n\t\t}\n\t\tadd(light, shadowMap) {\n\t\t\t\tconst key = this.getKey(light);\n\t\t\t\tconst shadowMaps = this.cache.get(key);\n\t\t\t\tif (shadowMaps) {\n\t\t\t\t\t\tshadowMaps.push(shadowMap);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.cache.set(key, [\n\t\t\t\t\t\t\t\tshadowMap\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassShadowLocalNonClustered extends RenderPass {\n\t\tconstructor(device, shadowRenderer, light, face, applyVsm){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.face = face;\n\t\t\t\tthis.applyVsm = applyVsm;\n\t\t\t\tthis.shadowCamera = shadowRenderer.prepareFace(light, null, face);\n\t\t\t\tshadowRenderer.setupRenderPass(this, this.shadowCamera, true);\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.shadowRenderer.renderFace(this.light, null, this.face, false);\n\t\t}\n\t\tafter() {\n\t\t\t\tif (this.applyVsm) {\n\t\t\t\t\t\tthis.shadowRenderer.renderVsm(this.light, this.shadowCamera);\n\t\t\t\t}\n\t\t}\n}\n\nclass ShadowRendererLocal {\n\t\tconstructor(renderer, shadowRenderer){\n\t\t\t\tthis.shadowLights = [];\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.device = renderer.device;\n\t\t}\n\t\tcull(light, comp, casters = null) {\n\t\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\tif (!isClustered) {\n\t\t\t\t\t\tif (!light._shadowMap) {\n\t\t\t\t\t\t\t\tlight._shadowMap = ShadowMap.create(this.device, light);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst type = light._type;\n\t\t\t\tconst faceCount = type === LIGHTTYPE_SPOT ? 1 : 6;\n\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, face);\n\t\t\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\t\t\tshadowCam.nearClip = light.attenuationEnd / 1000;\n\t\t\t\t\t\tshadowCam.farClip = light.attenuationEnd;\n\t\t\t\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\t\t\t\tconst lightNode = light._node;\n\t\t\t\t\t\tshadowCamNode.setPosition(lightNode.getPosition());\n\t\t\t\t\t\tif (type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\t\tshadowCam.fov = light._outerConeAngle * 2;\n\t\t\t\t\t\t\t\tshadowCamNode.setRotation(lightNode.getRotation());\n\t\t\t\t\t\t\t\tshadowCamNode.rotateLocal(-90, 0, 0);\n\t\t\t\t\t\t} else if (type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\t\tif (isClustered) {\n\t\t\t\t\t\t\t\t\t\tconst tileSize = this.shadowRenderer.lightTextureAtlas.shadowAtlasResolution * light.atlasViewport.z / 3;\n\t\t\t\t\t\t\t\t\t\tconst texelSize = 2 / tileSize;\n\t\t\t\t\t\t\t\t\t\tconst filterSize = texelSize * this.shadowRenderer.lightTextureAtlas.shadowEdgePixels;\n\t\t\t\t\t\t\t\t\t\tshadowCam.fov = Math.atan(1 + filterSize) * math.RAD_TO_DEG * 2;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tshadowCam.fov = 90;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\t\t\t\tthis.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters);\n\t\t\t\t}\n\t\t}\n\t\tprepareLights(shadowLights, lights) {\n\t\t\t\tlet shadowCamera;\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (this.shadowRenderer.needsShadowRendering(light) && light.atlasViewportAllocated) {\n\t\t\t\t\t\t\t\tshadowLights.push(light);\n\t\t\t\t\t\t\t\tfor(let face = 0; face < light.numShadowFaces; face++){\n\t\t\t\t\t\t\t\t\t\tshadowCamera = this.shadowRenderer.prepareFace(light, null, face);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn shadowCamera;\n\t\t}\n\t\tbuildNonClusteredRenderPasses(frameGraph, localLights) {\n\t\t\t\tfor(let i = 0; i < localLights.length; i++){\n\t\t\t\t\t\tconst light = localLights[i];\n\t\t\t\t\t\tif (this.shadowRenderer.needsShadowRendering(light)) {\n\t\t\t\t\t\t\t\tconst applyVsm = light._type === LIGHTTYPE_SPOT;\n\t\t\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\t\t\tconst renderPass = new RenderPassShadowLocalNonClustered(this.device, this.shadowRenderer, light, face, applyVsm);\n\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassShadowDirectional extends RenderPass {\n\t\tconstructor(device, shadowRenderer, light, camera, allCascadesRendering){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.allCascadesRendering = allCascadesRendering;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { light, camera, shadowRenderer, allCascadesRendering } = this;\n\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\tif (shadowUpdateOverrides?.[face] !== SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\tshadowRenderer.renderFace(light, camera, face, !allCascadesRendering);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (shadowUpdateOverrides?.[face] === SHADOWUPDATE_THISFRAME) {\n\t\t\t\t\t\t\t\tshadowUpdateOverrides[face] = SHADOWUPDATE_NONE;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tafter() {\n\t\t\t\tthis.shadowRenderer.renderVsm(this.light, this.camera);\n\t\t}\n}\n\nconst visibleSceneAabb = new BoundingBox();\nconst center = new Vec3();\nconst shadowCamView$1 = new Mat4();\nconst aabbPoints = [\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3(),\n\t\tnew Vec3()\n];\nconst _depthRange = {\n\t\tmin: 0,\n\t\tmax: 0\n};\nfunction getDepthRange(cameraViewMatrix, aabbMin, aabbMax) {\n\t\taabbPoints[0].x = aabbPoints[1].x = aabbPoints[2].x = aabbPoints[3].x = aabbMin.x;\n\t\taabbPoints[1].y = aabbPoints[3].y = aabbPoints[7].y = aabbPoints[5].y = aabbMin.y;\n\t\taabbPoints[2].z = aabbPoints[3].z = aabbPoints[6].z = aabbPoints[7].z = aabbMin.z;\n\t\taabbPoints[4].x = aabbPoints[5].x = aabbPoints[6].x = aabbPoints[7].x = aabbMax.x;\n\t\taabbPoints[0].y = aabbPoints[2].y = aabbPoints[4].y = aabbPoints[6].y = aabbMax.y;\n\t\taabbPoints[0].z = aabbPoints[1].z = aabbPoints[4].z = aabbPoints[5].z = aabbMax.z;\n\t\tlet minz = 9999999999;\n\t\tlet maxz = -9999999999;\n\t\tfor(let i = 0; i < 8; ++i){\n\t\t\t\tcameraViewMatrix.transformPoint(aabbPoints[i], aabbPoints[i]);\n\t\t\t\tconst z = aabbPoints[i].z;\n\t\t\t\tif (z < minz) minz = z;\n\t\t\t\tif (z > maxz) maxz = z;\n\t\t}\n\t\t_depthRange.min = minz;\n\t\t_depthRange.max = maxz;\n\t\treturn _depthRange;\n}\nclass ShadowRendererDirectional {\n\t\tconstructor(renderer, shadowRenderer){\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.device = renderer.device;\n\t\t}\n\t\tcull(light, comp, camera, casters = null) {\n\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\tif (!light._shadowMap) {\n\t\t\t\t\t\tlight._shadowMap = ShadowMap.create(this.device, light);\n\t\t\t\t}\n\t\t\t\tconst nearDist = camera._nearClip;\n\t\t\t\tthis.generateSplitDistances(light, nearDist, Math.min(camera._farClip, light.shadowDistance));\n\t\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\t\tfor(let cascade = 0; cascade < light.numCascades; cascade++){\n\t\t\t\t\t\tif (shadowUpdateOverrides?.[cascade] === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(camera, cascade);\n\t\t\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\t\t\tshadowCam.renderTarget = light._shadowMap.renderTargets[0];\n\t\t\t\t\t\tlightRenderData.shadowViewport.copy(light.cascades[cascade]);\n\t\t\t\t\t\tlightRenderData.shadowScissor.copy(light.cascades[cascade]);\n\t\t\t\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\t\t\t\tconst lightNode = light._node;\n\t\t\t\t\t\tshadowCamNode.setPosition(lightNode.getPosition());\n\t\t\t\t\t\tshadowCamNode.setRotation(lightNode.getRotation());\n\t\t\t\t\t\tshadowCamNode.rotateLocal(-90, 0, 0);\n\t\t\t\t\t\tconst frustumNearDist = cascade === 0 ? nearDist : light._shadowCascadeDistances[cascade - 1];\n\t\t\t\t\t\tconst frustumFarDist = light._shadowCascadeDistances[cascade];\n\t\t\t\t\t\tconst frustumPoints = camera.getFrustumCorners(frustumNearDist, frustumFarDist);\n\t\t\t\t\t\tcenter.set(0, 0, 0);\n\t\t\t\t\t\tconst cameraWorldMat = camera.node.getWorldTransform();\n\t\t\t\t\t\tfor(let i = 0; i < 8; i++){\n\t\t\t\t\t\t\t\tcameraWorldMat.transformPoint(frustumPoints[i], frustumPoints[i]);\n\t\t\t\t\t\t\t\tcenter.add(frustumPoints[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcenter.mulScalar(1 / 8);\n\t\t\t\t\t\tlet radius = 0;\n\t\t\t\t\t\tfor(let i = 0; i < 8; i++){\n\t\t\t\t\t\t\t\tconst dist = frustumPoints[i].sub(center).length();\n\t\t\t\t\t\t\t\tif (dist > radius) {\n\t\t\t\t\t\t\t\t\t\tradius = dist;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst right = shadowCamNode.right;\n\t\t\t\t\t\tconst up = shadowCamNode.up;\n\t\t\t\t\t\tconst lightDir = shadowCamNode.forward;\n\t\t\t\t\t\tconst sizeRatio = 0.25 * light._shadowResolution / radius;\n\t\t\t\t\t\tconst x = Math.ceil(center.dot(up) * sizeRatio) / sizeRatio;\n\t\t\t\t\t\tconst y = Math.ceil(center.dot(right) * sizeRatio) / sizeRatio;\n\t\t\t\t\t\tconst scaledUp = up.mulScalar(x);\n\t\t\t\t\t\tconst scaledRight = right.mulScalar(y);\n\t\t\t\t\t\tconst dot = center.dot(lightDir);\n\t\t\t\t\t\tconst scaledDir = lightDir.mulScalar(dot);\n\t\t\t\t\t\tcenter.add2(scaledUp, scaledRight).add(scaledDir);\n\t\t\t\t\t\tshadowCamNode.setPosition(center);\n\t\t\t\t\t\tshadowCamNode.translateLocal(0, 0, 1000000);\n\t\t\t\t\t\tshadowCam.nearClip = 0.01;\n\t\t\t\t\t\tshadowCam.farClip = 2000000;\n\t\t\t\t\t\tshadowCam.orthoHeight = radius;\n\t\t\t\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\t\t\t\tthis.shadowRenderer.cullShadowCasters(comp, light, lightRenderData.visibleCasters, shadowCam, casters);\n\t\t\t\t\t\tconst cascadeFlag = 1 << cascade;\n\t\t\t\t\t\tconst visibleCasters = lightRenderData.visibleCasters;\n\t\t\t\t\t\tconst origNumVisibleCasters = visibleCasters.length;\n\t\t\t\t\t\tlet numVisibleCasters = 0;\n\t\t\t\t\t\tfor(let i = 0; i < origNumVisibleCasters; i++){\n\t\t\t\t\t\t\t\tconst meshInstance = visibleCasters[i];\n\t\t\t\t\t\t\t\tif (meshInstance.shadowCascadeMask & cascadeFlag) {\n\t\t\t\t\t\t\t\t\t\tvisibleCasters[numVisibleCasters++] = meshInstance;\n\t\t\t\t\t\t\t\t\t\tif (numVisibleCasters === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleSceneAabb.copy(meshInstance.aabb);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tvisibleSceneAabb.add(meshInstance.aabb);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (origNumVisibleCasters !== numVisibleCasters) {\n\t\t\t\t\t\t\t\tvisibleCasters.length = numVisibleCasters;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tshadowCamView$1.copy(shadowCamNode.getWorldTransform()).invert();\n\t\t\t\t\t\tconst depthRange = getDepthRange(shadowCamView$1, visibleSceneAabb.getMin(), visibleSceneAabb.getMax());\n\t\t\t\t\t\tshadowCamNode.translateLocal(0, 0, depthRange.max + 0.1);\n\t\t\t\t\t\tshadowCam.farClip = depthRange.max - depthRange.min + 0.2;\n\t\t\t\t\t\tlightRenderData.projectionCompensation = radius;\n\t\t\t\t}\n\t\t}\n\t\tgenerateSplitDistances(light, nearDist, farDist) {\n\t\t\t\tlight._shadowCascadeDistances.fill(farDist);\n\t\t\t\tfor(let i = 1; i < light.numCascades; i++){\n\t\t\t\t\t\tconst fraction = i / light.numCascades;\n\t\t\t\t\t\tconst linearDist = nearDist + (farDist - nearDist) * fraction;\n\t\t\t\t\t\tconst logDist = nearDist * (farDist / nearDist) ** fraction;\n\t\t\t\t\t\tconst dist = math.lerp(linearDist, logDist, light.cascadeDistribution);\n\t\t\t\t\t\tlight._shadowCascadeDistances[i - 1] = dist;\n\t\t\t\t}\n\t\t}\n\t\tgetLightRenderPass(light, camera) {\n\t\t\t\tlet renderPass = null;\n\t\t\t\tif (this.shadowRenderer.needsShadowRendering(light)) {\n\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\tconst shadowUpdateOverrides = light.shadowUpdateOverrides;\n\t\t\t\t\t\tlet allCascadesRendering = true;\n\t\t\t\t\t\tlet shadowCamera;\n\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\tif (shadowUpdateOverrides?.[face] === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\tallCascadesRendering = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tshadowCamera = this.shadowRenderer.prepareFace(light, camera, face);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderPass = new RenderPassShadowDirectional(this.device, this.shadowRenderer, light, camera, allCascadesRendering);\n\t\t\t\t\t\tthis.shadowRenderer.setupRenderPass(renderPass, shadowCamera, allCascadesRendering);\n\t\t\t\t}\n\t\t\t\treturn renderPass;\n\t\t}\n}\n\nconst tempSet$1 = new Set();\nconst shadowCamView = new Mat4();\nconst shadowCamViewProj = new Mat4();\nconst pixelOffset = new Float32Array(2);\nconst blurScissorRect = new Vec4(1, 1, 0, 0);\nconst viewportMatrix = new Mat4();\nfunction gauss(x, sigma) {\n\t\treturn Math.exp(-(x * x) / (2.0 * sigma * sigma));\n}\nfunction gaussWeights(kernelSize) {\n\t\tconst sigma = (kernelSize - 1) / (2 * 3);\n\t\tconst halfWidth = (kernelSize - 1) * 0.5;\n\t\tconst values = new Array(kernelSize);\n\t\tlet sum = 0.0;\n\t\tfor(let i = 0; i < kernelSize; ++i){\n\t\t\t\tvalues[i] = gauss(i - halfWidth, sigma);\n\t\t\t\tsum += values[i];\n\t\t}\n\t\tfor(let i = 0; i < kernelSize; ++i){\n\t\t\t\tvalues[i] /= sum;\n\t\t}\n\t\treturn values;\n}\nclass ShadowRenderer {\n\t\tconstructor(renderer, lightTextureAtlas){\n\t\t\t\tthis.shadowPassCache = [];\n\t\t\t\tthis.device = renderer.device;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.lightTextureAtlas = lightTextureAtlas;\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tthis.sourceId = scope.resolve('source');\n\t\t\t\tthis.pixelOffsetId = scope.resolve('pixelOffset');\n\t\t\t\tthis.weightId = scope.resolve('weight[0]');\n\t\t\t\tthis.blurVsmShader = [\n\t\t\t\t\t\t{},\n\t\t\t\t\t\t{}\n\t\t\t\t];\n\t\t\t\tthis.blurVsmWeights = {};\n\t\t\t\tthis.shadowMapLightRadiusId = scope.resolve('light_radius');\n\t\t\t\tthis.viewUniformFormat = null;\n\t\t\t\tthis.viewBindGroupFormat = null;\n\t\t\t\tthis.blendStateWrite = new BlendState();\n\t\t\t\tthis.blendStateNoWrite = new BlendState();\n\t\t\t\tthis.blendStateNoWrite.setColorWrite(false, false, false, false);\n\t\t}\n\t\tstatic createShadowCamera(shadowType, type, face) {\n\t\t\t\tconst shadowCam = LightCamera.create('ShadowCamera', type, face);\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tconst isVsm = shadowInfo?.vsm ?? false;\n\t\t\t\tconst isPcf = shadowInfo?.pcf ?? false;\n\t\t\t\tif (isVsm) {\n\t\t\t\t\t\tshadowCam.clearColor = new Color(0, 0, 0, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tshadowCam.clearColor = new Color(1, 1, 1, 1);\n\t\t\t\t}\n\t\t\t\tshadowCam.clearDepthBuffer = true;\n\t\t\t\tshadowCam.clearStencilBuffer = false;\n\t\t\t\tshadowCam.clearColorBuffer = !isPcf;\n\t\t\t\treturn shadowCam;\n\t\t}\n\t\t_cullShadowCastersInternal(meshInstances, visible, camera) {\n\t\t\t\tconst numInstances = meshInstances.length;\n\t\t\t\tfor(let i = 0; i < numInstances; i++){\n\t\t\t\t\t\tconst meshInstance = meshInstances[i];\n\t\t\t\t\t\tif (meshInstance.castShadow) {\n\t\t\t\t\t\t\t\tif (!meshInstance.cull || meshInstance._isVisible(camera)) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\tvisible.push(meshInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcullShadowCasters(comp, light, visible, camera, casters) {\n\t\t\t\tthis.renderer.scene?.fire(EVENT_PRECULL, camera);\n\t\t\t\tvisible.length = 0;\n\t\t\t\tif (casters) {\n\t\t\t\t\t\tthis._cullShadowCastersInternal(casters, visible, camera);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst layers = comp.layerList;\n\t\t\t\t\t\tconst len = layers.length;\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst layer = layers[i];\n\t\t\t\t\t\t\t\tif (layer._lightsSet.has(light)) {\n\t\t\t\t\t\t\t\t\t\tif (!tempSet$1.has(layer)) {\n\t\t\t\t\t\t\t\t\t\t\t\ttempSet$1.add(layer);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._cullShadowCastersInternal(layer.shadowCasters, visible, camera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempSet$1.clear();\n\t\t\t\t}\n\t\t\t\tvisible.sort(this.sortCompareShader);\n\t\t\t\tthis.renderer.scene?.fire(EVENT_POSTCULL, camera);\n\t\t}\n\t\tsortCompareShader(drawCallA, drawCallB) {\n\t\t\t\tconst keyA = drawCallA._sortKeyShadow;\n\t\t\t\tconst keyB = drawCallB._sortKeyShadow;\n\t\t\t\tif (keyA === keyB) {\n\t\t\t\t\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t\t\t\t}\n\t\t\t\treturn keyB - keyA;\n\t\t}\n\t\tsetupRenderState(device, light) {\n\t\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\t\tconst useShadowSampler = isClustered ? light._isPcf : light._isPcf && light._type !== LIGHTTYPE_OMNI;\n\t\t\t\tdevice.setBlendState(useShadowSampler ? this.blendStateNoWrite : this.blendStateWrite);\n\t\t\t\tdevice.setDepthState(light.shadowDepthState);\n\t\t\t\tdevice.setStencilState(null, null);\n\t\t}\n\t\tdispatchUniforms(light, shadowCam, lightRenderData, face) {\n\t\t\t\tconst shadowCamNode = shadowCam._node;\n\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis.renderer.dispatchViewPos(shadowCamNode.getPosition());\n\t\t\t\t\t\tthis.shadowMapLightRadiusId.setValue(light.attenuationEnd);\n\t\t\t\t}\n\t\t\t\tshadowCamView.setTRS(shadowCamNode.getPosition(), shadowCamNode.getRotation(), Vec3.ONE).invert();\n\t\t\t\tshadowCamViewProj.mul2(shadowCam.projectionMatrix, shadowCamView);\n\t\t\t\tconst rectViewport = lightRenderData.shadowViewport;\n\t\t\t\tshadowCam.rect = rectViewport;\n\t\t\t\tshadowCam.scissorRect = lightRenderData.shadowScissor;\n\t\t\t\tviewportMatrix.setViewport(rectViewport.x, rectViewport.y, rectViewport.z, rectViewport.w);\n\t\t\t\tlightRenderData.shadowMatrix.mul2(viewportMatrix, shadowCamViewProj);\n\t\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tlight._shadowMatrixPalette.set(lightRenderData.shadowMatrix.data, face * 16);\n\t\t\t\t}\n\t\t}\n\t\tgetShadowPass(light) {\n\t\t\t\tconst lightType = light._type;\n\t\t\t\tconst shadowType = light._shadowType;\n\t\t\t\tlet shadowPassInfo = this.shadowPassCache[lightType]?.[shadowType];\n\t\t\t\tif (!shadowPassInfo) {\n\t\t\t\t\t\tconst shadowPassName = `ShadowPass_${lightType}_${shadowType}`;\n\t\t\t\t\t\tshadowPassInfo = ShaderPass.get(this.device).allocate(shadowPassName, {\n\t\t\t\t\t\t\t\tisShadow: true,\n\t\t\t\t\t\t\t\tlightType: lightType,\n\t\t\t\t\t\t\t\tshadowType: shadowType\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!this.shadowPassCache[lightType]) {\n\t\t\t\t\t\t\t\tthis.shadowPassCache[lightType] = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.shadowPassCache[lightType][shadowType] = shadowPassInfo;\n\t\t\t\t}\n\t\t\t\treturn shadowPassInfo.index;\n\t\t}\n\t\tsubmitCasters(visibleCasters, light, camera) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst renderer = this.renderer;\n\t\t\t\tconst scene = renderer.scene;\n\t\t\t\tconst passFlags = 1 << SHADER_SHADOW;\n\t\t\t\tconst shadowPass = this.getShadowPass(light);\n\t\t\t\tconst cameraShaderParams = camera.shaderParams;\n\t\t\t\tconst flipFactor = camera.renderTarget.flipY ? -1 : 1;\n\t\t\t\tconst count = visibleCasters.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst meshInstance = visibleCasters[i];\n\t\t\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\t\t\tconst instancingData = meshInstance.instancingData;\n\t\t\t\t\t\tif (instancingData && instancingData.count <= 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstance.ensureMaterial(device);\n\t\t\t\t\t\tconst material = meshInstance.material;\n\t\t\t\t\t\trenderer.setBaseConstants(device, material);\n\t\t\t\t\t\trenderer.setSkinning(device, meshInstance);\n\t\t\t\t\t\tif (material.dirty) {\n\t\t\t\t\t\t\t\tmaterial.updateUniforms(device, scene);\n\t\t\t\t\t\t\t\tmaterial.dirty = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderer.setupCullMode(true, flipFactor, meshInstance);\n\t\t\t\t\t\tmaterial.setParameters(device);\n\t\t\t\t\t\tmeshInstance.setParameters(device, passFlags);\n\t\t\t\t\t\tconst shaderInstance = meshInstance.getShaderInstance(shadowPass, 0, scene, cameraShaderParams, this.viewUniformFormat, this.viewBindGroupFormat);\n\t\t\t\t\t\tconst shadowShader = shaderInstance.shader;\n\t\t\t\t\t\tif (shadowShader.failed) continue;\n\t\t\t\t\t\tmeshInstance._sortKeyShadow = shadowShader.id;\n\t\t\t\t\t\tdevice.setShader(shadowShader);\n\t\t\t\t\t\trenderer.setVertexBuffers(device, mesh);\n\t\t\t\t\t\trenderer.setMorphing(device, meshInstance.morphInstance);\n\t\t\t\t\t\tif (instancingData) {\n\t\t\t\t\t\t\t\tdevice.setVertexBuffer(instancingData.vertexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\trenderer.setMeshInstanceMatrices(meshInstance);\n\t\t\t\t\t\trenderer.setupMeshUniformBuffers(shaderInstance);\n\t\t\t\t\t\tconst style = meshInstance.renderStyle;\n\t\t\t\t\t\tconst indirectData = meshInstance.getDrawCommands(camera);\n\t\t\t\t\t\tdevice.draw(mesh.primitive[style], mesh.indexBuffer[style], instancingData?.count, indirectData);\n\t\t\t\t\t\trenderer._shadowDrawCalls++;\n\t\t\t\t\t\tif (instancingData) {\n\t\t\t\t\t\t\t\trenderer._instancedDrawCalls++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tneedsShadowRendering(light) {\n\t\t\t\tconst needs = light.enabled && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE && light.visibleThisFrame;\n\t\t\t\tif (light.shadowUpdateMode === SHADOWUPDATE_THISFRAME) {\n\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_NONE;\n\t\t\t\t}\n\t\t\t\tif (needs) {\n\t\t\t\t\t\tthis.renderer._shadowMapUpdates += light.numShadowFaces;\n\t\t\t\t}\n\t\t\t\treturn needs;\n\t\t}\n\t\tgetLightRenderData(light, camera, face) {\n\t\t\t\treturn light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, face);\n\t\t}\n\t\tsetupRenderPass(renderPass, shadowCamera, clearRenderTarget) {\n\t\t\t\tconst rt = shadowCamera.renderTarget;\n\t\t\t\trenderPass.init(rt);\n\t\t\t\trenderPass.depthStencilOps.clearDepthValue = 1;\n\t\t\t\trenderPass.depthStencilOps.clearDepth = clearRenderTarget;\n\t\t\t\tif (rt.depthBuffer) {\n\t\t\t\t\t\trenderPass.depthStencilOps.storeDepth = true;\n\t\t\t\t} else {\n\t\t\t\t\t\trenderPass.colorOps.clearValue.copy(shadowCamera.clearColor);\n\t\t\t\t\t\trenderPass.colorOps.clear = clearRenderTarget;\n\t\t\t\t\t\trenderPass.depthStencilOps.storeDepth = false;\n\t\t\t\t}\n\t\t\t\trenderPass.requiresCubemaps = false;\n\t\t}\n\t\tprepareFace(light, camera, face) {\n\t\t\t\tconst type = light._type;\n\t\t\t\tconst lightRenderData = this.getLightRenderData(light, camera, face);\n\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\tconst renderTargetIndex = type === LIGHTTYPE_DIRECTIONAL ? 0 : face;\n\t\t\t\tshadowCam.renderTarget = light._shadowMap.renderTargets[renderTargetIndex];\n\t\t\t\treturn shadowCam;\n\t\t}\n\t\trenderFace(light, camera, face, clear, insideRenderPass = true) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst lightRenderData = this.getLightRenderData(light, camera, face);\n\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\tthis.dispatchUniforms(light, shadowCam, lightRenderData, face);\n\t\t\t\tconst rt = shadowCam.renderTarget;\n\t\t\t\tconst renderer = this.renderer;\n\t\t\t\trenderer.setCameraUniforms(shadowCam, rt);\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\trenderer.setupViewUniformBuffers(lightRenderData.viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, null);\n\t\t\t\t}\n\t\t\t\tif (insideRenderPass) {\n\t\t\t\t\t\trenderer.setupViewport(shadowCam, rt);\n\t\t\t\t\t\tif (clear) {\n\t\t\t\t\t\t\t\trenderer.clear(shadowCam);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\trenderer.clearView(shadowCam, rt, true, false);\n\t\t\t\t}\n\t\t\t\tthis.setupRenderState(device, light);\n\t\t\t\tthis.submitCasters(lightRenderData.visibleCasters, light, shadowCam);\n\t\t}\n\t\trender(light, camera, insideRenderPass = true) {\n\t\t\t\tif (this.needsShadowRendering(light)) {\n\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\tthis.prepareFace(light, camera, face);\n\t\t\t\t\t\t\t\tthis.renderFace(light, camera, face, true, insideRenderPass);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderVsm(light, camera);\n\t\t\t\t}\n\t\t}\n\t\trenderVsm(light, camera) {\n\t\t\t\tif (light._isVsm && light._vsmBlurSize > 1) {\n\t\t\t\t\t\tconst isClustered = this.renderer.scene.clusteredLightingEnabled;\n\t\t\t\t\t\tif (!isClustered || light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tthis.applyVsmBlur(light, camera);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetVsmBlurShader(blurMode, filterSize) {\n\t\t\t\tconst cache = this.blurVsmShader;\n\t\t\t\tlet blurShader = cache[blurMode][filterSize];\n\t\t\t\tif (!blurShader) {\n\t\t\t\t\t\tthis.blurVsmWeights[filterSize] = gaussWeights(filterSize);\n\t\t\t\t\t\tconst defines = new Map();\n\t\t\t\t\t\tdefines.set('{SAMPLES}', filterSize);\n\t\t\t\t\t\tif (blurMode === 1) defines.set('GAUSS', '');\n\t\t\t\t\t\tblurShader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: `blurVsm${blurMode}${filterSize}`,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\t\t\tfragmentChunk: 'blurVSMPS',\n\t\t\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcache[blurMode][filterSize] = blurShader;\n\t\t\t\t}\n\t\t\t\treturn blurShader;\n\t\t}\n\t\tapplyVsmBlur(light, camera) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tconst lightRenderData = light.getRenderData(light._type === LIGHTTYPE_DIRECTIONAL ? camera : null, 0);\n\t\t\t\tconst shadowCam = lightRenderData.shadowCamera;\n\t\t\t\tconst origShadowMap = shadowCam.renderTarget;\n\t\t\t\tconst tempShadowMap = this.renderer.shadowMapCache.get(device, light);\n\t\t\t\tconst tempRt = tempShadowMap.renderTargets[0];\n\t\t\t\tconst blurMode = light.vsmBlurMode;\n\t\t\t\tconst filterSize = light._vsmBlurSize;\n\t\t\t\tconst blurShader = this.getVsmBlurShader(blurMode, filterSize);\n\t\t\t\tblurScissorRect.z = light._shadowResolution - 2;\n\t\t\t\tblurScissorRect.w = blurScissorRect.z;\n\t\t\t\tthis.sourceId.setValue(origShadowMap.colorBuffer);\n\t\t\t\tpixelOffset[0] = 1 / light._shadowResolution;\n\t\t\t\tpixelOffset[1] = 0;\n\t\t\t\tthis.pixelOffsetId.setValue(pixelOffset);\n\t\t\t\tif (blurMode === BLUR_GAUSSIAN) this.weightId.setValue(this.blurVsmWeights[filterSize]);\n\t\t\t\tdrawQuadWithShader(device, tempRt, blurShader, null, blurScissorRect);\n\t\t\t\tthis.sourceId.setValue(tempRt.colorBuffer);\n\t\t\t\tpixelOffset[1] = pixelOffset[0];\n\t\t\t\tpixelOffset[0] = 0;\n\t\t\t\tthis.pixelOffsetId.setValue(pixelOffset);\n\t\t\t\tdrawQuadWithShader(device, origShadowMap, blurShader, null, blurScissorRect);\n\t\t\t\tthis.renderer.shadowMapCache.add(light, tempShadowMap);\n\t\t}\n\t\tinitViewBindGroupFormat() {\n\t\t\t\tif (this.device.supportsUniformBuffers && !this.viewUniformFormat) {\n\t\t\t\t\t\tthis.viewUniformFormat = new UniformBufferFormat(this.device, [\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_viewProjection', UNIFORMTYPE_MAT4)\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.viewBindGroupFormat = new BindGroupFormat(this.device, [\n\t\t\t\t\t\t\t\tnew BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tthis.initViewBindGroupFormat();\n\t\t}\n}\n\nconst tempClusterArray = [];\nclass WorldClustersAllocator {\n\t\tconstructor(graphicsDevice){\n\t\t\t\tthis._empty = null;\n\t\t\t\tthis._allocated = [];\n\t\t\t\tthis._clusters = new Map();\n\t\t\t\tthis.device = graphicsDevice;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._empty) {\n\t\t\t\t\t\tthis._empty.destroy();\n\t\t\t\t\t\tthis._empty = null;\n\t\t\t\t}\n\t\t\t\tthis._allocated.forEach((cluster)=>{\n\t\t\t\t\t\tcluster.destroy();\n\t\t\t\t});\n\t\t\t\tthis._allocated.length = 0;\n\t\t}\n\t\tget count() {\n\t\t\t\treturn this._allocated.length;\n\t\t}\n\t\tget empty() {\n\t\t\t\tif (!this._empty) {\n\t\t\t\t\t\tconst empty = new WorldClusters(this.device);\n\t\t\t\t\t\tempty.name = 'ClusterEmpty';\n\t\t\t\t\t\tempty.update([]);\n\t\t\t\t\t\tthis._empty = empty;\n\t\t\t\t}\n\t\t\t\treturn this._empty;\n\t\t}\n\t\tassign(renderPasses) {\n\t\t\t\ttempClusterArray.push(...this._allocated);\n\t\t\t\tthis._allocated.length = 0;\n\t\t\t\tthis._clusters.clear();\n\t\t\t\tconst passCount = renderPasses.length;\n\t\t\t\tfor(let p = 0; p < passCount; p++){\n\t\t\t\t\t\tconst renderPass = renderPasses[p];\n\t\t\t\t\t\tconst renderActions = renderPass.renderActions;\n\t\t\t\t\t\tif (renderActions) {\n\t\t\t\t\t\t\t\tconst count = renderActions.length;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\t\t\t\t\t\tra.lightClusters = null;\n\t\t\t\t\t\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\t\t\t\t\t\tif (layer.hasClusteredLights && layer.meshInstances.length) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst hash = layer.getLightIdHash();\n\t\t\t\t\t\t\t\t\t\t\t\tconst existingRenderAction = this._clusters.get(hash);\n\t\t\t\t\t\t\t\t\t\t\t\tlet clusters = existingRenderAction?.lightClusters;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!clusters) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclusters = tempClusterArray.pop() ?? new WorldClusters(this.device);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._allocated.push(clusters);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._clusters.set(hash, ra);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tra.lightClusters = clusters;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!ra.lightClusters) {\n\t\t\t\t\t\t\t\t\t\t\t\tra.lightClusters = this.empty;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttempClusterArray.forEach((item)=>item.destroy());\n\t\t\t\ttempClusterArray.length = 0;\n\t\t}\n\t\tupdate(renderPasses, lighting) {\n\t\t\t\tthis.assign(renderPasses);\n\t\t\t\tthis._clusters.forEach((renderAction)=>{\n\t\t\t\t\t\tconst layer = renderAction.layer;\n\t\t\t\t\t\tconst cluster = renderAction.lightClusters;\n\t\t\t\t\t\tcluster.update(layer.clusteredLightsSet, lighting);\n\t\t\t\t});\n\t\t}\n}\n\nconst _viewport$2 = new Vec4();\nconst _invViewProjMatrices = [];\nclass RenderPassCookieRenderer extends RenderPass {\n\t\tconstructor(device, cubeSlotsOffsets){\n\t\t\t\tsuper(device), this._quadRenderer2D = null, this._quadRendererCube = null, this._filteredLights = [], this._forceCopy = false, this._evtDeviceRestored = null;\n\t\t\t\tthis._cubeSlotsOffsets = cubeSlotsOffsets;\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t\t\tthis.blitTextureId = device.scope.resolve('blitTexture');\n\t\t\t\tthis.invViewProjId = device.scope.resolve('invViewProj');\n\t\t\t\tthis._evtDeviceRestored = device.on('devicerestored', this.onDeviceRestored, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._quadRenderer2D?.destroy();\n\t\t\t\tthis._quadRenderer2D = null;\n\t\t\t\tthis._quadRendererCube?.destroy();\n\t\t\t\tthis._quadRendererCube = null;\n\t\t\t\tthis._evtDeviceRestored?.off();\n\t\t\t\tthis._evtDeviceRestored = null;\n\t\t}\n\t\tstatic create(renderTarget, cubeSlotsOffsets) {\n\t\t\t\tconst renderPass = new RenderPassCookieRenderer(renderTarget.device, cubeSlotsOffsets);\n\t\t\t\trenderPass.init(renderTarget);\n\t\t\t\trenderPass.colorOps.clear = false;\n\t\t\t\trenderPass.depthStencilOps.clearDepth = false;\n\t\t\t\treturn renderPass;\n\t\t}\n\t\tonDeviceRestored() {\n\t\t\t\tthis._forceCopy = true;\n\t\t}\n\t\tupdate(lights) {\n\t\t\t\tconst filteredLights = this._filteredLights;\n\t\t\t\tthis.filter(lights, filteredLights);\n\t\t\t\tthis.executeEnabled = filteredLights.length > 0;\n\t\t}\n\t\tfilter(lights, filteredLights) {\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (light._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!light.atlasViewportAllocated) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!light.atlasSlotUpdated && !this._forceCopy) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light.enabled && light.cookie && light.visibleThisFrame) {\n\t\t\t\t\t\t\t\tfilteredLights.push(light);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._forceCopy = false;\n\t\t}\n\t\tinitInvViewProjMatrices() {\n\t\t\t\tif (!_invViewProjMatrices.length) {\n\t\t\t\t\t\tfor(let face = 0; face < 6; face++){\n\t\t\t\t\t\t\t\tconst camera = LightCamera.create(null, LIGHTTYPE_OMNI, face);\n\t\t\t\t\t\t\t\tconst projMat = camera.projectionMatrix;\n\t\t\t\t\t\t\t\tconst viewMat = camera.node.getLocalTransform().clone().invert();\n\t\t\t\t\t\t\t\t_invViewProjMatrices[face] = new Mat4().mul2(projMat, viewMat).invert();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget quadRenderer2D() {\n\t\t\t\tif (!this._quadRenderer2D) {\n\t\t\t\t\t\tconst shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: 'cookieRenderer2d',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'cookieBlitVS',\n\t\t\t\t\t\t\t\tfragmentChunk: 'cookieBlit2DPS'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._quadRenderer2D = new QuadRender(shader);\n\t\t\t\t}\n\t\t\t\treturn this._quadRenderer2D;\n\t\t}\n\t\tget quadRendererCube() {\n\t\t\t\tif (!this._quadRendererCube) {\n\t\t\t\t\t\tconst shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: 'cookieRendererCube',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'cookieBlitVS',\n\t\t\t\t\t\t\t\tfragmentChunk: 'cookieBlitCubePS'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._quadRendererCube = new QuadRender(shader);\n\t\t\t\t}\n\t\t\t\treturn this._quadRendererCube;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState();\n\t\t\t\tconst renderTargetWidth = this.renderTarget.colorBuffer.width;\n\t\t\t\tconst cubeSlotsOffsets = this._cubeSlotsOffsets;\n\t\t\t\tconst filteredLights = this._filteredLights;\n\t\t\t\tfor(let i = 0; i < filteredLights.length; i++){\n\t\t\t\t\t\tconst light = filteredLights[i];\n\t\t\t\t\t\tconst faceCount = light.numShadowFaces;\n\t\t\t\t\t\tconst quad = faceCount > 1 ? this.quadRendererCube : this.quadRenderer2D;\n\t\t\t\t\t\tif (faceCount > 1) {\n\t\t\t\t\t\t\t\tthis.initInvViewProjMatrices();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.blitTextureId.setValue(light.cookie);\n\t\t\t\t\t\tfor(let face = 0; face < faceCount; face++){\n\t\t\t\t\t\t\t\t_viewport$2.copy(light.atlasViewport);\n\t\t\t\t\t\t\t\tif (faceCount > 1) {\n\t\t\t\t\t\t\t\t\t\tconst smallSize = _viewport$2.z / 3;\n\t\t\t\t\t\t\t\t\t\tconst offset = cubeSlotsOffsets[face];\n\t\t\t\t\t\t\t\t\t\t_viewport$2.x += smallSize * offset.x;\n\t\t\t\t\t\t\t\t\t\t_viewport$2.y += smallSize * offset.y;\n\t\t\t\t\t\t\t\t\t\t_viewport$2.z = smallSize;\n\t\t\t\t\t\t\t\t\t\t_viewport$2.w = smallSize;\n\t\t\t\t\t\t\t\t\t\tthis.invViewProjId.setValue(_invViewProjMatrices[face].data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_viewport$2.mulScalar(renderTargetWidth);\n\t\t\t\t\t\t\t\tquad.render(_viewport$2);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfilteredLights.length = 0;\n\t\t}\n}\n\nclass RenderPassShadowLocalClustered extends RenderPass {\n\t\tconstructor(device, shadowRenderer, shadowRendererLocal){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t\t\tthis.shadowRenderer = shadowRenderer;\n\t\t\t\tthis.shadowRendererLocal = shadowRendererLocal;\n\t\t}\n\t\tupdate(localLights) {\n\t\t\t\tconst shadowLights = this.shadowRendererLocal.shadowLights;\n\t\t\t\tconst shadowCamera = this.shadowRendererLocal.prepareLights(shadowLights, localLights);\n\t\t\t\tconst count = shadowLights.length;\n\t\t\t\tthis.enabled = count > 0;\n\t\t\t\tif (count) {\n\t\t\t\t\t\tthis.shadowRenderer.setupRenderPass(this, shadowCamera, false);\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst shadowLights = this.shadowRendererLocal.shadowLights;\n\t\t\t\tconst count = shadowLights.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst light = shadowLights[i];\n\t\t\t\t\t\tfor(let face = 0; face < light.numShadowFaces; face++){\n\t\t\t\t\t\t\t\tthis.shadowRenderer.renderFace(light, null, face, true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshadowLights.length = 0;\n\t\t}\n}\n\nclass RenderPassUpdateClustered extends RenderPass {\n\t\tconstructor(device, renderer, shadowRenderer, shadowRendererLocal, lightTextureAtlas){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.frameGraph = null;\n\t\t\t\tthis.cookiesRenderPass = RenderPassCookieRenderer.create(lightTextureAtlas.cookieRenderTarget, lightTextureAtlas.cubeSlotsOffsets);\n\t\t\t\tthis.beforePasses.push(this.cookiesRenderPass);\n\t\t\t\tthis.shadowRenderPass = new RenderPassShadowLocalClustered(device, shadowRenderer, shadowRendererLocal);\n\t\t\t\tthis.beforePasses.push(this.shadowRenderPass);\n\t\t}\n\t\tupdate(frameGraph, shadowsEnabled, cookiesEnabled, lights, localLights) {\n\t\t\t\tthis.frameGraph = frameGraph;\n\t\t\t\tthis.cookiesRenderPass.enabled = cookiesEnabled;\n\t\t\t\tif (cookiesEnabled) {\n\t\t\t\t\t\tthis.cookiesRenderPass.update(lights);\n\t\t\t\t}\n\t\t\t\tthis.shadowRenderPass.enabled = shadowsEnabled;\n\t\t\t\tif (shadowsEnabled) {\n\t\t\t\t\t\tthis.shadowRenderPass.update(localLights);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.cookiesRenderPass.destroy();\n\t\t\t\tthis.cookiesRenderPass = null;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { renderer } = this;\n\t\t\t\tconst { scene } = renderer;\n\t\t\t\trenderer.worldClustersAllocator.update(this.frameGraph.renderPasses, scene.lighting);\n\t\t}\n}\n\nlet _skinUpdateIndex = 0;\nconst viewProjMat = new Mat4();\nconst viewInvMat = new Mat4();\nconst viewMat = new Mat4();\nconst viewMat3 = new Mat3();\nconst tempSphere$1 = new BoundingSphere();\nconst _flipYMat = new Mat4().setScale(1, -1, 1);\nconst _tempLightSet = new Set();\nconst _tempLayerSet = new Set();\nconst _dynamicBindGroup = new DynamicBindGroup();\nconst _fixProjRangeMat = new Mat4().set([\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0.5,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0.5,\n\t\t1\n]);\nconst _haltonSequence = [\n\t\tnew Vec2(0.5, 0.333333),\n\t\tnew Vec2(0.25, 0.666667),\n\t\tnew Vec2(0.75, 0.111111),\n\t\tnew Vec2(0.125, 0.444444),\n\t\tnew Vec2(0.625, 0.777778),\n\t\tnew Vec2(0.375, 0.222222),\n\t\tnew Vec2(0.875, 0.555556),\n\t\tnew Vec2(0.0625, 0.888889),\n\t\tnew Vec2(0.5625, 0.037037),\n\t\tnew Vec2(0.3125, 0.370370),\n\t\tnew Vec2(0.8125, 0.703704),\n\t\tnew Vec2(0.1875, 0.148148),\n\t\tnew Vec2(0.6875, 0.481481),\n\t\tnew Vec2(0.4375, 0.814815),\n\t\tnew Vec2(0.9375, 0.259259),\n\t\tnew Vec2(0.03125, 0.592593)\n];\nconst _tempProjMat0 = new Mat4();\nconst _tempProjMat1 = new Mat4();\nconst _tempProjMat2 = new Mat4();\nconst _tempProjMat3 = new Mat4();\nconst _tempProjMat4 = new Mat4();\nconst _tempProjMat5 = new Mat4();\nconst _tempSet = new Set();\nconst _tempMeshInstances = [];\nconst _tempMeshInstancesSkinned = [];\nclass Renderer {\n\t\tconstructor(graphicsDevice, scene){\n\t\t\t\tthis.clustersDebugRendered = false;\n\t\t\t\tthis.processingMeshInstances = new Set();\n\t\t\t\tthis.lights = [];\n\t\t\t\tthis.localLights = [];\n\t\t\t\tthis.cameraDirShadowLights = new Map();\n\t\t\t\tthis.dirLightShadows = new Map();\n\t\t\t\tthis.blueNoise = new BlueNoise(123);\n\t\t\t\tthis.gsplatDirector = null;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.worldClustersAllocator = new WorldClustersAllocator(graphicsDevice);\n\t\t\t\tthis.lightTextureAtlas = new LightTextureAtlas(graphicsDevice);\n\t\t\t\tthis.shadowMapCache = new ShadowMapCache();\n\t\t\t\tthis.shadowRenderer = new ShadowRenderer(this, this.lightTextureAtlas);\n\t\t\t\tthis._shadowRendererLocal = new ShadowRendererLocal(this, this.shadowRenderer);\n\t\t\t\tthis._shadowRendererDirectional = new ShadowRendererDirectional(this, this.shadowRenderer);\n\t\t\t\tif (this.scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tthis._renderPassUpdateClustered = new RenderPassUpdateClustered(this.device, this, this.shadowRenderer, this._shadowRendererLocal, this.lightTextureAtlas);\n\t\t\t\t}\n\t\t\t\tthis.viewUniformFormat = null;\n\t\t\t\tthis.viewBindGroupFormat = null;\n\t\t\t\tthis._skinTime = 0;\n\t\t\t\tthis._morphTime = 0;\n\t\t\t\tthis._cullTime = 0;\n\t\t\t\tthis._shadowMapTime = 0;\n\t\t\t\tthis._lightClustersTime = 0;\n\t\t\t\tthis._layerCompositionUpdateTime = 0;\n\t\t\t\tthis._shadowDrawCalls = 0;\n\t\t\t\tthis._skinDrawCalls = 0;\n\t\t\t\tthis._instancedDrawCalls = 0;\n\t\t\t\tthis._shadowMapUpdates = 0;\n\t\t\t\tthis._numDrawCallsCulled = 0;\n\t\t\t\tthis._camerasRendered = 0;\n\t\t\t\tthis._lightClusters = 0;\n\t\t\t\tthis._gsplatCount = 0;\n\t\t\t\tconst scope = graphicsDevice.scope;\n\t\t\t\tthis.boneTextureId = scope.resolve('texture_poseMap');\n\t\t\t\tthis.modelMatrixId = scope.resolve('matrix_model');\n\t\t\t\tthis.normalMatrixId = scope.resolve('matrix_normal');\n\t\t\t\tthis.viewInvId = scope.resolve('matrix_viewInverse');\n\t\t\t\tthis.viewPos = new Float32Array(3);\n\t\t\t\tthis.viewPosId = scope.resolve('view_position');\n\t\t\t\tthis.projId = scope.resolve('matrix_projection');\n\t\t\t\tthis.projSkyboxId = scope.resolve('matrix_projectionSkybox');\n\t\t\t\tthis.viewId = scope.resolve('matrix_view');\n\t\t\t\tthis.viewId3 = scope.resolve('matrix_view3');\n\t\t\t\tthis.viewProjId = scope.resolve('matrix_viewProjection');\n\t\t\t\tthis.flipYId = scope.resolve('projectionFlipY');\n\t\t\t\tthis.tbnBasis = scope.resolve('tbnBasis');\n\t\t\t\tthis.nearClipId = scope.resolve('camera_near');\n\t\t\t\tthis.farClipId = scope.resolve('camera_far');\n\t\t\t\tthis.cameraParams = new Float32Array(4);\n\t\t\t\tthis.cameraParamsId = scope.resolve('camera_params');\n\t\t\t\tthis.viewIndexId = scope.resolve('view_index');\n\t\t\t\tthis.viewIndexId.setValue(0);\n\t\t\t\tthis.blueNoiseJitterVersion = 0;\n\t\t\t\tthis.blueNoiseJitterVec = new Vec4();\n\t\t\t\tthis.blueNoiseJitterData = new Float32Array(4);\n\t\t\t\tthis.blueNoiseJitterId = scope.resolve('blueNoiseJitter');\n\t\t\t\tthis.blueNoiseTextureId = scope.resolve('blueNoiseTex32');\n\t\t\t\tthis.alphaTestId = scope.resolve('alpha_ref');\n\t\t\t\tthis.opacityMapId = scope.resolve('texture_opacityMap');\n\t\t\t\tthis.exposureId = scope.resolve('exposure');\n\t\t\t\tthis.twoSidedLightingNegScaleFactorId = scope.resolve('twoSidedLightingNegScaleFactor');\n\t\t\t\tthis.twoSidedLightingNegScaleFactorId.setValue(0);\n\t\t\t\tthis.morphPositionTex = scope.resolve('morphPositionTex');\n\t\t\t\tthis.morphNormalTex = scope.resolve('morphNormalTex');\n\t\t\t\tthis.morphTexParams = scope.resolve('morph_tex_params');\n\t\t\t\tthis.lightCube = new LightCube();\n\t\t\t\tthis.constantLightCube = scope.resolve('lightCube[0]');\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shadowRenderer = null;\n\t\t\t\tthis._shadowRendererLocal = null;\n\t\t\t\tthis._shadowRendererDirectional = null;\n\t\t\t\tthis.shadowMapCache.destroy();\n\t\t\t\tthis.shadowMapCache = null;\n\t\t\t\tthis._renderPassUpdateClustered?.destroy();\n\t\t\t\tthis._renderPassUpdateClustered = null;\n\t\t\t\tthis.lightTextureAtlas.destroy();\n\t\t\t\tthis.lightTextureAtlas = null;\n\t\t\t\tthis.gsplatDirector?.destroy();\n\t\t\t\tthis.gsplatDirector = null;\n\t\t}\n\t\tsetupViewport(camera, renderTarget) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst pixelWidth = renderTarget ? renderTarget.width : device.width;\n\t\t\t\tconst pixelHeight = renderTarget ? renderTarget.height : device.height;\n\t\t\t\tconst rect = camera.rect;\n\t\t\t\tlet x = Math.floor(rect.x * pixelWidth);\n\t\t\t\tlet y = Math.floor(rect.y * pixelHeight);\n\t\t\t\tlet w = Math.floor(rect.z * pixelWidth);\n\t\t\t\tlet h = Math.floor(rect.w * pixelHeight);\n\t\t\t\tdevice.setViewport(x, y, w, h);\n\t\t\t\tif (camera._scissorRectClear) {\n\t\t\t\t\t\tconst scissorRect = camera.scissorRect;\n\t\t\t\t\t\tx = Math.floor(scissorRect.x * pixelWidth);\n\t\t\t\t\t\ty = Math.floor(scissorRect.y * pixelHeight);\n\t\t\t\t\t\tw = Math.floor(scissorRect.z * pixelWidth);\n\t\t\t\t\t\th = Math.floor(scissorRect.w * pixelHeight);\n\t\t\t\t}\n\t\t\t\tdevice.setScissor(x, y, w, h);\n\t\t}\n\t\tsetCameraUniforms(camera, target) {\n\t\t\t\tconst flipY = target?.flipY;\n\t\t\t\tlet viewList = null;\n\t\t\t\tif (camera.xr && camera.xr.session) {\n\t\t\t\t\t\tconst transform = camera._node?.parent?.getWorldTransform() || null;\n\t\t\t\t\t\tconst views = camera.xr.views;\n\t\t\t\t\t\tviewList = views.list;\n\t\t\t\t\t\tfor(let v = 0; v < viewList.length; v++){\n\t\t\t\t\t\t\t\tconst view = viewList[v];\n\t\t\t\t\t\t\t\tview.updateTransforms(transform);\n\t\t\t\t\t\t\t\tcamera.frustum.setFromMat4(view.projViewOffMat);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tlet projMat = camera.projectionMatrix;\n\t\t\t\t\t\tif (camera.calculateProjection) {\n\t\t\t\t\t\t\t\tcamera.calculateProjection(projMat, VIEW_CENTER);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet projMatSkybox = camera.getProjectionMatrixSkybox();\n\t\t\t\t\t\tif (flipY) {\n\t\t\t\t\t\t\t\tprojMat = _tempProjMat0.mul2(_flipYMat, projMat);\n\t\t\t\t\t\t\t\tprojMatSkybox = _tempProjMat1.mul2(_flipYMat, projMatSkybox);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\t\t\tprojMat = _tempProjMat2.mul2(_fixProjRangeMat, projMat);\n\t\t\t\t\t\t\t\tprojMatSkybox = _tempProjMat3.mul2(_fixProjRangeMat, projMatSkybox);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { jitter } = camera;\n\t\t\t\t\t\tlet jitterX = 0;\n\t\t\t\t\t\tlet jitterY = 0;\n\t\t\t\t\t\tif (jitter > 0) {\n\t\t\t\t\t\t\t\tconst targetWidth = target ? target.width : this.device.width;\n\t\t\t\t\t\t\t\tconst targetHeight = target ? target.height : this.device.height;\n\t\t\t\t\t\t\t\tconst offset = _haltonSequence[this.device.renderVersion % _haltonSequence.length];\n\t\t\t\t\t\t\t\tjitterX = jitter * (offset.x * 2 - 1) / targetWidth;\n\t\t\t\t\t\t\t\tjitterY = jitter * (offset.y * 2 - 1) / targetHeight;\n\t\t\t\t\t\t\t\tprojMat = _tempProjMat4.copy(projMat);\n\t\t\t\t\t\t\t\tprojMat.data[8] = jitterX;\n\t\t\t\t\t\t\t\tprojMat.data[9] = jitterY;\n\t\t\t\t\t\t\t\tprojMatSkybox = _tempProjMat5.copy(projMatSkybox);\n\t\t\t\t\t\t\t\tprojMatSkybox.data[8] = jitterX;\n\t\t\t\t\t\t\t\tprojMatSkybox.data[9] = jitterY;\n\t\t\t\t\t\t\t\tif (this.blueNoiseJitterVersion !== this.device.renderVersion) {\n\t\t\t\t\t\t\t\t\t\tthis.blueNoiseJitterVersion = this.device.renderVersion;\n\t\t\t\t\t\t\t\t\t\tthis.blueNoise.vec4(this.blueNoiseJitterVec);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst jitterVec = jitter > 0 ? this.blueNoiseJitterVec : Vec4.ZERO;\n\t\t\t\t\t\tthis.blueNoiseJitterData[0] = jitterVec.x;\n\t\t\t\t\t\tthis.blueNoiseJitterData[1] = jitterVec.y;\n\t\t\t\t\t\tthis.blueNoiseJitterData[2] = jitterVec.z;\n\t\t\t\t\t\tthis.blueNoiseJitterData[3] = jitterVec.w;\n\t\t\t\t\t\tthis.blueNoiseJitterId.setValue(this.blueNoiseJitterData);\n\t\t\t\t\t\tthis.projId.setValue(projMat.data);\n\t\t\t\t\t\tthis.projSkyboxId.setValue(projMatSkybox.data);\n\t\t\t\t\t\tif (camera.calculateTransform) {\n\t\t\t\t\t\t\t\tcamera.calculateTransform(viewInvMat, VIEW_CENTER);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst pos = camera._node.getPosition();\n\t\t\t\t\t\t\t\tconst rot = camera._node.getRotation();\n\t\t\t\t\t\t\t\tviewInvMat.setTRS(pos, rot, Vec3.ONE);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.viewInvId.setValue(viewInvMat.data);\n\t\t\t\t\t\tviewMat.copy(viewInvMat).invert();\n\t\t\t\t\t\tthis.viewId.setValue(viewMat.data);\n\t\t\t\t\t\tviewMat3.setFromMat4(viewMat);\n\t\t\t\t\t\tthis.viewId3.setValue(viewMat3.data);\n\t\t\t\t\t\tviewProjMat.mul2(projMat, viewMat);\n\t\t\t\t\t\tthis.viewProjId.setValue(viewProjMat.data);\n\t\t\t\t\t\tcamera._storeShaderMatrices(viewProjMat, jitterX, jitterY, this.device.renderVersion);\n\t\t\t\t\t\tthis.flipYId.setValue(flipY ? -1 : 1);\n\t\t\t\t\t\tthis.dispatchViewPos(camera._node.getPosition());\n\t\t\t\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t\t\t}\n\t\t\t\tthis.tbnBasis.setValue(flipY ? -1 : 1);\n\t\t\t\tconst n = camera._nearClip;\n\t\t\t\tconst f = camera._farClip;\n\t\t\t\tthis.nearClipId.setValue(n);\n\t\t\t\tthis.farClipId.setValue(f);\n\t\t\t\tthis.cameraParams[0] = 1 / f;\n\t\t\t\tthis.cameraParams[1] = f;\n\t\t\t\tthis.cameraParams[2] = n;\n\t\t\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\t\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\t\t\tthis.exposureId.setValue(this.scene.physicalUnits ? camera.getExposure() : this.scene.exposure);\n\t\t\t\treturn viewList;\n\t\t}\n\t\tclear(camera, clearColor, clearDepth, clearStencil) {\n\t\t\t\tconst flags = (clearColor ?? camera._clearColorBuffer ? CLEARFLAG_COLOR : 0) | (clearDepth ?? camera._clearDepthBuffer ? CLEARFLAG_DEPTH : 0) | (clearStencil ?? camera._clearStencilBuffer ? CLEARFLAG_STENCIL : 0);\n\t\t\t\tif (flags) {\n\t\t\t\t\t\tconst device = this.device;\n\t\t\t\t\t\tdevice.clear({\n\t\t\t\t\t\t\t\tcolor: [\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.r,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.g,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.b,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.a\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdepth: camera._clearDepth,\n\t\t\t\t\t\t\t\tstencil: camera._clearStencil,\n\t\t\t\t\t\t\t\tflags: flags\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tsetCamera(camera, target, clear, renderAction = null) {\n\t\t\t\tthis.setCameraUniforms(camera, target);\n\t\t\t\tthis.clearView(camera, target, clear, false);\n\t\t}\n\t\tclearView(camera, target, clear, forceWrite) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setRenderTarget(target);\n\t\t\t\tdevice.updateBegin();\n\t\t\t\tif (forceWrite) {\n\t\t\t\t\t\tdevice.setColorWrite(true, true, true, true);\n\t\t\t\t\t\tdevice.setDepthWrite(true);\n\t\t\t\t}\n\t\t\t\tthis.setupViewport(camera, target);\n\t\t\t\tif (clear) {\n\t\t\t\t\t\tconst options = camera._clearOptions;\n\t\t\t\t\t\tdevice.clear(options ? options : {\n\t\t\t\t\t\t\t\tcolor: [\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.r,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.g,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.b,\n\t\t\t\t\t\t\t\t\t\tcamera._clearColor.a\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdepth: camera._clearDepth,\n\t\t\t\t\t\t\t\tflags: (camera._clearColorBuffer ? CLEARFLAG_COLOR : 0) | (camera._clearDepthBuffer ? CLEARFLAG_DEPTH : 0) | (camera._clearStencilBuffer ? CLEARFLAG_STENCIL : 0),\n\t\t\t\t\t\t\t\tstencil: camera._clearStencil\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tsetupCullMode(cullFaces, flipFactor, drawCall) {\n\t\t\t\tconst material = drawCall.material;\n\t\t\t\tlet mode = CULLFACE_NONE;\n\t\t\t\tif (cullFaces) {\n\t\t\t\t\t\tlet flipFaces = 1;\n\t\t\t\t\t\tif (material.cull === CULLFACE_FRONT || material.cull === CULLFACE_BACK) {\n\t\t\t\t\t\t\t\tflipFaces = flipFactor * drawCall.flipFacesFactor * drawCall.node.worldScaleSign;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (flipFaces < 0) {\n\t\t\t\t\t\t\t\tmode = material.cull === CULLFACE_FRONT ? CULLFACE_BACK : CULLFACE_FRONT;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmode = material.cull;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.device.setCullMode(mode);\n\t\t\t\tif (mode === CULLFACE_NONE && material.cull === CULLFACE_NONE) {\n\t\t\t\t\t\tthis.twoSidedLightingNegScaleFactorId.setValue(drawCall.node.worldScaleSign);\n\t\t\t\t}\n\t\t}\n\t\tupdateCameraFrustum(camera) {\n\t\t\t\tif (camera.xr && camera.xr.views.list.length) {\n\t\t\t\t\t\tconst view = camera.xr.views.list[0];\n\t\t\t\t\t\tviewProjMat.mul2(view.projMat, view.viewOffMat);\n\t\t\t\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst projMat = camera.projectionMatrix;\n\t\t\t\tif (camera.calculateProjection) {\n\t\t\t\t\t\tcamera.calculateProjection(projMat, VIEW_CENTER);\n\t\t\t\t}\n\t\t\t\tif (camera.calculateTransform) {\n\t\t\t\t\t\tcamera.calculateTransform(viewInvMat, VIEW_CENTER);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst pos = camera._node.getPosition();\n\t\t\t\t\t\tconst rot = camera._node.getRotation();\n\t\t\t\t\t\tviewInvMat.setTRS(pos, rot, Vec3.ONE);\n\t\t\t\t\t\tthis.viewInvId.setValue(viewInvMat.data);\n\t\t\t\t}\n\t\t\t\tviewMat.copy(viewInvMat).invert();\n\t\t\t\tviewProjMat.mul2(projMat, viewMat);\n\t\t\t\tcamera.frustum.setFromMat4(viewProjMat);\n\t\t}\n\t\tsetBaseConstants(device, material) {\n\t\t\t\tdevice.setCullMode(material.cull);\n\t\t\t\tif (material.opacityMap) {\n\t\t\t\t\t\tthis.opacityMapId.setValue(material.opacityMap);\n\t\t\t\t}\n\t\t\t\tif (material.opacityMap || material.alphaTest > 0) {\n\t\t\t\t\t\tthis.alphaTestId.setValue(material.alphaTest);\n\t\t\t\t}\n\t\t}\n\t\tupdateCpuSkinMatrices(drawCalls) {\n\t\t\t\t_skinUpdateIndex++;\n\t\t\t\tconst drawCallsCount = drawCalls.length;\n\t\t\t\tif (drawCallsCount === 0) return;\n\t\t\t\tfor(let i = 0; i < drawCallsCount; i++){\n\t\t\t\t\t\tconst si = drawCalls[i].skinInstance;\n\t\t\t\t\t\tif (si) {\n\t\t\t\t\t\t\t\tsi.updateMatrices(drawCalls[i].node, _skinUpdateIndex);\n\t\t\t\t\t\t\t\tsi._dirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateGpuSkinMatrices(drawCalls) {\n\t\t\t\tfor (const drawCall of drawCalls){\n\t\t\t\t\t\tconst skin = drawCall.skinInstance;\n\t\t\t\t\t\tif (skin && skin._dirty) {\n\t\t\t\t\t\t\t\tskin.updateMatrixPalette(drawCall.node, _skinUpdateIndex);\n\t\t\t\t\t\t\t\tskin._dirty = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateMorphing(drawCalls) {\n\t\t\t\tfor (const drawCall of drawCalls){\n\t\t\t\t\t\tconst morphInst = drawCall.morphInstance;\n\t\t\t\t\t\tif (morphInst && morphInst._dirty) {\n\t\t\t\t\t\t\t\tmorphInst.update();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateGSplats(drawCalls) {\n\t\t\t\tfor (const drawCall of drawCalls){\n\t\t\t\t\t\tdrawCall.gsplatInstance?.update();\n\t\t\t\t}\n\t\t}\n\t\tgpuUpdate(drawCalls) {\n\t\t\t\tthis.updateGpuSkinMatrices(drawCalls);\n\t\t\t\tthis.updateMorphing(drawCalls);\n\t\t\t\tthis.updateGSplats(drawCalls);\n\t\t}\n\t\tsetVertexBuffers(device, mesh) {\n\t\t\t\tdevice.setVertexBuffer(mesh.vertexBuffer);\n\t\t}\n\t\tsetMorphing(device, morphInstance) {\n\t\t\t\tif (morphInstance) {\n\t\t\t\t\t\tmorphInstance.prepareRendering(device);\n\t\t\t\t\t\tdevice.setVertexBuffer(morphInstance.morph.vertexBufferIds);\n\t\t\t\t\t\tthis.morphPositionTex.setValue(morphInstance.texturePositions);\n\t\t\t\t\t\tthis.morphNormalTex.setValue(morphInstance.textureNormals);\n\t\t\t\t\t\tthis.morphTexParams.setValue(morphInstance._textureParams);\n\t\t\t\t}\n\t\t}\n\t\tsetSkinning(device, meshInstance) {\n\t\t\t\tconst skinInstance = meshInstance.skinInstance;\n\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\tthis._skinDrawCalls++;\n\t\t\t\t\t\tconst boneTexture = skinInstance.boneTexture;\n\t\t\t\t\t\tthis.boneTextureId.setValue(boneTexture);\n\t\t\t\t}\n\t\t}\n\t\tdispatchViewPos(position) {\n\t\t\t\tconst vp = this.viewPos;\n\t\t\t\tvp[0] = position.x;\n\t\t\t\tvp[1] = position.y;\n\t\t\t\tvp[2] = position.z;\n\t\t\t\tthis.viewPosId.setValue(vp);\n\t\t}\n\t\tinitViewBindGroupFormat(isClustered) {\n\t\t\t\tif (this.device.supportsUniformBuffers && !this.viewUniformFormat) {\n\t\t\t\t\t\tconst uniforms = [\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_view', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_viewInverse', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_projection', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_projectionSkybox', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_viewProjection', UNIFORMTYPE_MAT4),\n\t\t\t\t\t\t\t\tnew UniformFormat('matrix_view3', UNIFORMTYPE_MAT3),\n\t\t\t\t\t\t\t\tnew UniformFormat('cubeMapRotationMatrix', UNIFORMTYPE_MAT3),\n\t\t\t\t\t\t\t\tnew UniformFormat('view_position', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\tnew UniformFormat('skyboxIntensity', UNIFORMTYPE_FLOAT),\n\t\t\t\t\t\t\t\tnew UniformFormat('exposure', UNIFORMTYPE_FLOAT),\n\t\t\t\t\t\t\t\tnew UniformFormat('textureBias', UNIFORMTYPE_FLOAT),\n\t\t\t\t\t\t\t\tnew UniformFormat('view_index', UNIFORMTYPE_FLOAT)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (isClustered) {\n\t\t\t\t\t\t\t\tuniforms.push(...[\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterCellsCountByBoundsSize', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterTextureSize', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterBoundsMin', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterBoundsDelta', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterCellsDot', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterCellsMax', UNIFORMTYPE_VEC3),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('shadowAtlasParams', UNIFORMTYPE_VEC2),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterMaxCells', UNIFORMTYPE_INT),\n\t\t\t\t\t\t\t\t\t\tnew UniformFormat('clusterSkip', UNIFORMTYPE_FLOAT)\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.viewUniformFormat = new UniformBufferFormat(this.device, uniforms);\n\t\t\t\t\t\tconst formats = [\n\t\t\t\t\t\t\t\tnew BindUniformBufferFormat(UNIFORM_BUFFER_DEFAULT_SLOT_NAME, SHADERSTAGE_VERTEX | SHADERSTAGE_FRAGMENT)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis.viewBindGroupFormat = new BindGroupFormat(this.device, formats);\n\t\t\t\t}\n\t\t}\n\t\tsetupViewUniforms(view, index) {\n\t\t\t\tthis.projId.setValue(view.projMat.data);\n\t\t\t\tthis.projSkyboxId.setValue(view.projMat.data);\n\t\t\t\tthis.viewId.setValue(view.viewOffMat.data);\n\t\t\t\tthis.viewInvId.setValue(view.viewInvOffMat.data);\n\t\t\t\tthis.viewId3.setValue(view.viewMat3.data);\n\t\t\t\tthis.viewProjId.setValue(view.projViewOffMat.data);\n\t\t\t\tthis.viewPosId.setValue(view.positionData);\n\t\t\t\tthis.viewIndexId.setValue(index);\n\t\t}\n\t\tsetupViewUniformBuffers(viewBindGroups, viewUniformFormat, viewBindGroupFormat, viewList) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tconst viewCount = viewList?.length ?? 1;\n\t\t\t\twhile(viewBindGroups.length < viewCount){\n\t\t\t\t\t\tconst ub = new UniformBuffer(device, viewUniformFormat, false);\n\t\t\t\t\t\tconst bg = new BindGroup(device, viewBindGroupFormat, ub);\n\t\t\t\t\t\tviewBindGroups.push(bg);\n\t\t\t\t}\n\t\t\t\tif (viewList) {\n\t\t\t\t\t\tfor(let i = 0; i < viewCount; i++){\n\t\t\t\t\t\t\t\tconst view = viewList[i];\n\t\t\t\t\t\t\t\tthis.setupViewUniforms(view, i);\n\t\t\t\t\t\t\t\tconst viewBindGroup = viewBindGroups[i];\n\t\t\t\t\t\t\t\tviewBindGroup.defaultUniformBuffer.update();\n\t\t\t\t\t\t\t\tviewBindGroup.update();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst viewBindGroup = viewBindGroups[0];\n\t\t\t\t\t\tviewBindGroup.defaultUniformBuffer.update();\n\t\t\t\t\t\tviewBindGroup.update();\n\t\t\t\t}\n\t\t\t\tif (!viewList) {\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_VIEW, viewBindGroups[0]);\n\t\t\t\t}\n\t\t}\n\t\tsetupMeshUniformBuffers(shaderInstance) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tconst meshBindGroup = shaderInstance.getBindGroup(device);\n\t\t\t\t\t\tmeshBindGroup.update();\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH, meshBindGroup);\n\t\t\t\t\t\tconst meshUniformBuffer = shaderInstance.getUniformBuffer(device);\n\t\t\t\t\t\tmeshUniformBuffer.update(_dynamicBindGroup);\n\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_MESH_UB, _dynamicBindGroup.bindGroup, _dynamicBindGroup.offsets);\n\t\t\t\t}\n\t\t}\n\t\tsetMeshInstanceMatrices(meshInstance, setNormalMatrix = false) {\n\t\t\t\tconst modelMatrix = meshInstance.node.worldTransform;\n\t\t\t\tthis.modelMatrixId.setValue(modelMatrix.data);\n\t\t\t\tif (setNormalMatrix) {\n\t\t\t\t\t\tthis.normalMatrixId.setValue(meshInstance.node.normalMatrix.data);\n\t\t\t\t}\n\t\t}\n\t\tcull(camera, drawCalls, culledInstances) {\n\t\t\t\tconst opaque = culledInstances.opaque;\n\t\t\t\topaque.length = 0;\n\t\t\t\tconst transparent = culledInstances.transparent;\n\t\t\t\ttransparent.length = 0;\n\t\t\t\tconst doCull = camera.frustumCulling;\n\t\t\t\tconst count = drawCalls.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst drawCall = drawCalls[i];\n\t\t\t\t\t\tif (drawCall.visible) {\n\t\t\t\t\t\t\t\tconst visible = !doCull || !drawCall.cull || drawCall._isVisible(camera);\n\t\t\t\t\t\t\t\tif (visible) {\n\t\t\t\t\t\t\t\t\t\tdrawCall.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\tconst bucket = drawCall.transparent ? transparent : opaque;\n\t\t\t\t\t\t\t\t\t\tbucket.push(drawCall);\n\t\t\t\t\t\t\t\t\t\tif (drawCall.skinInstance || drawCall.morphInstance || drawCall.gsplatInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.processingMeshInstances.add(drawCall);\n\t\t\t\t\t\t\t\t\t\t\t\tif (drawCall.gsplatInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdrawCall.gsplatInstance.cameras.push(camera);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcollectLights(comp) {\n\t\t\t\tthis.lights.length = 0;\n\t\t\t\tthis.localLights.length = 0;\n\t\t\t\tconst stats = this.scene._stats;\n\t\t\t\tconst count = comp.layerList.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst layer = comp.layerList[i];\n\t\t\t\t\t\tif (!_tempLayerSet.has(layer)) {\n\t\t\t\t\t\t\t\t_tempLayerSet.add(layer);\n\t\t\t\t\t\t\t\tconst lights = layer._lights;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < lights.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst light = lights[j];\n\t\t\t\t\t\t\t\t\t\tif (!_tempLightSet.has(light)) {\n\t\t\t\t\t\t\t\t\t\t\t\t_tempLightSet.add(light);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.lights.push(light);\n\t\t\t\t\t\t\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.localLights.push(light);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstats.lights = this.lights.length;\n\t\t\t\t_tempLightSet.clear();\n\t\t\t\t_tempLayerSet.clear();\n\t\t}\n\t\tcullLights(camera, lights) {\n\t\t\t\tconst clusteredLightingEnabled = this.scene.clusteredLightingEnabled;\n\t\t\t\tconst physicalUnits = this.scene.physicalUnits;\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (light.enabled) {\n\t\t\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\t\t\tlight.getBoundingSphere(tempSphere$1);\n\t\t\t\t\t\t\t\t\t\tif (camera.frustum.containsSphere(tempSphere$1)) {\n\t\t\t\t\t\t\t\t\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\t\t\tlight.usePhysicalUnits = physicalUnits;\n\t\t\t\t\t\t\t\t\t\t\t\tconst screenSize = camera.getScreenSize(tempSphere$1);\n\t\t\t\t\t\t\t\t\t\t\t\tlight.maxScreenSize = Math.max(light.maxScreenSize, screenSize);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (light.castShadows && !light.shadowMap) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlight.visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlight.usePhysicalUnits = this.scene.physicalUnits;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcullShadowmaps(comp) {\n\t\t\t\tconst isClustered = this.scene.clusteredLightingEnabled;\n\t\t\t\tfor(let i = 0; i < this.localLights.length; i++){\n\t\t\t\t\t\tconst light = this.localLights[i];\n\t\t\t\t\t\tif (light._type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tif (isClustered) {\n\t\t\t\t\t\t\t\t\t\tif (light.atlasSlotUpdated && light.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (light.shadowUpdateMode === SHADOWUPDATE_NONE && light.castShadows) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!light.getRenderData(null, 0).shadowCamera.renderTarget) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlight.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (light.visibleThisFrame && light.castShadows && light.shadowUpdateMode !== SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\tthis._shadowRendererLocal.cull(light, comp);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.cameraDirShadowLights.clear();\n\t\t\t\tconst cameras = comp.cameras;\n\t\t\t\tfor(let i = 0; i < cameras.length; i++){\n\t\t\t\t\t\tconst cameraComponent = cameras[i];\n\t\t\t\t\t\tif (cameraComponent.enabled) {\n\t\t\t\t\t\t\t\tconst camera = cameraComponent.camera;\n\t\t\t\t\t\t\t\tlet lightList;\n\t\t\t\t\t\t\t\tconst cameraLayers = camera.layers;\n\t\t\t\t\t\t\t\tfor(let l = 0; l < cameraLayers.length; l++){\n\t\t\t\t\t\t\t\t\t\tconst cameraLayer = comp.getLayerById(cameraLayers[l]);\n\t\t\t\t\t\t\t\t\t\tif (cameraLayer) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst layerDirLights = cameraLayer.splitLights[LIGHTTYPE_DIRECTIONAL];\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < layerDirLights.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst light = layerDirLights[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (light.castShadows && !_tempSet.has(light)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t_tempSet.add(light);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlightList = lightList ?? [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlightList.push(light);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._shadowRendererDirectional.cull(light, comp, camera);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (lightList) {\n\t\t\t\t\t\t\t\t\t\tthis.cameraDirShadowLights.set(camera, lightList);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_tempSet.clear();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcullComposition(comp) {\n\t\t\t\tconst { scene } = this;\n\t\t\t\tthis.processingMeshInstances.clear();\n\t\t\t\tconst numCameras = comp.cameras.length;\n\t\t\t\tthis._camerasRendered += numCameras;\n\t\t\t\tfor(let i = 0; i < numCameras; i++){\n\t\t\t\t\t\tconst camera = comp.cameras[i];\n\t\t\t\t\t\tscene?.fire(EVENT_PRECULL, camera);\n\t\t\t\t\t\tconst renderTarget = camera.renderTarget;\n\t\t\t\t\t\tcamera.frameUpdate(renderTarget);\n\t\t\t\t\t\tthis.updateCameraFrustum(camera.camera);\n\t\t\t\t\t\tconst layerIds = camera.layers;\n\t\t\t\t\t\tfor(let j = 0; j < layerIds.length; j++){\n\t\t\t\t\t\t\t\tconst layer = comp.getLayerById(layerIds[j]);\n\t\t\t\t\t\t\t\tif (layer && layer.enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.cullLights(camera.camera, layer._lights);\n\t\t\t\t\t\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera.camera);\n\t\t\t\t\t\t\t\t\t\tthis.cull(camera.camera, layer.meshInstances, culledInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscene?.fire(EVENT_POSTCULL, camera);\n\t\t\t\t}\n\t\t\t\tif (scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.updateLightTextureAtlas();\n\t\t\t\t}\n\t\t\t\tthis.cullShadowmaps(comp);\n\t\t\t\tscene?.fire(EVENT_CULL_END);\n\t\t}\n\t\tupdateShaders(drawCalls, onlyLitShaders) {\n\t\t\t\tconst count = drawCalls.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst mat = drawCalls[i].material;\n\t\t\t\t\t\tif (mat) {\n\t\t\t\t\t\t\t\tif (!_tempSet.has(mat)) {\n\t\t\t\t\t\t\t\t\t\t_tempSet.add(mat);\n\t\t\t\t\t\t\t\t\t\tif (mat.getShaderVariant !== Material.prototype.getShaderVariant) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (onlyLitShaders) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!mat.useLighting || mat.emitter && !mat.emitter.lighting) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tmat.clearVariants();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t_tempSet.clear();\n\t\t}\n\t\tupdateFrameUniforms() {\n\t\t\t\tthis.blueNoiseTextureId.setValue(getBlueNoiseTexture(this.device));\n\t\t}\n\t\tbeginFrame(comp) {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst updateShaders = scene.updateShaders || this.device._shadersDirty;\n\t\t\t\tconst layers = comp.layerList;\n\t\t\t\tconst layerCount = layers.length;\n\t\t\t\tfor(let i = 0; i < layerCount; i++){\n\t\t\t\t\t\tconst layer = layers[i];\n\t\t\t\t\t\tconst meshInstances = layer.meshInstances;\n\t\t\t\t\t\tconst count = meshInstances.length;\n\t\t\t\t\t\tfor(let j = 0; j < count; j++){\n\t\t\t\t\t\t\t\tconst meshInst = meshInstances[j];\n\t\t\t\t\t\t\t\tmeshInst.visibleThisFrame = false;\n\t\t\t\t\t\t\t\tif (updateShaders) {\n\t\t\t\t\t\t\t\t\t\t_tempMeshInstances.push(meshInst);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (meshInst.skinInstance) {\n\t\t\t\t\t\t\t\t\t\t_tempMeshInstancesSkinned.push(meshInst);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (updateShaders) {\n\t\t\t\t\t\tconst onlyLitShaders = !scene.updateShaders || !this.device._shadersDirty;\n\t\t\t\t\t\tthis.updateShaders(_tempMeshInstances, onlyLitShaders);\n\t\t\t\t\t\tscene.updateShaders = false;\n\t\t\t\t\t\tthis.device._shadersDirty = false;\n\t\t\t\t\t\tscene._shaderVersion++;\n\t\t\t\t}\n\t\t\t\tthis.updateFrameUniforms();\n\t\t\t\tthis.updateCpuSkinMatrices(_tempMeshInstancesSkinned);\n\t\t\t\t_tempMeshInstances.length = 0;\n\t\t\t\t_tempMeshInstancesSkinned.length = 0;\n\t\t\t\tconst lights = this.lights;\n\t\t\t\tconst lightCount = lights.length;\n\t\t\t\tfor(let i = 0; i < lightCount; i++){\n\t\t\t\t\t\tlights[i].beginFrame();\n\t\t\t\t}\n\t\t}\n\t\tupdateLightTextureAtlas() {\n\t\t\t\tthis.lightTextureAtlas.update(this.localLights, this.scene.lighting);\n\t\t}\n\t\tupdateLayerComposition(comp) {\n\t\t\t\tconst len = comp.layerList.length;\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst shaderVersion = scene._shaderVersion;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst layer = comp.layerList[i];\n\t\t\t\t\t\tlayer._shaderVersion = shaderVersion;\n\t\t\t\t}\n\t\t\t\tcomp._update();\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tthis.clustersDebugRendered = false;\n\t\t\t\tthis.initViewBindGroupFormat(this.scene.clusteredLightingEnabled);\n\t\t\t\tthis.dirLightShadows.clear();\n\t\t}\n}\n\nclass RenderAction {\n\t\tconstructor(){\n\t\t\t\tthis.camera = null;\n\t\t\t\tthis.layer = null;\n\t\t\t\tthis.transparent = false;\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.lightClusters = null;\n\t\t\t\tthis.clearColor = false;\n\t\t\t\tthis.clearDepth = false;\n\t\t\t\tthis.clearStencil = false;\n\t\t\t\tthis.triggerPostprocess = false;\n\t\t\t\tthis.firstCameraUse = false;\n\t\t\t\tthis.lastCameraUse = false;\n\t\t\t\tthis.viewBindGroups = [];\n\t\t\t\tthis.useCameraPasses = false;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tsetupClears(camera, layer) {\n\t\t\t\tthis.clearColor = camera?.clearColorBuffer || layer.clearColorBuffer;\n\t\t\t\tthis.clearDepth = camera?.clearDepthBuffer || layer.clearDepthBuffer;\n\t\t\t\tthis.clearStencil = camera?.clearStencilBuffer || layer.clearStencilBuffer;\n\t\t}\n}\n\nclass RenderPassForward extends RenderPass {\n\t\tconstructor(device, layerComposition, scene, renderer){\n\t\t\t\tsuper(device), this.renderActions = [], this.noDepthClear = false;\n\t\t\t\tthis.layerComposition = layerComposition;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.renderer = renderer;\n\t\t}\n\t\tget rendersAnything() {\n\t\t\t\treturn this.renderActions.length > 0;\n\t\t}\n\t\taddRenderAction(renderAction) {\n\t\t\t\tthis.renderActions.push(renderAction);\n\t\t}\n\t\taddLayer(cameraComponent, layer, transparent, autoClears = true) {\n\t\t\t\tconst ra = new RenderAction();\n\t\t\t\tra.renderTarget = this.renderTarget;\n\t\t\t\tra.camera = cameraComponent;\n\t\t\t\tra.layer = layer;\n\t\t\t\tra.transparent = transparent;\n\t\t\t\tif (autoClears) {\n\t\t\t\t\t\tconst firstRa = this.renderActions.length === 0;\n\t\t\t\t\t\tra.setupClears(firstRa ? cameraComponent : undefined, layer);\n\t\t\t\t}\n\t\t\t\tthis.addRenderAction(ra);\n\t\t}\n\t\taddLayers(composition, cameraComponent, startIndex, firstLayerClears, lastLayerId, lastLayerIsTransparent = true) {\n\t\t\t\tconst { layerList, subLayerList } = composition;\n\t\t\t\tlet clearRenderTarget = firstLayerClears;\n\t\t\t\tlet index = startIndex;\n\t\t\t\twhile(index < layerList.length){\n\t\t\t\t\t\tconst layer = layerList[index];\n\t\t\t\t\t\tconst isTransparent = subLayerList[index];\n\t\t\t\t\t\tconst renderedByCamera = cameraComponent.camera.layersSet.has(layer.id);\n\t\t\t\t\t\tif (renderedByCamera) {\n\t\t\t\t\t\t\t\tthis.addLayer(cameraComponent, layer, isTransparent, clearRenderTarget);\n\t\t\t\t\t\t\t\tclearRenderTarget = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t\tif (layer.id === lastLayerId && isTransparent === lastLayerIsTransparent) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn index;\n\t\t}\n\t\tupdateDirectionalShadows() {\n\t\t\t\tconst { renderer, renderActions } = this;\n\t\t\t\tfor(let i = 0; i < renderActions.length; i++){\n\t\t\t\t\t\tconst renderAction = renderActions[i];\n\t\t\t\t\t\tconst cameraComp = renderAction.camera;\n\t\t\t\t\t\tconst camera = cameraComp.camera;\n\t\t\t\t\t\tconst shadowDirLights = this.renderer.cameraDirShadowLights.get(camera);\n\t\t\t\t\t\tif (shadowDirLights) {\n\t\t\t\t\t\t\t\tfor(let l = 0; l < shadowDirLights.length; l++){\n\t\t\t\t\t\t\t\t\t\tconst light = shadowDirLights[l];\n\t\t\t\t\t\t\t\t\t\tif (renderer.dirLightShadows.get(light) !== camera) {\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.dirLightShadows.set(light, camera);\n\t\t\t\t\t\t\t\t\t\t\t\tconst shadowPass = renderer._shadowRendererDirectional.getLightRenderPass(light, camera);\n\t\t\t\t\t\t\t\t\t\t\t\tif (shadowPass) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.beforePasses.push(shadowPass);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateClears() {\n\t\t\t\tconst renderAction = this.renderActions[0];\n\t\t\t\tif (renderAction) {\n\t\t\t\t\t\tconst cameraComponent = renderAction.camera;\n\t\t\t\t\t\tconst camera = cameraComponent.camera;\n\t\t\t\t\t\tconst fullSizeClearRect = camera.fullSizeClearRect;\n\t\t\t\t\t\tthis.setClearColor(fullSizeClearRect && renderAction.clearColor ? camera.clearColor : undefined);\n\t\t\t\t\t\tthis.setClearDepth(fullSizeClearRect && renderAction.clearDepth && !this.noDepthClear ? camera.clearDepth : undefined);\n\t\t\t\t\t\tthis.setClearStencil(fullSizeClearRect && renderAction.clearStencil ? camera.clearStencil : undefined);\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tthis.updateDirectionalShadows();\n\t\t\t\tthis.updateClears();\n\t\t}\n\t\tbefore() {\n\t\t\t\tconst { renderActions } = this;\n\t\t\t\tfor(let i = 0; i < renderActions.length; i++){\n\t\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\t\tif (ra.firstCameraUse) {\n\t\t\t\t\t\t\t\tthis.scene.fire(EVENT_PRERENDER, ra.camera);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { layerComposition, renderActions } = this;\n\t\t\t\tfor(let i = 0; i < renderActions.length; i++){\n\t\t\t\t\t\tconst ra = renderActions[i];\n\t\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\t\tif (layerComposition.isEnabled(layer, ra.transparent)) {\n\t\t\t\t\t\t\t\tthis.renderRenderAction(ra, i === 0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tafter() {\n\t\t\t\tfor(let i = 0; i < this.renderActions.length; i++){\n\t\t\t\t\t\tconst ra = this.renderActions[i];\n\t\t\t\t\t\tif (ra.lastCameraUse) {\n\t\t\t\t\t\t\t\tthis.scene.fire(EVENT_POSTRENDER, ra.camera);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t}\n\t\trenderRenderAction(renderAction, firstRenderAction) {\n\t\t\t\tconst { renderer, scene } = this;\n\t\t\t\tconst device = renderer.device;\n\t\t\t\tconst { layer, transparent, camera } = renderAction;\n\t\t\t\tif (camera) {\n\t\t\t\t\t\tconst originalGammaCorrection = camera.gammaCorrection;\n\t\t\t\t\t\tconst originalToneMapping = camera.toneMapping;\n\t\t\t\t\t\tif (this.gammaCorrection !== undefined) camera.gammaCorrection = this.gammaCorrection;\n\t\t\t\t\t\tif (this.toneMapping !== undefined) camera.toneMapping = this.toneMapping;\n\t\t\t\t\t\tscene.fire(EVENT_PRERENDER_LAYER, camera, layer, transparent);\n\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tlightClusters: renderAction.lightClusters\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst shaderPass = camera.camera.shaderPassInfo?.index ?? SHADER_FORWARD;\n\t\t\t\t\t\tif (!firstRenderAction || !camera.camera.fullSizeClearRect) {\n\t\t\t\t\t\t\t\toptions.clearColor = renderAction.clearColor;\n\t\t\t\t\t\t\t\toptions.clearDepth = renderAction.clearDepth;\n\t\t\t\t\t\t\t\toptions.clearStencil = renderAction.clearStencil;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst renderTarget = renderAction.renderTarget ?? device.backBuffer;\n\t\t\t\t\t\trenderer.renderForwardLayer(camera.camera, renderTarget, layer, transparent, shaderPass, renderAction.viewBindGroups, options);\n\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\t\t\tdevice.setAlphaToCoverage(false);\n\t\t\t\t\t\tscene.fire(EVENT_POSTRENDER_LAYER, camera, layer, transparent);\n\t\t\t\t\t\tif (this.gammaCorrection !== undefined) camera.gammaCorrection = originalGammaCorrection;\n\t\t\t\t\t\tif (this.toneMapping !== undefined) camera.toneMapping = originalToneMapping;\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderPassPostprocessing extends RenderPass {\n\t\tconstructor(device, renderer, renderAction){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.renderAction = renderAction;\n\t\t\t\tthis.requiresCubemaps = false;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst renderAction = this.renderAction;\n\t\t\t\tconst camera = renderAction.camera;\n\t\t\t\tcamera.onPostprocessing();\n\t\t}\n}\n\nconst _noLights = [\n\t\t[],\n\t\t[],\n\t\t[]\n];\nconst tmpColor$1 = new Color();\nconst _drawCallList = {\n\t\tdrawCalls: [],\n\t\tshaderInstances: [],\n\t\tisNewMaterial: [],\n\t\tlightMaskChanged: [],\n\t\tclear: function() {\n\t\t\t\tthis.drawCalls.length = 0;\n\t\t\t\tthis.shaderInstances.length = 0;\n\t\t\t\tthis.isNewMaterial.length = 0;\n\t\t\t\tthis.lightMaskChanged.length = 0;\n\t\t}\n};\nfunction vogelDiskPrecalculationSamples(numSamples) {\n\t\tconst samples = [];\n\t\tfor(let i = 0; i < numSamples; ++i){\n\t\t\t\tconst r = Math.sqrt(i + 0.5) / Math.sqrt(numSamples);\n\t\t\t\tsamples.push(r);\n\t\t}\n\t\treturn samples;\n}\nfunction vogelSpherePrecalculationSamples(numSamples) {\n\t\tconst samples = [];\n\t\tfor(let i = 0; i < numSamples; i++){\n\t\t\t\tconst weight = i / numSamples;\n\t\t\t\tconst radius = Math.sqrt(weight * weight);\n\t\t\t\tsamples.push(radius);\n\t\t}\n\t\treturn samples;\n}\nclass ForwardRenderer extends Renderer {\n\t\tconstructor(graphicsDevice, scene){\n\t\t\t\tsuper(graphicsDevice, scene);\n\t\t\t\tconst device = this.device;\n\t\t\t\tthis._forwardDrawCalls = 0;\n\t\t\t\tthis._materialSwitches = 0;\n\t\t\t\tthis._depthMapTime = 0;\n\t\t\t\tthis._forwardTime = 0;\n\t\t\t\tthis._sortTime = 0;\n\t\t\t\tconst scope = device.scope;\n\t\t\t\tthis.fogColorId = scope.resolve('fog_color');\n\t\t\t\tthis.fogStartId = scope.resolve('fog_start');\n\t\t\t\tthis.fogEndId = scope.resolve('fog_end');\n\t\t\t\tthis.fogDensityId = scope.resolve('fog_density');\n\t\t\t\tthis.ambientId = scope.resolve('light_globalAmbient');\n\t\t\t\tthis.skyboxIntensityId = scope.resolve('skyboxIntensity');\n\t\t\t\tthis.cubeMapRotationMatrixId = scope.resolve('cubeMapRotationMatrix');\n\t\t\t\tthis.pcssDiskSamplesId = scope.resolve('pcssDiskSamples[0]');\n\t\t\t\tthis.pcssSphereSamplesId = scope.resolve('pcssSphereSamples[0]');\n\t\t\t\tthis.lightColorId = [];\n\t\t\t\tthis.lightDir = [];\n\t\t\t\tthis.lightDirId = [];\n\t\t\t\tthis.lightShadowMapId = [];\n\t\t\t\tthis.lightShadowMatrixId = [];\n\t\t\t\tthis.lightShadowParamsId = [];\n\t\t\t\tthis.lightShadowIntensity = [];\n\t\t\t\tthis.lightRadiusId = [];\n\t\t\t\tthis.lightPos = [];\n\t\t\t\tthis.lightPosId = [];\n\t\t\t\tthis.lightWidth = [];\n\t\t\t\tthis.lightWidthId = [];\n\t\t\t\tthis.lightHeight = [];\n\t\t\t\tthis.lightHeightId = [];\n\t\t\t\tthis.lightInAngleId = [];\n\t\t\t\tthis.lightOutAngleId = [];\n\t\t\t\tthis.lightCookieId = [];\n\t\t\t\tthis.lightCookieIntId = [];\n\t\t\t\tthis.lightCookieMatrixId = [];\n\t\t\t\tthis.lightCookieOffsetId = [];\n\t\t\t\tthis.lightShadowSearchAreaId = [];\n\t\t\t\tthis.lightCameraParamsId = [];\n\t\t\t\tthis.lightSoftShadowParamsId = [];\n\t\t\t\tthis.shadowMatrixPaletteId = [];\n\t\t\t\tthis.shadowCascadeDistancesId = [];\n\t\t\t\tthis.shadowCascadeCountId = [];\n\t\t\t\tthis.shadowCascadeBlendId = [];\n\t\t\t\tthis.screenSizeId = scope.resolve('uScreenSize');\n\t\t\t\tthis._screenSize = new Float32Array(4);\n\t\t\t\tthis.fogColor = new Float32Array(3);\n\t\t\t\tthis.ambientColor = new Float32Array(3);\n\t\t\t\tthis.pcssDiskSamples = vogelDiskPrecalculationSamples(16);\n\t\t\t\tthis.pcssSphereSamples = vogelSpherePrecalculationSamples(16);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tdispatchGlobalLights(scene) {\n\t\t\t\tconst ambientUniform = this.ambientColor;\n\t\t\t\ttmpColor$1.linear(scene.ambientLight);\n\t\t\t\tambientUniform[0] = tmpColor$1.r;\n\t\t\t\tambientUniform[1] = tmpColor$1.g;\n\t\t\t\tambientUniform[2] = tmpColor$1.b;\n\t\t\t\tif (scene.physicalUnits) {\n\t\t\t\t\t\tfor(let i = 0; i < 3; i++){\n\t\t\t\t\t\t\t\tambientUniform[i] *= scene.ambientLuminance;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.ambientId.setValue(ambientUniform);\n\t\t\t\tthis.skyboxIntensityId.setValue(scene.physicalUnits ? scene.skyboxLuminance : scene.skyboxIntensity);\n\t\t\t\tthis.cubeMapRotationMatrixId.setValue(scene._skyboxRotationMat3.data);\n\t\t}\n\t\t_resolveLight(scope, i) {\n\t\t\t\tconst light = `light${i}`;\n\t\t\t\tthis.lightColorId[i] = scope.resolve(`${light}_color`);\n\t\t\t\tthis.lightDir[i] = new Float32Array(3);\n\t\t\t\tthis.lightDirId[i] = scope.resolve(`${light}_direction`);\n\t\t\t\tthis.lightShadowMapId[i] = scope.resolve(`${light}_shadowMap`);\n\t\t\t\tthis.lightShadowMatrixId[i] = scope.resolve(`${light}_shadowMatrix`);\n\t\t\t\tthis.lightShadowParamsId[i] = scope.resolve(`${light}_shadowParams`);\n\t\t\t\tthis.lightShadowIntensity[i] = scope.resolve(`${light}_shadowIntensity`);\n\t\t\t\tthis.lightShadowSearchAreaId[i] = scope.resolve(`${light}_shadowSearchArea`);\n\t\t\t\tthis.lightRadiusId[i] = scope.resolve(`${light}_radius`);\n\t\t\t\tthis.lightPos[i] = new Float32Array(3);\n\t\t\t\tthis.lightPosId[i] = scope.resolve(`${light}_position`);\n\t\t\t\tthis.lightWidth[i] = new Float32Array(3);\n\t\t\t\tthis.lightWidthId[i] = scope.resolve(`${light}_halfWidth`);\n\t\t\t\tthis.lightHeight[i] = new Float32Array(3);\n\t\t\t\tthis.lightHeightId[i] = scope.resolve(`${light}_halfHeight`);\n\t\t\t\tthis.lightInAngleId[i] = scope.resolve(`${light}_innerConeAngle`);\n\t\t\t\tthis.lightOutAngleId[i] = scope.resolve(`${light}_outerConeAngle`);\n\t\t\t\tthis.lightCookieId[i] = scope.resolve(`${light}_cookie`);\n\t\t\t\tthis.lightCookieIntId[i] = scope.resolve(`${light}_cookieIntensity`);\n\t\t\t\tthis.lightCookieMatrixId[i] = scope.resolve(`${light}_cookieMatrix`);\n\t\t\t\tthis.lightCookieOffsetId[i] = scope.resolve(`${light}_cookieOffset`);\n\t\t\t\tthis.lightCameraParamsId[i] = scope.resolve(`${light}_cameraParams`);\n\t\t\t\tthis.lightSoftShadowParamsId[i] = scope.resolve(`${light}_softShadowParams`);\n\t\t\t\tthis.shadowMatrixPaletteId[i] = scope.resolve(`${light}_shadowMatrixPalette[0]`);\n\t\t\t\tthis.shadowCascadeDistancesId[i] = scope.resolve(`${light}_shadowCascadeDistances`);\n\t\t\t\tthis.shadowCascadeCountId[i] = scope.resolve(`${light}_shadowCascadeCount`);\n\t\t\t\tthis.shadowCascadeBlendId[i] = scope.resolve(`${light}_shadowCascadeBlend`);\n\t\t}\n\t\tsetLTCDirectionalLight(wtm, cnt, dir, campos, far) {\n\t\t\t\tthis.lightPos[cnt][0] = campos.x - dir.x * far;\n\t\t\t\tthis.lightPos[cnt][1] = campos.y - dir.y * far;\n\t\t\t\tthis.lightPos[cnt][2] = campos.z - dir.z * far;\n\t\t\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\t\t\tconst hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0));\n\t\t\t\tthis.lightWidth[cnt][0] = hWidth.x * far;\n\t\t\t\tthis.lightWidth[cnt][1] = hWidth.y * far;\n\t\t\t\tthis.lightWidth[cnt][2] = hWidth.z * far;\n\t\t\t\tthis.lightWidthId[cnt].setValue(this.lightWidth[cnt]);\n\t\t\t\tconst hHeight = wtm.transformVector(new Vec3(0, 0, 0.5));\n\t\t\t\tthis.lightHeight[cnt][0] = hHeight.x * far;\n\t\t\t\tthis.lightHeight[cnt][1] = hHeight.y * far;\n\t\t\t\tthis.lightHeight[cnt][2] = hHeight.z * far;\n\t\t\t\tthis.lightHeightId[cnt].setValue(this.lightHeight[cnt]);\n\t\t}\n\t\tdispatchDirectLights(dirs, mask, camera) {\n\t\t\t\tlet cnt = 0;\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tfor(let i = 0; i < dirs.length; i++){\n\t\t\t\t\t\tif (!(dirs[i].mask & mask)) continue;\n\t\t\t\t\t\tconst directional = dirs[i];\n\t\t\t\t\t\tconst wtm = directional._node.getWorldTransform();\n\t\t\t\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\t\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lightColorId[cnt].setValue(directional._colorLinear);\n\t\t\t\t\t\twtm.getY(directional._direction).mulScalar(-1);\n\t\t\t\t\t\tdirectional._direction.normalize();\n\t\t\t\t\t\tthis.lightDir[cnt][0] = directional._direction.x;\n\t\t\t\t\t\tthis.lightDir[cnt][1] = directional._direction.y;\n\t\t\t\t\t\tthis.lightDir[cnt][2] = directional._direction.z;\n\t\t\t\t\t\tthis.lightDirId[cnt].setValue(this.lightDir[cnt]);\n\t\t\t\t\t\tif (directional.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\t\t\tthis.setLTCDirectionalLight(wtm, cnt, directional._direction, camera._node.getPosition(), camera.farClip);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (directional.castShadows) {\n\t\t\t\t\t\t\t\tconst lightRenderData = directional.getRenderData(camera, 0);\n\t\t\t\t\t\t\t\tconst biases = directional._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data);\n\t\t\t\t\t\t\t\tthis.shadowMatrixPaletteId[cnt].setValue(directional._shadowMatrixPalette);\n\t\t\t\t\t\t\t\tthis.shadowCascadeDistancesId[cnt].setValue(directional._shadowCascadeDistances);\n\t\t\t\t\t\t\t\tthis.shadowCascadeCountId[cnt].setValue(directional.numCascades);\n\t\t\t\t\t\t\t\tthis.shadowCascadeBlendId[cnt].setValue(1 - directional.cascadeBlend);\n\t\t\t\t\t\t\t\tthis.lightShadowIntensity[cnt].setValue(directional.shadowIntensity);\n\t\t\t\t\t\t\t\tthis.lightSoftShadowParamsId[cnt].setValue(directional._softShadowParams);\n\t\t\t\t\t\t\t\tconst shadowRT = lightRenderData.shadowCamera.renderTarget;\n\t\t\t\t\t\t\t\tif (shadowRT) {\n\t\t\t\t\t\t\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(directional.penumbraSize / lightRenderData.shadowCamera.renderTarget.width * lightRenderData.projectionCompensation);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst cameraParams = directional._shadowCameraParams;\n\t\t\t\t\t\t\t\tcameraParams.length = 4;\n\t\t\t\t\t\t\t\tcameraParams[0] = 0;\n\t\t\t\t\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\t\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\t\t\t\t\tcameraParams[3] = 1;\n\t\t\t\t\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\t\t\t\t\tconst params = directional._shadowRenderParams;\n\t\t\t\t\t\t\t\tparams.length = 4;\n\t\t\t\t\t\t\t\tparams[0] = directional._shadowResolution;\n\t\t\t\t\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\t\t\t\t\tparams[2] = biases.bias;\n\t\t\t\t\t\t\t\tparams[3] = 0;\n\t\t\t\t\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcnt++;\n\t\t\t\t}\n\t\t\t\treturn cnt;\n\t\t}\n\t\tsetLTCPositionalLight(wtm, cnt) {\n\t\t\t\tconst hWidth = wtm.transformVector(new Vec3(-0.5, 0, 0));\n\t\t\t\tthis.lightWidth[cnt][0] = hWidth.x;\n\t\t\t\tthis.lightWidth[cnt][1] = hWidth.y;\n\t\t\t\tthis.lightWidth[cnt][2] = hWidth.z;\n\t\t\t\tthis.lightWidthId[cnt].setValue(this.lightWidth[cnt]);\n\t\t\t\tconst hHeight = wtm.transformVector(new Vec3(0, 0, 0.5));\n\t\t\t\tthis.lightHeight[cnt][0] = hHeight.x;\n\t\t\t\tthis.lightHeight[cnt][1] = hHeight.y;\n\t\t\t\tthis.lightHeight[cnt][2] = hHeight.z;\n\t\t\t\tthis.lightHeightId[cnt].setValue(this.lightHeight[cnt]);\n\t\t}\n\t\tdispatchOmniLight(scope, omni, cnt) {\n\t\t\t\tconst wtm = omni._node.getWorldTransform();\n\t\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t\t}\n\t\t\t\tthis.lightRadiusId[cnt].setValue(omni.attenuationEnd);\n\t\t\t\tthis.lightColorId[cnt].setValue(omni._colorLinear);\n\t\t\t\twtm.getTranslation(omni._position);\n\t\t\t\tthis.lightPos[cnt][0] = omni._position.x;\n\t\t\t\tthis.lightPos[cnt][1] = omni._position.y;\n\t\t\t\tthis.lightPos[cnt][2] = omni._position.z;\n\t\t\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\t\t\tif (omni.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\tthis.setLTCPositionalLight(wtm, cnt);\n\t\t\t\t}\n\t\t\t\tif (omni.castShadows) {\n\t\t\t\t\t\tconst lightRenderData = omni.getRenderData(null, 0);\n\t\t\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\t\t\tconst biases = omni._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\tconst params = omni._shadowRenderParams;\n\t\t\t\t\t\tparams.length = 4;\n\t\t\t\t\t\tparams[0] = omni._shadowResolution;\n\t\t\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\t\t\tparams[2] = biases.bias;\n\t\t\t\t\t\tparams[3] = 1.0 / omni.attenuationEnd;\n\t\t\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t\t\t\tthis.lightShadowIntensity[cnt].setValue(omni.shadowIntensity);\n\t\t\t\t\t\tconst pixelsPerMeter = omni.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter);\n\t\t\t\t\t\tconst cameraParams = omni._shadowCameraParams;\n\t\t\t\t\t\tcameraParams.length = 4;\n\t\t\t\t\t\tcameraParams[0] = 0;\n\t\t\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\t\t\tcameraParams[3] = 0;\n\t\t\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\t}\n\t\t\t\tif (omni._cookie) {\n\t\t\t\t\t\tthis.lightCookieId[cnt].setValue(omni._cookie);\n\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(wtm.data);\n\t\t\t\t\t\tthis.lightCookieIntId[cnt].setValue(omni.cookieIntensity);\n\t\t\t\t}\n\t\t}\n\t\tdispatchSpotLight(scope, spot, cnt) {\n\t\t\t\tconst wtm = spot._node.getWorldTransform();\n\t\t\t\tif (!this.lightColorId[cnt]) {\n\t\t\t\t\t\tthis._resolveLight(scope, cnt);\n\t\t\t\t}\n\t\t\t\tthis.lightInAngleId[cnt].setValue(spot._innerConeAngleCos);\n\t\t\t\tthis.lightOutAngleId[cnt].setValue(spot._outerConeAngleCos);\n\t\t\t\tthis.lightRadiusId[cnt].setValue(spot.attenuationEnd);\n\t\t\t\tthis.lightColorId[cnt].setValue(spot._colorLinear);\n\t\t\t\twtm.getTranslation(spot._position);\n\t\t\t\tthis.lightPos[cnt][0] = spot._position.x;\n\t\t\t\tthis.lightPos[cnt][1] = spot._position.y;\n\t\t\t\tthis.lightPos[cnt][2] = spot._position.z;\n\t\t\t\tthis.lightPosId[cnt].setValue(this.lightPos[cnt]);\n\t\t\t\tif (spot.shape !== LIGHTSHAPE_PUNCTUAL) {\n\t\t\t\t\t\tthis.setLTCPositionalLight(wtm, cnt);\n\t\t\t\t}\n\t\t\t\twtm.getY(spot._direction).mulScalar(-1);\n\t\t\t\tspot._direction.normalize();\n\t\t\t\tthis.lightDir[cnt][0] = spot._direction.x;\n\t\t\t\tthis.lightDir[cnt][1] = spot._direction.y;\n\t\t\t\tthis.lightDir[cnt][2] = spot._direction.z;\n\t\t\t\tthis.lightDirId[cnt].setValue(this.lightDir[cnt]);\n\t\t\t\tif (spot.castShadows) {\n\t\t\t\t\t\tconst lightRenderData = spot.getRenderData(null, 0);\n\t\t\t\t\t\tthis.lightShadowMapId[cnt].setValue(lightRenderData.shadowBuffer);\n\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(lightRenderData.shadowMatrix.data);\n\t\t\t\t\t\tconst biases = spot._getUniformBiasValues(lightRenderData);\n\t\t\t\t\t\tconst params = spot._shadowRenderParams;\n\t\t\t\t\t\tparams.length = 4;\n\t\t\t\t\t\tparams[0] = spot._shadowResolution;\n\t\t\t\t\t\tparams[1] = biases.normalBias;\n\t\t\t\t\t\tparams[2] = biases.bias;\n\t\t\t\t\t\tparams[3] = 1.0 / spot.attenuationEnd;\n\t\t\t\t\t\tthis.lightShadowParamsId[cnt].setValue(params);\n\t\t\t\t\t\tthis.lightShadowIntensity[cnt].setValue(spot.shadowIntensity);\n\t\t\t\t\t\tconst pixelsPerMeter = spot.penumbraSize / lightRenderData.shadowCamera.renderTarget.width;\n\t\t\t\t\t\tconst fov = lightRenderData.shadowCamera._fov * Math.PI / 180.0;\n\t\t\t\t\t\tconst fovRatio = 1.0 / Math.tan(fov / 2.0);\n\t\t\t\t\t\tthis.lightShadowSearchAreaId[cnt].setValue(pixelsPerMeter * fovRatio);\n\t\t\t\t\t\tconst cameraParams = spot._shadowCameraParams;\n\t\t\t\t\t\tcameraParams.length = 4;\n\t\t\t\t\t\tcameraParams[0] = 0;\n\t\t\t\t\t\tcameraParams[1] = lightRenderData.shadowCamera._farClip;\n\t\t\t\t\t\tcameraParams[2] = lightRenderData.shadowCamera._nearClip;\n\t\t\t\t\t\tcameraParams[3] = 0;\n\t\t\t\t\t\tthis.lightCameraParamsId[cnt].setValue(cameraParams);\n\t\t\t\t}\n\t\t\t\tif (spot._cookie) {\n\t\t\t\t\t\tif (!spot.castShadows) {\n\t\t\t\t\t\t\t\tconst cookieMatrix = LightCamera.evalSpotCookieMatrix(spot);\n\t\t\t\t\t\t\t\tthis.lightShadowMatrixId[cnt].setValue(cookieMatrix.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lightCookieId[cnt].setValue(spot._cookie);\n\t\t\t\t\t\tthis.lightCookieIntId[cnt].setValue(spot.cookieIntensity);\n\t\t\t\t\t\tif (spot._cookieTransform) {\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[0] = spot._cookieTransform.x;\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[1] = spot._cookieTransform.y;\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[2] = spot._cookieTransform.z;\n\t\t\t\t\t\t\t\tspot._cookieTransformUniform[3] = spot._cookieTransform.w;\n\t\t\t\t\t\t\t\tthis.lightCookieMatrixId[cnt].setValue(spot._cookieTransformUniform);\n\t\t\t\t\t\t\t\tspot._cookieOffsetUniform[0] = spot._cookieOffset.x;\n\t\t\t\t\t\t\t\tspot._cookieOffsetUniform[1] = spot._cookieOffset.y;\n\t\t\t\t\t\t\t\tthis.lightCookieOffsetId[cnt].setValue(spot._cookieOffsetUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdispatchLocalLights(sortedLights, mask, usedDirLights) {\n\t\t\t\tlet cnt = usedDirLights;\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tconst omnis = sortedLights[LIGHTTYPE_OMNI];\n\t\t\t\tconst numOmnis = omnis.length;\n\t\t\t\tfor(let i = 0; i < numOmnis; i++){\n\t\t\t\t\t\tconst omni = omnis[i];\n\t\t\t\t\t\tif (!(omni.mask & mask)) continue;\n\t\t\t\t\t\tthis.dispatchOmniLight(scope, omni, cnt);\n\t\t\t\t\t\tcnt++;\n\t\t\t\t}\n\t\t\t\tconst spts = sortedLights[LIGHTTYPE_SPOT];\n\t\t\t\tconst numSpts = spts.length;\n\t\t\t\tfor(let i = 0; i < numSpts; i++){\n\t\t\t\t\t\tconst spot = spts[i];\n\t\t\t\t\t\tif (!(spot.mask & mask)) continue;\n\t\t\t\t\t\tthis.dispatchSpotLight(scope, spot, cnt);\n\t\t\t\t\t\tcnt++;\n\t\t\t\t}\n\t\t}\n\t\trenderForwardPrepareMaterials(camera, renderTarget, drawCalls, sortedLights, layer, pass) {\n\t\t\t\tconst fogParams = camera.fogParams ?? this.scene.fog;\n\t\t\t\tconst shaderParams = camera.shaderParams;\n\t\t\t\tshaderParams.fog = fogParams.type;\n\t\t\t\tshaderParams.srgbRenderTarget = renderTarget?.isColorBufferSrgb(0) ?? false;\n\t\t\t\tconst addCall = (drawCall, shaderInstance, isNewMaterial, lightMaskChanged)=>{\n\t\t\t\t\t\t_drawCallList.drawCalls.push(drawCall);\n\t\t\t\t\t\t_drawCallList.shaderInstances.push(shaderInstance);\n\t\t\t\t\t\t_drawCallList.isNewMaterial.push(isNewMaterial);\n\t\t\t\t\t\t_drawCallList.lightMaskChanged.push(lightMaskChanged);\n\t\t\t\t};\n\t\t\t\t_drawCallList.clear();\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tconst lightHash = layer?.getLightHash(clusteredLightingEnabled) ?? 0;\n\t\t\t\tlet prevMaterial = null, prevObjDefs, prevLightMask;\n\t\t\t\tconst drawCallsCount = drawCalls.length;\n\t\t\t\tfor(let i = 0; i < drawCallsCount; i++){\n\t\t\t\t\t\tconst drawCall = drawCalls[i];\n\t\t\t\t\t\tconst instancingData = drawCall.instancingData;\n\t\t\t\t\t\tif (instancingData && instancingData.count <= 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdrawCall.ensureMaterial(device);\n\t\t\t\t\t\tconst material = drawCall.material;\n\t\t\t\t\t\tconst objDefs = drawCall._shaderDefs;\n\t\t\t\t\t\tconst lightMask = drawCall.mask;\n\t\t\t\t\t\tif (material && material === prevMaterial && objDefs !== prevObjDefs) {\n\t\t\t\t\t\t\t\tprevMaterial = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (material !== prevMaterial) {\n\t\t\t\t\t\t\t\tthis._materialSwitches++;\n\t\t\t\t\t\t\t\tmaterial._scene = scene;\n\t\t\t\t\t\t\t\tif (material.dirty) {\n\t\t\t\t\t\t\t\t\t\tmaterial.updateUniforms(device, scene);\n\t\t\t\t\t\t\t\t\t\tmaterial.dirty = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst shaderInstance = drawCall.getShaderInstance(pass, lightHash, scene, shaderParams, this.viewUniformFormat, this.viewBindGroupFormat, sortedLights);\n\t\t\t\t\t\taddCall(drawCall, shaderInstance, material !== prevMaterial, !prevMaterial || lightMask !== prevLightMask);\n\t\t\t\t\t\tprevMaterial = material;\n\t\t\t\t\t\tprevObjDefs = objDefs;\n\t\t\t\t\t\tprevLightMask = lightMask;\n\t\t\t\t}\n\t\t\t\treturn _drawCallList;\n\t\t}\n\t\trenderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces, viewBindGroups) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst passFlag = 1 << pass;\n\t\t\t\tconst flipFactor = flipFaces ? -1 : 1;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tconst viewList = camera.xr?.session && camera.xr.views.list.length ? camera.xr.views.list : null;\n\t\t\t\tconst preparedCallsCount = preparedCalls.drawCalls.length;\n\t\t\t\tfor(let i = 0; i < preparedCallsCount; i++){\n\t\t\t\t\t\tconst drawCall = preparedCalls.drawCalls[i];\n\t\t\t\t\t\tconst newMaterial = preparedCalls.isNewMaterial[i];\n\t\t\t\t\t\tconst lightMaskChanged = preparedCalls.lightMaskChanged[i];\n\t\t\t\t\t\tconst shaderInstance = preparedCalls.shaderInstances[i];\n\t\t\t\t\t\tconst material = drawCall.material;\n\t\t\t\t\t\tconst lightMask = drawCall.mask;\n\t\t\t\t\t\tif (shaderInstance.shader.failed) continue;\n\t\t\t\t\t\tif (newMaterial) {\n\t\t\t\t\t\t\t\tconst asyncCompile = false;\n\t\t\t\t\t\t\t\tdevice.setShader(shaderInstance.shader, asyncCompile);\n\t\t\t\t\t\t\t\tmaterial.setParameters(device);\n\t\t\t\t\t\t\t\tif (lightMaskChanged) {\n\t\t\t\t\t\t\t\t\t\tconst usedDirLights = this.dispatchDirectLights(sortedLights[LIGHTTYPE_DIRECTIONAL], lightMask, camera);\n\t\t\t\t\t\t\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.dispatchLocalLights(sortedLights, lightMask, usedDirLights);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.alphaTestId.setValue(material.alphaTest);\n\t\t\t\t\t\t\t\tdevice.setBlendState(material.blendState);\n\t\t\t\t\t\t\t\tdevice.setDepthState(material.depthState);\n\t\t\t\t\t\t\t\tdevice.setAlphaToCoverage(material.alphaToCoverage);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setupCullMode(camera._cullFaces, flipFactor, drawCall);\n\t\t\t\t\t\tconst stencilFront = drawCall.stencilFront ?? material.stencilFront;\n\t\t\t\t\t\tconst stencilBack = drawCall.stencilBack ?? material.stencilBack;\n\t\t\t\t\t\tdevice.setStencilState(stencilFront, stencilBack);\n\t\t\t\t\t\tdrawCall.setParameters(device, passFlag);\n\t\t\t\t\t\tdevice.scope.resolve('meshInstanceId').setValue(drawCall.id);\n\t\t\t\t\t\tconst mesh = drawCall.mesh;\n\t\t\t\t\t\tthis.setVertexBuffers(device, mesh);\n\t\t\t\t\t\tthis.setMorphing(device, drawCall.morphInstance);\n\t\t\t\t\t\tthis.setSkinning(device, drawCall);\n\t\t\t\t\t\tconst instancingData = drawCall.instancingData;\n\t\t\t\t\t\tif (instancingData) {\n\t\t\t\t\t\t\t\tdevice.setVertexBuffer(instancingData.vertexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setMeshInstanceMatrices(drawCall, true);\n\t\t\t\t\t\tthis.setupMeshUniformBuffers(shaderInstance);\n\t\t\t\t\t\tconst style = drawCall.renderStyle;\n\t\t\t\t\t\tconst indexBuffer = mesh.indexBuffer[style];\n\t\t\t\t\t\tdrawCallback?.(drawCall, i);\n\t\t\t\t\t\tconst indirectData = drawCall.getDrawCommands(camera);\n\t\t\t\t\t\tif (viewList) {\n\t\t\t\t\t\t\t\tfor(let v = 0; v < viewList.length; v++){\n\t\t\t\t\t\t\t\t\t\tconst view = viewList[v];\n\t\t\t\t\t\t\t\t\t\tdevice.setViewport(view.viewport.x, view.viewport.y, view.viewport.z, view.viewport.w);\n\t\t\t\t\t\t\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst viewBindGroup = viewBindGroups[v];\n\t\t\t\t\t\t\t\t\t\t\t\tdevice.setBindGroup(BINDGROUP_VIEW, viewBindGroup);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setupViewUniforms(view, v);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst first = v === 0;\n\t\t\t\t\t\t\t\t\t\tconst last = v === viewList.length - 1;\n\t\t\t\t\t\t\t\t\t\tdevice.draw(mesh.primitive[style], indexBuffer, instancingData?.count, indirectData, first, last);\n\t\t\t\t\t\t\t\t\t\tthis._forwardDrawCalls++;\n\t\t\t\t\t\t\t\t\t\tif (drawCall.instancingData) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._instancedDrawCalls++;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdevice.draw(mesh.primitive[style], indexBuffer, instancingData?.count, indirectData);\n\t\t\t\t\t\t\t\tthis._forwardDrawCalls++;\n\t\t\t\t\t\t\t\tif (drawCall.instancingData) {\n\t\t\t\t\t\t\t\t\t\tthis._instancedDrawCalls++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (i < preparedCallsCount - 1 && !preparedCalls.isNewMaterial[i + 1]) {\n\t\t\t\t\t\t\t\tmaterial.setParameters(device, drawCall.parameters);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\trenderForward(camera, renderTarget, allDrawCalls, sortedLights, pass, drawCallback, layer, flipFaces, viewBindGroups) {\n\t\t\t\tconst preparedCalls = this.renderForwardPrepareMaterials(camera, renderTarget, allDrawCalls, sortedLights, layer, pass);\n\t\t\t\tthis.renderForwardInternal(camera, preparedCalls, sortedLights, pass, drawCallback, flipFaces, viewBindGroups);\n\t\t\t\t_drawCallList.clear();\n\t\t}\n\t\trenderForwardLayer(camera, renderTarget, layer, transparent, shaderPass, viewBindGroups, options = {}) {\n\t\t\t\tconst { scene, device } = this;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tthis.setupViewport(camera, renderTarget);\n\t\t\t\tlet visible, splitLights;\n\t\t\t\tif (layer) {\n\t\t\t\t\t\tlayer.sortVisible(camera, transparent);\n\t\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera);\n\t\t\t\t\t\tvisible = transparent ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\t\t\tscene.immediate.onPreRenderLayer(layer, visible, transparent);\n\t\t\t\t\t\tif (layer.requiresLightCube) {\n\t\t\t\t\t\t\t\tthis.lightCube.update(scene.ambientLight, layer._lights);\n\t\t\t\t\t\t\t\tthis.constantLightCube.setValue(this.lightCube.colors);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsplitLights = layer.splitLights;\n\t\t\t\t} else {\n\t\t\t\t\t\tvisible = options.meshInstances;\n\t\t\t\t\t\tsplitLights = options.splitLights ?? _noLights;\n\t\t\t\t}\n\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\tconst lightClusters = options.lightClusters ?? this.worldClustersAllocator.empty;\n\t\t\t\t\t\tlightClusters.activate();\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tif (!this.clustersDebugRendered && scene.lighting.debugLayer === layer.id) {\n\t\t\t\t\t\t\t\t\t\tthis.clustersDebugRendered = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tscene._activeCamera = camera;\n\t\t\t\tconst fogParams = camera.fogParams ?? this.scene.fog;\n\t\t\t\tthis.setFogConstants(fogParams);\n\t\t\t\tconst viewList = this.setCameraUniforms(camera, renderTarget);\n\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\tthis.setupViewUniformBuffers(viewBindGroups, this.viewUniformFormat, this.viewBindGroupFormat, viewList);\n\t\t\t\t}\n\t\t\t\tconst clearColor = options.clearColor ?? false;\n\t\t\t\tconst clearDepth = options.clearDepth ?? false;\n\t\t\t\tconst clearStencil = options.clearStencil ?? false;\n\t\t\t\tif (clearColor || clearDepth || clearStencil) {\n\t\t\t\t\t\tthis.clear(camera, clearColor, clearDepth, clearStencil);\n\t\t\t\t}\n\t\t\t\tconst flipFaces = !!(camera._flipFaces ^ renderTarget?.flipY);\n\t\t\t\tconst forwardDrawCalls = this._forwardDrawCalls;\n\t\t\t\tthis.renderForward(camera, renderTarget, visible, splitLights, shaderPass, null, layer, flipFaces, viewBindGroups);\n\t\t\t\tif (layer) {\n\t\t\t\t\t\tlayer._forwardDrawCalls += this._forwardDrawCalls - forwardDrawCalls;\n\t\t\t\t}\n\t\t}\n\t\tsetFogConstants(fogParams) {\n\t\t\t\tif (fogParams.type !== FOG_NONE) {\n\t\t\t\t\t\ttmpColor$1.linear(fogParams.color);\n\t\t\t\t\t\tconst fogUniform = this.fogColor;\n\t\t\t\t\t\tfogUniform[0] = tmpColor$1.r;\n\t\t\t\t\t\tfogUniform[1] = tmpColor$1.g;\n\t\t\t\t\t\tfogUniform[2] = tmpColor$1.b;\n\t\t\t\t\t\tthis.fogColorId.setValue(fogUniform);\n\t\t\t\t\t\tif (fogParams.type === FOG_LINEAR) {\n\t\t\t\t\t\t\t\tthis.fogStartId.setValue(fogParams.start);\n\t\t\t\t\t\t\t\tthis.fogEndId.setValue(fogParams.end);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fogDensityId.setValue(fogParams.density);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetSceneConstants() {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tthis.dispatchGlobalLights(scene);\n\t\t\t\tconst device = this.device;\n\t\t\t\tthis._screenSize[0] = device.width;\n\t\t\t\tthis._screenSize[1] = device.height;\n\t\t\t\tthis._screenSize[2] = 1 / device.width;\n\t\t\t\tthis._screenSize[3] = 1 / device.height;\n\t\t\t\tthis.screenSizeId.setValue(this._screenSize);\n\t\t\t\tthis.pcssDiskSamplesId.setValue(this.pcssDiskSamples);\n\t\t\t\tthis.pcssSphereSamplesId.setValue(this.pcssSphereSamples);\n\t\t}\n\t\tbuildFrameGraph(frameGraph, layerComposition) {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tframeGraph.reset();\n\t\t\t\tif (scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tconst { shadowsEnabled, cookiesEnabled } = scene.lighting;\n\t\t\t\t\t\tthis._renderPassUpdateClustered.update(frameGraph, shadowsEnabled, cookiesEnabled, this.lights, this.localLights);\n\t\t\t\t\t\tframeGraph.addRenderPass(this._renderPassUpdateClustered);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._shadowRendererLocal.buildNonClusteredRenderPasses(frameGraph, this.localLights);\n\t\t\t\t}\n\t\t\t\tlet startIndex = 0;\n\t\t\t\tlet newStart = true;\n\t\t\t\tlet renderTarget = null;\n\t\t\t\tconst renderActions = layerComposition._renderActions;\n\t\t\t\tfor(let i = startIndex; i < renderActions.length; i++){\n\t\t\t\t\t\tconst renderAction = renderActions[i];\n\t\t\t\t\t\tconst { layer, camera } = renderAction;\n\t\t\t\t\t\tif (renderAction.useCameraPasses) {\n\t\t\t\t\t\t\t\tcamera.camera.renderPasses.forEach((renderPass)=>{\n\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst isDepthLayer = layer.id === LAYERID_DEPTH;\n\t\t\t\t\t\t\t\tconst isGrabPass = isDepthLayer && (camera.renderSceneColorMap || camera.renderSceneDepthMap);\n\t\t\t\t\t\t\t\tif (newStart) {\n\t\t\t\t\t\t\t\t\t\tnewStart = false;\n\t\t\t\t\t\t\t\t\t\tstartIndex = i;\n\t\t\t\t\t\t\t\t\t\trenderTarget = renderAction.renderTarget;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst nextRenderAction = renderActions[i + 1];\n\t\t\t\t\t\t\t\tconst isNextLayerDepth = nextRenderAction ? !nextRenderAction.useCameraPasses && nextRenderAction.layer.id === LAYERID_DEPTH : false;\n\t\t\t\t\t\t\t\tconst isNextLayerGrabPass = isNextLayerDepth && (camera.renderSceneColorMap || camera.renderSceneDepthMap);\n\t\t\t\t\t\t\t\tconst nextNeedDirShadows = nextRenderAction ? nextRenderAction.firstCameraUse && this.cameraDirShadowLights.has(nextRenderAction.camera.camera) : false;\n\t\t\t\t\t\t\t\tif (!nextRenderAction || nextRenderAction.renderTarget !== renderTarget || nextNeedDirShadows || isNextLayerGrabPass || isGrabPass) {\n\t\t\t\t\t\t\t\t\t\tconst isDepthOnly = isDepthLayer && startIndex === i;\n\t\t\t\t\t\t\t\t\t\tif (!isDepthOnly) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.addMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, i);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (isDepthLayer) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (camera.renderSceneColorMap) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst colorGrabPass = camera.camera.renderPassColorGrab;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolorGrabPass.source = camera.renderTarget;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(colorGrabPass);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (camera.renderSceneDepthMap) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(camera.camera.renderPassDepthGrab);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (renderAction.triggerPostprocess && camera?.onPostprocessing) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst renderPass = new RenderPassPostprocessing(this.device, this, renderAction);\n\t\t\t\t\t\t\t\t\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tnewStart = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddMainRenderPass(frameGraph, layerComposition, renderTarget, startIndex, endIndex) {\n\t\t\t\tconst renderPass = new RenderPassForward(this.device, layerComposition, this.scene, this);\n\t\t\t\trenderPass.init(renderTarget);\n\t\t\t\tconst renderActions = layerComposition._renderActions;\n\t\t\t\tfor(let i = startIndex; i <= endIndex; i++){\n\t\t\t\t\t\trenderPass.addRenderAction(renderActions[i]);\n\t\t\t\t}\n\t\t\t\tframeGraph.addRenderPass(renderPass);\n\t\t}\n\t\tupdate(comp) {\n\t\t\t\tthis.frameUpdate();\n\t\t\t\tthis.shadowRenderer.frameUpdate();\n\t\t\t\tthis.scene._updateSkyMesh();\n\t\t\t\tthis.updateLayerComposition(comp);\n\t\t\t\tthis.collectLights(comp);\n\t\t\t\tthis.beginFrame(comp);\n\t\t\t\tthis.setSceneConstants();\n\t\t\t\tthis.gsplatDirector?.update(comp);\n\t\t\t\tthis.cullComposition(comp);\n\t\t\t\tthis.gpuUpdate(this.processingMeshInstances);\n\t\t}\n}\n\nlet layerCounter = 0;\nconst lightKeys = [];\nconst _tempMaterials = new Set();\nfunction sortManual(drawCallA, drawCallB) {\n\t\treturn drawCallA.drawOrder - drawCallB.drawOrder;\n}\nfunction sortMaterialMesh(drawCallA, drawCallB) {\n\t\tconst keyA = drawCallA._sortKeyForward;\n\t\tconst keyB = drawCallB._sortKeyForward;\n\t\tif (keyA === keyB) {\n\t\t\t\treturn drawCallB.mesh.id - drawCallA.mesh.id;\n\t\t}\n\t\treturn keyB - keyA;\n}\nfunction sortBackToFront(drawCallA, drawCallB) {\n\t\treturn drawCallB._sortKeyDynamic - drawCallA._sortKeyDynamic;\n}\nfunction sortFrontToBack(drawCallA, drawCallB) {\n\t\treturn drawCallA._sortKeyDynamic - drawCallB._sortKeyDynamic;\n}\nconst sortCallbacks = [\n\t\tnull,\n\t\tsortManual,\n\t\tsortMaterialMesh,\n\t\tsortBackToFront,\n\t\tsortFrontToBack\n];\nclass CulledInstances {\n\t\tconstructor(){\n\t\t\t\tthis.opaque = [];\n\t\t\t\tthis.transparent = [];\n\t\t}\n}\nclass Layer {\n\t\tconstructor(options = {}){\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.meshInstancesSet = new Set();\n\t\t\t\tthis.shadowCasters = [];\n\t\t\t\tthis.shadowCastersSet = new Set();\n\t\t\t\tthis._visibleInstances = new WeakMap();\n\t\t\t\tthis._lights = [];\n\t\t\t\tthis._lightsSet = new Set();\n\t\t\t\tthis._clusteredLightsSet = new Set();\n\t\t\t\tthis._splitLights = [\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tthis._splitLightsDirty = true;\n\t\t\t\tthis.requiresLightCube = false;\n\t\t\t\tthis.cameras = [];\n\t\t\t\tthis.camerasSet = new Set();\n\t\t\t\tthis.gsplatPlacements = [];\n\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\tthis._dirtyComposition = false;\n\t\t\t\tif (options.id !== undefined) {\n\t\t\t\t\t\tthis.id = options.id;\n\t\t\t\t\t\tlayerCounter = Math.max(this.id + 1, layerCounter);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.id = layerCounter++;\n\t\t\t\t}\n\t\t\t\tthis.name = options.name;\n\t\t\t\tthis._enabled = options.enabled ?? true;\n\t\t\t\tthis._refCounter = this._enabled ? 1 : 0;\n\t\t\t\tthis.opaqueSortMode = options.opaqueSortMode ?? SORTMODE_MATERIALMESH;\n\t\t\t\tthis.transparentSortMode = options.transparentSortMode ?? SORTMODE_BACK2FRONT;\n\t\t\t\tif (options.renderTarget) {\n\t\t\t\t\t\tthis.renderTarget = options.renderTarget;\n\t\t\t\t}\n\t\t\t\tthis._clearColorBuffer = !!options.clearColorBuffer;\n\t\t\t\tthis._clearDepthBuffer = !!options.clearDepthBuffer;\n\t\t\t\tthis._clearStencilBuffer = !!options.clearStencilBuffer;\n\t\t\t\tthis.onEnable = options.onEnable;\n\t\t\t\tthis.onDisable = options.onDisable;\n\t\t\t\tif (this._enabled && this.onEnable) {\n\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t}\n\t\t\t\tthis.customSortCallback = null;\n\t\t\t\tthis.customCalculateSortValues = null;\n\t\t\t\tthis._lightHash = 0;\n\t\t\t\tthis._lightHashDirty = false;\n\t\t\t\tthis._lightIdHash = 0;\n\t\t\t\tthis._lightIdHashDirty = false;\n\t\t\t\tthis._shaderVersion = -1;\n\t\t}\n\t\tset enabled(val) {\n\t\t\t\tif (val !== this._enabled) {\n\t\t\t\t\t\tthis._dirtyComposition = true;\n\t\t\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\t\t\tthis._enabled = val;\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\t\tthis.incrementCounter();\n\t\t\t\t\t\t\t\tif (this.onEnable) this.onEnable();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.decrementCounter();\n\t\t\t\t\t\t\t\tif (this.onDisable) this.onDisable();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tset clearColorBuffer(val) {\n\t\t\t\tthis._clearColorBuffer = val;\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\tget clearColorBuffer() {\n\t\t\t\treturn this._clearColorBuffer;\n\t\t}\n\t\tset clearDepthBuffer(val) {\n\t\t\t\tthis._clearDepthBuffer = val;\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\tget clearDepthBuffer() {\n\t\t\t\treturn this._clearDepthBuffer;\n\t\t}\n\t\tset clearStencilBuffer(val) {\n\t\t\t\tthis._clearStencilBuffer = val;\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\tget clearStencilBuffer() {\n\t\t\t\treturn this._clearStencilBuffer;\n\t\t}\n\t\tget hasClusteredLights() {\n\t\t\t\treturn this._clusteredLightsSet.size > 0;\n\t\t}\n\t\tget clusteredLightsSet() {\n\t\t\t\treturn this._clusteredLightsSet;\n\t\t}\n\t\tincrementCounter() {\n\t\t\t\tif (this._refCounter === 0) {\n\t\t\t\t\t\tthis._enabled = true;\n\t\t\t\t\t\tif (this.onEnable) this.onEnable();\n\t\t\t\t}\n\t\t\t\tthis._refCounter++;\n\t\t}\n\t\tdecrementCounter() {\n\t\t\t\tif (this._refCounter === 1) {\n\t\t\t\t\t\tthis._enabled = false;\n\t\t\t\t\t\tif (this.onDisable) this.onDisable();\n\t\t\t\t} else if (this._refCounter === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._refCounter--;\n\t\t}\n\t\taddGSplatPlacement(placement) {\n\t\t\t\tif (!this.gsplatPlacements.includes(placement)) {\n\t\t\t\t\t\tthis.gsplatPlacements.push(placement);\n\t\t\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tremoveGSplatPlacement(placement) {\n\t\t\t\tconst index = this.gsplatPlacements.indexOf(placement);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tthis.gsplatPlacements.splice(index, 1);\n\t\t\t\t\t\tthis.gsplatPlacementsDirty = true;\n\t\t\t\t}\n\t\t}\n\t\taddMeshInstances(meshInstances, skipShadowCasters) {\n\t\t\t\tconst destMeshInstances = this.meshInstances;\n\t\t\t\tconst destMeshInstancesSet = this.meshInstancesSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (!destMeshInstancesSet.has(mi)) {\n\t\t\t\t\t\t\t\tdestMeshInstances.push(mi);\n\t\t\t\t\t\t\t\tdestMeshInstancesSet.add(mi);\n\t\t\t\t\t\t\t\t_tempMaterials.add(mi.material);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!skipShadowCasters) {\n\t\t\t\t\t\tthis.addShadowCasters(meshInstances);\n\t\t\t\t}\n\t\t\t\tif (_tempMaterials.size > 0) {\n\t\t\t\t\t\tconst sceneShaderVer = this._shaderVersion;\n\t\t\t\t\t\t_tempMaterials.forEach((mat)=>{\n\t\t\t\t\t\t\t\tif (sceneShaderVer >= 0 && mat._shaderVersion !== sceneShaderVer) {\n\t\t\t\t\t\t\t\t\t\tif (mat.getShaderVariant !== Material.prototype.getShaderVariant) {\n\t\t\t\t\t\t\t\t\t\t\t\tmat.clearVariants();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmat._shaderVersion = sceneShaderVer;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_tempMaterials.clear();\n\t\t\t\t}\n\t\t}\n\t\tremoveMeshInstances(meshInstances, skipShadowCasters) {\n\t\t\t\tconst destMeshInstances = this.meshInstances;\n\t\t\t\tconst destMeshInstancesSet = this.meshInstancesSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (destMeshInstancesSet.has(mi)) {\n\t\t\t\t\t\t\t\tdestMeshInstancesSet.delete(mi);\n\t\t\t\t\t\t\t\tconst j = destMeshInstances.indexOf(mi);\n\t\t\t\t\t\t\t\tif (j >= 0) {\n\t\t\t\t\t\t\t\t\t\tdestMeshInstances.splice(j, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!skipShadowCasters) {\n\t\t\t\t\t\tthis.removeShadowCasters(meshInstances);\n\t\t\t\t}\n\t\t}\n\t\taddShadowCasters(meshInstances) {\n\t\t\t\tconst shadowCasters = this.shadowCasters;\n\t\t\t\tconst shadowCastersSet = this.shadowCastersSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (mi.castShadow && !shadowCastersSet.has(mi)) {\n\t\t\t\t\t\t\t\tshadowCastersSet.add(mi);\n\t\t\t\t\t\t\t\tshadowCasters.push(mi);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveShadowCasters(meshInstances) {\n\t\t\t\tconst shadowCasters = this.shadowCasters;\n\t\t\t\tconst shadowCastersSet = this.shadowCastersSet;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tconst mi = meshInstances[i];\n\t\t\t\t\t\tif (shadowCastersSet.has(mi)) {\n\t\t\t\t\t\t\t\tshadowCastersSet.delete(mi);\n\t\t\t\t\t\t\t\tconst j = shadowCasters.indexOf(mi);\n\t\t\t\t\t\t\t\tif (j >= 0) {\n\t\t\t\t\t\t\t\t\t\tshadowCasters.splice(j, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tclearMeshInstances(skipShadowCasters = false) {\n\t\t\t\tthis.meshInstances.length = 0;\n\t\t\t\tthis.meshInstancesSet.clear();\n\t\t\t\tif (!skipShadowCasters) {\n\t\t\t\t\t\tthis.shadowCasters.length = 0;\n\t\t\t\t\t\tthis.shadowCastersSet.clear();\n\t\t\t\t}\n\t\t}\n\t\tmarkLightsDirty() {\n\t\t\t\tthis._lightHashDirty = true;\n\t\t\t\tthis._lightIdHashDirty = true;\n\t\t\t\tthis._splitLightsDirty = true;\n\t\t}\n\t\thasLight(light) {\n\t\t\t\treturn this._lightsSet.has(light);\n\t\t}\n\t\taddLight(light) {\n\t\t\t\tconst l = light.light;\n\t\t\t\tif (!this._lightsSet.has(l)) {\n\t\t\t\t\t\tthis._lightsSet.add(l);\n\t\t\t\t\t\tthis._lights.push(l);\n\t\t\t\t\t\tthis.markLightsDirty();\n\t\t\t\t}\n\t\t\t\tif (l.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis._clusteredLightsSet.add(l);\n\t\t\t\t}\n\t\t}\n\t\tremoveLight(light) {\n\t\t\t\tconst l = light.light;\n\t\t\t\tif (this._lightsSet.has(l)) {\n\t\t\t\t\t\tthis._lightsSet.delete(l);\n\t\t\t\t\t\tthis._lights.splice(this._lights.indexOf(l), 1);\n\t\t\t\t\t\tthis.markLightsDirty();\n\t\t\t\t}\n\t\t\t\tif (l.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis._clusteredLightsSet.delete(l);\n\t\t\t\t}\n\t\t}\n\t\tclearLights() {\n\t\t\t\tthis._lightsSet.forEach((light)=>light.removeLayer(this));\n\t\t\t\tthis._lightsSet.clear();\n\t\t\t\tthis._clusteredLightsSet.clear();\n\t\t\t\tthis._lights.length = 0;\n\t\t\t\tthis.markLightsDirty();\n\t\t}\n\t\tget splitLights() {\n\t\t\t\tif (this._splitLightsDirty) {\n\t\t\t\t\t\tthis._splitLightsDirty = false;\n\t\t\t\t\t\tconst splitLights = this._splitLights;\n\t\t\t\t\t\tfor(let i = 0; i < splitLights.length; i++){\n\t\t\t\t\t\t\t\tsplitLights[i].length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst lights = this._lights;\n\t\t\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\t\t\tif (light.enabled) {\n\t\t\t\t\t\t\t\t\t\tsplitLights[light._type].push(light);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < splitLights.length; i++){\n\t\t\t\t\t\t\t\tsplitLights[i].sort((a, b)=>a.key - b.key);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._splitLights;\n\t\t}\n\t\tevaluateLightHash(localLights, directionalLights, useIds) {\n\t\t\t\tlet hash = 0;\n\t\t\t\tconst lights = this._lights;\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst isLocalLight = lights[i].type !== LIGHTTYPE_DIRECTIONAL;\n\t\t\t\t\t\tif (localLights && isLocalLight || directionalLights && !isLocalLight) {\n\t\t\t\t\t\t\t\tlightKeys.push(useIds ? lights[i].id : lights[i].key);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lightKeys.length > 0) {\n\t\t\t\t\t\tlightKeys.sort();\n\t\t\t\t\t\thash = hash32Fnv1a(lightKeys);\n\t\t\t\t\t\tlightKeys.length = 0;\n\t\t\t\t}\n\t\t\t\treturn hash;\n\t\t}\n\t\tgetLightHash(isClustered) {\n\t\t\t\tif (this._lightHashDirty) {\n\t\t\t\t\t\tthis._lightHashDirty = false;\n\t\t\t\t\t\tthis._lightHash = this.evaluateLightHash(!isClustered, true, false);\n\t\t\t\t}\n\t\t\t\treturn this._lightHash;\n\t\t}\n\t\tgetLightIdHash() {\n\t\t\t\tif (this._lightIdHashDirty) {\n\t\t\t\t\t\tthis._lightIdHashDirty = false;\n\t\t\t\t\t\tthis._lightIdHash = this.evaluateLightHash(true, false, true);\n\t\t\t\t}\n\t\t\t\treturn this._lightIdHash;\n\t\t}\n\t\taddCamera(camera) {\n\t\t\t\tif (!this.camerasSet.has(camera.camera)) {\n\t\t\t\t\t\tthis.camerasSet.add(camera.camera);\n\t\t\t\t\t\tthis.cameras.push(camera);\n\t\t\t\t\t\tthis._dirtyComposition = true;\n\t\t\t\t}\n\t\t}\n\t\tremoveCamera(camera) {\n\t\t\t\tif (this.camerasSet.has(camera.camera)) {\n\t\t\t\t\t\tthis.camerasSet.delete(camera.camera);\n\t\t\t\t\t\tconst index = this.cameras.indexOf(camera);\n\t\t\t\t\t\tthis.cameras.splice(index, 1);\n\t\t\t\t\t\tthis._dirtyComposition = true;\n\t\t\t\t}\n\t\t}\n\t\tclearCameras() {\n\t\t\t\tthis.cameras.length = 0;\n\t\t\t\tthis.camerasSet.clear();\n\t\t\t\tthis._dirtyComposition = true;\n\t\t}\n\t\t_calculateSortDistances(drawCalls, camPos, camFwd) {\n\t\t\t\tconst count = drawCalls.length;\n\t\t\t\tconst { x: px, y: py, z: pz } = camPos;\n\t\t\t\tconst { x: fx, y: fy, z: fz } = camFwd;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst drawCall = drawCalls[i];\n\t\t\t\t\t\tlet zDist;\n\t\t\t\t\t\tif (drawCall.calculateSortDistance) {\n\t\t\t\t\t\t\t\tzDist = drawCall.calculateSortDistance(drawCall, camPos, camFwd);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst meshPos = drawCall.aabb.center;\n\t\t\t\t\t\t\t\tzDist = (meshPos.x - px) * fx + (meshPos.y - py) * fy + (meshPos.z - pz) * fz;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst bucket = drawCall._drawBucket * 1e9;\n\t\t\t\t\t\tdrawCall._sortKeyDynamic = bucket + zDist;\n\t\t\t\t}\n\t\t}\n\t\tgetCulledInstances(camera) {\n\t\t\t\tlet instances = this._visibleInstances.get(camera);\n\t\t\t\tif (!instances) {\n\t\t\t\t\t\tinstances = new CulledInstances();\n\t\t\t\t\t\tthis._visibleInstances.set(camera, instances);\n\t\t\t\t}\n\t\t\t\treturn instances;\n\t\t}\n\t\tsortVisible(camera, transparent) {\n\t\t\t\tconst sortMode = transparent ? this.transparentSortMode : this.opaqueSortMode;\n\t\t\t\tif (sortMode === SORTMODE_NONE) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst culledInstances = this.getCulledInstances(camera);\n\t\t\t\tconst instances = transparent ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\tconst cameraNode = camera.node;\n\t\t\t\tif (sortMode === SORTMODE_CUSTOM) {\n\t\t\t\t\t\tconst sortPos = cameraNode.getPosition();\n\t\t\t\t\t\tconst sortDir = cameraNode.forward;\n\t\t\t\t\t\tif (this.customCalculateSortValues) {\n\t\t\t\t\t\t\t\tthis.customCalculateSortValues(instances, instances.length, sortPos, sortDir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.customSortCallback) {\n\t\t\t\t\t\t\t\tinstances.sort(this.customSortCallback);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (sortMode === SORTMODE_BACK2FRONT || sortMode === SORTMODE_FRONT2BACK) {\n\t\t\t\t\t\t\t\tconst sortPos = cameraNode.getPosition();\n\t\t\t\t\t\t\t\tconst sortDir = cameraNode.forward;\n\t\t\t\t\t\t\t\tthis._calculateSortDistances(instances, sortPos, sortDir);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinstances.sort(sortCallbacks[sortMode]);\n\t\t\t\t}\n\t\t}\n}\n\nconst cmpPriority = (a, b)=>a.priority - b.priority;\nconst sortPriority = (arr)=>arr.sort(cmpPriority);\n\nclass LayerComposition extends EventHandler {\n\t\tconstructor(name = 'Untitled'){\n\t\t\t\tsuper(), this.layerList = [], this.layerIdMap = new Map(), this.layerNameMap = new Map(), this.layerOpaqueIndexMap = new Map(), this.layerTransparentIndexMap = new Map(), this.subLayerList = [], this.subLayerEnabled = [], this.cameras = [], this.camerasSet = new Set(), this._renderActions = [], this._dirty = false;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis._opaqueOrder = {};\n\t\t\t\tthis._transparentOrder = {};\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyRenderActions();\n\t\t}\n\t\tdestroyRenderActions() {\n\t\t\t\tthis._renderActions.forEach((ra)=>ra.destroy());\n\t\t\t\tthis._renderActions.length = 0;\n\t\t}\n\t\tmarkDirty() {\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\t_update() {\n\t\t\t\tconst len = this.layerList.length;\n\t\t\t\tif (!this._dirty) {\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tif (this.layerList[i]._dirtyComposition) {\n\t\t\t\t\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._dirty) {\n\t\t\t\t\t\tthis._dirty = false;\n\t\t\t\t\t\tthis.cameras.length = 0;\n\t\t\t\t\t\tthis.camerasSet.clear();\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst layer = this.layerList[i];\n\t\t\t\t\t\t\t\tlayer._dirtyComposition = false;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < layer.cameras.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst cameraComponent = layer.cameras[j];\n\t\t\t\t\t\t\t\t\t\tif (!this.camerasSet.has(cameraComponent.camera)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.camerasSet.add(cameraComponent.camera);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.cameras.push(cameraComponent);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.cameras.length > 1) {\n\t\t\t\t\t\t\t\tsortPriority(this.cameras);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet renderActionCount = 0;\n\t\t\t\t\t\tthis.destroyRenderActions();\n\t\t\t\t\t\tfor(let i = 0; i < this.cameras.length; i++){\n\t\t\t\t\t\t\t\tconst camera = this.cameras[i];\n\t\t\t\t\t\t\t\tif (camera.camera.renderPasses.length > 0) {\n\t\t\t\t\t\t\t\t\t\tthis.addDummyRenderAction(renderActionCount, camera);\n\t\t\t\t\t\t\t\t\t\trenderActionCount++;\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet cameraFirstRenderAction = true;\n\t\t\t\t\t\t\t\tconst cameraFirstRenderActionIndex = renderActionCount;\n\t\t\t\t\t\t\t\tlet lastRenderAction = null;\n\t\t\t\t\t\t\t\tlet postProcessMarked = false;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < len; j++){\n\t\t\t\t\t\t\t\t\t\tconst layer = this.layerList[j];\n\t\t\t\t\t\t\t\t\t\tconst isLayerEnabled = layer.enabled && this.subLayerEnabled[j];\n\t\t\t\t\t\t\t\t\t\tif (isLayerEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer.cameras.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (camera.layers.indexOf(layer.id) >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!postProcessMarked && layer.id === camera.disablePostEffectsLayer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostProcessMarked = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (lastRenderAction) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlastRenderAction.triggerPostprocess = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst isTransparent = this.subLayerList[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlastRenderAction = this.addRenderAction(renderActionCount, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderActionCount++;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraFirstRenderAction = false;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (cameraFirstRenderActionIndex < renderActionCount) {\n\t\t\t\t\t\t\t\t\t\tlastRenderAction.lastCameraUse = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!postProcessMarked && lastRenderAction) {\n\t\t\t\t\t\t\t\t\t\tlastRenderAction.triggerPostprocess = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (camera.renderTarget && camera.postEffectsEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.propagateRenderTarget(cameraFirstRenderActionIndex - 1, camera);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._logRenderActions();\n\t\t\t\t}\n\t\t}\n\t\tgetNextRenderAction(renderActionIndex) {\n\t\t\t\tconst renderAction = new RenderAction();\n\t\t\t\tthis._renderActions.push(renderAction);\n\t\t\t\treturn renderAction;\n\t\t}\n\t\taddDummyRenderAction(renderActionIndex, camera) {\n\t\t\t\tconst renderAction = this.getNextRenderAction(renderActionIndex);\n\t\t\t\trenderAction.camera = camera;\n\t\t\t\trenderAction.useCameraPasses = true;\n\t\t}\n\t\taddRenderAction(renderActionIndex, layer, isTransparent, camera, cameraFirstRenderAction, postProcessMarked) {\n\t\t\t\tlet rt = layer.id !== LAYERID_DEPTH ? camera.renderTarget : null;\n\t\t\t\tlet used = false;\n\t\t\t\tconst renderActions = this._renderActions;\n\t\t\t\tfor(let i = renderActionIndex - 1; i >= 0; i--){\n\t\t\t\t\t\tif (renderActions[i].camera === camera && renderActions[i].renderTarget === rt) {\n\t\t\t\t\t\t\t\tused = true;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (postProcessMarked && camera.postEffectsEnabled) {\n\t\t\t\t\t\trt = null;\n\t\t\t\t}\n\t\t\t\tconst renderAction = this.getNextRenderAction(renderActionIndex);\n\t\t\t\trenderAction.triggerPostprocess = false;\n\t\t\t\trenderAction.layer = layer;\n\t\t\t\trenderAction.transparent = isTransparent;\n\t\t\t\trenderAction.camera = camera;\n\t\t\t\trenderAction.renderTarget = rt;\n\t\t\t\trenderAction.firstCameraUse = cameraFirstRenderAction;\n\t\t\t\trenderAction.lastCameraUse = false;\n\t\t\t\tconst needsCameraClear = cameraFirstRenderAction || !used;\n\t\t\t\tconst needsLayerClear = layer.clearColorBuffer || layer.clearDepthBuffer || layer.clearStencilBuffer;\n\t\t\t\tif (needsCameraClear || needsLayerClear) {\n\t\t\t\t\t\trenderAction.setupClears(needsCameraClear ? camera : undefined, layer);\n\t\t\t\t}\n\t\t\t\treturn renderAction;\n\t\t}\n\t\tpropagateRenderTarget(startIndex, fromCamera) {\n\t\t\t\tfor(let a = startIndex; a >= 0; a--){\n\t\t\t\t\t\tconst ra = this._renderActions[a];\n\t\t\t\t\t\tconst layer = ra.layer;\n\t\t\t\t\t\tif (ra.renderTarget && layer.id !== LAYERID_DEPTH) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (layer.id === LAYERID_DEPTH) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ra.useCameraPasses) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst thisCamera = ra?.camera.camera;\n\t\t\t\t\t\tif (thisCamera) {\n\t\t\t\t\t\t\t\tif (!fromCamera.camera.rect.equals(thisCamera.rect) || !fromCamera.camera.scissorRect.equals(thisCamera.scissorRect)) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tra.renderTarget = fromCamera.renderTarget;\n\t\t\t\t}\n\t\t}\n\t\t_logRenderActions() {}\n\t\t_isLayerAdded(layer) {\n\t\t\t\tconst found = this.layerIdMap.get(layer.id) === layer;\n\t\t\t\treturn found;\n\t\t}\n\t\t_isSublayerAdded(layer, transparent) {\n\t\t\t\tconst map = transparent ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap;\n\t\t\t\tif (map.get(layer) !== undefined) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tpush(layer) {\n\t\t\t\tif (this._isLayerAdded(layer)) return;\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1;\n\t\t\t\tthis._transparentOrder[layer.id] = this.subLayerList.push(true) - 1;\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tinsert(layer, index) {\n\t\t\t\tif (this._isLayerAdded(layer)) return;\n\t\t\t\tthis.layerList.splice(index, 0, layer, layer);\n\t\t\t\tthis.subLayerList.splice(index, 0, false, true);\n\t\t\t\tconst count = this.layerList.length;\n\t\t\t\tthis._updateOpaqueOrder(index, count - 1);\n\t\t\t\tthis._updateTransparentOrder(index, count - 1);\n\t\t\t\tthis.subLayerEnabled.splice(index, 0, true, true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tremove(layer) {\n\t\t\t\tlet id = this.layerList.indexOf(layer);\n\t\t\t\tdelete this._opaqueOrder[id];\n\t\t\t\tdelete this._transparentOrder[id];\n\t\t\t\twhile(id >= 0){\n\t\t\t\t\t\tthis.layerList.splice(id, 1);\n\t\t\t\t\t\tthis.subLayerList.splice(id, 1);\n\t\t\t\t\t\tthis.subLayerEnabled.splice(id, 1);\n\t\t\t\t\t\tid = this.layerList.indexOf(layer);\n\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t}\n\t\t\t\tconst count = this.layerList.length;\n\t\t\t\tthis._updateOpaqueOrder(0, count - 1);\n\t\t\t\tthis._updateTransparentOrder(0, count - 1);\n\t\t\t\tthis._updateLayerMaps();\n\t\t}\n\t\tpushOpaque(layer) {\n\t\t\t\tif (this._isSublayerAdded(layer, false)) return;\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis._opaqueOrder[layer.id] = this.subLayerList.push(false) - 1;\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tinsertOpaque(layer, index) {\n\t\t\t\tif (this._isSublayerAdded(layer, false)) return;\n\t\t\t\tthis.layerList.splice(index, 0, layer);\n\t\t\t\tthis.subLayerList.splice(index, 0, false);\n\t\t\t\tconst count = this.subLayerList.length;\n\t\t\t\tthis._updateOpaqueOrder(index, count - 1);\n\t\t\t\tthis.subLayerEnabled.splice(index, 0, true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tremoveOpaque(layer) {\n\t\t\t\tfor(let i = 0, len = this.layerList.length; i < len; i++){\n\t\t\t\t\t\tif (this.layerList[i] === layer && !this.subLayerList[i]) {\n\t\t\t\t\t\t\t\tthis.layerList.splice(i, 1);\n\t\t\t\t\t\t\t\tthis.subLayerList.splice(i, 1);\n\t\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t\t\tthis._updateOpaqueOrder(i, len - 1);\n\t\t\t\t\t\t\t\tthis.subLayerEnabled.splice(i, 1);\n\t\t\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\t\t\tif (this.layerList.indexOf(layer) < 0) {\n\t\t\t\t\t\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updateLayerMaps();\n\t\t}\n\t\tpushTransparent(layer) {\n\t\t\t\tif (this._isSublayerAdded(layer, true)) return;\n\t\t\t\tthis.layerList.push(layer);\n\t\t\t\tthis._transparentOrder[layer.id] = this.subLayerList.push(true) - 1;\n\t\t\t\tthis.subLayerEnabled.push(true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tinsertTransparent(layer, index) {\n\t\t\t\tif (this._isSublayerAdded(layer, true)) return;\n\t\t\t\tthis.layerList.splice(index, 0, layer);\n\t\t\t\tthis.subLayerList.splice(index, 0, true);\n\t\t\t\tconst count = this.subLayerList.length;\n\t\t\t\tthis._updateTransparentOrder(index, count - 1);\n\t\t\t\tthis.subLayerEnabled.splice(index, 0, true);\n\t\t\t\tthis._updateLayerMaps();\n\t\t\t\tthis._dirty = true;\n\t\t\t\tthis.fire('add', layer);\n\t\t}\n\t\tremoveTransparent(layer) {\n\t\t\t\tfor(let i = 0, len = this.layerList.length; i < len; i++){\n\t\t\t\t\t\tif (this.layerList[i] === layer && this.subLayerList[i]) {\n\t\t\t\t\t\t\t\tthis.layerList.splice(i, 1);\n\t\t\t\t\t\t\t\tthis.subLayerList.splice(i, 1);\n\t\t\t\t\t\t\t\tlen--;\n\t\t\t\t\t\t\t\tthis._updateTransparentOrder(i, len - 1);\n\t\t\t\t\t\t\t\tthis.subLayerEnabled.splice(i, 1);\n\t\t\t\t\t\t\t\tthis._dirty = true;\n\t\t\t\t\t\t\t\tif (this.layerList.indexOf(layer) < 0) {\n\t\t\t\t\t\t\t\t\t\tthis.fire('remove', layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updateLayerMaps();\n\t\t}\n\t\tgetOpaqueIndex(layer) {\n\t\t\t\treturn this.layerOpaqueIndexMap.get(layer) ?? -1;\n\t\t}\n\t\tgetTransparentIndex(layer) {\n\t\t\t\treturn this.layerTransparentIndexMap.get(layer) ?? -1;\n\t\t}\n\t\tisEnabled(layer, transparent) {\n\t\t\t\tif (layer.enabled) {\n\t\t\t\t\t\tconst index = transparent ? this.getTransparentIndex(layer) : this.getOpaqueIndex(layer);\n\t\t\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\t\t\treturn this.subLayerEnabled[index];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_updateLayerMaps() {\n\t\t\t\tthis.layerIdMap.clear();\n\t\t\t\tthis.layerNameMap.clear();\n\t\t\t\tthis.layerOpaqueIndexMap.clear();\n\t\t\t\tthis.layerTransparentIndexMap.clear();\n\t\t\t\tfor(let i = 0; i < this.layerList.length; i++){\n\t\t\t\t\t\tconst layer = this.layerList[i];\n\t\t\t\t\t\tthis.layerIdMap.set(layer.id, layer);\n\t\t\t\t\t\tthis.layerNameMap.set(layer.name, layer);\n\t\t\t\t\t\tconst subLayerIndexMap = this.subLayerList[i] ? this.layerTransparentIndexMap : this.layerOpaqueIndexMap;\n\t\t\t\t\t\tsubLayerIndexMap.set(layer, i);\n\t\t\t\t}\n\t\t}\n\t\tgetLayerById(id) {\n\t\t\t\treturn this.layerIdMap.get(id) ?? null;\n\t\t}\n\t\tgetLayerByName(name) {\n\t\t\t\treturn this.layerNameMap.get(name) ?? null;\n\t\t}\n\t\t_updateOpaqueOrder(startIndex, endIndex) {\n\t\t\t\tfor(let i = startIndex; i <= endIndex; i++){\n\t\t\t\t\t\tif (this.subLayerList[i] === false) {\n\t\t\t\t\t\t\t\tthis._opaqueOrder[this.layerList[i].id] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateTransparentOrder(startIndex, endIndex) {\n\t\t\t\tfor(let i = startIndex; i <= endIndex; i++){\n\t\t\t\t\t\tif (this.subLayerList[i] === true) {\n\t\t\t\t\t\t\t\tthis._transparentOrder[this.layerList[i].id] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_sortLayersDescending(layersA, layersB, order) {\n\t\t\t\tlet topLayerA = -1;\n\t\t\t\tlet topLayerB = -1;\n\t\t\t\tfor(let i = 0, len = layersA.length; i < len; i++){\n\t\t\t\t\t\tconst id = layersA[i];\n\t\t\t\t\t\tif (order.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\ttopLayerA = Math.max(topLayerA, order[id]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = layersB.length; i < len; i++){\n\t\t\t\t\t\tconst id = layersB[i];\n\t\t\t\t\t\tif (order.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\ttopLayerB = Math.max(topLayerB, order[id]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (topLayerA === -1 && topLayerB !== -1) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (topLayerB === -1 && topLayerA !== -1) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\treturn topLayerB - topLayerA;\n\t\t}\n\t\tsortTransparentLayers(layersA, layersB) {\n\t\t\t\treturn this._sortLayersDescending(layersA, layersB, this._transparentOrder);\n\t\t}\n\t\tsortOpaqueLayers(layersA, layersB) {\n\t\t\t\treturn this._sortLayersDescending(layersA, layersB, this._opaqueOrder);\n\t\t}\n}\n\nconst tmpVec = new Vec3();\nconst tmpBiases = {\n\t\tbias: 0,\n\t\tnormalBias: 0\n};\nconst tmpColor = new Color();\nconst chanId = {\n\t\tr: 0,\n\t\tg: 1,\n\t\tb: 2,\n\t\ta: 3\n};\nconst lightTypes = {\n\t\t'directional': LIGHTTYPE_DIRECTIONAL,\n\t\t'omni': LIGHTTYPE_OMNI,\n\t\t'point': LIGHTTYPE_OMNI,\n\t\t'spot': LIGHTTYPE_SPOT\n};\nconst directionalCascades = [\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 1, 1)\n\t\t],\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0, 0.5, 0.5, 0.5)\n\t\t],\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0, 0.5, 0.5, 0.5),\n\t\t\t\tnew Vec4(0.5, 0, 0.5, 0.5)\n\t\t],\n\t\t[\n\t\t\t\tnew Vec4(0, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0, 0.5, 0.5, 0.5),\n\t\t\t\tnew Vec4(0.5, 0, 0.5, 0.5),\n\t\t\t\tnew Vec4(0.5, 0.5, 0.5, 0.5)\n\t\t]\n];\nconst channelMap = {\n\t\t'rrr': 0b0001,\n\t\t'ggg': 0b0010,\n\t\t'bbb': 0b0100,\n\t\t'aaa': 0b1000,\n\t\t'rgb': 0b0111\n};\nlet id$2 = 0;\nclass LightRenderData {\n\t\tconstructor(camera, face, light){\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.shadowCamera = ShadowRenderer.createShadowCamera(light._shadowType, light._type, face);\n\t\t\t\tthis.shadowMatrix = new Mat4();\n\t\t\t\tthis.shadowViewport = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis.shadowScissor = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis.projectionCompensation = 0;\n\t\t\t\tthis.face = face;\n\t\t\t\tthis.visibleCasters = [];\n\t\t\t\tthis.viewBindGroups = [];\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tget shadowBuffer() {\n\t\t\t\tconst rt = this.shadowCamera.renderTarget;\n\t\t\t\tif (rt) {\n\t\t\t\t\t\treturn this.light._isPcf ? rt.depthBuffer : rt.colorBuffer;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n}\nclass Light {\n\t\tconstructor(graphicsDevice, clusteredLighting){\n\t\t\t\tthis.layers = new Set();\n\t\t\t\tthis.shadowDepthState = DepthState.DEFAULT.clone();\n\t\t\t\tthis.clusteredFlags = 0;\n\t\t\t\tthis.clusteredData = new Uint32Array(3);\n\t\t\t\tthis.clusteredData16 = new Uint16Array(this.clusteredData.buffer);\n\t\t\t\tthis._evtDeviceRestored = null;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.clusteredLighting = clusteredLighting;\n\t\t\t\tthis.id = id$2++;\n\t\t\t\tthis._evtDeviceRestored = graphicsDevice.on('devicerestored', this.onDeviceRestored, this);\n\t\t\t\tthis._type = LIGHTTYPE_DIRECTIONAL;\n\t\t\t\tthis._color = new Color(0.8, 0.8, 0.8);\n\t\t\t\tthis._intensity = 1;\n\t\t\t\tthis._affectSpecularity = true;\n\t\t\t\tthis._luminance = 0;\n\t\t\t\tthis._castShadows = false;\n\t\t\t\tthis._enabled = false;\n\t\t\t\tthis._mask = MASK_AFFECT_DYNAMIC;\n\t\t\t\tthis.isStatic = false;\n\t\t\t\tthis.key = 0;\n\t\t\t\tthis.bakeDir = true;\n\t\t\t\tthis.bakeNumSamples = 1;\n\t\t\t\tthis.bakeArea = 0;\n\t\t\t\tthis.attenuationStart = 10;\n\t\t\t\tthis.attenuationEnd = 10;\n\t\t\t\tthis._falloffMode = LIGHTFALLOFF_LINEAR;\n\t\t\t\tthis._shadowType = SHADOW_PCF3_32F;\n\t\t\t\tthis._vsmBlurSize = 11;\n\t\t\t\tthis.vsmBlurMode = BLUR_GAUSSIAN;\n\t\t\t\tthis.vsmBias = 0.01 * 0.25;\n\t\t\t\tthis._cookie = null;\n\t\t\t\tthis.cookieIntensity = 1;\n\t\t\t\tthis._cookieFalloff = true;\n\t\t\t\tthis._cookieChannel = 'rgb';\n\t\t\t\tthis._cookieTransform = null;\n\t\t\t\tthis._cookieTransformUniform = new Float32Array(4);\n\t\t\t\tthis._cookieOffset = null;\n\t\t\t\tthis._cookieOffsetUniform = new Float32Array(2);\n\t\t\t\tthis._cookieTransformSet = false;\n\t\t\t\tthis._cookieOffsetSet = false;\n\t\t\t\tthis._innerConeAngle = 40;\n\t\t\t\tthis._outerConeAngle = 45;\n\t\t\t\tthis.cascades = null;\n\t\t\t\tthis._shadowMatrixPalette = null;\n\t\t\t\tthis._shadowCascadeDistances = null;\n\t\t\t\tthis.numCascades = 1;\n\t\t\t\tthis._cascadeBlend = 0;\n\t\t\t\tthis.cascadeDistribution = 0.5;\n\t\t\t\tthis._shape = LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tthis._colorLinear = new Float32Array(3);\n\t\t\t\tthis._updateLinearColor();\n\t\t\t\tthis._position = new Vec3(0, 0, 0);\n\t\t\t\tthis._direction = new Vec3(0, 0, 0);\n\t\t\t\tthis._innerConeAngleCos = Math.cos(this._innerConeAngle * Math.PI / 180);\n\t\t\t\tthis._updateOuterAngle(this._outerConeAngle);\n\t\t\t\tthis._usePhysicalUnits = undefined;\n\t\t\t\tthis._shadowMap = null;\n\t\t\t\tthis._shadowRenderParams = [];\n\t\t\t\tthis._shadowCameraParams = [];\n\t\t\t\tthis.shadowDistance = 40;\n\t\t\t\tthis._shadowResolution = 1024;\n\t\t\t\tthis._shadowBias = -5e-4;\n\t\t\t\tthis._shadowIntensity = 1.0;\n\t\t\t\tthis._normalOffsetBias = 0.0;\n\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_REALTIME;\n\t\t\t\tthis.shadowUpdateOverrides = null;\n\t\t\t\tthis._isVsm = false;\n\t\t\t\tthis._isPcf = true;\n\t\t\t\tthis._softShadowParams = new Float32Array(4);\n\t\t\t\tthis.shadowSamples = 16;\n\t\t\t\tthis.shadowBlockerSamples = 16;\n\t\t\t\tthis.penumbraSize = 1.0;\n\t\t\t\tthis.penumbraFalloff = 1.0;\n\t\t\t\tthis._cookieMatrix = null;\n\t\t\t\tthis._atlasViewport = null;\n\t\t\t\tthis.atlasViewportAllocated = false;\n\t\t\t\tthis.atlasVersion = 0;\n\t\t\t\tthis.atlasSlotIndex = 0;\n\t\t\t\tthis.atlasSlotUpdated = false;\n\t\t\t\tthis._node = null;\n\t\t\t\tthis._renderData = [];\n\t\t\t\tthis.visibleThisFrame = false;\n\t\t\t\tthis.maxScreenSize = 0;\n\t\t\t\tthis._updateShadowBias();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._evtDeviceRestored?.off();\n\t\t\t\tthis._evtDeviceRestored = null;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis.releaseRenderData();\n\t\t\t\tthis._renderData = null;\n\t\t}\n\t\tonDeviceRestored() {\n\t\t\t\tif (this.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t}\n\t\t}\n\t\treleaseRenderData() {\n\t\t\t\tif (this._renderData) {\n\t\t\t\t\t\tfor(let i = 0; i < this._renderData.length; i++){\n\t\t\t\t\t\t\t\tthis._renderData[i].destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._renderData.length = 0;\n\t\t\t\t}\n\t\t}\n\t\taddLayer(layer) {\n\t\t\t\tthis.layers.add(layer);\n\t\t}\n\t\tremoveLayer(layer) {\n\t\t\t\tthis.layers.delete(layer);\n\t\t}\n\t\tset shadowSamples(value) {\n\t\t\t\tthis._softShadowParams[0] = value;\n\t\t}\n\t\tget shadowSamples() {\n\t\t\t\treturn this._softShadowParams[0];\n\t\t}\n\t\tset shadowBlockerSamples(value) {\n\t\t\t\tthis._softShadowParams[1] = value;\n\t\t}\n\t\tget shadowBlockerSamples() {\n\t\t\t\treturn this._softShadowParams[1];\n\t\t}\n\t\tset shadowBias(value) {\n\t\t\t\tif (this._shadowBias !== value) {\n\t\t\t\t\t\tthis._shadowBias = value;\n\t\t\t\t\t\tthis._updateShadowBias();\n\t\t\t\t}\n\t\t}\n\t\tget shadowBias() {\n\t\t\t\treturn this._shadowBias;\n\t\t}\n\t\tset numCascades(value) {\n\t\t\t\tif (!this.cascades || this.numCascades !== value) {\n\t\t\t\t\t\tthis.cascades = directionalCascades[value - 1];\n\t\t\t\t\t\tthis._shadowMatrixPalette = new Float32Array(4 * 16);\n\t\t\t\t\t\tthis._shadowCascadeDistances = new Float32Array(4);\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget numCascades() {\n\t\t\t\treturn this.cascades.length;\n\t\t}\n\t\tset cascadeBlend(value) {\n\t\t\t\tif (this._cascadeBlend !== value) {\n\t\t\t\t\t\tthis._cascadeBlend = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget cascadeBlend() {\n\t\t\t\treturn this._cascadeBlend;\n\t\t}\n\t\tset shadowMap(shadowMap) {\n\t\t\t\tif (this._shadowMap !== shadowMap) {\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t\t\tthis._shadowMap = shadowMap;\n\t\t\t\t}\n\t\t}\n\t\tget shadowMap() {\n\t\t\t\treturn this._shadowMap;\n\t\t}\n\t\tset mask(value) {\n\t\t\t\tif (this._mask !== value) {\n\t\t\t\t\t\tthis._mask = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t\t\tthis.updateClusteredFlags();\n\t\t\t\t}\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tget numShadowFaces() {\n\t\t\t\tconst type = this._type;\n\t\t\t\tif (type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\treturn this.numCascades;\n\t\t\t\t} else if (type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\treturn 6;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._type = value;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis._updateShadowBias();\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t\t\tconst stype = this._shadowType;\n\t\t\t\tthis._shadowType = null;\n\t\t\t\tthis.shadowUpdateOverrides = null;\n\t\t\t\tthis.shadowType = stype;\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset shape(value) {\n\t\t\t\tif (this._shape === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shape = value;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t\t\tconst stype = this._shadowType;\n\t\t\t\tthis._shadowType = null;\n\t\t\t\tthis.shadowType = stype;\n\t\t}\n\t\tget shape() {\n\t\t\t\treturn this._shape;\n\t\t}\n\t\tset usePhysicalUnits(value) {\n\t\t\t\tif (this._usePhysicalUnits !== value) {\n\t\t\t\t\t\tthis._usePhysicalUnits = value;\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget usePhysicalUnits() {\n\t\t\t\treturn this._usePhysicalUnits;\n\t\t}\n\t\tset shadowType(value) {\n\t\t\t\tif (this._shadowType === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet shadowInfo = shadowTypeInfo.get(value);\n\t\t\t\tif (!shadowInfo) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (value === SHADOW_PCSS_32F && (!device.textureFloatRenderable || !device.textureFloatFilterable)) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tif (this._type === LIGHTTYPE_OMNI && value !== SHADOW_PCF1_32F && value !== SHADOW_PCF3_32F && value !== SHADOW_PCF1_16F && value !== SHADOW_PCF3_16F && value !== SHADOW_PCSS_32F) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tif (value === SHADOW_VSM_32F && (!device.textureFloatRenderable || !device.textureFloatFilterable)) {\n\t\t\t\t\t\tvalue = SHADOW_VSM_16F;\n\t\t\t\t}\n\t\t\t\tif (value === SHADOW_VSM_16F && !device.textureHalfFloatRenderable) {\n\t\t\t\t\t\tvalue = SHADOW_PCF3_32F;\n\t\t\t\t}\n\t\t\t\tshadowInfo = shadowTypeInfo.get(value);\n\t\t\t\tthis._isVsm = shadowInfo?.vsm ?? false;\n\t\t\t\tthis._isPcf = shadowInfo?.pcf ?? false;\n\t\t\t\tthis._shadowType = value;\n\t\t\t\tthis._destroyShadowMap();\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget shadowType() {\n\t\t\t\treturn this._shadowType;\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tif (this._enabled !== value) {\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t\t\tthis.layersDirty();\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows !== value) {\n\t\t\t\t\t\tthis._castShadows = value;\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t\t\tthis.layersDirty();\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows && this._mask !== MASK_BAKE && this._mask !== 0;\n\t\t}\n\t\tset shadowIntensity(value) {\n\t\t\t\tif (this._shadowIntensity !== value) {\n\t\t\t\t\t\tthis._shadowIntensity = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget shadowIntensity() {\n\t\t\t\treturn this._shadowIntensity;\n\t\t}\n\t\tget bakeShadows() {\n\t\t\t\treturn this._castShadows && this._mask === MASK_BAKE;\n\t\t}\n\t\tset shadowResolution(value) {\n\t\t\t\tif (this._shadowResolution !== value) {\n\t\t\t\t\t\tif (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\t\t\tvalue = Math.min(value, this.device.maxCubeMapSize);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = Math.min(value, this.device.maxTextureSize);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._shadowResolution = value;\n\t\t\t\t\t\tthis._destroyShadowMap();\n\t\t\t\t}\n\t\t}\n\t\tget shadowResolution() {\n\t\t\t\treturn this._shadowResolution;\n\t\t}\n\t\tset vsmBlurSize(value) {\n\t\t\t\tif (this._vsmBlurSize === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value % 2 === 0) value++;\n\t\t\t\tthis._vsmBlurSize = value;\n\t\t}\n\t\tget vsmBlurSize() {\n\t\t\t\treturn this._vsmBlurSize;\n\t\t}\n\t\tset normalOffsetBias(value) {\n\t\t\t\tif (this._normalOffsetBias !== value) {\n\t\t\t\t\t\tconst dirty = !this._normalOffsetBias && value || this._normalOffsetBias && !value;\n\t\t\t\t\t\tthis._normalOffsetBias = value;\n\t\t\t\t\t\tif (dirty) {\n\t\t\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget normalOffsetBias() {\n\t\t\t\treturn this._normalOffsetBias;\n\t\t}\n\t\tset falloffMode(value) {\n\t\t\t\tif (this._falloffMode === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._falloffMode = value;\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t}\n\t\tget falloffMode() {\n\t\t\t\treturn this._falloffMode;\n\t\t}\n\t\tset innerConeAngle(value) {\n\t\t\t\tif (this._innerConeAngle === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._innerConeAngle = value;\n\t\t\t\tthis._innerConeAngleCos = Math.cos(value * Math.PI / 180);\n\t\t\t\tthis.updateClusterData(false, true);\n\t\t\t\tif (this._usePhysicalUnits) {\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget innerConeAngle() {\n\t\t\t\treturn this._innerConeAngle;\n\t\t}\n\t\tset outerConeAngle(value) {\n\t\t\t\tif (this._outerConeAngle === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._outerConeAngle = value;\n\t\t\t\tthis._updateOuterAngle(value);\n\t\t\t\tif (this._usePhysicalUnits) {\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget outerConeAngle() {\n\t\t\t\treturn this._outerConeAngle;\n\t\t}\n\t\tset penumbraSize(value) {\n\t\t\t\tthis._penumbraSize = value;\n\t\t\t\tthis._softShadowParams[2] = value;\n\t\t}\n\t\tget penumbraSize() {\n\t\t\t\treturn this._penumbraSize;\n\t\t}\n\t\tset penumbraFalloff(value) {\n\t\t\t\tthis._softShadowParams[3] = value;\n\t\t}\n\t\tget penumbraFalloff() {\n\t\t\t\treturn this._softShadowParams[3];\n\t\t}\n\t\t_updateOuterAngle(angle) {\n\t\t\t\tconst radAngle = angle * Math.PI / 180;\n\t\t\t\tthis._outerConeAngleCos = Math.cos(radAngle);\n\t\t\t\tthis._outerConeAngleSin = Math.sin(radAngle);\n\t\t\t\tthis.updateClusterData(false, true);\n\t\t}\n\t\tset intensity(value) {\n\t\t\t\tif (this._intensity !== value) {\n\t\t\t\t\t\tthis._intensity = value;\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this._intensity;\n\t\t}\n\t\tset affectSpecularity(value) {\n\t\t\t\tif (this._type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tthis._affectSpecularity = value;\n\t\t\t\t\t\tthis.updateKey();\n\t\t\t\t}\n\t\t}\n\t\tget affectSpecularity() {\n\t\t\t\treturn this._affectSpecularity;\n\t\t}\n\t\tset luminance(value) {\n\t\t\t\tif (this._luminance !== value) {\n\t\t\t\t\t\tthis._luminance = value;\n\t\t\t\t\t\tthis._updateLinearColor();\n\t\t\t\t}\n\t\t}\n\t\tget luminance() {\n\t\t\t\treturn this._luminance;\n\t\t}\n\t\tget cookieMatrix() {\n\t\t\t\tif (!this._cookieMatrix) {\n\t\t\t\t\t\tthis._cookieMatrix = new Mat4();\n\t\t\t\t}\n\t\t\t\treturn this._cookieMatrix;\n\t\t}\n\t\tget atlasViewport() {\n\t\t\t\tif (!this._atlasViewport) {\n\t\t\t\t\t\tthis._atlasViewport = new Vec4(0, 0, 1, 1);\n\t\t\t\t}\n\t\t\t\treturn this._atlasViewport;\n\t\t}\n\t\tset cookie(value) {\n\t\t\t\tif (this._cookie === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._cookie = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookie() {\n\t\t\t\treturn this._cookie;\n\t\t}\n\t\tset cookieFalloff(value) {\n\t\t\t\tif (this._cookieFalloff === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._cookieFalloff = value;\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookieFalloff() {\n\t\t\t\treturn this._cookieFalloff;\n\t\t}\n\t\tset cookieChannel(value) {\n\t\t\t\tif (this._cookieChannel === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value.length < 3) {\n\t\t\t\t\t\tconst chr = value.charAt(value.length - 1);\n\t\t\t\t\t\tconst addLen = 3 - value.length;\n\t\t\t\t\t\tfor(let i = 0; i < addLen; i++){\n\t\t\t\t\t\t\t\tvalue += chr;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cookieChannel = value;\n\t\t\t\tthis.updateKey();\n\t\t\t\tthis.updateClusteredFlags();\n\t\t}\n\t\tget cookieChannel() {\n\t\t\t\treturn this._cookieChannel;\n\t\t}\n\t\tset cookieTransform(value) {\n\t\t\t\tif (this._cookieTransform === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._cookieTransform = value;\n\t\t\t\tthis._cookieTransformSet = !!value;\n\t\t\t\tif (value && !this._cookieOffset) {\n\t\t\t\t\t\tthis.cookieOffset = new Vec2();\n\t\t\t\t\t\tthis._cookieOffsetSet = false;\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookieTransform() {\n\t\t\t\treturn this._cookieTransform;\n\t\t}\n\t\tset cookieOffset(value) {\n\t\t\t\tif (this._cookieOffset === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst xformNew = !!(this._cookieTransformSet || value);\n\t\t\t\tif (xformNew && !value && this._cookieOffset) {\n\t\t\t\t\t\tthis._cookieOffset.set(0, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._cookieOffset = value;\n\t\t\t\t}\n\t\t\t\tthis._cookieOffsetSet = !!value;\n\t\t\t\tif (value && !this._cookieTransform) {\n\t\t\t\t\t\tthis.cookieTransform = new Vec4(1, 1, 0, 0);\n\t\t\t\t\t\tthis._cookieTransformSet = false;\n\t\t\t\t}\n\t\t\t\tthis.updateKey();\n\t\t}\n\t\tget cookieOffset() {\n\t\t\t\treturn this._cookieOffset;\n\t\t}\n\t\tbeginFrame() {\n\t\t\t\tthis.visibleThisFrame = this._type === LIGHTTYPE_DIRECTIONAL && this._enabled;\n\t\t\t\tthis.maxScreenSize = 0;\n\t\t\t\tthis.atlasViewportAllocated = false;\n\t\t\t\tthis.atlasSlotUpdated = false;\n\t\t}\n\t\t_destroyShadowMap() {\n\t\t\t\tthis.releaseRenderData();\n\t\t\t\tif (this._shadowMap) {\n\t\t\t\t\t\tif (!this._shadowMap.cached) {\n\t\t\t\t\t\t\t\tthis._shadowMap.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._shadowMap = null;\n\t\t\t\t}\n\t\t\t\tif (this.shadowUpdateMode === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_THISFRAME;\n\t\t\t\t}\n\t\t\t\tif (this.shadowUpdateOverrides) {\n\t\t\t\t\t\tfor(let i = 0; i < this.shadowUpdateOverrides.length; i++){\n\t\t\t\t\t\t\t\tif (this.shadowUpdateOverrides[i] === SHADOWUPDATE_NONE) {\n\t\t\t\t\t\t\t\t\t\tthis.shadowUpdateOverrides[i] = SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetRenderData(camera, face) {\n\t\t\t\tfor(let i = 0; i < this._renderData.length; i++){\n\t\t\t\t\t\tconst current = this._renderData[i];\n\t\t\t\t\t\tif (current.camera === camera && current.face === face) {\n\t\t\t\t\t\t\t\treturn current;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst rd = new LightRenderData(camera, face, this);\n\t\t\t\tthis._renderData.push(rd);\n\t\t\t\treturn rd;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst clone = new Light(this.device, this.clusteredLighting);\n\t\t\t\tclone.type = this._type;\n\t\t\t\tclone.setColor(this._color);\n\t\t\t\tclone.intensity = this._intensity;\n\t\t\t\tclone.affectSpecularity = this._affectSpecularity;\n\t\t\t\tclone.luminance = this._luminance;\n\t\t\t\tclone.castShadows = this.castShadows;\n\t\t\t\tclone._enabled = this._enabled;\n\t\t\t\tclone.attenuationStart = this.attenuationStart;\n\t\t\t\tclone.attenuationEnd = this.attenuationEnd;\n\t\t\t\tclone.falloffMode = this._falloffMode;\n\t\t\t\tclone.shadowType = this._shadowType;\n\t\t\t\tclone.vsmBlurSize = this._vsmBlurSize;\n\t\t\t\tclone.vsmBlurMode = this.vsmBlurMode;\n\t\t\t\tclone.vsmBias = this.vsmBias;\n\t\t\t\tclone.shadowUpdateMode = this.shadowUpdateMode;\n\t\t\t\tclone.mask = this.mask;\n\t\t\t\tif (this.shadowUpdateOverrides) {\n\t\t\t\t\t\tclone.shadowUpdateOverrides = this.shadowUpdateOverrides.slice();\n\t\t\t\t}\n\t\t\t\tclone.innerConeAngle = this._innerConeAngle;\n\t\t\t\tclone.outerConeAngle = this._outerConeAngle;\n\t\t\t\tclone.numCascades = this.numCascades;\n\t\t\t\tclone.cascadeDistribution = this.cascadeDistribution;\n\t\t\t\tclone.cascadeBlend = this._cascadeBlend;\n\t\t\t\tclone.shape = this._shape;\n\t\t\t\tclone.shadowDepthState.copy(this.shadowDepthState);\n\t\t\t\tclone.shadowBias = this.shadowBias;\n\t\t\t\tclone.normalOffsetBias = this._normalOffsetBias;\n\t\t\t\tclone.shadowResolution = this._shadowResolution;\n\t\t\t\tclone.shadowDistance = this.shadowDistance;\n\t\t\t\tclone.shadowIntensity = this.shadowIntensity;\n\t\t\t\tclone.shadowSamples = this.shadowSamples;\n\t\t\t\tclone.shadowBlockerSamples = this.shadowBlockerSamples;\n\t\t\t\tclone.penumbraSize = this.penumbraSize;\n\t\t\t\tclone.penumbraFalloff = this.penumbraFalloff;\n\t\t\t\treturn clone;\n\t\t}\n\t\tstatic getLightUnitConversion(type, outerAngle = Math.PI / 4, innerAngle = 0) {\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tconst falloffEnd = Math.cos(outerAngle);\n\t\t\t\t\t\t\t\t\t\tconst falloffStart = Math.cos(innerAngle);\n\t\t\t\t\t\t\t\t\t\treturn 2 * Math.PI * (1 - falloffStart + (falloffStart - falloffEnd) / 2.0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\t\t\t\t\treturn 4 * Math.PI;\n\t\t\t\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t}\n\t\t_getUniformBiasValues(lightRenderData) {\n\t\t\t\tconst farClip = lightRenderData.shadowCamera._farClip;\n\t\t\t\tswitch(this._type){\n\t\t\t\t\t\tcase LIGHTTYPE_OMNI:\n\t\t\t\t\t\t\t\ttmpBiases.bias = this.shadowBias;\n\t\t\t\t\t\t\t\ttmpBiases.normalBias = this._normalOffsetBias;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_SPOT:\n\t\t\t\t\t\t\t\tif (this._isVsm) {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = -1e-5 * 20;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = this.shadowBias * 20;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmpBiases.normalBias = this._isVsm ? this.vsmBias / (this.attenuationEnd / 7.0) : this._normalOffsetBias;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase LIGHTTYPE_DIRECTIONAL:\n\t\t\t\t\t\t\t\tif (this._isVsm) {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = -1e-5 * 20;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttmpBiases.bias = this.shadowBias / farClip * 100;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmpBiases.normalBias = this._isVsm ? this.vsmBias / (farClip / 7.0) : this._normalOffsetBias;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\treturn tmpBiases;\n\t\t}\n\t\tgetColor() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tgetBoundingSphere(sphere) {\n\t\t\t\tif (this._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tconst size = this.attenuationEnd;\n\t\t\t\t\t\tconst angle = this._outerConeAngle;\n\t\t\t\t\t\tconst cosAngle = this._outerConeAngleCos;\n\t\t\t\t\t\tconst node = this._node;\n\t\t\t\t\t\ttmpVec.copy(node.up);\n\t\t\t\t\t\tif (angle > 45) {\n\t\t\t\t\t\t\t\tsphere.radius = size * this._outerConeAngleSin;\n\t\t\t\t\t\t\t\ttmpVec.mulScalar(-size * cosAngle);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsphere.radius = size / (2 * cosAngle);\n\t\t\t\t\t\t\t\ttmpVec.mulScalar(-sphere.radius);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsphere.center.add2(node.getPosition(), tmpVec);\n\t\t\t\t} else if (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tsphere.center = this._node.getPosition();\n\t\t\t\t\t\tsphere.radius = this.attenuationEnd;\n\t\t\t\t}\n\t\t}\n\t\tgetBoundingBox(box) {\n\t\t\t\tif (this._type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tconst range = this.attenuationEnd;\n\t\t\t\t\t\tconst angle = this._outerConeAngle;\n\t\t\t\t\t\tconst node = this._node;\n\t\t\t\t\t\tconst scl = Math.abs(Math.sin(angle * math.DEG_TO_RAD) * range);\n\t\t\t\t\t\tbox.center.set(0, -range * 0.5, 0);\n\t\t\t\t\t\tbox.halfExtents.set(scl, range * 0.5, scl);\n\t\t\t\t\t\tbox.setFromTransformedAabb(box, node.getWorldTransform(), true);\n\t\t\t\t} else if (this._type === LIGHTTYPE_OMNI) {\n\t\t\t\t\t\tbox.center.copy(this._node.getPosition());\n\t\t\t\t\t\tbox.halfExtents.set(this.attenuationEnd, this.attenuationEnd, this.attenuationEnd);\n\t\t\t\t}\n\t\t}\n\t\t_updateShadowBias() {\n\t\t\t\tif (this._type === LIGHTTYPE_OMNI && !this.clusteredLighting) {\n\t\t\t\t\t\tthis.shadowDepthState.depthBias = 0;\n\t\t\t\t\t\tthis.shadowDepthState.depthBiasSlope = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst bias = this.shadowBias * -1e3;\n\t\t\t\t\t\tthis.shadowDepthState.depthBias = bias;\n\t\t\t\t\t\tthis.shadowDepthState.depthBiasSlope = bias;\n\t\t\t\t}\n\t\t}\n\t\t_updateLinearColor() {\n\t\t\t\tlet intensity = this._intensity;\n\t\t\t\tif (this._usePhysicalUnits) {\n\t\t\t\t\t\tintensity = this._luminance / Light.getLightUnitConversion(this._type, this._outerConeAngle * math.DEG_TO_RAD, this._innerConeAngle * math.DEG_TO_RAD);\n\t\t\t\t}\n\t\t\t\tconst color = this._color;\n\t\t\t\tconst colorLinear = this._colorLinear;\n\t\t\t\tif (intensity >= 1) {\n\t\t\t\t\t\ttmpColor.linear(color).mulScalar(intensity);\n\t\t\t\t} else {\n\t\t\t\t\t\ttmpColor.copy(color).mulScalar(intensity).linear();\n\t\t\t\t}\n\t\t\t\tcolorLinear[0] = tmpColor.r;\n\t\t\t\tcolorLinear[1] = tmpColor.g;\n\t\t\t\tcolorLinear[2] = tmpColor.b;\n\t\t\t\tthis.updateClusterData(true);\n\t\t}\n\t\tsetColor() {\n\t\t\t\tif (arguments.length === 1) {\n\t\t\t\t\t\tthis._color.set(arguments[0].r, arguments[0].g, arguments[0].b);\n\t\t\t\t} else if (arguments.length === 3) {\n\t\t\t\t\t\tthis._color.set(arguments[0], arguments[1], arguments[2]);\n\t\t\t\t}\n\t\t\t\tthis._updateLinearColor();\n\t\t}\n\t\tlayersDirty() {\n\t\t\t\tthis.layers.forEach((layer)=>{\n\t\t\t\t\t\tif (layer.hasLight(this)) {\n\t\t\t\t\t\t\t\tlayer.markLightsDirty();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tupdateKey() {\n\t\t\t\tlet key = this._type << 29 | this._shadowType << 25 | this._falloffMode << 23 | (this._normalOffsetBias !== 0.0 ? 1 : 0) << 22 | (this._cookie ? 1 : 0) << 21 | (this._cookieFalloff ? 1 : 0) << 20 | chanId[this._cookieChannel.charAt(0)] << 18 | (this._cookieTransform ? 1 : 0) << 12 | this._shape << 10 | (this.numCascades > 0 ? 1 : 0) << 9 | (this._cascadeBlend > 0 ? 1 : 0) << 8 | (this.affectSpecularity ? 1 : 0) << 7 | this.mask << 6 | (this._castShadows ? 1 : 0) << 3;\n\t\t\t\tif (this._cookieChannel.length === 3) {\n\t\t\t\t\t\tkey |= chanId[this._cookieChannel.charAt(1)] << 16;\n\t\t\t\t\t\tkey |= chanId[this._cookieChannel.charAt(2)] << 14;\n\t\t\t\t}\n\t\t\t\tif (key !== this.key) {\n\t\t\t\t\t\tthis.layersDirty();\n\t\t\t\t}\n\t\t\t\tthis.key = key;\n\t\t}\n\t\tupdateClusteredFlags() {\n\t\t\t\tconst isDynamic = !!(this.mask & MASK_AFFECT_DYNAMIC);\n\t\t\t\tconst isLightmapped = !!(this.mask & MASK_AFFECT_LIGHTMAPPED);\n\t\t\t\tthis.clusteredFlags = (this.type === LIGHTTYPE_SPOT ? 1 : 0) << 30 | (this._shape & 0x3) << 28 | (this._falloffMode & 0x1) << 27 | (channelMap[this._cookieChannel] ?? 0) << 23 | (isDynamic ? 1 : 0) << 22 | (isLightmapped ? 1 : 0) << 21;\n\t\t}\n\t\tgetClusteredFlags(castShadows, useCookie) {\n\t\t\t\treturn this.clusteredFlags | ((castShadows ? Math.floor(this.shadowIntensity * 255) : 0) & 0xFF) << 0 | ((useCookie ? Math.floor(this.cookieIntensity * 255) : 0) & 0xFF) << 8;\n\t\t}\n\t\tupdateClusterData(updateColor, updateAngles) {\n\t\t\t\tconst { clusteredData16 } = this;\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tif (updateColor) {\n\t\t\t\t\t\tclusteredData16[0] = float2Half(math.clamp(this._colorLinear[0] / LIGHT_COLOR_DIVIDER, 0, 65504));\n\t\t\t\t\t\tclusteredData16[1] = float2Half(math.clamp(this._colorLinear[1] / LIGHT_COLOR_DIVIDER, 0, 65504));\n\t\t\t\t\t\tclusteredData16[2] = float2Half(math.clamp(this._colorLinear[2] / LIGHT_COLOR_DIVIDER, 0, 65504));\n\t\t\t\t}\n\t\t\t\tif (updateAngles) {\n\t\t\t\t\t\tclusteredData16[4] = float2Half(this._innerConeAngleCos);\n\t\t\t\t\t\tclusteredData16[5] = float2Half(this._outerConeAngleCos);\n\t\t\t\t}\n\t\t}\n}\n\nclass LightingParams {\n\t\tconstructor(supportsAreaLights, maxTextureSize, dirtyLightsFnc){\n\t\t\t\tthis._areaLightsEnabled = false;\n\t\t\t\tthis._cells = new Vec3(10, 3, 10);\n\t\t\t\tthis._maxLightsPerCell = 255;\n\t\t\t\tthis._shadowsEnabled = true;\n\t\t\t\tthis._shadowType = SHADOW_PCF3_32F;\n\t\t\t\tthis._shadowAtlasResolution = 2048;\n\t\t\t\tthis._cookiesEnabled = false;\n\t\t\t\tthis._cookieAtlasResolution = 2048;\n\t\t\t\tthis.atlasSplit = null;\n\t\t\t\tthis._supportsAreaLights = supportsAreaLights;\n\t\t\t\tthis._maxTextureSize = maxTextureSize;\n\t\t\t\tthis._dirtyLightsFnc = dirtyLightsFnc;\n\t\t}\n\t\tapplySettings(render) {\n\t\t\t\tthis.shadowsEnabled = render.lightingShadowsEnabled ?? this.shadowsEnabled;\n\t\t\t\tthis.cookiesEnabled = render.lightingCookiesEnabled ?? this.cookiesEnabled;\n\t\t\t\tthis.areaLightsEnabled = render.lightingAreaLightsEnabled ?? this.areaLightsEnabled;\n\t\t\t\tthis.shadowAtlasResolution = render.lightingShadowAtlasResolution ?? this.shadowAtlasResolution;\n\t\t\t\tthis.cookieAtlasResolution = render.lightingCookieAtlasResolution ?? this.cookieAtlasResolution;\n\t\t\t\tthis.maxLightsPerCell = render.lightingMaxLightsPerCell ?? this.maxLightsPerCell;\n\t\t\t\tthis.shadowType = render.lightingShadowType ?? this.shadowType;\n\t\t\t\tif (render.lightingCells) {\n\t\t\t\t\t\tthis.cells = new Vec3(render.lightingCells);\n\t\t\t\t}\n\t\t}\n\t\tset cells(value) {\n\t\t\t\tthis._cells.copy(value);\n\t\t}\n\t\tget cells() {\n\t\t\t\treturn this._cells;\n\t\t}\n\t\tset maxLightsPerCell(value) {\n\t\t\t\tthis._maxLightsPerCell = math.clamp(value, 1, 255);\n\t\t}\n\t\tget maxLightsPerCell() {\n\t\t\t\treturn this._maxLightsPerCell;\n\t\t}\n\t\tset cookieAtlasResolution(value) {\n\t\t\t\tthis._cookieAtlasResolution = math.clamp(value, 32, this._maxTextureSize);\n\t\t}\n\t\tget cookieAtlasResolution() {\n\t\t\t\treturn this._cookieAtlasResolution;\n\t\t}\n\t\tset shadowAtlasResolution(value) {\n\t\t\t\tthis._shadowAtlasResolution = math.clamp(value, 32, this._maxTextureSize);\n\t\t}\n\t\tget shadowAtlasResolution() {\n\t\t\t\treturn this._shadowAtlasResolution;\n\t\t}\n\t\tset shadowType(value) {\n\t\t\t\tif (this._shadowType !== value) {\n\t\t\t\t\t\tthis._shadowType = value;\n\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t}\n\t\t}\n\t\tget shadowType() {\n\t\t\t\treturn this._shadowType;\n\t\t}\n\t\tset cookiesEnabled(value) {\n\t\t\t\tif (this._cookiesEnabled !== value) {\n\t\t\t\t\t\tthis._cookiesEnabled = value;\n\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t}\n\t\t}\n\t\tget cookiesEnabled() {\n\t\t\t\treturn this._cookiesEnabled;\n\t\t}\n\t\tset areaLightsEnabled(value) {\n\t\t\t\tif (this._supportsAreaLights) {\n\t\t\t\t\t\tif (this._areaLightsEnabled !== value) {\n\t\t\t\t\t\t\t\tthis._areaLightsEnabled = value;\n\t\t\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget areaLightsEnabled() {\n\t\t\t\treturn this._areaLightsEnabled;\n\t\t}\n\t\tset shadowsEnabled(value) {\n\t\t\t\tif (this._shadowsEnabled !== value) {\n\t\t\t\t\t\tthis._shadowsEnabled = value;\n\t\t\t\t\t\tthis._dirtyLightsFnc();\n\t\t\t\t}\n\t\t}\n\t\tget shadowsEnabled() {\n\t\t\t\treturn this._shadowsEnabled;\n\t\t}\n}\n\nclass MorphInstance {\n\t\tconstructor(morph){\n\t\t\t\tthis.morph = morph;\n\t\t\t\tmorph.incRefCount();\n\t\t\t\tthis.device = morph.device;\n\t\t\t\tconst maxNumTargets = morph._targets.length;\n\t\t\t\tthis.shader = this._createShader(maxNumTargets);\n\t\t\t\tthis._weights = [];\n\t\t\t\tthis._weightMap = new Map();\n\t\t\t\tfor(let v = 0; v < morph._targets.length; v++){\n\t\t\t\t\t\tconst target = morph._targets[v];\n\t\t\t\t\t\tif (target.name) {\n\t\t\t\t\t\t\t\tthis._weightMap.set(target.name, v);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setWeight(v, target.defaultWeight);\n\t\t\t\t}\n\t\t\t\tthis._shaderMorphWeights = new Float32Array(maxNumTargets);\n\t\t\t\tthis._shaderMorphIndex = new Uint32Array(maxNumTargets);\n\t\t\t\tconst createRT = (name, textureVar)=>{\n\t\t\t\t\t\tthis[textureVar] = morph._createTexture(name, morph._renderTextureFormat);\n\t\t\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this[textureVar],\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (morph.morphPositions) {\n\t\t\t\t\t\tthis.rtPositions = createRT('MorphRTPos', 'texturePositions');\n\t\t\t\t}\n\t\t\t\tif (morph.morphNormals) {\n\t\t\t\t\t\tthis.rtNormals = createRT('MorphRTNrm', 'textureNormals');\n\t\t\t\t}\n\t\t\t\tthis._textureParams = new Float32Array([\n\t\t\t\t\t\tmorph.morphTextureWidth,\n\t\t\t\t\t\tmorph.morphTextureHeight\n\t\t\t\t]);\n\t\t\t\tconst halfSize = morph.aabb.halfExtents;\n\t\t\t\tthis._aabbSize = new Float32Array([\n\t\t\t\t\t\thalfSize.x * 4,\n\t\t\t\t\t\thalfSize.y * 4,\n\t\t\t\t\t\thalfSize.z * 4\n\t\t\t\t]);\n\t\t\t\tconst min = morph.aabb.getMin();\n\t\t\t\tthis._aabbMin = new Float32Array([\n\t\t\t\t\t\tmin.x * 2,\n\t\t\t\t\t\tmin.y * 2,\n\t\t\t\t\t\tmin.z * 2\n\t\t\t\t]);\n\t\t\t\tthis._aabbNrmSize = new Float32Array([\n\t\t\t\t\t\t2,\n\t\t\t\t\t\t2,\n\t\t\t\t\t\t2\n\t\t\t\t]);\n\t\t\t\tthis._aabbNrmMin = new Float32Array([\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1\n\t\t\t\t]);\n\t\t\t\tthis.aabbSizeId = this.device.scope.resolve('aabbSize');\n\t\t\t\tthis.aabbMinId = this.device.scope.resolve('aabbMin');\n\t\t\t\tthis.morphTextureId = this.device.scope.resolve('morphTexture');\n\t\t\t\tthis.morphFactor = this.device.scope.resolve('morphFactor[0]');\n\t\t\t\tthis.morphIndex = this.device.scope.resolve('morphIndex[0]');\n\t\t\t\tthis.countId = this.device.scope.resolve('count');\n\t\t\t\tthis.zeroTextures = false;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.shader = null;\n\t\t\t\tconst morph = this.morph;\n\t\t\t\tif (morph) {\n\t\t\t\t\t\tthis.morph = null;\n\t\t\t\t\t\tmorph.decRefCount();\n\t\t\t\t\t\tif (morph.refCount < 1) {\n\t\t\t\t\t\t\t\tmorph.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.rtPositions?.destroy();\n\t\t\t\tthis.rtPositions = null;\n\t\t\t\tthis.texturePositions?.destroy();\n\t\t\t\tthis.texturePositions = null;\n\t\t\t\tthis.rtNormals?.destroy();\n\t\t\t\tthis.rtNormals = null;\n\t\t\t\tthis.textureNormals?.destroy();\n\t\t\t\tthis.textureNormals = null;\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new MorphInstance(this.morph);\n\t\t}\n\t\t_getWeightIndex(key) {\n\t\t\t\tif (typeof key === 'string') {\n\t\t\t\t\t\tconst index = this._weightMap.get(key);\n\t\t\t\t\t\treturn index;\n\t\t\t\t}\n\t\t\t\treturn key;\n\t\t}\n\t\tgetWeight(key) {\n\t\t\t\tconst index = this._getWeightIndex(key);\n\t\t\t\treturn this._weights[index];\n\t\t}\n\t\tsetWeight(key, weight) {\n\t\t\t\tconst index = this._getWeightIndex(key);\n\t\t\t\tthis._weights[index] = weight;\n\t\t\t\tthis._dirty = true;\n\t\t}\n\t\t_createShader(maxCount) {\n\t\t\t\tconst defines = new Map();\n\t\t\t\tdefines.set('{MORPH_TEXTURE_MAX_COUNT}', maxCount);\n\t\t\t\tif (this.morph.intRenderFormat) defines.set('MORPH_INT', '');\n\t\t\t\tconst outputType = this.morph.intRenderFormat ? 'uvec4' : 'vec4';\n\t\t\t\treturn ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\tuniqueName: `TextureMorphShader_${maxCount}-${this.morph.intRenderFormat ? 'int' : 'float'}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'morphVS',\n\t\t\t\t\t\tfragmentChunk: 'morphPS',\n\t\t\t\t\t\tfragmentDefines: defines,\n\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\toutputType\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t}\n\t\t_updateTextureRenderTarget(renderTarget, activeCount, isPos) {\n\t\t\t\tconst { morph, device } = this;\n\t\t\t\tthis.setAabbUniforms(isPos);\n\t\t\t\tthis.morphTextureId.setValue(isPos ? morph.targetsTexturePositions : morph.targetsTextureNormals);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tthis.countId.setValue(activeCount);\n\t\t\t\tthis.morphFactor.setValue(this._shaderMorphWeights);\n\t\t\t\tthis.morphIndex.setValue(this._shaderMorphIndex);\n\t\t\t\tdrawQuadWithShader(device, renderTarget, this.shader);\n\t\t}\n\t\t_updateTextureMorph(activeCount) {\n\t\t\t\tthis.device;\n\t\t\t\tif (activeCount > 0 || !this.zeroTextures) {\n\t\t\t\t\t\tif (this.rtPositions) {\n\t\t\t\t\t\t\t\tthis._updateTextureRenderTarget(this.rtPositions, activeCount, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.rtNormals) {\n\t\t\t\t\t\t\t\tthis._updateTextureRenderTarget(this.rtNormals, activeCount, false);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.zeroTextures = activeCount === 0;\n\t\t\t\t}\n\t\t}\n\t\tsetAabbUniforms(isPos = true) {\n\t\t\t\tthis.aabbSizeId.setValue(isPos ? this._aabbSize : this._aabbNrmSize);\n\t\t\t\tthis.aabbMinId.setValue(isPos ? this._aabbMin : this._aabbNrmMin);\n\t\t}\n\t\tprepareRendering(device) {\n\t\t\t\tthis.setAabbUniforms();\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis._dirty = false;\n\t\t\t\tconst targets = this.morph._targets;\n\t\t\t\tconst epsilon = 0.00001;\n\t\t\t\tconst weights = this._shaderMorphWeights;\n\t\t\t\tconst indices = this._shaderMorphIndex;\n\t\t\t\tlet activeCount = 0;\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\tif (Math.abs(this.getWeight(i)) > epsilon) {\n\t\t\t\t\t\t\t\tweights[activeCount] = this.getWeight(i);\n\t\t\t\t\t\t\t\tindices[activeCount] = i;\n\t\t\t\t\t\t\t\tactiveCount++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updateTextureMorph(activeCount);\n\t\t}\n}\n\nclass Model {\n\t\tconstructor(){\n\t\t\t\tthis.graph = null;\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.skinInstances = [];\n\t\t\t\tthis.morphInstances = [];\n\t\t\t\tthis.cameras = [];\n\t\t\t\tthis.lights = [];\n\t\t\t\tthis._shadersVersion = 0;\n\t\t\t\tthis._immutable = false;\n\t\t}\n\t\tgetGraph() {\n\t\t\t\treturn this.graph;\n\t\t}\n\t\tsetGraph(graph) {\n\t\t\t\tthis.graph = graph;\n\t\t}\n\t\tgetCameras() {\n\t\t\t\treturn this.cameras;\n\t\t}\n\t\tsetCameras(cameras) {\n\t\t\t\tthis.cameras = cameras;\n\t\t}\n\t\tgetLights() {\n\t\t\t\treturn this.lights;\n\t\t}\n\t\tsetLights(lights) {\n\t\t\t\tthis.lights = lights;\n\t\t}\n\t\tgetMaterials() {\n\t\t\t\tconst materials = [];\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\t\t\t\tif (materials.indexOf(meshInstance.material) === -1) {\n\t\t\t\t\t\t\t\tmaterials.push(meshInstance.material);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn materials;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst srcNodes = [];\n\t\t\t\tconst cloneNodes = [];\n\t\t\t\tconst _duplicate = function(node) {\n\t\t\t\t\t\tconst newNode = node.clone();\n\t\t\t\t\t\tsrcNodes.push(node);\n\t\t\t\t\t\tcloneNodes.push(newNode);\n\t\t\t\t\t\tfor(let idx = 0; idx < node._children.length; idx++){\n\t\t\t\t\t\t\t\tnewNode.addChild(_duplicate(node._children[idx]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn newNode;\n\t\t\t\t};\n\t\t\t\tconst cloneGraph = _duplicate(this.graph);\n\t\t\t\tconst cloneMeshInstances = [];\n\t\t\t\tconst cloneSkinInstances = [];\n\t\t\t\tconst cloneMorphInstances = [];\n\t\t\t\tfor(let i = 0; i < this.skinInstances.length; i++){\n\t\t\t\t\t\tconst skin = this.skinInstances[i].skin;\n\t\t\t\t\t\tconst cloneSkinInstance = new SkinInstance(skin);\n\t\t\t\t\t\tconst bones = [];\n\t\t\t\t\t\tfor(let j = 0; j < skin.boneNames.length; j++){\n\t\t\t\t\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\t\t\t\t\tconst bone = cloneGraph.findByName(boneName);\n\t\t\t\t\t\t\t\tbones.push(bone);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcloneSkinInstance.bones = bones;\n\t\t\t\t\t\tcloneSkinInstances.push(cloneSkinInstance);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.morphInstances.length; i++){\n\t\t\t\t\t\tconst morph = this.morphInstances[i].morph;\n\t\t\t\t\t\tconst cloneMorphInstance = new MorphInstance(morph);\n\t\t\t\t\t\tcloneMorphInstances.push(cloneMorphInstance);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this.meshInstances[i];\n\t\t\t\t\t\tconst nodeIndex = srcNodes.indexOf(meshInstance.node);\n\t\t\t\t\t\tconst cloneMeshInstance = new MeshInstance(meshInstance.mesh, meshInstance.material, cloneNodes[nodeIndex]);\n\t\t\t\t\t\tif (meshInstance.skinInstance) {\n\t\t\t\t\t\t\t\tconst skinInstanceIndex = this.skinInstances.indexOf(meshInstance.skinInstance);\n\t\t\t\t\t\t\t\tcloneMeshInstance.skinInstance = cloneSkinInstances[skinInstanceIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (meshInstance.morphInstance) {\n\t\t\t\t\t\t\t\tconst morphInstanceIndex = this.morphInstances.indexOf(meshInstance.morphInstance);\n\t\t\t\t\t\t\t\tcloneMeshInstance.morphInstance = cloneMorphInstances[morphInstanceIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcloneMeshInstances.push(cloneMeshInstance);\n\t\t\t\t}\n\t\t\t\tconst clone = new Model();\n\t\t\t\tclone.graph = cloneGraph;\n\t\t\t\tclone.meshInstances = cloneMeshInstances;\n\t\t\t\tclone.skinInstances = cloneSkinInstances;\n\t\t\t\tclone.morphInstances = cloneMorphInstances;\n\t\t\t\tclone.getGraph().syncHierarchy();\n\t\t\t\treturn clone;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst meshInstances = this.meshInstances;\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.meshInstances.length = 0;\n\t\t}\n\t\tgenerateWireframe() {\n\t\t\t\tMeshInstance._prepareRenderStyleForArray(this.meshInstances, RENDERSTYLE_WIREFRAME);\n\t\t}\n}\n\nclass Morph extends RefCountedObject {\n\t\tconstructor(targets, graphicsDevice, { preferHighPrecision = false } = {}){\n\t\t\t\tsuper();\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tconst device = graphicsDevice;\n\t\t\t\tthis.preferHighPrecision = preferHighPrecision;\n\t\t\t\tthis._targets = targets.slice();\n\t\t\t\tconst renderableHalf = device.textureHalfFloatRenderable ? PIXELFORMAT_RGBA16F : undefined;\n\t\t\t\tconst renderableFloat = device.textureFloatRenderable ? PIXELFORMAT_RGBA32F : undefined;\n\t\t\t\tthis._renderTextureFormat = this.preferHighPrecision ? renderableFloat ?? renderableHalf : renderableHalf ?? renderableFloat;\n\t\t\t\tthis._renderTextureFormat = this._renderTextureFormat ?? PIXELFORMAT_RGBA16U;\n\t\t\t\tthis.intRenderFormat = isIntegerPixelFormat(this._renderTextureFormat);\n\t\t\t\tthis._textureFormat = this.preferHighPrecision ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA16F;\n\t\t\t\tthis._init();\n\t\t\t\tthis._updateMorphFlags();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.vertexBufferIds?.destroy();\n\t\t\t\tthis.vertexBufferIds = null;\n\t\t\t\tthis.targetsTexturePositions?.destroy();\n\t\t\t\tthis.targetsTexturePositions = null;\n\t\t\t\tthis.targetsTextureNormals?.destroy();\n\t\t\t\tthis.targetsTextureNormals = null;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (!this._aabb) {\n\t\t\t\t\t\tconst min = new Vec3();\n\t\t\t\t\t\tconst max = new Vec3();\n\t\t\t\t\t\tfor(let i = 0; i < this._targets.length; i++){\n\t\t\t\t\t\t\t\tconst targetAabb = this._targets[i].aabb;\n\t\t\t\t\t\t\t\tmin.min(targetAabb.getMin());\n\t\t\t\t\t\t\t\tmax.max(targetAabb.getMax());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\t\t\tthis._aabb.setMinMax(min, max);\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tget morphPositions() {\n\t\t\t\treturn this._morphPositions;\n\t\t}\n\t\tget morphNormals() {\n\t\t\t\treturn this._morphNormals;\n\t\t}\n\t\t_init() {\n\t\t\t\tthis._initTextureBased();\n\t\t\t\tfor(let i = 0; i < this._targets.length; i++){\n\t\t\t\t\t\tthis._targets[i]._postInit();\n\t\t\t\t}\n\t\t}\n\t\t_findSparseSet(deltaArrays, ids, usedDataIndices) {\n\t\t\t\tlet freeIndex = 1;\n\t\t\t\tconst dataCount = deltaArrays[0].length;\n\t\t\t\tfor(let v = 0; v < dataCount; v += 3){\n\t\t\t\t\t\tlet vertexUsed = false;\n\t\t\t\t\t\tfor(let i = 0; i < deltaArrays.length; i++){\n\t\t\t\t\t\t\t\tconst data = deltaArrays[i];\n\t\t\t\t\t\t\t\tif (data[v] !== 0 || data[v + 1] !== 0 || data[v + 2] !== 0) {\n\t\t\t\t\t\t\t\t\t\tvertexUsed = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (vertexUsed) {\n\t\t\t\t\t\t\t\tids.push(freeIndex);\n\t\t\t\t\t\t\t\tusedDataIndices.push(v / 3);\n\t\t\t\t\t\t\t\tfreeIndex++;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tids.push(0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn freeIndex;\n\t\t}\n\t\t_initTextureBased() {\n\t\t\t\tconst deltaArrays = [], deltaInfos = [];\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\tconst target = targets[i];\n\t\t\t\t\t\tif (target.options.deltaPositions) {\n\t\t\t\t\t\t\t\tdeltaArrays.push(target.options.deltaPositions);\n\t\t\t\t\t\t\t\tdeltaInfos.push(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target.options.deltaNormals) {\n\t\t\t\t\t\t\t\tdeltaArrays.push(target.options.deltaNormals);\n\t\t\t\t\t\t\t\tdeltaInfos.push(false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst ids = [], usedDataIndices = [];\n\t\t\t\tconst freeIndex = this._findSparseSet(deltaArrays, ids, usedDataIndices);\n\t\t\t\tconst maxTextureSize = this.device.maxTextureSize;\n\t\t\t\tlet morphTextureWidth = Math.ceil(Math.sqrt(freeIndex));\n\t\t\t\tmorphTextureWidth = Math.min(morphTextureWidth, maxTextureSize);\n\t\t\t\tconst morphTextureHeight = Math.ceil(freeIndex / morphTextureWidth);\n\t\t\t\tif (morphTextureHeight > maxTextureSize) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.morphTextureWidth = morphTextureWidth;\n\t\t\t\tthis.morphTextureHeight = morphTextureHeight;\n\t\t\t\tlet halfFloat = false;\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tif (this._textureFormat === PIXELFORMAT_RGBA16F) {\n\t\t\t\t\t\thalfFloat = true;\n\t\t\t\t}\n\t\t\t\tconst texturesDataPositions = [];\n\t\t\t\tconst texturesDataNormals = [];\n\t\t\t\tconst textureDataSize = morphTextureWidth * morphTextureHeight * 4;\n\t\t\t\tfor(let i = 0; i < deltaArrays.length; i++){\n\t\t\t\t\t\tconst data = deltaArrays[i];\n\t\t\t\t\t\tconst textureData = this._textureFormat === PIXELFORMAT_RGBA16F ? new Uint16Array(textureDataSize) : new Float32Array(textureDataSize);\n\t\t\t\t\t\t(deltaInfos[i] ? texturesDataPositions : texturesDataNormals).push(textureData);\n\t\t\t\t\t\tif (halfFloat) {\n\t\t\t\t\t\t\t\tfor(let v = 0; v < usedDataIndices.length; v++){\n\t\t\t\t\t\t\t\t\t\tconst index = usedDataIndices[v] * 3;\n\t\t\t\t\t\t\t\t\t\tconst dstIndex = v * 4 + 4;\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex] = float2Half(data[index]);\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 1] = float2Half(data[index + 1]);\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 2] = float2Half(data[index + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let v = 0; v < usedDataIndices.length; v++){\n\t\t\t\t\t\t\t\t\t\tconst index = usedDataIndices[v] * 3;\n\t\t\t\t\t\t\t\t\t\tconst dstIndex = v * 4 + 4;\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex] = data[index];\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 1] = data[index + 1];\n\t\t\t\t\t\t\t\t\t\ttextureData[dstIndex + 2] = data[index + 2];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (texturesDataPositions.length > 0) {\n\t\t\t\t\t\tthis.targetsTexturePositions = this._createTexture('MorphPositionsTexture', this._textureFormat, targets.length, [\n\t\t\t\t\t\t\t\ttexturesDataPositions\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (texturesDataNormals.length > 0) {\n\t\t\t\t\t\tthis.targetsTextureNormals = this._createTexture('MorphNormalsTexture', this._textureFormat, targets.length, [\n\t\t\t\t\t\t\t\ttexturesDataNormals\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tconst formatDesc = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR15,\n\t\t\t\t\t\t\t\tcomponents: 1,\n\t\t\t\t\t\t\t\ttype: TYPE_UINT32,\n\t\t\t\t\t\t\t\tasInt: true\n\t\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t\tthis.vertexBufferIds = new VertexBuffer(this.device, new VertexFormat(this.device, formatDesc, ids.length), ids.length, {\n\t\t\t\t\t\tdata: new Uint32Array(ids)\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t}\n\t\tget targets() {\n\t\t\t\treturn this._targets;\n\t\t}\n\t\t_updateMorphFlags() {\n\t\t\t\tthis._morphPositions = false;\n\t\t\t\tthis._morphNormals = false;\n\t\t\t\tfor(let i = 0; i < this._targets.length; i++){\n\t\t\t\t\t\tconst target = this._targets[i];\n\t\t\t\t\t\tif (target.morphPositions) {\n\t\t\t\t\t\t\t\tthis._morphPositions = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (target.morphNormals) {\n\t\t\t\t\t\t\t\tthis._morphNormals = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_createTexture(name, format, arrayLength, levels) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tlevels: levels,\n\t\t\t\t\t\tarrayLength: arrayLength,\n\t\t\t\t\t\twidth: this.morphTextureWidth,\n\t\t\t\t\t\theight: this.morphTextureHeight,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: name\n\t\t\t\t});\n\t\t}\n}\n\nclass MorphTarget {\n\t\tconstructor(options){\n\t\t\t\tthis.used = false;\n\t\t\t\tthis.options = options;\n\t\t\t\tthis._name = options.name;\n\t\t\t\tthis._defaultWeight = options.defaultWeight || 0;\n\t\t\t\tthis._aabb = options.aabb;\n\t\t\t\tthis.deltaPositions = options.deltaPositions;\n\t\t\t\tthis.morphPositions = !!options.deltaPositions;\n\t\t\t\tthis.morphNormals = !!options.deltaNormals;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tget defaultWeight() {\n\t\t\t\treturn this._defaultWeight;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (!this._aabb) {\n\t\t\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\t\t\tif (this.deltaPositions) {\n\t\t\t\t\t\t\t\tthis._aabb.compute(this.deltaPositions);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new MorphTarget(this.options);\n\t\t}\n\t\t_postInit() {\n\t\t\t\tif (!this.options.preserveData) {\n\t\t\t\t\t\tthis.options = null;\n\t\t\t\t}\n\t\t\t\tthis.used = true;\n\t\t}\n}\n\nlet nonUniformScale;\nlet uniformScale = 1;\nconst particleTexChannels$1 = 4;\nconst rotMat = new Mat4();\nconst rotMatInv = new Mat4();\nconst randomPosTformed = new Vec3();\nconst randomPos = new Vec3();\nconst rndFactor3Vec = new Vec3();\nconst particlePosPrev = new Vec3();\nconst velocityVec = new Vec3();\nconst localVelocityVec = new Vec3();\nconst velocityVec2 = new Vec3();\nconst localVelocityVec2 = new Vec3();\nconst radialVelocityVec = new Vec3();\nconst particlePos = new Vec3();\nconst particleFinalPos = new Vec3();\nconst moveDirVec = new Vec3();\nconst tmpVec3$1 = new Vec3();\nfunction frac(f) {\n\t\treturn f - Math.floor(f);\n}\nfunction saturate$1(x) {\n\t\treturn Math.max(Math.min(x, 1), 0);\n}\nfunction glMod(x, y) {\n\t\treturn x - y * Math.floor(x / y);\n}\nfunction encodeFloatRGBA(v) {\n\t\tlet encX = frac(v);\n\t\tlet encY = frac(255.0 * v);\n\t\tlet encZ = frac(65025.0 * v);\n\t\tlet encW = frac(160581375.0 * v);\n\t\tencX -= encY / 255.0;\n\t\tencY -= encZ / 255.0;\n\t\tencZ -= encW / 255.0;\n\t\tencW -= encW / 255.0;\n\t\treturn [\n\t\t\t\tencX,\n\t\t\t\tencY,\n\t\t\t\tencZ,\n\t\t\t\tencW\n\t\t];\n}\nfunction encodeFloatRG(v) {\n\t\tlet encX = frac(v);\n\t\tlet encY = frac(255.0 * v);\n\t\tencX -= encY / 255.0;\n\t\tencY -= encY / 255.0;\n\t\treturn [\n\t\t\t\tencX,\n\t\t\t\tencY\n\t\t];\n}\nclass ParticleCPUUpdater {\n\t\tconstructor(emitter){\n\t\t\t\tthis._emitter = emitter;\n\t\t}\n\t\tcalcSpawnPosition(particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, i) {\n\t\t\t\tconst emitter = this._emitter;\n\t\t\t\tconst rX = Math.random();\n\t\t\t\tconst rY = Math.random();\n\t\t\t\tconst rZ = Math.random();\n\t\t\t\tconst rW = Math.random();\n\t\t\t\tif (emitter.useCpu) {\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 0 + emitter.numParticlesPot * 2 * particleTexChannels$1] = rX;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1 + emitter.numParticlesPot * 2 * particleTexChannels$1] = rY;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2 + emitter.numParticlesPot * 2 * particleTexChannels$1] = rZ;\n\t\t\t\t}\n\t\t\t\trandomPos.x = rX - 0.5;\n\t\t\t\trandomPos.y = rY - 0.5;\n\t\t\t\trandomPos.z = rZ - 0.5;\n\t\t\t\tif (emitter.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tconst max = Math.max(Math.abs(randomPos.x), Math.max(Math.abs(randomPos.y), Math.abs(randomPos.z)));\n\t\t\t\t\t\tconst edgeX = max + (0.5 - max) * extentsInnerRatioUniform[0];\n\t\t\t\t\t\tconst edgeY = max + (0.5 - max) * extentsInnerRatioUniform[1];\n\t\t\t\t\t\tconst edgeZ = max + (0.5 - max) * extentsInnerRatioUniform[2];\n\t\t\t\t\t\trandomPos.x = edgeX * (max === Math.abs(randomPos.x) ? Math.sign(randomPos.x) : 2 * randomPos.x);\n\t\t\t\t\t\trandomPos.y = edgeY * (max === Math.abs(randomPos.y) ? Math.sign(randomPos.y) : 2 * randomPos.y);\n\t\t\t\t\t\trandomPos.z = edgeZ * (max === Math.abs(randomPos.z) ? Math.sign(randomPos.z) : 2 * randomPos.z);\n\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(emitterPos).add(spawnMatrix.transformPoint(randomPos));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(spawnMatrix.transformPoint(randomPos));\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\trandomPos.normalize();\n\t\t\t\t\t\tconst spawnBoundsSphereInnerRatio = emitter.emitterRadius === 0 ? 0 : emitter.emitterRadiusInner / emitter.emitterRadius;\n\t\t\t\t\t\tconst r = rW * (1.0 - spawnBoundsSphereInnerRatio) + spawnBoundsSphereInnerRatio;\n\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(emitterPos).add(randomPos.mulScalar(r * emitter.emitterRadius));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trandomPosTformed.copy(randomPos.mulScalar(r * emitter.emitterRadius));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst particleRate = math.lerp(emitter.rate, emitter.rate2, rX);\n\t\t\t\tlet startSpawnTime = -particleRate * i;\n\t\t\t\tif (emitter.pack8) {\n\t\t\t\t\t\tconst packX = (randomPosTformed.x - emitter.worldBounds.center.x) / emitter.worldBoundsSize.x + 0.5;\n\t\t\t\t\t\tconst packY = (randomPosTformed.y - emitter.worldBounds.center.y) / emitter.worldBoundsSize.y + 0.5;\n\t\t\t\t\t\tconst packZ = (randomPosTformed.z - emitter.worldBounds.center.z) / emitter.worldBoundsSize.z + 0.5;\n\t\t\t\t\t\tlet packA = math.lerp(emitter.startAngle * math.DEG_TO_RAD, emitter.startAngle2 * math.DEG_TO_RAD, rX);\n\t\t\t\t\t\tpackA = packA % (Math.PI * 2) / (Math.PI * 2);\n\t\t\t\t\t\tconst rg0 = encodeFloatRG(packX);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1] = rg0[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1] = rg0[1];\n\t\t\t\t\t\tconst ba0 = encodeFloatRG(packY);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2] = ba0[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3] = ba0[1];\n\t\t\t\t\t\tconst rg1 = encodeFloatRG(packZ);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 0 + emitter.numParticlesPot * particleTexChannels$1] = rg1[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1 + emitter.numParticlesPot * particleTexChannels$1] = rg1[1];\n\t\t\t\t\t\tconst ba1 = encodeFloatRG(packA);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2 + emitter.numParticlesPot * particleTexChannels$1] = ba1[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] = ba1[1];\n\t\t\t\t\t\tconst a2 = 1.0;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1 * 2] = a2;\n\t\t\t\t\t\tconst maxNegLife = Math.max(emitter.lifetime, (emitter.numParticles - 1.0) * Math.max(emitter.rate, emitter.rate2));\n\t\t\t\t\t\tconst maxPosLife = emitter.lifetime + 1.0;\n\t\t\t\t\t\tstartSpawnTime = (startSpawnTime + maxNegLife) / (maxNegLife + maxPosLife);\n\t\t\t\t\t\tconst rgba3 = encodeFloatRGBA(startSpawnTime);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 0 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[0];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[1];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[2];\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1 * 3] = rgba3[3];\n\t\t\t\t} else {\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1] = randomPosTformed.x;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 1] = randomPosTformed.y;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 2] = randomPosTformed.z;\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3] = math.lerp(emitter.startAngle * math.DEG_TO_RAD, emitter.startAngle2 * math.DEG_TO_RAD, rX);\n\t\t\t\t\t\tparticleTex[i * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] = startSpawnTime;\n\t\t\t\t}\n\t\t}\n\t\tupdate(data, vbToSort, particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, delta, isOnStop) {\n\t\t\t\tlet a, b, c;\n\t\t\t\tconst emitter = this._emitter;\n\t\t\t\tif (emitter.meshInstance.node) {\n\t\t\t\t\t\tconst fullMat = emitter.meshInstance.node.worldTransform;\n\t\t\t\t\t\tfor(let j = 0; j < 12; j++){\n\t\t\t\t\t\t\t\trotMat.data[j] = fullMat.data[j];\n\t\t\t\t\t\t}\n\t\t\t\t\t\trotMatInv.copy(rotMat);\n\t\t\t\t\t\trotMatInv.invert();\n\t\t\t\t\t\tnonUniformScale = emitter.meshInstance.node.localScale;\n\t\t\t\t\t\tuniformScale = Math.max(Math.max(nonUniformScale.x, nonUniformScale.y), nonUniformScale.z);\n\t\t\t\t}\n\t\t\t\temitterPos = emitter.meshInstance.node === null || emitter.localSpace ? Vec3.ZERO : emitter.meshInstance.node.getPosition();\n\t\t\t\tconst posCam = emitter.camera ? emitter.camera._node.getPosition() : Vec3.ZERO;\n\t\t\t\tconst vertSize = !emitter.useMesh ? 15 : 17;\n\t\t\t\tlet cf, cc;\n\t\t\t\tlet rotSpeed, rotSpeed2, scale2, alpha, alpha2, radialSpeed, radialSpeed2;\n\t\t\t\tconst precision1 = emitter.precision - 1;\n\t\t\t\tfor(let i = 0; i < emitter.numParticles; i++){\n\t\t\t\t\t\tconst id = Math.floor(emitter.vbCPU[i * emitter.numParticleVerts * (emitter.useMesh ? 6 : 4) + 3]);\n\t\t\t\t\t\tconst rndFactor = particleTex[id * particleTexChannels$1 + 0 + emitter.numParticlesPot * 2 * particleTexChannels$1];\n\t\t\t\t\t\trndFactor3Vec.x = rndFactor;\n\t\t\t\t\t\trndFactor3Vec.y = particleTex[id * particleTexChannels$1 + 1 + emitter.numParticlesPot * 2 * particleTexChannels$1];\n\t\t\t\t\t\trndFactor3Vec.z = particleTex[id * particleTexChannels$1 + 2 + emitter.numParticlesPot * 2 * particleTexChannels$1];\n\t\t\t\t\t\tconst particleRate = emitter.rate + (emitter.rate2 - emitter.rate) * rndFactor;\n\t\t\t\t\t\tconst particleLifetime = emitter.lifetime;\n\t\t\t\t\t\tlet life = particleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] + delta;\n\t\t\t\t\t\tconst nlife = saturate$1(life / particleLifetime);\n\t\t\t\t\t\tlet scale = 0;\n\t\t\t\t\t\tlet alphaDiv = 0;\n\t\t\t\t\t\tconst angle = 0;\n\t\t\t\t\t\tconst respawn = life - delta <= 0.0 || life >= particleLifetime;\n\t\t\t\t\t\tif (respawn) {\n\t\t\t\t\t\t\t\tthis.calcSpawnPosition(particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet particleEnabled = life > 0.0 && life < particleLifetime;\n\t\t\t\t\t\tif (particleEnabled) {\n\t\t\t\t\t\t\t\tc = nlife * precision1;\n\t\t\t\t\t\t\t\tcf = Math.floor(c);\n\t\t\t\t\t\t\t\tcc = Math.ceil(c);\n\t\t\t\t\t\t\t\tc %= 1;\n\t\t\t\t\t\t\t\ta = emitter.qRotSpeed[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRotSpeed[cc];\n\t\t\t\t\t\t\t\trotSpeed = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qRotSpeed2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRotSpeed2[cc];\n\t\t\t\t\t\t\t\trotSpeed2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qScale[cf];\n\t\t\t\t\t\t\t\tb = emitter.qScale[cc];\n\t\t\t\t\t\t\t\tscale = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qScale2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qScale2[cc];\n\t\t\t\t\t\t\t\tscale2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qAlpha[cf];\n\t\t\t\t\t\t\t\tb = emitter.qAlpha[cc];\n\t\t\t\t\t\t\t\talpha = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qAlpha2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qAlpha2[cc];\n\t\t\t\t\t\t\t\talpha2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qRadialSpeed[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRadialSpeed[cc];\n\t\t\t\t\t\t\t\tradialSpeed = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qRadialSpeed2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qRadialSpeed2[cc];\n\t\t\t\t\t\t\t\tradialSpeed2 = a + (b - a) * c;\n\t\t\t\t\t\t\t\tradialSpeed += (radialSpeed2 - radialSpeed) * (rndFactor * 100.0 % 1.0);\n\t\t\t\t\t\t\t\tparticlePosPrev.x = particleTex[id * particleTexChannels$1];\n\t\t\t\t\t\t\t\tparticlePosPrev.y = particleTex[id * particleTexChannels$1 + 1];\n\t\t\t\t\t\t\t\tparticlePosPrev.z = particleTex[id * particleTexChannels$1 + 2];\n\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\tradialVelocityVec.copy(particlePosPrev).sub(emitterPos);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tradialVelocityVec.copy(particlePosPrev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tradialVelocityVec.normalize().mulScalar(radialSpeed);\n\t\t\t\t\t\t\t\tcf *= 3;\n\t\t\t\t\t\t\t\tcc *= 3;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity[cf];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity[cc];\n\t\t\t\t\t\t\t\tlocalVelocityVec.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity[cc + 1];\n\t\t\t\t\t\t\t\tlocalVelocityVec.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity[cc + 2];\n\t\t\t\t\t\t\t\tlocalVelocityVec.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity2[cc];\n\t\t\t\t\t\t\t\tlocalVelocityVec2.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity2[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity2[cc + 1];\n\t\t\t\t\t\t\t\tlocalVelocityVec2.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qLocalVelocity2[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qLocalVelocity2[cc + 2];\n\t\t\t\t\t\t\t\tlocalVelocityVec2.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity[cf];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity[cc];\n\t\t\t\t\t\t\t\tvelocityVec.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity[cc + 1];\n\t\t\t\t\t\t\t\tvelocityVec.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity[cc + 2];\n\t\t\t\t\t\t\t\tvelocityVec.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity2[cf];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity2[cc];\n\t\t\t\t\t\t\t\tvelocityVec2.x = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity2[cf + 1];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity2[cc + 1];\n\t\t\t\t\t\t\t\tvelocityVec2.y = a + (b - a) * c;\n\t\t\t\t\t\t\t\ta = emitter.qVelocity2[cf + 2];\n\t\t\t\t\t\t\t\tb = emitter.qVelocity2[cc + 2];\n\t\t\t\t\t\t\t\tvelocityVec2.z = a + (b - a) * c;\n\t\t\t\t\t\t\t\tlocalVelocityVec.x += (localVelocityVec2.x - localVelocityVec.x) * rndFactor3Vec.x;\n\t\t\t\t\t\t\t\tlocalVelocityVec.y += (localVelocityVec2.y - localVelocityVec.y) * rndFactor3Vec.y;\n\t\t\t\t\t\t\t\tlocalVelocityVec.z += (localVelocityVec2.z - localVelocityVec.z) * rndFactor3Vec.z;\n\t\t\t\t\t\t\t\tif (emitter.initialVelocity > 0) {\n\t\t\t\t\t\t\t\t\t\tif (emitter.emitterShape === EMITTERSHAPE_SPHERE) {\n\t\t\t\t\t\t\t\t\t\t\t\trandomPos.copy(rndFactor3Vec).mulScalar(2).sub(Vec3.ONE).normalize();\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(randomPos.mulScalar(emitter.initialVelocity));\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(Vec3.FORWARD.mulScalar(emitter.initialVelocity));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvelocityVec.x += (velocityVec2.x - velocityVec.x) * rndFactor3Vec.x;\n\t\t\t\t\t\t\t\tvelocityVec.y += (velocityVec2.y - velocityVec.y) * rndFactor3Vec.y;\n\t\t\t\t\t\t\t\tvelocityVec.z += (velocityVec2.z - velocityVec.z) * rndFactor3Vec.z;\n\t\t\t\t\t\t\t\trotSpeed += (rotSpeed2 - rotSpeed) * rndFactor3Vec.y;\n\t\t\t\t\t\t\t\tscale = (scale + (scale2 - scale) * (rndFactor * 10000.0 % 1.0)) * uniformScale;\n\t\t\t\t\t\t\t\talphaDiv = (alpha2 - alpha) * (rndFactor * 1000.0 % 1.0);\n\t\t\t\t\t\t\t\tif (emitter.meshInstance.node) {\n\t\t\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\trotMat.transformPoint(localVelocityVec, localVelocityVec);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.x /= nonUniformScale.x;\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.y /= nonUniformScale.y;\n\t\t\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.z /= nonUniformScale.z;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(velocityVec.mul(nonUniformScale));\n\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(radialVelocityVec.mul(nonUniformScale));\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\trotMatInv.transformPoint(velocityVec, velocityVec);\n\t\t\t\t\t\t\t\t\t\tlocalVelocityVec.add(velocityVec).add(radialVelocityVec);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmoveDirVec.copy(localVelocityVec);\n\t\t\t\t\t\t\t\tparticlePos.copy(particlePosPrev).add(localVelocityVec.mulScalar(delta));\n\t\t\t\t\t\t\t\tparticleFinalPos.copy(particlePos);\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1] = particleFinalPos.x;\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 1] = particleFinalPos.y;\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 2] = particleFinalPos.z;\n\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3] += rotSpeed * delta;\n\t\t\t\t\t\t\t\tif (emitter.wrap && emitter.wrapBounds) {\n\t\t\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\tparticleFinalPos.sub(emitterPos);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tparticleFinalPos.x = glMod(particleFinalPos.x, emitter.wrapBounds.x) - emitter.wrapBounds.x * 0.5;\n\t\t\t\t\t\t\t\t\t\tparticleFinalPos.y = glMod(particleFinalPos.y, emitter.wrapBounds.y) - emitter.wrapBounds.y * 0.5;\n\t\t\t\t\t\t\t\t\t\tparticleFinalPos.z = glMod(particleFinalPos.z, emitter.wrapBounds.z) - emitter.wrapBounds.z * 0.5;\n\t\t\t\t\t\t\t\t\t\tif (!emitter.localSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\tparticleFinalPos.add(emitterPos);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (emitter.sort > 0) {\n\t\t\t\t\t\t\t\t\t\tif (emitter.sort === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\ttmpVec3$1.copy(particleFinalPos).sub(posCam);\n\t\t\t\t\t\t\t\t\t\t\t\temitter.particleDistance[id] = -(tmpVec3$1.x * tmpVec3$1.x + tmpVec3$1.y * tmpVec3$1.y + tmpVec3$1.z * tmpVec3$1.z);\n\t\t\t\t\t\t\t\t\t\t} else if (emitter.sort === 2) {\n\t\t\t\t\t\t\t\t\t\t\t\temitter.particleDistance[id] = life;\n\t\t\t\t\t\t\t\t\t\t} else if (emitter.sort === 3) {\n\t\t\t\t\t\t\t\t\t\t\t\temitter.particleDistance[id] = -life;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (isOnStop) {\n\t\t\t\t\t\t\t\tif (life < 0) {\n\t\t\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] = -1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (life >= particleLifetime) {\n\t\t\t\t\t\t\t\t\t\tlife -= Math.max(particleLifetime, (emitter.numParticles - 1) * particleRate);\n\t\t\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] = emitter.loop ? 1 : -1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (life < 0 && emitter.loop) {\n\t\t\t\t\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] = 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (particleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * 2 * particleTexChannels$1] < 0) {\n\t\t\t\t\t\t\t\tparticleEnabled = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparticleTex[id * particleTexChannels$1 + 3 + emitter.numParticlesPot * particleTexChannels$1] = life;\n\t\t\t\t\t\tfor(let v = 0; v < emitter.numParticleVerts; v++){\n\t\t\t\t\t\t\t\tconst vbOffset = (i * emitter.numParticleVerts + v) * (emitter.useMesh ? 6 : 4);\n\t\t\t\t\t\t\t\tlet quadX = emitter.vbCPU[vbOffset];\n\t\t\t\t\t\t\t\tlet quadY = emitter.vbCPU[vbOffset + 1];\n\t\t\t\t\t\t\t\tlet quadZ = emitter.vbCPU[vbOffset + 2];\n\t\t\t\t\t\t\t\tif (!particleEnabled) {\n\t\t\t\t\t\t\t\t\t\tquadX = quadY = quadZ = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst w = i * emitter.numParticleVerts * vertSize + v * vertSize;\n\t\t\t\t\t\t\t\tdata[w] = particleFinalPos.x;\n\t\t\t\t\t\t\t\tdata[w + 1] = particleFinalPos.y;\n\t\t\t\t\t\t\t\tdata[w + 2] = particleFinalPos.z;\n\t\t\t\t\t\t\t\tdata[w + 3] = nlife;\n\t\t\t\t\t\t\t\tdata[w + 4] = emitter.alignToMotion ? angle : particleTex[id * particleTexChannels$1 + 3];\n\t\t\t\t\t\t\t\tdata[w + 5] = scale;\n\t\t\t\t\t\t\t\tdata[w + 6] = alphaDiv;\n\t\t\t\t\t\t\t\tdata[w + 7] = moveDirVec.x;\n\t\t\t\t\t\t\t\tdata[w + 8] = quadX;\n\t\t\t\t\t\t\t\tdata[w + 9] = quadY;\n\t\t\t\t\t\t\t\tdata[w + 10] = quadZ;\n\t\t\t\t\t\t\t\tdata[w + 11] = moveDirVec.y;\n\t\t\t\t\t\t\t\tdata[w + 12] = id;\n\t\t\t\t\t\t\t\tdata[w + 13] = moveDirVec.z;\n\t\t\t\t\t\t\t\tdata[w + 14] = emitter.vbCPU[vbOffset + 3];\n\t\t\t\t\t\t\t\tif (emitter.useMesh) {\n\t\t\t\t\t\t\t\t\t\tdata[w + 15] = emitter.vbCPU[vbOffset + 4];\n\t\t\t\t\t\t\t\t\t\tdata[w + 16] = emitter.vbCPU[vbOffset + 5];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (emitter.sort > PARTICLESORT_NONE && emitter.camera) {\n\t\t\t\t\t\tconst vbStride = emitter.useMesh ? 6 : 4;\n\t\t\t\t\t\tconst particleDistance = emitter.particleDistance;\n\t\t\t\t\t\tfor(let i = 0; i < emitter.numParticles; i++){\n\t\t\t\t\t\t\t\tvbToSort[i][0] = i;\n\t\t\t\t\t\t\t\tvbToSort[i][1] = particleDistance[Math.floor(emitter.vbCPU[i * emitter.numParticleVerts * vbStride + 3])];\n\t\t\t\t\t\t}\n\t\t\t\t\t\temitter.vbOld.set(emitter.vbCPU);\n\t\t\t\t\t\tvbToSort.sort((p1, p2)=>{\n\t\t\t\t\t\t\t\treturn p1[1] - p2[1];\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfor(let i = 0; i < emitter.numParticles; i++){\n\t\t\t\t\t\t\t\tconst src = vbToSort[i][0] * emitter.numParticleVerts * vbStride;\n\t\t\t\t\t\t\t\tconst dest = i * emitter.numParticleVerts * vbStride;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < emitter.numParticleVerts * vbStride; j++){\n\t\t\t\t\t\t\t\t\t\temitter.vbCPU[dest + j] = emitter.vbOld[src + j];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst spawnMatrix3 = new Mat3();\nconst emitterMatrix3 = new Mat3();\nconst emitterMatrix3Inv = new Mat3();\nclass ParticleGPUUpdater {\n\t\tconstructor(emitter, gd){\n\t\t\t\tthis._emitter = emitter;\n\t\t\t\tthis.frameRandomUniform = new Float32Array(3);\n\t\t\t\tthis.emitterPosUniform = new Float32Array(3);\n\t\t\t\tthis.emitterScaleUniform = new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tthis.worldBoundsMulUniform = new Float32Array(3);\n\t\t\t\tthis.worldBoundsAddUniform = new Float32Array(3);\n\t\t\t\tthis.inBoundsSizeUniform = new Float32Array(3);\n\t\t\t\tthis.inBoundsCenterUniform = new Float32Array(3);\n\t\t\t\tthis.constantParticleTexIN = gd.scope.resolve('particleTexIN');\n\t\t\t\tthis.constantParticleTexOUT = gd.scope.resolve('particleTexOUT');\n\t\t\t\tthis.constantEmitterPos = gd.scope.resolve('emitterPos');\n\t\t\t\tthis.constantEmitterScale = gd.scope.resolve('emitterScale');\n\t\t\t\tthis.constantSpawnBounds = gd.scope.resolve('spawnBounds');\n\t\t\t\tthis.constantSpawnPosInnerRatio = gd.scope.resolve('spawnPosInnerRatio');\n\t\t\t\tthis.constantSpawnBoundsSphere = gd.scope.resolve('spawnBoundsSphere');\n\t\t\t\tthis.constantSpawnBoundsSphereInnerRatio = gd.scope.resolve('spawnBoundsSphereInnerRatio');\n\t\t\t\tthis.constantInitialVelocity = gd.scope.resolve('initialVelocity');\n\t\t\t\tthis.constantFrameRandom = gd.scope.resolve('frameRandom');\n\t\t\t\tthis.constantDelta = gd.scope.resolve('delta');\n\t\t\t\tthis.constantRate = gd.scope.resolve('rate');\n\t\t\t\tthis.constantRateDiv = gd.scope.resolve('rateDiv');\n\t\t\t\tthis.constantLifetime = gd.scope.resolve('lifetime');\n\t\t\t\tthis.constantGraphSampleSize = gd.scope.resolve('graphSampleSize');\n\t\t\t\tthis.constantGraphNumSamples = gd.scope.resolve('graphNumSamples');\n\t\t\t\tthis.constantInternalTex0 = gd.scope.resolve('internalTex0');\n\t\t\t\tthis.constantInternalTex1 = gd.scope.resolve('internalTex1');\n\t\t\t\tthis.constantInternalTex2 = gd.scope.resolve('internalTex2');\n\t\t\t\tthis.constantInternalTex3 = gd.scope.resolve('internalTex3');\n\t\t\t\tthis.constantEmitterMatrix = gd.scope.resolve('emitterMatrix');\n\t\t\t\tthis.constantEmitterMatrixInv = gd.scope.resolve('emitterMatrixInv');\n\t\t\t\tthis.constantNumParticles = gd.scope.resolve('numParticles');\n\t\t\t\tthis.constantNumParticlesPot = gd.scope.resolve('numParticlesPot');\n\t\t\t\tthis.constantLocalVelocityDivMult = gd.scope.resolve('localVelocityDivMult');\n\t\t\t\tthis.constantVelocityDivMult = gd.scope.resolve('velocityDivMult');\n\t\t\t\tthis.constantRotSpeedDivMult = gd.scope.resolve('rotSpeedDivMult');\n\t\t\t\tthis.constantSeed = gd.scope.resolve('seed');\n\t\t\t\tthis.constantStartAngle = gd.scope.resolve('startAngle');\n\t\t\t\tthis.constantStartAngle2 = gd.scope.resolve('startAngle2');\n\t\t\t\tthis.constantOutBoundsMul = gd.scope.resolve('outBoundsMul');\n\t\t\t\tthis.constantOutBoundsAdd = gd.scope.resolve('outBoundsAdd');\n\t\t\t\tthis.constantInBoundsSize = gd.scope.resolve('inBoundsSize');\n\t\t\t\tthis.constantInBoundsCenter = gd.scope.resolve('inBoundsCenter');\n\t\t\t\tthis.constantMaxVel = gd.scope.resolve('maxVel');\n\t\t\t\tthis.constantFaceTangent = gd.scope.resolve('faceTangent');\n\t\t\t\tthis.constantFaceBinorm = gd.scope.resolve('faceBinorm');\n\t\t\t\tthis.constantRadialSpeedDivMult = gd.scope.resolve('radialSpeedDivMult');\n\t\t}\n\t\t_setInputBounds() {\n\t\t\t\tthis.inBoundsSizeUniform[0] = this._emitter.prevWorldBoundsSize.x;\n\t\t\t\tthis.inBoundsSizeUniform[1] = this._emitter.prevWorldBoundsSize.y;\n\t\t\t\tthis.inBoundsSizeUniform[2] = this._emitter.prevWorldBoundsSize.z;\n\t\t\t\tthis.constantInBoundsSize.setValue(this.inBoundsSizeUniform);\n\t\t\t\tthis.inBoundsCenterUniform[0] = this._emitter.prevWorldBoundsCenter.x;\n\t\t\t\tthis.inBoundsCenterUniform[1] = this._emitter.prevWorldBoundsCenter.y;\n\t\t\t\tthis.inBoundsCenterUniform[2] = this._emitter.prevWorldBoundsCenter.z;\n\t\t\t\tthis.constantInBoundsCenter.setValue(this.inBoundsCenterUniform);\n\t\t}\n\t\trandomize() {\n\t\t\t\tthis.frameRandomUniform[0] = Math.random();\n\t\t\t\tthis.frameRandomUniform[1] = Math.random();\n\t\t\t\tthis.frameRandomUniform[2] = Math.random();\n\t\t}\n\t\tupdate(device, spawnMatrix, extentsInnerRatioUniform, delta, isOnStop) {\n\t\t\t\tconst emitter = this._emitter;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tthis.randomize();\n\t\t\t\tthis.constantRadialSpeedDivMult.setValue(emitter.material.getParameter('radialSpeedDivMult').data);\n\t\t\t\tthis.constantGraphSampleSize.setValue(1.0 / emitter.precision);\n\t\t\t\tthis.constantGraphNumSamples.setValue(emitter.precision);\n\t\t\t\tthis.constantNumParticles.setValue(emitter.numParticles);\n\t\t\t\tthis.constantNumParticlesPot.setValue(emitter.numParticlesPot);\n\t\t\t\tthis.constantInternalTex0.setValue(emitter.internalTex0);\n\t\t\t\tthis.constantInternalTex1.setValue(emitter.internalTex1);\n\t\t\t\tthis.constantInternalTex2.setValue(emitter.internalTex2);\n\t\t\t\tthis.constantInternalTex3.setValue(emitter.internalTex3);\n\t\t\t\tconst node = emitter.meshInstance.node;\n\t\t\t\tconst emitterScale = node === null ? Vec3.ONE : node.localScale;\n\t\t\t\tif (emitter.pack8) {\n\t\t\t\t\t\tthis.worldBoundsMulUniform[0] = emitter.worldBoundsMul.x;\n\t\t\t\t\t\tthis.worldBoundsMulUniform[1] = emitter.worldBoundsMul.y;\n\t\t\t\t\t\tthis.worldBoundsMulUniform[2] = emitter.worldBoundsMul.z;\n\t\t\t\t\t\tthis.constantOutBoundsMul.setValue(this.worldBoundsMulUniform);\n\t\t\t\t\t\tthis.worldBoundsAddUniform[0] = emitter.worldBoundsAdd.x;\n\t\t\t\t\t\tthis.worldBoundsAddUniform[1] = emitter.worldBoundsAdd.y;\n\t\t\t\t\t\tthis.worldBoundsAddUniform[2] = emitter.worldBoundsAdd.z;\n\t\t\t\t\t\tthis.constantOutBoundsAdd.setValue(this.worldBoundsAddUniform);\n\t\t\t\t\t\tthis._setInputBounds();\n\t\t\t\t\t\tlet maxVel = emitter.maxVel * Math.max(Math.max(emitterScale.x, emitterScale.y), emitterScale.z);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, 1);\n\t\t\t\t\t\tthis.constantMaxVel.setValue(maxVel);\n\t\t\t\t}\n\t\t\t\tconst emitterPos = node === null || emitter.localSpace ? Vec3.ZERO : node.getPosition();\n\t\t\t\tconst emitterMatrix = node === null ? Mat4.IDENTITY : node.getWorldTransform();\n\t\t\t\tif (emitter.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tspawnMatrix3.setFromMat4(spawnMatrix);\n\t\t\t\t\t\tthis.constantSpawnBounds.setValue(spawnMatrix3.data);\n\t\t\t\t\t\tthis.constantSpawnPosInnerRatio.setValue(extentsInnerRatioUniform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.constantSpawnBoundsSphere.setValue(emitter.emitterRadius);\n\t\t\t\t\t\tthis.constantSpawnBoundsSphereInnerRatio.setValue(emitter.emitterRadius === 0 ? 0 : emitter.emitterRadiusInner / emitter.emitterRadius);\n\t\t\t\t}\n\t\t\t\tthis.constantInitialVelocity.setValue(emitter.initialVelocity);\n\t\t\t\temitterMatrix3.setFromMat4(emitterMatrix);\n\t\t\t\temitterMatrix3Inv.invertMat4(emitterMatrix);\n\t\t\t\tthis.emitterPosUniform[0] = emitterPos.x;\n\t\t\t\tthis.emitterPosUniform[1] = emitterPos.y;\n\t\t\t\tthis.emitterPosUniform[2] = emitterPos.z;\n\t\t\t\tthis.constantEmitterPos.setValue(this.emitterPosUniform);\n\t\t\t\tthis.constantFrameRandom.setValue(this.frameRandomUniform);\n\t\t\t\tthis.constantDelta.setValue(delta);\n\t\t\t\tthis.constantRate.setValue(emitter.rate);\n\t\t\t\tthis.constantRateDiv.setValue(emitter.rate2 - emitter.rate);\n\t\t\t\tthis.constantStartAngle.setValue(emitter.startAngle * math.DEG_TO_RAD);\n\t\t\t\tthis.constantStartAngle2.setValue(emitter.startAngle2 * math.DEG_TO_RAD);\n\t\t\t\tthis.constantSeed.setValue(emitter.seed);\n\t\t\t\tthis.constantLifetime.setValue(emitter.lifetime);\n\t\t\t\tthis.emitterScaleUniform[0] = emitterScale.x;\n\t\t\t\tthis.emitterScaleUniform[1] = emitterScale.y;\n\t\t\t\tthis.emitterScaleUniform[2] = emitterScale.z;\n\t\t\t\tthis.constantEmitterScale.setValue(this.emitterScaleUniform);\n\t\t\t\tthis.constantEmitterMatrix.setValue(emitterMatrix3.data);\n\t\t\t\tthis.constantEmitterMatrixInv.setValue(emitterMatrix3Inv.data);\n\t\t\t\tthis.constantLocalVelocityDivMult.setValue(emitter.localVelocityUMax);\n\t\t\t\tthis.constantVelocityDivMult.setValue(emitter.velocityUMax);\n\t\t\t\tthis.constantRotSpeedDivMult.setValue(emitter.rotSpeedUMax[0]);\n\t\t\t\tlet texIN = emitter.swapTex ? emitter.particleTexOUT : emitter.particleTexIN;\n\t\t\t\ttexIN = emitter.beenReset ? emitter.particleTexStart : texIN;\n\t\t\t\tconst texOUT = emitter.swapTex ? emitter.particleTexIN : emitter.particleTexOUT;\n\t\t\t\tthis.constantParticleTexIN.setValue(texIN);\n\t\t\t\tdrawQuadWithShader(device, emitter.swapTex ? emitter.rtParticleTexIN : emitter.rtParticleTexOUT, !isOnStop ? emitter.loop ? emitter.shaderParticleUpdateRespawn : emitter.shaderParticleUpdateNoRespawn : emitter.shaderParticleUpdateOnStop);\n\t\t\t\temitter.material.setParameter('particleTexOUT', texIN);\n\t\t\t\temitter.material.setParameter('particleTexIN', texOUT);\n\t\t\t\temitter.beenReset = false;\n\t\t\t\temitter.swapTex = !emitter.swapTex;\n\t\t\t\temitter.prevWorldBoundsSize.copy(emitter.worldBoundsSize);\n\t\t\t\temitter.prevWorldBoundsCenter.copy(emitter.worldBounds.center);\n\t\t\t\tif (emitter.pack8) {\n\t\t\t\t\t\tthis._setInputBounds();\n\t\t\t\t}\n\t\t}\n}\n\nconst normalTypeNames = [\n\t\t'NONE',\n\t\t'VERTEX',\n\t\t'MAP'\n];\nclass ShaderGeneratorParticle extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tlet key = `particle_${definesHash}_`;\n\t\t\t\tfor(const prop in options){\n\t\t\t\t\t\tif (options.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tkey += options[prop];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn key;\n\t\t}\n\t\tcreateVertexDefines(options, attributes) {\n\t\t\t\tconst vDefines = new Map(options.defines);\n\t\t\t\tif (options.mesh) vDefines.set('USE_MESH', '');\n\t\t\t\tif (options.meshUv) vDefines.set('USE_MESH_UV', '');\n\t\t\t\tif (options.localSpace) vDefines.set('LOCAL_SPACE', '');\n\t\t\t\tif (options.screenSpace) vDefines.set('SCREEN_SPACE', '');\n\t\t\t\tif (options.animTex) vDefines.set('ANIMTEX', '');\n\t\t\t\tif (options.soft > 0) vDefines.set('SOFT', '');\n\t\t\t\tif (options.stretch > 0.0) vDefines.set('STRETCH', '');\n\t\t\t\tif (options.customFace) vDefines.set('CUSTOM_FACE', '');\n\t\t\t\tif (options.pack8) vDefines.set('PACK8', '');\n\t\t\t\tif (options.localSpace) vDefines.set('LOCAL_SPACE', '');\n\t\t\t\tif (options.animTexLoop) vDefines.set('ANIMTEX_LOOP', '');\n\t\t\t\tif (options.wrap) vDefines.set('WRAP', '');\n\t\t\t\tif (options.alignToMotion) vDefines.set('ALIGN_TO_MOTION', '');\n\t\t\t\tvDefines.set('NORMAL', normalTypeNames[options.normal]);\n\t\t\t\tattributes.particle_vertexData = SEMANTIC_POSITION;\n\t\t\t\tif (options.mesh && options.meshUv) {\n\t\t\t\t\t\tattributes.particle_uv = SEMANTIC_TEXCOORD0;\n\t\t\t\t}\n\t\t\t\tif (options.useCpu) {\n\t\t\t\t\t\tattributes.particle_vertexData2 = SEMANTIC_ATTR1;\n\t\t\t\t\t\tattributes.particle_vertexData3 = SEMANTIC_ATTR2;\n\t\t\t\t\t\tattributes.particle_vertexData4 = SEMANTIC_ATTR3;\n\t\t\t\t\t\tattributes.particle_vertexData5 = SEMANTIC_ATTR4;\n\t\t\t\t}\n\t\t\t\treturn vDefines;\n\t\t}\n\t\tcreateFragmentDefines(options) {\n\t\t\t\tconst fDefines = new Map(options.defines);\n\t\t\t\tif (options.soft > 0) fDefines.set('SOFT', '');\n\t\t\t\tif (options.halflambert) fDefines.set('HALF_LAMBERT', '');\n\t\t\t\tfDefines.set('NORMAL', normalTypeNames[options.normal]);\n\t\t\t\tfDefines.set('BLEND', blendNames[options.blend]);\n\t\t\t\treturn fDefines;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst shaderLanguage = device.isWebGPU ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tconst engineChunks = ShaderChunks.get(device, shaderLanguage);\n\t\t\t\tconst attributes = {};\n\t\t\t\tconst vDefines = this.createVertexDefines(options, attributes);\n\t\t\t\tconst fDefines = this.createFragmentDefines(options);\n\t\t\t\tconst executionDefine = `PARTICLE_${options.useCpu ? 'CPU' : 'GPU'}\\n`;\n\t\t\t\tvDefines.set(executionDefine, '');\n\t\t\t\tfDefines.set(executionDefine, '');\n\t\t\t\tconst includes = new Map(engineChunks);\n\t\t\t\treturn ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\tname: 'ParticleShader',\n\t\t\t\t\t\tshaderLanguage: shaderLanguage,\n\t\t\t\t\t\tattributes: attributes,\n\t\t\t\t\t\tvertexCode: engineChunks.get('particle_shaderVS'),\n\t\t\t\t\t\tfragmentCode: engineChunks.get('particle_shaderPS'),\n\t\t\t\t\t\tfragmentDefines: fDefines,\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tvertexIncludes: includes,\n\t\t\t\t\t\tvertexDefines: vDefines\n\t\t\t\t});\n\t\t}\n}\nconst particle = new ShaderGeneratorParticle();\n\nclass ParticleMaterial extends Material {\n\t\tconstructor(emitter){\n\t\t\t\tsuper(), this.emitter = null;\n\t\t\t\tthis.emitter = emitter;\n\t\t}\n\t\tgetShaderVariant(params) {\n\t\t\t\tconst { device, scene, cameraShaderParams, objDefs } = params;\n\t\t\t\tconst { emitter } = this;\n\t\t\t\tconst options = {\n\t\t\t\t\t\tdefines: ShaderUtils.getCoreDefines(this, params),\n\t\t\t\t\t\tpass: SHADER_FORWARD,\n\t\t\t\t\t\tuseCpu: this.emitter.useCpu,\n\t\t\t\t\t\tnormal: emitter.lighting ? emitter.normalMap !== null ? 2 : 1 : 0,\n\t\t\t\t\t\thalflambert: this.emitter.halfLambert,\n\t\t\t\t\t\tstretch: this.emitter.stretch,\n\t\t\t\t\t\talignToMotion: this.emitter.alignToMotion,\n\t\t\t\t\t\tsoft: this.emitter.depthSoftening,\n\t\t\t\t\t\tmesh: this.emitter.useMesh,\n\t\t\t\t\t\tmeshUv: objDefs & SHADERDEF_UV0,\n\t\t\t\t\t\tgamma: cameraShaderParams?.shaderOutputGamma ?? GAMMA_NONE,\n\t\t\t\t\t\ttoneMap: cameraShaderParams?.toneMapping ?? TONEMAP_LINEAR,\n\t\t\t\t\t\tfog: scene && !this.emitter.noFog ? scene.fog.type : 'none',\n\t\t\t\t\t\twrap: this.emitter.wrap && this.emitter.wrapBounds,\n\t\t\t\t\t\tlocalSpace: this.emitter.localSpace,\n\t\t\t\t\t\tscreenSpace: emitter.inTools ? false : this.emitter.screenSpace,\n\t\t\t\t\t\tblend: this.emitter.blendType,\n\t\t\t\t\t\tanimTex: this.emitter._isAnimated(),\n\t\t\t\t\t\tanimTexLoop: this.emitter.animLoop,\n\t\t\t\t\t\tpack8: this.emitter.pack8,\n\t\t\t\t\t\tcustomFace: this.emitter.orientation !== PARTICLEORIENTATION_SCREEN\n\t\t\t\t};\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(device);\n\t\t\t\tlibrary.register('particle', particle);\n\t\t\t\treturn library.getProgram('particle', options, processingOptions, this.userId);\n\t\t}\n}\n\nconst particleVerts = [\n\t\t[\n\t\t\t\t-1,\n\t\t\t\t-1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t-1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t1\n\t\t],\n\t\t[\n\t\t\t\t-1,\n\t\t\t\t1\n\t\t]\n];\nfunction _createTexture(device, width, height, pixelData, format = PIXELFORMAT_RGBA32F, mult8Bit, filter) {\n\t\tlet mipFilter = FILTER_NEAREST;\n\t\tif (filter && (format === PIXELFORMAT_RGBA8 || format === PIXELFORMAT_SRGBA8)) {\n\t\t\t\tmipFilter = FILTER_LINEAR;\n\t\t}\n\t\tconst texture = new Texture(device, {\n\t\t\t\twidth: width,\n\t\t\t\theight: height,\n\t\t\t\tformat: format,\n\t\t\t\tcubemap: false,\n\t\t\t\tmipmaps: false,\n\t\t\t\tminFilter: mipFilter,\n\t\t\t\tmagFilter: mipFilter,\n\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\tname: 'ParticleSystemTexture'\n\t\t});\n\t\tconst pixels = texture.lock();\n\t\tif (format === PIXELFORMAT_RGBA8 || format === PIXELFORMAT_SRGBA8) {\n\t\t\t\tconst temp = new Uint8Array(pixelData.length);\n\t\t\t\tfor(let i = 0; i < pixelData.length; i++){\n\t\t\t\t\t\ttemp[i] = pixelData[i] * mult8Bit * 255;\n\t\t\t\t}\n\t\t\t\tpixelData = temp;\n\t\t}\n\t\tpixels.set(pixelData);\n\t\ttexture.unlock();\n\t\treturn texture;\n}\nfunction saturate(x) {\n\t\treturn Math.max(Math.min(x, 1), 0);\n}\nconst default0Curve = new Curve([\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n]);\nconst default1Curve = new Curve([\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n]);\nconst default0Curve3 = new CurveSet([\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n], [\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n], [\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0\n]);\nconst default1Curve3 = new CurveSet([\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n], [\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n], [\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1\n]);\nlet particleTexHeight = 2;\nconst particleTexChannels = 4;\nconst extentsInnerRatioUniform = new Float32Array(3);\nconst spawnMatrix = new Mat4();\nconst tmpVec3 = new Vec3();\nconst bMin = new Vec3();\nconst bMax = new Vec3();\nlet setPropertyTarget;\nlet setPropertyOptions;\nfunction setProperty(pName, defaultVal) {\n\t\tif (setPropertyOptions[pName] !== undefined && setPropertyOptions[pName] !== null) {\n\t\t\t\tsetPropertyTarget[pName] = setPropertyOptions[pName];\n\t\t} else {\n\t\t\t\tsetPropertyTarget[pName] = defaultVal;\n\t\t}\n}\nfunction pack3NFloats(a, b, c) {\n\t\tconst packed = a * 255 << 16 | b * 255 << 8 | c * 255;\n\t\treturn packed / (1 << 24);\n}\nfunction packTextureXYZ_NXYZ(qXYZ, qXYZ2) {\n\t\tconst num = qXYZ.length / 3;\n\t\tconst colors = new Array(num * 4);\n\t\tfor(let i = 0; i < num; i++){\n\t\t\t\tcolors[i * 4] = qXYZ[i * 3];\n\t\t\t\tcolors[i * 4 + 1] = qXYZ[i * 3 + 1];\n\t\t\t\tcolors[i * 4 + 2] = qXYZ[i * 3 + 2];\n\t\t\t\tcolors[i * 4 + 3] = pack3NFloats(qXYZ2[i * 3], qXYZ2[i * 3 + 1], qXYZ2[i * 3 + 2]);\n\t\t}\n\t\treturn colors;\n}\nfunction packTextureRGBA(qRGB, qA) {\n\t\tconst colors = new Array(qA.length * 4);\n\t\tfor(let i = 0; i < qA.length; i++){\n\t\t\t\tcolors[i * 4] = qRGB[i * 3];\n\t\t\t\tcolors[i * 4 + 1] = qRGB[i * 3 + 1];\n\t\t\t\tcolors[i * 4 + 2] = qRGB[i * 3 + 2];\n\t\t\t\tcolors[i * 4 + 3] = qA[i];\n\t\t}\n\t\treturn colors;\n}\nfunction packTexture5Floats(qA, qB, qC, qD, qE) {\n\t\tconst colors = new Array(qA.length * 4);\n\t\tfor(let i = 0; i < qA.length; i++){\n\t\t\t\tcolors[i * 4] = qA[i];\n\t\t\t\tcolors[i * 4 + 1] = qB[i];\n\t\t\t\tcolors[i * 4 + 2] = 0;\n\t\t\t\tcolors[i * 4 + 3] = pack3NFloats(qC[i], qD[i], qE[i]);\n\t\t}\n\t\treturn colors;\n}\nfunction packTexture2Floats(qA, qB) {\n\t\tconst colors = new Array(qA.length * 4);\n\t\tfor(let i = 0; i < qA.length; i++){\n\t\t\t\tcolors[i * 4] = qA[i];\n\t\t\t\tcolors[i * 4 + 1] = qB[i];\n\t\t\t\tcolors[i * 4 + 2] = 0;\n\t\t\t\tcolors[i * 4 + 3] = 0;\n\t\t}\n\t\treturn colors;\n}\nfunction calcEndTime(emitter) {\n\t\tconst interval = Math.max(emitter.rate, emitter.rate2) * emitter.numParticles + emitter.lifetime;\n\t\treturn Date.now() + interval * 1000;\n}\nfunction subGraph(A, B) {\n\t\tconst r = new Float32Array(A.length);\n\t\tfor(let i = 0; i < A.length; i++){\n\t\t\t\tr[i] = A[i] - B[i];\n\t\t}\n\t\treturn r;\n}\nfunction maxUnsignedGraphValue(A, outUMax) {\n\t\tconst chans = outUMax.length;\n\t\tconst values = A.length / chans;\n\t\tfor(let i = 0; i < values; i++){\n\t\t\t\tfor(let j = 0; j < chans; j++){\n\t\t\t\t\t\tconst a = Math.abs(A[i * chans + j]);\n\t\t\t\t\t\toutUMax[j] = Math.max(outUMax[j], a);\n\t\t\t\t}\n\t\t}\n}\nfunction normalizeGraph(A, uMax) {\n\t\tconst chans = uMax.length;\n\t\tconst values = A.length / chans;\n\t\tfor(let i = 0; i < values; i++){\n\t\t\t\tfor(let j = 0; j < chans; j++){\n\t\t\t\t\t\tA[i * chans + j] /= uMax[j] === 0 ? 1 : uMax[j];\n\t\t\t\t\t\tA[i * chans + j] *= 0.5;\n\t\t\t\t\t\tA[i * chans + j] += 0.5;\n\t\t\t\t}\n\t\t}\n}\nfunction divGraphFrom2Curves(curve1, curve2, outUMax) {\n\t\tconst sub = subGraph(curve2, curve1);\n\t\tmaxUnsignedGraphValue(sub, outUMax);\n\t\tnormalizeGraph(sub, outUMax);\n\t\treturn sub;\n}\nconst particleEmitterDeviceCache = new DeviceCache();\nclass ParticleEmitter {\n\t\tconstructor(graphicsDevice, options){\n\t\t\t\tthis.material = null;\n\t\t\t\tthis.internalTex0 = null;\n\t\t\t\tthis.internalTex1 = null;\n\t\t\t\tthis.internalTex2 = null;\n\t\t\t\tthis.colorParam = null;\n\t\t\t\tthis.graphicsDevice = graphicsDevice;\n\t\t\t\tconst gd = graphicsDevice;\n\t\t\t\tconst precision = 32;\n\t\t\t\tthis.precision = precision;\n\t\t\t\tthis._addTimeTime = 0;\n\t\t\t\tsetPropertyTarget = this;\n\t\t\t\tsetPropertyOptions = options;\n\t\t\t\tsetProperty('numParticles', 1);\n\t\t\t\tif (this.numParticles > graphicsDevice.maxTextureSize) {\n\t\t\t\t\t\tthis.numParticles = graphicsDevice.maxTextureSize;\n\t\t\t\t}\n\t\t\t\tsetProperty('rate', 1);\n\t\t\t\tsetProperty('rate2', this.rate);\n\t\t\t\tsetProperty('lifetime', 50);\n\t\t\t\tsetProperty('emitterExtents', new Vec3(0, 0, 0));\n\t\t\t\tsetProperty('emitterExtentsInner', new Vec3(0, 0, 0));\n\t\t\t\tsetProperty('emitterRadius', 0);\n\t\t\t\tsetProperty('emitterRadiusInner', 0);\n\t\t\t\tsetProperty('emitterShape', EMITTERSHAPE_BOX);\n\t\t\t\tsetProperty('initialVelocity', 1);\n\t\t\t\tsetProperty('wrap', false);\n\t\t\t\tsetProperty('localSpace', false);\n\t\t\t\tsetProperty('screenSpace', false);\n\t\t\t\tsetProperty('wrapBounds', null);\n\t\t\t\tsetProperty('colorMap', this.defaultParamTexture);\n\t\t\t\tsetProperty('normalMap', null);\n\t\t\t\tsetProperty('loop', true);\n\t\t\t\tsetProperty('preWarm', false);\n\t\t\t\tsetProperty('sort', PARTICLESORT_NONE);\n\t\t\t\tsetProperty('mode', PARTICLEMODE_GPU);\n\t\t\t\tsetProperty('scene', null);\n\t\t\t\tsetProperty('lighting', false);\n\t\t\t\tsetProperty('halfLambert', false);\n\t\t\t\tsetProperty('intensity', 1.0);\n\t\t\t\tsetProperty('stretch', 0.0);\n\t\t\t\tsetProperty('alignToMotion', false);\n\t\t\t\tsetProperty('depthSoftening', 0);\n\t\t\t\tsetProperty('mesh', null);\n\t\t\t\tsetProperty('particleNormal', new Vec3(0, 1, 0));\n\t\t\t\tsetProperty('orientation', PARTICLEORIENTATION_SCREEN);\n\t\t\t\tsetProperty('depthWrite', false);\n\t\t\t\tsetProperty('noFog', false);\n\t\t\t\tsetProperty('blendType', BLEND_NORMAL);\n\t\t\t\tsetProperty('node', null);\n\t\t\t\tsetProperty('startAngle', 0);\n\t\t\t\tsetProperty('startAngle2', this.startAngle);\n\t\t\t\tsetProperty('animTilesX', 1);\n\t\t\t\tsetProperty('animTilesY', 1);\n\t\t\t\tsetProperty('animStartFrame', 0);\n\t\t\t\tsetProperty('animNumFrames', 1);\n\t\t\t\tsetProperty('animNumAnimations', 1);\n\t\t\t\tsetProperty('animIndex', 0);\n\t\t\t\tsetProperty('randomizeAnimIndex', false);\n\t\t\t\tsetProperty('animSpeed', 1);\n\t\t\t\tsetProperty('animLoop', true);\n\t\t\t\tthis._gpuUpdater = new ParticleGPUUpdater(this, gd);\n\t\t\t\tthis._cpuUpdater = new ParticleCPUUpdater(this);\n\t\t\t\tthis.emitterPosUniform = new Float32Array(3);\n\t\t\t\tthis.wrapBoundsUniform = new Float32Array(3);\n\t\t\t\tthis.emitterScaleUniform = new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tsetProperty('colorGraph', default1Curve3);\n\t\t\t\tsetProperty('colorGraph2', this.colorGraph);\n\t\t\t\tsetProperty('scaleGraph', default1Curve);\n\t\t\t\tsetProperty('scaleGraph2', this.scaleGraph);\n\t\t\t\tsetProperty('alphaGraph', default1Curve);\n\t\t\t\tsetProperty('alphaGraph2', this.alphaGraph);\n\t\t\t\tsetProperty('localVelocityGraph', default0Curve3);\n\t\t\t\tsetProperty('localVelocityGraph2', this.localVelocityGraph);\n\t\t\t\tsetProperty('velocityGraph', default0Curve3);\n\t\t\t\tsetProperty('velocityGraph2', this.velocityGraph);\n\t\t\t\tsetProperty('rotationSpeedGraph', default0Curve);\n\t\t\t\tsetProperty('rotationSpeedGraph2', this.rotationSpeedGraph);\n\t\t\t\tsetProperty('radialSpeedGraph', default0Curve);\n\t\t\t\tsetProperty('radialSpeedGraph2', this.radialSpeedGraph);\n\t\t\t\tthis.animTilesParams = new Float32Array(2);\n\t\t\t\tthis.animParams = new Float32Array(4);\n\t\t\t\tthis.animIndexParams = new Float32Array(2);\n\t\t\t\tthis.vbToSort = null;\n\t\t\t\tthis.vbOld = null;\n\t\t\t\tthis.particleDistance = null;\n\t\t\t\tthis.camera = null;\n\t\t\t\tthis.swapTex = false;\n\t\t\t\tthis.useMesh = true;\n\t\t\t\tthis.useCpu = !graphicsDevice.supportsGpuParticles;\n\t\t\t\tthis.pack8 = true;\n\t\t\t\tthis.localBounds = new BoundingBox();\n\t\t\t\tthis.worldBoundsNoTrail = new BoundingBox();\n\t\t\t\tthis.worldBoundsTrail = [\n\t\t\t\t\t\tnew BoundingBox(),\n\t\t\t\t\t\tnew BoundingBox()\n\t\t\t\t];\n\t\t\t\tthis.worldBounds = new BoundingBox();\n\t\t\t\tthis.worldBoundsSize = new Vec3();\n\t\t\t\tthis.prevWorldBoundsSize = new Vec3();\n\t\t\t\tthis.prevWorldBoundsCenter = new Vec3();\n\t\t\t\tthis.prevEmitterExtents = this.emitterExtents;\n\t\t\t\tthis.prevEmitterRadius = this.emitterRadius;\n\t\t\t\tthis.worldBoundsMul = new Vec3();\n\t\t\t\tthis.worldBoundsAdd = new Vec3();\n\t\t\t\tthis.timeToSwitchBounds = 0;\n\t\t\t\tthis.shaderParticleUpdateRespawn = null;\n\t\t\t\tthis.shaderParticleUpdateNoRespawn = null;\n\t\t\t\tthis.shaderParticleUpdateOnStop = null;\n\t\t\t\tthis.numParticleVerts = 0;\n\t\t\t\tthis.numParticleIndices = 0;\n\t\t\t\tthis.material = null;\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.drawOrder = 0;\n\t\t\t\tthis.seed = Math.random();\n\t\t\t\tthis.fixedTimeStep = 1.0 / 60;\n\t\t\t\tthis.maxSubSteps = 10;\n\t\t\t\tthis.simTime = 0;\n\t\t\t\tthis.simTimeTotal = 0;\n\t\t\t\tthis.beenReset = false;\n\t\t\t\tthis._layer = null;\n\t\t\t\tthis.rebuild();\n\t\t}\n\t\tget defaultParamTexture() {\n\t\t\t\treturn particleEmitterDeviceCache.get(this.graphicsDevice, ()=>{\n\t\t\t\t\t\tconst resolution = 16;\n\t\t\t\t\t\tconst centerPoint = resolution * 0.5 + 0.5;\n\t\t\t\t\t\tconst dtex = new Float32Array(resolution * resolution * 4);\n\t\t\t\t\t\tfor(let y = 0; y < resolution; y++){\n\t\t\t\t\t\t\t\tfor(let x = 0; x < resolution; x++){\n\t\t\t\t\t\t\t\t\t\tconst xgrad = x + 1 - centerPoint;\n\t\t\t\t\t\t\t\t\t\tconst ygrad = y + 1 - centerPoint;\n\t\t\t\t\t\t\t\t\t\tconst c = saturate(1 - saturate(Math.sqrt(xgrad * xgrad + ygrad * ygrad) / resolution) - 0.5);\n\t\t\t\t\t\t\t\t\t\tconst p = y * resolution + x;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4] = 1;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4 + 1] = 1;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4 + 2] = 1;\n\t\t\t\t\t\t\t\t\t\tdtex[p * 4 + 3] = c;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst texture = _createTexture(this.graphicsDevice, resolution, resolution, dtex, PIXELFORMAT_SRGBA8, 1.0, true);\n\t\t\t\t\t\ttexture.minFilter = FILTER_LINEAR;\n\t\t\t\t\t\ttexture.magFilter = FILTER_LINEAR;\n\t\t\t\t\t\treturn texture;\n\t\t\t\t});\n\t\t}\n\t\tonChangeCamera() {\n\t\t\t\tthis.resetMaterial();\n\t\t}\n\t\tcalculateBoundsMad() {\n\t\t\t\tthis.worldBoundsMul.x = 1.0 / this.worldBoundsSize.x;\n\t\t\t\tthis.worldBoundsMul.y = 1.0 / this.worldBoundsSize.y;\n\t\t\t\tthis.worldBoundsMul.z = 1.0 / this.worldBoundsSize.z;\n\t\t\t\tthis.worldBoundsAdd.copy(this.worldBounds.center).mul(this.worldBoundsMul).mulScalar(-1);\n\t\t\t\tthis.worldBoundsAdd.x += 0.5;\n\t\t\t\tthis.worldBoundsAdd.y += 0.5;\n\t\t\t\tthis.worldBoundsAdd.z += 0.5;\n\t\t}\n\t\tcalculateWorldBounds() {\n\t\t\t\tif (!this.node) return;\n\t\t\t\tthis.prevWorldBoundsSize.copy(this.worldBoundsSize);\n\t\t\t\tthis.prevWorldBoundsCenter.copy(this.worldBounds.center);\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tlet recalculateLocalBounds = false;\n\t\t\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\t\t\trecalculateLocalBounds = !this.emitterExtents.equals(this.prevEmitterExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\trecalculateLocalBounds = !(this.emitterRadius === this.prevEmitterRadius);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (recalculateLocalBounds) {\n\t\t\t\t\t\t\t\tthis.calculateLocalBounds();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst nodeWT = this.node.getWorldTransform();\n\t\t\t\tif (this.localSpace) {\n\t\t\t\t\t\tthis.worldBoundsNoTrail.copy(this.localBounds);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.worldBoundsNoTrail.setFromTransformedAabb(this.localBounds, nodeWT);\n\t\t\t\t}\n\t\t\t\tthis.worldBoundsTrail[0].add(this.worldBoundsNoTrail);\n\t\t\t\tthis.worldBoundsTrail[1].add(this.worldBoundsNoTrail);\n\t\t\t\tconst now = this.simTimeTotal;\n\t\t\t\tif (now >= this.timeToSwitchBounds) {\n\t\t\t\t\t\tthis.worldBoundsTrail[0].copy(this.worldBoundsTrail[1]);\n\t\t\t\t\t\tthis.worldBoundsTrail[1].copy(this.worldBoundsNoTrail);\n\t\t\t\t\t\tthis.timeToSwitchBounds = now + this.lifetime;\n\t\t\t\t}\n\t\t\t\tthis.worldBounds.copy(this.worldBoundsTrail[0]);\n\t\t\t\tthis.worldBoundsSize.copy(this.worldBounds.halfExtents).mulScalar(2);\n\t\t\t\tif (this.localSpace) {\n\t\t\t\t\t\tthis.meshInstance.aabb.setFromTransformedAabb(this.worldBounds, nodeWT);\n\t\t\t\t\t\tthis.meshInstance.mesh.aabb.setFromTransformedAabb(this.worldBounds, nodeWT);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.meshInstance.aabb.copy(this.worldBounds);\n\t\t\t\t\t\tthis.meshInstance.mesh.aabb.copy(this.worldBounds);\n\t\t\t\t}\n\t\t\t\tthis.meshInstance._aabbVer = 1 - this.meshInstance._aabbVer;\n\t\t\t\tif (this.pack8) this.calculateBoundsMad();\n\t\t}\n\t\tresetWorldBounds() {\n\t\t\t\tif (!this.node) return;\n\t\t\t\tthis.worldBoundsNoTrail.setFromTransformedAabb(this.localBounds, this.localSpace ? Mat4.IDENTITY : this.node.getWorldTransform());\n\t\t\t\tthis.worldBoundsTrail[0].copy(this.worldBoundsNoTrail);\n\t\t\t\tthis.worldBoundsTrail[1].copy(this.worldBoundsNoTrail);\n\t\t\t\tthis.worldBounds.copy(this.worldBoundsTrail[0]);\n\t\t\t\tthis.worldBoundsSize.copy(this.worldBounds.halfExtents).mulScalar(2);\n\t\t\t\tthis.prevWorldBoundsSize.copy(this.worldBoundsSize);\n\t\t\t\tthis.prevWorldBoundsCenter.copy(this.worldBounds.center);\n\t\t\t\tthis.simTimeTotal = 0;\n\t\t\t\tthis.timeToSwitchBounds = 0;\n\t\t}\n\t\tcalculateLocalBounds() {\n\t\t\t\tlet minx = Number.MAX_VALUE;\n\t\t\t\tlet miny = Number.MAX_VALUE;\n\t\t\t\tlet minz = Number.MAX_VALUE;\n\t\t\t\tlet maxx = -Number.MAX_VALUE;\n\t\t\t\tlet maxy = -Number.MAX_VALUE;\n\t\t\t\tlet maxz = -Number.MAX_VALUE;\n\t\t\t\tlet maxR = 0;\n\t\t\t\tlet maxScale = 0;\n\t\t\t\tconst stepWeight = this.lifetime / this.precision;\n\t\t\t\tconst wVels = [\n\t\t\t\t\t\tthis.qVelocity,\n\t\t\t\t\t\tthis.qVelocity2\n\t\t\t\t];\n\t\t\t\tconst lVels = [\n\t\t\t\t\t\tthis.qLocalVelocity,\n\t\t\t\t\t\tthis.qLocalVelocity2\n\t\t\t\t];\n\t\t\t\tconst accumX = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumY = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumZ = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumR = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst accumW = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tlet x, y, z;\n\t\t\t\tfor(let i = 0; i < this.precision + 1; i++){\n\t\t\t\t\t\tconst index = Math.min(i, this.precision - 1);\n\t\t\t\t\t\tfor(let j = 0; j < 2; j++){\n\t\t\t\t\t\t\t\tx = lVels[j][index * 3 + 0] * stepWeight + accumX[j];\n\t\t\t\t\t\t\t\ty = lVels[j][index * 3 + 1] * stepWeight + accumY[j];\n\t\t\t\t\t\t\t\tz = lVels[j][index * 3 + 2] * stepWeight + accumZ[j];\n\t\t\t\t\t\t\t\tminx = Math.min(x, minx);\n\t\t\t\t\t\t\t\tminy = Math.min(y, miny);\n\t\t\t\t\t\t\t\tminz = Math.min(z, minz);\n\t\t\t\t\t\t\t\tmaxx = Math.max(x, maxx);\n\t\t\t\t\t\t\t\tmaxy = Math.max(y, maxy);\n\t\t\t\t\t\t\t\tmaxz = Math.max(z, maxz);\n\t\t\t\t\t\t\t\taccumX[j] = x;\n\t\t\t\t\t\t\t\taccumY[j] = y;\n\t\t\t\t\t\t\t\taccumZ[j] = z;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let j = 0; j < 2; j++){\n\t\t\t\t\t\t\t\taccumW[j] += stepWeight * Math.sqrt(wVels[j][index * 3 + 0] * wVels[j][index * 3 + 0] + wVels[j][index * 3 + 1] * wVels[j][index * 3 + 1] + wVels[j][index * 3 + 2] * wVels[j][index * 3 + 2]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\taccumR[0] += this.qRadialSpeed[index] * stepWeight;\n\t\t\t\t\t\taccumR[1] += this.qRadialSpeed2[index] * stepWeight;\n\t\t\t\t\t\tmaxR = Math.max(maxR, Math.max(Math.abs(accumR[0]), Math.abs(accumR[1])));\n\t\t\t\t\t\tmaxScale = Math.max(maxScale, this.qScale[index]);\n\t\t\t\t}\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tx = this.emitterExtents.x * 0.5;\n\t\t\t\t\t\ty = this.emitterExtents.y * 0.5;\n\t\t\t\t\t\tz = this.emitterExtents.z * 0.5;\n\t\t\t\t} else {\n\t\t\t\t\t\tx = this.emitterRadius;\n\t\t\t\t\t\ty = this.emitterRadius;\n\t\t\t\t\t\tz = this.emitterRadius;\n\t\t\t\t}\n\t\t\t\tconst w = Math.max(accumW[0], accumW[1]);\n\t\t\t\tbMin.x = minx - maxScale - x - maxR - w;\n\t\t\t\tbMin.y = miny - maxScale - y - maxR - w;\n\t\t\t\tbMin.z = minz - maxScale - z - maxR - w;\n\t\t\t\tbMax.x = maxx + maxScale + x + maxR + w;\n\t\t\t\tbMax.y = maxy + maxScale + y + maxR + w;\n\t\t\t\tbMax.z = maxz + maxScale + z + maxR + w;\n\t\t\t\tthis.localBounds.setMinMax(bMin, bMax);\n\t\t}\n\t\trebuild() {\n\t\t\t\tconst gd = this.graphicsDevice;\n\t\t\t\tif (this.colorMap === null) this.colorMap = this.defaultParamTexture;\n\t\t\t\tthis.spawnBounds = this.emitterShape === EMITTERSHAPE_BOX ? this.emitterExtents : this.emitterRadius;\n\t\t\t\tthis.useCpu = this.useCpu || this.sort > PARTICLESORT_NONE || gd.maxVertexTextures <= 1 || gd.fragmentUniformsCount < 64 || gd.forceCpuParticles;\n\t\t\t\tconst wasVisible = this._destroyResources();\n\t\t\t\tthis.pack8 = (this.pack8 || !gd.textureFloatRenderable) && !this.useCpu;\n\t\t\t\tparticleTexHeight = this.useCpu || this.pack8 ? 4 : 2;\n\t\t\t\tthis.useMesh = !!this.mesh;\n\t\t\t\tthis.numParticlesPot = math.nextPowerOfTwo(this.numParticles);\n\t\t\t\tthis.rebuildGraphs();\n\t\t\t\tthis.calculateLocalBounds();\n\t\t\t\tthis.resetWorldBounds();\n\t\t\t\tif (this.node) {\n\t\t\t\t\t\tthis.worldBounds.setFromTransformedAabb(this.localBounds, this.localSpace ? Mat4.IDENTITY : this.node.getWorldTransform());\n\t\t\t\t\t\tthis.worldBoundsTrail[0].copy(this.worldBounds);\n\t\t\t\t\t\tthis.worldBoundsTrail[1].copy(this.worldBounds);\n\t\t\t\t\t\tthis.worldBoundsSize.copy(this.worldBounds.halfExtents).mulScalar(2);\n\t\t\t\t\t\tthis.prevWorldBoundsSize.copy(this.worldBoundsSize);\n\t\t\t\t\t\tthis.prevWorldBoundsCenter.copy(this.worldBounds.center);\n\t\t\t\t\t\tif (this.pack8) this.calculateBoundsMad();\n\t\t\t\t}\n\t\t\t\tthis.vbToSort = new Array(this.numParticles);\n\t\t\t\tfor(let iSort = 0; iSort < this.numParticles; iSort++)this.vbToSort[iSort] = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.particleDistance = new Float32Array(this.numParticles);\n\t\t\t\tthis._gpuUpdater.randomize();\n\t\t\t\tthis.particleTex = new Float32Array(this.numParticlesPot * particleTexHeight * particleTexChannels);\n\t\t\t\tconst emitterPos = this.node === null || this.localSpace ? Vec3.ZERO : this.node.getPosition();\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\tif (this.node === null || this.localSpace) {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, Quat.IDENTITY, this.spawnBounds);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, this.node.getRotation(), tmpVec3.copy(this.spawnBounds).mul(this.node.localScale));\n\t\t\t\t\t\t}\n\t\t\t\t\t\textentsInnerRatioUniform[0] = this.emitterExtents.x !== 0 ? this.emitterExtentsInner.x / this.emitterExtents.x : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[1] = this.emitterExtents.y !== 0 ? this.emitterExtentsInner.y / this.emitterExtents.y : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[2] = this.emitterExtents.z !== 0 ? this.emitterExtentsInner.z / this.emitterExtents.z : 0;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.numParticles; i++){\n\t\t\t\t\t\tthis._cpuUpdater.calcSpawnPosition(this.particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, i);\n\t\t\t\t\t\tif (this.useCpu) this.particleTex[i * particleTexChannels + 3 + this.numParticlesPot * 2 * particleTexChannels] = 1;\n\t\t\t\t}\n\t\t\t\tthis.particleTexStart = new Float32Array(this.numParticlesPot * particleTexHeight * particleTexChannels);\n\t\t\t\tfor(let i = 0; i < this.particleTexStart.length; i++){\n\t\t\t\t\t\tthis.particleTexStart[i] = this.particleTex[i];\n\t\t\t\t}\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tif (this.pack8) {\n\t\t\t\t\t\t\t\tthis.particleTexIN = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex, PIXELFORMAT_RGBA8, 1, false);\n\t\t\t\t\t\t\t\tthis.particleTexOUT = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex, PIXELFORMAT_RGBA8, 1, false);\n\t\t\t\t\t\t\t\tthis.particleTexStart = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTexStart, PIXELFORMAT_RGBA8, 1, false);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.particleTexIN = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex);\n\t\t\t\t\t\t\t\tthis.particleTexOUT = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTex);\n\t\t\t\t\t\t\t\tthis.particleTexStart = _createTexture(gd, this.numParticlesPot, particleTexHeight, this.particleTexStart);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.rtParticleTexIN = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.particleTexIN,\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.rtParticleTexOUT = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.particleTexOUT,\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.swapTex = false;\n\t\t\t\t}\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (this.localSpace) defines.set('LOCAL_SPACE', '');\n\t\t\t\tif (this.pack8) defines.set('PACK8', '');\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) defines.set('EMITTERSHAPE_BOX', '');\n\t\t\t\tconst shaderUniqueId = `Shape:${this.emitterShape}-Pack:${this.pack8}-Local:${this.localSpace}`;\n\t\t\t\tconst engineChunks = ShaderChunks.get(gd, gd.isWebGPU ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\tconst includes = new Map(engineChunks);\n\t\t\t\tconst shaderOptions = {\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentChunk: 'particle_simulationPS',\n\t\t\t\t\t\tfragmentDefines: defines,\n\t\t\t\t\t\tfragmentIncludes: includes\n\t\t\t\t};\n\t\t\t\tshaderOptions.uniqueName = `ParticleUpdateRespawn-${shaderUniqueId}`;\n\t\t\t\tdefines.set('RESPAWN', '');\n\t\t\t\tthis.shaderParticleUpdateRespawn = ShaderUtils.createShader(gd, shaderOptions);\n\t\t\t\tdefines.delete('RESPAWN');\n\t\t\t\tshaderOptions.uniqueName = `ParticleUpdateNoRespawn-${shaderUniqueId}`;\n\t\t\t\tdefines.set('NO_RESPAWN', '');\n\t\t\t\tthis.shaderParticleUpdateNoRespawn = ShaderUtils.createShader(gd, shaderOptions);\n\t\t\t\tdefines.delete('NO_RESPAWN');\n\t\t\t\tshaderOptions.uniqueName = `ParticleUpdateStop-${shaderUniqueId}`;\n\t\t\t\tdefines.set('ON_STOP', '');\n\t\t\t\tthis.shaderParticleUpdateOnStop = ShaderUtils.createShader(gd, shaderOptions);\n\t\t\t\tthis.numParticleVerts = this.useMesh ? this.mesh.vertexBuffer.numVertices : 4;\n\t\t\t\tthis.numParticleIndices = this.useMesh ? this.mesh.indexBuffer[0].numIndices : 6;\n\t\t\t\tthis._allocate(this.numParticles);\n\t\t\t\tconst mesh = new Mesh(gd);\n\t\t\t\tmesh.vertexBuffer = this.vertexBuffer;\n\t\t\t\tmesh.indexBuffer[0] = this.indexBuffer;\n\t\t\t\tmesh.primitive[0].type = PRIMITIVE_TRIANGLES;\n\t\t\t\tmesh.primitive[0].base = 0;\n\t\t\t\tmesh.primitive[0].count = this.numParticles * this.numParticleIndices;\n\t\t\t\tmesh.primitive[0].indexed = true;\n\t\t\t\tthis.material = this._createMaterial();\n\t\t\t\tthis.resetMaterial();\n\t\t\t\tthis.meshInstance = new MeshInstance(mesh, this.material, this.node);\n\t\t\t\tthis.meshInstance.pick = false;\n\t\t\t\tthis.meshInstance.updateKey();\n\t\t\t\tthis.meshInstance.cull = true;\n\t\t\t\tif (this.localSpace) {\n\t\t\t\t\t\tthis.meshInstance.aabb.setFromTransformedAabb(this.worldBounds, this.node.getWorldTransform());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.meshInstance.aabb.copy(this.worldBounds);\n\t\t\t\t}\n\t\t\t\tthis.meshInstance._updateAabb = false;\n\t\t\t\tthis.meshInstance.visible = wasVisible;\n\t\t\t\tthis._setMaterialTextures();\n\t\t\t\tthis.resetTime();\n\t\t\t\tthis.addTime(0, false);\n\t\t\t\tif (this.preWarm) this.prewarm(this.lifetime);\n\t\t}\n\t\t_isAnimated() {\n\t\t\t\treturn this.animNumFrames >= 1 && (this.animTilesX > 1 || this.animTilesY > 1) && (this.colorMap && this.colorMap !== this.defaultParamTexture || this.normalMap);\n\t\t}\n\t\trebuildGraphs() {\n\t\t\t\tconst precision = this.precision;\n\t\t\t\tconst gd = this.graphicsDevice;\n\t\t\t\tthis.qLocalVelocity = this.localVelocityGraph.quantize(precision);\n\t\t\t\tthis.qVelocity = this.velocityGraph.quantize(precision);\n\t\t\t\tthis.qColor = this.colorGraph.quantizeClamped(precision, 0, 1);\n\t\t\t\tthis.qRotSpeed = this.rotationSpeedGraph.quantize(precision);\n\t\t\t\tthis.qScale = this.scaleGraph.quantize(precision);\n\t\t\t\tthis.qAlpha = this.alphaGraph.quantize(precision);\n\t\t\t\tthis.qRadialSpeed = this.radialSpeedGraph.quantize(precision);\n\t\t\t\tthis.qLocalVelocity2 = this.localVelocityGraph2.quantize(precision);\n\t\t\t\tthis.qVelocity2 = this.velocityGraph2.quantize(precision);\n\t\t\t\tthis.qColor2 = this.colorGraph2.quantizeClamped(precision, 0, 1);\n\t\t\t\tthis.qRotSpeed2 = this.rotationSpeedGraph2.quantize(precision);\n\t\t\t\tthis.qScale2 = this.scaleGraph2.quantize(precision);\n\t\t\t\tthis.qAlpha2 = this.alphaGraph2.quantize(precision);\n\t\t\t\tthis.qRadialSpeed2 = this.radialSpeedGraph2.quantize(precision);\n\t\t\t\tfor(let i = 0; i < precision; i++){\n\t\t\t\t\t\tthis.qRotSpeed[i] *= math.DEG_TO_RAD;\n\t\t\t\t\t\tthis.qRotSpeed2[i] *= math.DEG_TO_RAD;\n\t\t\t\t}\n\t\t\t\tthis.localVelocityUMax = new Float32Array(3);\n\t\t\t\tthis.velocityUMax = new Float32Array(3);\n\t\t\t\tthis.colorUMax = new Float32Array(3);\n\t\t\t\tthis.rotSpeedUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.scaleUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.alphaUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.radialSpeedUMax = [\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.qLocalVelocityDiv = divGraphFrom2Curves(this.qLocalVelocity, this.qLocalVelocity2, this.localVelocityUMax);\n\t\t\t\tthis.qVelocityDiv = divGraphFrom2Curves(this.qVelocity, this.qVelocity2, this.velocityUMax);\n\t\t\t\tthis.qColorDiv = divGraphFrom2Curves(this.qColor, this.qColor2, this.colorUMax);\n\t\t\t\tthis.qRotSpeedDiv = divGraphFrom2Curves(this.qRotSpeed, this.qRotSpeed2, this.rotSpeedUMax);\n\t\t\t\tthis.qScaleDiv = divGraphFrom2Curves(this.qScale, this.qScale2, this.scaleUMax);\n\t\t\t\tthis.qAlphaDiv = divGraphFrom2Curves(this.qAlpha, this.qAlpha2, this.alphaUMax);\n\t\t\t\tthis.qRadialSpeedDiv = divGraphFrom2Curves(this.qRadialSpeed, this.qRadialSpeed2, this.radialSpeedUMax);\n\t\t\t\tif (this.pack8) {\n\t\t\t\t\t\tconst umax = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qVelocity, umax);\n\t\t\t\t\t\tconst umax2 = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qVelocity2, umax2);\n\t\t\t\t\t\tconst lumax = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qLocalVelocity, lumax);\n\t\t\t\t\t\tconst lumax2 = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qLocalVelocity2, lumax2);\n\t\t\t\t\t\tconst rumax = [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qRadialSpeed, rumax);\n\t\t\t\t\t\tconst rumax2 = [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t\t\tmaxUnsignedGraphValue(this.qRadialSpeed2, rumax2);\n\t\t\t\t\t\tlet maxVel = Math.max(umax[0], umax2[0]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax[1]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax2[1]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax[2]);\n\t\t\t\t\t\tmaxVel = Math.max(maxVel, umax2[2]);\n\t\t\t\t\t\tlet lmaxVel = Math.max(lumax[0], lumax2[0]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax[1]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax2[1]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax[2]);\n\t\t\t\t\t\tlmaxVel = Math.max(lmaxVel, lumax2[2]);\n\t\t\t\t\t\tconst maxRad = Math.max(rumax[0], rumax2[0]);\n\t\t\t\t\t\tthis.maxVel = maxVel + lmaxVel + maxRad;\n\t\t\t\t}\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tthis.internalTex0 = _createTexture(gd, precision, 1, packTextureXYZ_NXYZ(this.qLocalVelocity, this.qLocalVelocityDiv));\n\t\t\t\t\t\tthis.internalTex1 = _createTexture(gd, precision, 1, packTextureXYZ_NXYZ(this.qVelocity, this.qVelocityDiv));\n\t\t\t\t\t\tthis.internalTex2 = _createTexture(gd, precision, 1, packTexture5Floats(this.qRotSpeed, this.qScale, this.qScaleDiv, this.qRotSpeedDiv, this.qAlphaDiv));\n\t\t\t\t\t\tthis.internalTex3 = _createTexture(gd, precision, 1, packTexture2Floats(this.qRadialSpeed, this.qRadialSpeedDiv));\n\t\t\t\t}\n\t\t\t\tthis.colorParam = _createTexture(gd, precision, 1, packTextureRGBA(this.qColor, this.qAlpha), PIXELFORMAT_SRGBA8, 1.0, true);\n\t\t}\n\t\t_setMaterialTextures() {\n\t\t\t\tif (this.colorMap) {\n\t\t\t\t\t\tthis.material.setParameter('colorMap', this.colorMap);\n\t\t\t\t\t\tif (this.lighting && this.normalMap) {\n\t\t\t\t\t\t\t\tthis.material.setParameter('normalMap', this.normalMap);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_createMaterial() {\n\t\t\t\tconst material = new ParticleMaterial(this);\n\t\t\t\tmaterial.name = `EmitterMaterial:${this.node.name}`;\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.alphaWrite = false;\n\t\t\t\tmaterial.blendType = this.blendType;\n\t\t\t\tmaterial.depthWrite = this.depthWrite;\n\t\t\t\treturn material;\n\t\t}\n\t\tresetMaterial() {\n\t\t\t\tconst material = this.material;\n\t\t\t\tmaterial.setParameter('stretch', this.stretch);\n\t\t\t\tif (this._isAnimated()) {\n\t\t\t\t\t\tmaterial.setParameter('animTexTilesParams', this.animTilesParams);\n\t\t\t\t\t\tmaterial.setParameter('animTexParams', this.animParams);\n\t\t\t\t\t\tmaterial.setParameter('animTexIndexParams', this.animIndexParams);\n\t\t\t\t}\n\t\t\t\tmaterial.setParameter('colorMult', this.intensity);\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tmaterial.setParameter('internalTex0', this.internalTex0);\n\t\t\t\t\t\tmaterial.setParameter('internalTex1', this.internalTex1);\n\t\t\t\t\t\tmaterial.setParameter('internalTex2', this.internalTex2);\n\t\t\t\t\t\tmaterial.setParameter('internalTex3', this.internalTex3);\n\t\t\t\t}\n\t\t\t\tmaterial.setParameter('colorParam', this.colorParam);\n\t\t\t\tmaterial.setParameter('numParticles', this.numParticles);\n\t\t\t\tmaterial.setParameter('numParticlesPot', this.numParticlesPot);\n\t\t\t\tmaterial.setParameter('lifetime', this.lifetime);\n\t\t\t\tmaterial.setParameter('rate', this.rate);\n\t\t\t\tmaterial.setParameter('rateDiv', this.rate2 - this.rate);\n\t\t\t\tmaterial.setParameter('seed', this.seed);\n\t\t\t\tmaterial.setParameter('scaleDivMult', this.scaleUMax[0]);\n\t\t\t\tmaterial.setParameter('alphaDivMult', this.alphaUMax[0]);\n\t\t\t\tmaterial.setParameter('radialSpeedDivMult', this.radialSpeedUMax[0]);\n\t\t\t\tmaterial.setParameter('graphNumSamples', this.precision);\n\t\t\t\tmaterial.setParameter('graphSampleSize', 1.0 / this.precision);\n\t\t\t\tmaterial.setParameter('emitterScale', new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]));\n\t\t\t\tif (this.pack8) {\n\t\t\t\t\t\tthis._gpuUpdater._setInputBounds();\n\t\t\t\t\t\tmaterial.setParameter('inBoundsSize', this._gpuUpdater.inBoundsSizeUniform);\n\t\t\t\t\t\tmaterial.setParameter('inBoundsCenter', this._gpuUpdater.inBoundsCenterUniform);\n\t\t\t\t\t\tmaterial.setParameter('maxVel', this.maxVel);\n\t\t\t\t}\n\t\t\t\tif (this.wrap && this.wrapBounds) {\n\t\t\t\t\t\tthis.wrapBoundsUniform[0] = this.wrapBounds.x;\n\t\t\t\t\t\tthis.wrapBoundsUniform[1] = this.wrapBounds.y;\n\t\t\t\t\t\tthis.wrapBoundsUniform[2] = this.wrapBounds.z;\n\t\t\t\t\t\tmaterial.setParameter('wrapBounds', this.wrapBoundsUniform);\n\t\t\t\t}\n\t\t\t\tthis._setMaterialTextures();\n\t\t\t\tif (this.depthSoftening > 0) {\n\t\t\t\t\t\tmaterial.setParameter('softening', 1.0 / (this.depthSoftening * this.depthSoftening * 100));\n\t\t\t\t}\n\t\t\t\tif (this.stretch > 0.0) material.cull = CULLFACE_NONE;\n\t\t\t\tthis._compParticleFaceParams();\n\t\t}\n\t\t_compParticleFaceParams() {\n\t\t\t\tlet tangent, binormal;\n\t\t\t\tif (this.orientation === PARTICLEORIENTATION_SCREEN) {\n\t\t\t\t\t\ttangent = new Float32Array([\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tbinormal = new Float32Array([\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tlet n;\n\t\t\t\t\t\tif (this.orientation === PARTICLEORIENTATION_WORLD) {\n\t\t\t\t\t\t\t\tn = this.particleNormal.normalize();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst emitterMat = this.node === null ? Mat4.IDENTITY : this.node.getWorldTransform();\n\t\t\t\t\t\t\t\tn = emitterMat.transformVector(this.particleNormal).normalize();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst t = new Vec3(1, 0, 0);\n\t\t\t\t\t\tif (Math.abs(t.dot(n)) === 1) {\n\t\t\t\t\t\t\t\tt.set(0, 0, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst b = new Vec3().cross(n, t).normalize();\n\t\t\t\t\t\tt.cross(b, n).normalize();\n\t\t\t\t\t\ttangent = new Float32Array([\n\t\t\t\t\t\t\t\tt.x,\n\t\t\t\t\t\t\t\tt.y,\n\t\t\t\t\t\t\t\tt.z\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tbinormal = new Float32Array([\n\t\t\t\t\t\t\t\tb.x,\n\t\t\t\t\t\t\t\tb.y,\n\t\t\t\t\t\t\t\tb.z\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tthis.material.setParameter('faceTangent', tangent);\n\t\t\t\tthis.material.setParameter('faceBinorm', binormal);\n\t\t}\n\t\tgetVertexInfo() {\n\t\t\t\tconst elements = [];\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR0,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR1,\n\t\t\t\t\t\t\t\t\t\tcomponents: 2,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR0,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR1,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR2,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR3,\n\t\t\t\t\t\t\t\tcomponents: 1,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR4,\n\t\t\t\t\t\t\t\tcomponents: this.useMesh ? 4 : 2,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn elements;\n\t\t}\n\t\t_allocate(numParticles) {\n\t\t\t\tconst psysVertCount = numParticles * this.numParticleVerts;\n\t\t\t\tconst psysIndexCount = numParticles * this.numParticleIndices;\n\t\t\t\tif (this.vertexBuffer === undefined || this.vertexBuffer.getNumVertices() !== psysVertCount) {\n\t\t\t\t\t\tconst elements = this.getVertexInfo();\n\t\t\t\t\t\tconst vertexFormat = new VertexFormat(this.graphicsDevice, elements);\n\t\t\t\t\t\tthis.vertexBuffer = new VertexBuffer(this.graphicsDevice, vertexFormat, psysVertCount, {\n\t\t\t\t\t\t\t\tusage: BUFFER_DYNAMIC\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.indexBuffer = new IndexBuffer(this.graphicsDevice, INDEXFORMAT_UINT32, psysIndexCount);\n\t\t\t\t\t\tconst data = new Float32Array(this.vertexBuffer.lock());\n\t\t\t\t\t\tlet meshData, stride, texCoordOffset;\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\tmeshData = new Float32Array(this.mesh.vertexBuffer.lock());\n\t\t\t\t\t\t\t\tstride = meshData.length / this.mesh.vertexBuffer.numVertices;\n\t\t\t\t\t\t\t\tfor(let elem = 0; elem < this.mesh.vertexBuffer.format.elements.length; elem++){\n\t\t\t\t\t\t\t\t\t\tif (this.mesh.vertexBuffer.format.elements[elem].name === SEMANTIC_TEXCOORD0) {\n\t\t\t\t\t\t\t\t\t\t\t\ttexCoordOffset = this.mesh.vertexBuffer.format.elements[elem].offset / 4;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < psysVertCount; i++){\n\t\t\t\t\t\t\t\tconst id = Math.floor(i / this.numParticleVerts);\n\t\t\t\t\t\t\t\tif (!this.useMesh) {\n\t\t\t\t\t\t\t\t\t\tconst vertID = i % 4;\n\t\t\t\t\t\t\t\t\t\tdata[i * 4] = particleVerts[vertID][0];\n\t\t\t\t\t\t\t\t\t\tdata[i * 4 + 1] = particleVerts[vertID][1];\n\t\t\t\t\t\t\t\t\t\tdata[i * 4 + 2] = 0;\n\t\t\t\t\t\t\t\t\t\tdata[i * 4 + 3] = id;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst vert = i % this.numParticleVerts;\n\t\t\t\t\t\t\t\t\t\tdata[i * 6] = meshData[vert * stride];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 1] = meshData[vert * stride + 1];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 2] = meshData[vert * stride + 2];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 3] = id;\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 4] = meshData[vert * stride + texCoordOffset + 0];\n\t\t\t\t\t\t\t\t\t\tdata[i * 6 + 5] = 1.0 - meshData[vert * stride + texCoordOffset + 1];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.useCpu) {\n\t\t\t\t\t\t\t\tthis.vbCPU = new Float32Array(data);\n\t\t\t\t\t\t\t\tthis.vbOld = new Float32Array(this.vbCPU.length);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.vertexBuffer.unlock();\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\tthis.mesh.vertexBuffer.unlock();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet dst = 0;\n\t\t\t\t\t\tconst indices = new Uint32Array(this.indexBuffer.lock());\n\t\t\t\t\t\tif (this.useMesh) {\n\t\t\t\t\t\t\t\tconst ib = this.mesh.indexBuffer[0];\n\t\t\t\t\t\t\t\tmeshData = new typedArrayIndexFormats[ib.format](ib.lock());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < numParticles; i++){\n\t\t\t\t\t\t\t\tif (!this.useMesh) {\n\t\t\t\t\t\t\t\t\t\tconst baseIndex = i * 4;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 1;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 2;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 2;\n\t\t\t\t\t\t\t\t\t\tindices[dst++] = baseIndex + 3;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < this.numParticleIndices; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tindices[i * this.numParticleIndices + j] = meshData[j] + i * this.numParticleVerts;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.indexBuffer.unlock();\n\t\t\t\t\t\tif (this.useMesh) this.mesh.indexBuffer[0].unlock();\n\t\t\t\t}\n\t\t}\n\t\treset() {\n\t\t\t\tthis.beenReset = true;\n\t\t\t\tthis.seed = Math.random();\n\t\t\t\tthis.material.setParameter('seed', this.seed);\n\t\t\t\tif (this.useCpu) {\n\t\t\t\t\t\tfor(let i = 0; i < this.particleTexStart.length; i++){\n\t\t\t\t\t\t\t\tthis.particleTex[i] = this.particleTexStart[i];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setMaterialTextures();\n\t\t\t\t}\n\t\t\t\tthis.resetWorldBounds();\n\t\t\t\tthis.resetTime();\n\t\t\t\tconst origLoop = this.loop;\n\t\t\t\tthis.loop = true;\n\t\t\t\tthis.addTime(0, false);\n\t\t\t\tthis.loop = origLoop;\n\t\t\t\tif (this.preWarm) {\n\t\t\t\t\t\tthis.prewarm(this.lifetime);\n\t\t\t\t}\n\t\t}\n\t\tprewarm(time) {\n\t\t\t\tconst lifetimeFraction = time / this.lifetime;\n\t\t\t\tconst iterations = Math.min(Math.floor(lifetimeFraction * this.precision), this.precision);\n\t\t\t\tconst stepDelta = time / iterations;\n\t\t\t\tfor(let i = 0; i < iterations; i++){\n\t\t\t\t\t\tthis.addTime(stepDelta, false);\n\t\t\t\t}\n\t\t}\n\t\tresetTime() {\n\t\t\t\tthis.endTime = calcEndTime(this);\n\t\t}\n\t\tfinishFrame() {\n\t\t\t\tif (this.useCpu) this.vertexBuffer.unlock();\n\t\t}\n\t\taddTime(delta, isOnStop) {\n\t\t\t\tconst device = this.graphicsDevice;\n\t\t\t\tthis.simTimeTotal += delta;\n\t\t\t\tthis.calculateWorldBounds();\n\t\t\t\tif (this._isAnimated()) {\n\t\t\t\t\t\tconst tilesParams = this.animTilesParams;\n\t\t\t\t\t\ttilesParams[0] = 1.0 / this.animTilesX;\n\t\t\t\t\t\ttilesParams[1] = 1.0 / this.animTilesY;\n\t\t\t\t\t\tconst params = this.animParams;\n\t\t\t\t\t\tparams[0] = this.animStartFrame;\n\t\t\t\t\t\tparams[1] = this.animNumFrames * this.animSpeed;\n\t\t\t\t\t\tparams[2] = this.animNumFrames - 1;\n\t\t\t\t\t\tparams[3] = this.animNumAnimations - 1;\n\t\t\t\t\t\tconst animIndexParams = this.animIndexParams;\n\t\t\t\t\t\tanimIndexParams[0] = this.animIndex;\n\t\t\t\t\t\tanimIndexParams[1] = this.randomizeAnimIndex;\n\t\t\t\t}\n\t\t\t\tif (this.scene) {\n\t\t\t\t\t\tif (this.camera !== this.scene._activeCamera) {\n\t\t\t\t\t\t\t\tthis.camera = this.scene._activeCamera;\n\t\t\t\t\t\t\t\tthis.onChangeCamera();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.emitterShape === EMITTERSHAPE_BOX) {\n\t\t\t\t\t\textentsInnerRatioUniform[0] = this.emitterExtents.x !== 0 ? this.emitterExtentsInner.x / this.emitterExtents.x : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[1] = this.emitterExtents.y !== 0 ? this.emitterExtentsInner.y / this.emitterExtents.y : 0;\n\t\t\t\t\t\textentsInnerRatioUniform[2] = this.emitterExtents.z !== 0 ? this.emitterExtentsInner.z / this.emitterExtents.z : 0;\n\t\t\t\t\t\tif (this.meshInstance.node === null) {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, Quat.IDENTITY, this.emitterExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tspawnMatrix.setTRS(Vec3.ZERO, this.meshInstance.node.getRotation(), tmpVec3.copy(this.emitterExtents).mul(this.meshInstance.node.localScale));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet emitterPos;\n\t\t\t\tconst emitterScale = this.meshInstance.node === null ? Vec3.ONE : this.meshInstance.node.localScale;\n\t\t\t\tthis.emitterScaleUniform[0] = emitterScale.x;\n\t\t\t\tthis.emitterScaleUniform[1] = emitterScale.y;\n\t\t\t\tthis.emitterScaleUniform[2] = emitterScale.z;\n\t\t\t\tthis.material.setParameter('emitterScale', this.emitterScaleUniform);\n\t\t\t\tif (this.localSpace && this.meshInstance.node) {\n\t\t\t\t\t\temitterPos = this.meshInstance.node.getPosition();\n\t\t\t\t\t\tthis.emitterPosUniform[0] = emitterPos.x;\n\t\t\t\t\t\tthis.emitterPosUniform[1] = emitterPos.y;\n\t\t\t\t\t\tthis.emitterPosUniform[2] = emitterPos.z;\n\t\t\t\t\t\tthis.material.setParameter('emitterPos', this.emitterPosUniform);\n\t\t\t\t}\n\t\t\t\tthis._compParticleFaceParams();\n\t\t\t\tif (!this.useCpu) {\n\t\t\t\t\t\tthis._gpuUpdater.update(device, spawnMatrix, extentsInnerRatioUniform, delta, isOnStop);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst data = new Float32Array(this.vertexBuffer.lock());\n\t\t\t\t\t\tthis._cpuUpdater.update(data, this.vbToSort, this.particleTex, spawnMatrix, extentsInnerRatioUniform, emitterPos, delta, isOnStop);\n\t\t\t\t}\n\t\t\t\tif (!this.loop) {\n\t\t\t\t\t\tif (Date.now() > this.endTime) {\n\t\t\t\t\t\t\t\tif (this.onFinished) this.onFinished();\n\t\t\t\t\t\t\t\tthis.meshInstance.visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tthis.meshInstance.drawOrder = this.drawOrder;\n\t\t\t\t}\n\t\t}\n\t\t_destroyResources() {\n\t\t\t\tthis.particleTexIN?.destroy();\n\t\t\t\tthis.particleTexIN = null;\n\t\t\t\tthis.particleTexOUT?.destroy();\n\t\t\t\tthis.particleTexOUT = null;\n\t\t\t\tif (this.particleTexStart && this.particleTexStart.destroy) {\n\t\t\t\t\t\tthis.particleTexStart.destroy();\n\t\t\t\t\t\tthis.particleTexStart = null;\n\t\t\t\t}\n\t\t\t\tthis.rtParticleTexIN?.destroy();\n\t\t\t\tthis.rtParticleTexIN = null;\n\t\t\t\tthis.rtParticleTexOUT?.destroy();\n\t\t\t\tthis.rtParticleTexOUT = null;\n\t\t\t\tthis.internalTex0?.destroy();\n\t\t\t\tthis.internalTex0 = null;\n\t\t\t\tthis.internalTex1?.destroy();\n\t\t\t\tthis.internalTex1 = null;\n\t\t\t\tthis.internalTex2?.destroy();\n\t\t\t\tthis.internalTex2 = null;\n\t\t\t\tthis.internalTex3?.destroy();\n\t\t\t\tthis.internalTex3 = null;\n\t\t\t\tthis.colorParam?.destroy();\n\t\t\t\tthis.colorParam = null;\n\t\t\t\tthis.vertexBuffer = undefined;\n\t\t\t\tthis.indexBuffer = undefined;\n\t\t\t\tconst wasVisible = this.meshInstance?.visible ?? true;\n\t\t\t\tthis.meshInstance?.destroy();\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.material?.destroy();\n\t\t\t\tthis.material = null;\n\t\t\t\treturn wasVisible;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.camera = null;\n\t\t\t\tthis._destroyResources();\n\t\t}\n}\n\nclass GSplatParams {\n\t\tset colorizeLod(value) {\n\t\t\t\tif (this._colorizeLod !== value) {\n\t\t\t\t\t\tthis._colorizeLod = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget colorizeLod() {\n\t\t\t\treturn this._colorizeLod;\n\t\t}\n\t\tset lodBehindPenalty(value) {\n\t\t\t\tif (this._lodBehindPenalty !== value) {\n\t\t\t\t\t\tthis._lodBehindPenalty = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodBehindPenalty() {\n\t\t\t\treturn this._lodBehindPenalty;\n\t\t}\n\t\tset lodRangeMin(value) {\n\t\t\t\tif (this._lodRangeMin !== value) {\n\t\t\t\t\t\tthis._lodRangeMin = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodRangeMin() {\n\t\t\t\treturn this._lodRangeMin;\n\t\t}\n\t\tset lodRangeMax(value) {\n\t\t\t\tif (this._lodRangeMax !== value) {\n\t\t\t\t\t\tthis._lodRangeMax = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodRangeMax() {\n\t\t\t\treturn this._lodRangeMax;\n\t\t}\n\t\tset lodUnderfillLimit(value) {\n\t\t\t\tif (this._lodUnderfillLimit !== value) {\n\t\t\t\t\t\tthis._lodUnderfillLimit = value;\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget lodUnderfillLimit() {\n\t\t\t\treturn this._lodUnderfillLimit;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.debugAabbs = false;\n\t\t\t\tthis.radialSorting = false;\n\t\t\t\tthis.debugNodeAabbs = false;\n\t\t\t\tthis.dirty = false;\n\t\t\t\tthis._colorizeLod = false;\n\t\t\t\tthis.lodUpdateDistance = 1;\n\t\t\t\tthis.lodUpdateAngle = 0;\n\t\t\t\tthis._lodBehindPenalty = 1;\n\t\t\t\tthis._lodRangeMin = 0;\n\t\t\t\tthis._lodRangeMax = 10;\n\t\t\t\tthis._lodUnderfillLimit = 0;\n\t\t}\n}\n\nclass ShaderGeneratorShader extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst vsHashGLSL = desc.vertexGLSL ? hashCode(desc.vertexGLSL) : 0;\n\t\t\t\tconst fsHashGLSL = desc.fragmentGLSL ? hashCode(desc.fragmentGLSL) : 0;\n\t\t\t\tconst vsHashWGSL = desc.vertexWGSL ? hashCode(desc.vertexWGSL) : 0;\n\t\t\t\tconst fsHashWGSL = desc.fragmentWGSL ? hashCode(desc.fragmentWGSL) : 0;\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tconst chunksKey = options.shaderChunks?.key ?? '';\n\t\t\t\tlet key = `${desc.uniqueName}_${definesHash}_${vsHashGLSL}_${fsHashGLSL}_${vsHashWGSL}_${fsHashWGSL}_${chunksKey}`;\n\t\t\t\tif (options.skin) key += '_skin';\n\t\t\t\tif (options.useInstancing) key += '_inst';\n\t\t\t\tif (options.useMorphPosition) key += '_morphp';\n\t\t\t\tif (options.useMorphNormal) key += '_morphn';\n\t\t\t\tif (options.useMorphTextureBasedInt) key += '_morphi';\n\t\t\t\treturn key;\n\t\t}\n\t\tcreateAttributesDefinition(definitionOptions, options) {\n\t\t\t\tconst srcAttributes = options.shaderDesc.attributes;\n\t\t\t\tconst attributes = srcAttributes ? {\n\t\t\t\t\t\t...srcAttributes\n\t\t\t\t} : undefined;\n\t\t\t\tif (options.skin) {\n\t\t\t\t\t\tattributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT;\n\t\t\t\t\t\tattributes.vertex_boneIndices = SEMANTIC_BLENDINDICES;\n\t\t\t\t}\n\t\t\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\t\t\t\tattributes.morph_vertex_id = SEMANTIC_ATTR15;\n\t\t\t\t}\n\t\t\t\tdefinitionOptions.attributes = attributes;\n\t\t}\n\t\tcreateVertexDefinition(definitionOptions, options, sharedIncludes, wgsl) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst includes = new Map(sharedIncludes);\n\t\t\t\tincludes.set('transformInstancingVS', '');\n\t\t\t\tconst defines = new Map(options.defines);\n\t\t\t\tif (options.skin) defines.set('SKIN', true);\n\t\t\t\tif (options.useInstancing) defines.set('INSTANCING', true);\n\t\t\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\t\t\t\tdefines.set('MORPHING', true);\n\t\t\t\t\t\tif (options.useMorphTextureBasedInt) defines.set('MORPHING_INT', true);\n\t\t\t\t\t\tif (options.useMorphPosition) defines.set('MORPHING_POSITION', true);\n\t\t\t\t\t\tif (options.useMorphNormal) defines.set('MORPHING_NORMAL', true);\n\t\t\t\t}\n\t\t\t\tdefinitionOptions.vertexCode = wgsl ? desc.vertexWGSL : desc.vertexGLSL;\n\t\t\t\tdefinitionOptions.vertexIncludes = includes;\n\t\t\t\tdefinitionOptions.vertexDefines = defines;\n\t\t}\n\t\tcreateFragmentDefinition(definitionOptions, options, sharedIncludes, wgsl) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst includes = new Map(sharedIncludes);\n\t\t\t\tconst defines = new Map(options.defines);\n\t\t\t\tdefinitionOptions.fragmentCode = wgsl ? desc.fragmentWGSL : desc.fragmentGLSL;\n\t\t\t\tdefinitionOptions.fragmentIncludes = includes;\n\t\t\t\tdefinitionOptions.fragmentDefines = defines;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst desc = options.shaderDesc;\n\t\t\t\tconst wgsl = device.isWebGPU && !!desc.vertexWGSL && !!desc.fragmentWGSL && (options.shaderChunks?.useWGSL ?? true);\n\t\t\t\tconst definitionOptions = {\n\t\t\t\t\t\tname: `ShaderMaterial-${desc.uniqueName}`,\n\t\t\t\t\t\tshaderLanguage: wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL,\n\t\t\t\t\t\tfragmentOutputTypes: desc.fragmentOutputTypes,\n\t\t\t\t\t\tmeshUniformBufferFormat: desc.meshUniformBufferFormat,\n\t\t\t\t\t\tmeshBindGroupFormat: desc.meshBindGroupFormat\n\t\t\t\t};\n\t\t\t\tconst shaderLanguage = wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tconst sharedIncludes = MapUtils.merge(ShaderChunks.get(device, shaderLanguage), options.shaderChunks[shaderLanguage]);\n\t\t\t\tthis.createAttributesDefinition(definitionOptions, options);\n\t\t\t\tthis.createVertexDefinition(definitionOptions, options, sharedIncludes, wgsl);\n\t\t\t\tthis.createFragmentDefinition(definitionOptions, options, sharedIncludes, wgsl);\n\t\t\t\treturn ShaderDefinitionUtils.createDefinition(device, definitionOptions);\n\t\t}\n}\nconst shaderGeneratorShader = new ShaderGeneratorShader();\n\nclass ShaderMaterial extends Material {\n\t\tconstructor(shaderDesc){\n\t\t\t\tsuper();\n\t\t\t\tthis.shaderDesc = shaderDesc;\n\t\t}\n\t\tset shaderDesc(value) {\n\t\t\t\tthis._shaderDesc = undefined;\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis._shaderDesc = {\n\t\t\t\t\t\t\t\tuniqueName: value.uniqueName,\n\t\t\t\t\t\t\t\tattributes: value.attributes,\n\t\t\t\t\t\t\t\tfragmentOutputTypes: value.fragmentOutputTypes,\n\t\t\t\t\t\t\t\tvertexGLSL: value.vertexGLSL,\n\t\t\t\t\t\t\t\tfragmentGLSL: value.fragmentGLSL,\n\t\t\t\t\t\t\t\tvertexWGSL: value.vertexWGSL,\n\t\t\t\t\t\t\t\tfragmentWGSL: value.fragmentWGSL\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (value.vertexCode || value.fragmentCode || value.shaderLanguage) {\n\t\t\t\t\t\t\t\tconst language = value.shaderLanguage ?? SHADERLANGUAGE_GLSL;\n\t\t\t\t\t\t\t\tif (language === SHADERLANGUAGE_GLSL) {\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.vertexGLSL = value.vertexCode;\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.fragmentGLSL = value.fragmentCode;\n\t\t\t\t\t\t\t\t} else if (language === SHADERLANGUAGE_WGSL) {\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.vertexWGSL = value.vertexCode;\n\t\t\t\t\t\t\t\t\t\tthis._shaderDesc.fragmentWGSL = value.fragmentCode;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.clearVariants();\n\t\t}\n\t\tget shaderDesc() {\n\t\t\t\treturn this._shaderDesc;\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tsuper.copy(source);\n\t\t\t\tthis.shaderDesc = source.shaderDesc;\n\t\t\t\treturn this;\n\t\t}\n\t\tgetShaderVariant(params) {\n\t\t\t\tconst { objDefs } = params;\n\t\t\t\tconst options = {\n\t\t\t\t\t\tdefines: ShaderUtils.getCoreDefines(this, params),\n\t\t\t\t\t\tskin: (objDefs & SHADERDEF_SKIN) !== 0,\n\t\t\t\t\t\tuseInstancing: (objDefs & SHADERDEF_INSTANCING) !== 0,\n\t\t\t\t\t\tuseMorphPosition: (objDefs & SHADERDEF_MORPH_POSITION) !== 0,\n\t\t\t\t\t\tuseMorphNormal: (objDefs & SHADERDEF_MORPH_NORMAL) !== 0,\n\t\t\t\t\t\tuseMorphTextureBasedInt: (objDefs & SHADERDEF_MORPH_TEXTURE_BASED_INT) !== 0,\n\t\t\t\t\t\tpass: params.pass,\n\t\t\t\t\t\tgamma: params.cameraShaderParams.shaderOutputGamma,\n\t\t\t\t\t\ttoneMapping: params.cameraShaderParams.toneMapping,\n\t\t\t\t\t\tfog: params.cameraShaderParams.fog,\n\t\t\t\t\t\tshaderDesc: this.shaderDesc,\n\t\t\t\t\t\tshaderChunks: this.shaderChunks\n\t\t\t\t};\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(params.device);\n\t\t\t\tlibrary.register('shader-material', shaderGeneratorShader);\n\t\t\t\treturn library.getProgram('shader-material', options, processingOptions, this.userId);\n\t\t}\n}\n\nconst decodeTable = {\n\t\t'linear': 'decodeLinear',\n\t\t'srgb': 'decodeGamma',\n\t\t'rgbm': 'decodeRGBM',\n\t\t'rgbe': 'decodeRGBE',\n\t\t'rgbp': 'decodeRGBP',\n\t\t'xy': 'unpackNormalXY',\n\t\t'xyz': 'unpackNormalXYZ'\n};\nconst encodeTable = {\n\t\t'linear': 'encodeLinear',\n\t\t'srgb': 'encodeGamma',\n\t\t'rgbm': 'encodeRGBM',\n\t\t'rgbe': 'encodeRGBE',\n\t\t'rgbp': 'encodeRGBP'\n};\nclass ChunkUtils {\n\t\tstatic decodeFunc(encoding) {\n\t\t\t\treturn decodeTable[encoding] ?? 'decodeGamma';\n\t\t}\n\t\tstatic encodeFunc(encoding) {\n\t\t\t\treturn encodeTable[encoding] ?? 'encodeGamma';\n\t\t}\n}\n\nconst calculateNormals = (positions, indices)=>{\n\t\tconst triangleCount = indices.length / 3;\n\t\tconst vertexCount = positions.length / 3;\n\t\tconst p1 = new Vec3();\n\t\tconst p2 = new Vec3();\n\t\tconst p3 = new Vec3();\n\t\tconst p1p2 = new Vec3();\n\t\tconst p1p3 = new Vec3();\n\t\tconst faceNormal = new Vec3();\n\t\tconst normals = [];\n\t\tfor(let i = 0; i < positions.length; i++){\n\t\t\t\tnormals[i] = 0;\n\t\t}\n\t\tfor(let i = 0; i < triangleCount; i++){\n\t\t\t\tconst i1 = indices[i * 3];\n\t\t\t\tconst i2 = indices[i * 3 + 1];\n\t\t\t\tconst i3 = indices[i * 3 + 2];\n\t\t\t\tp1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\t\t\tp2.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\t\t\tp3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\t\t\tp1p2.sub2(p2, p1);\n\t\t\t\tp1p3.sub2(p3, p1);\n\t\t\t\tfaceNormal.cross(p1p2, p1p3).normalize();\n\t\t\t\tnormals[i1 * 3] += faceNormal.x;\n\t\t\t\tnormals[i1 * 3 + 1] += faceNormal.y;\n\t\t\t\tnormals[i1 * 3 + 2] += faceNormal.z;\n\t\t\t\tnormals[i2 * 3] += faceNormal.x;\n\t\t\t\tnormals[i2 * 3 + 1] += faceNormal.y;\n\t\t\t\tnormals[i2 * 3 + 2] += faceNormal.z;\n\t\t\t\tnormals[i3 * 3] += faceNormal.x;\n\t\t\t\tnormals[i3 * 3 + 1] += faceNormal.y;\n\t\t\t\tnormals[i3 * 3 + 2] += faceNormal.z;\n\t\t}\n\t\tfor(let i = 0; i < vertexCount; i++){\n\t\t\t\tconst nx = normals[i * 3];\n\t\t\t\tconst ny = normals[i * 3 + 1];\n\t\t\t\tconst nz = normals[i * 3 + 2];\n\t\t\t\tconst invLen = 1 / Math.sqrt(nx * nx + ny * ny + nz * nz);\n\t\t\t\tnormals[i * 3] *= invLen;\n\t\t\t\tnormals[i * 3 + 1] *= invLen;\n\t\t\t\tnormals[i * 3 + 2] *= invLen;\n\t\t}\n\t\treturn normals;\n};\nconst calculateTangents = (positions, normals, uvs, indices)=>{\n\t\tconst triangleCount = indices.length / 3;\n\t\tconst vertexCount = positions.length / 3;\n\t\tconst v1 = new Vec3();\n\t\tconst v2 = new Vec3();\n\t\tconst v3 = new Vec3();\n\t\tconst w1 = new Vec2();\n\t\tconst w2 = new Vec2();\n\t\tconst w3 = new Vec2();\n\t\tconst sdir = new Vec3();\n\t\tconst tdir = new Vec3();\n\t\tconst tan1 = new Float32Array(vertexCount * 3);\n\t\tconst tan2 = new Float32Array(vertexCount * 3);\n\t\tconst tangents = [];\n\t\tfor(let i = 0; i < triangleCount; i++){\n\t\t\t\tconst i1 = indices[i * 3];\n\t\t\t\tconst i2 = indices[i * 3 + 1];\n\t\t\t\tconst i3 = indices[i * 3 + 2];\n\t\t\t\tv1.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\t\t\tv2.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\t\t\tv3.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\t\t\tw1.set(uvs[i1 * 2], uvs[i1 * 2 + 1]);\n\t\t\t\tw2.set(uvs[i2 * 2], uvs[i2 * 2 + 1]);\n\t\t\t\tw3.set(uvs[i3 * 2], uvs[i3 * 2 + 1]);\n\t\t\t\tconst x1 = v2.x - v1.x;\n\t\t\t\tconst x2 = v3.x - v1.x;\n\t\t\t\tconst y1 = v2.y - v1.y;\n\t\t\t\tconst y2 = v3.y - v1.y;\n\t\t\t\tconst z1 = v2.z - v1.z;\n\t\t\t\tconst z2 = v3.z - v1.z;\n\t\t\t\tconst s1 = w2.x - w1.x;\n\t\t\t\tconst s2 = w3.x - w1.x;\n\t\t\t\tconst t1 = w2.y - w1.y;\n\t\t\t\tconst t2 = w3.y - w1.y;\n\t\t\t\tconst area = s1 * t2 - s2 * t1;\n\t\t\t\tif (area === 0) {\n\t\t\t\t\t\tsdir.set(0, 1, 0);\n\t\t\t\t\t\ttdir.set(1, 0, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst r = 1 / area;\n\t\t\t\t\t\tsdir.set((t2 * x1 - t1 * x2) * r, (t2 * y1 - t1 * y2) * r, (t2 * z1 - t1 * z2) * r);\n\t\t\t\t\t\ttdir.set((s1 * x2 - s2 * x1) * r, (s1 * y2 - s2 * y1) * r, (s1 * z2 - s2 * z1) * r);\n\t\t\t\t}\n\t\t\t\ttan1[i1 * 3 + 0] += sdir.x;\n\t\t\t\ttan1[i1 * 3 + 1] += sdir.y;\n\t\t\t\ttan1[i1 * 3 + 2] += sdir.z;\n\t\t\t\ttan1[i2 * 3 + 0] += sdir.x;\n\t\t\t\ttan1[i2 * 3 + 1] += sdir.y;\n\t\t\t\ttan1[i2 * 3 + 2] += sdir.z;\n\t\t\t\ttan1[i3 * 3 + 0] += sdir.x;\n\t\t\t\ttan1[i3 * 3 + 1] += sdir.y;\n\t\t\t\ttan1[i3 * 3 + 2] += sdir.z;\n\t\t\t\ttan2[i1 * 3 + 0] += tdir.x;\n\t\t\t\ttan2[i1 * 3 + 1] += tdir.y;\n\t\t\t\ttan2[i1 * 3 + 2] += tdir.z;\n\t\t\t\ttan2[i2 * 3 + 0] += tdir.x;\n\t\t\t\ttan2[i2 * 3 + 1] += tdir.y;\n\t\t\t\ttan2[i2 * 3 + 2] += tdir.z;\n\t\t\t\ttan2[i3 * 3 + 0] += tdir.x;\n\t\t\t\ttan2[i3 * 3 + 1] += tdir.y;\n\t\t\t\ttan2[i3 * 3 + 2] += tdir.z;\n\t\t}\n\t\tconst t1 = new Vec3();\n\t\tconst t2 = new Vec3();\n\t\tconst n = new Vec3();\n\t\tconst temp = new Vec3();\n\t\tfor(let i = 0; i < vertexCount; i++){\n\t\t\t\tn.set(normals[i * 3], normals[i * 3 + 1], normals[i * 3 + 2]);\n\t\t\t\tt1.set(tan1[i * 3], tan1[i * 3 + 1], tan1[i * 3 + 2]);\n\t\t\t\tt2.set(tan2[i * 3], tan2[i * 3 + 1], tan2[i * 3 + 2]);\n\t\t\t\tconst ndott = n.dot(t1);\n\t\t\t\ttemp.copy(n).mulScalar(ndott);\n\t\t\t\ttemp.sub2(t1, temp).normalize();\n\t\t\t\ttangents[i * 4] = temp.x;\n\t\t\t\ttangents[i * 4 + 1] = temp.y;\n\t\t\t\ttangents[i * 4 + 2] = temp.z;\n\t\t\t\ttemp.cross(n, t1);\n\t\t\t\ttangents[i * 4 + 3] = temp.dot(t2) < 0.0 ? -1 : 1.0;\n\t\t}\n\t\treturn tangents;\n};\n\nclass Geometry {\n\t\tcalculateNormals() {\n\t\t\t\tthis.normals = calculateNormals(this.positions, this.indices);\n\t\t}\n\t\tcalculateTangents() {\n\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t}\n}\n\nconst primitiveUv1Padding$1 = 4.0 / 64;\nconst primitiveUv1PaddingScale$1 = 1.0 - primitiveUv1Padding$1 * 2;\nclass BoxGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst he = opts.halfExtents ?? new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tconst ws = opts.widthSegments ?? 1;\n\t\t\t\tconst ls = opts.lengthSegments ?? 1;\n\t\t\t\tconst hs = opts.heightSegments ?? 1;\n\t\t\t\tconst yOffset = opts.yOffset ?? 0;\n\t\t\t\tconst minY = -he.y + yOffset;\n\t\t\t\tconst maxY = he.y + yOffset;\n\t\t\t\tconst corners = [\n\t\t\t\t\t\tnew Vec3(-he.x, minY, he.z),\n\t\t\t\t\t\tnew Vec3(he.x, minY, he.z),\n\t\t\t\t\t\tnew Vec3(he.x, maxY, he.z),\n\t\t\t\t\t\tnew Vec3(-he.x, maxY, he.z),\n\t\t\t\t\t\tnew Vec3(he.x, minY, -he.z),\n\t\t\t\t\t\tnew Vec3(-he.x, minY, -he.z),\n\t\t\t\t\t\tnew Vec3(-he.x, maxY, -he.z),\n\t\t\t\t\t\tnew Vec3(he.x, maxY, -he.z)\n\t\t\t\t];\n\t\t\t\tconst faceAxes = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t3\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\t7\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t3,\n\t\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t\t\t6\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t4\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t2\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t6\n\t\t\t\t\t\t]\n\t\t\t\t];\n\t\t\t\tconst faceNormals = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-1\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t];\n\t\t\t\tconst sides = {\n\t\t\t\t\t\tFRONT: 0,\n\t\t\t\t\t\tBACK: 1,\n\t\t\t\t\t\tTOP: 2,\n\t\t\t\t\t\tBOTTOM: 3,\n\t\t\t\t\t\tRIGHT: 4,\n\t\t\t\t\t\tLEFT: 5\n\t\t\t\t};\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet vcounter = 0;\n\t\t\t\tconst generateFace = (side, uSegments, vSegments)=>{\n\t\t\t\t\t\tconst temp1 = new Vec3();\n\t\t\t\t\t\tconst temp2 = new Vec3();\n\t\t\t\t\t\tconst temp3 = new Vec3();\n\t\t\t\t\t\tconst r = new Vec3();\n\t\t\t\t\t\tfor(let i = 0; i <= uSegments; i++){\n\t\t\t\t\t\t\t\tfor(let j = 0; j <= vSegments; j++){\n\t\t\t\t\t\t\t\t\t\ttemp1.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][1]], i / uSegments);\n\t\t\t\t\t\t\t\t\t\ttemp2.lerp(corners[faceAxes[side][0]], corners[faceAxes[side][2]], j / vSegments);\n\t\t\t\t\t\t\t\t\t\ttemp3.sub2(temp2, corners[faceAxes[side][0]]);\n\t\t\t\t\t\t\t\t\t\tr.add2(temp1, temp3);\n\t\t\t\t\t\t\t\t\t\tlet u = i / uSegments;\n\t\t\t\t\t\t\t\t\t\tlet v = j / vSegments;\n\t\t\t\t\t\t\t\t\t\tpositions.push(r.x, r.y, r.z);\n\t\t\t\t\t\t\t\t\t\tnormals.push(faceNormals[side][0], faceNormals[side][1], faceNormals[side][2]);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale$1 + primitiveUv1Padding$1;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale$1 + primitiveUv1Padding$1;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += side % 3 / 3;\n\t\t\t\t\t\t\t\t\t\tv += Math.floor(side / 3) / 3;\n\t\t\t\t\t\t\t\t\t\tif (i < uSegments && j < vSegments) {\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + vSegments + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + vSegments + 1, vcounter + vSegments + 2, vcounter + 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tvcounter++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tgenerateFace(sides.FRONT, ws, hs);\n\t\t\t\tgenerateFace(sides.BACK, ws, hs);\n\t\t\t\tgenerateFace(sides.TOP, ws, ls);\n\t\t\t\tgenerateFace(sides.BOTTOM, ws, ls);\n\t\t\t\tgenerateFace(sides.RIGHT, ls, hs);\n\t\t\t\tgenerateFace(sides.LEFT, ls, hs);\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass SphereGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst radius = opts.radius ?? 0.5;\n\t\t\t\tconst latitudeBands = opts.latitudeBands ?? 16;\n\t\t\t\tconst longitudeBands = opts.longitudeBands ?? 16;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tfor(let lat = 0; lat <= latitudeBands; lat++){\n\t\t\t\t\t\tconst theta = lat * Math.PI / latitudeBands;\n\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\tfor(let lon = 0; lon <= longitudeBands; lon++){\n\t\t\t\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\t\t\t\tconst u = 1 - lon / longitudeBands;\n\t\t\t\t\t\t\t\tconst v = 1 - lat / latitudeBands;\n\t\t\t\t\t\t\t\tpositions.push(x * radius, y * radius, z * radius);\n\t\t\t\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let lat = 0; lat < latitudeBands; ++lat){\n\t\t\t\t\t\tfor(let lon = 0; lon < longitudeBands; ++lon){\n\t\t\t\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\t\t\t\tindices.push(first + 1, second, first);\n\t\t\t\t\t\t\t\tindices.push(first + 1, second + 1, second);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass DomeGeometry extends SphereGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst radius = 0.5;\n\t\t\t\tconst latitudeBands = opts.latitudeBands ?? 16;\n\t\t\t\tconst longitudeBands = opts.longitudeBands ?? 16;\n\t\t\t\tsuper({\n\t\t\t\t\t\tradius,\n\t\t\t\t\t\tlatitudeBands,\n\t\t\t\t\t\tlongitudeBands\n\t\t\t\t});\n\t\t\t\tconst bottomLimit = 0.1;\n\t\t\t\tconst curvatureRadius = 0.95;\n\t\t\t\tconst curvatureRadiusSq = curvatureRadius * curvatureRadius;\n\t\t\t\tconst positions = this.positions;\n\t\t\t\tfor(let i = 0; i < positions.length; i += 3){\n\t\t\t\t\t\tconst x = positions[i] / radius;\n\t\t\t\t\t\tlet y = positions[i + 1] / radius;\n\t\t\t\t\t\tconst z = positions[i + 2] / radius;\n\t\t\t\t\t\tif (y < 0) {\n\t\t\t\t\t\t\t\ty *= 0.3;\n\t\t\t\t\t\t\t\tif (x * x + z * z < curvatureRadiusSq) {\n\t\t\t\t\t\t\t\t\t\ty = -bottomLimit;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ty += bottomLimit;\n\t\t\t\t\t\ty *= radius;\n\t\t\t\t\t\tpositions[i + 1] = y;\n\t\t\t\t}\n\t\t}\n}\n\nclass SkyGeometry {\n\t\tstatic create(device, type) {\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase SKYTYPE_BOX:\n\t\t\t\t\t\t\t\treturn SkyGeometry.box(device);\n\t\t\t\t\t\tcase SKYTYPE_DOME:\n\t\t\t\t\t\t\t\treturn SkyGeometry.dome(device);\n\t\t\t\t}\n\t\t\t\treturn SkyGeometry.infinite(device);\n\t\t}\n\t\tstatic infinite(device) {\n\t\t\t\treturn Mesh.fromGeometry(device, new BoxGeometry(device));\n\t\t}\n\t\tstatic box(device) {\n\t\t\t\treturn Mesh.fromGeometry(device, new BoxGeometry({\n\t\t\t\t\t\tyOffset: 0.5\n\t\t\t\t}));\n\t\t}\n\t\tstatic dome(device) {\n\t\t\t\tconst geom = new DomeGeometry({\n\t\t\t\t\t\tlatitudeBands: 50,\n\t\t\t\t\t\tlongitudeBands: 50\n\t\t\t\t});\n\t\t\t\tgeom.normals = undefined;\n\t\t\t\tgeom.uvs = undefined;\n\t\t\t\treturn Mesh.fromGeometry(device, geom);\n\t\t}\n}\n\nclass SkyMesh {\n\t\tconstructor(device, scene, node, texture, type){\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis._depthWrite = false;\n\t\t\t\tconst material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'SkyMaterial',\n\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(device, SHADERLANGUAGE_GLSL).get('skyboxVS'),\n\t\t\t\t\t\tfragmentGLSL: ShaderChunks.get(device, SHADERLANGUAGE_GLSL).get('skyboxPS'),\n\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(device, SHADERLANGUAGE_WGSL).get('skyboxVS'),\n\t\t\t\t\t\tfragmentWGSL: ShaderChunks.get(device, SHADERLANGUAGE_WGSL).get('skyboxPS'),\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tmaterial.setDefine('{SKYBOX_DECODE_FNC}', ChunkUtils.decodeFunc(texture.encoding));\n\t\t\t\tif (type !== SKYTYPE_INFINITE) material.setDefine('SKYMESH', '');\n\t\t\t\tif (texture.cubemap) material.setDefine('SKY_CUBEMAP', '');\n\t\t\t\tmaterial.setParameter('skyboxHighlightMultiplier', scene.skyboxHighlightMultiplier);\n\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\tmaterial.setParameter('texture_cubeMap', texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial.setParameter('texture_envAtlas', texture);\n\t\t\t\t\t\tmaterial.setParameter('mipLevel', scene.skyboxMip);\n\t\t\t\t}\n\t\t\t\tmaterial.cull = CULLFACE_FRONT;\n\t\t\t\tmaterial.depthWrite = this._depthWrite;\n\t\t\t\tconst skyLayer = scene.layers.getLayerById(LAYERID_SKYBOX);\n\t\t\t\tif (skyLayer) {\n\t\t\t\t\t\tconst mesh = SkyGeometry.create(device, type);\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material, node);\n\t\t\t\t\t\tthis.meshInstance = meshInstance;\n\t\t\t\t\t\tmeshInstance.cull = false;\n\t\t\t\t\t\tmeshInstance.pick = false;\n\t\t\t\t\t\tskyLayer.addMeshInstances([\n\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.skyLayer = skyLayer;\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tif (this.skyLayer) {\n\t\t\t\t\t\t\t\tthis.skyLayer.removeMeshInstances([\n\t\t\t\t\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.meshInstance.destroy();\n\t\t\t\t\t\tthis.meshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\tset depthWrite(value) {\n\t\t\t\tthis._depthWrite = value;\n\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\tthis.meshInstance.material.depthWrite = value;\n\t\t\t\t}\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this._depthWrite;\n\t\t}\n}\n\nclass Sky {\n\t\tconstructor(scene){\n\t\t\t\tthis._type = SKYTYPE_INFINITE;\n\t\t\t\tthis._center = new Vec3(0, 1, 0);\n\t\t\t\tthis.skyMesh = null;\n\t\t\t\tthis._depthWrite = false;\n\t\t\t\tthis.node = new GraphNode('SkyMeshNode');\n\t\t\t\tthis.device = scene.device;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.center = new Vec3(0, 1, 0);\n\t\t\t\tthis.centerArray = new Float32Array(3);\n\t\t\t\tthis.projectedSkydomeCenterId = this.device.scope.resolve('projectedSkydomeCenter');\n\t\t}\n\t\tapplySettings(render) {\n\t\t\t\tthis.type = render.skyType ?? SKYTYPE_INFINITE;\n\t\t\t\tthis.node.setLocalPosition(new Vec3(render.skyMeshPosition ?? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t\t\tthis.node.setLocalEulerAngles(new Vec3(render.skyMeshRotation ?? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]));\n\t\t\t\tthis.node.setLocalScale(new Vec3(render.skyMeshScale ?? [\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]));\n\t\t\t\tif (render.skyCenter) {\n\t\t\t\t\t\tthis._center = new Vec3(render.skyCenter);\n\t\t\t\t}\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type !== value) {\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tthis.scene.updateShaders = true;\n\t\t\t\t\t\tthis.updateSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset center(value) {\n\t\t\t\tthis._center.copy(value);\n\t\t}\n\t\tget center() {\n\t\t\t\treturn this._center;\n\t\t}\n\t\tset depthWrite(value) {\n\t\t\t\tif (this._depthWrite !== value) {\n\t\t\t\t\t\tthis._depthWrite = value;\n\t\t\t\t\t\tif (this.skyMesh) {\n\t\t\t\t\t\t\t\tthis.skyMesh.depthWrite = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this._depthWrite;\n\t\t}\n\t\tupdateSkyMesh() {\n\t\t\t\tconst texture = this.scene._getSkyboxTex();\n\t\t\t\tif (texture) {\n\t\t\t\t\t\tthis.resetSkyMesh();\n\t\t\t\t\t\tthis.skyMesh = new SkyMesh(this.device, this.scene, this.node, texture, this.type);\n\t\t\t\t\t\tthis.skyMesh.depthWrite = this._depthWrite;\n\t\t\t\t\t\tthis.scene.fire('set:skybox', texture);\n\t\t\t\t}\n\t\t}\n\t\tresetSkyMesh() {\n\t\t\t\tthis.skyMesh?.destroy();\n\t\t\t\tthis.skyMesh = null;\n\t\t}\n\t\tupdate() {\n\t\t\t\tif (this.type !== SKYTYPE_INFINITE) {\n\t\t\t\t\t\tconst { center, centerArray } = this;\n\t\t\t\t\t\tconst temp = new Vec3();\n\t\t\t\t\t\tthis.node.getWorldTransform().transformPoint(center, temp);\n\t\t\t\t\t\tcenterArray[0] = temp.x;\n\t\t\t\t\t\tcenterArray[1] = temp.y;\n\t\t\t\t\t\tcenterArray[2] = temp.z;\n\t\t\t\t\t\tthis.projectedSkydomeCenterId.setValue(centerArray);\n\t\t\t\t}\n\t\t}\n}\n\nconst identityGraphNode = new GraphNode();\nidentityGraphNode.worldTransform = Mat4.IDENTITY;\nidentityGraphNode._dirtyWorld = identityGraphNode._dirtyNormal = false;\nclass ImmediateBatch {\n\t\tconstructor(device, material, layer){\n\t\t\t\tthis.material = material;\n\t\t\t\tthis.layer = layer;\n\t\t\t\tthis.positions = [];\n\t\t\t\tthis.colors = [];\n\t\t\t\tthis.mesh = new Mesh(device);\n\t\t\t\tthis.meshInstance = null;\n\t\t}\n\t\taddLines(positions, color) {\n\t\t\t\tconst destPos = this.positions;\n\t\t\t\tconst count = positions.length;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst pos = positions[i];\n\t\t\t\t\t\tdestPos.push(pos.x, pos.y, pos.z);\n\t\t\t\t}\n\t\t\t\tconst destCol = this.colors;\n\t\t\t\tif (color.length) {\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tconst col = color[i];\n\t\t\t\t\t\t\t\tdestCol.push(col.r, col.g, col.b, col.a);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tdestCol.push(color.r, color.g, color.b, color.a);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddLinesArrays(positions, color) {\n\t\t\t\tconst destPos = this.positions;\n\t\t\t\tfor(let i = 0; i < positions.length; i += 3){\n\t\t\t\t\t\tdestPos.push(positions[i], positions[i + 1], positions[i + 2]);\n\t\t\t\t}\n\t\t\t\tconst destCol = this.colors;\n\t\t\t\tif (color.length) {\n\t\t\t\t\t\tfor(let i = 0; i < color.length; i += 4){\n\t\t\t\t\t\t\t\tdestCol.push(color[i], color[i + 1], color[i + 2], color[i + 3]);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst count = positions.length / 3;\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tdestCol.push(color.r, color.g, color.b, color.a);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonPreRender(visibleList, transparent) {\n\t\t\t\tif (this.positions.length > 0 && this.material.transparent === transparent) {\n\t\t\t\t\t\tthis.mesh.setPositions(this.positions);\n\t\t\t\t\t\tthis.mesh.setColors(this.colors);\n\t\t\t\t\t\tthis.mesh.update(PRIMITIVE_LINES, false);\n\t\t\t\t\t\tif (!this.meshInstance) {\n\t\t\t\t\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, this.material, identityGraphNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvisibleList.push(this.meshInstance);\n\t\t\t\t}\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.positions.length = 0;\n\t\t\t\tthis.colors.length = 0;\n\t\t}\n}\n\nclass ImmediateBatches {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.map = new Map();\n\t\t}\n\t\tgetBatch(material, layer) {\n\t\t\t\tlet batch = this.map.get(material);\n\t\t\t\tif (!batch) {\n\t\t\t\t\t\tbatch = new ImmediateBatch(this.device, material, layer);\n\t\t\t\t\t\tthis.map.set(material, batch);\n\t\t\t\t}\n\t\t\t\treturn batch;\n\t\t}\n\t\tonPreRender(visibleList, transparent) {\n\t\t\t\tthis.map.forEach((batch)=>{\n\t\t\t\t\t\tbatch.onPreRender(visibleList, transparent);\n\t\t\t\t});\n\t\t}\n\t\tclear() {\n\t\t\t\tthis.map.forEach((batch)=>batch.clear());\n\t\t}\n}\n\nconst tempPoints = [];\nconst vec = new Vec3();\nclass Immediate {\n\t\tconstructor(device){\n\t\t\t\tthis.shaderDescs = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.quadMesh = null;\n\t\t\t\tthis.textureShader = null;\n\t\t\t\tthis.depthTextureShader = null;\n\t\t\t\tthis.cubeLocalPos = null;\n\t\t\t\tthis.cubeWorldPos = null;\n\t\t\t\tthis.batchesMap = new Map();\n\t\t\t\tthis.allBatches = new Set();\n\t\t\t\tthis.updatedLayers = new Set();\n\t\t\t\tthis._materialDepth = null;\n\t\t\t\tthis._materialNoDepth = null;\n\t\t\t\tthis.layerMeshInstances = new Map();\n\t\t}\n\t\tcreateMaterial(depthTest) {\n\t\t\t\tconst material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'ImmediateLine',\n\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('immediateLineVS'),\n\t\t\t\t\t\tfragmentGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('immediateLinePS'),\n\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('immediateLineVS'),\n\t\t\t\t\t\tfragmentWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('immediateLinePS'),\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tvertex_color: SEMANTIC_COLOR\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tmaterial.blendType = BLEND_NORMAL;\n\t\t\t\tmaterial.depthTest = depthTest;\n\t\t\t\tmaterial.update();\n\t\t\t\treturn material;\n\t\t}\n\t\tget materialDepth() {\n\t\t\t\tif (!this._materialDepth) {\n\t\t\t\t\t\tthis._materialDepth = this.createMaterial(true);\n\t\t\t\t}\n\t\t\t\treturn this._materialDepth;\n\t\t}\n\t\tget materialNoDepth() {\n\t\t\t\tif (!this._materialNoDepth) {\n\t\t\t\t\t\tthis._materialNoDepth = this.createMaterial(false);\n\t\t\t\t}\n\t\t\t\treturn this._materialNoDepth;\n\t\t}\n\t\tgetBatch(layer, depthTest) {\n\t\t\t\tlet batches = this.batchesMap.get(layer);\n\t\t\t\tif (!batches) {\n\t\t\t\t\t\tbatches = new ImmediateBatches(this.device);\n\t\t\t\t\t\tthis.batchesMap.set(layer, batches);\n\t\t\t\t}\n\t\t\t\tthis.allBatches.add(batches);\n\t\t\t\tconst material = depthTest ? this.materialDepth : this.materialNoDepth;\n\t\t\t\treturn batches.getBatch(material, layer);\n\t\t}\n\t\tgetShaderDesc(id, fragmentGLSL, fragmentWGSL) {\n\t\t\t\tif (!this.shaderDescs.has(id)) {\n\t\t\t\t\t\tthis.shaderDescs.set(id, {\n\t\t\t\t\t\t\t\tuniqueName: `DebugShader:${id}`,\n\t\t\t\t\t\t\t\tvertexGLSL: `\n\t\t\t\t\tattribute vec2 vertex_position;\n\t\t\t\t\tuniform mat4 matrix_model;\n\t\t\t\t\tvarying vec2 uv0;\n\t\t\t\t\tvoid main(void) {\n\t\t\t\t\t\tgl_Position = matrix_model * vec4(vertex_position, 0, 1);\n\t\t\t\t\t\tuv0 = vertex_position.xy + 0.5;\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t\t\t\t\tvertexWGSL: `\n\t\t\t\t\tattribute vertex_position: vec2f;\n\t\t\t\t\tuniform matrix_model: mat4x4f;\n\t\t\t\t\tvarying uv0: vec2f;\n\t\t\t\t\t@vertex fn vertexMain(input: VertexInput) -> VertexOutput {\n\t\t\t\t\t\tvar output: VertexOutput;\n\t\t\t\t\t\toutput.position = uniform.matrix_model * vec4f(input.vertex_position, 0.0, 1.0);\n\t\t\t\t\t\toutput.uv0 = input.vertex_position.xy + vec2f(0.5);\n\t\t\t\t\t\treturn output;\n\t\t\t\t\t}\n\t\t\t\t`,\n\t\t\t\t\t\t\t\tfragmentGLSL: fragmentGLSL,\n\t\t\t\t\t\t\t\tfragmentWGSL: fragmentWGSL,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.shaderDescs.get(id);\n\t\t}\n\t\tgetTextureShaderDesc(encoding) {\n\t\t\t\tconst decodeFunc = ChunkUtils.decodeFunc(encoding);\n\t\t\t\treturn this.getShaderDesc(`textureShader-${encoding}`, `\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying vec2 uv0;\n\t\t\tuniform sampler2D colorMap;\n\t\t\tvoid main (void) {\n\t\t\t\tvec3 linearColor = ${decodeFunc}(texture2D(colorMap, uv0));\n\t\t\t\tgl_FragColor = vec4(gammaCorrectOutput(linearColor), 1);\n\t\t\t}\n\t\t`, `\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying uv0: vec2f;\n\t\t\tvar colorMap: texture_2d<f32>;\n\t\t\tvar colorMapSampler: sampler;\n\t\t\t@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\t\t\tvar output: FragmentOutput;\n\t\t\t\tlet sampledTex = textureSample(colorMap, colorMapSampler, input.uv0);\n\t\t\t\tlet linearColor: vec3f = ${decodeFunc}(sampledTex);\n\t\t\t\toutput.color = vec4f(gammaCorrectOutput(linearColor), 1.0);\n\t\t\t\treturn output;\n\t\t\t}\n\t\t`);\n\t\t}\n\t\tgetUnfilterableTextureShaderDesc() {\n\t\t\t\treturn this.getShaderDesc('textureShaderUnfilterable', `\n\t\t\tvarying vec2 uv0;\n\t\t\tuniform highp sampler2D colorMap;\n\t\t\tvoid main (void) {\n\t\t\t\tivec2 uv = ivec2(uv0 * textureSize(colorMap, 0));\n\t\t\t\tgl_FragColor = vec4(texelFetch(colorMap, uv, 0).xyz, 1);\n\t\t\t}\n\t\t`, `\n\t\t\tvarying uv0: vec2f;\n\t\t\tvar colorMap: texture_2d<uff>;\n\t\t\t@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\t\t\tvar output: FragmentOutput;\n\t\t\t\tlet uv : vec2<i32> = vec2<i32>(input.uv0 * vec2f(textureDimensions(colorMap, 0)));\n\t\t\t\tlet fetchedColor : vec4f = textureLoad(colorMap, uv, 0);\n\t\t\t\toutput.color = vec4f(fetchedColor.xyz, 1.0);\n\t\t\t\treturn output;\n\t\t\t}\n\t\t`);\n\t\t}\n\t\tgetDepthTextureShaderDesc() {\n\t\t\t\treturn this.getShaderDesc('depthTextureShader', `\n\t\t\t#include \"screenDepthPS\"\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying vec2 uv0;\n\t\t\tvoid main() {\n\t\t\t\tfloat depth = getLinearScreenDepth(getImageEffectUV(uv0)) * camera_params.x;\n\t\t\t\tgl_FragColor = vec4(gammaCorrectOutput(vec3(depth)), 1.0);\n\t\t\t}\n\t\t`, `\n\t\t\t#include \"screenDepthPS\"\n\t\t\t#include \"gammaPS\"\n\t\t\tvarying uv0: vec2f;\n\t\t\t@fragment fn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\t\t\tvar output: FragmentOutput;\n\t\t\t\tlet depth: f32 = getLinearScreenDepth(getImageEffectUV(input.uv0)) * uniform.camera_params.x;\n\t\t\t\toutput.color = vec4f(gammaCorrectOutput(vec3f(depth)), 1.0);\n\t\t\t\treturn output;\n\t\t\t}\n\t\t`);\n\t\t}\n\t\tgetQuadMesh() {\n\t\t\t\tif (!this.quadMesh) {\n\t\t\t\t\t\tthis.quadMesh = new Mesh(this.device);\n\t\t\t\t\t\tthis.quadMesh.setPositions([\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t-0.5,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t0.5,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.quadMesh.update(PRIMITIVE_TRISTRIP);\n\t\t\t\t}\n\t\t\t\treturn this.quadMesh;\n\t\t}\n\t\tdrawMesh(material, matrix, mesh, meshInstance, layer) {\n\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\tconst graphNode = this.getGraphNode(matrix);\n\t\t\t\t\t\tmeshInstance = new MeshInstance(mesh, material, graphNode);\n\t\t\t\t}\n\t\t\t\tlet layerMeshInstances = this.layerMeshInstances.get(layer);\n\t\t\t\tif (!layerMeshInstances) {\n\t\t\t\t\t\tlayerMeshInstances = [];\n\t\t\t\t\t\tthis.layerMeshInstances.set(layer, layerMeshInstances);\n\t\t\t\t}\n\t\t\t\tlayerMeshInstances.push(meshInstance);\n\t\t}\n\t\tdrawWireAlignedBox(min, max, color, depthTest, layer, mat) {\n\t\t\t\tif (mat) {\n\t\t\t\t\t\tconst mulPoint = (x, y, z)=>{\n\t\t\t\t\t\t\t\tvec.set(x, y, z);\n\t\t\t\t\t\t\t\tmat.transformPoint(vec, vec);\n\t\t\t\t\t\t\t\ttempPoints.push(vec.x, vec.y, vec.z);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, min.y, max.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(min.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, max.y, max.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, min.z);\n\t\t\t\t\t\tmulPoint(max.x, min.y, max.z);\n\t\t\t\t} else {\n\t\t\t\t\t\ttempPoints.push(min.x, min.y, min.z, min.x, max.y, min.z, min.x, max.y, min.z, max.x, max.y, min.z, max.x, max.y, min.z, max.x, min.y, min.z, max.x, min.y, min.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, max.z, min.x, max.y, max.z, max.x, max.y, max.z, max.x, max.y, max.z, max.x, min.y, max.z, max.x, min.y, max.z, min.x, min.y, max.z, min.x, min.y, min.z, min.x, min.y, max.z, min.x, max.y, min.z, min.x, max.y, max.z, max.x, max.y, min.z, max.x, max.y, max.z, max.x, min.y, min.z, max.x, min.y, max.z);\n\t\t\t\t}\n\t\t\t\tconst batch = this.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLinesArrays(tempPoints, color);\n\t\t\t\ttempPoints.length = 0;\n\t\t}\n\t\tdrawWireSphere(center, radius, color, numSegments, depthTest, layer) {\n\t\t\t\tconst step = 2 * Math.PI / numSegments;\n\t\t\t\tlet angle = 0;\n\t\t\t\tfor(let i = 0; i < numSegments; i++){\n\t\t\t\t\t\tconst sin0 = Math.sin(angle);\n\t\t\t\t\t\tconst cos0 = Math.cos(angle);\n\t\t\t\t\t\tangle += step;\n\t\t\t\t\t\tconst sin1 = Math.sin(angle);\n\t\t\t\t\t\tconst cos1 = Math.cos(angle);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin0, center.y, center.z + radius * cos0);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin1, center.y, center.z + radius * cos1);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin0, center.y + radius * cos0, center.z);\n\t\t\t\t\t\ttempPoints.push(center.x + radius * sin1, center.y + radius * cos1, center.z);\n\t\t\t\t\t\ttempPoints.push(center.x, center.y + radius * sin0, center.z + radius * cos0);\n\t\t\t\t\t\ttempPoints.push(center.x, center.y + radius * sin1, center.z + radius * cos1);\n\t\t\t\t}\n\t\t\t\tconst batch = this.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLinesArrays(tempPoints, color);\n\t\t\t\ttempPoints.length = 0;\n\t\t}\n\t\tgetGraphNode(matrix) {\n\t\t\t\tconst graphNode = new GraphNode('ImmediateDebug');\n\t\t\t\tgraphNode.worldTransform = matrix;\n\t\t\t\tgraphNode._dirtyWorld = graphNode._dirtyNormal = false;\n\t\t\t\treturn graphNode;\n\t\t}\n\t\tonPreRenderLayer(layer, visibleList, transparent) {\n\t\t\t\tthis.batchesMap.forEach((batches, batchLayer)=>{\n\t\t\t\t\t\tif (batchLayer === layer) {\n\t\t\t\t\t\t\t\tbatches.onPreRender(visibleList, transparent);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!this.updatedLayers.has(layer)) {\n\t\t\t\t\t\tthis.updatedLayers.add(layer);\n\t\t\t\t\t\tconst meshInstances = this.layerMeshInstances.get(layer);\n\t\t\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tvisibleList.push(meshInstances[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInstances.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonPostRender() {\n\t\t\t\tthis.allBatches.forEach((batch)=>batch.clear());\n\t\t\t\tthis.allBatches.clear();\n\t\t\t\tthis.updatedLayers.clear();\n\t\t}\n}\n\nconst _goldenAngle = 2.399963229728653;\nconst random = {\n\t\tcirclePoint (point) {\n\t\t\t\tconst r = Math.sqrt(Math.random());\n\t\t\t\tconst theta = Math.random() * 2 * Math.PI;\n\t\t\t\tpoint.x = r * Math.cos(theta);\n\t\t\t\tpoint.y = r * Math.sin(theta);\n\t\t},\n\t\tcirclePointDeterministic (point, index, numPoints) {\n\t\t\t\tconst theta = index * _goldenAngle;\n\t\t\t\tconst r = Math.sqrt(index) / Math.sqrt(numPoints);\n\t\t\t\tpoint.x = r * Math.cos(theta);\n\t\t\t\tpoint.y = r * Math.sin(theta);\n\t\t},\n\t\tspherePointDeterministic (point, index, numPoints, start = 0, end = 1) {\n\t\t\t\tstart = 1 - 2 * start;\n\t\t\t\tend = 1 - 2 * end;\n\t\t\t\tconst y = math.lerp(start, end, index / numPoints);\n\t\t\t\tconst radius = Math.sqrt(1 - y * y);\n\t\t\t\tconst theta = _goldenAngle * index;\n\t\t\t\tpoint.x = Math.cos(theta) * radius;\n\t\t\t\tpoint.y = y;\n\t\t\t\tpoint.z = Math.sin(theta) * radius;\n\t\t},\n\t\tradicalInverse (i) {\n\t\t\t\tlet bits = (i << 16 | i >>> 16) >>> 0;\n\t\t\t\tbits = ((bits & 0x55555555) << 1 | (bits & 0xAAAAAAAA) >>> 1) >>> 0;\n\t\t\t\tbits = ((bits & 0x33333333) << 2 | (bits & 0xCCCCCCCC) >>> 2) >>> 0;\n\t\t\t\tbits = ((bits & 0x0F0F0F0F) << 4 | (bits & 0xF0F0F0F0) >>> 4) >>> 0;\n\t\t\t\tbits = ((bits & 0x00FF00FF) << 8 | (bits & 0xFF00FF00) >>> 8) >>> 0;\n\t\t\t\treturn bits * 2.3283064365386963e-10;\n\t\t}\n};\n\nconst getProjectionName = (projection)=>{\n\t\tswitch(projection){\n\t\t\t\tcase TEXTUREPROJECTION_CUBE:\n\t\t\t\t\t\treturn 'Cubemap';\n\t\t\t\tcase TEXTUREPROJECTION_OCTAHEDRAL:\n\t\t\t\t\t\treturn 'Octahedral';\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 'Equirect';\n\t\t}\n};\nconst packFloat32ToRGBA8 = (value, array, offset)=>{\n\t\tif (value <= 0) {\n\t\t\t\tarray[offset + 0] = 0;\n\t\t\t\tarray[offset + 1] = 0;\n\t\t\t\tarray[offset + 2] = 0;\n\t\t\t\tarray[offset + 3] = 0;\n\t\t} else if (value >= 1.0) {\n\t\t\t\tarray[offset + 0] = 255;\n\t\t\t\tarray[offset + 1] = 0;\n\t\t\t\tarray[offset + 2] = 0;\n\t\t\t\tarray[offset + 3] = 0;\n\t\t} else {\n\t\t\t\tlet encX = 1 * value % 1;\n\t\t\t\tlet encY = 255 * value % 1;\n\t\t\t\tlet encZ = 65025 * value % 1;\n\t\t\t\tconst encW = 16581375.0 * value % 1;\n\t\t\t\tencX -= encY / 255;\n\t\t\t\tencY -= encZ / 255;\n\t\t\t\tencZ -= encW / 255;\n\t\t\t\tarray[offset + 0] = Math.min(255, Math.floor(encX * 256));\n\t\t\t\tarray[offset + 1] = Math.min(255, Math.floor(encY * 256));\n\t\t\t\tarray[offset + 2] = Math.min(255, Math.floor(encZ * 256));\n\t\t\t\tarray[offset + 3] = Math.min(255, Math.floor(encW * 256));\n\t\t}\n};\nconst packSamples = (samples)=>{\n\t\tconst numSamples = samples.length;\n\t\tconst w = Math.min(numSamples, 512);\n\t\tconst h = Math.ceil(numSamples / w);\n\t\tconst data = new Uint8Array(w * h * 4);\n\t\tlet off = 0;\n\t\tfor(let i = 0; i < numSamples; i += 4){\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 0] * 0.5 + 0.5, data, off + 0);\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 1] * 0.5 + 0.5, data, off + 4);\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 2] * 0.5 + 0.5, data, off + 8);\n\t\t\t\tpackFloat32ToRGBA8(samples[i + 3] / 8, data, off + 12);\n\t\t\t\toff += 16;\n\t\t}\n\t\treturn {\n\t\t\t\twidth: w,\n\t\t\t\theight: h,\n\t\t\t\tdata: data\n\t\t};\n};\nconst hemisphereSamplePhong = (dstVec, x, y, specularPower)=>{\n\t\tconst phi = y * 2 * Math.PI;\n\t\tconst cosTheta = Math.pow(1 - x, 1 / (specularPower + 1));\n\t\tconst sinTheta = Math.sqrt(1 - cosTheta * cosTheta);\n\t\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst hemisphereSampleLambert = (dstVec, x, y)=>{\n\t\tconst phi = y * 2 * Math.PI;\n\t\tconst cosTheta = Math.sqrt(1 - x);\n\t\tconst sinTheta = Math.sqrt(x);\n\t\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst hemisphereSampleGGX = (dstVec, x, y, a)=>{\n\t\tconst phi = y * 2 * Math.PI;\n\t\tconst cosTheta = Math.sqrt((1 - x) / (1 + (a * a - 1) * x));\n\t\tconst sinTheta = Math.sqrt(1 - cosTheta * cosTheta);\n\t\tdstVec.set(Math.cos(phi) * sinTheta, Math.sin(phi) * sinTheta, cosTheta).normalize();\n};\nconst D_GGX = (NoH, linearRoughness)=>{\n\t\tconst a = NoH * linearRoughness;\n\t\tconst k = linearRoughness / (1.0 - NoH * NoH + a * a);\n\t\treturn k * k * (1 / Math.PI);\n};\nconst generatePhongSamples = (numSamples, specularPower)=>{\n\t\tconst H = new Vec3();\n\t\tconst result = [];\n\t\tfor(let i = 0; i < numSamples; ++i){\n\t\t\t\themisphereSamplePhong(H, i / numSamples, random.radicalInverse(i), specularPower);\n\t\t\t\tresult.push(H.x, H.y, H.z, 0);\n\t\t}\n\t\treturn result;\n};\nconst generateLambertSamples = (numSamples, sourceTotalPixels)=>{\n\t\tconst pixelsPerSample = sourceTotalPixels / numSamples;\n\t\tconst H = new Vec3();\n\t\tconst result = [];\n\t\tfor(let i = 0; i < numSamples; ++i){\n\t\t\t\themisphereSampleLambert(H, i / numSamples, random.radicalInverse(i));\n\t\t\t\tconst pdf = H.z / Math.PI;\n\t\t\t\tconst mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf);\n\t\t\t\tresult.push(H.x, H.y, H.z, mipLevel);\n\t\t}\n\t\treturn result;\n};\nconst requiredSamplesGGX = {\n\t\t'16': {\n\t\t\t\t'2': 26,\n\t\t\t\t'8': 20,\n\t\t\t\t'32': 17,\n\t\t\t\t'128': 16,\n\t\t\t\t'512': 16\n\t\t},\n\t\t'32': {\n\t\t\t\t'2': 53,\n\t\t\t\t'8': 40,\n\t\t\t\t'32': 34,\n\t\t\t\t'128': 32,\n\t\t\t\t'512': 32\n\t\t},\n\t\t'128': {\n\t\t\t\t'2': 214,\n\t\t\t\t'8': 163,\n\t\t\t\t'32': 139,\n\t\t\t\t'128': 130,\n\t\t\t\t'512': 128\n\t\t},\n\t\t'1024': {\n\t\t\t\t'2': 1722,\n\t\t\t\t'8': 1310,\n\t\t\t\t'32': 1114,\n\t\t\t\t'128': 1041,\n\t\t\t\t'512': 1025\n\t\t}\n};\nconst getRequiredSamplesGGX = (numSamples, specularPower)=>{\n\t\tconst table = requiredSamplesGGX[numSamples];\n\t\treturn table && table[specularPower] || numSamples;\n};\nconst generateGGXSamples = (numSamples, specularPower, sourceTotalPixels)=>{\n\t\tconst pixelsPerSample = sourceTotalPixels / numSamples;\n\t\tconst roughness = 1 - Math.log2(specularPower) / 11.0;\n\t\tconst a = roughness * roughness;\n\t\tconst H = new Vec3();\n\t\tconst L = new Vec3();\n\t\tconst N = new Vec3(0, 0, 1);\n\t\tconst result = [];\n\t\tconst requiredSamples = getRequiredSamplesGGX(numSamples, specularPower);\n\t\tfor(let i = 0; i < requiredSamples; ++i){\n\t\t\t\themisphereSampleGGX(H, i / requiredSamples, random.radicalInverse(i), a);\n\t\t\t\tconst NoH = H.z;\n\t\t\t\tL.set(H.x, H.y, H.z).mulScalar(2 * NoH).sub(N);\n\t\t\t\tif (L.z > 0) {\n\t\t\t\t\t\tconst pdf = D_GGX(Math.min(1, NoH), a) / 4 + 0.001;\n\t\t\t\t\t\tconst mipLevel = 0.5 * Math.log2(pixelsPerSample / pdf);\n\t\t\t\t\t\tresult.push(L.x, L.y, L.z, mipLevel);\n\t\t\t\t}\n\t\t}\n\t\twhile(result.length < numSamples * 4){\n\t\t\t\tresult.push(0, 0, 0, 0);\n\t\t}\n\t\treturn result;\n};\nconst createSamplesTex = (device, name, samples)=>{\n\t\tconst packedSamples = packSamples(samples);\n\t\treturn new Texture(device, {\n\t\t\t\tname: name,\n\t\t\t\twidth: packedSamples.width,\n\t\t\t\theight: packedSamples.height,\n\t\t\t\tmipmaps: false,\n\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\tlevels: [\n\t\t\t\t\t\tpackedSamples.data\n\t\t\t\t]\n\t\t});\n};\nclass SimpleCache {\n\t\tconstructor(destroyContent = true){\n\t\t\t\tthis.map = new Map();\n\t\t\t\tthis.destroyContent = destroyContent;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.destroyContent) {\n\t\t\t\t\t\tthis.map.forEach((value, key)=>{\n\t\t\t\t\t\t\t\tvalue.destroy();\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tget(key, missFunc) {\n\t\t\t\tif (!this.map.has(key)) {\n\t\t\t\t\t\tconst result = missFunc();\n\t\t\t\t\t\tthis.map.set(key, result);\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn this.map.get(key);\n\t\t}\n}\nconst samplesCache = new SimpleCache(false);\nconst deviceCache$1 = new DeviceCache();\nconst getCachedTexture = (device, key, getSamplesFnc)=>{\n\t\tconst cache = deviceCache$1.get(device, ()=>{\n\t\t\t\treturn new SimpleCache();\n\t\t});\n\t\treturn cache.get(key, ()=>{\n\t\t\t\treturn createSamplesTex(device, key, samplesCache.get(key, getSamplesFnc));\n\t\t});\n};\nconst generateLambertSamplesTex = (device, numSamples, sourceTotalPixels)=>{\n\t\tconst key = `lambert-samples-${numSamples}-${sourceTotalPixels}`;\n\t\treturn getCachedTexture(device, key, ()=>{\n\t\t\t\treturn generateLambertSamples(numSamples, sourceTotalPixels);\n\t\t});\n};\nconst generatePhongSamplesTex = (device, numSamples, specularPower)=>{\n\t\tconst key = `phong-samples-${numSamples}-${specularPower}`;\n\t\treturn getCachedTexture(device, key, ()=>{\n\t\t\t\treturn generatePhongSamples(numSamples, specularPower);\n\t\t});\n};\nconst generateGGXSamplesTex = (device, numSamples, specularPower, sourceTotalPixels)=>{\n\t\tconst key = `ggx-samples-${numSamples}-${specularPower}-${sourceTotalPixels}`;\n\t\treturn getCachedTexture(device, key, ()=>{\n\t\t\t\treturn generateGGXSamples(numSamples, specularPower, sourceTotalPixels);\n\t\t});\n};\nfunction reprojectTexture(source, target, options = {}) {\n\t\tconst seamPixels = options.seamPixels ?? 0;\n\t\tconst innerWidth = (options.rect?.z ?? target.width) - seamPixels * 2;\n\t\tconst innerHeight = (options.rect?.w ?? target.height) - seamPixels * 2;\n\t\tif (innerWidth < 1 || innerHeight < 1) {\n\t\t\t\treturn false;\n\t\t}\n\t\tconst funcNames = {\n\t\t\t\t'none': 'reproject',\n\t\t\t\t'lambert': 'prefilterSamplesUnweighted',\n\t\t\t\t'phong': 'prefilterSamplesUnweighted',\n\t\t\t\t'ggx': 'prefilterSamples'\n\t\t};\n\t\tconst specularPower = options.hasOwnProperty('specularPower') ? options.specularPower : 1;\n\t\tconst face = options.hasOwnProperty('face') ? options.face : null;\n\t\tconst distribution = options.hasOwnProperty('distribution') ? options.distribution : specularPower === 1 ? 'none' : 'phong';\n\t\tconst processFunc = funcNames[distribution] || 'reproject';\n\t\tconst prefilterSamples = processFunc.startsWith('prefilterSamples');\n\t\tconst decodeFunc = ChunkUtils.decodeFunc(source.encoding);\n\t\tconst encodeFunc = ChunkUtils.encodeFunc(target.encoding);\n\t\tconst sourceFunc = `sample${getProjectionName(source.projection)}`;\n\t\tconst targetFunc = `getDirection${getProjectionName(target.projection)}`;\n\t\tconst numSamples = options.hasOwnProperty('numSamples') ? options.numSamples : 1024;\n\t\tconst shaderKey = `ReprojectShader:${processFunc}_${decodeFunc}_${encodeFunc}_${sourceFunc}_${targetFunc}_${numSamples}`;\n\t\tconst device = source.device;\n\t\tlet shader = getProgramLibrary(device).getCachedShader(shaderKey);\n\t\tif (!shader) {\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (prefilterSamples) defines.set('USE_SAMPLES_TEX', '');\n\t\t\t\tif (source.cubemap) defines.set('CUBEMAP_SOURCE', '');\n\t\t\t\tdefines.set('{PROCESS_FUNC}', processFunc);\n\t\t\t\tdefines.set('{DECODE_FUNC}', decodeFunc);\n\t\t\t\tdefines.set('{ENCODE_FUNC}', encodeFunc);\n\t\t\t\tdefines.set('{SOURCE_FUNC}', sourceFunc);\n\t\t\t\tdefines.set('{TARGET_FUNC}', targetFunc);\n\t\t\t\tdefines.set('{NUM_SAMPLES}', numSamples);\n\t\t\t\tdefines.set('{NUM_SAMPLES_SQRT}', Math.round(Math.sqrt(numSamples)).toFixed(1));\n\t\t\t\tconst wgsl = device.isWebGPU;\n\t\t\t\tconst chunks = ShaderChunks.get(device, wgsl ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\tconst includes = new Map();\n\t\t\t\tincludes.set('decodePS', chunks.get('decodePS'));\n\t\t\t\tincludes.set('encodePS', chunks.get('encodePS'));\n\t\t\t\tshader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: shaderKey,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'reprojectVS',\n\t\t\t\t\t\tfragmentChunk: 'reprojectPS',\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t}\n\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\tconst constantSource = device.scope.resolve(source.cubemap ? 'sourceCube' : 'sourceTex');\n\t\tconstantSource.setValue(source);\n\t\tconst constantParams = device.scope.resolve('params');\n\t\tconst uvModParam = device.scope.resolve('uvMod');\n\t\tif (seamPixels > 0) {\n\t\t\t\tuvModParam.setValue([\n\t\t\t\t\t\t(innerWidth + seamPixels * 2) / innerWidth,\n\t\t\t\t\t\t(innerHeight + seamPixels * 2) / innerHeight,\n\t\t\t\t\t\t-seamPixels / innerWidth,\n\t\t\t\t\t\t-seamPixels / innerHeight\n\t\t\t\t]);\n\t\t} else {\n\t\t\t\tuvModParam.setValue([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t]);\n\t\t}\n\t\tconst params = [\n\t\t\t\t0,\n\t\t\t\ttarget.width * target.height * (target.cubemap ? 6 : 1),\n\t\t\t\tsource.width * source.height * (source.cubemap ? 6 : 1)\n\t\t];\n\t\tif (prefilterSamples) {\n\t\t\t\tconst sourceTotalPixels = source.width * source.height * (source.cubemap ? 6 : 1);\n\t\t\t\tconst samplesTex = distribution === 'ggx' ? generateGGXSamplesTex(device, numSamples, specularPower, sourceTotalPixels) : distribution === 'lambert' ? generateLambertSamplesTex(device, numSamples, sourceTotalPixels) : generatePhongSamplesTex(device, numSamples, specularPower);\n\t\t\t\tdevice.scope.resolve('samplesTex').setValue(samplesTex);\n\t\t\t\tdevice.scope.resolve('samplesTexInverseSize').setValue([\n\t\t\t\t\t\t1.0 / samplesTex.width,\n\t\t\t\t\t\t1.0 / samplesTex.height\n\t\t\t\t]);\n\t\t}\n\t\tfor(let f = 0; f < (target.cubemap ? 6 : 1); f++){\n\t\t\t\tif (face === null || f === face) {\n\t\t\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: target,\n\t\t\t\t\t\t\t\tface: f,\n\t\t\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\t\t\tflipY: device.isWebGPU\n\t\t\t\t\t\t});\n\t\t\t\t\t\tparams[0] = f;\n\t\t\t\t\t\tconstantParams.setValue(params);\n\t\t\t\t\t\tdrawQuadWithShader(device, renderTarget, shader, options?.rect);\n\t\t\t\t\t\trenderTarget.destroy();\n\t\t\t\t}\n\t\t}\n\t\treturn true;\n}\n\nconst calcLevels = (width, height = 0)=>{\n\t\treturn 1 + Math.floor(Math.log2(Math.max(width, height)));\n};\nconst supportsFloat16 = (device)=>{\n\t\treturn device.textureHalfFloatRenderable;\n};\nconst supportsFloat32 = (device)=>{\n\t\treturn device.textureFloatRenderable;\n};\nconst lightingSourcePixelFormat = (device)=>{\n\t\treturn supportsFloat16(device) ? PIXELFORMAT_RGBA16F : supportsFloat32(device) ? PIXELFORMAT_RGBA32F : PIXELFORMAT_RGBA8;\n};\nconst lightingPixelFormat = (device)=>{\n\t\treturn PIXELFORMAT_RGBA8;\n};\nconst createCubemap = (device, size, format, mipmaps)=>{\n\t\treturn new Texture(device, {\n\t\t\t\tname: `lighting-${size}`,\n\t\t\t\tcubemap: true,\n\t\t\t\twidth: size,\n\t\t\t\theight: size,\n\t\t\t\tformat: format,\n\t\t\t\ttype: TEXTURETYPE_RGBP ,\n\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\tmipmaps: false\n\t\t});\n};\nclass EnvLighting {\n\t\tstatic generateSkyboxCubemap(source, size) {\n\t\t\t\tconst device = source.device;\n\t\t\t\tconst result = createCubemap(device, size || (source.cubemap ? source.width : source.width / 4), PIXELFORMAT_RGBA8);\n\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\tnumSamples: 1024\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic generateLightingSource(source, options) {\n\t\t\t\tconst device = source.device;\n\t\t\t\tconst format = lightingSourcePixelFormat(device);\n\t\t\t\tconst result = options?.target || new Texture(device, {\n\t\t\t\t\t\tname: 'lighting-source',\n\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\twidth: options?.size || 128,\n\t\t\t\t\t\theight: options?.size || 128,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\ttype: format === PIXELFORMAT_RGBA8 ? TEXTURETYPE_RGBP : TEXTURETYPE_DEFAULT,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tmipmaps: true\n\t\t\t\t});\n\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\tnumSamples: source.mipmaps ? 1 : 1024\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic generateAtlas(source, options) {\n\t\t\t\tconst device = source.device;\n\t\t\t\tconst format = lightingPixelFormat();\n\t\t\t\tconst result = options?.target || new Texture(device, {\n\t\t\t\t\t\tname: 'envAtlas',\n\t\t\t\t\t\twidth: options?.size || 512,\n\t\t\t\t\t\theight: options?.size || 512,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\ttype: TEXTURETYPE_RGBP ,\n\t\t\t\t\t\tprojection: TEXTUREPROJECTION_EQUIRECT,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst s = result.width / 512;\n\t\t\t\tconst rect = new Vec4(0, 0, 512 * s, 256 * s);\n\t\t\t\tconst levels = calcLevels(256) - calcLevels(4);\n\t\t\t\tfor(let i = 0; i < levels; ++i){\n\t\t\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.x += rect.w;\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(0, 256 * s, 256 * s, 128 * s);\n\t\t\t\tfor(let i = 1; i < 7; ++i){\n\t\t\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\t\t\tnumSamples: options?.numReflectionSamples || 1024,\n\t\t\t\t\t\t\t\tdistribution: options?.distribution || 'ggx',\n\t\t\t\t\t\t\t\tspecularPower: Math.max(1, 2048 >> i * 2),\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s);\n\t\t\t\treprojectTexture(source, result, {\n\t\t\t\t\t\tnumSamples: options?.numAmbientSamples || 2048,\n\t\t\t\t\t\tdistribution: 'lambert',\n\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\tseamPixels: s\n\t\t\t\t});\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic generatePrefilteredAtlas(sources, options) {\n\t\t\t\tconst device = sources[0].device;\n\t\t\t\tconst format = sources[0].format;\n\t\t\t\tconst type = sources[0].type;\n\t\t\t\tconst result = options?.target || new Texture(device, {\n\t\t\t\t\t\tname: 'envPrefilteredAtlas',\n\t\t\t\t\t\twidth: options?.size || 512,\n\t\t\t\t\t\theight: options?.size || 512,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\ttype: type,\n\t\t\t\t\t\tprojection: TEXTUREPROJECTION_EQUIRECT,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst s = result.width / 512;\n\t\t\t\tconst rect = new Vec4(0, 0, 512 * s, 256 * s);\n\t\t\t\tconst levels = calcLevels(512);\n\t\t\t\tfor(let i = 0; i < levels; ++i){\n\t\t\t\t\t\treprojectTexture(sources[0], result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.x += rect.w;\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(0, 256 * s, 256 * s, 128 * s);\n\t\t\t\tfor(let i = 1; i < sources.length; ++i){\n\t\t\t\t\t\treprojectTexture(sources[i], result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t\t\trect.y += rect.w;\n\t\t\t\t\t\trect.z = Math.max(1, Math.floor(rect.z * 0.5));\n\t\t\t\t\t\trect.w = Math.max(1, Math.floor(rect.w * 0.5));\n\t\t\t\t}\n\t\t\t\trect.set(128 * s, (256 + 128) * s, 64 * s, 32 * s);\n\t\t\t\tif (options?.legacyAmbient) {\n\t\t\t\t\t\treprojectTexture(sources[5], result, {\n\t\t\t\t\t\t\t\tnumSamples: 1,\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\treprojectTexture(sources[0], result, {\n\t\t\t\t\t\t\t\tnumSamples: options?.numSamples || 2048,\n\t\t\t\t\t\t\t\tdistribution: 'lambert',\n\t\t\t\t\t\t\t\trect: rect,\n\t\t\t\t\t\t\t\tseamPixels: s\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n}\n\nclass FogParams {\n\t\tconstructor(){\n\t\t\t\tthis.type = FOG_NONE;\n\t\t\t\tthis.color = new Color(0, 0, 0);\n\t\t\t\tthis.density = 0;\n\t\t\t\tthis.start = 1;\n\t\t\t\tthis.end = 1000;\n\t\t}\n}\n\nclass Scene extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETLAYERS = 'set:layers';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETSKYBOX = 'set:skybox';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRERENDER = 'prerender';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSTRENDER = 'postrender';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRERENDER_LAYER = 'prerender:layer';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSTRENDER_LAYER = 'postrender:layer';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRECULL = 'precull';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSTCULL = 'postcull';\n\t\t}\n\t\tconstructor(graphicsDevice){\n\t\t\t\tsuper(), this.ambientBake = false, this.ambientBakeOcclusionBrightness = 0, this.ambientBakeOcclusionContrast = 0, this.ambientLight = new Color(0, 0, 0), this.ambientLuminance = 0, this.exposure = 1, this.lightmapSizeMultiplier = 1, this.lightmapMaxResolution = 2048, this.lightmapMode = BAKE_COLORDIR, this.lightmapFilterEnabled = false, this.lightmapHDR = false, this.root = null, this.physicalUnits = false, this._envAtlas = null, this._skyboxCubeMap = null, this._fogParams = new FogParams(), this.forcePassThroughSpecular = false;\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis._gravity = new Vec3(0, -9.8, 0);\n\t\t\t\tthis._layers = null;\n\t\t\t\tthis._prefilteredCubemaps = [];\n\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\tthis._skyboxIntensity = 1;\n\t\t\t\tthis._skyboxLuminance = 0;\n\t\t\t\tthis._skyboxMip = 0;\n\t\t\t\tthis._skyboxHighlightMultiplier = 1;\n\t\t\t\tthis._skyboxRotationShaderInclude = false;\n\t\t\t\tthis._skyboxRotation = new Quat();\n\t\t\t\tthis._skyboxRotationMat3 = new Mat3();\n\t\t\t\tthis._skyboxRotationMat4 = new Mat4();\n\t\t\t\tthis._ambientBakeNumSamples = 1;\n\t\t\t\tthis._ambientBakeSpherePart = 0.4;\n\t\t\t\tthis._lightmapFilterRange = 10;\n\t\t\t\tthis._lightmapFilterSmoothness = 0.2;\n\t\t\t\tthis._clusteredLightingEnabled = true;\n\t\t\t\tthis._lightingParams = new LightingParams(this.device.supportsAreaLights, this.device.maxTextureSize, ()=>{\n\t\t\t\t\t\tthis.updateShaders = true;\n\t\t\t\t});\n\t\t\t\tthis._gsplatParams = new GSplatParams();\n\t\t\t\tthis._sky = new Sky(this);\n\t\t\t\tthis._stats = {\n\t\t\t\t\t\tmeshInstances: 0,\n\t\t\t\t\t\tlights: 0,\n\t\t\t\t\t\tdynamicLights: 0,\n\t\t\t\t\t\tbakedLights: 0,\n\t\t\t\t\t\tupdateShadersTime: 0\n\t\t\t\t};\n\t\t\t\tthis.updateShaders = true;\n\t\t\t\tthis._shaderVersion = 0;\n\t\t\t\tthis.immediate = new Immediate(this.device);\n\t\t}\n\t\tget defaultDrawLayer() {\n\t\t\t\treturn this.layers.getLayerById(LAYERID_IMMEDIATE);\n\t\t}\n\t\tset ambientBakeNumSamples(value) {\n\t\t\t\tthis._ambientBakeNumSamples = math.clamp(Math.floor(value), 1, 255);\n\t\t}\n\t\tget ambientBakeNumSamples() {\n\t\t\t\treturn this._ambientBakeNumSamples;\n\t\t}\n\t\tset ambientBakeSpherePart(value) {\n\t\t\t\tthis._ambientBakeSpherePart = math.clamp(value, 0.001, 1);\n\t\t}\n\t\tget ambientBakeSpherePart() {\n\t\t\t\treturn this._ambientBakeSpherePart;\n\t\t}\n\t\tset clusteredLightingEnabled(value) {\n\t\t\t\tif (this.device.isWebGPU && !value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._clusteredLightingEnabled && value) {\n\t\t\t\t\t\tconsole.error('Turning on disabled clustered lighting is not currently supported');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._clusteredLightingEnabled = value;\n\t\t}\n\t\tget clusteredLightingEnabled() {\n\t\t\t\treturn this._clusteredLightingEnabled;\n\t\t}\n\t\tset envAtlas(value) {\n\t\t\t\tif (value !== this._envAtlas) {\n\t\t\t\t\t\tthis._envAtlas = value;\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tvalue.addressU = ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\t\t\t\t\tvalue.addressV = ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\t\t\t\t\tvalue.minFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\tvalue.magFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\tvalue.mipmaps = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._prefilteredCubemaps = [];\n\t\t\t\t\t\tif (this._internalEnvAtlas) {\n\t\t\t\t\t\t\t\tthis._internalEnvAtlas.destroy();\n\t\t\t\t\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget envAtlas() {\n\t\t\t\treturn this._envAtlas;\n\t\t}\n\t\tset layers(layers) {\n\t\t\t\tconst prev = this._layers;\n\t\t\t\tthis._layers = layers;\n\t\t\t\tthis.fire('set:layers', prev, layers);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tget sky() {\n\t\t\t\treturn this._sky;\n\t\t}\n\t\tget lighting() {\n\t\t\t\treturn this._lightingParams;\n\t\t}\n\t\tget gsplat() {\n\t\t\t\treturn this._gsplatParams;\n\t\t}\n\t\tget fog() {\n\t\t\t\treturn this._fogParams;\n\t\t}\n\t\tset lightmapFilterRange(value) {\n\t\t\t\tthis._lightmapFilterRange = Math.max(value, 0.001);\n\t\t}\n\t\tget lightmapFilterRange() {\n\t\t\t\treturn this._lightmapFilterRange;\n\t\t}\n\t\tset lightmapFilterSmoothness(value) {\n\t\t\t\tthis._lightmapFilterSmoothness = Math.max(value, 0.001);\n\t\t}\n\t\tget lightmapFilterSmoothness() {\n\t\t\t\treturn this._lightmapFilterSmoothness;\n\t\t}\n\t\tset prefilteredCubemaps(value) {\n\t\t\t\tvalue = value || [];\n\t\t\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\t\t\tconst changed = cubemaps.length !== value.length || cubemaps.some((c, i)=>c !== value[i]);\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tconst complete = value.length === 6 && value.every((c)=>!!c);\n\t\t\t\t\t\tif (complete) {\n\t\t\t\t\t\t\t\tthis._internalEnvAtlas = EnvLighting.generatePrefilteredAtlas(value, {\n\t\t\t\t\t\t\t\t\t\ttarget: this._internalEnvAtlas\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._envAtlas = this._internalEnvAtlas;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this._internalEnvAtlas) {\n\t\t\t\t\t\t\t\t\t\tthis._internalEnvAtlas.destroy();\n\t\t\t\t\t\t\t\t\t\tthis._internalEnvAtlas = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._envAtlas = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._prefilteredCubemaps = value.slice();\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget prefilteredCubemaps() {\n\t\t\t\treturn this._prefilteredCubemaps;\n\t\t}\n\t\tset skybox(value) {\n\t\t\t\tif (value !== this._skyboxCubeMap) {\n\t\t\t\t\t\tthis._skyboxCubeMap = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skybox() {\n\t\t\t\treturn this._skyboxCubeMap;\n\t\t}\n\t\tset skyboxIntensity(value) {\n\t\t\t\tif (value !== this._skyboxIntensity) {\n\t\t\t\t\t\tthis._skyboxIntensity = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxIntensity() {\n\t\t\t\treturn this._skyboxIntensity;\n\t\t}\n\t\tset skyboxLuminance(value) {\n\t\t\t\tif (value !== this._skyboxLuminance) {\n\t\t\t\t\t\tthis._skyboxLuminance = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxLuminance() {\n\t\t\t\treturn this._skyboxLuminance;\n\t\t}\n\t\tset skyboxMip(value) {\n\t\t\t\tif (value !== this._skyboxMip) {\n\t\t\t\t\t\tthis._skyboxMip = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxMip() {\n\t\t\t\treturn this._skyboxMip;\n\t\t}\n\t\tset skyboxHighlightMultiplier(value) {\n\t\t\t\tif (value !== this._skyboxHighlightMultiplier) {\n\t\t\t\t\t\tthis._skyboxHighlightMultiplier = value;\n\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t}\n\t\t}\n\t\tget skyboxHighlightMultiplier() {\n\t\t\t\treturn this._skyboxHighlightMultiplier;\n\t\t}\n\t\tset skyboxRotation(value) {\n\t\t\t\tif (!this._skyboxRotation.equals(value)) {\n\t\t\t\t\t\tconst isIdentity = value.equals(Quat.IDENTITY);\n\t\t\t\t\t\tthis._skyboxRotation.copy(value);\n\t\t\t\t\t\tif (isIdentity) {\n\t\t\t\t\t\t\t\tthis._skyboxRotationMat3.setIdentity();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._skyboxRotationMat4.setTRS(Vec3.ZERO, value, Vec3.ONE);\n\t\t\t\t\t\t\t\tthis._skyboxRotationMat3.invertMat4(this._skyboxRotationMat4);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._skyboxRotationShaderInclude && !isIdentity) {\n\t\t\t\t\t\t\t\tthis._skyboxRotationShaderInclude = true;\n\t\t\t\t\t\t\t\tthis._resetSkyMesh();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget skyboxRotation() {\n\t\t\t\treturn this._skyboxRotation;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._resetSkyMesh();\n\t\t\t\tthis.root = null;\n\t\t\t\tthis.off();\n\t\t}\n\t\tdrawLine(start, end, color = Color.WHITE, depthTest = true, layer = this.defaultDrawLayer) {\n\t\t\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLines([\n\t\t\t\t\t\tstart,\n\t\t\t\t\t\tend\n\t\t\t\t], [\n\t\t\t\t\t\tcolor,\n\t\t\t\t\t\tcolor\n\t\t\t\t]);\n\t\t}\n\t\tdrawLines(positions, colors, depthTest = true, layer = this.defaultDrawLayer) {\n\t\t\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLines(positions, colors);\n\t\t}\n\t\tdrawLineArrays(positions, colors, depthTest = true, layer = this.defaultDrawLayer) {\n\t\t\t\tconst batch = this.immediate.getBatch(layer, depthTest);\n\t\t\t\tbatch.addLinesArrays(positions, colors);\n\t\t}\n\t\tapplySettings(settings) {\n\t\t\t\tconst physics = settings.physics;\n\t\t\t\tconst render = settings.render;\n\t\t\t\tthis._gravity.set(physics.gravity[0], physics.gravity[1], physics.gravity[2]);\n\t\t\t\tthis.ambientLight.set(render.global_ambient[0], render.global_ambient[1], render.global_ambient[2]);\n\t\t\t\tthis.ambientLuminance = render.ambientLuminance;\n\t\t\t\tthis.fog.type = render.fog;\n\t\t\t\tthis.fog.color.set(render.fog_color[0], render.fog_color[1], render.fog_color[2]);\n\t\t\t\tthis.fog.start = render.fog_start;\n\t\t\t\tthis.fog.end = render.fog_end;\n\t\t\t\tthis.fog.density = render.fog_density;\n\t\t\t\tthis.lightmapSizeMultiplier = render.lightmapSizeMultiplier;\n\t\t\t\tthis.lightmapMaxResolution = render.lightmapMaxResolution;\n\t\t\t\tthis.lightmapMode = render.lightmapMode;\n\t\t\t\tthis.exposure = render.exposure;\n\t\t\t\tthis._skyboxIntensity = render.skyboxIntensity ?? 1;\n\t\t\t\tthis._skyboxLuminance = render.skyboxLuminance ?? 20000;\n\t\t\t\tthis._skyboxMip = render.skyboxMip ?? 0;\n\t\t\t\tif (render.skyboxRotation) {\n\t\t\t\t\t\tthis.skyboxRotation = new Quat().setFromEulerAngles(render.skyboxRotation[0], render.skyboxRotation[1], render.skyboxRotation[2]);\n\t\t\t\t}\n\t\t\t\tthis.sky.applySettings(render);\n\t\t\t\tthis.clusteredLightingEnabled = render.clusteredLightingEnabled ?? false;\n\t\t\t\tthis.lighting.applySettings(render);\n\t\t\t\t[\n\t\t\t\t\t\t'lightmapFilterEnabled',\n\t\t\t\t\t\t'lightmapFilterRange',\n\t\t\t\t\t\t'lightmapFilterSmoothness',\n\t\t\t\t\t\t'ambientBake',\n\t\t\t\t\t\t'ambientBakeNumSamples',\n\t\t\t\t\t\t'ambientBakeSpherePart',\n\t\t\t\t\t\t'ambientBakeOcclusionBrightness',\n\t\t\t\t\t\t'ambientBakeOcclusionContrast'\n\t\t\t\t].forEach((setting)=>{\n\t\t\t\t\t\tif (render.hasOwnProperty(setting)) {\n\t\t\t\t\t\t\t\tthis[setting] = render[setting];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._resetSkyMesh();\n\t\t}\n\t\t_getSkyboxTex() {\n\t\t\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\t\t\tif (this._skyboxMip) {\n\t\t\t\t\t\tconst skyboxMapping = [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t3,\n\t\t\t\t\t\t\t\t4,\n\t\t\t\t\t\t\t\t5,\n\t\t\t\t\t\t\t\t6\n\t\t\t\t\t\t];\n\t\t\t\t\t\treturn cubemaps[skyboxMapping[this._skyboxMip]] || this._envAtlas || cubemaps[0] || this._skyboxCubeMap;\n\t\t\t\t}\n\t\t\t\treturn this._skyboxCubeMap || cubemaps[0] || this._envAtlas;\n\t\t}\n\t\t_updateSkyMesh() {\n\t\t\t\tif (!this.sky.skyMesh) {\n\t\t\t\t\t\tthis.sky.updateSkyMesh();\n\t\t\t\t}\n\t\t\t\tthis.sky.update();\n\t\t}\n\t\t_resetSkyMesh() {\n\t\t\t\tthis.sky.resetSkyMesh();\n\t\t\t\tthis.updateShaders = true;\n\t\t}\n\t\tsetSkybox(cubemaps) {\n\t\t\t\tif (!cubemaps) {\n\t\t\t\t\t\tthis.skybox = null;\n\t\t\t\t\t\tthis.envAtlas = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.skybox = cubemaps[0] || null;\n\t\t\t\t\t\tif (cubemaps[1] && !cubemaps[1].cubemap) {\n\t\t\t\t\t\t\t\tthis.envAtlas = cubemaps[1];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.prefilteredCubemaps = cubemaps.slice(1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lightmapPixelFormat() {\n\t\t\t\treturn this.lightmapHDR && this.device.getRenderableHdrFormat() || PIXELFORMAT_RGBA8;\n\t\t}\n}\n\nclass Skin {\n\t\tconstructor(graphicsDevice, ibp, boneNames){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.inverseBindPose = ibp;\n\t\t\t\tthis.boneNames = boneNames;\n\t\t}\n}\n\nconst spriteNormals = [\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t0,\n\t\t0,\n\t\t1\n];\nconst spriteIndices = [\n\t\t0,\n\t\t1,\n\t\t3,\n\t\t2,\n\t\t3,\n\t\t1\n];\nclass Sprite extends EventHandler {\n\t\tconstructor(device, options){\n\t\t\t\tsuper();\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._pixelsPerUnit = options && options.pixelsPerUnit !== undefined ? options.pixelsPerUnit : 1;\n\t\t\t\tthis._renderMode = options && options.renderMode !== undefined ? options.renderMode : SPRITE_RENDERMODE_SIMPLE;\n\t\t\t\tthis._atlas = options && options.atlas !== undefined ? options.atlas : null;\n\t\t\t\tthis._frameKeys = options && options.frameKeys !== undefined ? options.frameKeys : null;\n\t\t\t\tthis._meshes = [];\n\t\t\t\tthis._updatingProperties = false;\n\t\t\t\tthis._meshesDirty = false;\n\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t}\n\t\t}\n\t\tset frameKeys(value) {\n\t\t\t\tthis._frameKeys = value;\n\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.fire('set:frameKeys', value);\n\t\t}\n\t\tget frameKeys() {\n\t\t\t\treturn this._frameKeys;\n\t\t}\n\t\tset atlas(value) {\n\t\t\t\tif (value === this._atlas) return;\n\t\t\t\tif (this._atlas) {\n\t\t\t\t\t\tthis._atlas.off('set:frames', this._onSetFrames, this);\n\t\t\t\t\t\tthis._atlas.off('set:frame', this._onFrameChanged, this);\n\t\t\t\t\t\tthis._atlas.off('remove:frame', this._onFrameRemoved, this);\n\t\t\t\t}\n\t\t\t\tthis._atlas = value;\n\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\tthis._atlas.on('set:frames', this._onSetFrames, this);\n\t\t\t\t\t\tthis._atlas.on('set:frame', this._onFrameChanged, this);\n\t\t\t\t\t\tthis._atlas.on('remove:frame', this._onFrameRemoved, this);\n\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.fire('set:atlas', value);\n\t\t}\n\t\tget atlas() {\n\t\t\t\treturn this._atlas;\n\t\t}\n\t\tset pixelsPerUnit(value) {\n\t\t\t\tif (this._pixelsPerUnit === value) return;\n\t\t\t\tthis._pixelsPerUnit = value;\n\t\t\t\tthis.fire('set:pixelsPerUnit', value);\n\t\t\t\tif (this._atlas && this._frameKeys && this.renderMode === SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget pixelsPerUnit() {\n\t\t\t\treturn this._pixelsPerUnit;\n\t\t}\n\t\tset renderMode(value) {\n\t\t\t\tif (this._renderMode === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst prev = this._renderMode;\n\t\t\t\tthis._renderMode = value;\n\t\t\t\tthis.fire('set:renderMode', value);\n\t\t\t\tif (prev === SPRITE_RENDERMODE_SIMPLE || value === SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\tif (this._atlas && this._frameKeys) {\n\t\t\t\t\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget renderMode() {\n\t\t\t\treturn this._renderMode;\n\t\t}\n\t\tget meshes() {\n\t\t\t\treturn this._meshes;\n\t\t}\n\t\t_createMeshes() {\n\t\t\t\tconst len = this._meshes.length;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst mesh = this._meshes[i];\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst count = this._frameKeys.length;\n\t\t\t\tthis._meshes = new Array(count);\n\t\t\t\tconst createMeshFunc = this.renderMode === SPRITE_RENDERMODE_SLICED || this._renderMode === SPRITE_RENDERMODE_TILED ? this._create9SliceMesh : this._createSimpleMesh;\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst frame = this._atlas.frames[this._frameKeys[i]];\n\t\t\t\t\t\tthis._meshes[i] = frame ? createMeshFunc.call(this, frame) : null;\n\t\t\t\t}\n\t\t\t\tthis.fire('set:meshes');\n\t\t}\n\t\t_createSimpleMesh(frame) {\n\t\t\t\tconst rect = frame.rect;\n\t\t\t\tconst texWidth = this._atlas.texture.width;\n\t\t\t\tconst texHeight = this._atlas.texture.height;\n\t\t\t\tconst w = rect.z / this._pixelsPerUnit;\n\t\t\t\tconst h = rect.w / this._pixelsPerUnit;\n\t\t\t\tconst hp = frame.pivot.x;\n\t\t\t\tconst vp = frame.pivot.y;\n\t\t\t\tconst positions = [\n\t\t\t\t\t\t-hp * w,\n\t\t\t\t\t\t-vp * h,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t(1 - hp) * w,\n\t\t\t\t\t\t-vp * h,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t(1 - hp) * w,\n\t\t\t\t\t\t(1 - vp) * h,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t-hp * w,\n\t\t\t\t\t\t(1 - vp) * h,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tconst lu = rect.x / texWidth;\n\t\t\t\tconst bv = 1.0 - rect.y / texHeight;\n\t\t\t\tconst ru = (rect.x + rect.z) / texWidth;\n\t\t\t\tconst tv = 1.0 - (rect.y + rect.w) / texHeight;\n\t\t\t\tconst uvs = [\n\t\t\t\t\t\tlu,\n\t\t\t\t\t\tbv,\n\t\t\t\t\t\tru,\n\t\t\t\t\t\tbv,\n\t\t\t\t\t\tru,\n\t\t\t\t\t\ttv,\n\t\t\t\t\t\tlu,\n\t\t\t\t\t\ttv\n\t\t\t\t];\n\t\t\t\tconst geom = new Geometry();\n\t\t\t\tgeom.positions = positions;\n\t\t\t\tgeom.normals = spriteNormals;\n\t\t\t\tgeom.uvs = uvs;\n\t\t\t\tgeom.indices = spriteIndices;\n\t\t\t\treturn Mesh.fromGeometry(this._device, geom);\n\t\t}\n\t\t_create9SliceMesh() {\n\t\t\t\tconst he = Vec2.ONE;\n\t\t\t\tconst ws = 3;\n\t\t\t\tconst ls = 3;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet vcounter = 0;\n\t\t\t\tfor(let i = 0; i <= ws; i++){\n\t\t\t\t\t\tconst u = i === 0 || i === ws ? 0 : 1;\n\t\t\t\t\t\tfor(let j = 0; j <= ls; j++){\n\t\t\t\t\t\t\t\tconst x = -he.x + 2.0 * he.x * (i <= 1 ? 0 : 3) / ws;\n\t\t\t\t\t\t\t\tconst y = 0.0;\n\t\t\t\t\t\t\t\tconst z = -(-he.y + 2.0 * he.y * (j <= 1 ? 0 : 3) / ls);\n\t\t\t\t\t\t\t\tconst v = j === 0 || j === ls ? 0 : 1;\n\t\t\t\t\t\t\t\tpositions.push(-x, y, z);\n\t\t\t\t\t\t\t\tnormals.push(0.0, 1.0, 0.0);\n\t\t\t\t\t\t\t\tuvs.push(u, v);\n\t\t\t\t\t\t\t\tif (i < ws && j < ls) {\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + ls + 2, vcounter + 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvcounter++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst geom = new Geometry();\n\t\t\t\tgeom.positions = positions;\n\t\t\t\tgeom.normals = normals;\n\t\t\t\tgeom.uvs = uvs;\n\t\t\t\tgeom.indices = indices;\n\t\t\t\treturn Mesh.fromGeometry(this._device, geom);\n\t\t}\n\t\t_onSetFrames(frames) {\n\t\t\t\tif (this._updatingProperties) {\n\t\t\t\t\t\tthis._meshesDirty = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t}\n\t\t}\n\t\t_onFrameChanged(frameKey, frame) {\n\t\t\t\tconst idx = this._frameKeys.indexOf(frameKey);\n\t\t\t\tif (idx < 0) return;\n\t\t\t\tif (frame) {\n\t\t\t\t\t\tif (this.renderMode === SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\t\t\tthis._meshes[idx] = this._createSimpleMesh(frame);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._meshes[idx] = null;\n\t\t\t\t}\n\t\t\t\tthis.fire('set:meshes');\n\t\t}\n\t\t_onFrameRemoved(frameKey) {\n\t\t\t\tconst idx = this._frameKeys.indexOf(frameKey);\n\t\t\t\tif (idx < 0) return;\n\t\t\t\tthis._meshes[idx] = null;\n\t\t\t\tthis.fire('set:meshes');\n\t\t}\n\t\tstartUpdate() {\n\t\t\t\tthis._updatingProperties = true;\n\t\t\t\tthis._meshesDirty = false;\n\t\t}\n\t\tendUpdate() {\n\t\t\t\tthis._updatingProperties = false;\n\t\t\t\tif (this._meshesDirty && this._atlas && this._frameKeys) {\n\t\t\t\t\t\tthis._createMeshes();\n\t\t\t\t}\n\t\t\t\tthis._meshesDirty = false;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor (const mesh of this._meshes){\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._meshes.length = 0;\n\t\t}\n}\n\nclass TextureAtlas extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis._texture = null;\n\t\t\t\tthis._frames = null;\n\t\t}\n\t\tset texture(value) {\n\t\t\t\tthis._texture = value;\n\t\t\t\tthis.fire('set:texture', value);\n\t\t}\n\t\tget texture() {\n\t\t\t\treturn this._texture;\n\t\t}\n\t\tset frames(value) {\n\t\t\t\tthis._frames = value;\n\t\t\t\tthis.fire('set:frames', value);\n\t\t}\n\t\tget frames() {\n\t\t\t\treturn this._frames;\n\t\t}\n\t\tsetFrame(key, data) {\n\t\t\t\tlet frame = this._frames[key];\n\t\t\t\tif (!frame) {\n\t\t\t\t\t\tframe = {\n\t\t\t\t\t\t\t\trect: data.rect.clone(),\n\t\t\t\t\t\t\t\tpivot: data.pivot.clone(),\n\t\t\t\t\t\t\t\tborder: data.border.clone()\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis._frames[key] = frame;\n\t\t\t\t} else {\n\t\t\t\t\t\tframe.rect.copy(data.rect);\n\t\t\t\t\t\tframe.pivot.copy(data.pivot);\n\t\t\t\t\t\tframe.border.copy(data.border);\n\t\t\t\t}\n\t\t\t\tthis.fire('set:frame', key.toString(), frame);\n\t\t}\n\t\tremoveFrame(key) {\n\t\t\t\tconst frame = this._frames[key];\n\t\t\t\tif (frame) {\n\t\t\t\t\t\tdelete this._frames[key];\n\t\t\t\t\t\tthis.fire('remove:frame', key.toString(), frame);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._texture) {\n\t\t\t\t\t\tthis._texture.destroy();\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimationKey {\n\t\tconstructor(time, position, rotation, scale){\n\t\t\t\tthis.time = time;\n\t\t\t\tthis.position = position;\n\t\t\t\tthis.rotation = rotation;\n\t\t\t\tthis.scale = scale;\n\t\t}\n}\nclass AnimationNode {\n\t\tconstructor(){\n\t\t\t\tthis._name = '';\n\t\t\t\tthis._keys = [];\n\t\t}\n}\nclass Animation {\n\t\tconstructor(){\n\t\t\t\tthis.name = '';\n\t\t\t\tthis.duration = 0;\n\t\t\t\tthis._nodes = [];\n\t\t\t\tthis._nodeDict = {};\n\t\t}\n\t\tgetNode(name) {\n\t\t\t\treturn this._nodeDict[name];\n\t\t}\n\t\taddNode(node) {\n\t\t\t\tthis._nodes.push(node);\n\t\t\t\tthis._nodeDict[node._name] = node;\n\t\t}\n\t\tget nodes() {\n\t\t\t\treturn this._nodes;\n\t\t}\n}\n\nclass InterpolatedKey {\n\t\tconstructor(){\n\t\t\t\tthis._written = false;\n\t\t\t\tthis._name = '';\n\t\t\t\tthis._keyFrames = [];\n\t\t\t\tthis._quat = new Quat();\n\t\t\t\tthis._pos = new Vec3();\n\t\t\t\tthis._scale = new Vec3();\n\t\t\t\tthis._targetNode = null;\n\t\t}\n\t\tgetTarget() {\n\t\t\t\treturn this._targetNode;\n\t\t}\n\t\tsetTarget(node) {\n\t\t\t\tthis._targetNode = node;\n\t\t}\n}\nclass Skeleton {\n\t\tconstructor(graph){\n\t\t\t\tthis.looping = true;\n\t\t\t\tthis._animation = null;\n\t\t\t\tthis._time = 0;\n\t\t\t\tthis._interpolatedKeys = [];\n\t\t\t\tthis._interpolatedKeyDict = {};\n\t\t\t\tthis._currKeyIndices = {};\n\t\t\t\tthis.graph = null;\n\t\t\t\tconst addInterpolatedKeys = (node)=>{\n\t\t\t\t\t\tconst interpKey = new InterpolatedKey();\n\t\t\t\t\t\tinterpKey._name = node.name;\n\t\t\t\t\t\tthis._interpolatedKeys.push(interpKey);\n\t\t\t\t\t\tthis._interpolatedKeyDict[node.name] = interpKey;\n\t\t\t\t\t\tthis._currKeyIndices[node.name] = 0;\n\t\t\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\t\t\taddInterpolatedKeys(node._children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\taddInterpolatedKeys(graph);\n\t\t}\n\t\tset animation(value) {\n\t\t\t\tthis._animation = value;\n\t\t\t\tthis.currentTime = 0;\n\t\t}\n\t\tget animation() {\n\t\t\t\treturn this._animation;\n\t\t}\n\t\tset currentTime(value) {\n\t\t\t\tthis._time = value;\n\t\t\t\tconst numNodes = this._interpolatedKeys.length;\n\t\t\t\tfor(let i = 0; i < numNodes; i++){\n\t\t\t\t\t\tconst node = this._interpolatedKeys[i];\n\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\tthis._currKeyIndices[nodeName] = 0;\n\t\t\t\t}\n\t\t\t\tthis.addTime(0);\n\t\t\t\tthis.updateGraph();\n\t\t}\n\t\tget currentTime() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\tget numNodes() {\n\t\t\t\treturn this._interpolatedKeys.length;\n\t\t}\n\t\taddTime(delta) {\n\t\t\t\tif (this._animation !== null) {\n\t\t\t\t\t\tconst nodes = this._animation._nodes;\n\t\t\t\t\t\tconst duration = this._animation.duration;\n\t\t\t\t\t\tif (this._time === duration && !this.looping) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._time += delta;\n\t\t\t\t\t\tif (this._time > duration) {\n\t\t\t\t\t\t\t\tthis._time = this.looping ? 0.0 : duration;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (this._time < 0) {\n\t\t\t\t\t\t\t\tthis._time = this.looping ? duration : 0.0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = node._keys.length - 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst offset = delta >= 0 ? 1 : -1;\n\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\t\t\tconst nodeName = node._name;\n\t\t\t\t\t\t\t\tconst keys = node._keys;\n\t\t\t\t\t\t\t\tconst interpKey = this._interpolatedKeyDict[nodeName];\n\t\t\t\t\t\t\t\tif (interpKey === undefined) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet foundKey = false;\n\t\t\t\t\t\t\t\tif (keys.length !== 1) {\n\t\t\t\t\t\t\t\t\t\tfor(let currKeyIndex = this._currKeyIndices[nodeName]; currKeyIndex < keys.length - 1 && currKeyIndex >= 0; currKeyIndex += offset){\n\t\t\t\t\t\t\t\t\t\t\t\tconst k1 = keys[currKeyIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tconst k2 = keys[currKeyIndex + 1];\n\t\t\t\t\t\t\t\t\t\t\t\tif (k1.time <= this._time && k2.time >= this._time) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst alpha = (this._time - k1.time) / (k2.time - k1.time);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._pos.lerp(k1.position, k2.position, alpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._quat.slerp(k1.rotation, k2.rotation, alpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._scale.lerp(k1.scale, k2.scale, alpha);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinterpKey._written = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._currKeyIndices[nodeName] = currKeyIndex;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfoundKey = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (keys.length === 1 || !foundKey && this._time === 0.0 && this.looping) {\n\t\t\t\t\t\t\t\t\t\tinterpKey._pos.copy(keys[0].position);\n\t\t\t\t\t\t\t\t\t\tinterpKey._quat.copy(keys[0].rotation);\n\t\t\t\t\t\t\t\t\t\tinterpKey._scale.copy(keys[0].scale);\n\t\t\t\t\t\t\t\t\t\tinterpKey._written = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tblend(skel1, skel2, alpha) {\n\t\t\t\tconst numNodes = this._interpolatedKeys.length;\n\t\t\t\tfor(let i = 0; i < numNodes; i++){\n\t\t\t\t\t\tconst key1 = skel1._interpolatedKeys[i];\n\t\t\t\t\t\tconst key2 = skel2._interpolatedKeys[i];\n\t\t\t\t\t\tconst dstKey = this._interpolatedKeys[i];\n\t\t\t\t\t\tif (key1._written && key2._written) {\n\t\t\t\t\t\t\t\tdstKey._quat.slerp(key1._quat, skel2._interpolatedKeys[i]._quat, alpha);\n\t\t\t\t\t\t\t\tdstKey._pos.lerp(key1._pos, skel2._interpolatedKeys[i]._pos, alpha);\n\t\t\t\t\t\t\t\tdstKey._scale.lerp(key1._scale, key2._scale, alpha);\n\t\t\t\t\t\t\t\tdstKey._written = true;\n\t\t\t\t\t\t} else if (key1._written) {\n\t\t\t\t\t\t\t\tdstKey._quat.copy(key1._quat);\n\t\t\t\t\t\t\t\tdstKey._pos.copy(key1._pos);\n\t\t\t\t\t\t\t\tdstKey._scale.copy(key1._scale);\n\t\t\t\t\t\t\t\tdstKey._written = true;\n\t\t\t\t\t\t} else if (key2._written) {\n\t\t\t\t\t\t\t\tdstKey._quat.copy(key2._quat);\n\t\t\t\t\t\t\t\tdstKey._pos.copy(key2._pos);\n\t\t\t\t\t\t\t\tdstKey._scale.copy(key2._scale);\n\t\t\t\t\t\t\t\tdstKey._written = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetGraph(graph) {\n\t\t\t\tthis.graph = graph;\n\t\t\t\tif (graph) {\n\t\t\t\t\t\tfor(let i = 0; i < this._interpolatedKeys.length; i++){\n\t\t\t\t\t\t\t\tconst interpKey = this._interpolatedKeys[i];\n\t\t\t\t\t\t\t\tconst graphNode = graph.findByName(interpKey._name);\n\t\t\t\t\t\t\t\tthis._interpolatedKeys[i].setTarget(graphNode);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < this._interpolatedKeys.length; i++){\n\t\t\t\t\t\t\t\tthis._interpolatedKeys[i].setTarget(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateGraph() {\n\t\t\t\tif (this.graph) {\n\t\t\t\t\t\tfor(let i = 0; i < this._interpolatedKeys.length; i++){\n\t\t\t\t\t\t\t\tconst interpKey = this._interpolatedKeys[i];\n\t\t\t\t\t\t\t\tif (interpKey._written) {\n\t\t\t\t\t\t\t\t\t\tconst transform = interpKey.getTarget();\n\t\t\t\t\t\t\t\t\t\ttransform.localPosition.copy(interpKey._pos);\n\t\t\t\t\t\t\t\t\t\ttransform.localRotation.copy(interpKey._quat);\n\t\t\t\t\t\t\t\t\t\ttransform.localScale.copy(interpKey._scale);\n\t\t\t\t\t\t\t\t\t\tif (!transform._dirtyLocal) {\n\t\t\t\t\t\t\t\t\t\t\t\ttransform._dirtifyLocal();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinterpKey._written = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst _viewport$1 = new Vec4();\nclass PostEffect {\n\t\tconstructor(graphicsDevice){\n\t\t\t\tthis.device = graphicsDevice;\n\t\t\t\tthis.needsDepthBuffer = false;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.quadVertexShader = `\n\t\t\t\tattribute vec2 aPosition;\n\t\t\t\tvarying vec2 vUv0;\n\t\t\t\tvoid main(void)\n\t\t\t\t{\n\t\t\t\t\t\tgl_Position = vec4(aPosition, 0.0, 1.0);\n\t\t\t\t\t\tvUv0 = getImageEffectUV((aPosition.xy + 1.0) * 0.5);\n\t\t\t\t}\n\t\t`;\n\t\t}\n\t\trender(inputTarget, outputTarget, rect) {}\n\t\tdrawQuad(target, shader, rect) {\n\t\t\t\tlet viewport;\n\t\t\t\tif (rect) {\n\t\t\t\t\t\tconst w = target ? target.width : this.device.width;\n\t\t\t\t\t\tconst h = target ? target.height : this.device.height;\n\t\t\t\t\t\tviewport = _viewport$1.set(rect.x * w, rect.y * h, rect.z * w, rect.w * h);\n\t\t\t\t}\n\t\t\t\tthis.device.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdrawQuadWithShader(this.device, target, shader, viewport);\n\t\t}\n}\n\nclass RenderPassShaderQuad extends RenderPass {\n\t\tset shader(shader) {\n\t\t\t\tthis.quadRender?.destroy();\n\t\t\t\tthis.quadRender = null;\n\t\t\t\tthis._shader = shader;\n\t\t\t\tif (shader) {\n\t\t\t\t\t\tthis.quadRender = new QuadRender(shader);\n\t\t\t\t}\n\t\t}\n\t\tget shader() {\n\t\t\t\treturn this._shader;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tdevice.setBlendState(this.blendState);\n\t\t\t\tdevice.setCullMode(this.cullMode);\n\t\t\t\tdevice.setDepthState(this.depthState);\n\t\t\t\tdevice.setStencilState(this.stencilFront, this.stencilBack);\n\t\t\t\tthis.quadRender.render();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._shader = null, this.quadRender = null, this.cullMode = CULLFACE_NONE, this.blendState = BlendState.NOBLEND, this.depthState = DepthState.NODEPTH, this.stencilFront = null, this.stencilBack = null;\n\t\t}\n}\n\nclass LitShaderOptions {\n\t\tconstructor(){\n\t\t\t\tthis.hasTangents = false;\n\t\t\t\tthis.shaderChunks = null;\n\t\t\t\tthis.pass = 0;\n\t\t\t\tthis.alphaTest = false;\n\t\t\t\tthis.blendType = BLEND_NONE;\n\t\t\t\tthis.separateAmbient = false;\n\t\t\t\tthis.screenSpace = false;\n\t\t\t\tthis.skin = false;\n\t\t\t\tthis.batch = false;\n\t\t\t\tthis.useInstancing = false;\n\t\t\t\tthis.useMorphPosition = false;\n\t\t\t\tthis.useMorphNormal = false;\n\t\t\t\tthis.useMorphTextureBasedInt = false;\n\t\t\t\tthis.nineSlicedMode = 0;\n\t\t\t\tthis.clusteredLightingEnabled = true;\n\t\t\t\tthis.clusteredLightingCookiesEnabled = false;\n\t\t\t\tthis.clusteredLightingShadowsEnabled = false;\n\t\t\t\tthis.clusteredLightingShadowType = 0;\n\t\t\t\tthis.clusteredLightingAreaLightsEnabled = false;\n\t\t\t\tthis.vertexColors = false;\n\t\t\t\tthis.lightMapEnabled = false;\n\t\t\t\tthis.dirLightMapEnabled = false;\n\t\t\t\tthis.useHeights = false;\n\t\t\t\tthis.useNormals = false;\n\t\t\t\tthis.useClearCoatNormals = false;\n\t\t\t\tthis.useAo = false;\n\t\t\t\tthis.diffuseMapEnabled = false;\n\t\t\t\tthis.pixelSnap = false;\n\t\t\t\tthis.ambientSH = false;\n\t\t\t\tthis.ssao = false;\n\t\t\t\tthis.twoSidedLighting = false;\n\t\t\t\tthis.occludeDirect = false;\n\t\t\t\tthis.occludeSpecular = 0;\n\t\t\t\tthis.occludeSpecularFloat = false;\n\t\t\t\tthis.useMsdf = false;\n\t\t\t\tthis.msdfTextAttribute = false;\n\t\t\t\tthis.alphaToCoverage = false;\n\t\t\t\tthis.opacityFadesSpecular = false;\n\t\t\t\tthis.opacityDither = DITHER_NONE;\n\t\t\t\tthis.opacityShadowDither = DITHER_NONE;\n\t\t\t\tthis.cubeMapProjection = 0;\n\t\t\t\tthis.useSpecular = false;\n\t\t\t\tthis.useSpecularityFactor = false;\n\t\t\t\tthis.enableGGXSpecular = false;\n\t\t\t\tthis.fresnelModel = 0;\n\t\t\t\tthis.useRefraction = false;\n\t\t\t\tthis.useClearCoat = false;\n\t\t\t\tthis.useSheen = false;\n\t\t\t\tthis.useIridescence = false;\n\t\t\t\tthis.useMetalness = false;\n\t\t\t\tthis.useDynamicRefraction = false;\n\t\t\t\tthis.dispersion = false;\n\t\t\t\tthis.fog = FOG_NONE;\n\t\t\t\tthis.gamma = GAMMA_NONE;\n\t\t\t\tthis.toneMap = -1;\n\t\t\t\tthis.reflectionSource = REFLECTIONSRC_NONE;\n\t\t\t\tthis.reflectionEncoding = null;\n\t\t\t\tthis.reflectionCubemapEncoding = null;\n\t\t\t\tthis.ambientSource = 'constant';\n\t\t\t\tthis.ambientEncoding = null;\n\t\t\t\tthis.skyboxIntensity = 1.0;\n\t\t\t\tthis.useCubeMapRotation = false;\n\t\t\t\tthis.lightMapWithoutAmbient = false;\n\t\t\t\tthis.lights = [];\n\t\t\t\tthis.noShadow = false;\n\t\t\t\tthis.lightMaskDynamic = 0x0;\n\t\t\t\tthis.userAttributes = {};\n\t\t\t\tthis.linearDepth = false;\n\t\t\t\tthis.shadowCatcher = false;\n\t\t}\n}\n\nclass LitMaterialOptions {\n\t\tconstructor(){\n\t\t\t\tthis.litOptions = new LitShaderOptions();\n\t\t}\n}\n\nclass LitMaterialOptionsBuilder {\n\t\tstatic update(litOptions, material, scene, renderParams, objDefs, pass, sortedLights) {\n\t\t\t\tLitMaterialOptionsBuilder.updateSharedOptions(litOptions, material, scene, objDefs, pass);\n\t\t\t\tLitMaterialOptionsBuilder.updateMaterialOptions(litOptions, material);\n\t\t\t\tLitMaterialOptionsBuilder.updateEnvOptions(litOptions, material, scene, renderParams);\n\t\t\t\tLitMaterialOptionsBuilder.updateLightingOptions(litOptions, material, scene, objDefs, sortedLights);\n\t\t}\n\t\tstatic updateSharedOptions(litOptions, material, scene, objDefs, pass) {\n\t\t\t\tlitOptions.shaderChunks = material.shaderChunks;\n\t\t\t\tlitOptions.pass = pass;\n\t\t\t\tlitOptions.alphaTest = material.alphaTest > 0;\n\t\t\t\tlitOptions.blendType = material.blendType;\n\t\t\t\tlitOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0;\n\t\t\t\tlitOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0;\n\t\t\t\tlitOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0;\n\t\t\t\tlitOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0;\n\t\t\t\tlitOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0;\n\t\t\t\tlitOptions.useMorphTextureBasedInt = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED_INT) !== 0;\n\t\t\t\tlitOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0;\n\t\t\t\tlitOptions.nineSlicedMode = material.nineSlicedMode || SPRITE_RENDERMODE_SIMPLE;\n\t\t\t\tif (material.useLighting && scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tlitOptions.clusteredLightingEnabled = true;\n\t\t\t\t\t\tlitOptions.clusteredLightingCookiesEnabled = scene.lighting.cookiesEnabled;\n\t\t\t\t\t\tlitOptions.clusteredLightingShadowsEnabled = scene.lighting.shadowsEnabled;\n\t\t\t\t\t\tlitOptions.clusteredLightingShadowType = scene.lighting.shadowType;\n\t\t\t\t\t\tlitOptions.clusteredLightingAreaLightsEnabled = scene.lighting.areaLightsEnabled;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.clusteredLightingEnabled = false;\n\t\t\t\t\t\tlitOptions.clusteredLightingCookiesEnabled = false;\n\t\t\t\t\t\tlitOptions.clusteredLightingShadowsEnabled = false;\n\t\t\t\t\t\tlitOptions.clusteredLightingAreaLightsEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\tstatic updateMaterialOptions(litOptions, material) {\n\t\t\t\tlitOptions.separateAmbient = false;\n\t\t\t\tlitOptions.pixelSnap = material.pixelSnap;\n\t\t\t\tlitOptions.ambientSH = material.ambientSH;\n\t\t\t\tlitOptions.twoSidedLighting = material.twoSidedLighting;\n\t\t\t\tlitOptions.occludeDirect = material.occludeDirect;\n\t\t\t\tlitOptions.occludeSpecular = material.occludeSpecular;\n\t\t\t\tlitOptions.occludeSpecularFloat = material.occludeSpecularIntensity !== 1.0;\n\t\t\t\tlitOptions.useMsdf = false;\n\t\t\t\tlitOptions.msdfTextAttribute = false;\n\t\t\t\tlitOptions.alphaToCoverage = material.alphaToCoverage;\n\t\t\t\tlitOptions.opacityFadesSpecular = material.opacityFadesSpecular;\n\t\t\t\tlitOptions.opacityDither = material.opacityDither;\n\t\t\t\tlitOptions.cubeMapProjection = CUBEPROJ_NONE;\n\t\t\t\tlitOptions.useSpecular = material.hasSpecular;\n\t\t\t\tlitOptions.useSpecularityFactor = material.hasSpecularityFactor;\n\t\t\t\tlitOptions.enableGGXSpecular = material.ggxSpecular;\n\t\t\t\tlitOptions.fresnelModel = material.fresnelModel;\n\t\t\t\tlitOptions.useRefraction = material.hasRefraction;\n\t\t\t\tlitOptions.useClearCoat = material.hasClearCoat;\n\t\t\t\tlitOptions.useSheen = material.hasSheen;\n\t\t\t\tlitOptions.useIridescence = material.hasIrridescence;\n\t\t\t\tlitOptions.useMetalness = material.hasMetalness;\n\t\t\t\tlitOptions.useDynamicRefraction = material.dynamicRefraction;\n\t\t\t\tlitOptions.dispersion = material.dispersion > 0;\n\t\t\t\tlitOptions.vertexColors = false;\n\t\t\t\tlitOptions.lightMapEnabled = material.hasLighting;\n\t\t\t\tlitOptions.dirLightMapEnabled = material.dirLightMap;\n\t\t\t\tlitOptions.useHeights = material.hasHeights;\n\t\t\t\tlitOptions.useNormals = material.hasNormals;\n\t\t\t\tlitOptions.useClearCoatNormals = material.hasClearCoatNormals;\n\t\t\t\tlitOptions.useAo = material.hasAo;\n\t\t\t\tlitOptions.diffuseMapEnabled = material.hasDiffuseMap;\n\t\t}\n\t\tstatic updateEnvOptions(litOptions, material, scene, renderParams) {\n\t\t\t\tlitOptions.fog = material.useFog ? renderParams.fog : FOG_NONE;\n\t\t\t\tlitOptions.gamma = renderParams.shaderOutputGamma;\n\t\t\t\tlitOptions.toneMap = material.useTonemap ? renderParams.toneMapping : TONEMAP_NONE;\n\t\t\t\tif (material.useSkybox && scene.envAtlas && scene.skybox) {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_ENVATLASHQ;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t\t\tlitOptions.reflectionCubemapEncoding = scene.skybox.encoding;\n\t\t\t\t} else if (material.useSkybox && scene.envAtlas) {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_ENVATLAS;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t} else if (material.useSkybox && scene.skybox) {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_CUBEMAP;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = scene.skybox.encoding;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.reflectionSource = REFLECTIONSRC_NONE;\n\t\t\t\t\t\tlitOptions.reflectionEncoding = null;\n\t\t\t\t}\n\t\t\t\tif (material.ambientSH) {\n\t\t\t\t\t\tlitOptions.ambientSource = AMBIENTSRC_AMBIENTSH;\n\t\t\t\t\t\tlitOptions.ambientEncoding = null;\n\t\t\t\t} else if (litOptions.reflectionSource !== REFLECTIONSRC_NONE && scene.envAtlas) {\n\t\t\t\t\t\tlitOptions.ambientSource = AMBIENTSRC_ENVALATLAS;\n\t\t\t\t\t\tlitOptions.ambientEncoding = scene.envAtlas.encoding;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.ambientSource = AMBIENTSRC_CONSTANT;\n\t\t\t\t\t\tlitOptions.ambientEncoding = null;\n\t\t\t\t}\n\t\t\t\tconst hasSkybox = litOptions.reflectionSource !== REFLECTIONSRC_NONE;\n\t\t\t\tlitOptions.skyboxIntensity = hasSkybox;\n\t\t\t\tlitOptions.useCubeMapRotation = hasSkybox && scene._skyboxRotationShaderInclude;\n\t\t}\n\t\tstatic updateLightingOptions(litOptions, material, scene, objDefs, sortedLights) {\n\t\t\t\tlitOptions.lightMapWithoutAmbient = false;\n\t\t\t\tif (material.useLighting) {\n\t\t\t\t\t\tconst lightsFiltered = [];\n\t\t\t\t\t\tconst mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\tlitOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC);\n\t\t\t\t\t\tlitOptions.lightMapWithoutAmbient = false;\n\t\t\t\t\t\tif (sortedLights) {\n\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask);\n\t\t\t\t\t\t\t\tif (!scene.clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlitOptions.lights = lightsFiltered;\n\t\t\t\t} else {\n\t\t\t\t\t\tlitOptions.lights = [];\n\t\t\t\t}\n\t\t\t\tif (litOptions.lights.length === 0 && !scene.clusteredLightingEnabled || (objDefs & SHADERDEF_NOSHADOW) !== 0) {\n\t\t\t\t\t\tlitOptions.noShadow = true;\n\t\t\t\t}\n\t\t}\n\t\tstatic collectLights(lType, lights, lightsFiltered, mask) {\n\t\t\t\tfor(let i = 0; i < lights.length; i++){\n\t\t\t\t\t\tconst light = lights[i];\n\t\t\t\t\t\tif (light.enabled) {\n\t\t\t\t\t\t\t\tif (light.mask & mask) {\n\t\t\t\t\t\t\t\t\t\tlightsFiltered.push(light);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst builtinAttributes = {\n\t\tvertex_normal: SEMANTIC_NORMAL,\n\t\tvertex_tangent: SEMANTIC_TANGENT,\n\t\tvertex_texCoord0: SEMANTIC_TEXCOORD0,\n\t\tvertex_texCoord1: SEMANTIC_TEXCOORD1,\n\t\tvertex_color: SEMANTIC_COLOR,\n\t\tvertex_boneWeights: SEMANTIC_BLENDWEIGHT,\n\t\tvertex_boneIndices: SEMANTIC_BLENDINDICES\n};\nclass LitShader {\n\t\tconstructor(device, options, allowWGSL = true){\n\t\t\t\tthis.varyingsCode = '';\n\t\t\t\tthis.vDefines = new Map();\n\t\t\t\tthis.fDefines = new Map();\n\t\t\t\tthis.includes = new Map();\n\t\t\t\tthis.chunks = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.options = options;\n\t\t\t\tconst userChunks = options.shaderChunks;\n\t\t\t\tthis.shaderLanguage = device.isWebGPU && allowWGSL && userChunks?.useWGSL ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL;\n\t\t\t\tthis.attributes = {\n\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t};\n\t\t\t\tif (options.userAttributes) {\n\t\t\t\t\t\tfor (const [semantic, name] of Object.entries(options.userAttributes)){\n\t\t\t\t\t\t\t\tthis.attributes[name] = semantic;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst engineChunks = ShaderChunks.get(device, this.shaderLanguage);\n\t\t\t\tthis.chunks = new Map(engineChunks);\n\t\t\t\tif (userChunks) {\n\t\t\t\t\t\tconst userChunkMap = this.shaderLanguage === SHADERLANGUAGE_GLSL ? userChunks.glsl : userChunks.wgsl;\n\t\t\t\t\t\tuserChunkMap.forEach((chunk, chunkName)=>{\n\t\t\t\t\t\t\t\tfor(const a in builtinAttributes){\n\t\t\t\t\t\t\t\t\t\tif (builtinAttributes.hasOwnProperty(a) && chunk.indexOf(a) >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.attributes[a] = builtinAttributes[a];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.chunks.set(chunkName, chunk);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.shaderPassInfo = ShaderPass.get(this.device).getByIndex(options.pass);\n\t\t\t\tthis.shadowPass = this.shaderPassInfo.isShadow;\n\t\t\t\tthis.lighting = options.lights.length > 0 || options.dirLightMapEnabled || options.clusteredLightingEnabled;\n\t\t\t\tthis.reflections = options.reflectionSource !== REFLECTIONSRC_NONE;\n\t\t\t\tthis.needsNormal = this.lighting || this.reflections || options.useSpecular || options.ambientSH || options.useHeights || options.enableGGXSpecular || options.clusteredLightingEnabled && !this.shadowPass || options.useClearCoatNormals;\n\t\t\t\tthis.needsNormal = this.needsNormal && !this.shadowPass;\n\t\t\t\tthis.needsSceneColor = options.useDynamicRefraction;\n\t\t\t\tthis.needsScreenSize = options.useDynamicRefraction;\n\t\t\t\tthis.needsTransforms = options.useDynamicRefraction;\n\t\t\t\tthis.vshader = null;\n\t\t\t\tthis.fshader = null;\n\t\t}\n\t\tfDefineSet(condition, name, value = '') {\n\t\t\t\tif (condition) {\n\t\t\t\t\t\tthis.fDefines.set(name, value);\n\t\t\t\t}\n\t\t}\n\t\tgenerateVertexShader(useUv, useUnmodifiedUv, mapTransforms) {\n\t\t\t\tconst { options, vDefines, attributes } = this;\n\t\t\t\tconst varyings = new Map();\n\t\t\t\tvaryings.set('vPositionW', 'vec3');\n\t\t\t\tif (options.nineSlicedMode === SPRITE_RENDERMODE_SLICED || options.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\t\t\t\tvDefines.set('NINESLICED', true);\n\t\t\t\t}\n\t\t\t\tif (this.options.linearDepth) {\n\t\t\t\t\t\tvDefines.set('LINEAR_DEPTH', true);\n\t\t\t\t\t\tvaryings.set('vLinearDepth', 'float');\n\t\t\t\t}\n\t\t\t\tif (this.needsNormal) vDefines.set('NORMALS', true);\n\t\t\t\tif (this.options.useInstancing) {\n\t\t\t\t\t\tconst languageChunks = ShaderChunks.get(this.device, this.shaderLanguage);\n\t\t\t\t\t\tif (this.chunks.get('transformInstancingVS') === languageChunks.get('transformInstancingVS')) {\n\t\t\t\t\t\t\t\tattributes.instance_line1 = SEMANTIC_ATTR11;\n\t\t\t\t\t\t\t\tattributes.instance_line2 = SEMANTIC_ATTR12;\n\t\t\t\t\t\t\t\tattributes.instance_line3 = SEMANTIC_ATTR14;\n\t\t\t\t\t\t\t\tattributes.instance_line4 = SEMANTIC_ATTR15;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.needsNormal) {\n\t\t\t\t\t\tattributes.vertex_normal = SEMANTIC_NORMAL;\n\t\t\t\t\t\tvaryings.set('vNormalW', 'vec3');\n\t\t\t\t\t\tif (options.hasTangents && (options.useHeights || options.useNormals || options.useClearCoatNormals || options.enableGGXSpecular)) {\n\t\t\t\t\t\t\t\tvDefines.set('TANGENTS', true);\n\t\t\t\t\t\t\t\tattributes.vertex_tangent = SEMANTIC_TANGENT;\n\t\t\t\t\t\t\t\tvaryings.set('vTangentW', 'vec3');\n\t\t\t\t\t\t\t\tvaryings.set('vBinormalW', 'vec3');\n\t\t\t\t\t\t} else if (options.enableGGXSpecular) {\n\t\t\t\t\t\t\t\tvDefines.set('GGX_SPECULAR', true);\n\t\t\t\t\t\t\t\tvaryings.set('vObjectSpaceUpW', 'vec3');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst maxUvSets = 2;\n\t\t\t\tfor(let i = 0; i < maxUvSets; i++){\n\t\t\t\t\t\tif (useUv[i]) {\n\t\t\t\t\t\t\t\tvDefines.set(`UV${i}`, true);\n\t\t\t\t\t\t\t\tattributes[`vertex_texCoord${i}`] = `TEXCOORD${i}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (useUnmodifiedUv[i]) {\n\t\t\t\t\t\t\t\tvDefines.set(`UV${i}_UNMODIFIED`, true);\n\t\t\t\t\t\t\t\tvaryings.set(`vUv${i}`, 'vec2');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet numTransforms = 0;\n\t\t\t\tconst transformDone = new Set();\n\t\t\t\tmapTransforms.forEach((mapTransform)=>{\n\t\t\t\t\t\tconst { id, uv, name } = mapTransform;\n\t\t\t\t\t\tconst checkId = id + uv * 100;\n\t\t\t\t\t\tif (!transformDone.has(checkId)) {\n\t\t\t\t\t\t\t\ttransformDone.add(checkId);\n\t\t\t\t\t\t\t\tvaryings.set(`vUV${uv}_${id}`, 'vec2');\n\t\t\t\t\t\t\t\tconst varName = `texture_${name}MapTransform`;\n\t\t\t\t\t\t\t\tvDefines.set(`{TRANSFORM_NAME_${numTransforms}}`, varName);\n\t\t\t\t\t\t\t\tvDefines.set(`{TRANSFORM_UV_${numTransforms}}`, uv);\n\t\t\t\t\t\t\t\tvDefines.set(`{TRANSFORM_ID_${numTransforms}}`, id);\n\t\t\t\t\t\t\t\tnumTransforms++;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tvDefines.set('UV_TRANSFORMS_COUNT', numTransforms);\n\t\t\t\tif (options.vertexColors) {\n\t\t\t\t\t\tattributes.vertex_color = SEMANTIC_COLOR;\n\t\t\t\t\t\tvDefines.set('VERTEX_COLOR', true);\n\t\t\t\t\t\tvaryings.set('vVertexColor', 'vec4');\n\t\t\t\t}\n\t\t\t\tif (options.useMsdf && options.msdfTextAttribute) {\n\t\t\t\t\t\tattributes.vertex_outlineParameters = SEMANTIC_ATTR8;\n\t\t\t\t\t\tattributes.vertex_shadowParameters = SEMANTIC_ATTR9;\n\t\t\t\t\t\tvDefines.set('MSDF', true);\n\t\t\t\t}\n\t\t\t\tif (options.useMorphPosition || options.useMorphNormal) {\n\t\t\t\t\t\tvDefines.set('MORPHING', true);\n\t\t\t\t\t\tif (options.useMorphTextureBasedInt) vDefines.set('MORPHING_INT', true);\n\t\t\t\t\t\tif (options.useMorphPosition) vDefines.set('MORPHING_POSITION', true);\n\t\t\t\t\t\tif (options.useMorphNormal) vDefines.set('MORPHING_NORMAL', true);\n\t\t\t\t\t\tattributes.morph_vertex_id = SEMANTIC_ATTR15;\n\t\t\t\t}\n\t\t\t\tif (options.skin) {\n\t\t\t\t\t\tattributes.vertex_boneIndices = SEMANTIC_BLENDINDICES;\n\t\t\t\t\t\tif (options.batch) {\n\t\t\t\t\t\t\t\tvDefines.set('BATCH', true);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tattributes.vertex_boneWeights = SEMANTIC_BLENDWEIGHT;\n\t\t\t\t\t\t\t\tvDefines.set('SKIN', true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.useInstancing) vDefines.set('INSTANCING', true);\n\t\t\t\tif (options.screenSpace) vDefines.set('SCREENSPACE', true);\n\t\t\t\tif (options.pixelSnap) vDefines.set('PIXELSNAP', true);\n\t\t\t\tvaryings.forEach((type, name)=>{\n\t\t\t\t\t\tthis.varyingsCode += `#define VARYING_${name.toUpperCase()}\\n`;\n\t\t\t\t\t\tthis.varyingsCode += this.shaderLanguage === SHADERLANGUAGE_WGSL ? `varying ${name}: ${primitiveGlslToWgslTypeMap.get(type)};\\n` : `varying ${type} ${name};\\n`;\n\t\t\t\t});\n\t\t\t\tthis.includes.set('varyingsVS', this.varyingsCode);\n\t\t\t\tthis.includes.set('varyingsPS', this.varyingsCode);\n\t\t\t\tthis.vshader = `\n\t\t\t\t\t\t#include \"litMainVS\"\n\t\t\t\t`;\n\t\t}\n\t\t_setupLightingDefines(hasAreaLights, clusteredLightingEnabled) {\n\t\t\t\tconst fDefines = this.fDefines;\n\t\t\t\tconst options = this.options;\n\t\t\t\tthis.fDefines.set('LIGHT_COUNT', options.lights.length);\n\t\t\t\tif (hasAreaLights) fDefines.set('AREA_LIGHTS', true);\n\t\t\t\tif (clusteredLightingEnabled && this.lighting) {\n\t\t\t\t\t\tfDefines.set('LIT_CLUSTERED_LIGHTS', true);\n\t\t\t\t\t\tif (options.clusteredLightingCookiesEnabled) fDefines.set('CLUSTER_COOKIES', true);\n\t\t\t\t\t\tif (options.clusteredLightingAreaLightsEnabled) fDefines.set('CLUSTER_AREALIGHTS', true);\n\t\t\t\t\t\tif (options.lightMaskDynamic) fDefines.set('CLUSTER_MESH_DYNAMIC_LIGHTS', true);\n\t\t\t\t\t\tif (options.clusteredLightingShadowsEnabled && !options.noShadow) {\n\t\t\t\t\t\t\t\tconst clusteredShadowInfo = shadowTypeInfo.get(options.clusteredLightingShadowType);\n\t\t\t\t\t\t\t\tfDefines.set('CLUSTER_SHADOWS', true);\n\t\t\t\t\t\t\t\tfDefines.set(`SHADOW_KIND_${clusteredShadowInfo.kind}`, true);\n\t\t\t\t\t\t\t\tfDefines.set(`CLUSTER_SHADOW_TYPE_${clusteredShadowInfo.kind}`, true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < options.lights.length; i++){\n\t\t\t\t\t\tconst light = options.lights[i];\n\t\t\t\t\t\tconst lightType = light._type;\n\t\t\t\t\t\tif (clusteredLightingEnabled && lightType !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst lightShape = hasAreaLights && light._shape ? light._shape : LIGHTSHAPE_PUNCTUAL;\n\t\t\t\t\t\tconst shadowType = light._shadowType;\n\t\t\t\t\t\tconst castShadow = light.castShadows && !options.noShadow;\n\t\t\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}`, true);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}TYPE`, `${lightTypeNames[lightType]}`);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}SHADOWTYPE`, `${shadowInfo.name}`);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}SHAPE`, `${lightShapeNames[lightShape]}`);\n\t\t\t\t\t\tfDefines.set(`LIGHT${i}FALLOFF`, `${lightFalloffNames[light._falloffMode]}`);\n\t\t\t\t\t\tif (light.affectSpecularity) fDefines.set(`LIGHT${i}AFFECT_SPECULARITY`, true);\n\t\t\t\t\t\tif (light._cookie) {\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT && !light._cookie._cubemap || lightType === LIGHTTYPE_OMNI && light._cookie._cubemap) {\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`LIGHT${i}COOKIE`, true);\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`{LIGHT${i}COOKIE_CHANNEL}`, light._cookieChannel);\n\t\t\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (light._cookieTransform) fDefines.set(`LIGHT${i}COOKIE_TRANSFORM`, true);\n\t\t\t\t\t\t\t\t\t\t\t\tif (light._cookieFalloff) fDefines.set(`LIGHT${i}COOKIE_FALLOFF`, true);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (castShadow) {\n\t\t\t\t\t\t\t\tfDefines.set(`LIGHT${i}CASTSHADOW`, true);\n\t\t\t\t\t\t\t\tif (shadowInfo.pcf) fDefines.set(`LIGHT${i}SHADOW_PCF`, true);\n\t\t\t\t\t\t\t\tif (light._normalOffsetBias && !light._isVsm) fDefines.set(`LIGHT${i}_SHADOW_SAMPLE_NORMAL_OFFSET`, true);\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`LIGHT${i}_SHADOW_SAMPLE_ORTHO`, true);\n\t\t\t\t\t\t\t\t\t\tif (light.cascadeBlend > 0) fDefines.set(`LIGHT${i}_SHADOW_CASCADE_BLEND`, true);\n\t\t\t\t\t\t\t\t\t\tif (light.numCascades > 1) fDefines.set(`LIGHT${i}_SHADOW_CASCADES`, true);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (shadowInfo.pcf || shadowInfo.pcss || this.device.isWebGPU) fDefines.set(`LIGHT${i}_SHADOW_SAMPLE_SOURCE_ZBUFFER`, true);\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_OMNI) fDefines.set(`LIGHT${i}_SHADOW_SAMPLE_POINT`, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (castShadow) {\n\t\t\t\t\t\t\t\tfDefines.set(`SHADOW_KIND_${shadowInfo.kind}`, true);\n\t\t\t\t\t\t\t\tif (lightType === LIGHTTYPE_DIRECTIONAL) fDefines.set('SHADOW_DIRECTIONAL', true);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepareForwardPass(lightingUv) {\n\t\t\t\tconst { options } = this;\n\t\t\t\tconst clusteredAreaLights = options.clusteredLightingEnabled && options.clusteredLightingAreaLightsEnabled;\n\t\t\t\tconst hasAreaLights = clusteredAreaLights || options.lights.some((light)=>{\n\t\t\t\t\t\treturn light._shape && light._shape !== LIGHTSHAPE_PUNCTUAL;\n\t\t\t\t});\n\t\t\t\tconst addAmbient = !options.lightMapEnabled || options.lightMapWithoutAmbient;\n\t\t\t\tconst hasTBN = this.needsNormal && (options.useNormals || options.useClearCoatNormals || options.enableGGXSpecular && !options.useHeights);\n\t\t\t\tif (options.useSpecular) {\n\t\t\t\t\t\tthis.fDefineSet(true, 'LIT_SPECULAR');\n\t\t\t\t\t\tthis.fDefineSet(this.reflections, 'LIT_REFLECTIONS');\n\t\t\t\t\t\tthis.fDefineSet(options.useClearCoat, 'LIT_CLEARCOAT');\n\t\t\t\t\t\tthis.fDefineSet(options.fresnelModel > 0, 'LIT_SPECULAR_FRESNEL');\n\t\t\t\t\t\tthis.fDefineSet(options.useSheen, 'LIT_SHEEN');\n\t\t\t\t\t\tthis.fDefineSet(options.useIridescence, 'LIT_IRIDESCENCE');\n\t\t\t\t}\n\t\t\t\tthis.fDefineSet(this.lighting && options.useSpecular || this.reflections, 'LIT_SPECULAR_OR_REFLECTION');\n\t\t\t\tthis.fDefineSet(this.needsSceneColor, 'LIT_SCENE_COLOR');\n\t\t\t\tthis.fDefineSet(this.needsScreenSize, 'LIT_SCREEN_SIZE');\n\t\t\t\tthis.fDefineSet(this.needsTransforms, 'LIT_TRANSFORMS');\n\t\t\t\tthis.fDefineSet(this.needsNormal, 'LIT_NEEDS_NORMAL');\n\t\t\t\tthis.fDefineSet(this.lighting, 'LIT_LIGHTING');\n\t\t\t\tthis.fDefineSet(options.useMetalness, 'LIT_METALNESS');\n\t\t\t\tthis.fDefineSet(options.enableGGXSpecular, 'LIT_GGX_SPECULAR');\n\t\t\t\tthis.fDefineSet(options.useSpecularityFactor, 'LIT_SPECULARITY_FACTOR');\n\t\t\t\tthis.fDefineSet(options.useCubeMapRotation, 'CUBEMAP_ROTATION');\n\t\t\t\tthis.fDefineSet(options.occludeSpecularFloat, 'LIT_OCCLUDE_SPECULAR_FLOAT');\n\t\t\t\tthis.fDefineSet(options.separateAmbient, 'LIT_SEPARATE_AMBIENT');\n\t\t\t\tthis.fDefineSet(options.twoSidedLighting, 'LIT_TWO_SIDED_LIGHTING');\n\t\t\t\tthis.fDefineSet(options.lightMapEnabled, 'LIT_LIGHTMAP');\n\t\t\t\tthis.fDefineSet(options.dirLightMapEnabled, 'LIT_DIR_LIGHTMAP');\n\t\t\t\tthis.fDefineSet(options.skyboxIntensity > 0, 'LIT_SKYBOX_INTENSITY');\n\t\t\t\tthis.fDefineSet(options.clusteredLightingShadowsEnabled, 'LIT_CLUSTERED_SHADOWS');\n\t\t\t\tthis.fDefineSet(options.clusteredLightingAreaLightsEnabled, 'LIT_CLUSTERED_AREA_LIGHTS');\n\t\t\t\tthis.fDefineSet(hasTBN, 'LIT_TBN');\n\t\t\t\tthis.fDefineSet(addAmbient, 'LIT_ADD_AMBIENT');\n\t\t\t\tthis.fDefineSet(options.hasTangents, 'LIT_TANGENTS');\n\t\t\t\tthis.fDefineSet(options.useNormals, 'LIT_USE_NORMALS');\n\t\t\t\tthis.fDefineSet(options.useClearCoatNormals, 'LIT_USE_CLEARCOAT_NORMALS');\n\t\t\t\tthis.fDefineSet(options.useRefraction, 'LIT_REFRACTION');\n\t\t\t\tthis.fDefineSet(options.useDynamicRefraction, 'LIT_DYNAMIC_REFRACTION');\n\t\t\t\tthis.fDefineSet(options.dispersion, 'LIT_DISPERSION');\n\t\t\t\tthis.fDefineSet(options.useHeights, 'LIT_HEIGHTS');\n\t\t\t\tthis.fDefineSet(options.opacityFadesSpecular, 'LIT_OPACITY_FADES_SPECULAR');\n\t\t\t\tthis.fDefineSet(options.alphaToCoverage, 'LIT_ALPHA_TO_COVERAGE');\n\t\t\t\tthis.fDefineSet(options.alphaTest, 'LIT_ALPHA_TEST');\n\t\t\t\tthis.fDefineSet(options.useMsdf, 'LIT_MSDF');\n\t\t\t\tthis.fDefineSet(options.ssao, 'LIT_SSAO');\n\t\t\t\tthis.fDefineSet(options.useAo, 'LIT_AO');\n\t\t\t\tthis.fDefineSet(options.occludeDirect, 'LIT_OCCLUDE_DIRECT');\n\t\t\t\tthis.fDefineSet(options.msdfTextAttribute, 'LIT_MSDF_TEXT_ATTRIBUTE');\n\t\t\t\tthis.fDefineSet(options.diffuseMapEnabled, 'LIT_DIFFUSE_MAP');\n\t\t\t\tthis.fDefineSet(options.shadowCatcher, 'LIT_SHADOW_CATCHER');\n\t\t\t\tthis.fDefineSet(true, 'LIT_FRESNEL_MODEL', fresnelNames[options.fresnelModel]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_NONE_SLICE_MODE', spriteRenderModeNames[options.nineSlicedMode]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_BLEND_TYPE', blendNames[options.blendType]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_CUBEMAP_PROJECTION', cubemaProjectionNames[options.cubeMapProjection]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_OCCLUDE_SPECULAR', specularOcclusionNames[options.occludeSpecular]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_REFLECTION_SOURCE', reflectionSrcNames[options.reflectionSource]);\n\t\t\t\tthis.fDefineSet(true, 'LIT_AMBIENT_SOURCE', ambientSrcNames[options.ambientSource]);\n\t\t\t\tthis.fDefineSet(true, '{lightingUv}', lightingUv ?? '');\n\t\t\t\tthis.fDefineSet(true, '{reflectionDecode}', ChunkUtils.decodeFunc(options.reflectionEncoding));\n\t\t\t\tthis.fDefineSet(true, '{reflectionCubemapDecode}', ChunkUtils.decodeFunc(options.reflectionCubemapEncoding));\n\t\t\t\tthis.fDefineSet(true, '{ambientDecode}', ChunkUtils.decodeFunc(options.ambientEncoding));\n\t\t\t\tthis._setupLightingDefines(hasAreaLights, options.clusteredLightingEnabled);\n\t\t}\n\t\tprepareShadowPass() {\n\t\t\t\tconst { options } = this;\n\t\t\t\tconst lightType = this.shaderPassInfo.lightType;\n\t\t\t\tconst shadowType = this.shaderPassInfo.shadowType;\n\t\t\t\tconst shadowInfo = shadowTypeInfo.get(shadowType);\n\t\t\t\tconst usePerspectiveDepth = lightType === LIGHTTYPE_DIRECTIONAL || !shadowInfo.vsm && lightType === LIGHTTYPE_SPOT;\n\t\t\t\tthis.fDefineSet(usePerspectiveDepth, 'PERSPECTIVE_DEPTH');\n\t\t\t\tthis.fDefineSet(true, 'LIGHT_TYPE', `${lightTypeNames[lightType]}`);\n\t\t\t\tthis.fDefineSet(true, 'SHADOW_TYPE', `${shadowInfo.name}`);\n\t\t\t\tthis.fDefineSet(options.alphaTest, 'LIT_ALPHA_TEST');\n\t\t}\n\t\tgenerateFragmentShader(frontendDecl, frontendCode, lightingUv) {\n\t\t\t\tconst options = this.options;\n\t\t\t\tthis.includes.set('frontendDeclPS', frontendDecl ?? '');\n\t\t\t\tthis.includes.set('frontendCodePS', frontendCode ?? '');\n\t\t\t\tif (options.pass === SHADER_PICK || options.pass === SHADER_PREPASS) ; else if (this.shadowPass) {\n\t\t\t\t\t\tthis.prepareShadowPass();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.prepareForwardPass(lightingUv);\n\t\t\t\t}\n\t\t\t\tthis.fshader = `\n\t\t\t\t\t\t#include \"litMainPS\"\n\t\t\t\t`;\n\t\t}\n}\n\nconst LitOptionsUtils = {\n\t\tgenerateKey (options) {\n\t\t\t\treturn `lit${Object.keys(options).sort().map((key)=>{\n\t\t\t\t\t\tif (key === 'shaderChunks') {\n\t\t\t\t\t\t\t\treturn options.shaderChunks?.key ?? '';\n\t\t\t\t\t\t} else if (key === 'lights') {\n\t\t\t\t\t\t\t\treturn LitOptionsUtils.generateLightsKey(options);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn key + options[key];\n\t\t\t\t}).join('\\n')}`;\n\t\t},\n\t\tgenerateLightsKey (options) {\n\t\t\t\treturn `lights:${options.lights.map((light)=>{\n\t\t\t\t\t\treturn !options.clusteredLightingEnabled || light._type === LIGHTTYPE_DIRECTIONAL ? `${light.key},` : '';\n\t\t\t\t}).join('')}`;\n\t\t}\n};\n\nconst dummyUvs = [\n\t\t0,\n\t\t1,\n\t\t2,\n\t\t3,\n\t\t4,\n\t\t5,\n\t\t6,\n\t\t7\n];\nclass ShaderGeneratorLit extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tconst glslHash = hashCode(options.shaderChunkGLSL ?? '');\n\t\t\t\tconst wgslHash = hashCode(options.shaderChunkWGSL ?? '');\n\t\t\t\tconst loHash = LitOptionsUtils.generateKey(options.litOptions);\n\t\t\t\tconst uvOptions = `${dummyUvs.map((dummy, index)=>{\n\t\t\t\t\t\treturn options.usedUvs[index] ? '1' : '0';\n\t\t\t\t}).join('')}`;\n\t\t\t\treturn `lit_${definesHash}_${uvOptions}_${glslHash}_${wgslHash}_${loHash}`;\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst allowWGSL = !!options.shaderChunkWGSL;\n\t\t\t\tconst litShader = new LitShader(device, options.litOptions, allowWGSL);\n\t\t\t\tconst definitionOptions = {\n\t\t\t\t\t\tname: 'LitShader',\n\t\t\t\t\t\tshaderLanguage: litShader.shaderLanguage,\n\t\t\t\t\t\ttag: litShader.shaderPassInfo.isForward ? SHADERTAG_MATERIAL : undefined\n\t\t\t\t};\n\t\t\t\tconst usedUvSets = options.usedUvs || [\n\t\t\t\t\t\ttrue\n\t\t\t\t];\n\t\t\t\tconst mapTransforms = [];\n\t\t\t\tlitShader.generateVertexShader(usedUvSets, usedUvSets, mapTransforms);\n\t\t\t\tlitShader.generateFragmentShader('', litShader.shaderLanguage === SHADERLANGUAGE_WGSL ? options.shaderChunkWGSL : options.shaderChunkGLSL, 'vUv0');\n\t\t\t\tconst includes = MapUtils.merge(litShader.chunks, litShader.includes);\n\t\t\t\tconst vDefines = litShader.vDefines;\n\t\t\t\toptions.defines.forEach((value, key)=>vDefines.set(key, value));\n\t\t\t\tconst fDefines = litShader.fDefines;\n\t\t\t\toptions.defines.forEach((value, key)=>fDefines.set(key, value));\n\t\t\t\tdefinitionOptions.attributes = litShader.attributes;\n\t\t\t\tdefinitionOptions.vertexCode = litShader.vshader;\n\t\t\t\tdefinitionOptions.vertexIncludes = includes;\n\t\t\t\tdefinitionOptions.vertexDefines = vDefines;\n\t\t\t\tdefinitionOptions.fragmentCode = litShader.fshader;\n\t\t\t\tdefinitionOptions.fragmentIncludes = includes;\n\t\t\t\tdefinitionOptions.fragmentDefines = fDefines;\n\t\t\t\treturn ShaderDefinitionUtils.createDefinition(device, definitionOptions);\n\t\t}\n}\nconst lit = new ShaderGeneratorLit();\n\nconst options = new LitMaterialOptions();\nclass LitMaterial extends Material {\n\t\tgetShaderVariant(params) {\n\t\t\t\toptions.usedUvs = this.usedUvs.slice();\n\t\t\t\toptions.shaderChunkGLSL = this.shaderChunkGLSL;\n\t\t\t\toptions.shaderChunkWGSL = this.shaderChunkWGSL;\n\t\t\t\toptions.defines = ShaderUtils.getCoreDefines(this, params);\n\t\t\t\tLitMaterialOptionsBuilder.update(options.litOptions, this, params.scene, params.cameraShaderParams, params.objDefs, params.pass, params.sortedLights);\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(params.device);\n\t\t\t\tlibrary.register('lit', lit);\n\t\t\t\tconst shader = library.getProgram('lit', options, processingOptions, this.userId);\n\t\t\t\treturn shader;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.usedUvs = [\n\t\t\t\t\t\ttrue\n\t\t\t\t], this.shaderChunkGLSL = null, this.shaderChunkWGSL = null, this.useLighting = true, this.useFog = true, this.useTonemap = true, this.useSkybox = true, this.ambientSH = null, this.pixelSnap = false, this.nineSlicedMode = null, this.twoSidedLighting = false, this.occludeDirect = false, this.occludeSpecular = SPECOCC_AO, this.occludeSpecularIntensity = 1, this.opacityFadesSpecular = true, this.opacityDither = DITHER_NONE, this.opacityShadowDither = DITHER_NONE, this.shadowCatcher = false, this.ggxSpecular = false, this.fresnelModel = FRESNEL_SCHLICK, this.dynamicRefraction = false, this.hasAo = false, this.hasSpecular = false, this.hasSpecularityFactor = false, this.hasLighting = false, this.hasHeights = false, this.hasNormals = false, this.hasSheen = false, this.hasRefraction = false, this.hasIrridescence = false, this.hasMetalness = false, this.hasClearCoat = false, this.hasClearCoatNormals = false;\n\t\t}\n}\n\nclass StandardMaterialOptions {\n\t\tget pass() {\n\t\t\t\treturn this.litOptions.pass;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.defines = new Map();\n\t\t\t\tthis.forceUv1 = false;\n\t\t\t\tthis.specularTint = false;\n\t\t\t\tthis.metalnessTint = false;\n\t\t\t\tthis.glossTint = false;\n\t\t\t\tthis.emissiveEncoding = 'linear';\n\t\t\t\tthis.lightMapEncoding = 'linear';\n\t\t\t\tthis.packedNormal = false;\n\t\t\t\tthis.normalDetailPackedNormal = false;\n\t\t\t\tthis.clearCoatPackedNormal = false;\n\t\t\t\tthis.glossInvert = false;\n\t\t\t\tthis.sheenGlossInvert = false;\n\t\t\t\tthis.clearCoatGlossInvert = false;\n\t\t\t\tthis.useAO = false;\n\t\t\t\tthis.litOptions = new LitShaderOptions();\n\t\t}\n}\n\nconst _matTex2D = [];\nconst buildPropertiesList = (options)=>{\n\t\treturn Object.keys(options).filter((key)=>key !== 'litOptions').sort();\n};\nclass ShaderGeneratorStandard extends ShaderGenerator {\n\t\tgenerateKey(options) {\n\t\t\t\tlet props;\n\t\t\t\tif (options === this.optionsContextMin) {\n\t\t\t\t\t\tif (!this.propsMin) this.propsMin = buildPropertiesList(options);\n\t\t\t\t\t\tprops = this.propsMin;\n\t\t\t\t} else if (options === this.optionsContext) {\n\t\t\t\t\t\tif (!this.props) this.props = buildPropertiesList(options);\n\t\t\t\t\t\tprops = this.props;\n\t\t\t\t} else {\n\t\t\t\t\t\tprops = buildPropertiesList(options);\n\t\t\t\t}\n\t\t\t\tconst definesHash = ShaderGenerator.definesHash(options.defines);\n\t\t\t\tconst key = `standard:\\n${definesHash}\\n${props.map((prop)=>prop + options[prop]).join('\\n')}${LitOptionsUtils.generateKey(options.litOptions)}`;\n\t\t\t\treturn key;\n\t\t}\n\t\t_getUvSourceExpression(transformPropName, uVPropName, options) {\n\t\t\t\tconst transformId = options[transformPropName];\n\t\t\t\tconst uvChannel = options[uVPropName];\n\t\t\t\tconst isMainPass = options.litOptions.pass === SHADER_FORWARD;\n\t\t\t\tlet expression;\n\t\t\t\tif (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\t\t\t\texpression = 'nineSlicedUv';\n\t\t\t\t} else if (isMainPass && options.litOptions.nineSlicedMode === SPRITE_RENDERMODE_TILED) {\n\t\t\t\t\t\texpression = 'nineSlicedUv';\n\t\t\t\t} else {\n\t\t\t\t\t\tif (transformId === 0) {\n\t\t\t\t\t\t\t\texpression = `vUv${uvChannel}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\texpression = `vUV${uvChannel}_${transformId}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.heightMap && transformPropName !== 'heightMapTransform') {\n\t\t\t\t\t\t\t\texpression += ' + dUvOffset';\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn expression;\n\t\t}\n\t\t_validateMapChunk(propName, chunkName, chunks) {}\n\t\t_addMapDefines(fDefines, propName, chunkName, options, chunks, mapping, encoding = null) {\n\t\t\t\tconst mapPropName = `${propName}Map`;\n\t\t\t\tconst propNameCaps = propName.toUpperCase();\n\t\t\t\tconst uVPropName = `${mapPropName}Uv`;\n\t\t\t\tconst identifierPropName = `${mapPropName}Identifier`;\n\t\t\t\tconst transformPropName = `${mapPropName}Transform`;\n\t\t\t\tconst channelPropName = `${mapPropName}Channel`;\n\t\t\t\tconst vertexColorChannelPropName = `${propName}VertexColorChannel`;\n\t\t\t\tconst tintPropName = `${propName}Tint`;\n\t\t\t\tconst vertexColorPropName = `${propName}VertexColor`;\n\t\t\t\tconst detailModePropName = `${propName}Mode`;\n\t\t\t\tconst invertName = `${propName}Invert`;\n\t\t\t\tconst tintOption = options[tintPropName];\n\t\t\t\tconst vertexColorOption = options[vertexColorPropName];\n\t\t\t\tconst textureOption = options[mapPropName];\n\t\t\t\tconst textureIdentifier = options[identifierPropName];\n\t\t\t\tconst detailModeOption = options[detailModePropName];\n\t\t\t\tconst chunkCode = chunks.get(chunkName);\n\t\t\t\tif (textureOption) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_TEXTURE`, '');\n\t\t\t\t\t\tconst uv = this._getUvSourceExpression(transformPropName, uVPropName, options);\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_TEXTURE_UV}`, uv);\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_TEXTURE_CHANNEL}`, options[channelPropName]);\n\t\t\t\t\t\tconst textureId = `{STD_${propNameCaps}_TEXTURE_NAME}`;\n\t\t\t\t\t\tif (chunkCode.includes(textureId)) {\n\t\t\t\t\t\t\t\tlet samplerName = `texture_${mapPropName}`;\n\t\t\t\t\t\t\t\tconst alias = mapping[textureIdentifier];\n\t\t\t\t\t\t\t\tif (alias) {\n\t\t\t\t\t\t\t\t\t\tsamplerName = alias;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmapping[textureIdentifier] = samplerName;\n\t\t\t\t\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_TEXTURE_ALLOCATE`, '');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfDefines.set(textureId, samplerName);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (encoding) {\n\t\t\t\t\t\t\t\tconst textureDecode = options[channelPropName] === 'aaa' ? 'passThrough' : ChunkUtils.decodeFunc(encoding);\n\t\t\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_TEXTURE_DECODE}`, textureDecode);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (vertexColorOption) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_VERTEX`, '');\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_VERTEX_CHANNEL}`, options[vertexColorChannelPropName]);\n\t\t\t\t}\n\t\t\t\tif (detailModeOption) {\n\t\t\t\t\t\tfDefines.set(`{STD_${propNameCaps}_DETAILMODE}`, detailModeOption);\n\t\t\t\t}\n\t\t\t\tif (tintOption) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_CONSTANT`, '');\n\t\t\t\t}\n\t\t\t\tif (!!options[invertName]) {\n\t\t\t\t\t\tfDefines.set(`STD_${propNameCaps}_INVERT`, '');\n\t\t\t\t}\n\t\t}\n\t\t_correctChannel(p, chan, _matTex2D) {\n\t\t\t\tif (_matTex2D[p] > 0) {\n\t\t\t\t\t\tif (_matTex2D[p] < chan.length) {\n\t\t\t\t\t\t\t\treturn chan.substring(0, _matTex2D[p]);\n\t\t\t\t\t\t} else if (_matTex2D[p] > chan.length) {\n\t\t\t\t\t\t\t\tlet str = chan;\n\t\t\t\t\t\t\t\tconst chr = str.charAt(str.length - 1);\n\t\t\t\t\t\t\t\tconst addLen = _matTex2D[p] - str.length;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < addLen; i++)str += chr;\n\t\t\t\t\t\t\t\treturn str;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn chan;\n\t\t\t\t}\n\t\t}\n\t\tcreateVertexShader(litShader, options) {\n\t\t\t\tconst useUv = [];\n\t\t\t\tconst useUnmodifiedUv = [];\n\t\t\t\tconst mapTransforms = [];\n\t\t\t\tconst maxUvSets = 2;\n\t\t\t\tfor(const p in _matTex2D){\n\t\t\t\t\t\tconst mapName = `${p}Map`;\n\t\t\t\t\t\tif (options[`${p}VertexColor`]) {\n\t\t\t\t\t\t\t\tconst colorChannelName = `${p}VertexColorChannel`;\n\t\t\t\t\t\t\t\toptions[colorChannelName] = this._correctChannel(p, options[colorChannelName], _matTex2D);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options[mapName]) {\n\t\t\t\t\t\t\t\tconst channelName = `${mapName}Channel`;\n\t\t\t\t\t\t\t\tconst transformName = `${mapName}Transform`;\n\t\t\t\t\t\t\t\tconst uvName = `${mapName}Uv`;\n\t\t\t\t\t\t\t\toptions[uvName] = Math.min(options[uvName], maxUvSets - 1);\n\t\t\t\t\t\t\t\toptions[channelName] = this._correctChannel(p, options[channelName], _matTex2D);\n\t\t\t\t\t\t\t\tconst uvSet = options[uvName];\n\t\t\t\t\t\t\t\tuseUv[uvSet] = true;\n\t\t\t\t\t\t\t\tuseUnmodifiedUv[uvSet] = useUnmodifiedUv[uvSet] || options[mapName] && !options[transformName];\n\t\t\t\t\t\t\t\tif (options[transformName]) {\n\t\t\t\t\t\t\t\t\t\tmapTransforms.push({\n\t\t\t\t\t\t\t\t\t\t\t\tname: p,\n\t\t\t\t\t\t\t\t\t\t\t\tid: options[transformName],\n\t\t\t\t\t\t\t\t\t\t\t\tuv: options[uvName]\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (options.forceUv1) {\n\t\t\t\t\t\tuseUv[1] = true;\n\t\t\t\t\t\tuseUnmodifiedUv[1] = useUnmodifiedUv[1] !== undefined ? useUnmodifiedUv[1] : true;\n\t\t\t\t}\n\t\t\t\tlitShader.generateVertexShader(useUv, useUnmodifiedUv, mapTransforms);\n\t\t}\n\t\tprepareFragmentDefines(options, fDefines, shaderPassInfo) {\n\t\t\t\tconst fDefineSet = (condition, name, value = '')=>{\n\t\t\t\t\t\tif (condition) {\n\t\t\t\t\t\t\t\tfDefines.set(name, value);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfDefineSet(options.lightMap, 'STD_LIGHTMAP', '');\n\t\t\t\tfDefineSet(options.lightVertexColor, 'STD_LIGHT_VERTEX_COLOR', '');\n\t\t\t\tfDefineSet(options.dirLightMap && options.litOptions.useSpecular, 'STD_LIGHTMAP_DIR', '');\n\t\t\t\tfDefineSet(options.heightMap, 'STD_HEIGHT_MAP', '');\n\t\t\t\tfDefineSet(options.useSpecularColor, 'STD_SPECULAR_COLOR', '');\n\t\t\t\tfDefineSet(options.aoMap || options.aoVertexColor || options.useAO, 'STD_AO', '');\n\t\t\t\tfDefineSet(true, 'STD_OPACITY_DITHER', ditherNames[shaderPassInfo.isForward ? options.litOptions.opacityDither : options.litOptions.opacityShadowDither]);\n\t\t}\n\t\tcreateShaderDefinition(device, options) {\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(options.litOptions.pass);\n\t\t\t\tconst isForwardPass = shaderPassInfo.isForward;\n\t\t\t\tconst litShader = new LitShader(device, options.litOptions);\n\t\t\t\tthis.createVertexShader(litShader, options);\n\t\t\t\tconst textureMapping = {};\n\t\t\t\toptions.litOptions.fresnelModel = options.litOptions.fresnelModel === 0 ? FRESNEL_SCHLICK : options.litOptions.fresnelModel;\n\t\t\t\tconst fDefines = litShader.fDefines;\n\t\t\t\tthis.prepareFragmentDefines(options, fDefines, shaderPassInfo);\n\t\t\t\tlet lightingUv = '';\n\t\t\t\tif (isForwardPass) {\n\t\t\t\t\t\tif (options.heightMap) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'height', 'parallaxPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.litOptions.blendType !== BLEND_NONE || options.litOptions.alphaTest || options.litOptions.alphaToCoverage || options.litOptions.opacityDither !== DITHER_NONE) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'opacity', 'opacityPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (litShader.needsNormal) {\n\t\t\t\t\t\t\t\tif (options.normalMap || options.clearCoatNormalMap) {\n\t\t\t\t\t\t\t\t\t\tif (!options.litOptions.hasTangents) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst baseName = options.normalMap ? 'normalMap' : 'clearCoatNormalMap';\n\t\t\t\t\t\t\t\t\t\t\t\tlightingUv = this._getUvSourceExpression(`${baseName}Transform`, `${baseName}Uv`, options);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'normalDetail', 'normalMapPS', options, litShader.chunks, textureMapping, options.normalDetailPackedNormal ? 'xy' : 'xyz');\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'normal', 'normalMapPS', options, litShader.chunks, textureMapping, options.packedNormal ? 'xy' : 'xyz');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.diffuseDetail) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'diffuseDetail', 'diffusePS', options, litShader.chunks, textureMapping, options.diffuseDetailEncoding);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._addMapDefines(fDefines, 'diffuse', 'diffusePS', options, litShader.chunks, textureMapping, options.diffuseEncoding);\n\t\t\t\t\t\tif (options.litOptions.useRefraction) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'refraction', 'transmissionPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'thickness', 'thicknessPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.litOptions.useIridescence) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'iridescence', 'iridescencePS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'iridescenceThickness', 'iridescenceThicknessPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (litShader.lighting && options.litOptions.useSpecular || litShader.reflections) {\n\t\t\t\t\t\t\t\tif (options.litOptions.useSheen) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'sheen', 'sheenPS', options, litShader.chunks, textureMapping, options.sheenEncoding);\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'sheenGloss', 'sheenGlossPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.litOptions.useMetalness) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'metalness', 'metalnessPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'ior', 'iorPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.litOptions.useSpecularityFactor) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'specularityFactor', 'specularityFactorPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.useSpecularColor) {\n\t\t\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'specular', 'specularPS', options, litShader.chunks, textureMapping, options.specularEncoding);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'gloss', 'glossPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.aoDetail) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'aoDetail', 'aoPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.aoMap || options.aoVertexColor || options.useAO) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'ao', 'aoPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._addMapDefines(fDefines, 'emissive', 'emissivePS', options, litShader.chunks, textureMapping, options.emissiveEncoding);\n\t\t\t\t\t\tif (options.litOptions.useClearCoat) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'clearCoat', 'clearCoatPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'clearCoatGloss', 'clearCoatGlossPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'clearCoatNormal', 'clearCoatNormalPS', options, litShader.chunks, textureMapping, options.clearCoatPackedNormal ? 'xy' : 'xyz');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.litOptions.enableGGXSpecular) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'anisotropy', 'anisotropyPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.lightMap || options.lightVertexColor) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'light', 'lightmapPS', options, litShader.chunks, textureMapping, options.lightMapEncoding);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst opacityShadowDither = options.litOptions.opacityShadowDither;\n\t\t\t\t\t\tif (options.litOptions.alphaTest || opacityShadowDither) {\n\t\t\t\t\t\t\t\tthis._addMapDefines(fDefines, 'opacity', 'opacityPS', options, litShader.chunks, textureMapping);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlitShader.generateFragmentShader(litShader.chunks.get('stdDeclarationPS'), litShader.chunks.get('stdFrontEndPS'), lightingUv);\n\t\t\t\tconst includes = MapUtils.merge(litShader.chunks, litShader.includes);\n\t\t\t\tconst vDefines = litShader.vDefines;\n\t\t\t\toptions.defines.forEach((value, key)=>vDefines.set(key, value));\n\t\t\t\toptions.defines.forEach((value, key)=>fDefines.set(key, value));\n\t\t\t\tconst definition = ShaderDefinitionUtils.createDefinition(device, {\n\t\t\t\t\t\tname: 'StandardShader',\n\t\t\t\t\t\tattributes: litShader.attributes,\n\t\t\t\t\t\tshaderLanguage: litShader.shaderLanguage,\n\t\t\t\t\t\tvertexCode: litShader.vshader,\n\t\t\t\t\t\tfragmentCode: litShader.fshader,\n\t\t\t\t\t\tvertexIncludes: includes,\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tfragmentDefines: fDefines,\n\t\t\t\t\t\tvertexDefines: vDefines\n\t\t\t\t});\n\t\t\t\tif (litShader.shaderPassInfo.isForward) {\n\t\t\t\t\t\tdefinition.tag = SHADERTAG_MATERIAL;\n\t\t\t\t}\n\t\t\t\treturn definition;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.optionsContext = new StandardMaterialOptions(), this.optionsContextMin = new StandardMaterialOptions();\n\t\t}\n}\nconst standard = new ShaderGeneratorStandard();\n\nconst arraysEqual = (a, b)=>{\n\t\tif (a.length !== b.length) {\n\t\t\t\treturn false;\n\t\t}\n\t\tfor(let i = 0; i < a.length; ++i){\n\t\t\t\tif (a[i] !== b[i]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t}\n\t\treturn true;\n};\nconst notWhite = (color)=>{\n\t\treturn color.r !== 1 || color.g !== 1 || color.b !== 1;\n};\nconst notBlack = (color)=>{\n\t\treturn color.r !== 0 || color.g !== 0 || color.b !== 0;\n};\nclass StandardMaterialOptionsBuilder {\n\t\tconstructor(){\n\t\t\t\tthis._mapXForms = null;\n\t\t}\n\t\tupdateMinRef(options, scene, stdMat, objDefs, pass, sortedLights) {\n\t\t\t\tthis._updateSharedOptions(options, scene, stdMat, objDefs, pass);\n\t\t\t\tthis._updateMinOptions(options, stdMat, pass);\n\t\t\t\tthis._updateUVOptions(options, stdMat, objDefs, true);\n\t\t}\n\t\tupdateRef(options, scene, cameraShaderParams, stdMat, objDefs, pass, sortedLights) {\n\t\t\t\tthis._updateSharedOptions(options, scene, stdMat, objDefs, pass);\n\t\t\t\tthis._updateEnvOptions(options, stdMat, scene, cameraShaderParams);\n\t\t\t\tthis._updateMaterialOptions(options, stdMat, scene);\n\t\t\t\toptions.litOptions.hasTangents = objDefs && (objDefs & SHADERDEF_TANGENTS) !== 0;\n\t\t\t\tthis._updateLightOptions(options, scene, stdMat, objDefs, sortedLights);\n\t\t\t\tthis._updateUVOptions(options, stdMat, objDefs, false, cameraShaderParams);\n\t\t}\n\t\t_updateSharedOptions(options, scene, stdMat, objDefs, pass) {\n\t\t\t\toptions.forceUv1 = stdMat.forceUv1;\n\t\t\t\tif (stdMat.userAttributes) {\n\t\t\t\t\t\toptions.litOptions.userAttributes = Object.fromEntries(stdMat.userAttributes.entries());\n\t\t\t\t}\n\t\t\t\toptions.litOptions.shaderChunks = stdMat.shaderChunks;\n\t\t\t\toptions.litOptions.pass = pass;\n\t\t\t\toptions.litOptions.alphaTest = stdMat.alphaTest > 0;\n\t\t\t\toptions.litOptions.blendType = stdMat.blendType;\n\t\t\t\toptions.litOptions.screenSpace = objDefs && (objDefs & SHADERDEF_SCREENSPACE) !== 0;\n\t\t\t\toptions.litOptions.skin = objDefs && (objDefs & SHADERDEF_SKIN) !== 0;\n\t\t\t\toptions.litOptions.batch = objDefs && (objDefs & SHADERDEF_BATCH) !== 0;\n\t\t\t\toptions.litOptions.useInstancing = objDefs && (objDefs & SHADERDEF_INSTANCING) !== 0;\n\t\t\t\toptions.litOptions.useMorphPosition = objDefs && (objDefs & SHADERDEF_MORPH_POSITION) !== 0;\n\t\t\t\toptions.litOptions.useMorphNormal = objDefs && (objDefs & SHADERDEF_MORPH_NORMAL) !== 0;\n\t\t\t\toptions.litOptions.useMorphTextureBasedInt = objDefs && (objDefs & SHADERDEF_MORPH_TEXTURE_BASED_INT) !== 0;\n\t\t\t\toptions.litOptions.nineSlicedMode = stdMat.nineSlicedMode || 0;\n\t\t\t\tif (scene.clusteredLightingEnabled && stdMat.useLighting) {\n\t\t\t\t\t\toptions.litOptions.clusteredLightingEnabled = true;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingCookiesEnabled = scene.lighting.cookiesEnabled;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingShadowsEnabled = scene.lighting.shadowsEnabled;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingShadowType = scene.lighting.shadowType;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingAreaLightsEnabled = scene.lighting.areaLightsEnabled;\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.litOptions.clusteredLightingEnabled = false;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingCookiesEnabled = false;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingShadowsEnabled = false;\n\t\t\t\t\t\toptions.litOptions.clusteredLightingAreaLightsEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\t_updateUVOptions(options, stdMat, objDefs, minimalOptions, cameraShaderParams) {\n\t\t\t\tlet hasUv0 = false;\n\t\t\t\tlet hasUv1 = false;\n\t\t\t\tlet hasVcolor = false;\n\t\t\t\tif (objDefs) {\n\t\t\t\t\t\thasUv0 = (objDefs & SHADERDEF_UV0) !== 0;\n\t\t\t\t\t\thasUv1 = (objDefs & SHADERDEF_UV1) !== 0;\n\t\t\t\t\t\thasVcolor = (objDefs & SHADERDEF_VCOLOR) !== 0;\n\t\t\t\t}\n\t\t\t\toptions.litOptions.vertexColors = false;\n\t\t\t\tthis._mapXForms = [];\n\t\t\t\tconst uniqueTextureMap = {};\n\t\t\t\tfor(const p in _matTex2D){\n\t\t\t\t\t\tthis._updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap);\n\t\t\t\t}\n\t\t\t\tthis._mapXForms = null;\n\t\t\t\toptions.litOptions.ssao = cameraShaderParams?.ssaoEnabled;\n\t\t\t\toptions.useAO = options.litOptions.ssao;\n\t\t\t\toptions.litOptions.lightMapEnabled = options.lightMap;\n\t\t\t\toptions.litOptions.dirLightMapEnabled = options.dirLightMap;\n\t\t\t\toptions.litOptions.useHeights = options.heightMap;\n\t\t\t\toptions.litOptions.useNormals = options.normalMap;\n\t\t\t\toptions.litOptions.useClearCoatNormals = options.clearCoatNormalMap;\n\t\t\t\toptions.litOptions.useAo = options.aoMap || options.aoVertexColor || options.litOptions.ssao;\n\t\t\t\toptions.litOptions.diffuseMapEnabled = options.diffuseMap;\n\t\t}\n\t\t_updateTexOptions(options, stdMat, p, hasUv0, hasUv1, hasVcolor, minimalOptions, uniqueTextureMap) {\n\t\t\t\tconst isOpacity = p === 'opacity';\n\t\t\t\tif (!minimalOptions || isOpacity) {\n\t\t\t\t\t\tconst mname = `${p}Map`;\n\t\t\t\t\t\tconst vname = `${p}VertexColor`;\n\t\t\t\t\t\tconst vcname = `${p}VertexColorChannel`;\n\t\t\t\t\t\tconst cname = `${mname}Channel`;\n\t\t\t\t\t\tconst tname = `${mname}Transform`;\n\t\t\t\t\t\tconst uname = `${mname}Uv`;\n\t\t\t\t\t\tconst iname = `${mname}Identifier`;\n\t\t\t\t\t\tif (p !== 'light') {\n\t\t\t\t\t\t\t\toptions[mname] = false;\n\t\t\t\t\t\t\t\toptions[iname] = undefined;\n\t\t\t\t\t\t\t\toptions[cname] = '';\n\t\t\t\t\t\t\t\toptions[tname] = 0;\n\t\t\t\t\t\t\t\toptions[uname] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions[vname] = false;\n\t\t\t\t\t\toptions[vcname] = '';\n\t\t\t\t\t\tif (isOpacity && stdMat.blendType === BLEND_NONE && stdMat.alphaTest === 0.0 && !stdMat.alphaToCoverage && stdMat.opacityDither === DITHER_NONE) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (p !== 'height' && stdMat[vname]) {\n\t\t\t\t\t\t\t\tif (hasVcolor) {\n\t\t\t\t\t\t\t\t\t\toptions[vname] = stdMat[vname];\n\t\t\t\t\t\t\t\t\t\toptions[vcname] = stdMat[vcname];\n\t\t\t\t\t\t\t\t\t\toptions.litOptions.vertexColors = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (stdMat[mname]) {\n\t\t\t\t\t\t\t\tlet allow = true;\n\t\t\t\t\t\t\t\tif (stdMat[uname] === 0 && !hasUv0) allow = false;\n\t\t\t\t\t\t\t\tif (stdMat[uname] === 1 && !hasUv1) allow = false;\n\t\t\t\t\t\t\t\tif (allow) {\n\t\t\t\t\t\t\t\t\t\tconst mapId = stdMat[mname].id;\n\t\t\t\t\t\t\t\t\t\tlet identifier = uniqueTextureMap[mapId];\n\t\t\t\t\t\t\t\t\t\tif (identifier === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tuniqueTextureMap[mapId] = p;\n\t\t\t\t\t\t\t\t\t\t\t\tidentifier = p;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toptions[mname] = !!stdMat[mname];\n\t\t\t\t\t\t\t\t\t\toptions[iname] = identifier;\n\t\t\t\t\t\t\t\t\t\toptions[tname] = this._getMapTransformID(stdMat.getUniform(tname), stdMat[uname]);\n\t\t\t\t\t\t\t\t\t\toptions[cname] = stdMat[cname];\n\t\t\t\t\t\t\t\t\t\toptions[uname] = stdMat[uname];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMinOptions(options, stdMat, pass) {\n\t\t\t\tconst isPrepass = pass === SHADER_PREPASS;\n\t\t\t\toptions.litOptions.opacityShadowDither = isPrepass ? stdMat.opacityDither : stdMat.opacityShadowDither;\n\t\t\t\toptions.litOptions.linearDepth = isPrepass;\n\t\t\t\toptions.litOptions.lights = [];\n\t\t}\n\t\t_updateMaterialOptions(options, stdMat, scene) {\n\t\t\t\tconst useSpecular = !!(stdMat.useMetalness || stdMat.specularMap || stdMat.sphereMap || stdMat.cubeMap || notBlack(stdMat.specular) || stdMat.specularityFactor > 0 && stdMat.useMetalness || stdMat.enableGGXSpecular || stdMat.clearCoat > 0);\n\t\t\t\tconst useSpecularColor = !stdMat.useMetalness || stdMat.useMetalnessSpecularColor;\n\t\t\t\tconst specularTint = useSpecular && (stdMat.specularTint || !stdMat.specularMap && !stdMat.specularVertexColor) && notWhite(stdMat.specular);\n\t\t\t\tconst specularityFactorTint = useSpecular && stdMat.useMetalnessSpecularColor && (stdMat.specularityFactorTint || stdMat.specularityFactor < 1 && !stdMat.specularityFactorMap);\n\t\t\t\tconst isPackedNormalMap = (texture)=>texture ? texture.format === PIXELFORMAT_DXT5 || texture.type === TEXTURETYPE_SWIZZLEGGGR : false;\n\t\t\t\tconst equalish = (a, b)=>Math.abs(a - b) < 1e-4;\n\t\t\t\toptions.specularTint = specularTint;\n\t\t\t\toptions.specularityFactorTint = specularityFactorTint;\n\t\t\t\toptions.metalnessTint = stdMat.useMetalness && stdMat.metalness < 1;\n\t\t\t\toptions.glossTint = true;\n\t\t\t\toptions.diffuseEncoding = stdMat.diffuseMap?.encoding;\n\t\t\t\toptions.diffuseDetailEncoding = stdMat.diffuseDetailMap?.encoding;\n\t\t\t\toptions.emissiveEncoding = stdMat.emissiveMap?.encoding;\n\t\t\t\toptions.lightMapEncoding = stdMat.lightMap?.encoding;\n\t\t\t\toptions.packedNormal = isPackedNormalMap(stdMat.normalMap);\n\t\t\t\toptions.refractionTint = equalish(stdMat.refraction, 1.0);\n\t\t\t\toptions.refractionIndexTint = equalish(stdMat.refractionIndex, 1.0 / 1.5);\n\t\t\t\toptions.thicknessTint = stdMat.useDynamicRefraction && stdMat.thickness !== 1.0;\n\t\t\t\toptions.specularEncoding = stdMat.specularMap?.encoding;\n\t\t\t\toptions.sheenEncoding = stdMat.sheenMap?.encoding;\n\t\t\t\toptions.aoMapUv = stdMat.aoUvSet;\n\t\t\t\toptions.aoDetail = !!stdMat.aoDetailMap;\n\t\t\t\toptions.diffuseDetail = !!stdMat.diffuseDetailMap;\n\t\t\t\toptions.normalDetail = !!stdMat.normalMap;\n\t\t\t\toptions.normalDetailPackedNormal = isPackedNormalMap(stdMat.normalDetailMap);\n\t\t\t\toptions.diffuseDetailMode = stdMat.diffuseDetailMode;\n\t\t\t\toptions.aoDetailMode = stdMat.aoDetailMode;\n\t\t\t\toptions.clearCoatGloss = !!stdMat.clearCoatGloss;\n\t\t\t\toptions.clearCoatPackedNormal = isPackedNormalMap(stdMat.clearCoatNormalMap);\n\t\t\t\toptions.iorTint = equalish(stdMat.refractionIndex, 1.0 / 1.5);\n\t\t\t\tif (scene.forcePassThroughSpecular) {\n\t\t\t\t\t\toptions.specularEncoding = 'linear';\n\t\t\t\t\t\toptions.sheenEncoding = 'linear';\n\t\t\t\t}\n\t\t\t\toptions.iridescenceTint = stdMat.iridescence !== 1.0;\n\t\t\t\toptions.glossInvert = stdMat.glossInvert;\n\t\t\t\toptions.sheenGlossInvert = stdMat.sheenGlossInvert;\n\t\t\t\toptions.clearCoatGlossInvert = stdMat.clearCoatGlossInvert;\n\t\t\t\toptions.useSpecularColor = useSpecularColor;\n\t\t\t\toptions.litOptions.separateAmbient = false;\n\t\t\t\toptions.litOptions.pixelSnap = stdMat.pixelSnap;\n\t\t\t\toptions.litOptions.ambientSH = !!stdMat.ambientSH;\n\t\t\t\toptions.litOptions.twoSidedLighting = stdMat.twoSidedLighting;\n\t\t\t\toptions.litOptions.occludeSpecular = stdMat.occludeSpecular;\n\t\t\t\toptions.litOptions.occludeSpecularFloat = stdMat.occludeSpecularIntensity !== 1.0;\n\t\t\t\toptions.litOptions.useMsdf = !!stdMat.msdfMap;\n\t\t\t\toptions.litOptions.msdfTextAttribute = !!stdMat.msdfTextAttribute;\n\t\t\t\toptions.litOptions.alphaToCoverage = stdMat.alphaToCoverage;\n\t\t\t\toptions.litOptions.opacityFadesSpecular = stdMat.opacityFadesSpecular;\n\t\t\t\toptions.litOptions.opacityDither = stdMat.opacityDither;\n\t\t\t\toptions.litOptions.cubeMapProjection = stdMat.cubeMapProjection;\n\t\t\t\toptions.litOptions.occludeDirect = stdMat.occludeDirect;\n\t\t\t\toptions.litOptions.useSpecular = useSpecular;\n\t\t\t\toptions.litOptions.useSpecularityFactor = (specularityFactorTint || !!stdMat.specularityFactorMap) && stdMat.useMetalnessSpecularColor;\n\t\t\t\toptions.litOptions.enableGGXSpecular = stdMat.enableGGXSpecular;\n\t\t\t\toptions.litOptions.fresnelModel = stdMat.fresnelModel;\n\t\t\t\toptions.litOptions.useRefraction = (stdMat.refraction || !!stdMat.refractionMap) && (stdMat.useDynamicRefraction || options.litOptions.reflectionSource !== REFLECTIONSRC_NONE);\n\t\t\t\toptions.litOptions.useClearCoat = !!stdMat.clearCoat;\n\t\t\t\toptions.litOptions.useSheen = stdMat.useSheen;\n\t\t\t\toptions.litOptions.useIridescence = stdMat.useIridescence && stdMat.iridescence !== 0.0;\n\t\t\t\toptions.litOptions.useMetalness = stdMat.useMetalness;\n\t\t\t\toptions.litOptions.useDynamicRefraction = stdMat.useDynamicRefraction;\n\t\t\t\toptions.litOptions.dispersion = stdMat.dispersion > 0;\n\t\t\t\toptions.litOptions.shadowCatcher = stdMat.shadowCatcher;\n\t\t}\n\t\t_updateEnvOptions(options, stdMat, scene, cameraShaderParams) {\n\t\t\t\toptions.litOptions.fog = stdMat.useFog ? cameraShaderParams.fog : FOG_NONE;\n\t\t\t\toptions.litOptions.gamma = cameraShaderParams.shaderOutputGamma;\n\t\t\t\toptions.litOptions.toneMap = stdMat.useTonemap ? cameraShaderParams.toneMapping : TONEMAP_NONE;\n\t\t\t\tlet usingSceneEnv = false;\n\t\t\t\tif (stdMat.envAtlas && stdMat.cubeMap) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLASHQ;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.envAtlas.encoding;\n\t\t\t\t\t\toptions.litOptions.reflectionCubemapEncoding = stdMat.cubeMap.encoding;\n\t\t\t\t} else if (stdMat.envAtlas) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLAS;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.envAtlas.encoding;\n\t\t\t\t} else if (stdMat.cubeMap) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_CUBEMAP;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.cubeMap.encoding;\n\t\t\t\t} else if (stdMat.sphereMap) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_SPHEREMAP;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = stdMat.sphereMap.encoding;\n\t\t\t\t} else if (stdMat.useSkybox && scene.envAtlas && scene.skybox) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLASHQ;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t\t\toptions.litOptions.reflectionCubemapEncoding = scene.skybox.encoding;\n\t\t\t\t\t\tusingSceneEnv = true;\n\t\t\t\t} else if (stdMat.useSkybox && scene.envAtlas) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_ENVATLAS;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = scene.envAtlas.encoding;\n\t\t\t\t\t\tusingSceneEnv = true;\n\t\t\t\t} else if (stdMat.useSkybox && scene.skybox) {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_CUBEMAP;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = scene.skybox.encoding;\n\t\t\t\t\t\tusingSceneEnv = true;\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.litOptions.reflectionSource = REFLECTIONSRC_NONE;\n\t\t\t\t\t\toptions.litOptions.reflectionEncoding = null;\n\t\t\t\t}\n\t\t\t\tif (stdMat.ambientSH) {\n\t\t\t\t\t\toptions.litOptions.ambientSource = AMBIENTSRC_AMBIENTSH;\n\t\t\t\t\t\toptions.litOptions.ambientEncoding = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst envAtlas = stdMat.envAtlas || (stdMat.useSkybox && scene.envAtlas ? scene.envAtlas : null);\n\t\t\t\t\t\tif (envAtlas && !stdMat.sphereMap) {\n\t\t\t\t\t\t\t\toptions.litOptions.ambientSource = AMBIENTSRC_ENVALATLAS;\n\t\t\t\t\t\t\t\toptions.litOptions.ambientEncoding = envAtlas.encoding;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptions.litOptions.ambientSource = AMBIENTSRC_CONSTANT;\n\t\t\t\t\t\t\t\toptions.litOptions.ambientEncoding = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\toptions.litOptions.skyboxIntensity = usingSceneEnv;\n\t\t\t\toptions.litOptions.useCubeMapRotation = usingSceneEnv && scene._skyboxRotationShaderInclude;\n\t\t}\n\t\t_updateLightOptions(options, scene, stdMat, objDefs, sortedLights) {\n\t\t\t\toptions.lightMap = false;\n\t\t\t\toptions.lightMapChannel = '';\n\t\t\t\toptions.lightMapUv = 0;\n\t\t\t\toptions.lightMapTransform = 0;\n\t\t\t\toptions.litOptions.lightMapWithoutAmbient = false;\n\t\t\t\toptions.dirLightMap = false;\n\t\t\t\tif (objDefs) {\n\t\t\t\t\t\toptions.litOptions.noShadow = (objDefs & SHADERDEF_NOSHADOW) !== 0;\n\t\t\t\t\t\tif ((objDefs & SHADERDEF_LM) !== 0) {\n\t\t\t\t\t\t\t\toptions.lightMapEncoding = scene.lightmapPixelFormat === PIXELFORMAT_RGBA8 ? 'rgbm' : 'linear';\n\t\t\t\t\t\t\t\toptions.lightMap = true;\n\t\t\t\t\t\t\t\toptions.lightMapChannel = 'rgb';\n\t\t\t\t\t\t\t\toptions.lightMapUv = 1;\n\t\t\t\t\t\t\t\toptions.lightMapTransform = 0;\n\t\t\t\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = !stdMat.lightMap;\n\t\t\t\t\t\t\t\tif ((objDefs & SHADERDEF_DIRLM) !== 0) {\n\t\t\t\t\t\t\t\t\t\toptions.dirLightMap = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif ((objDefs & SHADERDEF_LMAMBIENT) !== 0) {\n\t\t\t\t\t\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (stdMat.useLighting) {\n\t\t\t\t\t\tconst lightsFiltered = [];\n\t\t\t\t\t\tconst mask = objDefs ? objDefs >> 16 : MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\toptions.litOptions.lightMaskDynamic = !!(mask & MASK_AFFECT_DYNAMIC);\n\t\t\t\t\t\tif (sortedLights) {\n\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_DIRECTIONAL, sortedLights[LIGHTTYPE_DIRECTIONAL], lightsFiltered, mask);\n\t\t\t\t\t\t\t\tif (!scene.clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_OMNI, sortedLights[LIGHTTYPE_OMNI], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t\t\tLitMaterialOptionsBuilder.collectLights(LIGHTTYPE_SPOT, sortedLights[LIGHTTYPE_SPOT], lightsFiltered, mask);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.litOptions.lights = lightsFiltered;\n\t\t\t\t} else {\n\t\t\t\t\t\toptions.litOptions.lights = [];\n\t\t\t\t}\n\t\t\t\tif (options.litOptions.lights.length === 0 && !scene.clusteredLightingEnabled) {\n\t\t\t\t\t\toptions.litOptions.noShadow = true;\n\t\t\t\t}\n\t\t}\n\t\t_getMapTransformID(xform, uv) {\n\t\t\t\tif (!xform) return 0;\n\t\t\t\tlet xforms = this._mapXForms[uv];\n\t\t\t\tif (!xforms) {\n\t\t\t\t\t\txforms = [];\n\t\t\t\t\t\tthis._mapXForms[uv] = xforms;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < xforms.length; i++){\n\t\t\t\t\t\tif (arraysEqual(xforms[i][0].value, xform[0].value) && arraysEqual(xforms[i][1].value, xform[1].value)) {\n\t\t\t\t\t\t\t\treturn i + 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn xforms.push(xform);\n\t\t}\n}\n\nfunction _textureParameter(name, channel = true, vertexColor = true) {\n\t\tconst result = {};\n\t\tresult[`${name}Map`] = 'texture';\n\t\tresult[`${name}MapTiling`] = 'vec2';\n\t\tresult[`${name}MapOffset`] = 'vec2';\n\t\tresult[`${name}MapRotation`] = 'number';\n\t\tresult[`${name}MapUv`] = 'number';\n\t\tif (channel) {\n\t\t\t\tresult[`${name}MapChannel`] = 'string';\n\t\t\t\tif (vertexColor) {\n\t\t\t\t\t\tresult[`${name}VertexColor`] = 'boolean';\n\t\t\t\t\t\tresult[`${name}VertexColorChannel`] = 'string';\n\t\t\t\t}\n\t\t}\n\t\treturn result;\n}\nconst standardMaterialParameterTypes = {\n\t\tname: 'string',\n\t\tchunks: 'chunks',\n\t\tmappingFormat: 'string',\n\t\t_engine: 'boolean',\n\t\tambient: 'rgb',\n\t\t..._textureParameter('ao'),\n\t\t..._textureParameter('aoDetail', true, false),\n\t\taoDetailMode: 'string',\n\t\taoIntensity: 'number',\n\t\tdiffuse: 'rgb',\n\t\t..._textureParameter('diffuse'),\n\t\t..._textureParameter('diffuseDetail', true, false),\n\t\tdiffuseDetailMode: 'string',\n\t\tspecular: 'rgb',\n\t\tspecularTint: 'boolean',\n\t\t..._textureParameter('specular'),\n\t\toccludeSpecular: 'enum:occludeSpecular',\n\t\tspecularityFactor: 'number',\n\t\tspecularityFactorTint: 'boolean',\n\t\t..._textureParameter('specularityFactor'),\n\t\tuseMetalness: 'boolean',\n\t\tmetalness: 'number',\n\t\tenableGGXSpecular: 'boolean',\n\t\tmetalnessTint: 'boolean',\n\t\t..._textureParameter('metalness'),\n\t\tuseMetalnessSpecularColor: 'boolean',\n\t\tanisotropyIntensity: 'number',\n\t\tanisotropyRotation: 'number',\n\t\t..._textureParameter('anisotropy'),\n\t\tshininess: 'number',\n\t\tgloss: 'number',\n\t\tglossInvert: 'boolean',\n\t\t..._textureParameter('gloss'),\n\t\tclearCoat: 'number',\n\t\t..._textureParameter('clearCoat'),\n\t\tclearCoatGloss: 'number',\n\t\tclearCoatGlossInvert: 'boolean',\n\t\t..._textureParameter('clearCoatGloss'),\n\t\tclearCoatBumpiness: 'number',\n\t\t..._textureParameter('clearCoatNormal', false),\n\t\tuseSheen: 'boolean',\n\t\tsheen: 'rgb',\n\t\t..._textureParameter('sheen'),\n\t\tsheenGloss: 'number',\n\t\tsheenGlossInvert: 'boolean',\n\t\t..._textureParameter('sheenGloss'),\n\t\tfresnelModel: 'number',\n\t\temissive: 'rgb',\n\t\t..._textureParameter('emissive'),\n\t\temissiveIntensity: 'number',\n\t\t..._textureParameter('normal', false),\n\t\tbumpiness: 'number',\n\t\t..._textureParameter('normalDetail', false),\n\t\tnormalDetailMapBumpiness: 'number',\n\t\t..._textureParameter('height', true, false),\n\t\theightMapFactor: 'number',\n\t\talphaToCoverage: 'boolean',\n\t\talphaTest: 'number',\n\t\talphaFade: 'number',\n\t\topacity: 'number',\n\t\t..._textureParameter('opacity'),\n\t\topacityFadesSpecular: 'boolean',\n\t\topacityDither: 'string',\n\t\topacityShadowDither: 'string',\n\t\treflectivity: 'number',\n\t\trefraction: 'number',\n\t\trefractionTint: 'boolean',\n\t\t..._textureParameter('refraction'),\n\t\trefractionIndex: 'number',\n\t\tdispersion: 'number',\n\t\tthickness: 'number',\n\t\tthicknessTint: 'boolean',\n\t\t..._textureParameter('thickness'),\n\t\tattenuation: 'rgb',\n\t\tattenuationDistance: 'number',\n\t\tuseDynamicRefraction: 'boolean',\n\t\tsphereMap: 'texture',\n\t\tcubeMap: 'cubemap',\n\t\tcubeMapProjection: 'number',\n\t\tcubeMapProjectionBox: 'boundingbox',\n\t\tuseIridescence: 'boolean',\n\t\tiridescence: 'number',\n\t\tiridescenceTint: 'boolean',\n\t\t..._textureParameter('iridescence'),\n\t\tiridescenceThicknessTint: 'boolean',\n\t\tiridescenceThicknessMin: 'number',\n\t\tiridescenceThicknessMax: 'number',\n\t\tiridescenceRefractionIndex: 'number',\n\t\t..._textureParameter('iridescenceThickness'),\n\t\t..._textureParameter('light'),\n\t\tdepthTest: 'boolean',\n\t\tdepthFunc: 'enum:depthFunc',\n\t\tdepthWrite: 'boolean',\n\t\tdepthBias: 'number',\n\t\tslopeDepthBias: 'number',\n\t\tcull: 'enum:cull',\n\t\tblendType: 'enum:blendType',\n\t\tuseFog: 'boolean',\n\t\tuseLighting: 'boolean',\n\t\tuseSkybox: 'boolean',\n\t\tuseTonemap: 'boolean',\n\t\tenvAtlas: 'texture',\n\t\ttwoSidedLighting: 'boolean',\n\t\tshadowCatcher: 'boolean'\n};\nconst standardMaterialTextureParameters = [];\nfor(const key in standardMaterialParameterTypes){\n\t\tconst type = standardMaterialParameterTypes[key];\n\t\tif (type === 'texture') {\n\t\t\t\tstandardMaterialTextureParameters.push(key);\n\t\t}\n}\nconst standardMaterialCubemapParameters = [];\nfor(const key in standardMaterialParameterTypes){\n\t\tconst type = standardMaterialParameterTypes[key];\n\t\tif (type === 'cubemap') {\n\t\t\t\tstandardMaterialCubemapParameters.push(key);\n\t\t}\n}\nconst standardMaterialRemovedParameters = {\n\t\taoMapVertexColor: 'boolean',\n\t\tdiffuseMapTint: 'boolean',\n\t\tdiffuseMapVertexColor: 'boolean',\n\t\temissiveMapTint: 'boolean',\n\t\temissiveMapVertexColor: 'boolean',\n\t\tglossMapVertexColor: 'boolean',\n\t\tmetalnessMapVertexColor: 'boolean',\n\t\topacityMapVertexColor: 'boolean',\n\t\tspecularAntialias: 'boolean',\n\t\tspecularMapTint: 'boolean',\n\t\tspecularMapVertexColor: 'boolean',\n\t\tambientTint: 'boolean',\n\t\temissiveTint: 'boolean',\n\t\tdiffuseTint: 'boolean',\n\t\tsheenTint: 'boolean',\n\t\tconserveEnergy: 'boolean',\n\t\tuseGamma: 'boolean',\n\t\tuseGammaTonemap: 'boolean',\n\t\tsheenGlossTint: 'boolean',\n\t\tanisotropy: 'boolean'\n};\n\nconst _props = {};\nconst _uniforms = {};\nlet _params = new Set();\nconst _tempColor$3 = new Color();\nclass StandardMaterial extends Material {\n\t\tstatic{\n\t\t\t\tthis.TEXTURE_PARAMETERS = standardMaterialTextureParameters;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.CUBEMAP_PARAMETERS = standardMaterialCubemapParameters;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tsuper(), this.userAttributes = new Map();\n\t\t\t\tthis._assetReferences = {};\n\t\t\t\tthis._activeParams = new Set();\n\t\t\t\tthis._activeLightingParams = new Set();\n\t\t\t\tthis.shaderOptBuilder = new StandardMaterialOptionsBuilder();\n\t\t\t\tthis.reset();\n\t\t}\n\t\treset() {\n\t\t\t\tObject.keys(_props).forEach((name)=>{\n\t\t\t\t\t\tthis[`_${name}`] = _props[name].value();\n\t\t\t\t});\n\t\t\t\tthis._uniformCache = {};\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tsuper.copy(source);\n\t\t\t\tObject.keys(_props).forEach((k)=>{\n\t\t\t\t\t\tthis[k] = source[k];\n\t\t\t\t});\n\t\t\t\tthis.userAttributes = new Map(source.userAttributes);\n\t\t\t\treturn this;\n\t\t}\n\t\tsetAttribute(name, semantic) {\n\t\t\t\tthis.userAttributes.set(semantic, name);\n\t\t}\n\t\t_setParameter(name, value) {\n\t\t\t\t_params.add(name);\n\t\t\t\tthis.setParameter(name, value);\n\t\t}\n\t\t_setParameters(parameters) {\n\t\t\t\tparameters.forEach((v)=>{\n\t\t\t\t\t\tthis._setParameter(v.name, v.value);\n\t\t\t\t});\n\t\t}\n\t\t_processParameters(paramsName) {\n\t\t\t\tconst prevParams = this[paramsName];\n\t\t\t\tprevParams.forEach((param)=>{\n\t\t\t\t\t\tif (!_params.has(param)) {\n\t\t\t\t\t\t\t\tdelete this.parameters[param];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis[paramsName] = _params;\n\t\t\t\t_params = prevParams;\n\t\t\t\t_params.clear();\n\t\t}\n\t\t_updateMap(p) {\n\t\t\t\tconst mname = `${p}Map`;\n\t\t\t\tconst map = this[mname];\n\t\t\t\tif (map) {\n\t\t\t\t\t\tthis._setParameter(`texture_${mname}`, map);\n\t\t\t\t\t\tconst tname = `${mname}Transform`;\n\t\t\t\t\t\tconst uniform = this.getUniform(tname);\n\t\t\t\t\t\tif (uniform) {\n\t\t\t\t\t\t\t\tthis._setParameters(uniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_allocUniform(name, allocFunc) {\n\t\t\t\tlet uniform = this._uniformCache[name];\n\t\t\t\tif (!uniform) {\n\t\t\t\t\t\tuniform = allocFunc();\n\t\t\t\t\t\tthis._uniformCache[name] = uniform;\n\t\t\t\t}\n\t\t\t\treturn uniform;\n\t\t}\n\t\tgetUniform(name, device, scene) {\n\t\t\t\treturn _uniforms[name](this, device, scene);\n\t\t}\n\t\tupdateUniforms(device, scene) {\n\t\t\t\tconst getUniform = (name)=>{\n\t\t\t\t\t\treturn this.getUniform(name, device, scene);\n\t\t\t\t};\n\t\t\t\tthis._setParameter('material_ambient', getUniform('ambient'));\n\t\t\t\tthis._setParameter('material_diffuse', getUniform('diffuse'));\n\t\t\t\tthis._setParameter('material_aoIntensity', this.aoIntensity);\n\t\t\t\tif (this.useMetalness) {\n\t\t\t\t\t\tif (!this.metalnessMap || this.metalness < 1) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_metalness', this.metalness);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.specularMap || this.specularTint) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_specular', getUniform('specular'));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.specularityFactorMap || this.specularityFactorTint) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_specularityFactor', this.specularityFactor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._setParameter('material_sheen', getUniform('sheen'));\n\t\t\t\t\t\tthis._setParameter('material_sheenGloss', this.sheenGloss);\n\t\t\t\t\t\tthis._setParameter('material_refractionIndex', this.refractionIndex);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.specularMap || this.specularTint) {\n\t\t\t\t\t\t\t\tthis._setParameter('material_specular', getUniform('specular'));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.enableGGXSpecular) {\n\t\t\t\t\t\tthis._setParameter('material_anisotropyIntensity', this.anisotropyIntensity);\n\t\t\t\t\t\tthis._setParameter('material_anisotropyRotation', [\n\t\t\t\t\t\t\t\tMath.cos(this.anisotropyRotation * math.DEG_TO_RAD),\n\t\t\t\t\t\t\t\tMath.sin(this.anisotropyRotation * math.DEG_TO_RAD)\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (this.clearCoat > 0) {\n\t\t\t\t\t\tthis._setParameter('material_clearCoat', this.clearCoat);\n\t\t\t\t\t\tthis._setParameter('material_clearCoatGloss', this.clearCoatGloss);\n\t\t\t\t\t\tthis._setParameter('material_clearCoatBumpiness', this.clearCoatBumpiness);\n\t\t\t\t}\n\t\t\t\tthis._setParameter('material_gloss', this.gloss);\n\t\t\t\tthis._setParameter('material_emissive', getUniform('emissive'));\n\t\t\t\tthis._setParameter('material_emissiveIntensity', this.emissiveIntensity);\n\t\t\t\tif (this.refraction > 0) {\n\t\t\t\t\t\tthis._setParameter('material_refraction', this.refraction);\n\t\t\t\t}\n\t\t\t\tif (this.dispersion > 0) {\n\t\t\t\t\t\tthis._setParameter('material_dispersion', this.dispersion);\n\t\t\t\t}\n\t\t\t\tif (this.useDynamicRefraction) {\n\t\t\t\t\t\tthis._setParameter('material_thickness', this.thickness);\n\t\t\t\t\t\tthis._setParameter('material_attenuation', getUniform('attenuation'));\n\t\t\t\t\t\tthis._setParameter('material_invAttenuationDistance', this.attenuationDistance === 0 ? 0 : 1.0 / this.attenuationDistance);\n\t\t\t\t}\n\t\t\t\tif (this.useIridescence) {\n\t\t\t\t\t\tthis._setParameter('material_iridescence', this.iridescence);\n\t\t\t\t\t\tthis._setParameter('material_iridescenceRefractionIndex', this.iridescenceRefractionIndex);\n\t\t\t\t\t\tthis._setParameter('material_iridescenceThicknessMin', this.iridescenceThicknessMin);\n\t\t\t\t\t\tthis._setParameter('material_iridescenceThicknessMax', this.iridescenceThicknessMax);\n\t\t\t\t}\n\t\t\t\tthis._setParameter('material_opacity', this.opacity);\n\t\t\t\tif (this.opacityFadesSpecular === false) {\n\t\t\t\t\t\tthis._setParameter('material_alphaFade', this.alphaFade);\n\t\t\t\t}\n\t\t\t\tif (this.occludeSpecular) {\n\t\t\t\t\t\tthis._setParameter('material_occludeSpecularIntensity', this.occludeSpecularIntensity);\n\t\t\t\t}\n\t\t\t\tif (this.cubeMapProjection === CUBEPROJ_BOX) {\n\t\t\t\t\t\tthis._setParameter(getUniform('cubeMapProjectionBox'));\n\t\t\t\t}\n\t\t\t\tfor(const p in _matTex2D){\n\t\t\t\t\t\tthis._updateMap(p);\n\t\t\t\t}\n\t\t\t\tif (this.ambientSH) {\n\t\t\t\t\t\tthis._setParameter('ambientSH[0]', this.ambientSH);\n\t\t\t\t}\n\t\t\t\tif (this.normalMap) {\n\t\t\t\t\t\tthis._setParameter('material_bumpiness', this.bumpiness);\n\t\t\t\t}\n\t\t\t\tif (this.normalMap && this.normalDetailMap) {\n\t\t\t\t\t\tthis._setParameter('material_normalDetailMapBumpiness', this.normalDetailMapBumpiness);\n\t\t\t\t}\n\t\t\t\tif (this.heightMap) {\n\t\t\t\t\t\tthis._setParameter('material_heightMapFactor', getUniform('heightMapFactor'));\n\t\t\t\t}\n\t\t\t\tif (this.envAtlas && this.cubeMap) {\n\t\t\t\t\t\tthis._setParameter('texture_envAtlas', this.envAtlas);\n\t\t\t\t\t\tthis._setParameter('texture_cubeMap', this.cubeMap);\n\t\t\t\t} else if (this.envAtlas) {\n\t\t\t\t\t\tthis._setParameter('texture_envAtlas', this.envAtlas);\n\t\t\t\t} else if (this.cubeMap) {\n\t\t\t\t\t\tthis._setParameter('texture_cubeMap', this.cubeMap);\n\t\t\t\t} else if (this.sphereMap) {\n\t\t\t\t\t\tthis._setParameter('texture_sphereMap', this.sphereMap);\n\t\t\t\t}\n\t\t\t\tthis._setParameter('material_reflectivity', this.reflectivity);\n\t\t\t\tthis._processParameters('_activeParams');\n\t\t\t\tsuper.updateUniforms(device, scene);\n\t\t}\n\t\tupdateEnvUniforms(device, scene) {\n\t\t\t\tconst hasLocalEnvOverride = this.envAtlas || this.cubeMap || this.sphereMap;\n\t\t\t\tif (!hasLocalEnvOverride && this.useSkybox) {\n\t\t\t\t\t\tif (scene.envAtlas && scene.skybox) {\n\t\t\t\t\t\t\t\tthis._setParameter('texture_envAtlas', scene.envAtlas);\n\t\t\t\t\t\t\t\tthis._setParameter('texture_cubeMap', scene.skybox);\n\t\t\t\t\t\t} else if (scene.envAtlas) {\n\t\t\t\t\t\t\t\tthis._setParameter('texture_envAtlas', scene.envAtlas);\n\t\t\t\t\t\t} else if (scene.skybox) {\n\t\t\t\t\t\t\t\tthis._setParameter('texture_cubeMap', scene.skybox);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._processParameters('_activeLightingParams');\n\t\t}\n\t\tgetShaderVariant(params) {\n\t\t\t\tconst { device, scene, pass, objDefs, sortedLights, cameraShaderParams } = params;\n\t\t\t\tthis.updateEnvUniforms(device, scene);\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(device).getByIndex(pass);\n\t\t\t\tconst minimalOptions = pass === SHADER_PICK || pass === SHADER_PREPASS || shaderPassInfo.isShadow;\n\t\t\t\tlet options = minimalOptions ? standard.optionsContextMin : standard.optionsContext;\n\t\t\t\toptions.defines = ShaderUtils.getCoreDefines(this, params);\n\t\t\t\tif (minimalOptions) {\n\t\t\t\t\t\tthis.shaderOptBuilder.updateMinRef(options, scene, this, objDefs, pass, sortedLights);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.shaderOptBuilder.updateRef(options, scene, cameraShaderParams, this, objDefs, pass, sortedLights);\n\t\t\t\t}\n\t\t\t\tif (!this.useFog) options.defines.set('FOG', 'NONE');\n\t\t\t\toptions.defines.set('TONEMAP', tonemapNames[options.litOptions.toneMap]);\n\t\t\t\tif (this.onUpdateShader) {\n\t\t\t\t\t\toptions = this.onUpdateShader(options);\n\t\t\t\t}\n\t\t\t\tconst processingOptions = new ShaderProcessorOptions(params.viewUniformFormat, params.viewBindGroupFormat, params.vertexFormat);\n\t\t\t\tconst library = getProgramLibrary(device);\n\t\t\t\tlibrary.register('standard', standard);\n\t\t\t\tconst shader = library.getProgram('standard', options, processingOptions, this.userId);\n\t\t\t\tthis._dirtyShader = false;\n\t\t\t\treturn shader;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor(const asset in this._assetReferences){\n\t\t\t\t\t\tthis._assetReferences[asset]._unbind();\n\t\t\t\t}\n\t\t\t\tthis._assetReferences = null;\n\t\t\t\tsuper.destroy();\n\t\t}\n}\nconst defineUniform = (name, getUniformFunc)=>{\n\t\t_uniforms[name] = getUniformFunc;\n};\nconst definePropInternal = (name, constructorFunc, setterFunc, getterFunc)=>{\n\t\tObject.defineProperty(StandardMaterial.prototype, name, {\n\t\t\t\tget: getterFunc || function() {\n\t\t\t\t\t\treturn this[`_${name}`];\n\t\t\t\t},\n\t\t\t\tset: setterFunc\n\t\t});\n\t\t_props[name] = {\n\t\t\t\tvalue: constructorFunc\n\t\t};\n};\nconst defineValueProp = (prop)=>{\n\t\tconst internalName = `_${prop.name}`;\n\t\tconst dirtyShaderFunc = prop.dirtyShaderFunc || (()=>true);\n\t\tconst setterFunc = function(value) {\n\t\t\t\tconst oldValue = this[internalName];\n\t\t\t\tif (oldValue !== value) {\n\t\t\t\t\t\tthis._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value);\n\t\t\t\t\t\tthis[internalName] = value;\n\t\t\t\t}\n\t\t};\n\t\tdefinePropInternal(prop.name, ()=>prop.defaultValue, setterFunc, prop.getterFunc);\n};\nconst defineAggProp = (prop)=>{\n\t\tconst internalName = `_${prop.name}`;\n\t\tconst dirtyShaderFunc = prop.dirtyShaderFunc || (()=>true);\n\t\tconst setterFunc = function(value) {\n\t\t\t\tconst oldValue = this[internalName];\n\t\t\t\tif (!oldValue.equals(value)) {\n\t\t\t\t\t\tthis._dirtyShader = this._dirtyShader || dirtyShaderFunc(oldValue, value);\n\t\t\t\t\t\tthis[internalName] = oldValue.copy(value);\n\t\t\t\t}\n\t\t};\n\t\tdefinePropInternal(prop.name, ()=>prop.defaultValue.clone(), setterFunc, prop.getterFunc);\n};\nconst defineProp = (prop)=>{\n\t\treturn prop.defaultValue && prop.defaultValue.clone ? defineAggProp(prop) : defineValueProp(prop);\n};\nfunction _defineTex2D(name, channel = 'rgb', vertexColor = true, uv = 0) {\n\t\t_matTex2D[name] = channel.length || -1;\n\t\tdefineProp({\n\t\t\t\tname: `${name}Map`,\n\t\t\t\tdefaultValue: null,\n\t\t\t\tdirtyShaderFunc: (oldValue, newValue)=>{\n\t\t\t\t\t\treturn !!oldValue !== !!newValue || oldValue && (oldValue.type !== newValue.type || oldValue.format !== newValue.format);\n\t\t\t\t}\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapTiling`,\n\t\t\t\tdefaultValue: new Vec2(1, 1)\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapOffset`,\n\t\t\t\tdefaultValue: new Vec2(0, 0)\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapRotation`,\n\t\t\t\tdefaultValue: 0\n\t\t});\n\t\tdefineProp({\n\t\t\t\tname: `${name}MapUv`,\n\t\t\t\tdefaultValue: uv\n\t\t});\n\t\tif (channel) {\n\t\t\t\tdefineProp({\n\t\t\t\t\t\tname: `${name}MapChannel`,\n\t\t\t\t\t\tdefaultValue: channel\n\t\t\t\t});\n\t\t\t\tif (vertexColor) {\n\t\t\t\t\t\tdefineProp({\n\t\t\t\t\t\t\t\tname: `${name}VertexColor`,\n\t\t\t\t\t\t\t\tdefaultValue: false\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdefineProp({\n\t\t\t\t\t\t\t\tname: `${name}VertexColorChannel`,\n\t\t\t\t\t\t\t\tdefaultValue: channel\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tconst mapTiling = `${name}MapTiling`;\n\t\tconst mapOffset = `${name}MapOffset`;\n\t\tconst mapRotation = `${name}MapRotation`;\n\t\tconst mapTransform = `${name}MapTransform`;\n\t\tdefineUniform(mapTransform, (material, device, scene)=>{\n\t\t\t\tconst tiling = material[mapTiling];\n\t\t\t\tconst offset = material[mapOffset];\n\t\t\t\tconst rotation = material[mapRotation];\n\t\t\t\tif (tiling.x === 1 && tiling.y === 1 && offset.x === 0 && offset.y === 0 && rotation === 0) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst uniform = material._allocUniform(mapTransform, ()=>{\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `texture_${mapTransform}0`,\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: `texture_${mapTransform}1`,\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tconst cr = Math.cos(rotation * math.DEG_TO_RAD);\n\t\t\t\tconst sr = Math.sin(rotation * math.DEG_TO_RAD);\n\t\t\t\tconst uniform0 = uniform[0].value;\n\t\t\t\tuniform0[0] = cr * tiling.x;\n\t\t\t\tuniform0[1] = -sr * tiling.y;\n\t\t\t\tuniform0[2] = offset.x;\n\t\t\t\tconst uniform1 = uniform[1].value;\n\t\t\t\tuniform1[0] = sr * tiling.x;\n\t\t\t\tuniform1[1] = cr * tiling.y;\n\t\t\t\tuniform1[2] = 1.0 - tiling.y - offset.y;\n\t\t\t\treturn uniform;\n\t\t});\n}\nfunction _defineColor(name, defaultValue) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: defaultValue,\n\t\t\t\tgetterFunc: function() {\n\t\t\t\t\t\tthis._dirtyShader = true;\n\t\t\t\t\t\treturn this[`_${name}`];\n\t\t\t\t}\n\t\t});\n\t\tdefineUniform(name, (material, device, scene)=>{\n\t\t\t\tconst uniform = material._allocUniform(name, ()=>new Float32Array(3));\n\t\t\t\tconst color = material[name];\n\t\t\t\t_tempColor$3.linear(color);\n\t\t\t\tuniform[0] = _tempColor$3.r;\n\t\t\t\tuniform[1] = _tempColor$3.g;\n\t\t\t\tuniform[2] = _tempColor$3.b;\n\t\t\t\treturn uniform;\n\t\t});\n}\nfunction _defineFloat(name, defaultValue, getUniformFunc) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: defaultValue,\n\t\t\t\tdirtyShaderFunc: (oldValue, newValue)=>{\n\t\t\t\t\t\treturn (oldValue === 0 || oldValue === 1) !== (newValue === 0 || newValue === 1);\n\t\t\t\t}\n\t\t});\n\t\tdefineUniform(name, getUniformFunc);\n}\nfunction _defineObject(name, getUniformFunc) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: null,\n\t\t\t\tdirtyShaderFunc: (oldValue, newValue)=>{\n\t\t\t\t\t\treturn !!oldValue === !!newValue;\n\t\t\t\t}\n\t\t});\n\t\tdefineUniform(name, getUniformFunc);\n}\nfunction _defineFlag(name, defaultValue) {\n\t\tdefineProp({\n\t\t\t\tname: name,\n\t\t\t\tdefaultValue: defaultValue\n\t\t});\n}\nfunction _defineMaterialProps() {\n\t\t_defineColor('ambient', new Color(1, 1, 1));\n\t\t_defineColor('diffuse', new Color(1, 1, 1));\n\t\t_defineColor('specular', new Color(0, 0, 0));\n\t\t_defineColor('emissive', new Color(0, 0, 0));\n\t\t_defineColor('sheen', new Color(1, 1, 1));\n\t\t_defineColor('attenuation', new Color(1, 1, 1));\n\t\t_defineFloat('emissiveIntensity', 1);\n\t\t_defineFloat('specularityFactor', 1);\n\t\t_defineFloat('sheenGloss', 0.0);\n\t\t_defineFloat('gloss', 0.25);\n\t\t_defineFloat('aoIntensity', 1);\n\t\t_defineFloat('heightMapFactor', 1, (material, device, scene)=>{\n\t\t\t\treturn material.heightMapFactor * 0.025;\n\t\t});\n\t\t_defineFloat('opacity', 1);\n\t\t_defineFloat('alphaFade', 1);\n\t\t_defineFloat('alphaTest', 0);\n\t\t_defineFloat('bumpiness', 1);\n\t\t_defineFloat('normalDetailMapBumpiness', 1);\n\t\t_defineFloat('reflectivity', 1);\n\t\t_defineFloat('occludeSpecularIntensity', 1);\n\t\t_defineFloat('refraction', 0);\n\t\t_defineFloat('refractionIndex', 1.0 / 1.5);\n\t\t_defineFloat('dispersion', 0);\n\t\t_defineFloat('thickness', 0);\n\t\t_defineFloat('attenuationDistance', 0);\n\t\t_defineFloat('metalness', 1);\n\t\t_defineFloat('anisotropyIntensity', 0);\n\t\t_defineFloat('anisotropyRotation', 0);\n\t\t_defineFloat('clearCoat', 0);\n\t\t_defineFloat('clearCoatGloss', 1);\n\t\t_defineFloat('clearCoatBumpiness', 1);\n\t\t_defineFloat('aoUvSet', 0, null);\n\t\t_defineFloat('iridescence', 0);\n\t\t_defineFloat('iridescenceRefractionIndex', 1.0 / 1.5);\n\t\t_defineFloat('iridescenceThicknessMin', 0);\n\t\t_defineFloat('iridescenceThicknessMax', 0);\n\t\t_defineObject('ambientSH');\n\t\t_defineObject('cubeMapProjectionBox', (material, device, scene)=>{\n\t\t\t\tconst uniform = material._allocUniform('cubeMapProjectionBox', ()=>{\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'envBoxMin',\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'envBoxMax',\n\t\t\t\t\t\t\t\t\t\tvalue: new Float32Array(3)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t});\n\t\t\t\tconst bboxMin = material.cubeMapProjectionBox.getMin();\n\t\t\t\tconst minUniform = uniform[0].value;\n\t\t\t\tminUniform[0] = bboxMin.x;\n\t\t\t\tminUniform[1] = bboxMin.y;\n\t\t\t\tminUniform[2] = bboxMin.z;\n\t\t\t\tconst bboxMax = material.cubeMapProjectionBox.getMax();\n\t\t\t\tconst maxUniform = uniform[1].value;\n\t\t\t\tmaxUniform[0] = bboxMax.x;\n\t\t\t\tmaxUniform[1] = bboxMax.y;\n\t\t\t\tmaxUniform[2] = bboxMax.z;\n\t\t\t\treturn uniform;\n\t\t});\n\t\t_defineFlag('specularTint', false);\n\t\t_defineFlag('specularityFactorTint', false);\n\t\t_defineFlag('useMetalness', false);\n\t\t_defineFlag('useMetalnessSpecularColor', false);\n\t\t_defineFlag('useSheen', false);\n\t\t_defineFlag('enableGGXSpecular', false);\n\t\t_defineFlag('occludeDirect', false);\n\t\t_defineFlag('opacityFadesSpecular', true);\n\t\t_defineFlag('occludeSpecular', SPECOCC_AO);\n\t\t_defineFlag('fresnelModel', FRESNEL_SCHLICK);\n\t\t_defineFlag('useDynamicRefraction', false);\n\t\t_defineFlag('cubeMapProjection', CUBEPROJ_NONE);\n\t\t_defineFlag('useFog', true);\n\t\t_defineFlag('useLighting', true);\n\t\t_defineFlag('useTonemap', true);\n\t\t_defineFlag('useSkybox', true);\n\t\t_defineFlag('forceUv1', false);\n\t\t_defineFlag('pixelSnap', false);\n\t\t_defineFlag('twoSidedLighting', false);\n\t\t_defineFlag('nineSlicedMode', undefined);\n\t\t_defineFlag('msdfTextAttribute', false);\n\t\t_defineFlag('useIridescence', false);\n\t\t_defineFlag('glossInvert', false);\n\t\t_defineFlag('sheenGlossInvert', false);\n\t\t_defineFlag('clearCoatGlossInvert', false);\n\t\t_defineFlag('opacityDither', DITHER_NONE);\n\t\t_defineFlag('opacityShadowDither', DITHER_NONE);\n\t\t_defineFlag('shadowCatcher', false);\n\t\t_defineTex2D('diffuse');\n\t\t_defineTex2D('specular');\n\t\t_defineTex2D('emissive');\n\t\t_defineTex2D('thickness', 'g');\n\t\t_defineTex2D('specularityFactor', 'g');\n\t\t_defineTex2D('normal', '');\n\t\t_defineTex2D('metalness', 'g');\n\t\t_defineTex2D('gloss', 'g');\n\t\t_defineTex2D('opacity', 'a');\n\t\t_defineTex2D('refraction', 'g');\n\t\t_defineTex2D('height', 'g', false);\n\t\t_defineTex2D('ao', 'g');\n\t\t_defineTex2D('light', 'rgb', true, 1);\n\t\t_defineTex2D('msdf', '');\n\t\t_defineTex2D('diffuseDetail', 'rgb', false);\n\t\t_defineTex2D('normalDetail', '');\n\t\t_defineTex2D('aoDetail', 'g', false);\n\t\t_defineTex2D('clearCoat', 'g');\n\t\t_defineTex2D('clearCoatGloss', 'g');\n\t\t_defineTex2D('clearCoatNormal', '');\n\t\t_defineTex2D('sheen', 'rgb');\n\t\t_defineTex2D('sheenGloss', 'g');\n\t\t_defineTex2D('iridescence', 'g');\n\t\t_defineTex2D('iridescenceThickness', 'g');\n\t\t_defineTex2D('anisotropy', '');\n\t\t_defineFlag('diffuseDetailMode', DETAILMODE_MUL);\n\t\t_defineFlag('aoDetailMode', DETAILMODE_MUL);\n\t\t_defineObject('cubeMap');\n\t\t_defineObject('sphereMap');\n\t\t_defineObject('envAtlas');\n\t\tconst getterFunc = function() {\n\t\t\t\treturn this._prefilteredCubemaps;\n\t\t};\n\t\tconst setterFunc = function(value) {\n\t\t\t\tconst cubemaps = this._prefilteredCubemaps;\n\t\t\t\tvalue = value || [];\n\t\t\t\tlet changed = false;\n\t\t\t\tlet complete = true;\n\t\t\t\tfor(let i = 0; i < 6; ++i){\n\t\t\t\t\t\tconst v = value[i] || null;\n\t\t\t\t\t\tif (cubemaps[i] !== v) {\n\t\t\t\t\t\t\t\tcubemaps[i] = v;\n\t\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomplete = complete && !!cubemaps[i];\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tif (complete) {\n\t\t\t\t\t\t\t\tthis.envAtlas = EnvLighting.generatePrefilteredAtlas(cubemaps, {\n\t\t\t\t\t\t\t\t\t\ttarget: this.envAtlas\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.envAtlas) {\n\t\t\t\t\t\t\t\t\t\tthis.envAtlas.destroy();\n\t\t\t\t\t\t\t\t\t\tthis.envAtlas = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyShader = true;\n\t\t\t\t}\n\t\t};\n\t\tconst empty = [\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t];\n\t\tdefinePropInternal('prefilteredCubemaps', ()=>empty.slice(), setterFunc, getterFunc);\n}\n_defineMaterialProps();\n\nconst primitiveUv1Padding = 4.0 / 64;\nconst primitiveUv1PaddingScale = 1.0 - primitiveUv1Padding * 2;\nclass ConeBaseGeometry extends Geometry {\n\t\tconstructor(baseRadius, peakRadius, height, heightSegments, capSegments, roundedCaps){\n\t\t\t\tsuper();\n\t\t\t\tconst pos = new Vec3();\n\t\t\t\tconst bottomToTop = new Vec3();\n\t\t\t\tconst norm = new Vec3();\n\t\t\t\tconst top = new Vec3();\n\t\t\t\tconst bottom = new Vec3();\n\t\t\t\tconst tangent = new Vec3();\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst uvs1 = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet offset;\n\t\t\t\tif (height > 0) {\n\t\t\t\t\t\tfor(let i = 0; i <= heightSegments; i++){\n\t\t\t\t\t\t\t\tfor(let j = 0; j <= capSegments; j++){\n\t\t\t\t\t\t\t\t\t\tconst theta = j / capSegments * 2 * Math.PI - Math.PI;\n\t\t\t\t\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\t\t\t\t\tbottom.set(sinTheta * baseRadius, -height / 2, cosTheta * baseRadius);\n\t\t\t\t\t\t\t\t\t\ttop.set(sinTheta * peakRadius, height / 2, cosTheta * peakRadius);\n\t\t\t\t\t\t\t\t\t\tpos.lerp(bottom, top, i / heightSegments);\n\t\t\t\t\t\t\t\t\t\tbottomToTop.sub2(top, bottom).normalize();\n\t\t\t\t\t\t\t\t\t\ttangent.set(cosTheta, 0, -sinTheta);\n\t\t\t\t\t\t\t\t\t\tnorm.cross(tangent, bottomToTop).normalize();\n\t\t\t\t\t\t\t\t\t\tpositions.push(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t\t\t\t\tnormals.push(norm.x, norm.y, norm.z);\n\t\t\t\t\t\t\t\t\t\tlet u = j / capSegments;\n\t\t\t\t\t\t\t\t\t\tlet v = i / heightSegments;\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tconst _v = v;\n\t\t\t\t\t\t\t\t\t\tv = u;\n\t\t\t\t\t\t\t\t\t\tu = _v;\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tif (i < heightSegments && j < capSegments) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst first = i * (capSegments + 1) + j;\n\t\t\t\t\t\t\t\t\t\t\t\tconst second = i * (capSegments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\t\t\tconst third = (i + 1) * (capSegments + 1) + j;\n\t\t\t\t\t\t\t\t\t\t\t\tconst fourth = (i + 1) * (capSegments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(first, second, third);\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(second, fourth, third);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (roundedCaps) {\n\t\t\t\t\t\tconst latitudeBands = Math.floor(capSegments / 2);\n\t\t\t\t\t\tconst longitudeBands = capSegments;\n\t\t\t\t\t\tconst capOffset = height / 2;\n\t\t\t\t\t\tfor(let lat = 0; lat <= latitudeBands; lat++){\n\t\t\t\t\t\t\t\tconst theta = lat * Math.PI * 0.5 / latitudeBands;\n\t\t\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon <= longitudeBands; lon++){\n\t\t\t\t\t\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\t\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\t\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\t\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\t\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - lon / longitudeBands;\n\t\t\t\t\t\t\t\t\t\tlet v = 1 - lat / latitudeBands;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * peakRadius, y * peakRadius + capOffset, z * peakRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 1.0 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = (heightSegments + 1) * (capSegments + 1);\n\t\t\t\t\t\tfor(let lat = 0; lat < latitudeBands; ++lat){\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon < longitudeBands; ++lon){\n\t\t\t\t\t\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\t\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second, offset + first);\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second + 1, offset + second);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let lat = 0; lat <= latitudeBands; lat++){\n\t\t\t\t\t\t\t\tconst theta = Math.PI * 0.5 + lat * Math.PI * 0.5 / latitudeBands;\n\t\t\t\t\t\t\t\tconst sinTheta = Math.sin(theta);\n\t\t\t\t\t\t\t\tconst cosTheta = Math.cos(theta);\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon <= longitudeBands; lon++){\n\t\t\t\t\t\t\t\t\t\tconst phi = lon * 2 * Math.PI / longitudeBands - Math.PI / 2;\n\t\t\t\t\t\t\t\t\t\tconst sinPhi = Math.sin(phi);\n\t\t\t\t\t\t\t\t\t\tconst cosPhi = Math.cos(phi);\n\t\t\t\t\t\t\t\t\t\tconst x = cosPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tconst y = cosTheta;\n\t\t\t\t\t\t\t\t\t\tconst z = sinPhi * sinTheta;\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - lon / longitudeBands;\n\t\t\t\t\t\t\t\t\t\tlet v = 1 - lat / latitudeBands;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * peakRadius, y * peakRadius - capOffset, z * peakRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(x, y, z);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 2.0 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = (heightSegments + 1) * (capSegments + 1) + (longitudeBands + 1) * (latitudeBands + 1);\n\t\t\t\t\t\tfor(let lat = 0; lat < latitudeBands; ++lat){\n\t\t\t\t\t\t\t\tfor(let lon = 0; lon < longitudeBands; ++lon){\n\t\t\t\t\t\t\t\t\t\tconst first = lat * (longitudeBands + 1) + lon;\n\t\t\t\t\t\t\t\t\t\tconst second = first + longitudeBands + 1;\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second, offset + first);\n\t\t\t\t\t\t\t\t\t\tindices.push(offset + first + 1, offset + second + 1, offset + second);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\toffset = (heightSegments + 1) * (capSegments + 1);\n\t\t\t\t\t\tif (baseRadius > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < capSegments; i++){\n\t\t\t\t\t\t\t\t\t\tconst theta = i / capSegments * 2 * Math.PI;\n\t\t\t\t\t\t\t\t\t\tconst x = Math.sin(theta);\n\t\t\t\t\t\t\t\t\t\tconst y = -height / 2;\n\t\t\t\t\t\t\t\t\t\tconst z = Math.cos(theta);\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - (x + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tlet v = (z + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * baseRadius, y, z * baseRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(0, -1, 0);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 1 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(offset, offset + i, offset + i - 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset += capSegments;\n\t\t\t\t\t\tif (peakRadius > 0) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < capSegments; i++){\n\t\t\t\t\t\t\t\t\t\tconst theta = i / capSegments * 2 * Math.PI;\n\t\t\t\t\t\t\t\t\t\tconst x = Math.sin(theta);\n\t\t\t\t\t\t\t\t\t\tconst y = height / 2;\n\t\t\t\t\t\t\t\t\t\tconst z = Math.cos(theta);\n\t\t\t\t\t\t\t\t\t\tlet u = 1 - (x + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tlet v = (z + 1) / 2;\n\t\t\t\t\t\t\t\t\t\tpositions.push(x * peakRadius, y, z * peakRadius);\n\t\t\t\t\t\t\t\t\t\tnormals.push(0, 1, 0);\n\t\t\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tu = u * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tv = v * primitiveUv1PaddingScale + primitiveUv1Padding;\n\t\t\t\t\t\t\t\t\t\tu /= 3;\n\t\t\t\t\t\t\t\t\t\tv /= 3;\n\t\t\t\t\t\t\t\t\t\tu += 2 / 3;\n\t\t\t\t\t\t\t\t\t\tuvs1.push(u, 1 - v);\n\t\t\t\t\t\t\t\t\t\tif (i > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tindices.push(offset, offset + i - 1, offset + i);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs1;\n\t\t\t\tthis.indices = indices;\n\t\t}\n}\n\nclass CapsuleGeometry extends ConeBaseGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst radius = opts.radius ?? 0.3;\n\t\t\t\tconst height = opts.height ?? 1;\n\t\t\t\tconst heightSegments = opts.heightSegments ?? 1;\n\t\t\t\tconst sides = opts.sides ?? 20;\n\t\t\t\tsuper(radius, radius, height - 2 * radius, heightSegments, sides, true);\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass ConeGeometry extends ConeBaseGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst baseRadius = opts.baseRadius ?? 0.5;\n\t\t\t\tconst peakRadius = opts.peakRadius ?? 0;\n\t\t\t\tconst height = opts.height ?? 1;\n\t\t\t\tconst heightSegments = opts.heightSegments ?? 5;\n\t\t\t\tconst capSegments = opts.capSegments ?? 18;\n\t\t\t\tsuper(baseRadius, peakRadius, height, heightSegments, capSegments, false);\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass CylinderGeometry extends ConeBaseGeometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tconst radius = opts.radius ?? 0.5;\n\t\t\t\tconst height = opts.height ?? 1;\n\t\t\t\tconst heightSegments = opts.heightSegments ?? 5;\n\t\t\t\tconst capSegments = opts.capSegments ?? 20;\n\t\t\t\tsuper(radius, radius, height, heightSegments, capSegments, false);\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(this.positions, this.normals, this.uvs, this.indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass PlaneGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst he = opts.halfExtents ?? new Vec2(0.5, 0.5);\n\t\t\t\tconst ws = opts.widthSegments ?? 5;\n\t\t\t\tconst ls = opts.lengthSegments ?? 5;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet vcounter = 0;\n\t\t\t\tfor(let i = 0; i <= ws; i++){\n\t\t\t\t\t\tfor(let j = 0; j <= ls; j++){\n\t\t\t\t\t\t\t\tconst x = -he.x + 2 * he.x * i / ws;\n\t\t\t\t\t\t\t\tconst y = 0.0;\n\t\t\t\t\t\t\t\tconst z = -(-he.y + 2 * he.y * j / ls);\n\t\t\t\t\t\t\t\tconst u = i / ws;\n\t\t\t\t\t\t\t\tconst v = j / ls;\n\t\t\t\t\t\t\t\tpositions.push(x, y, z);\n\t\t\t\t\t\t\t\tnormals.push(0, 1, 0);\n\t\t\t\t\t\t\t\tuvs.push(u, 1 - v);\n\t\t\t\t\t\t\t\tif (i < ws && j < ls) {\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + 1, vcounter);\n\t\t\t\t\t\t\t\t\t\tindices.push(vcounter + ls + 1, vcounter + ls + 2, vcounter + 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvcounter++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass TorusGeometry extends Geometry {\n\t\tconstructor(opts = {}){\n\t\t\t\tsuper();\n\t\t\t\tconst rc = opts.tubeRadius ?? 0.2;\n\t\t\t\tconst rt = opts.ringRadius ?? 0.3;\n\t\t\t\tconst sectorAngle = (opts.sectorAngle ?? 360) * math.DEG_TO_RAD;\n\t\t\t\tconst segments = opts.segments ?? 30;\n\t\t\t\tconst sides = opts.sides ?? 20;\n\t\t\t\tconst positions = [];\n\t\t\t\tconst normals = [];\n\t\t\t\tconst uvs = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tfor(let i = 0; i <= sides; i++){\n\t\t\t\t\t\tfor(let j = 0; j <= segments; j++){\n\t\t\t\t\t\t\t\tconst x = Math.cos(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides));\n\t\t\t\t\t\t\t\tconst y = Math.sin(2 * Math.PI * i / sides) * rc;\n\t\t\t\t\t\t\t\tconst z = Math.sin(sectorAngle * j / segments) * (rt + rc * Math.cos(2 * Math.PI * i / sides));\n\t\t\t\t\t\t\t\tconst nx = Math.cos(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides);\n\t\t\t\t\t\t\t\tconst ny = Math.sin(2 * Math.PI * i / sides);\n\t\t\t\t\t\t\t\tconst nz = Math.sin(sectorAngle * j / segments) * Math.cos(2 * Math.PI * i / sides);\n\t\t\t\t\t\t\t\tconst u = i / sides;\n\t\t\t\t\t\t\t\tconst v = 1 - j / segments;\n\t\t\t\t\t\t\t\tpositions.push(x, y, z);\n\t\t\t\t\t\t\t\tnormals.push(nx, ny, nz);\n\t\t\t\t\t\t\t\tuvs.push(u, 1.0 - v);\n\t\t\t\t\t\t\t\tif (i < sides && j < segments) {\n\t\t\t\t\t\t\t\t\t\tconst first = i * (segments + 1) + j;\n\t\t\t\t\t\t\t\t\t\tconst second = (i + 1) * (segments + 1) + j;\n\t\t\t\t\t\t\t\t\t\tconst third = i * (segments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\tconst fourth = (i + 1) * (segments + 1) + (j + 1);\n\t\t\t\t\t\t\t\t\t\tindices.push(first, second, third);\n\t\t\t\t\t\t\t\t\t\tindices.push(second, fourth, third);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.positions = positions;\n\t\t\t\tthis.normals = normals;\n\t\t\t\tthis.uvs = uvs;\n\t\t\t\tthis.uvs1 = uvs;\n\t\t\t\tthis.indices = indices;\n\t\t\t\tif (opts.calculateTangents) {\n\t\t\t\t\t\tthis.tangents = calculateTangents(positions, normals, uvs, indices);\n\t\t\t\t}\n\t\t}\n}\n\nclass ProgramLibrary {\n\t\tconstructor(device, standardMaterial){\n\t\t\t\tthis.processedCache = new Map();\n\t\t\t\tthis.definitionsCache = new Map();\n\t\t\t\tthis._generators = new Map();\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._isClearingCache = false;\n\t\t\t\tthis._precached = false;\n\t\t\t\tthis._programsCollection = [];\n\t\t\t\tthis._defaultStdMatOption = new StandardMaterialOptions();\n\t\t\t\tthis._defaultStdMatOptionMin = new StandardMaterialOptions();\n\t\t\t\tconst defaultCameraShaderParams = new CameraShaderParams();\n\t\t\t\tstandardMaterial.shaderOptBuilder.updateRef(this._defaultStdMatOption, {}, defaultCameraShaderParams, standardMaterial, null, [], SHADER_FORWARD, null);\n\t\t\t\tstandardMaterial.shaderOptBuilder.updateMinRef(this._defaultStdMatOptionMin, {}, standardMaterial, null, SHADER_SHADOW, null);\n\t\t\t\tdevice.on('destroy:shader', (shader)=>{\n\t\t\t\t\t\tthis.removeFromCache(shader);\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.clearCache();\n\t\t}\n\t\tregister(name, generator) {\n\t\t\t\tif (!this._generators.has(name)) {\n\t\t\t\t\t\tthis._generators.set(name, generator);\n\t\t\t\t}\n\t\t}\n\t\tunregister(name) {\n\t\t\t\tif (this._generators.has(name)) {\n\t\t\t\t\t\tthis._generators.delete(name);\n\t\t\t\t}\n\t\t}\n\t\tisRegistered(name) {\n\t\t\t\treturn this._generators.has(name);\n\t\t}\n\t\tgenerateShaderDefinition(generator, name, key, options) {\n\t\t\t\tlet def = this.definitionsCache.get(key);\n\t\t\t\tif (!def) {\n\t\t\t\t\t\tlet lights;\n\t\t\t\t\t\tif (options.litOptions?.lights) {\n\t\t\t\t\t\t\t\tlights = options.litOptions.lights;\n\t\t\t\t\t\t\t\toptions.litOptions.lights = lights.map((l)=>{\n\t\t\t\t\t\t\t\t\t\tconst lcopy = l.clone ? l.clone() : l;\n\t\t\t\t\t\t\t\t\t\tlcopy.key = l.key;\n\t\t\t\t\t\t\t\t\t\treturn lcopy;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.storeNewProgram(name, options);\n\t\t\t\t\t\tif (options.litOptions?.lights) {\n\t\t\t\t\t\t\t\toptions.litOptions.lights = lights;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._precached) ;\n\t\t\t\t\t\tconst device = this._device;\n\t\t\t\t\t\tdef = generator.createShaderDefinition(device, options);\n\t\t\t\t\t\tdef.name = def.name ?? (options.pass ? `${name}-pass:${options.pass}` : name);\n\t\t\t\t\t\tthis.definitionsCache.set(key, def);\n\t\t\t\t}\n\t\t\t\treturn def;\n\t\t}\n\t\tgetCachedShader(key) {\n\t\t\t\treturn this.processedCache.get(key);\n\t\t}\n\t\tsetCachedShader(key, shader) {\n\t\t\t\tthis.processedCache.set(key, shader);\n\t\t}\n\t\tgetProgram(name, options, processingOptions, userMaterialId) {\n\t\t\t\tconst generator = this._generators.get(name);\n\t\t\t\tif (!generator) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst generationKeyString = generator.generateKey(options);\n\t\t\t\tconst generationKey = hashCode(generationKeyString);\n\t\t\t\tconst processingKeyString = processingOptions.generateKey(this._device);\n\t\t\t\tconst processingKey = hashCode(processingKeyString);\n\t\t\t\tconst totalKey = `${generationKey}#${processingKey}`;\n\t\t\t\tlet processedShader = this.getCachedShader(totalKey);\n\t\t\t\tif (!processedShader) {\n\t\t\t\t\t\tconst generatedShaderDef = this.generateShaderDefinition(generator, name, generationKey, options);\n\t\t\t\t\t\tlet passName = '';\n\t\t\t\t\t\tlet shaderPassInfo;\n\t\t\t\t\t\tif (options.pass !== undefined) {\n\t\t\t\t\t\t\t\tshaderPassInfo = ShaderPass.get(this._device).getByIndex(options.pass);\n\t\t\t\t\t\t\t\tpassName = `-${shaderPassInfo.name}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._device.fire('shader:generate', {\n\t\t\t\t\t\t\t\tuserMaterialId,\n\t\t\t\t\t\t\t\tshaderPassInfo,\n\t\t\t\t\t\t\t\tdefinition: generatedShaderDef\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst shaderDefinition = {\n\t\t\t\t\t\t\t\tname: `${generatedShaderDef.name}${passName}-proc`,\n\t\t\t\t\t\t\t\tattributes: generatedShaderDef.attributes,\n\t\t\t\t\t\t\t\tvshader: generatedShaderDef.vshader,\n\t\t\t\t\t\t\t\tvincludes: generatedShaderDef.vincludes,\n\t\t\t\t\t\t\t\tfincludes: generatedShaderDef.fincludes,\n\t\t\t\t\t\t\t\tfshader: generatedShaderDef.fshader,\n\t\t\t\t\t\t\t\tprocessingOptions: processingOptions,\n\t\t\t\t\t\t\t\tshaderLanguage: generatedShaderDef.shaderLanguage,\n\t\t\t\t\t\t\t\tmeshUniformBufferFormat: generatedShaderDef.meshUniformBufferFormat,\n\t\t\t\t\t\t\t\tmeshBindGroupFormat: generatedShaderDef.meshBindGroupFormat\n\t\t\t\t\t\t};\n\t\t\t\t\t\tprocessedShader = new Shader(this._device, shaderDefinition);\n\t\t\t\t\t\tthis.setCachedShader(totalKey, processedShader);\n\t\t\t\t}\n\t\t\t\treturn processedShader;\n\t\t}\n\t\tstoreNewProgram(name, options) {\n\t\t\t\tlet opt = {};\n\t\t\t\tif (name === 'standard') {\n\t\t\t\t\t\tconst defaultMat = this._getDefaultStdMatOptions(options.pass);\n\t\t\t\t\t\tfor(const p in options){\n\t\t\t\t\t\t\t\tif (options.hasOwnProperty(p) && defaultMat[p] !== options[p] || p === 'pass') {\n\t\t\t\t\t\t\t\t\t\topt[p] = options[p];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(const p in options.litOptions){\n\t\t\t\t\t\t\t\topt[p] = options.litOptions[p];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\topt = options;\n\t\t\t\t}\n\t\t\t\tthis._programsCollection.push(JSON.stringify({\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\toptions: opt\n\t\t\t\t}));\n\t\t}\n\t\tdumpPrograms() {\n\t\t\t\tlet text = 'let device = pc.app ? pc.app.graphicsDevice : pc.Application.getApplication().graphicsDevice;\\n';\n\t\t\t\ttext += 'let shaders = [';\n\t\t\t\tif (this._programsCollection[0]) {\n\t\t\t\t\t\ttext += `\\n\\t${this._programsCollection[0]}`;\n\t\t\t\t}\n\t\t\t\tfor(let i = 1; i < this._programsCollection.length; ++i){\n\t\t\t\t\t\ttext += `,\\n\\t${this._programsCollection[i]}`;\n\t\t\t\t}\n\t\t\t\ttext += '\\n];\\n';\n\t\t\t\ttext += 'pc.getProgramLibrary(device).precompile(shaders);\\n';\n\t\t\t\ttext += `if (pc.version != \\\"${version}\\\" || pc.revision != \\\"${revision}\\\")\\n`;\n\t\t\t\ttext += '\\tconsole.warn(\\\"precompile-shaders.js: engine version mismatch, rebuild shaders lib with current engine\\\");';\n\t\t\t\tconst element = document.createElement('a');\n\t\t\t\telement.setAttribute('href', `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`);\n\t\t\t\telement.setAttribute('download', 'precompile-shaders.js');\n\t\t\t\telement.style.display = 'none';\n\t\t\t\tdocument.body.appendChild(element);\n\t\t\t\telement.click();\n\t\t\t\tdocument.body.removeChild(element);\n\t\t}\n\t\tclearCache() {\n\t\t\t\tthis._isClearingCache = true;\n\t\t\t\tthis.processedCache.forEach((shader)=>{\n\t\t\t\t\t\tshader.destroy();\n\t\t\t\t});\n\t\t\t\tthis.processedCache.clear();\n\t\t\t\tthis._isClearingCache = false;\n\t\t}\n\t\tremoveFromCache(shader) {\n\t\t\t\tif (this._isClearingCache) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.processedCache.forEach((cachedShader, key)=>{\n\t\t\t\t\t\tif (shader === cachedShader) {\n\t\t\t\t\t\t\t\tthis.processedCache.delete(key);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t_getDefaultStdMatOptions(pass) {\n\t\t\t\tconst shaderPassInfo = ShaderPass.get(this._device).getByIndex(pass);\n\t\t\t\treturn pass === SHADER_PICK || pass === SHADER_PREPASS || shaderPassInfo.isShadow ? this._defaultStdMatOptionMin : this._defaultStdMatOption;\n\t\t}\n\t\tprecompile(cache) {\n\t\t\t\tif (cache) {\n\t\t\t\t\t\tconst shaders = new Array(cache.length);\n\t\t\t\t\t\tfor(let i = 0; i < cache.length; i++){\n\t\t\t\t\t\t\t\tif (cache[i].name === 'standard') {\n\t\t\t\t\t\t\t\t\t\tconst opt = cache[i].options;\n\t\t\t\t\t\t\t\t\t\tconst defaultMat = this._getDefaultStdMatOptions(opt.pass);\n\t\t\t\t\t\t\t\t\t\tfor(const p in defaultMat){\n\t\t\t\t\t\t\t\t\t\t\t\tif (defaultMat.hasOwnProperty(p) && opt[p] === undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\topt[p] = defaultMat[p];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tshaders[i] = this.getProgram(cache[i].name, cache[i].options);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._precached = true;\n\t\t}\n}\n\nconst mat4$1 = new Mat4();\nconst quat$2 = new Quat();\nconst aabb = new BoundingBox();\nconst aabb2 = new BoundingBox();\nconst debugColor = new Color(1, 1, 0, 0.4);\nconst SH_C0$2 = 0.28209479177387814;\nclass SplatIterator {\n\t\tconstructor(gsplatData, p, r, s, c){\n\t\t\t\tconst x = gsplatData.getProp('x');\n\t\t\t\tconst y = gsplatData.getProp('y');\n\t\t\t\tconst z = gsplatData.getProp('z');\n\t\t\t\tconst rx = gsplatData.getProp('rot_1');\n\t\t\t\tconst ry = gsplatData.getProp('rot_2');\n\t\t\t\tconst rz = gsplatData.getProp('rot_3');\n\t\t\t\tconst rw = gsplatData.getProp('rot_0');\n\t\t\t\tconst sx = gsplatData.getProp('scale_0');\n\t\t\t\tconst sy = gsplatData.getProp('scale_1');\n\t\t\t\tconst sz = gsplatData.getProp('scale_2');\n\t\t\t\tconst cr = gsplatData.getProp('f_dc_0');\n\t\t\t\tconst cg = gsplatData.getProp('f_dc_1');\n\t\t\t\tconst cb = gsplatData.getProp('f_dc_2');\n\t\t\t\tconst ca = gsplatData.getProp('opacity');\n\t\t\t\tconst sigmoid = (v)=>{\n\t\t\t\t\t\tif (v > 0) {\n\t\t\t\t\t\t\t\treturn 1 / (1 + Math.exp(-v));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst t = Math.exp(v);\n\t\t\t\t\t\treturn t / (1 + t);\n\t\t\t\t};\n\t\t\t\tthis.read = (i)=>{\n\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\tp.x = x[i];\n\t\t\t\t\t\t\t\tp.y = y[i];\n\t\t\t\t\t\t\t\tp.z = z[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\t\tr.set(rx[i], ry[i], rz[i], rw[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\ts.set(Math.exp(sx[i]), Math.exp(sy[i]), Math.exp(sz[i]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\tc.set(0.5 + cr[i] * SH_C0$2, 0.5 + cg[i] * SH_C0$2, 0.5 + cb[i] * SH_C0$2, sigmoid(ca[i]));\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n}\nconst calcSplatMat = (result, p, r)=>{\n\t\tquat$2.set(r.x, r.y, r.z, r.w).normalize();\n\t\tresult.setTRS(p, quat$2, Vec3.ONE);\n};\nclass GSplatData {\n\t\tconstructor(elements, comments = []){\n\t\t\t\tthis.elements = elements;\n\t\t\t\tthis.numSplats = this.getElement('vertex').count;\n\t\t\t\tthis.comments = comments;\n\t\t}\n\t\tstatic calcSplatAabb(result, p, r, s) {\n\t\t\t\tcalcSplatMat(mat4$1, p, r);\n\t\t\t\taabb.center.set(0, 0, 0);\n\t\t\t\taabb.halfExtents.set(s.x * 2, s.y * 2, s.z * 2);\n\t\t\t\tresult.setFromTransformedAabb(aabb, mat4$1);\n\t\t}\n\t\tgetProp(name, elementName = 'vertex') {\n\t\t\t\treturn this.getElement(elementName)?.properties.find((p)=>p.name === name)?.storage;\n\t\t}\n\t\tgetElement(name) {\n\t\t\t\treturn this.elements.find((e)=>e.name === name);\n\t\t}\n\t\taddProp(name, storage) {\n\t\t\t\tthis.getElement('vertex').properties.push({\n\t\t\t\t\t\ttype: 'float',\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tstorage,\n\t\t\t\t\t\tbyteSize: 4\n\t\t\t\t});\n\t\t}\n\t\tcreateIter(p, r, s, c) {\n\t\t\t\treturn new SplatIterator(this, p, r, s, c);\n\t\t}\n\t\tcalcAabb(result, pred) {\n\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\tlet first = true;\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst sx = this.getProp('scale_0');\n\t\t\t\tconst sy = this.getProp('scale_1');\n\t\t\t\tconst sz = this.getProp('scale_2');\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tif (pred && !pred(i)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst px = x[i];\n\t\t\t\t\t\tconst py = y[i];\n\t\t\t\t\t\tconst pz = z[i];\n\t\t\t\t\t\tconst scale = Math.max(sx[i], sy[i], sz[i]);\n\t\t\t\t\t\tif (!isFinite(px) || !isFinite(py) || !isFinite(pz) || !isFinite(scale)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst scaleVal = 2.0 * Math.exp(scale);\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\t\tmx = px - scaleVal;\n\t\t\t\t\t\t\t\tmy = py - scaleVal;\n\t\t\t\t\t\t\t\tmz = pz - scaleVal;\n\t\t\t\t\t\t\t\tMx = px + scaleVal;\n\t\t\t\t\t\t\t\tMy = py + scaleVal;\n\t\t\t\t\t\t\t\tMz = pz + scaleVal;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmx = Math.min(mx, px - scaleVal);\n\t\t\t\t\t\t\t\tmy = Math.min(my, py - scaleVal);\n\t\t\t\t\t\t\t\tmz = Math.min(mz, pz - scaleVal);\n\t\t\t\t\t\t\t\tMx = Math.max(Mx, px + scaleVal);\n\t\t\t\t\t\t\t\tMy = Math.max(My, py + scaleVal);\n\t\t\t\t\t\t\t\tMz = Math.max(Mz, pz + scaleVal);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!first) {\n\t\t\t\t\t\tresult.center.set((mx + Mx) * 0.5, (my + My) * 0.5, (mz + Mz) * 0.5);\n\t\t\t\t\t\tresult.halfExtents.set((Mx - mx) * 0.5, (My - my) * 0.5, (Mz - mz) * 0.5);\n\t\t\t\t}\n\t\t\t\treturn !first;\n\t\t}\n\t\tcalcAabbExact(result, pred) {\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst iter = this.createIter(p, r, s);\n\t\t\t\tlet first = true;\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tif (pred && !pred(i)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tif (first) {\n\t\t\t\t\t\t\t\tfirst = false;\n\t\t\t\t\t\t\t\tGSplatData.calcSplatAabb(result, p, r, s);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tGSplatData.calcSplatAabb(aabb2, p, r, s);\n\t\t\t\t\t\t\t\tresult.add(aabb2);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn !first;\n\t\t}\n\t\tgetCenters() {\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst result = new Float32Array(this.numSplats * 3);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tresult[i * 3 + 0] = x[i];\n\t\t\t\t\t\tresult[i * 3 + 1] = y[i];\n\t\t\t\t\t\tresult[i * 3 + 2] = z[i];\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tcalcFocalPoint(result, pred) {\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst sx = this.getProp('scale_0');\n\t\t\t\tconst sy = this.getProp('scale_1');\n\t\t\t\tconst sz = this.getProp('scale_2');\n\t\t\t\tresult.x = 0;\n\t\t\t\tresult.y = 0;\n\t\t\t\tresult.z = 0;\n\t\t\t\tlet sum = 0;\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tif (pred && !pred(i)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst px = x[i];\n\t\t\t\t\t\tconst py = y[i];\n\t\t\t\t\t\tconst pz = z[i];\n\t\t\t\t\t\tif (!isFinite(px) || !isFinite(py) || !isFinite(pz)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst weight = 1.0 / (1.0 + Math.exp(Math.max(sx[i], sy[i], sz[i])));\n\t\t\t\t\t\tresult.x += px * weight;\n\t\t\t\t\t\tresult.y += py * weight;\n\t\t\t\t\t\tresult.z += pz * weight;\n\t\t\t\t\t\tsum += weight;\n\t\t\t\t}\n\t\t\t\tresult.mulScalar(1 / sum);\n\t\t}\n\t\trenderWireframeBounds(scene, worldMat) {\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst min = new Vec3();\n\t\t\t\tconst max = new Vec3();\n\t\t\t\tconst iter = this.createIter(p, r, s);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tcalcSplatMat(mat4$1, p, r);\n\t\t\t\t\t\tmat4$1.mul2(worldMat, mat4$1);\n\t\t\t\t\t\tmin.set(s.x * -2, s.y * -2, s.z * -2);\n\t\t\t\t\t\tmax.set(s.x * 2.0, s.y * 2.0, s.z * 2.0);\n\t\t\t\t\t\tscene.immediate.drawWireAlignedBox(min, max, debugColor, true, scene.defaultDrawLayer, mat4$1);\n\t\t\t\t}\n\t\t}\n\t\tget isCompressed() {\n\t\t\t\treturn false;\n\t\t}\n\t\tget shBands() {\n\t\t\t\tconst numProps = ()=>{\n\t\t\t\t\t\tfor(let i = 0; i < 45; ++i){\n\t\t\t\t\t\t\t\tif (!this.getProp(`f_rest_${i}`)) {\n\t\t\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 45;\n\t\t\t\t};\n\t\t\t\tconst sizes = {\n\t\t\t\t\t\t9: 1,\n\t\t\t\t\t\t24: 2,\n\t\t\t\t\t\t45: 3\n\t\t\t\t};\n\t\t\t\treturn sizes[numProps()] ?? 0;\n\t\t}\n\t\tcalcMortonOrder() {\n\t\t\t\tconst calcMinMax = (arr)=>{\n\t\t\t\t\t\tlet min = arr[0];\n\t\t\t\t\t\tlet max = arr[0];\n\t\t\t\t\t\tfor(let i = 1; i < arr.length; i++){\n\t\t\t\t\t\t\t\tif (arr[i] < min) min = arr[i];\n\t\t\t\t\t\t\t\tif (arr[i] > max) max = arr[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tmin,\n\t\t\t\t\t\t\t\tmax\n\t\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t\tconst encodeMorton3 = (x, y, z)=>{\n\t\t\t\t\t\tconst Part1By2 = (x)=>{\n\t\t\t\t\t\t\t\tx &= 0x000003ff;\n\t\t\t\t\t\t\t\tx = (x ^ x << 16) & 0xff0000ff;\n\t\t\t\t\t\t\t\tx = (x ^ x << 8) & 0x0300f00f;\n\t\t\t\t\t\t\t\tx = (x ^ x << 4) & 0x030c30c3;\n\t\t\t\t\t\t\t\tx = (x ^ x << 2) & 0x09249249;\n\t\t\t\t\t\t\t\treturn x;\n\t\t\t\t\t\t};\n\t\t\t\t\t\treturn (Part1By2(z) << 2) + (Part1By2(y) << 1) + Part1By2(x);\n\t\t\t\t};\n\t\t\t\tconst x = this.getProp('x');\n\t\t\t\tconst y = this.getProp('y');\n\t\t\t\tconst z = this.getProp('z');\n\t\t\t\tconst { min: minX, max: maxX } = calcMinMax(x);\n\t\t\t\tconst { min: minY, max: maxY } = calcMinMax(y);\n\t\t\t\tconst { min: minZ, max: maxZ } = calcMinMax(z);\n\t\t\t\tconst sizeX = minX === maxX ? 0 : 1024 / (maxX - minX);\n\t\t\t\tconst sizeY = minY === maxY ? 0 : 1024 / (maxY - minY);\n\t\t\t\tconst sizeZ = minZ === maxZ ? 0 : 1024 / (maxZ - minZ);\n\t\t\t\tconst codes = new Map();\n\t\t\t\tfor(let i = 0; i < this.numSplats; i++){\n\t\t\t\t\t\tconst ix = Math.min(1023, Math.floor((x[i] - minX) * sizeX));\n\t\t\t\t\t\tconst iy = Math.min(1023, Math.floor((y[i] - minY) * sizeY));\n\t\t\t\t\t\tconst iz = Math.min(1023, Math.floor((z[i] - minZ) * sizeZ));\n\t\t\t\t\t\tconst code = encodeMorton3(ix, iy, iz);\n\t\t\t\t\t\tconst val = codes.get(code);\n\t\t\t\t\t\tif (val) {\n\t\t\t\t\t\t\t\tval.push(i);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcodes.set(code, [\n\t\t\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst keys = Array.from(codes.keys()).sort((a, b)=>a - b);\n\t\t\t\tconst indices = new Uint32Array(this.numSplats);\n\t\t\t\tlet idx = 0;\n\t\t\t\tfor(let i = 0; i < keys.length; ++i){\n\t\t\t\t\t\tconst val = codes.get(keys[i]);\n\t\t\t\t\t\tfor(let j = 0; j < val.length; ++j){\n\t\t\t\t\t\t\t\tindices[idx++] = val[j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn indices;\n\t\t}\n\t\treorder(order) {\n\t\t\t\tconst cache = new Map();\n\t\t\t\tconst getStorage = (size)=>{\n\t\t\t\t\t\tif (cache.has(size)) {\n\t\t\t\t\t\t\t\tconst buffer = cache.get(size);\n\t\t\t\t\t\t\t\tcache.delete(size);\n\t\t\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new ArrayBuffer(size);\n\t\t\t\t};\n\t\t\t\tconst returnStorage = (buffer)=>{\n\t\t\t\t\t\tcache.set(buffer.byteLength, buffer);\n\t\t\t\t};\n\t\t\t\tconst reorder = (data)=>{\n\t\t\t\t\t\tconst result = new data.constructor(getStorage(data.byteLength));\n\t\t\t\t\t\tfor(let i = 0; i < order.length; i++){\n\t\t\t\t\t\t\t\tresult[i] = data[order[i]];\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturnStorage(data.buffer);\n\t\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\tthis.elements.forEach((element)=>{\n\t\t\t\t\t\telement.properties.forEach((property)=>{\n\t\t\t\t\t\t\t\tif (property.storage) {\n\t\t\t\t\t\t\t\t\t\tproperty.storage = reorder(property.storage);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t\treorderData() {\n\t\t\t\tthis.reorder(this.calcMortonOrder());\n\t\t}\n}\n\nvar glslGsplatCopyToWorkBufferPS = `\n#define GSPLAT_CENTER_NOPROJ\n#include \"gsplatStructsVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\nuniform mat4 uTransform;\nuniform int uStartLine;\nuniform int uViewportWidth;\n#ifdef GSPLAT_LOD\n\tuniform usampler2D uIntervalsTexture;\n#endif\nuniform vec3 uColorMultiply;\nuniform int uActiveSplats;\nvoid main(void) {\n\tivec2 localFragCoords = ivec2(int(gl_FragCoord.x), int(gl_FragCoord.y) - uStartLine);\n\tint targetIndex = localFragCoords.y * uViewportWidth + localFragCoords.x;\n\tif (targetIndex >= uActiveSplats) {\n\t\tpcFragColor0 = vec4(0.0);\n\t\tpcFragColor1 = vec4(0.0);\n\t\tpcFragColor2 = vec4(0.0);\n\t\tpcFragColor3 = vec4(0.0);\n\t} else {\n\t\t#ifdef GSPLAT_LOD\n\t\t\tint intervalsSize = int(textureSize(uIntervalsTexture, 0).x);\n\t\t\tivec2 intervalUV = ivec2(targetIndex % intervalsSize, targetIndex / intervalsSize);\n\t\t\tuint originalIndex = texelFetch(uIntervalsTexture, intervalUV, 0).r;\n\t\t#else\n\t\t\tuint originalIndex = uint(targetIndex);\n\t\t#endif\n\t\t\n\t\t#if defined(GSPLAT_SOGS_DATA) || defined(GSPLAT_COMPRESSED_DATA)\n\t\t\tuint srcSize = uint(textureSize(packedTexture, 0).x);\n\t\t#else\n\t\t\tuint srcSize = uint(textureSize(splatColor, 0).x);\n\t\t#endif\n\t\t\n\t\tSplatSource source;\n\t\tsource.id = uint(originalIndex);\n\t\tsource.uv = ivec2(source.id % srcSize, source.id / srcSize);\n\t\tvec3 modelCenter = readCenter(source);\n\t\tmodelCenter = (uTransform * vec4(modelCenter, 1.0)).xyz;\n\t\tSplatCenter center;\n\t\tinitCenter(modelCenter, center);\n\t\tvec3 covA, covB;\n\t\treadCovariance(source, covA, covB);\n\t\tmat3 C = mat3(\n\t\t\tcovA.x, covA.y, covA.z,\n\t\t\tcovA.y, covB.x, covB.y,\n\t\t\tcovA.z, covB.y, covB.z\n\t\t);\n\t\tmat3 linear = mat3(uTransform);\n\t\tmat3 Ct = linear * C * transpose(linear);\n\t\tcovA = Ct[0];\n\t\tcovB = vec3(Ct[1][1], Ct[1][2], Ct[2][2]);\n\t\tvec4 color = readColor(source);\n\t\t#if SH_BANDS > 0\n\t\t\tvec3 dir = normalize(center.view * mat3(center.modelView));\n\t\t\tvec3 sh[SH_COEFFS];\n\t\t\tfloat scale;\n\t\t\treadSHData(source, sh, scale);\n\t\t\tcolor.xyz += evalSH(sh, dir) * scale;\n\t\t#endif\n\t\tcolor.xyz *= uColorMultiply;\n\t\tpcFragColor0 = color;\n\t\tpcFragColor1 = vec4(modelCenter, 1.0);\n\t\tpcFragColor2 = vec4(covA, 1.0);\n\t\tpcFragColor3 = vec4(covB, 1.0);\n\t}\n}\n`;\n\nvar wgslGsplatCopyToWorkBufferPS = `\n#define GSPLAT_CENTER_NOPROJ\n#include \"gsplatStructsVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\nuniform uTransform: mat4x4f;\nuniform uStartLine: i32;\nuniform uViewportWidth: i32;\n#ifdef GSPLAT_LOD\n\tvar uIntervalsTexture: texture_2d<u32>;\n#endif\nuniform uColorMultiply: vec3f;\nuniform uActiveSplats: i32;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\t\n\tlet localFragCoords = vec2i(i32(input.position.x), i32(input.position.y) - uniform.uStartLine);\n\tlet targetIndex = localFragCoords.y * uniform.uViewportWidth + localFragCoords.x;\n\t\n\tif (targetIndex >= uniform.uActiveSplats) {\n\t\toutput.color = vec4f(0.0);\n\t\toutput.color1 = vec4f(0.0);\n\t\toutput.color2 = vec4f(0.0);\n\t\toutput.color3 = vec4f(0.0);\n\t} else {\n\t\t#ifdef GSPLAT_LOD\n\t\t\tlet intervalsSize = i32(textureDimensions(uIntervalsTexture, 0).x);\n\t\t\tlet intervalUV = vec2i(targetIndex % intervalsSize, targetIndex / intervalsSize);\n\t\t\tlet originalIndex = textureLoad(uIntervalsTexture, intervalUV, 0).r;\n\t\t#else\n\t\t\tlet originalIndex = targetIndex;\n\t\t#endif\n\t\t\n\t\tvar srcSize: u32;\n\t\t#if defined(GSPLAT_SOGS_DATA) || defined(GSPLAT_COMPRESSED_DATA)\n\t\t\tsrcSize = u32(textureDimensions(packedTexture, 0).x);\n\t\t#else\n\t\t\tsrcSize = u32(textureDimensions(splatColor, 0).x);\n\t\t#endif\n\t\t\n\t\tvar source: SplatSource;\n\t\tsource.id = u32(originalIndex);\n\t\tsource.uv = vec2i(i32(source.id % srcSize), i32(source.id / srcSize));\n\t\tvar modelCenter = readCenter(&source);\n\t\tmodelCenter = (uniform.uTransform * vec4f(modelCenter, 1.0)).xyz;\n\t\tvar center: SplatCenter;\n\t\tinitCenter(modelCenter, &center);\n\t\tvar covA: vec3f;\n\t\tvar covB: vec3f;\n\t\treadCovariance(&source, &covA, &covB);\n\t\tlet C = mat3x3f(\n\t\t\tvec3f(covA.x, covA.y, covA.z),\n\t\t\tvec3f(covA.y, covB.x, covB.y),\n\t\t\tvec3f(covA.z, covB.y, covB.z)\n\t\t);\n\t\tlet linear = mat3x3f(uniform.uTransform[0].xyz, uniform.uTransform[1].xyz, uniform.uTransform[2].xyz);\n\t\tlet Ct = linear * C * transpose(linear);\n\t\tcovA = Ct[0];\n\t\tcovB = vec3f(Ct[1][1], Ct[1][2], Ct[2][2]);\n\t\tvar color = readColor(&source);\n\t\t#if SH_BANDS > 0\n\t\t\tlet dir = normalize(center.view * mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz));\n\t\t\tvar sh: array<vec3f, SH_COEFFS>;\n\t\t\tvar scale: f32;\n\t\t\treadSHData(&source, &sh, &scale);\n\t\t\tcolor = vec4f(color.xyz + evalSH(&sh, dir) * scale, color.w);\n\t\t#endif\n\t\tcolor = vec4f(color.xyz * uniform.uColorMultiply, color.w);\n\t\toutput.color = color;\n\t\toutput.color1 = vec4f(modelCenter, 1.0);\n\t\toutput.color2 = vec4f(covA, 1.0);\n\t\toutput.color3 = vec4f(covB, 1.0);\n\t}\n\t\n\treturn output;\n}\n`;\n\nlet id$1 = 0;\nconst tempMap = new Map();\nclass WorkBufferRenderInfo {\n\t\tconstructor(device, key, material){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.material = material;\n\t\t\t\tconst clonedDefines = new Map(material.defines);\n\t\t\t\tconst shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\tuniqueName: `SplatCopyToWorkBuffer:${key}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexDefines: clonedDefines,\n\t\t\t\t\t\tfragmentDefines: clonedDefines,\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslGsplatCopyToWorkBufferPS,\n\t\t\t\t\t\tfragmentWGSL: wgslGsplatCopyToWorkBufferPS\n\t\t\t\t});\n\t\t\t\tthis.quadRender = new QuadRender(shader);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.material?.destroy();\n\t\t\t\tthis.quadRender?.destroy();\n\t\t}\n}\nclass GSplatResourceBase {\n\t\tconstructor(device, gsplatData){\n\t\t\t\tthis.id = id$1++;\n\t\t\t\tthis.workBufferRenderInfos = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.gsplatData = gsplatData;\n\t\t\t\tthis.centers = gsplatData.getCenters();\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tgsplatData.calcAabb(this.aabb);\n\t\t\t\tthis.mesh = GSplatResourceBase.createMesh(device);\n\t\t\t\tthis.instanceIndices = GSplatResourceBase.createInstanceIndices(device, gsplatData.numSplats);\n\t\t\t\tthis.mesh.incRefCount();\n\t\t\t\tthis.mesh.aabb.copy(this.aabb);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.mesh?.destroy();\n\t\t\t\tthis.instanceIndices?.destroy();\n\t\t\t\tthis.workBufferRenderInfos.forEach((info)=>info.destroy());\n\t\t\t\tthis.workBufferRenderInfos.clear();\n\t\t}\n\t\tgetWorkBufferRenderInfo(useIntervals) {\n\t\t\t\tthis.configureMaterialDefines(tempMap);\n\t\t\t\tif (useIntervals) tempMap.set('GSPLAT_LOD', '');\n\t\t\t\tconst key = Array.from(tempMap.entries()).map(([k, v])=>`${k}=${v}`).join(';');\n\t\t\t\tlet info = this.workBufferRenderInfos.get(key);\n\t\t\t\tif (!info) {\n\t\t\t\t\t\tconst material = new ShaderMaterial();\n\t\t\t\t\t\tthis.configureMaterial(material);\n\t\t\t\t\t\ttempMap.forEach((v, k)=>material.setDefine(k, v));\n\t\t\t\t\t\tinfo = new WorkBufferRenderInfo(this.device, key, material);\n\t\t\t\t\t\tthis.workBufferRenderInfos.set(key, info);\n\t\t\t\t}\n\t\t\t\ttempMap.clear();\n\t\t\t\treturn info;\n\t\t}\n\t\tstatic createMesh(device) {\n\t\t\t\tconst splatInstanceSize = GSplatResourceBase.instanceSize;\n\t\t\t\tconst meshPositions = new Float32Array(12 * splatInstanceSize);\n\t\t\t\tconst meshIndices = new Uint32Array(6 * splatInstanceSize);\n\t\t\t\tfor(let i = 0; i < splatInstanceSize; ++i){\n\t\t\t\t\t\tmeshPositions.set([\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\ti,\n\t\t\t\t\t\t\t\t-1,\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\ti\n\t\t\t\t\t\t], i * 12);\n\t\t\t\t\t\tconst b = i * 4;\n\t\t\t\t\t\tmeshIndices.set([\n\t\t\t\t\t\t\t\t0 + b,\n\t\t\t\t\t\t\t\t1 + b,\n\t\t\t\t\t\t\t\t2 + b,\n\t\t\t\t\t\t\t\t0 + b,\n\t\t\t\t\t\t\t\t2 + b,\n\t\t\t\t\t\t\t\t3 + b\n\t\t\t\t\t\t], i * 6);\n\t\t\t\t}\n\t\t\t\tconst mesh = new Mesh(device);\n\t\t\t\tmesh.setPositions(meshPositions, 3);\n\t\t\t\tmesh.setIndices(meshIndices);\n\t\t\t\tmesh.update();\n\t\t\t\treturn mesh;\n\t\t}\n\t\tstatic createInstanceIndices(device, splatCount) {\n\t\t\t\tconst splatInstanceSize = GSplatResourceBase.instanceSize;\n\t\t\t\tconst numSplats = Math.ceil(splatCount / splatInstanceSize) * splatInstanceSize;\n\t\t\t\tconst numSplatInstances = numSplats / splatInstanceSize;\n\t\t\t\tconst indexData = new Uint32Array(numSplatInstances);\n\t\t\t\tfor(let i = 0; i < numSplatInstances; ++i){\n\t\t\t\t\t\tindexData[i] = i * splatInstanceSize;\n\t\t\t\t}\n\t\t\t\tconst vertexFormat = new VertexFormat(device, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_ATTR13,\n\t\t\t\t\t\t\t\tcomponents: 1,\n\t\t\t\t\t\t\t\ttype: TYPE_UINT32,\n\t\t\t\t\t\t\t\tasInt: true\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tconst instanceIndices = new VertexBuffer(device, vertexFormat, numSplatInstances, {\n\t\t\t\t\t\tusage: BUFFER_STATIC,\n\t\t\t\t\t\tdata: indexData.buffer\n\t\t\t\t});\n\t\t\t\treturn instanceIndices;\n\t\t}\n\t\tstatic get instanceSize() {\n\t\t\t\treturn 128;\n\t\t}\n\t\tget numSplats() {\n\t\t\t\treturn this.gsplatData.numSplats;\n\t\t}\n\t\tconfigureMaterial(material) {}\n\t\tconfigureMaterialDefines(defines) {}\n\t\tevalTextureSize(count) {\n\t\t\t\treturn Vec2.ZERO;\n\t\t}\n\t\tcreateTexture(name, format, size, data) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: size.x,\n\t\t\t\t\t\theight: size.y,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t...data ? {\n\t\t\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t} : {}\n\t\t\t\t});\n\t\t}\n\t\tinstantiate() {}\n}\n\nconst getSHData = (gsplatData, numCoeffs)=>{\n\t\tconst result = [];\n\t\tfor(let i = 0; i < numCoeffs; ++i){\n\t\t\t\tresult.push(gsplatData.getProp(`f_rest_${i}`));\n\t\t}\n\t\treturn result;\n};\nclass GSplatResource extends GSplatResourceBase {\n\t\tconstructor(device, gsplatData){\n\t\t\t\tsuper(device, gsplatData);\n\t\t\t\tconst numSplats = gsplatData.numSplats;\n\t\t\t\tconst size = this.evalTextureSize(numSplats);\n\t\t\t\tthis.colorTexture = this.createTexture('splatColor', PIXELFORMAT_RGBA16F, size);\n\t\t\t\tthis.transformATexture = this.createTexture('transformA', PIXELFORMAT_RGBA32U, size);\n\t\t\t\tthis.transformBTexture = this.createTexture('transformB', PIXELFORMAT_RGBA16F, size);\n\t\t\t\tthis.updateColorData(gsplatData);\n\t\t\t\tthis.updateTransformData(gsplatData);\n\t\t\t\tthis.shBands = gsplatData.shBands;\n\t\t\t\tif (this.shBands > 0) {\n\t\t\t\t\t\tthis.sh1to3Texture = this.createTexture('splatSH_1to3', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\tif (this.shBands > 1) {\n\t\t\t\t\t\t\t\tthis.sh4to7Texture = this.createTexture('splatSH_4to7', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\t\t\tif (this.shBands > 2) {\n\t\t\t\t\t\t\t\t\t\tthis.sh8to11Texture = this.createTexture('splatSH_8to11', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\t\t\t\t\tthis.sh12to15Texture = this.createTexture('splatSH_12to15', PIXELFORMAT_RGBA32U, size);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.sh8to11Texture = this.createTexture('splatSH_8to11', PIXELFORMAT_R32U, size);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.updateSHData(gsplatData);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.colorTexture?.destroy();\n\t\t\t\tthis.transformATexture?.destroy();\n\t\t\t\tthis.transformBTexture?.destroy();\n\t\t\t\tthis.sh1to3Texture?.destroy();\n\t\t\t\tthis.sh4to7Texture?.destroy();\n\t\t\t\tthis.sh8to11Texture?.destroy();\n\t\t\t\tthis.sh12to15Texture?.destroy();\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconfigureMaterialDefines(defines) {\n\t\t\t\tdefines.set('SH_BANDS', this.shBands);\n\t\t}\n\t\tconfigureMaterial(material) {\n\t\t\t\tthis.configureMaterialDefines(material.defines);\n\t\t\t\tmaterial.setParameter('splatColor', this.colorTexture);\n\t\t\t\tmaterial.setParameter('transformA', this.transformATexture);\n\t\t\t\tmaterial.setParameter('transformB', this.transformBTexture);\n\t\t\t\tif (this.sh1to3Texture) material.setParameter('splatSH_1to3', this.sh1to3Texture);\n\t\t\t\tif (this.sh4to7Texture) material.setParameter('splatSH_4to7', this.sh4to7Texture);\n\t\t\t\tif (this.sh8to11Texture) material.setParameter('splatSH_8to11', this.sh8to11Texture);\n\t\t\t\tif (this.sh12to15Texture) material.setParameter('splatSH_12to15', this.sh12to15Texture);\n\t\t}\n\t\tevalTextureSize(count) {\n\t\t\t\tconst width = Math.ceil(Math.sqrt(count));\n\t\t\t\tconst height = Math.ceil(count / width);\n\t\t\t\treturn new Vec2(width, height);\n\t\t}\n\t\tupdateColorData(gsplatData) {\n\t\t\t\tconst texture = this.colorTexture;\n\t\t\t\tif (!texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tconst data = texture.lock();\n\t\t\t\tconst cr = gsplatData.getProp('f_dc_0');\n\t\t\t\tconst cg = gsplatData.getProp('f_dc_1');\n\t\t\t\tconst cb = gsplatData.getProp('f_dc_2');\n\t\t\t\tconst ca = gsplatData.getProp('opacity');\n\t\t\t\tconst SH_C0 = 0.28209479177387814;\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\tconst r = cr[i] * SH_C0 + 0.5;\n\t\t\t\t\t\tconst g = cg[i] * SH_C0 + 0.5;\n\t\t\t\t\t\tconst b = cb[i] * SH_C0 + 0.5;\n\t\t\t\t\t\tconst a = 1 / (1 + Math.exp(-ca[i]));\n\t\t\t\t\t\tdata[i * 4 + 0] = float2Half(r);\n\t\t\t\t\t\tdata[i * 4 + 1] = float2Half(g);\n\t\t\t\t\t\tdata[i * 4 + 2] = float2Half(b);\n\t\t\t\t\t\tdata[i * 4 + 3] = float2Half(a);\n\t\t\t\t}\n\t\t\t\ttexture.unlock();\n\t\t}\n\t\tupdateTransformData(gsplatData) {\n\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\tif (!this.transformATexture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst dataA = this.transformATexture.lock();\n\t\t\t\tconst dataAFloat32 = new Float32Array(dataA.buffer);\n\t\t\t\tconst dataB = this.transformBTexture.lock();\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst iter = gsplatData.createIter(p, r, s);\n\t\t\t\tfor(let i = 0; i < this.numSplats; i++){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tr.normalize();\n\t\t\t\t\t\tif (r.w < 0) {\n\t\t\t\t\t\t\t\tr.mulScalar(-1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdataAFloat32[i * 4 + 0] = p.x;\n\t\t\t\t\t\tdataAFloat32[i * 4 + 1] = p.y;\n\t\t\t\t\t\tdataAFloat32[i * 4 + 2] = p.z;\n\t\t\t\t\t\tdataA[i * 4 + 3] = float2Half(r.x) | float2Half(r.y) << 16;\n\t\t\t\t\t\tdataB[i * 4 + 0] = float2Half(s.x);\n\t\t\t\t\t\tdataB[i * 4 + 1] = float2Half(s.y);\n\t\t\t\t\t\tdataB[i * 4 + 2] = float2Half(s.z);\n\t\t\t\t\t\tdataB[i * 4 + 3] = float2Half(r.z);\n\t\t\t\t}\n\t\t\t\tthis.transformATexture.unlock();\n\t\t\t\tthis.transformBTexture.unlock();\n\t\t}\n\t\tupdateSHData(gsplatData) {\n\t\t\t\tconst sh1to3Data = this.sh1to3Texture.lock();\n\t\t\t\tconst sh4to7Data = this.sh4to7Texture?.lock();\n\t\t\t\tconst sh8to11Data = this.sh8to11Texture?.lock();\n\t\t\t\tconst sh12to15Data = this.sh12to15Texture?.lock();\n\t\t\t\tconst numCoeffs = {\n\t\t\t\t\t\t1: 3,\n\t\t\t\t\t\t2: 8,\n\t\t\t\t\t\t3: 15\n\t\t\t\t}[this.shBands];\n\t\t\t\tconst src = getSHData(gsplatData, numCoeffs * 3);\n\t\t\t\tconst t11 = (1 << 11) - 1;\n\t\t\t\tconst t10 = (1 << 10) - 1;\n\t\t\t\tconst float32 = new Float32Array(1);\n\t\t\t\tconst uint32 = new Uint32Array(float32.buffer);\n\t\t\t\tconst c = new Array(numCoeffs * 3).fill(0);\n\t\t\t\tfor(let i = 0; i < gsplatData.numSplats; ++i){\n\t\t\t\t\t\tfor(let j = 0; j < numCoeffs; ++j){\n\t\t\t\t\t\t\t\tc[j * 3] = src[j][i];\n\t\t\t\t\t\t\t\tc[j * 3 + 1] = src[j + numCoeffs][i];\n\t\t\t\t\t\t\t\tc[j * 3 + 2] = src[j + numCoeffs * 2][i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet max = c[0];\n\t\t\t\t\t\tfor(let j = 1; j < numCoeffs * 3; ++j){\n\t\t\t\t\t\t\t\tmax = Math.max(max, Math.abs(c[j]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (max === 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let j = 0; j < numCoeffs; ++j){\n\t\t\t\t\t\t\t\tc[j * 3 + 0] = Math.max(0, Math.min(t11, Math.floor((c[j * 3 + 0] / max * 0.5 + 0.5) * t11 + 0.5)));\n\t\t\t\t\t\t\t\tc[j * 3 + 1] = Math.max(0, Math.min(t10, Math.floor((c[j * 3 + 1] / max * 0.5 + 0.5) * t10 + 0.5)));\n\t\t\t\t\t\t\t\tc[j * 3 + 2] = Math.max(0, Math.min(t11, Math.floor((c[j * 3 + 2] / max * 0.5 + 0.5) * t11 + 0.5)));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfloat32[0] = max;\n\t\t\t\t\t\tsh1to3Data[i * 4 + 0] = uint32[0];\n\t\t\t\t\t\tsh1to3Data[i * 4 + 1] = c[0] << 21 | c[1] << 11 | c[2];\n\t\t\t\t\t\tsh1to3Data[i * 4 + 2] = c[3] << 21 | c[4] << 11 | c[5];\n\t\t\t\t\t\tsh1to3Data[i * 4 + 3] = c[6] << 21 | c[7] << 11 | c[8];\n\t\t\t\t\t\tif (this.shBands > 1) {\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 0] = c[9] << 21 | c[10] << 11 | c[11];\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 1] = c[12] << 21 | c[13] << 11 | c[14];\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 2] = c[15] << 21 | c[16] << 11 | c[17];\n\t\t\t\t\t\t\t\tsh4to7Data[i * 4 + 3] = c[18] << 21 | c[19] << 11 | c[20];\n\t\t\t\t\t\t\t\tif (this.shBands > 2) {\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 0] = c[21] << 21 | c[22] << 11 | c[23];\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 1] = c[24] << 21 | c[25] << 11 | c[26];\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 2] = c[27] << 21 | c[28] << 11 | c[29];\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i * 4 + 3] = c[30] << 21 | c[31] << 11 | c[32];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 0] = c[33] << 21 | c[34] << 11 | c[35];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 1] = c[36] << 21 | c[37] << 11 | c[38];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 2] = c[39] << 21 | c[40] << 11 | c[41];\n\t\t\t\t\t\t\t\t\t\tsh12to15Data[i * 4 + 3] = c[42] << 21 | c[43] << 11 | c[44];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsh8to11Data[i] = c[21] << 21 | c[22] << 11 | c[23];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.sh1to3Texture.unlock();\n\t\t\t\tthis.sh4to7Texture?.unlock();\n\t\t\t\tthis.sh8to11Texture?.unlock();\n\t\t\t\tthis.sh12to15Texture?.unlock();\n\t\t}\n}\n\nconst vertexGLSL = `\n\tattribute vec2 vertex_position;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.0, 1.0);\n\t}\n`;\nconst fragmentGLSL = `\n\t#include \"gsplatEvalSHVS\"\n\tvec4 packRgb(vec3 v) {\n\t\tuvec3 vb = uvec3(clamp(v, vec3(0.0), vec3(1.0)) * vec3(2047.0, 2047.0, 1023.0));\n\t\tuint bits = (vb.x << 21) | (vb.y << 10) | vb.z;\n\t\treturn vec4((uvec4(bits) >> uvec4(24, 16, 8, 0)) & uvec4(0xff)) / vec4(255.0);\n\t}\n\tuniform mediump vec3 dir;\n\tuniform mediump sampler2D centroids;\n\tuniform mediump float shN_mins;\n\tuniform mediump float shN_maxs;\n\tvoid main(void) {\n\t\tivec2 uv = ivec2(gl_FragCoord.xy) * ivec2(SH_COEFFS, 1);\n\t\tmediump vec3 coefficients[SH_COEFFS];\n\t\tfor (int i = 0; i < SH_COEFFS; i++) {\n\t\t\tvec3 s = texelFetch(centroids, ivec2(uv.x + i, uv.y), 0).xyz;\n\t\t\tcoefficients[i] = mix(vec3(shN_mins), vec3(shN_maxs), s);\n\t\t}\n\t\tgl_FragColor = packRgb(evalSH(coefficients, dir) * 0.25 + 0.5);\n\t}\n`;\nconst vertexWGSL = `\n\tattribute vertex_position: vec2f;\n\t@vertex\n\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(vertex_position, 0.0, 1.0);\n\t\treturn output;\n\t}\n`;\nconst fragmentWGSL = `\n\t#include \"gsplatEvalSHVS\"\n\tfn packRgb(v: vec3f) -> vec4f {\n\t\tlet vb = vec3u(clamp(v, vec3f(0.0), vec3f(1.0)) * vec3f(2047.0, 2047.0, 1023.0));\n\t\tlet bits = dot(vb, vec3u(1 << 21, 1 << 10, 1));\n\t\treturn vec4f((vec4u(bits) >> vec4u(24, 16, 8, 0)) & vec4u(0xff)) / vec4f(255.0);\n\t}\n\tuniform dir: vec3f;\n\tuniform shN_mins: f32;\n\tuniform shN_maxs: f32;\n\tvar centroids: texture_2d<f32>;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tvar uv = vec2i(input.position.xy) * vec2i(SH_COEFFS, 1);\n\t\tvar coefficients: array<vec3f, SH_COEFFS>;\n\t\tfor (var i: i32 = 0; i < SH_COEFFS; i++) {\n\t\t\tlet s: vec3f = textureLoad(centroids, vec2i(uv.x + i, uv.y), 0).xyz;\n\t\t\tcoefficients[i] = mix(vec3f(uniform.shN_mins), vec3f(uniform.shN_maxs), s);\n\t\t}\n\t\toutput.color = packRgb(evalSH(&coefficients, uniform.dir) * 0.25 + 0.5);\n\t\treturn output;\n\t}\n`;\nconst gsplatSogsColorGLSL = `\n\tuniform mediump sampler2D sh0;\n\tuniform highp sampler2D sh_labels;\n\tuniform mediump sampler2D sh_result;\n\tuniform vec4 sh0_mins;\n\tuniform vec4 sh0_maxs;\n\tfloat SH_C0 = 0.28209479177387814;\n\tvec3 unpackRgb(vec4 v) {\n\t\tuvec4 uv = uvec4(v * 255.0);\n\t\tuint bits = (uv.x << 24) | (uv.y << 16) | (uv.z << 8) | uv.w;\n\t\tuvec3 vb = (uvec3(bits) >> uvec3(21, 10, 0)) & uvec3(0x7ffu, 0x7ffu, 0x3ffu);\n\t\treturn vec3(vb) / vec3(2047.0, 2047.0, 1023.0);\n\t}\n\tvec4 readColor(in SplatSource source) {\n\t\tvec4 baseSample = mix(sh0_mins, sh0_maxs, texelFetch(sh0, source.uv, 0));\n\t\tvec4 base = vec4(vec3(0.5) + baseSample.xyz * SH_C0, 1.0 / (1.0 + exp(-baseSample.w)));\n\t\tivec2 labelSample = ivec2(texelFetch(sh_labels, source.uv, 0).xy * 255.0);\n\t\tint n = labelSample.x + labelSample.y * 256;\n\t\tvec4 shSample = texelFetch(sh_result, ivec2(n % 64, n / 64), 0);\n\t\tvec3 sh = (unpackRgb(shSample) - vec3(0.5)) * 4.0;\n\t\treturn vec4(base.xyz + sh, base.w);\n\t}\n`;\nconst gsplatSogsColorWGSL = `\n\tvar sh0: texture_2d<f32>;\n\tvar sh_labels: texture_2d<f32>;\n\tvar sh_result: texture_2d<f32>;\n\tuniform sh0_mins: vec4f;\n\tuniform sh0_maxs: vec4f;\n\tconst SH_C0: f32 = 0.28209479177387814;\n\tfn unpackRgb(v: vec4f) -> vec3f {\n\t\tlet bits = dot(vec4u(v * 255.0), vec4u(1u << 24, 1u << 16, 1u << 8, 1u));\n\t\tlet vb = (vec3u(bits) >> vec3u(21, 10, 0)) & vec3u(0x7ffu, 0x7ffu, 0x3ffu);\n\t\treturn vec3f(vb) / vec3f(2047.0, 2047.0, 1023.0);\n\t}\n\tfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\t\tlet baseSample: vec4f = mix(uniform.sh0_mins, uniform.sh0_maxs, textureLoad(sh0, source.uv, 0));\n\t\tlet base = vec4f(vec3f(0.5) + baseSample.xyz * SH_C0, 1.0 / (1.0 + exp(-baseSample.w)));\n\t\tlet labelSample: vec2i = vec2i(textureLoad(sh_labels, source.uv, 0).xy * 255.0);\n\t\tlet n = labelSample.x + labelSample.y * 256;\n\t\tlet shSample: vec4f = textureLoad(sh_result, vec2i(n % 64, n / 64), 0);\n\t\tlet sh: vec3f = (unpackRgb(shSample) - vec3f(0.5)) * 4.0;\n\t\treturn vec4f(base.xyz + sh, base.w);\n\t}\n`;\nconst resolve$1 = (scope, values)=>{\n\t\tfor(const key in values){\n\t\t\t\tscope.resolve(key).setValue(values[key]);\n\t\t}\n};\nclass CustomRenderPass extends RenderPass {\n\t\texecute() {\n\t\t\t\tthis.executeCallback?.();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.executeCallback = null;\n\t\t}\n}\nconst invModelMat$1 = new Mat4();\nconst dir$3 = new Vec3();\nclass GSplatResolveSH {\n\t\tconstructor(device, gsplatInstance){\n\t\t\t\tthis.prevDir = new Vec3();\n\t\t\t\tthis.updateMode = 'enable';\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.gsplatInstance = gsplatInstance;\n\t\t\t\tconst { resource } = gsplatInstance;\n\t\t\t\tconst includes = new Map(ShaderChunks.get(device, device.isWebGPU ? 'wgsl' : 'glsl'));\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'gsplatResolveSH',\n\t\t\t\t\t\tvertexGLSL,\n\t\t\t\t\t\tfragmentGLSL,\n\t\t\t\t\t\tvertexWGSL,\n\t\t\t\t\t\tfragmentWGSL,\n\t\t\t\t\t\tvertexIncludes: includes,\n\t\t\t\t\t\tfragmentIncludes: includes,\n\t\t\t\t\t\tfragmentDefines: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'SH_BANDS',\n\t\t\t\t\t\t\t\t\t\tresource.gsplatData.shBands.toString()\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.texture = resource.createTexture('centroids', PIXELFORMAT_RGBA8, new Vec2(64, 1024));\n\t\t\t\tthis.renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.texture,\n\t\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t\tthis.renderPass = new CustomRenderPass(device);\n\t\t\t\tthis.renderPass.init(this.renderTarget, {});\n\t\t\t\tthis.renderPass.colorOps.clear = true;\n\t\t\t\tthis.quadRender = new QuadRender(this.shader);\n\t\t\t\tconst { material } = gsplatInstance;\n\t\t\t\tmaterial.setDefine('SH_BANDS', '0');\n\t\t\t\tconst { shaderChunks } = material;\n\t\t\t\tshaderChunks.glsl.set('gsplatSogsColorVS', gsplatSogsColorGLSL);\n\t\t\t\tshaderChunks.wgsl.set('gsplatSogsColorVS', gsplatSogsColorWGSL);\n\t\t\t\tmaterial.update();\n\t\t\t\tdevice.scope.resolve('sh_result').setValue(this.texture);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst { gsplatInstance } = this;\n\t\t\t\tconst { material } = gsplatInstance;\n\t\t\t\tmaterial.setDefine('SH_BANDS', gsplatInstance.resource.gsplatData.shBands.toString());\n\t\t\t\tconst { shaderChunks } = material;\n\t\t\t\tshaderChunks.glsl.delete('gsplatSogsColorVS');\n\t\t\t\tshaderChunks.wgsl.delete('gsplatSogsColorVS');\n\t\t\t\tmaterial.update();\n\t\t\t\tthis.quadRender.destroy();\n\t\t\t\tthis.renderPass.destroy();\n\t\t\t\tthis.renderTarget.destroy();\n\t\t\t\tthis.texture.destroy();\n\t\t\t\tthis.shader.destroy();\n\t\t}\n\t\trender(camera, modelMat) {\n\t\t\t\tconst { prevDir, updateMode } = this;\n\t\t\t\tif (updateMode === 'disable') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tinvModelMat$1.invert(modelMat);\n\t\t\t\tinvModelMat$1.transformVector(camera.forward, dir$3);\n\t\t\t\tdir$3.normalize();\n\t\t\t\tif (updateMode === 'enable' && dir$3.equalsApprox(prevDir, 1e-3)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tprevDir.copy(dir$3);\n\t\t\t\tconst execute = ()=>{\n\t\t\t\t\t\tconst { device } = this;\n\t\t\t\t\t\tconst { sh_centroids, meta } = this.gsplatInstance.resource.gsplatData;\n\t\t\t\t\t\tresolve$1(device.scope, {\n\t\t\t\t\t\t\t\tdir: dir$3.toArray(),\n\t\t\t\t\t\t\t\tcentroids: sh_centroids,\n\t\t\t\t\t\t\t\tshN_mins: meta.shN.mins,\n\t\t\t\t\t\t\t\tshN_maxs: meta.shN.maxs\n\t\t\t\t\t\t});\n\t\t\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\tthis.quadRender.render();\n\t\t\t\t};\n\t\t\t\tthis.renderPass.executeCallback = execute;\n\t\t\t\tthis.renderPass.render();\n\t\t}\n}\n\nfunction SortWorker() {\n\t\tconst myself = typeof self !== 'undefined' && self || require('node:worker_threads').parentPort;\n\t\tlet order;\n\t\tlet centers;\n\t\tlet chunks;\n\t\tlet mapping;\n\t\tlet cameraPosition;\n\t\tlet cameraDirection;\n\t\tlet forceUpdate = false;\n\t\tconst lastCameraPosition = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tconst lastCameraDirection = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tconst boundMin = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tconst boundMax = {\n\t\t\t\tx: 0,\n\t\t\t\ty: 0,\n\t\t\t\tz: 0\n\t\t};\n\t\tlet distances;\n\t\tlet countBuffer;\n\t\tconst numBins = 32;\n\t\tconst binCount = new Array(numBins).fill(0);\n\t\tconst binBase = new Array(numBins).fill(0);\n\t\tconst binDivider = new Array(numBins).fill(0);\n\t\tconst binarySearch = (m, n, compare_fn)=>{\n\t\t\t\twhile(m <= n){\n\t\t\t\t\t\tconst k = n + m >> 1;\n\t\t\t\t\t\tconst cmp = compare_fn(k);\n\t\t\t\t\t\tif (cmp > 0) {\n\t\t\t\t\t\t\t\tm = k + 1;\n\t\t\t\t\t\t} else if (cmp < 0) {\n\t\t\t\t\t\t\t\tn = k - 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn k;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ~m;\n\t\t};\n\t\tconst update = ()=>{\n\t\t\t\tif (!order || !centers || centers.length === 0 || !cameraPosition || !cameraDirection) return;\n\t\t\t\tconst px = cameraPosition.x;\n\t\t\t\tconst py = cameraPosition.y;\n\t\t\t\tconst pz = cameraPosition.z;\n\t\t\t\tconst dx = cameraDirection.x;\n\t\t\t\tconst dy = cameraDirection.y;\n\t\t\t\tconst dz = cameraDirection.z;\n\t\t\t\tconst epsilon = 0.001;\n\t\t\t\tif (!forceUpdate && Math.abs(px - lastCameraPosition.x) < epsilon && Math.abs(py - lastCameraPosition.y) < epsilon && Math.abs(pz - lastCameraPosition.z) < epsilon && Math.abs(dx - lastCameraDirection.x) < epsilon && Math.abs(dy - lastCameraDirection.y) < epsilon && Math.abs(dz - lastCameraDirection.z) < epsilon) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tforceUpdate = false;\n\t\t\t\tlastCameraPosition.x = px;\n\t\t\t\tlastCameraPosition.y = py;\n\t\t\t\tlastCameraPosition.z = pz;\n\t\t\t\tlastCameraDirection.x = dx;\n\t\t\t\tlastCameraDirection.y = dy;\n\t\t\t\tlastCameraDirection.z = dz;\n\t\t\t\tlet minDist;\n\t\t\t\tlet maxDist;\n\t\t\t\tfor(let i = 0; i < 8; ++i){\n\t\t\t\t\t\tconst x = i & 1 ? boundMin.x : boundMax.x;\n\t\t\t\t\t\tconst y = i & 2 ? boundMin.y : boundMax.y;\n\t\t\t\t\t\tconst z = i & 4 ? boundMin.z : boundMax.z;\n\t\t\t\t\t\tconst d = x * dx + y * dy + z * dz;\n\t\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\t\t\tminDist = maxDist = d;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tminDist = Math.min(minDist, d);\n\t\t\t\t\t\t\t\tmaxDist = Math.max(maxDist, d);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst numVertices = centers.length / 3;\n\t\t\t\tconst compareBits = Math.max(10, Math.min(20, Math.round(Math.log2(numVertices / 4))));\n\t\t\t\tconst bucketCount = 2 ** compareBits + 1;\n\t\t\t\tif (distances?.length !== numVertices) {\n\t\t\t\t\t\tdistances = new Uint32Array(numVertices);\n\t\t\t\t}\n\t\t\t\tif (!countBuffer || countBuffer.length !== bucketCount) {\n\t\t\t\t\t\tcountBuffer = new Uint32Array(bucketCount);\n\t\t\t\t} else {\n\t\t\t\t\t\tcountBuffer.fill(0);\n\t\t\t\t}\n\t\t\t\tconst range = maxDist - minDist;\n\t\t\t\tif (range < 1e-6) {\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\t\t\tdistances[i] = 0;\n\t\t\t\t\t\t\t\tcountBuffer[0]++;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst numChunks = chunks.length / 4;\n\t\t\t\t\t\tbinCount.fill(0);\n\t\t\t\t\t\tfor(let i = 0; i < numChunks; ++i){\n\t\t\t\t\t\t\t\tconst x = chunks[i * 4 + 0];\n\t\t\t\t\t\t\t\tconst y = chunks[i * 4 + 1];\n\t\t\t\t\t\t\t\tconst z = chunks[i * 4 + 2];\n\t\t\t\t\t\t\t\tconst r = chunks[i * 4 + 3];\n\t\t\t\t\t\t\t\tconst d = x * dx + y * dy + z * dz - minDist;\n\t\t\t\t\t\t\t\tconst binMin = Math.max(0, Math.floor((d - r) * numBins / range));\n\t\t\t\t\t\t\t\tconst binMax = Math.min(numBins, Math.ceil((d + r) * numBins / range));\n\t\t\t\t\t\t\t\tfor(let j = binMin; j < binMax; ++j){\n\t\t\t\t\t\t\t\t\t\tbinCount[j]++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst binTotal = binCount.reduce((a, b)=>a + b, 0);\n\t\t\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\t\t\tbinDivider[i] = binCount[i] / binTotal * bucketCount >>> 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\t\t\tbinBase[i] = i === 0 ? 0 : binBase[i - 1] + binDivider[i - 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst binRange = range / numBins;\n\t\t\t\t\t\tlet ii = 0;\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\t\t\tconst x = centers[ii++];\n\t\t\t\t\t\t\t\tconst y = centers[ii++];\n\t\t\t\t\t\t\t\tconst z = centers[ii++];\n\t\t\t\t\t\t\t\tconst d = (x * dx + y * dy + z * dz - minDist) / binRange;\n\t\t\t\t\t\t\t\tconst bin = d >>> 0;\n\t\t\t\t\t\t\t\tconst sortKey = binBase[bin] + binDivider[bin] * (d - bin) >>> 0;\n\t\t\t\t\t\t\t\tdistances[i] = sortKey;\n\t\t\t\t\t\t\t\tcountBuffer[sortKey]++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 1; i < bucketCount; i++){\n\t\t\t\t\t\tcountBuffer[i] += countBuffer[i - 1];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\t\t\tconst distance = distances[i];\n\t\t\t\t\t\tconst destIndex = --countBuffer[distance];\n\t\t\t\t\t\torder[destIndex] = i;\n\t\t\t\t}\n\t\t\t\tconst cameraDist = px * dx + py * dy + pz * dz;\n\t\t\t\tconst dist = (i)=>{\n\t\t\t\t\t\tlet o = order[i] * 3;\n\t\t\t\t\t\treturn centers[o++] * dx + centers[o++] * dy + centers[o] * dz - cameraDist;\n\t\t\t\t};\n\t\t\t\tconst findZero = ()=>{\n\t\t\t\t\t\tconst result = binarySearch(0, numVertices - 1, (i)=>-dist(i));\n\t\t\t\t\t\treturn Math.min(numVertices, Math.abs(result));\n\t\t\t\t};\n\t\t\t\tconst count = dist(numVertices - 1) >= 0 ? findZero() : numVertices;\n\t\t\t\tif (mapping) {\n\t\t\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\t\t\torder[i] = mapping[order[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmyself.postMessage({\n\t\t\t\t\t\torder: order.buffer,\n\t\t\t\t\t\tcount\n\t\t\t\t}, [\n\t\t\t\t\t\torder.buffer\n\t\t\t\t]);\n\t\t\t\torder = null;\n\t\t};\n\t\tmyself.addEventListener('message', (message)=>{\n\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\tif (msgData.order) {\n\t\t\t\t\t\torder = new Uint32Array(msgData.order);\n\t\t\t\t}\n\t\t\t\tif (msgData.centers) {\n\t\t\t\t\t\tcenters = new Float32Array(msgData.centers);\n\t\t\t\t\t\tforceUpdate = true;\n\t\t\t\t\t\tif (msgData.chunks) {\n\t\t\t\t\t\t\t\tconst chunksSrc = new Float32Array(msgData.chunks);\n\t\t\t\t\t\t\t\tchunks = new Float32Array(msgData.chunks, 0, chunksSrc.length * 4 / 6);\n\t\t\t\t\t\t\t\tboundMin.x = chunksSrc[0];\n\t\t\t\t\t\t\t\tboundMin.y = chunksSrc[1];\n\t\t\t\t\t\t\t\tboundMin.z = chunksSrc[2];\n\t\t\t\t\t\t\t\tboundMax.x = chunksSrc[3];\n\t\t\t\t\t\t\t\tboundMax.y = chunksSrc[4];\n\t\t\t\t\t\t\t\tboundMax.z = chunksSrc[5];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < chunksSrc.length / 6; ++i){\n\t\t\t\t\t\t\t\t\t\tconst mx = chunksSrc[i * 6 + 0];\n\t\t\t\t\t\t\t\t\t\tconst my = chunksSrc[i * 6 + 1];\n\t\t\t\t\t\t\t\t\t\tconst mz = chunksSrc[i * 6 + 2];\n\t\t\t\t\t\t\t\t\t\tconst Mx = chunksSrc[i * 6 + 3];\n\t\t\t\t\t\t\t\t\t\tconst My = chunksSrc[i * 6 + 4];\n\t\t\t\t\t\t\t\t\t\tconst Mz = chunksSrc[i * 6 + 5];\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 0] = (mx + Mx) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 1] = (my + My) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 2] = (mz + Mz) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[i * 4 + 3] = Math.sqrt((Mx - mx) ** 2 + (My - my) ** 2 + (Mz - mz) ** 2) * 0.5;\n\t\t\t\t\t\t\t\t\t\tif (mx < boundMin.x) boundMin.x = mx;\n\t\t\t\t\t\t\t\t\t\tif (my < boundMin.y) boundMin.y = my;\n\t\t\t\t\t\t\t\t\t\tif (mz < boundMin.z) boundMin.z = mz;\n\t\t\t\t\t\t\t\t\t\tif (Mx > boundMax.x) boundMax.x = Mx;\n\t\t\t\t\t\t\t\t\t\tif (My > boundMax.y) boundMax.y = My;\n\t\t\t\t\t\t\t\t\t\tif (Mz > boundMax.z) boundMax.z = Mz;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst numVertices = centers.length / 3;\n\t\t\t\t\t\t\t\tconst numChunks = Math.ceil(numVertices / 256);\n\t\t\t\t\t\t\t\tchunks = new Float32Array(numChunks * 4);\n\t\t\t\t\t\t\t\tboundMin.x = boundMin.y = boundMin.z = Infinity;\n\t\t\t\t\t\t\t\tboundMax.x = boundMax.y = boundMax.z = -Infinity;\n\t\t\t\t\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\t\t\t\t\tfor(let c = 0; c < numChunks; ++c){\n\t\t\t\t\t\t\t\t\t\tmx = my = mz = Infinity;\n\t\t\t\t\t\t\t\t\t\tMx = My = Mz = -Infinity;\n\t\t\t\t\t\t\t\t\t\tconst start = c * 256;\n\t\t\t\t\t\t\t\t\t\tconst end = Math.min(numVertices, (c + 1) * 256);\n\t\t\t\t\t\t\t\t\t\tfor(let i = start; i < end; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tconst x = centers[i * 3 + 0];\n\t\t\t\t\t\t\t\t\t\t\t\tconst y = centers[i * 3 + 1];\n\t\t\t\t\t\t\t\t\t\t\t\tconst z = centers[i * 3 + 2];\n\t\t\t\t\t\t\t\t\t\t\t\tconst validX = Number.isFinite(x);\n\t\t\t\t\t\t\t\t\t\t\t\tconst validY = Number.isFinite(y);\n\t\t\t\t\t\t\t\t\t\t\t\tconst validZ = Number.isFinite(z);\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validX) centers[i * 3 + 0] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validY) centers[i * 3 + 1] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validZ) centers[i * 3 + 2] = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!validX || !validY || !validZ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (x < mx) mx = x;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (x > Mx) Mx = x;\n\t\t\t\t\t\t\t\t\t\t\t\tif (y < my) my = y;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (y > My) My = y;\n\t\t\t\t\t\t\t\t\t\t\t\tif (z < mz) mz = z;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (z > Mz) Mz = z;\n\t\t\t\t\t\t\t\t\t\t\t\tif (x < boundMin.x) boundMin.x = x;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (x > boundMax.x) boundMax.x = x;\n\t\t\t\t\t\t\t\t\t\t\t\tif (y < boundMin.y) boundMin.y = y;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (y > boundMax.y) boundMax.y = y;\n\t\t\t\t\t\t\t\t\t\t\t\tif (z < boundMin.z) boundMin.z = z;\n\t\t\t\t\t\t\t\t\t\t\t\telse if (z > boundMax.z) boundMax.z = z;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 0] = (mx + Mx) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 1] = (my + My) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 2] = (mz + Mz) * 0.5;\n\t\t\t\t\t\t\t\t\t\tchunks[c * 4 + 3] = Math.sqrt((Mx - mx) ** 2 + (My - my) ** 2 + (Mz - mz) ** 2) * 0.5;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (msgData.hasOwnProperty('mapping')) {\n\t\t\t\t\t\tmapping = msgData.mapping ? new Uint32Array(msgData.mapping) : null;\n\t\t\t\t\t\tforceUpdate = true;\n\t\t\t\t}\n\t\t\t\tif (msgData.cameraPosition) cameraPosition = msgData.cameraPosition;\n\t\t\t\tif (msgData.cameraDirection) cameraDirection = msgData.cameraDirection;\n\t\t\t\tupdate();\n\t\t});\n}\n\nclass GSplatSorter extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tconst messageHandler = (message)=>{\n\t\t\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\t\t\tconst newOrder = msgData.order;\n\t\t\t\t\t\tconst oldOrder = this.orderTexture._levels[0].buffer;\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\torder: oldOrder\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\toldOrder\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.orderTexture._levels[0] = new Uint32Array(newOrder);\n\t\t\t\t\t\tthis.orderTexture.upload();\n\t\t\t\t\t\tthis.fire('updated', msgData.count);\n\t\t\t\t};\n\t\t\t\tconst workerSource = `(${SortWorker.toString()})()`;\n\t\t\t\tif (platform.environment === 'node') {\n\t\t\t\t\t\tthis.worker = new Worker(workerSource, {\n\t\t\t\t\t\t\t\teval: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.worker.on('message', messageHandler);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.worker = new Worker(URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\tworkerSource\n\t\t\t\t\t\t], {\n\t\t\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t\t\t})));\n\t\t\t\t\t\tthis.worker.addEventListener('message', messageHandler);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.worker.terminate();\n\t\t\t\tthis.worker = null;\n\t\t}\n\t\tinit(orderTexture, centers, chunks) {\n\t\t\t\tthis.orderTexture = orderTexture;\n\t\t\t\tthis.centers = centers.slice();\n\t\t\t\tconst orderBuffer = this.orderTexture.lock({\n\t\t\t\t\t\tmode: TEXTURELOCK_READ\n\t\t\t\t}).slice();\n\t\t\t\tthis.orderTexture.unlock();\n\t\t\t\tfor(let i = 0; i < orderBuffer.length; ++i){\n\t\t\t\t\t\torderBuffer[i] = i;\n\t\t\t\t}\n\t\t\t\tconst obj = {\n\t\t\t\t\t\torder: orderBuffer.buffer,\n\t\t\t\t\t\tcenters: centers.buffer,\n\t\t\t\t\t\tchunks: chunks?.buffer\n\t\t\t\t};\n\t\t\t\tconst transfer = [\n\t\t\t\t\t\torderBuffer.buffer,\n\t\t\t\t\t\tcenters.buffer\n\t\t\t\t].concat(chunks ? [\n\t\t\t\t\t\tchunks.buffer\n\t\t\t\t] : []);\n\t\t\t\tthis.worker.postMessage(obj, transfer);\n\t\t}\n\t\tsetMapping(mapping) {\n\t\t\t\tif (mapping) {\n\t\t\t\t\t\tconst centers = new Float32Array(mapping.length * 3);\n\t\t\t\t\t\tfor(let i = 0; i < mapping.length; ++i){\n\t\t\t\t\t\t\t\tconst src = mapping[i] * 3;\n\t\t\t\t\t\t\t\tconst dst = i * 3;\n\t\t\t\t\t\t\t\tcenters[dst + 0] = this.centers[src + 0];\n\t\t\t\t\t\t\t\tcenters[dst + 1] = this.centers[src + 1];\n\t\t\t\t\t\t\t\tcenters[dst + 2] = this.centers[src + 2];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\tcenters: centers.buffer,\n\t\t\t\t\t\t\t\tmapping: mapping.buffer\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\tcenters.buffer,\n\t\t\t\t\t\t\t\tmapping.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst centers = this.centers.slice();\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\tcenters: centers.buffer,\n\t\t\t\t\t\t\t\tmapping: null\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\tcenters.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tsetCamera(pos, dir) {\n\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\tcameraPosition: {\n\t\t\t\t\t\t\t\tx: pos.x,\n\t\t\t\t\t\t\t\ty: pos.y,\n\t\t\t\t\t\t\t\tz: pos.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcameraDirection: {\n\t\t\t\t\t\t\t\tx: dir.x,\n\t\t\t\t\t\t\t\ty: dir.y,\n\t\t\t\t\t\t\t\tz: dir.z\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nvar glslGsplatSogsReorderPS = `\n#include \"gsplatPackingPS\"\nuniform highp sampler2D means_l;\nuniform highp sampler2D means_u;\nuniform highp sampler2D quats;\nuniform highp sampler2D scales;\nuniform highp sampler2D sh0;\nuniform highp sampler2D sh_labels;\nuniform highp uint numSplats;\n#ifdef REORDER_V1\n\tfloat sigmoid(float x) { return 1.0 / (1.0 + exp(-x)); }\n\tvec3 vmin(vec3 v) { return vec3(min(min(v.x, v.y), v.z)); }\n\tvec3 vmax(vec3 v) { return vec3(max(max(v.x, v.y), v.z)); }\n\tvec3 resolve(vec3 m, vec3 M, vec3 v) { return (mix(m, M, v) - vmin(m)) / (vmax(M) - vmin(m)); }\n\t\n\tuniform vec3 scalesMins;\n\tuniform vec3 scalesMaxs;\n\tuniform vec4 sh0Mins;\n\tuniform vec4 sh0Maxs;\n#else\n\tuniform vec4 scales_codebook[64];\n\tuniform vec4 sh0_codebook[64];\n#endif\nvoid main(void) {\n\tint w = int(textureSize(means_l, 0).x);\n\tivec2 uv = ivec2(gl_FragCoord.xy);\n\tif (uint(uv.x + uv.y * w) >= numSplats) {\n\t\tdiscard;\n\t}\n\tvec3 meansLSample   = texelFetch(means_l, uv, 0).xyz;\n\tvec3 meansUSample   = texelFetch(means_u, uv, 0).xyz;\n\tvec4 quatsSample\t= texelFetch(quats, uv, 0);\n\tvec3 scalesSample   = texelFetch(scales, uv, 0).xyz;\n\tvec4 sh0Sample\t  = texelFetch(sh0, uv, 0);\n\tvec2 shLabelsSample = texelFetch(sh_labels, uv, 0).xy;\n\t#ifdef REORDER_V1\n\t\tuint scale = pack101010(resolve(scalesMins, scalesMaxs, scalesSample));\n\t\tuint sh0 = pack111110(resolve(sh0Mins.xyz, sh0Maxs.xyz, sh0Sample.xyz));\n\t\tfloat alpha = sigmoid(mix(sh0Mins.w, sh0Maxs.w, sh0Sample.w));\n\t#else\n\t\tuint scale = pack101010(resolveCodebook(scalesSample, scales_codebook));\n\t\tuint sh0 = pack111110(resolveCodebook(sh0Sample.xyz, sh0_codebook));\n\t\tfloat alpha = sh0Sample.w;\n\t#endif\n\tuint qmode = uint(quatsSample.w * 255.0) - 252u;\n\tpcFragColor0 = uvec4(\n\t\tpack8888(vec4(meansLSample, shLabelsSample.x)),\n\t\tpack8888(vec4(meansUSample, shLabelsSample.y)),\n\t\tpack8888(vec4(quatsSample.xyz, alpha)),\n\t\t(scale << 2u) | qmode\n\t);\n\tpcFragColor1 = unpack8888(sh0);\n}\n`;\n\nvar wgslGsplatSogsReorderPS = `\n#include \"gsplatPackingPS\"\nvar means_l: texture_2d<f32>;\nvar means_u: texture_2d<f32>;\nvar quats: texture_2d<f32>;\nvar scales: texture_2d<f32>;\nvar sh0: texture_2d<f32>;\nvar sh_labels: texture_2d<f32>;\nuniform numSplats: u32;\n#ifdef REORDER_V1\n\tfn sigmoid(x: f32) -> f32 { return 1.0 / (1.0 + exp(-x)); }\n\tfn vmin(v: vec3f) -> vec3f { return vec3f(min(min(v.x, v.y), v.z)); }\n\tfn vmax(v: vec3f) -> vec3f { return vec3f(max(max(v.x, v.y), v.z)); }\n\tfn resolve(m: vec3f, M: vec3f, v: vec3f) -> vec3f { return (mix(m, M, v) - vmin(m)) / (vmax(M) - vmin(m)); }\n\tuniform scalesMins: vec3f;\n\tuniform scalesMaxs: vec3f;\n\tuniform sh0Mins: vec4f;\n\tuniform sh0Maxs: vec4f;\n#else\n\tuniform scales_codebook: array<vec4f, 64>;\n\tuniform sh0_codebook: array<vec4f, 64>;\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet w: u32 = textureDimensions(means_l, 0).x;\n\tlet uv: vec2<u32> = vec2<u32>(input.position.xy);\n\tif (uv.x + uv.y * w >= uniform.numSplats) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\tlet meansLSample: vec3<f32> = textureLoad(means_l, uv, 0).xyz;\n\tlet meansUSample: vec3<f32> = textureLoad(means_u, uv, 0).xyz;\n\tlet quatsSample: vec4<f32> = textureLoad(quats, uv, 0);\n\tlet scalesSample: vec3<f32> = textureLoad(scales, uv, 0).xyz;\n\tlet sh0Sample: vec4f = textureLoad(sh0, uv, 0);\n\tlet shLabelsSample: vec2<f32> = textureLoad(sh_labels, uv, 0).xy;\n\t#ifdef REORDER_V1\n\t\tlet scale = pack101010(resolve(uniform.scalesMins, uniform.scalesMaxs, scalesSample));\n\t\tlet sh0 = pack111110(resolve(uniform.sh0Mins.xyz, uniform.sh0Maxs.xyz, sh0Sample.xyz));\n\t\tlet alpha = sigmoid(mix(uniform.sh0Mins.w, uniform.sh0Maxs.w, sh0Sample.w));\n\t#else\n\t\tlet scale = pack101010(resolveCodebook(scalesSample, &uniform.scales_codebook));\n\t\tlet sh0 = pack111110(resolveCodebook(sh0Sample.xyz, &uniform.sh0_codebook));\n\t\tlet alpha = sh0Sample.w;\n\t#endif\n\tlet qmode = u32(quatsSample.w * 255.0) - 252u;\n\toutput.color = vec4u(\n\t\tpack8888(vec4f(meansLSample, shLabelsSample.x)),\n\t\tpack8888(vec4f(meansUSample, shLabelsSample.y)),\n\t\tpack8888(vec4f(quatsSample.xyz, alpha)),\n\t\t(scale << 2u) | qmode\n\t);\n\toutput.color1 = unpack8888(sh0);\n\treturn output;\n}\n`;\n\nvar glslGsplatSogsReorderSh = `\n#include \"gsplatPackingPS\"\nuniform highp sampler2D sh_centroids;\nuniform vec4 shN_codebook[64];\nvoid main(void) {\n\tivec2 uv = ivec2(gl_FragCoord.xy);\n\tvec3 shNSample = texelFetch(sh_centroids, uv, 0).xyz;\n#ifdef REORDER_V1\n\tpcFragColor0 = unpack8888(pack111110(shNSample));\n#else\n\tpcFragColor0 = unpack8888(pack111110(resolveCodebook(shNSample, shN_codebook)));\n#endif\n}\n`;\n\nvar gsplatPackingPS$1 = `\nuint pack8888(vec4 v) {\n\tuvec4 t = uvec4(v * 255.0) << uvec4(24u, 16u, 8u, 0u);\n\treturn t.x | t.y | t.z | t.w;\n}\nuint pack101010(vec3 v) {\n\tuvec3 t = uvec3(v * 1023.0) << uvec3(20u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nuint pack111110(vec3 v) {\n\tuvec3 t = uvec3(v * vec3(2047.0, 2047.0, 1023.0)) << uvec3(21u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nvec4 unpack8888(uint v) {\n\treturn vec4((uvec4(v) >> uvec4(24u, 16u, 8u, 0u)) & 0xffu) / 255.0;\n}\nvec3 unpack101010(uint v) {\n\treturn vec3((uvec3(v) >> uvec3(20u, 10u, 0u)) & 0x3ffu) / 1023.0;\n}\nvec3 unpack111110(uint v) {\n\treturn vec3((uvec3(v) >> uvec3(21u, 10u, 0u)) & uvec3(0x7ffu, 0x7ffu, 0x3ffu)) / vec3(2047.0, 2047.0, 1023.0);\n}\nvec3 resolveCodebook(vec3 s, vec4 codebook[64]) {\n\tuvec3 idx = uvec3(s * 255.0);\n\tvec3 v = vec3(\n\t\tcodebook[idx.x >> 2u][idx.x & 3u],\n\t\tcodebook[idx.y >> 2u][idx.y & 3u],\n\t\tcodebook[idx.z >> 2u][idx.z & 3u]\n\t);\n\treturn (v - codebook[0].x) / (codebook[63].w - codebook[0].x);\n}\n`;\n\nvar wgslGsplatSogsReorderSH = `\n#include \"gsplatPackingPS\"\nvar sh_centroids: texture_2d<f32>;\nuniform shN_codebook: array<vec4f, 64>;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tvar uv = vec2i(input.position.xy);\n\tvar shNSample = textureLoad(sh_centroids, uv, 0).xyz;\n#ifdef REORDER_V1\n\toutput.color = unpack8888(pack111110(shNSample));\n#else\n\toutput.color = unpack8888(pack111110(resolveCodebook(shNSample, &uniform.shN_codebook)));\n#endif\n\treturn output;\n}\n`;\n\nvar gsplatPackingPS = `\nfn pack8888(v: vec4f) -> u32 {\n\tlet t = vec4u(v * 255.0) << vec4u(24u, 16u, 8u, 0u);\n\treturn t.x | t.y | t.z | t.w;\n}\nfn pack101010(v: vec3f) -> u32 {\n\tlet t = vec3u(v * vec3f(1023.0, 1023.0, 1023.0)) << vec3u(20u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nfn pack111110(v: vec3f) -> u32 {\n\tlet t = vec3u(v * vec3f(2047.0, 2047.0, 1023.0)) << vec3u(21u, 10u, 0u);\n\treturn t.x | t.y | t.z;\n}\nfn unpack8888(v: u32) -> vec4f {\n\treturn vec4f((vec4u(v) >> vec4u(24u, 16u, 8u, 0u)) & vec4u(0xffu)) / 255.0;\n}\nfn unpack101010(v: u32) -> vec3f {\n\treturn vec3f((vec3u(v) >> vec3u(20u, 10u, 0u)) & vec3u(0x3ffu)) / 1023.0;\n}\nfn unpack111110(v: u32) -> vec3f {\n\treturn vec3f((vec3u(v) >> vec3u(21u, 10u, 0u)) & vec3u(0x7ffu, 0x7ffu, 0x3ffu)) / vec3f(2047.0, 2047.0, 1023.0);\n}\nfn resolveCodebook(s: vec3f, codebook: ptr<uniform, array<vec4f, 64>>) -> vec3f {\n\tlet idx = vec3u(s * 255.0);\n\tlet v = vec3f(\n\t\tcodebook[idx.x >> 2u][idx.x & 3u],\n\t\tcodebook[idx.y >> 2u][idx.y & 3u],\n\t\tcodebook[idx.z >> 2u][idx.z & 3u]\n\t);\n\treturn (v - codebook[0].x) / (codebook[63].w - codebook[0].x);\n}\n`;\n\nvar glslSogsCentersPS = `\n#include \"gsplatPackingPS\"\nuniform highp sampler2D means_l;\nuniform highp sampler2D means_u;\nuniform highp uint numSplats;\nuniform highp vec3 means_mins;\nuniform highp vec3 means_maxs;\nvoid main(void) {\n\tint w = int(textureSize(means_l, 0).x);\n\tivec2 uv = ivec2(gl_FragCoord.xy);\n\tif (uint(uv.x + uv.y * w) >= numSplats) {\n\t\tdiscard;\n\t}\n\tvec3 l = texelFetch(means_l, uv, 0).xyz;\n\tvec3 u = texelFetch(means_u, uv, 0).xyz;\n\tvec3 n = (l * 255.0 + u * 255.0 * 256.0) / 65535.0;\n\tvec3 v = mix(means_mins, means_maxs, n);\n\tvec3 center = sign(v) * (exp(abs(v)) - 1.0);\n\tpcFragColor0 = uvec4(floatBitsToUint(center), 0u);\n}\n`;\n\nvar wgslSogsCentersPS = `\nvar means_l: texture_2d<f32>;\nvar means_u: texture_2d<f32>;\nuniform numSplats: u32;\nuniform means_mins: vec3f;\nuniform means_maxs: vec3f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet w: u32 = textureDimensions(means_l, 0).x;\n\tlet uv: vec2<i32> = vec2<i32>(input.position.xy);\n\tif (u32(uv.x + uv.y * i32(w)) >= uniform.numSplats) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\tlet l: vec3f = textureLoad(means_l, uv, 0).xyz;\n\tlet u: vec3f = textureLoad(means_u, uv, 0).xyz;\n\tlet n: vec3f = (l * 255.0 + u * 255.0 * 256.0) / 65535.0;\n\tlet v: vec3f = mix(uniform.means_mins, uniform.means_maxs, n);\n\tlet center: vec3f = sign(v) * (exp(abs(v)) - 1.0);\n\tlet packed: vec4<u32> = bitcast<vec4<u32>>(vec4f(center, 0.0));\n\toutput.color = packed;\n\treturn output;\n}\n`;\n\nconst SH_C0$1 = 0.28209479177387814;\nconst readImageDataAsync = (texture)=>{\n\t\treturn texture.read(0, 0, texture.width, texture.height, {\n\t\t\t\tmipLevel: 0,\n\t\t\t\tface: 0,\n\t\t\t\timmediate: true\n\t\t});\n};\nconst resolve = (scope, values)=>{\n\t\tfor(const key in values){\n\t\t\t\tscope.resolve(key).setValue(values[key]);\n\t\t}\n};\nclass GSplatSogsIterator {\n\t\tconstructor(data, p, r, s, c, sh){\n\t\t\t\tconst lerp = (a, b, t)=>a * (1 - t) + b * t;\n\t\t\t\tconst { meta, shBands } = data;\n\t\t\t\tconst { means, scales, sh0, shN } = meta;\n\t\t\t\tconst means_l_data = p && data.means_l._levels[0];\n\t\t\t\tconst means_u_data = p && data.means_u._levels[0];\n\t\t\t\tconst quats_data = r && data.quats._levels[0];\n\t\t\t\tconst scales_data = s && data.scales._levels[0];\n\t\t\t\tconst sh0_data = c && data.sh0._levels[0];\n\t\t\t\tconst sh_labels_data = sh && data.sh_labels._levels[0];\n\t\t\t\tconst sh_centroids_data = sh && data.sh_centroids._levels[0];\n\t\t\t\tconst norm = 2.0 / Math.sqrt(2.0);\n\t\t\t\tconst coeffs = {\n\t\t\t\t\t\t1: 3,\n\t\t\t\t\t\t2: 8,\n\t\t\t\t\t\t3: 15\n\t\t\t\t}[shBands] ?? 0;\n\t\t\t\tthis.read = (i)=>{\n\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\tconst nx = lerp(means.mins[0], means.maxs[0], ((means_u_data[i * 4 + 0] << 8) + means_l_data[i * 4 + 0]) / 65535);\n\t\t\t\t\t\t\t\tconst ny = lerp(means.mins[1], means.maxs[1], ((means_u_data[i * 4 + 1] << 8) + means_l_data[i * 4 + 1]) / 65535);\n\t\t\t\t\t\t\t\tconst nz = lerp(means.mins[2], means.maxs[2], ((means_u_data[i * 4 + 2] << 8) + means_l_data[i * 4 + 2]) / 65535);\n\t\t\t\t\t\t\t\tp.x = Math.sign(nx) * (Math.exp(Math.abs(nx)) - 1);\n\t\t\t\t\t\t\t\tp.y = Math.sign(ny) * (Math.exp(Math.abs(ny)) - 1);\n\t\t\t\t\t\t\t\tp.z = Math.sign(nz) * (Math.exp(Math.abs(nz)) - 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\t\tconst a = (quats_data[i * 4 + 0] / 255 - 0.5) * norm;\n\t\t\t\t\t\t\t\tconst b = (quats_data[i * 4 + 1] / 255 - 0.5) * norm;\n\t\t\t\t\t\t\t\tconst c = (quats_data[i * 4 + 2] / 255 - 0.5) * norm;\n\t\t\t\t\t\t\t\tconst d = Math.sqrt(Math.max(0, 1 - (a * a + b * b + c * c)));\n\t\t\t\t\t\t\t\tconst mode = quats_data[i * 4 + 3] - 252;\n\t\t\t\t\t\t\t\tswitch(mode){\n\t\t\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(a, b, c, d);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(d, b, c, a);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(b, d, c, a);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\t\t\tr.set(b, c, d, a);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t\t\t\t\tconst sx = scales.codebook[scales_data[i * 4 + 0]];\n\t\t\t\t\t\t\t\t\t\tconst sy = scales.codebook[scales_data[i * 4 + 1]];\n\t\t\t\t\t\t\t\t\t\tconst sz = scales.codebook[scales_data[i * 4 + 2]];\n\t\t\t\t\t\t\t\t\t\ts.set(sx, sy, sz);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst sx = lerp(scales.mins[0], scales.maxs[0], scales_data[i * 4 + 0] / 255);\n\t\t\t\t\t\t\t\t\t\tconst sy = lerp(scales.mins[1], scales.maxs[1], scales_data[i * 4 + 1] / 255);\n\t\t\t\t\t\t\t\t\t\tconst sz = lerp(scales.mins[2], scales.maxs[2], scales_data[i * 4 + 2] / 255);\n\t\t\t\t\t\t\t\t\t\ts.set(sx, sy, sz);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t\t\t\t\tconst r = sh0.codebook[sh0_data[i * 4 + 0]];\n\t\t\t\t\t\t\t\t\t\tconst g = sh0.codebook[sh0_data[i * 4 + 1]];\n\t\t\t\t\t\t\t\t\t\tconst b = sh0.codebook[sh0_data[i * 4 + 2]];\n\t\t\t\t\t\t\t\t\t\tconst a = sh0_data[i * 4 + 3] / 255;\n\t\t\t\t\t\t\t\t\t\tc.set(0.5 + r * SH_C0$1, 0.5 + g * SH_C0$1, 0.5 + b * SH_C0$1, a);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst r = lerp(sh0.mins[0], sh0.maxs[0], sh0_data[i * 4 + 0] / 255);\n\t\t\t\t\t\t\t\t\t\tconst g = lerp(sh0.mins[1], sh0.maxs[1], sh0_data[i * 4 + 1] / 255);\n\t\t\t\t\t\t\t\t\t\tconst b = lerp(sh0.mins[2], sh0.maxs[2], sh0_data[i * 4 + 2] / 255);\n\t\t\t\t\t\t\t\t\t\tconst a = lerp(sh0.mins[3], sh0.maxs[3], sh0_data[i * 4 + 3] / 255);\n\t\t\t\t\t\t\t\t\t\tc.set(0.5 + r * SH_C0$1, 0.5 + g * SH_C0$1, 0.5 + b * SH_C0$1, 1.0 / (1.0 + Math.exp(-a)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sh) {\n\t\t\t\t\t\t\t\tconst n = sh_labels_data[i * 4 + 0] + (sh_labels_data[i * 4 + 1] << 8);\n\t\t\t\t\t\t\t\tconst u = n % 64 * coeffs;\n\t\t\t\t\t\t\t\tconst v = Math.floor(n / 64);\n\t\t\t\t\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < coeffs; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsh[j * 15 + k] = shN.codebook[sh_centroids_data[(u + k) * 4 + j + v * data.sh_centroids.width * 4]];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < coeffs; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsh[j * 15 + k] = lerp(shN.mins, shN.maxs, sh_centroids_data[(u + k) * 4 + j + v * data.sh_centroids.width * 4] / 255);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n}\nclass GSplatSogsData {\n\t\t_destroyGpuResources() {\n\t\t\t\tthis.means_l?.destroy();\n\t\t\t\tthis.means_u?.destroy();\n\t\t\t\tthis.quats?.destroy();\n\t\t\t\tthis.scales?.destroy();\n\t\t\t\tthis.sh0?.destroy();\n\t\t\t\tthis.sh_centroids?.destroy();\n\t\t\t\tthis.sh_labels?.destroy();\n\t\t\t\tthis.packedTexture?.destroy();\n\t\t\t\tthis.packedSh0?.destroy();\n\t\t\t\tthis.packedShN?.destroy();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyed = true;\n\t\t\t\tthis._destroyGpuResources();\n\t\t}\n\t\tcreateIter(p, r, s, c, sh) {\n\t\t\t\treturn new GSplatSogsIterator(this, p, r, s, c, sh);\n\t\t}\n\t\tcalcAabb(result) {\n\t\t\t\tconst { mins, maxs } = this.meta.means;\n\t\t\t\tconst map = (v)=>Math.sign(v) * (Math.exp(Math.abs(v)) - 1);\n\t\t\t\tresult.center.set((map(mins[0]) + map(maxs[0])) * 0.5, (map(mins[1]) + map(maxs[1])) * 0.5, (map(mins[2]) + map(maxs[2])) * 0.5);\n\t\t\t\tresult.halfExtents.set((map(maxs[0]) - map(mins[0])) * 0.5, (map(maxs[1]) - map(mins[1])) * 0.5, (map(maxs[2]) - map(mins[2])) * 0.5);\n\t\t}\n\t\tgetCenters() {\n\t\t\t\tconst centers = this._centers;\n\t\t\t\tthis._centers = null;\n\t\t\t\treturn centers;\n\t\t}\n\t\tcalcFocalPoint(result, pred) {\n\t\t\t\tconst { mins, maxs } = this.meta.means;\n\t\t\t\tconst map = (v)=>Math.sign(v) * (Math.exp(Math.abs(v)) - 1);\n\t\t\t\tresult.set((map(mins[0]) + map(maxs[0])) * 0.5, (map(mins[1]) + map(maxs[1])) * 0.5, (map(mins[2]) + map(maxs[2])) * 0.5);\n\t\t}\n\t\tget isSogs() {\n\t\t\t\treturn true;\n\t\t}\n\t\tget shBands() {\n\t\t\t\tconst widths = {\n\t\t\t\t\t\t192: 1,\n\t\t\t\t\t\t512: 2,\n\t\t\t\t\t\t960: 3\n\t\t\t\t};\n\t\t\t\treturn widths[this.sh_centroids?.width] ?? 0;\n\t\t}\n\t\tasync decompress() {\n\t\t\t\tconst members = [\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t'z',\n\t\t\t\t\t\t'f_dc_0',\n\t\t\t\t\t\t'f_dc_1',\n\t\t\t\t\t\t'f_dc_2',\n\t\t\t\t\t\t'opacity',\n\t\t\t\t\t\t'scale_0',\n\t\t\t\t\t\t'scale_1',\n\t\t\t\t\t\t'scale_2',\n\t\t\t\t\t\t'rot_0',\n\t\t\t\t\t\t'rot_1',\n\t\t\t\t\t\t'rot_2',\n\t\t\t\t\t\t'rot_3'\n\t\t\t\t];\n\t\t\t\tconst { shBands } = this;\n\t\t\t\tconst { means_l, means_u, quats, scales, sh0, sh_labels, sh_centroids } = this;\n\t\t\t\tmeans_l._levels[0] = await readImageDataAsync(means_l);\n\t\t\t\tmeans_u._levels[0] = await readImageDataAsync(means_u);\n\t\t\t\tquats._levels[0] = await readImageDataAsync(quats);\n\t\t\t\tscales._levels[0] = await readImageDataAsync(scales);\n\t\t\t\tsh0._levels[0] = await readImageDataAsync(sh0);\n\t\t\t\tif (shBands > 0) {\n\t\t\t\t\t\tsh_labels._levels[0] = await readImageDataAsync(sh_labels);\n\t\t\t\t\t\tsh_centroids._levels[0] = await readImageDataAsync(sh_centroids);\n\t\t\t\t\t\tconst shMembers = [];\n\t\t\t\t\t\tfor(let i = 0; i < 45; ++i){\n\t\t\t\t\t\t\t\tshMembers.push(`f_rest_${i}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmembers.splice(members.indexOf('f_dc_0') + 1, 0, ...shMembers);\n\t\t\t\t}\n\t\t\t\tconst data = {};\n\t\t\t\tmembers.forEach((name)=>{\n\t\t\t\t\t\tdata[name] = new Float32Array(this.numSplats);\n\t\t\t\t});\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst c = new Vec4();\n\t\t\t\tconst sh = shBands > 0 ? new Float32Array(45) : null;\n\t\t\t\tconst iter = this.createIter(p, r, s, c, sh);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tdata.x[i] = p.x;\n\t\t\t\t\t\tdata.y[i] = p.y;\n\t\t\t\t\t\tdata.z[i] = p.z;\n\t\t\t\t\t\tdata.rot_1[i] = r.x;\n\t\t\t\t\t\tdata.rot_2[i] = r.y;\n\t\t\t\t\t\tdata.rot_3[i] = r.z;\n\t\t\t\t\t\tdata.rot_0[i] = r.w;\n\t\t\t\t\t\tdata.scale_0[i] = s.x;\n\t\t\t\t\t\tdata.scale_1[i] = s.y;\n\t\t\t\t\t\tdata.scale_2[i] = s.z;\n\t\t\t\t\t\tdata.f_dc_0[i] = (c.x - 0.5) / SH_C0$1;\n\t\t\t\t\t\tdata.f_dc_1[i] = (c.y - 0.5) / SH_C0$1;\n\t\t\t\t\t\tdata.f_dc_2[i] = (c.z - 0.5) / SH_C0$1;\n\t\t\t\t\t\tdata.opacity[i] = c.w <= 0 ? -40 : c.w >= 1 ? 40 : -Math.log(1 / c.w - 1);\n\t\t\t\t\t\tif (sh) {\n\t\t\t\t\t\t\t\tfor(let c = 0; c < 45; ++c){\n\t\t\t\t\t\t\t\t\t\tdata[`f_rest_${c}`][i] = sh[c];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn new GSplatData([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'vertex',\n\t\t\t\t\t\t\t\tcount: this.numSplats,\n\t\t\t\t\t\t\t\tproperties: members.map((name)=>{\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'float',\n\t\t\t\t\t\t\t\t\t\t\t\tbyteSize: 4,\n\t\t\t\t\t\t\t\t\t\t\t\tstorage: data[name]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t}\n\t\tasync generateCenters() {\n\t\t\t\tconst { device, width, height } = this.means_l;\n\t\t\t\tconst { scope } = device;\n\t\t\t\tconst centersTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'sogsCentersTexture',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32U,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'GsplatSogsCentersShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslSogsCentersPS,\n\t\t\t\t\t\tfragmentWGSL: wgslSogsCentersPS,\n\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\t'uvec4'\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfragmentIncludes: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'gsplatPackingPS',\n\t\t\t\t\t\t\t\t\t\tdevice.isWebGPU ? gsplatPackingPS : gsplatPackingPS$1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t])\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: centersTexture,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t});\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tresolve(scope, {\n\t\t\t\t\t\tmeans_l: this.means_l,\n\t\t\t\t\t\tmeans_u: this.means_u,\n\t\t\t\t\t\tnumSplats: this.numSplats,\n\t\t\t\t\t\tmeans_mins: this.meta.means.mins,\n\t\t\t\t\t\tmeans_maxs: this.meta.means.maxs\n\t\t\t\t});\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\trenderTarget.destroy();\n\t\t\t\tconst u32 = await readImageDataAsync(centersTexture);\n\t\t\t\tif (this.destroyed || device._destroyed) {\n\t\t\t\t\t\tcentersTexture.destroy();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst asFloat = new Float32Array(u32.buffer);\n\t\t\t\tconst result = new Float32Array(this.numSplats * 3);\n\t\t\t\tfor(let i = 0; i < this.numSplats; i++){\n\t\t\t\t\t\tconst base = i * 4;\n\t\t\t\t\t\tresult[i * 3 + 0] = asFloat[base + 0];\n\t\t\t\t\t\tresult[i * 3 + 1] = asFloat[base + 1];\n\t\t\t\t\t\tresult[i * 3 + 2] = asFloat[base + 2];\n\t\t\t\t}\n\t\t\t\tthis._centers = result;\n\t\t\t\tcentersTexture.destroy();\n\t\t}\n\t\tpackGpuMemory() {\n\t\t\t\tconst { meta, means_l, means_u, quats, scales, sh0, sh_labels, numSplats } = this;\n\t\t\t\tconst { device } = means_l;\n\t\t\t\tconst { scope } = device;\n\t\t\t\tconst shaderKey = meta.version === 2 ? 'v2' : 'v1';\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `GsplatSogsReorderShader-${shaderKey}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslGsplatSogsReorderPS,\n\t\t\t\t\t\tfragmentWGSL: wgslGsplatSogsReorderPS,\n\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\t'uvec4',\n\t\t\t\t\t\t\t\t'vec4'\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfragmentIncludes: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'gsplatPackingPS',\n\t\t\t\t\t\t\t\t\t\tdevice.isWebGPU ? gsplatPackingPS : gsplatPackingPS$1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tfragmentDefines: meta.version === 2 ? undefined : new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'REORDER_V1',\n\t\t\t\t\t\t\t\t\t\t'1'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t])\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffers: [\n\t\t\t\t\t\t\t\tthis.packedTexture,\n\t\t\t\t\t\t\t\tthis.packedSh0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t});\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tresolve(scope, {\n\t\t\t\t\t\tmeans_l,\n\t\t\t\t\t\tmeans_u,\n\t\t\t\t\t\tquats,\n\t\t\t\t\t\tscales,\n\t\t\t\t\t\tsh0,\n\t\t\t\t\t\tsh_labels: sh_labels ?? means_l,\n\t\t\t\t\t\tnumSplats,\n\t\t\t\t\t\t'scales_codebook[0]': this.meta.scales.codebook,\n\t\t\t\t\t\t'sh0_codebook[0]': this.meta.sh0.codebook,\n\t\t\t\t\t\tscalesMins: meta.scales.mins,\n\t\t\t\t\t\tscalesMaxs: meta.scales.maxs,\n\t\t\t\t\t\tsh0Mins: meta.sh0.mins,\n\t\t\t\t\t\tsh0Maxs: meta.sh0.maxs\n\t\t\t\t});\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\trenderTarget.destroy();\n\t\t}\n\t\tpackShMemory() {\n\t\t\t\tconst { meta, sh_centroids } = this;\n\t\t\t\tconst { device } = sh_centroids;\n\t\t\t\tconst { scope } = device;\n\t\t\t\tconst shaderKey = meta.version === 2 ? 'v2' : 'v1';\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `GsplatSogsReorderShShader-${shaderKey}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentGLSL: glslGsplatSogsReorderSh,\n\t\t\t\t\t\tfragmentWGSL: wgslGsplatSogsReorderSH,\n\t\t\t\t\t\tfragmentIncludes: new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'gsplatPackingPS',\n\t\t\t\t\t\t\t\t\t\tdevice.isWebGPU ? gsplatPackingPS : gsplatPackingPS$1\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tfragmentDefines: meta.version === 2 ? undefined : new Map([\n\t\t\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t\t\t'REORDER_V1',\n\t\t\t\t\t\t\t\t\t\t'1'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t])\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.packedShN,\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tmipLevel: 0\n\t\t\t\t});\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tresolve(scope, {\n\t\t\t\t\t\tsh_centroids,\n\t\t\t\t\t\t'shN_codebook[0]': this.meta.shN.codebook\n\t\t\t\t});\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\trenderTarget.destroy();\n\t\t}\n\t\tasync prepareGpuData() {\n\t\t\t\tconst { device, height, width } = this.means_l;\n\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\tthis.packedTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'sogsPackedTexture',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA32U,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tthis.packedSh0 = new Texture(device, {\n\t\t\t\t\t\tname: 'sogsPackedSh0',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tthis.packedShN = this.sh_centroids && new Texture(device, {\n\t\t\t\t\t\tname: 'sogsPackedShN',\n\t\t\t\t\t\twidth: this.sh_centroids.width,\n\t\t\t\t\t\theight: this.sh_centroids.height,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tdevice.on('devicerestored', ()=>{\n\t\t\t\t\t\tthis.packGpuMemory();\n\t\t\t\t\t\tif (this.packedShN) {\n\t\t\t\t\t\t\t\tthis.packShMemory();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t[\n\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t'shN'\n\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\tconst codebook = this.meta[name]?.codebook;\n\t\t\t\t\t\tif (codebook?.[0] === null) {\n\t\t\t\t\t\t\t\tcodebook[0] = codebook[1] + (codebook[1] - codebook[255]) / 255;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\tawait this.generateCenters();\n\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\tthis.packGpuMemory();\n\t\t\t\tif (this.packedShN) {\n\t\t\t\t\t\tif (this.destroyed || device._destroyed) return;\n\t\t\t\t\t\tthis.packShMemory();\n\t\t\t\t}\n\t\t}\n\t\treorderData() {\n\t\t\t\treturn this.prepareGpuData();\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis._centers = null;\n\t\t\t\tthis.destroyed = false;\n\t\t}\n}\n\nconst mat = new Mat4();\nconst cameraPosition$1 = new Vec3();\nconst cameraDirection$1 = new Vec3();\nconst viewport = [\n\t\t0,\n\t\t0\n];\nclass GSplatInstance {\n\t\tconstructor(resource, options = {}){\n\t\t\t\tthis.options = {};\n\t\t\t\tthis.sorter = null;\n\t\t\t\tthis.lastCameraPosition = new Vec3();\n\t\t\t\tthis.lastCameraDirection = new Vec3();\n\t\t\t\tthis.resolveSH = null;\n\t\t\t\tthis.cameras = [];\n\t\t\t\tthis.resource = resource;\n\t\t\t\tthis.orderTexture = resource.createTexture('splatOrder', PIXELFORMAT_R32U, resource.evalTextureSize(resource.numSplats));\n\t\t\t\tif (options.material) {\n\t\t\t\t\t\tthis._material = options.material;\n\t\t\t\t\t\tthis._material.setParameter('splatOrder', this.orderTexture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._material = new ShaderMaterial({\n\t\t\t\t\t\t\t\tuniqueName: 'SplatMaterial',\n\t\t\t\t\t\t\t\tvertexGLSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\t\t\tfragmentGLSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\t\t\tvertexWGSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\t\t\tfragmentWGSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\t\t\tvertex_id_attrib: SEMANTIC_ATTR13\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.configureMaterial(this._material);\n\t\t\t\t\t\tthis._material.update();\n\t\t\t\t}\n\t\t\t\tthis.meshInstance = new MeshInstance(resource.mesh, this._material);\n\t\t\t\tthis.meshInstance.setInstancing(resource.instanceIndices, true);\n\t\t\t\tthis.meshInstance.gsplatInstance = this;\n\t\t\t\tthis.meshInstance.instancingCount = 0;\n\t\t\t\tconst centers = resource.centers.slice();\n\t\t\t\tconst chunks = resource.chunks?.slice();\n\t\t\t\tthis.sorter = new GSplatSorter();\n\t\t\t\tthis.sorter.init(this.orderTexture, centers, chunks);\n\t\t\t\tthis.sorter.on('updated', (count)=>{\n\t\t\t\t\t\tthis.meshInstance.instancingCount = Math.ceil(count / GSplatResourceBase.instanceSize);\n\t\t\t\t\t\tthis.material.setParameter('numSplats', count);\n\t\t\t\t});\n\t\t\t\tthis.setHighQualitySH(options.highQualitySH ?? false);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.orderTexture?.destroy();\n\t\t\t\tthis.resolveSH?.destroy();\n\t\t\t\tthis.material?.destroy();\n\t\t\t\tthis.meshInstance?.destroy();\n\t\t\t\tthis.sorter?.destroy();\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material !== value) {\n\t\t\t\t\t\tthis._material = value;\n\t\t\t\t\t\tthis._material.setParameter('splatOrder', this.orderTexture);\n\t\t\t\t\t\tif (this.meshInstance) {\n\t\t\t\t\t\t\t\tthis.meshInstance.material = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tconfigureMaterial(material, options = {}) {\n\t\t\t\tthis.resource.configureMaterial(material);\n\t\t\t\tmaterial.setParameter('numSplats', 0);\n\t\t\t\tmaterial.setParameter('splatOrder', this.orderTexture);\n\t\t\t\tmaterial.setParameter('alphaClip', 0.3);\n\t\t\t\tmaterial.setDefine(`DITHER_${options.dither ? 'BLUENOISE' : 'NONE'}`, '');\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.blendType = options.dither ? BLEND_NONE : BLEND_PREMULTIPLIED;\n\t\t\t\tmaterial.depthWrite = !!options.dither;\n\t\t}\n\t\tupdateViewport(cameraNode) {\n\t\t\t\tconst camera = cameraNode?.camera;\n\t\t\t\tconst renderTarget = camera?.renderTarget;\n\t\t\t\tconst { width, height } = renderTarget ?? this.resource.device;\n\t\t\t\tviewport[0] = width;\n\t\t\t\tviewport[1] = height;\n\t\t\t\tconst xr = camera?.camera?.xr;\n\t\t\t\tif (xr?.active && xr.views.list.length === 2) {\n\t\t\t\t\t\tviewport[0] *= 0.5;\n\t\t\t\t}\n\t\t\t\tthis.material.setParameter('viewport', viewport);\n\t\t}\n\t\tsort(cameraNode) {\n\t\t\t\tif (this.sorter) {\n\t\t\t\t\t\tconst cameraMat = cameraNode.getWorldTransform();\n\t\t\t\t\t\tcameraMat.getTranslation(cameraPosition$1);\n\t\t\t\t\t\tcameraMat.getZ(cameraDirection$1);\n\t\t\t\t\t\tconst modelMat = this.meshInstance.node.getWorldTransform();\n\t\t\t\t\t\tconst invModelMat = mat.invert(modelMat);\n\t\t\t\t\t\tinvModelMat.transformPoint(cameraPosition$1, cameraPosition$1);\n\t\t\t\t\t\tinvModelMat.transformVector(cameraDirection$1, cameraDirection$1);\n\t\t\t\t\t\tif (!cameraPosition$1.equalsApprox(this.lastCameraPosition) || !cameraDirection$1.equalsApprox(this.lastCameraDirection)) {\n\t\t\t\t\t\t\t\tthis.lastCameraPosition.copy(cameraPosition$1);\n\t\t\t\t\t\t\t\tthis.lastCameraDirection.copy(cameraDirection$1);\n\t\t\t\t\t\t\t\tthis.sorter.setCamera(cameraPosition$1, cameraDirection$1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateViewport(cameraNode);\n\t\t}\n\t\tupdate() {\n\t\t\t\tif (this.cameras.length > 0) {\n\t\t\t\t\t\tconst camera = this.cameras[0];\n\t\t\t\t\t\tthis.sort(camera._node);\n\t\t\t\t\t\tthis.resolveSH?.render(camera._node, this.meshInstance.node.getWorldTransform());\n\t\t\t\t\t\tthis.cameras.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tsetHighQualitySH(value) {\n\t\t\t\tconst { resource } = this;\n\t\t\t\tconst { gsplatData } = resource;\n\t\t\t\tif (gsplatData instanceof GSplatSogsData && gsplatData.shBands > 0 && value === !!this.resolveSH) {\n\t\t\t\t\t\tif (this.resolveSH) {\n\t\t\t\t\t\t\t\tthis.resolveSH.destroy();\n\t\t\t\t\t\t\t\tthis.resolveSH = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.resolveSH = new GSplatResolveSH(resource.device, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatSogsResource extends GSplatResourceBase {\n\t\tdestroy() {\n\t\t\t\tthis.gsplatData.destroy();\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconfigureMaterialDefines(defines) {\n\t\t\t\tdefines.set('GSPLAT_SOGS_DATA', true);\n\t\t\t\tdefines.set('SH_BANDS', this.gsplatData.shBands);\n\t\t}\n\t\tconfigureMaterial(material) {\n\t\t\t\tconst { gsplatData } = this;\n\t\t\t\tconst { meta } = gsplatData;\n\t\t\t\tthis.configureMaterialDefines(material.defines);\n\t\t\t\t[\n\t\t\t\t\t\t'packedTexture',\n\t\t\t\t\t\t'packedSh0',\n\t\t\t\t\t\t'packedShN'\n\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\tif (gsplatData[name]) {\n\t\t\t\t\t\t\t\tmaterial.setParameter(name, gsplatData[name]);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\t[\n\t\t\t\t\t\t'means'\n\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, v.mins);\n\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, v.maxs);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (meta.version === 2) {\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t\t\t'shN'\n\t\t\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, v.codebook[0]);\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, v.codebook[255]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t\t\t'sh0'\n\t\t\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, Math.min(...v.mins.slice(0, 3)));\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, Math.max(...v.maxs.slice(0, 3)));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'shN'\n\t\t\t\t\t\t].forEach((name)=>{\n\t\t\t\t\t\t\t\tconst v = meta[name];\n\t\t\t\t\t\t\t\tif (v) {\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_mins`, v.mins);\n\t\t\t\t\t\t\t\t\t\tmaterial.setParameter(`${name}_maxs`, v.maxs);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tevalTextureSize(count) {\n\t\t\t\treturn new Vec2(this.gsplatData.means_l.width, this.gsplatData.means_l.height);\n\t\t}\n}\n\nconst FILLMODE_NONE = 'NONE';\nconst FILLMODE_FILL_WINDOW = 'FILL_WINDOW';\nconst FILLMODE_KEEP_ASPECT = 'KEEP_ASPECT';\nconst RESOLUTION_AUTO = 'AUTO';\nconst RESOLUTION_FIXED = 'FIXED';\n\nlet currentApplication;\nfunction getApplication() {\n\t\treturn currentApplication;\n}\nfunction setApplication(app) {\n\t\tcurrentApplication = app;\n}\n\nlet _createdLoadingScreen = false;\nconst script = {\n\t\tapp: null,\n\t\tcreateLoadingScreen (callback) {\n\t\t\t\tif (_createdLoadingScreen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t_createdLoadingScreen = true;\n\t\t\t\tconst app = getApplication();\n\t\t\t\tcallback(app);\n\t\t}\n};\n\nclass FrameGraph {\n\t\taddRenderPass(renderPass) {\n\t\t\t\trenderPass.frameUpdate();\n\t\t\t\tconst beforePasses = renderPass.beforePasses;\n\t\t\t\tfor(let i = 0; i < beforePasses.length; i++){\n\t\t\t\t\t\tconst pass = beforePasses[i];\n\t\t\t\t\t\tif (pass.enabled) {\n\t\t\t\t\t\t\t\tthis.addRenderPass(pass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (renderPass.enabled) {\n\t\t\t\t\t\tthis.renderPasses.push(renderPass);\n\t\t\t\t}\n\t\t\t\tconst afterPasses = renderPass.afterPasses;\n\t\t\t\tfor(let i = 0; i < afterPasses.length; i++){\n\t\t\t\t\t\tconst pass = afterPasses[i];\n\t\t\t\t\t\tif (pass.enabled) {\n\t\t\t\t\t\t\t\tthis.addRenderPass(pass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treset() {\n\t\t\t\tthis.renderPasses.length = 0;\n\t\t}\n\t\tcompile() {\n\t\t\t\tconst renderTargetMap = this.renderTargetMap;\n\t\t\t\tconst renderPasses = this.renderPasses;\n\t\t\t\tfor(let i = 0; i < renderPasses.length; i++){\n\t\t\t\t\t\tconst renderPass = renderPasses[i];\n\t\t\t\t\t\tconst renderTarget = renderPass.renderTarget;\n\t\t\t\t\t\tif (renderTarget !== undefined) {\n\t\t\t\t\t\t\t\tconst prevPass = renderTargetMap.get(renderTarget);\n\t\t\t\t\t\t\t\tif (prevPass) {\n\t\t\t\t\t\t\t\t\t\tconst count = renderPass.colorArrayOps.length;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < count; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst colorOps = renderPass.colorArrayOps[j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (!colorOps.clear) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprevPass.colorArrayOps[j].store = true;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.clearDepth) {\n\t\t\t\t\t\t\t\t\t\t\t\tprevPass.depthStencilOps.storeDepth = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!renderPass.depthStencilOps.clearStencil) {\n\t\t\t\t\t\t\t\t\t\t\t\tprevPass.depthStencilOps.storeStencil = true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\trenderTargetMap.set(renderTarget, renderPass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < renderPasses.length - 1; i++){\n\t\t\t\t\t\tconst firstPass = renderPasses[i];\n\t\t\t\t\t\tconst firstRT = firstPass.renderTarget;\n\t\t\t\t\t\tconst secondPass = renderPasses[i + 1];\n\t\t\t\t\t\tconst secondRT = secondPass.renderTarget;\n\t\t\t\t\t\tif (firstRT !== secondRT || firstRT === undefined) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (secondPass.depthStencilOps.clearDepth || secondPass.depthStencilOps.clearStencil || secondPass.colorArrayOps.some((colorOps)=>colorOps.clear)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (firstPass.afterPasses.length > 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (secondPass.beforePasses.length > 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfirstPass._skipEnd = true;\n\t\t\t\t\t\tsecondPass._skipStart = true;\n\t\t\t\t}\n\t\t\t\tlet lastCubeTexture = null;\n\t\t\t\tlet lastCubeRenderPass = null;\n\t\t\t\tfor(let i = 0; i < renderPasses.length; i++){\n\t\t\t\t\t\tconst renderPass = renderPasses[i];\n\t\t\t\t\t\tconst renderTarget = renderPass.renderTarget;\n\t\t\t\t\t\tconst thisTexture = renderTarget?.colorBuffer;\n\t\t\t\t\t\tif (thisTexture?.cubemap) {\n\t\t\t\t\t\t\t\tif (lastCubeTexture === thisTexture) {\n\t\t\t\t\t\t\t\t\t\tconst count = lastCubeRenderPass.colorArrayOps.length;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < count; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tlastCubeRenderPass.colorArrayOps[j].mipmaps = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlastCubeTexture = renderTarget.colorBuffer;\n\t\t\t\t\t\t\t\tlastCubeRenderPass = renderPass;\n\t\t\t\t\t\t} else if (renderPass.requiresCubemaps) {\n\t\t\t\t\t\t\t\tlastCubeTexture = null;\n\t\t\t\t\t\t\t\tlastCubeRenderPass = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trenderTargetMap.clear();\n\t\t}\n\t\trender(device) {\n\t\t\t\tthis.compile();\n\t\t\t\tconst renderPasses = this.renderPasses;\n\t\t\t\tfor(let i = 0; i < renderPasses.length; i++){\n\t\t\t\t\t\trenderPasses[i].render();\n\t\t\t\t}\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.renderPasses = [];\n\t\t\t\tthis.renderTargetMap = new Map();\n\t\t}\n}\n\nclass AreaLightCacheEntry {\n\t\tconstructor(texture0, texture1){\n\t\t\t\tthis.texture0 = texture0;\n\t\t\t\tthis.texture1 = texture1;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture0?.destroy();\n\t\t\t\tthis.texture1?.destroy();\n\t\t}\n}\nconst deviceCache = new DeviceCache();\nclass AreaLightLuts {\n\t\tstatic createTexture(device, format, size, postfix = '') {\n\t\t\t\tconst tex = new Texture(device, {\n\t\t\t\t\t\tname: `AreaLightLUT${postfix}`,\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\ttype: TEXTURETYPE_DEFAULT,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tanisotropy: 1,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\treturn tex;\n\t\t}\n\t\tstatic applyTextures(device, texture1, texture2) {\n\t\t\t\tdeviceCache.remove(device);\n\t\t\t\tdeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new AreaLightCacheEntry(texture1, texture1 === texture2 ? null : texture2);\n\t\t\t\t});\n\t\t\t\tdevice.scope.resolve('areaLightsLutTex1').setValue(texture1);\n\t\t\t\tdevice.scope.resolve('areaLightsLutTex2').setValue(texture2);\n\t\t}\n\t\tstatic createPlaceholder(device) {\n\t\t\t\tconst texture = AreaLightLuts.createTexture(device, PIXELFORMAT_RGBA16F, 2, 'placeholder');\n\t\t\t\tconst pixels = texture.lock();\n\t\t\t\tpixels.fill(0);\n\t\t\t\ttexture.unlock();\n\t\t\t\tAreaLightLuts.applyTextures(device, texture, texture);\n\t\t}\n\t\tstatic set(device, ltcMat1, ltcMat2) {\n\t\t\t\tfunction buildTexture(device, data, format) {\n\t\t\t\t\t\tconst texture = AreaLightLuts.createTexture(device, format, 64);\n\t\t\t\t\t\ttexture.lock().set(data);\n\t\t\t\t\t\ttexture.unlock();\n\t\t\t\t\t\treturn texture;\n\t\t\t\t}\n\t\t\t\tfunction convertToHalfFloat(data) {\n\t\t\t\t\t\tconst count = data.length;\n\t\t\t\t\t\tconst ret = new Uint16Array(count);\n\t\t\t\t\t\tconst float2Half = FloatPacking.float2Half;\n\t\t\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\t\t\tret[i] = float2Half(data[i]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn ret;\n\t\t\t\t}\n\t\t\t\tconst srcData1 = ltcMat1;\n\t\t\t\tconst srcData2 = ltcMat2;\n\t\t\t\tconst data1 = convertToHalfFloat(srcData1);\n\t\t\t\tconst data2 = convertToHalfFloat(srcData2);\n\t\t\t\tconst tex1 = buildTexture(device, data1, PIXELFORMAT_RGBA16F);\n\t\t\t\tconst tex2 = buildTexture(device, data2, PIXELFORMAT_RGBA16F);\n\t\t\t\tAreaLightLuts.applyTextures(device, tex1, tex2);\n\t\t}\n}\n\nconst DEFAULT_LOCALE = 'en-US';\nconst DEFAULT_LOCALE_FALLBACKS = {\n\t\t'en': 'en-US',\n\t\t'es': 'en-ES',\n\t\t'zh': 'zh-CN',\n\t\t'zh-HK': 'zh-TW',\n\t\t'zh-TW': 'zh-HK',\n\t\t'zh-MO': 'zh-HK',\n\t\t'fr': 'fr-FR',\n\t\t'de': 'de-DE',\n\t\t'it': 'it-IT',\n\t\t'ru': 'ru-RU',\n\t\t'ja': 'ja-JP'\n};\n\nconst PLURALS = {};\nfunction definePluralFn(locales, fn) {\n\t\tfor(let i = 0, len = locales.length; i < len; i++){\n\t\t\t\tPLURALS[locales[i]] = fn;\n\t\t}\n}\nfunction getLang(locale) {\n\t\tconst idx = locale.indexOf('-');\n\t\tif (idx !== -1) {\n\t\t\t\treturn locale.substring(0, idx);\n\t\t}\n\t\treturn locale;\n}\nfunction replaceLang(locale, desiredLang) {\n\t\tconst idx = locale.indexOf('-');\n\t\tif (idx !== -1) {\n\t\t\t\treturn desiredLang + locale.substring(idx);\n\t\t}\n\t\treturn desiredLang;\n}\nfunction findAvailableLocale(desiredLocale, availableLocales) {\n\t\tif (availableLocales[desiredLocale]) {\n\t\t\t\treturn desiredLocale;\n\t\t}\n\t\tlet fallback = DEFAULT_LOCALE_FALLBACKS[desiredLocale];\n\t\tif (fallback && availableLocales[fallback]) {\n\t\t\t\treturn fallback;\n\t\t}\n\t\tconst lang = getLang(desiredLocale);\n\t\tfallback = DEFAULT_LOCALE_FALLBACKS[lang];\n\t\tif (availableLocales[fallback]) {\n\t\t\t\treturn fallback;\n\t\t}\n\t\tif (availableLocales[lang]) {\n\t\t\t\treturn lang;\n\t\t}\n\t\treturn DEFAULT_LOCALE;\n}\ndefinePluralFn([\n\t\t'ja',\n\t\t'ko',\n\t\t'th',\n\t\t'vi',\n\t\t'zh',\n\t\t'id'\n], (n)=>{\n\t\treturn 0;\n});\ndefinePluralFn([\n\t\t'fa',\n\t\t'hi'\n], (n)=>{\n\t\tif (n >= 0 && n <= 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'fr',\n\t\t'pt'\n], (n)=>{\n\t\tif (n >= 0 && n < 2) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'da'\n], (n)=>{\n\t\tif (n === 1 || !Number.isInteger(n) && n >= 0 && n <= 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'de',\n\t\t'en',\n\t\t'it',\n\t\t'el',\n\t\t'es',\n\t\t'tr',\n\t\t'fi',\n\t\t'sv',\n\t\t'nb',\n\t\t'no',\n\t\t'ur'\n], (n)=>{\n\t\tif (n === 1) {\n\t\t\t\treturn 0;\n\t\t}\n\t\treturn 1;\n});\ndefinePluralFn([\n\t\t'ru',\n\t\t'uk'\n], (n)=>{\n\t\tif (Number.isInteger(n)) {\n\t\t\t\tconst mod10 = n % 10;\n\t\t\t\tconst mod100 = n % 100;\n\t\t\t\tif (mod10 === 1 && mod100 !== 11) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t} else if (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (mod10 === 0 || mod10 >= 5 && mod10 <= 9 || mod100 >= 11 && mod100 <= 14) {\n\t\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t}\n\t\treturn 3;\n});\ndefinePluralFn([\n\t\t'pl'\n], (n)=>{\n\t\tif (Number.isInteger(n)) {\n\t\t\t\tif (n === 1) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tconst mod10 = n % 10;\n\t\t\t\tconst mod100 = n % 100;\n\t\t\t\tif (mod10 >= 2 && mod10 <= 4 && (mod100 < 12 || mod100 > 14)) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t} else if (mod10 >= 0 && mod10 <= 1 || mod10 >= 5 && mod10 <= 9 || mod100 >= 12 && mod100 <= 14) {\n\t\t\t\t\t\treturn 2;\n\t\t\t\t}\n\t\t}\n\t\treturn 3;\n});\ndefinePluralFn([\n\t\t'ar'\n], (n)=>{\n\t\tif (n === 0) {\n\t\t\t\treturn 0;\n\t\t} else if (n === 1) {\n\t\t\t\treturn 1;\n\t\t} else if (n === 2) {\n\t\t\t\treturn 2;\n\t\t}\n\t\tif (Number.isInteger(n)) {\n\t\t\t\tconst mod100 = n % 100;\n\t\t\t\tif (mod100 >= 3 && mod100 <= 10) {\n\t\t\t\t\t\treturn 3;\n\t\t\t\t} else if (mod100 >= 11 && mod100 <= 99) {\n\t\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t}\n\t\treturn 5;\n});\nconst DEFAULT_PLURAL_FN = PLURALS[getLang(DEFAULT_LOCALE)];\nfunction getPluralFn(lang) {\n\t\treturn PLURALS[lang] || DEFAULT_PLURAL_FN;\n}\n\nconst ABSOLUTE_URL = new RegExp('^' + '\\\\s*' + '(?:' + '(?:' + '[a-z]+[a-z0-9\\\\-+.]*' + ':' + ')?' + '//' + '|' + 'data:' + '|blob:' + ')', 'i');\nconst ASSET_ANIMATION = 'animation';\nconst ASSET_AUDIO = 'audio';\nconst ASSET_IMAGE = 'image';\nconst ASSET_JSON = 'json';\nconst ASSET_MODEL = 'model';\nconst ASSET_MATERIAL = 'material';\nconst ASSET_TEXT = 'text';\nconst ASSET_TEXTURE = 'texture';\nconst ASSET_TEXTUREATLAS = 'textureatlas';\nconst ASSET_CUBEMAP = 'cubemap';\nconst ASSET_SHADER = 'shader';\nconst ASSET_CSS = 'css';\nconst ASSET_HTML = 'html';\nconst ASSET_SCRIPT = \"script\";\nconst ASSET_CONTAINER = 'container';\n\nclass AssetFile {\n\t\tconstructor(url = '', filename = '', hash = null, size = null, opt = null, contents = null){\n\t\t\t\tthis.url = url;\n\t\t\t\tthis.filename = filename;\n\t\t\t\tthis.hash = hash;\n\t\t\t\tthis.size = size;\n\t\t\t\tthis.opt = opt;\n\t\t\t\tthis.contents = contents;\n\t\t}\n\t\tequals(other) {\n\t\t\t\treturn this.url === other.url && this.filename === other.filename && this.hash === other.hash && this.size === other.size && this.opt === other.opt && this.contents === other.contents;\n\t\t}\n}\n\nlet assetIdCounter = -1;\nconst VARIANT_SUPPORT = {\n\t\tpvr: 'extCompressedTexturePVRTC',\n\t\tdxt: 'extCompressedTextureS3TC',\n\t\tetc2: 'extCompressedTextureETC',\n\t\tetc1: 'extCompressedTextureETC1',\n\t\tbasis: 'canvas'\n};\nconst VARIANT_DEFAULT_PRIORITY = [\n\t\t'pvr',\n\t\t'dxt',\n\t\t'etc2',\n\t\t'etc1',\n\t\t'basis'\n];\nclass Asset extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNLOAD = 'unload';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PROGRESS = 'progress';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADDLOCALIZED = 'add:localized';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVELOCALIZED = 'remove:localized';\n\t\t}\n\t\tconstructor(name, type, file, data = {}, options = {}){\n\t\t\t\tsuper(), this._file = null, this._i18n = {}, this._preload = false, this._resources = [], this.id = assetIdCounter--, this.loaded = false, this.loading = false, this.options = {}, this.registry = null, this.tags = new Tags(this), this.urlObject = null;\n\t\t\t\tthis._name = name || '';\n\t\t\t\tthis.type = type;\n\t\t\t\tthis._data = data || {};\n\t\t\t\tthis.options = options || {};\n\t\t\t\tif (file) this.file = file;\n\t\t}\n\t\tset name(value) {\n\t\t\t\tif (this._name === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst old = this._name;\n\t\t\t\tthis._name = value;\n\t\t\t\tthis.fire('name', this, this._name, old);\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset file(value) {\n\t\t\t\tif (value && value.variants && [\n\t\t\t\t\t\t'texture',\n\t\t\t\t\t\t'textureatlas',\n\t\t\t\t\t\t'bundle'\n\t\t\t\t].indexOf(this.type) !== -1) {\n\t\t\t\t\t\tconst app = this.registry?._loader?._app || getApplication();\n\t\t\t\t\t\tconst device = app?.graphicsDevice;\n\t\t\t\t\t\tif (device) {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = VARIANT_DEFAULT_PRIORITY.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst variant = VARIANT_DEFAULT_PRIORITY[i];\n\t\t\t\t\t\t\t\t\t\tif (value.variants[variant] && device[VARIANT_SUPPORT[variant]]) {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = value.variants[variant];\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (app.enableBundles) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst bundles = app.bundles.listBundlesForAsset(this);\n\t\t\t\t\t\t\t\t\t\t\t\tif (bundles && bundles.find((b)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn b?.file?.variants[variant];\n\t\t\t\t\t\t\t\t\t\t\t\t})) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst oldFile = this._file;\n\t\t\t\tconst newFile = value ? new AssetFile(value.url, value.filename, value.hash, value.size, value.opt, value.contents) : null;\n\t\t\t\tif (!!newFile !== !!oldFile || newFile && !newFile.equals(oldFile)) {\n\t\t\t\t\t\tthis._file = newFile;\n\t\t\t\t\t\tthis.fire('change', this, 'file', newFile, oldFile);\n\t\t\t\t\t\tthis.reload();\n\t\t\t\t}\n\t\t}\n\t\tget file() {\n\t\t\t\treturn this._file;\n\t\t}\n\t\tset data(value) {\n\t\t\t\tconst old = this._data;\n\t\t\t\tthis._data = value;\n\t\t\t\tif (value !== old) {\n\t\t\t\t\t\tthis.fire('change', this, 'data', value, old);\n\t\t\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\t\t\tthis.registry._loader.patch(this, this.registry);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n\t\tset resource(value) {\n\t\t\t\tconst _old = this._resources[0];\n\t\t\t\tthis._resources[0] = value;\n\t\t\t\tthis.fire('change', this, 'resource', value, _old);\n\t\t}\n\t\tget resource() {\n\t\t\t\treturn this._resources[0];\n\t\t}\n\t\tset resources(value) {\n\t\t\t\tconst _old = this._resources;\n\t\t\t\tthis._resources = value;\n\t\t\t\tthis.fire('change', this, 'resources', value, _old);\n\t\t}\n\t\tget resources() {\n\t\t\t\treturn this._resources;\n\t\t}\n\t\tset preload(value) {\n\t\t\t\tvalue = !!value;\n\t\t\t\tif (this._preload === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._preload = value;\n\t\t\t\tif (this._preload && !this.loaded && !this.loading && this.registry) {\n\t\t\t\t\t\tthis.registry.load(this);\n\t\t\t\t}\n\t\t}\n\t\tget preload() {\n\t\t\t\treturn this._preload;\n\t\t}\n\t\tset loadFaces(value) {\n\t\t\t\tvalue = !!value;\n\t\t\t\tif (!this.hasOwnProperty('_loadFaces') || value !== this._loadFaces) {\n\t\t\t\t\t\tthis._loadFaces = value;\n\t\t\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\t\t\tthis.registry._loader.patch(this, this.registry);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget loadFaces() {\n\t\t\t\treturn this._loadFaces;\n\t\t}\n\t\tgetFileUrl() {\n\t\t\t\tconst file = this.file;\n\t\t\t\tif (!file || !file.url) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet url = file.url;\n\t\t\t\tif (this.registry && this.registry.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\t\t\t\turl = this.registry.prefix + url;\n\t\t\t\t}\n\t\t\t\tif (this.type !== \"script\" && file.hash) {\n\t\t\t\t\t\tconst separator = url.indexOf('?') !== -1 ? '&' : '?';\n\t\t\t\t\t\turl += `${separator}t=${file.hash}`;\n\t\t\t\t}\n\t\t\t\treturn url;\n\t\t}\n\t\tgetAbsoluteUrl(relativePath) {\n\t\t\t\tif (relativePath.startsWith('blob:') || relativePath.startsWith('data:')) {\n\t\t\t\t\t\treturn relativePath;\n\t\t\t\t}\n\t\t\t\tconst base = path.getDirectory(this.file.url);\n\t\t\t\treturn path.join(base, relativePath);\n\t\t}\n\t\tgetLocalizedAssetId(locale) {\n\t\t\t\tlocale = findAvailableLocale(locale, this._i18n);\n\t\t\t\treturn this._i18n[locale] || null;\n\t\t}\n\t\taddLocalizedAssetId(locale, assetId) {\n\t\t\t\tthis._i18n[locale] = assetId;\n\t\t\t\tthis.fire('add:localized', locale, assetId);\n\t\t}\n\t\tremoveLocalizedAssetId(locale) {\n\t\t\t\tconst assetId = this._i18n[locale];\n\t\t\t\tif (assetId) {\n\t\t\t\t\t\tdelete this._i18n[locale];\n\t\t\t\t\t\tthis.fire('remove:localized', locale, assetId);\n\t\t\t\t}\n\t\t}\n\t\tready(callback, scope) {\n\t\t\t\tscope = scope || this;\n\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\tcallback.call(scope, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.once('load', (asset)=>{\n\t\t\t\t\t\t\t\tcallback.call(scope, asset);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\treload() {\n\t\t\t\tif (this.loaded) {\n\t\t\t\t\t\tthis.loaded = false;\n\t\t\t\t\t\tthis.registry.load(this);\n\t\t\t\t}\n\t\t}\n\t\tunload() {\n\t\t\t\tif (!this.loaded && this._resources.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fire('unload', this);\n\t\t\t\tthis.registry.fire(`unload:${this.id}`, this);\n\t\t\t\tconst old = this._resources;\n\t\t\t\tif (this.urlObject) {\n\t\t\t\t\t\tURL.revokeObjectURL(this.urlObject);\n\t\t\t\t\t\tthis.urlObject = null;\n\t\t\t\t}\n\t\t\t\tthis.resources = [];\n\t\t\t\tthis.loaded = false;\n\t\t\t\tif (this.file) {\n\t\t\t\t\t\tthis.registry._loader.clearCache(this.getFileUrl(), this.type);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < old.length; ++i){\n\t\t\t\t\t\told[i]?.destroy?.();\n\t\t\t\t}\n\t\t}\n\t\tstatic fetchArrayBuffer(loadUrl, callback, asset, maxRetries = 0) {\n\t\t\t\tif (asset?.file?.contents) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tcallback(null, asset.file.contents);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\thttp.get(loadUrl, {\n\t\t\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\t\t\tresponseType: 'arraybuffer',\n\t\t\t\t\t\t\t\tretry: maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: maxRetries,\n\t\t\t\t\t\t\t\tprogress: asset\n\t\t\t\t\t\t}, callback);\n\t\t\t\t}\n\t\t}\n}\n\nclass TagsCache {\n\t\tconstructor(key = null){\n\t\t\t\tthis._index = {};\n\t\t\t\tthis._key = key;\n\t\t}\n\t\taddItem(item) {\n\t\t\t\tconst tags = item.tags._list;\n\t\t\t\tfor (const tag of tags){\n\t\t\t\t\t\tthis.add(tag, item);\n\t\t\t\t}\n\t\t}\n\t\tremoveItem(item) {\n\t\t\t\tconst tags = item.tags._list;\n\t\t\t\tfor (const tag of tags){\n\t\t\t\t\t\tthis.remove(tag, item);\n\t\t\t\t}\n\t\t}\n\t\tadd(tag, item) {\n\t\t\t\tif (this._index[tag] && this._index[tag].list.indexOf(item) !== -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._index[tag]) {\n\t\t\t\t\t\tthis._index[tag] = {\n\t\t\t\t\t\t\t\tlist: []\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\t\t\tthis._index[tag].keys = {};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._index[tag].list.push(item);\n\t\t\t\tif (this._key) {\n\t\t\t\t\t\tthis._index[tag].keys[item[this._key]] = item;\n\t\t\t\t}\n\t\t}\n\t\tremove(tag, item) {\n\t\t\t\tif (!this._index[tag]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._key) {\n\t\t\t\t\t\tif (!this._index[tag].keys[item[this._key]]) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst ind = this._index[tag].list.indexOf(item);\n\t\t\t\tif (ind === -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._index[tag].list.splice(ind, 1);\n\t\t\t\tif (this._key) {\n\t\t\t\t\t\tdelete this._index[tag].keys[item[this._key]];\n\t\t\t\t}\n\t\t\t\tif (this._index[tag].list.length === 0) {\n\t\t\t\t\t\tdelete this._index[tag];\n\t\t\t\t}\n\t\t}\n\t\tfind(args) {\n\t\t\t\tconst index = {};\n\t\t\t\tconst items = [];\n\t\t\t\tlet item, tag, tags, tagsRest, missingIndex;\n\t\t\t\tconst sort = (a, b)=>{\n\t\t\t\t\t\treturn this._index[a].list.length - this._index[b].list.length;\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < args.length; i++){\n\t\t\t\t\t\ttag = args[i];\n\t\t\t\t\t\tif (tag instanceof Array) {\n\t\t\t\t\t\t\t\tif (tag.length === 0) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (tag.length === 1) {\n\t\t\t\t\t\t\t\t\t\ttag = tag[0];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmissingIndex = false;\n\t\t\t\t\t\t\t\t\t\tfor(let t = 0; t < tag.length; t++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (!this._index[tag[t]]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmissingIndex = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (missingIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttags = tag.slice(0).sort(sort);\n\t\t\t\t\t\t\t\t\t\ttagsRest = tags.slice(1);\n\t\t\t\t\t\t\t\t\t\tif (tagsRest.length === 1) {\n\t\t\t\t\t\t\t\t\t\t\t\ttagsRest = tagsRest[0];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfor(let n = 0; n < this._index[tags[0]].list.length; n++){\n\t\t\t\t\t\t\t\t\t\t\t\titem = this._index[tags[0]].list[n];\n\t\t\t\t\t\t\t\t\t\t\t\tif ((this._key ? !index[item[this._key]] : items.indexOf(item) === -1) && item.tags.has(tagsRest)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex[item[this._key]] = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (tag && typeof tag === 'string' && this._index[tag]) {\n\t\t\t\t\t\t\t\tfor(let n = 0; n < this._index[tag].list.length; n++){\n\t\t\t\t\t\t\t\t\t\titem = this._index[tag].list[n];\n\t\t\t\t\t\t\t\t\t\tif (this._key) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!index[item[this._key]]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tindex[item[this._key]] = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else if (items.indexOf(item) === -1) {\n\t\t\t\t\t\t\t\t\t\t\t\titems.push(item);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn items;\n\t\t}\n}\n\nclass AssetRegistry extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(loader){\n\t\t\t\tsuper(), this._assets = new Set(), this._idToAsset = new Map(), this._urlToAsset = new Map(), this._nameToAsset = new Map(), this._tags = new TagsCache('id'), this.prefix = null, this.bundles = null;\n\t\t\t\tthis._loader = loader;\n\t\t}\n\t\tlist(filters = {}) {\n\t\t\t\tconst assets = Array.from(this._assets);\n\t\t\t\tif (filters.preload !== undefined) {\n\t\t\t\t\t\treturn assets.filter((asset)=>asset.preload === filters.preload);\n\t\t\t\t}\n\t\t\t\treturn assets;\n\t\t}\n\t\tadd(asset) {\n\t\t\t\tif (this._assets.has(asset)) return;\n\t\t\t\tthis._assets.add(asset);\n\t\t\t\tthis._idToAsset.set(asset.id, asset);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis._urlToAsset.set(asset.file.url, asset);\n\t\t\t\t}\n\t\t\t\tif (!this._nameToAsset.has(asset.name)) {\n\t\t\t\t\t\tthis._nameToAsset.set(asset.name, new Set());\n\t\t\t\t}\n\t\t\t\tthis._nameToAsset.get(asset.name).add(asset);\n\t\t\t\tasset.on('name', this._onNameChange, this);\n\t\t\t\tasset.registry = this;\n\t\t\t\tthis._tags.addItem(asset);\n\t\t\t\tasset.tags.on('add', this._onTagAdd, this);\n\t\t\t\tasset.tags.on('remove', this._onTagRemove, this);\n\t\t\t\tthis.fire('add', asset);\n\t\t\t\tthis.fire(`add:${asset.id}`, asset);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis.fire(`add:url:${asset.file.url}`, asset);\n\t\t\t\t}\n\t\t\t\tif (asset.preload) {\n\t\t\t\t\t\tthis.load(asset);\n\t\t\t\t}\n\t\t}\n\t\tremove(asset) {\n\t\t\t\tif (!this._assets.has(asset)) return false;\n\t\t\t\tthis._assets.delete(asset);\n\t\t\t\tthis._idToAsset.delete(asset.id);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis._urlToAsset.delete(asset.file.url);\n\t\t\t\t}\n\t\t\t\tasset.off('name', this._onNameChange, this);\n\t\t\t\tif (this._nameToAsset.has(asset.name)) {\n\t\t\t\t\t\tconst items = this._nameToAsset.get(asset.name);\n\t\t\t\t\t\titems.delete(asset);\n\t\t\t\t\t\tif (items.size === 0) {\n\t\t\t\t\t\t\t\tthis._nameToAsset.delete(asset.name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._tags.removeItem(asset);\n\t\t\t\tasset.tags.off('add', this._onTagAdd, this);\n\t\t\t\tasset.tags.off('remove', this._onTagRemove, this);\n\t\t\t\tasset.fire('remove', asset);\n\t\t\t\tthis.fire('remove', asset);\n\t\t\t\tthis.fire(`remove:${asset.id}`, asset);\n\t\t\t\tif (asset.file?.url) {\n\t\t\t\t\t\tthis.fire(`remove:url:${asset.file.url}`, asset);\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tget(id) {\n\t\t\t\treturn this._idToAsset.get(Number(id));\n\t\t}\n\t\tgetByUrl(url) {\n\t\t\t\treturn this._urlToAsset.get(url);\n\t\t}\n\t\tload(asset, options) {\n\t\t\t\tif ((asset.loading || asset.loaded) && !options?.force) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst file = asset.file;\n\t\t\t\tconst _fireLoad = ()=>{\n\t\t\t\t\t\tthis.fire('load', asset);\n\t\t\t\t\t\tthis.fire(`load:${asset.id}`, asset);\n\t\t\t\t\t\tif (file && file.url) {\n\t\t\t\t\t\t\t\tthis.fire(`load:url:${file.url}`, asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tasset.fire('load', asset);\n\t\t\t\t};\n\t\t\t\tconst _opened = (resource)=>{\n\t\t\t\t\t\tif (resource instanceof Array) {\n\t\t\t\t\t\t\t\tasset.resources = resource;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tasset.resource = resource;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._loader.patch(asset, this);\n\t\t\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst assetInBundle = this._idToAsset.get(assetIds[i]);\n\t\t\t\t\t\t\t\t\t\tif (assetInBundle && !assetInBundle.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.load(assetInBundle, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tforce: true\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (asset.resource.loaded) {\n\t\t\t\t\t\t\t\t\t\t_fireLoad();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.fire('load:start', asset);\n\t\t\t\t\t\t\t\t\t\tthis.fire(`load:start:${asset.id}`, asset);\n\t\t\t\t\t\t\t\t\t\tif (file && file.url) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire(`load:start:url:${file.url}`, asset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tasset.fire('load:start', asset);\n\t\t\t\t\t\t\t\t\t\tasset.resource.on('load', _fireLoad);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_fireLoad();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst _loaded = (err, resource, extra)=>{\n\t\t\t\t\t\tasset.loaded = true;\n\t\t\t\t\t\tasset.loading = false;\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tthis.fire('error', err, asset);\n\t\t\t\t\t\t\t\tthis.fire(`error:${asset.id}`, err, asset);\n\t\t\t\t\t\t\t\tasset.fire('error', err, asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (asset.type === \"script\") {\n\t\t\t\t\t\t\t\t\t\tconst handler = this._loader.getHandler(\"script\");\n\t\t\t\t\t\t\t\t\t\tif (handler._cache[asset.id] && handler._cache[asset.id].parentNode === document.head) {\n\t\t\t\t\t\t\t\t\t\t\t\tdocument.head.removeChild(handler._cache[asset.id]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\thandler._cache[asset.id] = extra;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_opened(resource);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (file || asset.type === 'cubemap') {\n\t\t\t\t\t\tthis.fire('load:start', asset);\n\t\t\t\t\t\tthis.fire(`load:${asset.id}:start`, asset);\n\t\t\t\t\t\tasset.loading = true;\n\t\t\t\t\t\tconst fileUrl = asset.getFileUrl();\n\t\t\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst assetInBundle = this._idToAsset.get(assetIds[i]);\n\t\t\t\t\t\t\t\t\t\tif (!assetInBundle) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (assetInBundle.loaded || assetInBundle.resource || assetInBundle.loading) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tassetInBundle.loading = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._loader.load(fileUrl, asset.type, _loaded, asset, options);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst resource = this._loader.open(asset.type, asset.data);\n\t\t\t\t\t\tasset.loaded = true;\n\t\t\t\t\t\t_opened(resource);\n\t\t\t\t}\n\t\t}\n\t\tloadFromUrl(url, type, callback) {\n\t\t\t\tthis.loadFromUrlAndFilename(url, null, type, callback);\n\t\t}\n\t\tloadFromUrlAndFilename(url, filename, type, callback) {\n\t\t\t\tconst name = path.getBasename(filename || url);\n\t\t\t\tconst file = {\n\t\t\t\t\t\tfilename: filename || name,\n\t\t\t\t\t\turl: url\n\t\t\t\t};\n\t\t\t\tlet asset = this.getByUrl(url);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tasset = new Asset(name, type, file);\n\t\t\t\t\t\tthis.add(asset);\n\t\t\t\t} else if (asset.loaded) {\n\t\t\t\t\t\tcallback(asset.loadFromUrlError || null, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst startLoad = (asset)=>{\n\t\t\t\t\t\tasset.once('load', (loadedAsset)=>{\n\t\t\t\t\t\t\t\tif (type === 'material') {\n\t\t\t\t\t\t\t\t\t\tthis._loadTextures(loadedAsset, (err, textures)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(err, loadedAsset);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(null, loadedAsset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tasset.once('error', (err)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tthis.loadFromUrlError = err;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(err, asset);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.load(asset);\n\t\t\t\t};\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tcallback(null, asset);\n\t\t\t\t} else if (type === 'model') {\n\t\t\t\t\t\tthis._loadModel(asset, startLoad);\n\t\t\t\t} else {\n\t\t\t\t\t\tstartLoad(asset);\n\t\t\t\t}\n\t\t}\n\t\t_loadModel(modelAsset, continuation) {\n\t\t\t\tconst url = modelAsset.getFileUrl();\n\t\t\t\tconst ext = path.getExtension(url);\n\t\t\t\tif (ext === '.json' || ext === '.glb') {\n\t\t\t\t\t\tconst dir = path.getDirectory(url);\n\t\t\t\t\t\tconst basename = path.getBasename(url);\n\t\t\t\t\t\tconst mappingUrl = path.join(dir, basename.replace(ext, '.mapping.json'));\n\t\t\t\t\t\tthis._loader.load(mappingUrl, 'json', (err, data)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tmodelAsset.data = {\n\t\t\t\t\t\t\t\t\t\t\t\tmapping: []\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._loadMaterials(modelAsset, data, (e, materials)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tmodelAsset.data = data;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcontinuation(modelAsset);\n\t\t\t\t}\n\t\t}\n\t\t_loadMaterials(modelAsset, mapping, callback) {\n\t\t\t\tconst materials = [];\n\t\t\t\tlet count = 0;\n\t\t\t\tconst onMaterialLoaded = (err, materialAsset)=>{\n\t\t\t\t\t\tthis._loadTextures(materialAsset, (err, textures)=>{\n\t\t\t\t\t\t\t\tmaterials.push(materialAsset);\n\t\t\t\t\t\t\t\tif (materials.length === count) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, materials);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < mapping.mapping.length; i++){\n\t\t\t\t\t\tconst path = mapping.mapping[i].path;\n\t\t\t\t\t\tif (path) {\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t\t\tconst url = modelAsset.getAbsoluteUrl(path);\n\t\t\t\t\t\t\t\tthis.loadFromUrl(url, 'material', onMaterialLoaded);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (count === 0) {\n\t\t\t\t\t\tcallback(null, materials);\n\t\t\t\t}\n\t\t}\n\t\t_loadTextures(materialAsset, callback) {\n\t\t\t\tconst textures = [];\n\t\t\t\tlet count = 0;\n\t\t\t\tconst data = materialAsset.data;\n\t\t\t\tif (data.mappingFormat !== 'path') {\n\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst onTextureLoaded = (err, texture)=>{\n\t\t\t\t\t\tif (err) console.error(err);\n\t\t\t\t\t\ttextures.push(texture);\n\t\t\t\t\t\tif (textures.length === count) {\n\t\t\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst texParams = standardMaterialTextureParameters;\n\t\t\t\tfor(let i = 0; i < texParams.length; i++){\n\t\t\t\t\t\tconst path = data[texParams[i]];\n\t\t\t\t\t\tif (path && typeof path === 'string') {\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t\t\tconst url = materialAsset.getAbsoluteUrl(path);\n\t\t\t\t\t\t\t\tthis.loadFromUrl(url, 'texture', onTextureLoaded);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (count === 0) {\n\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t}\n\t\t}\n\t\t_onTagAdd(tag, asset) {\n\t\t\t\tthis._tags.add(tag, asset);\n\t\t}\n\t\t_onTagRemove(tag, asset) {\n\t\t\t\tthis._tags.remove(tag, asset);\n\t\t}\n\t\t_onNameChange(asset, name, nameOld) {\n\t\t\t\tif (this._nameToAsset.has(nameOld)) {\n\t\t\t\t\t\tconst items = this._nameToAsset.get(nameOld);\n\t\t\t\t\t\titems.delete(asset);\n\t\t\t\t\t\tif (items.size === 0) {\n\t\t\t\t\t\t\t\tthis._nameToAsset.delete(nameOld);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this._nameToAsset.has(asset.name)) {\n\t\t\t\t\t\tthis._nameToAsset.set(asset.name, new Set());\n\t\t\t\t}\n\t\t\t\tthis._nameToAsset.get(asset.name).add(asset);\n\t\t}\n\t\tfindByTag(...query) {\n\t\t\t\treturn this._tags.find(query);\n\t\t}\n\t\tfilter(callback) {\n\t\t\t\treturn Array.from(this._assets).filter((asset)=>callback(asset));\n\t\t}\n\t\tfind(name, type) {\n\t\t\t\tconst items = this._nameToAsset.get(name);\n\t\t\t\tif (!items) return null;\n\t\t\t\tfor (const asset of items){\n\t\t\t\t\t\tif (!type || asset.type === type) {\n\t\t\t\t\t\t\t\treturn asset;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tfindAll(name, type) {\n\t\t\t\tconst items = this._nameToAsset.get(name);\n\t\t\t\tif (!items) return [];\n\t\t\t\tconst results = Array.from(items);\n\t\t\t\tif (!type) return results;\n\t\t\t\treturn results.filter((asset)=>asset.type === type);\n\t\t}\n}\n\nclass BundleRegistry {\n\t\tconstructor(assets){\n\t\t\t\tthis._idToBundle = new Map();\n\t\t\t\tthis._assetToBundles = new Map();\n\t\t\t\tthis._urlsToBundles = new Map();\n\t\t\t\tthis._fileRequests = new Map();\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis._assets.bundles = this;\n\t\t\t\tthis._assets.on('add', this._onAssetAdd, this);\n\t\t\t\tthis._assets.on('remove', this._onAssetRemove, this);\n\t\t}\n\t\t_onAssetAdd(asset) {\n\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\tthis._idToBundle.set(asset.id, asset);\n\t\t\t\t\t\tthis._assets.on(`load:start:${asset.id}`, this._onBundleLoadStart, this);\n\t\t\t\t\t\tthis._assets.on(`load:${asset.id}`, this._onBundleLoad, this);\n\t\t\t\t\t\tthis._assets.on(`error:${asset.id}`, this._onBundleError, this);\n\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\tthis._indexAssetInBundle(assetIds[i], asset);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._assetToBundles.has(asset.id)) {\n\t\t\t\t\t\t\t\tthis._indexAssetFileUrls(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_unbindAssetEvents(id) {\n\t\t\t\tthis._assets.off(`load:start:${id}`, this._onBundleLoadStart, this);\n\t\t\t\tthis._assets.off(`load:${id}`, this._onBundleLoad, this);\n\t\t\t\tthis._assets.off(`error:${id}`, this._onBundleError, this);\n\t\t}\n\t\t_indexAssetInBundle(id, bundle) {\n\t\t\t\tlet bundles = this._assetToBundles.get(id);\n\t\t\t\tif (!bundles) {\n\t\t\t\t\t\tbundles = new Set();\n\t\t\t\t\t\tthis._assetToBundles.set(id, bundles);\n\t\t\t\t}\n\t\t\t\tbundles.add(bundle);\n\t\t\t\tconst asset = this._assets.get(id);\n\t\t\t\tif (asset) this._indexAssetFileUrls(asset);\n\t\t}\n\t\t_indexAssetFileUrls(asset) {\n\t\t\t\tconst urls = this._getAssetFileUrls(asset);\n\t\t\t\tif (!urls) return;\n\t\t\t\tfor(let i = 0; i < urls.length; i++){\n\t\t\t\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\t\t\t\tif (!bundles) continue;\n\t\t\t\t\t\tthis._urlsToBundles.set(urls[i], bundles);\n\t\t\t\t}\n\t\t}\n\t\t_getAssetFileUrls(asset) {\n\t\t\t\tlet url = asset.getFileUrl();\n\t\t\t\tif (!url) return null;\n\t\t\t\turl = url.split('?')[0];\n\t\t\t\tconst urls = [\n\t\t\t\t\t\turl\n\t\t\t\t];\n\t\t\t\tif (asset.type === 'font') {\n\t\t\t\t\t\tconst numFiles = asset.data.info.maps.length;\n\t\t\t\t\t\tfor(let i = 1; i < numFiles; i++){\n\t\t\t\t\t\t\t\turls.push(url.replace('.png', `${i}.png`));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn urls;\n\t\t}\n\t\t_onAssetRemove(asset) {\n\t\t\t\tif (asset.type === 'bundle') {\n\t\t\t\t\t\tthis._idToBundle.delete(asset.id);\n\t\t\t\t\t\tthis._unbindAssetEvents(asset.id);\n\t\t\t\t\t\tconst assetIds = asset.data.assets;\n\t\t\t\t\t\tfor(let i = 0; i < assetIds.length; i++){\n\t\t\t\t\t\t\t\tconst bundles = this._assetToBundles.get(assetIds[i]);\n\t\t\t\t\t\t\t\tif (!bundles) continue;\n\t\t\t\t\t\t\t\tbundles.delete(asset);\n\t\t\t\t\t\t\t\tif (bundles.size === 0) {\n\t\t\t\t\t\t\t\t\t\tthis._assetToBundles.delete(assetIds[i]);\n\t\t\t\t\t\t\t\t\t\tfor (const [url, otherBundles] of this._urlsToBundles){\n\t\t\t\t\t\t\t\t\t\t\t\tif (otherBundles !== bundles) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis._urlsToBundles.delete(url);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._onBundleError(`Bundle ${asset.id} was removed`);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\t\t\t\tif (!bundles) return;\n\t\t\t\t\t\tthis._assetToBundles.delete(asset.id);\n\t\t\t\t\t\tconst urls = this._getAssetFileUrls(asset);\n\t\t\t\t\t\tif (!urls) return;\n\t\t\t\t\t\tfor(let i = 0; i < urls.length; i++){\n\t\t\t\t\t\t\t\tthis._urlsToBundles.delete(urls[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onBundleLoadStart(asset) {\n\t\t\t\tasset.resource.on('add', (url, data)=>{\n\t\t\t\t\t\tconst callbacks = this._fileRequests.get(url);\n\t\t\t\t\t\tif (!callbacks) return;\n\t\t\t\t\t\tfor(let i = 0; i < callbacks.length; i++){\n\t\t\t\t\t\t\t\tcallbacks[i](null, data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t\t});\n\t\t}\n\t\t_onBundleLoad(asset) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\tthis._onBundleError(`Bundle ${asset.id} failed to load`);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._fileRequests) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (const [url, requests] of this._fileRequests){\n\t\t\t\t\t\tconst bundles = this._urlsToBundles.get(url);\n\t\t\t\t\t\tif (!bundles || !bundles.has(asset)) continue;\n\t\t\t\t\t\tconst decodedUrl = decodeURIComponent(url);\n\t\t\t\t\t\tlet err, data;\n\t\t\t\t\t\tif (asset.resource.has(decodedUrl)) {\n\t\t\t\t\t\t\t\tdata = asset.resource.get(decodedUrl);\n\t\t\t\t\t\t} else if (asset.resource.loaded) {\n\t\t\t\t\t\t\t\terr = `Bundle ${asset.id} does not contain URL ${url}`;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < requests.length; i++){\n\t\t\t\t\t\t\t\trequests[i](err, err || data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t\t}\n\t\t}\n\t\t_onBundleError(err) {\n\t\t\t\tfor (const [url, requests] of this._fileRequests){\n\t\t\t\t\t\tconst bundle = this._findLoadedOrLoadingBundleForUrl(url);\n\t\t\t\t\t\tif (!bundle) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < requests.length; i++){\n\t\t\t\t\t\t\t\t\t\trequests[i](err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._fileRequests.delete(url);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_findLoadedOrLoadingBundleForUrl(url) {\n\t\t\t\tconst bundles = this._urlsToBundles.get(url);\n\t\t\t\tif (!bundles) return null;\n\t\t\t\tlet candidate = null;\n\t\t\t\tfor (const bundle of bundles){\n\t\t\t\t\t\tif (bundle.loaded && bundle.resource) {\n\t\t\t\t\t\t\t\treturn bundle;\n\t\t\t\t\t\t} else if (bundle.loading) {\n\t\t\t\t\t\t\t\tcandidate = bundle;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn candidate;\n\t\t}\n\t\tlistBundlesForAsset(asset) {\n\t\t\t\tconst bundles = this._assetToBundles.get(asset.id);\n\t\t\t\tif (bundles) return Array.from(bundles);\n\t\t\t\treturn null;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn Array.from(this._idToBundle.values());\n\t\t}\n\t\thasUrl(url) {\n\t\t\t\treturn this._urlsToBundles.has(url);\n\t\t}\n\t\turlIsLoadedOrLoading(url) {\n\t\t\t\treturn !!this._findLoadedOrLoadingBundleForUrl(url);\n\t\t}\n\t\tloadUrl(url, callback) {\n\t\t\t\tconst bundle = this._findLoadedOrLoadingBundleForUrl(url);\n\t\t\t\tif (!bundle) {\n\t\t\t\t\t\tcallback(`URL ${url} not found in any bundles`);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (bundle.loaded) {\n\t\t\t\t\t\tconst decodedUrl = decodeURIComponent(url);\n\t\t\t\t\t\tif (bundle.resource.has(decodedUrl)) {\n\t\t\t\t\t\t\t\tcallback(null, bundle.resource.get(decodedUrl));\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t} else if (bundle.resource.loaded) {\n\t\t\t\t\t\t\t\tcallback(`Bundle ${bundle.id} does not contain URL ${url}`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet callbacks = this._fileRequests.get(url);\n\t\t\t\tif (!callbacks) {\n\t\t\t\t\t\tcallbacks = [];\n\t\t\t\t\t\tthis._fileRequests.set(url, callbacks);\n\t\t\t\t}\n\t\t\t\tcallbacks.push(callback);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._assets.off('add', this._onAssetAdd, this);\n\t\t\t\tthis._assets.off('remove', this._onAssetRemove, this);\n\t\t\t\tfor (const id of this._idToBundle.keys()){\n\t\t\t\t\t\tthis._unbindAssetEvents(id);\n\t\t\t\t}\n\t\t\t\tthis._assets = null;\n\t\t\t\tthis._idToBundle.clear();\n\t\t\t\tthis._idToBundle = null;\n\t\t\t\tthis._assetToBundles.clear();\n\t\t\t\tthis._assetToBundles = null;\n\t\t\t\tthis._urlsToBundles.clear();\n\t\t\t\tthis._urlsToBundles = null;\n\t\t\t\tthis._fileRequests.clear();\n\t\t\t\tthis._fileRequests = null;\n\t\t}\n}\n\nclass ComponentSystemRegistry extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper();\n\t\t\t\tthis.list = [];\n\t\t}\n\t\tadd(system) {\n\t\t\t\tconst id = system.id;\n\t\t\t\tif (this[id]) {\n\t\t\t\t\t\tthrow new Error(`ComponentSystem name '${id}' already registered or not allowed`);\n\t\t\t\t}\n\t\t\t\tthis[id] = system;\n\t\t\t\tthis.list.push(system);\n\t\t}\n\t\tremove(system) {\n\t\t\t\tconst id = system.id;\n\t\t\t\tif (!this[id]) {\n\t\t\t\t\t\tthrow new Error(`No ComponentSystem named '${id}' registered`);\n\t\t\t\t}\n\t\t\t\tdelete this[id];\n\t\t\t\tconst index = this.list.indexOf(this[id]);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\tthis.list.splice(index, 1);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.off();\n\t\t\t\tfor(let i = 0; i < this.list.length; i++){\n\t\t\t\t\t\tthis.list[i].destroy();\n\t\t\t\t}\n\t\t}\n}\n\nclass Bundle extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\taddFile(url, data) {\n\t\t\t\tif (this._index.has(url)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._index.set(url, data);\n\t\t\t\tthis.fire('add', url, data);\n\t\t}\n\t\thas(url) {\n\t\t\t\treturn this._index.has(url);\n\t\t}\n\t\tget(url) {\n\t\t\t\treturn this._index.get(url) || null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._index.clear();\n\t\t}\n\t\tset loaded(value) {\n\t\t\t\tif (!value || this._loaded) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._loaded = true;\n\t\t\t\tthis.fire('load');\n\t\t}\n\t\tget loaded() {\n\t\t\t\treturn this._loaded;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._index = new Map(), this._loaded = false;\n\t\t}\n}\n\nclass Untar extends EventHandler {\n\t\tconstructor(fetchPromise, assetsPrefix = ''){\n\t\t\t\tsuper(), this.headerSize = 512, this.paddingSize = 512, this.bytesRead = 0, this.bytesReceived = 0, this.headerRead = false, this.reader = null, this.data = new Uint8Array(0), this.decoder = null, this.prefix = '', this.fileName = '', this.fileSize = 0, this.fileType = '', this.ustarFormat = '';\n\t\t\t\tthis.prefix = assetsPrefix || '';\n\t\t\t\tthis.reader = fetchPromise.body.getReader();\n\t\t\t\tthis.reader.read().then((res)=>{\n\t\t\t\t\t\tthis.pump(res.done, res.value);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t});\n\t\t}\n\t\tpump(done, value) {\n\t\t\t\tif (done) {\n\t\t\t\t\t\tthis.fire('done');\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tthis.bytesReceived += value.byteLength;\n\t\t\t\tconst data = new Uint8Array(this.data.length + value.length);\n\t\t\t\tdata.set(this.data);\n\t\t\t\tdata.set(value, this.data.length);\n\t\t\t\tthis.data = data;\n\t\t\t\twhile(this.readFile());\n\t\t\t\treturn this.reader.read().then((res)=>{\n\t\t\t\t\t\tthis.pump(res.done, res.value);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t});\n\t\t}\n\t\treadFile() {\n\t\t\t\tif (!this.headerRead && this.bytesReceived > this.bytesRead + this.headerSize) {\n\t\t\t\t\t\tthis.headerRead = true;\n\t\t\t\t\t\tconst view = new DataView(this.data.buffer, this.bytesRead, this.headerSize);\n\t\t\t\t\t\tthis.decoder ??= new TextDecoder('windows-1252');\n\t\t\t\t\t\tconst headers = this.decoder.decode(view);\n\t\t\t\t\t\tthis.fileName = headers.substring(0, 100).replace(/\\0/g, '');\n\t\t\t\t\t\tthis.fileSize = parseInt(headers.substring(124, 136), 8);\n\t\t\t\t\t\tthis.fileType = headers.substring(156, 157);\n\t\t\t\t\t\tthis.ustarFormat = headers.substring(257, 263);\n\t\t\t\t\t\tif (this.ustarFormat.indexOf('ustar') !== -1) {\n\t\t\t\t\t\t\t\tconst prefix = headers.substring(345, 500).replace(/\\0/g, '');\n\t\t\t\t\t\t\t\tif (prefix.length > 0) {\n\t\t\t\t\t\t\t\t\t\tthis.fileName = prefix.trim() + this.fileName.trim();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.bytesRead += 512;\n\t\t\t\t}\n\t\t\t\tif (this.headerRead) {\n\t\t\t\t\t\tif (this.bytesReceived < this.bytesRead + this.fileSize) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.fileType === '' || this.fileType === '0') {\n\t\t\t\t\t\t\t\tconst dataView = new DataView(this.data.buffer, this.bytesRead, this.fileSize);\n\t\t\t\t\t\t\t\tconst file = {\n\t\t\t\t\t\t\t\t\t\tname: this.prefix + this.fileName,\n\t\t\t\t\t\t\t\t\t\tsize: this.fileSize,\n\t\t\t\t\t\t\t\t\t\tdata: dataView\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tthis.fire('file', file);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.bytesRead += this.fileSize;\n\t\t\t\t\t\tthis.headerRead = false;\n\t\t\t\t\t\tconst bytesRemained = this.bytesRead % this.paddingSize;\n\t\t\t\t\t\tif (bytesRemained !== 0) {\n\t\t\t\t\t\t\t\tthis.bytesRead += this.paddingSize - bytesRemained;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nclass ResourceHandler {\n\t\tconstructor(app, handlerType){\n\t\t\t\tthis.handlerType = '';\n\t\t\t\tthis._maxRetries = 0;\n\t\t\t\tthis._app = app;\n\t\t\t\tthis.handlerType = handlerType;\n\t\t}\n\t\tset maxRetries(value) {\n\t\t\t\tthis._maxRetries = value;\n\t\t}\n\t\tget maxRetries() {\n\t\t\t\treturn this._maxRetries;\n\t\t}\n\t\tload(url, callback, asset) {}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {}\n}\n\nclass BundleHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'bundle');\n\t\t\t\tthis._assets = app.assets;\n\t\t}\n\t\t_fetchRetries(url, options, retries = 0) {\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tconst tryFetch = ()=>{\n\t\t\t\t\t\t\t\tfetch(url, options).then(resolve).catch((err)=>{\n\t\t\t\t\t\t\t\t\t\tretries++;\n\t\t\t\t\t\t\t\t\t\tif (retries < this.maxRetries) {\n\t\t\t\t\t\t\t\t\t\t\t\ttryFetch();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttryFetch();\n\t\t\t\t});\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._fetchRetries(url.load, {\n\t\t\t\t\t\tmode: 'cors'\n\t\t\t\t}, this.maxRetries).then((res)=>{\n\t\t\t\t\t\tconst bundle = new Bundle();\n\t\t\t\t\t\tcallback(null, bundle);\n\t\t\t\t\t\tconst untar = new Untar(res, this._assets.prefix);\n\t\t\t\t\t\tuntar.on('file', (file)=>{\n\t\t\t\t\t\t\t\tbundle.addFile(file.name, file.data);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tuntar.on('done', ()=>{\n\t\t\t\t\t\t\t\tbundle.loaded = true;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tuntar.on('error', (err)=>{\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t});\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t});\n\t\t}\n\t\topen(url, bundle) {\n\t\t\t\treturn bundle;\n\t\t}\n}\n\nclass ResourceLoader {\n\t\tconstructor(app){\n\t\t\t\tthis._handlers = {};\n\t\t\t\tthis._requests = {};\n\t\t\t\tthis._cache = {};\n\t\t\t\tthis._app = app;\n\t\t}\n\t\taddHandler(type, handler) {\n\t\t\t\tthis._handlers[type] = handler;\n\t\t\t\thandler._loader = this;\n\t\t}\n\t\tremoveHandler(type) {\n\t\t\t\tdelete this._handlers[type];\n\t\t}\n\t\tgetHandler(type) {\n\t\t\t\treturn this._handlers[type];\n\t\t}\n\t\tstatic makeKey(url, type) {\n\t\t\t\treturn `${url}-${type}`;\n\t\t}\n\t\tload(url, type, callback, asset, options) {\n\t\t\t\tconst handler = this._handlers[type];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\tconst err = `No resource handler for asset type: '${type}' when loading [${url}]`;\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!url) {\n\t\t\t\t\t\tthis._loadNull(handler, callback, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\t\t\tif (this._cache[key] !== undefined) {\n\t\t\t\t\t\tcallback(null, this._cache[key]);\n\t\t\t\t} else if (this._requests[key]) {\n\t\t\t\t\t\tthis._requests[key].push(callback);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._requests[key] = [\n\t\t\t\t\t\t\t\tcallback\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst self = this;\n\t\t\t\t\t\tconst handleLoad = function(err, urlObj) {\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (urlObj.load instanceof DataView) {\n\t\t\t\t\t\t\t\t\t\tif (handler.openBinary) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!self._requests[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst data = handler.openBinary(urlObj.load);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tself._onSuccess(key, data);\n\t\t\t\t\t\t\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\turlObj.load = URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\t\t\t\t\turlObj.load\n\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (asset.urlObject) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tURL.revokeObjectURL(asset.urlObject);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tasset.urlObject = urlObj.load;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thandler.load(urlObj, (err, data, extra)=>{\n\t\t\t\t\t\t\t\t\t\tif (!self._requests[key]) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\tself._onFailure(key, err);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\t\tself._onSuccess(key, handler.open(urlObj.original, data, asset), extra);\n\t\t\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\t\t\tself._onFailure(key, e);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}, asset);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst normalizedUrl = url.split('?')[0];\n\t\t\t\t\t\tif (this._app.enableBundles && this._app.bundles.hasUrl(normalizedUrl) && !(options && options.bundlesIgnore)) {\n\t\t\t\t\t\t\t\tif (!this._app.bundles.urlIsLoadedOrLoading(normalizedUrl)) {\n\t\t\t\t\t\t\t\t\t\tconst bundles = this._app.bundles.listBundlesForAsset(asset);\n\t\t\t\t\t\t\t\t\t\tlet bundle;\n\t\t\t\t\t\t\t\t\t\tif (options && options.bundlesFilter) {\n\t\t\t\t\t\t\t\t\t\t\t\tbundle = options.bundlesFilter(bundles);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!bundle) {\n\t\t\t\t\t\t\t\t\t\t\t\tbundles?.sort((a, b)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn a.file.size - b.file.size;\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tbundle = bundles?.[0];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (bundle) this._app.assets?.load(bundle);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._app.bundles.loadUrl(normalizedUrl, (err, fileUrlFromBundle)=>{\n\t\t\t\t\t\t\t\t\t\thandleLoad(err, {\n\t\t\t\t\t\t\t\t\t\t\t\tload: fileUrlFromBundle,\n\t\t\t\t\t\t\t\t\t\t\t\toriginal: normalizedUrl\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\thandleLoad(null, {\n\t\t\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\t\t\toriginal: asset && asset.file.filename || url\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_loadNull(handler, callback, asset) {\n\t\t\t\tconst onLoad = function(err, data, extra) {\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\tcallback(null, handler.open(null, data, asset), extra);\n\t\t\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\t\t\tcallback(e);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\thandler.load(null, onLoad, asset);\n\t\t}\n\t\t_onSuccess(key, result, extra) {\n\t\t\t\tif (result !== null) {\n\t\t\t\t\t\tthis._cache[key] = result;\n\t\t\t\t} else {\n\t\t\t\t\t\tdelete this._cache[key];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._requests[key].length; i++){\n\t\t\t\t\t\tthis._requests[key][i](null, result, extra);\n\t\t\t\t}\n\t\t\t\tdelete this._requests[key];\n\t\t}\n\t\t_onFailure(key, err) {\n\t\t\t\tconsole.error(err);\n\t\t\t\tif (this._requests[key]) {\n\t\t\t\t\t\tfor(let i = 0; i < this._requests[key].length; i++){\n\t\t\t\t\t\t\t\tthis._requests[key][i](err);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete this._requests[key];\n\t\t\t\t}\n\t\t}\n\t\topen(type, data) {\n\t\t\t\tconst handler = this._handlers[type];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\tconsole.warn(`No resource handler found for: ${type}`);\n\t\t\t\t\t\treturn data;\n\t\t\t\t}\n\t\t\t\treturn handler.open(null, data);\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst handler = this._handlers[asset.type];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\tconsole.warn(`No resource handler found for: ${asset.type}`);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (handler.patch) {\n\t\t\t\t\t\thandler.patch(asset, assets);\n\t\t\t\t}\n\t\t}\n\t\tclearCache(url, type) {\n\t\t\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\t\t\tdelete this._cache[key];\n\t\t}\n\t\tgetFromCache(url, type) {\n\t\t\t\tconst key = ResourceLoader.makeKey(url, type);\n\t\t\t\tif (this._cache[key]) {\n\t\t\t\t\t\treturn this._cache[key];\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tenableRetry(maxRetries = 5) {\n\t\t\t\tmaxRetries = Math.max(0, maxRetries) || 0;\n\t\t\t\tfor(const key in this._handlers){\n\t\t\t\t\t\tthis._handlers[key].maxRetries = maxRetries;\n\t\t\t\t}\n\t\t}\n\t\tdisableRetry() {\n\t\t\t\tfor(const key in this._handlers){\n\t\t\t\t\t\tthis._handlers[key].maxRetries = 0;\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._handlers = {};\n\t\t\t\tthis._requests = {};\n\t\t\t\tthis._cache = {};\n\t\t}\n}\n\nclass I18nParser {\n\t\t_validate(data) {\n\t\t\t\tif (!data.header) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Missing \"header\" field');\n\t\t\t\t}\n\t\t\t\tif (!data.header.version) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Missing \"header.version\" field');\n\t\t\t\t}\n\t\t\t\tif (data.header.version !== 1) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Invalid \"header.version\" field');\n\t\t\t\t}\n\t\t\t\tif (!data.data) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: Missing \"data\" field');\n\t\t\t\t} else if (!Array.isArray(data.data)) {\n\t\t\t\t\t\tthrow new Error('pc.I18n#addData: \"data\" field must be an array');\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = data.data.length; i < len; i++){\n\t\t\t\t\t\tconst entry = data.data[i];\n\t\t\t\t\t\tif (!entry.info) {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].info\" field`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!entry.info.locale) {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].info.locale\" field`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (typeof entry.info.locale !== 'string') {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: \"data[${i}].info.locale\" must be a string`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!entry.messages) {\n\t\t\t\t\t\t\t\tthrow new Error(`pc.I18n#addData: missing \"data[${i}].messages\" field`);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tparse(data) {\n\t\t\t\treturn data.data;\n\t\t}\n}\n\nclass I18n extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper();\n\t\t\t\tthis.locale = DEFAULT_LOCALE;\n\t\t\t\tthis._translations = {};\n\t\t\t\tthis._availableLangs = {};\n\t\t\t\tthis._app = app;\n\t\t\t\tthis._assets = [];\n\t\t\t\tthis._parser = new I18nParser();\n\t\t}\n\t\tset assets(value) {\n\t\t\t\tconst index = {};\n\t\t\t\tfor(let i = 0, len = value.length; i < len; i++){\n\t\t\t\t\t\tconst id = value[i] instanceof Asset ? value[i].id : value[i];\n\t\t\t\t\t\tindex[id] = true;\n\t\t\t\t}\n\t\t\t\tlet i = this._assets.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tconst id = this._assets[i];\n\t\t\t\t\t\tif (!index[id]) {\n\t\t\t\t\t\t\t\tthis._app.assets.off(`add:${id}`, this._onAssetAdd, this);\n\t\t\t\t\t\t\t\tconst asset = this._app.assets.get(id);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis._onAssetRemove(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._assets.splice(i, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const id in index){\n\t\t\t\t\t\tconst idNum = parseInt(id, 10);\n\t\t\t\t\t\tif (this._assets.indexOf(idNum) !== -1) continue;\n\t\t\t\t\t\tthis._assets.push(idNum);\n\t\t\t\t\t\tconst asset = this._app.assets.get(idNum);\n\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\tthis._app.assets.once(`add:${idNum}`, this._onAssetAdd, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._onAssetAdd(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget assets() {\n\t\t\t\treturn this._assets;\n\t\t}\n\t\tset locale(value) {\n\t\t\t\tif (this._locale === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet lang = getLang(value);\n\t\t\t\tif (lang === 'in') {\n\t\t\t\t\t\tlang = 'id';\n\t\t\t\t\t\tvalue = replaceLang(value, lang);\n\t\t\t\t\t\tif (this._locale === value) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst old = this._locale;\n\t\t\t\tthis._locale = value;\n\t\t\t\tthis._lang = lang;\n\t\t\t\tthis._pluralFn = getPluralFn(this._lang);\n\t\t\t\tthis.fire(I18n.EVENT_CHANGE, value, old);\n\t\t}\n\t\tget locale() {\n\t\t\t\treturn this._locale;\n\t\t}\n\t\tstatic findAvailableLocale(desiredLocale, availableLocales) {\n\t\t\t\treturn findAvailableLocale(desiredLocale, availableLocales);\n\t\t}\n\t\tfindAvailableLocale(desiredLocale) {\n\t\t\t\tif (this._translations[desiredLocale]) {\n\t\t\t\t\t\treturn desiredLocale;\n\t\t\t\t}\n\t\t\t\tconst lang = getLang(desiredLocale);\n\t\t\t\treturn this._findFallbackLocale(desiredLocale, lang);\n\t\t}\n\t\tgetText(key, locale) {\n\t\t\t\tlet result = key;\n\t\t\t\tlet lang;\n\t\t\t\tif (!locale) {\n\t\t\t\t\t\tlocale = this._locale;\n\t\t\t\t\t\tlang = this._lang;\n\t\t\t\t}\n\t\t\t\tlet translations = this._translations[locale];\n\t\t\t\tif (!translations) {\n\t\t\t\t\t\tif (!lang) {\n\t\t\t\t\t\t\t\tlang = getLang(locale);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlocale = this._findFallbackLocale(locale, lang);\n\t\t\t\t\t\ttranslations = this._translations[locale];\n\t\t\t\t}\n\t\t\t\tif (translations && translations.hasOwnProperty(key)) {\n\t\t\t\t\t\tresult = translations[key];\n\t\t\t\t\t\tif (Array.isArray(result)) {\n\t\t\t\t\t\t\t\tresult = result[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (result === null || result === undefined) {\n\t\t\t\t\t\t\t\tresult = key;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tgetPluralText(key, n, locale) {\n\t\t\t\tlet result = key;\n\t\t\t\tlet lang;\n\t\t\t\tlet pluralFn;\n\t\t\t\tif (!locale) {\n\t\t\t\t\t\tlocale = this._locale;\n\t\t\t\t\t\tlang = this._lang;\n\t\t\t\t\t\tpluralFn = this._pluralFn;\n\t\t\t\t} else {\n\t\t\t\t\t\tlang = getLang(locale);\n\t\t\t\t\t\tpluralFn = getPluralFn(lang);\n\t\t\t\t}\n\t\t\t\tlet translations = this._translations[locale];\n\t\t\t\tif (!translations) {\n\t\t\t\t\t\tlocale = this._findFallbackLocale(locale, lang);\n\t\t\t\t\t\tlang = getLang(locale);\n\t\t\t\t\t\tpluralFn = getPluralFn(lang);\n\t\t\t\t\t\ttranslations = this._translations[locale];\n\t\t\t\t}\n\t\t\t\tif (translations && translations[key] && pluralFn) {\n\t\t\t\t\t\tconst index = pluralFn(n);\n\t\t\t\t\t\tresult = translations[key][index];\n\t\t\t\t\t\tif (result === null || result === undefined) {\n\t\t\t\t\t\t\t\tresult = key;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\taddData(data) {\n\t\t\t\tlet parsed;\n\t\t\t\ttry {\n\t\t\t\t\t\tparsed = this._parser.parse(data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = parsed.length; i < len; i++){\n\t\t\t\t\t\tconst entry = parsed[i];\n\t\t\t\t\t\tconst locale = entry.info.locale;\n\t\t\t\t\t\tconst messages = entry.messages;\n\t\t\t\t\t\tif (!this._translations[locale]) {\n\t\t\t\t\t\t\t\tthis._translations[locale] = {};\n\t\t\t\t\t\t\t\tconst lang = getLang(locale);\n\t\t\t\t\t\t\t\tif (!this._availableLangs[lang]) {\n\t\t\t\t\t\t\t\t\t\tthis._availableLangs[lang] = locale;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tObject.assign(this._translations[locale], messages);\n\t\t\t\t\t\tthis.fire('data:add', locale, messages);\n\t\t\t\t}\n\t\t}\n\t\tremoveData(data) {\n\t\t\t\tlet parsed;\n\t\t\t\ttry {\n\t\t\t\t\t\tparsed = this._parser.parse(data);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tconsole.error(err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = parsed.length; i < len; i++){\n\t\t\t\t\t\tconst entry = parsed[i];\n\t\t\t\t\t\tconst locale = entry.info.locale;\n\t\t\t\t\t\tconst translations = this._translations[locale];\n\t\t\t\t\t\tif (!translations) continue;\n\t\t\t\t\t\tconst messages = entry.messages;\n\t\t\t\t\t\tfor(const key in messages){\n\t\t\t\t\t\t\t\tdelete translations[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Object.keys(translations).length === 0) {\n\t\t\t\t\t\t\t\tdelete this._translations[locale];\n\t\t\t\t\t\t\t\tdelete this._availableLangs[getLang(locale)];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('data:remove', locale, messages);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._translations = null;\n\t\t\t\tthis._availableLangs = null;\n\t\t\t\tthis._assets = null;\n\t\t\t\tthis._parser = null;\n\t\t\t\tthis.off();\n\t\t}\n\t\t_findFallbackLocale(locale, lang) {\n\t\t\t\tlet result = DEFAULT_LOCALE_FALLBACKS[locale];\n\t\t\t\tif (result && this._translations[result]) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tresult = DEFAULT_LOCALE_FALLBACKS[lang];\n\t\t\t\tif (result && this._translations[result]) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tresult = this._availableLangs[lang];\n\t\t\t\tif (result && this._translations[result]) {\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\treturn DEFAULT_LOCALE;\n\t\t}\n\t\t_onAssetAdd(asset) {\n\t\t\t\tasset.on('load', this._onAssetLoad, this);\n\t\t\t\tasset.on('change', this._onAssetChange, this);\n\t\t\t\tasset.on('remove', this._onAssetRemove, this);\n\t\t\t\tasset.on('unload', this._onAssetUnload, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onAssetLoad(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onAssetLoad(asset) {\n\t\t\t\tthis.addData(asset.resource);\n\t\t}\n\t\t_onAssetChange(asset) {\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.addData(asset.resource);\n\t\t\t\t}\n\t\t}\n\t\t_onAssetRemove(asset) {\n\t\t\t\tasset.off('load', this._onAssetLoad, this);\n\t\t\t\tasset.off('change', this._onAssetChange, this);\n\t\t\t\tasset.off('remove', this._onAssetRemove, this);\n\t\t\t\tasset.off('unload', this._onAssetUnload, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.removeData(asset.resource);\n\t\t\t\t}\n\t\t\t\tthis._app.assets.once(`add:${asset.id}`, this._onAssetAdd, this);\n\t\t}\n\t\t_onAssetUnload(asset) {\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis.removeData(asset.resource);\n\t\t\t\t}\n\t\t}\n}\n\nclass ScriptRegistry extends EventHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(), this._scripts = {}, this._list = [], this._scriptSchemas = new Map();\n\t\t\t\tthis.app = app;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.app = null;\n\t\t\t\tthis.off();\n\t\t}\n\t\taddSchema(id, schema) {\n\t\t\t\tif (!schema) return;\n\t\t\t\tthis._scriptSchemas.set(id, schema);\n\t\t}\n\t\tgetSchema(id) {\n\t\t\t\treturn this._scriptSchemas.get(id);\n\t\t}\n\t\tadd(script) {\n\t\t\t\tconst scriptName = script.__name;\n\t\t\t\tif (this._scripts.hasOwnProperty(scriptName)) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tif (script.prototype.swap) {\n\t\t\t\t\t\t\t\t\t\tconst old = this._scripts[scriptName];\n\t\t\t\t\t\t\t\t\t\tconst ind = this._list.indexOf(old);\n\t\t\t\t\t\t\t\t\t\tthis._list[ind] = script;\n\t\t\t\t\t\t\t\t\t\tthis._scripts[scriptName] = script;\n\t\t\t\t\t\t\t\t\t\tthis.fire('swap', scriptName, script);\n\t\t\t\t\t\t\t\t\t\tthis.fire(`swap:${scriptName}`, script);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(`script registry already has '${scriptName}' script, define 'swap' method for new script type to enable code hot swapping`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._scripts[scriptName] = script;\n\t\t\t\tthis._list.push(script);\n\t\t\t\tthis.fire('add', scriptName, script);\n\t\t\t\tthis.fire(`add:${scriptName}`, script);\n\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\tif (!this._scripts.hasOwnProperty(scriptName)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.app || !this.app.systems || !this.app.systems.script) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst components = this.app.systems.script._components;\n\t\t\t\t\t\tlet attributes;\n\t\t\t\t\t\tconst scriptInstances = [];\n\t\t\t\t\t\tconst scriptInstancesInitialized = [];\n\t\t\t\t\t\tfor(components.loopIndex = 0; components.loopIndex < components.length; components.loopIndex++){\n\t\t\t\t\t\t\t\tconst component = components.items[components.loopIndex];\n\t\t\t\t\t\t\t\tif (component._scriptsIndex[scriptName] && component._scriptsIndex[scriptName].awaiting) {\n\t\t\t\t\t\t\t\t\t\tif (component._scriptsData && component._scriptsData[scriptName]) {\n\t\t\t\t\t\t\t\t\t\t\t\tattributes = component._scriptsData[scriptName].attributes;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst scriptInstance = component.create(scriptName, {\n\t\t\t\t\t\t\t\t\t\t\t\tpreloading: true,\n\t\t\t\t\t\t\t\t\t\t\t\tind: component._scriptsIndex[scriptName].ind,\n\t\t\t\t\t\t\t\t\t\t\t\tattributes: attributes\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tif (scriptInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstances.push(scriptInstance);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfor (const script of component.scripts){\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent.initializeAttributes(script);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < scriptInstances.length; i++){\n\t\t\t\t\t\t\t\tif (scriptInstances[i].enabled) {\n\t\t\t\t\t\t\t\t\t\tscriptInstances[i]._initialized = true;\n\t\t\t\t\t\t\t\t\t\tscriptInstancesInitialized.push(scriptInstances[i]);\n\t\t\t\t\t\t\t\t\t\tif (scriptInstances[i].initialize) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstances[i].initialize();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < scriptInstancesInitialized.length; i++){\n\t\t\t\t\t\t\t\tif (!scriptInstancesInitialized[i].enabled || scriptInstancesInitialized[i]._postInitialized) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscriptInstancesInitialized[i]._postInitialized = true;\n\t\t\t\t\t\t\t\tif (scriptInstancesInitialized[i].postInitialize) {\n\t\t\t\t\t\t\t\t\t\tscriptInstancesInitialized[i].postInitialize();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t}\n\t\tremove(nameOrType) {\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tif (typeof scriptName !== 'string') {\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t} else {\n\t\t\t\t\t\tscriptType = this.get(scriptName);\n\t\t\t\t}\n\t\t\t\tif (this.get(scriptName) !== scriptType) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdelete this._scripts[scriptName];\n\t\t\t\tconst ind = this._list.indexOf(scriptType);\n\t\t\t\tthis._list.splice(ind, 1);\n\t\t\t\tthis.fire('remove', scriptName, scriptType);\n\t\t\t\tthis.fire(`remove:${scriptName}`, scriptType);\n\t\t\t\treturn true;\n\t\t}\n\t\tget(name) {\n\t\t\t\treturn this._scripts[name] || null;\n\t\t}\n\t\thas(nameOrType) {\n\t\t\t\tif (typeof nameOrType === 'string') {\n\t\t\t\t\t\treturn this._scripts.hasOwnProperty(nameOrType);\n\t\t\t\t}\n\t\t\t\tif (!nameOrType) return false;\n\t\t\t\tconst scriptName = nameOrType.__name;\n\t\t\t\treturn this._scripts[scriptName] === nameOrType;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list;\n\t\t}\n}\n\nconst cmpStaticOrder = (a, b)=>a.constructor.order - b.constructor.order;\nconst sortStaticOrder = (arr)=>arr.sort(cmpStaticOrder);\nconst _enableList = [];\nconst tmpPool = [];\nconst getTempArray = ()=>{\n\t\treturn tmpPool.pop() ?? [];\n};\nconst releaseTempArray = (a)=>{\n\t\ta.length = 0;\n\t\ttmpPool.push(a);\n};\nclass Entity extends GraphNode {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tconstructor(name, app = getApplication()){\n\t\t\t\tsuper(name), this.c = {}, this._destroying = false, this._guid = null, this._template = false;\n\t\t\t\tthis._app = app;\n\t\t}\n\t\taddComponent(type, data) {\n\t\t\t\tconst system = this._app.systems[type];\n\t\t\t\tif (!system) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (this.c[type]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn system.addComponent(this, data);\n\t\t}\n\t\tremoveComponent(type) {\n\t\t\t\tconst system = this._app.systems[type];\n\t\t\t\tif (!system) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.c[type]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsystem.removeComponent(this);\n\t\t}\n\t\tfindComponent(type) {\n\t\t\t\tconst entity = this.findOne((entity)=>entity.c?.[type]);\n\t\t\t\treturn entity && entity.c[type];\n\t\t}\n\t\tfindComponents(type) {\n\t\t\t\treturn this.find((entity)=>entity.c?.[type]).map((entity)=>entity.c[type]);\n\t\t}\n\t\tfindScript(nameOrType) {\n\t\t\t\tconst entity = this.findOne((node)=>node.c?.script?.has(nameOrType));\n\t\t\t\treturn entity?.c.script.get(nameOrType);\n\t\t}\n\t\tfindScripts(nameOrType) {\n\t\t\t\tconst entities = this.find((node)=>node.c?.script?.has(nameOrType));\n\t\t\t\treturn entities.map((entity)=>entity.c.script.get(nameOrType));\n\t\t}\n\t\tgetGuid() {\n\t\t\t\tif (!this._guid) {\n\t\t\t\t\t\tthis.setGuid(guid.create());\n\t\t\t\t}\n\t\t\t\treturn this._guid;\n\t\t}\n\t\tsetGuid(guid) {\n\t\t\t\tconst index = this._app._entityIndex;\n\t\t\t\tif (this._guid) {\n\t\t\t\t\t\tdelete index[this._guid];\n\t\t\t\t}\n\t\t\t\tthis._guid = guid;\n\t\t\t\tindex[this._guid] = this;\n\t\t}\n\t\t_notifyHierarchyStateChanged(node, enabled) {\n\t\t\t\tlet enableFirst = false;\n\t\t\t\tif (node === this && _enableList.length === 0) {\n\t\t\t\t\t\tenableFirst = true;\n\t\t\t\t}\n\t\t\t\tnode._beingEnabled = true;\n\t\t\t\tnode._onHierarchyStateChanged(enabled);\n\t\t\t\tif (node._onHierarchyStatePostChanged) {\n\t\t\t\t\t\t_enableList.push(node);\n\t\t\t\t}\n\t\t\t\tconst c = node._children;\n\t\t\t\tfor(let i = 0, len = c.length; i < len; i++){\n\t\t\t\t\t\tif (c[i]._enabled) {\n\t\t\t\t\t\t\t\tthis._notifyHierarchyStateChanged(c[i], enabled);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tnode._beingEnabled = false;\n\t\t\t\tif (enableFirst) {\n\t\t\t\t\t\tfor(let i = 0; i < _enableList.length; i++){\n\t\t\t\t\t\t\t\t_enableList[i]._onHierarchyStatePostChanged();\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_enableList.length = 0;\n\t\t\t\t}\n\t\t}\n\t\t_onHierarchyStateChanged(enabled) {\n\t\t\t\tsuper._onHierarchyStateChanged(enabled);\n\t\t\t\tconst components = this._getSortedComponents();\n\t\t\t\tfor(let i = 0; i < components.length; i++){\n\t\t\t\t\t\tconst component = components[i];\n\t\t\t\t\t\tif (component.enabled) {\n\t\t\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\t\t\t\tcomponent.onEnable();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomponent.onDisable();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treleaseTempArray(components);\n\t\t}\n\t\t_onHierarchyStatePostChanged() {\n\t\t\t\tconst components = this._getSortedComponents();\n\t\t\t\tfor(let i = 0; i < components.length; i++){\n\t\t\t\t\t\tcomponents[i].onPostStateChange();\n\t\t\t\t}\n\t\t\t\treleaseTempArray(components);\n\t\t}\n\t\tfindByGuid(guid) {\n\t\t\t\tif (this._guid === guid) return this;\n\t\t\t\tconst e = this._app._entityIndex[guid];\n\t\t\t\tif (e && (e === this || e.isDescendantOf(this))) {\n\t\t\t\t\t\treturn e;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._destroying = true;\n\t\t\t\tfor(const name in this.c){\n\t\t\t\t\t\tthis.c[name].enabled = false;\n\t\t\t\t}\n\t\t\t\tfor(const name in this.c){\n\t\t\t\t\t\tthis.c[name].system.removeComponent(this);\n\t\t\t\t}\n\t\t\t\tsuper.destroy();\n\t\t\t\tif (this._guid) {\n\t\t\t\t\t\tdelete this._app._entityIndex[this._guid];\n\t\t\t\t}\n\t\t\t\tthis._destroying = false;\n\t\t}\n\t\tclone() {\n\t\t\t\tconst duplicatedIdsMap = {};\n\t\t\t\tconst clone = this._cloneRecursively(duplicatedIdsMap);\n\t\t\t\tduplicatedIdsMap[this.getGuid()] = clone;\n\t\t\t\tresolveDuplicatedEntityReferenceProperties(this, this, clone, duplicatedIdsMap);\n\t\t\t\treturn clone;\n\t\t}\n\t\t_getSortedComponents() {\n\t\t\t\tconst components = this.c;\n\t\t\t\tconst sortedArray = getTempArray();\n\t\t\t\tlet needSort = 0;\n\t\t\t\tfor(const type in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(type)) {\n\t\t\t\t\t\t\t\tconst component = components[type];\n\t\t\t\t\t\t\t\tneedSort |= component.constructor.order !== 0;\n\t\t\t\t\t\t\t\tsortedArray.push(component);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (needSort && sortedArray.length > 1) {\n\t\t\t\t\t\tsortStaticOrder(sortedArray);\n\t\t\t\t}\n\t\t\t\treturn sortedArray;\n\t\t}\n\t\t_cloneRecursively(duplicatedIdsMap) {\n\t\t\t\tconst clone = new this.constructor(undefined, this._app);\n\t\t\t\tsuper._cloneInternal(clone);\n\t\t\t\tfor(const type in this.c){\n\t\t\t\t\t\tconst component = this.c[type];\n\t\t\t\t\t\tcomponent.system.cloneComponent(this, clone);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst oldChild = this._children[i];\n\t\t\t\t\t\tif (oldChild instanceof Entity) {\n\t\t\t\t\t\t\t\tconst newChild = oldChild._cloneRecursively(duplicatedIdsMap);\n\t\t\t\t\t\t\t\tclone.addChild(newChild);\n\t\t\t\t\t\t\t\tduplicatedIdsMap[oldChild.getGuid()] = newChild;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn clone;\n\t\t}\n}\nfunction resolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, oldEntity, newEntity, duplicatedIdsMap) {\n\t\tif (oldEntity instanceof Entity) {\n\t\t\t\tconst components = oldEntity.c;\n\t\t\t\tfor(const componentName in components){\n\t\t\t\t\t\tconst component = components[componentName];\n\t\t\t\t\t\tconst entityProperties = component.system.getPropertiesOfType('entity');\n\t\t\t\t\t\tfor(let i = 0, len = entityProperties.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst propertyDescriptor = entityProperties[i];\n\t\t\t\t\t\t\t\tconst propertyName = propertyDescriptor.name;\n\t\t\t\t\t\t\t\tconst oldEntityReferenceId = component[propertyName];\n\t\t\t\t\t\t\t\tconst entityIsWithinOldSubtree = !!oldSubtreeRoot.findByGuid(oldEntityReferenceId);\n\t\t\t\t\t\t\t\tif (entityIsWithinOldSubtree) {\n\t\t\t\t\t\t\t\t\t\tconst newEntityReferenceId = duplicatedIdsMap[oldEntityReferenceId].getGuid();\n\t\t\t\t\t\t\t\t\t\tif (newEntityReferenceId) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewEntity.c[componentName][propertyName] = newEntityReferenceId;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (components.script) {\n\t\t\t\t\t\tnewEntity.script.resolveDuplicatedEntityReferenceProperties(components.script, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.render) {\n\t\t\t\t\t\tnewEntity.render.resolveDuplicatedEntityReferenceProperties(components.render, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.button) {\n\t\t\t\t\t\tnewEntity.button.resolveDuplicatedEntityReferenceProperties(components.button, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.scrollview) {\n\t\t\t\t\t\tnewEntity.scrollview.resolveDuplicatedEntityReferenceProperties(components.scrollview, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.scrollbar) {\n\t\t\t\t\t\tnewEntity.scrollbar.resolveDuplicatedEntityReferenceProperties(components.scrollbar, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tif (components.anim) {\n\t\t\t\t\t\tnewEntity.anim.resolveDuplicatedEntityReferenceProperties(components.anim, duplicatedIdsMap);\n\t\t\t\t}\n\t\t\t\tconst _old = oldEntity.children.filter((e)=>e instanceof Entity);\n\t\t\t\tconst _new = newEntity.children.filter((e)=>e instanceof Entity);\n\t\t\t\tfor(let i = 0, len = _old.length; i < len; i++){\n\t\t\t\t\t\tresolveDuplicatedEntityReferenceProperties(oldSubtreeRoot, _old[i], _new[i], duplicatedIdsMap);\n\t\t\t\t}\n\t\t}\n}\n\nclass SceneRegistryItem {\n\t\tconstructor(name, url){\n\t\t\t\tthis.data = null;\n\t\t\t\tthis._loading = false;\n\t\t\t\tthis._onLoadedCallbacks = [];\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.url = url;\n\t\t}\n\t\tget loaded() {\n\t\t\t\treturn !!this.data;\n\t\t}\n\t\tget loading() {\n\t\t\t\treturn this._loading;\n\t\t}\n}\n\nclass SceneRegistry {\n\t\tconstructor(app){\n\t\t\t\tthis._list = [];\n\t\t\t\tthis._index = {};\n\t\t\t\tthis._urlIndex = {};\n\t\t\t\tthis._app = app;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._app = null;\n\t\t}\n\t\tlist() {\n\t\t\t\treturn this._list;\n\t\t}\n\t\tadd(name, url) {\n\t\t\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst item = new SceneRegistryItem(name, url);\n\t\t\t\tconst i = this._list.push(item);\n\t\t\t\tthis._index[item.name] = i - 1;\n\t\t\t\tthis._urlIndex[item.url] = i - 1;\n\t\t\t\treturn true;\n\t\t}\n\t\tfind(name) {\n\t\t\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\t\t\t\treturn this._list[this._index[name]];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tfindByUrl(url) {\n\t\t\t\tif (this._urlIndex.hasOwnProperty(url)) {\n\t\t\t\t\t\treturn this._list[this._urlIndex[url]];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tremove(name) {\n\t\t\t\tif (this._index.hasOwnProperty(name)) {\n\t\t\t\t\t\tconst idx = this._index[name];\n\t\t\t\t\t\tlet item = this._list[idx];\n\t\t\t\t\t\tdelete this._urlIndex[item.url];\n\t\t\t\t\t\tdelete this._index[name];\n\t\t\t\t\t\tthis._list.splice(idx, 1);\n\t\t\t\t\t\tfor(let i = 0; i < this._list.length; i++){\n\t\t\t\t\t\t\t\titem = this._list[i];\n\t\t\t\t\t\t\t\tthis._index[item.name] = i;\n\t\t\t\t\t\t\t\tthis._urlIndex[item.url] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_loadSceneData(sceneItem, storeInCache, callback) {\n\t\t\t\tconst app = this._app;\n\t\t\t\tlet url = sceneItem;\n\t\t\t\tif (typeof sceneItem === 'string') {\n\t\t\t\t\t\tsceneItem = this.findByUrl(url) || this.find(url) || new SceneRegistryItem('Untitled', url);\n\t\t\t\t}\n\t\t\t\turl = sceneItem.url;\n\t\t\t\tif (!url) {\n\t\t\t\t\t\tcallback('Cannot find scene to load');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (sceneItem.loaded) {\n\t\t\t\t\t\tcallback(null, sceneItem);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (app.assets && app.assets.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\t\t\t\turl = path.join(app.assets.prefix, url);\n\t\t\t\t}\n\t\t\t\tsceneItem._onLoadedCallbacks.push(callback);\n\t\t\t\tif (!sceneItem._loading) {\n\t\t\t\t\t\tconst handler = app.loader.getHandler('hierarchy');\n\t\t\t\t\t\thandler.load(url, (err, data)=>{\n\t\t\t\t\t\t\t\tsceneItem.data = data;\n\t\t\t\t\t\t\t\tsceneItem._loading = false;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < sceneItem._onLoadedCallbacks.length; i++){\n\t\t\t\t\t\t\t\t\t\tsceneItem._onLoadedCallbacks[i](err, sceneItem);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!storeInCache) {\n\t\t\t\t\t\t\t\t\t\tsceneItem.data = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsceneItem._onLoadedCallbacks.length = 0;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tsceneItem._loading = true;\n\t\t}\n\t\tloadSceneData(sceneItem, callback) {\n\t\t\t\tthis._loadSceneData(sceneItem, true, callback);\n\t\t}\n\t\tunloadSceneData(sceneItem) {\n\t\t\t\tif (typeof sceneItem === 'string') {\n\t\t\t\t\t\tsceneItem = this.findByUrl(sceneItem);\n\t\t\t\t}\n\t\t\t\tif (sceneItem) {\n\t\t\t\t\t\tsceneItem.data = null;\n\t\t\t\t}\n\t\t}\n\t\t_loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback) {\n\t\t\t\tthis._loadSceneData(sceneItem, false, (err, sceneItem)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (onBeforeAddHierarchy) {\n\t\t\t\t\t\t\t\tonBeforeAddHierarchy(sceneItem);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst app = this._app;\n\t\t\t\t\t\tconst _loaded = ()=>{\n\t\t\t\t\t\t\t\tconst handler = app.loader.getHandler('hierarchy');\n\t\t\t\t\t\t\t\tapp.systems.script.preloading = true;\n\t\t\t\t\t\t\t\tconst entity = handler.open(sceneItem.url, sceneItem.data);\n\t\t\t\t\t\t\t\tapp.systems.script.preloading = false;\n\t\t\t\t\t\t\t\tapp.loader.clearCache(sceneItem.url, 'hierarchy');\n\t\t\t\t\t\t\t\tapp.root.addChild(entity);\n\t\t\t\t\t\t\t\tapp.systems.fire('initialize', entity);\n\t\t\t\t\t\t\t\tapp.systems.fire('postInitialize', entity);\n\t\t\t\t\t\t\t\tapp.systems.fire('postPostInitialize', entity);\n\t\t\t\t\t\t\t\tif (callback) callback(null, entity);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tapp._preloadScripts(sceneItem.data, _loaded);\n\t\t\t\t});\n\t\t}\n\t\tloadSceneHierarchy(sceneItem, callback) {\n\t\t\t\tthis._loadSceneHierarchy(sceneItem, null, callback);\n\t\t}\n\t\tloadSceneSettings(sceneItem, callback) {\n\t\t\t\tthis._loadSceneData(sceneItem, false, (err, sceneItem)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tthis._app.applySceneSettings(sceneItem.data.settings);\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tchangeScene(sceneItem, callback) {\n\t\t\t\tconst app = this._app;\n\t\t\t\tconst onBeforeAddHierarchy = (sceneItem)=>{\n\t\t\t\t\t\tconst { children } = app.root;\n\t\t\t\t\t\twhile(children.length){\n\t\t\t\t\t\t\t\tchildren[0].destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapp.applySceneSettings(sceneItem.data.settings);\n\t\t\t\t};\n\t\t\t\tthis._loadSceneHierarchy(sceneItem, onBeforeAddHierarchy, callback);\n\t\t}\n\t\tloadScene(url, callback) {\n\t\t\t\tconst app = this._app;\n\t\t\t\tconst handler = app.loader.getHandler('scene');\n\t\t\t\tif (app.assets && app.assets.prefix && !ABSOLUTE_URL.test(url)) {\n\t\t\t\t\t\turl = path.join(app.assets.prefix, url);\n\t\t\t\t}\n\t\t\t\thandler.load(url, (err, data)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tconst _loaded = ()=>{\n\t\t\t\t\t\t\t\t\t\tapp.systems.script.preloading = true;\n\t\t\t\t\t\t\t\t\t\tconst scene = handler.open(url, data);\n\t\t\t\t\t\t\t\t\t\tconst sceneItem = this.findByUrl(url);\n\t\t\t\t\t\t\t\t\t\tif (sceneItem && !sceneItem.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tsceneItem.data = data;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tapp.systems.script.preloading = false;\n\t\t\t\t\t\t\t\t\t\tapp.loader.clearCache(url, 'scene');\n\t\t\t\t\t\t\t\t\t\tapp.loader.patch({\n\t\t\t\t\t\t\t\t\t\t\t\tresource: scene,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'scene'\n\t\t\t\t\t\t\t\t\t\t}, app.assets);\n\t\t\t\t\t\t\t\t\t\tapp.root.addChild(scene.root);\n\t\t\t\t\t\t\t\t\t\tif (app.systems.rigidbody && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\t\t\t\t\t\t\tapp.systems.rigidbody.gravity.set(scene._gravity.x, scene._gravity.y, scene._gravity.z);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, scene);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tapp._preloadScripts(data, _loaded);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nclass ApplicationStats {\n\t\tconstructor(device){\n\t\t\t\tthis.frame = {\n\t\t\t\t\t\tfps: 0,\n\t\t\t\t\t\tms: 0,\n\t\t\t\t\t\tdt: 0,\n\t\t\t\t\t\tupdateStart: 0,\n\t\t\t\t\t\tupdateTime: 0,\n\t\t\t\t\t\trenderStart: 0,\n\t\t\t\t\t\trenderTime: 0,\n\t\t\t\t\t\tphysicsStart: 0,\n\t\t\t\t\t\tphysicsTime: 0,\n\t\t\t\t\t\tcullTime: 0,\n\t\t\t\t\t\tsortTime: 0,\n\t\t\t\t\t\tskinTime: 0,\n\t\t\t\t\t\tmorphTime: 0,\n\t\t\t\t\t\tinstancingTime: 0,\n\t\t\t\t\t\ttriangles: 0,\n\t\t\t\t\t\tgsplats: 0,\n\t\t\t\t\t\totherPrimitives: 0,\n\t\t\t\t\t\tshaders: 0,\n\t\t\t\t\t\tmaterials: 0,\n\t\t\t\t\t\tcameras: 0,\n\t\t\t\t\t\tshadowMapUpdates: 0,\n\t\t\t\t\t\tshadowMapTime: 0,\n\t\t\t\t\t\tdepthMapTime: 0,\n\t\t\t\t\t\tforwardTime: 0,\n\t\t\t\t\t\tlightClustersTime: 0,\n\t\t\t\t\t\tlightClusters: 0,\n\t\t\t\t\t\t_timeToCountFrames: 0,\n\t\t\t\t\t\t_fpsAccum: 0\n\t\t\t\t};\n\t\t\t\tthis.drawCalls = {\n\t\t\t\t\t\tforward: 0,\n\t\t\t\t\t\tdepth: 0,\n\t\t\t\t\t\tshadow: 0,\n\t\t\t\t\t\timmediate: 0,\n\t\t\t\t\t\tmisc: 0,\n\t\t\t\t\t\ttotal: 0,\n\t\t\t\t\t\tskinned: 0,\n\t\t\t\t\t\tinstanced: 0,\n\t\t\t\t\t\tremovedByInstancing: 0\n\t\t\t\t};\n\t\t\t\tthis.misc = {\n\t\t\t\t\t\trenderTargetCreationTime: 0\n\t\t\t\t};\n\t\t\t\tthis.particles = {\n\t\t\t\t\t\tupdatesPerFrame: 0,\n\t\t\t\t\t\t_updatesPerFrame: 0,\n\t\t\t\t\t\tframeTime: 0,\n\t\t\t\t\t\t_frameTime: 0\n\t\t\t\t};\n\t\t\t\tthis.shaders = device._shaderStats;\n\t\t\t\tthis.vram = device._vram;\n\t\t\t\tObject.defineProperty(this.vram, 'totalUsed', {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.tex + this.vb + this.ib;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tObject.defineProperty(this.vram, 'geom', {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.vb + this.ib;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget scene() {\n\t\t\t\treturn getApplication().scene._stats;\n\t\t}\n\t\tget lightmapper() {\n\t\t\t\treturn getApplication().lightmapper?.stats;\n\t\t}\n\t\tget batcher() {\n\t\t\t\tconst batcher = getApplication()._batcher;\n\t\t\t\treturn batcher ? batcher._stats : null;\n\t\t}\n}\n\nvar alphaTestPS$1 = `\nuniform float alpha_ref;\nvoid alphaTest(float a) {\n\tif (a < alpha_ref) discard;\n}\n`;\n\nvar ambientPS$1 = `\n#ifdef LIT_AMBIENT_SOURCE == AMBIENTSH\n\tuniform vec3 ambientSH[9];\n#endif\n#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t#include \"envAtlasPS\"\n\t#ifndef ENV_ATLAS\n\t#define ENV_ATLAS\n\t\tuniform sampler2D texture_envAtlas;\n\t#endif\n#endif\nvoid addAmbient(vec3 worldNormal) {\n\t#ifdef LIT_AMBIENT_SOURCE == AMBIENTSH\n\t\tvec3 n = cubeMapRotate(worldNormal);\n\t\tvec3 color =\n\t\t\tambientSH[0] +\n\t\t\tambientSH[1] * n.x +\n\t\t\tambientSH[2] * n.y +\n\t\t\tambientSH[3] * n.z +\n\t\t\tambientSH[4] * n.x * n.z +\n\t\t\tambientSH[5] * n.z * n.y +\n\t\t\tambientSH[6] * n.y * n.x +\n\t\t\tambientSH[7] * (3.0 * n.z * n.z - 1.0) +\n\t\t\tambientSH[8] * (n.x * n.x - n.y * n.y);\n\t\tdDiffuseLight += processEnvironment(max(color, vec3(0.0)));\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t\tvec3 dir = normalize(cubeMapRotate(worldNormal) * vec3(-1.0, 1.0, 1.0));\n\t\tvec2 uv = mapUv(toSphericalUv(dir), vec4(128.0, 256.0 + 128.0, 64.0, 32.0) / atlasSize);\n\t\tvec4 raw = texture2D(texture_envAtlas, uv);\n\t\tvec3 linear = {ambientDecode}(raw);\n\t\tdDiffuseLight += processEnvironment(linear);\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == CONSTANT\n\t\tdDiffuseLight += light_globalAmbient;\n\t#endif\n}\n`;\n\nvar anisotropyPS$1 = `\n#ifdef LIT_GGX_SPECULAR\n\tuniform float material_anisotropyIntensity;\n\tuniform vec2 material_anisotropyRotation;\n#endif\nvoid getAnisotropy() {\n\tdAnisotropy = 0.0;\n\tdAnisotropyRotation = vec2(1.0, 0.0);\n#ifdef LIT_GGX_SPECULAR\n\tdAnisotropy = material_anisotropyIntensity;\n\tdAnisotropyRotation = material_anisotropyRotation;\n#endif\n\t#ifdef STD_ANISOTROPY_TEXTURE\n\tvec3 anisotropyTex = texture2DBias({STD_ANISOTROPY_TEXTURE_NAME}, {STD_ANISOTROPY_TEXTURE_UV}, textureBias).rgb;\n\tdAnisotropy *= anisotropyTex.b;\n\tvec2 anisotropyRotationFromTex = anisotropyTex.rg * 2.0 - vec2(1.0);\n\tmat2 rotationMatrix = mat2(dAnisotropyRotation.x, dAnisotropyRotation.y, -dAnisotropyRotation.y, dAnisotropyRotation.x);\n\tdAnisotropyRotation = rotationMatrix * anisotropyRotationFromTex;\n\t#endif\n\t\n\tdAnisotropy = clamp(dAnisotropy, 0.0, 1.0);\n}\n`;\n\nvar aoPS$1 = `\n#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\tuniform float material_aoIntensity;\n#endif\n#ifdef STD_AODETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nvoid getAO() {\n\tdAo = 1.0;\n\t#ifdef STD_AO_TEXTURE\n\t\tfloat aoBase = texture2DBias({STD_AO_TEXTURE_NAME}, {STD_AO_TEXTURE_UV}, textureBias).{STD_AO_TEXTURE_CHANNEL};\n\t\t#ifdef STD_AODETAIL_TEXTURE\n\t\t\tfloat aoDetail = texture2DBias({STD_AODETAIL_TEXTURE_NAME}, {STD_AODETAIL_TEXTURE_UV}, textureBias).{STD_AODETAIL_TEXTURE_CHANNEL};\n\t\t\taoBase = detailMode_{STD_AODETAIL_DETAILMODE}(vec3(aoBase), vec3(aoDetail)).r;\n\t\t#endif\n\t\tdAo *= aoBase;\n\t#endif\n\t#ifdef STD_AO_VERTEX\n\t\tdAo *= saturate(vVertexColor.{STD_AO_VERTEX_CHANNEL});\n\t#endif\n\t#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\t\tdAo = mix(1.0, dAo, material_aoIntensity);\n\t#endif\n}\n`;\n\nvar aoDiffuseOccPS$1 = `\nvoid occludeDiffuse(float ao) {\n\tdDiffuseLight *= ao;\n}\n`;\n\nvar aoSpecOccPS$1 = `\n#if LIT_OCCLUDE_SPECULAR != NONE\n\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\tuniform float material_occludeSpecularIntensity;\n\t#endif\n#endif\nvoid occludeSpecular(float gloss, float ao, vec3 worldNormal, vec3 viewDir) {\n\t#if LIT_OCCLUDE_SPECULAR == AO\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tfloat specOcc = mix(1.0, ao, material_occludeSpecularIntensity);\n\t\t#else\n\t\t\tfloat specOcc = ao;\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR == GLOSSDEPENDENT\n\t\tfloat specPow = exp2(gloss * 11.0);\n\t\tfloat specOcc = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01 * specPow) - 1.0 + ao);\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tspecOcc = mix(1.0, specOcc, material_occludeSpecularIntensity);\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\tdSpecularLight *= specOcc;\n\t\tdReflection *= specOcc;\n\t\t#ifdef LIT_SHEEN\n\t\t\tsSpecularLight *= specOcc;\n\t\t\tsReflection *= specOcc;\n\t\t#endif\n\t#endif\n}\n`;\n\nvar bakeDirLmEndPS$1 = `\n\tvec4 dirLm = texture2D(texture_dirLightMap, vUv1);\n\tif (bakeDir > 0.5) {\n\t\tif (dAtten > 0.00001) {\n\t\t\tdirLm.xyz = dirLm.xyz * 2.0 - vec3(1.0);\n\t\t\tdAtten = saturate(dAtten);\n\t\t\tgl_FragColor.rgb = normalize(dLightDirNormW.xyz*dAtten + dirLm.xyz*dirLm.w) * 0.5 + vec3(0.5);\n\t\t\tgl_FragColor.a = dirLm.w + dAtten;\n\t\t\tgl_FragColor.a = max(gl_FragColor.a, 1.0 / 255.0);\n\t\t} else {\n\t\t\tgl_FragColor = dirLm;\n\t\t}\n\t} else {\n\t\tgl_FragColor.rgb = dirLm.xyz;\n\t\tgl_FragColor.a = max(dirLm.w, dAtten > 0.00001 ? (1.0/255.0) : 0.0);\n\t}\n`;\n\nvar bakeLmEndPS$1 = `\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tdDiffuseLight = ((dDiffuseLight - 0.5) * max(ambientBakeOcclusionContrast + 1.0, 0.0)) + 0.5;\n\tdDiffuseLight += vec3(ambientBakeOcclusionBrightness);\n\tdDiffuseLight = saturate(dDiffuseLight);\n\tdDiffuseLight *= dAmbientLight;\n#endif\n#ifdef LIGHTMAP_RGBM\n\tgl_FragColor.rgb = dDiffuseLight;\n\tgl_FragColor.rgb = pow(gl_FragColor.rgb, vec3(0.5));\n\tgl_FragColor.rgb /= 8.0;\n\tgl_FragColor.a = clamp( max( max( gl_FragColor.r, gl_FragColor.g ), max( gl_FragColor.b, 1.0 / 255.0 ) ), 0.0,1.0 );\n\tgl_FragColor.a = ceil(gl_FragColor.a * 255.0) / 255.0;\n\tgl_FragColor.rgb /= gl_FragColor.a;\n#else\n\tgl_FragColor = vec4(dDiffuseLight, 1.0);\n#endif\n`;\n\nvar basePS$1 = `\nuniform vec3 view_position;\nuniform vec3 light_globalAmbient;\nfloat square(float x) {\n\treturn x*x;\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec3 saturate(vec3 x) {\n\treturn clamp(x, vec3(0.0), vec3(1.0));\n}\n`;\n\nvar baseNineSlicedPS$1 = `\n#define NINESLICED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\nvec2 nineSlicedUv;\n`;\n\nvar baseNineSlicedTiledPS$1 = `\n#define NINESLICED\n#define NINESLICETILED\nvarying vec2 vMask;\nvarying vec2 vTiledUv;\nuniform mediump vec4 innerOffset;\nuniform mediump vec2 outerScale;\nuniform mediump vec4 atlasRect;\nvec2 nineSlicedUv;\n`;\n\nvar bayerPS$1 = `\nfloat bayer2(vec2 p) {\n\treturn mod(2.0 * p.y + p.x + 1.0, 4.0);\n}\nfloat bayer4(vec2 p) {\n\tvec2 p1 = mod(p, 2.0);\n\tvec2 p2 = floor(0.5 * mod(p, 4.0));\n\treturn 4.0 * bayer2(p1) + bayer2(p2);\n}\nfloat bayer8(vec2 p) {\n\tvec2 p1 = mod(p, 2.0);\n\tvec2 p2 = floor(0.5 * mod(p, 4.0));\n\tvec2 p4 = floor(0.25 * mod(p, 8.0));\n\treturn 4.0 * (4.0 * bayer2(p1) + bayer2(p2)) + bayer2(p4);\n}\n`;\n\nvar blurVSMPS$1 = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\n#ifdef GAUSS\n\tuniform float weight[{SAMPLES}];\n#endif\nvoid main(void) {\n\tvec3 moments = vec3(0.0);\n\tvec2 uv = vUv0 - pixelOffset * (float({SAMPLES}) * 0.5);\n\tfor (int i = 0; i < {SAMPLES}; i++) {\n\t\tvec4 c = texture2D(source, uv + pixelOffset * float(i));\n\t\t#ifdef GAUSS\n\t\t\tmoments += c.xyz * weight[i];\n\t\t#else\n\t\t\tmoments += c.xyz;\n\t\t#endif\n\t}\n\t#ifndef GAUSS\n\t\tmoments *= 1.0 / float({SAMPLES});\n\t#endif\n\tgl_FragColor = vec4(moments.x, moments.y, moments.z, 1.0);\n}\n`;\n\nvar clearCoatPS$1 = `\nuniform float material_clearCoat;\nvoid getClearCoat() {\n\tccSpecularity = material_clearCoat;\n\t#ifdef STD_CLEARCOAT_TEXTURE\n\tccSpecularity *= texture2DBias({STD_CLEARCOAT_TEXTURE_NAME}, {STD_CLEARCOAT_TEXTURE_UV}, textureBias).{STD_CLEARCOAT_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOAT_VERTEX\n\tccSpecularity *= saturate(vVertexColor.{STD_CLEARCOAT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar clearCoatGlossPS$1 = `\nuniform float material_clearCoatGloss;\nvoid getClearCoatGlossiness() {\n\tccGlossiness = material_clearCoatGloss;\n\t#ifdef STD_CLEARCOATGLOSS_TEXTURE\n\tccGlossiness *= texture2DBias({STD_CLEARCOATGLOSS_TEXTURE_NAME}, {STD_CLEARCOATGLOSS_TEXTURE_UV}, textureBias).{STD_CLEARCOATGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_VERTEX\n\tccGlossiness *= saturate(vVertexColor.{STD_CLEARCOATGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_INVERT\n\tccGlossiness = 1.0 - ccGlossiness;\n\t#endif\n\tccGlossiness += 0.0000001;\n}\n`;\n\nvar clearCoatNormalPS$1 = `\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\nuniform float material_clearCoatBumpiness;\n#endif\nvoid getClearCoatNormal() {\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\n\tvec3 normalMap = {STD_CLEARCOATNORMAL_TEXTURE_DECODE}(texture2DBias({STD_CLEARCOATNORMAL_TEXTURE_NAME}, {STD_CLEARCOATNORMAL_TEXTURE_UV}, textureBias));\n\tnormalMap = mix(vec3(0.0, 0.0, 1.0), normalMap, material_clearCoatBumpiness);\n\tccNormalW = normalize(dTBN * normalMap);\n#else\n\tccNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar clusteredLightUtilsPS$1 = `\nvec2 getCubemapFaceCoordinates(const vec3 dir, out float faceIndex, out vec2 tileOffset)\n{\n\tvec3 vAbs = abs(dir);\n\tfloat ma;\n\tvec2 uv;\n\tif (vAbs.z >= vAbs.x && vAbs.z >= vAbs.y) {\n\t\tfaceIndex = dir.z < 0.0 ? 5.0 : 4.0;\n\t\tma = 0.5 / vAbs.z;\n\t\tuv = vec2(dir.z < 0.0 ? -dir.x : dir.x, -dir.y);\n\t\ttileOffset.x = 2.0;\n\t\ttileOffset.y = dir.z < 0.0 ? 1.0 : 0.0;\n\t} else if(vAbs.y >= vAbs.x) {\n\t\tfaceIndex = dir.y < 0.0 ? 3.0 : 2.0;\n\t\tma = 0.5 / vAbs.y;\n\t\tuv = vec2(dir.x, dir.y < 0.0 ? -dir.z : dir.z);\n\t\ttileOffset.x = 1.0;\n\t\ttileOffset.y = dir.y < 0.0 ? 1.0 : 0.0;\n\t} else {\n\t\tfaceIndex = dir.x < 0.0 ? 1.0 : 0.0;\n\t\tma = 0.5 / vAbs.x;\n\t\tuv = vec2(dir.x < 0.0 ? dir.z : -dir.z, -dir.y);\n\t\ttileOffset.x = 0.0;\n\t\ttileOffset.y = dir.x < 0.0 ? 1.0 : 0.0;\n\t}\n\treturn uv * ma + 0.5;\n}\nvec2 getCubemapAtlasCoordinates(const vec3 omniAtlasViewport, float shadowEdgePixels, float shadowTextureResolution, const vec3 dir) {\n\tfloat faceIndex;\n\tvec2 tileOffset;\n\tvec2 uv = getCubemapFaceCoordinates(dir, faceIndex, tileOffset);\n\tfloat atlasFaceSize = omniAtlasViewport.z;\n\tfloat tileSize = shadowTextureResolution * atlasFaceSize;\n\tfloat offset = shadowEdgePixels / tileSize;\n\tuv = uv * vec2(1.0 - offset * 2.0) + vec2(offset * 1.0);\n\tuv *= atlasFaceSize;\n\tuv += tileOffset * atlasFaceSize;\n\tuv += omniAtlasViewport.xy;\n\treturn uv;\n}\n`;\n\nvar clusteredLightCookiesPS$1 = `\nvec3 _getCookieClustered(TEXTURE_ACCEPT(tex), vec2 uv, float intensity, vec4 cookieChannel) {\n\tvec4 pixel = mix(vec4(1.0), texture2DLod(tex, uv, 0.0), intensity);\n\tbool isRgb = dot(cookieChannel.rgb, vec3(1.0)) == 3.0;\n\treturn isRgb ? pixel.rgb : vec3(dot(pixel, cookieChannel));\n}\nvec3 getCookie2DClustered(TEXTURE_ACCEPT(tex), mat4 transform, vec3 worldPosition, float intensity, vec4 cookieChannel) {\n\tvec4 projPos = transform * vec4(worldPosition, 1.0);\n\treturn _getCookieClustered(TEXTURE_PASS(tex), projPos.xy / projPos.w, intensity, cookieChannel);\n}\nvec3 getCookieCubeClustered(TEXTURE_ACCEPT(tex), vec3 dir, float intensity, vec4 cookieChannel, float shadowTextureResolution, float shadowEdgePixels, vec3 omniAtlasViewport) {\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, dir);\n\treturn _getCookieClustered(TEXTURE_PASS(tex), uv, intensity, cookieChannel);\n}\n`;\n\nvar clusteredLightShadowsPS$1 = `\nvec3 _getShadowCoordPerspZbuffer(mat4 shadowMatrix, vec4 shadowParams, vec3 wPos) {\n\tvec4 projPos = shadowMatrix * vec4(wPos, 1.0);\n\tprojPos.xyz /= projPos.w;\n\treturn projPos.xyz;\n}\nvec3 getShadowCoordPerspZbufferNormalOffset(mat4 shadowMatrix, vec4 shadowParams, vec3 normal) {\n\tvec3 wPos = vPositionW + normal * shadowParams.y;\n\treturn _getShadowCoordPerspZbuffer(shadowMatrix, shadowParams, wPos);\n}\nvec3 normalOffsetPointShadow(vec4 shadowParams, vec3 lightPos, vec3 lightDir, vec3 lightDirNorm, vec3 normal) {\n\tfloat distScale = length(lightDir);\n\tvec3 wPos = vPositionW + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\tvec3 dir = wPos - lightPos;\n\treturn dir;\n}\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\nfloat getShadowOmniClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\tfloat shadowTextureResolution = shadowParams.x;\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn textureShadow(shadowMap, vec3(uv, shadowZ));\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF3)\nfloat getShadowOmniClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\tfloat shadowTextureResolution = shadowParams.x;\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 shadowCoord = vec3(uv, shadowZ);\n\treturn getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF5)\nfloat getShadowOmniClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec4 shadowParams, vec3 omniAtlasViewport, float shadowEdgePixels, vec3 lightDir) {\n\tfloat shadowTextureResolution = shadowParams.x;\n\tvec2 uv = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 shadowCoord = vec3(uv, shadowZ);\n\treturn getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\nfloat getShadowSpotClusteredPCF1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF3)\nfloat getShadowSpotClusteredPCF3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn getShadowSpotPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF5)\nfloat getShadowSpotClusteredPCF5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams);\n}\n#endif\n`;\n\nvar clusteredLightPS$1 = `\n#include \"lightBufferDefinesPS\"\n#include \"clusteredLightUtilsPS\"\n#ifdef CLUSTER_COOKIES\n\t#include \"clusteredLightCookiesPS\"\n#endif\n#ifdef CLUSTER_SHADOWS\n\t#include \"clusteredLightShadowsPS\"\n#endif\nuniform highp sampler2D clusterWorldTexture;\nuniform highp sampler2D lightsTexture;\n#ifdef CLUSTER_SHADOWS\n\tuniform sampler2DShadow shadowAtlasTexture;\n#endif\n#ifdef CLUSTER_COOKIES\n\tuniform sampler2D cookieAtlasTexture;\n#endif\nuniform int clusterMaxCells;\nuniform float clusterSkip;\nuniform vec3 clusterCellsCountByBoundsSize;\nuniform vec3 clusterTextureSize;\nuniform vec3 clusterBoundsMin;\nuniform vec3 clusterBoundsDelta;\nuniform vec3 clusterCellsDot;\nuniform vec3 clusterCellsMax;\nuniform vec2 shadowAtlasParams;\nstruct ClusterLightData {\n\tuint flags;\n\tvec3 halfWidth;\n\tbool isSpot;\n\tvec3 halfHeight;\n\tint lightIndex;\n\tvec3 position;\n\tuint shape;\n\tvec3 direction;\n\tbool falloffModeLinear;\n\tvec3 color;\n\tfloat shadowIntensity;\n\tvec3 omniAtlasViewport;\n\tfloat range;\n\tvec4 cookieChannelMask;\n\tfloat biasesData;\n\tfloat shadowBias;\n\tfloat shadowNormalBias;\n\tfloat anglesData;\n\tfloat innerConeAngleCos;\n\tfloat outerConeAngleCos;\n\tfloat cookieIntensity;\n\tbool isDynamic;\n\tbool isLightmapped;\n};\nmat4 lightProjectionMatrix;\nvec4 sampleLightTextureF(const ClusterLightData clusterLightData, int index) {\n\treturn texelFetch(lightsTexture, ivec2(index, clusterLightData.lightIndex), 0);\n}\nvoid decodeClusterLightCore(inout ClusterLightData clusterLightData, float lightIndex) {\n\tclusterLightData.lightIndex = int(lightIndex);\n\tvec4 halfData = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_COLOR_ANGLES_BIAS});\n\tclusterLightData.anglesData = halfData.z;\n\tclusterLightData.biasesData = halfData.w;\n\tvec2 colorRG = unpackHalf2x16(floatBitsToUint(halfData.x));\n\tvec2 colorB_ = unpackHalf2x16(floatBitsToUint(halfData.y));\n\tclusterLightData.color = vec3(colorRG, colorB_.x) * {LIGHT_COLOR_DIVIDER};\n\tvec4 lightPosRange = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_POSITION_RANGE});\n\tclusterLightData.position = lightPosRange.xyz;\n\tclusterLightData.range = lightPosRange.w;\n\tvec4 lightDir_Flags = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_DIRECTION_FLAGS});\n\tclusterLightData.direction = lightDir_Flags.xyz;\n\tclusterLightData.flags = floatBitsToUint(lightDir_Flags.w);\n\tclusterLightData.isSpot = (clusterLightData.flags & (1u << 30u)) != 0u;\n\tclusterLightData.shape = (clusterLightData.flags >> 28u) & 0x3u;\n\tclusterLightData.falloffModeLinear = (clusterLightData.flags & (1u << 27u)) == 0u;\n\tclusterLightData.shadowIntensity = float((clusterLightData.flags >> 0u) & 0xFFu) / 255.0;\n\tclusterLightData.cookieIntensity = float((clusterLightData.flags >> 8u) & 0xFFu) / 255.0;\n\tclusterLightData.isDynamic = (clusterLightData.flags & (1u << 22u)) != 0u;\n\tclusterLightData.isLightmapped = (clusterLightData.flags & (1u << 21u)) != 0u;\n}\nvoid decodeClusterLightSpot(inout ClusterLightData clusterLightData) {\n\tvec2 angles = unpackHalf2x16(floatBitsToUint(clusterLightData.anglesData));\n\tclusterLightData.innerConeAngleCos = angles.x;\n\tclusterLightData.outerConeAngleCos = angles.y;\n}\nvoid decodeClusterLightOmniAtlasViewport(inout ClusterLightData clusterLightData) {\n\tclusterLightData.omniAtlasViewport = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_0}).xyz;\n}\nvoid decodeClusterLightAreaData(inout ClusterLightData clusterLightData) {\n\tclusterLightData.halfWidth = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_AREA_DATA_WIDTH}).xyz;\n\tclusterLightData.halfHeight = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_AREA_DATA_HEIGHT}).xyz;\n}\nvoid decodeClusterLightProjectionMatrixData(inout ClusterLightData clusterLightData) {\n\t\n\tvec4 m0 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_0});\n\tvec4 m1 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_1});\n\tvec4 m2 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_2});\n\tvec4 m3 = sampleLightTextureF(clusterLightData, {CLUSTER_TEXTURE_PROJ_MAT_3});\n\tlightProjectionMatrix = mat4(m0, m1, m2, m3);\n}\nvoid decodeClusterLightShadowData(inout ClusterLightData clusterLightData) {\n\t\n\tvec2 biases = unpackHalf2x16(floatBitsToUint(clusterLightData.biasesData));\n\tclusterLightData.shadowBias = biases.x;\n\tclusterLightData.shadowNormalBias = biases.y;\n}\nvoid decodeClusterLightCookieData(inout ClusterLightData clusterLightData) {\n\tuint cookieFlags = (clusterLightData.flags >> 23u) & 0x0Fu;\n\tclusterLightData.cookieChannelMask = vec4(uvec4(cookieFlags) & uvec4(1u, 2u, 4u, 8u));\n\tclusterLightData.cookieChannelMask = step(1.0, clusterLightData.cookieChannelMask);\n}\nvoid evaluateLight(\n\tClusterLightData light, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir,\n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tvec3 cookieAttenuation = vec3(1.0);\n\tfloat diffuseAttenuation = 1.0;\n\tfloat falloffAttenuation = 1.0;\n\tvec3 lightDirW = evalOmniLight(light.position);\n\tvec3 lightDirNormW = normalize(lightDirW);\n\t#ifdef CLUSTER_AREALIGHTS\n\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\tdecodeClusterLightAreaData(light);\n\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\tcalcRectLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\tcalcDiskLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else {\n\t\t\tcalcSphereLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t}\n\t\tfalloffAttenuation = getFalloffWindow(light.range, lightDirW);\n\t} else\n\t#endif\n\t{\n\t\tif (light.falloffModeLinear)\n\t\t\tfalloffAttenuation = getFalloffLinear(light.range, lightDirW);\n\t\telse\n\t\t\tfalloffAttenuation = getFalloffInvSquared(light.range, lightDirW);\n\t}\n\tif (falloffAttenuation > 0.00001) {\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\tdiffuseAttenuation = getRectLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\tdiffuseAttenuation = getDiskLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else {\n\t\t\t\tdiffuseAttenuation = getSphereLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t}\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\tfalloffAttenuation *= getLightDiffuse(worldNormal, viewDir, lightDirNormW); \n\t\t}\n\t\tif (light.isSpot) {\n\t\t\tdecodeClusterLightSpot(light);\n\t\t\tfalloffAttenuation *= getSpotEffect(light.direction, light.innerConeAngleCos, light.outerConeAngleCos, lightDirNormW);\n\t\t}\n\t\t#if defined(CLUSTER_COOKIES) || defined(CLUSTER_SHADOWS)\n\t\tif (falloffAttenuation > 0.00001) {\n\t\t\tif (light.shadowIntensity > 0.0 || light.cookieIntensity > 0.0) {\n\t\t\t\tif (light.isSpot) {\n\t\t\t\t\tdecodeClusterLightProjectionMatrixData(light);\n\t\t\t\t} else {\n\t\t\t\t\tdecodeClusterLightOmniAtlasViewport(light);\n\t\t\t\t}\n\t\t\t\tfloat shadowTextureResolution = shadowAtlasParams.x;\n\t\t\t\tfloat shadowEdgePixels = shadowAtlasParams.y;\n\t\t\t\t#ifdef CLUSTER_COOKIES\n\t\t\t\tif (light.cookieIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightCookieData(light);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tcookieAttenuation = getCookie2DClustered(TEXTURE_PASS(cookieAtlasTexture), lightProjectionMatrix, vPositionW, light.cookieIntensity, light.cookieChannelMask);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcookieAttenuation = getCookieCubeClustered(TEXTURE_PASS(cookieAtlasTexture), lightDirW, light.cookieIntensity, light.cookieChannelMask, shadowTextureResolution, shadowEdgePixels, light.omniAtlasViewport);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\t#ifdef CLUSTER_SHADOWS\n\t\t\t\tif (light.shadowIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightShadowData(light);\n\t\t\t\t\tvec4 shadowParams = vec4(shadowTextureResolution, light.shadowNormalBias, light.shadowBias, 1.0 / light.range);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tvec3 shadowCoord = getShadowCoordPerspZbufferNormalOffset(lightProjectionMatrix, shadowParams, geometricNormal);\n\t\t\t\t\t\t\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCSS)\n\t\t\t\t\t\t\tfloat shadow = getShadowSpotClusteredPCSS(SHADOWMAP_PASS(shadowAtlasTexture), shadowCoord, shadowParams);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation *= mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvec3 dir = normalOffsetPointShadow(shadowParams, light.position, lightDirW, lightDirNormW, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF1(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF3(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tfloat shadow = getShadowOmniClusteredPCF5(SHADOWMAP_PASS(shadowAtlasTexture), shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation *= mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#endif\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\t{\n\t\t\t\tvec3 areaDiffuse = (diffuseAttenuation * falloffAttenuation) * light.color * cookieAttenuation;\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tareaDiffuse = mix(areaDiffuse, vec3(0), dLTCSpecFres);\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight += areaDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tfloat areaLightSpecular;\n\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\tareaLightSpecular = getRectLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\tareaLightSpecular = getDiskLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else {\n\t\t\t\t\tareaLightSpecular = getSphereLightSpecular(worldNormal, viewDir);\n\t\t\t\t}\n\t\t\t\tdSpecularLight += dLTCSpecFres * areaLightSpecular * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\tfloat areaLightSpecularCC;\n\t\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\t\tareaLightSpecularCC = getRectLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\t\tareaLightSpecularCC = getDiskLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tareaLightSpecularCC = getSphereLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t}\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * areaLightSpecularCC * falloffAttenuation * light.color  * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\t{\n\t\t\t\tvec3 punctualDiffuse = falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#if defined(CLUSTER_AREALIGHTS)\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tpunctualDiffuse = mix(punctualDiffuse, vec3(0), specularity);\n\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight += punctualDiffuse;\n\t\t\t}\n\t \n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 halfDir = normalize(-lightDirNormW + viewDir);\n\t\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tdSpecularLight += \n\t\t\t\t\t\tgetLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * \n\t\t\t\t\t\tgetFresnel(\n\t\t\t\t\t\t\tdot(viewDir, halfDir), \n\t\t\t\t\t\t\tgloss, \n\t\t\t\t\t\t\tspecularity\n\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\tiridescence_intensity\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t);\n\t\t\t\t#else\n\t\t\t\t\tdSpecularLight += getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * specularity;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\t\tccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * getFresnelCC(dot(viewDir, halfDir));\n\t\t\t\t\t#else\n\t\t\t\t\t\tccSpecularLight += getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation; \n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tsSpecularLight += getLightSpecularSheen(halfDir, worldNormal, viewDir, lightDirNormW, sheen_gloss) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t}\n\t}\n\tdAtten = falloffAttenuation;\n\tdLightDirNormW = lightDirNormW;\n}\nvoid evaluateClusterLight(\n\tfloat lightIndex, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tClusterLightData clusterLightData;\n\tdecodeClusterLightCore(clusterLightData, lightIndex);\n\t#ifdef CLUSTER_MESH_DYNAMIC_LIGHTS\n\t\tbool acceptLightMask = clusterLightData.isDynamic;\n\t#else\n\t\tbool acceptLightMask = clusterLightData.isLightmapped;\n\t#endif\n\tif (acceptLightMask)\n\t\tevaluateLight(\n\t\t\tclusterLightData, \n\t\t\tworldNormal, \n\t\t\tviewDir, \n\t\t\treflectionDir, \n#if defined(LIT_CLEARCOAT)\n\t\t\tclearcoatReflectionDir, \n#endif\n\t\t\tgloss, \n\t\t\tspecularity, \n\t\t\tgeometricNormal, \n\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel,\n#endif\n\t\t\tclearcoat_worldNormal,\n\t\t\tclearcoat_gloss,\n\t\t\tsheen_gloss,\n\t\t\tiridescence_intensity\n\t\t);\n}\nvoid addClusteredLights(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n#if defined(LIT_CLEARCOAT)\n\tvec3 clearcoatReflectionDir,\n#endif\n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 geometricNormal, \n\tmat3 tbn, \n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel,\n#endif\n\tvec3 clearcoat_worldNormal,\n\tfloat clearcoat_gloss,\n\tfloat sheen_gloss,\n\tfloat iridescence_intensity\n) {\n\tif (clusterSkip > 0.5)\n\t\treturn;\n\tvec3 cellCoords = floor((vPositionW - clusterBoundsMin) * clusterCellsCountByBoundsSize);\n\tif (!(any(lessThan(cellCoords, vec3(0.0))) || any(greaterThanEqual(cellCoords, clusterCellsMax)))) {\n\t\tfloat cellIndex = dot(clusterCellsDot, cellCoords);\n\t\tfloat clusterV = floor(cellIndex * clusterTextureSize.y);\n\t\tfloat clusterU = cellIndex - (clusterV * clusterTextureSize.x);\n\t\tfor (int lightCellIndex = 0; lightCellIndex < clusterMaxCells; lightCellIndex++) {\n\t\t\tfloat lightIndex = texelFetch(clusterWorldTexture, ivec2(int(clusterU) + lightCellIndex, clusterV), 0).x;\n\t\t\tif (lightIndex <= 0.0)\n\t\t\t\tbreak;\n\t\t\tevaluateClusterLight(\n\t\t\t\tlightIndex * 255.0, \n\t\t\t\tworldNormal, \n\t\t\t\tviewDir, \n\t\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\t\tgloss, \n\t\t\t\tspecularity, \n\t\t\t\tgeometricNormal, \n\t\t\t\ttbn, \n#if defined(LIT_IRIDESCENCE)\n\t\t\t\tiridescenceFresnel,\n#endif\n\t\t\t\tclearcoat_worldNormal,\n\t\t\t\tclearcoat_gloss,\n\t\t\t\tsheen_gloss,\n\t\t\t\tiridescence_intensity\n\t\t\t); \n\t\t}\n\t}\n}\n`;\n\nvar combinePS$1 = `\nvec3 combineColor(vec3 albedo, vec3 sheenSpecularity, float clearcoatSpecularity) {\n\tvec3 ret = vec3(0);\n#ifdef LIT_OLD_AMBIENT\n\tret += (dDiffuseLight - light_globalAmbient) * albedo + material_ambient * light_globalAmbient;\n#else\n\tret += albedo * dDiffuseLight;\n#endif\n#ifdef LIT_SPECULAR\n\tret += dSpecularLight;\n#endif\n#ifdef LIT_REFLECTIONS\n\tret += dReflection.rgb * dReflection.a;\n#endif\n#ifdef LIT_SHEEN\n\tfloat sheenScaling = 1.0 - max(max(sheenSpecularity.r, sheenSpecularity.g), sheenSpecularity.b) * 0.157;\n\tret = ret * sheenScaling + (sSpecularLight + sReflection.rgb) * sheenSpecularity;\n#endif\n#ifdef LIT_CLEARCOAT\n\tfloat clearCoatScaling = 1.0 - ccFresnel * clearcoatSpecularity;\n\tret = ret * clearCoatScaling + (ccSpecularLight + ccReflection) * clearcoatSpecularity;\n#endif\n\treturn ret;\n}\n`;\n\nvar cookieBlit2DPS$1 = `\n\tvarying vec2 uv0;\n\tuniform sampler2D blitTexture;\n\tvoid main(void) {\n\t\tgl_FragColor = texture2D(blitTexture, uv0);\n\t}\n`;\n\nvar cookieBlitCubePS$1 = `\n\tvarying vec2 uv0;\n\tuniform samplerCube blitTexture;\n\tuniform mat4 invViewProj;\n\tvoid main(void) {\n\t\tvec4 projPos = vec4(uv0 * 2.0 - 1.0, 0.5, 1.0);\n\t\tvec4 worldPos = invViewProj * projPos;\n\t\tgl_FragColor = textureCube(blitTexture, worldPos.xyz);\n\t}\n`;\n\nvar cookieBlitVS$1 = `\n\tattribute vec2 vertex_position;\n\tvarying vec2 uv0;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tuv0 = vertex_position.xy * 0.5 + 0.5;\n\t\t#ifndef WEBGPU\n\t\t\tuv0.y = 1.0 - uv0.y;\n\t\t#endif\n\t}\n`;\n\nvar cookiePS = `\nvec4 getCookie2D(sampler2D tex, mat4 transform, float intensity) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\treturn mix(vec4(1.0), texture2D(tex, projPos.xy), intensity);\n}\nvec4 getCookie2DClip(sampler2D tex, mat4 transform, float intensity) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tif (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0);\n\treturn mix(vec4(1.0), texture2D(tex, projPos.xy), intensity);\n}\nvec4 getCookie2DXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tprojPos.xy += cookieOffset;\n\tvec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5);\n\treturn mix(vec4(1.0), texture2D(tex, uv), intensity);\n}\nvec4 getCookie2DClipXform(sampler2D tex, mat4 transform, float intensity, vec4 cookieMatrix, vec2 cookieOffset) {\n\tvec4 projPos = transform * vec4(vPositionW, 1.0);\n\tprojPos.xy /= projPos.w;\n\tprojPos.xy += cookieOffset;\n\tif (projPos.x < 0.0 || projPos.x > 1.0 || projPos.y < 0.0 || projPos.y > 1.0 || projPos.z < 0.0) return vec4(0.0);\n\tvec2 uv = mat2(cookieMatrix) * (projPos.xy-vec2(0.5)) + vec2(0.5);\n\treturn mix(vec4(1.0), texture2D(tex, uv), intensity);\n}\nvec4 getCookieCube(samplerCube tex, mat4 transform, float intensity) {\n\treturn mix(vec4(1.0), textureCube(tex, dLightDirNormW * mat3(transform)), intensity);\n}\n`;\n\nvar cubeMapProjectPS$1 = `\n#if LIT_CUBEMAP_PROJECTION == BOX\n\tuniform vec3 envBoxMin;\n\tuniform vec3 envBoxMax;\n#endif\nvec3 cubeMapProject(vec3 nrdir) {\n\t#if LIT_CUBEMAP_PROJECTION == NONE\n\t\treturn cubeMapRotate(nrdir);\n\t#endif\n\t#if LIT_CUBEMAP_PROJECTION == BOX\n\t\tnrdir = cubeMapRotate(nrdir);\n\t\tvec3 rbmax = (envBoxMax - vPositionW) / nrdir;\n\t\tvec3 rbmin = (envBoxMin - vPositionW) / nrdir;\n\t\tvec3 rbminmax = mix(rbmin, rbmax, vec3(greaterThan(nrdir, vec3(0.0))));\n\t\tfloat fa = min(min(rbminmax.x, rbminmax.y), rbminmax.z);\n\t\tvec3 posonbox = vPositionW + nrdir * fa;\n\t\tvec3 envBoxPos = (envBoxMin + envBoxMax) * 0.5;\n\t\treturn normalize(posonbox - envBoxPos);\n\t#endif\n}\n`;\n\nvar cubeMapRotatePS$1 = `\n#ifdef CUBEMAP_ROTATION\nuniform mat3 cubeMapRotationMatrix;\n#endif\nvec3 cubeMapRotate(vec3 refDir) {\n#ifdef CUBEMAP_ROTATION\n\treturn refDir * cubeMapRotationMatrix;\n#else\n\treturn refDir;\n#endif\n}\n`;\n\nvar debugOutputPS$1 = `\n#ifdef DEBUG_ALBEDO_PASS\ngl_FragColor = vec4(gammaCorrectOutput(dAlbedo), 1.0);\n#endif\n#ifdef DEBUG_UV0_PASS\ngl_FragColor = vec4(litArgs_albedo , 1.0);\n#endif\n#ifdef DEBUG_WORLD_NORMAL_PASS\ngl_FragColor = vec4(litArgs_worldNormal * 0.5 + 0.5, 1.0);\n#endif\n#ifdef DEBUG_OPACITY_PASS\ngl_FragColor = vec4(vec3(litArgs_opacity) , 1.0);\n#endif\n#ifdef DEBUG_SPECULARITY_PASS\ngl_FragColor = vec4(litArgs_specularity, 1.0);\n#endif\n#ifdef DEBUG_GLOSS_PASS\ngl_FragColor = vec4(vec3(litArgs_gloss) , 1.0);\n#endif\n#ifdef DEBUG_METALNESS_PASS\ngl_FragColor = vec4(vec3(litArgs_metalness) , 1.0);\n#endif\n#ifdef DEBUG_AO_PASS\ngl_FragColor = vec4(vec3(litArgs_ao) , 1.0);\n#endif\n#ifdef DEBUG_EMISSION_PASS\ngl_FragColor = vec4(gammaCorrectOutput(litArgs_emission), 1.0);\n#endif\n`;\n\nvar debugProcessFrontendPS$1 = `\n#ifdef DEBUG_LIGHTING_PASS\nlitArgs_albedo = vec3(0.5);\n#endif\n#ifdef DEBUG_UV0_PASS\n#ifdef VARYING_VUV0\nlitArgs_albedo = vec3(vUv0, 0);\n#else\nlitArgs_albedo = vec3(0);\n#endif\n#endif\n`;\n\nvar decodePS$1 = `\n#ifndef _DECODE_INCLUDED_\n#define _DECODE_INCLUDED_\nvec3 decodeLinear(vec4 raw) {\n\treturn raw.rgb;\n}\nfloat decodeGamma(float raw) {\n\treturn pow(raw, 2.2);\n}\nvec3 decodeGamma(vec3 raw) {\n\treturn pow(raw, vec3(2.2));\n}\nvec3 decodeGamma(vec4 raw) {\n\treturn pow(raw.xyz, vec3(2.2));\n}\nvec3 decodeRGBM(vec4 raw) {\n\tvec3 color = (8.0 * raw.a) * raw.rgb;\n\treturn color * color;\n}\nvec3 decodeRGBP(vec4 raw) {\n\tvec3 color = raw.rgb * (-raw.a * 7.0 + 8.0);\n\treturn color * color;\n}\nvec3 decodeRGBE(vec4 raw) {\n\tif (raw.a == 0.0) {\n\t\treturn vec3(0.0, 0.0, 0.0);\n\t} else {\n\t\treturn raw.xyz * pow(2.0, raw.w * 255.0 - 128.0);\n\t}\n}\nvec4 passThrough(vec4 raw) {\n\treturn raw;\n}\nvec3 unpackNormalXYZ(vec4 nmap) {\n\treturn nmap.xyz * 2.0 - 1.0;\n}\nvec3 unpackNormalXY(vec4 nmap) {\n\tvec3 normal;\n\tnormal.xy = nmap.wy * 2.0 - 1.0;\n\tnormal.z = sqrt(1.0 - clamp(dot(normal.xy, normal.xy), 0.0, 1.0));\n\treturn normal;\n}\n#endif\n`;\n\nvar detailModesPS$1 = `\n#ifndef _DETAILMODES_INCLUDED_\n#define _DETAILMODES_INCLUDED_\nvec3 detailMode_mul(vec3 c1, vec3 c2) {\n\treturn c1 * c2;\n}\nvec3 detailMode_add(vec3 c1, vec3 c2) {\n\treturn c1 + c2;\n}\nvec3 detailMode_screen(vec3 c1, vec3 c2) {\n\treturn 1.0 - (1.0 - c1)*(1.0 - c2);\n}\nvec3 detailMode_overlay(vec3 c1, vec3 c2) {\n\treturn mix(1.0 - 2.0 * (1.0 - c1)*(1.0 - c2), 2.0 * c1 * c2, step(c1, vec3(0.5)));\n}\nvec3 detailMode_min(vec3 c1, vec3 c2) {\n\treturn min(c1, c2);\n}\nvec3 detailMode_max(vec3 c1, vec3 c2) {\n\treturn max(c1, c2);\n}\n#endif\n`;\n\nvar diffusePS$1 = `\nuniform vec3 material_diffuse;\n#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nvoid getAlbedo() {\n\tdAlbedo = material_diffuse.rgb;\n\t#ifdef STD_DIFFUSE_TEXTURE\n\t\tvec3 albedoTexture = {STD_DIFFUSE_TEXTURE_DECODE}(texture2DBias({STD_DIFFUSE_TEXTURE_NAME}, {STD_DIFFUSE_TEXTURE_UV}, textureBias)).{STD_DIFFUSE_TEXTURE_CHANNEL};\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t\t\tvec3 albedoDetail = {STD_DIFFUSEDETAIL_TEXTURE_DECODE}(texture2DBias({STD_DIFFUSEDETAIL_TEXTURE_NAME}, {STD_DIFFUSEDETAIL_TEXTURE_UV}, textureBias)).{STD_DIFFUSEDETAIL_TEXTURE_CHANNEL};\n\t\t\talbedoTexture = detailMode_{STD_DIFFUSEDETAIL_DETAILMODE}(albedoTexture, albedoDetail);\n\t\t#endif\n\t\tdAlbedo *= albedoTexture;\n\t#endif\n\t#ifdef STD_DIFFUSE_VERTEX\n\t\tdAlbedo *= gammaCorrectInput(saturate(vVertexColor.{STD_DIFFUSE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar emissivePS$1 = `\nuniform vec3 material_emissive;\nuniform float material_emissiveIntensity;\nvoid getEmission() {\n\tdEmission = material_emissive * material_emissiveIntensity;\n\t#ifdef STD_EMISSIVE_TEXTURE\n\tdEmission *= {STD_EMISSIVE_TEXTURE_DECODE}(texture2DBias({STD_EMISSIVE_TEXTURE_NAME}, {STD_EMISSIVE_TEXTURE_UV}, textureBias)).{STD_EMISSIVE_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_EMISSIVE_VERTEX\n\tdEmission *= gammaCorrectInput(saturate(vVertexColor.{STD_EMISSIVE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar encodePS$1 = `\nvec4 encodeLinear(vec3 source) {\n\treturn vec4(source, 1.0);\n}\nvec4 encodeGamma(vec3 source) {\n\treturn vec4(pow(source + 0.0000001, vec3(1.0 / 2.2)), 1.0);\n}\nvec4 encodeRGBM(vec3 source) {\n\tvec4 result;\n\tresult.rgb = pow(source.rgb, vec3(0.5));\n\tresult.rgb *= 1.0 / 8.0;\n\tresult.a = saturate( max( max( result.r, result.g ), max( result.b, 1.0 / 255.0 ) ) );\n\tresult.a = ceil(result.a * 255.0) / 255.0;\n\tresult.rgb /= result.a;\n\treturn result;\n}\nvec4 encodeRGBP(vec3 source) {\n\tvec3 gamma = pow(source, vec3(0.5));\n\tfloat maxVal = min(8.0, max(1.0, max(gamma.x, max(gamma.y, gamma.z))));\n\tfloat v = 1.0 - ((maxVal - 1.0) / 7.0);\n\tv = ceil(v * 255.0) / 255.0;\n\treturn vec4(gamma / (-v * 7.0 + 8.0), v);\t\n}\nvec4 encodeRGBE(vec3 source) {\n\tfloat maxVal = max(source.x, max(source.y, source.z));\n\tif (maxVal < 1e-32) {\n\t\treturn vec4(0, 0, 0, 0);\n\t} else {\n\t\tfloat e = ceil(log2(maxVal));\n\t\treturn vec4(source / pow(2.0, e), (e + 128.0) / 255.0);\n\t}\n}\n`;\n\nvar endPS$1 = `\n\tgl_FragColor.rgb = combineColor(litArgs_albedo, litArgs_sheen_specularity, litArgs_clearcoat_specularity);\n\tgl_FragColor.rgb += litArgs_emission;\n\tgl_FragColor.rgb = addFog(gl_FragColor.rgb);\n\tgl_FragColor.rgb = toneMap(gl_FragColor.rgb);\n\tgl_FragColor.rgb = gammaCorrectOutput(gl_FragColor.rgb);\n`;\n\nvar envAtlasPS$1 = `\n#ifndef _ENVATLAS_INCLUDED_\n#define _ENVATLAS_INCLUDED_\nconst float atlasSize = 512.0;\nconst float seamSize = 1.0 / atlasSize;\nvec2 mapUv(vec2 uv, vec4 rect) {\n\treturn vec2(mix(rect.x + seamSize, rect.x + rect.z - seamSize, uv.x),\n\t\t\t\tmix(rect.y + seamSize, rect.y + rect.w - seamSize, uv.y));\n}\nvec2 mapRoughnessUv(vec2 uv, float level) {\n\tfloat t = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4(0, 1.0 - t, t, t * 0.5));\n}\nvec2 mapShinyUv(vec2 uv, float level) {\n\tfloat t = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4(1.0 - t, 1.0 - t, t, t * 0.5));\n}\n#endif\n`;\n\nvar envProcPS$1 = `\n#ifdef LIT_SKYBOX_INTENSITY\n\tuniform float skyboxIntensity;\n#endif\nvec3 processEnvironment(vec3 color) {\n\t#ifdef LIT_SKYBOX_INTENSITY\n\t\treturn color * skyboxIntensity;\n\t#else\n\t\treturn color;\n\t#endif\n}\n`;\n\nvar falloffInvSquaredPS$1 = `\nfloat getFalloffWindow(float lightRadius, vec3 lightDir) {\n\tfloat sqrDist = dot(lightDir, lightDir);\n\tfloat invRadius = 1.0 / lightRadius;\n\treturn square(saturate(1.0 - square(sqrDist * square(invRadius))));\n}\nfloat getFalloffInvSquared(float lightRadius, vec3 lightDir) {\n\tfloat sqrDist = dot(lightDir, lightDir);\n\tfloat falloff = 1.0 / (sqrDist + 1.0);\n\tfloat invRadius = 1.0 / lightRadius;\n\tfalloff *= 16.0;\n\tfalloff *= square(saturate(1.0 - square(sqrDist * square(invRadius))));\n\treturn falloff;\n}\n`;\n\nvar falloffLinearPS$1 = `\nfloat getFalloffLinear(float lightRadius, vec3 lightDir) {\n\tfloat d = length(lightDir);\n\treturn max(((lightRadius - d) / lightRadius), 0.0);\n}\n`;\n\nvar floatAsUintPS$1 = `\n#ifndef FLOAT_AS_UINT\n#define FLOAT_AS_UINT\nvec4 float2uint(float value) {\n\tuint intBits = floatBitsToUint(value);\n\treturn vec4(\n\t\tfloat((intBits >> 24u) & 0xFFu) / 255.0,\n\t\tfloat((intBits >> 16u) & 0xFFu) / 255.0,\n\t\tfloat((intBits >> 8u) & 0xFFu) / 255.0,\n\t\tfloat(intBits & 0xFFu) / 255.0\n\t);\n}\nfloat uint2float(vec4 value) {\n\tuint intBits = \n\t\t(uint(value.r * 255.0) << 24u) |\n\t\t(uint(value.g * 255.0) << 16u) |\n\t\t(uint(value.b * 255.0) << 8u) |\n\t\tuint(value.a * 255.0);\n\treturn uintBitsToFloat(intBits);\n}\nvec4 float2vec4(float value) {\n\t#if defined(CAPS_TEXTURE_FLOAT_RENDERABLE)\n\t\treturn vec4(value, 1.0, 1.0, 1.0);\n\t#else\n\t\treturn float2uint(value);\n\t#endif\n}\n#endif\n`;\n\nvar fogPS$1 = `\nfloat dBlendModeFogFactor = 1.0;\n#if (FOG != NONE)\n\tuniform vec3 fog_color;\n\t#if (FOG == LINEAR)\n\t\tuniform float fog_start;\n\t\tuniform float fog_end;\n\t#else\n\t\tuniform float fog_density;\n\t#endif\n#endif\nfloat getFogFactor() {\n\tfloat depth = gl_FragCoord.z / gl_FragCoord.w;\n\tfloat fogFactor = 0.0;\n\t#if (FOG == LINEAR)\n\t\tfogFactor = (fog_end - depth) / (fog_end - fog_start);\n\t#elif (FOG == EXP)\n\t\tfogFactor = exp(-depth * fog_density);\n\t#elif (FOG == EXP2)\n\t\tfogFactor = exp(-depth * depth * fog_density * fog_density);\n\t#endif\n\treturn clamp(fogFactor, 0.0, 1.0);\n}\nvec3 addFog(vec3 color) {\n\t#if (FOG != NONE)\n\t\treturn mix(fog_color * dBlendModeFogFactor, color, getFogFactor());\n\t#endif\n\treturn color;\n}\n`;\n\nvar fresnelSchlickPS$1 = `\nvec3 getFresnel(\n\t\tfloat cosTheta, \n\t\tfloat gloss, \n\t\tvec3 specularity\n#if defined(LIT_IRIDESCENCE)\n\t\t, vec3 iridescenceFresnel, \n\t\tfloat iridescenceIntensity\n#endif\n\t) {\n\tfloat fresnel = pow(1.0 - saturate(cosTheta), 5.0);\n\tfloat glossSq = gloss * gloss;\n\tvec3 ret = specularity + (max(vec3(glossSq), specularity) - specularity) * fresnel;\n#if defined(LIT_IRIDESCENCE)\n\treturn mix(ret, iridescenceFresnel, iridescenceIntensity);\n#else\n\treturn ret;\n#endif\t\n}\nfloat getFresnelCC(float cosTheta) {\n\tfloat fresnel = pow(1.0 - saturate(cosTheta), 5.0);\n\treturn 0.04 + (1.0 - 0.04) * fresnel;\n}\n`;\n\nvar fullscreenQuadVS$1 = `\nattribute vec2 vertex_position;\nvarying vec2 vUv0;\nvoid main(void)\n{\n\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\tvUv0 = vertex_position.xy * 0.5 + 0.5;\n}\n`;\n\nvar gammaPS$1 = `\n#include \"decodePS\"\n#if (GAMMA == SRGB)\n\tfloat gammaCorrectInput(float color) {\n\t\treturn decodeGamma(color);\n\t}\n\tvec3 gammaCorrectInput(vec3 color) {\n\t\treturn decodeGamma(color);\n\t}\n\tvec4 gammaCorrectInput(vec4 color) {\n\t\treturn vec4(decodeGamma(color.xyz), color.w);\n\t}\n\tvec3 gammaCorrectOutput(vec3 color) {\n\t\treturn pow(color + 0.0000001, vec3(1.0 / 2.2));\n\t}\n#else\n\tfloat gammaCorrectInput(float color) {\n\t\treturn color;\n\t}\n\tvec3 gammaCorrectInput(vec3 color) {\n\t\treturn color;\n\t}\n\tvec4 gammaCorrectInput(vec4 color) {\n\t\treturn color;\n\t}\n\tvec3 gammaCorrectOutput(vec3 color) {\n\t\treturn color;\n\t}\n#endif\n`;\n\nvar glossPS$1 = `\n#ifdef STD_GLOSS_CONSTANT\nuniform float material_gloss;\n#endif\nvoid getGlossiness() {\n\tdGlossiness = 1.0;\n\t#ifdef STD_GLOSS_CONSTANT\n\tdGlossiness *= material_gloss;\n\t#endif\n\t#ifdef STD_GLOSS_TEXTURE\n\tdGlossiness *= texture2DBias({STD_GLOSS_TEXTURE_NAME}, {STD_GLOSS_TEXTURE_UV}, textureBias).{STD_GLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_GLOSS_VERTEX\n\tdGlossiness *= saturate(vVertexColor.{STD_GLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_GLOSS_INVERT\n\tdGlossiness = 1.0 - dGlossiness;\n\t#endif\n\tdGlossiness += 0.0000001;\n}\n`;\n\nvar gsplatCenterVS$1 = `\nuniform mat4 matrix_model;\nuniform mat4 matrix_view;\n#ifndef GSPLAT_CENTER_NOPROJ\n\tuniform mat4 matrix_projection;\n#endif\nbool initCenter(vec3 modelCenter, out SplatCenter center) {\n\tmat4 modelView = matrix_view * matrix_model;\n\tvec4 centerView = modelView * vec4(modelCenter, 1.0);\n\t#ifndef GSPLAT_CENTER_NOPROJ\n\t\tif (centerView.z > 0.0) {\n\t\t\treturn false;\n\t\t}\n\t\tvec4 centerProj = matrix_projection * centerView;\n\t\t#if WEBGPU\n\t\t\tcenterProj.z = clamp(centerProj.z, 0, abs(centerProj.w));\n\t\t#else\n\t\t\tcenterProj.z = clamp(centerProj.z, -abs(centerProj.w), abs(centerProj.w));\n\t\t#endif\n\t\tcenter.proj = centerProj;\n\t\tcenter.projMat00 = matrix_projection[0][0];\n\t#endif\n\tcenter.view = centerView.xyz / centerView.w;\n\tcenter.modelView = modelView;\n\treturn true;\n}\n`;\n\nvar gsplatColorVS$1 = `\nuniform mediump sampler2D splatColor;\nvec4 readColor(in SplatSource source) {\n\treturn texelFetch(splatColor, source.uv, 0);\n}\n`;\n\nvar gsplatCommonVS$1 = `\n#include \"gsplatStructsVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n#include \"gsplatSourceVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatCornerVS\"\n#include \"gsplatOutputVS\"\nvoid clipCorner(inout SplatCorner corner, float alpha) {\n\tfloat clip = min(1.0, sqrt(-log(1.0 / 255.0 / alpha)) / 2.0);\n\tcorner.offset *= clip;\n\tcorner.uv *= clip;\n}\n`;\n\nvar gsplatCompressedDataVS$1 = `\nuniform highp usampler2D packedTexture;\nuniform highp sampler2D chunkTexture;\nvec4 chunkDataA;\nvec4 chunkDataB;\nvec4 chunkDataC;\nvec4 chunkDataD;\nvec4 chunkDataE;\nuvec4 packedData;\nvec3 unpack111011(uint bits) {\n\treturn vec3(\n\t\tfloat(bits >> 21u) / 2047.0,\n\t\tfloat((bits >> 11u) & 0x3ffu) / 1023.0,\n\t\tfloat(bits & 0x7ffu) / 2047.0\n\t);\n}\nvec4 unpack8888(uint bits) {\n\treturn vec4(\n\t\tfloat(bits >> 24u) / 255.0,\n\t\tfloat((bits >> 16u) & 0xffu) / 255.0,\n\t\tfloat((bits >> 8u) & 0xffu) / 255.0,\n\t\tfloat(bits & 0xffu) / 255.0\n\t);\n}\nconst float norm = 1.0 / (sqrt(2.0) * 0.5);\nvec4 unpackRotation(uint bits) {\n\tfloat a = (float((bits >> 20u) & 0x3ffu) / 1023.0 - 0.5) * norm;\n\tfloat b = (float((bits >> 10u) & 0x3ffu) / 1023.0 - 0.5) * norm;\n\tfloat c = (float(bits & 0x3ffu) / 1023.0 - 0.5) * norm;\n\tfloat m = sqrt(1.0 - (a * a + b * b + c * c));\n\tuint mode = bits >> 30u;\n\tif (mode == 0u) return vec4(m, a, b, c);\n\tif (mode == 1u) return vec4(a, m, b, c);\n\tif (mode == 2u) return vec4(a, b, m, c);\n\treturn vec4(a, b, c, m);\n}\nvec3 readCenter(SplatSource source) {\n\tuint w = uint(textureSize(chunkTexture, 0).x) / 5u;\n\tuint chunkId = source.id / 256u;\n\tivec2 chunkUV = ivec2((chunkId % w) * 5u, chunkId / w);\n\tchunkDataA = texelFetch(chunkTexture, chunkUV, 0);\n\tchunkDataB = texelFetch(chunkTexture, chunkUV + ivec2(1, 0), 0);\n\tchunkDataC = texelFetch(chunkTexture, chunkUV + ivec2(2, 0), 0);\n\tchunkDataD = texelFetch(chunkTexture, chunkUV + ivec2(3, 0), 0);\n\tchunkDataE = texelFetch(chunkTexture, chunkUV + ivec2(4, 0), 0);\n\tpackedData = texelFetch(packedTexture, source.uv, 0);\n\treturn mix(chunkDataA.xyz, vec3(chunkDataA.w, chunkDataB.xy), unpack111011(packedData.x));\n}\nvec4 readColor(in SplatSource source) {\n\tvec4 r = unpack8888(packedData.w);\n\treturn vec4(mix(chunkDataD.xyz, vec3(chunkDataD.w, chunkDataE.xy), r.rgb), r.w);\n}\nvec4 getRotation() {\n\treturn unpackRotation(packedData.y);\n}\nvec3 getScale() {\n\treturn exp(mix(vec3(chunkDataB.zw, chunkDataC.x), chunkDataC.yzw, unpack111011(packedData.z)));\n}\nvoid readCovariance(in SplatSource source, out vec3 covA, out vec3 covB) {\n\tmat3 rot = quatToMat3(getRotation());\n\tvec3 scale = getScale();\n\tmat3 M = transpose(mat3(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\tcovA = vec3(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\tcovB = vec3(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatCompressedSHVS$1 = `\n#if SH_BANDS > 0\nuniform highp usampler2D shTexture0;\nuniform highp usampler2D shTexture1;\nuniform highp usampler2D shTexture2;\nvec4 unpack8888s(in uint bits) {\n\treturn vec4((uvec4(bits) >> uvec4(0u, 8u, 16u, 24u)) & 0xffu) * (8.0 / 255.0) - 4.0;\n}\nvoid readSHData(in SplatSource source, out vec3 sh[15], out float scale) {\n\tuvec4 shData0 = texelFetch(shTexture0, source.uv, 0);\n\tuvec4 shData1 = texelFetch(shTexture1, source.uv, 0);\n\tuvec4 shData2 = texelFetch(shTexture2, source.uv, 0);\n\tvec4 r0 = unpack8888s(shData0.x);\n\tvec4 r1 = unpack8888s(shData0.y);\n\tvec4 r2 = unpack8888s(shData0.z);\n\tvec4 r3 = unpack8888s(shData0.w);\n\tvec4 g0 = unpack8888s(shData1.x);\n\tvec4 g1 = unpack8888s(shData1.y);\n\tvec4 g2 = unpack8888s(shData1.z);\n\tvec4 g3 = unpack8888s(shData1.w);\n\tvec4 b0 = unpack8888s(shData2.x);\n\tvec4 b1 = unpack8888s(shData2.y);\n\tvec4 b2 = unpack8888s(shData2.z);\n\tvec4 b3 = unpack8888s(shData2.w);\n\tsh[0] =  vec3(r0.x, g0.x, b0.x);\n\tsh[1] =  vec3(r0.y, g0.y, b0.y);\n\tsh[2] =  vec3(r0.z, g0.z, b0.z);\n\tsh[3] =  vec3(r0.w, g0.w, b0.w);\n\tsh[4] =  vec3(r1.x, g1.x, b1.x);\n\tsh[5] =  vec3(r1.y, g1.y, b1.y);\n\tsh[6] =  vec3(r1.z, g1.z, b1.z);\n\tsh[7] =  vec3(r1.w, g1.w, b1.w);\n\tsh[8] =  vec3(r2.x, g2.x, b2.x);\n\tsh[9] =  vec3(r2.y, g2.y, b2.y);\n\tsh[10] = vec3(r2.z, g2.z, b2.z);\n\tsh[11] = vec3(r2.w, g2.w, b2.w);\n\tsh[12] = vec3(r3.x, g3.x, b3.x);\n\tsh[13] = vec3(r3.y, g3.y, b3.y);\n\tsh[14] = vec3(r3.z, g3.z, b3.z);\n\tscale = 1.0;\n}\n#endif\n`;\n\nvar gsplatEvalSHVS$1 = `\n\t#if SH_BANDS == 1\n\t\t#define SH_COEFFS 3\n\t#elif SH_BANDS == 2\n\t\t#define SH_COEFFS 8\n\t#elif SH_BANDS == 3\n\t\t#define SH_COEFFS 15\n\t#else\n\t\t#define SH_COEFFS 0\n\t#endif\n\t#if SH_BANDS > 0\n\tconst float SH_C1 = 0.4886025119029199f;\n\t#if SH_BANDS > 1\n\t\tconst float SH_C2_0 = 1.0925484305920792f;\n\t\tconst float SH_C2_1 = -1.0925484305920792f;\n\t\tconst float SH_C2_2 = 0.31539156525252005f;\n\t\tconst float SH_C2_3 = -1.0925484305920792f;\n\t\tconst float SH_C2_4 = 0.5462742152960396f;\n\t#endif\n\t#if SH_BANDS > 2\n\t\tconst float SH_C3_0 = -0.5900435899266435f;\n\t\tconst float SH_C3_1 = 2.890611442640554f;\n\t\tconst float SH_C3_2 = -0.4570457994644658f;\n\t\tconst float SH_C3_3 = 0.3731763325901154f;\n\t\tconst float SH_C3_4 = -0.4570457994644658f;\n\t\tconst float SH_C3_5 = 1.445305721320277f;\n\t\tconst float SH_C3_6 = -0.5900435899266435f;\n\t#endif\n\tvec3 evalSH(in vec3 sh[SH_COEFFS], in vec3 dir) {\n\t\tfloat x = dir.x;\n\t\tfloat y = dir.y;\n\t\tfloat z = dir.z;\n\t\tvec3 result = SH_C1 * (-sh[0] * y + sh[1] * z - sh[2] * x);\n\t\t#if SH_BANDS > 1\n\t\t\tfloat xx = x * x;\n\t\t\tfloat yy = y * y;\n\t\t\tfloat zz = z * z;\n\t\t\tfloat xy = x * y;\n\t\t\tfloat yz = y * z;\n\t\t\tfloat xz = x * z;\n\t\t\tresult +=\n\t\t\t\tsh[3] * (SH_C2_0 * xy) +\n\t\t\t\tsh[4] * (SH_C2_1 * yz) +\n\t\t\t\tsh[5] * (SH_C2_2 * (2.0 * zz - xx - yy)) +\n\t\t\t\tsh[6] * (SH_C2_3 * xz) +\n\t\t\t\tsh[7] * (SH_C2_4 * (xx - yy));\n\t\t#endif\n\t\t#if SH_BANDS > 2\n\t\t\tresult +=\n\t\t\t\tsh[8]  * (SH_C3_0 * y * (3.0 * xx - yy)) +\n\t\t\t\tsh[9]  * (SH_C3_1 * xy * z) +\n\t\t\t\tsh[10] * (SH_C3_2 * y * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[11] * (SH_C3_3 * z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) +\n\t\t\t\tsh[12] * (SH_C3_4 * x * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[13] * (SH_C3_5 * z * (xx - yy)) +\n\t\t\t\tsh[14] * (SH_C3_6 * x * (xx - 3.0 * yy));\n\t\t#endif\n\t\treturn result;\n\t}\n\t#endif\n`;\n\nvar gsplatQuatToMat3VS$1 = `\nmat3 quatToMat3(vec4 R) {\n\tvec4 R2 = R + R;\n\tfloat X = R2.x * R.w;\n\tvec4 Y  = R2.y * R;\n\tvec4 Z  = R2.z * R;\n\tfloat W = R2.w * R.w;\n\treturn mat3(\n\t\t1.0 - Z.z - W,\n\t\t\t  Y.z + X,\n\t\t\t  Y.w - Z.x,\n\t\t\t  Y.z - X,\n\t\t1.0 - Y.y - W,\n\t\t\t  Z.w + Y.x,\n\t\t\t  Y.w + Z.x,\n\t\t\t  Z.w - Y.x,\n\t\t1.0 - Y.y - Z.z\n\t);\n}\n`;\n\nvar gsplatSogsColorVS$1 = `\nuniform highp sampler2D packedSh0;\nuniform float sh0_mins;\nuniform float sh0_maxs;\nfloat SH_C0 = 0.28209479177387814;\nvec4 readColor(in SplatSource source) {\n\tvec3 clr = mix(vec3(sh0_mins), vec3(sh0_maxs), unpack111110(pack8888(texelFetch(packedSh0, source.uv, 0))));\n\tfloat alpha = float(packedSample.z & 0xffu) / 255.0;\n\treturn vec4(vec3(0.5) + clr.xyz * SH_C0, alpha);\n}\n`;\n\nvar gsplatSogsDataVS$1 = `\n#include \"gsplatPackingPS\"\nuniform highp usampler2D packedTexture;\nuniform vec3 means_mins;\nuniform vec3 means_maxs;\nuniform float scales_mins;\nuniform float scales_maxs;\nuvec4 packedSample;\nvec3 readCenter(SplatSource source) {\n\tpackedSample = texelFetch(packedTexture, source.uv, 0);\n\tvec3 l = unpack8888(packedSample.x).xyz;\n\tvec3 u = unpack8888(packedSample.y).xyz;\n\tvec3 n = (l * 255.0 + u * 255.0 * 256.0) / 65535.0;\n\tvec3 v = mix(means_mins, means_maxs, n);\n\treturn sign(v) * (exp(abs(v)) - 1.0);\n}\nconst float norm = 2.0 / sqrt(2.0);\nvoid readCovariance(in SplatSource source, out vec3 covA, out vec3 covB) {\n\tvec3 qdata = unpack8888(packedSample.z).xyz;\n\tvec3 sdata = unpack101010(packedSample.w >> 2u);\n\tuint qmode = packedSample.w & 0x3u;\n\tvec3 abc = (qdata - 0.5) * norm;\n\tfloat d = sqrt(max(0.0, 1.0 - dot(abc, abc)));\n\tvec4 quat = (qmode == 0u) ? vec4(d, abc) :\n\t\t\t\t((qmode == 1u) ? vec4(abc.x, d, abc.yz) :\n\t\t\t\t((qmode == 2u) ? vec4(abc.xy, d, abc.z) : vec4(abc, d)));\n\tmat3 rot = quatToMat3(quat);\n\tvec3 scale = exp(mix(vec3(scales_mins), vec3(scales_maxs), sdata));\n\tmat3 M = transpose(mat3(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\tcovA = vec3(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\tcovB = vec3(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatSogsSHVS$1 = `\nuniform highp sampler2D packedShN;\nuniform float shN_mins;\nuniform float shN_maxs;\nvoid readSHData(in SplatSource source, out vec3 sh[SH_COEFFS], out float scale) {\n\tivec2 t = ivec2(packedSample.xy & 255u);\n\tint n = t.x + t.y * 256;\n\tint u = (n % 64) * SH_COEFFS;\n\tint v = n / 64;\n\tfor (int i = 0; i < SH_COEFFS; i++) {\n\t\tsh[i] = mix(vec3(shN_mins), vec3(shN_maxs), unpack111110(pack8888(texelFetch(packedShN, ivec2(u + i, v), 0))));\n\t}\n\tscale = 1.0;\n}\n`;\n\nvar gsplatSourceFormatVS$1 = `\n#if defined(GSPLAT_WORKBUFFER_DATA)\n\t#include \"gsplatWorkBufferVS\"\n#elif GSPLAT_COMPRESSED_DATA == true\n\t#include \"gsplatCompressedDataVS\"\n\t#if SH_COEFFS > 0\n\t\t#include \"gsplatCompressedSHVS\"\n\t#endif\n#elif GSPLAT_SOGS_DATA == true\n\t#include \"gsplatSogsDataVS\"\n\t#include \"gsplatSogsColorVS\"\n\t#if SH_COEFFS > 0\n\t\t#include \"gsplatSogsSHVS\"\n\t#endif\n#else\n\t#include \"gsplatDataVS\"\n\t#include \"gsplatColorVS\"\n\t#if SH_COEFFS > 0\n\t\t#include \"gsplatSHVS\"\n\t#endif\n#endif\n`;\n\nvar gsplatStructsVS$1 = `\nstruct SplatSource {\n\tuint order;\n\tuint id;\n\tivec2 uv;\n\tvec2 cornerUV;\n};\nstruct SplatCenter {\n\tvec3 view;\n\tvec4 proj;\n\tmat4 modelView;\n\tfloat projMat00;\n};\nstruct SplatCorner {\n\tvec2 offset;\n\tvec2 uv;\n\t#if GSPLAT_AA\n\t\tfloat aaFactor;\n\t#endif\n\tvec2 v;\n\tfloat dlen;\n};\n`;\n\nvar gsplatCornerVS$1 = `\nuniform vec2 viewport;\nuniform vec4 camera_params;\nbool initCornerCov(SplatSource source, SplatCenter center, out SplatCorner corner, vec3 covA, vec3 covB) {\n\tmat3 Vrk = mat3(\n\t\tcovA.x, covA.y, covA.z, \n\t\tcovA.y, covB.x, covB.y,\n\t\tcovA.z, covB.y, covB.z\n\t);\n\tfloat focal = viewport.x * center.projMat00;\n\tvec3 v = camera_params.w == 1.0 ? vec3(0.0, 0.0, 1.0) : center.view.xyz;\n\tfloat J1 = focal / v.z;\n\tvec2 J2 = -J1 / v.z * v.xy;\n\tmat3 J = mat3(\n\t\tJ1, 0.0, J2.x, \n\t\t0.0, J1, J2.y, \n\t\t0.0, 0.0, 0.0\n\t);\n\tmat3 W = transpose(mat3(center.modelView));\n\tmat3 T = W * J;\n\tmat3 cov = transpose(T) * Vrk * T;\n\t#if GSPLAT_AA\n\t\tfloat detOrig = cov[0][0] * cov[1][1] - cov[0][1] * cov[0][1];\n\t\tfloat detBlur = (cov[0][0] + 0.3) * (cov[1][1] + 0.3) - cov[0][1] * cov[0][1];\n\t\tcorner.aaFactor = sqrt(max(detOrig / detBlur, 0.0));\n\t#endif\n\tfloat diagonal1 = cov[0][0] + 0.3;\n\tfloat offDiagonal = cov[0][1];\n\tfloat diagonal2 = cov[1][1] + 0.3;\n\tfloat mid = 0.5 * (diagonal1 + diagonal2);\n\tfloat radius = length(vec2((diagonal1 - diagonal2) / 2.0, offDiagonal));\n\tfloat lambda1 = mid + radius;\n\tfloat lambda2 = max(mid - radius, 0.1);\n\tfloat vmin = min(1024.0, min(viewport.x, viewport.y));\n\tfloat l1 = 2.0 * min(sqrt(2.0 * lambda1), vmin);\n\tfloat l2 = 2.0 * min(sqrt(2.0 * lambda2), vmin);\n\tif (l1 < 2.0 && l2 < 2.0) {\n\t\treturn false;\n\t}\n\tvec2 c = center.proj.ww / viewport;\n\tif (any(greaterThan(abs(center.proj.xy) - vec2(max(l1, l2)) * c, center.proj.ww))) {\n\t\treturn false;\n\t}\n\tvec2 diagonalVector = normalize(vec2(offDiagonal, lambda1 - diagonal1));\n\tvec2 v1 = l1 * diagonalVector;\n\tvec2 v2 = l2 * vec2(diagonalVector.y, -diagonalVector.x);\n\tcorner.offset = (source.cornerUV.x * v1 + source.cornerUV.y * v2) * c;\n\tcorner.uv = source.cornerUV;\n\treturn true;\n}\nbool initCorner(SplatSource source, SplatCenter center, out SplatCorner corner) {\n\tvec3 covA, covB;\n\treadCovariance(source, covA, covB);\n\treturn initCornerCov(source, center, corner, covA, covB);\n}\n`;\n\nvar gsplatDataVS$1 = `\nuniform highp usampler2D transformA;\nuniform highp sampler2D transformB;\nuint tAw;\nvec3 readCenter(SplatSource source) {\n\tuvec4 tA = texelFetch(transformA, source.uv, 0);\n\ttAw = tA.w;\n\treturn uintBitsToFloat(tA.xyz);\n}\nvec4 unpackRotation(vec3 packed) {\n\treturn vec4(packed.xyz, sqrt(max(0.0, 1.0 - dot(packed, packed))));\n}\nvoid readCovariance(in SplatSource source, out vec3 covA, out vec3 covB) {\n\tvec4 tB = texelFetch(transformB, source.uv, 0);\n\tmat3 rot = quatToMat3(unpackRotation(vec3(unpackHalf2x16(tAw), tB.w)).wxyz);\n\tvec3 scale = tB.xyz;\n\t\n\tmat3 M = transpose(mat3(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\tcovA = vec3(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\tcovB = vec3(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatOutputVS$1 = `\n#include \"tonemappingPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\nvec3 prepareOutputFromGamma(vec3 gammaColor) {\n\t#if TONEMAP == NONE\n\t\t#if GAMMA == NONE\n\t\t\treturn decodeGamma(gammaColor);\n\t\t#else\n\t\t\treturn gammaColor;\n\t\t#endif\n\t#else\n\t\treturn gammaCorrectOutput(toneMap(decodeGamma(gammaColor)));\n\t#endif\n}\n`;\n\nvar gsplatPS$1 = `\n#ifndef DITHER_NONE\n\t#include \"bayerPS\"\n\t#include \"opacityDitherPS\"\n\tvarying float id;\n#endif\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\tuniform float alphaClip;\n#endif\n#ifdef PREPASS_PASS\n\tvarying float vLinearDepth;\n\t#include \"floatAsUintPS\"\n#endif\nvarying mediump vec2 gaussianUV;\nvarying mediump vec4 gaussianColor;\nconst float EXP4 = exp(-4.0);\nconst float INV_EXP4 = 1.0 / (1.0 - EXP4);\nfloat normExp(float x) {\n\treturn (exp(x * -4.0) - EXP4) * INV_EXP4;\n}\nvoid main(void) {\n\tmediump float A = dot(gaussianUV, gaussianUV);\n\tif (A > 1.0) {\n\t\tdiscard;\n\t}\n\tmediump float alpha = normExp(A) * gaussianColor.a;\n\t#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\t\tif (alpha < alphaClip) {\n\t\t\tdiscard;\n\t\t}\n\t#endif\n\t#ifdef PICK_PASS\n\t\tgl_FragColor = getPickOutput();\n\t#elif SHADOW_PASS\n\t\tgl_FragColor = vec4(0.0, 0.0, 0.0, 1.0);\n\t#elif PREPASS_PASS\n\t\tgl_FragColor = float2vec4(vLinearDepth);\n\t#else\n\t\tif (alpha < 1.0 / 255.0) {\n\t\t\tdiscard;\n\t\t}\n\t\t#ifndef DITHER_NONE\n\t\t\topacityDither(alpha, id * 0.013);\n\t\t#endif\n\t\tgl_FragColor = vec4(gaussianColor.xyz * alpha, alpha);\n\t#endif\n}\n`;\n\nvar gsplatSHVS$1 = `\n#if SH_BANDS > 0\nvec3 unpack111011s(uint bits) {\n\treturn vec3((uvec3(bits) >> uvec3(21u, 11u, 0u)) & uvec3(0x7ffu, 0x3ffu, 0x7ffu)) / vec3(2047.0, 1023.0, 2047.0) * 2.0 - 1.0;\n}\nvoid fetchScale(in uvec4 t, out float scale, out vec3 a, out vec3 b, out vec3 c) {\n\tscale = uintBitsToFloat(t.x);\n\ta = unpack111011s(t.y);\n\tb = unpack111011s(t.z);\n\tc = unpack111011s(t.w);\n}\nvoid fetch(in uvec4 t, out vec3 a, out vec3 b, out vec3 c, out vec3 d) {\n\ta = unpack111011s(t.x);\n\tb = unpack111011s(t.y);\n\tc = unpack111011s(t.z);\n\td = unpack111011s(t.w);\n}\nvoid fetch(in uint t, out vec3 a) {\n\ta = unpack111011s(t);\n}\n#if SH_BANDS == 1\n\tuniform highp usampler2D splatSH_1to3;\n\tvoid readSHData(in SplatSource source, out vec3 sh[3], out float scale) {\n\t\tfetchScale(texelFetch(splatSH_1to3, source.uv, 0), scale, sh[0], sh[1], sh[2]);\n\t}\n#elif SH_BANDS == 2\n\tuniform highp usampler2D splatSH_1to3;\n\tuniform highp usampler2D splatSH_4to7;\n\tuniform highp usampler2D splatSH_8to11;\n\tvoid readSHData(in SplatSource source, out vec3 sh[8], out float scale) {\n\t\tfetchScale(texelFetch(splatSH_1to3, source.uv, 0), scale, sh[0], sh[1], sh[2]);\n\t\tfetch(texelFetch(splatSH_4to7, source.uv, 0), sh[3], sh[4], sh[5], sh[6]);\n\t\tfetch(texelFetch(splatSH_8to11, source.uv, 0).x, sh[7]);\n\t}\n#else\n\tuniform highp usampler2D splatSH_1to3;\n\tuniform highp usampler2D splatSH_4to7;\n\tuniform highp usampler2D splatSH_8to11;\n\tuniform highp usampler2D splatSH_12to15;\n\tvoid readSHData(in SplatSource source, out vec3 sh[15], out float scale) {\n\t\tfetchScale(texelFetch(splatSH_1to3, source.uv, 0), scale, sh[0], sh[1], sh[2]);\n\t\tfetch(texelFetch(splatSH_4to7, source.uv, 0), sh[3], sh[4], sh[5], sh[6]);\n\t\tfetch(texelFetch(splatSH_8to11, source.uv, 0), sh[7], sh[8], sh[9], sh[10]);\n\t\tfetch(texelFetch(splatSH_12to15, source.uv, 0), sh[11], sh[12], sh[13], sh[14]);\n\t}\n#endif\n#endif\n`;\n\nvar gsplatSourceVS$1 = `\nattribute vec3 vertex_position;\nattribute uint vertex_id_attrib;\nuniform uint numSplats;\nuniform highp usampler2D splatOrder;\nbool initSource(out SplatSource source) {\n\tuint w = uint(textureSize(splatOrder, 0).x);\n\tsource.order = vertex_id_attrib + uint(vertex_position.z);\n\tif (source.order >= numSplats) {\n\t\treturn false;\n\t}\n\tivec2 orderUV = ivec2(source.order % w, source.order / w);\n\tsource.id = texelFetch(splatOrder, orderUV, 0).r;\n\tsource.uv = ivec2(source.id % w, source.id / w);\n\tsource.cornerUV = vertex_position.xy;\n\treturn true;\n}\n`;\n\nvar gsplatVS$1 = `\n#include \"gsplatCommonVS\"\nvarying mediump vec2 gaussianUV;\nvarying mediump vec4 gaussianColor;\n#ifndef DITHER_NONE\n\tvarying float id;\n#endif\nmediump vec4 discardVec = vec4(0.0, 0.0, 2.0, 1.0);\n#ifdef PREPASS_PASS\n\tvarying float vLinearDepth;\n#endif\nvoid main(void) {\n\tSplatSource source;\n\tif (!initSource(source)) {\n\t\tgl_Position = discardVec;\n\t\treturn;\n\t}\n\tvec3 modelCenter = readCenter(source);\n\tSplatCenter center;\n\tif (!initCenter(modelCenter, center)) {\n\t\tgl_Position = discardVec;\n\t\treturn;\n\t}\n\tSplatCorner corner;\n\tif (!initCorner(source, center, corner)) {\n\t\tgl_Position = discardVec;\n\t\treturn;\n\t}\n\tvec4 clr = readColor(source);\n\t#if GSPLAT_AA\n\t\tclr.a *= corner.aaFactor;\n\t#endif\n\t#if SH_BANDS > 0\n\t\tvec3 dir = normalize(center.view * mat3(center.modelView));\n\t\tvec3 sh[SH_COEFFS];\n\t\tfloat scale;\n\t\treadSHData(source, sh, scale);\n\t\tclr.xyz += evalSH(sh, dir) * scale;\n\t#endif\n\tclipCorner(corner, clr.w);\n\tgl_Position = center.proj + vec4(corner.offset, 0, 0);\n\tgaussianUV = corner.uv;\n\tgaussianColor = vec4(prepareOutputFromGamma(max(clr.xyz, 0.0)), clr.w);\n\t#ifndef DITHER_NONE\n\t\tid = float(source.id);\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\tvLinearDepth = -center.view.z;\n\t#endif\n}\n`;\n\nvar gsplatWorkBufferVS$1 = `\nuniform highp sampler2D center;\nuniform highp sampler2D covA;\nuniform highp sampler2D covB;\nuniform mediump sampler2D splatColor;\nvec3 readCenter(SplatSource source) {\n\treturn texelFetch(center, source.uv, 0).xyz;\n}\nvoid readCovariance(in SplatSource source, out vec3 cov_A, out vec3 cov_B) {\n\tcov_A = texelFetch(covA, source.uv, 0).xyz;\n\tcov_B = texelFetch(covB, source.uv, 0).xyz;\n}\nvec4 readColor(in SplatSource source) {\n\treturn texelFetch(splatColor, source.uv, 0);\n}\n`;\n\nvar quadVS$1 = `\n\tattribute vec2 aPosition;\n\tvarying vec2 uv0;\n\tvoid main(void)\n\t{\n\t\tgl_Position = vec4(aPosition, 0.0, 1.0);\n\t\tuv0 = getImageEffectUV((aPosition.xy + 1.0) * 0.5);\n\t}\n`;\n\nvar immediateLinePS$1 = `\n\t\t#include \"gammaPS\"\n\t\tvarying vec4 color;\n\t\tvoid main(void) {\n\t\t\tgl_FragColor = vec4(gammaCorrectOutput(decodeGamma(color.rgb)), color.a);\n\t\t}\n`;\n\nvar immediateLineVS$1 = `\n\tattribute vec4 vertex_position;\n\tattribute vec4 vertex_color;\n\tuniform mat4 matrix_model;\n\tuniform mat4 matrix_viewProjection;\n\tvarying vec4 color;\n\tvoid main(void) {\n\t\tcolor = vertex_color;\n\t\tgl_Position = matrix_viewProjection * matrix_model * vertex_position;\n\t}\n`;\n\nvar iridescenceDiffractionPS$1 = `\nuniform float material_iridescenceRefractionIndex;\nfloat iridescence_iorToFresnel(float transmittedIor, float incidentIor) {\n\treturn pow((transmittedIor - incidentIor) / (transmittedIor + incidentIor), 2.0);\n}\nvec3 iridescence_iorToFresnel(vec3 transmittedIor, float incidentIor) {\n\treturn pow((transmittedIor - vec3(incidentIor)) / (transmittedIor + vec3(incidentIor)), vec3(2.0));\n}\nvec3 iridescence_fresnelToIor(vec3 f0) {\n\tvec3 sqrtF0 = sqrt(f0);\n\treturn (vec3(1.0) + sqrtF0) / (vec3(1.0) - sqrtF0);\n}\nvec3 iridescence_sensitivity(float opd, vec3 shift) {\n\tfloat PI = 3.141592653589793;\n\tfloat phase = 2.0 * PI * opd * 1.0e-9;\n\tconst vec3 val = vec3(5.4856e-13, 4.4201e-13, 5.2481e-13);\n\tconst vec3 pos = vec3(1.6810e+06, 1.7953e+06, 2.2084e+06);\n\tconst vec3 var = vec3(4.3278e+09, 9.3046e+09, 6.6121e+09);\n\tvec3 xyz = val * sqrt(2.0 * PI * var) * cos(pos * phase + shift) * exp(-pow(phase, 2.0) * var);\n\txyz.x += 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift[0]) * exp(-4.5282e+09 * pow(phase, 2.0));\n\txyz /= vec3(1.0685e-07);\n\tconst mat3 XYZ_TO_REC709 = mat3(\n\t\t3.2404542, -0.9692660,  0.0556434,\n\t   -1.5371385,  1.8760108, -0.2040259,\n\t   -0.4985314,  0.0415560,  1.0572252\n\t);\n\treturn XYZ_TO_REC709 * xyz;\n}\nfloat iridescence_fresnel(float cosTheta, float f0) {\n\tfloat x = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tfloat x2 = x * x;\n\tfloat x5 = x * x2 * x2;\n\treturn f0 + (1.0 - f0) * x5;\n} \nvec3 iridescence_fresnel(float cosTheta, vec3 f0) {\n\tfloat x = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tfloat x2 = x * x;\n\tfloat x5 = x * x2 * x2; \n\treturn f0 + (vec3(1.0) - f0) * x5;\n}\nvec3 calcIridescence(float outsideIor, float cosTheta, vec3 base_f0, float iridescenceThickness) {\n\tfloat PI = 3.141592653589793;\n\tfloat iridescenceIor = mix(outsideIor, material_iridescenceRefractionIndex, smoothstep(0.0, 0.03, iridescenceThickness));\n\tfloat sinTheta2Sq = pow(outsideIor / iridescenceIor, 2.0) * (1.0 - pow(cosTheta, 2.0));\n\tfloat cosTheta2Sq = 1.0 - sinTheta2Sq;\n\tif (cosTheta2Sq < 0.0) {\n\t\treturn vec3(1.0);\n\t}\n\tfloat cosTheta2 = sqrt(cosTheta2Sq);\n\tfloat r0 = iridescence_iorToFresnel(iridescenceIor, outsideIor);\n\tfloat r12 = iridescence_fresnel(cosTheta, r0);\n\tfloat r21 = r12;\n\tfloat t121 = 1.0 - r12;\n\tfloat phi12 = iridescenceIor < outsideIor ? PI : 0.0;\n\tfloat phi21 = PI - phi12;\n\tvec3 baseIor = iridescence_fresnelToIor(base_f0 + vec3(0.0001));\n\tvec3 r1 = iridescence_iorToFresnel(baseIor, iridescenceIor);\n\tvec3 r23 = iridescence_fresnel(cosTheta2, r1);\n\tvec3 phi23 = vec3(0.0);\n\tif (baseIor[0] < iridescenceIor) phi23[0] = PI;\n\tif (baseIor[1] < iridescenceIor) phi23[1] = PI;\n\tif (baseIor[2] < iridescenceIor) phi23[2] = PI;\n\tfloat opd = 2.0 * iridescenceIor * iridescenceThickness * cosTheta2;\n\tvec3 phi = vec3(phi21) + phi23; \n\tvec3 r123Sq = clamp(r12 * r23, 1e-5, 0.9999);\n\tvec3 r123 = sqrt(r123Sq);\n\tvec3 rs = pow(t121, 2.0) * r23 / (1.0 - r123Sq);\n\tvec3 c0 = r12 + rs;\n\tvec3 i = c0;\n\tvec3 cm = rs - t121;\n\tfor (int m = 1; m <= 2; m++) {\n\t\tcm *= r123;\n\t\tvec3 sm = 2.0 * iridescence_sensitivity(float(m) * opd, float(m) * phi);\n\t\ti += cm * sm;\n\t}\n\treturn max(i, vec3(0.0));\n}\nvec3 getIridescence(float cosTheta, vec3 specularity, float iridescenceThickness) {\n\treturn calcIridescence(1.0, cosTheta, specularity, iridescenceThickness);\n}\n`;\n\nvar iridescencePS$1 = `\n#ifdef STD_IRIDESCENCE_CONSTANT\nuniform float material_iridescence;\n#endif\nvoid getIridescence() {\n\tfloat iridescence = 1.0;\n\t#ifdef STD_IRIDESCENCE_CONSTANT\n\tiridescence *= material_iridescence;\n\t#endif\n\t#ifdef STD_IRIDESCENCE_TEXTURE\n\tiridescence *= texture2DBias({STD_IRIDESCENCE_TEXTURE_NAME}, {STD_IRIDESCENCE_TEXTURE_UV}, textureBias).{STD_IRIDESCENCE_TEXTURE_CHANNEL};\n\t#endif\n\tdIridescence = iridescence; \n}\n`;\n\nvar iridescenceThicknessPS$1 = `\nuniform float material_iridescenceThicknessMax;\n#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\nuniform float material_iridescenceThicknessMin;\n#endif\nvoid getIridescenceThickness() {\n\t#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\n\t\tfloat blend = texture2DBias({STD_IRIDESCENCETHICKNESS_TEXTURE_NAME}, {STD_IRIDESCENCETHICKNESS_TEXTURE_UV}, textureBias).{STD_IRIDESCENCETHICKNESS_TEXTURE_CHANNEL};\n\t\tfloat iridescenceThickness = mix(material_iridescenceThicknessMin, material_iridescenceThicknessMax, blend);\n\t#else\n\t\tfloat iridescenceThickness = material_iridescenceThicknessMax;\n\t#endif\n\tdIridescenceThickness = iridescenceThickness; \n}\n`;\n\nvar iorPS$1 = `\n#ifdef STD_IOR_CONSTANT\nuniform float material_refractionIndex;\n#endif\nvoid getIor() {\n#ifdef STD_IOR_CONSTANT\n\tdIor = material_refractionIndex;\n#else\n\tdIor = 1.0 / 1.5;\n#endif\n}\n`;\n\nvar lightDeclarationPS$1 = `\n#if defined(LIGHT{i})\n\tuniform vec3 light{i}_color;\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tuniform vec3 light{i}_direction;\n\t#else\n\t\t#define LIT_CODE_LIGHTS_POINT\n\t\tuniform vec3 light{i}_position;\n\t\tuniform float light{i}_radius;\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#define LIT_CODE_LIGHTS_SPOT\n\t\t\tuniform vec3 light{i}_direction;\n\t\t\tuniform float light{i}_innerConeAngle;\n\t\t\tuniform float light{i}_outerConeAngle;\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform vec3 light{i}_position;\n\t\t#endif\n\t\tuniform vec3 light{i}_halfWidth;\n\t\tuniform vec3 light{i}_halfHeight;\n\t#else\n\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t#define LIT_CODE_FALLOFF_LINEAR\n\t\t#endif\n\t\t#if LIGHT{i}FALLOFF == INVERSESQUARED\n\t\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}CASTSHADOW)\n\t\tuniform mat4 light{i}_shadowMatrix;\n\t\tuniform float light{i}_shadowIntensity;\n\t\tuniform vec4 light{i}_shadowParams;\n\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\tuniform float light{i}_shadowSearchArea;\n\t\t\tuniform vec4 light{i}_cameraParams;\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t\tuniform vec4 light{i}_softShadowParams;\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform mat4 light{i}_shadowMatrixPalette[4];\n\t\t\tuniform vec4 light{i}_shadowCascadeDistances;\n\t\t\tuniform int light{i}_shadowCascadeCount;\n\t\t\tuniform float light{i}_shadowCascadeBlend;\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t#if defined(LIGHT{i}SHADOW_PCF)\n\t\t\t\tuniform samplerCubeShadow light{i}_shadowMap;\n\t\t\t#else\n\t\t\t\tuniform samplerCube light{i}_shadowMap;\n\t\t\t#endif\n\t\t#else\n\t\t\t#if defined(LIGHT{i}SHADOW_PCF)\n\t\t\t\tuniform sampler2DShadow light{i}_shadowMap;\n\t\t\t#else\n\t\t\t\tuniform sampler2D light{i}_shadowMap;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}COOKIE)\n\t\t#define LIT_CODE_COOKIE\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\tuniform samplerCube light{i}_cookie;\n\t\t\tuniform float light{i}_cookieIntensity;\n\t\t\t#if !defined(LIGHT{i}CASTSHADOW)\n\t\t\t\tuniform mat4 light{i}_shadowMatrix;\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\tuniform sampler2D light{i}_cookie;\n\t\t\tuniform float light{i}_cookieIntensity;\n\t\t\t#if !defined(LIGHT{i}CASTSHADOW)\n\t\t\t\tuniform mat4 light{i}_shadowMatrix;\n\t\t\t#endif\n\t\t\t#if defined(LIGHT{i}COOKIE_TRANSFORM)\n\t\t\t\tuniform vec4 light{i}_cookieMatrix;\n\t\t\t\tuniform vec2 light{i}_cookieOffset;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n#endif\n`;\n\nvar lightDiffuseLambertPS$1 = `\nfloat getLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm) {\n\treturn max(dot(worldNormal, -lightDirNorm), 0.0);\n}\n`;\n\nvar lightDirPointPS$1 = `\nvec3 evalOmniLight(vec3 lightPosW) {\n\treturn vPositionW - lightPosW;\n}\n`;\n\nvar lightEvaluationPS$1 = `\n#if defined(LIGHT{i})\n\tevaluateLight{i}(\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel\n\t\t#endif\n\t);\n#endif\n`;\n\nvar lightFunctionLightPS$1 = `\n#if defined(LIGHT{i})\nvoid evaluateLight{i}(\n\t#if defined(LIT_IRIDESCENCE)\n\t\tvec3 iridescenceFresnel\n\t#endif\n) {\n\tvec3 lightColor = light{i}_color;\n\t#if LIGHT{i}TYPE == DIRECTIONAL && !defined(LIT_SHADOW_CATCHER)\n\t\tif (all(equal(lightColor, vec3(0.0)))) {\n\t\t\treturn;\n\t\t}\n\t#endif\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tdLightDirNormW = light{i}_direction;\n\t\tdAtten = 1.0;\n\t#else\n\t\t\n\t\tvec3 lightDirW = evalOmniLight(light{i}_position);\n\t\tdLightDirNormW = normalize(lightDirW);\n\t\t#if defined(LIGHT{i}COOKIE)\n\t\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t\t#ifdef LIGHT{i}COOKIE_FALLOFF\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2DXform(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity, light{i}_cookieMatrix, light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2D(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2DClipXform(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity, light{i}_cookieMatrix, light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvec3 cookieAttenuation = getCookie2DClip(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t\tvec3 cookieAttenuation = getCookieCube(light{i}_cookie, light{i}_shadowMatrix, light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t#endif\n\t\t\tlightColor *= cookieAttenuation;\n\t\t#endif\n\t\t#if LIGHT{i}SHAPE == PUNCTUAL\n\t\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t\tdAtten = getFalloffLinear(light{i}_radius, lightDirW);\n\t\t\t#else\n\t\t\t\tdAtten = getFalloffInvSquared(light{i}_radius, lightDirW);\n\t\t\t#endif\n\t\t#else\n\t\t\tdAtten = getFalloffWindow(light{i}_radius, lightDirW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if !defined(LIGHT{i}COOKIE) || defined(LIGHT{i}COOKIE_FALLOFF)\n\t\t\t\tdAtten *= getSpotEffect(light{i}_direction, light{i}_innerConeAngle, light{i}_outerConeAngle, dLightDirNormW);\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tif (dAtten < 0.00001) {\n\t\treturn;\n\t}\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\tcalcRectLightValues(light{i}_position, light{i}_halfWidth, light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\tcalcDiskLightValues(light{i}_position, light{i}_halfWidth, light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\tcalcSphereLightValues(light{i}_position, light{i}_halfWidth, light{i}_halfHeight);\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tfloat attenDiffuse = getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirNormW);\n\t\t#else\n\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\tfloat attenDiffuse = getRectLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\tfloat attenDiffuse = getDiskLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\tfloat attenDiffuse = getSphereLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tdAtten *= getLightDiffuse(litArgs_worldNormal, vec3(0.0), dLightDirNormW);\n\t#endif\n\t#ifdef LIGHT{i}CASTSHADOW\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tfloat shadow = getShadow{i}(vec3(0.0));\n\t\t#else\n\t\t\tfloat shadow = getShadow{i}(lightDirW);\n\t\t#endif\n\t\tshadow = mix(1.0, shadow, light{i}_shadowIntensity);\n\t\tdAtten *= shadow;\n\t\t#if defined(LIT_SHADOW_CATCHER) && LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tdShadowCatcher *= shadow;\n\t\t#endif\t\t\t\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight += ((attenDiffuse * dAtten) * lightColor) * (1.0 - dLTCSpecFres);\n\t\t#else\n\t\t\tdDiffuseLight += (attenDiffuse * dAtten) * lightColor;\n\t\t#endif\t\t\t\t\t\t\n\t#else\n\t\t#if defined(AREA_LIGHTS) && defined(LIT_SPECULAR)\n\t\t\tdDiffuseLight += (dAtten * lightColor) * (1.0 - litArgs_specularity);\n\t\t#else\n\t\t\tdDiffuseLight += dAtten * lightColor;\n\t\t#endif\n\t#endif\n\t#ifdef LIGHT{i}AFFECT_SPECULARITY\n\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * getRectLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * getDiskLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tccSpecularLight += ccLTCSpecFres * getSphereLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tdSpecularLight += dLTCSpecFres * getRectLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tdSpecularLight += dLTCSpecFres * getDiskLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tdSpecularLight += dLTCSpecFres * getSphereLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#else\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL && LIT_FRESNEL_MODEL != NONE\n\t\t\t\t#define LIGHT{i}FRESNEL\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 halfDirW = normalize(-dLightDirNormW + dViewDirW);\n\t\t\t#endif\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tvec3 lightspecularCC = getLightSpecular(halfDirW, ccReflDirW, litArgs_clearcoat_worldNormal, dViewDirW, dLightDirNormW, litArgs_clearcoat_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\tlightspecularCC *= getFresnelCC(dot(dViewDirW, halfDirW));\n\t\t\t\t#endif\n\t\t\t\tccSpecularLight += lightspecularCC;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tsSpecularLight += getLightSpecularSheen(halfDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_sheen_gloss) * dAtten * lightColor;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvec3 lightSpecular = getLightSpecular(halfDirW, dReflDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tlightSpecular *= getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity, iridescenceFresnel, litArgs_iridescence_intensity);\n\t\t\t\t\t#else\n\t\t\t\t\t\tlightSpecular *= getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity);\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\tlightSpecular *= litArgs_specularity;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tdSpecularLight += lightSpecular;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n}\n#endif\n`;\n\nvar lightFunctionShadowPS$1 = `\n#ifdef LIGHT{i}CASTSHADOW\n\tvec3 getShadowSampleCoord{i}(mat4 shadowTransform, vec4 shadowParams, vec3 worldPosition, vec3 lightPos, inout vec3 lightDir, vec3 lightDirNorm, vec3 normal) {\n\t\tvec3 surfacePosition = worldPosition;\n\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_POINT\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\tfloat distScale = length(lightDir);\n\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\tlightDir = surfacePosition - lightPos;\n\t\t\t\treturn lightDir;\n\t\t\t#endif\n\t\t#else\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y;\n\t\t\t\t#endif\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\t\t\tfloat distScale = 1.0;\n\t\t\t\t\t#else\n\t\t\t\t\t\tfloat distScale = abs(dot(vPositionW - lightPos, lightDirNorm));\n\t\t\t\t\t#endif\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\tvec4 positionInShadowSpace = shadowTransform * vec4(surfacePosition, 1.0);\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\tpositionInShadowSpace.z = saturate(positionInShadowSpace.z) - 0.0001;\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t\tpositionInShadowSpace.xyz /= positionInShadowSpace.w;\n\t\t\t\t#else\n\t\t\t\t\tpositionInShadowSpace.xy /= positionInShadowSpace.w;\n\t\t\t\t\tpositionInShadowSpace.z = length(lightDir) * shadowParams.w;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef SHADOW_SAMPLE_Z_BIAS\n\t\t\t#endif\n\t\t\tsurfacePosition = positionInShadowSpace.xyz;\n\t\t#endif\n\t\treturn surfacePosition;\n\t}\n\tfloat getShadow{i}(vec3 lightDirW) {\n\t\t#ifdef LIGHT{i}_SHADOW_CASCADES\n\t\t\tint cascadeIndex = getShadowCascadeIndex(light{i}_shadowCascadeDistances, light{i}_shadowCascadeCount);\n\t\t\t#ifdef LIGHT{i}_SHADOW_CASCADE_BLEND\n\t\t\t\tcascadeIndex = ditherShadowCascadeIndex(cascadeIndex, light{i}_shadowCascadeDistances, light{i}_shadowCascadeCount, light{i}_shadowCascadeBlend);\n\t\t\t#endif\n\t\t\tmat4 shadowMatrix = light{i}_shadowMatrixPalette[cascadeIndex];\n\t\t#else\n\t\t\tmat4 shadowMatrix = light{i}_shadowMatrix;\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvec3 shadowCoord = getShadowSampleCoord{i}(shadowMatrix, light{i}_shadowParams, vPositionW, vec3(0.0), lightDirW, dLightDirNormW, dVertexNormalW);\n\t\t#else\n\t\t\tvec3 shadowCoord = getShadowSampleCoord{i}(shadowMatrix, light{i}_shadowParams, vPositionW, light{i}_position, lightDirW, dLightDirNormW, dVertexNormalW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tshadowCoord = fadeShadow(shadowCoord, light{i}_shadowCascadeDistances);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowVSM16(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 5.54);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowVSM32(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 15.0);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvec2 shadowSearchArea = vec2(length(light{i}_halfWidth), length(light{i}_halfHeight)) * light{i}_shadowSearchArea;\n\t\t\t\t\treturn getShadowPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, shadowSearchArea, lightDirW);\n\t\t\t\t#else\n\t\t\t\t\treturn getShadowPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, light{i}_softShadowParams, lightDirW);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowPCF1x1(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowPCF3x3(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowPCF5x5(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowSpotVSM16(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 5.54, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowSpotVSM32(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, 15.0, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvec2 shadowSearchArea = vec2(length(light{i}_halfWidth), length(light{i}_halfHeight)) * light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvec2 shadowSearchArea = vec2(light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowSpotPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, shadowSearchArea, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowSpotPCF1x1(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowSpotPCF3x3(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowSpotPCF5x5(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvec2 shadowSearchArea = vec2(length(light{i}_halfWidth), length(light{i}_halfHeight)) * light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvec2 shadowSearchArea = vec2(light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowOmniPCSS(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, light{i}_cameraParams, shadowSearchArea, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowOmniPCF1x1(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, lightDirW);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowOmniPCF3x3(SHADOWMAP_PASS(light{i}_shadowMap), shadowCoord, light{i}_shadowParams, lightDirW);\n\t\t\t#endif\n\t\t#endif\n\t}\n#endif\n`;\n\nvar lightingPS$1 = `\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#define LIT_CODE_FALLOFF_LINEAR\n\t#define LIT_CODE_FALLOFF_SQUARED\n\t#define LIT_CODE_LIGHTS_POINT\n\t#define LIT_CODE_LIGHTS_SPOT\n#endif\n#ifdef AREA_LIGHTS\n\tuniform highp sampler2D areaLightsLutTex1;\n\tuniform highp sampler2D areaLightsLutTex2;\n#endif\n#ifdef LIT_LIGHTING\n\t#include \"lightDiffuseLambertPS\"\n\t#if defined(AREA_LIGHTS) || defined(LIT_CLUSTERED_AREA_LIGHTS)\n\t\t#include \"ltcPS\"\n\t#endif\n#endif\n#ifdef SHADOW_DIRECTIONAL\n\t#include \"shadowCascadesPS\"\n#endif\n#if defined(SHADOW_KIND_PCF1)\n\t#include \"shadowPCF1PS\"\n#endif\n#if defined(SHADOW_KIND_PCF3)\n\t#include \"shadowPCF3PS\"\n#endif\n#if defined(SHADOW_KIND_PCF5)\n\t#include \"shadowPCF5PS\"\n#endif\n#if defined(SHADOW_KIND_PCSS)\n\t#include \"linearizeDepthPS\"\n\t#include \"shadowPCSSPS\"\n\t#include \"shadowSoftPS\"\n#endif\n#if defined(SHADOW_KIND_VSM)\n\t#include \"shadowEVSMPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_LINEAR\n\t#include \"falloffLinearPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_SQUARED\n\t#include \"falloffInvSquaredPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_POINT\n\t#include \"lightDirPointPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_SPOT\n\t#include \"spotPS\"\n#endif\n#ifdef LIT_CODE_COOKIE\n\t#include \"cookiePS\"\n#endif\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#include \"clusteredLightPS\"\n#endif\n#ifdef LIGHT_COUNT > 0\n\t#include \"lightFunctionShadowPS, LIGHT_COUNT\"\n\t#include \"lightFunctionLightPS, LIGHT_COUNT\"\n#endif\n`;\n\nvar lightmapAddPS$1 = `\nvoid addLightMap(\n\tvec3 lightmap, \n\tvec3 dir, \n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tvec3 reflectionDir, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 vertexNormal, \n\tmat3 tbn\n#if defined(LIT_IRIDESCENCE)\n\tvec3 iridescenceFresnel, \n\tfloat iridescenceIntensity\n#endif\n) {\n\t#if defined(LIT_SPECULAR) && defined(LIT_DIR_LIGHTMAP)\n\t\tif (dot(dir, dir) < 0.0001) {\n\t\t\t\tdDiffuseLight += lightmap;\n\t\t} else {\n\t\t\tfloat vlight = saturate(dot(dir, -vertexNormal));\n\t\t\tfloat flight = saturate(dot(dir, -worldNormal));\n\t\t\tfloat nlight = (flight / max(vlight, 0.01)) * 0.5;\n\t\t\tdDiffuseLight += lightmap * nlight * 2.0;\n\t\t\tvec3 halfDir = normalize(-dir + viewDir);\n\t\t\tvec3 specularLight = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn);\n\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\tspecularLight *= \n\t\t\t\t\tgetFresnel(dot(viewDir, halfDir), \n\t\t\t\t\tgloss, \n\t\t\t\t\tspecularity\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\tiridescenceIntensity\n\t\t\t\t#endif\n\t\t\t\t\t);\n\t\t\t#endif\n\t\t\tdSpecularLight += specularLight;\n\t\t}\n\t#else\n\t\tdDiffuseLight += lightmap;\n\t#endif\n}\n`;\n\nvar lightmapPS$1 = `\n#ifdef STD_LIGHTMAP_DIR\n\tvec3 dLightmapDir;\n\tuniform sampler2D texture_dirLightMap;\n#endif\nvoid getLightMap() {\n\tdLightmap = vec3(1.0);\n\t#ifdef STD_LIGHT_TEXTURE\n\t\tdLightmap *= {STD_LIGHT_TEXTURE_DECODE}(texture2DBias({STD_LIGHT_TEXTURE_NAME}, {STD_LIGHT_TEXTURE_UV}, textureBias)).{STD_LIGHT_TEXTURE_CHANNEL};\n\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\tvec3 dir = texture2DBias(texture_dirLightMap, {STD_LIGHT_TEXTURE_UV}, textureBias).xyz * 2.0 - 1.0;\n\t\t\tfloat dirDot = dot(dir, dir);\n\t\t\tdLightmapDir = (dirDot > 0.001) ? dir / sqrt(dirDot) : vec3(0.0);\n\t\t#endif\n\t#endif\n\t#ifdef STD_LIGHT_VERTEX\n\t\tdLightmap *= saturate(vVertexColor.{STD_LIGHT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar lightSpecularAnisoGGXPS$1 = `\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 viewDir, vec3 h, vec3 lightDirNorm, mat3 tbn) {\n\tfloat PI = 3.141592653589793;\n\tfloat roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\tfloat alphaRoughness = roughness * roughness;\n\tfloat anisotropy = dAnisotropy;\n\tvec2 direction = dAnisotropyRotation;\n\tfloat at = mix(alphaRoughness, 1.0, anisotropy * anisotropy);\n\tfloat ab = clamp(alphaRoughness, 0.001, 1.0);\n\tvec3 anisotropicT = normalize(tbn * vec3(direction, 0.0));\n\tvec3 anisotropicB = normalize(cross(tbn[2], anisotropicT));\n\tfloat NoH = dot(worldNormal, h);\n\tfloat ToH = dot(anisotropicT, h);\n\tfloat BoH = dot(anisotropicB, h);\n\tfloat a2 = at * ab;\n\tvec3 v = vec3(ab * ToH, at * BoH, a2 * NoH);\n\tfloat v2 = dot(v, v);\n\tfloat w2 = a2 / v2;\n\tfloat D = a2 * w2 * w2 * (1.0 / PI);\n\tfloat ToV = dot(anisotropicT, viewDir);\n\tfloat BoV = dot(anisotropicB, viewDir);\n\tfloat ToL = dot(anisotropicT, -lightDirNorm);\n\tfloat BoL = dot(anisotropicB, -lightDirNorm);\n\tfloat NoV = dot(worldNormal, viewDir);\n\tfloat NoL = dot(worldNormal, -lightDirNorm);\n\tfloat lambdaV = NoL * length(vec3(at * ToV, ab * BoV, NoV));\n\tfloat lambdaL = NoV * length(vec3(at * ToL, ab * BoL, NoL));\n\tfloat G = 0.5 / (lambdaV + lambdaL);\n\treturn D * G;\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn);\n}\n`;\n\nvar lightSpecularBlinnPS$1 = `\nfloat calcLightSpecular(float gloss, vec3 worldNormal, vec3 h) {\n\tfloat nh = max( dot( h, worldNormal ), 0.0 );\n\tfloat specPow = exp2(gloss * 11.0);\n\tspecPow = max(specPow, 0.0001);\n\treturn pow(nh, specPow) * (specPow + 2.0) / 8.0;\n}\nfloat getLightSpecular(vec3 h, vec3 reflDir, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float gloss, mat3 tbn) {\n\treturn calcLightSpecular(gloss, worldNormal, h);\n}\n`;\n\nvar lightSheenPS$1 = `\nfloat sheenD(vec3 normal, vec3 h, float roughness) {\n\tconst float PI = 3.141592653589793;\n\tfloat invR = 1.0 / (roughness * roughness);\n\tfloat cos2h = max(dot(normal, h), 0.0);\n\tcos2h *= cos2h;\n\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\n\treturn (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * PI);\n}\nfloat sheenV(vec3 normal, vec3 viewDir, vec3 light) {\n\tfloat NoV = max(dot(normal, viewDir), 0.000001);\n\tfloat NoL = max(dot(normal, light), 0.000001);\n\treturn 1.0 / (4.0 * (NoL + NoV - NoL * NoV));\n}\nfloat getLightSpecularSheen(vec3 h, vec3 worldNormal, vec3 viewDir, vec3 lightDirNorm, float sheenGloss) {\n\tfloat D = sheenD(worldNormal, h, sheenGloss);\n\tfloat V = sheenV(worldNormal, viewDir, -lightDirNorm);\n\treturn D * V;\n}\n`;\n\nvar linearizeDepthPS$1 = `\n#ifndef LINEARIZE_DEPTH\n#define LINEARIZE_DEPTH\nfloat linearizeDepthWithParams(float z, vec4 cameraParams) {\n\tif (cameraParams.w == 0.0)\n\t\treturn (cameraParams.z * cameraParams.y) / (cameraParams.y + z * (cameraParams.z - cameraParams.y));\n\telse\n\t\treturn cameraParams.z + z * (cameraParams.y - cameraParams.z);\n}\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform vec4 camera_params;\n#endif\nfloat linearizeDepth(float z) {\n\treturn linearizeDepthWithParams(z, camera_params);\n}\n#endif\n`;\n\nvar litForwardBackendPS$1 = `\nvoid evaluateBackend() {\n\t#ifdef LIT_SSAO\n\t\tlitArgs_ao *= texture2DLod(ssaoTexture, gl_FragCoord.xy * ssaoTextureSizeInv, 0.0).r;\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tgetReflDir(litArgs_worldNormal, dViewDirW, litArgs_gloss, dTBN);\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tccReflDirW = normalize(-reflect(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t#ifdef LIT_METALNESS\n\t\t\tfloat f0 = 1.0 / litArgs_ior;\n\t\t\tf0 = (f0 - 1.0) / (f0 + 1.0);\n\t\t\tf0 *= f0;\n\t\t\tlitArgs_specularity = getSpecularModulate(litArgs_specularity, litArgs_albedo, litArgs_metalness, f0);\n\t\t\tlitArgs_albedo = getAlbedoModulate(litArgs_albedo, litArgs_metalness);\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tvec3 iridescenceFresnel = getIridescence(saturate(dot(dViewDirW, litArgs_worldNormal)), litArgs_specularity, litArgs_iridescence_thickness);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_ADD_AMBIENT\n\t\taddAmbient(litArgs_worldNormal);\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight = dDiffuseLight * (1.0 - litArgs_specularity);\n\t\t#endif\n\t\t#ifdef LIT_SEPARATE_AMBIENT\n\t\t\tvec3 dAmbientLight = dDiffuseLight;\n\t\t\tdDiffuseLight = vec3(0);\n\t\t#endif\n\t#endif\n\t#ifndef LIT_OLD_AMBIENT\n\t\tdDiffuseLight *= material_ambient;\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifndef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_LIGHTMAP\n\t\taddLightMap(\n\t\t\tlitArgs_lightmap, \n\t\t\tlitArgs_lightmapDir, \n\t\t\tlitArgs_worldNormal, \n\t\t\tdViewDirW, \n\t\t\tdReflDirW, \n\t\t\tlitArgs_gloss, \n\t\t\tlitArgs_specularity, \n\t\t\tdVertexNormalW,\n\t\t\tdTBN\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tlitArgs_iridescence_intensity\n\t\t#endif\n\t\t);\n\t#endif\n\t#ifdef LIT_LIGHTING || LIT_REFLECTIONS\n\t\t#ifdef LIT_REFLECTIONS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\taddReflectionCC(ccReflDirW, litArgs_clearcoat_gloss);\n\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tccFresnel = getFresnelCC(dot(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t\t\t\tccReflection *= ccFresnel;\n\t\t\t\t#else\n\t\t\t\t\tccFresnel = 0.0;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tccReflection *= litArgs_specularityFactor;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\taddReflectionSheen(litArgs_worldNormal, dViewDirW, litArgs_sheen_gloss);\n\t\t\t#endif\n\t\t\taddReflection(dReflDirW, litArgs_gloss);\n\t\t\t#ifdef LIT_FRESNEL_MODEL\n\t\t\t\tdReflection.rgb *= getFresnel(\n\t\t\t\t\tdot(dViewDirW, litArgs_worldNormal), \n\t\t\t\t\tlitArgs_gloss, \n\t\t\t\t\tlitArgs_specularity\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t#endif\n\t\t\t\t\t);\n\t\t\t#else\n\t\t\t\tdReflection.rgb *= litArgs_specularity;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tdReflection.rgb *= litArgs_specularityFactor;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\tdSpecularLight *= litArgs_specularity;\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tcalcLTCLightValues(litArgs_gloss, litArgs_worldNormal, dViewDirW, litArgs_specularity, litArgs_clearcoat_gloss, litArgs_clearcoat_worldNormal, litArgs_clearcoat_specularity);\n\t\t\t#endif\n\t\t#endif\n\t\t\n\t\t#ifdef LIGHT_COUNT > 0\n\t\t\t#include \"lightEvaluationPS, LIGHT_COUNT\"\n\t\t#endif\n\t\t#ifdef LIT_CLUSTERED_LIGHTS\n\t\t\taddClusteredLights(litArgs_worldNormal, dViewDirW, dReflDirW,\n\t\t\t\t#if defined(LIT_CLEARCOAT)\n\t\t\t\t\t\tccReflDirW,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_gloss, litArgs_specularity, dVertexNormalW, dTBN, \n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tiridescenceFresnel,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_clearcoat_worldNormal, litArgs_clearcoat_gloss, litArgs_sheen_gloss, litArgs_iridescence_intensity\n\t\t\t);\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tlitArgs_clearcoat_specularity = 1.0;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tlitArgs_specularity = vec3(1);\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\taddRefraction(\n\t\t\t\tlitArgs_worldNormal, \n\t\t\t\tdViewDirW, \n\t\t\t\tlitArgs_thickness, \n\t\t\t\tlitArgs_gloss, \n\t\t\t\tlitArgs_specularity, \n\t\t\t\tlitArgs_albedo, \n\t\t\t\tlitArgs_transmission,\n\t\t\t\tlitArgs_ior,\n\t\t\t\tlitArgs_dispersion\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel, \n\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t#endif\n\t\t\t);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifdef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\t\toccludeSpecular(litArgs_gloss, litArgs_ao, litArgs_worldNormal, dViewDirW);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULARITY_FACTOR\n\t\tdSpecularLight *= litArgs_specularityFactor;\n\t#endif\n\t#if !defined(LIT_OPACITY_FADES_SPECULAR)\n\t\t#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == PREMULTIPLIED\n\t\t\tfloat specLum = dot((dSpecularLight + dReflection.rgb * dReflection.a), vec3( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tspecLum += dot(ccSpecularLight * litArgs_clearcoat_specularity + ccReflection * litArgs_clearcoat_specularity, vec3( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#endif\n\t\t\tlitArgs_opacity = clamp(litArgs_opacity + gammaCorrectInput(specLum), 0.0, 1.0);\n\t\t#endif\n\t\tlitArgs_opacity *= material_alphaFade;\n\t#endif\n\t#ifdef LIT_LIGHTMAP_BAKING\n\t\t#ifdef LIT_LIGHTMAP_BAKING_COLOR\n\t\t\t#include \"bakeLmEndPS\"\n\t\t#endif\n\t\t#ifdef LIT_LIGHTMAP_BAKING_DIR\n\t\t\t#include \"bakeDirLmEndPS\"\n\t\t#endif\n\t#else\n\t\t#include \"endPS\"\n\t\t#include \"outputAlphaPS\"\n\t#endif\n\t#ifdef LIT_MSDF\n\t\tgl_FragColor = applyMsdf(gl_FragColor);\n\t#endif\n\t#include \"outputPS\"\n\t#include \"debugOutputPS\"\n\t#ifdef LIT_SHADOW_CATCHER\n\t\tgl_FragColor.rgb = vec3(dShadowCatcher);\n\t#endif\n}\n`;\n\nvar litForwardDeclarationPS$1 = `\nvec3 sReflection;\nvec3 dVertexNormalW;\nvec3 dTangentW;\nvec3 dBinormalW;\nvec3 dViewDirW;\nvec3 dReflDirW;\nvec3 ccReflDirW;\nvec3 dLightDirNormW;\nfloat dAtten;\nmat3 dTBN;\nvec4 dReflection;\nvec3 dDiffuseLight;\nvec3 dSpecularLight;\nfloat ccFresnel;\nvec3 ccReflection;\nvec3 ccSpecularLight;\nfloat ccSpecularityNoFres;\nvec3 sSpecularLight;\n#ifdef LIT_DISPERSION\n\tuniform float material_dispersion;\n#endif\n#ifndef LIT_OPACITY_FADES_SPECULAR\n\tuniform float material_alphaFade;\n#endif\n#ifdef LIT_SSAO\n\tuniform sampler2D ssaoTexture;\n\tuniform vec2 ssaoTextureSizeInv;\n#endif\n#ifdef LIT_SHADOW_CATCHER\n\tfloat dShadowCatcher = 1.0;\n#endif\n#if LIGHT_COUNT > 0\n\t#include \"lightDeclarationPS, LIGHT_COUNT\"\n#endif\n#ifdef LIT_SPECULAR\n\t#if LIT_FRESNEL_MODEL == NONE && !defined(LIT_REFLECTIONS) && !defined(LIT_DIFFUSE_MAP) \n\t\t#define LIT_OLD_AMBIENT\n\t#endif\n#endif\n#ifdef STD_LIGHTMAP_DIR\n\tuniform float bakeDir;\n#endif\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tuniform float ambientBakeOcclusionContrast;\n\tuniform float ambientBakeOcclusionBrightness;\n#endif\n`;\n\nvar litForwardMainPS$1 = `\nvoid main(void) {\n\t#include \"litUserMainStartPS\"\n\tdReflection = vec4(0);\n\t#ifdef LIT_CLEARCOAT\n\t\tccSpecularLight = vec3(0);\n\t\tccReflection = vec3(0);\n\t#endif\n\t#if LIT_NONE_SLICE_MODE == SLICED\n\t\t#include \"startNineSlicedPS\"\n\t#elif LIT_NONE_SLICE_MODE == TILED\n\t\t#include \"startNineSlicedTiledPS\"\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\tdVertexNormalW = normalize(vNormalW);\n\t\t#ifdef LIT_TANGENTS\n\t\t\t#if defined(LIT_HEIGHTS) || defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS) || defined(LIT_GGX_SPECULAR)\n\t\t\t\tdTangentW = vTangentW;\n\t\t\t\tdBinormalW = vBinormalW;\n\t\t\t#endif\n\t\t#endif\n\t\tgetViewDir();\n\t\t#ifdef LIT_TBN\n\t\t\tgetTBN(dTangentW, dBinormalW, dVertexNormalW);\n\t\t\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t\t\thandleTwoSidedLighting();\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tevaluateFrontend();\n\t#include \"debugProcessFrontendPS\"\n\tevaluateBackend();\n\t#include \"litUserMainEndPS\"\n}\n`;\n\nvar litForwardPostCodePS$1 = `\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"cubeMapRotatePS\"\n\t#include \"cubeMapProjectPS\"\n\t#include \"envProcPS\"\n#endif\n#ifdef LIT_SPECULAR_OR_REFLECTION\n\t#ifdef LIT_METALNESS\n\t\t#include \"metalnessModulatePS\"\n\t#endif\n\t#if LIT_FRESNEL_MODEL == SCHLICK\n\t\t#include \"fresnelSchlickPS\"\n\t#endif\n\t#ifdef LIT_IRIDESCENCE\n\t\t#include \"iridescenceDiffractionPS\"\n\t#endif\n#endif\n#ifdef LIT_AO\n\t#include \"aoDiffuseOccPS\"\n\t#include \"aoSpecOccPS\"\n#endif\n#if LIT_REFLECTION_SOURCE == ENVATLASHQ\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvHQPS\"\n#elif LIT_REFLECTION_SOURCE == ENVATLAS\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvPS\"\n#elif LIT_REFLECTION_SOURCE == CUBEMAP\n\t#include \"reflectionCubePS\"\n#elif LIT_REFLECTION_SOURCE == SPHEREMAP\n\t#include \"reflectionSpherePS\"\n#endif\n#ifdef LIT_REFLECTIONS\n\t#ifdef LIT_CLEARCOAT\n\t\t#include \"reflectionCCPS\"\n\t#endif\n\t#ifdef LIT_SHEEN\n\t\t#include \"reflectionSheenPS\"\n\t#endif\n#endif\n#ifdef LIT_REFRACTION\n\t#if defined(LIT_DYNAMIC_REFRACTION)\n\t\t#include \"refractionDynamicPS\"\n\t#elif defined(LIT_REFLECTIONS)\n\t\t#include \"refractionCubePS\"\n\t#endif\n#endif\n#ifdef LIT_SHEEN\n\t#include \"lightSheenPS\"\n#endif\nuniform vec3 material_ambient;\n#ifdef LIT_SPECULAR\n\t#ifdef LIT_LIGHTING\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"lightSpecularAnisoGGXPS\"\n\t\t#else\n\t\t\t#include \"lightSpecularBlinnPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"combinePS\"\n#ifdef LIT_LIGHTMAP\n\t#include \"lightmapAddPS\"\n#endif\n#ifdef LIT_ADD_AMBIENT\n\t#include \"ambientPS\"\n#endif\n#ifdef LIT_MSDF\n\t#include \"msdfPS\"\n#endif\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"viewDirPS\"\n\t#ifdef LIT_SPECULAR\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"reflDirAnisoPS\"\n\t\t#else\n\t\t\t#include \"reflDirPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"lightingPS\"\n`;\n\nvar litForwardPreCodePS$1 = `\n#include \"basePS\"\n#include \"sphericalPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\n#include \"tonemappingPS\"\n#include \"fogPS\"\n#if LIT_NONE_SLICE_MODE == SLICED\n\t#include \"baseNineSlicedPS\"\n#elif LIT_NONE_SLICE_MODE == TILED\n\t#include \"baseNineSlicedTiledPS\"\n#endif\n#ifdef LIT_TBN\n\t#include \"TBNPS\"\n\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t#include \"twoSidedLightingPS\"\n\t#endif\n#endif\n`;\n\nvar litMainPS$1 = `\n#include \"varyingsPS\"\n#include \"litUserDeclarationPS\"\n#include \"frontendDeclPS\"\n#if defined(PICK_PASS) || defined(PREPASS_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litOtherMainPS\"\n#elif defined(SHADOW_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litShadowMainPS\"\n#else\n\t#include \"litForwardDeclarationPS\"\n\t#include \"litForwardPreCodePS\"\n\t#include \"frontendCodePS\"\n\t#include \"litForwardPostCodePS\"\n\t#include \"litForwardBackendPS\"\n\t#include \"litUserCodePS\"\n\t#include \"litForwardMainPS\"\n#endif\n`;\n\nvar litMainVS$1 = `\n#include \"varyingsVS\"\n#include  \"litUserDeclarationVS\"\n#ifdef VERTEX_COLOR\n\tattribute vec4 vertex_color;\n#endif\n#ifdef NINESLICED\n\tvarying vec2 vMask;\n\tvarying vec2 vTiledUv;\n\tuniform mediump vec4 innerOffset;\n\tuniform mediump vec2 outerScale;\n\tuniform mediump vec4 atlasRect;\n#endif\nvec3 dPositionW;\nmat4 dModelMatrix;\n#include \"transformCoreVS\"\n#ifdef UV0\n\tattribute vec2 vertex_texCoord0;\n\t#include \"uv0VS\"\n#endif\n#ifdef UV1\n\tattribute vec2 vertex_texCoord1;\n\t#include \"uv1VS\"\n#endif\n#ifdef LINEAR_DEPTH\n\t#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\t\tuniform mat4 matrix_view;\n\t#endif\n#endif\n#include \"transformVS\"\n#ifdef NORMALS\n\t#include \"normalCoreVS\"\n\t#include \"normalVS\"\n#endif\n#ifdef TANGENTS\n\tattribute vec4 vertex_tangent;\n#endif\n#include \"uvTransformUniformsPS, UV_TRANSFORMS_COUNT\"\n#ifdef MSDF\n\t#include \"msdfVS\"\n#endif\n#include  \"litUserCodeVS\"\nvoid main(void) {\n\t#include \"litUserMainStartVS\"\n\tgl_PointSize = 1.0;\n\tgl_Position = getPosition();\n\tvPositionW = getWorldPosition();\n\t#ifdef NORMALS\n\t\tvNormalW = getNormal();\n\t#endif\n\t#ifdef TANGENTS\n\t\tvTangentW = normalize(dNormalMatrix * vertex_tangent.xyz);\n\t\tvBinormalW = cross(vNormalW, vTangentW) * vertex_tangent.w;\n\t#elif defined(GGX_SPECULAR)\n\t\tvObjectSpaceUpW = normalize(dNormalMatrix * vec3(0, 1, 0));\n\t#endif\n\t#ifdef UV0\n\t\tvec2 uv0 = getUv0();\n\t\t#ifdef UV0_UNMODIFIED\n\t\t\tvUv0 = uv0;\n\t\t#endif\n\t#endif\n\t#ifdef UV1\n\t\tvec2 uv1 = getUv1();\n\t\t#ifdef UV1_UNMODIFIED\n\t\t\tvUv1 = uv1;\n\t\t#endif\n\t#endif\n\t#include \"uvTransformVS, UV_TRANSFORMS_COUNT\"\n\t#ifdef VERTEX_COLOR\n\t\tvVertexColor = vertex_color;\n\t#endif\n\t#ifdef LINEAR_DEPTH\n\t\tvLinearDepth = -(matrix_view * vec4(vPositionW, 1.0)).z;\n\t#endif\n\t#ifdef MSDF\n\t\tunpackMsdfParams();\n\t#endif\n\t#include \"litUserMainEndVS\"\n}\n`;\n\nvar litOtherMainPS$1 = `\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#ifdef PREPASS_PASS\n\t#include \"floatAsUintPS\"\n#endif\nvoid main(void) {\n\t#include \"litUserMainStartPS\"\n\tevaluateFrontend();\n\t#ifdef PICK_PASS\n\t\tgl_FragColor = getPickOutput();\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\tgl_FragColor = float2vec4(vLinearDepth);\n\t#endif\n\t#include \"litUserMainEndPS\"\n}\n`;\n\nvar litShaderArgsPS$1 = `\nvec3 litArgs_albedo;\nfloat litArgs_opacity;\nvec3 litArgs_emission;\nvec3 litArgs_worldNormal;\nfloat litArgs_ao;\nvec3 litArgs_lightmap;\nvec3 litArgs_lightmapDir;\nfloat litArgs_metalness;\nvec3 litArgs_specularity;\nfloat litArgs_specularityFactor;\nfloat litArgs_gloss;\nfloat litArgs_sheen_gloss;\nvec3 litArgs_sheen_specularity;\nfloat litArgs_transmission;\nfloat litArgs_thickness;\nfloat litArgs_ior;\nfloat litArgs_dispersion;\nfloat litArgs_iridescence_intensity;\nfloat litArgs_iridescence_thickness;\nvec3 litArgs_clearcoat_worldNormal;\nfloat litArgs_clearcoat_specularity;\nfloat litArgs_clearcoat_gloss;\n`;\n\nvar litShaderCorePS$1 = `\n\t#if LIT_NONE_SLICE_MODE == TILED\n\t\tconst float textureBias = -1000.0;\n\t#else\n\t\tuniform float textureBias;\n\t#endif\n\t#include \"litShaderArgsPS\"\n`;\n\nvar litShadowMainPS$1 = `\n#if LIGHT_TYPE != DIRECTIONAL\n\tuniform vec3 view_position;\n\tuniform float light_radius;\n#endif\n#if SHADOW_TYPE == PCSS_32F\n\t#include \"linearizeDepthPS\"\n#endif\nvoid main(void) {\n\t#include \"litUserMainStartPS\"\n\tevaluateFrontend();\n\t#ifdef PERSPECTIVE_DEPTH\n\t\tfloat depth = gl_FragCoord.z;\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\t#if LIGHT_TYPE != DIRECTIONAL\n\t\t\t\tdepth = linearizeDepthWithParams(depth, camera_params);\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tfloat depth = min(distance(view_position, vPositionW) / light_radius, 0.99999);\n\t\t#define MODIFIED_DEPTH\n\t#endif\n\t#if SHADOW_TYPE == VSM_16F || SHADOW_TYPE == VSM_32F\n\t\t#if SHADOW_TYPE == VSM_32F\n\t\t\tfloat exponent = 15.0;\n\t\t#else\n\t\t\tfloat exponent = 5.54;\n\t\t#endif\n\t\tdepth = 2.0 * depth - 1.0;\n\t\tdepth =  exp(exponent * depth);\n\t\tgl_FragColor = vec4(depth, depth*depth, 1.0, 1.0);\n\t#else\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\tgl_FragColor.r = depth;\n\t\t#else\n\t\t\t#ifdef MODIFIED_DEPTH\n\t\t\t\tgl_FragDepth = depth;\n\t\t\t#endif\n\t\t\tgl_FragColor = vec4(1.0);\n\t\t#endif\n\t#endif\n\t#include \"litUserMainEndPS\"\n}\n`;\n\nvar ltcPS$1 = `\nmat3 transposeMat3( const in mat3 m ) {\n\tmat3 tmp;\n\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n\treturn tmp;\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat dotNV = saturate( dot( N, V ) );\n\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nstruct Coords {\n\tvec3 coord0;\n\tvec3 coord1;\n\tvec3 coord2;\n\tvec3 coord3;\n};\nfloat LTC_EvaluateRect( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in Coords rectCoords) {\n\tvec3 v1 = rectCoords.coord1 - rectCoords.coord0;\n\tvec3 v2 = rectCoords.coord3 - rectCoords.coord0;\n\t\n\tvec3 lightNormal = cross( v1, v2 );\n\tfloat factor = sign(-dot( lightNormal, P - rectCoords.coord0 ));\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 =  factor * cross( N, T1 );\n\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords.coord0 - P );\n\tcoords[ 1 ] = mat * ( rectCoords.coord1 - P );\n\tcoords[ 2 ] = mat * ( rectCoords.coord2 - P );\n\tcoords[ 3 ] = mat * ( rectCoords.coord3 - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn result;\n}\nCoords dLTCCoords;\nCoords getLTCLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){\n\tCoords coords;\n\tcoords.coord0 = lightPos + halfWidth - halfHeight;\n\tcoords.coord1 = lightPos - halfWidth - halfHeight;\n\tcoords.coord2 = lightPos - halfWidth + halfHeight;\n\tcoords.coord3 = lightPos + halfWidth + halfHeight;\n\treturn coords;\n}\nfloat dSphereRadius;\nCoords getSphereLightCoords(vec3 lightPos, vec3 halfWidth, vec3 halfHeight){\n\tdSphereRadius = max(length(halfWidth), length(halfHeight));\n\tvec3 f = reflect(normalize(lightPos - view_position), vNormalW);\n\tvec3 w = normalize(cross(f, halfHeight));\n\tvec3 h = normalize(cross(f, w));\n\treturn getLTCLightCoords(lightPos, w * dSphereRadius, h * dSphereRadius);\n}\nvec2 dLTCUV;\n#ifdef LIT_CLEARCOAT\n\tvec2 ccLTCUV;\n#endif\nvec2 getLTCLightUV(float gloss, vec3 worldNormal, vec3 viewDir)\n{\n\tfloat roughness = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\treturn LTC_Uv( worldNormal, viewDir, roughness );\n}\nvec3 dLTCSpecFres;\n#ifdef LIT_CLEARCOAT\n\tvec3 ccLTCSpecFres;\n#endif\nvec3 getLTCLightSpecFres(vec2 uv, vec3 specularity)\n{\n\tvec4 t2 = texture2DLod(areaLightsLutTex2, uv, 0.0);\n\treturn specularity * t2.x + ( vec3( 1.0 ) - specularity) * t2.y;\n}\nvoid calcLTCLightValues(float gloss, vec3 worldNormal, vec3 viewDir, vec3 specularity, float clearcoatGloss, vec3 clearcoatWorldNormal, float clearcoatSpecularity)\n{\n\tdLTCUV = getLTCLightUV(gloss, worldNormal, viewDir);\n\tdLTCSpecFres = getLTCLightSpecFres(dLTCUV, specularity); \n#ifdef LIT_CLEARCOAT\n\tccLTCUV = getLTCLightUV(clearcoatGloss, clearcoatWorldNormal, viewDir);\n\tccLTCSpecFres = getLTCLightSpecFres(ccLTCUV, vec3(clearcoatSpecularity));\n#endif\n}\nvoid calcRectLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) {\n\tdLTCCoords = getLTCLightCoords(lightPos, halfWidth, halfHeight);\n}\nvoid calcDiskLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) {\n\tcalcRectLightValues(lightPos, halfWidth, halfHeight);\n}\nvoid calcSphereLightValues(vec3 lightPos, vec3 halfWidth, vec3 halfHeight) {\n\tdLTCCoords = getSphereLightCoords(lightPos, halfWidth, halfHeight);\n}\nvec3 SolveCubic(vec4 Coefficient)\n{\n\tfloat pi = 3.14159;\n\tCoefficient.xyz /= Coefficient.w;\n\tCoefficient.yz /= 3.0;\n\tfloat A = Coefficient.w;\n\tfloat B = Coefficient.z;\n\tfloat C = Coefficient.y;\n\tfloat D = Coefficient.x;\n\tvec3 Delta = vec3(\n\t\t-Coefficient.z * Coefficient.z + Coefficient.y,\n\t\t-Coefficient.y * Coefficient.z + Coefficient.x,\n\t\tdot(vec2(Coefficient.z, -Coefficient.y), Coefficient.xy)\n\t);\n\tfloat Discriminant = dot(vec2(4.0 * Delta.x, -Delta.y), Delta.zy);\n\tvec2 xlc, xsc;\n\t{\n\t\tfloat A_a = 1.0;\n\t\tfloat C_a = Delta.x;\n\t\tfloat D_a = -2.0 * B * Delta.x + Delta.y;\n\t\tfloat Theta = atan(sqrt(Discriminant), -D_a) / 3.0;\n\t\tfloat x_1a = 2.0 * sqrt(-C_a) * cos(Theta);\n\t\tfloat x_3a = 2.0 * sqrt(-C_a) * cos(Theta + (2.0 / 3.0) * pi);\n\t\tfloat xl;\n\t\tif ((x_1a + x_3a) > 2.0 * B)\n\t\t\txl = x_1a;\n\t\telse\n\t\t\txl = x_3a;\n\t\txlc = vec2(xl - B, A);\n\t}\n\t{\n\t\tfloat A_d = D;\n\t\tfloat C_d = Delta.z;\n\t\tfloat D_d = -D * Delta.y + 2.0 * C * Delta.z;\n\t\tfloat Theta = atan(D * sqrt(Discriminant), -D_d) / 3.0;\n\t\tfloat x_1d = 2.0 * sqrt(-C_d) * cos(Theta);\n\t\tfloat x_3d = 2.0 * sqrt(-C_d) * cos(Theta + (2.0 / 3.0) * pi);\n\t\tfloat xs;\n\t\tif (x_1d + x_3d < 2.0 * C)\n\t\t\txs = x_1d;\n\t\telse\n\t\t\txs = x_3d;\n\t\txsc = vec2(-D, xs + C);\n\t}\n\tfloat E =  xlc.y * xsc.y;\n\tfloat F = -xlc.x * xsc.y - xlc.y * xsc.x;\n\tfloat G =  xlc.x * xsc.x;\n\tvec2 xmc = vec2(C * F - B * G, -B * F + C * E);\n\tvec3 Root = vec3(xsc.x / xsc.y, xmc.x / xmc.y, xlc.x / xlc.y);\n\tif (Root.x < Root.y && Root.x < Root.z)\n\t\tRoot.xyz = Root.yxz;\n\telse if (Root.z < Root.x && Root.z < Root.y)\n\t\tRoot.xyz = Root.xzy;\n\treturn Root;\n}\nfloat LTC_EvaluateDisk(vec3 N, vec3 V, vec3 P, mat3 Minv, Coords points)\n{\n\tvec3 T1 = normalize(V - N * dot(V, N));\n\tvec3 T2 = cross(N, T1);\n\tmat3 R = transposeMat3( mat3( T1, T2, N ) );\n\tvec3 L_[ 3 ];\n\tL_[ 0 ] = R * ( points.coord0 - P );\n\tL_[ 1 ] = R * ( points.coord1 - P );\n\tL_[ 2 ] = R * ( points.coord2 - P );\n\tvec3 C  = 0.5 * (L_[0] + L_[2]);\n\tvec3 V1 = 0.5 * (L_[1] - L_[2]);\n\tvec3 V2 = 0.5 * (L_[1] - L_[0]);\n\tC  = Minv * C;\n\tV1 = Minv * V1;\n\tV2 = Minv * V2;\n\tfloat a, b;\n\tfloat d11 = dot(V1, V1);\n\tfloat d22 = dot(V2, V2);\n\tfloat d12 = dot(V1, V2);\n\tif (abs(d12) / sqrt(d11 * d22) > 0.0001)\n\t{\n\t\tfloat tr = d11 + d22;\n\t\tfloat det = -d12 * d12 + d11 * d22;\n\t\tdet = sqrt(det);\n\t\tfloat u = 0.5 * sqrt(tr - 2.0 * det);\n\t\tfloat v = 0.5 * sqrt(tr + 2.0 * det);\n\t\tfloat e_max = (u + v) * (u + v);\n\t\tfloat e_min = (u - v) * (u - v);\n\t\tvec3 V1_, V2_;\n\t\tif (d11 > d22)\n\t\t{\n\t\t\tV1_ = d12 * V1 + (e_max - d11) * V2;\n\t\t\tV2_ = d12 * V1 + (e_min - d11) * V2;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tV1_ = d12*V2 + (e_max - d22)*V1;\n\t\t\tV2_ = d12*V2 + (e_min - d22)*V1;\n\t\t}\n\t\ta = 1.0 / e_max;\n\t\tb = 1.0 / e_min;\n\t\tV1 = normalize(V1_);\n\t\tV2 = normalize(V2_);\n\t}\n\telse\n\t{\n\t\ta = 1.0 / dot(V1, V1);\n\t\tb = 1.0 / dot(V2, V2);\n\t\tV1 *= sqrt(a);\n\t\tV2 *= sqrt(b);\n\t}\n\tvec3 V3 = normalize(cross(V1, V2));\n\tif (dot(C, V3) < 0.0)\n\t\tV3 *= -1.0;\n\tfloat L  = dot(V3, C);\n\tfloat x0 = dot(V1, C) / L;\n\tfloat y0 = dot(V2, C) / L;\n\tfloat E1 = inversesqrt(a);\n\tfloat E2 = inversesqrt(b);\n\ta *= L * L;\n\tb *= L * L;\n\tfloat c0 = a * b;\n\tfloat c1 = a * b * (1.0 + x0 * x0 + y0 * y0) - a - b;\n\tfloat c2 = 1.0 - a * (1.0 + x0 * x0) - b * (1.0 + y0 * y0);\n\tfloat c3 = 1.0;\n\tvec3 roots = SolveCubic(vec4(c0, c1, c2, c3));\n\tfloat e1 = roots.x;\n\tfloat e2 = roots.y;\n\tfloat e3 = roots.z;\n\tvec3 avgDir = vec3(a * x0 / (a - e2), b * y0 / (b - e2), 1.0);\n\tmat3 rotate = mat3(V1, V2, V3);\n\tavgDir = rotate * avgDir;\n\tavgDir = normalize(avgDir);\n\tfloat L1 = sqrt(-e2 / e3);\n\tfloat L2 = sqrt(-e2 / e1);\n\tfloat formFactor = max(0.0, L1 * L2 * inversesqrt((1.0 + L1 * L1) * (1.0 + L2 * L2)));\n\t\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tvec2 uv = vec2(avgDir.z * 0.5 + 0.5, formFactor);\n\tuv = uv*LUT_SCALE + LUT_BIAS;\n\tfloat scale = texture2DLod(areaLightsLutTex2, uv, 0.0).w;\n\treturn formFactor*scale;\n}\nfloat FixNan(float value) {\n\t#ifdef WEBGPU\n\t\treturn value != value ? 0.0 : value;\n\t#else\n\t\treturn isnan(value) ? 0.0 : value;\n\t#endif\n}\nfloat getRectLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords );\n}\nfloat getDiskLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\treturn FixNan(LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mat3( 1.0 ), dLTCCoords ));\n}\nfloat getSphereLightDiffuse(vec3 worldNormal, vec3 viewDir, vec3 lightDir, vec3 lightDirNorm) {\n\tfloat falloff = dSphereRadius / (dot(lightDir, lightDir) + dSphereRadius);\n\treturn FixNan(getLightDiffuse(worldNormal, viewDir, lightDirNorm) * falloff);\n}\nmat3 getLTCLightInvMat(vec2 uv)\n{\n\tvec4 t1 = texture2DLod(areaLightsLutTex1, uv, 0.0);\n\treturn mat3(\n\t\tvec3( t1.x, 0, t1.y ),\n\t\tvec3(\t0, 1,\t0 ),\n\t\tvec3( t1.z, 0, t1.w )\n\t);\n}\nfloat calcRectLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) {\n\tmat3 mInv = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfloat getRectLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcRectLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfloat calcDiskLightSpecular(vec3 worldNormal, vec3 viewDir, vec2 uv) {\n\tmat3 mInv = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfloat getDiskLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfloat getSphereLightSpecular(vec3 worldNormal, vec3 viewDir) {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\n`;\n\nvar metalnessPS$1 = `\n#ifdef STD_METALNESS_CONSTANT\nuniform float material_metalness;\n#endif\nvoid getMetalness() {\n\tfloat metalness = 1.0;\n\t#ifdef STD_METALNESS_CONSTANT\n\tmetalness *= material_metalness;\n\t#endif\n\t#ifdef STD_METALNESS_TEXTURE\n\tmetalness *= texture2DBias({STD_METALNESS_TEXTURE_NAME}, {STD_METALNESS_TEXTURE_UV}, textureBias).{STD_METALNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_METALNESS_VERTEX\n\tmetalness *= saturate(vVertexColor.{STD_METALNESS_VERTEX_CHANNEL});\n\t#endif\n\tdMetalness = metalness;\n}\n`;\n\nvar msdfPS$1 = `\nuniform sampler2D texture_msdfMap;\nfloat median(float r, float g, float b) {\n\treturn max(min(r, g), min(max(r, g), b));\n}\nfloat map (float min, float max, float v) {\n\treturn (v - min) / (max - min);\n}\nuniform float font_sdfIntensity;\nuniform float font_pxrange;\nuniform float font_textureWidth;\n#ifndef LIT_MSDF_TEXT_ATTRIBUTE\n\tuniform vec4 outline_color;\n\tuniform float outline_thickness;\n\tuniform vec4 shadow_color;\n\tuniform vec2 shadow_offset;\n#else\n\tvarying vec4 outline_color;\n\tvarying float outline_thickness;\n\tvarying vec4 shadow_color;\n\tvarying vec2 shadow_offset;\n#endif\nvec4 applyMsdf(vec4 color) {\n\tcolor.rgb = gammaCorrectInput(color.rgb);\n\tvec3 tsample = texture2D(texture_msdfMap, vUv0).rgb;\n\tvec2 uvShdw = vUv0 - shadow_offset;\n\tvec3 ssample = texture2D(texture_msdfMap, uvShdw).rgb;\n\tfloat sigDist = median(tsample.r, tsample.g, tsample.b);\n\tfloat sigDistShdw = median(ssample.r, ssample.g, ssample.b);\n\tfloat smoothingMax = 0.2;\n\tvec2 w = fwidth(vUv0);\n\tfloat smoothing = clamp(w.x * font_textureWidth / font_pxrange, 0.0, smoothingMax);\n\tfloat mapMin = 0.05;\n\tfloat mapMax = clamp(1.0 - font_sdfIntensity, mapMin, 1.0);\n\tfloat sigDistInner = map(mapMin, mapMax, sigDist);\n\tfloat sigDistOutline = map(mapMin, mapMax, sigDist + outline_thickness);\n\tsigDistShdw = map(mapMin, mapMax, sigDistShdw + outline_thickness);\n\tfloat center = 0.5;\n\tfloat inside = smoothstep(center-smoothing, center+smoothing, sigDistInner);\n\tfloat outline = smoothstep(center-smoothing, center+smoothing, sigDistOutline);\n\tfloat shadow = smoothstep(center-smoothing, center+smoothing, sigDistShdw);\n\tvec4 tcolor = (outline > inside) ? outline * vec4(outline_color.a * outline_color.rgb, outline_color.a) : vec4(0.0);\n\ttcolor = mix(tcolor, color, inside);\n\tvec4 scolor = (shadow > outline) ? shadow * vec4(shadow_color.a * shadow_color.rgb, shadow_color.a) : tcolor;\n\ttcolor = mix(scolor, tcolor, outline);\n\ttcolor.rgb = gammaCorrectOutput(tcolor.rgb);\n\t\n\treturn tcolor;\n}\n`;\n\nvar metalnessModulatePS$1 = `\nvec3 getSpecularModulate(in vec3 specularity, in vec3 albedo, in float metalness, in float f0) {\n\tvec3 dielectricF0 = f0 * specularity;\n\treturn mix(dielectricF0, albedo, metalness);\n}\nvec3 getAlbedoModulate(in vec3 albedo, in float metalness) {\n\treturn albedo * (1.0 - metalness);\n}\n`;\n\nvar morphPS$1 = `\n\tvarying vec2 uv0;\n\tuniform sampler2DArray morphTexture;\n\tuniform highp float morphFactor[{MORPH_TEXTURE_MAX_COUNT}];\n\tuniform highp uint morphIndex[{MORPH_TEXTURE_MAX_COUNT}];\n\tuniform int count;\n\t#ifdef MORPH_INT\n\t\tuniform vec3 aabbSize;\n\t\tuniform vec3 aabbMin;\n\t#endif\n\tvoid main (void) {\n\t\thighp vec3 color = vec3(0, 0, 0);\n\t\tivec2 pixelCoords = ivec2(uv0 * vec2(textureSize(morphTexture, 0).xy));\n\t\t\n\t\tfor (int i = 0; i < count; i++) {\n\t\t\tuint textureIndex = morphIndex[i];\n\t\t\tvec3 delta = texelFetch(morphTexture, ivec3(pixelCoords, int(textureIndex)), 0).xyz;\n\t\t\tcolor += morphFactor[i] * delta;\n\t\t}\n\t\t#ifdef MORPH_INT\n\t\t\tcolor = (color - aabbMin) / aabbSize * 65535.0;\n\t\t\tgl_FragColor = uvec4(color, 1u);\n\t\t#else\n\t\t\tgl_FragColor = vec4(color, 1.0);\n\t\t#endif\n\t}\n`;\n\nvar morphVS$1 = `\n\tattribute vec2 vertex_position;\n\tvarying vec2 uv0;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\t\tuv0 = vertex_position.xy * 0.5 + 0.5;\n\t}\n`;\n\nvar msdfVS$1 = `\nattribute vec3 vertex_outlineParameters;\nattribute vec3 vertex_shadowParameters;\nvarying vec4 outline_color;\nvarying float outline_thickness;\nvarying vec4 shadow_color;\nvarying vec2 shadow_offset;\nvoid unpackMsdfParams() {\n\tvec3 little = mod(vertex_outlineParameters, 256.);\n\tvec3 big = (vertex_outlineParameters - little) / 256.;\n\toutline_color.rb = little.xy / 255.;\n\toutline_color.ga = big.xy / 255.;\n\toutline_thickness = little.z / 255. * 0.2;\n\tlittle = mod(vertex_shadowParameters, 256.);\n\tbig = (vertex_shadowParameters - little) / 256.;\n\tshadow_color.rb = little.xy / 255.;\n\tshadow_color.ga = big.xy / 255.;\n\tshadow_offset = (vec2(little.z, big.z) / 127. - 1.) * 0.005;\n}\n`;\n\nvar normalVS$1 = `\nmat3 dNormalMatrix;\nvec3 getNormal() {\n\tdNormalMatrix = getNormalMatrix(dModelMatrix);\n\tvec3 localNormal = getLocalNormal(vertex_normal);\n\treturn normalize(dNormalMatrix * localNormal);\n}\n`;\n\nvar normalCoreVS$1 = `\nattribute vec3 vertex_normal;\nuniform mat3 matrix_normal;\n#ifdef MORPHING_NORMAL\n\t#ifdef MORPHING_INT\n\t\tuniform highp usampler2D morphNormalTex;\n\t#else\n\t\tuniform highp sampler2D morphNormalTex;\n\t#endif\n#endif\nvec3 getLocalNormal(vec3 vertexNormal) {\n\tvec3 localNormal = vertex_normal;\n\t#ifdef MORPHING_NORMAL\n\t\tivec2 morphUV = getTextureMorphCoords();\n\t\t#ifdef MORPHING_INT\n\t\t\tvec3 morphNormal = vec3(texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz) / 65535.0 * 2.0 - 1.0;\n\t\t#else\n\t\t\tvec3 morphNormal = texelFetch(morphNormalTex, ivec2(morphUV), 0).xyz;\n\t\t#endif\n\t\tlocalNormal += morphNormal;\n\t#endif\n\treturn localNormal;\n}\n#if defined(SKIN) || defined(BATCH)\n\tmat3 getNormalMatrix(mat4 modelMatrix) {\n\t\treturn mat3(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#elif defined(INSTANCING)\n\tmat3 getNormalMatrix(mat4 modelMatrix) {\n\t\treturn mat3(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#else\n\tmat3 getNormalMatrix(mat4 modelMatrix) {\n\t\treturn matrix_normal;\n\t}\n#endif\n`;\n\nvar normalMapPS$1 = `\n#ifdef STD_NORMAL_TEXTURE\n\tuniform float material_bumpiness;\n#endif\n#ifdef STD_NORMALDETAIL_TEXTURE\n\tuniform float material_normalDetailMapBumpiness;\n\tvec3 blendNormals(vec3 n1, vec3 n2) {\n\t\tn1 += vec3(0, 0, 1);\n\t\tn2 *= vec3(-1, -1, 1);\n\t\treturn n1 * dot(n1, n2) / n1.z - n2;\n\t}\n#endif\nvoid getNormal() {\n#ifdef STD_NORMAL_TEXTURE\n\tvec3 normalMap = {STD_NORMAL_TEXTURE_DECODE}(texture2DBias({STD_NORMAL_TEXTURE_NAME}, {STD_NORMAL_TEXTURE_UV}, textureBias));\n\tnormalMap = mix(vec3(0.0, 0.0, 1.0), normalMap, material_bumpiness);\n\t#ifdef STD_NORMALDETAIL_TEXTURE\n\t\tvec3 normalDetailMap = {STD_NORMALDETAIL_TEXTURE_DECODE}(texture2DBias({STD_NORMALDETAIL_TEXTURE_NAME}, {STD_NORMALDETAIL_TEXTURE_UV}, textureBias));\n\t\tnormalDetailMap = mix(vec3(0.0, 0.0, 1.0), normalDetailMap, material_normalDetailMapBumpiness);\n\t\tnormalMap = blendNormals(normalMap, normalDetailMap);\n\t#endif\n\tdNormalW = normalize(dTBN * normalMap);\n#else\n\tdNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar opacityPS$1 = `\nuniform float material_opacity;\nvoid getOpacity() {\n\tdAlpha = material_opacity;\n\t#ifdef STD_OPACITY_TEXTURE\n\tdAlpha *= texture2DBias({STD_OPACITY_TEXTURE_NAME}, {STD_OPACITY_TEXTURE_UV}, textureBias).{STD_OPACITY_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_OPACITY_VERTEX\n\tdAlpha *= clamp(vVertexColor.{STD_OPACITY_VERTEX_CHANNEL}, 0.0, 1.0);\n\t#endif\n}\n`;\n\nvar opacityDitherPS$1 = `\n#if STD_OPACITY_DITHER == BAYER8\n\t#include \"bayerPS\"\n#endif\nuniform vec4 blueNoiseJitter;\n#if STD_OPACITY_DITHER == BLUENOISE\n\tuniform sampler2D blueNoiseTex32;\n#endif\nvoid opacityDither(float alpha, float id) {\n\t#if STD_OPACITY_DITHER == BAYER8\n\t\tfloat noise = bayer8(floor(mod(gl_FragCoord.xy + blueNoiseJitter.xy + id, 8.0))) / 64.0;\n\t#else\n\t\t#if STD_OPACITY_DITHER == BLUENOISE\n\t\t\tvec2 uv = fract(gl_FragCoord.xy / 32.0 + blueNoiseJitter.xy + id);\n\t\t\tfloat noise = texture2DLod(blueNoiseTex32, uv, 0.0).y;\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER == IGNNOISE\n\t\t\tvec3 magic = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\t\tfloat noise = fract(magic.z * fract(dot(gl_FragCoord.xy + blueNoiseJitter.xy + id, magic.xy)));\n\t\t#endif\n\t#endif\n\tnoise = pow(noise, 2.2);\n\tif (alpha < noise)\n\t\tdiscard;\n}\n`;\n\nvar outputPS$1 = `\n`;\n\nvar outputAlphaPS$1 = `\n#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == ADDITIVEALPHA || defined(LIT_ALPHA_TO_COVERAGE)\n\tgl_FragColor.a = litArgs_opacity;\n#elif LIT_BLEND_TYPE == PREMULTIPLIED\n\tgl_FragColor.rgb *= litArgs_opacity;\n\tgl_FragColor.a = litArgs_opacity;\n#else\n\tgl_FragColor.a = 1.0;\n#endif\n`;\n\nvar outputTex2DPS$1 = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nvoid main(void) {\n\tgl_FragColor = texture2D(source, vUv0);\n}\n`;\n\nvar sheenPS$1 = `\nuniform vec3 material_sheen;\nvoid getSheen() {\n\tvec3 sheenColor = material_sheen;\n\t#ifdef STD_SHEEN_TEXTURE\n\tsheenColor *= {STD_SHEEN_TEXTURE_DECODE}(texture2DBias({STD_SHEEN_TEXTURE_NAME}, {STD_SHEEN_TEXTURE_UV}, textureBias)).{STD_SHEEN_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEEN_VERTEX\n\tsheenColor *= saturate(vVertexColor.{STD_SHEEN_VERTEX_CHANNEL});\n\t#endif\n\tsSpecularity = sheenColor;\n}\n`;\n\nvar sheenGlossPS$1 = `\nuniform float material_sheenGloss;\nvoid getSheenGlossiness() {\n\tfloat sheenGlossiness = material_sheenGloss;\n\t#ifdef STD_SHEENGLOSS_TEXTURE\n\tsheenGlossiness *= texture2DBias({STD_SHEENGLOSS_TEXTURE_NAME}, {STD_SHEENGLOSS_TEXTURE_UV}, textureBias).{STD_SHEENGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEENGLOSS_VERTEX\n\tsheenGlossiness *= saturate(vVertexColor.{STD_SHEENGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_SHEENGLOSS_INVERT\n\tsheenGlossiness = 1.0 - sheenGlossiness;\n\t#endif\n\tsGlossiness = sheenGlossiness + 0.0000001;\n}\n`;\n\nvar parallaxPS$1 = `\nuniform float material_heightMapFactor;\nvoid getParallax() {\n\tfloat parallaxScale = material_heightMapFactor;\n\tfloat height = texture2DBias({STD_HEIGHT_TEXTURE_NAME}, {STD_HEIGHT_TEXTURE_UV}, textureBias).{STD_HEIGHT_TEXTURE_CHANNEL};\n\theight = height * parallaxScale - parallaxScale * 0.5;\n\tvec3 viewDirT = dViewDirW * dTBN;\n\tviewDirT.z += 0.42;\n\tdUvOffset = height * (viewDirT.xy / viewDirT.z);\n}\n`;\n\nvar pickPS$1 = `\nuniform uint meshInstanceId;\nvec4 getPickOutput() {\n\tconst vec4 inv = vec4(1.0 / 255.0);\n\tconst uvec4 shifts = uvec4(16, 8, 0, 24);\n\tuvec4 col = (uvec4(meshInstanceId) >> shifts) & uvec4(0xff);\n\treturn vec4(col) * inv;\n}\n`;\n\nvar reflDirPS$1 = `\nvoid getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) {\n\tdReflDirW = normalize(-reflect(viewDir, worldNormal));\n}\n`;\n\nvar reflDirAnisoPS$1 = `\nvoid getReflDir(vec3 worldNormal, vec3 viewDir, float gloss, mat3 tbn) {\n\tfloat roughness = sqrt(1.0 - min(gloss, 1.0));\n\tvec2 direction = dAnisotropyRotation;\n\tvec3 anisotropicT = normalize(tbn * vec3(direction, 0.0));\n\tvec3 anisotropicB = normalize(cross(tbn[2], anisotropicT));\n\tfloat anisotropy = dAnisotropy;\n\tvec3 anisotropicDirection = anisotropicB;\n\tvec3 anisotropicTangent = cross(anisotropicDirection, viewDir);\n\tvec3 anisotropicNormal = cross(anisotropicTangent, anisotropicDirection);\n\tfloat bendFactor = 1.0 - anisotropy * (1.0 - roughness);\n\tfloat bendFactor4 = bendFactor * bendFactor * bendFactor * bendFactor;\n\tvec3 bentNormal = normalize(mix(normalize(anisotropicNormal), normalize(worldNormal), bendFactor4));\n\tdReflDirW = reflect(-viewDir, bentNormal);\n}\n`;\n\nvar reflectionCCPS$1 = `\n#ifdef LIT_CLEARCOAT\nvoid addReflectionCC(vec3 reflDir, float gloss) {\n\tccReflection += calcReflection(reflDir, gloss);\n}\n#endif\n`;\n\nvar reflectionCubePS$1 = `\nuniform samplerCube texture_cubeMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 lookupVec = cubeMapProject(reflDir);\n\tlookupVec.x *= -1.0;\n\treturn {reflectionDecode}(textureCube(texture_cubeMap, lookupVec));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionEnvHQPS$1 = `\n#ifndef ENV_ATLAS\n\t#define ENV_ATLAS\n\tuniform sampler2D texture_envAtlas;\n#endif\nuniform samplerCube texture_cubeMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(dir);\n\tfloat level = saturate(1.0 - gloss) * 5.0;\n\tfloat ilevel = floor(level);\n\tfloat flevel = level - ilevel;\n\tvec3 sharp = {reflectionCubemapDecode}(textureCube(texture_cubeMap, dir));\n\tvec3 roughA = {reflectionDecode}(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel)));\n\tvec3 roughB = {reflectionDecode}(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0)));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionEnvPS$1 = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\n\tuniform sampler2D texture_envAtlas;\n#endif\nuniform float material_reflectivity;\nfloat shinyMipLevel(vec2 uv) {\n\tvec2 dx = dFdx(uv);\n\tvec2 dy = dFdy(uv);\n\tvec2 uv2 = vec2(fract(uv.x + 0.5), uv.y);\n\tvec2 dx2 = dFdx(uv2);\n\tvec2 dy2 = dFdy(uv2);\n\tfloat maxd = min(max(dot(dx, dx), dot(dy, dy)), max(dot(dx2, dx2), dot(dy2, dy2)));\n\treturn clamp(0.5 * log2(maxd) - 1.0 + textureBias, 0.0, 5.0);\n}\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 dir = cubeMapProject(reflDir) * vec3(-1.0, 1.0, 1.0);\n\tvec2 uv = toSphericalUv(dir);\n\tfloat level = saturate(1.0 - gloss) * 5.0;\n\tfloat ilevel = floor(level);\n\tfloat level2 = shinyMipLevel(uv * atlasSize);\n\tfloat ilevel2 = floor(level2);\n\tvec2 uv0, uv1;\n\tfloat weight;\n\tif (ilevel == 0.0) {\n\t\tuv0 = mapShinyUv(uv, ilevel2);\n\t\tuv1 = mapShinyUv(uv, ilevel2 + 1.0);\n\t\tweight = level2 - ilevel2;\n\t} else {\n\t\tuv0 = uv1 = mapRoughnessUv(uv, ilevel);\n\t\tweight = 0.0;\n\t}\n\tvec3 linearA = {reflectionDecode}(texture2D(texture_envAtlas, uv0));\n\tvec3 linearB = {reflectionDecode}(texture2D(texture_envAtlas, uv1));\n\tvec3 linear0 = mix(linearA, linearB, weight);\n\tvec3 linear1 = {reflectionDecode}(texture2D(texture_envAtlas, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(linear0, linear1, level - ilevel));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionSpherePS$1 = `\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\nuniform sampler2D texture_sphereMap;\nuniform float material_reflectivity;\nvec3 calcReflection(vec3 reflDir, float gloss) {\n\tvec3 reflDirV = (mat3(matrix_view) * reflDir);\n\tfloat m = 2.0 * sqrt(dot(reflDirV.xy, reflDirV.xy) + (reflDirV.z + 1.0) * (reflDirV.z + 1.0));\n\tvec2 sphereMapUv = reflDirV.xy / m + 0.5;\n\treturn {reflectionDecode}(texture2D(texture_sphereMap, sphereMapUv));\n}\nvoid addReflection(vec3 reflDir, float gloss) {   \n\tdReflection += vec4(calcReflection(reflDir, gloss), material_reflectivity);\n}\n`;\n\nvar reflectionSheenPS$1 = `\nvoid addReflectionSheen(vec3 worldNormal, vec3 viewDir, float gloss) {\n\tfloat NoV = dot(worldNormal, viewDir);\n\tfloat alphaG = gloss * gloss;\n\tfloat a = gloss < 0.25 ? -339.2 * alphaG + 161.4 * gloss - 25.9 : -8.48 * alphaG + 14.3 * gloss - 9.95;\n\tfloat b = gloss < 0.25 ? 44.0 * alphaG - 23.7 * gloss + 3.26 : 1.97 * alphaG - 3.27 * gloss + 0.72;\n\tfloat DG = exp( a * NoV + b ) + ( gloss < 0.25 ? 0.0 : 0.1 * ( gloss - 0.25 ) );\n\tsReflection += calcReflection(worldNormal, 0.0) * saturate(DG);\n}\n`;\n\nvar refractionCubePS$1 = `\nvec3 refract2(vec3 viewVec, vec3 normal, float IOR) {\n\tfloat vn = dot(viewVec, normal);\n\tfloat k = 1.0 - IOR * IOR * (1.0 - vn * vn);\n\tvec3 refrVec = IOR * viewVec - (IOR * vn + sqrt(k)) * normal;\n\treturn refrVec;\n}\nvoid addRefraction(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tfloat thickness, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 albedo, \n\tfloat transmission,\n\tfloat refractionIndex,\n\tfloat dispersion\n#if defined(LIT_IRIDESCENCE)\n\t, vec3 iridescenceFresnel,\n\tfloat iridescenceIntensity\n#endif \n) {\n\tvec4 tmpRefl = dReflection;\n\tvec3 reflectionDir = refract2(-viewDir, worldNormal, refractionIndex);\n\tdReflection = vec4(0);\n\taddReflection(reflectionDir, gloss);\n\tdDiffuseLight = mix(dDiffuseLight, dReflection.rgb * albedo, transmission);\n\tdReflection = tmpRefl;\n}\n`;\n\nvar refractionDynamicPS$1 = `\nuniform float material_invAttenuationDistance;\nuniform vec3 material_attenuation;\nvec3 evalRefractionColor(vec3 refractionVector, float gloss, float refractionIndex) {\n\tvec4 pointOfRefraction = vec4(vPositionW + refractionVector, 1.0);\n\tvec4 projectionPoint = matrix_viewProjection * pointOfRefraction;\n\tvec2 uv = getGrabScreenPos(projectionPoint);\n\tfloat iorToRoughness = (1.0 - gloss) * clamp((1.0 / refractionIndex) * 2.0 - 2.0, 0.0, 1.0);\n\tfloat refractionLod = log2(uScreenSize.x) * iorToRoughness;\n\tvec3 refraction = texture2DLod(uSceneColorMap, uv, refractionLod).rgb;\n\treturn refraction;\n}\nvoid addRefraction(\n\tvec3 worldNormal, \n\tvec3 viewDir, \n\tfloat thickness, \n\tfloat gloss, \n\tvec3 specularity, \n\tvec3 albedo, \n\tfloat transmission,\n\tfloat refractionIndex,\n\tfloat dispersion\n#if defined(LIT_IRIDESCENCE)\n\t, vec3 iridescenceFresnel,\n\tfloat iridescenceIntensity\n#endif\n) {\n\tvec3 modelScale;\n\tmodelScale.x = length(vec3(matrix_model[0].xyz));\n\tmodelScale.y = length(vec3(matrix_model[1].xyz));\n\tmodelScale.z = length(vec3(matrix_model[2].xyz));\n\tvec3 scale = thickness * modelScale;\n\tvec3 refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndex)) * scale;\n\tvec3 refraction = evalRefractionColor(refractionVector, gloss, refractionIndex);\n\t#ifdef LIT_DISPERSION\n\t\tfloat halfSpread = (1.0 / refractionIndex - 1.0) * 0.025 * dispersion;\n\t\tfloat refractionIndexR = refractionIndex - halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexR)) * scale;\n\t\trefraction.r = evalRefractionColor(refractionVector, gloss, refractionIndexR).r;\n\t\tfloat refractionIndexB = refractionIndex + halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexB)) * scale;\n\t\trefraction.b = evalRefractionColor(refractionVector, gloss, refractionIndexB).b;\n\t#endif\n\tvec3 transmittance;\n\tif (material_invAttenuationDistance != 0.0)\n\t{\n\t\tvec3 attenuation = -log(material_attenuation) * material_invAttenuationDistance;\n\t\ttransmittance = exp(-attenuation * length(refractionVector));\n\t}\n\telse\n\t{\n\t\ttransmittance = refraction;\n\t}\n\tvec3 fresnel = vec3(1.0) - \n\t\tgetFresnel(\n\t\t\tdot(viewDir, worldNormal), \n\t\t\tgloss, \n\t\t\tspecularity\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tiridescenceIntensity\n\t\t#endif\n\t\t);\n\tdDiffuseLight = mix(dDiffuseLight, refraction * transmittance * fresnel, transmission);\n}\n`;\n\nvar reprojectPS$1 = `\nvarying vec2 vUv0;\n#ifdef CUBEMAP_SOURCE\n\tuniform samplerCube sourceCube;\n#else\n\tuniform sampler2D sourceTex;\n#endif\n#ifdef USE_SAMPLES_TEX\n\tuniform sampler2D samplesTex;\n\tuniform vec2 samplesTexInverseSize;\n#endif\nuniform vec3 params;\nfloat targetFace() { return params.x; }\nfloat targetTotalPixels() { return params.y; }\nfloat sourceTotalPixels() { return params.z; }\nfloat PI = 3.141592653589793;\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\n#include \"decodePS\"\n#include \"encodePS\"\nvec3 modifySeams(vec3 dir, float scale) {\n\tvec3 adir = abs(dir);\n\tfloat M = max(max(adir.x, adir.y), adir.z);\n\treturn dir / M * vec3(\n\t\tadir.x == M ? 1.0 : scale,\n\t\tadir.y == M ? 1.0 : scale,\n\t\tadir.z == M ? 1.0 : scale\n\t);\n}\nvec2 toSpherical(vec3 dir) {\n\treturn vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y));\n}\nvec3 fromSpherical(vec2 uv) {\n\treturn vec3(cos(uv.y) * sin(uv.x),\n\t\t\t\tsin(uv.y),\n\t\t\t\tcos(uv.y) * cos(uv.x));\n}\nvec3 getDirectionEquirect() {\n\treturn fromSpherical((vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0) * vec2(PI, PI * 0.5));\n}\nfloat signNotZero(float k){\n\treturn(k >= 0.0) ? 1.0 : -1.0;\n}\nvec2 signNotZero(vec2 v) {\n\treturn vec2(signNotZero(v.x), signNotZero(v.y));\n}\nvec3 octDecode(vec2 o) {\n\tvec3 v = vec3(o.x, 1.0 - abs(o.x) - abs(o.y), o.y);\n\tif (v.y < 0.0) {\n\t\tv.xz = (1.0 - abs(v.zx)) * signNotZero(v.xz);\n\t}\n\treturn normalize(v);\n}\nvec3 getDirectionOctahedral() {\n\treturn octDecode(vec2(vUv0.x, 1.0 - vUv0.y) * 2.0 - 1.0);\n}\nvec2 octEncode(in vec3 v) {\n\tfloat l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\tvec2 result = v.xz * (1.0 / l1norm);\n\tif (v.y < 0.0) {\n\t\tresult = (1.0 - abs(result.yx)) * signNotZero(result.xy);\n\t}\n\treturn result;\n}\n#ifdef CUBEMAP_SOURCE\n\tvec4 sampleCubemap(vec3 dir) {\n\t\treturn textureCube(sourceCube, modifySeams(dir, 1.0));\n\t}\n\tvec4 sampleCubemap(vec2 sph) {\n\t\treturn sampleCubemap(fromSpherical(sph));\n\t}\n\tvec4 sampleCubemap(vec3 dir, float mipLevel) {\n\t\treturn textureCubeLod(sourceCube, modifySeams(dir, 1.0), mipLevel);\n\t}\n\tvec4 sampleCubemap(vec2 sph, float mipLevel) {\n\t\treturn sampleCubemap(fromSpherical(sph), mipLevel);\n\t}\n#else\n\tvec4 sampleEquirect(vec2 sph) {\n\t\tvec2 uv = sph / vec2(PI * 2.0, PI) + 0.5;\n\t\treturn texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y));\n\t}\n\tvec4 sampleEquirect(vec3 dir) {\n\t\treturn sampleEquirect(toSpherical(dir));\n\t}\n\tvec4 sampleEquirect(vec2 sph, float mipLevel) {\n\t\tvec2 uv = sph / vec2(PI * 2.0, PI) + 0.5;\n\t\treturn texture2DLod(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tvec4 sampleEquirect(vec3 dir, float mipLevel) {\n\t\treturn sampleEquirect(toSpherical(dir), mipLevel);\n\t}\n\tvec4 sampleOctahedral(vec3 dir) {\n\t\tvec2 uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn texture2D(sourceTex, vec2(uv.x, 1.0 - uv.y));\n\t}\n\tvec4 sampleOctahedral(vec2 sph) {\n\t\treturn sampleOctahedral(fromSpherical(sph));\n\t}\n\tvec4 sampleOctahedral(vec3 dir, float mipLevel) {\n\t\tvec2 uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn texture2DLod(sourceTex, vec2(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tvec4 sampleOctahedral(vec2 sph, float mipLevel) {\n\t\treturn sampleOctahedral(fromSpherical(sph), mipLevel);\n\t}\n#endif\nvec3 getDirectionCubemap() {\n\tvec2 st = vUv0 * 2.0 - 1.0;\n\tfloat face = targetFace();\n\tvec3 vec;\n\tif (face == 0.0) {\n\t\tvec = vec3(1, -st.y, -st.x);\n\t} else if (face == 1.0) {\n\t\tvec = vec3(-1, -st.y, st.x);\n\t} else if (face == 2.0) {\n\t\tvec = vec3(st.x, 1, st.y);\n\t} else if (face == 3.0) {\n\t\tvec = vec3(st.x, -1, -st.y);\n\t} else if (face == 4.0) {\n\t\tvec = vec3(st.x, -st.y, 1);\n\t} else {\n\t\tvec = vec3(-st.x, -st.y, -1);\n\t}\n\treturn normalize(modifySeams(vec, 1.0));\n}\nmat3 matrixFromVector(vec3 n) {\n\tfloat a = 1.0 / (1.0 + n.z);\n\tfloat b = -n.x * n.y * a;\n\tvec3 b1 = vec3(1.0 - n.x * n.x * a, b, -n.x);\n\tvec3 b2 = vec3(b, 1.0 - n.y * n.y * a, -n.y);\n\treturn mat3(b1, b2, n);\n}\nmat3 matrixFromVectorSlow(vec3 n) {\n\tvec3 up = (1.0 - abs(n.y) <= 0.0000001) ? vec3(0.0, 0.0, n.y > 0.0 ? 1.0 : -1.0) : vec3(0.0, 1.0, 0.0);\n\tvec3 x = normalize(cross(up, n));\n\tvec3 y = cross(n, x);\n\treturn mat3(x, y, n);\n}\nvec4 reproject() {\n\tif ({NUM_SAMPLES} <= 1) {\n\t\treturn {ENCODE_FUNC}({DECODE_FUNC}({SOURCE_FUNC}({TARGET_FUNC}())));\n\t} else {\n\t\tvec3 t = {TARGET_FUNC}();\n\t\tvec3 tu = dFdx(t);\n\t\tvec3 tv = dFdy(t);\n\t\tvec3 result = vec3(0.0);\n\t\tfor (float u = 0.0; u < {NUM_SAMPLES_SQRT}; ++u) {\n\t\t\tfor (float v = 0.0; v < {NUM_SAMPLES_SQRT}; ++v) {\n\t\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}(normalize(t +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttu * (u / {NUM_SAMPLES_SQRT} - 0.5) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttv * (v / {NUM_SAMPLES_SQRT} - 0.5))));\n\t\t\t}\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / ({NUM_SAMPLES_SQRT} * {NUM_SAMPLES_SQRT}));\n\t}\n}\nvec4 unpackFloat = vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0);\n#ifdef USE_SAMPLES_TEX\n\tvoid unpackSample(int i, out vec3 L, out float mipLevel) {\n\t\tfloat u = (float(i * 4) + 0.5) * samplesTexInverseSize.x;\n\t\tfloat v = (floor(u) + 0.5) * samplesTexInverseSize.y;\n\t\tvec4 raw;\n\t\traw.x = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.y = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.z = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat); u += samplesTexInverseSize.x;\n\t\traw.w = dot(texture2D(samplesTex, vec2(u, v)), unpackFloat);\n\t\tL.xyz = raw.xyz * 2.0 - 1.0;\n\t\tmipLevel = raw.w * 8.0;\n\t}\n\tvec4 prefilterSamples() {\n\t\tmat3 vecSpace = matrixFromVectorSlow({TARGET_FUNC}());\n\t\tvec3 L;\n\t\tfloat mipLevel;\n\t\tvec3 result = vec3(0.0);\n\t\tfloat totalWeight = 0.0;\n\t\tfor (int i = 0; i < {NUM_SAMPLES}; ++i) {\n\t\t\tunpackSample(i, L, mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}(vecSpace * L, mipLevel)) * L.z;\n\t\t\ttotalWeight += L.z;\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / totalWeight);\n\t}\n\tvec4 prefilterSamplesUnweighted() {\n\t\tmat3 vecSpace = matrixFromVectorSlow({TARGET_FUNC}());\n\t\tvec3 L;\n\t\tfloat mipLevel;\n\t\tvec3 result = vec3(0.0);\n\t\tfloat totalWeight = 0.0;\n\t\tfor (int i = 0; i < {NUM_SAMPLES}; ++i) {\n\t\t\tunpackSample(i, L, mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}(vecSpace * L, mipLevel));\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / float({NUM_SAMPLES}));\n\t}\n#endif\nvoid main(void) {\n\tgl_FragColor = {PROCESS_FUNC}();\n}\n`;\n\nvar reprojectVS$1 = `\nattribute vec2 vertex_position;\nuniform vec4 uvMod;\nvarying vec2 vUv0;\nvoid main(void) {\n\tgl_Position = vec4(vertex_position, 0.5, 1.0);\n\tvUv0 = getImageEffectUV((vertex_position.xy * 0.5 + 0.5) * uvMod.xy + uvMod.zw);\n}\n`;\n\nvar screenDepthPS$1 = `\nuniform highp sampler2D uSceneDepthMap;\n#ifndef SCREENSIZE\n\t#define SCREENSIZE\n\tuniform vec4 uScreenSize;\n#endif\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\n#ifndef LINEARIZE_DEPTH\n\t#define LINEARIZE_DEPTH\n\t\n\t#ifndef CAMERAPLANES\n\t\t#define CAMERAPLANES\n\t\tuniform vec4 camera_params;\n\t#endif\n\tfloat linearizeDepth(float z) {\n\t\tif (camera_params.w == 0.0)\n\t\t\treturn (camera_params.z * camera_params.y) / (camera_params.y + z * (camera_params.z - camera_params.y));\n\t\telse\n\t\t\treturn camera_params.z + z * (camera_params.y - camera_params.z);\n\t}\n#endif\nfloat delinearizeDepth(float linearDepth) {\n\tif (camera_params.w == 0.0) {\n\t\treturn (camera_params.y * (camera_params.z - linearDepth)) / (linearDepth * (camera_params.z - camera_params.y));\n\t} else {\n\t\treturn (linearDepth - camera_params.z) / (camera_params.y - camera_params.z);\n\t}\n}\nfloat getLinearScreenDepth(vec2 uv) {\n\t#ifdef SCENE_DEPTHMAP_LINEAR\n\t\t#ifdef SCENE_DEPTHMAP_FLOAT\n\t\t\treturn texture2D(uSceneDepthMap, uv).r;\n\t\t#else\n\t\t\tivec2 textureSize = textureSize(uSceneDepthMap, 0);\n\t\t\tivec2 texel = ivec2(uv * vec2(textureSize));\n\t\t\tvec4 data = texelFetch(uSceneDepthMap, texel, 0);\n\t\t\tuint intBits = \n\t\t\t\t(uint(data.r * 255.0) << 24u) |\n\t\t\t\t(uint(data.g * 255.0) << 16u) |\n\t\t\t\t(uint(data.b * 255.0) << 8u) |\n\t\t\t\tuint(data.a * 255.0);\n\t\t\treturn uintBitsToFloat(intBits);\n\t\t#endif\n\t#else\n\t\treturn linearizeDepth(texture2D(uSceneDepthMap, uv).r);\n\t#endif\n}\n#ifndef VERTEXSHADER\n\tfloat getLinearScreenDepth() {\n\t\tvec2 uv = gl_FragCoord.xy * uScreenSize.zw;\n\t\treturn getLinearScreenDepth(uv);\n\t}\n#endif\nfloat getLinearDepth(vec3 pos) {\n\treturn -(matrix_view * vec4(pos, 1.0)).z;\n}\n`;\n\nvar shadowCascadesPS$1 = `\nint getShadowCascadeIndex(vec4 shadowCascadeDistances, int shadowCascadeCount) {\n\tfloat depth = 1.0 / gl_FragCoord.w;\n\tvec4 comparisons = step(shadowCascadeDistances, vec4(depth));\n\tint cascadeIndex = int(dot(comparisons, vec4(1.0)));\n\treturn min(cascadeIndex, shadowCascadeCount - 1);\n}\nint ditherShadowCascadeIndex(int cascadeIndex, vec4 shadowCascadeDistances, int shadowCascadeCount, float blendFactor) {\n \n\tif (cascadeIndex < shadowCascadeCount - 1) {\n\t\tfloat currentRangeEnd = shadowCascadeDistances[cascadeIndex];\n\t\tfloat transitionStart = blendFactor * currentRangeEnd;\n\t\tfloat depth = 1.0 / gl_FragCoord.w;\n\t\tif (depth > transitionStart) {\n\t\t\tfloat transitionFactor = smoothstep(transitionStart, currentRangeEnd, depth);\n\t\t\tfloat dither = fract(sin(dot(gl_FragCoord.xy, vec2(12.9898, 78.233))) * 43758.5453);\n\t\t\tif (dither < transitionFactor) {\n\t\t\t\tcascadeIndex += 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn cascadeIndex;\n}\nvec3 fadeShadow(vec3 shadowCoord, vec4 shadowCascadeDistances) {\t\t\t\t  \n\tfloat depth = 1.0 / gl_FragCoord.w;\n\tif (depth > shadowCascadeDistances.w) {\n\t\tshadowCoord.z = -9999999.0;\n\t}\n\treturn shadowCoord;\n}\n`;\n\nvar shadowEVSMPS$1 = `\nfloat linstep(float a, float b, float v) {\n\treturn saturate((v - a) / (b - a));\n}\nfloat reduceLightBleeding(float pMax, float amount) {\n\t return linstep(amount, 1.0, pMax);\n}\nfloat chebyshevUpperBound(vec2 moments, float mean, float minVariance, float lightBleedingReduction) {\n\tfloat variance = moments.y - (moments.x * moments.x);\n\tvariance = max(variance, minVariance);\n\tfloat d = mean - moments.x;\n\tfloat pMax = variance / (variance + (d * d));\n\tpMax = reduceLightBleeding(pMax, lightBleedingReduction);\n\treturn (mean <= moments.x ? 1.0 : pMax);\n}\nfloat calculateEVSM(vec3 moments, float Z, float vsmBias, float exponent) {\n\tZ = 2.0 * Z - 1.0;\n\tfloat warpedDepth = exp(exponent * Z);\n\tmoments.xy += vec2(warpedDepth, warpedDepth*warpedDepth) * (1.0 - moments.z);\n\tfloat VSMBias = vsmBias;\n\tfloat depthScale = VSMBias * exponent * warpedDepth;\n\tfloat minVariance1 = depthScale * depthScale;\n\treturn chebyshevUpperBound(moments.xy, warpedDepth, minVariance1, 0.1);\n}\nfloat VSM16(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\tvec3 moments = texture2DLod(tex, texCoords, 0.0).xyz;\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfloat getShadowVSM16(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent) {\n\treturn VSM16(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfloat getShadowSpotVSM16(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\treturn VSM16(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, length(lightDir) * shadowParams.w + shadowParams.z, shadowParams.y, exponent);\n}\nfloat VSM32(TEXTURE_ACCEPT(tex), vec2 texCoords, float resolution, float Z, float vsmBias, float exponent) {\n\t#ifdef CAPS_TEXTURE_FLOAT_FILTERABLE\n\t\tvec3 moments = texture2DLod(tex, texCoords, 0.0).xyz;\n\t#else\n\t\tfloat pixelSize = 1.0 / resolution;\n\t\ttexCoords -= vec2(pixelSize);\n\t\tvec3 s00 = texture2DLod(tex, texCoords, 0.0).xyz;\n\t\tvec3 s10 = texture2DLod(tex, texCoords + vec2(pixelSize, 0), 0.0).xyz;\n\t\tvec3 s01 = texture2DLod(tex, texCoords + vec2(0, pixelSize), 0.0).xyz;\n\t\tvec3 s11 = texture2DLod(tex, texCoords + vec2(pixelSize), 0.0).xyz;\n\t\tvec2 fr = fract(texCoords * resolution);\n\t\tvec3 h0 = mix(s00, s10, fr.x);\n\t\tvec3 h1 = mix(s01, s11, fr.x);\n\t\tvec3 moments = mix(h0, h1, fr.y);\n\t#endif\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfloat getShadowVSM32(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent) {\n\treturn VSM32(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfloat getShadowSpotVSM32(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, float exponent, vec3 lightDir) {\n\tfloat Z = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn VSM32(TEXTURE_PASS(shadowMap), shadowCoord.xy, shadowParams.x, Z, shadowParams.y, exponent);\n}\n`;\n\nvar shadowPCF1PS$1 = `\nfloat getShadowPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\nfloat getShadowSpotPCF1x1(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn textureShadow(shadowMap, shadowCoord);\n}\n#ifndef WEBGPU\nfloat getShadowOmniPCF1x1(samplerCubeShadow shadowMap, vec3 shadowCoord, vec4 shadowParams, vec3 lightDir) {\n\tfloat shadowZ = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn texture(shadowMap, vec4(lightDir, shadowZ));\n}\n#endif\n`;\n\nvar shadowPCF3PS$1 = `\nfloat _getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) {\n\tfloat z = shadowCoord.z;\n\tvec2 uv = shadowCoord.xy * shadowParams.x;\n\tfloat shadowMapSizeInv = 1.0 / shadowParams.x;\n\tvec2 base_uv = floor(uv + 0.5);\n\tfloat s = (uv.x + 0.5 - base_uv.x);\n\tfloat t = (uv.y + 0.5 - base_uv.y); \n\tbase_uv -= vec2(0.5);\n\tbase_uv *= shadowMapSizeInv;\n\tfloat sum = 0.0;\n\tfloat uw0 = (3.0 - 2.0 * s);\n\tfloat uw1 = (1.0 + 2.0 * s);\n\tfloat u0 = (2.0 - s) / uw0 - 1.0;\n\tfloat u1 = s / uw1 + 1.0;\n\tfloat vw0 = (3.0 - 2.0 * t);\n\tfloat vw1 = (1.0 + 2.0 * t);\n\tfloat v0 = (2.0 - t) / vw0 - 1.0;\n\tfloat v1 = t / vw1 + 1.0;\n\tu0 = u0 * shadowMapSizeInv + base_uv.x;\n\tv0 = v0 * shadowMapSizeInv + base_uv.y;\n\tu1 = u1 * shadowMapSizeInv + base_uv.x;\n\tv1 = v1 * shadowMapSizeInv + base_uv.y;\n\tsum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z));\n\tsum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z));\n\tsum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z));\n\tsum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z));\n\tsum *= 1.0f / 16.0;\n\treturn sum;\n}\nfloat getShadowPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF3x3(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF3x3(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\n#ifndef WEBGPU\nfloat getShadowOmniPCF3x3(samplerCubeShadow shadowMap, vec4 shadowParams, vec3 dir) {\n\t\n\tfloat shadowZ = length(dir) * shadowParams.w + shadowParams.z;\n\tfloat z = 1.0 / float(textureSize(shadowMap, 0));\n\tvec3 tc = normalize(dir);\n\tmediump vec4 shadows;\n\tshadows.x = texture(shadowMap, vec4(tc + vec3( z, z, z), shadowZ));\n\tshadows.y = texture(shadowMap, vec4(tc + vec3(-z,-z, z), shadowZ));\n\tshadows.z = texture(shadowMap, vec4(tc + vec3(-z, z,-z), shadowZ));\n\tshadows.w = texture(shadowMap, vec4(tc + vec3( z,-z,-z), shadowZ));\n\treturn dot(shadows, vec4(0.25));\n}\nfloat getShadowOmniPCF3x3(samplerCubeShadow shadowMap, vec3 shadowCoord, vec4 shadowParams, vec3 lightDir) {\n\treturn getShadowOmniPCF3x3(shadowMap, shadowParams, lightDir);\n}\n#endif\n`;\n\nvar shadowPCF5PS$1 = `\nfloat _getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec3 shadowParams) {\n\tfloat z = shadowCoord.z;\n\tvec2 uv = shadowCoord.xy * shadowParams.x;\n\tfloat shadowMapSizeInv = 1.0 / shadowParams.x;\n\tvec2 base_uv = floor(uv + 0.5);\n\tfloat s = (uv.x + 0.5 - base_uv.x);\n\tfloat t = (uv.y + 0.5 - base_uv.y);\n\tbase_uv -= vec2(0.5);\n\tbase_uv *= shadowMapSizeInv;\n\tfloat uw0 = (4.0 - 3.0 * s);\n\tfloat uw1 = 7.0;\n\tfloat uw2 = (1.0 + 3.0 * s);\n\tfloat u0 = (3.0 - 2.0 * s) / uw0 - 2.0;\n\tfloat u1 = (3.0 + s) / uw1;\n\tfloat u2 = s / uw2 + 2.0;\n\tfloat vw0 = (4.0 - 3.0 * t);\n\tfloat vw1 = 7.0;\n\tfloat vw2 = (1.0 + 3.0 * t);\n\tfloat v0 = (3.0 - 2.0 * t) / vw0 - 2.0;\n\tfloat v1 = (3.0 + t) / vw1;\n\tfloat v2 = t / vw2 + 2.0;\n\tfloat sum = 0.0;\n\tu0 = u0 * shadowMapSizeInv + base_uv.x;\n\tv0 = v0 * shadowMapSizeInv + base_uv.y;\n\tu1 = u1 * shadowMapSizeInv + base_uv.x;\n\tv1 = v1 * shadowMapSizeInv + base_uv.y;\n\tu2 = u2 * shadowMapSizeInv + base_uv.x;\n\tv2 = v2 * shadowMapSizeInv + base_uv.y;\n\tsum += uw0 * vw0 * textureShadow(shadowMap, vec3(u0, v0, z));\n\tsum += uw1 * vw0 * textureShadow(shadowMap, vec3(u1, v0, z));\n\tsum += uw2 * vw0 * textureShadow(shadowMap, vec3(u2, v0, z));\n\tsum += uw0 * vw1 * textureShadow(shadowMap, vec3(u0, v1, z));\n\tsum += uw1 * vw1 * textureShadow(shadowMap, vec3(u1, v1, z));\n\tsum += uw2 * vw1 * textureShadow(shadowMap, vec3(u2, v1, z));\n\tsum += uw0 * vw2 * textureShadow(shadowMap, vec3(u0, v2, z));\n\tsum += uw1 * vw2 * textureShadow(shadowMap, vec3(u1, v2, z));\n\tsum += uw2 * vw2 * textureShadow(shadowMap, vec3(u2, v2, z));\n\tsum *= 1.0f / 144.0;\n\tsum = saturate(sum);\n\treturn sum;\n}\nfloat getShadowPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\nfloat getShadowSpotPCF5x5(SHADOWMAP_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams) {\n\treturn _getShadowPCF5x5(SHADOWMAP_PASS(shadowMap), shadowCoord, shadowParams.xyz);\n}\n`;\n\nvar shadowPCSSPS = `\n#define PCSS_SAMPLE_COUNT 16\nuniform float pcssDiskSamples[PCSS_SAMPLE_COUNT];\nuniform float pcssSphereSamples[PCSS_SAMPLE_COUNT];\nvec2 vogelDisk(int sampleIndex, float count, float phi, float r) {\n\tconst float GoldenAngle = 2.4;\n\tfloat theta = float(sampleIndex) * GoldenAngle + phi;\n\tfloat sine = sin(theta);\n\tfloat cosine = cos(theta);\n\treturn vec2(r * cosine, r * sine);\n}\nvec3 vogelSphere(int sampleIndex, float count, float phi, float r) {\n\tconst float GoldenAngle = 2.4;\n\tfloat theta = float(sampleIndex) * GoldenAngle + phi;\n\tfloat weight = float(sampleIndex) / count;\n\treturn vec3(cos(theta) * r, weight, sin(theta) * r);\n}\nfloat noise(vec2 screenPos) {\n\tconst float PHI = 1.61803398874989484820459;\n\treturn fract(sin(dot(screenPos * PHI, screenPos)) * screenPos.x);\n}\nfloat viewSpaceDepth(float depth, mat4 invProjection) {\n\tfloat z = depth * 2.0 - 1.0;\n\tvec4 clipSpace = vec4(0.0, 0.0, z, 1.0);\n\tvec4 viewSpace = invProjection * clipSpace;\n\treturn viewSpace.z;\n}\nfloat PCSSBlockerDistance(TEXTURE_ACCEPT(shadowMap), vec2 sampleCoords[PCSS_SAMPLE_COUNT], vec2 shadowCoords, vec2 searchSize, float z, vec4 cameraParams) {\n\tfloat blockers = 0.0;\n\tfloat averageBlocker = 0.0;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tvec2 offset = sampleCoords[i] * searchSize;\n\t\tvec2 sampleUV = shadowCoords + offset;\n\t\tfloat blocker = texture2DLod(shadowMap, sampleUV, 0.0).r;\n\t\tfloat isBlocking = step(blocker, z);\n\t\tblockers += isBlocking;\n\t\taverageBlocker += blocker * isBlocking;\n\t}\n\tif (blockers > 0.0)\n\t\treturn averageBlocker / blockers;\n\treturn -1.0;\n}\nfloat PCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoords, vec4 cameraParams, vec2 shadowSearchArea) {\n\tfloat receiverDepth = linearizeDepthWithParams(shadowCoords.z, cameraParams);\n\tvec2 samplePoints[PCSS_SAMPLE_COUNT];\n\tconst float PI = 3.141592653589793;\n\tfloat noise = noise( gl_FragCoord.xy ) * 2.0 * PI;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tfloat pcssPresample = pcssDiskSamples[i];\n\t\tsamplePoints[i] = vogelDisk(i, float(PCSS_SAMPLE_COUNT), noise, pcssPresample);\n\t}\n\tfloat averageBlocker = PCSSBlockerDistance(TEXTURE_PASS(shadowMap), samplePoints, shadowCoords.xy, shadowSearchArea, receiverDepth, cameraParams);\n\tif (averageBlocker == -1.0) {\n\t\treturn 1.0;\n\t} else {\n\t\tfloat depthDifference = (receiverDepth - averageBlocker) / 3.0;\n\t\tvec2 filterRadius = depthDifference * shadowSearchArea;\n\t\tfloat shadow = 0.0;\n\t\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i ++)\n\t\t{\n\t\t\tvec2 sampleUV = samplePoints[i] * filterRadius;\n\t\t\tsampleUV = shadowCoords.xy + sampleUV;\n\t\t\tfloat depth = texture2DLod(shadowMap, sampleUV, 0.0).r;\n\t\t\tshadow += step(receiverDepth, depth);\n\t\t}\n\t\treturn shadow / float(PCSS_SAMPLE_COUNT);\n\t} \n}\n#ifndef WEBGPU\nfloat PCSSCubeBlockerDistance(samplerCube shadowMap, vec3 lightDirNorm, vec3 samplePoints[PCSS_SAMPLE_COUNT], float z, float shadowSearchArea) {\n\tfloat blockers = 0.0;\n\tfloat averageBlocker = 0.0;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tvec3 sampleDir = lightDirNorm + samplePoints[i] * shadowSearchArea;\n\t\tsampleDir = normalize(sampleDir);\n\t\tfloat blocker = textureCubeLod(shadowMap, sampleDir, 0.0).r;\n\t\tfloat isBlocking = step(blocker, z);\n\t\tblockers += isBlocking;\n\t\taverageBlocker += blocker * isBlocking;\n\t}\n\tif (blockers > 0.0)\n\t\treturn averageBlocker / blockers;\n\treturn -1.0;\n}\nfloat PCSSCube(samplerCube shadowMap, vec4 shadowParams, vec3 shadowCoords, vec4 cameraParams, float shadowSearchArea, vec3 lightDir) {\n\t\n\tvec3 samplePoints[PCSS_SAMPLE_COUNT];\n\tconst float PI = 3.141592653589793;\n\tfloat noise = noise( gl_FragCoord.xy ) * 2.0 * PI;\n\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++) {\n\t\tfloat r = pcssSphereSamples[i];\n\t\tsamplePoints[i] = vogelSphere(i, float(PCSS_SAMPLE_COUNT), noise, r);\n\t}\n\tfloat receiverDepth = length(lightDir) * shadowParams.w + shadowParams.z;\n\tvec3 lightDirNorm = normalize(lightDir);\n\t\n\tfloat averageBlocker = PCSSCubeBlockerDistance(shadowMap, lightDirNorm, samplePoints, receiverDepth, shadowSearchArea);\n\tif (averageBlocker == -1.0) {\n\t\treturn 1.0;\n\t} else {\n\t\tfloat filterRadius = ((receiverDepth - averageBlocker) / averageBlocker) * shadowSearchArea;\n\t\tfloat shadow = 0.0;\n\t\tfor (int i = 0; i < PCSS_SAMPLE_COUNT; i++)\n\t\t{\n\t\t\tvec3 offset = samplePoints[i] * filterRadius;\n\t\t\tvec3 sampleDir = lightDirNorm + offset;\n\t\t\tsampleDir = normalize(sampleDir);\n\t\t\tfloat depth = textureCubeLod(shadowMap, sampleDir, 0.0).r;\n\t\t\tshadow += step(receiverDepth, depth);\n\t\t}\n\t\treturn shadow / float(PCSS_SAMPLE_COUNT);\n\t}\n}\nfloat getShadowOmniPCSS(samplerCube shadowMap, vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSSCube(shadowMap, shadowParams, shadowCoord, cameraParams, shadowSearchArea.x, lightDir);\n}\n#endif\nfloat getShadowSpotPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec2 shadowSearchArea, vec3 lightDir) {\n\treturn PCSS(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, shadowSearchArea);\n}\n`;\n\nvar shadowSoftPS$1 = `\nhighp float fractSinRand(const in vec2 uv) {\n\tconst float PI = 3.141592653589793;\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot(uv.xy, vec2(a, b)), sn = mod(dt, PI);\n\treturn fract(sin(sn) * c);\n}\nstruct VogelDiskData {\n\tfloat invNumSamples;\n\tfloat initialAngle;\n\tfloat currentPointId;\n};\nvoid prepareDiskConstants(out VogelDiskData data, int sampleCount, float randomSeed) {\n\tconst float pi2 = 6.28318530718;\n\tdata.invNumSamples = 1.0 / float(sampleCount);\n\tdata.initialAngle = randomSeed * pi2;\n\tdata.currentPointId = 0.0;\n}\nvec2 generateDiskSample(inout VogelDiskData data) {\n\tconst float GOLDEN_ANGLE = 2.399963;\n\tfloat r = sqrt((data.currentPointId + 0.5) * data.invNumSamples);\n\tfloat theta = data.currentPointId * GOLDEN_ANGLE + data.initialAngle;\n\tvec2 offset = vec2(cos(theta), sin(theta)) * pow(r, 1.33);\n\tdata.currentPointId += 1.0;\n\treturn offset;\n}\nvoid PCSSFindBlocker(TEXTURE_ACCEPT(shadowMap), out float avgBlockerDepth, out int numBlockers,\n\tvec2 shadowCoords, float z, int shadowBlockerSamples, float penumbraSize, float invShadowMapSize, float randomSeed) {\n\tVogelDiskData diskData;\n\tprepareDiskConstants(diskData, shadowBlockerSamples, randomSeed);\n\tfloat searchWidth = penumbraSize * invShadowMapSize;\n\tfloat blockerSum = 0.0;\n\tnumBlockers = 0;\n\tfor( int i = 0; i < shadowBlockerSamples; ++i ) {\n\t\tvec2 diskUV = generateDiskSample(diskData);\n\t\tvec2 sampleUV = shadowCoords + diskUV * searchWidth;\n\t\tfloat shadowMapDepth = texture2DLod(shadowMap, sampleUV, 0.0).r;\n\t\tif ( shadowMapDepth < z ) {\n\t\t\tblockerSum += shadowMapDepth;\n\t\t\tnumBlockers++;\n\t\t}\n\t}\n\tavgBlockerDepth = blockerSum / float(numBlockers);\n}\nfloat PCSSFilter(TEXTURE_ACCEPT(shadowMap), vec2 uv, float receiverDepth, int shadowSamples, float filterRadius, float randomSeed) {\n\tVogelDiskData diskData;\n\tprepareDiskConstants(diskData, shadowSamples, randomSeed);\n\tfloat sum = 0.0;\n\tfor (int i = 0; i < shadowSamples; i++) {\n\t\tvec2 offsetUV = generateDiskSample(diskData) * filterRadius;\n\t\tfloat depth = texture2DLod(shadowMap, uv + offsetUV, 0.0).r;\n\t\tsum += step(receiverDepth, depth);\n\t}\n\treturn sum / float(shadowSamples);\n}\nfloat getPenumbra(float dblocker, float dreceiver, float penumbraSize, float penumbraFalloff) {\n\tfloat dist = dreceiver - dblocker;\n\tfloat penumbra = 1.0 - pow(1.0 - dist, penumbraFalloff);\n\treturn penumbra * penumbraSize;\n}\nfloat PCSSDirectional(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoords, vec4 cameraParams, vec4 softShadowParams) {\n\tfloat receiverDepth = shadowCoords.z;\n\tfloat randomSeed = fractSinRand(gl_FragCoord.xy);\n\tint shadowSamples = int(softShadowParams.x);\n\tint shadowBlockerSamples = int(softShadowParams.y);\n\tfloat penumbraSize = softShadowParams.z;\n\tfloat penumbraFalloff = softShadowParams.w;\n\tint shadowMapSize = textureSize(shadowMap, 0).x;\n\tfloat invShadowMapSize = 1.0 / float(shadowMapSize);\n\tinvShadowMapSize *= float(shadowMapSize) / 2048.0;\n\tfloat penumbra;\n\tif (shadowBlockerSamples > 0) {\n\t\tfloat avgBlockerDepth = 0.0;\n\t\tint numBlockers = 0;\n\t\tPCSSFindBlocker(TEXTURE_PASS(shadowMap), avgBlockerDepth, numBlockers, shadowCoords.xy, receiverDepth, shadowBlockerSamples, penumbraSize, invShadowMapSize, randomSeed);\n\t\tif (numBlockers < 1)\n\t\t\treturn 1.0f;\n\t\tpenumbra = getPenumbra(avgBlockerDepth, shadowCoords.z, penumbraSize, penumbraFalloff);\n\t} else {\n\t\tpenumbra = penumbraSize;\n\t}\n\tfloat filterRadius = penumbra * invShadowMapSize;\n\treturn PCSSFilter(TEXTURE_PASS(shadowMap), shadowCoords.xy, receiverDepth, shadowSamples, filterRadius, randomSeed);\n}\nfloat getShadowPCSS(TEXTURE_ACCEPT(shadowMap), vec3 shadowCoord, vec4 shadowParams, vec4 cameraParams, vec4 softShadowParams, vec3 lightDir) {\n\treturn PCSSDirectional(TEXTURE_PASS(shadowMap), shadowCoord, cameraParams, softShadowParams);\n}\n`;\n\nvar skinBatchVS$1 = `\nattribute float vertex_boneIndices;\nuniform highp sampler2D texture_poseMap;\nmat4 getBoneMatrix(const in float indexFloat) {\n\tint width = textureSize(texture_poseMap, 0).x;\n\tint index = int(indexFloat + 0.5) * 3;\n\tint iy = index / width;\n\tint ix = index % width;\n\tvec4 v1 = texelFetch(texture_poseMap, ivec2(ix + 0, iy), 0);\n\tvec4 v2 = texelFetch(texture_poseMap, ivec2(ix + 1, iy), 0);\n\tvec4 v3 = texelFetch(texture_poseMap, ivec2(ix + 2, iy), 0);\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, 1\n\t);\n}\n`;\n\nvar skinVS$1 = `\nattribute vec4 vertex_boneWeights;\nattribute vec4 vertex_boneIndices;\nuniform highp sampler2D texture_poseMap;\nvoid getBoneMatrix(const in int width, const in int index, out vec4 v1, out vec4 v2, out vec4 v3) {\n\tint v = index / width;\n\tint u = index % width;\n\tv1 = texelFetch(texture_poseMap, ivec2(u + 0, v), 0);\n\tv2 = texelFetch(texture_poseMap, ivec2(u + 1, v), 0);\n\tv3 = texelFetch(texture_poseMap, ivec2(u + 2, v), 0);\n}\nmat4 getSkinMatrix(const in vec4 indicesFloat, const in vec4 weights) {\n\tint width = textureSize(texture_poseMap, 0).x;\n\tivec4 indices = ivec4(indicesFloat + 0.5) * 3;\n\tvec4 a1, a2, a3;\n\tgetBoneMatrix(width, indices.x, a1, a2, a3);\n\tvec4 b1, b2, b3;\n\tgetBoneMatrix(width, indices.y, b1, b2, b3);\n\tvec4 c1, c2, c3;\n\tgetBoneMatrix(width, indices.z, c1, c2, c3);\n\tvec4 d1, d2, d3;\n\tgetBoneMatrix(width, indices.w, d1, d2, d3);\n\tvec4 v1 = a1 * weights.x + b1 * weights.y + c1 * weights.z + d1 * weights.w;\n\tvec4 v2 = a2 * weights.x + b2 * weights.y + c2 * weights.z + d2 * weights.w;\n\tvec4 v3 = a3 * weights.x + b3 * weights.y + c3 * weights.z + d3 * weights.w;\n\tfloat one = dot(weights, vec4(1.0));\n\treturn mat4(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, one\n\t);\n}\n`;\n\nvar skyboxPS$1 = `\n\t#define LIT_SKYBOX_INTENSITY\n\t#include \"envProcPS\"\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#ifdef PREPASS_PASS\n\t\tvarying float vLinearDepth;\n\t\t#include \"floatAsUintPS\"\n\t#endif\n\tvarying vec3 vViewDir;\n\tuniform float skyboxHighlightMultiplier;\n\t#ifdef SKY_CUBEMAP\n\t\tuniform samplerCube texture_cubeMap;\n\t\t#ifdef SKYMESH\n\t\t\tvarying vec3 vWorldPos;\n\t\t\tuniform mat3 cubeMapRotationMatrix;\n\t\t\tuniform vec3 projectedSkydomeCenter;\n\t\t#endif\n\t#else\n\t\t#include \"sphericalPS\"\n\t\t#include \"envAtlasPS\"\n\t\tuniform sampler2D texture_envAtlas;\n\t\tuniform float mipLevel;\n\t#endif\n\tvoid main(void) {\n\t\t#ifdef PREPASS_PASS\n\t\t\tgl_FragColor = float2vec4(vLinearDepth);\n\t\t#else\n\t\t\t#ifdef SKY_CUBEMAP\n\t\t\t\t#ifdef SKYMESH\n\t\t\t\t\tvec3 envDir = normalize(vWorldPos - projectedSkydomeCenter);\n\t\t\t\t\tvec3 dir = envDir * cubeMapRotationMatrix;\n\t\t\t\t#else\n\t\t\t\t\tvec3 dir = vViewDir;\n\t\t\t\t#endif\n\t\t\t\tdir.x *= -1.0;\n\t\t\t\tvec3 linear = {SKYBOX_DECODE_FNC}(textureCube(texture_cubeMap, dir));\n\t\t\t#else\n\t\t\t\tvec3 dir = vViewDir * vec3(-1.0, 1.0, 1.0);\n\t\t\t\tvec2 uv = toSphericalUv(normalize(dir));\n\t\t\t\tvec3 linear = {SKYBOX_DECODE_FNC}(texture2D(texture_envAtlas, mapRoughnessUv(uv, mipLevel)));\n\t\t\t#endif\n\t\t\tif (any(greaterThanEqual(linear, vec3(64.0)))) {\n\t\t\t\tlinear *= skyboxHighlightMultiplier;\n\t\t\t}\n\t\t\tgl_FragColor = vec4(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0);\n\t\t#endif\n\t}\n`;\n\nvar skyboxVS$1 = `\nattribute vec4 aPosition;\nuniform mat4 matrix_view;\nuniform mat4 matrix_projectionSkybox;\nuniform mat3 cubeMapRotationMatrix;\nvarying vec3 vViewDir;\n#ifdef PREPASS_PASS\n\tvarying float vLinearDepth;\n#endif\n#ifdef SKYMESH\n\tuniform mat4 matrix_model;\n\tvarying vec3 vWorldPos;\n#endif\nvoid main(void) {\n\tmat4 view = matrix_view;\n\t#ifdef SKYMESH\n\t\tvec4 worldPos = matrix_model * aPosition;\n\t\tvWorldPos = worldPos.xyz;\n\t\tgl_Position = matrix_projectionSkybox * (view * worldPos);\n\t\t#ifdef PREPASS_PASS\n\t\t\tvLinearDepth = -(matrix_view * vec4(vWorldPos, 1.0)).z;\n\t\t#endif\n\t#else\n\t\tview[3][0] = view[3][1] = view[3][2] = 0.0;\n\t\tgl_Position = matrix_projectionSkybox * (view * aPosition);\n\t\tvViewDir = aPosition.xyz * cubeMapRotationMatrix;\n\t\t#ifdef PREPASS_PASS\n\t\t\tvLinearDepth = -gl_Position.w;\n\t\t#endif\n\t#endif\n\tgl_Position.z = gl_Position.w - 1.0e-7;\n}\n`;\n\nvar specularPS$1 = `\n#ifdef STD_SPECULAR_CONSTANT\nuniform vec3 material_specular;\n#endif\nvoid getSpecularity() {\n\tvec3 specularColor = vec3(1,1,1);\n\t#ifdef STD_SPECULAR_CONSTANT\n\tspecularColor *= material_specular;\n\t#endif\n\t#ifdef STD_SPECULAR_TEXTURE\n\tspecularColor *= {STD_SPECULAR_TEXTURE_DECODE}(texture2DBias({STD_SPECULAR_TEXTURE_NAME}, {STD_SPECULAR_TEXTURE_UV}, textureBias)).{STD_SPECULAR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULAR_VERTEX\n\tspecularColor *= saturate(vVertexColor.{STD_SPECULAR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularity = specularColor;\n}\n`;\n\nvar sphericalPS$1 = `\nvec2 toSpherical(vec3 dir) {\n\treturn vec2(dir.xz == vec2(0.0) ? 0.0 : atan(dir.x, dir.z), asin(dir.y));\n}\nvec2 toSphericalUv(vec3 dir) {\n\tconst float PI = 3.141592653589793;\n\tvec2 uv = toSpherical(dir) / vec2(PI * 2.0, PI) + 0.5;\n\treturn vec2(uv.x, 1.0 - uv.y);\n}\n`;\n\nvar specularityFactorPS$1 = `\n#ifdef STD_SPECULARITYFACTOR_CONSTANT\nuniform float material_specularityFactor;\n#endif\nvoid getSpecularityFactor() {\n\tfloat specularityFactor = 1.0;\n\t#ifdef STD_SPECULARITYFACTOR_CONSTANT\n\tspecularityFactor *= material_specularityFactor;\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_TEXTURE\n\tspecularityFactor *= texture2DBias({STD_SPECULARITYFACTOR_TEXTURE_NAME}, {STD_SPECULARITYFACTOR_TEXTURE_UV}, textureBias).{STD_SPECULARITYFACTOR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_VERTEX\n\tspecularityFactor *= saturate(vVertexColor.{STD_SPECULARITYFACTOR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularityFactor = specularityFactor;\n}\n`;\n\nvar spotPS$1 = `\nfloat getSpotEffect(vec3 lightSpotDir, float lightInnerConeAngle, float lightOuterConeAngle, vec3 lightDirNorm) {\n\tfloat cosAngle = dot(lightDirNorm, lightSpotDir);\n\treturn smoothstep(lightOuterConeAngle, lightInnerConeAngle, cosAngle);\n}\n`;\n\nvar startNineSlicedPS$1 = `\n\tnineSlicedUv = vec2(vUv0.x, 1.0 - vUv0.y);\n`;\n\nvar startNineSlicedTiledPS$1 = `\n\tvec2 tileMask = step(vMask, vec2(0.99999));\n\tvec2 tileSize = 0.5 * (innerOffset.xy + innerOffset.zw);\n\tvec2 tileScale = vec2(1.0) / (vec2(1.0) - tileSize);\n\tvec2 clampedUv = mix(innerOffset.xy * 0.5, vec2(1.0) - innerOffset.zw * 0.5, fract((vTiledUv - tileSize) * tileScale));\n\tclampedUv = clampedUv * atlasRect.zw + atlasRect.xy;\n\tnineSlicedUv = vUv0 * tileMask + clampedUv * (vec2(1.0) - tileMask);\n\tnineSlicedUv.y = 1.0 - nineSlicedUv.y;\n\t\n`;\n\nvar stdDeclarationPS$1 = `\n\tfloat dAlpha = 1.0;\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#ifdef STD_OPACITY_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_opacityMap;\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\tvec3 dAlbedo;\n\t\tvec3 dNormalW;\n\t\tvec3 dSpecularity = vec3(0.0);\n\t\tfloat dGlossiness = 0.0;\n\t\t#ifdef LIT_REFRACTION\n\t\t\tfloat dTransmission;\n\t\t\tfloat dThickness;\n\t\t#endif\n\t\t#ifdef LIT_SCENE_COLOR\n\t\t\tuniform sampler2D uSceneColorMap;\n\t\t#endif\n\t\t#ifdef LIT_SCREEN_SIZE\n\t\t\tuniform vec4 uScreenSize;\n\t\t#endif\n\t\t#ifdef LIT_TRANSFORMS\n\t\t\tuniform mat4 matrix_viewProjection;\n\t\t\tuniform mat4 matrix_model;\n\t\t#endif\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\tvec2 dUvOffset;\n\t\t\t#ifdef STD_HEIGHT_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_heightMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_DIFFUSE_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_diffuseMap;\n\t\t#endif\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_diffuseDetailMap;\n\t\t#endif\n\t\t#ifdef STD_NORMAL_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_normalMap;\n\t\t#endif\n\t\t#ifdef STD_NORMALDETAIL_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_normalDetailMap;\n\t\t#endif\n\t\t#ifdef STD_THICKNESS_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_thicknessMap;\n\t\t#endif\n\t\t#ifdef STD_REFRACTION_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_refractionMap;\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tfloat dIridescence;\n\t\t\tfloat dIridescenceThickness;\n\t\t\t#ifdef STD_IRIDESCENCE_THICKNESS_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_iridescenceThicknessMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_IRIDESCENCE_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_iridescenceMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tfloat ccSpecularity;\n\t\t\tfloat ccGlossiness;\n\t\t\tvec3 ccNormalW;\n\t\t#endif\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\tfloat dAnisotropy;\n\t\t\tvec2 dAnisotropyRotation;\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tvec3 sSpecularity;\n\t\t\t\tfloat sGlossiness;\n\t\t\t\t#ifdef STD_SHEEN_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_sheenMap;\n\t\t\t\t#endif\n\t\t\t\t#ifdef STD_SHEENGLOSS_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_sheenGlossMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\tfloat dMetalness;\n\t\t\t\tfloat dIor;\n\t\t\t\t#ifdef STD_METALNESS_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_metalnessMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tfloat dSpecularityFactor;\n\t\t\t\t#ifdef STD_SPECULARITYFACTOR_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_specularityFactorMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#ifdef STD_SPECULAR_TEXTURE_ALLOCATE\n\t\t\t\t\tuniform sampler2D texture_specularMap;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_GLOSS_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_glossMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\tfloat dAo;\n\t\t\t#ifdef STD_AO_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_aoMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_AODETAIL_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_aoDetailMap;\n\t\t\t#endif\n\t\t#endif\n\t\tvec3 dEmission;\n\t\t#ifdef STD_EMISSIVE_TEXTURE_ALLOCATE\n\t\t\tuniform sampler2D texture_emissiveMap;\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#ifdef STD_CLEARCOAT_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_clearCoatMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATGLOSS_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_clearCoatGlossMap;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATNORMAL_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_clearCoatNormalMap;\n\t\t\t#endif\n\t\t#endif\n\t\t\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#ifdef STD_ANISOTROPY_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_anisotropyMap;\n\t\t\t#endif\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\tvec3 dLightmap;\n\t\t\t#ifdef STD_LIGHT_TEXTURE_ALLOCATE\n\t\t\t\tuniform sampler2D texture_lightMap;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#include \"litShaderCorePS\"\n`;\n\nvar stdFrontEndPS$1 = `\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#include \"opacityPS\"\n\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t#include \"alphaTestPS\"\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t#include \"opacityDitherPS\"\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t#include \"parallaxPS\"\n\t\t#endif\n\t\t#include  \"diffusePS\"\n\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t#include \"normalMapPS\"\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\t#include \"transmissionPS\"\n\t\t\t#include \"thicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t#include \"iridescencePS\"\n\t\t\t#include \"iridescenceThicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t#include \"sheenPS\"\n\t\t\t\t#include \"sheenGlossPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t#include \"metalnessPS\"\n\t\t\t\t#include \"iorPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t#include \"specularityFactorPS\"\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#include \"specularPS\"\n\t\t\t#else\n\t\t\t\tvoid getSpecularity() { \n\t\t\t\t\tdSpecularity = vec3(1);\n\t\t\t\t}\n\t\t\t#endif\n\t\t\t#include \"glossPS\"\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\t#include \"aoPS\"\n\t\t#endif\n\t\t#include \"emissivePS\"\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#include \"clearCoatPS\"\n\t\t\t#include \"clearCoatGlossPS\"\n\t\t\t#include \"clearCoatNormalPS\"\n\t\t#endif\n\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t#include \"anisotropyPS\"\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t#include \"lightmapPS\"\n\t\t#endif\n\t#endif\n\tvoid evaluateFrontend() {\n\t\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t\tgetOpacity();\n\t\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t\talphaTest(dAlpha);\n\t\t\t#endif\n\t\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t\topacityDither(dAlpha, 0.0);\n\t\t\t#endif\n\t\t\tlitArgs_opacity = dAlpha;\n\t\t#endif\n\t\t#ifdef FORWARD_PASS\n\t\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t\tgetParallax();\n\t\t\t#endif\n\t\t\tgetAlbedo();\n\t\t\tlitArgs_albedo = dAlbedo;\n\t\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t\tgetNormal();\n\t\t\t\tlitArgs_worldNormal = dNormalW;\n\t\t\t#endif\n\t\t\t#ifdef LIT_REFRACTION\n\t\t\t\tgetRefraction();\n\t\t\t\tlitArgs_transmission = dTransmission;\n\t\t\t\tgetThickness();\n\t\t\t\tlitArgs_thickness = dThickness;\n\t\t\t\t#ifdef LIT_DISPERSION\n\t\t\t\t\tlitArgs_dispersion = material_dispersion;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t\tgetIridescence();\n\t\t\t\tgetIridescenceThickness();\n\t\t\t\tlitArgs_iridescence_intensity = dIridescence;\n\t\t\t\tlitArgs_iridescence_thickness = dIridescenceThickness;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tgetSheen();\n\t\t\t\t\tlitArgs_sheen_specularity = sSpecularity;\n\t\t\t\t\tgetSheenGlossiness();\n\t\t\t\t\tlitArgs_sheen_gloss = sGlossiness;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t\tgetMetalness();\n\t\t\t\t\tlitArgs_metalness = dMetalness;\n\t\t\t\t\tgetIor();\n\t\t\t\t\tlitArgs_ior = dIor;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t\tgetSpecularityFactor();\n\t\t\t\t\tlitArgs_specularityFactor = dSpecularityFactor;\n\t\t\t\t#endif\n\t\t\t\tgetGlossiness();\n\t\t\t\tgetSpecularity();\n\t\t\t\tlitArgs_specularity = dSpecularity;\n\t\t\t\tlitArgs_gloss = dGlossiness;\n\t\t\t#endif\n\t\t\t#ifdef STD_AO\n\t\t\t\tgetAO();\n\t\t\t\tlitArgs_ao = dAo;\n\t\t\t#endif\n\t\t\tgetEmission();\n\t\t\tlitArgs_emission = dEmission;\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tgetClearCoat();\n\t\t\t\tgetClearCoatGlossiness();\n\t\t\t\tgetClearCoatNormal();\n\t\t\t\tlitArgs_clearcoat_specularity = ccSpecularity;\n\t\t\t\tlitArgs_clearcoat_gloss = ccGlossiness;\n\t\t\t\tlitArgs_clearcoat_worldNormal = ccNormalW;\n\t\t\t#endif\n\t\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t\tgetAnisotropy();\n\t\t\t#endif\n\t\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t\tgetLightMap();\n\t\t\t\tlitArgs_lightmap = dLightmap;\n\t\t\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\t\t\tlitArgs_lightmapDir = dLightmapDir;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#endif\n\t}\n`;\n\nvar TBNPS$1 = `\n#ifdef LIT_TANGENTS\n\t#define TBN_TANGENTS\n#else\n\t#if defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS)\n\t\t#define TBN_DERIVATIVES\n\t#endif\n#endif\n#if defined(TBN_DERIVATIVES)\n\tuniform float tbnBasis;\n#endif\nvoid getTBN(vec3 tangent, vec3 binormal, vec3 normal) {\n\t#ifdef TBN_TANGENTS\n\t\tdTBN = mat3(normalize(tangent), normalize(binormal), normalize(normal));\n\t#elif defined(TBN_DERIVATIVES)\n\t\tvec2 uv = {lightingUv};\n\t\tvec3 dp1 = dFdx( vPositionW );\n\t\tvec3 dp2 = dFdy( vPositionW );\n\t\tvec2 duv1 = dFdx( uv );\n\t\tvec2 duv2 = dFdy( uv );\n\t\tvec3 dp2perp = cross( dp2, normal );\n\t\tvec3 dp1perp = cross( normal, dp1 );\n\t\tvec3 T = dp2perp * duv1.x + dp1perp * duv2.x;\n\t\tvec3 B = dp2perp * duv1.y + dp1perp * duv2.y;\n\t\tfloat denom = max( dot(T,T), dot(B,B) );\n\t\tfloat invmax = (denom == 0.0) ? 0.0 : tbnBasis / sqrt( denom );\n\t\tdTBN = mat3(T * invmax, -B * invmax, normal );\n\t#else\n\t\tvec3 B = cross(normal, vObjectSpaceUpW);\n\t\tvec3 T = cross(normal, B);\n\t\tif (dot(B,B)==0.0)\n\t\t{\n\t\t\tfloat major=max(max(normal.x, normal.y), normal.z);\n\t\t\tif (normal.x == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3(0,1,0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse if (normal.y == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3(0,0,1));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse if (normal.z == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3(1,0,0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t}\n\t\tdTBN = mat3(normalize(T), normalize(B), normalize(normal));\n\t#endif\n}\n`;\n\nvar thicknessPS$1 = `\n#ifdef STD_THICKNESS_CONSTANT\nuniform float material_thickness;\n#endif\nvoid getThickness() {\n\tdThickness = 1.0;\n\t#ifdef STD_THICKNESS_CONSTANT\n\tdThickness *= material_thickness;\n\t#endif\n\t#ifdef STD_THICKNESS_TEXTURE\n\tdThickness *= texture2DBias({STD_THICKNESS_TEXTURE_NAME}, {STD_THICKNESS_TEXTURE_UV}, textureBias).{STD_THICKNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_THICKNESS_VERTEX\n\tdThickness *= saturate(vVertexColor.{STD_THICKNESS_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar tonemappingPS$1 = `\n#if (TONEMAP == NONE)\n\t#include \"tonemappingNonePS\"\n#elif TONEMAP == FILMIC\n\t#include \"tonemappingFilmicPS\"\n#elif TONEMAP == LINEAR\n\t#include \"tonemappingLinearPS\"\n#elif TONEMAP == HEJL\n\t#include \"tonemappingHejlPS\"\n#elif TONEMAP == ACES\n\t#include \"tonemappingAcesPS\"\n#elif TONEMAP == ACES2\n\t#include \"tonemappingAces2PS\"\n#elif TONEMAP == NEUTRAL\n\t#include \"tonemappingNeutralPS\"\n#endif\n`;\n\nvar tonemappingAcesPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tfloat tA = 2.51;\n\tfloat tB = 0.03;\n\tfloat tC = 2.43;\n\tfloat tD = 0.59;\n\tfloat tE = 0.14;\n\tvec3 x = color * exposure;\n\treturn (x*(tA*x+tB))/(x*(tC*x+tD)+tE);\n}\n`;\n\nvar tonemappingAces2PS$1 = `\nuniform float exposure;\nconst mat3 ACESInputMat = mat3(\n\t0.59719, 0.35458, 0.04823,\n\t0.07600, 0.90834, 0.01566,\n\t0.02840, 0.13383, 0.83777\n);\nconst mat3 ACESOutputMat = mat3(\n\t 1.60475, -0.53108, -0.07367,\n\t-0.10208,  1.10813, -0.00605,\n\t-0.00327, -0.07276,  1.07602\n);\nvec3 RRTAndODTFit(vec3 v) {\n\tvec3 a = v * (v + 0.0245786) - 0.000090537;\n\tvec3 b = v * (0.983729 * v + 0.4329510) + 0.238081;\n\treturn a / b;\n}\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure / 0.6;\n\tcolor = color * ACESInputMat;\n\tcolor = RRTAndODTFit(color);\n\tcolor = color * ACESOutputMat;\n\tcolor = clamp(color, 0.0, 1.0);\n\treturn color;\n}\n`;\n\nvar tonemappingFilmicPS$1 = `\nconst float A =  0.15;\nconst float B =  0.50;\nconst float C =  0.10;\nconst float D =  0.20;\nconst float E =  0.02;\nconst float F =  0.30;\nconst float W =  11.2;\nuniform float exposure;\nvec3 uncharted2Tonemap(vec3 x) {\n\t return ((x*(A*x+C*B)+D*E)/(x*(A*x+B)+D*F))-E/F;\n}\nvec3 toneMap(vec3 color) {\n\tcolor = uncharted2Tonemap(color * exposure);\n\tvec3 whiteScale = 1.0 / uncharted2Tonemap(vec3(W,W,W));\n\tcolor = color * whiteScale;\n\treturn color;\n}\n`;\n\nvar tonemappingHejlPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure;\n\tconst float  A = 0.22, B = 0.3, C = .1, D = 0.2, E = .01, F = 0.3;\n\tconst float Scl = 1.25;\n\tvec3 h = max( vec3(0.0), color - vec3(0.004) );\n\treturn (h*((Scl*A)*h+Scl*vec3(C*B,C*B,C*B))+Scl*vec3(D*E,D*E,D*E)) / (h*(A*h+vec3(B,B,B))+vec3(D*F,D*F,D*F)) - Scl*vec3(E/F,E/F,E/F);\n}\n`;\n\nvar tonemappingLinearPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\treturn color * exposure;\n}\n`;\n\nvar tonemappingNeutralPS$1 = `\nuniform float exposure;\nvec3 toneMap(vec3 color) {\n\tcolor *= exposure;\n\tfloat startCompression = 0.8 - 0.04;\n\tfloat desaturation = 0.15;\n\tfloat x = min(color.r, min(color.g, color.b));\n\tfloat offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n\tcolor -= offset;\n\tfloat peak = max(color.r, max(color.g, color.b));\n\tif (peak < startCompression) return color;\n\tfloat d = 1. - startCompression;\n\tfloat newPeak = 1. - d * d / (peak + d - startCompression);\n\tcolor *= newPeak / peak;\n\tfloat g = 1. - 1. / (desaturation * (peak - newPeak) + 1.);\n\treturn mix(color, newPeak * vec3(1, 1, 1), g);\n}\n`;\n\nvar tonemappingNonePS$1 = `\nvec3 toneMap(vec3 color) {\n\treturn color;\n}\n`;\n\nvar transformVS$1 = `\n#ifdef PIXELSNAP\nuniform vec4 uScreenSize;\n#endif\n#ifdef SCREENSPACE\nuniform float projectionFlipY;\n#endif\nvec4 evalWorldPosition(vec3 vertexPosition, mat4 modelMatrix) {\n\tvec3 localPos = getLocalPosition(vertexPosition);\n\t#ifdef NINESLICED\n\t\tlocalPos.xz *= outerScale;\n\t\tvec2 positiveUnitOffset = clamp(vertexPosition.xz, vec2(0.0), vec2(1.0));\n\t\tvec2 negativeUnitOffset = clamp(-vertexPosition.xz, vec2(0.0), vec2(1.0));\n\t\tlocalPos.xz += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n\t\tvTiledUv = (localPos.xz - outerScale + innerOffset.xy) * -0.5 + 1.0;\n\t\tlocalPos.xz *= -0.5;\n\t\tlocalPos = localPos.xzy;\n\t#endif\n\tvec4 posW = modelMatrix * vec4(localPos, 1.0);\n\t#ifdef SCREENSPACE\n\t\tposW.zw = vec2(0.0, 1.0);\n\t#endif\n\treturn posW;\n}\nvec4 getPosition() {\n\tdModelMatrix = getModelMatrix();\n\tvec4 posW = evalWorldPosition(vertex_position.xyz, dModelMatrix);\n\tdPositionW = posW.xyz;\n\tvec4 screenPos;\n\t#ifdef UV1LAYOUT\n\t\tscreenPos = vec4(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1);\n\t\t#ifdef WEBGPU\n\t\t\tscreenPos.y *= -1.0;\n\t\t#endif\n\t#else\n\t\t#ifdef SCREENSPACE\n\t\t\tscreenPos = posW;\n\t\t\tscreenPos.y *= projectionFlipY;\n\t\t#else\n\t\t\tscreenPos = matrix_viewProjection * posW;\n\t\t#endif\n\t\t#ifdef PIXELSNAP\n\t\t\tscreenPos.xy = (screenPos.xy * 0.5) + 0.5;\n\t\t\tscreenPos.xy *= uScreenSize.xy;\n\t\t\tscreenPos.xy = floor(screenPos.xy);\n\t\t\tscreenPos.xy *= uScreenSize.zw;\n\t\t\tscreenPos.xy = (screenPos.xy * 2.0) - 1.0;\n\t\t#endif\n\t#endif\n\treturn screenPos;\n}\nvec3 getWorldPosition() {\n\treturn dPositionW;\n}\n`;\n\nvar transformCoreVS$1 = `\nattribute vec4 vertex_position;\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\n#ifdef MORPHING\n\tuniform vec2 morph_tex_params;\n\tattribute uint morph_vertex_id;\n\tivec2 getTextureMorphCoords() {\n\t\tivec2 textureSize = ivec2(morph_tex_params);\n\t\tint morphGridV = int(morph_vertex_id) / textureSize.x;\n\t\tint morphGridU = int(morph_vertex_id) - (morphGridV * textureSize.x);\n\t\t#ifdef WEBGPU\n\t\t\tmorphGridV = textureSize.y - morphGridV - 1;\n\t\t#endif\n\t\treturn ivec2(morphGridU, morphGridV);\n\t}\n\t#ifdef MORPHING_POSITION\n\t\t#ifdef MORPHING_INT\n\t\t\tuniform vec3 aabbSize;\n\t\t\tuniform vec3 aabbMin;\n\t\t\tuniform usampler2D morphPositionTex;\n\t\t#else\n\t\t\tuniform highp sampler2D morphPositionTex;\n\t\t#endif\n\t#endif\n#endif\n#ifdef defined(BATCH)\n\t#include \"skinBatchVS\"\n\tmat4 getModelMatrix() {\n\t\treturn getBoneMatrix(vertex_boneIndices);\n\t}\n#elif defined(SKIN)\n\t#include \"skinVS\"\n\tmat4 getModelMatrix() {\n\t\treturn matrix_model * getSkinMatrix(vertex_boneIndices, vertex_boneWeights);\n\t}\n#elif defined(INSTANCING)\n\t#include \"transformInstancingVS\"\n#else\n\tmat4 getModelMatrix() {\n\t\treturn matrix_model;\n\t}\n#endif\nvec3 getLocalPosition(vec3 vertexPosition) {\n\tvec3 localPos = vertexPosition;\n\t#ifdef MORPHING_POSITION\n\t\tivec2 morphUV = getTextureMorphCoords();\n\t\t#ifdef MORPHING_INT\n\t\t\tvec3 morphPos = vec3(texelFetch(morphPositionTex, ivec2(morphUV), 0).xyz) / 65535.0 * aabbSize + aabbMin;\n\t\t#else\n\t\t\tvec3 morphPos = texelFetch(morphPositionTex, ivec2(morphUV), 0).xyz;\n\t\t#endif\n\t\tlocalPos += morphPos;\n\t#endif\n\treturn localPos;\n}\n`;\n\nvar transformInstancingVS$1 = `\nattribute vec4 instance_line1;\nattribute vec4 instance_line2;\nattribute vec4 instance_line3;\nattribute vec4 instance_line4;\nmat4 getModelMatrix() {\n\treturn matrix_model * mat4(instance_line1, instance_line2, instance_line3, instance_line4);\n}\n`;\n\nvar transmissionPS$1 = `\n#ifdef STD_REFRACTION_CONSTANT\nuniform float material_refraction;\n#endif\nvoid getRefraction() {\n\tfloat refraction = 1.0;\n\t#ifdef STD_REFRACTION_CONSTANT\n\trefraction = material_refraction;\n\t#endif\n\t#ifdef STD_REFRACTION_TEXTURE\n\trefraction *= texture2DBias({STD_REFRACTION_TEXTURE_NAME}, {STD_REFRACTION_TEXTURE_UV}, textureBias).{STD_REFRACTION_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_REFRACTION_VERTEX\n\trefraction *= saturate(vVertexColor.{STD_REFRACTION_VERTEX_CHANNEL});\n\t#endif\n\tdTransmission = refraction;\n}\n`;\n\nvar twoSidedLightingPS$1 = `\nuniform float twoSidedLightingNegScaleFactor;\nvoid handleTwoSidedLighting() {\n\tdTBN[2] *= gl_FrontFacing ? twoSidedLightingNegScaleFactor : -twoSidedLightingNegScaleFactor;\n}\n`;\n\nvar uv0VS$1 = `\n#ifdef NINESLICED\n\tvec2 getUv0() {\n\t\tvec2 uv = vertex_position.xz;\n\t\tvec2 positiveUnitOffset = clamp(vertex_position.xz, vec2(0.0), vec2(1.0));\n\t\tvec2 negativeUnitOffset = clamp(-vertex_position.xz, vec2(0.0), vec2(1.0));\n\t\tuv += (-positiveUnitOffset * innerOffset.xy + negativeUnitOffset * innerOffset.zw) * vertex_texCoord0.xy;\n\t\tuv = uv * -0.5 + 0.5;\n\t\tuv = uv * atlasRect.zw + atlasRect.xy;\n\t\tvMask = vertex_texCoord0.xy;\n\t\treturn uv;\n\t}\n#else\n\tvec2 getUv0() {\n\t\treturn vertex_texCoord0;\n\t}\n#endif\n`;\n\nvar uv1VS$1 = `\nvec2 getUv1() {\n\treturn vertex_texCoord1;\n}\n`;\n\nvar uvTransformVS$1 = `\nvUV{TRANSFORM_UV_{i}}_{TRANSFORM_ID_{i}} = vec2(\n\tdot(vec3(uv{TRANSFORM_UV_{i}}, 1), {TRANSFORM_NAME_{i}}0),\n\tdot(vec3(uv{TRANSFORM_UV_{i}}, 1), {TRANSFORM_NAME_{i}}1)\n);\n`;\n\nvar uvTransformUniformsPS$1 = `\n\tuniform vec3 {TRANSFORM_NAME_{i}}0;\n\tuniform vec3 {TRANSFORM_NAME_{i}}1;\n`;\n\nvar viewDirPS$1 = `\nvoid getViewDir() {\n\tdViewDirW = normalize(view_position - vPositionW);\n}\n`;\n\nconst shaderChunksGLSL = {\n\t\talphaTestPS: alphaTestPS$1,\n\t\tambientPS: ambientPS$1,\n\t\tanisotropyPS: anisotropyPS$1,\n\t\taoPS: aoPS$1,\n\t\taoDiffuseOccPS: aoDiffuseOccPS$1,\n\t\taoSpecOccPS: aoSpecOccPS$1,\n\t\tbakeDirLmEndPS: bakeDirLmEndPS$1,\n\t\tbakeLmEndPS: bakeLmEndPS$1,\n\t\tbasePS: basePS$1,\n\t\tbaseNineSlicedPS: baseNineSlicedPS$1,\n\t\tbaseNineSlicedTiledPS: baseNineSlicedTiledPS$1,\n\t\tbayerPS: bayerPS$1,\n\t\tblurVSMPS: blurVSMPS$1,\n\t\tclearCoatPS: clearCoatPS$1,\n\t\tclearCoatGlossPS: clearCoatGlossPS$1,\n\t\tclearCoatNormalPS: clearCoatNormalPS$1,\n\t\tclusteredLightCookiesPS: clusteredLightCookiesPS$1,\n\t\tclusteredLightShadowsPS: clusteredLightShadowsPS$1,\n\t\tclusteredLightUtilsPS: clusteredLightUtilsPS$1,\n\t\tclusteredLightPS: clusteredLightPS$1,\n\t\tcombinePS: combinePS$1,\n\t\tcookieBlit2DPS: cookieBlit2DPS$1,\n\t\tcookieBlitCubePS: cookieBlitCubePS$1,\n\t\tcookieBlitVS: cookieBlitVS$1,\n\t\tcookiePS,\n\t\tcubeMapProjectPS: cubeMapProjectPS$1,\n\t\tcubeMapRotatePS: cubeMapRotatePS$1,\n\t\tdebugOutputPS: debugOutputPS$1,\n\t\tdebugProcessFrontendPS: debugProcessFrontendPS$1,\n\t\tdetailModesPS: detailModesPS$1,\n\t\tdiffusePS: diffusePS$1,\n\t\tdecodePS: decodePS$1,\n\t\temissivePS: emissivePS$1,\n\t\tencodePS: encodePS$1,\n\t\tendPS: endPS$1,\n\t\tenvAtlasPS: envAtlasPS$1,\n\t\tenvProcPS: envProcPS$1,\n\t\tfalloffInvSquaredPS: falloffInvSquaredPS$1,\n\t\tfalloffLinearPS: falloffLinearPS$1,\n\t\tfloatAsUintPS: floatAsUintPS$1,\n\t\tfogPS: fogPS$1,\n\t\tfresnelSchlickPS: fresnelSchlickPS$1,\n\t\tfrontendCodePS: '',\n\t\tfrontendDeclPS: '',\n\t\tfullscreenQuadVS: fullscreenQuadVS$1,\n\t\tgammaPS: gammaPS$1,\n\t\tgles3PS,\n\t\tgles3VS,\n\t\tglossPS: glossPS$1,\n\t\tgsplatCenterVS: gsplatCenterVS$1,\n\t\tgsplatCornerVS: gsplatCornerVS$1,\n\t\tgsplatColorVS: gsplatColorVS$1,\n\t\tgsplatCommonVS: gsplatCommonVS$1,\n\t\tgsplatCompressedDataVS: gsplatCompressedDataVS$1,\n\t\tgsplatCompressedSHVS: gsplatCompressedSHVS$1,\n\t\tgsplatEvalSHVS: gsplatEvalSHVS$1,\n\t\tgsplatQuatToMat3VS: gsplatQuatToMat3VS$1,\n\t\tgsplatSogsColorVS: gsplatSogsColorVS$1,\n\t\tgsplatSogsDataVS: gsplatSogsDataVS$1,\n\t\tgsplatSogsSHVS: gsplatSogsSHVS$1,\n\t\tgsplatSourceFormatVS: gsplatSourceFormatVS$1,\n\t\tgsplatStructsVS: gsplatStructsVS$1,\n\t\tgsplatDataVS: gsplatDataVS$1,\n\t\tgsplatOutputVS: gsplatOutputVS$1,\n\t\tgsplatPS: gsplatPS$1,\n\t\tgsplatSHVS: gsplatSHVS$1,\n\t\tgsplatSourceVS: gsplatSourceVS$1,\n\t\tgsplatVS: gsplatVS$1,\n\t\tgsplatWorkBufferVS: gsplatWorkBufferVS$1,\n\t\tgsplatPackingPS: gsplatPackingPS$1,\n\t\tquadVS: quadVS$1,\n\t\timmediateLinePS: immediateLinePS$1,\n\t\timmediateLineVS: immediateLineVS$1,\n\t\tiridescenceDiffractionPS: iridescenceDiffractionPS$1,\n\t\tiridescencePS: iridescencePS$1,\n\t\tiridescenceThicknessPS: iridescenceThicknessPS$1,\n\t\tiorPS: iorPS$1,\n\t\tlightDeclarationPS: lightDeclarationPS$1,\n\t\tlightDiffuseLambertPS: lightDiffuseLambertPS$1,\n\t\tlightDirPointPS: lightDirPointPS$1,\n\t\tlightEvaluationPS: lightEvaluationPS$1,\n\t\tlightFunctionLightPS: lightFunctionLightPS$1,\n\t\tlightFunctionShadowPS: lightFunctionShadowPS$1,\n\t\tlightingPS: lightingPS$1,\n\t\tlightmapAddPS: lightmapAddPS$1,\n\t\tlightmapPS: lightmapPS$1,\n\t\tlightSpecularAnisoGGXPS: lightSpecularAnisoGGXPS$1,\n\t\tlightSpecularBlinnPS: lightSpecularBlinnPS$1,\n\t\tlightSheenPS: lightSheenPS$1,\n\t\tlinearizeDepthPS: linearizeDepthPS$1,\n\t\tlitForwardBackendPS: litForwardBackendPS$1,\n\t\tlitForwardDeclarationPS: litForwardDeclarationPS$1,\n\t\tlitForwardMainPS: litForwardMainPS$1,\n\t\tlitForwardPostCodePS: litForwardPostCodePS$1,\n\t\tlitForwardPreCodePS: litForwardPreCodePS$1,\n\t\tlitMainPS: litMainPS$1,\n\t\tlitMainVS: litMainVS$1,\n\t\tlitOtherMainPS: litOtherMainPS$1,\n\t\tlitShaderArgsPS: litShaderArgsPS$1,\n\t\tlitShaderCorePS: litShaderCorePS$1,\n\t\tlitShadowMainPS: litShadowMainPS$1,\n\t\tlitUserDeclarationPS: '',\n\t\tlitUserDeclarationVS: '',\n\t\tlitUserCodePS: '',\n\t\tlitUserCodeVS: '',\n\t\tlitUserMainStartPS: '',\n\t\tlitUserMainStartVS: '',\n\t\tlitUserMainEndPS: '',\n\t\tlitUserMainEndVS: '',\n\t\tltcPS: ltcPS$1,\n\t\tmetalnessPS: metalnessPS$1,\n\t\tmetalnessModulatePS: metalnessModulatePS$1,\n\t\tmorphPS: morphPS$1,\n\t\tmorphVS: morphVS$1,\n\t\tmsdfPS: msdfPS$1,\n\t\tmsdfVS: msdfVS$1,\n\t\tnormalVS: normalVS$1,\n\t\tnormalCoreVS: normalCoreVS$1,\n\t\tnormalMapPS: normalMapPS$1,\n\t\topacityPS: opacityPS$1,\n\t\topacityDitherPS: opacityDitherPS$1,\n\t\toutputPS: outputPS$1,\n\t\toutputAlphaPS: outputAlphaPS$1,\n\t\toutputTex2DPS: outputTex2DPS$1,\n\t\tsheenPS: sheenPS$1,\n\t\tsheenGlossPS: sheenGlossPS$1,\n\t\tparallaxPS: parallaxPS$1,\n\t\tpickPS: pickPS$1,\n\t\treflDirPS: reflDirPS$1,\n\t\treflDirAnisoPS: reflDirAnisoPS$1,\n\t\treflectionCCPS: reflectionCCPS$1,\n\t\treflectionCubePS: reflectionCubePS$1,\n\t\treflectionEnvHQPS: reflectionEnvHQPS$1,\n\t\treflectionEnvPS: reflectionEnvPS$1,\n\t\treflectionSpherePS: reflectionSpherePS$1,\n\t\treflectionSheenPS: reflectionSheenPS$1,\n\t\trefractionCubePS: refractionCubePS$1,\n\t\trefractionDynamicPS: refractionDynamicPS$1,\n\t\treprojectPS: reprojectPS$1,\n\t\treprojectVS: reprojectVS$1,\n\t\tscreenDepthPS: screenDepthPS$1,\n\t\tshadowCascadesPS: shadowCascadesPS$1,\n\t\tshadowEVSMPS: shadowEVSMPS$1,\n\t\tshadowPCF1PS: shadowPCF1PS$1,\n\t\tshadowPCF3PS: shadowPCF3PS$1,\n\t\tshadowPCF5PS: shadowPCF5PS$1,\n\t\tshadowPCSSPS,\n\t\tshadowSoftPS: shadowSoftPS$1,\n\t\tskinBatchVS: skinBatchVS$1,\n\t\tskinVS: skinVS$1,\n\t\tskyboxPS: skyboxPS$1,\n\t\tskyboxVS: skyboxVS$1,\n\t\tspecularPS: specularPS$1,\n\t\tsphericalPS: sphericalPS$1,\n\t\tspecularityFactorPS: specularityFactorPS$1,\n\t\tspotPS: spotPS$1,\n\t\tstartNineSlicedPS: startNineSlicedPS$1,\n\t\tstartNineSlicedTiledPS: startNineSlicedTiledPS$1,\n\t\tstdDeclarationPS: stdDeclarationPS$1,\n\t\tstdFrontEndPS: stdFrontEndPS$1,\n\t\tTBNPS: TBNPS$1,\n\t\tthicknessPS: thicknessPS$1,\n\t\ttonemappingPS: tonemappingPS$1,\n\t\ttonemappingAcesPS: tonemappingAcesPS$1,\n\t\ttonemappingAces2PS: tonemappingAces2PS$1,\n\t\ttonemappingFilmicPS: tonemappingFilmicPS$1,\n\t\ttonemappingHejlPS: tonemappingHejlPS$1,\n\t\ttonemappingLinearPS: tonemappingLinearPS$1,\n\t\ttonemappingNeutralPS: tonemappingNeutralPS$1,\n\t\ttonemappingNonePS: tonemappingNonePS$1,\n\t\ttransformVS: transformVS$1,\n\t\ttransformCoreVS: transformCoreVS$1,\n\t\ttransformInstancingVS: transformInstancingVS$1,\n\t\ttransmissionPS: transmissionPS$1,\n\t\ttwoSidedLightingPS: twoSidedLightingPS$1,\n\t\tuv0VS: uv0VS$1,\n\t\tuv1VS: uv1VS$1,\n\t\tuvTransformVS: uvTransformVS$1,\n\t\tuvTransformUniformsPS: uvTransformUniformsPS$1,\n\t\tviewDirPS: viewDirPS$1,\n\t\twebgpuPS: webgpuPS$1,\n\t\twebgpuVS: webgpuVS$1\n};\n\nvar alphaTestPS = `\nuniform alpha_ref: f32;\nfn alphaTest(a: f32) {\n\tif (a < uniform.alpha_ref) {\n\t\tdiscard;\n\t}\n}\n`;\n\nvar ambientPS = `\n#if LIT_AMBIENT_SOURCE == AMBIENTSH\n\tuniform ambientSH: array<vec3f, 9>;\n#endif\n#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t#include \"envAtlasPS\"\n\t#ifndef ENV_ATLAS\n\t\t#define ENV_ATLAS\n\t\tvar texture_envAtlas: texture_2d<f32>;\n\t\tvar texture_envAtlasSampler: sampler;\n\t#endif\n#endif\nfn addAmbient(worldNormal: vec3f) {\n\t#ifdef LIT_AMBIENT_SOURCE == AMBIENTSH\n\t\tlet n: vec3f = cubeMapRotate(worldNormal);\n\t\tlet color: vec3f =\n\t\t\tuniform.ambientSH[0] +\n\t\t\tuniform.ambientSH[1] * n.x +\n\t\t\tuniform.ambientSH[2] * n.y +\n\t\t\tuniform.ambientSH[3] * n.z +\n\t\t\tuniform.ambientSH[4] * n.x * n.z +\n\t\t\tuniform.ambientSH[5] * n.z * n.y +\n\t\t\tuniform.ambientSH[6] * n.y * n.x +\n\t\t\tuniform.ambientSH[7] * (3.0 * n.z * n.z - 1.0) +\n\t\t\tuniform.ambientSH[8] * (n.x * n.x - n.y * n.y);\n\t\tdDiffuseLight += processEnvironment(max(color, vec3f(0.0)));\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == ENVALATLAS\n\t\tlet dir: vec3f = normalize(cubeMapRotate(worldNormal) * vec3f(-1.0, 1.0, 1.0));\n\t\tlet uv: vec2f = mapUv(toSphericalUv(dir), vec4f(128.0, 256.0 + 128.0, 64.0, 32.0) / atlasSize);\n\t\tlet raw: vec4f = textureSample(texture_envAtlas, texture_envAtlasSampler, uv);\n\t\tlet linear: vec3f = {ambientDecode}(raw);\n\t\tdDiffuseLight += processEnvironment(linear);\n\t#endif\n\t#if LIT_AMBIENT_SOURCE == CONSTANT\n\t\tdDiffuseLight += uniform.light_globalAmbient;\n\t#endif\n}\n`;\n\nvar anisotropyPS = `\n#ifdef LIT_GGX_SPECULAR\n\tuniform material_anisotropyIntensity: f32;\n\tuniform material_anisotropyRotation: vec2f;\n#endif\nfn getAnisotropy() {\n\tdAnisotropy = 0.0;\n\tdAnisotropyRotation = vec2f(1.0, 0.0);\n#ifdef LIT_GGX_SPECULAR\n\tdAnisotropy = uniform.material_anisotropyIntensity;\n\tdAnisotropyRotation = uniform.material_anisotropyRotation;\n#endif\n#ifdef STD_ANISOTROPY_TEXTURE\n\tlet anisotropyTex: vec3f = textureSampleBias({STD_ANISOTROPY_TEXTURE_NAME}, {STD_ANISOTROPY_TEXTURE_NAME}Sampler, {STD_ANISOTROPY_TEXTURE_UV}, uniform.textureBias).rgb;\n\tdAnisotropy *= anisotropyTex.b;\n\tlet anisotropyRotationFromTex: vec2f = anisotropyTex.rg * 2.0 - vec2f(1.0);\n\tlet rotationMatrix: mat2x2f = mat2x2f(dAnisotropyRotation.x, dAnisotropyRotation.y, -dAnisotropyRotation.y, dAnisotropyRotation.x);\n\tdAnisotropyRotation = rotationMatrix * anisotropyRotationFromTex;\n#endif\n\tdAnisotropy = clamp(dAnisotropy, 0.0, 1.0);\n}\n`;\n\nvar aoPS = `\n#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\tuniform material_aoIntensity: f32;\n#endif\n#ifdef STD_AODETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nfn getAO() {\n\tdAo = 1.0;\n\t#ifdef STD_AO_TEXTURE\n\t\tvar aoBase: f32 = textureSampleBias({STD_AO_TEXTURE_NAME}, {STD_AO_TEXTURE_NAME}Sampler, {STD_AO_TEXTURE_UV}, uniform.textureBias).{STD_AO_TEXTURE_CHANNEL};\n\t\t#ifdef STD_AODETAIL_TEXTURE\n\t\t\tvar aoDetail: f32 = textureSampleBias({STD_AODETAIL_TEXTURE_NAME}, {STD_AODETAIL_TEXTURE_NAME}Sampler, {STD_AODETAIL_TEXTURE_UV}, uniform.textureBias).{STD_AODETAIL_TEXTURE_CHANNEL};\n\t\t\taoBase = detailMode_{STD_AODETAIL_DETAILMODE}(vec3f(aoBase), vec3f(aoDetail)).r;\n\t\t#endif\n\t\tdAo = dAo * aoBase;\n\t#endif\n\t#ifdef STD_AO_VERTEX\n\t\tdAo = dAo * saturate(vVertexColor.{STD_AO_VERTEX_CHANNEL});\n\t#endif\n\t#if defined(STD_AO_TEXTURE) || defined(STD_AO_VERTEX)\n\t\tdAo = mix(1.0, dAo, uniform.material_aoIntensity);\n\t#endif\n}\n`;\n\nvar aoDiffuseOccPS = `\nfn occludeDiffuse(ao: f32) {\n\tdDiffuseLight = dDiffuseLight * ao;\n}\n`;\n\nvar aoSpecOccPS = `\n#if LIT_OCCLUDE_SPECULAR != NONE\n\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\tuniform material_occludeSpecularIntensity: f32;\n\t#endif\n#endif\nfn occludeSpecular(gloss: f32, ao: f32, worldNormal: vec3f, viewDir: vec3f) {\n\t#if LIT_OCCLUDE_SPECULAR == AO\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tvar specOcc: f32 = mix(1.0, ao, uniform.material_occludeSpecularIntensity);\n\t\t#else\n\t\t\tvar specOcc: f32 = ao;\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR == GLOSSDEPENDENT\n\t\tvar specPow: f32 = exp2(gloss * 11.0);\n\t\tvar specOcc: f32 = saturate(pow(dot(worldNormal, viewDir) + ao, 0.01 * specPow) - 1.0 + ao);\n\t\t#ifdef LIT_OCCLUDE_SPECULAR_FLOAT\n\t\t\tspecOcc = mix(1.0, specOcc, uniform.material_occludeSpecularIntensity);\n\t\t#endif\n\t#endif\n\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\tdSpecularLight = dSpecularLight * specOcc;\n\t\tdReflection = dReflection * specOcc;\n\t\t#ifdef LIT_SHEEN\n\t\t\tsSpecularLight = sSpecularLight * specOcc;\n\t\t\tsReflection = sReflection * specOcc;\n\t\t#endif\n\t#endif\n}\n`;\n\nvar bakeDirLmEndPS = `\n\tlet dirLm = textureSample(texture_dirLightMap, texture_dirLightMapSampler, vUv1);\n\tif (uniform.bakeDir > 0.5) {\n\t\tif (dAtten > 0.00001) {\n\t\t\tlet unpacked_dir = dirLm.xyz * 2.0 - vec3f(1.0);\n\t\t\tdAtten = clamp(dAtten, 0.0, 1.0);\n\t\t\tlet combined_dir = dLightDirNormW.xyz * dAtten + unpacked_dir * dirLm.w;\n\t\t\tlet finalRgb = normalize(combined_dir) * 0.5 + vec3f(0.5);\n\t\t\tlet finalA = max(dirLm.w + dAtten, 1.0 / 255.0);\n\t\t\toutput.color = vec4f(finalRgb, finalA);\n\t\t} else {\n\t\t\toutput.color = dirLm;\n\t\t}\n\t} else {\n\t\tlet alpha_min = select(0.0, 1.0 / 255.0, dAtten > 0.00001);\n\t\tlet finalA = max(dirLm.w, alpha_min);\n\t\toutput.color = vec4f(dirLm.rgb, finalA);\n\t}\n`;\n\nvar bakeLmEndPS = `\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tdDiffuseLight = ((dDiffuseLight - 0.5) * max(uniform.ambientBakeOcclusionContrast + 1.0, 0.0)) + 0.5;\n\tdDiffuseLight = dDiffuseLight + vec3f(uniform.ambientBakeOcclusionBrightness);\n\tdDiffuseLight = saturate3(dDiffuseLight);\n\tdDiffuseLight = dDiffuseLight * dAmbientLight;\n#endif\n#ifdef LIGHTMAP_RGBM\n\tvar temp_color_rgbm = vec4f(dDiffuseLight, 1.0);\n\ttemp_color_rgbm = vec4f(pow(temp_color_rgbm.rgb, vec3f(0.5)), temp_color_rgbm.a);\n\ttemp_color_rgbm = vec4f(temp_color_rgbm.rgb / 8.0, temp_color_rgbm.a);\n\tlet max_g_b = max(temp_color_rgbm.g, max(temp_color_rgbm.b, 1.0 / 255.0));\n\tlet max_rgb = max(temp_color_rgbm.r, max_g_b);\n\ttemp_color_rgbm.a = clamp(max_rgb, 0.0, 1.0);\n\ttemp_color_rgbm.a = ceil(temp_color_rgbm.a * 255.0) / 255.0;\n\ttemp_color_rgbm = vec4f(temp_color_rgbm.rgb / temp_color_rgbm.a, temp_color_rgbm.a);\n\toutput.color = temp_color_rgbm;\n#else\n\toutput.color = vec4f(dDiffuseLight, 1.0);\n#endif\n`;\n\nvar basePS = `\nuniform view_position: vec3f;\nuniform light_globalAmbient: vec3f;\nfn square(x: f32) -> f32 {\n\treturn x*x;\n}\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nfn saturate3(x: vec3f) -> vec3f {\n\treturn clamp(x, vec3f(0.0), vec3f(1.0));\n}\n`;\n\nvar baseNineSlicedPS = `\n#define NINESLICED\nvarying vMask: vec2f;\nvarying vTiledUv: vec2f;\nuniform innerOffset: vec4f;\nuniform outerScale: vec2f;\nuniform atlasRect: vec4f;\nvar<private> nineSlicedUv: vec2f;\n`;\n\nvar baseNineSlicedTiledPS = `\n#define NINESLICED\n#define NINESLICETILED\nvarying vMask: vec2f;\nvarying vTiledUv: vec2f;\nuniform innerOffset: vec4f;\nuniform outerScale: vec2f;\nuniform atlasRect: vec4f;\nvar<private> nineSlicedUv: vec2f;\n`;\n\nvar bayerPS = `\nfn bayer2(p: vec2f) -> f32 {\n\treturn (2.0 * p.y + p.x + 1.0) % 4.0;\n}\nfn bayer4(p: vec2f) -> f32 {\n\tlet p1: vec2f = p % vec2f(2.0);\n\tlet p2: vec2f = floor(0.5 * (p % vec2f(4.0)));\n\treturn 4.0 * bayer2(p1) + bayer2(p2);\n}\nfn bayer8(p: vec2f) -> f32 {\n\tlet p1: vec2f = p % vec2f(2.0);\n\tlet p2: vec2f = floor(0.5 * (p % vec2f(4.0)));\n\tlet p4: vec2f = floor(0.25 * (p % vec2f(8.0)));\n\treturn 4.0 * (4.0 * bayer2(p1) + bayer2(p2)) + bayer2(p4);\n}\n`;\n\nvar blurVSMPS = `\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\n#ifdef GAUSS\n\tuniform weight: array<f32, {SAMPLES}>;\n#endif\nuniform pixelOffset: vec2f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tvar moments: vec3f = vec3f(0.0);\n\tlet uv: vec2f = input.vUv0 - uniform.pixelOffset * (f32({SAMPLES}) * 0.5);\n\tfor (var i: i32 = 0; i < {SAMPLES}; i = i + 1) {\n\t\tlet c: vec4f = textureSample(source, sourceSampler, uv + uniform.pixelOffset * f32(i));\n\t\t#ifdef GAUSS\n\t\t\tmoments = moments + c.xyz * uniform.weight[i].element;\n\t\t#else\n\t\t\tmoments = moments + c.xyz;\n\t\t#endif\n\t}\n\t#ifndef GAUSS\n\t\tmoments = moments * (1.0 / f32({SAMPLES}));\n\t#endif\n\toutput.color = vec4f(moments, 1.0);\n\treturn output;\n}\n`;\n\nvar clearCoatPS = `\nuniform material_clearCoat: f32;\nfn getClearCoat() {\n\tccSpecularity = uniform.material_clearCoat;\n\t#ifdef STD_CLEARCOAT_TEXTURE\n\tccSpecularity = ccSpecularity * textureSampleBias({STD_CLEARCOAT_TEXTURE_NAME}, {STD_CLEARCOAT_TEXTURE_NAME}Sampler, {STD_CLEARCOAT_TEXTURE_UV}, uniform.textureBias).{STD_CLEARCOAT_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOAT_VERTEX\n\tccSpecularity = ccSpecularity * saturate(vVertexColor.{STD_CLEARCOAT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar clearCoatGlossPS = `\n\tuniform material_clearCoatGloss: f32;\nfn getClearCoatGlossiness() {\n\tccGlossiness = uniform.material_clearCoatGloss;\n\t#ifdef STD_CLEARCOATGLOSS_TEXTURE\n\tccGlossiness = ccGlossiness * textureSampleBias({STD_CLEARCOATGLOSS_TEXTURE_NAME}, {STD_CLEARCOATGLOSS_TEXTURE_NAME}Sampler, {STD_CLEARCOATGLOSS_TEXTURE_UV}, uniform.textureBias).{STD_CLEARCOATGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_VERTEX\n\tccGlossiness = ccGlossiness * saturate(vVertexColor.{STD_CLEARCOATGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_CLEARCOATGLOSS_INVERT\n\tccGlossiness = 1.0 - ccGlossiness;\n\t#endif\n\tccGlossiness += 0.0000001;\n}\n`;\n\nvar clearCoatNormalPS = `\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\n\tuniform material_clearCoatBumpiness: f32;\n#endif\nfn getClearCoatNormal() {\n#ifdef STD_CLEARCOATNORMAL_TEXTURE\n\tvar normalMap: vec3f = {STD_CLEARCOATNORMAL_TEXTURE_DECODE}(textureSampleBias({STD_CLEARCOATNORMAL_TEXTURE_NAME}, {STD_CLEARCOATNORMAL_TEXTURE_NAME}Sampler, {STD_CLEARCOATNORMAL_TEXTURE_UV}, uniform.textureBias));\n\tnormalMap = mix(vec3f(0.0, 0.0, 1.0), normalMap, uniform.material_clearCoatBumpiness);\n\tccNormalW = normalize(dTBN * normalMap);\n#else\n\tccNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar clusteredLightUtilsPS = `\nstruct FaceCoords {\n\tuv: vec2f,\n\tfaceIndex: f32,\n\ttileOffset: vec2f,\n}\nfn getCubemapFaceCoordinates(dir: vec3f) -> FaceCoords {\n\tvar faceIndex: f32;\n\tvar tileOffset: vec2f;\n\tvar uv: vec2f;\n\tlet vAbs: vec3f = abs(dir);\n\tvar ma: f32;\n\tif (vAbs.z >= vAbs.x && vAbs.z >= vAbs.y) {\n\t\tlet is_neg_z = dir.z < 0.0;\n\t\tfaceIndex = select(4.0, 5.0, is_neg_z);\n\t\tma = 0.5 / vAbs.z;\n\t\tuv = vec2f(select(dir.x, -dir.x, is_neg_z), -dir.y);\n\t\ttileOffset = vec2f(2.0, select(0.0, 1.0, is_neg_z));\n\t} else if (vAbs.y >= vAbs.x) {\n\t\tlet is_neg_y = dir.y < 0.0;\n\t\tfaceIndex = select(2.0, 3.0, is_neg_y);\n\t\tma = 0.5 / vAbs.y;\n\t\tuv = vec2f(dir.x, select(dir.z, -dir.z, is_neg_y));\n\t\ttileOffset = vec2f(1.0, select(0.0, 1.0, is_neg_y));\n\t} else {\n\t\tlet is_neg_x = dir.x < 0.0;\n\t\tfaceIndex = select(0.0, 1.0, is_neg_x);\n\t\tma = 0.5 / vAbs.x;\n\t\tuv = vec2f(select(-dir.z, dir.z, is_neg_x), -dir.y);\n\t\ttileOffset = vec2f(0.0, select(0.0, 1.0, is_neg_x));\n\t}\n\tuv = uv * ma + 0.5;\n\treturn FaceCoords(uv, faceIndex, tileOffset);\n}\nfn getCubemapAtlasCoordinates(omniAtlasViewport: vec3f, shadowEdgePixels: f32, shadowTextureResolution: f32, dir: vec3f) -> vec2f {\n\tlet faceData: FaceCoords = getCubemapFaceCoordinates(dir);\n\tvar uv: vec2f = faceData.uv;\n\tlet tileOffset: vec2f = faceData.tileOffset;\n\tlet atlasFaceSize: f32 = omniAtlasViewport.z;\n\tlet tileSize: f32 = shadowTextureResolution * atlasFaceSize;\n\tvar offset: f32 = shadowEdgePixels / tileSize;\n\tuv = uv * (1.0 - offset * 2.0) + offset;\n\tuv = uv * atlasFaceSize;\n\tuv = uv + tileOffset * atlasFaceSize;\n\tuv = uv + omniAtlasViewport.xy;\n\treturn uv;\n}\n`;\n\nvar clusteredLightCookiesPS = `\nfn _getCookieClustered(tex: texture_2d<f32>, texSampler: sampler, uv: vec2f, intensity: f32, cookieChannel: vec4f) -> vec3f {\n\tlet pixel: vec4f = mix(vec4f(1.0), textureSampleLevel(tex, texSampler, uv, 0.0), intensity);\n\tlet isRgb: bool = dot(cookieChannel.rgb, vec3f(1.0)) == 3.0;\n\treturn select(vec3f(dot(pixel, cookieChannel)), pixel.rgb, isRgb);\n}\nfn getCookie2DClustered(tex: texture_2d<f32>, texSampler: sampler, transform: mat4x4f, worldPosition: vec3f, intensity: f32, cookieChannel: vec4f) -> vec3f {\n\tlet projPos: vec4f = transform * vec4f(worldPosition, 1.0);\n\treturn _getCookieClustered(tex, texSampler, projPos.xy / projPos.w, intensity, cookieChannel);\n}\nfn getCookieCubeClustered(tex: texture_2d<f32>, texSampler: sampler, dir: vec3f, intensity: f32, cookieChannel: vec4f, shadowTextureResolution: f32, shadowEdgePixels: f32, omniAtlasViewport: vec3f) -> vec3f {\n\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, dir);\n\treturn _getCookieClustered(tex, texSampler, uv, intensity, cookieChannel);\n}\n`;\n\nvar clusteredLightShadowsPS = `\nfn _getShadowCoordPerspZbuffer(shadowMatrix: mat4x4f, shadowParams: vec4f, wPos: vec3f) -> vec3f {\n\tvar projPos = shadowMatrix * vec4f(wPos, 1.0);\n\treturn projPos.xyz / projPos.w;\n}\nfn getShadowCoordPerspZbufferNormalOffset(shadowMatrix: mat4x4f, shadowParams: vec4f, normal: vec3f) -> vec3f {\n\tlet wPos: vec3f = vPositionW + normal * shadowParams.y;\n\treturn _getShadowCoordPerspZbuffer(shadowMatrix, shadowParams, wPos);\n}\nfn normalOffsetPointShadow(shadowParams: vec4f, lightPos: vec3f, lightDir: vec3f, lightDirNorm: vec3f, normal: vec3f) -> vec3f {\n\tlet distScale: f32 = length(lightDir);\n\tlet wPos: vec3f = vPositionW + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\tlet dir: vec3f = wPos - lightPos;\n\treturn dir;\n}\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfn getShadowOmniClusteredPCF1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowParams: vec4f, omniAtlasViewport: vec3f, shadowEdgePixels: f32, lightDir: vec3f) -> f32 {\n\t\tlet shadowTextureResolution: f32 = shadowParams.x;\n\t\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tlet shadowZ: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, uv, shadowZ);\n\t}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfn getShadowOmniClusteredPCF3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowParams: vec4f, omniAtlasViewport: vec3f, shadowEdgePixels: f32, lightDir: vec3f) -> f32 {\n\t\tlet shadowTextureResolution: f32 = shadowParams.x;\n\t\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tlet shadowZ: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tlet shadowCoord: vec3f = vec3f(uv, shadowZ);\n\t\treturn getShadowPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfn getShadowOmniClusteredPCF5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowParams: vec4f, omniAtlasViewport: vec3f, shadowEdgePixels: f32, lightDir: vec3f) -> f32 {\n\t\tlet shadowTextureResolution: f32 = shadowParams.x;\n\t\tlet uv: vec2f = getCubemapAtlasCoordinates(omniAtlasViewport, shadowEdgePixels, shadowTextureResolution, lightDir);\n\t\tlet shadowZ: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\t\tlet shadowCoord: vec3f = vec3f(uv, shadowZ);\n\t\treturn getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\tfn getShadowSpotClusteredPCF1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\t\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, shadowCoord.xy, shadowCoord.z);\n\t}\n#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF3)\n\tfn getShadowSpotClusteredPCF3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\t\treturn getShadowSpotPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n\t#if defined(CLUSTER_SHADOW_TYPE_PCF5)\n\tfn getShadowSpotClusteredPCF5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\t\treturn getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams);\n\t}\n#endif\n`;\n\nvar clusteredLightPS = `\n#include \"lightBufferDefinesPS\"\n#include \"clusteredLightUtilsPS\"\n#ifdef CLUSTER_COOKIES\n\t#include \"clusteredLightCookiesPS\"\n#endif\n#ifdef CLUSTER_SHADOWS\n\t#include \"clusteredLightShadowsPS\"\n#endif\nvar clusterWorldTexture: texture_2d<f32>;\nvar lightsTexture: texture_2d<uff>;\n#ifdef CLUSTER_SHADOWS\n\tvar shadowAtlasTexture: texture_depth_2d;\n\tvar shadowAtlasTextureSampler: sampler_comparison;\n#endif\n#ifdef CLUSTER_COOKIES\n\tvar cookieAtlasTexture: texture_2d<f32>;\n\tvar cookieAtlasTextureSampler: sampler;\n#endif\nuniform clusterMaxCells: i32;\nuniform clusterSkip: f32;\nuniform clusterCellsCountByBoundsSize: vec3f;\nuniform clusterTextureSize: vec3f;\nuniform clusterBoundsMin: vec3f;\nuniform clusterBoundsDelta: vec3f;\nuniform clusterCellsDot: vec3f;\nuniform clusterCellsMax: vec3f;\nuniform shadowAtlasParams: vec2f;\nstruct ClusterLightData {\n\tflags: u32,\n\thalfWidth: vec3f,\n\tisSpot: bool,\n\thalfHeight: vec3f,\n\tlightIndex: i32,\n\tposition: vec3f,\n\tshape: u32,\n\tdirection: vec3f,\n\tfalloffModeLinear: bool,\n\tcolor: vec3f,\n\tshadowIntensity: f32,\n\tomniAtlasViewport: vec3f,\n\trange: f32,\n\tcookieChannelMask: vec4f,\n\tbiasesData: f32,\n\tshadowBias: f32,\n\tshadowNormalBias: f32,\n\tanglesData: f32,\n\tinnerConeAngleCos: f32,\n\touterConeAngleCos: f32,\n\tcookieIntensity: f32,\n\tisDynamic: bool,\n\tisLightmapped: bool\n}\nvar<private> lightProjectionMatrix: mat4x4f;\nfn sampleLightTextureF(lightIndex: i32, index: i32) -> vec4f {\n\treturn textureLoad(lightsTexture, vec2<i32>(index, lightIndex), 0);\n}\nfn decodeClusterLightCore(clusterLightData: ptr<function, ClusterLightData>, lightIndex: f32) {\n\tclusterLightData.lightIndex = i32(lightIndex);\n\tlet halfData: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_COLOR_ANGLES_BIAS});\n\tclusterLightData.anglesData = halfData.z;\n\tclusterLightData.biasesData = halfData.w;\n\tlet colorRG: vec2f = unpack2x16float(bitcast<u32>(halfData.x));\n\tlet colorB_: vec2f = unpack2x16float(bitcast<u32>(halfData.y));\n\tclusterLightData.color = vec3f(colorRG, colorB_.x) * {LIGHT_COLOR_DIVIDER};\n\tlet lightPosRange: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_POSITION_RANGE});\n\tclusterLightData.position = lightPosRange.xyz;\n\tclusterLightData.range = lightPosRange.w;\n\tlet lightDir_Flags: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_DIRECTION_FLAGS});\n\tclusterLightData.direction = lightDir_Flags.xyz;\n\tlet flags_uint: u32 = bitcast<u32>(lightDir_Flags.w);\n\tclusterLightData.flags = flags_uint;\n\tclusterLightData.isSpot = (flags_uint & (1u << 30u)) != 0u;\n\tclusterLightData.shape = (flags_uint >> 28u) & 0x3u;\n\tclusterLightData.falloffModeLinear = (flags_uint & (1u << 27u)) == 0u;\n\tclusterLightData.shadowIntensity = f32((flags_uint >> 0u) & 0xFFu) / 255.0;\n\tclusterLightData.cookieIntensity = f32((flags_uint >> 8u) & 0xFFu) / 255.0;\n\tclusterLightData.isDynamic = (flags_uint & (1u << 22u)) != 0u;\n\tclusterLightData.isLightmapped = (flags_uint & (1u << 21u)) != 0u;\n}\nfn decodeClusterLightSpot(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet angles: vec2f = unpack2x16float(bitcast<u32>(clusterLightData.anglesData));\n\tclusterLightData.innerConeAngleCos = angles.x;\n\tclusterLightData.outerConeAngleCos = angles.y;\n}\nfn decodeClusterLightOmniAtlasViewport(clusterLightData: ptr<function, ClusterLightData>) {\n\tclusterLightData.omniAtlasViewport = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_0}).xyz;\n}\nfn decodeClusterLightAreaData(clusterLightData: ptr<function, ClusterLightData>) {\n\tclusterLightData.halfWidth = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_AREA_DATA_WIDTH}).xyz;\n\tclusterLightData.halfHeight = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_AREA_DATA_HEIGHT}).xyz;\n}\nfn decodeClusterLightProjectionMatrixData(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet m0: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_0});\n\tlet m1: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_1});\n\tlet m2: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_2});\n\tlet m3: vec4f = sampleLightTextureF(clusterLightData.lightIndex, {CLUSTER_TEXTURE_PROJ_MAT_3});\n\tlightProjectionMatrix = mat4x4f(m0, m1, m2, m3);\n}\nfn decodeClusterLightShadowData(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet biases: vec2f = unpack2x16float(bitcast<u32>(clusterLightData.biasesData));\n\tclusterLightData.shadowBias = biases.x;\n\tclusterLightData.shadowNormalBias = biases.y;\n}\nfn decodeClusterLightCookieData(clusterLightData: ptr<function, ClusterLightData>) {\n\tlet cookieFlags: u32 = (clusterLightData.flags >> 23u) & 0x0Fu;\n\tlet mask_uvec: vec4<u32> = vec4<u32>(cookieFlags) & vec4<u32>(1u, 2u, 4u, 8u);\n\tclusterLightData.cookieChannelMask = step(vec4f(1.0), vec4f(mask_uvec));\n}\nfn evaluateLight(\n\tlight: ptr<function, ClusterLightData>,\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n#if defined(LIT_CLEARCOAT)\n\tclearcoatReflectionDir: vec3f,\n#endif\n\tgloss: f32,\n\tspecularity: vec3f,\n\tgeometricNormal: vec3f,\n\ttbn: mat3x3f,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n#endif\n\tclearcoat_worldNormal: vec3f,\n\tclearcoat_gloss: f32,\n\tsheen_gloss: f32,\n\tiridescence_intensity: f32\n) {\n\tvar cookieAttenuation: vec3f = vec3f(1.0);\n\tvar diffuseAttenuation: f32 = 1.0;\n\tvar falloffAttenuation: f32 = 1.0;\n\tlet lightDirW: vec3f = evalOmniLight(light.position);\n\tlet lightDirNormW: vec3f = normalize(lightDirW);\n\t#ifdef CLUSTER_AREALIGHTS\n\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\tdecodeClusterLightAreaData(light);\n\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\tcalcRectLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\tcalcDiskLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t} else {\n\t\t\tcalcSphereLightValues(light.position, light.halfWidth, light.halfHeight);\n\t\t}\n\t\tfalloffAttenuation = getFalloffWindow(light.range, lightDirW);\n\t} else\n\t#endif\n\t{\n\t\tif (light.falloffModeLinear) {\n\t\t\tfalloffAttenuation = getFalloffLinear(light.range, lightDirW);\n\t\t} else {\n\t\t\tfalloffAttenuation = getFalloffInvSquared(light.range, lightDirW);\n\t\t}\n\t}\n\tif (falloffAttenuation > 0.00001) {\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\tdiffuseAttenuation = getRectLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\tdiffuseAttenuation = getDiskLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t} else {\n\t\t\t\tdiffuseAttenuation = getSphereLightDiffuse(worldNormal, viewDir, lightDirW, lightDirNormW) * 16.0;\n\t\t\t}\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\tfalloffAttenuation = falloffAttenuation * getLightDiffuse(worldNormal, viewDir, lightDirNormW);\n\t\t}\n\t\tif (light.isSpot) {\n\t\t\tdecodeClusterLightSpot(light);\n\t\t\tfalloffAttenuation = falloffAttenuation * getSpotEffect(light.direction, light.innerConeAngleCos, light.outerConeAngleCos, lightDirNormW);\n\t\t}\n\t\t#if defined(CLUSTER_COOKIES) || defined(CLUSTER_SHADOWS)\n\t\tif (falloffAttenuation > 0.00001) {\n\t\t\tif (light.shadowIntensity > 0.0 || light.cookieIntensity > 0.0) {\n\t\t\t\tif (light.isSpot) {\n\t\t\t\t\tdecodeClusterLightProjectionMatrixData(light);\n\t\t\t\t} else {\n\t\t\t\t\tdecodeClusterLightOmniAtlasViewport(light);\n\t\t\t\t}\n\t\t\t\tlet shadowTextureResolution: f32 = uniform.shadowAtlasParams.x;\n\t\t\t\tlet shadowEdgePixels: f32 = uniform.shadowAtlasParams.y;\n\t\t\t\t#ifdef CLUSTER_COOKIES\n\t\t\t\tif (light.cookieIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightCookieData(light);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tcookieAttenuation = getCookie2DClustered(cookieAtlasTexture, cookieAtlasTextureSampler, lightProjectionMatrix, vPositionW, light.cookieIntensity, light.cookieChannelMask);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcookieAttenuation = getCookieCubeClustered(cookieAtlasTexture, cookieAtlasTextureSampler, lightDirW, light.cookieIntensity, light.cookieChannelMask, shadowTextureResolution, shadowEdgePixels, light.omniAtlasViewport);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t\t#ifdef CLUSTER_SHADOWS\n\t\t\t\tif (light.shadowIntensity > 0.0) {\n\t\t\t\t\tdecodeClusterLightShadowData(light);\n\t\t\t\t\tlet shadowParams: vec4f = vec4f(shadowTextureResolution, light.shadowNormalBias, light.shadowBias, 1.0 / light.range);\n\t\t\t\t\tif (light.isSpot) {\n\t\t\t\t\t\tlet shadowCoord: vec3f = getShadowCoordPerspZbufferNormalOffset(lightProjectionMatrix, shadowParams, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCF1(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCF3(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCF5(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCSS)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowSpotClusteredPCSS(shadowAtlasTexture, shadowAtlasTextureSampler, shadowCoord, shadowParams);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation = falloffAttenuation * mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tlet dir: vec3f = normalOffsetPointShadow(shadowParams, light.position, lightDirW, lightDirNormW, geometricNormal);\n\t\t\t\t\t\t#if defined(CLUSTER_SHADOW_TYPE_PCF1)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowOmniClusteredPCF1(shadowAtlasTexture, shadowAtlasTextureSampler, shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF3)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowOmniClusteredPCF3(shadowAtlasTexture, shadowAtlasTextureSampler, shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#elif defined(CLUSTER_SHADOW_TYPE_PCF5)\n\t\t\t\t\t\t\tlet shadow: f32 = getShadowOmniClusteredPCF5(shadowAtlasTexture, shadowAtlasTextureSampler, shadowParams, light.omniAtlasViewport, shadowEdgePixels, dir);\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\tfalloffAttenuation = falloffAttenuation * mix(1.0, shadow, light.shadowIntensity);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t#endif\n\t\t\t}\n\t\t}\n\t\t#endif\n\t\t#ifdef CLUSTER_AREALIGHTS\n\t\tif (light.shape != {LIGHTSHAPE_PUNCTUAL}) {\n\t\t\t{\n\t\t\t\tvar areaDiffuse: vec3f = (diffuseAttenuation * falloffAttenuation) * light.color * cookieAttenuation;\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tareaDiffuse = mix(areaDiffuse, vec3f(0.0), dLTCSpecFres);\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight = dDiffuseLight + areaDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvar areaLightSpecular: f32;\n\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\tareaLightSpecular = getRectLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\tareaLightSpecular = getDiskLightSpecular(worldNormal, viewDir);\n\t\t\t\t} else {\n\t\t\t\t\tareaLightSpecular = getSphereLightSpecular(worldNormal, viewDir);\n\t\t\t\t}\n\t\t\t\tdSpecularLight = dSpecularLight + dLTCSpecFres * areaLightSpecular * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\tvar areaLightSpecularCC: f32;\n\t\t\t\t\tif (light.shape == {LIGHTSHAPE_RECT}) {\n\t\t\t\t\t\tareaLightSpecularCC = getRectLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else if (light.shape == {LIGHTSHAPE_DISK}) {\n\t\t\t\t\t\tareaLightSpecularCC = getDiskLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tareaLightSpecularCC = getSphereLightSpecular(clearcoat_worldNormal, viewDir);\n\t\t\t\t\t}\n\t\t\t\t\tccSpecularLight = ccSpecularLight + ccLTCSpecFres * areaLightSpecularCC * falloffAttenuation * light.color  * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t} else\n\t\t#endif\n\t\t{\n\t\t\t{\n\t\t\t\tvar punctualDiffuse: vec3f = falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#if defined(CLUSTER_AREALIGHTS)\n\t\t\t\t#if defined(LIT_SPECULAR)\n\t\t\t\t\tpunctualDiffuse = mix(punctualDiffuse, vec3f(0.0), specularity);\n\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\tdDiffuseLight = dDiffuseLight + punctualDiffuse;\n\t\t\t}\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tlet halfDir: vec3f = normalize(-lightDirNormW + viewDir);\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tdSpecularLight = dSpecularLight +\n\t\t\t\t\t\tgetLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation *\n\t\t\t\t\t\tgetFresnel(\n\t\t\t\t\t\t\tdot(viewDir, halfDir),\n\t\t\t\t\t\t\tgloss,\n\t\t\t\t\t\t\tspecularity\n\t\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\t\tiridescence_intensity\n\t\t\t\t\t\t#endif\n\t\t\t\t\t\t\t);\n\t\t\t\t#else\n\t\t\t\t\tdSpecularLight = dSpecularLight + getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, lightDirNormW, gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * specularity;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\t\tccSpecularLight = ccSpecularLight + getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation * getFresnelCC(dot(viewDir, halfDir));\n\t\t\t\t\t#else\n\t\t\t\t\t\tccSpecularLight = ccSpecularLight + getLightSpecular(halfDir, clearcoatReflectionDir, clearcoat_worldNormal, viewDir, lightDirNormW, clearcoat_gloss, tbn) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tsSpecularLight = sSpecularLight + getLightSpecularSheen(halfDir, worldNormal, viewDir, lightDirNormW, sheen_gloss) * falloffAttenuation * light.color * cookieAttenuation;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t}\n\t}\n\tdAtten = falloffAttenuation;\n\tdLightDirNormW = lightDirNormW;\n}\nfn evaluateClusterLight(\n\tlightIndex: f32,\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n#if defined(LIT_CLEARCOAT)\n\tclearcoatReflectionDir: vec3f,\n#endif\n\tgloss: f32,\n\tspecularity: vec3f,\n\tgeometricNormal: vec3f,\n\ttbn: mat3x3f,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n#endif\n\tclearcoat_worldNormal: vec3f,\n\tclearcoat_gloss: f32,\n\tsheen_gloss: f32,\n\tiridescence_intensity: f32\n) {\n\tvar clusterLightData: ClusterLightData;\n\tdecodeClusterLightCore(&clusterLightData, lightIndex);\n\t#ifdef CLUSTER_MESH_DYNAMIC_LIGHTS\n\t\tlet acceptLightMask: bool = clusterLightData.isDynamic;\n\t#else\n\t\tlet acceptLightMask: bool = clusterLightData.isLightmapped;\n\t#endif\n\tif (acceptLightMask) {\n\t\tevaluateLight(\n\t\t\t&clusterLightData,\n\t\t\tworldNormal,\n\t\t\tviewDir,\n\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\tgloss,\n\t\t\tspecularity,\n\t\t\tgeometricNormal,\n\t\t\ttbn,\n#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel,\n#endif\n\t\t\tclearcoat_worldNormal,\n\t\t\tclearcoat_gloss,\n\t\t\tsheen_gloss,\n\t\t\tiridescence_intensity\n\t\t);\n\t}\n}\nfn addClusteredLights(\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n#if defined(LIT_CLEARCOAT)\n\tclearcoatReflectionDir: vec3f,\n#endif\n\tgloss: f32,\n\tspecularity: vec3f,\n\tgeometricNormal: vec3f,\n\ttbn: mat3x3f,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n#endif\n\tclearcoat_worldNormal: vec3f,\n\tclearcoat_gloss: f32,\n\tsheen_gloss: f32,\n\tiridescence_intensity: f32\n) {\n\tif (uniform.clusterSkip > 0.5) {\n\t\treturn;\n\t}\n\tlet cellCoords: vec3f = floor((vPositionW - uniform.clusterBoundsMin) * uniform.clusterCellsCountByBoundsSize);\n\tif (!(any(cellCoords < vec3f(0.0)) || any(cellCoords >= uniform.clusterCellsMax))) {\n\t\tlet cellIndex: f32 = dot(uniform.clusterCellsDot, cellCoords);\n\t\tlet clusterV: f32 = floor(cellIndex * uniform.clusterTextureSize.y);\n\t\tlet clusterU: f32 = cellIndex - (clusterV * uniform.clusterTextureSize.x);\n\t\tfor (var lightCellIndex: i32 = 0; lightCellIndex < uniform.clusterMaxCells; lightCellIndex = lightCellIndex + 1) {\n\t\t\tlet lightIndexPacked: f32 = textureLoad(clusterWorldTexture, vec2<i32>(i32(clusterU) + lightCellIndex, i32(clusterV)), 0).r;\n\t\t\tif (lightIndexPacked <= 0.0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tevaluateClusterLight(\n\t\t\t\tlightIndexPacked * 255.0,\n\t\t\t\tworldNormal,\n\t\t\t\tviewDir,\n\t\t\t\treflectionDir,\n#if defined(LIT_CLEARCOAT)\n\t\t\t\tclearcoatReflectionDir,\n#endif\n\t\t\t\tgloss,\n\t\t\t\tspecularity,\n\t\t\t\tgeometricNormal,\n\t\t\t\ttbn,\n#if defined(LIT_IRIDESCENCE)\n\t\t\t\tiridescenceFresnel,\n#endif\n\t\t\t\tclearcoat_worldNormal,\n\t\t\t\tclearcoat_gloss,\n\t\t\t\tsheen_gloss,\n\t\t\t\tiridescence_intensity\n\t\t\t);\n\t\t}\n\t}\n}`;\n\nvar combinePS = `\nfn combineColor(albedo: vec3f, sheenSpecularity: vec3f, clearcoatSpecularity: f32) -> vec3f {\n\tvar ret: vec3f = vec3f(0.0);\n\t#ifdef LIT_OLD_AMBIENT\n\t\tret = ret + ((dDiffuseLight - uniform.light_globalAmbient) * albedo + uniform.material_ambient * uniform.light_globalAmbient);\n\t#else\n\t\tret = ret + (albedo * dDiffuseLight);\n\t#endif\n\t#ifdef LIT_SPECULAR\n\t\tret = ret + dSpecularLight;\n\t#endif\n\t#ifdef LIT_REFLECTIONS\n\t\tret = ret + (dReflection.rgb * dReflection.a);\n\t#endif\n\t#ifdef LIT_SHEEN\n\t\tlet sheenScaling: f32 = 1.0 - max(max(sheenSpecularity.r, sheenSpecularity.g), sheenSpecularity.b) * 0.157;\n\t\tret = ret * sheenScaling + (sSpecularLight + sReflection.rgb) * sheenSpecularity;\n\t#endif\n\t#ifdef LIT_CLEARCOAT\n\t\tlet clearCoatScaling: f32 = 1.0 - ccFresnel * clearcoatSpecularity;\n\t\tret = ret * clearCoatScaling + (ccSpecularLight + ccReflection) * clearcoatSpecularity;\n\t#endif\n\treturn ret;\n}\n`;\n\nvar cookieBlit2DPS = `\n\tvarying uv0: vec2f;\n\tvar blitTexture: texture_2d<f32>;\n\tvar blitTextureSampler : sampler;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\toutput.color = textureSample(blitTexture, blitTextureSampler, input.uv0);\n\t\treturn output;\n\t}\n`;\n\nvar cookieBlitCubePS = `\n\tvarying uv0: vec2f;\n\tuniform invViewProj: mat4x4<f32>;\n\tvar blitTexture: texture_cube<f32>;\n\tvar blitTextureSampler : sampler;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tvar projPos = vec4f(input.uv0 * 2.0 - 1.0, 0.5, 1.0);\n\t\tvar worldPos = uniform.invViewProj * projPos;\n\t\toutput.color = textureSample(blitTexture, blitTextureSampler, worldPos.xyz);\n\t\treturn output;\n\t}\n`;\n\nvar cookieBlitVS = `\n\tattribute vertex_position: vec2f;\n\tvarying uv0: vec2f;\n\t@vertex\n\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\t\toutput.uv0 = input.vertex_position * 0.5 + vec2f(0.5, 0.5);\n\t\toutput.uv0.y = 1.0 - output.uv0.y;\n\t\treturn output;\n\t}\n`;\n\nvar cubeMapProjectPS = `\n#if LIT_CUBEMAP_PROJECTION == BOX\n\tuniform envBoxMin: vec3f;\n\tuniform envBoxMax: vec3f;\n#endif\nfn cubeMapProject(nrdir: vec3f) -> vec3f {\n\t#if LIT_CUBEMAP_PROJECTION == NONE\n\t\treturn cubeMapRotate(nrdir);\n\t#endif\n\t#if LIT_CUBEMAP_PROJECTION == BOX\n\t\tlet nrdir_rotated: vec3f = cubeMapRotate(nrdir);\n\t\tlet rbmax: vec3f = (uniform.envBoxMax - vPositionW) / nrdir_rotated;\n\t\tlet rbmin: vec3f = (uniform.envBoxMin - vPositionW) / nrdir_rotated;\n\t\tlet rbminmax: vec3f = select(rbmin, rbmax, nrdir_rotated > vec3f(0.0));\n\t\tlet fa: f32 = min(min(rbminmax.x, rbminmax.y), rbminmax.z);\n\t\tlet posonbox: vec3f = vPositionW + nrdir_rotated * fa;\n\t\tlet envBoxPos: vec3f = (uniform.envBoxMin + uniform.envBoxMax) * 0.5;\n\t\treturn normalize(posonbox - envBoxPos);\n\t#endif\n}\n`;\n\nvar cubeMapRotatePS = `\n#ifdef CUBEMAP_ROTATION\nuniform cubeMapRotationMatrix: mat3x3f;\n#endif\nfn cubeMapRotate(refDir: vec3f) -> vec3f {\n#ifdef CUBEMAP_ROTATION\n\treturn refDir * uniform.cubeMapRotationMatrix;\n#else\n\treturn refDir;\n#endif\n}\n`;\n\nvar debugOutputPS = `\n#ifdef DEBUG_ALBEDO_PASS\noutput.color = vec4(gammaCorrectOutput(dAlbedo), 1.0);\n#endif\n#ifdef DEBUG_UV0_PASS\noutput.color = vec4f(litArgs_albedo , 1.0);\n#endif\n#ifdef DEBUG_WORLD_NORMAL_PASS\noutput.color = vec4f(litArgs_worldNormal * 0.5 + 0.5, 1.0);\n#endif\n#ifdef DEBUG_OPACITY_PASS\noutput.color = vec4f(vec3f(litArgs_opacity) , 1.0);\n#endif\n#ifdef DEBUG_SPECULARITY_PASS\noutput.color = vec4f(litArgs_specularity, 1.0);\n#endif\n#ifdef DEBUG_GLOSS_PASS\noutput.color = vec4f(vec3f(litArgs_gloss) , 1.0);\n#endif\n#ifdef DEBUG_METALNESS_PASS\noutput.color = vec4f(vec3f(litArgs_metalness) , 1.0);\n#endif\n#ifdef DEBUG_AO_PASS\noutput.color = vec4f(vec3f(litArgs_ao) , 1.0);\n#endif\n#ifdef DEBUG_EMISSION_PASS\noutput.color = vec4f(gammaCorrectOutput(litArgs_emission), 1.0);\n#endif\n`;\n\nvar debugProcessFrontendPS = `\n#ifdef DEBUG_LIGHTING_PASS\n\tlitArgs_albedo = vec3f(0.5);\n#endif\n#ifdef DEBUG_UV0_PASS\n#ifdef VARYING_VUV0\n\tlitArgs_albedo = vec3f(vUv0, 0.0);\n#else\n\tlitArgs_albedo = vec3f(0.0);\n#endif\n#endif\n`;\n\nvar decodePS = `\n#ifndef _DECODE_INCLUDED_\n#define _DECODE_INCLUDED_\nfn decodeLinear(raw: vec4f) -> vec3f {\n\treturn raw.rgb;\n}\nfn decodeGammaFloat(raw: f32) -> f32 {\n\treturn pow(raw, 2.2);\n}\nfn decodeGamma3(raw: vec3f) -> vec3f {\n\treturn pow(raw, vec3f(2.2));\n}\nfn decodeGamma(raw: vec4f) -> vec3f {\n\treturn pow(raw.xyz, vec3f(2.2));\n}\nfn decodeRGBM(raw: vec4f) -> vec3f {\n\tlet color = (8.0 * raw.a) * raw.rgb;\n\treturn color * color;\n}\nfn decodeRGBP(raw: vec4f) -> vec3f {\n\tlet color = raw.rgb * (-raw.a * 7.0 + 8.0);\n\treturn color * color;\n}\nfn decodeRGBE(raw: vec4f) -> vec3f {\n\treturn select(vec3f(0.0), raw.xyz * pow(2.0, raw.w * 255.0 - 128.0), raw.a != 0.0);\n}\nfn passThrough(raw: vec4f) -> vec4f {\n\treturn raw;\n}\nfn unpackNormalXYZ(nmap: vec4f) -> vec3f {\n\treturn nmap.xyz * 2.0 - 1.0;\n}\nfn unpackNormalXY(nmap: vec4f) -> vec3f {\n\tvar xy = nmap.wy * 2.0 - 1.0;\n\treturn vec3f(xy, sqrt(1.0 - clamp(dot(xy, xy), 0.0, 1.0)));\n}\n#endif\n`;\n\nvar detailModesPS = `\n#ifndef _DETAILMODES_INCLUDED_\n#define _DETAILMODES_INCLUDED_\nfn detailMode_mul(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn c1 * c2;\n}\nfn detailMode_add(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn c1 + c2;\n}\nfn detailMode_screen(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn 1.0 - (1.0 - c1)*(1.0 - c2);\n}\nfn detailMode_overlay(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn mix(1.0 - 2.0 * (1.0 - c1)*(1.0 - c2), 2.0 * c1 * c2, step(c1, vec3f(0.5)));\n}\nfn detailMode_min(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn min(c1, c2);\n}\nfn detailMode_max(c1: vec3f, c2: vec3f) -> vec3f {\n\treturn max(c1, c2);\n}\n#endif\n`;\n\nvar diffusePS = `\nuniform material_diffuse: vec3f;\n#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t#include \"detailModesPS\"\n#endif\nfn getAlbedo() {\n\tdAlbedo = uniform.material_diffuse.rgb;\n\t#ifdef STD_DIFFUSE_TEXTURE\n\t\tvar albedoTexture: vec3f = {STD_DIFFUSE_TEXTURE_DECODE}(textureSampleBias({STD_DIFFUSE_TEXTURE_NAME}, {STD_DIFFUSE_TEXTURE_NAME}Sampler, {STD_DIFFUSE_TEXTURE_UV}, uniform.textureBias)).{STD_DIFFUSE_TEXTURE_CHANNEL};\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE\n\t\t\tvar albedoDetail: vec3f = {STD_DIFFUSEDETAIL_TEXTURE_DECODE}(textureSampleBias({STD_DIFFUSEDETAIL_TEXTURE_NAME}, {STD_DIFFUSEDETAIL_TEXTURE_NAME}Sampler, {STD_DIFFUSEDETAIL_TEXTURE_UV}, uniform.textureBias)).{STD_DIFFUSEDETAIL_TEXTURE_CHANNEL};\n\t\t\talbedoTexture = detailMode_{STD_DIFFUSEDETAIL_DETAILMODE}(albedoTexture, albedoDetail);\n\t\t#endif\n\t\tdAlbedo = dAlbedo * albedoTexture;\n\t#endif\n\t#ifdef STD_DIFFUSE_VERTEX\n\t\tdAlbedo = dAlbedo * gammaCorrectInputVec3(saturate3(vVertexColor.{STD_DIFFUSE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar emissivePS = `\nuniform material_emissive: vec3f;\nuniform material_emissiveIntensity: f32;\nfn getEmission() {\n\tdEmission = uniform.material_emissive * uniform.material_emissiveIntensity;\n\t#ifdef STD_EMISSIVE_TEXTURE\n\tdEmission *= {STD_EMISSIVE_TEXTURE_DECODE}(textureSampleBias({STD_EMISSIVE_TEXTURE_NAME}, {STD_EMISSIVE_TEXTURE_NAME}Sampler, {STD_EMISSIVE_TEXTURE_UV}, uniform.textureBias)).{STD_EMISSIVE_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_EMISSIVE_VERTEX\n\tdEmission = dEmission * gammaCorrectInputVec3(saturate3(vVertexColor.{STD_EMISSIVE_VERTEX_CHANNEL}));\n\t#endif\n}\n`;\n\nvar encodePS = `\nfn encodeLinear(source: vec3f) -> vec4f {\n\treturn vec4f(source, 1.0);\n}\nfn encodeGamma(source: vec3f) -> vec4f {\n\treturn vec4f(pow(source + vec3f(0.0000001), vec3f(1.0 / 2.2)), 1.0);\n}\nfn encodeRGBM(source: vec3f) -> vec4f {\n\tvar color: vec3f = pow(source, vec3f(0.5));\n\tcolor *= 1.0 / 8.0;\n\tvar a: f32 = saturate(max(max(color.r, color.g), max(color.b, 1.0 / 255.0)));\n\ta = ceil(a * 255.0) / 255.0;\n\tcolor /= a;\n\treturn vec4f(color, a);\n}\nfn encodeRGBP(source: vec3f) -> vec4f {\n\tvar gamma: vec3f = pow(source, vec3f(0.5));\n\tvar maxVal: f32 = min(8.0, max(1.0, max(gamma.x, max(gamma.y, gamma.z))));\n\tvar v: f32 = 1.0 - ((maxVal - 1.0) / 7.0);\n\tv = ceil(v * 255.0) / 255.0;\n\treturn vec4f(gamma / (-v * 7.0 + 8.0), v);\n}\nfn encodeRGBE(source: vec3f) -> vec4f {\n\tvar maxVal: f32 = max(source.x, max(source.y, source.z));\n\tif (maxVal < 1e-32) {\n\t\treturn vec4f(0.0, 0.0, 0.0, 0.0);\n\t} else {\n\t\tvar e: f32 = ceil(log2(maxVal));\n\t\treturn vec4f(source / pow(2.0, e), (e + 128.0) / 255.0);\n\t}\n}\n`;\n\nvar endPS = `\n\tvar finalRgb: vec3f = combineColor(litArgs_albedo, litArgs_sheen_specularity, litArgs_clearcoat_specularity);\n\tfinalRgb = finalRgb + litArgs_emission;\n\tfinalRgb = addFog(finalRgb);\n\tfinalRgb = toneMap(finalRgb);\n\tfinalRgb = gammaCorrectOutput(finalRgb);\n\toutput.color = vec4f(finalRgb, output.color.a);\n`;\n\nvar envAtlasPS = `\n#ifndef _ENVATLAS_INCLUDED_\n#define _ENVATLAS_INCLUDED_\nconst atlasSize : f32 = 512.0;\nconst seamSize : f32 = 1.0 / atlasSize;\nfn mapUv(uv : vec2f, rect : vec4f) -> vec2f {\n\treturn vec2f(mix(rect.x + seamSize, rect.x + rect.z - seamSize, uv.x),\n\t\t\t\t mix(rect.y + seamSize, rect.y + rect.w - seamSize, uv.y));\n}\nfn mapRoughnessUv(uv : vec2f, level : f32) -> vec2f {\n\tlet t : f32 = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4f(0.0, 1.0 - t, t, t * 0.5));\n}\nfn mapShinyUv(uv : vec2f, level : f32) -> vec2f {\n\tlet t : f32 = 1.0 / exp2(level);\n\treturn mapUv(uv, vec4f(1.0 - t, 1.0 - t, t, t * 0.5));\n}\n#endif\n`;\n\nvar envProcPS = `\n#ifdef LIT_SKYBOX_INTENSITY\n\tuniform skyboxIntensity : f32;\n#endif\nfn processEnvironment(color : vec3f) -> vec3f {\n\t#ifdef LIT_SKYBOX_INTENSITY\n\t\treturn color * uniform.skyboxIntensity;\n\t#else\n\t\treturn color;\n\t#endif\n}\n`;\n\nvar falloffInvSquaredPS = `\nfn getFalloffWindow(lightRadius: f32, lightDir: vec3f) -> f32 {\n\tlet sqrDist: f32 = dot(lightDir, lightDir);\n\tlet invRadius: f32 = 1.0 / lightRadius;\n\treturn square(saturate(1.0 - square(sqrDist * square(invRadius))));\n}\nfn getFalloffInvSquared(lightRadius: f32, lightDir: vec3f) -> f32 {\n\tlet sqrDist: f32 = dot(lightDir, lightDir);\n\tvar falloff: f32 = 1.0 / (sqrDist + 1.0);\n\tlet invRadius: f32 = 1.0 / lightRadius;\n\tfalloff = falloff * 16.0;\n\tfalloff = falloff * square(saturate(1.0 - square(sqrDist * square(invRadius))));\n\treturn falloff;\n}\n`;\n\nvar falloffLinearPS = `\nfn getFalloffLinear(lightRadius: f32, lightDir: vec3f) -> f32 {\n\tlet d: f32 = length(lightDir);\n\treturn max(((lightRadius - d) / lightRadius), 0.0);\n}\n`;\n\nvar floatAsUintPS = `\n#ifndef FLOAT_AS_UINT\n#define FLOAT_AS_UINT\nfn float2uint(value: f32) -> vec4f {\n\tlet intBits = bitcast<u32>(value);\n\treturn vec4f(\n\t\tf32((intBits >> 24u) & 0xffu),\n\t\tf32((intBits >> 16u) & 0xffu),\n\t\tf32((intBits >> 8u) & 0xffu),\n\t\tf32(intBits & 0xffu)\n\t) / 255.0;\n}\nfn uint2float(value: vec4f) -> f32 {\n\tlet rgba_u32 = vec4<u32>(value * 255.0);\n\tlet intBits: u32 =\n\t\t(rgba_u32.r << 24u) |\n\t\t(rgba_u32.g << 16u) |\n\t\t(rgba_u32.b << 8u)  |\n\t\t rgba_u32.a;\n\treturn bitcast<f32>(intBits);\n}\nfn float2vec4(value: f32) -> vec4f {\n\t#if defined(CAPS_TEXTURE_FLOAT_RENDERABLE)\n\t\treturn vec4f(value, 1.0, 1.0, 1.0);\n\t#else\n\t\treturn float2uint(value);\n\t#endif\n}\n#endif\n`;\n\nvar fogPS = `\nvar<private> dBlendModeFogFactor : f32 = 1.0;\n#if (FOG != NONE)\n\tuniform fog_color : vec3f;\n\t\n\t#if (FOG == LINEAR)\n\t\tuniform fog_start : f32;\n\t\tuniform fog_end : f32;\n\t#else\n\t\tuniform fog_density : f32;\n\t#endif\n#endif\nfn getFogFactor() -> f32 {\n\tlet depth = pcPosition.z / pcPosition.w;\n\tvar fogFactor : f32 = 0.0;\n\t#if (FOG == LINEAR)\n\t\tfogFactor = (uniform.fog_end - depth) / (uniform.fog_end - uniform.fog_start);\n\t#elif (FOG == EXP)\n\t\tfogFactor = exp(-depth * uniform.fog_density);\n\t#elif (FOG == EXP2)\n\t\tfogFactor = exp(-depth * depth * uniform.fog_density * uniform.fog_density);\n\t#endif\n\treturn clamp(fogFactor, 0.0, 1.0);\n}\nfn addFog(color : vec3f) -> vec3f {\n\t#if (FOG != NONE)\n\t\treturn mix(uniform.fog_color * dBlendModeFogFactor, color, getFogFactor());\n\t#else\n\t\treturn color;\n\t#endif\n}\n`;\n\nvar fresnelSchlickPS = `\nfn getFresnel(\n\t\tcosTheta: f32,\n\t\tgloss: f32,\n\t\tspecularity: vec3f\n\t#if defined(LIT_IRIDESCENCE)\n\t\t, iridescenceFresnel: vec3f,\n\t\tiridescenceIntensity: f32\n\t#endif\n) -> vec3f {\n\tlet fresnel: f32 = pow(1.0 - saturate(cosTheta), 5.0);\n\tlet glossSq: f32 = gloss * gloss;\n\tlet ret: vec3f = specularity + (max(vec3f(glossSq), specularity) - specularity) * fresnel;\n\t#if defined(LIT_IRIDESCENCE)\n\t\treturn mix(ret, iridescenceFresnel, iridescenceIntensity);\n\t#else\n\t\treturn ret;\n\t#endif\n}\nfn getFresnelCC(cosTheta: f32) -> f32 {\n\tlet fresnel: f32 = pow(1.0 - saturate(cosTheta), 5.0);\n\treturn 0.04 + (1.0 - 0.04) * fresnel;\n}`;\n\nvar fullscreenQuadVS = `\nattribute vertex_position: vec2f;\nvarying vUv0: vec2f;\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\toutput.vUv0 = input.vertex_position.xy * 0.5 + vec2f(0.5);\n\treturn output;\n}\n`;\n\nvar gammaPS = `\n#include \"decodePS\"\n#if (GAMMA == SRGB)\n\tfn gammaCorrectInput(color: f32) -> f32 {\n\t\treturn decodeGammaFloat(color);\n\t}\n\tfn gammaCorrectInputVec3(color: vec3f) -> vec3f {\n\t\treturn decodeGamma3(color);\n\t}\n\tfn gammaCorrectInputVec4(color: vec4f) -> vec4f {\n\t\treturn vec4f(decodeGamma3(color.xyz), color.w);\n\t}\n\tfn gammaCorrectOutput(color: vec3f) -> vec3f {\n\t\treturn pow(color + 0.0000001, vec3f(1.0 / 2.2));\n\t}\n#else\n\tfn gammaCorrectInput(color: f32) -> f32 {\n\t\treturn color;\n\t}\n\tfn gammaCorrectInputVec3(color: vec3f) -> vec3f {\n\t\treturn color;\n\t}\n\tfn gammaCorrectInputVec4(color: vec4f) -> vec4f {\n\t\treturn color;\n\t}\n\tfn gammaCorrectOutput(color: vec3f) -> vec3f {\n\t\treturn color;\n\t}\n#endif\n`;\n\nvar glossPS = `\n#ifdef STD_GLOSS_CONSTANT\n\tuniform material_gloss: f32;\n#endif\nfn getGlossiness() {\n\tdGlossiness = 1.0;\n\t#ifdef STD_GLOSS_CONSTANT\n\tdGlossiness = dGlossiness * uniform.material_gloss;\n\t#endif\n\t#ifdef STD_GLOSS_TEXTURE\n\tdGlossiness = dGlossiness * textureSampleBias({STD_GLOSS_TEXTURE_NAME}, {STD_GLOSS_TEXTURE_NAME}Sampler, {STD_GLOSS_TEXTURE_UV}, uniform.textureBias).{STD_GLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_GLOSS_VERTEX\n\tdGlossiness = dGlossiness * saturate(vVertexColor.{STD_GLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_GLOSS_INVERT\n\tdGlossiness = 1.0 - dGlossiness;\n\t#endif\n\tdGlossiness = dGlossiness + 0.0000001;\n}\n`;\n\nvar gsplatCenterVS = `\nuniform matrix_model: mat4x4f;\nuniform matrix_view: mat4x4f;\n#ifndef GSPLAT_CENTER_NOPROJ\n\tuniform matrix_projection: mat4x4f;\n#endif\nfn initCenter(modelCenter: vec3f, center: ptr<function, SplatCenter>) -> bool {\n\tlet modelView: mat4x4f = uniform.matrix_view * uniform.matrix_model;\n\tlet centerView: vec4f = modelView * vec4f(modelCenter, 1.0);\n\t#ifndef GSPLAT_CENTER_NOPROJ\n\t\tif (centerView.z > 0.0) {\n\t\t\treturn false;\n\t\t}\n\t\tvar centerProj: vec4f = uniform.matrix_projection * centerView;\n\t\tcenterProj.z = clamp(centerProj.z, 0.0, abs(centerProj.w));\n\t\tcenter.proj = centerProj;\n\t\tcenter.projMat00 = uniform.matrix_projection[0][0];\n\t#endif\n\tcenter.view = centerView.xyz / centerView.w;\n\tcenter.modelView = modelView;\n\treturn true;\n}\n`;\n\nvar gsplatColorVS = `\nvar splatColor: texture_2d<uff>;\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\treturn textureLoad(splatColor, source.uv, 0);\n}\n`;\n\nvar gsplatCommonVS = `\n#include \"gsplatStructsVS\"\n#include \"gsplatEvalSHVS\"\n#include \"gsplatQuatToMat3VS\"\n#include \"gsplatSourceFormatVS\"\n#include \"gsplatSourceVS\"\n#include \"gsplatCenterVS\"\n#include \"gsplatCornerVS\"\n#include \"gsplatOutputVS\"\nfn clipCorner(corner: ptr<function, SplatCorner>, alpha: f32) {\n\tlet clip: f32 = min(1.0, sqrt(-log(1.0 / (255.0 * alpha))) / 2.0);\n\tcorner.offset = corner.offset * clip;\n\tcorner.uv = corner.uv * clip;\n}\n`;\n\nvar gsplatCompressedDataVS = `\nvar packedTexture: texture_2d<u32>;\nvar chunkTexture: texture_2d<uff>;\nvar<private> chunkDataA: vec4f;\nvar<private> chunkDataB: vec4f;\nvar<private> chunkDataC: vec4f;\nvar<private> chunkDataD: vec4f;\nvar<private> chunkDataE: vec4f;\nvar<private> packedData: vec4u;\nfn unpack111011(bits: u32) -> vec3f {\n\treturn (vec3f((vec3<u32>(bits) >> vec3<u32>(21u, 11u, 0u)) & vec3<u32>(0x7ffu, 0x3ffu, 0x7ffu))) / vec3f(2047.0, 1023.0, 2047.0);\n}\nfn unpack8888(bits: u32) -> vec4f {\n\treturn vec4f(\n\t\tf32((bits >> 24u) & 0xffu),\n\t\tf32((bits >> 16u) & 0xffu),\n\t\tf32((bits >> 8u)  & 0xffu),\n\t\tf32(bits\t\t & 0xffu)\n\t) / 255.0;\n}\nconst norm_const: f32 = 1.0 / (sqrt(2.0) * 0.5);\nfn unpackRotation(bits: u32) -> vec4f {\n\tlet a = (f32((bits >> 20u) & 0x3ffu) / 1023.0 - 0.5) * norm_const;\n\tlet b = (f32((bits >> 10u) & 0x3ffu) / 1023.0 - 0.5) * norm_const;\n\tlet c = (f32(bits & 0x3ffu) / 1023.0 - 0.5) * norm_const;\n\tlet m = sqrt(1.0 - (a * a + b * b + c * c));\n\tlet mode = bits >> 30u;\n\tif (mode == 0u) { return vec4f(m, a, b, c); }\n\tif (mode == 1u) { return vec4f(a, m, b, c); }\n\tif (mode == 2u) { return vec4f(a, b, m, c); }\n\treturn vec4f(a, b, c, m);\n}\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\tlet tex_size_u = textureDimensions(chunkTexture, 0);\n\tlet w: u32 = tex_size_u.x / 5u;\n\tlet chunkId: u32 = source.id / 256u;\n\tlet chunkUV: vec2<i32> = vec2<i32>(i32((chunkId % w) * 5u), i32(chunkId / w));\n\tchunkDataA = textureLoad(chunkTexture, chunkUV + vec2<i32>(0, 0), 0);\n\tchunkDataB = textureLoad(chunkTexture, chunkUV + vec2<i32>(1, 0), 0);\n\tchunkDataC = textureLoad(chunkTexture, chunkUV + vec2<i32>(2, 0), 0);\n\tchunkDataD = textureLoad(chunkTexture, chunkUV + vec2<i32>(3, 0), 0);\n\tchunkDataE = textureLoad(chunkTexture, chunkUV + vec2<i32>(4, 0), 0);\n\tpackedData = textureLoad(packedTexture, source.uv, 0);\n\treturn mix(chunkDataA.xyz, vec3f(chunkDataA.w, chunkDataB.xy), unpack111011(packedData.x));\n}\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\tlet r = unpack8888(packedData.w);\n\treturn vec4f(mix(chunkDataD.xyz, vec3f(chunkDataD.w, chunkDataE.xy), r.rgb), r.w);\n}\nfn getRotation() -> vec4f {\n\treturn unpackRotation(packedData.y);\n}\nfn getScale() -> vec3f {\n\treturn exp(mix(vec3f(chunkDataB.zw, chunkDataC.x), chunkDataC.yzw, unpack111011(packedData.z)));\n}\nfn readCovariance(source: ptr<function, SplatSource>, covA_ptr: ptr<function, vec3f>, covB_ptr: ptr<function, vec3f>) {\n\tlet rot = quatToMat3(getRotation());\n\tlet scale = getScale();\n\tlet M = transpose(mat3x3f(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\t*covA_ptr = vec3f(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\t*covB_ptr = vec3f(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatCompressedSHVS = `\n#if SH_BANDS > 0\nvar shTexture0: texture_2d<u32>;\nvar shTexture1: texture_2d<u32>;\nvar shTexture2: texture_2d<u32>;\nfn unpack8888s(bits: u32) -> vec4f {\n\tlet unpacked_u = (vec4<u32>(bits) >> vec4<u32>(0u, 8u, 16u, 24u)) & vec4<u32>(0xffu);\n\treturn vec4f(unpacked_u) * (8.0 / 255.0) - 4.0;\n}\nfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 15>>, scale: ptr<function, f32>) {\n\tlet shData0: vec4<u32> = textureLoad(shTexture0, source.uv, 0);\n\tlet shData1: vec4<u32> = textureLoad(shTexture1, source.uv, 0);\n\tlet shData2: vec4<u32> = textureLoad(shTexture2, source.uv, 0);\n\tlet r0 = unpack8888s(shData0.x);\n\tlet r1 = unpack8888s(shData0.y);\n\tlet r2 = unpack8888s(shData0.z);\n\tlet r3 = unpack8888s(shData0.w);\n\tlet g0 = unpack8888s(shData1.x);\n\tlet g1 = unpack8888s(shData1.y);\n\tlet g2 = unpack8888s(shData1.z);\n\tlet g3 = unpack8888s(shData1.w);\n\tlet b0 = unpack8888s(shData2.x);\n\tlet b1 = unpack8888s(shData2.y);\n\tlet b2 = unpack8888s(shData2.z);\n\tlet b3 = unpack8888s(shData2.w);\n\tsh[0] =  vec3f(r0.x, g0.x, b0.x);\n\tsh[1] =  vec3f(r0.y, g0.y, b0.y);\n\tsh[2] =  vec3f(r0.z, g0.z, b0.z);\n\tsh[3] =  vec3f(r0.w, g0.w, b0.w);\n\tsh[4] =  vec3f(r1.x, g1.x, b1.x);\n\tsh[5] =  vec3f(r1.y, g1.y, b1.y);\n\tsh[6] =  vec3f(r1.z, g1.z, b1.z);\n\tsh[7] =  vec3f(r1.w, g1.w, b1.w);\n\tsh[8] =  vec3f(r2.x, g2.x, b2.x);\n\tsh[9] =  vec3f(r2.y, g2.y, b2.y);\n\tsh[10] = vec3f(r2.z, g2.z, b2.z);\n\tsh[11] = vec3f(r2.w, g2.w, b2.w);\n\tsh[12] = vec3f(r3.x, g3.x, b3.x);\n\tsh[13] = vec3f(r3.y, g3.y, b3.y);\n\tsh[14] = vec3f(r3.z, g3.z, b3.z);\n\t*scale = 1.0;\n}\n#endif\n`;\n\nvar gsplatEvalSHVS = `\n\t#if SH_BANDS == 1\n\t\tconst SH_COEFFS: i32 = 3;\n\t#elif SH_BANDS == 2\n\t\tconst SH_COEFFS: i32 = 8;\n\t#elif SH_BANDS == 3\n\t\tconst SH_COEFFS: i32 = 15;\n\t#else\n\t\tconst SH_COEFFS: i32 = 0;\n\t#endif\n\t#if SH_BANDS > 0\n\tconst SH_C1: f32 = 0.4886025119029199;\n\t#if SH_BANDS > 1\n\t\tconst SH_C2_0: f32 = 1.0925484305920792;\n\t\tconst SH_C2_1: f32 = -1.0925484305920792;\n\t\tconst SH_C2_2: f32 = 0.31539156525252005;\n\t\tconst SH_C2_3: f32 = -1.0925484305920792;\n\t\tconst SH_C2_4: f32 = 0.5462742152960396;\n\t#endif\n\t#if SH_BANDS > 2\n\t\tconst SH_C3_0: f32 = -0.5900435899266435;\n\t\tconst SH_C3_1: f32 = 2.890611442640554;\n\t\tconst SH_C3_2: f32 = -0.4570457994644658;\n\t\tconst SH_C3_3: f32 = 0.3731763325901154;\n\t\tconst SH_C3_4: f32 = -0.4570457994644658;\n\t\tconst SH_C3_5: f32 = 1.445305721320277;\n\t\tconst SH_C3_6: f32 = -0.5900435899266435;\n\t#endif\n\tfn evalSH(sh: ptr<function, array<vec3f, SH_COEFFS>>, dir: vec3f) -> vec3f {\n\t\tlet x = dir.x;\n\t\tlet y = dir.y;\n\t\tlet z = dir.z;\n\t\tvar result = SH_C1 * (-sh[0] * y + sh[1] * z - sh[2] * x);\n\t\t#if SH_BANDS > 1\n\t\t\tlet xx = x * x;\n\t\t\tlet yy = y * y;\n\t\t\tlet zz = z * z;\n\t\t\tlet xy = x * y;\n\t\t\tlet yz = y * z;\n\t\t\tlet xz = x * z;\n\t\t\tresult = result + (\n\t\t\t\tsh[3] * (SH_C2_0 * xy) +\n\t\t\t\tsh[4] * (SH_C2_1 * yz) +\n\t\t\t\tsh[5] * (SH_C2_2 * (2.0 * zz - xx - yy)) +\n\t\t\t\tsh[6] * (SH_C2_3 * xz) +\n\t\t\t\tsh[7] * (SH_C2_4 * (xx - yy))\n\t\t\t);\n\t\t#endif\n\t\t#if SH_BANDS > 2\n\t\t\tresult = result + (\n\t\t\t\tsh[8]  * (SH_C3_0 * y * (3.0 * xx - yy)) +\n\t\t\t\tsh[9]  * (SH_C3_1 * xy * z) +\n\t\t\t\tsh[10] * (SH_C3_2 * y * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[11] * (SH_C3_3 * z * (2.0 * zz - 3.0 * xx - 3.0 * yy)) +\n\t\t\t\tsh[12] * (SH_C3_4 * x * (4.0 * zz - xx - yy)) +\n\t\t\t\tsh[13] * (SH_C3_5 * z * (xx - yy)) +\n\t\t\t\tsh[14] * (SH_C3_6 * x * (xx - 3.0 * yy))\n\t\t\t);\n\t\t#endif\n\t\treturn result;\n\t}\n\t#endif\n`;\n\nvar gsplatQuatToMat3VS = `\nfn quatToMat3(R: vec4<f32>) -> mat3x3<f32> {\n\tlet R2: vec4<f32> = R + R;\n\tlet X: f32\t   = R2.x * R.w;\n\tlet Y: vec4<f32> = R2.y * R;\n\tlet Z: vec4<f32> = R2.z * R;\n\tlet W: f32\t   = R2.w * R.w;\n\treturn mat3x3<f32>(\n\t\t1.0 - Z.z - W,  Y.z + X,\t  Y.w - Z.x,\n\t\tY.z - X,\t\t1.0 - Y.y - W, Z.w + Y.x,\n\t\tY.w + Z.x,\t  Z.w - Y.x,\t 1.0 - Y.y - Z.z\n\t);\n}\n`;\n\nvar gsplatSogsColorVS = `\nvar packedSh0: texture_2d<f32>;\nuniform sh0_mins: f32;\nuniform sh0_maxs: f32;\nconst SH_C0: f32 = 0.28209479177387814;\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\tlet clr = mix(vec3f(uniform.sh0_mins), vec3f(uniform.sh0_maxs), unpack111110(pack8888(textureLoad(packedSh0, source.uv, 0))));\n\tlet alpha = f32(packedSample.z & 0xffu) / 255.0;\n\treturn vec4f(vec3f(0.5) + clr.xyz * SH_C0, alpha);\n}\n`;\n\nvar gsplatSogsDataVS = `\n#include \"gsplatPackingPS\"\nvar packedTexture: texture_2d<u32>;\nuniform means_mins: vec3f;\nuniform means_maxs: vec3f;\nuniform scales_mins: f32;\nuniform scales_maxs: f32;\nvar<private> packedSample: vec4<u32>;\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\tpackedSample = textureLoad(packedTexture, source.uv, 0);\n\tlet l = unpack8888(packedSample.x).xyz;\n\tlet u = unpack8888(packedSample.y).xyz;\n\tlet n = (l * 255.0 + u * 255.0 * 256.0) / 65535.0;\n\tlet v = mix(uniform.means_mins, uniform.means_maxs, n);\n\treturn sign(v) * (exp(abs(v)) - 1.0);\n}\nconst norm: f32 = 2.0 / sqrt(2.0);\nfn readCovariance(source: ptr<function, SplatSource>, covA_ptr: ptr<function, vec3f>, covB_ptr: ptr<function, vec3f>) {\n\tlet qdata = unpack8888(packedSample.z).xyz;\n\tlet sdata = unpack101010(packedSample.w >> 2u);\n\tlet qmode = packedSample.w & 0x3u;\n\tlet abc = (qdata - 0.5) * norm;\n\tlet d = sqrt(max(0.0, 1.0 - dot(abc, abc)));\n\tvar quat: vec4f;\n\tif (qmode == 0u) {\n\t\tquat = vec4f(d, abc);\n\t} else if (qmode == 1u) {\n\t\tquat = vec4f(abc.x, d, abc.y, abc.z);\n\t} else if (qmode == 2u) {\n\t\tquat = vec4f(abc.x, abc.y, d, abc.z);\n\t} else {\n\t\tquat = vec4f(abc.x, abc.y, abc.z, d);\n\t}\n\tlet rot = quatToMat3(quat);\n\tlet scale = exp(mix(vec3f(uniform.scales_mins), vec3f(uniform.scales_maxs), sdata));\n\tlet M = transpose(mat3x3f(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\t*covA_ptr = vec3f(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\t*covB_ptr = vec3f(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatSogsSHVS = `\nvar packedShN: texture_2d<f32>;\nuniform shN_mins: f32;\nuniform shN_maxs: f32;\nfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, SH_COEFFS>>, scale: ptr<function, f32>) {\n\tlet t = vec2i(packedSample.xy & vec2u(255u));\n\tlet n = t.x + t.y * 256;\n\tlet u = (n % 64) * SH_COEFFS;\n\tlet v = n / 64;\n\tfor (var i: i32 = 0; i < SH_COEFFS; i = i + 1) {\n\t\tsh[i] = mix(vec3f(uniform.shN_mins), vec3f(uniform.shN_maxs), unpack111110(pack8888(textureLoad(packedShN, vec2i(u + i, v), 0))));\n\t}\n\t*scale = 1.0;\n}\n`;\n\nvar gsplatSourceFormatVS = `\n#if defined(GSPLAT_WORKBUFFER_DATA)\n\t#include \"gsplatWorkBufferVS\"\n#elif GSPLAT_COMPRESSED_DATA == true\n\t#include \"gsplatCompressedDataVS\"\n\t#if SH_BANDS > 0\n\t\t#include \"gsplatCompressedSHVS\"\n\t#endif\n#elif GSPLAT_SOGS_DATA\n\t#include \"gsplatSogsDataVS\"\n\t#include \"gsplatSogsColorVS\"\n\t#if SH_BANDS > 0\n\t\t#include \"gsplatSogsSHVS\"\n\t#endif\n#else\n\t#include \"gsplatDataVS\"\n\t#include \"gsplatColorVS\"\n\t#if SH_BANDS > 0\n\t\t#include \"gsplatSHVS\"\n\t#endif\n#endif\n`;\n\nvar gsplatStructsVS = `\nstruct SplatSource {\n\torder: u32,\n\tid: u32,\n\tuv: vec2<i32>,\n\tcornerUV: vec2f,\n}\nstruct SplatCenter {\n\tview: vec3f,\n\tproj: vec4f,\n\tmodelView: mat4x4f,\n\tprojMat00: f32,\n}\nstruct SplatCorner {\n\toffset: vec2f,\n\tuv: vec2f,\n\t#if GSPLAT_AA\n\t\taaFactor: f32,\n\t#endif\n}\n`;\n\nvar gsplatCornerVS = `\nuniform viewport: vec2f;\nuniform camera_params: vec4f;\nfn initCornerCov(source: ptr<function, SplatSource>, center: ptr<function, SplatCenter>, corner: ptr<function, SplatCorner>, covA: vec3f, covB: vec3f) -> bool {\n\tlet Vrk = mat3x3f(\n\t\tvec3f(covA.x, covA.y, covA.z),\n\t\tvec3f(covA.y, covB.x, covB.y),\n\t\tvec3f(covA.z, covB.y, covB.z)\n\t);\n\tlet focal = uniform.viewport.x * center.projMat00;\n\tlet v = select(center.view.xyz, vec3f(0.0, 0.0, 1.0), uniform.camera_params.w == 1.0);\n\tlet J1 = focal / v.z;\n\tlet J2 = -J1 / v.z * v.xy;\n\tlet J = mat3x3f(\n\t\tvec3f(J1, 0.0, J2.x),\n\t\tvec3f(0.0, J1, J2.y),\n\t\tvec3f(0.0, 0.0, 0.0)\n\t);\n\tlet W = transpose(mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz));\n\tlet T = W * J;\n\tlet cov = transpose(T) * Vrk * T;\n\t#if GSPLAT_AA\n\t\tlet detOrig = cov[0][0] * cov[1][1] - cov[0][1] * cov[1][0];\n\t\tlet detBlur = (cov[0][0] + 0.3) * (cov[1][1] + 0.3) - cov[0][1] * cov[1][0];\n\t\tcorner.aaFactor = sqrt(detOrig / detBlur);\n\t#endif\n\tlet diagonal1 = cov[0][0] + 0.3;\n\tlet offDiagonal = cov[0][1];\n\tlet diagonal2 = cov[1][1] + 0.3;\n\tlet mid = 0.5 * (diagonal1 + diagonal2);\n\tlet radius = length(vec2f((diagonal1 - diagonal2) / 2.0, offDiagonal));\n\tlet lambda1 = mid + radius;\n\tlet lambda2 = max(mid - radius, 0.1);\n\tlet vmin = min(1024.0, min(uniform.viewport.x, uniform.viewport.y));\n\tlet l1 = 2.0 * min(sqrt(2.0 * lambda1), vmin);\n\tlet l2 = 2.0 * min(sqrt(2.0 * lambda2), vmin);\n\tif (l1 < 2.0 && l2 < 2.0) {\n\t\treturn false;\n\t}\n\tlet c = center.proj.ww / uniform.viewport;\n\tif (any((abs(center.proj.xy) - vec2f(max(l1, l2)) * c) > center.proj.ww)) {\n\t\treturn false;\n\t}\n\tlet diagonalVector = normalize(vec2f(offDiagonal, lambda1 - diagonal1));\n\tlet v1 = l1 * diagonalVector;\n\tlet v2 = l2 * vec2f(diagonalVector.y, -diagonalVector.x);\n\tcorner.offset = (source.cornerUV.x * v1 + source.cornerUV.y * v2) * c;\n\tcorner.uv = source.cornerUV;\n\treturn true;\n}\nfn initCorner(source: ptr<function, SplatSource>, center: ptr<function, SplatCenter>, corner: ptr<function, SplatCorner>) -> bool {\n\tvar covA: vec3f;\n\tvar covB: vec3f;\n\treadCovariance(source, &covA, &covB);\n\treturn initCornerCov(source, center, corner, covA, covB);\n}\n`;\n\nvar gsplatDataVS = `\nvar transformA: texture_2d<u32>;\nvar transformB: texture_2d<uff>;\nvar<private> tAw: u32;\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\tlet tA: vec4<u32> = textureLoad(transformA, source.uv, 0);\n\ttAw = tA.w;\n\treturn bitcast<vec3f>(tA.xyz);\n}\nfn unpackRotation(packed: vec3f) -> vec4f {\n\treturn vec4f(packed.xyz, sqrt(max(0.0, 1.0 - dot(packed, packed))));\n}\nfn readCovariance(source: ptr<function, SplatSource>, covA_ptr: ptr<function, vec3f>, covB_ptr: ptr<function, vec3f>) {\n\tlet tB: vec4f = textureLoad(transformB, source.uv, 0);\n\tlet rot: mat3x3f = quatToMat3(unpackRotation(vec3f(unpack2x16float(bitcast<u32>(tAw)), tB.w)).wxyz);\n\tlet scale: vec3f = tB.xyz;\n\tlet M = transpose(mat3x3f(\n\t\tscale.x * rot[0],\n\t\tscale.y * rot[1],\n\t\tscale.z * rot[2]\n\t));\n\t*covA_ptr = vec3f(dot(M[0], M[0]), dot(M[0], M[1]), dot(M[0], M[2]));\n\t*covB_ptr = vec3f(dot(M[1], M[1]), dot(M[1], M[2]), dot(M[2], M[2]));\n}\n`;\n\nvar gsplatOutputVS = `\n#include \"tonemappingPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\nfn prepareOutputFromGamma(gammaColor: vec3f) -> vec3f {\n\t#if TONEMAP == NONE\n\t\t#if GAMMA == NONE\n\t\t\treturn decodeGamma3(gammaColor);\n\t\t#else \n\t\t\treturn gammaColor;\n\t\t#endif\n\t#else\n\t\treturn gammaCorrectOutput(toneMap(decodeGamma3(gammaColor)));\n\t#endif\n}\n`;\n\nvar gsplatPS = `\n#ifndef DITHER_NONE\n\t#include \"bayerPS\"\n\t#include \"opacityDitherPS\"\n\tvarying id: f32;\n#endif\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\tuniform alphaClip: f32;\n#endif\n#ifdef PREPASS_PASS\n\tvarying vLinearDepth: f32;\n\t#include \"floatAsUintPS\"\n#endif\nconst EXP4\t  = exp(-4.0);\nconst INV_EXP4  = 1.0 / (1.0 - EXP4);\nfn normExp(x: f32) -> f32 {\n\treturn (exp(x * -4.0) - EXP4) * INV_EXP4;\n}\nvarying gaussianUV: vec2f;\nvarying gaussianColor: vec4f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet A: f32 = dot(gaussianUV, gaussianUV);\n\tif (A > 1.0) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\tvar alpha = normExp(A) * gaussianColor.a;\n\t#if defined(SHADOW_PASS) || defined(PICK_PASS) || defined(PREPASS_PASS)\n\t\tif (alpha < uniform.alphaClip) {\n\t\t\tdiscard;\n\t\t\treturn output;\n\t\t}\n\t#endif\n\t#ifdef PICK_PASS\n\t\toutput.color = getPickOutput();\n\t#elif SHADOW_PASS\n\t\toutput.color = vec4f(0.0, 0.0, 0.0, 1.0);\n\t#elif PREPASS_PASS\n\t\toutput.color = float2vec4(vLinearDepth);\n\t#else\n\t\tif (alpha < (1.0 / 255.0)) {\n\t\t\tdiscard;\n\t\t\treturn output;\n\t\t}\n\t\t#ifndef DITHER_NONE\n\t\t\topacityDither(&alpha, id * 0.013);\n\t\t#endif\n\t\toutput.color = vec4f(input.gaussianColor.xyz * alpha, alpha);\n\t#endif\n\treturn output;\n}`;\n\nvar gsplatSHVS = `\n#if SH_BANDS > 0\nfn unpack111011s(bits: u32) -> vec3f {\n\treturn (vec3f((vec3<u32>(bits) >> vec3<u32>(21u, 11u, 0u)) & vec3<u32>(0x7ffu, 0x3ffu, 0x7ffu)) / vec3f(2047.0, 1023.0, 2047.0)) * 2.0 - 1.0;\n}\nstruct ScaleAndSH {\n\tscale: f32,\n\ta: vec3f,\n\tb: vec3f,\n\tc: vec3f\n};\nfn fetchScale(t_in: vec4<u32>) -> ScaleAndSH {\n\tvar result: ScaleAndSH;\n\tresult.scale = bitcast<f32>(t_in.x);\n\tresult.a = unpack111011s(t_in.y);\n\tresult.b = unpack111011s(t_in.z);\n\tresult.c = unpack111011s(t_in.w);\n\treturn result;\n}\nstruct SH {\n\ta: vec3f,\n\tb: vec3f,\n\tc: vec3f,\n\td: vec3f\n};\nfn fetch4(t_in: vec4<u32>) -> SH {\n\tvar result: SH;\n\tresult.a = unpack111011s(t_in.x);\n\tresult.b = unpack111011s(t_in.y);\n\tresult.c = unpack111011s(t_in.z);\n\tresult.d = unpack111011s(t_in.w);\n\treturn result;\n}\nfn fetch1(t_in: u32) -> vec3f {\n\treturn unpack111011s(t_in);\n}\n#if SH_BANDS == 1\n\tvar splatSH_1to3: texture_2d<u32>;\n\tfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 3>>, scale: ptr<function, f32>) {\n\t\tlet result = fetchScale(textureLoad(splatSH_1to3, source.uv, 0));\n\t\t*scale = result.scale;\n\t\tsh[0] = result.a;\n\t\tsh[1] = result.b;\n\t\tsh[2] = result.c;\n\t}\n#elif SH_BANDS == 2\n\tvar splatSH_1to3: texture_2d<u32>;\n\tvar splatSH_4to7: texture_2d<u32>;\n\tvar splatSH_8to11: texture_2d<u32>;\n\tfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 8>>, scale: ptr<function, f32>) {\n\t\tlet first: ScaleAndSH = fetchScale(textureLoad(splatSH_1to3, source.uv, 0));\n\t\t*scale = first.scale;\n\t\tsh[0] = first.a;\n\t\tsh[1] = first.b;\n\t\tsh[2] = first.c;\n\t\tlet second: SH = fetch4(textureLoad(splatSH_4to7, source.uv, 0));\n\t\tsh[3] = second.a;\n\t\tsh[4] = second.b;\n\t\tsh[5] = second.c;\n\t\tsh[6] = second.d;\n\t\tsh[7] = fetch1(textureLoad(splatSH_8to11, source.uv, 0).x);\n\t}\n#else\n\tvar splatSH_1to3: texture_2d<u32>;\n\tvar splatSH_4to7: texture_2d<u32>;\n\tvar splatSH_8to11: texture_2d<u32>;\n\tvar splatSH_12to15: texture_2d<u32>;\n\tfn readSHData(source: ptr<function, SplatSource>, sh: ptr<function, array<vec3f, 15>>, scale: ptr<function, f32>) {\n\t\tlet first: ScaleAndSH = fetchScale(textureLoad(splatSH_1to3, source.uv, 0));\n\t\t*scale = first.scale;\n\t\tsh[0] = first.a;\n\t\tsh[1] = first.b;\n\t\tsh[2] = first.c;\n\t\tlet second: SH = fetch4(textureLoad(splatSH_4to7, source.uv, 0));\n\t\tsh[3] = second.a;\n\t\tsh[4] = second.b;\n\t\tsh[5] = second.c;\n\t\tsh[6] = second.d;\n\t\tlet third: SH = fetch4(textureLoad(splatSH_8to11, source.uv, 0));\n\t\tsh[7] = third.a;\n\t\tsh[8] = third.b;\n\t\tsh[9] = third.c;\n\t\tsh[10] = third.d;\n\t\tlet fourth: SH = fetch4(textureLoad(splatSH_12to15, source.uv, 0));\n\t\tsh[11] = fourth.a;\n\t\tsh[12] = fourth.b;\n\t\tsh[13] = fourth.c;\n\t\tsh[14] = fourth.d;\n\t}\n#endif\n#endif\n`;\n\nvar gsplatSourceVS = `\nattribute vertex_position: vec3f;\nattribute vertex_id_attrib: u32;\nuniform numSplats: u32;\nvar splatOrder: texture_2d<u32>;\nfn initSource(source: ptr<function, SplatSource>) -> bool {\n\tlet w: u32 = textureDimensions(splatOrder, 0).x;\n\tsource.order = vertex_id_attrib + u32(vertex_position.z);\n\tif (source.order >= uniform.numSplats) {\n\t\treturn false;\n\t}\n\tlet orderUV = vec2i(vec2u(source.order % w, source.order / w));\n\tsource.id = textureLoad(splatOrder, orderUV, 0).r;\n\tsource.uv = vec2i(vec2u(source.id % w, source.id / w));\n\tsource.cornerUV = vertex_position.xy;\n\treturn true;\n}\n`;\n\nvar gsplatVS = `\n#include \"gsplatCommonVS\"\nvarying gaussianUV: vec2f;\nvarying gaussianColor: vec4f;\n#ifndef DITHER_NONE\n\tvarying id: f32;\n#endif\nconst discardVec: vec4f = vec4f(0.0, 0.0, 2.0, 1.0);\n#ifdef PREPASS_PASS\n\tvarying vLinearDepth: f32;\n#endif\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\tvar source: SplatSource;\n\tif (!initSource(&source)) {\n\t\toutput.position = discardVec;\n\t\treturn output;\n\t}\n\tlet modelCenter: vec3f = readCenter(&source);\n\tvar center: SplatCenter;\n\tif (!initCenter(modelCenter, &center)) {\n\t\toutput.position = discardVec;\n\t\treturn output;\n\t}\n\tvar corner: SplatCorner;\n\tif (!initCorner(&source, &center, &corner)) {\n\t\toutput.position = discardVec;\n\t\treturn output;\n\t}\n\tvar clr: vec4f = readColor(&source);\n\t#if GSPLAT_AA\n\t\tclr.a = clr.a * corner.aaFactor;\n\t#endif\n\t#if SH_BANDS > 0\n\t\tlet modelView3x3 = mat3x3f(center.modelView[0].xyz, center.modelView[1].xyz, center.modelView[2].xyz);\n\t\tlet dir = normalize(center.view * modelView3x3);\n\t\tvar sh: array<vec3f, SH_COEFFS>;\n\t\tvar scale: f32;\n\t\treadSHData(&source, &sh, &scale);\n\t\tclr = vec4f(clr.xyz + evalSH(&sh, dir) * scale, clr.a);\n\t#endif\n\tclipCorner(&corner, clr.w);\n\toutput.position = center.proj + vec4f(corner.offset, 0.0, 0.0);\n\toutput.gaussianUV = corner.uv;\n\toutput.gaussianColor = vec4f(prepareOutputFromGamma(max(clr.xyz, vec3f(0.0))), clr.w);\n\t#ifndef DITHER_NONE\n\t\toutput.id = f32(source.id);\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\toutput.vLinearDepth = -center.view.z;\n\t#endif\n\treturn output;\n}\n`;\n\nvar gsplatWorkBufferVS = `\nvar center: texture_2d<uff>;\nvar covA: texture_2d<uff>;\nvar covB: texture_2d<uff>;\nvar splatColor: texture_2d<uff>;\nfn readCenter(source: ptr<function, SplatSource>) -> vec3f {\n\treturn textureLoad(center, source.uv, 0).xyz;\n}\nfn readCovariance(source: ptr<function, SplatSource>, cov_A: ptr<function, vec3f>, cov_B: ptr<function, vec3f>) {\n\t*cov_A = textureLoad(covA, source.uv, 0).xyz;\n\t*cov_B = textureLoad(covB, source.uv, 0).xyz;\n}\nfn readColor(source: ptr<function, SplatSource>) -> vec4f {\n\treturn textureLoad(splatColor, source.uv, 0);\n}   \n`;\n\nvar quadVS = `\n\tattribute aPosition: vec2f;\n\tvarying uv0: vec2f;\n\t@vertex fn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(input.aPosition, 0.0, 1.0);\n\t\toutput.uv0 = getImageEffectUV((input.aPosition + 1.0) * 0.5);\n\t\treturn output;\n\t}\n`;\n\nvar indirectCoreCS = `\nstruct DrawIndexedIndirectArgs {\n\tindexCount: u32,\n\tinstanceCount: u32,\n\tfirstIndex: u32,\n\tbaseVertex: i32,\n\tfirstInstance: u32\n};\nstruct DrawIndirectArgs {\n\tvertexCount: u32,\n\tinstanceCount: u32,\n\tfirstVertex: u32,\n\tfirstInstance: u32,\n\t_pad: u32\n};\n`;\n\nvar immediateLinePS = `\n\t#include \"gammaPS\"\n\tvarying color: vec4f;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\toutput.color = vec4f(gammaCorrectOutput(decodeGamma3(input.color.rgb)), input.color.a);\n\t\treturn output;\n\t}\n`;\n\nvar immediateLineVS = `\n\tattribute vertex_position: vec4f;\n\tattribute vertex_color: vec4f;\n\tuniform matrix_model: mat4x4f;\n\tuniform matrix_viewProjection: mat4x4f;\n\tvarying color: vec4f;\n\t@vertex\n\tfn vertexMain(input : VertexInput) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\toutput.color = input.vertex_color;\n\t\toutput.position = uniform.matrix_viewProjection * uniform.matrix_model * input.vertex_position;\n\t\treturn output;\n\t}\n`;\n\nvar iridescenceDiffractionPS = `\nuniform material_iridescenceRefractionIndex: f32;\nfn iridescence_iorToFresnelScalar(transmittedIor: f32, incidentIor: f32) -> f32 {\n\treturn pow((transmittedIor - incidentIor) / (transmittedIor + incidentIor), 2.0);\n}\nfn iridescence_iorToFresnelVec3(transmittedIor: vec3f, incidentIor: f32) -> vec3f {\n\treturn pow((transmittedIor - vec3f(incidentIor)) / (transmittedIor + vec3f(incidentIor)), vec3f(2.0));\n}\nfn iridescence_fresnelToIor(f0: vec3f) -> vec3f {\n\tlet sqrtF0: vec3f = sqrt(f0);\n\treturn (vec3f(1.0) + sqrtF0) / (vec3f(1.0) - sqrtF0);\n}\nconst XYZ_TO_REC709: mat3x3f = mat3x3f(\n\tvec3f(3.2404542, -1.5371385, -0.4985314),\n\tvec3f(-0.9692660,  1.8760108,  0.0415560),\n\tvec3f(0.0556434, -0.2040259,  1.0572252)\n);\nfn iridescence_sensitivity(opd: f32, shift: vec3f) -> vec3f {\n\tlet PI: f32 = 3.141592653589793;\n\tlet phase: f32 = 2.0 * PI * opd * 1.0e-9;\n\tconst val: vec3f = vec3f(5.4856e-13, 4.4201e-13, 5.2481e-13);\n\tconst pos: vec3f = vec3f(1.6810e+06, 1.7953e+06, 2.2084e+06);\n\tconst var_: vec3f = vec3f(4.3278e+09, 9.3046e+09, 6.6121e+09);\n\tvar xyz: vec3f = val * sqrt(2.0 * PI * var_) * cos(pos * phase + shift) * exp(-pow(phase, 2.0) * var_);\n\txyz.x = xyz.x + 9.7470e-14 * sqrt(2.0 * PI * 4.5282e+09) * cos(2.2399e+06 * phase + shift[0]) * exp(-4.5282e+09 * pow(phase, 2.0));\n\txyz = xyz / vec3f(1.0685e-07);\n\treturn XYZ_TO_REC709 * xyz;\n}\nfn iridescence_fresnelScalar(cosTheta: f32, f0: f32) -> f32 {\n\tlet x: f32 = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tlet x2: f32 = x * x;\n\tlet x5: f32 = x * x2 * x2;\n\treturn f0 + (1.0 - f0) * x5;\n}\nfn iridescence_fresnelVec3(cosTheta: f32, f0: vec3f) -> vec3f {\n\tlet x: f32 = clamp(1.0 - cosTheta, 0.0, 1.0);\n\tlet x2: f32 = x * x;\n\tlet x5: f32 = x * x2 * x2;\n\treturn f0 + (vec3f(1.0) - f0) * x5;\n}\nfn calcIridescence(outsideIor: f32, cosTheta: f32, base_f0: vec3f, iridescenceThickness: f32) -> vec3f {\n\tlet PI: f32 = 3.141592653589793;\n\tlet iridescenceIor: f32 = mix(outsideIor, uniform.material_iridescenceRefractionIndex, smoothstep(0.0, 0.03, iridescenceThickness));\n\tlet sinTheta2Sq: f32 = pow(outsideIor / iridescenceIor, 2.0) * (1.0 - pow(cosTheta, 2.0));\n\tlet cosTheta2Sq: f32 = 1.0 - sinTheta2Sq;\n\tif (cosTheta2Sq < 0.0) {\n\t\treturn vec3f(1.0);\n\t}\n\tlet cosTheta2: f32 = sqrt(cosTheta2Sq);\n\tlet r0: f32 = iridescence_iorToFresnelScalar(iridescenceIor, outsideIor);\n\tlet r12: f32 = iridescence_fresnelScalar(cosTheta, r0);\n\tlet r21: f32 = r12;\n\tlet t121: f32 = 1.0 - r12;\n\tlet phi12: f32 = select(0.0, PI, iridescenceIor < outsideIor);\n\tlet phi21: f32 = PI - phi12;\n\tlet baseIor: vec3f = iridescence_fresnelToIor(base_f0 + vec3f(0.0001));\n\tlet r1: vec3f = iridescence_iorToFresnelVec3(baseIor, iridescenceIor);\n\tlet r23: vec3f = iridescence_fresnelVec3(cosTheta2, r1);\n\tlet phi23: vec3f = select(vec3f(0.0), vec3f(PI), baseIor < vec3f(iridescenceIor));\n\tlet opd: f32 = 2.0 * iridescenceIor * iridescenceThickness * cosTheta2;\n\tlet phi: vec3f = vec3f(phi21) + phi23;\n\tlet r123Sq: vec3f = clamp(vec3f(r12) * r23, vec3f(1e-5), vec3f(0.9999));\n\tlet r123: vec3f = sqrt(r123Sq);\n\tlet rs: vec3f = pow(vec3f(t121), vec3f(2.0)) * r23 / (vec3f(1.0) - r123Sq);\n\tlet c0: vec3f = vec3f(r12) + rs;\n\tvar i_irid: vec3f = c0;\n\tvar cm: vec3f = rs - vec3f(t121);\n\tcm = cm * r123;\n\tlet sm1: vec3f = 2.0 * iridescence_sensitivity(1.0 * opd, 1.0 * phi);\n\ti_irid = i_irid + cm * sm1;\n\tcm = cm * r123;\n\tlet sm2: vec3f = 2.0 * iridescence_sensitivity(2.0 * opd, 2.0 * phi);\n\ti_irid = i_irid + cm * sm2;\n\treturn max(i_irid, vec3f(0.0));\n}\nfn getIridescenceDiffraction(cosTheta: f32, specularity: vec3f, iridescenceThickness: f32) -> vec3f {\n\treturn calcIridescence(1.0, cosTheta, specularity, iridescenceThickness);\n}\n`;\n\nvar iridescencePS = `\n#ifdef STD_IRIDESCENCE_CONSTANT\n\tuniform material_iridescence: f32;\n#endif\nfn getIridescence() {\n\tvar iridescence = 1.0;\n\t#ifdef STD_IRIDESCENCE_CONSTANT\n\tiridescence = iridescence * uniform.material_iridescence;\n\t#endif\n\t#ifdef STD_IRIDESCENCE_TEXTURE\n\tiridescence = iridescence * textureSampleBias({STD_IRIDESCENCE_TEXTURE_NAME}, {STD_IRIDESCENCE_TEXTURE_NAME}Sampler, {STD_IRIDESCENCE_TEXTURE_UV}, uniform.textureBias).{STD_IRIDESCENCE_TEXTURE_CHANNEL};\n\t#endif\n\tdIridescence = iridescence; \n}\n`;\n\nvar iridescenceThicknessPS = `\nuniform material_iridescenceThicknessMax: f32;\n#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\n\tuniform material_iridescenceThicknessMin: f32;\n#endif\nfn getIridescenceThickness() {\n\t#ifdef STD_IRIDESCENCETHICKNESS_TEXTURE\n\t\tvar blend: f32 = textureSampleBias({STD_IRIDESCENCETHICKNESS_TEXTURE_NAME}, {STD_IRIDESCENCETHICKNESS_TEXTURE_NAME}Sampler, {STD_IRIDESCENCETHICKNESS_TEXTURE_UV}, uniform.textureBias).{STD_IRIDESCENCETHICKNESS_TEXTURE_CHANNEL};\n\t\tvar iridescenceThickness: f32 = mix(uniform.material_iridescenceThicknessMin, uniform.material_iridescenceThicknessMax, blend);\n\t#else\n\t\tvar iridescenceThickness: f32 = uniform.material_iridescenceThicknessMax;\n\t#endif\n\tdIridescenceThickness = iridescenceThickness; \n}\n`;\n\nvar iorPS = `\n#ifdef STD_IOR_CONSTANT\n\tuniform material_refractionIndex: f32;\n#endif\nfn getIor() {\n#ifdef STD_IOR_CONSTANT\n\tdIor = uniform.material_refractionIndex;\n#else\n\tdIor = 1.0 / 1.5;\n#endif\n}\n`;\n\nvar lightDeclarationPS = `\n#if defined(LIGHT{i})\n\tuniform light{i}_color: vec3f;\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tuniform light{i}_direction: vec3f;\n\t#else\n\t\t#define LIT_CODE_LIGHTS_POINT\n\t\tuniform light{i}_position: vec3f;\n\t\tuniform light{i}_radius: f32;\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#define LIT_CODE_LIGHTS_SPOT\n\t\t\tuniform light{i}_direction: vec3f;\n\t\t\tuniform light{i}_innerConeAngle: f32;\n\t\t\tuniform light{i}_outerConeAngle: f32;\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform light{i}_position: vec3f;\n\t\t#endif\n\t\tuniform light{i}_halfWidth: vec3f;\n\t\tuniform light{i}_halfHeight: vec3f;\n\t#else\n\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t#define LIT_CODE_FALLOFF_LINEAR\n\t\t#endif\n\t\t#if LIGHT{i}FALLOFF == INVERSESQUARED\n\t\t\t#define LIT_CODE_FALLOFF_SQUARED\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}CASTSHADOW)\n\t\tuniform light{i}_shadowMatrix: mat4x4f;\n\t\tuniform light{i}_shadowIntensity: f32;\n\t\tuniform light{i}_shadowParams: vec4f;\n\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\tuniform light{i}_shadowSearchArea: f32;\n\t\t\tuniform light{i}_cameraParams: vec4f;\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t\tuniform light{i}_softShadowParams: vec4f;\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tuniform light{i}_shadowMatrixPalette: array<mat4x4f, 4>;\n\t\t\tuniform light{i}_shadowCascadeDistances: vec4f;\n\t\t\tuniform light{i}_shadowCascadeCount: i32;\n\t\t\tuniform light{i}_shadowCascadeBlend: f32;\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\tNOT SUPPORTED\n\t\t\t\n\t\t#else\n\t\t\t#if defined(LIGHT{i}SHADOW_PCF)\n\t\t\t\tvar light{i}_shadowMap: texture_depth_2d;\n\t\t\t\tvar light{i}_shadowMapSampler: sampler_comparison;\n\t\t\t#else\n\t\t\t\tvar light{i}_shadowMap: texture_2d<f32>;\n\t\t\t\tvar light{i}_shadowMapSampler: sampler;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#if defined(LIGHT{i}COOKIE)\n\t\t#define LIT_CODE_COOKIE\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\tNOT SUPPORTED\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\tNOT SUPPORTED\n\t\t#endif\n\t#endif\n#endif\n`;\n\nvar lightDiffuseLambertPS = `\nfn getLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\treturn max(dot(worldNormal, -lightDirNorm), 0.0);\n}\n`;\n\nvar lightDirPointPS = `\nfn evalOmniLight(lightPosW: vec3f) -> vec3f {\n\treturn vPositionW - lightPosW;\n}\n`;\n\nvar lightEvaluationPS = `\n#if defined(LIGHT{i})\n\tevaluateLight{i}(\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\tiridescenceFresnel\n\t\t#endif\n\t);\n#endif\n`;\n\nvar lightFunctionLightPS = `\n#if defined(LIGHT{i})\nfn evaluateLight{i}(\n\t#if defined(LIT_IRIDESCENCE)\n\t\tiridescenceFresnel: vec3f\n\t#endif\n) {\n\tvar lightColor: vec3f = uniform.light{i}_color;\n\t#if LIGHT{i}TYPE == DIRECTIONAL && !defined(LIT_SHADOW_CATCHER)\n\t\tif (all(lightColor == vec3f(0.0, 0.0, 0.0))) {\n\t\t\treturn;\n\t\t}\n\t#endif\n\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\tdLightDirNormW = uniform.light{i}_direction;\n\t\tdAtten = 1.0;\n\t#else\n\t\tvar lightDirW: vec3f = evalOmniLight(uniform.light{i}_position);\n\t\tdLightDirNormW = normalize(lightDirW);\n\t\t#if defined(LIGHT{i}COOKIE)\n\t\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t\t#ifdef LIGHT{i}COOKIE_FALLOFF\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2DXform(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity, uniform.light{i}_cookieMatrix, uniform.light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2D(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\t#ifdef LIGHT{i}COOKIE_TRANSFORM\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2DClipXform(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity, uniform.light{i}_cookieMatrix, uniform.light{i}_cookieOffset).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#else\n\t\t\t\t\t\tvar cookieAttenuation: vec3f = getCookie2DClip(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t\t\t#endif\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t\tvar cookieAttenuation: vec3f = getCookieCube(uniform.light{i}_cookie, uniform.light{i}_shadowMatrix, uniform.light{i}_cookieIntensity).{LIGHT{i}COOKIE_CHANNEL};\n\t\t\t#endif\n\t\t\tlightColor = lightColor * cookieAttenuation;\n\t\t#endif\n\t\t#if LIGHT{i}SHAPE == PUNCTUAL\n\t\t\t#if LIGHT{i}FALLOFF == LINEAR\n\t\t\t\tdAtten = getFalloffLinear(uniform.light{i}_radius, lightDirW);\n\t\t\t#else\n\t\t\t\tdAtten = getFalloffInvSquared(uniform.light{i}_radius, lightDirW);\n\t\t\t#endif\n\t\t#else\n\t\t\tdAtten = getFalloffWindow(uniform.light{i}_radius, lightDirW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if !defined(LIGHT{i}COOKIE) || defined(LIGHT{i}COOKIE_FALLOFF)\n\t\t\t\tdAtten = dAtten * getSpotEffect(uniform.light{i}_direction, uniform.light{i}_innerConeAngle, uniform.light{i}_outerConeAngle, dLightDirNormW);\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tif (dAtten < 0.00001) {\n\t\treturn;\n\t}\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\tcalcRectLightValues(uniform.light{i}_position, uniform.light{i}_halfWidth, uniform.light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\tcalcDiskLightValues(uniform.light{i}_position, uniform.light{i}_halfWidth, uniform.light{i}_halfHeight);\n\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\tcalcSphereLightValues(uniform.light{i}_position, uniform.light{i}_halfWidth, uniform.light{i}_halfHeight);\n\t\t#endif\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvar attenDiffuse: f32 = getLightDiffuse(litArgs_worldNormal, dViewDirW, dLightDirNormW);\n\t\t#else\n\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\tvar attenDiffuse: f32 = getRectLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\tvar attenDiffuse: f32 = getDiskLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\tvar attenDiffuse: f32 = getSphereLightDiffuse(litArgs_worldNormal, dViewDirW, lightDirW, dLightDirNormW) * 16.0;\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tdAtten = dAtten * getLightDiffuse(litArgs_worldNormal, vec3(0.0), dLightDirNormW);\n\t#endif\n\t#ifdef LIGHT{i}CASTSHADOW\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvar shadow: f32 = getShadow{i}(vec3(0.0));\n\t\t#else\n\t\t\tvar shadow: f32 = getShadow{i}(lightDirW);\n\t\t#endif\n\t\tshadow = mix(1.0, shadow, uniform.light{i}_shadowIntensity);\n\t\tdAtten = dAtten * shadow;\n\t\t#if defined(LIT_SHADOW_CATCHER) && LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tdShadowCatcher = dShadowCatcher * shadow;\n\t\t#endif\t\t\t\n\t#endif\n\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight = dDiffuseLight + (((attenDiffuse * dAtten) * lightColor) * (1.0 - dLTCSpecFres));\n\t\t#else\n\t\t\tdDiffuseLight = dDiffuseLight + ((attenDiffuse * dAtten) * lightColor);\n\t\t#endif\t\t\t\t\t\t\n\t#else\n\t\t#if defined(AREA_LIGHTS) && defined(LIT_SPECULAR)\n\t\t\tdDiffuseLight = dDiffuseLight + ((dAtten * lightColor) * (1.0 - litArgs_specularity));\n\t\t#else\n\t\t\tdDiffuseLight = dDiffuseLight + (dAtten * lightColor);\n\t\t#endif\n\t#endif\n\t#ifdef LIGHT{i}AFFECT_SPECULARITY\n\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tccSpecularLight = ccSpecularLight + (ccLTCSpecFres * getRectLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tccSpecularLight = ccSpecularLight + (ccLTCSpecFres * getDiskLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tccSpecularLight = ccSpecularLight + (ccLTCSpecFres * getSphereLightSpecular(litArgs_clearcoat_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\t#if LIGHT{i}SHAPE == RECT\n\t\t\t\t\tdSpecularLight = dSpecularLight + (dLTCSpecFres * getRectLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == DISK\n\t\t\t\t\tdSpecularLight = dSpecularLight + (dLTCSpecFres * getDiskLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#elif LIGHT{i}SHAPE == SPHERE\n\t\t\t\t\tdSpecularLight = dSpecularLight + (dLTCSpecFres * getSphereLightSpecular(litArgs_worldNormal, dViewDirW) * dAtten * lightColor);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#else\n\t\t\t#if LIGHT{i}TYPE == DIRECTIONAL && LIT_FRESNEL_MODEL != NONE\n\t\t\t\t#define LIGHT{i}FRESNEL\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvar halfDirW: vec3f = normalize(-dLightDirNormW + dViewDirW);\n\t\t\t#endif\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tvar lightspecularCC: vec3f = getLightSpecular(halfDirW, ccReflDirW, litArgs_clearcoat_worldNormal, dViewDirW, dLightDirNormW, litArgs_clearcoat_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\tlightspecularCC = lightspecularCC * getFresnelCC(dot(dViewDirW, halfDirW));\n\t\t\t\t#endif\n\t\t\t\tccSpecularLight = ccSpecularLight + lightspecularCC;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tsSpecularLight = sSpecularLight + (getLightSpecularSheen(halfDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_sheen_gloss) * dAtten * lightColor);\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tvar lightSpecular: vec3f = getLightSpecular(halfDirW, dReflDirW, litArgs_worldNormal, dViewDirW, dLightDirNormW, litArgs_gloss, dTBN) * dAtten * lightColor;\n\t\t\t\t#ifdef LIGHT{i}FRESNEL\n\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tlightSpecular = lightSpecular * getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity, iridescenceFresnel, litArgs_iridescence_intensity);\n\t\t\t\t\t#else\n\t\t\t\t\t\tlightSpecular = lightSpecular * getFresnel(dot(dViewDirW, halfDirW), litArgs_gloss, litArgs_specularity);\n\t\t\t\t\t#endif\n\t\t\t\t#else\n\t\t\t\t\tlightSpecular = lightSpecular * litArgs_specularity;\n\t\t\t\t#endif\n\t\t\t\t\n\t\t\t\tdSpecularLight = dSpecularLight + lightSpecular;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n}\n#endif\n`;\n\nvar lightFunctionShadowPS = `\n#ifdef LIGHT{i}CASTSHADOW\n\tfn getShadowSampleCoord{i}(shadowTransform: mat4x4f, shadowParams: vec4f, worldPosition: vec3f, lightPos: vec3f, lightDir: ptr<function, vec3f>, lightDirNorm: vec3f, normal: vec3f) -> vec3f {\n\t\tvar surfacePosition = worldPosition;\n\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_POINT\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\tlet distScale: f32 = length(*lightDir);\n\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\t*lightDir = surfacePosition - lightPos;\n\t\t\t\treturn *lightDir;\n\t\t\t#endif\n\t\t#else\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y;\n\t\t\t\t#endif\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_NORMAL_OFFSET\n\t\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\t\t\tvar distScale: f32 = 1.0;\n\t\t\t\t\t#else\n\t\t\t\t\t\tvar distScale: f32 = abs(dot(vPositionW - lightPos, lightDirNorm));\n\t\t\t\t\t#endif\n\t\t\t\t\tsurfacePosition = surfacePosition + normal * shadowParams.y * clamp(1.0 - dot(normal, -lightDirNorm), 0.0, 1.0) * distScale;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\tvar positionInShadowSpace: vec4f = shadowTransform * vec4f(surfacePosition, 1.0);\n\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_ORTHO\n\t\t\t\tpositionInShadowSpace.z = saturate(positionInShadowSpace.z) - 0.0001;\n\t\t\t#else\n\t\t\t\t#ifdef LIGHT{i}_SHADOW_SAMPLE_SOURCE_ZBUFFER\n\t\t\t\t\tpositionInShadowSpace.xyz = positionInShadowSpace.xyz / positionInShadowSpace.w;\n\t\t\t\t#else\n\t\t\t\t\tpositionInShadowSpace.xy = positionInShadowSpace.xy / positionInShadowSpace.w;\n\t\t\t\t\tpositionInShadowSpace.z = length(*lightDir) * shadowParams.w;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef SHADOW_SAMPLE_Z_BIAS\n\t\t\t#endif\n\t\t\tsurfacePosition = positionInShadowSpace.xyz;\n\t\t#endif\n\t\treturn surfacePosition;\n\t}\n\tfn getShadow{i}(lightDirW_in: vec3f) -> f32 {\n\t\t#ifdef LIGHT{i}_SHADOW_CASCADES\n\t\t\tvar cascadeIndex: i32 = getShadowCascadeIndex(uniform.light{i}_shadowCascadeDistances, uniform.light{i}_shadowCascadeCount);\n\t\t\t#ifdef LIGHT{i}_SHADOW_CASCADE_BLEND\n\t\t\t\tcascadeIndex = ditherShadowCascadeIndex(cascadeIndex, uniform.light{i}_shadowCascadeDistances, uniform.light{i}_shadowCascadeCount, uniform.light{i}_shadowCascadeBlend);\n\t\t\t#endif\n\t\t\tvar shadowMatrix: mat4x4f = uniform.light{i}_shadowMatrixPalette[cascadeIndex];\n\t\t#else\n\t\t\tvar shadowMatrix: mat4x4f = uniform.light{i}_shadowMatrix;\n\t\t#endif\n\t\tvar lightDirArg = lightDirW_in;\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tvar shadowCoord: vec3f = getShadowSampleCoord{i}(shadowMatrix, uniform.light{i}_shadowParams, vPositionW, vec3f(0.0), &lightDirArg, dLightDirNormW, dVertexNormalW);\n\t\t#else\n\t\t\t var shadowCoord: vec3f = getShadowSampleCoord{i}(shadowMatrix, uniform.light{i}_shadowParams, vPositionW, uniform.light{i}_position, &lightDirArg, dLightDirNormW, dVertexNormalW);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\tshadowCoord = fadeShadow(shadowCoord, uniform.light{i}_shadowCascadeDistances);\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == DIRECTIONAL\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowVSM16(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 5.54);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowVSM32(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 15.0);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tlet shadowSearchArea = vec2f(length(uniform.light{i}_halfWidth), length(uniform.light{i}_halfHeight)) * uniform.light{i}_shadowSearchArea;\n\t\t\t\t\treturn getShadowPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, shadowSearchArea, lightDirW_in);\n\t\t\t\t#else\n\t\t\t\t\treturn getShadowPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, uniform.light{i}_softShadowParams, lightDirW_in);\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowPCF1x1(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowPCF3x3(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowPCF5x5(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == SPOT\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_16F\n\t\t\t\treturn getShadowSpotVSM16(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 5.54, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == VSM_32F\n\t\t\t\treturn getShadowSpotVSM32(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, 15.0, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t#if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(length(uniform.light{i}_halfWidth), length(uniform.light{i}_halfHeight)) * uniform.light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(uniform.light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowSpotPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, shadowSearchArea, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowSpotPCF1x1(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowSpotPCF3x3(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF5_16F || LIGHT{i}SHADOWTYPE == PCF5_32F\n\t\t\t\treturn getShadowSpotPCF5x5(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams);\n\t\t\t#endif\n\t\t#endif\n\t\t#if LIGHT{i}TYPE == OMNI\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCSS_32F\n\t\t\t\t var shadowSearchArea: vec2f;\n\t\t\t\t #if LIGHT{i}SHAPE != PUNCTUAL\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(length(uniform.light{i}_halfWidth), length(uniform.light{i}_halfHeight)) * uniform.light{i}_shadowSearchArea;\n\t\t\t\t#else\n\t\t\t\t\tvar shadowSearchArea: vec2f = vec2f(uniform.light{i}_shadowSearchArea);\n\t\t\t\t#endif\n\t\t\t\treturn getShadowOmniPCSS(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, uniform.light{i}_cameraParams, shadowSearchArea, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF1_16F || LIGHT{i}SHADOWTYPE == PCF1_32F\n\t\t\t\treturn getShadowOmniPCF1x1(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, lightDirW_in);\n\t\t\t#endif\n\t\t\t#if LIGHT{i}SHADOWTYPE == PCF3_16F || LIGHT{i}SHADOWTYPE == PCF3_32F\n\t\t\t\treturn getShadowOmniPCF3x3(light{i}_shadowMap, light{i}_shadowMapSampler, shadowCoord, uniform.light{i}_shadowParams, lightDirW_in);\n\t\t\t#endif\n\t\t#endif\n\t}\n#endif\n`;\n\nvar lightingPS = `\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#define LIT_CODE_FALLOFF_LINEAR\n\t#define LIT_CODE_FALLOFF_SQUARED\n\t#define LIT_CODE_LIGHTS_POINT\n\t#define LIT_CODE_LIGHTS_SPOT\n#endif\n#ifdef AREA_LIGHTS\n\tvar areaLightsLutTex1: texture_2d<f32>;\n\tvar areaLightsLutTex1Sampler: sampler;\n\tvar areaLightsLutTex2: texture_2d<f32>;\n\tvar areaLightsLutTex2Sampler: sampler;\n#endif\n#ifdef LIT_LIGHTING\n\t#include \"lightDiffuseLambertPS\"\n\t#if defined(AREA_LIGHTS) || defined(LIT_CLUSTERED_AREA_LIGHTS)\n\t\t#include \"ltcPS\"\n\t#endif\n#endif\n#ifdef SHADOW_DIRECTIONAL\n\t#include \"shadowCascadesPS\"\n#endif\n#if defined(SHADOW_KIND_PCF1)\n\t#include \"shadowPCF1PS\"\n#endif\n#if defined(SHADOW_KIND_PCF3)\n\t#include \"shadowPCF3PS\"\n#endif\n#if defined(SHADOW_KIND_PCF5)\n\t#include \"shadowPCF5PS\"\n#endif\n#if defined(SHADOW_KIND_PCSS)\n\t#include \"linearizeDepthPS\"\n\t#include \"shadowSoftPS\"\n#endif\n#if defined(SHADOW_KIND_VSM)\n\t#include \"shadowEVSMPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_LINEAR\n\t#include \"falloffLinearPS\"\n#endif\n#ifdef LIT_CODE_FALLOFF_SQUARED\n\t#include \"falloffInvSquaredPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_POINT\n\t#include \"lightDirPointPS\"\n#endif\n#ifdef LIT_CODE_LIGHTS_SPOT\n\t#include \"spotPS\"\n#endif\n#ifdef LIT_CODE_COOKIE\n\t#include \"cookiePS\"\n#endif\n#ifdef LIT_CLUSTERED_LIGHTS\n\t#include \"clusteredLightPS\"\n#endif\n#ifdef LIGHT_COUNT > 0\n\t#include \"lightFunctionShadowPS, LIGHT_COUNT\"\n\t#include \"lightFunctionLightPS, LIGHT_COUNT\"\n#endif\n`;\n\nvar lightmapAddPS = `\nfn addLightMap(\n\tlightmap: vec3f,\n\tdir: vec3f,\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\treflectionDir: vec3f,\n\tgloss: f32,\n\tspecularity: vec3f,\n\tvertexNormal: vec3f,\n\ttbn: mat3x3f\n#if defined(LIT_IRIDESCENCE)\n\t, iridescenceFresnel: vec3f,\n\tiridescenceIntensity: f32\n#endif\n) {\n\t#if defined(LIT_SPECULAR) && defined(LIT_DIR_LIGHTMAP)\n\t\tif (dot(dir, dir) < 0.0001) {\n\t\t\t\tdDiffuseLight = dDiffuseLight + lightmap;\n\t\t} else {\n\t\t\tlet vlight: f32 = saturate(dot(dir, -vertexNormal));\n\t\t\tlet flight: f32 = saturate(dot(dir, -worldNormal));\n\t\t\tlet nlight: f32 = (flight / max(vlight, 0.01)) * 0.5;\n\t\t\tdDiffuseLight = dDiffuseLight + lightmap * nlight * 2.0;\n\t\t\tlet halfDir: vec3f = normalize(-dir + viewDir);\n\t\t\tvar specularLight: vec3f = lightmap * getLightSpecular(halfDir, reflectionDir, worldNormal, viewDir, dir, gloss, tbn);\n\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\tspecularLight = specularLight *\n\t\t\t\t\tgetFresnel(dot(viewDir, halfDir),\n\t\t\t\t\tgloss,\n\t\t\t\t\tspecularity\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\tiridescenceIntensity\n\t\t\t\t#endif\n\t\t\t\t\t);\n\t\t\t#endif\n\t\t\tdSpecularLight = dSpecularLight + specularLight;\n\t\t}\n\t#else\n\t\tdDiffuseLight = dDiffuseLight + lightmap;\n\t#endif\n}\n`;\n\nvar lightmapPS = `\n#ifdef STD_LIGHTMAP_DIR\n\tvar<private> dLightmapDir: vec3f;\n\tvar texture_dirLightMap: texture_2d<f32>;\n\tvar texture_dirLightMapSampler: sampler;\n#endif\nfn getLightMap() {\n\tdLightmap = vec3f(1.0);\n\t#ifdef STD_LIGHT_TEXTURE\n\t\tdLightmap = dLightmap * {STD_LIGHT_TEXTURE_DECODE}(textureSampleBias({STD_LIGHT_TEXTURE_NAME}, {STD_LIGHT_TEXTURE_NAME}Sampler, {STD_LIGHT_TEXTURE_UV}, uniform.textureBias)).{STD_LIGHT_TEXTURE_CHANNEL};\n\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\tvar dir: vec3f = textureSampleBias(texture_dirLightMap, texture_dirLightMapSampler, {STD_LIGHT_TEXTURE_UV}, uniform.textureBias).xyz * 2.0 - 1.0;\n\t\t\tvar dirDot = dot(dir, dir);\n\t\t\tdLightmapDir = select(vec3(0.0), dir / sqrt(dirDot), dirDot > 0.001);\n\t\t#endif\n\t#endif\n\t#ifdef STD_LIGHT_VERTEX\n\t\tdLightmap = dLightmap * saturate(vVertexColor.{STD_LIGHT_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar lightSpecularAnisoGGXPS = `\nfn calcLightSpecular(gloss: f32, worldNormal: vec3f, viewDir: vec3f, h: vec3f, lightDirNorm: vec3f, tbn: mat3x3f) -> f32 {\n\tlet PI: f32 = 3.141592653589793;\n\tlet roughness: f32 = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\tlet alphaRoughness: f32 = roughness * roughness;\n\tlet anisotropy: f32 = dAnisotropy;\n\tlet direction: vec2f = dAnisotropyRotation;\n\tlet at: f32 = mix(alphaRoughness, 1.0, anisotropy * anisotropy);\n\tlet ab: f32 = clamp(alphaRoughness, 0.001, 1.0);\n\tlet anisotropicT: vec3f = normalize(tbn * vec3f(direction, 0.0));\n\tlet anisotropicB: vec3f = normalize(cross(tbn[2], anisotropicT));\n\tlet NoH: f32 = dot(worldNormal, h);\n\tlet ToH: f32 = dot(anisotropicT, h);\n\tlet BoH: f32 = dot(anisotropicB, h);\n\tlet a2: f32 = at * ab;\n\tlet v: vec3f = vec3f(ab * ToH, at * BoH, a2 * NoH);\n\tlet v2: f32 = dot(v, v);\n\tlet w2: f32 = a2 / v2;\n\tlet D: f32 = a2 * w2 * w2 * (1.0 / PI);\n\tlet ToV: f32 = dot(anisotropicT, viewDir);\n\tlet BoV: f32 = dot(anisotropicB, viewDir);\n\tlet ToL: f32 = dot(anisotropicT, -lightDirNorm);\n\tlet BoL: f32 = dot(anisotropicB, -lightDirNorm);\n\tlet NoV: f32 = dot(worldNormal, viewDir);\n\tlet NoL: f32 = dot(worldNormal, -lightDirNorm);\n\tlet lambdaV: f32 = NoL * length(vec3f(at * ToV, ab * BoV, NoV));\n\tlet lambdaL: f32 = NoV * length(vec3f(at * ToL, ab * BoL, NoL));\n\tlet G: f32 = 0.5 / (lambdaV + lambdaL);\n\treturn D * G;\n}\nfn getLightSpecular(h: vec3f, reflDir: vec3f, worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f, gloss: f32, tbn: mat3x3f) -> f32 {\n\treturn calcLightSpecular(gloss, worldNormal, viewDir, h, lightDirNorm, tbn);\n}\n`;\n\nvar lightSpecularBlinnPS = `\nfn calcLightSpecular(gloss: f32, worldNormal: vec3f, h: vec3f) -> f32 {\n\tlet nh: f32 = max( dot( h, worldNormal ), 0.0 );\n\tvar specPow: f32 = exp2(gloss * 11.0);\n\tspecPow = max(specPow, 0.0001);\n\treturn pow(nh, specPow) * (specPow + 2.0) / 8.0;\n}\nfn getLightSpecular(h: vec3f, reflDir: vec3f, worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f, gloss: f32, tbn: mat3x3f) -> f32 {\n\treturn calcLightSpecular(gloss, worldNormal, h);\n}\n`;\n\nvar lightSheenPS = `\nfn sheenD(normal: vec3f, h: vec3f, roughness: f32) -> f32 {\n\tlet PI: f32 = 3.141592653589793;\n\tlet invR: f32 = 1.0 / (roughness * roughness);\n\tvar cos2h: f32 = max(dot(normal, h), 0.0);\n\tcos2h = cos2h * cos2h;\n\tlet sin2h: f32 = max(1.0 - cos2h, 0.0078125);\n\treturn (2.0 + invR) * pow(sin2h, invR * 0.5) / (2.0 * PI);\n}\nfn sheenV(normal: vec3f, viewDir: vec3f, light: vec3f) -> f32 {\n\tlet NoV: f32 = max(dot(normal, viewDir), 0.000001);\n\tlet NoL: f32 = max(dot(normal, light), 0.000001);\n\treturn 1.0 / (4.0 * (NoL + NoV - NoL * NoV));\n}\nfn getLightSpecularSheen(h: vec3f, worldNormal: vec3f, viewDir: vec3f, lightDirNorm: vec3f, sheenGloss: f32) -> f32 {\n\tlet D: f32 = sheenD(worldNormal, h, sheenGloss);\n\tlet V: f32 = sheenV(worldNormal, viewDir, -lightDirNorm);\n\treturn D * V;\n}`;\n\nvar linearizeDepthPS = `\n#ifndef LINEARIZE_DEPTH\n#define LINEARIZE_DEPTH\nfn linearizeDepthWithParams(z: f32, cameraParams: vec4f) -> f32 {\n\tif (cameraParams.w == 0.0) {\n\t\treturn (cameraParams.z * cameraParams.y) / (cameraParams.y + z * (cameraParams.z - cameraParams.y));\n\t} else {\n\t\treturn cameraParams.z + z * (cameraParams.y - cameraParams.z);\n\t}\n}\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform camera_params: vec4f;\n#endif\nfn linearizeDepth(z: f32) -> f32 {\n\treturn linearizeDepthWithParams(z, uniform.camera_params);\n}\n#endif\n`;\n\nvar litForwardBackendPS = `\nfn evaluateBackend() -> FragmentOutput {\n\tvar output: FragmentOutput;\n\t#ifdef LIT_SSAO\n\t\tlitArgs_ao = litArgs_ao * textureSampleLevel(ssaoTexture, ssaoTextureSampler, pcPosition.xy * uniform.ssaoTextureSizeInv, 0.0).r;\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\t#ifdef LIT_SPECULAR\n\t\t\tgetReflDir(litArgs_worldNormal, dViewDirW, litArgs_gloss, dTBN);\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tccReflDirW = normalize(-reflect(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t#ifdef LIT_METALNESS\n\t\t\tvar f0: f32 = 1.0 / litArgs_ior;\n\t\t\tf0 = (f0 - 1.0) / (f0 + 1.0);\n\t\t\tf0 = f0 * f0;\n\t\t\tlitArgs_specularity = getSpecularModulate(litArgs_specularity, litArgs_albedo, litArgs_metalness, f0);\n\t\t\tlitArgs_albedo = getAlbedoModulate(litArgs_albedo, litArgs_metalness);\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tvar iridescenceFresnel: vec3f = getIridescenceDiffraction(saturate(dot(dViewDirW, litArgs_worldNormal)), litArgs_specularity, litArgs_iridescence_thickness);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_ADD_AMBIENT\n\t\taddAmbient(litArgs_worldNormal);\n\t\t#ifdef LIT_SPECULAR\n\t\t\tdDiffuseLight = dDiffuseLight * (1.0 - litArgs_specularity);\n\t\t#endif\n\t\t#ifdef LIT_SEPARATE_AMBIENT\n\t\t\tvar dAmbientLight: vec3f = dDiffuseLight;\n\t\t\tdDiffuseLight = vec3(0.0);\n\t\t#endif\n\t#endif\n\t#ifndef LIT_OLD_AMBIENT\n\t\tdDiffuseLight = dDiffuseLight * uniform.material_ambient;\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifndef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_LIGHTMAP\n\t\taddLightMap(\n\t\t\tlitArgs_lightmap, \n\t\t\tlitArgs_lightmapDir, \n\t\t\tlitArgs_worldNormal, \n\t\t\tdViewDirW, \n\t\t\tdReflDirW, \n\t\t\tlitArgs_gloss, \n\t\t\tlitArgs_specularity, \n\t\t\tdVertexNormalW,\n\t\t\tdTBN\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tlitArgs_iridescence_intensity\n\t\t#endif\n\t\t);\n\t#endif\n\t#ifdef LIT_LIGHTING || LIT_REFLECTIONS\n\t\t#ifdef LIT_REFLECTIONS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\taddReflectionCC(ccReflDirW, litArgs_clearcoat_gloss);\n\t\t\t\n\t\t\t\t#ifdef LIT_SPECULAR_FRESNEL\n\t\t\t\t\tccFresnel = getFresnelCC(dot(dViewDirW, litArgs_clearcoat_worldNormal));\n\t\t\t\t\tccReflection = ccReflection * ccFresnel;\n\t\t\t\t#else\n\t\t\t\t\tccFresnel = 0.0;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tccReflection = ccReflection * litArgs_specularityFactor;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\taddReflectionSheen(litArgs_worldNormal, dViewDirW, litArgs_sheen_gloss);\n\t\t\t#endif\n\t\t\taddReflection(dReflDirW, litArgs_gloss);\n\t\t\t#ifdef LIT_FRESNEL_MODEL\n\t\t\t\tdReflection = vec4f(\n\t\t\t\t\tdReflection.rgb * getFresnel(\n\t\t\t\t\t\tdot(dViewDirW, litArgs_worldNormal),\n\t\t\t\t\t\tlitArgs_gloss,\n\t\t\t\t\t\tlitArgs_specularity\n\t\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\t, iridescenceFresnel,\n\t\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t\t#endif\n\t\t\t\t\t\t),\n\t\t\t\t\tdReflection.a\n\t\t\t\t);\n\t\t\t#else\n\t\t\t\tdReflection = vec4f(dReflection.rgb * litArgs_specularity, dReflection.a);\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tdReflection = vec4f(dReflection.rgb * litArgs_specularityFactor, dReflection.a);\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\tdSpecularLight = dSpecularLight * litArgs_specularity;\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tcalcLTCLightValues(litArgs_gloss, litArgs_worldNormal, dViewDirW, litArgs_specularity, litArgs_clearcoat_gloss, litArgs_clearcoat_worldNormal, litArgs_clearcoat_specularity);\n\t\t\t#endif\n\t\t#endif\n\t\t\n\t\t#ifdef LIGHT_COUNT > 0\n\t\t\t#include \"lightEvaluationPS, LIGHT_COUNT\"\n\t\t#endif\n\t\t#ifdef LIT_CLUSTERED_LIGHTS\n\t\t\taddClusteredLights(litArgs_worldNormal, dViewDirW, dReflDirW,\n\t\t\t\t#if defined(LIT_CLEARCOAT)\n\t\t\t\t\t\tccReflDirW,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_gloss, litArgs_specularity, dVertexNormalW, dTBN, \n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t\tiridescenceFresnel,\n\t\t\t\t#endif\n\t\t\t\t\t\tlitArgs_clearcoat_worldNormal, litArgs_clearcoat_gloss, litArgs_sheen_gloss, litArgs_iridescence_intensity\n\t\t\t);\n\t\t#endif\n\t\t#ifdef AREA_LIGHTS\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tlitArgs_clearcoat_specularity = 1.0;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR\n\t\t\t\tlitArgs_specularity = vec3(1.0);\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\taddRefraction(\n\t\t\t\tlitArgs_worldNormal, \n\t\t\t\tdViewDirW, \n\t\t\t\tlitArgs_thickness, \n\t\t\t\tlitArgs_gloss, \n\t\t\t\tlitArgs_specularity, \n\t\t\t\tlitArgs_albedo, \n\t\t\t\tlitArgs_transmission,\n\t\t\t\tlitArgs_ior,\n\t\t\t\tlitArgs_dispersion\n\t\t\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t\t\t, iridescenceFresnel, \n\t\t\t\t\tlitArgs_iridescence_intensity\n\t\t\t\t#endif\n\t\t\t);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_AO\n\t\t#ifdef LIT_OCCLUDE_DIRECT\n\t\t\toccludeDiffuse(litArgs_ao);\n\t\t#endif\n\t\t#if LIT_OCCLUDE_SPECULAR != NONE\n\t\t\toccludeSpecular(litArgs_gloss, litArgs_ao, litArgs_worldNormal, dViewDirW);\n\t\t#endif\n\t#endif\n\t#ifdef LIT_SPECULARITY_FACTOR\n\t\tdSpecularLight = dSpecularLight * litArgs_specularityFactor;\n\t#endif\n\t#if !defined(LIT_OPACITY_FADES_SPECULAR)\n\t\t#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == PREMULTIPLIED\n\t\t\tvar specLum: f32 = dot((dSpecularLight + dReflection.rgb * dReflection.a), vec3f( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tspecLum = specLum + dot(ccSpecularLight * litArgs_clearcoat_specularity + ccReflection * litArgs_clearcoat_specularity, vec3f( 0.2126, 0.7152, 0.0722 ));\n\t\t\t#endif\n\t\t\tlitArgs_opacity = clamp(litArgs_opacity + gammaCorrectInput(specLum), 0.0, 1.0);\n\t\t#endif\n\t\tlitArgs_opacity = litArgs_opacity * uniform.material_alphaFade;\n\t#endif\n\t#ifdef LIT_LIGHTMAP_BAKING\n\t\t#ifdef LIT_LIGHTMAP_BAKING_COLOR\n\t\t\t#include \"bakeLmEndPS\"\n\t\t#endif\n\t\t#ifdef LIT_LIGHTMAP_BAKING_DIR\n\t\t\t#include \"bakeDirLmEndPS\"\n\t\t#endif\n\t#else\n\t\t#include \"endPS\"\n\t\t#include \"outputAlphaPS\"\n\t#endif\n\t#ifdef LIT_MSDF\n\t\toutput.color = applyMsdf(output.color);\n\t#endif\n\t#include \"outputPS\"\n\t#include \"debugOutputPS\"\n\t#ifdef LIT_SHADOW_CATCHER\n\t\toutput.color = vec4f(vec3f(dShadowCatcher), output.color.a);\n\t#endif\n\treturn output;\n}\n`;\n\nvar litForwardDeclarationPS = `\nvar<private> sReflection: vec3f;\nvar<private> dVertexNormalW: vec3f;\nvar<private> dTangentW: vec3f;\nvar<private> dBinormalW: vec3f;\nvar<private> dViewDirW: vec3f;\nvar<private> dReflDirW: vec3f;\nvar<private> ccReflDirW: vec3f;\nvar<private> dLightDirNormW: vec3f;\nvar<private> dAtten: f32;\nvar<private> dTBN: mat3x3f;\nvar<private> dReflection: vec4f;\nvar<private> dDiffuseLight: vec3f;\nvar<private> dSpecularLight: vec3f;\nvar<private> ccFresnel: f32;\nvar<private> ccReflection: vec3f;\nvar<private> ccSpecularLight: vec3f;\nvar<private> ccSpecularityNoFres: f32;\nvar<private> sSpecularLight: vec3f;\n#ifdef LIT_DISPERSION\n\tuniform material_dispersion: f32;\n#endif\n#ifndef LIT_OPACITY_FADES_SPECULAR\n\tuniform material_alphaFade: f32;\n#endif\n#ifdef LIT_SSAO\n\tvar ssaoTexture : texture_2d<f32>;\n\tvar ssaoTextureSampler : sampler;\n\tuniform ssaoTextureSizeInv: vec2f;\n#endif\n#ifdef LIT_SHADOW_CATCHER\n\tvar<private> dShadowCatcher: f32 = 1.0;\n#endif\n#if LIGHT_COUNT > 0\n\t#include \"lightDeclarationPS, LIGHT_COUNT\"\n#endif\n#ifdef LIT_SPECULAR\n\t#if LIT_FRESNEL_MODEL == NONE && !defined(LIT_REFLECTIONS) && !defined(LIT_DIFFUSE_MAP) \n\t\t#define LIT_OLD_AMBIENT\n\t#endif\n#endif\n#ifdef STD_LIGHTMAP_DIR\n\tuniform bakeDir: f32;\n#endif\n#ifdef LIT_LIGHTMAP_BAKING_ADD_AMBIENT\n\tuniform ambientBakeOcclusionContrast: f32;\n\tuniform ambientBakeOcclusionBrightness: f32;\n#endif\n`;\n\nvar litForwardMainPS = `\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t#include \"litUserMainStartPS\"\n\tdReflection = vec4f(0.0);\n\t#ifdef LIT_CLEARCOAT\n\t\tccSpecularLight = vec3f(0.0);\n\t\tccReflection = vec3f(0.0);\n\t#endif\n\t#if LIT_NONE_SLICE_MODE == SLICED\n\t\t#include \"startNineSlicedPS\"\n\t#elif LIT_NONE_SLICE_MODE == TILED\n\t\t#include \"startNineSlicedTiledPS\"\n\t#endif\n\t#ifdef LIT_NEEDS_NORMAL\n\t\tdVertexNormalW = normalize(vNormalW);\n\t\t#ifdef LIT_TANGENTS\n\t\t\t#if defined(LIT_HEIGHTS) || defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS) || defined(LIT_GGX_SPECULAR)\n\t\t\t\tdTangentW = vTangentW;\n\t\t\t\tdBinormalW = vBinormalW;\n\t\t\t#endif\n\t\t#endif\n\t\tgetViewDir();\n\t\t#ifdef LIT_TBN\n\t\t\tgetTBN(dTangentW, dBinormalW, dVertexNormalW);\n\t\t\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t\t\thandleTwoSidedLighting();\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\tevaluateFrontend();\n\t#include \"debugProcessFrontendPS\"\n\tvar output: FragmentOutput = evaluateBackend();\n\t#include \"litUserMainEndPS\"\n\treturn output;\n}\n`;\n\nvar litForwardPostCodePS = `\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"cubeMapRotatePS\"\n\t#include \"cubeMapProjectPS\"\n\t#include \"envProcPS\"\n#endif\n#ifdef LIT_SPECULAR_OR_REFLECTION\n\t#ifdef LIT_METALNESS\n\t\t#include \"metalnessModulatePS\"\n\t#endif\n\t#if LIT_FRESNEL_MODEL == SCHLICK\n\t\t#include \"fresnelSchlickPS\"\n\t#endif\n\t#ifdef LIT_IRIDESCENCE\n\t\t#include \"iridescenceDiffractionPS\"\n\t#endif\n#endif\n#ifdef LIT_AO\n\t#include \"aoDiffuseOccPS\"\n\t#include \"aoSpecOccPS\"\n#endif\n#if LIT_REFLECTION_SOURCE == ENVATLASHQ\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvHQPS\"\n#elif LIT_REFLECTION_SOURCE == ENVATLAS\n\t#include \"envAtlasPS\"\n\t#include \"reflectionEnvPS\"\n#elif LIT_REFLECTION_SOURCE == CUBEMAP\n\t#include \"reflectionCubePS\"\n#elif LIT_REFLECTION_SOURCE == SPHEREMAP\n\t#include \"reflectionSpherePS\"\n#endif\n#ifdef LIT_REFLECTIONS\n\t#ifdef LIT_CLEARCOAT\n\t\t#include \"reflectionCCPS\"\n\t#endif\n\t#ifdef LIT_SHEEN\n\t\t#include \"reflectionSheenPS\"\n\t#endif\n#endif\n#ifdef LIT_REFRACTION\n\t#if defined(LIT_DYNAMIC_REFRACTION)\n\t\t#include \"refractionDynamicPS\"\n\t#elif defined(LIT_REFLECTIONS)\n\t\t#include \"refractionCubePS\"\n\t#endif\n#endif\n#ifdef LIT_SHEEN\n\t#include \"lightSheenPS\"\n#endif\nuniform material_ambient: vec3f;\n#ifdef LIT_SPECULAR\n\t#ifdef LIT_LIGHTING\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"lightSpecularAnisoGGXPS\"\n\t\t#else\n\t\t\t#include \"lightSpecularBlinnPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"combinePS\"\n#ifdef LIT_LIGHTMAP\n\t#include \"lightmapAddPS\"\n#endif\n#ifdef LIT_ADD_AMBIENT\n\t#include \"ambientPS\"\n#endif\n#ifdef LIT_MSDF\n\t#include \"msdfPS\"\n#endif\n#ifdef LIT_NEEDS_NORMAL\n\t#include \"viewDirPS\"\n\t#ifdef LIT_SPECULAR\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#include \"reflDirAnisoPS\"\n\t\t#else\n\t\t\t#include \"reflDirPS\"\n\t\t#endif\n\t#endif\n#endif\n#include \"lightingPS\"\n`;\n\nvar litForwardPreCodePS = `\n#include \"basePS\"\n#include \"sphericalPS\"\n#include \"decodePS\"\n#include \"gammaPS\"\n#include \"tonemappingPS\"\n#include \"fogPS\"\n#if LIT_NONE_SLICE_MODE == SLICED\n\t#include \"baseNineSlicedPS\"\n#elif LIT_NONE_SLICE_MODE == TILED\n\t#include \"baseNineSlicedTiledPS\"\n#endif\n#ifdef LIT_TBN\n\t#include \"TBNPS\"\n\t#ifdef LIT_TWO_SIDED_LIGHTING\n\t\t#include \"twoSidedLightingPS\"\n\t#endif\n#endif\n`;\n\nvar litMainPS = `\n#include \"varyingsPS\"\n#include \"litUserDeclarationPS\"\n#include \"frontendDeclPS\"\n#if defined(PICK_PASS) || defined(PREPASS_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litOtherMainPS\"\n#elif defined(SHADOW_PASS)\n\t#include \"frontendCodePS\"\n\t#include \"litUserCodePS\"\n\t#include \"litShadowMainPS\"\n#else\n\t#include \"litForwardDeclarationPS\"\n\t#include \"litForwardPreCodePS\"\n\t#include \"frontendCodePS\"\n\t#include \"litForwardPostCodePS\"\n\t#include \"litForwardBackendPS\"\n\t#include \"litUserCodePS\"\n\t#include \"litForwardMainPS\"\n#endif\n`;\n\nvar litMainVS = `\n#include \"varyingsVS\"\n#include  \"litUserDeclarationVS\"\n#ifdef VERTEX_COLOR\n\tattribute vertex_color: vec4f;\n#endif\n#ifdef NINESLICED\n\tvarying vMask: vec2f;\n\tvarying vTiledUv: vec2f;\n\tvar<private> dMaskGlobal: vec2f;\n\tvar<private> dTiledUvGlobal: vec2f;\n\tuniform innerOffset: vec4f;\n\tuniform outerScale: vec2f;\n\tuniform atlasRect: vec4f;\n#endif\nvar<private> dPositionW: vec3f;\nvar<private> dModelMatrix: mat4x4f;\n#include \"transformCoreVS\"\n#ifdef UV0\n\tattribute vertex_texCoord0: vec2f;\n\t#include \"uv0VS\"\n#endif\n#ifdef UV1\n\tattribute vertex_texCoord1: vec2f;\n\t#include \"uv1VS\"\n#endif\n#ifdef LINEAR_DEPTH\n\t#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\t\tuniform matrix_view: mat4x4f;\n\t#endif\n#endif\n#include \"transformVS\"\n#ifdef NORMALS\n\t#include \"normalCoreVS\"\n\t#include \"normalVS\"\n#endif\n#ifdef TANGENTS\n\tattribute vertex_tangent: vec4f;\n#endif\n#include \"uvTransformUniformsPS, UV_TRANSFORMS_COUNT\"\n#ifdef MSDF\n\t#include \"msdfVS\"\n#endif\n#include  \"litUserCodeVS\"\n@vertex\nfn vertexMain(input : VertexInput) -> VertexOutput {\n\t#include \"litUserMainStartVS\"\n\tvar output : VertexOutput;\n\toutput.position = getPosition();\n\toutput.vPositionW = getWorldPosition();\n\t#ifdef NORMALS\n\t\toutput.vNormalW = getNormal();\n\t#endif\n\t#ifdef TANGENTS\n\t\toutput.vTangentW = normalize(dNormalMatrix * vertex_tangent.xyz);\n\t\toutput.vBinormalW = cross(output.vNormalW, output.vTangentW) * vertex_tangent.w;\n\t#elif defined(GGX_SPECULAR)\n\t\toutput.vObjectSpaceUpW = normalize(dNormalMatrix * vec3f(0.0, 1.0, 0.0));\n\t#endif\n\t#ifdef UV0\n\t\tvar uv0: vec2f = getUv0();\n\t\t#ifdef UV0_UNMODIFIED\n\t\t\toutput.vUv0 = uv0;\n\t\t#endif\n\t#endif\n\t#ifdef UV1\n\t\tvar uv1: vec2f = getUv1();\n\t\t#ifdef UV1_UNMODIFIED\n\t\t\toutput.vUv1 = uv1;\n\t\t#endif\n\t#endif\n\t#include \"uvTransformVS, UV_TRANSFORMS_COUNT\"\n\t#ifdef VERTEX_COLOR\n\t\toutput.vVertexColor = vertex_color;\n\t#endif\n\t#ifdef LINEAR_DEPTH\n\t\toutput.vLinearDepth = -(uniform.matrix_view * vec4f(output.vPositionW, 1.0)).z;\n\t#endif\n\t#ifdef MSDF\n\t\tunpackMsdfParams();\n\t\toutput.outline_color = dOutlineColor;\n\t\toutput.outline_thickness = dOutlineThickness;\n\t\toutput.shadow_color = dShadowColor;\n\t\toutput.shadow_offset = dShadowOffset;\n\t#endif\n\t#ifdef NINESLICED\n\t\toutput.vMask = dMaskGlobal;\n\t\toutput.vTiledUv = dTiledUvGlobal;\n\t#endif\n\t#include \"litUserMainEndVS\"\n\treturn output;\n}\n`;\n\nvar litOtherMainPS = `\n#ifdef PICK_PASS\n\t#include \"pickPS\"\n#endif\n#ifdef PREPASS_PASS\n\t#include \"floatAsUintPS\"\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t#include \"litUserMainStartPS\"\n\tvar output: FragmentOutput;\n\t\n\tevaluateFrontend();\n\t#ifdef PICK_PASS\n\t\toutput.color = getPickOutput();\n\t#endif\n\t#ifdef PREPASS_PASS\n\t\toutput.color = float2vec4(vLinearDepth);\n\t#endif\n\t#include \"litUserMainEndPS\"\n\treturn output;\n}\n`;\n\nvar litShaderArgsPS = `\nvar<private> litArgs_albedo: vec3f;\nvar<private> litArgs_opacity: f32;\nvar<private> litArgs_emission: vec3f;\nvar<private> litArgs_worldNormal: vec3f;\nvar<private> litArgs_ao: f32;\nvar<private> litArgs_lightmap: vec3f;\nvar<private> litArgs_lightmapDir: vec3f;\nvar<private> litArgs_metalness: f32;\nvar<private> litArgs_specularity: vec3f;\nvar<private> litArgs_specularityFactor: f32;\nvar<private> litArgs_gloss: f32;\nvar<private> litArgs_sheen_gloss: f32;\nvar<private> litArgs_sheen_specularity: vec3f;\nvar<private> litArgs_transmission: f32;\nvar<private> litArgs_thickness: f32;\nvar<private> litArgs_ior: f32;\nvar<private> litArgs_dispersion: f32;\nvar<private> litArgs_iridescence_intensity: f32;\nvar<private> litArgs_iridescence_thickness: f32;\nvar<private> litArgs_clearcoat_worldNormal: vec3f;\nvar<private> litArgs_clearcoat_specularity: f32;\nvar<private> litArgs_clearcoat_gloss: f32;\n`;\n\nvar litShaderCorePS = `\n\t#if LIT_NONE_SLICE_MODE == TILED\n\t\tvar<private> textureBias: f32 = -1000.0;\n\t#else\n\t\tuniform textureBias: f32;\n\t#endif\n\t#include \"litShaderArgsPS\"\n`;\n\nvar litShadowMainPS = `\n#if LIGHT_TYPE != DIRECTIONAL\n\tuniform view_position: vec3f;\n\tuniform light_radius: f32;\n#endif\n#if SHADOW_TYPE == PCSS_32F\n\t#include \"linearizeDepthPS\"\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t#include \"litUserMainStartPS\"\n\tvar output: FragmentOutput;\n\tevaluateFrontend();\n\t#ifdef PERSPECTIVE_DEPTH\n\t\tvar depth: f32 = input.position.z;\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\t#if LIGHT_TYPE != DIRECTIONAL\n\t\t\t\tdepth = linearizeDepthWithParams(depth, camera_params);\n\t\t\t#endif\n\t\t#endif\n\t#else\n\t\tvar depth: f32 = min(distance(uniform.view_position, input.vPositionW) / uniform.light_radius, 0.99999);\n\t\t#define MODIFIED_DEPTH\n\t#endif\n\t#if SHADOW_TYPE == VSM_16F || SHADOW_TYPE == VSM_32F\n\t\t#if SHADOW_TYPE == VSM_32F\n\t\t\tvar exponent: f32 = 15.0;\n\t\t#else\n\t\t\tvar exponent: f32 = 5.54;\n\t\t#endif\n\t\tvar depth_vsm = 2.0 * depth - 1.0;\n\t\tdepth_vsm = exp(exponent * depth_vsm);\n\t\toutput.color = vec4f(depth_vsm, depth_vsm * depth_vsm, 1.0, 1.0);\n\t#else\n\t\t#if SHADOW_TYPE == PCSS_32F\n\t\t\toutput.color = vec4f(depth, 0.0, 0.0, 1.0);\n\t\t#else\n\t\t\t#ifdef MODIFIED_DEPTH\n\t\t\t\toutput.fragDepth = depth;\n\t\t\t#endif\n\t\t\toutput.color = vec4f(1.0);\n\t\t#endif\n\t#endif\n\t#include \"litUserMainEndPS\"\n\t\n\treturn output;\n}\n`;\n\nvar ltcPS = `\nfn LTC_Uv(N: vec3f, V: vec3f, roughness: f32) -> vec2f {\n\tconst LUT_SIZE: f32 = 64.0;\n\tconst LUT_SCALE: f32 = (LUT_SIZE - 1.0) / LUT_SIZE;\n\tconst LUT_BIAS: f32 = 0.5 / LUT_SIZE;\n\tlet dotNV: f32 = saturate(dot( N, V ));\n\tlet uv: vec2f = vec2f( roughness, sqrt( 1.0 - dotNV ) );\n\treturn uv * LUT_SCALE + LUT_BIAS;\n}\nfn LTC_ClippedSphereFormFactor( f: vec3f ) -> f32 {\n\tlet l: f32 = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nfn LTC_EdgeVectorFormFactor( v1: vec3f, v2: vec3f ) -> vec3f {\n\tlet x: f32 = dot( v1, v2 );\n\tlet y: f32 = abs( x );\n\tlet a: f32 = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n\tlet b: f32 = 3.4175940 + ( 4.1616724 + y ) * y;\n\tlet v: f32 = a / b;\n\tlet inv_sqrt_term = inverseSqrt( max( 1.0 - x * x, 1e-7f ) );\n\tlet theta_sintheta: f32 = select( (0.5 * inv_sqrt_term - v), v, x > 0.0 );\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nstruct Coords {\n\tcoord0: vec3f,\n\tcoord1: vec3f,\n\tcoord2: vec3f,\n\tcoord3: vec3f,\n}\nfn LTC_EvaluateRect( N: vec3f, V: vec3f, P: vec3f, mInv: mat3x3f, rectCoords: Coords) -> f32 {\n\tlet v1: vec3f = rectCoords.coord1 - rectCoords.coord0;\n\tlet v2: vec3f = rectCoords.coord3 - rectCoords.coord0;\n\tlet lightNormal: vec3f = cross( v1, v2 );\n\tlet factor: f32 = sign(-dot( lightNormal, P - rectCoords.coord0 ));\n\tlet T1: vec3f = normalize( V - N * dot( V, N ) );\n\tlet T2: vec3f = factor * cross( N, T1 );\n\tlet mat: mat3x3f = mInv * transpose( mat3x3f( T1, T2, N ) );\n\tvar coords: array<vec3f, 4>;\n\tcoords[0] = mat * ( rectCoords.coord0 - P );\n\tcoords[1] = mat * ( rectCoords.coord1 - P );\n\tcoords[2] = mat * ( rectCoords.coord2 - P );\n\tcoords[3] = mat * ( rectCoords.coord3 - P );\n\tcoords[0] = normalize( coords[0] );\n\tcoords[1] = normalize( coords[1] );\n\tcoords[2] = normalize( coords[2] );\n\tcoords[3] = normalize( coords[3] );\n\tvar vectorFormFactor: vec3f = vec3f( 0.0 );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[0], coords[1] );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[1], coords[2] );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[2], coords[3] );\n\tvectorFormFactor = vectorFormFactor + LTC_EdgeVectorFormFactor( coords[3], coords[0] );\n\tlet result: f32 = LTC_ClippedSphereFormFactor( vectorFormFactor );\n\treturn result;\n}\nvar<private> dLTCCoords: Coords;\nfn getLTCLightCoords(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) -> Coords {\n\tvar coords: Coords;\n\tcoords.coord0 = lightPos + halfWidth - halfHeight;\n\tcoords.coord1 = lightPos - halfWidth - halfHeight;\n\tcoords.coord2 = lightPos - halfWidth + halfHeight;\n\tcoords.coord3 = lightPos + halfWidth + halfHeight;\n\treturn coords;\n}\nvar<private> dSphereRadius: f32;\nfn getSphereLightCoords(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) -> Coords {\n\tdSphereRadius = max(length(halfWidth), length(halfHeight));\n\tlet f: vec3f = reflect(normalize(lightPos - uniform.view_position), vNormalW);\n\tlet w: vec3f = normalize(cross(f, halfHeight));\n\tlet h: vec3f = normalize(cross(f, w));\n\treturn getLTCLightCoords(lightPos, w * dSphereRadius, h * dSphereRadius);\n}\nvar<private> dLTCUV: vec2f;\n#ifdef LIT_CLEARCOAT\n\tvar<private> ccLTCUV: vec2f;\n#endif\nfn getLTCLightUV(gloss: f32, worldNormal: vec3f, viewDir: vec3f) -> vec2f {\n\tlet roughness: f32 = max((1.0 - gloss) * (1.0 - gloss), 0.001);\n\treturn LTC_Uv( worldNormal, viewDir, roughness );\n}\nvar<private> dLTCSpecFres: vec3f;\n#ifdef LIT_CLEARCOAT\n\tvar<private> ccLTCSpecFres: vec3f;\n#endif\nfn getLTCLightSpecFres(uv: vec2f, specularity: vec3f) -> vec3f {\n\tlet t2: vec4f = textureSampleLevel(areaLightsLutTex2, areaLightsLutTex2Sampler, uv, 0.0);\n\treturn specularity * t2.x + ( vec3f( 1.0 ) - specularity) * t2.y;\n}\nfn calcLTCLightValues(gloss: f32, worldNormal: vec3f, viewDir: vec3f, specularity: vec3f, clearcoatGloss: f32, clearcoatWorldNormal: vec3f, clearcoatSpecularity: f32) {\n\tdLTCUV = getLTCLightUV(gloss, worldNormal, viewDir);\n\tdLTCSpecFres = getLTCLightSpecFres(dLTCUV, specularity);\n\t#ifdef LIT_CLEARCOAT\n\t\tccLTCUV = getLTCLightUV(clearcoatGloss, clearcoatWorldNormal, viewDir);\n\t\tccLTCSpecFres = getLTCLightSpecFres(ccLTCUV, vec3f(clearcoatSpecularity));\n\t#endif\n}\nfn calcRectLightValues(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) {\n\tdLTCCoords = getLTCLightCoords(lightPos, halfWidth, halfHeight);\n}\nfn calcDiskLightValues(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) {\n\tcalcRectLightValues(lightPos, halfWidth, halfHeight);\n}\nfn calcSphereLightValues(lightPos: vec3f, halfWidth: vec3f, halfHeight: vec3f) {\n\tdLTCCoords = getSphereLightCoords(lightPos, halfWidth, halfHeight);\n}\nfn SolveCubic(Coefficient_in: vec4f) -> vec3f {\n\tlet pi: f32 = 3.14159;\n\tvar Coefficient = Coefficient_in;\n\tCoefficient = vec4f(Coefficient.xyz / Coefficient.w, Coefficient.w);\n\tlet new_yz: vec2f = Coefficient.yz / 3.0;\n\tCoefficient = vec4f(Coefficient.x, new_yz.x, new_yz.y, Coefficient.w);\n\t\n\tlet A: f32 = Coefficient.w;\n\tlet B: f32 = Coefficient.z;\n\tlet C: f32 = Coefficient.y;\n\tlet D: f32 = Coefficient.x;\n\tlet Delta: vec3f = vec3f(\n\t\t-Coefficient.z * Coefficient.z + Coefficient.y,\n\t\t-Coefficient.y * Coefficient.z + Coefficient.x,\n\t\tdot(vec2f(Coefficient.z, -Coefficient.y), Coefficient.xy)\n\t);\n\tlet Discriminant: f32 = dot(vec2f(4.0 * Delta.x, -Delta.y), Delta.zy);\n\tvar xlc: vec2f;\n\tvar xsc: vec2f;\n\t{\n\t\tlet A_a: f32 = 1.0;\n\t\tlet C_a: f32 = Delta.x;\n\t\tlet D_a: f32 = -2.0 * B * Delta.x + Delta.y;\n\t\tlet Theta: f32 = atan2(sqrt(Discriminant), -D_a) / 3.0;\n\t\tlet sqrt_neg_Ca = sqrt(-C_a);\n\t\tlet x_1a: f32 = 2.0 * sqrt_neg_Ca * cos(Theta);\n\t\tlet x_3a: f32 = 2.0 * sqrt_neg_Ca * cos(Theta + (2.0 / 3.0) * pi);\n\t\tlet xl: f32 = select(x_3a, x_1a, (x_1a + x_3a) > 2.0 * B);\n\t\txlc = vec2f(xl - B, A);\n\t}\n\t{\n\t\tlet A_d: f32 = D;\n\t\tlet C_d: f32 = Delta.z;\n\t\tlet D_d: f32 = -D * Delta.y + 2.0 * C * Delta.z;\n\t\tlet Theta: f32 = atan2(D * sqrt(Discriminant), -D_d) / 3.0;\n\t\tlet sqrt_neg_Cd = sqrt(-C_d);\n\t\tlet x_1d: f32 = 2.0 * sqrt_neg_Cd * cos(Theta);\n\t\tlet x_3d: f32 = 2.0 * sqrt_neg_Cd * cos(Theta + (2.0 / 3.0) * pi);\n\t\tlet xs: f32 = select(x_3d, x_1d, x_1d + x_3d < 2.0 * C);\n\t\txsc = vec2f(-D, xs + C);\n\t}\n\tlet E: f32 =  xlc.y * xsc.y;\n\tlet F: f32 = -xlc.x * xsc.y - xlc.y * xsc.x;\n\tlet G: f32 =  xlc.x * xsc.x;\n\tlet xmc: vec2f = vec2f(C * F - B * G, -B * F + C * E);\n\tvar Root: vec3f = vec3f(xsc.x / xsc.y, xmc.x / xmc.y, xlc.x / xlc.y);\n\tif (Root.x < Root.y && Root.x < Root.z) {\n\t\tRoot = Root.yxz;\n\t} else if (Root.z < Root.x && Root.z < Root.y) {\n\t\tRoot = Root.xzy;\n\t}\n\treturn Root;\n}\nfn LTC_EvaluateDisk(N: vec3f, V: vec3f, P: vec3f, Minv: mat3x3f, points: Coords) -> f32 {\n\tlet T1: vec3f = normalize(V - N * dot(V, N));\n\tlet T2: vec3f = cross(N, T1);\n\tlet R: mat3x3f = transpose( mat3x3f( T1, T2, N ) );\n\tvar L_: array<vec3f, 3>;\n\tL_[0] = R * ( points.coord0 - P );\n\tL_[1] = R * ( points.coord1 - P );\n\tL_[2] = R * ( points.coord2 - P );\n\tlet C: vec3f  = 0.5 * (L_[0] + L_[2]);\n\tvar V1: vec3f = 0.5 * (L_[1] - L_[2]);\n\tvar V2: vec3f = 0.5 * (L_[1] - L_[0]);\n\tlet C_Minv: vec3f  = Minv * C;\n\tlet V1_Minv: vec3f = Minv * V1;\n\tlet V2_Minv: vec3f = Minv * V2;\n\tvar a: f32;\n\tvar b: f32;\n\tlet d11: f32 = dot(V1_Minv, V1_Minv);\n\tlet d22: f32 = dot(V2_Minv, V2_Minv);\n\tlet d12: f32 = dot(V1_Minv, V2_Minv);\n\tif (abs(d12) / sqrt(d11 * d22) > 0.0001) {\n\t\tlet tr: f32 = d11 + d22;\n\t\tlet det_inner: f32 = -d12 * d12 + d11 * d22;\n\t\tlet det: f32 = sqrt(det_inner);\n\t\tlet u: f32 = 0.5 * sqrt(tr - 2.0 * det);\n\t\tlet v: f32 = 0.5 * sqrt(tr + 2.0 * det);\n\t\tlet e_max: f32 = (u + v) * (u + v);\n\t\tlet e_min: f32 = (u - v) * (u - v);\n\t\tvar V1_: vec3f;\n\t\tvar V2_: vec3f;\n\t\tif (d11 > d22) {\n\t\t\tV1_ = d12 * V1_Minv + (e_max - d11) * V2_Minv;\n\t\t\tV2_ = d12 * V1_Minv + (e_min - d11) * V2_Minv;\n\t\t} else {\n\t\t\tV1_ = d12*V2_Minv + (e_max - d22)*V1_Minv;\n\t\t\tV2_ = d12*V2_Minv + (e_min - d22)*V1_Minv;\n\t\t}\n\t\ta = 1.0 / e_max;\n\t\tb = 1.0 / e_min;\n\t\tV1 = normalize(V1_);\n\t\tV2 = normalize(V2_);\n\t} else {\n\t\ta = 1.0 / dot(V1_Minv, V1_Minv);\n\t\tb = 1.0 / dot(V2_Minv, V2_Minv);\n\t\tV1 = V1_Minv * sqrt(a);\n\t\tV2 = V2_Minv * sqrt(b);\n\t}\n\tvar V3: vec3f = normalize(cross(V1, V2));\n\tif (dot(C_Minv, V3) < 0.0) {\n\t\tV3 = V3 * -1.0;\n\t}\n\tlet L: f32  = dot(V3, C_Minv);\n\tlet x0: f32 = dot(V1, C_Minv) / L;\n\tlet y0: f32 = dot(V2, C_Minv) / L;\n\tlet E1: f32 = inverseSqrt(a);\n\tlet E2: f32 = inverseSqrt(b);\n\tlet a_scaled = a * L * L;\n\tlet b_scaled = b * L * L;\n\tlet c0: f32 = a_scaled * b_scaled;\n\tlet c1: f32 = a_scaled * b_scaled * (1.0 + x0 * x0 + y0 * y0) - a_scaled - b_scaled;\n\tlet c2: f32 = 1.0 - a_scaled * (1.0 + x0 * x0) - b_scaled * (1.0 + y0 * y0);\n\tlet c3: f32 = 1.0;\n\tlet roots: vec3f = SolveCubic(vec4f(c0, c1, c2, c3));\n\tlet e1: f32 = roots.x;\n\tlet e2: f32 = roots.y;\n\tlet e3: f32 = roots.z;\n\tvar avgDir: vec3f = vec3f(a_scaled * x0 / (a_scaled - e2), b_scaled * y0 / (b_scaled - e2), 1.0);\n\tlet rotate: mat3x3f = mat3x3f(V1, V2, V3);\n\tavgDir = rotate * avgDir;\n\tavgDir = normalize(avgDir);\n\tlet L1: f32 = sqrt(-e2 / e3);\n\tlet L2: f32 = sqrt(-e2 / e1);\n\tlet formFactor: f32 = max(0.0, L1 * L2 * inverseSqrt((1.0 + L1 * L1) * (1.0 + L2 * L2)));\n\tconst LUT_SIZE_disk: f32 = 64.0;\n\tconst LUT_SCALE_disk: f32 = ( LUT_SIZE_disk - 1.0 ) / LUT_SIZE_disk;\n\tconst LUT_BIAS_disk: f32 = 0.5 / LUT_SIZE_disk;\n\tvar uv: vec2f = vec2f(avgDir.z * 0.5 + 0.5, formFactor);\n\tuv = uv * LUT_SCALE_disk + LUT_BIAS_disk;\n\tlet scale: f32 = textureSampleLevel(areaLightsLutTex2, areaLightsLutTex2Sampler, uv, 0.0).w;\n\treturn formFactor * scale;\n}\nfn FixNan(value: f32) -> f32 {\n\treturn select(value, 0.0, value != value);\n}\nfn getRectLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\tlet identityMat = mat3x3f(vec3f(1.0, 0.0, 0.0), vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0));\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, identityMat, dLTCCoords );\n}\nfn getDiskLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\tlet identityMat = mat3x3f(vec3f(1.0, 0.0, 0.0), vec3f(0.0, 1.0, 0.0), vec3f(0.0, 0.0, 1.0));\n\treturn FixNan(LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, identityMat, dLTCCoords ));\n}\nfn getSphereLightDiffuse(worldNormal: vec3f, viewDir: vec3f, lightDir: vec3f, lightDirNorm: vec3f) -> f32 {\n\tlet falloff: f32 = dSphereRadius / (dot(lightDir, lightDir) + dSphereRadius);\n\treturn FixNan(getLightDiffuse(worldNormal, viewDir, lightDirNorm) * falloff);\n}\nfn getLTCLightInvMat(uv: vec2f) -> mat3x3f {\n\tlet t1: vec4f = textureSampleLevel(areaLightsLutTex1, areaLightsLutTex1Sampler, uv, 0.0);\n\treturn mat3x3f(\n\t\tvec3f( t1.x, 0.0, t1.y ),\n\t\tvec3f( 0.0, 1.0, 0.0 ),\n\t\tvec3f( t1.z, 0.0, t1.w )\n\t);\n}\nfn calcRectLightSpecular(worldNormal: vec3f, viewDir: vec3f, uv: vec2f) -> f32 {\n\tlet mInv: mat3x3f = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateRect( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfn getRectLightSpecular(worldNormal: vec3f, viewDir: vec3f) -> f32 {\n\treturn calcRectLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfn calcDiskLightSpecular(worldNormal: vec3f, viewDir: vec3f, uv: vec2f) -> f32 {\n\tlet mInv: mat3x3f = getLTCLightInvMat(uv);\n\treturn LTC_EvaluateDisk( worldNormal, viewDir, vPositionW, mInv, dLTCCoords );\n}\nfn getDiskLightSpecular(worldNormal: vec3f, viewDir: vec3f) -> f32 {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\nfn getSphereLightSpecular(worldNormal: vec3f, viewDir: vec3f) -> f32 {\n\treturn calcDiskLightSpecular(worldNormal, viewDir, dLTCUV);\n}\n`;\n\nvar metalnessPS = `\n#ifdef STD_METALNESS_CONSTANT\nuniform material_metalness: f32;\n#endif\nfn getMetalness() {\n\tvar metalness: f32 = 1.0;\n\t#ifdef STD_METALNESS_CONSTANT\n\t\tmetalness = metalness * uniform.material_metalness;\n\t#endif\n\t#ifdef STD_METALNESS_TEXTURE\n\t\tmetalness = metalness * textureSampleBias({STD_METALNESS_TEXTURE_NAME}, {STD_METALNESS_TEXTURE_NAME}Sampler, {STD_METALNESS_TEXTURE_UV}, uniform.textureBias).{STD_METALNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_METALNESS_VERTEX\n\tmetalness = metalness * saturate(vVertexColor.{STD_METALNESS_VERTEX_CHANNEL});\n\t#endif\n\tdMetalness = metalness;\n}\n`;\n\nvar msdfPS = `\nvar texture_msdfMap: texture_2d<f32>;\nvar texture_msdfMapSampler: sampler;\nfn median(r: f32, g: f32, b: f32) -> f32 {\n\treturn max(min(r, g), min(max(r, g), b));\n}\nfn map(min: f32, max: f32, v: f32) -> f32 {\n\treturn (v - min) / (max - min);\n}\nuniform font_sdfIntensity: f32;\nuniform font_pxrange: f32;\nuniform font_textureWidth: f32;\n#ifndef LIT_MSDF_TEXT_ATTRIBUTE\n\tuniform outline_color: vec4f;\n\tuniform outline_thickness: f32;\n\tuniform shadow_color: vec4f;\n\tuniform shadow_offset: vec2f;\n#else\n\tvarying outline_color: vec4f;\n\tvarying outline_thickness: f32;\n\tvarying shadow_color: vec4f;\n\tvarying shadow_offset: vec2f;\n#endif\nfn applyMsdf(color_in: vec4f) -> vec4f {\n\t#ifndef LIT_MSDF_TEXT_ATTRIBUTE\n\t\tvar outline_colorValue = uniform.outline_color;\n\t\tvar outline_thicknessValue = uniform.outline_thickness;\n\t\tvar shadow_colorValue = uniform.shadow_color;\n\t\tvar shadow_offsetValue = uniform.shadow_offset;\n\t#else\n\t\tvar outline_colorValue = outline_color;\n\t\tvar outline_thicknessValue = outline_thickness;\n\t\tvar shadow_colorValue = shadow_color;\n\t\tvar shadow_offsetValue = shadow_offset;\n\t#endif\n\tvar color = vec4f(gammaCorrectInputVec3(color_in.rgb), color_in.a);\n\tlet tsample: vec3f = textureSample(texture_msdfMap, texture_msdfMapSampler, vUv0).rgb;\n\tlet uvShdw: vec2f = vUv0 - shadow_offsetValue;\n\tlet ssample: vec3f = textureSample(texture_msdfMap, texture_msdfMapSampler, uvShdw).rgb;\n\tlet sigDist: f32 = median(tsample.r, tsample.g, tsample.b);\n\tvar sigDistShdw: f32 = median(ssample.r, ssample.g, ssample.b);\n\tlet smoothingMax: f32 = 0.2;\n\tlet w: vec2f = abs(dpdx(vUv0)) + abs(dpdy(vUv0));\n\tlet smoothing: f32 = clamp(w.x * uniform.font_textureWidth / uniform.font_pxrange, 0.0, smoothingMax);\n\tlet mapMin: f32 = 0.05;\n\tlet mapMax: f32 = clamp(1.0 - uniform.font_sdfIntensity, mapMin, 1.0);\n\tlet sigDistInner: f32 = map(mapMin, mapMax, sigDist);\n\tlet sigDistOutline: f32 = map(mapMin, mapMax, sigDist + outline_thicknessValue);\n\tsigDistShdw = map(mapMin, mapMax, sigDistShdw + outline_thicknessValue);\n\tlet center: f32 = 0.5;\n\tlet inside: f32 = smoothstep(center - smoothing, center + smoothing, sigDistInner);\n\tlet outline: f32 = smoothstep(center - smoothing, center + smoothing, sigDistOutline);\n\tlet shadow: f32 = smoothstep(center - smoothing, center + smoothing, sigDistShdw);\n\tlet tcolor_outline: vec4f = outline * vec4f(outline_colorValue.a * outline_colorValue.rgb, outline_colorValue.a);\n\tvar tcolor: vec4f = select(vec4f(0.0), tcolor_outline, outline > inside);\n\ttcolor = mix(tcolor, color, inside);\n\tlet scolor_shadow: vec4f = shadow * vec4f(shadow_colorValue.a * shadow_colorValue.rgb, shadow_colorValue.a);\n\tlet scolor: vec4f = select(tcolor, scolor_shadow, shadow > outline);\n\ttcolor = mix(scolor, tcolor, outline);\n\ttcolor = vec4f(gammaCorrectOutput(tcolor.rgb), tcolor.a);\n\treturn tcolor;\n}\n`;\n\nvar metalnessModulatePS = `\nfn getSpecularModulate(specularity: vec3f, albedo: vec3f, metalness: f32, f0: f32) -> vec3f {\n\tlet dielectricF0: vec3f = f0 * specularity;\n\treturn mix(dielectricF0, albedo, metalness);\n}\nfn getAlbedoModulate(albedo: vec3f, metalness: f32) -> vec3f {\n\treturn albedo * (1.0 - metalness);\n}\n`;\n\nvar morphPS = `\n\tvarying uv0: vec2f;\n\tvar morphTexture: texture_2d_array<f32>;\n\tuniform morphFactor: array<f32, {MORPH_TEXTURE_MAX_COUNT}>;\n\tuniform morphIndex: array<u32, {MORPH_TEXTURE_MAX_COUNT}>;\n\tuniform count: u32;\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar color = vec3f(0, 0, 0);\n\t\tlet textureDims = textureDimensions(morphTexture);\n\t\tlet pixelCoords = vec2i(input.uv0 * vec2f(textureDims));\n\t\t\n\t\tfor (var i: u32 = 0; i < uniform.count; i = i + 1) {\n\t\t\tvar textureIndex: u32 = uniform.morphIndex[i].element;\n\t\t\tvar delta = textureLoad(morphTexture, pixelCoords, textureIndex, 0).xyz;\n\t\t\tcolor += uniform.morphFactor[i].element * delta;\n\t\t}\n\t\tvar output: FragmentOutput;\n\t\toutput.color = vec4f(color, 1.0);\n\t\treturn output;\n\t}\n`;\n\nvar morphVS = `\n\tattribute vertex_position: vec2f;\n\tvarying uv0: vec2f;\n\t@vertex\n\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\tvar output: VertexOutput;\n\t\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\t\toutput.uv0 = input.vertex_position * 0.5 + vec2f(0.5, 0.5);\n\t\treturn output;\n\t}\n`;\n\nvar msdfVS = `\nattribute vertex_outlineParameters: vec3f;\nattribute vertex_shadowParameters: vec3f;\nvarying outline_color: vec4f;\nvarying outline_thickness: f32;\nvarying shadow_color: vec4f;\nvarying shadow_offset: vec2f;\nvar<private> dOutlineColor: vec4f;\nvar<private> dOutlineThickness: f32;\nvar<private> dShadowColor: vec4f;\nvar<private> dShadowOffset: vec2f;\nfn unpackMsdfParams() {\n\tlet little: vec3f = vertex_outlineParameters % vec3f(256.0);\n\tlet big: vec3f = (vertex_outlineParameters - little) / 256.0;\n\tdOutlineColor = vec4f(little.x, big.x, little.y, big.y) / 255.0;\n\tdOutlineThickness = little.z / 255.0 * 0.2;\n\tlet little_shadow = vertex_shadowParameters % vec3f(256.0);\n\tlet big_shadow = (vertex_shadowParameters - little_shadow) / 256.0;\n\tdShadowColor = vec4f(little_shadow.x, big_shadow.x, little_shadow.y, big_shadow.y) / 255.0;\n\tdShadowOffset = (vec2f(little_shadow.z, big_shadow.z) / 127.0 - 1.0) * 0.005;\n}\n`;\n\nvar normalVS = `\nvar<private> dNormalMatrix: mat3x3f;\nfn getNormal() -> vec3f {\n\tdNormalMatrix = getNormalMatrix(dModelMatrix);\n\tlet localNormal: vec3f = getLocalNormal(vertex_normal);\n\treturn normalize(dNormalMatrix * localNormal);\n}`;\n\nvar normalCoreVS = `\nattribute vertex_normal: vec3f;\nuniform matrix_normal: mat3x3f;\n#ifdef MORPHING_NORMAL\n\t#ifdef MORPHING_INT\n\t\tvar morphNormalTex: texture_2d<u32>;\n\t\tvar morphNormalTexSampler: sampler;\n\t#else\n\t\tvar morphNormalTex: texture_2d<f32>;\n\t\tvar morphNormalTexSampler: sampler;\n\t#endif\n#endif\nfn getLocalNormal(vertexNormal: vec3f) -> vec3f {\n\tvar localNormal: vec3f = vertexNormal;\n\t#ifdef MORPHING_NORMAL\n\t\tlet morphUV: vec2i = getTextureMorphCoords();\n\t\t#ifdef MORPHING_INT\n\t\t\tlet morphNormalInt: vec4u = textureLoad(morphNormalTex, morphUV, 0);\n\t\t\tlet morphNormalF: vec3f = vec3f(morphNormalInt.xyz) / 65535.0 * 2.0 - 1.0;\n\t\t\tlocalNormal = localNormal + morphNormalF;\n\t\t#else\n\t\t\tlet morphNormal: vec3f = textureLoad(morphNormalTex, morphUV, 0).xyz;\n\t\t\tlocalNormal = localNormal + morphNormal;\n\t\t#endif\n\t#endif\n\treturn localNormal;\n}\n#if defined(SKIN) || defined(BATCH)\n\tfn getNormalMatrix(modelMatrix: mat4x4f) -> mat3x3f {\n\t\treturn mat3x3f(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#elif defined(INSTANCING)\n\tfn getNormalMatrix(modelMatrix: mat4x4f) -> mat3x3f {\n\t\treturn mat3x3f(modelMatrix[0].xyz, modelMatrix[1].xyz, modelMatrix[2].xyz);\n\t}\n#else\n\tfn getNormalMatrix(modelMatrix: mat4x4f) -> mat3x3f {\n\t\treturn uniform.matrix_normal;\n\t}\n#endif\n`;\n\nvar normalMapPS = `\n#ifdef STD_NORMAL_TEXTURE\n\tuniform material_bumpiness: f32;\n#endif\n#ifdef STD_NORMALDETAIL_TEXTURE\n\tuniform material_normalDetailMapBumpiness: f32;\n\tfn blendNormals(inN1: vec3f, inN2: vec3f) -> vec3f {\n\t\tlet n1: vec3f = inN1 + vec3f(0.0, 0.0, 1.0);\n\t\tlet n2: vec3f = inN2 * vec3f(-1.0, -1.0, 1.0);\n\t\treturn n1 * dot(n1, n2) / n1.z - n2;\n\t}\n#endif\nfn getNormal() {\n#ifdef STD_NORMAL_TEXTURE\n\tvar normalMap: vec3f = {STD_NORMAL_TEXTURE_DECODE}(textureSampleBias({STD_NORMAL_TEXTURE_NAME}, {STD_NORMAL_TEXTURE_NAME}Sampler, {STD_NORMAL_TEXTURE_UV}, uniform.textureBias));\n\tnormalMap = mix(vec3f(0.0, 0.0, 1.0), normalMap, uniform.material_bumpiness);\n\t#ifdef STD_NORMALDETAIL_TEXTURE\n\t\tvar normalDetailMap: vec3f = {STD_NORMALDETAIL_TEXTURE_DECODE}(textureSampleBias({STD_NORMALDETAIL_TEXTURE_NAME}, {STD_NORMALDETAIL_TEXTURE_NAME}Sampler, {STD_NORMALDETAIL_TEXTURE_UV}, uniform.textureBias));\n\t\tnormalDetailMap = mix(vec3f(0.0, 0.0, 1.0), normalDetailMap, uniform.material_normalDetailMapBumpiness);\n\t\tnormalMap = blendNormals(normalMap, normalDetailMap);\n\t#endif\n\tdNormalW = normalize(dTBN * normalMap);\n#else\n\tdNormalW = dVertexNormalW;\n#endif\n}\n`;\n\nvar opacityPS = `\nuniform material_opacity: f32;\nfn getOpacity() {\n\tdAlpha = uniform.material_opacity;\n\t#ifdef STD_OPACITY_TEXTURE\n\tdAlpha = dAlpha * textureSampleBias({STD_OPACITY_TEXTURE_NAME}, {STD_OPACITY_TEXTURE_NAME}Sampler, {STD_OPACITY_TEXTURE_UV}, uniform.textureBias).{STD_OPACITY_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_OPACITY_VERTEX\n\tdAlpha = dAlpha * clamp(vVertexColor.{STD_OPACITY_VERTEX_CHANNEL}, 0.0, 1.0);\n\t#endif\n}\n`;\n\nvar opacityDitherPS = `\n#if STD_OPACITY_DITHER == BAYER8\n\t#include \"bayerPS\"\n#endif\nuniform blueNoiseJitter: vec4f;\n#if STD_OPACITY_DITHER == BLUENOISE\n\tvar blueNoiseTex32 : texture_2d<f32>;\n\tvar blueNoiseTex32Sampler : sampler;\n#endif\nfn opacityDither(alpha: f32, id: f32) {\n\t#if STD_OPACITY_DITHER == BAYER8\n\t\tvar noise: f32 = bayer8(floor((pcPosition.xy + uniform.blueNoiseJitter.xy + id) % vec2f(8.0))) / 64.0;\n\t#else\n\t\t#if STD_OPACITY_DITHER == BLUENOISE\n\t\t\tvar uv = fract(pcPosition.xy / 32.0 + uniform.blueNoiseJitter.xy + id);\n\t\t\tvar noise: f32 = textureSampleLevel(blueNoiseTex32, blueNoiseTex32Sampler, uv, 0.0).y;\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER == IGNNOISE\n\t\t\tvar magic = vec3f(0.06711056, 0.00583715, 52.9829189);\n\t\t\tvar noise: f32 = fract(magic.z * fract(dot(pcPosition.xy + uniform.blueNoiseJitter.xy + id, magic.xy)));\n\t\t#endif\n\t#endif\n\tnoise = pow(noise, 2.2);\n\tif (alpha < noise) {\n\t\tdiscard;\n\t}\n}\n`;\n\nvar outputPS = `\n`;\n\nvar outputAlphaPS = `\n#if LIT_BLEND_TYPE == NORMAL || LIT_BLEND_TYPE == ADDITIVEALPHA || defined(LIT_ALPHA_TO_COVERAGE)\n\toutput.color = vec4f(output.color.rgb, litArgs_opacity);\n#elif LIT_BLEND_TYPE == PREMULTIPLIED\n\toutput.color = vec4f(output.color.rgb * litArgs_opacity, litArgs_opacity);\n#else\n\toutput.color = vec4f(output.color.rgb, 1.0);\n#endif\n`;\n\nvar outputTex2DPS = `\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\n@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\toutput.color = textureSample(source, sourceSampler, input.vUv0);\n\treturn output;\n}\n`;\n\nvar sheenPS = `\nuniform material_sheen: vec3f;\nfn getSheen() {\n\tvar sheenColor = uniform.material_sheen;\n\t#ifdef STD_SHEEN_TEXTURE\n\tsheenColor = sheenColor * {STD_SHEEN_TEXTURE_DECODE}(textureSampleBias({STD_SHEEN_TEXTURE_NAME}, {STD_SHEEN_TEXTURE_NAME}Sampler, {STD_SHEEN_TEXTURE_UV}, uniform.textureBias)).{STD_SHEEN_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEEN_VERTEX\n\tsheenColor = sheenColor * saturate3(vVertexColor.{STD_SHEEN_VERTEX_CHANNEL});\n\t#endif\n\tsSpecularity = sheenColor;\n}\n`;\n\nvar sheenGlossPS = `\nuniform material_sheenGloss: f32;\nfn getSheenGlossiness() {\n\tvar sheenGlossiness = uniform.material_sheenGloss;\n\t#ifdef STD_SHEENGLOSS_TEXTURE\n\tsheenGlossiness = sheenGlossiness * textureSampleBias({STD_SHEENGLOSS_TEXTURE_NAME}, {STD_SHEENGLOSS_TEXTURE_NAME}Sampler, {STD_SHEENGLOSS_TEXTURE_UV}, uniform.textureBias).{STD_SHEENGLOSS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SHEENGLOSS_VERTEX\n\tsheenGlossiness = sheenGlossiness * saturate(vVertexColor.{STD_SHEENGLOSS_VERTEX_CHANNEL});\n\t#endif\n\t#ifdef STD_SHEENGLOSS_INVERT\n\tsheenGlossiness = 1.0 - sheenGlossiness;\n\t#endif\n\tsGlossiness = sheenGlossiness + 0.0000001;\n}\n`;\n\nvar parallaxPS = `\nuniform material_heightMapFactor: f32;\nfn getParallax() {\n\tvar parallaxScale = uniform.material_heightMapFactor;\n\tvar height: f32 = textureSampleBias({STD_HEIGHT_TEXTURE_NAME}, {STD_HEIGHT_TEXTURE_NAME}Sampler, {STD_HEIGHT_TEXTURE_UV}, uniform.textureBias).{STD_HEIGHT_TEXTURE_CHANNEL};\n\theight = height * parallaxScale - parallaxScale * 0.5;\n\tvar viewDirT: vec3f = dViewDirW * dTBN;\n\tviewDirT.z = viewDirT.z + 0.42;\n\tdUvOffset = height * (viewDirT.xy / viewDirT.z);\n}\n`;\n\nvar pickPS = `\nuniform meshInstanceId: u32;\nfn getPickOutput() -> vec4f {\n\tlet inv: vec4f = vec4f(1.0 / 255.0);\n\tlet shifts: vec4u = vec4u(16u, 8u, 0u, 24u);\n\tlet col: vec4u = (vec4u(uniform.meshInstanceId) >> shifts) & vec4u(0xffu);\n\treturn vec4f(col) * inv;\n}`;\n\nvar reflDirPS = `\nfn getReflDir(worldNormal: vec3f, viewDir: vec3f, gloss: f32, tbn: mat3x3f) {\n\tdReflDirW = normalize(-reflect(viewDir, worldNormal));\n}\n`;\n\nvar reflDirAnisoPS = `\nfn getReflDir(worldNormal: vec3f, viewDir: vec3f, gloss: f32, tbn: mat3x3f) {\n\tlet roughness: f32 = sqrt(1.0 - min(gloss, 1.0));\n\tlet direction: vec2f = dAnisotropyRotation;\n\tlet anisotropicT: vec3f = normalize(tbn * vec3f(direction, 0.0));\n\tlet anisotropicB: vec3f = normalize(cross(tbn[2], anisotropicT));\n\tlet anisotropy: f32 = dAnisotropy;\n\tlet anisotropicDirection: vec3f = anisotropicB;\n\tlet anisotropicTangent: vec3f = cross(anisotropicDirection, viewDir);\n\tlet anisotropicNormal: vec3f = cross(anisotropicTangent, anisotropicDirection);\n\tlet bendFactor: f32 = 1.0 - anisotropy * (1.0 - roughness);\n\tlet bendFactor4: f32 = bendFactor * bendFactor * bendFactor * bendFactor;\n\tlet bentNormal: vec3f = normalize(mix(normalize(anisotropicNormal), normalize(worldNormal), bendFactor4));\n\tdReflDirW = reflect(-viewDir, bentNormal);\n}`;\n\nvar reflectionCCPS = `\n#ifdef LIT_CLEARCOAT\nfn addReflectionCC(reflDir: vec3f, gloss: f32) {\n\tccReflection = ccReflection + calcReflection(reflDir, gloss);\n}\n#endif\n`;\n\nvar reflectionCubePS = `\nvar texture_cubeMap: texture_cube<f32>;\nvar texture_cubeMapSampler: sampler;\nuniform material_reflectivity: f32;\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tvar lookupVec: vec3f = cubeMapProject(reflDir);\n\tlookupVec.x = lookupVec.x * -1.0;\n\treturn {reflectionDecode}(textureSample(texture_cubeMap, texture_cubeMapSampler, lookupVec));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionEnvHQPS = `\n#ifndef ENV_ATLAS\n\t#define ENV_ATLAS\n\tvar texture_envAtlas: texture_2d<f32>;\n\tvar texture_envAtlasSampler: sampler;\n#endif\nvar texture_cubeMap: texture_cube<f32>;\nvar texture_cubeMapSampler: sampler;\nuniform material_reflectivity: f32;\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tlet dir: vec3f = cubeMapProject(reflDir) * vec3f(-1.0, 1.0, 1.0);\n\tlet uv: vec2f = toSphericalUv(dir);\n\tlet level: f32 = saturate(1.0 - gloss) * 5.0;\n\tlet ilevel: f32 = floor(level);\n\tlet flevel: f32 = level - ilevel;\n\tlet sharp: vec3f = {reflectionCubemapDecode}(textureSample(texture_cubeMap, texture_cubeMapSampler, dir));\n\tlet roughA: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel)));\n\tlet roughB: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(sharp, mix(roughA, roughB, flevel), min(level, 1.0)));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionEnvPS = `\n#ifndef ENV_ATLAS\n#define ENV_ATLAS\n\tvar texture_envAtlas: texture_2d<f32>;\n\tvar texture_envAtlasSampler: sampler;\n#endif\nuniform material_reflectivity: f32;\nfn shinyMipLevel(uv: vec2f) -> f32 {\n\tlet dx: vec2f = dpdx(uv);\n\tlet dy: vec2f = dpdy(uv);\n\tlet uv2: vec2f = vec2f(fract(uv.x + 0.5), uv.y);\n\tlet dx2: vec2f = dpdx(uv2);\n\tlet dy2: vec2f = dpdy(uv2);\n\tlet maxd: f32 = min(max(dot(dx, dx), dot(dy, dy)), max(dot(dx2, dx2), dot(dy2, dy2)));\n\treturn clamp(0.5 * log2(maxd) - 1.0 + uniform.textureBias, 0.0, 5.0);\n}\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tlet dir: vec3f = cubeMapProject(reflDir) * vec3f(-1.0, 1.0, 1.0);\n\tlet uv: vec2f = toSphericalUv(dir);\n\tlet level: f32 = saturate(1.0 - gloss) * 5.0;\n\tlet ilevel: f32 = floor(level);\n\tlet level2: f32 = shinyMipLevel(uv * atlasSize);\n\tlet ilevel2: f32 = floor(level2);\n\tvar uv0: vec2f;\n\tvar uv1: vec2f;\n\tvar weight: f32;\n\tif (ilevel == 0.0) {\n\t\tuv0 = mapShinyUv(uv, ilevel2);\n\t\tuv1 = mapShinyUv(uv, ilevel2 + 1.0);\n\t\tweight = level2 - ilevel2;\n\t} else {\n\t\tuv0 = mapRoughnessUv(uv, ilevel);\n\t\tuv1 = uv0;\n\t\tweight = 0.0;\n\t}\n\tlet linearA: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, uv0));\n\tlet linearB: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, uv1));\n\tlet linear0: vec3f = mix(linearA, linearB, weight);\n\tlet linear1: vec3f = {reflectionDecode}(textureSample(texture_envAtlas, texture_envAtlasSampler, mapRoughnessUv(uv, ilevel + 1.0)));\n\treturn processEnvironment(mix(linear0, linear1, level - ilevel));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionSpherePS = `\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\nvar texture_sphereMap: texture_2d<f32>;\nvar texture_sphereMapSampler: sampler;\nuniform material_reflectivity: f32;\nfn calcReflection(reflDir: vec3f, gloss: f32) -> vec3f {\n\tlet viewRotationMatrix = mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz);\n\tlet reflDirV: vec3f = viewRotationMatrix * reflDir;\n\tlet m: f32 = 2.0 * sqrt(dot(reflDirV.xy, reflDirV.xy) + (reflDirV.z + 1.0) * (reflDirV.z + 1.0));\n\tlet sphereMapUv: vec2f = reflDirV.xy / m + 0.5;\n\treturn {reflectionDecode}(textureSample(texture_sphereMap, texture_sphereMapSampler, sphereMapUv));\n}\nfn addReflection(reflDir: vec3f, gloss: f32) {\n\tdReflection = dReflection + vec4f(calcReflection(reflDir, gloss), uniform.material_reflectivity);\n}\n`;\n\nvar reflectionSheenPS = `\nfn addReflectionSheen(worldNormal: vec3f, viewDir: vec3f, gloss: f32) {\n\tlet NoV: f32 = dot(worldNormal, viewDir);\n\tlet alphaG: f32 = gloss * gloss;\n\tlet a: f32 = select(\n\t\t-8.48 * alphaG + 14.3 * gloss - 9.95,\n\t\t-339.2 * alphaG + 161.4 * gloss - 25.9,\n\t\tgloss < 0.25\n\t);\n\tlet b: f32 = select(\n\t\t1.97 * alphaG - 3.27 * gloss + 0.72,\n\t\t44.0 * alphaG - 23.7 * gloss + 3.26,\n\t\tgloss < 0.25\n\t);\n\tlet dg_add: f32 = select(\n\t\t0.1 * ( gloss - 0.25 ),\n\t\t0.0,\n\t\tgloss < 0.25\n\t);\n\tlet dg: f32 = exp( a * NoV + b ) + dg_add;\n\tsReflection = sReflection + (calcReflection(worldNormal, 0.0) * saturate(dg));\n}`;\n\nvar refractionCubePS = `\nfn refract2(viewVec: vec3f, normal: vec3f, IOR: f32) -> vec3f {\n\tlet vn: f32 = dot(viewVec, normal);\n\tlet k: f32 = 1.0 - IOR * IOR * (1.0 - vn * vn);\n\tlet refrVec: vec3f = IOR * viewVec - (IOR * vn + sqrt(k)) * normal;\n\treturn refrVec;\n}\nfn addRefraction(\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\tthickness: f32,\n\tgloss: f32,\n\tspecularity: vec3f,\n\talbedo: vec3f,\n\ttransmission: f32,\n\trefractionIndex: f32,\n\tdispersion: f32\n#if defined(LIT_IRIDESCENCE)\n\t, iridescenceFresnel: vec3f,\n\tiridescenceIntensity: f32\n#endif\n) {\n\tlet tmpRefl: vec4f = dReflection;\n\tlet reflectionDir: vec3f = refract2(-viewDir, worldNormal, refractionIndex);\n\tdReflection = vec4f(0.0);\n\taddReflection(reflectionDir, gloss);\n\tdDiffuseLight = mix(dDiffuseLight, dReflection.rgb * albedo, transmission);\n\tdReflection = tmpRefl;\n}\n`;\n\nvar refractionDynamicPS = `\nuniform material_invAttenuationDistance: f32;\nuniform material_attenuation: vec3f;\nfn evalRefractionColor(refractionVector: vec3f, gloss: f32, refractionIndex: f32) -> vec3f {\n\tlet pointOfRefraction: vec4f = vec4f(vPositionW + refractionVector, 1.0);\n\tlet projectionPoint: vec4f = uniform.matrix_viewProjection * pointOfRefraction;\n\tlet uv: vec2f = getGrabScreenPos(projectionPoint);\n\tlet iorToRoughness: f32 = (1.0 - gloss) * clamp((1.0 / refractionIndex) * 2.0 - 2.0, 0.0, 1.0);\n\tlet refractionLod: f32 = log2(uniform.uScreenSize.x) * iorToRoughness;\n\tlet refraction: vec3f = textureSampleLevel(uSceneColorMap, uSceneColorMapSampler, uv, refractionLod).rgb;\n\treturn refraction;\n}\nfn addRefraction(\n\tworldNormal: vec3f,\n\tviewDir: vec3f,\n\tthickness: f32,\n\tgloss: f32,\n\tspecularity: vec3f,\n\talbedo: vec3f,\n\ttransmission: f32,\n\trefractionIndex: f32,\n\tdispersion: f32,\n#if defined(LIT_IRIDESCENCE)\n\tiridescenceFresnel: vec3f,\n\tiridescenceIntensity: f32\n#endif\n) {\n\tvar modelScale: vec3f;\n\tmodelScale.x = length(uniform.matrix_model[0].xyz);\n\tmodelScale.y = length(uniform.matrix_model[1].xyz);\n\tmodelScale.z = length(uniform.matrix_model[2].xyz);\n\tlet scale: vec3f = thickness * modelScale;\n\tvar refractionVector = normalize(refract(-viewDir, worldNormal, refractionIndex)) * scale;\n\tvar refraction = evalRefractionColor(refractionVector, gloss, refractionIndex);\n\t#ifdef LIT_DISPERSION\n\t\tlet halfSpread: f32 = (1.0 / refractionIndex - 1.0) * 0.025 * dispersion;\n\t\tlet refractionIndexR: f32 = refractionIndex - halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexR)) * scale;\n\t\trefraction.r = evalRefractionColor(refractionVector, gloss, refractionIndexR).r;\n\t\tlet refractionIndexB: f32 = refractionIndex + halfSpread;\n\t\trefractionVector = normalize(refract(-viewDir, worldNormal, refractionIndexB)) * scale;\n\t\trefraction.b = evalRefractionColor(refractionVector, gloss, refractionIndexB).b;\n\t#endif\n\tvar transmittance: vec3f;\n\tif (uniform.material_invAttenuationDistance != 0.0)\n\t{\n\t\tlet attenuation: vec3f = -log(uniform.material_attenuation) * uniform.material_invAttenuationDistance;\n\t\ttransmittance = exp(-attenuation * length(refractionVector));\n\t}\n\telse\n\t{\n\t\ttransmittance = refraction;\n\t}\n\tlet fresnel: vec3f = vec3f(1.0) -\n\t\tgetFresnel(\n\t\t\tdot(viewDir, worldNormal),\n\t\t\tgloss,\n\t\t\tspecularity\n\t\t#if defined(LIT_IRIDESCENCE)\n\t\t\t, iridescenceFresnel,\n\t\t\tiridescenceIntensity\n\t\t#endif\n\t\t);\n\tdDiffuseLight = mix(dDiffuseLight, refraction * transmittance * fresnel, transmission);\n}\n`;\n\nvar reprojectPS = `\nvarying vUv0: vec2f;\n#ifdef CUBEMAP_SOURCE\n\tvar sourceCube: texture_cube<f32>;\n\tvar sourceCubeSampler : sampler;\n#else\n\tvar sourceTex: texture_2d<f32>;\n\tvar sourceTexSampler : sampler;\n#endif\n#ifdef USE_SAMPLES_TEX\n\tvar samplesTex: texture_2d<f32>;\n\tvar samplesTexSampler : sampler;\n\tuniform samplesTexInverseSize: vec2f;\n#endif\nuniform params: vec3f;\nfn targetFace() -> f32 { return uniform.params.x; }\nfn targetTotalPixels() -> f32 { return uniform.params.y; }\nfn sourceTotalPixels() -> f32 { return uniform.params.z; }\nconst PI: f32 = 3.141592653589793;\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\n#include \"decodePS\"\n#include \"encodePS\"\nfn modifySeams(dir: vec3f, scale: f32) -> vec3f {\n\tlet adir = abs(dir);\n\tlet M = max(max(adir.x, adir.y), adir.z);\n\treturn dir / M * vec3f(\n\t\tselect(scale, 1.0, adir.x == M),\n\t\tselect(scale, 1.0, adir.y == M),\n\t\tselect(scale, 1.0, adir.z == M)\n\t);\n}\nfn toSpherical(dir: vec3f) -> vec2f {\n\tlet nonZeroXZ = any(dir.xz != vec2f(0.0, 0.0));\n\treturn vec2f(select(0.0, atan2(dir.x, dir.z), nonZeroXZ), asin(dir.y));\n}\nfn fromSpherical(uv: vec2f) -> vec3f {\n\treturn vec3f(cos(uv.y) * sin(uv.x),\n\t\t\t\tsin(uv.y),\n\t\t\t\tcos(uv.y) * cos(uv.x));\n}\nfn getDirectionEquirect(uv: vec2f) -> vec3f {\n\treturn fromSpherical((vec2f(uv.x, 1.0 - uv.y) * 2.0 - 1.0) * vec2f(PI, PI * 0.5));\n}\nfn signNotZero(k: f32) -> f32 {\n\treturn select(-1.0, 1.0, k >= 0.0);\n}\nfn signNotZeroVec2(v: vec2f) -> vec2f {\n\treturn vec2f(signNotZero(v.x), signNotZero(v.y));\n}\nfn octDecode(o: vec2f) -> vec3f {\n\tvar v = vec3f(o.x, 1.0 - abs(o.x) - abs(o.y), o.y);\n\tif (v.y < 0.0) {\n\t\tvar temp: vec2f = (1.0 - abs(v.zx)) * signNotZeroVec2(v.xz);\n\t\tv = vec3f(temp.x, v.y, temp.y);\n\t}\n\treturn normalize(v);\n}\nfn getDirectionOctahedral(uv: vec2f) -> vec3f {\n\treturn octDecode(vec2f(uv.x, 1.0 - uv.y) * 2.0 - 1.0);\n}\nfn octEncode(v: vec3f) -> vec2f {\n\tlet l1norm = abs(v.x) + abs(v.y) + abs(v.z);\n\tvar result = v.xz * (1.0 / l1norm);\n\tif (v.y < 0.0) {\n\t\tresult = (1.0 - abs(result.yx)) * signNotZeroVec2(result.xy);\n\t}\n\treturn result;\n}\n#ifdef CUBEMAP_SOURCE\n\tfn sampleCubemapDir(dir: vec3f) -> vec4f {\n\t\treturn textureSample(sourceCube, sourceCubeSampler, modifySeams(dir, 1.0));\n\t}\n\tfn sampleCubemapSph(sph: vec2f) -> vec4f {\n\t\treturn sampleCubemapDir(fromSpherical(sph));\n\t}\n\tfn sampleCubemapDirLod(dir: vec3f, mipLevel: f32) -> vec4f {\n\t\treturn textureSampleLevel(sourceCube, sourceCubeSampler, modifySeams(dir, 1.0), mipLevel);\n\t}\n\tfn sampleCubemapSphLod(sph: vec2f, mipLevel: f32) -> vec4f {\n\t\treturn sampleCubemapDirLod(fromSpherical(sph), mipLevel);\n\t}\n#else\n\tfn sampleEquirectSph(sph: vec2f) -> vec4f {\n\t\tlet uv = sph / vec2f(PI * 2.0, PI) + 0.5;\n\t\treturn textureSample(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y));\n\t}\n\tfn sampleEquirectDir(dir: vec3f) -> vec4f {\n\t\treturn sampleEquirectSph(toSpherical(dir));\n\t}\n\tfn sampleEquirectSphLod(sph: vec2f, mipLevel: f32) -> vec4f {\n\t\tlet uv = sph / vec2f(PI * 2.0, PI) + 0.5;\n\t\treturn textureSampleLevel(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tfn sampleEquirectDirLod(dir: vec3f, mipLevel: f32) -> vec4f {\n\t\treturn sampleEquirectSphLod(toSpherical(dir), mipLevel);\n\t}\n\tfn sampleOctahedralDir(dir: vec3f) -> vec4f {\n\t\tlet uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn textureSample(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y));\n\t}\n\tfn sampleOctahedralSph(sph: vec2f) -> vec4f {\n\t\treturn sampleOctahedralDir(fromSpherical(sph));\n\t}\n\tfn sampleOctahedralDirLod(dir: vec3f, mipLevel: f32) -> vec4f {\n\t\tlet uv = octEncode(dir) * 0.5 + 0.5;\n\t\treturn textureSampleLevel(sourceTex, sourceTexSampler, vec2f(uv.x, 1.0 - uv.y), mipLevel);\n\t}\n\tfn sampleOctahedralSphLod(sph: vec2f, mipLevel: f32) -> vec4f {\n\t\treturn sampleOctahedralDirLod(fromSpherical(sph), mipLevel);\n\t}\n#endif\nfn getDirectionCubemap(uv: vec2f) -> vec3f {\n\tlet st = uv * 2.0 - 1.0;\n\tlet face = targetFace();\n\tvar vec: vec3f;\n\tif (face == 0.0) {\n\t\tvec = vec3f(1, -st.y, -st.x);\n\t} else if (face == 1.0) {\n\t\tvec = vec3f(-1, -st.y, st.x);\n\t} else if (face == 2.0) {\n\t\tvec = vec3f(st.x, 1, st.y);\n\t} else if (face == 3.0) {\n\t\tvec = vec3f(st.x, -1, -st.y);\n\t} else if (face == 4.0) {\n\t\tvec = vec3f(st.x, -st.y, 1);\n\t} else {\n\t\tvec = vec3f(-st.x, -st.y, -1);\n\t}\n\treturn normalize(modifySeams(vec, 1.0));\n}\nfn matrixFromVector(n: vec3f) -> mat3x3f {\n\tlet a = 1.0 / (1.0 + n.z);\n\tlet b = -n.x * n.y * a;\n\tlet b1 = vec3f(1.0 - n.x * n.x * a, b, -n.x);\n\tlet b2 = vec3f(b, 1.0 - n.y * n.y * a, -n.y);\n\treturn mat3x3f(b1, b2, n);\n}\nfn matrixFromVectorSlow(n: vec3f) -> mat3x3f {\n\tlet up = select(vec3f(0.0, 0.0, select(-1.0, 1.0, n.y > 0.0)), vec3f(0.0, 1.0, 0.0), abs(n.y) > 0.0000001);\n\tlet x = normalize(cross(up, n));\n\tlet y = cross(n, x);\n\treturn mat3x3f(x, y, n);\n}\nfn reproject(uv: vec2f) -> vec4f {\n\tif ({NUM_SAMPLES} <= 1) {\n\t\treturn {ENCODE_FUNC}({DECODE_FUNC}({SOURCE_FUNC}Dir({TARGET_FUNC}(uv))));\n\t} else {\n\t\tlet t = {TARGET_FUNC}(uv);\n\t\tlet tu = dpdx(t);\n\t\tlet tv = dpdy(t);\n\t\tvar result = vec3f(0.0);\n\t\tfor (var u = 0.0; u < {NUM_SAMPLES_SQRT}; u += 1.0) {\n\t\t\tfor (var v = 0.0; v < {NUM_SAMPLES_SQRT}; v += 1.0) {\n\t\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}Dir(normalize(t +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttu * (u / {NUM_SAMPLES_SQRT} - 0.5) +\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttv * (v / {NUM_SAMPLES_SQRT} - 0.5))));\n\t\t\t}\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / ({NUM_SAMPLES_SQRT} * {NUM_SAMPLES_SQRT}));\n\t}\n}\nconst unpackFloat: vec4f = vec4f(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 16581375.0);\n#ifdef USE_SAMPLES_TEX\n\tfn unpackSample(i: i32, L: ptr<function, vec3f>, mipLevel: ptr<function, f32>) {\n\t\tvar u = (f32(i * 4) + 0.5) * uniform.samplesTexInverseSize.x;\n\t\tvar v = (floor(u) + 0.5) * uniform.samplesTexInverseSize.y;\n\t\tvar raw: vec4f;\n\t\traw.x = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat); u += uniform.samplesTexInverseSize.x;\n\t\traw.y = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat); u += uniform.samplesTexInverseSize.x;\n\t\traw.z = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat); u += uniform.samplesTexInverseSize.x;\n\t\traw.w = dot(textureSample(samplesTex, samplesTexSampler, vec2f(u, v)), unpackFloat);\n\t\t*L = raw.xyz * 2.0 - 1.0;\n\t\t*mipLevel = raw.w * 8.0;\n\t}\n\tfn prefilterSamples(uv: vec2f) -> vec4f {\n\t\tlet vecSpace = matrixFromVectorSlow({TARGET_FUNC}(uv));\n\t\tvar L: vec3f;\n\t\tvar mipLevel: f32;\n\t\tvar result = vec3f(0.0);\n\t\tvar totalWeight = 0.0;\n\t\tfor (var i = 0; i < {NUM_SAMPLES}; i += 1) {\n\t\t\tunpackSample(i, &L, &mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}DirLod(vecSpace * L, mipLevel)) * L.z;\n\t\t\ttotalWeight += L.z;\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / totalWeight);\n\t}\n\tfn prefilterSamplesUnweighted(uv: vec2f) -> vec4f {\n\t\tlet vecSpace = matrixFromVectorSlow({TARGET_FUNC}(uv));\n\t\tvar L: vec3f;\n\t\tvar mipLevel: f32;\n\t\tvar result = vec3f(0.0);\n\t\tfor (var i = 0; i < {NUM_SAMPLES}; i += 1) {\n\t\t\tunpackSample(i, &L, &mipLevel);\n\t\t\tresult += {DECODE_FUNC}({SOURCE_FUNC}DirLod(vecSpace * L, mipLevel));\n\t\t}\n\t\treturn {ENCODE_FUNC}(result / f32({NUM_SAMPLES}));\n\t}\n#endif\n@fragment\nfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\toutput.color = {PROCESS_FUNC}(input.vUv0);\n\treturn output;\n}\n`;\n\nvar reprojectVS = `\nattribute vertex_position: vec2f;\nuniform uvMod: vec4f;\nvarying vUv0: vec2f;\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\toutput.position = vec4f(input.vertex_position, 0.5, 1.0);\n\toutput.vUv0 = getImageEffectUV((input.vertex_position * 0.5 + vec2f(0.5, 0.5)) * uniform.uvMod.xy + uniform.uvMod.zw);\n\treturn output;\n}\n`;\n\nvar screenDepthPS = `\nvar uSceneDepthMap: texture_2d<uff>;\n#ifndef SCREENSIZE\n\t#define SCREENSIZE\n\tuniform uScreenSize: vec4f;\n#endif\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\n#ifndef LINEARIZE_DEPTH\n\t#define LINEARIZE_DEPTH\n\t#ifndef CAMERAPLANES\n\t\t#define CAMERAPLANES\n\t\tuniform camera_params: vec4f;\n\t#endif\n\tfn linearizeDepth(z: f32) -> f32 {\n\t\tif (uniform.camera_params.w == 0.0) {\n\t\t\treturn (uniform.camera_params.z * uniform.camera_params.y) / (uniform.camera_params.y + z * (uniform.camera_params.z - uniform.camera_params.y));\n\t\t} else {\n\t\t\treturn uniform.camera_params.z + z * (uniform.camera_params.y - uniform.camera_params.z);\n\t\t}\n\t}\n#endif\nfn delinearizeDepth(linearDepth: f32) -> f32 {\n\tif (uniform.camera_params.w == 0.0) {\n\t\treturn (uniform.camera_params.y * (uniform.camera_params.z - linearDepth)) / (linearDepth * (uniform.camera_params.z - uniform.camera_params.y));\n\t} else {\n\t\treturn (linearDepth - uniform.camera_params.z) / (uniform.camera_params.y - uniform.camera_params.z);\n\t}\n}\nfn getLinearScreenDepth(uv: vec2f) -> f32 {\n\tlet textureSize = textureDimensions(uSceneDepthMap, 0);\n\tlet texel: vec2i = vec2i(uv * vec2f(textureSize));\n\t#ifdef SCENE_DEPTHMAP_LINEAR\n\t\treturn textureLoad(uSceneDepthMap, texel, 0).r;\n\t#else\n\t\treturn linearizeDepth(textureLoad(uSceneDepthMap, texel, 0).r);\n\t#endif\n}\n#ifndef VERTEXSHADER\n\tfn getLinearScreenDepthFrag() -> f32 {\n\t\tlet uv: vec2f = pcPosition.xy * uniform.uScreenSize.zw;\n\t\treturn getLinearScreenDepth(uv);\n\t}\n#endif\nfn getLinearDepth(pos: vec3f) -> f32 {\n\treturn -(uniform.matrix_view * vec4f(pos, 1.0)).z;\n}\n`;\n\nvar shadowCascadesPS = `\nfn getShadowCascadeIndex(shadowCascadeDistances: vec4f, shadowCascadeCount: i32) -> i32 {\n\tlet depth: f32 = 1.0 / pcPosition.w;\n\tlet comparisons: vec4f = step(shadowCascadeDistances, vec4f(depth));\n\tlet cascadeIndex: i32 = i32(dot(comparisons, vec4f(1.0)));\n\treturn min(cascadeIndex, shadowCascadeCount - 1);\n}\nfn ditherShadowCascadeIndex(cascadeIndex_in: i32, shadowCascadeDistances: vec4f, shadowCascadeCount: i32, blendFactor: f32) -> i32 {\n\tvar cascadeIndex: i32 = cascadeIndex_in;\n\tif (cascadeIndex < shadowCascadeCount - 1) {\n\t\tlet currentRangeEnd: f32 = shadowCascadeDistances[cascadeIndex];\n\t\tlet transitionStart: f32 = blendFactor * currentRangeEnd;\n\t\tlet depth: f32 = 1.0 / pcPosition.w;\n\t\tif (depth > transitionStart) {\n\t\t\tlet transitionFactor: f32 = smoothstep(transitionStart, currentRangeEnd, depth);\n\t\t\tlet dither: f32 = fract(sin(dot(pcPosition.xy, vec2f(12.9898, 78.233))) * 43758.5453);\n\t\t\tif (dither < transitionFactor) {\n\t\t\t\tcascadeIndex = cascadeIndex + 1;\n\t\t\t}\n\t\t}\n\t}\n\treturn cascadeIndex;\n}\nfn fadeShadow(shadowCoord_in: vec3f, shadowCascadeDistances: vec4f) -> vec3f {\n\tvar shadowCoord: vec3f = shadowCoord_in;\n\tlet depth: f32 = 1.0 / pcPosition.w;\n\tif (depth > shadowCascadeDistances.w) {\n\t\tshadowCoord.z = -9999999.0;\n\t}\n\treturn shadowCoord;\n}\n`;\n\nvar shadowEVSMPS = `\nfn linstep(a: f32, b: f32, v: f32) -> f32 {\n\treturn clamp((v - a) / (b - a), 0.0, 1.0);\n}\nfn reduceLightBleeding(pMax: f32, amount: f32) -> f32 {\n\t return linstep(amount, 1.0, pMax);\n}\nfn chebyshevUpperBound(moments: vec2f, mean: f32, minVariance: f32, lightBleedingReduction: f32) -> f32 {\n\tvar variance: f32 = moments.y - (moments.x * moments.x);\n\tvariance = max(variance, minVariance);\n\tlet d: f32 = mean - moments.x;\n\tvar pMax: f32 = variance / (variance + (d * d));\n\tpMax = reduceLightBleeding(pMax, lightBleedingReduction);\n\treturn select(pMax, 1.0, mean <= moments.x);\n}\nfn calculateEVSM(moments_in: vec3f, Z_in: f32, vsmBias: f32, exponent: f32) -> f32 {\n\tlet Z: f32 = 2.0 * Z_in - 1.0;\n\tlet warpedDepth: f32 = exp(exponent * Z);\n\tlet moments: vec2f = moments_in.xy + vec2f(warpedDepth, warpedDepth*warpedDepth) * (1.0 - moments_in.z);\n\tlet VSMBias: f32 = vsmBias;\n\tlet depthScale: f32 = VSMBias * exponent * warpedDepth;\n\tlet minVariance1: f32 = depthScale * depthScale;\n\treturn chebyshevUpperBound(moments, warpedDepth, minVariance1, 0.1);\n}\nfn VSM16(tex: texture_2d<f32>, texSampler: sampler, texCoords: vec2f, resolution: f32, Z: f32, vsmBias: f32, exponent: f32) -> f32 {\n\tlet moments: vec3f = textureSampleLevel(tex, texSampler, texCoords, 0.0).xyz;\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfn getShadowVSM16(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32) -> f32 {\n\treturn VSM16(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfn getShadowSpotVSM16(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32, lightDir: vec3f) -> f32 {\n\tlet Z: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn VSM16(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, Z, shadowParams.y, exponent);\n}\nfn VSM32(tex: texture_2d<f32>, texSampler: sampler, texCoords_in: vec2f, resolution: f32, Z: f32, vsmBias: f32, exponent: f32) -> f32 {\n\t#ifdef CAPS_TEXTURE_FLOAT_FILTERABLE\n\t\tvar moments: vec3f = textureSampleLevel(tex, texSampler, texCoords_in, 0.0).xyz;\n\t#else\n\t\tvar pixelSize : f32 = 1.0 / resolution;\n\t\tlet texCoords: vec2f = texCoords_in - vec2f(pixelSize);\n\t\tlet s00: vec3f = textureSampleLevel(tex, texSampler, texCoords, 0.0).xyz;\n\t\tlet s10: vec3f = textureSampleLevel(tex, texSampler, texCoords + vec2f(pixelSize, 0.0), 0.0).xyz;\n\t\tlet s01: vec3f = textureSampleLevel(tex, texSampler, texCoords + vec2f(0.0, pixelSize), 0.0).xyz;\n\t\tlet s11: vec3f = textureSampleLevel(tex, texSampler, texCoords + vec2f(pixelSize), 0.0).xyz;\n\t\tlet fr: vec2f = fract(texCoords * resolution);\n\t\tlet h0: vec3f = mix(s00, s10, fr.x);\n\t\tlet h1: vec3f = mix(s01, s11, fr.x);\n\t\tvar moments: vec3f = mix(h0, h1, fr.y);\n\t#endif\n\treturn calculateEVSM(moments, Z, vsmBias, exponent);\n}\nfn getShadowVSM32(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32) -> f32 {\n\treturn VSM32(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, shadowCoord.z, shadowParams.y, exponent);\n}\nfn getShadowSpotVSM32(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, exponent: f32, lightDir: vec3f) -> f32 {\n\tlet Z: f32 = length(lightDir) * shadowParams.w + shadowParams.z;\n\treturn VSM32(shadowMap, shadowMapSampler, shadowCoord.xy, shadowParams.x, Z, shadowParams.y, exponent);\n}\n`;\n\nvar shadowPCF1PS = `\nfn getShadowPCF1x1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, shadowCoord.xy, shadowCoord.z);\n}\nfn getShadowSpotPCF1x1(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn textureSampleCompareLevel(shadowMap, shadowMapSampler, shadowCoord.xy, shadowCoord.z);\n}\n`;\n\nvar shadowPCF3PS = `\nfn _getShadowPCF3x3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec3f) -> f32 {\n\tlet z: f32 = shadowCoord.z;\n\tlet uv: vec2f = shadowCoord.xy * shadowParams.x;\n\tlet shadowMapSizeInv: f32 = 1.0 / shadowParams.x;\n\tlet base_uv_temp: vec2f = floor(uv + 0.5);\n\tlet s: f32 = (uv.x + 0.5 - base_uv_temp.x);\n\tlet t: f32 = (uv.y + 0.5 - base_uv_temp.y);\n\tlet base_uv: vec2f = (base_uv_temp - vec2f(0.5)) * shadowMapSizeInv;\n\tvar sum: f32 = 0.0;\n\tlet uw0: f32 = (3.0 - 2.0 * s);\n\tlet uw1: f32 = (1.0 + 2.0 * s);\n\tlet u0_offset: f32 = (2.0 - s) / uw0 - 1.0;\n\tlet u1_offset: f32 = s / uw1 + 1.0;\n\tlet vw0: f32 = (3.0 - 2.0 * t);\n\tlet vw1: f32 = (1.0 + 2.0 * t);\n\tlet v0_offset: f32 = (2.0 - t) / vw0 - 1.0;\n\tlet v1_offset: f32 = t / vw1 + 1.0;\n\tlet u0: f32 = u0_offset * shadowMapSizeInv + base_uv.x;\n\tlet v0: f32 = v0_offset * shadowMapSizeInv + base_uv.y;\n\tlet u1: f32 = u1_offset * shadowMapSizeInv + base_uv.x;\n\tlet v1: f32 = v1_offset * shadowMapSizeInv + base_uv.y;\n\tsum = sum + uw0 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v0), z);\n\tsum = sum + uw1 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v0), z);\n\tsum = sum + uw0 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v1), z);\n\tsum = sum + uw1 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v1), z);\n\tsum = sum * (1.0 / 16.0);\n\treturn sum;\n}\nfn getShadowPCF3x3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\nfn getShadowSpotPCF3x3(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF3x3(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\n`;\n\nvar shadowPCF5PS = `\nfn _getShadowPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec3f) -> f32 {\n\tlet z: f32 = shadowCoord.z;\n\tlet uv: vec2f = shadowCoord.xy * shadowParams.x;\n\tlet shadowMapSizeInv: f32 = 1.0 / shadowParams.x;\n\tlet base_uv_temp: vec2f = floor(uv + 0.5);\n\tlet s: f32 = (uv.x + 0.5 - base_uv_temp.x);\n\tlet t: f32 = (uv.y + 0.5 - base_uv_temp.y);\n\tlet base_uv: vec2f = (base_uv_temp - vec2f(0.5)) * shadowMapSizeInv;\n\tlet uw0: f32 = (4.0 - 3.0 * s);\n\tlet uw1: f32 = 7.0;\n\tlet uw2: f32 = (1.0 + 3.0 * s);\n\tlet u0_offset: f32 = (3.0 - 2.0 * s) / uw0 - 2.0;\n\tlet u1_offset: f32 = (3.0 + s) / uw1;\n\tlet u2_offset: f32 = s / uw2 + 2.0;\n\tlet vw0: f32 = (4.0 - 3.0 * t);\n\tlet vw1: f32 = 7.0;\n\tlet vw2: f32 = (1.0 + 3.0 * t);\n\tlet v0_offset: f32 = (3.0 - 2.0 * t) / vw0 - 2.0;\n\tlet v1_offset: f32 = (3.0 + t) / vw1;\n\tlet v2_offset: f32 = t / vw2 + 2.0;\n\tvar sum: f32 = 0.0;\n\tlet u0: f32 = u0_offset * shadowMapSizeInv + base_uv.x;\n\tlet v0: f32 = v0_offset * shadowMapSizeInv + base_uv.y;\n\tlet u1: f32 = u1_offset * shadowMapSizeInv + base_uv.x;\n\tlet v1: f32 = v1_offset * shadowMapSizeInv + base_uv.y;\n\tlet u2: f32 = u2_offset * shadowMapSizeInv + base_uv.x;\n\tlet v2: f32 = v2_offset * shadowMapSizeInv + base_uv.y;\n\tsum = sum + uw0 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v0), z);\n\tsum = sum + uw1 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v0), z);\n\tsum = sum + uw2 * vw0 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v0), z);\n\tsum = sum + uw0 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v1), z);\n\tsum = sum + uw1 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v1), z);\n\tsum = sum + uw2 * vw1 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v1), z);\n\tsum = sum + uw0 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u0, v2), z);\n\tsum = sum + uw1 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u1, v2), z);\n\tsum = sum + uw2 * vw2 * textureSampleCompareLevel(shadowMap, shadowMapSampler, vec2f(u2, v2), z);\n\tsum = sum * (1.0 / 144.0);\n\tsum = saturate(sum);\n\treturn sum;\n}\nfn getShadowPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\nfn getShadowSpotPCF5x5(shadowMap: texture_depth_2d, shadowMapSampler: sampler_comparison, shadowCoord: vec3f, shadowParams: vec4f) -> f32 {\n\treturn _getShadowPCF5x5(shadowMap, shadowMapSampler, shadowCoord, shadowParams.xyz);\n}\n`;\n\nvar shadowSoftPS = `\nfn fractSinRand(uv: vec2f) -> f32 {\n\tlet PI: f32 = 3.141592653589793;\n\tlet a: f32 = 12.9898; let b: f32 = 78.233; let c: f32 = 43758.5453;\n\tlet dt: f32 = dot(uv.xy, vec2f(a, b));\n\tlet sn: f32 = dt % PI;\n\treturn fract(sin(sn) * c);\n}\nstruct VogelDiskData {\n\tinvNumSamples: f32,\n\tinitialAngle: f32,\n\tcurrentPointId: f32,\n}\nfn prepareDiskConstants(data: ptr<function, VogelDiskData>, sampleCount: i32, randomSeed: f32) {\n\tlet pi2: f32 = 6.28318530718;\n\tdata.invNumSamples = 1.0 / f32(sampleCount);\n\tdata.initialAngle = randomSeed * pi2;\n\tdata.currentPointId = 0.0;\n}\nfn generateDiskSample(data: ptr<function, VogelDiskData>) -> vec2f {\n\tlet GOLDEN_ANGLE: f32 = 2.399963;\n\tlet r: f32 = sqrt((data.currentPointId + 0.5) * data.invNumSamples);\n\tlet theta: f32 = data.currentPointId * GOLDEN_ANGLE + data.initialAngle;\n\tlet offset: vec2f = vec2f(cos(theta), sin(theta)) * pow(r, 1.33);\n\tdata.currentPointId = data.currentPointId + 1.0;\n\treturn offset;\n}\nfn PCSSFindBlocker(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, avgBlockerDepth: ptr<function, f32>, numBlockers: ptr<function, i32>,\n\tshadowCoords: vec2f, z: f32, shadowBlockerSamples: i32, penumbraSize: f32, invShadowMapSize: f32, randomSeed: f32) {\n\tvar diskData: VogelDiskData;\n\tprepareDiskConstants(&diskData, shadowBlockerSamples, randomSeed);\n\tlet searchWidth: f32 = penumbraSize * invShadowMapSize;\n\tvar blockerSum: f32 = 0.0;\n\tvar numBlockers_local: i32 = 0;\n\tfor( var i: i32 = 0; i < shadowBlockerSamples; i = i + 1 ) {\n\t\tlet diskUV: vec2f = generateDiskSample(&diskData);\n\t\tlet sampleUV: vec2f = shadowCoords + diskUV * searchWidth;\n\t\tlet shadowMapDepth: f32 = textureSampleLevel(shadowMap, shadowMapSampler, sampleUV, 0.0).r;\n\t\tif ( shadowMapDepth < z ) {\n\t\t\tblockerSum = blockerSum + shadowMapDepth;\n\t\t\tnumBlockers_local = numBlockers_local + 1;\n\t\t}\n\t}\n\t*avgBlockerDepth = blockerSum / f32(numBlockers_local);\n\t*numBlockers = numBlockers_local;\n}\nfn PCSSFilter(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, uv: vec2f, receiverDepth: f32, shadowSamples: i32, filterRadius: f32, randomSeed: f32) -> f32 {\n\tvar diskData: VogelDiskData;\n\tprepareDiskConstants(&diskData, shadowSamples, randomSeed);\n\tvar sum: f32 = 0.0;\n\tfor (var i: i32 = 0; i < shadowSamples; i = i + 1) {\n\t\tlet offsetUV: vec2f = generateDiskSample(&diskData) * filterRadius;\n\t\tlet depth: f32 = textureSampleLevel(shadowMap, shadowMapSampler, uv + offsetUV, 0.0).r;\n\t\tsum = sum + step(receiverDepth, depth);\n\t}\n\treturn sum / f32(shadowSamples);\n}\nfn getPenumbra(dblocker: f32, dreceiver: f32, penumbraSize: f32, penumbraFalloff: f32) -> f32 {\n\tlet dist: f32 = dreceiver - dblocker;\n\tlet penumbra: f32 = 1.0 - pow(1.0 - dist, penumbraFalloff);\n\treturn penumbra * penumbraSize;\n}\nfn PCSSDirectional(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoords: vec3f, cameraParams: vec4f, softShadowParams: vec4f) -> f32 {\n\tlet receiverDepth: f32 = shadowCoords.z;\n\tlet randomSeed: f32 = fractSinRand(pcPosition.xy);\n\tlet shadowSamples: i32 = i32(softShadowParams.x);\n\tlet shadowBlockerSamples: i32 = i32(softShadowParams.y);\n\tlet penumbraSize: f32 = softShadowParams.z;\n\tlet penumbraFalloff: f32 = softShadowParams.w;\n\tlet shadowMapSize: i32 = i32(textureDimensions(shadowMap, 0).x);\n\tvar invShadowMapSize: f32 = 1.0 / f32(shadowMapSize);\n\tinvShadowMapSize = invShadowMapSize * (f32(shadowMapSize) / 2048.0);\n\tvar penumbra: f32;\n\tif (shadowBlockerSamples > 0) {\n\t\tvar avgBlockerDepth: f32 = 0.0;\n\t\tvar numBlockers: i32 = 0;\n\t\tPCSSFindBlocker(shadowMap, shadowMapSampler, &avgBlockerDepth, &numBlockers, shadowCoords.xy, receiverDepth, shadowBlockerSamples, penumbraSize, invShadowMapSize, randomSeed);\n\t\tif (numBlockers < 1) {\n\t\t\treturn 1.0;\n\t\t}\n\t\tpenumbra = getPenumbra(avgBlockerDepth, shadowCoords.z, penumbraSize, penumbraFalloff);\n\t} else {\n\t\tpenumbra = penumbraSize;\n\t}\n\tlet filterRadius: f32 = penumbra * invShadowMapSize;\n\treturn PCSSFilter(shadowMap, shadowMapSampler, shadowCoords.xy, receiverDepth, shadowSamples, filterRadius, randomSeed);\n}\nfn getShadowPCSS(shadowMap: texture_2d<f32>, shadowMapSampler: sampler, shadowCoord: vec3f, shadowParams: vec4f, cameraParams: vec4f, softShadowParams: vec4f, lightDir: vec3f) -> f32 {\n\treturn PCSSDirectional(shadowMap, shadowMapSampler, shadowCoord, cameraParams, softShadowParams);\n}\n`;\n\nvar skinBatchVS = `\nattribute vertex_boneIndices: f32;\nvar texture_poseMap: texture_2d<uff>;\nfn getBoneMatrix(indexFloat: f32) -> mat4x4f {\n\tlet width = i32(textureDimensions(texture_poseMap).x);\n\tlet index: i32 = i32(indexFloat + 0.5) * 3;\n\tlet iy: i32 = index / width;\n\tlet ix: i32 = index % width;\n\tlet v1: vec4f = textureLoad(texture_poseMap, vec2i(ix + 0, iy), 0);\n\tlet v2: vec4f = textureLoad(texture_poseMap, vec2i(ix + 1, iy), 0);\n\tlet v3: vec4f = textureLoad(texture_poseMap, vec2i(ix + 2, iy), 0);\n\treturn mat4x4f(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, 1.0\n\t);\n}\n`;\n\nvar skinVS = `\nattribute vertex_boneWeights: vec4f;\nattribute vertex_boneIndices: vec4f;\nvar texture_poseMap: texture_2d<uff>;\nstruct BoneMatrix {\n\tv1: vec4f,\n\tv2: vec4f,\n\tv3: vec4f,\n}\nfn getBoneMatrix(width: i32, index: i32) -> BoneMatrix {\n\tlet v = index / width;\n\tlet u = index % width;\n\tvar result: BoneMatrix;\n\tresult.v1 = textureLoad(texture_poseMap, vec2i(u + 0, v), 0);\n\tresult.v2 = textureLoad(texture_poseMap, vec2i(u + 1, v), 0);\n\tresult.v3 = textureLoad(texture_poseMap, vec2i(u + 2, v), 0);\n\treturn result;\n}\nfn getSkinMatrix(indicesFloat: vec4f, weights: vec4f) -> mat4x4f {\n\tlet width = i32(textureDimensions(texture_poseMap).x);\n\tvar indices = vec4i(indicesFloat + 0.5) * 3;\n\tlet boneA = getBoneMatrix(width, indices.x);\n\tlet boneB = getBoneMatrix(width, indices.y);\n\tlet boneC = getBoneMatrix(width, indices.z);\n\tlet boneD = getBoneMatrix(width, indices.w);\n\tlet v1 = boneA.v1 * weights.x + boneB.v1 * weights.y + boneC.v1 * weights.z + boneD.v1 * weights.w;\n\tlet v2 = boneA.v2 * weights.x + boneB.v2 * weights.y + boneC.v2 * weights.z + boneD.v2 * weights.w;\n\tlet v3 = boneA.v3 * weights.x + boneB.v3 * weights.y + boneC.v3 * weights.z + boneD.v3 * weights.w;\n\tlet one = dot(weights, vec4f(1.0, 1.0, 1.0, 1.0));\n\treturn mat4x4f(\n\t\tv1.x, v2.x, v3.x, 0,\n\t\tv1.y, v2.y, v3.y, 0,\n\t\tv1.z, v2.z, v3.z, 0,\n\t\tv1.w, v2.w, v3.w, one\n\t);\n}\n`;\n\nvar skyboxPS = `\n\t#define LIT_SKYBOX_INTENSITY\n\t#include \"envProcPS\"\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#ifdef PREPASS_PASS\n\t\tvarying vLinearDepth: f32;\n\t\t#include \"floatAsUintPS\"\n\t#endif\n\tvarying vViewDir : vec3f;\n\tuniform skyboxHighlightMultiplier : f32;\n\t#ifdef SKY_CUBEMAP\n\t\tvar texture_cubeMap : texture_cube<f32>;\n\t\tvar texture_cubeMap_sampler : sampler;\n\t\t#ifdef SKYMESH\n\t\t\tvarying vWorldPos : vec3f;\n\t\t\tuniform cubeMapRotationMatrix : mat3x3f;\n\t\t\tuniform projectedSkydomeCenter : vec3f;\n\t\t#endif\n\t#else\n\t\t#include \"sphericalPS\"\n\t\t#include \"envAtlasPS\"\n\t\tvar texture_envAtlas : texture_2d<f32>;\n\t\tvar texture_envAtlas_sampler : sampler;\n\t\tuniform mipLevel : f32;\n\t#endif\n\t@fragment\n\tfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\t#ifdef PREPASS_PASS\n\t\t\toutput.color = float2vec4(vLinearDepth);\n\t\t#else\n\t\t\tvar linear : vec3f;\n\t\t\tvar dir : vec3f;\n\t\t\t#ifdef SKY_CUBEMAP\n\t\t\t\t#ifdef SKYMESH\n\t\t\t\t\tvar envDir : vec3f = normalize(input.vWorldPos - uniform.projectedSkydomeCenter);\n\t\t\t\t\tdir = envDir * uniform.cubeMapRotationMatrix;\n\t\t\t\t#else\n\t\t\t\t\tdir = input.vViewDir;\n\t\t\t\t#endif\n\t\t\t\tdir.x *= -1.0;\n\t\t\t\tlinear = {SKYBOX_DECODE_FNC}(textureSample(texture_cubeMap, texture_cubeMap_sampler, dir));\n\t\t\t#else\n\t\t\t\tdir = input.vViewDir * vec3f(-1.0, 1.0, 1.0);\n\t\t\t\tlet uv : vec2f = toSphericalUv(normalize(dir));\n\t\t\t\tlinear = {SKYBOX_DECODE_FNC}(textureSample(texture_envAtlas, texture_envAtlas_sampler, mapRoughnessUv(uv, uniform.mipLevel)));\n\t\t\t#endif\n\t\t\tif (any(linear >= vec3f(64.0))) {\n\t\t\t\tlinear *= uniform.skyboxHighlightMultiplier;\n\t\t\t}\n\t\t\t\n\t\t\toutput.color = vec4f(gammaCorrectOutput(toneMap(processEnvironment(linear))), 1.0);\n\t\t#endif\n\t\treturn output;\n\t}\n`;\n\nvar skyboxVS = `\n\tattribute aPosition : vec4f;\n\tuniform matrix_view : mat4x4f;\n\tuniform matrix_projectionSkybox : mat4x4f;\n\tuniform cubeMapRotationMatrix : mat3x3f;\n\tvarying vViewDir : vec3f;\n\t#ifdef PREPASS_PASS\n\t\tvarying vLinearDepth: f32;\n\t#endif\n\t#ifdef SKYMESH\n\t\tuniform matrix_model : mat4x4f;\n\t\tvarying vWorldPos : vec3f;\n\t#endif\n\t@vertex\n\tfn vertexMain(input : VertexInput) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\tvar view : mat4x4f = uniform.matrix_view;\n\t\t#ifdef SKYMESH\n\t\t\tvar worldPos : vec4f = uniform.matrix_model * input.aPosition;\n\t\t\toutput.vWorldPos = worldPos.xyz;\n\t\t\toutput.position = uniform.matrix_projectionSkybox * (view * worldPos);\n\t\t\t#ifdef PREPASS_PASS\n\t\t\t\toutput.vLinearDepth = -(uniform.matrix_view * vec4f(worldPos.xyz, 1.0)).z;\n\t\t\t#endif\n\t\t#else\n\t\t\tview[3][0] = 0.0;\n\t\t\tview[3][1] = 0.0;\n\t\t\tview[3][2] = 0.0;\n\t\t\toutput.position = uniform.matrix_projectionSkybox * (view * input.aPosition);\n\t\t\toutput.vViewDir = input.aPosition.xyz * uniform.cubeMapRotationMatrix;\n\t\t\t#ifdef PREPASS_PASS\n\t\t\t\toutput.vLinearDepth = -pcPosition.w;\n\t\t\t#endif\n\t\t#endif\n\t\toutput.position.z = output.position.w - 1.0e-7;\n\t\treturn output;\n\t}\n`;\n\nvar specularPS = `\n#ifdef STD_SPECULAR_CONSTANT\n\tuniform material_specular: vec3f;\n#endif\nfn getSpecularity() {\n\tvar specularColor = vec3f(1.0, 1.0, 1.0);\n\t#ifdef STD_SPECULAR_CONSTANT\n\tspecularColor = specularColor * uniform.material_specular;\n\t#endif\n\t#ifdef STD_SPECULAR_TEXTURE\n\tspecularColor = specularColor * {STD_SPECULAR_TEXTURE_DECODE}(textureSampleBias({STD_SPECULAR_TEXTURE_NAME}, {STD_SPECULAR_TEXTURE_NAME}Sampler, {STD_SPECULAR_TEXTURE_UV}, uniform.textureBias)).{STD_SPECULAR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULAR_VERTEX\n\tspecularColor = specularColor * saturate3(vVertexColor.{STD_SPECULAR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularity = specularColor;\n}\n`;\n\nvar sphericalPS = `\nfn toSpherical(dir: vec3f) -> vec2f {\n\tlet angle_xz = select(0.0, atan2(dir.x, dir.z), any(dir.xz != vec2f(0.0)));\n\treturn vec2f(angle_xz, asin(dir.y));\n}\nfn toSphericalUv(dir : vec3f) -> vec2f {\n\tconst PI : f32 = 3.141592653589793;\n\tlet uv : vec2f = toSpherical(dir) / vec2f(PI * 2.0, PI) + vec2f(0.5, 0.5);\n\treturn vec2f(uv.x, 1.0 - uv.y);\n}\n`;\n\nvar specularityFactorPS = `\n#ifdef STD_SPECULARITYFACTOR_CONSTANT\n\tuniform material_specularityFactor: f32;\n#endif\nfn getSpecularityFactor() {\n\tvar specularityFactor = 1.0;\n\t#ifdef STD_SPECULARITYFACTOR_CONSTANT\n\tspecularityFactor = specularityFactor * uniform.material_specularityFactor;\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_TEXTURE\n\tspecularityFactor = specularityFactor * textureSampleBias({STD_SPECULARITYFACTOR_TEXTURE_NAME}, {STD_SPECULARITYFACTOR_TEXTURE_NAME}Sampler, {STD_SPECULARITYFACTOR_TEXTURE_UV}, uniform.textureBias).{STD_SPECULARITYFACTOR_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_SPECULARITYFACTOR_VERTEX\n\tspecularityFactor = specularityFactor * saturate(vVertexColor.{STD_SPECULARITYFACTOR_VERTEX_CHANNEL});\n\t#endif\n\tdSpecularityFactor = specularityFactor;\n}\n`;\n\nvar spotPS = `\nfn getSpotEffect(lightSpotDir: vec3f, lightInnerConeAngle: f32, lightOuterConeAngle: f32, lightDirNorm: vec3f) -> f32 {\n\tlet cosAngle: f32 = dot(lightDirNorm, lightSpotDir);\n\treturn smoothstep(lightOuterConeAngle, lightInnerConeAngle, cosAngle);\n}`;\n\nvar startNineSlicedPS = `\n\tnineSlicedUv = vec2f(vUv0.x, 1.0 - vUv0.y);\n`;\n\nvar startNineSlicedTiledPS = `\n\tlet tileMask: vec2f = step(vMask, vec2f(0.99999));\n\tlet tileSize: vec2f = 0.5 * (innerOffset.xy + innerOffset.zw);\n\tlet tileScale: vec2f = vec2f(1.0) / (vec2f(1.0) - tileSize);\n\tvar clampedUv: vec2f = mix(innerOffset.xy * 0.5, vec2f(1.0) - innerOffset.zw * 0.5, fract((vTiledUv - tileSize) * tileScale));\n\tclampedUv = clampedUv * atlasRect.zw + atlasRect.xy;\n\tvar nineSlicedUv: vec2f = vUv0 * tileMask + clampedUv * (vec2f(1.0) - tileMask);\n\tnineSlicedUv.y = 1.0 - nineSlicedUv.y;\n`;\n\nvar stdDeclarationPS = `\n\tvar<private> dAlpha: f32 = 1.0;\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#ifdef STD_OPACITY_TEXTURE_ALLOCATE\n\t\t\tvar texture_opacityMap : texture_2d<f32>;\n\t\t\tvar texture_opacityMapSampler : sampler;\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\tvar<private> dAlbedo: vec3f;\n\t\tvar<private> dNormalW: vec3f;\n\t\tvar<private> dSpecularity: vec3f = vec3f(0.0, 0.0, 0.0);\n\t\tvar<private> dGlossiness: f32 = 0.0;\n\t\t#ifdef LIT_REFRACTION\n\t\t\tvar<private> dTransmission: f32;\n\t\t\tvar<private> dThickness: f32;\n\t\t#endif\n\t\t#ifdef LIT_SCENE_COLOR\n\t\t\tvar uSceneColorMap : texture_2d<f32>;\n\t\t\tvar uSceneColorMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef LIT_SCREEN_SIZE\n\t\t\tuniform uScreenSize: vec4f;\n\t\t#endif\n\t\t#ifdef LIT_TRANSFORMS\n\t\t\tvar<private> matrix_viewProjection: mat4x4f;\n\t\t\tvar<private> matrix_model: mat4x4f;\n\t\t#endif\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\tvar<private> dUvOffset: vec2f;\n\t\t\t#ifdef STD_HEIGHT_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_heightMap : texture_2d<f32>;\n\t\t\t\tvar texture_heightMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_DIFFUSE_TEXTURE_ALLOCATE\n\t\t\tvar texture_diffuseMap : texture_2d<f32>;\n\t\t\tvar texture_diffuseMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_DIFFUSEDETAIL_TEXTURE_ALLOCATE\n\t\t\tvar texture_diffuseDetailMap : texture_2d<f32>;\n\t\t\tvar texture_diffuseDetailMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_NORMAL_TEXTURE_ALLOCATE\n\t\t\tvar texture_normalMap : texture_2d<f32>;\n\t\t\tvar texture_normalMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_NORMALDETAIL_TEXTURE_ALLOCATE\n\t\t\tvar texture_normalDetailMap : texture_2d<f32>;\n\t\t\tvar texture_normalDetailMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_THICKNESS_TEXTURE_ALLOCATE\n\t\t\tvar texture_thicknessMap : texture_2d<f32>;\n\t\t\tvar texture_thicknessMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef STD_REFRACTION_TEXTURE_ALLOCATE\n\t\t\tvar texture_refractionMap : texture_2d<f32>;\n\t\t\tvar texture_refractionMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\tvar<private> dIridescence: f32;\n\t\t\tvar<private> dIridescenceThickness: f32;\n\t\t\t#ifdef STD_IRIDESCENCE_THICKNESS_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_iridescenceThicknessMap : texture_2d<f32>;\n\t\t\t\tvar texture_iridescenceThicknessMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_IRIDESCENCE_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_iridescenceMap : texture_2d<f32>;\n\t\t\t\tvar texture_iridescenceMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\tvar<private> ccSpecularity: f32;\n\t\t\tvar<private> ccGlossiness: f32;\n\t\t\tvar<private> ccNormalW: vec3f;\n\t\t#endif\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\tvar<private> dAnisotropy: f32;\n\t\t\tvar<private> dAnisotropyRotation: vec2f;\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\tvar<private> sSpecularity: vec3f;\n\t\t\t\tvar<private> sGlossiness: f32;\n\t\t\t\t#ifdef STD_SHEEN_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_sheenMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_sheenMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t\t#ifdef STD_SHEENGLOSS_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_sheenGlossMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_sheenGlossMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\tvar<private> dMetalness: f32;\n\t\t\t\tvar<private> dIor: f32;\n\t\t\t\t#ifdef STD_METALNESS_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_metalnessMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_metalnessMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\tvar<private> dSpecularityFactor: f32;\n\t\t\t\t#ifdef STD_SPECULARITYFACTOR_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_specularityFactorMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_specularityFactorMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#ifdef STD_SPECULAR_TEXTURE_ALLOCATE\n\t\t\t\t\tvar texture_specularMap : texture_2d<f32>;\n\t\t\t\t\tvar texture_specularMapSampler : sampler;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef STD_GLOSS_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_glossMap : texture_2d<f32>;\n\t\t\t\tvar texture_glossMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\tvar <private> dAo: f32;\n\t\t\t#ifdef STD_AO_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_aoMap : texture_2d<f32>;\n\t\t\t\tvar texture_aoMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_AODETAIL_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_aoDetailMap : texture_2d<f32>;\n\t\t\t\tvar texture_aoDetailMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\tvar <private> dEmission: vec3f;\n\t\t#ifdef STD_EMISSIVE_TEXTURE_ALLOCATE\n\t\t\tvar texture_emissiveMap : texture_2d<f32>;\n\t\t\tvar texture_emissiveMapSampler : sampler;\n\t\t#endif\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#ifdef STD_CLEARCOAT_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_clearCoatMap : texture_2d<f32>;\n\t\t\t\tvar texture_clearCoatMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATGLOSS_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_clearCoatGlossMap : texture_2d<f32>;\n\t\t\t\tvar texture_clearCoatGlossMapSampler : sampler;\n\t\t\t#endif\n\t\t\t#ifdef STD_CLEARCOATNORMAL_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_clearCoatNormalMap : texture_2d<f32>;\n\t\t\t\tvar texture_clearCoatNormalMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#ifdef LIT_GGX_SPECULAR\n\t\t\t#ifdef STD_ANISOTROPY_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_anisotropyMap : texture_2d<f32>;\n\t\t\t\tvar texture_anisotropyMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\tvar<private> dLightmap: vec3f;\n\t\t\t#ifdef STD_LIGHT_TEXTURE_ALLOCATE\n\t\t\t\tvar texture_lightMap : texture_2d<f32>;\n\t\t\t\tvar texture_lightMapSampler : sampler;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#include \"litShaderCorePS\"\n`;\n\nvar stdFrontEndPS = `\n\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t#include \"opacityPS\"\n\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t#include \"alphaTestPS\"\n\t\t#endif\n\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t#include \"opacityDitherPS\"\n\t\t#endif\n\t#endif\n\t#ifdef FORWARD_PASS\n\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t#include \"parallaxPS\"\n\t\t#endif\n\t\t#include  \"diffusePS\"\n\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t#include \"normalMapPS\"\n\t\t#endif\n\t\t#ifdef LIT_REFRACTION\n\t\t\t#include \"transmissionPS\"\n\t\t\t#include \"thicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t#include \"iridescencePS\"\n\t\t\t#include \"iridescenceThicknessPS\"\n\t\t#endif\n\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t#include \"sheenPS\"\n\t\t\t\t#include \"sheenGlossPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t#include \"metalnessPS\"\n\t\t\t\t#include \"iorPS\"\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t#include \"specularityFactorPS\"\n\t\t\t#endif\n\t\t\t#ifdef STD_SPECULAR_COLOR\n\t\t\t\t#include \"specularPS\"\n\t\t\t#else\n\t\t\t\tfn getSpecularity() { \n\t\t\t\t\tdSpecularity = vec3f(1.0, 1.0, 1.0);\n\t\t\t\t}\n\t\t\t#endif\n\t\t\t#include \"glossPS\"\n\t\t#endif\n\t\t#ifdef STD_AO\n\t\t\t#include \"aoPS\"\n\t\t#endif\n\t\t#include \"emissivePS\"\n\t\t#ifdef LIT_CLEARCOAT\n\t\t\t#include \"clearCoatPS\"\n\t\t\t#include \"clearCoatGlossPS\"\n\t\t\t#include \"clearCoatNormalPS\"\n\t\t#endif\n\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t#include \"anisotropyPS\"\n\t\t#endif\n\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t#include \"lightmapPS\"\n\t\t#endif\n\t#endif\n\tfn evaluateFrontend() {\n\t\t#if LIT_BLEND_TYPE != NONE || defined(LIT_ALPHA_TEST) || defined(LIT_ALPHA_TO_COVERAGE) || STD_OPACITY_DITHER != NONE\n\t\t\tgetOpacity();\n\t\t\t#if defined(LIT_ALPHA_TEST)\n\t\t\t\talphaTest(dAlpha);\n\t\t\t#endif\n\t\t\t#if STD_OPACITY_DITHER != NONE\n\t\t\t\topacityDither(dAlpha, 0.0);\n\t\t\t#endif\n\t\t\tlitArgs_opacity = dAlpha;\n\t\t#endif\n\t\t#ifdef FORWARD_PASS\n\t\t\t#ifdef STD_HEIGHT_MAP\n\t\t\t\tgetParallax();\n\t\t\t#endif\n\t\t\tgetAlbedo();\n\t\t\tlitArgs_albedo = dAlbedo;\n\t\t\t#ifdef LIT_NEEDS_NORMAL\n\t\t\t\tgetNormal();\n\t\t\t\tlitArgs_worldNormal = dNormalW;\n\t\t\t#endif\n\t\t\t#ifdef LIT_REFRACTION\n\t\t\t\tgetRefraction();\n\t\t\t\tlitArgs_transmission = dTransmission;\n\t\t\t\tgetThickness();\n\t\t\t\tlitArgs_thickness = dThickness;\n\t\t\t\t#ifdef LIT_DISPERSION\n\t\t\t\t\tlitArgs_dispersion = uniform.material_dispersion;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t\t#ifdef LIT_IRIDESCENCE\n\t\t\t\tgetIridescence();\n\t\t\t\tgetIridescenceThickness();\n\t\t\t\tlitArgs_iridescence_intensity = dIridescence;\n\t\t\t\tlitArgs_iridescence_thickness = dIridescenceThickness;\n\t\t\t#endif\n\t\t\t#ifdef LIT_SPECULAR_OR_REFLECTION\n\t\t\t\t#ifdef LIT_SHEEN\n\t\t\t\t\tgetSheen();\n\t\t\t\t\tlitArgs_sheen_specularity = sSpecularity;\n\t\t\t\t\tgetSheenGlossiness();\n\t\t\t\t\tlitArgs_sheen_gloss = sGlossiness;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_METALNESS\n\t\t\t\t\tgetMetalness();\n\t\t\t\t\tlitArgs_metalness = dMetalness;\n\t\t\t\t\tgetIor();\n\t\t\t\t\tlitArgs_ior = dIor;\n\t\t\t\t#endif\n\t\t\t\t#ifdef LIT_SPECULARITY_FACTOR\n\t\t\t\t\tgetSpecularityFactor();\n\t\t\t\t\tlitArgs_specularityFactor = dSpecularityFactor;\n\t\t\t\t#endif\n\t\t\t\tgetGlossiness();\n\t\t\t\tgetSpecularity();\n\t\t\t\tlitArgs_specularity = dSpecularity;\n\t\t\t\tlitArgs_gloss = dGlossiness;\n\t\t\t#endif\n\t\t\t#ifdef STD_AO\n\t\t\t\tgetAO();\n\t\t\t\tlitArgs_ao = dAo;\n\t\t\t#endif\n\t\t\tgetEmission();\n\t\t\tlitArgs_emission = dEmission;\n\t\t\t#ifdef LIT_CLEARCOAT\n\t\t\t\tgetClearCoat();\n\t\t\t\tgetClearCoatGlossiness();\n\t\t\t\tgetClearCoatNormal();\n\t\t\t\tlitArgs_clearcoat_specularity = ccSpecularity;\n\t\t\t\tlitArgs_clearcoat_gloss = ccGlossiness;\n\t\t\t\tlitArgs_clearcoat_worldNormal = ccNormalW;\n\t\t\t#endif\n\t\t\t#if defined(LIT_SPECULAR) && defined(LIT_LIGHTING) && defined(LIT_GGX_SPECULAR)\n\t\t\t\tgetAnisotropy();\n\t\t\t#endif\n\t\t\t#if defined(STD_LIGHTMAP) || defined(STD_LIGHT_VERTEX_COLOR)\n\t\t\t\tgetLightMap();\n\t\t\t\tlitArgs_lightmap = dLightmap;\n\t\t\t\t#ifdef STD_LIGHTMAP_DIR\n\t\t\t\t\tlitArgs_lightmapDir = dLightmapDir;\n\t\t\t\t#endif\n\t\t\t#endif\n\t\t#endif\n\t}\n`;\n\nvar TBNPS = `\n#ifdef LIT_TANGENTS\n\t#define TBN_TANGENTS\n#else\n\t#if defined(LIT_USE_NORMALS) || defined(LIT_USE_CLEARCOAT_NORMALS)\n\t\t#define TBN_DERIVATIVES\n\t#endif\n#endif\n#if defined(TBN_DERIVATIVES)\n\tuniform tbnBasis: f32;\n#endif\nfn getTBN(tangent: vec3f, binormal: vec3f, normal: vec3f) {\n\t#ifdef TBN_TANGENTS\n\t\tdTBN = mat3x3f(normalize(tangent), normalize(binormal), normalize(normal));\n\t#elif defined(TBN_DERIVATIVES)\n\t\tlet uv: vec2f = {lightingUv};\n\t\tlet dp1: vec3f = dpdx( vPositionW );\n\t\tlet dp2: vec3f = dpdy( vPositionW );\n\t\tlet duv1: vec2f = dpdx( uv );\n\t\tlet duv2: vec2f = dpdy( uv );\n\t\tlet dp2perp: vec3f = cross( dp2, normal );\n\t\tlet dp1perp: vec3f = cross( normal, dp1 );\n\t\tlet T: vec3f = dp2perp * duv1.x + dp1perp * duv2.x;\n\t\tlet B: vec3f = dp2perp * duv1.y + dp1perp * duv2.y;\n\t\tlet denom: f32 = max( dot(T, T), dot(B, B) );\n\t\tlet invmax: f32 = select(uniform.tbnBasis / sqrt( denom ), 0.0, denom == 0.0);\n\t\tdTBN = mat3x3f(T * invmax, -B * invmax, normal );\n\t#else\n\t\tvar B: vec3f = cross(normal, vObjectSpaceUpW);\n\t\tvar T: vec3f = cross(normal, B);\n\t\tif (dot(B,B) == 0.0)\n\t\t{\n\t\t\tlet major: f32 = max(max(normal.x, normal.y), normal.z);\n\t\t\tif (normal.x == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3f(0.0, 1.0, 0.0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse if (normal.y == major)\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3f(0.0, 0.0, 1.0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tB = cross(normal, vec3f(1.0, 0.0, 0.0));\n\t\t\t\tT = cross(normal, B);\n\t\t\t}\n\t\t}\n\t\tdTBN = mat3x3f(normalize(T), normalize(B), normalize(normal));\n\t#endif\n}`;\n\nvar thicknessPS = `\n#ifdef STD_THICKNESS_CONSTANT\nuniform material_thickness: f32;\n#endif\nfn getThickness() {\n\tdThickness = 1.0;\n\t#ifdef STD_THICKNESS_CONSTANT\n\tdThickness = dThickness * uniform.material_thickness;\n\t#endif\n\t#ifdef STD_THICKNESS_TEXTURE\n\tdThickness = dThickness * textureSampleBias({STD_THICKNESS_TEXTURE_NAME}, {STD_THICKNESS_TEXTURE_NAME}Sampler, {STD_THICKNESS_TEXTURE_UV}, uniform.textureBias).{STD_THICKNESS_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_THICKNESS_VERTEX\n\tdThickness = dThickness * saturate(vVertexColor.{STD_THICKNESS_VERTEX_CHANNEL});\n\t#endif\n}\n`;\n\nvar tonemappingPS = `\n#if (TONEMAP == NONE)\n\t#include \"tonemappingNonePS\"\n#elif TONEMAP == FILMIC\n\t#include \"tonemappingFilmicPS\"\n#elif TONEMAP == LINEAR\n\t#include \"tonemappingLinearPS\"\n#elif TONEMAP == HEJL\n\t#include \"tonemappingHejlPS\"\n#elif TONEMAP == ACES\n\t#include \"tonemappingAcesPS\"\n#elif TONEMAP == ACES2\n\t#include \"tonemappingAces2PS\"\n#elif TONEMAP == NEUTRAL\n\t#include \"tonemappingNeutralPS\"\n#endif\n`;\n\nvar tonemappingAcesPS = `\nuniform exposure: f32;\nfn toneMap(color: vec3f) -> vec3f {\n\tlet tA: f32 = 2.51;\n\tlet tB: f32 = 0.03;\n\tlet tC: f32 = 2.43;\n\tlet tD: f32 = 0.59;\n\tlet tE: f32 = 0.14;\n\tlet x: vec3f = color * uniform.exposure;\n\treturn (x * (tA * x + tB)) / (x * (tC * x + tD) + tE);\n}\n`;\n\nvar tonemappingAces2PS = `\nuniform exposure: f32;\nconst ACESInputMat: mat3x3f = mat3x3f(\n\tvec3f(0.59719, 0.35458, 0.04823),\n\tvec3f(0.07600, 0.90834, 0.01566),\n\tvec3f(0.02840, 0.13383, 0.83777)\n);\nconst ACESOutputMat: mat3x3f = mat3x3f(\n\tvec3f( 1.60475, -0.53108, -0.07367),\n\tvec3f(-0.10208,  1.10813, -0.00605),\n\tvec3f(-0.00327, -0.07276,  1.07602)\n);\nfn RRTAndODTFit(v: vec3f) -> vec3f {\n\tlet a: vec3f = v * (v + vec3f(0.0245786)) - vec3f(0.000090537);\n\tlet b: vec3f = v * (vec3f(0.983729) * v + vec3f(0.4329510)) + vec3f(0.238081);\n\treturn a / b;\n}\nfn toneMap(color: vec3f) -> vec3f {\n\tvar c: vec3f = color * (uniform.exposure / 0.6);\n\tc = c * ACESInputMat;\n\tc = RRTAndODTFit(c);\n\tc = c * ACESOutputMat;\n\treturn clamp(c, vec3f(0.0), vec3f(1.0));\n}\n`;\n\nvar tonemappingFilmicPS = `\nconst A: f32 = 0.15;\nconst B: f32 = 0.50;\nconst C: f32 = 0.10;\nconst D: f32 = 0.20;\nconst E: f32 = 0.02;\nconst F: f32 = 0.30;\nconst W: f32 = 11.2;\nuniform exposure: f32;\nfn uncharted2Tonemap(x: vec3f) -> vec3f {\n\treturn ((x * (A * x + C * B) + D * E) / (x * (A * x + B) + D * F)) - vec3f(E / F);\n}\nfn toneMap(color: vec3f) -> vec3f {\n\tvar c: vec3f = uncharted2Tonemap(color * uniform.exposure);\n\tlet whiteScale: vec3f = vec3f(1.0) / uncharted2Tonemap(vec3f(W, W, W));\n\tc *= whiteScale;\n\treturn c;\n}\n`;\n\nvar tonemappingHejlPS = `\nuniform exposure: f32;\nfn toneMap(color: vec3f) -> vec3f {\n\tlet A: f32 = 0.22;\n\tlet B: f32 = 0.3;\n\tlet C: f32 = 0.1;\n\tlet D: f32 = 0.2;\n\tlet E: f32 = 0.01;\n\tlet F: f32 = 0.3;\n\tlet Scl: f32 = 1.25;\n\tlet adjusted_color = color * uniform.exposure;\n\tlet h = max(vec3f(0.0), adjusted_color - vec3f(0.004));\n\treturn (h * ((Scl * A) * h + Scl * vec3f(C * B)) + Scl * vec3f(D * E)) /\n\t\t   (h * (A * h + vec3f(B)) + vec3f(D * F)) -\n\t\t   Scl * vec3f(E / F);\n}\n`;\n\nvar tonemappingLinearPS = `\nuniform exposure: f32;\nfn toneMap(color: vec3f) -> vec3f {\n\treturn color * uniform.exposure;\n}\n`;\n\nvar tonemappingNeutralPS = `\nuniform exposure: f32;\nfn toneMap(col: vec3f) -> vec3f {\n\tvar color = col * uniform.exposure;\n\tlet startCompression = 0.8 - 0.04;\n\tlet desaturation = 0.15;\n\tlet x = min(color.r, min(color.g, color.b));\n\tlet offset = select(0.04, x - 6.25 * x * x, x < 0.08);\n\tcolor -= vec3f(offset);\n\tlet peak = max(color.r, max(color.g, color.b));\n\tif (peak < startCompression) {\n\t\treturn color;\n\t}\n\tlet d = 1.0 - startCompression;\n\tlet newPeak = 1.0 - d * d / (peak + d - startCompression);\n\tcolor *= newPeak / peak;\n\tlet g = 1.0 - 1.0 / (desaturation * (peak - newPeak) + 1.0);\n\treturn mix(color, vec3f(newPeak), vec3f(g));\n}\n`;\n\nvar tonemappingNonePS = `\nfn toneMap(color: vec3f) -> vec3f {\n\treturn color;\n}\n`;\n\nvar transformVS = `\n#ifdef PIXELSNAP\n\tuniform uScreenSize: vec4f;\n#endif\n#ifdef SCREENSPACE\n\tuniform projectionFlipY: f32;\n#endif\nfn evalWorldPosition(vertexPosition: vec3f, modelMatrix: mat4x4f) -> vec4f {\n\tvar localPos: vec3f = getLocalPosition(vertexPosition);\n\t#ifdef NINESLICED\n\t\tvar localPosXZ: vec2f = localPos.xz;\n\t\tlocalPosXZ = localPosXZ * uniform.outerScale;\n\t\tlet positiveUnitOffset: vec2f = clamp(vertexPosition.xz, vec2f(0.0), vec2f(1.0));\n\t\tlet negativeUnitOffset: vec2f = clamp(-vertexPosition.xz, vec2f(0.0), vec2f(1.0));\n\t\tlocalPosXZ = localPosXZ + (-positiveUnitOffset * uniform.innerOffset.xy + negativeUnitOffset * uniform.innerOffset.zw) * vertex_texCoord0.xy;\n\t\tdTiledUvGlobal = (localPosXZ - uniform.outerScale + uniform.innerOffset.xy) * -0.5 + 1.0;\n\t\tlocalPosXZ = localPosXZ * -0.5;\n\t\tlocalPos = vec3f(localPosXZ.x, localPosXZ.y, localPos.y);\n\t#endif\n\tvar posW: vec4f = modelMatrix * vec4f(localPos, 1.0);\n\t#ifdef SCREENSPACE\n\t\tposW = vec4f(posW.xy, 0.0, 1.0);\n\t#endif\n\treturn posW;\n}\nfn getPosition() -> vec4f {\n\tdModelMatrix = getModelMatrix();\n\tlet posW: vec4f = evalWorldPosition(vertex_position.xyz, dModelMatrix);\n\tdPositionW = posW.xyz;\n\tvar screenPos: vec4f;\n\t#ifdef UV1LAYOUT\n\t\tscreenPos = vec4f(vertex_texCoord1.xy * 2.0 - 1.0, 0.5, 1.0);\n\t\tscreenPos.y *= -1.0;\n\t#else\n\t\t#ifdef SCREENSPACE\n\t\t\tscreenPos = posW;\n\t\t\tscreenPos.y *= uniform.projectionFlipY;\n\t\t#else\n\t\t\tscreenPos = uniform.matrix_viewProjection * posW;\n\t\t#endif\n\t\t#ifdef PIXELSNAP\n\t\t\tscreenPos.xy = (screenPos.xy * 0.5) + 0.5;\n\t\t\tscreenPos.xy *= uniforms.uScreenSize.xy;\n\t\t\tscreenPos.xy = floor(screenPos.xy);\n\t\t\tscreenPos.xy *= uniforms.uScreenSize.zw;\n\t\t\tscreenPos.xy = (screenPos.xy * 2.0) - 1.0;\n\t\t#endif\n\t#endif\n\treturn screenPos;\n}\nfn getWorldPosition() -> vec3f {\n\treturn dPositionW;\n}\n`;\n\nvar transformCoreVS = `\n\tattribute vertex_position: vec4f;\n\tuniform matrix_viewProjection: mat4x4f;\n\tuniform matrix_model: mat4x4f;\n\t\n\t#ifdef MORPHING\n\t\tuniform morph_tex_params: vec2f;\n\t\tattribute morph_vertex_id: u32;\n\t\tfn getTextureMorphCoords() -> vec2i {\n\t\t\tvar textureSize: vec2i = vec2i(uniform.morph_tex_params);\n\t\t\tvar morphGridV: i32 = i32(morph_vertex_id) / textureSize.x;\n\t\t\tvar morphGridU: i32 = i32(morph_vertex_id) - (morphGridV * textureSize.x);\n\t\t\tmorphGridV = textureSize.y - morphGridV - 1;\n\t\t\treturn vec2i(morphGridU, morphGridV);\n\t\t}\n\t\t#ifdef MORPHING_POSITION\n\t\t\t#ifdef MORPHING_INT\n\t\t\t\tuniform aabbSize: vec3f;\n\t\t\t\tuniform aabbMin: vec3f;\n\t\t\t\tvar morphPositionTex: texture_2d<u32>;\n\t\t\t#else\n\t\t\t\tvar morphPositionTex: texture_2d<f32>;\n\t\t\t#endif\n\t\t#endif\n\t#endif\n\t#ifdef defined(BATCH)\n\t\t#include \"skinBatchVS\"\n\t\tfn getModelMatrix() -> mat4x4f {\n\t\t\treturn getBoneMatrix(vertex_boneIndices);\n\t\t}\n\t#elif defined(SKIN)\n\t\t#include \"skinVS\"\n\t\tfn getModelMatrix() -> mat4x4f {\n\t\t\treturn uniform.matrix_model * getSkinMatrix(vertex_boneIndices, vertex_boneWeights);\n\t\t}\n\t#elif defined(INSTANCING)\n\t\t#include \"transformInstancingVS\"\n\t#else\n\t\tfn getModelMatrix() -> mat4x4f {\n\t\t\treturn uniform.matrix_model;\n\t\t}\n\t#endif\n\tfn getLocalPosition(vertexPosition: vec3f) -> vec3f {\n\t\tvar localPos: vec3f = vertexPosition;\n\t\t#ifdef MORPHING_POSITION\n\t\t\tvar morphUV: vec2i = getTextureMorphCoords();\n\t\t\t#ifdef MORPHING_INT\n\t\t\t\tvar morphPos: vec3f = vec3f(textureLoad(morphPositionTex, morphUV, 0).xyz) / 65535.0 * uniform.aabbSize + uniform.aabbMin;\n\t\t\t#else\n\t\t\t\tvar morphPos: vec3f = textureLoad(morphPositionTex, morphUV, 0).xyz;\n\t\t\t#endif\n\t\t\tlocalPos += morphPos;\n\t\t#endif\n\t\treturn localPos;\n\t}\n`;\n\nvar transformInstancingVS = `\nattribute instance_line1: vec4f;\nattribute instance_line2: vec4f;\nattribute instance_line3: vec4f;\nattribute instance_line4: vec4f;\nfn getModelMatrix() -> mat4x4f {\n\treturn uniform.matrix_model * mat4x4f(instance_line1, instance_line2, instance_line3, instance_line4);\n}\n`;\n\nvar transmissionPS = `\n#ifdef STD_REFRACTION_CONSTANT\n\tuniform material_refraction: f32;\n#endif\nfn getRefraction() {\n\tvar refraction: f32 = 1.0;\n\t#ifdef STD_REFRACTION_CONSTANT\n\trefraction = uniform.material_refraction;\n\t#endif\n\t#ifdef STD_REFRACTION_TEXTURE\n\trefraction = refraction * textureSampleBias({STD_REFRACTION_TEXTURE_NAME}, {STD_REFRACTION_TEXTURE_NAME}Sampler, {STD_REFRACTION_TEXTURE_UV}, uniform.textureBias).{STD_REFRACTION_TEXTURE_CHANNEL};\n\t#endif\n\t#ifdef STD_REFRACTION_VERTEX\n\trefraction = refraction * saturate(vVertexColor.{STD_REFRACTION_VERTEX_CHANNEL});\n\t#endif\n\tdTransmission = refraction;\n}\n`;\n\nvar twoSidedLightingPS = `\nuniform twoSidedLightingNegScaleFactor: f32;\nfn handleTwoSidedLighting() {\n\tdTBN[2] = dTBN[2] * select(-uniform.twoSidedLightingNegScaleFactor, uniform.twoSidedLightingNegScaleFactor, pcFrontFacing);\n}\n`;\n\nvar uv0VS = `\n#ifdef NINESLICED\n\tfn getUv0() -> vec2f {\n\t\tvar uv = vertex_position.xz;\n\t\tlet positiveUnitOffset = clamp(vertex_position.xz, vec2f(0.0, 0.0), vec2f(1.0, 1.0));\n\t\tlet negativeUnitOffset = clamp(-vertex_position.xz, vec2f(0.0, 0.0), vec2f(1.0, 1.0));\n\t\tuv = uv + ((-positiveUnitOffset * uniform.innerOffset.xy) + (negativeUnitOffset * uniform.innerOffset.zw)) * vertex_texCoord0.xy;\n\t\tuv = uv * -0.5 + vec2f(0.5, 0.5);\n\t\tuv = uv * uniform.atlasRect.zw + uniform.atlasRect.xy;\n\t\tdMaskGlobal = vertex_texCoord0.xy;\n\t\treturn uv;\n\t}\n#else\n\tfn getUv0() -> vec2f {\n\t\treturn vertex_texCoord0;\n\t}\n#endif\n`;\n\nvar uv1VS = `\nfn getUv1() -> vec2f {\n\treturn vertex_texCoord1;\n}\n`;\n\nvar uvTransformVS = `\noutput.vUV{TRANSFORM_UV_{i}}_{TRANSFORM_ID_{i}} = vec2f(\n\tdot(vec3f(uv{TRANSFORM_UV_{i}}, 1), uniform.{TRANSFORM_NAME_{i}}0),\n\tdot(vec3f(uv{TRANSFORM_UV_{i}}, 1), uniform.{TRANSFORM_NAME_{i}}1)\n);\n`;\n\nvar uvTransformUniformsPS = `\n\tuniform {TRANSFORM_NAME_{i}}0: vec3f;\n\tuniform {TRANSFORM_NAME_{i}}1: vec3f;\n`;\n\nvar viewDirPS = `\nfn getViewDir() {\n\tdViewDirW = normalize(uniform.view_position - vPositionW);\n}\n`;\n\nconst shaderChunksWGSL = {\n\t\talphaTestPS,\n\t\tambientPS,\n\t\tanisotropyPS,\n\t\taoPS,\n\t\taoDiffuseOccPS,\n\t\taoSpecOccPS,\n\t\tbakeDirLmEndPS,\n\t\tbakeLmEndPS,\n\t\tbasePS,\n\t\tbaseNineSlicedPS,\n\t\tbaseNineSlicedTiledPS,\n\t\tbayerPS,\n\t\tblurVSMPS,\n\t\tclearCoatPS,\n\t\tclearCoatGlossPS,\n\t\tclearCoatNormalPS,\n\t\tclusteredLightCookiesPS,\n\t\tclusteredLightShadowsPS,\n\t\tclusteredLightUtilsPS,\n\t\tclusteredLightPS,\n\t\tcombinePS,\n\t\tcookieBlit2DPS,\n\t\tcookieBlitCubePS,\n\t\tcookieBlitVS,\n\t\tcubeMapProjectPS,\n\t\tcubeMapRotatePS,\n\t\tdebugOutputPS,\n\t\tdebugProcessFrontendPS,\n\t\tdetailModesPS,\n\t\tdiffusePS,\n\t\tdecodePS,\n\t\temissivePS,\n\t\tencodePS,\n\t\tendPS,\n\t\tenvAtlasPS,\n\t\tenvProcPS,\n\t\tfalloffInvSquaredPS,\n\t\tfalloffLinearPS,\n\t\tfloatAsUintPS,\n\t\tfogPS,\n\t\tfresnelSchlickPS,\n\t\tfrontendCodePS: '',\n\t\tfrontendDeclPS: '',\n\t\tfullscreenQuadVS,\n\t\tgammaPS,\n\t\tglossPS,\n\t\tgsplatCenterVS,\n\t\tgsplatCornerVS,\n\t\tgsplatColorVS,\n\t\tgsplatCommonVS,\n\t\tgsplatCompressedDataVS,\n\t\tgsplatCompressedSHVS,\n\t\tgsplatEvalSHVS,\n\t\tgsplatSourceFormatVS,\n\t\tgsplatStructsVS,\n\t\tgsplatQuatToMat3VS,\n\t\tgsplatSogsColorVS,\n\t\tgsplatSogsDataVS,\n\t\tgsplatSogsSHVS,\n\t\tgsplatDataVS,\n\t\tgsplatOutputVS,\n\t\tgsplatPS,\n\t\tgsplatSHVS,\n\t\tgsplatSourceVS,\n\t\tgsplatVS,\n\t\tgsplatWorkBufferVS,\n\t\tgsplatPackingPS,\n\t\tquadVS,\n\t\tindirectCoreCS,\n\t\timmediateLinePS,\n\t\timmediateLineVS,\n\t\tiridescenceDiffractionPS,\n\t\tiridescencePS,\n\t\tiridescenceThicknessPS,\n\t\tiorPS,\n\t\tlightDeclarationPS,\n\t\tlightDiffuseLambertPS,\n\t\tlightDirPointPS,\n\t\tlightEvaluationPS,\n\t\tlightFunctionLightPS,\n\t\tlightFunctionShadowPS,\n\t\tlightingPS,\n\t\tlightmapAddPS,\n\t\tlightmapPS,\n\t\tlightSpecularAnisoGGXPS,\n\t\tlightSpecularBlinnPS,\n\t\tlightSheenPS,\n\t\tlinearizeDepthPS,\n\t\tlitForwardBackendPS,\n\t\tlitForwardDeclarationPS,\n\t\tlitForwardMainPS,\n\t\tlitForwardPostCodePS,\n\t\tlitForwardPreCodePS,\n\t\tlitMainPS,\n\t\tlitMainVS,\n\t\tlitOtherMainPS,\n\t\tlitShaderArgsPS,\n\t\tlitShaderCorePS,\n\t\tlitShadowMainPS,\n\t\tlitUserDeclarationPS: '',\n\t\tlitUserDeclarationVS: '',\n\t\tlitUserCodePS: '',\n\t\tlitUserCodeVS: '',\n\t\tlitUserMainStartPS: '',\n\t\tlitUserMainStartVS: '',\n\t\tlitUserMainEndPS: '',\n\t\tlitUserMainEndVS: '',\n\t\tltcPS,\n\t\tmetalnessPS,\n\t\tmetalnessModulatePS,\n\t\tmorphPS,\n\t\tmorphVS,\n\t\tmsdfPS,\n\t\tmsdfVS,\n\t\tnormalVS,\n\t\tnormalCoreVS,\n\t\tnormalMapPS,\n\t\topacityPS,\n\t\topacityDitherPS,\n\t\toutputPS,\n\t\toutputAlphaPS,\n\t\toutputTex2DPS,\n\t\tsheenPS,\n\t\tsheenGlossPS,\n\t\tparallaxPS,\n\t\tpickPS,\n\t\treflDirPS,\n\t\treflDirAnisoPS,\n\t\treflectionCCPS,\n\t\treflectionCubePS,\n\t\treflectionEnvHQPS,\n\t\treflectionEnvPS,\n\t\treflectionSpherePS,\n\t\treflectionSheenPS,\n\t\trefractionCubePS,\n\t\trefractionDynamicPS,\n\t\treprojectPS,\n\t\treprojectVS,\n\t\tscreenDepthPS,\n\t\tshadowCascadesPS,\n\t\tshadowEVSMPS,\n\t\tshadowPCF1PS,\n\t\tshadowPCF3PS,\n\t\tshadowPCF5PS,\n\t\tshadowSoftPS,\n\t\tskinBatchVS,\n\t\tskinVS,\n\t\tskyboxPS,\n\t\tskyboxVS,\n\t\tspecularPS,\n\t\tsphericalPS,\n\t\tspecularityFactorPS,\n\t\tspotPS,\n\t\tstartNineSlicedPS,\n\t\tstartNineSlicedTiledPS,\n\t\tstdDeclarationPS,\n\t\tstdFrontEndPS,\n\t\tTBNPS,\n\t\tthicknessPS,\n\t\ttonemappingPS,\n\t\ttonemappingAcesPS,\n\t\ttonemappingAces2PS,\n\t\ttonemappingFilmicPS,\n\t\ttonemappingHejlPS,\n\t\ttonemappingLinearPS,\n\t\ttonemappingNeutralPS,\n\t\ttonemappingNonePS,\n\t\ttransformVS,\n\t\ttransformCoreVS,\n\t\ttransformInstancingVS,\n\t\ttransmissionPS,\n\t\ttwoSidedLightingPS,\n\t\tuv0VS,\n\t\tuv1VS,\n\t\tuvTransformVS,\n\t\tuvTransformUniformsPS,\n\t\tviewDirPS,\n\t\twebgpuPS,\n\t\twebgpuVS\n};\n\nlet app = null;\nclass AppBase extends EventHandler {\n\t\tconstructor(canvas){\n\t\t\t\tsuper(), this._batcher = null, this._destroyRequested = false, this._inFrameUpdate = false, this._librariesLoaded = false, this._fillMode = FILLMODE_KEEP_ASPECT, this._resolutionMode = RESOLUTION_FIXED, this._allowResize = true, this._skyboxAsset = null, this._entityIndex = {}, this._inTools = false, this._scriptPrefix = '', this._time = 0, this.enableBundles = typeof TextDecoder !== 'undefined', this.timeScale = 1, this.maxDeltaTime = 0.1, this.frame = 0, this.frameGraph = new FrameGraph(), this.scriptsOrder = [], this.autoRender = true, this.renderNextFrame = false, this.lightmapper = null, this.loader = new ResourceLoader(this), this.scenes = new SceneRegistry(this), this.scripts = new ScriptRegistry(this), this.systems = new ComponentSystemRegistry(), this.i18n = new I18n(this), this.keyboard = null, this.mouse = null, this.touch = null, this.gamepads = null, this.elementInput = null, this.xr = null;\n\t\t\t\tAppBase._applications[canvas.id] = this;\n\t\t\t\tsetApplication(this);\n\t\t\t\tapp = this;\n\t\t\t\tthis.root = new Entity();\n\t\t\t\tthis.root._enabledInHierarchy = true;\n\t\t}\n\t\tinit(appOptions) {\n\t\t\t\tconst { assetPrefix, batchManager, componentSystems, elementInput, gamepads, graphicsDevice, keyboard, lightmapper, mouse, resourceHandlers, scriptsOrder, scriptPrefix, soundManager, touch, xr } = appOptions;\n\t\t\t\tthis.graphicsDevice = graphicsDevice;\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_GLSL).add(shaderChunksGLSL);\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_WGSL).add(shaderChunksWGSL);\n\t\t\t\tthis._initDefaultMaterial();\n\t\t\t\tthis._initProgramLibrary();\n\t\t\t\tthis.stats = new ApplicationStats(graphicsDevice);\n\t\t\t\tthis._soundManager = soundManager;\n\t\t\t\tthis.scene = new Scene(graphicsDevice);\n\t\t\t\tthis._registerSceneImmediate(this.scene);\n\t\t\t\tthis.assets = new AssetRegistry(this.loader);\n\t\t\t\tif (assetPrefix) this.assets.prefix = assetPrefix;\n\t\t\t\tthis.bundles = new BundleRegistry(this.assets);\n\t\t\t\tthis.scriptsOrder = scriptsOrder || [];\n\t\t\t\tthis.defaultLayerWorld = new Layer({\n\t\t\t\t\t\tname: 'World',\n\t\t\t\t\t\tid: LAYERID_WORLD\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerDepth = new Layer({\n\t\t\t\t\t\tname: 'Depth',\n\t\t\t\t\t\tid: LAYERID_DEPTH,\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerSkybox = new Layer({\n\t\t\t\t\t\tname: 'Skybox',\n\t\t\t\t\t\tid: LAYERID_SKYBOX,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerUi = new Layer({\n\t\t\t\t\t\tname: 'UI',\n\t\t\t\t\t\tid: LAYERID_UI,\n\t\t\t\t\t\ttransparentSortMode: SORTMODE_MANUAL\n\t\t\t\t});\n\t\t\t\tthis.defaultLayerImmediate = new Layer({\n\t\t\t\t\t\tname: 'Immediate',\n\t\t\t\t\t\tid: LAYERID_IMMEDIATE,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tconst defaultLayerComposition = new LayerComposition('default');\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerWorld);\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerDepth);\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerSkybox);\n\t\t\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerWorld);\n\t\t\t\tdefaultLayerComposition.pushOpaque(this.defaultLayerImmediate);\n\t\t\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerImmediate);\n\t\t\t\tdefaultLayerComposition.pushTransparent(this.defaultLayerUi);\n\t\t\t\tthis.scene.layers = defaultLayerComposition;\n\t\t\t\tAreaLightLuts.createPlaceholder(graphicsDevice);\n\t\t\t\tthis.renderer = new ForwardRenderer(graphicsDevice, this.scene);\n\t\t\t\tif (lightmapper) {\n\t\t\t\t\t\tthis.lightmapper = new lightmapper(graphicsDevice, this.root, this.scene, this.renderer, this.assets);\n\t\t\t\t\t\tthis.once('prerender', this._firstBake, this);\n\t\t\t\t}\n\t\t\t\tif (batchManager) {\n\t\t\t\t\t\tthis._batcher = new batchManager(graphicsDevice, this.root, this.scene);\n\t\t\t\t\t\tthis.once('prerender', this._firstBatch, this);\n\t\t\t\t}\n\t\t\t\tthis.keyboard = keyboard || null;\n\t\t\t\tthis.mouse = mouse || null;\n\t\t\t\tthis.touch = touch || null;\n\t\t\t\tthis.gamepads = gamepads || null;\n\t\t\t\tif (elementInput) {\n\t\t\t\t\t\tthis.elementInput = elementInput;\n\t\t\t\t\t\tthis.elementInput.app = this;\n\t\t\t\t}\n\t\t\t\tthis.xr = xr ? new xr(this) : null;\n\t\t\t\tif (this.elementInput) this.elementInput.attachSelectEvents();\n\t\t\t\tthis._scriptPrefix = scriptPrefix || '';\n\t\t\t\tif (this.enableBundles) {\n\t\t\t\t\t\tthis.loader.addHandler('bundle', new BundleHandler(this));\n\t\t\t\t}\n\t\t\t\tresourceHandlers.forEach((resourceHandler)=>{\n\t\t\t\t\t\tconst handler = new resourceHandler(this);\n\t\t\t\t\t\tthis.loader.addHandler(handler.handlerType, handler);\n\t\t\t\t});\n\t\t\t\tcomponentSystems.forEach((componentSystem)=>{\n\t\t\t\t\t\tthis.systems.add(new componentSystem(this));\n\t\t\t\t});\n\t\t\t\tthis._visibilityChangeHandler = this.onVisibilityChange.bind(this);\n\t\t\t\tif (typeof document !== 'undefined') {\n\t\t\t\t\t\tif (document.hidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'hidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t} else if (document.mozHidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'mozHidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('mozvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t} else if (document.msHidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'msHidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('msvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t} else if (document.webkitHidden !== undefined) {\n\t\t\t\t\t\t\t\tthis._hiddenAttr = 'webkitHidden';\n\t\t\t\t\t\t\t\tdocument.addEventListener('webkitvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.tick = makeTick(this);\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._applications = {};\n\t\t}\n\t\tstatic getApplication(id) {\n\t\t\t\treturn id ? AppBase._applications[id] : getApplication();\n\t\t}\n\t\t_initDefaultMaterial() {\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tmaterial.name = 'Default Material';\n\t\t\t\tsetDefaultMaterial(this.graphicsDevice, material);\n\t\t}\n\t\t_initProgramLibrary() {\n\t\t\t\tconst library = new ProgramLibrary(this.graphicsDevice, new StandardMaterial());\n\t\t\t\tsetProgramLibrary(this.graphicsDevice, library);\n\t\t}\n\t\tget soundManager() {\n\t\t\t\treturn this._soundManager;\n\t\t}\n\t\tget batcher() {\n\t\t\t\treturn this._batcher;\n\t\t}\n\t\tget fillMode() {\n\t\t\t\treturn this._fillMode;\n\t\t}\n\t\tget resolutionMode() {\n\t\t\t\treturn this._resolutionMode;\n\t\t}\n\t\tconfigure(url, callback) {\n\t\t\t\thttp.get(url, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst props = response.application_properties;\n\t\t\t\t\t\tconst scenes = response.scenes;\n\t\t\t\t\t\tconst assets = response.assets;\n\t\t\t\t\t\tthis._parseApplicationProperties(props, (err)=>{\n\t\t\t\t\t\t\t\tthis._parseScenes(scenes);\n\t\t\t\t\t\t\t\tthis._parseAssets(assets);\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t\tpreload(callback) {\n\t\t\t\tthis.fire('preload:start');\n\t\t\t\tconst assets = this.assets.list({\n\t\t\t\t\t\tpreload: true\n\t\t\t\t});\n\t\t\t\tif (assets.length === 0) {\n\t\t\t\t\t\tthis.fire('preload:end');\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet loadedCount = 0;\n\t\t\t\tconst onAssetLoadOrError = ()=>{\n\t\t\t\t\t\tloadedCount++;\n\t\t\t\t\t\tthis.fire('preload:progress', loadedCount / assets.length);\n\t\t\t\t\t\tif (loadedCount === assets.length) {\n\t\t\t\t\t\t\t\tthis.fire('preload:end');\n\t\t\t\t\t\t\t\tcallback();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tassets.forEach((asset)=>{\n\t\t\t\t\t\tif (!asset.loaded) {\n\t\t\t\t\t\t\t\tasset.once('load', onAssetLoadOrError);\n\t\t\t\t\t\t\t\tasset.once('error', onAssetLoadOrError);\n\t\t\t\t\t\t\t\tthis.assets.load(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tonAssetLoadOrError();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t_preloadScripts(sceneData, callback) {\n\t\t\t\tcallback();\n\t\t}\n\t\t_parseApplicationProperties(props, callback) {\n\t\t\t\tif (typeof props.maxAssetRetries === 'number' && props.maxAssetRetries > 0) {\n\t\t\t\t\t\tthis.loader.enableRetry(props.maxAssetRetries);\n\t\t\t\t}\n\t\t\t\tif (!props.useDevicePixelRatio) {\n\t\t\t\t\t\tprops.useDevicePixelRatio = props.use_device_pixel_ratio;\n\t\t\t\t}\n\t\t\t\tif (!props.resolutionMode) {\n\t\t\t\t\t\tprops.resolutionMode = props.resolution_mode;\n\t\t\t\t}\n\t\t\t\tif (!props.fillMode) {\n\t\t\t\t\t\tprops.fillMode = props.fill_mode;\n\t\t\t\t}\n\t\t\t\tthis._width = props.width;\n\t\t\t\tthis._height = props.height;\n\t\t\t\tif (props.useDevicePixelRatio) {\n\t\t\t\t\t\tthis.graphicsDevice.maxPixelRatio = window.devicePixelRatio;\n\t\t\t\t}\n\t\t\t\tthis.setCanvasResolution(props.resolutionMode, this._width, this._height);\n\t\t\t\tthis.setCanvasFillMode(props.fillMode, this._width, this._height);\n\t\t\t\tif (props.layers && props.layerOrder) {\n\t\t\t\t\t\tconst composition = new LayerComposition('application');\n\t\t\t\t\t\tconst layers = {};\n\t\t\t\t\t\tfor(const key in props.layers){\n\t\t\t\t\t\t\t\tconst data = props.layers[key];\n\t\t\t\t\t\t\t\tdata.id = parseInt(key, 10);\n\t\t\t\t\t\t\t\tdata.enabled = data.id !== LAYERID_DEPTH;\n\t\t\t\t\t\t\t\tlayers[key] = new Layer(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0, len = props.layerOrder.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst sublayer = props.layerOrder[i];\n\t\t\t\t\t\t\t\tconst layer = layers[sublayer.layer];\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tif (sublayer.transparent) {\n\t\t\t\t\t\t\t\t\t\tcomposition.pushTransparent(layer);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomposition.pushOpaque(layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomposition.subLayerEnabled[i] = sublayer.enabled;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.scene.layers = composition;\n\t\t\t\t}\n\t\t\t\tif (props.batchGroups) {\n\t\t\t\t\t\tconst batcher = this.batcher;\n\t\t\t\t\t\tif (batcher) {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = props.batchGroups.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst grp = props.batchGroups[i];\n\t\t\t\t\t\t\t\t\t\tbatcher.addGroup(grp.name, grp.dynamic, grp.maxAabbSize, grp.id, grp.layers);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (props.i18nAssets) {\n\t\t\t\t\t\tthis.i18n.assets = props.i18nAssets;\n\t\t\t\t}\n\t\t\t\tthis._loadLibraries(props.libraries, callback);\n\t\t}\n\t\t_loadLibraries(urls, callback) {\n\t\t\t\tconst len = urls.length;\n\t\t\t\tlet count = len;\n\t\t\t\tconst regex = /^https?:\\/\\//;\n\t\t\t\tif (len) {\n\t\t\t\t\t\tconst onLoad = (err, script)=>{\n\t\t\t\t\t\t\t\tcount--;\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t} else if (count === 0) {\n\t\t\t\t\t\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t\t\t\t\t\t\tcallback(null);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\tlet url = urls[i];\n\t\t\t\t\t\t\t\tif (!regex.test(url.toLowerCase()) && this._scriptPrefix) {\n\t\t\t\t\t\t\t\t\t\turl = path.join(this._scriptPrefix, url);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.loader.load(url, \"script\", onLoad);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t}\n\t\t_parseScenes(scenes) {\n\t\t\t\tif (!scenes) return;\n\t\t\t\tfor(let i = 0; i < scenes.length; i++){\n\t\t\t\t\t\tthis.scenes.add(scenes[i].name, scenes[i].url);\n\t\t\t\t}\n\t\t}\n\t\t_parseAssets(assets) {\n\t\t\t\tconst list = [];\n\t\t\t\tconst scriptsIndex = {};\n\t\t\t\tconst bundlesIndex = {};\n\t\t\t\tfor(let i = 0; i < this.scriptsOrder.length; i++){\n\t\t\t\t\t\tconst id = this.scriptsOrder[i];\n\t\t\t\t\t\tif (!assets[id]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscriptsIndex[id] = true;\n\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t}\n\t\t\t\tif (this.enableBundles) {\n\t\t\t\t\t\tfor(const id in assets){\n\t\t\t\t\t\t\t\tif (assets[id].type === 'bundle') {\n\t\t\t\t\t\t\t\t\t\tbundlesIndex[id] = true;\n\t\t\t\t\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const id in assets){\n\t\t\t\t\t\tif (scriptsIndex[id] || bundlesIndex[id]) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlist.push(assets[id]);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < list.length; i++){\n\t\t\t\t\t\tconst data = list[i];\n\t\t\t\t\t\tconst asset = new Asset(data.name, data.type, data.file, data.data);\n\t\t\t\t\t\tasset.id = parseInt(data.id, 10);\n\t\t\t\t\t\tasset.preload = data.preload ? data.preload : false;\n\t\t\t\t\t\tasset.loaded = data.type === \"script\" && data.data && data.data.loadingType > 0;\n\t\t\t\t\t\tasset.tags.add(data.tags);\n\t\t\t\t\t\tif (data.i18n) {\n\t\t\t\t\t\t\t\tfor(const locale in data.i18n){\n\t\t\t\t\t\t\t\t\t\tasset.addLocalizedAssetId(locale, data.i18n[locale]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.assets.add(asset);\n\t\t\t\t}\n\t\t}\n\t\tstart() {\n\t\t\t\tthis.frame = 0;\n\t\t\t\tthis.fire('start', {\n\t\t\t\t\t\ttimestamp: now(),\n\t\t\t\t\t\ttarget: this\n\t\t\t\t});\n\t\t\t\tif (!this._librariesLoaded) {\n\t\t\t\t\t\tthis.onLibrariesLoaded();\n\t\t\t\t}\n\t\t\t\tthis.systems.fire('initialize', this.root);\n\t\t\t\tthis.fire('initialize');\n\t\t\t\tthis.systems.fire('postInitialize', this.root);\n\t\t\t\tthis.systems.fire('postPostInitialize', this.root);\n\t\t\t\tthis.fire('postinitialize');\n\t\t\t\tthis.tick();\n\t\t}\n\t\tinputUpdate(dt) {\n\t\t\t\tif (this.controller) {\n\t\t\t\t\t\tthis.controller.update(dt);\n\t\t\t\t}\n\t\t\t\tif (this.mouse) {\n\t\t\t\t\t\tthis.mouse.update();\n\t\t\t\t}\n\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\tthis.keyboard.update();\n\t\t\t\t}\n\t\t\t\tif (this.gamepads) {\n\t\t\t\t\t\tthis.gamepads.update();\n\t\t\t\t}\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tthis.frame++;\n\t\t\t\tthis.graphicsDevice.update();\n\t\t\t\tthis.systems.fire(this._inTools ? 'toolsUpdate' : 'update', dt);\n\t\t\t\tthis.systems.fire('animationUpdate', dt);\n\t\t\t\tthis.systems.fire('postUpdate', dt);\n\t\t\t\tthis.fire('update', dt);\n\t\t\t\tthis.inputUpdate(dt);\n\t\t}\n\t\trender() {\n\t\t\t\tthis.updateCanvasSize();\n\t\t\t\tthis.graphicsDevice.frameStart();\n\t\t\t\tthis.fire('prerender');\n\t\t\t\tthis.root.syncHierarchy();\n\t\t\t\tif (this._batcher) {\n\t\t\t\t\t\tthis._batcher.updateAll();\n\t\t\t\t}\n\t\t\t\tthis.renderComposition(this.scene.layers);\n\t\t\t\tthis.fire('postrender');\n\t\t\t\tthis.graphicsDevice.frameEnd();\n\t\t}\n\t\trenderComposition(layerComposition) {\n\t\t\t\tthis.renderer.update(layerComposition);\n\t\t\t\tthis.renderer.buildFrameGraph(this.frameGraph, layerComposition);\n\t\t\t\tthis.frameGraph.render(this.graphicsDevice);\n\t\t}\n\t\t_fillFrameStatsBasic(now, dt, ms) {\n\t\t\t\tconst stats = this.stats.frame;\n\t\t\t\tstats.dt = dt;\n\t\t\t\tstats.ms = ms;\n\t\t\t\tif (now > stats._timeToCountFrames) {\n\t\t\t\t\t\tstats.fps = stats._fpsAccum;\n\t\t\t\t\t\tstats._fpsAccum = 0;\n\t\t\t\t\t\tstats._timeToCountFrames = now + 1000;\n\t\t\t\t} else {\n\t\t\t\t\t\tstats._fpsAccum++;\n\t\t\t\t}\n\t\t\t\tthis.stats.drawCalls.total = this.graphicsDevice._drawCallsPerFrame;\n\t\t\t\tthis.graphicsDevice._drawCallsPerFrame = 0;\n\t\t\t\tstats.gsplats = this.renderer._gsplatCount;\n\t\t}\n\t\t_fillFrameStats() {\n\t\t\t\tlet stats = this.stats.frame;\n\t\t\t\tstats.cameras = this.renderer._camerasRendered;\n\t\t\t\tstats.materials = this.renderer._materialSwitches;\n\t\t\t\tstats.shaders = this.graphicsDevice._shaderSwitchesPerFrame;\n\t\t\t\tstats.shadowMapUpdates = this.renderer._shadowMapUpdates;\n\t\t\t\tstats.shadowMapTime = this.renderer._shadowMapTime;\n\t\t\t\tstats.depthMapTime = this.renderer._depthMapTime;\n\t\t\t\tstats.forwardTime = this.renderer._forwardTime;\n\t\t\t\tconst prims = this.graphicsDevice._primsPerFrame;\n\t\t\t\tstats.triangles = prims[PRIMITIVE_TRIANGLES] / 3 + Math.max(prims[PRIMITIVE_TRISTRIP] - 2, 0) + Math.max(prims[PRIMITIVE_TRIFAN] - 2, 0);\n\t\t\t\tstats.cullTime = this.renderer._cullTime;\n\t\t\t\tstats.sortTime = this.renderer._sortTime;\n\t\t\t\tstats.skinTime = this.renderer._skinTime;\n\t\t\t\tstats.morphTime = this.renderer._morphTime;\n\t\t\t\tstats.lightClusters = this.renderer._lightClusters;\n\t\t\t\tstats.lightClustersTime = this.renderer._lightClustersTime;\n\t\t\t\tstats.otherPrimitives = 0;\n\t\t\t\tfor(let i = 0; i < prims.length; i++){\n\t\t\t\t\t\tif (i < PRIMITIVE_TRIANGLES) {\n\t\t\t\t\t\t\t\tstats.otherPrimitives += prims[i];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprims[i] = 0;\n\t\t\t\t}\n\t\t\t\tthis.renderer._camerasRendered = 0;\n\t\t\t\tthis.renderer._materialSwitches = 0;\n\t\t\t\tthis.renderer._shadowMapUpdates = 0;\n\t\t\t\tthis.graphicsDevice._shaderSwitchesPerFrame = 0;\n\t\t\t\tthis.renderer._cullTime = 0;\n\t\t\t\tthis.renderer._layerCompositionUpdateTime = 0;\n\t\t\t\tthis.renderer._lightClustersTime = 0;\n\t\t\t\tthis.renderer._sortTime = 0;\n\t\t\t\tthis.renderer._skinTime = 0;\n\t\t\t\tthis.renderer._morphTime = 0;\n\t\t\t\tthis.renderer._shadowMapTime = 0;\n\t\t\t\tthis.renderer._depthMapTime = 0;\n\t\t\t\tthis.renderer._forwardTime = 0;\n\t\t\t\tstats = this.stats.drawCalls;\n\t\t\t\tstats.forward = this.renderer._forwardDrawCalls;\n\t\t\t\tstats.culled = this.renderer._numDrawCallsCulled;\n\t\t\t\tstats.depth = 0;\n\t\t\t\tstats.shadow = this.renderer._shadowDrawCalls;\n\t\t\t\tstats.skinned = this.renderer._skinDrawCalls;\n\t\t\t\tstats.immediate = 0;\n\t\t\t\tstats.instanced = 0;\n\t\t\t\tstats.removedByInstancing = 0;\n\t\t\t\tstats.misc = stats.total - (stats.forward + stats.shadow);\n\t\t\t\tthis.renderer._depthDrawCalls = 0;\n\t\t\t\tthis.renderer._shadowDrawCalls = 0;\n\t\t\t\tthis.renderer._forwardDrawCalls = 0;\n\t\t\t\tthis.renderer._numDrawCallsCulled = 0;\n\t\t\t\tthis.renderer._skinDrawCalls = 0;\n\t\t\t\tthis.renderer._immediateRendered = 0;\n\t\t\t\tthis.renderer._instancedDrawCalls = 0;\n\t\t\t\tthis.stats.misc.renderTargetCreationTime = this.graphicsDevice.renderTargetCreationTime;\n\t\t\t\tstats = this.stats.particles;\n\t\t\t\tstats.updatesPerFrame = stats._updatesPerFrame;\n\t\t\t\tstats.frameTime = stats._frameTime;\n\t\t\t\tstats._updatesPerFrame = 0;\n\t\t\t\tstats._frameTime = 0;\n\t\t}\n\t\tsetCanvasFillMode(mode, width, height) {\n\t\t\t\tthis._fillMode = mode;\n\t\t\t\tthis.resizeCanvas(width, height);\n\t\t}\n\t\tsetCanvasResolution(mode, width, height) {\n\t\t\t\tthis._resolutionMode = mode;\n\t\t\t\tif (mode === RESOLUTION_AUTO && width === undefined) {\n\t\t\t\t\t\twidth = this.graphicsDevice.canvas.clientWidth;\n\t\t\t\t\t\theight = this.graphicsDevice.canvas.clientHeight;\n\t\t\t\t}\n\t\t\t\tthis.graphicsDevice.resizeCanvas(width, height);\n\t\t}\n\t\tisHidden() {\n\t\t\t\treturn document[this._hiddenAttr];\n\t\t}\n\t\tonVisibilityChange() {\n\t\t\t\tif (this.isHidden()) {\n\t\t\t\t\t\tif (this._soundManager) {\n\t\t\t\t\t\t\t\tthis._soundManager.suspend();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._soundManager) {\n\t\t\t\t\t\t\t\tthis._soundManager.resume();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tresizeCanvas(width, height) {\n\t\t\t\tif (!this._allowResize) return undefined;\n\t\t\t\tif (this.xr && this.xr.session) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst windowWidth = window.innerWidth;\n\t\t\t\tconst windowHeight = window.innerHeight;\n\t\t\t\tif (this._fillMode === FILLMODE_KEEP_ASPECT) {\n\t\t\t\t\t\tconst r = this.graphicsDevice.canvas.width / this.graphicsDevice.canvas.height;\n\t\t\t\t\t\tconst winR = windowWidth / windowHeight;\n\t\t\t\t\t\tif (r > winR) {\n\t\t\t\t\t\t\t\twidth = windowWidth;\n\t\t\t\t\t\t\t\theight = width / r;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\theight = windowHeight;\n\t\t\t\t\t\t\t\twidth = height * r;\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._fillMode === FILLMODE_FILL_WINDOW) {\n\t\t\t\t\t\twidth = windowWidth;\n\t\t\t\t\t\theight = windowHeight;\n\t\t\t\t}\n\t\t\t\tthis.graphicsDevice.canvas.style.width = `${width}px`;\n\t\t\t\tthis.graphicsDevice.canvas.style.height = `${height}px`;\n\t\t\t\tthis.updateCanvasSize();\n\t\t\t\treturn {\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height\n\t\t\t\t};\n\t\t}\n\t\tupdateCanvasSize() {\n\t\t\t\tif (!this._allowResize || this.xr?.active) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._resolutionMode === RESOLUTION_AUTO) {\n\t\t\t\t\t\tconst canvas = this.graphicsDevice.canvas;\n\t\t\t\t\t\tthis.graphicsDevice.resizeCanvas(canvas.clientWidth, canvas.clientHeight);\n\t\t\t\t}\n\t\t}\n\t\tonLibrariesLoaded() {\n\t\t\t\tthis._librariesLoaded = true;\n\t\t\t\tif (this.systems.rigidbody) {\n\t\t\t\t\t\tthis.systems.rigidbody.onLibraryLoaded();\n\t\t\t\t}\n\t\t}\n\t\tapplySceneSettings(settings) {\n\t\t\t\tlet asset;\n\t\t\t\tif (this.systems.rigidbody && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tconst [x, y, z] = settings.physics.gravity;\n\t\t\t\t\t\tthis.systems.rigidbody.gravity.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tthis.scene.applySettings(settings);\n\t\t\t\tif (settings.render.hasOwnProperty('skybox')) {\n\t\t\t\t\t\tif (settings.render.skybox) {\n\t\t\t\t\t\t\t\tasset = this.assets.get(settings.render.skybox);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis.setSkybox(asset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.assets.once(`add:${settings.render.skybox}`, this.setSkybox, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.setSkybox(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetAreaLightLuts(ltcMat1, ltcMat2) {\n\t\t\t\tif (ltcMat1 && ltcMat2) {\n\t\t\t\t\t\tAreaLightLuts.set(this.graphicsDevice, ltcMat1, ltcMat2);\n\t\t\t\t}\n\t\t}\n\t\tsetSkybox(asset) {\n\t\t\t\tif (asset !== this._skyboxAsset) {\n\t\t\t\t\t\tconst onSkyboxRemoved = ()=>{\n\t\t\t\t\t\t\t\tthis.setSkybox(null);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst onSkyboxChanged = ()=>{\n\t\t\t\t\t\t\t\tthis.scene.setSkybox(this._skyboxAsset ? this._skyboxAsset.resources : null);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (this._skyboxAsset) {\n\t\t\t\t\t\t\t\tthis.assets.off(`load:${this._skyboxAsset.id}`, onSkyboxChanged, this);\n\t\t\t\t\t\t\t\tthis.assets.off(`remove:${this._skyboxAsset.id}`, onSkyboxRemoved, this);\n\t\t\t\t\t\t\t\tthis._skyboxAsset.off('change', onSkyboxChanged, this);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._skyboxAsset = asset;\n\t\t\t\t\t\tif (this._skyboxAsset) {\n\t\t\t\t\t\t\t\tthis.assets.on(`load:${this._skyboxAsset.id}`, onSkyboxChanged, this);\n\t\t\t\t\t\t\t\tthis.assets.once(`remove:${this._skyboxAsset.id}`, onSkyboxRemoved, this);\n\t\t\t\t\t\t\t\tthis._skyboxAsset.on('change', onSkyboxChanged, this);\n\t\t\t\t\t\t\t\tif (this.scene.skyboxMip === 0 && !this._skyboxAsset.loadFaces) {\n\t\t\t\t\t\t\t\t\t\tthis._skyboxAsset.loadFaces = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.assets.load(this._skyboxAsset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonSkyboxChanged();\n\t\t\t\t}\n\t\t}\n\t\t_firstBake() {\n\t\t\t\tthis.lightmapper?.bake(null, this.scene.lightmapMode);\n\t\t}\n\t\t_firstBatch() {\n\t\t\t\tthis.batcher?.generate();\n\t\t}\n\t\t_processTimestamp(timestamp) {\n\t\t\t\treturn timestamp;\n\t\t}\n\t\tdrawLine(start, end, color, depthTest, layer) {\n\t\t\t\tthis.scene.drawLine(start, end, color, depthTest, layer);\n\t\t}\n\t\tdrawLines(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.drawLines(positions, colors, depthTest, layer);\n\t\t}\n\t\tdrawLineArrays(positions, colors, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.drawLineArrays(positions, colors, depthTest, layer);\n\t\t}\n\t\tdrawWireSphere(center, radius, color = Color.WHITE, segments = 20, depthTest = true, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawWireSphere(center, radius, color, segments, depthTest, layer);\n\t\t}\n\t\tdrawWireAlignedBox(minPoint, maxPoint, color = Color.WHITE, depthTest = true, layer = this.scene.defaultDrawLayer, mat) {\n\t\t\t\tthis.scene.immediate.drawWireAlignedBox(minPoint, maxPoint, color, depthTest, layer, mat);\n\t\t}\n\t\tdrawMeshInstance(meshInstance, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawMesh(null, null, null, meshInstance, layer);\n\t\t}\n\t\tdrawMesh(mesh, material, matrix, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawMesh(material, matrix, mesh, null, layer);\n\t\t}\n\t\tdrawQuad(matrix, material, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tthis.scene.immediate.drawMesh(material, matrix, this.scene.immediate.getQuadMesh(), null, layer);\n\t\t}\n\t\tdrawTexture(x, y, width, height, texture, material, layer = this.scene.defaultDrawLayer, filterable = true) {\n\t\t\t\tif (filterable === false && !this.graphicsDevice.isWebGPU) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst matrix = new Mat4();\n\t\t\t\tmatrix.setTRS(new Vec3(x, y, 0.0), Quat.IDENTITY, new Vec3(width, -height, 0.0));\n\t\t\t\tif (!material) {\n\t\t\t\t\t\tmaterial = new ShaderMaterial();\n\t\t\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\t\t\tmaterial.setParameter('colorMap', texture);\n\t\t\t\t\t\tmaterial.shaderDesc = filterable ? this.scene.immediate.getTextureShaderDesc(texture.encoding) : this.scene.immediate.getUnfilterableTextureShaderDesc();\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t}\n\t\t\t\tthis.drawQuad(matrix, material, layer);\n\t\t}\n\t\tdrawDepthTexture(x, y, width, height, layer = this.scene.defaultDrawLayer) {\n\t\t\t\tconst material = new ShaderMaterial();\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.shaderDesc = this.scene.immediate.getDepthTextureShaderDesc();\n\t\t\t\tmaterial.update();\n\t\t\t\tthis.drawTexture(x, y, width, height, null, material, layer);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this._inFrameUpdate) {\n\t\t\t\t\t\tthis._destroyRequested = true;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst canvasId = this.graphicsDevice.canvas.id;\n\t\t\t\tthis.fire('destroy', this);\n\t\t\t\tthis.off('librariesloaded');\n\t\t\t\tif (typeof document !== 'undefined') {\n\t\t\t\t\t\tdocument.removeEventListener('visibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\tdocument.removeEventListener('mozvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\tdocument.removeEventListener('msvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t\t\tdocument.removeEventListener('webkitvisibilitychange', this._visibilityChangeHandler, false);\n\t\t\t\t}\n\t\t\t\tthis._visibilityChangeHandler = null;\n\t\t\t\tthis.root.destroy();\n\t\t\t\tthis.root = null;\n\t\t\t\tif (this.mouse) {\n\t\t\t\t\t\tthis.mouse.off();\n\t\t\t\t\t\tthis.mouse.detach();\n\t\t\t\t\t\tthis.mouse = null;\n\t\t\t\t}\n\t\t\t\tif (this.keyboard) {\n\t\t\t\t\t\tthis.keyboard.off();\n\t\t\t\t\t\tthis.keyboard.detach();\n\t\t\t\t\t\tthis.keyboard = null;\n\t\t\t\t}\n\t\t\t\tif (this.touch) {\n\t\t\t\t\t\tthis.touch.off();\n\t\t\t\t\t\tthis.touch.detach();\n\t\t\t\t\t\tthis.touch = null;\n\t\t\t\t}\n\t\t\t\tif (this.elementInput) {\n\t\t\t\t\t\tthis.elementInput.detach();\n\t\t\t\t\t\tthis.elementInput = null;\n\t\t\t\t}\n\t\t\t\tif (this.gamepads) {\n\t\t\t\t\t\tthis.gamepads.destroy();\n\t\t\t\t\t\tthis.gamepads = null;\n\t\t\t\t}\n\t\t\t\tif (this.controller) {\n\t\t\t\t\t\tthis.controller = null;\n\t\t\t\t}\n\t\t\t\tthis.systems.destroy();\n\t\t\t\tif (this.scene.layers) {\n\t\t\t\t\t\tthis.scene.layers.destroy();\n\t\t\t\t}\n\t\t\t\tconst assets = this.assets.list();\n\t\t\t\tfor(let i = 0; i < assets.length; i++){\n\t\t\t\t\t\tassets[i].unload();\n\t\t\t\t\t\tassets[i].off();\n\t\t\t\t}\n\t\t\t\tthis.assets.off();\n\t\t\t\tthis.bundles.destroy();\n\t\t\t\tthis.bundles = null;\n\t\t\t\tthis.i18n.destroy();\n\t\t\t\tthis.i18n = null;\n\t\t\t\tconst scriptHandler = this.loader.getHandler(\"script\");\n\t\t\t\tscriptHandler?.clearCache();\n\t\t\t\tthis.loader.destroy();\n\t\t\t\tthis.loader = null;\n\t\t\t\tthis.scene.destroy();\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis.systems = null;\n\t\t\t\tthis.context = null;\n\t\t\t\tthis.scripts.destroy();\n\t\t\t\tthis.scripts = null;\n\t\t\t\tthis.scenes.destroy();\n\t\t\t\tthis.scenes = null;\n\t\t\t\tthis.lightmapper?.destroy();\n\t\t\t\tthis.lightmapper = null;\n\t\t\t\tif (this._batcher) {\n\t\t\t\t\t\tthis._batcher.destroy();\n\t\t\t\t\t\tthis._batcher = null;\n\t\t\t\t}\n\t\t\t\tthis._entityIndex = {};\n\t\t\t\tthis.defaultLayerDepth.onDisable = null;\n\t\t\t\tthis.defaultLayerDepth.onEnable = null;\n\t\t\t\tthis.defaultLayerDepth = null;\n\t\t\t\tthis.defaultLayerWorld = null;\n\t\t\t\tthis.xr?.end();\n\t\t\t\tthis.xr?.destroy();\n\t\t\t\tthis.renderer.destroy();\n\t\t\t\tthis.renderer = null;\n\t\t\t\tthis.graphicsDevice.destroy();\n\t\t\t\tthis.graphicsDevice = null;\n\t\t\t\tthis.tick = null;\n\t\t\t\tthis.off();\n\t\t\t\tthis._soundManager?.destroy();\n\t\t\t\tthis._soundManager = null;\n\t\t\t\tscript.app = null;\n\t\t\t\tAppBase._applications[canvasId] = null;\n\t\t\t\tif (getApplication() === this) {\n\t\t\t\t\t\tsetApplication(null);\n\t\t\t\t}\n\t\t\t\tAppBase.cancelTick(this);\n\t\t}\n\t\tstatic cancelTick(app) {\n\t\t\t\tif (app.frameRequestId) {\n\t\t\t\t\t\twindow.cancelAnimationFrame(app.frameRequestId);\n\t\t\t\t\t\tapp.frameRequestId = undefined;\n\t\t\t\t}\n\t\t}\n\t\tgetEntityFromIndex(guid) {\n\t\t\t\treturn this._entityIndex[guid];\n\t\t}\n\t\t_registerSceneImmediate(scene) {\n\t\t\t\tthis.on('postrender', scene.immediate.onPostRender, scene.immediate);\n\t\t}\n}\nconst makeTick = function(_app) {\n\t\tconst application = _app;\n\t\treturn function(timestamp, xrFrame) {\n\t\t\t\tif (!application.graphicsDevice) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (application.frameRequestId) {\n\t\t\t\t\t\tapplication.xr?.session?.cancelAnimationFrame(application.frameRequestId);\n\t\t\t\t\t\tcancelAnimationFrame(application.frameRequestId);\n\t\t\t\t\t\tapplication.frameRequestId = null;\n\t\t\t\t}\n\t\t\t\tapplication._inFrameUpdate = true;\n\t\t\t\tsetApplication(application);\n\t\t\t\tapp = application;\n\t\t\t\tconst currentTime = application._processTimestamp(timestamp) || now();\n\t\t\t\tconst ms = currentTime - (application._time || currentTime);\n\t\t\t\tlet dt = ms / 1000.0;\n\t\t\t\tdt = math.clamp(dt, 0, application.maxDeltaTime);\n\t\t\t\tdt *= application.timeScale;\n\t\t\t\tapplication._time = currentTime;\n\t\t\t\tif (application.xr?.session) {\n\t\t\t\t\t\tapplication.frameRequestId = application.xr.session.requestAnimationFrame(application.tick);\n\t\t\t\t} else {\n\t\t\t\t\t\tapplication.frameRequestId = platform.browser || platform.worker ? requestAnimationFrame(application.tick) : null;\n\t\t\t\t}\n\t\t\t\tif (application.graphicsDevice.contextLost) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tapplication._fillFrameStatsBasic(currentTime, dt, ms);\n\t\t\t\tapplication.fire('frameupdate', ms);\n\t\t\t\tlet skipUpdate = false;\n\t\t\t\tif (xrFrame) {\n\t\t\t\t\t\tskipUpdate = !application.xr?.update(xrFrame);\n\t\t\t\t\t\tapplication.graphicsDevice.defaultFramebuffer = xrFrame.session.renderState.baseLayer.framebuffer;\n\t\t\t\t} else {\n\t\t\t\t\t\tapplication.graphicsDevice.defaultFramebuffer = null;\n\t\t\t\t}\n\t\t\t\tif (!skipUpdate) {\n\t\t\t\t\t\tapplication.update(dt);\n\t\t\t\t\t\tapplication.fire('framerender');\n\t\t\t\t\t\tif (application.autoRender || application.renderNextFrame) {\n\t\t\t\t\t\t\t\tapplication.render();\n\t\t\t\t\t\t\t\tapplication.renderNextFrame = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tapplication.fire('frameend');\n\t\t\t\t}\n\t\t\t\tapplication._inFrameUpdate = false;\n\t\t\t\tif (application._destroyRequested) {\n\t\t\t\t\t\tapplication.destroy();\n\t\t\t\t}\n\t\t};\n};\n\nclass AppOptions {\n\t\tconstructor(){\n\t\t\t\tthis.componentSystems = [];\n\t\t\t\tthis.resourceHandlers = [];\n\t\t}\n}\n\nconst tempSphere = new BoundingSphere();\nclass BakeLight {\n\t\tconstructor(scene, light, lightingParams){\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.light = light;\n\t\t\t\tthis.store();\n\t\t\t\tlight.numCascades = 1;\n\t\t\t\tif (this.scene.clusteredLightingEnabled && !lightingParams.shadowsEnabled) {\n\t\t\t\t\t\tlight.castShadows = false;\n\t\t\t\t}\n\t\t\t\tif (light.type !== LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\tlight._node.getWorldTransform();\n\t\t\t\t\t\tlight.getBoundingSphere(tempSphere);\n\t\t\t\t\t\tthis.lightBounds = new BoundingBox();\n\t\t\t\t\t\tthis.lightBounds.center.copy(tempSphere.center);\n\t\t\t\t\t\tthis.lightBounds.halfExtents.set(tempSphere.radius, tempSphere.radius, tempSphere.radius);\n\t\t\t\t}\n\t\t}\n\t\tstore() {\n\t\t\t\tthis.mask = this.light.mask;\n\t\t\t\tthis.shadowUpdateMode = this.light.shadowUpdateMode;\n\t\t\t\tthis.enabled = this.light.enabled;\n\t\t\t\tthis.intensity = this.light.intensity;\n\t\t\t\tthis.rotation = this.light._node.getLocalRotation().clone();\n\t\t\t\tthis.numCascades = this.light.numCascades;\n\t\t\t\tthis.castShadows = this.light._castShadows;\n\t\t}\n\t\trestore() {\n\t\t\t\tconst light = this.light;\n\t\t\t\tlight.mask = this.mask;\n\t\t\t\tlight.shadowUpdateMode = this.shadowUpdateMode;\n\t\t\t\tlight.enabled = this.enabled;\n\t\t\t\tlight.intensity = this.intensity;\n\t\t\t\tlight._node.setLocalRotation(this.rotation);\n\t\t\t\tlight.numCascades = this.numCascades;\n\t\t\t\tlight._castShadows = this.castShadows;\n\t\t}\n\t\tstartBake() {\n\t\t\t\tthis.light.enabled = true;\n\t\t\t\tthis.light._destroyShadowMap();\n\t\t\t\tthis.light.beginFrame();\n\t\t}\n\t\tendBake(shadowMapCache) {\n\t\t\t\tconst light = this.light;\n\t\t\t\tlight.enabled = false;\n\t\t\t\tif (light.shadowMap) {\n\t\t\t\t\t\tif (light.shadowMap.cached) {\n\t\t\t\t\t\t\t\tshadowMapCache.add(light, light.shadowMap);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlight.shadowMap = null;\n\t\t\t\t}\n\t\t}\n}\n\nconst _tempPoint$1 = new Vec2();\nclass BakeLightSimple extends BakeLight {\n\t\tconstructor(lightmapper, light){\n\t\t\t\tsuper(lightmapper.scene, light, lightmapper.lightingParams);\n\t\t}\n\t\tget numVirtualLights() {\n\t\t\t\tif (this.light.type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\treturn this.light.bakeNumSamples;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t}\n\t\tprepareVirtualLight(index, numVirtualLights) {\n\t\t\t\tconst light = this.light;\n\t\t\t\tlight._node.setLocalRotation(this.rotation);\n\t\t\t\tif (index > 0) {\n\t\t\t\t\t\tconst directionalSpreadAngle = light.bakeArea;\n\t\t\t\t\t\trandom.circlePointDeterministic(_tempPoint$1, index, numVirtualLights);\n\t\t\t\t\t\t_tempPoint$1.mulScalar(directionalSpreadAngle * 0.5);\n\t\t\t\t\t\tlight._node.rotateLocal(_tempPoint$1.x, 0, _tempPoint$1.y);\n\t\t\t\t}\n\t\t\t\tlight._node.getWorldTransform();\n\t\t\t\tconst gamma = 2.2;\n\t\t\t\tconst linearIntensity = Math.pow(this.intensity, gamma);\n\t\t\t\tlight.intensity = Math.pow(linearIntensity / numVirtualLights, 1 / gamma);\n\t\t}\n}\n\nconst _tempPoint = new Vec3();\nclass BakeLightAmbient extends BakeLight {\n\t\tconstructor(lightmapper){\n\t\t\t\tconst scene = lightmapper.scene;\n\t\t\t\tconst lightEntity = new Entity('AmbientLight');\n\t\t\t\tlightEntity.addComponent('light', {\n\t\t\t\t\t\ttype: 'directional',\n\t\t\t\t\t\taffectDynamic: true,\n\t\t\t\t\t\taffectLightmapped: false,\n\t\t\t\t\t\tbake: true,\n\t\t\t\t\t\tbakeNumSamples: scene.ambientBakeNumSamples,\n\t\t\t\t\t\tcastShadows: true,\n\t\t\t\t\t\tnormalOffsetBias: 0.05,\n\t\t\t\t\t\tshadowBias: 0.2,\n\t\t\t\t\t\tshadowDistance: 1,\n\t\t\t\t\t\tshadowResolution: 2048,\n\t\t\t\t\t\tshadowType: SHADOW_PCF3_32F,\n\t\t\t\t\t\tcolor: Color.WHITE,\n\t\t\t\t\t\tintensity: 1,\n\t\t\t\t\t\tbakeDir: false\n\t\t\t\t});\n\t\t\t\tsuper(scene, lightEntity.light.light, lightmapper.lightingParams);\n\t\t}\n\t\tget numVirtualLights() {\n\t\t\t\treturn this.light.bakeNumSamples;\n\t\t}\n\t\tprepareVirtualLight(index, numVirtualLights) {\n\t\t\t\trandom.spherePointDeterministic(_tempPoint, index, numVirtualLights, 0, this.scene.ambientBakeSpherePart);\n\t\t\t\tthis.light._node.lookAt(_tempPoint.mulScalar(-1));\n\t\t\t\tthis.light._node.rotateLocal(90, 0, 0);\n\t\t\t\tconst gamma = 2.2;\n\t\t\t\tconst fullIntensity = 2 * Math.PI * this.scene.ambientBakeSpherePart;\n\t\t\t\tconst linearIntensity = Math.pow(fullIntensity, gamma);\n\t\t\t\tthis.light.intensity = Math.pow(linearIntensity / numVirtualLights, 1 / gamma);\n\t\t}\n}\n\nclass BakeMeshNode {\n\t\tconstructor(node, meshInstances = null){\n\t\t\t\tthis.node = node;\n\t\t\t\tthis.component = node.render || node.model;\n\t\t\t\tmeshInstances = meshInstances || this.component.meshInstances;\n\t\t\t\tthis.store();\n\t\t\t\tthis.meshInstances = meshInstances;\n\t\t\t\tthis.bounds = null;\n\t\t\t\tthis.renderTargets = [];\n\t\t}\n\t\tstore() {\n\t\t\t\tthis.castShadows = this.component.castShadows;\n\t\t}\n\t\trestore() {\n\t\t\t\tthis.component.castShadows = this.castShadows;\n\t\t}\n}\n\nvar glslBilateralDeNoisePS = `\nfloat normpdf3(in vec3 v, in float sigma) {\n\treturn 0.39894 * exp(-0.5 * dot(v, v) / (sigma * sigma)) / sigma;\n}\nvec3 decodeRGBM(vec4 rgbm) {\n\tvec3 color = (8.0 * rgbm.a) * rgbm.rgb;\n\treturn color * color;\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec4 encodeRGBM(vec3 color) {\n\tvec4 encoded;\n\tencoded.rgb = pow(color.rgb, vec3(0.5));\n\tencoded.rgb *= 1.0 / 8.0;\n\tencoded.a = saturate( max( max( encoded.r, encoded.g ), max( encoded.b, 1.0 / 255.0 ) ) );\n\tencoded.a = ceil(encoded.a * 255.0) / 255.0;\n\tencoded.rgb /= encoded.a;\n\treturn encoded;\n}\nvec3 decode(vec4 pixel) {\n\t#if HDR\n\t\treturn pixel.rgb;\n\t#else\n\t\treturn decodeRGBM(pixel);\n\t#endif\n}\nbool isUsed(vec4 pixel) {\n\t#if HDR\n\t\treturn any(greaterThan(pixel.rgb, vec3(0.0)));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\nuniform vec2 sigmas;\nuniform float bZnorm;\nuniform float kernel[{MSIZE}];\nvoid main(void) {\n\t\n\tvec4 pixel = texture2DLod(source, vUv0, 0.0);\n\tif (!isUsed(pixel)) {\n\t\tgl_FragColor = pixel;\n\t\treturn ;\n\t}\n\tfloat sigma = sigmas.x;\n\tfloat bSigma = sigmas.y;\n\tvec3 pixelHdr = decode(pixel);\n\tvec3 accumulatedHdr = vec3(0.0);\n\tfloat accumulatedFactor = 0.000001;\n\tconst int kSize = ({MSIZE} - 1) / 2;\n\tfor (int i = -kSize; i <= kSize; ++i) {\n\t\tfor (int j = -kSize; j <= kSize; ++j) {\n\t\t\t\n\t\t\tvec2 coord = vUv0 + vec2(float(i), float(j)) * pixelOffset;\n\t\t\tvec4 pix = texture2DLod(source, coord, 0.0);\n\t\t\tif (isUsed(pix)) {\n\t\t\t\tvec3 hdr = decode(pix);\n\t\t\t\tfloat factor = kernel[kSize + j] * kernel[kSize + i];\n\t\t\t\tfactor *= normpdf3(hdr - pixelHdr, bSigma) * bZnorm;\n\t\t\t\taccumulatedHdr += factor * hdr;\n\t\t\t\taccumulatedFactor += factor;\n\t\t\t}\n\t\t}\n\t}\n\tvec3 finalHDR = accumulatedHdr / accumulatedFactor;\n\t#if HDR\n\t\tgl_FragColor = vec4(finalHDR, 1.0);\n\t#else\n\t\tgl_FragColor = encodeRGBM(finalHDR);\n\t#endif\n}\n`;\n\nvar glslDilatePS = `\nvarying vec2 vUv0;\nuniform sampler2D source;\nuniform vec2 pixelOffset;\nbool isUsed(vec4 pixel) {\n\t#if HDR\n\t\treturn any(greaterThan(pixel.rgb, vec3(0.0)));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\nvoid main(void) {\n\tvec4 c = texture2DLod(source, vUv0, 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 - pixelOffset, 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(0, -pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(pixelOffset.x, -pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(-pixelOffset.x, 0), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(pixelOffset.x, 0), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(-pixelOffset.x, pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + vec2(0, pixelOffset.y), 0.0);\n\tc = isUsed(c) ? c : texture2DLod(source, vUv0 + pixelOffset, 0.0);\n\tgl_FragColor = c;\n}\n`;\n\nvar wgslBilateralDeNoisePS = `\nfn normpdf3(v: vec3f, sigma: f32) -> f32 {\n\treturn 0.39894 * exp(-0.5 * dot(v, v) / (sigma * sigma)) / sigma;\n}\nfn decodeRGBM(rgbm: vec4f) -> vec3f {\n\tlet color = (8.0 * rgbm.a) * rgbm.rgb;\n\treturn color * color;\n}\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nfn encodeRGBM(color: vec3f) -> vec4f {\n\tvar encoded: vec4f;\n\tlet rgb_processed = pow(color.rgb, vec3f(0.5)) * (1.0 / 8.0);\n\tencoded = vec4f(rgb_processed, 0.0);\n\tlet max_g_b = max( encoded.g, max( encoded.b, 1.0 / 255.0 ) );\n\tlet max_rgb = max( encoded.r, max_g_b );\n\tencoded.a = clamp(max_rgb, 0.0, 1.0);\n\tencoded.a = ceil(encoded.a * 255.0) / 255.0;\n\tencoded = vec4f(encoded.rgb / encoded.a, encoded.a);\n\treturn encoded;\n}\nfn decode(pixel: vec4f) -> vec3f {\n\t#if HDR\n\t\treturn pixel.rgb;\n\t#else\n\t\treturn decodeRGBM(pixel);\n\t#endif\n}\nfn isUsed(pixel: vec4f) -> bool {\n\t#if HDR\n\t\treturn any(pixel.rgb > vec3f(0.0));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\nuniform kernel: array<f32, {MSIZE}>;\nuniform pixelOffset: vec2f;\nuniform sigmas: vec2f;\nuniform bZnorm: f32;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet pixel = textureSampleLevel(source, sourceSampler, input.vUv0, 0.0);\n\tif (!isUsed(pixel)) {\n\t\toutput.color = pixel;\n\t\treturn output;\n\t}\n\tlet sigma = uniform.sigmas.x;\n\tlet bSigma = uniform.sigmas.y;\n\tlet pixelHdr = decode(pixel);\n\tvar accumulatedHdr = vec3f(0.0);\n\tvar accumulatedFactor = 0.000001;\n\tconst kSize = ({MSIZE} - 1) / 2;\n\tfor (var i: i32 = -kSize; i <= kSize; i = i + 1) {\n\t\tfor (var j: i32 = -kSize; j <= kSize; j = j + 1) {\n\t\t\tlet coord = input.vUv0 + vec2f(f32(i), f32(j)) * uniform.pixelOffset;\n\t\t\tlet pix = textureSampleLevel(source, sourceSampler, coord, 0.0);\n\t\t\tif (isUsed(pix)) {\n\t\t\t\tlet hdr = decode(pix);\n\t\t\t\tvar factor = uniform.kernel[u32(kSize + j)].element * uniform.kernel[u32(kSize + i)].element;\n\t\t\t\tfactor = factor * normpdf3(hdr - pixelHdr, bSigma) * uniform.bZnorm;\n\t\t\t\taccumulatedHdr = accumulatedHdr + factor * hdr;\n\t\t\t\taccumulatedFactor = accumulatedFactor + factor;\n\t\t\t}\n\t\t}\n\t}\n\tlet finalHDR = accumulatedHdr / accumulatedFactor;\n\t#if HDR\n\t\toutput.color = vec4f(finalHDR, 1.0);\n\t#else\n\t\toutput.color = encodeRGBM(finalHDR);\n\t#endif\n\treturn output;\n}\n`;\n\nvar wgslDilatePS = `\nvarying vUv0: vec2f;\nvar source: texture_2d<f32>;\nvar sourceSampler: sampler;\nuniform pixelOffset: vec2f;\nfn isUsed(pixel: vec4f) -> bool {\n\t#ifdef HDR\n\t\treturn any(pixel.rgb > vec3f(0.0));\n\t#else\n\t\treturn pixel.a > 0.0;\n\t#endif\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar c: vec4f = textureSampleLevel(source, sourceSampler, input.vUv0, 0.0);\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 - uniform.pixelOffset, 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(0.0, -uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(uniform.pixelOffset.x, -uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(-uniform.pixelOffset.x, 0.0), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(uniform.pixelOffset.x, 0.0), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(-uniform.pixelOffset.x, uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + vec2f(0.0, uniform.pixelOffset.y), 0.0), c, isUsed(c));\n\tc = select(textureSampleLevel(source, sourceSampler, input.vUv0 + uniform.pixelOffset, 0.0), c, isUsed(c));\n\tvar output: FragmentOutput;\n\toutput.color = c;\n\treturn output;\n}\n`;\n\nconst DENOISE_FILTER_SIZE = 15;\nconst lightmapFiltersChunksGLSL = {\n\t\tglslBilateralDeNoisePS,\n\t\tglslDilatePS\n};\nconst lightmapFiltersChunksWLSL = {\n\t\twgslBilateralDeNoisePS,\n\t\twgslDilatePS\n};\nclass LightmapFilters {\n\t\tconstructor(device){\n\t\t\t\tthis.shaderDilate = [];\n\t\t\t\tthis.shaderDenoise = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).add(lightmapFiltersChunksGLSL);\n\t\t\t\tShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).add(lightmapFiltersChunksWLSL);\n\t\t\t\tthis.constantTexSource = device.scope.resolve('source');\n\t\t\t\tthis.constantPixelOffset = device.scope.resolve('pixelOffset');\n\t\t\t\tthis.pixelOffset = new Float32Array(2);\n\t\t\t\tthis.sigmas = null;\n\t\t\t\tthis.constantSigmas = null;\n\t\t\t\tthis.kernel = null;\n\t\t}\n\t\tsetSourceTexture(texture) {\n\t\t\t\tthis.constantTexSource.setValue(texture);\n\t\t}\n\t\tprepare(textureWidth, textureHeight) {\n\t\t\t\tthis.pixelOffset[0] = 1 / textureWidth;\n\t\t\t\tthis.pixelOffset[1] = 1 / textureHeight;\n\t\t\t\tthis.constantPixelOffset.setValue(this.pixelOffset);\n\t\t}\n\t\tprepareDenoise(filterRange, filterSmoothness, bakeHDR) {\n\t\t\t\tconst index = bakeHDR ? 0 : 1;\n\t\t\t\tif (!this.shaderDenoise[index]) {\n\t\t\t\t\t\tconst defines = new Map();\n\t\t\t\t\t\tdefines.set('{MSIZE}', 15);\n\t\t\t\t\t\tif (bakeHDR) defines.set('HDR', '');\n\t\t\t\t\t\tthis.shaderDenoise[index] = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: `lmBilateralDeNoise-${bakeHDR ? 'hdr' : 'rgbm'}`,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tfragmentGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('glslBilateralDeNoisePS'),\n\t\t\t\t\t\t\t\tfragmentWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('wgslBilateralDeNoisePS'),\n\t\t\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.sigmas = new Float32Array(2);\n\t\t\t\t\t\tthis.constantSigmas = this.device.scope.resolve('sigmas');\n\t\t\t\t\t\tthis.constantKernel = this.device.scope.resolve('kernel[0]');\n\t\t\t\t\t\tthis.bZnorm = this.device.scope.resolve('bZnorm');\n\t\t\t\t}\n\t\t\t\tthis.sigmas[0] = filterRange;\n\t\t\t\tthis.sigmas[1] = filterSmoothness;\n\t\t\t\tthis.constantSigmas.setValue(this.sigmas);\n\t\t\t\tthis.evaluateDenoiseUniforms(filterRange, filterSmoothness);\n\t\t}\n\t\tgetDenoise(bakeHDR) {\n\t\t\t\tconst index = bakeHDR ? 0 : 1;\n\t\t\t\treturn this.shaderDenoise[index];\n\t\t}\n\t\tgetDilate(device, bakeHDR) {\n\t\t\t\tconst index = bakeHDR ? 0 : 1;\n\t\t\t\tif (!this.shaderDilate[index]) {\n\t\t\t\t\t\tconst define = bakeHDR ? '#define HDR\\n' : '';\n\t\t\t\t\t\tthis.shaderDilate[index] = ShaderUtils.createShader(device, {\n\t\t\t\t\t\t\t\tuniqueName: `lmDilate-${bakeHDR ? 'hdr' : 'rgbm'}`,\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tvertexWGSL: ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\t\t\tfragmentGLSL: define + ShaderChunks.get(this.device, SHADERLANGUAGE_GLSL).get('glslDilatePS'),\n\t\t\t\t\t\t\t\tfragmentWGSL: define + ShaderChunks.get(this.device, SHADERLANGUAGE_WGSL).get('wgslDilatePS')\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.shaderDilate[index];\n\t\t}\n\t\tevaluateDenoiseUniforms(filterRange, filterSmoothness) {\n\t\t\t\tfunction normpdf(x, sigma) {\n\t\t\t\t\t\treturn 0.39894 * Math.exp(-0.5 * x * x / (sigma * sigma)) / sigma;\n\t\t\t\t}\n\t\t\t\tthis.kernel = this.kernel || new Float32Array(DENOISE_FILTER_SIZE);\n\t\t\t\tconst kernel = this.kernel;\n\t\t\t\tconst kSize = Math.floor((DENOISE_FILTER_SIZE - 1) / 2);\n\t\t\t\tfor(let j = 0; j <= kSize; ++j){\n\t\t\t\t\t\tconst value = normpdf(j, filterRange);\n\t\t\t\t\t\tkernel[kSize + j] = value;\n\t\t\t\t\t\tkernel[kSize - j] = value;\n\t\t\t\t}\n\t\t\t\tthis.constantKernel.setValue(this.kernel);\n\t\t\t\tconst bZnorm = 1 / normpdf(0.0, filterSmoothness);\n\t\t\t\tthis.bZnorm.setValue(bZnorm);\n\t\t}\n}\n\nclass RenderPassLightmapper extends RenderPass {\n\t\tconstructor(device, renderer, camera, worldClusters, receivers, lightArray){\n\t\t\t\tsuper(device), this.viewBindGroups = [];\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.worldClusters = worldClusters;\n\t\t\t\tthis.receivers = receivers;\n\t\t\t\tthis.lightArray = lightArray;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.device;\n\t\t\t\tconst { renderer, camera, receivers, renderTarget, worldClusters, lightArray } = this;\n\t\t\t\trenderer.renderForwardLayer(camera, renderTarget, null, undefined, SHADER_FORWARD, this.viewBindGroups, {\n\t\t\t\t\t\tmeshInstances: receivers,\n\t\t\t\t\t\tsplitLights: lightArray,\n\t\t\t\t\t\tlightClusters: worldClusters\n\t\t\t\t});\n\t\t}\n}\n\nconst MAX_LIGHTMAP_SIZE = 2048;\nconst PASS_COLOR = 0;\nconst PASS_DIR = 1;\nconst tempVec$1 = new Vec3();\nclass Lightmapper {\n\t\tconstructor(device, root, scene, renderer, assets){\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.root = root;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.assets = assets;\n\t\t\t\tthis.shadowMapCache = renderer.shadowMapCache;\n\t\t\t\tthis._tempSet = new Set();\n\t\t\t\tthis._initCalled = false;\n\t\t\t\tthis.passMaterials = [];\n\t\t\t\tthis.ambientAOMaterial = null;\n\t\t\t\tthis.fog = '';\n\t\t\t\tthis.ambientLight = new Color();\n\t\t\t\tthis.renderTargets = new Map();\n\t\t\t\tthis.stats = {\n\t\t\t\t\t\trenderPasses: 0,\n\t\t\t\t\t\tlightmapCount: 0,\n\t\t\t\t\t\ttotalRenderTime: 0,\n\t\t\t\t\t\tforwardTime: 0,\n\t\t\t\t\t\tfboTime: 0,\n\t\t\t\t\t\tshadowMapTime: 0,\n\t\t\t\t\t\tcompileTime: 0,\n\t\t\t\t\t\tshadersLinked: 0\n\t\t\t\t};\n\t\t}\n\t\tdestroy() {\n\t\t\t\tLightmapCache.decRef(this.blackTex);\n\t\t\t\tthis.blackTex = null;\n\t\t\t\tLightmapCache.destroy();\n\t\t\t\tthis.device = null;\n\t\t\t\tthis.root = null;\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis.renderer = null;\n\t\t\t\tthis.assets = null;\n\t\t\t\tthis.camera?.destroy();\n\t\t\t\tthis.camera = null;\n\t\t}\n\t\tinitBake(device) {\n\t\t\t\tthis.bakeHDR = this.scene.lightmapPixelFormat !== PIXELFORMAT_RGBA8;\n\t\t\t\tif (!this._initCalled) {\n\t\t\t\t\t\tthis._initCalled = true;\n\t\t\t\t\t\tthis.lightmapFilters = new LightmapFilters(device);\n\t\t\t\t\t\tthis.constantBakeDir = device.scope.resolve('bakeDir');\n\t\t\t\t\t\tthis.materials = [];\n\t\t\t\t\t\tthis.blackTex = new Texture(this.device, {\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\t\t\ttype: TEXTURETYPE_RGBM,\n\t\t\t\t\t\t\t\tname: 'lightmapBlack'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tLightmapCache.incRef(this.blackTex);\n\t\t\t\t\t\tconst camera = new Camera();\n\t\t\t\t\t\tcamera.clearColor.set(0, 0, 0, 0);\n\t\t\t\t\t\tcamera.clearColorBuffer = true;\n\t\t\t\t\t\tcamera.clearDepthBuffer = false;\n\t\t\t\t\t\tcamera.clearStencilBuffer = false;\n\t\t\t\t\t\tcamera.frustumCulling = false;\n\t\t\t\t\t\tcamera.projection = PROJECTION_ORTHOGRAPHIC;\n\t\t\t\t\t\tcamera.aspectRatio = 1;\n\t\t\t\t\t\tcamera.node = new GraphNode();\n\t\t\t\t\t\tthis.camera = camera;\n\t\t\t\t\t\tthis.camera.shaderParams.gammaCorrection = GAMMA_NONE;\n\t\t\t\t\t\tthis.camera.shaderParams.toneMapping = TONEMAP_LINEAR;\n\t\t\t\t}\n\t\t\t\tif (this.scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tconst lightingParams = new LightingParams(device.supportsAreaLights, device.maxTextureSize, ()=>{});\n\t\t\t\t\t\tthis.lightingParams = lightingParams;\n\t\t\t\t\t\tconst srcParams = this.scene.lighting;\n\t\t\t\t\t\tlightingParams.shadowsEnabled = srcParams.shadowsEnabled;\n\t\t\t\t\t\tlightingParams.shadowAtlasResolution = srcParams.shadowAtlasResolution;\n\t\t\t\t\t\tlightingParams.cookiesEnabled = srcParams.cookiesEnabled;\n\t\t\t\t\t\tlightingParams.cookieAtlasResolution = srcParams.cookieAtlasResolution;\n\t\t\t\t\t\tlightingParams.areaLightsEnabled = srcParams.areaLightsEnabled;\n\t\t\t\t\t\tlightingParams.cells = new Vec3(3, 3, 3);\n\t\t\t\t\t\tlightingParams.maxLightsPerCell = 4;\n\t\t\t\t\t\tthis.worldClusters = new WorldClusters(device);\n\t\t\t\t\t\tthis.worldClusters.name = 'ClusterLightmapper';\n\t\t\t\t}\n\t\t}\n\t\tfinishBake(bakeNodes) {\n\t\t\t\tthis.materials = [];\n\t\t\t\tfunction destroyRT(rt) {\n\t\t\t\t\t\tLightmapCache.decRef(rt.colorBuffer);\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t\t\tthis.renderTargets.forEach((rt)=>{\n\t\t\t\t\t\tdestroyRT(rt);\n\t\t\t\t});\n\t\t\t\tthis.renderTargets.clear();\n\t\t\t\tbakeNodes.forEach((node)=>{\n\t\t\t\t\t\tnode.renderTargets.forEach((rt)=>{\n\t\t\t\t\t\t\t\tdestroyRT(rt);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tnode.renderTargets.length = 0;\n\t\t\t\t});\n\t\t\t\tthis.ambientAOMaterial = null;\n\t\t\t\tif (this.worldClusters) {\n\t\t\t\t\t\tthis.worldClusters.destroy();\n\t\t\t\t\t\tthis.worldClusters = null;\n\t\t\t\t}\n\t\t}\n\t\tcreateMaterialForPass(scene, pass, addAmbient) {\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tmaterial.name = `lmMaterial-pass:${pass}-ambient:${addAmbient}`;\n\t\t\t\tmaterial.setDefine('UV1LAYOUT', '');\n\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING', '');\n\t\t\t\tif (pass === PASS_COLOR) {\n\t\t\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING_COLOR', '');\n\t\t\t\t\t\tif (addAmbient) {\n\t\t\t\t\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING_ADD_AMBIENT', '');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaterial.ambient = new Color(0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.bakeHDR) material.setDefine('LIGHTMAP_RGBM', '');\n\t\t\t\t\t\tmaterial.lightMap = this.blackTex;\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial.setDefine('LIT_LIGHTMAP_BAKING_DIR', '');\n\t\t\t\t\t\tmaterial.setDefine('STD_LIGHTMAP_DIR', '');\n\t\t\t\t}\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.forceUv1 = true;\n\t\t\t\tmaterial.update();\n\t\t\t\treturn material;\n\t\t}\n\t\tcreateMaterials(device, scene, passCount) {\n\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\tif (!this.passMaterials[pass]) {\n\t\t\t\t\t\t\t\tthis.passMaterials[pass] = this.createMaterialForPass(scene, pass, false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.ambientAOMaterial) {\n\t\t\t\t\t\tthis.ambientAOMaterial = this.createMaterialForPass(scene, 0, true);\n\t\t\t\t\t\tthis.ambientAOMaterial.onUpdateShader = function(options) {\n\t\t\t\t\t\t\t\toptions.litOptions.lightMapWithoutAmbient = true;\n\t\t\t\t\t\t\t\toptions.litOptions.separateAmbient = true;\n\t\t\t\t\t\t\t\treturn options;\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tcreateTexture(size, name) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\twidth: size,\n\t\t\t\t\t\theight: size,\n\t\t\t\t\t\tformat: this.scene.lightmapPixelFormat,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\ttype: this.bakeHDR ? TEXTURETYPE_DEFAULT : TEXTURETYPE_RGBM,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: name\n\t\t\t\t});\n\t\t}\n\t\tcollectModels(node, bakeNodes, allNodes) {\n\t\t\t\tif (!node.enabled) return;\n\t\t\t\tlet meshInstances;\n\t\t\t\tif (node.model?.model && node.model?.enabled) {\n\t\t\t\t\t\tif (allNodes) allNodes.push(new BakeMeshNode(node));\n\t\t\t\t\t\tif (node.model.lightmapped) {\n\t\t\t\t\t\t\t\tif (bakeNodes) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = node.model.model.meshInstances;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (node.render?.enabled) {\n\t\t\t\t\t\tif (allNodes) allNodes.push(new BakeMeshNode(node));\n\t\t\t\t\t\tif (node.render.lightmapped) {\n\t\t\t\t\t\t\t\tif (bakeNodes) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = node.render.meshInstances;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\tlet hasUv1 = true;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tif (!meshInstances[i].mesh.vertexBuffer.format.hasUv1) {\n\t\t\t\t\t\t\t\t\t\thasUv1 = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (hasUv1) {\n\t\t\t\t\t\t\t\tconst notInstancedMeshInstances = [];\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst mesh = meshInstances[i].mesh;\n\t\t\t\t\t\t\t\t\t\tif (this._tempSet.has(mesh)) {\n\t\t\t\t\t\t\t\t\t\t\t\tbakeNodes.push(new BakeMeshNode(node, [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances[i]\n\t\t\t\t\t\t\t\t\t\t\t\t]));\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tnotInstancedMeshInstances.push(meshInstances[i]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis._tempSet.add(mesh);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._tempSet.clear();\n\t\t\t\t\t\t\t\tif (notInstancedMeshInstances.length > 0) {\n\t\t\t\t\t\t\t\t\t\tbakeNodes.push(new BakeMeshNode(node, notInstancedMeshInstances));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < node._children.length; i++){\n\t\t\t\t\t\tthis.collectModels(node._children[i], bakeNodes, allNodes);\n\t\t\t\t}\n\t\t}\n\t\tprepareShadowCasters(nodes) {\n\t\t\t\tconst casters = [];\n\t\t\t\tfor(let n = 0; n < nodes.length; n++){\n\t\t\t\t\t\tconst component = nodes[n].component;\n\t\t\t\t\t\tcomponent.castShadows = component.castShadowsLightmap;\n\t\t\t\t\t\tif (component.castShadowsLightmap) {\n\t\t\t\t\t\t\t\tconst meshes = nodes[n].meshInstances;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\t\t\t\t\tmeshes[i].visibleThisFrame = true;\n\t\t\t\t\t\t\t\t\t\tcasters.push(meshes[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn casters;\n\t\t}\n\t\tupdateTransforms(nodes) {\n\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tconst meshInstances = nodes[i].meshInstances;\n\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\tmeshInstances[j].node.getWorldTransform();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcalculateLightmapSize(node) {\n\t\t\t\tlet data;\n\t\t\t\tconst sizeMult = this.scene.lightmapSizeMultiplier || 16;\n\t\t\t\tconst scale = tempVec$1;\n\t\t\t\tlet srcArea, lightmapSizeMultiplier;\n\t\t\t\tif (node.model) {\n\t\t\t\t\t\tlightmapSizeMultiplier = node.model.lightmapSizeMultiplier;\n\t\t\t\t\t\tif (node.model.asset) {\n\t\t\t\t\t\t\t\tdata = this.assets.get(node.model.asset).data;\n\t\t\t\t\t\t\t\tif (data.area) {\n\t\t\t\t\t\t\t\t\t\tsrcArea = data.area;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (node.model._area) {\n\t\t\t\t\t\t\t\tdata = node.model;\n\t\t\t\t\t\t\t\tif (data._area) {\n\t\t\t\t\t\t\t\t\t\tsrcArea = data._area;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (node.render) {\n\t\t\t\t\t\tlightmapSizeMultiplier = node.render.lightmapSizeMultiplier;\n\t\t\t\t\t\tif (node.render.type !== 'asset') {\n\t\t\t\t\t\t\t\tif (node.render._area) {\n\t\t\t\t\t\t\t\t\t\tdata = node.render;\n\t\t\t\t\t\t\t\t\t\tif (data._area) {\n\t\t\t\t\t\t\t\t\t\t\t\tsrcArea = data._area;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst area = {\n\t\t\t\t\t\tx: 1,\n\t\t\t\t\t\ty: 1,\n\t\t\t\t\t\tz: 1,\n\t\t\t\t\t\tuv: 1\n\t\t\t\t};\n\t\t\t\tif (srcArea) {\n\t\t\t\t\t\tarea.x = srcArea.x;\n\t\t\t\t\t\tarea.y = srcArea.y;\n\t\t\t\t\t\tarea.z = srcArea.z;\n\t\t\t\t\t\tarea.uv = srcArea.uv;\n\t\t\t\t}\n\t\t\t\tconst areaMult = lightmapSizeMultiplier || 1;\n\t\t\t\tarea.x *= areaMult;\n\t\t\t\tarea.y *= areaMult;\n\t\t\t\tarea.z *= areaMult;\n\t\t\t\tconst component = node.render || node.model;\n\t\t\t\tconst bounds = this.computeNodeBounds(component.meshInstances);\n\t\t\t\tscale.copy(bounds.halfExtents);\n\t\t\t\tlet totalArea = area.x * scale.y * scale.z + area.y * scale.x * scale.z + area.z * scale.x * scale.y;\n\t\t\t\ttotalArea /= area.uv;\n\t\t\t\ttotalArea = Math.sqrt(totalArea);\n\t\t\t\tconst lightmapSize = Math.min(math.nextPowerOfTwo(totalArea * sizeMult), this.scene.lightmapMaxResolution || MAX_LIGHTMAP_SIZE);\n\t\t\t\treturn lightmapSize;\n\t\t}\n\t\tsetLightmapping(nodes, value, passCount, shaderDefs) {\n\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tconst node = nodes[i];\n\t\t\t\t\t\tconst meshInstances = node.meshInstances;\n\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\t\t\tmeshInstance.setLightmapped(value);\n\t\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\t\t\tif (shaderDefs) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance._shaderDefs |= shaderDefs;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmeshInstance.mask = MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst tex = node.renderTargets[pass].colorBuffer;\n\t\t\t\t\t\t\t\t\t\t\t\ttex.minFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\t\t\t\t\ttex.magFilter = FILTER_LINEAR;\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.setRealtimeLightmap(MeshInstance.lightmapParamNames[pass], tex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tbake(nodes, mode = BAKE_COLORDIR) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst startTime = now();\n\t\t\t\tthis.scene._updateSkyMesh();\n\t\t\t\tthis.stats.renderPasses = 0;\n\t\t\t\tthis.stats.shadowMapTime = 0;\n\t\t\t\tthis.stats.forwardTime = 0;\n\t\t\t\tconst startShaders = device._shaderStats.linked;\n\t\t\t\tconst startFboTime = device._renderTargetCreationTime;\n\t\t\t\tconst startCompileTime = device._shaderStats.compileTime;\n\t\t\t\tconst bakeNodes = [];\n\t\t\t\tconst allNodes = [];\n\t\t\t\tif (nodes) {\n\t\t\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\t\t\tthis.collectModels(nodes[i], bakeNodes, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.collectModels(this.root, null, allNodes);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.collectModels(this.root, bakeNodes, allNodes);\n\t\t\t\t}\n\t\t\t\tif (bakeNodes.length > 0) {\n\t\t\t\t\t\tthis.renderer.shadowRenderer.frameUpdate();\n\t\t\t\t\t\tconst passCount = mode === BAKE_COLORDIR ? 2 : 1;\n\t\t\t\t\t\tthis.setLightmapping(bakeNodes, false, passCount);\n\t\t\t\t\t\tthis.initBake(device);\n\t\t\t\t\t\tthis.bakeInternal(passCount, bakeNodes, allNodes);\n\t\t\t\t\t\tlet shaderDefs = SHADERDEF_LM;\n\t\t\t\t\t\tif (mode === BAKE_COLORDIR) {\n\t\t\t\t\t\t\t\tshaderDefs |= SHADERDEF_DIRLM;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.scene.ambientBake) {\n\t\t\t\t\t\t\t\tshaderDefs |= SHADERDEF_LMAMBIENT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.setLightmapping(bakeNodes, true, passCount, shaderDefs);\n\t\t\t\t\t\tthis.finishBake(bakeNodes);\n\t\t\t\t}\n\t\t\t\tconst nowTime = now();\n\t\t\t\tthis.stats.totalRenderTime = nowTime - startTime;\n\t\t\t\tthis.stats.shadersLinked = device._shaderStats.linked - startShaders;\n\t\t\t\tthis.stats.compileTime = device._shaderStats.compileTime - startCompileTime;\n\t\t\t\tthis.stats.fboTime = device._renderTargetCreationTime - startFboTime;\n\t\t\t\tthis.stats.lightmapCount = bakeNodes.length;\n\t\t}\n\t\tallocateTextures(bakeNodes, passCount) {\n\t\t\t\tfor(let i = 0; i < bakeNodes.length; i++){\n\t\t\t\t\t\tconst bakeNode = bakeNodes[i];\n\t\t\t\t\t\tconst size = this.calculateLightmapSize(bakeNode.node);\n\t\t\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\tconst tex = this.createTexture(size, `lightmapper_lightmap_${i}`);\n\t\t\t\t\t\t\t\tLightmapCache.incRef(tex);\n\t\t\t\t\t\t\t\tbakeNode.renderTargets[pass] = new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tcolorBuffer: tex,\n\t\t\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.renderTargets.has(size)) {\n\t\t\t\t\t\t\t\tconst tex = this.createTexture(size, `lightmapper_temp_lightmap_${size}`);\n\t\t\t\t\t\t\t\tLightmapCache.incRef(tex);\n\t\t\t\t\t\t\t\tthis.renderTargets.set(size, new RenderTarget({\n\t\t\t\t\t\t\t\t\t\tcolorBuffer: tex,\n\t\t\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepareLightsToBake(allLights, bakeLights) {\n\t\t\t\tif (this.scene.ambientBake) {\n\t\t\t\t\t\tconst ambientLight = new BakeLightAmbient(this);\n\t\t\t\t\t\tbakeLights.push(ambientLight);\n\t\t\t\t}\n\t\t\t\tconst sceneLights = this.renderer.lights;\n\t\t\t\tfor(let i = 0; i < sceneLights.length; i++){\n\t\t\t\t\t\tconst light = sceneLights[i];\n\t\t\t\t\t\tconst bakeLight = new BakeLightSimple(this, light);\n\t\t\t\t\t\tallLights.push(bakeLight);\n\t\t\t\t\t\tif (light.enabled && (light.mask & MASK_BAKE) !== 0) {\n\t\t\t\t\t\t\t\tlight.mask = MASK_BAKE | MASK_AFFECT_LIGHTMAPPED | MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\t\t\tlight.shadowUpdateMode = light.type === LIGHTTYPE_DIRECTIONAL ? SHADOWUPDATE_REALTIME : SHADOWUPDATE_THISFRAME;\n\t\t\t\t\t\t\t\tbakeLights.push(bakeLight);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbakeLights.sort();\n\t\t}\n\t\trestoreLights(allLights) {\n\t\t\t\tfor(let i = 0; i < allLights.length; i++){\n\t\t\t\t\t\tallLights[i].restore();\n\t\t\t\t}\n\t\t}\n\t\tsetupScene() {\n\t\t\t\tthis.ambientLight.copy(this.scene.ambientLight);\n\t\t\t\tif (!this.scene.ambientBake) {\n\t\t\t\t\t\tthis.scene.ambientLight.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tthis.renderer.setSceneConstants();\n\t\t\t\tthis.device.scope.resolve('ambientBakeOcclusionContrast').setValue(this.scene.ambientBakeOcclusionContrast);\n\t\t\t\tthis.device.scope.resolve('ambientBakeOcclusionBrightness').setValue(this.scene.ambientBakeOcclusionBrightness);\n\t\t}\n\t\trestoreScene() {\n\t\t\t\tthis.scene.ambientLight.copy(this.ambientLight);\n\t\t}\n\t\tcomputeNodeBounds(meshInstances) {\n\t\t\t\tconst bounds = new BoundingBox();\n\t\t\t\tif (meshInstances.length > 0) {\n\t\t\t\t\t\tbounds.copy(meshInstances[0].aabb);\n\t\t\t\t\t\tfor(let m = 1; m < meshInstances.length; m++){\n\t\t\t\t\t\t\t\tbounds.add(meshInstances[m].aabb);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bounds;\n\t\t}\n\t\tcomputeNodesBounds(nodes) {\n\t\t\t\tfor(let i = 0; i < nodes.length; i++){\n\t\t\t\t\t\tconst meshInstances = nodes[i].meshInstances;\n\t\t\t\t\t\tnodes[i].bounds = this.computeNodeBounds(meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tcomputeBounds(meshInstances) {\n\t\t\t\tconst bounds = new BoundingBox();\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tbounds.copy(meshInstances[0].aabb);\n\t\t\t\t\t\tfor(let m = 1; m < meshInstances.length; m++){\n\t\t\t\t\t\t\t\tbounds.add(meshInstances[m].aabb);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn bounds;\n\t\t}\n\t\tbackupMaterials(meshInstances) {\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tthis.materials[i] = meshInstances[i].material;\n\t\t\t\t}\n\t\t}\n\t\trestoreMaterials(meshInstances) {\n\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\tmeshInstances[i].material = this.materials[i];\n\t\t\t\t}\n\t\t}\n\t\tlightCameraPrepare(device, bakeLight) {\n\t\t\t\tconst light = bakeLight.light;\n\t\t\t\tlet shadowCam;\n\t\t\t\tif (light.type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tconst lightRenderData = light.getRenderData(null, 0);\n\t\t\t\t\t\tshadowCam = lightRenderData.shadowCamera;\n\t\t\t\t\t\tshadowCam._node.setPosition(light._node.getPosition());\n\t\t\t\t\t\tshadowCam._node.setRotation(light._node.getRotation());\n\t\t\t\t\t\tshadowCam._node.rotateLocal(-90, 0, 0);\n\t\t\t\t\t\tshadowCam.projection = PROJECTION_PERSPECTIVE;\n\t\t\t\t\t\tshadowCam.nearClip = light.attenuationEnd / 1000;\n\t\t\t\t\t\tshadowCam.farClip = light.attenuationEnd;\n\t\t\t\t\t\tshadowCam.aspectRatio = 1;\n\t\t\t\t\t\tshadowCam.fov = light._outerConeAngle * 2;\n\t\t\t\t\t\tthis.renderer.updateCameraFrustum(shadowCam);\n\t\t\t\t}\n\t\t\t\treturn shadowCam;\n\t\t}\n\t\tlightCameraPrepareAndCull(bakeLight, bakeNode, shadowCam, casterBounds) {\n\t\t\t\tconst light = bakeLight.light;\n\t\t\t\tlet lightAffectsNode = true;\n\t\t\t\tif (light.type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\ttempVec$1.copy(casterBounds.center);\n\t\t\t\t\t\ttempVec$1.y += casterBounds.halfExtents.y;\n\t\t\t\t\t\tthis.camera.node.setPosition(tempVec$1);\n\t\t\t\t\t\tthis.camera.node.setEulerAngles(-90, 0, 0);\n\t\t\t\t\t\tthis.camera.nearClip = 0;\n\t\t\t\t\t\tthis.camera.farClip = casterBounds.halfExtents.y * 2;\n\t\t\t\t\t\tconst frustumSize = Math.max(casterBounds.halfExtents.x, casterBounds.halfExtents.z);\n\t\t\t\t\t\tthis.camera.orthoHeight = frustumSize;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!bakeLight.lightBounds.intersects(bakeNode.bounds)) {\n\t\t\t\t\t\t\t\tlightAffectsNode = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (light.type === LIGHTTYPE_SPOT) {\n\t\t\t\t\t\tlet nodeVisible = false;\n\t\t\t\t\t\tconst meshInstances = bakeNode.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tif (meshInstances[i]._isVisible(shadowCam)) {\n\t\t\t\t\t\t\t\t\t\tnodeVisible = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!nodeVisible) {\n\t\t\t\t\t\t\t\tlightAffectsNode = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn lightAffectsNode;\n\t\t}\n\t\tsetupLightArray(lightArray, light) {\n\t\t\t\tlightArray[LIGHTTYPE_DIRECTIONAL].length = 0;\n\t\t\t\tlightArray[LIGHTTYPE_OMNI].length = 0;\n\t\t\t\tlightArray[LIGHTTYPE_SPOT].length = 0;\n\t\t\t\tlightArray[light.type][0] = light;\n\t\t\t\tlight.visibleThisFrame = true;\n\t\t}\n\t\trenderShadowMap(comp, shadowMapRendered, casters, bakeLight) {\n\t\t\t\tconst light = bakeLight.light;\n\t\t\t\tconst isClustered = this.scene.clusteredLightingEnabled;\n\t\t\t\tconst castShadow = light.castShadows && (!isClustered || this.scene.lighting.shadowsEnabled);\n\t\t\t\tif (!shadowMapRendered && castShadow) {\n\t\t\t\t\t\tif (!light.shadowMap && !isClustered) {\n\t\t\t\t\t\t\t\tlight.shadowMap = this.shadowMapCache.get(this.device, light);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light.type === LIGHTTYPE_DIRECTIONAL) {\n\t\t\t\t\t\t\t\tthis.renderer._shadowRendererDirectional.cull(light, comp, this.camera, casters);\n\t\t\t\t\t\t\t\tconst shadowPass = this.renderer._shadowRendererDirectional.getLightRenderPass(light, this.camera);\n\t\t\t\t\t\t\t\tshadowPass?.render();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.device.isWebGPU) {\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.renderer._shadowRendererLocal.cull(light, comp, casters);\n\t\t\t\t\t\t\t\tconst insideRenderPass = false;\n\t\t\t\t\t\t\t\tthis.renderer.shadowRenderer.render(light, this.camera, insideRenderPass);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tpostprocessTextures(device, bakeNodes, passCount) {\n\t\t\t\tconst numDilates2x = 1;\n\t\t\t\tconst dilateShader = this.lightmapFilters.getDilate(device, this.bakeHDR);\n\t\t\t\tlet denoiseShader;\n\t\t\t\tconst filterLightmap = this.scene.lightmapFilterEnabled;\n\t\t\t\tif (filterLightmap) {\n\t\t\t\t\t\tthis.lightmapFilters.prepareDenoise(this.scene.lightmapFilterRange, this.scene.lightmapFilterSmoothness, this.bakeHDR);\n\t\t\t\t\t\tdenoiseShader = this.lightmapFilters.getDenoise(this.bakeHDR);\n\t\t\t\t}\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState(null, null);\n\t\t\t\tfor(let node = 0; node < bakeNodes.length; node++){\n\t\t\t\t\t\tconst bakeNode = bakeNodes[node];\n\t\t\t\t\t\tfor(let pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\tconst nodeRT = bakeNode.renderTargets[pass];\n\t\t\t\t\t\t\t\tconst lightmap = nodeRT.colorBuffer;\n\t\t\t\t\t\t\t\tconst tempRT = this.renderTargets.get(lightmap.width);\n\t\t\t\t\t\t\t\tconst tempTex = tempRT.colorBuffer;\n\t\t\t\t\t\t\t\tthis.lightmapFilters.prepare(lightmap.width, lightmap.height);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < numDilates2x; i++){\n\t\t\t\t\t\t\t\t\t\tthis.lightmapFilters.setSourceTexture(lightmap);\n\t\t\t\t\t\t\t\t\t\tconst bilateralFilterEnabled = filterLightmap && pass === 0 && i === 0;\n\t\t\t\t\t\t\t\t\t\tdrawQuadWithShader(device, tempRT, bilateralFilterEnabled ? denoiseShader : dilateShader);\n\t\t\t\t\t\t\t\t\t\tthis.lightmapFilters.setSourceTexture(tempTex);\n\t\t\t\t\t\t\t\t\t\tdrawQuadWithShader(device, nodeRT, dilateShader);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tbakeInternal(passCount, bakeNodes, allNodes) {\n\t\t\t\tconst scene = this.scene;\n\t\t\t\tconst comp = scene.layers;\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\tthis.createMaterials(device, scene, passCount);\n\t\t\t\tthis.setupScene();\n\t\t\t\tcomp._update();\n\t\t\t\tthis.computeNodesBounds(bakeNodes);\n\t\t\t\tthis.allocateTextures(bakeNodes, passCount);\n\t\t\t\tthis.renderer.collectLights(comp);\n\t\t\t\tconst allLights = [], bakeLights = [];\n\t\t\t\tthis.prepareLightsToBake(allLights, bakeLights);\n\t\t\t\tthis.updateTransforms(allNodes);\n\t\t\t\tconst casters = this.prepareShadowCasters(allNodes);\n\t\t\t\tthis.renderer.updateCpuSkinMatrices(casters);\n\t\t\t\tthis.renderer.gpuUpdate(casters);\n\t\t\t\tconst casterBounds = this.computeBounds(casters);\n\t\t\t\tlet i, j, rcv, m;\n\t\t\t\tfor(i = 0; i < bakeNodes.length; i++){\n\t\t\t\t\t\tconst bakeNode = bakeNodes[i];\n\t\t\t\t\t\trcv = bakeNode.meshInstances;\n\t\t\t\t\t\tfor(j = 0; j < rcv.length; j++){\n\t\t\t\t\t\t\t\tm = rcv[j];\n\t\t\t\t\t\t\t\tm.setLightmapped(false);\n\t\t\t\t\t\t\t\tm.mask = MASK_BAKE;\n\t\t\t\t\t\t\t\tm.setRealtimeLightmap(MeshInstance.lightmapParamNames[0], this.blackTex);\n\t\t\t\t\t\t\t\tm.setRealtimeLightmap(MeshInstance.lightmapParamNames[1], this.blackTex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(j = 0; j < bakeLights.length; j++){\n\t\t\t\t\t\tbakeLights[j].light.enabled = false;\n\t\t\t\t}\n\t\t\t\tconst lightArray = [\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tlet pass, node;\n\t\t\t\tlet shadersUpdatedOn1stPass = false;\n\t\t\t\tfor(i = 0; i < bakeLights.length; i++){\n\t\t\t\t\t\tconst bakeLight = bakeLights[i];\n\t\t\t\t\t\tconst isAmbientLight = bakeLight instanceof BakeLightAmbient;\n\t\t\t\t\t\tconst isDirectional = bakeLight.light.type === LIGHTTYPE_DIRECTIONAL;\n\t\t\t\t\t\tlet numVirtualLights = bakeLight.numVirtualLights;\n\t\t\t\t\t\tif (passCount > 1 && numVirtualLights > 1 && bakeLight.light.bakeDir) {\n\t\t\t\t\t\t\t\tnumVirtualLights = 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let virtualLightIndex = 0; virtualLightIndex < numVirtualLights; virtualLightIndex++){\n\t\t\t\t\t\t\t\tif (numVirtualLights > 1) {\n\t\t\t\t\t\t\t\t\t\tbakeLight.prepareVirtualLight(virtualLightIndex, numVirtualLights);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbakeLight.startBake();\n\t\t\t\t\t\t\t\tlet shadowMapRendered = false;\n\t\t\t\t\t\t\t\tconst shadowCam = this.lightCameraPrepare(device, bakeLight);\n\t\t\t\t\t\t\t\tfor(node = 0; node < bakeNodes.length; node++){\n\t\t\t\t\t\t\t\t\t\tconst bakeNode = bakeNodes[node];\n\t\t\t\t\t\t\t\t\t\trcv = bakeNode.meshInstances;\n\t\t\t\t\t\t\t\t\t\tconst lightAffectsNode = this.lightCameraPrepareAndCull(bakeLight, bakeNode, shadowCam, casterBounds);\n\t\t\t\t\t\t\t\t\t\tif (!lightAffectsNode) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.setupLightArray(lightArray, bakeLight.light);\n\t\t\t\t\t\t\t\t\t\tconst clusterLights = isDirectional ? [] : [\n\t\t\t\t\t\t\t\t\t\t\t\tbakeLight.light\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.lightTextureAtlas.update(clusterLights, this.lightingParams);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tshadowMapRendered = this.renderShadowMap(comp, shadowMapRendered, casters, bakeLight);\n\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.worldClusters.update(clusterLights, this.lightingParams);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.backupMaterials(rcv);\n\t\t\t\t\t\t\t\t\t\tfor(pass = 0; pass < passCount; pass++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (pass > 0 && virtualLightIndex > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (isAmbientLight && pass > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst nodeRT = bakeNode.renderTargets[pass];\n\t\t\t\t\t\t\t\t\t\t\t\tconst lightmapSize = bakeNode.renderTargets[pass].colorBuffer.width;\n\t\t\t\t\t\t\t\t\t\t\t\tconst tempRT = this.renderTargets.get(lightmapSize);\n\t\t\t\t\t\t\t\t\t\t\t\tconst tempTex = tempRT.colorBuffer;\n\t\t\t\t\t\t\t\t\t\t\t\tif (pass === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshadersUpdatedOn1stPass = scene.updateShaders;\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (shadersUpdatedOn1stPass) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tscene.updateShaders = true;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tlet passMaterial = this.passMaterials[pass];\n\t\t\t\t\t\t\t\t\t\t\t\tif (isAmbientLight) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst lastVirtualLightForPass = virtualLightIndex + 1 === numVirtualLights;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (lastVirtualLightForPass && pass === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpassMaterial = this.ambientAOMaterial;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfor(j = 0; j < rcv.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trcv[j].material = passMaterial;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.updateShaders(rcv);\n\t\t\t\t\t\t\t\t\t\t\t\tif (pass === PASS_DIR) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.constantBakeDir.setValue(bakeLight.light.bakeDir ? 1 : 0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst renderPass = new RenderPassLightmapper(device, this.renderer, this.camera, clusteredLightingEnabled ? this.worldClusters : null, rcv, lightArray);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderPass.init(tempRT);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderPass.render();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderPass.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.setCamera(this.camera, tempRT, true);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.worldClusters.activate();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer._forwardTime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer._shadowMapTime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.renderer.renderForward(this.camera, tempRT, rcv, lightArray, SHADER_FORWARD);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.updateEnd();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbakeNode.renderTargets[pass] = tempRT;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.renderTargets.set(lightmapSize, nodeRT);\n\t\t\t\t\t\t\t\t\t\t\t\tfor(j = 0; j < rcv.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tm = rcv[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tm.setRealtimeLightmap(MeshInstance.lightmapParamNames[pass], tempTex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tm._shaderDefs |= SHADERDEF_LM;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.restoreMaterials(rcv);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbakeLight.endBake(this.shadowMapCache);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.postprocessTextures(device, bakeNodes, passCount);\n\t\t\t\tfor(node = 0; node < allNodes.length; node++){\n\t\t\t\t\t\tallNodes[node].restore();\n\t\t\t\t}\n\t\t\t\tthis.restoreLights(allLights);\n\t\t\t\tthis.restoreScene();\n\t\t\t\tif (!clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.shadowMapCache.clear();\n\t\t\t\t}\n\t\t}\n}\n\nclass Component extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.order = 0;\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper();\n\t\t\t\tthis.system = system;\n\t\t\t\tthis.entity = entity;\n\t\t\t\tif (this.system.schema && !this._accessorsBuilt) {\n\t\t\t\t\t\tthis.buildAccessors(this.system.schema);\n\t\t\t\t}\n\t\t\t\tthis.on('set', function(name, oldValue, newValue) {\n\t\t\t\t\t\tthis.fire(`set_${name}`, name, oldValue, newValue);\n\t\t\t\t});\n\t\t\t\tthis.on('set_enabled', this.onSetEnabled, this);\n\t\t}\n\t\tstatic _buildAccessors(obj, schema) {\n\t\t\t\tschema.forEach((descriptor)=>{\n\t\t\t\t\t\tconst name = typeof descriptor === 'object' ? descriptor.name : descriptor;\n\t\t\t\t\t\tObject.defineProperty(obj, name, {\n\t\t\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\t\t\treturn this.data[name];\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\t\t\tconst data = this.data;\n\t\t\t\t\t\t\t\t\t\tconst oldValue = data[name];\n\t\t\t\t\t\t\t\t\t\tdata[name] = value;\n\t\t\t\t\t\t\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tobj._accessorsBuilt = true;\n\t\t}\n\t\tbuildAccessors(schema) {\n\t\t\t\tComponent._buildAccessors(this, schema);\n\t\t}\n\t\tonSetEnabled(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tif (this.entity.enabled) {\n\t\t\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.onDisable();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {}\n\t\tonDisable() {}\n\t\tonPostStateChange() {}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {}\n\t\tget enabled() {\n\t\t\t\treturn true;\n\t\t}\n}\n\nclass ComponentSystem extends EventHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper();\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.store = {};\n\t\t\t\tthis.schema = [];\n\t\t}\n\t\taddComponent(entity, data = {}) {\n\t\t\t\tconst component = new this.ComponentType(this, entity);\n\t\t\t\tconst componentData = new this.DataType();\n\t\t\t\tthis.store[entity.getGuid()] = {\n\t\t\t\t\t\tentity: entity,\n\t\t\t\t\t\tdata: componentData\n\t\t\t\t};\n\t\t\t\tentity[this.id] = component;\n\t\t\t\tentity.c[this.id] = component;\n\t\t\t\tthis.initializeComponentData(component, data, []);\n\t\t\t\tthis.fire('add', entity, component);\n\t\t\t\treturn component;\n\t\t}\n\t\tremoveComponent(entity) {\n\t\t\t\tconst id = this.id;\n\t\t\t\tconst record = this.store[entity.getGuid()];\n\t\t\t\tconst component = entity.c[id];\n\t\t\t\tcomponent.fire('beforeremove');\n\t\t\t\tthis.fire('beforeremove', entity, component);\n\t\t\t\tdelete this.store[entity.getGuid()];\n\t\t\t\tentity[id] = undefined;\n\t\t\t\tdelete entity.c[id];\n\t\t\t\tthis.fire('remove', entity, record.data);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst src = this.store[entity.getGuid()];\n\t\t\t\treturn this.addComponent(clone, src.data);\n\t\t}\n\t\tinitializeComponentData(component, data = {}, properties) {\n\t\t\t\tfor(let i = 0, len = properties.length; i < len; i++){\n\t\t\t\t\t\tconst descriptor = properties[i];\n\t\t\t\t\t\tlet name, type;\n\t\t\t\t\t\tif (typeof descriptor === 'object') {\n\t\t\t\t\t\t\t\tname = descriptor.name;\n\t\t\t\t\t\t\t\ttype = descriptor.type;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tname = descriptor;\n\t\t\t\t\t\t\t\ttype = undefined;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet value = data[name];\n\t\t\t\t\t\tif (value !== undefined) {\n\t\t\t\t\t\t\t\tif (type !== undefined) {\n\t\t\t\t\t\t\t\t\t\tvalue = convertValue(value, type);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomponent[name] = value;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent[name] = component.data[name];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\t\t\tcomponent.onEnable();\n\t\t\t\t}\n\t\t}\n\t\tgetPropertiesOfType(type) {\n\t\t\t\tconst matchingProperties = [];\n\t\t\t\tconst schema = this.schema || [];\n\t\t\t\tschema.forEach((descriptor)=>{\n\t\t\t\t\t\tif (descriptor && typeof descriptor === 'object' && descriptor.type === type) {\n\t\t\t\t\t\t\t\tmatchingProperties.push(descriptor);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn matchingProperties;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.off();\n\t\t}\n}\nfunction convertValue(value, type) {\n\t\tif (!value) {\n\t\t\t\treturn value;\n\t\t}\n\t\tswitch(type){\n\t\t\t\tcase 'rgb':\n\t\t\t\t\t\tif (value instanceof Color) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Color(value[0], value[1], value[2]);\n\t\t\t\tcase 'rgba':\n\t\t\t\t\t\tif (value instanceof Color) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Color(value[0], value[1], value[2], value[3]);\n\t\t\t\tcase 'vec2':\n\t\t\t\t\t\tif (value instanceof Vec2) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Vec2(value[0], value[1]);\n\t\t\t\tcase 'vec3':\n\t\t\t\t\t\tif (value instanceof Vec3) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Vec3(value[0], value[1], value[2]);\n\t\t\t\tcase 'vec4':\n\t\t\t\t\t\tif (value instanceof Vec4) {\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new Vec4(value[0], value[1], value[2], value[3]);\n\t\t\t\tcase 'boolean':\n\t\t\t\tcase 'number':\n\t\t\t\tcase 'string':\n\t\t\t\t\t\treturn value;\n\t\t\t\tcase 'entity':\n\t\t\t\t\t\treturn value;\n\t\t\t\tdefault:\n\t\t\t\t\t\tthrow new Error(`Could not convert unhandled type: ${type}`);\n\t\t}\n}\n\nconst INTERPOLATION_STEP = 0;\nconst INTERPOLATION_LINEAR = 1;\nconst INTERPOLATION_CUBIC = 2;\n\nclass AnimCache {\n\t\tconstructor(){\n\t\t\t\tthis._left = Infinity;\n\t\t\t\tthis._right = -Infinity;\n\t\t\t\tthis._len = 0;\n\t\t\t\tthis._recip = 0;\n\t\t\t\tthis._p0 = 0;\n\t\t\t\tthis._p1 = 0;\n\t\t\t\tthis._t = 0;\n\t\t\t\tthis._hermite = {\n\t\t\t\t\t\tvalid: false,\n\t\t\t\t\t\tp0: 0,\n\t\t\t\t\t\tm0: 0,\n\t\t\t\t\t\tp1: 0,\n\t\t\t\t\t\tm1: 0\n\t\t\t\t};\n\t\t}\n\t\tupdate(time, input) {\n\t\t\t\tif (time < this._left || time >= this._right) {\n\t\t\t\t\t\tconst len = input.length;\n\t\t\t\t\t\tif (!len) {\n\t\t\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\t\t\tthis._len = 0;\n\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\tthis._p0 = this._p1 = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (time < input[0]) {\n\t\t\t\t\t\t\t\t\t\tthis._left = -Infinity;\n\t\t\t\t\t\t\t\t\t\tthis._right = input[0];\n\t\t\t\t\t\t\t\t\t\tthis._len = 0;\n\t\t\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\t\t\tthis._p0 = this._p1 = 0;\n\t\t\t\t\t\t\t\t} else if (time >= input[len - 1]) {\n\t\t\t\t\t\t\t\t\t\tthis._left = input[len - 1];\n\t\t\t\t\t\t\t\t\t\tthis._right = Infinity;\n\t\t\t\t\t\t\t\t\t\tthis._len = 0;\n\t\t\t\t\t\t\t\t\t\tthis._recip = 0;\n\t\t\t\t\t\t\t\t\t\tthis._p0 = this._p1 = len - 1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst index = this._findKey(time, input);\n\t\t\t\t\t\t\t\t\t\tthis._left = input[index];\n\t\t\t\t\t\t\t\t\t\tthis._right = input[index + 1];\n\t\t\t\t\t\t\t\t\t\tthis._len = this._right - this._left;\n\t\t\t\t\t\t\t\t\t\tconst diff = 1.0 / this._len;\n\t\t\t\t\t\t\t\t\t\tthis._recip = isFinite(diff) ? diff : 0;\n\t\t\t\t\t\t\t\t\t\tthis._p0 = index;\n\t\t\t\t\t\t\t\t\t\tthis._p1 = index + 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._t = this._recip === 0 ? 0 : (time - this._left) * this._recip;\n\t\t\t\tthis._hermite.valid = false;\n\t\t}\n\t\t_findKey(time, input) {\n\t\t\t\tlet index = 0;\n\t\t\t\twhile(time >= input[index + 1]){\n\t\t\t\t\t\tindex++;\n\t\t\t\t}\n\t\t\t\treturn index;\n\t\t}\n\t\teval(result, interpolation, output) {\n\t\t\t\tconst data = output._data;\n\t\t\t\tconst comp = output._components;\n\t\t\t\tconst idx0 = this._p0 * comp;\n\t\t\t\tif (interpolation === INTERPOLATION_STEP) {\n\t\t\t\t\t\tfor(let i = 0; i < comp; ++i){\n\t\t\t\t\t\t\t\tresult[i] = data[idx0 + i];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst t = this._t;\n\t\t\t\t\t\tconst idx1 = this._p1 * comp;\n\t\t\t\t\t\tswitch(interpolation){\n\t\t\t\t\t\t\t\tcase INTERPOLATION_LINEAR:\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < comp; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresult[i] = math.lerp(data[idx0 + i], data[idx1 + i], t);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase INTERPOLATION_CUBIC:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst hermite = this._hermite;\n\t\t\t\t\t\t\t\t\t\t\t\tif (!hermite.valid) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst t2 = t * t;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst twot = t + t;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst omt = 1 - t;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst omt2 = omt * omt;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.valid = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.p0 = (1 + twot) * omt2;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.m0 = t * omt2;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.p1 = t2 * (3 - twot);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thermite.m1 = t2 * (t - 1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst p0 = (this._p0 * 3 + 1) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tconst m0 = (this._p0 * 3 + 2) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tconst p1 = (this._p1 * 3 + 1) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tconst m1 = (this._p1 * 3 + 0) * comp;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < comp; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[i] = hermite.p0 * data[p0 + i] + hermite.m0 * data[m0 + i] * this._len + hermite.p1 * data[p1 + i] + hermite.m1 * data[m1 + i] * this._len;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimSnapshot {\n\t\tconstructor(animTrack){\n\t\t\t\tthis._name = `${animTrack.name}Snapshot`;\n\t\t\t\tthis._time = -1;\n\t\t\t\tthis._cache = [];\n\t\t\t\tthis._results = [];\n\t\t\t\tfor(let i = 0; i < animTrack._inputs.length; ++i){\n\t\t\t\t\t\tthis._cache[i] = new AnimCache();\n\t\t\t\t}\n\t\t\t\tconst curves = animTrack._curves;\n\t\t\t\tconst outputs = animTrack._outputs;\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst output = outputs[curve._output];\n\t\t\t\t\t\tconst storage = [];\n\t\t\t\t\t\tfor(let j = 0; j < output._components; ++j){\n\t\t\t\t\t\t\t\tstorage[j] = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._results[i] = storage;\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimClip {\n\t\tstatic{\n\t\t\t\tthis.eventFrame = {\n\t\t\t\t\t\tstart: 0,\n\t\t\t\t\t\tend: 0,\n\t\t\t\t\t\tresidual: 0\n\t\t\t\t};\n\t\t}\n\t\tconstructor(track, time, speed, playing, loop, eventHandler){\n\t\t\t\tthis._name = track.name;\n\t\t\t\tthis._track = track;\n\t\t\t\tthis._snapshot = new AnimSnapshot(track);\n\t\t\t\tthis._playing = playing;\n\t\t\t\tthis._time = time;\n\t\t\t\tthis._speed = speed;\n\t\t\t\tthis._loop = loop;\n\t\t\t\tthis._blendWeight = 1.0;\n\t\t\t\tthis._blendOrder = 0.0;\n\t\t\t\tthis._eventHandler = eventHandler;\n\t\t\t\tthis.alignCursorToCurrentTime();\n\t\t}\n\t\tset name(name) {\n\t\t\t\tthis._name = name;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset track(track) {\n\t\t\t\tthis._track = track;\n\t\t\t\tthis._snapshot = new AnimSnapshot(track);\n\t\t}\n\t\tget track() {\n\t\t\t\treturn this._track;\n\t\t}\n\t\tget snapshot() {\n\t\t\t\treturn this._snapshot;\n\t\t}\n\t\tset time(time) {\n\t\t\t\tthis._time = time;\n\t\t\t\tthis.alignCursorToCurrentTime();\n\t\t}\n\t\tget time() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\tset speed(speed) {\n\t\t\t\tconst signChanged = Math.sign(speed) !== Math.sign(this._speed);\n\t\t\t\tthis._speed = speed;\n\t\t\t\tif (signChanged) {\n\t\t\t\t\t\tthis.alignCursorToCurrentTime();\n\t\t\t\t}\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset loop(loop) {\n\t\t\t\tthis._loop = loop;\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tset blendWeight(blendWeight) {\n\t\t\t\tthis._blendWeight = blendWeight;\n\t\t}\n\t\tget blendWeight() {\n\t\t\t\treturn this._blendWeight;\n\t\t}\n\t\tset blendOrder(blendOrder) {\n\t\t\t\tthis._blendOrder = blendOrder;\n\t\t}\n\t\tget blendOrder() {\n\t\t\t\treturn this._blendOrder;\n\t\t}\n\t\tset eventCursor(value) {\n\t\t\t\tthis._eventCursor = value;\n\t\t}\n\t\tget eventCursor() {\n\t\t\t\treturn this._eventCursor;\n\t\t}\n\t\tget eventCursorEnd() {\n\t\t\t\treturn this.isReverse ? 0 : this._track.events.length - 1;\n\t\t}\n\t\tget nextEvent() {\n\t\t\t\treturn this._track.events[this._eventCursor];\n\t\t}\n\t\tget isReverse() {\n\t\t\t\treturn this._speed < 0;\n\t\t}\n\t\tnextEventAheadOfTime(time) {\n\t\t\t\tif (!this.nextEvent) return false;\n\t\t\t\treturn this.isReverse ? this.nextEvent.time <= time : this.nextEvent.time >= time;\n\t\t}\n\t\tnextEventBehindTime(time) {\n\t\t\t\tif (!this.nextEvent) return false;\n\t\t\t\tif (time === this.track.duration) {\n\t\t\t\t\t\treturn this.isReverse ? this.nextEvent.time >= time : this.nextEvent.time <= time;\n\t\t\t\t}\n\t\t\t\treturn this.isReverse ? this.nextEvent.time > time : this.nextEvent.time < time;\n\t\t}\n\t\tresetEventCursor() {\n\t\t\t\tthis._eventCursor = this.isReverse ? this._track.events.length - 1 : 0;\n\t\t}\n\t\tmoveEventCursor() {\n\t\t\t\tthis._eventCursor += this.isReverse ? -1 : 1;\n\t\t\t\tif (this._eventCursor >= this.track.events.length) {\n\t\t\t\t\t\tthis._eventCursor = 0;\n\t\t\t\t} else if (this._eventCursor < 0) {\n\t\t\t\t\t\tthis._eventCursor = this.track.events.length - 1;\n\t\t\t\t}\n\t\t}\n\t\tclipFrameTime(frameEndTime) {\n\t\t\t\tconst eventFrame = AnimClip.eventFrame;\n\t\t\t\teventFrame.start = 0;\n\t\t\t\teventFrame.end = frameEndTime;\n\t\t\t\teventFrame.residual = 0;\n\t\t\t\tif (this.isReverse) {\n\t\t\t\t\t\tif (frameEndTime < 0) {\n\t\t\t\t\t\t\t\teventFrame.start = this.track.duration;\n\t\t\t\t\t\t\t\teventFrame.end = 0;\n\t\t\t\t\t\t\t\teventFrame.residual = frameEndTime + this.track.duration;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (frameEndTime > this.track.duration) {\n\t\t\t\t\t\t\t\teventFrame.start = 0;\n\t\t\t\t\t\t\t\teventFrame.end = this.track.duration;\n\t\t\t\t\t\t\t\teventFrame.residual = frameEndTime - this.track.duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\talignCursorToCurrentTime() {\n\t\t\t\tthis.resetEventCursor();\n\t\t\t\twhile(this.nextEventBehindTime(this._time) && this._eventCursor !== this.eventCursorEnd){\n\t\t\t\t\t\tthis.moveEventCursor();\n\t\t\t\t}\n\t\t}\n\t\tfireNextEvent() {\n\t\t\t\tthis._eventHandler.fire(this.nextEvent.name, {\n\t\t\t\t\t\ttrack: this.track,\n\t\t\t\t\t\t...this.nextEvent\n\t\t\t\t});\n\t\t\t\tthis.moveEventCursor();\n\t\t}\n\t\tfireNextEventInFrame(frameStartTime, frameEndTime) {\n\t\t\t\tif (this.nextEventAheadOfTime(frameStartTime) && this.nextEventBehindTime(frameEndTime)) {\n\t\t\t\t\t\tthis.fireNextEvent();\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tactiveEventsForFrame(frameStartTime, frameEndTime) {\n\t\t\t\tconst eventFrame = AnimClip.eventFrame;\n\t\t\t\tthis.clipFrameTime(frameEndTime);\n\t\t\t\tconst initialCursor = this.eventCursor;\n\t\t\t\twhile(this.fireNextEventInFrame(frameStartTime, eventFrame.end)){\n\t\t\t\t\t\tif (initialCursor === this.eventCursor) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.loop && Math.abs(eventFrame.residual) > 0) {\n\t\t\t\t\t\tthis.activeEventsForFrame(eventFrame.start, eventFrame.residual);\n\t\t\t\t}\n\t\t}\n\t\tprogressForTime(time) {\n\t\t\t\treturn time * this._speed / this._track.duration;\n\t\t}\n\t\t_update(deltaTime) {\n\t\t\t\tif (this._playing) {\n\t\t\t\t\t\tlet time = this._time;\n\t\t\t\t\t\tconst duration = this._track.duration;\n\t\t\t\t\t\tconst speed = this._speed;\n\t\t\t\t\t\tconst loop = this._loop;\n\t\t\t\t\t\tif (this._track.events.length > 0 && duration > 0) {\n\t\t\t\t\t\t\t\tthis.activeEventsForFrame(time, time + speed * deltaTime);\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttime += speed * deltaTime;\n\t\t\t\t\t\tif (speed >= 0) {\n\t\t\t\t\t\t\t\tif (time > duration) {\n\t\t\t\t\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = time % duration || 0;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = this._track.duration;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (time < 0) {\n\t\t\t\t\t\t\t\t\t\tif (loop) {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = duration + (time % duration || 0);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\ttime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._time = time;\n\t\t\t\t}\n\t\t\t\tif (this._time !== this._snapshot._time) {\n\t\t\t\t\t\tthis._track.eval(this._time, this._snapshot);\n\t\t\t\t}\n\t\t}\n\t\tplay() {\n\t\t\t\tthis._playing = true;\n\t\t\t\tthis._time = 0;\n\t\t}\n\t\tstop() {\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._time = 0;\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._playing = false;\n\t\t}\n\t\tresume() {\n\t\t\t\tthis._playing = true;\n\t\t}\n\t\treset() {\n\t\t\t\tthis._time = 0;\n\t\t}\n}\n\nconst ANIM_INTERRUPTION_NONE = 'NONE';\nconst ANIM_INTERRUPTION_PREV = 'PREV_STATE';\nconst ANIM_INTERRUPTION_NEXT = 'NEXT_STATE';\nconst ANIM_INTERRUPTION_PREV_NEXT = 'PREV_STATE_NEXT_STATE';\nconst ANIM_INTERRUPTION_NEXT_PREV = 'NEXT_STATE_PREV_STATE';\nconst ANIM_GREATER_THAN = 'GREATER_THAN';\nconst ANIM_LESS_THAN = 'LESS_THAN';\nconst ANIM_GREATER_THAN_EQUAL_TO = 'GREATER_THAN_EQUAL_TO';\nconst ANIM_LESS_THAN_EQUAL_TO = 'LESS_THAN_EQUAL_TO';\nconst ANIM_EQUAL_TO = 'EQUAL_TO';\nconst ANIM_NOT_EQUAL_TO = 'NOT_EQUAL_TO';\nconst ANIM_PARAMETER_INTEGER = 'INTEGER';\nconst ANIM_PARAMETER_FLOAT = 'FLOAT';\nconst ANIM_PARAMETER_BOOLEAN = 'BOOLEAN';\nconst ANIM_PARAMETER_TRIGGER = 'TRIGGER';\nconst ANIM_BLEND_1D = '1D';\nconst ANIM_BLEND_2D_DIRECTIONAL = '2D_DIRECTIONAL';\nconst ANIM_BLEND_2D_CARTESIAN = '2D_CARTESIAN';\nconst ANIM_BLEND_DIRECT = 'DIRECT';\nconst ANIM_STATE_START = 'START';\nconst ANIM_STATE_END = 'END';\nconst ANIM_STATE_ANY = 'ANY';\nconst ANIM_CONTROL_STATES = [\n\t\tANIM_STATE_START,\n\t\tANIM_STATE_END,\n\t\tANIM_STATE_ANY\n];\nconst ANIM_LAYER_OVERWRITE = 'OVERWRITE';\nconst ANIM_LAYER_ADDITIVE = 'ADDITIVE';\n\nclass AnimBlend {\n\t\tstatic dot(a, b) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tlet result = 0;\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\tresult += a[i] * b[i];\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic normalize(a) {\n\t\t\t\tlet l = AnimBlend.dot(a, a);\n\t\t\t\tif (l > 0) {\n\t\t\t\t\t\tl = 1.0 / Math.sqrt(l);\n\t\t\t\t\t\tconst len = a.length;\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\ta[i] *= l;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstatic set(a, b, type) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tif (type === 'quaternion') {\n\t\t\t\t\t\tlet l = AnimBlend.dot(b, b);\n\t\t\t\t\t\tif (l > 0) {\n\t\t\t\t\t\t\t\tl = 1.0 / Math.sqrt(l);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\ta[i] = b[i] * l;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\t\t\ta[i] = b[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstatic blendVec(a, b, t, additive) {\n\t\t\t\tconst it = additive ? 1.0 : 1.0 - t;\n\t\t\t\tconst len = a.length;\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\ta[i] = a[i] * it + b[i] * t;\n\t\t\t\t}\n\t\t}\n\t\tstatic blendQuat(a, b, t, additive) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tconst it = additive ? 1.0 : 1.0 - t;\n\t\t\t\tif (AnimBlend.dot(a, b) < 0) {\n\t\t\t\t\t\tt = -t;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\t\t\ta[i] = a[i] * it + b[i] * t;\n\t\t\t\t}\n\t\t\t\tif (!additive) {\n\t\t\t\t\t\tAnimBlend.normalize(a);\n\t\t\t\t}\n\t\t}\n\t\tstatic blend(a, b, t, type, additive) {\n\t\t\t\tif (type === 'quaternion') {\n\t\t\t\t\t\tAnimBlend.blendQuat(a, b, t, additive);\n\t\t\t\t} else {\n\t\t\t\t\t\tAnimBlend.blendVec(a, b, t, additive);\n\t\t\t\t}\n\t\t}\n\t\tstatic stableSort(a, lessFunc) {\n\t\t\t\tconst len = a.length;\n\t\t\t\tfor(let i = 0; i < len - 1; ++i){\n\t\t\t\t\t\tfor(let j = i + 1; j < len; ++j){\n\t\t\t\t\t\t\t\tif (lessFunc(a[j], a[i])) {\n\t\t\t\t\t\t\t\t\t\tconst tmp = a[i];\n\t\t\t\t\t\t\t\t\t\ta[i] = a[j];\n\t\t\t\t\t\t\t\t\t\ta[j] = tmp;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimTargetValue {\n\t\tstatic{\n\t\t\t\tthis.TYPE_QUAT = 'quaternion';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.TYPE_VEC3 = 'vector3';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.q1 = new Quat();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.q2 = new Quat();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.q3 = new Quat();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.quatArr = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.vecArr = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.IDENTITY_QUAT_ARR = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t];\n\t\t}\n\t\tconstructor(component, type){\n\t\t\t\tthis._component = component;\n\t\t\t\tthis.mask = new Int8Array(component.layers.length);\n\t\t\t\tthis.weights = new Float32Array(component.layers.length);\n\t\t\t\tthis.totalWeight = 0;\n\t\t\t\tthis.counter = 0;\n\t\t\t\tthis.layerCounter = 0;\n\t\t\t\tthis.valueType = type;\n\t\t\t\tthis.dirty = true;\n\t\t\t\tthis.value = type === AnimTargetValue.TYPE_QUAT ? [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t] : [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.baseValue = null;\n\t\t\t\tthis.setter = null;\n\t\t}\n\t\tget _normalizeWeights() {\n\t\t\t\treturn this._component.normalizeWeights;\n\t\t}\n\t\tgetWeight(index) {\n\t\t\t\tif (this.dirty) this.updateWeights();\n\t\t\t\tif (this._normalizeWeights && this.totalWeight === 0 || !this.mask[index]) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t} else if (this._normalizeWeights) {\n\t\t\t\t\t\treturn this.weights[index] / this.totalWeight;\n\t\t\t\t}\n\t\t\t\treturn math.clamp(this.weights[index], 0, 1);\n\t\t}\n\t\t_layerBlendType(index) {\n\t\t\t\treturn this._component.layers[index].blendType;\n\t\t}\n\t\tsetMask(index, value) {\n\t\t\t\tthis.mask[index] = value;\n\t\t\t\tif (this._normalizeWeights) {\n\t\t\t\t\t\tif (this._component.layers[index].blendType === ANIM_LAYER_OVERWRITE) {\n\t\t\t\t\t\t\t\tthis.mask = this.mask.fill(0, 0, index);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.dirty = true;\n\t\t\t\t}\n\t\t}\n\t\tupdateWeights() {\n\t\t\t\tthis.totalWeight = 0;\n\t\t\t\tfor(let i = 0; i < this.weights.length; i++){\n\t\t\t\t\t\tthis.weights[i] = this._component.layers[i].weight;\n\t\t\t\t\t\tthis.totalWeight += this.mask[i] * this.weights[i];\n\t\t\t\t}\n\t\t\t\tthis.dirty = false;\n\t\t}\n\t\tupdateValue(index, value) {\n\t\t\t\tif (this.counter === 0) {\n\t\t\t\t\t\tAnimBlend.set(this.value, AnimTargetValue.IDENTITY_QUAT_ARR, this.valueType);\n\t\t\t\t\t\tif (!this._normalizeWeights) {\n\t\t\t\t\t\t\t\tAnimBlend.blend(this.value, this.baseValue, 1, this.valueType);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.mask[index] || this.getWeight(index) === 0) return;\n\t\t\t\tif (this._layerBlendType(index) === ANIM_LAYER_ADDITIVE && !this._normalizeWeights) {\n\t\t\t\t\t\tif (this.valueType === AnimTargetValue.TYPE_QUAT) {\n\t\t\t\t\t\t\t\tconst v = AnimTargetValue.q1.set(this.value[0], this.value[1], this.value[2], this.value[3]);\n\t\t\t\t\t\t\t\tconst aV1 = AnimTargetValue.q2.set(this.baseValue[0], this.baseValue[1], this.baseValue[2], this.baseValue[3]);\n\t\t\t\t\t\t\t\tconst aV2 = AnimTargetValue.q3.set(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t\t\tconst aV = aV1.invert().mul(aV2);\n\t\t\t\t\t\t\t\taV.slerp(Quat.IDENTITY, aV, this.getWeight(index));\n\t\t\t\t\t\t\t\tv.mul(aV);\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[0] = v.x;\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[1] = v.y;\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[2] = v.z;\n\t\t\t\t\t\t\t\tAnimTargetValue.quatArr[3] = v.w;\n\t\t\t\t\t\t\t\tAnimBlend.set(this.value, AnimTargetValue.quatArr, this.valueType);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tAnimTargetValue.vecArr[0] = value[0] - this.baseValue[0];\n\t\t\t\t\t\t\t\tAnimTargetValue.vecArr[1] = value[1] - this.baseValue[1];\n\t\t\t\t\t\t\t\tAnimTargetValue.vecArr[2] = value[2] - this.baseValue[2];\n\t\t\t\t\t\t\t\tAnimBlend.blend(this.value, AnimTargetValue.vecArr, this.getWeight(index), this.valueType, true);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tAnimBlend.blend(this.value, value, this.getWeight(index), this.valueType);\n\t\t\t\t}\n\t\t\t\tif (this.setter) this.setter(this.value);\n\t\t}\n\t\tunbind() {\n\t\t\t\tif (this.setter) {\n\t\t\t\t\t\tthis.setter(this.baseValue);\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimEvaluator {\n\t\tconstructor(binder){\n\t\t\t\tthis._binder = binder;\n\t\t\t\tthis._clips = [];\n\t\t\t\tthis._inputs = [];\n\t\t\t\tthis._outputs = [];\n\t\t\t\tthis._targets = {};\n\t\t}\n\t\tget clips() {\n\t\t\t\treturn this._clips;\n\t\t}\n\t\taddClip(clip) {\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tconst binder = this._binder;\n\t\t\t\tconst curves = clip.track.curves;\n\t\t\t\tconst snapshot = clip.snapshot;\n\t\t\t\tconst inputs = [];\n\t\t\t\tconst outputs = [];\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst paths = curve.paths;\n\t\t\t\t\t\tfor(let j = 0; j < paths.length; ++j){\n\t\t\t\t\t\t\t\tconst path = paths[j];\n\t\t\t\t\t\t\t\tconst resolved = binder.resolve(path);\n\t\t\t\t\t\t\t\tlet target = targets[resolved && resolved.targetPath || null];\n\t\t\t\t\t\t\t\tif (!target && resolved) {\n\t\t\t\t\t\t\t\t\t\ttarget = {\n\t\t\t\t\t\t\t\t\t\t\t\ttarget: resolved,\n\t\t\t\t\t\t\t\t\t\t\t\tvalue: [],\n\t\t\t\t\t\t\t\t\t\t\t\tcurves: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tblendCounter: 0\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < target.target.components; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\ttarget.value.push(0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\ttargets[resolved.targetPath] = target;\n\t\t\t\t\t\t\t\t\t\tif (binder.animComponent) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!binder.animComponent.targets[resolved.targetPath]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet type;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (resolved.targetPath.substring(resolved.targetPath.length - 13) === 'localRotation') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = AnimTargetValue.TYPE_QUAT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype = AnimTargetValue.TYPE_VEC3;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath] = new AnimTargetValue(binder.animComponent, type);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath].layerCounter++;\n\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[resolved.targetPath].setMask(binder.layerIndex, 1);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (target) {\n\t\t\t\t\t\t\t\t\t\ttarget.curves++;\n\t\t\t\t\t\t\t\t\t\tinputs.push(snapshot._results[i]);\n\t\t\t\t\t\t\t\t\t\toutputs.push(target);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._clips.push(clip);\n\t\t\t\tthis._inputs.push(inputs);\n\t\t\t\tthis._outputs.push(outputs);\n\t\t}\n\t\tremoveClip(index) {\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tconst binder = this._binder;\n\t\t\t\tconst clips = this._clips;\n\t\t\t\tconst clip = clips[index];\n\t\t\t\tconst curves = clip.track.curves;\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst paths = curve.paths;\n\t\t\t\t\t\tfor(let j = 0; j < paths.length; ++j){\n\t\t\t\t\t\t\t\tconst path = paths[j];\n\t\t\t\t\t\t\t\tconst target = this._binder.resolve(path);\n\t\t\t\t\t\t\t\tif (target) {\n\t\t\t\t\t\t\t\t\t\ttarget.curves--;\n\t\t\t\t\t\t\t\t\t\tif (target.curves === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tbinder.unresolve(path);\n\t\t\t\t\t\t\t\t\t\t\t\tdelete targets[target.targetPath];\n\t\t\t\t\t\t\t\t\t\t\t\tif (binder.animComponent) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbinder.animComponent.targets[target.targetPath].layerCounter--;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclips.splice(index, 1);\n\t\t\t\tthis._inputs.splice(index, 1);\n\t\t\t\tthis._outputs.splice(index, 1);\n\t\t}\n\t\tremoveClips() {\n\t\t\t\twhile(this._clips.length > 0){\n\t\t\t\t\t\tthis.removeClip(0);\n\t\t\t\t}\n\t\t}\n\t\tupdateClipTrack(name, animTrack) {\n\t\t\t\tthis._clips.forEach((clip)=>{\n\t\t\t\t\t\tif (clip.name.includes(name)) {\n\t\t\t\t\t\t\t\tclip.track = animTrack;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.rebind();\n\t\t}\n\t\tfindClip(name) {\n\t\t\t\tconst clips = this._clips;\n\t\t\t\tfor(let i = 0; i < clips.length; ++i){\n\t\t\t\t\t\tconst clip = clips[i];\n\t\t\t\t\t\tif (clip.name === name) {\n\t\t\t\t\t\t\t\treturn clip;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._binder.rebind();\n\t\t\t\tthis._targets = {};\n\t\t\t\tconst clips = [\n\t\t\t\t\t\t...this.clips\n\t\t\t\t];\n\t\t\t\tthis.removeClips();\n\t\t\t\tclips.forEach((clip)=>{\n\t\t\t\t\t\tthis.addClip(clip);\n\t\t\t\t});\n\t\t}\n\t\tassignMask(mask) {\n\t\t\t\treturn this._binder.assignMask(mask);\n\t\t}\n\t\tupdate(deltaTime, outputAnimation = true) {\n\t\t\t\tconst clips = this._clips;\n\t\t\t\tconst order = clips.map((c, i)=>{\n\t\t\t\t\t\treturn i;\n\t\t\t\t});\n\t\t\t\tAnimBlend.stableSort(order, (a, b)=>{\n\t\t\t\t\t\treturn clips[a].blendOrder < clips[b].blendOrder;\n\t\t\t\t});\n\t\t\t\tfor(let i = 0; i < order.length; ++i){\n\t\t\t\t\t\tconst index = order[i];\n\t\t\t\t\t\tconst clip = clips[index];\n\t\t\t\t\t\tconst inputs = this._inputs[index];\n\t\t\t\t\t\tconst outputs = this._outputs[index];\n\t\t\t\t\t\tconst blendWeight = clip.blendWeight;\n\t\t\t\t\t\tif (blendWeight > 0.0) {\n\t\t\t\t\t\t\t\tclip._update(deltaTime);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!outputAnimation) break;\n\t\t\t\t\t\tlet input;\n\t\t\t\t\t\tlet output;\n\t\t\t\t\t\tlet value;\n\t\t\t\t\t\tif (blendWeight >= 1.0) {\n\t\t\t\t\t\t\t\tfor(let j = 0; j < inputs.length; ++j){\n\t\t\t\t\t\t\t\t\t\tinput = inputs[j];\n\t\t\t\t\t\t\t\t\t\toutput = outputs[j];\n\t\t\t\t\t\t\t\t\t\tvalue = output.value;\n\t\t\t\t\t\t\t\t\t\tAnimBlend.set(value, input, output.target.type);\n\t\t\t\t\t\t\t\t\t\toutput.blendCounter++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (blendWeight > 0.0) {\n\t\t\t\t\t\t\t\tfor(let j = 0; j < inputs.length; ++j){\n\t\t\t\t\t\t\t\t\t\tinput = inputs[j];\n\t\t\t\t\t\t\t\t\t\toutput = outputs[j];\n\t\t\t\t\t\t\t\t\t\tvalue = output.value;\n\t\t\t\t\t\t\t\t\t\tif (output.blendCounter === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tAnimBlend.set(value, input, output.target.type);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tAnimBlend.blend(value, input, blendWeight, output.target.type);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toutput.blendCounter++;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst targets = this._targets;\n\t\t\t\tconst binder = this._binder;\n\t\t\t\tfor(const path in targets){\n\t\t\t\t\t\tif (targets.hasOwnProperty(path)) {\n\t\t\t\t\t\t\t\tconst target = targets[path];\n\t\t\t\t\t\t\t\tif (binder.animComponent && target.target.usesLayerBlending) {\n\t\t\t\t\t\t\t\t\t\tconst animTarget = binder.animComponent.targets[path];\n\t\t\t\t\t\t\t\t\t\tif (animTarget.counter === animTarget.layerCounter) {\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.counter = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!animTarget.path) {\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.path = path;\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.baseValue = target.target.get();\n\t\t\t\t\t\t\t\t\t\t\t\tanimTarget.setter = target.target.set;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tanimTarget.updateValue(binder.layerIndex, target.value);\n\t\t\t\t\t\t\t\t\t\tanimTarget.counter++;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttarget.target.set(target.value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttarget.blendCounter = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._binder.update(deltaTime);\n\t\t}\n}\n\nclass AnimEvents {\n\t\tconstructor(events){\n\t\t\t\tthis._events = [\n\t\t\t\t\t\t...events\n\t\t\t\t];\n\t\t\t\tthis._events.sort((a, b)=>a.time - b.time);\n\t\t}\n\t\tget events() {\n\t\t\t\treturn this._events;\n\t\t}\n}\n\nclass AnimTrack {\n\t\tstatic{\n\t\t\t\tthis.EMPTY = Object.freeze(new AnimTrack('empty', Number.MAX_VALUE, [], [], []));\n\t\t}\n\t\tconstructor(name, duration, inputs, outputs, curves, animEvents = new AnimEvents([])){\n\t\t\t\tthis._name = name;\n\t\t\t\tthis._duration = duration;\n\t\t\t\tthis._inputs = inputs;\n\t\t\t\tthis._outputs = outputs;\n\t\t\t\tthis._curves = curves;\n\t\t\t\tthis._animEvents = animEvents;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tget duration() {\n\t\t\t\treturn this._duration;\n\t\t}\n\t\tget inputs() {\n\t\t\t\treturn this._inputs;\n\t\t}\n\t\tget outputs() {\n\t\t\t\treturn this._outputs;\n\t\t}\n\t\tget curves() {\n\t\t\t\treturn this._curves;\n\t\t}\n\t\tset events(animEvents) {\n\t\t\t\tthis._animEvents = animEvents;\n\t\t}\n\t\tget events() {\n\t\t\t\treturn this._animEvents.events;\n\t\t}\n\t\teval(time, snapshot) {\n\t\t\t\tsnapshot._time = time;\n\t\t\t\tconst inputs = this._inputs;\n\t\t\t\tconst outputs = this._outputs;\n\t\t\t\tconst curves = this._curves;\n\t\t\t\tconst cache = snapshot._cache;\n\t\t\t\tconst results = snapshot._results;\n\t\t\t\tfor(let i = 0; i < inputs.length; ++i){\n\t\t\t\t\t\tcache[i].update(time, inputs[i]._data);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < curves.length; ++i){\n\t\t\t\t\t\tconst curve = curves[i];\n\t\t\t\t\t\tconst output = outputs[curve._output];\n\t\t\t\t\t\tconst result = results[i];\n\t\t\t\t\t\tcache[curve._input].eval(result, curve._interpolation, output);\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBinder {\n\t\tstatic joinPath(pathSegments, character) {\n\t\t\t\tcharacter = character || '.';\n\t\t\t\tconst escape = function(string) {\n\t\t\t\t\t\treturn string.replace(/\\\\/g, '\\\\\\\\').replace(new RegExp(`\\\\${character}`, 'g'), `\\\\${character}`);\n\t\t\t\t};\n\t\t\t\treturn pathSegments.map(escape).join(character);\n\t\t}\n\t\tstatic splitPath(path, character) {\n\t\t\t\tcharacter = character || '.';\n\t\t\t\tconst result = [];\n\t\t\t\tlet curr = '';\n\t\t\t\tlet i = 0;\n\t\t\t\twhile(i < path.length){\n\t\t\t\t\t\tlet c = path[i++];\n\t\t\t\t\t\tif (c === '\\\\' && i < path.length) {\n\t\t\t\t\t\t\t\tc = path[i++];\n\t\t\t\t\t\t\t\tif (c === '\\\\' || c === character) {\n\t\t\t\t\t\t\t\t\t\tcurr += c;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcurr += `\\\\${c}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (c === character) {\n\t\t\t\t\t\t\t\tresult.push(curr);\n\t\t\t\t\t\t\t\tcurr = '';\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcurr += c;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (curr.length > 0) {\n\t\t\t\t\t\tresult.push(curr);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tstatic encode(entityPath, component, propertyPath) {\n\t\t\t\treturn `${Array.isArray(entityPath) ? entityPath.join('/') : entityPath}/${component}/${Array.isArray(propertyPath) ? propertyPath.join('/') : propertyPath}`;\n\t\t}\n\t\tresolve(path) {\n\t\t\t\treturn null;\n\t\t}\n\t\tunresolve(path) {}\n\t\tupdate(deltaTime) {}\n}\n\nclass AnimTarget {\n\t\tconstructor(func, type, components, targetPath){\n\t\t\t\tif (func.set) {\n\t\t\t\t\t\tthis._set = func.set;\n\t\t\t\t\t\tthis._get = func.get;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._set = func;\n\t\t\t\t}\n\t\t\t\tthis._type = type;\n\t\t\t\tthis._components = components;\n\t\t\t\tthis._targetPath = targetPath;\n\t\t\t\tthis._isTransform = this._targetPath.substring(this._targetPath.length - 13) === 'localRotation' || this._targetPath.substring(this._targetPath.length - 13) === 'localPosition' || this._targetPath.substring(this._targetPath.length - 10) === 'localScale';\n\t\t\t\tthis._isWeight = this._targetPath.indexOf('weight.') !== -1;\n\t\t}\n\t\tget set() {\n\t\t\t\treturn this._set;\n\t\t}\n\t\tget get() {\n\t\t\t\treturn this._get;\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tget components() {\n\t\t\t\treturn this._components;\n\t\t}\n\t\tget targetPath() {\n\t\t\t\treturn this._targetPath;\n\t\t}\n\t\tget isTransform() {\n\t\t\t\treturn this._isTransform;\n\t\t}\n\t\tget isWeight() {\n\t\t\t\treturn this._isWeight;\n\t\t}\n\t\tget usesLayerBlending() {\n\t\t\t\treturn this._isTransform || this._isWeight;\n\t\t}\n}\n\nclass DefaultAnimBinder {\n\t\tconstructor(graph){\n\t\t\t\tthis._isPathInMask = (path, checkMaskValue)=>{\n\t\t\t\t\t\tconst maskItem = this._mask[path];\n\t\t\t\t\t\tif (!maskItem) return false;\n\t\t\t\t\t\telse if (maskItem.children || checkMaskValue && maskItem.value !== false) return true;\n\t\t\t\t\t\treturn false;\n\t\t\t\t};\n\t\t\t\tthis.graph = graph;\n\t\t\t\tif (!graph) return;\n\t\t\t\tthis._mask = null;\n\t\t\t\tconst nodes = {};\n\t\t\t\tconst flatten = function(node) {\n\t\t\t\t\t\tnodes[node.name] = node;\n\t\t\t\t\t\tfor(let i = 0; i < node.children.length; ++i){\n\t\t\t\t\t\t\t\tflatten(node.children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tflatten(graph);\n\t\t\t\tthis.nodes = nodes;\n\t\t\t\tthis.targetCache = {};\n\t\t\t\tconst findMeshInstances = function(node) {\n\t\t\t\t\t\tlet object = node;\n\t\t\t\t\t\twhile(object && !(object instanceof Entity)){\n\t\t\t\t\t\t\t\tobject = object.parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet meshInstances;\n\t\t\t\t\t\tif (object) {\n\t\t\t\t\t\t\t\tif (object.render) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = object.render.meshInstances;\n\t\t\t\t\t\t\t\t} else if (object.model) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances = object.model.meshInstances;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn meshInstances;\n\t\t\t\t};\n\t\t\t\tthis.nodeCounts = {};\n\t\t\t\tthis.activeNodes = [];\n\t\t\t\tthis.handlers = {\n\t\t\t\t\t\t'localPosition': function(node) {\n\t\t\t\t\t\t\t\tconst object = node.localPosition;\n\t\t\t\t\t\t\t\tconst func = function(value) {\n\t\t\t\t\t\t\t\t\t\tobject.set(...value);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 3, node, 'localPosition');\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'localRotation': function(node) {\n\t\t\t\t\t\t\t\tconst object = node.localRotation;\n\t\t\t\t\t\t\t\tconst func = function(value) {\n\t\t\t\t\t\t\t\t\t\tobject.set(...value);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'quaternion', 4, node, 'localRotation');\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'localScale': function(node) {\n\t\t\t\t\t\t\t\tconst object = node.localScale;\n\t\t\t\t\t\t\t\tconst func = function(value) {\n\t\t\t\t\t\t\t\t\t\tobject.set(...value);\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 3, node, 'localScale');\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'weight': function(node, weightName) {\n\t\t\t\t\t\t\t\tif (weightName.indexOf('name.') === 0) {\n\t\t\t\t\t\t\t\t\t\tweightName = weightName.replace('name.', '');\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tweightName = Number(weightName);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst meshInstances = findMeshInstances(node);\n\t\t\t\t\t\t\t\tconst instances = [];\n\t\t\t\t\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstances[i].node.name === node.name && meshInstances[i].morphInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstances.push(meshInstances[i].morphInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (instances.length > 0) {\n\t\t\t\t\t\t\t\t\t\tconst func = {\n\t\t\t\t\t\t\t\t\t\t\t\tset: (value)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < instances.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstances[i].setWeight(weightName, value[0]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\tget: ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tinstances[0].getWeight(weightName)\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'number', 1, node, `weight.${weightName}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'materialTexture': (node, textureName)=>{\n\t\t\t\t\t\t\t\tconst meshInstances = findMeshInstances(node);\n\t\t\t\t\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\t\t\t\t\tlet meshInstance;\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstances[i].node.name === node.name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance = meshInstances[i];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst func = (value)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst textureAsset = this.animComponent.system.app.assets.get(value[0]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (textureAsset && textureAsset.resource && textureAsset.type === 'texture') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material[textureName] = textureAsset.resource;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material.update();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t\t\treturn DefaultAnimBinder.createAnimTarget(func, 'vector', 1, node, 'materialTexture', 'material');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n\t\t_isPathActive(path) {\n\t\t\t\tif (!this._mask) return true;\n\t\t\t\tconst rootNodeNames = [\n\t\t\t\t\t\tpath.entityPath[0],\n\t\t\t\t\t\tthis.graph.name\n\t\t\t\t];\n\t\t\t\tfor(let j = 0; j < rootNodeNames.length; ++j){\n\t\t\t\t\t\tlet currEntityPath = rootNodeNames[j];\n\t\t\t\t\t\tif (this._isPathInMask(currEntityPath, path.entityPath.length === 1)) return true;\n\t\t\t\t\t\tfor(let i = 1; i < path.entityPath.length; i++){\n\t\t\t\t\t\t\t\tcurrEntityPath += `/${path.entityPath[i]}`;\n\t\t\t\t\t\t\t\tif (this._isPathInMask(currEntityPath, i === path.entityPath.length - 1)) return true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tfindNode(path) {\n\t\t\t\tif (!this._isPathActive(path)) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet node;\n\t\t\t\tif (this.graph) {\n\t\t\t\t\t\tnode = this.graph.findByPath(path.entityPath);\n\t\t\t\t\t\tif (!node) {\n\t\t\t\t\t\t\t\tnode = this.graph.findByPath(path.entityPath.slice(1));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!node) {\n\t\t\t\t\t\tnode = this.nodes[path.entityPath[path.entityPath.length - 1] || ''];\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t}\n\t\tstatic createAnimTarget(func, type, valueCount, node, propertyPath, componentType) {\n\t\t\t\tconst targetPath = AnimBinder.encode(node.path, componentType ? componentType : 'entity', propertyPath);\n\t\t\t\treturn new AnimTarget(func, type, valueCount, targetPath);\n\t\t}\n\t\tresolve(path) {\n\t\t\t\tconst encodedPath = AnimBinder.encode(path.entityPath, path.component, path.propertyPath);\n\t\t\t\tlet target = this.targetCache[encodedPath];\n\t\t\t\tif (target) return target;\n\t\t\t\tconst node = this.findNode(path);\n\t\t\t\tif (!node) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst handler = this.handlers[path.propertyPath];\n\t\t\t\tif (!handler) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\ttarget = handler(node);\n\t\t\t\tif (!target) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tthis.targetCache[encodedPath] = target;\n\t\t\t\tif (!this.nodeCounts[node.path]) {\n\t\t\t\t\t\tthis.activeNodes.push(node);\n\t\t\t\t\t\tthis.nodeCounts[node.path] = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.nodeCounts[node.path]++;\n\t\t\t\t}\n\t\t\t\treturn target;\n\t\t}\n\t\tunresolve(path) {\n\t\t\t\tif (path.component !== 'graph') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst node = this.nodes[path.entityPath[path.entityPath.length - 1] || ''];\n\t\t\t\tthis.nodeCounts[node.path]--;\n\t\t\t\tif (this.nodeCounts[node.path] === 0) {\n\t\t\t\t\t\tconst activeNodes = this.activeNodes;\n\t\t\t\t\t\tconst i = activeNodes.indexOf(node.node);\n\t\t\t\t\t\tconst len = activeNodes.length;\n\t\t\t\t\t\tif (i < len - 1) {\n\t\t\t\t\t\t\t\tactiveNodes[i] = activeNodes[len - 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tactiveNodes.pop();\n\t\t\t\t}\n\t\t}\n\t\tupdate(deltaTime) {\n\t\t\t\tconst activeNodes = this.activeNodes;\n\t\t\t\tfor(let i = 0; i < activeNodes.length; ++i){\n\t\t\t\t\t\tactiveNodes[i]._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\tassignMask(mask) {\n\t\t\t\tif (mask !== this._mask) {\n\t\t\t\t\t\tthis._mask = mask;\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n}\n\nclass AnimationComponent extends Component {\n\t\tset animations(value) {\n\t\t\t\tthis._animations = value;\n\t\t\t\tthis.onSetAnimations();\n\t\t}\n\t\tget animations() {\n\t\t\t\treturn this._animations;\n\t\t}\n\t\tset assets(value) {\n\t\t\t\tconst assets = this._assets;\n\t\t\t\tif (assets && assets.length) {\n\t\t\t\t\t\tfor(let i = 0; i < assets.length; i++){\n\t\t\t\t\t\t\t\tif (assets[i]) {\n\t\t\t\t\t\t\t\t\t\tconst asset = this.system.app.assets.get(assets[i]);\n\t\t\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.off('change', this.onAssetChanged, this);\n\t\t\t\t\t\t\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t\t\t\t\t\t\tconst animName = this.animationsIndex[asset.id];\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.currAnim === animName) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[animName];\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animationsIndex[asset.id];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._assets = value;\n\t\t\t\tconst assetIds = value.map((value)=>{\n\t\t\t\t\t\treturn value instanceof Asset ? value.id : value;\n\t\t\t\t});\n\t\t\t\tthis.loadAnimationAssets(assetIds);\n\t\t}\n\t\tget assets() {\n\t\t\t\treturn this._assets;\n\t\t}\n\t\tset currentTime(currentTime) {\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\tthis.skeleton.currentTime = currentTime;\n\t\t\t\t\t\tthis.skeleton.addTime(0);\n\t\t\t\t\t\tthis.skeleton.updateGraph();\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tconst clips = this.animEvaluator.clips;\n\t\t\t\t\t\tfor(let i = 0; i < clips.length; ++i){\n\t\t\t\t\t\t\t\tclips[i].time = currentTime;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget currentTime() {\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\treturn this.skeleton._time;\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tconst clips = this.animEvaluator.clips;\n\t\t\t\t\t\tif (clips.length > 0) {\n\t\t\t\t\t\t\t\treturn clips[clips.length - 1].time;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\tget duration() {\n\t\t\t\tif (this.currAnim) {\n\t\t\t\t\t\treturn this.animations[this.currAnim].duration;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = value;\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\tthis.skeleton.looping = value;\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tfor(let i = 0; i < this.animEvaluator.clips.length; ++i){\n\t\t\t\t\t\t\t\tthis.animEvaluator.clips[i].loop = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tplay(name, blendTime = 0) {\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.animations[name]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.prevAnim = this.currAnim;\n\t\t\t\tthis.currAnim = name;\n\t\t\t\tif (this.model) {\n\t\t\t\t\t\tif (!this.skeleton && !this.animEvaluator) {\n\t\t\t\t\t\t\t\tthis._createAnimationController();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst prevAnim = this.animations[this.prevAnim];\n\t\t\t\t\t\tconst currAnim = this.animations[this.currAnim];\n\t\t\t\t\t\tthis.blending = blendTime > 0 && !!this.prevAnim;\n\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\tthis.blend = 0;\n\t\t\t\t\t\t\t\tthis.blendSpeed = 1 / blendTime;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\t\t\tthis.fromSkel.animation = prevAnim;\n\t\t\t\t\t\t\t\t\t\tthis.fromSkel.addTime(this.skeleton._time);\n\t\t\t\t\t\t\t\t\t\tthis.toSkel.animation = currAnim;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.skeleton.animation = currAnim;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\t\t\tconst animEvaluator = this.animEvaluator;\n\t\t\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\t\t\twhile(animEvaluator.clips.length > 1){\n\t\t\t\t\t\t\t\t\t\t\t\tanimEvaluator.removeClip(0);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.animEvaluator.removeClips();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst clip = new AnimClip(this.animations[this.currAnim], 0, 1.0, true, this.loop);\n\t\t\t\t\t\t\t\tclip.name = this.currAnim;\n\t\t\t\t\t\t\t\tclip.blendWeight = this.blending ? 0 : 1;\n\t\t\t\t\t\t\t\tclip.reset();\n\t\t\t\t\t\t\t\tthis.animEvaluator.addClip(clip);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.playing = true;\n\t\t}\n\t\tgetAnimation(name) {\n\t\t\t\treturn this.animations[name];\n\t\t}\n\t\tsetModel(model) {\n\t\t\t\tif (model !== this.model) {\n\t\t\t\t\t\tthis._resetAnimationController();\n\t\t\t\t\t\tthis.model = model;\n\t\t\t\t\t\tif (this.animations && this.currAnim && this.animations[this.currAnim]) {\n\t\t\t\t\t\t\t\tthis.play(this.currAnim);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonSetAnimations() {\n\t\t\t\tconst modelComponent = this.entity.model;\n\t\t\t\tif (modelComponent) {\n\t\t\t\t\t\tconst m = modelComponent.model;\n\t\t\t\t\t\tif (m && m !== this.model) {\n\t\t\t\t\t\t\t\tthis.setModel(m);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!this.currAnim && this.activate && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tconst animationNames = Object.keys(this._animations);\n\t\t\t\t\t\tif (animationNames.length > 0) {\n\t\t\t\t\t\t\t\tthis.play(animationNames[0]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_resetAnimationController() {\n\t\t\t\tthis.skeleton = null;\n\t\t\t\tthis.fromSkel = null;\n\t\t\t\tthis.toSkel = null;\n\t\t\t\tthis.animEvaluator = null;\n\t\t}\n\t\t_createAnimationController() {\n\t\t\t\tconst model = this.model;\n\t\t\t\tconst animations = this.animations;\n\t\t\t\tlet hasJson = false;\n\t\t\t\tlet hasGlb = false;\n\t\t\t\tfor(const animation in animations){\n\t\t\t\t\t\tif (animations.hasOwnProperty(animation)) {\n\t\t\t\t\t\t\t\tconst anim = animations[animation];\n\t\t\t\t\t\t\t\tif (anim.constructor === AnimTrack) {\n\t\t\t\t\t\t\t\t\t\thasGlb = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\thasJson = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst graph = model.getGraph();\n\t\t\t\tif (hasJson) {\n\t\t\t\t\t\tthis.fromSkel = new Skeleton(graph);\n\t\t\t\t\t\tthis.toSkel = new Skeleton(graph);\n\t\t\t\t\t\tthis.skeleton = new Skeleton(graph);\n\t\t\t\t\t\tthis.skeleton.looping = this.loop;\n\t\t\t\t\t\tthis.skeleton.setGraph(graph);\n\t\t\t\t} else if (hasGlb) {\n\t\t\t\t\t\tthis.animEvaluator = new AnimEvaluator(new DefaultAnimBinder(this.entity));\n\t\t\t\t}\n\t\t}\n\t\tloadAnimationAssets(ids) {\n\t\t\t\tif (!ids || !ids.length) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tconst onAssetReady = (asset)=>{\n\t\t\t\t\t\tif (asset.resources.length > 1) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < asset.resources.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.animations[asset.resources[i].name] = asset.resources[i];\n\t\t\t\t\t\t\t\t\t\tthis.animationsIndex[asset.id] = asset.resources[i].name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.animations[asset.name] = asset.resource;\n\t\t\t\t\t\t\t\tthis.animationsIndex[asset.id] = asset.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.animations = this.animations;\n\t\t\t\t};\n\t\t\t\tconst onAssetAdd = (asset)=>{\n\t\t\t\t\t\tasset.off('change', this.onAssetChanged, this);\n\t\t\t\t\t\tasset.on('change', this.onAssetChanged, this);\n\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\tasset.on('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\t\t\tonAssetReady(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tasset.once('load', onAssetReady, this);\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfor(let i = 0, l = ids.length; i < l; i++){\n\t\t\t\t\t\tconst asset = assets.get(ids[i]);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tonAssetAdd(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tassets.on(`add:${ids[i]}`, onAssetAdd);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonAssetChanged(asset, attribute, newValue, oldValue) {\n\t\t\t\tif (attribute === 'resource' || attribute === 'resources') {\n\t\t\t\t\t\tif (attribute === 'resources' && newValue && newValue.length === 0) {\n\t\t\t\t\t\t\t\tnewValue = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tlet restarted = false;\n\t\t\t\t\t\t\t\tif (newValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\tif (oldValue && oldValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[oldValue[i].name];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[asset.name];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\trestarted = false;\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < newValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tthis.animations[newValue[i].name] = newValue[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (!restarted && this.currAnim === newValue[i].name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.playing && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trestarted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.play(newValue[i].name);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!restarted) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.onSetAnimations();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (oldValue && oldValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[oldValue[i].name];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.animations[asset.name] = newValue[0] || newValue;\n\t\t\t\t\t\t\t\t\t\trestarted = false;\n\t\t\t\t\t\t\t\t\t\tif (this.currAnim === asset.name) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.playing && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trestarted = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.play(asset.name);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!restarted) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.onSetAnimations();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.animationsIndex[asset.id] = asset.name;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (oldValue.length > 1) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tdelete this.animations[oldValue[i].name];\n\t\t\t\t\t\t\t\t\t\t\t\tif (this.currAnim === oldValue[i].name) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tdelete this.animations[asset.name];\n\t\t\t\t\t\t\t\t\t\tif (this.currAnim === asset.name) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdelete this.animationsIndex[asset.id];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\tif (this.animations) {\n\t\t\t\t\t\tif (asset.resources.length > 1) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < asset.resources.length; i++){\n\t\t\t\t\t\t\t\t\t\tdelete this.animations[asset.resources[i].name];\n\t\t\t\t\t\t\t\t\t\tif (this.currAnim === asset.resources[i].name) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdelete this.animations[asset.name];\n\t\t\t\t\t\t\t\tif (this.currAnim === asset.name) {\n\t\t\t\t\t\t\t\t\t\tthis._stopCurrentAnimation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdelete this.animationsIndex[asset.id];\n\t\t\t\t}\n\t\t}\n\t\t_stopCurrentAnimation() {\n\t\t\t\tthis.currAnim = null;\n\t\t\t\tthis.playing = false;\n\t\t\t\tif (this.skeleton) {\n\t\t\t\t\t\tthis.skeleton.currentTime = 0;\n\t\t\t\t\t\tthis.skeleton.animation = null;\n\t\t\t\t}\n\t\t\t\tif (this.animEvaluator) {\n\t\t\t\t\t\tfor(let i = 0; i < this.animEvaluator.clips.length; ++i){\n\t\t\t\t\t\t\t\tthis.animEvaluator.clips[i].stop();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.animEvaluator.update(0);\n\t\t\t\t\t\tthis.animEvaluator.removeClips();\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tsuper.onEnable();\n\t\t\t\tconst assets = this.assets;\n\t\t\t\tconst registry = this.system.app.assets;\n\t\t\t\tif (assets) {\n\t\t\t\t\t\tfor(let i = 0, len = assets.length; i < len; i++){\n\t\t\t\t\t\t\t\tlet asset = assets[i];\n\t\t\t\t\t\t\t\tif (!(asset instanceof Asset)) {\n\t\t\t\t\t\t\t\t\t\tasset = registry.get(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\t\t\t\tregistry.load(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.activate && !this.currAnim) {\n\t\t\t\t\t\tconst animationNames = Object.keys(this.animations);\n\t\t\t\t\t\tif (animationNames.length > 0) {\n\t\t\t\t\t\t\t\tthis.play(animationNames[0]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tfor(let i = 0; i < this.assets.length; i++){\n\t\t\t\t\t\tlet asset = this.assets[i];\n\t\t\t\t\t\tif (typeof asset === 'number') {\n\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!asset) continue;\n\t\t\t\t\t\tasset.off('change', this.onAssetChanged, this);\n\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t}\n\t\t\t\tthis.skeleton = null;\n\t\t\t\tthis.fromSkel = null;\n\t\t\t\tthis.toSkel = null;\n\t\t\t\tthis.animEvaluator = null;\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (this.blending) {\n\t\t\t\t\t\tthis.blend += dt * this.blendSpeed;\n\t\t\t\t\t\tif (this.blend >= 1) {\n\t\t\t\t\t\t\t\tthis.blend = 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.playing) {\n\t\t\t\t\t\tconst skeleton = this.skeleton;\n\t\t\t\t\t\tif (skeleton !== null && this.model !== null) {\n\t\t\t\t\t\t\t\tif (this.blending) {\n\t\t\t\t\t\t\t\t\t\tskeleton.blend(this.fromSkel, this.toSkel, this.blend);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst delta = dt * this.speed;\n\t\t\t\t\t\t\t\t\t\tskeleton.addTime(delta);\n\t\t\t\t\t\t\t\t\t\tif (this.speed > 0 && skeleton._time === skeleton.animation.duration && !this.loop) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.playing = false;\n\t\t\t\t\t\t\t\t\t\t} else if (this.speed < 0 && skeleton._time === 0 && !this.loop) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.playing = false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.blending && this.blend === 1) {\n\t\t\t\t\t\t\t\t\t\tskeleton.animation = this.toSkel.animation;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tskeleton.updateGraph();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst animEvaluator = this.animEvaluator;\n\t\t\t\tif (animEvaluator) {\n\t\t\t\t\t\tfor(let i = 0; i < animEvaluator.clips.length; ++i){\n\t\t\t\t\t\t\t\tconst clip = animEvaluator.clips[i];\n\t\t\t\t\t\t\t\tclip.speed = this.speed;\n\t\t\t\t\t\t\t\tif (!this.playing) {\n\t\t\t\t\t\t\t\t\t\tclip.pause();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tclip.resume();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.blending && animEvaluator.clips.length > 1) {\n\t\t\t\t\t\t\t\tanimEvaluator.clips[1].blendWeight = this.blend;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanimEvaluator.update(dt);\n\t\t\t\t}\n\t\t\t\tif (this.blending && this.blend === 1) {\n\t\t\t\t\t\tthis.blending = false;\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._animations = {}, this._assets = [], this._loop = true, this.animEvaluator = null, this.model = null, this.skeleton = null, this.fromSkel = null, this.toSkel = null, this.animationsIndex = {}, this.prevAnim = null, this.currAnim = null, this.blend = 0, this.blending = false, this.blendSpeed = 0, this.activate = true, this.speed = 1;\n\t\t}\n}\n\nclass AnimationComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$k = [\n\t\t'enabled'\n];\nclass AnimationComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'animation';\n\t\t\t\tthis.ComponentType = AnimationComponent;\n\t\t\t\tthis.DataType = AnimationComponentData;\n\t\t\t\tthis.schema = _schema$k;\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'activate',\n\t\t\t\t\t\t'enabled',\n\t\t\t\t\t\t'loop',\n\t\t\t\t\t\t'speed',\n\t\t\t\t\t\t'assets'\n\t\t\t\t];\n\t\t\t\tfor (const property of properties){\n\t\t\t\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tcomponent[property] = data[property];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$k);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tthis.addComponent(clone, {});\n\t\t\t\tclone.animation.assets = entity.animation.assets.slice();\n\t\t\t\tclone.animation.speed = entity.animation.speed;\n\t\t\t\tclone.animation.loop = entity.animation.loop;\n\t\t\t\tclone.animation.activate = entity.animation.activate;\n\t\t\t\tclone.animation.enabled = entity.animation.enabled;\n\t\t\t\tconst clonedAnimations = {};\n\t\t\t\tconst animations = entity.animation.animations;\n\t\t\t\tfor(const key in animations){\n\t\t\t\t\t\tif (animations.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclonedAnimations[key] = animations[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclone.animation.animations = clonedAnimations;\n\t\t\t\tconst clonedAnimationsIndex = {};\n\t\t\t\tconst animationsIndex = entity.animation.animationsIndex;\n\t\t\t\tfor(const key in animationsIndex){\n\t\t\t\t\t\tif (animationsIndex.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclonedAnimationsIndex[key] = animationsIndex[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tclone.animation.animationsIndex = clonedAnimationsIndex;\n\t\t\t\treturn clone.animation;\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id];\n\t\t\t\t\t\t\t\tif (component.data.enabled && component.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tcomponent.entity.animation.update(dt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(AnimationComponent.prototype, _schema$k);\n\nclass AnimNode {\n\t\tconstructor(state, parent, name, point, speed = 1){\n\t\t\t\tthis._state = state;\n\t\t\t\tthis._parent = parent;\n\t\t\t\tthis._name = name;\n\t\t\t\tif (Array.isArray(point)) {\n\t\t\t\t\t\tthis._point = new Vec2(point[0], point[1]);\n\t\t\t\t\t\tthis._pointLength = this._point.length();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._point = point;\n\t\t\t\t\t\tthis._pointLength = point;\n\t\t\t\t}\n\t\t\t\tthis._speed = speed;\n\t\t\t\tthis._weightedSpeed = 1.0;\n\t\t\t\tthis._weight = 1.0;\n\t\t\t\tthis._animTrack = null;\n\t\t}\n\t\tget parent() {\n\t\t\t\treturn this._parent;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tget path() {\n\t\t\t\treturn this._parent ? `${this._parent.path}.${this._name}` : this._name;\n\t\t}\n\t\tget point() {\n\t\t\t\treturn this._point;\n\t\t}\n\t\tget pointLength() {\n\t\t\t\treturn this._pointLength;\n\t\t}\n\t\tset weight(value) {\n\t\t\t\tthis._weight = value;\n\t\t}\n\t\tget weight() {\n\t\t\t\treturn this._parent ? this._parent.weight * this._weight : this._weight;\n\t\t}\n\t\tget normalizedWeight() {\n\t\t\t\tconst totalWeight = this._state.totalWeight;\n\t\t\t\tif (totalWeight === 0.0) return 0.0;\n\t\t\t\treturn this.weight / totalWeight;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._weightedSpeed * this._speed;\n\t\t}\n\t\tget absoluteSpeed() {\n\t\t\t\treturn Math.abs(this._speed);\n\t\t}\n\t\tset weightedSpeed(weightedSpeed) {\n\t\t\t\tthis._weightedSpeed = weightedSpeed;\n\t\t}\n\t\tget weightedSpeed() {\n\t\t\t\treturn this._weightedSpeed;\n\t\t}\n\t\tset animTrack(value) {\n\t\t\t\tthis._animTrack = value;\n\t\t}\n\t\tget animTrack() {\n\t\t\t\treturn this._animTrack;\n\t\t}\n}\n\nclass AnimBlendTree extends AnimNode {\n\t\tconstructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter){\n\t\t\t\tsuper(state, parent, name, point);\n\t\t\t\tthis._parameters = parameters;\n\t\t\t\tthis._parameterValues = new Array(parameters.length);\n\t\t\t\tthis._children = [];\n\t\t\t\tthis._findParameter = findParameter;\n\t\t\t\tthis._syncAnimations = syncAnimations !== false;\n\t\t\t\tthis._pointCache = {};\n\t\t\t\tfor(let i = 0; i < children.length; i++){\n\t\t\t\t\t\tconst child = children[i];\n\t\t\t\t\t\tif (child.children) {\n\t\t\t\t\t\t\t\tthis._children.push(createTree(child.type, state, this, child.name, 1.0, child.parameter ? [\n\t\t\t\t\t\t\t\t\t\tchild.parameter\n\t\t\t\t\t\t\t\t] : child.parameters, child.children, child.syncAnimations, createTree, findParameter));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._children.push(new AnimNode(state, this, child.name, child.point, child.speed));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget weight() {\n\t\t\t\tthis.calculateWeights();\n\t\t\t\treturn this._parent ? this._parent.weight * this._weight : this._weight;\n\t\t}\n\t\tget syncAnimations() {\n\t\t\t\treturn this._syncAnimations;\n\t\t}\n\t\tgetChild(name) {\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tif (this._children[i].name === name) return this._children[i];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tupdateParameterValues() {\n\t\t\t\tlet paramsEqual = true;\n\t\t\t\tfor(let i = 0; i < this._parameterValues.length; i++){\n\t\t\t\t\t\tconst updatedParameter = this._findParameter(this._parameters[i]).value;\n\t\t\t\t\t\tif (this._parameterValues[i] !== updatedParameter) {\n\t\t\t\t\t\t\t\tthis._parameterValues[i] = updatedParameter;\n\t\t\t\t\t\t\t\tparamsEqual = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn paramsEqual;\n\t\t}\n\t\tgetNodeWeightedDuration(i) {\n\t\t\t\treturn this._children[i].animTrack.duration / this._children[i].speedMultiplier * this._children[i].weight;\n\t\t}\n\t\tgetNodeCount() {\n\t\t\t\tlet count = 0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tif (child.constructor === AnimBlendTree) {\n\t\t\t\t\t\t\t\tcount += this._children[i].getNodeCount();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcount++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn count;\n\t\t}\n}\n\nclass AnimBlendTree1D extends AnimBlendTree {\n\t\tconstructor(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter){\n\t\t\t\tchildren.sort((a, b)=>a.point - b.point);\n\t\t\t\tsuper(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t}\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightedDurationSum = 0.0;\n\t\t\t\tthis._children[0].weight = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst c1 = this._children[i];\n\t\t\t\t\t\tif (i !== this._children.length - 1) {\n\t\t\t\t\t\t\t\tconst c2 = this._children[i + 1];\n\t\t\t\t\t\t\t\tif (c1.point === c2.point) {\n\t\t\t\t\t\t\t\t\t\tc1.weight = 0.5;\n\t\t\t\t\t\t\t\t\t\tc2.weight = 0.5;\n\t\t\t\t\t\t\t\t} else if (math.between(this._parameterValues[0], c1.point, c2.point, true)) {\n\t\t\t\t\t\t\t\t\t\tconst child2Distance = Math.abs(c1.point - c2.point);\n\t\t\t\t\t\t\t\t\t\tconst parameterDistance = Math.abs(c1.point - this._parameterValues[0]);\n\t\t\t\t\t\t\t\t\t\tconst weight = (child2Distance - parameterDistance) / child2Distance;\n\t\t\t\t\t\t\t\t\t\tc1.weight = weight;\n\t\t\t\t\t\t\t\t\t\tc2.weight = 1.0 - weight;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tc2.weight = 0.0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tweightedDurationSum += c1.animTrack.duration / c1.absoluteSpeed * c1.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBlendTreeCartesian2D extends AnimBlendTree {\n\t\tstatic{\n\t\t\t\tthis._p = new Vec2();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._pip = new Vec2();\n\t\t}\n\t\tpointDistanceCache(i, j) {\n\t\t\t\tconst pointKey = `${i}${j}`;\n\t\t\t\tif (!this._pointCache[pointKey]) {\n\t\t\t\t\t\tthis._pointCache[pointKey] = this._children[j].point.clone().sub(this._children[i].point);\n\t\t\t\t}\n\t\t\t\treturn this._pointCache[pointKey];\n\t\t}\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightSum, weightedDurationSum;\n\t\t\t\tAnimBlendTreeCartesian2D._p.set(...this._parameterValues);\n\t\t\t\tweightSum = 0.0;\n\t\t\t\tweightedDurationSum = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tconst pi = child.point;\n\t\t\t\t\t\tAnimBlendTreeCartesian2D._pip.set(AnimBlendTreeCartesian2D._p.x, AnimBlendTreeCartesian2D._p.y).sub(pi);\n\t\t\t\t\t\tlet minj = Number.MAX_VALUE;\n\t\t\t\t\t\tfor(let j = 0; j < this._children.length; j++){\n\t\t\t\t\t\t\t\tif (i === j) continue;\n\t\t\t\t\t\t\t\tconst pipj = this.pointDistanceCache(i, j);\n\t\t\t\t\t\t\t\tconst result = math.clamp(1.0 - AnimBlendTreeCartesian2D._pip.dot(pipj) / pipj.lengthSq(), 0.0, 1.0);\n\t\t\t\t\t\t\t\tif (result < minj) minj = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchild.weight = minj;\n\t\t\t\t\t\tweightSum += minj;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tchild.weight = child._weight / weightSum;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBlendTreeDirectional2D extends AnimBlendTree {\n\t\tstatic{\n\t\t\t\tthis._p = new Vec2();\n\t\t}\n\t\tstatic{\n\t\t\t\tthis._pip = new Vec2();\n\t\t}\n\t\tpointCache(i, j) {\n\t\t\t\tconst pointKey = `${i}${j}`;\n\t\t\t\tif (!this._pointCache[pointKey]) {\n\t\t\t\t\t\tthis._pointCache[pointKey] = new Vec2((this._children[j].pointLength - this._children[i].pointLength) / ((this._children[j].pointLength + this._children[i].pointLength) / 2), Vec2.angleRad(this._children[i].point, this._children[j].point) * 2.0);\n\t\t\t\t}\n\t\t\t\treturn this._pointCache[pointKey];\n\t\t}\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightSum, weightedDurationSum;\n\t\t\t\tAnimBlendTreeDirectional2D._p.set(...this._parameterValues);\n\t\t\t\tconst pLength = AnimBlendTreeDirectional2D._p.length();\n\t\t\t\tweightSum = 0.0;\n\t\t\t\tweightedDurationSum = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tconst pi = child.point;\n\t\t\t\t\t\tconst piLength = child.pointLength;\n\t\t\t\t\t\tlet minj = Number.MAX_VALUE;\n\t\t\t\t\t\tfor(let j = 0; j < this._children.length; j++){\n\t\t\t\t\t\t\t\tif (i === j) continue;\n\t\t\t\t\t\t\t\tconst pipj = this.pointCache(i, j);\n\t\t\t\t\t\t\t\tconst pjLength = this._children[j].pointLength;\n\t\t\t\t\t\t\t\tAnimBlendTreeDirectional2D._pip.set((pLength - piLength) / ((pjLength + piLength) / 2), Vec2.angleRad(pi, AnimBlendTreeDirectional2D._p) * 2.0);\n\t\t\t\t\t\t\t\tconst result = math.clamp(1.0 - Math.abs(AnimBlendTreeDirectional2D._pip.dot(pipj) / pipj.lengthSq()), 0.0, 1.0);\n\t\t\t\t\t\t\t\tif (result < minj) minj = result;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tchild.weight = minj;\n\t\t\t\t\t\tweightSum += minj;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tchild.weight = child._weight / weightSum;\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tconst weightedChildDuration = child.animTrack.duration / weightedDurationSum * weightSum;\n\t\t\t\t\t\t\t\tchild.weightedSpeed = child.absoluteSpeed * weightedChildDuration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimBlendTreeDirect extends AnimBlendTree {\n\t\tcalculateWeights() {\n\t\t\t\tif (this.updateParameterValues()) return;\n\t\t\t\tlet weightSum = 0.0;\n\t\t\t\tlet weightedDurationSum = 0.0;\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tweightSum += Math.max(this._parameterValues[i], 0.0);\n\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\t\t\tweightedDurationSum += child.animTrack.duration / child.absoluteSpeed * child.weight;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._children.length; i++){\n\t\t\t\t\t\tconst child = this._children[i];\n\t\t\t\t\t\tconst weight = Math.max(this._parameterValues[i], 0.0);\n\t\t\t\t\t\tif (weightSum) {\n\t\t\t\t\t\t\t\tchild.weight = weight / weightSum;\n\t\t\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\t\t\tchild.weightedSpeed = child.animTrack.duration / child.absoluteSpeed / weightedDurationSum;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tchild.weight = 0.0;\n\t\t\t\t\t\t\t\tif (this._syncAnimations) {\n\t\t\t\t\t\t\t\t\t\tchild.weightedSpeed = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AnimState {\n\t\tconstructor(controller, name, speed = 1, loop = true, blendTree){\n\t\t\t\tthis._animations = {};\n\t\t\t\tthis._animationList = [];\n\t\t\t\tthis._controller = controller;\n\t\t\t\tthis._name = name;\n\t\t\t\tthis._speed = speed;\n\t\t\t\tthis._loop = loop;\n\t\t\t\tthis._hasAnimations = false;\n\t\t\t\tif (blendTree) {\n\t\t\t\t\t\tthis._blendTree = this._createTree(blendTree.type, this, null, name, 1.0, blendTree.parameter ? [\n\t\t\t\t\t\t\t\tblendTree.parameter\n\t\t\t\t\t\t] : blendTree.parameters, blendTree.children, blendTree.syncAnimations, this._createTree, this._controller.findParameter);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._blendTree = new AnimNode(this, null, name, 1.0, speed);\n\t\t\t\t}\n\t\t}\n\t\t_createTree(type, state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter) {\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase ANIM_BLEND_1D:\n\t\t\t\t\t\t\t\treturn new AnimBlendTree1D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t\t\tcase ANIM_BLEND_2D_CARTESIAN:\n\t\t\t\t\t\t\t\treturn new AnimBlendTreeCartesian2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t\t\tcase ANIM_BLEND_2D_DIRECTIONAL:\n\t\t\t\t\t\t\t\treturn new AnimBlendTreeDirectional2D(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t\t\tcase ANIM_BLEND_DIRECT:\n\t\t\t\t\t\t\t\treturn new AnimBlendTreeDirect(state, parent, name, point, parameters, children, syncAnimations, createTree, findParameter);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_getNodeFromPath(path) {\n\t\t\t\tlet currNode = this._blendTree;\n\t\t\t\tfor(let i = 1; i < path.length; i++){\n\t\t\t\t\t\tcurrNode = currNode.getChild(path[i]);\n\t\t\t\t}\n\t\t\t\treturn currNode;\n\t\t}\n\t\taddAnimation(path, animTrack) {\n\t\t\t\tconst pathString = path.join('.');\n\t\t\t\tconst indexOfAnimation = this._animationList.findIndex((animation)=>{\n\t\t\t\t\t\treturn animation.path === pathString;\n\t\t\t\t});\n\t\t\t\tif (indexOfAnimation >= 0) {\n\t\t\t\t\t\tthis._animationList[indexOfAnimation].animTrack = animTrack;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst node = this._getNodeFromPath(path);\n\t\t\t\t\t\tnode.animTrack = animTrack;\n\t\t\t\t\t\tthis._animationList.push(node);\n\t\t\t\t}\n\t\t\t\tthis._updateHasAnimations();\n\t\t}\n\t\t_updateHasAnimations() {\n\t\t\t\tthis._hasAnimations = this._animationList.length > 0 && this._animationList.every((animation)=>animation.animTrack && animation.animTrack !== AnimTrack.EMPTY);\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset animations(value) {\n\t\t\t\tthis._animationList = value;\n\t\t\t\tthis._updateHasAnimations();\n\t\t}\n\t\tget animations() {\n\t\t\t\treturn this._animationList;\n\t\t}\n\t\tget hasAnimations() {\n\t\t\t\treturn this._hasAnimations;\n\t\t}\n\t\tset speed(value) {\n\t\t\t\tthis._speed = value;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = value;\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tget nodeCount() {\n\t\t\t\tif (!this._blendTree || this._blendTree.constructor === AnimNode) return 1;\n\t\t\t\treturn this._blendTree.getNodeCount();\n\t\t}\n\t\tget playable() {\n\t\t\t\treturn ANIM_CONTROL_STATES.indexOf(this.name) !== -1 || this.animations.length === this.nodeCount;\n\t\t}\n\t\tget looping() {\n\t\t\t\tif (this.animations.length > 0) {\n\t\t\t\t\t\tconst trackClipName = `${this.name}.${this.animations[0].animTrack.name}`;\n\t\t\t\t\t\tconst trackClip = this._controller.animEvaluator.findClip(trackClipName);\n\t\t\t\t\t\tif (trackClip) {\n\t\t\t\t\t\t\t\treturn trackClip.loop;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tget totalWeight() {\n\t\t\t\tlet sum = 0;\n\t\t\t\tfor(let i = 0; i < this.animations.length; i++){\n\t\t\t\t\t\tsum += this.animations[i].weight;\n\t\t\t\t}\n\t\t\t\treturn sum;\n\t\t}\n\t\tget timelineDuration() {\n\t\t\t\tlet duration = 0;\n\t\t\t\tfor(let i = 0; i < this.animations.length; i++){\n\t\t\t\t\t\tconst animation = this.animations[i];\n\t\t\t\t\t\tif (animation.animTrack.duration > duration) {\n\t\t\t\t\t\t\t\tduration = animation.animTrack.duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn duration;\n\t\t}\n}\n\nclass AnimTransition {\n\t\tconstructor({ from, to, time = 0, priority = 0, conditions = [], exitTime = null, transitionOffset = null, interruptionSource = ANIM_INTERRUPTION_NONE }){\n\t\t\t\tthis._from = from;\n\t\t\t\tthis._to = to;\n\t\t\t\tthis._time = time;\n\t\t\t\tthis._priority = priority;\n\t\t\t\tthis._conditions = conditions;\n\t\t\t\tthis._exitTime = exitTime;\n\t\t\t\tthis._transitionOffset = transitionOffset;\n\t\t\t\tthis._interruptionSource = interruptionSource;\n\t\t}\n\t\tget from() {\n\t\t\t\treturn this._from;\n\t\t}\n\t\tset to(value) {\n\t\t\t\tthis._to = value;\n\t\t}\n\t\tget to() {\n\t\t\t\treturn this._to;\n\t\t}\n\t\tget time() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n\t\tget conditions() {\n\t\t\t\treturn this._conditions;\n\t\t}\n\t\tget exitTime() {\n\t\t\t\treturn this._exitTime;\n\t\t}\n\t\tget transitionOffset() {\n\t\t\t\treturn this._transitionOffset;\n\t\t}\n\t\tget interruptionSource() {\n\t\t\t\treturn this._interruptionSource;\n\t\t}\n\t\tget hasExitTime() {\n\t\t\t\treturn !!this.exitTime;\n\t\t}\n}\n\nclass AnimController {\n\t\tconstructor(animEvaluator, states, transitions, activate, eventHandler, findParameter, consumeTrigger){\n\t\t\t\tthis._states = {};\n\t\t\t\tthis._stateNames = [];\n\t\t\t\tthis._findTransitionsFromStateCache = {};\n\t\t\t\tthis._findTransitionsBetweenStatesCache = {};\n\t\t\t\tthis._previousStateName = null;\n\t\t\t\tthis._activeStateName = ANIM_STATE_START;\n\t\t\t\tthis._activeStateDuration = 0;\n\t\t\t\tthis._activeStateDurationDirty = true;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._currTransitionTime = 1;\n\t\t\t\tthis._totalTransitionTime = 1;\n\t\t\t\tthis._isTransitioning = false;\n\t\t\t\tthis._transitionInterruptionSource = ANIM_INTERRUPTION_NONE;\n\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\tthis._timeInState = 0;\n\t\t\t\tthis._timeInStateBefore = 0;\n\t\t\t\tthis.findParameter = (name)=>{\n\t\t\t\t\t\treturn this._findParameter(name);\n\t\t\t\t};\n\t\t\t\tthis._animEvaluator = animEvaluator;\n\t\t\t\tthis._eventHandler = eventHandler;\n\t\t\t\tthis._findParameter = findParameter;\n\t\t\t\tthis._consumeTrigger = consumeTrigger;\n\t\t\t\tfor(let i = 0; i < states.length; i++){\n\t\t\t\t\t\tthis._states[states[i].name] = new AnimState(this, states[i].name, states[i].speed, states[i].loop, states[i].blendTree);\n\t\t\t\t\t\tthis._stateNames.push(states[i].name);\n\t\t\t\t}\n\t\t\t\tthis._transitions = transitions.map((transition)=>{\n\t\t\t\t\t\treturn new AnimTransition({\n\t\t\t\t\t\t\t\t...transition\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis._activate = activate;\n\t\t}\n\t\tget animEvaluator() {\n\t\t\t\treturn this._animEvaluator;\n\t\t}\n\t\tset activeState(stateName) {\n\t\t\t\tthis._activeStateName = stateName;\n\t\t}\n\t\tget activeState() {\n\t\t\t\treturn this._findState(this._activeStateName);\n\t\t}\n\t\tget activeStateName() {\n\t\t\t\treturn this._activeStateName;\n\t\t}\n\t\tget activeStateAnimations() {\n\t\t\t\treturn this.activeState.animations;\n\t\t}\n\t\tset previousState(stateName) {\n\t\t\t\tthis._previousStateName = stateName;\n\t\t}\n\t\tget previousState() {\n\t\t\t\treturn this._findState(this._previousStateName);\n\t\t}\n\t\tget previousStateName() {\n\t\t\t\treturn this._previousStateName;\n\t\t}\n\t\tget playable() {\n\t\t\t\tlet playable = true;\n\t\t\t\tfor(let i = 0; i < this._stateNames.length; i++){\n\t\t\t\t\t\tif (!this._states[this._stateNames[i]].playable) {\n\t\t\t\t\t\t\t\tplayable = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn playable;\n\t\t}\n\t\tset playing(value) {\n\t\t\t\tthis._playing = value;\n\t\t}\n\t\tget playing() {\n\t\t\t\treturn this._playing;\n\t\t}\n\t\tget activeStateProgress() {\n\t\t\t\treturn this._getActiveStateProgressForTime(this._timeInState);\n\t\t}\n\t\tget activeStateDuration() {\n\t\t\t\tif (this._activeStateDurationDirty) {\n\t\t\t\t\t\tlet maxDuration = 0.0;\n\t\t\t\t\t\tfor(let i = 0; i < this.activeStateAnimations.length; i++){\n\t\t\t\t\t\t\t\tconst activeClip = this._animEvaluator.findClip(this.activeStateAnimations[i].name);\n\t\t\t\t\t\t\t\tif (activeClip) {\n\t\t\t\t\t\t\t\t\t\tmaxDuration = Math.max(maxDuration, activeClip.track.duration);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._activeStateDuration = maxDuration;\n\t\t\t\t\t\tthis._activeStateDurationDirty = false;\n\t\t\t\t}\n\t\t\t\treturn this._activeStateDuration;\n\t\t}\n\t\tset activeStateCurrentTime(time) {\n\t\t\t\tthis._timeInStateBefore = time;\n\t\t\t\tthis._timeInState = time;\n\t\t\t\tfor(let i = 0; i < this.activeStateAnimations.length; i++){\n\t\t\t\t\t\tconst clip = this.animEvaluator.findClip(this.activeStateAnimations[i].name);\n\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\tclip.time = time;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget activeStateCurrentTime() {\n\t\t\t\treturn this._timeInState;\n\t\t}\n\t\tget transitioning() {\n\t\t\t\treturn this._isTransitioning;\n\t\t}\n\t\tget transitionProgress() {\n\t\t\t\treturn this._currTransitionTime / this._totalTransitionTime;\n\t\t}\n\t\tget states() {\n\t\t\t\treturn this._stateNames;\n\t\t}\n\t\tassignMask(mask) {\n\t\t\t\treturn this._animEvaluator.assignMask(mask);\n\t\t}\n\t\t_findState(stateName) {\n\t\t\t\treturn this._states[stateName];\n\t\t}\n\t\t_getActiveStateProgressForTime(time) {\n\t\t\t\tif (this.activeStateName === ANIM_STATE_START || this.activeStateName === ANIM_STATE_END || this.activeStateName === ANIM_STATE_ANY) {\n\t\t\t\t\t\treturn 1.0;\n\t\t\t\t}\n\t\t\t\tconst activeClip = this._animEvaluator.findClip(this.activeStateAnimations[0].name);\n\t\t\t\tif (activeClip) {\n\t\t\t\t\t\treturn activeClip.progressForTime(time);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_findTransitionsFromState(stateName) {\n\t\t\t\tlet transitions = this._findTransitionsFromStateCache[stateName];\n\t\t\t\tif (!transitions) {\n\t\t\t\t\t\ttransitions = this._transitions.filter((transition)=>{\n\t\t\t\t\t\t\t\treturn transition.from === stateName;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsortPriority(transitions);\n\t\t\t\t\t\tthis._findTransitionsFromStateCache[stateName] = transitions;\n\t\t\t\t}\n\t\t\t\treturn transitions;\n\t\t}\n\t\t_findTransitionsBetweenStates(sourceStateName, destinationStateName) {\n\t\t\t\tlet transitions = this._findTransitionsBetweenStatesCache[`${sourceStateName}->${destinationStateName}`];\n\t\t\t\tif (!transitions) {\n\t\t\t\t\t\ttransitions = this._transitions.filter((transition)=>{\n\t\t\t\t\t\t\t\treturn transition.from === sourceStateName && transition.to === destinationStateName;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsortPriority(transitions);\n\t\t\t\t\t\tthis._findTransitionsBetweenStatesCache[`${sourceStateName}->${destinationStateName}`] = transitions;\n\t\t\t\t}\n\t\t\t\treturn transitions;\n\t\t}\n\t\t_transitionHasConditionsMet(transition) {\n\t\t\t\tconst conditions = transition.conditions;\n\t\t\t\tfor(let i = 0; i < conditions.length; i++){\n\t\t\t\t\t\tconst condition = conditions[i];\n\t\t\t\t\t\tconst parameter = this._findParameter(condition.parameterName);\n\t\t\t\t\t\tswitch(condition.predicate){\n\t\t\t\t\t\t\t\tcase ANIM_GREATER_THAN:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value > condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_LESS_THAN:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value < condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_GREATER_THAN_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value >= condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_LESS_THAN_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value <= condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value === condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase ANIM_NOT_EQUAL_TO:\n\t\t\t\t\t\t\t\t\t\tif (!(parameter.value !== condition.value)) return false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\t_findTransition(from, to) {\n\t\t\t\tlet transitions = [];\n\t\t\t\tif (from && to) {\n\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsBetweenStates(from, to));\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tswitch(this._transitionInterruptionSource){\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_PREV:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_NEXT:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_PREV_NEXT:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase ANIM_INTERRUPTION_NEXT_PREV:\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._activeStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(this._previousStateName));\n\t\t\t\t\t\t\t\t\t\t\t\ttransitions = transitions.concat(this._findTransitionsFromState(ANIM_STATE_ANY));\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttransitions = transitions.filter((transition)=>{\n\t\t\t\t\t\tif (transition.to === this.activeStateName) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (transition.hasExitTime) {\n\t\t\t\t\t\t\t\tlet progressBefore = this._getActiveStateProgressForTime(this._timeInStateBefore);\n\t\t\t\t\t\t\t\tlet progress = this._getActiveStateProgressForTime(this._timeInState);\n\t\t\t\t\t\t\t\tif (transition.exitTime < 1.0 && this.activeState.loop) {\n\t\t\t\t\t\t\t\t\t\tprogressBefore -= Math.floor(progressBefore);\n\t\t\t\t\t\t\t\t\t\tprogress -= Math.floor(progress);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (progress === progressBefore) {\n\t\t\t\t\t\t\t\t\t\tif (progress !== transition.exitTime) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (!(transition.exitTime > progressBefore && transition.exitTime <= progress)) {\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn this._transitionHasConditionsMet(transition);\n\t\t\t\t});\n\t\t\t\tif (transitions.length > 0) {\n\t\t\t\t\t\tconst transition = transitions[0];\n\t\t\t\t\t\tif (transition.to === ANIM_STATE_END) {\n\t\t\t\t\t\t\t\tconst startTransition = this._findTransitionsFromState(ANIM_STATE_START)[0];\n\t\t\t\t\t\t\t\ttransition.to = startTransition.to;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn transition;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tupdateStateFromTransition(transition) {\n\t\t\t\tlet state;\n\t\t\t\tlet animation;\n\t\t\t\tlet clip;\n\t\t\t\tthis.previousState = transition.from ? this.activeStateName : null;\n\t\t\t\tthis.activeState = transition.to;\n\t\t\t\tthis._activeStateDurationDirty = true;\n\t\t\t\tfor(let i = 0; i < transition.conditions.length; i++){\n\t\t\t\t\t\tconst condition = transition.conditions[i];\n\t\t\t\t\t\tconst parameter = this._findParameter(condition.parameterName);\n\t\t\t\t\t\tif (parameter.type === ANIM_PARAMETER_TRIGGER) {\n\t\t\t\t\t\t\t\tthis._consumeTrigger(condition.parameterName);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.previousState) {\n\t\t\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._transitionPreviousStates.push({\n\t\t\t\t\t\t\t\tname: this._previousStateName,\n\t\t\t\t\t\t\t\tweight: 1\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst interpolatedTime = Math.min(this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1, 1.0);\n\t\t\t\t\t\tfor(let i = 0; i < this._transitionPreviousStates.length; i++){\n\t\t\t\t\t\t\t\tif (!this._isTransitioning) {\n\t\t\t\t\t\t\t\t\t\tthis._transitionPreviousStates[i].weight = 1.0;\n\t\t\t\t\t\t\t\t} else if (i !== this._transitionPreviousStates.length - 1) {\n\t\t\t\t\t\t\t\t\t\tthis._transitionPreviousStates[i].weight *= 1.0 - interpolatedTime;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._transitionPreviousStates[i].weight = interpolatedTime;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstate = this._findState(this._transitionPreviousStates[i].name);\n\t\t\t\t\t\t\t\tfor(let j = 0; j < state.animations.length; j++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[j];\n\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(`${animation.name}.previous.${i}`);\n\t\t\t\t\t\t\t\t\t\tif (!clip) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\t\t\t\t\t\t\tclip.name = `${animation.name}.previous.${i}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (i !== this._transitionPreviousStates.length - 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip.pause();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._isTransitioning = true;\n\t\t\t\tthis._totalTransitionTime = transition.time;\n\t\t\t\tthis._currTransitionTime = 0;\n\t\t\t\tthis._transitionInterruptionSource = transition.interruptionSource;\n\t\t\t\tconst activeState = this.activeState;\n\t\t\t\tconst hasTransitionOffset = transition.transitionOffset && transition.transitionOffset > 0.0 && transition.transitionOffset < 1.0;\n\t\t\t\tlet timeInState = 0;\n\t\t\t\tlet timeInStateBefore = 0;\n\t\t\t\tif (hasTransitionOffset) {\n\t\t\t\t\t\tconst offsetTime = activeState.timelineDuration * transition.transitionOffset;\n\t\t\t\t\t\ttimeInState = offsetTime;\n\t\t\t\t\t\ttimeInStateBefore = offsetTime;\n\t\t\t\t}\n\t\t\t\tthis._timeInState = timeInState;\n\t\t\t\tthis._timeInStateBefore = timeInStateBefore;\n\t\t\t\tfor(let i = 0; i < activeState.animations.length; i++){\n\t\t\t\t\t\tclip = this._animEvaluator.findClip(activeState.animations[i].name);\n\t\t\t\t\t\tif (!clip) {\n\t\t\t\t\t\t\t\tconst speed = Number.isFinite(activeState.animations[i].speed) ? activeState.animations[i].speed : activeState.speed;\n\t\t\t\t\t\t\t\tclip = new AnimClip(activeState.animations[i].animTrack, this._timeInState, speed, true, activeState.loop, this._eventHandler);\n\t\t\t\t\t\t\t\tclip.name = activeState.animations[i].name;\n\t\t\t\t\t\t\t\tthis._animEvaluator.addClip(clip);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclip.reset();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (transition.time > 0) {\n\t\t\t\t\t\t\t\tclip.blendWeight = 0.0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclip.blendWeight = activeState.animations[i].normalizedWeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclip.play();\n\t\t\t\t\t\tif (hasTransitionOffset) {\n\t\t\t\t\t\t\t\tclip.time = activeState.timelineDuration * transition.transitionOffset;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst startTime = activeState.speed >= 0 ? 0 : this.activeStateDuration;\n\t\t\t\t\t\t\t\tclip.time = startTime;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_transitionToState(newStateName) {\n\t\t\t\tif (!this._findState(newStateName)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet transition = this._findTransition(this._activeStateName, newStateName);\n\t\t\t\tif (!transition) {\n\t\t\t\t\t\tthis._animEvaluator.removeClips();\n\t\t\t\t\t\ttransition = new AnimTransition({\n\t\t\t\t\t\t\t\tfrom: null,\n\t\t\t\t\t\t\t\tto: newStateName\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.updateStateFromTransition(transition);\n\t\t}\n\t\tassignAnimation(pathString, animTrack, speed, loop) {\n\t\t\t\tconst path = pathString.split('.');\n\t\t\t\tlet state = this._findState(path[0]);\n\t\t\t\tif (!state) {\n\t\t\t\t\t\tstate = new AnimState(this, path[0], speed);\n\t\t\t\t\t\tthis._states[path[0]] = state;\n\t\t\t\t\t\tthis._stateNames.push(path[0]);\n\t\t\t\t}\n\t\t\t\tstate.addAnimation(path, animTrack);\n\t\t\t\tthis._animEvaluator.updateClipTrack(state.name, animTrack);\n\t\t\t\tif (speed !== undefined) {\n\t\t\t\t\t\tstate.speed = speed;\n\t\t\t\t}\n\t\t\t\tif (loop !== undefined) {\n\t\t\t\t\t\tstate.loop = loop;\n\t\t\t\t}\n\t\t\t\tif (!this._playing && this._activate && this.playable) {\n\t\t\t\t\t\tthis.play();\n\t\t\t\t}\n\t\t\t\tthis._activeStateDurationDirty = true;\n\t\t}\n\t\tremoveNodeAnimations(nodeName) {\n\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(nodeName) !== -1) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst state = this._findState(nodeName);\n\t\t\t\tif (!state) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tstate.animations = [];\n\t\t\t\treturn true;\n\t\t}\n\t\tplay(stateName) {\n\t\t\t\tif (stateName) {\n\t\t\t\t\t\tthis._transitionToState(stateName);\n\t\t\t\t}\n\t\t\t\tthis._playing = true;\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._playing = false;\n\t\t}\n\t\treset() {\n\t\t\t\tthis._previousStateName = null;\n\t\t\t\tthis._activeStateName = ANIM_STATE_START;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._currTransitionTime = 1.0;\n\t\t\t\tthis._totalTransitionTime = 1.0;\n\t\t\t\tthis._isTransitioning = false;\n\t\t\t\tthis._timeInState = 0;\n\t\t\t\tthis._timeInStateBefore = 0;\n\t\t\t\tthis._animEvaluator.removeClips();\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._animEvaluator.rebind();\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (!this._playing) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet state;\n\t\t\t\tlet animation;\n\t\t\t\tlet clip;\n\t\t\t\tif (this.activeState.loop || this._timeInState < this.activeStateDuration) {\n\t\t\t\t\t\tthis._timeInStateBefore = this._timeInState;\n\t\t\t\t\t\tthis._timeInState += dt * this.activeState.speed;\n\t\t\t\t\t\tif (!this.activeState.loop && this._timeInState > this.activeStateDuration) {\n\t\t\t\t\t\t\t\tthis._timeInState = this.activeStateDuration;\n\t\t\t\t\t\t\t\tdt = this.activeStateDuration - this._timeInStateBefore;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst transition = this._findTransition(this._activeStateName);\n\t\t\t\tif (transition) {\n\t\t\t\t\t\tthis.updateStateFromTransition(transition);\n\t\t\t\t}\n\t\t\t\tif (this._isTransitioning) {\n\t\t\t\t\t\tthis._currTransitionTime += dt;\n\t\t\t\t\t\tif (this._currTransitionTime <= this._totalTransitionTime) {\n\t\t\t\t\t\t\t\tconst interpolatedTime = this._totalTransitionTime !== 0 ? this._currTransitionTime / this._totalTransitionTime : 1;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this._transitionPreviousStates.length; i++){\n\t\t\t\t\t\t\t\t\t\tstate = this._findState(this._transitionPreviousStates[i].name);\n\t\t\t\t\t\t\t\t\t\tconst stateWeight = this._transitionPreviousStates[i].weight;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < state.animations.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tanimation = state.animations[j];\n\t\t\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(`${animation.name}.previous.${i}`);\n\t\t\t\t\t\t\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclip.blendWeight = (1.0 - interpolatedTime) * animation.normalizedWeight * stateWeight;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstate = this.activeState;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < state.animations.length; i++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\t\t\t\t\t\tthis._animEvaluator.findClip(animation.name).blendWeight = interpolatedTime * animation.normalizedWeight;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._isTransitioning = false;\n\t\t\t\t\t\t\t\tconst activeClips = this.activeStateAnimations.length;\n\t\t\t\t\t\t\t\tconst totalClips = this._animEvaluator.clips.length;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < totalClips - activeClips; i++){\n\t\t\t\t\t\t\t\t\t\tthis._animEvaluator.removeClip(0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._transitionPreviousStates = [];\n\t\t\t\t\t\t\t\tstate = this.activeState;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < state.animations.length; i++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip.blendWeight = animation.normalizedWeight;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.activeState._blendTree.constructor !== AnimNode) {\n\t\t\t\t\t\t\t\tstate = this.activeState;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < state.animations.length; i++){\n\t\t\t\t\t\t\t\t\t\tanimation = state.animations[i];\n\t\t\t\t\t\t\t\t\t\tclip = this._animEvaluator.findClip(animation.name);\n\t\t\t\t\t\t\t\t\t\tif (clip) {\n\t\t\t\t\t\t\t\t\t\t\t\tclip.blendWeight = animation.normalizedWeight;\n\t\t\t\t\t\t\t\t\t\t\t\tif (animation.parent.syncAnimations) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclip.speed = animation.speed;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._animEvaluator.update(dt, this.activeState.hasAnimations);\n\t\t}\n}\n\nconst v2$4 = new Vec2();\nconst v3$1 = new Vec3();\nconst v4 = new Vec4();\nconst c = new Color();\nconst q$2 = new Quat();\nclass AnimComponentBinder extends DefaultAnimBinder {\n\t\tconstructor(animComponent, graph, layerName, mask, layerIndex){\n\t\t\t\tsuper(graph);\n\t\t\t\tthis.animComponent = animComponent;\n\t\t\t\tthis._mask = mask;\n\t\t\t\tthis.layerName = layerName;\n\t\t\t\tthis.layerIndex = layerIndex;\n\t\t}\n\t\tstatic _packFloat(values) {\n\t\t\t\treturn values[0];\n\t\t}\n\t\tstatic _packBoolean(values) {\n\t\t\t\treturn !!values[0];\n\t\t}\n\t\tstatic _packVec2(values) {\n\t\t\t\tv2$4.x = values[0];\n\t\t\t\tv2$4.y = values[1];\n\t\t\t\treturn v2$4;\n\t\t}\n\t\tstatic _packVec3(values) {\n\t\t\t\tv3$1.x = values[0];\n\t\t\t\tv3$1.y = values[1];\n\t\t\t\tv3$1.z = values[2];\n\t\t\t\treturn v3$1;\n\t\t}\n\t\tstatic _packVec4(values) {\n\t\t\t\tv4.x = values[0];\n\t\t\t\tv4.y = values[1];\n\t\t\t\tv4.z = values[2];\n\t\t\t\tv4.w = values[3];\n\t\t\t\treturn v4;\n\t\t}\n\t\tstatic _packColor(values) {\n\t\t\t\tc.r = values[0];\n\t\t\t\tc.g = values[1];\n\t\t\t\tc.b = values[2];\n\t\t\t\tc.a = values[3];\n\t\t\t\treturn c;\n\t\t}\n\t\tstatic _packQuat(values) {\n\t\t\t\tq$2.x = values[0];\n\t\t\t\tq$2.y = values[1];\n\t\t\t\tq$2.z = values[2];\n\t\t\t\tq$2.w = values[3];\n\t\t\t\treturn q$2;\n\t\t}\n\t\tresolve(path) {\n\t\t\t\tconst encodedPath = AnimBinder.encode(path.entityPath, path.component, path.propertyPath);\n\t\t\t\tlet target = this.targetCache[encodedPath];\n\t\t\t\tif (target) return target;\n\t\t\t\tlet entity;\n\t\t\t\tlet propertyComponent;\n\t\t\t\tlet targetPath;\n\t\t\t\tswitch(path.component){\n\t\t\t\t\t\tcase 'entity':\n\t\t\t\t\t\t\t\tentity = this._getEntityFromHierarchy(path.entityPath);\n\t\t\t\t\t\t\t\ttargetPath = AnimBinder.encode(entity.path, 'entity', path.propertyPath);\n\t\t\t\t\t\t\t\tpropertyComponent = entity;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'graph':\n\t\t\t\t\t\t\t\tpropertyComponent = this.findNode(path);\n\t\t\t\t\t\t\t\tif (!propertyComponent) return null;\n\t\t\t\t\t\t\t\ttargetPath = AnimBinder.encode(propertyComponent.path, 'graph', path.propertyPath);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tentity = this._getEntityFromHierarchy(path.entityPath);\n\t\t\t\t\t\t\t\tpropertyComponent = entity.findComponent(path.component);\n\t\t\t\t\t\t\t\tif (!propertyComponent) {\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttargetPath = AnimBinder.encode(entity.path, path.component, path.propertyPath);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\ttarget = this._createAnimTargetForProperty(propertyComponent, path.propertyPath, targetPath);\n\t\t\t\tthis.targetCache[encodedPath] = target;\n\t\t\t\treturn target;\n\t\t}\n\t\tupdate(deltaTime) {\n\t\t\t\tconst activeNodes = this.activeNodes;\n\t\t\t\tif (activeNodes) {\n\t\t\t\t\t\tfor(let i = 0; i < activeNodes.length; i++){\n\t\t\t\t\t\t\t\tactiveNodes[i]._dirtifyLocal();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_getEntityFromHierarchy(entityHierarchy) {\n\t\t\t\tif (!this.animComponent.entity.name === entityHierarchy[0]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst currEntity = this.animComponent.entity;\n\t\t\t\tif (entityHierarchy.length === 1) {\n\t\t\t\t\t\treturn currEntity;\n\t\t\t\t}\n\t\t\t\treturn currEntity._parent.findByPath(entityHierarchy);\n\t\t}\n\t\t_resolvePath(object, path, resolveLeaf) {\n\t\t\t\tconst steps = path.length - (resolveLeaf ? 0 : 1);\n\t\t\t\tfor(let i = 0; i < steps; i++){\n\t\t\t\t\t\tobject = object[path[i]];\n\t\t\t\t}\n\t\t\t\treturn object;\n\t\t}\n\t\t_setter(object, path, packFunc) {\n\t\t\t\tconst obj = this._resolvePath(object, path);\n\t\t\t\tconst key = path[path.length - 1];\n\t\t\t\tconst setterFuncName = `set${key.substring(0, 1).toUpperCase()}${key.substring(1)}`;\n\t\t\t\tif (obj[setterFuncName]) {\n\t\t\t\t\t\tconst getterFunc = obj[`get${key.substring(0, 1).toUpperCase()}${key.substring(1)}`].bind(obj);\n\t\t\t\t\t\tlet baseValues = getterFunc();\n\t\t\t\t\t\tbaseValues = [\n\t\t\t\t\t\t\t\tbaseValues.x,\n\t\t\t\t\t\t\t\tbaseValues.y,\n\t\t\t\t\t\t\t\tbaseValues.z,\n\t\t\t\t\t\t\t\tbaseValues.w\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst setterFunc = obj[setterFuncName].bind(obj);\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tset: (values)=>{\n\t\t\t\t\t\t\t\t\t\tsetterFunc(packFunc(values));\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tget: ()=>baseValues\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst prop = obj[key];\n\t\t\t\tif (typeof prop === 'object' && prop.hasOwnProperty('copy')) {\n\t\t\t\t\t\treturn function(values) {\n\t\t\t\t\t\t\t\tprop.copy(packFunc(values));\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif ([\n\t\t\t\t\t\tVec2,\n\t\t\t\t\t\tVec3,\n\t\t\t\t\t\tVec4,\n\t\t\t\t\t\tColor,\n\t\t\t\t\t\tQuat\n\t\t\t\t].indexOf(obj.constructor) !== -1 && path.length > 1) {\n\t\t\t\t\t\tconst parent = path.length > 2 ? this._resolvePath(object, path.slice(0, -1)) : object;\n\t\t\t\t\t\tconst objKey = path[path.length - 2];\n\t\t\t\t\t\treturn function(values) {\n\t\t\t\t\t\t\t\tobj[key] = packFunc(values);\n\t\t\t\t\t\t\t\tparent[objKey] = obj;\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn function(values) {\n\t\t\t\t\t\tobj[key] = packFunc(values);\n\t\t\t\t};\n\t\t}\n\t\t_createAnimTargetForProperty(propertyComponent, propertyHierarchy, targetPath) {\n\t\t\t\tif (this.handlers && propertyHierarchy[0].startsWith('weight.')) {\n\t\t\t\t\t\treturn this.handlers.weight(propertyComponent, propertyHierarchy[0].replace('weight.', ''));\n\t\t\t\t} else if (this.handlers && propertyHierarchy[0] === 'material' && propertyHierarchy.length === 2) {\n\t\t\t\t\t\tconst materialPropertyName = propertyHierarchy[1];\n\t\t\t\t\t\tif (materialPropertyName.endsWith('Map')) {\n\t\t\t\t\t\t\t\treturn this.handlers.materialTexture(propertyComponent, materialPropertyName);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst property = this._resolvePath(propertyComponent, propertyHierarchy, true);\n\t\t\t\tif (typeof property === 'undefined') {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet setter;\n\t\t\t\tlet animDataType;\n\t\t\t\tlet animDataComponents;\n\t\t\t\tif (typeof property === 'number') {\n\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packFloat);\n\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\tanimDataComponents = 1;\n\t\t\t\t} else if (typeof property === 'boolean') {\n\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packBoolean);\n\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\tanimDataComponents = 1;\n\t\t\t\t} else if (typeof property === 'object') {\n\t\t\t\t\t\tswitch(property.constructor){\n\t\t\t\t\t\t\t\tcase Vec2:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec2);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 2;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Vec3:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec3);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 3;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Vec4:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packVec4);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Color:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packColor);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'vector';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase Quat:\n\t\t\t\t\t\t\t\t\t\tsetter = this._setter(propertyComponent, propertyHierarchy, AnimComponentBinder._packQuat);\n\t\t\t\t\t\t\t\t\t\tanimDataType = 'quaternion';\n\t\t\t\t\t\t\t\t\t\tanimDataComponents = 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (propertyHierarchy.indexOf('material') !== -1) {\n\t\t\t\t\t\treturn new AnimTarget((values)=>{\n\t\t\t\t\t\t\t\tsetter(values);\n\t\t\t\t\t\t\t\tpropertyComponent.material.update();\n\t\t\t\t\t\t}, animDataType, animDataComponents, targetPath);\n\t\t\t\t}\n\t\t\t\treturn new AnimTarget(setter, animDataType, animDataComponents, targetPath);\n\t\t}\n\t\trebind() {\n\t\t\t\tthis.targetCache = {};\n\t\t\t\tif (this.animComponent.rootBone) {\n\t\t\t\t\t\tthis.graph = this.animComponent.rootBone;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.graph = this.animComponent.entity;\n\t\t\t\t}\n\t\t\t\tconst nodes = {};\n\t\t\t\tconst flatten = function(node) {\n\t\t\t\t\t\tnodes[node.name] = node;\n\t\t\t\t\t\tfor(let i = 0; i < node.children.length; ++i){\n\t\t\t\t\t\t\t\tflatten(node.children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tflatten(this.graph);\n\t\t\t\tthis.nodes = nodes;\n\t\t}\n}\n\nclass AnimComponentLayer {\n\t\tconstructor(name, controller, component, weight = 1, blendType = ANIM_LAYER_OVERWRITE){\n\t\t\t\tthis._mask = null;\n\t\t\t\tthis._blendTime = 0;\n\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t\t\tthis._startingWeight = 0;\n\t\t\t\tthis._targetWeight = 0;\n\t\t\t\tthis._name = name;\n\t\t\t\tthis._controller = controller;\n\t\t\t\tthis._component = component;\n\t\t\t\tthis._weight = weight;\n\t\t\t\tthis._blendType = blendType;\n\t\t}\n\t\tget name() {\n\t\t\t\treturn this._name;\n\t\t}\n\t\tset playing(value) {\n\t\t\t\tthis._controller.playing = value;\n\t\t}\n\t\tget playing() {\n\t\t\t\treturn this._controller.playing;\n\t\t}\n\t\tget playable() {\n\t\t\t\treturn this._controller.playable;\n\t\t}\n\t\tget activeState() {\n\t\t\t\treturn this._controller.activeStateName;\n\t\t}\n\t\tget previousState() {\n\t\t\t\treturn this._controller.previousStateName;\n\t\t}\n\t\tget activeStateProgress() {\n\t\t\t\treturn this._controller.activeStateProgress;\n\t\t}\n\t\tget activeStateDuration() {\n\t\t\t\treturn this._controller.activeStateDuration;\n\t\t}\n\t\tset activeStateCurrentTime(time) {\n\t\t\t\tconst controller = this._controller;\n\t\t\t\tconst layerPlaying = controller.playing;\n\t\t\t\tcontroller.playing = true;\n\t\t\t\tcontroller.activeStateCurrentTime = time;\n\t\t\t\tif (!layerPlaying) {\n\t\t\t\t\t\tcontroller.update(0);\n\t\t\t\t}\n\t\t\t\tcontroller.playing = layerPlaying;\n\t\t}\n\t\tget activeStateCurrentTime() {\n\t\t\t\treturn this._controller.activeStateCurrentTime;\n\t\t}\n\t\tget transitioning() {\n\t\t\t\treturn this._controller.transitioning;\n\t\t}\n\t\tget transitionProgress() {\n\t\t\t\tif (this.transitioning) {\n\t\t\t\t\t\treturn this._controller.transitionProgress;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tget states() {\n\t\t\t\treturn this._controller.states;\n\t\t}\n\t\tset weight(value) {\n\t\t\t\tthis._weight = value;\n\t\t\t\tthis._component.dirtifyTargets();\n\t\t}\n\t\tget weight() {\n\t\t\t\treturn this._weight;\n\t\t}\n\t\tset blendType(value) {\n\t\t\t\tif (value !== this._blendType) {\n\t\t\t\t\t\tthis._blendType = value;\n\t\t\t\t\t\tif (this._controller.normalizeWeights) {\n\t\t\t\t\t\t\t\tthis._component.rebind();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget blendType() {\n\t\t\t\treturn this._blendType;\n\t\t}\n\t\tset mask(value) {\n\t\t\t\tif (this._controller.assignMask(value)) {\n\t\t\t\t\t\tthis._component.rebind();\n\t\t\t\t}\n\t\t\t\tthis._mask = value;\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tplay(name) {\n\t\t\t\tthis._controller.play(name);\n\t\t}\n\t\tpause() {\n\t\t\t\tthis._controller.pause();\n\t\t}\n\t\treset() {\n\t\t\t\tthis._controller.reset();\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._controller.rebind();\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tif (this._blendTime) {\n\t\t\t\t\t\tif (this._blendTimeElapsed < this._blendTime) {\n\t\t\t\t\t\t\t\tthis.weight = math.lerp(this._startingWeight, this._targetWeight, this._blendTimeElapsed / this._blendTime);\n\t\t\t\t\t\t\t\tthis._blendTimeElapsed += dt;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.weight = this._targetWeight;\n\t\t\t\t\t\t\t\tthis._blendTime = 0;\n\t\t\t\t\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t\t\t\t\t\t\tthis._startingWeight = 0;\n\t\t\t\t\t\t\t\tthis._targetWeight = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._controller.update(dt);\n\t\t}\n\t\tblendToWeight(weight, time) {\n\t\t\t\tthis._startingWeight = this.weight;\n\t\t\t\tthis._targetWeight = weight;\n\t\t\t\tthis._blendTime = Math.max(0, time);\n\t\t\t\tthis._blendTimeElapsed = 0;\n\t\t}\n\t\tassignAnimation(nodePath, animTrack, speed, loop) {\n\t\t\t\tif (!(animTrack instanceof AnimTrack)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._controller.assignAnimation(nodePath, animTrack, speed, loop);\n\t\t\t\tif (this._controller._transitions.length === 0) {\n\t\t\t\t\t\tthis._controller._transitions.push(new AnimTransition({\n\t\t\t\t\t\t\t\tfrom: 'START',\n\t\t\t\t\t\t\t\tto: nodePath\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tif (this._component.activate && this._component.playable) {\n\t\t\t\t\t\tthis._component.playing = true;\n\t\t\t\t}\n\t\t}\n\t\tremoveNodeAnimations(nodeName) {\n\t\t\t\tif (this._controller.removeNodeAnimations(nodeName)) {\n\t\t\t\t\t\tthis._component.playing = false;\n\t\t\t\t}\n\t\t}\n\t\tgetAnimationAsset(stateName) {\n\t\t\t\treturn this._component.animationAssets[`${this.name}:${stateName}`];\n\t\t}\n\t\ttransition(to, time = 0, transitionOffset = null) {\n\t\t\t\tthis._controller.updateStateFromTransition(new AnimTransition({\n\t\t\t\t\t\tfrom: this._controller.activeStateName,\n\t\t\t\t\t\tto,\n\t\t\t\t\t\ttime,\n\t\t\t\t\t\ttransitionOffset\n\t\t\t\t}));\n\t\t}\n}\n\nclass AnimStateGraph {\n\t\tconstructor(data){\n\t\t\t\tthis._layers = [];\n\t\t\t\tthis._parameters = {};\n\t\t\t\tif (!Array.isArray(data.layers)) {\n\t\t\t\t\t\tfor(const layerId in data.layers){\n\t\t\t\t\t\t\t\tconst dataLayer = data.layers[layerId];\n\t\t\t\t\t\t\t\tconst layer = {\n\t\t\t\t\t\t\t\t\t\tname: dataLayer.name,\n\t\t\t\t\t\t\t\t\t\tblendType: dataLayer.blendType,\n\t\t\t\t\t\t\t\t\t\tweight: dataLayer.weight,\n\t\t\t\t\t\t\t\t\t\tstates: [],\n\t\t\t\t\t\t\t\t\t\ttransitions: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tfor(let i = 0; i < dataLayer.states.length; i++){\n\t\t\t\t\t\t\t\t\t\tlayer.states.push(data.states[dataLayer.states[i]]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let i = 0; i < dataLayer.transitions.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst dataLayerTransition = data.transitions[dataLayer.transitions[i]];\n\t\t\t\t\t\t\t\t\t\tif (dataLayerTransition.conditions && !Array.isArray(dataLayerTransition.conditions)) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst conditionKeys = Object.keys(dataLayerTransition.conditions);\n\t\t\t\t\t\t\t\t\t\t\t\tconst conditions = [];\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < conditionKeys.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst condition = dataLayerTransition.conditions[conditionKeys[j]];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (condition.parameterName) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconditions.push(condition);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tdataLayerTransition.conditions = conditions;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (Number.isInteger(dataLayerTransition.from)) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataLayerTransition.from = data.states[dataLayerTransition.from].name;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (Number.isInteger(dataLayerTransition.to)) {\n\t\t\t\t\t\t\t\t\t\t\t\tdataLayerTransition.to = data.states[dataLayerTransition.to].name;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tlayer.transitions.push(dataLayerTransition);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._layers.push(layer);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._layers = data.layers;\n\t\t\t\t}\n\t\t\t\tfor(const paramId in data.parameters){\n\t\t\t\t\t\tconst param = data.parameters[paramId];\n\t\t\t\t\t\tthis._parameters[param.name] = {\n\t\t\t\t\t\t\t\ttype: param.type,\n\t\t\t\t\t\t\t\tvalue: param.value\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tget parameters() {\n\t\t\t\treturn Object.assign({}, this._parameters);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n}\n\nclass AnimComponent extends Component {\n\t\tset stateGraphAsset(value) {\n\t\t\t\tif (value === null) {\n\t\t\t\t\t\tthis.removeStateGraph();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._stateGraphAsset) {\n\t\t\t\t\t\tconst stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset);\n\t\t\t\t\t\tstateGraphAsset.off('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t}\n\t\t\t\tlet _id;\n\t\t\t\tlet _asset;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t\t\t\tif (!_asset) {\n\t\t\t\t\t\t\t\tthis.system.app.assets.add(value);\n\t\t\t\t\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_id = value;\n\t\t\t\t\t\t_asset = this.system.app.assets.get(_id);\n\t\t\t\t}\n\t\t\t\tif (!_asset || this._stateGraphAsset === _id) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (_asset.resource) {\n\t\t\t\t\t\tthis._stateGraph = _asset.resource;\n\t\t\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t\t\t\t_asset.on('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t} else {\n\t\t\t\t\t\t_asset.once('load', (asset)=>{\n\t\t\t\t\t\t\t\tthis._stateGraph = asset.resource;\n\t\t\t\t\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_asset.on('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t\t\tthis.system.app.assets.load(_asset);\n\t\t\t\t}\n\t\t\t\tthis._stateGraphAsset = _id;\n\t\t}\n\t\tget stateGraphAsset() {\n\t\t\t\treturn this._stateGraphAsset;\n\t\t}\n\t\tset normalizeWeights(value) {\n\t\t\t\tthis._normalizeWeights = value;\n\t\t\t\tthis.unbind();\n\t\t}\n\t\tget normalizeWeights() {\n\t\t\t\treturn this._normalizeWeights;\n\t\t}\n\t\tset animationAssets(value) {\n\t\t\t\tthis._animationAssets = value;\n\t\t\t\tthis.loadAnimationAssets();\n\t\t}\n\t\tget animationAssets() {\n\t\t\t\treturn this._animationAssets;\n\t\t}\n\t\tset speed(value) {\n\t\t\t\tthis._speed = value;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset activate(value) {\n\t\t\t\tthis._activate = value;\n\t\t}\n\t\tget activate() {\n\t\t\t\treturn this._activate;\n\t\t}\n\t\tset playing(value) {\n\t\t\t\tthis._playing = value;\n\t\t}\n\t\tget playing() {\n\t\t\t\treturn this._playing;\n\t\t}\n\t\tset rootBone(value) {\n\t\t\t\tif (typeof value === 'string') {\n\t\t\t\t\t\tconst entity = this.entity.root.findByGuid(value);\n\t\t\t\t\t\tthis._rootBone = entity;\n\t\t\t\t} else if (value instanceof Entity) {\n\t\t\t\t\t\tthis._rootBone = value;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._rootBone = null;\n\t\t\t\t}\n\t\t\t\tthis.rebind();\n\t\t}\n\t\tget rootBone() {\n\t\t\t\treturn this._rootBone;\n\t\t}\n\t\tset stateGraph(value) {\n\t\t\t\tthis._stateGraph = value;\n\t\t}\n\t\tget stateGraph() {\n\t\t\t\treturn this._stateGraph;\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset layerIndices(value) {\n\t\t\t\tthis._layerIndices = value;\n\t\t}\n\t\tget layerIndices() {\n\t\t\t\treturn this._layerIndices;\n\t\t}\n\t\tset parameters(value) {\n\t\t\t\tthis._parameters = value;\n\t\t}\n\t\tget parameters() {\n\t\t\t\treturn this._parameters;\n\t\t}\n\t\tset targets(value) {\n\t\t\t\tthis._targets = value;\n\t\t}\n\t\tget targets() {\n\t\t\t\treturn this._targets;\n\t\t}\n\t\tget playable() {\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tif (!this._layers[i].playable) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tget baseLayer() {\n\t\t\t\tif (this._layers.length > 0) {\n\t\t\t\t\t\treturn this._layers[0];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_onStateGraphAssetChangeEvent(asset) {\n\t\t\t\tconst prevAnimationAssets = this.animationAssets;\n\t\t\t\tconst prevMasks = this.layers.map((layer)=>layer.mask);\n\t\t\t\tthis.removeStateGraph();\n\t\t\t\tthis._stateGraph = new AnimStateGraph(asset._data);\n\t\t\t\tthis.loadStateGraph(this._stateGraph);\n\t\t\t\tthis.animationAssets = prevAnimationAssets;\n\t\t\t\tthis.loadAnimationAssets();\n\t\t\t\tthis.layers.forEach((layer, i)=>{\n\t\t\t\t\t\tlayer.mask = prevMasks[i];\n\t\t\t\t});\n\t\t\t\tthis.rebind();\n\t\t}\n\t\tdirtifyTargets() {\n\t\t\t\tconst targets = Object.values(this._targets);\n\t\t\t\tfor(let i = 0; i < targets.length; i++){\n\t\t\t\t\t\ttargets[i].dirty = true;\n\t\t\t\t}\n\t\t}\n\t\t_addLayer({ name, states, transitions, weight, mask, blendType }) {\n\t\t\t\tlet graph;\n\t\t\t\tif (this.rootBone) {\n\t\t\t\t\t\tgraph = this.rootBone;\n\t\t\t\t} else {\n\t\t\t\t\t\tgraph = this.entity;\n\t\t\t\t}\n\t\t\t\tconst layerIndex = this._layers.length;\n\t\t\t\tconst animBinder = new AnimComponentBinder(this, graph, name, mask, layerIndex);\n\t\t\t\tconst animEvaluator = new AnimEvaluator(animBinder);\n\t\t\t\tconst controller = new AnimController(animEvaluator, states, transitions, this._activate, this, this.findParameter, this.consumeTrigger);\n\t\t\t\tthis._layers.push(new AnimComponentLayer(name, controller, this, weight, blendType));\n\t\t\t\tthis._layerIndices[name] = layerIndex;\n\t\t\t\treturn this._layers[layerIndex];\n\t\t}\n\t\taddLayer(name, weight, mask, blendType) {\n\t\t\t\tconst layer = this.findAnimationLayer(name);\n\t\t\t\tif (layer) return layer;\n\t\t\t\tconst states = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t\t}\n\t\t\t\t];\n\t\t\t\tconst transitions = [];\n\t\t\t\treturn this._addLayer({\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tstates,\n\t\t\t\t\t\ttransitions,\n\t\t\t\t\t\tweight,\n\t\t\t\t\t\tmask,\n\t\t\t\t\t\tblendType\n\t\t\t\t});\n\t\t}\n\t\t_assignParameters(stateGraph) {\n\t\t\t\tthis._parameters = {};\n\t\t\t\tconst paramKeys = Object.keys(stateGraph.parameters);\n\t\t\t\tfor(let i = 0; i < paramKeys.length; i++){\n\t\t\t\t\t\tconst paramKey = paramKeys[i];\n\t\t\t\t\t\tthis._parameters[paramKey] = {\n\t\t\t\t\t\t\t\ttype: stateGraph.parameters[paramKey].type,\n\t\t\t\t\t\t\t\tvalue: stateGraph.parameters[paramKey].value\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tloadStateGraph(stateGraph) {\n\t\t\t\tthis._stateGraph = stateGraph;\n\t\t\t\tthis._assignParameters(stateGraph);\n\t\t\t\tthis._layers = [];\n\t\t\t\tlet containsBlendTree = false;\n\t\t\t\tfor(let i = 0; i < stateGraph.layers.length; i++){\n\t\t\t\t\t\tconst layer = stateGraph.layers[i];\n\t\t\t\t\t\tthis._addLayer({\n\t\t\t\t\t\t\t\t...layer\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (layer.states.some((state)=>state.blendTree)) {\n\t\t\t\t\t\t\t\tcontainsBlendTree = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!containsBlendTree) {\n\t\t\t\t\t\tthis.setupAnimationAssets();\n\t\t\t\t}\n\t\t}\n\t\tsetupAnimationAssets() {\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = this._layers[i];\n\t\t\t\t\t\tconst layerName = layer.name;\n\t\t\t\t\t\tfor(let j = 0; j < layer.states.length; j++){\n\t\t\t\t\t\t\t\tconst stateName = layer.states[j];\n\t\t\t\t\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(stateName) === -1) {\n\t\t\t\t\t\t\t\t\t\tconst stateKey = `${layerName}:${stateName}`;\n\t\t\t\t\t\t\t\t\t\tif (!this._animationAssets[stateKey]) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._animationAssets[stateKey] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tasset: null\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.loadAnimationAssets();\n\t\t}\n\t\tloadAnimationAssets() {\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = this._layers[i];\n\t\t\t\t\t\tfor(let j = 0; j < layer.states.length; j++){\n\t\t\t\t\t\t\t\tconst stateName = layer.states[j];\n\t\t\t\t\t\t\t\tif (ANIM_CONTROL_STATES.indexOf(stateName) !== -1) continue;\n\t\t\t\t\t\t\t\tconst animationAsset = this._animationAssets[`${layer.name}:${stateName}`];\n\t\t\t\t\t\t\t\tif (!animationAsset || !animationAsset.asset) {\n\t\t\t\t\t\t\t\t\t\tthis.findAnimationLayer(layer.name).assignAnimation(stateName, AnimTrack.EMPTY);\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst assetId = animationAsset.asset;\n\t\t\t\t\t\t\t\tconst asset = this.system.app.assets.get(assetId);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.onAnimationAssetLoaded(layer.name, stateName, asset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.once('load', (function(layerName, stateName) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn (function(asset) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.onAnimationAssetLoaded(layerName, stateName, asset);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}).bind(this);\n\t\t\t\t\t\t\t\t\t\t\t\t}).bind(this)(layer.name, stateName));\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonAnimationAssetLoaded(layerName, stateName, asset) {\n\t\t\t\tthis.findAnimationLayer(layerName).assignAnimation(stateName, asset.resource);\n\t\t}\n\t\tremoveStateGraph() {\n\t\t\t\tthis._stateGraph = null;\n\t\t\t\tthis._stateGraphAsset = null;\n\t\t\t\tthis._animationAssets = {};\n\t\t\t\tthis._layers = [];\n\t\t\t\tthis._layerIndices = {};\n\t\t\t\tthis._parameters = {};\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis.unbind();\n\t\t\t\tthis._targets = {};\n\t\t}\n\t\treset() {\n\t\t\t\tthis._assignParameters(this._stateGraph);\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layerPlaying = this._layers[i].playing;\n\t\t\t\t\t\tthis._layers[i].reset();\n\t\t\t\t\t\tthis._layers[i].playing = layerPlaying;\n\t\t\t\t}\n\t\t}\n\t\tunbind() {\n\t\t\t\tif (!this._normalizeWeights) {\n\t\t\t\t\t\tObject.keys(this._targets).forEach((targetKey)=>{\n\t\t\t\t\t\t\t\tthis._targets[targetKey].unbind();\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\trebind() {\n\t\t\t\tthis._targets = {};\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tthis._layers[i].rebind();\n\t\t\t\t}\n\t\t}\n\t\tfindAnimationLayer(name) {\n\t\t\t\tconst layerIndex = this._layerIndices[name];\n\t\t\t\treturn this._layers[layerIndex] || null;\n\t\t}\n\t\taddAnimationState(nodeName, animTrack, speed = 1, loop = true, layerName = 'Base') {\n\t\t\t\tif (!this._stateGraph) {\n\t\t\t\t\t\tthis.loadStateGraph(new AnimStateGraph({\n\t\t\t\t\t\t\t\t'layers': [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'name': layerName,\n\t\t\t\t\t\t\t\t\t\t\t\t'states': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': nodeName,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': speed,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'loop': loop,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'defaultState': true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t'transitions': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'from': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'to': nodeName\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t'parameters': {}\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\tconst layer = this.findAnimationLayer(layerName);\n\t\t\t\tif (layer) {\n\t\t\t\t\t\tlayer.assignAnimation(nodeName, animTrack, speed, loop);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.addLayer(layerName)?.assignAnimation(nodeName, animTrack, speed, loop);\n\t\t\t\t}\n\t\t}\n\t\tassignAnimation(nodePath, animTrack, layerName, speed = 1, loop = true) {\n\t\t\t\tif (!this._stateGraph && nodePath.indexOf('.') === -1) {\n\t\t\t\t\t\tthis.loadStateGraph(new AnimStateGraph({\n\t\t\t\t\t\t\t\t'layers': [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'name': 'Base',\n\t\t\t\t\t\t\t\t\t\t\t\t'states': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': 1\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'name': nodePath,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'speed': speed,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'loop': loop,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'defaultState': true\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t'transitions': [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'from': 'START',\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t'to': nodePath\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t'parameters': {}\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tthis.baseLayer.assignAnimation(nodePath, animTrack);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer;\n\t\t\t\tif (!layer) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlayer.assignAnimation(nodePath, animTrack, speed, loop);\n\t\t}\n\t\tremoveNodeAnimations(nodeName, layerName) {\n\t\t\t\tconst layer = layerName ? this.findAnimationLayer(layerName) : this.baseLayer;\n\t\t\t\tif (!layer) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlayer.removeNodeAnimations(nodeName);\n\t\t}\n\t\tgetParameterValue(name, type) {\n\t\t\t\tconst param = this._parameters[name];\n\t\t\t\tif (param && param.type === type) {\n\t\t\t\t\t\treturn param.value;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\tsetParameterValue(name, type, value) {\n\t\t\t\tconst param = this._parameters[name];\n\t\t\t\tif (param && param.type === type) {\n\t\t\t\t\t\tparam.value = value;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t}\n\t\tgetFloat(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_FLOAT);\n\t\t}\n\t\tsetFloat(name, value) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_FLOAT, value);\n\t\t}\n\t\tgetInteger(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_INTEGER);\n\t\t}\n\t\tsetInteger(name, value) {\n\t\t\t\tif (typeof value === 'number' && value % 1 === 0) {\n\t\t\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_INTEGER, value);\n\t\t\t\t}\n\t\t}\n\t\tgetBoolean(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_BOOLEAN);\n\t\t}\n\t\tsetBoolean(name, value) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_BOOLEAN, !!value);\n\t\t}\n\t\tgetTrigger(name) {\n\t\t\t\treturn this.getParameterValue(name, ANIM_PARAMETER_TRIGGER);\n\t\t}\n\t\tsetTrigger(name, singleFrame = false) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_TRIGGER, true);\n\t\t\t\tif (singleFrame) {\n\t\t\t\t\t\tthis._consumedTriggers.add(name);\n\t\t\t\t}\n\t\t}\n\t\tresetTrigger(name) {\n\t\t\t\tthis.setParameterValue(name, ANIM_PARAMETER_TRIGGER, false);\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tif (Number.isFinite(this._stateGraphAsset)) {\n\t\t\t\t\t\tconst stateGraphAsset = this.system.app.assets.get(this._stateGraphAsset);\n\t\t\t\t\t\tstateGraphAsset.off('change', this._onStateGraphAssetChangeEvent, this);\n\t\t\t\t}\n\t\t}\n\t\tupdate(dt) {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tthis.layers[i].update(dt * this.speed);\n\t\t\t\t}\n\t\t\t\tthis._consumedTriggers.forEach((trigger)=>{\n\t\t\t\t\t\tthis.parameters[trigger].value = false;\n\t\t\t\t});\n\t\t\t\tthis._consumedTriggers.clear();\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldAnim, duplicatedIdsMap) {\n\t\t\t\tif (oldAnim.rootBone && duplicatedIdsMap[oldAnim.rootBone.getGuid()]) {\n\t\t\t\t\t\tthis.rootBone = duplicatedIdsMap[oldAnim.rootBone.getGuid()];\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.rebind();\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._stateGraphAsset = null, this._animationAssets = {}, this._speed = 1, this._activate = true, this._playing = false, this._rootBone = null, this._stateGraph = null, this._layers = [], this._layerIndices = {}, this._parameters = {}, this._targets = {}, this._consumedTriggers = new Set(), this._normalizeWeights = false, this.findParameter = (name)=>{\n\t\t\t\t\t\treturn this._parameters[name];\n\t\t\t\t}, this.consumeTrigger = (name)=>{\n\t\t\t\t\t\tthis._consumedTriggers.add(name);\n\t\t\t\t};\n\t\t}\n}\n\nclass AnimComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$j = [\n\t\t'enabled'\n];\nclass AnimComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'anim';\n\t\t\t\tthis.ComponentType = AnimComponent;\n\t\t\t\tthis.DataType = AnimComponentData;\n\t\t\t\tthis.schema = _schema$j;\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('animationUpdate', this.onAnimationUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$j);\n\t\t\t\tconst complexProperties = [\n\t\t\t\t\t\t'animationAssets',\n\t\t\t\t\t\t'stateGraph',\n\t\t\t\t\t\t'layers',\n\t\t\t\t\t\t'masks'\n\t\t\t\t];\n\t\t\t\tObject.keys(data).forEach((key)=>{\n\t\t\t\t\t\tif (complexProperties.includes(key)) return;\n\t\t\t\t\t\tcomponent[key] = data[key];\n\t\t\t\t});\n\t\t\t\tif (data.stateGraph) {\n\t\t\t\t\t\tcomponent.stateGraph = data.stateGraph;\n\t\t\t\t\t\tcomponent.loadStateGraph(component.stateGraph);\n\t\t\t\t}\n\t\t\t\tif (data.layers) {\n\t\t\t\t\t\tdata.layers.forEach((layer, i)=>{\n\t\t\t\t\t\t\t\tlayer._controller.states.forEach((stateKey)=>{\n\t\t\t\t\t\t\t\t\t\tlayer._controller._states[stateKey]._animationList.forEach((node)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (!node.animTrack || node.animTrack === AnimTrack.EMPTY) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst animationAsset = this.app.assets.get(layer._component._animationAssets[`${layer.name}:${node.name}`].asset);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (animationAsset && !animationAsset.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanimationAsset.once('load', ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent.layers[i].assignAnimation(node.name, animationAsset.resource);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent.layers[i].assignAnimation(node.name, node.animTrack);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (data.animationAssets) {\n\t\t\t\t\t\tcomponent.animationAssets = Object.assign(component.animationAssets, data.animationAssets);\n\t\t\t\t}\n\t\t\t\tif (data.masks) {\n\t\t\t\t\t\tObject.keys(data.masks).forEach((key)=>{\n\t\t\t\t\t\t\t\tif (component.layers[key]) {\n\t\t\t\t\t\t\t\t\t\tconst maskData = data.masks[key].mask;\n\t\t\t\t\t\t\t\t\t\tconst mask = {};\n\t\t\t\t\t\t\t\t\t\tObject.keys(maskData).forEach((maskKey)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tmask[decodeURI(maskKey)] = maskData[maskKey];\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tcomponent.layers[key].mask = mask;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tonAnimationUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id].entity.anim;\n\t\t\t\t\t\t\t\tconst componentData = component.data;\n\t\t\t\t\t\t\t\tif (componentData.enabled && component.entity.enabled && component.playing) {\n\t\t\t\t\t\t\t\t\t\tcomponent.update(dt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tlet masks;\n\t\t\t\tif (!entity.anim.rootBone || entity.anim.rootBone === entity) {\n\t\t\t\t\t\tmasks = {};\n\t\t\t\t\t\tentity.anim.layers.forEach((layer, i)=>{\n\t\t\t\t\t\t\t\tif (layer.mask) {\n\t\t\t\t\t\t\t\t\t\tconst mask = {};\n\t\t\t\t\t\t\t\t\t\tObject.keys(layer.mask).forEach((path)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tconst pathArr = path.split('/');\n\t\t\t\t\t\t\t\t\t\t\t\tpathArr.shift();\n\t\t\t\t\t\t\t\t\t\t\t\tconst clonePath = [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tclone.name,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t...pathArr\n\t\t\t\t\t\t\t\t\t\t\t\t].join('/');\n\t\t\t\t\t\t\t\t\t\t\t\tmask[clonePath] = layer.mask[path];\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tmasks[i] = {\n\t\t\t\t\t\t\t\t\t\t\t\tmask\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: entity.anim.enabled,\n\t\t\t\t\t\tstateGraphAsset: entity.anim.stateGraphAsset,\n\t\t\t\t\t\tanimationAssets: entity.anim.animationAssets,\n\t\t\t\t\t\tspeed: entity.anim.speed,\n\t\t\t\t\t\tactivate: entity.anim.activate,\n\t\t\t\t\t\tplaying: entity.anim.playing,\n\t\t\t\t\t\trootBone: entity.anim.rootBone,\n\t\t\t\t\t\tstateGraph: entity.anim.stateGraph,\n\t\t\t\t\t\tlayers: entity.anim.layers,\n\t\t\t\t\t\tlayerIndices: entity.anim.layerIndices,\n\t\t\t\t\t\tparameters: entity.anim.parameters,\n\t\t\t\t\t\tnormalizeWeights: entity.anim.normalizeWeights,\n\t\t\t\t\t\tmasks\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('animationUpdate', this.onAnimationUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(AnimComponent.prototype, _schema$j);\n\nclass AudioListenerComponent extends Component {\n\t\tsetCurrentListener() {\n\t\t\t\tif (this.enabled && this.entity.audiolistener && this.entity.enabled) {\n\t\t\t\t\t\tthis.system.current = this.entity;\n\t\t\t\t\t\tconst position = this.system.current.getPosition();\n\t\t\t\t\t\tthis.system.manager.listener.setPosition(position);\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis.setCurrentListener();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tif (this.system.current === this.entity) {\n\t\t\t\t\t\tthis.system.current = null;\n\t\t\t\t}\n\t\t}\n}\n\nclass AudioListenerComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$i = [\n\t\t'enabled'\n];\nclass AudioListenerComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'audiolistener';\n\t\t\t\tthis.ComponentType = AudioListenerComponent;\n\t\t\t\tthis.DataType = AudioListenerComponentData;\n\t\t\t\tthis.schema = _schema$i;\n\t\t\t\tthis.manager = app.soundManager;\n\t\t\t\tthis.current = null;\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t];\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tif (this.current) {\n\t\t\t\t\t\tconst position = this.current.getPosition();\n\t\t\t\t\t\tthis.manager.listener.setPosition(position);\n\t\t\t\t\t\tconst wtm = this.current.getWorldTransform();\n\t\t\t\t\t\tthis.manager.listener.setOrientation(wtm);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(AudioListenerComponent.prototype, _schema$i);\n\nconst BUTTON_TRANSITION_MODE_TINT = 0;\nconst BUTTON_TRANSITION_MODE_SPRITE_CHANGE = 1;\n\nconst ELEMENTTYPE_GROUP = 'group';\nconst ELEMENTTYPE_IMAGE = 'image';\nconst ELEMENTTYPE_TEXT = 'text';\nconst FITMODE_STRETCH = 'stretch';\nconst FITMODE_CONTAIN = 'contain';\nconst FITMODE_COVER = 'cover';\n\nconst VisualState = {\n\t\tDEFAULT: 'DEFAULT',\n\t\tHOVER: 'HOVER',\n\t\tPRESSED: 'PRESSED',\n\t\tINACTIVE: 'INACTIVE'\n};\nconst STATES_TO_TINT_NAMES = {};\nSTATES_TO_TINT_NAMES[VisualState.DEFAULT] = '_defaultTint';\nSTATES_TO_TINT_NAMES[VisualState.HOVER] = 'hoverTint';\nSTATES_TO_TINT_NAMES[VisualState.PRESSED] = 'pressedTint';\nSTATES_TO_TINT_NAMES[VisualState.INACTIVE] = 'inactiveTint';\nconst STATES_TO_SPRITE_ASSET_NAMES = {};\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.DEFAULT] = '_defaultSpriteAsset';\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.HOVER] = 'hoverSpriteAsset';\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.PRESSED] = 'pressedSpriteAsset';\nSTATES_TO_SPRITE_ASSET_NAMES[VisualState.INACTIVE] = 'inactiveSpriteAsset';\nconst STATES_TO_SPRITE_FRAME_NAMES = {};\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.DEFAULT] = '_defaultSpriteFrame';\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.HOVER] = 'hoverSpriteFrame';\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.PRESSED] = 'pressedSpriteFrame';\nSTATES_TO_SPRITE_FRAME_NAMES[VisualState.INACTIVE] = 'inactiveSpriteFrame';\nclass ButtonComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEDOWN = 'mousedown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEUP = 'mouseup';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEENTER = 'mouseenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSELEAVE = 'mouseleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CLICK = 'click';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHSTART = 'touchstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHEND = 'touchend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHCANCEL = 'touchcancel';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHLEAVE = 'touchleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTSTART = 'selectstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTEND = 'selectend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTENTER = 'selectenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTLEAVE = 'selectleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HOVERSTART = 'hoverstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HOVEREND = 'hoverend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRESSEDSTART = 'pressedstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PRESSEDEND = 'pressedend';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._visualState = VisualState.DEFAULT, this._isHovering = false, this._hoveringCounter = 0, this._isPressed = false, this._defaultTint = new Color(1, 1, 1, 1), this._defaultSpriteAsset = null, this._defaultSpriteFrame = 0, this._imageEntity = null, this._evtElementAdd = null, this._evtImageEntityElementAdd = null, this._evtImageEntityElementRemove = null, this._evtImageEntityElementColor = null, this._evtImageEntityElementOpacity = null, this._evtImageEntityElementSpriteAsset = null, this._evtImageEntityElementSpriteFrame = null;\n\t\t\t\tthis._visualState = VisualState.DEFAULT;\n\t\t\t\tthis._isHovering = false;\n\t\t\t\tthis._hoveringCounter = 0;\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._defaultTint = new Color(1, 1, 1, 1);\n\t\t\t\tthis._defaultSpriteAsset = null;\n\t\t\t\tthis._defaultSpriteFrame = 0;\n\t\t\t\tthis._toggleLifecycleListeners('on', system);\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset active(arg) {\n\t\t\t\tthis._setValue('active', arg);\n\t\t}\n\t\tget active() {\n\t\t\t\treturn this.data.active;\n\t\t}\n\t\tset imageEntity(arg) {\n\t\t\t\tif (this._imageEntity !== arg) {\n\t\t\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\t\t\tif (this._imageEntity && isString && this._imageEntity.getGuid() === arg) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._imageEntity) {\n\t\t\t\t\t\t\t\tthis._imageEntityUnsubscribe();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\t\t\tthis._imageEntity = arg;\n\t\t\t\t\t\t} else if (isString) {\n\t\t\t\t\t\t\t\tthis._imageEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._imageEntity = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._imageEntity) {\n\t\t\t\t\t\t\t\tthis._imageEntitySubscribe();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._imageEntity) {\n\t\t\t\t\t\t\t\tthis.data.imageEntity = this._imageEntity.getGuid();\n\t\t\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\t\t\tthis.data.imageEntity = arg;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget imageEntity() {\n\t\t\t\treturn this._imageEntity;\n\t\t}\n\t\tset hitPadding(arg) {\n\t\t\t\tthis._setValue('hitPadding', arg);\n\t\t}\n\t\tget hitPadding() {\n\t\t\t\treturn this.data.hitPadding;\n\t\t}\n\t\tset transitionMode(arg) {\n\t\t\t\tthis._setValue('transitionMode', arg);\n\t\t}\n\t\tget transitionMode() {\n\t\t\t\treturn this.data.transitionMode;\n\t\t}\n\t\tset hoverTint(arg) {\n\t\t\t\tthis._setValue('hoverTint', arg);\n\t\t}\n\t\tget hoverTint() {\n\t\t\t\treturn this.data.hoverTint;\n\t\t}\n\t\tset pressedTint(arg) {\n\t\t\t\tthis._setValue('pressedTint', arg);\n\t\t}\n\t\tget pressedTint() {\n\t\t\t\treturn this.data.pressedTint;\n\t\t}\n\t\tset inactiveTint(arg) {\n\t\t\t\tthis._setValue('inactiveTint', arg);\n\t\t}\n\t\tget inactiveTint() {\n\t\t\t\treturn this.data.inactiveTint;\n\t\t}\n\t\tset fadeDuration(arg) {\n\t\t\t\tthis._setValue('fadeDuration', arg);\n\t\t}\n\t\tget fadeDuration() {\n\t\t\t\treturn this.data.fadeDuration;\n\t\t}\n\t\tset hoverSpriteAsset(arg) {\n\t\t\t\tthis._setValue('hoverSpriteAsset', arg);\n\t\t}\n\t\tget hoverSpriteAsset() {\n\t\t\t\treturn this.data.hoverSpriteAsset;\n\t\t}\n\t\tset hoverSpriteFrame(arg) {\n\t\t\t\tthis._setValue('hoverSpriteFrame', arg);\n\t\t}\n\t\tget hoverSpriteFrame() {\n\t\t\t\treturn this.data.hoverSpriteFrame;\n\t\t}\n\t\tset pressedSpriteAsset(arg) {\n\t\t\t\tthis._setValue('pressedSpriteAsset', arg);\n\t\t}\n\t\tget pressedSpriteAsset() {\n\t\t\t\treturn this.data.pressedSpriteAsset;\n\t\t}\n\t\tset pressedSpriteFrame(arg) {\n\t\t\t\tthis._setValue('pressedSpriteFrame', arg);\n\t\t}\n\t\tget pressedSpriteFrame() {\n\t\t\t\treturn this.data.pressedSpriteFrame;\n\t\t}\n\t\tset inactiveSpriteAsset(arg) {\n\t\t\t\tthis._setValue('inactiveSpriteAsset', arg);\n\t\t}\n\t\tget inactiveSpriteAsset() {\n\t\t\t\treturn this.data.inactiveSpriteAsset;\n\t\t}\n\t\tset inactiveSpriteFrame(arg) {\n\t\t\t\tthis._setValue('inactiveSpriteFrame', arg);\n\t\t}\n\t\tget inactiveSpriteFrame() {\n\t\t\t\treturn this.data.inactiveSpriteFrame;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff, system) {\n\t\t\t\tthis[onOrOff]('set_active', this._onSetActive, this);\n\t\t\t\tthis[onOrOff]('set_transitionMode', this._onSetTransitionMode, this);\n\t\t\t\tthis[onOrOff]('set_hoverTint', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_pressedTint', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_inactiveTint', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_hoverSpriteAsset', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_hoverSpriteFrame', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_pressedSpriteAsset', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_pressedSpriteFrame', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_inactiveSpriteAsset', this._onSetTransitionValue, this);\n\t\t\t\tthis[onOrOff]('set_inactiveSpriteFrame', this._onSetTransitionValue, this);\n\t\t\t\tif (onOrOff === 'on') {\n\t\t\t\t\t\tthis._evtElementAdd = this.entity.on('element:add', this._onElementComponentAdd, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._evtElementAdd?.off();\n\t\t\t\t\t\tthis._evtElementAdd = null;\n\t\t\t\t}\n\t\t}\n\t\t_onSetActive(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetTransitionMode(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis._cancelTween();\n\t\t\t\t\t\tthis._resetToDefaultVisualState(oldValue);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetTransitionValue(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_imageEntitySubscribe() {\n\t\t\t\tthis._evtImageEntityElementAdd = this._imageEntity.on('element:add', this._onImageElementGain, this);\n\t\t\t\tif (this._imageEntity.element) {\n\t\t\t\t\t\tthis._onImageElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_imageEntityUnsubscribe() {\n\t\t\t\tthis._evtImageEntityElementAdd?.off();\n\t\t\t\tthis._evtImageEntityElementAdd = null;\n\t\t\t\tif (this._imageEntity?.element) {\n\t\t\t\t\t\tthis._onImageElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_imageEntityElementSubscribe() {\n\t\t\t\tconst element = this._imageEntity.element;\n\t\t\t\tthis._evtImageEntityElementRemove = element.once('beforeremove', this._onImageElementLose, this);\n\t\t\t\tthis._evtImageEntityElementColor = element.on('set:color', this._onSetColor, this);\n\t\t\t\tthis._evtImageEntityElementOpacity = element.on('set:opacity', this._onSetOpacity, this);\n\t\t\t\tthis._evtImageEntityElementSpriteAsset = element.on('set:spriteAsset', this._onSetSpriteAsset, this);\n\t\t\t\tthis._evtImageEntityElementSpriteFrame = element.on('set:spriteFrame', this._onSetSpriteFrame, this);\n\t\t}\n\t\t_imageEntityElementUnsubscribe() {\n\t\t\t\tthis._evtImageEntityElementRemove?.off();\n\t\t\t\tthis._evtImageEntityElementRemove = null;\n\t\t\t\tthis._evtImageEntityElementColor?.off();\n\t\t\t\tthis._evtImageEntityElementColor = null;\n\t\t\t\tthis._evtImageEntityElementOpacity?.off();\n\t\t\t\tthis._evtImageEntityElementOpacity = null;\n\t\t\t\tthis._evtImageEntityElementSpriteAsset?.off();\n\t\t\t\tthis._evtImageEntityElementSpriteAsset = null;\n\t\t\t\tthis._evtImageEntityElementSpriteFrame?.off();\n\t\t\t\tthis._evtImageEntityElementSpriteFrame = null;\n\t\t}\n\t\t_onElementComponentRemove() {\n\t\t\t\tthis._toggleHitElementListeners('off');\n\t\t}\n\t\t_onElementComponentAdd() {\n\t\t\t\tthis._toggleHitElementListeners('on');\n\t\t}\n\t\t_onImageElementLose() {\n\t\t\t\tthis._imageEntityElementUnsubscribe();\n\t\t\t\tthis._cancelTween();\n\t\t\t\tthis._resetToDefaultVisualState(this.transitionMode);\n\t\t}\n\t\t_onImageElementGain() {\n\t\t\t\tthis._imageEntityElementSubscribe();\n\t\t\t\tthis._storeDefaultVisualState();\n\t\t\t\tthis._forceReapplyVisualState();\n\t\t}\n\t\t_toggleHitElementListeners(onOrOff) {\n\t\t\t\tif (this.entity.element) {\n\t\t\t\t\t\tconst isAdding = onOrOff === 'on';\n\t\t\t\t\t\tif (isAdding && this._hasHitElementListeners) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.entity.element[onOrOff]('beforeremove', this._onElementComponentRemove, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mouseenter', this._onMouseEnter, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mouseleave', this._onMouseLeave, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mousedown', this._onMouseDown, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mouseup', this._onMouseUp, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchstart', this._onTouchStart, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchend', this._onTouchEnd, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchleave', this._onTouchLeave, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('touchcancel', this._onTouchCancel, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectstart', this._onSelectStart, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectend', this._onSelectEnd, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectenter', this._onSelectEnter, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('selectleave', this._onSelectLeave, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('click', this._onClick, this);\n\t\t\t\t\t\tthis._hasHitElementListeners = isAdding;\n\t\t\t\t}\n\t\t}\n\t\t_storeDefaultVisualState() {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!element || element.type === ELEMENTTYPE_GROUP) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._storeDefaultColor(element.color);\n\t\t\t\tthis._storeDefaultOpacity(element.opacity);\n\t\t\t\tthis._storeDefaultSpriteAsset(element.spriteAsset);\n\t\t\t\tthis._storeDefaultSpriteFrame(element.spriteFrame);\n\t\t}\n\t\t_storeDefaultColor(color) {\n\t\t\t\tthis._defaultTint.r = color.r;\n\t\t\t\tthis._defaultTint.g = color.g;\n\t\t\t\tthis._defaultTint.b = color.b;\n\t\t}\n\t\t_storeDefaultOpacity(opacity) {\n\t\t\t\tthis._defaultTint.a = opacity;\n\t\t}\n\t\t_storeDefaultSpriteAsset(spriteAsset) {\n\t\t\t\tthis._defaultSpriteAsset = spriteAsset;\n\t\t}\n\t\t_storeDefaultSpriteFrame(spriteFrame) {\n\t\t\t\tthis._defaultSpriteFrame = spriteFrame;\n\t\t}\n\t\t_onSetColor(color) {\n\t\t\t\tif (!this._isApplyingTint) {\n\t\t\t\t\t\tthis._storeDefaultColor(color);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetOpacity(opacity) {\n\t\t\t\tif (!this._isApplyingTint) {\n\t\t\t\t\t\tthis._storeDefaultOpacity(opacity);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetSpriteAsset(spriteAsset) {\n\t\t\t\tif (!this._isApplyingSprite) {\n\t\t\t\t\t\tthis._storeDefaultSpriteAsset(spriteAsset);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onSetSpriteFrame(spriteFrame) {\n\t\t\t\tif (!this._isApplyingSprite) {\n\t\t\t\t\t\tthis._storeDefaultSpriteFrame(spriteFrame);\n\t\t\t\t\t\tthis._forceReapplyVisualState();\n\t\t\t\t}\n\t\t}\n\t\t_onMouseEnter(event) {\n\t\t\t\tthis._isHovering = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mouseenter', event);\n\t\t}\n\t\t_onMouseLeave(event) {\n\t\t\t\tthis._isHovering = false;\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mouseleave', event);\n\t\t}\n\t\t_onMouseDown(event) {\n\t\t\t\tthis._isPressed = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mousedown', event);\n\t\t}\n\t\t_onMouseUp(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('mouseup', event);\n\t\t}\n\t\t_onTouchStart(event) {\n\t\t\t\tthis._isPressed = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchstart', event);\n\t\t}\n\t\t_onTouchEnd(event) {\n\t\t\t\tevent.event.preventDefault();\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchend', event);\n\t\t}\n\t\t_onTouchLeave(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchleave', event);\n\t\t}\n\t\t_onTouchCancel(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('touchcancel', event);\n\t\t}\n\t\t_onSelectStart(event) {\n\t\t\t\tthis._isPressed = true;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('selectstart', event);\n\t\t}\n\t\t_onSelectEnd(event) {\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._updateVisualState();\n\t\t\t\tthis._fireIfActive('selectend', event);\n\t\t}\n\t\t_onSelectEnter(event) {\n\t\t\t\tthis._hoveringCounter++;\n\t\t\t\tif (this._hoveringCounter === 1) {\n\t\t\t\t\t\tthis._isHovering = true;\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t\t\tthis._fireIfActive('selectenter', event);\n\t\t}\n\t\t_onSelectLeave(event) {\n\t\t\t\tthis._hoveringCounter--;\n\t\t\t\tif (this._hoveringCounter === 0) {\n\t\t\t\t\t\tthis._isHovering = false;\n\t\t\t\t\t\tthis._isPressed = false;\n\t\t\t\t\t\tthis._updateVisualState();\n\t\t\t\t}\n\t\t\t\tthis._fireIfActive('selectleave', event);\n\t\t}\n\t\t_onClick(event) {\n\t\t\t\tthis._fireIfActive('click', event);\n\t\t}\n\t\t_fireIfActive(name, event) {\n\t\t\t\tif (this.data.active) {\n\t\t\t\t\t\tthis.fire(name, event);\n\t\t\t\t}\n\t\t}\n\t\t_updateVisualState(force) {\n\t\t\t\tconst oldVisualState = this._visualState;\n\t\t\t\tconst newVisualState = this._determineVisualState();\n\t\t\t\tif ((oldVisualState !== newVisualState || force) && this.enabled) {\n\t\t\t\t\t\tthis._visualState = newVisualState;\n\t\t\t\t\t\tif (oldVisualState === VisualState.HOVER) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('hoverend');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (oldVisualState === VisualState.PRESSED) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('pressedend');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newVisualState === VisualState.HOVER) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('hoverstart');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (newVisualState === VisualState.PRESSED) {\n\t\t\t\t\t\t\t\tthis._fireIfActive('pressedstart');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch(this.transitionMode){\n\t\t\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_TINT:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst tintName = STATES_TO_TINT_NAMES[this._visualState];\n\t\t\t\t\t\t\t\t\t\t\t\tconst tintColor = this[tintName];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._applyTint(tintColor);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_SPRITE_CHANGE:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteAssetName = STATES_TO_SPRITE_ASSET_NAMES[this._visualState];\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteFrameName = STATES_TO_SPRITE_FRAME_NAMES[this._visualState];\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteAsset = this[spriteAssetName];\n\t\t\t\t\t\t\t\t\t\t\t\tconst spriteFrame = this[spriteFrameName];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._applySprite(spriteAsset, spriteFrame);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_forceReapplyVisualState() {\n\t\t\t\tthis._updateVisualState(true);\n\t\t}\n\t\t_resetToDefaultVisualState(transitionMode) {\n\t\t\t\tif (!this._imageEntity?.element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tswitch(transitionMode){\n\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_TINT:\n\t\t\t\t\t\t\t\tthis._cancelTween();\n\t\t\t\t\t\t\t\tthis._applyTintImmediately(this._defaultTint);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase BUTTON_TRANSITION_MODE_SPRITE_CHANGE:\n\t\t\t\t\t\t\t\tthis._applySprite(this._defaultSpriteAsset, this._defaultSpriteFrame);\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\t_determineVisualState() {\n\t\t\t\tif (!this.active) {\n\t\t\t\t\t\treturn VisualState.INACTIVE;\n\t\t\t\t} else if (this._isPressed) {\n\t\t\t\t\t\treturn VisualState.PRESSED;\n\t\t\t\t} else if (this._isHovering) {\n\t\t\t\t\t\treturn VisualState.HOVER;\n\t\t\t\t}\n\t\t\t\treturn VisualState.DEFAULT;\n\t\t}\n\t\t_applySprite(spriteAsset, spriteFrame) {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tspriteFrame = spriteFrame || 0;\n\t\t\t\tthis._isApplyingSprite = true;\n\t\t\t\tif (element.spriteAsset !== spriteAsset) {\n\t\t\t\t\t\telement.spriteAsset = spriteAsset;\n\t\t\t\t}\n\t\t\t\tif (element.spriteFrame !== spriteFrame) {\n\t\t\t\t\t\telement.spriteFrame = spriteFrame;\n\t\t\t\t}\n\t\t\t\tthis._isApplyingSprite = false;\n\t\t}\n\t\t_applyTint(tintColor) {\n\t\t\t\tthis._cancelTween();\n\t\t\t\tif (this.fadeDuration === 0) {\n\t\t\t\t\t\tthis._applyTintImmediately(tintColor);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._applyTintWithTween(tintColor);\n\t\t\t\t}\n\t\t}\n\t\t_applyTintImmediately(tintColor) {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!tintColor || !element || element.type === ELEMENTTYPE_GROUP) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst color3 = toColor3(tintColor);\n\t\t\t\tthis._isApplyingTint = true;\n\t\t\t\tif (!color3.equals(element.color)) {\n\t\t\t\t\t\telement.color = color3;\n\t\t\t\t}\n\t\t\t\tif (element.opacity !== tintColor.a) {\n\t\t\t\t\t\telement.opacity = tintColor.a;\n\t\t\t\t}\n\t\t\t\tthis._isApplyingTint = false;\n\t\t}\n\t\t_applyTintWithTween(tintColor) {\n\t\t\t\tconst element = this._imageEntity?.element;\n\t\t\t\tif (!tintColor || !element || element.type === ELEMENTTYPE_GROUP) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst color3 = toColor3(tintColor);\n\t\t\t\tconst color = element.color;\n\t\t\t\tconst opacity = element.opacity;\n\t\t\t\tif (color3.equals(color) && tintColor.a === opacity) return;\n\t\t\t\tthis._tweenInfo = {\n\t\t\t\t\t\tstartTime: now(),\n\t\t\t\t\t\tfrom: new Color(color.r, color.g, color.b, opacity),\n\t\t\t\t\t\tto: tintColor.clone(),\n\t\t\t\t\t\tlerpColor: new Color()\n\t\t\t\t};\n\t\t}\n\t\t_updateTintTween() {\n\t\t\t\tconst elapsedTime = now() - this._tweenInfo.startTime;\n\t\t\t\tlet elapsedProportion = this.fadeDuration === 0 ? 1 : elapsedTime / this.fadeDuration;\n\t\t\t\telapsedProportion = math.clamp(elapsedProportion, 0, 1);\n\t\t\t\tif (Math.abs(elapsedProportion - 1) > 1e-5) {\n\t\t\t\t\t\tconst lerpColor = this._tweenInfo.lerpColor;\n\t\t\t\t\t\tlerpColor.lerp(this._tweenInfo.from, this._tweenInfo.to, elapsedProportion);\n\t\t\t\t\t\tthis._applyTintImmediately(new Color(lerpColor.r, lerpColor.g, lerpColor.b, lerpColor.a));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._applyTintImmediately(this._tweenInfo.to);\n\t\t\t\t\t\tthis._cancelTween();\n\t\t\t\t}\n\t\t}\n\t\t_cancelTween() {\n\t\t\t\tdelete this._tweenInfo;\n\t\t}\n\t\tonUpdate() {\n\t\t\t\tif (this._tweenInfo) {\n\t\t\t\t\t\tthis._updateTintTween();\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._isHovering = false;\n\t\t\t\tthis._hoveringCounter = 0;\n\t\t\t\tthis._isPressed = false;\n\t\t\t\tthis._toggleHitElementListeners('on');\n\t\t\t\tthis._forceReapplyVisualState();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._toggleHitElementListeners('off');\n\t\t\t\tthis._resetToDefaultVisualState(this.transitionMode);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis._imageEntityUnsubscribe();\n\t\t\t\tthis._toggleLifecycleListeners('off', this.system);\n\t\t\t\tthis.onDisable();\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldButton, duplicatedIdsMap) {\n\t\t\t\tif (oldButton.imageEntity) {\n\t\t\t\t\t\tthis.imageEntity = duplicatedIdsMap[oldButton.imageEntity.getGuid()];\n\t\t\t\t}\n\t\t}\n}\nfunction toColor3(color4) {\n\t\treturn new Color(color4.r, color4.g, color4.b);\n}\n\nclass ButtonComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.active = true;\n\t\t\t\tthis.imageEntity = null;\n\t\t\t\tthis.hitPadding = new Vec4();\n\t\t\t\tthis.transitionMode = BUTTON_TRANSITION_MODE_TINT;\n\t\t\t\tthis.hoverTint = new Color(0.75, 0.75, 0.75);\n\t\t\t\tthis.pressedTint = new Color(0.5, 0.5, 0.5);\n\t\t\t\tthis.inactiveTint = new Color(0.25, 0.25, 0.25);\n\t\t\t\tthis.fadeDuration = 0;\n\t\t\t\tthis.hoverSpriteAsset = null;\n\t\t\t\tthis.hoverSpriteFrame = 0;\n\t\t\t\tthis.pressedSpriteAsset = null;\n\t\t\t\tthis.pressedSpriteFrame = 0;\n\t\t\t\tthis.inactiveSpriteAsset = null;\n\t\t\t\tthis.inactiveSpriteFrame = 0;\n\t\t}\n}\n\nconst _schema$h = [\n\t\t'enabled',\n\t\t'active',\n\t\t{\n\t\t\t\tname: 'hitPadding',\n\t\t\t\ttype: 'vec4'\n\t\t},\n\t\t'transitionMode',\n\t\t{\n\t\t\t\tname: 'hoverTint',\n\t\t\t\ttype: 'rgba'\n\t\t},\n\t\t{\n\t\t\t\tname: 'pressedTint',\n\t\t\t\ttype: 'rgba'\n\t\t},\n\t\t{\n\t\t\t\tname: 'inactiveTint',\n\t\t\t\ttype: 'rgba'\n\t\t},\n\t\t'fadeDuration',\n\t\t'hoverSpriteAsset',\n\t\t'hoverSpriteFrame',\n\t\t'pressedSpriteAsset',\n\t\t'pressedSpriteFrame',\n\t\t'inactiveSpriteAsset',\n\t\t'inactiveSpriteFrame'\n];\nclass ButtonComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'button';\n\t\t\t\tthis.ComponentType = ButtonComponent;\n\t\t\t\tthis.DataType = ButtonComponentData;\n\t\t\t\tthis.schema = _schema$h;\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent.imageEntity = data.imageEntity;\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$h);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tconst entity = components[id].entity;\n\t\t\t\t\t\tconst component = entity.button;\n\t\t\t\t\t\tif (component.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tcomponent.onUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\n\nconst _vec3$1 = new Vec3();\nconst _quat = new Quat();\nclass CollisionComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CONTACT = 'contact';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONSTART = 'collisionstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONEND = 'collisionend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERENTER = 'triggerenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERLEAVE = 'triggerleave';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._compoundParent = null, this._hasOffset = false;\n\t\t\t\tthis.entity.on('insert', this._onInsert, this);\n\t\t\t\tthis.on('set_type', this.onSetType, this);\n\t\t\t\tthis.on('set_convexHull', this.onSetModel, this);\n\t\t\t\tthis.on('set_halfExtents', this.onSetHalfExtents, this);\n\t\t\t\tthis.on('set_linearOffset', this.onSetOffset, this);\n\t\t\t\tthis.on('set_angularOffset', this.onSetOffset, this);\n\t\t\t\tthis.on('set_radius', this.onSetRadius, this);\n\t\t\t\tthis.on('set_height', this.onSetHeight, this);\n\t\t\t\tthis.on('set_axis', this.onSetAxis, this);\n\t\t\t\tthis.on('set_asset', this.onSetAsset, this);\n\t\t\t\tthis.on('set_renderAsset', this.onSetRenderAsset, this);\n\t\t\t\tthis.on('set_model', this.onSetModel, this);\n\t\t\t\tthis.on('set_render', this.onSetRender, this);\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset type(arg) {\n\t\t\t\tthis._setValue('type', arg);\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this.data.type;\n\t\t}\n\t\tset halfExtents(arg) {\n\t\t\t\tthis._setValue('halfExtents', arg);\n\t\t}\n\t\tget halfExtents() {\n\t\t\t\treturn this.data.halfExtents;\n\t\t}\n\t\tset linearOffset(arg) {\n\t\t\t\tthis._setValue('linearOffset', arg);\n\t\t}\n\t\tget linearOffset() {\n\t\t\t\treturn this.data.linearOffset;\n\t\t}\n\t\tset angularOffset(arg) {\n\t\t\t\tthis._setValue('angularOffset', arg);\n\t\t}\n\t\tget angularOffset() {\n\t\t\t\treturn this.data.angularOffset;\n\t\t}\n\t\tset radius(arg) {\n\t\t\t\tthis._setValue('radius', arg);\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this.data.radius;\n\t\t}\n\t\tset axis(arg) {\n\t\t\t\tthis._setValue('axis', arg);\n\t\t}\n\t\tget axis() {\n\t\t\t\treturn this.data.axis;\n\t\t}\n\t\tset height(arg) {\n\t\t\t\tthis._setValue('height', arg);\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this.data.height;\n\t\t}\n\t\tset asset(arg) {\n\t\t\t\tthis._setValue('asset', arg);\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this.data.asset;\n\t\t}\n\t\tset renderAsset(arg) {\n\t\t\t\tthis._setValue('renderAsset', arg);\n\t\t}\n\t\tget renderAsset() {\n\t\t\t\treturn this.data.renderAsset;\n\t\t}\n\t\tset convexHull(arg) {\n\t\t\t\tthis._setValue('convexHull', arg);\n\t\t}\n\t\tget convexHull() {\n\t\t\t\treturn this.data.convexHull;\n\t\t}\n\t\tset shape(arg) {\n\t\t\t\tthis._setValue('shape', arg);\n\t\t}\n\t\tget shape() {\n\t\t\t\treturn this.data.shape;\n\t\t}\n\t\tset model(arg) {\n\t\t\t\tthis._setValue('model', arg);\n\t\t}\n\t\tget model() {\n\t\t\t\treturn this.data.model;\n\t\t}\n\t\tset render(arg) {\n\t\t\t\tthis._setValue('render', arg);\n\t\t}\n\t\tget render() {\n\t\t\t\treturn this.data.render;\n\t\t}\n\t\tset checkVertexDuplicates(arg) {\n\t\t\t\tthis._setValue('checkVertexDuplicates', arg);\n\t\t}\n\t\tget checkVertexDuplicates() {\n\t\t\t\treturn this.data.checkVertexDuplicates;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\tonSetType(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tthis.system.changeType(this, oldValue, newValue);\n\t\t\t\t}\n\t\t}\n\t\tonSetHalfExtents(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && t === 'box') {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetOffset(name, oldValue, newValue) {\n\t\t\t\tthis._hasOffset = !this.data.linearOffset.equals(Vec3.ZERO) || !this.data.angularOffset.equals(Quat.IDENTITY);\n\t\t\t\tif (this.data.initialized) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetRadius(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && (t === 'sphere' || t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetHeight(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && (t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetAxis(name, oldValue, newValue) {\n\t\t\t\tconst t = this.data.type;\n\t\t\t\tif (this.data.initialized && (t === 'capsule' || t === 'cylinder' || t === 'cone')) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.asset = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(this.data.asset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t\t\tasset.on('remove', this.onAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\t\t\t\tif (!newValue) {\n\t\t\t\t\t\t\t\tthis.data.model = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetRenderAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.renderAsset = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(this.data.renderAsset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\t\t\t\t\tasset.on('remove', this.onRenderAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\t\t\t\tif (!newValue) {\n\t\t\t\t\t\t\t\tthis.data.render = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetModel(name, oldValue, newValue) {\n\t\t\t\tif (this.data.initialized && this.data.type === 'mesh') {\n\t\t\t\t\t\tthis.system.implementations.mesh.doRecreatePhysicalShape(this);\n\t\t\t\t}\n\t\t}\n\t\tonSetRender(name, oldValue, newValue) {\n\t\t\t\tthis.onSetModel(name, oldValue, newValue);\n\t\t}\n\t\tonAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this.onAssetRemoved, this);\n\t\t\t\tif (this.data.asset === asset.id) {\n\t\t\t\t\t\tthis.asset = null;\n\t\t\t\t}\n\t\t}\n\t\tonRenderAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this.onRenderAssetRemoved, this);\n\t\t\t\tif (this.data.renderAsset === asset.id) {\n\t\t\t\t\t\tthis.renderAsset = null;\n\t\t\t\t}\n\t\t}\n\t\tgetCompoundChildShapeIndex(shape) {\n\t\t\t\tconst compound = this.data.shape;\n\t\t\t\tconst shapes = compound.getNumChildShapes();\n\t\t\t\tfor(let i = 0; i < shapes; i++){\n\t\t\t\t\t\tconst childShape = compound.getChildShape(i);\n\t\t\t\t\t\tif (Ammo.getPointer(childShape) === Ammo.getPointer(shape)) {\n\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_onInsert(parent) {\n\t\t\t\tif (typeof Ammo === 'undefined') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._compoundParent) {\n\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t} else if (!this.entity.rigidbody) {\n\t\t\t\t\t\tlet ancestor = this.entity.parent;\n\t\t\t\t\t\twhile(ancestor){\n\t\t\t\t\t\t\t\tif (ancestor.collision && ancestor.collision.type === 'compound') {\n\t\t\t\t\t\t\t\t\t\tif (ancestor.collision.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(ancestor.collision);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tancestor = ancestor.parent;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateCompound() {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tif (entity._dirtyWorld) {\n\t\t\t\t\t\tlet dirty = entity._dirtyLocal;\n\t\t\t\t\t\tlet parent = entity;\n\t\t\t\t\t\twhile(parent && !dirty){\n\t\t\t\t\t\t\t\tif (parent.collision && parent.collision === this._compoundParent) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (parent._dirtyLocal) {\n\t\t\t\t\t\t\t\t\t\tdirty = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (dirty) {\n\t\t\t\t\t\t\t\tentity.forEach(this.system.implementations.compound._updateEachDescendantTransform, entity);\n\t\t\t\t\t\t\t\tconst bodyComponent = this._compoundParent.entity.rigidbody;\n\t\t\t\t\t\t\t\tif (bodyComponent) {\n\t\t\t\t\t\t\t\t\t\tbodyComponent.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetShapePosition() {\n\t\t\t\tconst pos = this.entity.getPosition();\n\t\t\t\tif (this._hasOffset) {\n\t\t\t\t\t\tconst rot = this.entity.getRotation();\n\t\t\t\t\t\tconst lo = this.data.linearOffset;\n\t\t\t\t\t\t_quat.copy(rot).transformVector(lo, _vec3$1);\n\t\t\t\t\t\treturn _vec3$1.add(pos);\n\t\t\t\t}\n\t\t\t\treturn pos;\n\t\t}\n\t\tgetShapeRotation() {\n\t\t\t\tconst rot = this.entity.getRotation();\n\t\t\t\tif (this._hasOffset) {\n\t\t\t\t\t\treturn _quat.copy(rot).mul(this.data.angularOffset);\n\t\t\t\t}\n\t\t\t\treturn rot;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (this.data.type === 'mesh' && (this.data.asset || this.data.renderAsset) && this.data.initialized) {\n\t\t\t\t\t\tconst asset = this.system.app.assets.get(this.data.asset || this.data.renderAsset);\n\t\t\t\t\t\tif (asset && (!asset.resource || !this.data.shape)) {\n\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.entity.rigidbody) {\n\t\t\t\t\t\tif (this.entity.rigidbody.enabled) {\n\t\t\t\t\t\t\t\tthis.entity.rigidbody.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._compoundParent && this !== this._compoundParent) {\n\t\t\t\t\t\tif (this._compoundParent.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(this._compoundParent);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst transform = this.system._getNodeTransform(this.entity, this._compoundParent.entity);\n\t\t\t\t\t\t\t\tthis._compoundParent.shape.addChildShape(transform, this.data.shape);\n\t\t\t\t\t\t\t\tAmmo.destroy(transform);\n\t\t\t\t\t\t\t\tif (this._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tthis._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this.entity.trigger) {\n\t\t\t\t\t\tthis.entity.trigger.enable();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tif (this.entity.rigidbody) {\n\t\t\t\t\t\tthis.entity.rigidbody.disableSimulation();\n\t\t\t\t} else if (this._compoundParent && this !== this._compoundParent) {\n\t\t\t\t\t\tif (!this._compoundParent.entity._destroying) {\n\t\t\t\t\t\t\t\tthis.system._removeCompoundChild(this._compoundParent, this.data.shape);\n\t\t\t\t\t\t\t\tif (this._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tthis._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this.entity.trigger) {\n\t\t\t\t\t\tthis.entity.trigger.disable();\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tif (this.asset) {\n\t\t\t\t\t\tthis.asset = null;\n\t\t\t\t}\n\t\t\t\tif (this.renderAsset) {\n\t\t\t\t\t\tthis.renderAsset = null;\n\t\t\t\t}\n\t\t\t\tthis.entity.off('insert', this._onInsert, this);\n\t\t\t\tthis.off();\n\t\t}\n}\n\nclass CollisionComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.type = 'box';\n\t\t\t\tthis.halfExtents = new Vec3(0.5, 0.5, 0.5);\n\t\t\t\tthis.linearOffset = new Vec3();\n\t\t\t\tthis.angularOffset = new Quat();\n\t\t\t\tthis.radius = 0.5;\n\t\t\t\tthis.axis = 1;\n\t\t\t\tthis.height = 2;\n\t\t\t\tthis.convexHull = false;\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis.renderAsset = null;\n\t\t\t\tthis.checkVertexDuplicates = true;\n\t\t\t\tthis.shape = null;\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.render = null;\n\t\t\t\tthis.initialized = false;\n\t\t}\n}\n\nconst BODYTYPE_STATIC = 'static';\nconst BODYTYPE_DYNAMIC = 'dynamic';\nconst BODYTYPE_KINEMATIC = 'kinematic';\nconst BODYFLAG_STATIC_OBJECT = 1;\nconst BODYFLAG_KINEMATIC_OBJECT = 2;\nconst BODYFLAG_NORESPONSE_OBJECT = 4;\nconst BODYSTATE_ACTIVE_TAG = 1;\nconst BODYSTATE_ISLAND_SLEEPING = 2;\nconst BODYSTATE_WANTS_DEACTIVATION = 3;\nconst BODYSTATE_DISABLE_DEACTIVATION = 4;\nconst BODYSTATE_DISABLE_SIMULATION = 5;\nconst BODYGROUP_NONE = 0;\nconst BODYGROUP_DEFAULT = 1;\nconst BODYGROUP_DYNAMIC = 1;\nconst BODYGROUP_STATIC = 2;\nconst BODYGROUP_KINEMATIC = 4;\nconst BODYGROUP_ENGINE_1 = 8;\nconst BODYGROUP_TRIGGER = 16;\nconst BODYGROUP_ENGINE_2 = 32;\nconst BODYGROUP_ENGINE_3 = 64;\nconst BODYGROUP_USER_1 = 128;\nconst BODYGROUP_USER_2 = 256;\nconst BODYGROUP_USER_3 = 512;\nconst BODYGROUP_USER_4 = 1024;\nconst BODYGROUP_USER_5 = 2048;\nconst BODYGROUP_USER_6 = 4096;\nconst BODYGROUP_USER_7 = 8192;\nconst BODYGROUP_USER_8 = 16384;\nconst BODYMASK_NONE = 0;\nconst BODYMASK_ALL = 65535;\nconst BODYMASK_STATIC = 2;\nconst BODYMASK_NOT_STATIC = 65535 ^ 2;\nconst BODYMASK_NOT_STATIC_KINEMATIC = 65535 ^ (2 | 4);\n\nlet _ammoVec1$1, _ammoQuat$1, _ammoTransform$1;\nclass Trigger {\n\t\tconstructor(app, component, data){\n\t\t\t\tthis.entity = component.entity;\n\t\t\t\tthis.component = component;\n\t\t\t\tthis.app = app;\n\t\t\t\tif (typeof Ammo !== 'undefined' && !_ammoVec1$1) {\n\t\t\t\t\t\t_ammoVec1$1 = new Ammo.btVector3();\n\t\t\t\t\t\t_ammoQuat$1 = new Ammo.btQuaternion();\n\t\t\t\t\t\t_ammoTransform$1 = new Ammo.btTransform();\n\t\t\t\t}\n\t\t\t\tthis.initialize(data);\n\t\t}\n\t\tinitialize(data) {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tconst shape = data.shape;\n\t\t\t\tif (shape && typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst mass = 1;\n\t\t\t\t\t\tconst component = this.component;\n\t\t\t\t\t\tif (component) {\n\t\t\t\t\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\t\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t\t\t\t\t_ammoVec1$1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t\t\t\t\t_ammoQuat$1.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst pos = entity.getPosition();\n\t\t\t\t\t\t\t\tconst rot = entity.getRotation();\n\t\t\t\t\t\t\t\t_ammoVec1$1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t\t\t_ammoQuat$1.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_ammoTransform$1.setOrigin(_ammoVec1$1);\n\t\t\t\t\t\t_ammoTransform$1.setRotation(_ammoQuat$1);\n\t\t\t\t\t\tconst body = this.app.systems.rigidbody.createBody(mass, shape, _ammoTransform$1);\n\t\t\t\t\t\tbody.setRestitution(0);\n\t\t\t\t\t\tbody.setFriction(0);\n\t\t\t\t\t\tbody.setDamping(0, 0);\n\t\t\t\t\t\t_ammoVec1$1.setValue(0, 0, 0);\n\t\t\t\t\t\tbody.setLinearFactor(_ammoVec1$1);\n\t\t\t\t\t\tbody.setAngularFactor(_ammoVec1$1);\n\t\t\t\t\t\tbody.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_NORESPONSE_OBJECT);\n\t\t\t\t\t\tbody.entity = entity;\n\t\t\t\t\t\tthis.body = body;\n\t\t\t\t\t\tif (this.component.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tthis.enable();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this.body) return;\n\t\t\t\tthis.disable();\n\t\t\t\tthis.app.systems.rigidbody.destroyBody(this.body);\n\t\t\t\tthis.body = null;\n\t\t}\n\t\t_getEntityTransform(transform) {\n\t\t\t\tconst component = this.component;\n\t\t\t\tif (component) {\n\t\t\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t\t\t_ammoVec1$1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t\t\t_ammoQuat$1.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst pos = this.entity.getPosition();\n\t\t\t\t\t\tconst rot = this.entity.getRotation();\n\t\t\t\t\t\t_ammoVec1$1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t_ammoQuat$1.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t}\n\t\t\t\ttransform.setOrigin(_ammoVec1$1);\n\t\t\t\ttransform.setRotation(_ammoQuat$1);\n\t\t}\n\t\tupdateTransform() {\n\t\t\t\tthis._getEntityTransform(_ammoTransform$1);\n\t\t\t\tconst body = this.body;\n\t\t\t\tbody.setWorldTransform(_ammoTransform$1);\n\t\t\t\tbody.activate();\n\t\t}\n\t\tenable() {\n\t\t\t\tconst body = this.body;\n\t\t\t\tif (!body) return;\n\t\t\t\tconst system = this.app.systems.rigidbody;\n\t\t\t\tconst idx = system._triggers.indexOf(this);\n\t\t\t\tif (idx < 0) {\n\t\t\t\t\t\tsystem.addBody(body, BODYGROUP_TRIGGER, BODYMASK_NOT_STATIC ^ BODYGROUP_TRIGGER);\n\t\t\t\t\t\tsystem._triggers.push(this);\n\t\t\t\t}\n\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\tthis.updateTransform();\n\t\t}\n\t\tdisable() {\n\t\t\t\tconst body = this.body;\n\t\t\t\tif (!body) return;\n\t\t\t\tconst system = this.app.systems.rigidbody;\n\t\t\t\tconst idx = system._triggers.indexOf(this);\n\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\tsystem.removeBody(body);\n\t\t\t\t\t\tsystem._triggers.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_SIMULATION);\n\t\t}\n}\n\nconst mat4 = new Mat4();\nconst p1 = new Vec3();\nconst p2 = new Vec3();\nconst quat$1 = new Quat();\nconst tempGraphNode = new GraphNode();\nconst _schema$g = [\n\t\t'enabled',\n\t\t'type',\n\t\t'halfExtents',\n\t\t'linearOffset',\n\t\t'angularOffset',\n\t\t'radius',\n\t\t'axis',\n\t\t'height',\n\t\t'convexHull',\n\t\t'asset',\n\t\t'renderAsset',\n\t\t'shape',\n\t\t'model',\n\t\t'render',\n\t\t'checkVertexDuplicates'\n];\nclass CollisionSystemImpl {\n\t\tconstructor(system){\n\t\t\t\tthis.system = system;\n\t\t}\n\t\tbeforeInitialize(component, data) {\n\t\t\t\tdata.shape = null;\n\t\t\t\tdata.model = new Model();\n\t\t\t\tdata.model.graph = new GraphNode();\n\t\t}\n\t\tafterInitialize(component, data) {\n\t\t\t\tthis.recreatePhysicalShapes(component);\n\t\t\t\tcomponent.data.initialized = true;\n\t\t}\n\t\treset(component, data) {\n\t\t\t\tthis.beforeInitialize(component, data);\n\t\t\t\tthis.afterInitialize(component, data);\n\t\t}\n\t\trecreatePhysicalShapes(component) {\n\t\t\t\tconst entity = component.entity;\n\t\t\t\tconst data = component.data;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\t\t\tdelete entity.trigger;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.shape) {\n\t\t\t\t\t\t\t\tif (component._compoundParent) {\n\t\t\t\t\t\t\t\t\t\tif (component !== component._compoundParent) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system._removeCompoundChild(component._compoundParent, data.shape);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.destroyShape(data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata.shape = this.createPhysicalShape(component.entity, data);\n\t\t\t\t\t\tconst firstCompoundChild = !component._compoundParent;\n\t\t\t\t\t\tif (data.type === 'compound' && (!component._compoundParent || component === component._compoundParent)) {\n\t\t\t\t\t\t\t\tcomponent._compoundParent = component;\n\t\t\t\t\t\t\t\tentity.forEach(this._addEachDescendant, component);\n\t\t\t\t\t\t} else if (data.type !== 'compound') {\n\t\t\t\t\t\t\t\tif (!component.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent = null;\n\t\t\t\t\t\t\t\t\t\tlet parent = entity.parent;\n\t\t\t\t\t\t\t\t\t\twhile(parent){\n\t\t\t\t\t\t\t\t\t\t\t\tif (parent.collision && parent.collision.type === 'compound') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent = parent.collision;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (component._compoundParent) {\n\t\t\t\t\t\t\t\tif (component !== component._compoundParent) {\n\t\t\t\t\t\t\t\t\t\tif (firstCompoundChild && component._compoundParent.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.recreatePhysicalShapes(component._compoundParent);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system.updateCompoundChildTransform(entity, true);\n\t\t\t\t\t\t\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (entity.rigidbody) {\n\t\t\t\t\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\t\t\t\t\tentity.rigidbody.createBody();\n\t\t\t\t\t\t\t\tif (entity.enabled && entity.rigidbody.enabled) {\n\t\t\t\t\t\t\t\t\t\tentity.rigidbody.enableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (!component._compoundParent) {\n\t\t\t\t\t\t\t\tif (!entity.trigger) {\n\t\t\t\t\t\t\t\t\t\tentity.trigger = new Trigger(this.system.app, component, data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tentity.trigger.initialize(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\treturn undefined;\n\t\t}\n\t\tupdateTransform(component, position, rotation, scale) {\n\t\t\t\tif (component.entity.trigger) {\n\t\t\t\t\t\tcomponent.entity.trigger.updateTransform();\n\t\t\t\t}\n\t\t}\n\t\tdestroyShape(data) {\n\t\t\t\tif (data.shape) {\n\t\t\t\t\t\tAmmo.destroy(data.shape);\n\t\t\t\t\t\tdata.shape = null;\n\t\t\t\t}\n\t\t}\n\t\tbeforeRemove(entity, component) {\n\t\t\t\tif (component.data.shape) {\n\t\t\t\t\t\tif (component._compoundParent && !component._compoundParent.entity._destroying) {\n\t\t\t\t\t\t\t\tthis.system._removeCompoundChild(component._compoundParent, component.data.shape);\n\t\t\t\t\t\t\t\tif (component._compoundParent.entity.rigidbody) {\n\t\t\t\t\t\t\t\t\t\tcomponent._compoundParent.entity.rigidbody.activate();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent._compoundParent = null;\n\t\t\t\t\t\tthis.destroyShape(component.data);\n\t\t\t\t}\n\t\t}\n\t\tremove(entity, data) {\n\t\t\t\tif (entity.rigidbody && entity.rigidbody.body) {\n\t\t\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\t}\n\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\tdelete entity.trigger;\n\t\t\t\t}\n\t\t}\n\t\tclone(entity, clone) {\n\t\t\t\tconst src = this.system.store[entity.getGuid()];\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: src.data.enabled,\n\t\t\t\t\t\ttype: src.data.type,\n\t\t\t\t\t\thalfExtents: [\n\t\t\t\t\t\t\t\tsrc.data.halfExtents.x,\n\t\t\t\t\t\t\t\tsrc.data.halfExtents.y,\n\t\t\t\t\t\t\t\tsrc.data.halfExtents.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tlinearOffset: [\n\t\t\t\t\t\t\t\tsrc.data.linearOffset.x,\n\t\t\t\t\t\t\t\tsrc.data.linearOffset.y,\n\t\t\t\t\t\t\t\tsrc.data.linearOffset.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tangularOffset: [\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.x,\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.y,\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.z,\n\t\t\t\t\t\t\t\tsrc.data.angularOffset.w\n\t\t\t\t\t\t],\n\t\t\t\t\t\tradius: src.data.radius,\n\t\t\t\t\t\taxis: src.data.axis,\n\t\t\t\t\t\theight: src.data.height,\n\t\t\t\t\t\tconvexHull: src.data.convexHull,\n\t\t\t\t\t\tasset: src.data.asset,\n\t\t\t\t\t\trenderAsset: src.data.renderAsset,\n\t\t\t\t\t\tmodel: src.data.model,\n\t\t\t\t\t\trender: src.data.render,\n\t\t\t\t\t\tcheckVertexDuplicates: src.data.checkVertexDuplicates\n\t\t\t\t};\n\t\t\t\treturn this.system.addComponent(clone, data);\n\t\t}\n}\nclass CollisionBoxSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tconst he = data.halfExtents;\n\t\t\t\t\t\tconst ammoHe = new Ammo.btVector3(he ? he.x : 0.5, he ? he.y : 0.5, he ? he.z : 0.5);\n\t\t\t\t\t\tconst shape = new Ammo.btBoxShape(ammoHe);\n\t\t\t\t\t\tAmmo.destroy(ammoHe);\n\t\t\t\t\t\treturn shape;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n}\nclass CollisionSphereSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\treturn new Ammo.btSphereShape(data.radius);\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n}\nclass CollisionCapsuleSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tconst axis = data.axis ?? 1;\n\t\t\t\tconst radius = data.radius ?? 0.5;\n\t\t\t\tconst height = Math.max((data.height ?? 2) - 2 * radius, 0);\n\t\t\t\tlet shape = null;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCapsuleShapeX(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCapsuleShape(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCapsuleShapeZ(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn shape;\n\t\t}\n}\nclass CollisionCylinderSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tconst axis = data.axis ?? 1;\n\t\t\t\tconst radius = data.radius ?? 0.5;\n\t\t\t\tconst height = data.height ?? 1;\n\t\t\t\tlet halfExtents = null;\n\t\t\t\tlet shape = null;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\thalfExtents = new Ammo.btVector3(height * 0.5, radius, radius);\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCylinderShapeX(halfExtents);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\thalfExtents = new Ammo.btVector3(radius, height * 0.5, radius);\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCylinderShape(halfExtents);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\thalfExtents = new Ammo.btVector3(radius, radius, height * 0.5);\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btCylinderShapeZ(halfExtents);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (halfExtents) {\n\t\t\t\t\t\tAmmo.destroy(halfExtents);\n\t\t\t\t}\n\t\t\t\treturn shape;\n\t\t}\n}\nclass CollisionConeSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tconst axis = data.axis ?? 1;\n\t\t\t\tconst radius = data.radius ?? 0.5;\n\t\t\t\tconst height = data.height ?? 1;\n\t\t\t\tlet shape = null;\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btConeShapeX(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btConeShape(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tshape = new Ammo.btConeShapeZ(radius, height);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn shape;\n\t\t}\n}\nclass CollisionMeshSystemImpl extends CollisionSystemImpl {\n\t\tbeforeInitialize(component, data) {}\n\t\tcreateAmmoHull(mesh, node, shape, scale) {\n\t\t\t\tconst hull = new Ammo.btConvexHullShape();\n\t\t\t\tconst point = new Ammo.btVector3();\n\t\t\t\tconst positions = [];\n\t\t\t\tmesh.getPositions(positions);\n\t\t\t\tfor(let i = 0; i < positions.length; i += 3){\n\t\t\t\t\t\tpoint.setValue(positions[i] * scale.x, positions[i + 1] * scale.y, positions[i + 2] * scale.z);\n\t\t\t\t\t\thull.addPoint(point, false);\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(point);\n\t\t\t\thull.recalcLocalAabb();\n\t\t\t\thull.setMargin(0.01);\n\t\t\t\tconst transform = this.system._getNodeTransform(node);\n\t\t\t\tshape.addChildShape(transform, hull);\n\t\t\t\tAmmo.destroy(transform);\n\t\t}\n\t\tcreateAmmoMesh(mesh, node, shape, scale, checkDupes = true) {\n\t\t\t\tconst system = this.system;\n\t\t\t\tlet triMesh;\n\t\t\t\tif (system._triMeshCache[mesh.id]) {\n\t\t\t\t\t\ttriMesh = system._triMeshCache[mesh.id];\n\t\t\t\t} else {\n\t\t\t\t\t\tconst vb = mesh.vertexBuffer;\n\t\t\t\t\t\tconst format = vb.getFormat();\n\t\t\t\t\t\tlet stride, positions;\n\t\t\t\t\t\tfor(let i = 0; i < format.elements.length; i++){\n\t\t\t\t\t\t\t\tconst element = format.elements[i];\n\t\t\t\t\t\t\t\tif (element.name === SEMANTIC_POSITION) {\n\t\t\t\t\t\t\t\t\t\tpositions = new Float32Array(vb.lock(), element.offset);\n\t\t\t\t\t\t\t\t\t\tstride = element.stride / 4;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst indices = [];\n\t\t\t\t\t\tmesh.getIndices(indices);\n\t\t\t\t\t\tconst numTriangles = mesh.primitive[0].count / 3;\n\t\t\t\t\t\tconst v1 = new Ammo.btVector3();\n\t\t\t\t\t\tlet i1, i2, i3;\n\t\t\t\t\t\tconst base = mesh.primitive[0].base;\n\t\t\t\t\t\ttriMesh = new Ammo.btTriangleMesh();\n\t\t\t\t\t\tsystem._triMeshCache[mesh.id] = triMesh;\n\t\t\t\t\t\tconst vertexCache = new Map();\n\t\t\t\t\t\tconst indexedArray = triMesh.getIndexedMeshArray();\n\t\t\t\t\t\tindexedArray.at(0).m_numTriangles = numTriangles;\n\t\t\t\t\t\tconst sx = scale ? scale.x : 1;\n\t\t\t\t\t\tconst sy = scale ? scale.y : 1;\n\t\t\t\t\t\tconst sz = scale ? scale.z : 1;\n\t\t\t\t\t\tconst addVertex = (index)=>{\n\t\t\t\t\t\t\t\tconst x = positions[index * stride] * sx;\n\t\t\t\t\t\t\t\tconst y = positions[index * stride + 1] * sy;\n\t\t\t\t\t\t\t\tconst z = positions[index * stride + 2] * sz;\n\t\t\t\t\t\t\t\tlet idx;\n\t\t\t\t\t\t\t\tif (checkDupes) {\n\t\t\t\t\t\t\t\t\t\tconst str = `${x}:${y}:${z}`;\n\t\t\t\t\t\t\t\t\t\tidx = vertexCache.get(str);\n\t\t\t\t\t\t\t\t\t\tif (idx !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn idx;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tv1.setValue(x, y, z);\n\t\t\t\t\t\t\t\t\t\tidx = triMesh.findOrAddVertex(v1, false);\n\t\t\t\t\t\t\t\t\t\tvertexCache.set(str, idx);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tv1.setValue(x, y, z);\n\t\t\t\t\t\t\t\t\t\tidx = triMesh.findOrAddVertex(v1, false);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn idx;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(let i = 0; i < numTriangles; i++){\n\t\t\t\t\t\t\t\ti1 = addVertex(indices[base + i * 3]);\n\t\t\t\t\t\t\t\ti2 = addVertex(indices[base + i * 3 + 1]);\n\t\t\t\t\t\t\t\ti3 = addVertex(indices[base + i * 3 + 2]);\n\t\t\t\t\t\t\t\ttriMesh.addIndex(i1);\n\t\t\t\t\t\t\t\ttriMesh.addIndex(i2);\n\t\t\t\t\t\t\t\ttriMesh.addIndex(i3);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAmmo.destroy(v1);\n\t\t\t\t}\n\t\t\t\tconst triMeshShape = new Ammo.btBvhTriangleMeshShape(triMesh, true);\n\t\t\t\tif (!scale) {\n\t\t\t\t\t\tconst scaling = system._getNodeScaling(node);\n\t\t\t\t\t\ttriMeshShape.setLocalScaling(scaling);\n\t\t\t\t\t\tAmmo.destroy(scaling);\n\t\t\t\t}\n\t\t\t\tconst transform = system._getNodeTransform(node);\n\t\t\t\tshape.addChildShape(transform, triMeshShape);\n\t\t\t\tAmmo.destroy(transform);\n\t\t}\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo === 'undefined') return undefined;\n\t\t\t\tif (data.model || data.render) {\n\t\t\t\t\t\tconst shape = new Ammo.btCompoundShape();\n\t\t\t\t\t\tconst entityTransform = entity.getWorldTransform();\n\t\t\t\t\t\tconst scale = entityTransform.getScale();\n\t\t\t\t\t\tif (data.render) {\n\t\t\t\t\t\t\t\tconst meshes = data.render.meshes;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (data.convexHull) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.createAmmoHull(meshes[i], tempGraphNode, shape, scale);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.createAmmoMesh(meshes[i], tempGraphNode, shape, scale, data.checkVertexDuplicates);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (data.model) {\n\t\t\t\t\t\t\t\tconst meshInstances = data.model.meshInstances;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis.createAmmoMesh(meshInstances[i].mesh, meshInstances[i].node, shape, null, data.checkVertexDuplicates);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst vec = new Ammo.btVector3(scale.x, scale.y, scale.z);\n\t\t\t\t\t\t\t\tshape.setLocalScaling(vec);\n\t\t\t\t\t\t\t\tAmmo.destroy(vec);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn shape;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\trecreatePhysicalShapes(component) {\n\t\t\t\tconst data = component.data;\n\t\t\t\tif (data.renderAsset || data.asset) {\n\t\t\t\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.loadAsset(component, data.renderAsset || data.asset, data.renderAsset ? 'render' : 'model');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t}\n\t\tloadAsset(component, id, property) {\n\t\t\t\tconst data = component.data;\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tconst previousPropertyValue = data[property];\n\t\t\t\tconst onAssetFullyReady = (asset)=>{\n\t\t\t\t\t\tif (data[property] !== previousPropertyValue) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata[property] = asset.resource;\n\t\t\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t\t\t};\n\t\t\t\tconst loadAndHandleAsset = (asset)=>{\n\t\t\t\t\t\tasset.ready((asset)=>{\n\t\t\t\t\t\t\t\tif (asset.data.containerAsset) {\n\t\t\t\t\t\t\t\t\t\tconst containerAsset = assets.get(asset.data.containerAsset);\n\t\t\t\t\t\t\t\t\t\tif (containerAsset.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcontainerAsset.ready(()=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tassets.load(containerAsset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tonAssetFullyReady(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t};\n\t\t\t\tconst asset = assets.get(id);\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tloadAndHandleAsset(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tassets.once(`add:${id}`, loadAndHandleAsset);\n\t\t\t\t}\n\t\t}\n\t\tdoRecreatePhysicalShape(component) {\n\t\t\t\tconst entity = component.entity;\n\t\t\t\tconst data = component.data;\n\t\t\t\tif (data.model || data.render) {\n\t\t\t\t\t\tthis.destroyShape(data);\n\t\t\t\t\t\tdata.shape = this.createPhysicalShape(entity, data);\n\t\t\t\t\t\tif (entity.rigidbody) {\n\t\t\t\t\t\t\t\tentity.rigidbody.disableSimulation();\n\t\t\t\t\t\t\t\tentity.rigidbody.createBody();\n\t\t\t\t\t\t\t\tif (entity.enabled && entity.rigidbody.enabled) {\n\t\t\t\t\t\t\t\t\t\tentity.rigidbody.enableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (!entity.trigger) {\n\t\t\t\t\t\t\t\t\t\tentity.trigger = new Trigger(this.system.app, component, data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tentity.trigger.initialize(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.beforeRemove(entity, component);\n\t\t\t\t\t\tthis.remove(entity, data);\n\t\t\t\t}\n\t\t}\n\t\tupdateTransform(component, position, rotation, scale) {\n\t\t\t\tif (component.shape) {\n\t\t\t\t\t\tconst entityTransform = component.entity.getWorldTransform();\n\t\t\t\t\t\tconst worldScale = entityTransform.getScale();\n\t\t\t\t\t\tconst previousScale = component.shape.getLocalScaling();\n\t\t\t\t\t\tif (worldScale.x !== previousScale.x() || worldScale.y !== previousScale.y() || worldScale.z !== previousScale.z()) {\n\t\t\t\t\t\t\t\tthis.doRecreatePhysicalShape(component);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.updateTransform(component, position, rotation, scale);\n\t\t}\n\t\tdestroyShape(data) {\n\t\t\t\tif (!data.shape) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst numShapes = data.shape.getNumChildShapes();\n\t\t\t\tfor(let i = 0; i < numShapes; i++){\n\t\t\t\t\t\tconst shape = data.shape.getChildShape(i);\n\t\t\t\t\t\tAmmo.destroy(shape);\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(data.shape);\n\t\t\t\tdata.shape = null;\n\t\t}\n}\nclass CollisionCompoundSystemImpl extends CollisionSystemImpl {\n\t\tcreatePhysicalShape(entity, data) {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\treturn new Ammo.btCompoundShape();\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_addEachDescendant(entity) {\n\t\t\t\tif (!entity.collision || entity.rigidbody) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentity.collision._compoundParent = this;\n\t\t\t\tif (entity !== this.entity) {\n\t\t\t\t\t\tentity.collision.system.recreatePhysicalShapes(entity.collision);\n\t\t\t\t}\n\t\t}\n\t\t_updateEachDescendant(entity) {\n\t\t\t\tif (!entity.collision) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (entity.collision._compoundParent !== this) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tentity.collision._compoundParent = null;\n\t\t\t\tif (entity !== this.entity && !entity.rigidbody) {\n\t\t\t\t\t\tentity.collision.system.recreatePhysicalShapes(entity.collision);\n\t\t\t\t}\n\t\t}\n\t\t_updateEachDescendantTransform(entity) {\n\t\t\t\tif (!entity.collision || entity.collision._compoundParent !== this.collision._compoundParent) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.collision.system.updateCompoundChildTransform(entity, false);\n\t\t}\n}\nclass CollisionComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'collision';\n\t\t\t\tthis.ComponentType = CollisionComponent;\n\t\t\t\tthis.DataType = CollisionComponentData;\n\t\t\t\tthis.schema = _schema$g;\n\t\t\t\tthis.implementations = {};\n\t\t\t\tthis._triMeshCache = {};\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.on('remove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'type',\n\t\t\t\t\t\t'halfExtents',\n\t\t\t\t\t\t'radius',\n\t\t\t\t\t\t'axis',\n\t\t\t\t\t\t'height',\n\t\t\t\t\t\t'convexHull',\n\t\t\t\t\t\t'shape',\n\t\t\t\t\t\t'model',\n\t\t\t\t\t\t'asset',\n\t\t\t\t\t\t'render',\n\t\t\t\t\t\t'renderAsset',\n\t\t\t\t\t\t'enabled',\n\t\t\t\t\t\t'linearOffset',\n\t\t\t\t\t\t'angularOffset',\n\t\t\t\t\t\t'checkVertexDuplicates'\n\t\t\t\t];\n\t\t\t\tconst data = {};\n\t\t\t\tfor(let i = 0, len = properties.length; i < len; i++){\n\t\t\t\t\t\tconst property = properties[i];\n\t\t\t\t\t\tdata[property] = _data[property];\n\t\t\t\t}\n\t\t\t\tlet idx;\n\t\t\t\tif (_data.hasOwnProperty('asset')) {\n\t\t\t\t\t\tidx = properties.indexOf('model');\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tproperties.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tidx = properties.indexOf('render');\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tproperties.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t} else if (_data.hasOwnProperty('model')) {\n\t\t\t\t\t\tidx = properties.indexOf('asset');\n\t\t\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\t\t\tproperties.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!data.type) {\n\t\t\t\t\t\tdata.type = component.data.type;\n\t\t\t\t}\n\t\t\t\tcomponent.data.type = data.type;\n\t\t\t\tif (Array.isArray(data.halfExtents)) {\n\t\t\t\t\t\tdata.halfExtents = new Vec3(data.halfExtents);\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(data.linearOffset)) {\n\t\t\t\t\t\tdata.linearOffset = new Vec3(data.linearOffset);\n\t\t\t\t}\n\t\t\t\tif (Array.isArray(data.angularOffset)) {\n\t\t\t\t\t\tconst values = data.angularOffset;\n\t\t\t\t\t\tif (values.length === 3) {\n\t\t\t\t\t\t\t\tdata.angularOffset = new Quat().setFromEulerAngles(values[0], values[1], values[2]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata.angularOffset = new Quat(data.angularOffset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst impl = this._createImplementation(data.type);\n\t\t\t\timpl.beforeInitialize(component, data);\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t\t\timpl.afterInitialize(component, data);\n\t\t}\n\t\t_createImplementation(type) {\n\t\t\t\tif (this.implementations[type] === undefined) {\n\t\t\t\t\t\tlet impl;\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase 'box':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionBoxSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'sphere':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionSphereSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'capsule':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionCapsuleSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'cylinder':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionCylinderSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'cone':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionConeSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'mesh':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionMeshSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 'compound':\n\t\t\t\t\t\t\t\t\t\timpl = new CollisionCompoundSystemImpl(this);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.implementations[type] = impl;\n\t\t\t\t}\n\t\t\t\treturn this.implementations[type];\n\t\t}\n\t\t_getImplementation(entity) {\n\t\t\t\treturn this.implementations[entity.collision.data.type];\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\treturn this._getImplementation(entity).clone(entity, clone);\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tthis.implementations[component.data.type].beforeRemove(entity, component);\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tonRemove(entity, data) {\n\t\t\t\tthis.implementations[data.type].remove(entity, data);\n\t\t}\n\t\tupdateCompoundChildTransform(entity, forceUpdate) {\n\t\t\t\tconst parentComponent = entity.collision._compoundParent;\n\t\t\t\tif (parentComponent === entity.collision) return;\n\t\t\t\tif (entity.enabled && entity.collision.enabled && (entity._dirtyLocal || forceUpdate)) {\n\t\t\t\t\t\tconst transform = this._getNodeTransform(entity, parentComponent.entity);\n\t\t\t\t\t\tconst idx = parentComponent.getCompoundChildShapeIndex(entity.collision.shape);\n\t\t\t\t\t\tif (idx === null) {\n\t\t\t\t\t\t\t\tparentComponent.shape.addChildShape(transform, entity.collision.data.shape);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tparentComponent.shape.updateChildTransform(idx, transform, true);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAmmo.destroy(transform);\n\t\t\t\t}\n\t\t}\n\t\t_removeCompoundChild(collision, shape) {\n\t\t\t\tif (collision.shape.getNumChildShapes() === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (collision.shape.removeChildShape) {\n\t\t\t\t\t\tcollision.shape.removeChildShape(shape);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst ind = collision.getCompoundChildShapeIndex(shape);\n\t\t\t\t\t\tif (ind !== null) {\n\t\t\t\t\t\t\t\tcollision.shape.removeChildShapeByIndex(ind);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonTransformChanged(component, position, rotation, scale) {\n\t\t\t\tthis.implementations[component.data.type].updateTransform(component, position, rotation, scale);\n\t\t}\n\t\tchangeType(component, previousType, newType) {\n\t\t\t\tthis.implementations[previousType].beforeRemove(component.entity, component);\n\t\t\t\tthis.implementations[previousType].remove(component.entity, component.data);\n\t\t\t\tthis._createImplementation(newType).reset(component, component.data);\n\t\t}\n\t\trecreatePhysicalShapes(component) {\n\t\t\t\tthis.implementations[component.data.type].recreatePhysicalShapes(component);\n\t\t}\n\t\t_calculateNodeRelativeTransform(node, relative) {\n\t\t\t\tif (node === relative) {\n\t\t\t\t\t\tconst scale = node.getWorldTransform().getScale();\n\t\t\t\t\t\tmat4.setScale(scale.x, scale.y, scale.z);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._calculateNodeRelativeTransform(node.parent, relative);\n\t\t\t\t\t\tmat4.mul(node.getLocalTransform());\n\t\t\t\t}\n\t\t}\n\t\t_getNodeScaling(node) {\n\t\t\t\tconst wtm = node.getWorldTransform();\n\t\t\t\tconst scl = wtm.getScale();\n\t\t\t\treturn new Ammo.btVector3(scl.x, scl.y, scl.z);\n\t\t}\n\t\t_getNodeTransform(node, relative) {\n\t\t\t\tlet pos, rot;\n\t\t\t\tif (relative) {\n\t\t\t\t\t\tthis._calculateNodeRelativeTransform(node, relative);\n\t\t\t\t\t\tpos = p1;\n\t\t\t\t\t\trot = quat$1;\n\t\t\t\t\t\tmat4.getTranslation(pos);\n\t\t\t\t\t\trot.setFromMat4(mat4);\n\t\t\t\t} else {\n\t\t\t\t\t\tpos = node.getPosition();\n\t\t\t\t\t\trot = node.getRotation();\n\t\t\t\t}\n\t\t\t\tconst ammoQuat = new Ammo.btQuaternion();\n\t\t\t\tconst transform = new Ammo.btTransform();\n\t\t\t\ttransform.setIdentity();\n\t\t\t\tconst origin = transform.getOrigin();\n\t\t\t\tconst component = node.collision;\n\t\t\t\tif (component && component._hasOffset) {\n\t\t\t\t\t\tconst lo = component.data.linearOffset;\n\t\t\t\t\t\tconst ao = component.data.angularOffset;\n\t\t\t\t\t\tconst newOrigin = p2;\n\t\t\t\t\t\tquat$1.copy(rot).transformVector(lo, newOrigin);\n\t\t\t\t\t\tnewOrigin.add(pos);\n\t\t\t\t\t\tquat$1.copy(rot).mul(ao);\n\t\t\t\t\t\torigin.setValue(newOrigin.x, newOrigin.y, newOrigin.z);\n\t\t\t\t\t\tammoQuat.setValue(quat$1.x, quat$1.y, quat$1.z, quat$1.w);\n\t\t\t\t} else {\n\t\t\t\t\t\torigin.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\tammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t}\n\t\t\t\ttransform.setRotation(ammoQuat);\n\t\t\t\tAmmo.destroy(ammoQuat);\n\t\t\t\treturn transform;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor(const key in this._triMeshCache){\n\t\t\t\t\t\tAmmo.destroy(this._triMeshCache[key]);\n\t\t\t\t}\n\t\t\t\tthis._triMeshCache = null;\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nconst _tempColor$2 = new Color();\nconst _vertexFormatDeviceCache = new DeviceCache();\nclass ImageRenderable {\n\t\tconstructor(entity, mesh, material){\n\t\t\t\tthis._entity = entity;\n\t\t\t\tthis._element = entity.element;\n\t\t\t\tthis.model = new Model();\n\t\t\t\tthis.node = new GraphNode();\n\t\t\t\tthis.model.graph = this.node;\n\t\t\t\tthis.mesh = mesh;\n\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, material, this.node);\n\t\t\t\tthis.meshInstance.name = `ImageElement: ${entity.name}`;\n\t\t\t\tthis.meshInstance.castShadow = false;\n\t\t\t\tthis.meshInstance.receiveShadow = false;\n\t\t\t\tthis._meshDirty = false;\n\t\t\t\tthis.model.meshInstances.push(this.meshInstance);\n\t\t\t\tthis._entity.addChild(this.model.graph);\n\t\t\t\tthis.model._entity = this._entity;\n\t\t\t\tthis.unmaskMeshInstance = null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.setMaterial(null);\n\t\t\t\tthis._element.removeModelFromLayers(this.model);\n\t\t\t\tthis.model.destroy();\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.node = null;\n\t\t\t\tthis.mesh = null;\n\t\t\t\tthis.meshInstance?.destroy();\n\t\t\t\tthis.meshInstance = null;\n\t\t\t\tthis.unmaskMeshInstance?.destroy();\n\t\t\t\tthis.unmaskMeshInstance = null;\n\t\t\t\tthis._entity = null;\n\t\t\t\tthis._element = null;\n\t\t}\n\t\tsetMesh(mesh) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.mesh = mesh;\n\t\t\t\tthis.meshInstance.mesh = mesh;\n\t\t\t\tthis.meshInstance.visible = !!mesh;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.mesh = mesh;\n\t\t\t\t}\n\t\t\t\tthis.forceUpdateAabb();\n\t\t}\n\t\tsetMask(mask) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tif (this._entity.enabled && this._element.enabled) {\n\t\t\t\t\t\tthis._element.removeModelFromLayers(this.model);\n\t\t\t\t}\n\t\t\t\tif (mask) {\n\t\t\t\t\t\tthis.unmaskMeshInstance = new MeshInstance(this.mesh, this.meshInstance.material, this.node);\n\t\t\t\t\t\tthis.unmaskMeshInstance.name = `Unmask: ${this._entity.name}`;\n\t\t\t\t\t\tthis.unmaskMeshInstance.castShadow = false;\n\t\t\t\t\t\tthis.unmaskMeshInstance.receiveShadow = false;\n\t\t\t\t\t\tthis.unmaskMeshInstance.pick = false;\n\t\t\t\t\t\tthis.model.meshInstances.push(this.unmaskMeshInstance);\n\t\t\t\t\t\tfor(const name in this.meshInstance.parameters){\n\t\t\t\t\t\t\t\tthis.unmaskMeshInstance.setParameter(name, this.meshInstance.parameters[name].data);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst idx = this.model.meshInstances.indexOf(this.unmaskMeshInstance);\n\t\t\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\t\t\tthis.model.meshInstances.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._entity.enabled && this._element.enabled) {\n\t\t\t\t\t\tthis._element.addModelToLayers(this.model);\n\t\t\t\t}\n\t\t\t\tif (!mask) {\n\t\t\t\t\t\tthis.unmaskMeshInstance?.destroy();\n\t\t\t\t\t\tthis.unmaskMeshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\tsetMaterial(material) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.material = material;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.material = material;\n\t\t\t\t}\n\t\t}\n\t\tsetParameter(name, value) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.setParameter(name, value);\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.setParameter(name, value);\n\t\t\t\t}\n\t\t}\n\t\tdeleteParameter(name) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.deleteParameter(name);\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.deleteParameter(name);\n\t\t\t\t}\n\t\t}\n\t\tsetUnmaskDrawOrder() {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tconst getLastChild = function(e) {\n\t\t\t\t\t\tlet last;\n\t\t\t\t\t\tconst c = e.children;\n\t\t\t\t\t\tconst l = c.length;\n\t\t\t\t\t\tif (l) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < l; i++){\n\t\t\t\t\t\t\t\t\t\tif (c[i].element) {\n\t\t\t\t\t\t\t\t\t\t\t\tlast = c[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!last) return null;\n\t\t\t\t\t\t\t\tconst child = getLastChild(last);\n\t\t\t\t\t\t\t\tif (child) {\n\t\t\t\t\t\t\t\t\t\treturn child;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn last;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tconst lastChild = getLastChild(this._entity);\n\t\t\t\t\t\tif (lastChild && lastChild.element) {\n\t\t\t\t\t\t\t\tthis.unmaskMeshInstance.drawOrder = lastChild.element.drawOrder + lastChild.element.getMaskOffset();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.unmaskMeshInstance.drawOrder = this.meshInstance.drawOrder + this._element.getMaskOffset();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetDrawOrder(drawOrder) {\n\t\t\t\tif (!this.meshInstance) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.meshInstance.drawOrder = drawOrder;\n\t\t}\n\t\tsetCull(cull) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tconst element = this._element;\n\t\t\t\tlet visibleFn = null;\n\t\t\t\tif (cull && element._isScreenSpace()) {\n\t\t\t\t\t\tvisibleFn = function(camera) {\n\t\t\t\t\t\t\t\treturn element.isVisibleForCamera(camera);\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis.meshInstance.cull = cull;\n\t\t\t\tthis.meshInstance.isVisibleFunc = visibleFn;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.cull = cull;\n\t\t\t\t\t\tthis.unmaskMeshInstance.isVisibleFunc = visibleFn;\n\t\t\t\t}\n\t\t}\n\t\tsetScreenSpace(screenSpace) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.screenSpace = screenSpace;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.screenSpace = screenSpace;\n\t\t\t\t}\n\t\t}\n\t\tsetLayer(layer) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance.layer = layer;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance.layer = layer;\n\t\t\t\t}\n\t\t}\n\t\tforceUpdateAabb(mask) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance._aabbVer = -1;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance._aabbVer = -1;\n\t\t\t\t}\n\t\t}\n\t\tsetAabbFunc(fn) {\n\t\t\t\tif (!this.meshInstance) return;\n\t\t\t\tthis.meshInstance._updateAabbFunc = fn;\n\t\t\t\tif (this.unmaskMeshInstance) {\n\t\t\t\t\t\tthis.unmaskMeshInstance._updateAabbFunc = fn;\n\t\t\t\t}\n\t\t}\n}\nclass ImageElement {\n\t\tconstructor(element){\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._entity = element.entity;\n\t\t\t\tthis._system = element.system;\n\t\t\t\tthis._textureAsset = null;\n\t\t\t\tthis._texture = null;\n\t\t\t\tthis._materialAsset = null;\n\t\t\t\tthis._material = null;\n\t\t\t\tthis._spriteAsset = null;\n\t\t\t\tthis._sprite = null;\n\t\t\t\tthis._spriteFrame = 0;\n\t\t\t\tthis._pixelsPerUnit = null;\n\t\t\t\tthis._targetAspectRatio = -1;\n\t\t\t\tthis._rect = new Vec4(0, 0, 1, 1);\n\t\t\t\tthis._mask = false;\n\t\t\t\tthis._maskRef = 0;\n\t\t\t\tthis._outerScale = new Vec2();\n\t\t\t\tthis._outerScaleUniform = new Float32Array(2);\n\t\t\t\tthis._innerOffset = new Vec4();\n\t\t\t\tthis._innerOffsetUniform = new Float32Array(4);\n\t\t\t\tthis._atlasRect = new Vec4();\n\t\t\t\tthis._atlasRectUniform = new Float32Array(4);\n\t\t\t\tthis._defaultMesh = this._createMesh();\n\t\t\t\tthis._renderable = new ImageRenderable(this._entity, this._defaultMesh, this._material);\n\t\t\t\tthis._color = new Color(1, 1, 1, 1);\n\t\t\t\tthis._colorUniform = new Float32Array([\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\tthis._renderable.setParameter('material_opacity', 1);\n\t\t\t\tthis._updateAabbFunc = this._updateAabb.bind(this);\n\t\t\t\tthis._onScreenChange(this._element.screen);\n\t\t\t\tthis._element.on('resize', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.on('set:pivot', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.on('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\tthis._element.on('set:screen', this._onScreenChange, this);\n\t\t\t\tthis._element.on('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\tthis._element.on('screen:set:resolution', this._onResolutionChange, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.textureAsset = null;\n\t\t\t\tthis.spriteAsset = null;\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._renderable.setMesh(this._defaultMesh);\n\t\t\t\tthis._renderable.destroy();\n\t\t\t\tthis._defaultMesh = null;\n\t\t\t\tthis._element.off('resize', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.off('set:pivot', this._onParentResizeOrPivotChange, this);\n\t\t\t\tthis._element.off('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\tthis._element.off('set:screen', this._onScreenChange, this);\n\t\t\t\tthis._element.off('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\tthis._element.off('screen:set:resolution', this._onResolutionChange, this);\n\t\t}\n\t\t_onResolutionChange(res) {}\n\t\t_onParentResizeOrPivotChange() {\n\t\t\t\tif (this._renderable.mesh) {\n\t\t\t\t\t\tthis._updateMesh(this._renderable.mesh);\n\t\t\t\t}\n\t\t}\n\t\t_onScreenSpaceChange(value) {\n\t\t\t\tthis._updateMaterial(value);\n\t\t}\n\t\t_onScreenChange(screen, previous) {\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tthis._updateMaterial(screen.screen.screenSpace);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._updateMaterial(false);\n\t\t\t\t}\n\t\t}\n\t\t_onDrawOrderChange(order) {\n\t\t\t\tthis._renderable.setDrawOrder(order);\n\t\t\t\tif (this.mask && this._element.screen) {\n\t\t\t\t\t\tthis._element.screen.screen.once('syncdraworder', function() {\n\t\t\t\t\t\t\t\tthis._renderable.setUnmaskDrawOrder();\n\t\t\t\t\t\t}, this);\n\t\t\t\t}\n\t\t}\n\t\t_hasUserMaterial() {\n\t\t\t\treturn !!this._materialAsset || !!this._material && this._system.defaultImageMaterials.indexOf(this._material) === -1;\n\t\t}\n\t\t_use9Slicing() {\n\t\t\t\treturn this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED);\n\t\t}\n\t\t_updateMaterial(screenSpace) {\n\t\t\t\tconst mask = !!this._mask;\n\t\t\t\tconst nineSliced = !!(this.sprite && this.sprite.renderMode === SPRITE_RENDERMODE_SLICED);\n\t\t\t\tconst nineTiled = !!(this.sprite && this.sprite.renderMode === SPRITE_RENDERMODE_TILED);\n\t\t\t\tif (!this._hasUserMaterial()) {\n\t\t\t\t\t\tthis._material = this._system.getImageElementMaterial(screenSpace, mask, nineSliced, nineTiled);\n\t\t\t\t}\n\t\t\t\tif (this._renderable) {\n\t\t\t\t\t\tthis._renderable.setCull(!this._element._isScreenSpace() || this._element._isScreenCulled());\n\t\t\t\t\t\tthis._renderable.setMaterial(this._material);\n\t\t\t\t\t\tthis._renderable.setScreenSpace(screenSpace);\n\t\t\t\t\t\tthis._renderable.setLayer(screenSpace ? LAYER_HUD : LAYER_WORLD);\n\t\t\t\t}\n\t\t}\n\t\t_createMesh() {\n\t\t\t\tconst element = this._element;\n\t\t\t\tconst w = element.calculatedWidth;\n\t\t\t\tconst h = element.calculatedHeight;\n\t\t\t\tconst r = this._rect;\n\t\t\t\tconst device = this._system.app.graphicsDevice;\n\t\t\t\tconst vertexData = new Float32Array([\n\t\t\t\t\t\tw,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x + r.z,\n\t\t\t\t\t\t1.0 - r.y,\n\t\t\t\t\t\tw,\n\t\t\t\t\t\th,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x + r.z,\n\t\t\t\t\t\t1.0 - (r.y + r.w),\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x,\n\t\t\t\t\t\t1.0 - r.y,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\th,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tr.x,\n\t\t\t\t\t\t1.0 - (r.y + r.w)\n\t\t\t\t]);\n\t\t\t\tconst vertexFormat = _vertexFormatDeviceCache.get(device, ()=>{\n\t\t\t\t\t\treturn new VertexFormat(device, [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_NORMAL,\n\t\t\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tsemantic: SEMANTIC_TEXCOORD0,\n\t\t\t\t\t\t\t\t\t\tcomponents: 2,\n\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]);\n\t\t\t\t});\n\t\t\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, 4, {\n\t\t\t\t\t\tdata: vertexData.buffer\n\t\t\t\t});\n\t\t\t\tconst mesh = new Mesh(device);\n\t\t\t\tmesh.vertexBuffer = vertexBuffer;\n\t\t\t\tmesh.primitive[0].type = PRIMITIVE_TRISTRIP;\n\t\t\t\tmesh.primitive[0].base = 0;\n\t\t\t\tmesh.primitive[0].count = 4;\n\t\t\t\tmesh.primitive[0].indexed = false;\n\t\t\t\tmesh.aabb.setMinMax(Vec3.ZERO, new Vec3(w, h, 0));\n\t\t\t\tthis._updateMesh(mesh);\n\t\t\t\treturn mesh;\n\t\t}\n\t\t_updateMesh(mesh) {\n\t\t\t\tconst element = this._element;\n\t\t\t\tlet w = element.calculatedWidth;\n\t\t\t\tlet h = element.calculatedHeight;\n\t\t\t\tif (element.fitMode !== FITMODE_STRETCH && this._targetAspectRatio > 0) {\n\t\t\t\t\t\tconst actualRatio = element.calculatedWidth / element.calculatedHeight;\n\t\t\t\t\t\tif (element.fitMode === FITMODE_CONTAIN && actualRatio > this._targetAspectRatio || element.fitMode === FITMODE_COVER && actualRatio < this._targetAspectRatio) {\n\t\t\t\t\t\t\t\tw = element.calculatedHeight * this._targetAspectRatio;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\th = element.calculatedWidth / this._targetAspectRatio;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst screenSpace = element._isScreenSpace();\n\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t\t\tif (this._renderable) this._renderable.forceUpdateAabb();\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tconst frameData = this._sprite.atlas.frames[this._sprite.frameKeys[this._spriteFrame]];\n\t\t\t\t\t\tconst borderWidthScale = 2 / frameData.rect.z;\n\t\t\t\t\t\tconst borderHeightScale = 2 / frameData.rect.w;\n\t\t\t\t\t\tthis._innerOffset.set(frameData.border.x * borderWidthScale, frameData.border.y * borderHeightScale, frameData.border.z * borderWidthScale, frameData.border.w * borderHeightScale);\n\t\t\t\t\t\tconst tex = this.sprite.atlas.texture;\n\t\t\t\t\t\tthis._atlasRect.set(frameData.rect.x / tex.width, frameData.rect.y / tex.height, frameData.rect.z / tex.width, frameData.rect.w / tex.height);\n\t\t\t\t\t\tconst ppu = this._pixelsPerUnit !== null ? this._pixelsPerUnit : this.sprite.pixelsPerUnit;\n\t\t\t\t\t\tconst scaleMulX = frameData.rect.z / ppu;\n\t\t\t\t\t\tconst scaleMulY = frameData.rect.w / ppu;\n\t\t\t\t\t\tthis._outerScale.set(Math.max(w, this._innerOffset.x * scaleMulX), Math.max(h, this._innerOffset.y * scaleMulY));\n\t\t\t\t\t\tlet scaleX = scaleMulX;\n\t\t\t\t\t\tlet scaleY = scaleMulY;\n\t\t\t\t\t\tthis._outerScale.x /= scaleMulX;\n\t\t\t\t\t\tthis._outerScale.y /= scaleMulY;\n\t\t\t\t\t\tscaleX *= math.clamp(w / (this._innerOffset.x * scaleMulX), 0.0001, 1);\n\t\t\t\t\t\tscaleY *= math.clamp(h / (this._innerOffset.y * scaleMulY), 0.0001, 1);\n\t\t\t\t\t\tif (this._renderable) {\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[0] = this._innerOffset.x;\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[1] = this._innerOffset.y;\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[2] = this._innerOffset.z;\n\t\t\t\t\t\t\t\tthis._innerOffsetUniform[3] = this._innerOffset.w;\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('innerOffset', this._innerOffsetUniform);\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[0] = this._atlasRect.x;\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[1] = this._atlasRect.y;\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[2] = this._atlasRect.z;\n\t\t\t\t\t\t\t\tthis._atlasRectUniform[3] = this._atlasRect.w;\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('atlasRect', this._atlasRectUniform);\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[0] = this._outerScale.x;\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[1] = this._outerScale.y;\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('outerScale', this._outerScaleUniform);\n\t\t\t\t\t\t\t\tthis._renderable.setAabbFunc(this._updateAabbFunc);\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalScale(scaleX, scaleY, 1);\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalPosition((0.5 - element.pivot.x) * w, (0.5 - element.pivot.y) * h, 0);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst vb = mesh.vertexBuffer;\n\t\t\t\t\t\tconst vertexDataF32 = new Float32Array(vb.lock());\n\t\t\t\t\t\tconst hp = element.pivot.x;\n\t\t\t\t\t\tconst vp = element.pivot.y;\n\t\t\t\t\t\tvertexDataF32[0] = w - hp * w;\n\t\t\t\t\t\tvertexDataF32[1] = 0 - vp * h;\n\t\t\t\t\t\tvertexDataF32[8] = w - hp * w;\n\t\t\t\t\t\tvertexDataF32[9] = h - vp * h;\n\t\t\t\t\t\tvertexDataF32[16] = 0 - hp * w;\n\t\t\t\t\t\tvertexDataF32[17] = 0 - vp * h;\n\t\t\t\t\t\tvertexDataF32[24] = 0 - hp * w;\n\t\t\t\t\t\tvertexDataF32[25] = h - vp * h;\n\t\t\t\t\t\tlet atlasTextureWidth = 1;\n\t\t\t\t\t\tlet atlasTextureHeight = 1;\n\t\t\t\t\t\tlet rect = this._rect;\n\t\t\t\t\t\tif (this._sprite && this._sprite.frameKeys[this._spriteFrame] && this._sprite.atlas) {\n\t\t\t\t\t\t\t\tconst frame = this._sprite.atlas.frames[this._sprite.frameKeys[this._spriteFrame]];\n\t\t\t\t\t\t\t\tif (frame) {\n\t\t\t\t\t\t\t\t\t\trect = frame.rect;\n\t\t\t\t\t\t\t\t\t\tatlasTextureWidth = this._sprite.atlas.texture.width;\n\t\t\t\t\t\t\t\t\t\tatlasTextureHeight = this._sprite.atlas.texture.height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvertexDataF32[6] = (rect.x + rect.z) / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[7] = 1.0 - rect.y / atlasTextureHeight;\n\t\t\t\t\t\tvertexDataF32[14] = (rect.x + rect.z) / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[15] = 1.0 - (rect.y + rect.w) / atlasTextureHeight;\n\t\t\t\t\t\tvertexDataF32[22] = rect.x / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[23] = 1.0 - rect.y / atlasTextureHeight;\n\t\t\t\t\t\tvertexDataF32[30] = rect.x / atlasTextureWidth;\n\t\t\t\t\t\tvertexDataF32[31] = 1.0 - (rect.y + rect.w) / atlasTextureHeight;\n\t\t\t\t\t\tvb.unlock();\n\t\t\t\t\t\tconst min = new Vec3(0 - hp * w, 0 - vp * h, 0);\n\t\t\t\t\t\tconst max = new Vec3(w - hp * w, h - vp * h, 0);\n\t\t\t\t\t\tmesh.aabb.setMinMax(min, max);\n\t\t\t\t\t\tif (this._renderable) {\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalScale(1, 1, 1);\n\t\t\t\t\t\t\t\tthis._renderable.node.setLocalPosition(0, 0, 0);\n\t\t\t\t\t\t\t\tthis._renderable.setAabbFunc(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._meshDirty = false;\n\t\t}\n\t\t_updateSprite() {\n\t\t\t\tlet nineSlice = false;\n\t\t\t\tlet mesh = null;\n\t\t\t\tthis._targetAspectRatio = -1;\n\t\t\t\tif (this._sprite && this._sprite.atlas) {\n\t\t\t\t\t\tmesh = this._sprite.meshes[this.spriteFrame];\n\t\t\t\t\t\tnineSlice = this._sprite.renderMode === SPRITE_RENDERMODE_SLICED || this._sprite.renderMode === SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\tconst frameData = this._sprite.atlas.frames[this._sprite.frameKeys[this._spriteFrame]];\n\t\t\t\t\t\tif (frameData?.rect.w > 0) {\n\t\t\t\t\t\t\t\tthis._targetAspectRatio = frameData.rect.z / frameData.rect.w;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.mesh = nineSlice ? mesh : this._defaultMesh;\n\t\t\t\tthis.refreshMesh();\n\t\t}\n\t\trefreshMesh() {\n\t\t\t\tif (this.mesh) {\n\t\t\t\t\t\tif (!this._element._beingInitialized) {\n\t\t\t\t\t\t\t\tthis._updateMesh(this.mesh);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._meshDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateAabb(aabb) {\n\t\t\t\taabb.center.set(0, 0, 0);\n\t\t\t\taabb.halfExtents.set(this._outerScale.x * 0.5, this._outerScale.y * 0.5, 0.001);\n\t\t\t\taabb.setFromTransformedAabb(aabb, this._renderable.node.getWorldTransform());\n\t\t\t\treturn aabb;\n\t\t}\n\t\t_toggleMask() {\n\t\t\t\tthis._element._dirtifyMask();\n\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t\t\tthis._renderable.setMask(!!this._mask);\n\t\t}\n\t\t_onMaterialLoad(asset) {\n\t\t\t\tthis.material = asset.resource;\n\t\t}\n\t\t_onMaterialAdded(asset) {\n\t\t\t\tthis._system.app.assets.off(`add:${asset.id}`, this._onMaterialAdded, this);\n\t\t\t\tif (this._materialAsset === asset.id) {\n\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindMaterialAsset(asset) {\n\t\t\t\tif (!this._entity.enabled) return;\n\t\t\t\tasset.on('load', this._onMaterialLoad, this);\n\t\t\t\tasset.on('change', this._onMaterialChange, this);\n\t\t\t\tasset.on('remove', this._onMaterialRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMaterialLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindMaterialAsset(asset) {\n\t\t\t\tasset.off('load', this._onMaterialLoad, this);\n\t\t\t\tasset.off('change', this._onMaterialChange, this);\n\t\t\t\tasset.off('remove', this._onMaterialRemove, this);\n\t\t}\n\t\t_onMaterialChange() {}\n\t\t_onMaterialRemove() {}\n\t\t_onTextureAdded(asset) {\n\t\t\t\tthis._system.app.assets.off(`add:${asset.id}`, this._onTextureAdded, this);\n\t\t\t\tif (this._textureAsset === asset.id) {\n\t\t\t\t\t\tthis._bindTextureAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindTextureAsset(asset) {\n\t\t\t\tif (!this._entity.enabled) return;\n\t\t\t\tasset.on('load', this._onTextureLoad, this);\n\t\t\t\tasset.on('change', this._onTextureChange, this);\n\t\t\t\tasset.on('remove', this._onTextureRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onTextureLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindTextureAsset(asset) {\n\t\t\t\tasset.off('load', this._onTextureLoad, this);\n\t\t\t\tasset.off('change', this._onTextureChange, this);\n\t\t\t\tasset.off('remove', this._onTextureRemove, this);\n\t\t}\n\t\t_onTextureLoad(asset) {\n\t\t\t\tthis.texture = asset.resource;\n\t\t}\n\t\t_onTextureChange(asset) {}\n\t\t_onTextureRemove(asset) {}\n\t\t_onSpriteAssetAdded(asset) {\n\t\t\t\tthis._system.app.assets.off(`add:${asset.id}`, this._onSpriteAssetAdded, this);\n\t\t\t\tif (this._spriteAsset === asset.id) {\n\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindSpriteAsset(asset) {\n\t\t\t\tif (!this._entity.enabled) return;\n\t\t\t\tasset.on('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.on('change', this._onSpriteAssetChange, this);\n\t\t\t\tasset.on('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindSpriteAsset(asset) {\n\t\t\t\tasset.off('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.off('change', this._onSpriteAssetChange, this);\n\t\t\t\tasset.off('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.data.textureAtlasAsset) {\n\t\t\t\t\t\tthis._system.app.assets.off(`load:${asset.data.textureAtlasAsset}`, this._onTextureAtlasLoad, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetLoad(asset) {\n\t\t\t\tif (!asset || !asset.resource) {\n\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!asset.resource.atlas) {\n\t\t\t\t\t\t\t\tconst atlasAssetId = asset.data.textureAtlasAsset;\n\t\t\t\t\t\t\t\tif (atlasAssetId) {\n\t\t\t\t\t\t\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\t\t\t\t\t\t\tassets.off(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t\t\t\t\tassets.once(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetChange(asset) {\n\t\t\t\tthis._onSpriteAssetLoad(asset);\n\t\t}\n\t\t_onSpriteAssetRemove(asset) {}\n\t\t_bindSprite(sprite) {\n\t\t\t\tthis._evtSetMeshes = sprite.on('set:meshes', this._onSpriteMeshesChange, this);\n\t\t\t\tsprite.on('set:pixelsPerUnit', this._onSpritePpuChange, this);\n\t\t\t\tsprite.on('set:atlas', this._onAtlasTextureChange, this);\n\t\t\t\tif (sprite.atlas) {\n\t\t\t\t\t\tsprite.atlas.on('set:texture', this._onAtlasTextureChange, this);\n\t\t\t\t}\n\t\t}\n\t\t_unbindSprite(sprite) {\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\tsprite.off('set:pixelsPerUnit', this._onSpritePpuChange, this);\n\t\t\t\tsprite.off('set:atlas', this._onAtlasTextureChange, this);\n\t\t\t\tif (sprite.atlas) {\n\t\t\t\t\t\tsprite.atlas.off('set:texture', this._onAtlasTextureChange, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteMeshesChange() {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._spriteFrame = math.clamp(this._spriteFrame, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t}\n\t\t\t\tthis._updateSprite();\n\t\t}\n\t\t_onSpritePpuChange() {\n\t\t\t\tif (this.sprite.renderMode !== SPRITE_RENDERMODE_SIMPLE && this._pixelsPerUnit === null) {\n\t\t\t\t\t\tthis._updateSprite();\n\t\t\t\t}\n\t\t}\n\t\t_onAtlasTextureChange() {\n\t\t\t\tif (this.sprite && this.sprite.atlas && this.sprite.atlas.texture) {\n\t\t\t\t\t\tthis._renderable.setParameter('texture_emissiveMap', this._sprite.atlas.texture);\n\t\t\t\t\t\tthis._renderable.setParameter('texture_opacityMap', this._sprite.atlas.texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_opacityMap');\n\t\t\t\t}\n\t\t}\n\t\t_onTextureAtlasLoad(atlasAsset) {\n\t\t\t\tconst spriteAsset = this._spriteAsset;\n\t\t\t\tif (spriteAsset instanceof Asset) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(spriteAsset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(this._system.app.assets.get(spriteAsset));\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._materialAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._material) {\n\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._textureAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._texture) {\n\t\t\t\t\t\t\t\tthis._bindTextureAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._spriteAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._sprite) {\n\t\t\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._element.addModelToLayers(this._renderable.model);\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._element.removeModelFromLayers(this._renderable.model);\n\t\t}\n\t\t_setStencil(stencilParams) {\n\t\t\t\tthis._renderable.meshInstance.stencilFront = stencilParams;\n\t\t\t\tthis._renderable.meshInstance.stencilBack = stencilParams;\n\t\t\t\tlet ref = 0;\n\t\t\t\tif (this._element.maskedBy) {\n\t\t\t\t\t\tref = this._element.maskedBy.element._image._maskRef;\n\t\t\t\t}\n\t\t\t\tif (this._renderable.unmaskMeshInstance) {\n\t\t\t\t\t\tconst sp = new StencilParameters({\n\t\t\t\t\t\t\t\tref: ref + 1,\n\t\t\t\t\t\t\t\tfunc: FUNC_EQUAL,\n\t\t\t\t\t\t\t\tzpass: STENCILOP_DECREMENT\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._renderable.unmaskMeshInstance.stencilFront = sp;\n\t\t\t\t\t\tthis._renderable.unmaskMeshInstance.stencilBack = sp;\n\t\t\t\t}\n\t\t}\n\t\t_updateRenderableEmissive() {\n\t\t\t\t_tempColor$2.linear(this._color);\n\t\t\t\tthis._colorUniform[0] = _tempColor$2.r;\n\t\t\t\tthis._colorUniform[1] = _tempColor$2.g;\n\t\t\t\tthis._colorUniform[2] = _tempColor$2.b;\n\t\t\t\tthis._renderable.setParameter('material_emissive', this._colorUniform);\n\t\t}\n\t\tset color(value) {\n\t\t\t\tconst { r, g, b } = value;\n\t\t\t\tif (this._color.r !== r || this._color.g !== g || this._color.b !== b) {\n\t\t\t\t\t\tthis._color.r = r;\n\t\t\t\t\t\tthis._color.g = g;\n\t\t\t\t\t\tthis._color.b = b;\n\t\t\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:color', this._color);\n\t\t\t\t}\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tif (value !== this._color.a) {\n\t\t\t\t\t\tthis._color.a = value;\n\t\t\t\t\t\tthis._renderable.setParameter('material_opacity', value);\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:opacity', value);\n\t\t\t\t}\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this._color.a;\n\t\t}\n\t\tset rect(value) {\n\t\t\t\tlet x, y, z, w;\n\t\t\t\tif (value instanceof Vec4) {\n\t\t\t\t\t\tx = value.x;\n\t\t\t\t\t\ty = value.y;\n\t\t\t\t\t\tz = value.z;\n\t\t\t\t\t\tw = value.w;\n\t\t\t\t} else {\n\t\t\t\t\t\tx = value[0];\n\t\t\t\t\t\ty = value[1];\n\t\t\t\t\t\tz = value[2];\n\t\t\t\t\t\tw = value[3];\n\t\t\t\t}\n\t\t\t\tif (x === this._rect.x && y === this._rect.y && z === this._rect.z && w === this._rect.w) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._rect.set(x, y, z, w);\n\t\t\t\tif (this._renderable.mesh) {\n\t\t\t\t\t\tif (!this._element._beingInitialized) {\n\t\t\t\t\t\t\t\tthis._updateMesh(this._renderable.mesh);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._meshDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rect() {\n\t\t\t\treturn this._rect;\n\t\t}\n\t\t_removeMaterialAssetEvents() {\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\t\t\tassets.off(`add:${this._materialAsset}`, this._onMaterialAdded, this);\n\t\t\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tasset.off('load', this._onMaterialLoad, this);\n\t\t\t\t\t\t\t\tasset.off('change', this._onMaterialChange, this);\n\t\t\t\t\t\t\t\tasset.off('remove', this._onMaterialRemove, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material === value) return;\n\t\t\t\tif (!value) {\n\t\t\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tvalue = screenSpace ? this._system.defaultScreenSpaceImageMaskMaterial : this._system.defaultImageMaskMaterial;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tvalue = screenSpace ? this._system.defaultScreenSpaceImageMaterial : this._system.defaultImageMaterial;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._material = value;\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._materialAsset);\n\t\t\t\t\t\tif (!asset || asset.resource !== value) {\n\t\t\t\t\t\t\t\tthis._removeMaterialAssetEvents();\n\t\t\t\t\t\t\t\tthis._materialAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (value) {\n\t\t\t\t\t\tthis._renderable.setMaterial(value);\n\t\t\t\t\t\tif (this._hasUserMaterial()) {\n\t\t\t\t\t\t\t\tthis._renderable.deleteParameter('material_opacity');\n\t\t\t\t\t\t\t\tthis._renderable.deleteParameter('material_emissive');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\t\t\t\t\tthis._renderable.setParameter('material_opacity', this._color.a);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset materialAsset(value) {\n\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._materialAsset !== _id) {\n\t\t\t\t\t\tthis._removeMaterialAssetEvents();\n\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis._materialAsset = null;\n\t\t\t\t\t\t\t\t\t\tthis.material = null;\n\t\t\t\t\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._materialAsset}`, this._onMaterialAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._materialAsset = null;\n\t\t\t\t\t\t\t\tthis.material = null;\n\t\t\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget materialAsset() {\n\t\t\t\treturn this._materialAsset;\n\t\t}\n\t\tset texture(value) {\n\t\t\t\tif (this._texture === value) return;\n\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\tconst textureAsset = this._system.app.assets.get(this._textureAsset);\n\t\t\t\t\t\tif (textureAsset && textureAsset.resource !== value) {\n\t\t\t\t\t\t\t\tthis.textureAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._texture = value;\n\t\t\t\tif (value) {\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tthis.spriteAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._renderable.setParameter('texture_emissiveMap', this._texture);\n\t\t\t\t\t\tthis._renderable.setParameter('texture_opacityMap', this._texture);\n\t\t\t\t\t\tthis._updateRenderableEmissive();\n\t\t\t\t\t\tthis._renderable.setParameter('material_opacity', this._color.a);\n\t\t\t\t\t\tconst newAspectRatio = this._texture.width / this._texture.height;\n\t\t\t\t\t\tif (newAspectRatio !== this._targetAspectRatio) {\n\t\t\t\t\t\t\t\tthis._targetAspectRatio = newAspectRatio;\n\t\t\t\t\t\t\t\tif (this._element.fitMode !== FITMODE_STRETCH) {\n\t\t\t\t\t\t\t\t\t\tthis.refreshMesh();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_opacityMap');\n\t\t\t\t\t\tthis._targetAspectRatio = -1;\n\t\t\t\t\t\tif (this._element.fitMode !== FITMODE_STRETCH) {\n\t\t\t\t\t\t\t\tthis.refreshMesh();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget texture() {\n\t\t\t\treturn this._texture;\n\t\t}\n\t\tset textureAsset(value) {\n\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._textureAsset !== _id) {\n\t\t\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._textureAsset}`, this._onTextureAdded, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._textureAsset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\t_prev.off('load', this._onTextureLoad, this);\n\t\t\t\t\t\t\t\t\t\t_prev.off('change', this._onTextureChange, this);\n\t\t\t\t\t\t\t\t\t\t_prev.off('remove', this._onTextureRemove, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._textureAsset = _id;\n\t\t\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._textureAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.texture = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._textureAsset}`, this._onTextureAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindTextureAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.texture = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget textureAsset() {\n\t\t\t\treturn this._textureAsset;\n\t\t}\n\t\tset spriteAsset(value) {\n\t\t\t\tconst assets = this._system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset !== _id) {\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._spriteAsset}`, this._onSpriteAssetAdded, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindSpriteAsset(_prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._spriteAsset = _id;\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._spriteAsset}`, this._onSpriteAssetAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:spriteAsset', _id);\n\t\t\t\t}\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\treturn this._spriteAsset;\n\t\t}\n\t\tset sprite(value) {\n\t\t\t\tif (this._sprite === value) return;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._unbindSprite(this._sprite);\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tconst spriteAsset = this._system.app.assets.get(this._spriteAsset);\n\t\t\t\t\t\tif (spriteAsset && spriteAsset.resource !== value) {\n\t\t\t\t\t\t\t\tthis.spriteAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._sprite = value;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._bindSprite(this._sprite);\n\t\t\t\t\t\tif (this._textureAsset) {\n\t\t\t\t\t\t\t\tthis.textureAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._sprite && this._sprite.atlas && this._sprite.atlas.texture) {\n\t\t\t\t\t\tthis._renderable.setParameter('texture_emissiveMap', this._sprite.atlas.texture);\n\t\t\t\t\t\tthis._renderable.setParameter('texture_opacityMap', this._sprite.atlas.texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\tthis._renderable.deleteParameter('texture_opacityMap');\n\t\t\t\t}\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._spriteFrame = math.clamp(this._spriteFrame, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t}\n\t\t\t\tthis._updateSprite();\n\t\t}\n\t\tget sprite() {\n\t\t\t\treturn this._sprite;\n\t\t}\n\t\tset spriteFrame(value) {\n\t\t\t\tconst oldValue = this._spriteFrame;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._spriteFrame = math.clamp(value, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._spriteFrame = value;\n\t\t\t\t}\n\t\t\t\tif (this._spriteFrame !== oldValue) {\n\t\t\t\t\t\tthis._updateSprite();\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:spriteFrame', value);\n\t\t\t\t}\n\t\t}\n\t\tget spriteFrame() {\n\t\t\t\treturn this._spriteFrame;\n\t\t}\n\t\tset mesh(value) {\n\t\t\t\tthis._renderable.setMesh(value);\n\t\t\t\tif (this._defaultMesh === value) {\n\t\t\t\t\t\tthis._renderable.setAabbFunc(null);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._renderable.setAabbFunc(this._updateAabbFunc);\n\t\t\t\t}\n\t\t}\n\t\tget mesh() {\n\t\t\t\treturn this._renderable.mesh;\n\t\t}\n\t\tset mask(value) {\n\t\t\t\tif (this._mask !== value) {\n\t\t\t\t\t\tthis._mask = value;\n\t\t\t\t\t\tthis._toggleMask();\n\t\t\t\t}\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tset pixelsPerUnit(value) {\n\t\t\t\tif (this._pixelsPerUnit === value) return;\n\t\t\t\tthis._pixelsPerUnit = value;\n\t\t\t\tif (this._sprite && (this._sprite.renderMode === SPRITE_RENDERMODE_SLICED || this._sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tthis._updateSprite();\n\t\t\t\t}\n\t\t}\n\t\tget pixelsPerUnit() {\n\t\t\t\treturn this._pixelsPerUnit;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._renderable.meshInstance) {\n\t\t\t\t\t\treturn this._renderable.meshInstance.aabb;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n}\n\nclass LocalizedAsset extends EventHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper();\n\t\t\t\tthis._app = app;\n\t\t\t\tapp.i18n.on(I18n.EVENT_CHANGE, this._onSetLocale, this);\n\t\t\t\tthis._autoLoad = false;\n\t\t\t\tthis._disableLocalization = false;\n\t\t\t\tthis._defaultAsset = null;\n\t\t\t\tthis._localizedAsset = null;\n\t\t}\n\t\tset defaultAsset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._defaultAsset === id) return;\n\t\t\t\tif (this._defaultAsset) {\n\t\t\t\t\t\tthis._unbindDefaultAsset();\n\t\t\t\t}\n\t\t\t\tthis._defaultAsset = id;\n\t\t\t\tif (this._defaultAsset) {\n\t\t\t\t\t\tthis._bindDefaultAsset();\n\t\t\t\t}\n\t\t\t\tthis._onSetLocale(this._app.i18n.locale);\n\t\t}\n\t\tget defaultAsset() {\n\t\t\t\treturn this._defaultAsset;\n\t\t}\n\t\tset localizedAsset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._localizedAsset === id) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._localizedAsset) {\n\t\t\t\t\t\tthis._app.assets.off(`add:${this._localizedAsset}`, this._onLocalizedAssetAdd, this);\n\t\t\t\t\t\tthis._unbindLocalizedAsset();\n\t\t\t\t}\n\t\t\t\tthis._localizedAsset = id;\n\t\t\t\tif (this._localizedAsset) {\n\t\t\t\t\t\tconst asset = this._app.assets.get(this._localizedAsset);\n\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\tthis._app.assets.once(`add:${this._localizedAsset}`, this._onLocalizedAssetAdd, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._bindLocalizedAsset();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget localizedAsset() {\n\t\t\t\treturn this._localizedAsset;\n\t\t}\n\t\tset autoLoad(value) {\n\t\t\t\tif (this._autoLoad === value) return;\n\t\t\t\tthis._autoLoad = value;\n\t\t\t\tif (this._autoLoad && this._localizedAsset) {\n\t\t\t\t\t\tthis._unbindLocalizedAsset();\n\t\t\t\t\t\tthis._bindLocalizedAsset();\n\t\t\t\t}\n\t\t}\n\t\tget autoLoad() {\n\t\t\t\treturn this._autoLoad;\n\t\t}\n\t\tset disableLocalization(value) {\n\t\t\t\tif (this._disableLocalization === value) return;\n\t\t\t\tthis._disableLocalization = value;\n\t\t\t\tthis._onSetLocale(this._app.i18n.locale);\n\t\t}\n\t\tget disableLocalization() {\n\t\t\t\treturn this._disableLocalization;\n\t\t}\n\t\t_bindDefaultAsset() {\n\t\t\t\tconst asset = this._app.assets.get(this._defaultAsset);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tthis._app.assets.once(`add:${this._defaultAsset}`, this._onDefaultAssetAdd, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onDefaultAssetAdd(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindDefaultAsset() {\n\t\t\t\tif (!this._defaultAsset) return;\n\t\t\t\tthis._app.assets.off(`add:${this._defaultAsset}`, this._onDefaultAssetAdd, this);\n\t\t\t\tconst asset = this._app.assets.get(this._defaultAsset);\n\t\t\t\tif (!asset) return;\n\t\t\t\tasset.off('add:localized', this._onLocaleAdd, this);\n\t\t\t\tasset.off('remove:localized', this._onLocaleRemove, this);\n\t\t\t\tasset.off('remove', this._onDefaultAssetRemove, this);\n\t\t}\n\t\t_onDefaultAssetAdd(asset) {\n\t\t\t\tif (this._defaultAsset !== asset.id) return;\n\t\t\t\tasset.on('add:localized', this._onLocaleAdd, this);\n\t\t\t\tasset.on('remove:localized', this._onLocaleRemove, this);\n\t\t\t\tasset.once('remove', this._onDefaultAssetRemove, this);\n\t\t}\n\t\t_onDefaultAssetRemove(asset) {\n\t\t\t\tif (this._defaultAsset !== asset.id) return;\n\t\t\t\tasset.off('add:localized', this._onLocaleAdd, this);\n\t\t\t\tasset.off('remove:localized', this._onLocaleAdd, this);\n\t\t\t\tthis._app.assets.once(`add:${this._defaultAsset}`, this._onDefaultAssetAdd, this);\n\t\t}\n\t\t_bindLocalizedAsset() {\n\t\t\t\tif (!this._autoLoad) return;\n\t\t\t\tconst asset = this._app.assets.get(this._localizedAsset);\n\t\t\t\tif (!asset) return;\n\t\t\t\tasset.on('load', this._onLocalizedAssetLoad, this);\n\t\t\t\tasset.on('change', this._onLocalizedAssetChange, this);\n\t\t\t\tasset.on('remove', this._onLocalizedAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onLocalizedAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindLocalizedAsset() {\n\t\t\t\tconst asset = this._app.assets.get(this._localizedAsset);\n\t\t\t\tif (!asset) return;\n\t\t\t\tasset.off('load', this._onLocalizedAssetLoad, this);\n\t\t\t\tasset.off('change', this._onLocalizedAssetChange, this);\n\t\t\t\tasset.off('remove', this._onLocalizedAssetRemove, this);\n\t\t}\n\t\t_onLocalizedAssetAdd(asset) {\n\t\t\t\tif (this._localizedAsset !== asset.id) return;\n\t\t\t\tthis._bindLocalizedAsset();\n\t\t}\n\t\t_onLocalizedAssetLoad(asset) {\n\t\t\t\tthis.fire('load', asset);\n\t\t}\n\t\t_onLocalizedAssetChange(asset, name, newValue, oldValue) {\n\t\t\t\tthis.fire('change', asset, name, newValue, oldValue);\n\t\t}\n\t\t_onLocalizedAssetRemove(asset) {\n\t\t\t\tif (this._localizedAsset === asset.id) {\n\t\t\t\t\t\tthis.localizedAsset = this._defaultAsset;\n\t\t\t\t}\n\t\t\t\tthis.fire('remove', asset);\n\t\t}\n\t\t_onLocaleAdd(locale, assetId) {\n\t\t\t\tif (this._app.i18n.locale !== locale) return;\n\t\t\t\tthis._onSetLocale(locale);\n\t\t}\n\t\t_onLocaleRemove(locale, assetId) {\n\t\t\t\tif (this._app.i18n.locale !== locale) return;\n\t\t\t\tthis._onSetLocale(locale);\n\t\t}\n\t\t_onSetLocale(locale) {\n\t\t\t\tif (!this._defaultAsset) {\n\t\t\t\t\t\tthis.localizedAsset = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst asset = this._app.assets.get(this._defaultAsset);\n\t\t\t\tif (!asset || this._disableLocalization) {\n\t\t\t\t\t\tthis.localizedAsset = this._defaultAsset;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst localizedAssetId = asset.getLocalizedAssetId(locale);\n\t\t\t\tif (!localizedAssetId) {\n\t\t\t\t\t\tthis.localizedAsset = this._defaultAsset;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.localizedAsset = localizedAssetId;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.defaultAsset = null;\n\t\t\t\tthis._app.i18n.off(I18n.EVENT_CHANGE, this._onSetLocale, this);\n\t\t\t\tthis.off();\n\t\t}\n}\n\nconst FONT_MSDF = 'msdf';\nconst FONT_BITMAP = 'bitmap';\n\nconst EOF_TOKEN = 0;\nconst ERROR_TOKEN = 1;\nconst TEXT_TOKEN = 2;\nconst OPEN_BRACKET_TOKEN = 3;\nconst CLOSE_BRACKET_TOKEN = 4;\nconst EQUALS_TOKEN = 5;\nconst STRING_TOKEN = 6;\nconst IDENTIFIER_TOKEN = 7;\nconst WHITESPACE_TOKEN = 8;\nconst WHITESPACE_CHARS = ' \\t\\n\\r\\v\\f';\nconst IDENTIFIER_REGEX = /[\\w|/]/;\nclass Scanner {\n\t\tconstructor(symbols){\n\t\t\t\tthis._symbols = symbols;\n\t\t\t\tthis._index = 0;\n\t\t\t\tthis._last = 0;\n\t\t\t\tthis._cur = this._symbols.length > 0 ? this._symbols[0] : null;\n\t\t\t\tthis._buf = [];\n\t\t\t\tthis._mode = 'text';\n\t\t\t\tthis._error = null;\n\t\t}\n\t\tread() {\n\t\t\t\tlet token = this._read();\n\t\t\t\twhile(token === WHITESPACE_TOKEN){\n\t\t\t\t\t\ttoken = this._read();\n\t\t\t\t}\n\t\t\t\tif (token !== EOF_TOKEN && token !== ERROR_TOKEN) {\n\t\t\t\t\t\tthis._last = this._index;\n\t\t\t\t}\n\t\t\t\treturn token;\n\t\t}\n\t\tbuf() {\n\t\t\t\treturn this._buf;\n\t\t}\n\t\tlast() {\n\t\t\t\treturn this._last;\n\t\t}\n\t\terror() {\n\t\t\t\treturn this._error;\n\t\t}\n\t\tdebugPrint() {\n\t\t\t\tconst tokenStrings = [\n\t\t\t\t\t\t'EOF',\n\t\t\t\t\t\t'ERROR',\n\t\t\t\t\t\t'TEXT',\n\t\t\t\t\t\t'OPEN_BRACKET',\n\t\t\t\t\t\t'CLOSE_BRACKET',\n\t\t\t\t\t\t'EQUALS',\n\t\t\t\t\t\t'STRING',\n\t\t\t\t\t\t'IDENTIFIER',\n\t\t\t\t\t\t'WHITESPACE'\n\t\t\t\t];\n\t\t\t\tlet token = this.read();\n\t\t\t\tlet result = '';\n\t\t\t\twhile(true){\n\t\t\t\t\t\tresult += `${(result.length > 0 ? '\\n' : '') + tokenStrings[token]} '${this.buf().join('')}'`;\n\t\t\t\t\t\tif (token === EOF_TOKEN || token === ERROR_TOKEN) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoken = this.read();\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_read() {\n\t\t\t\tthis._buf = [];\n\t\t\t\tif (this._eof()) {\n\t\t\t\t\t\treturn EOF_TOKEN;\n\t\t\t\t}\n\t\t\t\treturn this._mode === 'text' ? this._text() : this._tag();\n\t\t}\n\t\t_text() {\n\t\t\t\twhile(true){\n\t\t\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\t\t\tcase null:\n\t\t\t\t\t\t\t\t\t\treturn this._buf.length > 0 ? TEXT_TOKEN : EOF_TOKEN;\n\t\t\t\t\t\t\t\tcase '[':\n\t\t\t\t\t\t\t\t\t\tthis._mode = 'tag';\n\t\t\t\t\t\t\t\t\t\treturn this._buf.length > 0 ? TEXT_TOKEN : this._tag();\n\t\t\t\t\t\t\t\tcase '\\\\':\n\t\t\t\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\t\t\t\t\t\t\tcase '[':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._output('\\\\');\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_tag() {\n\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\tcase null:\n\t\t\t\t\t\t\t\tthis._error = 'unexpected end of input reading tag';\n\t\t\t\t\t\t\t\treturn ERROR_TOKEN;\n\t\t\t\t\t\tcase '[':\n\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\treturn OPEN_BRACKET_TOKEN;\n\t\t\t\t\t\tcase ']':\n\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\tthis._mode = 'text';\n\t\t\t\t\t\t\t\treturn CLOSE_BRACKET_TOKEN;\n\t\t\t\t\t\tcase '=':\n\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\treturn EQUALS_TOKEN;\n\t\t\t\t\t\tcase ' ':\n\t\t\t\t\t\tcase '\\t':\n\t\t\t\t\t\tcase '\\n':\n\t\t\t\t\t\tcase '\\r':\n\t\t\t\t\t\tcase '\\v':\n\t\t\t\t\t\tcase '\\f':\n\t\t\t\t\t\t\t\treturn this._whitespace();\n\t\t\t\t\t\tcase '\"':\n\t\t\t\t\t\t\t\treturn this._string();\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tif (!this._isIdentifierSymbol(this._cur)) {\n\t\t\t\t\t\t\t\t\t\tthis._error = 'unrecognized character';\n\t\t\t\t\t\t\t\t\t\treturn ERROR_TOKEN;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn this._identifier();\n\t\t\t\t}\n\t\t}\n\t\t_whitespace() {\n\t\t\t\tthis._store();\n\t\t\t\twhile(WHITESPACE_CHARS.indexOf(this._cur) !== -1){\n\t\t\t\t\t\tthis._store();\n\t\t\t\t}\n\t\t\t\treturn WHITESPACE_TOKEN;\n\t\t}\n\t\t_string() {\n\t\t\t\tthis._next();\n\t\t\t\twhile(true){\n\t\t\t\t\t\tswitch(this._cur){\n\t\t\t\t\t\t\t\tcase null:\n\t\t\t\t\t\t\t\t\t\tthis._error = 'unexpected end of input reading string';\n\t\t\t\t\t\t\t\t\t\treturn ERROR_TOKEN;\n\t\t\t\t\t\t\t\tcase '\"':\n\t\t\t\t\t\t\t\t\t\tthis._next();\n\t\t\t\t\t\t\t\t\t\treturn STRING_TOKEN;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._store();\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_identifier() {\n\t\t\t\tthis._store();\n\t\t\t\twhile(this._cur !== null && this._isIdentifierSymbol(this._cur)){\n\t\t\t\t\t\tthis._store();\n\t\t\t\t}\n\t\t\t\treturn IDENTIFIER_TOKEN;\n\t\t}\n\t\t_isIdentifierSymbol(s) {\n\t\t\t\treturn s.length === 1 && s.match(IDENTIFIER_REGEX) !== null;\n\t\t}\n\t\t_eof() {\n\t\t\t\treturn this._cur === null;\n\t\t}\n\t\t_next() {\n\t\t\t\tif (!this._eof()) {\n\t\t\t\t\t\tthis._index++;\n\t\t\t\t\t\tthis._cur = this._index < this._symbols.length ? this._symbols[this._index] : null;\n\t\t\t\t}\n\t\t\t\treturn this._cur;\n\t\t}\n\t\t_store() {\n\t\t\t\tthis._buf.push(this._cur);\n\t\t\t\treturn this._next();\n\t\t}\n\t\t_output(c) {\n\t\t\t\tthis._buf.push(c);\n\t\t}\n}\nclass Parser {\n\t\tconstructor(symbols){\n\t\t\t\tthis._scanner = new Scanner(symbols);\n\t\t\t\tthis._error = null;\n\t\t}\n\t\tparse(symbols, tags) {\n\t\t\t\twhile(true){\n\t\t\t\t\t\tconst token = this._scanner.read();\n\t\t\t\t\t\tswitch(token){\n\t\t\t\t\t\t\t\tcase EOF_TOKEN:\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\tcase ERROR_TOKEN:\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\tcase TEXT_TOKEN:\n\t\t\t\t\t\t\t\t\t\tArray.prototype.push.apply(symbols, this._scanner.buf());\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase OPEN_BRACKET_TOKEN:\n\t\t\t\t\t\t\t\t\t\tif (!this._parseTag(symbols, tags)) {\n\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\terror() {\n\t\t\t\treturn `Error evaluating markup at #${this._scanner.last().toString()} (${this._scanner.error() || this._error})`;\n\t\t}\n\t\t_parseTag(symbols, tags) {\n\t\t\t\tlet token = this._scanner.read();\n\t\t\t\tif (token !== IDENTIFIER_TOKEN) {\n\t\t\t\t\t\tthis._error = 'expected identifier';\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst name = this._scanner.buf().join('');\n\t\t\t\tif (name[0] === '/') {\n\t\t\t\t\t\tfor(let index = tags.length - 1; index >= 0; --index){\n\t\t\t\t\t\t\t\tif (name === `/${tags[index].name}` && tags[index].end === null) {\n\t\t\t\t\t\t\t\t\t\ttags[index].end = symbols.length;\n\t\t\t\t\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\t\t\t\t\tif (token !== CLOSE_BRACKET_TOKEN) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._error = 'expected close bracket';\n\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._error = 'failed to find matching tag';\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst tag = {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tvalue: null,\n\t\t\t\t\t\tattributes: {},\n\t\t\t\t\t\tstart: symbols.length,\n\t\t\t\t\t\tend: null\n\t\t\t\t};\n\t\t\t\ttoken = this._scanner.read();\n\t\t\t\tif (token === EQUALS_TOKEN) {\n\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\tif (token !== STRING_TOKEN) {\n\t\t\t\t\t\t\t\tthis._error = 'expected string';\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttag.value = this._scanner.buf().join('');\n\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t}\n\t\t\t\twhile(true){\n\t\t\t\t\t\tswitch(token){\n\t\t\t\t\t\t\t\tcase CLOSE_BRACKET_TOKEN:\n\t\t\t\t\t\t\t\t\t\ttags.push(tag);\n\t\t\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t\tcase IDENTIFIER_TOKEN:\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tconst identifier = this._scanner.buf().join('');\n\t\t\t\t\t\t\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\t\t\t\t\t\t\tif (token !== EQUALS_TOKEN) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = 'expected equals';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t\t\t\t\t\t\t\t\tif (token !== STRING_TOKEN) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._error = 'expected string';\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst value = this._scanner.buf().join('');\n\t\t\t\t\t\t\t\t\t\t\t\ttag.attributes[identifier] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._error = 'expected close bracket or identifier';\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttoken = this._scanner.read();\n\t\t\t\t}\n\t\t}\n}\nfunction merge(target, source) {\n\t\tfor(const key in source){\n\t\t\t\tif (!source.hasOwnProperty(key)) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tconst value = source[key];\n\t\t\t\tif (value instanceof Object) {\n\t\t\t\t\t\tif (!target.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\ttarget[key] = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmerge(target[key], source[key]);\n\t\t\t\t} else {\n\t\t\t\t\t\ttarget[key] = value;\n\t\t\t\t}\n\t\t}\n}\nfunction combineTags(tags) {\n\t\tif (tags.length === 0) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst result = {};\n\t\tfor(let index = 0; index < tags.length; ++index){\n\t\t\t\tconst tag = tags[index];\n\t\t\t\tconst tmp = {};\n\t\t\t\ttmp[tag.name] = {\n\t\t\t\t\t\tvalue: tag.value,\n\t\t\t\t\t\tattributes: tag.attributes\n\t\t\t\t};\n\t\t\t\tmerge(result, tmp);\n\t\t}\n\t\treturn result;\n}\nfunction resolveMarkupTags(tags, numSymbols) {\n\t\tif (tags.length === 0) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst edges = {};\n\t\tfor(let index = 0; index < tags.length; ++index){\n\t\t\t\tconst tag = tags[index];\n\t\t\t\tif (!edges.hasOwnProperty(tag.start)) {\n\t\t\t\t\t\tedges[tag.start] = {\n\t\t\t\t\t\t\t\topen: [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tclose: null\n\t\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\t\tif (edges[tag.start].open === null) {\n\t\t\t\t\t\t\t\tedges[tag.start].open = [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tedges[tag.start].open.push(tag);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!edges.hasOwnProperty(tag.end)) {\n\t\t\t\t\t\tedges[tag.end] = {\n\t\t\t\t\t\t\t\topen: null,\n\t\t\t\t\t\t\t\tclose: [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\t\tif (edges[tag.end].close === null) {\n\t\t\t\t\t\t\t\tedges[tag.end].close = [\n\t\t\t\t\t\t\t\t\t\ttag\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tedges[tag.end].close.push(tag);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tlet tagStack = [];\n\t\tfunction removeTags(tags) {\n\t\t\t\ttagStack = tagStack.filter((tag)=>{\n\t\t\t\t\t\treturn tags.find((t)=>{\n\t\t\t\t\t\t\t\treturn t === tag;\n\t\t\t\t\t\t}) === undefined;\n\t\t\t\t});\n\t\t}\n\t\tfunction addTags(tags) {\n\t\t\t\tfor(let index = 0; index < tags.length; ++index){\n\t\t\t\t\t\ttagStack.push(tags[index]);\n\t\t\t\t}\n\t\t}\n\t\tconst edgeKeys = Object.keys(edges).sort((a, b)=>{\n\t\t\t\treturn a - b;\n\t\t});\n\t\tconst resolvedTags = [];\n\t\tfor(let index = 0; index < edgeKeys.length; ++index){\n\t\t\t\tconst edge = edges[edgeKeys[index]];\n\t\t\t\tif (edge.close !== null) {\n\t\t\t\t\t\tremoveTags(edge.close);\n\t\t\t\t}\n\t\t\t\tif (edge.open !== null) {\n\t\t\t\t\t\taddTags(edge.open);\n\t\t\t\t}\n\t\t\t\tresolvedTags.push({\n\t\t\t\t\t\tstart: edgeKeys[index],\n\t\t\t\t\t\ttags: combineTags(tagStack)\n\t\t\t\t});\n\t\t}\n\t\tconst result = [];\n\t\tlet prevTag = null;\n\t\tfor(let index = 0; index < resolvedTags.length; ++index){\n\t\t\t\tconst resolvedTag = resolvedTags[index];\n\t\t\t\twhile(result.length < resolvedTag.start){\n\t\t\t\t\t\tresult.push(prevTag ? prevTag.tags : null);\n\t\t\t\t}\n\t\t\t\tprevTag = resolvedTag;\n\t\t}\n\t\twhile(result.length < numSymbols){\n\t\t\t\tresult.push(null);\n\t\t}\n\t\treturn result;\n}\nfunction evaluateMarkup(symbols) {\n\t\tconst parser = new Parser(symbols);\n\t\tconst stripped_symbols = [];\n\t\tconst tags = [];\n\t\tif (!parser.parse(stripped_symbols, tags)) {\n\t\t\t\tconsole.warn(parser.error());\n\t\t\t\treturn {\n\t\t\t\t\t\tsymbols: symbols,\n\t\t\t\t\t\ttags: null\n\t\t\t\t};\n\t\t}\n\t\tconst invalidTag = tags.find((t)=>{\n\t\t\t\treturn t.end === null;\n\t\t});\n\t\tif (invalidTag) {\n\t\t\t\tconsole.warn(`Markup error: found unclosed tag='${invalidTag.name}'`);\n\t\t\t\treturn {\n\t\t\t\t\t\tsymbols: symbols,\n\t\t\t\t\t\ttags: null\n\t\t\t\t};\n\t\t}\n\t\tconst resolved_tags = resolveMarkupTags(tags, stripped_symbols.length);\n\t\treturn {\n\t\t\t\tsymbols: stripped_symbols,\n\t\t\t\ttags: resolved_tags\n\t\t};\n}\nclass Markup {\n\t\tstatic evaluate(symbols) {\n\t\t\t\treturn evaluateMarkup(symbols);\n\t\t}\n}\n\nclass MeshInfo {\n\t\tconstructor(){\n\t\t\t\tthis.count = 0;\n\t\t\t\tthis.quad = 0;\n\t\t\t\tthis.lines = {};\n\t\t\t\tthis.positions = [];\n\t\t\t\tthis.normals = [];\n\t\t\t\tthis.uvs = [];\n\t\t\t\tthis.colors = [];\n\t\t\t\tthis.indices = [];\n\t\t\t\tthis.outlines = [];\n\t\t\t\tthis.shadows = [];\n\t\t\t\tthis.meshInstance = null;\n\t\t}\n}\nfunction createTextMesh(device, meshInfo) {\n\t\tconst mesh = new Mesh(device);\n\t\tmesh.setPositions(meshInfo.positions);\n\t\tmesh.setNormals(meshInfo.normals);\n\t\tmesh.setColors32(meshInfo.colors);\n\t\tmesh.setUvs(0, meshInfo.uvs);\n\t\tmesh.setIndices(meshInfo.indices);\n\t\tmesh.setVertexStream(SEMANTIC_ATTR8, meshInfo.outlines, 3, undefined, TYPE_FLOAT32, false);\n\t\tmesh.setVertexStream(SEMANTIC_ATTR9, meshInfo.shadows, 3, undefined, TYPE_FLOAT32, false);\n\t\tmesh.update();\n\t\treturn mesh;\n}\nconst LINE_BREAK_CHAR = /^[\\r\\n]$/;\nconst WHITESPACE_CHAR = /^[ \\t]$/;\nconst WORD_BOUNDARY_CHAR = /^[ \\t\\-]|\\u200b$/;\nconst ALPHANUMERIC_CHAR = /^[a-z0-9]$/i;\nconst CJK_CHAR = /^[\\u1100-\\u11ff]|[\\u3000-\\u9fff\\ua960-\\ua97f]|[\\uac00-\\ud7ff]$/;\nconst NO_LINE_BREAK_CJK_CHAR = /^[〕〉》」』】〙〗〟ヽヾーァィゥェォッャュョヮヵヶぁぃぅぇぉっゃゅょゎゕゖㇰㇱㇲㇳㇴㇵㇶㇷㇸㇹㇺㇻㇼㇽㇾㇿ々〻]$/;\nconst CONTROL_CHARS = [\n\t\t'\\u200B',\n\t\t'\\u061C',\n\t\t'\\u200E',\n\t\t'\\u200F',\n\t\t'\\u202A',\n\t\t'\\u202B',\n\t\t'\\u202C',\n\t\t'\\u202D',\n\t\t'\\u202E',\n\t\t'\\u2066',\n\t\t'\\u2067',\n\t\t'\\u2068',\n\t\t'\\u2069'\n];\nconst CONTROL_GLYPH_DATA = {\n\t\twidth: 0,\n\t\theight: 0,\n\t\txadvance: 0,\n\t\txoffset: 0,\n\t\tyoffset: 0\n};\nconst colorTmp = new Color();\nconst vec2Tmp = new Vec2();\nconst _tempColor$1 = new Color();\nclass TextElement {\n\t\tconstructor(element){\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._system = element.system;\n\t\t\t\tthis._entity = element.entity;\n\t\t\t\tthis._text = '';\n\t\t\t\tthis._symbols = [];\n\t\t\t\tthis._colorPalette = [];\n\t\t\t\tthis._outlinePalette = [];\n\t\t\t\tthis._shadowPalette = [];\n\t\t\t\tthis._symbolColors = null;\n\t\t\t\tthis._symbolOutlineParams = null;\n\t\t\t\tthis._symbolShadowParams = null;\n\t\t\t\tthis._i18nKey = null;\n\t\t\t\tthis._fontAsset = new LocalizedAsset(this._system.app);\n\t\t\t\tthis._fontAsset.disableLocalization = true;\n\t\t\t\tthis._fontAsset.on('load', this._onFontLoad, this);\n\t\t\t\tthis._fontAsset.on('change', this._onFontChange, this);\n\t\t\t\tthis._fontAsset.on('remove', this._onFontRemove, this);\n\t\t\t\tthis._font = null;\n\t\t\t\tthis._color = new Color(1, 1, 1, 1);\n\t\t\t\tthis._colorUniform = new Float32Array(3);\n\t\t\t\tthis._spacing = 1;\n\t\t\t\tthis._fontSize = 32;\n\t\t\t\tthis._fontMinY = 0;\n\t\t\t\tthis._fontMaxY = 0;\n\t\t\t\tthis._originalFontSize = 32;\n\t\t\t\tthis._maxFontSize = 32;\n\t\t\t\tthis._minFontSize = 8;\n\t\t\t\tthis._autoFitWidth = false;\n\t\t\t\tthis._autoFitHeight = false;\n\t\t\t\tthis._maxLines = -1;\n\t\t\t\tthis._lineHeight = 32;\n\t\t\t\tthis._scaledLineHeight = 32;\n\t\t\t\tthis._wrapLines = false;\n\t\t\t\tthis._drawOrder = 0;\n\t\t\t\tthis._alignment = new Vec2(0.5, 0.5);\n\t\t\t\tthis._autoWidth = true;\n\t\t\t\tthis._autoHeight = true;\n\t\t\t\tthis.width = 0;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis._node = new GraphNode();\n\t\t\t\tthis._model = new Model();\n\t\t\t\tthis._model.graph = this._node;\n\t\t\t\tthis._entity.addChild(this._node);\n\t\t\t\tthis._meshInfo = [];\n\t\t\t\tthis._material = null;\n\t\t\t\tthis._aabbDirty = true;\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis._noResize = false;\n\t\t\t\tthis._currentMaterialType = null;\n\t\t\t\tthis._maskedMaterialSrc = null;\n\t\t\t\tthis._rtlReorder = false;\n\t\t\t\tthis._unicodeConverter = false;\n\t\t\t\tthis._rtl = false;\n\t\t\t\tthis._outlineColor = new Color(0, 0, 0, 1);\n\t\t\t\tthis._outlineColorUniform = new Float32Array(4);\n\t\t\t\tthis._outlineThicknessScale = 0.2;\n\t\t\t\tthis._outlineThickness = 0.0;\n\t\t\t\tthis._shadowColor = new Color(0, 0, 0, 1);\n\t\t\t\tthis._shadowColorUniform = new Float32Array(4);\n\t\t\t\tthis._shadowOffsetScale = 0.005;\n\t\t\t\tthis._shadowOffset = new Vec2(0, 0);\n\t\t\t\tthis._shadowOffsetUniform = new Float32Array(2);\n\t\t\t\tthis._enableMarkup = false;\n\t\t\t\tthis._onScreenChange(this._element.screen);\n\t\t\t\telement.on('resize', this._onParentResize, this);\n\t\t\t\telement.on('set:screen', this._onScreenChange, this);\n\t\t\t\telement.on('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\telement.on('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\telement.on('set:pivot', this._onPivotChange, this);\n\t\t\t\tthis._system.app.i18n.on(I18n.EVENT_CHANGE, this._onLocaleSet, this);\n\t\t\t\tthis._system.app.i18n.on('data:add', this._onLocalizationData, this);\n\t\t\t\tthis._system.app.i18n.on('data:remove', this._onLocalizationData, this);\n\t\t\t\tthis._rangeStart = 0;\n\t\t\t\tthis._rangeEnd = 0;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._setMaterial(null);\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._element.removeModelFromLayers(this._model);\n\t\t\t\t\t\tthis._model.destroy();\n\t\t\t\t\t\tthis._model = null;\n\t\t\t\t}\n\t\t\t\tthis._fontAsset.destroy();\n\t\t\t\tthis.font = null;\n\t\t\t\tthis._element.off('resize', this._onParentResize, this);\n\t\t\t\tthis._element.off('set:screen', this._onScreenChange, this);\n\t\t\t\tthis._element.off('screen:set:screenspace', this._onScreenSpaceChange, this);\n\t\t\t\tthis._element.off('set:draworder', this._onDrawOrderChange, this);\n\t\t\t\tthis._element.off('set:pivot', this._onPivotChange, this);\n\t\t\t\tthis._system.app.i18n.off(I18n.EVENT_CHANGE, this._onLocaleSet, this);\n\t\t\t\tthis._system.app.i18n.off('data:add', this._onLocalizationData, this);\n\t\t\t\tthis._system.app.i18n.off('data:remove', this._onLocalizationData, this);\n\t\t}\n\t\t_onParentResize(width, height) {\n\t\t\t\tif (this._noResize) return;\n\t\t\t\tif (this._font) this._updateText();\n\t\t}\n\t\t_onScreenChange(screen) {\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tthis._updateMaterial(screen.screen.screenSpace);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._updateMaterial(false);\n\t\t\t\t}\n\t\t}\n\t\t_onScreenSpaceChange(value) {\n\t\t\t\tthis._updateMaterial(value);\n\t\t}\n\t\t_onDrawOrderChange(order) {\n\t\t\t\tthis._drawOrder = order;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tthis._model.meshInstances[i].drawOrder = order;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onPivotChange(pivot) {\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\t_onLocaleSet(locale) {\n\t\t\t\tif (!this._i18nKey) return;\n\t\t\t\tif (this.fontAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this.fontAsset);\n\t\t\t\t\t\tif (!asset || !asset.resource || asset.resource !== this._font) {\n\t\t\t\t\t\t\t\tthis.font = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._resetLocalizedText();\n\t\t}\n\t\t_onLocalizationData(locale, messages) {\n\t\t\t\tif (this._i18nKey && messages[this._i18nKey]) {\n\t\t\t\t\t\tthis._resetLocalizedText();\n\t\t\t\t}\n\t\t}\n\t\t_resetLocalizedText() {\n\t\t\t\tthis._setText(this._system.app.i18n.getText(this._i18nKey));\n\t\t}\n\t\t_setText(text) {\n\t\t\t\tif (this.unicodeConverter) {\n\t\t\t\t\t\tconst unicodeConverterFunc = this._system.getUnicodeConverter();\n\t\t\t\t\t\tif (unicodeConverterFunc) {\n\t\t\t\t\t\t\t\ttext = unicodeConverterFunc(text);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn('Element created with unicodeConverter option but no unicodeConverter function registered');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._text !== text) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText(text);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._text = text;\n\t\t\t\t}\n\t\t}\n\t\t_updateText(text) {\n\t\t\t\tlet tags;\n\t\t\t\tif (text === undefined) text = this._text;\n\t\t\t\tthis._symbols = string.getSymbols(text.normalize ? text.normalize('NFC') : text);\n\t\t\t\tif (this._symbols.length === 0) {\n\t\t\t\t\t\tthis._symbols = [\n\t\t\t\t\t\t\t\t' '\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (this._enableMarkup) {\n\t\t\t\t\t\tconst results = Markup.evaluate(this._symbols);\n\t\t\t\t\t\tthis._symbols = results.symbols;\n\t\t\t\t\t\ttags = results.tags || [];\n\t\t\t\t}\n\t\t\t\tif (this._rtlReorder) {\n\t\t\t\t\t\tconst rtlReorderFunc = this._system.app.systems.element.getRtlReorder();\n\t\t\t\t\t\tif (rtlReorderFunc) {\n\t\t\t\t\t\t\t\tconst results = rtlReorderFunc(this._symbols);\n\t\t\t\t\t\t\t\tthis._rtl = results.rtl;\n\t\t\t\t\t\t\t\tthis._symbols = results.mapping.map(function(v) {\n\t\t\t\t\t\t\t\t\t\treturn this._symbols[v];\n\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\tif (tags) {\n\t\t\t\t\t\t\t\t\t\ttags = results.mapping.map((v)=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn tags[v];\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.warn('Element created with rtlReorder option but no rtlReorder function registered');\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._rtl = false;\n\t\t\t\t}\n\t\t\t\tconst getColorThicknessHash = (color, thickness)=>{\n\t\t\t\t\t\treturn `${color.toString(true).toLowerCase()}:${thickness.toFixed(2)}`;\n\t\t\t\t};\n\t\t\t\tconst getColorOffsetHash = (color, offset)=>{\n\t\t\t\t\t\treturn `${color.toString(true).toLowerCase()}:${offset.x.toFixed(2)}:${offset.y.toFixed(2)}`;\n\t\t\t\t};\n\t\t\t\tif (tags) {\n\t\t\t\t\t\tconst paletteMap = {};\n\t\t\t\t\t\tconst outlinePaletteMap = {};\n\t\t\t\t\t\tconst shadowPaletteMap = {};\n\t\t\t\t\t\tthis._colorPalette = [\n\t\t\t\t\t\t\t\tMath.round(this._color.r * 255),\n\t\t\t\t\t\t\t\tMath.round(this._color.g * 255),\n\t\t\t\t\t\t\t\tMath.round(this._color.b * 255)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis._outlinePalette = [\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.r * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.g * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.b * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineColor.a * 255),\n\t\t\t\t\t\t\t\tMath.round(this._outlineThickness * 255)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis._shadowPalette = [\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.r * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.g * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.b * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowColor.a * 255),\n\t\t\t\t\t\t\t\tMath.round(this._shadowOffset.x * 127),\n\t\t\t\t\t\t\t\tMath.round(this._shadowOffset.y * 127)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis._symbolColors = [];\n\t\t\t\t\t\tthis._symbolOutlineParams = [];\n\t\t\t\t\t\tthis._symbolShadowParams = [];\n\t\t\t\t\t\tpaletteMap[this._color.toString(false).toLowerCase()] = 0;\n\t\t\t\t\t\toutlinePaletteMap[getColorThicknessHash(this._outlineColor, this._outlineThickness)] = 0;\n\t\t\t\t\t\tshadowPaletteMap[getColorOffsetHash(this._shadowColor, this._shadowOffset)] = 0;\n\t\t\t\t\t\tfor(let i = 0, len = this._symbols.length; i < len; ++i){\n\t\t\t\t\t\t\t\tconst tag = tags[i];\n\t\t\t\t\t\t\t\tlet color = 0;\n\t\t\t\t\t\t\t\tif (tag && tag.color && tag.color.value) {\n\t\t\t\t\t\t\t\t\t\tconst c = tag.color.value;\n\t\t\t\t\t\t\t\t\t\tif (c.length === 7 && c[0] === '#') {\n\t\t\t\t\t\t\t\t\t\t\t\tconst hex = c.substring(1).toLowerCase();\n\t\t\t\t\t\t\t\t\t\t\t\tif (paletteMap.hasOwnProperty(hex)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor = paletteMap[hex];\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (/^[0-9a-f]{6}$/.test(hex)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcolor = this._colorPalette.length / 3;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tpaletteMap[hex] = color;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._colorPalette.push(parseInt(hex.substring(0, 2), 16));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._colorPalette.push(parseInt(hex.substring(2, 4), 16));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._colorPalette.push(parseInt(hex.substring(4, 6), 16));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._symbolColors.push(color);\n\t\t\t\t\t\t\t\tlet outline = 0;\n\t\t\t\t\t\t\t\tif (tag && tag.outline && (tag.outline.attributes.color || tag.outline.attributes.thickness)) {\n\t\t\t\t\t\t\t\t\t\tlet color = tag.outline.attributes.color ? colorTmp.fromString(tag.outline.attributes.color) : this._outlineColor;\n\t\t\t\t\t\t\t\t\t\tlet thickness = Number(tag.outline.attributes.thickness);\n\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(color.r) || Number.isNaN(color.g) || Number.isNaN(color.b) || Number.isNaN(color.a)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor = this._outlineColor;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(thickness)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthickness = this._outlineThickness;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst outlineHash = getColorThicknessHash(color, thickness);\n\t\t\t\t\t\t\t\t\t\tif (outlinePaletteMap.hasOwnProperty(outlineHash)) {\n\t\t\t\t\t\t\t\t\t\t\t\toutline = outlinePaletteMap[outlineHash];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\toutline = this._outlinePalette.length / 5;\n\t\t\t\t\t\t\t\t\t\t\t\toutlinePaletteMap[outlineHash] = outline;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._outlinePalette.push(Math.round(color.r * 255), Math.round(color.g * 255), Math.round(color.b * 255), Math.round(color.a * 255), Math.round(thickness * 255));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._symbolOutlineParams.push(outline);\n\t\t\t\t\t\t\t\tlet shadow = 0;\n\t\t\t\t\t\t\t\tif (tag && tag.shadow && (tag.shadow.attributes.color || tag.shadow.attributes.offset || tag.shadow.attributes.offsetX || tag.shadow.attributes.offsetY)) {\n\t\t\t\t\t\t\t\t\t\tlet color = tag.shadow.attributes.color ? colorTmp.fromString(tag.shadow.attributes.color) : this._shadowColor;\n\t\t\t\t\t\t\t\t\t\tconst off = Number(tag.shadow.attributes.offset);\n\t\t\t\t\t\t\t\t\t\tconst offX = Number(tag.shadow.attributes.offsetX);\n\t\t\t\t\t\t\t\t\t\tconst offY = Number(tag.shadow.attributes.offsetY);\n\t\t\t\t\t\t\t\t\t\tif (Number.isNaN(color.r) || Number.isNaN(color.g) || Number.isNaN(color.b) || Number.isNaN(color.a)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcolor = this._shadowColor;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst offset = vec2Tmp.set(!Number.isNaN(offX) ? offX : !Number.isNaN(off) ? off : this._shadowOffset.x, !Number.isNaN(offY) ? offY : !Number.isNaN(off) ? off : this._shadowOffset.y);\n\t\t\t\t\t\t\t\t\t\tconst shadowHash = getColorOffsetHash(color, offset);\n\t\t\t\t\t\t\t\t\t\tif (shadowPaletteMap.hasOwnProperty(shadowHash)) {\n\t\t\t\t\t\t\t\t\t\t\t\tshadow = shadowPaletteMap[shadowHash];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tshadow = this._shadowPalette.length / 6;\n\t\t\t\t\t\t\t\t\t\t\t\tshadowPaletteMap[shadowHash] = shadow;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._shadowPalette.push(Math.round(color.r * 255), Math.round(color.g * 255), Math.round(color.b * 255), Math.round(color.a * 255), Math.round(offset.x * 127), Math.round(offset.y * 127));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._symbolShadowParams.push(shadow);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._colorPalette = [];\n\t\t\t\t\t\tthis._symbolColors = null;\n\t\t\t\t\t\tthis._symbolOutlineParams = null;\n\t\t\t\t\t\tthis._symbolShadowParams = null;\n\t\t\t\t}\n\t\t\t\tthis._updateMaterialEmissive();\n\t\t\t\tthis._updateMaterialOutline();\n\t\t\t\tthis._updateMaterialShadow();\n\t\t\t\tconst charactersPerTexture = this._calculateCharsPerTexture();\n\t\t\t\tlet removedModel = false;\n\t\t\t\tconst element = this._element;\n\t\t\t\tconst screenSpace = element._isScreenSpace();\n\t\t\t\tconst screenCulled = element._isScreenCulled();\n\t\t\t\tconst visibleFn = function(camera) {\n\t\t\t\t\t\treturn element.isVisibleForCamera(camera);\n\t\t\t\t};\n\t\t\t\tfor(let i = 0, len = this._meshInfo.length; i < len; i++){\n\t\t\t\t\t\tconst l = charactersPerTexture[i] || 0;\n\t\t\t\t\t\tconst meshInfo = this._meshInfo[i];\n\t\t\t\t\t\tif (meshInfo.count !== l) {\n\t\t\t\t\t\t\t\tif (!removedModel) {\n\t\t\t\t\t\t\t\t\t\telement.removeModelFromLayers(this._model);\n\t\t\t\t\t\t\t\t\t\tremovedModel = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.count = l;\n\t\t\t\t\t\t\t\tmeshInfo.positions.length = meshInfo.normals.length = l * 3 * 4;\n\t\t\t\t\t\t\t\tmeshInfo.indices.length = l * 3 * 2;\n\t\t\t\t\t\t\t\tmeshInfo.uvs.length = l * 2 * 4;\n\t\t\t\t\t\t\t\tmeshInfo.colors.length = l * 4 * 4;\n\t\t\t\t\t\t\t\tmeshInfo.outlines.length = l * 4 * 3;\n\t\t\t\t\t\t\t\tmeshInfo.shadows.length = l * 4 * 3;\n\t\t\t\t\t\t\t\tif (meshInfo.meshInstance) {\n\t\t\t\t\t\t\t\t\t\tthis._removeMeshInstance(meshInfo.meshInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (l === 0) {\n\t\t\t\t\t\t\t\t\t\tmeshInfo.meshInstance = null;\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let v = 0; v < l; v++){\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 0] = v * 4;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 1] = v * 4 + 1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 2] = v * 4 + 3;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 3] = v * 4 + 2;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 4] = v * 4 + 3;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.indices[v * 3 * 2 + 5] = v * 4 + 1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 0] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 1] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 2] = -1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 3] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 4] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 5] = -1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 6] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 7] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 8] = -1;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 9] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 10] = 0;\n\t\t\t\t\t\t\t\t\t\tmeshInfo.normals[v * 4 * 3 + 11] = -1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mesh = createTextMesh(this._system.app.graphicsDevice, meshInfo);\n\t\t\t\t\t\t\t\tconst mi = new MeshInstance(mesh, this._material, this._node);\n\t\t\t\t\t\t\t\tmi.name = `Text Element: ${this._entity.name}`;\n\t\t\t\t\t\t\t\tmi.castShadow = false;\n\t\t\t\t\t\t\t\tmi.receiveShadow = false;\n\t\t\t\t\t\t\t\tmi.cull = !screenSpace;\n\t\t\t\t\t\t\t\tmi.screenSpace = screenSpace;\n\t\t\t\t\t\t\t\tmi.drawOrder = this._drawOrder;\n\t\t\t\t\t\t\t\tif (screenCulled) {\n\t\t\t\t\t\t\t\t\t\tmi.cull = true;\n\t\t\t\t\t\t\t\t\t\tmi.isVisibleFunc = visibleFn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._setTextureParams(mi, this._font.textures[i]);\n\t\t\t\t\t\t\t\tmi.setParameter('material_emissive', this._colorUniform);\n\t\t\t\t\t\t\t\tmi.setParameter('material_opacity', this._color.a);\n\t\t\t\t\t\t\t\tmi.setParameter('font_sdfIntensity', this._font.intensity);\n\t\t\t\t\t\t\t\tmi.setParameter('font_pxrange', this._getPxRange(this._font));\n\t\t\t\t\t\t\t\tmi.setParameter('font_textureWidth', this._font.data.info.maps[i].width);\n\t\t\t\t\t\t\t\tmi.setParameter('outline_color', this._outlineColorUniform);\n\t\t\t\t\t\t\t\tmi.setParameter('outline_thickness', this._outlineThicknessScale * this._outlineThickness);\n\t\t\t\t\t\t\t\tmi.setParameter('shadow_color', this._shadowColorUniform);\n\t\t\t\t\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[0] = 0;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[1] = 0;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst ratio = -this._font.data.info.maps[i].width / this._font.data.info.maps[i].height;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[0] = this._shadowOffsetScale * this._shadowOffset.x;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[1] = ratio * this._shadowOffsetScale * this._shadowOffset.y;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmi.setParameter('shadow_offset', this._shadowOffsetUniform);\n\t\t\t\t\t\t\t\tmeshInfo.meshInstance = mi;\n\t\t\t\t\t\t\t\tthis._model.meshInstances.push(mi);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element.maskedBy) {\n\t\t\t\t\t\tthis._element._setMaskedBy(this._element.maskedBy);\n\t\t\t\t}\n\t\t\t\tif (removedModel && this._element.enabled && this._entity.enabled) {\n\t\t\t\t\t\tthis._element.addModelToLayers(this._model);\n\t\t\t\t}\n\t\t\t\tthis._updateMeshes();\n\t\t\t\tthis._rangeStart = 0;\n\t\t\t\tthis._rangeEnd = this._symbols.length;\n\t\t\t\tthis._updateRenderRange();\n\t\t}\n\t\t_removeMeshInstance(meshInstance) {\n\t\t\t\tmeshInstance.destroy();\n\t\t\t\tconst idx = this._model.meshInstances.indexOf(meshInstance);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis._model.meshInstances.splice(idx, 1);\n\t\t\t\t}\n\t\t}\n\t\t_setMaterial(material) {\n\t\t\t\tthis._material = material;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.material = material;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterial(screenSpace) {\n\t\t\t\tconst element = this._element;\n\t\t\t\tconst screenCulled = element._isScreenCulled();\n\t\t\t\tconst visibleFn = function(camera) {\n\t\t\t\t\t\treturn element.isVisibleForCamera(camera);\n\t\t\t\t};\n\t\t\t\tconst msdf = this._font && this._font.type === FONT_MSDF;\n\t\t\t\tthis._material = this._system.getTextElementMaterial(screenSpace, msdf, this._enableMarkup);\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.cull = !screenSpace;\n\t\t\t\t\t\t\t\tmi.material = this._material;\n\t\t\t\t\t\t\t\tmi.screenSpace = screenSpace;\n\t\t\t\t\t\t\t\tif (screenCulled) {\n\t\t\t\t\t\t\t\t\t\tmi.cull = true;\n\t\t\t\t\t\t\t\t\t\tmi.isVisibleFunc = visibleFn;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmi.isVisibleFunc = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterialEmissive() {\n\t\t\t\tif (this._symbolColors) {\n\t\t\t\t\t\tthis._colorUniform[0] = 1;\n\t\t\t\t\t\tthis._colorUniform[1] = 1;\n\t\t\t\t\t\tthis._colorUniform[2] = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._color);\n\t\t\t\t\t\tthis._colorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._colorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._colorUniform[2] = _tempColor$1.b;\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterialOutline() {\n\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\tthis._outlineColorUniform[0] = 0;\n\t\t\t\t\t\tthis._outlineColorUniform[1] = 0;\n\t\t\t\t\t\tthis._outlineColorUniform[2] = 0;\n\t\t\t\t\t\tthis._outlineColorUniform[3] = 1;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._outlineColor);\n\t\t\t\t\t\tthis._outlineColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._outlineColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._outlineColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._outlineColorUniform[3] = _tempColor$1.a;\n\t\t\t\t}\n\t\t}\n\t\t_updateMaterialShadow() {\n\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\tthis._shadowColorUniform[0] = 0;\n\t\t\t\t\t\tthis._shadowColorUniform[1] = 0;\n\t\t\t\t\t\tthis._shadowColorUniform[2] = 0;\n\t\t\t\t\t\tthis._shadowColorUniform[3] = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._shadowColor);\n\t\t\t\t\t\tthis._shadowColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._shadowColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._shadowColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._shadowColorUniform[3] = _tempColor$1.a;\n\t\t\t\t}\n\t\t}\n\t\t_isWordBoundary(char) {\n\t\t\t\treturn WORD_BOUNDARY_CHAR.test(char);\n\t\t}\n\t\t_isValidNextChar(nextchar) {\n\t\t\t\treturn nextchar !== null && !NO_LINE_BREAK_CJK_CHAR.test(nextchar);\n\t\t}\n\t\t_isNextCJKBoundary(char, nextchar) {\n\t\t\t\treturn CJK_CHAR.test(char) && (WORD_BOUNDARY_CHAR.test(nextchar) || ALPHANUMERIC_CHAR.test(nextchar));\n\t\t}\n\t\t_isNextCJKWholeWord(nextchar) {\n\t\t\t\treturn CJK_CHAR.test(nextchar);\n\t\t}\n\t\t_updateMeshes() {\n\t\t\t\tconst json = this._font.data;\n\t\t\t\tconst self = this;\n\t\t\t\tconst minFont = Math.min(this._minFontSize, this._maxFontSize);\n\t\t\t\tconst maxFont = this._maxFontSize;\n\t\t\t\tconst autoFit = this._shouldAutoFit();\n\t\t\t\tif (autoFit) {\n\t\t\t\t\t\tthis._fontSize = this._maxFontSize;\n\t\t\t\t}\n\t\t\t\tconst MAGIC = 32;\n\t\t\t\tconst l = this._symbols.length;\n\t\t\t\tlet _x = 0;\n\t\t\t\tlet _y = 0;\n\t\t\t\tlet _z = 0;\n\t\t\t\tlet _xMinusTrailingWhitespace = 0;\n\t\t\t\tlet lines = 1;\n\t\t\t\tlet wordStartX = 0;\n\t\t\t\tlet wordStartIndex = 0;\n\t\t\t\tlet lineStartIndex = 0;\n\t\t\t\tlet numWordsThisLine = 0;\n\t\t\t\tlet numCharsThisLine = 0;\n\t\t\t\tlet numBreaksThisLine = 0;\n\t\t\t\tconst splitHorizontalAnchors = Math.abs(this._element.anchor.x - this._element.anchor.z) >= 0.0001;\n\t\t\t\tlet maxLineWidth = this._element.calculatedWidth;\n\t\t\t\tif (this.autoWidth && !splitHorizontalAnchors || !this._wrapLines) {\n\t\t\t\t\t\tmaxLineWidth = Number.POSITIVE_INFINITY;\n\t\t\t\t}\n\t\t\t\tlet fontMinY = 0;\n\t\t\t\tlet fontMaxY = 0;\n\t\t\t\tlet char, data, quad, nextchar;\n\t\t\t\tfunction breakLine(symbols, lineBreakIndex, lineBreakX) {\n\t\t\t\t\t\tself._lineWidths.push(Math.abs(lineBreakX));\n\t\t\t\t\t\tconst sliceStart = lineStartIndex > lineBreakIndex ? lineBreakIndex + 1 : lineStartIndex;\n\t\t\t\t\t\tconst sliceEnd = lineStartIndex > lineBreakIndex ? lineStartIndex + 1 : lineBreakIndex;\n\t\t\t\t\t\tconst chars = symbols.slice(sliceStart, sliceEnd);\n\t\t\t\t\t\tif (numBreaksThisLine) {\n\t\t\t\t\t\t\t\tlet i = chars.length;\n\t\t\t\t\t\t\t\twhile(i-- && numBreaksThisLine > 0){\n\t\t\t\t\t\t\t\t\t\tif (LINE_BREAK_CHAR.test(chars[i])) {\n\t\t\t\t\t\t\t\t\t\t\t\tchars.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\t\t\tnumBreaksThisLine--;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tself._lineContents.push(chars.join(''));\n\t\t\t\t\t\t_x = 0;\n\t\t\t\t\t\t_y -= self._scaledLineHeight;\n\t\t\t\t\t\tlines++;\n\t\t\t\t\t\tnumWordsThisLine = 0;\n\t\t\t\t\t\tnumCharsThisLine = 0;\n\t\t\t\t\t\tnumBreaksThisLine = 0;\n\t\t\t\t\t\twordStartX = 0;\n\t\t\t\t\t\tlineStartIndex = lineBreakIndex;\n\t\t\t\t}\n\t\t\t\tlet retryUpdateMeshes = true;\n\t\t\t\twhile(retryUpdateMeshes){\n\t\t\t\t\t\tretryUpdateMeshes = false;\n\t\t\t\t\t\tif (autoFit) {\n\t\t\t\t\t\t\t\tthis._scaledLineHeight = this._lineHeight * this._fontSize / (this._maxFontSize || 0.0001);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._scaledLineHeight = this._lineHeight;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.width = 0;\n\t\t\t\t\t\tthis.height = 0;\n\t\t\t\t\t\tthis._lineWidths = [];\n\t\t\t\t\t\tthis._lineContents = [];\n\t\t\t\t\t\t_x = 0;\n\t\t\t\t\t\t_y = 0;\n\t\t\t\t\t\t_z = 0;\n\t\t\t\t\t\t_xMinusTrailingWhitespace = 0;\n\t\t\t\t\t\tlines = 1;\n\t\t\t\t\t\twordStartX = 0;\n\t\t\t\t\t\twordStartIndex = 0;\n\t\t\t\t\t\tlineStartIndex = 0;\n\t\t\t\t\t\tnumWordsThisLine = 0;\n\t\t\t\t\t\tnumCharsThisLine = 0;\n\t\t\t\t\t\tnumBreaksThisLine = 0;\n\t\t\t\t\t\tconst scale = this._fontSize / MAGIC;\n\t\t\t\t\t\tfontMinY = this._fontMinY * scale;\n\t\t\t\t\t\tfontMaxY = this._fontMaxY * scale;\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInfo.length; i++){\n\t\t\t\t\t\t\t\tthis._meshInfo[i].quad = 0;\n\t\t\t\t\t\t\t\tthis._meshInfo[i].lines = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet color_r = 255;\n\t\t\t\t\t\tlet color_g = 255;\n\t\t\t\t\t\tlet color_b = 255;\n\t\t\t\t\t\tlet outline_color_rg = 255 + 255 * 256;\n\t\t\t\t\t\tlet outline_color_ba = 255 + 255 * 256;\n\t\t\t\t\t\tlet outline_thickness = 0;\n\t\t\t\t\t\tlet shadow_color_rg = 255 + 255 * 256;\n\t\t\t\t\t\tlet shadow_color_ba = 255 + 255 * 256;\n\t\t\t\t\t\tlet shadow_offset_xy = 127 + 127 * 256;\n\t\t\t\t\t\tfor(let i = 0; i < l; i++){\n\t\t\t\t\t\t\t\tchar = this._symbols[i];\n\t\t\t\t\t\t\t\tnextchar = i + 1 >= l ? null : this._symbols[i + 1];\n\t\t\t\t\t\t\t\tconst isLineBreak = LINE_BREAK_CHAR.test(char);\n\t\t\t\t\t\t\t\tif (isLineBreak) {\n\t\t\t\t\t\t\t\t\t\tnumBreaksThisLine++;\n\t\t\t\t\t\t\t\t\t\tif (!this._wrapLines || this._maxLines < 0 || lines < this._maxLines) {\n\t\t\t\t\t\t\t\t\t\t\t\tbreakLine(this._symbols, i, _xMinusTrailingWhitespace);\n\t\t\t\t\t\t\t\t\t\t\t\twordStartIndex = i + 1;\n\t\t\t\t\t\t\t\t\t\t\t\tlineStartIndex = i + 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet x = 0;\n\t\t\t\t\t\t\t\tlet y = 0;\n\t\t\t\t\t\t\t\tlet advance = 0;\n\t\t\t\t\t\t\t\tlet quadsize = 1;\n\t\t\t\t\t\t\t\tlet dataScale, size;\n\t\t\t\t\t\t\t\tdata = json.chars[char];\n\t\t\t\t\t\t\t\tif (!data) {\n\t\t\t\t\t\t\t\t\t\tif (CONTROL_CHARS.indexOf(char) !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata = CONTROL_GLYPH_DATA;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (json.chars[' ']) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata = json.chars[' '];\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(const key in json.chars){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata = json.chars[key];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (data) {\n\t\t\t\t\t\t\t\t\t\tlet kerning = 0;\n\t\t\t\t\t\t\t\t\t\tif (numCharsThisLine > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst kernTable = this._font.data.kerning;\n\t\t\t\t\t\t\t\t\t\t\t\tif (kernTable) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst kernLeft = kernTable[string.getCodePoint(this._symbols[i - 1]) || 0];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (kernLeft) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tkerning = kernLeft[string.getCodePoint(this._symbols[i]) || 0] || 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tdataScale = data.scale || 1;\n\t\t\t\t\t\t\t\t\t\tsize = (data.width + data.height) / 2;\n\t\t\t\t\t\t\t\t\t\tquadsize = scale * size / dataScale;\n\t\t\t\t\t\t\t\t\t\tadvance = (data.xadvance + kerning) * scale;\n\t\t\t\t\t\t\t\t\t\tx = (data.xoffset - kerning) * scale;\n\t\t\t\t\t\t\t\t\t\ty = data.yoffset * scale;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.error(`Couldn't substitute missing character: '${char}'`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst isWhitespace = WHITESPACE_CHAR.test(char);\n\t\t\t\t\t\t\t\tconst meshInfoId = data && data.map || 0;\n\t\t\t\t\t\t\t\tconst ratio = -this._font.data.info.maps[meshInfoId].width / this._font.data.info.maps[meshInfoId].height;\n\t\t\t\t\t\t\t\tconst meshInfo = this._meshInfo[meshInfoId];\n\t\t\t\t\t\t\t\tconst candidateLineWidth = _x + this._spacing * advance;\n\t\t\t\t\t\t\t\tif (candidateLineWidth > maxLineWidth && numCharsThisLine > 0 && !isWhitespace) {\n\t\t\t\t\t\t\t\t\t\tif (this._maxLines < 0 || lines < this._maxLines) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (numWordsThisLine === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twordStartIndex = i;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreakLine(this._symbols, i, _xMinusTrailingWhitespace);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backtrack = Math.max(i - wordStartIndex, 0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this._meshInfo.length <= 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInfo.lines[lines - 1] -= backtrack;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInfo.quad -= backtrack;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backtrackStart = wordStartIndex;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backtrackEnd = i;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = backtrackStart; j < backtrackEnd; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backChar = this._symbols[j];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backCharData = json.chars[backChar];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst backMeshInfo = this._meshInfo[backCharData && backCharData.map || 0];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackMeshInfo.lines[lines - 1] -= 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbackMeshInfo.quad -= 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ti -= backtrack + 1;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreakLine(this._symbols, wordStartIndex, wordStartX);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tquad = meshInfo.quad;\n\t\t\t\t\t\t\t\tmeshInfo.lines[lines - 1] = quad;\n\t\t\t\t\t\t\t\tlet left = _x - x;\n\t\t\t\t\t\t\t\tlet right = left + quadsize;\n\t\t\t\t\t\t\t\tconst bottom = _y - y;\n\t\t\t\t\t\t\t\tconst top = bottom + quadsize;\n\t\t\t\t\t\t\t\tif (this._rtl) {\n\t\t\t\t\t\t\t\t\t\tconst shift = quadsize - x - this._spacing * advance - x;\n\t\t\t\t\t\t\t\t\t\tleft -= shift;\n\t\t\t\t\t\t\t\t\t\tright -= shift;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 0] = left;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 1] = bottom;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 2] = _z;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 3] = right;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 4] = bottom;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 5] = _z;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 6] = right;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 7] = top;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 8] = _z;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 9] = left;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 10] = top;\n\t\t\t\t\t\t\t\tmeshInfo.positions[quad * 4 * 3 + 11] = _z;\n\t\t\t\t\t\t\t\tthis.width = Math.max(this.width, candidateLineWidth);\n\t\t\t\t\t\t\t\tlet fontSize;\n\t\t\t\t\t\t\t\tif (this._shouldAutoFitWidth() && this.width > this._element.calculatedWidth) {\n\t\t\t\t\t\t\t\t\t\tfontSize = Math.floor(this._element.fontSize * this._element.calculatedWidth / (this.width || 0.0001));\n\t\t\t\t\t\t\t\t\t\tfontSize = math.clamp(fontSize, minFont, maxFont);\n\t\t\t\t\t\t\t\t\t\tif (fontSize !== this._element.fontSize) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._fontSize = fontSize;\n\t\t\t\t\t\t\t\t\t\t\t\tretryUpdateMeshes = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.height = Math.max(this.height, fontMaxY - (_y + fontMinY));\n\t\t\t\t\t\t\t\tif (this._shouldAutoFitHeight() && this.height > this._element.calculatedHeight) {\n\t\t\t\t\t\t\t\t\t\tfontSize = math.clamp(this._fontSize - 1, minFont, maxFont);\n\t\t\t\t\t\t\t\t\t\tif (fontSize !== this._element.fontSize) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._fontSize = fontSize;\n\t\t\t\t\t\t\t\t\t\t\t\tretryUpdateMeshes = true;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t_x += this._spacing * advance;\n\t\t\t\t\t\t\t\tif (!isWhitespace) {\n\t\t\t\t\t\t\t\t\t\t_xMinusTrailingWhitespace = _x;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._isWordBoundary(char) || this._isValidNextChar(nextchar) && (this._isNextCJKBoundary(char, nextchar) || this._isNextCJKWholeWord(nextchar))) {\n\t\t\t\t\t\t\t\t\t\tnumWordsThisLine++;\n\t\t\t\t\t\t\t\t\t\twordStartX = _xMinusTrailingWhitespace;\n\t\t\t\t\t\t\t\t\t\twordStartIndex = i + 1;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnumCharsThisLine++;\n\t\t\t\t\t\t\t\tconst uv = this._getUv(char);\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 0] = uv[0];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 1] = 1.0 - uv[1];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 2] = uv[2];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 3] = 1.0 - uv[1];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 4] = uv[2];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 5] = 1.0 - uv[3];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 6] = uv[0];\n\t\t\t\t\t\t\t\tmeshInfo.uvs[quad * 4 * 2 + 7] = 1.0 - uv[3];\n\t\t\t\t\t\t\t\tif (this._symbolColors) {\n\t\t\t\t\t\t\t\t\t\tconst colorIdx = this._symbolColors[i] * 3;\n\t\t\t\t\t\t\t\t\t\tcolor_r = this._colorPalette[colorIdx];\n\t\t\t\t\t\t\t\t\t\tcolor_g = this._colorPalette[colorIdx + 1];\n\t\t\t\t\t\t\t\t\t\tcolor_b = this._colorPalette[colorIdx + 2];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 0] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 1] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 2] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 3] = 255;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 4] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 5] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 6] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 7] = 255;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 8] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 9] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 10] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 11] = 255;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 12] = color_r;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 13] = color_g;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 14] = color_b;\n\t\t\t\t\t\t\t\tmeshInfo.colors[quad * 4 * 4 + 15] = 255;\n\t\t\t\t\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\t\t\t\t\tconst outlineIdx = this._symbolOutlineParams[i] * 5;\n\t\t\t\t\t\t\t\t\t\toutline_color_rg = this._outlinePalette[outlineIdx] + this._outlinePalette[outlineIdx + 1] * 256;\n\t\t\t\t\t\t\t\t\t\toutline_color_ba = this._outlinePalette[outlineIdx + 2] + this._outlinePalette[outlineIdx + 3] * 256;\n\t\t\t\t\t\t\t\t\t\toutline_thickness = this._outlinePalette[outlineIdx + 4];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 0] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 1] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 2] = outline_thickness;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 3] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 4] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 5] = outline_thickness;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 6] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 7] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 8] = outline_thickness;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 9] = outline_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 10] = outline_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.outlines[quad * 4 * 3 + 11] = outline_thickness;\n\t\t\t\t\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\t\t\t\t\tconst shadowIdx = this._symbolShadowParams[i] * 6;\n\t\t\t\t\t\t\t\t\t\tshadow_color_rg = this._shadowPalette[shadowIdx] + this._shadowPalette[shadowIdx + 1] * 256;\n\t\t\t\t\t\t\t\t\t\tshadow_color_ba = this._shadowPalette[shadowIdx + 2] + this._shadowPalette[shadowIdx + 3] * 256;\n\t\t\t\t\t\t\t\t\t\tshadow_offset_xy = this._shadowPalette[shadowIdx + 4] + 127 + Math.round(ratio * this._shadowPalette[shadowIdx + 5] + 127) * 256;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 0] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 1] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 2] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 3] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 4] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 5] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 6] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 7] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 8] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 9] = shadow_color_rg;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 10] = shadow_color_ba;\n\t\t\t\t\t\t\t\tmeshInfo.shadows[quad * 4 * 3 + 11] = shadow_offset_xy;\n\t\t\t\t\t\t\t\tmeshInfo.quad++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (retryUpdateMeshes) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (lineStartIndex < l) {\n\t\t\t\t\t\t\t\tbreakLine(this._symbols, l, _x);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._noResize = true;\n\t\t\t\tthis.autoWidth = this._autoWidth;\n\t\t\t\tthis.autoHeight = this._autoHeight;\n\t\t\t\tthis._noResize = false;\n\t\t\t\tconst hp = this._element.pivot.x;\n\t\t\t\tconst vp = this._element.pivot.y;\n\t\t\t\tconst ha = this._alignment.x;\n\t\t\t\tconst va = this._alignment.y;\n\t\t\t\tfor(let i = 0; i < this._meshInfo.length; i++){\n\t\t\t\t\t\tif (this._meshInfo[i].count === 0) continue;\n\t\t\t\t\t\tlet prevQuad = 0;\n\t\t\t\t\t\tfor(const line in this._meshInfo[i].lines){\n\t\t\t\t\t\t\t\tconst index = this._meshInfo[i].lines[line];\n\t\t\t\t\t\t\t\tconst lw = this._lineWidths[parseInt(line, 10)];\n\t\t\t\t\t\t\t\tconst hoffset = -hp * this._element.calculatedWidth + ha * (this._element.calculatedWidth - lw) * (this._rtl ? -1 : 1);\n\t\t\t\t\t\t\t\tconst voffset = (1 - vp) * this._element.calculatedHeight - fontMaxY - (1 - va) * (this._element.calculatedHeight - this.height);\n\t\t\t\t\t\t\t\tfor(let quad = prevQuad; quad <= index; quad++){\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 3] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 6] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 9] += hoffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 1] += voffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 4] += voffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 7] += voffset;\n\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[quad * 4 * 3 + 10] += voffset;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._rtl) {\n\t\t\t\t\t\t\t\t\t\tfor(let quad = prevQuad; quad <= index; quad++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst idx = quad * 4 * 3;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let vert = 0; vert < 4; ++vert){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + vert * 3] = this._element.calculatedWidth - this._meshInfo[i].positions[idx + vert * 3] + hoffset * 2;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmp0 = this._meshInfo[i].positions[idx + 3];\n\t\t\t\t\t\t\t\t\t\t\t\tconst tmp1 = this._meshInfo[i].positions[idx + 6];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 3] = this._meshInfo[i].positions[idx + 0];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 6] = this._meshInfo[i].positions[idx + 9];\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 0] = tmp0;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._meshInfo[i].positions[idx + 9] = tmp1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tprevQuad = index + 1;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst numVertices = this._meshInfo[i].count * 4;\n\t\t\t\t\t\tconst vertMax = this._meshInfo[i].quad * 4;\n\t\t\t\t\t\tconst it = new VertexIterator(this._meshInfo[i].meshInstance.mesh.vertexBuffer);\n\t\t\t\t\t\tfor(let v = 0; v < numVertices; v++){\n\t\t\t\t\t\t\t\tif (v >= vertMax) {\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_POSITION].set(0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_TEXCOORD0].set(0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_COLOR].set(0, 0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR8].set(0, 0, 0, 0);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR9].set(0, 0, 0, 0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_POSITION].set(this._meshInfo[i].positions[v * 3 + 0], this._meshInfo[i].positions[v * 3 + 1], this._meshInfo[i].positions[v * 3 + 2]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_TEXCOORD0].set(this._meshInfo[i].uvs[v * 2 + 0], this._meshInfo[i].uvs[v * 2 + 1]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_COLOR].set(this._meshInfo[i].colors[v * 4 + 0], this._meshInfo[i].colors[v * 4 + 1], this._meshInfo[i].colors[v * 4 + 2], this._meshInfo[i].colors[v * 4 + 3]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR8].set(this._meshInfo[i].outlines[v * 3 + 0], this._meshInfo[i].outlines[v * 3 + 1], this._meshInfo[i].outlines[v * 3 + 2]);\n\t\t\t\t\t\t\t\t\t\tit.element[SEMANTIC_ATTR9].set(this._meshInfo[i].shadows[v * 3 + 0], this._meshInfo[i].shadows[v * 3 + 1], this._meshInfo[i].shadows[v * 3 + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tit.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tit.end();\n\t\t\t\t\t\tthis._meshInfo[i].meshInstance.mesh.aabb.compute(this._meshInfo[i].positions);\n\t\t\t\t\t\tthis._meshInfo[i].meshInstance._aabbVer = -1;\n\t\t\t\t}\n\t\t\t\tthis._aabbDirty = true;\n\t\t}\n\t\t_onFontRender() {\n\t\t\t\tthis.font = this._font;\n\t\t}\n\t\t_onFontLoad(asset) {\n\t\t\t\tif (this.font !== asset.resource) {\n\t\t\t\t\t\tthis.font = asset.resource;\n\t\t\t\t}\n\t\t}\n\t\t_onFontChange(asset, name, _new, _old) {\n\t\t\t\tif (name === 'data') {\n\t\t\t\t\t\tthis._font.data = _new;\n\t\t\t\t\t\tconst maps = this._font.data.info.maps.length;\n\t\t\t\t\t\tfor(let i = 0; i < maps; i++){\n\t\t\t\t\t\t\t\tif (!this._meshInfo[i]) continue;\n\t\t\t\t\t\t\t\tconst mi = this._meshInfo[i].meshInstance;\n\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_sdfIntensity', this._font.intensity);\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_pxrange', this._getPxRange(this._font));\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_textureWidth', this._font.data.info.maps[i].width);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onFontRemove(asset) {}\n\t\t_setTextureParams(mi, texture) {\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tif (this._font.type === FONT_MSDF) {\n\t\t\t\t\t\t\t\tmi.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\t\t\tmi.deleteParameter('texture_opacityMap');\n\t\t\t\t\t\t\t\tmi.setParameter('texture_msdfMap', texture);\n\t\t\t\t\t\t} else if (this._font.type === FONT_BITMAP) {\n\t\t\t\t\t\t\t\tmi.deleteParameter('texture_msdfMap');\n\t\t\t\t\t\t\t\tmi.setParameter('texture_emissiveMap', texture);\n\t\t\t\t\t\t\t\tmi.setParameter('texture_opacityMap', texture);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_getPxRange(font) {\n\t\t\t\tconst keys = Object.keys(this._font.data.chars);\n\t\t\t\tfor(let i = 0; i < keys.length; i++){\n\t\t\t\t\t\tconst char = this._font.data.chars[keys[i]];\n\t\t\t\t\t\tif (char.range) {\n\t\t\t\t\t\t\t\treturn (char.scale || 1) * char.range;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn 2;\n\t\t}\n\t\t_getUv(char) {\n\t\t\t\tconst data = this._font.data;\n\t\t\t\tif (!data.chars[char]) {\n\t\t\t\t\t\tconst space = ' ';\n\t\t\t\t\t\tif (data.chars[space]) {\n\t\t\t\t\t\t\t\treturn this._getUv(space);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tconst map = data.chars[char].map;\n\t\t\t\tconst width = data.info.maps[map].width;\n\t\t\t\tconst height = data.info.maps[map].height;\n\t\t\t\tconst x = data.chars[char].x;\n\t\t\t\tconst y = data.chars[char].y;\n\t\t\t\tconst x1 = x;\n\t\t\t\tconst y1 = y;\n\t\t\t\tconst x2 = x + data.chars[char].width;\n\t\t\t\tconst y2 = y - data.chars[char].height;\n\t\t\t\tconst edge = 1 - data.chars[char].height / height;\n\t\t\t\treturn [\n\t\t\t\t\t\tx1 / width,\n\t\t\t\t\t\tedge - y1 / height,\n\t\t\t\t\t\tx2 / width,\n\t\t\t\t\t\tedge - y2 / height\n\t\t\t\t];\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._fontAsset.autoLoad = true;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._element.addModelToLayers(this._model);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._fontAsset.autoLoad = false;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._element.removeModelFromLayers(this._model);\n\t\t\t\t}\n\t\t}\n\t\t_setStencil(stencilParams) {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst instances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < instances.length; i++){\n\t\t\t\t\t\t\t\tinstances[i].stencilFront = stencilParams;\n\t\t\t\t\t\t\t\tinstances[i].stencilBack = stencilParams;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_shouldAutoFitWidth() {\n\t\t\t\treturn this._autoFitWidth && !this._autoWidth;\n\t\t}\n\t\t_shouldAutoFitHeight() {\n\t\t\t\treturn this._autoFitHeight && !this._autoHeight;\n\t\t}\n\t\t_shouldAutoFit() {\n\t\t\t\treturn this._autoFitWidth && !this._autoWidth || this._autoFitHeight && !this._autoHeight;\n\t\t}\n\t\t_calculateCharsPerTexture(symbolIndex) {\n\t\t\t\tconst charactersPerTexture = {};\n\t\t\t\tif (symbolIndex === undefined) {\n\t\t\t\t\t\tsymbolIndex = this._symbols.length;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = symbolIndex; i < len; i++){\n\t\t\t\t\t\tconst char = this._symbols[i];\n\t\t\t\t\t\tlet info = this._font.data.chars[char];\n\t\t\t\t\t\tif (!info) {\n\t\t\t\t\t\t\t\tinfo = this._font.data.chars[' '];\n\t\t\t\t\t\t\t\tif (!info) {\n\t\t\t\t\t\t\t\t\t\tinfo = this._font.data.chars[Object.keys(this._font.data.chars)[0]];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst map = info.map;\n\t\t\t\t\t\tif (!charactersPerTexture[map]) {\n\t\t\t\t\t\t\t\tcharactersPerTexture[map] = 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcharactersPerTexture[map]++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn charactersPerTexture;\n\t\t}\n\t\t_updateRenderRange() {\n\t\t\t\tconst startChars = this._rangeStart === 0 ? 0 : this._calculateCharsPerTexture(this._rangeStart);\n\t\t\t\tconst endChars = this._rangeEnd === 0 ? 0 : this._calculateCharsPerTexture(this._rangeEnd);\n\t\t\t\tfor(let i = 0, len = this._meshInfo.length; i < len; i++){\n\t\t\t\t\t\tconst start = startChars[i] || 0;\n\t\t\t\t\t\tconst end = endChars[i] || 0;\n\t\t\t\t\t\tconst instance = this._meshInfo[i].meshInstance;\n\t\t\t\t\t\tif (instance) {\n\t\t\t\t\t\t\t\tconst mesh = instance.mesh;\n\t\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\t\t\tmesh.primitive[0].base = start * 3 * 2;\n\t\t\t\t\t\t\t\t\t\tmesh.primitive[0].count = (end - start) * 3 * 2;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset text(value) {\n\t\t\t\tthis._i18nKey = null;\n\t\t\t\tconst str = value != null && value.toString() || '';\n\t\t\t\tthis._setText(str);\n\t\t}\n\t\tget text() {\n\t\t\t\treturn this._text;\n\t\t}\n\t\tset key(value) {\n\t\t\t\tconst str = value !== null ? value.toString() : null;\n\t\t\t\tif (this._i18nKey === str) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._i18nKey = str;\n\t\t\t\tif (str) {\n\t\t\t\t\t\tthis._fontAsset.disableLocalization = false;\n\t\t\t\t\t\tthis._resetLocalizedText();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._fontAsset.disableLocalization = true;\n\t\t\t\t}\n\t\t}\n\t\tget key() {\n\t\t\t\treturn this._i18nKey;\n\t\t}\n\t\tset color(value) {\n\t\t\t\tconst r = value.r;\n\t\t\t\tconst g = value.g;\n\t\t\t\tconst b = value.b;\n\t\t\t\tif (this._color.r === r && this._color.g === g && this._color.b === b) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._color.r = r;\n\t\t\t\tthis._color.g = g;\n\t\t\t\tthis._color.b = b;\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._symbolColors) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._color);\n\t\t\t\t\t\tthis._colorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._colorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._colorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.setParameter('material_emissive', this._colorUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:color', this._color);\n\t\t\t\t}\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tif (this._color.a !== value) {\n\t\t\t\t\t\tthis._color.a = value;\n\t\t\t\t\t\tif (this._model) {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('material_opacity', value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:opacity', value);\n\t\t\t\t}\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this._color.a;\n\t\t}\n\t\tset lineHeight(value) {\n\t\t\t\tconst _prev = this._lineHeight;\n\t\t\t\tthis._lineHeight = value;\n\t\t\t\tthis._scaledLineHeight = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget lineHeight() {\n\t\t\t\treturn this._lineHeight;\n\t\t}\n\t\tset wrapLines(value) {\n\t\t\t\tconst _prev = this._wrapLines;\n\t\t\t\tthis._wrapLines = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget wrapLines() {\n\t\t\t\treturn this._wrapLines;\n\t\t}\n\t\tget lines() {\n\t\t\t\treturn this._lineContents;\n\t\t}\n\t\tset spacing(value) {\n\t\t\t\tconst _prev = this._spacing;\n\t\t\t\tthis._spacing = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget spacing() {\n\t\t\t\treturn this._spacing;\n\t\t}\n\t\tset fontSize(value) {\n\t\t\t\tconst _prev = this._fontSize;\n\t\t\t\tthis._fontSize = value;\n\t\t\t\tthis._originalFontSize = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget fontSize() {\n\t\t\t\treturn this._fontSize;\n\t\t}\n\t\tset fontAsset(value) {\n\t\t\t\tthis._fontAsset.defaultAsset = value;\n\t\t}\n\t\tget fontAsset() {\n\t\t\t\treturn this._fontAsset.localizedAsset;\n\t\t}\n\t\tset font(value) {\n\t\t\t\tlet previousFontType;\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tpreviousFontType = this._font.type;\n\t\t\t\t\t\tif (this._font.off) this._font.off('render', this._onFontRender, this);\n\t\t\t\t}\n\t\t\t\tthis._font = value;\n\t\t\t\tthis._fontMinY = 0;\n\t\t\t\tthis._fontMaxY = 0;\n\t\t\t\tif (!value) return;\n\t\t\t\tconst json = this._font.data;\n\t\t\t\tfor(const charId in json.chars){\n\t\t\t\t\t\tconst data = json.chars[charId];\n\t\t\t\t\t\tif (data.bounds) {\n\t\t\t\t\t\t\t\tthis._fontMinY = Math.min(this._fontMinY, data.bounds[1]);\n\t\t\t\t\t\t\t\tthis._fontMaxY = Math.max(this._fontMaxY, data.bounds[3]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._font.on) this._font.on('render', this._onFontRender, this);\n\t\t\t\tif (this._fontAsset.localizedAsset) {\n\t\t\t\t\t\tconst asset = this._system.app.assets.get(this._fontAsset.localizedAsset);\n\t\t\t\t\t\tif (asset.resource !== this._font) {\n\t\t\t\t\t\t\t\tthis._fontAsset.defaultAsset = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (value.type !== previousFontType) {\n\t\t\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = this._font.textures.length; i < len; i++){\n\t\t\t\t\t\tif (!this._meshInfo[i]) {\n\t\t\t\t\t\t\t\tthis._meshInfo[i] = new MeshInfo();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst mi = this._meshInfo[i].meshInstance;\n\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_sdfIntensity', this._font.intensity);\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_pxrange', this._getPxRange(this._font));\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('font_textureWidth', this._font.data.info.maps[i].width);\n\t\t\t\t\t\t\t\t\t\tthis._setTextureParams(mi, this._font.textures[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet removedModel = false;\n\t\t\t\tfor(let i = this._font.textures.length; i < this._meshInfo.length; i++){\n\t\t\t\t\t\tif (this._meshInfo[i].meshInstance) {\n\t\t\t\t\t\t\t\tif (!removedModel) {\n\t\t\t\t\t\t\t\t\t\tthis._element.removeModelFromLayers(this._model);\n\t\t\t\t\t\t\t\t\t\tremovedModel = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._removeMeshInstance(this._meshInfo[i].meshInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._meshInfo.length > this._font.textures.length) {\n\t\t\t\t\t\tthis._meshInfo.length = this._font.textures.length;\n\t\t\t\t}\n\t\t\t\tthis._updateText();\n\t\t}\n\t\tget font() {\n\t\t\t\treturn this._font;\n\t\t}\n\t\tset alignment(value) {\n\t\t\t\tif (value instanceof Vec2) {\n\t\t\t\t\t\tthis._alignment.set(value.x, value.y);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._alignment.set(value[0], value[1]);\n\t\t\t\t}\n\t\t\t\tif (this._font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget alignment() {\n\t\t\t\treturn this._alignment;\n\t\t}\n\t\tset autoWidth(value) {\n\t\t\t\tconst old = this._autoWidth;\n\t\t\t\tthis._autoWidth = value;\n\t\t\t\tif (value && Math.abs(this._element.anchor.x - this._element.anchor.z) < 0.0001) {\n\t\t\t\t\t\tthis._element.width = this.width;\n\t\t\t\t}\n\t\t\t\tif (old !== value) {\n\t\t\t\t\t\tconst newFontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\t\t\tif (newFontSize !== this._fontSize) {\n\t\t\t\t\t\t\t\tthis._fontSize = newFontSize;\n\t\t\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget autoWidth() {\n\t\t\t\treturn this._autoWidth;\n\t\t}\n\t\tset autoHeight(value) {\n\t\t\t\tconst old = this._autoHeight;\n\t\t\t\tthis._autoHeight = value;\n\t\t\t\tif (value && Math.abs(this._element.anchor.y - this._element.anchor.w) < 0.0001) {\n\t\t\t\t\t\tthis._element.height = this.height;\n\t\t\t\t}\n\t\t\t\tif (old !== value) {\n\t\t\t\t\t\tconst newFontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\t\t\tif (newFontSize !== this._fontSize) {\n\t\t\t\t\t\t\t\tthis._fontSize = newFontSize;\n\t\t\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget autoHeight() {\n\t\t\t\treturn this._autoHeight;\n\t\t}\n\t\tset rtlReorder(value) {\n\t\t\t\tif (this._rtlReorder !== value) {\n\t\t\t\t\t\tthis._rtlReorder = value;\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rtlReorder() {\n\t\t\t\treturn this._rtlReorder;\n\t\t}\n\t\tset unicodeConverter(value) {\n\t\t\t\tif (this._unicodeConverter !== value) {\n\t\t\t\t\t\tthis._unicodeConverter = value;\n\t\t\t\t\t\tthis._setText(this._text);\n\t\t\t\t}\n\t\t}\n\t\tget unicodeConverter() {\n\t\t\t\treturn this._unicodeConverter;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._aabbDirty) {\n\t\t\t\t\t\tlet initialized = false;\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInfo.length; i++){\n\t\t\t\t\t\t\t\tif (!this._meshInfo[i].meshInstance) continue;\n\t\t\t\t\t\t\t\tif (!initialized) {\n\t\t\t\t\t\t\t\t\t\tthis._aabb.copy(this._meshInfo[i].meshInstance.aabb);\n\t\t\t\t\t\t\t\t\t\tinitialized = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._aabb.add(this._meshInfo[i].meshInstance.aabb);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._aabbDirty = false;\n\t\t\t\t}\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tset outlineColor(value) {\n\t\t\t\tconst r = value instanceof Color ? value.r : value[0];\n\t\t\t\tconst g = value instanceof Color ? value.g : value[1];\n\t\t\t\tconst b = value instanceof Color ? value.b : value[2];\n\t\t\t\tconst a = value instanceof Color ? value.a : value[3];\n\t\t\t\tif (this._outlineColor.r === r && this._outlineColor.g === g && this._outlineColor.b === b && this._outlineColor.a === a) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._outlineColor.r = r;\n\t\t\t\tthis._outlineColor.g = g;\n\t\t\t\tthis._outlineColor.b = b;\n\t\t\t\tthis._outlineColor.a = a;\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._outlineColor);\n\t\t\t\t\t\tthis._outlineColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._outlineColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._outlineColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._outlineColorUniform[3] = _tempColor$1.a;\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.setParameter('outline_color', this._outlineColorUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis._element.fire('set:outline', this._color);\n\t\t\t\t}\n\t\t}\n\t\tget outlineColor() {\n\t\t\t\treturn this._outlineColor;\n\t\t}\n\t\tset outlineThickness(value) {\n\t\t\t\tconst _prev = this._outlineThickness;\n\t\t\t\tthis._outlineThickness = value;\n\t\t\t\tif (_prev !== value && this._font) {\n\t\t\t\t\t\tif (!this._model) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._symbolOutlineParams) {\n\t\t\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('outline_thickness', this._outlineThicknessScale * this._outlineThickness);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget outlineThickness() {\n\t\t\t\treturn this._outlineThickness;\n\t\t}\n\t\tset shadowColor(value) {\n\t\t\t\tconst r = value instanceof Color ? value.r : value[0];\n\t\t\t\tconst g = value instanceof Color ? value.g : value[1];\n\t\t\t\tconst b = value instanceof Color ? value.b : value[2];\n\t\t\t\tconst a = value instanceof Color ? value.a : value[3];\n\t\t\t\tif (this._shadowColor.r === r && this._shadowColor.g === g && this._shadowColor.b === b && this._shadowColor.a === a) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shadowColor.r = r;\n\t\t\t\tthis._shadowColor.g = g;\n\t\t\t\tthis._shadowColor.b = b;\n\t\t\t\tthis._shadowColor.a = a;\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\tif (this._font) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempColor$1.linear(this._shadowColor);\n\t\t\t\t\t\tthis._shadowColorUniform[0] = _tempColor$1.r;\n\t\t\t\t\t\tthis._shadowColorUniform[1] = _tempColor$1.g;\n\t\t\t\t\t\tthis._shadowColorUniform[2] = _tempColor$1.b;\n\t\t\t\t\t\tthis._shadowColorUniform[3] = _tempColor$1.a;\n\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\tmi.setParameter('shadow_color', this._shadowColorUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget shadowColor() {\n\t\t\t\treturn this._shadowColor;\n\t\t}\n\t\tset shadowOffset(value) {\n\t\t\t\tconst x = value instanceof Vec2 ? value.x : value[0], y = value instanceof Vec2 ? value.y : value[1];\n\t\t\t\tif (this._shadowOffset.x === x && this._shadowOffset.y === y) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shadowOffset.set(x, y);\n\t\t\t\tif (this._font && this._model) {\n\t\t\t\t\t\tif (this._symbolShadowParams) {\n\t\t\t\t\t\t\t\tthis._updateText();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0, len = this._model.meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tconst ratio = -this._font.data.info.maps[i].width / this._font.data.info.maps[i].height;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[0] = this._shadowOffsetScale * this._shadowOffset.x;\n\t\t\t\t\t\t\t\t\t\tthis._shadowOffsetUniform[1] = ratio * this._shadowOffsetScale * this._shadowOffset.y;\n\t\t\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances[i];\n\t\t\t\t\t\t\t\t\t\tmi.setParameter('shadow_offset', this._shadowOffsetUniform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget shadowOffset() {\n\t\t\t\treturn this._shadowOffset;\n\t\t}\n\t\tset minFontSize(value) {\n\t\t\t\tif (this._minFontSize === value) return;\n\t\t\t\tthis._minFontSize = value;\n\t\t\t\tif (this.font && this._shouldAutoFit()) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget minFontSize() {\n\t\t\t\treturn this._minFontSize;\n\t\t}\n\t\tset maxFontSize(value) {\n\t\t\t\tif (this._maxFontSize === value) return;\n\t\t\t\tthis._maxFontSize = value;\n\t\t\t\tif (this.font && this._shouldAutoFit()) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget maxFontSize() {\n\t\t\t\treturn this._maxFontSize;\n\t\t}\n\t\tset autoFitWidth(value) {\n\t\t\t\tif (this._autoFitWidth === value) return;\n\t\t\t\tthis._autoFitWidth = value;\n\t\t\t\tthis._fontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\tif (this.font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget autoFitWidth() {\n\t\t\t\treturn this._autoFitWidth;\n\t\t}\n\t\tset autoFitHeight(value) {\n\t\t\t\tif (this._autoFitHeight === value) return;\n\t\t\t\tthis._autoFitHeight = value;\n\t\t\t\tthis._fontSize = this._shouldAutoFit() ? this._maxFontSize : this._originalFontSize;\n\t\t\t\tif (this.font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget autoFitHeight() {\n\t\t\t\treturn this._autoFitHeight;\n\t\t}\n\t\tset maxLines(value) {\n\t\t\t\tif (this._maxLines === value) return;\n\t\t\t\tif (value === null && this._maxLines === -1) return;\n\t\t\t\tthis._maxLines = value === null ? -1 : value;\n\t\t\t\tif (this.font && this._wrapLines) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t}\n\t\tget maxLines() {\n\t\t\t\treturn this._maxLines;\n\t\t}\n\t\tset enableMarkup(value) {\n\t\t\t\tvalue = !!value;\n\t\t\t\tif (this._enableMarkup === value) return;\n\t\t\t\tthis._enableMarkup = value;\n\t\t\t\tif (this.font) {\n\t\t\t\t\t\tthis._updateText();\n\t\t\t\t}\n\t\t\t\tconst screenSpace = this._element._isScreenSpace();\n\t\t\t\tthis._updateMaterial(screenSpace);\n\t\t}\n\t\tget enableMarkup() {\n\t\t\t\treturn this._enableMarkup;\n\t\t}\n\t\tget symbols() {\n\t\t\t\treturn this._symbols;\n\t\t}\n\t\tget symbolColors() {\n\t\t\t\tif (this._symbolColors === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._symbolColors.map(function(c) {\n\t\t\t\t\t\treturn this._colorPalette.slice(c * 3, c * 3 + 3);\n\t\t\t\t}, this);\n\t\t}\n\t\tget symbolOutlineParams() {\n\t\t\t\tif (this._symbolOutlineParams === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._symbolOutlineParams.map(function(paramId) {\n\t\t\t\t\t\treturn this._outlinePalette.slice(paramId * 5, paramId * 5 + 5);\n\t\t\t\t}, this);\n\t\t}\n\t\tget symbolShadowParams() {\n\t\t\t\tif (this._symbolShadowParams === null) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._symbolShadowParams.map(function(paramId) {\n\t\t\t\t\t\treturn this._shadowPalette.slice(paramId * 6, paramId * 6 + 6);\n\t\t\t\t}, this);\n\t\t}\n\t\tget rtl() {\n\t\t\t\treturn this._rtl;\n\t\t}\n\t\tset rangeStart(rangeStart) {\n\t\t\t\trangeStart = Math.max(0, Math.min(rangeStart, this._symbols.length));\n\t\t\t\tif (rangeStart !== this._rangeStart) {\n\t\t\t\t\t\tthis._rangeStart = rangeStart;\n\t\t\t\t\t\tthis._updateRenderRange();\n\t\t\t\t}\n\t\t}\n\t\tget rangeStart() {\n\t\t\t\treturn this._rangeStart;\n\t\t}\n\t\tset rangeEnd(rangeEnd) {\n\t\t\t\trangeEnd = Math.max(this._rangeStart, Math.min(rangeEnd, this._symbols.length));\n\t\t\t\tif (rangeEnd !== this._rangeEnd) {\n\t\t\t\t\t\tthis._rangeEnd = rangeEnd;\n\t\t\t\t\t\tthis._updateRenderRange();\n\t\t\t\t}\n\t\t}\n\t\tget rangeEnd() {\n\t\t\t\treturn this._rangeEnd;\n\t\t}\n}\n\nconst position$2 = new Vec3();\nconst invParentWtm = new Mat4();\nconst vecA$2 = new Vec3();\nconst vecB$2 = new Vec3();\nconst matA = new Mat4();\nconst matB = new Mat4();\nconst matC = new Mat4();\nconst matD = new Mat4();\nclass ElementComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEDOWN = 'mousedown';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEUP = 'mouseup';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEENTER = 'mouseenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSELEAVE = 'mouseleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEMOVE = 'mousemove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOUSEWHEEL = 'mousewheel';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CLICK = 'click';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHSTART = 'touchstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHEND = 'touchend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHMOVE = 'touchmove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TOUCHCANCEL = 'touchcancel';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._beingInitialized = false;\n\t\t\t\tthis._anchor = new Vec4();\n\t\t\t\tthis._localAnchor = new Vec4();\n\t\t\t\tthis._pivot = new Vec2();\n\t\t\t\tthis._width = this._calculatedWidth = 32;\n\t\t\t\tthis._height = this._calculatedHeight = 32;\n\t\t\t\tthis._margin = new Vec4(0, 0, -32, -32);\n\t\t\t\tthis._modelTransform = new Mat4();\n\t\t\t\tthis._screenToWorld = new Mat4();\n\t\t\t\tthis._anchorTransform = new Mat4();\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tthis._parentWorldTransform = new Mat4();\n\t\t\t\tthis._screenTransform = new Mat4();\n\t\t\t\tthis._screenCorners = [\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3()\n\t\t\t\t];\n\t\t\t\tthis._canvasCorners = [\n\t\t\t\t\t\tnew Vec2(),\n\t\t\t\t\t\tnew Vec2(),\n\t\t\t\t\t\tnew Vec2(),\n\t\t\t\t\t\tnew Vec2()\n\t\t\t\t];\n\t\t\t\tthis._worldCorners = [\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3(),\n\t\t\t\t\t\tnew Vec3()\n\t\t\t\t];\n\t\t\t\tthis._cornersDirty = true;\n\t\t\t\tthis._canvasCornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\tthis.entity.on('insert', this._onInsert, this);\n\t\t\t\tthis._patch();\n\t\t\t\tthis.screen = null;\n\t\t\t\tthis._type = ELEMENTTYPE_GROUP;\n\t\t\t\tthis._image = null;\n\t\t\t\tthis._text = null;\n\t\t\t\tthis._group = null;\n\t\t\t\tthis._drawOrder = 0;\n\t\t\t\tthis._fitMode = FITMODE_STRETCH;\n\t\t\t\tthis._useInput = false;\n\t\t\t\tthis._layers = [\n\t\t\t\t\t\tLAYERID_UI\n\t\t\t\t];\n\t\t\t\tthis._addedModels = [];\n\t\t\t\tthis._batchGroupId = -1;\n\t\t\t\tthis._offsetReadAt = 0;\n\t\t\t\tthis._maskOffset = 0.5;\n\t\t\t\tthis._maskedBy = null;\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data.enabled;\n\t\t\t\tdata.enabled = value;\n\t\t\t\tthis.fire('set', 'enabled', oldValue, value);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tget _absLeft() {\n\t\t\t\treturn this._localAnchor.x + this._margin.x;\n\t\t}\n\t\tget _absRight() {\n\t\t\t\treturn this._localAnchor.z - this._margin.z;\n\t\t}\n\t\tget _absTop() {\n\t\t\t\treturn this._localAnchor.w - this._margin.w;\n\t\t}\n\t\tget _absBottom() {\n\t\t\t\treturn this._localAnchor.y + this._margin.y;\n\t\t}\n\t\tget _hasSplitAnchorsX() {\n\t\t\t\treturn Math.abs(this._anchor.x - this._anchor.z) > 0.001;\n\t\t}\n\t\tget _hasSplitAnchorsY() {\n\t\t\t\treturn Math.abs(this._anchor.y - this._anchor.w) > 0.001;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.aabb;\n\t\t\t\t}\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.aabb;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset anchor(value) {\n\t\t\t\tif (value instanceof Vec4) {\n\t\t\t\t\t\tthis._anchor.copy(value);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._anchor.set(...value);\n\t\t\t\t}\n\t\t\t\tif (!this.entity._parent && !this.screen) {\n\t\t\t\t\t\tthis._calculateLocalAnchors();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._calculateSize(this._hasSplitAnchorsX, this._hasSplitAnchorsY);\n\t\t\t\t}\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:anchor', this._anchor);\n\t\t}\n\t\tget anchor() {\n\t\t\t\treturn this._anchor;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.ELEMENT, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.ELEMENT, value, this.entity);\n\t\t\t\t}\n\t\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tif (this._image && this._image._renderable.model) {\n\t\t\t\t\t\t\t\tthis.addModelToLayers(this._image._renderable.model);\n\t\t\t\t\t\t} else if (this._text && this._text._model) {\n\t\t\t\t\t\t\t\tthis.addModelToLayers(this._text._model);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._batchGroupId = value;\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset bottom(value) {\n\t\t\t\tthis._margin.y = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wt = this._absTop;\n\t\t\t\tconst wb = this._localAnchor.y + value;\n\t\t\t\tthis._setHeight(wt - wb);\n\t\t\t\tp.y = value + this._calculatedHeight * this._pivot.y;\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget bottom() {\n\t\t\t\treturn this._margin.y;\n\t\t}\n\t\tset calculatedWidth(value) {\n\t\t\t\tthis._setCalculatedWidth(value, true);\n\t\t}\n\t\tget calculatedWidth() {\n\t\t\t\treturn this._calculatedWidth;\n\t\t}\n\t\tset calculatedHeight(value) {\n\t\t\t\tthis._setCalculatedHeight(value, true);\n\t\t}\n\t\tget calculatedHeight() {\n\t\t\t\treturn this._calculatedHeight;\n\t\t}\n\t\tget canvasCorners() {\n\t\t\t\tif (!this._canvasCornersDirty || !this.screen || !this.screen.screen.screenSpace) {\n\t\t\t\t\t\treturn this._canvasCorners;\n\t\t\t\t}\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst screenCorners = this.screenCorners;\n\t\t\t\tconst sx = device.canvas.clientWidth / device.width;\n\t\t\t\tconst sy = device.canvas.clientHeight / device.height;\n\t\t\t\tfor(let i = 0; i < 4; i++){\n\t\t\t\t\t\tthis._canvasCorners[i].set(screenCorners[i].x * sx, (device.height - screenCorners[i].y) * sy);\n\t\t\t\t}\n\t\t\t\tthis._canvasCornersDirty = false;\n\t\t\t\treturn this._canvasCorners;\n\t\t}\n\t\tset drawOrder(value) {\n\t\t\t\tlet priority = 0;\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tpriority = this.screen.screen.priority;\n\t\t\t\t}\n\t\t\t\tif (value > 0xFFFFFF) {\n\t\t\t\t\t\tvalue = 0xFFFFFF;\n\t\t\t\t}\n\t\t\t\tthis._drawOrder = (priority << 24) + value;\n\t\t\t\tthis.fire('set:draworder', this._drawOrder);\n\t\t}\n\t\tget drawOrder() {\n\t\t\t\treturn this._drawOrder;\n\t\t}\n\t\tset height(value) {\n\t\t\t\tthis._height = value;\n\t\t\t\tif (!this._hasSplitAnchorsY) {\n\t\t\t\t\t\tthis._setCalculatedHeight(value, true);\n\t\t\t\t}\n\t\t\t\tthis.fire('set:height', this._height);\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tif (this._addedModels.length) {\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < this._addedModels.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this._addedModels[j].meshInstances);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._layers = value;\n\t\t\t\tif (!this.enabled || !this.entity.enabled || !this._addedModels.length) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tfor(let j = 0; j < this._addedModels.length; j++){\n\t\t\t\t\t\t\t\t\t\tlayer.addMeshInstances(this._addedModels[j].meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset left(value) {\n\t\t\t\tthis._margin.x = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wr = this._absRight;\n\t\t\t\tconst wl = this._localAnchor.x + value;\n\t\t\t\tthis._setWidth(wr - wl);\n\t\t\t\tp.x = value + this._calculatedWidth * this._pivot.x;\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget left() {\n\t\t\t\treturn this._margin.x;\n\t\t}\n\t\tset margin(value) {\n\t\t\t\tthis._margin.copy(value);\n\t\t\t\tthis._calculateSize(true, true);\n\t\t\t\tthis.fire('set:margin', this._margin);\n\t\t}\n\t\tget margin() {\n\t\t\t\treturn this._margin;\n\t\t}\n\t\tget maskedBy() {\n\t\t\t\treturn this._maskedBy;\n\t\t}\n\t\tset pivot(value) {\n\t\t\t\tconst { pivot, margin } = this;\n\t\t\t\tconst prevX = pivot.x;\n\t\t\t\tconst prevY = pivot.y;\n\t\t\t\tif (value instanceof Vec2) {\n\t\t\t\t\t\tpivot.copy(value);\n\t\t\t\t} else {\n\t\t\t\t\t\tpivot.set(...value);\n\t\t\t\t}\n\t\t\t\tconst mx = margin.x + margin.z;\n\t\t\t\tconst dx = pivot.x - prevX;\n\t\t\t\tmargin.x += mx * dx;\n\t\t\t\tmargin.z -= mx * dx;\n\t\t\t\tconst my = margin.y + margin.w;\n\t\t\t\tconst dy = pivot.y - prevY;\n\t\t\t\tmargin.y += my * dy;\n\t\t\t\tmargin.w -= my * dy;\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tthis._cornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\tthis._calculateSize(false, false);\n\t\t\t\tthis._flagChildrenAsDirty();\n\t\t\t\tthis.fire('set:pivot', pivot);\n\t\t}\n\t\tget pivot() {\n\t\t\t\treturn this._pivot;\n\t\t}\n\t\tset right(value) {\n\t\t\t\tthis._margin.z = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wl = this._absLeft;\n\t\t\t\tconst wr = this._localAnchor.z - value;\n\t\t\t\tthis._setWidth(wr - wl);\n\t\t\t\tp.x = this._localAnchor.z - this._localAnchor.x - value - this._calculatedWidth * (1 - this._pivot.x);\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget right() {\n\t\t\t\treturn this._margin.z;\n\t\t}\n\t\tget screenCorners() {\n\t\t\t\tif (!this._cornersDirty || !this.screen) {\n\t\t\t\t\t\treturn this._screenCorners;\n\t\t\t\t}\n\t\t\t\tconst parentBottomLeft = this.entity.parent && this.entity.parent.element && this.entity.parent.element.screenCorners[0];\n\t\t\t\tthis._screenCorners[0].set(this._absLeft, this._absBottom, 0);\n\t\t\t\tthis._screenCorners[1].set(this._absRight, this._absBottom, 0);\n\t\t\t\tthis._screenCorners[2].set(this._absRight, this._absTop, 0);\n\t\t\t\tthis._screenCorners[3].set(this._absLeft, this._absTop, 0);\n\t\t\t\tconst screenSpace = this.screen.screen.screenSpace;\n\t\t\t\tfor(let i = 0; i < 4; i++){\n\t\t\t\t\t\tthis._screenTransform.transformPoint(this._screenCorners[i], this._screenCorners[i]);\n\t\t\t\t\t\tif (screenSpace) {\n\t\t\t\t\t\t\t\tthis._screenCorners[i].mulScalar(this.screen.screen.scale);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (parentBottomLeft) {\n\t\t\t\t\t\t\t\tthis._screenCorners[i].add(parentBottomLeft);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cornersDirty = false;\n\t\t\t\tthis._canvasCornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\treturn this._screenCorners;\n\t\t}\n\t\tget textWidth() {\n\t\t\t\treturn this._text ? this._text.width : 0;\n\t\t}\n\t\tget textHeight() {\n\t\t\t\treturn this._text ? this._text.height : 0;\n\t\t}\n\t\tset top(value) {\n\t\t\t\tthis._margin.w = value;\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tconst wb = this._absBottom;\n\t\t\t\tconst wt = this._localAnchor.w - value;\n\t\t\t\tthis._setHeight(wt - wb);\n\t\t\t\tp.y = this._localAnchor.w - this._localAnchor.y - value - this._calculatedHeight * (1 - this._pivot.y);\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t}\n\t\tget top() {\n\t\t\t\treturn this._margin.w;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (value !== this._type) {\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tif (this._image) {\n\t\t\t\t\t\t\t\tthis._image.destroy();\n\t\t\t\t\t\t\t\tthis._image = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._text) {\n\t\t\t\t\t\t\t\tthis._text.destroy();\n\t\t\t\t\t\t\t\tthis._text = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value === ELEMENTTYPE_IMAGE) {\n\t\t\t\t\t\t\t\tthis._image = new ImageElement(this);\n\t\t\t\t\t\t} else if (value === ELEMENTTYPE_TEXT) {\n\t\t\t\t\t\t\t\tthis._text = new TextElement(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset useInput(value) {\n\t\t\t\tif (this._useInput === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._useInput = value;\n\t\t\t\tif (this.system.app.elementInput) {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.system.app.elementInput.addElement(this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.system.app.elementInput.removeElement(this);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._useInput === true) ;\n\t\t\t\t}\n\t\t\t\tthis.fire('set:useInput', value);\n\t\t}\n\t\tget useInput() {\n\t\t\t\treturn this._useInput;\n\t\t}\n\t\tset fitMode(value) {\n\t\t\t\tthis._fitMode = value;\n\t\t\t\tthis._calculateSize(true, true);\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tthis._image.refreshMesh();\n\t\t\t\t}\n\t\t}\n\t\tget fitMode() {\n\t\t\t\treturn this._fitMode;\n\t\t}\n\t\tset width(value) {\n\t\t\t\tthis._width = value;\n\t\t\t\tif (!this._hasSplitAnchorsX) {\n\t\t\t\t\t\tthis._setCalculatedWidth(value, true);\n\t\t\t\t}\n\t\t\t\tthis.fire('set:width', this._width);\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tget worldCorners() {\n\t\t\t\tif (!this._worldCornersDirty) {\n\t\t\t\t\t\treturn this._worldCorners;\n\t\t\t\t}\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tconst screenCorners = this.screenCorners;\n\t\t\t\t\t\tif (!this.screen.screen.screenSpace) {\n\t\t\t\t\t\t\t\tmatA.copy(this.screen.screen._screenMatrix);\n\t\t\t\t\t\t\t\tmatA.data[13] = -matA.data[13];\n\t\t\t\t\t\t\t\tmatA.mul2(this.screen.getWorldTransform(), matA);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < 4; i++){\n\t\t\t\t\t\t\t\t\t\tmatA.transformPoint(screenCorners[i], this._worldCorners[i]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst localPos = this.entity.getLocalPosition();\n\t\t\t\t\t\tmatA.setTranslate(-localPos.x, -localPos.y, -localPos.z);\n\t\t\t\t\t\tmatB.setTRS(Vec3.ZERO, this.entity.getLocalRotation(), this.entity.getLocalScale());\n\t\t\t\t\t\tmatC.setTranslate(localPos.x, localPos.y, localPos.z);\n\t\t\t\t\t\tconst entity = this.entity.parent ? this.entity.parent : this.entity;\n\t\t\t\t\t\tmatD.copy(entity.getWorldTransform());\n\t\t\t\t\t\tmatD.mul(matC).mul(matB).mul(matA);\n\t\t\t\t\t\tvecA$2.set(localPos.x - this.pivot.x * this.calculatedWidth, localPos.y - this.pivot.y * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[0]);\n\t\t\t\t\t\tvecA$2.set(localPos.x + (1 - this.pivot.x) * this.calculatedWidth, localPos.y - this.pivot.y * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[1]);\n\t\t\t\t\t\tvecA$2.set(localPos.x + (1 - this.pivot.x) * this.calculatedWidth, localPos.y + (1 - this.pivot.y) * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[2]);\n\t\t\t\t\t\tvecA$2.set(localPos.x - this.pivot.x * this.calculatedWidth, localPos.y + (1 - this.pivot.y) * this.calculatedHeight, localPos.z);\n\t\t\t\t\t\tmatD.transformPoint(vecA$2, this._worldCorners[3]);\n\t\t\t\t}\n\t\t\t\tthis._worldCornersDirty = false;\n\t\t\t\treturn this._worldCorners;\n\t\t}\n\t\tset fontSize(arg) {\n\t\t\t\tthis._setValue('fontSize', arg);\n\t\t}\n\t\tget fontSize() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.fontSize;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset minFontSize(arg) {\n\t\t\t\tthis._setValue('minFontSize', arg);\n\t\t}\n\t\tget minFontSize() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.minFontSize;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset maxFontSize(arg) {\n\t\t\t\tthis._setValue('maxFontSize', arg);\n\t\t}\n\t\tget maxFontSize() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.maxFontSize;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset maxLines(arg) {\n\t\t\t\tthis._setValue('maxLines', arg);\n\t\t}\n\t\tget maxLines() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.maxLines;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoFitWidth(arg) {\n\t\t\t\tthis._setValue('autoFitWidth', arg);\n\t\t}\n\t\tget autoFitWidth() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoFitWidth;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoFitHeight(arg) {\n\t\t\t\tthis._setValue('autoFitHeight', arg);\n\t\t}\n\t\tget autoFitHeight() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoFitHeight;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset color(arg) {\n\t\t\t\tthis._setValue('color', arg);\n\t\t}\n\t\tget color() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.color;\n\t\t\t\t}\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.color;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset font(arg) {\n\t\t\t\tthis._setValue('font', arg);\n\t\t}\n\t\tget font() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.font;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset fontAsset(arg) {\n\t\t\t\tthis._setValue('fontAsset', arg);\n\t\t}\n\t\tget fontAsset() {\n\t\t\t\tif (this._text && typeof this._text.fontAsset === 'number') {\n\t\t\t\t\t\treturn this._text.fontAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset spacing(arg) {\n\t\t\t\tthis._setValue('spacing', arg);\n\t\t}\n\t\tget spacing() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.spacing;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset lineHeight(arg) {\n\t\t\t\tthis._setValue('lineHeight', arg);\n\t\t}\n\t\tget lineHeight() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.lineHeight;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset wrapLines(arg) {\n\t\t\t\tthis._setValue('wrapLines', arg);\n\t\t}\n\t\tget wrapLines() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.wrapLines;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset lines(arg) {\n\t\t\t\tthis._setValue('lines', arg);\n\t\t}\n\t\tget lines() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.lines;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset alignment(arg) {\n\t\t\t\tthis._setValue('alignment', arg);\n\t\t}\n\t\tget alignment() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.alignment;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoWidth(arg) {\n\t\t\t\tthis._setValue('autoWidth', arg);\n\t\t}\n\t\tget autoWidth() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoWidth;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset autoHeight(arg) {\n\t\t\t\tthis._setValue('autoHeight', arg);\n\t\t}\n\t\tget autoHeight() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.autoHeight;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rtlReorder(arg) {\n\t\t\t\tthis._setValue('rtlReorder', arg);\n\t\t}\n\t\tget rtlReorder() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.rtlReorder;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset unicodeConverter(arg) {\n\t\t\t\tthis._setValue('unicodeConverter', arg);\n\t\t}\n\t\tget unicodeConverter() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.unicodeConverter;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset text(arg) {\n\t\t\t\tthis._setValue('text', arg);\n\t\t}\n\t\tget text() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.text;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset key(arg) {\n\t\t\t\tthis._setValue('key', arg);\n\t\t}\n\t\tget key() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.key;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset texture(arg) {\n\t\t\t\tthis._setValue('texture', arg);\n\t\t}\n\t\tget texture() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.texture;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset textureAsset(arg) {\n\t\t\t\tthis._setValue('textureAsset', arg);\n\t\t}\n\t\tget textureAsset() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.textureAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset material(arg) {\n\t\t\t\tthis._setValue('material', arg);\n\t\t}\n\t\tget material() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.material;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset materialAsset(arg) {\n\t\t\t\tthis._setValue('materialAsset', arg);\n\t\t}\n\t\tget materialAsset() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.materialAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset sprite(arg) {\n\t\t\t\tthis._setValue('sprite', arg);\n\t\t}\n\t\tget sprite() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.sprite;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset spriteAsset(arg) {\n\t\t\t\tthis._setValue('spriteAsset', arg);\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.spriteAsset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset spriteFrame(arg) {\n\t\t\t\tthis._setValue('spriteFrame', arg);\n\t\t}\n\t\tget spriteFrame() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.spriteFrame;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset pixelsPerUnit(arg) {\n\t\t\t\tthis._setValue('pixelsPerUnit', arg);\n\t\t}\n\t\tget pixelsPerUnit() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.pixelsPerUnit;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset opacity(arg) {\n\t\t\t\tthis._setValue('opacity', arg);\n\t\t}\n\t\tget opacity() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.opacity;\n\t\t\t\t}\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.opacity;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rect(arg) {\n\t\t\t\tthis._setValue('rect', arg);\n\t\t}\n\t\tget rect() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.rect;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset mask(arg) {\n\t\t\t\tthis._setValue('mask', arg);\n\t\t}\n\t\tget mask() {\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\treturn this._image.mask;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset outlineColor(arg) {\n\t\t\t\tthis._setValue('outlineColor', arg);\n\t\t}\n\t\tget outlineColor() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.outlineColor;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset outlineThickness(arg) {\n\t\t\t\tthis._setValue('outlineThickness', arg);\n\t\t}\n\t\tget outlineThickness() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.outlineThickness;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset shadowColor(arg) {\n\t\t\t\tthis._setValue('shadowColor', arg);\n\t\t}\n\t\tget shadowColor() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.shadowColor;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset shadowOffset(arg) {\n\t\t\t\tthis._setValue('shadowOffset', arg);\n\t\t}\n\t\tget shadowOffset() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.shadowOffset;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset enableMarkup(arg) {\n\t\t\t\tthis._setValue('enableMarkup', arg);\n\t\t}\n\t\tget enableMarkup() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.enableMarkup;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rangeStart(arg) {\n\t\t\t\tthis._setValue('rangeStart', arg);\n\t\t}\n\t\tget rangeStart() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.rangeStart;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tset rangeEnd(arg) {\n\t\t\t\tthis._setValue('rangeEnd', arg);\n\t\t}\n\t\tget rangeEnd() {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\treturn this._text.rangeEnd;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\tif (this._text[name] !== value) {\n\t\t\t\t\t\t\t\tthis._dirtyBatch();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._text[name] = value;\n\t\t\t\t} else if (this._image) {\n\t\t\t\t\t\tif (this._image[name] !== value) {\n\t\t\t\t\t\t\t\tthis._dirtyBatch();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._image[name] = value;\n\t\t\t\t}\n\t\t}\n\t\t_patch() {\n\t\t\t\tthis.entity._sync = this._sync;\n\t\t\t\tthis.entity.setPosition = this._setPosition;\n\t\t\t\tthis.entity.setLocalPosition = this._setLocalPosition;\n\t\t}\n\t\t_unpatch() {\n\t\t\t\tthis.entity._sync = Entity.prototype._sync;\n\t\t\t\tthis.entity.setPosition = Entity.prototype.setPosition;\n\t\t\t\tthis.entity.setLocalPosition = Entity.prototype.setLocalPosition;\n\t\t}\n\t\t_setPosition(x, y, z) {\n\t\t\t\tif (!this.element.screen) {\n\t\t\t\t\t\tEntity.prototype.setPosition.call(this, x, y, z);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tposition$2.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tposition$2.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tthis.getWorldTransform();\n\t\t\t\tinvParentWtm.copy(this.element._screenToWorld).invert();\n\t\t\t\tinvParentWtm.transformPoint(position$2, this.localPosition);\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\t_setLocalPosition(x, y, z) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.localPosition.copy(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.localPosition.set(x, y, z);\n\t\t\t\t}\n\t\t\t\tconst element = this.element;\n\t\t\t\tconst p = this.localPosition;\n\t\t\t\tconst pvt = element._pivot;\n\t\t\t\telement._margin.x = p.x - element._calculatedWidth * pvt.x;\n\t\t\t\telement._margin.z = element._localAnchor.z - element._localAnchor.x - element._calculatedWidth - element._margin.x;\n\t\t\t\telement._margin.y = p.y - element._calculatedHeight * pvt.y;\n\t\t\t\telement._margin.w = element._localAnchor.w - element._localAnchor.y - element._calculatedHeight - element._margin.y;\n\t\t\t\tif (!this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtifyLocal();\n\t\t\t\t}\n\t\t}\n\t\t_sync() {\n\t\t\t\tconst element = this.element;\n\t\t\t\tconst screen = element.screen;\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tif (element._anchorDirty) {\n\t\t\t\t\t\t\t\tlet resx = 0;\n\t\t\t\t\t\t\t\tlet resy = 0;\n\t\t\t\t\t\t\t\tlet px = 0;\n\t\t\t\t\t\t\t\tlet py = 1;\n\t\t\t\t\t\t\t\tif (this._parent && this._parent.element) {\n\t\t\t\t\t\t\t\t\t\tresx = this._parent.element.calculatedWidth;\n\t\t\t\t\t\t\t\t\t\tresy = this._parent.element.calculatedHeight;\n\t\t\t\t\t\t\t\t\t\tpx = this._parent.element.pivot.x;\n\t\t\t\t\t\t\t\t\t\tpy = this._parent.element.pivot.y;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst resolution = screen.screen.resolution;\n\t\t\t\t\t\t\t\t\t\tresx = resolution.x / screen.screen.scale;\n\t\t\t\t\t\t\t\t\t\tresy = resolution.y / screen.screen.scale;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement._anchorTransform.setTranslate(resx * (element.anchor.x - px), -(resy * (py - element.anchor.y)), 0);\n\t\t\t\t\t\t\t\telement._anchorDirty = false;\n\t\t\t\t\t\t\t\telement._calculateLocalAnchors();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (element._sizeDirty) {\n\t\t\t\t\t\t\t\telement._calculateSize(false, false);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis.localTransform.setTRS(this.localPosition, this.localRotation, this.localScale);\n\t\t\t\t\t\tconst p = this.localPosition;\n\t\t\t\t\t\tconst pvt = element._pivot;\n\t\t\t\t\t\telement._margin.x = p.x - element._calculatedWidth * pvt.x;\n\t\t\t\t\t\telement._margin.z = element._localAnchor.z - element._localAnchor.x - element._calculatedWidth - element._margin.x;\n\t\t\t\t\t\telement._margin.y = p.y - element._calculatedHeight * pvt.y;\n\t\t\t\t\t\telement._margin.w = element._localAnchor.w - element._localAnchor.y - element._calculatedHeight - element._margin.y;\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t}\n\t\t\t\tif (!screen) {\n\t\t\t\t\t\tif (this._dirtyWorld) {\n\t\t\t\t\t\t\t\telement._cornersDirty = true;\n\t\t\t\t\t\t\t\telement._canvasCornersDirty = true;\n\t\t\t\t\t\t\t\telement._worldCornersDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tEntity.prototype._sync.call(this);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._dirtyWorld) {\n\t\t\t\t\t\tif (this._parent === null) {\n\t\t\t\t\t\t\t\tthis.worldTransform.copy(this.localTransform);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this._parent.element) {\n\t\t\t\t\t\t\t\t\t\telement._screenToWorld.mul2(this._parent.element._modelTransform, element._anchorTransform);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telement._screenToWorld.copy(element._anchorTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement._modelTransform.mul2(element._screenToWorld, this.localTransform);\n\t\t\t\t\t\t\t\tif (screen) {\n\t\t\t\t\t\t\t\t\t\telement._screenToWorld.mul2(screen.screen._screenMatrix, element._screenToWorld);\n\t\t\t\t\t\t\t\t\t\tif (!screen.screen.screenSpace) {\n\t\t\t\t\t\t\t\t\t\t\t\telement._screenToWorld.mul2(screen.worldTransform, element._screenToWorld);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.mul2(element._screenToWorld, this.localTransform);\n\t\t\t\t\t\t\t\t\t\tconst parentWorldTransform = element._parentWorldTransform;\n\t\t\t\t\t\t\t\t\t\tparentWorldTransform.setIdentity();\n\t\t\t\t\t\t\t\t\t\tconst parent = this._parent;\n\t\t\t\t\t\t\t\t\t\tif (parent && parent.element && parent !== screen) {\n\t\t\t\t\t\t\t\t\t\t\t\tmatA.setTRS(Vec3.ZERO, parent.getLocalRotation(), parent.getLocalScale());\n\t\t\t\t\t\t\t\t\t\t\t\tparentWorldTransform.mul2(parent.element._parentWorldTransform, matA);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst depthOffset = vecA$2;\n\t\t\t\t\t\t\t\t\t\tdepthOffset.set(0, 0, this.localPosition.z);\n\t\t\t\t\t\t\t\t\t\tconst pivotOffset = vecB$2;\n\t\t\t\t\t\t\t\t\t\tpivotOffset.set(element._absLeft + element._pivot.x * element.calculatedWidth, element._absBottom + element._pivot.y * element.calculatedHeight, 0);\n\t\t\t\t\t\t\t\t\t\tmatA.setTranslate(-pivotOffset.x, -pivotOffset.y, -pivotOffset.z);\n\t\t\t\t\t\t\t\t\t\tmatB.setTRS(depthOffset, this.getLocalRotation(), this.getLocalScale());\n\t\t\t\t\t\t\t\t\t\tmatC.setTranslate(pivotOffset.x, pivotOffset.y, pivotOffset.z);\n\t\t\t\t\t\t\t\t\t\telement._screenTransform.mul2(element._parentWorldTransform, matC).mul(matB).mul(matA);\n\t\t\t\t\t\t\t\t\t\telement._cornersDirty = true;\n\t\t\t\t\t\t\t\t\t\telement._canvasCornersDirty = true;\n\t\t\t\t\t\t\t\t\t\telement._worldCornersDirty = true;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.worldTransform.copy(element._modelTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._dirtyWorld = false;\n\t\t\t\t}\n\t\t}\n\t\t_onInsert(parent) {\n\t\t\t\tconst result = this._parseUpToScreen();\n\t\t\t\tthis.entity._dirtifyWorld();\n\t\t\t\tthis._updateScreen(result.screen);\n\t\t\t\tthis._dirtifyMask();\n\t\t}\n\t\t_dirtifyMask() {\n\t\t\t\tlet current = this.entity;\n\t\t\t\twhile(current){\n\t\t\t\t\t\tconst next = current.parent;\n\t\t\t\t\t\tif ((next === null || next.screen) && current.element) {\n\t\t\t\t\t\t\t\tif (!this.system._prerender || !this.system._prerender.length) {\n\t\t\t\t\t\t\t\t\t\tthis.system._prerender = [];\n\t\t\t\t\t\t\t\t\t\tthis.system.app.once('prerender', this._onPrerender, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst i = this.system._prerender.indexOf(this.entity);\n\t\t\t\t\t\t\t\tif (i >= 0) {\n\t\t\t\t\t\t\t\t\t\tthis.system._prerender.splice(i, 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst j = this.system._prerender.indexOf(current);\n\t\t\t\t\t\t\t\tif (j < 0) {\n\t\t\t\t\t\t\t\t\t\tthis.system._prerender.push(current);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcurrent = next;\n\t\t\t\t}\n\t\t}\n\t\t_onPrerender() {\n\t\t\t\tfor(let i = 0; i < this.system._prerender.length; i++){\n\t\t\t\t\t\tconst mask = this.system._prerender[i];\n\t\t\t\t\t\tif (mask.element) {\n\t\t\t\t\t\t\t\tconst depth = 1;\n\t\t\t\t\t\t\t\tmask.element.syncMask(depth);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.system._prerender.length = 0;\n\t\t}\n\t\t_bindScreen(screen) {\n\t\t\t\tscreen._bindElement(this);\n\t\t}\n\t\t_unbindScreen(screen) {\n\t\t\t\tscreen._unbindElement(this);\n\t\t}\n\t\t_updateScreen(screen) {\n\t\t\t\tif (this.screen && this.screen !== screen) {\n\t\t\t\t\t\tthis._unbindScreen(this.screen.screen);\n\t\t\t\t}\n\t\t\t\tconst previousScreen = this.screen;\n\t\t\t\tthis.screen = screen;\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tthis._bindScreen(this.screen.screen);\n\t\t\t\t}\n\t\t\t\tthis._calculateSize(this._hasSplitAnchorsX, this._hasSplitAnchorsY);\n\t\t\t\tthis.fire('set:screen', this.screen, previousScreen);\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tconst children = this.entity.children;\n\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\tif (children[i].element) {\n\t\t\t\t\t\t\t\tchildren[i].element._updateScreen(screen);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tthis.screen.screen.syncDrawOrder();\n\t\t\t\t}\n\t\t}\n\t\tsyncMask(depth) {\n\t\t\t\tconst result = this._parseUpToScreen();\n\t\t\t\tthis._updateMask(result.mask, depth);\n\t\t}\n\t\t_setMaskedBy(mask) {\n\t\t\t\tconst renderableElement = this._image || this._text;\n\t\t\t\tif (mask) {\n\t\t\t\t\t\tconst ref = mask.element._image._maskRef;\n\t\t\t\t\t\trenderableElement?._setStencil(new StencilParameters({\n\t\t\t\t\t\t\t\tref: ref,\n\t\t\t\t\t\t\t\tfunc: FUNC_EQUAL\n\t\t\t\t\t\t}));\n\t\t\t\t\t\tthis._maskedBy = mask;\n\t\t\t\t} else {\n\t\t\t\t\t\trenderableElement?._setStencil(null);\n\t\t\t\t\t\tthis._maskedBy = null;\n\t\t\t\t}\n\t\t}\n\t\t_updateMask(currentMask, depth) {\n\t\t\t\tif (currentMask) {\n\t\t\t\t\t\tthis._setMaskedBy(currentMask);\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tconst ref = currentMask.element._image._maskRef;\n\t\t\t\t\t\t\t\tconst sp = new StencilParameters({\n\t\t\t\t\t\t\t\t\t\tref: ref,\n\t\t\t\t\t\t\t\t\t\tfunc: FUNC_EQUAL,\n\t\t\t\t\t\t\t\t\t\tzpass: STENCILOP_INCREMENT\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._image._setStencil(sp);\n\t\t\t\t\t\t\t\tthis._image._maskRef = depth;\n\t\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\t\tcurrentMask = this.entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = this.entity.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\tchildren[i].element?._updateMask(currentMask, depth);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.mask) depth--;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setMaskedBy(null);\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tconst sp = new StencilParameters({\n\t\t\t\t\t\t\t\t\t\tref: depth,\n\t\t\t\t\t\t\t\t\t\tfunc: FUNC_ALWAYS,\n\t\t\t\t\t\t\t\t\t\tzpass: STENCILOP_REPLACE\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._image._setStencil(sp);\n\t\t\t\t\t\t\t\tthis._image._maskRef = depth;\n\t\t\t\t\t\t\t\tdepth++;\n\t\t\t\t\t\t\t\tcurrentMask = this.entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = this.entity.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\tchildren[i].element?._updateMask(currentMask, depth);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.mask) {\n\t\t\t\t\t\t\t\tdepth--;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_parseUpToScreen() {\n\t\t\t\tconst result = {\n\t\t\t\t\t\tscreen: null,\n\t\t\t\t\t\tmask: null\n\t\t\t\t};\n\t\t\t\tlet parent = this.entity._parent;\n\t\t\t\twhile(parent && !parent.screen){\n\t\t\t\t\t\tif (parent.element && parent.element.mask) {\n\t\t\t\t\t\t\t\tif (!result.mask) result.mask = parent;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparent = parent.parent;\n\t\t\t\t}\n\t\t\t\tif (parent && parent.screen) {\n\t\t\t\t\t\tresult.screen = parent;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_onScreenResize(res) {\n\t\t\t\tthis._anchorDirty = true;\n\t\t\t\tthis._cornersDirty = true;\n\t\t\t\tthis._worldCornersDirty = true;\n\t\t\t\tthis._calculateSize(this._hasSplitAnchorsX, this._hasSplitAnchorsY);\n\t\t\t\tthis.fire('screen:set:resolution', res);\n\t\t}\n\t\t_onScreenSpaceChange() {\n\t\t\t\tthis.fire('screen:set:screenspace', this.screen.screen.screenSpace);\n\t\t}\n\t\t_onScreenRemove() {\n\t\t\t\tif (this.screen) {\n\t\t\t\t\t\tif (this.screen._destroying) {\n\t\t\t\t\t\t\t\tthis.screen = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._updateScreen(null);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_calculateLocalAnchors() {\n\t\t\t\tlet resx = 1000;\n\t\t\t\tlet resy = 1000;\n\t\t\t\tconst parent = this.entity._parent;\n\t\t\t\tif (parent && parent.element) {\n\t\t\t\t\t\tresx = parent.element.calculatedWidth;\n\t\t\t\t\t\tresy = parent.element.calculatedHeight;\n\t\t\t\t} else if (this.screen) {\n\t\t\t\t\t\tconst res = this.screen.screen.resolution;\n\t\t\t\t\t\tconst scale = this.screen.screen.scale;\n\t\t\t\t\t\tresx = res.x / scale;\n\t\t\t\t\t\tresy = res.y / scale;\n\t\t\t\t}\n\t\t\t\tthis._localAnchor.set(this._anchor.x * resx, this._anchor.y * resy, this._anchor.z * resx, this._anchor.w * resy);\n\t\t}\n\t\tgetOffsetPosition(x, y) {\n\t\t\t\tconst p = this.entity.getLocalPosition().clone();\n\t\t\t\tp.x += x;\n\t\t\t\tp.y += y;\n\t\t\t\tthis._screenToWorld.transformPoint(p, p);\n\t\t\t\treturn p;\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addModelToLayers(this._image ? this._image._renderable.model : this._text._model);\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tlayer.addMeshInstances(this._image._renderable.model.meshInstances);\n\t\t\t\t} else if (this._text) {\n\t\t\t\t\t\tlayer.addMeshInstances(this._text._model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tlayer.removeMeshInstances(this._image._renderable.model.meshInstances);\n\t\t\t\t} else if (this._text) {\n\t\t\t\t\t\tlayer.removeMeshInstances(this._text._model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tthis._image.onEnable();\n\t\t\t\t}\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\tthis._text.onEnable();\n\t\t\t\t}\n\t\t\t\tif (this._group) {\n\t\t\t\t\t\tthis._group.onEnable();\n\t\t\t\t}\n\t\t\t\tif (this.useInput && this.system.app.elementInput) {\n\t\t\t\t\t\tthis.system.app.elementInput.addElement(this);\n\t\t\t\t}\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.ELEMENT, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tthis.fire('enableelement');\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this._image) this._image.onDisable();\n\t\t\t\tif (this._text) this._text.onDisable();\n\t\t\t\tif (this._group) this._group.onDisable();\n\t\t\t\tif (this.system.app.elementInput && this.useInput) {\n\t\t\t\t\t\tthis.system.app.elementInput.removeElement(this);\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.ELEMENT, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tthis.fire('disableelement');\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.entity.off('insert', this._onInsert, this);\n\t\t\t\tthis._unpatch();\n\t\t\t\tif (this._image) {\n\t\t\t\t\t\tthis._image.destroy();\n\t\t\t\t}\n\t\t\t\tif (this._text) {\n\t\t\t\t\t\tthis._text.destroy();\n\t\t\t\t}\n\t\t\t\tif (this.system.app.elementInput && this.useInput) {\n\t\t\t\t\t\tthis.system.app.elementInput.removeElement(this);\n\t\t\t\t}\n\t\t\t\tif (this.screen && this.screen.screen) {\n\t\t\t\t\t\tthis._unbindScreen(this.screen.screen);\n\t\t\t\t\t\tthis.screen.screen.syncDrawOrder();\n\t\t\t\t}\n\t\t\t\tthis.off();\n\t\t}\n\t\t_calculateSize(propagateCalculatedWidth, propagateCalculatedHeight) {\n\t\t\t\tif (!this.entity._parent && !this.screen) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calculateLocalAnchors();\n\t\t\t\tconst newWidth = this._absRight - this._absLeft;\n\t\t\t\tconst newHeight = this._absTop - this._absBottom;\n\t\t\t\tif (propagateCalculatedWidth) {\n\t\t\t\t\t\tthis._setWidth(newWidth);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setCalculatedWidth(newWidth, false);\n\t\t\t\t}\n\t\t\t\tif (propagateCalculatedHeight) {\n\t\t\t\t\t\tthis._setHeight(newHeight);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setCalculatedHeight(newHeight, false);\n\t\t\t\t}\n\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\tp.x = this._margin.x + this._calculatedWidth * this._pivot.x;\n\t\t\t\tp.y = this._margin.y + this._calculatedHeight * this._pivot.y;\n\t\t\t\tthis.entity.setLocalPosition(p);\n\t\t\t\tthis._sizeDirty = false;\n\t\t}\n\t\t_setWidth(w) {\n\t\t\t\tthis._width = w;\n\t\t\t\tthis._setCalculatedWidth(w, false);\n\t\t\t\tthis.fire('set:width', this._width);\n\t\t}\n\t\t_setHeight(h) {\n\t\t\t\tthis._height = h;\n\t\t\t\tthis._setCalculatedHeight(h, false);\n\t\t\t\tthis.fire('set:height', this._height);\n\t\t}\n\t\t_setCalculatedWidth(value, updateMargins) {\n\t\t\t\tif (Math.abs(value - this._calculatedWidth) <= 1e-4) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calculatedWidth = value;\n\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\tif (updateMargins) {\n\t\t\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\t\t\tconst pvt = this._pivot;\n\t\t\t\t\t\tthis._margin.x = p.x - this._calculatedWidth * pvt.x;\n\t\t\t\t\t\tthis._margin.z = this._localAnchor.z - this._localAnchor.x - this._calculatedWidth - this._margin.x;\n\t\t\t\t}\n\t\t\t\tthis._flagChildrenAsDirty();\n\t\t\t\tthis.fire('set:calculatedWidth', this._calculatedWidth);\n\t\t\t\tthis.fire('resize', this._calculatedWidth, this._calculatedHeight);\n\t\t}\n\t\t_setCalculatedHeight(value, updateMargins) {\n\t\t\t\tif (Math.abs(value - this._calculatedHeight) <= 1e-4) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calculatedHeight = value;\n\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\tif (updateMargins) {\n\t\t\t\t\t\tconst p = this.entity.getLocalPosition();\n\t\t\t\t\t\tconst pvt = this._pivot;\n\t\t\t\t\t\tthis._margin.y = p.y - this._calculatedHeight * pvt.y;\n\t\t\t\t\t\tthis._margin.w = this._localAnchor.w - this._localAnchor.y - this._calculatedHeight - this._margin.y;\n\t\t\t\t}\n\t\t\t\tthis._flagChildrenAsDirty();\n\t\t\t\tthis.fire('set:calculatedHeight', this._calculatedHeight);\n\t\t\t\tthis.fire('resize', this._calculatedWidth, this._calculatedHeight);\n\t\t}\n\t\t_flagChildrenAsDirty() {\n\t\t\t\tconst c = this.entity._children;\n\t\t\t\tfor(let i = 0, l = c.length; i < l; i++){\n\t\t\t\t\t\tif (c[i].element) {\n\t\t\t\t\t\t\t\tc[i].element._anchorDirty = true;\n\t\t\t\t\t\t\t\tc[i].element._sizeDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddModelToLayers(model) {\n\t\t\t\tthis._addedModels.push(model);\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances(model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tremoveModelFromLayers(model) {\n\t\t\t\tconst idx = this._addedModels.indexOf(model);\n\t\t\t\tif (idx >= 0) {\n\t\t\t\t\t\tthis._addedModels.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlayer.removeMeshInstances(model.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tgetMaskOffset() {\n\t\t\t\tconst frame = this.system.app.frame;\n\t\t\t\tif (this._offsetReadAt !== frame) {\n\t\t\t\t\t\tthis._maskOffset = 0.5;\n\t\t\t\t\t\tthis._offsetReadAt = frame;\n\t\t\t\t}\n\t\t\t\tconst mo = this._maskOffset;\n\t\t\t\tthis._maskOffset -= 0.001;\n\t\t\t\treturn mo;\n\t\t}\n\t\tisVisibleForCamera(camera) {\n\t\t\t\tlet clipL, clipR, clipT, clipB;\n\t\t\t\tif (this.maskedBy) {\n\t\t\t\t\t\tconst corners = this.maskedBy.element.screenCorners;\n\t\t\t\t\t\tclipL = Math.min(Math.min(corners[0].x, corners[1].x), Math.min(corners[2].x, corners[3].x));\n\t\t\t\t\t\tclipR = Math.max(Math.max(corners[0].x, corners[1].x), Math.max(corners[2].x, corners[3].x));\n\t\t\t\t\t\tclipB = Math.min(Math.min(corners[0].y, corners[1].y), Math.min(corners[2].y, corners[3].y));\n\t\t\t\t\t\tclipT = Math.max(Math.max(corners[0].y, corners[1].y), Math.max(corners[2].y, corners[3].y));\n\t\t\t\t} else {\n\t\t\t\t\t\tconst sw = this.system.app.graphicsDevice.width;\n\t\t\t\t\t\tconst sh = this.system.app.graphicsDevice.height;\n\t\t\t\t\t\tconst cameraWidth = camera._rect.z * sw;\n\t\t\t\t\t\tconst cameraHeight = camera._rect.w * sh;\n\t\t\t\t\t\tclipL = camera._rect.x * sw;\n\t\t\t\t\t\tclipR = clipL + cameraWidth;\n\t\t\t\t\t\tclipT = (1 - camera._rect.y) * sh;\n\t\t\t\t\t\tclipB = clipT - cameraHeight;\n\t\t\t\t}\n\t\t\t\tconst hitCorners = this.screenCorners;\n\t\t\t\tconst left = Math.min(Math.min(hitCorners[0].x, hitCorners[1].x), Math.min(hitCorners[2].x, hitCorners[3].x));\n\t\t\t\tconst right = Math.max(Math.max(hitCorners[0].x, hitCorners[1].x), Math.max(hitCorners[2].x, hitCorners[3].x));\n\t\t\t\tconst bottom = Math.min(Math.min(hitCorners[0].y, hitCorners[1].y), Math.min(hitCorners[2].y, hitCorners[3].y));\n\t\t\t\tconst top = Math.max(Math.max(hitCorners[0].y, hitCorners[1].y), Math.max(hitCorners[2].y, hitCorners[3].y));\n\t\t\t\tif (right < clipL || left > clipR || bottom > clipT || top < clipB) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\t_isScreenSpace() {\n\t\t\t\tif (this.screen && this.screen.screen) {\n\t\t\t\t\t\treturn this.screen.screen.screenSpace;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_isScreenCulled() {\n\t\t\t\tif (this.screen && this.screen.screen) {\n\t\t\t\t\t\treturn this.screen.screen.cull;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_dirtyBatch() {\n\t\t\t\tif (this.batchGroupId !== -1) {\n\t\t\t\t\t\tthis.system.app.batcher?.markGroupDirty(this.batchGroupId);\n\t\t\t\t}\n\t\t}\n}\n\nclass ElementComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$f = [\n\t\t'enabled'\n];\nclass ElementComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'element';\n\t\t\t\tthis.ComponentType = ElementComponent;\n\t\t\t\tthis.DataType = ElementComponentData;\n\t\t\t\tthis.schema = _schema$f;\n\t\t\t\tthis._unicodeConverter = null;\n\t\t\t\tthis._rtlReorder = null;\n\t\t\t\tthis._defaultTexture = new Texture(app.graphicsDevice, {\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tname: 'element-system'\n\t\t\t\t});\n\t\t\t\tconst pixels = this._defaultTexture.lock();\n\t\t\t\tconst pixelData = new Uint8Array(4);\n\t\t\t\tpixelData[0] = 255.0;\n\t\t\t\tpixelData[1] = 255.0;\n\t\t\t\tpixelData[2] = 255.0;\n\t\t\t\tpixelData[3] = 255.0;\n\t\t\t\tpixels.set(pixelData);\n\t\t\t\tthis._defaultTexture.unlock();\n\t\t\t\tthis.defaultImageMaterial = null;\n\t\t\t\tthis.defaultImage9SlicedMaterial = null;\n\t\t\t\tthis.defaultImage9TiledMaterial = null;\n\t\t\t\tthis.defaultImageMaskMaterial = null;\n\t\t\t\tthis.defaultImage9SlicedMaskMaterial = null;\n\t\t\t\tthis.defaultImage9TiledMaskMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial = null;\n\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial = null;\n\t\t\t\tthis._defaultTextMaterials = {};\n\t\t\t\tthis.defaultImageMaterials = [];\n\t\t\t\tthis.on('add', this.onAddComponent, this);\n\t\t\t\tthis.on('beforeremove', this.onRemoveComponent, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis._defaultTexture.destroy();\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent._beingInitialized = true;\n\t\t\t\tif (data.anchor !== undefined) {\n\t\t\t\t\t\tif (data.anchor instanceof Vec4) {\n\t\t\t\t\t\t\t\tcomponent.anchor.copy(data.anchor);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.anchor.set(data.anchor[0], data.anchor[1], data.anchor[2], data.anchor[3]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (data.pivot !== undefined) {\n\t\t\t\t\t\tif (data.pivot instanceof Vec2) {\n\t\t\t\t\t\t\t\tcomponent.pivot.copy(data.pivot);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.pivot.set(data.pivot[0], data.pivot[1]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst splitHorAnchors = Math.abs(component.anchor.x - component.anchor.z) > 0.001;\n\t\t\t\tconst splitVerAnchors = Math.abs(component.anchor.y - component.anchor.w) > 0.001;\n\t\t\t\tlet _marginChange = false;\n\t\t\t\tlet color;\n\t\t\t\tif (data.margin !== undefined) {\n\t\t\t\t\t\tif (data.margin instanceof Vec4) {\n\t\t\t\t\t\t\t\tcomponent.margin.copy(data.margin);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent._margin.set(data.margin[0], data.margin[1], data.margin[2], data.margin[3]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.left !== undefined) {\n\t\t\t\t\t\tcomponent._margin.x = data.left;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.bottom !== undefined) {\n\t\t\t\t\t\tcomponent._margin.y = data.bottom;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.right !== undefined) {\n\t\t\t\t\t\tcomponent._margin.z = data.right;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (data.top !== undefined) {\n\t\t\t\t\t\tcomponent._margin.w = data.top;\n\t\t\t\t\t\t_marginChange = true;\n\t\t\t\t}\n\t\t\t\tif (_marginChange) {\n\t\t\t\t\t\tcomponent.margin = component._margin;\n\t\t\t\t}\n\t\t\t\tlet shouldForceSetAnchor = false;\n\t\t\t\tif (data.width !== undefined && !splitHorAnchors) {\n\t\t\t\t\t\tcomponent.width = data.width;\n\t\t\t\t} else if (splitHorAnchors) {\n\t\t\t\t\t\tshouldForceSetAnchor = true;\n\t\t\t\t}\n\t\t\t\tif (data.height !== undefined && !splitVerAnchors) {\n\t\t\t\t\t\tcomponent.height = data.height;\n\t\t\t\t} else if (splitVerAnchors) {\n\t\t\t\t\t\tshouldForceSetAnchor = true;\n\t\t\t\t}\n\t\t\t\tif (shouldForceSetAnchor) {\n\t\t\t\t\t\tcomponent.anchor = component.anchor;\n\t\t\t\t}\n\t\t\t\tif (data.enabled !== undefined) {\n\t\t\t\t\t\tcomponent.enabled = data.enabled;\n\t\t\t\t}\n\t\t\t\tif (data.useInput !== undefined) {\n\t\t\t\t\t\tcomponent.useInput = data.useInput;\n\t\t\t\t}\n\t\t\t\tif (data.fitMode !== undefined) {\n\t\t\t\t\t\tcomponent.fitMode = data.fitMode;\n\t\t\t\t}\n\t\t\t\tcomponent.batchGroupId = data.batchGroupId === undefined || data.batchGroupId === null ? -1 : data.batchGroupId;\n\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\tcomponent.layers = data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tif (data.type !== undefined) {\n\t\t\t\t\t\tcomponent.type = data.type;\n\t\t\t\t}\n\t\t\t\tif (component.type === ELEMENTTYPE_IMAGE) {\n\t\t\t\t\t\tif (data.rect !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.rect = data.rect;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.color !== undefined) {\n\t\t\t\t\t\t\t\tcolor = data.color;\n\t\t\t\t\t\t\t\tif (!(color instanceof Color)) {\n\t\t\t\t\t\t\t\t\t\tcolor = new Color(data.color[0], data.color[1], data.color[2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomponent.color = color;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.opacity !== undefined) component.opacity = data.opacity;\n\t\t\t\t\t\tif (data.textureAsset !== undefined) component.textureAsset = data.textureAsset;\n\t\t\t\t\t\tif (data.texture) component.texture = data.texture;\n\t\t\t\t\t\tif (data.spriteAsset !== undefined) component.spriteAsset = data.spriteAsset;\n\t\t\t\t\t\tif (data.sprite) component.sprite = data.sprite;\n\t\t\t\t\t\tif (data.spriteFrame !== undefined) component.spriteFrame = data.spriteFrame;\n\t\t\t\t\t\tif (data.pixelsPerUnit !== undefined && data.pixelsPerUnit !== null) component.pixelsPerUnit = data.pixelsPerUnit;\n\t\t\t\t\t\tif (data.materialAsset !== undefined) component.materialAsset = data.materialAsset;\n\t\t\t\t\t\tif (data.material) component.material = data.material;\n\t\t\t\t\t\tif (data.mask !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.mask = data.mask;\n\t\t\t\t\t\t}\n\t\t\t\t} else if (component.type === ELEMENTTYPE_TEXT) {\n\t\t\t\t\t\tif (data.autoWidth !== undefined) component.autoWidth = data.autoWidth;\n\t\t\t\t\t\tif (data.autoHeight !== undefined) component.autoHeight = data.autoHeight;\n\t\t\t\t\t\tif (data.rtlReorder !== undefined) component.rtlReorder = data.rtlReorder;\n\t\t\t\t\t\tif (data.unicodeConverter !== undefined) component.unicodeConverter = data.unicodeConverter;\n\t\t\t\t\t\tif (data.text !== null && data.text !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.text = data.text;\n\t\t\t\t\t\t} else if (data.key !== null && data.key !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.key = data.key;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.color !== undefined) {\n\t\t\t\t\t\t\t\tcolor = data.color;\n\t\t\t\t\t\t\t\tif (!(color instanceof Color)) {\n\t\t\t\t\t\t\t\t\t\tcolor = new Color(color[0], color[1], color[2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcomponent.color = color;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.opacity !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.opacity = data.opacity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.spacing !== undefined) component.spacing = data.spacing;\n\t\t\t\t\t\tif (data.fontSize !== undefined) {\n\t\t\t\t\t\t\t\tcomponent.fontSize = data.fontSize;\n\t\t\t\t\t\t\t\tif (!data.lineHeight) component.lineHeight = data.fontSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.lineHeight !== undefined) component.lineHeight = data.lineHeight;\n\t\t\t\t\t\tif (data.maxLines !== undefined) component.maxLines = data.maxLines;\n\t\t\t\t\t\tif (data.wrapLines !== undefined) component.wrapLines = data.wrapLines;\n\t\t\t\t\t\tif (data.minFontSize !== undefined) component.minFontSize = data.minFontSize;\n\t\t\t\t\t\tif (data.maxFontSize !== undefined) component.maxFontSize = data.maxFontSize;\n\t\t\t\t\t\tif (data.autoFitWidth) component.autoFitWidth = data.autoFitWidth;\n\t\t\t\t\t\tif (data.autoFitHeight) component.autoFitHeight = data.autoFitHeight;\n\t\t\t\t\t\tif (data.fontAsset !== undefined) component.fontAsset = data.fontAsset;\n\t\t\t\t\t\tif (data.font !== undefined) component.font = data.font;\n\t\t\t\t\t\tif (data.alignment !== undefined) component.alignment = data.alignment;\n\t\t\t\t\t\tif (data.outlineColor !== undefined) component.outlineColor = data.outlineColor;\n\t\t\t\t\t\tif (data.outlineThickness !== undefined) component.outlineThickness = data.outlineThickness;\n\t\t\t\t\t\tif (data.shadowColor !== undefined) component.shadowColor = data.shadowColor;\n\t\t\t\t\t\tif (data.shadowOffset !== undefined) component.shadowOffset = data.shadowOffset;\n\t\t\t\t\t\tif (data.enableMarkup !== undefined) component.enableMarkup = data.enableMarkup;\n\t\t\t\t}\n\t\t\t\tconst result = component._parseUpToScreen();\n\t\t\t\tif (result.screen) {\n\t\t\t\t\t\tcomponent._updateScreen(result.screen);\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t\t\tcomponent._beingInitialized = false;\n\t\t\t\tif (component.type === ELEMENTTYPE_IMAGE && component._image._meshDirty) {\n\t\t\t\t\t\tcomponent._image._updateMesh(component._image.mesh);\n\t\t\t\t}\n\t\t}\n\t\tonAddComponent(entity, component) {\n\t\t\t\tentity.fire('element:add');\n\t\t}\n\t\tonRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst source = entity.element;\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: source.enabled,\n\t\t\t\t\t\twidth: source.width,\n\t\t\t\t\t\theight: source.height,\n\t\t\t\t\t\tanchor: source.anchor.clone(),\n\t\t\t\t\t\tpivot: source.pivot.clone(),\n\t\t\t\t\t\tmargin: source.margin.clone(),\n\t\t\t\t\t\talignment: source.alignment && source.alignment.clone() || source.alignment,\n\t\t\t\t\t\tautoWidth: source.autoWidth,\n\t\t\t\t\t\tautoHeight: source.autoHeight,\n\t\t\t\t\t\ttype: source.type,\n\t\t\t\t\t\trect: source.rect && source.rect.clone() || source.rect,\n\t\t\t\t\t\trtlReorder: source.rtlReorder,\n\t\t\t\t\t\tunicodeConverter: source.unicodeConverter,\n\t\t\t\t\t\tmaterialAsset: source.materialAsset,\n\t\t\t\t\t\tmaterial: source.material,\n\t\t\t\t\t\tcolor: source.color && source.color.clone() || source.color,\n\t\t\t\t\t\topacity: source.opacity,\n\t\t\t\t\t\ttextureAsset: source.textureAsset,\n\t\t\t\t\t\ttexture: source.texture,\n\t\t\t\t\t\tspriteAsset: source.spriteAsset,\n\t\t\t\t\t\tsprite: source.sprite,\n\t\t\t\t\t\tspriteFrame: source.spriteFrame,\n\t\t\t\t\t\tpixelsPerUnit: source.pixelsPerUnit,\n\t\t\t\t\t\tspacing: source.spacing,\n\t\t\t\t\t\tlineHeight: source.lineHeight,\n\t\t\t\t\t\twrapLines: source.wrapLines,\n\t\t\t\t\t\tlayers: source.layers,\n\t\t\t\t\t\tfontSize: source.fontSize,\n\t\t\t\t\t\tminFontSize: source.minFontSize,\n\t\t\t\t\t\tmaxFontSize: source.maxFontSize,\n\t\t\t\t\t\tautoFitWidth: source.autoFitWidth,\n\t\t\t\t\t\tautoFitHeight: source.autoFitHeight,\n\t\t\t\t\t\tmaxLines: source.maxLines,\n\t\t\t\t\t\tfontAsset: source.fontAsset,\n\t\t\t\t\t\tfont: source.font,\n\t\t\t\t\t\tuseInput: source.useInput,\n\t\t\t\t\t\tfitMode: source.fitMode,\n\t\t\t\t\t\tbatchGroupId: source.batchGroupId,\n\t\t\t\t\t\tmask: source.mask,\n\t\t\t\t\t\toutlineColor: source.outlineColor && source.outlineColor.clone() || source.outlineColor,\n\t\t\t\t\t\toutlineThickness: source.outlineThickness,\n\t\t\t\t\t\tshadowColor: source.shadowColor && source.shadowColor.clone() || source.shadowColor,\n\t\t\t\t\t\tshadowOffset: source.shadowOffset && source.shadowOffset.clone() || source.shadowOffset,\n\t\t\t\t\t\tenableMarkup: source.enableMarkup\n\t\t\t\t};\n\t\t\t\tif (source.key !== undefined && source.key !== null) {\n\t\t\t\t\t\tdata.key = source.key;\n\t\t\t\t} else {\n\t\t\t\t\t\tdata.text = source.text;\n\t\t\t\t}\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tgetTextElementMaterial(screenSpace, msdf, textAttibutes) {\n\t\t\t\tconst hash = (screenSpace && 1 << 0) | (msdf && 1 << 1) | (textAttibutes && 1 << 2);\n\t\t\t\tlet material = this._defaultTextMaterials[hash];\n\t\t\t\tif (material) {\n\t\t\t\t\t\treturn material;\n\t\t\t\t}\n\t\t\t\tlet name = 'TextMaterial';\n\t\t\t\tmaterial = new StandardMaterial();\n\t\t\t\tif (msdf) {\n\t\t\t\t\t\tmaterial.msdfMap = this._defaultTexture;\n\t\t\t\t\t\tmaterial.msdfTextAttribute = textAttibutes;\n\t\t\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\t} else {\n\t\t\t\t\t\tname = `Bitmap${name}`;\n\t\t\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\t\t\tmaterial.emissiveMap = this._defaultTexture;\n\t\t\t\t\t\tmaterial.opacityMap = this._defaultTexture;\n\t\t\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\t}\n\t\t\t\tif (screenSpace) {\n\t\t\t\t\t\tname = `ScreenSpace${name}`;\n\t\t\t\t\t\tmaterial.depthTest = false;\n\t\t\t\t}\n\t\t\t\tmaterial.name = `default${name}`;\n\t\t\t\tmaterial.useLighting = false;\n\t\t\t\tmaterial.useTonemap = false;\n\t\t\t\tmaterial.useFog = false;\n\t\t\t\tmaterial.useSkybox = false;\n\t\t\t\tmaterial.diffuse.set(0, 0, 0);\n\t\t\t\tmaterial.opacity = 0.5;\n\t\t\t\tmaterial.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\tmaterial.emissiveVertexColor = true;\n\t\t\t\tmaterial.update();\n\t\t\t\tthis._defaultTextMaterials[hash] = material;\n\t\t\t\treturn material;\n\t\t}\n\t\t_createBaseImageMaterial() {\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tmaterial.diffuse.set(0, 0, 0);\n\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\tmaterial.emissiveMap = this._defaultTexture;\n\t\t\t\tmaterial.opacityMap = this._defaultTexture;\n\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\tmaterial.useLighting = false;\n\t\t\t\tmaterial.useTonemap = false;\n\t\t\t\tmaterial.useFog = false;\n\t\t\t\tmaterial.useSkybox = false;\n\t\t\t\tmaterial.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\treturn material;\n\t\t}\n\t\tgetImageElementMaterial(screenSpace, mask, nineSliced, nineSliceTiled) {\n\t\t\t\tif (screenSpace) {\n\t\t\t\t\t\tif (mask) {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMask9SlicedMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.name = 'defaultScreenSpaceImageMask9SlicedMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9SlicedMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMask9SlicedMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMask9SlicedMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMask9TiledMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial = this.defaultScreenSpaceImage9TiledMaterial.clone();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.name = 'defaultScreenSpaceImageMask9TiledMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMask9TiledMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMask9TiledMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMask9TiledMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.name = 'defaultScreenSpaceImageMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMaskMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImage9SlicedMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.name = 'defaultScreenSpaceImage9SlicedMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9SlicedMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImage9SlicedMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImage9SlicedMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImage9TiledMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.name = 'defaultScreenSpaceImage9TiledMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImage9TiledMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImage9TiledMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImage9TiledMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultScreenSpaceImageMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial.name = 'defaultScreenSpaceImageMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial.depthTest = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultScreenSpaceImageMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultScreenSpaceImageMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultScreenSpaceImageMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (mask) {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9SlicedMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.name = 'defaultImage9SlicedMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9SlicedMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9SlicedMaskMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9TiledMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.name = 'defaultImage9TiledMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9TiledMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9TiledMaskMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImageMaskMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.name = 'defaultImageMaskMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.alphaTest = 1;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.redWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.greenWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.blueWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.alphaWrite = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaskMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImageMaskMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImageMaskMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (nineSliced) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9SlicedMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial.name = 'defaultImage9SlicedMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9SlicedMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9SlicedMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9SlicedMaterial;\n\t\t\t\t\t\t\t\t} else if (nineSliceTiled) {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImage9TiledMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial.name = 'defaultImage9TiledMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImage9TiledMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImage9TiledMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImage9TiledMaterial;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!this.defaultImageMaterial) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterial = this._createBaseImageMaterial();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterial.name = 'defaultImageMaterial';\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterial.update();\n\t\t\t\t\t\t\t\t\t\t\t\tthis.defaultImageMaterials.push(this.defaultImageMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn this.defaultImageMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tregisterUnicodeConverter(func) {\n\t\t\t\tthis._unicodeConverter = func;\n\t\t}\n\t\tregisterRtlReorder(func) {\n\t\t\t\tthis._rtlReorder = func;\n\t\t}\n\t\tgetUnicodeConverter() {\n\t\t\t\treturn this._unicodeConverter;\n\t\t}\n\t\tgetRtlReorder() {\n\t\t\t\treturn this._rtlReorder;\n\t\t}\n}\n\nconst MOTION_FREE = 'free';\nconst MOTION_LIMITED = 'limited';\nconst MOTION_LOCKED = 'locked';\n\nconst properties$1 = [\n\t\t'angularDampingX',\n\t\t'angularDampingY',\n\t\t'angularDampingZ',\n\t\t'angularEquilibriumX',\n\t\t'angularEquilibriumY',\n\t\t'angularEquilibriumZ',\n\t\t'angularLimitsX',\n\t\t'angularLimitsY',\n\t\t'angularLimitsZ',\n\t\t'angularMotionX',\n\t\t'angularMotionY',\n\t\t'angularMotionZ',\n\t\t'angularSpringX',\n\t\t'angularSpringY',\n\t\t'angularSpringZ',\n\t\t'angularStiffnessX',\n\t\t'angularStiffnessY',\n\t\t'angularStiffnessZ',\n\t\t'breakForce',\n\t\t'enableCollision',\n\t\t'enabled',\n\t\t'entityA',\n\t\t'entityB',\n\t\t'linearDampingX',\n\t\t'linearDampingY',\n\t\t'linearDampingZ',\n\t\t'linearEquilibriumX',\n\t\t'linearEquilibriumY',\n\t\t'linearEquilibriumZ',\n\t\t'linearLimitsX',\n\t\t'linearLimitsY',\n\t\t'linearLimitsZ',\n\t\t'linearMotionX',\n\t\t'linearMotionY',\n\t\t'linearMotionZ',\n\t\t'linearSpringX',\n\t\t'linearSpringY',\n\t\t'linearSpringZ',\n\t\t'linearStiffnessX',\n\t\t'linearStiffnessY',\n\t\t'linearStiffnessZ'\n];\nclass JointComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity);\n\t\t\t\tthis._constraint = null;\n\t\t\t\tthis._entityA = null;\n\t\t\t\tthis._entityB = null;\n\t\t\t\tthis._breakForce = 3.4e+38;\n\t\t\t\tthis._enableCollision = true;\n\t\t\t\tthis._linearMotionX = MOTION_LOCKED;\n\t\t\t\tthis._linearLimitsX = new Vec2(0, 0);\n\t\t\t\tthis._linearSpringX = false;\n\t\t\t\tthis._linearStiffnessX = 0;\n\t\t\t\tthis._linearDampingX = 1;\n\t\t\t\tthis._linearEquilibriumX = 0;\n\t\t\t\tthis._linearMotionY = MOTION_LOCKED;\n\t\t\t\tthis._linearLimitsY = new Vec2(0, 0);\n\t\t\t\tthis._linearSpringY = false;\n\t\t\t\tthis._linearStiffnessY = 0;\n\t\t\t\tthis._linearDampingY = 1;\n\t\t\t\tthis._linearEquilibriumY = 0;\n\t\t\t\tthis._linearMotionZ = MOTION_LOCKED;\n\t\t\t\tthis._linearLimitsZ = new Vec2(0, 0);\n\t\t\t\tthis._linearSpringZ = false;\n\t\t\t\tthis._linearStiffnessZ = 0;\n\t\t\t\tthis._linearDampingZ = 1;\n\t\t\t\tthis._linearEquilibriumZ = 0;\n\t\t\t\tthis._angularMotionX = MOTION_LOCKED;\n\t\t\t\tthis._angularLimitsX = new Vec2(0, 0);\n\t\t\t\tthis._angularSpringX = false;\n\t\t\t\tthis._angularStiffnessX = 0;\n\t\t\t\tthis._angularDampingX = 1;\n\t\t\t\tthis._angularEquilibriumX = 0;\n\t\t\t\tthis._angularMotionY = MOTION_LOCKED;\n\t\t\t\tthis._angularLimitsY = new Vec2(0, 0);\n\t\t\t\tthis._angularSpringY = false;\n\t\t\t\tthis._angularStiffnessY = 0;\n\t\t\t\tthis._angularDampingY = 1;\n\t\t\t\tthis._angularEquilibriumY = 0;\n\t\t\t\tthis._angularMotionZ = MOTION_LOCKED;\n\t\t\t\tthis._angularLimitsZ = new Vec2(0, 0);\n\t\t\t\tthis._angularSpringZ = false;\n\t\t\t\tthis._angularEquilibriumZ = 0;\n\t\t\t\tthis._angularDampingZ = 1;\n\t\t\t\tthis._angularStiffnessZ = 0;\n\t\t\t\tthis.on('set_enabled', this._onSetEnabled, this);\n\t\t}\n\t\tset entityA(body) {\n\t\t\t\tthis._destroyConstraint();\n\t\t\t\tthis._entityA = body;\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tget entityA() {\n\t\t\t\treturn this._entityA;\n\t\t}\n\t\tset entityB(body) {\n\t\t\t\tthis._destroyConstraint();\n\t\t\t\tthis._entityB = body;\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tget entityB() {\n\t\t\t\treturn this._entityB;\n\t\t}\n\t\tset breakForce(force) {\n\t\t\t\tif (this._constraint && this._breakForce !== force) {\n\t\t\t\t\t\tthis._constraint.setBreakingImpulseThreshold(force);\n\t\t\t\t\t\tthis._breakForce = force;\n\t\t\t\t}\n\t\t}\n\t\tget breakForce() {\n\t\t\t\treturn this._breakForce;\n\t\t}\n\t\tset enableCollision(enableCollision) {\n\t\t\t\tthis._destroyConstraint();\n\t\t\t\tthis._enableCollision = enableCollision;\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tget enableCollision() {\n\t\t\t\treturn this._enableCollision;\n\t\t}\n\t\tset angularLimitsX(limits) {\n\t\t\t\tif (!this._angularLimitsX.equals(limits)) {\n\t\t\t\t\t\tthis._angularLimitsX.copy(limits);\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularLimitsX() {\n\t\t\t\treturn this._angularLimitsX;\n\t\t}\n\t\tset angularMotionX(value) {\n\t\t\t\tif (this._angularMotionX !== value) {\n\t\t\t\t\t\tthis._angularMotionX = value;\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularMotionX() {\n\t\t\t\treturn this._angularMotionX;\n\t\t}\n\t\tset angularLimitsY(limits) {\n\t\t\t\tif (!this._angularLimitsY.equals(limits)) {\n\t\t\t\t\t\tthis._angularLimitsY.copy(limits);\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularLimitsY() {\n\t\t\t\treturn this._angularLimitsY;\n\t\t}\n\t\tset angularMotionY(value) {\n\t\t\t\tif (this._angularMotionY !== value) {\n\t\t\t\t\t\tthis._angularMotionY = value;\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularMotionY() {\n\t\t\t\treturn this._angularMotionY;\n\t\t}\n\t\tset angularLimitsZ(limits) {\n\t\t\t\tif (!this._angularLimitsZ.equals(limits)) {\n\t\t\t\t\t\tthis._angularLimitsZ.copy(limits);\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularLimitsZ() {\n\t\t\t\treturn this._angularLimitsZ;\n\t\t}\n\t\tset angularMotionZ(value) {\n\t\t\t\tif (this._angularMotionZ !== value) {\n\t\t\t\t\t\tthis._angularMotionZ = value;\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t}\n\t\t}\n\t\tget angularMotionZ() {\n\t\t\t\treturn this._angularMotionZ;\n\t\t}\n\t\tset linearLimitsX(limits) {\n\t\t\t\tif (!this._linearLimitsX.equals(limits)) {\n\t\t\t\t\t\tthis._linearLimitsX.copy(limits);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearLimitsX() {\n\t\t\t\treturn this._linearLimitsX;\n\t\t}\n\t\tset linearMotionX(value) {\n\t\t\t\tif (this._linearMotionX !== value) {\n\t\t\t\t\t\tthis._linearMotionX = value;\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearMotionX() {\n\t\t\t\treturn this._linearMotionX;\n\t\t}\n\t\tset linearLimitsY(limits) {\n\t\t\t\tif (!this._linearLimitsY.equals(limits)) {\n\t\t\t\t\t\tthis._linearLimitsY.copy(limits);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearLimitsY() {\n\t\t\t\treturn this._linearLimitsY;\n\t\t}\n\t\tset linearMotionY(value) {\n\t\t\t\tif (this._linearMotionY !== value) {\n\t\t\t\t\t\tthis._linearMotionY = value;\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearMotionY() {\n\t\t\t\treturn this._linearMotionY;\n\t\t}\n\t\tset linearLimitsZ(limits) {\n\t\t\t\tif (!this._linearLimitsZ.equals(limits)) {\n\t\t\t\t\t\tthis._linearLimitsZ.copy(limits);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearLimitsZ() {\n\t\t\t\treturn this._linearLimitsZ;\n\t\t}\n\t\tset linearMotionZ(value) {\n\t\t\t\tif (this._linearMotionZ !== value) {\n\t\t\t\t\t\tthis._linearMotionZ = value;\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t}\n\t\t}\n\t\tget linearMotionZ() {\n\t\t\t\treturn this._linearMotionZ;\n\t\t}\n\t\t_convertTransform(pcTransform, ammoTransform) {\n\t\t\t\tconst pos = pcTransform.getTranslation();\n\t\t\t\tconst rot = new Quat();\n\t\t\t\trot.setFromMat4(pcTransform);\n\t\t\t\tconst ammoVec = new Ammo.btVector3(pos.x, pos.y, pos.z);\n\t\t\t\tconst ammoQuat = new Ammo.btQuaternion(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\tammoTransform.setOrigin(ammoVec);\n\t\t\t\tammoTransform.setRotation(ammoQuat);\n\t\t\t\tAmmo.destroy(ammoVec);\n\t\t\t\tAmmo.destroy(ammoQuat);\n\t\t}\n\t\t_updateAngularLimits() {\n\t\t\t\tconst constraint = this._constraint;\n\t\t\t\tif (constraint) {\n\t\t\t\t\t\tlet lx, ly, lz, ux, uy, uz;\n\t\t\t\t\t\tif (this._angularMotionX === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlx = this._angularLimitsX.x * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tux = this._angularLimitsX.y * math.DEG_TO_RAD;\n\t\t\t\t\t\t} else if (this._angularMotionX === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlx = 1;\n\t\t\t\t\t\t\t\tux = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlx = ux = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._angularMotionY === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tly = this._angularLimitsY.x * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tuy = this._angularLimitsY.y * math.DEG_TO_RAD;\n\t\t\t\t\t\t} else if (this._angularMotionY === MOTION_FREE) {\n\t\t\t\t\t\t\t\tly = 1;\n\t\t\t\t\t\t\t\tuy = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tly = uy = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._angularMotionZ === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlz = this._angularLimitsZ.x * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\tuz = this._angularLimitsZ.y * math.DEG_TO_RAD;\n\t\t\t\t\t\t} else if (this._angularMotionZ === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlz = 1;\n\t\t\t\t\t\t\t\tuz = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlz = uz = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst limits = new Ammo.btVector3(lx, ly, lz);\n\t\t\t\t\t\tconstraint.setAngularLowerLimit(limits);\n\t\t\t\t\t\tlimits.setValue(ux, uy, uz);\n\t\t\t\t\t\tconstraint.setAngularUpperLimit(limits);\n\t\t\t\t\t\tAmmo.destroy(limits);\n\t\t\t\t}\n\t\t}\n\t\t_updateLinearLimits() {\n\t\t\t\tconst constraint = this._constraint;\n\t\t\t\tif (constraint) {\n\t\t\t\t\t\tlet lx, ly, lz, ux, uy, uz;\n\t\t\t\t\t\tif (this._linearMotionX === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlx = this._linearLimitsX.x;\n\t\t\t\t\t\t\t\tux = this._linearLimitsX.y;\n\t\t\t\t\t\t} else if (this._linearMotionX === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlx = 1;\n\t\t\t\t\t\t\t\tux = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlx = ux = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._linearMotionY === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tly = this._linearLimitsY.x;\n\t\t\t\t\t\t\t\tuy = this._linearLimitsY.y;\n\t\t\t\t\t\t} else if (this._linearMotionY === MOTION_FREE) {\n\t\t\t\t\t\t\t\tly = 1;\n\t\t\t\t\t\t\t\tuy = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tly = uy = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._linearMotionZ === MOTION_LIMITED) {\n\t\t\t\t\t\t\t\tlz = this._linearLimitsZ.x;\n\t\t\t\t\t\t\t\tuz = this._linearLimitsZ.y;\n\t\t\t\t\t\t} else if (this._linearMotionZ === MOTION_FREE) {\n\t\t\t\t\t\t\t\tlz = 1;\n\t\t\t\t\t\t\t\tuz = 0;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlz = uz = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst limits = new Ammo.btVector3(lx, ly, lz);\n\t\t\t\t\t\tconstraint.setLinearLowerLimit(limits);\n\t\t\t\t\t\tlimits.setValue(ux, uy, uz);\n\t\t\t\t\t\tconstraint.setLinearUpperLimit(limits);\n\t\t\t\t\t\tAmmo.destroy(limits);\n\t\t\t\t}\n\t\t}\n\t\t_createConstraint() {\n\t\t\t\tif (this._entityA && this._entityA.rigidbody) {\n\t\t\t\t\t\tthis._destroyConstraint();\n\t\t\t\t\t\tconst mat = new Mat4();\n\t\t\t\t\t\tconst bodyA = this._entityA.rigidbody.body;\n\t\t\t\t\t\tbodyA.activate();\n\t\t\t\t\t\tconst jointWtm = this.entity.getWorldTransform();\n\t\t\t\t\t\tconst entityAWtm = this._entityA.getWorldTransform();\n\t\t\t\t\t\tconst invEntityAWtm = entityAWtm.clone().invert();\n\t\t\t\t\t\tmat.mul2(invEntityAWtm, jointWtm);\n\t\t\t\t\t\tconst frameA = new Ammo.btTransform();\n\t\t\t\t\t\tthis._convertTransform(mat, frameA);\n\t\t\t\t\t\tif (this._entityB && this._entityB.rigidbody) {\n\t\t\t\t\t\t\t\tconst bodyB = this._entityB.rigidbody.body;\n\t\t\t\t\t\t\t\tbodyB.activate();\n\t\t\t\t\t\t\t\tconst entityBWtm = this._entityB.getWorldTransform();\n\t\t\t\t\t\t\t\tconst invEntityBWtm = entityBWtm.clone().invert();\n\t\t\t\t\t\t\t\tmat.mul2(invEntityBWtm, jointWtm);\n\t\t\t\t\t\t\t\tconst frameB = new Ammo.btTransform();\n\t\t\t\t\t\t\t\tthis._convertTransform(mat, frameB);\n\t\t\t\t\t\t\t\tthis._constraint = new Ammo.btGeneric6DofSpringConstraint(bodyA, bodyB, frameA, frameB, !this._enableCollision);\n\t\t\t\t\t\t\t\tAmmo.destroy(frameB);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._constraint = new Ammo.btGeneric6DofSpringConstraint(bodyA, frameA, !this._enableCollision);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tAmmo.destroy(frameA);\n\t\t\t\t\t\tconst axis = [\n\t\t\t\t\t\t\t\t'X',\n\t\t\t\t\t\t\t\t'Y',\n\t\t\t\t\t\t\t\t'Z',\n\t\t\t\t\t\t\t\t'X',\n\t\t\t\t\t\t\t\t'Y',\n\t\t\t\t\t\t\t\t'Z'\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfor(let i = 0; i < 6; i++){\n\t\t\t\t\t\t\t\tconst type = i < 3 ? '_linear' : '_angular';\n\t\t\t\t\t\t\t\tthis._constraint.enableSpring(i, this[`${type}Spring${axis[i]}`]);\n\t\t\t\t\t\t\t\tthis._constraint.setDamping(i, this[`${type}Damping${axis[i]}`]);\n\t\t\t\t\t\t\t\tthis._constraint.setEquilibriumPoint(i, this[`${type}Equilibrium${axis[i]}`]);\n\t\t\t\t\t\t\t\tthis._constraint.setStiffness(i, this[`${type}Stiffness${axis[i]}`]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._constraint.setBreakingImpulseThreshold(this._breakForce);\n\t\t\t\t\t\tthis._updateLinearLimits();\n\t\t\t\t\t\tthis._updateAngularLimits();\n\t\t\t\t\t\tconst app = this.system.app;\n\t\t\t\t\t\tconst dynamicsWorld = app.systems.rigidbody.dynamicsWorld;\n\t\t\t\t\t\tdynamicsWorld.addConstraint(this._constraint, !this._enableCollision);\n\t\t\t\t}\n\t\t}\n\t\t_destroyConstraint() {\n\t\t\t\tif (this._constraint) {\n\t\t\t\t\t\tconst app = this.system.app;\n\t\t\t\t\t\tconst dynamicsWorld = app.systems.rigidbody.dynamicsWorld;\n\t\t\t\t\t\tdynamicsWorld.removeConstraint(this._constraint);\n\t\t\t\t\t\tAmmo.destroy(this._constraint);\n\t\t\t\t\t\tthis._constraint = null;\n\t\t\t\t}\n\t\t}\n\t\tinitFromData(data) {\n\t\t\t\tfor (const prop of properties$1){\n\t\t\t\t\t\tif (data.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tif (data[prop] instanceof Vec2) {\n\t\t\t\t\t\t\t\t\t\tthis[`_${prop}`].copy(data[prop]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis[`_${prop}`] = data[prop];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._createConstraint();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._destroyConstraint();\n\t\t}\n\t\t_onSetEnabled(prop, old, value) {}\n\t\t_onBeforeRemove() {\n\t\t\t\tthis.fire('remove');\n\t\t}\n}\nconst functionMap = {\n\t\tDamping: 'setDamping',\n\t\tEquilibrium: 'setEquilibriumPoint',\n\t\tSpring: 'enableSpring',\n\t\tStiffness: 'setStiffness'\n};\n[\n\t\t'linear',\n\t\t'angular'\n].forEach((type)=>{\n\t\t[\n\t\t\t\t'Damping',\n\t\t\t\t'Equilibrium',\n\t\t\t\t'Spring',\n\t\t\t\t'Stiffness'\n\t\t].forEach((name)=>{\n\t\t\t\t[\n\t\t\t\t\t\t'X',\n\t\t\t\t\t\t'Y',\n\t\t\t\t\t\t'Z'\n\t\t\t\t].forEach((axis)=>{\n\t\t\t\t\t\tconst prop = type + name + axis;\n\t\t\t\t\t\tconst propInternal = `_${prop}`;\n\t\t\t\t\t\tlet index = type === 'linear' ? 0 : 3;\n\t\t\t\t\t\tif (axis === 'Y') index += 1;\n\t\t\t\t\t\tif (axis === 'Z') index += 2;\n\t\t\t\t\t\tObject.defineProperty(JointComponent.prototype, prop, {\n\t\t\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\t\t\treturn this[propInternal];\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\t\t\tif (this[propInternal] !== value) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis[propInternal] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._constraint[functionMap[name]](index, value);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t});\n});\n\nclass JointComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$e = [\n\t\t'enabled'\n];\nclass JointComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'joint';\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.ComponentType = JointComponent;\n\t\t\t\tthis.DataType = JointComponentData;\n\t\t\t\tthis.schema = _schema$e;\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent.initFromData(data);\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$e);\n\t\t}\n}\nComponent._buildAccessors(JointComponent.prototype, _schema$e);\n\nclass LayoutChildComponent extends Component {\n\t\tset minWidth(value) {\n\t\t\t\tif (value !== this._minWidth) {\n\t\t\t\t\t\tthis._minWidth = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget minWidth() {\n\t\t\t\treturn this._minWidth;\n\t\t}\n\t\tset minHeight(value) {\n\t\t\t\tif (value !== this._minHeight) {\n\t\t\t\t\t\tthis._minHeight = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget minHeight() {\n\t\t\t\treturn this._minHeight;\n\t\t}\n\t\tset maxWidth(value) {\n\t\t\t\tif (value !== this._maxWidth) {\n\t\t\t\t\t\tthis._maxWidth = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget maxWidth() {\n\t\t\t\treturn this._maxWidth;\n\t\t}\n\t\tset maxHeight(value) {\n\t\t\t\tif (value !== this._maxHeight) {\n\t\t\t\t\t\tthis._maxHeight = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget maxHeight() {\n\t\t\t\treturn this._maxHeight;\n\t\t}\n\t\tset fitWidthProportion(value) {\n\t\t\t\tif (value !== this._fitWidthProportion) {\n\t\t\t\t\t\tthis._fitWidthProportion = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget fitWidthProportion() {\n\t\t\t\treturn this._fitWidthProportion;\n\t\t}\n\t\tset fitHeightProportion(value) {\n\t\t\t\tif (value !== this._fitHeightProportion) {\n\t\t\t\t\t\tthis._fitHeightProportion = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget fitHeightProportion() {\n\t\t\t\treturn this._fitHeightProportion;\n\t\t}\n\t\tset excludeFromLayout(value) {\n\t\t\t\tif (value !== this._excludeFromLayout) {\n\t\t\t\t\t\tthis._excludeFromLayout = value;\n\t\t\t\t\t\tthis.fire('resize');\n\t\t\t\t}\n\t\t}\n\t\tget excludeFromLayout() {\n\t\t\t\treturn this._excludeFromLayout;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._minWidth = 0, this._minHeight = 0, this._maxWidth = null, this._maxHeight = null, this._fitWidthProportion = 0, this._fitHeightProportion = 0, this._excludeFromLayout = false;\n\t\t}\n}\n\nclass LayoutChildComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$d = [\n\t\t'enabled'\n];\nclass LayoutChildComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'layoutchild';\n\t\t\t\tthis.ComponentType = LayoutChildComponent;\n\t\t\t\tthis.DataType = LayoutChildComponentData;\n\t\t\t\tthis.schema = _schema$d;\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.enabled !== undefined) component.enabled = data.enabled;\n\t\t\t\tif (data.minWidth !== undefined) component.minWidth = data.minWidth;\n\t\t\t\tif (data.minHeight !== undefined) component.minHeight = data.minHeight;\n\t\t\t\tif (data.maxWidth !== undefined) component.maxWidth = data.maxWidth;\n\t\t\t\tif (data.maxHeight !== undefined) component.maxHeight = data.maxHeight;\n\t\t\t\tif (data.fitWidthProportion !== undefined) component.fitWidthProportion = data.fitWidthProportion;\n\t\t\t\tif (data.fitHeightProportion !== undefined) component.fitHeightProportion = data.fitHeightProportion;\n\t\t\t\tif (data.excludeFromLayout !== undefined) component.excludeFromLayout = data.excludeFromLayout;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst layoutChild = entity.layoutchild;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: layoutChild.enabled,\n\t\t\t\t\t\tminWidth: layoutChild.minWidth,\n\t\t\t\t\t\tminHeight: layoutChild.minHeight,\n\t\t\t\t\t\tmaxWidth: layoutChild.maxWidth,\n\t\t\t\t\t\tmaxHeight: layoutChild.maxHeight,\n\t\t\t\t\t\tfitWidthProportion: layoutChild.fitWidthProportion,\n\t\t\t\t\t\tfitHeightProportion: layoutChild.fitHeightProportion,\n\t\t\t\t\t\texcludeFromLayout: layoutChild.excludeFromLayout\n\t\t\t\t});\n\t\t}\n}\nComponent._buildAccessors(LayoutChildComponent.prototype, _schema$d);\n\nconst FITTING_NONE = 0;\nconst FITTING_STRETCH = 1;\nconst FITTING_SHRINK = 2;\nconst FITTING_BOTH = 3;\n\nconst AXIS_MAPPINGS = {};\nAXIS_MAPPINGS[ORIENTATION_HORIZONTAL] = {\n\t\taxis: 'x',\n\t\tsize: 'width',\n\t\tcalculatedSize: 'calculatedWidth',\n\t\tminSize: 'minWidth',\n\t\tmaxSize: 'maxWidth',\n\t\tfitting: 'widthFitting',\n\t\tfittingProportion: 'fitWidthProportion'\n};\nAXIS_MAPPINGS[ORIENTATION_VERTICAL] = {\n\t\taxis: 'y',\n\t\tsize: 'height',\n\t\tcalculatedSize: 'calculatedHeight',\n\t\tminSize: 'minHeight',\n\t\tmaxSize: 'maxHeight',\n\t\tfitting: 'heightFitting',\n\t\tfittingProportion: 'fitHeightProportion'\n};\nconst OPPOSITE_ORIENTATION = {};\nOPPOSITE_ORIENTATION[ORIENTATION_HORIZONTAL] = ORIENTATION_VERTICAL;\nOPPOSITE_ORIENTATION[ORIENTATION_VERTICAL] = ORIENTATION_HORIZONTAL;\nconst PROPERTY_DEFAULTS = {\n\t\tminWidth: 0,\n\t\tminHeight: 0,\n\t\tmaxWidth: Number.POSITIVE_INFINITY,\n\t\tmaxHeight: Number.POSITIVE_INFINITY,\n\t\twidth: null,\n\t\theight: null,\n\t\tfitWidthProportion: 0,\n\t\tfitHeightProportion: 0\n};\nconst FITTING_ACTION = {\n\t\tNONE: 'NONE',\n\t\tAPPLY_STRETCHING: 'APPLY_STRETCHING',\n\t\tAPPLY_SHRINKING: 'APPLY_SHRINKING'\n};\nconst availableSpace = new Vec2();\nfunction createCalculator(orientation) {\n\t\tlet options;\n\t\tconst a = AXIS_MAPPINGS[orientation];\n\t\tconst b = AXIS_MAPPINGS[OPPOSITE_ORIENTATION[orientation]];\n\t\tfunction minExtentA(element, size) {\n\t\t\t\treturn -size[a.size] * element.pivot[a.axis];\n\t\t}\n\t\tfunction minExtentB(element, size) {\n\t\t\t\treturn -size[b.size] * element.pivot[b.axis];\n\t\t}\n\t\tfunction maxExtentA(element, size) {\n\t\t\t\treturn size[a.size] * (1 - element.pivot[a.axis]);\n\t\t}\n\t\tfunction calculateAll(allElements, layoutOptions) {\n\t\t\t\tallElements = allElements.filter(shouldIncludeInLayout);\n\t\t\t\toptions = layoutOptions;\n\t\t\t\tavailableSpace.x = options.containerSize.x - options.padding.x - options.padding.z;\n\t\t\t\tavailableSpace.y = options.containerSize.y - options.padding.y - options.padding.w;\n\t\t\t\tresetAnchors(allElements);\n\t\t\t\tconst lines = reverseLinesIfRequired(splitLines(allElements));\n\t\t\t\tconst sizes = calculateSizesOnAxisB(lines, calculateSizesOnAxisA(lines));\n\t\t\t\tconst positions = calculateBasePositions(lines, sizes);\n\t\t\t\tapplyAlignmentAndPadding(lines, sizes, positions);\n\t\t\t\tapplySizesAndPositions(lines, sizes, positions);\n\t\t\t\treturn createLayoutInfo(lines);\n\t\t}\n\t\tfunction shouldIncludeInLayout(element) {\n\t\t\t\tconst layoutChildComponent = element.entity.layoutchild;\n\t\t\t\treturn !layoutChildComponent || !layoutChildComponent.enabled || !layoutChildComponent.excludeFromLayout;\n\t\t}\n\t\tfunction resetAnchors(allElements) {\n\t\t\t\tfor(let i = 0; i < allElements.length; ++i){\n\t\t\t\t\t\tconst element = allElements[i];\n\t\t\t\t\t\tconst anchor = element.anchor;\n\t\t\t\t\t\tif (anchor.x !== 0 || anchor.y !== 0 || anchor.z !== 0 || anchor.w !== 0) {\n\t\t\t\t\t\t\t\telement.anchor = Vec4.ZERO;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tfunction splitLines(allElements) {\n\t\t\t\tif (!options.wrap) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tallElements\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tconst lines = [\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tconst sizes = getElementSizeProperties(allElements);\n\t\t\t\tlet runningSize = 0;\n\t\t\t\tconst allowOverrun = options[a.fitting] === FITTING_SHRINK;\n\t\t\t\tfor(let i = 0; i < allElements.length; ++i){\n\t\t\t\t\t\tif (lines[lines.length - 1].length > 0) {\n\t\t\t\t\t\t\t\trunningSize += options.spacing[a.axis];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst idealElementSize = sizes[i][a.size];\n\t\t\t\t\t\trunningSize += idealElementSize;\n\t\t\t\t\t\tif (!allowOverrun && runningSize > availableSpace[a.axis] && lines[lines.length - 1].length !== 0) {\n\t\t\t\t\t\t\t\trunningSize = idealElementSize;\n\t\t\t\t\t\t\t\tlines.push([]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlines[lines.length - 1].push(allElements[i]);\n\t\t\t\t\t\tif (allowOverrun && runningSize > availableSpace[a.axis] && i !== allElements.length - 1) {\n\t\t\t\t\t\t\t\trunningSize = 0;\n\t\t\t\t\t\t\t\tlines.push([]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn lines;\n\t\t}\n\t\tfunction reverseLinesIfRequired(lines) {\n\t\t\t\tconst reverseAxisA = options.orientation === ORIENTATION_HORIZONTAL && options.reverseX || options.orientation === ORIENTATION_VERTICAL && options.reverseY;\n\t\t\t\tconst reverseAxisB = options.orientation === ORIENTATION_HORIZONTAL && options.reverseY || options.orientation === ORIENTATION_VERTICAL && options.reverseX;\n\t\t\t\tif (reverseAxisA) {\n\t\t\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\t\t\tif (reverseAxisA) {\n\t\t\t\t\t\t\t\t\t\tlines[lineIndex].reverse();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (reverseAxisB) {\n\t\t\t\t\t\tlines.reverse();\n\t\t\t\t}\n\t\t\t\treturn lines;\n\t\t}\n\t\tfunction calculateSizesOnAxisA(lines) {\n\t\t\t\tconst sizesAllLines = [];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tconst sizesThisLine = getElementSizeProperties(line);\n\t\t\t\t\t\tconst idealRequiredSpace = calculateTotalSpace(sizesThisLine, a);\n\t\t\t\t\t\tconst fittingAction = determineFittingAction(options[a.fitting], idealRequiredSpace, availableSpace[a.axis]);\n\t\t\t\t\t\tif (fittingAction === FITTING_ACTION.APPLY_STRETCHING) {\n\t\t\t\t\t\t\t\tstretchSizesToFitContainer(sizesThisLine, idealRequiredSpace, a);\n\t\t\t\t\t\t} else if (fittingAction === FITTING_ACTION.APPLY_SHRINKING) {\n\t\t\t\t\t\t\t\tshrinkSizesToFitContainer(sizesThisLine, idealRequiredSpace, a);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsizesAllLines.push(sizesThisLine);\n\t\t\t\t}\n\t\t\t\treturn sizesAllLines;\n\t\t}\n\t\tfunction calculateSizesOnAxisB(lines, sizesAllLines) {\n\t\t\t\tconst largestElementsForEachLine = [];\n\t\t\t\tconst largestSizesForEachLine = [];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tline.largestElement = null;\n\t\t\t\t\t\tline.largestSize = {\n\t\t\t\t\t\t\t\twidth: Number.NEGATIVE_INFINITY,\n\t\t\t\t\t\t\t\theight: Number.NEGATIVE_INFINITY\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst sizesThisElement = sizesAllLines[lineIndex][elementIndex];\n\t\t\t\t\t\t\t\tif (sizesThisElement[b.size] > line.largestSize[b.size]) {\n\t\t\t\t\t\t\t\t\t\tline.largestElement = line[elementIndex];\n\t\t\t\t\t\t\t\t\t\tline.largestSize = sizesThisElement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlargestElementsForEachLine.push(line.largestElement);\n\t\t\t\t\t\tlargestSizesForEachLine.push(line.largestSize);\n\t\t\t\t}\n\t\t\t\tconst idealRequiredSpace = calculateTotalSpace(largestSizesForEachLine, b);\n\t\t\t\tconst fittingAction = determineFittingAction(options[b.fitting], idealRequiredSpace, availableSpace[b.axis]);\n\t\t\t\tif (fittingAction === FITTING_ACTION.APPLY_STRETCHING) {\n\t\t\t\t\t\tstretchSizesToFitContainer(largestSizesForEachLine, idealRequiredSpace, b);\n\t\t\t\t} else if (fittingAction === FITTING_ACTION.APPLY_SHRINKING) {\n\t\t\t\t\t\tshrinkSizesToFitContainer(largestSizesForEachLine, idealRequiredSpace, b);\n\t\t\t\t}\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst sizesForThisElement = sizesAllLines[lineIndex][elementIndex];\n\t\t\t\t\t\t\t\tconst currentSize = sizesForThisElement[b.size];\n\t\t\t\t\t\t\t\tconst availableSize = lines.length === 1 ? availableSpace[b.axis] : line.largestSize[b.size];\n\t\t\t\t\t\t\t\tconst elementFittingAction = determineFittingAction(options[b.fitting], currentSize, availableSize);\n\t\t\t\t\t\t\t\tif (elementFittingAction === FITTING_ACTION.APPLY_STRETCHING) {\n\t\t\t\t\t\t\t\t\t\tsizesForThisElement[b.size] = Math.min(availableSize, sizesForThisElement[b.maxSize]);\n\t\t\t\t\t\t\t\t} else if (elementFittingAction === FITTING_ACTION.APPLY_SHRINKING) {\n\t\t\t\t\t\t\t\t\t\tsizesForThisElement[b.size] = Math.max(availableSize, sizesForThisElement[b.minSize]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn sizesAllLines;\n\t\t}\n\t\tfunction determineFittingAction(fittingMode, currentSize, availableSize) {\n\t\t\t\tswitch(fittingMode){\n\t\t\t\t\t\tcase FITTING_NONE:\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.NONE;\n\t\t\t\t\t\tcase FITTING_STRETCH:\n\t\t\t\t\t\t\t\tif (currentSize < availableSize) {\n\t\t\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_STRETCHING;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.NONE;\n\t\t\t\t\t\tcase FITTING_SHRINK:\n\t\t\t\t\t\t\t\tif (currentSize >= availableSize) {\n\t\t\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_SHRINKING;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.NONE;\n\t\t\t\t\t\tcase FITTING_BOTH:\n\t\t\t\t\t\t\t\tif (currentSize < availableSize) {\n\t\t\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_STRETCHING;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn FITTING_ACTION.APPLY_SHRINKING;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(`Unrecognized fitting mode: ${fittingMode}`);\n\t\t\t\t}\n\t\t}\n\t\tfunction calculateTotalSpace(sizes, axis) {\n\t\t\t\tconst totalSizes = sumValues(sizes, axis.size);\n\t\t\t\tconst totalSpacing = (sizes.length - 1) * options.spacing[axis.axis];\n\t\t\t\treturn totalSizes + totalSpacing;\n\t\t}\n\t\tfunction stretchSizesToFitContainer(sizesThisLine, idealRequiredSpace, axis) {\n\t\t\t\tconst ascendingMaxSizeOrder = getTraversalOrder(sizesThisLine, axis.maxSize);\n\t\t\t\tconst fittingProportions = getNormalizedValues(sizesThisLine, axis.fittingProportion);\n\t\t\t\tconst fittingProportionSums = createSumArray(fittingProportions, ascendingMaxSizeOrder);\n\t\t\t\tlet remainingUndershoot = availableSpace[axis.axis] - idealRequiredSpace;\n\t\t\t\tfor(let i = 0; i < sizesThisLine.length; ++i){\n\t\t\t\t\t\tconst index = ascendingMaxSizeOrder[i];\n\t\t\t\t\t\tconst targetIncrease = calculateAdjustment(index, remainingUndershoot, fittingProportions, fittingProportionSums);\n\t\t\t\t\t\tconst targetSize = sizesThisLine[index][axis.size] + targetIncrease;\n\t\t\t\t\t\tconst maxSize = sizesThisLine[index][axis.maxSize];\n\t\t\t\t\t\tconst actualSize = Math.min(targetSize, maxSize);\n\t\t\t\t\t\tsizesThisLine[index][axis.size] = actualSize;\n\t\t\t\t\t\tconst actualIncrease = Math.max(targetSize - actualSize, 0);\n\t\t\t\t\t\tconst appliedIncrease = targetIncrease - actualIncrease;\n\t\t\t\t\t\tremainingUndershoot -= appliedIncrease;\n\t\t\t\t}\n\t\t}\n\t\tfunction shrinkSizesToFitContainer(sizesThisLine, idealRequiredSpace, axis) {\n\t\t\t\tconst descendingMinSizeOrder = getTraversalOrder(sizesThisLine, axis.minSize, true);\n\t\t\t\tconst fittingProportions = getNormalizedValues(sizesThisLine, axis.fittingProportion);\n\t\t\t\tconst inverseFittingProportions = invertNormalizedValues(fittingProportions);\n\t\t\t\tconst inverseFittingProportionSums = createSumArray(inverseFittingProportions, descendingMinSizeOrder);\n\t\t\t\tlet remainingOvershoot = idealRequiredSpace - availableSpace[axis.axis];\n\t\t\t\tfor(let i = 0; i < sizesThisLine.length; ++i){\n\t\t\t\t\t\tconst index = descendingMinSizeOrder[i];\n\t\t\t\t\t\tconst targetReduction = calculateAdjustment(index, remainingOvershoot, inverseFittingProportions, inverseFittingProportionSums);\n\t\t\t\t\t\tconst targetSize = sizesThisLine[index][axis.size] - targetReduction;\n\t\t\t\t\t\tconst minSize = sizesThisLine[index][axis.minSize];\n\t\t\t\t\t\tconst actualSize = Math.max(targetSize, minSize);\n\t\t\t\t\t\tsizesThisLine[index][axis.size] = actualSize;\n\t\t\t\t\t\tconst actualReduction = Math.max(actualSize - targetSize, 0);\n\t\t\t\t\t\tconst appliedReduction = targetReduction - actualReduction;\n\t\t\t\t\t\tremainingOvershoot -= appliedReduction;\n\t\t\t\t}\n\t\t}\n\t\tfunction calculateAdjustment(index, remainingAdjustment, fittingProportions, fittingProportionSums) {\n\t\t\t\tconst proportion = fittingProportions[index];\n\t\t\t\tconst sumOfRemainingProportions = fittingProportionSums[index];\n\t\t\t\tif (Math.abs(proportion) < 1e-5 && Math.abs(sumOfRemainingProportions) < 1e-5) {\n\t\t\t\t\t\treturn remainingAdjustment;\n\t\t\t\t}\n\t\t\t\treturn remainingAdjustment * proportion / sumOfRemainingProportions;\n\t\t}\n\t\tfunction calculateBasePositions(lines, sizes) {\n\t\t\t\tconst cursor = {};\n\t\t\t\tcursor[a.axis] = 0;\n\t\t\t\tcursor[b.axis] = 0;\n\t\t\t\tlines[a.size] = Number.NEGATIVE_INFINITY;\n\t\t\t\tconst positionsAllLines = [];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tif (line.length === 0) {\n\t\t\t\t\t\t\t\tpositionsAllLines.push([]);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst positionsThisLine = [];\n\t\t\t\t\t\tconst sizesThisLine = sizes[lineIndex];\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst element = line[elementIndex];\n\t\t\t\t\t\t\t\tconst sizesThisElement = sizesThisLine[elementIndex];\n\t\t\t\t\t\t\t\tcursor[b.axis] -= minExtentB(element, sizesThisElement);\n\t\t\t\t\t\t\t\tcursor[a.axis] -= minExtentA(element, sizesThisElement);\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex] = {};\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][a.axis] = cursor[a.axis];\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][b.axis] = cursor[b.axis];\n\t\t\t\t\t\t\t\tcursor[b.axis] += minExtentB(element, sizesThisElement);\n\t\t\t\t\t\t\t\tcursor[a.axis] += maxExtentA(element, sizesThisElement) + options.spacing[a.axis];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tline[a.size] = cursor[a.axis] - options.spacing[a.axis];\n\t\t\t\t\t\tline[b.size] = line.largestSize[b.size];\n\t\t\t\t\t\tlines[a.size] = Math.max(lines[a.size], line[a.size]);\n\t\t\t\t\t\tcursor[a.axis] = 0;\n\t\t\t\t\t\tcursor[b.axis] += line[b.size] + options.spacing[b.axis];\n\t\t\t\t\t\tpositionsAllLines.push(positionsThisLine);\n\t\t\t\t}\n\t\t\t\tlines[b.size] = cursor[b.axis] - options.spacing[b.axis];\n\t\t\t\treturn positionsAllLines;\n\t\t}\n\t\tfunction applyAlignmentAndPadding(lines, sizes, positions) {\n\t\t\t\tconst alignmentA = options.alignment[a.axis];\n\t\t\t\tconst alignmentB = options.alignment[b.axis];\n\t\t\t\tconst paddingA = options.padding[a.axis];\n\t\t\t\tconst paddingB = options.padding[b.axis];\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tconst sizesThisLine = sizes[lineIndex];\n\t\t\t\t\t\tconst positionsThisLine = positions[lineIndex];\n\t\t\t\t\t\tconst axisAOffset = (availableSpace[a.axis] - line[a.size]) * alignmentA + paddingA;\n\t\t\t\t\t\tconst axisBOffset = (availableSpace[b.axis] - lines[b.size]) * alignmentB + paddingB;\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst withinLineAxisBOffset = (line[b.size] - sizesThisLine[elementIndex][b.size]) * options.alignment[b.axis];\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][a.axis] += axisAOffset;\n\t\t\t\t\t\t\t\tpositionsThisLine[elementIndex][b.axis] += axisBOffset + withinLineAxisBOffset;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tfunction applySizesAndPositions(lines, sizes, positions) {\n\t\t\t\tfor(let lineIndex = 0; lineIndex < lines.length; ++lineIndex){\n\t\t\t\t\t\tconst line = lines[lineIndex];\n\t\t\t\t\t\tconst sizesThisLine = sizes[lineIndex];\n\t\t\t\t\t\tconst positionsThisLine = positions[lineIndex];\n\t\t\t\t\t\tfor(let elementIndex = 0; elementIndex < line.length; ++elementIndex){\n\t\t\t\t\t\t\t\tconst element = line[elementIndex];\n\t\t\t\t\t\t\t\telement[a.calculatedSize] = sizesThisLine[elementIndex][a.size];\n\t\t\t\t\t\t\t\telement[b.calculatedSize] = sizesThisLine[elementIndex][b.size];\n\t\t\t\t\t\t\t\tif (options.orientation === ORIENTATION_HORIZONTAL) {\n\t\t\t\t\t\t\t\t\t\telement.entity.setLocalPosition(positionsThisLine[elementIndex][a.axis], positionsThisLine[elementIndex][b.axis], element.entity.getLocalPosition().z);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\telement.entity.setLocalPosition(positionsThisLine[elementIndex][b.axis], positionsThisLine[elementIndex][a.axis], element.entity.getLocalPosition().z);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tfunction createLayoutInfo(lines) {\n\t\t\t\tconst layoutWidth = lines.width;\n\t\t\t\tconst layoutHeight = lines.height;\n\t\t\t\tconst xOffset = (availableSpace.x - layoutWidth) * options.alignment.x + options.padding.x;\n\t\t\t\tconst yOffset = (availableSpace.y - layoutHeight) * options.alignment.y + options.padding.y;\n\t\t\t\treturn {\n\t\t\t\t\t\tbounds: new Vec4(xOffset, yOffset, layoutWidth, layoutHeight)\n\t\t\t\t};\n\t\t}\n\t\tfunction getElementSizeProperties(elements) {\n\t\t\t\tconst sizeProperties = [];\n\t\t\t\tfor(let i = 0; i < elements.length; ++i){\n\t\t\t\t\t\tconst element = elements[i];\n\t\t\t\t\t\tconst minWidth = Math.max(getProperty(element, 'minWidth'), 0);\n\t\t\t\t\t\tconst minHeight = Math.max(getProperty(element, 'minHeight'), 0);\n\t\t\t\t\t\tconst maxWidth = Math.max(getProperty(element, 'maxWidth'), minWidth);\n\t\t\t\t\t\tconst maxHeight = Math.max(getProperty(element, 'maxHeight'), minHeight);\n\t\t\t\t\t\tconst width = clamp(getProperty(element, 'width'), minWidth, maxWidth);\n\t\t\t\t\t\tconst height = clamp(getProperty(element, 'height'), minHeight, maxHeight);\n\t\t\t\t\t\tconst fitWidthProportion = getProperty(element, 'fitWidthProportion');\n\t\t\t\t\t\tconst fitHeightProportion = getProperty(element, 'fitHeightProportion');\n\t\t\t\t\t\tsizeProperties.push({\n\t\t\t\t\t\t\t\tminWidth: minWidth,\n\t\t\t\t\t\t\t\tminHeight: minHeight,\n\t\t\t\t\t\t\t\tmaxWidth: maxWidth,\n\t\t\t\t\t\t\t\tmaxHeight: maxHeight,\n\t\t\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\t\t\theight: height,\n\t\t\t\t\t\t\t\tfitWidthProportion: fitWidthProportion,\n\t\t\t\t\t\t\t\tfitHeightProportion: fitHeightProportion\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn sizeProperties;\n\t\t}\n\t\tfunction getProperty(element, propertyName) {\n\t\t\t\tconst layoutChildComponent = element.entity.layoutchild;\n\t\t\t\tif (layoutChildComponent && layoutChildComponent.enabled && layoutChildComponent[propertyName] !== undefined && layoutChildComponent[propertyName] !== null) {\n\t\t\t\t\t\treturn layoutChildComponent[propertyName];\n\t\t\t\t} else if (element[propertyName] !== undefined) {\n\t\t\t\t\t\treturn element[propertyName];\n\t\t\t\t}\n\t\t\t\treturn PROPERTY_DEFAULTS[propertyName];\n\t\t}\n\t\tfunction clamp(value, min, max) {\n\t\t\t\treturn Math.min(Math.max(value, min), max);\n\t\t}\n\t\tfunction sumValues(items, propertyName) {\n\t\t\t\treturn items.reduce((accumulator, current)=>{\n\t\t\t\t\t\treturn accumulator + current[propertyName];\n\t\t\t\t}, 0);\n\t\t}\n\t\tfunction getNormalizedValues(items, propertyName) {\n\t\t\t\tconst sum = sumValues(items, propertyName);\n\t\t\t\tconst normalizedValues = [];\n\t\t\t\tconst numItems = items.length;\n\t\t\t\tif (sum === 0) {\n\t\t\t\t\t\tfor(let i = 0; i < numItems; ++i){\n\t\t\t\t\t\t\t\tnormalizedValues.push(1 / numItems);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < numItems; ++i){\n\t\t\t\t\t\t\t\tnormalizedValues.push(items[i][propertyName] / sum);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn normalizedValues;\n\t\t}\n\t\tfunction invertNormalizedValues(values) {\n\t\t\t\tif (values.length === 1) {\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tconst invertedValues = [];\n\t\t\t\tconst numValues = values.length;\n\t\t\t\tfor(let i = 0; i < numValues; ++i){\n\t\t\t\t\t\tinvertedValues.push((1 - values[i]) / (numValues - 1));\n\t\t\t\t}\n\t\t\t\treturn invertedValues;\n\t\t}\n\t\tfunction getTraversalOrder(items, orderBy, descending) {\n\t\t\t\titems.forEach(assignIndex);\n\t\t\t\treturn items.slice().sort((itemA, itemB)=>{\n\t\t\t\t\t\treturn descending ? itemB[orderBy] - itemA[orderBy] : itemA[orderBy] - itemB[orderBy];\n\t\t\t\t}).map(getIndex);\n\t\t}\n\t\tfunction assignIndex(item, index) {\n\t\t\t\titem.index = index;\n\t\t}\n\t\tfunction getIndex(item) {\n\t\t\t\treturn item.index;\n\t\t}\n\t\tfunction createSumArray(values, order) {\n\t\t\t\tconst sumArray = [];\n\t\t\t\tsumArray[order[values.length - 1]] = values[order[values.length - 1]];\n\t\t\t\tfor(let i = values.length - 2; i >= 0; --i){\n\t\t\t\t\t\tsumArray[order[i]] = sumArray[order[i + 1]] + values[order[i]];\n\t\t\t\t}\n\t\t\t\treturn sumArray;\n\t\t}\n\t\treturn calculateAll;\n}\nconst CALCULATE_FNS = {};\nCALCULATE_FNS[ORIENTATION_HORIZONTAL] = createCalculator(ORIENTATION_HORIZONTAL);\nCALCULATE_FNS[ORIENTATION_VERTICAL] = createCalculator(ORIENTATION_VERTICAL);\nclass LayoutCalculator {\n\t\tcalculateLayout(elements, options) {\n\t\t\t\tconst calculateFn = CALCULATE_FNS[options.orientation];\n\t\t\t\tif (!calculateFn) {\n\t\t\t\t\t\tthrow new Error(`Unrecognized orientation value: ${options.orientation}`);\n\t\t\t\t} else {\n\t\t\t\t\t\treturn calculateFn(elements, options);\n\t\t\t\t}\n\t\t}\n}\n\nfunction getElement(entity) {\n\t\treturn entity.element;\n}\nfunction isEnabledAndHasEnabledElement(entity) {\n\t\treturn entity.enabled && entity.element && entity.element.enabled;\n}\nclass LayoutGroupComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._orientation = ORIENTATION_HORIZONTAL, this._reverseX = false, this._reverseY = true, this._alignment = new Vec2(0, 1), this._padding = new Vec4(), this._spacing = new Vec2(), this._widthFitting = FITTING_NONE, this._heightFitting = FITTING_NONE, this._wrap = false, this._layoutCalculator = new LayoutCalculator();\n\t\t\t\tthis._listenForReflowEvents(this.entity, 'on');\n\t\t\t\tthis.entity.children.forEach((child)=>{\n\t\t\t\t\t\tthis._listenForReflowEvents(child, 'on');\n\t\t\t\t});\n\t\t\t\tthis.entity.on('childinsert', this._onChildInsert, this);\n\t\t\t\tthis.entity.on('childremove', this._onChildRemove, this);\n\t\t\t\tsystem.app.systems.element.on('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tsystem.app.systems.element.on('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t\t\tsystem.app.systems.layoutchild.on('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tsystem.app.systems.layoutchild.on('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t}\n\t\tset orientation(value) {\n\t\t\t\tif (value !== this._orientation) {\n\t\t\t\t\t\tthis._orientation = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this._orientation;\n\t\t}\n\t\tset reverseX(value) {\n\t\t\t\tif (value !== this._reverseX) {\n\t\t\t\t\t\tthis._reverseX = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget reverseX() {\n\t\t\t\treturn this._reverseX;\n\t\t}\n\t\tset reverseY(value) {\n\t\t\t\tif (value !== this._reverseY) {\n\t\t\t\t\t\tthis._reverseY = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget reverseY() {\n\t\t\t\treturn this._reverseY;\n\t\t}\n\t\tset alignment(value) {\n\t\t\t\tif (!value.equals(this._alignment)) {\n\t\t\t\t\t\tthis._alignment.copy(value);\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget alignment() {\n\t\t\t\treturn this._alignment;\n\t\t}\n\t\tset padding(value) {\n\t\t\t\tif (!value.equals(this._padding)) {\n\t\t\t\t\t\tthis._padding.copy(value);\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget padding() {\n\t\t\t\treturn this._padding;\n\t\t}\n\t\tset spacing(value) {\n\t\t\t\tif (!value.equals(this._spacing)) {\n\t\t\t\t\t\tthis._spacing.copy(value);\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget spacing() {\n\t\t\t\treturn this._spacing;\n\t\t}\n\t\tset widthFitting(value) {\n\t\t\t\tif (value !== this._widthFitting) {\n\t\t\t\t\t\tthis._widthFitting = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget widthFitting() {\n\t\t\t\treturn this._widthFitting;\n\t\t}\n\t\tset heightFitting(value) {\n\t\t\t\tif (value !== this._heightFitting) {\n\t\t\t\t\t\tthis._heightFitting = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget heightFitting() {\n\t\t\t\treturn this._heightFitting;\n\t\t}\n\t\tset wrap(value) {\n\t\t\t\tif (value !== this._wrap) {\n\t\t\t\t\t\tthis._wrap = value;\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\tget wrap() {\n\t\t\t\treturn this._wrap;\n\t\t}\n\t\t_isSelfOrChild(entity) {\n\t\t\t\treturn entity === this.entity || this.entity.children.indexOf(entity) !== -1;\n\t\t}\n\t\t_listenForReflowEvents(target, onOff) {\n\t\t\t\tif (target.element) {\n\t\t\t\t\t\ttarget.element[onOff]('enableelement', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.element[onOff]('disableelement', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.element[onOff]('resize', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.element[onOff]('set:pivot', this._scheduleReflow, this);\n\t\t\t\t}\n\t\t\t\tif (target.layoutchild) {\n\t\t\t\t\t\ttarget.layoutchild[onOff]('set_enabled', this._scheduleReflow, this);\n\t\t\t\t\t\ttarget.layoutchild[onOff]('resize', this._scheduleReflow, this);\n\t\t\t\t}\n\t\t}\n\t\t_onElementOrLayoutComponentAdd(entity) {\n\t\t\t\tif (this._isSelfOrChild(entity)) {\n\t\t\t\t\t\tthis._listenForReflowEvents(entity, 'on');\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\t_onElementOrLayoutComponentRemove(entity) {\n\t\t\t\tif (this._isSelfOrChild(entity)) {\n\t\t\t\t\t\tthis._listenForReflowEvents(entity, 'off');\n\t\t\t\t\t\tthis._scheduleReflow();\n\t\t\t\t}\n\t\t}\n\t\t_onChildInsert(child) {\n\t\t\t\tthis._listenForReflowEvents(child, 'on');\n\t\t\t\tthis._scheduleReflow();\n\t\t}\n\t\t_onChildRemove(child) {\n\t\t\t\tthis._listenForReflowEvents(child, 'off');\n\t\t\t\tthis._scheduleReflow();\n\t\t}\n\t\t_scheduleReflow() {\n\t\t\t\tif (this.enabled && this.entity && this.entity.enabled && !this._isPerformingReflow) {\n\t\t\t\t\t\tthis.system.scheduleReflow(this);\n\t\t\t\t}\n\t\t}\n\t\treflow() {\n\t\t\t\tconst container = getElement(this.entity);\n\t\t\t\tconst elements = this.entity.children.filter(isEnabledAndHasEnabledElement).map(getElement);\n\t\t\t\tif (!container || elements.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst containerWidth = Math.max(container.calculatedWidth, 0);\n\t\t\t\tconst containerHeight = Math.max(container.calculatedHeight, 0);\n\t\t\t\tconst options = {\n\t\t\t\t\t\torientation: this._orientation,\n\t\t\t\t\t\treverseX: this._reverseX,\n\t\t\t\t\t\treverseY: this._reverseY,\n\t\t\t\t\t\talignment: this._alignment,\n\t\t\t\t\t\tpadding: this._padding,\n\t\t\t\t\t\tspacing: this._spacing,\n\t\t\t\t\t\twidthFitting: this._widthFitting,\n\t\t\t\t\t\theightFitting: this._heightFitting,\n\t\t\t\t\t\twrap: this._wrap,\n\t\t\t\t\t\tcontainerSize: new Vec2(containerWidth, containerHeight)\n\t\t\t\t};\n\t\t\t\tthis._isPerformingReflow = true;\n\t\t\t\tconst layoutInfo = this._layoutCalculator.calculateLayout(elements, options);\n\t\t\t\tthis._isPerformingReflow = false;\n\t\t\t\tthis.fire('reflow', layoutInfo);\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._scheduleReflow();\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.entity.off('childinsert', this._onChildInsert, this);\n\t\t\t\tthis.entity.off('childremove', this._onChildRemove, this);\n\t\t\t\tthis._listenForReflowEvents(this.entity, 'off');\n\t\t\t\tthis.entity.children.forEach((child)=>{\n\t\t\t\t\t\tthis._listenForReflowEvents(child, 'off');\n\t\t\t\t});\n\t\t\t\tthis.system.app.systems.element.off('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tthis.system.app.systems.element.off('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t\t\tthis.system.app.systems.layoutchild.off('add', this._onElementOrLayoutComponentAdd, this);\n\t\t\t\tthis.system.app.systems.layoutchild.off('beforeremove', this._onElementOrLayoutComponentRemove, this);\n\t\t}\n}\n\nclass LayoutGroupComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$c = [\n\t\t'enabled'\n];\nconst MAX_ITERATIONS = 100;\nclass LayoutGroupComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'layoutgroup';\n\t\t\t\tthis.ComponentType = LayoutGroupComponent;\n\t\t\t\tthis.DataType = LayoutGroupComponentData;\n\t\t\t\tthis.schema = _schema$c;\n\t\t\t\tthis._reflowQueue = [];\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t\t\tthis.app.systems.on('postUpdate', this._onPostUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.enabled !== undefined) component.enabled = data.enabled;\n\t\t\t\tif (data.orientation !== undefined) component.orientation = data.orientation;\n\t\t\t\tif (data.reverseX !== undefined) component.reverseX = data.reverseX;\n\t\t\t\tif (data.reverseY !== undefined) component.reverseY = data.reverseY;\n\t\t\t\tif (data.alignment !== undefined) {\n\t\t\t\t\t\tcomponent.alignment = Array.isArray(data.alignment) ? new Vec2(data.alignment) : data.alignment;\n\t\t\t\t}\n\t\t\t\tif (data.padding !== undefined) {\n\t\t\t\t\t\tcomponent.padding = Array.isArray(data.padding) ? new Vec4(data.padding) : data.padding;\n\t\t\t\t}\n\t\t\t\tif (data.spacing !== undefined) {\n\t\t\t\t\t\tcomponent.spacing = Array.isArray(data.spacing) ? new Vec2(data.spacing) : data.spacing;\n\t\t\t\t}\n\t\t\t\tif (data.widthFitting !== undefined) component.widthFitting = data.widthFitting;\n\t\t\t\tif (data.heightFitting !== undefined) component.heightFitting = data.heightFitting;\n\t\t\t\tif (data.wrap !== undefined) component.wrap = data.wrap;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst layoutGroup = entity.layoutgroup;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: layoutGroup.enabled,\n\t\t\t\t\t\torientation: layoutGroup.orientation,\n\t\t\t\t\t\treverseX: layoutGroup.reverseX,\n\t\t\t\t\t\treverseY: layoutGroup.reverseY,\n\t\t\t\t\t\talignment: layoutGroup.alignment,\n\t\t\t\t\t\tpadding: layoutGroup.padding,\n\t\t\t\t\t\tspacing: layoutGroup.spacing,\n\t\t\t\t\t\twidthFitting: layoutGroup.widthFitting,\n\t\t\t\t\t\theightFitting: layoutGroup.heightFitting,\n\t\t\t\t\t\twrap: layoutGroup.wrap\n\t\t\t\t});\n\t\t}\n\t\tscheduleReflow(component) {\n\t\t\t\tif (this._reflowQueue.indexOf(component) === -1) {\n\t\t\t\t\t\tthis._reflowQueue.push(component);\n\t\t\t\t}\n\t\t}\n\t\t_onPostUpdate() {\n\t\t\t\tthis._processReflowQueue();\n\t\t}\n\t\t_processReflowQueue() {\n\t\t\t\tif (this._reflowQueue.length === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet iterationCount = 0;\n\t\t\t\twhile(this._reflowQueue.length > 0){\n\t\t\t\t\t\tconst queue = this._reflowQueue.slice();\n\t\t\t\t\t\tthis._reflowQueue.length = 0;\n\t\t\t\t\t\tqueue.sort((componentA, componentB)=>{\n\t\t\t\t\t\t\t\treturn componentA.entity.graphDepth - componentB.entity.graphDepth;\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfor(let i = 0; i < queue.length; ++i){\n\t\t\t\t\t\t\t\tqueue[i].reflow();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (++iterationCount >= MAX_ITERATIONS) {\n\t\t\t\t\t\t\t\tconsole.warn('Max reflow iterations limit reached, bailing.');\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('postUpdate', this._onPostUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(LayoutGroupComponent.prototype, _schema$c);\n\nclass PrimitivesCache {\n\t\tdestroy(device) {\n\t\t\t\tthis.map.forEach((primData)=>primData.mesh.destroy());\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.map = new Map();\n\t\t}\n}\nconst _primitivesCache = new DeviceCache();\nconst getShapePrimitive = (device, type)=>{\n\t\tconst cache = _primitivesCache.get(device, ()=>{\n\t\t\t\treturn new PrimitivesCache();\n\t\t});\n\t\tlet primData = cache.map.get(type);\n\t\tif (!primData) {\n\t\t\t\tlet mesh, area;\n\t\t\t\tswitch(type){\n\t\t\t\t\t\tcase 'box':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new BoxGeometry());\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: 2,\n\t\t\t\t\t\t\t\t\t\ty: 2,\n\t\t\t\t\t\t\t\t\t\tz: 2,\n\t\t\t\t\t\t\t\t\t\tuv: 2.0 / 3\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'capsule':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new CapsuleGeometry({\n\t\t\t\t\t\t\t\t\t\tradius: 0.5,\n\t\t\t\t\t\t\t\t\t\theight: 2\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI * 2,\n\t\t\t\t\t\t\t\t\t\ty: Math.PI,\n\t\t\t\t\t\t\t\t\t\tz: Math.PI * 2,\n\t\t\t\t\t\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3 * 2\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'cone':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new ConeGeometry({\n\t\t\t\t\t\t\t\t\t\tbaseRadius: 0.5,\n\t\t\t\t\t\t\t\t\t\tpeakRadius: 0,\n\t\t\t\t\t\t\t\t\t\theight: 1\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: 2.54,\n\t\t\t\t\t\t\t\t\t\ty: 2.54,\n\t\t\t\t\t\t\t\t\t\tz: 2.54,\n\t\t\t\t\t\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'cylinder':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new CylinderGeometry({\n\t\t\t\t\t\t\t\t\t\tradius: 0.5,\n\t\t\t\t\t\t\t\t\t\theight: 1\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI,\n\t\t\t\t\t\t\t\t\t\ty: 0.79 * 2,\n\t\t\t\t\t\t\t\t\t\tz: Math.PI,\n\t\t\t\t\t\t\t\t\t\tuv: 1.0 / 3 + 1.0 / 3 / 3 * 2\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'plane':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new PlaneGeometry({\n\t\t\t\t\t\t\t\t\t\thalfExtents: new Vec2(0.5, 0.5),\n\t\t\t\t\t\t\t\t\t\twidthSegments: 1,\n\t\t\t\t\t\t\t\t\t\tlengthSegments: 1\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\t\t\t\t\ty: 1,\n\t\t\t\t\t\t\t\t\t\tz: 0,\n\t\t\t\t\t\t\t\t\t\tuv: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'sphere':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new SphereGeometry({\n\t\t\t\t\t\t\t\t\t\tradius: 0.5\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI,\n\t\t\t\t\t\t\t\t\t\ty: Math.PI,\n\t\t\t\t\t\t\t\t\t\tz: Math.PI,\n\t\t\t\t\t\t\t\t\t\tuv: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'torus':\n\t\t\t\t\t\t\t\tmesh = Mesh.fromGeometry(device, new TorusGeometry({\n\t\t\t\t\t\t\t\t\t\ttubeRadius: 0.2,\n\t\t\t\t\t\t\t\t\t\tringRadius: 0.3\n\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\tarea = {\n\t\t\t\t\t\t\t\t\t\tx: Math.PI * 0.5 * 0.5 - Math.PI * 0.1 * 0.1,\n\t\t\t\t\t\t\t\t\t\ty: 0.4,\n\t\t\t\t\t\t\t\t\t\tz: 0.4,\n\t\t\t\t\t\t\t\t\t\tuv: 1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(`Invalid primitive type: ${type}`);\n\t\t\t\t}\n\t\t\t\tmesh.incRefCount();\n\t\t\t\tprimData = {\n\t\t\t\t\t\tmesh: mesh,\n\t\t\t\t\t\tarea: area\n\t\t\t\t};\n\t\t\t\tcache.map.set(type, primData);\n\t\t}\n\t\treturn primData;\n};\n\nclass ModelComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._type = 'asset', this._asset = null, this._model = null, this._mapping = {}, this._castShadows = true, this._receiveShadows = true, this._materialAsset = null, this._castShadowsLightmap = true, this._lightmapped = false, this._lightmapSizeMultiplier = 1, this.isStatic = false, this._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t], this._batchGroupId = -1, this._customAabb = null, this._area = null, this._materialEvents = null, this._clonedModel = false, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._material = system.defaultMaterial;\n\t\t\t\tentity.on('remove', this.onRemoveChild, this);\n\t\t\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\t\t\tentity.on('insert', this.onInsertChild, this);\n\t\t\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t\t}\n\t\tset meshInstances(value) {\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._model.meshInstances = value;\n\t\t}\n\t\tget meshInstances() {\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._model.meshInstances;\n\t\t}\n\t\tset customAabb(value) {\n\t\t\t\tthis._customAabb = value;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst mi = this._model.meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget customAabb() {\n\t\t\t\treturn this._customAabb;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type === value) return;\n\t\t\t\tthis._area = null;\n\t\t\t\tthis._type = value;\n\t\t\t\tif (value === 'asset') {\n\t\t\t\t\t\tif (this._asset !== null) {\n\t\t\t\t\t\t\t\tthis._bindModelAsset(this._asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.model = null;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst primData = getShapePrimitive(this.system.app.graphicsDevice, value);\n\t\t\t\t\t\tthis._area = primData.area;\n\t\t\t\t\t\tconst mesh = primData.mesh;\n\t\t\t\t\t\tconst node = new GraphNode();\n\t\t\t\t\t\tconst model = new Model();\n\t\t\t\t\t\tmodel.graph = node;\n\t\t\t\t\t\tmodel.meshInstances = [\n\t\t\t\t\t\t\t\tnew MeshInstance(mesh, this._material, node)\n\t\t\t\t\t\t];\n\t\t\t\t\t\tthis.model = model;\n\t\t\t\t\t\tthis._asset = null;\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._asset !== _id) {\n\t\t\t\t\t\tif (this._asset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._asset}`, this._onModelAssetAdded, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._asset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindModelAsset(_prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._asset = _id;\n\t\t\t\t\t\tif (this._asset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._asset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.model = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._asset}`, this._onModelAssetAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.model = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._asset;\n\t\t}\n\t\tset model(value) {\n\t\t\t\tif (this._model === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (value && value._immutable) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._model._immutable = false;\n\t\t\t\t\t\tthis.removeModelFromLayers();\n\t\t\t\t\t\tthis._model.getGraph().destroy();\n\t\t\t\t\t\tdelete this._model._entity;\n\t\t\t\t\t\tif (this._clonedModel) {\n\t\t\t\t\t\t\t\tthis._model.destroy();\n\t\t\t\t\t\t\t\tthis._clonedModel = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._model = value;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis._model._immutable = true;\n\t\t\t\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].castShadow = this._castShadows;\n\t\t\t\t\t\t\t\tmeshInstances[i].receiveShadow = this._receiveShadows;\n\t\t\t\t\t\t\t\tmeshInstances[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lightmapped = this._lightmapped;\n\t\t\t\t\t\tthis.entity.addChild(this._model.graph);\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._model._entity = this.entity;\n\t\t\t\t\t\tif (this.entity.animation) {\n\t\t\t\t\t\t\t\tthis.entity.animation.setModel(this._model);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.entity.anim) {\n\t\t\t\t\t\t\t\tthis.entity.anim.rebind();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.type === 'asset') {\n\t\t\t\t\t\t\t\tthis.mapping = this._mapping;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget model() {\n\t\t\t\treturn this._model;\n\t\t}\n\t\tset lightmapped(value) {\n\t\t\t\tif (value !== this._lightmapped) {\n\t\t\t\t\t\tthis._lightmapped = value;\n\t\t\t\t\t\tif (this._model) {\n\t\t\t\t\t\t\t\tconst mi = this._model.meshInstances;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].setLightmapped(value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lightmapped() {\n\t\t\t\treturn this._lightmapped;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows === value) return;\n\t\t\t\tconst model = this._model;\n\t\t\t\tif (model) {\n\t\t\t\t\t\tconst layers = this.layers;\n\t\t\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\t\t\tlayer.removeShadowCasters(model.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst meshInstances = model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].castShadow = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\t\t\tlayer.addShadowCasters(model.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._castShadows = value;\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows;\n\t\t}\n\t\tset receiveShadows(value) {\n\t\t\t\tif (this._receiveShadows === value) return;\n\t\t\t\tthis._receiveShadows = value;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, len = meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].receiveShadow = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget receiveShadows() {\n\t\t\t\treturn this._receiveShadows;\n\t\t}\n\t\tset castShadowsLightmap(value) {\n\t\t\t\tthis._castShadowsLightmap = value;\n\t\t}\n\t\tget castShadowsLightmap() {\n\t\t\t\treturn this._castShadowsLightmap;\n\t\t}\n\t\tset lightmapSizeMultiplier(value) {\n\t\t\t\tthis._lightmapSizeMultiplier = value;\n\t\t}\n\t\tget lightmapSizeMultiplier() {\n\t\t\t\treturn this._lightmapSizeMultiplier;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tif (this.meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._layers.length = 0;\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tthis._layers[i] = value[i];\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled || !this.meshInstances) return;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId === value) return;\n\t\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.MODEL, value, this.entity);\n\t\t\t\t}\n\t\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t}\n\t\t\t\tthis._batchGroupId = value;\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset materialAsset(value) {\n\t\t\t\tlet _id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t_id = value.id;\n\t\t\t\t}\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (_id !== this._materialAsset) {\n\t\t\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\t\t\tassets.off(`add:${this._materialAsset}`, this._onMaterialAssetAdd, this);\n\t\t\t\t\t\t\t\tconst _prev = assets.get(this._materialAsset);\n\t\t\t\t\t\t\t\tif (_prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindMaterialAsset(_prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._materialAsset = _id;\n\t\t\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._materialAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._materialAsset}`, this._onMaterialAssetAdd, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget materialAsset() {\n\t\t\t\treturn this._materialAsset;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._setMaterial(value);\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset mapping(value) {\n\t\t\t\tif (this._type !== 'asset') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t\tif (!value) {\n\t\t\t\t\t\tvalue = {};\n\t\t\t\t}\n\t\t\t\tthis._mapping = value;\n\t\t\t\tif (!this._model) return;\n\t\t\t\tconst meshInstances = this._model.meshInstances;\n\t\t\t\tconst modelAsset = this.asset ? this.system.app.assets.get(this.asset) : null;\n\t\t\t\tconst assetMapping = modelAsset ? modelAsset.data.mapping : null;\n\t\t\t\tlet asset = null;\n\t\t\t\tfor(let i = 0, len = meshInstances.length; i < len; i++){\n\t\t\t\t\t\tif (value[i] !== undefined) {\n\t\t\t\t\t\t\t\tif (value[i]) {\n\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(value[i]);\n\t\t\t\t\t\t\t\t\t\tthis._loadAndSetMeshInstanceMaterial(asset, meshInstances[i], i);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmeshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (assetMapping) {\n\t\t\t\t\t\t\t\tif (assetMapping[i] && (assetMapping[i].material || assetMapping[i].path)) {\n\t\t\t\t\t\t\t\t\t\tif (assetMapping[i].material !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(assetMapping[i].material);\n\t\t\t\t\t\t\t\t\t\t} else if (assetMapping[i].path !== undefined) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst url = this._getMaterialAssetUrl(assetMapping[i].path);\n\t\t\t\t\t\t\t\t\t\t\t\tif (url) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.getByUrl(url);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis._loadAndSetMeshInstanceMaterial(asset, meshInstances[i], i);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmeshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget mapping() {\n\t\t\t\treturn this._mapping;\n\t\t}\n\t\taddModelToLayers() {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveModelFromLayers() {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tonRemoveChild() {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis.removeModelFromLayers();\n\t\t\t\t}\n\t\t}\n\t\tonInsertChild() {\n\t\t\t\tif (this._model && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t}\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis.model = null;\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._unsetMaterialEvents();\n\t\t\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\t\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addModelToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addMeshInstances(this.meshInstances);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances(this.meshInstances);\n\t\t}\n\t\t_setMaterialEvent(index, event, id, handler) {\n\t\t\t\tconst evt = `${event}:${id}`;\n\t\t\t\tthis.system.app.assets.on(evt, handler, this);\n\t\t\t\tif (!this._materialEvents) {\n\t\t\t\t\t\tthis._materialEvents = [];\n\t\t\t\t}\n\t\t\t\tif (!this._materialEvents[index]) {\n\t\t\t\t\t\tthis._materialEvents[index] = {};\n\t\t\t\t}\n\t\t\t\tthis._materialEvents[index][evt] = {\n\t\t\t\t\t\tid: id,\n\t\t\t\t\t\thandler: handler\n\t\t\t\t};\n\t\t}\n\t\t_unsetMaterialEvents() {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tconst events = this._materialEvents;\n\t\t\t\tif (!events) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = events.length; i < len; i++){\n\t\t\t\t\t\tif (!events[i]) continue;\n\t\t\t\t\t\tconst evt = events[i];\n\t\t\t\t\t\tfor(const key in evt){\n\t\t\t\t\t\t\t\tassets.off(key, evt[key].handler, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._materialEvents = null;\n\t\t}\n\t\t_getAssetByIdOrPath(idOrPath) {\n\t\t\t\tlet asset = null;\n\t\t\t\tconst isPath = isNaN(parseInt(idOrPath, 10));\n\t\t\t\tif (!isPath) {\n\t\t\t\t\t\tasset = this.system.app.assets.get(idOrPath);\n\t\t\t\t} else if (this.asset) {\n\t\t\t\t\t\tconst url = this._getMaterialAssetUrl(idOrPath);\n\t\t\t\t\t\tif (url) {\n\t\t\t\t\t\t\t\tasset = this.system.app.assets.getByUrl(url);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn asset;\n\t\t}\n\t\t_getMaterialAssetUrl(path) {\n\t\t\t\tif (!this.asset) return null;\n\t\t\t\tconst modelAsset = this.system.app.assets.get(this.asset);\n\t\t\t\treturn modelAsset ? modelAsset.getAbsoluteUrl(path) : null;\n\t\t}\n\t\t_loadAndSetMeshInstanceMaterial(materialAsset, meshInstance, index) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (!materialAsset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (materialAsset.resource) {\n\t\t\t\t\t\tmeshInstance.material = materialAsset.resource;\n\t\t\t\t\t\tthis._setMaterialEvent(index, 'remove', materialAsset.id, function() {\n\t\t\t\t\t\t\t\tmeshInstance.material = this.system.defaultMaterial;\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._setMaterialEvent(index, 'load', materialAsset.id, function(asset) {\n\t\t\t\t\t\t\t\tmeshInstance.material = asset.resource;\n\t\t\t\t\t\t\t\tthis._setMaterialEvent(index, 'remove', materialAsset.id, function() {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tassets.load(materialAsset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene?.layers;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tconst isAsset = this._type === 'asset';\n\t\t\t\tlet asset;\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis.addModelToLayers();\n\t\t\t\t} else if (isAsset && this._asset) {\n\t\t\t\t\t\tasset = app.assets.get(this._asset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._model) {\n\t\t\t\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._materialAsset) {\n\t\t\t\t\t\tasset = app.assets.get(this._materialAsset);\n\t\t\t\t\t\tif (asset && asset.resource !== this._material) {\n\t\t\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (isAsset) {\n\t\t\t\t\t\tif (this._mapping) {\n\t\t\t\t\t\t\t\tfor(const index in this._mapping){\n\t\t\t\t\t\t\t\t\t\tif (this._mapping[index]) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset = this._getAssetByIdOrPath(this._mapping[index]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tapp.assets.load(asset);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.insert(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.remove(BatchGroup.MODEL, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tthis.removeModelFromLayers();\n\t\t\t\t}\n\t\t}\n\t\thide() {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst instances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, l = instances.length; i < l; i++){\n\t\t\t\t\t\t\t\tinstances[i].visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tshow() {\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tconst instances = this._model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, l = instances.length; i < l; i++){\n\t\t\t\t\t\t\t\tinstances[i].visible = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_bindMaterialAsset(asset) {\n\t\t\t\tasset.on('load', this._onMaterialAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onMaterialAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onMaterialAssetRemove, this);\n\t\t\t\tasset.on('change', this._onMaterialAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMaterialAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindMaterialAsset(asset) {\n\t\t\t\tasset.off('load', this._onMaterialAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onMaterialAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onMaterialAssetRemove, this);\n\t\t\t\tasset.off('change', this._onMaterialAssetChange, this);\n\t\t}\n\t\t_onMaterialAssetAdd(asset) {\n\t\t\t\tthis.system.app.assets.off(`add:${asset.id}`, this._onMaterialAssetAdd, this);\n\t\t\t\tif (this._materialAsset === asset.id) {\n\t\t\t\t\t\tthis._bindMaterialAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onMaterialAssetLoad(asset) {\n\t\t\t\tthis._setMaterial(asset.resource);\n\t\t}\n\t\t_onMaterialAssetUnload(asset) {\n\t\t\t\tthis._setMaterial(this.system.defaultMaterial);\n\t\t}\n\t\t_onMaterialAssetRemove(asset) {\n\t\t\t\tthis._onMaterialAssetUnload(asset);\n\t\t}\n\t\t_onMaterialAssetChange(asset) {}\n\t\t_bindModelAsset(asset) {\n\t\t\t\tthis._unbindModelAsset(asset);\n\t\t\t\tasset.on('load', this._onModelAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onModelAssetUnload, this);\n\t\t\t\tasset.on('change', this._onModelAssetChange, this);\n\t\t\t\tasset.on('remove', this._onModelAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onModelAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindModelAsset(asset) {\n\t\t\t\tasset.off('load', this._onModelAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onModelAssetUnload, this);\n\t\t\t\tasset.off('change', this._onModelAssetChange, this);\n\t\t\t\tasset.off('remove', this._onModelAssetRemove, this);\n\t\t}\n\t\t_onModelAssetAdded(asset) {\n\t\t\t\tthis.system.app.assets.off(`add:${asset.id}`, this._onModelAssetAdded, this);\n\t\t\t\tif (asset.id === this._asset) {\n\t\t\t\t\t\tthis._bindModelAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_onModelAssetLoad(asset) {\n\t\t\t\tthis.model = asset.resource.clone();\n\t\t\t\tthis._clonedModel = true;\n\t\t}\n\t\t_onModelAssetUnload(asset) {\n\t\t\t\tthis.model = null;\n\t\t}\n\t\t_onModelAssetChange(asset, attr, _new, _old) {\n\t\t\t\tif (attr === 'data') {\n\t\t\t\t\t\tthis.mapping = this._mapping;\n\t\t\t\t}\n\t\t}\n\t\t_onModelAssetRemove(asset) {\n\t\t\t\tthis.model = null;\n\t\t}\n\t\t_setMaterial(material) {\n\t\t\t\tif (this._material === material) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._material = material;\n\t\t\t\tconst model = this._model;\n\t\t\t\tif (model && this._type !== 'asset') {\n\t\t\t\t\t\tconst meshInstances = model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0, len = meshInstances.length; i < len; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].material = material;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass ModelComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$b = [\n\t\t'enabled'\n];\nclass ModelComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'model';\n\t\t\t\tthis.ComponentType = ModelComponent;\n\t\t\t\tthis.DataType = ModelComponentData;\n\t\t\t\tthis.schema = _schema$b;\n\t\t\t\tthis.defaultMaterial = getDefaultMaterial(app.graphicsDevice);\n\t\t\t\tthis.on('beforeremove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'material',\n\t\t\t\t\t\t'materialAsset',\n\t\t\t\t\t\t'asset',\n\t\t\t\t\t\t'castShadows',\n\t\t\t\t\t\t'receiveShadows',\n\t\t\t\t\t\t'castShadowsLightmap',\n\t\t\t\t\t\t'lightmapped',\n\t\t\t\t\t\t'lightmapSizeMultiplier',\n\t\t\t\t\t\t'type',\n\t\t\t\t\t\t'mapping',\n\t\t\t\t\t\t'layers',\n\t\t\t\t\t\t'isStatic',\n\t\t\t\t\t\t'batchGroupId'\n\t\t\t\t];\n\t\t\t\tif (_data.batchGroupId === null || _data.batchGroupId === undefined) {\n\t\t\t\t\t\t_data.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (_data.layers && _data.layers.length) {\n\t\t\t\t\t\t_data.layers = _data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tif (_data.hasOwnProperty(properties[i])) {\n\t\t\t\t\t\t\t\tcomponent[properties[i]] = _data[properties[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\t\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, _data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst data = {\n\t\t\t\t\t\ttype: entity.model.type,\n\t\t\t\t\t\tasset: entity.model.asset,\n\t\t\t\t\t\tcastShadows: entity.model.castShadows,\n\t\t\t\t\t\treceiveShadows: entity.model.receiveShadows,\n\t\t\t\t\t\tcastShadowsLightmap: entity.model.castShadowsLightmap,\n\t\t\t\t\t\tlightmapped: entity.model.lightmapped,\n\t\t\t\t\t\tlightmapSizeMultiplier: entity.model.lightmapSizeMultiplier,\n\t\t\t\t\t\tisStatic: entity.model.isStatic,\n\t\t\t\t\t\tenabled: entity.model.enabled,\n\t\t\t\t\t\tlayers: entity.model.layers,\n\t\t\t\t\t\tbatchGroupId: entity.model.batchGroupId,\n\t\t\t\t\t\tmapping: extend({}, entity.model.mapping)\n\t\t\t\t};\n\t\t\t\tlet materialAsset = entity.model.materialAsset;\n\t\t\t\tif (!(materialAsset instanceof Asset) && materialAsset != null) {\n\t\t\t\t\t\tmaterialAsset = this.app.assets.get(materialAsset);\n\t\t\t\t}\n\t\t\t\tconst material = entity.model.material;\n\t\t\t\tif (!material || material === this.defaultMaterial || !materialAsset || material === materialAsset.resource) {\n\t\t\t\t\t\tdata.materialAsset = materialAsset;\n\t\t\t\t}\n\t\t\t\tconst component = this.addComponent(clone, data);\n\t\t\t\tif (entity.model.model && entity.model.type === 'asset' && !entity.model.asset) {\n\t\t\t\t\t\tcomponent.model = entity.model.model.clone();\n\t\t\t\t\t\tcomponent._clonedModel = true;\n\t\t\t\t}\n\t\t\t\tif (!data.materialAsset) {\n\t\t\t\t\t\tcomponent.material = material;\n\t\t\t\t}\n\t\t\t\tif (entity.model.model) {\n\t\t\t\t\t\tconst meshInstances = entity.model.model.meshInstances;\n\t\t\t\t\t\tconst meshInstancesClone = component.model.meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].mask = meshInstances[i].mask;\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].material = meshInstances[i].material;\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].layer = meshInstances[i].layer;\n\t\t\t\t\t\t\t\tmeshInstancesClone[i].receiveShadow = meshInstances[i].receiveShadow;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (entity.model.customAabb) {\n\t\t\t\t\t\tcomponent.customAabb = entity.model.customAabb.clone();\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t}\n\t\tonRemove(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\nComponent._buildAccessors(ModelComponent.prototype, _schema$b);\n\nconst SIMPLE_PROPERTIES = [\n\t\t'emitterExtents',\n\t\t'emitterRadius',\n\t\t'emitterExtentsInner',\n\t\t'emitterRadiusInner',\n\t\t'loop',\n\t\t'initialVelocity',\n\t\t'animSpeed',\n\t\t'normalMap',\n\t\t'particleNormal'\n];\nconst COMPLEX_PROPERTIES = [\n\t\t'numParticles',\n\t\t'lifetime',\n\t\t'rate',\n\t\t'rate2',\n\t\t'startAngle',\n\t\t'startAngle2',\n\t\t'lighting',\n\t\t'halfLambert',\n\t\t'intensity',\n\t\t'wrap',\n\t\t'wrapBounds',\n\t\t'depthWrite',\n\t\t'noFog',\n\t\t'sort',\n\t\t'stretch',\n\t\t'alignToMotion',\n\t\t'preWarm',\n\t\t'emitterShape',\n\t\t'animTilesX',\n\t\t'animTilesY',\n\t\t'animStartFrame',\n\t\t'animNumFrames',\n\t\t'animNumAnimations',\n\t\t'animIndex',\n\t\t'randomizeAnimIndex',\n\t\t'animLoop',\n\t\t'colorMap',\n\t\t'localSpace',\n\t\t'screenSpace',\n\t\t'orientation'\n];\nconst GRAPH_PROPERTIES = [\n\t\t'scaleGraph',\n\t\t'scaleGraph2',\n\t\t'colorGraph',\n\t\t'colorGraph2',\n\t\t'alphaGraph',\n\t\t'alphaGraph2',\n\t\t'velocityGraph',\n\t\t'velocityGraph2',\n\t\t'localVelocityGraph',\n\t\t'localVelocityGraph2',\n\t\t'rotationSpeedGraph',\n\t\t'rotationSpeedGraph2',\n\t\t'radialSpeedGraph',\n\t\t'radialSpeedGraph2'\n];\nconst ASSET_PROPERTIES = [\n\t\t'colorMapAsset',\n\t\t'normalMapAsset',\n\t\t'meshAsset',\n\t\t'renderAsset'\n];\nlet depthLayer;\nclass ParticleSystemComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._requestedDepth = false, this._drawOrder = 0, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._evtSetMeshes = null;\n\t\t\t\tthis.on('set_colorMapAsset', this.onSetColorMapAsset, this);\n\t\t\t\tthis.on('set_normalMapAsset', this.onSetNormalMapAsset, this);\n\t\t\t\tthis.on('set_meshAsset', this.onSetMeshAsset, this);\n\t\t\t\tthis.on('set_mesh', this.onSetMesh, this);\n\t\t\t\tthis.on('set_renderAsset', this.onSetRenderAsset, this);\n\t\t\t\tthis.on('set_loop', this.onSetLoop, this);\n\t\t\t\tthis.on('set_blendType', this.onSetBlendType, this);\n\t\t\t\tthis.on('set_depthSoftening', this.onSetDepthSoftening, this);\n\t\t\t\tthis.on('set_layers', this.onSetLayers, this);\n\t\t\t\tSIMPLE_PROPERTIES.forEach((prop)=>{\n\t\t\t\t\t\tthis.on(`set_${prop}`, this.onSetSimpleProperty, this);\n\t\t\t\t});\n\t\t\t\tCOMPLEX_PROPERTIES.forEach((prop)=>{\n\t\t\t\t\t\tthis.on(`set_${prop}`, this.onSetComplexProperty, this);\n\t\t\t\t});\n\t\t\t\tGRAPH_PROPERTIES.forEach((prop)=>{\n\t\t\t\t\t\tthis.on(`set_${prop}`, this.onSetGraphProperty, this);\n\t\t\t\t});\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset autoPlay(arg) {\n\t\t\t\tthis._setValue('autoPlay', arg);\n\t\t}\n\t\tget autoPlay() {\n\t\t\t\treturn this.data.autoPlay;\n\t\t}\n\t\tset numParticles(arg) {\n\t\t\t\tthis._setValue('numParticles', arg);\n\t\t}\n\t\tget numParticles() {\n\t\t\t\treturn this.data.numParticles;\n\t\t}\n\t\tset lifetime(arg) {\n\t\t\t\tthis._setValue('lifetime', arg);\n\t\t}\n\t\tget lifetime() {\n\t\t\t\treturn this.data.lifetime;\n\t\t}\n\t\tset rate(arg) {\n\t\t\t\tthis._setValue('rate', arg);\n\t\t}\n\t\tget rate() {\n\t\t\t\treturn this.data.rate;\n\t\t}\n\t\tset rate2(arg) {\n\t\t\t\tthis._setValue('rate2', arg);\n\t\t}\n\t\tget rate2() {\n\t\t\t\treturn this.data.rate2;\n\t\t}\n\t\tset startAngle(arg) {\n\t\t\t\tthis._setValue('startAngle', arg);\n\t\t}\n\t\tget startAngle() {\n\t\t\t\treturn this.data.startAngle;\n\t\t}\n\t\tset startAngle2(arg) {\n\t\t\t\tthis._setValue('startAngle2', arg);\n\t\t}\n\t\tget startAngle2() {\n\t\t\t\treturn this.data.startAngle2;\n\t\t}\n\t\tset loop(arg) {\n\t\t\t\tthis._setValue('loop', arg);\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this.data.loop;\n\t\t}\n\t\tset preWarm(arg) {\n\t\t\t\tthis._setValue('preWarm', arg);\n\t\t}\n\t\tget preWarm() {\n\t\t\t\treturn this.data.preWarm;\n\t\t}\n\t\tset lighting(arg) {\n\t\t\t\tthis._setValue('lighting', arg);\n\t\t}\n\t\tget lighting() {\n\t\t\t\treturn this.data.lighting;\n\t\t}\n\t\tset halfLambert(arg) {\n\t\t\t\tthis._setValue('halfLambert', arg);\n\t\t}\n\t\tget halfLambert() {\n\t\t\t\treturn this.data.halfLambert;\n\t\t}\n\t\tset intensity(arg) {\n\t\t\t\tthis._setValue('intensity', arg);\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this.data.intensity;\n\t\t}\n\t\tset depthWrite(arg) {\n\t\t\t\tthis._setValue('depthWrite', arg);\n\t\t}\n\t\tget depthWrite() {\n\t\t\t\treturn this.data.depthWrite;\n\t\t}\n\t\tset noFog(arg) {\n\t\t\t\tthis._setValue('noFog', arg);\n\t\t}\n\t\tget noFog() {\n\t\t\t\treturn this.data.noFog;\n\t\t}\n\t\tset depthSoftening(arg) {\n\t\t\t\tthis._setValue('depthSoftening', arg);\n\t\t}\n\t\tget depthSoftening() {\n\t\t\t\treturn this.data.depthSoftening;\n\t\t}\n\t\tset sort(arg) {\n\t\t\t\tthis._setValue('sort', arg);\n\t\t}\n\t\tget sort() {\n\t\t\t\treturn this.data.sort;\n\t\t}\n\t\tset blendType(arg) {\n\t\t\t\tthis._setValue('blendType', arg);\n\t\t}\n\t\tget blendType() {\n\t\t\t\treturn this.data.blendType;\n\t\t}\n\t\tset stretch(arg) {\n\t\t\t\tthis._setValue('stretch', arg);\n\t\t}\n\t\tget stretch() {\n\t\t\t\treturn this.data.stretch;\n\t\t}\n\t\tset alignToMotion(arg) {\n\t\t\t\tthis._setValue('alignToMotion', arg);\n\t\t}\n\t\tget alignToMotion() {\n\t\t\t\treturn this.data.alignToMotion;\n\t\t}\n\t\tset emitterShape(arg) {\n\t\t\t\tthis._setValue('emitterShape', arg);\n\t\t}\n\t\tget emitterShape() {\n\t\t\t\treturn this.data.emitterShape;\n\t\t}\n\t\tset emitterExtents(arg) {\n\t\t\t\tthis._setValue('emitterExtents', arg);\n\t\t}\n\t\tget emitterExtents() {\n\t\t\t\treturn this.data.emitterExtents;\n\t\t}\n\t\tset emitterExtentsInner(arg) {\n\t\t\t\tthis._setValue('emitterExtentsInner', arg);\n\t\t}\n\t\tget emitterExtentsInner() {\n\t\t\t\treturn this.data.emitterExtentsInner;\n\t\t}\n\t\tset emitterRadius(arg) {\n\t\t\t\tthis._setValue('emitterRadius', arg);\n\t\t}\n\t\tget emitterRadius() {\n\t\t\t\treturn this.data.emitterRadius;\n\t\t}\n\t\tset emitterRadiusInner(arg) {\n\t\t\t\tthis._setValue('emitterRadiusInner', arg);\n\t\t}\n\t\tget emitterRadiusInner() {\n\t\t\t\treturn this.data.emitterRadiusInner;\n\t\t}\n\t\tset initialVelocity(arg) {\n\t\t\t\tthis._setValue('initialVelocity', arg);\n\t\t}\n\t\tget initialVelocity() {\n\t\t\t\treturn this.data.initialVelocity;\n\t\t}\n\t\tset wrap(arg) {\n\t\t\t\tthis._setValue('wrap', arg);\n\t\t}\n\t\tget wrap() {\n\t\t\t\treturn this.data.wrap;\n\t\t}\n\t\tset wrapBounds(arg) {\n\t\t\t\tthis._setValue('wrapBounds', arg);\n\t\t}\n\t\tget wrapBounds() {\n\t\t\t\treturn this.data.wrapBounds;\n\t\t}\n\t\tset localSpace(arg) {\n\t\t\t\tthis._setValue('localSpace', arg);\n\t\t}\n\t\tget localSpace() {\n\t\t\t\treturn this.data.localSpace;\n\t\t}\n\t\tset screenSpace(arg) {\n\t\t\t\tthis._setValue('screenSpace', arg);\n\t\t}\n\t\tget screenSpace() {\n\t\t\t\treturn this.data.screenSpace;\n\t\t}\n\t\tset colorMapAsset(arg) {\n\t\t\t\tthis._setValue('colorMapAsset', arg);\n\t\t}\n\t\tget colorMapAsset() {\n\t\t\t\treturn this.data.colorMapAsset;\n\t\t}\n\t\tset normalMapAsset(arg) {\n\t\t\t\tthis._setValue('normalMapAsset', arg);\n\t\t}\n\t\tget normalMapAsset() {\n\t\t\t\treturn this.data.normalMapAsset;\n\t\t}\n\t\tset mesh(arg) {\n\t\t\t\tthis._setValue('mesh', arg);\n\t\t}\n\t\tget mesh() {\n\t\t\t\treturn this.data.mesh;\n\t\t}\n\t\tset meshAsset(arg) {\n\t\t\t\tthis._setValue('meshAsset', arg);\n\t\t}\n\t\tget meshAsset() {\n\t\t\t\treturn this.data.meshAsset;\n\t\t}\n\t\tset renderAsset(arg) {\n\t\t\t\tthis._setValue('renderAsset', arg);\n\t\t}\n\t\tget renderAsset() {\n\t\t\t\treturn this.data.renderAsset;\n\t\t}\n\t\tset orientation(arg) {\n\t\t\t\tthis._setValue('orientation', arg);\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this.data.orientation;\n\t\t}\n\t\tset particleNormal(arg) {\n\t\t\t\tthis._setValue('particleNormal', arg);\n\t\t}\n\t\tget particleNormal() {\n\t\t\t\treturn this.data.particleNormal;\n\t\t}\n\t\tset localVelocityGraph(arg) {\n\t\t\t\tthis._setValue('localVelocityGraph', arg);\n\t\t}\n\t\tget localVelocityGraph() {\n\t\t\t\treturn this.data.localVelocityGraph;\n\t\t}\n\t\tset localVelocityGraph2(arg) {\n\t\t\t\tthis._setValue('localVelocityGraph2', arg);\n\t\t}\n\t\tget localVelocityGraph2() {\n\t\t\t\treturn this.data.localVelocityGraph2;\n\t\t}\n\t\tset velocityGraph(arg) {\n\t\t\t\tthis._setValue('velocityGraph', arg);\n\t\t}\n\t\tget velocityGraph() {\n\t\t\t\treturn this.data.velocityGraph;\n\t\t}\n\t\tset velocityGraph2(arg) {\n\t\t\t\tthis._setValue('velocityGraph2', arg);\n\t\t}\n\t\tget velocityGraph2() {\n\t\t\t\treturn this.data.velocityGraph2;\n\t\t}\n\t\tset rotationSpeedGraph(arg) {\n\t\t\t\tthis._setValue('rotationSpeedGraph', arg);\n\t\t}\n\t\tget rotationSpeedGraph() {\n\t\t\t\treturn this.data.rotationSpeedGraph;\n\t\t}\n\t\tset rotationSpeedGraph2(arg) {\n\t\t\t\tthis._setValue('rotationSpeedGraph2', arg);\n\t\t}\n\t\tget rotationSpeedGraph2() {\n\t\t\t\treturn this.data.rotationSpeedGraph2;\n\t\t}\n\t\tset radialSpeedGraph(arg) {\n\t\t\t\tthis._setValue('radialSpeedGraph', arg);\n\t\t}\n\t\tget radialSpeedGraph() {\n\t\t\t\treturn this.data.radialSpeedGraph;\n\t\t}\n\t\tset radialSpeedGraph2(arg) {\n\t\t\t\tthis._setValue('radialSpeedGraph2', arg);\n\t\t}\n\t\tget radialSpeedGraph2() {\n\t\t\t\treturn this.data.radialSpeedGraph2;\n\t\t}\n\t\tset scaleGraph(arg) {\n\t\t\t\tthis._setValue('scaleGraph', arg);\n\t\t}\n\t\tget scaleGraph() {\n\t\t\t\treturn this.data.scaleGraph;\n\t\t}\n\t\tset scaleGraph2(arg) {\n\t\t\t\tthis._setValue('scaleGraph2', arg);\n\t\t}\n\t\tget scaleGraph2() {\n\t\t\t\treturn this.data.scaleGraph2;\n\t\t}\n\t\tset colorGraph(arg) {\n\t\t\t\tthis._setValue('colorGraph', arg);\n\t\t}\n\t\tget colorGraph() {\n\t\t\t\treturn this.data.colorGraph;\n\t\t}\n\t\tset colorGraph2(arg) {\n\t\t\t\tthis._setValue('colorGraph2', arg);\n\t\t}\n\t\tget colorGraph2() {\n\t\t\t\treturn this.data.colorGraph2;\n\t\t}\n\t\tset alphaGraph(arg) {\n\t\t\t\tthis._setValue('alphaGraph', arg);\n\t\t}\n\t\tget alphaGraph() {\n\t\t\t\treturn this.data.alphaGraph;\n\t\t}\n\t\tset alphaGraph2(arg) {\n\t\t\t\tthis._setValue('alphaGraph2', arg);\n\t\t}\n\t\tget alphaGraph2() {\n\t\t\t\treturn this.data.alphaGraph2;\n\t\t}\n\t\tset colorMap(arg) {\n\t\t\t\tthis._setValue('colorMap', arg);\n\t\t}\n\t\tget colorMap() {\n\t\t\t\treturn this.data.colorMap;\n\t\t}\n\t\tset normalMap(arg) {\n\t\t\t\tthis._setValue('normalMap', arg);\n\t\t}\n\t\tget normalMap() {\n\t\t\t\treturn this.data.normalMap;\n\t\t}\n\t\tset animTilesX(arg) {\n\t\t\t\tthis._setValue('animTilesX', arg);\n\t\t}\n\t\tget animTilesX() {\n\t\t\t\treturn this.data.animTilesX;\n\t\t}\n\t\tset animTilesY(arg) {\n\t\t\t\tthis._setValue('animTilesY', arg);\n\t\t}\n\t\tget animTilesY() {\n\t\t\t\treturn this.data.animTilesY;\n\t\t}\n\t\tset animStartFrame(arg) {\n\t\t\t\tthis._setValue('animStartFrame', arg);\n\t\t}\n\t\tget animStartFrame() {\n\t\t\t\treturn this.data.animStartFrame;\n\t\t}\n\t\tset animNumFrames(arg) {\n\t\t\t\tthis._setValue('animNumFrames', arg);\n\t\t}\n\t\tget animNumFrames() {\n\t\t\t\treturn this.data.animNumFrames;\n\t\t}\n\t\tset animNumAnimations(arg) {\n\t\t\t\tthis._setValue('animNumAnimations', arg);\n\t\t}\n\t\tget animNumAnimations() {\n\t\t\t\treturn this.data.animNumAnimations;\n\t\t}\n\t\tset animIndex(arg) {\n\t\t\t\tthis._setValue('animIndex', arg);\n\t\t}\n\t\tget animIndex() {\n\t\t\t\treturn this.data.animIndex;\n\t\t}\n\t\tset randomizeAnimIndex(arg) {\n\t\t\t\tthis._setValue('randomizeAnimIndex', arg);\n\t\t}\n\t\tget randomizeAnimIndex() {\n\t\t\t\treturn this.data.randomizeAnimIndex;\n\t\t}\n\t\tset animSpeed(arg) {\n\t\t\t\tthis._setValue('animSpeed', arg);\n\t\t}\n\t\tget animSpeed() {\n\t\t\t\treturn this.data.animSpeed;\n\t\t}\n\t\tset animLoop(arg) {\n\t\t\t\tthis._setValue('animLoop', arg);\n\t\t}\n\t\tget animLoop() {\n\t\t\t\treturn this.data.animLoop;\n\t\t}\n\t\tset layers(arg) {\n\t\t\t\tthis._setValue('layers', arg);\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this.data.layers;\n\t\t}\n\t\tset drawOrder(drawOrder) {\n\t\t\t\tthis._drawOrder = drawOrder;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.drawOrder = drawOrder;\n\t\t\t\t}\n\t\t}\n\t\tget drawOrder() {\n\t\t\t\treturn this._drawOrder;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\taddMeshInstanceToLayers() {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.emitter._layer = layer;\n\t\t\t\t}\n\t\t}\n\t\tremoveMeshInstanceFromLayers() {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tonSetLayers(name, oldValue, newValue) {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(oldValue[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\tfor(let i = 0; i < newValue.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(newValue[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addMeshInstanceToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t]);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tif (!this.emitter) return;\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\tthis.emitter.meshInstance\n\t\t\t\t]);\n\t\t}\n\t\t_bindColorMapAsset(asset) {\n\t\t\t\tasset.on('load', this._onColorMapAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onColorMapAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onColorMapAssetRemove, this);\n\t\t\t\tasset.on('change', this._onColorMapAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onColorMapAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindColorMapAsset(asset) {\n\t\t\t\tasset.off('load', this._onColorMapAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onColorMapAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onColorMapAssetRemove, this);\n\t\t\t\tasset.off('change', this._onColorMapAssetChange, this);\n\t\t}\n\t\t_onColorMapAssetLoad(asset) {\n\t\t\t\tthis.colorMap = asset.resource;\n\t\t}\n\t\t_onColorMapAssetUnload(asset) {\n\t\t\t\tthis.colorMap = null;\n\t\t}\n\t\t_onColorMapAssetRemove(asset) {\n\t\t\t\tthis._onColorMapAssetUnload(asset);\n\t\t}\n\t\t_onColorMapAssetChange(asset) {}\n\t\tonSetColorMapAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindColorMapAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.colorMapAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindColorMapAsset(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tassets.once(`add:${newValue}`, (asset)=>{\n\t\t\t\t\t\t\t\t\t\tthis._bindColorMapAsset(asset);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.colorMap = null;\n\t\t\t\t}\n\t\t}\n\t\t_bindNormalMapAsset(asset) {\n\t\t\t\tasset.on('load', this._onNormalMapAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onNormalMapAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onNormalMapAssetRemove, this);\n\t\t\t\tasset.on('change', this._onNormalMapAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onNormalMapAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindNormalMapAsset(asset) {\n\t\t\t\tasset.off('load', this._onNormalMapAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onNormalMapAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onNormalMapAssetRemove, this);\n\t\t\t\tasset.off('change', this._onNormalMapAssetChange, this);\n\t\t}\n\t\t_onNormalMapAssetLoad(asset) {\n\t\t\t\tthis.normalMap = asset.resource;\n\t\t}\n\t\t_onNormalMapAssetUnload(asset) {\n\t\t\t\tthis.normalMap = null;\n\t\t}\n\t\t_onNormalMapAssetRemove(asset) {\n\t\t\t\tthis._onNormalMapAssetUnload(asset);\n\t\t}\n\t\t_onNormalMapAssetChange(asset) {}\n\t\tonSetNormalMapAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindNormalMapAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.normalMapAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindNormalMapAsset(asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tassets.once(`add:${newValue}`, (asset)=>{\n\t\t\t\t\t\t\t\t\t\tthis._bindNormalMapAsset(asset);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.normalMap = null;\n\t\t\t\t}\n\t\t}\n\t\t_bindMeshAsset(asset) {\n\t\t\t\tasset.on('load', this._onMeshAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onMeshAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onMeshAssetRemove, this);\n\t\t\t\tasset.on('change', this._onMeshAssetChange, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMeshAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindMeshAsset(asset) {\n\t\t\t\tasset.off('load', this._onMeshAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onMeshAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onMeshAssetRemove, this);\n\t\t\t\tasset.off('change', this._onMeshAssetChange, this);\n\t\t}\n\t\t_onMeshAssetLoad(asset) {\n\t\t\t\tthis._onMeshChanged(asset.resource);\n\t\t}\n\t\t_onMeshAssetUnload(asset) {\n\t\t\t\tthis.mesh = null;\n\t\t}\n\t\t_onMeshAssetRemove(asset) {\n\t\t\t\tthis._onMeshAssetUnload(asset);\n\t\t}\n\t\t_onMeshAssetChange(asset) {}\n\t\tonSetMeshAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindMeshAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.meshAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindMeshAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onMeshChanged(null);\n\t\t\t\t}\n\t\t}\n\t\tonSetMesh(name, oldValue, newValue) {\n\t\t\t\tif (!newValue || newValue instanceof Asset || typeof newValue === 'number') {\n\t\t\t\t\t\tthis.meshAsset = newValue;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onMeshChanged(newValue);\n\t\t\t\t}\n\t\t}\n\t\t_onMeshChanged(mesh) {\n\t\t\t\tif (mesh && !(mesh instanceof Mesh)) {\n\t\t\t\t\t\tif (mesh.meshInstances[0]) {\n\t\t\t\t\t\t\t\tmesh = mesh.meshInstances[0].mesh;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmesh = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.data.mesh = mesh;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.mesh = mesh;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t}\n\t\t}\n\t\tonSetRenderAsset(name, oldValue, newValue) {\n\t\t\t\tconst assets = this.system.app.assets;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tconst asset = assets.get(oldValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._unbindRenderAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newValue) {\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.renderAsset = newValue.id;\n\t\t\t\t\t\t\t\tnewValue = newValue.id;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst asset = assets.get(newValue);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._bindRenderAsset(asset);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onRenderChanged(null);\n\t\t\t\t}\n\t\t}\n\t\t_bindRenderAsset(asset) {\n\t\t\t\tasset.on('load', this._onRenderAssetLoad, this);\n\t\t\t\tasset.on('unload', this._onRenderAssetUnload, this);\n\t\t\t\tasset.on('remove', this._onRenderAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onRenderAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!this.enabled || !this.entity.enabled) return;\n\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindRenderAsset(asset) {\n\t\t\t\tasset.off('load', this._onRenderAssetLoad, this);\n\t\t\t\tasset.off('unload', this._onRenderAssetUnload, this);\n\t\t\t\tasset.off('remove', this._onRenderAssetRemove, this);\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t}\n\t\t_onRenderAssetLoad(asset) {\n\t\t\t\tthis._onRenderChanged(asset.resource);\n\t\t}\n\t\t_onRenderAssetUnload(asset) {\n\t\t\t\tthis._onRenderChanged(null);\n\t\t}\n\t\t_onRenderAssetRemove(asset) {\n\t\t\t\tthis._onRenderAssetUnload(asset);\n\t\t}\n\t\t_onRenderChanged(render) {\n\t\t\t\tif (!render) {\n\t\t\t\t\t\tthis._onMeshChanged(null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = render.on('set:meshes', this._onRenderSetMeshes, this);\n\t\t\t\tif (render.meshes) {\n\t\t\t\t\t\tthis._onRenderSetMeshes(render.meshes);\n\t\t\t\t}\n\t\t}\n\t\t_onRenderSetMeshes(meshes) {\n\t\t\t\tthis._onMeshChanged(meshes && meshes[0]);\n\t\t}\n\t\tonSetLoop(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.resetTime();\n\t\t\t\t}\n\t\t}\n\t\tonSetBlendType(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.material.blendType = newValue;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t}\n\t\t}\n\t\t_requestDepth() {\n\t\t\t\tif (this._requestedDepth) return;\n\t\t\t\tif (!depthLayer) depthLayer = this.system.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.incrementCounter();\n\t\t\t\t\t\tthis._requestedDepth = true;\n\t\t\t\t}\n\t\t}\n\t\t_releaseDepth() {\n\t\t\t\tif (!this._requestedDepth) return;\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.decrementCounter();\n\t\t\t\t\t\tthis._requestedDepth = false;\n\t\t\t\t}\n\t\t}\n\t\tonSetDepthSoftening(name, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) this._requestDepth();\n\t\t\t\t\t\t\t\tif (this.emitter) this.emitter[name] = newValue;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) this._releaseDepth();\n\t\t\t\t\t\t\t\tif (this.emitter) this.emitter[name] = newValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\t\t\tthis.reset();\n\t\t\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonSetSimpleProperty(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t}\n\t\t}\n\t\tonSetComplexProperty(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t}\n\t\tonSetGraphProperty(name, oldValue, newValue) {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter[name] = newValue;\n\t\t\t\t\t\tthis.emitter.rebuildGraphs();\n\t\t\t\t\t\tthis.emitter.resetMaterial();\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tconst data = this.data;\n\t\t\t\tfor(let i = 0, len = ASSET_PROPERTIES.length; i < len; i++){\n\t\t\t\t\t\tlet asset = data[ASSET_PROPERTIES[i]];\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tif (!(asset instanceof Asset)) {\n\t\t\t\t\t\t\t\t\t\tconst id = parseInt(asset, 10);\n\t\t\t\t\t\t\t\t\t\tif (id >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset = this.system.app.assets.get(asset);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (asset && !asset.resource) {\n\t\t\t\t\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.system.app.graphicsDevice.disableParticleSystem) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.emitter) {\n\t\t\t\t\t\tlet mesh = data.mesh;\n\t\t\t\t\t\tif (!(mesh instanceof Mesh)) {\n\t\t\t\t\t\t\t\tmesh = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.emitter = new ParticleEmitter(this.system.app.graphicsDevice, {\n\t\t\t\t\t\t\t\tnumParticles: data.numParticles,\n\t\t\t\t\t\t\t\temitterExtents: data.emitterExtents,\n\t\t\t\t\t\t\t\temitterExtentsInner: data.emitterExtentsInner,\n\t\t\t\t\t\t\t\temitterRadius: data.emitterRadius,\n\t\t\t\t\t\t\t\temitterRadiusInner: data.emitterRadiusInner,\n\t\t\t\t\t\t\t\temitterShape: data.emitterShape,\n\t\t\t\t\t\t\t\tinitialVelocity: data.initialVelocity,\n\t\t\t\t\t\t\t\twrap: data.wrap,\n\t\t\t\t\t\t\t\tlocalSpace: data.localSpace,\n\t\t\t\t\t\t\t\tscreenSpace: data.screenSpace,\n\t\t\t\t\t\t\t\twrapBounds: data.wrapBounds,\n\t\t\t\t\t\t\t\tlifetime: data.lifetime,\n\t\t\t\t\t\t\t\trate: data.rate,\n\t\t\t\t\t\t\t\trate2: data.rate2,\n\t\t\t\t\t\t\t\torientation: data.orientation,\n\t\t\t\t\t\t\t\tparticleNormal: data.particleNormal,\n\t\t\t\t\t\t\t\tanimTilesX: data.animTilesX,\n\t\t\t\t\t\t\t\tanimTilesY: data.animTilesY,\n\t\t\t\t\t\t\t\tanimStartFrame: data.animStartFrame,\n\t\t\t\t\t\t\t\tanimNumFrames: data.animNumFrames,\n\t\t\t\t\t\t\t\tanimNumAnimations: data.animNumAnimations,\n\t\t\t\t\t\t\t\tanimIndex: data.animIndex,\n\t\t\t\t\t\t\t\trandomizeAnimIndex: data.randomizeAnimIndex,\n\t\t\t\t\t\t\t\tanimSpeed: data.animSpeed,\n\t\t\t\t\t\t\t\tanimLoop: data.animLoop,\n\t\t\t\t\t\t\t\tstartAngle: data.startAngle,\n\t\t\t\t\t\t\t\tstartAngle2: data.startAngle2,\n\t\t\t\t\t\t\t\tscaleGraph: data.scaleGraph,\n\t\t\t\t\t\t\t\tscaleGraph2: data.scaleGraph2,\n\t\t\t\t\t\t\t\tcolorGraph: data.colorGraph,\n\t\t\t\t\t\t\t\tcolorGraph2: data.colorGraph2,\n\t\t\t\t\t\t\t\talphaGraph: data.alphaGraph,\n\t\t\t\t\t\t\t\talphaGraph2: data.alphaGraph2,\n\t\t\t\t\t\t\t\tlocalVelocityGraph: data.localVelocityGraph,\n\t\t\t\t\t\t\t\tlocalVelocityGraph2: data.localVelocityGraph2,\n\t\t\t\t\t\t\t\tvelocityGraph: data.velocityGraph,\n\t\t\t\t\t\t\t\tvelocityGraph2: data.velocityGraph2,\n\t\t\t\t\t\t\t\trotationSpeedGraph: data.rotationSpeedGraph,\n\t\t\t\t\t\t\t\trotationSpeedGraph2: data.rotationSpeedGraph2,\n\t\t\t\t\t\t\t\tradialSpeedGraph: data.radialSpeedGraph,\n\t\t\t\t\t\t\t\tradialSpeedGraph2: data.radialSpeedGraph2,\n\t\t\t\t\t\t\t\tcolorMap: data.colorMap,\n\t\t\t\t\t\t\t\tnormalMap: data.normalMap,\n\t\t\t\t\t\t\t\tloop: data.loop,\n\t\t\t\t\t\t\t\tpreWarm: data.preWarm,\n\t\t\t\t\t\t\t\tsort: data.sort,\n\t\t\t\t\t\t\t\tstretch: data.stretch,\n\t\t\t\t\t\t\t\talignToMotion: data.alignToMotion,\n\t\t\t\t\t\t\t\tlighting: data.lighting,\n\t\t\t\t\t\t\t\thalfLambert: data.halfLambert,\n\t\t\t\t\t\t\t\tintensity: data.intensity,\n\t\t\t\t\t\t\t\tdepthSoftening: data.depthSoftening,\n\t\t\t\t\t\t\t\tscene: this.system.app.scene,\n\t\t\t\t\t\t\t\tmesh: mesh,\n\t\t\t\t\t\t\t\tdepthWrite: data.depthWrite,\n\t\t\t\t\t\t\t\tnoFog: data.noFog,\n\t\t\t\t\t\t\t\tnode: this.entity,\n\t\t\t\t\t\t\t\tblendType: data.blendType\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.emitter.meshInstance.node = this.entity;\n\t\t\t\t\t\tthis.emitter.drawOrder = this.drawOrder;\n\t\t\t\t\t\tif (!data.autoPlay) {\n\t\t\t\t\t\t\t\tthis.pause();\n\t\t\t\t\t\t\t\tthis.emitter.meshInstance.visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.emitter.colorMap) {\n\t\t\t\t\t\tthis.addMeshInstanceToLayers();\n\t\t\t\t}\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled && data.depthSoftening) {\n\t\t\t\t\t\tthis._requestDepth();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.removeMeshInstanceFromLayers();\n\t\t\t\t\t\tif (this.data.depthSoftening) this._releaseDepth();\n\t\t\t\t\t\tthis.emitter.camera = null;\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove() {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tthis.enabled = false;\n\t\t\t\t}\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.destroy();\n\t\t\t\t\t\tthis.emitter = null;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < ASSET_PROPERTIES.length; i++){\n\t\t\t\t\t\tconst prop = ASSET_PROPERTIES[i];\n\t\t\t\t\t\tif (this.data[prop]) {\n\t\t\t\t\t\t\t\tthis[prop] = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.off();\n\t\t}\n\t\treset() {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.reset();\n\t\t\t\t}\n\t\t}\n\t\tstop() {\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.loop = false;\n\t\t\t\t\t\tthis.emitter.resetTime();\n\t\t\t\t\t\tthis.emitter.addTime(0, true);\n\t\t\t\t}\n\t\t}\n\t\tpause() {\n\t\t\t\tthis.data.paused = true;\n\t\t}\n\t\tunpause() {\n\t\t\t\tthis.data.paused = false;\n\t\t}\n\t\tplay() {\n\t\t\t\tthis.data.paused = false;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.meshInstance.visible = true;\n\t\t\t\t\t\tthis.emitter.loop = this.data.loop;\n\t\t\t\t\t\tthis.emitter.resetTime();\n\t\t\t\t}\n\t\t}\n\t\tisPlaying() {\n\t\t\t\tif (this.data.paused) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (this.emitter && this.emitter.loop) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn Date.now() <= this.emitter.endTime;\n\t\t}\n\t\tsetInTools() {\n\t\t\t\tconst { emitter } = this;\n\t\t\t\tif (emitter && !emitter.inTools) {\n\t\t\t\t\t\temitter.inTools = true;\n\t\t\t\t\t\tthis.rebuild();\n\t\t\t\t}\n\t\t}\n\t\trebuild() {\n\t\t\t\tconst enabled = this.enabled;\n\t\t\t\tthis.enabled = false;\n\t\t\t\tif (this.emitter) {\n\t\t\t\t\t\tthis.emitter.rebuild();\n\t\t\t\t}\n\t\t\t\tthis.enabled = enabled;\n\t\t}\n}\n\nclass ParticleSystemComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.numParticles = 1;\n\t\t\t\tthis.rate = 1;\n\t\t\t\tthis.rate2 = null;\n\t\t\t\tthis.startAngle = 0;\n\t\t\t\tthis.startAngle2 = null;\n\t\t\t\tthis.lifetime = 50;\n\t\t\t\tthis.emitterExtents = new Vec3();\n\t\t\t\tthis.emitterExtentsInner = new Vec3();\n\t\t\t\tthis.emitterRadius = 0;\n\t\t\t\tthis.emitterRadiusInner = 0;\n\t\t\t\tthis.emitterShape = EMITTERSHAPE_BOX;\n\t\t\t\tthis.initialVelocity = 0;\n\t\t\t\tthis.wrap = false;\n\t\t\t\tthis.wrapBounds = new Vec3();\n\t\t\t\tthis.localSpace = false;\n\t\t\t\tthis.screenSpace = false;\n\t\t\t\tthis.colorMap = null;\n\t\t\t\tthis.colorMapAsset = null;\n\t\t\t\tthis.normalMap = null;\n\t\t\t\tthis.normalMapAsset = null;\n\t\t\t\tthis.loop = true;\n\t\t\t\tthis.preWarm = false;\n\t\t\t\tthis.sort = 0;\n\t\t\t\tthis.mode = PARTICLEMODE_GPU;\n\t\t\t\tthis.scene = null;\n\t\t\t\tthis.lighting = false;\n\t\t\t\tthis.halfLambert = false;\n\t\t\t\tthis.intensity = 1;\n\t\t\t\tthis.stretch = 0.0;\n\t\t\t\tthis.alignToMotion = false;\n\t\t\t\tthis.depthSoftening = 0;\n\t\t\t\tthis.renderAsset = null;\n\t\t\t\tthis.meshAsset = null;\n\t\t\t\tthis.mesh = null;\n\t\t\t\tthis.depthWrite = false;\n\t\t\t\tthis.noFog = false;\n\t\t\t\tthis.orientation = PARTICLEORIENTATION_SCREEN;\n\t\t\t\tthis.particleNormal = new Vec3(0, 1, 0);\n\t\t\t\tthis.animTilesX = 1;\n\t\t\t\tthis.animTilesY = 1;\n\t\t\t\tthis.animStartFrame = 0;\n\t\t\t\tthis.animNumFrames = 1;\n\t\t\t\tthis.animNumAnimations = 1;\n\t\t\t\tthis.animIndex = 0;\n\t\t\t\tthis.randomizeAnimIndex = false;\n\t\t\t\tthis.animSpeed = 1;\n\t\t\t\tthis.animLoop = true;\n\t\t\t\tthis.scaleGraph = null;\n\t\t\t\tthis.scaleGraph2 = null;\n\t\t\t\tthis.colorGraph = null;\n\t\t\t\tthis.colorGraph2 = null;\n\t\t\t\tthis.alphaGraph = null;\n\t\t\t\tthis.alphaGraph2 = null;\n\t\t\t\tthis.localVelocityGraph = null;\n\t\t\t\tthis.localVelocityGraph2 = null;\n\t\t\t\tthis.velocityGraph = null;\n\t\t\t\tthis.velocityGraph2 = null;\n\t\t\t\tthis.rotationSpeedGraph = null;\n\t\t\t\tthis.rotationSpeedGraph2 = null;\n\t\t\t\tthis.radialSpeedGraph = null;\n\t\t\t\tthis.radialSpeedGraph2 = null;\n\t\t\t\tthis.blendType = BLEND_NORMAL;\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.paused = false;\n\t\t\t\tthis.autoPlay = true;\n\t\t\t\tthis.layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t];\n\t\t}\n}\n\nvar particlePS$1 = `\nvarying vec4 texCoordsAlphaLife;\nuniform sampler2D colorMap;\nuniform sampler2D colorParam;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform vec4 camera_params;\n#endif\n#ifdef SOFT\n\tuniform float softening;\n#endif\nuniform float colorMult;\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvoid main(void) {\n\tvec4 tex  = texture2D(colorMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y));\n\tvec4 ramp = texture2D(colorParam, vec2(texCoordsAlphaLife.w, 0.0));\n\tramp.rgb *= colorMult;\n\tramp.a += texCoordsAlphaLife.z;\n\tvec3 rgb = tex.rgb * ramp.rgb;\n\tfloat a  = tex.a * ramp.a;\n`;\n\nvar particleVS$1 = `\nvec3 unpack3NFloats(float src) {\n\tfloat r = fract(src);\n\tfloat g = fract(src * 256.0);\n\tfloat b = fract(src * 65536.0);\n\treturn vec3(r, g, b);\n}\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc) {\n\treturn mix( texture2D(tex,tc), texture2D(tex,tc + graphSampleSize), fract(tc.x*graphNumSamples) );\n}\nvec4 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) {\n\tvec4 a = texture2D(tex,tc);\n\tvec4 b = texture2D(tex,tc + graphSampleSize);\n\tfloat c = fract(tc.x*graphNumSamples);\n\tvec3 unpackedA = unpack3NFloats(a.w);\n\tvec3 unpackedB = unpack3NFloats(b.w);\n\tw = mix(unpackedA, unpackedB, c);\n\treturn mix(a, b, c);\n}\nvec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix) {\n\tfloat c = cos(pRotation);\n\tfloat s = sin(pRotation);\n\tmat2 m = mat2(c, -s, s, c);\n\trotMatrix = m;\n\treturn m * quadXY;\n}\nvec3 billboard(vec3 InstanceCoords, vec2 quadXY) {\n\t#ifdef SCREEN_SPACE\n\t\tvec3 pos = vec3(-1, 0, 0) * quadXY.x + vec3(0, -1, 0) * quadXY.y;\n\t#else\n\t\tvec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y;\n\t#endif\n\treturn pos;\n}\nvec3 customFace(vec3 InstanceCoords, vec2 quadXY) {\n\tvec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y;\n\treturn pos;\n}\nvec2 safeNormalize(vec2 v) {\n\tfloat l = length(v);\n\treturn (l > 1e-06) ? v / l : v;\n}\nvoid main(void) {\n\tvec3 meshLocalPos = particle_vertexData.xyz;\n\tfloat id = floor(particle_vertexData.w);\n\tfloat rndFactor = fract(sin(id + 1.0 + seed));\n\tvec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\tfloat uv = id / numParticlesPot;\n\treadInput(uv);\n#ifdef LOCAL_SPACE\n\tinVel = mat3(matrix_model) * inVel;\n#endif\n\tvec2 velocityV = safeNormalize((mat3(matrix_view) * inVel).xy);\n\tfloat particleLifetime = lifetime;\n\tif (inLife <= 0.0 || inLife > particleLifetime || !inShow)\n\t\tmeshLocalPos = vec3(0.0);\n\tvec2 quadXY = meshLocalPos.xy;\n\tfloat nlife = clamp(inLife / particleLifetime, 0.0, 1.0);\n\tvec3 paramDiv;\n\tvec4 params = tex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv);\n\tfloat scale = params.y;\n\tfloat scaleDiv = paramDiv.x;\n\tfloat alphaDiv = paramDiv.z;\n\tscale += (scaleDiv * 2.0 - 1.0) * scaleDivMult * fract(rndFactor*10000.0);\n#ifndef USE_MESH\n\ttexCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife);\n#else\n\ttexCoordsAlphaLife = vec4(particle_uv, (alphaDiv * 2.0 - 1.0) * alphaDivMult * fract(rndFactor*1000.0), nlife);\n#endif\n\tvec3 particlePos = inPos;\n\tvec3 particlePosMoved = vec3(0.0);\n\tmat2 rotMatrix;\n`;\n\nvar particleAnimFrameClampVS$1 = `\n\tfloat animFrame = min(floor(texCoordsAlphaLife.w * animTexParams.y) + animTexParams.x, animTexParams.z);\n`;\n\nvar particleAnimFrameLoopVS$1 = `\n\tfloat animFrame = floor(mod(texCoordsAlphaLife.w * animTexParams.y + animTexParams.x, animTexParams.z + 1.0));\n`;\n\nvar particleAnimTexVS$1 = `\n\tfloat animationIndex;\n\tif (animTexIndexParams.y == 1.0) {\n\t\tanimationIndex = floor((animTexParams.w + 1.0) * rndFactor3.z) * (animTexParams.z + 1.0);\n\t} else {\n\t\tanimationIndex = animTexIndexParams.x * (animTexParams.z + 1.0);\n\t}\n\tfloat atlasX = (animationIndex + animFrame) * animTexTilesParams.x;\n\tfloat atlasY = 1.0 - floor(atlasX + 1.0) * animTexTilesParams.y;\n\tatlasX = fract(atlasX);\n\ttexCoordsAlphaLife.xy *= animTexTilesParams.xy;\n\ttexCoordsAlphaLife.xy += vec2(atlasX, atlasY);\n`;\n\nvar particleInputFloatPS$1 = `\nvoid readInput(float uv) {\n\tvec4 tex = texture2D(particleTexIN, vec2(uv, 0.25));\n\tvec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.75));\n\tinPos = tex.xyz;\n\tinVel = tex2.xyz;\n\tinAngle = (tex.w < 0.0? -tex.w : tex.w) - 1000.0;\n\tinShow = tex.w >= 0.0;\n\tinLife = tex2.w;\n}\n`;\n\nvar particleInputRgba8PS$1 = `\n#define PI2 6.283185307179586\nuniform vec3 inBoundsSize;\nuniform vec3 inBoundsCenter;\nuniform float maxVel;\nfloat decodeFloatRG(vec2 rg) {\n\treturn rg.y * (1.0 / 255.0) + rg.x;\n}\nfloat decodeFloatRGBA( vec4 rgba ) {\n\treturn dot(rgba, vec4(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0));\n}\nvoid readInput(float uv) {\n\tvec4 tex0 = texture2D(particleTexIN, vec2(uv, 0.125));\n\tvec4 tex1 = texture2D(particleTexIN, vec2(uv, 0.375));\n\tvec4 tex2 = texture2D(particleTexIN, vec2(uv, 0.625));\n\tvec4 tex3 = texture2D(particleTexIN, vec2(uv, 0.875));\n\tinPos = vec3(decodeFloatRG(tex0.rg), decodeFloatRG(tex0.ba), decodeFloatRG(tex1.rg));\n\tinPos = (inPos - vec3(0.5)) * inBoundsSize + inBoundsCenter;\n\tinVel = tex2.xyz;\n\tinVel = (inVel - vec3(0.5)) * maxVel;\n\tinAngle = decodeFloatRG(tex1.ba) * PI2;\n\tinShow = tex2.a > 0.5;\n\tinLife = decodeFloatRGBA(tex3);\n\tfloat maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv));\n\tfloat maxPosLife = lifetime+1.0;\n\tinLife = inLife * (maxNegLife + maxPosLife) - maxNegLife;\n}\n`;\n\nvar particleOutputFloatPS$1 = `\nvoid writeOutput() {\n\tif (gl_FragCoord.y<1.0) {\n\t\tgl_FragColor = vec4(outPos, (outAngle + 1000.0) * visMode);\n\t} else {\n\t\tgl_FragColor = vec4(outVel, outLife);\n\t}\n}\n`;\n\nvar particleOutputRgba8PS$1 = `\nuniform vec3 outBoundsMul;\nuniform vec3 outBoundsAdd;\nvec2 encodeFloatRG( float v ) {\n\tvec2 enc = vec2(1.0, 255.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yy * vec2(1.0/255.0, 1.0/255.0);\n\treturn enc;\n}\nvec4 encodeFloatRGBA( float v ) {\n\tvec4 enc = vec4(1.0, 255.0, 65025.0, 160581375.0) * v;\n\tenc = fract(enc);\n\tenc -= enc.yzww * vec4(1.0/255.0,1.0/255.0,1.0/255.0,0.0);\n\treturn enc;\n}\nvoid writeOutput() {\n\toutPos = outPos * outBoundsMul + outBoundsAdd;\n\toutAngle = fract(outAngle / PI2);\n\toutVel = (outVel / maxVel) + vec3(0.5);\n\tfloat maxNegLife = max(lifetime, (numParticles - 1.0) * (rate+rateDiv));\n\tfloat maxPosLife = lifetime+1.0;\n\toutLife = (outLife + maxNegLife) / (maxNegLife + maxPosLife);\n\tif (gl_FragCoord.y < 1.0) {\n\t\tgl_FragColor = vec4(encodeFloatRG(outPos.x), encodeFloatRG(outPos.y));\n\t} else if (gl_FragCoord.y < 2.0) {\n\t\tgl_FragColor = vec4(encodeFloatRG(outPos.z), encodeFloatRG(outAngle));\n\t} else if (gl_FragCoord.y < 3.0) {\n\t\tgl_FragColor = vec4(outVel, visMode*0.5+0.5);\n\t} else {\n\t\tgl_FragColor = encodeFloatRGBA(outLife);\n\t}\n}\n`;\n\nvar particleUpdaterAABBPS$1 = `\nuniform mat3 spawnBounds;\nuniform vec3 spawnPosInnerRatio;\nvec3 calcSpawnPosition(vec3 inBounds, float rndFactor) {\n\tvec3 pos = inBounds - vec3(0.5);\n\tvec3 posAbs = abs(pos);\n\tvec3 maxPos = vec3(max(posAbs.x, max(posAbs.y, posAbs.z)));\n\tvec3 edge = maxPos + (vec3(0.5) - maxPos) * spawnPosInnerRatio;\n\tpos.x = edge.x * (maxPos.x == posAbs.x ? sign(pos.x) : 2.0 * pos.x);\n\tpos.y = edge.y * (maxPos.y == posAbs.y ? sign(pos.y) : 2.0 * pos.y);\n\tpos.z = edge.z * (maxPos.z == posAbs.z ? sign(pos.z) : 2.0 * pos.z);\n#ifndef LOCAL_SPACE\n\treturn emitterPos + spawnBounds * pos;\n#else\n\treturn spawnBounds * pos;\n#endif\n}\nvoid addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) {\n\tlocalVelocity -= vec3(0, 0, initialVelocity);\n}\n`;\n\nvar particleUpdaterEndPS$1 = `\n\twriteOutput();\n}\n`;\n\nvar particleUpdaterInitPS$1 = `\nvarying vec2 vUv0;\nuniform highp sampler2D particleTexIN;\nuniform highp sampler2D internalTex0;\nuniform highp sampler2D internalTex1;\nuniform highp sampler2D internalTex2;\nuniform highp sampler2D internalTex3;\nuniform mat3 emitterMatrix;\nuniform mat3 emitterMatrixInv;\nuniform vec3 emitterScale;\nuniform vec3 emitterPos;\nuniform vec3 frameRandom;\nuniform vec3 localVelocityDivMult;\nuniform vec3 velocityDivMult;\nuniform float delta;\nuniform float rate;\nuniform float rateDiv;\nuniform float lifetime;\nuniform float numParticles;\nuniform float rotSpeedDivMult;\nuniform float radialSpeedDivMult;\nuniform float seed;\nuniform float startAngle;\nuniform float startAngle2;\nuniform float initialVelocity;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\nvec3 inPos;\nvec3 inVel;\nfloat inAngle;\nbool inShow;\nfloat inLife;\nfloat visMode;\nvec3 outPos;\nvec3 outVel;\nfloat outAngle;\nbool outShow;\nfloat outLife;\n`;\n\nvar particleUpdaterNoRespawnPS$1 = `\n\tif (outLife >= lifetime) {\n\t\toutLife -= max(lifetime, (numParticles - 1.0) * particleRate);\n\t\tvisMode = -1.0;\n\t}\n`;\n\nvar particleUpdaterOnStopPS$1 = `\n\tvisMode = outLife < 0.0? -1.0: visMode;\n`;\n\nvar particleUpdaterRespawnPS$1 = `\n\tif (outLife >= lifetime) {\n\t\toutLife -= max(lifetime, (numParticles - 1.0) * particleRate);\n\t\tvisMode = 1.0;\n\t}\n\tvisMode = outLife < 0.0? 1.0: visMode;\n`;\n\nvar particleUpdaterSpherePS$1 = `\nuniform float spawnBoundsSphere;\nuniform float spawnBoundsSphereInnerRatio;\nvec3 calcSpawnPosition(vec3 inBounds, float rndFactor) {\n\tfloat rnd4 = fract(rndFactor * 1000.0);\n\tvec3 norm = normalize(inBounds.xyz - vec3(0.5));\n\tfloat r = rnd4 * (1.0 - spawnBoundsSphereInnerRatio) + spawnBoundsSphereInnerRatio;\n#ifndef LOCAL_SPACE\n\treturn emitterPos + norm * r * spawnBoundsSphere;\n#else\n\treturn norm * r * spawnBoundsSphere;\n#endif\n}\nvoid addInitialVelocity(inout vec3 localVelocity, vec3 inBounds) {\n\tlocalVelocity += normalize(inBounds - vec3(0.5)) * initialVelocity;\n}\n`;\n\nvar particleUpdaterStartPS$1 = `\nfloat saturate(float x) {\n\treturn clamp(x, 0.0, 1.0);\n}\nvec3 unpack3NFloats(float src) {\n\tfloat r = fract(src);\n\tfloat g = fract(src * 256.0);\n\tfloat b = fract(src * 65536.0);\n\treturn vec3(r, g, b);\n}\nvec3 tex1Dlod_lerp(TEXTURE_ACCEPT_HIGHP(tex), vec2 tc, out vec3 w) {\n\tvec4 a = texture2D(tex, tc);\n\tvec4 b = texture2D(tex, tc + graphSampleSize);\n\tfloat c = fract(tc.x * graphNumSamples);\n\tvec3 unpackedA = unpack3NFloats(a.w);\n\tvec3 unpackedB = unpack3NFloats(b.w);\n\tw = mix(unpackedA, unpackedB, c);\n\treturn mix(a.xyz, b.xyz, c);\n}\n#define HASHSCALE4 vec4(1031, .1030, .0973, .1099)\nvec4 hash41(float p) {\n\tvec4 p4 = fract(vec4(p) * HASHSCALE4);\n\tp4 += dot(p4, p4.wzxy+19.19);\n\treturn fract(vec4((p4.x + p4.y)*p4.z, (p4.x + p4.z)*p4.y, (p4.y + p4.z)*p4.w, (p4.z + p4.w)*p4.x));\n}\nvoid main(void) {\n\tif (gl_FragCoord.x > numParticles) discard;\n\treadInput(vUv0.x);\n\tvisMode = inShow? 1.0 : -1.0;\n\tvec4 rndFactor = hash41(gl_FragCoord.x + seed);\n\tfloat particleRate = rate + rateDiv * rndFactor.x;\n\toutLife = inLife + delta;\n\tfloat nlife = clamp(outLife / lifetime, 0.0, 1.0);\n\tvec3 localVelocityDiv;\n\tvec3 velocityDiv;\n\tvec3 paramDiv;\n\tvec3 localVelocity = tex1Dlod_lerp(TEXTURE_PASS(internalTex0), vec2(nlife, 0), localVelocityDiv);\n\tvec3 velocity =\t  tex1Dlod_lerp(TEXTURE_PASS(internalTex1), vec2(nlife, 0), velocityDiv);\n\tvec3 params =\t\ttex1Dlod_lerp(TEXTURE_PASS(internalTex2), vec2(nlife, 0), paramDiv);\n\tfloat rotSpeed = params.x;\n\tfloat rotSpeedDiv = paramDiv.y;\n\tvec3 radialParams = tex1Dlod_lerp(TEXTURE_PASS(internalTex3), vec2(nlife, 0), paramDiv);\n\tfloat radialSpeed = radialParams.x;\n\tfloat radialSpeedDiv = radialParams.y;\n\tbool respawn = inLife <= 0.0 || outLife >= lifetime;\n\tinPos = respawn ? calcSpawnPosition(rndFactor.xyz, rndFactor.x) : inPos;\n\tinAngle = respawn ? mix(startAngle, startAngle2, rndFactor.x) : inAngle;\n#ifndef LOCAL_SPACE\n\tvec3 radialVel = inPos - emitterPos;\n#else\n\tvec3 radialVel = inPos;\n#endif\n\tradialVel = (dot(radialVel, radialVel) > 1.0E-8) ? radialSpeed * normalize(radialVel) : vec3(0.0);\n\tradialVel += (radialSpeedDiv * vec3(2.0) - vec3(1.0)) * radialSpeedDivMult * rndFactor.xyz;\n\tlocalVelocity +=\t(localVelocityDiv * vec3(2.0) - vec3(1.0)) * localVelocityDivMult * rndFactor.xyz;\n\tvelocity +=\t\t (velocityDiv * vec3(2.0) - vec3(1.0)) * velocityDivMult * rndFactor.xyz;\n\trotSpeed +=\t\t (rotSpeedDiv * 2.0 - 1.0) * rotSpeedDivMult * rndFactor.y;\n\taddInitialVelocity(localVelocity, rndFactor.xyz);\n#ifndef LOCAL_SPACE\n\toutVel = emitterMatrix * localVelocity + (radialVel + velocity) * emitterScale;\n#else\n\toutVel = (localVelocity + radialVel) / emitterScale + emitterMatrixInv * velocity;\n#endif\n\toutPos = inPos + outVel * delta;\n\toutAngle = inAngle + rotSpeed * delta;\n`;\n\nvar particle_billboardVS$1 = `\n\tquadXY = rotate(quadXY, inAngle, rotMatrix);\n\tvec3 localPos = billboard(particlePos, quadXY);\n`;\n\nvar particle_blendAddPS$1 = `\n\tdBlendModeFogFactor = 0.0;\n\trgb *= saturate(gammaCorrectInput(max(a, 0.0)));\n\tif ((rgb.r + rgb.g + rgb.b) < 0.000001) discard;\n`;\n\nvar particle_blendMultiplyPS$1 = `\n\trgb = mix(vec3(1.0), rgb, vec3(a));\n\tif (rgb.r + rgb.g + rgb.b > 2.99) discard;\n`;\n\nvar particle_blendNormalPS$1 = `\n\tif (a < 0.01) discard;\n`;\n\nvar particle_cpuVS$1 = `\nattribute vec4 particle_vertexData;\nattribute vec4 particle_vertexData2;\nattribute vec4 particle_vertexData3;\nattribute float particle_vertexData4;\n#ifndef USE_MESH\n\tattribute vec2 particle_vertexData5;\n#else\n\tattribute vec4 particle_vertexData5;\n#endif\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\nuniform mat3 matrix_normal;\nuniform mat4 matrix_viewInverse;\nuniform float numParticles;\nuniform float lifetime;\nuniform float stretch;\nuniform float seed;\nuniform vec3 emitterScale;\nuniform vec3 faceTangent;\nuniform vec3 faceBinorm;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform vec3 wrapBounds;\n\t#endif\n#endif\n#ifdef PARTICLE_GPU\n\tuniform highp sampler2D internalTex0;\n\tuniform highp sampler2D internalTex1;\n\tuniform highp sampler2D internalTex2;\n#endif\nuniform vec3 emitterPos;\nvarying vec4 texCoordsAlphaLife;\nvec2 rotate(vec2 quadXY, float pRotation, out mat2 rotMatrix)\n{\n\tfloat c = cos(pRotation);\n\tfloat s = sin(pRotation);\n\tmat2 m = mat2(c, -s, s, c);\n\trotMatrix = m;\n\treturn m * quadXY;\n}\nvec3 billboard(vec3 InstanceCoords, vec2 quadXY)\n{\n\tvec3 pos = -matrix_viewInverse[0].xyz * quadXY.x + -matrix_viewInverse[1].xyz * quadXY.y;\n\treturn pos;\n}\nvec3 customFace(vec3 InstanceCoords, vec2 quadXY)\n{\n\tvec3 pos = faceTangent * quadXY.x + faceBinorm * quadXY.y;\n\treturn pos;\n}\nvoid main(void)\n{\n\tvec3 particlePos = particle_vertexData.xyz;\n\tvec3 inPos = particlePos;\n\tvec3 vertPos = particle_vertexData3.xyz;\n\tvec3 inVel = vec3(particle_vertexData2.w, particle_vertexData3.w, particle_vertexData5.x);\n\tfloat id = floor(particle_vertexData4);\n\tfloat rndFactor = fract(sin(id + 1.0 + seed));\n\tvec3 rndFactor3 = vec3(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n#ifdef LOCAL_SPACE\n\tinVel = mat3(matrix_model) * inVel;\n#endif\n\tvec2 velocityV = normalize((mat3(matrix_view) * inVel).xy);\n\tvec2 quadXY = vertPos.xy;\n#ifdef USE_MESH\n\ttexCoordsAlphaLife = vec4(particle_vertexData5.zw, particle_vertexData2.z, particle_vertexData.w);\n#else\n\ttexCoordsAlphaLife = vec4(quadXY * -0.5 + 0.5, particle_vertexData2.z, particle_vertexData.w);\n#endif\n\tmat2 rotMatrix;\n\tfloat inAngle = particle_vertexData2.x;\n\tvec3 particlePosMoved = vec3(0.0);\n\tvec3 meshLocalPos = particle_vertexData3.xyz;\n`;\n\nvar particle_cpu_endVS$1 = `\n\tlocalPos *= particle_vertexData2.y * emitterScale;\n\tlocalPos += particlePos;\n\tgl_Position = matrix_viewProjection * vec4(localPos, 1.0);\n`;\n\nvar particle_customFaceVS$1 = `\n\tquadXY = rotate(quadXY, inAngle, rotMatrix);\n\tvec3 localPos = customFace(particlePos, quadXY);\n`;\n\nvar particle_endPS$1 = `\n\trgb = addFog(rgb);\n\trgb = toneMap(rgb);\n\trgb = gammaCorrectOutput(rgb);\n\tgl_FragColor = vec4(rgb, a);\n}\n`;\n\nvar particle_endVS$1 = `\n\tlocalPos *= scale * emitterScale;\n\tlocalPos += particlePos;\n\t#ifdef SCREEN_SPACE\n\tgl_Position = vec4(localPos.x, localPos.y, 0.0, 1.0);\n\t#else\n\tgl_Position = matrix_viewProjection * vec4(localPos.xyz, 1.0);\n\t#endif\n`;\n\nvar particle_halflambertPS$1 = `\n\tvec3 negNormal = normal * 0.5 + 0.5;\n\tvec3 posNormal = -normal * 0.5 + 0.5;\n\tnegNormal *= negNormal;\n\tposNormal *= posNormal;\n`;\n\nvar particle_initVS$1 = `\nattribute vec4 particle_vertexData;\n#if defined(USE_MESH)\n\t#if defined(USE_MESH_UV)\n\t\tattribute vec2 particle_uv;\n\t#else\n\t\tvec2 particle_uv = vec2(0.0, 0.0);\n\t#endif\n#endif\nuniform mat4 matrix_viewProjection;\nuniform mat4 matrix_model;\nuniform mat3 matrix_normal;\nuniform mat4 matrix_viewInverse;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform mat4 matrix_view;\n#endif\nuniform float numParticles;\nuniform float numParticlesPot;\nuniform float graphSampleSize;\nuniform float graphNumSamples;\nuniform float stretch;\nuniform vec3 emitterScale;\nuniform vec3 emitterPos;\nuniform vec3 faceTangent;\nuniform vec3 faceBinorm;\nuniform float rate;\nuniform float rateDiv;\nuniform float lifetime;\nuniform float scaleDivMult;\nuniform float alphaDivMult;\nuniform float seed;\nuniform float delta;\nuniform sampler2D particleTexOUT;\nuniform sampler2D particleTexIN;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform vec3 wrapBounds;\n\t#endif\n#endif\n#ifdef PARTICLE_GPU\n\tuniform highp sampler2D internalTex0;\n\tuniform highp sampler2D internalTex1;\n\tuniform highp sampler2D internalTex2;\n#endif\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform vec4 camera_params;\n#endif\nvarying vec4 texCoordsAlphaLife;\nvec3 inPos;\nvec3 inVel;\nfloat inAngle;\nbool inShow;\nfloat inLife;\n`;\n\nvar particle_lambertPS$1 = `\n\tvec3 negNormal = max(normal, vec3(0.0));\n\tvec3 posNormal = max(-normal, vec3(0.0));\n`;\n\nvar particle_lightingPS$1 = `\n\tvec3 light = negNormal.x*lightCube[0] + posNormal.x*lightCube[1] +\n\t\t\t\t\t\tnegNormal.y*lightCube[2] + posNormal.y*lightCube[3] +\n\t\t\t\t\t\tnegNormal.z*lightCube[4] + posNormal.z*lightCube[5];\n\trgb *= light;\n`;\n\nvar particle_localShiftVS$1 = `\n\tparticlePos = (matrix_model * vec4(particlePos, 1.0)).xyz;\n`;\n\nvar particle_meshVS$1 = `\n\tvec3 localPos = meshLocalPos;\n\tlocalPos.xy = rotate(localPos.xy, inAngle, rotMatrix);\n\tlocalPos.yz = rotate(localPos.yz, inAngle, rotMatrix);\n\tbillboard(particlePos, quadXY);\n`;\n\nvar particle_normalVS$1 = `\n\tNormal = normalize(localPos + matrix_viewInverse[2].xyz);\n`;\n\nvar particle_normalMapPS$1 = `\n\tvec3 normalMap = normalize(texture2D(normalMap, vec2(texCoordsAlphaLife.x, 1.0 - texCoordsAlphaLife.y)).xyz * 2.0 - 1.0);\n\tvec3 normal = ParticleMat * normalMap;\n`;\n\nvar particle_pointAlongVS$1 = `\n\tinAngle = atan(velocityV.x, velocityV.y);\n`;\n\nvar particle_simulationPS$1 = `\n\t#include \"particleUpdaterInitPS\"\n\t#ifdef PACK8\n\t\t#include \"particleInputRgba8PS\"\n\t\t#include \"particleOutputRgba8PS\"\n\t#else\n\t\t#include \"particleInputFloatPS\"\n\t\t#include \"particleOutputFloatPS\"\n\t#endif\n\t#ifdef EMITTERSHAPE_BOX\n\t\t#include \"particleUpdaterAABBPS\"\n\t#else\n\t\t#include \"particleUpdaterSpherePS\"\n\t#endif\n\t#include \"particleUpdaterStartPS\"\n\t#ifdef RESPAWN\n\t\t#include \"particleUpdaterRespawnPS\"\n\t#endif\n\t#ifdef NO_RESPAWN\n\t\t#include \"particleUpdaterNoRespawnPS\"\n\t#endif\n\t#ifdef ON_STOP\n\t\t#include \"particleUpdaterOnStopPS\"\n\t#endif\n\t#include \"particleUpdaterEndPS\"\n`;\n\nvar particle_shaderPS$1 = `\n\t#if NORMAL != NONE\n\t\t#if NORMAL == VERTEX\n\t\t\tvarying vec3 Normal;\n\t\t#endif\n\t\t#if NORMAL == MAP\n\t\t\tvarying mat3 ParticleMat;\n\t\t#endif\n\t\tuniform vec3 lightCube[6];\n\t#endif\n\t#ifdef SOFT\n\t\tvarying float vDepth;\n\t\t#include \"screenDepthPS\"\n\t#endif\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#include \"fogPS\"\n\t#if NORMAL == MAP\n\t\tuniform sampler2D normalMap;\n\t#endif\n\t#include \"particlePS\"\n\t#ifdef SOFT\n\t\t#include \"particle_softPS\"\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvec3 normal = Normal;\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_normalMapPS\"\n\t#endif\n\t#if NORMAL != NONE\n\t\t#ifdef HALF_LAMBERT\n\t\t\t#include \"particle_halflambertPS\"\n\t\t#else\n\t\t\t#include \"particle_lambertPS\"\n\t\t#endif\n\t\t#include \"particle_lightingPS\"\n\t#endif\n\t#if BLEND == NORMAL\n\t\t#include \"particle_blendNormalPS\"\n\t#elif BLEND == ADDITIVE\n\t\t#include \"particle_blendAddPS\"\n\t#elif BLEND == MULTIPLICATIVE\n\t\t#include \"particle_blendMultiplyPS\"\n\t#endif\n\t#include \"particle_endPS\"\n`;\n\nvar particle_shaderVS$1 = `\n\t#ifdef ANIMTEX\n\t\tuniform vec2 animTexTilesParams;\n\t\tuniform vec4 animTexParams;\n\t\tuniform vec2 animTexIndexParams;\n\t#endif\n\t#if NORMAL == MAP\n\t\tvarying mat3 ParticleMat;\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvarying vec3 Normal;\n\t#endif\n\t#ifdef SOFT\n\t\tvarying float vDepth;\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_initVS\"\n\t\t#ifdef PACK8\n\t\t\t#include \"particleInputRgba8PS\"\n\t\t#else\n\t\t\t#include  \"particleInputFloatPS\"\n\t\t#endif\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particleVS\"\n\t#else\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particle_cpuVS\"\n\t#endif\n\t#ifdef LOCAL_SPACE\n\t\t#include \"particle_localShiftVS\"\n\t#endif\n\t#ifdef ANIMTEX\n\t\t#ifdef ANIMTEX_LOOP\n\t\t\t#include \"particleAnimFrameLoopVS\"\n\t\t#else\n\t\t\t#include \"particleAnimFrameClampVS\"\n\t\t#endif\n\t\t#include \"particleAnimTexVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#ifdef WRAP\n\t\t\t#include \"particle_wrapVS\"\n\t\t#endif\n\t#endif\n\t#ifdef ALIGN_TO_MOTION\n\t\t#include \"particle_pointAlongVS\"\n\t#endif\n\t#ifdef USE_MESH\n\t\t#include \"particle_meshVS\"\n\t#else\n\t\t#ifdef CUSTOM_FACE\n\t\t\t#include \"particle_customFaceVS\"\n\t\t#else\n\t\t\t#include \"particle_billboardVS\"\n\t\t#endif\n\t#endif\n\t#if NORMAL == VERTEX\n\t\t#include \"particle_normalVS\"\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_TBNVS\"\n\t#endif\n\t#ifdef STRETCH\n\t\t#include \"particle_stretchVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_endVS\"\n\t#else\n\t\t#include \"particle_cpu_endVS\"\n\t#endif\n\t#ifdef SOFT\n\t\t#include \"particle_softVS\"\n\t#endif\n\t}\n`;\n\nvar particle_softPS$1 = `\n\tfloat depth = getLinearScreenDepth();\n\tfloat particleDepth = vDepth;\n\tfloat depthDiff = saturate(abs(particleDepth - depth) * softening);\n\ta *= depthDiff;\n`;\n\nvar particle_softVS$1 = `\n\tvDepth = getLinearDepth(localPos);\n`;\n\nvar particle_stretchVS$1 = `\n\tvec3 moveDir = inVel * stretch;\n\tvec3 posPrev = particlePos - moveDir;\n\tposPrev += particlePosMoved;\n\tvec2 centerToVertexV = normalize((mat3(matrix_view) * localPos).xy);\n\tfloat interpolation = dot(-velocityV, centerToVertexV) * 0.5 + 0.5;\n\tparticlePos = mix(particlePos, posPrev, interpolation);\n`;\n\nvar particle_TBNVS$1 = `\n\tmat3 rot3 = mat3(rotMatrix[0][0], rotMatrix[0][1], 0.0, rotMatrix[1][0], rotMatrix[1][1], 0.0, 0.0, 0.0, 1.0);\n\tParticleMat = mat3(-matrix_viewInverse[0].xyz, -matrix_viewInverse[1].xyz, matrix_viewInverse[2].xyz) * rot3;\n`;\n\nvar particle_wrapVS$1 = `\n\tvec3 origParticlePos = particlePos;\n\tparticlePos -= matrix_model[3].xyz;\n\tparticlePos = mod(particlePos, wrapBounds) - wrapBounds * 0.5;\n\tparticlePos += matrix_model[3].xyz;\n\tparticlePosMoved = particlePos - origParticlePos;\n`;\n\nconst particleChunksGLSL = {\n\t\tparticlePS: particlePS$1,\n\t\tparticleVS: particleVS$1,\n\t\tparticleAnimFrameClampVS: particleAnimFrameClampVS$1,\n\t\tparticleAnimFrameLoopVS: particleAnimFrameLoopVS$1,\n\t\tparticleAnimTexVS: particleAnimTexVS$1,\n\t\tparticleInputFloatPS: particleInputFloatPS$1,\n\t\tparticleInputRgba8PS: particleInputRgba8PS$1,\n\t\tparticleOutputFloatPS: particleOutputFloatPS$1,\n\t\tparticleOutputRgba8PS: particleOutputRgba8PS$1,\n\t\tparticleUpdaterAABBPS: particleUpdaterAABBPS$1,\n\t\tparticleUpdaterEndPS: particleUpdaterEndPS$1,\n\t\tparticleUpdaterInitPS: particleUpdaterInitPS$1,\n\t\tparticleUpdaterNoRespawnPS: particleUpdaterNoRespawnPS$1,\n\t\tparticleUpdaterOnStopPS: particleUpdaterOnStopPS$1,\n\t\tparticleUpdaterRespawnPS: particleUpdaterRespawnPS$1,\n\t\tparticleUpdaterSpherePS: particleUpdaterSpherePS$1,\n\t\tparticleUpdaterStartPS: particleUpdaterStartPS$1,\n\t\tparticle_billboardVS: particle_billboardVS$1,\n\t\tparticle_blendAddPS: particle_blendAddPS$1,\n\t\tparticle_blendMultiplyPS: particle_blendMultiplyPS$1,\n\t\tparticle_blendNormalPS: particle_blendNormalPS$1,\n\t\tparticle_cpuVS: particle_cpuVS$1,\n\t\tparticle_cpu_endVS: particle_cpu_endVS$1,\n\t\tparticle_customFaceVS: particle_customFaceVS$1,\n\t\tparticle_endPS: particle_endPS$1,\n\t\tparticle_endVS: particle_endVS$1,\n\t\tparticle_halflambertPS: particle_halflambertPS$1,\n\t\tparticle_initVS: particle_initVS$1,\n\t\tparticle_lambertPS: particle_lambertPS$1,\n\t\tparticle_lightingPS: particle_lightingPS$1,\n\t\tparticle_localShiftVS: particle_localShiftVS$1,\n\t\tparticle_meshVS: particle_meshVS$1,\n\t\tparticle_normalVS: particle_normalVS$1,\n\t\tparticle_normalMapPS: particle_normalMapPS$1,\n\t\tparticle_pointAlongVS: particle_pointAlongVS$1,\n\t\tparticle_simulationPS: particle_simulationPS$1,\n\t\tparticle_shaderPS: particle_shaderPS$1,\n\t\tparticle_shaderVS: particle_shaderVS$1,\n\t\tparticle_softPS: particle_softPS$1,\n\t\tparticle_softVS: particle_softVS$1,\n\t\tparticle_stretchVS: particle_stretchVS$1,\n\t\tparticle_TBNVS: particle_TBNVS$1,\n\t\tparticle_wrapVS: particle_wrapVS$1\n};\n\nvar particlePS = `\nvarying texCoordsAlphaLife: vec4f;\nvar colorMap: texture_2d<f32>;\nvar colorMapSampler: sampler;\nvar colorParam: texture_2d<f32>;\nvar colorParamSampler: sampler;\nuniform graphSampleSize: f32;\nuniform graphNumSamples: f32;\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform camera_params: vec4f;\n#endif\n#ifdef SOFT\n\tuniform softening: f32;\n#endif\nuniform colorMult: f32;\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet tex: vec4f  = textureSample(colorMap, colorMapSampler, vec2f(input.texCoordsAlphaLife.x, 1.0 - input.texCoordsAlphaLife.y));\n\tvar ramp: vec4f = textureSample(colorParam, colorParamSampler, vec2f(input.texCoordsAlphaLife.w, 0.0));\n\tramp = vec4f(ramp.rgb * uniform.colorMult, ramp.a);\n\tramp.a = ramp.a + input.texCoordsAlphaLife.z;\n\tvar rgb: vec3f = tex.rgb * ramp.rgb;\n\tvar a: f32 = tex.a * ramp.a;\n`;\n\nvar particleVS = `\nfn unpack3NFloats(src: f32) -> vec3f {\n\tlet r = fract(src);\n\tlet g = fract(src * 256.0);\n\tlet b = fract(src * 65536.0);\n\treturn vec3f(r, g, b);\n}\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nstruct TexLerpUnpackResult {\n\tresult: vec4f,\n\tunpacked: vec3f\n}\nfn tex1Dlod_lerp_simple(tex: texture_2d<f32>, textureSize: vec2u, tc: vec2f) -> vec4f {\n\tlet tc_next = tc + vec2f(uniform.graphSampleSize);\n\tlet texelA: vec2i = vec2i(tc * vec2f(textureSize));\n\tlet texelB: vec2i = vec2i(tc_next * vec2f(textureSize));\n\treturn mix( textureLoad(tex, texelA, 0), textureLoad(tex, texelB, 0), fract(tc.x * uniform.graphNumSamples) );\n}\nfn tex1Dlod_lerp_unpack(tex: texture_2d<f32>, textureSize: vec2u, tc: vec2f) -> TexLerpUnpackResult {\n\tlet tc_next = tc + vec2f(uniform.graphSampleSize);\n\tlet texelA: vec2i = vec2i(tc * vec2f(textureSize));\n\tlet texelB: vec2i = vec2i(tc_next * vec2f(textureSize));\n\tlet a = textureLoad(tex, texelA, 0);\n\tlet b = textureLoad(tex, texelB, 0);\n\tlet c = fract(tc.x * uniform.graphNumSamples);\n\tlet unpackedA = unpack3NFloats(a.w);\n\tlet unpackedB = unpack3NFloats(b.w);\n\tlet w_out = mix(unpackedA, unpackedB, c);\n\treturn TexLerpUnpackResult(mix(a, b, c), w_out);\n}\nstruct RotateResult {\n\trotatedVec: vec2f,\n\tmatrix: mat2x2f\n}\nfn rotateWithMatrix(quadXY: vec2f, pRotation: f32) -> RotateResult {\n\tlet c = cos(pRotation);\n\tlet s = sin(pRotation);\n\tlet m = mat2x2f(vec2f(c, -s), vec2f(s, c));\n\treturn RotateResult(m * quadXY, m);\n}\nfn billboard(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tvar pos: vec3f;\n\t#ifdef SCREEN_SPACE\n\t\tpos = vec3f(-1.0, 0.0, 0.0) * quadXY.x + vec3f(0.0, -1.0, 0.0) * quadXY.y;\n\t#else\n\t\tpos = -uniform.matrix_viewInverse[0].xyz * quadXY.x + -uniform.matrix_viewInverse[1].xyz * quadXY.y;\n\t#endif\n\treturn pos;\n}\nfn customFace(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tlet pos = uniform.faceTangent * quadXY.x + uniform.faceBinorm * quadXY.y;\n\treturn pos;\n}\nfn safeNormalize(v: vec2f) -> vec2f {\n\tlet l = length(v);\n\treturn select(v, v / l, l > 1e-06);\n}\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\tlet meshLocalPos_in = input.particle_vertexData.xyz;\n\tlet id = floor(input.particle_vertexData.w);\n\tlet rndFactor = fract(sin(id + 1.0 + uniform.seed));\n\tlet rndFactor3 = vec3f(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\tlet uv = id / uniform.numParticlesPot;\n\treadInput(uv);\n\t#ifdef LOCAL_SPACE\n\t\tlet modelRotation = mat3x3f(uniform.matrix_model[0].xyz, uniform.matrix_model[1].xyz, uniform.matrix_model[2].xyz);\n\t\tinVel = modelRotation * inVel;\n\t#endif\n\tlet viewRotation = mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz);\n\tlet velocityV = safeNormalize((viewRotation * inVel).xy);\n\tlet particleLifetime = uniform.lifetime;\n\tvar meshLocalPos = meshLocalPos_in;\n\tif (inLife <= 0.0 || inLife > particleLifetime || !inShow) {\n\t\t meshLocalPos = vec3f(0.0);\n\t}\n\tlet quadXY = meshLocalPos.xy;\n\tlet nlife = clamp(inLife / particleLifetime, 0.0, 1.0);\n\tlet internalTexSize = textureDimensions(internalTex2, 0);\n\tlet lerp_result = tex1Dlod_lerp_unpack(internalTex2, internalTexSize, vec2f(nlife, 0.0));\n\tlet params = lerp_result.result;\n\tlet paramDiv = lerp_result.unpacked;\n\tvar scale = params.y;\n\tlet scaleDiv = paramDiv.x;\n\tlet alphaDiv = paramDiv.z;\n\tscale = scale + (scaleDiv * 2.0 - 1.0) * uniform.scaleDivMult * fract(rndFactor*10000.0);\n\t#ifndef USE_MESH\n\t\toutput.texCoordsAlphaLife = vec4f(quadXY * -0.5 + 0.5, (alphaDiv * 2.0 - 1.0) * uniform.alphaDivMult * fract(rndFactor*1000.0), nlife);\n\t#else\n\t\toutput.texCoordsAlphaLife = vec4f(particle_uv, (alphaDiv * 2.0 - 1.0) * uniform.alphaDivMult * fract(rndFactor*1000.0), nlife);\n\t#endif\n\tvar particlePos = inPos;\n\tvar particlePosMoved = vec3f(0.0);\n\tvar rotMatrix: mat2x2f;\n`;\n\nvar particleAnimFrameClampVS = `\n\tlet animFrame: f32 = min(floor(input.texCoordsAlphaLife.w * uniform.animTexParams.y) + uniform.animTexParams.x, uniform.animTexParams.z);\n`;\n\nvar particleAnimFrameLoopVS = `\n\tlet animFrame: f32 = floor((output.texCoordsAlphaLife.w * uniform.animTexParams.y + uniform.animTexParams.x) % (uniform.animTexParams.z + 1.0));\t\n`;\n\nvar particleAnimTexVS = `\n\tvar animationIndex: f32;\n\tif (uniform.animTexIndexParams.y == 1.0) {\n\t\tanimationIndex = floor((uniform.animTexParams.w + 1.0) * rndFactor3.z) * (uniform.animTexParams.z + 1.0);\n\t} else {\n\t\tanimationIndex = uniform.animTexIndexParams.x * (uniform.animTexParams.z + 1.0);\n\t}\n\tvar atlasX: f32 = (animationIndex + animFrame) * uniform.animTexTilesParams.x;\n\tlet atlasY: f32 = 1.0 - floor(atlasX + 1.0) * uniform.animTexTilesParams.y;\n\tatlasX = fract(atlasX);\n\tlet current_tcal_xy = output.texCoordsAlphaLife.xy;\n\tlet scaled_tcal_xy = current_tcal_xy * uniform.animTexTilesParams.xy;\n\tlet final_tcal_xy = scaled_tcal_xy + vec2f(atlasX, atlasY);\n\toutput.texCoordsAlphaLife = vec4f(final_tcal_xy, output.texCoordsAlphaLife.z, output.texCoordsAlphaLife.w);\n`;\n\nvar particleInputFloatPS = `\nfn readInput(uv: f32) {\n\tlet textureSize = textureDimensions(particleTexIN, 0);\n\tlet texel0: vec2i = vec2i(vec2f(uv, 0.25) * vec2f(textureSize));\n\tlet texel1: vec2i = vec2i(vec2f(uv, 0.75) * vec2f(textureSize));\n\tlet tex: vec4f = textureLoad(particleTexIN, texel0, 0);\n\tlet tex2: vec4f = textureLoad(particleTexIN, texel1, 0);\n\tinPos = tex.xyz;\n\tinVel = tex2.xyz;\n\tinAngle = abs(tex.w) - 1000.0;\n\tinShow = tex.w >= 0.0;\n\tinLife = tex2.w;\n}\n`;\n\nvar particleInputRgba8PS = `\nconst PI2: f32 = 6.283185307179586;\nuniform inBoundsSize: vec3f;\nuniform inBoundsCenter: vec3f;\nuniform maxVel: f32;\nfn decodeFloatRG(rg: vec2f) -> f32 {\n\treturn rg.y * (1.0 / 255.0) + rg.x;\n}\nfn decodeFloatRGBA( rgba: vec4f ) -> f32 {\n\treturn dot(rgba, vec4f(1.0, 1.0 / 255.0, 1.0 / 65025.0, 1.0 / 160581375.0));\n}\nfn readInput(uv: f32) {\n\tlet textureSize = textureDimensions(particleTexIN, 0);\n\tlet texel0: vec2i = vec2i(vec2f(uv, 0.125) * vec2f(textureSize));\n\tlet texel1: vec2i = vec2i(vec2f(uv, 0.375) * vec2f(textureSize));\n\tlet texel2: vec2i = vec2i(vec2f(uv, 0.625) * vec2f(textureSize));\n\tlet texel3: vec2i = vec2i(vec2f(uv, 0.875) * vec2f(textureSize));\n\tlet tex0 = textureLoad(particleTexIN, texel0, 0);\n\tlet tex1 = textureLoad(particleTexIN, texel1, 0);\n\tlet tex2 = textureLoad(particleTexIN, texel2, 0);\n\tlet tex3 = textureLoad(particleTexIN, texel3, 0);\n\tinPos = vec3f(decodeFloatRG(tex0.rg), decodeFloatRG(tex0.ba), decodeFloatRG(tex1.rg));\n\tinPos = (inPos - vec3f(0.5)) * uniform.inBoundsSize + uniform.inBoundsCenter;\n\tinVel = tex2.xyz;\n\tinVel = (inVel - vec3f(0.5)) * uniform.maxVel;\n\tinAngle = decodeFloatRG(tex1.ba) * PI2;\n\tinShow = tex2.a > 0.5;\n\tlet life_decoded = decodeFloatRGBA(tex3);\n\tlet maxNegLife = max(uniform.lifetime, (uniform.numParticles - 1.0) * (uniform.rate + uniform.rateDiv));\n\tlet maxPosLife = uniform.lifetime + 1.0;\n\tinLife = life_decoded * (maxNegLife + maxPosLife) - maxNegLife;\n}`;\n\nvar particleOutputFloatPS = `\nfn getOutput() -> vec4f {\n\tif (pcPosition.y < 1.0) {\n\t\treturn vec4f(outPos, (outAngle + 1000.0) * visMode);\n\t} else {\n\t\treturn vec4f(outVel, outLife);\n\t}\n}\n`;\n\nvar particleOutputRgba8PS = `\nuniform outBoundsMul: vec3f;\nuniform outBoundsAdd: vec3f;\nfn encodeFloatRG( v: f32 ) -> vec2f {\n\tvar enc: vec2f = vec2f(1.0, 255.0) * v;\n\tenc = fract(enc);\n\tenc = enc - enc.yy * (1.0 / 255.0);\n\treturn enc;\n}\nfn encodeFloatRGBA( v: f32 ) -> vec4f {\n\tlet factors = vec4f(1.0, 255.0, 65025.0, 160581375.0);\n\tvar enc: vec4f = factors * v;\n\tenc = fract(enc);\n\tenc = enc - enc.yzww * vec4f(1.0 / 255.0, 1.0 / 255.0, 1.0 / 255.0, 0.0);\n\treturn enc;\n}\nfn getOutput() -> vec4f {\n\toutPos = outPos * uniform.outBoundsMul + uniform.outBoundsAdd;\n\toutAngle = fract(outAngle / PI2);\n\toutVel = (outVel / uniform.maxVel) + vec3f(0.5);\n\tlet maxNegLife = max(uniform.lifetime, (uniform.numParticles - 1.0) * (uniform.rate + uniform.rateDiv));\n\tlet maxPosLife = uniform.lifetime + 1.0;\n\toutLife = (outLife + maxNegLife) / (maxNegLife + maxPosLife);\n\tif (pcPosition.y < 1.0) {\n\t\treturn vec4f(encodeFloatRG(outPos.x), encodeFloatRG(outPos.y));\n\t} else if (pcPosition.y < 2.0) {\n\t\treturn vec4f(encodeFloatRG(outPos.z), encodeFloatRG(outAngle));\n\t} else if (pcPosition.y < 3.0) {\n\t\treturn vec4f(outVel, visMode * 0.5 + 0.5);\n\t} else {\n\t\treturn encodeFloatRGBA(outLife);\n\t}\n}\n`;\n\nvar particleUpdaterAABBPS = `\nuniform spawnBounds: mat3x3f;\nuniform spawnPosInnerRatio: vec3f;\nfn calcSpawnPosition(inBounds: vec3f, rndFactor: f32) -> vec3f {\n\tvar pos = inBounds - vec3f(0.5);\n\tlet posAbs = abs(pos);\n\tlet maxComp = max(posAbs.x, max(posAbs.y, posAbs.z));\n\tlet maxPos = vec3f(maxComp);\n\tlet edge = maxPos + (vec3f(0.5) - maxPos) * uniform.spawnPosInnerRatio;\n\tpos.x = edge.x * select(2.0 * pos.x, sign(pos.x), maxPos.x == posAbs.x);\n\tpos.y = edge.y * select(2.0 * pos.y, sign(pos.y), maxPos.y == posAbs.y);\n\tpos.z = edge.z * select(2.0 * pos.z, sign(pos.z), maxPos.z == posAbs.z);\n\t#ifndef LOCAL_SPACE\n\t\treturn uniform.emitterPos + uniform.spawnBounds * pos;\n\t#else\n\t\treturn uniform.spawnBounds * pos;\n\t#endif\n}\nfn addInitialVelocity(localVelocity: ptr<function, vec3f>, inBounds: vec3f) {\n\t*localVelocity = *localVelocity - vec3f(0.0, 0.0, uniform.initialVelocity);\n}\n`;\n\nvar particleUpdaterEndPS = `\n\toutput.color = getOutput();\n\treturn output;\n}\n`;\n\nvar particleUpdaterInitPS = `\nvarying vUv0: vec2f;\nvar particleTexIN: texture_2d<uff>;\nvar internalTex0: texture_2d<uff>;\nvar internalTex1: texture_2d<uff>;\nvar internalTex2: texture_2d<uff>;\nvar internalTex3: texture_2d<uff>;\nuniform emitterMatrix: mat3x3f;\nuniform emitterMatrixInv: mat3x3f;\nuniform emitterScale: vec3f;\nuniform emitterPos: vec3f;\nuniform frameRandom: vec3f;\nuniform localVelocityDivMult: vec3f;\nuniform velocityDivMult: vec3f;\nuniform delta: f32;\nuniform rate: f32;\nuniform rateDiv: f32;\nuniform lifetime: f32;\nuniform numParticles: f32;\nuniform rotSpeedDivMult: f32;\nuniform radialSpeedDivMult: f32;\nuniform seed: f32;\nuniform startAngle: f32;\nuniform startAngle2: f32;\nuniform initialVelocity: f32;\nuniform graphSampleSize: f32;\nuniform graphNumSamples: f32;\nvar<private> inPos: vec3f;\nvar<private> inVel: vec3f;\nvar<private> inAngle: f32;\nvar<private> inShow: bool;\nvar<private> inLife: f32;\nvar<private> visMode: f32;\nvar<private> outPos: vec3f;\nvar<private> outVel: vec3f;\nvar<private> outAngle: f32;\nvar<private> outShow: bool;\nvar<private> outLife: f32;\n`;\n\nvar particleUpdaterNoRespawnPS = `\n\tif (outLife >= uniform.lifetime) {\n\t\toutLife = outLife - max(uniform.lifetime, (uniform.numParticles - 1.0) * particleRate);\n\t\tvisMode = -1.0;\n\t}\n`;\n\nvar particleUpdaterOnStopPS = `\n\tvisMode = select(visMode, -1.0, outLife < 0.0);\n`;\n\nvar particleUpdaterRespawnPS = `\n\tif (outLife >= uniform.lifetime) {\n\t\tlet subtractAmount = max(uniform.lifetime, (uniform.numParticles - 1.0) * particleRate);\n\t\toutLife = outLife - subtractAmount;\n\t\tvisMode = 1.0;\n\t}\n\tvisMode = select(visMode, 1.0, outLife < 0.0);\n`;\n\nvar particleUpdaterSpherePS = `\nuniform spawnBoundsSphere: f32;\nuniform spawnBoundsSphereInnerRatio: f32;\nfn calcSpawnPosition(inBounds: vec3f, rndFactor: f32) -> vec3f {\n\tlet rnd4: f32 = fract(rndFactor * 1000.0);\n\tlet norm: vec3f = normalize(inBounds.xyz - vec3f(0.5));\n\tlet r: f32 = rnd4 * (1.0 - uniform.spawnBoundsSphereInnerRatio) + uniform.spawnBoundsSphereInnerRatio;\n\t#ifndef LOCAL_SPACE\n\t\treturn uniform.emitterPos + norm * r * uniform.spawnBoundsSphere;\n\t#else\n\t\treturn norm * r * uniform.spawnBoundsSphere;\n\t#endif\n}\nfn addInitialVelocity(localVelocity: ptr<function, vec3f>, inBounds: vec3f) {\n\tlet initialVelOffset: vec3f = normalize(inBounds - vec3f(0.5)) * uniform.initialVelocity;\n\t*localVelocity = *localVelocity + initialVelOffset;\n}\n`;\n\nvar particleUpdaterStartPS = `\nfn saturate(x: f32) -> f32 {\n\treturn clamp(x, 0.0, 1.0);\n}\nfn unpack3NFloats(src: f32) -> vec3f {\n\tlet r = fract(src);\n\tlet g = fract(src * 256.0);\n\tlet b = fract(src * 65536.0);\n\treturn vec3f(r, g, b);\n}\nstruct TexLerpUnpackResult {\n\tresult: vec3f,\n\tunpacked: vec3f\n}\nfn tex1Dlod_lerp(tex: texture_2d<f32>, textureSize: vec2u, tc: vec2f) -> TexLerpUnpackResult {\n\tlet tc_next = tc + vec2f(uniform.graphSampleSize);\n\tlet texelA: vec2i = vec2i(tc * vec2f(textureSize));\n\tlet texelB: vec2i = vec2i(tc_next * vec2f(textureSize));\n\tlet a = textureLoad(tex, texelA, 0);\n\tlet b = textureLoad(tex, texelB, 0);\n\tlet c = fract(tc.x * uniform.graphNumSamples);\n\tlet unpackedA = unpack3NFloats(a.w);\n\tlet unpackedB = unpack3NFloats(b.w);\n\tlet w_out = mix(unpackedA, unpackedB, c);\n\treturn TexLerpUnpackResult(mix(a.xyz, b.xyz, c), w_out);\n}\nconst HASHSCALE4: vec4f = vec4f(1031.0, 0.1030, 0.0973, 0.1099);\nfn hash41(p: f32) -> vec4f {\n\tvar p4 = fract(vec4f(p) * HASHSCALE4);\n\tp4 = p4 + dot(p4, p4.wzxy + 19.19);\n\treturn fract(vec4f((p4.x + p4.y)*p4.z, (p4.x + p4.z)*p4.y, (p4.y + p4.z)*p4.w, (p4.z + p4.w)*p4.x));\n}\n@fragment\nfn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tif (pcPosition.x > uniform.numParticles) {\n\t\tdiscard;\n\t\treturn output;\n\t}\n\treadInput(input.vUv0.x);\n\tvisMode = select(-1.0, 1.0, inShow);\n\tlet rndFactor = hash41(pcPosition.x + uniform.seed);\n\tlet particleRate = uniform.rate + uniform.rateDiv * rndFactor.x;\n\toutLife = inLife + uniform.delta;\n\tlet nlife = clamp(outLife / uniform.lifetime, 0.0, 1.0);\n\tlet internalTexSize = textureDimensions(internalTex0, 0);\n\tlet lerpResult0 = tex1Dlod_lerp(internalTex0, internalTexSize, vec2f(nlife, 0.0));\n\tvar localVelocity = lerpResult0.result;\n\tlet localVelocityDiv = lerpResult0.unpacked;\n\tlet lerpResult1 = tex1Dlod_lerp(internalTex1, internalTexSize, vec2f(nlife, 0.0));\n\tvar velocity = lerpResult1.result;\n\tlet velocityDiv = lerpResult1.unpacked;\n\tlet lerpResult2 = tex1Dlod_lerp(internalTex2, internalTexSize, vec2f(nlife, 0.0));\n\tlet params = lerpResult2.result;\n\tlet paramDiv = lerpResult2.unpacked;\n\tvar rotSpeed = params.x;\n\tlet rotSpeedDiv = paramDiv.y;\n\tlet lerpResult3 = tex1Dlod_lerp(internalTex3, internalTexSize, vec2f(nlife, 0.0));\n\tlet radialParams = lerpResult3.result;\n\tlet radialParamDiv = lerpResult3.unpacked;\n\tlet radialSpeed = radialParams.x;\n\tlet radialSpeedDiv = radialParamDiv.y;\n\tlet respawn = inLife <= 0.0 || outLife >= uniform.lifetime;\n\tinPos = select(inPos, calcSpawnPosition(rndFactor.xyz, rndFactor.x), respawn);\n\tinAngle = select(inAngle, mix(uniform.startAngle, uniform.startAngle2, rndFactor.x), respawn);\n\t#ifndef LOCAL_SPACE\n\t\tvar radialVel: vec3f = inPos - uniform.emitterPos;\n\t#else\n\t\tvar radialVel: vec3f = inPos;\n\t#endif\n\tradialVel = select(vec3f(0.0), radialSpeed * normalize(radialVel), dot(radialVel, radialVel) > 1.0E-8);\n\tradialVel = radialVel + (radialSpeedDiv * vec3f(2.0) - vec3f(1.0)) * uniform.radialSpeedDivMult * rndFactor.xyz;\n\tlocalVelocity = localVelocity + (localVelocityDiv * vec3f(2.0) - vec3f(1.0)) * uniform.localVelocityDivMult * rndFactor.xyz;\n\tvelocity = velocity + (velocityDiv * vec3f(2.0) - vec3f(1.0)) * uniform.velocityDivMult * rndFactor.xyz;\n\trotSpeed = rotSpeed + (rotSpeedDiv * 2.0 - 1.0) * uniform.rotSpeedDivMult * rndFactor.y;\n\taddInitialVelocity(&localVelocity, rndFactor.xyz);\n\t#ifndef LOCAL_SPACE\n\t\toutVel = uniform.emitterMatrix * localVelocity + (radialVel + velocity) * uniform.emitterScale;\n\t#else\n\t\toutVel = (localVelocity + radialVel) / uniform.emitterScale + uniform.emitterMatrixInv * velocity;\n\t#endif\n\toutPos = inPos + outVel * uniform.delta;\n\toutAngle = inAngle + rotSpeed * uniform.delta;\n`;\n\nvar particle_billboardVS = `\n\tlet rotationResult = rotateWithMatrix(quadXY, inAngle);\n\tlet rotatedQuadXY = rotationResult.rotatedVec;\n\trotMatrix = rotationResult.matrix;\n\tvar localPos = billboard(particlePos, rotatedQuadXY);\n`;\n\nvar particle_blendAddPS = `\n\tdBlendModeFogFactor = 0.0;\n\trgb = rgb * saturate(gammaCorrectInput(max(a, 0.0)));\n\tif ((rgb.r + rgb.g + rgb.b) < 0.000001) {\n\t\tdiscard;\n\t}\t\n`;\n\nvar particle_blendMultiplyPS = `\n\trgb = mix(vec3f(1.0), rgb, a);\n\tif ((rgb.r + rgb.g + rgb.b) > 2.99) {\n\t\tdiscard;\n\t}\n`;\n\nvar particle_blendNormalPS = `\n\tif (a < 0.01) {\n\t\tdiscard;\n\t}\n`;\n\nvar particle_cpuVS = `\nattribute particle_vertexData: vec4f;\nattribute particle_vertexData2: vec4f;\nattribute particle_vertexData3: vec4f;\nattribute particle_vertexData4: f32;\n#ifndef USE_MESH\n\tattribute particle_vertexData5: vec2f;\n#else\n\tattribute particle_vertexData5: vec4f;\n#endif\nuniform matrix_viewProjection: mat4x4f;\nuniform matrix_model: mat4x4f;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\nuniform matrix_normal: mat3x3f;\nuniform matrix_viewInverse: mat4x4f;\nuniform numParticles: f32;\nuniform lifetime: f32;\nuniform stretch: f32;\nuniform seed: f32;\nuniform emitterScale: vec3f;\nuniform faceTangent: vec3f;\nuniform faceBinorm: vec3f;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform wrapBounds: vec3f;\n\t#endif\n#endif\n#ifdef PARTICLE_GPU\n\tvar internalTex0: texture_2d<uff>;\n\tvar internalTex1: texture_2d<uff>;\n\tvar internalTex2: texture_2d<uff>;\n#endif\nuniform emitterPos: vec3f;\nvarying texCoordsAlphaLife: vec4f;\nstruct RotateResult {\n\trotatedVec: vec2f,\n\tmatrix: mat2x2f\n}\nfn rotateWithMatrix(quadXY: vec2f, pRotation: f32) -> RotateResult {\n\tlet c = cos(pRotation);\n\tlet s = sin(pRotation);\n\tlet m = mat2x2f(vec2f(c, -s), vec2f(s, c));\n\treturn RotateResult(m * quadXY, m);\n}\nfn billboard(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tlet pos = -uniform.matrix_viewInverse[0].xyz * quadXY.x + -uniform.matrix_viewInverse[1].xyz * quadXY.y;\n\treturn pos;\n}\nfn customFace(InstanceCoords: vec3f, quadXY: vec2f) -> vec3f {\n\tlet pos = uniform.faceTangent * quadXY.x + uniform.faceBinorm * quadXY.y;\n\treturn pos;\n}\nfn safeNormalize(v: vec2f) -> vec2f {\n\tlet l = length(v);\n\treturn select(v, v / l, l > 1e-06);\n}\n@vertex\nfn vertexMain(input: VertexInput) -> VertexOutput {\n\tvar output: VertexOutput;\n\tvar particlePos = input.particle_vertexData.xyz;\n\tlet inPos = particlePos;\n\tlet vertPos = input.particle_vertexData3.xyz;\n\tvar inVel = vec3f(input.particle_vertexData2.w, input.particle_vertexData3.w, input.particle_vertexData5.x);\n\tlet id = floor(input.particle_vertexData4);\n\tlet rndFactor = fract(sin(id + 1.0 + uniform.seed));\n\tlet rndFactor3 = vec3f(rndFactor, fract(rndFactor*10.0), fract(rndFactor*100.0));\n\t#ifdef LOCAL_SPACE\n\t\tlet modelRotation = mat3x3f(uniform.matrix_model[0].xyz, uniform.matrix_model[1].xyz, uniform.matrix_model[2].xyz);\n\t\tinVel = modelRotation * inVel;\n\t#endif\n\tlet velocityV = safeNormalize((mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz) * inVel).xy);\n\tlet quadXY = vertPos.xy;\n\t#ifdef USE_MESH\n\t\toutput.texCoordsAlphaLife = vec4f(input.particle_vertexData5.zw, input.particle_vertexData2.z, input.particle_vertexData.w);\n\t#else\n\t\toutput.texCoordsAlphaLife = vec4f(quadXY * -0.5 + 0.5, input.particle_vertexData2.z, input.particle_vertexData.w);\n\t#endif\n\tvar rotMatrix: mat2x2f;\n\tvar inAngle = input.particle_vertexData2.x;\n\tvar particlePosMoved = vec3f(0.0);\n\tlet meshLocalPos = input.particle_vertexData3.xyz;\n`;\n\nvar particle_cpu_endVS = `\n\tlocalPos = localPos * input.particle_vertexData2.y * uniform.emitterScale;\n\tlocalPos = localPos + particlePos;\n\toutput.position = uniform.matrix_viewProjection * vec4f(localPos, 1.0);\n`;\n\nvar particle_customFaceVS = `\n\tlet rotationResult = rotateWithMatrix(quadXY, inAngle);\n\tlet rotatedQuadXY = rotationResult.rotatedVec;\n\trotMatrix = rotationResult.matrix;\n\tvar localPos = customFace(particlePos, rotatedQuadXY);\n`;\n\nvar particle_endPS = `\n\trgb = addFog(rgb);\n\trgb = toneMap(rgb);\n\trgb = gammaCorrectOutput(rgb);\n\toutput.color = vec4f(rgb, a);\n\treturn output;\n}\n`;\n\nvar particle_endVS = `\n\tlocalPos = localPos * scale * uniform.emitterScale;\n\tlocalPos = localPos + particlePos;\n\t#ifdef SCREEN_SPACE\n\t\toutput.position = vec4f(localPos.x, localPos.y, 0.0, 1.0);\n\t#else\n\t\toutput.position = uniform.matrix_viewProjection * vec4f(localPos.xyz, 1.0);\n\t#endif\n`;\n\nvar particle_halflambertPS = `\n\tvar negNormal: vec3f = normal * 0.5 + 0.5;\n\tvar posNormal: vec3f = -normal * 0.5 + 0.5;\n\tnegNormal = negNormal * negNormal;\n\tposNormal = posNormal * posNormal;\n`;\n\nvar particle_initVS = `\nattribute particle_vertexData: vec4f;\n#if defined(USE_MESH)\n\t#if defined(USE_MESH_UV)\n\t\tattribute particle_uv: vec2f;\n\t#else\n\t\tvar<private> particle_uv: vec2f = vec2f(0.0, 0.0);\n\t#endif\n#endif\nuniform matrix_viewProjection: mat4x4f;\nuniform matrix_model: mat4x4f;\nuniform matrix_normal: mat3x3f;\nuniform matrix_viewInverse: mat4x4f;\n#ifndef VIEWMATRIX\n\t#define VIEWMATRIX\n\tuniform matrix_view: mat4x4f;\n#endif\nuniform numParticles: f32;\nuniform numParticlesPot: f32;\nuniform graphSampleSize: f32;\nuniform graphNumSamples: f32;\nuniform stretch: f32;\nuniform emitterScale: vec3f;\nuniform emitterPos: vec3f;\nuniform faceTangent: vec3f;\nuniform faceBinorm: vec3f;\nuniform rate: f32;\nuniform rateDiv: f32;\nuniform lifetime: f32;\nuniform scaleDivMult: f32;\nuniform alphaDivMult: f32;\nuniform seed: f32;\nuniform delta: f32;\n#ifdef PARTICLE_GPU\n\t#ifdef WRAP\n\t\tuniform wrapBounds: vec3f;\n\t#endif\n#endif\nvar particleTexOUT: texture_2d<uff>;\nvar particleTexIN: texture_2d<uff>;\n#ifdef PARTICLE_GPU\n\tvar internalTex0: texture_2d<uff>;\n\tvar internalTex1: texture_2d<uff>;\n\tvar internalTex2: texture_2d<uff>;\n#endif\n#ifndef CAMERAPLANES\n\t#define CAMERAPLANES\n\tuniform camera_params: vec4f;\n#endif\nvarying texCoordsAlphaLife: vec4f;\nvar<private> inPos: vec3f;\nvar<private> inVel: vec3f;\nvar<private> inAngle: f32;\nvar<private> inShow: bool;\nvar<private> inLife: f32;\n`;\n\nvar particle_lambertPS = `\n\tvar negNormal: vec3f = max(normal, vec3(0.0));\n\tvar posNormal: vec3f = max(-normal, vec3(0.0));\n`;\n\nvar particle_lightingPS = `\n\tlet light: vec3f = negNormal.x * uniform.lightCube[0] + posNormal.x * uniform.lightCube[1] +\n\t\t\t\t\t   negNormal.y * uniform.lightCube[2] + posNormal.y * uniform.lightCube[3] +\n\t\t\t\t\t   negNormal.z * uniform.lightCube[4] + posNormal.z * uniform.lightCube[5];\n\trgb = rgb * light;\n`;\n\nvar particle_localShiftVS = `\nparticlePos = (uniform.matrix_model * vec4f(particlePos, 1.0)).xyz;\n`;\n\nvar particle_meshVS = `\nvar localPos = meshLocalPos;\nlet rotResultXY = rotateWithMatrix(localPos.xy, inAngle);\nlocalPos = vec3f(rotResultXY.rotatedVec, localPos.z);\nrotMatrix = rotResultXY.matrix;\nlet rotResultYZ = rotateWithMatrix(localPos.yz, inAngle);\nlocalPos = vec3f(localPos.x, rotResultYZ.rotatedVec);\nrotMatrix = rotResultYZ.matrix;\nbillboard(particlePos, quadXY);\n`;\n\nvar particle_normalVS = `\noutput.Normal = normalize(localPos + uniform.matrix_viewInverse[2].xyz);\n`;\n\nvar particle_normalMapPS = `\n\tlet sampledNormal: vec4f = textureSample(normalMap, normalMapSampler, vec2f(input.texCoordsAlphaLife.x, 1.0 - input.texCoordsAlphaLife.y));\n\tlet normalMap: vec3f = normalize(sampledNormal.xyz * 2.0 - 1.0);\n\tlet ParticleMat = mat3x3<f32>(ParticleMat0, ParticleMat1, ParticleMat2);\n\tlet normal: vec3f = ParticleMat * normalMap;\n`;\n\nvar particle_pointAlongVS = `\n\tinAngle = atan2(velocityV.x, velocityV.y);\n`;\n\nvar particle_simulationPS = `\n\t#include \"particleUpdaterInitPS\"\n\t#ifdef PACK8\n\t\t#include \"particleInputRgba8PS\"\n\t\t#include \"particleOutputRgba8PS\"\n\t#else\n\t\t#include \"particleInputFloatPS\"\n\t\t#include \"particleOutputFloatPS\"\n\t#endif\n\t#ifdef EMITTERSHAPE_BOX\n\t\t#include \"particleUpdaterAABBPS\"\n\t#else\n\t\t#include \"particleUpdaterSpherePS\"\n\t#endif\n\t#include \"particleUpdaterStartPS\"\n\t#ifdef RESPAWN\n\t\t#include \"particleUpdaterRespawnPS\"\n\t#endif\n\t#ifdef NO_RESPAWN\n\t\t#include \"particleUpdaterNoRespawnPS\"\n\t#endif\n\t#ifdef ON_STOP\n\t\t#include \"particleUpdaterOnStopPS\"\n\t#endif\n\t#include \"particleUpdaterEndPS\"\n`;\n\nvar particle_shaderPS = `\n\t#if NORMAL != NONE\n\t\t#if NORMAL == VERTEX\n\t\t\tvarying Normal: vec3f;\n\t\t#endif\n\t\t#if NORMAL == MAP\n\t\t\tvarying ParticleMat0: vec3f;\n\t\t\tvarying ParticleMat1: vec3f;\n\t\t\tvarying ParticleMat2: vec3f;\n\t\t#endif\n\t\tuniform lightCube: array<vec3f, 6>;\n\t#endif\n\t#ifdef SOFT\n\t\tvarying vDepth: f32;\n\t\t#include \"screenDepthPS\"\n\t#endif\n\t#include \"gammaPS\"\n\t#include \"tonemappingPS\"\n\t#include \"fogPS\"\n\t#if NORMAL == MAP\n\t\tvar normalMap: texture_2d<f32>;\n\t\tvar normalMapSampler: sampler;\n\t#endif\n\t#include \"particlePS\"\n\t#ifdef SOFT\n\t\t#include \"particle_softPS\"\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvar normal: vec3f = Normal;\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_normalMapPS\"\n\t#endif\n\t#if NORMAL != NONE\n\t\t#ifdef HALF_LAMBERT\n\t\t\t#include \"particle_halflambertPS\"\n\t\t#else\n\t\t\t#include \"particle_lambertPS\"\n\t\t#endif\n\t\t#include \"particle_lightingPS\"\n\t#endif\n\t#if BLEND == NORMAL\n\t\t#include \"particle_blendNormalPS\"\n\t#elif BLEND == ADDITIVE\n\t\t#include \"particle_blendAddPS\"\n\t#elif BLEND == MULTIPLICATIVE\n\t\t#include \"particle_blendMultiplyPS\"\n\t#endif\n\t#include \"particle_endPS\"\n`;\n\nvar particle_shaderVS = `\n\t#ifdef ANIMTEX\n\t\tuniform animTexTilesParams: vec2f;\n\t\tuniform animTexParams: vec4f;\n\t\tuniform animTexIndexParams: vec2f;\n\t#endif\n\t#if NORMAL == MAP\n\t\tvarying ParticleMat0: vec3f;\n\t\tvarying ParticleMat1: vec3f;\n\t\tvarying ParticleMat2: vec3f;\n\t#endif\n\t#if NORMAL == VERTEX\n\t\tvarying Normal: vec3f;\n\t#endif\n\t#ifdef SOFT\n\t\tvarying vDepth: f32;\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_initVS\"\n\t\t#ifdef PACK8\n\t\t\t#include \"particleInputRgba8PS\"\n\t\t#else\n\t\t\t#include  \"particleInputFloatPS\"\n\t\t#endif\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particleVS\"\n\t#else\n\t\t#ifdef SOFT\n\t\t\t#include \"screenDepthPS\"\n\t\t#endif\n\t\t#include \"particle_cpuVS\"\n\t#endif\n\t#ifdef LOCAL_SPACE\n\t\t#include \"particle_localShiftVS\"\n\t#endif\n\t#ifdef ANIMTEX\n\t\t#ifdef ANIMTEX_LOOP\n\t\t\t#include \"particleAnimFrameLoopVS\"\n\t\t#else\n\t\t\t#include \"particleAnimFrameClampVS\"\n\t\t#endif\n\t\t#include \"particleAnimTexVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#ifdef WRAP\n\t\t\t#include \"particle_wrapVS\"\n\t\t#endif\n\t#endif\n\t#ifdef ALIGN_TO_MOTION\n\t\t#include \"particle_pointAlongVS\"\n\t#endif\n\t#ifdef USE_MESH\n\t\t#include \"particle_meshVS\"\n\t#else\n\t\t#ifdef CUSTOM_FACE\n\t\t\t#include \"particle_customFaceVS\"\n\t\t#else\n\t\t\t#include \"particle_billboardVS\"\n\t\t#endif\n\t#endif\n\t#if NORMAL == VERTEX\n\t\t#include \"particle_normalVS\"\n\t#endif\n\t#if NORMAL == MAP\n\t\t#include \"particle_TBNVS\"\n\t#endif\n\t#ifdef STRETCH\n\t\t#include \"particle_stretchVS\"\n\t#endif\n\t#ifdef PARTICLE_GPU\n\t\t#include \"particle_endVS\"\n\t#else\n\t\t#include \"particle_cpu_endVS\"\n\t#endif\n\t#ifdef SOFT\n\t\t#include \"particle_softVS\"\n\t#endif\n\treturn output;\n}\n`;\n\nvar particle_softPS = `\n\tvar depth: f32 = getLinearScreenDepthFrag();\n\tvar particleDepth: f32 = vDepth;\n\tvar depthDiff: f32 = saturate(abs(particleDepth - depth) * uniform.softening);\n\ta = a * depthDiff;\n`;\n\nvar particle_softVS = `\n\toutput.vDepth = getLinearDepth(localPos);\n`;\n\nvar particle_stretchVS = `\n\tlet moveDir: vec3f = inVel * uniform.stretch;\n\tvar posPrev: vec3f = particlePos - moveDir;\n\tposPrev = posPrev + particlePosMoved;\n\tlet viewRotationTemp: mat3x3f = mat3x3f(uniform.matrix_view[0].xyz, uniform.matrix_view[1].xyz, uniform.matrix_view[2].xyz);\n\tlet centerToVertexV: vec2f = normalize((viewRotationTemp * localPos).xy);\n\tlet interpolation: f32 = dot(-velocityV, centerToVertexV) * 0.5 + 0.5;\n\tparticlePos = mix(particlePos, posPrev, interpolation);\n`;\n\nvar particle_TBNVS = `\n\tlet rot3 = mat3x3f(\n\t\tvec3f(rotMatrix[0][0], rotMatrix[1][0], 0.0),\n\t\tvec3f(rotMatrix[0][1], rotMatrix[1][1], 0.0),\n\t\tvec3f(0.0, 0.0, 1.0)\n\t);\n\tlet viewBasis = mat3x3f(\n\t\t-uniform.matrix_viewInverse[0].xyz,\n\t\t-uniform.matrix_viewInverse[1].xyz,\n\t\tuniform.matrix_viewInverse[2].xyz\n\t);\n\tlet tempMat = viewBasis * rot3;\n\toutput.ParticleMat0 = tempMat[0];\n\toutput.ParticleMat1 = tempMat[1];\n\toutput.ParticleMat2 = tempMat[2];\n`;\n\nvar particle_wrapVS = `\n\tlet origParticlePos: vec3f = particlePos;\n\tparticlePos = particlePos - uniform.matrix_model[3].xyz;\n\tparticlePos = (particlePos % uniform.wrapBounds) - uniform.wrapBounds * 0.5;\n\tparticlePos = particlePos + uniform.matrix_model[3].xyz;\n\tparticlePosMoved = particlePos - origParticlePos;\n`;\n\nconst particleChunksWGSL = {\n\t\tparticlePS,\n\t\tparticleVS,\n\t\tparticleAnimFrameClampVS,\n\t\tparticleAnimFrameLoopVS,\n\t\tparticleAnimTexVS,\n\t\tparticleInputFloatPS,\n\t\tparticleInputRgba8PS,\n\t\tparticleOutputFloatPS,\n\t\tparticleOutputRgba8PS,\n\t\tparticleUpdaterAABBPS,\n\t\tparticleUpdaterEndPS,\n\t\tparticleUpdaterInitPS,\n\t\tparticleUpdaterNoRespawnPS,\n\t\tparticleUpdaterOnStopPS,\n\t\tparticleUpdaterRespawnPS,\n\t\tparticleUpdaterSpherePS,\n\t\tparticleUpdaterStartPS,\n\t\tparticle_billboardVS,\n\t\tparticle_blendAddPS,\n\t\tparticle_blendMultiplyPS,\n\t\tparticle_blendNormalPS,\n\t\tparticle_cpuVS,\n\t\tparticle_cpu_endVS,\n\t\tparticle_customFaceVS,\n\t\tparticle_endPS,\n\t\tparticle_endVS,\n\t\tparticle_halflambertPS,\n\t\tparticle_initVS,\n\t\tparticle_lambertPS,\n\t\tparticle_lightingPS,\n\t\tparticle_localShiftVS,\n\t\tparticle_meshVS,\n\t\tparticle_normalVS,\n\t\tparticle_normalMapPS,\n\t\tparticle_pointAlongVS,\n\t\tparticle_simulationPS,\n\t\tparticle_shaderPS,\n\t\tparticle_shaderVS,\n\t\tparticle_softPS,\n\t\tparticle_softVS,\n\t\tparticle_stretchVS,\n\t\tparticle_TBNVS,\n\t\tparticle_wrapVS\n};\n\nconst _schema$a = [\n\t\t'enabled',\n\t\t'autoPlay',\n\t\t'numParticles',\n\t\t'lifetime',\n\t\t'rate',\n\t\t'rate2',\n\t\t'startAngle',\n\t\t'startAngle2',\n\t\t'loop',\n\t\t'preWarm',\n\t\t'lighting',\n\t\t'halfLambert',\n\t\t'intensity',\n\t\t'depthWrite',\n\t\t'noFog',\n\t\t'depthSoftening',\n\t\t'sort',\n\t\t'blendType',\n\t\t'stretch',\n\t\t'alignToMotion',\n\t\t'emitterShape',\n\t\t'emitterExtents',\n\t\t'emitterExtentsInner',\n\t\t'emitterRadius',\n\t\t'emitterRadiusInner',\n\t\t'initialVelocity',\n\t\t'wrap',\n\t\t'wrapBounds',\n\t\t'localSpace',\n\t\t'screenSpace',\n\t\t'colorMapAsset',\n\t\t'normalMapAsset',\n\t\t'mesh',\n\t\t'meshAsset',\n\t\t'renderAsset',\n\t\t'orientation',\n\t\t'particleNormal',\n\t\t'localVelocityGraph',\n\t\t'localVelocityGraph2',\n\t\t'velocityGraph',\n\t\t'velocityGraph2',\n\t\t'rotationSpeedGraph',\n\t\t'rotationSpeedGraph2',\n\t\t'radialSpeedGraph',\n\t\t'radialSpeedGraph2',\n\t\t'scaleGraph',\n\t\t'scaleGraph2',\n\t\t'colorGraph',\n\t\t'colorGraph2',\n\t\t'alphaGraph',\n\t\t'alphaGraph2',\n\t\t'colorMap',\n\t\t'normalMap',\n\t\t'animTilesX',\n\t\t'animTilesY',\n\t\t'animStartFrame',\n\t\t'animNumFrames',\n\t\t'animNumAnimations',\n\t\t'animIndex',\n\t\t'randomizeAnimIndex',\n\t\t'animSpeed',\n\t\t'animLoop',\n\t\t'layers'\n];\nclass ParticleSystemComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'particlesystem';\n\t\t\t\tthis.ComponentType = ParticleSystemComponent;\n\t\t\t\tthis.DataType = ParticleSystemComponentData;\n\t\t\t\tthis.schema = _schema$a;\n\t\t\t\tthis.propertyTypes = {\n\t\t\t\t\t\temitterExtents: 'vec3',\n\t\t\t\t\t\temitterExtentsInner: 'vec3',\n\t\t\t\t\t\tparticleNormal: 'vec3',\n\t\t\t\t\t\twrapBounds: 'vec3',\n\t\t\t\t\t\tlocalVelocityGraph: 'curveset',\n\t\t\t\t\t\tlocalVelocityGraph2: 'curveset',\n\t\t\t\t\t\tvelocityGraph: 'curveset',\n\t\t\t\t\t\tvelocityGraph2: 'curveset',\n\t\t\t\t\t\tcolorGraph: 'curveset',\n\t\t\t\t\t\tcolorGraph2: 'curveset',\n\t\t\t\t\t\talphaGraph: 'curve',\n\t\t\t\t\t\talphaGraph2: 'curve',\n\t\t\t\t\t\trotationSpeedGraph: 'curve',\n\t\t\t\t\t\trotationSpeedGraph2: 'curve',\n\t\t\t\t\t\tradialSpeedGraph: 'curve',\n\t\t\t\t\t\tradialSpeedGraph2: 'curve',\n\t\t\t\t\t\tscaleGraph: 'curve',\n\t\t\t\t\t\tscaleGraph2: 'curve'\n\t\t\t\t};\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\tShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_GLSL).add(particleChunksGLSL);\n\t\t\t\tShaderChunks.get(app.graphicsDevice, SHADERLANGUAGE_WGSL).add(particleChunksWGSL);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tconst data = {};\n\t\t\t\tproperties = [];\n\t\t\t\tconst types = this.propertyTypes;\n\t\t\t\tif (_data.mesh instanceof Asset || typeof _data.mesh === 'number') {\n\t\t\t\t\t\t_data.meshAsset = _data.mesh;\n\t\t\t\t\t\tdelete _data.mesh;\n\t\t\t\t}\n\t\t\t\tfor(const prop in _data){\n\t\t\t\t\t\tif (_data.hasOwnProperty(prop)) {\n\t\t\t\t\t\t\t\tproperties.push(prop);\n\t\t\t\t\t\t\t\tdata[prop] = _data[prop];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (types[prop] === 'vec3') {\n\t\t\t\t\t\t\t\tif (Array.isArray(data[prop])) {\n\t\t\t\t\t\t\t\t\t\tdata[prop] = new Vec3(data[prop][0], data[prop][1], data[prop][2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (types[prop] === 'curve') {\n\t\t\t\t\t\t\t\tif (!(data[prop] instanceof Curve)) {\n\t\t\t\t\t\t\t\t\t\tconst t = data[prop].type;\n\t\t\t\t\t\t\t\t\t\tdata[prop] = new Curve(data[prop].keys);\n\t\t\t\t\t\t\t\t\t\tdata[prop].type = t;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (types[prop] === 'curveset') {\n\t\t\t\t\t\t\t\tif (!(data[prop] instanceof CurveSet)) {\n\t\t\t\t\t\t\t\t\t\tconst t = data[prop].type;\n\t\t\t\t\t\t\t\t\t\tdata[prop] = new CurveSet(data[prop].keys);\n\t\t\t\t\t\t\t\t\t\tdata[prop].type = t;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\t\t\tdata.layers = data.layers.slice(0);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst source = entity.particlesystem.data;\n\t\t\t\tconst schema = this.schema;\n\t\t\t\tconst data = {};\n\t\t\t\tfor(let i = 0, len = schema.length; i < len; i++){\n\t\t\t\t\t\tconst prop = schema[i];\n\t\t\t\t\t\tlet sourceProp = source[prop];\n\t\t\t\t\t\tif (sourceProp instanceof Vec3 || sourceProp instanceof Curve || sourceProp instanceof CurveSet) {\n\t\t\t\t\t\t\t\tsourceProp = sourceProp.clone();\n\t\t\t\t\t\t\t\tdata[prop] = sourceProp;\n\t\t\t\t\t\t} else if (prop === 'layers') {\n\t\t\t\t\t\t\t\tdata.layers = source.layers.slice(0);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (sourceProp !== null && sourceProp !== undefined) {\n\t\t\t\t\t\t\t\t\t\tdata[prop] = sourceProp;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tconst stats = this.app.stats.particles;\n\t\t\t\tconst composition = this.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < composition.layerList.length; i++){\n\t\t\t\t\t\tcomposition.layerList[i].requiresLightCube = false;\n\t\t\t\t}\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id];\n\t\t\t\t\t\t\t\tconst entity = component.entity;\n\t\t\t\t\t\t\t\tconst data = component.data;\n\t\t\t\t\t\t\t\tif (data.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tconst emitter = entity.particlesystem.emitter;\n\t\t\t\t\t\t\t\t\t\tif (!emitter?.meshInstance.visible) continue;\n\t\t\t\t\t\t\t\t\t\tif (emitter.lighting) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst layers = data.layers;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst layer = composition.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.requiresLightCube = true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!data.paused) {\n\t\t\t\t\t\t\t\t\t\t\t\tlet numSteps = 0;\n\t\t\t\t\t\t\t\t\t\t\t\temitter.simTime += dt;\n\t\t\t\t\t\t\t\t\t\t\t\tif (emitter.simTime >= emitter.fixedTimeStep) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumSteps = Math.floor(emitter.simTime / emitter.fixedTimeStep);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\temitter.simTime -= numSteps * emitter.fixedTimeStep;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (numSteps) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnumSteps = Math.min(numSteps, emitter.maxSubSteps);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < numSteps; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\temitter.addTime(emitter.fixedTimeStep, false);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstats._updatesPerFrame += numSteps;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tstats._frameTime += emitter._addTimeTime;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\temitter._addTimeTime = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\temitter.finishFrame();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onBeforeRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\n\nclass SkinInstanceCachedObject extends RefCountedObject {\n\t\tconstructor(skin, skinInstance){\n\t\t\t\tsuper();\n\t\t\t\tthis.skin = skin;\n\t\t\t\tthis.skinInstance = skinInstance;\n\t\t}\n}\nclass SkinInstanceCache {\n\t\tstatic{\n\t\t\t\tthis._skinInstanceCache = new Map();\n\t\t}\n\t\tstatic createCachedSkinInstance(skin, rootBone, entity) {\n\t\t\t\tlet skinInst = SkinInstanceCache.getCachedSkinInstance(skin, rootBone);\n\t\t\t\tif (!skinInst) {\n\t\t\t\t\t\tskinInst = new SkinInstance(skin);\n\t\t\t\t\t\tskinInst.resolve(rootBone, entity);\n\t\t\t\t\t\tSkinInstanceCache.addCachedSkinInstance(skin, rootBone, skinInst);\n\t\t\t\t}\n\t\t\t\treturn skinInst;\n\t\t}\n\t\tstatic getCachedSkinInstance(skin, rootBone) {\n\t\t\t\tlet skinInstance = null;\n\t\t\t\tconst cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\tif (cachedObjArray) {\n\t\t\t\t\t\tconst cachedObj = cachedObjArray.find((element)=>element.skin === skin);\n\t\t\t\t\t\tif (cachedObj) {\n\t\t\t\t\t\t\t\tcachedObj.incRefCount();\n\t\t\t\t\t\t\t\tskinInstance = cachedObj.skinInstance;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn skinInstance;\n\t\t}\n\t\tstatic addCachedSkinInstance(skin, rootBone, skinInstance) {\n\t\t\t\tlet cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\tif (!cachedObjArray) {\n\t\t\t\t\t\tcachedObjArray = [];\n\t\t\t\t\t\tSkinInstanceCache._skinInstanceCache.set(rootBone, cachedObjArray);\n\t\t\t\t}\n\t\t\t\tlet cachedObj = cachedObjArray.find((element)=>element.skin === skin);\n\t\t\t\tif (!cachedObj) {\n\t\t\t\t\t\tcachedObj = new SkinInstanceCachedObject(skin, skinInstance);\n\t\t\t\t\t\tcachedObjArray.push(cachedObj);\n\t\t\t\t}\n\t\t\t\tcachedObj.incRefCount();\n\t\t}\n\t\tstatic removeCachedSkinInstance(skinInstance) {\n\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\tconst rootBone = skinInstance.rootBone;\n\t\t\t\t\t\tif (rootBone) {\n\t\t\t\t\t\t\t\tconst cachedObjArray = SkinInstanceCache._skinInstanceCache.get(rootBone);\n\t\t\t\t\t\t\t\tif (cachedObjArray) {\n\t\t\t\t\t\t\t\t\t\tconst cachedObjIndex = cachedObjArray.findIndex((element)=>element.skinInstance === skinInstance);\n\t\t\t\t\t\t\t\t\t\tif (cachedObjIndex >= 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst cachedObj = cachedObjArray[cachedObjIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tcachedObj.decRefCount();\n\t\t\t\t\t\t\t\t\t\t\t\tif (cachedObj.refCount === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcachedObjArray.splice(cachedObjIndex, 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!cachedObjArray.length) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tSkinInstanceCache._skinInstanceCache.delete(rootBone);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (skinInstance) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tskinInstance.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcachedObj.skinInstance = null;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass AssetReference {\n\t\tconstructor(propertyName, parent, registry, callbacks, scope){\n\t\t\t\tthis._evtLoadById = null;\n\t\t\t\tthis._evtUnloadById = null;\n\t\t\t\tthis._evtAddById = null;\n\t\t\t\tthis._evtRemoveById = null;\n\t\t\t\tthis._evtLoadByUrl = null;\n\t\t\t\tthis._evtAddByUrl = null;\n\t\t\t\tthis._evtRemoveByUrl = null;\n\t\t\t\tthis.propertyName = propertyName;\n\t\t\t\tthis.parent = parent;\n\t\t\t\tthis._scope = scope;\n\t\t\t\tthis._registry = registry;\n\t\t\t\tthis.id = null;\n\t\t\t\tthis.url = null;\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis._onAssetLoad = callbacks.load;\n\t\t\t\tthis._onAssetAdd = callbacks.add;\n\t\t\t\tthis._onAssetRemove = callbacks.remove;\n\t\t\t\tthis._onAssetUnload = callbacks.unload;\n\t\t}\n\t\tset id(value) {\n\t\t\t\tif (this.url) throw Error('Can\\'t set id and url');\n\t\t\t\tthis._unbind();\n\t\t\t\tthis._id = value;\n\t\t\t\tthis.asset = this._registry.get(this._id);\n\t\t\t\tthis._bind();\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tset url(value) {\n\t\t\t\tif (this.id) throw Error('Can\\'t set id and url');\n\t\t\t\tthis._unbind();\n\t\t\t\tthis._url = value;\n\t\t\t\tthis.asset = this._registry.getByUrl(this._url);\n\t\t\t\tthis._bind();\n\t\t}\n\t\tget url() {\n\t\t\t\treturn this._url;\n\t\t}\n\t\t_bind() {\n\t\t\t\tif (this.id) {\n\t\t\t\t\t\tif (this._onAssetLoad) this._evtLoadById = this._registry.on(`load:${this.id}`, this._onLoad, this);\n\t\t\t\t\t\tif (this._onAssetAdd) this._evtAddById = this._registry.once(`add:${this.id}`, this._onAdd, this);\n\t\t\t\t\t\tif (this._onAssetRemove) this._evtRemoveById = this._registry.on(`remove:${this.id}`, this._onRemove, this);\n\t\t\t\t\t\tif (this._onAssetUnload) this._evtUnloadById = this._registry.on(`unload:${this.id}`, this._onUnload, this);\n\t\t\t\t}\n\t\t\t\tif (this.url) {\n\t\t\t\t\t\tif (this._onAssetLoad) this._evtLoadByUrl = this._registry.on(`load:url:${this.url}`, this._onLoad, this);\n\t\t\t\t\t\tif (this._onAssetAdd) this._evtAddByUrl = this._registry.once(`add:url:${this.url}`, this._onAdd, this);\n\t\t\t\t\t\tif (this._onAssetRemove) this._evtRemoveByUrl = this._registry.on(`remove:url:${this.url}`, this._onRemove, this);\n\t\t\t\t}\n\t\t}\n\t\t_unbind() {\n\t\t\t\tif (this.id) {\n\t\t\t\t\t\tthis._evtLoadById?.off();\n\t\t\t\t\t\tthis._evtLoadById = null;\n\t\t\t\t\t\tthis._evtAddById?.off();\n\t\t\t\t\t\tthis._evtAddById = null;\n\t\t\t\t\t\tthis._evtRemoveById?.off();\n\t\t\t\t\t\tthis._evtRemoveById = null;\n\t\t\t\t\t\tthis._evtUnloadById?.off();\n\t\t\t\t\t\tthis._evtUnloadById = null;\n\t\t\t\t}\n\t\t\t\tif (this.url) {\n\t\t\t\t\t\tthis._evtLoadByUrl?.off();\n\t\t\t\t\t\tthis._evtLoadByUrl = null;\n\t\t\t\t\t\tthis._evtAddByUrl?.off();\n\t\t\t\t\t\tthis._evtAddByUrl = null;\n\t\t\t\t\t\tthis._evtRemoveByUrl?.off();\n\t\t\t\t\t\tthis._evtRemoveByUrl = null;\n\t\t\t\t}\n\t\t}\n\t\t_onLoad(asset) {\n\t\t\t\tthis._onAssetLoad.call(this._scope, this.propertyName, this.parent, asset);\n\t\t}\n\t\t_onAdd(asset) {\n\t\t\t\tthis.asset = asset;\n\t\t\t\tthis._onAssetAdd.call(this._scope, this.propertyName, this.parent, asset);\n\t\t}\n\t\t_onRemove(asset) {\n\t\t\t\tthis._onAssetRemove.call(this._scope, this.propertyName, this.parent, asset);\n\t\t\t\tthis.asset = null;\n\t\t}\n\t\t_onUnload(asset) {\n\t\t\t\tthis._onAssetUnload.call(this._scope, this.propertyName, this.parent, asset);\n\t\t}\n}\n\nclass RenderComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._type = 'asset', this._castShadows = true, this._receiveShadows = true, this._castShadowsLightmap = true, this._lightmapped = false, this._lightmapSizeMultiplier = 1, this.isStatic = false, this._batchGroupId = -1, this._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t], this._renderStyle = RENDERSTYLE_SOLID, this._meshInstances = [], this._customAabb = null, this._area = null, this._materialReferences = [], this._rootBone = null, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._evtSetMeshes = null;\n\t\t\t\tthis._assetReference = new AssetReference('asset', this, system.app.assets, {\n\t\t\t\t\t\tadd: this._onRenderAssetAdded,\n\t\t\t\t\t\tload: this._onRenderAssetLoad,\n\t\t\t\t\t\tremove: this._onRenderAssetRemove,\n\t\t\t\t\t\tunload: this._onRenderAssetUnload\n\t\t\t\t}, this);\n\t\t\t\tthis._material = system.defaultMaterial;\n\t\t\t\tentity.on('remove', this.onRemoveChild, this);\n\t\t\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\t\t\tentity.on('insert', this.onInsertChild, this);\n\t\t\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t\t}\n\t\tset renderStyle(renderStyle) {\n\t\t\t\tif (this._renderStyle !== renderStyle) {\n\t\t\t\t\t\tthis._renderStyle = renderStyle;\n\t\t\t\t\t\tMeshInstance._prepareRenderStyleForArray(this._meshInstances, renderStyle);\n\t\t\t\t}\n\t\t}\n\t\tget renderStyle() {\n\t\t\t\treturn this._renderStyle;\n\t\t}\n\t\tset customAabb(value) {\n\t\t\t\tthis._customAabb = value;\n\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\tif (mi) {\n\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget customAabb() {\n\t\t\t\treturn this._customAabb;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type !== value) {\n\t\t\t\t\t\tthis._area = null;\n\t\t\t\t\t\tthis._type = value;\n\t\t\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\t\t\tif (value !== 'asset') {\n\t\t\t\t\t\t\t\tlet material = this._material;\n\t\t\t\t\t\t\t\tif (!material || material === this.system.defaultMaterial) {\n\t\t\t\t\t\t\t\t\t\tmaterial = this._materialReferences[0] && this._materialReferences[0].asset && this._materialReferences[0].asset.resource;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst primData = getShapePrimitive(this.system.app.graphicsDevice, value);\n\t\t\t\t\t\t\t\tthis._area = primData.area;\n\t\t\t\t\t\t\t\tthis.meshInstances = [\n\t\t\t\t\t\t\t\t\t\tnew MeshInstance(primData.mesh, material || this.system.defaultMaterial, this.entity)\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset meshInstances(value) {\n\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\tthis._meshInstances = value;\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\tif (!mi[i].node) {\n\t\t\t\t\t\t\t\t\t\tmi[i].node = this.entity;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmi[i].castShadow = this._castShadows;\n\t\t\t\t\t\t\t\tmi[i].receiveShadow = this._receiveShadows;\n\t\t\t\t\t\t\t\tmi[i].renderStyle = this._renderStyle;\n\t\t\t\t\t\t\t\tmi[i].setLightmapped(this._lightmapped);\n\t\t\t\t\t\t\t\tmi[i].setCustomAabb(this._customAabb);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget meshInstances() {\n\t\t\t\treturn this._meshInstances;\n\t\t}\n\t\tset lightmapped(value) {\n\t\t\t\tif (value !== this._lightmapped) {\n\t\t\t\t\t\tthis._lightmapped = value;\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].setLightmapped(value);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lightmapped() {\n\t\t\t\treturn this._lightmapped;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows !== value) {\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tconst layers = this.layers;\n\t\t\t\t\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\t\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.removeShadowCasters(mi);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].castShadow = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.addShadowCasters(mi);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._castShadows = value;\n\t\t\t\t}\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows;\n\t\t}\n\t\tset receiveShadows(value) {\n\t\t\t\tif (this._receiveShadows !== value) {\n\t\t\t\t\t\tthis._receiveShadows = value;\n\t\t\t\t\t\tconst mi = this._meshInstances;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < mi.length; i++){\n\t\t\t\t\t\t\t\t\t\tmi[i].receiveShadow = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget receiveShadows() {\n\t\t\t\treturn this._receiveShadows;\n\t\t}\n\t\tset castShadowsLightmap(value) {\n\t\t\t\tthis._castShadowsLightmap = value;\n\t\t}\n\t\tget castShadowsLightmap() {\n\t\t\t\treturn this._castShadowsLightmap;\n\t\t}\n\t\tset lightmapSizeMultiplier(value) {\n\t\t\t\tthis._lightmapSizeMultiplier = value;\n\t\t}\n\t\tget lightmapSizeMultiplier() {\n\t\t\t\treturn this._lightmapSizeMultiplier;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tlet layer;\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._layers.length = 0;\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tthis._layers[i] = value[i];\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled || !this._meshInstances) return;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tlayer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId !== value) {\n\t\t\t\t\t\tif (this.entity.enabled && this._batchGroupId >= 0) {\n\t\t\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.RENDER, value, this.entity);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value < 0 && this._batchGroupId >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._batchGroupId = value;\n\t\t\t\t}\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._material !== value) {\n\t\t\t\t\t\tthis._material = value;\n\t\t\t\t\t\tif (this._meshInstances && this._type !== 'asset') {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\t\t\tthis._meshInstances[i].material = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset materialAssets(value = []) {\n\t\t\t\tif (this._materialReferences.length > value.length) {\n\t\t\t\t\t\tfor(let i = value.length; i < this._materialReferences.length; i++){\n\t\t\t\t\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._materialReferences.length = value.length;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tif (!this._materialReferences[i]) {\n\t\t\t\t\t\t\t\tthis._materialReferences.push(new AssetReference(i, this, this.system.app.assets, {\n\t\t\t\t\t\t\t\t\t\tadd: this._onMaterialAdded,\n\t\t\t\t\t\t\t\t\t\tload: this._onMaterialLoad,\n\t\t\t\t\t\t\t\t\t\tremove: this._onMaterialRemove,\n\t\t\t\t\t\t\t\t\t\tunload: this._onMaterialUnload\n\t\t\t\t\t\t\t\t}, this));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value[i]) {\n\t\t\t\t\t\t\t\tconst id = value[i] instanceof Asset ? value[i].id : value[i];\n\t\t\t\t\t\t\t\tif (this._materialReferences[i].id !== id) {\n\t\t\t\t\t\t\t\t\t\tthis._materialReferences[i].id = id;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._materialReferences[i].asset) {\n\t\t\t\t\t\t\t\t\t\tthis._onMaterialAdded(i, this, this._materialReferences[i].asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\t\t\t\t\tif (this._meshInstances[i]) {\n\t\t\t\t\t\t\t\t\t\tthis._meshInstances[i].material = this.system.defaultMaterial;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget materialAssets() {\n\t\t\t\treturn this._materialReferences.map((ref)=>{\n\t\t\t\t\t\treturn ref.id;\n\t\t\t\t});\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._assetReference.id === id) return;\n\t\t\t\tif (this._assetReference.asset && this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onRenderAssetRemove();\n\t\t\t\t}\n\t\t\t\tthis._assetReference.id = id;\n\t\t\t\tif (this._assetReference.asset) {\n\t\t\t\t\t\tthis._onRenderAssetAdded();\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._assetReference.id;\n\t\t}\n\t\tassignAsset(asset) {\n\t\t\t\tconst id = asset instanceof Asset ? asset.id : asset;\n\t\t\t\tthis._assetReference.id = id;\n\t\t}\n\t\tset rootBone(value) {\n\t\t\t\tif (this._rootBone !== value) {\n\t\t\t\t\t\tconst isString = typeof value === 'string';\n\t\t\t\t\t\tif (this._rootBone && isString && this._rootBone.getGuid() === value) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\t\t\tthis._clearSkinInstances();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (value instanceof GraphNode) {\n\t\t\t\t\t\t\t\tthis._rootBone = value;\n\t\t\t\t\t\t} else if (isString) {\n\t\t\t\t\t\t\t\tthis._rootBone = this.system.app.getEntityFromIndex(value) || null;\n\t\t\t\t\t\t\t\tif (!this._rootBone) ;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._rootBone = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\t\t\tthis._cloneSkinInstances();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rootBone() {\n\t\t\t\treturn this._rootBone;\n\t\t}\n\t\tdestroyMeshInstances() {\n\t\t\t\tconst meshInstances = this._meshInstances;\n\t\t\t\tif (meshInstances) {\n\t\t\t\t\t\tthis.removeFromLayers();\n\t\t\t\t\t\tthis._clearSkinInstances();\n\t\t\t\t\t\tfor(let i = 0; i < meshInstances.length; i++){\n\t\t\t\t\t\t\t\tmeshInstances[i].destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._meshInstances.length = 0;\n\t\t\t\t}\n\t\t}\n\t\taddToLayers() {\n\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveFromLayers() {\n\t\t\t\tif (this._meshInstances && this._meshInstances.length) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tconst layer = layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonRemoveChild() {\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\tonInsertChild() {\n\t\t\t\tif (this._meshInstances && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t}\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis.materialAsset = null;\n\t\t\t\tthis._assetReference.id = null;\n\t\t\t\tfor(let i = 0; i < this._materialReferences.length; i++){\n\t\t\t\t\t\tthis._materialReferences[i].id = null;\n\t\t\t\t}\n\t\t\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\t\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addMeshInstances(this._meshInstances);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances(this._meshInstances);\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\tthis._cloneSkinInstances();\n\t\t\t\t}\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tconst isAsset = this._type === 'asset';\n\t\t\t\tif (this._meshInstances && this._meshInstances.length) {\n\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t} else if (isAsset && this.asset) {\n\t\t\t\t\t\tthis._onRenderAssetAdded();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._materialReferences.length; i++){\n\t\t\t\t\t\tif (this._materialReferences[i].asset) {\n\t\t\t\t\t\t\t\tthis.system.app.assets.load(this._materialReferences[i].asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.insert(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (this._rootBone) {\n\t\t\t\t\t\tthis._clearSkinInstances();\n\t\t\t\t}\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.remove(BatchGroup.RENDER, this.batchGroupId, this.entity);\n\t\t\t\t}\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\thide() {\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\tthis._meshInstances[i].visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tshow() {\n\t\t\t\tif (this._meshInstances) {\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\tthis._meshInstances[i].visible = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetAdded() {\n\t\t\t\tif (!this._assetReference.asset) return;\n\t\t\t\tif (this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onRenderAssetLoad();\n\t\t\t\t} else if (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.system.app.assets.load(this._assetReference.asset);\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetLoad() {\n\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\tif (this._assetReference.asset) {\n\t\t\t\t\t\tconst render = this._assetReference.asset.resource;\n\t\t\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\t\t\tthis._evtSetMeshes = render.on('set:meshes', this._onSetMeshes, this);\n\t\t\t\t\t\tif (render.meshes) {\n\t\t\t\t\t\t\t\tthis._onSetMeshes(render.meshes);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSetMeshes(meshes) {\n\t\t\t\tthis._cloneMeshes(meshes);\n\t\t}\n\t\t_clearSkinInstances() {\n\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstance = this._meshInstances[i];\n\t\t\t\t\t\tSkinInstanceCache.removeCachedSkinInstance(meshInstance.skinInstance);\n\t\t\t\t\t\tmeshInstance.skinInstance = null;\n\t\t\t\t}\n\t\t}\n\t\t_cloneSkinInstances() {\n\t\t\t\tif (this._meshInstances.length && this._rootBone instanceof GraphNode) {\n\t\t\t\t\t\tfor(let i = 0; i < this._meshInstances.length; i++){\n\t\t\t\t\t\t\t\tconst meshInstance = this._meshInstances[i];\n\t\t\t\t\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\t\t\t\t\tif (mesh.skin && !meshInstance.skinInstance) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(mesh.skin, this._rootBone, this.entity);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_cloneMeshes(meshes) {\n\t\t\t\tif (meshes && meshes.length) {\n\t\t\t\t\t\tconst meshInstances = [];\n\t\t\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\t\t\tconst mesh = meshes[i];\n\t\t\t\t\t\t\t\tconst material = this._materialReferences[i] && this._materialReferences[i].asset && this._materialReferences[i].asset.resource;\n\t\t\t\t\t\t\t\tconst meshInst = new MeshInstance(mesh, material || this.system.defaultMaterial, this.entity);\n\t\t\t\t\t\t\t\tmeshInstances.push(meshInst);\n\t\t\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\t\t\tmeshInst.morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.meshInstances = meshInstances;\n\t\t\t\t\t\tthis._cloneSkinInstances();\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetUnload() {\n\t\t\t\tif (this._type === 'asset') {\n\t\t\t\t\t\tthis.destroyMeshInstances();\n\t\t\t\t}\n\t\t}\n\t\t_onRenderAssetRemove() {\n\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\tthis._onRenderAssetUnload();\n\t\t}\n\t\t_onMaterialAdded(index, component, asset) {\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onMaterialLoad(index, component, asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.system.app.assets.load(asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateMainMaterial(index, material) {\n\t\t\t\tif (index === 0) {\n\t\t\t\t\t\tthis.material = material;\n\t\t\t\t}\n\t\t}\n\t\t_onMaterialLoad(index, component, asset) {\n\t\t\t\tif (this._meshInstances[index]) {\n\t\t\t\t\t\tthis._meshInstances[index].material = asset.resource;\n\t\t\t\t}\n\t\t\t\tthis._updateMainMaterial(index, asset.resource);\n\t\t}\n\t\t_onMaterialRemove(index, component, asset) {\n\t\t\t\tif (this._meshInstances[index]) {\n\t\t\t\t\t\tthis._meshInstances[index].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t\tthis._updateMainMaterial(index, this.system.defaultMaterial);\n\t\t}\n\t\t_onMaterialUnload(index, component, asset) {\n\t\t\t\tif (this._meshInstances[index]) {\n\t\t\t\t\t\tthis._meshInstances[index].material = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t\tthis._updateMainMaterial(index, this.system.defaultMaterial);\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldRender, duplicatedIdsMap) {\n\t\t\t\tif (oldRender.rootBone) {\n\t\t\t\t\t\tthis.rootBone = duplicatedIdsMap[oldRender.rootBone.getGuid()];\n\t\t\t\t}\n\t\t}\n}\n\nclass RenderComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$9 = [\n\t\t'enabled'\n];\nconst _properties$1 = [\n\t\t'material',\n\t\t'meshInstances',\n\t\t'asset',\n\t\t'materialAssets',\n\t\t'castShadows',\n\t\t'receiveShadows',\n\t\t'castShadowsLightmap',\n\t\t'lightmapped',\n\t\t'lightmapSizeMultiplier',\n\t\t'renderStyle',\n\t\t'type',\n\t\t'layers',\n\t\t'isStatic',\n\t\t'batchGroupId',\n\t\t'rootBone'\n];\nclass RenderComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'render';\n\t\t\t\tthis.ComponentType = RenderComponent;\n\t\t\t\tthis.DataType = RenderComponentData;\n\t\t\t\tthis.schema = _schema$9;\n\t\t\t\tthis.defaultMaterial = getDefaultMaterial(app.graphicsDevice);\n\t\t\t\tthis.on('beforeremove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tif (_data.batchGroupId === null || _data.batchGroupId === undefined) {\n\t\t\t\t\t\t_data.batchGroupId = -1;\n\t\t\t\t}\n\t\t\t\tif (_data.layers && _data.layers.length) {\n\t\t\t\t\t\t_data.layers = _data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < _properties$1.length; i++){\n\t\t\t\t\t\tif (_data.hasOwnProperty(_properties$1[i])) {\n\t\t\t\t\t\t\t\tcomponent[_properties$1[i]] = _data[_properties$1[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\t\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, _data, _schema$9);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst data = {};\n\t\t\t\tfor(let i = 0; i < _properties$1.length; i++){\n\t\t\t\t\t\tdata[_properties$1[i]] = entity.render[_properties$1[i]];\n\t\t\t\t}\n\t\t\t\tdata.enabled = entity.render.enabled;\n\t\t\t\tdelete data.meshInstances;\n\t\t\t\tconst component = this.addComponent(clone, data);\n\t\t\t\tconst srcMeshInstances = entity.render.meshInstances;\n\t\t\t\tconst meshes = srcMeshInstances.map((mi)=>mi.mesh);\n\t\t\t\tcomponent._onSetMeshes(meshes);\n\t\t\t\tfor(let m = 0; m < srcMeshInstances.length; m++){\n\t\t\t\t\t\tcomponent.meshInstances[m].material = srcMeshInstances[m].material;\n\t\t\t\t}\n\t\t\t\tif (entity.render.customAabb) {\n\t\t\t\t\t\tcomponent.customAabb = entity.render.customAabb.clone();\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t}\n\t\tonRemove(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\nComponent._buildAccessors(RenderComponent.prototype, _schema$9);\n\nclass ObjectPool {\n\t\tconstructor(constructorFunc, size){\n\t\t\t\tthis._pool = [];\n\t\t\t\tthis._count = 0;\n\t\t\t\tthis._constructor = constructorFunc;\n\t\t\t\tthis._resize(size);\n\t\t}\n\t\t_resize(size) {\n\t\t\t\tif (size > this._pool.length) {\n\t\t\t\t\t\tfor(let i = this._pool.length; i < size; i++){\n\t\t\t\t\t\t\t\tthis._pool[i] = new this._constructor();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tallocate() {\n\t\t\t\tif (this._count >= this._pool.length) {\n\t\t\t\t\t\tthis._resize(this._pool.length * 2);\n\t\t\t\t}\n\t\t\t\treturn this._pool[this._count++];\n\t\t}\n\t\tfreeAll() {\n\t\t\t\tthis._count = 0;\n\t\t}\n}\n\nlet _ammoTransform;\nlet _ammoVec1, _ammoVec2, _ammoQuat;\nconst _quat1 = new Quat();\nconst _quat2 = new Quat();\nconst _vec3 = new Vec3();\nclass RigidBodyComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CONTACT = 'contact';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONSTART = 'collisionstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_COLLISIONEND = 'collisionend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERENTER = 'triggerenter';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRIGGERLEAVE = 'triggerleave';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.order = -1;\n\t\t}\n\t\tstatic onLibraryLoaded() {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\t_ammoTransform = new Ammo.btTransform();\n\t\t\t\t\t\t_ammoVec1 = new Ammo.btVector3();\n\t\t\t\t\t\t_ammoVec2 = new Ammo.btVector3();\n\t\t\t\t\t\t_ammoQuat = new Ammo.btQuaternion();\n\t\t\t\t}\n\t\t}\n\t\tstatic onAppDestroy() {\n\t\t\t\tAmmo.destroy(_ammoTransform);\n\t\t\t\tAmmo.destroy(_ammoVec1);\n\t\t\t\tAmmo.destroy(_ammoVec2);\n\t\t\t\tAmmo.destroy(_ammoQuat);\n\t\t\t\t_ammoTransform = null;\n\t\t\t\t_ammoVec1 = null;\n\t\t\t\t_ammoVec2 = null;\n\t\t\t\t_ammoQuat = null;\n\t\t}\n\t\tset angularDamping(damping) {\n\t\t\t\tif (this._angularDamping !== damping) {\n\t\t\t\t\t\tthis._angularDamping = damping;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setDamping(this._linearDamping, damping);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget angularDamping() {\n\t\t\t\treturn this._angularDamping;\n\t\t}\n\t\tset angularFactor(factor) {\n\t\t\t\tif (!this._angularFactor.equals(factor)) {\n\t\t\t\t\t\tthis._angularFactor.copy(factor);\n\t\t\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(factor.x, factor.y, factor.z);\n\t\t\t\t\t\t\t\tthis._body.setAngularFactor(_ammoVec1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget angularFactor() {\n\t\t\t\treturn this._angularFactor;\n\t\t}\n\t\tset angularVelocity(velocity) {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tthis._body.activate();\n\t\t\t\t\t\t_ammoVec1.setValue(velocity.x, velocity.y, velocity.z);\n\t\t\t\t\t\tthis._body.setAngularVelocity(_ammoVec1);\n\t\t\t\t\t\tthis._angularVelocity.copy(velocity);\n\t\t\t\t}\n\t\t}\n\t\tget angularVelocity() {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tconst velocity = this._body.getAngularVelocity();\n\t\t\t\t\t\tthis._angularVelocity.set(velocity.x(), velocity.y(), velocity.z());\n\t\t\t\t}\n\t\t\t\treturn this._angularVelocity;\n\t\t}\n\t\tset body(body) {\n\t\t\t\tif (this._body !== body) {\n\t\t\t\t\t\tthis._body = body;\n\t\t\t\t\t\tif (body && this._simulationEnabled) {\n\t\t\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget body() {\n\t\t\t\treturn this._body;\n\t\t}\n\t\tset friction(friction) {\n\t\t\t\tif (this._friction !== friction) {\n\t\t\t\t\t\tthis._friction = friction;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setFriction(friction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget friction() {\n\t\t\t\treturn this._friction;\n\t\t}\n\t\tset group(group) {\n\t\t\t\tif (this._group !== group) {\n\t\t\t\t\t\tthis._group = group;\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget group() {\n\t\t\t\treturn this._group;\n\t\t}\n\t\tset linearDamping(damping) {\n\t\t\t\tif (this._linearDamping !== damping) {\n\t\t\t\t\t\tthis._linearDamping = damping;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setDamping(damping, this._angularDamping);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget linearDamping() {\n\t\t\t\treturn this._linearDamping;\n\t\t}\n\t\tset linearFactor(factor) {\n\t\t\t\tif (!this._linearFactor.equals(factor)) {\n\t\t\t\t\t\tthis._linearFactor.copy(factor);\n\t\t\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(factor.x, factor.y, factor.z);\n\t\t\t\t\t\t\t\tthis._body.setLinearFactor(_ammoVec1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget linearFactor() {\n\t\t\t\treturn this._linearFactor;\n\t\t}\n\t\tset linearVelocity(velocity) {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tthis._body.activate();\n\t\t\t\t\t\t_ammoVec1.setValue(velocity.x, velocity.y, velocity.z);\n\t\t\t\t\t\tthis._body.setLinearVelocity(_ammoVec1);\n\t\t\t\t\t\tthis._linearVelocity.copy(velocity);\n\t\t\t\t}\n\t\t}\n\t\tget linearVelocity() {\n\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\tconst velocity = this._body.getLinearVelocity();\n\t\t\t\t\t\tthis._linearVelocity.set(velocity.x(), velocity.y(), velocity.z());\n\t\t\t\t}\n\t\t\t\treturn this._linearVelocity;\n\t\t}\n\t\tset mask(mask) {\n\t\t\t\tif (this._mask !== mask) {\n\t\t\t\t\t\tthis._mask = mask;\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this._mask;\n\t\t}\n\t\tset mass(mass) {\n\t\t\t\tif (this._mass !== mass) {\n\t\t\t\t\t\tthis._mass = mass;\n\t\t\t\t\t\tif (this._body && this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\tconst enabled = this.enabled && this.entity.enabled;\n\t\t\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._body.getCollisionShape().calculateLocalInertia(mass, _ammoVec1);\n\t\t\t\t\t\t\t\tthis._body.setMassProps(mass, _ammoVec1);\n\t\t\t\t\t\t\t\tthis._body.updateInertiaTensor();\n\t\t\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget mass() {\n\t\t\t\treturn this._mass;\n\t\t}\n\t\tset restitution(restitution) {\n\t\t\t\tif (this._restitution !== restitution) {\n\t\t\t\t\t\tthis._restitution = restitution;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setRestitution(restitution);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget restitution() {\n\t\t\t\treturn this._restitution;\n\t\t}\n\t\tset rollingFriction(friction) {\n\t\t\t\tif (this._rollingFriction !== friction) {\n\t\t\t\t\t\tthis._rollingFriction = friction;\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis._body.setRollingFriction(friction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget rollingFriction() {\n\t\t\t\treturn this._rollingFriction;\n\t\t}\n\t\tset type(type) {\n\t\t\t\tif (this._type !== type) {\n\t\t\t\t\t\tthis._type = type;\n\t\t\t\t\t\tthis.disableSimulation();\n\t\t\t\t\t\tswitch(type){\n\t\t\t\t\t\t\t\tcase BODYTYPE_DYNAMIC:\n\t\t\t\t\t\t\t\t\t\tthis._group = BODYGROUP_DYNAMIC;\n\t\t\t\t\t\t\t\t\t\tthis._mask = BODYMASK_ALL;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BODYTYPE_KINEMATIC:\n\t\t\t\t\t\t\t\t\t\tthis._group = BODYGROUP_KINEMATIC;\n\t\t\t\t\t\t\t\t\t\tthis._mask = BODYMASK_ALL;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase BODYTYPE_STATIC:\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tthis._group = BODYGROUP_STATIC;\n\t\t\t\t\t\t\t\t\t\tthis._mask = BODYMASK_NOT_STATIC;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.createBody();\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tcreateBody() {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tlet shape;\n\t\t\t\tif (entity.collision) {\n\t\t\t\t\t\tshape = entity.collision.shape;\n\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\tentity.trigger.destroy();\n\t\t\t\t\t\t\t\tdelete entity.trigger;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (shape) {\n\t\t\t\t\t\tif (this._body) {\n\t\t\t\t\t\t\t\tthis.system.removeBody(this._body);\n\t\t\t\t\t\t\t\tthis.system.destroyBody(this._body);\n\t\t\t\t\t\t\t\tthis._body = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst mass = this._type === BODYTYPE_DYNAMIC ? this._mass : 0;\n\t\t\t\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\t\t\t\tconst body = this.system.createBody(mass, shape, _ammoTransform);\n\t\t\t\t\t\tbody.setRestitution(this._restitution);\n\t\t\t\t\t\tbody.setFriction(this._friction);\n\t\t\t\t\t\tbody.setRollingFriction(this._rollingFriction);\n\t\t\t\t\t\tbody.setDamping(this._linearDamping, this._angularDamping);\n\t\t\t\t\t\tif (this._type === BODYTYPE_DYNAMIC) {\n\t\t\t\t\t\t\t\tconst linearFactor = this._linearFactor;\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(linearFactor.x, linearFactor.y, linearFactor.z);\n\t\t\t\t\t\t\t\tbody.setLinearFactor(_ammoVec1);\n\t\t\t\t\t\t\t\tconst angularFactor = this._angularFactor;\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(angularFactor.x, angularFactor.y, angularFactor.z);\n\t\t\t\t\t\t\t\tbody.setAngularFactor(_ammoVec1);\n\t\t\t\t\t\t} else if (this._type === BODYTYPE_KINEMATIC) {\n\t\t\t\t\t\t\t\tbody.setCollisionFlags(body.getCollisionFlags() | BODYFLAG_KINEMATIC_OBJECT);\n\t\t\t\t\t\t\t\tbody.setActivationState(BODYSTATE_DISABLE_DEACTIVATION);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.entity = entity;\n\t\t\t\t\t\tthis.body = body;\n\t\t\t\t\t\tif (this.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tthis.enableSimulation();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tisActive() {\n\t\t\t\treturn this._body ? this._body.isActive() : false;\n\t\t}\n\t\tactivate() {\n\t\t\t\tif (this._body) {\n\t\t\t\t\t\tthis._body.activate();\n\t\t\t\t}\n\t\t}\n\t\tenableSimulation() {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tif (entity.collision && entity.collision.enabled && !this._simulationEnabled) {\n\t\t\t\t\t\tconst body = this._body;\n\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\tthis.system.addBody(body, this._group, this._mask);\n\t\t\t\t\t\t\t\tswitch(this._type){\n\t\t\t\t\t\t\t\t\t\tcase BODYTYPE_DYNAMIC:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system._dynamic.push(this);\n\t\t\t\t\t\t\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.syncEntityToBody();\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase BODYTYPE_KINEMATIC:\n\t\t\t\t\t\t\t\t\t\t\t\tthis.system._kinematic.push(this);\n\t\t\t\t\t\t\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_DEACTIVATION);\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase BODYTYPE_STATIC:\n\t\t\t\t\t\t\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_ACTIVE_TAG);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.syncEntityToBody();\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (entity.collision.type === 'compound') {\n\t\t\t\t\t\t\t\t\t\tthis.system._compounds.push(entity.collision);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\t\t\tthis._simulationEnabled = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdisableSimulation() {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body && this._simulationEnabled) {\n\t\t\t\t\t\tconst system = this.system;\n\t\t\t\t\t\tlet idx = system._compounds.indexOf(this.entity.collision);\n\t\t\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\t\t\tsystem._compounds.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tidx = system._dynamic.indexOf(this);\n\t\t\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\t\t\tsystem._dynamic.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tidx = system._kinematic.indexOf(this);\n\t\t\t\t\t\tif (idx > -1) {\n\t\t\t\t\t\t\t\tsystem._kinematic.splice(idx, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsystem.removeBody(body);\n\t\t\t\t\t\tbody.forceActivationState(BODYSTATE_DISABLE_SIMULATION);\n\t\t\t\t\t\tthis._simulationEnabled = false;\n\t\t\t\t}\n\t\t}\n\t\tapplyForce(x, y, z, px, py, pz) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (y instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(y.x, y.y, y.z);\n\t\t\t\t\t\t} else if (px !== undefined) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(px, py, pz);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyForce(_ammoVec1, _ammoVec2);\n\t\t\t\t}\n\t\t}\n\t\tapplyTorque(x, y, z) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyTorque(_ammoVec1);\n\t\t\t\t}\n\t\t}\n\t\tapplyImpulse(x, y, z, px, py, pz) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (y instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(y.x, y.y, y.z);\n\t\t\t\t\t\t} else if (px !== undefined) {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(px, py, pz);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec2.setValue(0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyImpulse(_ammoVec1, _ammoVec2);\n\t\t\t\t}\n\t\t}\n\t\tapplyTorqueImpulse(x, y, z) {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x.x, x.y, x.z);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t_ammoVec1.setValue(x, y, z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.applyTorqueImpulse(_ammoVec1);\n\t\t\t\t}\n\t\t}\n\t\tisStatic() {\n\t\t\t\treturn this._type === BODYTYPE_STATIC;\n\t\t}\n\t\tisStaticOrKinematic() {\n\t\t\t\treturn this._type === BODYTYPE_STATIC || this._type === BODYTYPE_KINEMATIC;\n\t\t}\n\t\tisKinematic() {\n\t\t\t\treturn this._type === BODYTYPE_KINEMATIC;\n\t\t}\n\t\t_getEntityTransform(transform) {\n\t\t\t\tconst entity = this.entity;\n\t\t\t\tconst component = entity.collision;\n\t\t\t\tif (component) {\n\t\t\t\t\t\tconst bodyPos = component.getShapePosition();\n\t\t\t\t\t\tconst bodyRot = component.getShapeRotation();\n\t\t\t\t\t\t_ammoVec1.setValue(bodyPos.x, bodyPos.y, bodyPos.z);\n\t\t\t\t\t\t_ammoQuat.setValue(bodyRot.x, bodyRot.y, bodyRot.z, bodyRot.w);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst pos = entity.getPosition();\n\t\t\t\t\t\tconst rot = entity.getRotation();\n\t\t\t\t\t\t_ammoVec1.setValue(pos.x, pos.y, pos.z);\n\t\t\t\t\t\t_ammoQuat.setValue(rot.x, rot.y, rot.z, rot.w);\n\t\t\t\t}\n\t\t\t\ttransform.setOrigin(_ammoVec1);\n\t\t\t\ttransform.setRotation(_ammoQuat);\n\t\t}\n\t\tsyncEntityToBody() {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body) {\n\t\t\t\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\t\t\t\tbody.setWorldTransform(_ammoTransform);\n\t\t\t\t\t\tif (this._type === BODYTYPE_KINEMATIC) {\n\t\t\t\t\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\t\t\t\t\tif (motionState) {\n\t\t\t\t\t\t\t\t\t\tmotionState.setWorldTransform(_ammoTransform);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbody.activate();\n\t\t\t\t}\n\t\t}\n\t\t_updateDynamic() {\n\t\t\t\tconst body = this._body;\n\t\t\t\tif (body.isActive()) {\n\t\t\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\t\t\tif (motionState) {\n\t\t\t\t\t\t\t\tconst entity = this.entity;\n\t\t\t\t\t\t\t\tmotionState.getWorldTransform(_ammoTransform);\n\t\t\t\t\t\t\t\tconst p = _ammoTransform.getOrigin();\n\t\t\t\t\t\t\t\tconst q = _ammoTransform.getRotation();\n\t\t\t\t\t\t\t\tconst component = entity.collision;\n\t\t\t\t\t\t\t\tif (component && component._hasOffset) {\n\t\t\t\t\t\t\t\t\t\tconst lo = component.data.linearOffset;\n\t\t\t\t\t\t\t\t\t\tconst ao = component.data.angularOffset;\n\t\t\t\t\t\t\t\t\t\tconst invertedAo = _quat2.copy(ao).invert();\n\t\t\t\t\t\t\t\t\t\tconst entityRot = _quat1.set(q.x(), q.y(), q.z(), q.w()).mul(invertedAo);\n\t\t\t\t\t\t\t\t\t\tentityRot.transformVector(lo, _vec3);\n\t\t\t\t\t\t\t\t\t\tentity.setPosition(p.x() - _vec3.x, p.y() - _vec3.y, p.z() - _vec3.z);\n\t\t\t\t\t\t\t\t\t\tentity.setRotation(entityRot);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tentity.setPosition(p.x(), p.y(), p.z());\n\t\t\t\t\t\t\t\t\t\tentity.setRotation(q.x(), q.y(), q.z(), q.w());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateKinematic() {\n\t\t\t\tconst motionState = this._body.getMotionState();\n\t\t\t\tif (motionState) {\n\t\t\t\t\t\tthis._getEntityTransform(_ammoTransform);\n\t\t\t\t\t\tmotionState.setWorldTransform(_ammoTransform);\n\t\t\t\t}\n\t\t}\n\t\tteleport(x, y, z, rx, ry, rz) {\n\t\t\t\tif (x instanceof Vec3) {\n\t\t\t\t\t\tthis.entity.setPosition(x);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.entity.setPosition(x, y, z);\n\t\t\t\t}\n\t\t\t\tif (y instanceof Quat) {\n\t\t\t\t\t\tthis.entity.setRotation(y);\n\t\t\t\t} else if (y instanceof Vec3) {\n\t\t\t\t\t\tthis.entity.setEulerAngles(y);\n\t\t\t\t} else if (rx !== undefined) {\n\t\t\t\t\t\tthis.entity.setEulerAngles(rx, ry, rz);\n\t\t\t\t}\n\t\t\t\tthis.syncEntityToBody();\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (!this._body) {\n\t\t\t\t\t\tthis.createBody();\n\t\t\t\t}\n\t\t\t\tthis.enableSimulation();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis.disableSimulation();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._angularDamping = 0, this._angularFactor = new Vec3(1, 1, 1), this._angularVelocity = new Vec3(), this._body = null, this._friction = 0.5, this._group = BODYGROUP_STATIC, this._linearDamping = 0, this._linearFactor = new Vec3(1, 1, 1), this._linearVelocity = new Vec3(), this._mask = BODYMASK_NOT_STATIC, this._mass = 1, this._restitution = 0, this._rollingFriction = 0, this._simulationEnabled = false, this._type = BODYTYPE_STATIC;\n\t\t}\n}\n\nclass RigidBodyComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nlet ammoRayStart, ammoRayEnd;\nclass RaycastResult {\n\t\tconstructor(entity, point, normal, hitFraction){\n\t\t\t\tthis.entity = entity;\n\t\t\t\tthis.point = point;\n\t\t\t\tthis.normal = normal;\n\t\t\t\tthis.hitFraction = hitFraction;\n\t\t}\n}\nclass SingleContactResult {\n\t\tconstructor(a, b, contactPoint){\n\t\t\t\tif (arguments.length !== 0) {\n\t\t\t\t\t\tthis.a = a;\n\t\t\t\t\t\tthis.b = b;\n\t\t\t\t\t\tthis.impulse = contactPoint.impulse;\n\t\t\t\t\t\tthis.localPointA = contactPoint.localPoint;\n\t\t\t\t\t\tthis.localPointB = contactPoint.localPointOther;\n\t\t\t\t\t\tthis.pointA = contactPoint.point;\n\t\t\t\t\t\tthis.pointB = contactPoint.pointOther;\n\t\t\t\t\t\tthis.normal = contactPoint.normal;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.a = null;\n\t\t\t\t\t\tthis.b = null;\n\t\t\t\t\t\tthis.impulse = 0;\n\t\t\t\t\t\tthis.localPointA = new Vec3();\n\t\t\t\t\t\tthis.localPointB = new Vec3();\n\t\t\t\t\t\tthis.pointA = new Vec3();\n\t\t\t\t\t\tthis.pointB = new Vec3();\n\t\t\t\t\t\tthis.normal = new Vec3();\n\t\t\t\t}\n\t\t}\n}\nclass ContactPoint {\n\t\tconstructor(localPoint = new Vec3(), localPointOther = new Vec3(), point = new Vec3(), pointOther = new Vec3(), normal = new Vec3(), impulse = 0){\n\t\t\t\tthis.localPoint = localPoint;\n\t\t\t\tthis.localPointOther = localPointOther;\n\t\t\t\tthis.point = point;\n\t\t\t\tthis.pointOther = pointOther;\n\t\t\t\tthis.normal = normal;\n\t\t\t\tthis.impulse = impulse;\n\t\t}\n}\nclass ContactResult {\n\t\tconstructor(other, contacts){\n\t\t\t\tthis.other = other;\n\t\t\t\tthis.contacts = contacts;\n\t\t}\n}\nconst _schema$8 = [\n\t\t'enabled'\n];\nclass RigidBodyComponentSystem extends ComponentSystem {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CONTACT = 'contact';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper(app), this.maxSubSteps = 10, this.fixedTimeStep = 1 / 60, this.gravity = new Vec3(0, -9.81, 0), this._gravityFloat32 = new Float32Array(3), this._dynamic = [], this._kinematic = [], this._triggers = [], this._compounds = [];\n\t\t\t\tthis.id = 'rigidbody';\n\t\t\t\tthis._stats = app.stats.frame;\n\t\t\t\tthis.ComponentType = RigidBodyComponent;\n\t\t\t\tthis.DataType = RigidBodyComponentData;\n\t\t\t\tthis.contactPointPool = null;\n\t\t\t\tthis.contactResultPool = null;\n\t\t\t\tthis.singleContactResultPool = null;\n\t\t\t\tthis.schema = _schema$8;\n\t\t\t\tthis.collisions = {};\n\t\t\t\tthis.frameCollisions = {};\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t}\n\t\tonLibraryLoaded() {\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tthis.collisionConfiguration = new Ammo.btDefaultCollisionConfiguration();\n\t\t\t\t\t\tthis.dispatcher = new Ammo.btCollisionDispatcher(this.collisionConfiguration);\n\t\t\t\t\t\tthis.overlappingPairCache = new Ammo.btDbvtBroadphase();\n\t\t\t\t\t\tthis.solver = new Ammo.btSequentialImpulseConstraintSolver();\n\t\t\t\t\t\tthis.dynamicsWorld = new Ammo.btDiscreteDynamicsWorld(this.dispatcher, this.overlappingPairCache, this.solver, this.collisionConfiguration);\n\t\t\t\t\t\tif (this.dynamicsWorld.setInternalTickCallback) {\n\t\t\t\t\t\t\t\tconst checkForCollisionsPointer = Ammo.addFunction(this._checkForCollisions.bind(this), 'vif');\n\t\t\t\t\t\t\t\tthis.dynamicsWorld.setInternalTickCallback(checkForCollisionsPointer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tammoRayStart = new Ammo.btVector3();\n\t\t\t\t\t\tammoRayEnd = new Ammo.btVector3();\n\t\t\t\t\t\tRigidBodyComponent.onLibraryLoaded();\n\t\t\t\t\t\tthis.contactPointPool = new ObjectPool(ContactPoint, 1);\n\t\t\t\t\t\tthis.contactResultPool = new ObjectPool(ContactResult, 1);\n\t\t\t\t\t\tthis.singleContactResultPool = new ObjectPool(SingleContactResult, 1);\n\t\t\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t\t\t}\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tconst props = [\n\t\t\t\t\t\t'mass',\n\t\t\t\t\t\t'linearDamping',\n\t\t\t\t\t\t'angularDamping',\n\t\t\t\t\t\t'linearFactor',\n\t\t\t\t\t\t'angularFactor',\n\t\t\t\t\t\t'friction',\n\t\t\t\t\t\t'rollingFriction',\n\t\t\t\t\t\t'restitution',\n\t\t\t\t\t\t'type',\n\t\t\t\t\t\t'group',\n\t\t\t\t\t\t'mask'\n\t\t\t\t];\n\t\t\t\tfor (const property of props){\n\t\t\t\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tconst value = data[property];\n\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\tcomponent[property] = new Vec3(value[0], value[1], value[2]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst rigidbody = entity.rigidbody;\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: rigidbody.enabled,\n\t\t\t\t\t\tmass: rigidbody.mass,\n\t\t\t\t\t\tlinearDamping: rigidbody.linearDamping,\n\t\t\t\t\t\tangularDamping: rigidbody.angularDamping,\n\t\t\t\t\t\tlinearFactor: [\n\t\t\t\t\t\t\t\trigidbody.linearFactor.x,\n\t\t\t\t\t\t\t\trigidbody.linearFactor.y,\n\t\t\t\t\t\t\t\trigidbody.linearFactor.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tangularFactor: [\n\t\t\t\t\t\t\t\trigidbody.angularFactor.x,\n\t\t\t\t\t\t\t\trigidbody.angularFactor.y,\n\t\t\t\t\t\t\t\trigidbody.angularFactor.z\n\t\t\t\t\t\t],\n\t\t\t\t\t\tfriction: rigidbody.friction,\n\t\t\t\t\t\trollingFriction: rigidbody.rollingFriction,\n\t\t\t\t\t\trestitution: rigidbody.restitution,\n\t\t\t\t\t\ttype: rigidbody.type,\n\t\t\t\t\t\tgroup: rigidbody.group,\n\t\t\t\t\t\tmask: rigidbody.mask\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tif (component.enabled) {\n\t\t\t\t\t\tcomponent.enabled = false;\n\t\t\t\t}\n\t\t\t\tif (component.body) {\n\t\t\t\t\t\tthis.destroyBody(component.body);\n\t\t\t\t\t\tcomponent.body = null;\n\t\t\t\t}\n\t\t}\n\t\taddBody(body, group, mask) {\n\t\t\t\tif (group !== undefined && mask !== undefined) {\n\t\t\t\t\t\tthis.dynamicsWorld.addRigidBody(body, group, mask);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.dynamicsWorld.addRigidBody(body);\n\t\t\t\t}\n\t\t}\n\t\tremoveBody(body) {\n\t\t\t\tthis.dynamicsWorld.removeRigidBody(body);\n\t\t}\n\t\tcreateBody(mass, shape, transform) {\n\t\t\t\tconst localInertia = new Ammo.btVector3(0, 0, 0);\n\t\t\t\tif (mass !== 0) {\n\t\t\t\t\t\tshape.calculateLocalInertia(mass, localInertia);\n\t\t\t\t}\n\t\t\t\tconst motionState = new Ammo.btDefaultMotionState(transform);\n\t\t\t\tconst bodyInfo = new Ammo.btRigidBodyConstructionInfo(mass, motionState, shape, localInertia);\n\t\t\t\tconst body = new Ammo.btRigidBody(bodyInfo);\n\t\t\t\tAmmo.destroy(bodyInfo);\n\t\t\t\tAmmo.destroy(localInertia);\n\t\t\t\treturn body;\n\t\t}\n\t\tdestroyBody(body) {\n\t\t\t\tconst motionState = body.getMotionState();\n\t\t\t\tif (motionState) {\n\t\t\t\t\t\tAmmo.destroy(motionState);\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(body);\n\t\t}\n\t\traycastFirst(start, end, options = {}) {\n\t\t\t\tif (options.filterTags || options.filterCallback) {\n\t\t\t\t\t\toptions.sort = true;\n\t\t\t\t\t\treturn this.raycastAll(start, end, options)[0] || null;\n\t\t\t\t}\n\t\t\t\tlet result = null;\n\t\t\t\tammoRayStart.setValue(start.x, start.y, start.z);\n\t\t\t\tammoRayEnd.setValue(end.x, end.y, end.z);\n\t\t\t\tconst rayCallback = new Ammo.ClosestRayResultCallback(ammoRayStart, ammoRayEnd);\n\t\t\t\tif (typeof options.filterCollisionGroup === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup);\n\t\t\t\t}\n\t\t\t\tif (typeof options.filterCollisionMask === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterMask(options.filterCollisionMask);\n\t\t\t\t}\n\t\t\t\tthis.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback);\n\t\t\t\tif (rayCallback.hasHit()) {\n\t\t\t\t\t\tconst collisionObj = rayCallback.get_m_collisionObject();\n\t\t\t\t\t\tconst body = Ammo.castObject(collisionObj, Ammo.btRigidBody);\n\t\t\t\t\t\tif (body) {\n\t\t\t\t\t\t\t\tconst point = rayCallback.get_m_hitPointWorld();\n\t\t\t\t\t\t\t\tconst normal = rayCallback.get_m_hitNormalWorld();\n\t\t\t\t\t\t\t\tresult = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), rayCallback.get_m_closestHitFraction());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(rayCallback);\n\t\t\t\treturn result;\n\t\t}\n\t\traycastAll(start, end, options = {}) {\n\t\t\t\tconst results = [];\n\t\t\t\tammoRayStart.setValue(start.x, start.y, start.z);\n\t\t\t\tammoRayEnd.setValue(end.x, end.y, end.z);\n\t\t\t\tconst rayCallback = new Ammo.AllHitsRayResultCallback(ammoRayStart, ammoRayEnd);\n\t\t\t\tif (typeof options.filterCollisionGroup === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterGroup(options.filterCollisionGroup);\n\t\t\t\t}\n\t\t\t\tif (typeof options.filterCollisionMask === 'number') {\n\t\t\t\t\t\trayCallback.set_m_collisionFilterMask(options.filterCollisionMask);\n\t\t\t\t}\n\t\t\t\tthis.dynamicsWorld.rayTest(ammoRayStart, ammoRayEnd, rayCallback);\n\t\t\t\tif (rayCallback.hasHit()) {\n\t\t\t\t\t\tconst collisionObjs = rayCallback.get_m_collisionObjects();\n\t\t\t\t\t\tconst points = rayCallback.get_m_hitPointWorld();\n\t\t\t\t\t\tconst normals = rayCallback.get_m_hitNormalWorld();\n\t\t\t\t\t\tconst hitFractions = rayCallback.get_m_hitFractions();\n\t\t\t\t\t\tconst numHits = collisionObjs.size();\n\t\t\t\t\t\tfor(let i = 0; i < numHits; i++){\n\t\t\t\t\t\t\t\tconst body = Ammo.castObject(collisionObjs.at(i), Ammo.btRigidBody);\n\t\t\t\t\t\t\t\tif (body && body.entity) {\n\t\t\t\t\t\t\t\t\t\tif (options.filterTags && !body.entity.tags.has(...options.filterTags) || options.filterCallback && !options.filterCallback(body.entity)) {\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst point = points.at(i);\n\t\t\t\t\t\t\t\t\t\tconst normal = normals.at(i);\n\t\t\t\t\t\t\t\t\t\tconst result = new RaycastResult(body.entity, new Vec3(point.x(), point.y(), point.z()), new Vec3(normal.x(), normal.y(), normal.z()), hitFractions.at(i));\n\t\t\t\t\t\t\t\t\t\tresults.push(result);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options.sort) {\n\t\t\t\t\t\t\t\tresults.sort((a, b)=>a.hitFraction - b.hitFraction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tAmmo.destroy(rayCallback);\n\t\t\t\treturn results;\n\t\t}\n\t\t_storeCollision(entity, other) {\n\t\t\t\tlet isNewCollision = false;\n\t\t\t\tconst guid = entity.getGuid();\n\t\t\t\tthis.collisions[guid] = this.collisions[guid] || {\n\t\t\t\t\t\tothers: [],\n\t\t\t\t\t\tentity: entity\n\t\t\t\t};\n\t\t\t\tif (this.collisions[guid].others.indexOf(other) < 0) {\n\t\t\t\t\t\tthis.collisions[guid].others.push(other);\n\t\t\t\t\t\tisNewCollision = true;\n\t\t\t\t}\n\t\t\t\tthis.frameCollisions[guid] = this.frameCollisions[guid] || {\n\t\t\t\t\t\tothers: [],\n\t\t\t\t\t\tentity: entity\n\t\t\t\t};\n\t\t\t\tthis.frameCollisions[guid].others.push(other);\n\t\t\t\treturn isNewCollision;\n\t\t}\n\t\t_createContactPointFromAmmo(contactPoint) {\n\t\t\t\tconst localPointA = contactPoint.get_m_localPointA();\n\t\t\t\tconst localPointB = contactPoint.get_m_localPointB();\n\t\t\t\tconst positionWorldOnA = contactPoint.getPositionWorldOnA();\n\t\t\t\tconst positionWorldOnB = contactPoint.getPositionWorldOnB();\n\t\t\t\tconst normalWorldOnB = contactPoint.get_m_normalWorldOnB();\n\t\t\t\tconst contact = this.contactPointPool.allocate();\n\t\t\t\tcontact.localPoint.set(localPointA.x(), localPointA.y(), localPointA.z());\n\t\t\t\tcontact.localPointOther.set(localPointB.x(), localPointB.y(), localPointB.z());\n\t\t\t\tcontact.point.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z());\n\t\t\t\tcontact.pointOther.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z());\n\t\t\t\tcontact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z());\n\t\t\t\tcontact.impulse = contactPoint.getAppliedImpulse();\n\t\t\t\treturn contact;\n\t\t}\n\t\t_createReverseContactPointFromAmmo(contactPoint) {\n\t\t\t\tconst localPointA = contactPoint.get_m_localPointA();\n\t\t\t\tconst localPointB = contactPoint.get_m_localPointB();\n\t\t\t\tconst positionWorldOnA = contactPoint.getPositionWorldOnA();\n\t\t\t\tconst positionWorldOnB = contactPoint.getPositionWorldOnB();\n\t\t\t\tconst normalWorldOnB = contactPoint.get_m_normalWorldOnB();\n\t\t\t\tconst contact = this.contactPointPool.allocate();\n\t\t\t\tcontact.localPointOther.set(localPointA.x(), localPointA.y(), localPointA.z());\n\t\t\t\tcontact.localPoint.set(localPointB.x(), localPointB.y(), localPointB.z());\n\t\t\t\tcontact.pointOther.set(positionWorldOnA.x(), positionWorldOnA.y(), positionWorldOnA.z());\n\t\t\t\tcontact.point.set(positionWorldOnB.x(), positionWorldOnB.y(), positionWorldOnB.z());\n\t\t\t\tcontact.normal.set(normalWorldOnB.x(), normalWorldOnB.y(), normalWorldOnB.z());\n\t\t\t\tcontact.impulse = contactPoint.getAppliedImpulse();\n\t\t\t\treturn contact;\n\t\t}\n\t\t_createSingleContactResult(a, b, contactPoint) {\n\t\t\t\tconst result = this.singleContactResultPool.allocate();\n\t\t\t\tresult.a = a;\n\t\t\t\tresult.b = b;\n\t\t\t\tresult.localPointA = contactPoint.localPoint;\n\t\t\t\tresult.localPointB = contactPoint.localPointOther;\n\t\t\t\tresult.pointA = contactPoint.point;\n\t\t\t\tresult.pointB = contactPoint.pointOther;\n\t\t\t\tresult.normal = contactPoint.normal;\n\t\t\t\tresult.impulse = contactPoint.impulse;\n\t\t\t\treturn result;\n\t\t}\n\t\t_createContactResult(other, contacts) {\n\t\t\t\tconst result = this.contactResultPool.allocate();\n\t\t\t\tresult.other = other;\n\t\t\t\tresult.contacts = contacts;\n\t\t\t\treturn result;\n\t\t}\n\t\t_cleanOldCollisions() {\n\t\t\t\tfor(const guid in this.collisions){\n\t\t\t\t\t\tif (this.collisions.hasOwnProperty(guid)) {\n\t\t\t\t\t\t\t\tconst frameCollision = this.frameCollisions[guid];\n\t\t\t\t\t\t\t\tconst collision = this.collisions[guid];\n\t\t\t\t\t\t\t\tconst entity = collision.entity;\n\t\t\t\t\t\t\t\tconst entityCollision = entity.collision;\n\t\t\t\t\t\t\t\tconst entityRigidbody = entity.rigidbody;\n\t\t\t\t\t\t\t\tconst others = collision.others;\n\t\t\t\t\t\t\t\tconst length = others.length;\n\t\t\t\t\t\t\t\tlet i = length;\n\t\t\t\t\t\t\t\twhile(i--){\n\t\t\t\t\t\t\t\t\t\tconst other = others[i];\n\t\t\t\t\t\t\t\t\t\tif (!frameCollision || frameCollision.others.indexOf(other) < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tothers.splice(i, 1);\n\t\t\t\t\t\t\t\t\t\t\t\tif (entity.trigger) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (entityCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentityCollision.fire('triggerleave', other);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (other.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tother.rigidbody.fire('triggerleave', entity);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else if (!other.trigger) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (entityRigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentityRigidbody.fire('collisionend', other);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (entityCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tentityCollision.fire('collisionend', other);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (others.length === 0) {\n\t\t\t\t\t\t\t\t\t\tdelete this.collisions[guid];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_hasContactEvent(entity) {\n\t\t\t\tconst c = entity.collision;\n\t\t\t\tif (c && (c.hasEvent('collisionstart') || c.hasEvent('collisionend') || c.hasEvent('contact'))) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tconst r = entity.rigidbody;\n\t\t\t\treturn r && (r.hasEvent('collisionstart') || r.hasEvent('collisionend') || r.hasEvent('contact'));\n\t\t}\n\t\t_checkForCollisions(world, timeStep) {\n\t\t\t\tconst dynamicsWorld = Ammo.wrapPointer(world, Ammo.btDynamicsWorld);\n\t\t\t\tconst dispatcher = dynamicsWorld.getDispatcher();\n\t\t\t\tconst numManifolds = dispatcher.getNumManifolds();\n\t\t\t\tthis.frameCollisions = {};\n\t\t\t\tfor(let i = 0; i < numManifolds; i++){\n\t\t\t\t\t\tconst manifold = dispatcher.getManifoldByIndexInternal(i);\n\t\t\t\t\t\tconst body0 = manifold.getBody0();\n\t\t\t\t\t\tconst body1 = manifold.getBody1();\n\t\t\t\t\t\tconst wb0 = Ammo.castObject(body0, Ammo.btRigidBody);\n\t\t\t\t\t\tconst wb1 = Ammo.castObject(body1, Ammo.btRigidBody);\n\t\t\t\t\t\tconst e0 = wb0.entity;\n\t\t\t\t\t\tconst e1 = wb1.entity;\n\t\t\t\t\t\tif (!e0 || !e1) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst flags0 = wb0.getCollisionFlags();\n\t\t\t\t\t\tconst flags1 = wb1.getCollisionFlags();\n\t\t\t\t\t\tconst numContacts = manifold.getNumContacts();\n\t\t\t\t\t\tconst forwardContacts = [];\n\t\t\t\t\t\tconst reverseContacts = [];\n\t\t\t\t\t\tlet newCollision;\n\t\t\t\t\t\tif (numContacts > 0) {\n\t\t\t\t\t\t\t\tif (flags0 & BODYFLAG_NORESPONSE_OBJECT || flags1 & BODYFLAG_NORESPONSE_OBJECT) {\n\t\t\t\t\t\t\t\t\t\tconst e0Events = e0.collision && (e0.collision.hasEvent('triggerenter') || e0.collision.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tconst e1Events = e1.collision && (e1.collision.hasEvent('triggerenter') || e1.collision.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tconst e0BodyEvents = e0.rigidbody && (e0.rigidbody.hasEvent('triggerenter') || e0.rigidbody.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tconst e1BodyEvents = e1.rigidbody && (e1.rigidbody.hasEvent('triggerenter') || e1.rigidbody.hasEvent('triggerleave'));\n\t\t\t\t\t\t\t\t\t\tif (e0Events) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision && !(flags1 & BODYFLAG_NORESPONSE_OBJECT)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.collision.fire('triggerenter', e1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision && !(flags0 & BODYFLAG_NORESPONSE_OBJECT)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.collision.fire('triggerenter', e0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e0BodyEvents) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.rigidbody.fire('triggerenter', e1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (e1BodyEvents) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.rigidbody.fire('triggerenter', e0);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst e0Events = this._hasContactEvent(e0);\n\t\t\t\t\t\t\t\t\t\tconst e1Events = this._hasContactEvent(e1);\n\t\t\t\t\t\t\t\t\t\tconst globalEvents = this.hasEvent('contact');\n\t\t\t\t\t\t\t\t\t\tif (globalEvents || e0Events || e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < numContacts; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst btContactPoint = manifold.getContactPoint(j);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst contactPoint = this._createContactPointFromAmmo(btContactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e0Events || e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tforwardContacts.push(contactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst reverseContactPoint = this._createReverseContactPointFromAmmo(btContactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\treverseContacts.push(reverseContactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (globalEvents) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst result = this._createSingleContactResult(e0, e1, contactPoint);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('contact', result);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (e0Events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst forwardResult = this._createContactResult(e1, forwardContacts);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e0, e1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e0.collision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.collision.fire('contact', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.collision.fire('collisionstart', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e0.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.rigidbody.fire('contact', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te0.rigidbody.fire('collisionstart', forwardResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (e1Events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst reverseResult = this._createContactResult(e0, reverseContacts);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewCollision = this._storeCollision(e1, e0);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e1.collision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.collision.fire('contact', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.collision.fire('collisionstart', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (e1.rigidbody) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.rigidbody.fire('contact', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (newCollision) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\te1.rigidbody.fire('collisionstart', reverseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cleanOldCollisions();\n\t\t\t\tthis.contactPointPool.freeAll();\n\t\t\t\tthis.contactResultPool.freeAll();\n\t\t\t\tthis.singleContactResultPool.freeAll();\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tlet i, len;\n\t\t\t\tthis._gravityFloat32[0] = this.gravity.x;\n\t\t\t\tthis._gravityFloat32[1] = this.gravity.y;\n\t\t\t\tthis._gravityFloat32[2] = this.gravity.z;\n\t\t\t\tconst gravity = this.dynamicsWorld.getGravity();\n\t\t\t\tif (gravity.x() !== this._gravityFloat32[0] || gravity.y() !== this._gravityFloat32[1] || gravity.z() !== this._gravityFloat32[2]) {\n\t\t\t\t\t\tgravity.setValue(this.gravity.x, this.gravity.y, this.gravity.z);\n\t\t\t\t\t\tthis.dynamicsWorld.setGravity(gravity);\n\t\t\t\t}\n\t\t\t\tconst triggers = this._triggers;\n\t\t\t\tfor(i = 0, len = triggers.length; i < len; i++){\n\t\t\t\t\t\ttriggers[i].updateTransform();\n\t\t\t\t}\n\t\t\t\tconst compounds = this._compounds;\n\t\t\t\tfor(i = 0, len = compounds.length; i < len; i++){\n\t\t\t\t\t\tcompounds[i]._updateCompound();\n\t\t\t\t}\n\t\t\t\tconst kinematic = this._kinematic;\n\t\t\t\tfor(i = 0, len = kinematic.length; i < len; i++){\n\t\t\t\t\t\tkinematic[i]._updateKinematic();\n\t\t\t\t}\n\t\t\t\tthis.dynamicsWorld.stepSimulation(dt, this.maxSubSteps, this.fixedTimeStep);\n\t\t\t\tconst dynamic = this._dynamic;\n\t\t\t\tfor(i = 0, len = dynamic.length; i < len; i++){\n\t\t\t\t\t\tdynamic[i]._updateDynamic();\n\t\t\t\t}\n\t\t\t\tif (!this.dynamicsWorld.setInternalTickCallback) {\n\t\t\t\t\t\tthis._checkForCollisions(Ammo.getPointer(this.dynamicsWorld), dt);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t\t\tif (typeof Ammo !== 'undefined') {\n\t\t\t\t\t\tAmmo.destroy(this.dynamicsWorld);\n\t\t\t\t\t\tAmmo.destroy(this.solver);\n\t\t\t\t\t\tAmmo.destroy(this.overlappingPairCache);\n\t\t\t\t\t\tAmmo.destroy(this.dispatcher);\n\t\t\t\t\t\tAmmo.destroy(this.collisionConfiguration);\n\t\t\t\t\t\tAmmo.destroy(ammoRayStart);\n\t\t\t\t\t\tAmmo.destroy(ammoRayEnd);\n\t\t\t\t\t\tthis.dynamicsWorld = null;\n\t\t\t\t\t\tthis.solver = null;\n\t\t\t\t\t\tthis.overlappingPairCache = null;\n\t\t\t\t\t\tthis.dispatcher = null;\n\t\t\t\t\t\tthis.collisionConfiguration = null;\n\t\t\t\t\t\tammoRayStart = null;\n\t\t\t\t\t\tammoRayEnd = null;\n\t\t\t\t\t\tRigidBodyComponent.onAppDestroy();\n\t\t\t\t}\n\t\t}\n}\nComponent._buildAccessors(RigidBodyComponent.prototype, _schema$8);\n\nconst SCALEMODE_NONE = 'none';\nconst SCALEMODE_BLEND = 'blend';\n\nconst _transform = new Mat4();\nclass ScreenComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity);\n\t\t\t\tthis._resolution = new Vec2(640, 320);\n\t\t\t\tthis._referenceResolution = new Vec2(640, 320);\n\t\t\t\tthis._scaleMode = SCALEMODE_NONE;\n\t\t\t\tthis.scale = 1;\n\t\t\t\tthis._scaleBlend = 0.5;\n\t\t\t\tthis._priority = 0;\n\t\t\t\tthis._screenSpace = false;\n\t\t\t\tthis.cull = this._screenSpace;\n\t\t\t\tthis._screenMatrix = new Mat4();\n\t\t\t\tthis._elements = new Set();\n\t\t\t\tsystem.app.graphicsDevice.on('resizecanvas', this._onResize, this);\n\t\t}\n\t\tsyncDrawOrder() {\n\t\t\t\tthis.system.queueDrawOrderSync(this.entity.getGuid(), this._processDrawOrderSync, this);\n\t\t}\n\t\t_recurseDrawOrderSync(e, i) {\n\t\t\t\tif (!(e instanceof Entity)) {\n\t\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tif (e.element) {\n\t\t\t\t\t\tconst prevDrawOrder = e.element.drawOrder;\n\t\t\t\t\t\te.element.drawOrder = i++;\n\t\t\t\t\t\tif (e.element._batchGroupId >= 0 && prevDrawOrder !== e.element.drawOrder) {\n\t\t\t\t\t\t\t\tthis.system.app.batcher?.markGroupDirty(e.element._batchGroupId);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (e.particlesystem) {\n\t\t\t\t\t\te.particlesystem.drawOrder = i++;\n\t\t\t\t}\n\t\t\t\tconst children = e.children;\n\t\t\t\tfor(let j = 0; j < children.length; j++){\n\t\t\t\t\t\ti = this._recurseDrawOrderSync(children[j], i);\n\t\t\t\t}\n\t\t\t\treturn i;\n\t\t}\n\t\t_processDrawOrderSync() {\n\t\t\t\tconst i = 1;\n\t\t\t\tthis._recurseDrawOrderSync(this.entity, i);\n\t\t\t\tthis.fire('syncdraworder');\n\t\t}\n\t\t_calcProjectionMatrix() {\n\t\t\t\tconst w = this._resolution.x / this.scale;\n\t\t\t\tconst h = this._resolution.y / this.scale;\n\t\t\t\tconst left = 0;\n\t\t\t\tconst right = w;\n\t\t\t\tconst bottom = -h;\n\t\t\t\tconst top = 0;\n\t\t\t\tconst near = 1;\n\t\t\t\tconst far = -1;\n\t\t\t\tthis._screenMatrix.setOrtho(left, right, bottom, top, near, far);\n\t\t\t\tif (!this._screenSpace) {\n\t\t\t\t\t\t_transform.setScale(0.5 * w, 0.5 * h, 1);\n\t\t\t\t\t\tthis._screenMatrix.mul2(_transform, this._screenMatrix);\n\t\t\t\t}\n\t\t}\n\t\t_updateScale() {\n\t\t\t\tthis.scale = this._calcScale(this._resolution, this.referenceResolution);\n\t\t}\n\t\t_calcScale(resolution, referenceResolution) {\n\t\t\t\tconst lx = Math.log2((resolution.x || 1) / referenceResolution.x);\n\t\t\t\tconst ly = Math.log2((resolution.y || 1) / referenceResolution.y);\n\t\t\t\treturn Math.pow(2, lx * (1 - this._scaleBlend) + ly * this._scaleBlend);\n\t\t}\n\t\t_onResize(width, height) {\n\t\t\t\tif (this._screenSpace) {\n\t\t\t\t\t\tthis._resolution.set(width, height);\n\t\t\t\t\t\tthis.resolution = this._resolution;\n\t\t\t\t}\n\t\t}\n\t\t_bindElement(element) {\n\t\t\t\tthis._elements.add(element);\n\t\t}\n\t\t_unbindElement(element) {\n\t\t\t\tthis._elements.delete(element);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.system.app.graphicsDevice.off('resizecanvas', this._onResize, this);\n\t\t\t\tthis.fire('remove');\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenRemove());\n\t\t\t\tthis._elements.clear();\n\t\t\t\tthis.off();\n\t\t}\n\t\tset resolution(value) {\n\t\t\t\tif (!this._screenSpace) {\n\t\t\t\t\t\tthis._resolution.set(value.x, value.y);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._resolution.set(this.system.app.graphicsDevice.width, this.system.app.graphicsDevice.height);\n\t\t\t\t}\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._calcProjectionMatrix();\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:resolution', this._resolution);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenResize(this._resolution));\n\t\t}\n\t\tget resolution() {\n\t\t\t\treturn this._resolution;\n\t\t}\n\t\tset referenceResolution(value) {\n\t\t\t\tthis._referenceResolution.set(value.x, value.y);\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._calcProjectionMatrix();\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:referenceresolution', this._resolution);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenResize(this._resolution));\n\t\t}\n\t\tget referenceResolution() {\n\t\t\t\tif (this._scaleMode === SCALEMODE_NONE) {\n\t\t\t\t\t\treturn this._resolution;\n\t\t\t\t}\n\t\t\t\treturn this._referenceResolution;\n\t\t}\n\t\tset screenSpace(value) {\n\t\t\t\tthis._screenSpace = value;\n\t\t\t\tif (this._screenSpace) {\n\t\t\t\t\t\tthis._resolution.set(this.system.app.graphicsDevice.width, this.system.app.graphicsDevice.height);\n\t\t\t\t}\n\t\t\t\tthis.resolution = this._resolution;\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:screenspace', this._screenSpace);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenSpaceChange());\n\t\t}\n\t\tget screenSpace() {\n\t\t\t\treturn this._screenSpace;\n\t\t}\n\t\tset scaleMode(value) {\n\t\t\t\tif (value !== SCALEMODE_NONE && value !== SCALEMODE_BLEND) {\n\t\t\t\t\t\tvalue = SCALEMODE_NONE;\n\t\t\t\t}\n\t\t\t\tif (!this._screenSpace && value !== SCALEMODE_NONE) {\n\t\t\t\t\t\tvalue = SCALEMODE_NONE;\n\t\t\t\t}\n\t\t\t\tthis._scaleMode = value;\n\t\t\t\tthis.resolution = this._resolution;\n\t\t\t\tthis.fire('set:scalemode', this._scaleMode);\n\t\t}\n\t\tget scaleMode() {\n\t\t\t\treturn this._scaleMode;\n\t\t}\n\t\tset scaleBlend(value) {\n\t\t\t\tthis._scaleBlend = value;\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._calcProjectionMatrix();\n\t\t\t\tif (!this.entity._dirtyLocal) {\n\t\t\t\t\t\tthis.entity._dirtifyLocal();\n\t\t\t\t}\n\t\t\t\tthis.fire('set:scaleblend', this._scaleBlend);\n\t\t\t\tthis._elements.forEach((element)=>element._onScreenResize(this._resolution));\n\t\t}\n\t\tget scaleBlend() {\n\t\t\t\treturn this._scaleBlend;\n\t\t}\n\t\tset priority(value) {\n\t\t\t\tif (value > 0xFF) {\n\t\t\t\t\t\tvalue = 0xFF;\n\t\t\t\t}\n\t\t\t\tif (this._priority === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._priority = value;\n\t\t\t\tthis.syncDrawOrder();\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n}\n\nclass ScreenComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$7 = [\n\t\t'enabled'\n];\nclass ScreenComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'screen';\n\t\t\t\tthis.ComponentType = ScreenComponent;\n\t\t\t\tthis.DataType = ScreenComponentData;\n\t\t\t\tthis.schema = _schema$7;\n\t\t\t\tthis.windowResolution = new Vec2();\n\t\t\t\tthis._drawOrderSyncQueue = new IndexedList();\n\t\t\t\tthis.app.graphicsDevice.on('resizecanvas', this._onResize, this);\n\t\t\t\tthis.app.systems.on('update', this._onUpdate, this);\n\t\t\t\tthis.on('beforeremove', this.onRemoveComponent, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.priority !== undefined) component.priority = data.priority;\n\t\t\t\tif (data.screenSpace !== undefined) component.screenSpace = data.screenSpace;\n\t\t\t\tcomponent.cull = component.screenSpace;\n\t\t\t\tif (data.scaleMode !== undefined) component.scaleMode = data.scaleMode;\n\t\t\t\tif (data.scaleBlend !== undefined) component.scaleBlend = data.scaleBlend;\n\t\t\t\tif (data.resolution !== undefined) {\n\t\t\t\t\t\tif (data.resolution instanceof Vec2) {\n\t\t\t\t\t\t\t\tcomponent._resolution.copy(data.resolution);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent._resolution.set(data.resolution[0], data.resolution[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent.resolution = component._resolution;\n\t\t\t\t}\n\t\t\t\tif (data.referenceResolution !== undefined) {\n\t\t\t\t\t\tif (data.referenceResolution instanceof Vec2) {\n\t\t\t\t\t\t\t\tcomponent._referenceResolution.copy(data.referenceResolution);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent._referenceResolution.set(data.referenceResolution[0], data.referenceResolution[1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent.referenceResolution = component._referenceResolution;\n\t\t\t\t}\n\t\t\t\tcomponent.syncDrawOrder();\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$7);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.graphicsDevice.off('resizecanvas', this._onResize, this);\n\t\t\t\tthis.app.systems.off('update', this._onUpdate, this);\n\t\t}\n\t\t_onUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components[id].entity.screen.update) components[id].entity.screen.update(dt);\n\t\t\t\t}\n\t\t}\n\t\t_onResize(width, height) {\n\t\t\t\tthis.windowResolution.x = width;\n\t\t\t\tthis.windowResolution.y = height;\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst screen = entity.screen;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: screen.enabled,\n\t\t\t\t\t\tscreenSpace: screen.screenSpace,\n\t\t\t\t\t\tscaleMode: screen.scaleMode,\n\t\t\t\t\t\tscaleBlend: screen.scaleBlend,\n\t\t\t\t\t\tpriority: screen.priority,\n\t\t\t\t\t\tresolution: screen.resolution.clone(),\n\t\t\t\t\t\treferenceResolution: screen.referenceResolution.clone()\n\t\t\t\t});\n\t\t}\n\t\tonRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tprocessDrawOrderSyncQueue() {\n\t\t\t\tconst list = this._drawOrderSyncQueue.list();\n\t\t\t\tfor(let i = 0; i < list.length; i++){\n\t\t\t\t\t\tconst item = list[i];\n\t\t\t\t\t\titem.callback.call(item.scope);\n\t\t\t\t}\n\t\t\t\tthis._drawOrderSyncQueue.clear();\n\t\t}\n\t\tqueueDrawOrderSync(id, fn, scope) {\n\t\t\t\tif (!this._drawOrderSyncQueue.list().length) {\n\t\t\t\t\t\tthis.app.once('prerender', this.processDrawOrderSyncQueue, this);\n\t\t\t\t}\n\t\t\t\tif (!this._drawOrderSyncQueue.has(id)) {\n\t\t\t\t\t\tthis._drawOrderSyncQueue.push(id, {\n\t\t\t\t\t\t\t\tcallback: fn,\n\t\t\t\t\t\t\t\tscope: scope\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\nComponent._buildAccessors(ScreenComponent.prototype, _schema$7);\n\nconst _inputScreenPosition = new Vec2();\nconst _inputWorldPosition = new Vec3();\nconst _ray = new Ray();\nconst _plane = new Plane();\nconst _normal = new Vec3();\nconst _point = new Vec3();\nconst _entityRotation = new Quat();\nconst OPPOSITE_AXIS = {\n\t\tx: 'y',\n\t\ty: 'x'\n};\nclass ElementDragHelper extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DRAGSTART = 'drag:start';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DRAGEND = 'drag:end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DRAGMOVE = 'drag:move';\n\t\t}\n\t\tconstructor(element, axis){\n\t\t\t\tsuper();\n\t\t\t\tif (!element || !(element instanceof ElementComponent)) {\n\t\t\t\t\t\tthrow new Error('Element was null or not an ElementComponent');\n\t\t\t\t}\n\t\t\t\tif (axis && axis !== 'x' && axis !== 'y') {\n\t\t\t\t\t\tthrow new Error(`Unrecognized axis: ${axis}`);\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._app = element.system.app;\n\t\t\t\tthis._axis = axis || null;\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._dragScale = new Vec3();\n\t\t\t\tthis._dragStartMousePosition = new Vec3();\n\t\t\t\tthis._dragStartHandlePosition = new Vec3();\n\t\t\t\tthis._deltaMousePosition = new Vec3();\n\t\t\t\tthis._deltaHandlePosition = new Vec3();\n\t\t\t\tthis._isDragging = false;\n\t\t\t\tthis._toggleLifecycleListeners('on');\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff) {\n\t\t\t\tthis._element[onOrOff]('mousedown', this._onMouseDownOrTouchStart, this);\n\t\t\t\tthis._element[onOrOff]('touchstart', this._onMouseDownOrTouchStart, this);\n\t\t\t\tthis._element[onOrOff]('selectstart', this._onMouseDownOrTouchStart, this);\n\t\t}\n\t\t_toggleDragListeners(onOrOff) {\n\t\t\t\tconst isOn = onOrOff === 'on';\n\t\t\t\tif (this._hasDragListeners && isOn) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._app.mouse) {\n\t\t\t\t\t\tthis._element[onOrOff]('mousemove', this._onMove, this);\n\t\t\t\t\t\tthis._element[onOrOff]('mouseup', this._onMouseUpOrTouchEnd, this);\n\t\t\t\t}\n\t\t\t\tif (platform.touch) {\n\t\t\t\t\t\tthis._element[onOrOff]('touchmove', this._onMove, this);\n\t\t\t\t\t\tthis._element[onOrOff]('touchend', this._onMouseUpOrTouchEnd, this);\n\t\t\t\t\t\tthis._element[onOrOff]('touchcancel', this._onMouseUpOrTouchEnd, this);\n\t\t\t\t}\n\t\t\t\tthis._element[onOrOff]('selectmove', this._onMove, this);\n\t\t\t\tthis._element[onOrOff]('selectend', this._onMouseUpOrTouchEnd, this);\n\t\t\t\tthis._hasDragListeners = isOn;\n\t\t}\n\t\t_onMouseDownOrTouchStart(event) {\n\t\t\t\tif (this._element && !this._isDragging && this.enabled) {\n\t\t\t\t\t\tthis._dragCamera = event.camera;\n\t\t\t\t\t\tthis._calculateDragScale();\n\t\t\t\t\t\tconst currentMousePosition = this._screenToLocal(event);\n\t\t\t\t\t\tif (currentMousePosition) {\n\t\t\t\t\t\t\t\tthis._toggleDragListeners('on');\n\t\t\t\t\t\t\t\tthis._isDragging = true;\n\t\t\t\t\t\t\t\tthis._dragStartMousePosition.copy(currentMousePosition);\n\t\t\t\t\t\t\t\tthis._dragStartHandlePosition.copy(this._element.entity.getLocalPosition());\n\t\t\t\t\t\t\t\tthis.fire('drag:start');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onMouseUpOrTouchEnd() {\n\t\t\t\tif (this._isDragging) {\n\t\t\t\t\t\tthis._isDragging = false;\n\t\t\t\t\t\tthis._toggleDragListeners('off');\n\t\t\t\t\t\tthis.fire('drag:end');\n\t\t\t\t}\n\t\t}\n\t\t_screenToLocal(event) {\n\t\t\t\tif (event.inputSource) {\n\t\t\t\t\t\t_ray.set(event.inputSource.getOrigin(), event.inputSource.getDirection());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._determineInputPosition(event);\n\t\t\t\t\t\tthis._chooseRayOriginAndDirection();\n\t\t\t\t}\n\t\t\t\t_normal.copy(this._element.entity.forward).mulScalar(-1);\n\t\t\t\t_plane.setFromPointNormal(this._element.entity.getPosition(), _normal);\n\t\t\t\tif (_plane.intersectsRay(_ray, _point)) {\n\t\t\t\t\t\t_entityRotation.copy(this._element.entity.getRotation()).invert().transformVector(_point, _point);\n\t\t\t\t\t\t_point.mul(this._dragScale);\n\t\t\t\t\t\treturn _point;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_determineInputPosition(event) {\n\t\t\t\tconst devicePixelRatio = this._app.graphicsDevice.maxPixelRatio;\n\t\t\t\tif (typeof event.x !== 'undefined' && typeof event.y !== 'undefined') {\n\t\t\t\t\t\t_inputScreenPosition.x = event.x * devicePixelRatio;\n\t\t\t\t\t\t_inputScreenPosition.y = event.y * devicePixelRatio;\n\t\t\t\t} else if (event.changedTouches) {\n\t\t\t\t\t\t_inputScreenPosition.x = event.changedTouches[0].x * devicePixelRatio;\n\t\t\t\t\t\t_inputScreenPosition.y = event.changedTouches[0].y * devicePixelRatio;\n\t\t\t\t} else {\n\t\t\t\t\t\tconsole.warn('Could not determine position from input event');\n\t\t\t\t}\n\t\t}\n\t\t_chooseRayOriginAndDirection() {\n\t\t\t\tif (this._element.screen && this._element.screen.screen.screenSpace) {\n\t\t\t\t\t\t_ray.origin.set(_inputScreenPosition.x, -_inputScreenPosition.y, 0);\n\t\t\t\t\t\t_ray.direction.copy(Vec3.FORWARD);\n\t\t\t\t} else {\n\t\t\t\t\t\t_inputWorldPosition.copy(this._dragCamera.screenToWorld(_inputScreenPosition.x, _inputScreenPosition.y, 1));\n\t\t\t\t\t\t_ray.origin.copy(this._dragCamera.entity.getPosition());\n\t\t\t\t\t\t_ray.direction.copy(_inputWorldPosition).sub(_ray.origin).normalize();\n\t\t\t\t}\n\t\t}\n\t\t_calculateDragScale() {\n\t\t\t\tlet current = this._element.entity.parent;\n\t\t\t\tconst screen = this._element.screen && this._element.screen.screen;\n\t\t\t\tconst isWithin2DScreen = screen && screen.screenSpace;\n\t\t\t\tconst screenScale = isWithin2DScreen ? screen.scale : 1;\n\t\t\t\tconst dragScale = this._dragScale;\n\t\t\t\tdragScale.set(screenScale, screenScale, screenScale);\n\t\t\t\twhile(current){\n\t\t\t\t\t\tdragScale.mul(current.getLocalScale());\n\t\t\t\t\t\tcurrent = current.parent;\n\t\t\t\t\t\tif (isWithin2DScreen && current.screen) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdragScale.x = 1 / dragScale.x;\n\t\t\t\tdragScale.y = 1 / dragScale.y;\n\t\t\t\tdragScale.z = 0;\n\t\t}\n\t\t_onMove(event) {\n\t\t\t\tconst { _element: element, _deltaMousePosition: deltaMousePosition, _deltaHandlePosition: deltaHandlePosition, _axis: axis } = this;\n\t\t\t\tif (element && this._isDragging && this.enabled && element.enabled && element.entity.enabled) {\n\t\t\t\t\t\tconst currentMousePosition = this._screenToLocal(event);\n\t\t\t\t\t\tif (currentMousePosition) {\n\t\t\t\t\t\t\t\tdeltaMousePosition.sub2(currentMousePosition, this._dragStartMousePosition);\n\t\t\t\t\t\t\t\tdeltaHandlePosition.add2(this._dragStartHandlePosition, deltaMousePosition);\n\t\t\t\t\t\t\t\tif (axis) {\n\t\t\t\t\t\t\t\t\t\tconst currentPosition = element.entity.getLocalPosition();\n\t\t\t\t\t\t\t\t\t\tconst constrainedAxis = OPPOSITE_AXIS[axis];\n\t\t\t\t\t\t\t\t\t\tdeltaHandlePosition[constrainedAxis] = currentPosition[constrainedAxis];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\telement.entity.setLocalPosition(deltaHandlePosition);\n\t\t\t\t\t\t\t\tthis.fire('drag:move', deltaHandlePosition);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._toggleLifecycleListeners('off');\n\t\t\t\tthis._toggleDragListeners('off');\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enabled = value;\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tget isDragging() {\n\t\t\t\treturn this._isDragging;\n\t\t}\n}\n\nconst SCROLL_MODE_CLAMP = 0;\nconst SCROLL_MODE_BOUNCE = 1;\nconst SCROLL_MODE_INFINITE = 2;\nconst SCROLLBAR_VISIBILITY_SHOW_ALWAYS = 0;\nconst SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED = 1;\n\nconst _tempScrollValue = new Vec2();\nclass ScrollViewComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETSCROLL = 'set:scroll';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._viewportEntity = null, this._contentEntity = null, this._horizontalScrollbarEntity = null, this._verticalScrollbarEntity = null, this._evtElementRemove = null, this._evtViewportElementRemove = null, this._evtViewportResize = null, this._evtContentEntityElementAdd = null, this._evtContentElementRemove = null, this._evtContentResize = null, this._evtHorizontalScrollbarAdd = null, this._evtHorizontalScrollbarRemove = null, this._evtHorizontalScrollbarValue = null, this._evtVerticalScrollbarAdd = null, this._evtVerticalScrollbarRemove = null, this._evtVerticalScrollbarValue = null;\n\t\t\t\tthis._scrollbarUpdateFlags = {};\n\t\t\t\tthis._scrollbarEntities = {};\n\t\t\t\tthis._prevContentSizes = {};\n\t\t\t\tthis._prevContentSizes[ORIENTATION_HORIZONTAL] = null;\n\t\t\t\tthis._prevContentSizes[ORIENTATION_VERTICAL] = null;\n\t\t\t\tthis._scroll = new Vec2();\n\t\t\t\tthis._velocity = new Vec3();\n\t\t\t\tthis._dragStartPosition = new Vec3();\n\t\t\t\tthis._disabledContentInput = false;\n\t\t\t\tthis._disabledContentInputEntities = [];\n\t\t\t\tthis._toggleLifecycleListeners('on');\n\t\t\t\tthis._toggleElementListeners('on');\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset horizontal(arg) {\n\t\t\t\tthis._setValue('horizontal', arg);\n\t\t}\n\t\tget horizontal() {\n\t\t\t\treturn this.data.horizontal;\n\t\t}\n\t\tset vertical(arg) {\n\t\t\t\tthis._setValue('vertical', arg);\n\t\t}\n\t\tget vertical() {\n\t\t\t\treturn this.data.vertical;\n\t\t}\n\t\tset scrollMode(arg) {\n\t\t\t\tthis._setValue('scrollMode', arg);\n\t\t}\n\t\tget scrollMode() {\n\t\t\t\treturn this.data.scrollMode;\n\t\t}\n\t\tset bounceAmount(arg) {\n\t\t\t\tthis._setValue('bounceAmount', arg);\n\t\t}\n\t\tget bounceAmount() {\n\t\t\t\treturn this.data.bounceAmount;\n\t\t}\n\t\tset friction(arg) {\n\t\t\t\tthis._setValue('friction', arg);\n\t\t}\n\t\tget friction() {\n\t\t\t\treturn this.data.friction;\n\t\t}\n\t\tset dragThreshold(arg) {\n\t\t\t\tthis._setValue('dragThreshold', arg);\n\t\t}\n\t\tget dragThreshold() {\n\t\t\t\treturn this.data.dragThreshold;\n\t\t}\n\t\tset useMouseWheel(arg) {\n\t\t\t\tthis._setValue('useMouseWheel', arg);\n\t\t}\n\t\tget useMouseWheel() {\n\t\t\t\treturn this.data.useMouseWheel;\n\t\t}\n\t\tset mouseWheelSensitivity(arg) {\n\t\t\t\tthis._setValue('mouseWheelSensitivity', arg);\n\t\t}\n\t\tget mouseWheelSensitivity() {\n\t\t\t\treturn this.data.mouseWheelSensitivity;\n\t\t}\n\t\tset horizontalScrollbarVisibility(arg) {\n\t\t\t\tthis._setValue('horizontalScrollbarVisibility', arg);\n\t\t}\n\t\tget horizontalScrollbarVisibility() {\n\t\t\t\treturn this.data.horizontalScrollbarVisibility;\n\t\t}\n\t\tset verticalScrollbarVisibility(arg) {\n\t\t\t\tthis._setValue('verticalScrollbarVisibility', arg);\n\t\t}\n\t\tget verticalScrollbarVisibility() {\n\t\t\t\treturn this.data.verticalScrollbarVisibility;\n\t\t}\n\t\tset viewportEntity(arg) {\n\t\t\t\tif (this._viewportEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._viewportEntity && isString && this._viewportEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._viewportEntity) {\n\t\t\t\t\t\tthis._viewportEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._viewportEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._viewportEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._viewportEntity = null;\n\t\t\t\t}\n\t\t\t\tif (this._viewportEntity) {\n\t\t\t\t\t\tthis._viewportEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._viewportEntity) {\n\t\t\t\t\t\tthis.data.viewportEntity = this._viewportEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.viewportEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget viewportEntity() {\n\t\t\t\treturn this._viewportEntity;\n\t\t}\n\t\tset contentEntity(arg) {\n\t\t\t\tif (this._contentEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._contentEntity && isString && this._contentEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis._contentEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._contentEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._contentEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._contentEntity = null;\n\t\t\t\t}\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis._contentEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis.data.contentEntity = this._contentEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.contentEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget contentEntity() {\n\t\t\t\treturn this._contentEntity;\n\t\t}\n\t\tset horizontalScrollbarEntity(arg) {\n\t\t\t\tif (this._horizontalScrollbarEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._horizontalScrollbarEntity && isString && this._horizontalScrollbarEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity = null;\n\t\t\t\t}\n\t\t\t\tthis._scrollbarEntities[ORIENTATION_HORIZONTAL] = this._horizontalScrollbarEntity;\n\t\t\t\tif (this._horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis.data.horizontalScrollbarEntity = this._horizontalScrollbarEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.horizontalScrollbarEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget horizontalScrollbarEntity() {\n\t\t\t\treturn this._horizontalScrollbarEntity;\n\t\t}\n\t\tset verticalScrollbarEntity(arg) {\n\t\t\t\tif (this._verticalScrollbarEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._verticalScrollbarEntity && isString && this._verticalScrollbarEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._verticalScrollbarEntity) {\n\t\t\t\t\t\tthis._verticalScrollbarEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._verticalScrollbarEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._verticalScrollbarEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._verticalScrollbarEntity = null;\n\t\t\t\t}\n\t\t\t\tthis._scrollbarEntities[ORIENTATION_VERTICAL] = this._verticalScrollbarEntity;\n\t\t\t\tif (this._verticalScrollbarEntity) {\n\t\t\t\t\t\tthis._verticalScrollbarEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._verticalScrollbarEntity) {\n\t\t\t\t\t\tthis.data.verticalScrollbarEntity = this._verticalScrollbarEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.verticalScrollbarEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget verticalScrollbarEntity() {\n\t\t\t\treturn this._verticalScrollbarEntity;\n\t\t}\n\t\tset scroll(value) {\n\t\t\t\tthis._onSetScroll(value.x, value.y);\n\t\t}\n\t\tget scroll() {\n\t\t\t\treturn this._scroll;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff) {\n\t\t\t\tthis[onOrOff]('set_horizontal', this._onSetHorizontalScrollingEnabled, this);\n\t\t\t\tthis[onOrOff]('set_vertical', this._onSetVerticalScrollingEnabled, this);\n\t\t\t\tthis.entity[onOrOff]('element:add', this._onElementComponentAdd, this);\n\t\t}\n\t\t_toggleElementListeners(onOrOff) {\n\t\t\t\tif (this.entity.element) {\n\t\t\t\t\t\tif (onOrOff === 'on' && this._hasElementListeners) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.entity.element[onOrOff]('resize', this._syncAll, this);\n\t\t\t\t\t\tthis.entity.element[onOrOff]('mousewheel', this._onMouseWheel, this);\n\t\t\t\t\t\tthis._hasElementListeners = onOrOff === 'on';\n\t\t\t\t}\n\t\t}\n\t\t_onElementComponentAdd(entity) {\n\t\t\t\tthis._evtElementRemove = this.entity.element.once('beforeremove', this._onElementComponentRemove, this);\n\t\t\t\tthis._toggleElementListeners('on');\n\t\t}\n\t\t_onElementComponentRemove(entity) {\n\t\t\t\tthis._evtElementRemove?.off();\n\t\t\t\tthis._evtElementRemove = null;\n\t\t\t\tthis._toggleElementListeners('off');\n\t\t}\n\t\t_viewportEntitySubscribe() {\n\t\t\t\tthis._evtViewportEntityElementAdd = this._viewportEntity.on('element:add', this._onViewportElementGain, this);\n\t\t\t\tif (this._viewportEntity.element) {\n\t\t\t\t\t\tthis._onViewportElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_viewportEntityUnsubscribe() {\n\t\t\t\tthis._evtViewportEntityElementAdd?.off();\n\t\t\t\tthis._evtViewportEntityElementAdd = null;\n\t\t\t\tif (this._viewportEntity?.element) {\n\t\t\t\t\t\tthis._onViewportElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_viewportEntityElementSubscribe() {\n\t\t\t\tconst element = this._viewportEntity.element;\n\t\t\t\tthis._evtViewportElementRemove = element.once('beforeremove', this._onViewportElementLose, this);\n\t\t\t\tthis._evtViewportResize = element.on('resize', this._syncAll, this);\n\t\t}\n\t\t_viewportEntityElementUnsubscribe() {\n\t\t\t\tthis._evtViewportElementRemove?.off();\n\t\t\t\tthis._evtViewportElementRemove = null;\n\t\t\t\tthis._evtViewportResize?.off();\n\t\t\t\tthis._evtViewportResize = null;\n\t\t}\n\t\t_onViewportElementGain() {\n\t\t\t\tthis._viewportEntityElementSubscribe();\n\t\t\t\tthis._syncAll();\n\t\t}\n\t\t_onViewportElementLose() {\n\t\t\t\tthis._viewportEntityElementUnsubscribe();\n\t\t}\n\t\t_contentEntitySubscribe() {\n\t\t\t\tthis._evtContentEntityElementAdd = this._contentEntity.on('element:add', this._onContentElementGain, this);\n\t\t\t\tif (this._contentEntity.element) {\n\t\t\t\t\t\tthis._onContentElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_contentEntityUnsubscribe() {\n\t\t\t\tthis._evtContentEntityElementAdd?.off();\n\t\t\t\tthis._evtContentEntityElementAdd = null;\n\t\t\t\tif (this._contentEntity?.element) {\n\t\t\t\t\t\tthis._onContentElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_contentEntityElementSubscribe() {\n\t\t\t\tconst element = this._contentEntity.element;\n\t\t\t\tthis._evtContentElementRemove = element.once('beforeremove', this._onContentElementLose, this);\n\t\t\t\tthis._evtContentResize = element.on('resize', this._syncAll, this);\n\t\t}\n\t\t_contentEntityElementUnsubscribe() {\n\t\t\t\tthis._evtContentElementRemove?.off();\n\t\t\t\tthis._evtContentElementRemove = null;\n\t\t\t\tthis._evtContentResize?.off();\n\t\t\t\tthis._evtContentResize = null;\n\t\t}\n\t\t_onContentElementGain() {\n\t\t\t\tthis._contentEntityElementSubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t\t\tthis._contentDragHelper = new ElementDragHelper(this._contentEntity.element);\n\t\t\t\tthis._contentDragHelper.on('drag:start', this._onContentDragStart, this);\n\t\t\t\tthis._contentDragHelper.on('drag:end', this._onContentDragEnd, this);\n\t\t\t\tthis._contentDragHelper.on('drag:move', this._onContentDragMove, this);\n\t\t\t\tthis._prevContentSizes[ORIENTATION_HORIZONTAL] = null;\n\t\t\t\tthis._prevContentSizes[ORIENTATION_VERTICAL] = null;\n\t\t\t\tthis._syncAll();\n\t\t}\n\t\t_onContentElementLose() {\n\t\t\t\tthis._contentEntityElementUnsubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t}\n\t\t_onContentDragStart() {\n\t\t\t\tif (this._contentEntity && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._dragStartPosition.copy(this._contentEntity.getLocalPosition());\n\t\t\t\t}\n\t\t}\n\t\t_onContentDragEnd() {\n\t\t\t\tthis._prevContentDragPosition = null;\n\t\t\t\tthis._enableContentInput();\n\t\t}\n\t\t_onContentDragMove(position) {\n\t\t\t\tif (this._contentEntity && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._wasDragged = true;\n\t\t\t\t\t\tthis._setScrollFromContentPosition(position);\n\t\t\t\t\t\tthis._setVelocityFromContentPositionDelta(position);\n\t\t\t\t\t\tif (!this._disabledContentInput) {\n\t\t\t\t\t\t\t\tconst dx = position.x - this._dragStartPosition.x;\n\t\t\t\t\t\t\t\tconst dy = position.y - this._dragStartPosition.y;\n\t\t\t\t\t\t\t\tif (Math.abs(dx) > this.dragThreshold || Math.abs(dy) > this.dragThreshold) {\n\t\t\t\t\t\t\t\t\t\tthis._disableContentInput();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_horizontalScrollbarEntitySubscribe() {\n\t\t\t\tthis._evtHorizontalScrollbarAdd = this._horizontalScrollbarEntity.on('scrollbar:add', this._onHorizontalScrollbarGain, this);\n\t\t\t\tif (this._horizontalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onHorizontalScrollbarGain();\n\t\t\t\t}\n\t\t}\n\t\t_verticalScrollbarEntitySubscribe() {\n\t\t\t\tthis._evtVerticalScrollbarAdd = this._verticalScrollbarEntity.on('scrollbar:add', this._onVerticalScrollbarGain, this);\n\t\t\t\tif (this._verticalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onVerticalScrollbarGain();\n\t\t\t\t}\n\t\t}\n\t\t_horizontalScrollbarEntityUnsubscribe() {\n\t\t\t\tthis._evtHorizontalScrollbarAdd?.off();\n\t\t\t\tthis._evtHorizontalScrollbarAdd = null;\n\t\t\t\tif (this._horizontalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onHorizontalScrollbarLose();\n\t\t\t\t}\n\t\t}\n\t\t_verticalScrollbarEntityUnsubscribe() {\n\t\t\t\tthis._evtVerticalScrollbarAdd?.off();\n\t\t\t\tthis._evtVerticalScrollbarAdd = null;\n\t\t\t\tif (this._verticalScrollbarEntity.scrollbar) {\n\t\t\t\t\t\tthis._onVerticalScrollbarLose();\n\t\t\t\t}\n\t\t}\n\t\t_onSetHorizontalScrollbarValue(scrollValueX) {\n\t\t\t\tif (!this._scrollbarUpdateFlags[ORIENTATION_HORIZONTAL] && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._onSetScroll(scrollValueX, null);\n\t\t\t\t}\n\t\t}\n\t\t_onSetVerticalScrollbarValue(scrollValueY) {\n\t\t\t\tif (!this._scrollbarUpdateFlags[ORIENTATION_VERTICAL] && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._onSetScroll(null, scrollValueY);\n\t\t\t\t}\n\t\t}\n\t\t_onHorizontalScrollbarGain() {\n\t\t\t\tconst scrollbar = this._horizontalScrollbarEntity?.scrollbar;\n\t\t\t\tthis._evtHorizontalScrollbarRemove = scrollbar.on('beforeremove', this._onHorizontalScrollbarLose, this);\n\t\t\t\tthis._evtHorizontalScrollbarValue = scrollbar.on('set:value', this._onSetHorizontalScrollbarValue, this);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_HORIZONTAL);\n\t\t}\n\t\t_onVerticalScrollbarGain() {\n\t\t\t\tconst scrollbar = this._verticalScrollbarEntity?.scrollbar;\n\t\t\t\tthis._evtVerticalScrollbarRemove = scrollbar.on('beforeremove', this._onVerticalScrollbarLose, this);\n\t\t\t\tthis._evtVerticalScrollbarValue = scrollbar.on('set:value', this._onSetVerticalScrollbarValue, this);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_VERTICAL);\n\t\t}\n\t\t_onHorizontalScrollbarLose() {\n\t\t\t\tthis._evtHorizontalScrollbarRemove?.off();\n\t\t\t\tthis._evtHorizontalScrollbarRemove = null;\n\t\t\t\tthis._evtHorizontalScrollbarValue?.off();\n\t\t\t\tthis._evtHorizontalScrollbarValue = null;\n\t\t}\n\t\t_onVerticalScrollbarLose() {\n\t\t\t\tthis._evtVerticalScrollbarRemove?.off();\n\t\t\t\tthis._evtVerticalScrollbarRemove = null;\n\t\t\t\tthis._evtVerticalScrollbarValue?.off();\n\t\t\t\tthis._evtVerticalScrollbarValue = null;\n\t\t}\n\t\t_onSetHorizontalScrollingEnabled() {\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t}\n\t\t_onSetVerticalScrollingEnabled() {\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t}\n\t\t_onSetScroll(x, y, resetVelocity) {\n\t\t\t\tif (resetVelocity !== false) {\n\t\t\t\t\t\tthis._velocity.set(0, 0, 0);\n\t\t\t\t}\n\t\t\t\tconst xChanged = this._updateAxis(x, 'x', ORIENTATION_HORIZONTAL);\n\t\t\t\tconst yChanged = this._updateAxis(y, 'y', ORIENTATION_VERTICAL);\n\t\t\t\tif (xChanged || yChanged) {\n\t\t\t\t\t\tthis.fire('set:scroll', this._scroll);\n\t\t\t\t}\n\t\t}\n\t\t_updateAxis(scrollValue, axis, orientation) {\n\t\t\t\tconst hasChanged = scrollValue !== null && Math.abs(scrollValue - this._scroll[axis]) > 1e-5;\n\t\t\t\tif (hasChanged || this._isDragging() || scrollValue === 0) {\n\t\t\t\t\t\tthis._scroll[axis] = this._determineNewScrollValue(scrollValue, axis, orientation);\n\t\t\t\t\t\tthis._syncContentPosition(orientation);\n\t\t\t\t\t\tthis._syncScrollbarPosition(orientation);\n\t\t\t\t}\n\t\t\t\treturn hasChanged;\n\t\t}\n\t\t_determineNewScrollValue(scrollValue, axis, orientation) {\n\t\t\t\tif (!this._getScrollingEnabled(orientation)) {\n\t\t\t\t\t\treturn this._scroll[axis];\n\t\t\t\t}\n\t\t\t\tswitch(this.scrollMode){\n\t\t\t\t\t\tcase SCROLL_MODE_CLAMP:\n\t\t\t\t\t\t\t\treturn math.clamp(scrollValue, 0, this._getMaxScrollValue(orientation));\n\t\t\t\t\t\tcase SCROLL_MODE_BOUNCE:\n\t\t\t\t\t\t\t\tthis._setVelocityFromOvershoot(scrollValue, axis, orientation);\n\t\t\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t\t\tcase SCROLL_MODE_INFINITE:\n\t\t\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tconsole.warn(`Unhandled scroll mode:${this.scrollMode}`);\n\t\t\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t}\n\t\t}\n\t\t_syncAll() {\n\t\t\t\tthis._syncContentPosition(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncContentPosition(ORIENTATION_VERTICAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncScrollbarPosition(ORIENTATION_VERTICAL);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t}\n\t\t_syncContentPosition(orientation) {\n\t\t\t\tif (!this._contentEntity) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst axis = this._getAxis(orientation);\n\t\t\t\tconst sign = this._getSign(orientation);\n\t\t\t\tconst prevContentSize = this._prevContentSizes[orientation];\n\t\t\t\tconst currContentSize = this._getContentSize(orientation);\n\t\t\t\tif (prevContentSize !== null && Math.abs(prevContentSize - currContentSize) > 1e-4) {\n\t\t\t\t\t\tconst prevMaxOffset = this._getMaxOffset(orientation, prevContentSize);\n\t\t\t\t\t\tconst currMaxOffset = this._getMaxOffset(orientation, currContentSize);\n\t\t\t\t\t\tif (currMaxOffset === 0) {\n\t\t\t\t\t\t\t\tthis._scroll[axis] = 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._scroll[axis] = math.clamp(this._scroll[axis] * prevMaxOffset / currMaxOffset, 0, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst offset = this._scroll[axis] * this._getMaxOffset(orientation);\n\t\t\t\tconst contentPosition = this._contentEntity.getLocalPosition();\n\t\t\t\tcontentPosition[axis] = offset * sign;\n\t\t\t\tthis._contentEntity.setLocalPosition(contentPosition);\n\t\t\t\tthis._prevContentSizes[orientation] = currContentSize;\n\t\t}\n\t\t_syncScrollbarPosition(orientation) {\n\t\t\t\tconst scrollbarEntity = this._scrollbarEntities[orientation];\n\t\t\t\tif (!scrollbarEntity?.scrollbar) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst axis = this._getAxis(orientation);\n\t\t\t\tthis._scrollbarUpdateFlags[orientation] = true;\n\t\t\t\tscrollbarEntity.scrollbar.value = this._scroll[axis];\n\t\t\t\tscrollbarEntity.scrollbar.handleSize = this._getScrollbarHandleSize(axis, orientation);\n\t\t\t\tthis._scrollbarUpdateFlags[orientation] = false;\n\t\t}\n\t\t_syncScrollbarEnabledState(orientation) {\n\t\t\t\tconst entity = this._scrollbarEntities[orientation];\n\t\t\t\tif (!entity) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isScrollingEnabled = this._getScrollingEnabled(orientation);\n\t\t\t\tconst requestedVisibility = this._getScrollbarVisibility(orientation);\n\t\t\t\tswitch(requestedVisibility){\n\t\t\t\t\t\tcase SCROLLBAR_VISIBILITY_SHOW_ALWAYS:\n\t\t\t\t\t\t\t\tentity.enabled = isScrollingEnabled;\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tcase SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED:\n\t\t\t\t\t\t\t\tentity.enabled = isScrollingEnabled && this._contentIsLargerThanViewport(orientation);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tconsole.warn(`Unhandled scrollbar visibility:${requestedVisibility}`);\n\t\t\t\t\t\t\t\tentity.enabled = isScrollingEnabled;\n\t\t\t\t}\n\t\t}\n\t\t_contentIsLargerThanViewport(orientation) {\n\t\t\t\treturn this._getContentSize(orientation) > this._getViewportSize(orientation);\n\t\t}\n\t\t_contentPositionToScrollValue(contentPosition) {\n\t\t\t\tconst maxOffsetH = this._getMaxOffset(ORIENTATION_HORIZONTAL);\n\t\t\t\tconst maxOffsetV = this._getMaxOffset(ORIENTATION_VERTICAL);\n\t\t\t\tif (maxOffsetH === 0) {\n\t\t\t\t\t\t_tempScrollValue.x = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempScrollValue.x = contentPosition.x / maxOffsetH;\n\t\t\t\t}\n\t\t\t\tif (maxOffsetV === 0) {\n\t\t\t\t\t\t_tempScrollValue.y = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\t_tempScrollValue.y = contentPosition.y / -maxOffsetV;\n\t\t\t\t}\n\t\t\t\treturn _tempScrollValue;\n\t\t}\n\t\t_getMaxOffset(orientation, contentSize) {\n\t\t\t\tcontentSize = contentSize === undefined ? this._getContentSize(orientation) : contentSize;\n\t\t\t\tconst viewportSize = this._getViewportSize(orientation);\n\t\t\t\tif (contentSize < viewportSize) {\n\t\t\t\t\t\treturn -this._getViewportSize(orientation);\n\t\t\t\t}\n\t\t\t\treturn viewportSize - contentSize;\n\t\t}\n\t\t_getMaxScrollValue(orientation) {\n\t\t\t\treturn this._contentIsLargerThanViewport(orientation) ? 1 : 0;\n\t\t}\n\t\t_getScrollbarHandleSize(axis, orientation) {\n\t\t\t\tconst viewportSize = this._getViewportSize(orientation);\n\t\t\t\tconst contentSize = this._getContentSize(orientation);\n\t\t\t\tif (Math.abs(contentSize) < 0.001) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tconst handleSize = Math.min(viewportSize / contentSize, 1);\n\t\t\t\tconst overshoot = this._toOvershoot(this._scroll[axis], orientation);\n\t\t\t\tif (overshoot === 0) {\n\t\t\t\t\t\treturn handleSize;\n\t\t\t\t}\n\t\t\t\treturn handleSize / (1 + Math.abs(overshoot));\n\t\t}\n\t\t_getViewportSize(orientation) {\n\t\t\t\treturn this._getSize(orientation, this._viewportEntity);\n\t\t}\n\t\t_getContentSize(orientation) {\n\t\t\t\treturn this._getSize(orientation, this._contentEntity);\n\t\t}\n\t\t_getSize(orientation, entity) {\n\t\t\t\tif (entity?.element) {\n\t\t\t\t\t\treturn entity.element[this._getCalculatedDimension(orientation)];\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\t_getScrollingEnabled(orientation) {\n\t\t\t\tif (orientation === ORIENTATION_HORIZONTAL) {\n\t\t\t\t\t\treturn this.horizontal;\n\t\t\t\t} else if (orientation === ORIENTATION_VERTICAL) {\n\t\t\t\t\t\treturn this.vertical;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_getScrollbarVisibility(orientation) {\n\t\t\t\tif (orientation === ORIENTATION_HORIZONTAL) {\n\t\t\t\t\t\treturn this.horizontalScrollbarVisibility;\n\t\t\t\t} else if (orientation === ORIENTATION_VERTICAL) {\n\t\t\t\t\t\treturn this.verticalScrollbarVisibility;\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_getSign(orientation) {\n\t\t\t\treturn orientation === ORIENTATION_HORIZONTAL ? 1 : -1;\n\t\t}\n\t\t_getAxis(orientation) {\n\t\t\t\treturn orientation === ORIENTATION_HORIZONTAL ? 'x' : 'y';\n\t\t}\n\t\t_getCalculatedDimension(orientation) {\n\t\t\t\treturn orientation === ORIENTATION_HORIZONTAL ? 'calculatedWidth' : 'calculatedHeight';\n\t\t}\n\t\t_destroyDragHelper() {\n\t\t\t\tif (this._contentDragHelper) {\n\t\t\t\t\t\tthis._contentDragHelper.destroy();\n\t\t\t\t}\n\t\t}\n\t\tonUpdate() {\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tthis._updateVelocity();\n\t\t\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_HORIZONTAL);\n\t\t\t\t\t\tthis._syncScrollbarEnabledState(ORIENTATION_VERTICAL);\n\t\t\t\t}\n\t\t}\n\t\t_updateVelocity() {\n\t\t\t\tif (!this._isDragging()) {\n\t\t\t\t\t\tif (this.scrollMode === SCROLL_MODE_BOUNCE) {\n\t\t\t\t\t\t\t\tif (this._hasOvershoot('x', ORIENTATION_HORIZONTAL)) {\n\t\t\t\t\t\t\t\t\t\tthis._setVelocityFromOvershoot(this.scroll.x, 'x', ORIENTATION_HORIZONTAL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this._hasOvershoot('y', ORIENTATION_VERTICAL)) {\n\t\t\t\t\t\t\t\t\t\tthis._setVelocityFromOvershoot(this.scroll.y, 'y', ORIENTATION_VERTICAL);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (Math.abs(this._velocity.x) > 1e-4 || Math.abs(this._velocity.y) > 1e-4) {\n\t\t\t\t\t\t\t\tconst position = this._contentEntity.getLocalPosition();\n\t\t\t\t\t\t\t\tposition.x += this._velocity.x;\n\t\t\t\t\t\t\t\tposition.y += this._velocity.y;\n\t\t\t\t\t\t\t\tthis._contentEntity.setLocalPosition(position);\n\t\t\t\t\t\t\t\tthis._setScrollFromContentPosition(position);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._velocity.x *= 1 - this.friction;\n\t\t\t\t\t\tthis._velocity.y *= 1 - this.friction;\n\t\t\t\t}\n\t\t}\n\t\t_hasOvershoot(axis, orientation) {\n\t\t\t\treturn Math.abs(this._toOvershoot(this.scroll[axis], orientation)) > 0.001;\n\t\t}\n\t\t_toOvershoot(scrollValue, orientation) {\n\t\t\t\tconst maxScrollValue = this._getMaxScrollValue(orientation);\n\t\t\t\tif (scrollValue < 0) {\n\t\t\t\t\t\treturn scrollValue;\n\t\t\t\t} else if (scrollValue > maxScrollValue) {\n\t\t\t\t\t\treturn scrollValue - maxScrollValue;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\t_setVelocityFromOvershoot(scrollValue, axis, orientation) {\n\t\t\t\tconst overshootValue = this._toOvershoot(scrollValue, orientation);\n\t\t\t\tconst overshootPixels = overshootValue * this._getMaxOffset(orientation) * this._getSign(orientation);\n\t\t\t\tif (Math.abs(overshootPixels) > 0) {\n\t\t\t\t\t\tthis._velocity[axis] = -overshootPixels / (this.bounceAmount * 50 + 1);\n\t\t\t\t}\n\t\t}\n\t\t_setVelocityFromContentPositionDelta(position) {\n\t\t\t\tif (this._prevContentDragPosition) {\n\t\t\t\t\t\tthis._velocity.sub2(position, this._prevContentDragPosition);\n\t\t\t\t\t\tthis._prevContentDragPosition.copy(position);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._velocity.set(0, 0, 0);\n\t\t\t\t\t\tthis._prevContentDragPosition = position.clone();\n\t\t\t\t}\n\t\t}\n\t\t_setScrollFromContentPosition(position) {\n\t\t\t\tlet scrollValue = this._contentPositionToScrollValue(position);\n\t\t\t\tif (this._isDragging()) {\n\t\t\t\t\t\tscrollValue = this._applyScrollValueTension(scrollValue);\n\t\t\t\t}\n\t\t\t\tthis._onSetScroll(scrollValue.x, scrollValue.y, false);\n\t\t}\n\t\t_applyScrollValueTension(scrollValue) {\n\t\t\t\tconst factor = 1;\n\t\t\t\tlet max = this._getMaxScrollValue(ORIENTATION_HORIZONTAL);\n\t\t\t\tlet overshoot = this._toOvershoot(scrollValue.x, ORIENTATION_HORIZONTAL);\n\t\t\t\tif (overshoot > 0) {\n\t\t\t\t\t\tscrollValue.x = max + factor * Math.log10(1 + overshoot);\n\t\t\t\t} else if (overshoot < 0) {\n\t\t\t\t\t\tscrollValue.x = -factor * Math.log10(1 - overshoot);\n\t\t\t\t}\n\t\t\t\tmax = this._getMaxScrollValue(ORIENTATION_VERTICAL);\n\t\t\t\tovershoot = this._toOvershoot(scrollValue.y, ORIENTATION_VERTICAL);\n\t\t\t\tif (overshoot > 0) {\n\t\t\t\t\t\tscrollValue.y = max + factor * Math.log10(1 + overshoot);\n\t\t\t\t} else if (overshoot < 0) {\n\t\t\t\t\t\tscrollValue.y = -factor * Math.log10(1 - overshoot);\n\t\t\t\t}\n\t\t\t\treturn scrollValue;\n\t\t}\n\t\t_isDragging() {\n\t\t\t\treturn this._contentDragHelper && this._contentDragHelper.isDragging;\n\t\t}\n\t\t_setScrollbarComponentsEnabled(enabled) {\n\t\t\t\tif (this._horizontalScrollbarEntity?.scrollbar) {\n\t\t\t\t\t\tthis._horizontalScrollbarEntity.scrollbar.enabled = enabled;\n\t\t\t\t}\n\t\t\t\tif (this._verticalScrollbarEntity?.scrollbar) {\n\t\t\t\t\t\tthis._verticalScrollbarEntity.scrollbar.enabled = enabled;\n\t\t\t\t}\n\t\t}\n\t\t_setContentDraggingEnabled(enabled) {\n\t\t\t\tif (this._contentDragHelper) {\n\t\t\t\t\t\tthis._contentDragHelper.enabled = enabled;\n\t\t\t\t}\n\t\t}\n\t\t_onMouseWheel(event) {\n\t\t\t\tif (!this.useMouseWheel || !this._contentEntity?.element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst wheelEvent = event.event;\n\t\t\t\tconst normalizedDeltaX = wheelEvent.deltaX / this._contentEntity.element.calculatedWidth * this.mouseWheelSensitivity.x;\n\t\t\t\tconst normalizedDeltaY = wheelEvent.deltaY / this._contentEntity.element.calculatedHeight * this.mouseWheelSensitivity.y;\n\t\t\t\tconst scrollX = math.clamp(this._scroll.x + normalizedDeltaX, 0, this._getMaxScrollValue(ORIENTATION_HORIZONTAL));\n\t\t\t\tconst scrollY = math.clamp(this._scroll.y + normalizedDeltaY, 0, this._getMaxScrollValue(ORIENTATION_VERTICAL));\n\t\t\t\tthis.scroll = new Vec2(scrollX, scrollY);\n\t\t}\n\t\t_enableContentInput() {\n\t\t\t\twhile(this._disabledContentInputEntities.length){\n\t\t\t\t\t\tconst e = this._disabledContentInputEntities.pop();\n\t\t\t\t\t\tif (e.element) {\n\t\t\t\t\t\t\t\te.element.useInput = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._disabledContentInput = false;\n\t\t}\n\t\t_disableContentInput() {\n\t\t\t\tconst _disableInput = (e)=>{\n\t\t\t\t\t\tif (e.element && e.element.useInput) {\n\t\t\t\t\t\t\t\tthis._disabledContentInputEntities.push(e);\n\t\t\t\t\t\t\t\te.element.useInput = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = e.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\t_disableInput(children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tif (this._contentEntity) {\n\t\t\t\t\t\tconst children = this._contentEntity.children;\n\t\t\t\t\t\tfor(let i = 0, l = children.length; i < l; i++){\n\t\t\t\t\t\t\t\t_disableInput(children[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._disabledContentInput = true;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._setScrollbarComponentsEnabled(true);\n\t\t\t\tthis._setContentDraggingEnabled(true);\n\t\t\t\tthis._syncAll();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._setScrollbarComponentsEnabled(false);\n\t\t\t\tthis._setContentDraggingEnabled(false);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis._toggleLifecycleListeners('off');\n\t\t\t\tthis._toggleElementListeners('off');\n\t\t\t\tthis._destroyDragHelper();\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldScrollView, duplicatedIdsMap) {\n\t\t\t\tif (oldScrollView.viewportEntity) {\n\t\t\t\t\t\tthis.viewportEntity = duplicatedIdsMap[oldScrollView.viewportEntity.getGuid()];\n\t\t\t\t}\n\t\t\t\tif (oldScrollView.contentEntity) {\n\t\t\t\t\t\tthis.contentEntity = duplicatedIdsMap[oldScrollView.contentEntity.getGuid()];\n\t\t\t\t}\n\t\t\t\tif (oldScrollView.horizontalScrollbarEntity) {\n\t\t\t\t\t\tthis.horizontalScrollbarEntity = duplicatedIdsMap[oldScrollView.horizontalScrollbarEntity.getGuid()];\n\t\t\t\t}\n\t\t\t\tif (oldScrollView.verticalScrollbarEntity) {\n\t\t\t\t\t\tthis.verticalScrollbarEntity = duplicatedIdsMap[oldScrollView.verticalScrollbarEntity.getGuid()];\n\t\t\t\t}\n\t\t}\n}\n\nconst DEFAULT_DRAG_THRESHOLD$1 = 10;\nclass ScrollViewComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.dragThreshold = DEFAULT_DRAG_THRESHOLD$1;\n\t\t\t\tthis.useMouseWheel = true;\n\t\t\t\tthis.mouseWheelSensitivity = new Vec2(1, 1);\n\t\t\t\tthis.horizontalScrollbarVisibility = 0;\n\t\t\t\tthis.verticalScrollbarVisibility = 0;\n\t\t\t\tthis.viewportEntity = null;\n\t\t\t\tthis.contentEntity = null;\n\t\t\t\tthis.horizontalScrollbarEntity = null;\n\t\t\t\tthis.verticalScrollbarEntity = null;\n\t\t}\n}\n\nconst _schema$6 = [\n\t\t{\n\t\t\t\tname: 'enabled',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'horizontal',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'vertical',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'scrollMode',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'bounceAmount',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'friction',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'dragThreshold',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'useMouseWheel',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'mouseWheelSensitivity',\n\t\t\t\ttype: 'vec2'\n\t\t},\n\t\t{\n\t\t\t\tname: 'horizontalScrollbarVisibility',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'verticalScrollbarVisibility',\n\t\t\t\ttype: 'number'\n\t\t}\n];\nconst DEFAULT_DRAG_THRESHOLD = 10;\nclass ScrollViewComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'scrollview';\n\t\t\t\tthis.ComponentType = ScrollViewComponent;\n\t\t\t\tthis.DataType = ScrollViewComponentData;\n\t\t\t\tthis.schema = _schema$6;\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.dragThreshold === undefined) {\n\t\t\t\t\t\tdata.dragThreshold = DEFAULT_DRAG_THRESHOLD;\n\t\t\t\t}\n\t\t\t\tif (data.useMouseWheel === undefined) {\n\t\t\t\t\t\tdata.useMouseWheel = true;\n\t\t\t\t}\n\t\t\t\tif (data.mouseWheelSensitivity === undefined) {\n\t\t\t\t\t\tdata.mouseWheelSensitivity = new Vec2(1, 1);\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$6);\n\t\t\t\tcomponent.viewportEntity = data.viewportEntity;\n\t\t\t\tcomponent.contentEntity = data.contentEntity;\n\t\t\t\tcomponent.horizontalScrollbarEntity = data.horizontalScrollbarEntity;\n\t\t\t\tcomponent.verticalScrollbarEntity = data.verticalScrollbarEntity;\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tconst entity = components[id].entity;\n\t\t\t\t\t\tconst component = entity.scrollview;\n\t\t\t\t\t\tif (component.enabled && entity.enabled) {\n\t\t\t\t\t\t\t\tcomponent.onUpdate();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\n\nclass ScrollbarComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETVALUE = 'set:value';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._handleEntity = null, this._evtHandleEntityElementAdd = null, this._evtHandleEntityChanges = [];\n\t\t\t\tthis._toggleLifecycleListeners('on');\n\t\t}\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset orientation(arg) {\n\t\t\t\tthis._setValue('orientation', arg);\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this.data.orientation;\n\t\t}\n\t\tset value(arg) {\n\t\t\t\tthis._setValue('value', arg);\n\t\t}\n\t\tget value() {\n\t\t\t\treturn this.data.value;\n\t\t}\n\t\tset handleSize(arg) {\n\t\t\t\tthis._setValue('handleSize', arg);\n\t\t}\n\t\tget handleSize() {\n\t\t\t\treturn this.data.handleSize;\n\t\t}\n\t\tset handleEntity(arg) {\n\t\t\t\tif (this._handleEntity === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst isString = typeof arg === 'string';\n\t\t\t\tif (this._handleEntity && isString && this._handleEntity.getGuid() === arg) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._handleEntity) {\n\t\t\t\t\t\tthis._handleEntityUnsubscribe();\n\t\t\t\t}\n\t\t\t\tif (arg instanceof GraphNode) {\n\t\t\t\t\t\tthis._handleEntity = arg;\n\t\t\t\t} else if (isString) {\n\t\t\t\t\t\tthis._handleEntity = this.system.app.getEntityFromIndex(arg) || null;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._handleEntity = null;\n\t\t\t\t}\n\t\t\t\tif (this._handleEntity) {\n\t\t\t\t\t\tthis._handleEntitySubscribe();\n\t\t\t\t}\n\t\t\t\tif (this._handleEntity) {\n\t\t\t\t\t\tthis.data.handleEntity = this._handleEntity.getGuid();\n\t\t\t\t} else if (isString && arg) {\n\t\t\t\t\t\tthis.data.handleEntity = arg;\n\t\t\t\t}\n\t\t}\n\t\tget handleEntity() {\n\t\t\t\treturn this._handleEntity;\n\t\t}\n\t\t_setValue(name, value) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tdata[name] = value;\n\t\t\t\tthis.fire('set', name, oldValue, value);\n\t\t}\n\t\t_toggleLifecycleListeners(onOrOff) {\n\t\t\t\tthis[onOrOff]('set_value', this._onSetValue, this);\n\t\t\t\tthis[onOrOff]('set_handleSize', this._onSetHandleSize, this);\n\t\t\t\tthis[onOrOff]('set_orientation', this._onSetOrientation, this);\n\t\t}\n\t\t_handleEntitySubscribe() {\n\t\t\t\tthis._evtHandleEntityElementAdd = this._handleEntity.on('element:add', this._onHandleElementGain, this);\n\t\t\t\tif (this._handleEntity.element) {\n\t\t\t\t\t\tthis._onHandleElementGain();\n\t\t\t\t}\n\t\t}\n\t\t_handleEntityUnsubscribe() {\n\t\t\t\tthis._evtHandleEntityElementAdd?.off();\n\t\t\t\tthis._evtHandleEntityElementAdd = null;\n\t\t\t\tif (this._handleEntity?.element) {\n\t\t\t\t\t\tthis._onHandleElementLose();\n\t\t\t\t}\n\t\t}\n\t\t_handleEntityElementSubscribe() {\n\t\t\t\tconst element = this._handleEntity.element;\n\t\t\t\tconst handles = this._evtHandleEntityChanges;\n\t\t\t\thandles.push(element.once('beforeremove', this._onHandleElementLose, this));\n\t\t\t\thandles.push(element.on('set:anchor', this._onSetHandleAlignment, this));\n\t\t\t\thandles.push(element.on('set:margin', this._onSetHandleAlignment, this));\n\t\t\t\thandles.push(element.on('set:pivot', this._onSetHandleAlignment, this));\n\t\t}\n\t\t_handleEntityElementUnsubscribe() {\n\t\t\t\tfor(let i = 0; i < this._evtHandleEntityChanges.length; i++){\n\t\t\t\t\t\tthis._evtHandleEntityChanges[i].off();\n\t\t\t\t}\n\t\t\t\tthis._evtHandleEntityChanges.length = 0;\n\t\t}\n\t\t_onHandleElementGain() {\n\t\t\t\tthis._handleEntityElementSubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t\t\tthis._handleDragHelper = new ElementDragHelper(this._handleEntity.element, this._getAxis());\n\t\t\t\tthis._handleDragHelper.on('drag:move', this._onHandleDrag, this);\n\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t}\n\t\t_onHandleElementLose() {\n\t\t\t\tthis._handleEntityElementUnsubscribe();\n\t\t\t\tthis._destroyDragHelper();\n\t\t}\n\t\t_onHandleDrag(position) {\n\t\t\t\tif (this._handleEntity && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.value = this._handlePositionToScrollValue(position[this._getAxis()]);\n\t\t\t\t}\n\t\t}\n\t\t_onSetValue(name, oldValue, newValue) {\n\t\t\t\tif (Math.abs(newValue - oldValue) > 1e-5) {\n\t\t\t\t\t\tthis.data.value = math.clamp(newValue, 0, 1);\n\t\t\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t\t\t\t\tthis.fire('set:value', this.data.value);\n\t\t\t\t}\n\t\t}\n\t\t_onSetHandleSize(name, oldValue, newValue) {\n\t\t\t\tif (Math.abs(newValue - oldValue) > 1e-5) {\n\t\t\t\t\t\tthis.data.handleSize = math.clamp(newValue, 0, 1);\n\t\t\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t\t\t}\n\t\t}\n\t\t_onSetHandleAlignment() {\n\t\t\t\tthis._updateHandlePositionAndSize();\n\t\t}\n\t\t_onSetOrientation(name, oldValue, newValue) {\n\t\t\t\tif (newValue !== oldValue && this._handleEntity?.element) {\n\t\t\t\t\t\tthis._handleEntity.element[this._getOppositeDimension()] = 0;\n\t\t\t\t}\n\t\t}\n\t\t_updateHandlePositionAndSize() {\n\t\t\t\tconst handleEntity = this._handleEntity;\n\t\t\t\tconst handleElement = handleEntity?.element;\n\t\t\t\tif (handleEntity) {\n\t\t\t\t\t\tconst position = handleEntity.getLocalPosition();\n\t\t\t\t\t\tposition[this._getAxis()] = this._getHandlePosition();\n\t\t\t\t\t\thandleEntity.setLocalPosition(position);\n\t\t\t\t}\n\t\t\t\tif (handleElement) {\n\t\t\t\t\t\thandleElement[this._getDimension()] = this._getHandleLength();\n\t\t\t\t}\n\t\t}\n\t\t_handlePositionToScrollValue(handlePosition) {\n\t\t\t\treturn handlePosition * this._getSign() / this._getUsableTrackLength();\n\t\t}\n\t\t_scrollValueToHandlePosition(value) {\n\t\t\t\treturn value * this._getSign() * this._getUsableTrackLength();\n\t\t}\n\t\t_getUsableTrackLength() {\n\t\t\t\treturn Math.max(this._getTrackLength() - this._getHandleLength(), 0.001);\n\t\t}\n\t\t_getTrackLength() {\n\t\t\t\tif (this.entity.element) {\n\t\t\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? this.entity.element.calculatedWidth : this.entity.element.calculatedHeight;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\t_getHandleLength() {\n\t\t\t\treturn this._getTrackLength() * this.handleSize;\n\t\t}\n\t\t_getHandlePosition() {\n\t\t\t\treturn this._scrollValueToHandlePosition(this.value);\n\t\t}\n\t\t_getSign() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 1 : -1;\n\t\t}\n\t\t_getAxis() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 'x' : 'y';\n\t\t}\n\t\t_getDimension() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 'width' : 'height';\n\t\t}\n\t\t_getOppositeDimension() {\n\t\t\t\treturn this.orientation === ORIENTATION_HORIZONTAL ? 'height' : 'width';\n\t\t}\n\t\t_destroyDragHelper() {\n\t\t\t\tif (this._handleDragHelper) {\n\t\t\t\t\t\tthis._handleDragHelper.destroy();\n\t\t\t\t}\n\t\t}\n\t\t_setHandleDraggingEnabled(enabled) {\n\t\t\t\tif (this._handleDragHelper) {\n\t\t\t\t\t\tthis._handleDragHelper.enabled = enabled;\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._setHandleDraggingEnabled(true);\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._setHandleDraggingEnabled(false);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis._destroyDragHelper();\n\t\t\t\tthis._toggleLifecycleListeners('off');\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldScrollbar, duplicatedIdsMap) {\n\t\t\t\tif (oldScrollbar.handleEntity) {\n\t\t\t\t\t\tthis.handleEntity = duplicatedIdsMap[oldScrollbar.handleEntity.getGuid()];\n\t\t\t\t}\n\t\t}\n}\n\nclass ScrollbarComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.orientation = ORIENTATION_HORIZONTAL;\n\t\t\t\tthis.value = 0;\n\t\t\t\tthis.handleSize = 0;\n\t\t\t\tthis.handleEntity = null;\n\t\t}\n}\n\nconst _schema$5 = [\n\t\t{\n\t\t\t\tname: 'enabled',\n\t\t\t\ttype: 'boolean'\n\t\t},\n\t\t{\n\t\t\t\tname: 'orientation',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'value',\n\t\t\t\ttype: 'number'\n\t\t},\n\t\t{\n\t\t\t\tname: 'handleSize',\n\t\t\t\ttype: 'number'\n\t\t}\n];\nclass ScrollbarComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'scrollbar';\n\t\t\t\tthis.ComponentType = ScrollbarComponent;\n\t\t\t\tthis.DataType = ScrollbarComponentData;\n\t\t\t\tthis.schema = _schema$5;\n\t\t\t\tthis.on('add', this._onAddComponent, this);\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tsuper.initializeComponentData(component, data, _schema$5);\n\t\t\t\tcomponent.handleEntity = data.handleEntity;\n\t\t}\n\t\t_onAddComponent(entity) {\n\t\t\t\tentity.fire('scrollbar:add');\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\n\nconst instanceOptions = {\n\t\tvolume: 0,\n\t\tpitch: 0,\n\t\tloop: false,\n\t\tstartTime: 0,\n\t\tduration: 0,\n\t\tposition: new Vec3(),\n\t\tmaxDistance: 0,\n\t\trefDistance: 0,\n\t\trollOffFactor: 0,\n\t\tdistanceModel: 0,\n\t\tonPlay: null,\n\t\tonPause: null,\n\t\tonResume: null,\n\t\tonStop: null,\n\t\tonEnd: null\n};\nclass SoundSlot extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOAD = 'load';\n\t\t}\n\t\tconstructor(component, name = 'Untitled', options = {}){\n\t\t\t\tsuper(), this.instances = [];\n\t\t\t\tthis._component = component;\n\t\t\t\tthis._assets = component.system.app.assets;\n\t\t\t\tthis._manager = component.system.manager;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis._volume = options.volume !== undefined ? math.clamp(Number(options.volume) || 0, 0, 1) : 1;\n\t\t\t\tthis._pitch = options.pitch !== undefined ? Math.max(0.01, Number(options.pitch) || 0) : 1;\n\t\t\t\tthis._loop = !!(options.loop !== undefined ? options.loop : false);\n\t\t\t\tthis._duration = options.duration > 0 ? options.duration : null;\n\t\t\t\tthis._startTime = Math.max(0, Number(options.startTime) || 0);\n\t\t\t\tthis._overlap = !!options.overlap;\n\t\t\t\tthis._autoPlay = !!options.autoPlay;\n\t\t\t\tthis._firstNode = null;\n\t\t\t\tthis._lastNode = null;\n\t\t\t\tthis._asset = options.asset;\n\t\t\t\tif (this._asset instanceof Asset) {\n\t\t\t\t\t\tthis._asset = this._asset.id;\n\t\t\t\t}\n\t\t\t\tthis._onInstancePlayHandler = this._onInstancePlay.bind(this);\n\t\t\t\tthis._onInstancePauseHandler = this._onInstancePause.bind(this);\n\t\t\t\tthis._onInstanceResumeHandler = this._onInstanceResume.bind(this);\n\t\t\t\tthis._onInstanceStopHandler = this._onInstanceStop.bind(this);\n\t\t\t\tthis._onInstanceEndHandler = this._onInstanceEnd.bind(this);\n\t\t}\n\t\tplay() {\n\t\t\t\tif (!this.overlap) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t}\n\t\t\t\tif (!this.isLoaded && !this._hasAsset()) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst instance = this._createInstance();\n\t\t\t\tthis.instances.push(instance);\n\t\t\t\tif (!this.isLoaded) {\n\t\t\t\t\t\tconst onLoad = function(sound) {\n\t\t\t\t\t\t\t\tconst playWhenLoaded = instance._playWhenLoaded;\n\t\t\t\t\t\t\t\tinstance.sound = sound;\n\t\t\t\t\t\t\t\tif (playWhenLoaded) {\n\t\t\t\t\t\t\t\t\t\tinstance.play();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.off('load', onLoad);\n\t\t\t\t\t\tthis.once('load', onLoad);\n\t\t\t\t\t\tthis.load();\n\t\t\t\t} else {\n\t\t\t\t\t\tinstance.play();\n\t\t\t\t}\n\t\t\t\treturn instance;\n\t\t}\n\t\tpause() {\n\t\t\t\tlet paused = false;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (instances[i].pause()) {\n\t\t\t\t\t\t\t\tpaused = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn paused;\n\t\t}\n\t\tresume() {\n\t\t\t\tlet resumed = false;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (instances[i].resume()) {\n\t\t\t\t\t\t\t\tresumed = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn resumed;\n\t\t}\n\t\tstop() {\n\t\t\t\tlet stopped = false;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tlet i = instances.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tinstances[i].stop();\n\t\t\t\t\t\tstopped = true;\n\t\t\t\t}\n\t\t\t\tinstances.length = 0;\n\t\t\t\treturn stopped;\n\t\t}\n\t\tload() {\n\t\t\t\tif (!this._hasAsset()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tthis._assets.off(`add:${this._asset}`, this._onAssetAdd, this);\n\t\t\t\t\t\tthis._assets.once(`add:${this._asset}`, this._onAssetAdd, this);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tasset.off('remove', this._onAssetRemoved, this);\n\t\t\t\tasset.on('remove', this._onAssetRemoved, this);\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\tasset.off('load', this._onAssetLoad, this);\n\t\t\t\t\t\tasset.once('load', this._onAssetLoad, this);\n\t\t\t\t\t\tthis._assets.load(asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.fire('load', asset.resource);\n\t\t}\n\t\tsetExternalNodes(firstNode, lastNode) {\n\t\t\t\tif (!firstNode) {\n\t\t\t\t\t\tconsole.error('The firstNode must have a valid AudioNode');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!lastNode) {\n\t\t\t\t\t\tlastNode = firstNode;\n\t\t\t\t}\n\t\t\t\tthis._firstNode = firstNode;\n\t\t\t\tthis._lastNode = lastNode;\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].setExternalNodes(firstNode, lastNode);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tclearExternalNodes() {\n\t\t\t\tthis._firstNode = null;\n\t\t\t\tthis._lastNode = null;\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].clearExternalNodes();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetExternalNodes() {\n\t\t\t\treturn [\n\t\t\t\t\t\tthis._firstNode,\n\t\t\t\t\t\tthis._lastNode\n\t\t\t\t];\n\t\t}\n\t\t_hasAsset() {\n\t\t\t\treturn this._asset != null;\n\t\t}\n\t\t_createInstance() {\n\t\t\t\tlet instance = null;\n\t\t\t\tconst component = this._component;\n\t\t\t\tlet sound = null;\n\t\t\t\tif (this._hasAsset()) {\n\t\t\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tsound = asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst data = instanceOptions;\n\t\t\t\tdata.volume = this._volume * component.volume;\n\t\t\t\tdata.pitch = this._pitch * component.pitch;\n\t\t\t\tdata.loop = this._loop;\n\t\t\t\tdata.startTime = this._startTime;\n\t\t\t\tdata.duration = this._duration;\n\t\t\t\tdata.onPlay = this._onInstancePlayHandler;\n\t\t\t\tdata.onPause = this._onInstancePauseHandler;\n\t\t\t\tdata.onResume = this._onInstanceResumeHandler;\n\t\t\t\tdata.onStop = this._onInstanceStopHandler;\n\t\t\t\tdata.onEnd = this._onInstanceEndHandler;\n\t\t\t\tif (component.positional) {\n\t\t\t\t\t\tdata.position.copy(component.entity.getPosition());\n\t\t\t\t\t\tdata.maxDistance = component.maxDistance;\n\t\t\t\t\t\tdata.refDistance = component.refDistance;\n\t\t\t\t\t\tdata.rollOffFactor = component.rollOffFactor;\n\t\t\t\t\t\tdata.distanceModel = component.distanceModel;\n\t\t\t\t\t\tinstance = new SoundInstance3d(this._manager, sound, data);\n\t\t\t\t} else {\n\t\t\t\t\t\tinstance = new SoundInstance(this._manager, sound, data);\n\t\t\t\t}\n\t\t\t\tif (this._firstNode) {\n\t\t\t\t\t\tinstance.setExternalNodes(this._firstNode, this._lastNode);\n\t\t\t\t}\n\t\t\t\treturn instance;\n\t\t}\n\t\t_onInstancePlay(instance) {\n\t\t\t\tthis.fire('play', instance);\n\t\t\t\tthis._component.fire('play', this, instance);\n\t\t}\n\t\t_onInstancePause(instance) {\n\t\t\t\tthis.fire('pause', instance);\n\t\t\t\tthis._component.fire('pause', this, instance);\n\t\t}\n\t\t_onInstanceResume(instance) {\n\t\t\t\tthis.fire('resume', instance);\n\t\t\t\tthis._component.fire('resume', this, instance);\n\t\t}\n\t\t_onInstanceStop(instance) {\n\t\t\t\tconst idx = this.instances.indexOf(instance);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis.instances.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tthis.fire('stop', instance);\n\t\t\t\tthis._component.fire('stop', this, instance);\n\t\t}\n\t\t_onInstanceEnd(instance) {\n\t\t\t\tconst idx = this.instances.indexOf(instance);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis.instances.splice(idx, 1);\n\t\t\t\t}\n\t\t\t\tthis.fire('end', instance);\n\t\t\t\tthis._component.fire('end', this, instance);\n\t\t}\n\t\t_onAssetAdd(asset) {\n\t\t\t\tthis.load();\n\t\t}\n\t\t_onAssetLoad(asset) {\n\t\t\t\tthis.load();\n\t\t}\n\t\t_onAssetRemoved(asset) {\n\t\t\t\tasset.off('remove', this._onAssetRemoved, this);\n\t\t\t\tthis._assets.off(`add:${asset.id}`, this._onAssetAdd, this);\n\t\t\t\tthis.stop();\n\t\t}\n\t\tupdatePosition(position) {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tinstances[i].position = position;\n\t\t\t\t}\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst old = this._asset;\n\t\t\t\tif (old) {\n\t\t\t\t\t\tthis._assets.off(`add:${old}`, this._onAssetAdd, this);\n\t\t\t\t\t\tconst oldAsset = this._assets.get(old);\n\t\t\t\t\t\tif (oldAsset) {\n\t\t\t\t\t\t\t\toldAsset.off('remove', this._onAssetRemoved, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._asset = value;\n\t\t\t\tif (this._asset instanceof Asset) {\n\t\t\t\t\t\tthis._asset = this._asset.id;\n\t\t\t\t}\n\t\t\t\tif (this._hasAsset() && this._component.enabled && this._component.entity.enabled) {\n\t\t\t\t\t\tthis.load();\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._asset;\n\t\t}\n\t\tset autoPlay(value) {\n\t\t\t\tthis._autoPlay = !!value;\n\t\t}\n\t\tget autoPlay() {\n\t\t\t\treturn this._autoPlay;\n\t\t}\n\t\tset duration(value) {\n\t\t\t\tthis._duration = Math.max(0, Number(value) || 0) || null;\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].duration = this._duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget duration() {\n\t\t\t\tlet assetDuration = 0;\n\t\t\t\tif (this._hasAsset()) {\n\t\t\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\t\t\tassetDuration = asset?.resource ? asset.resource.duration : 0;\n\t\t\t\t}\n\t\t\t\tif (this._duration != null) {\n\t\t\t\t\t\treturn this._duration % (assetDuration || 1);\n\t\t\t\t}\n\t\t\t\treturn assetDuration;\n\t\t}\n\t\tget isLoaded() {\n\t\t\t\tif (this._hasAsset()) {\n\t\t\t\t\t\tconst asset = this._assets.get(this._asset);\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\treturn !!asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tget isPaused() {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tconst len = instances.length;\n\t\t\t\tif (len === 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tif (!instances[i].isPaused) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tget isPlaying() {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (instances[i].isPlaying) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tget isStopped() {\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tif (!instances[i].isStopped) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tset loop(value) {\n\t\t\t\tthis._loop = !!value;\n\t\t\t\tconst instances = this.instances;\n\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\tinstances[i].loop = this._loop;\n\t\t\t\t}\n\t\t}\n\t\tget loop() {\n\t\t\t\treturn this._loop;\n\t\t}\n\t\tset overlap(value) {\n\t\t\t\tthis._overlap = !!value;\n\t\t}\n\t\tget overlap() {\n\t\t\t\treturn this._overlap;\n\t\t}\n\t\tset pitch(value) {\n\t\t\t\tthis._pitch = Math.max(Number(value) || 0, 0.01);\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].pitch = this.pitch * this._component.pitch;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget pitch() {\n\t\t\t\treturn this._pitch;\n\t\t}\n\t\tset startTime(value) {\n\t\t\t\tthis._startTime = Math.max(0, Number(value) || 0);\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].startTime = this._startTime;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget startTime() {\n\t\t\t\treturn this._startTime;\n\t\t}\n\t\tset volume(value) {\n\t\t\t\tthis._volume = math.clamp(Number(value) || 0, 0, 1);\n\t\t\t\tif (!this._overlap) {\n\t\t\t\t\t\tconst instances = this.instances;\n\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\tinstances[i].volume = this._volume * this._component.volume;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n}\n\nclass SoundComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\t_updateSoundInstances(property, value, isFactor) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tconst slot = slots[key];\n\t\t\t\t\t\tif (!slot.overlap) {\n\t\t\t\t\t\t\t\tconst instances = slot.instances;\n\t\t\t\t\t\t\t\tfor(let i = 0, len = instances.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\tinstances[i][property] = isFactor ? slot[property] * value : value;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tset distanceModel(value) {\n\t\t\t\tthis._distanceModel = value;\n\t\t\t\tthis._updateSoundInstances('distanceModel', value, false);\n\t\t}\n\t\tget distanceModel() {\n\t\t\t\treturn this._distanceModel;\n\t\t}\n\t\tset maxDistance(value) {\n\t\t\t\tthis._maxDistance = value;\n\t\t\t\tthis._updateSoundInstances('maxDistance', value, false);\n\t\t}\n\t\tget maxDistance() {\n\t\t\t\treturn this._maxDistance;\n\t\t}\n\t\tset refDistance(value) {\n\t\t\t\tthis._refDistance = value;\n\t\t\t\tthis._updateSoundInstances('refDistance', value, false);\n\t\t}\n\t\tget refDistance() {\n\t\t\t\treturn this._refDistance;\n\t\t}\n\t\tset rollOffFactor(value) {\n\t\t\t\tthis._rollOffFactor = value;\n\t\t\t\tthis._updateSoundInstances('rollOffFactor', value, false);\n\t\t}\n\t\tget rollOffFactor() {\n\t\t\t\treturn this._rollOffFactor;\n\t\t}\n\t\tset pitch(value) {\n\t\t\t\tthis._pitch = value;\n\t\t\t\tthis._updateSoundInstances('pitch', value, true);\n\t\t}\n\t\tget pitch() {\n\t\t\t\treturn this._pitch;\n\t\t}\n\t\tset volume(value) {\n\t\t\t\tthis._volume = value;\n\t\t\t\tthis._updateSoundInstances('volume', value, true);\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this._volume;\n\t\t}\n\t\tset positional(newValue) {\n\t\t\t\tthis._positional = newValue;\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tconst slot = slots[key];\n\t\t\t\t\t\tif (!slot.overlap) {\n\t\t\t\t\t\t\t\tconst instances = slot.instances;\n\t\t\t\t\t\t\t\tconst oldLength = instances.length;\n\t\t\t\t\t\t\t\tfor(let i = oldLength - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\t\t\tconst isPlaying = instances[i].isPlaying || instances[i].isSuspended;\n\t\t\t\t\t\t\t\t\t\tconst currentTime = instances[i].currentTime;\n\t\t\t\t\t\t\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\t\t\t\t\t\t\tinstances[i].stop();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst instance = slot._createInstance();\n\t\t\t\t\t\t\t\t\t\tif (isPlaying) {\n\t\t\t\t\t\t\t\t\t\t\t\tinstance.play();\n\t\t\t\t\t\t\t\t\t\t\t\tinstance.currentTime = currentTime;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinstances.push(instance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget positional() {\n\t\t\t\treturn this._positional;\n\t\t}\n\t\tset slots(newValue) {\n\t\t\t\tconst oldValue = this._slots;\n\t\t\t\tif (oldValue) {\n\t\t\t\t\t\tfor(const key in oldValue){\n\t\t\t\t\t\t\t\toldValue[key].stop();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst slots = {};\n\t\t\t\tfor(const key in newValue){\n\t\t\t\t\t\tif (!(newValue[key] instanceof SoundSlot)) {\n\t\t\t\t\t\t\t\tif (newValue[key].name) {\n\t\t\t\t\t\t\t\t\t\tslots[newValue[key].name] = new SoundSlot(this, newValue[key].name, newValue[key]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tslots[newValue[key].name] = newValue[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._slots = slots;\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t}\n\t\t}\n\t\tget slots() {\n\t\t\t\treturn this._slots;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tif (this.system._inTools) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tconst playingBeforeDisable = this._playingBeforeDisable;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tconst slot = slots[key];\n\t\t\t\t\t\tif (slot.autoPlay && slot.isStopped) {\n\t\t\t\t\t\t\t\tslot.play();\n\t\t\t\t\t\t} else if (playingBeforeDisable[key]) {\n\t\t\t\t\t\t\t\tslot.resume();\n\t\t\t\t\t\t} else if (!slot.isLoaded) {\n\t\t\t\t\t\t\t\tslot.load();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tconst playingBeforeDisable = {};\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tif (!slots[key].overlap) {\n\t\t\t\t\t\t\t\tif (slots[key].isPlaying) {\n\t\t\t\t\t\t\t\t\t\tslots[key].pause();\n\t\t\t\t\t\t\t\t\t\tplayingBeforeDisable[key] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._playingBeforeDisable = playingBeforeDisable;\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.off();\n\t\t}\n\t\taddSlot(name, options) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (slots[name]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst slot = new SoundSlot(this, name, options);\n\t\t\t\tslots[name] = slot;\n\t\t\t\tif (slot.autoPlay && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tslot.play();\n\t\t\t\t}\n\t\t\t\treturn slot;\n\t\t}\n\t\tremoveSlot(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (slots[name]) {\n\t\t\t\t\t\tslots[name].stop();\n\t\t\t\t\t\tdelete slots[name];\n\t\t\t\t}\n\t\t}\n\t\tslot(name) {\n\t\t\t\treturn this._slots[name];\n\t\t}\n\t\t_getSlotProperty(name, property) {\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst slot = this._slots[name];\n\t\t\t\tif (!slot) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn slot[property];\n\t\t}\n\t\tisPlaying(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isPlaying') || false;\n\t\t}\n\t\tisLoaded(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isLoaded') || false;\n\t\t}\n\t\tisPaused(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isPaused') || false;\n\t\t}\n\t\tisStopped(name) {\n\t\t\t\treturn this._getSlotProperty(name, 'isStopped') || false;\n\t\t}\n\t\tplay(name) {\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst slot = this._slots[name];\n\t\t\t\tif (!slot) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn slot.play();\n\t\t}\n\t\tpause(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (name) {\n\t\t\t\t\t\tconst slot = slots[name];\n\t\t\t\t\t\tif (!slot) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tslot.pause();\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\tslots[key].pause();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tresume(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (name) {\n\t\t\t\t\t\tconst slot = slots[name];\n\t\t\t\t\t\tif (!slot) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (slot.isPaused) {\n\t\t\t\t\t\t\t\tslot.resume();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\tslots[key].resume();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tstop(name) {\n\t\t\t\tconst slots = this._slots;\n\t\t\t\tif (name) {\n\t\t\t\t\t\tconst slot = slots[name];\n\t\t\t\t\t\tif (!slot) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tslot.stop();\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\tslots[key].stop();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._volume = 1, this._pitch = 1, this._positional = true, this._refDistance = 1, this._maxDistance = 10000, this._rollOffFactor = 1, this._distanceModel = DISTANCE_LINEAR, this._slots = {}, this._playingBeforeDisable = {};\n\t\t}\n}\n\nclass SoundComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$4 = [\n\t\t'enabled'\n];\nclass SoundComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'sound';\n\t\t\t\tthis.ComponentType = SoundComponent;\n\t\t\t\tthis.DataType = SoundComponentData;\n\t\t\t\tthis.schema = _schema$4;\n\t\t\t\tthis.manager = app.soundManager;\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t}\n\t\tset volume(volume) {\n\t\t\t\tthis.manager.volume = volume;\n\t\t}\n\t\tget volume() {\n\t\t\t\treturn this.manager.volume;\n\t\t}\n\t\tget context() {\n\t\t\t\tif (!hasAudioContext()) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this.manager.context;\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'volume',\n\t\t\t\t\t\t'pitch',\n\t\t\t\t\t\t'positional',\n\t\t\t\t\t\t'refDistance',\n\t\t\t\t\t\t'maxDistance',\n\t\t\t\t\t\t'rollOffFactor',\n\t\t\t\t\t\t'distanceModel',\n\t\t\t\t\t\t'slots'\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tif (data.hasOwnProperty(properties[i])) {\n\t\t\t\t\t\t\t\tcomponent[properties[i]] = data[properties[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst srcComponent = entity.sound;\n\t\t\t\tconst srcSlots = srcComponent.slots;\n\t\t\t\tconst slots = {};\n\t\t\t\tfor(const key in srcSlots){\n\t\t\t\t\t\tconst srcSlot = srcSlots[key];\n\t\t\t\t\t\tslots[key] = {\n\t\t\t\t\t\t\t\tname: srcSlot.name,\n\t\t\t\t\t\t\t\tvolume: srcSlot.volume,\n\t\t\t\t\t\t\t\tpitch: srcSlot.pitch,\n\t\t\t\t\t\t\t\tloop: srcSlot.loop,\n\t\t\t\t\t\t\t\tduration: srcSlot.duration,\n\t\t\t\t\t\t\t\tstartTime: srcSlot.startTime,\n\t\t\t\t\t\t\t\toverlap: srcSlot.overlap,\n\t\t\t\t\t\t\t\tautoPlay: srcSlot.autoPlay,\n\t\t\t\t\t\t\t\tasset: srcSlot.asset\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst cloneData = {\n\t\t\t\t\t\tdistanceModel: srcComponent.distanceModel,\n\t\t\t\t\t\tenabled: srcComponent.enabled,\n\t\t\t\t\t\tmaxDistance: srcComponent.maxDistance,\n\t\t\t\t\t\tpitch: srcComponent.pitch,\n\t\t\t\t\t\tpositional: srcComponent.positional,\n\t\t\t\t\t\trefDistance: srcComponent.refDistance,\n\t\t\t\t\t\trollOffFactor: srcComponent.rollOffFactor,\n\t\t\t\t\t\tslots: slots,\n\t\t\t\t\t\tvolume: srcComponent.volume\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, cloneData);\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst store = this.store;\n\t\t\t\tfor(const id in store){\n\t\t\t\t\t\tif (store.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst item = store[id];\n\t\t\t\t\t\t\t\tconst entity = item.entity;\n\t\t\t\t\t\t\t\tif (entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tconst component = entity.sound;\n\t\t\t\t\t\t\t\t\t\tif (component.enabled && component.positional) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst position = entity.getPosition();\n\t\t\t\t\t\t\t\t\t\t\t\tconst slots = component.slots;\n\t\t\t\t\t\t\t\t\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tslots[key].updatePosition(position);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tconst slots = component.slots;\n\t\t\t\tfor(const key in slots){\n\t\t\t\t\t\tif (!slots[key].overlap) {\n\t\t\t\t\t\t\t\tslots[key].stop();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t}\n}\nComponent._buildAccessors(SoundComponent.prototype, _schema$4);\n\nconst SPRITETYPE_SIMPLE = 'simple';\nconst SPRITETYPE_ANIMATED = 'animated';\n\nclass SpriteAnimationClip extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOOP = 'loop';\n\t\t}\n\t\tconstructor(component, data){\n\t\t\t\tsuper(), this._evtSetMeshes = null;\n\t\t\t\tthis._component = component;\n\t\t\t\tthis._frame = 0;\n\t\t\t\tthis._sprite = null;\n\t\t\t\tthis._spriteAsset = null;\n\t\t\t\tthis.spriteAsset = data.spriteAsset;\n\t\t\t\tthis.name = data.name;\n\t\t\t\tthis.fps = data.fps || 0;\n\t\t\t\tthis.loop = data.loop || false;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis._time = 0;\n\t\t}\n\t\tget duration() {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tconst fps = this.fps || Number.MIN_VALUE;\n\t\t\t\t\t\treturn this._sprite.frameKeys.length / Math.abs(fps);\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n\t\tset frame(value) {\n\t\t\t\tthis._setFrame(value);\n\t\t\t\tconst fps = this.fps || Number.MIN_VALUE;\n\t\t\t\tthis._setTime(this._frame / fps);\n\t\t}\n\t\tget frame() {\n\t\t\t\treturn this._frame;\n\t\t}\n\t\tget isPaused() {\n\t\t\t\treturn this._paused;\n\t\t}\n\t\tget isPlaying() {\n\t\t\t\treturn this._playing;\n\t\t}\n\t\tset sprite(value) {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._evtSetMeshes?.off();\n\t\t\t\t\t\tthis._evtSetMeshes = null;\n\t\t\t\t\t\tthis._sprite.off('set:pixelsPerUnit', this._onSpritePpuChanged, this);\n\t\t\t\t\t\tthis._sprite.off('set:atlas', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\tif (this._sprite.atlas) {\n\t\t\t\t\t\t\t\tthis._sprite.atlas.off('set:texture', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._sprite = value;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._evtSetMeshes = this._sprite.on('set:meshes', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\tthis._sprite.on('set:pixelsPerUnit', this._onSpritePpuChanged, this);\n\t\t\t\t\t\tthis._sprite.on('set:atlas', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\tif (this._sprite.atlas) {\n\t\t\t\t\t\t\t\tthis._sprite.atlas.on('set:texture', this._onSpriteMeshesChange, this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tlet mi;\n\t\t\t\t\t\tif (!value || !value.atlas) {\n\t\t\t\t\t\t\t\tmi = this._component._meshInstance;\n\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\tmi.deleteParameter('texture_emissiveMap');\n\t\t\t\t\t\t\t\t\t\tmi.deleteParameter('texture_opacityMap');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._component._hideModel();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (value.atlas.texture) {\n\t\t\t\t\t\t\t\t\t\tmi = this._component._meshInstance;\n\t\t\t\t\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\t\t\t\t\tmi.setParameter('texture_emissiveMap', value.atlas.texture);\n\t\t\t\t\t\t\t\t\t\t\t\tmi.setParameter('texture_opacityMap', value.atlas.texture);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (this._component.enabled && this._component.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._component._showModel();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (this.time && this.fps) {\n\t\t\t\t\t\t\t\t\t\tthis.time = this.time;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.frame = this.frame;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget sprite() {\n\t\t\t\treturn this._sprite;\n\t\t}\n\t\tset spriteAsset(value) {\n\t\t\t\tconst assets = this._component.system.app.assets;\n\t\t\t\tlet id = value;\n\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\tid = value.id;\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset !== id) {\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tconst prev = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (prev) {\n\t\t\t\t\t\t\t\t\t\tthis._unbindSpriteAsset(prev);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._spriteAsset = id;\n\t\t\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\t\t\tconst asset = assets.get(this._spriteAsset);\n\t\t\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t\t\t\t\tassets.on(`add:${this._spriteAsset}`, this._onSpriteAssetAdded, this);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\treturn this._spriteAsset;\n\t\t}\n\t\tset time(value) {\n\t\t\t\tthis._setTime(value);\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis.frame = Math.min(this._sprite.frameKeys.length - 1, Math.floor(this._time * Math.abs(this.fps)));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.frame = 0;\n\t\t\t\t}\n\t\t}\n\t\tget time() {\n\t\t\t\treturn this._time;\n\t\t}\n\t\t_onSpriteAssetAdded(asset) {\n\t\t\t\tthis._component.system.app.assets.off(`add:${asset.id}`, this._onSpriteAssetAdded, this);\n\t\t\t\tif (this._spriteAsset === asset.id) {\n\t\t\t\t\t\tthis._bindSpriteAsset(asset);\n\t\t\t\t}\n\t\t}\n\t\t_bindSpriteAsset(asset) {\n\t\t\t\tasset.on('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.on('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._component.system.app.assets.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_unbindSpriteAsset(asset) {\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tasset.off('load', this._onSpriteAssetLoad, this);\n\t\t\t\tasset.off('remove', this._onSpriteAssetRemove, this);\n\t\t\t\tif (asset.resource && !asset.resource.atlas) {\n\t\t\t\t\t\tthis._component.system.app.assets.off(`load:${asset.data.textureAtlasAsset}`, this._onTextureAtlasLoad, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetLoad(asset) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!asset.resource.atlas) {\n\t\t\t\t\t\t\t\tconst atlasAssetId = asset.data.textureAtlasAsset;\n\t\t\t\t\t\t\t\tconst assets = this._component.system.app.assets;\n\t\t\t\t\t\t\t\tassets.off(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t\t\tassets.once(`load:${atlasAssetId}`, this._onTextureAtlasLoad, this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.sprite = asset.resource;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onTextureAtlasLoad(atlasAsset) {\n\t\t\t\tconst spriteAsset = this._spriteAsset;\n\t\t\t\tif (spriteAsset instanceof Asset) {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(spriteAsset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onSpriteAssetLoad(this._component.system.app.assets.get(spriteAsset));\n\t\t\t\t}\n\t\t}\n\t\t_onSpriteAssetRemove(asset) {\n\t\t\t\tthis.sprite = null;\n\t\t}\n\t\t_onSpriteMeshesChange() {\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tthis._component._showFrame(this.frame);\n\t\t\t\t}\n\t\t}\n\t\t_onSpritePpuChanged() {\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tif (this.sprite.renderMode !== SPRITE_RENDERMODE_SIMPLE) {\n\t\t\t\t\t\t\t\tthis._component._showFrame(this.frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_update(dt) {\n\t\t\t\tif (this.fps === 0) return;\n\t\t\t\tif (!this._playing || this._paused || !this._sprite) return;\n\t\t\t\tconst dir = this.fps < 0 ? -1 : 1;\n\t\t\t\tconst time = this._time + dt * this._component.speed * dir;\n\t\t\t\tconst duration = this.duration;\n\t\t\t\tconst end = time > duration || time < 0;\n\t\t\t\tthis._setTime(time);\n\t\t\t\tlet frame = this.frame;\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tframe = Math.floor(this._sprite.frameKeys.length * this._time / duration);\n\t\t\t\t} else {\n\t\t\t\t\t\tframe = 0;\n\t\t\t\t}\n\t\t\t\tif (frame !== this._frame) {\n\t\t\t\t\t\tthis._setFrame(frame);\n\t\t\t\t}\n\t\t\t\tif (end) {\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\tthis.fire('loop');\n\t\t\t\t\t\t\t\tthis._component.fire('loop', this);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._playing = false;\n\t\t\t\t\t\t\t\tthis._paused = false;\n\t\t\t\t\t\t\t\tthis.fire('end');\n\t\t\t\t\t\t\t\tthis._component.fire('end', this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_setTime(value) {\n\t\t\t\tthis._time = value;\n\t\t\t\tconst duration = this.duration;\n\t\t\t\tif (this._time < 0) {\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\tthis._time = this._time % duration + duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._time = 0;\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._time > duration) {\n\t\t\t\t\t\tif (this.loop) {\n\t\t\t\t\t\t\t\tthis._time %= duration;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._time = duration;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_setFrame(value) {\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis._frame = math.clamp(value, 0, this._sprite.frameKeys.length - 1);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._frame = value;\n\t\t\t\t}\n\t\t\t\tif (this._component.currentClip === this) {\n\t\t\t\t\t\tthis._component._showFrame(this._frame);\n\t\t\t\t}\n\t\t}\n\t\t_destroy() {\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tconst assets = this._component.system.app.assets;\n\t\t\t\t\t\tthis._unbindSpriteAsset(assets.get(this._spriteAsset));\n\t\t\t\t}\n\t\t\t\tif (this._sprite) {\n\t\t\t\t\t\tthis.sprite = null;\n\t\t\t\t}\n\t\t\t\tif (this._spriteAsset) {\n\t\t\t\t\t\tthis.spriteAsset = null;\n\t\t\t\t}\n\t\t}\n\t\tplay() {\n\t\t\t\tif (this._playing) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._playing = true;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis.frame = 0;\n\t\t\t\tthis.fire('play');\n\t\t\t\tthis._component.fire('play', this);\n\t\t}\n\t\tpause() {\n\t\t\t\tif (!this._playing || this._paused) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._paused = true;\n\t\t\t\tthis.fire('pause');\n\t\t\t\tthis._component.fire('pause', this);\n\t\t}\n\t\tresume() {\n\t\t\t\tif (!this._paused) return;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis.fire('resume');\n\t\t\t\tthis._component.fire('resume', this);\n\t\t}\n\t\tstop() {\n\t\t\t\tif (!this._playing) return;\n\t\t\t\tthis._playing = false;\n\t\t\t\tthis._paused = false;\n\t\t\t\tthis._time = 0;\n\t\t\t\tthis.frame = 0;\n\t\t\t\tthis.fire('stop');\n\t\t\t\tthis._component.fire('stop', this);\n\t\t}\n}\n\nconst PARAM_EMISSIVE_MAP = 'texture_emissiveMap';\nconst PARAM_OPACITY_MAP = 'texture_opacityMap';\nconst PARAM_EMISSIVE = 'material_emissive';\nconst PARAM_OPACITY = 'material_opacity';\nconst PARAM_INNER_OFFSET = 'innerOffset';\nconst PARAM_OUTER_SCALE = 'outerScale';\nconst PARAM_ATLAS_RECT = 'atlasRect';\nclass SpriteComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_PLAY = 'play';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PAUSE = 'pause';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESUME = 'resume';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STOP = 'stop';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_LOOP = 'loop';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._type = SPRITETYPE_SIMPLE;\n\t\t\t\tthis._material = system.defaultMaterial;\n\t\t\t\tthis._color = new Color(1, 1, 1, 1);\n\t\t\t\tthis._colorUniform = new Float32Array(3);\n\t\t\t\tthis._speed = 1;\n\t\t\t\tthis._flipX = false;\n\t\t\t\tthis._flipY = false;\n\t\t\t\tthis._width = 1;\n\t\t\t\tthis._height = 1;\n\t\t\t\tthis._drawOrder = 0;\n\t\t\t\tthis._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t];\n\t\t\t\tthis._outerScale = new Vec2(1, 1);\n\t\t\t\tthis._outerScaleUniform = new Float32Array(2);\n\t\t\t\tthis._innerOffset = new Vec4();\n\t\t\t\tthis._innerOffsetUniform = new Float32Array(4);\n\t\t\t\tthis._atlasRect = new Vec4();\n\t\t\t\tthis._atlasRectUniform = new Float32Array(4);\n\t\t\t\tthis._batchGroupId = -1;\n\t\t\t\tthis._batchGroup = null;\n\t\t\t\tthis._node = new GraphNode();\n\t\t\t\tthis._model = new Model();\n\t\t\t\tthis._model.graph = this._node;\n\t\t\t\tthis._meshInstance = null;\n\t\t\t\tentity.addChild(this._model.graph);\n\t\t\t\tthis._model._entity = entity;\n\t\t\t\tthis._updateAabbFunc = this._updateAabb.bind(this);\n\t\t\t\tthis._addedModel = false;\n\t\t\t\tthis._autoPlayClip = null;\n\t\t\t\tthis._clips = {};\n\t\t\t\tthis._defaultClip = new SpriteAnimationClip(this, {\n\t\t\t\t\t\tname: this.entity.name,\n\t\t\t\t\t\tfps: 0,\n\t\t\t\t\t\tloop: false,\n\t\t\t\t\t\tspriteAsset: null\n\t\t\t\t});\n\t\t\t\tthis._currentClip = this._defaultClip;\n\t\t}\n\t\tset type(value) {\n\t\t\t\tif (this._type === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._type = value;\n\t\t\t\tif (this._type === SPRITETYPE_SIMPLE) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tthis._currentClip = this._defaultClip;\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis._currentClip.frame = this.frame;\n\t\t\t\t\t\t\t\tif (this._currentClip.sprite) {\n\t\t\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else if (this._type === SPRITETYPE_ANIMATED) {\n\t\t\t\t\t\tthis.stop();\n\t\t\t\t\t\tif (this._autoPlayClip) {\n\t\t\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._currentClip && this._currentClip.isPlaying && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tset frame(value) {\n\t\t\t\tthis._currentClip.frame = value;\n\t\t}\n\t\tget frame() {\n\t\t\t\treturn this._currentClip.frame;\n\t\t}\n\t\tset spriteAsset(value) {\n\t\t\t\tthis._defaultClip.spriteAsset = value;\n\t\t}\n\t\tget spriteAsset() {\n\t\t\t\treturn this._defaultClip._spriteAsset;\n\t\t}\n\t\tset sprite(value) {\n\t\t\t\tthis._currentClip.sprite = value;\n\t\t}\n\t\tget sprite() {\n\t\t\t\treturn this._currentClip.sprite;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tthis._material = value;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.material = value;\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._material;\n\t\t}\n\t\tset color(value) {\n\t\t\t\tthis._color.r = value.r;\n\t\t\t\tthis._color.g = value.g;\n\t\t\t\tthis._color.b = value.b;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._colorUniform[0] = this._color.r;\n\t\t\t\t\t\tthis._colorUniform[1] = this._color.g;\n\t\t\t\t\t\tthis._colorUniform[2] = this._color.b;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_EMISSIVE, this._colorUniform);\n\t\t\t\t}\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._color;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tthis._color.a = value;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OPACITY, value);\n\t\t\t\t}\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this._color.a;\n\t\t}\n\t\tset clips(value) {\n\t\t\t\tif (!value) {\n\t\t\t\t\t\tfor(const name in this._clips){\n\t\t\t\t\t\t\t\tthis.removeClip(name);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(const name in this._clips){\n\t\t\t\t\t\tlet found = false;\n\t\t\t\t\t\tfor(const key in value){\n\t\t\t\t\t\t\t\tif (value[key].name === name) {\n\t\t\t\t\t\t\t\t\t\tfound = true;\n\t\t\t\t\t\t\t\t\t\tthis._clips[name].fps = value[key].fps;\n\t\t\t\t\t\t\t\t\t\tthis._clips[name].loop = value[key].loop;\n\t\t\t\t\t\t\t\t\t\tif (value[key].hasOwnProperty('sprite')) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._clips[name].sprite = value[key].sprite;\n\t\t\t\t\t\t\t\t\t\t} else if (value[key].hasOwnProperty('spriteAsset')) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._clips[name].spriteAsset = value[key].spriteAsset;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!found) {\n\t\t\t\t\t\t\t\tthis.removeClip(name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const key in value){\n\t\t\t\t\t\tif (this._clips[value[key].name]) continue;\n\t\t\t\t\t\tthis.addClip(value[key]);\n\t\t\t\t}\n\t\t\t\tif (this._autoPlayClip) {\n\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t}\n\t\t\t\tif (!this._currentClip || !this._currentClip.sprite) {\n\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t}\n\t\t}\n\t\tget clips() {\n\t\t\t\treturn this._clips;\n\t\t}\n\t\tget currentClip() {\n\t\t\t\treturn this._currentClip;\n\t\t}\n\t\tset speed(value) {\n\t\t\t\tthis._speed = value;\n\t\t}\n\t\tget speed() {\n\t\t\t\treturn this._speed;\n\t\t}\n\t\tset flipX(value) {\n\t\t\t\tif (this._flipX === value) return;\n\t\t\t\tthis._flipX = value;\n\t\t\t\tthis._updateTransform();\n\t\t}\n\t\tget flipX() {\n\t\t\t\treturn this._flipX;\n\t\t}\n\t\tset flipY(value) {\n\t\t\t\tif (this._flipY === value) return;\n\t\t\t\tthis._flipY = value;\n\t\t\t\tthis._updateTransform();\n\t\t}\n\t\tget flipY() {\n\t\t\t\treturn this._flipY;\n\t\t}\n\t\tset width(value) {\n\t\t\t\tif (value === this._width) return;\n\t\t\t\tthis._width = value;\n\t\t\t\tthis._outerScale.x = this._width;\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_TILED || this.sprite.renderMode === SPRITE_RENDERMODE_SLICED)) {\n\t\t\t\t\t\tthis._updateTransform();\n\t\t\t\t}\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tset height(value) {\n\t\t\t\tif (value === this._height) return;\n\t\t\t\tthis._height = value;\n\t\t\t\tthis._outerScale.y = this.height;\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_TILED || this.sprite.renderMode === SPRITE_RENDERMODE_SLICED)) {\n\t\t\t\t\t\tthis._updateTransform();\n\t\t\t\t}\n\t\t}\n\t\tget height() {\n\t\t\t\treturn this._height;\n\t\t}\n\t\tset batchGroupId(value) {\n\t\t\t\tif (this._batchGroupId === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst prev = this._batchGroupId;\n\t\t\t\tthis._batchGroupId = value;\n\t\t\t\tif (this.entity.enabled && prev >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.remove(BatchGroup.SPRITE, prev, this.entity);\n\t\t\t\t}\n\t\t\t\tif (this.entity.enabled && value >= 0) {\n\t\t\t\t\t\tthis.system.app.batcher?.insert(BatchGroup.SPRITE, value, this.entity);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (prev >= 0) {\n\t\t\t\t\t\t\t\tif (this._currentClip && this._currentClip.sprite && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget batchGroupId() {\n\t\t\t\treturn this._batchGroupId;\n\t\t}\n\t\tset autoPlayClip(value) {\n\t\t\t\tthis._autoPlayClip = value instanceof SpriteAnimationClip ? value.name : value;\n\t\t\t\tthis._tryAutoPlay();\n\t\t}\n\t\tget autoPlayClip() {\n\t\t\t\treturn this._autoPlayClip;\n\t\t}\n\t\tset drawOrder(value) {\n\t\t\t\tthis._drawOrder = value;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.drawOrder = value;\n\t\t\t\t}\n\t\t}\n\t\tget drawOrder() {\n\t\t\t\treturn this._drawOrder;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tif (this._addedModel) {\n\t\t\t\t\t\tthis._hideModel();\n\t\t\t\t}\n\t\t\t\tthis._layers = value;\n\t\t\t\tif (!this._meshInstance) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._showModel();\n\t\t\t\t}\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tget aabb() {\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\treturn this._meshInstance.aabb;\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this._onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this._onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this._onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tthis._showModel();\n\t\t\t\tif (this._autoPlayClip) {\n\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t}\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.insert(BatchGroup.SPRITE, this._batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst app = this.system.app;\n\t\t\t\tconst scene = app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.stop();\n\t\t\t\tthis._hideModel();\n\t\t\t\tif (this._batchGroupId >= 0) {\n\t\t\t\t\t\tapp.batcher?.remove(BatchGroup.SPRITE, this._batchGroupId, this.entity);\n\t\t\t\t}\n\t\t}\n\t\tonDestroy() {\n\t\t\t\tthis._currentClip = null;\n\t\t\t\tif (this._defaultClip) {\n\t\t\t\t\t\tthis._defaultClip._destroy();\n\t\t\t\t\t\tthis._defaultClip = null;\n\t\t\t\t}\n\t\t\t\tfor(const key in this._clips){\n\t\t\t\t\t\tthis._clips[key]._destroy();\n\t\t\t\t}\n\t\t\t\tthis._clips = null;\n\t\t\t\tthis._hideModel();\n\t\t\t\tthis._model = null;\n\t\t\t\tthis._node?.remove();\n\t\t\t\tthis._node = null;\n\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance.material = null;\n\t\t\t\t\t\tthis._meshInstance.mesh = null;\n\t\t\t\t\t\tthis._meshInstance = null;\n\t\t\t\t}\n\t\t}\n\t\t_showModel() {\n\t\t\t\tif (this._addedModel) return;\n\t\t\t\tif (!this._meshInstance) return;\n\t\t\t\tconst meshInstances = [\n\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t];\n\t\t\t\tfor(let i = 0, len = this._layers.length; i < len; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addMeshInstances(meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._addedModel = true;\n\t\t}\n\t\t_hideModel() {\n\t\t\t\tif (!this._addedModel || !this._meshInstance) return;\n\t\t\t\tconst meshInstances = [\n\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t];\n\t\t\t\tfor(let i = 0, len = this._layers.length; i < len; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this._layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeMeshInstances(meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._addedModel = false;\n\t\t}\n\t\t_showFrame(frame) {\n\t\t\t\tif (!this.sprite) return;\n\t\t\t\tconst mesh = this.sprite.meshes[frame];\n\t\t\t\tif (!mesh) {\n\t\t\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\t\t\tthis._meshInstance.mesh = null;\n\t\t\t\t\t\t\t\tthis._meshInstance.visible = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet material;\n\t\t\t\tif (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED) {\n\t\t\t\t\t\tmaterial = this.system.default9SlicedMaterialSlicedMode;\n\t\t\t\t} else if (this.sprite.renderMode === SPRITE_RENDERMODE_TILED) {\n\t\t\t\t\t\tmaterial = this.system.default9SlicedMaterialTiledMode;\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial = this.system.defaultMaterial;\n\t\t\t\t}\n\t\t\t\tif (!this._meshInstance) {\n\t\t\t\t\t\tthis._meshInstance = new MeshInstance(mesh, this._material, this._node);\n\t\t\t\t\t\tthis._meshInstance.castShadow = false;\n\t\t\t\t\t\tthis._meshInstance.receiveShadow = false;\n\t\t\t\t\t\tthis._meshInstance.drawOrder = this._drawOrder;\n\t\t\t\t\t\tthis._model.meshInstances.push(this._meshInstance);\n\t\t\t\t\t\tthis._colorUniform[0] = this._color.r;\n\t\t\t\t\t\tthis._colorUniform[1] = this._color.g;\n\t\t\t\t\t\tthis._colorUniform[2] = this._color.b;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_EMISSIVE, this._colorUniform);\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OPACITY, this._color.a);\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis._showModel();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._meshInstance.material !== material) {\n\t\t\t\t\t\tthis._meshInstance.material = material;\n\t\t\t\t}\n\t\t\t\tif (this._meshInstance.mesh !== mesh) {\n\t\t\t\t\t\tthis._meshInstance.mesh = mesh;\n\t\t\t\t\t\tthis._meshInstance.visible = true;\n\t\t\t\t\t\tthis._meshInstance._aabbVer = -1;\n\t\t\t\t}\n\t\t\t\tif (this.sprite.atlas && this.sprite.atlas.texture) {\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_EMISSIVE_MAP, this.sprite.atlas.texture);\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OPACITY_MAP, this.sprite.atlas.texture);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._meshInstance.deleteParameter(PARAM_EMISSIVE_MAP);\n\t\t\t\t\t\tthis._meshInstance.deleteParameter(PARAM_OPACITY_MAP);\n\t\t\t\t}\n\t\t\t\tif (this.sprite.atlas && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tthis._meshInstance._updateAabbFunc = this._updateAabbFunc;\n\t\t\t\t\t\tconst frameData = this.sprite.atlas.frames[this.sprite.frameKeys[frame]];\n\t\t\t\t\t\tif (frameData) {\n\t\t\t\t\t\t\t\tconst borderWidthScale = 2 / frameData.rect.z;\n\t\t\t\t\t\t\t\tconst borderHeightScale = 2 / frameData.rect.w;\n\t\t\t\t\t\t\t\tthis._innerOffset.set(frameData.border.x * borderWidthScale, frameData.border.y * borderHeightScale, frameData.border.z * borderWidthScale, frameData.border.w * borderHeightScale);\n\t\t\t\t\t\t\t\tconst tex = this.sprite.atlas.texture;\n\t\t\t\t\t\t\t\tthis._atlasRect.set(frameData.rect.x / tex.width, frameData.rect.y / tex.height, frameData.rect.z / tex.width, frameData.rect.w / tex.height);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._innerOffset.set(0, 0, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._innerOffsetUniform[0] = this._innerOffset.x;\n\t\t\t\t\t\tthis._innerOffsetUniform[1] = this._innerOffset.y;\n\t\t\t\t\t\tthis._innerOffsetUniform[2] = this._innerOffset.z;\n\t\t\t\t\t\tthis._innerOffsetUniform[3] = this._innerOffset.w;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_INNER_OFFSET, this._innerOffsetUniform);\n\t\t\t\t\t\tthis._atlasRectUniform[0] = this._atlasRect.x;\n\t\t\t\t\t\tthis._atlasRectUniform[1] = this._atlasRect.y;\n\t\t\t\t\t\tthis._atlasRectUniform[2] = this._atlasRect.z;\n\t\t\t\t\t\tthis._atlasRectUniform[3] = this._atlasRect.w;\n\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_ATLAS_RECT, this._atlasRectUniform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._meshInstance._updateAabbFunc = null;\n\t\t\t\t}\n\t\t\t\tthis._updateTransform();\n\t\t}\n\t\t_updateTransform() {\n\t\t\t\tlet scaleX = this.flipX ? -1 : 1;\n\t\t\t\tlet scaleY = this.flipY ? -1 : 1;\n\t\t\t\tlet posX = 0;\n\t\t\t\tlet posY = 0;\n\t\t\t\tif (this.sprite && (this.sprite.renderMode === SPRITE_RENDERMODE_SLICED || this.sprite.renderMode === SPRITE_RENDERMODE_TILED)) {\n\t\t\t\t\t\tlet w = 1;\n\t\t\t\t\t\tlet h = 1;\n\t\t\t\t\t\tif (this.sprite.atlas) {\n\t\t\t\t\t\t\t\tconst frameData = this.sprite.atlas.frames[this.sprite.frameKeys[this.frame]];\n\t\t\t\t\t\t\t\tif (frameData) {\n\t\t\t\t\t\t\t\t\t\tw = frameData.rect.z;\n\t\t\t\t\t\t\t\t\t\th = frameData.rect.w;\n\t\t\t\t\t\t\t\t\t\tposX = (0.5 - frameData.pivot.x) * this._width;\n\t\t\t\t\t\t\t\t\t\tposY = (0.5 - frameData.pivot.y) * this._height;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst scaleMulX = w / this.sprite.pixelsPerUnit;\n\t\t\t\t\t\tconst scaleMulY = h / this.sprite.pixelsPerUnit;\n\t\t\t\t\t\tthis._outerScale.set(Math.max(this._width, this._innerOffset.x * scaleMulX), Math.max(this._height, this._innerOffset.y * scaleMulY));\n\t\t\t\t\t\tscaleX *= scaleMulX;\n\t\t\t\t\t\tscaleY *= scaleMulY;\n\t\t\t\t\t\tthis._outerScale.x /= scaleMulX;\n\t\t\t\t\t\tthis._outerScale.y /= scaleMulY;\n\t\t\t\t\t\tscaleX *= math.clamp(this._width / (this._innerOffset.x * scaleMulX), 0.0001, 1);\n\t\t\t\t\t\tscaleY *= math.clamp(this._height / (this._innerOffset.y * scaleMulY), 0.0001, 1);\n\t\t\t\t\t\tif (this._meshInstance) {\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[0] = this._outerScale.x;\n\t\t\t\t\t\t\t\tthis._outerScaleUniform[1] = this._outerScale.y;\n\t\t\t\t\t\t\t\tthis._meshInstance.setParameter(PARAM_OUTER_SCALE, this._outerScaleUniform);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._node.setLocalScale(scaleX, scaleY, 1);\n\t\t\t\tthis._node.setLocalPosition(posX, posY, 0);\n\t\t}\n\t\t_updateAabb(aabb) {\n\t\t\t\taabb.center.set(0, 0, 0);\n\t\t\t\taabb.halfExtents.set(this._outerScale.x * 0.5, this._outerScale.y * 0.5, 0.001);\n\t\t\t\taabb.setFromTransformedAabb(aabb, this._node.getWorldTransform());\n\t\t\t\treturn aabb;\n\t\t}\n\t\t_tryAutoPlay() {\n\t\t\t\tif (!this._autoPlayClip) return;\n\t\t\t\tif (this.type !== SPRITETYPE_ANIMATED) return;\n\t\t\t\tconst clip = this._clips[this._autoPlayClip];\n\t\t\t\tif (clip && !clip.isPlaying && (!this._currentClip || !this._currentClip.isPlaying)) {\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.play(clip.name);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onLayersChanged(oldComp, newComp) {\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis._showModel();\n\t\t\t\t}\n\t\t}\n\t\t_onLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._addedModel && this.enabled && this.entity.enabled && this._meshInstance) {\n\t\t\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\t_onLayerRemoved(layer) {\n\t\t\t\tif (!this._meshInstance) return;\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t]);\n\t\t}\n\t\tremoveModelFromLayers() {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\tlayer.removeMeshInstances([\n\t\t\t\t\t\t\t\tthis._meshInstance\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\taddClip(data) {\n\t\t\t\tconst clip = new SpriteAnimationClip(this, {\n\t\t\t\t\t\tname: data.name,\n\t\t\t\t\t\tfps: data.fps,\n\t\t\t\t\t\tloop: data.loop,\n\t\t\t\t\t\tspriteAsset: data.spriteAsset\n\t\t\t\t});\n\t\t\t\tthis._clips[data.name] = clip;\n\t\t\t\tif (clip.name && clip.name === this._autoPlayClip) {\n\t\t\t\t\t\tthis._tryAutoPlay();\n\t\t\t\t}\n\t\t\t\treturn clip;\n\t\t}\n\t\tremoveClip(name) {\n\t\t\t\tdelete this._clips[name];\n\t\t}\n\t\tclip(name) {\n\t\t\t\treturn this._clips[name];\n\t\t}\n\t\tplay(name) {\n\t\t\t\tconst clip = this._clips[name];\n\t\t\t\tconst current = this._currentClip;\n\t\t\t\tif (current && current !== clip) {\n\t\t\t\t\t\tcurrent._playing = false;\n\t\t\t\t}\n\t\t\t\tthis._currentClip = clip;\n\t\t\t\tif (this._currentClip) {\n\t\t\t\t\t\tthis._currentClip = clip;\n\t\t\t\t\t\tthis._currentClip.play();\n\t\t\t\t}\n\t\t\t\treturn clip;\n\t\t}\n\t\tpause() {\n\t\t\t\tif (this._currentClip === this._defaultClip) return;\n\t\t\t\tif (this._currentClip.isPlaying) {\n\t\t\t\t\t\tthis._currentClip.pause();\n\t\t\t\t}\n\t\t}\n\t\tresume() {\n\t\t\t\tif (this._currentClip === this._defaultClip) return;\n\t\t\t\tif (this._currentClip.isPaused) {\n\t\t\t\t\t\tthis._currentClip.resume();\n\t\t\t\t}\n\t\t}\n\t\tstop() {\n\t\t\t\tif (this._currentClip === this._defaultClip) return;\n\t\t\t\tthis._currentClip.stop();\n\t\t}\n}\n\nclass SpriteComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$3 = [\n\t\t'enabled'\n];\nclass SpriteComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'sprite';\n\t\t\t\tthis.ComponentType = SpriteComponent;\n\t\t\t\tthis.DataType = SpriteComponentData;\n\t\t\t\tthis.schema = _schema$3;\n\t\t\t\tthis._defaultTexture = null;\n\t\t\t\tthis._defaultMaterial = null;\n\t\t\t\tthis._default9SlicedMaterialSlicedMode = null;\n\t\t\t\tthis._default9SlicedMaterialTiledMode = null;\n\t\t\t\tthis.app.systems.on('update', this.onUpdate, this);\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t}\n\t\tset defaultMaterial(material) {\n\t\t\t\tthis._defaultMaterial = material;\n\t\t}\n\t\tget defaultMaterial() {\n\t\t\t\tif (!this._defaultMaterial) {\n\t\t\t\t\t\tconst texture = new Texture(this.app.graphicsDevice, {\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\t\t\tname: 'sprite'\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst pixels = new Uint8Array(texture.lock());\n\t\t\t\t\t\tpixels[0] = pixels[1] = pixels[2] = pixels[3] = 255;\n\t\t\t\t\t\ttexture.unlock();\n\t\t\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\t\t\tmaterial.diffuse.set(0, 0, 0);\n\t\t\t\t\t\tmaterial.emissive.set(1, 1, 1);\n\t\t\t\t\t\tmaterial.emissiveMap = texture;\n\t\t\t\t\t\tmaterial.opacityMap = texture;\n\t\t\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\t\t\tmaterial.useLighting = false;\n\t\t\t\t\t\tmaterial.useTonemap = false;\n\t\t\t\t\t\tmaterial.useFog = false;\n\t\t\t\t\t\tmaterial.useSkybox = false;\n\t\t\t\t\t\tmaterial.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\t\t\tmaterial.pixelSnap = false;\n\t\t\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\tthis._defaultTexture = texture;\n\t\t\t\t\t\tthis._defaultMaterial = material;\n\t\t\t\t}\n\t\t\t\treturn this._defaultMaterial;\n\t\t}\n\t\tset default9SlicedMaterialSlicedMode(material) {\n\t\t\t\tthis._default9SlicedMaterialSlicedMode = material;\n\t\t}\n\t\tget default9SlicedMaterialSlicedMode() {\n\t\t\t\tif (!this._default9SlicedMaterialSlicedMode) {\n\t\t\t\t\t\tconst material = this.defaultMaterial.clone();\n\t\t\t\t\t\tmaterial.nineSlicedMode = SPRITE_RENDERMODE_SLICED;\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\tthis._default9SlicedMaterialSlicedMode = material;\n\t\t\t\t}\n\t\t\t\treturn this._default9SlicedMaterialSlicedMode;\n\t\t}\n\t\tset default9SlicedMaterialTiledMode(material) {\n\t\t\t\tthis._default9SlicedMaterialTiledMode = material;\n\t\t}\n\t\tget default9SlicedMaterialTiledMode() {\n\t\t\t\tif (!this._default9SlicedMaterialTiledMode) {\n\t\t\t\t\t\tconst material = this.defaultMaterial.clone();\n\t\t\t\t\t\tmaterial.nineSlicedMode = SPRITE_RENDERMODE_TILED;\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\tthis._default9SlicedMaterialTiledMode = material;\n\t\t\t\t}\n\t\t\t\treturn this._default9SlicedMaterialTiledMode;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('update', this.onUpdate, this);\n\t\t\t\tif (this._defaultTexture) {\n\t\t\t\t\t\tthis._defaultTexture.destroy();\n\t\t\t\t\t\tthis._defaultTexture = null;\n\t\t\t\t}\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tif (data.enabled !== undefined) {\n\t\t\t\t\t\tcomponent.enabled = data.enabled;\n\t\t\t\t}\n\t\t\t\tcomponent.type = data.type;\n\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\tcomponent.layers = data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tif (data.drawOrder !== undefined) {\n\t\t\t\t\t\tcomponent.drawOrder = data.drawOrder;\n\t\t\t\t}\n\t\t\t\tif (data.color !== undefined) {\n\t\t\t\t\t\tif (data.color instanceof Color) {\n\t\t\t\t\t\t\t\tcomponent.color.set(data.color.r, data.color.g, data.color.b, data.opacity ?? 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomponent.color.set(data.color[0], data.color[1], data.color[2], data.opacity ?? 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcomponent.color = component.color;\n\t\t\t\t}\n\t\t\t\tif (data.opacity !== undefined) {\n\t\t\t\t\t\tcomponent.opacity = data.opacity;\n\t\t\t\t}\n\t\t\t\tif (data.flipX !== undefined) {\n\t\t\t\t\t\tcomponent.flipX = data.flipX;\n\t\t\t\t}\n\t\t\t\tif (data.flipY !== undefined) {\n\t\t\t\t\t\tcomponent.flipY = data.flipY;\n\t\t\t\t}\n\t\t\t\tif (data.width !== undefined) {\n\t\t\t\t\t\tcomponent.width = data.width;\n\t\t\t\t}\n\t\t\t\tif (data.height !== undefined) {\n\t\t\t\t\t\tcomponent.height = data.height;\n\t\t\t\t}\n\t\t\t\tif (data.spriteAsset !== undefined) {\n\t\t\t\t\t\tcomponent.spriteAsset = data.spriteAsset;\n\t\t\t\t}\n\t\t\t\tif (data.sprite) {\n\t\t\t\t\t\tcomponent.sprite = data.sprite;\n\t\t\t\t}\n\t\t\t\tif (data.frame !== undefined) {\n\t\t\t\t\t\tcomponent.frame = data.frame;\n\t\t\t\t}\n\t\t\t\tif (data.clips) {\n\t\t\t\t\t\tfor(const name in data.clips){\n\t\t\t\t\t\t\t\tcomponent.addClip(data.clips[name]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (data.speed !== undefined) {\n\t\t\t\t\t\tcomponent.speed = data.speed;\n\t\t\t\t}\n\t\t\t\tif (data.autoPlayClip) {\n\t\t\t\t\t\tcomponent.autoPlayClip = data.autoPlayClip;\n\t\t\t\t}\n\t\t\t\tcomponent.batchGroupId = data.batchGroupId === undefined || data.batchGroupId === null ? -1 : data.batchGroupId;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst source = entity.sprite;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\tenabled: source.enabled,\n\t\t\t\t\t\ttype: source.type,\n\t\t\t\t\t\tspriteAsset: source.spriteAsset,\n\t\t\t\t\t\tsprite: source.sprite,\n\t\t\t\t\t\twidth: source.width,\n\t\t\t\t\t\theight: source.height,\n\t\t\t\t\t\tframe: source.frame,\n\t\t\t\t\t\tcolor: source.color.clone(),\n\t\t\t\t\t\topacity: source.opacity,\n\t\t\t\t\t\tflipX: source.flipX,\n\t\t\t\t\t\tflipY: source.flipY,\n\t\t\t\t\t\tspeed: source.speed,\n\t\t\t\t\t\tclips: source.clips,\n\t\t\t\t\t\tautoPlayClip: source.autoPlayClip,\n\t\t\t\t\t\tbatchGroupId: source.batchGroupId,\n\t\t\t\t\t\tdrawOrder: source.drawOrder,\n\t\t\t\t\t\tlayers: source.layers.slice(0)\n\t\t\t\t});\n\t\t}\n\t\tonUpdate(dt) {\n\t\t\t\tconst components = this.store;\n\t\t\t\tfor(const id in components){\n\t\t\t\t\t\tif (components.hasOwnProperty(id)) {\n\t\t\t\t\t\t\t\tconst component = components[id];\n\t\t\t\t\t\t\t\tif (component.data.enabled && component.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tconst sprite = component.entity.sprite;\n\t\t\t\t\t\t\t\t\t\tif (sprite._currentClip) {\n\t\t\t\t\t\t\t\t\t\t\t\tsprite._currentClip._update(dt);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tcomponent.onDestroy();\n\t\t}\n}\nComponent._buildAccessors(SpriteComponent.prototype, _schema$3);\n\nclass ZoneComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ENABLE = 'enable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DISABLE = 'disable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STATE = 'state';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity);\n\t\t\t\tthis._oldState = true;\n\t\t\t\tthis._size = new Vec3();\n\t\t\t\tthis.on('set_enabled', this._onSetEnabled, this);\n\t\t}\n\t\tset size(data) {\n\t\t\t\tif (data instanceof Vec3) {\n\t\t\t\t\t\tthis._size.copy(data);\n\t\t\t\t} else if (data instanceof Array && data.length >= 3) {\n\t\t\t\t\t\tthis.size.set(data[0], data[1], data[2]);\n\t\t\t\t}\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\t_onSetEnabled(prop, old, value) {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\t_checkState() {\n\t\t\t\tconst state = this.enabled && this.entity.enabled;\n\t\t\t\tif (state === this._oldState) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._oldState = state;\n\t\t\t\tthis.fire('enable');\n\t\t\t\tthis.fire('state', this.enabled);\n\t\t}\n\t\t_onBeforeRemove() {\n\t\t\t\tthis.fire('remove');\n\t\t}\n}\n\nclass ZoneComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$2 = [\n\t\t'enabled'\n];\nclass ZoneComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'zone';\n\t\t\t\tthis.ComponentType = ZoneComponent;\n\t\t\t\tthis.DataType = ZoneComponentData;\n\t\t\t\tthis.schema = _schema$2;\n\t\t\t\tthis.on('beforeremove', this._onBeforeRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tcomponent.enabled = data.hasOwnProperty('enabled') ? !!data.enabled : true;\n\t\t\t\tif (data.size) {\n\t\t\t\t\t\tif (data.size instanceof Vec3) {\n\t\t\t\t\t\t\t\tcomponent.size.copy(data.size);\n\t\t\t\t\t\t} else if (data.size instanceof Array && data.size.length >= 3) {\n\t\t\t\t\t\t\t\tcomponent.size.set(data.size[0], data.size[1], data.size[2]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: entity.zone.enabled,\n\t\t\t\t\t\tsize: entity.zone.size\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\t_onBeforeRemove(entity, component) {\n\t\t\t\tcomponent._onBeforeRemove();\n\t\t}\n}\nComponent._buildAccessors(ZoneComponent.prototype, _schema$2);\n\nclass PostEffectEntry {\n\t\tconstructor(effect, inputTarget){\n\t\t\t\tthis.effect = effect;\n\t\t\t\tthis.inputTarget = inputTarget;\n\t\t\t\tthis.outputTarget = null;\n\t\t\t\tthis.name = effect.constructor.name;\n\t\t}\n}\nclass PostEffectQueue {\n\t\tconstructor(app, camera){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.destinationRenderTarget = null;\n\t\t\t\tthis.effects = [];\n\t\t\t\tthis.enabled = false;\n\t\t\t\tthis.depthTarget = null;\n\t\t\t\tcamera.on('set:rect', this.onCameraRectChanged, this);\n\t\t}\n\t\t_allocateColorBuffer(format, name) {\n\t\t\t\tconst rect = this.camera.rect;\n\t\t\t\tconst renderTarget = this.destinationRenderTarget;\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst width = Math.floor(rect.z * (renderTarget?.width ?? device.width));\n\t\t\t\tconst height = Math.floor(rect.w * (renderTarget?.height ?? device.height));\n\t\t\t\tconst colorBuffer = new Texture(device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\treturn colorBuffer;\n\t\t}\n\t\t_createOffscreenTarget(useDepth, hdr) {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst outputRt = this.destinationRenderTarget ?? device.backBuffer;\n\t\t\t\tconst srgb = outputRt.isColorBufferSrgb(0);\n\t\t\t\tconst format = (hdr && device.getRenderableHdrFormat([\n\t\t\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\t\t\tPIXELFORMAT_RGBA32F\n\t\t\t\t], true)) ?? (srgb ? PIXELFORMAT_SRGBA8 : PIXELFORMAT_RGBA8);\n\t\t\t\tconst name = `${this.camera.entity.name}-posteffect-${this.effects.length}`;\n\t\t\t\tconst colorBuffer = this._allocateColorBuffer(format, name);\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: colorBuffer,\n\t\t\t\t\t\tdepth: useDepth,\n\t\t\t\t\t\tstencil: useDepth && this.app.graphicsDevice.supportsStencil,\n\t\t\t\t\t\tsamples: useDepth ? device.samples : 1\n\t\t\t\t});\n\t\t}\n\t\t_resizeOffscreenTarget(rt) {\n\t\t\t\tconst format = rt.colorBuffer.format;\n\t\t\t\tconst name = rt.colorBuffer.name;\n\t\t\t\trt.destroyFrameBuffers();\n\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\trt._colorBuffer = this._allocateColorBuffer(format, name);\n\t\t\t\trt._colorBuffers = [\n\t\t\t\t\t\trt._colorBuffer\n\t\t\t\t];\n\t\t}\n\t\t_destroyOffscreenTarget(rt) {\n\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\trt.destroy();\n\t\t}\n\t\taddEffect(effect) {\n\t\t\t\tconst effects = this.effects;\n\t\t\t\tconst isFirstEffect = effects.length === 0;\n\t\t\t\tconst inputTarget = this._createOffscreenTarget(isFirstEffect, effect.hdr);\n\t\t\t\tconst newEntry = new PostEffectEntry(effect, inputTarget);\n\t\t\t\teffects.push(newEntry);\n\t\t\t\tthis._sourceTarget = newEntry.inputTarget;\n\t\t\t\tif (effects.length > 1) {\n\t\t\t\t\t\teffects[effects.length - 2].outputTarget = newEntry.inputTarget;\n\t\t\t\t}\n\t\t\t\tthis._newPostEffect = effect;\n\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\tthis._requestDepthMap();\n\t\t\t\t}\n\t\t\t\tthis.enable();\n\t\t\t\tthis._newPostEffect = undefined;\n\t\t}\n\t\tremoveEffect(effect) {\n\t\t\t\tlet index = -1;\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tif (this.effects[i].effect === effect) {\n\t\t\t\t\t\t\t\tindex = i;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\t\t\tthis.effects[index - 1].outputTarget = index + 1 < this.effects.length ? this.effects[index + 1].inputTarget : null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (this.effects.length > 1) {\n\t\t\t\t\t\t\t\t\t\tif (!this.effects[1].inputTarget._depth) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._destroyOffscreenTarget(this.effects[1].inputTarget);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.effects[1].inputTarget = this._createOffscreenTarget(true, this.effects[1].hdr);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._sourceTarget = this.effects[1].inputTarget;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.camera.renderTarget = this.effects[1].inputTarget;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._destroyOffscreenTarget(this.effects[index].inputTarget);\n\t\t\t\t\t\tthis.effects.splice(index, 1);\n\t\t\t\t}\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\t\t\tthis._releaseDepthMap();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.effects.length === 0) {\n\t\t\t\t\t\tthis.disable();\n\t\t\t\t}\n\t\t}\n\t\t_requestDepthMaps() {\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tconst effect = this.effects[i].effect;\n\t\t\t\t\t\tif (this._newPostEffect === effect) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\t\t\tthis._requestDepthMap();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_releaseDepthMaps() {\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tconst effect = this.effects[i].effect;\n\t\t\t\t\t\tif (effect.needsDepthBuffer) {\n\t\t\t\t\t\t\t\tthis._releaseDepthMap();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_requestDepthMap() {\n\t\t\t\tconst depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.incrementCounter();\n\t\t\t\t\t\tthis.camera.requestSceneDepthMap(true);\n\t\t\t\t}\n\t\t}\n\t\t_releaseDepthMap() {\n\t\t\t\tconst depthLayer = this.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\tif (depthLayer) {\n\t\t\t\t\t\tdepthLayer.decrementCounter();\n\t\t\t\t\t\tthis.camera.requestSceneDepthMap(false);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tfor(let i = 0, len = this.effects.length; i < len; i++){\n\t\t\t\t\t\tthis.effects[i].inputTarget.destroy();\n\t\t\t\t}\n\t\t\t\tthis.effects.length = 0;\n\t\t\t\tthis.disable();\n\t\t}\n\t\tenable() {\n\t\t\t\tif (!this.enabled && this.effects.length) {\n\t\t\t\t\t\tthis.enabled = true;\n\t\t\t\t\t\tthis._requestDepthMaps();\n\t\t\t\t\t\tthis.app.graphicsDevice.on('resizecanvas', this._onCanvasResized, this);\n\t\t\t\t\t\tthis.destinationRenderTarget = this.camera.renderTarget;\n\t\t\t\t\t\tthis.camera.renderTarget = this.effects[0].inputTarget;\n\t\t\t\t\t\tthis.camera.onPostprocessing = ()=>{\n\t\t\t\t\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\t\t\t\t\tlet rect = null;\n\t\t\t\t\t\t\t\t\t\tconst len = this.effects.length;\n\t\t\t\t\t\t\t\t\t\tif (len) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst fx = this.effects[i];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet destTarget = fx.outputTarget;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (i === len - 1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\trect = this.camera.rect;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (this.destinationRenderTarget) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdestTarget = this.destinationRenderTarget;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfx.effect.render(fx.inputTarget, destTarget, rect);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tdisable() {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tthis.enabled = false;\n\t\t\t\t\t\tthis.app.graphicsDevice.off('resizecanvas', this._onCanvasResized, this);\n\t\t\t\t\t\tthis._releaseDepthMaps();\n\t\t\t\t\t\tthis._destroyOffscreenTarget(this._sourceTarget);\n\t\t\t\t\t\tthis.camera.renderTarget = this.destinationRenderTarget;\n\t\t\t\t\t\tthis.camera.onPostprocessing = null;\n\t\t\t\t}\n\t\t}\n\t\t_onCanvasResized(width, height) {\n\t\t\t\tconst rect = this.camera.rect;\n\t\t\t\tconst renderTarget = this.destinationRenderTarget;\n\t\t\t\twidth = renderTarget?.width ?? width;\n\t\t\t\theight = renderTarget?.height ?? height;\n\t\t\t\tthis.camera.camera.aspectRatio = width * rect.z / (height * rect.w);\n\t\t\t\tthis.resizeRenderTargets();\n\t\t}\n\t\tresizeRenderTargets() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst renderTarget = this.destinationRenderTarget;\n\t\t\t\tconst width = renderTarget?.width ?? device.width;\n\t\t\t\tconst height = renderTarget?.height ?? device.height;\n\t\t\t\tconst rect = this.camera.rect;\n\t\t\t\tconst desiredWidth = Math.floor(rect.z * width);\n\t\t\t\tconst desiredHeight = Math.floor(rect.w * height);\n\t\t\t\tconst effects = this.effects;\n\t\t\t\tfor(let i = 0, len = effects.length; i < len; i++){\n\t\t\t\t\t\tconst fx = effects[i];\n\t\t\t\t\t\tif (fx.inputTarget.width !== desiredWidth || fx.inputTarget.height !== desiredHeight) {\n\t\t\t\t\t\t\t\tthis._resizeOffscreenTarget(fx.inputTarget);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonCameraRectChanged(name, oldValue, newValue) {\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tthis.resizeRenderTargets();\n\t\t\t\t}\n\t\t}\n}\n\nclass CameraComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this.onPostprocessing = null, this._renderSceneDepthMap = 0, this._renderSceneColorMap = 0, this._sceneDepthMapRequested = false, this._sceneColorMapRequested = false, this._priority = 0, this._disablePostEffectsLayer = LAYERID_UI, this._camera = new Camera(), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null;\n\t\t\t\tthis._camera.node = entity;\n\t\t\t\tthis._postEffects = new PostEffectQueue(system.app, this);\n\t\t}\n\t\tsetShaderPass(name) {\n\t\t\t\tconst shaderPass = ShaderPass.get(this.system.app.graphicsDevice);\n\t\t\t\tconst shaderPassInfo = name ? shaderPass.allocate(name, {\n\t\t\t\t\t\tisForward: true\n\t\t\t\t}) : null;\n\t\t\t\tthis._camera.shaderPassInfo = shaderPassInfo;\n\t\t\t\treturn shaderPassInfo.index;\n\t\t}\n\t\tgetShaderPass() {\n\t\t\t\treturn this._camera.shaderPassInfo?.name;\n\t\t}\n\t\tset renderPasses(passes) {\n\t\t\t\tthis._camera.renderPasses = passes || [];\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t\t\tthis.system.app.scene.updateShaders = true;\n\t\t}\n\t\tget renderPasses() {\n\t\t\t\treturn this._camera.renderPasses;\n\t\t}\n\t\tget shaderParams() {\n\t\t\t\treturn this._camera.shaderParams;\n\t\t}\n\t\tset gammaCorrection(value) {\n\t\t\t\tthis.camera.shaderParams.gammaCorrection = value;\n\t\t}\n\t\tget gammaCorrection() {\n\t\t\t\treturn this.camera.shaderParams.gammaCorrection;\n\t\t}\n\t\tset toneMapping(value) {\n\t\t\t\tthis.camera.shaderParams.toneMapping = value;\n\t\t}\n\t\tget toneMapping() {\n\t\t\t\treturn this.camera.shaderParams.toneMapping;\n\t\t}\n\t\tset fog(value) {\n\t\t\t\tthis._camera.fogParams = value;\n\t\t}\n\t\tget fog() {\n\t\t\t\treturn this._camera.fogParams;\n\t\t}\n\t\tset aperture(value) {\n\t\t\t\tthis._camera.aperture = value;\n\t\t}\n\t\tget aperture() {\n\t\t\t\treturn this._camera.aperture;\n\t\t}\n\t\tset aspectRatio(value) {\n\t\t\t\tthis._camera.aspectRatio = value;\n\t\t}\n\t\tget aspectRatio() {\n\t\t\t\treturn this._camera.aspectRatio;\n\t\t}\n\t\tset aspectRatioMode(value) {\n\t\t\t\tthis._camera.aspectRatioMode = value;\n\t\t}\n\t\tget aspectRatioMode() {\n\t\t\t\treturn this._camera.aspectRatioMode;\n\t\t}\n\t\tset calculateProjection(value) {\n\t\t\t\tthis._camera.calculateProjection = value;\n\t\t}\n\t\tget calculateProjection() {\n\t\t\t\treturn this._camera.calculateProjection;\n\t\t}\n\t\tset calculateTransform(value) {\n\t\t\t\tthis._camera.calculateTransform = value;\n\t\t}\n\t\tget calculateTransform() {\n\t\t\t\treturn this._camera.calculateTransform;\n\t\t}\n\t\tget camera() {\n\t\t\t\treturn this._camera;\n\t\t}\n\t\tset clearColor(value) {\n\t\t\t\tthis._camera.clearColor = value;\n\t\t}\n\t\tget clearColor() {\n\t\t\t\treturn this._camera.clearColor;\n\t\t}\n\t\tset clearColorBuffer(value) {\n\t\t\t\tthis._camera.clearColorBuffer = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget clearColorBuffer() {\n\t\t\t\treturn this._camera.clearColorBuffer;\n\t\t}\n\t\tset clearDepth(value) {\n\t\t\t\tthis._camera.clearDepth = value;\n\t\t}\n\t\tget clearDepth() {\n\t\t\t\treturn this._camera.clearDepth;\n\t\t}\n\t\tset clearDepthBuffer(value) {\n\t\t\t\tthis._camera.clearDepthBuffer = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget clearDepthBuffer() {\n\t\t\t\treturn this._camera.clearDepthBuffer;\n\t\t}\n\t\tset clearStencilBuffer(value) {\n\t\t\t\tthis._camera.clearStencilBuffer = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget clearStencilBuffer() {\n\t\t\t\treturn this._camera.clearStencilBuffer;\n\t\t}\n\t\tset cullFaces(value) {\n\t\t\t\tthis._camera.cullFaces = value;\n\t\t}\n\t\tget cullFaces() {\n\t\t\t\treturn this._camera.cullFaces;\n\t\t}\n\t\tset disablePostEffectsLayer(layer) {\n\t\t\t\tthis._disablePostEffectsLayer = layer;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget disablePostEffectsLayer() {\n\t\t\t\treturn this._disablePostEffectsLayer;\n\t\t}\n\t\tset farClip(value) {\n\t\t\t\tthis._camera.farClip = value;\n\t\t}\n\t\tget farClip() {\n\t\t\t\treturn this._camera.farClip;\n\t\t}\n\t\tset flipFaces(value) {\n\t\t\t\tthis._camera.flipFaces = value;\n\t\t}\n\t\tget flipFaces() {\n\t\t\t\treturn this._camera.flipFaces;\n\t\t}\n\t\tset fov(value) {\n\t\t\t\tthis._camera.fov = value;\n\t\t}\n\t\tget fov() {\n\t\t\t\treturn this._camera.fov;\n\t\t}\n\t\tget frustum() {\n\t\t\t\treturn this._camera.frustum;\n\t\t}\n\t\tset frustumCulling(value) {\n\t\t\t\tthis._camera.frustumCulling = value;\n\t\t}\n\t\tget frustumCulling() {\n\t\t\t\treturn this._camera.frustumCulling;\n\t\t}\n\t\tset horizontalFov(value) {\n\t\t\t\tthis._camera.horizontalFov = value;\n\t\t}\n\t\tget horizontalFov() {\n\t\t\t\treturn this._camera.horizontalFov;\n\t\t}\n\t\tset layers(newValue) {\n\t\t\t\tconst oldLayers = this._camera.layers;\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\toldLayers.forEach((layerId)=>{\n\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layerId);\n\t\t\t\t\t\tlayer?.removeCamera(this);\n\t\t\t\t});\n\t\t\t\tthis._camera.layers = newValue;\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tnewValue.forEach((layerId)=>{\n\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layerId);\n\t\t\t\t\t\t\t\tlayer?.addCamera(this);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.fire('set:layers');\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._camera.layers;\n\t\t}\n\t\tget layersSet() {\n\t\t\t\treturn this._camera.layersSet;\n\t\t}\n\t\tset jitter(value) {\n\t\t\t\tthis._camera.jitter = value;\n\t\t}\n\t\tget jitter() {\n\t\t\t\treturn this._camera.jitter;\n\t\t}\n\t\tset nearClip(value) {\n\t\t\t\tthis._camera.nearClip = value;\n\t\t}\n\t\tget nearClip() {\n\t\t\t\treturn this._camera.nearClip;\n\t\t}\n\t\tset orthoHeight(value) {\n\t\t\t\tthis._camera.orthoHeight = value;\n\t\t}\n\t\tget orthoHeight() {\n\t\t\t\treturn this._camera.orthoHeight;\n\t\t}\n\t\tget postEffects() {\n\t\t\t\treturn this._postEffects;\n\t\t}\n\t\tget postEffectsEnabled() {\n\t\t\t\treturn this._postEffects.enabled;\n\t\t}\n\t\tset priority(newValue) {\n\t\t\t\tthis._priority = newValue;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n\t\tset projection(value) {\n\t\t\t\tthis._camera.projection = value;\n\t\t}\n\t\tget projection() {\n\t\t\t\treturn this._camera.projection;\n\t\t}\n\t\tget projectionMatrix() {\n\t\t\t\treturn this._camera.projectionMatrix;\n\t\t}\n\t\tset rect(value) {\n\t\t\t\tthis._camera.rect = value;\n\t\t\t\tthis.fire('set:rect', this._camera.rect);\n\t\t}\n\t\tget rect() {\n\t\t\t\treturn this._camera.rect;\n\t\t}\n\t\tset renderSceneColorMap(value) {\n\t\t\t\tif (value && !this._sceneColorMapRequested) {\n\t\t\t\t\t\tthis.requestSceneColorMap(true);\n\t\t\t\t\t\tthis._sceneColorMapRequested = true;\n\t\t\t\t} else if (this._sceneColorMapRequested) {\n\t\t\t\t\t\tthis.requestSceneColorMap(false);\n\t\t\t\t\t\tthis._sceneColorMapRequested = false;\n\t\t\t\t}\n\t\t}\n\t\tget renderSceneColorMap() {\n\t\t\t\treturn this._renderSceneColorMap > 0;\n\t\t}\n\t\tset renderSceneDepthMap(value) {\n\t\t\t\tif (value && !this._sceneDepthMapRequested) {\n\t\t\t\t\t\tthis.requestSceneDepthMap(true);\n\t\t\t\t\t\tthis._sceneDepthMapRequested = true;\n\t\t\t\t} else if (this._sceneDepthMapRequested) {\n\t\t\t\t\t\tthis.requestSceneDepthMap(false);\n\t\t\t\t\t\tthis._sceneDepthMapRequested = false;\n\t\t\t\t}\n\t\t}\n\t\tget renderSceneDepthMap() {\n\t\t\t\treturn this._renderSceneDepthMap > 0;\n\t\t}\n\t\tset renderTarget(value) {\n\t\t\t\tthis._camera.renderTarget = value;\n\t\t\t\tthis.dirtyLayerCompositionCameras();\n\t\t}\n\t\tget renderTarget() {\n\t\t\t\treturn this._camera.renderTarget;\n\t\t}\n\t\tset scissorRect(value) {\n\t\t\t\tthis._camera.scissorRect = value;\n\t\t}\n\t\tget scissorRect() {\n\t\t\t\treturn this._camera.scissorRect;\n\t\t}\n\t\tset sensitivity(value) {\n\t\t\t\tthis._camera.sensitivity = value;\n\t\t}\n\t\tget sensitivity() {\n\t\t\t\treturn this._camera.sensitivity;\n\t\t}\n\t\tset shutter(value) {\n\t\t\t\tthis._camera.shutter = value;\n\t\t}\n\t\tget shutter() {\n\t\t\t\treturn this._camera.shutter;\n\t\t}\n\t\tget viewMatrix() {\n\t\t\t\treturn this._camera.viewMatrix;\n\t\t}\n\t\t_enableDepthLayer(value) {\n\t\t\t\tconst hasDepthLayer = this.layers.find((layerId)=>layerId === LAYERID_DEPTH);\n\t\t\t\tif (hasDepthLayer) {\n\t\t\t\t\t\tconst depthLayer = this.system.app.scene.layers.getLayerById(LAYERID_DEPTH);\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tdepthLayer?.incrementCounter();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdepthLayer?.decrementCounter();\n\t\t\t\t\t\t}\n\t\t\t\t} else if (value) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\trequestSceneColorMap(enabled) {\n\t\t\t\tthis._renderSceneColorMap += enabled ? 1 : -1;\n\t\t\t\tthis._enableDepthLayer(enabled);\n\t\t\t\tthis.camera._enableRenderPassColorGrab(this.system.app.graphicsDevice, this.renderSceneColorMap);\n\t\t\t\tthis.system.app.scene.layers.markDirty();\n\t\t}\n\t\trequestSceneDepthMap(enabled) {\n\t\t\t\tthis._renderSceneDepthMap += enabled ? 1 : -1;\n\t\t\t\tthis._enableDepthLayer(enabled);\n\t\t\t\tthis.camera._enableRenderPassDepthGrab(this.system.app.graphicsDevice, this.system.app.renderer, this.renderSceneDepthMap);\n\t\t\t\tthis.system.app.scene.layers.markDirty();\n\t\t}\n\t\tdirtyLayerCompositionCameras() {\n\t\t\t\tconst layerComp = this.system.app.scene.layers;\n\t\t\t\tlayerComp._dirty = true;\n\t\t}\n\t\tscreenToWorld(screenx, screeny, cameraz, worldCoord) {\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst { width, height } = device.clientRect;\n\t\t\t\treturn this._camera.screenToWorld(screenx, screeny, cameraz, width, height, worldCoord);\n\t\t}\n\t\tworldToScreen(worldCoord, screenCoord) {\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst { width, height } = device.clientRect;\n\t\t\t\treturn this._camera.worldToScreen(worldCoord, width, height, screenCoord);\n\t\t}\n\t\tonAppPrerender() {\n\t\t\t\tthis._camera._viewMatDirty = true;\n\t\t\t\tthis._camera._viewProjMatDirty = true;\n\t\t}\n\t\taddCameraToLayers() {\n\t\t\t\tconst layers = this.layers;\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addCamera(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveCameraFromLayers() {\n\t\t\t\tconst layers = this.layers;\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeCamera(this);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addCameraToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.addCamera(this);\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tlayer.removeCamera(this);\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.system.addCamera(this);\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addCameraToLayers();\n\t\t\t\t}\n\t\t\t\tthis.postEffects.enable();\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.postEffects.disable();\n\t\t\t\tthis.removeCameraFromLayers();\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.system.removeCamera(this);\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.onDisable();\n\t\t\t\tthis.off();\n\t\t\t\tthis.camera.destroy();\n\t\t}\n\t\tcalculateAspectRatio(rt) {\n\t\t\t\tconst device = this.system.app.graphicsDevice;\n\t\t\t\tconst width = rt ? rt.width : device.width;\n\t\t\t\tconst height = rt ? rt.height : device.height;\n\t\t\t\treturn width * this.rect.z / (height * this.rect.w);\n\t\t}\n\t\tframeUpdate(rt) {\n\t\t\t\tif (this.aspectRatioMode === ASPECT_AUTO) {\n\t\t\t\t\t\tthis.aspectRatio = this.calculateAspectRatio(rt);\n\t\t\t\t}\n\t\t}\n\t\tstartXr(type, spaceType, options) {\n\t\t\t\tthis.system.app.xr.start(this, type, spaceType, options);\n\t\t}\n\t\tendXr(callback) {\n\t\t\t\tif (!this._camera.xr) {\n\t\t\t\t\t\tif (callback) callback(new Error('Camera is not in XR'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera.xr.end(callback);\n\t\t}\n\t\tcopy(source) {\n\t\t\t\tthis.aperture = source.aperture;\n\t\t\t\tthis.aspectRatio = source.aspectRatio;\n\t\t\t\tthis.aspectRatioMode = source.aspectRatioMode;\n\t\t\t\tthis.calculateProjection = source.calculateProjection;\n\t\t\t\tthis.calculateTransform = source.calculateTransform;\n\t\t\t\tthis.clearColor = source.clearColor;\n\t\t\t\tthis.clearColorBuffer = source.clearColorBuffer;\n\t\t\t\tthis.clearDepthBuffer = source.clearDepthBuffer;\n\t\t\t\tthis.clearStencilBuffer = source.clearStencilBuffer;\n\t\t\t\tthis.cullFaces = source.cullFaces;\n\t\t\t\tthis.disablePostEffectsLayer = source.disablePostEffectsLayer;\n\t\t\t\tthis.farClip = source.farClip;\n\t\t\t\tthis.flipFaces = source.flipFaces;\n\t\t\t\tthis.fov = source.fov;\n\t\t\t\tthis.frustumCulling = source.frustumCulling;\n\t\t\t\tthis.horizontalFov = source.horizontalFov;\n\t\t\t\tthis.layers = source.layers;\n\t\t\t\tthis.nearClip = source.nearClip;\n\t\t\t\tthis.orthoHeight = source.orthoHeight;\n\t\t\t\tthis.priority = source.priority;\n\t\t\t\tthis.projection = source.projection;\n\t\t\t\tthis.rect = source.rect;\n\t\t\t\tthis.renderTarget = source.renderTarget;\n\t\t\t\tthis.scissorRect = source.scissorRect;\n\t\t\t\tthis.sensitivity = source.sensitivity;\n\t\t\t\tthis.shutter = source.shutter;\n\t\t}\n}\n\nclass CameraComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst _schema$1 = [\n\t\t'enabled'\n];\nclass CameraComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app), this.cameras = [];\n\t\t\t\tthis.id = 'camera';\n\t\t\t\tthis.ComponentType = CameraComponent;\n\t\t\t\tthis.DataType = CameraComponentData;\n\t\t\t\tthis.schema = _schema$1;\n\t\t\t\tthis.on('beforeremove', this.onBeforeRemove, this);\n\t\t\t\tthis.app.on('prerender', this.onAppPrerender, this);\n\t\t}\n\t\tinitializeComponentData(component, data, properties) {\n\t\t\t\tproperties = [\n\t\t\t\t\t\t'aspectRatio',\n\t\t\t\t\t\t'aspectRatioMode',\n\t\t\t\t\t\t'calculateProjection',\n\t\t\t\t\t\t'calculateTransform',\n\t\t\t\t\t\t'clearColor',\n\t\t\t\t\t\t'clearColorBuffer',\n\t\t\t\t\t\t'clearDepth',\n\t\t\t\t\t\t'clearDepthBuffer',\n\t\t\t\t\t\t'clearStencilBuffer',\n\t\t\t\t\t\t'renderSceneColorMap',\n\t\t\t\t\t\t'renderSceneDepthMap',\n\t\t\t\t\t\t'cullFaces',\n\t\t\t\t\t\t'farClip',\n\t\t\t\t\t\t'flipFaces',\n\t\t\t\t\t\t'fog',\n\t\t\t\t\t\t'fov',\n\t\t\t\t\t\t'frustumCulling',\n\t\t\t\t\t\t'horizontalFov',\n\t\t\t\t\t\t'layers',\n\t\t\t\t\t\t'renderTarget',\n\t\t\t\t\t\t'nearClip',\n\t\t\t\t\t\t'orthoHeight',\n\t\t\t\t\t\t'projection',\n\t\t\t\t\t\t'priority',\n\t\t\t\t\t\t'rect',\n\t\t\t\t\t\t'scissorRect',\n\t\t\t\t\t\t'aperture',\n\t\t\t\t\t\t'shutter',\n\t\t\t\t\t\t'sensitivity',\n\t\t\t\t\t\t'gammaCorrection',\n\t\t\t\t\t\t'toneMapping'\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tconst property = properties[i];\n\t\t\t\t\t\tif (data.hasOwnProperty(property)) {\n\t\t\t\t\t\t\t\tconst value = data[property];\n\t\t\t\t\t\t\t\tswitch(property){\n\t\t\t\t\t\t\t\t\t\tcase 'rect':\n\t\t\t\t\t\t\t\t\t\tcase 'scissorRect':\n\t\t\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = new Vec4(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'clearColor':\n\t\t\t\t\t\t\t\t\t\t\t\tif (Array.isArray(value)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = new Color(value[0], value[1], value[2], value[3]);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent[property] = value;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, data, [\n\t\t\t\t\t\t'enabled'\n\t\t\t\t]);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst c = entity.camera;\n\t\t\t\treturn this.addComponent(clone, {\n\t\t\t\t\t\taspectRatio: c.aspectRatio,\n\t\t\t\t\t\taspectRatioMode: c.aspectRatioMode,\n\t\t\t\t\t\tcalculateProjection: c.calculateProjection,\n\t\t\t\t\t\tcalculateTransform: c.calculateTransform,\n\t\t\t\t\t\tclearColor: c.clearColor,\n\t\t\t\t\t\tclearColorBuffer: c.clearColorBuffer,\n\t\t\t\t\t\tclearDepthBuffer: c.clearDepthBuffer,\n\t\t\t\t\t\tclearStencilBuffer: c.clearStencilBuffer,\n\t\t\t\t\t\trenderSceneDepthMap: c.renderSceneDepthMap,\n\t\t\t\t\t\trenderSceneColorMap: c.renderSceneColorMap,\n\t\t\t\t\t\tcullFaces: c.cullFaces,\n\t\t\t\t\t\tenabled: c.enabled,\n\t\t\t\t\t\tfarClip: c.farClip,\n\t\t\t\t\t\tflipFaces: c.flipFaces,\n\t\t\t\t\t\tfov: c.fov,\n\t\t\t\t\t\tfrustumCulling: c.frustumCulling,\n\t\t\t\t\t\thorizontalFov: c.horizontalFov,\n\t\t\t\t\t\tlayers: c.layers,\n\t\t\t\t\t\trenderTarget: c.renderTarget,\n\t\t\t\t\t\tnearClip: c.nearClip,\n\t\t\t\t\t\torthoHeight: c.orthoHeight,\n\t\t\t\t\t\tprojection: c.projection,\n\t\t\t\t\t\tpriority: c.priority,\n\t\t\t\t\t\trect: c.rect,\n\t\t\t\t\t\tscissorRect: c.scissorRect,\n\t\t\t\t\t\taperture: c.aperture,\n\t\t\t\t\t\tsensitivity: c.sensitivity,\n\t\t\t\t\t\tshutter: c.shutter,\n\t\t\t\t\t\tgammaCorrection: c.gammaCorrection,\n\t\t\t\t\t\ttoneMapping: c.toneMapping\n\t\t\t\t});\n\t\t}\n\t\tonBeforeRemove(entity, component) {\n\t\t\t\tthis.removeCamera(component);\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tonAppPrerender() {\n\t\t\t\tfor(let i = 0, len = this.cameras.length; i < len; i++){\n\t\t\t\t\t\tthis.cameras[i].onAppPrerender();\n\t\t\t\t}\n\t\t}\n\t\taddCamera(camera) {\n\t\t\t\tthis.cameras.push(camera);\n\t\t\t\tsortPriority(this.cameras);\n\t\t}\n\t\tremoveCamera(camera) {\n\t\t\t\tconst index = this.cameras.indexOf(camera);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tthis.cameras.splice(index, 1);\n\t\t\t\t\t\tsortPriority(this.cameras);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.app.off('prerender', this.onAppPrerender, this);\n\t\t\t\tsuper.destroy();\n\t\t}\n}\nComponent._buildAccessors(CameraComponent.prototype, _schema$1);\n\nclass LightComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.type = 'directional';\n\t\t\t\tthis.color = new Color(1, 1, 1);\n\t\t\t\tthis.intensity = 1;\n\t\t\t\tthis.luminance = 0;\n\t\t\t\tthis.shape = LIGHTSHAPE_PUNCTUAL;\n\t\t\t\tthis.affectSpecularity = true;\n\t\t\t\tthis.castShadows = false;\n\t\t\t\tthis.shadowDistance = 40;\n\t\t\t\tthis.shadowIntensity = 1;\n\t\t\t\tthis.shadowResolution = 1024;\n\t\t\t\tthis.shadowBias = 0.05;\n\t\t\t\tthis.numCascades = 1;\n\t\t\t\tthis.cascadeBlend = 0;\n\t\t\t\tthis.bakeNumSamples = 1;\n\t\t\t\tthis.bakeArea = 0;\n\t\t\t\tthis.cascadeDistribution = 0.5;\n\t\t\t\tthis.normalOffsetBias = 0;\n\t\t\t\tthis.range = 10;\n\t\t\t\tthis.innerConeAngle = 40;\n\t\t\t\tthis.outerConeAngle = 45;\n\t\t\t\tthis.falloffMode = LIGHTFALLOFF_LINEAR;\n\t\t\t\tthis.shadowType = SHADOW_PCF3_32F;\n\t\t\t\tthis.vsmBlurSize = 11;\n\t\t\t\tthis.vsmBlurMode = BLUR_GAUSSIAN;\n\t\t\t\tthis.vsmBias = 0.01 * 0.25;\n\t\t\t\tthis.cookieAsset = null;\n\t\t\t\tthis.cookie = null;\n\t\t\t\tthis.cookieIntensity = 1;\n\t\t\t\tthis.cookieFalloff = true;\n\t\t\t\tthis.cookieChannel = 'rgb';\n\t\t\t\tthis.cookieAngle = 0;\n\t\t\t\tthis.cookieScale = null;\n\t\t\t\tthis.cookieOffset = null;\n\t\t\t\tthis.shadowUpdateMode = SHADOWUPDATE_REALTIME;\n\t\t\t\tthis.mask = 1;\n\t\t\t\tthis.affectDynamic = true;\n\t\t\t\tthis.affectLightmapped = false;\n\t\t\t\tthis.bake = false;\n\t\t\t\tthis.bakeDir = true;\n\t\t\t\tthis.isStatic = false;\n\t\t\t\tthis.layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t];\n\t\t\t\tthis.penumbraSize = 1;\n\t\t\t\tthis.penumbraFalloff = 1;\n\t\t\t\tthis.shadowSamples = 16;\n\t\t\t\tthis.shadowBlockerSamples = 16;\n\t\t}\n}\nconst properties = Object.keys(new LightComponentData());\n\nclass LightComponent extends Component {\n\t\tget data() {\n\t\t\t\tconst record = this.system.store[this.entity.getGuid()];\n\t\t\t\treturn record ? record.data : null;\n\t\t}\n\t\tset enabled(arg) {\n\t\t\t\tthis._setValue('enabled', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.onSetEnabled(null, oldValue, newValue);\n\t\t\t\t});\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.data.enabled;\n\t\t}\n\t\tset light(arg) {\n\t\t\t\tthis._setValue('light', arg);\n\t\t}\n\t\tget light() {\n\t\t\t\treturn this.data.light;\n\t\t}\n\t\tset type(arg) {\n\t\t\t\tthis._setValue('type', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.system.changeType(this, oldValue, newValue);\n\t\t\t\t\t\tthis.refreshProperties();\n\t\t\t\t});\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this.data.type;\n\t\t}\n\t\tset color(arg) {\n\t\t\t\tthis._setValue('color', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.setColor(newValue);\n\t\t\t\t}, true);\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this.data.color;\n\t\t}\n\t\tset intensity(arg) {\n\t\t\t\tthis._setValue('intensity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.intensity = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this.data.intensity;\n\t\t}\n\t\tset luminance(arg) {\n\t\t\t\tthis._setValue('luminance', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.luminance = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget luminance() {\n\t\t\t\treturn this.data.luminance;\n\t\t}\n\t\tset shape(arg) {\n\t\t\t\tthis._setValue('shape', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shape = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shape() {\n\t\t\t\treturn this.data.shape;\n\t\t}\n\t\tset affectSpecularity(arg) {\n\t\t\t\tthis._setValue('affectSpecularity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.affectSpecularity = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget affectSpecularity() {\n\t\t\t\treturn this.data.affectSpecularity;\n\t\t}\n\t\tset castShadows(arg) {\n\t\t\t\tthis._setValue('castShadows', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.castShadows = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this.data.castShadows;\n\t\t}\n\t\tset shadowDistance(arg) {\n\t\t\t\tthis._setValue('shadowDistance', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowDistance = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowDistance() {\n\t\t\t\treturn this.data.shadowDistance;\n\t\t}\n\t\tset shadowIntensity(arg) {\n\t\t\t\tthis._setValue('shadowIntensity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowIntensity = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowIntensity() {\n\t\t\t\treturn this.data.shadowIntensity;\n\t\t}\n\t\tset shadowResolution(arg) {\n\t\t\t\tthis._setValue('shadowResolution', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowResolution = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowResolution() {\n\t\t\t\treturn this.data.shadowResolution;\n\t\t}\n\t\tset shadowBias(arg) {\n\t\t\t\tthis._setValue('shadowBias', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowBias = -0.01 * math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget shadowBias() {\n\t\t\t\treturn this.data.shadowBias;\n\t\t}\n\t\tset numCascades(arg) {\n\t\t\t\tthis._setValue('numCascades', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.numCascades = math.clamp(Math.floor(newValue), 1, 4);\n\t\t\t\t});\n\t\t}\n\t\tget numCascades() {\n\t\t\t\treturn this.data.numCascades;\n\t\t}\n\t\tset cascadeBlend(value) {\n\t\t\t\tthis._setValue('cascadeBlend', value, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cascadeBlend = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget cascadeBlend() {\n\t\t\t\treturn this.data.cascadeBlend;\n\t\t}\n\t\tset bakeNumSamples(arg) {\n\t\t\t\tthis._setValue('bakeNumSamples', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.bakeNumSamples = math.clamp(Math.floor(newValue), 1, 255);\n\t\t\t\t});\n\t\t}\n\t\tget bakeNumSamples() {\n\t\t\t\treturn this.data.bakeNumSamples;\n\t\t}\n\t\tset bakeArea(arg) {\n\t\t\t\tthis._setValue('bakeArea', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.bakeArea = math.clamp(newValue, 0, 180);\n\t\t\t\t});\n\t\t}\n\t\tget bakeArea() {\n\t\t\t\treturn this.data.bakeArea;\n\t\t}\n\t\tset cascadeDistribution(arg) {\n\t\t\t\tthis._setValue('cascadeDistribution', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cascadeDistribution = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget cascadeDistribution() {\n\t\t\t\treturn this.data.cascadeDistribution;\n\t\t}\n\t\tset normalOffsetBias(arg) {\n\t\t\t\tthis._setValue('normalOffsetBias', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.normalOffsetBias = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget normalOffsetBias() {\n\t\t\t\treturn this.data.normalOffsetBias;\n\t\t}\n\t\tset range(arg) {\n\t\t\t\tthis._setValue('range', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.attenuationEnd = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget range() {\n\t\t\t\treturn this.data.range;\n\t\t}\n\t\tset innerConeAngle(arg) {\n\t\t\t\tthis._setValue('innerConeAngle', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.innerConeAngle = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget innerConeAngle() {\n\t\t\t\treturn this.data.innerConeAngle;\n\t\t}\n\t\tset outerConeAngle(arg) {\n\t\t\t\tthis._setValue('outerConeAngle', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.outerConeAngle = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget outerConeAngle() {\n\t\t\t\treturn this.data.outerConeAngle;\n\t\t}\n\t\tset falloffMode(arg) {\n\t\t\t\tthis._setValue('falloffMode', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.falloffMode = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget falloffMode() {\n\t\t\t\treturn this.data.falloffMode;\n\t\t}\n\t\tset shadowType(arg) {\n\t\t\t\tthis._setValue('shadowType', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowType = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget shadowType() {\n\t\t\t\treturn this.data.shadowType;\n\t\t}\n\t\tset vsmBlurSize(arg) {\n\t\t\t\tthis._setValue('vsmBlurSize', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.vsmBlurSize = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget vsmBlurSize() {\n\t\t\t\treturn this.data.vsmBlurSize;\n\t\t}\n\t\tset vsmBlurMode(arg) {\n\t\t\t\tthis._setValue('vsmBlurMode', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.vsmBlurMode = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget vsmBlurMode() {\n\t\t\t\treturn this.data.vsmBlurMode;\n\t\t}\n\t\tset vsmBias(arg) {\n\t\t\t\tthis._setValue('vsmBias', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.vsmBias = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget vsmBias() {\n\t\t\t\treturn this.data.vsmBias;\n\t\t}\n\t\tset cookieAsset(arg) {\n\t\t\t\tthis._setValue('cookieAsset', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (this._cookieAssetId && (newValue instanceof Asset && newValue.id === this._cookieAssetId || newValue === this._cookieAssetId)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.onCookieAssetRemove();\n\t\t\t\t\t\tthis._cookieAssetId = null;\n\t\t\t\t\t\tif (newValue instanceof Asset) {\n\t\t\t\t\t\t\t\tthis.data.cookieAsset = newValue.id;\n\t\t\t\t\t\t\t\tthis._cookieAssetId = newValue.id;\n\t\t\t\t\t\t\t\tthis.onCookieAssetAdd(newValue);\n\t\t\t\t\t\t} else if (typeof newValue === 'number') {\n\t\t\t\t\t\t\t\tthis._cookieAssetId = newValue;\n\t\t\t\t\t\t\t\tconst asset = this.system.app.assets.get(newValue);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis.onCookieAssetAdd(asset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._cookieAssetAdd = true;\n\t\t\t\t\t\t\t\t\t\tthis.system.app.assets.on(`add:${this._cookieAssetId}`, this.onCookieAssetAdd, this);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget cookieAsset() {\n\t\t\t\treturn this.data.cookieAsset;\n\t\t}\n\t\tset cookie(arg) {\n\t\t\t\tthis._setValue('cookie', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookie = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget cookie() {\n\t\t\t\treturn this.data.cookie;\n\t\t}\n\t\tset cookieIntensity(arg) {\n\t\t\t\tthis._setValue('cookieIntensity', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieIntensity = math.clamp(newValue, 0, 1);\n\t\t\t\t});\n\t\t}\n\t\tget cookieIntensity() {\n\t\t\t\treturn this.data.cookieIntensity;\n\t\t}\n\t\tset cookieFalloff(arg) {\n\t\t\t\tthis._setValue('cookieFalloff', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieFalloff = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget cookieFalloff() {\n\t\t\t\treturn this.data.cookieFalloff;\n\t\t}\n\t\tset cookieChannel(arg) {\n\t\t\t\tthis._setValue('cookieChannel', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieChannel = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget cookieChannel() {\n\t\t\t\treturn this.data.cookieChannel;\n\t\t}\n\t\tset cookieAngle(arg) {\n\t\t\t\tthis._setValue('cookieAngle', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue !== 0 || this.cookieScale !== null) {\n\t\t\t\t\t\t\t\tif (!this._cookieMatrix) this._cookieMatrix = new Vec4();\n\t\t\t\t\t\t\t\tlet scx = 1;\n\t\t\t\t\t\t\t\tlet scy = 1;\n\t\t\t\t\t\t\t\tif (this.cookieScale) {\n\t\t\t\t\t\t\t\t\t\tscx = this.cookieScale.x;\n\t\t\t\t\t\t\t\t\t\tscy = this.cookieScale.y;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst c = Math.cos(newValue * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tconst s = Math.sin(newValue * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tthis._cookieMatrix.set(c / scx, -s / scx, s / scy, c / scy);\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = this._cookieMatrix;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = null;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget cookieAngle() {\n\t\t\t\treturn this.data.cookieAngle;\n\t\t}\n\t\tset cookieScale(arg) {\n\t\t\t\tthis._setValue('cookieScale', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue !== null || this.cookieAngle !== 0) {\n\t\t\t\t\t\t\t\tif (!this._cookieMatrix) this._cookieMatrix = new Vec4();\n\t\t\t\t\t\t\t\tconst scx = newValue.x;\n\t\t\t\t\t\t\t\tconst scy = newValue.y;\n\t\t\t\t\t\t\t\tconst c = Math.cos(this.cookieAngle * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tconst s = Math.sin(this.cookieAngle * math.DEG_TO_RAD);\n\t\t\t\t\t\t\t\tthis._cookieMatrix.set(c / scx, -s / scx, s / scy, c / scy);\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = this._cookieMatrix;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.cookieTransform = null;\n\t\t\t\t\t\t}\n\t\t\t\t}, true);\n\t\t}\n\t\tget cookieScale() {\n\t\t\t\treturn this.data.cookieScale;\n\t\t}\n\t\tset cookieOffset(arg) {\n\t\t\t\tthis._setValue('cookieOffset', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.cookieOffset = newValue;\n\t\t\t\t}, true);\n\t\t}\n\t\tget cookieOffset() {\n\t\t\t\treturn this.data.cookieOffset;\n\t\t}\n\t\tset shadowUpdateMode(arg) {\n\t\t\t\tthis._setValue('shadowUpdateMode', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.shadowUpdateMode = newValue;\n\t\t\t\t}, true);\n\t\t}\n\t\tget shadowUpdateMode() {\n\t\t\t\treturn this.data.shadowUpdateMode;\n\t\t}\n\t\tset mask(arg) {\n\t\t\t\tthis._setValue('mask', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.mask = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget mask() {\n\t\t\t\treturn this.data.mask;\n\t\t}\n\t\tset affectDynamic(arg) {\n\t\t\t\tthis._setValue('affectDynamic', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tthis.light.mask |= MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.mask &= ~MASK_AFFECT_DYNAMIC;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.light.layersDirty();\n\t\t\t\t});\n\t\t}\n\t\tget affectDynamic() {\n\t\t\t\treturn this.data.affectDynamic;\n\t\t}\n\t\tset affectLightmapped(arg) {\n\t\t\t\tthis._setValue('affectLightmapped', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tthis.light.mask |= MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t\t\tif (this.bake) this.light.mask &= ~MASK_BAKE;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.mask &= ~MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t\t\tif (this.bake) this.light.mask |= MASK_BAKE;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget affectLightmapped() {\n\t\t\t\treturn this.data.affectLightmapped;\n\t\t}\n\t\tset bake(arg) {\n\t\t\t\tthis._setValue('bake', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tif (newValue) {\n\t\t\t\t\t\t\t\tthis.light.mask |= MASK_BAKE;\n\t\t\t\t\t\t\t\tif (this.affectLightmapped) this.light.mask &= ~MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.light.mask &= ~MASK_BAKE;\n\t\t\t\t\t\t\t\tif (this.affectLightmapped) this.light.mask |= MASK_AFFECT_LIGHTMAPPED;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.light.layersDirty();\n\t\t\t\t});\n\t\t}\n\t\tget bake() {\n\t\t\t\treturn this.data.bake;\n\t\t}\n\t\tset bakeDir(arg) {\n\t\t\t\tthis._setValue('bakeDir', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.bakeDir = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget bakeDir() {\n\t\t\t\treturn this.data.bakeDir;\n\t\t}\n\t\tset isStatic(arg) {\n\t\t\t\tthis._setValue('isStatic', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tthis.light.isStatic = newValue;\n\t\t\t\t});\n\t\t}\n\t\tget isStatic() {\n\t\t\t\treturn this.data.isStatic;\n\t\t}\n\t\tset layers(arg) {\n\t\t\t\tthis._setValue('layers', arg, function(newValue, oldValue) {\n\t\t\t\t\t\tfor(let i = 0; i < oldValue.length; i++){\n\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(oldValue[i]);\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tlayer.removeLight(this);\n\t\t\t\t\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < newValue.length; i++){\n\t\t\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(newValue[i]);\n\t\t\t\t\t\t\t\tif (!layer) continue;\n\t\t\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\t\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this.data.layers;\n\t\t}\n\t\tset shadowUpdateOverrides(values) {\n\t\t\t\tthis.light.shadowUpdateOverrides = values;\n\t\t}\n\t\tget shadowUpdateOverrides() {\n\t\t\t\treturn this.light.shadowUpdateOverrides;\n\t\t}\n\t\tset shadowSamples(value) {\n\t\t\t\tthis.light.shadowSamples = value;\n\t\t}\n\t\tget shadowSamples() {\n\t\t\t\treturn this.light.shadowSamples;\n\t\t}\n\t\tset shadowBlockerSamples(value) {\n\t\t\t\tthis.light.shadowBlockerSamples = value;\n\t\t}\n\t\tget shadowBlockerSamples() {\n\t\t\t\treturn this.light.shadowBlockerSamples;\n\t\t}\n\t\tset penumbraSize(value) {\n\t\t\t\tthis.light.penumbraSize = value;\n\t\t}\n\t\tget penumbraSize() {\n\t\t\t\treturn this.light.penumbraSize;\n\t\t}\n\t\tset penumbraFalloff(value) {\n\t\t\t\tthis.light.penumbraFalloff = value;\n\t\t}\n\t\tget penumbraFalloff() {\n\t\t\t\treturn this.light.penumbraFalloff;\n\t\t}\n\t\t_setValue(name, value, setFunc, skipEqualsCheck) {\n\t\t\t\tconst data = this.data;\n\t\t\t\tconst oldValue = data[name];\n\t\t\t\tif (!skipEqualsCheck && oldValue === value) return;\n\t\t\t\tdata[name] = value;\n\t\t\t\tif (setFunc) setFunc.call(this, value, oldValue);\n\t\t}\n\t\taddLightToLayers() {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveLightFromLayers() {\n\t\t\t\tfor(let i = 0; i < this.layers.length; i++){\n\t\t\t\t\t\tconst layer = this.system.app.scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\tlayer.removeLight(this);\n\t\t\t\t\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addLightToLayers();\n\t\t\t\t}\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index >= 0 && this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tlayer.addLight(this);\n\t\t\t\t\t\tthis.light.addLayer(layer);\n\t\t\t\t}\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\t\tlayer.removeLight(this);\n\t\t\t\t\t\tthis.light.removeLayer(layer);\n\t\t\t\t}\n\t\t}\n\t\trefreshProperties() {\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tconst name = properties[i];\n\t\t\t\t\t\tthis[name] = this[name];\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.onEnable();\n\t\t\t\t}\n\t\t}\n\t\tonCookieAssetSet() {\n\t\t\t\tlet forceLoad = false;\n\t\t\t\tif (this._cookieAsset.type === 'cubemap' && !this._cookieAsset.loadFaces) {\n\t\t\t\t\t\tthis._cookieAsset.loadFaces = true;\n\t\t\t\t\t\tforceLoad = true;\n\t\t\t\t}\n\t\t\t\tif (!this._cookieAsset.resource || forceLoad) this.system.app.assets.load(this._cookieAsset);\n\t\t\t\tif (this._cookieAsset.resource) {\n\t\t\t\t\t\tthis.onCookieAssetLoad();\n\t\t\t\t}\n\t\t}\n\t\tonCookieAssetAdd(asset) {\n\t\t\t\tif (this._cookieAssetId !== asset.id) return;\n\t\t\t\tthis._cookieAsset = asset;\n\t\t\t\tif (this.light.enabled) {\n\t\t\t\t\t\tthis.onCookieAssetSet();\n\t\t\t\t}\n\t\t\t\tthis._cookieAsset.on('load', this.onCookieAssetLoad, this);\n\t\t\t\tthis._cookieAsset.on('remove', this.onCookieAssetRemove, this);\n\t\t}\n\t\tonCookieAssetLoad() {\n\t\t\t\tif (!this._cookieAsset || !this._cookieAsset.resource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.cookie = this._cookieAsset.resource;\n\t\t}\n\t\tonCookieAssetRemove() {\n\t\t\t\tif (!this._cookieAssetId) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._cookieAssetAdd) {\n\t\t\t\t\t\tthis.system.app.assets.off(`add:${this._cookieAssetId}`, this.onCookieAssetAdd, this);\n\t\t\t\t\t\tthis._cookieAssetAdd = false;\n\t\t\t\t}\n\t\t\t\tif (this._cookieAsset) {\n\t\t\t\t\t\tthis._cookieAsset.off('load', this.onCookieAssetLoad, this);\n\t\t\t\t\t\tthis._cookieAsset.off('remove', this.onCookieAssetRemove, this);\n\t\t\t\t\t\tthis._cookieAsset = null;\n\t\t\t\t}\n\t\t\t\tthis.cookie = null;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.light.enabled = true;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.addLightToLayers();\n\t\t\t\t}\n\t\t\t\tif (this._cookieAsset && !this.cookie) {\n\t\t\t\t\t\tthis.onCookieAssetSet();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis.light.enabled = false;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.removeLightFromLayers();\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.onDisable();\n\t\t\t\tthis.light.destroy();\n\t\t\t\tthis.cookieAsset = null;\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._cookieAsset = null, this._cookieAssetId = null, this._cookieAssetAdd = false, this._cookieMatrix = null;\n\t\t}\n}\n\nclass LightComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'light';\n\t\t\t\tthis.ComponentType = LightComponent;\n\t\t\t\tthis.DataType = LightComponentData;\n\t\t\t\tthis.on('beforeremove', this._onRemoveComponent, this);\n\t\t}\n\t\tinitializeComponentData(component, _data) {\n\t\t\t\tconst data = {\n\t\t\t\t\t\t..._data\n\t\t\t\t};\n\t\t\t\tif (!data.type) {\n\t\t\t\t\t\tdata.type = component.data.type;\n\t\t\t\t}\n\t\t\t\tcomponent.data.type = data.type;\n\t\t\t\tif (data.layers && Array.isArray(data.layers)) {\n\t\t\t\t\t\tdata.layers = data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tif (data.color && Array.isArray(data.color)) {\n\t\t\t\t\t\tdata.color = new Color(data.color[0], data.color[1], data.color[2]);\n\t\t\t\t}\n\t\t\t\tif (data.cookieOffset && data.cookieOffset instanceof Array) {\n\t\t\t\t\t\tdata.cookieOffset = new Vec2(data.cookieOffset[0], data.cookieOffset[1]);\n\t\t\t\t}\n\t\t\t\tif (data.cookieScale && data.cookieScale instanceof Array) {\n\t\t\t\t\t\tdata.cookieScale = new Vec2(data.cookieScale[0], data.cookieScale[1]);\n\t\t\t\t}\n\t\t\t\tif (data.enable) {\n\t\t\t\t\t\tconsole.warn('WARNING: enable: Property is deprecated. Set enabled property instead.');\n\t\t\t\t\t\tdata.enabled = data.enable;\n\t\t\t\t}\n\t\t\t\tif (!data.shape) {\n\t\t\t\t\t\tdata.shape = LIGHTSHAPE_PUNCTUAL;\n\t\t\t\t}\n\t\t\t\tconst light = new Light(this.app.graphicsDevice, this.app.scene.clusteredLightingEnabled);\n\t\t\t\tlight.type = lightTypes[data.type];\n\t\t\t\tlight._node = component.entity;\n\t\t\t\tcomponent.data.light = light;\n\t\t\t\tsuper.initializeComponentData(component, data, properties);\n\t\t}\n\t\t_onRemoveComponent(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst light = entity.light;\n\t\t\t\tconst data = [];\n\t\t\t\tlet name;\n\t\t\t\tfor(let i = 0; i < properties.length; i++){\n\t\t\t\t\t\tname = properties[i];\n\t\t\t\t\t\tif (name === 'light') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (light[name] && light[name].clone) {\n\t\t\t\t\t\t\t\tdata[name] = light[name].clone();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata[name] = light[name];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\tchangeType(component, oldValue, newValue) {\n\t\t\t\tif (oldValue !== newValue) {\n\t\t\t\t\t\tcomponent.light.type = lightTypes[newValue];\n\t\t\t\t}\n\t\t}\n}\n\nconst components = [\n\t\t'x',\n\t\t'y',\n\t\t'z',\n\t\t'w'\n];\nconst vecLookup = [\n\t\tundefined,\n\t\tundefined,\n\t\tVec2,\n\t\tVec3,\n\t\tVec4\n];\nfunction rawToValue(app, args, value, old) {\n\t\tswitch(args.type){\n\t\t\t\tcase 'boolean':\n\t\t\t\t\t\treturn !!value;\n\t\t\t\tcase 'number':\n\t\t\t\t\t\tif (typeof value === 'number') {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\t\t\t\tconst v = parseInt(value, 10);\n\t\t\t\t\t\t\t\tif (isNaN(v)) return null;\n\t\t\t\t\t\t\t\treturn v;\n\t\t\t\t\t\t} else if (typeof value === 'boolean') {\n\t\t\t\t\t\t\t\treturn 0 + value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'json':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconst result = {};\n\t\t\t\t\t\t\t\tif (Array.isArray(args.schema)) {\n\t\t\t\t\t\t\t\t\t\tif (!value || typeof value !== 'object') {\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = {};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < args.schema.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst field = args.schema[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (!field.name) continue;\n\t\t\t\t\t\t\t\t\t\t\t\tif (field.array) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[field.name] = [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst arr = Array.isArray(value[field.name]) ? value[field.name] : [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < arr.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[field.name].push(rawToValue(app, field, arr[j]));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst val = value.hasOwnProperty(field.name) ? value[field.name] : field.default;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresult[field.name] = rawToValue(app, field, val);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t}\n\t\t\t\tcase 'asset':\n\t\t\t\t\t\tif (value instanceof Asset) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t} else if (typeof value === 'number') {\n\t\t\t\t\t\t\t\treturn app.assets.get(value) || null;\n\t\t\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\t\t\t\treturn app.assets.get(parseInt(value, 10)) || null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'entity':\n\t\t\t\t\t\tif (value instanceof GraphNode) {\n\t\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t} else if (typeof value === 'string') {\n\t\t\t\t\t\t\t\treturn app.getEntityFromIndex(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'rgb':\n\t\t\t\tcase 'rgba':\n\t\t\t\t\t\tif (value instanceof Color) {\n\t\t\t\t\t\t\t\tif (old instanceof Color) {\n\t\t\t\t\t\t\t\t\t\told.copy(value);\n\t\t\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t} else if (value instanceof Array && value.length >= 3 && value.length <= 4) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (typeof value[i] !== 'number') {\n\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!old) old = new Color();\n\t\t\t\t\t\t\t\told.r = value[0];\n\t\t\t\t\t\t\t\told.g = value[1];\n\t\t\t\t\t\t\t\told.b = value[2];\n\t\t\t\t\t\t\t\told.a = value.length === 3 ? 1 : value[3];\n\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t} else if (typeof value === 'string' && /#(?:[0-9a-f]{2}){3,4}/i.test(value)) {\n\t\t\t\t\t\t\t\tif (!old) {\n\t\t\t\t\t\t\t\t\t\told = new Color();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\told.fromString(value);\n\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\tcase 'vec2':\n\t\t\t\tcase 'vec3':\n\t\t\t\tcase 'vec4':\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tconst len = parseInt(args.type.slice(3), 10);\n\t\t\t\t\t\t\t\tconst vecType = vecLookup[len];\n\t\t\t\t\t\t\t\tif (value instanceof vecType) {\n\t\t\t\t\t\t\t\t\t\tif (old instanceof vecType) {\n\t\t\t\t\t\t\t\t\t\t\t\told.copy(value);\n\t\t\t\t\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn value.clone();\n\t\t\t\t\t\t\t\t} else if (value instanceof Array && value.length === len) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tif (typeof value[i] !== 'number') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (!old) old = new vecType();\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\told[components[i]] = value[i];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn old;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\tcase 'curve':\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tlet curve;\n\t\t\t\t\t\t\t\tif (value instanceof Curve || value instanceof CurveSet) {\n\t\t\t\t\t\t\t\t\t\tcurve = value.clone();\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst CurveType = value.keys[0] instanceof Array ? CurveSet : Curve;\n\t\t\t\t\t\t\t\t\t\tcurve = new CurveType(value.keys);\n\t\t\t\t\t\t\t\t\t\tcurve.type = value.type;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn curve;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t}\n\t\treturn value;\n}\nfunction attributeToValue(app, schema, value, current) {\n\t\tif (schema.array) {\n\t\t\t\treturn value.map((item, index)=>rawToValue(app, schema, item, current ? current[index] : null));\n\t\t}\n\t\treturn rawToValue(app, schema, value, current);\n}\nfunction assignAttributesToScript(app, attributeSchemaMap, data, script) {\n\t\tif (!data) return;\n\t\tfor(const attributeName in attributeSchemaMap){\n\t\t\t\tconst attributeSchema = attributeSchemaMap[attributeName];\n\t\t\t\tconst dataToAssign = data[attributeName];\n\t\t\t\tif (dataToAssign === undefined) continue;\n\t\t\t\tscript[attributeName] = attributeToValue(app, attributeSchema, dataToAssign, script[attributeName]);\n\t\t}\n}\nclass ScriptAttributes {\n\t\tstatic{\n\t\t\t\tthis.assignAttributesToScript = assignAttributesToScript;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.attributeToValue = attributeToValue;\n\t\t}\n\t\tconstructor(scriptType){\n\t\t\t\tthis.scriptType = scriptType;\n\t\t\t\tthis.index = {};\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.reservedNames = new Set([\n\t\t\t\t\t\t'app',\n\t\t\t\t\t\t'entity',\n\t\t\t\t\t\t'enabled',\n\t\t\t\t\t\t'_enabled',\n\t\t\t\t\t\t'_enabledOld',\n\t\t\t\t\t\t'_destroyed',\n\t\t\t\t\t\t'__attributes',\n\t\t\t\t\t\t'__attributesRaw',\n\t\t\t\t\t\t\"__scriptType\",\n\t\t\t\t\t\t'__executionOrder',\n\t\t\t\t\t\t'_callbacks',\n\t\t\t\t\t\t'_callbackActive',\n\t\t\t\t\t\t'has',\n\t\t\t\t\t\t'get',\n\t\t\t\t\t\t'on',\n\t\t\t\t\t\t'off',\n\t\t\t\t\t\t'fire',\n\t\t\t\t\t\t'once',\n\t\t\t\t\t\t'hasEvent'\n\t\t\t\t]);\n\t\t}\n\t\tadd(name, args) {\n\t\t\t\tif (this.index[name]) {\n\t\t\t\t\t\treturn;\n\t\t\t\t} else if (ScriptAttributes.reservedNames.has(name)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.index[name] = args;\n\t\t\t\tObject.defineProperty(this.scriptType.prototype, name, {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.__attributes[name];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function(raw) {\n\t\t\t\t\t\t\t\tconst evt = 'attr';\n\t\t\t\t\t\t\t\tconst evtName = `attr:${name}`;\n\t\t\t\t\t\t\t\tconst old = this.__attributes[name];\n\t\t\t\t\t\t\t\tlet oldCopy = old;\n\t\t\t\t\t\t\t\tif (old && args.type !== 'json' && args.type !== 'entity' && old.clone) {\n\t\t\t\t\t\t\t\t\t\tif (this.hasEvent(evt) || this.hasEvent(evtName)) {\n\t\t\t\t\t\t\t\t\t\t\t\toldCopy = old.clone();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (args.array) {\n\t\t\t\t\t\t\t\t\t\tthis.__attributes[name] = [];\n\t\t\t\t\t\t\t\t\t\tif (raw) {\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0, len = raw.length; i < len; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.__attributes[name].push(rawToValue(this.app, args, raw[i], old ? old[i] : null));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.__attributes[name] = rawToValue(this.app, args, raw, old);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fire(evt, name, this.__attributes[name], oldCopy);\n\t\t\t\t\t\t\t\tthis.fire(evtName, this.__attributes[name], oldCopy);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tremove(name) {\n\t\t\t\tif (!this.index[name]) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tdelete this.index[name];\n\t\t\t\tdelete this.scriptType.prototype[name];\n\t\t\t\treturn true;\n\t\t}\n\t\thas(name) {\n\t\t\t\treturn !!this.index[name];\n\t\t}\n\t\tget(name) {\n\t\t\t\treturn this.index[name] || null;\n\t\t}\n}\n\nconst SCRIPT_INITIALIZE = 'initialize';\nconst SCRIPT_POST_INITIALIZE = 'postInitialize';\nconst SCRIPT_UPDATE = 'update';\nconst SCRIPT_POST_UPDATE = 'postUpdate';\nconst SCRIPT_SWAP = 'swap';\n\nclass Script extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ENABLE = 'enable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DISABLE = 'disable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STATE = 'state';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ATTR = 'attr';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(args){\n\t\t\t\tsuper();\n\t\t\t\tthis.initScript(args);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enabled = !!value;\n\t\t\t\tif (this.enabled === this._enabledOld) return;\n\t\t\t\tthis._enabledOld = this.enabled;\n\t\t\t\tthis.fire(this.enabled ? 'enable' : 'disable');\n\t\t\t\tthis.fire('state', this.enabled);\n\t\t\t\tif (!this._initialized && this.enabled) {\n\t\t\t\t\t\tthis._initialized = true;\n\t\t\t\t\t\tthis.fire('preInitialize');\n\t\t\t\t\t\tif (this.initialize) {\n\t\t\t\t\t\t\t\tthis.entity.script._scriptMethod(this, SCRIPT_INITIALIZE);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._initialized && !this._postInitialized && this.enabled && !this.entity.script._beingEnabled) {\n\t\t\t\t\t\tthis._postInitialized = true;\n\t\t\t\t\t\tif (this.postInitialize) {\n\t\t\t\t\t\t\t\tthis.entity.script._scriptMethod(this, SCRIPT_POST_INITIALIZE);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled && !this._destroyed && this.entity.script.enabled && this.entity.enabled;\n\t\t}\n\t\tinitScript(args) {\n\t\t\t\tconst script = this.constructor;\n\t\t\t\tthis.app = args.app;\n\t\t\t\tthis.entity = args.entity;\n\t\t\t\tthis._enabled = typeof args.enabled === 'boolean' ? args.enabled : true;\n\t\t\t\tthis._enabledOld = this.enabled;\n\t\t\t\tthis.__destroyed = false;\n\t\t\t\tthis.__scriptType = script;\n\t\t\t\tthis.__executionOrder = -1;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.__name = null;\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.__getScriptName = getScriptName;\n\t\t}\n\t\tstatic get scriptName() {\n\t\t\t\treturn this.__name;\n\t\t}\n}\nconst funcNameRegex = /^\\s*function(?:\\s|\\s*\\/\\*.*\\*\\/\\s*)+([^(\\s\\/]*)\\s*/;\nfunction getScriptName(constructorFn) {\n\t\tif (typeof constructorFn !== 'function') return undefined;\n\t\tif (constructorFn.scriptName) return constructorFn.scriptName;\n\t\tif ('name' in Function.prototype) return constructorFn.name;\n\t\tif (constructorFn === Function || constructorFn === Function.prototype.constructor) return 'Function';\n\t\tconst match = `${constructorFn}`.match(funcNameRegex);\n\t\treturn match ? match[1] : undefined;\n}\n\nclass ScriptType extends Script {\n\t\tconstructor(args){\n\t\t\t\tsuper(args);\n\t\t\t\tthis.initScriptType(args);\n\t\t}\n\t\tstatic get attributes() {\n\t\t\t\tif (!this.hasOwnProperty('__attributes')) this.__attributes = new ScriptAttributes(this);\n\t\t\t\treturn this.__attributes;\n\t\t}\n\t\tinitScript(args) {\n\t\t\t\tScript.prototype.initScript.call(this, args);\n\t\t\t\tthis.__attributes = {};\n\t\t\t\tthis.__attributesRaw = args.attributes || {};\n\t\t}\n\t\tinitScriptType(args) {\n\t\t\t\tthis.initScript(args);\n\t\t}\n\t\t__initializeAttributes(force) {\n\t\t\t\tif (!force && !this.__attributesRaw) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(const key in this.__scriptType.attributes.index){\n\t\t\t\t\t\tif (this.__attributesRaw && this.__attributesRaw.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tthis[key] = this.__attributesRaw[key];\n\t\t\t\t\t\t} else if (!this.__attributes.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tif (this.__scriptType.attributes.index[key].hasOwnProperty('default')) {\n\t\t\t\t\t\t\t\t\t\tthis[key] = this.__scriptType.attributes.index[key].default;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis[key] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.__attributesRaw = null;\n\t\t}\n\t\tstatic extend(methods) {\n\t\t\t\tfor(const key in methods){\n\t\t\t\t\t\tif (!methods.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.prototype[key] = methods[key];\n\t\t\t\t}\n\t\t}\n}\n\nconst toLowerCamelCase$1 = (str)=>str[0].toLowerCase() + str.substring(1);\nclass ScriptComponent extends Component {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CREATE = 'create';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ENABLE = 'enable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DISABLE = 'disable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_STATE = 'state';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_MOVE = 'move';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._attributeDataMap = new Map();\n\t\t\t\tthis._scripts = [];\n\t\t\t\tthis._updateList = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '__executionOrder'\n\t\t\t\t});\n\t\t\t\tthis._postUpdateList = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '__executionOrder'\n\t\t\t\t});\n\t\t\t\tthis._scriptsIndex = {};\n\t\t\t\tthis._destroyedScripts = [];\n\t\t\t\tthis._destroyed = false;\n\t\t\t\tthis._scriptsData = null;\n\t\t\t\tthis._oldState = true;\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._beingEnabled = false;\n\t\t\t\tthis._isLoopingThroughScripts = false;\n\t\t\t\tthis._executionOrder = -1;\n\t\t\t\tthis.on('set_enabled', this._onSetEnabled, this);\n\t\t}\n\t\tset scripts(value) {\n\t\t\t\tthis._scriptsData = value;\n\t\t\t\tfor(const key in value){\n\t\t\t\t\t\tif (!value.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst script = this._scriptsIndex[key];\n\t\t\t\t\t\tif (script) {\n\t\t\t\t\t\t\t\tif (typeof value[key].enabled === 'boolean') {\n\t\t\t\t\t\t\t\t\t\tscript.once('preInitialize', ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\tthis.initializeAttributes(script);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tscript.enabled = !!value[key].enabled;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (typeof value[key].attributes === 'object') {\n\t\t\t\t\t\t\t\t\t\tfor(const attr in value[key].attributes){\n\t\t\t\t\t\t\t\t\t\t\t\tif (ScriptAttributes.reservedNames.has(attr)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (!script.__attributes.hasOwnProperty(attr)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst scriptType = this.system.app.scripts.get(key);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (scriptType) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tscriptType.attributes.add(attr, {});\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tscript[attr] = value[key].attributes[attr];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.log(this.order);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget scripts() {\n\t\t\t\treturn this._scripts;\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tconst oldValue = this._enabled;\n\t\t\t\tthis._enabled = value;\n\t\t\t\tthis.fire('set', 'enabled', oldValue, value);\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tonEnable() {\n\t\t\t\tthis._beingEnabled = true;\n\t\t\t\tthis._checkState();\n\t\t\t\tif (!this.entity._beingEnabled) {\n\t\t\t\t\t\tthis.onPostStateChange();\n\t\t\t\t}\n\t\t\t\tthis._beingEnabled = false;\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis._checkState();\n\t\t}\n\t\tonPostStateChange() {\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0, len = this.scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tif (script._initialized && !script._postInitialized && script.enabled) {\n\t\t\t\t\t\t\t\tscript._postInitialized = true;\n\t\t\t\t\t\t\t\tif (script.postInitialize) {\n\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_POST_INITIALIZE);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_beginLooping() {\n\t\t\t\tconst looping = this._isLoopingThroughScripts;\n\t\t\t\tthis._isLoopingThroughScripts = true;\n\t\t\t\treturn looping;\n\t\t}\n\t\t_endLooping(wasLoopingBefore) {\n\t\t\t\tthis._isLoopingThroughScripts = wasLoopingBefore;\n\t\t\t\tif (!this._isLoopingThroughScripts) {\n\t\t\t\t\t\tthis._removeDestroyedScripts();\n\t\t\t\t}\n\t\t}\n\t\t_onSetEnabled(prop, old, value) {\n\t\t\t\tthis._beingEnabled = true;\n\t\t\t\tthis._checkState();\n\t\t\t\tthis._beingEnabled = false;\n\t\t}\n\t\t_checkState() {\n\t\t\t\tconst state = this.enabled && this.entity.enabled;\n\t\t\t\tif (state === this._oldState) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._oldState = state;\n\t\t\t\tthis.fire(state ? 'enable' : 'disable');\n\t\t\t\tthis.fire('state', state);\n\t\t\t\tif (state) {\n\t\t\t\t\t\tthis.system._addComponentToEnabled(this);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.system._removeComponentFromEnabled(this);\n\t\t\t\t}\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0, len = this.scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tscript.once('preInitialize', ()=>{\n\t\t\t\t\t\t\t\tthis.initializeAttributes(script);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tscript.enabled = script._enabled;\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_onBeforeRemove() {\n\t\t\t\tthis.fire('remove');\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0; i < this.scripts.length; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tif (!script) continue;\n\t\t\t\t\t\tthis.destroy(script.__scriptType.__name);\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_removeDestroyedScripts() {\n\t\t\t\tconst len = this._destroyedScripts.length;\n\t\t\t\tif (!len) return;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst script = this._destroyedScripts[i];\n\t\t\t\t\t\tthis._removeScriptInstance(script);\n\t\t\t\t}\n\t\t\t\tthis._destroyedScripts.length = 0;\n\t\t\t\tthis._resetExecutionOrder(0, this._scripts.length);\n\t\t}\n\t\t_onInitializeAttributes() {\n\t\t\t\tfor(let i = 0, len = this.scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = this.scripts[i];\n\t\t\t\t\t\tthis.initializeAttributes(script);\n\t\t\t\t}\n\t\t}\n\t\tinitializeAttributes(script) {\n\t\t\t\tif (script instanceof ScriptType) {\n\t\t\t\t\t\tscript.__initializeAttributes();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst name = script.__scriptType.__name;\n\t\t\t\t\t\tconst data = this._attributeDataMap.get(name);\n\t\t\t\t\t\tif (!data) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst schema = this.system.app.scripts?.getSchema(name);\n\t\t\t\t\t\tassignAttributesToScript(this.system.app, schema.attributes, data, script);\n\t\t\t\t}\n\t\t}\n\t\t_scriptMethod(script, method, arg) {\n\t\t\t\tscript[method](arg);\n\t\t}\n\t\t_onInitialize() {\n\t\t\t\tconst scripts = this._scripts;\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(let i = 0, len = scripts.length; i < len; i++){\n\t\t\t\t\t\tconst script = scripts[i];\n\t\t\t\t\t\tif (!script._initialized && script.enabled) {\n\t\t\t\t\t\t\t\tscript._initialized = true;\n\t\t\t\t\t\t\t\tif (script.initialize) {\n\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_INITIALIZE);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_onPostInitialize() {\n\t\t\t\tthis.onPostStateChange();\n\t\t}\n\t\t_onUpdate(dt) {\n\t\t\t\tconst list = this._updateList;\n\t\t\t\tif (!list.length) return;\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(list.loopIndex = 0; list.loopIndex < list.length; list.loopIndex++){\n\t\t\t\t\t\tconst script = list.items[list.loopIndex];\n\t\t\t\t\t\tif (script.enabled) {\n\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_UPDATE, dt);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_onPostUpdate(dt) {\n\t\t\t\tconst list = this._postUpdateList;\n\t\t\t\tif (!list.length) return;\n\t\t\t\tconst wasLooping = this._beginLooping();\n\t\t\t\tfor(list.loopIndex = 0; list.loopIndex < list.length; list.loopIndex++){\n\t\t\t\t\t\tconst script = list.items[list.loopIndex];\n\t\t\t\t\t\tif (script.enabled) {\n\t\t\t\t\t\t\t\tthis._scriptMethod(script, SCRIPT_POST_UPDATE, dt);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._endLooping(wasLooping);\n\t\t}\n\t\t_insertScriptInstance(scriptInstance, index, scriptsLength) {\n\t\t\t\tif (index === -1) {\n\t\t\t\t\t\tthis._scripts.push(scriptInstance);\n\t\t\t\t\t\tscriptInstance.__executionOrder = scriptsLength;\n\t\t\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\t\t\tthis._updateList.append(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\t\t\tthis._postUpdateList.append(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._scripts.splice(index, 0, scriptInstance);\n\t\t\t\t\t\tscriptInstance.__executionOrder = index;\n\t\t\t\t\t\tthis._resetExecutionOrder(index + 1, scriptsLength + 1);\n\t\t\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\t\t\tthis._updateList.insert(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\t\t\tthis._postUpdateList.insert(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_removeScriptInstance(scriptInstance) {\n\t\t\t\tconst idx = this._scripts.indexOf(scriptInstance);\n\t\t\t\tif (idx === -1) return idx;\n\t\t\t\tthis._scripts.splice(idx, 1);\n\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\tthis._updateList.remove(scriptInstance);\n\t\t\t\t}\n\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\tthis._postUpdateList.remove(scriptInstance);\n\t\t\t\t}\n\t\t\t\treturn idx;\n\t\t}\n\t\t_resetExecutionOrder(startIndex, scriptsLength) {\n\t\t\t\tfor(let i = startIndex; i < scriptsLength; i++){\n\t\t\t\t\t\tthis._scripts[i].__executionOrder = i;\n\t\t\t\t}\n\t\t}\n\t\t_resolveEntityScriptAttribute(attribute, attributeName, oldValue, useGuid, newAttributes, duplicatedIdsMap) {\n\t\t\t\tif (attribute.array) {\n\t\t\t\t\t\tconst len = oldValue.length;\n\t\t\t\t\t\tif (!len) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newGuidArray = oldValue.slice();\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst guid = newGuidArray[i] instanceof Entity ? newGuidArray[i].getGuid() : newGuidArray[i];\n\t\t\t\t\t\t\t\tif (duplicatedIdsMap[guid]) {\n\t\t\t\t\t\t\t\t\t\tnewGuidArray[i] = useGuid ? duplicatedIdsMap[guid].getGuid() : duplicatedIdsMap[guid];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewAttributes[attributeName] = newGuidArray;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (oldValue instanceof Entity) {\n\t\t\t\t\t\t\t\toldValue = oldValue.getGuid();\n\t\t\t\t\t\t} else if (typeof oldValue !== 'string') {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (duplicatedIdsMap[oldValue]) {\n\t\t\t\t\t\t\t\tnewAttributes[attributeName] = duplicatedIdsMap[oldValue];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\thas(nameOrType) {\n\t\t\t\tif (typeof nameOrType === 'string') {\n\t\t\t\t\t\treturn !!this._scriptsIndex[nameOrType];\n\t\t\t\t}\n\t\t\t\tif (!nameOrType) return false;\n\t\t\t\tconst scriptType = nameOrType;\n\t\t\t\tconst scriptName = scriptType.__name;\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tconst scriptInstance = scriptData && scriptData.instance;\n\t\t\t\treturn scriptInstance instanceof scriptType;\n\t\t}\n\t\tget(nameOrType) {\n\t\t\t\tif (typeof nameOrType === 'string') {\n\t\t\t\t\t\tconst data = this._scriptsIndex[nameOrType];\n\t\t\t\t\t\treturn data ? data.instance : null;\n\t\t\t\t}\n\t\t\t\tif (!nameOrType) return null;\n\t\t\t\tconst scriptType = nameOrType;\n\t\t\t\tconst scriptName = scriptType.__name;\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tconst scriptInstance = scriptData && scriptData.instance;\n\t\t\t\treturn scriptInstance instanceof scriptType ? scriptInstance : null;\n\t\t}\n\t\tcreate(nameOrType, args = {}) {\n\t\t\t\tconst self = this;\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tif (typeof scriptType === 'string') {\n\t\t\t\t\t\tscriptType = this.system.app.scripts.get(scriptType);\n\t\t\t\t} else if (scriptType) {\n\t\t\t\t\t\tconst inferredScriptName = getScriptName(scriptType);\n\t\t\t\t\t\tconst lowerInferredScriptName = toLowerCamelCase$1(inferredScriptName);\n\t\t\t\t\t\tif (!(scriptType.prototype instanceof ScriptType) && !scriptType.scriptName) ;\n\t\t\t\t\t\tscriptType.__name ??= scriptType.scriptName ?? lowerInferredScriptName;\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t}\n\t\t\t\tif (scriptType) {\n\t\t\t\t\t\tif (!this._scriptsIndex[scriptName] || !this._scriptsIndex[scriptName].instance) {\n\t\t\t\t\t\t\t\tconst scriptInstance = new scriptType({\n\t\t\t\t\t\t\t\t\t\tapp: this.system.app,\n\t\t\t\t\t\t\t\t\t\tentity: this.entity,\n\t\t\t\t\t\t\t\t\t\tenabled: args.hasOwnProperty('enabled') ? args.enabled : true,\n\t\t\t\t\t\t\t\t\t\tattributes: args.attributes || {}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (args.properties && typeof args.properties === 'object') {\n\t\t\t\t\t\t\t\t\t\tObject.assign(scriptInstance, args.properties);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!(scriptInstance instanceof ScriptType) && args.attributes) {\n\t\t\t\t\t\t\t\t\t\tthis._attributeDataMap.set(scriptName, {\n\t\t\t\t\t\t\t\t\t\t\t\t...args.attributes\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst len = this._scripts.length;\n\t\t\t\t\t\t\t\tlet ind = -1;\n\t\t\t\t\t\t\t\tif (typeof args.ind === 'number' && args.ind !== -1 && len > args.ind) {\n\t\t\t\t\t\t\t\t\t\tind = args.ind;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._insertScriptInstance(scriptInstance, ind, len);\n\t\t\t\t\t\t\t\tthis._scriptsIndex[scriptName] = {\n\t\t\t\t\t\t\t\t\t\tinstance: scriptInstance,\n\t\t\t\t\t\t\t\t\t\tonSwap: function() {\n\t\t\t\t\t\t\t\t\t\t\t\tself.swap(scriptName);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tthis[scriptName] = scriptInstance;\n\t\t\t\t\t\t\t\tif (!args.preloading) {\n\t\t\t\t\t\t\t\t\t\tthis.initializeAttributes(scriptInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.fire('create', scriptName, scriptInstance);\n\t\t\t\t\t\t\t\tthis.fire(`create:${scriptName}`, scriptInstance);\n\t\t\t\t\t\t\t\tthis.system.app.scripts.on(`swap:${scriptName}`, this._scriptsIndex[scriptName].onSwap);\n\t\t\t\t\t\t\t\tif (!args.preloading) {\n\t\t\t\t\t\t\t\t\t\tif (scriptInstance.enabled && !scriptInstance._initialized) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstance._initialized = true;\n\t\t\t\t\t\t\t\t\t\t\t\tif (scriptInstance.initialize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(scriptInstance, SCRIPT_INITIALIZE);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (scriptInstance.enabled && !scriptInstance._postInitialized) {\n\t\t\t\t\t\t\t\t\t\t\t\tscriptInstance._postInitialized = true;\n\t\t\t\t\t\t\t\t\t\t\t\tif (scriptInstance.postInitialize) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._scriptMethod(scriptInstance, SCRIPT_POST_INITIALIZE);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn scriptInstance;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._scriptsIndex[scriptName] = {\n\t\t\t\t\t\t\t\tawaiting: true,\n\t\t\t\t\t\t\t\tind: this._scripts.length\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\tdestroy(nameOrType) {\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tif (typeof scriptType === 'string') {\n\t\t\t\t\t\tscriptType = this.system.app.scripts.get(scriptType);\n\t\t\t\t} else if (scriptType) {\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t}\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tdelete this._scriptsIndex[scriptName];\n\t\t\t\tif (!scriptData) return false;\n\t\t\t\tthis._attributeDataMap.delete(scriptName);\n\t\t\t\tconst scriptInstance = scriptData.instance;\n\t\t\t\tif (scriptInstance && !scriptInstance._destroyed) {\n\t\t\t\t\t\tscriptInstance.enabled = false;\n\t\t\t\t\t\tscriptInstance._destroyed = true;\n\t\t\t\t\t\tif (!this._isLoopingThroughScripts) {\n\t\t\t\t\t\t\t\tconst ind = this._removeScriptInstance(scriptInstance);\n\t\t\t\t\t\t\t\tif (ind >= 0) {\n\t\t\t\t\t\t\t\t\t\tthis._resetExecutionOrder(ind, this._scripts.length);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._destroyedScripts.push(scriptInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.system.app.scripts.off(`swap:${scriptName}`, scriptData.onSwap);\n\t\t\t\tdelete this[scriptName];\n\t\t\t\tthis.fire('destroy', scriptName, scriptInstance || null);\n\t\t\t\tthis.fire(`destroy:${scriptName}`, scriptInstance || null);\n\t\t\t\tif (scriptInstance) {\n\t\t\t\t\t\tscriptInstance.fire('destroy');\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tswap(nameOrType) {\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tif (typeof scriptType === 'string') {\n\t\t\t\t\t\tscriptType = this.system.app.scripts.get(scriptType);\n\t\t\t\t} else if (scriptType) {\n\t\t\t\t\t\tscriptName = scriptType.__name;\n\t\t\t\t}\n\t\t\t\tconst old = this._scriptsIndex[scriptName];\n\t\t\t\tif (!old || !old.instance) return false;\n\t\t\t\tconst scriptInstanceOld = old.instance;\n\t\t\t\tconst ind = this._scripts.indexOf(scriptInstanceOld);\n\t\t\t\tconst scriptInstance = new scriptType({\n\t\t\t\t\t\tapp: this.system.app,\n\t\t\t\t\t\tentity: this.entity,\n\t\t\t\t\t\tenabled: scriptInstanceOld.enabled,\n\t\t\t\t\t\tattributes: scriptInstanceOld.__attributes\n\t\t\t\t});\n\t\t\t\tif (!scriptInstance.swap) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.initializeAttributes(scriptInstance);\n\t\t\t\tthis._scripts[ind] = scriptInstance;\n\t\t\t\tthis._scriptsIndex[scriptName].instance = scriptInstance;\n\t\t\t\tthis[scriptName] = scriptInstance;\n\t\t\t\tscriptInstance.__executionOrder = ind;\n\t\t\t\tif (scriptInstanceOld.update) {\n\t\t\t\t\t\tthis._updateList.remove(scriptInstanceOld);\n\t\t\t\t}\n\t\t\t\tif (scriptInstanceOld.postUpdate) {\n\t\t\t\t\t\tthis._postUpdateList.remove(scriptInstanceOld);\n\t\t\t\t}\n\t\t\t\tif (scriptInstance.update) {\n\t\t\t\t\t\tthis._updateList.insert(scriptInstance);\n\t\t\t\t}\n\t\t\t\tif (scriptInstance.postUpdate) {\n\t\t\t\t\t\tthis._postUpdateList.insert(scriptInstance);\n\t\t\t\t}\n\t\t\t\tthis._scriptMethod(scriptInstance, SCRIPT_SWAP, scriptInstanceOld);\n\t\t\t\tthis.fire('swap', scriptName, scriptInstance);\n\t\t\t\tthis.fire(`swap:${scriptName}`, scriptInstance);\n\t\t\t\treturn true;\n\t\t}\n\t\tresolveDuplicatedEntityReferenceProperties(oldScriptComponent, duplicatedIdsMap) {\n\t\t\t\tconst newScriptComponent = this.entity.script;\n\t\t\t\tfor(const scriptName in oldScriptComponent._scriptsIndex){\n\t\t\t\t\t\tconst scriptType = this.system.app.scripts.get(scriptName);\n\t\t\t\t\t\tif (!scriptType) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst script = oldScriptComponent._scriptsIndex[scriptName];\n\t\t\t\t\t\tif (!script || !script.instance) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst newAttributesRaw = newScriptComponent[scriptName].__attributesRaw ?? newScriptComponent._attributeDataMap.get(scriptName);\n\t\t\t\t\t\tconst newAttributes = newScriptComponent[scriptName].__attributes;\n\t\t\t\t\t\tif (!newAttributesRaw && !newAttributes) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst useGuid = !!newAttributesRaw;\n\t\t\t\t\t\tconst oldAttributes = script.instance.__attributes ?? newScriptComponent._attributeDataMap.get(scriptName);\n\t\t\t\t\t\tfor(const attributeName in oldAttributes){\n\t\t\t\t\t\t\t\tif (!oldAttributes[attributeName]) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst attribute = scriptType.attributes?.get(attributeName) ?? this.system.app.scripts.getSchema(scriptName)?.attributes?.[attributeName];\n\t\t\t\t\t\t\t\tif (!attribute) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (attribute.type === 'entity') {\n\t\t\t\t\t\t\t\t\t\tthis._resolveEntityScriptAttribute(attribute, attributeName, oldAttributes[attributeName], useGuid, newAttributesRaw || newAttributes, duplicatedIdsMap);\n\t\t\t\t\t\t\t\t} else if (attribute.type === 'json' && Array.isArray(attribute.schema)) {\n\t\t\t\t\t\t\t\t\t\tconst oldValue = oldAttributes[attributeName];\n\t\t\t\t\t\t\t\t\t\tconst newJsonValue = newAttributesRaw ? newAttributesRaw[attributeName] : newAttributes[attributeName];\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < attribute.schema.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst field = attribute.schema[i];\n\t\t\t\t\t\t\t\t\t\t\t\tif (field.type !== 'entity') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (attribute.array) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < oldValue.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._resolveEntityScriptAttribute(field, field.name, oldValue[j][field.name], useGuid, newJsonValue[j], duplicatedIdsMap);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._resolveEntityScriptAttribute(field, field.name, oldValue[field.name], useGuid, newJsonValue, duplicatedIdsMap);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tmove(nameOrType, ind) {\n\t\t\t\tconst len = this._scripts.length;\n\t\t\t\tif (ind >= len || ind < 0) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tlet scriptType = nameOrType;\n\t\t\t\tlet scriptName = nameOrType;\n\t\t\t\tif (typeof scriptName !== 'string') {\n\t\t\t\t\t\tscriptName = nameOrType.__name;\n\t\t\t\t} else {\n\t\t\t\t\t\tscriptType = null;\n\t\t\t\t}\n\t\t\t\tconst scriptData = this._scriptsIndex[scriptName];\n\t\t\t\tif (!scriptData || !scriptData.instance) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst scriptInstance = scriptData.instance;\n\t\t\t\tif (scriptType && !(scriptInstance instanceof scriptType)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tconst indOld = this._scripts.indexOf(scriptInstance);\n\t\t\t\tif (indOld === -1 || indOld === ind) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis._scripts.splice(ind, 0, this._scripts.splice(indOld, 1)[0]);\n\t\t\t\tthis._resetExecutionOrder(0, len);\n\t\t\t\tthis._updateList.sort();\n\t\t\t\tthis._postUpdateList.sort();\n\t\t\t\tthis.fire('move', scriptName, scriptInstance, ind, indOld);\n\t\t\t\tthis.fire(`move:${scriptName}`, scriptInstance, ind, indOld);\n\t\t\t\treturn true;\n\t\t}\n}\n\nclass ScriptComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nconst METHOD_INITIALIZE_ATTRIBUTES = '_onInitializeAttributes';\nconst METHOD_INITIALIZE = '_onInitialize';\nconst METHOD_POST_INITIALIZE = '_onPostInitialize';\nconst METHOD_UPDATE = '_onUpdate';\nconst METHOD_POST_UPDATE = '_onPostUpdate';\nlet executionOrderCounter = 0;\nclass ScriptComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = \"script\";\n\t\t\t\tthis.ComponentType = ScriptComponent;\n\t\t\t\tthis.DataType = ScriptComponentData;\n\t\t\t\tthis._components = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '_executionOrder'\n\t\t\t\t});\n\t\t\t\tthis._enabledComponents = new SortedLoopArray({\n\t\t\t\t\t\tsortBy: '_executionOrder'\n\t\t\t\t});\n\t\t\t\tthis.preloading = true;\n\t\t\t\tthis.on('beforeremove', this._onBeforeRemove, this);\n\t\t\t\tthis.app.systems.on('initialize', this._onInitialize, this);\n\t\t\t\tthis.app.systems.on('postInitialize', this._onPostInitialize, this);\n\t\t\t\tthis.app.systems.on('update', this._onUpdate, this);\n\t\t\t\tthis.app.systems.on('postUpdate', this._onPostUpdate, this);\n\t\t}\n\t\tinitializeComponentData(component, data) {\n\t\t\t\tcomponent._executionOrder = executionOrderCounter++;\n\t\t\t\tthis._components.append(component);\n\t\t\t\tif (executionOrderCounter > Number.MAX_SAFE_INTEGER) {\n\t\t\t\t\t\tthis._resetExecutionOrder();\n\t\t\t\t}\n\t\t\t\tcomponent.enabled = data.hasOwnProperty('enabled') ? !!data.enabled : true;\n\t\t\t\tif (component.enabled && component.entity.enabled) {\n\t\t\t\t\t\tthis._enabledComponents.append(component);\n\t\t\t\t}\n\t\t\t\tif (data.hasOwnProperty('order') && data.hasOwnProperty(\"scripts\")) {\n\t\t\t\t\t\tcomponent._scriptsData = data.scripts;\n\t\t\t\t\t\tfor(let i = 0; i < data.order.length; i++){\n\t\t\t\t\t\t\t\tcomponent.create(data.order[i], {\n\t\t\t\t\t\t\t\t\t\tenabled: data.scripts[data.order[i]].enabled,\n\t\t\t\t\t\t\t\t\t\tattributes: data.scripts[data.order[i]].attributes,\n\t\t\t\t\t\t\t\t\t\tpreloading: this.preloading\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst order = [];\n\t\t\t\tconst scripts = {};\n\t\t\t\tfor(let i = 0; i < entity.script._scripts.length; i++){\n\t\t\t\t\t\tconst scriptInstance = entity.script._scripts[i];\n\t\t\t\t\t\tconst scriptName = scriptInstance.__scriptType.__name;\n\t\t\t\t\t\torder.push(scriptName);\n\t\t\t\t\t\tconst attributes = entity.script._attributeDataMap?.get(scriptName) || {};\n\t\t\t\t\t\tfor(const key in scriptInstance.__attributes){\n\t\t\t\t\t\t\t\tattributes[key] = scriptInstance.__attributes[key];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscripts[scriptName] = {\n\t\t\t\t\t\t\t\tenabled: scriptInstance._enabled,\n\t\t\t\t\t\t\t\tattributes: attributes\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tfor(const key in entity.script._scriptsIndex){\n\t\t\t\t\t\tif (key.awaiting) {\n\t\t\t\t\t\t\t\torder.splice(key.ind, 0, key);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst data = {\n\t\t\t\t\t\tenabled: entity.script.enabled,\n\t\t\t\t\t\torder: order,\n\t\t\t\t\t\tscripts: scripts\n\t\t\t\t};\n\t\t\t\treturn this.addComponent(clone, data);\n\t\t}\n\t\t_resetExecutionOrder() {\n\t\t\t\texecutionOrderCounter = 0;\n\t\t\t\tfor(let i = 0, len = this._components.length; i < len; i++){\n\t\t\t\t\t\tthis._components.items[i]._executionOrder = executionOrderCounter++;\n\t\t\t\t}\n\t\t}\n\t\t_callComponentMethod(components, name, dt) {\n\t\t\t\tfor(components.loopIndex = 0; components.loopIndex < components.length; components.loopIndex++){\n\t\t\t\t\t\tcomponents.items[components.loopIndex][name](dt);\n\t\t\t\t}\n\t\t}\n\t\t_onInitialize() {\n\t\t\t\tthis.preloading = false;\n\t\t\t\tthis._callComponentMethod(this._components, METHOD_INITIALIZE_ATTRIBUTES);\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_INITIALIZE);\n\t\t}\n\t\t_onPostInitialize() {\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_POST_INITIALIZE);\n\t\t}\n\t\t_onUpdate(dt) {\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_UPDATE, dt);\n\t\t}\n\t\t_onPostUpdate(dt) {\n\t\t\t\tthis._callComponentMethod(this._enabledComponents, METHOD_POST_UPDATE, dt);\n\t\t}\n\t\t_addComponentToEnabled(component) {\n\t\t\t\tthis._enabledComponents.insert(component);\n\t\t}\n\t\t_removeComponentFromEnabled(component) {\n\t\t\t\tthis._enabledComponents.remove(component);\n\t\t}\n\t\t_onBeforeRemove(entity, component) {\n\t\t\t\tconst ind = this._components.items.indexOf(component);\n\t\t\t\tif (ind >= 0) {\n\t\t\t\t\t\tcomponent._onBeforeRemove();\n\t\t\t\t}\n\t\t\t\tthis._removeComponentFromEnabled(component);\n\t\t\t\tthis._components.remove(component);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.app.systems.off('initialize', this._onInitialize, this);\n\t\t\t\tthis.app.systems.off('postInitialize', this._onPostInitialize, this);\n\t\t\t\tthis.app.systems.off('update', this._onUpdate, this);\n\t\t\t\tthis.app.systems.off('postUpdate', this._onPostUpdate, this);\n\t\t}\n}\n\nvar gsplatIntervalTextureGLSL = `\nprecision highp usampler2D;\nuniform usampler2D uIntervalsTexture;\nuniform int uNumIntervals;\nuniform int uTextureWidth;\nuniform int uActiveSplats;\nivec2 getCoordFromIndex(int index, int textureWidth) {\n\treturn ivec2(index % textureWidth, index / textureWidth);\n}\nvoid main() {\n\tivec2 coord = ivec2(gl_FragCoord.xy);\n\tint targetIndex = coord.y * uTextureWidth + coord.x;\n\t\n\tif (targetIndex >= uActiveSplats) {\n\t\tgl_FragColor = 0u;\n\t\treturn;\n\t}\n\t\n\tint left = 0;\n\tint right = uNumIntervals - 1;\n\tint intervalIndex = 0;\n\t\n\twhile (left <= right) {\n\t\tint mid = (left + right) / 2;\n\t\t\n\t\tint textureWidth = textureSize(uIntervalsTexture, 0).x;\n\t\tivec2 intervalCoord = getCoordFromIndex(mid, textureWidth);\n\t\tuvec2 intervalData = texelFetch(uIntervalsTexture, intervalCoord, 0).rg;\n\t\t\n\t\tuint accumulatedSum = intervalData.g;\n\t\t\n\t\tif (uint(targetIndex) < accumulatedSum) {\n\t\t\tintervalIndex = mid;\n\t\t\tright = mid - 1;\n\t\t} else {\n\t\t\tleft = mid + 1;\n\t\t}\n\t}\n\t\n\tint textureWidth = textureSize(uIntervalsTexture, 0).x;\n\tivec2 intervalCoord = getCoordFromIndex(intervalIndex, textureWidth);\n\tuvec2 intervalData = texelFetch(uIntervalsTexture, intervalCoord, 0).rg;\n\t\n\tuint intervalStart = intervalData.r;\n\tuint currentAccSum = intervalData.g;\n\t\n\tuint prevAccSum = 0u;\n\tif (intervalIndex > 0) {\n\t\tivec2 prevCoord = getCoordFromIndex(intervalIndex - 1, textureWidth);\n\t\tprevAccSum = texelFetch(uIntervalsTexture, prevCoord, 0).g;\n\t}\n\t\n\tuint offsetInInterval = uint(targetIndex) - prevAccSum;\n\tuint originalIndex = intervalStart + offsetInInterval;\n\t\n\tgl_FragColor = originalIndex;\n}\n`;\n\nvar gsplatIntervalTextureWGSL = `\nvar uIntervalsTexture: texture_2d<u32>;\nuniform uNumIntervals: i32;\nuniform uTextureWidth: i32;\nuniform uActiveSplats: i32;\nfn getCoordFromIndex(index: i32, textureWidth: i32) -> vec2i {\n\treturn vec2i(index % textureWidth, index / textureWidth);\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\t\n\tlet coord = vec2i(i32(input.position.x), i32(input.position.y));\n\tlet targetIndex = coord.y * uniform.uTextureWidth + coord.x;\n\t\n\tif (targetIndex >= uniform.uActiveSplats) {\n\t\toutput.color = 0u;\n\t\treturn output;\n\t}\n\t\n\tvar left = 0i;\n\tvar right = uniform.uNumIntervals - 1;\n\tvar intervalIndex = 0i;\n\t\n\twhile (left <= right) {\n\t\tlet mid = (left + right) / 2;\n\t\t\n\t\tlet textureWidth = i32(textureDimensions(uIntervalsTexture, 0).x);\n\t\tlet intervalCoord = getCoordFromIndex(mid, textureWidth);\n\t\tlet intervalData = textureLoad(uIntervalsTexture, intervalCoord, 0).rg;\n\t\t\n\t\tlet accumulatedSum = intervalData.g;\n\t\t\n\t\tif (u32(targetIndex) < accumulatedSum) {\n\t\t\tintervalIndex = mid;\n\t\t\tright = mid - 1;\n\t\t} else {\n\t\t\tleft = mid + 1;\n\t\t}\n\t}\n\t\n\tlet textureWidth = i32(textureDimensions(uIntervalsTexture, 0).x);\n\tlet intervalCoord = getCoordFromIndex(intervalIndex, textureWidth);\n\tlet intervalData = textureLoad(uIntervalsTexture, intervalCoord, 0).rg;\n\t\n\tlet intervalStart = intervalData.r;\n\tlet currentAccSum = intervalData.g;\n\t\n\tvar prevAccSum = 0u;\n\tif (intervalIndex > 0) {\n\t\tlet prevCoord = getCoordFromIndex(intervalIndex - 1, textureWidth);\n\t\tprevAccSum = textureLoad(uIntervalsTexture, prevCoord, 0).g;\n\t}\n\t\n\tlet offsetInInterval = u32(targetIndex) - prevAccSum;\n\tlet originalIndex = intervalStart + offsetInInterval;\n\t\n\toutput.color = originalIndex;\n\treturn output;\n}\n`;\n\nclass GSplatIntervalTexture {\n\t\tconstructor(device){\n\t\t\t\tthis.texture = null;\n\t\t\t\tthis.rt = null;\n\t\t\t\tthis.intervalsDataTexture = null;\n\t\t\t\tthis.shader = null;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture?.destroy();\n\t\t\t\tthis.texture = null;\n\t\t\t\tthis.rt?.destroy();\n\t\t\t\tthis.rt = null;\n\t\t\t\tthis.intervalsDataTexture?.destroy();\n\t\t\t\tthis.intervalsDataTexture = null;\n\t\t\t\tthis.shader = null;\n\t\t}\n\t\tgetShader() {\n\t\t\t\tif (!this.shader) {\n\t\t\t\t\t\tthis.shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\tuniqueName: 'GSplatIntervalsShader',\n\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\t\t\tfragmentGLSL: gsplatIntervalTextureGLSL,\n\t\t\t\t\t\t\t\tfragmentWGSL: gsplatIntervalTextureWGSL,\n\t\t\t\t\t\t\t\tfragmentOutputTypes: [\n\t\t\t\t\t\t\t\t\t\t'uint'\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn this.shader;\n\t\t}\n\t\tcreateTexture(name, format, width, height) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t}\n\t\tupdate(intervals, totalIntervalSplats) {\n\t\t\t\tconst maxTextureSize = this.device.maxTextureSize;\n\t\t\t\tlet textureWidth = Math.ceil(Math.sqrt(totalIntervalSplats));\n\t\t\t\ttextureWidth = Math.min(textureWidth, maxTextureSize);\n\t\t\t\tconst textureHeight = Math.ceil(totalIntervalSplats / textureWidth);\n\t\t\t\tthis.texture = this.createTexture('intervalsTexture', PIXELFORMAT_R32U, textureWidth, textureHeight);\n\t\t\t\tthis.rt = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.texture,\n\t\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t\tconst numIntervals = intervals.length / 2;\n\t\t\t\tconst dataTextureSize = Math.ceil(Math.sqrt(numIntervals));\n\t\t\t\tthis.intervalsDataTexture = this.createTexture('intervalsData', PIXELFORMAT_RG32U, dataTextureSize, dataTextureSize);\n\t\t\t\tconst intervalsData = this.intervalsDataTexture.lock();\n\t\t\t\tlet runningSum = 0;\n\t\t\t\tfor(let i = 0; i < numIntervals; i++){\n\t\t\t\t\t\tconst start = intervals[i * 2];\n\t\t\t\t\t\tconst end = intervals[i * 2 + 1];\n\t\t\t\t\t\tconst intervalSize = end - start;\n\t\t\t\t\t\trunningSum += intervalSize;\n\t\t\t\t\t\tintervalsData[i * 2] = start;\n\t\t\t\t\t\tintervalsData[i * 2 + 1] = runningSum;\n\t\t\t\t}\n\t\t\t\tthis.intervalsDataTexture.unlock();\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tscope.resolve('uIntervalsTexture').setValue(this.intervalsDataTexture);\n\t\t\t\tscope.resolve('uNumIntervals').setValue(numIntervals);\n\t\t\t\tscope.resolve('uTextureWidth').setValue(textureWidth);\n\t\t\t\tscope.resolve('uActiveSplats').setValue(totalIntervalSplats);\n\t\t\t\tthis.device.setCullMode(CULLFACE_NONE);\n\t\t\t\tthis.device.setBlendState(BlendState.NOBLEND);\n\t\t\t\tthis.device.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdrawQuadWithShader(this.device, this.rt, this.getShader());\n\t\t\t\treturn totalIntervalSplats;\n\t\t}\n}\n\nconst vecs = [];\nclass GSplatInfo {\n\t\tconstructor(device, resource, placement){\n\t\t\t\tthis.activeSplats = 0;\n\t\t\t\tthis.intervals = [];\n\t\t\t\tthis.lineStart = 0;\n\t\t\t\tthis.lineCount = 0;\n\t\t\t\tthis.padding = 0;\n\t\t\t\tthis.viewport = new Vec4();\n\t\t\t\tthis.previousWorldTransform = new Mat4();\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tthis.intervalTexture = null;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.resource = resource;\n\t\t\t\tthis.node = placement.node;\n\t\t\t\tthis.lodIndex = placement.lodIndex;\n\t\t\t\tthis.numSplats = resource.numSplats;\n\t\t\t\tthis.aabb.copy(placement.aabb);\n\t\t\t\tthis.updateIntervals(placement.intervals);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.intervals.length = 0;\n\t\t\t\tthis.intervalTexture?.destroy();\n\t\t}\n\t\tsetLines(start, count, textureSize, activeSplats) {\n\t\t\t\tthis.lineStart = start;\n\t\t\t\tthis.lineCount = count;\n\t\t\t\tthis.padding = textureSize * count - activeSplats;\n\t\t\t\tthis.viewport.set(0, start, textureSize, count);\n\t\t}\n\t\tupdateIntervals(intervals) {\n\t\t\t\tconst resource = this.resource;\n\t\t\t\tthis.intervals.length = 0;\n\t\t\t\tthis.activeSplats = resource.numSplats;\n\t\t\t\tif (intervals.size > 0) {\n\t\t\t\t\t\tlet totalCount = 0;\n\t\t\t\t\t\tlet used = 0;\n\t\t\t\t\t\tfor (const interval of intervals.values()){\n\t\t\t\t\t\t\t\ttotalCount += interval.y - interval.x + 1;\n\t\t\t\t\t\t\t\tvecs[used++] = interval;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (totalCount !== this.numSplats) {\n\t\t\t\t\t\t\t\tvecs.length = used;\n\t\t\t\t\t\t\t\tvecs.sort((a, b)=>a.x - b.x);\n\t\t\t\t\t\t\t\tthis.intervals.length = used * 2;\n\t\t\t\t\t\t\t\tlet k = 0;\n\t\t\t\t\t\t\t\tlet currentStart = vecs[0].x;\n\t\t\t\t\t\t\t\tlet currentEnd = vecs[0].y;\n\t\t\t\t\t\t\t\tfor(let i = 1; i < used; i++){\n\t\t\t\t\t\t\t\t\t\tconst p = vecs[i];\n\t\t\t\t\t\t\t\t\t\tif (p.x === currentEnd + 1) {\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentEnd = p.y;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.intervals[k++] = currentStart;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.intervals[k++] = currentEnd + 1;\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentStart = p.x;\n\t\t\t\t\t\t\t\t\t\t\t\tcurrentEnd = p.y;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.intervals[k++] = currentStart;\n\t\t\t\t\t\t\t\tthis.intervals[k++] = currentEnd + 1;\n\t\t\t\t\t\t\t\tthis.intervals.length = k;\n\t\t\t\t\t\t\t\tthis.intervalTexture = new GSplatIntervalTexture(this.device);\n\t\t\t\t\t\t\t\tthis.activeSplats = this.intervalTexture.update(this.intervals, totalCount);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvecs.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tupdate() {\n\t\t\t\tconst worldMatrix = this.node.getWorldTransform();\n\t\t\t\tconst worldMatrixChanged = !this.previousWorldTransform.equals(worldMatrix);\n\t\t\t\tif (worldMatrixChanged) {\n\t\t\t\t\t\tthis.previousWorldTransform.copy(worldMatrix);\n\t\t\t\t}\n\t\t\t\treturn worldMatrixChanged;\n\t\t}\n}\n\nfunction UnifiedSortWorker() {\n\t\tconst myself = typeof self !== 'undefined' && self || require('node:worker_threads').parentPort;\n\t\tconst centersMap = new Map();\n\t\tlet centersData;\n\t\tlet distances;\n\t\tlet countBuffer;\n\t\tlet _radialSort = false;\n\t\tconst numBins = 32;\n\t\tconst binBase = new Array(numBins).fill(0);\n\t\tconst binDivider = new Array(numBins).fill(0);\n\t\tconst weightTiers = [\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 0,\n\t\t\t\t\t\tweight: 40.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 2,\n\t\t\t\t\t\tweight: 20.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 5,\n\t\t\t\t\t\tweight: 8.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: 10,\n\t\t\t\t\t\tweight: 3.0\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\tmaxDistance: Infinity,\n\t\t\t\t\t\tweight: 1.0\n\t\t\t\t}\n\t\t];\n\t\tconst weightByDistance = new Array(numBins);\n\t\tfor(let dist = 0; dist < numBins; ++dist){\n\t\t\t\tlet weight = 1.0;\n\t\t\t\tfor(let j = 0; j < weightTiers.length; ++j){\n\t\t\t\t\t\tif (dist <= weightTiers[j].maxDistance) {\n\t\t\t\t\t\t\t\tweight = weightTiers[j].weight;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tweightByDistance[dist] = weight;\n\t\t}\n\t\tconst setupCameraRelativeBins = (cameraBin, bucketCount)=>{\n\t\t\t\tconst totalBudget = bucketCount;\n\t\t\t\tconst bitsPerBin = [];\n\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\tconst distFromCamera = Math.abs(i - cameraBin);\n\t\t\t\t\t\tbitsPerBin[i] = weightByDistance[distFromCamera];\n\t\t\t\t}\n\t\t\t\tconst totalWeight = bitsPerBin.reduce((a, b)=>a + b, 0);\n\t\t\t\tlet accumulated = 0;\n\t\t\t\tfor(let i = 0; i < numBins; ++i){\n\t\t\t\t\t\tbinDivider[i] = Math.max(1, Math.floor(bitsPerBin[i] / totalWeight * totalBudget));\n\t\t\t\t\t\tbinBase[i] = accumulated;\n\t\t\t\t\t\taccumulated += binDivider[i];\n\t\t\t\t}\n\t\t\t\tif (accumulated > bucketCount) {\n\t\t\t\t\t\tconst excess = accumulated - bucketCount;\n\t\t\t\t\t\tbinDivider[numBins - 1] = Math.max(1, binDivider[numBins - 1] - excess);\n\t\t\t\t}\n\t\t\t\tbinBase[numBins] = binBase[numBins - 1] + binDivider[numBins - 1];\n\t\t\t\tbinDivider[numBins] = 0;\n\t\t};\n\t\tconst evaluateSortKeysCommon = (sortParams, minDist, range, distances, countBuffer, centersData, processSplatFn)=>{\n\t\t\t\tconst { ids, lineStarts, padding, intervals, textureSize } = centersData;\n\t\t\t\tconst invBinRange = numBins / range;\n\t\t\t\tfor(let paramIdx = 0; paramIdx < sortParams.length; paramIdx++){\n\t\t\t\t\t\tconst params = sortParams[paramIdx];\n\t\t\t\t\t\tconst id = ids[paramIdx];\n\t\t\t\t\t\tconst centers = centersMap.get(id);\n\t\t\t\t\t\tif (!centers) {\n\t\t\t\t\t\t\t\tconsole.error('UnifiedSortWorker: No centers found for id', id);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet targetIndex = lineStarts[paramIdx] * textureSize;\n\t\t\t\t\t\tconst intervalsArray = intervals[paramIdx].length > 0 ? intervals[paramIdx] : [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tcenters.length / 3\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfor(let i = 0; i < intervalsArray.length; i += 2){\n\t\t\t\t\t\t\t\tconst intervalStart = intervalsArray[i] * 3;\n\t\t\t\t\t\t\t\tconst intervalEnd = intervalsArray[i + 1] * 3;\n\t\t\t\t\t\t\t\ttargetIndex = processSplatFn(centers, params, intervalStart, intervalEnd, targetIndex, invBinRange, minDist, range, distances, countBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst pad = padding[paramIdx];\n\t\t\t\t\t\tcountBuffer[0] += pad;\n\t\t\t\t\t\tdistances.fill(0, targetIndex, targetIndex + pad);\n\t\t\t\t\t\ttargetIndex += pad;\n\t\t\t\t}\n\t\t};\n\t\tconst evaluateSortKeysLinear = (sortParams, minDist, range, distances, countBuffer, centersData)=>{\n\t\t\t\tevaluateSortKeysCommon(sortParams, minDist, range, distances, countBuffer, centersData, (centers, params, intervalStart, intervalEnd, targetIndex, invBinRange, minDist, range, distances, countBuffer)=>{\n\t\t\t\t\t\tconst { transformedDirection, offset, scale } = params;\n\t\t\t\t\t\tconst dx = transformedDirection.x;\n\t\t\t\t\t\tconst dy = transformedDirection.y;\n\t\t\t\t\t\tconst dz = transformedDirection.z;\n\t\t\t\t\t\tconst sdx = dx * scale;\n\t\t\t\t\t\tconst sdy = dy * scale;\n\t\t\t\t\t\tconst sdz = dz * scale;\n\t\t\t\t\t\tconst add = offset - minDist;\n\t\t\t\t\t\tfor(let srcIndex = intervalStart; srcIndex < intervalEnd; srcIndex += 3){\n\t\t\t\t\t\t\t\tconst x = centers[srcIndex];\n\t\t\t\t\t\t\t\tconst y = centers[srcIndex + 1];\n\t\t\t\t\t\t\t\tconst z = centers[srcIndex + 2];\n\t\t\t\t\t\t\t\tconst dist = x * sdx + y * sdy + z * sdz + add;\n\t\t\t\t\t\t\t\tconst d = dist * invBinRange;\n\t\t\t\t\t\t\t\tconst bin = d >>> 0;\n\t\t\t\t\t\t\t\tconst sortKey = binBase[bin] + binDivider[bin] * (d - bin) >>> 0;\n\t\t\t\t\t\t\t\tdistances[targetIndex++] = sortKey;\n\t\t\t\t\t\t\t\tcountBuffer[sortKey]++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn targetIndex;\n\t\t\t\t});\n\t\t};\n\t\tconst evaluateSortKeysRadial = (sortParams, minDist, range, distances, countBuffer, centersData)=>{\n\t\t\t\tevaluateSortKeysCommon(sortParams, minDist, range, distances, countBuffer, centersData, (centers, params, intervalStart, intervalEnd, targetIndex, invBinRange, minDist, range, distances, countBuffer)=>{\n\t\t\t\t\t\tconst { transformedPosition, scale } = params;\n\t\t\t\t\t\tconst cx = transformedPosition.x;\n\t\t\t\t\t\tconst cy = transformedPosition.y;\n\t\t\t\t\t\tconst cz = transformedPosition.z;\n\t\t\t\t\t\tfor(let srcIndex = intervalStart; srcIndex < intervalEnd; srcIndex += 3){\n\t\t\t\t\t\t\t\tconst dx = centers[srcIndex] - cx;\n\t\t\t\t\t\t\t\tconst dy = centers[srcIndex + 1] - cy;\n\t\t\t\t\t\t\t\tconst dz = centers[srcIndex + 2] - cz;\n\t\t\t\t\t\t\t\tconst distSq = dx * dx + dy * dy + dz * dz;\n\t\t\t\t\t\t\t\tconst dist = Math.sqrt(distSq) * scale;\n\t\t\t\t\t\t\t\tconst invertedDist = range - dist;\n\t\t\t\t\t\t\t\tconst d = invertedDist * invBinRange;\n\t\t\t\t\t\t\t\tconst bin = d >>> 0;\n\t\t\t\t\t\t\t\tconst sortKey = binBase[bin] + binDivider[bin] * (d - bin) >>> 0;\n\t\t\t\t\t\t\t\tdistances[targetIndex++] = sortKey;\n\t\t\t\t\t\t\t\tcountBuffer[sortKey]++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn targetIndex;\n\t\t\t\t});\n\t\t};\n\t\tconst countingSort = (bucketCount, countBuffer, numVertices, distances, order)=>{\n\t\t\t\tfor(let i = 1; i < bucketCount; i++){\n\t\t\t\t\t\tcountBuffer[i] += countBuffer[i - 1];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\t\t\tconst distance = distances[i];\n\t\t\t\t\t\tconst destIndex = --countBuffer[distance];\n\t\t\t\t\t\torder[destIndex] = i;\n\t\t\t\t}\n\t\t};\n\t\tconst computeEffectiveDistanceRangeLinear = (sortParams)=>{\n\t\t\t\tlet minDist = Infinity;\n\t\t\t\tlet maxDist = -Infinity;\n\t\t\t\tfor(let paramIdx = 0; paramIdx < sortParams.length; paramIdx++){\n\t\t\t\t\t\tconst params = sortParams[paramIdx];\n\t\t\t\t\t\tconst { transformedDirection, offset, scale, aabbMin, aabbMax } = params;\n\t\t\t\t\t\tconst dx = transformedDirection.x;\n\t\t\t\t\t\tconst dy = transformedDirection.y;\n\t\t\t\t\t\tconst dz = transformedDirection.z;\n\t\t\t\t\t\tconst pxMin = dx >= 0 ? aabbMin[0] : aabbMax[0];\n\t\t\t\t\t\tconst pyMin = dy >= 0 ? aabbMin[1] : aabbMax[1];\n\t\t\t\t\t\tconst pzMin = dz >= 0 ? aabbMin[2] : aabbMax[2];\n\t\t\t\t\t\tconst pxMax = dx >= 0 ? aabbMax[0] : aabbMin[0];\n\t\t\t\t\t\tconst pyMax = dy >= 0 ? aabbMax[1] : aabbMin[1];\n\t\t\t\t\t\tconst pzMax = dz >= 0 ? aabbMax[2] : aabbMin[2];\n\t\t\t\t\t\tconst dMin = pxMin * dx + pyMin * dy + pzMin * dz;\n\t\t\t\t\t\tconst dMax = pxMax * dx + pyMax * dy + pzMax * dz;\n\t\t\t\t\t\tconst eMin = dMin * scale + offset;\n\t\t\t\t\t\tconst eMax = dMax * scale + offset;\n\t\t\t\t\t\tconst localMin = Math.min(eMin, eMax);\n\t\t\t\t\t\tconst localMax = Math.max(eMin, eMax);\n\t\t\t\t\t\tif (localMin < minDist) minDist = localMin;\n\t\t\t\t\t\tif (localMax > maxDist) maxDist = localMax;\n\t\t\t\t}\n\t\t\t\tif (minDist === Infinity) {\n\t\t\t\t\t\tminDist = 0;\n\t\t\t\t\t\tmaxDist = 0;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tminDist,\n\t\t\t\t\t\tmaxDist\n\t\t\t\t};\n\t\t};\n\t\tconst computeEffectiveDistanceRangeRadial = (sortParams)=>{\n\t\t\t\tlet maxDist = -Infinity;\n\t\t\t\tfor(let paramIdx = 0; paramIdx < sortParams.length; paramIdx++){\n\t\t\t\t\t\tconst params = sortParams[paramIdx];\n\t\t\t\t\t\tconst { transformedPosition, scale, aabbMin, aabbMax } = params;\n\t\t\t\t\t\tconst cx = transformedPosition.x;\n\t\t\t\t\t\tconst cy = transformedPosition.y;\n\t\t\t\t\t\tconst cz = transformedPosition.z;\n\t\t\t\t\t\tfor(let i = 0; i < 8; i++){\n\t\t\t\t\t\t\t\tconst px = i & 1 ? aabbMax[0] : aabbMin[0];\n\t\t\t\t\t\t\t\tconst py = i & 2 ? aabbMax[1] : aabbMin[1];\n\t\t\t\t\t\t\t\tconst pz = i & 4 ? aabbMax[2] : aabbMin[2];\n\t\t\t\t\t\t\t\tconst dx = px - cx;\n\t\t\t\t\t\t\t\tconst dy = py - cy;\n\t\t\t\t\t\t\t\tconst dz = pz - cz;\n\t\t\t\t\t\t\t\tconst distSq = dx * dx + dy * dy + dz * dz;\n\t\t\t\t\t\t\t\tconst dist = Math.sqrt(distSq) * scale;\n\t\t\t\t\t\t\t\tif (dist > maxDist) maxDist = dist;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst minDist = 0;\n\t\t\t\tif (maxDist < 0) {\n\t\t\t\t\t\tmaxDist = 0;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tminDist,\n\t\t\t\t\t\tmaxDist\n\t\t\t\t};\n\t\t};\n\t\tconst sort = (sortParams, order, centersData)=>{\n\t\t\t\tconst { minDist, maxDist } = _radialSort ? computeEffectiveDistanceRangeRadial(sortParams) : computeEffectiveDistanceRangeLinear(sortParams);\n\t\t\t\tconst numVertices = centersData.totalUsedPixels;\n\t\t\t\tconst compareBits = Math.max(10, Math.min(20, Math.round(Math.log2(numVertices / 4))));\n\t\t\t\tconst bucketCount = 2 ** compareBits + 1;\n\t\t\t\tif (distances?.length !== numVertices) {\n\t\t\t\t\t\tdistances = new Uint32Array(numVertices);\n\t\t\t\t}\n\t\t\t\tif (!countBuffer || countBuffer.length !== bucketCount) {\n\t\t\t\t\t\tcountBuffer = new Uint32Array(bucketCount);\n\t\t\t\t} else {\n\t\t\t\t\t\tcountBuffer.fill(0);\n\t\t\t\t}\n\t\t\t\tconst range = maxDist - minDist;\n\t\t\t\tlet cameraBin;\n\t\t\t\tif (_radialSort) {\n\t\t\t\t\t\tcameraBin = numBins - 1;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst cameraOffsetFromRangeStart = 0 - minDist;\n\t\t\t\t\t\tconst cameraBinFloat = cameraOffsetFromRangeStart / range * numBins;\n\t\t\t\t\t\tcameraBin = Math.max(0, Math.min(numBins - 1, Math.floor(cameraBinFloat)));\n\t\t\t\t}\n\t\t\t\tsetupCameraRelativeBins(cameraBin, bucketCount);\n\t\t\t\tif (_radialSort) {\n\t\t\t\t\t\tevaluateSortKeysRadial(sortParams, minDist, range, distances, countBuffer, centersData);\n\t\t\t\t} else {\n\t\t\t\t\t\tevaluateSortKeysLinear(sortParams, minDist, range, distances, countBuffer, centersData);\n\t\t\t\t}\n\t\t\t\tcountingSort(bucketCount, countBuffer, numVertices, distances, order);\n\t\t\t\tconst count = numVertices;\n\t\t\t\tconst transferList = [\n\t\t\t\t\t\torder.buffer\n\t\t\t\t];\n\t\t\t\tconst response = {\n\t\t\t\t\t\torder: order.buffer,\n\t\t\t\t\t\tcount,\n\t\t\t\t\t\tversion: centersData.version\n\t\t\t\t};\n\t\t\t\tmyself.postMessage(response, transferList);\n\t\t};\n\t\tmyself.addEventListener('message', (message)=>{\n\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\tswitch(msgData.command){\n\t\t\t\t\t\tcase 'addCenters':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcentersMap.set(msgData.id, new Float32Array(msgData.centers));\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'removeCenters':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcentersMap.delete(msgData.id);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'sort':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t_radialSort = msgData.radialSorting || false;\n\t\t\t\t\t\t\t\t\t\tconst order = new Uint32Array(msgData.order);\n\t\t\t\t\t\t\t\t\t\tsort(msgData.sortParams, order, centersData);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'intervals':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tcentersData = msgData;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t});\n}\n\nclass GSplatUnifiedSorter extends EventHandler {\n\t\tconstructor(){\n\t\t\t\tsuper(), this.bufferLength = 0, this.availableOrderData = [], this.jobsInFlight = 0, this.hasNewVersion = false, this.centersSet = new Set(), this._destroyed = false;\n\t\t\t\tconst workerSource = `(${UnifiedSortWorker.toString()})()`;\n\t\t\t\tif (platform.environment === 'node') {\n\t\t\t\t\t\tthis.worker = new Worker(workerSource, {\n\t\t\t\t\t\t\t\teval: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.worker.on('message', this.onSorted.bind(this));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.worker = new Worker(URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\tworkerSource\n\t\t\t\t\t\t], {\n\t\t\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t\t\t})));\n\t\t\t\t\t\tthis.worker.addEventListener('message', this.onSorted.bind(this));\n\t\t\t\t}\n\t\t}\n\t\tonSorted(message) {\n\t\t\t\tif (this._destroyed) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst msgData = message.data ?? message;\n\t\t\t\tconst orderData = new Uint32Array(msgData.order);\n\t\t\t\tthis.jobsInFlight--;\n\t\t\t\tthis.fire('sorted', msgData.count, msgData.version, orderData);\n\t\t\t\tif (orderData.length === this.bufferLength) {\n\t\t\t\t\t\tthis.availableOrderData.push(orderData);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._destroyed = true;\n\t\t\t\tthis.worker.terminate();\n\t\t\t\tthis.worker = null;\n\t\t}\n\t\tsetCenters(id, centers) {\n\t\t\t\tif (centers) {\n\t\t\t\t\t\tif (!this.centersSet.has(id)) {\n\t\t\t\t\t\t\t\tthis.centersSet.add(id);\n\t\t\t\t\t\t\t\tconst centersBuffer = centers.buffer.slice();\n\t\t\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\t\t\tcommand: 'addCenters',\n\t\t\t\t\t\t\t\t\t\tid: id,\n\t\t\t\t\t\t\t\t\t\tcenters: centersBuffer\n\t\t\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\t\t\tcentersBuffer\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this.centersSet.has(id)) {\n\t\t\t\t\t\t\t\tthis.centersSet.delete(id);\n\t\t\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\t\t\tcommand: 'removeCenters',\n\t\t\t\t\t\t\t\t\t\tid: id\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tsetSortParameters(payload) {\n\t\t\t\tthis.hasNewVersion = true;\n\t\t\t\tconst { textureSize } = payload;\n\t\t\t\tconst newLength = textureSize * textureSize;\n\t\t\t\tif (newLength !== this.bufferLength) {\n\t\t\t\t\t\tthis.bufferLength = newLength;\n\t\t\t\t\t\tthis.availableOrderData.length = 0;\n\t\t\t\t}\n\t\t\t\tthis.worker.postMessage(payload);\n\t\t}\n\t\tsetSortParams(params, radialSorting) {\n\t\t\t\tif (this.hasNewVersion || this.jobsInFlight === 0) {\n\t\t\t\t\t\tlet orderData = this.availableOrderData.pop();\n\t\t\t\t\t\tif (!orderData) {\n\t\t\t\t\t\t\t\torderData = new Uint32Array(this.bufferLength);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.jobsInFlight++;\n\t\t\t\t\t\tthis.hasNewVersion = false;\n\t\t\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\t\t\tcommand: 'sort',\n\t\t\t\t\t\t\t\tsortParams: params,\n\t\t\t\t\t\t\t\tradialSorting: radialSorting,\n\t\t\t\t\t\t\t\torder: orderData.buffer\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\torderData.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n}\n\nconst _viewMat = new Mat4();\nconst _whiteColor = [\n\t\t1,\n\t\t1,\n\t\t1\n];\nclass GSplatWorkBufferRenderPass extends RenderPass {\n\t\tinit(renderTarget) {\n\t\t\t\tsuper.init(renderTarget);\n\t\t\t\tthis.colorOps.clear = false;\n\t\t\t\tthis.depthStencilOps.clearDepth = false;\n\t\t}\n\t\tupdate(splats, cameraNode, colorsByLod) {\n\t\t\t\tthis.splats.length = 0;\n\t\t\t\tthis.colorsByLod = colorsByLod;\n\t\t\t\tfor(let i = 0; i < splats.length; i++){\n\t\t\t\t\t\tconst splatInfo = splats[i];\n\t\t\t\t\t\tif (splatInfo.activeSplats > 0) {\n\t\t\t\t\t\t\t\tthis.splats.push(splatInfo);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.cameraNode = cameraNode;\n\t\t\t\treturn this.splats.length > 0;\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { device, splats, cameraNode } = this;\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setStencilState();\n\t\t\t\tconst viewInvMat = cameraNode.getWorldTransform();\n\t\t\t\tconst viewMat = _viewMat.copy(viewInvMat).invert();\n\t\t\t\tdevice.scope.resolve('matrix_view').setValue(viewMat.data);\n\t\t\t\tfor(let i = 0; i < splats.length; i++){\n\t\t\t\t\t\tthis.renderSplat(splats[i]);\n\t\t\t\t}\n\t\t}\n\t\trenderSplat(splatInfo) {\n\t\t\t\tconst { device, resource } = splatInfo;\n\t\t\t\tconst scope = device.scope;\n\t\t\t\tconst { intervals, activeSplats, lineStart, viewport, intervalTexture } = splatInfo;\n\t\t\t\tconst workBufferRenderInfo = resource.getWorkBufferRenderInfo(intervals.length > 0);\n\t\t\t\tworkBufferRenderInfo.material.setParameters(device);\n\t\t\t\tscope.resolve('uTransform').setValue(splatInfo.node.getWorldTransform().data);\n\t\t\t\tif (intervalTexture) {\n\t\t\t\t\t\tscope.resolve('uIntervalsTexture').setValue(intervalTexture.texture);\n\t\t\t\t}\n\t\t\t\tscope.resolve('uActiveSplats').setValue(activeSplats);\n\t\t\t\tscope.resolve('uStartLine').setValue(lineStart);\n\t\t\t\tscope.resolve('uViewportWidth').setValue(viewport.z);\n\t\t\t\tconst color = this.colorsByLod?.[splatInfo.lodIndex] ?? _whiteColor;\n\t\t\t\tscope.resolve('uColorMultiply').setValue(color);\n\t\t\t\tscope.resolve('matrix_model').setValue(splatInfo.node.getWorldTransform().data);\n\t\t\t\tworkBufferRenderInfo.quadRender.render(viewport);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.splats.length = 0;\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this.splats = [], this.colorsByLod = undefined, this.cameraNode = null;\n\t\t}\n}\n\nlet id = 0;\nclass GSplatWorkBuffer {\n\t\tconstructor(device){\n\t\t\t\tthis.id = id++;\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.colorTexture = this.createTexture('splatColor', PIXELFORMAT_RGBA16F, 1, 1);\n\t\t\t\tthis.covATexture = this.createTexture('covA', PIXELFORMAT_RGBA16F, 1, 1);\n\t\t\t\tthis.covBTexture = this.createTexture('covB', PIXELFORMAT_RGBA16F, 1, 1);\n\t\t\t\tthis.centerTexture = this.createTexture('center', PIXELFORMAT_RGBA16F, 1, 1);\n\t\t\t\tthis.renderTarget = new RenderTarget({\n\t\t\t\t\t\tname: `GsplatWorkBuffer-MRT-${this.id}`,\n\t\t\t\t\t\tcolorBuffers: [\n\t\t\t\t\t\t\t\tthis.colorTexture,\n\t\t\t\t\t\t\t\tthis.centerTexture,\n\t\t\t\t\t\t\t\tthis.covATexture,\n\t\t\t\t\t\t\t\tthis.covBTexture\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tflipY: true\n\t\t\t\t});\n\t\t\t\tthis.orderTexture = this.createTexture('SplatGlobalOrder', PIXELFORMAT_R32U, 1, 1);\n\t\t\t\tthis.renderPass = new GSplatWorkBufferRenderPass(device);\n\t\t\t\tthis.renderPass.init(this.renderTarget);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.renderPass?.destroy();\n\t\t\t\tthis.colorTexture?.destroy();\n\t\t\t\tthis.covATexture?.destroy();\n\t\t\t\tthis.covBTexture?.destroy();\n\t\t\t\tthis.centerTexture?.destroy();\n\t\t\t\tthis.orderTexture?.destroy();\n\t\t\t\tthis.renderTarget?.destroy();\n\t\t}\n\t\tget textureSize() {\n\t\t\t\treturn this.orderTexture.width;\n\t\t}\n\t\tsetOrderData(data) {\n\t\t\t\tconst len = this.orderTexture.width * this.orderTexture.height;\n\t\t\t\tif (len !== data.length) ;\n\t\t\t\tthis.orderTexture._levels[0] = data;\n\t\t\t\tthis.orderTexture.upload();\n\t\t}\n\t\tcreateTexture(name, format, w, h) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: w,\n\t\t\t\t\t\theight: h,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t}\n\t\tresize(textureSize) {\n\t\t\t\tthis.renderTarget.resize(textureSize, textureSize);\n\t\t\t\tthis.orderTexture.resize(textureSize, textureSize);\n\t\t}\n\t\trender(splats, cameraNode, colorsByLod) {\n\t\t\t\tif (this.renderPass.update(splats, cameraNode, colorsByLod)) {\n\t\t\t\t\t\tthis.renderPass.render();\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatRenderer {\n\t\tconstructor(device, node, cameraNode, layer, workBuffer){\n\t\t\t\tthis.instanceIndices = null;\n\t\t\t\tthis.instanceIndicesCount = 0;\n\t\t\t\tthis.viewportParams = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.node = node;\n\t\t\t\tthis.cameraNode = cameraNode;\n\t\t\t\tthis.layer = layer;\n\t\t\t\tthis.workBuffer = workBuffer;\n\t\t\t\tthis._material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'UnifiedSplatMaterial',\n\t\t\t\t\t\tvertexGLSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\tfragmentGLSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\tvertexWGSL: '#include \"gsplatVS\"',\n\t\t\t\t\t\tfragmentWGSL: '#include \"gsplatPS\"',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tvertex_id_attrib: SEMANTIC_ATTR13\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._material.setDefine('GSPLAT_WORKBUFFER_DATA', true);\n\t\t\t\tthis._material.setParameter('splatColor', workBuffer.colorTexture);\n\t\t\t\tthis._material.setParameter('covA', workBuffer.covATexture);\n\t\t\t\tthis._material.setParameter('covB', workBuffer.covBTexture);\n\t\t\t\tthis._material.setParameter('center', workBuffer.centerTexture);\n\t\t\t\tthis._material.setDefine('SH_BANDS', '0');\n\t\t\t\tthis._material.setParameter('numSplats', 0);\n\t\t\t\tthis._material.setParameter('splatOrder', workBuffer.orderTexture);\n\t\t\t\tthis._material.setParameter('alphaClip', 0.3);\n\t\t\t\tthis._material.setDefine(`DITHER_${'NONE'}`, '');\n\t\t\t\tthis._material.cull = CULLFACE_NONE;\n\t\t\t\tthis._material.blendType = BLEND_PREMULTIPLIED;\n\t\t\t\tthis._material.depthWrite = false;\n\t\t\t\tthis._material.update();\n\t\t\t\tthis.meshInstance = this.createMeshInstance();\n\t\t\t\tlayer.addMeshInstances([\n\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t]);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.layer.removeMeshInstances([\n\t\t\t\t\t\tthis.meshInstance\n\t\t\t\t]);\n\t\t\t\tthis._material.destroy();\n\t\t\t\tthis.meshInstance.destroy();\n\t\t}\n\t\tsetNumSplats(count) {\n\t\t\t\tthis.meshInstance.instancingCount = Math.ceil(count / GSplatResourceBase.instanceSize);\n\t\t\t\tthis._material.setParameter('numSplats', count);\n\t\t\t\tthis.meshInstance.visible = count > 0;\n\t\t}\n\t\tsetMaxNumSplats(numSplats) {\n\t\t\t\tconst roundedNumSplats = math.roundUp(numSplats, GSplatResourceBase.instanceSize);\n\t\t\t\tif (this.instanceIndicesCount < roundedNumSplats) {\n\t\t\t\t\t\tthis.instanceIndicesCount = roundedNumSplats;\n\t\t\t\t\t\tthis.instanceIndices?.destroy();\n\t\t\t\t\t\tthis.instanceIndices = GSplatResourceBase.createInstanceIndices(this.device, numSplats);\n\t\t\t\t\t\tthis.meshInstance.setInstancing(this.instanceIndices, true);\n\t\t\t\t}\n\t\t}\n\t\tcreateMeshInstance() {\n\t\t\t\tconst mesh = GSplatResourceBase.createMesh(this.device);\n\t\t\t\tconst textureSize = this.workBuffer.textureSize;\n\t\t\t\tconst instanceIndices = GSplatResourceBase.createInstanceIndices(this.device, textureSize * textureSize);\n\t\t\t\tconst meshInstance = new MeshInstance(mesh, this._material);\n\t\t\t\tmeshInstance.node = this.node;\n\t\t\t\tmeshInstance.setInstancing(instanceIndices, true);\n\t\t\t\tmeshInstance.instancingCount = 0;\n\t\t\t\tconst thisCamera = this.cameraNode.camera;\n\t\t\t\tmeshInstance.isVisibleFunc = (camera)=>{\n\t\t\t\t\t\tconst vis = thisCamera.camera === camera;\n\t\t\t\t\t\treturn vis;\n\t\t\t\t};\n\t\t\t\treturn meshInstance;\n\t\t}\n\t\tupdateViewport(cameraNode) {\n\t\t\t\tconst camera = cameraNode.camera;\n\t\t\t\tconst cameraRect = camera.rect;\n\t\t\t\tconst renderTarget = camera?.renderTarget;\n\t\t\t\tconst { width, height } = renderTarget ?? this.device;\n\t\t\t\tconst viewport = this.viewportParams;\n\t\t\t\tviewport[0] = width * cameraRect.z;\n\t\t\t\tviewport[1] = height * cameraRect.w;\n\t\t\t\tconst xr = camera?.camera?.xr;\n\t\t\t\tif (xr?.active && xr.views.list.length === 2) {\n\t\t\t\t\t\tviewport[0] *= 0.5;\n\t\t\t\t}\n\t\t\t\tthis._material.setParameter('viewport', viewport);\n\t\t}\n}\n\nclass GSplatPlacement {\n\t\tconstructor(resource, node, lodIndex = 0){\n\t\t\t\tthis.intervals = new Map();\n\t\t\t\tthis.lodIndex = 0;\n\t\t\t\tthis._lodDistances = null;\n\t\t\t\tthis._aabb = new BoundingBox();\n\t\t\t\tthis.resource = resource;\n\t\t\t\tthis.node = node;\n\t\t\t\tthis.lodIndex = lodIndex;\n\t\t}\n\t\tset aabb(aabb) {\n\t\t\t\tthis._aabb.copy(aabb);\n\t\t}\n\t\tget aabb() {\n\t\t\t\treturn this._aabb;\n\t\t}\n\t\tset lodDistances(distances) {\n\t\t\t\tconst isOctree = !!(this.resource && this.resource.octree);\n\t\t\t\tif (isOctree) {\n\t\t\t\t\t\tif (distances) {\n\t\t\t\t\t\t\t\tthis.resource.octree?.lodLevels ?? 1;\n\t\t\t\t\t\t\t\tthis._lodDistances = distances.slice();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._lodDistances = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget lodDistances() {\n\t\t\t\treturn this._lodDistances ? this._lodDistances.slice() : null;\n\t\t}\n}\n\nconst _invWorldMat = new Mat4();\nconst _localCameraPos = new Vec3();\nconst _localCameraFwd = new Vec3();\nconst _dirToNode = new Vec3();\nconst _tempCompletedUrls = [];\nnew BoundingBox();\n[\n\t\tnew Color(1, 0, 0),\n\t\tnew Color(0, 1, 0),\n\t\tnew Color(0, 0, 1),\n\t\tnew Color(1, 1, 0),\n\t\tnew Color(1, 0, 1)\n];\nclass GSplatOctreeInstance {\n\t\tconstructor(octree, placement, assetLoader){\n\t\t\t\tthis.activePlacements = new Set();\n\t\t\t\tthis.dirtyModifiedPlacements = false;\n\t\t\t\tthis.pending = new Set();\n\t\t\t\tthis.pendingDecrements = new Map();\n\t\t\t\tthis.removedCandidates = new Set();\n\t\t\t\tthis.previousPosition = new Vec3();\n\t\t\t\tthis.needsLodUpdate = false;\n\t\t\t\tthis.prefetchPending = new Set();\n\t\t\t\tthis.pendingVisibleAdds = new Map();\n\t\t\t\tthis.octree = octree;\n\t\t\t\tthis.placement = placement;\n\t\t\t\tthis.assetLoader = assetLoader;\n\t\t\t\tthis.nodeLods = new Int32Array(octree.nodes.length);\n\t\t\t\tthis.nodeLods.fill(-1);\n\t\t\t\tconst numFiles = octree.files.length;\n\t\t\t\tthis.filePlacements = new Array(numFiles).fill(null);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.pending.clear();\n\t\t\t\tthis.pendingDecrements.clear();\n\t\t\t\tthis.filePlacements.length = 0;\n\t\t}\n\t\tgetFileDecrements() {\n\t\t\t\tconst toRelease = [];\n\t\t\t\tfor(let i = 0; i < this.filePlacements.length; i++){\n\t\t\t\t\t\tif (this.filePlacements[i]) {\n\t\t\t\t\t\t\t\ttoRelease.push(i);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn toRelease;\n\t\t}\n\t\tcalculateNodeLod(localCameraPosition, localCameraForward, nodeIndex, maxLod, lodDistances, lodBehindPenalty) {\n\t\t\t\tconst node = this.octree.nodes[nodeIndex];\n\t\t\t\t_dirToNode.copy(node.bounds.center).sub(localCameraPosition);\n\t\t\t\tlet distance = _dirToNode.length();\n\t\t\t\tif (lodBehindPenalty > 1 && distance > 0.01) {\n\t\t\t\t\t\tconst dotOverDistance = localCameraForward.dot(_dirToNode) / distance;\n\t\t\t\t\t\tif (dotOverDistance < 0) {\n\t\t\t\t\t\t\t\tconst t = -dotOverDistance;\n\t\t\t\t\t\t\t\tconst factor = 1 + t * (lodBehindPenalty - 1);\n\t\t\t\t\t\t\t\tdistance *= factor;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let lod = 0; lod < maxLod; lod++){\n\t\t\t\t\t\tif (distance < lodDistances[lod]) {\n\t\t\t\t\t\t\t\treturn lod;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn maxLod;\n\t\t}\n\t\tselectDesiredLodIndex(node, optimalLodIndex, maxLod, lodUnderfillLimit) {\n\t\t\t\tif (lodUnderfillLimit > 0) {\n\t\t\t\t\t\tconst allowedMaxCoarseLod = Math.min(maxLod, optimalLodIndex + lodUnderfillLimit);\n\t\t\t\t\t\tfor(let lod = optimalLodIndex; lod <= allowedMaxCoarseLod; lod++){\n\t\t\t\t\t\t\t\tconst fi = node.lods[lod].fileIndex;\n\t\t\t\t\t\t\t\tif (fi !== -1 && this.octree.getFileResource(fi)) {\n\t\t\t\t\t\t\t\t\t\treturn lod;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let lod = allowedMaxCoarseLod; lod >= optimalLodIndex; lod--){\n\t\t\t\t\t\t\t\tconst fi = node.lods[lod].fileIndex;\n\t\t\t\t\t\t\t\tif (fi !== -1) {\n\t\t\t\t\t\t\t\t\t\treturn lod;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn optimalLodIndex;\n\t\t}\n\t\tprefetchNextLod(node, desiredLodIndex, optimalLodIndex) {\n\t\t\t\tif (desiredLodIndex === -1 || optimalLodIndex === -1) return;\n\t\t\t\tif (desiredLodIndex === optimalLodIndex) {\n\t\t\t\t\t\tconst fi = node.lods[optimalLodIndex].fileIndex;\n\t\t\t\t\t\tif (fi !== -1) {\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fi, this.assetLoader);\n\t\t\t\t\t\t\t\tif (!this.octree.getFileResource(fi)) {\n\t\t\t\t\t\t\t\t\t\tthis.prefetchPending.add(fi);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst targetLod = Math.max(optimalLodIndex, desiredLodIndex - 1);\n\t\t\t\tfor(let lod = targetLod; lod >= optimalLodIndex; lod--){\n\t\t\t\t\t\tconst fi = node.lods[lod].fileIndex;\n\t\t\t\t\t\tif (fi !== -1) {\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fi, this.assetLoader);\n\t\t\t\t\t\t\t\tif (!this.octree.getFileResource(fi)) {\n\t\t\t\t\t\t\t\t\t\tthis.prefetchPending.add(fi);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateLod(cameraNode, params) {\n\t\t\t\tconst worldCameraPosition = cameraNode.getPosition();\n\t\t\t\tconst octreeWorldTransform = this.placement.node.getWorldTransform();\n\t\t\t\t_invWorldMat.copy(octreeWorldTransform).invert();\n\t\t\t\tconst localCameraPosition = _invWorldMat.transformPoint(worldCameraPosition, _localCameraPos);\n\t\t\t\tconst worldCameraForward = cameraNode.forward;\n\t\t\t\tconst localCameraForward = _invWorldMat.transformVector(worldCameraForward, _localCameraFwd).normalize();\n\t\t\t\tconst maxLod = this.octree.lodLevels - 1;\n\t\t\t\tconst lodDistances = this.placement.lodDistances || [\n\t\t\t\t\t\t5,\n\t\t\t\t\t\t10,\n\t\t\t\t\t\t15,\n\t\t\t\t\t\t20,\n\t\t\t\t\t\t25\n\t\t\t\t];\n\t\t\t\tconst { lodBehindPenalty, lodRangeMin, lodRangeMax, lodUnderfillLimit = 0 } = params;\n\t\t\t\tconst rangeMin = Math.max(0, Math.min(lodRangeMin ?? 0, maxLod));\n\t\t\t\tconst rangeMax = Math.max(rangeMin, Math.min(lodRangeMax ?? maxLod, maxLod));\n\t\t\t\tconst nodes = this.octree.nodes;\n\t\t\t\tfor(let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex++){\n\t\t\t\t\t\tconst node = nodes[nodeIndex];\n\t\t\t\t\t\tlet optimalLodIndex = this.calculateNodeLod(localCameraPosition, localCameraForward, nodeIndex, maxLod, lodDistances, lodBehindPenalty);\n\t\t\t\t\t\tif (optimalLodIndex < rangeMin) optimalLodIndex = rangeMin;\n\t\t\t\t\t\tif (optimalLodIndex > rangeMax) optimalLodIndex = rangeMax;\n\t\t\t\t\t\tconst currentLodIndex = this.nodeLods[nodeIndex];\n\t\t\t\t\t\tconst desiredLodIndex = this.selectDesiredLodIndex(node, optimalLodIndex, maxLod, lodUnderfillLimit);\n\t\t\t\t\t\tif (desiredLodIndex !== currentLodIndex) {\n\t\t\t\t\t\t\t\tconst currentFileIndex = currentLodIndex >= 0 ? node.lods[currentLodIndex].fileIndex : -1;\n\t\t\t\t\t\t\t\tconst desiredFileIndex = desiredLodIndex >= 0 ? node.lods[desiredLodIndex].fileIndex : -1;\n\t\t\t\t\t\t\t\tconst wasVisible = currentFileIndex !== -1;\n\t\t\t\t\t\t\t\tconst willBeVisible = desiredFileIndex !== -1;\n\t\t\t\t\t\t\t\tconst pendingEntry = this.pendingDecrements.get(nodeIndex);\n\t\t\t\t\t\t\t\tif (pendingEntry) {\n\t\t\t\t\t\t\t\t\t\tif (pendingEntry.newFileIndex !== desiredFileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst prevPendingPlacement = this.filePlacements[pendingEntry.newFileIndex];\n\t\t\t\t\t\t\t\t\t\t\t\tif (prevPendingPlacement) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(pendingEntry.newFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (wasVisible && willBeVisible) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.set(nodeIndex, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\toldFileIndex: pendingEntry.oldFileIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewFileIndex: desiredFileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!wasVisible && willBeVisible) {\n\t\t\t\t\t\t\t\t\t\tconst prevPendingFi = this.pendingVisibleAdds.get(nodeIndex);\n\t\t\t\t\t\t\t\t\t\tif (prevPendingFi !== undefined && prevPendingFi !== desiredFileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(prevPendingFi, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.incrementFileRef(desiredFileIndex, nodeIndex, desiredLodIndex);\n\t\t\t\t\t\t\t\t\t\tconst newPlacement = this.filePlacements[desiredFileIndex];\n\t\t\t\t\t\t\t\t\t\tif (newPlacement?.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = desiredLodIndex;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.set(nodeIndex, desiredFileIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (wasVisible && !willBeVisible) {\n\t\t\t\t\t\t\t\t\t\tconst pendingEntry2 = this.pendingDecrements.get(nodeIndex);\n\t\t\t\t\t\t\t\t\t\tif (pendingEntry2) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(pendingEntry2.newFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(currentFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = -1;\n\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t} else if (wasVisible && willBeVisible) {\n\t\t\t\t\t\t\t\t\t\tthis.incrementFileRef(desiredFileIndex, nodeIndex, desiredLodIndex);\n\t\t\t\t\t\t\t\t\t\tconst newPlacement = this.filePlacements[desiredFileIndex];\n\t\t\t\t\t\t\t\t\t\tif (newPlacement?.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(currentFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = desiredLodIndex;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.set(nodeIndex, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\toldFileIndex: currentFileIndex,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewFileIndex: desiredFileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingVisibleAdds.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.prefetchNextLod(node, desiredLodIndex, optimalLodIndex);\n\t\t\t\t}\n\t\t}\n\t\tincrementFileRef(fileIndex, nodeIndex, lodIndex) {\n\t\t\t\tif (fileIndex === -1) return;\n\t\t\t\tlet placement = this.filePlacements[fileIndex];\n\t\t\t\tif (!placement) {\n\t\t\t\t\t\tplacement = new GSplatPlacement(null, this.placement.node, lodIndex);\n\t\t\t\t\t\tthis.filePlacements[fileIndex] = placement;\n\t\t\t\t\t\tconst removeScheduled = this.removedCandidates.delete(fileIndex);\n\t\t\t\t\t\tif (!removeScheduled) {\n\t\t\t\t\t\t\t\tthis.octree.incRefCount(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!this.addFilePlacement(fileIndex)) {\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fileIndex, this.assetLoader);\n\t\t\t\t\t\t\t\tthis.pending.add(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst nodes = this.octree.nodes;\n\t\t\t\tconst node = nodes[nodeIndex];\n\t\t\t\tconst lod = node.lods[lodIndex];\n\t\t\t\tconst interval = new Vec2(lod.offset, lod.offset + lod.count - 1);\n\t\t\t\tplacement.intervals.set(nodeIndex, interval);\n\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t}\n\t\tdecrementFileRef(fileIndex, nodeIndex) {\n\t\t\t\tif (fileIndex === -1) return;\n\t\t\t\tconst placement = this.filePlacements[fileIndex];\n\t\t\t\tif (!placement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (placement) {\n\t\t\t\t\t\tplacement.intervals.delete(nodeIndex);\n\t\t\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t\t\t\t\tif (placement.intervals.size === 0) {\n\t\t\t\t\t\t\t\tif (placement.resource) {\n\t\t\t\t\t\t\t\t\t\tthis.activePlacements.delete(placement);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.removedCandidates.add(fileIndex);\n\t\t\t\t\t\t\t\tthis.filePlacements[fileIndex] = null;\n\t\t\t\t\t\t\t\tthis.pending.delete(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\taddFilePlacement(fileIndex) {\n\t\t\t\tconst res = this.octree.getFileResource(fileIndex);\n\t\t\t\tif (res) {\n\t\t\t\t\t\tconst placement = this.filePlacements[fileIndex];\n\t\t\t\t\t\tif (placement) {\n\t\t\t\t\t\t\t\tplacement.resource = res;\n\t\t\t\t\t\t\t\tplacement.aabb.copy(res.aabb);\n\t\t\t\t\t\t\t\tthis.activePlacements.add(placement);\n\t\t\t\t\t\t\t\tthis.dirtyModifiedPlacements = true;\n\t\t\t\t\t\t\t\tthis.removedCandidates.delete(fileIndex);\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\ttestMoved(threshold) {\n\t\t\t\tconst position = this.placement.node.getPosition();\n\t\t\t\tconst length = position.distance(this.previousPosition);\n\t\t\t\tif (length > threshold) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\tupdateMoved() {\n\t\t\t\tthis.previousPosition.copy(this.placement.node.getPosition());\n\t\t}\n\t\tupdate(scene) {\n\t\t\t\tif (this.pending.size) {\n\t\t\t\t\t\tfor (const fileIndex of this.pending){\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fileIndex, this.assetLoader);\n\t\t\t\t\t\t\t\tif (this.addFilePlacement(fileIndex)) {\n\t\t\t\t\t\t\t\t\t\t_tempCompletedUrls.push(fileIndex);\n\t\t\t\t\t\t\t\t\t\tfor (const [nodeIndex, { oldFileIndex, newFileIndex }] of this.pendingDecrements){\n\t\t\t\t\t\t\t\t\t\t\t\tif (newFileIndex === fileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.decrementFileRef(oldFileIndex, nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.pendingDecrements.delete(nodeIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlet newLodIndex = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst nodeLods = this.octree.nodes[nodeIndex].lods;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let li = 0; li < nodeLods.length; li++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (nodeLods[li].fileIndex === newFileIndex) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tnewLodIndex = li;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.nodeLods[nodeIndex] = newLodIndex;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (_tempCompletedUrls.length > 0) {\n\t\t\t\t\t\t\t\tthis.needsLodUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const fileIndex of _tempCompletedUrls){\n\t\t\t\t\t\t\t\tthis.pending.delete(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_tempCompletedUrls.length = 0;\n\t\t\t\t}\n\t\t\t\tthis.pollPrefetchCompletions();\n\t\t\t\tconst dirty = this.dirtyModifiedPlacements;\n\t\t\t\tthis.dirtyModifiedPlacements = false;\n\t\t\t\treturn dirty;\n\t\t}\n\t\tdebugRender(scene) {}\n\t\tconsumeNeedsLodUpdate() {\n\t\t\t\tconst v = this.needsLodUpdate;\n\t\t\t\tthis.needsLodUpdate = false;\n\t\t\t\treturn v;\n\t\t}\n\t\tpollPrefetchCompletions() {\n\t\t\t\tif (this.prefetchPending.size) {\n\t\t\t\t\t\tfor (const fileIndex of this.prefetchPending){\n\t\t\t\t\t\t\t\tthis.octree.ensureFileResource(fileIndex, this.assetLoader);\n\t\t\t\t\t\t\t\tif (this.octree.getFileResource(fileIndex)) {\n\t\t\t\t\t\t\t\t\t\t_tempCompletedUrls.push(fileIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (_tempCompletedUrls.length > 0) {\n\t\t\t\t\t\t\t\tthis.needsLodUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const fileIndex of _tempCompletedUrls){\n\t\t\t\t\t\t\t\tthis.prefetchPending.delete(fileIndex);\n\t\t\t\t\t\t}\n\t\t\t\t\t\t_tempCompletedUrls.length = 0;\n\t\t\t\t}\n\t\t}\n}\n\nconst tmpMin = new Vec3();\nconst tmpMax = new Vec3();\nclass GSplatOctreeNode {\n\t\tconstructor(lods, boundData){\n\t\t\t\tthis.bounds = new BoundingBox();\n\t\t\t\tthis.lods = lods;\n\t\t\t\ttmpMin.set(boundData.min[0], boundData.min[1], boundData.min[2]);\n\t\t\t\ttmpMax.set(boundData.max[0], boundData.max[1], boundData.max[2]);\n\t\t\t\tthis.bounds.setMinMax(tmpMin, tmpMax);\n\t\t}\n}\n\nconst _toDelete = [];\nclass GSplatOctree {\n\t\tconstructor(assetFileUrl, data){\n\t\t\t\tthis.fileResources = new Map();\n\t\t\t\tthis.cooldowns = new Map();\n\t\t\t\tthis.lodLevels = data.lodLevels;\n\t\t\t\tthis.assetFileUrl = assetFileUrl;\n\t\t\t\tconst baseDir = path.getDirectory(assetFileUrl);\n\t\t\t\tthis.files = data.filenames.map((url)=>({\n\t\t\t\t\t\t\t\turl: path.isRelativePath(url) ? path.join(baseDir, url) : url,\n\t\t\t\t\t\t\t\tlodLevel: -1\n\t\t\t\t\t\t}));\n\t\t\t\tthis.fileRefCounts = new Int32Array(this.files.length);\n\t\t\t\tconst leafNodes = [];\n\t\t\t\tthis._extractLeafNodes(data.tree, leafNodes);\n\t\t\t\tthis.nodes = leafNodes.map((nodeData)=>{\n\t\t\t\t\t\tconst lods = [];\n\t\t\t\t\t\tfor(let i = 0; i < this.lodLevels; i++){\n\t\t\t\t\t\t\t\tconst lodData = nodeData.lods[i.toString()];\n\t\t\t\t\t\t\t\tif (lodData) {\n\t\t\t\t\t\t\t\t\t\tlods.push({\n\t\t\t\t\t\t\t\t\t\t\t\tfile: this.files[lodData.file].url || '',\n\t\t\t\t\t\t\t\t\t\t\t\tfileIndex: lodData.file,\n\t\t\t\t\t\t\t\t\t\t\t\toffset: lodData.offset || 0,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: lodData.count || 0\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tthis.files[lodData.file].lodLevel = i;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tlods.push({\n\t\t\t\t\t\t\t\t\t\t\t\tfile: '',\n\t\t\t\t\t\t\t\t\t\t\t\tfileIndex: -1,\n\t\t\t\t\t\t\t\t\t\t\t\toffset: 0,\n\t\t\t\t\t\t\t\t\t\t\t\tcount: 0\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn new GSplatOctreeNode(lods, nodeData.bound);\n\t\t\t\t});\n\t\t}\n\t\t_traceLodCounts() {}\n\t\t_extractLeafNodes(node, leafNodes) {\n\t\t\t\tif (node.lods) {\n\t\t\t\t\t\tleafNodes.push({\n\t\t\t\t\t\t\t\tlods: node.lods,\n\t\t\t\t\t\t\t\tbound: node.bound\n\t\t\t\t\t\t});\n\t\t\t\t} else if (node.children) {\n\t\t\t\t\t\tfor (const child of node.children){\n\t\t\t\t\t\t\t\tthis._extractLeafNodes(child, leafNodes);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tgetFileResource(fileIndex) {\n\t\t\t\treturn this.fileResources.get(fileIndex);\n\t\t}\n\t\tincRefCount(fileIndex) {\n\t\t\t\tconst count = this.fileRefCounts[fileIndex] + 1;\n\t\t\t\tthis.fileRefCounts[fileIndex] = count;\n\t\t\t\tthis.cooldowns.delete(fileIndex);\n\t\t}\n\t\tdecRefCount(fileIndex, cooldownTicks) {\n\t\t\t\tconst count = this.fileRefCounts[fileIndex] - 1;\n\t\t\t\tthis.fileRefCounts[fileIndex] = count;\n\t\t\t\tif (count === 0) {\n\t\t\t\t\t\tthis.cooldowns.set(fileIndex, cooldownTicks);\n\t\t\t\t}\n\t\t}\n\t\tunloadResource(fileIndex, assetLoader) {\n\t\t\t\tif (this.fileResources.has(fileIndex)) {\n\t\t\t\t\t\tconst fullUrl = this.files[fileIndex].url;\n\t\t\t\t\t\tassetLoader.unload(fullUrl);\n\t\t\t\t\t\tthis.fileResources.delete(fileIndex);\n\t\t\t\t\t\tthis._traceLodCounts();\n\t\t\t\t}\n\t\t}\n\t\tupdateCooldownTick(assetLoader) {\n\t\t\t\tif (this.cooldowns.size > 0) {\n\t\t\t\t\t\tthis.cooldowns.forEach((remaining, fileIndex)=>{\n\t\t\t\t\t\t\t\tif (remaining <= 1) {\n\t\t\t\t\t\t\t\t\t\tif (this.fileRefCounts[fileIndex] === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.unloadResource(fileIndex, assetLoader);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t_toDelete.push(fileIndex);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.cooldowns.set(fileIndex, remaining - 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\t_toDelete.forEach((idx)=>this.cooldowns.delete(idx));\n\t\t\t\t\t\t_toDelete.length = 0;\n\t\t\t\t}\n\t\t}\n\t\tensureFileResource(fileIndex, assetLoader) {\n\t\t\t\tif (this.fileResources.has(fileIndex)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst fullUrl = this.files[fileIndex].url;\n\t\t\t\tconst res = assetLoader.getResource(fullUrl);\n\t\t\t\tif (res) {\n\t\t\t\t\t\tthis.fileResources.set(fileIndex, res);\n\t\t\t\t\t\tif (this.fileRefCounts[fileIndex] === 0) {\n\t\t\t\t\t\t\t\tthis.cooldowns.set(fileIndex, assetLoader.cooldownTicks);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._traceLodCounts();\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tassetLoader.load(fullUrl);\n\t\t}\n}\n\nclass GSplatOctreeResource {\n\t\tconstructor(assetFileUrl, data){\n\t\t\t\tthis.aabb = new BoundingBox();\n\t\t\t\tthis.octree = new GSplatOctree(assetFileUrl, data);\n\t\t\t\tthis.aabb.setMinMax(new Vec3(data.tree.bound.min), new Vec3(data.tree.bound.max));\n\t\t}\n}\n\nclass GSplatWorldState {\n\t\tconstructor(device, version, splats){\n\t\t\t\tthis.version = 0;\n\t\t\t\tthis.sortParametersSet = false;\n\t\t\t\tthis.sortedBefore = false;\n\t\t\t\tthis.splats = [];\n\t\t\t\tthis.textureSize = 0;\n\t\t\t\tthis.totalUsedPixels = 0;\n\t\t\t\tthis.pendingReleases = [];\n\t\t\t\tthis.version = version;\n\t\t\t\tthis.splats = splats;\n\t\t\t\tthis.estimateTextureSize(this.splats, device.maxTextureSize);\n\t\t\t\tthis.assignLines(this.splats, this.textureSize);\n\t\t}\n\t\testimateTextureSize(splats, maxSize) {\n\t\t\t\tconst fits = (size)=>{\n\t\t\t\t\t\tlet rows = 0;\n\t\t\t\t\t\tfor (const splat of splats){\n\t\t\t\t\t\t\t\trows += Math.ceil(splat.activeSplats / size);\n\t\t\t\t\t\t\t\tif (rows > size) return false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn true;\n\t\t\t\t};\n\t\t\t\tlet low = 1;\n\t\t\t\tlet high = maxSize;\n\t\t\t\tlet bestSize = null;\n\t\t\t\twhile(low <= high){\n\t\t\t\t\t\tconst mid = Math.floor((low + high) / 2);\n\t\t\t\t\t\tif (fits(mid)) {\n\t\t\t\t\t\t\t\tbestSize = mid;\n\t\t\t\t\t\t\t\thigh = mid - 1;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlow = mid + 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (bestSize === null) {\n\t\t\t\t\t\tthis.textureSize = 0;\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tthis.textureSize = bestSize;\n\t\t\t\treturn true;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.splats.forEach((splat)=>splat.destroy());\n\t\t\t\tthis.splats.length = 0;\n\t\t}\n\t\tassignLines(splats, size) {\n\t\t\t\tif (splats.length === 0) {\n\t\t\t\t\t\tthis.totalUsedPixels = 0;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet start = 0;\n\t\t\t\tfor (const splat of splats){\n\t\t\t\t\t\tconst activeSplats = splat.activeSplats;\n\t\t\t\t\t\tconst numLines = Math.ceil(activeSplats / size);\n\t\t\t\t\t\tsplat.setLines(start, numLines, size, activeSplats);\n\t\t\t\t\t\tstart += numLines;\n\t\t\t\t}\n\t\t\t\tthis.totalUsedPixels = start * size;\n\t\t}\n}\n\nconst cameraPosition = new Vec3();\nconst cameraDirection = new Vec3();\nconst translation = new Vec3();\nconst invModelMat = new Mat4();\nconst tempNonOctreePlacements = new Set();\nconst tempOctreePlacements = new Set();\nconst _updatedSplats = [];\nconst tempOctreesTicked = new Set();\nconst _lodColorsRaw = [\n\t\t[\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t0,\n\t\t\t\t1,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t0,\n\t\t\t\t0,\n\t\t\t\t1\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t1,\n\t\t\t\t0\n\t\t],\n\t\t[\n\t\t\t\t1,\n\t\t\t\t0,\n\t\t\t\t1\n\t\t]\n];\n[\n\t\tnew Color(1, 0, 0),\n\t\tnew Color(0, 1, 0),\n\t\tnew Color(0, 0, 1),\n\t\tnew Color(1, 1, 0),\n\t\tnew Color(1, 0, 1)\n];\nclass GSplatManager {\n\t\tconstructor(device, director, layer, cameraNode){\n\t\t\t\tthis.node = new GraphNode('GSplatManager');\n\t\t\t\tthis.worldStates = new Map();\n\t\t\t\tthis.lastWorldStateVersion = 0;\n\t\t\t\tthis.sortedVersion = 0;\n\t\t\t\tthis.framesTillFullUpdate = 0;\n\t\t\t\tthis.lastCameraPos = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.lastCameraFwd = new Vec3(Infinity, Infinity, Infinity);\n\t\t\t\tthis.layerPlacements = [];\n\t\t\t\tthis.layerPlacementsDirty = false;\n\t\t\t\tthis.octreeInstances = new Map();\n\t\t\t\tthis.octreeInstancesToDestroy = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.scene = director.scene;\n\t\t\t\tthis.director = director;\n\t\t\t\tthis.cameraNode = cameraNode;\n\t\t\t\tthis.workBuffer = new GSplatWorkBuffer(device);\n\t\t\t\tthis.renderer = new GSplatRenderer(device, this.node, this.cameraNode, layer, this.workBuffer);\n\t\t\t\tthis.sorter = this.createSorter();\n\t\t\t\tthis.cooldownTicks = this.director.assetLoader.cooldownTicks;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.workBuffer.destroy();\n\t\t\t\tthis.renderer.destroy();\n\t\t\t\tthis.sorter.destroy();\n\t\t}\n\t\tcreateSorter() {\n\t\t\t\tconst sorter = new GSplatUnifiedSorter();\n\t\t\t\tsorter.on('sorted', (count, version, orderData)=>{\n\t\t\t\t\t\tthis.onSorted(count, version, orderData);\n\t\t\t\t});\n\t\t\t\treturn sorter;\n\t\t}\n\t\treconcile(placements) {\n\t\t\t\ttempNonOctreePlacements.clear();\n\t\t\t\tfor (const p of placements){\n\t\t\t\t\t\tif (p.resource instanceof GSplatOctreeResource) {\n\t\t\t\t\t\t\t\tif (!this.octreeInstances.has(p)) {\n\t\t\t\t\t\t\t\t\t\tthis.octreeInstances.set(p, new GSplatOctreeInstance(p.resource.octree, p, this.director.assetLoader));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttempOctreePlacements.add(p);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttempNonOctreePlacements.add(p);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const [placement, inst] of this.octreeInstances){\n\t\t\t\t\t\tif (!tempOctreePlacements.has(placement)) {\n\t\t\t\t\t\t\t\tthis.octreeInstances.delete(placement);\n\t\t\t\t\t\t\t\tthis.layerPlacementsDirty = true;\n\t\t\t\t\t\t\t\tthis.octreeInstancesToDestroy.push(inst);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.layerPlacementsDirty = this.layerPlacements.length !== tempNonOctreePlacements.size;\n\t\t\t\tif (!this.layerPlacementsDirty) {\n\t\t\t\t\t\tfor(let i = 0; i < this.layerPlacements.length; i++){\n\t\t\t\t\t\t\t\tconst existing = this.layerPlacements[i];\n\t\t\t\t\t\t\t\tif (!tempNonOctreePlacements.has(existing)) {\n\t\t\t\t\t\t\t\t\t\tthis.layerPlacementsDirty = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.layerPlacements.length = 0;\n\t\t\t\tfor (const p of tempNonOctreePlacements){\n\t\t\t\t\t\tthis.layerPlacements.push(p);\n\t\t\t\t}\n\t\t\t\ttempNonOctreePlacements.clear();\n\t\t\t\ttempOctreePlacements.clear();\n\t\t}\n\t\tupdateWorldState() {\n\t\t\t\tconst worldChanged = this.layerPlacementsDirty || this.worldStates.size === 0;\n\t\t\t\tif (worldChanged) {\n\t\t\t\t\t\tthis.lastWorldStateVersion++;\n\t\t\t\t\t\tconst splats = [];\n\t\t\t\t\t\tfor (const p of this.layerPlacements){\n\t\t\t\t\t\t\t\tconst splatInfo = new GSplatInfo(this.device, p.resource, p);\n\t\t\t\t\t\t\t\tsplats.push(splatInfo);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tinst.activePlacements.forEach((p)=>{\n\t\t\t\t\t\t\t\t\t\tif (p.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tsplats.push(new GSplatInfo(this.device, p.resource, p));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsplats.forEach((splat)=>{\n\t\t\t\t\t\t\t\tthis.sorter.setCenters(splat.resource.id, splat.resource.centers);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst newState = new GSplatWorldState(this.device, this.lastWorldStateVersion, splats);\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tif (inst.removedCandidates && inst.removedCandidates.size) {\n\t\t\t\t\t\t\t\t\t\tfor (const fileIndex of inst.removedCandidates){\n\t\t\t\t\t\t\t\t\t\t\t\tnewState.pendingReleases.push([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinst.octree,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinst.removedCandidates.clear();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.octreeInstancesToDestroy.length) {\n\t\t\t\t\t\t\t\tfor (const inst of this.octreeInstancesToDestroy){\n\t\t\t\t\t\t\t\t\t\tconst toRelease = inst.getFileDecrements();\n\t\t\t\t\t\t\t\t\t\tfor (const fileIndex of toRelease){\n\t\t\t\t\t\t\t\t\t\t\t\tnewState.pendingReleases.push([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tinst.octree,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfileIndex\n\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tinst.destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.octreeInstancesToDestroy.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.worldStates.set(this.lastWorldStateVersion, newState);\n\t\t\t\t\t\tthis.layerPlacementsDirty = false;\n\t\t\t\t}\n\t\t}\n\t\tonSorted(count, version, orderData) {\n\t\t\t\tthis.sortedVersion = version;\n\t\t\t\tconst oldState = this.worldStates.get(version - 1);\n\t\t\t\tif (oldState) {\n\t\t\t\t\t\tthis.worldStates.delete(version - 1);\n\t\t\t\t\t\toldState.destroy();\n\t\t\t\t}\n\t\t\t\tconst worldState = this.worldStates.get(version);\n\t\t\t\tif (worldState) {\n\t\t\t\t\t\tif (!worldState.sortedBefore) {\n\t\t\t\t\t\t\t\tworldState.sortedBefore = true;\n\t\t\t\t\t\t\t\tconst textureSize = worldState.textureSize;\n\t\t\t\t\t\t\t\tif (textureSize !== this.workBuffer.textureSize) {\n\t\t\t\t\t\t\t\t\t\tthis.workBuffer.resize(textureSize);\n\t\t\t\t\t\t\t\t\t\tthis.renderer.setMaxNumSplats(textureSize * textureSize);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst colorize = this.scene.gsplat.colorizeLod;\n\t\t\t\t\t\t\t\tthis.workBuffer.render(worldState.splats, this.cameraNode, colorize ? _lodColorsRaw : undefined);\n\t\t\t\t\t\t\t\tif (worldState.pendingReleases && worldState.pendingReleases.length) {\n\t\t\t\t\t\t\t\t\t\tfor (const [octree, fileIndex] of worldState.pendingReleases){\n\t\t\t\t\t\t\t\t\t\t\t\toctree.decRefCount(fileIndex, this.cooldownTicks);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tworldState.pendingReleases.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.renderer.setNumSplats(count);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.workBuffer.setOrderData(orderData);\n\t\t\t\t}\n\t\t}\n\t\ttestCameraMoved() {\n\t\t\t\tconst distanceThreshold = this.scene.gsplat.lodUpdateDistance;\n\t\t\t\tconst currentCameraPos = this.cameraNode.getPosition();\n\t\t\t\tconst cameraMoved = this.lastCameraPos.distance(currentCameraPos) > distanceThreshold;\n\t\t\t\tif (cameraMoved) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tlet cameraRotated = false;\n\t\t\t\tconst lodUpdateAngleDeg = this.scene.gsplat.lodUpdateAngle;\n\t\t\t\tif (lodUpdateAngleDeg > 0) {\n\t\t\t\t\t\tif (Number.isFinite(this.lastCameraFwd.x)) {\n\t\t\t\t\t\t\t\tconst currentCameraFwd = this.cameraNode.forward;\n\t\t\t\t\t\t\t\tconst dot = Math.min(1, Math.max(-1, this.lastCameraFwd.dot(currentCameraFwd)));\n\t\t\t\t\t\t\t\tconst angle = Math.acos(dot);\n\t\t\t\t\t\t\t\tconst rotThreshold = lodUpdateAngleDeg * Math.PI / 180;\n\t\t\t\t\t\t\t\tcameraRotated = angle > rotThreshold;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcameraRotated = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn cameraMoved || cameraRotated;\n\t\t}\n\t\tupdate() {\n\t\t\t\tlet fullUpdate = false;\n\t\t\t\tthis.framesTillFullUpdate--;\n\t\t\t\tif (this.framesTillFullUpdate <= 0) {\n\t\t\t\t\t\tthis.framesTillFullUpdate = 10;\n\t\t\t\t\t\tif (this.sorter.jobsInFlight < 3) {\n\t\t\t\t\t\t\t\tfullUpdate = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet anyInstanceNeedsLodUpdate = false;\n\t\t\t\tlet anyOctreeMoved = false;\n\t\t\t\tlet cameraMovedOrRotated = false;\n\t\t\t\tif (fullUpdate) {\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tconst isDirty = inst.update(this.scene);\n\t\t\t\t\t\t\t\tthis.layerPlacementsDirty ||= isDirty;\n\t\t\t\t\t\t\t\tconst instNeeds = inst.consumeNeedsLodUpdate();\n\t\t\t\t\t\t\t\tanyInstanceNeedsLodUpdate ||= instNeeds;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst threshold = this.scene.gsplat.lodUpdateDistance;\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tconst moved = inst.testMoved(threshold);\n\t\t\t\t\t\t\t\tanyOctreeMoved ||= moved;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcameraMovedOrRotated = this.testCameraMoved();\n\t\t\t\t}\n\t\t\t\tif (this.scene.gsplat.dirty) {\n\t\t\t\t\t\tthis.layerPlacementsDirty = true;\n\t\t\t\t}\n\t\t\t\tif (cameraMovedOrRotated || anyOctreeMoved || this.scene.gsplat.dirty || anyInstanceNeedsLodUpdate) {\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tinst.updateMoved();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.lastCameraPos.copy(this.cameraNode.getPosition());\n\t\t\t\t\t\tthis.lastCameraFwd.copy(this.cameraNode.forward);\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tinst.updateLod(this.cameraNode, this.scene.gsplat);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.updateWorldState();\n\t\t\t\tconst lastState = this.worldStates.get(this.lastWorldStateVersion);\n\t\t\t\tif (lastState) {\n\t\t\t\t\t\tif (!lastState.sortParametersSet) {\n\t\t\t\t\t\t\t\tlastState.sortParametersSet = true;\n\t\t\t\t\t\t\t\tconst payload = this.prepareSortParameters(lastState);\n\t\t\t\t\t\t\t\tthis.sorter.setSortParameters(payload);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.sort(lastState);\n\t\t\t\t}\n\t\t\t\tconst sortedState = this.worldStates.get(this.sortedVersion);\n\t\t\t\tif (sortedState) {\n\t\t\t\t\t\tsortedState.splats.forEach((splat)=>{\n\t\t\t\t\t\t\t\tif (splat.update()) {\n\t\t\t\t\t\t\t\t\t\t_updatedSplats.push(splat);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (_updatedSplats.length > 0) {\n\t\t\t\t\t\t\t\tconst colorize = this.scene.gsplat.colorizeLod;\n\t\t\t\t\t\t\t\tthis.workBuffer.render(_updatedSplats, this.cameraNode, colorize ? _lodColorsRaw : undefined);\n\t\t\t\t\t\t\t\t_updatedSplats.length = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this.octreeInstances.size) {\n\t\t\t\t\t\tfor (const [, inst] of this.octreeInstances){\n\t\t\t\t\t\t\t\tconst octree = inst.octree;\n\t\t\t\t\t\t\t\tif (!tempOctreesTicked.has(octree)) {\n\t\t\t\t\t\t\t\t\t\ttempOctreesTicked.add(octree);\n\t\t\t\t\t\t\t\t\t\toctree.updateCooldownTick(this.director.assetLoader);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempOctreesTicked.clear();\n\t\t\t\t}\n\t\t\t\tconst { textureSize } = this.workBuffer;\n\t\t\t\treturn textureSize * textureSize;\n\t\t}\n\t\tsort(lastState) {\n\t\t\t\tconst cameraNode = this.cameraNode;\n\t\t\t\tconst cameraMat = cameraNode.getWorldTransform();\n\t\t\t\tcameraMat.getTranslation(cameraPosition);\n\t\t\t\tcameraMat.getZ(cameraDirection).normalize();\n\t\t\t\tconst sorterRequest = [];\n\t\t\t\tlastState.splats.forEach((splat)=>{\n\t\t\t\t\t\tconst modelMat = splat.node.getWorldTransform();\n\t\t\t\t\t\tinvModelMat.copy(modelMat).invert();\n\t\t\t\t\t\tconst uniformScale = modelMat.getScale().x;\n\t\t\t\t\t\tconst transformedDirection = invModelMat.transformVector(cameraDirection).normalize();\n\t\t\t\t\t\tconst transformedPosition = invModelMat.transformPoint(cameraPosition);\n\t\t\t\t\t\tmodelMat.getTranslation(translation);\n\t\t\t\t\t\tconst offset = translation.sub(cameraPosition).dot(cameraDirection);\n\t\t\t\t\t\tconst aabbMin = splat.aabb.getMin();\n\t\t\t\t\t\tconst aabbMax = splat.aabb.getMax();\n\t\t\t\t\t\tsorterRequest.push({\n\t\t\t\t\t\t\t\ttransformedDirection,\n\t\t\t\t\t\t\t\ttransformedPosition,\n\t\t\t\t\t\t\t\toffset,\n\t\t\t\t\t\t\t\tscale: uniformScale,\n\t\t\t\t\t\t\t\tmodelMat: modelMat.data.slice(),\n\t\t\t\t\t\t\t\taabbMin: [\n\t\t\t\t\t\t\t\t\t\taabbMin.x,\n\t\t\t\t\t\t\t\t\t\taabbMin.y,\n\t\t\t\t\t\t\t\t\t\taabbMin.z\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\taabbMax: [\n\t\t\t\t\t\t\t\t\t\taabbMax.x,\n\t\t\t\t\t\t\t\t\t\taabbMax.y,\n\t\t\t\t\t\t\t\t\t\taabbMax.z\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis.sorter.setSortParams(sorterRequest, this.scene.gsplat.radialSorting);\n\t\t\t\tthis.renderer.updateViewport(cameraNode);\n\t\t}\n\t\tprepareSortParameters(worldState) {\n\t\t\t\treturn {\n\t\t\t\t\t\tcommand: 'intervals',\n\t\t\t\t\t\ttextureSize: worldState.textureSize,\n\t\t\t\t\t\ttotalUsedPixels: worldState.totalUsedPixels,\n\t\t\t\t\t\tversion: worldState.version,\n\t\t\t\t\t\tids: worldState.splats.map((splat)=>splat.resource.id),\n\t\t\t\t\t\tlineStarts: worldState.splats.map((splat)=>splat.lineStart),\n\t\t\t\t\t\tpadding: worldState.splats.map((splat)=>splat.padding),\n\t\t\t\t\t\tintervals: worldState.splats.map((splat)=>splat.intervals)\n\t\t\t\t};\n\t\t}\n}\n\nclass GSplatLayerData {\n\t\tconstructor(device, director, layer, cameraNode){\n\t\t\t\tthis.gsplatManager = new GSplatManager(device, director, layer, cameraNode);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.gsplatManager.destroy();\n\t\t}\n}\nclass GSplatCameraData {\n\t\tdestroy() {\n\t\t\t\tthis.layersMap.forEach((layerData)=>layerData.destroy());\n\t\t\t\tthis.layersMap.clear();\n\t\t}\n\t\tremoveLayerData(layer) {\n\t\t\t\tconst layerData = this.layersMap.get(layer);\n\t\t\t\tif (layerData) {\n\t\t\t\t\t\tlayerData.destroy();\n\t\t\t\t\t\tthis.layersMap.delete(layer);\n\t\t\t\t}\n\t\t}\n\t\tgetLayerData(device, director, layer, cameraNode) {\n\t\t\t\tlet layerData = this.layersMap.get(layer);\n\t\t\t\tif (!layerData) {\n\t\t\t\t\t\tlayerData = new GSplatLayerData(device, director, layer, cameraNode);\n\t\t\t\t\t\tthis.layersMap.set(layer, layerData);\n\t\t\t\t}\n\t\t\t\treturn layerData;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tthis.layersMap = new Map();\n\t\t}\n}\nclass GSplatDirector {\n\t\tconstructor(device, renderer, scene, assetLoader){\n\t\t\t\tthis.camerasMap = new Map();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.assetLoader = assetLoader;\n\t\t\t\tthis.scene = scene;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.camerasMap.forEach((cameraData)=>cameraData.destroy());\n\t\t\t\tthis.camerasMap.clear();\n\t\t}\n\t\tgetCameraData(camera) {\n\t\t\t\tlet cameraData = this.camerasMap.get(camera);\n\t\t\t\tif (!cameraData) {\n\t\t\t\t\t\tcameraData = new GSplatCameraData();\n\t\t\t\t\t\tthis.camerasMap.set(camera, cameraData);\n\t\t\t\t}\n\t\t\t\treturn cameraData;\n\t\t}\n\t\tupdate(comp) {\n\t\t\t\tthis.camerasMap.forEach((cameraData, camera)=>{\n\t\t\t\t\t\tif (!comp.camerasSet.has(camera)) {\n\t\t\t\t\t\t\t\tcameraData.destroy();\n\t\t\t\t\t\t\t\tthis.camerasMap.delete(camera);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcameraData.layersMap.forEach((layerData, layer)=>{\n\t\t\t\t\t\t\t\t\t\tif (!camera.layersSet.has(layer.id) || !layer.enabled) {\n\t\t\t\t\t\t\t\t\t\t\t\tlayerData.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\tcameraData.layersMap.delete(layer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet gsplatCount = 0;\n\t\t\t\tconst camerasComponents = comp.cameras;\n\t\t\t\tfor(let i = 0; i < camerasComponents.length; i++){\n\t\t\t\t\t\tconst camera = camerasComponents[i].camera;\n\t\t\t\t\t\tlet cameraData = this.camerasMap.get(camera);\n\t\t\t\t\t\tconst layerIds = camera.layers;\n\t\t\t\t\t\tfor(let j = 0; j < layerIds.length; j++){\n\t\t\t\t\t\t\t\tconst layer = comp.getLayerById(layerIds[j]);\n\t\t\t\t\t\t\t\tif (layer?.enabled) {\n\t\t\t\t\t\t\t\t\t\tif (layer.gsplatPlacementsDirty || !cameraData) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst placements = layer.gsplatPlacements;\n\t\t\t\t\t\t\t\t\t\t\t\tif (placements.length === 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cameraData) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraData.removeLayerData(layer);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraData ??= this.getCameraData(camera);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst layerData = cameraData.getLayerData(this.device, this, layer, camera.node);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayerData.gsplatManager.reconcile(placements);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (cameraData) {\n\t\t\t\t\t\t\t\tfor (const layerData of cameraData.layersMap.values()){\n\t\t\t\t\t\t\t\t\t\tgsplatCount += layerData.gsplatManager.update();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.renderer._gsplatCount = gsplatCount;\n\t\t\t\tthis.scene.gsplat.dirty = false;\n\t\t\t\tfor(let i = 0; i < comp.layerList.length; i++){\n\t\t\t\t\t\tcomp.layerList[i].gsplatPlacementsDirty = false;\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatComponent extends Component {\n\t\tconstructor(system, entity){\n\t\t\t\tsuper(system, entity), this._layers = [\n\t\t\t\t\t\tLAYERID_WORLD\n\t\t\t\t], this._instance = null, this._placement = null, this._materialTmp = null, this._highQualitySH = true, this._lodDistances = [\n\t\t\t\t\t\t5,\n\t\t\t\t\t\t10,\n\t\t\t\t\t\t15,\n\t\t\t\t\t\t20,\n\t\t\t\t\t\t25\n\t\t\t\t], this._customAabb = null, this._evtLayersChanged = null, this._evtLayerAdded = null, this._evtLayerRemoved = null, this._castShadows = false, this._unified = false;\n\t\t\t\tthis._assetReference = new AssetReference('asset', this, system.app.assets, {\n\t\t\t\t\t\tadd: this._onGSplatAssetAdded,\n\t\t\t\t\t\tload: this._onGSplatAssetLoad,\n\t\t\t\t\t\tremove: this._onGSplatAssetRemove,\n\t\t\t\t\t\tunload: this._onGSplatAssetUnload\n\t\t\t\t}, this);\n\t\t\t\tentity.on('remove', this.onRemoveChild, this);\n\t\t\t\tentity.on('removehierarchy', this.onRemoveChild, this);\n\t\t\t\tentity.on('insert', this.onInsertChild, this);\n\t\t\t\tentity.on('inserthierarchy', this.onInsertChild, this);\n\t\t}\n\t\tset customAabb(value) {\n\t\t\t\tthis._customAabb = value;\n\t\t\t\tthis._instance?.meshInstance?.setCustomAabb(this._customAabb);\n\t\t\t\tif (this._placement && this._customAabb) {\n\t\t\t\t\t\tthis._placement.aabb = this._customAabb;\n\t\t\t\t}\n\t\t}\n\t\tget customAabb() {\n\t\t\t\treturn this._customAabb;\n\t\t}\n\t\tset instance(value) {\n\t\t\t\tthis.destroyInstance();\n\t\t\t\tthis._instance = value;\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tconst mi = this._instance.meshInstance;\n\t\t\t\t\t\tif (!mi.node) {\n\t\t\t\t\t\t\t\tmi.node = this.entity;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmi.castShadow = this._castShadows;\n\t\t\t\t\t\tmi.setCustomAabb(this._customAabb);\n\t\t\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget instance() {\n\t\t\t\treturn this._instance;\n\t\t}\n\t\tset material(value) {\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis._instance.material = value;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._materialTmp = value;\n\t\t\t\t}\n\t\t}\n\t\tget material() {\n\t\t\t\treturn this._instance?.material ?? this._materialTmp ?? null;\n\t\t}\n\t\tset highQualitySH(value) {\n\t\t\t\tif (value !== this._highQualitySH) {\n\t\t\t\t\t\tthis._highQualitySH = value;\n\t\t\t\t\t\tthis._instance?.setHighQualitySH(value);\n\t\t\t\t}\n\t\t}\n\t\tget highQualitySH() {\n\t\t\t\treturn this._highQualitySH;\n\t\t}\n\t\tset castShadows(value) {\n\t\t\t\tif (this._castShadows !== value) {\n\t\t\t\t\t\tconst mi = this.instance?.meshInstance;\n\t\t\t\t\t\tif (mi) {\n\t\t\t\t\t\t\t\tconst layers = this.layers;\n\t\t\t\t\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\t\t\t\t\tif (this._castShadows && !value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(this.layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.removeShadowCasters([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmi\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmi.castShadow = value;\n\t\t\t\t\t\t\t\tif (!this._castShadows && value) {\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst layer = scene.layers.getLayerById(layers[i]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (layer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlayer.addShadowCasters([\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tmi\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._castShadows = value;\n\t\t\t\t}\n\t\t}\n\t\tget castShadows() {\n\t\t\t\treturn this._castShadows;\n\t\t}\n\t\tset lodDistances(value) {\n\t\t\t\tthis._lodDistances = Array.isArray(value) ? value.slice() : null;\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tthis._placement.lodDistances = this._lodDistances;\n\t\t\t\t}\n\t\t}\n\t\tget lodDistances() {\n\t\t\t\treturn this._lodDistances ? this._lodDistances.slice() : null;\n\t\t}\n\t\tset unified(value) {\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._unified = value;\n\t\t\t\tthis._onGSplatAssetAdded();\n\t\t}\n\t\tget unified() {\n\t\t\t\treturn this._unified;\n\t\t}\n\t\tset layers(value) {\n\t\t\t\tthis.removeFromLayers();\n\t\t\t\tthis._layers.length = 0;\n\t\t\t\tfor(let i = 0; i < value.length; i++){\n\t\t\t\t\t\tthis._layers[i] = value[i];\n\t\t\t\t}\n\t\t\t\tif (!this.enabled || !this.entity.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.addToLayers();\n\t\t}\n\t\tget layers() {\n\t\t\t\treturn this._layers;\n\t\t}\n\t\tset asset(value) {\n\t\t\t\tconst id = value instanceof Asset ? value.id : value;\n\t\t\t\tif (this._assetReference.id === id) return;\n\t\t\t\tif (this._assetReference.asset && this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onGSplatAssetRemove();\n\t\t\t\t}\n\t\t\t\tthis._assetReference.id = id;\n\t\t\t\tif (this._assetReference.asset) {\n\t\t\t\t\t\tthis._onGSplatAssetAdded();\n\t\t\t\t}\n\t\t}\n\t\tget asset() {\n\t\t\t\treturn this._assetReference.id;\n\t\t}\n\t\tdestroyInstance() {\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tthis.removeFromLayers();\n\t\t\t\t\t\tthis._placement = null;\n\t\t\t\t}\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis.removeFromLayers();\n\t\t\t\t\t\tthis._instance?.destroy();\n\t\t\t\t\t\tthis._instance = null;\n\t\t\t\t}\n\t\t}\n\t\taddToLayers() {\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.addGSplatPlacement(this._placement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst meshInstance = this.instance?.meshInstance;\n\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.addMeshInstances([\n\t\t\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tremoveFromLayers() {\n\t\t\t\tif (this._placement) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.removeGSplatPlacement(this._placement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst meshInstance = this.instance?.meshInstance;\n\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\tconst layers = this.system.app.scene.layers;\n\t\t\t\t\t\tfor(let i = 0; i < this._layers.length; i++){\n\t\t\t\t\t\t\t\tlayers.getLayerById(this._layers[i])?.removeMeshInstances([\n\t\t\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonRemoveChild() {\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\tonInsertChild() {\n\t\t\t\tif (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tif (this._instance || this._placement) {\n\t\t\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tonRemove() {\n\t\t\t\tthis.destroyInstance();\n\t\t\t\tthis.asset = null;\n\t\t\t\tthis._assetReference.id = null;\n\t\t\t\tthis.entity.off('remove', this.onRemoveChild, this);\n\t\t\t\tthis.entity.off('insert', this.onInsertChild, this);\n\t\t}\n\t\tonLayersChanged(oldComp, newComp) {\n\t\t\t\tthis.addToLayers();\n\t\t\t\toldComp.off('add', this.onLayerAdded, this);\n\t\t\t\toldComp.off('remove', this.onLayerRemoved, this);\n\t\t\t\tnewComp.on('add', this.onLayerAdded, this);\n\t\t\t\tnewComp.on('remove', this.onLayerRemoved, this);\n\t\t}\n\t\tonLayerAdded(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tlayer.addMeshInstances(this._instance.meshInstance);\n\t\t\t\t}\n\t\t}\n\t\tonLayerRemoved(layer) {\n\t\t\t\tconst index = this.layers.indexOf(layer.id);\n\t\t\t\tif (index < 0) return;\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tlayer.removeMeshInstances(this._instance.meshInstance);\n\t\t\t\t}\n\t\t}\n\t\tonEnable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged = scene.on('set:layers', this.onLayersChanged, this);\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded = layers.on('add', this.onLayerAdded, this);\n\t\t\t\t\t\tthis._evtLayerRemoved = layers.on('remove', this.onLayerRemoved, this);\n\t\t\t\t}\n\t\t\t\tif (this._instance || this._placement) {\n\t\t\t\t\t\tthis.addToLayers();\n\t\t\t\t} else if (this.asset) {\n\t\t\t\t\t\tthis._onGSplatAssetAdded();\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tconst scene = this.system.app.scene;\n\t\t\t\tconst layers = scene.layers;\n\t\t\t\tthis._evtLayersChanged?.off();\n\t\t\t\tthis._evtLayersChanged = null;\n\t\t\t\tif (layers) {\n\t\t\t\t\t\tthis._evtLayerAdded?.off();\n\t\t\t\t\t\tthis._evtLayerAdded = null;\n\t\t\t\t\t\tthis._evtLayerRemoved?.off();\n\t\t\t\t\t\tthis._evtLayerRemoved = null;\n\t\t\t\t}\n\t\t\t\tthis.removeFromLayers();\n\t\t}\n\t\thide() {\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis._instance.meshInstance.visible = false;\n\t\t\t\t}\n\t\t}\n\t\tshow() {\n\t\t\t\tif (this._instance) {\n\t\t\t\t\t\tthis._instance.meshInstance.visible = true;\n\t\t\t\t}\n\t\t}\n\t\t_onGSplatAssetAdded() {\n\t\t\t\tif (!this._assetReference.asset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._assetReference.asset.resource) {\n\t\t\t\t\t\tthis._onGSplatAssetLoad();\n\t\t\t\t} else if (this.enabled && this.entity.enabled) {\n\t\t\t\t\t\tthis.system.app.assets.load(this._assetReference.asset);\n\t\t\t\t}\n\t\t}\n\t\t_onGSplatAssetLoad() {\n\t\t\t\tthis.destroyInstance();\n\t\t\t\tconst asset = this._assetReference.asset;\n\t\t\t\tif (this.unified) {\n\t\t\t\t\t\tthis._placement = null;\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis._placement = new GSplatPlacement(asset.resource, this.entity);\n\t\t\t\t\t\t\t\tthis._placement.lodDistances = this._lodDistances;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\tthis.instance = new GSplatInstance(asset.resource, {\n\t\t\t\t\t\t\t\t\t\tmaterial: this._materialTmp,\n\t\t\t\t\t\t\t\t\t\thighQualitySH: this._highQualitySH\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._materialTmp = null;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tthis.customAabb = asset.resource.aabb.clone();\n\t\t\t\t}\n\t\t}\n\t\t_onGSplatAssetUnload() {\n\t\t\t\tthis.destroyInstance();\n\t\t}\n\t\t_onGSplatAssetRemove() {\n\t\t\t\tthis._onGSplatAssetUnload();\n\t\t}\n}\n\nclass GSplatComponentData {\n\t\tconstructor(){\n\t\t\t\tthis.enabled = true;\n\t\t}\n}\n\nclass GSplatAssetLoaderBase {\n\t\tload(url) {}\n\t\tunload(url) {}\n\t\tgetResource(url) {}\n\t\tconstructor(){\n\t\t\t\tthis.cooldownTicks = 100;\n\t\t}\n}\n\nclass GSplatAssetLoader extends GSplatAssetLoaderBase {\n\t\tconstructor(registry){\n\t\t\t\tsuper(), this._urlToAsset = new Map();\n\t\t\t\tthis._registry = registry;\n\t\t}\n\t\tload(url) {\n\t\t\t\tlet asset = this._urlToAsset.get(url);\n\t\t\t\tif (!asset) {\n\t\t\t\t\t\tasset = this._registry.getByUrl(url);\n\t\t\t\t\t\tif (!asset) {\n\t\t\t\t\t\t\t\tasset = new Asset(url, 'gsplat', {\n\t\t\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis._registry.add(asset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._urlToAsset.set(url, asset);\n\t\t\t\t}\n\t\t\t\tif (!asset.loaded && !asset.loading) {\n\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t}\n\t\t}\n\t\tunload(url) {\n\t\t\t\tconst asset = this._urlToAsset.get(url);\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tthis._registry.remove(asset);\n\t\t\t\t\t\tasset.unload();\n\t\t\t\t\t\tthis._urlToAsset.delete(url);\n\t\t\t\t}\n\t\t}\n\t\tgetResource(url) {\n\t\t\t\tconst asset = this._urlToAsset.get(url);\n\t\t\t\treturn asset?.resource;\n\t\t}\n}\n\nconst _schema = [\n\t\t'enabled'\n];\nconst _properties = [\n\t\t'unified',\n\t\t'castShadows',\n\t\t'material',\n\t\t'highQualitySH',\n\t\t'asset',\n\t\t'layers'\n];\nclass GSplatComponentSystem extends ComponentSystem {\n\t\tconstructor(app){\n\t\t\t\tsuper(app);\n\t\t\t\tthis.id = 'gsplat';\n\t\t\t\tthis.ComponentType = GSplatComponent;\n\t\t\t\tthis.DataType = GSplatComponentData;\n\t\t\t\tthis.schema = _schema;\n\t\t\t\tconst gsplatAssetLoader = new GSplatAssetLoader(app.assets);\n\t\t\t\tapp.renderer.gsplatDirector = new GSplatDirector(app.graphicsDevice, app.renderer, app.scene, gsplatAssetLoader);\n\t\t\t\tthis.on('beforeremove', this.onRemove, this);\n\t\t}\n\t\tinitializeComponentData(component, _data, properties) {\n\t\t\t\tif (_data.layers && _data.layers.length) {\n\t\t\t\t\t\t_data.layers = _data.layers.slice(0);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < _properties.length; i++){\n\t\t\t\t\t\tif (_data.hasOwnProperty(_properties[i])) {\n\t\t\t\t\t\t\t\tcomponent[_properties[i]] = _data[_properties[i]];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (_data.aabbCenter && _data.aabbHalfExtents) {\n\t\t\t\t\t\tcomponent.customAabb = new BoundingBox(new Vec3(_data.aabbCenter), new Vec3(_data.aabbHalfExtents));\n\t\t\t\t}\n\t\t\t\tsuper.initializeComponentData(component, _data, _schema);\n\t\t}\n\t\tcloneComponent(entity, clone) {\n\t\t\t\tconst gSplatComponent = entity.gsplat;\n\t\t\t\tconst data = {};\n\t\t\t\t_properties.forEach((prop)=>{\n\t\t\t\t\t\tif (prop === 'material') {\n\t\t\t\t\t\t\t\tconst srcMaterial = gSplatComponent[prop];\n\t\t\t\t\t\t\t\tif (srcMaterial) {\n\t\t\t\t\t\t\t\t\t\tdata[prop] = srcMaterial.clone();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata[prop] = gSplatComponent[prop];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdata.enabled = gSplatComponent.enabled;\n\t\t\t\tconst component = this.addComponent(clone, data);\n\t\t\t\tif (gSplatComponent.customAabb) {\n\t\t\t\t\t\tcomponent.customAabb = gSplatComponent.customAabb.clone();\n\t\t\t\t}\n\t\t\t\treturn component;\n\t\t}\n\t\tonRemove(entity, component) {\n\t\t\t\tcomponent.onRemove();\n\t\t}\n}\nComponent._buildAccessors(GSplatComponent.prototype, _schema);\n\nclass Render extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_SETMESHES = 'set:meshes';\n\t\t}\n\t\tset meshes(value) {\n\t\t\t\tthis.decRefMeshes();\n\t\t\t\tthis._meshes = value;\n\t\t\t\tthis.incRefMeshes();\n\t\t\t\tthis.fire('set:meshes', value);\n\t\t}\n\t\tget meshes() {\n\t\t\t\treturn this._meshes;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.meshes = null;\n\t\t}\n\t\tdecRefMeshes() {\n\t\t\t\tthis._meshes?.forEach((mesh, index)=>{\n\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\tmesh.decRefCount();\n\t\t\t\t\t\t\t\tif (mesh.refCount < 1) {\n\t\t\t\t\t\t\t\t\t\tmesh.destroy();\n\t\t\t\t\t\t\t\t\t\tthis._meshes[index] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tincRefMeshes() {\n\t\t\t\tthis._meshes?.forEach((mesh)=>{\n\t\t\t\t\t\tmesh?.incRefCount();\n\t\t\t\t});\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._meshes = null;\n\t\t}\n}\n\nfunction onContainerAssetLoaded(containerAsset) {\n\t\tconst renderAsset = this;\n\t\tif (!renderAsset.resource) return;\n\t\tconst containerResource = containerAsset.resource;\n\t\tconst render = containerResource.renders && containerResource.renders[renderAsset.data.renderIndex];\n\t\tif (render) {\n\t\t\t\trenderAsset.resource.meshes = render.resource.meshes;\n\t\t}\n}\nfunction onContainerAssetAdded(containerAsset) {\n\t\tconst renderAsset = this;\n\t\trenderAsset.registry.off(`load:${containerAsset.id}`, onContainerAssetLoaded, renderAsset);\n\t\trenderAsset.registry.on(`load:${containerAsset.id}`, onContainerAssetLoaded, renderAsset);\n\t\trenderAsset.registry.off(`remove:${containerAsset.id}`, onContainerAssetRemoved, renderAsset);\n\t\trenderAsset.registry.once(`remove:${containerAsset.id}`, onContainerAssetRemoved, renderAsset);\n\t\tif (!containerAsset.resource) {\n\t\t\t\trenderAsset.registry.load(containerAsset);\n\t\t} else {\n\t\t\t\tonContainerAssetLoaded.call(renderAsset, containerAsset);\n\t\t}\n}\nfunction onContainerAssetRemoved(containerAsset) {\n\t\tconst renderAsset = this;\n\t\trenderAsset.registry.off(`load:${containerAsset.id}`, onContainerAssetLoaded, renderAsset);\n\t\tif (renderAsset.resource) {\n\t\t\t\trenderAsset.resource.destroy();\n\t\t}\n}\nclass RenderHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'render');\n\t\t\t\tthis._registry = app.assets;\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn new Render();\n\t\t}\n\t\tpatch(asset, registry) {\n\t\t\t\tif (!asset.data.containerAsset) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst containerAsset = registry.get(asset.data.containerAsset);\n\t\t\t\tif (!containerAsset) {\n\t\t\t\t\t\tregistry.once(`add:${asset.data.containerAsset}`, onContainerAssetAdded, asset);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tonContainerAssetAdded.call(asset, containerAsset);\n\t\t}\n}\n\nclass AnimCurve {\n\t\tconstructor(paths, input, output, interpolation){\n\t\t\t\tthis._paths = paths;\n\t\t\t\tthis._input = input;\n\t\t\t\tthis._output = output;\n\t\t\t\tthis._interpolation = interpolation;\n\t\t}\n\t\tget paths() {\n\t\t\t\treturn this._paths;\n\t\t}\n\t\tget input() {\n\t\t\t\treturn this._input;\n\t\t}\n\t\tget output() {\n\t\t\t\treturn this._output;\n\t\t}\n\t\tget interpolation() {\n\t\t\t\treturn this._interpolation;\n\t\t}\n}\n\nclass AnimData {\n\t\tconstructor(components, data){\n\t\t\t\tthis._components = components;\n\t\t\t\tthis._data = data;\n\t\t}\n\t\tget components() {\n\t\t\t\treturn this._components;\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n}\n\nfunction DracoWorker(jsUrl, wasmUrl) {\n\t\tlet draco;\n\t\tconst POSITION_ATTRIBUTE = 0;\n\t\tconst NORMAL_ATTRIBUTE = 1;\n\t\tconst wrap = (typedArray, dataType)=>{\n\t\t\t\tswitch(dataType){\n\t\t\t\t\t\tcase draco.DT_INT8:\n\t\t\t\t\t\t\t\treturn new Int8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t\t\t\t\t\tcase draco.DT_INT16:\n\t\t\t\t\t\t\t\treturn new Int16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2);\n\t\t\t\t\t\tcase draco.DT_INT32:\n\t\t\t\t\t\t\t\treturn new Int32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\t\t\t\tcase draco.DT_UINT8:\n\t\t\t\t\t\t\t\treturn new Uint8Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength);\n\t\t\t\t\t\tcase draco.DT_UINT16:\n\t\t\t\t\t\t\t\treturn new Uint16Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 2);\n\t\t\t\t\t\tcase draco.DT_UINT32:\n\t\t\t\t\t\t\t\treturn new Uint32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\t\t\t\tcase draco.DT_FLOAT32:\n\t\t\t\t\t\t\t\treturn new Float32Array(typedArray.buffer, typedArray.byteOffset, typedArray.byteLength / 4);\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t};\n\t\tconst componentSizeInBytes = (dataType)=>{\n\t\t\t\tswitch(dataType){\n\t\t\t\t\t\tcase draco.DT_INT8:\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\tcase draco.DT_INT16:\n\t\t\t\t\t\t\t\treturn 2;\n\t\t\t\t\t\tcase draco.DT_INT32:\n\t\t\t\t\t\t\t\treturn 4;\n\t\t\t\t\t\tcase draco.DT_UINT8:\n\t\t\t\t\t\t\t\treturn 1;\n\t\t\t\t\t\tcase draco.DT_UINT16:\n\t\t\t\t\t\t\t\treturn 2;\n\t\t\t\t\t\tcase draco.DT_UINT32:\n\t\t\t\t\t\t\t\treturn 4;\n\t\t\t\t\t\tcase draco.DT_FLOAT32:\n\t\t\t\t\t\t\t\treturn 4;\n\t\t\t\t}\n\t\t\t\treturn 1;\n\t\t};\n\t\tconst attributeSizeInBytes = (attribute)=>{\n\t\t\t\treturn attribute.num_components() * componentSizeInBytes(attribute.data_type());\n\t\t};\n\t\tconst attributeOrder = {\n\t\t\t\t0: 0,\n\t\t\t\t1: 1,\n\t\t\t\t5: 2,\n\t\t\t\t2: 3,\n\t\t\t\t7: 4,\n\t\t\t\t8: 5,\n\t\t\t\t4: 6,\n\t\t\t\t3: 7\n\t\t};\n\t\tconst generateNormals = (vertices, indices)=>{\n\t\t\t\tconst subtract = (dst, a, b)=>{\n\t\t\t\t\t\tdst[0] = a[0] - b[0];\n\t\t\t\t\t\tdst[1] = a[1] - b[1];\n\t\t\t\t\t\tdst[2] = a[2] - b[2];\n\t\t\t\t};\n\t\t\t\tconst cross = (dst, a, b)=>{\n\t\t\t\t\t\tdst[0] = a[1] * b[2] - b[1] * a[2];\n\t\t\t\t\t\tdst[1] = a[2] * b[0] - b[2] * a[0];\n\t\t\t\t\t\tdst[2] = a[0] * b[1] - b[0] * a[1];\n\t\t\t\t};\n\t\t\t\tconst normalize = (dst, offset)=>{\n\t\t\t\t\t\tconst a = dst[offset + 0];\n\t\t\t\t\t\tconst b = dst[offset + 1];\n\t\t\t\t\t\tconst c = dst[offset + 2];\n\t\t\t\t\t\tconst l = 1.0 / Math.sqrt(a * a + b * b + c * c);\n\t\t\t\t\t\tdst[offset + 0] *= l;\n\t\t\t\t\t\tdst[offset + 1] *= l;\n\t\t\t\t\t\tdst[offset + 2] *= l;\n\t\t\t\t};\n\t\t\t\tconst copy = (dst, src, srcOffset)=>{\n\t\t\t\t\t\tfor(let i = 0; i < 3; ++i){\n\t\t\t\t\t\t\t\tdst[i] = src[srcOffset + i];\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst numTriangles = indices.length / 3;\n\t\t\t\tconst numVertices = vertices.length / 3;\n\t\t\t\tconst result = new Float32Array(vertices.length);\n\t\t\t\tconst a = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], b = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], c = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], t1 = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], t2 = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t], n = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\tfor(let i = 0; i < numTriangles; ++i){\n\t\t\t\t\t\tconst v0 = indices[i * 3 + 0] * 3;\n\t\t\t\t\t\tconst v1 = indices[i * 3 + 1] * 3;\n\t\t\t\t\t\tconst v2 = indices[i * 3 + 2] * 3;\n\t\t\t\t\t\tcopy(a, vertices, v0);\n\t\t\t\t\t\tcopy(b, vertices, v1);\n\t\t\t\t\t\tcopy(c, vertices, v2);\n\t\t\t\t\t\tsubtract(t1, b, a);\n\t\t\t\t\t\tsubtract(t2, c, a);\n\t\t\t\t\t\tcross(n, t1, t2);\n\t\t\t\t\t\tnormalize(n, 0);\n\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\tresult[v0 + j] += n[j];\n\t\t\t\t\t\t\t\tresult[v1 + j] += n[j];\n\t\t\t\t\t\t\t\tresult[v2 + j] += n[j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < numVertices; ++i){\n\t\t\t\t\t\tnormalize(result, i * 3);\n\t\t\t\t}\n\t\t\t\treturn new Uint8Array(result.buffer);\n\t\t};\n\t\tconst decodeMesh = (inputBuffer)=>{\n\t\t\t\tconst result = {};\n\t\t\t\tconst buffer = new draco.DecoderBuffer();\n\t\t\t\tbuffer.Init(inputBuffer, inputBuffer.length);\n\t\t\t\tconst decoder = new draco.Decoder();\n\t\t\t\tif (decoder.GetEncodedGeometryType(buffer) !== draco.TRIANGULAR_MESH) {\n\t\t\t\t\t\tresult.error = 'Failed to decode draco mesh: not a mesh';\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tconst mesh = new draco.Mesh();\n\t\t\t\tconst status = decoder.DecodeBufferToMesh(buffer, mesh);\n\t\t\t\tif (!status || !status.ok() || draco.getPointer(mesh) === 0) {\n\t\t\t\t\t\tresult.error = 'Failed to decode draco asset';\n\t\t\t\t\t\treturn result;\n\t\t\t\t}\n\t\t\t\tconst numIndices = mesh.num_faces() * 3;\n\t\t\t\tconst shortIndices = mesh.num_points() <= 65535;\n\t\t\t\tconst indicesSize = numIndices * (shortIndices ? 2 : 4);\n\t\t\t\tconst indicesPtr = draco._malloc(indicesSize);\n\t\t\t\tif (shortIndices) {\n\t\t\t\t\t\tdecoder.GetTrianglesUInt16Array(mesh, indicesSize, indicesPtr);\n\t\t\t\t\t\tresult.indices = new Uint16Array(draco.HEAPU16.buffer, indicesPtr, numIndices).slice().buffer;\n\t\t\t\t} else {\n\t\t\t\t\t\tdecoder.GetTrianglesUInt32Array(mesh, indicesSize, indicesPtr);\n\t\t\t\t\t\tresult.indices = new Uint32Array(draco.HEAPU32.buffer, indicesPtr, numIndices).slice().buffer;\n\t\t\t\t}\n\t\t\t\tdraco._free(indicesPtr);\n\t\t\t\tconst attributes = [];\n\t\t\t\tfor(let i = 0; i < mesh.num_attributes(); ++i){\n\t\t\t\t\t\tattributes.push(decoder.GetAttribute(mesh, i));\n\t\t\t\t}\n\t\t\t\tattributes.sort((a, b)=>{\n\t\t\t\t\t\treturn (attributeOrder[a.attribute_type()] ?? attributeOrder.length) - (attributeOrder[b.attribute_type()] ?? attributeOrder.length);\n\t\t\t\t});\n\t\t\t\tresult.attributes = attributes.map((a)=>a.unique_id());\n\t\t\t\tlet totalVertexSize = 0;\n\t\t\t\tconst offsets = attributes.map((a)=>{\n\t\t\t\t\t\tconst offset = totalVertexSize;\n\t\t\t\t\t\ttotalVertexSize += Math.ceil(attributeSizeInBytes(a) / 4) * 4;\n\t\t\t\t\t\treturn offset;\n\t\t\t\t});\n\t\t\t\tconst hasNormals = attributes.some((a)=>a.attribute_type() === NORMAL_ATTRIBUTE);\n\t\t\t\tconst normalOffset = offsets[1];\n\t\t\t\tif (!hasNormals) {\n\t\t\t\t\t\tfor(let i = 1; i < offsets.length; ++i){\n\t\t\t\t\t\t\t\toffsets[i] += 12;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttotalVertexSize += 12;\n\t\t\t\t}\n\t\t\t\tresult.vertices = new ArrayBuffer(mesh.num_points() * totalVertexSize);\n\t\t\t\tconst dst = new Uint8Array(result.vertices);\n\t\t\t\tfor(let i = 0; i < mesh.num_attributes(); ++i){\n\t\t\t\t\t\tconst attribute = attributes[i];\n\t\t\t\t\t\tconst sizeInBytes = attributeSizeInBytes(attribute);\n\t\t\t\t\t\tconst ptrSize = mesh.num_points() * sizeInBytes;\n\t\t\t\t\t\tconst ptr = draco._malloc(ptrSize);\n\t\t\t\t\t\tdecoder.GetAttributeDataArrayForAllPoints(mesh, attribute, attribute.data_type(), ptrSize, ptr);\n\t\t\t\t\t\tconst src = new Uint8Array(draco.HEAPU8.buffer, ptr, ptrSize);\n\t\t\t\t\t\tfor(let j = 0; j < mesh.num_points(); ++j){\n\t\t\t\t\t\t\t\tfor(let c = 0; c < sizeInBytes; ++c){\n\t\t\t\t\t\t\t\t\t\tdst[j * totalVertexSize + offsets[i] + c] = src[j * sizeInBytes + c];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!hasNormals && attribute.attribute_type() === POSITION_ATTRIBUTE) {\n\t\t\t\t\t\t\t\tconst normals = generateNormals(wrap(src, attribute.data_type()), shortIndices ? new Uint16Array(result.indices) : new Uint32Array(result.indices));\n\t\t\t\t\t\t\t\tfor(let j = 0; j < mesh.num_points(); ++j){\n\t\t\t\t\t\t\t\t\t\tfor(let c = 0; c < 12; ++c){\n\t\t\t\t\t\t\t\t\t\t\t\tdst[j * totalVertexSize + normalOffset + c] = normals[j * 12 + c];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdraco._free(ptr);\n\t\t\t\t}\n\t\t\t\tdraco.destroy(mesh);\n\t\t\t\tdraco.destroy(decoder);\n\t\t\t\tdraco.destroy(buffer);\n\t\t\t\treturn result;\n\t\t};\n\t\tconst decode = (data)=>{\n\t\t\t\tconst result = decodeMesh(new Uint8Array(data.buffer));\n\t\t\t\tself.postMessage({\n\t\t\t\t\t\tjobId: data.jobId,\n\t\t\t\t\t\terror: result.error,\n\t\t\t\t\t\tindices: result.indices,\n\t\t\t\t\t\tvertices: result.vertices,\n\t\t\t\t\t\tattributes: result.attributes\n\t\t\t\t}, [\n\t\t\t\t\t\tresult.indices,\n\t\t\t\t\t\tresult.vertices\n\t\t\t\t].filter((t)=>t != null));\n\t\t};\n\t\tconst workQueue = [];\n\t\tself.onmessage = (message)=>{\n\t\t\t\tconst data = message.data;\n\t\t\t\tswitch(data.type){\n\t\t\t\t\t\tcase 'init':\n\t\t\t\t\t\t\t\tself.DracoDecoderModule({\n\t\t\t\t\t\t\t\t\t\tinstantiateWasm: (imports, successCallback)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tWebAssembly.instantiate(data.module, imports).then((result)=>successCallback(result)).catch((reason)=>console.error(`instantiate failed + ${reason}`));\n\t\t\t\t\t\t\t\t\t\t\t\treturn {};\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).then((instance)=>{\n\t\t\t\t\t\t\t\t\t\tdraco = instance;\n\t\t\t\t\t\t\t\t\t\tworkQueue.forEach((data)=>decode(data));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'decodeMesh':\n\t\t\t\t\t\t\t\tif (draco) {\n\t\t\t\t\t\t\t\t\t\tdecode(data);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tworkQueue.push(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t};\n}\n\nconst downloadMaxRetries = 3;\nclass JobQueue {\n\t\tconstructor(){\n\t\t\t\tthis.workers = [\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[],\n\t\t\t\t\t\t[]\n\t\t\t\t];\n\t\t\t\tthis.jobId = 0;\n\t\t\t\tthis.jobQueue = [];\n\t\t\t\tthis.jobCallbacks = new Map();\n\t\t\t\tthis.run = (worker, job)=>{\n\t\t\t\t\t\tworker.postMessage({\n\t\t\t\t\t\t\t\ttype: 'decodeMesh',\n\t\t\t\t\t\t\t\tjobId: job.jobId,\n\t\t\t\t\t\t\t\tbuffer: job.buffer\n\t\t\t\t\t\t}, [\n\t\t\t\t\t\t\t\tjob.buffer\n\t\t\t\t\t\t]);\n\t\t\t\t};\n\t\t}\n\t\tinit(workers) {\n\t\t\t\tworkers.forEach((worker)=>{\n\t\t\t\t\t\tworker.addEventListener('message', (message)=>{\n\t\t\t\t\t\t\t\tconst data = message.data;\n\t\t\t\t\t\t\t\tconst callback = this.jobCallbacks.get(data.jobId);\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(data.error, {\n\t\t\t\t\t\t\t\t\t\t\t\tindices: data.indices,\n\t\t\t\t\t\t\t\t\t\t\t\tvertices: data.vertices,\n\t\t\t\t\t\t\t\t\t\t\t\tattributes: data.attributes\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.jobCallbacks.delete(data.jobId);\n\t\t\t\t\t\t\t\tif (this.jobQueue.length > 0) {\n\t\t\t\t\t\t\t\t\t\tconst job = this.jobQueue.shift();\n\t\t\t\t\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst index2 = this.workers[2].indexOf(worker);\n\t\t\t\t\t\t\t\t\t\tif (index2 !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[2].splice(index2, 1);\n\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst index1 = this.workers[1].indexOf(worker);\n\t\t\t\t\t\t\t\t\t\t\t\tif (index1 !== -1) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[1].splice(index1, 1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.workers[0].push(worker);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis.workers[0] = workers;\n\t\t\t\twhile(this.jobQueue.length && (this.workers[0].length || this.workers[1].length)){\n\t\t\t\t\t\tconst job = this.jobQueue.shift();\n\t\t\t\t\t\tif (this.workers[0].length > 0) {\n\t\t\t\t\t\t\t\tconst worker = this.workers[0].shift();\n\t\t\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst worker = this.workers[1].shift();\n\t\t\t\t\t\t\t\tthis.workers[2].push(worker);\n\t\t\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tenqueueJob(buffer, callback) {\n\t\t\t\tconst job = {\n\t\t\t\t\t\tjobId: this.jobId++,\n\t\t\t\t\t\tbuffer: buffer\n\t\t\t\t};\n\t\t\t\tthis.jobCallbacks.set(job.jobId, callback);\n\t\t\t\tif (this.workers[0].length > 0) {\n\t\t\t\t\t\tconst worker = this.workers[0].shift();\n\t\t\t\t\t\tthis.workers[1].push(worker);\n\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t} else if (this.workers[1].length > 0) {\n\t\t\t\t\t\tconst worker = this.workers[1].shift();\n\t\t\t\t\t\tthis.workers[2].push(worker);\n\t\t\t\t\t\tthis.run(worker, job);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.jobQueue.push(job);\n\t\t\t\t}\n\t\t}\n}\nconst downloadScript = (url)=>{\n\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\tconst options = {\n\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\tresponseType: 'text',\n\t\t\t\t\t\tretry: downloadMaxRetries > 0,\n\t\t\t\t\t\tmaxRetries: downloadMaxRetries\n\t\t\t\t};\n\t\t\t\thttp.get(url, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresolve(response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t});\n};\nconst compileModule = (url)=>{\n\t\tconst compileManual = ()=>{\n\t\t\t\treturn fetch(url).then((result)=>result.arrayBuffer()).then((buffer)=>WebAssembly.compile(buffer));\n\t\t};\n\t\tconst compileStreaming = ()=>{\n\t\t\t\treturn WebAssembly.compileStreaming(fetch(url)).catch((err)=>{\n\t\t\t\t\t\treturn compileManual();\n\t\t\t\t});\n\t\t};\n\t\treturn WebAssembly.compileStreaming ? compileStreaming() : compileManual();\n};\nconst defaultNumWorkers$1 = 1;\nlet jobQueue;\nlet lazyConfig$1;\nconst initializeWorkers = (config)=>{\n\t\tif (jobQueue) {\n\t\t\t\treturn true;\n\t\t}\n\t\tif (!config) {\n\t\t\t\tif (lazyConfig$1) {\n\t\t\t\t\t\tconfig = lazyConfig$1;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst moduleConfig = WasmModule.getConfig('DracoDecoderModule');\n\t\t\t\t\t\tif (moduleConfig) {\n\t\t\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\t\t\t\tjsUrl: moduleConfig.glueUrl,\n\t\t\t\t\t\t\t\t\t\twasmUrl: moduleConfig.wasmUrl,\n\t\t\t\t\t\t\t\t\t\tnumWorkers: moduleConfig.numWorkers\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\t\t\t\tjsUrl: 'draco.wasm.js',\n\t\t\t\t\t\t\t\t\t\twasmUrl: 'draco.wasm.wasm',\n\t\t\t\t\t\t\t\t\t\tnumWorkers: defaultNumWorkers$1\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tif (!config.jsUrl || !config.wasmUrl) {\n\t\t\t\treturn false;\n\t\t}\n\t\tjobQueue = new JobQueue();\n\t\tPromise.all([\n\t\t\t\tdownloadScript(config.jsUrl),\n\t\t\t\tcompileModule(config.wasmUrl)\n\t\t]).then(([dracoSource, dracoModule])=>{\n\t\t\t\tconst code = [\n\t\t\t\t\t\t'/* draco */',\n\t\t\t\t\t\tdracoSource,\n\t\t\t\t\t\t'/* worker */',\n\t\t\t\t\t\t`(\\n${DracoWorker.toString()}\\n)()\\n\\n`\n\t\t\t\t].join('\\n');\n\t\t\t\tconst blob = new Blob([\n\t\t\t\t\t\tcode\n\t\t\t\t], {\n\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t});\n\t\t\t\tconst workerUrl = URL.createObjectURL(blob);\n\t\t\t\tconst numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers$1));\n\t\t\t\tconst workers = [];\n\t\t\t\tfor(let i = 0; i < numWorkers; ++i){\n\t\t\t\t\t\tconst worker = new Worker(workerUrl);\n\t\t\t\t\t\tworker.postMessage({\n\t\t\t\t\t\t\t\ttype: 'init',\n\t\t\t\t\t\t\t\tmodule: dracoModule\n\t\t\t\t\t\t});\n\t\t\t\t\t\tworkers.push(worker);\n\t\t\t\t}\n\t\t\t\tjobQueue.init(workers);\n\t\t});\n\t\treturn true;\n};\nconst dracoInitialize = (config)=>{\n\t\tif (config?.lazyInit) {\n\t\t\t\tlazyConfig$1 = config;\n\t\t} else {\n\t\t\t\tinitializeWorkers(config);\n\t\t}\n};\nconst dracoDecode = (buffer, callback)=>{\n\t\tif (!initializeWorkers()) {\n\t\t\t\treturn false;\n\t\t}\n\t\tjobQueue.enqueueJob(buffer, callback);\n\t\treturn true;\n};\n\nclass GlbResources {\n\t\tdestroy() {\n\t\t\t\tif (this.renders) {\n\t\t\t\t\t\tthis.renders.forEach((render)=>{\n\t\t\t\t\t\t\t\trender.meshes = null;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\nconst isDataURI = (uri)=>{\n\t\treturn /^data:[^\\n\\r,\\u2028\\u2029]*,.*$/i.test(uri);\n};\nconst getDataURIMimeType = (uri)=>{\n\t\treturn uri.substring(uri.indexOf(':') + 1, uri.indexOf(';'));\n};\nconst getNumComponents = (accessorType)=>{\n\t\tswitch(accessorType){\n\t\t\t\tcase 'SCALAR':\n\t\t\t\t\t\treturn 1;\n\t\t\t\tcase 'VEC2':\n\t\t\t\t\t\treturn 2;\n\t\t\t\tcase 'VEC3':\n\t\t\t\t\t\treturn 3;\n\t\t\t\tcase 'VEC4':\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 'MAT2':\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 'MAT3':\n\t\t\t\t\t\treturn 9;\n\t\t\t\tcase 'MAT4':\n\t\t\t\t\t\treturn 16;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 3;\n\t\t}\n};\nconst getComponentType$1 = (componentType)=>{\n\t\tswitch(componentType){\n\t\t\t\tcase 5120:\n\t\t\t\t\t\treturn TYPE_INT8;\n\t\t\t\tcase 5121:\n\t\t\t\t\t\treturn TYPE_UINT8;\n\t\t\t\tcase 5122:\n\t\t\t\t\t\treturn TYPE_INT16;\n\t\t\t\tcase 5123:\n\t\t\t\t\t\treturn TYPE_UINT16;\n\t\t\t\tcase 5124:\n\t\t\t\t\t\treturn TYPE_INT32;\n\t\t\t\tcase 5125:\n\t\t\t\t\t\treturn TYPE_UINT32;\n\t\t\t\tcase 5126:\n\t\t\t\t\t\treturn TYPE_FLOAT32;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 0;\n\t\t}\n};\nconst getComponentSizeInBytes = (componentType)=>{\n\t\tswitch(componentType){\n\t\t\t\tcase 5120:\n\t\t\t\t\t\treturn 1;\n\t\t\t\tcase 5121:\n\t\t\t\t\t\treturn 1;\n\t\t\t\tcase 5122:\n\t\t\t\t\t\treturn 2;\n\t\t\t\tcase 5123:\n\t\t\t\t\t\treturn 2;\n\t\t\t\tcase 5124:\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 5125:\n\t\t\t\t\t\treturn 4;\n\t\t\t\tcase 5126:\n\t\t\t\t\t\treturn 4;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn 0;\n\t\t}\n};\nconst getComponentDataType = (componentType)=>{\n\t\tswitch(componentType){\n\t\t\t\tcase 5120:\n\t\t\t\t\t\treturn Int8Array;\n\t\t\t\tcase 5121:\n\t\t\t\t\t\treturn Uint8Array;\n\t\t\t\tcase 5122:\n\t\t\t\t\t\treturn Int16Array;\n\t\t\t\tcase 5123:\n\t\t\t\t\t\treturn Uint16Array;\n\t\t\t\tcase 5124:\n\t\t\t\t\t\treturn Int32Array;\n\t\t\t\tcase 5125:\n\t\t\t\t\t\treturn Uint32Array;\n\t\t\t\tcase 5126:\n\t\t\t\t\t\treturn Float32Array;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn null;\n\t\t}\n};\nconst gltfToEngineSemanticMap = {\n\t\t'POSITION': SEMANTIC_POSITION,\n\t\t'NORMAL': SEMANTIC_NORMAL,\n\t\t'TANGENT': SEMANTIC_TANGENT,\n\t\t'COLOR_0': SEMANTIC_COLOR,\n\t\t'JOINTS_0': SEMANTIC_BLENDINDICES,\n\t\t'WEIGHTS_0': SEMANTIC_BLENDWEIGHT,\n\t\t'TEXCOORD_0': SEMANTIC_TEXCOORD0,\n\t\t'TEXCOORD_1': SEMANTIC_TEXCOORD1,\n\t\t'TEXCOORD_2': SEMANTIC_TEXCOORD2,\n\t\t'TEXCOORD_3': SEMANTIC_TEXCOORD3,\n\t\t'TEXCOORD_4': SEMANTIC_TEXCOORD4,\n\t\t'TEXCOORD_5': SEMANTIC_TEXCOORD5,\n\t\t'TEXCOORD_6': SEMANTIC_TEXCOORD6,\n\t\t'TEXCOORD_7': SEMANTIC_TEXCOORD7\n};\nconst attributeOrder = {\n\t\t[SEMANTIC_POSITION]: 0,\n\t\t[SEMANTIC_NORMAL]: 1,\n\t\t[SEMANTIC_TANGENT]: 2,\n\t\t[SEMANTIC_COLOR]: 3,\n\t\t[SEMANTIC_BLENDINDICES]: 4,\n\t\t[SEMANTIC_BLENDWEIGHT]: 5,\n\t\t[SEMANTIC_TEXCOORD0]: 6,\n\t\t[SEMANTIC_TEXCOORD1]: 7,\n\t\t[SEMANTIC_TEXCOORD2]: 8,\n\t\t[SEMANTIC_TEXCOORD3]: 9,\n\t\t[SEMANTIC_TEXCOORD4]: 10,\n\t\t[SEMANTIC_TEXCOORD5]: 11,\n\t\t[SEMANTIC_TEXCOORD6]: 12,\n\t\t[SEMANTIC_TEXCOORD7]: 13\n};\nconst getDequantizeFunc = (srcType)=>{\n\t\tswitch(srcType){\n\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\treturn (x)=>Math.max(x / 127.0, -1);\n\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\treturn (x)=>x / 255.0;\n\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\treturn (x)=>Math.max(x / 32767.0, -1);\n\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\treturn (x)=>x / 65535.0;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn (x)=>x;\n\t\t}\n};\nconst dequantizeArray = (dstArray, srcArray, srcType)=>{\n\t\tconst convFunc = getDequantizeFunc(srcType);\n\t\tconst len = srcArray.length;\n\t\tfor(let i = 0; i < len; ++i){\n\t\t\t\tdstArray[i] = convFunc(srcArray[i]);\n\t\t}\n\t\treturn dstArray;\n};\nconst getAccessorData = (gltfAccessor, bufferViews, flatten = false)=>{\n\t\tconst numComponents = getNumComponents(gltfAccessor.type);\n\t\tconst dataType = getComponentDataType(gltfAccessor.componentType);\n\t\tif (!dataType) {\n\t\t\t\treturn null;\n\t\t}\n\t\tlet result;\n\t\tif (gltfAccessor.sparse) {\n\t\t\t\tconst sparse = gltfAccessor.sparse;\n\t\t\t\tconst indicesAccessor = {\n\t\t\t\t\t\tcount: sparse.count,\n\t\t\t\t\t\ttype: 'SCALAR'\n\t\t\t\t};\n\t\t\t\tconst indices = getAccessorData(Object.assign(indicesAccessor, sparse.indices), bufferViews, true);\n\t\t\t\tconst valuesAccessor = {\n\t\t\t\t\t\tcount: sparse.count,\n\t\t\t\t\t\ttype: gltfAccessor.type,\n\t\t\t\t\t\tcomponentType: gltfAccessor.componentType\n\t\t\t\t};\n\t\t\t\tconst values = getAccessorData(Object.assign(valuesAccessor, sparse.values), bufferViews, true);\n\t\t\t\tif (gltfAccessor.hasOwnProperty('bufferView')) {\n\t\t\t\t\t\tconst baseAccessor = {\n\t\t\t\t\t\t\t\tbufferView: gltfAccessor.bufferView,\n\t\t\t\t\t\t\t\tbyteOffset: gltfAccessor.byteOffset,\n\t\t\t\t\t\t\t\tcomponentType: gltfAccessor.componentType,\n\t\t\t\t\t\t\t\tcount: gltfAccessor.count,\n\t\t\t\t\t\t\t\ttype: gltfAccessor.type\n\t\t\t\t\t\t};\n\t\t\t\t\t\tresult = getAccessorData(baseAccessor, bufferViews, true).slice();\n\t\t\t\t} else {\n\t\t\t\t\t\tresult = new dataType(gltfAccessor.count * numComponents);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < sparse.count; ++i){\n\t\t\t\t\t\tconst targetIndex = indices[i];\n\t\t\t\t\t\tfor(let j = 0; j < numComponents; ++j){\n\t\t\t\t\t\t\t\tresult[targetIndex * numComponents + j] = values[i * numComponents + j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tif (gltfAccessor.hasOwnProperty('bufferView')) {\n\t\t\t\t\t\tconst bufferView = bufferViews[gltfAccessor.bufferView];\n\t\t\t\t\t\tif (flatten && bufferView.hasOwnProperty('byteStride')) {\n\t\t\t\t\t\t\t\tconst bytesPerElement = numComponents * dataType.BYTES_PER_ELEMENT;\n\t\t\t\t\t\t\t\tconst storage = new ArrayBuffer(gltfAccessor.count * bytesPerElement);\n\t\t\t\t\t\t\t\tconst tmpArray = new Uint8Array(storage);\n\t\t\t\t\t\t\t\tlet dstOffset = 0;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < gltfAccessor.count; ++i){\n\t\t\t\t\t\t\t\t\t\tlet srcOffset = (gltfAccessor.byteOffset || 0) + i * bufferView.byteStride;\n\t\t\t\t\t\t\t\t\t\tfor(let b = 0; b < bytesPerElement; ++b){\n\t\t\t\t\t\t\t\t\t\t\t\ttmpArray[dstOffset++] = bufferView[srcOffset++];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresult = new dataType(storage);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tresult = new dataType(bufferView.buffer, bufferView.byteOffset + (gltfAccessor.byteOffset || 0), gltfAccessor.count * numComponents);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresult = new dataType(gltfAccessor.count * numComponents);\n\t\t\t\t}\n\t\t}\n\t\treturn result;\n};\nconst getAccessorDataFloat32 = (gltfAccessor, bufferViews)=>{\n\t\tconst data = getAccessorData(gltfAccessor, bufferViews, true);\n\t\tif (data instanceof Float32Array || !gltfAccessor.normalized) {\n\t\t\t\treturn data;\n\t\t}\n\t\tconst float32Data = new Float32Array(data.length);\n\t\tdequantizeArray(float32Data, data, getComponentType$1(gltfAccessor.componentType));\n\t\treturn float32Data;\n};\nconst getAccessorBoundingBox = (gltfAccessor)=>{\n\t\tlet min = gltfAccessor.min;\n\t\tlet max = gltfAccessor.max;\n\t\tif (!min || !max) {\n\t\t\t\treturn null;\n\t\t}\n\t\tif (gltfAccessor.normalized) {\n\t\t\t\tconst ctype = getComponentType$1(gltfAccessor.componentType);\n\t\t\t\tmin = dequantizeArray([], min, ctype);\n\t\t\t\tmax = dequantizeArray([], max, ctype);\n\t\t}\n\t\treturn new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n};\nconst getPrimitiveType = (primitive)=>{\n\t\tif (!primitive.hasOwnProperty('mode')) {\n\t\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\t}\n\t\tswitch(primitive.mode){\n\t\t\t\tcase 0:\n\t\t\t\t\t\treturn PRIMITIVE_POINTS;\n\t\t\t\tcase 1:\n\t\t\t\t\t\treturn PRIMITIVE_LINES;\n\t\t\t\tcase 2:\n\t\t\t\t\t\treturn PRIMITIVE_LINELOOP;\n\t\t\t\tcase 3:\n\t\t\t\t\t\treturn PRIMITIVE_LINESTRIP;\n\t\t\t\tcase 4:\n\t\t\t\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\t\t\tcase 5:\n\t\t\t\t\t\treturn PRIMITIVE_TRISTRIP;\n\t\t\t\tcase 6:\n\t\t\t\t\t\treturn PRIMITIVE_TRIFAN;\n\t\t\t\tdefault:\n\t\t\t\t\t\treturn PRIMITIVE_TRIANGLES;\n\t\t}\n};\nconst generateIndices = (numVertices)=>{\n\t\tconst dummyIndices = new Uint16Array(numVertices);\n\t\tfor(let i = 0; i < numVertices; i++){\n\t\t\t\tdummyIndices[i] = i;\n\t\t}\n\t\treturn dummyIndices;\n};\nconst generateNormals = (sourceDesc, indices)=>{\n\t\tconst p = sourceDesc[SEMANTIC_POSITION];\n\t\tif (!p || p.components !== 3) {\n\t\t\t\treturn;\n\t\t}\n\t\tlet positions;\n\t\tif (p.size !== p.stride) {\n\t\t\t\tconst srcStride = p.stride / typedArrayTypesByteSize[p.type];\n\t\t\t\tconst src = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * srcStride);\n\t\t\t\tpositions = new typedArrayTypes[p.type](p.count * 3);\n\t\t\t\tfor(let i = 0; i < p.count; ++i){\n\t\t\t\t\t\tpositions[i * 3 + 0] = src[i * srcStride + 0];\n\t\t\t\t\t\tpositions[i * 3 + 1] = src[i * srcStride + 1];\n\t\t\t\t\t\tpositions[i * 3 + 2] = src[i * srcStride + 2];\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tpositions = new typedArrayTypes[p.type](p.buffer, p.offset, p.count * 3);\n\t\t}\n\t\tconst numVertices = p.count;\n\t\tif (!indices) {\n\t\t\t\tindices = generateIndices(numVertices);\n\t\t}\n\t\tconst normalsTemp = calculateNormals(positions, indices);\n\t\tconst normals = new Float32Array(normalsTemp.length);\n\t\tnormals.set(normalsTemp);\n\t\tsourceDesc[SEMANTIC_NORMAL] = {\n\t\t\t\tbuffer: normals.buffer,\n\t\t\t\tsize: 12,\n\t\t\t\toffset: 0,\n\t\t\t\tstride: 12,\n\t\t\t\tcount: numVertices,\n\t\t\t\tcomponents: 3,\n\t\t\t\ttype: TYPE_FLOAT32\n\t\t};\n};\nconst cloneTexture = (texture)=>{\n\t\tconst shallowCopyLevels = (texture)=>{\n\t\t\t\tconst result = [];\n\t\t\t\tfor(let mip = 0; mip < texture._levels.length; ++mip){\n\t\t\t\t\t\tlet level = [];\n\t\t\t\t\t\tif (texture.cubemap) {\n\t\t\t\t\t\t\t\tfor(let face = 0; face < 6; ++face){\n\t\t\t\t\t\t\t\t\t\tlevel.push(texture._levels[mip][face]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlevel = texture._levels[mip];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tresult.push(level);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t};\n\t\tconst result = new Texture(texture.device, texture);\n\t\tresult._levels = shallowCopyLevels(texture);\n\t\treturn result;\n};\nconst cloneTextureAsset = (src)=>{\n\t\tconst result = new Asset(`${src.name}_clone`, src.type, src.file, src.data, src.options);\n\t\tresult.loaded = true;\n\t\tresult.resource = cloneTexture(src.resource);\n\t\tsrc.registry.add(result);\n\t\treturn result;\n};\nconst createVertexBufferInternal = (device, sourceDesc)=>{\n\t\tconst positionDesc = sourceDesc[SEMANTIC_POSITION];\n\t\tif (!positionDesc) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst numVertices = positionDesc.count;\n\t\tconst vertexDesc = [];\n\t\tfor(const semantic in sourceDesc){\n\t\t\t\tif (sourceDesc.hasOwnProperty(semantic)) {\n\t\t\t\t\t\tconst element = {\n\t\t\t\t\t\t\t\tsemantic: semantic,\n\t\t\t\t\t\t\t\tcomponents: sourceDesc[semantic].components,\n\t\t\t\t\t\t\t\ttype: sourceDesc[semantic].type,\n\t\t\t\t\t\t\t\tnormalize: !!sourceDesc[semantic].normalize\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!VertexFormat.isElementValid(device, element)) {\n\t\t\t\t\t\t\t\telement.components++;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvertexDesc.push(element);\n\t\t\t\t}\n\t\t}\n\t\tvertexDesc.sort((lhs, rhs)=>{\n\t\t\t\treturn attributeOrder[lhs.semantic] - attributeOrder[rhs.semantic];\n\t\t});\n\t\tlet i, j, k;\n\t\tlet source, target, sourceOffset;\n\t\tconst vertexFormat = new VertexFormat(device, vertexDesc);\n\t\tlet isCorrectlyInterleaved = true;\n\t\tfor(i = 0; i < vertexFormat.elements.length; ++i){\n\t\t\t\ttarget = vertexFormat.elements[i];\n\t\t\t\tsource = sourceDesc[target.name];\n\t\t\t\tsourceOffset = source.offset - positionDesc.offset;\n\t\t\t\tif (source.buffer !== positionDesc.buffer || source.stride !== target.stride || source.size !== target.size || sourceOffset !== target.offset) {\n\t\t\t\t\t\tisCorrectlyInterleaved = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices);\n\t\tconst vertexData = vertexBuffer.lock();\n\t\tconst targetArray = new Uint32Array(vertexData);\n\t\tlet sourceArray;\n\t\tif (isCorrectlyInterleaved) {\n\t\t\t\tsourceArray = new Uint32Array(positionDesc.buffer, positionDesc.offset, numVertices * vertexBuffer.format.size / 4);\n\t\t\t\ttargetArray.set(sourceArray);\n\t\t} else {\n\t\t\t\tlet targetStride, sourceStride;\n\t\t\t\tfor(i = 0; i < vertexBuffer.format.elements.length; ++i){\n\t\t\t\t\t\ttarget = vertexBuffer.format.elements[i];\n\t\t\t\t\t\ttargetStride = target.stride / 4;\n\t\t\t\t\t\tsource = sourceDesc[target.name];\n\t\t\t\t\t\tsourceStride = source.stride / 4;\n\t\t\t\t\t\tsourceArray = new Uint32Array(source.buffer, source.offset, (source.count - 1) * sourceStride + (source.size + 3) / 4);\n\t\t\t\t\t\tlet src = 0;\n\t\t\t\t\t\tlet dst = target.offset / 4;\n\t\t\t\t\t\tconst kend = Math.floor((source.size + 3) / 4);\n\t\t\t\t\t\tfor(j = 0; j < numVertices; ++j){\n\t\t\t\t\t\t\t\tfor(k = 0; k < kend; ++k){\n\t\t\t\t\t\t\t\t\t\ttargetArray[dst + k] = sourceArray[src + k];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsrc += sourceStride;\n\t\t\t\t\t\t\t\tdst += targetStride;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tvertexBuffer.unlock();\n\t\treturn vertexBuffer;\n};\nconst createVertexBuffer = (device, attributes, indices, accessors, bufferViews, vertexBufferDict)=>{\n\t\tconst useAttributes = {};\n\t\tconst attribIds = [];\n\t\tfor(const attrib in attributes){\n\t\t\t\tif (attributes.hasOwnProperty(attrib) && gltfToEngineSemanticMap.hasOwnProperty(attrib)) {\n\t\t\t\t\t\tuseAttributes[attrib] = attributes[attrib];\n\t\t\t\t\t\tattribIds.push(`${attrib}:${attributes[attrib]}`);\n\t\t\t\t}\n\t\t}\n\t\tattribIds.sort();\n\t\tconst vbKey = attribIds.join();\n\t\tlet vb = vertexBufferDict[vbKey];\n\t\tif (!vb) {\n\t\t\t\tconst sourceDesc = {};\n\t\t\t\tfor(const attrib in useAttributes){\n\t\t\t\t\t\tconst accessor = accessors[attributes[attrib]];\n\t\t\t\t\t\tconst accessorData = getAccessorData(accessor, bufferViews);\n\t\t\t\t\t\tconst bufferView = bufferViews[accessor.bufferView];\n\t\t\t\t\t\tconst semantic = gltfToEngineSemanticMap[attrib];\n\t\t\t\t\t\tconst size = getNumComponents(accessor.type) * getComponentSizeInBytes(accessor.componentType);\n\t\t\t\t\t\tconst stride = bufferView && bufferView.hasOwnProperty('byteStride') ? bufferView.byteStride : size;\n\t\t\t\t\t\tsourceDesc[semantic] = {\n\t\t\t\t\t\t\t\tbuffer: accessorData.buffer,\n\t\t\t\t\t\t\t\tsize: size,\n\t\t\t\t\t\t\t\toffset: accessorData.byteOffset,\n\t\t\t\t\t\t\t\tstride: stride,\n\t\t\t\t\t\t\t\tcount: accessor.count,\n\t\t\t\t\t\t\t\tcomponents: getNumComponents(accessor.type),\n\t\t\t\t\t\t\t\ttype: getComponentType$1(accessor.componentType),\n\t\t\t\t\t\t\t\tnormalize: accessor.normalized\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!sourceDesc.hasOwnProperty(SEMANTIC_NORMAL)) {\n\t\t\t\t\t\tgenerateNormals(sourceDesc, indices);\n\t\t\t\t}\n\t\t\t\tvb = createVertexBufferInternal(device, sourceDesc);\n\t\t\t\tvertexBufferDict[vbKey] = vb;\n\t\t}\n\t\treturn vb;\n};\nconst createSkin = (device, gltfSkin, accessors, bufferViews, nodes, glbSkins)=>{\n\t\tlet i, j, bindMatrix;\n\t\tconst joints = gltfSkin.joints;\n\t\tconst numJoints = joints.length;\n\t\tconst ibp = [];\n\t\tif (gltfSkin.hasOwnProperty('inverseBindMatrices')) {\n\t\t\t\tconst inverseBindMatrices = gltfSkin.inverseBindMatrices;\n\t\t\t\tconst ibmData = getAccessorData(accessors[inverseBindMatrices], bufferViews, true);\n\t\t\t\tconst ibmValues = [];\n\t\t\t\tfor(i = 0; i < numJoints; i++){\n\t\t\t\t\t\tfor(j = 0; j < 16; j++){\n\t\t\t\t\t\t\t\tibmValues[j] = ibmData[i * 16 + j];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbindMatrix = new Mat4();\n\t\t\t\t\t\tbindMatrix.set(ibmValues);\n\t\t\t\t\t\tibp.push(bindMatrix);\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tfor(i = 0; i < numJoints; i++){\n\t\t\t\t\t\tbindMatrix = new Mat4();\n\t\t\t\t\t\tibp.push(bindMatrix);\n\t\t\t\t}\n\t\t}\n\t\tconst boneNames = [];\n\t\tfor(i = 0; i < numJoints; i++){\n\t\t\t\tboneNames[i] = nodes[joints[i]].name;\n\t\t}\n\t\tconst key = boneNames.join('#');\n\t\tlet skin = glbSkins.get(key);\n\t\tif (!skin) {\n\t\t\t\tskin = new Skin(device, ibp, boneNames);\n\t\t\t\tglbSkins.set(key, skin);\n\t\t}\n\t\treturn skin;\n};\nconst createDracoMesh = (device, primitive, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises)=>{\n\t\tconst result = new Mesh(device);\n\t\tresult.aabb = getAccessorBoundingBox(accessors[primitive.attributes.POSITION]);\n\t\tconst vertexDesc = [];\n\t\tfor (const [name, index] of Object.entries(primitive.attributes)){\n\t\t\t\tconst accessor = accessors[index];\n\t\t\t\tconst semantic = gltfToEngineSemanticMap[name];\n\t\t\t\tconst componentType = getComponentType$1(accessor.componentType);\n\t\t\t\tvertexDesc.push({\n\t\t\t\t\t\tsemantic: semantic,\n\t\t\t\t\t\tcomponents: getNumComponents(accessor.type),\n\t\t\t\t\t\ttype: componentType,\n\t\t\t\t\t\tnormalize: accessor.normalized ?? (semantic === SEMANTIC_COLOR && (componentType === TYPE_UINT8 || componentType === TYPE_UINT16))\n\t\t\t\t});\n\t\t}\n\t\tpromises.push(new Promise((resolve, reject)=>{\n\t\t\t\tconst dracoExt = primitive.extensions.KHR_draco_mesh_compression;\n\t\t\t\tdracoDecode(bufferViews[dracoExt.bufferView].slice().buffer, (err, decompressedData)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tconsole.log(err);\n\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst order = {};\n\t\t\t\t\t\t\t\tfor (const [name, index] of Object.entries(dracoExt.attributes)){\n\t\t\t\t\t\t\t\t\t\torder[gltfToEngineSemanticMap[name]] = decompressedData.attributes.indexOf(index);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvertexDesc.sort((a, b)=>{\n\t\t\t\t\t\t\t\t\t\treturn order[a.semantic] - order[b.semantic];\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tif (!primitive.attributes?.NORMAL) {\n\t\t\t\t\t\t\t\t\t\tvertexDesc.splice(1, 0, {\n\t\t\t\t\t\t\t\t\t\t\t\tsemantic: 'NORMAL',\n\t\t\t\t\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst vertexFormat = new VertexFormat(device, vertexDesc);\n\t\t\t\t\t\t\t\tconst numVertices = decompressedData.vertices.byteLength / vertexFormat.size;\n\t\t\t\t\t\t\t\tconst indexFormat = numVertices <= 65535 ? INDEXFORMAT_UINT16 : INDEXFORMAT_UINT32;\n\t\t\t\t\t\t\t\tconst numIndices = decompressedData.indices.byteLength / (numVertices <= 65535 ? 2 : 4);\n\t\t\t\t\t\t\t\tconst vertexBuffer = new VertexBuffer(device, vertexFormat, numVertices, {\n\t\t\t\t\t\t\t\t\t\tdata: decompressedData.vertices\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst indexBuffer = new IndexBuffer(device, indexFormat, numIndices, BUFFER_STATIC, decompressedData.indices);\n\t\t\t\t\t\t\t\tresult.vertexBuffer = vertexBuffer;\n\t\t\t\t\t\t\t\tresult.indexBuffer[0] = indexBuffer;\n\t\t\t\t\t\t\t\tresult.primitive[0].type = getPrimitiveType(primitive);\n\t\t\t\t\t\t\t\tresult.primitive[0].base = 0;\n\t\t\t\t\t\t\t\tresult.primitive[0].count = indexBuffer ? numIndices : numVertices;\n\t\t\t\t\t\t\t\tresult.primitive[0].indexed = !!indexBuffer;\n\t\t\t\t\t\t\t\tresolve();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}));\n\t\tif (primitive?.extensions?.KHR_materials_variants) {\n\t\t\t\tconst variants = primitive.extensions.KHR_materials_variants;\n\t\t\t\tconst tempMapping = {};\n\t\t\t\tvariants.mappings.forEach((mapping)=>{\n\t\t\t\t\t\tmapping.variants.forEach((variant)=>{\n\t\t\t\t\t\t\t\ttempMapping[variant] = mapping.material;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tmeshVariants[result.id] = tempMapping;\n\t\t}\n\t\tmeshDefaultMaterials[result.id] = primitive.material;\n\t\treturn result;\n};\nconst createMesh$1 = (device, gltfMesh, accessors, bufferViews, vertexBufferDict, meshVariants, meshDefaultMaterials, assetOptions, promises)=>{\n\t\tconst meshes = [];\n\t\tgltfMesh.primitives.forEach((primitive)=>{\n\t\t\t\tif (primitive.extensions?.KHR_draco_mesh_compression) {\n\t\t\t\t\t\tmeshes.push(createDracoMesh(device, primitive, accessors, bufferViews, meshVariants, meshDefaultMaterials, promises));\n\t\t\t\t} else {\n\t\t\t\t\t\tlet indices = primitive.hasOwnProperty('indices') ? getAccessorData(accessors[primitive.indices], bufferViews, true) : null;\n\t\t\t\t\t\tconst vertexBuffer = createVertexBuffer(device, primitive.attributes, indices, accessors, bufferViews, vertexBufferDict);\n\t\t\t\t\t\tconst primitiveType = getPrimitiveType(primitive);\n\t\t\t\t\t\tconst mesh = new Mesh(device);\n\t\t\t\t\t\tmesh.vertexBuffer = vertexBuffer;\n\t\t\t\t\t\tmesh.primitive[0].type = primitiveType;\n\t\t\t\t\t\tmesh.primitive[0].base = 0;\n\t\t\t\t\t\tmesh.primitive[0].indexed = indices !== null;\n\t\t\t\t\t\tif (indices !== null) {\n\t\t\t\t\t\t\t\tlet indexFormat;\n\t\t\t\t\t\t\t\tif (indices instanceof Uint8Array) {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT8;\n\t\t\t\t\t\t\t\t} else if (indices instanceof Uint16Array) {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT32;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (indexFormat === INDEXFORMAT_UINT8 && device.isWebGPU) {\n\t\t\t\t\t\t\t\t\t\tindexFormat = INDEXFORMAT_UINT16;\n\t\t\t\t\t\t\t\t\t\tindices = new Uint16Array(indices);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst indexBuffer = new IndexBuffer(device, indexFormat, indices.length, BUFFER_STATIC, indices);\n\t\t\t\t\t\t\t\tmesh.indexBuffer[0] = indexBuffer;\n\t\t\t\t\t\t\t\tmesh.primitive[0].count = indices.length;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmesh.primitive[0].count = vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (primitive.hasOwnProperty('extensions') && primitive.extensions.hasOwnProperty('KHR_materials_variants')) {\n\t\t\t\t\t\t\t\tconst variants = primitive.extensions.KHR_materials_variants;\n\t\t\t\t\t\t\t\tconst tempMapping = {};\n\t\t\t\t\t\t\t\tvariants.mappings.forEach((mapping)=>{\n\t\t\t\t\t\t\t\t\t\tmapping.variants.forEach((variant)=>{\n\t\t\t\t\t\t\t\t\t\t\t\ttempMapping[variant] = mapping.material;\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmeshVariants[mesh.id] = tempMapping;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshDefaultMaterials[mesh.id] = primitive.material;\n\t\t\t\t\t\tlet accessor = accessors[primitive.attributes.POSITION];\n\t\t\t\t\t\tmesh.aabb = getAccessorBoundingBox(accessor);\n\t\t\t\t\t\tif (primitive.hasOwnProperty('targets')) {\n\t\t\t\t\t\t\t\tconst targets = [];\n\t\t\t\t\t\t\t\tprimitive.targets.forEach((target, index)=>{\n\t\t\t\t\t\t\t\t\t\tconst options = {};\n\t\t\t\t\t\t\t\t\t\tif (target.hasOwnProperty('POSITION')) {\n\t\t\t\t\t\t\t\t\t\t\t\taccessor = accessors[target.POSITION];\n\t\t\t\t\t\t\t\t\t\t\t\toptions.deltaPositions = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t\t\t\t\t\t\t\t\toptions.aabb = getAccessorBoundingBox(accessor);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (target.hasOwnProperty('NORMAL')) {\n\t\t\t\t\t\t\t\t\t\t\t\taccessor = accessors[target.NORMAL];\n\t\t\t\t\t\t\t\t\t\t\t\toptions.deltaNormals = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (gltfMesh.hasOwnProperty('extras') && gltfMesh.extras.hasOwnProperty('targetNames')) {\n\t\t\t\t\t\t\t\t\t\t\t\toptions.name = gltfMesh.extras.targetNames[index];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\toptions.name = index.toString(10);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (gltfMesh.hasOwnProperty('weights')) {\n\t\t\t\t\t\t\t\t\t\t\t\toptions.defaultWeight = gltfMesh.weights[index];\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\toptions.preserveData = assetOptions.morphPreserveData;\n\t\t\t\t\t\t\t\t\t\ttargets.push(new MorphTarget(options));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmesh.morph = new Morph(targets, device, {\n\t\t\t\t\t\t\t\t\t\tpreferHighPrecision: assetOptions.morphPreferHighPrecision\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshes.push(mesh);\n\t\t\t\t}\n\t\t});\n\t\treturn meshes;\n};\nconst extractTextureTransform = (source, material, maps)=>{\n\t\tlet map;\n\t\tconst texCoord = source.texCoord;\n\t\tif (texCoord) {\n\t\t\t\tfor(map = 0; map < maps.length; ++map){\n\t\t\t\t\t\tmaterial[`${maps[map]}MapUv`] = texCoord;\n\t\t\t\t}\n\t\t}\n\t\tconst zeros = [\n\t\t\t\t0,\n\t\t\t\t0\n\t\t];\n\t\tconst ones = [\n\t\t\t\t1,\n\t\t\t\t1\n\t\t];\n\t\tconst textureTransform = source.extensions?.KHR_texture_transform;\n\t\tif (textureTransform) {\n\t\t\t\tconst offset = textureTransform.offset || zeros;\n\t\t\t\tconst scale = textureTransform.scale || ones;\n\t\t\t\tconst rotation = textureTransform.rotation ? -textureTransform.rotation * math.RAD_TO_DEG : 0;\n\t\t\t\tconst tilingVec = new Vec2(scale[0], scale[1]);\n\t\t\t\tconst offsetVec = new Vec2(offset[0], 1.0 - scale[1] - offset[1]);\n\t\t\t\tfor(map = 0; map < maps.length; ++map){\n\t\t\t\t\t\tmaterial[`${maps[map]}MapTiling`] = tilingVec;\n\t\t\t\t\t\tmaterial[`${maps[map]}MapOffset`] = offsetVec;\n\t\t\t\t\t\tmaterial[`${maps[map]}MapRotation`] = rotation;\n\t\t\t\t}\n\t\t}\n};\nconst extensionPbrSpecGlossiness = (data, material, textures)=>{\n\t\tlet color, texture;\n\t\tif (data.hasOwnProperty('diffuseFactor')) {\n\t\t\t\tcolor = data.diffuseFactor;\n\t\t\t\tmaterial.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t\t\tmaterial.opacity = color[3];\n\t\t} else {\n\t\t\t\tmaterial.diffuse.set(1, 1, 1);\n\t\t\t\tmaterial.opacity = 1;\n\t\t}\n\t\tif (data.hasOwnProperty('diffuseTexture')) {\n\t\t\t\tconst diffuseTexture = data.diffuseTexture;\n\t\t\t\ttexture = textures[diffuseTexture.index];\n\t\t\t\tmaterial.diffuseMap = texture;\n\t\t\t\tmaterial.diffuseMapChannel = 'rgb';\n\t\t\t\tmaterial.opacityMap = texture;\n\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\textractTextureTransform(diffuseTexture, material, [\n\t\t\t\t\t\t'diffuse',\n\t\t\t\t\t\t'opacity'\n\t\t\t\t]);\n\t\t}\n\t\tmaterial.useMetalness = false;\n\t\tif (data.hasOwnProperty('specularFactor')) {\n\t\t\t\tcolor = data.specularFactor;\n\t\t\t\tmaterial.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t} else {\n\t\t\t\tmaterial.specular.set(1, 1, 1);\n\t\t}\n\t\tif (data.hasOwnProperty('glossinessFactor')) {\n\t\t\t\tmaterial.gloss = data.glossinessFactor;\n\t\t} else {\n\t\t\t\tmaterial.gloss = 1.0;\n\t\t}\n\t\tif (data.hasOwnProperty('specularGlossinessTexture')) {\n\t\t\t\tconst specularGlossinessTexture = data.specularGlossinessTexture;\n\t\t\t\tmaterial.specularMap = material.glossMap = textures[specularGlossinessTexture.index];\n\t\t\t\tmaterial.specularMapChannel = 'rgb';\n\t\t\t\tmaterial.glossMapChannel = 'a';\n\t\t\t\textractTextureTransform(specularGlossinessTexture, material, [\n\t\t\t\t\t\t'gloss',\n\t\t\t\t\t\t'metalness'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionClearCoat = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('clearcoatFactor')) {\n\t\t\t\tmaterial.clearCoat = data.clearcoatFactor * 0.25;\n\t\t} else {\n\t\t\t\tmaterial.clearCoat = 0;\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatTexture')) {\n\t\t\t\tconst clearcoatTexture = data.clearcoatTexture;\n\t\t\t\tmaterial.clearCoatMap = textures[clearcoatTexture.index];\n\t\t\t\tmaterial.clearCoatMapChannel = 'r';\n\t\t\t\textractTextureTransform(clearcoatTexture, material, [\n\t\t\t\t\t\t'clearCoat'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatRoughnessFactor')) {\n\t\t\t\tmaterial.clearCoatGloss = data.clearcoatRoughnessFactor;\n\t\t} else {\n\t\t\t\tmaterial.clearCoatGloss = 0;\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatRoughnessTexture')) {\n\t\t\t\tconst clearcoatRoughnessTexture = data.clearcoatRoughnessTexture;\n\t\t\t\tmaterial.clearCoatGlossMap = textures[clearcoatRoughnessTexture.index];\n\t\t\t\tmaterial.clearCoatGlossMapChannel = 'g';\n\t\t\t\textractTextureTransform(clearcoatRoughnessTexture, material, [\n\t\t\t\t\t\t'clearCoatGloss'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('clearcoatNormalTexture')) {\n\t\t\t\tconst clearcoatNormalTexture = data.clearcoatNormalTexture;\n\t\t\t\tmaterial.clearCoatNormalMap = textures[clearcoatNormalTexture.index];\n\t\t\t\textractTextureTransform(clearcoatNormalTexture, material, [\n\t\t\t\t\t\t'clearCoatNormal'\n\t\t\t\t]);\n\t\t\t\tif (clearcoatNormalTexture.hasOwnProperty('scale')) {\n\t\t\t\t\t\tmaterial.clearCoatBumpiness = clearcoatNormalTexture.scale;\n\t\t\t\t} else {\n\t\t\t\t\t\tmaterial.clearCoatBumpiness = 1;\n\t\t\t\t}\n\t\t}\n\t\tmaterial.clearCoatGlossInvert = true;\n};\nconst extensionUnlit = (data, material, textures)=>{\n\t\tmaterial.useLighting = false;\n\t\tmaterial.emissive.copy(material.diffuse);\n\t\tmaterial.emissiveMap = material.diffuseMap;\n\t\tmaterial.emissiveMapUv = material.diffuseMapUv;\n\t\tmaterial.emissiveMapTiling.copy(material.diffuseMapTiling);\n\t\tmaterial.emissiveMapOffset.copy(material.diffuseMapOffset);\n\t\tmaterial.emissiveMapRotation = material.diffuseMapRotation;\n\t\tmaterial.emissiveMapChannel = material.diffuseMapChannel;\n\t\tmaterial.emissiveVertexColor = material.diffuseVertexColor;\n\t\tmaterial.emissiveVertexColorChannel = material.diffuseVertexColorChannel;\n\t\tmaterial.useLighting = false;\n\t\tmaterial.useSkybox = false;\n\t\tmaterial.diffuse.set(1, 1, 1);\n\t\tmaterial.diffuseMap = null;\n\t\tmaterial.diffuseVertexColor = false;\n};\nconst extensionSpecular = (data, material, textures)=>{\n\t\tmaterial.useMetalnessSpecularColor = true;\n\t\tif (data.hasOwnProperty('specularColorTexture')) {\n\t\t\t\tmaterial.specularMap = textures[data.specularColorTexture.index];\n\t\t\t\tmaterial.specularMapChannel = 'rgb';\n\t\t\t\textractTextureTransform(data.specularColorTexture, material, [\n\t\t\t\t\t\t'specular'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('specularColorFactor')) {\n\t\t\t\tconst color = data.specularColorFactor;\n\t\t\t\tmaterial.specular.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t} else {\n\t\t\t\tmaterial.specular.set(1, 1, 1);\n\t\t}\n\t\tif (data.hasOwnProperty('specularFactor')) {\n\t\t\t\tmaterial.specularityFactor = data.specularFactor;\n\t\t} else {\n\t\t\t\tmaterial.specularityFactor = 1;\n\t\t}\n\t\tif (data.hasOwnProperty('specularTexture')) {\n\t\t\t\tmaterial.specularityFactorMapChannel = 'a';\n\t\t\t\tmaterial.specularityFactorMap = textures[data.specularTexture.index];\n\t\t\t\textractTextureTransform(data.specularTexture, material, [\n\t\t\t\t\t\t'specularityFactor'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionIor = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('ior')) {\n\t\t\t\tmaterial.refractionIndex = 1.0 / data.ior;\n\t\t}\n};\nconst extensionDispersion = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('dispersion')) {\n\t\t\t\tmaterial.dispersion = data.dispersion;\n\t\t}\n};\nconst extensionTransmission = (data, material, textures)=>{\n\t\tmaterial.blendType = BLEND_NORMAL;\n\t\tmaterial.useDynamicRefraction = true;\n\t\tif (data.hasOwnProperty('transmissionFactor')) {\n\t\t\t\tmaterial.refraction = data.transmissionFactor;\n\t\t}\n\t\tif (data.hasOwnProperty('transmissionTexture')) {\n\t\t\t\tmaterial.refractionMapChannel = 'r';\n\t\t\t\tmaterial.refractionMap = textures[data.transmissionTexture.index];\n\t\t\t\textractTextureTransform(data.transmissionTexture, material, [\n\t\t\t\t\t\t'refraction'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionSheen = (data, material, textures)=>{\n\t\tmaterial.useSheen = true;\n\t\tif (data.hasOwnProperty('sheenColorFactor')) {\n\t\t\t\tconst color = data.sheenColorFactor;\n\t\t\t\tmaterial.sheen.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t} else {\n\t\t\t\tmaterial.sheen.set(1, 1, 1);\n\t\t}\n\t\tif (data.hasOwnProperty('sheenColorTexture')) {\n\t\t\t\tmaterial.sheenMap = textures[data.sheenColorTexture.index];\n\t\t\t\textractTextureTransform(data.sheenColorTexture, material, [\n\t\t\t\t\t\t'sheen'\n\t\t\t\t]);\n\t\t}\n\t\tmaterial.sheenGloss = data.hasOwnProperty('sheenRoughnessFactor') ? data.sheenRoughnessFactor : 0.0;\n\t\tif (data.hasOwnProperty('sheenRoughnessTexture')) {\n\t\t\t\tmaterial.sheenGlossMap = textures[data.sheenRoughnessTexture.index];\n\t\t\t\tmaterial.sheenGlossMapChannel = 'a';\n\t\t\t\textractTextureTransform(data.sheenRoughnessTexture, material, [\n\t\t\t\t\t\t'sheenGloss'\n\t\t\t\t]);\n\t\t}\n\t\tmaterial.sheenGlossInvert = true;\n};\nconst extensionVolume = (data, material, textures)=>{\n\t\tmaterial.blendType = BLEND_NORMAL;\n\t\tmaterial.useDynamicRefraction = true;\n\t\tif (data.hasOwnProperty('thicknessFactor')) {\n\t\t\t\tmaterial.thickness = data.thicknessFactor;\n\t\t}\n\t\tif (data.hasOwnProperty('thicknessTexture')) {\n\t\t\t\tmaterial.thicknessMap = textures[data.thicknessTexture.index];\n\t\t\t\tmaterial.thicknessMapChannel = 'g';\n\t\t\t\textractTextureTransform(data.thicknessTexture, material, [\n\t\t\t\t\t\t'thickness'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('attenuationDistance')) {\n\t\t\t\tmaterial.attenuationDistance = data.attenuationDistance;\n\t\t}\n\t\tif (data.hasOwnProperty('attenuationColor')) {\n\t\t\t\tconst color = data.attenuationColor;\n\t\t\t\tmaterial.attenuation.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t}\n};\nconst extensionEmissiveStrength = (data, material, textures)=>{\n\t\tif (data.hasOwnProperty('emissiveStrength')) {\n\t\t\t\tmaterial.emissiveIntensity = data.emissiveStrength;\n\t\t}\n};\nconst extensionIridescence = (data, material, textures)=>{\n\t\tmaterial.useIridescence = true;\n\t\tif (data.hasOwnProperty('iridescenceFactor')) {\n\t\t\t\tmaterial.iridescence = data.iridescenceFactor;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceTexture')) {\n\t\t\t\tmaterial.iridescenceMapChannel = 'r';\n\t\t\t\tmaterial.iridescenceMap = textures[data.iridescenceTexture.index];\n\t\t\t\textractTextureTransform(data.iridescenceTexture, material, [\n\t\t\t\t\t\t'iridescence'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceIor')) {\n\t\t\t\tmaterial.iridescenceRefractionIndex = data.iridescenceIor;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceThicknessMinimum')) {\n\t\t\t\tmaterial.iridescenceThicknessMin = data.iridescenceThicknessMinimum;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceThicknessMaximum')) {\n\t\t\t\tmaterial.iridescenceThicknessMax = data.iridescenceThicknessMaximum;\n\t\t}\n\t\tif (data.hasOwnProperty('iridescenceThicknessTexture')) {\n\t\t\t\tmaterial.iridescenceThicknessMapChannel = 'g';\n\t\t\t\tmaterial.iridescenceThicknessMap = textures[data.iridescenceThicknessTexture.index];\n\t\t\t\textractTextureTransform(data.iridescenceThicknessTexture, material, [\n\t\t\t\t\t\t'iridescenceThickness'\n\t\t\t\t]);\n\t\t}\n};\nconst extensionAnisotropy = (data, material, textures)=>{\n\t\tmaterial.enableGGXSpecular = true;\n\t\tif (data.hasOwnProperty('anisotropyStrength')) {\n\t\t\t\tmaterial.anisotropyIntensity = data.anisotropyStrength;\n\t\t} else {\n\t\t\t\tmaterial.anisotropyIntensity = 0;\n\t\t}\n\t\tif (data.hasOwnProperty('anisotropyTexture')) {\n\t\t\t\tconst anisotropyTexture = data.anisotropyTexture;\n\t\t\t\tmaterial.anisotropyMap = textures[anisotropyTexture.index];\n\t\t\t\textractTextureTransform(anisotropyTexture, material, [\n\t\t\t\t\t\t'anisotropy'\n\t\t\t\t]);\n\t\t}\n\t\tif (data.hasOwnProperty('anisotropyRotation')) {\n\t\t\t\tmaterial.anisotropyRotation = data.anisotropyRotation * math.RAD_TO_DEG;\n\t\t} else {\n\t\t\t\tmaterial.anisotropyRotation = 0;\n\t\t}\n};\nconst createMaterial = (gltfMaterial, textures)=>{\n\t\tconst material = new StandardMaterial();\n\t\tif (gltfMaterial.hasOwnProperty('name')) {\n\t\t\t\tmaterial.name = gltfMaterial.name;\n\t\t}\n\t\tmaterial.occludeSpecular = SPECOCC_AO;\n\t\tmaterial.diffuseVertexColor = true;\n\t\tmaterial.specularTint = true;\n\t\tmaterial.specularVertexColor = true;\n\t\tmaterial.specular.set(1, 1, 1);\n\t\tmaterial.gloss = 1;\n\t\tmaterial.glossInvert = true;\n\t\tmaterial.useMetalness = true;\n\t\tlet color, texture;\n\t\tif (gltfMaterial.hasOwnProperty('pbrMetallicRoughness')) {\n\t\t\t\tconst pbrData = gltfMaterial.pbrMetallicRoughness;\n\t\t\t\tif (pbrData.hasOwnProperty('baseColorFactor')) {\n\t\t\t\t\t\tcolor = pbrData.baseColorFactor;\n\t\t\t\t\t\tmaterial.diffuse.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t\t\t\t\tmaterial.opacity = color[3];\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('baseColorTexture')) {\n\t\t\t\t\t\tconst baseColorTexture = pbrData.baseColorTexture;\n\t\t\t\t\t\ttexture = textures[baseColorTexture.index];\n\t\t\t\t\t\tmaterial.diffuseMap = texture;\n\t\t\t\t\t\tmaterial.diffuseMapChannel = 'rgb';\n\t\t\t\t\t\tmaterial.opacityMap = texture;\n\t\t\t\t\t\tmaterial.opacityMapChannel = 'a';\n\t\t\t\t\t\textractTextureTransform(baseColorTexture, material, [\n\t\t\t\t\t\t\t\t'diffuse',\n\t\t\t\t\t\t\t\t'opacity'\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('metallicFactor')) {\n\t\t\t\t\t\tmaterial.metalness = pbrData.metallicFactor;\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('roughnessFactor')) {\n\t\t\t\t\t\tmaterial.gloss = pbrData.roughnessFactor;\n\t\t\t\t}\n\t\t\t\tif (pbrData.hasOwnProperty('metallicRoughnessTexture')) {\n\t\t\t\t\t\tconst metallicRoughnessTexture = pbrData.metallicRoughnessTexture;\n\t\t\t\t\t\tmaterial.metalnessMap = material.glossMap = textures[metallicRoughnessTexture.index];\n\t\t\t\t\t\tmaterial.metalnessMapChannel = 'b';\n\t\t\t\t\t\tmaterial.glossMapChannel = 'g';\n\t\t\t\t\t\textractTextureTransform(metallicRoughnessTexture, material, [\n\t\t\t\t\t\t\t\t'gloss',\n\t\t\t\t\t\t\t\t'metalness'\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('normalTexture')) {\n\t\t\t\tconst normalTexture = gltfMaterial.normalTexture;\n\t\t\t\tmaterial.normalMap = textures[normalTexture.index];\n\t\t\t\textractTextureTransform(normalTexture, material, [\n\t\t\t\t\t\t'normal'\n\t\t\t\t]);\n\t\t\t\tif (normalTexture.hasOwnProperty('scale')) {\n\t\t\t\t\t\tmaterial.bumpiness = normalTexture.scale;\n\t\t\t\t}\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('occlusionTexture')) {\n\t\t\t\tconst occlusionTexture = gltfMaterial.occlusionTexture;\n\t\t\t\tmaterial.aoMap = textures[occlusionTexture.index];\n\t\t\t\tmaterial.aoMapChannel = 'r';\n\t\t\t\textractTextureTransform(occlusionTexture, material, [\n\t\t\t\t\t\t'ao'\n\t\t\t\t]);\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('emissiveFactor')) {\n\t\t\t\tcolor = gltfMaterial.emissiveFactor;\n\t\t\t\tmaterial.emissive.set(Math.pow(color[0], 1 / 2.2), Math.pow(color[1], 1 / 2.2), Math.pow(color[2], 1 / 2.2));\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('emissiveTexture')) {\n\t\t\t\tconst emissiveTexture = gltfMaterial.emissiveTexture;\n\t\t\t\tmaterial.emissiveMap = textures[emissiveTexture.index];\n\t\t\t\textractTextureTransform(emissiveTexture, material, [\n\t\t\t\t\t\t'emissive'\n\t\t\t\t]);\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('alphaMode')) {\n\t\t\t\tswitch(gltfMaterial.alphaMode){\n\t\t\t\t\t\tcase 'MASK':\n\t\t\t\t\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('alphaCutoff')) {\n\t\t\t\t\t\t\t\t\t\tmaterial.alphaTest = gltfMaterial.alphaCutoff;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmaterial.alphaTest = 0.5;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'BLEND':\n\t\t\t\t\t\t\t\tmaterial.blendType = BLEND_NORMAL;\n\t\t\t\t\t\t\t\tmaterial.depthWrite = false;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\tcase 'OPAQUE':\n\t\t\t\t\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tmaterial.blendType = BLEND_NONE;\n\t\t}\n\t\tif (gltfMaterial.hasOwnProperty('doubleSided')) {\n\t\t\t\tmaterial.twoSidedLighting = gltfMaterial.doubleSided;\n\t\t\t\tmaterial.cull = gltfMaterial.doubleSided ? CULLFACE_NONE : CULLFACE_BACK;\n\t\t} else {\n\t\t\t\tmaterial.twoSidedLighting = false;\n\t\t\t\tmaterial.cull = CULLFACE_BACK;\n\t\t}\n\t\tconst extensions = {\n\t\t\t\t'KHR_materials_clearcoat': extensionClearCoat,\n\t\t\t\t'KHR_materials_emissive_strength': extensionEmissiveStrength,\n\t\t\t\t'KHR_materials_ior': extensionIor,\n\t\t\t\t'KHR_materials_dispersion': extensionDispersion,\n\t\t\t\t'KHR_materials_iridescence': extensionIridescence,\n\t\t\t\t'KHR_materials_pbrSpecularGlossiness': extensionPbrSpecGlossiness,\n\t\t\t\t'KHR_materials_sheen': extensionSheen,\n\t\t\t\t'KHR_materials_specular': extensionSpecular,\n\t\t\t\t'KHR_materials_transmission': extensionTransmission,\n\t\t\t\t'KHR_materials_unlit': extensionUnlit,\n\t\t\t\t'KHR_materials_volume': extensionVolume,\n\t\t\t\t'KHR_materials_anisotropy': extensionAnisotropy\n\t\t};\n\t\tif (gltfMaterial.hasOwnProperty('extensions')) {\n\t\t\t\tfor(const key in gltfMaterial.extensions){\n\t\t\t\t\t\tconst extensionFunc = extensions[key];\n\t\t\t\t\t\tif (extensionFunc !== undefined) {\n\t\t\t\t\t\t\t\textensionFunc(gltfMaterial.extensions[key], material, textures);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tmaterial.update();\n\t\treturn material;\n};\nconst createAnimation = (gltfAnimation, animationIndex, gltfAccessors, bufferViews, nodes, meshes, gltfNodes)=>{\n\t\tconst createAnimData = (gltfAccessor)=>{\n\t\t\t\treturn new AnimData(getNumComponents(gltfAccessor.type), getAccessorDataFloat32(gltfAccessor, bufferViews));\n\t\t};\n\t\tconst interpMap = {\n\t\t\t\t'STEP': INTERPOLATION_STEP,\n\t\t\t\t'LINEAR': INTERPOLATION_LINEAR,\n\t\t\t\t'CUBICSPLINE': INTERPOLATION_CUBIC\n\t\t};\n\t\tconst inputMap = {};\n\t\tconst outputMap = {};\n\t\tconst curveMap = {};\n\t\tlet outputCounter = 1;\n\t\tlet i;\n\t\tfor(i = 0; i < gltfAnimation.samplers.length; ++i){\n\t\t\t\tconst sampler = gltfAnimation.samplers[i];\n\t\t\t\tif (!inputMap.hasOwnProperty(sampler.input)) {\n\t\t\t\t\t\tinputMap[sampler.input] = createAnimData(gltfAccessors[sampler.input]);\n\t\t\t\t}\n\t\t\t\tif (!outputMap.hasOwnProperty(sampler.output)) {\n\t\t\t\t\t\toutputMap[sampler.output] = createAnimData(gltfAccessors[sampler.output]);\n\t\t\t\t}\n\t\t\t\tconst interpolation = sampler.hasOwnProperty('interpolation') && interpMap.hasOwnProperty(sampler.interpolation) ? interpMap[sampler.interpolation] : INTERPOLATION_LINEAR;\n\t\t\t\tconst curve = {\n\t\t\t\t\t\tpaths: [],\n\t\t\t\t\t\tinput: sampler.input,\n\t\t\t\t\t\toutput: sampler.output,\n\t\t\t\t\t\tinterpolation: interpolation\n\t\t\t\t};\n\t\t\t\tcurveMap[i] = curve;\n\t\t}\n\t\tconst quatArrays = [];\n\t\tconst transformSchema = {\n\t\t\t\t'translation': 'localPosition',\n\t\t\t\t'rotation': 'localRotation',\n\t\t\t\t'scale': 'localScale'\n\t\t};\n\t\tconst constructNodePath = (node)=>{\n\t\t\t\tconst path = [];\n\t\t\t\twhile(node){\n\t\t\t\t\t\tpath.unshift(node.name);\n\t\t\t\t\t\tnode = node.parent;\n\t\t\t\t}\n\t\t\t\treturn path;\n\t\t};\n\t\tconst createMorphTargetCurves = (curve, gltfNode, entityPath)=>{\n\t\t\t\tconst out = outputMap[curve.output];\n\t\t\t\tif (!out) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet targetNames;\n\t\t\t\tif (meshes && meshes[gltfNode.mesh]) {\n\t\t\t\t\t\tconst mesh = meshes[gltfNode.mesh];\n\t\t\t\t\t\tif (mesh.hasOwnProperty('extras') && mesh.extras.hasOwnProperty('targetNames')) {\n\t\t\t\t\t\t\t\ttargetNames = mesh.extras.targetNames;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst outData = out.data;\n\t\t\t\tconst morphTargetCount = outData.length / inputMap[curve.input].data.length;\n\t\t\t\tconst keyframeCount = outData.length / morphTargetCount;\n\t\t\t\tconst singleBufferSize = keyframeCount * 4;\n\t\t\t\tconst buffer = new ArrayBuffer(singleBufferSize * morphTargetCount);\n\t\t\t\tfor(let j = 0; j < morphTargetCount; j++){\n\t\t\t\t\t\tconst morphTargetOutput = new Float32Array(buffer, singleBufferSize * j, keyframeCount);\n\t\t\t\t\t\tfor(let k = 0; k < keyframeCount; k++){\n\t\t\t\t\t\t\t\tmorphTargetOutput[k] = outData[k * morphTargetCount + j];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst output = new AnimData(1, morphTargetOutput);\n\t\t\t\t\t\tconst weightName = targetNames?.[j] ? `name.${targetNames[j]}` : j;\n\t\t\t\t\t\toutputMap[-outputCounter] = output;\n\t\t\t\t\t\tconst morphCurve = {\n\t\t\t\t\t\t\t\tpaths: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tentityPath: entityPath,\n\t\t\t\t\t\t\t\t\t\t\t\tcomponent: 'graph',\n\t\t\t\t\t\t\t\t\t\t\t\tpropertyPath: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t`weight.${weightName}`\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tinput: curve.input,\n\t\t\t\t\t\t\t\toutput: -outputCounter,\n\t\t\t\t\t\t\t\tinterpolation: curve.interpolation\n\t\t\t\t\t\t};\n\t\t\t\t\t\toutputCounter++;\n\t\t\t\t\t\tcurveMap[`morphCurve-${i}-${j}`] = morphCurve;\n\t\t\t\t}\n\t\t};\n\t\tfor(i = 0; i < gltfAnimation.channels.length; ++i){\n\t\t\t\tconst channel = gltfAnimation.channels[i];\n\t\t\t\tconst target = channel.target;\n\t\t\t\tconst curve = curveMap[channel.sampler];\n\t\t\t\tconst node = nodes[target.node];\n\t\t\t\tconst gltfNode = gltfNodes[target.node];\n\t\t\t\tconst entityPath = constructNodePath(node);\n\t\t\t\tif (target.path.startsWith('weights')) {\n\t\t\t\t\t\tcreateMorphTargetCurves(curve, gltfNode, entityPath);\n\t\t\t\t\t\tcurveMap[channel.sampler].morphCurve = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tcurve.paths.push({\n\t\t\t\t\t\t\t\tentityPath: entityPath,\n\t\t\t\t\t\t\t\tcomponent: 'graph',\n\t\t\t\t\t\t\t\tpropertyPath: [\n\t\t\t\t\t\t\t\t\t\ttransformSchema[target.path]\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tconst inputs = [];\n\t\tconst outputs = [];\n\t\tconst curves = [];\n\t\tfor(const inputKey in inputMap){\n\t\t\t\tinputs.push(inputMap[inputKey]);\n\t\t\t\tinputMap[inputKey] = inputs.length - 1;\n\t\t}\n\t\tfor(const outputKey in outputMap){\n\t\t\t\toutputs.push(outputMap[outputKey]);\n\t\t\t\toutputMap[outputKey] = outputs.length - 1;\n\t\t}\n\t\tfor(const curveKey in curveMap){\n\t\t\t\tconst curveData = curveMap[curveKey];\n\t\t\t\tif (curveData.morphCurve) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tcurves.push(new AnimCurve(curveData.paths, inputMap[curveData.input], outputMap[curveData.output], curveData.interpolation));\n\t\t\t\tif (curveData.paths.length > 0 && curveData.paths[0].propertyPath[0] === 'localRotation' && curveData.interpolation !== INTERPOLATION_CUBIC) {\n\t\t\t\t\t\tquatArrays.push(curves[curves.length - 1].output);\n\t\t\t\t}\n\t\t}\n\t\tquatArrays.sort();\n\t\tlet prevIndex = null;\n\t\tlet data;\n\t\tfor(i = 0; i < quatArrays.length; ++i){\n\t\t\t\tconst index = quatArrays[i];\n\t\t\t\tif (i === 0 || index !== prevIndex) {\n\t\t\t\t\t\tdata = outputs[index];\n\t\t\t\t\t\tif (data.components === 4) {\n\t\t\t\t\t\t\t\tconst d = data.data;\n\t\t\t\t\t\t\t\tconst len = d.length - 4;\n\t\t\t\t\t\t\t\tfor(let j = 0; j < len; j += 4){\n\t\t\t\t\t\t\t\t\t\tconst dp = d[j + 0] * d[j + 4] + d[j + 1] * d[j + 5] + d[j + 2] * d[j + 6] + d[j + 3] * d[j + 7];\n\t\t\t\t\t\t\t\t\t\tif (dp < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 4] *= -1;\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 5] *= -1;\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 6] *= -1;\n\t\t\t\t\t\t\t\t\t\t\t\td[j + 7] *= -1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tprevIndex = index;\n\t\t\t\t}\n\t\t}\n\t\tlet duration = 0;\n\t\tfor(i = 0; i < inputs.length; i++){\n\t\t\t\tdata = inputs[i]._data;\n\t\t\t\tduration = Math.max(duration, data.length === 0 ? 0 : data[data.length - 1]);\n\t\t}\n\t\treturn new AnimTrack(gltfAnimation.hasOwnProperty('name') ? gltfAnimation.name : `animation_${animationIndex}`, duration, inputs, outputs, curves);\n};\nconst tempMat = new Mat4();\nconst tempVec = new Vec3();\nconst createNode = (gltfNode, nodeIndex, nodeInstancingMap)=>{\n\t\tconst entity = new GraphNode();\n\t\tif (gltfNode.hasOwnProperty('name') && gltfNode.name.length > 0) {\n\t\t\t\tentity.name = gltfNode.name;\n\t\t} else {\n\t\t\t\tentity.name = `node_${nodeIndex}`;\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('matrix')) {\n\t\t\t\ttempMat.data.set(gltfNode.matrix);\n\t\t\t\ttempMat.getTranslation(tempVec);\n\t\t\t\tentity.setLocalPosition(tempVec);\n\t\t\t\ttempMat.getEulerAngles(tempVec);\n\t\t\t\tentity.setLocalEulerAngles(tempVec);\n\t\t\t\ttempMat.getScale(tempVec);\n\t\t\t\tentity.setLocalScale(tempVec);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('rotation')) {\n\t\t\t\tconst r = gltfNode.rotation;\n\t\t\t\tentity.setLocalRotation(r[0], r[1], r[2], r[3]);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('translation')) {\n\t\t\t\tconst t = gltfNode.translation;\n\t\t\t\tentity.setLocalPosition(t[0], t[1], t[2]);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('scale')) {\n\t\t\t\tconst s = gltfNode.scale;\n\t\t\t\tentity.setLocalScale(s[0], s[1], s[2]);\n\t\t}\n\t\tif (gltfNode.hasOwnProperty('extensions') && gltfNode.extensions.EXT_mesh_gpu_instancing) {\n\t\t\t\tnodeInstancingMap.set(gltfNode, {\n\t\t\t\t\t\text: gltfNode.extensions.EXT_mesh_gpu_instancing\n\t\t\t\t});\n\t\t}\n\t\treturn entity;\n};\nconst createCamera = (gltfCamera, node)=>{\n\t\tconst projection = gltfCamera.type === 'orthographic' ? PROJECTION_ORTHOGRAPHIC : PROJECTION_PERSPECTIVE;\n\t\tconst gltfProperties = projection === PROJECTION_ORTHOGRAPHIC ? gltfCamera.orthographic : gltfCamera.perspective;\n\t\tconst componentData = {\n\t\t\t\tenabled: false,\n\t\t\t\tprojection: projection,\n\t\t\t\tnearClip: gltfProperties.znear,\n\t\t\t\taspectRatioMode: ASPECT_AUTO\n\t\t};\n\t\tif (gltfProperties.zfar) {\n\t\t\t\tcomponentData.farClip = gltfProperties.zfar;\n\t\t}\n\t\tif (projection === PROJECTION_ORTHOGRAPHIC) {\n\t\t\t\tcomponentData.orthoHeight = 0.5 * gltfProperties.ymag;\n\t\t\t\tif (gltfProperties.ymag) {\n\t\t\t\t\t\tcomponentData.aspectRatioMode = ASPECT_MANUAL;\n\t\t\t\t\t\tcomponentData.aspectRatio = gltfProperties.xmag / gltfProperties.ymag;\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tcomponentData.fov = gltfProperties.yfov * math.RAD_TO_DEG;\n\t\t\t\tif (gltfProperties.aspectRatio) {\n\t\t\t\t\t\tcomponentData.aspectRatioMode = ASPECT_MANUAL;\n\t\t\t\t\t\tcomponentData.aspectRatio = gltfProperties.aspectRatio;\n\t\t\t\t}\n\t\t}\n\t\tconst cameraEntity = new Entity(gltfCamera.name);\n\t\tcameraEntity.addComponent('camera', componentData);\n\t\treturn cameraEntity;\n};\nconst createLight = (gltfLight, node)=>{\n\t\tconst lightProps = {\n\t\t\t\tenabled: false,\n\t\t\t\ttype: gltfLight.type === 'point' ? 'omni' : gltfLight.type,\n\t\t\t\tcolor: gltfLight.hasOwnProperty('color') ? new Color(gltfLight.color) : Color.WHITE,\n\t\t\t\trange: gltfLight.hasOwnProperty('range') ? gltfLight.range : 9999,\n\t\t\t\tfalloffMode: LIGHTFALLOFF_INVERSESQUARED,\n\t\t\t\tintensity: gltfLight.hasOwnProperty('intensity') ? math.clamp(gltfLight.intensity, 0, 2) : 1\n\t\t};\n\t\tif (gltfLight.hasOwnProperty('spot')) {\n\t\t\t\tlightProps.innerConeAngle = gltfLight.spot.hasOwnProperty('innerConeAngle') ? gltfLight.spot.innerConeAngle * math.RAD_TO_DEG : 0;\n\t\t\t\tlightProps.outerConeAngle = gltfLight.spot.hasOwnProperty('outerConeAngle') ? gltfLight.spot.outerConeAngle * math.RAD_TO_DEG : Math.PI / 4;\n\t\t}\n\t\tif (gltfLight.hasOwnProperty('intensity')) {\n\t\t\t\tlightProps.luminance = gltfLight.intensity * Light.getLightUnitConversion(lightTypes[lightProps.type], lightProps.outerConeAngle, lightProps.innerConeAngle);\n\t\t}\n\t\tconst lightEntity = new Entity(node.name);\n\t\tlightEntity.rotateLocal(90, 0, 0);\n\t\tlightEntity.addComponent('light', lightProps);\n\t\treturn lightEntity;\n};\nconst createSkins = (device, gltf, nodes, bufferViews)=>{\n\t\tif (!gltf.hasOwnProperty('skins') || gltf.skins.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst glbSkins = new Map();\n\t\treturn gltf.skins.map((gltfSkin)=>{\n\t\t\t\treturn createSkin(device, gltfSkin, gltf.accessors, bufferViews, nodes, glbSkins);\n\t\t});\n};\nconst createMeshes = (device, gltf, bufferViews, options)=>{\n\t\tconst vertexBufferDict = {};\n\t\tconst meshVariants = {};\n\t\tconst meshDefaultMaterials = {};\n\t\tconst promises = [];\n\t\tconst valid = !options.skipMeshes && gltf?.meshes?.length && gltf?.accessors?.length && gltf?.bufferViews?.length;\n\t\tconst meshes = valid ? gltf.meshes.map((gltfMesh)=>{\n\t\t\t\treturn createMesh$1(device, gltfMesh, gltf.accessors, bufferViews, vertexBufferDict, meshVariants, meshDefaultMaterials, options, promises);\n\t\t}) : [];\n\t\treturn {\n\t\t\t\tmeshes,\n\t\t\t\tmeshVariants,\n\t\t\t\tmeshDefaultMaterials,\n\t\t\t\tpromises\n\t\t};\n};\nconst createMaterials = (gltf, textures, options)=>{\n\t\tif (!gltf.hasOwnProperty('materials') || gltf.materials.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.material?.preprocess;\n\t\tconst process = options?.material?.process ?? createMaterial;\n\t\tconst postprocess = options?.material?.postprocess;\n\t\treturn gltf.materials.map((gltfMaterial)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfMaterial);\n\t\t\t\t}\n\t\t\t\tconst material = process(gltfMaterial, textures);\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfMaterial, material);\n\t\t\t\t}\n\t\t\t\treturn material;\n\t\t});\n};\nconst createVariants = (gltf)=>{\n\t\tif (!gltf.hasOwnProperty('extensions') || !gltf.extensions.hasOwnProperty('KHR_materials_variants')) {\n\t\t\t\treturn null;\n\t\t}\n\t\tconst data = gltf.extensions.KHR_materials_variants.variants;\n\t\tconst variants = {};\n\t\tfor(let i = 0; i < data.length; i++){\n\t\t\t\tvariants[data[i].name] = i;\n\t\t}\n\t\treturn variants;\n};\nconst createAnimations = (gltf, nodes, bufferViews, options)=>{\n\t\tif (!gltf.hasOwnProperty('animations') || gltf.animations.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.animation?.preprocess;\n\t\tconst postprocess = options?.animation?.postprocess;\n\t\treturn gltf.animations.map((gltfAnimation, index)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfAnimation);\n\t\t\t\t}\n\t\t\t\tconst animation = createAnimation(gltfAnimation, index, gltf.accessors, bufferViews, nodes, gltf.meshes, gltf.nodes);\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfAnimation, animation);\n\t\t\t\t}\n\t\t\t\treturn animation;\n\t\t});\n};\nconst createInstancing = (device, gltf, nodeInstancingMap, bufferViews)=>{\n\t\tconst accessors = gltf.accessors;\n\t\tnodeInstancingMap.forEach((data, entity)=>{\n\t\t\t\tconst attributes = data.ext.attributes;\n\t\t\t\tlet translations;\n\t\t\t\tif (attributes.hasOwnProperty('TRANSLATION')) {\n\t\t\t\t\t\tconst accessor = accessors[attributes.TRANSLATION];\n\t\t\t\t\t\ttranslations = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t}\n\t\t\t\tlet rotations;\n\t\t\t\tif (attributes.hasOwnProperty('ROTATION')) {\n\t\t\t\t\t\tconst accessor = accessors[attributes.ROTATION];\n\t\t\t\t\t\trotations = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t}\n\t\t\t\tlet scales;\n\t\t\t\tif (attributes.hasOwnProperty('SCALE')) {\n\t\t\t\t\t\tconst accessor = accessors[attributes.SCALE];\n\t\t\t\t\t\tscales = getAccessorDataFloat32(accessor, bufferViews);\n\t\t\t\t}\n\t\t\t\tconst instanceCount = (translations ? translations.length / 3 : 0) || (rotations ? rotations.length / 4 : 0) || (scales ? scales.length / 3 : 0);\n\t\t\t\tif (instanceCount) {\n\t\t\t\t\t\tconst matrices = new Float32Array(instanceCount * 16);\n\t\t\t\t\t\tconst pos = new Vec3();\n\t\t\t\t\t\tconst rot = new Quat();\n\t\t\t\t\t\tconst scl = new Vec3(1, 1, 1);\n\t\t\t\t\t\tconst matrix = new Mat4();\n\t\t\t\t\t\tlet matrixIndex = 0;\n\t\t\t\t\t\tfor(let i = 0; i < instanceCount; i++){\n\t\t\t\t\t\t\t\tconst i3 = i * 3;\n\t\t\t\t\t\t\t\tif (translations) {\n\t\t\t\t\t\t\t\t\t\tpos.set(translations[i3], translations[i3 + 1], translations[i3 + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (rotations) {\n\t\t\t\t\t\t\t\t\t\tconst i4 = i * 4;\n\t\t\t\t\t\t\t\t\t\trot.set(rotations[i4], rotations[i4 + 1], rotations[i4 + 2], rotations[i4 + 3]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scales) {\n\t\t\t\t\t\t\t\t\t\tscl.set(scales[i3], scales[i3 + 1], scales[i3 + 2]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmatrix.setTRS(pos, rot, scl);\n\t\t\t\t\t\t\t\tfor(let m = 0; m < 16; m++){\n\t\t\t\t\t\t\t\t\t\tmatrices[matrixIndex++] = matrix.data[m];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdata.matrices = matrices;\n\t\t\t\t}\n\t\t});\n};\nconst createNodes = (gltf, options, nodeInstancingMap)=>{\n\t\tif (!gltf.hasOwnProperty('nodes') || gltf.nodes.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.node?.preprocess;\n\t\tconst process = options?.node?.process ?? createNode;\n\t\tconst postprocess = options?.node?.postprocess;\n\t\tconst nodes = gltf.nodes.map((gltfNode, index)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfNode);\n\t\t\t\t}\n\t\t\t\tconst node = process(gltfNode, index, nodeInstancingMap);\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpostprocess(gltfNode, node);\n\t\t\t\t}\n\t\t\t\treturn node;\n\t\t});\n\t\tfor(let i = 0; i < gltf.nodes.length; ++i){\n\t\t\t\tconst gltfNode = gltf.nodes[i];\n\t\t\t\tif (gltfNode.hasOwnProperty('children')) {\n\t\t\t\t\t\tconst parent = nodes[i];\n\t\t\t\t\t\tconst uniqueNames = {};\n\t\t\t\t\t\tfor(let j = 0; j < gltfNode.children.length; ++j){\n\t\t\t\t\t\t\t\tconst child = nodes[gltfNode.children[j]];\n\t\t\t\t\t\t\t\tif (!child.parent) {\n\t\t\t\t\t\t\t\t\t\tif (uniqueNames.hasOwnProperty(child.name)) {\n\t\t\t\t\t\t\t\t\t\t\t\tchild.name += uniqueNames[child.name]++;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tuniqueNames[child.name] = 1;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tparent.addChild(child);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn nodes;\n};\nconst createScenes = (gltf, nodes)=>{\n\t\tconst scenes = [];\n\t\tconst count = gltf.scenes.length;\n\t\tif (count === 1 && gltf.scenes[0].nodes?.length === 1) {\n\t\t\t\tconst nodeIndex = gltf.scenes[0].nodes[0];\n\t\t\t\tscenes.push(nodes[nodeIndex]);\n\t\t} else {\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst scene = gltf.scenes[i];\n\t\t\t\t\t\tif (scene.nodes) {\n\t\t\t\t\t\t\t\tconst sceneRoot = new GraphNode(scene.name);\n\t\t\t\t\t\t\t\tfor(let n = 0; n < scene.nodes.length; n++){\n\t\t\t\t\t\t\t\t\t\tconst childNode = nodes[scene.nodes[n]];\n\t\t\t\t\t\t\t\t\t\tsceneRoot.addChild(childNode);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tscenes.push(sceneRoot);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn scenes;\n};\nconst createCameras = (gltf, nodes, options)=>{\n\t\tlet cameras = null;\n\t\tif (gltf.hasOwnProperty('nodes') && gltf.hasOwnProperty('cameras') && gltf.cameras.length > 0) {\n\t\t\t\tconst preprocess = options?.camera?.preprocess;\n\t\t\t\tconst process = options?.camera?.process ?? createCamera;\n\t\t\t\tconst postprocess = options?.camera?.postprocess;\n\t\t\t\tgltf.nodes.forEach((gltfNode, nodeIndex)=>{\n\t\t\t\t\t\tif (gltfNode.hasOwnProperty('camera')) {\n\t\t\t\t\t\t\t\tconst gltfCamera = gltf.cameras[gltfNode.camera];\n\t\t\t\t\t\t\t\tif (gltfCamera) {\n\t\t\t\t\t\t\t\t\t\tif (preprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\tpreprocess(gltfCamera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst camera = process(gltfCamera, nodes[nodeIndex]);\n\t\t\t\t\t\t\t\t\t\tif (postprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\tpostprocess(gltfCamera, camera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (camera) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!cameras) cameras = new Map();\n\t\t\t\t\t\t\t\t\t\t\t\tcameras.set(gltfNode, camera);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\treturn cameras;\n};\nconst createLights = (gltf, nodes, options)=>{\n\t\tlet lights = null;\n\t\tif (gltf.hasOwnProperty('nodes') && gltf.hasOwnProperty('extensions') && gltf.extensions.hasOwnProperty('KHR_lights_punctual') && gltf.extensions.KHR_lights_punctual.hasOwnProperty('lights')) {\n\t\t\t\tconst gltfLights = gltf.extensions.KHR_lights_punctual.lights;\n\t\t\t\tif (gltfLights.length) {\n\t\t\t\t\t\tconst preprocess = options?.light?.preprocess;\n\t\t\t\t\t\tconst process = options?.light?.process ?? createLight;\n\t\t\t\t\t\tconst postprocess = options?.light?.postprocess;\n\t\t\t\t\t\tgltf.nodes.forEach((gltfNode, nodeIndex)=>{\n\t\t\t\t\t\t\t\tif (gltfNode.hasOwnProperty('extensions') && gltfNode.extensions.hasOwnProperty('KHR_lights_punctual') && gltfNode.extensions.KHR_lights_punctual.hasOwnProperty('light')) {\n\t\t\t\t\t\t\t\t\t\tconst lightIndex = gltfNode.extensions.KHR_lights_punctual.light;\n\t\t\t\t\t\t\t\t\t\tconst gltfLight = gltfLights[lightIndex];\n\t\t\t\t\t\t\t\t\t\tif (gltfLight) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (preprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpreprocess(gltfLight);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tconst light = process(gltfLight, nodes[nodeIndex]);\n\t\t\t\t\t\t\t\t\t\t\t\tif (postprocess) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpostprocess(gltfLight, light);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (light) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!lights) lights = new Map();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlights.set(gltfNode, light);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\treturn lights;\n};\nconst linkSkins = (gltf, renders, skins)=>{\n\t\tgltf.nodes.forEach((gltfNode)=>{\n\t\t\t\tif (gltfNode.hasOwnProperty('mesh') && gltfNode.hasOwnProperty('skin')) {\n\t\t\t\t\t\tconst meshGroup = renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\tmeshGroup.forEach((mesh)=>{\n\t\t\t\t\t\t\t\tmesh.skin = skins[gltfNode.skin];\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t});\n};\nconst createResources = async (device, gltf, bufferViews, textures, options)=>{\n\t\tconst preprocess = options?.global?.preprocess;\n\t\tconst postprocess = options?.global?.postprocess;\n\t\tif (preprocess) {\n\t\t\t\tpreprocess(gltf);\n\t\t}\n\t\tif (gltf.asset && gltf.asset.generator === 'PlayCanvas') ;\n\t\tconst nodeInstancingMap = new Map();\n\t\tconst nodes = createNodes(gltf, options, nodeInstancingMap);\n\t\tconst scenes = createScenes(gltf, nodes);\n\t\tconst lights = createLights(gltf, nodes, options);\n\t\tconst cameras = createCameras(gltf, nodes, options);\n\t\tconst variants = createVariants(gltf);\n\t\tconst bufferViewData = await Promise.all(bufferViews);\n\t\tconst { meshes, meshVariants, meshDefaultMaterials, promises } = createMeshes(device, gltf, bufferViewData, options);\n\t\tconst animations = createAnimations(gltf, nodes, bufferViewData, options);\n\t\tcreateInstancing(device, gltf, nodeInstancingMap, bufferViewData);\n\t\tconst textureAssets = await Promise.all(textures);\n\t\tconst textureInstances = textureAssets.map((t)=>t.resource);\n\t\tconst materials = createMaterials(gltf, textureInstances, options);\n\t\tconst skins = createSkins(device, gltf, nodes, bufferViewData);\n\t\tconst renders = [];\n\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\trenders[i] = new Render();\n\t\t\t\trenders[i].meshes = meshes[i];\n\t\t}\n\t\tlinkSkins(gltf, renders, skins);\n\t\tconst result = new GlbResources();\n\t\tresult.gltf = gltf;\n\t\tresult.nodes = nodes;\n\t\tresult.scenes = scenes;\n\t\tresult.animations = animations;\n\t\tresult.textures = textureAssets;\n\t\tresult.materials = materials;\n\t\tresult.variants = variants;\n\t\tresult.meshVariants = meshVariants;\n\t\tresult.meshDefaultMaterials = meshDefaultMaterials;\n\t\tresult.renders = renders;\n\t\tresult.skins = skins;\n\t\tresult.lights = lights;\n\t\tresult.cameras = cameras;\n\t\tresult.nodeInstancingMap = nodeInstancingMap;\n\t\tif (postprocess) {\n\t\t\t\tpostprocess(gltf, result);\n\t\t}\n\t\tawait Promise.all(promises);\n\t\treturn result;\n};\nconst applySampler = (texture, gltfSampler)=>{\n\t\tconst getFilter = (filter, defaultValue)=>{\n\t\t\t\tswitch(filter){\n\t\t\t\t\t\tcase 9728:\n\t\t\t\t\t\t\t\treturn FILTER_NEAREST;\n\t\t\t\t\t\tcase 9729:\n\t\t\t\t\t\t\t\treturn FILTER_LINEAR;\n\t\t\t\t\t\tcase 9984:\n\t\t\t\t\t\t\t\treturn FILTER_NEAREST_MIPMAP_NEAREST;\n\t\t\t\t\t\tcase 9985:\n\t\t\t\t\t\t\t\treturn FILTER_LINEAR_MIPMAP_NEAREST;\n\t\t\t\t\t\tcase 9986:\n\t\t\t\t\t\t\t\treturn FILTER_NEAREST_MIPMAP_LINEAR;\n\t\t\t\t\t\tcase 9987:\n\t\t\t\t\t\t\t\treturn FILTER_LINEAR_MIPMAP_LINEAR;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn defaultValue;\n\t\t\t\t}\n\t\t};\n\t\tconst getWrap = (wrap, defaultValue)=>{\n\t\t\t\tswitch(wrap){\n\t\t\t\t\t\tcase 33071:\n\t\t\t\t\t\t\t\treturn ADDRESS_CLAMP_TO_EDGE;\n\t\t\t\t\t\tcase 33648:\n\t\t\t\t\t\t\t\treturn ADDRESS_MIRRORED_REPEAT;\n\t\t\t\t\t\tcase 10497:\n\t\t\t\t\t\t\t\treturn ADDRESS_REPEAT;\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\treturn defaultValue;\n\t\t\t\t}\n\t\t};\n\t\tif (texture) {\n\t\t\t\tgltfSampler = gltfSampler ?? {};\n\t\t\t\ttexture.minFilter = getFilter(gltfSampler.minFilter, FILTER_LINEAR_MIPMAP_LINEAR);\n\t\t\t\ttexture.magFilter = getFilter(gltfSampler.magFilter, FILTER_LINEAR);\n\t\t\t\ttexture.addressU = getWrap(gltfSampler.wrapS, ADDRESS_REPEAT);\n\t\t\t\ttexture.addressV = getWrap(gltfSampler.wrapT, ADDRESS_REPEAT);\n\t\t}\n};\nlet gltfTextureUniqueId = 0;\nconst getTextureSource = (gltfTexture)=>gltfTexture.extensions?.KHR_texture_basisu?.source ?? gltfTexture.extensions?.EXT_texture_webp?.source ?? gltfTexture.source;\nconst createImages = (gltf, bufferViews, urlBase, registry, options)=>{\n\t\tif (!gltf.images || gltf.images.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.image?.preprocess;\n\t\tconst processAsync = options?.image?.processAsync;\n\t\tconst postprocess = options?.image?.postprocess;\n\t\tconst mimeTypeFileExtensions = {\n\t\t\t\t'image/png': 'png',\n\t\t\t\t'image/jpeg': 'jpg',\n\t\t\t\t'image/basis': 'basis',\n\t\t\t\t'image/ktx': 'ktx',\n\t\t\t\t'image/ktx2': 'ktx2',\n\t\t\t\t'image/vnd-ms.dds': 'dds'\n\t\t};\n\t\tconst getGammaTextures = (gltf)=>{\n\t\t\t\tconst set = new Set();\n\t\t\t\tif (gltf.hasOwnProperty('materials')) {\n\t\t\t\t\t\tgltf.materials.forEach((gltfMaterial)=>{\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('pbrMetallicRoughness')) {\n\t\t\t\t\t\t\t\t\t\tconst pbrData = gltfMaterial.pbrMetallicRoughness;\n\t\t\t\t\t\t\t\t\t\tif (pbrData.hasOwnProperty('baseColorTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[pbrData.baseColorTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('emissiveTexture')) {\n\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[gltfMaterial.emissiveTexture.index];\n\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (gltfMaterial.hasOwnProperty('extensions')) {\n\t\t\t\t\t\t\t\t\t\tconst sheen = gltfMaterial.extensions.KHR_materials_sheen;\n\t\t\t\t\t\t\t\t\t\tif (sheen) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (sheen.hasOwnProperty('sheenColorTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[sheen.sheenColorTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst specularGlossiness = gltfMaterial.extensions.KHR_materials_pbrSpecularGlossiness;\n\t\t\t\t\t\t\t\t\t\tif (specularGlossiness) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (specularGlossiness.hasOwnProperty('specularGlossinessTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[specularGlossiness.specularGlossinessTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst specular = gltfMaterial.extensions.KHR_materials_specular;\n\t\t\t\t\t\t\t\t\t\tif (specular) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (specular.hasOwnProperty('specularColorTexture')) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst gltfTexture = gltf.textures[specular.specularColorTexture.index];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tset.add(getTextureSource(gltfTexture));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn set;\n\t\t};\n\t\tconst loadTexture = (gltfImage, url, bufferView, mimeType, options, srgb)=>{\n\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\tconst continuation = (bufferViewData)=>{\n\t\t\t\t\t\t\t\tconst name = `${gltfImage.name || 'gltf-texture'}-${gltfTextureUniqueId++}`;\n\t\t\t\t\t\t\t\tconst file = {\n\t\t\t\t\t\t\t\t\t\turl: url || name\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (bufferViewData) {\n\t\t\t\t\t\t\t\t\t\tfile.contents = bufferViewData.slice(0).buffer;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mimeType) {\n\t\t\t\t\t\t\t\t\t\tconst extension = mimeTypeFileExtensions[mimeType];\n\t\t\t\t\t\t\t\t\t\tif (extension) {\n\t\t\t\t\t\t\t\t\t\t\t\tfile.filename = `${file.url}.${extension}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst data = {\n\t\t\t\t\t\t\t\t\t\tsrgb\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst asset = new Asset(name, 'texture', file, data, options);\n\t\t\t\t\t\t\t\tasset.on('load', (asset)=>resolve(asset));\n\t\t\t\t\t\t\t\tasset.on('error', (err)=>reject(err));\n\t\t\t\t\t\t\t\tregistry.add(asset);\n\t\t\t\t\t\t\t\tregistry.load(asset);\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (bufferView) {\n\t\t\t\t\t\t\t\tbufferView.then((bufferViewData)=>continuation(bufferViewData));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcontinuation(null);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t};\n\t\tconst gammaTextures = getGammaTextures(gltf);\n\t\treturn gltf.images.map((gltfImage, i)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfImage);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfImage, (err, textureAsset)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(textureAsset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((textureAsset)=>{\n\t\t\t\t\t\tconst srgb = gammaTextures.has(i);\n\t\t\t\t\t\tif (textureAsset) {\n\t\t\t\t\t\t\t\treturn textureAsset;\n\t\t\t\t\t\t} else if (gltfImage.hasOwnProperty('uri')) {\n\t\t\t\t\t\t\t\tif (isDataURI(gltfImage.uri)) {\n\t\t\t\t\t\t\t\t\t\treturn loadTexture(gltfImage, gltfImage.uri, null, getDataURIMimeType(gltfImage.uri), null, srgb);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn loadTexture(gltfImage, ABSOLUTE_URL.test(gltfImage.uri) ? gltfImage.uri : path.join(urlBase, gltfImage.uri), null, null, {\n\t\t\t\t\t\t\t\t\t\tcrossOrigin: 'anonymous'\n\t\t\t\t\t\t\t\t}, srgb);\n\t\t\t\t\t\t} else if (gltfImage.hasOwnProperty('bufferView') && gltfImage.hasOwnProperty('mimeType')) {\n\t\t\t\t\t\t\t\treturn loadTexture(gltfImage, null, bufferViews[gltfImage.bufferView], gltfImage.mimeType, null, srgb);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.reject(new Error(`Invalid image found in gltf (neither uri or bufferView found). index=${i}`));\n\t\t\t\t});\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((textureAsset)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltfImage, textureAsset);\n\t\t\t\t\t\t\t\treturn textureAsset;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t});\n};\nconst createTextures = (gltf, images, options)=>{\n\t\tif (!gltf?.images?.length || !gltf?.textures?.length) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.texture?.preprocess;\n\t\tconst processAsync = options?.texture?.processAsync;\n\t\tconst postprocess = options?.texture?.postprocess;\n\t\tconst seenImages = new Set();\n\t\treturn gltf.textures.map((gltfTexture)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfTexture);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfTexture, gltf.images, (err, gltfImageIndex)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(gltfImageIndex);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((gltfImageIndex)=>{\n\t\t\t\t\t\tgltfImageIndex = gltfImageIndex ?? getTextureSource(gltfTexture);\n\t\t\t\t\t\tconst cloneAsset = seenImages.has(gltfImageIndex);\n\t\t\t\t\t\tseenImages.add(gltfImageIndex);\n\t\t\t\t\t\treturn images[gltfImageIndex].then((imageAsset)=>{\n\t\t\t\t\t\t\t\tconst asset = cloneAsset ? cloneTextureAsset(imageAsset) : imageAsset;\n\t\t\t\t\t\t\t\tapplySampler(asset.resource, (gltf.samplers ?? [])[gltfTexture.sampler]);\n\t\t\t\t\t\t\t\treturn asset;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((textureAsset)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltfTexture, textureAsset);\n\t\t\t\t\t\t\t\treturn textureAsset;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t});\n};\nconst loadBuffers = (gltf, binaryChunk, urlBase, options)=>{\n\t\tif (!gltf.buffers || gltf.buffers.length === 0) {\n\t\t\t\treturn [];\n\t\t}\n\t\tconst preprocess = options?.buffer?.preprocess;\n\t\tconst processAsync = options?.buffer?.processAsync;\n\t\tconst postprocess = options?.buffer?.postprocess;\n\t\treturn gltf.buffers.map((gltfBuffer, i)=>{\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfBuffer);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfBuffer, (err, arrayBuffer)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(arrayBuffer);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((arrayBuffer)=>{\n\t\t\t\t\t\tif (arrayBuffer) {\n\t\t\t\t\t\t\t\treturn arrayBuffer;\n\t\t\t\t\t\t} else if (gltfBuffer.hasOwnProperty('uri')) {\n\t\t\t\t\t\t\t\tif (isDataURI(gltfBuffer.uri)) {\n\t\t\t\t\t\t\t\t\t\tconst byteString = atob(gltfBuffer.uri.split(',')[1]);\n\t\t\t\t\t\t\t\t\t\tconst binaryArray = new Uint8Array(byteString.length);\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < byteString.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tbinaryArray[j] = byteString.charCodeAt(j);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn binaryArray;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\t\t\thttp.get(ABSOLUTE_URL.test(gltfBuffer.uri) ? gltfBuffer.uri : path.join(urlBase, gltfBuffer.uri), {\n\t\t\t\t\t\t\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\t\t\t\t\t\t\tresponseType: 'arraybuffer',\n\t\t\t\t\t\t\t\t\t\t\t\tretry: false\n\t\t\t\t\t\t\t\t\t\t}, (err, result)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tresolve(new Uint8Array(result));\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn binaryChunk;\n\t\t\t\t});\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((buffer)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltf.buffers[i], buffer);\n\t\t\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn promise;\n\t\t});\n};\nconst parseGltf = (gltfChunk, callback)=>{\n\t\tconst decodeBinaryUtf8 = (array)=>{\n\t\t\t\tif (typeof TextDecoder !== 'undefined') {\n\t\t\t\t\t\treturn new TextDecoder().decode(array);\n\t\t\t\t}\n\t\t\t\tlet str = '';\n\t\t\t\tfor(let i = 0; i < array.length; i++){\n\t\t\t\t\t\tstr += String.fromCharCode(array[i]);\n\t\t\t\t}\n\t\t\t\treturn decodeURIComponent(escape(str));\n\t\t};\n\t\tconst gltf = JSON.parse(decodeBinaryUtf8(gltfChunk));\n\t\tif (gltf.asset && gltf.asset.version && parseFloat(gltf.asset.version) < 2) {\n\t\t\t\tcallback(`Invalid gltf version. Expected version 2.0 or above but found version '${gltf.asset.version}'.`);\n\t\t\t\treturn;\n\t\t}\n\t\tcallback(null, gltf);\n};\nconst parseGlb = (glbData, callback)=>{\n\t\tconst data = glbData instanceof ArrayBuffer ? new DataView(glbData) : new DataView(glbData.buffer, glbData.byteOffset, glbData.byteLength);\n\t\tconst magic = data.getUint32(0, true);\n\t\tconst version = data.getUint32(4, true);\n\t\tconst length = data.getUint32(8, true);\n\t\tif (magic !== 0x46546C67) {\n\t\t\t\tcallback(`Invalid magic number found in glb header. Expected 0x46546C67, found 0x${magic.toString(16)}`);\n\t\t\t\treturn;\n\t\t}\n\t\tif (version !== 2) {\n\t\t\t\tcallback(`Invalid version number found in glb header. Expected 2, found ${version}`);\n\t\t\t\treturn;\n\t\t}\n\t\tif (length <= 0 || length > data.byteLength) {\n\t\t\t\tcallback(`Invalid length found in glb header. Found ${length}`);\n\t\t\t\treturn;\n\t\t}\n\t\tconst chunks = [];\n\t\tlet offset = 12;\n\t\twhile(offset < length){\n\t\t\t\tconst chunkLength = data.getUint32(offset, true);\n\t\t\t\tif (offset + chunkLength + 8 > data.byteLength) {\n\t\t\t\t\t\tcallback(`Invalid chunk length found in glb. Found ${chunkLength}`);\n\t\t\t\t}\n\t\t\t\tconst chunkType = data.getUint32(offset + 4, true);\n\t\t\t\tconst chunkData = new Uint8Array(data.buffer, data.byteOffset + offset + 8, chunkLength);\n\t\t\t\tchunks.push({\n\t\t\t\t\t\tlength: chunkLength,\n\t\t\t\t\t\ttype: chunkType,\n\t\t\t\t\t\tdata: chunkData\n\t\t\t\t});\n\t\t\t\toffset += chunkLength + 8;\n\t\t}\n\t\tif (chunks.length !== 1 && chunks.length !== 2) {\n\t\t\t\tcallback('Invalid number of chunks found in glb file.');\n\t\t\t\treturn;\n\t\t}\n\t\tif (chunks[0].type !== 0x4E4F534A) {\n\t\t\t\tcallback(`Invalid chunk type found in glb file. Expected 0x4E4F534A, found 0x${chunks[0].type.toString(16)}`);\n\t\t\t\treturn;\n\t\t}\n\t\tif (chunks.length > 1 && chunks[1].type !== 0x004E4942) {\n\t\t\t\tcallback(`Invalid chunk type found in glb file. Expected 0x004E4942, found 0x${chunks[1].type.toString(16)}`);\n\t\t\t\treturn;\n\t\t}\n\t\tcallback(null, {\n\t\t\t\tgltfChunk: chunks[0].data,\n\t\t\t\tbinaryChunk: chunks.length === 2 ? chunks[1].data : null\n\t\t});\n};\nconst parseChunk = (filename, data, callback)=>{\n\t\tconst hasGlbHeader = ()=>{\n\t\t\t\tconst u8 = new Uint8Array(data);\n\t\t\t\treturn u8[0] === 103 && u8[1] === 108 && u8[2] === 84 && u8[3] === 70;\n\t\t};\n\t\tif (filename && filename.toLowerCase().endsWith('.glb') || hasGlbHeader()) {\n\t\t\t\tparseGlb(data, callback);\n\t\t} else {\n\t\t\t\tcallback(null, {\n\t\t\t\t\t\tgltfChunk: data,\n\t\t\t\t\t\tbinaryChunk: null\n\t\t\t\t});\n\t\t}\n};\nconst createBufferViews = (gltf, buffers, options)=>{\n\t\tconst result = [];\n\t\tconst preprocess = options?.bufferView?.preprocess;\n\t\tconst processAsync = options?.bufferView?.processAsync;\n\t\tconst postprocess = options?.bufferView?.postprocess;\n\t\tif (!gltf.bufferViews?.length) {\n\t\t\t\treturn result;\n\t\t}\n\t\tfor(let i = 0; i < gltf.bufferViews.length; ++i){\n\t\t\t\tconst gltfBufferView = gltf.bufferViews[i];\n\t\t\t\tif (preprocess) {\n\t\t\t\t\t\tpreprocess(gltfBufferView);\n\t\t\t\t}\n\t\t\t\tlet promise;\n\t\t\t\tif (processAsync) {\n\t\t\t\t\t\tpromise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\tprocessAsync(gltfBufferView, buffers, (err, result)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\treject(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tpromise = new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tresolve(null);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tpromise = promise.then((buffer)=>{\n\t\t\t\t\t\tif (buffer) {\n\t\t\t\t\t\t\t\treturn buffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn buffers[gltfBufferView.buffer].then((buffer)=>{\n\t\t\t\t\t\t\t\treturn new Uint8Array(buffer.buffer, buffer.byteOffset + (gltfBufferView.byteOffset || 0), gltfBufferView.byteLength);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (gltfBufferView.hasOwnProperty('byteStride')) {\n\t\t\t\t\t\tpromise = promise.then((typedArray)=>{\n\t\t\t\t\t\t\t\ttypedArray.byteStride = gltfBufferView.byteStride;\n\t\t\t\t\t\t\t\treturn typedArray;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (postprocess) {\n\t\t\t\t\t\tpromise = promise.then((typedArray)=>{\n\t\t\t\t\t\t\t\tpostprocess(gltfBufferView, typedArray);\n\t\t\t\t\t\t\t\treturn typedArray;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tresult.push(promise);\n\t\t}\n\t\treturn result;\n};\nclass GlbParser {\n\t\tstatic parse(filename, urlBase, data, device, registry, options, callback) {\n\t\t\t\tparseChunk(filename, data, (err, chunks)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tparseGltf(chunks.gltfChunk, (err, gltf)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst buffers = loadBuffers(gltf, chunks.binaryChunk, urlBase, options);\n\t\t\t\t\t\t\t\tconst bufferViews = createBufferViews(gltf, buffers, options);\n\t\t\t\t\t\t\t\tconst images = createImages(gltf, bufferViews, urlBase, registry, options);\n\t\t\t\t\t\t\t\tconst textures = createTextures(gltf, images, options);\n\t\t\t\t\t\t\t\tcreateResources(device, gltf, bufferViews, textures, options).then((result)=>callback(null, result)).catch((err)=>callback(err));\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t}\n\t\tstatic createDefaultMaterial() {\n\t\t\t\treturn createMaterial({\n\t\t\t\t\t\tname: 'defaultGlbMaterial'\n\t\t\t\t}, []);\n\t\t}\n}\n\nclass AnimationHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'animation');\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.assets = app.assets;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:') || url.load.startsWith('data:')) {\n\t\t\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error loading animation resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\t\t\t\t\t\tGlbParser.parse('filename.glb', '', response, this.device, this.assets, asset?.options ?? {}, (err, parseResult)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst animations = parseResult.animations;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (asset?.data?.events) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < animations.length; i++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tanimations[i].events = new AnimEvents(Object.values(asset.data.events));\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tparseResult.destroy();\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, animations);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(null, this[`_parseAnimationV${response.animation.version}`](response));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n\t\t_parseAnimationV3(data) {\n\t\t\t\tconst animData = data.animation;\n\t\t\t\tconst anim = new Animation();\n\t\t\t\tanim.name = animData.name;\n\t\t\t\tanim.duration = animData.duration;\n\t\t\t\tfor(let i = 0; i < animData.nodes.length; i++){\n\t\t\t\t\t\tconst node = new AnimationNode();\n\t\t\t\t\t\tconst n = animData.nodes[i];\n\t\t\t\t\t\tnode._name = n.name;\n\t\t\t\t\t\tfor(let j = 0; j < n.keys.length; j++){\n\t\t\t\t\t\t\t\tconst k = n.keys[j];\n\t\t\t\t\t\t\t\tconst t = k.time;\n\t\t\t\t\t\t\t\tconst p = k.pos;\n\t\t\t\t\t\t\t\tconst r = k.rot;\n\t\t\t\t\t\t\t\tconst s = k.scale;\n\t\t\t\t\t\t\t\tconst pos = new Vec3(p[0], p[1], p[2]);\n\t\t\t\t\t\t\t\tconst rot = new Quat().setFromEulerAngles(r[0], r[1], r[2]);\n\t\t\t\t\t\t\t\tconst scl = new Vec3(s[0], s[1], s[2]);\n\t\t\t\t\t\t\t\tconst key = new AnimationKey(t, pos, rot, scl);\n\t\t\t\t\t\t\t\tnode._keys.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanim.addNode(node);\n\t\t\t\t}\n\t\t\t\treturn anim;\n\t\t}\n\t\t_parseAnimationV4(data) {\n\t\t\t\tconst animData = data.animation;\n\t\t\t\tconst anim = new Animation();\n\t\t\t\tanim.name = animData.name;\n\t\t\t\tanim.duration = animData.duration;\n\t\t\t\tfor(let i = 0; i < animData.nodes.length; i++){\n\t\t\t\t\t\tconst node = new AnimationNode();\n\t\t\t\t\t\tconst n = animData.nodes[i];\n\t\t\t\t\t\tnode._name = n.name;\n\t\t\t\t\t\tconst defPos = n.defaults.p;\n\t\t\t\t\t\tconst defRot = n.defaults.r;\n\t\t\t\t\t\tconst defScl = n.defaults.s;\n\t\t\t\t\t\tfor(let j = 0; j < n.keys.length; j++){\n\t\t\t\t\t\t\t\tconst k = n.keys[j];\n\t\t\t\t\t\t\t\tconst t = k.t;\n\t\t\t\t\t\t\t\tconst p = defPos ? defPos : k.p;\n\t\t\t\t\t\t\t\tconst r = defRot ? defRot : k.r;\n\t\t\t\t\t\t\t\tconst s = defScl ? defScl : k.s;\n\t\t\t\t\t\t\t\tconst pos = new Vec3(p[0], p[1], p[2]);\n\t\t\t\t\t\t\t\tconst rot = new Quat().setFromEulerAngles(r[0], r[1], r[2]);\n\t\t\t\t\t\t\t\tconst scl = new Vec3(s[0], s[1], s[2]);\n\t\t\t\t\t\t\t\tconst key = new AnimationKey(t, pos, rot, scl);\n\t\t\t\t\t\t\t\tnode._keys.push(key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tanim.addNode(node);\n\t\t\t\t}\n\t\t\t\treturn anim;\n\t\t}\n}\n\nclass AnimClipHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'animclip');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:')) {\n\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error loading animation clip resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tconst name = data.name;\n\t\t\t\tconst duration = data.duration;\n\t\t\t\tconst inputs = data.inputs.map((input)=>{\n\t\t\t\t\t\treturn new AnimData(1, input);\n\t\t\t\t});\n\t\t\t\tconst outputs = data.outputs.map((output)=>{\n\t\t\t\t\t\treturn new AnimData(output.components, output.data);\n\t\t\t\t});\n\t\t\t\tconst curves = data.curves.map((curve)=>{\n\t\t\t\t\t\treturn new AnimCurve([\n\t\t\t\t\t\t\t\tcurve.path\n\t\t\t\t\t\t], curve.inputIndex, curve.outputIndex, curve.interpolation);\n\t\t\t\t});\n\t\t\t\treturn new AnimTrack(name, duration, inputs, outputs, curves);\n\t\t}\n}\n\nclass AnimStateGraphHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'animstategraph');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:')) {\n\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error loading animation state graph resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn new AnimStateGraph(data);\n\t\t}\n}\n\nconst ie = function() {\n\t\tif (typeof window === 'undefined') {\n\t\t\t\treturn false;\n\t\t}\n\t\tconst ua = window.navigator.userAgent;\n\t\tconst msie = ua.indexOf('MSIE ');\n\t\tif (msie > 0) {\n\t\t\t\treturn parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);\n\t\t}\n\t\tconst trident = ua.indexOf('Trident/');\n\t\tif (trident > 0) {\n\t\t\t\tconst rv = ua.indexOf('rv:');\n\t\t\t\treturn parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);\n\t\t}\n\t\treturn false;\n}();\nconst supportedExtensions = [\n\t\t'.ogg',\n\t\t'.mp3',\n\t\t'.wav',\n\t\t'.mp4a',\n\t\t'.m4a',\n\t\t'.mp4',\n\t\t'.aac',\n\t\t'.opus'\n];\nclass AudioHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'audio');\n\t\t\t\tthis.manager = app.soundManager;\n\t\t}\n\t\t_isSupported(url) {\n\t\t\t\tconst ext = path.getExtension(url);\n\t\t\t\treturn supportedExtensions.indexOf(ext) > -1;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst success = function(resource) {\n\t\t\t\t\t\tcallback(null, new Sound(resource));\n\t\t\t\t};\n\t\t\t\tconst error = function(err) {\n\t\t\t\t\t\tlet msg = `Error loading audio url: ${url.original}`;\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tmsg += `: ${err.message || err}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconsole.warn(msg);\n\t\t\t\t\t\tcallback(msg);\n\t\t\t\t};\n\t\t\t\tif (this._createSound) {\n\t\t\t\t\t\tif (!this._isSupported(url.original)) {\n\t\t\t\t\t\t\t\terror(`Audio format for ${url.original} not supported`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._createSound(url.load, success, error);\n\t\t\t\t} else {\n\t\t\t\t\t\terror(null);\n\t\t\t\t}\n\t\t}\n\t\t_createSound(url, success, error) {\n\t\t\t\tif (hasAudioContext()) {\n\t\t\t\t\t\tconst manager = this.manager;\n\t\t\t\t\t\tif (!manager.context) {\n\t\t\t\t\t\t\t\terror('Audio manager has no audio context');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (url.startsWith('blob:') || url.startsWith('data:')) {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thttp.get(url, options, (err, response)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\terror(err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tmanager.context.decodeAudioData(response, success, error);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tlet audio = null;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\taudio = new Audio();\n\t\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\t\t\terror('No support for Audio element');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (ie) {\n\t\t\t\t\t\t\t\tdocument.body.appendChild(audio);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst onReady = function() {\n\t\t\t\t\t\t\t\taudio.removeEventListener('canplaythrough', onReady);\n\t\t\t\t\t\t\t\tif (ie) {\n\t\t\t\t\t\t\t\t\t\tdocument.body.removeChild(audio);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tsuccess(audio);\n\t\t\t\t\t\t};\n\t\t\t\t\t\taudio.onerror = function() {\n\t\t\t\t\t\t\t\taudio.onerror = null;\n\t\t\t\t\t\t\t\tif (ie) {\n\t\t\t\t\t\t\t\t\t\tdocument.body.removeChild(audio);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\terror();\n\t\t\t\t\t\t};\n\t\t\t\t\t\taudio.addEventListener('canplaythrough', onReady);\n\t\t\t\t\t\taudio.src = url;\n\t\t\t\t}\n\t\t}\n}\n\nclass BinaryHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'binary');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tresponseType: Http.ResponseType.ARRAY_BUFFER,\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading binary resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\treturn data.buffer;\n\t\t}\n}\n\nclass GlbContainerResource {\n\t\tconstructor(data, asset, assets, defaultMaterial){\n\t\t\t\tconst createAsset = function(type, resource, index) {\n\t\t\t\t\t\tconst subAsset = GlbContainerResource.createAsset(asset.name, type, resource, index);\n\t\t\t\t\t\tassets.add(subAsset);\n\t\t\t\t\t\treturn subAsset;\n\t\t\t\t};\n\t\t\t\tconst renders = [];\n\t\t\t\tfor(let i = 0; i < data.renders.length; ++i){\n\t\t\t\t\t\trenders.push(createAsset('render', data.renders[i], i));\n\t\t\t\t}\n\t\t\t\tconst materials = [];\n\t\t\t\tfor(let i = 0; i < data.materials.length; ++i){\n\t\t\t\t\t\tmaterials.push(createAsset('material', data.materials[i], i));\n\t\t\t\t}\n\t\t\t\tconst animations = [];\n\t\t\t\tfor(let i = 0; i < data.animations.length; ++i){\n\t\t\t\t\t\tanimations.push(createAsset('animation', data.animations[i], i));\n\t\t\t\t}\n\t\t\t\tthis.data = data;\n\t\t\t\tthis._model = null;\n\t\t\t\tthis._assetName = asset.name;\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis._defaultMaterial = defaultMaterial;\n\t\t\t\tthis.renders = renders;\n\t\t\t\tthis.materials = materials;\n\t\t\t\tthis.textures = data.textures;\n\t\t\t\tthis.animations = animations;\n\t\t}\n\t\tget model() {\n\t\t\t\tif (!this._model) {\n\t\t\t\t\t\tconst model = GlbContainerResource.createModel(this.data, this._defaultMaterial);\n\t\t\t\t\t\tconst modelAsset = GlbContainerResource.createAsset(this._assetName, 'model', model, 0);\n\t\t\t\t\t\tthis._assets.add(modelAsset);\n\t\t\t\t\t\tthis._model = modelAsset;\n\t\t\t\t}\n\t\t\t\treturn this._model;\n\t\t}\n\t\tstatic createAsset(assetName, type, resource, index) {\n\t\t\t\tconst subAsset = new Asset(`${assetName}/${type}/${index}`, type, {\n\t\t\t\t\t\turl: ''\n\t\t\t\t});\n\t\t\t\tsubAsset.resource = resource;\n\t\t\t\tsubAsset.loaded = true;\n\t\t\t\treturn subAsset;\n\t\t}\n\t\tinstantiateModelEntity(options) {\n\t\t\t\tconst entity = new Entity(undefined, this._assets._loader._app);\n\t\t\t\tentity.addComponent('model', Object.assign({\n\t\t\t\t\t\ttype: 'asset',\n\t\t\t\t\t\tasset: this.model\n\t\t\t\t}, options));\n\t\t\t\treturn entity;\n\t\t}\n\t\tinstantiateRenderEntity(options) {\n\t\t\t\tconst defaultMaterial = this._defaultMaterial;\n\t\t\t\tconst skinnedMeshInstances = [];\n\t\t\t\tconst createMeshInstance = function(root, entity, mesh, materials, meshDefaultMaterials, skins, gltfNode, nodeInstancingMap) {\n\t\t\t\t\t\tconst materialIndex = meshDefaultMaterials[mesh.id];\n\t\t\t\t\t\tconst material = materialIndex === undefined ? defaultMaterial : materials[materialIndex];\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material);\n\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\tmeshInstance.morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gltfNode.hasOwnProperty('skin')) {\n\t\t\t\t\t\t\t\tskinnedMeshInstances.push({\n\t\t\t\t\t\t\t\t\t\tmeshInstance: meshInstance,\n\t\t\t\t\t\t\t\t\t\trootBone: root,\n\t\t\t\t\t\t\t\t\t\tentity: entity\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst instData = nodeInstancingMap.get(gltfNode);\n\t\t\t\t\t\tif (instData) {\n\t\t\t\t\t\t\t\tconst matrices = instData.matrices;\n\t\t\t\t\t\t\t\tconst vbFormat = VertexFormat.getDefaultInstancingFormat(mesh.device);\n\t\t\t\t\t\t\t\tconst vb = new VertexBuffer(mesh.device, vbFormat, matrices.length / 16, {\n\t\t\t\t\t\t\t\t\t\tdata: matrices\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tmeshInstance.setInstancing(vb);\n\t\t\t\t\t\t\t\tmeshInstance.instancingData._destroyVertexBuffer = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn meshInstance;\n\t\t\t\t};\n\t\t\t\tconst cloneHierarchy = (root, node, glb)=>{\n\t\t\t\t\t\tconst entity = new Entity(undefined, this._assets._loader._app);\n\t\t\t\t\t\tnode._cloneInternal(entity);\n\t\t\t\t\t\tif (!root) root = entity;\n\t\t\t\t\t\tlet attachedMi = null;\n\t\t\t\t\t\tlet renderAsset = null;\n\t\t\t\t\t\tfor(let i = 0; i < glb.nodes.length; i++){\n\t\t\t\t\t\t\t\tconst glbNode = glb.nodes[i];\n\t\t\t\t\t\t\t\tif (glbNode === node) {\n\t\t\t\t\t\t\t\t\t\tconst gltfNode = glb.gltf.nodes[i];\n\t\t\t\t\t\t\t\t\t\tif (gltfNode.hasOwnProperty('mesh')) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst meshGroup = glb.renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\t\t\t\t\t\t\trenderAsset = this.renders[gltfNode.mesh];\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let mi = 0; mi < meshGroup.length; mi++){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst mesh = meshGroup[mi];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst cloneMi = createMeshInstance(root, entity, mesh, glb.materials, glb.meshDefaultMaterials, glb.skins, gltfNode, glb.nodeInstancingMap);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (!attachedMi) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tattachedMi = [];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tattachedMi.push(cloneMi);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (glb.lights) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst lightEntity = glb.lights.get(gltfNode);\n\t\t\t\t\t\t\t\t\t\t\t\tif (lightEntity) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tentity.addChild(lightEntity.clone());\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (glb.cameras) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst cameraEntity = glb.cameras.get(gltfNode);\n\t\t\t\t\t\t\t\t\t\t\t\tif (cameraEntity) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcameraEntity.camera.system.cloneComponent(cameraEntity, entity);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (attachedMi) {\n\t\t\t\t\t\t\t\tentity.addComponent('render', Object.assign({\n\t\t\t\t\t\t\t\t\t\ttype: 'asset',\n\t\t\t\t\t\t\t\t\t\tmeshInstances: attachedMi\n\t\t\t\t\t\t\t\t}, options));\n\t\t\t\t\t\t\t\tentity.render.assignAsset(renderAsset);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst children = node.children;\n\t\t\t\t\t\tfor(let i = 0; i < children.length; i++){\n\t\t\t\t\t\t\t\tconst childClone = cloneHierarchy(root, children[i], glb);\n\t\t\t\t\t\t\t\tentity.addChild(childClone);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn entity;\n\t\t\t\t};\n\t\t\t\tconst sceneClones = [];\n\t\t\t\tfor (const scene of this.data.scenes){\n\t\t\t\t\t\tsceneClones.push(cloneHierarchy(null, scene, this.data));\n\t\t\t\t}\n\t\t\t\tskinnedMeshInstances.forEach((data)=>{\n\t\t\t\t\t\tdata.meshInstance.skinInstance = SkinInstanceCache.createCachedSkinInstance(data.meshInstance.mesh.skin, data.rootBone, data.entity);\n\t\t\t\t\t\tdata.meshInstance.node.render.rootBone = data.rootBone;\n\t\t\t\t});\n\t\t\t\treturn GlbContainerResource.createSceneHierarchy(sceneClones, Entity);\n\t\t}\n\t\tgetMaterialVariants() {\n\t\t\t\treturn this.data.variants ? Object.keys(this.data.variants) : [];\n\t\t}\n\t\tapplyMaterialVariant(entity, name) {\n\t\t\t\tconst variant = name ? this.data.variants[name] : null;\n\t\t\t\tif (variant === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst renders = entity.findComponents('render');\n\t\t\t\tfor(let i = 0; i < renders.length; i++){\n\t\t\t\t\t\tconst renderComponent = renders[i];\n\t\t\t\t\t\tthis._applyMaterialVariant(variant, renderComponent.meshInstances);\n\t\t\t\t}\n\t\t}\n\t\tapplyMaterialVariantInstances(instances, name) {\n\t\t\t\tconst variant = name ? this.data.variants[name] : null;\n\t\t\t\tif (variant === undefined) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._applyMaterialVariant(variant, instances);\n\t\t}\n\t\t_applyMaterialVariant(variant, instances) {\n\t\t\t\tinstances.forEach((instance)=>{\n\t\t\t\t\t\tif (variant === null) {\n\t\t\t\t\t\t\t\tinstance.material = this._defaultMaterial;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst meshVariants = this.data.meshVariants[instance.mesh.id];\n\t\t\t\t\t\t\t\tif (meshVariants) {\n\t\t\t\t\t\t\t\t\t\tinstance.material = this.data.materials[meshVariants[variant]];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tstatic createSceneHierarchy(sceneNodes, nodeType) {\n\t\t\t\tlet root = null;\n\t\t\t\tif (sceneNodes.length === 1) {\n\t\t\t\t\t\troot = sceneNodes[0];\n\t\t\t\t} else {\n\t\t\t\t\t\troot = new nodeType('SceneGroup');\n\t\t\t\t\t\tfor (const scene of sceneNodes){\n\t\t\t\t\t\t\t\troot.addChild(scene);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn root;\n\t\t}\n\t\tstatic createModel(glb, defaultMaterial) {\n\t\t\t\tconst createMeshInstance = function(model, mesh, skins, skinInstances, materials, node, gltfNode) {\n\t\t\t\t\t\tconst materialIndex = glb.meshDefaultMaterials[mesh.id];\n\t\t\t\t\t\tconst material = materialIndex === undefined ? defaultMaterial : materials[materialIndex];\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, material, node);\n\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\tconst morphInstance = new MorphInstance(mesh.morph);\n\t\t\t\t\t\t\t\tmeshInstance.morphInstance = morphInstance;\n\t\t\t\t\t\t\t\tmodel.morphInstances.push(morphInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gltfNode.hasOwnProperty('skin')) {\n\t\t\t\t\t\t\t\tconst skinIndex = gltfNode.skin;\n\t\t\t\t\t\t\t\tconst skin = skins[skinIndex];\n\t\t\t\t\t\t\t\tmesh.skin = skin;\n\t\t\t\t\t\t\t\tconst skinInstance = skinInstances[skinIndex];\n\t\t\t\t\t\t\t\tmeshInstance.skinInstance = skinInstance;\n\t\t\t\t\t\t\t\tmodel.skinInstances.push(skinInstance);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmodel.meshInstances.push(meshInstance);\n\t\t\t\t};\n\t\t\t\tconst model = new Model();\n\t\t\t\tconst skinInstances = [];\n\t\t\t\tfor (const skin of glb.skins){\n\t\t\t\t\t\tconst skinInstance = new SkinInstance(skin);\n\t\t\t\t\t\tskinInstance.bones = skin.bones;\n\t\t\t\t\t\tskinInstances.push(skinInstance);\n\t\t\t\t}\n\t\t\t\tmodel.graph = GlbContainerResource.createSceneHierarchy(glb.scenes, GraphNode);\n\t\t\t\tfor(let i = 0; i < glb.nodes.length; i++){\n\t\t\t\t\t\tconst node = glb.nodes[i];\n\t\t\t\t\t\tif (node.root === model.graph) {\n\t\t\t\t\t\t\t\tconst gltfNode = glb.gltf.nodes[i];\n\t\t\t\t\t\t\t\tif (gltfNode.hasOwnProperty('mesh')) {\n\t\t\t\t\t\t\t\t\t\tconst meshGroup = glb.renders[gltfNode.mesh].meshes;\n\t\t\t\t\t\t\t\t\t\tfor(let mi = 0; mi < meshGroup.length; mi++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst mesh = meshGroup[mi];\n\t\t\t\t\t\t\t\t\t\t\t\tif (mesh) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcreateMeshInstance(model, mesh, glb.skins, skinInstances, glb.materials, node, gltfNode);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn model;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tconst registry = this._assets;\n\t\t\t\tconst destroyAsset = function(asset) {\n\t\t\t\t\t\tregistry.remove(asset);\n\t\t\t\t\t\tasset.unload();\n\t\t\t\t};\n\t\t\t\tconst destroyAssets = function(assets) {\n\t\t\t\t\t\tassets.forEach((asset)=>{\n\t\t\t\t\t\t\t\tdestroyAsset(asset);\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (this.animations) {\n\t\t\t\t\t\tdestroyAssets(this.animations);\n\t\t\t\t\t\tthis.animations = null;\n\t\t\t\t}\n\t\t\t\tif (this.textures) {\n\t\t\t\t\t\tdestroyAssets(this.textures);\n\t\t\t\t\t\tthis.textures = null;\n\t\t\t\t}\n\t\t\t\tif (this.materials) {\n\t\t\t\t\t\tdestroyAssets(this.materials);\n\t\t\t\t\t\tthis.materials = null;\n\t\t\t\t}\n\t\t\t\tif (this.renders) {\n\t\t\t\t\t\tdestroyAssets(this.renders);\n\t\t\t\t\t\tthis.renders = null;\n\t\t\t\t}\n\t\t\t\tif (this._model) {\n\t\t\t\t\t\tdestroyAsset(this._model);\n\t\t\t\t\t\tthis._model = null;\n\t\t\t\t}\n\t\t\t\tthis.data = null;\n\t\t\t\tthis.assets = null;\n\t\t}\n}\n\nclass GlbContainerParser {\n\t\tconstructor(device, assets, maxRetries){\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis._defaultMaterial = GlbParser.createDefaultMaterial();\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tGlbParser.parse(this._getUrlWithoutParams(url.original), path.extractPath(url.load), result, this._device, asset.registry, asset.options, (err, result)=>{\n\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, new GlbContainerResource(result, asset, this._assets, this._defaultMaterial));\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {}\n}\n\nclass ContainerResource {\n\t\tinstantiateModelEntity(options) {\n\t\t\t\treturn null;\n\t\t}\n\t\tinstantiateRenderEntity(options) {\n\t\t\t\treturn null;\n\t\t}\n\t\tgetMaterialVariants() {\n\t\t\t\treturn null;\n\t\t}\n\t\tapplyMaterialVariant(entity, name) {}\n\t\tapplyMaterialVariantInstances(instances, name) {}\n}\nclass ContainerHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'container');\n\t\t\t\tthis.glbContainerParser = new GlbContainerParser(app.graphicsDevice, app.assets, 0);\n\t\t\t\tthis.parsers = {};\n\t\t}\n\t\tset maxRetries(value) {\n\t\t\t\tthis.glbContainerParser.maxRetries = value;\n\t\t\t\tfor(const parser in this.parsers){\n\t\t\t\t\t\tif (this.parsers.hasOwnProperty(parser)) {\n\t\t\t\t\t\t\t\tthis.parsers[parser].maxRetries = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget maxRetries() {\n\t\t\t\treturn this.glbContainerParser.maxRetries;\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\t_getParser(url) {\n\t\t\t\tconst ext = url ? path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace('.', '') : null;\n\t\t\t\treturn this.parsers[ext] || this.glbContainerParser;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._getParser(url.original).load(url, callback, asset);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn this._getParser(url).open(url, data, asset);\n\t\t}\n}\n\nclass CssHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'css'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading css resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nclass CubemapHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'cubemap');\n\t\t\t\tthis._device = app.graphicsDevice;\n\t\t\t\tthis._registry = app.assets;\n\t\t\t\tthis._loader = app.loader;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tthis.loadAssets(asset, callback);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn asset ? asset.resource : null;\n\t\t}\n\t\tpatch(asset, registry) {\n\t\t\t\tthis.loadAssets(asset, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tregistry.fire('error', asset);\n\t\t\t\t\t\t\t\tregistry.fire(`error:${asset.id}`, err, asset);\n\t\t\t\t\t\t\t\tasset.fire('error', asset);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tgetAssetIds(cubemapAsset) {\n\t\t\t\tconst result = [];\n\t\t\t\tresult[0] = cubemapAsset.file;\n\t\t\t\tif ((cubemapAsset.loadFaces || !cubemapAsset.file) && cubemapAsset.data && cubemapAsset.data.textures) {\n\t\t\t\t\t\tfor(let i = 0; i < 6; ++i){\n\t\t\t\t\t\t\t\tresult[i + 1] = cubemapAsset.data.textures[i];\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresult[1] = result[2] = result[3] = result[4] = result[5] = result[6] = null;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tcompareAssetIds(assetIdA, assetIdB) {\n\t\t\t\tif (assetIdA && assetIdB) {\n\t\t\t\t\t\tif (parseInt(assetIdA, 10) === assetIdA || typeof assetIdA === 'string') {\n\t\t\t\t\t\t\t\treturn assetIdA === assetIdB;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn assetIdA.url === assetIdB.url;\n\t\t\t\t}\n\t\t\t\treturn assetIdA !== null === (assetIdB !== null);\n\t\t}\n\t\tupdate(cubemapAsset, assetIds, assets) {\n\t\t\t\tconst assetData = cubemapAsset.data || {};\n\t\t\t\tconst oldAssets = cubemapAsset._handlerState.assets;\n\t\t\t\tconst oldResources = cubemapAsset._resources;\n\t\t\t\tlet tex, mip, i;\n\t\t\t\tconst resources = [\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t\t\tconst getType = function() {\n\t\t\t\t\t\tif (assetData.hasOwnProperty('type')) {\n\t\t\t\t\t\t\t\treturn assetData.type;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('rgbm')) {\n\t\t\t\t\t\t\t\treturn assetData.rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn null;\n\t\t\t\t};\n\t\t\t\tif (!cubemapAsset.loaded || assets[0] !== oldAssets[0]) {\n\t\t\t\t\t\tif (assets[0]) {\n\t\t\t\t\t\t\t\ttex = assets[0].resource;\n\t\t\t\t\t\t\t\tif (tex.cubemap) {\n\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < 6; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tresources[i + 1] = new Texture(this._device, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tname: `${cubemapAsset.name}_prelitCubemap${tex.width >> i}`,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttype: getType() || tex.type,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\twidth: tex.width >> i,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\theight: tex.height >> i,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tformat: tex.format,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttex._levels[i]\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmipmaps: i === 0\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tresources[1] = tex;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresources[1] = oldResources[1] || null;\n\t\t\t\t\t\tresources[2] = oldResources[2] || null;\n\t\t\t\t\t\tresources[3] = oldResources[3] || null;\n\t\t\t\t\t\tresources[4] = oldResources[4] || null;\n\t\t\t\t\t\tresources[5] = oldResources[5] || null;\n\t\t\t\t\t\tresources[6] = oldResources[6] || null;\n\t\t\t\t}\n\t\t\t\tconst faceAssets = assets.slice(1);\n\t\t\t\tif (!cubemapAsset.loaded || !this.cmpArrays(faceAssets, oldAssets.slice(1))) {\n\t\t\t\t\t\tif (faceAssets.indexOf(null) === -1) {\n\t\t\t\t\t\t\t\tconst faceTextures = faceAssets.map((asset)=>{\n\t\t\t\t\t\t\t\t\t\treturn asset.resource;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst faceLevels = [];\n\t\t\t\t\t\t\t\tfor(mip = 0; mip < faceTextures[0]._levels.length; ++mip){\n\t\t\t\t\t\t\t\t\t\tfaceLevels.push(faceTextures.map((faceTexture)=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn faceTexture._levels[mip];\n\t\t\t\t\t\t\t\t\t\t}));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst format = faceTextures[0].format;\n\t\t\t\t\t\t\t\tconst faces = new Texture(this._device, {\n\t\t\t\t\t\t\t\t\t\tname: `${cubemapAsset.name}_faces`,\n\t\t\t\t\t\t\t\t\t\tcubemap: true,\n\t\t\t\t\t\t\t\t\t\ttype: getType() || faceTextures[0].type,\n\t\t\t\t\t\t\t\t\t\twidth: faceTextures[0].width,\n\t\t\t\t\t\t\t\t\t\theight: faceTextures[0].height,\n\t\t\t\t\t\t\t\t\t\tformat: format === PIXELFORMAT_RGB8 ? PIXELFORMAT_RGBA8 : format,\n\t\t\t\t\t\t\t\t\t\tmipmaps: assetData.mipmaps ?? true,\n\t\t\t\t\t\t\t\t\t\tlevels: faceLevels,\n\t\t\t\t\t\t\t\t\t\tminFilter: assetData.hasOwnProperty('minFilter') ? assetData.minFilter : faceTextures[0].minFilter,\n\t\t\t\t\t\t\t\t\t\tmagFilter: assetData.hasOwnProperty('magFilter') ? assetData.magFilter : faceTextures[0].magFilter,\n\t\t\t\t\t\t\t\t\t\tanisotropy: assetData.hasOwnProperty('anisotropy') ? assetData.anisotropy : 1,\n\t\t\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tresources[0] = faces;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tresources[0] = oldResources[0] || null;\n\t\t\t\t}\n\t\t\t\tif (!this.cmpArrays(resources, oldResources)) {\n\t\t\t\t\t\tcubemapAsset.resources = resources;\n\t\t\t\t\t\tcubemapAsset._handlerState.assetIds = assetIds;\n\t\t\t\t\t\tcubemapAsset._handlerState.assets = assets;\n\t\t\t\t\t\tfor(i = 0; i < oldResources.length; ++i){\n\t\t\t\t\t\t\t\tif (oldResources[i] !== null && resources.indexOf(oldResources[i]) === -1) {\n\t\t\t\t\t\t\t\t\t\toldResources[i].destroy();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(i = 0; i < oldAssets.length; ++i){\n\t\t\t\t\t\tif (oldAssets[i] !== null && assets.indexOf(oldAssets[i]) === -1) {\n\t\t\t\t\t\t\t\toldAssets[i].unload();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcmpArrays(arr1, arr2) {\n\t\t\t\tif (arr1.length !== arr2.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < arr1.length; ++i){\n\t\t\t\t\t\tif (arr1[i] !== arr2[i]) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t}\n\t\tresolveId(value) {\n\t\t\t\tconst valueInt = parseInt(value, 10);\n\t\t\t\treturn valueInt === value || valueInt.toString() === value ? valueInt : value;\n\t\t}\n\t\tloadAssets(cubemapAsset, callback) {\n\t\t\t\tif (!cubemapAsset.hasOwnProperty('_handlerState')) {\n\t\t\t\t\t\tcubemapAsset._handlerState = {\n\t\t\t\t\t\t\t\tassetIds: [\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tassets: [\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tconst assetIds = self.getAssetIds(cubemapAsset);\n\t\t\t\tconst assets = [\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\tnull\n\t\t\t\t];\n\t\t\t\tconst loadedAssetIds = cubemapAsset._handlerState.assetIds;\n\t\t\t\tconst loadedAssets = cubemapAsset._handlerState.assets;\n\t\t\t\tconst registry = self._registry;\n\t\t\t\tlet awaiting = 7;\n\t\t\t\tconst onLoad = function(index, asset) {\n\t\t\t\t\t\tassets[index] = asset;\n\t\t\t\t\t\tawaiting--;\n\t\t\t\t\t\tif (awaiting === 0) {\n\t\t\t\t\t\t\t\tself.update(cubemapAsset, assetIds, assets);\n\t\t\t\t\t\t\t\tcallback(null, cubemapAsset.resources);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst onError = function(index, err, asset) {\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t};\n\t\t\t\tconst processTexAsset = function(index, texAsset) {\n\t\t\t\t\t\tif (texAsset.loaded) {\n\t\t\t\t\t\t\t\tonLoad(index, texAsset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tregistry.once(`load:${texAsset.id}`, onLoad.bind(self, index));\n\t\t\t\t\t\t\t\tregistry.once(`error:${texAsset.id}`, onError.bind(self, index));\n\t\t\t\t\t\t\t\tif (!texAsset.loading) {\n\t\t\t\t\t\t\t\t\t\tregistry.load(texAsset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tlet texAsset;\n\t\t\t\tfor(let i = 0; i < 7; ++i){\n\t\t\t\t\t\tconst assetId = this.resolveId(assetIds[i]);\n\t\t\t\t\t\tif (!assetId) {\n\t\t\t\t\t\t\t\tonLoad(i, null);\n\t\t\t\t\t\t} else if (self.compareAssetIds(assetId, loadedAssetIds[i])) {\n\t\t\t\t\t\t\t\tprocessTexAsset(i, loadedAssets[i]);\n\t\t\t\t\t\t} else if (parseInt(assetId, 10) === assetId) {\n\t\t\t\t\t\t\t\ttexAsset = registry.get(assetId);\n\t\t\t\t\t\t\t\tif (texAsset) {\n\t\t\t\t\t\t\t\t\t\tprocessTexAsset(i, texAsset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsetTimeout(((index, assetId_)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tconst texAsset = registry.get(assetId_);\n\t\t\t\t\t\t\t\t\t\t\t\tif (texAsset) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tprocessTexAsset(index, texAsset);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tonError(index, `failed to find dependent cubemap asset=${assetId_}`);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}).bind(null, i, assetId));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst file = typeof assetId === 'string' ? {\n\t\t\t\t\t\t\t\t\t\turl: assetId,\n\t\t\t\t\t\t\t\t\t\tfilename: assetId\n\t\t\t\t\t\t\t\t} : assetId;\n\t\t\t\t\t\t\t\tconst data = file.url.search('.dds') === -1 ? {\n\t\t\t\t\t\t\t\t\t\ttype: 'rgbp',\n\t\t\t\t\t\t\t\t\t\taddressu: 'clamp',\n\t\t\t\t\t\t\t\t\t\taddressv: 'clamp',\n\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t} : null;\n\t\t\t\t\t\t\t\ttexAsset = new Asset(`${cubemapAsset.name}_part_${i}`, 'texture', file, data);\n\t\t\t\t\t\t\t\tregistry.add(texAsset);\n\t\t\t\t\t\t\t\tprocessTexAsset(i, texAsset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass FolderHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'folder');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tcallback(null, null);\n\t\t}\n}\n\nclass Font {\n\t\tconstructor(textures, data){\n\t\t\t\tthis.type = data ? data.type || FONT_MSDF : FONT_MSDF;\n\t\t\t\tthis.em = 1;\n\t\t\t\tthis.textures = textures;\n\t\t\t\tthis.intensity = 0.0;\n\t\t\t\tthis._data = null;\n\t\t\t\tthis.data = data;\n\t\t}\n\t\tset data(value) {\n\t\t\t\tthis._data = value;\n\t\t\t\tif (!value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._data.intensity !== undefined) {\n\t\t\t\t\t\tthis.intensity = this._data.intensity;\n\t\t\t\t}\n\t\t\t\tif (!this._data.info) {\n\t\t\t\t\t\tthis._data.info = {};\n\t\t\t\t}\n\t\t\t\tif (!this._data.version || this._data.version < 2) {\n\t\t\t\t\t\tthis._data.info.maps = [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: this._data.info.width,\n\t\t\t\t\t\t\t\t\t\theight: this._data.info.height\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t\t\tif (this._data.chars) {\n\t\t\t\t\t\t\t\tfor(const key in this._data.chars){\n\t\t\t\t\t\t\t\t\t\tthis._data.chars[key].map = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n}\n\nfunction upgradeDataSchema(data) {\n\t\tif (data.version < 3) {\n\t\t\t\tif (data.version < 2) {\n\t\t\t\t\t\tdata.info.maps = data.info.maps || [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: data.info.width,\n\t\t\t\t\t\t\t\t\t\theight: data.info.height\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tdata.chars = Object.keys(data.chars || {}).reduce((newChars, key)=>{\n\t\t\t\t\t\tconst existing = data.chars[key];\n\t\t\t\t\t\tconst newKey = existing.letter !== undefined ? existing.letter : string.fromCodePoint(key);\n\t\t\t\t\t\tif (data.version < 2) {\n\t\t\t\t\t\t\t\texisting.map = existing.map || 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewChars[newKey] = existing;\n\t\t\t\t\t\treturn newChars;\n\t\t\t\t}, {});\n\t\t\t\tdata.version = 3;\n\t\t}\n\t\treturn data;\n}\nclass FontHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'font');\n\t\t\t\tthis._loader = app.loader;\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tif (path.getExtension(url.original) === '.json') {\n\t\t\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tconst data = upgradeDataSchema(response);\n\t\t\t\t\t\t\t\t\t\tself._loadTextures(url.load.replace('.json', '.png'), data, (err, textures)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextures: textures\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(`Error loading font resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tif (asset && asset.data) {\n\t\t\t\t\t\t\t\tasset.data = upgradeDataSchema(asset.data);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._loadTextures(url.load, asset && asset.data, callback);\n\t\t\t\t}\n\t\t}\n\t\t_loadTextures(url, data, callback) {\n\t\t\t\tconst numTextures = data.info.maps.length;\n\t\t\t\tlet numLoaded = 0;\n\t\t\t\tlet error = null;\n\t\t\t\tconst textures = new Array(numTextures);\n\t\t\t\tconst loader = this._loader;\n\t\t\t\tconst loadTexture = function(index) {\n\t\t\t\t\t\tconst onLoaded = function(err, texture) {\n\t\t\t\t\t\t\t\tif (error) return;\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\terror = err;\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttexture.upload();\n\t\t\t\t\t\t\t\ttextures[index] = texture;\n\t\t\t\t\t\t\t\tnumLoaded++;\n\t\t\t\t\t\t\t\tif (numLoaded === numTextures) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, textures);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (index === 0) {\n\t\t\t\t\t\t\t\tloader.load(url, 'texture', onLoaded);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tloader.load(url.replace('.png', `${index}.png`), 'texture', onLoaded);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < numTextures; i++){\n\t\t\t\t\t\tloadTexture(i);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\tlet font;\n\t\t\t\tif (data.textures) {\n\t\t\t\t\t\tfont = new Font(data.textures, data.data);\n\t\t\t\t} else {\n\t\t\t\t\t\tfont = new Font(data, null);\n\t\t\t\t}\n\t\t\t\treturn font;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst font = asset.resource;\n\t\t\t\tif (!font.data && asset.data) {\n\t\t\t\t\t\tfont.data = asset.data;\n\t\t\t\t} else if (!asset.data && font.data) {\n\t\t\t\t\t\tasset.data = font.data;\n\t\t\t\t}\n\t\t\t\tif (asset.data) {\n\t\t\t\t\t\tasset.data = upgradeDataSchema(asset.data);\n\t\t\t\t}\n\t\t}\n}\n\nconst SH_C0 = 0.28209479177387814;\nclass SplatCompressedIterator {\n\t\tconstructor(gsplatData, p, r, s, c, sh){\n\t\t\t\tconst unpackUnorm = (value, bits)=>{\n\t\t\t\t\t\tconst t = (1 << bits) - 1;\n\t\t\t\t\t\treturn (value & t) / t;\n\t\t\t\t};\n\t\t\t\tconst unpack111011 = (result, value)=>{\n\t\t\t\t\t\tresult.x = unpackUnorm(value >>> 21, 11);\n\t\t\t\t\t\tresult.y = unpackUnorm(value >>> 11, 10);\n\t\t\t\t\t\tresult.z = unpackUnorm(value, 11);\n\t\t\t\t};\n\t\t\t\tconst unpack8888 = (result, value)=>{\n\t\t\t\t\t\tresult.x = unpackUnorm(value >>> 24, 8);\n\t\t\t\t\t\tresult.y = unpackUnorm(value >>> 16, 8);\n\t\t\t\t\t\tresult.z = unpackUnorm(value >>> 8, 8);\n\t\t\t\t\t\tresult.w = unpackUnorm(value, 8);\n\t\t\t\t};\n\t\t\t\tconst unpackRot = (result, value)=>{\n\t\t\t\t\t\tconst norm = 1.0 / (Math.sqrt(2) * 0.5);\n\t\t\t\t\t\tconst a = (unpackUnorm(value >>> 20, 10) - 0.5) * norm;\n\t\t\t\t\t\tconst b = (unpackUnorm(value >>> 10, 10) - 0.5) * norm;\n\t\t\t\t\t\tconst c = (unpackUnorm(value, 10) - 0.5) * norm;\n\t\t\t\t\t\tconst m = Math.sqrt(1.0 - (a * a + b * b + c * c));\n\t\t\t\t\t\tswitch(value >>> 30){\n\t\t\t\t\t\t\t\tcase 0:\n\t\t\t\t\t\t\t\t\t\tresult.set(a, b, c, m);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\tresult.set(m, b, c, a);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\tresult.set(b, m, c, a);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\tresult.set(b, c, m, a);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tconst lerp = (a, b, t)=>a * (1 - t) + b * t;\n\t\t\t\tconst { chunkData, chunkSize, vertexData, shData0, shData1, shData2, shBands } = gsplatData;\n\t\t\t\tconst shCoeffs = [\n\t\t\t\t\t\t3,\n\t\t\t\t\t\t8,\n\t\t\t\t\t\t15\n\t\t\t\t][shBands - 1];\n\t\t\t\tthis.read = (i)=>{\n\t\t\t\t\t\tconst ci = Math.floor(i / 256) * chunkSize;\n\t\t\t\t\t\tif (p) {\n\t\t\t\t\t\t\t\tunpack111011(p, vertexData[i * 4 + 0]);\n\t\t\t\t\t\t\t\tp.x = lerp(chunkData[ci + 0], chunkData[ci + 3], p.x);\n\t\t\t\t\t\t\t\tp.y = lerp(chunkData[ci + 1], chunkData[ci + 4], p.y);\n\t\t\t\t\t\t\t\tp.z = lerp(chunkData[ci + 2], chunkData[ci + 5], p.z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (r) {\n\t\t\t\t\t\t\t\tunpackRot(r, vertexData[i * 4 + 1]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (s) {\n\t\t\t\t\t\t\t\tunpack111011(s, vertexData[i * 4 + 2]);\n\t\t\t\t\t\t\t\ts.x = lerp(chunkData[ci + 6], chunkData[ci + 9], s.x);\n\t\t\t\t\t\t\t\ts.y = lerp(chunkData[ci + 7], chunkData[ci + 10], s.y);\n\t\t\t\t\t\t\t\ts.z = lerp(chunkData[ci + 8], chunkData[ci + 11], s.z);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (c) {\n\t\t\t\t\t\t\t\tunpack8888(c, vertexData[i * 4 + 3]);\n\t\t\t\t\t\t\t\tif (chunkSize > 12) {\n\t\t\t\t\t\t\t\t\t\tc.x = lerp(chunkData[ci + 12], chunkData[ci + 15], c.x);\n\t\t\t\t\t\t\t\t\t\tc.y = lerp(chunkData[ci + 13], chunkData[ci + 16], c.y);\n\t\t\t\t\t\t\t\t\t\tc.z = lerp(chunkData[ci + 14], chunkData[ci + 17], c.z);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (sh && shBands > 0) {\n\t\t\t\t\t\t\t\tconst shData = [\n\t\t\t\t\t\t\t\t\t\tshData0,\n\t\t\t\t\t\t\t\t\t\tshData1,\n\t\t\t\t\t\t\t\t\t\tshData2\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\tfor(let j = 0; j < 3; ++j){\n\t\t\t\t\t\t\t\t\t\tfor(let k = 0; k < 15; ++k){\n\t\t\t\t\t\t\t\t\t\t\t\tsh[j * 15 + k] = k < shCoeffs ? shData[j][i * 16 + k] * (8 / 255) - 4 : 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t}\n}\nclass GSplatCompressedData {\n\t\tcreateIter(p, r, s, c, sh) {\n\t\t\t\treturn new SplatCompressedIterator(this, p, r, s, c, sh);\n\t\t}\n\t\tcalcAabb(result) {\n\t\t\t\tconst { chunkData, numChunks, chunkSize } = this;\n\t\t\t\tlet s = Math.exp(Math.max(chunkData[9], chunkData[10], chunkData[11]));\n\t\t\t\tlet mx = chunkData[0] - s;\n\t\t\t\tlet my = chunkData[1] - s;\n\t\t\t\tlet mz = chunkData[2] - s;\n\t\t\t\tlet Mx = chunkData[3] + s;\n\t\t\t\tlet My = chunkData[4] + s;\n\t\t\t\tlet Mz = chunkData[5] + s;\n\t\t\t\tfor(let i = 1; i < numChunks; ++i){\n\t\t\t\t\t\tconst off = i * chunkSize;\n\t\t\t\t\t\ts = Math.exp(Math.max(chunkData[off + 9], chunkData[off + 10], chunkData[off + 11]));\n\t\t\t\t\t\tmx = Math.min(mx, chunkData[off + 0] - s);\n\t\t\t\t\t\tmy = Math.min(my, chunkData[off + 1] - s);\n\t\t\t\t\t\tmz = Math.min(mz, chunkData[off + 2] - s);\n\t\t\t\t\t\tMx = Math.max(Mx, chunkData[off + 3] + s);\n\t\t\t\t\t\tMy = Math.max(My, chunkData[off + 4] + s);\n\t\t\t\t\t\tMz = Math.max(Mz, chunkData[off + 5] + s);\n\t\t\t\t}\n\t\t\t\tresult.center.set((mx + Mx) * 0.5, (my + My) * 0.5, (mz + Mz) * 0.5);\n\t\t\t\tresult.halfExtents.set((Mx - mx) * 0.5, (My - my) * 0.5, (Mz - mz) * 0.5);\n\t\t\t\treturn true;\n\t\t}\n\t\tgetCenters() {\n\t\t\t\tconst { vertexData, chunkData, numChunks, chunkSize } = this;\n\t\t\t\tconst result = new Float32Array(this.numSplats * 3);\n\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\tfor(let c = 0; c < numChunks; ++c){\n\t\t\t\t\t\tconst off = c * chunkSize;\n\t\t\t\t\t\tmx = chunkData[off + 0];\n\t\t\t\t\t\tmy = chunkData[off + 1];\n\t\t\t\t\t\tmz = chunkData[off + 2];\n\t\t\t\t\t\tMx = chunkData[off + 3];\n\t\t\t\t\t\tMy = chunkData[off + 4];\n\t\t\t\t\t\tMz = chunkData[off + 5];\n\t\t\t\t\t\tconst end = Math.min(this.numSplats, (c + 1) * 256);\n\t\t\t\t\t\tfor(let i = c * 256; i < end; ++i){\n\t\t\t\t\t\t\t\tconst p = vertexData[i * 4];\n\t\t\t\t\t\t\t\tconst px = (p >>> 21) / 2047;\n\t\t\t\t\t\t\t\tconst py = (p >>> 11 & 0x3ff) / 1023;\n\t\t\t\t\t\t\t\tconst pz = (p & 0x7ff) / 2047;\n\t\t\t\t\t\t\t\tresult[i * 3 + 0] = (1 - px) * mx + px * Mx;\n\t\t\t\t\t\t\t\tresult[i * 3 + 1] = (1 - py) * my + py * My;\n\t\t\t\t\t\t\t\tresult[i * 3 + 2] = (1 - pz) * mz + pz * Mz;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\tgetChunks(result) {\n\t\t\t\tconst { chunkData, numChunks, chunkSize } = this;\n\t\t\t\tlet mx, my, mz, Mx, My, Mz;\n\t\t\t\tfor(let c = 0; c < numChunks; ++c){\n\t\t\t\t\t\tconst off = c * chunkSize;\n\t\t\t\t\t\tmx = chunkData[off + 0];\n\t\t\t\t\t\tmy = chunkData[off + 1];\n\t\t\t\t\t\tmz = chunkData[off + 2];\n\t\t\t\t\t\tMx = chunkData[off + 3];\n\t\t\t\t\t\tMy = chunkData[off + 4];\n\t\t\t\t\t\tMz = chunkData[off + 5];\n\t\t\t\t\t\tresult[c * 6 + 0] = mx;\n\t\t\t\t\t\tresult[c * 6 + 1] = my;\n\t\t\t\t\t\tresult[c * 6 + 2] = mz;\n\t\t\t\t\t\tresult[c * 6 + 3] = Mx;\n\t\t\t\t\t\tresult[c * 6 + 4] = My;\n\t\t\t\t\t\tresult[c * 6 + 5] = Mz;\n\t\t\t\t}\n\t\t}\n\t\tcalcFocalPoint(result) {\n\t\t\t\tconst { chunkData, numChunks, chunkSize } = this;\n\t\t\t\tresult.x = 0;\n\t\t\t\tresult.y = 0;\n\t\t\t\tresult.z = 0;\n\t\t\t\tfor(let i = 0; i < numChunks; ++i){\n\t\t\t\t\t\tconst off = i * chunkSize;\n\t\t\t\t\t\tresult.x += chunkData[off + 0] + chunkData[off + 3];\n\t\t\t\t\t\tresult.y += chunkData[off + 1] + chunkData[off + 4];\n\t\t\t\t\t\tresult.z += chunkData[off + 2] + chunkData[off + 5];\n\t\t\t\t}\n\t\t\t\tresult.mulScalar(0.5 / numChunks);\n\t\t}\n\t\tget isCompressed() {\n\t\t\t\treturn true;\n\t\t}\n\t\tget numChunks() {\n\t\t\t\treturn Math.ceil(this.numSplats / 256);\n\t\t}\n\t\tget chunkSize() {\n\t\t\t\treturn this.chunkData.length / this.numChunks;\n\t\t}\n\t\tdecompress() {\n\t\t\t\tconst members = [\n\t\t\t\t\t\t'x',\n\t\t\t\t\t\t'y',\n\t\t\t\t\t\t'z',\n\t\t\t\t\t\t'f_dc_0',\n\t\t\t\t\t\t'f_dc_1',\n\t\t\t\t\t\t'f_dc_2',\n\t\t\t\t\t\t'opacity',\n\t\t\t\t\t\t'scale_0',\n\t\t\t\t\t\t'scale_1',\n\t\t\t\t\t\t'scale_2',\n\t\t\t\t\t\t'rot_0',\n\t\t\t\t\t\t'rot_1',\n\t\t\t\t\t\t'rot_2',\n\t\t\t\t\t\t'rot_3'\n\t\t\t\t];\n\t\t\t\tconst { shBands } = this;\n\t\t\t\tif (shBands > 0) {\n\t\t\t\t\t\tconst shMembers = [];\n\t\t\t\t\t\tfor(let i = 0; i < 45; ++i){\n\t\t\t\t\t\t\t\tshMembers.push(`f_rest_${i}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst location = Math.max(...[\n\t\t\t\t\t\t\t\t'f_dc_0',\n\t\t\t\t\t\t\t\t'f_dc_1',\n\t\t\t\t\t\t\t\t'f_dc_2'\n\t\t\t\t\t\t].map((name)=>members.indexOf(name)));\n\t\t\t\t\t\tmembers.splice(location + 1, 0, ...shMembers);\n\t\t\t\t}\n\t\t\t\tconst data = {};\n\t\t\t\tmembers.forEach((name)=>{\n\t\t\t\t\t\tdata[name] = new Float32Array(this.numSplats);\n\t\t\t\t});\n\t\t\t\tconst p = new Vec3();\n\t\t\t\tconst r = new Quat();\n\t\t\t\tconst s = new Vec3();\n\t\t\t\tconst c = new Vec4();\n\t\t\t\tconst sh = shBands > 0 ? new Float32Array(45) : null;\n\t\t\t\tconst iter = this.createIter(p, r, s, c, sh);\n\t\t\t\tfor(let i = 0; i < this.numSplats; ++i){\n\t\t\t\t\t\titer.read(i);\n\t\t\t\t\t\tdata.x[i] = p.x;\n\t\t\t\t\t\tdata.y[i] = p.y;\n\t\t\t\t\t\tdata.z[i] = p.z;\n\t\t\t\t\t\tdata.rot_1[i] = r.x;\n\t\t\t\t\t\tdata.rot_2[i] = r.y;\n\t\t\t\t\t\tdata.rot_3[i] = r.z;\n\t\t\t\t\t\tdata.rot_0[i] = r.w;\n\t\t\t\t\t\tdata.scale_0[i] = s.x;\n\t\t\t\t\t\tdata.scale_1[i] = s.y;\n\t\t\t\t\t\tdata.scale_2[i] = s.z;\n\t\t\t\t\t\tdata.f_dc_0[i] = (c.x - 0.5) / SH_C0;\n\t\t\t\t\t\tdata.f_dc_1[i] = (c.y - 0.5) / SH_C0;\n\t\t\t\t\t\tdata.f_dc_2[i] = (c.z - 0.5) / SH_C0;\n\t\t\t\t\t\tdata.opacity[i] = c.w <= 0 ? -40 : c.w >= 1 ? 40 : -Math.log(1 / c.w - 1);\n\t\t\t\t\t\tif (sh) {\n\t\t\t\t\t\t\t\tfor(let c = 0; c < 45; ++c){\n\t\t\t\t\t\t\t\t\t\tdata[`f_rest_${c}`][i] = sh[c];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn new GSplatData([\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: 'vertex',\n\t\t\t\t\t\t\t\tcount: this.numSplats,\n\t\t\t\t\t\t\t\tproperties: members.map((name)=>{\n\t\t\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\t\t\t\t\t\ttype: 'float',\n\t\t\t\t\t\t\t\t\t\t\t\tbyteSize: 4,\n\t\t\t\t\t\t\t\t\t\t\t\tstorage: data[name]\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t})\n\t\t\t\t\t\t}\n\t\t\t\t], this.comments);\n\t\t}\n}\n\nconst strideCopy = (target, targetStride, src, srcStride, numEntries)=>{\n\t\tfor(let i = 0; i < numEntries; ++i){\n\t\t\t\tfor(let j = 0; j < srcStride; ++j){\n\t\t\t\t\t\ttarget[i * targetStride + j] = src[i * srcStride + j];\n\t\t\t\t}\n\t\t}\n};\nclass GSplatCompressedResource extends GSplatResourceBase {\n\t\tconstructor(device, gsplatData){\n\t\t\t\tsuper(device, gsplatData);\n\t\t\t\tconst { chunkData, chunkSize, numChunks, numSplats, vertexData, shBands } = gsplatData;\n\t\t\t\tthis.chunks = new Float32Array(numChunks * 6);\n\t\t\t\tgsplatData.getChunks(this.chunks);\n\t\t\t\tthis.packedTexture = this.createTexture('packedData', PIXELFORMAT_RGBA32U, this.evalTextureSize(numSplats), vertexData);\n\t\t\t\tconst chunkTextureSize = this.evalTextureSize(numChunks);\n\t\t\t\tchunkTextureSize.x *= 5;\n\t\t\t\tthis.chunkTexture = this.createTexture('chunkData', PIXELFORMAT_RGBA32F, chunkTextureSize);\n\t\t\t\tconst chunkTextureData = this.chunkTexture.lock();\n\t\t\t\tstrideCopy(chunkTextureData, 20, chunkData, chunkSize, numChunks);\n\t\t\t\tif (chunkSize === 12) {\n\t\t\t\t\t\tfor(let i = 0; i < numChunks; ++i){\n\t\t\t\t\t\t\t\tchunkTextureData[i * 20 + 15] = 1;\n\t\t\t\t\t\t\t\tchunkTextureData[i * 20 + 16] = 1;\n\t\t\t\t\t\t\t\tchunkTextureData[i * 20 + 17] = 1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.chunkTexture.unlock();\n\t\t\t\tif (shBands > 0) {\n\t\t\t\t\t\tconst size = this.evalTextureSize(numSplats);\n\t\t\t\t\t\tthis.shTexture0 = this.createTexture('shTexture0', PIXELFORMAT_RGBA32U, size, new Uint32Array(gsplatData.shData0.buffer));\n\t\t\t\t\t\tthis.shTexture1 = this.createTexture('shTexture1', PIXELFORMAT_RGBA32U, size, new Uint32Array(gsplatData.shData1.buffer));\n\t\t\t\t\t\tthis.shTexture2 = this.createTexture('shTexture2', PIXELFORMAT_RGBA32U, size, new Uint32Array(gsplatData.shData2.buffer));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.shTexture0 = null;\n\t\t\t\t\t\tthis.shTexture1 = null;\n\t\t\t\t\t\tthis.shTexture2 = null;\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.packedTexture?.destroy();\n\t\t\t\tthis.chunkTexture?.destroy();\n\t\t\t\tthis.shTexture0?.destroy();\n\t\t\t\tthis.shTexture1?.destroy();\n\t\t\t\tthis.shTexture2?.destroy();\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tconfigureMaterialDefines(defines) {\n\t\t\t\tdefines.set('GSPLAT_COMPRESSED_DATA', true);\n\t\t\t\tdefines.set('SH_BANDS', this.shTexture0 ? 3 : 0);\n\t\t}\n\t\tconfigureMaterial(material) {\n\t\t\t\tthis.configureMaterialDefines(material.defines);\n\t\t\t\tmaterial.setParameter('packedTexture', this.packedTexture);\n\t\t\t\tmaterial.setParameter('chunkTexture', this.chunkTexture);\n\t\t\t\tif (this.shTexture0) {\n\t\t\t\t\t\tmaterial.setParameter('shTexture0', this.shTexture0);\n\t\t\t\t\t\tmaterial.setParameter('shTexture1', this.shTexture1);\n\t\t\t\t\t\tmaterial.setParameter('shTexture2', this.shTexture2);\n\t\t\t\t}\n\t\t}\n\t\tevalTextureSize(count) {\n\t\t\t\tconst width = Math.ceil(Math.sqrt(count));\n\t\t\t\tconst height = Math.ceil(count / width);\n\t\t\t\treturn new Vec2(width, height);\n\t\t}\n}\n\nconst magicBytes = new Uint8Array([\n\t\t112,\n\t\t108,\n\t\t121,\n\t\t10\n]);\nconst endHeaderBytes = new Uint8Array([\n\t\t10,\n\t\t101,\n\t\t110,\n\t\t100,\n\t\t95,\n\t\t104,\n\t\t101,\n\t\t97,\n\t\t100,\n\t\t101,\n\t\t114,\n\t\t10\n]);\nconst dataTypeMap = new Map([\n\t\t[\n\t\t\t\t'char',\n\t\t\t\tInt8Array\n\t\t],\n\t\t[\n\t\t\t\t'uchar',\n\t\t\t\tUint8Array\n\t\t],\n\t\t[\n\t\t\t\t'short',\n\t\t\t\tInt16Array\n\t\t],\n\t\t[\n\t\t\t\t'ushort',\n\t\t\t\tUint16Array\n\t\t],\n\t\t[\n\t\t\t\t'int',\n\t\t\t\tInt32Array\n\t\t],\n\t\t[\n\t\t\t\t'uint',\n\t\t\t\tUint32Array\n\t\t],\n\t\t[\n\t\t\t\t'float',\n\t\t\t\tFloat32Array\n\t\t],\n\t\t[\n\t\t\t\t'double',\n\t\t\t\tFloat64Array\n\t\t]\n]);\nclass StreamBuf {\n\t\tconstructor(reader, progressFunc){\n\t\t\t\tthis.head = 0;\n\t\t\t\tthis.tail = 0;\n\t\t\t\tthis.reader = reader;\n\t\t\t\tthis.progressFunc = progressFunc;\n\t\t}\n\t\tasync read() {\n\t\t\t\tconst { value, done } = await this.reader.read();\n\t\t\t\tif (done) {\n\t\t\t\t\t\tthrow new Error('Stream finished before end of header');\n\t\t\t\t}\n\t\t\t\tthis.push(value);\n\t\t\t\tthis.progressFunc?.(value.byteLength);\n\t\t}\n\t\tpush(data) {\n\t\t\t\tif (!this.data) {\n\t\t\t\t\t\tthis.data = data;\n\t\t\t\t\t\tthis.view = new DataView(this.data.buffer);\n\t\t\t\t\t\tthis.tail = data.length;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst remaining = this.tail - this.head;\n\t\t\t\t\t\tconst newSize = remaining + data.length;\n\t\t\t\t\t\tif (this.data.length >= newSize) {\n\t\t\t\t\t\t\t\tif (this.head > 0) {\n\t\t\t\t\t\t\t\t\t\tthis.data.copyWithin(0, this.head, this.tail);\n\t\t\t\t\t\t\t\t\t\tthis.data.set(data, remaining);\n\t\t\t\t\t\t\t\t\t\tthis.head = 0;\n\t\t\t\t\t\t\t\t\t\tthis.tail = newSize;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.data.set(data, this.tail);\n\t\t\t\t\t\t\t\t\t\tthis.tail += data.length;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst tmp = new Uint8Array(newSize);\n\t\t\t\t\t\t\t\tif (this.head > 0 || this.tail < this.data.length) {\n\t\t\t\t\t\t\t\t\t\ttmp.set(this.data.subarray(this.head, this.tail), 0);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\ttmp.set(this.data, 0);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\ttmp.set(data, remaining);\n\t\t\t\t\t\t\t\tthis.data = tmp;\n\t\t\t\t\t\t\t\tthis.view = new DataView(this.data.buffer);\n\t\t\t\t\t\t\t\tthis.head = 0;\n\t\t\t\t\t\t\t\tthis.tail = newSize;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tcompact() {\n\t\t\t\tif (this.head > 0) {\n\t\t\t\t\t\tthis.data.copyWithin(0, this.head, this.tail);\n\t\t\t\t\t\tthis.tail -= this.head;\n\t\t\t\t\t\tthis.head = 0;\n\t\t\t\t}\n\t\t}\n\t\tget remaining() {\n\t\t\t\treturn this.tail - this.head;\n\t\t}\n\t\tgetInt8() {\n\t\t\t\tconst result = this.view.getInt8(this.head);\n\t\t\t\tthis.head++;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetUint8() {\n\t\t\t\tconst result = this.view.getUint8(this.head);\n\t\t\t\tthis.head++;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetInt16() {\n\t\t\t\tconst result = this.view.getInt16(this.head, true);\n\t\t\t\tthis.head += 2;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetUint16() {\n\t\t\t\tconst result = this.view.getUint16(this.head, true);\n\t\t\t\tthis.head += 2;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetInt32() {\n\t\t\t\tconst result = this.view.getInt32(this.head, true);\n\t\t\t\tthis.head += 4;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetUint32() {\n\t\t\t\tconst result = this.view.getUint32(this.head, true);\n\t\t\t\tthis.head += 4;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetFloat32() {\n\t\t\t\tconst result = this.view.getFloat32(this.head, true);\n\t\t\t\tthis.head += 4;\n\t\t\t\treturn result;\n\t\t}\n\t\tgetFloat64() {\n\t\t\t\tconst result = this.view.getFloat64(this.head, true);\n\t\t\t\tthis.head += 8;\n\t\t\t\treturn result;\n\t\t}\n}\nconst parseHeader = (lines)=>{\n\t\tconst elements = [];\n\t\tconst comments = [];\n\t\tlet format;\n\t\tfor(let i = 1; i < lines.length; ++i){\n\t\t\t\tconst words = lines[i].split(' ');\n\t\t\t\tswitch(words[0]){\n\t\t\t\t\t\tcase 'comment':\n\t\t\t\t\t\t\t\tcomments.push(words.slice(1).join(' '));\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'format':\n\t\t\t\t\t\t\t\tformat = words[1];\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'element':\n\t\t\t\t\t\t\t\telements.push({\n\t\t\t\t\t\t\t\t\t\tname: words[1],\n\t\t\t\t\t\t\t\t\t\tcount: parseInt(words[2], 10),\n\t\t\t\t\t\t\t\t\t\tproperties: []\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'property':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tif (!dataTypeMap.has(words[1])) {\n\t\t\t\t\t\t\t\t\t\t\t\tthrow new Error(`Unrecognized property data type '${words[1]}' in ply header`);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst element = elements[elements.length - 1];\n\t\t\t\t\t\t\t\t\t\telement.properties.push({\n\t\t\t\t\t\t\t\t\t\t\t\ttype: words[1],\n\t\t\t\t\t\t\t\t\t\t\t\tname: words[2],\n\t\t\t\t\t\t\t\t\t\t\t\tstorage: null,\n\t\t\t\t\t\t\t\t\t\t\t\tbyteSize: dataTypeMap.get(words[1]).BYTES_PER_ELEMENT\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\tthrow new Error(`Unrecognized header value '${words[0]}' in ply header`);\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\telements,\n\t\t\t\tformat,\n\t\t\t\tcomments\n\t\t};\n};\nconst isCompressedPly = (elements)=>{\n\t\tconst chunkProperties = [\n\t\t\t\t'min_x',\n\t\t\t\t'min_y',\n\t\t\t\t'min_z',\n\t\t\t\t'max_x',\n\t\t\t\t'max_y',\n\t\t\t\t'max_z',\n\t\t\t\t'min_scale_x',\n\t\t\t\t'min_scale_y',\n\t\t\t\t'min_scale_z',\n\t\t\t\t'max_scale_x',\n\t\t\t\t'max_scale_y',\n\t\t\t\t'max_scale_z',\n\t\t\t\t'min_r',\n\t\t\t\t'min_g',\n\t\t\t\t'min_b',\n\t\t\t\t'max_r',\n\t\t\t\t'max_g',\n\t\t\t\t'max_b'\n\t\t];\n\t\tconst vertexProperties = [\n\t\t\t\t'packed_position',\n\t\t\t\t'packed_rotation',\n\t\t\t\t'packed_scale',\n\t\t\t\t'packed_color'\n\t\t];\n\t\tconst shProperties = new Array(45).fill('').map((_, i)=>`f_rest_${i}`);\n\t\tconst hasBaseElements = ()=>{\n\t\t\t\treturn elements[0].name === 'chunk' && elements[0].properties.every((p, i)=>p.name === chunkProperties[i] && p.type === 'float') && elements[1].name === 'vertex' && elements[1].properties.every((p, i)=>p.name === vertexProperties[i] && p.type === 'uint');\n\t\t};\n\t\tconst hasSHElements = ()=>{\n\t\t\t\treturn elements[2].name === 'sh' && [\n\t\t\t\t\t\t9,\n\t\t\t\t\t\t24,\n\t\t\t\t\t\t45\n\t\t\t\t].indexOf(elements[2].properties.length) !== -1 && elements[2].properties.every((p, i)=>p.name === shProperties[i] && p.type === 'uchar');\n\t\t};\n\t\treturn elements.length === 2 && hasBaseElements() || elements.length === 3 && hasBaseElements() && hasSHElements();\n};\nconst isFloatPly = (elements)=>{\n\t\treturn elements.length === 1 && elements[0].name === 'vertex' && elements[0].properties.every((p)=>p.type === 'float');\n};\nconst readCompressedPly = async (streamBuf, elements, comments)=>{\n\t\tconst result = new GSplatCompressedData();\n\t\tresult.comments = comments;\n\t\tconst numChunks = elements[0].count;\n\t\tconst numChunkProperties = elements[0].properties.length;\n\t\tconst numVertices = elements[1].count;\n\t\tconst evalStorageSize = (count)=>{\n\t\t\t\tconst width = Math.ceil(Math.sqrt(count));\n\t\t\t\tconst height = Math.ceil(count / width);\n\t\t\t\treturn width * height;\n\t\t};\n\t\tconst storageSize = evalStorageSize(numVertices);\n\t\tresult.numSplats = numVertices;\n\t\tresult.chunkData = new Float32Array(numChunks * numChunkProperties);\n\t\tresult.vertexData = new Uint32Array(storageSize * 4);\n\t\tconst read = async (buffer, length)=>{\n\t\t\t\tconst target = new Uint8Array(buffer);\n\t\t\t\tlet cursor = 0;\n\t\t\t\twhile(cursor < length){\n\t\t\t\t\t\twhile(streamBuf.remaining === 0){\n\t\t\t\t\t\t\t\tawait streamBuf.read();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst toCopy = Math.min(length - cursor, streamBuf.remaining);\n\t\t\t\t\t\tconst src = streamBuf.data;\n\t\t\t\t\t\tfor(let i = 0; i < toCopy; ++i){\n\t\t\t\t\t\t\t\ttarget[cursor++] = src[streamBuf.head++];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t};\n\t\tawait read(result.chunkData.buffer, numChunks * numChunkProperties * 4);\n\t\tawait read(result.vertexData.buffer, numVertices * 4 * 4);\n\t\tif (elements.length === 3) {\n\t\t\t\tconst texStorageSize = storageSize * 16;\n\t\t\t\tconst shData0 = new Uint8Array(texStorageSize);\n\t\t\t\tconst shData1 = new Uint8Array(texStorageSize);\n\t\t\t\tconst shData2 = new Uint8Array(texStorageSize);\n\t\t\t\tconst chunkSize = 1024;\n\t\t\t\tconst srcCoeffs = elements[2].properties.length / 3;\n\t\t\t\tconst tmpBuf = new Uint8Array(chunkSize * srcCoeffs * 3);\n\t\t\t\tfor(let i = 0; i < result.numSplats; i += chunkSize){\n\t\t\t\t\t\tconst toRead = Math.min(chunkSize, result.numSplats - i);\n\t\t\t\t\t\tawait read(tmpBuf.buffer, toRead * srcCoeffs * 3);\n\t\t\t\t\t\tfor(let j = 0; j < toRead; ++j){\n\t\t\t\t\t\t\t\tfor(let k = 0; k < 15; ++k){\n\t\t\t\t\t\t\t\t\t\tconst tidx = (i + j) * 16 + k;\n\t\t\t\t\t\t\t\t\t\tif (k < srcCoeffs) {\n\t\t\t\t\t\t\t\t\t\t\t\tshData0[tidx] = tmpBuf[(j * 3 + 0) * srcCoeffs + k];\n\t\t\t\t\t\t\t\t\t\t\t\tshData1[tidx] = tmpBuf[(j * 3 + 1) * srcCoeffs + k];\n\t\t\t\t\t\t\t\t\t\t\t\tshData2[tidx] = tmpBuf[(j * 3 + 2) * srcCoeffs + k];\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tshData0[tidx] = 127;\n\t\t\t\t\t\t\t\t\t\t\t\tshData1[tidx] = 127;\n\t\t\t\t\t\t\t\t\t\t\t\tshData2[tidx] = 127;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tresult.shData0 = shData0;\n\t\t\t\tresult.shData1 = shData1;\n\t\t\t\tresult.shData2 = shData2;\n\t\t\t\tresult.shBands = ({\n\t\t\t\t\t\t3: 1,\n\t\t\t\t\t\t8: 2,\n\t\t\t\t\t\t15: 3\n\t\t\t\t})[srcCoeffs];\n\t\t} else {\n\t\t\t\tresult.shBands = 0;\n\t\t}\n\t\treturn result;\n};\nconst readFloatPly = async (streamBuf, elements, comments)=>{\n\t\tconst element = elements[0];\n\t\tconst properties = element.properties;\n\t\tconst numProperties = properties.length;\n\t\tconst storage = properties.map((p)=>p.storage);\n\t\tconst inputSize = properties.reduce((a, p)=>a + p.byteSize, 0);\n\t\tlet vertexIdx = 0;\n\t\tlet floatData;\n\t\tconst checkFloatData = ()=>{\n\t\t\t\tconst buffer = streamBuf.data.buffer;\n\t\t\t\tif (floatData?.buffer !== buffer) {\n\t\t\t\t\t\tfloatData = new Float32Array(buffer, 0, buffer.byteLength / 4);\n\t\t\t\t}\n\t\t};\n\t\tcheckFloatData();\n\t\twhile(vertexIdx < element.count){\n\t\t\t\twhile(streamBuf.remaining < inputSize){\n\t\t\t\t\t\tawait streamBuf.read();\n\t\t\t\t\t\tcheckFloatData();\n\t\t\t\t}\n\t\t\t\tconst toRead = Math.min(element.count - vertexIdx, Math.floor(streamBuf.remaining / inputSize));\n\t\t\t\tfor(let j = 0; j < numProperties; ++j){\n\t\t\t\t\t\tconst s = storage[j];\n\t\t\t\t\t\tfor(let n = 0; n < toRead; ++n){\n\t\t\t\t\t\t\t\ts[n + vertexIdx] = floatData[n * numProperties + j];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tvertexIdx += toRead;\n\t\t\t\tstreamBuf.head += toRead * inputSize;\n\t\t}\n\t\treturn new GSplatData(elements, comments);\n};\nconst readGeneralPly = async (streamBuf, elements, comments)=>{\n\t\tfor(let i = 0; i < elements.length; ++i){\n\t\t\t\tconst element = elements[i];\n\t\t\t\tconst inputSize = element.properties.reduce((a, p)=>a + p.byteSize, 0);\n\t\t\t\tconst propertyParsingFunctions = element.properties.map((p)=>{\n\t\t\t\t\t\tif (p.storage) {\n\t\t\t\t\t\t\t\tswitch(p.type){\n\t\t\t\t\t\t\t\t\t\tcase 'char':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getInt8();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'uchar':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getUint8();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'short':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getInt16();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'ushort':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getUint16();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'int':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getInt32();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'uint':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getUint32();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'float':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getFloat32();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tcase 'double':\n\t\t\t\t\t\t\t\t\t\t\t\treturn (streamBuf, c)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tp.storage[c] = streamBuf.getFloat64();\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\t\t\tthrow new Error(`Unsupported property data type '${p.type}' in ply header`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (streamBuf)=>{\n\t\t\t\t\t\t\t\t\t\tstreamBuf.head += p.byteSize;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tlet c = 0;\n\t\t\t\twhile(c < element.count){\n\t\t\t\t\t\twhile(streamBuf.remaining < inputSize){\n\t\t\t\t\t\t\t\tawait streamBuf.read();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst toRead = Math.min(element.count - c, Math.floor(streamBuf.remaining / inputSize));\n\t\t\t\t\t\tfor(let n = 0; n < toRead; ++n){\n\t\t\t\t\t\t\t\tfor(let j = 0; j < element.properties.length; ++j){\n\t\t\t\t\t\t\t\t\t\tpropertyParsingFunctions[j](streamBuf, c);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tc++;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn new GSplatData(elements, comments);\n};\nconst readPly = async (reader, propertyFilter = null, progressFunc = null)=>{\n\t\tconst find = (buf, search)=>{\n\t\t\t\tconst endIndex = buf.length - search.length;\n\t\t\t\tlet i, j;\n\t\t\t\tfor(i = 0; i <= endIndex; ++i){\n\t\t\t\t\t\tfor(j = 0; j < search.length; ++j){\n\t\t\t\t\t\t\t\tif (buf[i + j] !== search[j]) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (j === search.length) {\n\t\t\t\t\t\t\t\treturn i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn -1;\n\t\t};\n\t\tconst startsWith = (a, b)=>{\n\t\t\t\tif (a.length < b.length) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < b.length; ++i){\n\t\t\t\t\t\tif (a[i] !== b[i]) {\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t};\n\t\tconst streamBuf = new StreamBuf(reader, progressFunc);\n\t\tlet headerLength;\n\t\twhile(true){\n\t\t\t\tawait streamBuf.read();\n\t\t\t\tif (streamBuf.tail >= magicBytes.length && !startsWith(streamBuf.data, magicBytes)) {\n\t\t\t\t\t\tthrow new Error('Invalid ply header');\n\t\t\t\t}\n\t\t\t\theaderLength = find(streamBuf.data, endHeaderBytes);\n\t\t\t\tif (headerLength !== -1) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t}\n\t\tconst lines = new TextDecoder('ascii').decode(streamBuf.data.subarray(0, headerLength)).split('\\n');\n\t\tconst { elements, format, comments } = parseHeader(lines);\n\t\tif (format !== 'binary_little_endian') {\n\t\t\t\tthrow new Error('Unsupported ply format');\n\t\t}\n\t\tstreamBuf.head = headerLength + endHeaderBytes.length;\n\t\tstreamBuf.compact();\n\t\tconst readData = async ()=>{\n\t\t\t\tif (isCompressedPly(elements)) {\n\t\t\t\t\t\treturn await readCompressedPly(streamBuf, elements, comments);\n\t\t\t\t}\n\t\t\t\telements.forEach((e)=>{\n\t\t\t\t\t\te.properties.forEach((p)=>{\n\t\t\t\t\t\t\t\tconst storageType = dataTypeMap.get(p.type);\n\t\t\t\t\t\t\t\tif (storageType) {\n\t\t\t\t\t\t\t\t\t\tconst storage = !propertyFilter || propertyFilter(p.name) ? new storageType(e.count) : null;\n\t\t\t\t\t\t\t\t\t\tp.storage = storage;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tif (isFloatPly(elements)) {\n\t\t\t\t\t\treturn await readFloatPly(streamBuf, elements, comments);\n\t\t\t\t}\n\t\t\t\treturn await readGeneralPly(streamBuf, elements, comments);\n\t\t};\n\t\treturn await readData();\n};\nconst defaultElementFilter = (val)=>true;\nclass PlyParser {\n\t\tconstructor(app, maxRetries){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tasync load(url, callback, asset) {\n\t\t\t\ttry {\n\t\t\t\t\t\tconst response = await (asset.file?.contents ?? fetch(url.load));\n\t\t\t\t\t\tif (!response || !response.body) {\n\t\t\t\t\t\t\t\tcallback('Error loading resource', null);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst totalLength = parseInt(response.headers.get('content-length') ?? '0', 10);\n\t\t\t\t\t\t\t\tlet totalReceived = 0;\n\t\t\t\t\t\t\t\tconst data = await readPly(response.body.getReader(), asset.data.elementFilter ?? defaultElementFilter, (bytes)=>{\n\t\t\t\t\t\t\t\t\t\ttotalReceived += bytes;\n\t\t\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.fire('progress', totalReceived, totalLength);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tasset.fire('load:data', data);\n\t\t\t\t\t\t\t\tif (!data.isCompressed) {\n\t\t\t\t\t\t\t\t\t\tif (asset.data.reorder ?? true) {\n\t\t\t\t\t\t\t\t\t\t\t\tdata.reorderData();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst resource = data.isCompressed && !asset.data.decompress ? new GSplatCompressedResource(this.app.graphicsDevice, data) : new GSplatResource(this.app.graphicsDevice, data.isCompressed ? data.decompress() : data);\n\t\t\t\t\t\t\t\tcallback(null, resource);\n\t\t\t\t\t\t}\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data;\n\t\t}\n}\n\nconst combineProgress = (target, assets)=>{\n\t\tconst map = new Map();\n\t\tconst fire = ()=>{\n\t\t\t\tlet loaded = 0;\n\t\t\t\tlet total = 0;\n\t\t\t\tmap.forEach((value)=>{\n\t\t\t\t\t\tloaded += value.loaded;\n\t\t\t\t\t\ttotal += value.total;\n\t\t\t\t});\n\t\t\t\ttarget.fire('progress', loaded, total);\n\t\t};\n\t\tassets.forEach((asset)=>{\n\t\t\t\tconst progress = (loaded, total)=>{\n\t\t\t\t\t\tmap.set(asset, {\n\t\t\t\t\t\t\t\tloaded,\n\t\t\t\t\t\t\t\ttotal\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfire();\n\t\t\t\t};\n\t\t\t\tconst done = ()=>{\n\t\t\t\t\t\tasset.off('progress', progress);\n\t\t\t\t\t\tasset.off('load', done);\n\t\t\t\t\t\tasset.off('error', done);\n\t\t\t\t};\n\t\t\t\tasset.on('progress', progress);\n\t\t\t\tasset.on('load', done);\n\t\t\t\tasset.on('error', done);\n\t\t});\n};\nconst upgradeMeta = (meta)=>{\n\t\tconst result = {\n\t\t\t\tversion: 1,\n\t\t\t\tcount: meta.means.shape[0],\n\t\t\t\tmeans: {\n\t\t\t\t\t\tmins: meta.means.mins,\n\t\t\t\t\t\tmaxs: meta.means.maxs,\n\t\t\t\t\t\tfiles: meta.means.files\n\t\t\t\t},\n\t\t\t\tscales: {\n\t\t\t\t\t\tmins: meta.scales.mins,\n\t\t\t\t\t\tmaxs: meta.scales.maxs,\n\t\t\t\t\t\tfiles: meta.scales.files\n\t\t\t\t},\n\t\t\t\tquats: {\n\t\t\t\t\t\tfiles: meta.quats.files\n\t\t\t\t},\n\t\t\t\tsh0: {\n\t\t\t\t\t\tmins: meta.sh0.mins,\n\t\t\t\t\t\tmaxs: meta.sh0.maxs,\n\t\t\t\t\t\tfiles: meta.sh0.files\n\t\t\t\t}\n\t\t};\n\t\tif (meta.shN) {\n\t\t\t\tresult.shN = {\n\t\t\t\t\t\tmins: meta.shN.mins,\n\t\t\t\t\t\tmaxs: meta.shN.maxs,\n\t\t\t\t\t\tfiles: meta.shN.files\n\t\t\t\t};\n\t\t}\n\t\treturn result;\n};\nclass SogsParser {\n\t\tconstructor(app, maxRetries){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tasync loadTextures(url, callback, asset, meta) {\n\t\t\t\tif (meta.version !== 2) {\n\t\t\t\t\t\tmeta = upgradeMeta(meta);\n\t\t\t\t}\n\t\t\t\tconst { assets } = this.app;\n\t\t\t\tconst subs = [\n\t\t\t\t\t\t'means',\n\t\t\t\t\t\t'quats',\n\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t'shN'\n\t\t\t\t];\n\t\t\t\tconst textures = {};\n\t\t\t\tconst promises = [];\n\t\t\t\tsubs.forEach((sub)=>{\n\t\t\t\t\t\tconst files = meta[sub]?.files ?? [];\n\t\t\t\t\t\ttextures[sub] = files.map((filename)=>{\n\t\t\t\t\t\t\t\tconst texture = new Asset(filename, 'texture', {\n\t\t\t\t\t\t\t\t\t\turl: asset.options?.mapUrl?.(filename) ?? new URL(filename, new URL(url.load, window.location.href).toString()).toString(),\n\t\t\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tconst promise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\t\t\ttexture.on('load', ()=>resolve(null));\n\t\t\t\t\t\t\t\t\t\ttexture.on('error', (err)=>reject(err));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tassets.add(texture);\n\t\t\t\t\t\t\t\tpromises.push(promise);\n\t\t\t\t\t\t\t\treturn texture;\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tconst textureAssets = subs.map((sub)=>textures[sub]).flat();\n\t\t\t\tasset.once('unload', ()=>{\n\t\t\t\t\t\ttextureAssets.forEach((t)=>{\n\t\t\t\t\t\t\t\tassets.remove(t);\n\t\t\t\t\t\t\t\tt.unload();\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tcombineProgress(asset, textureAssets);\n\t\t\t\ttextureAssets.forEach((t)=>assets.load(t));\n\t\t\t\tawait Promise.allSettled(promises);\n\t\t\t\tconst data = new GSplatSogsData();\n\t\t\t\tdata.meta = meta;\n\t\t\t\tdata.numSplats = meta.count;\n\t\t\t\tdata.means_l = textures.means[0].resource;\n\t\t\t\tdata.means_u = textures.means[1].resource;\n\t\t\t\tdata.quats = textures.quats[0].resource;\n\t\t\t\tdata.scales = textures.scales[0].resource;\n\t\t\t\tdata.sh0 = textures.sh0[0].resource;\n\t\t\t\tdata.sh_centroids = textures.shN?.[0]?.resource;\n\t\t\t\tdata.sh_labels = textures.shN?.[1]?.resource;\n\t\t\t\tconst decompress = asset.data?.decompress;\n\t\t\t\tif (!decompress) {\n\t\t\t\t\t\tif (!this.app?.graphicsDevice || this.app?.graphicsDevice?._destroyed) return;\n\t\t\t\t\t\tawait data.prepareGpuData();\n\t\t\t\t}\n\t\t\t\tif (!this.app?.graphicsDevice || this.app?.graphicsDevice?._destroyed) return;\n\t\t\t\tconst resource = decompress ? new GSplatResource(this.app.graphicsDevice, await data.decompress()) : new GSplatSogsResource(this.app.graphicsDevice, data);\n\t\t\t\tcallback(null, resource);\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (asset.data?.means) {\n\t\t\t\t\t\tthis.loadTextures(url, callback, asset, asset.data);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst options = {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\t\t\tresponseType: Http.ResponseType.JSON\n\t\t\t\t\t\t};\n\t\t\t\t\t\thttp.get(url.load, options, (err, meta)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tthis.loadTextures(url, callback, asset, meta);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(`Error loading gsplat meta: ${url.original} [${err}]`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n}\n\nconst parseZipArchive = (data)=>{\n\t\tconst dataView = new DataView(data);\n\t\tconst u16 = (offset)=>dataView.getUint16(offset, true);\n\t\tconst u32 = (offset)=>dataView.getUint32(offset, true);\n\t\tconst extractEocd = (offset)=>{\n\t\t\t\treturn {\n\t\t\t\t\t\tmagic: u32(offset),\n\t\t\t\t\t\tnumFiles: u16(offset + 8),\n\t\t\t\t\t\tcdSizeBytes: u32(offset + 12),\n\t\t\t\t\t\tcdOffsetBytes: u32(offset + 16)\n\t\t\t\t};\n\t\t};\n\t\tconst extractCdr = (offset)=>{\n\t\t\t\tconst filenameLength = u16(offset + 28);\n\t\t\t\tconst extraFieldLength = u16(offset + 30);\n\t\t\t\tconst fileCommentLength = u16(offset + 32);\n\t\t\t\treturn {\n\t\t\t\t\t\tmagic: u32(offset),\n\t\t\t\t\t\tcompressionMethod: u16(offset + 10),\n\t\t\t\t\t\tcompressedSizeBytes: u32(offset + 20),\n\t\t\t\t\t\tuncompressedSizeBytes: u32(offset + 24),\n\t\t\t\t\t\tlfhOffsetBytes: u32(offset + 42),\n\t\t\t\t\t\tfilename: new TextDecoder().decode(new Uint8Array(data, offset + 46, filenameLength)),\n\t\t\t\t\t\trecordSizeBytes: 46 + filenameLength + extraFieldLength + fileCommentLength\n\t\t\t\t};\n\t\t};\n\t\tconst extractLfh = (offset)=>{\n\t\t\t\tconst filenameLength = u16(offset + 26);\n\t\t\t\tconst extraLength = u16(offset + 28);\n\t\t\t\treturn {\n\t\t\t\t\t\tmagic: u32(offset),\n\t\t\t\t\t\toffsetBytes: offset + 30 + filenameLength + extraLength\n\t\t\t\t};\n\t\t};\n\t\tconst eocd = extractEocd(dataView.byteLength - 22);\n\t\tif (eocd.magic !== 0x06054b50) {\n\t\t\t\tthrow new Error('Invalid zip file: EOCDR not found');\n\t\t}\n\t\tif (eocd.cdOffsetBytes === 0xffffffff || eocd.cdSizeBytes === 0xffffffff) {\n\t\t\t\tthrow new Error('Invalid zip file: Zip64 not supported');\n\t\t}\n\t\tconst result = [];\n\t\tlet offset = eocd.cdOffsetBytes;\n\t\tfor(let i = 0; i < eocd.numFiles; i++){\n\t\t\t\tconst cdr = extractCdr(offset);\n\t\t\t\tif (cdr.magic !== 0x02014b50) {\n\t\t\t\t\t\tthrow new Error('Invalid zip file: CDR not found');\n\t\t\t\t}\n\t\t\t\tconst lfh = extractLfh(cdr.lfhOffsetBytes);\n\t\t\t\tif (lfh.magic !== 0x04034b50) {\n\t\t\t\t\t\tthrow new Error('Invalid zip file: LFH not found');\n\t\t\t\t}\n\t\t\t\tresult.push({\n\t\t\t\t\t\tfilename: cdr.filename,\n\t\t\t\t\t\tcompression: {\n\t\t\t\t\t\t\t\t0: 'none',\n\t\t\t\t\t\t\t\t8: 'deflate'\n\t\t\t\t\t\t}[cdr.compressionMethod] ?? 'unknown',\n\t\t\t\t\t\tdata: new Uint8Array(data, lfh.offsetBytes, cdr.compressedSizeBytes)\n\t\t\t\t});\n\t\t\t\toffset += cdr.recordSizeBytes;\n\t\t}\n\t\treturn result;\n};\nconst inflate = async (compressed)=>{\n\t\tconst ds = new DecompressionStream('deflate-raw');\n\t\tconst out = new Blob([\n\t\t\t\tcompressed\n\t\t]).stream().pipeThrough(ds);\n\t\tconst ab = await new Response(out).arrayBuffer();\n\t\treturn new Uint8Array(ab);\n};\nconst downloadArrayBuffer = async (url, asset)=>{\n\t\tconst response = await (asset.file?.contents ?? fetch(url.load));\n\t\tif (!response) {\n\t\t\t\tthrow new Error('Error loading resource');\n\t\t}\n\t\tif (response instanceof Response) {\n\t\t\t\tif (!response.ok) {\n\t\t\t\t\t\tthrow new Error(`Error loading resource: ${response.status} ${response.statusText}`);\n\t\t\t\t}\n\t\t\t\tconst totalLength = parseInt(response.headers.get('content-length') ?? '0', 10);\n\t\t\t\tif (!response.body || !response.body.getReader) {\n\t\t\t\t\t\tconst buf = await response.arrayBuffer();\n\t\t\t\t\t\tasset.fire('progress', buf.byteLength, totalLength);\n\t\t\t\t\t\treturn buf;\n\t\t\t\t}\n\t\t\t\tconst reader = response.body.getReader();\n\t\t\t\tconst chunks = [];\n\t\t\t\tlet totalReceived = 0;\n\t\t\t\ttry {\n\t\t\t\t\t\twhile(true){\n\t\t\t\t\t\t\t\tconst { done, value } = await reader.read();\n\t\t\t\t\t\t\t\tif (done) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tchunks.push(value);\n\t\t\t\t\t\t\t\ttotalReceived += value.byteLength;\n\t\t\t\t\t\t\t\tasset.fire('progress', totalReceived, totalLength);\n\t\t\t\t\t\t}\n\t\t\t\t} finally{\n\t\t\t\t\t\treader.releaseLock();\n\t\t\t\t}\n\t\t\t\treturn new Blob(chunks).arrayBuffer();\n\t\t}\n\t\treturn response;\n};\nclass SogBundleParser {\n\t\tconstructor(app, maxRetries = 3){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tasync load(url, callback, asset) {\n\t\t\t\ttry {\n\t\t\t\t\t\tconst arrayBuffer = await downloadArrayBuffer(url, asset);\n\t\t\t\t\t\tconst files = parseZipArchive(arrayBuffer);\n\t\t\t\t\t\tfor (const file of files){\n\t\t\t\t\t\t\t\tif (file.compression === 'deflate') {\n\t\t\t\t\t\t\t\t\t\tfile.data = await inflate(file.data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst metaFile = files.find((f)=>f.filename === 'meta.json');\n\t\t\t\t\t\tif (!metaFile) {\n\t\t\t\t\t\t\t\tcallback('Error: meta.json not found');\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet meta;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tmeta = JSON.parse(new TextDecoder().decode(metaFile.data));\n\t\t\t\t\t\t} catch (err) {\n\t\t\t\t\t\t\t\tcallback(`Error parsing meta.json: ${err}`);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst filenames = [\n\t\t\t\t\t\t\t\t'means',\n\t\t\t\t\t\t\t\t'scales',\n\t\t\t\t\t\t\t\t'quats',\n\t\t\t\t\t\t\t\t'sh0',\n\t\t\t\t\t\t\t\t'shN'\n\t\t\t\t\t\t].map((key)=>meta[key]?.files ?? []).flat();\n\t\t\t\t\t\tconst textures = {};\n\t\t\t\t\t\tconst promises = [];\n\t\t\t\t\t\tfor (const filename of filenames){\n\t\t\t\t\t\t\t\tconst file = files.find((f)=>f.filename === filename);\n\t\t\t\t\t\t\t\tlet texture;\n\t\t\t\t\t\t\t\tif (file) {\n\t\t\t\t\t\t\t\t\t\ttexture = new Asset(filename, 'texture', {\n\t\t\t\t\t\t\t\t\t\t\t\turl: `${url.load}/${filename}`,\n\t\t\t\t\t\t\t\t\t\t\t\tfilename,\n\t\t\t\t\t\t\t\t\t\t\t\tcontents: file.data\n\t\t\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst url = new URL(filename, new URL(filename, window.location.href).toString()).toString();\n\t\t\t\t\t\t\t\t\t\ttexture = new Asset(filename, 'texture', {\n\t\t\t\t\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\t\t\t\t\tfilename\n\t\t\t\t\t\t\t\t\t\t}, {\n\t\t\t\t\t\t\t\t\t\t\t\tmipmaps: false\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst promise = new Promise((resolve, reject)=>{\n\t\t\t\t\t\t\t\t\t\ttexture.on('load', ()=>resolve(null));\n\t\t\t\t\t\t\t\t\t\ttexture.on('error', (err)=>reject(err));\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tthis.app.assets.add(texture);\n\t\t\t\t\t\t\t\ttextures[filename] = texture;\n\t\t\t\t\t\t\t\tpromises.push(promise);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tObject.values(textures).forEach((t)=>this.app.assets.load(t));\n\t\t\t\t\t\tawait Promise.allSettled(promises);\n\t\t\t\t\t\tconst { assets } = this.app;\n\t\t\t\t\t\tasset.once('unload', ()=>{\n\t\t\t\t\t\t\t\tObject.values(textures).forEach((t)=>{\n\t\t\t\t\t\t\t\t\t\tassets.remove(t);\n\t\t\t\t\t\t\t\t\t\tt.unload();\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst data = new GSplatSogsData();\n\t\t\t\t\t\tdata.meta = meta;\n\t\t\t\t\t\tdata.numSplats = meta.count;\n\t\t\t\t\t\tdata.means_l = textures[meta.means.files[0]].resource;\n\t\t\t\t\t\tdata.means_u = textures[meta.means.files[1]].resource;\n\t\t\t\t\t\tdata.quats = textures[meta.quats.files[0]].resource;\n\t\t\t\t\t\tdata.scales = textures[meta.scales.files[0]].resource;\n\t\t\t\t\t\tdata.sh0 = textures[meta.sh0.files[0]].resource;\n\t\t\t\t\t\tdata.sh_centroids = textures[meta.shN?.files[0]]?.resource;\n\t\t\t\t\t\tdata.sh_labels = textures[meta.shN?.files[1]]?.resource;\n\t\t\t\t\t\tconst decompress = asset.data?.decompress;\n\t\t\t\t\t\tif (!decompress) {\n\t\t\t\t\t\t\t\tawait data.prepareGpuData();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst resource = decompress ? new GSplatResource(this.app.graphicsDevice, await data.decompress()) : new GSplatSogsResource(this.app.graphicsDevice, data);\n\t\t\t\t\t\tcallback(null, resource);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t}\n\t\t}\n}\n\nclass GSplatOctreeParser {\n\t\tconstructor(app, maxRetries){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.maxRetries = maxRetries;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\tresponseType: Http.ResponseType.JSON\n\t\t\t\t};\n\t\t\t\thttp.get(url.load, options, (err, data)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tconst resource = new GSplatOctreeResource(asset.file.url, data);\n\t\t\t\t\t\t\t\tcallback(null, resource);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading gsplat octree: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nclass GSplatHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'gsplat');\n\t\t\t\tthis.parsers = {\n\t\t\t\t\t\tply: new PlyParser(app, 3),\n\t\t\t\t\t\tsog: new SogBundleParser(app),\n\t\t\t\t\t\tjson: new SogsParser(app, 3),\n\t\t\t\t\t\toctree: new GSplatOctreeParser(app, 3)\n\t\t\t\t};\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\t_getParser(url) {\n\t\t\t\tconst basename = path.getBasename(this._getUrlWithoutParams(url)).toLowerCase();\n\t\t\t\tif (basename === 'lod-meta.json') {\n\t\t\t\t\t\treturn this.parsers.octree;\n\t\t\t\t}\n\t\t\t\tconst ext = path.getExtension(basename).replace('.', '');\n\t\t\t\treturn this.parsers[ext] || this.parsers.ply;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._getParser(url.original).load(url, callback, asset);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\treturn data;\n\t\t}\n}\n\nclass CompressUtils {\n\t\tstatic setCompressedPRS(entity, data, compressed) {\n\t\t\t\tconst a = compressed.singleVecs;\n\t\t\t\tlet b, i;\n\t\t\t\tconst v = data.___1;\n\t\t\t\tif (!v) {\n\t\t\t\t\t\tb = compressed.tripleVecs;\n\t\t\t\t\t\ti = data.___2;\n\t\t\t\t}\n\t\t\t\tlet n = v ? v[0] : b[i];\n\t\t\t\tentity.setLocalPosition(a[n], a[n + 1], a[n + 2]);\n\t\t\t\tn = v ? v[1] : b[i + 1];\n\t\t\t\tentity.setLocalEulerAngles(a[n], a[n + 1], a[n + 2]);\n\t\t\t\tn = v ? v[2] : b[i + 2];\n\t\t\t\tentity.setLocalScale(a[n], a[n + 1], a[n + 2]);\n\t\t}\n\t\tstatic oneCharToKey(s, data) {\n\t\t\t\tconst i = s.charCodeAt(0) - data.fieldFirstCode;\n\t\t\t\treturn data.fieldArray[i];\n\t\t}\n\t\tstatic multCharToKey(s, data) {\n\t\t\t\tlet ind = 0;\n\t\t\t\tfor(let i = 0; i < s.length; i++){\n\t\t\t\t\t\tind = ind * data.fieldCodeBase + s.charCodeAt(i) - data.fieldFirstCode;\n\t\t\t\t}\n\t\t\t\treturn data.fieldArray[ind];\n\t\t}\n}\n\nclass Decompress {\n\t\tconstructor(node, data){\n\t\t\t\tthis._node = node;\n\t\t\t\tthis._data = data;\n\t\t}\n\t\trun() {\n\t\t\t\tconst type = Object.prototype.toString.call(this._node);\n\t\t\t\tif (type === '[object Object]') {\n\t\t\t\t\t\tthis._handleMap();\n\t\t\t\t} else if (type === '[object Array]') {\n\t\t\t\t\t\tthis._handleArray();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._result = this._node;\n\t\t\t\t}\n\t\t\t\treturn this._result;\n\t\t}\n\t\t_handleMap() {\n\t\t\t\tthis._result = {};\n\t\t\t\tconst a = Object.keys(this._node);\n\t\t\t\ta.forEach(this._handleKey, this);\n\t\t}\n\t\t_handleKey(origKey) {\n\t\t\t\tlet newKey = origKey;\n\t\t\t\tconst len = origKey.length;\n\t\t\t\tif (len === 1) {\n\t\t\t\t\t\tnewKey = CompressUtils.oneCharToKey(origKey, this._data);\n\t\t\t\t} else if (len === 2) {\n\t\t\t\t\t\tnewKey = CompressUtils.multCharToKey(origKey, this._data);\n\t\t\t\t}\n\t\t\t\tthis._result[newKey] = new Decompress(this._node[origKey], this._data).run();\n\t\t}\n\t\t_handleArray() {\n\t\t\t\tthis._result = [];\n\t\t\t\tthis._node.forEach(this._handleArElt, this);\n\t\t}\n\t\t_handleArElt(elt) {\n\t\t\t\tconst v = new Decompress(elt, this._data).run();\n\t\t\t\tthis._result.push(v);\n\t\t}\n}\n\nclass SceneParser {\n\t\tconstructor(app, isTemplate){\n\t\t\t\tthis._app = app;\n\t\t\t\tthis._isTemplate = isTemplate;\n\t\t}\n\t\tparse(data) {\n\t\t\t\tconst entities = {};\n\t\t\t\tlet parent = null;\n\t\t\t\tconst compressed = data.compressedFormat;\n\t\t\t\tif (compressed && !data.entDecompressed) {\n\t\t\t\t\t\tdata.entDecompressed = true;\n\t\t\t\t\t\tdata.entities = new Decompress(data.entities, compressed).run();\n\t\t\t\t}\n\t\t\t\tfor(const id in data.entities){\n\t\t\t\t\t\tconst curData = data.entities[id];\n\t\t\t\t\t\tconst curEnt = this._createEntity(curData, compressed);\n\t\t\t\t\t\tentities[id] = curEnt;\n\t\t\t\t\t\tif (curData.parent === null) {\n\t\t\t\t\t\t\t\tparent = curEnt;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const id in data.entities){\n\t\t\t\t\t\tconst curEnt = entities[id];\n\t\t\t\t\t\tconst children = data.entities[id].children;\n\t\t\t\t\t\tconst len = children.length;\n\t\t\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\t\t\tconst childEnt = entities[children[i]];\n\t\t\t\t\t\t\t\tif (childEnt) {\n\t\t\t\t\t\t\t\t\t\tcurEnt.addChild(childEnt);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._openComponentData(parent, data.entities);\n\t\t\t\treturn parent;\n\t\t}\n\t\t_createEntity(data, compressed) {\n\t\t\t\tconst entity = new Entity(data.name, this._app);\n\t\t\t\tentity.setGuid(data.resource_id);\n\t\t\t\tthis._setPosRotScale(entity, data, compressed);\n\t\t\t\tentity._enabled = data.enabled ?? true;\n\t\t\t\tif (this._isTemplate) {\n\t\t\t\t\t\tentity._template = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tentity._enabledInHierarchy = entity._enabled;\n\t\t\t\t}\n\t\t\t\tentity.template = data.template;\n\t\t\t\tif (data.tags) {\n\t\t\t\t\t\tfor(let i = 0; i < data.tags.length; i++){\n\t\t\t\t\t\t\t\tentity.tags.add(data.tags[i]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn entity;\n\t\t}\n\t\t_setPosRotScale(entity, data, compressed) {\n\t\t\t\tif (compressed) {\n\t\t\t\t\t\tCompressUtils.setCompressedPRS(entity, data, compressed);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst p = data.position;\n\t\t\t\t\t\tconst r = data.rotation;\n\t\t\t\t\t\tconst s = data.scale;\n\t\t\t\t\t\tentity.setLocalPosition(p[0], p[1], p[2]);\n\t\t\t\t\t\tentity.setLocalEulerAngles(r[0], r[1], r[2]);\n\t\t\t\t\t\tentity.setLocalScale(s[0], s[1], s[2]);\n\t\t\t\t}\n\t\t}\n\t\t_openComponentData(entity, entities) {\n\t\t\t\tconst systemsList = this._app.systems.list;\n\t\t\t\tlet len = systemsList.length;\n\t\t\t\tconst entityData = entities[entity.getGuid()];\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tconst system = systemsList[i];\n\t\t\t\t\t\tconst componentData = entityData.components[system.id];\n\t\t\t\t\t\tif (componentData) {\n\t\t\t\t\t\t\t\tsystem.addComponent(entity, componentData);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlen = entityData.children.length;\n\t\t\t\tconst children = entity._children;\n\t\t\t\tfor(let i = 0; i < len; i++){\n\t\t\t\t\t\tif (children[i]) {\n\t\t\t\t\t\t\t\tchildren[i] = this._openComponentData(children[i], entities);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn entity;\n\t\t}\n}\n\nclass SceneUtils {\n\t\tstatic load(url, maxRetries, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(err, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet errMsg = `Error while loading scene JSON ${url.original}`;\n\t\t\t\t\t\t\t\tif (err.message) {\n\t\t\t\t\t\t\t\t\t\terrMsg += `: ${err.message}`;\n\t\t\t\t\t\t\t\t\t\tif (err.stack) {\n\t\t\t\t\t\t\t\t\t\t\t\terrMsg += `\\n${err.stack}`;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\terrMsg += `: ${err}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback(errMsg);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nclass HierarchyHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'hierarchy');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tSceneUtils.load(url, this.maxRetries, callback);\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tthis._app.systems.script.preloading = true;\n\t\t\t\tconst parser = new SceneParser(this._app, false);\n\t\t\t\tconst parent = parser.parse(data);\n\t\t\t\tthis._app.systems.script.preloading = false;\n\t\t\t\treturn parent;\n\t\t}\n}\n\nclass HtmlHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'html'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading html resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nclass JsonHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'json'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:')) {\n\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading JSON resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn JSON.parse(this.decoder.decode(data));\n\t\t}\n}\n\nclass StandardMaterialValidator {\n\t\tconstructor(){\n\t\t\t\tthis.removeInvalid = true;\n\t\t\t\tthis.valid = true;\n\t\t\t\tthis.enumValidators = {\n\t\t\t\t\t\toccludeSpecular: this._createEnumValidator([\n\t\t\t\t\t\t\t\tSPECOCC_NONE,\n\t\t\t\t\t\t\t\tSPECOCC_AO,\n\t\t\t\t\t\t\t\tSPECOCC_GLOSSDEPENDENT\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tcull: this._createEnumValidator([\n\t\t\t\t\t\t\t\tCULLFACE_NONE,\n\t\t\t\t\t\t\t\tCULLFACE_BACK,\n\t\t\t\t\t\t\t\tCULLFACE_FRONT,\n\t\t\t\t\t\t\t\tCULLFACE_FRONTANDBACK\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tblendType: this._createEnumValidator([\n\t\t\t\t\t\t\t\tBLEND_SUBTRACTIVE,\n\t\t\t\t\t\t\t\tBLEND_ADDITIVE,\n\t\t\t\t\t\t\t\tBLEND_NORMAL,\n\t\t\t\t\t\t\t\tBLEND_NONE,\n\t\t\t\t\t\t\t\tBLEND_PREMULTIPLIED,\n\t\t\t\t\t\t\t\tBLEND_MULTIPLICATIVE,\n\t\t\t\t\t\t\t\tBLEND_ADDITIVEALPHA,\n\t\t\t\t\t\t\t\tBLEND_MULTIPLICATIVE2X,\n\t\t\t\t\t\t\t\tBLEND_SCREEN,\n\t\t\t\t\t\t\t\tBLEND_MIN,\n\t\t\t\t\t\t\t\tBLEND_MAX\n\t\t\t\t\t\t]),\n\t\t\t\t\t\tdepthFunc: this._createEnumValidator([\n\t\t\t\t\t\t\t\tFUNC_NEVER,\n\t\t\t\t\t\t\t\tFUNC_LESS,\n\t\t\t\t\t\t\t\tFUNC_EQUAL,\n\t\t\t\t\t\t\t\tFUNC_LESSEQUAL,\n\t\t\t\t\t\t\t\tFUNC_GREATER,\n\t\t\t\t\t\t\t\tFUNC_NOTEQUAL,\n\t\t\t\t\t\t\t\tFUNC_GREATEREQUAL,\n\t\t\t\t\t\t\t\tFUNC_ALWAYS\n\t\t\t\t\t\t])\n\t\t\t\t};\n\t\t}\n\t\tsetInvalid(key, data) {\n\t\t\t\tthis.valid = false;\n\t\t\t\tif (this.removeInvalid) {\n\t\t\t\t\t\tdelete data[key];\n\t\t\t\t}\n\t\t}\n\t\tvalidate(data) {\n\t\t\t\tconst TYPES = standardMaterialParameterTypes;\n\t\t\t\tconst REMOVED = standardMaterialRemovedParameters;\n\t\t\t\tconst pathMapping = data.mappingFormat === 'path';\n\t\t\t\tfor(const key in data){\n\t\t\t\t\t\tconst type = TYPES[key];\n\t\t\t\t\t\tif (!type) {\n\t\t\t\t\t\t\t\tif (REMOVED[key]) {\n\t\t\t\t\t\t\t\t\t\tdelete data[key];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis.valid = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (type.startsWith('enum')) {\n\t\t\t\t\t\t\t\tconst enumType = type.split(':')[1];\n\t\t\t\t\t\t\t\tif (this.enumValidators[enumType]) {\n\t\t\t\t\t\t\t\t\t\tif (!this.enumValidators[enumType](data[key])) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'number') {\n\t\t\t\t\t\t\t\tif (typeof data[key] !== 'number') {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'boolean') {\n\t\t\t\t\t\t\t\tif (typeof data[key] !== 'boolean') {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'string') {\n\t\t\t\t\t\t\t\tif (typeof data[key] !== 'string') {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'vec2') {\n\t\t\t\t\t\t\t\tif (!(data[key] instanceof Array && data[key].length === 2)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'rgb') {\n\t\t\t\t\t\t\t\tif (!(data[key] instanceof Array && data[key].length === 3)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'texture') {\n\t\t\t\t\t\t\t\tif (!pathMapping) {\n\t\t\t\t\t\t\t\t\t\tif (!(typeof data[key] === 'number' || data[key] === null)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!(data[key] instanceof Texture)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!(typeof data[key] === 'string' || data[key] === null)) {\n\t\t\t\t\t\t\t\t\t\t\t\tif (!(data[key] instanceof Texture)) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'boundingbox') {\n\t\t\t\t\t\t\t\tif (!(data[key].center && data[key].center instanceof Array && data[key].center.length === 3)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!(data[key].halfExtents && data[key].halfExtents instanceof Array && data[key].halfExtents.length === 3)) {\n\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'cubemap') {\n\t\t\t\t\t\t\t\tif (!(typeof data[key] === 'number' || data[key] === null || data[key] === undefined)) {\n\t\t\t\t\t\t\t\t\t\tif (!(data[key] instanceof Texture && data[key].cubemap)) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(key, data);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'chunks') {\n\t\t\t\t\t\t\t\tconst chunkNames = Object.keys(data[key]);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < chunkNames.length; i++){\n\t\t\t\t\t\t\t\t\t\tif (typeof data[key][chunkNames[i]] !== 'string') {\n\t\t\t\t\t\t\t\t\t\t\t\tthis.setInvalid(chunkNames[i], data[key]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconsole.error(`Unknown material type: ${type}`);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdata.validated = true;\n\t\t\t\treturn this.valid;\n\t\t}\n\t\t_createEnumValidator(values) {\n\t\t\t\treturn function(value) {\n\t\t\t\t\t\treturn values.indexOf(value) >= 0;\n\t\t\t\t};\n\t\t}\n}\n\nclass JsonStandardMaterialParser {\n\t\tconstructor(){\n\t\t\t\tthis._validator = null;\n\t\t}\n\t\tparse(input) {\n\t\t\t\tconst migrated = this.migrate(input);\n\t\t\t\tconst validated = this._validate(migrated);\n\t\t\t\tconst material = new StandardMaterial();\n\t\t\t\tthis.initialize(material, validated);\n\t\t\t\treturn material;\n\t\t}\n\t\tinitialize(material, data) {\n\t\t\t\tif (!data.validated) {\n\t\t\t\t\t\tdata = this._validate(data);\n\t\t\t\t}\n\t\t\t\tif (data.chunks) {\n\t\t\t\t\t\tif (data.chunks && Object.keys(data.chunks).length > 0) {\n\t\t\t\t\t\t\t\tconst dstMap = material.shaderChunks.glsl;\n\t\t\t\t\t\t\t\tObject.entries(data.chunks).forEach(([key, value])=>dstMap.set(key, value));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const key in data){\n\t\t\t\t\t\tconst type = standardMaterialParameterTypes[key];\n\t\t\t\t\t\tconst value = data[key];\n\t\t\t\t\t\tif (type === 'vec2') {\n\t\t\t\t\t\t\t\tmaterial[key] = new Vec2(value[0], value[1]);\n\t\t\t\t\t\t} else if (type === 'rgb') {\n\t\t\t\t\t\t\t\tmaterial[key] = new Color(value[0], value[1], value[2]);\n\t\t\t\t\t\t} else if (type === 'texture') {\n\t\t\t\t\t\t\t\tif (value instanceof Texture) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = value;\n\t\t\t\t\t\t\t\t} else if (!(material[key] instanceof Texture && typeof value === 'number' && value > 0)) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'cubemap') {\n\t\t\t\t\t\t\t\tif (value instanceof Texture) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = value;\n\t\t\t\t\t\t\t\t} else if (!(material[key] instanceof Texture && typeof value === 'number' && value > 0)) {\n\t\t\t\t\t\t\t\t\t\tmaterial[key] = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (key === 'cubeMap' && !value) {\n\t\t\t\t\t\t\t\t\t\tmaterial.prefilteredCubemaps = null;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (type === 'boundingbox') {\n\t\t\t\t\t\t\t\tconst center = new Vec3(value.center[0], value.center[1], value.center[2]);\n\t\t\t\t\t\t\t\tconst halfExtents = new Vec3(value.halfExtents[0], value.halfExtents[1], value.halfExtents[2]);\n\t\t\t\t\t\t\t\tmaterial[key] = new BoundingBox(center, halfExtents);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmaterial[key] = data[key];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmaterial.update();\n\t\t}\n\t\tmigrate(data) {\n\t\t\t\tif (data.shader) delete data.shader;\n\t\t\t\tif (data.mapping_format) {\n\t\t\t\t\t\tdata.mappingFormat = data.mapping_format;\n\t\t\t\t\t\tdelete data.mapping_format;\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tconst RENAMED_PROPERTIES = [\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'bumpMapFactor',\n\t\t\t\t\t\t\t\t'bumpiness'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'aoUvSet',\n\t\t\t\t\t\t\t\t'aoMapUv'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'aoMapVertexColor',\n\t\t\t\t\t\t\t\t'aoVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'diffuseMapVertexColor',\n\t\t\t\t\t\t\t\t'diffuseVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'emissiveMapVertexColor',\n\t\t\t\t\t\t\t\t'emissiveVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'specularMapVertexColor',\n\t\t\t\t\t\t\t\t'specularVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'metalnessMapVertexColor',\n\t\t\t\t\t\t\t\t'metalnessVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'opacityMapVertexColor',\n\t\t\t\t\t\t\t\t'opacityVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'glossMapVertexColor',\n\t\t\t\t\t\t\t\t'glossVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'lightMapVertexColor',\n\t\t\t\t\t\t\t\t'lightVertexColor'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'specularMapTint',\n\t\t\t\t\t\t\t\t'specularTint'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'metalnessMapTint',\n\t\t\t\t\t\t\t\t'metalnessTint'\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'clearCoatGlossiness',\n\t\t\t\t\t\t\t\t'clearCoatGloss'\n\t\t\t\t\t\t]\n\t\t\t\t];\n\t\t\t\tfor(i = 0; i < RENAMED_PROPERTIES.length; i++){\n\t\t\t\t\t\tconst _old = RENAMED_PROPERTIES[i][0];\n\t\t\t\t\t\tconst _new = RENAMED_PROPERTIES[i][1];\n\t\t\t\t\t\tif (data[_old] !== undefined) {\n\t\t\t\t\t\t\t\tif (data[_new] === undefined) {\n\t\t\t\t\t\t\t\t\t\tdata[_new] = data[_old];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tdelete data[_old];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst DEPRECATED_PROPERTIES = [\n\t\t\t\t\t\t'fresnelFactor',\n\t\t\t\t\t\t'shadowSampleType'\n\t\t\t\t];\n\t\t\t\tfor(i = 0; i < DEPRECATED_PROPERTIES.length; i++){\n\t\t\t\t\t\tconst name = DEPRECATED_PROPERTIES[i];\n\t\t\t\t\t\tif (data.hasOwnProperty(name)) {\n\t\t\t\t\t\t\t\tdelete data[name];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t}\n\t\t_validate(data) {\n\t\t\t\tif (!data.validated) {\n\t\t\t\t\t\tif (!this._validator) {\n\t\t\t\t\t\t\t\tthis._validator = new StandardMaterialValidator();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._validator.validate(data);\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t}\n}\n\nconst PLACEHOLDER_MAP = {\n\t\taoMap: 'white',\n\t\taoDetailMap: 'white',\n\t\tdiffuseMap: 'gray',\n\t\tdiffuseDetailMap: 'gray',\n\t\tspecularMap: 'gray',\n\t\tspecularityFactorMap: 'white',\n\t\tmetalnessMap: 'black',\n\t\tglossMap: 'gray',\n\t\tsheenMap: 'black',\n\t\tsheenGlossMap: 'gray',\n\t\tclearCoatMap: 'black',\n\t\tclearCoatGlossMap: 'gray',\n\t\tclearCoatNormalMap: 'normal',\n\t\trefractionMap: 'white',\n\t\temissiveMap: 'gray',\n\t\tnormalMap: 'normal',\n\t\tnormalDetailMap: 'normal',\n\t\theightMap: 'gray',\n\t\topacityMap: 'gray',\n\t\tsphereMap: 'gray',\n\t\tlightMap: 'white',\n\t\tthicknessMap: 'black',\n\t\tiridescenceMap: 'black',\n\t\tiridescenceThicknessMap: 'black',\n\t\tenvAtlas: 'black',\n\t\tanisotropyMap: 'black'\n};\nclass MaterialHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'material');\n\t\t\t\tthis._assets = app.assets;\n\t\t\t\tthis._device = app.graphicsDevice;\n\t\t\t\tthis._parser = new JsonStandardMaterialParser();\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tresponse._engine = true;\n\t\t\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\t\t\tcallback(`Error loading material: ${url.original} [${err}]`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tconst material = this._parser.parse(data);\n\t\t\t\tif (data._engine) {\n\t\t\t\t\t\tmaterial._data = data;\n\t\t\t\t\t\tdelete data._engine;\n\t\t\t\t}\n\t\t\t\treturn material;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tif (asset.resource._data) {\n\t\t\t\t\t\tasset._data = asset.resource._data;\n\t\t\t\t\t\tdelete asset.resource._data;\n\t\t\t\t}\n\t\t\t\tasset.data.name = asset.name;\n\t\t\t\tasset.resource.name = asset.name;\n\t\t\t\tthis._bindAndAssignAssets(asset, assets);\n\t\t\t\tasset.off('unload', this._onAssetUnload, this);\n\t\t\t\tasset.on('unload', this._onAssetUnload, this);\n\t\t}\n\t\t_onAssetUnload(asset) {\n\t\t\t\tdelete asset.data.parameters;\n\t\t\t\tdelete asset.data.chunks;\n\t\t\t\tdelete asset.data.name;\n\t\t}\n\t\t_assignTexture(parameterName, materialAsset, texture) {\n\t\t\t\tmaterialAsset.resource[parameterName] = texture;\n\t\t}\n\t\t_getPlaceholderTexture(parameterName) {\n\t\t\t\tconst placeholder = PLACEHOLDER_MAP[parameterName];\n\t\t\t\treturn getBuiltInTexture(this._device, placeholder);\n\t\t}\n\t\t_assignPlaceholderTexture(parameterName, materialAsset) {\n\t\t\t\tmaterialAsset.resource[parameterName] = this._getPlaceholderTexture(parameterName);\n\t\t}\n\t\t_onTextureLoad(parameterName, materialAsset, textureAsset) {\n\t\t\t\tthis._assignTexture(parameterName, materialAsset, textureAsset.resource);\n\t\t\t\tmaterialAsset.resource.update();\n\t\t}\n\t\t_onTextureAdd(parameterName, materialAsset, textureAsset) {\n\t\t\t\tthis._assets.load(textureAsset);\n\t\t}\n\t\t_onTextureRemoveOrUnload(parameterName, materialAsset, textureAsset) {\n\t\t\t\tconst material = materialAsset.resource;\n\t\t\t\tif (material) {\n\t\t\t\t\t\tif (materialAsset.resource[parameterName] === textureAsset.resource) {\n\t\t\t\t\t\t\t\tthis._assignPlaceholderTexture(parameterName, materialAsset);\n\t\t\t\t\t\t\t\tmaterial.update();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_assignCubemap(parameterName, materialAsset, textures) {\n\t\t\t\tmaterialAsset.resource[parameterName] = textures[0];\n\t\t\t\tif (parameterName === 'cubeMap') {\n\t\t\t\t\t\tconst prefiltered = textures.slice(1);\n\t\t\t\t\t\tif (prefiltered.every((t)=>t)) {\n\t\t\t\t\t\t\t\tmaterialAsset.resource.prefilteredCubemaps = prefiltered;\n\t\t\t\t\t\t} else if (prefiltered[0]) {\n\t\t\t\t\t\t\t\tmaterialAsset.resource.envAtlas = prefiltered[0];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onCubemapLoad(parameterName, materialAsset, cubemapAsset) {\n\t\t\t\tthis._assignCubemap(parameterName, materialAsset, cubemapAsset.resources);\n\t\t\t\tthis._parser.initialize(materialAsset.resource, materialAsset.data);\n\t\t}\n\t\t_onCubemapAdd(parameterName, materialAsset, cubemapAsset) {\n\t\t\t\tthis._assets.load(cubemapAsset);\n\t\t}\n\t\t_onCubemapRemoveOrUnload(parameterName, materialAsset, cubemapAsset) {\n\t\t\t\tconst material = materialAsset.resource;\n\t\t\t\tif (materialAsset.data.prefilteredCubeMap128 === cubemapAsset.resources[1]) {\n\t\t\t\t\t\tthis._assignCubemap(parameterName, materialAsset, [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tmaterial.update();\n\t\t\t\t}\n\t\t}\n\t\t_bindAndAssignAssets(materialAsset, assets) {\n\t\t\t\tconst data = this._parser.migrate(materialAsset.data);\n\t\t\t\tconst material = materialAsset.resource;\n\t\t\t\tconst pathMapping = data.mappingFormat === 'path';\n\t\t\t\tconst TEXTURES = standardMaterialTextureParameters;\n\t\t\t\tlet i, name, assetReference;\n\t\t\t\tfor(i = 0; i < TEXTURES.length; i++){\n\t\t\t\t\t\tname = TEXTURES[i];\n\t\t\t\t\t\tassetReference = material._assetReferences[name];\n\t\t\t\t\t\tconst dataAssetId = data[name];\n\t\t\t\t\t\tconst materialTexture = material[name];\n\t\t\t\t\t\tconst isPlaceHolderTexture = materialTexture === this._getPlaceholderTexture(name);\n\t\t\t\t\t\tconst dataValidated = data.validated;\n\t\t\t\t\t\tif (dataAssetId && (!materialTexture || !dataValidated || isPlaceHolderTexture)) {\n\t\t\t\t\t\t\t\tif (!assetReference) {\n\t\t\t\t\t\t\t\t\t\tassetReference = new AssetReference(name, materialAsset, assets, {\n\t\t\t\t\t\t\t\t\t\t\t\tload: this._onTextureLoad,\n\t\t\t\t\t\t\t\t\t\t\t\tadd: this._onTextureAdd,\n\t\t\t\t\t\t\t\t\t\t\t\tremove: this._onTextureRemoveOrUnload,\n\t\t\t\t\t\t\t\t\t\t\t\tunload: this._onTextureRemoveOrUnload\n\t\t\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\t\t\tmaterial._assetReferences[name] = assetReference;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pathMapping) {\n\t\t\t\t\t\t\t\t\t\tassetReference.url = materialAsset.getAbsoluteUrl(dataAssetId);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tassetReference.id = dataAssetId;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (assetReference.asset) {\n\t\t\t\t\t\t\t\t\t\tif (assetReference.asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._assignTexture(name, materialAsset, assetReference.asset.resource);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._assignPlaceholderTexture(name, materialAsset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tassets.load(assetReference.asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (assetReference) {\n\t\t\t\t\t\t\t\t\t\tif (pathMapping) {\n\t\t\t\t\t\t\t\t\t\t\t\tassetReference.url = null;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tassetReference.id = null;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst CUBEMAPS = standardMaterialCubemapParameters;\n\t\t\t\tfor(i = 0; i < CUBEMAPS.length; i++){\n\t\t\t\t\t\tname = CUBEMAPS[i];\n\t\t\t\t\t\tassetReference = material._assetReferences[name];\n\t\t\t\t\t\tif (data[name] && !materialAsset.data.prefilteredCubeMap128) {\n\t\t\t\t\t\t\t\tif (!assetReference) {\n\t\t\t\t\t\t\t\t\t\tassetReference = new AssetReference(name, materialAsset, assets, {\n\t\t\t\t\t\t\t\t\t\t\t\tload: this._onCubemapLoad,\n\t\t\t\t\t\t\t\t\t\t\t\tadd: this._onCubemapAdd,\n\t\t\t\t\t\t\t\t\t\t\t\tremove: this._onCubemapRemoveOrUnload,\n\t\t\t\t\t\t\t\t\t\t\t\tunload: this._onCubemapRemoveOrUnload\n\t\t\t\t\t\t\t\t\t\t}, this);\n\t\t\t\t\t\t\t\t\t\tmaterial._assetReferences[name] = assetReference;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pathMapping) {\n\t\t\t\t\t\t\t\t\t\tassetReference.url = data[name];\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tassetReference.id = data[name];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (assetReference.asset) {\n\t\t\t\t\t\t\t\t\t\tif (assetReference.asset.loaded) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._assignCubemap(name, materialAsset, assetReference.asset.resources);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tassets.load(assetReference.asset);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._parser.initialize(material, data);\n\t\t}\n}\n\nclass GlbModelParser {\n\t\tconstructor(modelHandler){\n\t\t\t\tthis._device = modelHandler.device;\n\t\t\t\tthis._defaultMaterial = modelHandler.defaultMaterial;\n\t\t\t\tthis._assets = modelHandler.assets;\n\t\t}\n\t\tparse(data, callback, asset) {\n\t\t\t\tGlbParser.parse('filename.glb', '', data, this._device, this._assets, asset?.options ?? {}, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst model = GlbContainerResource.createModel(result, this._defaultMaterial);\n\t\t\t\t\t\t\t\tresult.destroy();\n\t\t\t\t\t\t\t\tcallback(null, model);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n\nconst JSON_PRIMITIVE_TYPE = {\n\t\t'points': PRIMITIVE_POINTS,\n\t\t'lines': PRIMITIVE_LINES,\n\t\t'lineloop': PRIMITIVE_LINELOOP,\n\t\t'linestrip': PRIMITIVE_LINESTRIP,\n\t\t'triangles': PRIMITIVE_TRIANGLES,\n\t\t'trianglestrip': PRIMITIVE_TRISTRIP,\n\t\t'trianglefan': PRIMITIVE_TRIFAN\n};\nconst JSON_VERTEX_ELEMENT_TYPE = {\n\t\t'int8': TYPE_INT8,\n\t\t'uint8': TYPE_UINT8,\n\t\t'int16': TYPE_INT16,\n\t\t'uint16': TYPE_UINT16,\n\t\t'int32': TYPE_INT32,\n\t\t'uint32': TYPE_UINT32,\n\t\t'float32': TYPE_FLOAT32\n};\nclass JsonModelParser {\n\t\tconstructor(modelHandler){\n\t\t\t\tthis._device = modelHandler.device;\n\t\t\t\tthis._defaultMaterial = modelHandler.defaultMaterial;\n\t\t}\n\t\tparse(data, callback) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tif (!modelData) {\n\t\t\t\t\t\tcallback(null, null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (modelData.version <= 1) {\n\t\t\t\t\t\tcallback('JsonModelParser#parse: Trying to parse unsupported model format.');\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst nodes = this._parseNodes(data);\n\t\t\t\tconst skins = this._parseSkins(data, nodes);\n\t\t\t\tconst vertexBuffers = this._parseVertexBuffers(data);\n\t\t\t\tconst indices = this._parseIndexBuffers(data, vertexBuffers);\n\t\t\t\tconst morphs = this._parseMorphs(data, nodes, vertexBuffers);\n\t\t\t\tconst meshes = this._parseMeshes(data, skins.skins, morphs.morphs, vertexBuffers, indices.buffer, indices.data);\n\t\t\t\tconst meshInstances = this._parseMeshInstances(data, nodes, meshes, skins.skins, skins.instances, morphs.morphs, morphs.instances);\n\t\t\t\tconst model = new Model();\n\t\t\t\tmodel.graph = nodes[0];\n\t\t\t\tmodel.meshInstances = meshInstances;\n\t\t\t\tmodel.skinInstances = skins.instances;\n\t\t\t\tmodel.morphInstances = morphs.instances;\n\t\t\t\tmodel.getGraph().syncHierarchy();\n\t\t\t\tcallback(null, model);\n\t\t}\n\t\t_parseNodes(data) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst nodes = [];\n\t\t\t\tlet i;\n\t\t\t\tfor(i = 0; i < modelData.nodes.length; i++){\n\t\t\t\t\t\tconst nodeData = modelData.nodes[i];\n\t\t\t\t\t\tconst node = new GraphNode(nodeData.name);\n\t\t\t\t\t\tnode.setLocalPosition(nodeData.position[0], nodeData.position[1], nodeData.position[2]);\n\t\t\t\t\t\tnode.setLocalEulerAngles(nodeData.rotation[0], nodeData.rotation[1], nodeData.rotation[2]);\n\t\t\t\t\t\tnode.setLocalScale(nodeData.scale[0], nodeData.scale[1], nodeData.scale[2]);\n\t\t\t\t\t\tnode.scaleCompensation = !!nodeData.scaleCompensation;\n\t\t\t\t\t\tnodes.push(node);\n\t\t\t\t}\n\t\t\t\tfor(i = 1; i < modelData.parents.length; i++){\n\t\t\t\t\t\tnodes[modelData.parents[i]].addChild(nodes[i]);\n\t\t\t\t}\n\t\t\t\treturn nodes;\n\t\t}\n\t\t_parseSkins(data, nodes) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst skins = [];\n\t\t\t\tconst skinInstances = [];\n\t\t\t\tlet i, j;\n\t\t\t\tfor(i = 0; i < modelData.skins.length; i++){\n\t\t\t\t\t\tconst skinData = modelData.skins[i];\n\t\t\t\t\t\tconst inverseBindMatrices = [];\n\t\t\t\t\t\tfor(j = 0; j < skinData.inverseBindMatrices.length; j++){\n\t\t\t\t\t\t\t\tconst ibm = skinData.inverseBindMatrices[j];\n\t\t\t\t\t\t\t\tinverseBindMatrices[j] = new Mat4().set(ibm);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst skin = new Skin(this._device, inverseBindMatrices, skinData.boneNames);\n\t\t\t\t\t\tskins.push(skin);\n\t\t\t\t\t\tconst skinInstance = new SkinInstance(skin);\n\t\t\t\t\t\tconst bones = [];\n\t\t\t\t\t\tfor(j = 0; j < skin.boneNames.length; j++){\n\t\t\t\t\t\t\t\tconst boneName = skin.boneNames[j];\n\t\t\t\t\t\t\t\tconst bone = nodes[0].findByName(boneName);\n\t\t\t\t\t\t\t\tbones.push(bone);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tskinInstance.bones = bones;\n\t\t\t\t\t\tskinInstances.push(skinInstance);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tskins: skins,\n\t\t\t\t\t\tinstances: skinInstances\n\t\t\t\t};\n\t\t}\n\t\t_getMorphVertexCount(modelData, morphIndex, vertexBuffers) {\n\t\t\t\tfor(let i = 0; i < modelData.meshes.length; i++){\n\t\t\t\t\t\tconst meshData = modelData.meshes[i];\n\t\t\t\t\t\tif (meshData.morph === morphIndex) {\n\t\t\t\t\t\t\t\tconst vertexBuffer = vertexBuffers[meshData.vertices];\n\t\t\t\t\t\t\t\treturn vertexBuffer.numVertices;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn undefined;\n\t\t}\n\t\t_parseMorphs(data, nodes, vertexBuffers) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst morphs = [];\n\t\t\t\tconst morphInstances = [];\n\t\t\t\tlet i, j, vertexCount;\n\t\t\t\tlet targets, morphTarget, morphTargetArray;\n\t\t\t\tif (modelData.morphs) {\n\t\t\t\t\t\tconst sparseToFull = function(data, indices, totalCount) {\n\t\t\t\t\t\t\t\tconst full = new Float32Array(totalCount * 3);\n\t\t\t\t\t\t\t\tfor(let s = 0; s < indices.length; s++){\n\t\t\t\t\t\t\t\t\t\tconst dstIndex = indices[s] * 3;\n\t\t\t\t\t\t\t\t\t\tfull[dstIndex] = data[s * 3];\n\t\t\t\t\t\t\t\t\t\tfull[dstIndex + 1] = data[s * 3 + 1];\n\t\t\t\t\t\t\t\t\t\tfull[dstIndex + 2] = data[s * 3 + 2];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn full;\n\t\t\t\t\t\t};\n\t\t\t\t\t\tfor(i = 0; i < modelData.morphs.length; i++){\n\t\t\t\t\t\t\t\ttargets = modelData.morphs[i].targets;\n\t\t\t\t\t\t\t\tmorphTargetArray = [];\n\t\t\t\t\t\t\t\tvertexCount = this._getMorphVertexCount(modelData, i, vertexBuffers);\n\t\t\t\t\t\t\t\tfor(j = 0; j < targets.length; j++){\n\t\t\t\t\t\t\t\t\t\tconst targetAabb = targets[j].aabb;\n\t\t\t\t\t\t\t\t\t\tconst min = targetAabb.min;\n\t\t\t\t\t\t\t\t\t\tconst max = targetAabb.max;\n\t\t\t\t\t\t\t\t\t\tconst aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n\t\t\t\t\t\t\t\t\t\tconst indices = targets[j].indices;\n\t\t\t\t\t\t\t\t\t\tlet deltaPositions = targets[j].deltaPositions;\n\t\t\t\t\t\t\t\t\t\tlet deltaNormals = targets[j].deltaNormals;\n\t\t\t\t\t\t\t\t\t\tif (indices) {\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaPositions = sparseToFull(deltaPositions, indices, vertexCount);\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaNormals = sparseToFull(deltaNormals, indices, vertexCount);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tmorphTarget = new MorphTarget({\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaPositions: deltaPositions,\n\t\t\t\t\t\t\t\t\t\t\t\tdeltaNormals: deltaNormals,\n\t\t\t\t\t\t\t\t\t\t\t\tname: targets[j].name,\n\t\t\t\t\t\t\t\t\t\t\t\taabb: aabb\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\tmorphTargetArray.push(morphTarget);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst morph = new Morph(morphTargetArray, this._device);\n\t\t\t\t\t\t\t\tmorphs.push(morph);\n\t\t\t\t\t\t\t\tconst morphInstance = new MorphInstance(morph);\n\t\t\t\t\t\t\t\tmorphInstances.push(morphInstance);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tmorphs: morphs,\n\t\t\t\t\t\tinstances: morphInstances\n\t\t\t\t};\n\t\t}\n\t\t_parseVertexBuffers(data) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst vertexBuffers = [];\n\t\t\t\tconst attributeMap = {\n\t\t\t\t\t\tposition: SEMANTIC_POSITION,\n\t\t\t\t\t\tnormal: SEMANTIC_NORMAL,\n\t\t\t\t\t\ttangent: SEMANTIC_TANGENT,\n\t\t\t\t\t\tblendWeight: SEMANTIC_BLENDWEIGHT,\n\t\t\t\t\t\tblendIndices: SEMANTIC_BLENDINDICES,\n\t\t\t\t\t\tcolor: SEMANTIC_COLOR,\n\t\t\t\t\t\ttexCoord0: SEMANTIC_TEXCOORD0,\n\t\t\t\t\t\ttexCoord1: SEMANTIC_TEXCOORD1,\n\t\t\t\t\t\ttexCoord2: SEMANTIC_TEXCOORD2,\n\t\t\t\t\t\ttexCoord3: SEMANTIC_TEXCOORD3,\n\t\t\t\t\t\ttexCoord4: SEMANTIC_TEXCOORD4,\n\t\t\t\t\t\ttexCoord5: SEMANTIC_TEXCOORD5,\n\t\t\t\t\t\ttexCoord6: SEMANTIC_TEXCOORD6,\n\t\t\t\t\t\ttexCoord7: SEMANTIC_TEXCOORD7\n\t\t\t\t};\n\t\t\t\tfor(let i = 0; i < modelData.vertices.length; i++){\n\t\t\t\t\t\tconst vertexData = modelData.vertices[i];\n\t\t\t\t\t\tconst formatDesc = [];\n\t\t\t\t\t\tfor(const attributeName in vertexData){\n\t\t\t\t\t\t\t\tconst attribute = vertexData[attributeName];\n\t\t\t\t\t\t\t\tformatDesc.push({\n\t\t\t\t\t\t\t\t\t\tsemantic: attributeMap[attributeName],\n\t\t\t\t\t\t\t\t\t\tcomponents: attribute.components,\n\t\t\t\t\t\t\t\t\t\ttype: JSON_VERTEX_ELEMENT_TYPE[attribute.type],\n\t\t\t\t\t\t\t\t\t\tnormalize: attributeMap[attributeName] === SEMANTIC_COLOR\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst vertexFormat = new VertexFormat(this._device, formatDesc);\n\t\t\t\t\t\tconst numVertices = vertexData.position.data.length / vertexData.position.components;\n\t\t\t\t\t\tconst vertexBuffer = new VertexBuffer(this._device, vertexFormat, numVertices);\n\t\t\t\t\t\tconst iterator = new VertexIterator(vertexBuffer);\n\t\t\t\t\t\tfor(let j = 0; j < numVertices; j++){\n\t\t\t\t\t\t\t\tfor(const attributeName in vertexData){\n\t\t\t\t\t\t\t\t\t\tconst attribute = vertexData[attributeName];\n\t\t\t\t\t\t\t\t\t\tswitch(attribute.components){\n\t\t\t\t\t\t\t\t\t\t\t\tcase 1:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 2:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 2], 1.0 - attribute.data[j * 2 + 1]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 3:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 3], attribute.data[j * 3 + 1], attribute.data[j * 3 + 2]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase 4:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\titerator.element[attributeMap[attributeName]].set(attribute.data[j * 4], attribute.data[j * 4 + 1], attribute.data[j * 4 + 2], attribute.data[j * 4 + 3]);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\titerator.next();\n\t\t\t\t\t\t}\n\t\t\t\t\t\titerator.end();\n\t\t\t\t\t\tvertexBuffers.push(vertexBuffer);\n\t\t\t\t}\n\t\t\t\treturn vertexBuffers;\n\t\t}\n\t\t_parseIndexBuffers(data, vertexBuffers) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tlet indexBuffer = null;\n\t\t\t\tlet indexData = null;\n\t\t\t\tlet i;\n\t\t\t\tlet numIndices = 0;\n\t\t\t\tfor(i = 0; i < modelData.meshes.length; i++){\n\t\t\t\t\t\tconst meshData = modelData.meshes[i];\n\t\t\t\t\t\tif (meshData.indices !== undefined) {\n\t\t\t\t\t\t\t\tnumIndices += meshData.indices.length;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet maxVerts = 0;\n\t\t\t\tfor(i = 0; i < vertexBuffers.length; i++){\n\t\t\t\t\t\tmaxVerts = Math.max(maxVerts, vertexBuffers[i].numVertices);\n\t\t\t\t}\n\t\t\t\tif (numIndices > 0) {\n\t\t\t\t\t\tif (maxVerts > 0xFFFF) {\n\t\t\t\t\t\t\t\tindexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT32, numIndices);\n\t\t\t\t\t\t\t\tindexData = new Uint32Array(indexBuffer.lock());\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tindexBuffer = new IndexBuffer(this._device, INDEXFORMAT_UINT16, numIndices);\n\t\t\t\t\t\t\t\tindexData = new Uint16Array(indexBuffer.lock());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tbuffer: indexBuffer,\n\t\t\t\t\t\tdata: indexData\n\t\t\t\t};\n\t\t}\n\t\t_parseMeshes(data, skins, morphs, vertexBuffers, indexBuffer, indexData) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst meshes = [];\n\t\t\t\tlet indexBase = 0;\n\t\t\t\tfor(let i = 0; i < modelData.meshes.length; i++){\n\t\t\t\t\t\tconst meshData = modelData.meshes[i];\n\t\t\t\t\t\tconst meshAabb = meshData.aabb;\n\t\t\t\t\t\tconst min = meshAabb.min;\n\t\t\t\t\t\tconst max = meshAabb.max;\n\t\t\t\t\t\tconst aabb = new BoundingBox(new Vec3((max[0] + min[0]) * 0.5, (max[1] + min[1]) * 0.5, (max[2] + min[2]) * 0.5), new Vec3((max[0] - min[0]) * 0.5, (max[1] - min[1]) * 0.5, (max[2] - min[2]) * 0.5));\n\t\t\t\t\t\tconst indexed = meshData.indices !== undefined;\n\t\t\t\t\t\tconst mesh = new Mesh(this._device);\n\t\t\t\t\t\tmesh.vertexBuffer = vertexBuffers[meshData.vertices];\n\t\t\t\t\t\tmesh.indexBuffer[0] = indexed ? indexBuffer : null;\n\t\t\t\t\t\tmesh.primitive[0].type = JSON_PRIMITIVE_TYPE[meshData.type];\n\t\t\t\t\t\tmesh.primitive[0].base = indexed ? meshData.base + indexBase : meshData.base;\n\t\t\t\t\t\tmesh.primitive[0].count = meshData.count;\n\t\t\t\t\t\tmesh.primitive[0].indexed = indexed;\n\t\t\t\t\t\tmesh.skin = meshData.skin !== undefined ? skins[meshData.skin] : null;\n\t\t\t\t\t\tmesh.morph = meshData.morph !== undefined ? morphs[meshData.morph] : null;\n\t\t\t\t\t\tmesh.aabb = aabb;\n\t\t\t\t\t\tif (indexed) {\n\t\t\t\t\t\t\t\tindexData.set(meshData.indices, indexBase);\n\t\t\t\t\t\t\t\tindexBase += meshData.indices.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshes.push(mesh);\n\t\t\t\t}\n\t\t\t\tif (indexBuffer !== null) {\n\t\t\t\t\t\tindexBuffer.unlock();\n\t\t\t\t}\n\t\t\t\treturn meshes;\n\t\t}\n\t\t_parseMeshInstances(data, nodes, meshes, skins, skinInstances, morphs, morphInstances) {\n\t\t\t\tconst modelData = data.model;\n\t\t\t\tconst meshInstances = [];\n\t\t\t\tlet i;\n\t\t\t\tfor(i = 0; i < modelData.meshInstances.length; i++){\n\t\t\t\t\t\tconst meshInstanceData = modelData.meshInstances[i];\n\t\t\t\t\t\tconst node = nodes[meshInstanceData.node];\n\t\t\t\t\t\tconst mesh = meshes[meshInstanceData.mesh];\n\t\t\t\t\t\tconst meshInstance = new MeshInstance(mesh, this._defaultMaterial, node);\n\t\t\t\t\t\tif (mesh.skin) {\n\t\t\t\t\t\t\t\tconst skinIndex = skins.indexOf(mesh.skin);\n\t\t\t\t\t\t\t\tmeshInstance.skinInstance = skinInstances[skinIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (mesh.morph) {\n\t\t\t\t\t\t\t\tconst morphIndex = morphs.indexOf(mesh.morph);\n\t\t\t\t\t\t\t\tmeshInstance.morphInstance = morphInstances[morphIndex];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmeshInstances.push(meshInstance);\n\t\t\t\t}\n\t\t\t\treturn meshInstances;\n\t\t}\n}\n\nclass ModelHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'model');\n\t\t\t\tthis._parsers = [];\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.assets = app.assets;\n\t\t\t\tthis.defaultMaterial = getDefaultMaterial(this.device);\n\t\t\t\tthis.addParser(new JsonModelParser(this), (url, data)=>{\n\t\t\t\t\t\treturn path.getExtension(url) === '.json';\n\t\t\t\t});\n\t\t\t\tthis.addParser(new GlbModelParser(this), (url, data)=>{\n\t\t\t\t\t\treturn path.getExtension(url) === '.glb';\n\t\t\t\t});\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\tif (url.load.startsWith('blob:') || url.load.startsWith('data:')) {\n\t\t\t\t\t\tif (path.getExtension(url.original).toLowerCase() === '.glb') {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.ARRAY_BUFFER;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\toptions.responseType = Http.ResponseType.JSON;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (!callback) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < this._parsers.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst p = this._parsers[i];\n\t\t\t\t\t\t\t\t\t\tif (p.decider(url.original, response)) {\n\t\t\t\t\t\t\t\t\t\t\t\tp.parser.parse(response, (err, parseResult)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, parseResult);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}, asset);\n\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcallback('No parsers found');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading model: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = asset.data;\n\t\t\t\tconst self = this;\n\t\t\t\tasset.resource.meshInstances.forEach((meshInstance, i)=>{\n\t\t\t\t\t\tif (data.mapping) {\n\t\t\t\t\t\t\t\tconst handleMaterial = function(asset) {\n\t\t\t\t\t\t\t\t\t\tif (asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material = asset.resource;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.once('load', handleMaterial);\n\t\t\t\t\t\t\t\t\t\t\t\tassets.load(asset);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tasset.once('remove', (asset)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstance.material === asset.resource) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (!data.mapping[i]) {\n\t\t\t\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst id = data.mapping[i].material;\n\t\t\t\t\t\t\t\tconst url = data.mapping[i].path;\n\t\t\t\t\t\t\t\tlet material;\n\t\t\t\t\t\t\t\tif (id !== undefined) {\n\t\t\t\t\t\t\t\t\t\tif (!id) {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstance.material = self.defaultMaterial;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tmaterial = assets.get(id);\n\t\t\t\t\t\t\t\t\t\t\t\tif (material) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\thandleMaterial(material);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tassets.once(`add:${id}`, handleMaterial);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (url) {\n\t\t\t\t\t\t\t\t\t\tconst path = asset.getAbsoluteUrl(data.mapping[i].path);\n\t\t\t\t\t\t\t\t\t\tmaterial = assets.getByUrl(path);\n\t\t\t\t\t\t\t\t\t\tif (material) {\n\t\t\t\t\t\t\t\t\t\t\t\thandleMaterial(material);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tassets.once(`add:url:${path}`, handleMaterial);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\taddParser(parser, decider) {\n\t\t\t\tthis._parsers.push({\n\t\t\t\t\t\tparser: parser,\n\t\t\t\t\t\tdecider: decider\n\t\t\t\t});\n\t\t}\n}\n\nclass SceneHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'scene');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tSceneUtils.load(url, this.maxRetries, callback);\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tthis._app.systems.script.preloading = true;\n\t\t\t\tconst parser = new SceneParser(this._app, false);\n\t\t\t\tconst parent = parser.parse(data);\n\t\t\t\tconst scene = this._app.scene;\n\t\t\t\tscene.root = parent;\n\t\t\t\tthis._app.applySceneSettings(data.settings);\n\t\t\t\tthis._app.systems.script.preloading = false;\n\t\t\t\treturn scene;\n\t\t}\n}\n\nclass ScriptTypes {\n\t\tstatic{\n\t\t\t\tthis._types = [];\n\t\t}\n\t\tstatic push(Type) {\n\t\t\t\tScriptTypes._types.push(Type);\n\t\t}\n}\n\nconst reservedScriptNames = new Set([\n\t\t'system',\n\t\t'entity',\n\t\t'create',\n\t\t'destroy',\n\t\t'swap',\n\t\t'move',\n\t\t'data',\n\t\t\"scripts\",\n\t\t\"_scripts\",\n\t\t\"_scriptsIndex\",\n\t\t\"_scriptsData\",\n\t\t'enabled',\n\t\t'_oldState',\n\t\t'onEnable',\n\t\t'onDisable',\n\t\t'onPostStateChange',\n\t\t'_onSetEnabled',\n\t\t'_checkState',\n\t\t'_onBeforeRemove',\n\t\t'_onInitializeAttributes',\n\t\t'_onInitialize',\n\t\t'_onPostInitialize',\n\t\t'_onUpdate',\n\t\t'_onPostUpdate',\n\t\t'_callbacks',\n\t\t'_callbackActive',\n\t\t'has',\n\t\t'get',\n\t\t'on',\n\t\t'off',\n\t\t'fire',\n\t\t'once',\n\t\t'hasEvent'\n]);\nfunction getReservedScriptNames() {\n\t\treturn reservedScriptNames;\n}\nfunction createScript(name, app) {\n\t\tif (reservedScriptNames.has(name)) {\n\t\t\t\tthrow new Error(`Script name '${name}' is reserved, please rename the script`);\n\t\t}\n\t\tconst scriptType = function(args) {\n\t\t\t\tEventHandler.prototype.initEventHandler.call(this);\n\t\t\t\tScriptType.prototype.initScriptType.call(this, args);\n\t\t};\n\t\tscriptType.prototype = Object.create(ScriptType.prototype);\n\t\tscriptType.prototype.constructor = scriptType;\n\t\tscriptType.extend = ScriptType.extend;\n\t\tscriptType.attributes = new ScriptAttributes(scriptType);\n\t\tregisterScript(scriptType, name, app);\n\t\treturn scriptType;\n}\nconst reservedAttributes = {};\nScriptAttributes.reservedNames.forEach((value, value2, set)=>{\n\t\treservedAttributes[value] = 1;\n});\ncreateScript.reservedAttributes = reservedAttributes;\nfunction registerScript(script, name, app) {\n\t\tif (typeof script !== 'function') {\n\t\t\t\tthrow new Error(`script class: '${script}' must be a constructor function (i.e. class).`);\n\t\t}\n\t\tif (!(script.prototype instanceof Script)) {\n\t\t\t\tthrow new Error(`script class: '${ScriptType.__getScriptName(script)}' does not extend pc.Script.`);\n\t\t}\n\t\tname = name || script.__name || ScriptType.__getScriptName(script);\n\t\tif (reservedScriptNames.has(name)) {\n\t\t\t\tthrow new Error(`script name: '${name}' is reserved, please change script name`);\n\t\t}\n\t\tscript.__name = name;\n\t\tconst registry = app ? app.scripts : AppBase.getApplication().scripts;\n\t\tregistry.add(script);\n\t\tScriptTypes.push(script);\n}\n\nconst toLowerCamelCase = (str)=>str[0].toLowerCase() + str.substring(1);\nclass ScriptHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, \"script\");\n\t\t\t\tthis._scripts = {};\n\t\t\t\tthis._cache = {};\n\t\t}\n\t\tclearCache() {\n\t\t\t\tfor(const key in this._cache){\n\t\t\t\t\t\tconst element = this._cache[key];\n\t\t\t\t\t\tconst parent = element.parentNode;\n\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\t\tparent.removeChild(element);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._cache = {};\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tscript.app = this._app;\n\t\t\t\tconst onScriptLoad = (url.load, (err, url, extra)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tconst obj = {};\n\t\t\t\t\t\t\t\tfor(let i = 0; i < ScriptTypes._types.length; i++){\n\t\t\t\t\t\t\t\t\t\tobj[ScriptTypes._types[i].name] = ScriptTypes._types[i];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tScriptTypes._types.length = 0;\n\t\t\t\t\t\t\t\tcallback(null, obj, extra);\n\t\t\t\t\t\t\t\tconst urlWithoutEndHash = url.split('&hash=')[0];\n\t\t\t\t\t\t\t\tdelete self._loader._cache[ResourceLoader.makeKey(urlWithoutEndHash, \"script\")];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst [basePath] = url.load.split('?');\n\t\t\t\tconst isEsmScript = basePath.endsWith('.mjs');\n\t\t\t\tif (isEsmScript) {\n\t\t\t\t\t\tthis._loadModule(basePath, onScriptLoad);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._loadScript(url.load, onScriptLoad);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data;\n\t\t}\n\t\tpatch(asset, assets) {}\n\t\t_loadScript(url, callback) {\n\t\t\t\tconst head = document.head;\n\t\t\t\tconst element = document.createElement(\"script\");\n\t\t\t\tthis._cache[url] = element;\n\t\t\t\telement.async = false;\n\t\t\t\telement.addEventListener('error', (e)=>{\n\t\t\t\t\t\tcallback(`Script: ${e.target.src} failed to load`);\n\t\t\t\t}, false);\n\t\t\t\tlet done = false;\n\t\t\t\telement.onload = element.onreadystatechange = function() {\n\t\t\t\t\t\tif (!done && (!this.readyState || this.readyState === 'loaded' || this.readyState === 'complete')) {\n\t\t\t\t\t\t\t\tdone = true;\n\t\t\t\t\t\t\t\tcallback(null, url, element);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\telement.src = url;\n\t\t\t\thead.appendChild(element);\n\t\t}\n\t\t_loadModule(url, callback) {\n\t\t\t\tconst isBrowserWithOrigin = platform.browser && window.location.origin !== 'null';\n\t\t\t\tconst baseUrl = isBrowserWithOrigin ? window.location.origin + window.location.pathname : import.meta.url;\n\t\t\t\tconst importUrl = new URL(url, baseUrl);\n\t\t\t\timport(/* @vite-ignore */ /* webpackIgnore: true */ importUrl.toString()).then((module)=>{\n\t\t\t\t\t\tconst filename = importUrl.pathname.split('/').pop();\n\t\t\t\t\t\tconst scriptSchema = this._app.assets.find(filename, \"script\")?.data?.scripts;\n\t\t\t\t\t\tfor(const key in module){\n\t\t\t\t\t\t\t\tconst scriptClass = module[key];\n\t\t\t\t\t\t\t\tconst extendsScriptType = scriptClass.prototype instanceof Script;\n\t\t\t\t\t\t\t\tif (extendsScriptType) {\n\t\t\t\t\t\t\t\t\t\tconst lowerCamelCaseName = toLowerCamelCase(scriptClass.name);\n\t\t\t\t\t\t\t\t\t\tif (!scriptClass.scriptName) ;\n\t\t\t\t\t\t\t\t\t\tconst scriptName = scriptClass.scriptName ?? lowerCamelCaseName;\n\t\t\t\t\t\t\t\t\t\tregisterScript(scriptClass, scriptName);\n\t\t\t\t\t\t\t\t\t\tif (scriptSchema) this._app.scripts.addSchema(scriptName, scriptSchema[scriptName]);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcallback(null, url, null);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tcallback(err);\n\t\t\t\t});\n\t\t}\n}\n\nclass ShaderHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'shader'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading shader resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nfunction onTextureAtlasLoaded(atlasAsset) {\n\t\tconst spriteAsset = this;\n\t\tif (spriteAsset.resource) {\n\t\t\t\tspriteAsset.resource.atlas = atlasAsset.resource;\n\t\t}\n}\nfunction onTextureAtlasAdded(atlasAsset) {\n\t\tconst spriteAsset = this;\n\t\tspriteAsset.registry.load(atlasAsset);\n}\nclass SpriteHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'sprite');\n\t\t\t\tthis._assets = app.assets;\n\t\t\t\tthis._device = app.graphicsDevice;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (path.getExtension(url.original) === '.json') {\n\t\t\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\topen(url, data) {\n\t\t\t\tconst sprite = new Sprite(this._device);\n\t\t\t\tif (url) {\n\t\t\t\t\t\tsprite.__data = data;\n\t\t\t\t}\n\t\t\t\treturn sprite;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst sprite = asset.resource;\n\t\t\t\tif (sprite.__data) {\n\t\t\t\t\t\tasset.data.pixelsPerUnit = sprite.__data.pixelsPerUnit;\n\t\t\t\t\t\tasset.data.renderMode = sprite.__data.renderMode;\n\t\t\t\t\t\tasset.data.frameKeys = sprite.__data.frameKeys;\n\t\t\t\t\t\tif (sprite.__data.textureAtlasAsset) {\n\t\t\t\t\t\t\t\tconst atlas = assets.getByUrl(sprite.__data.textureAtlasAsset);\n\t\t\t\t\t\t\t\tif (atlas) {\n\t\t\t\t\t\t\t\t\t\tasset.data.textureAtlasAsset = atlas.id;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconsole.warn(`Could not find textureatlas with url: ${sprite.__data.textureAtlasAsset}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tsprite.startUpdate();\n\t\t\t\tsprite.renderMode = asset.data.renderMode;\n\t\t\t\tsprite.pixelsPerUnit = asset.data.pixelsPerUnit;\n\t\t\t\tsprite.frameKeys = asset.data.frameKeys;\n\t\t\t\tthis._updateAtlas(asset);\n\t\t\t\tsprite.endUpdate();\n\t\t\t\tasset.off('change', this._onAssetChange, this);\n\t\t\t\tasset.on('change', this._onAssetChange, this);\n\t\t}\n\t\t_updateAtlas(asset) {\n\t\t\t\tconst sprite = asset.resource;\n\t\t\t\tif (!asset.data.textureAtlasAsset) {\n\t\t\t\t\t\tsprite.atlas = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._assets.off(`load:${asset.data.textureAtlasAsset}`, onTextureAtlasLoaded, asset);\n\t\t\t\tthis._assets.on(`load:${asset.data.textureAtlasAsset}`, onTextureAtlasLoaded, asset);\n\t\t\t\tconst atlasAsset = this._assets.get(asset.data.textureAtlasAsset);\n\t\t\t\tif (atlasAsset && atlasAsset.resource) {\n\t\t\t\t\t\tsprite.atlas = atlasAsset.resource;\n\t\t\t\t} else {\n\t\t\t\t\t\tif (!atlasAsset) {\n\t\t\t\t\t\t\t\tthis._assets.off(`add:${asset.data.textureAtlasAsset}`, onTextureAtlasAdded, asset);\n\t\t\t\t\t\t\t\tthis._assets.on(`add:${asset.data.textureAtlasAsset}`, onTextureAtlasAdded, asset);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._assets.load(atlasAsset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onAssetChange(asset, attribute, value, oldValue) {\n\t\t\t\tif (attribute === 'data') {\n\t\t\t\t\t\tif (value && value.textureAtlasAsset && oldValue && value.textureAtlasAsset !== oldValue.textureAtlasAsset) {\n\t\t\t\t\t\t\t\tthis._assets.off(`load:${oldValue.textureAtlasAsset}`, onTextureAtlasLoaded, asset);\n\t\t\t\t\t\t\t\tthis._assets.off(`add:${oldValue.textureAtlasAsset}`, onTextureAtlasAdded, asset);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nclass Template {\n\t\tconstructor(app, data){\n\t\t\t\tthis._templateRoot = null;\n\t\t\t\tthis._app = app;\n\t\t\t\tthis._data = data;\n\t\t}\n\t\tinstantiate() {\n\t\t\t\tif (!this._templateRoot) {\n\t\t\t\t\t\tthis._parseTemplate();\n\t\t\t\t}\n\t\t\t\treturn this._templateRoot.clone();\n\t\t}\n\t\t_parseTemplate() {\n\t\t\t\tconst parser = new SceneParser(this._app, true);\n\t\t\t\tthis._templateRoot = parser.parse(this._data);\n\t\t}\n\t\tset data(value) {\n\t\t\t\tthis._data = value;\n\t\t\t\tthis._templateRoot = null;\n\t\t}\n\t\tget data() {\n\t\t\t\treturn this._data;\n\t\t}\n}\n\nclass TemplateHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'template'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst options = {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t};\n\t\t\t\thttp.get(url.load, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(`Error requesting template: ${url.original}`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(err, response);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn new Template(this._app, data);\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn new Template(this._app, JSON.parse(this.decoder.decode(data)));\n\t\t}\n\t\tpatch(asset, registry) {\n\t\t\t\tif (!asset || !asset.resource || !asset.data || !asset.data.entities) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst template = asset.resource;\n\t\t\t\ttemplate.data = asset.data;\n\t\t}\n}\n\nclass TextHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'text'), this.decoder = null;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\tcallback(null, response);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading text resource: ${url.original} [${err}]`);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\topenBinary(data) {\n\t\t\t\tthis.decoder ??= new TextDecoder('utf-8');\n\t\t\t\treturn this.decoder.decode(data);\n\t\t}\n}\n\nconst JSON_ADDRESS_MODE$1 = {\n\t\t'repeat': ADDRESS_REPEAT,\n\t\t'clamp': ADDRESS_CLAMP_TO_EDGE,\n\t\t'mirror': ADDRESS_MIRRORED_REPEAT\n};\nconst JSON_FILTER_MODE$1 = {\n\t\t'nearest': FILTER_NEAREST,\n\t\t'linear': FILTER_LINEAR,\n\t\t'nearest_mip_nearest': FILTER_NEAREST_MIPMAP_NEAREST,\n\t\t'linear_mip_nearest': FILTER_LINEAR_MIPMAP_NEAREST,\n\t\t'nearest_mip_linear': FILTER_NEAREST_MIPMAP_LINEAR,\n\t\t'linear_mip_linear': FILTER_LINEAR_MIPMAP_LINEAR\n};\nconst regexFrame = /^data\\.frames\\.(\\d+)$/;\nclass TextureAtlasHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'textureatlas');\n\t\t\t\tthis._loader = app.loader;\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst self = this;\n\t\t\t\tconst handler = this._loader.getHandler('texture');\n\t\t\t\tif (path.getExtension(url.original) === '.json') {\n\t\t\t\t\t\thttp.get(url.load, {\n\t\t\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\t\t\tmaxRetries: this.maxRetries\n\t\t\t\t\t\t}, (err, response)=>{\n\t\t\t\t\t\t\t\tif (!err) {\n\t\t\t\t\t\t\t\t\t\tconst textureUrl = url.original.replace('.json', '.png');\n\t\t\t\t\t\t\t\t\t\tself._loader.load(textureUrl, 'texture', (err, texture)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcallback(null, {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tdata: response,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\ttexture: texture\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\thandler.load(url, callback);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\tconst resource = new TextureAtlas();\n\t\t\t\tif (data.texture && data.data) {\n\t\t\t\t\t\tresource.texture = data.texture;\n\t\t\t\t\t\tresource.__data = data.data;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst handler = this._loader.getHandler('texture');\n\t\t\t\t\t\tconst texture = handler.open(url, data, asset);\n\t\t\t\t\t\tif (!texture) return null;\n\t\t\t\t\t\tresource.texture = texture;\n\t\t\t\t}\n\t\t\t\treturn resource;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tif (!asset.resource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (asset.resource.__data) {\n\t\t\t\t\t\tif (asset.resource.__data.minfilter !== undefined) asset.data.minfilter = asset.resource.__data.minfilter;\n\t\t\t\t\t\tif (asset.resource.__data.magfilter !== undefined) asset.data.magfilter = asset.resource.__data.magfilter;\n\t\t\t\t\t\tif (asset.resource.__data.addressu !== undefined) asset.data.addressu = asset.resource.__data.addressu;\n\t\t\t\t\t\tif (asset.resource.__data.addressv !== undefined) asset.data.addressv = asset.resource.__data.addressv;\n\t\t\t\t\t\tif (asset.resource.__data.mipmaps !== undefined) asset.data.mipmaps = asset.resource.__data.mipmaps;\n\t\t\t\t\t\tif (asset.resource.__data.anisotropy !== undefined) asset.data.anisotropy = asset.resource.__data.anisotropy;\n\t\t\t\t\t\tif (asset.resource.__data.rgbm !== undefined) asset.data.rgbm = !!asset.resource.__data.rgbm;\n\t\t\t\t\t\tasset.data.frames = asset.resource.__data.frames;\n\t\t\t\t\t\tdelete asset.resource.__data;\n\t\t\t\t}\n\t\t\t\tconst texture = asset.resource.texture;\n\t\t\t\tif (texture) {\n\t\t\t\t\t\ttexture.name = asset.name;\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('minfilter') && texture.minFilter !== JSON_FILTER_MODE$1[asset.data.minfilter]) {\n\t\t\t\t\t\t\t\ttexture.minFilter = JSON_FILTER_MODE$1[asset.data.minfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('magfilter') && texture.magFilter !== JSON_FILTER_MODE$1[asset.data.magfilter]) {\n\t\t\t\t\t\t\t\ttexture.magFilter = JSON_FILTER_MODE$1[asset.data.magfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('addressu') && texture.addressU !== JSON_ADDRESS_MODE$1[asset.data.addressu]) {\n\t\t\t\t\t\t\t\ttexture.addressU = JSON_ADDRESS_MODE$1[asset.data.addressu];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('addressv') && texture.addressV !== JSON_ADDRESS_MODE$1[asset.data.addressv]) {\n\t\t\t\t\t\t\t\ttexture.addressV = JSON_ADDRESS_MODE$1[asset.data.addressv];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('mipmaps') && texture.mipmaps !== asset.data.mipmaps) {\n\t\t\t\t\t\t\t\ttexture.mipmaps = asset.data.mipmaps;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('anisotropy') && texture.anisotropy !== asset.data.anisotropy) {\n\t\t\t\t\t\t\t\ttexture.anisotropy = asset.data.anisotropy;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (asset.data.hasOwnProperty('rgbm')) {\n\t\t\t\t\t\t\t\tconst type = asset.data.rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t\t\t\t\t\t\tif (texture.type !== type) {\n\t\t\t\t\t\t\t\t\t\ttexture.type = type;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tasset.resource.texture = texture;\n\t\t\t\tconst frames = {};\n\t\t\t\tfor(const key in asset.data.frames){\n\t\t\t\t\t\tconst frame = asset.data.frames[key];\n\t\t\t\t\t\tframes[key] = {\n\t\t\t\t\t\t\t\trect: new Vec4(frame.rect),\n\t\t\t\t\t\t\t\tpivot: new Vec2(frame.pivot),\n\t\t\t\t\t\t\t\tborder: new Vec4(frame.border)\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tasset.resource.frames = frames;\n\t\t\t\tasset.off('change', this._onAssetChange, this);\n\t\t\t\tasset.on('change', this._onAssetChange, this);\n\t\t}\n\t\t_onAssetChange(asset, attribute, value) {\n\t\t\t\tlet frame;\n\t\t\t\tif (attribute === 'data' || attribute === 'data.frames') {\n\t\t\t\t\t\tconst frames = {};\n\t\t\t\t\t\tfor(const key in value.frames){\n\t\t\t\t\t\t\t\tframe = value.frames[key];\n\t\t\t\t\t\t\t\tframes[key] = {\n\t\t\t\t\t\t\t\t\t\trect: new Vec4(frame.rect),\n\t\t\t\t\t\t\t\t\t\tpivot: new Vec2(frame.pivot),\n\t\t\t\t\t\t\t\t\t\tborder: new Vec4(frame.border)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tasset.resource.frames = frames;\n\t\t\t\t} else {\n\t\t\t\t\t\tconst match = attribute.match(regexFrame);\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\tconst frameKey = match[1];\n\t\t\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\t\t\tif (!asset.resource.frames[frameKey]) {\n\t\t\t\t\t\t\t\t\t\t\t\tasset.resource.frames[frameKey] = {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trect: new Vec4(value.rect),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpivot: new Vec2(value.pivot),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tborder: new Vec4(value.border)\n\t\t\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tframe = asset.resource.frames[frameKey];\n\t\t\t\t\t\t\t\t\t\t\t\tframe.rect.set(value.rect[0], value.rect[1], value.rect[2], value.rect[3]);\n\t\t\t\t\t\t\t\t\t\t\t\tframe.pivot.set(value.pivot[0], value.pivot[1]);\n\t\t\t\t\t\t\t\t\t\t\t\tframe.border.set(value.border[0], value.border[1], value.border[2], value.border[3]);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tasset.resource.fire('set:frame', frameKey, asset.resource.frames[frameKey]);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (asset.resource.frames[frameKey]) {\n\t\t\t\t\t\t\t\t\t\t\t\tdelete asset.resource.frames[frameKey];\n\t\t\t\t\t\t\t\t\t\t\t\tasset.resource.fire('remove:frame', frameKey);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nfunction BasisWorker() {\n\t\tconst BASIS_FORMAT = {\n\t\t\t\tcTFETC1: 0,\n\t\t\t\tcTFETC2: 1,\n\t\t\t\tcTFBC1: 2,\n\t\t\t\tcTFBC3: 3,\n\t\t\t\tcTFPVRTC1_4_RGB: 8,\n\t\t\t\tcTFPVRTC1_4_RGBA: 9,\n\t\t\t\tcTFASTC_4x4: 10,\n\t\t\t\tcTFATC_RGB: 11,\n\t\t\t\tcTFATC_RGBA_INTERPOLATED_ALPHA: 12,\n\t\t\t\tcTFRGBA32: 13,\n\t\t\t\tcTFRGB565: 14,\n\t\t\t\tcTFRGBA4444: 16\n\t\t};\n\t\tconst opaqueMapping = {\n\t\t\t\tastc: BASIS_FORMAT.cTFASTC_4x4,\n\t\t\t\tdxt: BASIS_FORMAT.cTFBC1,\n\t\t\t\tetc1: BASIS_FORMAT.cTFETC1,\n\t\t\t\tetc2: BASIS_FORMAT.cTFETC1,\n\t\t\t\tpvr: BASIS_FORMAT.cTFPVRTC1_4_RGB,\n\t\t\t\tatc: BASIS_FORMAT.cTFATC_RGB,\n\t\t\t\tnone: BASIS_FORMAT.cTFRGB565\n\t\t};\n\t\tconst alphaMapping = {\n\t\t\t\tastc: BASIS_FORMAT.cTFASTC_4x4,\n\t\t\t\tdxt: BASIS_FORMAT.cTFBC3,\n\t\t\t\tetc1: BASIS_FORMAT.cTFRGBA4444,\n\t\t\t\tetc2: BASIS_FORMAT.cTFETC2,\n\t\t\t\tpvr: BASIS_FORMAT.cTFPVRTC1_4_RGBA,\n\t\t\t\tatc: BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA,\n\t\t\t\tnone: BASIS_FORMAT.cTFRGBA4444\n\t\t};\n\t\tconst PIXEL_FORMAT = {\n\t\t\t\tETC1: 21,\n\t\t\t\tETC2_RGB: 22,\n\t\t\t\tETC2_RGBA: 23,\n\t\t\t\tDXT1: 8,\n\t\t\t\tDXT5: 10,\n\t\t\t\tPVRTC_4BPP_RGB_1: 26,\n\t\t\t\tPVRTC_4BPP_RGBA_1: 27,\n\t\t\t\tASTC_4x4: 28,\n\t\t\t\tATC_RGB: 29,\n\t\t\t\tATC_RGBA: 30,\n\t\t\t\tR8_G8_B8_A8: 7,\n\t\t\t\tR5_G6_B5: 3,\n\t\t\t\tR4_G4_B4_A4: 5\n\t\t};\n\t\tconst basisToEngineMapping = (basisFormat, deviceDetails)=>{\n\t\t\t\tswitch(basisFormat){\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC1:\n\t\t\t\t\t\t\t\treturn deviceDetails.formats.etc2 ? PIXEL_FORMAT.ETC2_RGB : PIXEL_FORMAT.ETC1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC2:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ETC2_RGBA;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC1:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.DXT1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC3:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.DXT5;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGB:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.PVRTC_4BPP_RGB_1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGBA:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.PVRTC_4BPP_RGBA_1;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFASTC_4x4:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ASTC_4x4;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGB:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ATC_RGB;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.ATC_RGBA;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFRGBA32:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.R8_G8_B8_A8;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFRGB565:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.R5_G6_B5;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFRGBA4444:\n\t\t\t\t\t\t\t\treturn PIXEL_FORMAT.R4_G4_B4_A4;\n\t\t\t\t}\n\t\t};\n\t\tconst unswizzleGGGR = (data)=>{\n\t\t\t\tconst genB = function(R, G) {\n\t\t\t\t\t\tconst r = R * (2.0 / 255.0) - 1.0;\n\t\t\t\t\t\tconst g = G * (2.0 / 255.0) - 1.0;\n\t\t\t\t\t\tconst b = Math.sqrt(1.0 - Math.min(1.0, r * r + g * g));\n\t\t\t\t\t\treturn Math.max(0, Math.min(255, Math.floor((b + 1.0) * 0.5 * 255.0)));\n\t\t\t\t};\n\t\t\t\tfor(let offset = 0; offset < data.length; offset += 4){\n\t\t\t\t\t\tconst R = data[offset + 3];\n\t\t\t\t\t\tconst G = data[offset + 1];\n\t\t\t\t\t\tdata[offset + 0] = R;\n\t\t\t\t\t\tdata[offset + 2] = genB(R, G);\n\t\t\t\t\t\tdata[offset + 3] = 255;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t};\n\t\tconst pack565 = (data)=>{\n\t\t\t\tconst result = new Uint16Array(data.length / 4);\n\t\t\t\tfor(let offset = 0; offset < data.length; offset += 4){\n\t\t\t\t\t\tconst R = data[offset + 0];\n\t\t\t\t\t\tconst G = data[offset + 1];\n\t\t\t\t\t\tconst B = data[offset + 2];\n\t\t\t\t\t\tresult[offset / 4] = (R & 0xf8) << 8 | (G & 0xfc) << 3 | B >> 3;\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t};\n\t\tconst isPOT = (width, height)=>{\n\t\t\t\treturn (width & width - 1) === 0 && (height & height - 1) === 0;\n\t\t};\n\t\tconst performanceNow = ()=>{\n\t\t\t\treturn typeof performance !== 'undefined' ? performance.now() : 0;\n\t\t};\n\t\tlet basis;\n\t\tlet rgbPriority;\n\t\tlet rgbaPriority;\n\t\tconst chooseTargetFormat = (deviceDetails, hasAlpha, isUASTC)=>{\n\t\t\t\tif (isUASTC) {\n\t\t\t\t\t\tif (deviceDetails.formats.astc) {\n\t\t\t\t\t\t\t\treturn 'astc';\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (hasAlpha) {\n\t\t\t\t\t\t\t\tif (deviceDetails.formats.etc2) {\n\t\t\t\t\t\t\t\t\t\treturn 'etc2';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (deviceDetails.formats.etc2) {\n\t\t\t\t\t\t\t\t\t\treturn 'etc2';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (deviceDetails.formats.etc1) {\n\t\t\t\t\t\t\t\t\t\treturn 'etc1';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst testInOrder = (priority)=>{\n\t\t\t\t\t\tfor(let i = 0; i < priority.length; ++i){\n\t\t\t\t\t\t\t\tconst format = priority[i];\n\t\t\t\t\t\t\t\tif (deviceDetails.formats[format]) {\n\t\t\t\t\t\t\t\t\t\treturn format;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn 'none';\n\t\t\t\t};\n\t\t\t\treturn testInOrder(hasAlpha ? rgbaPriority : rgbPriority);\n\t\t};\n\t\tconst dimensionsValid = (width, height, format)=>{\n\t\t\t\tswitch(format){\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC1:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFETC2:\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC1:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFBC3:\n\t\t\t\t\t\t\t\treturn (width & 0x3) === 0 && (height & 0x3) === 0;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGB:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFPVRTC1_4_RGBA:\n\t\t\t\t\t\t\t\treturn isPOT(width, height);\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFASTC_4x4:\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGB:\n\t\t\t\t\t\tcase BASIS_FORMAT.cTFATC_RGBA_INTERPOLATED_ALPHA:\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t};\n\t\tconst transcodeKTX2 = (url, data, options)=>{\n\t\t\t\tif (!basis.KTX2File) {\n\t\t\t\t\t\tthrow new Error('Basis transcoder module does not include support for KTX2.');\n\t\t\t\t}\n\t\t\t\tconst funcStart = performanceNow();\n\t\t\t\tconst basisFile = new basis.KTX2File(new Uint8Array(data));\n\t\t\t\tconst width = basisFile.getWidth();\n\t\t\t\tconst height = basisFile.getHeight();\n\t\t\t\tconst levels = basisFile.getLevels();\n\t\t\t\tconst hasAlpha = !!basisFile.getHasAlpha();\n\t\t\t\tconst isUASTC = basisFile.isUASTC && basisFile.isUASTC();\n\t\t\t\tif (!width || !height || !levels) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Invalid image dimensions url=${url} width=${width} height=${height} levels=${levels}`);\n\t\t\t\t}\n\t\t\t\tconst format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC);\n\t\t\t\tconst unswizzle = !!options.isGGGR && format === 'pvr';\n\t\t\t\tlet basisFormat;\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGBA32;\n\t\t\t\t} else {\n\t\t\t\t\t\tbasisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format];\n\t\t\t\t\t\tif (!dimensionsValid(width, height, basisFormat)) {\n\t\t\t\t\t\t\t\tbasisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!basisFile.startTranscoding()) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Failed to start transcoding url=${url}`);\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tconst levelData = [];\n\t\t\t\tfor(let mip = 0; mip < levels; ++mip){\n\t\t\t\t\t\tconst dstSize = basisFile.getImageTranscodedSizeInBytes(mip, 0, 0, basisFormat);\n\t\t\t\t\t\tconst dst = new Uint8Array(dstSize);\n\t\t\t\t\t\tif (!basisFile.transcodeImage(dst, mip, 0, 0, basisFormat, 0, -1, -1)) {\n\t\t\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\t\t\tthrow new Error(`Failed to transcode image url=${url}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444;\n\t\t\t\t\t\tlevelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst);\n\t\t\t\t}\n\t\t\t\tbasisFile.close();\n\t\t\t\tbasisFile.delete();\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\tfor(i = 0; i < levelData.length; ++i){\n\t\t\t\t\t\t\t\tlevelData[i] = pack565(unswizzleGGGR(levelData[i]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tformat: basisToEngineMapping(basisFormat, options.deviceDetails),\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tlevels: levelData,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\ttranscodeTime: performanceNow() - funcStart,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\tunswizzledGGGR: unswizzle\n\t\t\t\t};\n\t\t};\n\t\tconst transcodeBasis = (url, data, options)=>{\n\t\t\t\tconst funcStart = performanceNow();\n\t\t\t\tconst basisFile = new basis.BasisFile(new Uint8Array(data));\n\t\t\t\tconst width = basisFile.getImageWidth(0, 0);\n\t\t\t\tconst height = basisFile.getImageHeight(0, 0);\n\t\t\t\tconst images = basisFile.getNumImages();\n\t\t\t\tconst levels = basisFile.getNumLevels(0);\n\t\t\t\tconst hasAlpha = !!basisFile.getHasAlpha();\n\t\t\t\tconst isUASTC = basisFile.isUASTC && basisFile.isUASTC();\n\t\t\t\tif (!width || !height || !images || !levels) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Invalid image dimensions url=${url} width=${width} height=${height} images=${images} levels=${levels}`);\n\t\t\t\t}\n\t\t\t\tconst format = chooseTargetFormat(options.deviceDetails, hasAlpha, isUASTC);\n\t\t\t\tconst unswizzle = !!options.isGGGR && format === 'pvr';\n\t\t\t\tlet basisFormat;\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGBA32;\n\t\t\t\t} else {\n\t\t\t\t\t\tbasisFormat = hasAlpha ? alphaMapping[format] : opaqueMapping[format];\n\t\t\t\t\t\tif (!dimensionsValid(width, height, basisFormat)) {\n\t\t\t\t\t\t\t\tbasisFormat = hasAlpha ? BASIS_FORMAT.cTFRGBA32 : BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!basisFile.startTranscoding()) {\n\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\tthrow new Error(`Failed to start transcoding url=${url}`);\n\t\t\t\t}\n\t\t\t\tlet i;\n\t\t\t\tconst levelData = [];\n\t\t\t\tfor(let mip = 0; mip < levels; ++mip){\n\t\t\t\t\t\tconst dstSize = basisFile.getImageTranscodedSizeInBytes(0, mip, basisFormat);\n\t\t\t\t\t\tconst dst = new Uint8Array(dstSize);\n\t\t\t\t\t\tif (!basisFile.transcodeImage(dst, 0, mip, basisFormat, 0, 0)) {\n\t\t\t\t\t\t\t\tif (mip === levels - 1 && dstSize === levelData[mip - 1].buffer.byteLength) {\n\t\t\t\t\t\t\t\t\t\tdst.set(new Uint8Array(levelData[mip - 1].buffer));\n\t\t\t\t\t\t\t\t\t\tconsole.warn(`Failed to transcode last mipmap level, using previous level instead url=${url}`);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tbasisFile.close();\n\t\t\t\t\t\t\t\t\t\tbasisFile.delete();\n\t\t\t\t\t\t\t\t\t\tthrow new Error(`Failed to transcode image url=${url}`);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst is16BitFormat = basisFormat === BASIS_FORMAT.cTFRGB565 || basisFormat === BASIS_FORMAT.cTFRGBA4444;\n\t\t\t\t\t\tlevelData.push(is16BitFormat ? new Uint16Array(dst.buffer) : dst);\n\t\t\t\t}\n\t\t\t\tbasisFile.close();\n\t\t\t\tbasisFile.delete();\n\t\t\t\tif (unswizzle) {\n\t\t\t\t\t\tbasisFormat = BASIS_FORMAT.cTFRGB565;\n\t\t\t\t\t\tfor(i = 0; i < levelData.length; ++i){\n\t\t\t\t\t\t\t\tlevelData[i] = pack565(unswizzleGGGR(levelData[i]));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tformat: basisToEngineMapping(basisFormat, options.deviceDetails),\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tlevels: levelData,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\ttranscodeTime: performanceNow() - funcStart,\n\t\t\t\t\t\turl: url,\n\t\t\t\t\t\tunswizzledGGGR: unswizzle\n\t\t\t\t};\n\t\t};\n\t\tconst transcode = (url, data, options)=>{\n\t\t\t\treturn options.isKTX2 ? transcodeKTX2(url, data, options) : transcodeBasis(url, data, options);\n\t\t};\n\t\tconst workerTranscode = (url, data, options)=>{\n\t\t\t\ttry {\n\t\t\t\t\t\tconst result = transcode(url, data, options);\n\t\t\t\t\t\tresult.levels = result.levels.map((v)=>v.buffer);\n\t\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\tdata: result\n\t\t\t\t\t\t}, result.levels);\n\t\t\t\t} catch (err) {\n\t\t\t\t\t\tself.postMessage({\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\terr: err\n\t\t\t\t\t\t}, null);\n\t\t\t\t}\n\t\t};\n\t\tconst workerInit = (config, callback)=>{\n\t\t\t\tconst instantiateWasmFunc = (imports, successCallback)=>{\n\t\t\t\t\t\tWebAssembly.instantiate(config.module, imports).then((result)=>{\n\t\t\t\t\t\t\t\tsuccessCallback(result);\n\t\t\t\t\t\t}).catch((reason)=>{\n\t\t\t\t\t\t\t\tconsole.error(`instantiate failed + ${reason}`);\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn {};\n\t\t\t\t};\n\t\t\t\tself.BASIS(config.module ? {\n\t\t\t\t\t\tinstantiateWasm: instantiateWasmFunc\n\t\t\t\t} : null).then((instance)=>{\n\t\t\t\t\t\tinstance.initializeBasis();\n\t\t\t\t\t\tbasis = instance;\n\t\t\t\t\t\trgbPriority = config.rgbPriority;\n\t\t\t\t\t\trgbaPriority = config.rgbaPriority;\n\t\t\t\t\t\tcallback(null);\n\t\t\t\t});\n\t\t};\n\t\tconst queue = [];\n\t\tself.onmessage = (message)=>{\n\t\t\t\tconst data = message.data;\n\t\t\t\tswitch(data.type){\n\t\t\t\t\t\tcase 'init':\n\t\t\t\t\t\t\t\tworkerInit(data.config, ()=>{\n\t\t\t\t\t\t\t\t\t\tfor(let i = 0; i < queue.length; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\tworkerTranscode(queue[i].url, queue[i].data, queue[i].options);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tqueue.length = 0;\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\tcase 'transcode':\n\t\t\t\t\t\t\t\tif (basis) {\n\t\t\t\t\t\t\t\t\t\tworkerTranscode(data.url, data.data, data.options);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tqueue.push(data);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t};\n}\n\nconst getCompressionFormats = (device)=>{\n\t\treturn {\n\t\t\t\tastc: !!device.extCompressedTextureASTC,\n\t\t\t\tatc: !!device.extCompressedTextureATC,\n\t\t\t\tdxt: !!device.extCompressedTextureS3TC,\n\t\t\t\tetc1: !!device.extCompressedTextureETC1,\n\t\t\t\tetc2: !!device.extCompressedTextureETC,\n\t\t\t\tpvr: !!device.extCompressedTexturePVRTC\n\t\t};\n};\nconst prepareWorkerModules = (config, callback)=>{\n\t\tconst getWorkerBlob = (basisCode)=>{\n\t\t\t\tconst code = [\n\t\t\t\t\t\t'/* basis */',\n\t\t\t\t\t\tbasisCode,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t`(${BasisWorker.toString()})()\\n\\n`\n\t\t\t\t].join('\\n');\n\t\t\t\treturn new Blob([\n\t\t\t\t\t\tcode\n\t\t\t\t], {\n\t\t\t\t\t\ttype: \"application/javascript\"\n\t\t\t\t});\n\t\t};\n\t\tconst wasmSupported = ()=>{\n\t\t\t\ttry {\n\t\t\t\t\t\tif (typeof WebAssembly === 'object' && typeof WebAssembly.instantiate === 'function') {\n\t\t\t\t\t\t\t\tconst module = new WebAssembly.Module(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));\n\t\t\t\t\t\t\t\tif (module instanceof WebAssembly.Module) {\n\t\t\t\t\t\t\t\t\t\treturn new WebAssembly.Instance(module) instanceof WebAssembly.Instance;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t\treturn false;\n\t\t};\n\t\tconst sendResponse = (basisCode, module)=>{\n\t\t\t\tcallback(null, {\n\t\t\t\t\t\tworkerUrl: URL.createObjectURL(getWorkerBlob(basisCode)),\n\t\t\t\t\t\tmodule: module,\n\t\t\t\t\t\trgbPriority: config.rgbPriority,\n\t\t\t\t\t\trgbaPriority: config.rgbaPriority\n\t\t\t\t});\n\t\t};\n\t\tconst options = {\n\t\t\t\tcache: true,\n\t\t\t\tresponseType: 'text',\n\t\t\t\tretry: config.maxRetries > 0,\n\t\t\t\tmaxRetries: config.maxRetries\n\t\t};\n\t\tif (config.glueUrl && config.wasmUrl && wasmSupported()) {\n\t\t\t\tlet basisCode = null;\n\t\t\t\tlet module = null;\n\t\t\t\thttp.get(config.glueUrl, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (module) {\n\t\t\t\t\t\t\t\t\t\tsendResponse(response, module);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tbasisCode = response;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst fetchPromise = fetch(config.wasmUrl);\n\t\t\t\tconst compileManual = ()=>{\n\t\t\t\t\t\tfetchPromise.then((result)=>result.arrayBuffer()).then((buffer)=>WebAssembly.compile(buffer)).then((module_)=>{\n\t\t\t\t\t\t\t\tif (basisCode) {\n\t\t\t\t\t\t\t\t\t\tsendResponse(basisCode, module_);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmodule = module_;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tif (WebAssembly.compileStreaming) {\n\t\t\t\t\t\tWebAssembly.compileStreaming(fetchPromise).then((module_)=>{\n\t\t\t\t\t\t\t\tif (basisCode) {\n\t\t\t\t\t\t\t\t\t\tsendResponse(basisCode, module_);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmodule = module_;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\tcompileManual();\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcompileManual();\n\t\t\t\t}\n\t\t} else {\n\t\t\t\thttp.get(config.fallbackUrl, options, (err, response)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tsendResponse(response, null);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n};\nclass BasisQueue {\n\t\tconstructor(){\n\t\t\t\tthis.callbacks = {};\n\t\t\t\tthis.queue = [];\n\t\t\t\tthis.clients = [];\n\t\t}\n\t\tenqueueJob(url, data, callback, options) {\n\t\t\t\tif (this.callbacks.hasOwnProperty(url)) {\n\t\t\t\t\t\tthis.callbacks[url].push(callback);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.callbacks[url] = [\n\t\t\t\t\t\t\t\tcallback\n\t\t\t\t\t\t];\n\t\t\t\t\t\tconst job = {\n\t\t\t\t\t\t\t\turl: url,\n\t\t\t\t\t\t\t\tdata: data,\n\t\t\t\t\t\t\t\toptions: options\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (this.clients.length > 0) {\n\t\t\t\t\t\t\t\tthis.clients.shift().run(job);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.queue.push(job);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tenqueueClient(client) {\n\t\t\t\tif (this.queue.length > 0) {\n\t\t\t\t\t\tclient.run(this.queue.shift());\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.clients.push(client);\n\t\t\t\t}\n\t\t}\n\t\thandleResponse(url, err, data) {\n\t\t\t\tconst callback = this.callbacks[url];\n\t\t\t\tif (err) {\n\t\t\t\t\t\tfor(let i = 0; i < callback.length; ++i){\n\t\t\t\t\t\t\t\tcallback[i](err);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (data.format === PIXELFORMAT_RGB565 || data.format === PIXELFORMAT_RGBA4) {\n\t\t\t\t\t\t\t\tdata.levels = data.levels.map((v)=>{\n\t\t\t\t\t\t\t\t\t\treturn new Uint16Array(v);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdata.levels = data.levels.map((v)=>{\n\t\t\t\t\t\t\t\t\t\treturn new Uint8Array(v);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(let i = 0; i < callback.length; ++i){\n\t\t\t\t\t\t\t\tcallback[i](null, data);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tdelete this.callbacks[url];\n\t\t}\n}\nclass BasisClient {\n\t\tconstructor(queue, config, eager){\n\t\t\t\tthis.queue = queue;\n\t\t\t\tthis.worker = new Worker(config.workerUrl);\n\t\t\t\tthis.worker.addEventListener('message', (message)=>{\n\t\t\t\t\t\tconst data = message.data;\n\t\t\t\t\t\tthis.queue.handleResponse(data.url, data.err, data.data);\n\t\t\t\t\t\tif (!this.eager) {\n\t\t\t\t\t\t\t\tthis.queue.enqueueClient(this);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\ttype: 'init',\n\t\t\t\t\t\tconfig: config\n\t\t\t\t});\n\t\t\t\tthis.eager = eager;\n\t\t}\n\t\trun(job) {\n\t\t\t\tconst transfer = [];\n\t\t\t\tif (job.data instanceof ArrayBuffer) {\n\t\t\t\t\t\ttransfer.push(job.data);\n\t\t\t\t}\n\t\t\t\tthis.worker.postMessage({\n\t\t\t\t\t\ttype: 'transcode',\n\t\t\t\t\t\turl: job.url,\n\t\t\t\t\t\tformat: job.format,\n\t\t\t\t\t\tdata: job.data,\n\t\t\t\t\t\toptions: job.options\n\t\t\t\t}, transfer);\n\t\t\t\tif (this.eager) {\n\t\t\t\t\t\tthis.queue.enqueueClient(this);\n\t\t\t\t}\n\t\t}\n}\nconst defaultNumWorkers = 1;\nconst defaultRgbPriority = [\n\t\t'etc2',\n\t\t'etc1',\n\t\t'astc',\n\t\t'dxt',\n\t\t'pvr',\n\t\t'atc'\n];\nconst defaultRgbaPriority = [\n\t\t'astc',\n\t\t'dxt',\n\t\t'etc2',\n\t\t'pvr',\n\t\t'atc'\n];\nconst defaultMaxRetries = 5;\nconst queue = new BasisQueue();\nlet lazyConfig = null;\nlet initializing = false;\nfunction basisInitialize(config) {\n\t\tif (initializing) {\n\t\t\t\treturn;\n\t\t}\n\t\tif (!config) {\n\t\t\t\tconfig = lazyConfig || {};\n\t\t} else if (config.lazyInit) {\n\t\t\t\tlazyConfig = config;\n\t\t\t\treturn;\n\t\t}\n\t\tif (!config.glueUrl || !config.wasmUrl || !config.fallbackUrl) {\n\t\t\t\tconst moduleConfig = WasmModule.getConfig('BASIS');\n\t\t\t\tif (moduleConfig) {\n\t\t\t\t\t\tconfig = {\n\t\t\t\t\t\t\t\tglueUrl: moduleConfig.glueUrl,\n\t\t\t\t\t\t\t\twasmUrl: moduleConfig.wasmUrl,\n\t\t\t\t\t\t\t\tfallbackUrl: moduleConfig.fallbackUrl,\n\t\t\t\t\t\t\t\tnumWorkers: moduleConfig.numWorkers\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t}\n\t\tif (config.glueUrl || config.wasmUrl || config.fallbackUrl) {\n\t\t\t\tinitializing = true;\n\t\t\t\tconst numWorkers = Math.max(1, Math.min(16, config.numWorkers || defaultNumWorkers));\n\t\t\t\tconst eagerWorkers = config.numWorkers === 1 || (config.hasOwnProperty('eagerWorkers') ? config.eagerWorkers : true);\n\t\t\t\tconfig.rgbPriority = config.rgbPriority || defaultRgbPriority;\n\t\t\t\tconfig.rgbaPriority = config.rgbaPriority || defaultRgbaPriority;\n\t\t\t\tconfig.maxRetries = config.hasOwnProperty('maxRetries') ? config.maxRetries : defaultMaxRetries;\n\t\t\t\tprepareWorkerModules(config, (err, clientConfig)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tconsole.error(`failed to initialize basis worker: ${err}`);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tfor(let i = 0; i < numWorkers; ++i){\n\t\t\t\t\t\t\t\t\t\tqueue.enqueueClient(new BasisClient(queue, clientConfig, eagerWorkers));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\nlet deviceDetails = null;\nfunction basisTranscode(device, url, data, callback, options) {\n\t\tbasisInitialize();\n\t\tif (!deviceDetails) {\n\t\t\t\tdeviceDetails = {\n\t\t\t\t\t\tformats: getCompressionFormats(device)\n\t\t\t\t};\n\t\t}\n\t\tqueue.enqueueJob(url, data, callback, {\n\t\t\t\tdeviceDetails: deviceDetails,\n\t\t\t\tisGGGR: !!options?.isGGGR,\n\t\t\t\tisKTX2: !!options?.isKTX2\n\t\t});\n\t\treturn initializing;\n}\n\nclass TextureParser {\n\t\tload(url, callback, asset) {\n\t\t\t\tthrow new Error('not implemented');\n\t\t}\n\t\topen(url, data, device) {\n\t\t\t\tthrow new Error('not implemented');\n\t\t}\n}\n\nclass BasisParser extends TextureParser {\n\t\tconstructor(registry, device){\n\t\t\t\tsuper();\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst transcode = (data)=>{\n\t\t\t\t\t\tconst basisModuleFound = basisTranscode(device, url.load, data, callback, {\n\t\t\t\t\t\t\t\tisGGGR: (asset?.file?.variants?.basis?.opt & 8) !== 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!basisModuleFound) {\n\t\t\t\t\t\t\t\tcallback(`Basis module not found. Asset [${asset.name}](${asset.getFileUrl()}) basis texture variant will not be loaded.`);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tAsset.fetchArrayBuffer(url.load, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttranscode(result);\n\t\t\t\t\t\t}\n\t\t\t\t}, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst format = textureOptions.srgb ? pixelFormatLinearToGamma(data.format) : data.format;\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: data.cubemap,\n\t\t\t\t\t\tlevels: data.levels,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n}\n\nclass ImgParser extends TextureParser {\n\t\tconstructor(registry, device){\n\t\t\t\tsuper();\n\t\t\t\tthis.crossOrigin = registry.prefix ? 'anonymous' : null;\n\t\t\t\tthis.maxRetries = 0;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tconst hasContents = !!asset?.file?.contents;\n\t\t\t\tif (hasContents) {\n\t\t\t\t\t\tif (this.device.supportsImageBitmap) {\n\t\t\t\t\t\t\t\tthis._loadImageBitmapFromBlob(new Blob([\n\t\t\t\t\t\t\t\t\t\tasset.file.contents\n\t\t\t\t\t\t\t\t]), callback);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: URL.createObjectURL(new Blob([\n\t\t\t\t\t\t\t\t\t\tasset.file.contents\n\t\t\t\t\t\t\t\t])),\n\t\t\t\t\t\t\t\toriginal: url.original\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tconst handler = (err, result)=>{\n\t\t\t\t\t\tif (hasContents) {\n\t\t\t\t\t\t\t\tURL.revokeObjectURL(url.load);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcallback(err, result);\n\t\t\t\t};\n\t\t\t\tlet crossOrigin;\n\t\t\t\tif (asset && asset.options && asset.options.hasOwnProperty('crossOrigin')) {\n\t\t\t\t\t\tcrossOrigin = asset.options.crossOrigin;\n\t\t\t\t} else if (ABSOLUTE_URL.test(url.load)) {\n\t\t\t\t\t\tcrossOrigin = this.crossOrigin;\n\t\t\t\t}\n\t\t\t\tif (this.device.supportsImageBitmap) {\n\t\t\t\t\t\tthis._loadImageBitmap(url.load, url.original, crossOrigin, handler, asset);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._loadImage(url.load, url.original, crossOrigin, handler, asset);\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height,\n\t\t\t\t\t\tformat: textureOptions.srgb ? PIXELFORMAT_SRGBA8 : PIXELFORMAT_RGBA8,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.setSource(data);\n\t\t\t\treturn texture;\n\t\t}\n\t\t_loadImage(url, originalUrl, crossOrigin, callback, asset) {\n\t\t\t\tconst image = new Image();\n\t\t\t\tif (crossOrigin) {\n\t\t\t\t\t\timage.crossOrigin = crossOrigin;\n\t\t\t\t}\n\t\t\t\tlet retries = 0;\n\t\t\t\tconst maxRetries = this.maxRetries;\n\t\t\t\tlet retryTimeout;\n\t\t\t\tconst dummySize = 1024 * 1024;\n\t\t\t\tasset?.fire('progress', 0, dummySize);\n\t\t\t\timage.onload = function() {\n\t\t\t\t\t\tasset?.fire('progress', dummySize, dummySize);\n\t\t\t\t\t\tcallback(null, image);\n\t\t\t\t};\n\t\t\t\timage.onerror = function() {\n\t\t\t\t\t\tif (retryTimeout) return;\n\t\t\t\t\t\tif (maxRetries > 0 && ++retries <= maxRetries) {\n\t\t\t\t\t\t\t\tconst retryDelay = Math.pow(2, retries) * 100;\n\t\t\t\t\t\t\t\tconsole.log(`Error loading Texture from: '${originalUrl}' - Retrying in ${retryDelay}ms...`);\n\t\t\t\t\t\t\t\tconst idx = url.indexOf('?');\n\t\t\t\t\t\t\t\tconst separator = idx >= 0 ? '&' : '?';\n\t\t\t\t\t\t\t\tretryTimeout = setTimeout(()=>{\n\t\t\t\t\t\t\t\t\t\timage.src = `${url + separator}retry=${Date.now()}`;\n\t\t\t\t\t\t\t\t\t\tretryTimeout = null;\n\t\t\t\t\t\t\t\t}, retryDelay);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcallback(`Error loading Texture from: '${originalUrl}'`);\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\timage.src = url;\n\t\t}\n\t\t_loadImageBitmap(url, originalUrl, crossOrigin, callback, asset) {\n\t\t\t\tconst options = {\n\t\t\t\t\t\tcache: true,\n\t\t\t\t\t\tresponseType: 'blob',\n\t\t\t\t\t\tretry: this.maxRetries > 0,\n\t\t\t\t\t\tmaxRetries: this.maxRetries,\n\t\t\t\t\t\tprogress: asset\n\t\t\t\t};\n\t\t\t\thttp.get(url, options, (err, blob)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._loadImageBitmapFromBlob(blob, callback);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\t_loadImageBitmapFromBlob(blob, callback) {\n\t\t\t\tcreateImageBitmap(blob, {\n\t\t\t\t\t\tpremultiplyAlpha: 'none',\n\t\t\t\t\t\tcolorSpaceConversion: 'none'\n\t\t\t\t}).then((imageBitmap)=>callback(null, imageBitmap)).catch((e)=>callback(e));\n\t\t}\n}\n\nconst IDENTIFIER = [\n\t\t0x58544BAB,\n\t\t0xBB313120,\n\t\t0x0A1A0A0D\n];\nconst KNOWN_FORMATS = {\n\t\t0x83F0: PIXELFORMAT_DXT1,\n\t\t0x83F2: PIXELFORMAT_DXT3,\n\t\t0x83F3: PIXELFORMAT_DXT5,\n\t\t0x8D64: PIXELFORMAT_ETC1,\n\t\t0x9274: PIXELFORMAT_ETC2_RGB,\n\t\t0x9278: PIXELFORMAT_ETC2_RGBA,\n\t\t0x8C00: PIXELFORMAT_PVRTC_4BPP_RGB_1,\n\t\t0x8C01: PIXELFORMAT_PVRTC_2BPP_RGB_1,\n\t\t0x8C02: PIXELFORMAT_PVRTC_4BPP_RGBA_1,\n\t\t0x8C03: PIXELFORMAT_PVRTC_2BPP_RGBA_1,\n\t\t0x8051: PIXELFORMAT_RGB8,\n\t\t0x8058: PIXELFORMAT_RGBA8,\n\t\t0x8C41: PIXELFORMAT_SRGB8,\n\t\t0x8C43: PIXELFORMAT_SRGBA8,\n\t\t0x8C3A: PIXELFORMAT_111110F,\n\t\t0x881B: PIXELFORMAT_RGB16F,\n\t\t0x881A: PIXELFORMAT_RGBA16F\n};\nfunction createContainer(pixelFormat, buffer, byteOffset, byteSize) {\n\t\treturn pixelFormat === PIXELFORMAT_111110F ? new Uint32Array(buffer, byteOffset, byteSize / 4) : new Uint8Array(buffer, byteOffset, byteSize);\n}\nclass KtxParser extends TextureParser {\n\t\tconstructor(registry){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst textureData = this.parse(data);\n\t\t\t\tif (!textureData) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst format = textureOptions.srgb ? pixelFormatLinearToGamma(textureData.format) : textureData.format;\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: textureData.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: textureData.width,\n\t\t\t\t\t\theight: textureData.height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: textureData.cubemap,\n\t\t\t\t\t\tlevels: textureData.levels,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n\t\tparse(data) {\n\t\t\t\tconst dataU32 = new Uint32Array(data);\n\t\t\t\tif (IDENTIFIER[0] !== dataU32[0] || IDENTIFIER[1] !== dataU32[1] || IDENTIFIER[2] !== dataU32[2]) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst header = {\n\t\t\t\t\t\tendianness: dataU32[3],\n\t\t\t\t\t\tglType: dataU32[4],\n\t\t\t\t\t\tglTypeSize: dataU32[5],\n\t\t\t\t\t\tglFormat: dataU32[6],\n\t\t\t\t\t\tglInternalFormat: dataU32[7],\n\t\t\t\t\t\tglBaseInternalFormat: dataU32[8],\n\t\t\t\t\t\tpixelWidth: dataU32[9],\n\t\t\t\t\t\tpixelHeight: dataU32[10],\n\t\t\t\t\t\tpixelDepth: dataU32[11],\n\t\t\t\t\t\tnumberOfArrayElements: dataU32[12],\n\t\t\t\t\t\tnumberOfFaces: dataU32[13],\n\t\t\t\t\t\tnumberOfMipmapLevels: dataU32[14],\n\t\t\t\t\t\tbytesOfKeyValueData: dataU32[15]\n\t\t\t\t};\n\t\t\t\tif (header.pixelDepth > 1) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (header.numberOfArrayElements !== 0) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst format = KNOWN_FORMATS[header.glInternalFormat];\n\t\t\t\tif (format === undefined) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tlet offset = 16 + header.bytesOfKeyValueData / 4;\n\t\t\t\tconst isCubemap = header.numberOfFaces > 1;\n\t\t\t\tconst levels = [];\n\t\t\t\tfor(let mipmapLevel = 0; mipmapLevel < (header.numberOfMipmapLevels || 1); mipmapLevel++){\n\t\t\t\t\t\tconst imageSizeInBytes = dataU32[offset++];\n\t\t\t\t\t\tif (isCubemap) {\n\t\t\t\t\t\t\t\tlevels.push([]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst target = isCubemap ? levels[mipmapLevel] : levels;\n\t\t\t\t\t\tfor(let face = 0; face < (isCubemap ? 6 : 1); ++face){\n\t\t\t\t\t\t\t\ttarget.push(createContainer(format, data, offset * 4, imageSizeInBytes));\n\t\t\t\t\t\t\t\toffset += imageSizeInBytes + 3 >> 2;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\twidth: header.pixelWidth,\n\t\t\t\t\t\theight: header.pixelHeight,\n\t\t\t\t\t\tlevels: levels,\n\t\t\t\t\t\tcubemap: isCubemap\n\t\t\t\t};\n\t\t}\n}\n\nconst KHRConstants = {\n\t\tKHR_DF_MODEL_UASTC: 166\n};\nclass Ktx2Parser extends TextureParser {\n\t\tconstructor(registry, device){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t\t\tthis.device = device;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, (err, result)=>{\n\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\tcallback(err, result);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.parse(result, url, callback, asset);\n\t\t\t\t\t\t}\n\t\t\t\t}, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst format = textureOptions.srgb ? pixelFormatLinearToGamma(data.format) : data.format;\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: data.cubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: data.width,\n\t\t\t\t\t\theight: data.height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: data.cubemap,\n\t\t\t\t\t\tlevels: data.levels,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n\t\tparse(arraybuffer, url, callback, asset) {\n\t\t\t\tconst rs = new ReadStream(arraybuffer);\n\t\t\t\tconst magic = [\n\t\t\t\t\t\trs.readU32be(),\n\t\t\t\t\t\trs.readU32be(),\n\t\t\t\t\t\trs.readU32be()\n\t\t\t\t];\n\t\t\t\tif (magic[0] !== 0xAB4B5458 || magic[1] !== 0x203230BB || magic[2] !== 0x0D0A1A0A) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst header = {\n\t\t\t\t\t\tvkFormat: rs.readU32(),\n\t\t\t\t\t\ttypeSize: rs.readU32(),\n\t\t\t\t\t\tpixelWidth: rs.readU32(),\n\t\t\t\t\t\tpixelHeight: rs.readU32(),\n\t\t\t\t\t\tpixelDepth: rs.readU32(),\n\t\t\t\t\t\tlayerCount: rs.readU32(),\n\t\t\t\t\t\tfaceCount: rs.readU32(),\n\t\t\t\t\t\tlevelCount: rs.readU32(),\n\t\t\t\t\t\tsupercompressionScheme: rs.readU32()\n\t\t\t\t};\n\t\t\t\tconst index = {\n\t\t\t\t\t\tdfdByteOffset: rs.readU32(),\n\t\t\t\t\t\tdfdByteLength: rs.readU32(),\n\t\t\t\t\t\tkvdByteOffset: rs.readU32(),\n\t\t\t\t\t\tkvdByteLength: rs.readU32(),\n\t\t\t\t\t\tsgdByteOffset: rs.readU64(),\n\t\t\t\t\t\tsgdByteLength: rs.readU64()\n\t\t\t\t};\n\t\t\t\tconst levels = [];\n\t\t\t\tfor(let i = 0; i < Math.max(1, header.levelCount); ++i){\n\t\t\t\t\t\tlevels.push({\n\t\t\t\t\t\t\t\tbyteOffset: rs.readU64(),\n\t\t\t\t\t\t\t\tbyteLength: rs.readU64(),\n\t\t\t\t\t\t\t\tuncompressedByteLength: rs.readU64()\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst dfdTotalSize = rs.readU32();\n\t\t\t\tif (dfdTotalSize !== index.kvdByteOffset - index.dfdByteOffset) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\trs.skip(8);\n\t\t\t\tconst colorModel = rs.readU8();\n\t\t\t\trs.skip(index.dfdByteLength - 9);\n\t\t\t\trs.skip(index.kvdByteLength);\n\t\t\t\tif (header.supercompressionScheme === 1 || colorModel === KHRConstants.KHR_DF_MODEL_UASTC) {\n\t\t\t\t\t\tconst basisModuleFound = basisTranscode(this.device, url.load, arraybuffer, callback, {\n\t\t\t\t\t\t\t\tisGGGR: (asset?.file?.variants?.basis?.opt & 8) !== 0,\n\t\t\t\t\t\t\t\tisKTX2: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tif (!basisModuleFound) {\n\t\t\t\t\t\t\t\tcallback(`Basis module not found. Asset [${asset.name}](${asset.getFileUrl()}) basis texture variant will not be loaded.`);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback('unsupported KTX2 pixel format');\n\t\t\t\t}\n\t\t}\n}\n\nclass DdsParser extends TextureParser {\n\t\tconstructor(registry){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst header = new Uint32Array(data, 0, 128 / 4);\n\t\t\t\tconst width = header[4];\n\t\t\t\tconst height = header[3];\n\t\t\t\tconst mips = Math.max(header[7], 1);\n\t\t\t\tconst isFourCc = header[20] === 4;\n\t\t\t\tconst fcc = header[21];\n\t\t\t\tconst bpp = header[22];\n\t\t\t\tconst isCubemap = header[28] === 65024;\n\t\t\t\tconst FCC_DXT1 = 827611204;\n\t\t\t\tconst FCC_DXT5 = 894720068;\n\t\t\t\tconst FCC_FP16 = 113;\n\t\t\t\tconst FCC_FP32 = 116;\n\t\t\t\tconst FCC_ETC1 = 826496069;\n\t\t\t\tconst FCC_PVRTC_2BPP_RGB_1 = 825438800;\n\t\t\t\tconst FCC_PVRTC_2BPP_RGBA_1 = 825504336;\n\t\t\t\tconst FCC_PVRTC_4BPP_RGB_1 = 825439312;\n\t\t\t\tconst FCC_PVRTC_4BPP_RGBA_1 = 825504848;\n\t\t\t\tlet compressed = false;\n\t\t\t\tlet etc1 = false;\n\t\t\t\tlet pvrtc2 = false;\n\t\t\t\tlet pvrtc4 = false;\n\t\t\t\tlet format = null;\n\t\t\t\tlet componentSize = 1;\n\t\t\t\tlet texture;\n\t\t\t\tif (isFourCc) {\n\t\t\t\t\t\tif (fcc === FCC_DXT1) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_DXT1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t} else if (fcc === FCC_DXT5) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_DXT5;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t} else if (fcc === FCC_FP16) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_RGBA16F;\n\t\t\t\t\t\t\t\tcomponentSize = 2;\n\t\t\t\t\t\t} else if (fcc === FCC_FP32) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_RGBA32F;\n\t\t\t\t\t\t\t\tcomponentSize = 4;\n\t\t\t\t\t\t} else if (fcc === FCC_ETC1) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_ETC1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t\t\tetc1 = true;\n\t\t\t\t\t\t} else if (fcc === FCC_PVRTC_2BPP_RGB_1 || fcc === FCC_PVRTC_2BPP_RGBA_1) {\n\t\t\t\t\t\t\t\tformat = fcc === FCC_PVRTC_2BPP_RGB_1 ? PIXELFORMAT_PVRTC_2BPP_RGB_1 : PIXELFORMAT_PVRTC_2BPP_RGBA_1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t\t\tpvrtc2 = true;\n\t\t\t\t\t\t} else if (fcc === FCC_PVRTC_4BPP_RGB_1 || fcc === FCC_PVRTC_4BPP_RGBA_1) {\n\t\t\t\t\t\t\t\tformat = fcc === FCC_PVRTC_4BPP_RGB_1 ? PIXELFORMAT_PVRTC_4BPP_RGB_1 : PIXELFORMAT_PVRTC_4BPP_RGBA_1;\n\t\t\t\t\t\t\t\tcompressed = true;\n\t\t\t\t\t\t\t\tpvrtc4 = true;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (bpp === 32) {\n\t\t\t\t\t\t\t\tformat = PIXELFORMAT_RGBA8;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!format) {\n\t\t\t\t\t\ttexture = new Texture(device, {\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGB8,\n\t\t\t\t\t\t\t\tname: 'dds-legacy-empty'\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn texture;\n\t\t\t\t}\n\t\t\t\ttexture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: isCubemap ? ADDRESS_CLAMP_TO_EDGE : ADDRESS_REPEAT,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: isCubemap,\n\t\t\t\t\t\tmipmaps: mips > 1,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\tlet offset = 128;\n\t\t\t\tconst faces = isCubemap ? 6 : 1;\n\t\t\t\tlet mipSize;\n\t\t\t\tconst DXT_BLOCK_WIDTH = 4;\n\t\t\t\tconst DXT_BLOCK_HEIGHT = 4;\n\t\t\t\tconst blockSize = fcc === FCC_DXT1 ? 8 : 16;\n\t\t\t\tlet numBlocksAcross, numBlocksDown, numBlocks;\n\t\t\t\tfor(let face = 0; face < faces; face++){\n\t\t\t\t\t\tlet mipWidth = width;\n\t\t\t\t\t\tlet mipHeight = height;\n\t\t\t\t\t\tfor(let i = 0; i < mips; i++){\n\t\t\t\t\t\t\t\tif (compressed) {\n\t\t\t\t\t\t\t\t\t\tif (etc1) {\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = Math.floor((mipWidth + 3) / 4) * Math.floor((mipHeight + 3) / 4) * 8;\n\t\t\t\t\t\t\t\t\t\t} else if (pvrtc2) {\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = Math.max(mipWidth, 16) * Math.max(mipHeight, 8) / 4;\n\t\t\t\t\t\t\t\t\t\t} else if (pvrtc4) {\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = Math.max(mipWidth, 8) * Math.max(mipHeight, 8) / 2;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tnumBlocksAcross = Math.floor((mipWidth + DXT_BLOCK_WIDTH - 1) / DXT_BLOCK_WIDTH);\n\t\t\t\t\t\t\t\t\t\t\t\tnumBlocksDown = Math.floor((mipHeight + DXT_BLOCK_HEIGHT - 1) / DXT_BLOCK_HEIGHT);\n\t\t\t\t\t\t\t\t\t\t\t\tnumBlocks = numBlocksAcross * numBlocksDown;\n\t\t\t\t\t\t\t\t\t\t\t\tmipSize = numBlocks * blockSize;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tmipSize = mipWidth * mipHeight * 4;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst mipBuff = format === PIXELFORMAT_RGBA32F ? new Float32Array(data, offset, mipSize) : format === PIXELFORMAT_RGBA16F ? new Uint16Array(data, offset, mipSize) : new Uint8Array(data, offset, mipSize);\n\t\t\t\t\t\t\t\tif (!isCubemap) {\n\t\t\t\t\t\t\t\t\t\ttexture._levels[i] = mipBuff;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tif (!texture._levels[i]) texture._levels[i] = [];\n\t\t\t\t\t\t\t\t\t\ttexture._levels[i][face] = mipBuff;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\toffset += mipSize * componentSize;\n\t\t\t\t\t\t\t\tmipWidth = Math.max(mipWidth * 0.5, 1);\n\t\t\t\t\t\t\t\tmipHeight = Math.max(mipHeight * 0.5, 1);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n}\n\nclass HdrParser extends TextureParser {\n\t\tconstructor(registry){\n\t\t\t\tsuper();\n\t\t\t\tthis.maxRetries = 0;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tAsset.fetchArrayBuffer(url.load, callback, asset, this.maxRetries);\n\t\t\t\tif (asset.data && !asset.data.type) {\n\t\t\t\t\t\tasset.data.type = TEXTURETYPE_RGBE;\n\t\t\t\t}\n\t\t}\n\t\topen(url, data, device, textureOptions = {}) {\n\t\t\t\tconst textureData = this.parse(data);\n\t\t\t\tif (!textureData) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst texture = new Texture(device, {\n\t\t\t\t\t\tname: url,\n\t\t\t\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\twidth: textureData.width,\n\t\t\t\t\t\theight: textureData.height,\n\t\t\t\t\t\tlevels: textureData.levels,\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\ttype: TEXTURETYPE_RGBE,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t...textureOptions\n\t\t\t\t});\n\t\t\t\ttexture.upload();\n\t\t\t\treturn texture;\n\t\t}\n\t\tparse(data) {\n\t\t\t\tconst readStream = new ReadStream(data);\n\t\t\t\tconst magic = readStream.readLine();\n\t\t\t\tif (!magic.startsWith('#?RADIANCE')) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst variables = {};\n\t\t\t\twhile(true){\n\t\t\t\t\t\tconst line = readStream.readLine();\n\t\t\t\t\t\tif (line.length === 0) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst parts = line.split('=');\n\t\t\t\t\t\t\t\tif (parts.length === 2) {\n\t\t\t\t\t\t\t\t\t\tvariables[parts[0]] = parts[1];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (!variables.hasOwnProperty('FORMAT')) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst resolution = readStream.readLine().split(' ');\n\t\t\t\tif (resolution.length !== 4) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst height = parseInt(resolution[1], 10);\n\t\t\t\tconst width = parseInt(resolution[3], 10);\n\t\t\t\tconst pixels = this._readPixels(readStream, width, height, resolution[0] === '-Y');\n\t\t\t\tif (!pixels) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\tpixels\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t}\n\t\t_readPixels(readStream, width, height, flipY) {\n\t\t\t\tif (width < 8 || width > 0x7fff) {\n\t\t\t\t\t\treturn this._readPixelsFlat(readStream, width, height);\n\t\t\t\t}\n\t\t\t\tconst rgbe = [\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0\n\t\t\t\t];\n\t\t\t\treadStream.readArray(rgbe);\n\t\t\t\tif (rgbe[0] !== 2 || rgbe[1] !== 2 || (rgbe[2] & 0x80) !== 0) {\n\t\t\t\t\t\treadStream.skip(-4);\n\t\t\t\t\t\treturn this._readPixelsFlat(readStream, width, height);\n\t\t\t\t}\n\t\t\t\tconst buffer = new ArrayBuffer(width * height * 4);\n\t\t\t\tconst view = new Uint8Array(buffer);\n\t\t\t\tlet scanstart = flipY ? 0 : width * 4 * (height - 1);\n\t\t\t\tlet x, y, i, channel, count, value;\n\t\t\t\tfor(y = 0; y < height; ++y){\n\t\t\t\t\t\tif (y) {\n\t\t\t\t\t\t\t\treadStream.readArray(rgbe);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ((rgbe[2] << 8) + rgbe[3] !== width) {\n\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tfor(channel = 0; channel < 4; ++channel){\n\t\t\t\t\t\t\t\tx = 0;\n\t\t\t\t\t\t\t\twhile(x < width){\n\t\t\t\t\t\t\t\t\t\tcount = readStream.readU8();\n\t\t\t\t\t\t\t\t\t\tif (count > 128) {\n\t\t\t\t\t\t\t\t\t\t\t\tcount -= 128;\n\t\t\t\t\t\t\t\t\t\t\t\tif (x + count > width) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tvalue = readStream.readU8();\n\t\t\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < count; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tview[scanstart + channel + 4 * x++] = value;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tif (count === 0 || x + count > width) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn null;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tfor(i = 0; i < count; ++i){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tview[scanstart + channel + 4 * x++] = readStream.readU8();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscanstart += width * 4 * (flipY ? 1 : -1);\n\t\t\t\t}\n\t\t\t\treturn view;\n\t\t}\n\t\t_readPixelsFlat(readStream, width, height) {\n\t\t\t\treturn readStream.remainingBytes === width * height * 4 ? new Uint8Array(readStream.arraybuffer, readStream.offset) : null;\n\t\t}\n}\n\nconst JSON_ADDRESS_MODE = {\n\t\t'repeat': ADDRESS_REPEAT,\n\t\t'clamp': ADDRESS_CLAMP_TO_EDGE,\n\t\t'mirror': ADDRESS_MIRRORED_REPEAT\n};\nconst JSON_FILTER_MODE = {\n\t\t'nearest': FILTER_NEAREST,\n\t\t'linear': FILTER_LINEAR,\n\t\t'nearest_mip_nearest': FILTER_NEAREST_MIPMAP_NEAREST,\n\t\t'linear_mip_nearest': FILTER_LINEAR_MIPMAP_NEAREST,\n\t\t'nearest_mip_linear': FILTER_NEAREST_MIPMAP_LINEAR,\n\t\t'linear_mip_linear': FILTER_LINEAR_MIPMAP_LINEAR\n};\nconst JSON_TEXTURE_TYPE = {\n\t\t'default': TEXTURETYPE_DEFAULT,\n\t\t'rgbm': TEXTURETYPE_RGBM,\n\t\t'rgbe': TEXTURETYPE_RGBE,\n\t\t'rgbp': TEXTURETYPE_RGBP,\n\t\t'swizzleGGGR': TEXTURETYPE_SWIZZLEGGGR\n};\nconst _completePartialMipmapChain = function(texture) {\n\t\tconst requiredMipLevels = TextureUtils.calcMipLevelsCount(texture._width, texture._height);\n\t\tconst isHtmlElement = function(object) {\n\t\t\t\treturn object instanceof HTMLCanvasElement || object instanceof HTMLImageElement || object instanceof HTMLVideoElement;\n\t\t};\n\t\tif (!(texture._format === PIXELFORMAT_RGBA8 || texture._format === PIXELFORMAT_RGBA32F) || texture._volume || texture._compressed || texture._levels.length === 1 || texture._levels.length === requiredMipLevels || isHtmlElement(texture._cubemap ? texture._levels[0][0] : texture._levels[0])) {\n\t\t\t\treturn;\n\t\t}\n\t\tconst downsample = function(width, height, data) {\n\t\t\t\tconst sampledWidth = Math.max(1, width >> 1);\n\t\t\t\tconst sampledHeight = Math.max(1, height >> 1);\n\t\t\t\tconst sampledData = new data.constructor(sampledWidth * sampledHeight * 4);\n\t\t\t\tconst xs = Math.floor(width / sampledWidth);\n\t\t\t\tconst ys = Math.floor(height / sampledHeight);\n\t\t\t\tconst xsys = xs * ys;\n\t\t\t\tfor(let y = 0; y < sampledHeight; ++y){\n\t\t\t\t\t\tfor(let x = 0; x < sampledWidth; ++x){\n\t\t\t\t\t\t\t\tfor(let e = 0; e < 4; ++e){\n\t\t\t\t\t\t\t\t\t\tlet sum = 0;\n\t\t\t\t\t\t\t\t\t\tfor(let sy = 0; sy < ys; ++sy){\n\t\t\t\t\t\t\t\t\t\t\t\tfor(let sx = 0; sx < xs; ++sx){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsum += data[(x * xs + sx + (y * ys + sy) * width) * 4 + e];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tsampledData[(x + y * sampledWidth) * 4 + e] = sum / xsys;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn sampledData;\n\t\t};\n\t\tfor(let level = texture._levels.length; level < requiredMipLevels; ++level){\n\t\t\t\tconst width = Math.max(1, texture._width >> level - 1);\n\t\t\t\tconst height = Math.max(1, texture._height >> level - 1);\n\t\t\t\tif (texture._cubemap) {\n\t\t\t\t\t\tconst mips = [];\n\t\t\t\t\t\tfor(let face = 0; face < 6; ++face){\n\t\t\t\t\t\t\t\tmips.push(downsample(width, height, texture._levels[level - 1][face]));\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttexture._levels.push(mips);\n\t\t\t\t} else {\n\t\t\t\t\t\ttexture._levels.push(downsample(width, height, texture._levels[level - 1]));\n\t\t\t\t}\n\t\t}\n\t\ttexture._levelsUpdated = texture._cubemap ? [\n\t\t\t\t[\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue,\n\t\t\t\t\t\ttrue\n\t\t\t\t]\n\t\t] : [\n\t\t\t\ttrue\n\t\t];\n};\nclass TextureHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'texture');\n\t\t\t\tconst assets = app.assets;\n\t\t\t\tconst device = app.graphicsDevice;\n\t\t\t\tthis._device = device;\n\t\t\t\tthis._assets = assets;\n\t\t\t\tthis.imgParser = new ImgParser(assets, device);\n\t\t\t\tthis.parsers = {\n\t\t\t\t\t\tdds: new DdsParser(assets),\n\t\t\t\t\t\tktx: new KtxParser(assets),\n\t\t\t\t\t\tktx2: new Ktx2Parser(assets, device),\n\t\t\t\t\t\tbasis: new BasisParser(assets, device),\n\t\t\t\t\t\thdr: new HdrParser(assets)\n\t\t\t\t};\n\t\t}\n\t\tset crossOrigin(value) {\n\t\t\t\tthis.imgParser.crossOrigin = value;\n\t\t}\n\t\tget crossOrigin() {\n\t\t\t\treturn this.imgParser.crossOrigin;\n\t\t}\n\t\tset maxRetries(value) {\n\t\t\t\tthis.imgParser.maxRetries = value;\n\t\t\t\tfor(const parser in this.parsers){\n\t\t\t\t\t\tif (this.parsers.hasOwnProperty(parser)) {\n\t\t\t\t\t\t\t\tthis.parsers[parser].maxRetries = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget maxRetries() {\n\t\t\t\treturn this.imgParser.maxRetries;\n\t\t}\n\t\t_getUrlWithoutParams(url) {\n\t\t\t\treturn url.indexOf('?') >= 0 ? url.split('?')[0] : url;\n\t\t}\n\t\t_getParser(url) {\n\t\t\t\tconst ext = path.getExtension(this._getUrlWithoutParams(url)).toLowerCase().replace('.', '');\n\t\t\t\treturn this.parsers[ext] || this.imgParser;\n\t\t}\n\t\t_getTextureOptions(asset) {\n\t\t\t\tconst options = {};\n\t\t\t\tif (asset) {\n\t\t\t\t\t\tif (asset.name?.length > 0) {\n\t\t\t\t\t\t\t\toptions.name = asset.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst assetData = asset.data;\n\t\t\t\t\t\tif (assetData.hasOwnProperty('minfilter')) {\n\t\t\t\t\t\t\t\toptions.minFilter = JSON_FILTER_MODE[assetData.minfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('magfilter')) {\n\t\t\t\t\t\t\t\toptions.magFilter = JSON_FILTER_MODE[assetData.magfilter];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('addressu')) {\n\t\t\t\t\t\t\t\toptions.addressU = JSON_ADDRESS_MODE[assetData.addressu];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('addressv')) {\n\t\t\t\t\t\t\t\toptions.addressV = JSON_ADDRESS_MODE[assetData.addressv];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('mipmaps')) {\n\t\t\t\t\t\t\t\toptions.mipmaps = assetData.mipmaps;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('anisotropy')) {\n\t\t\t\t\t\t\t\toptions.anisotropy = assetData.anisotropy;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('flipY')) {\n\t\t\t\t\t\t\t\toptions.flipY = !!assetData.flipY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (assetData.hasOwnProperty('srgb')) {\n\t\t\t\t\t\t\t\toptions.srgb = !!assetData.srgb;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toptions.type = TEXTURETYPE_DEFAULT;\n\t\t\t\t\t\tif (assetData.hasOwnProperty('type')) {\n\t\t\t\t\t\t\t\toptions.type = JSON_TEXTURE_TYPE[assetData.type];\n\t\t\t\t\t\t} else if (assetData.hasOwnProperty('rgbm') && assetData.rgbm) {\n\t\t\t\t\t\t\t\toptions.type = TEXTURETYPE_RGBM;\n\t\t\t\t\t\t} else if (asset.file && (asset.file.opt & 8) !== 0) {\n\t\t\t\t\t\t\t\toptions.type = TEXTURETYPE_SWIZZLEGGGR;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn options;\n\t\t}\n\t\tload(url, callback, asset) {\n\t\t\t\tif (typeof url === 'string') {\n\t\t\t\t\t\turl = {\n\t\t\t\t\t\t\t\tload: url,\n\t\t\t\t\t\t\t\toriginal: url\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tthis._getParser(url.original).load(url, callback, asset);\n\t\t}\n\t\topen(url, data, asset) {\n\t\t\t\tif (!url) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tconst textureOptions = this._getTextureOptions(asset);\n\t\t\t\tlet texture = this._getParser(url).open(url, data, this._device, textureOptions);\n\t\t\t\tif (texture === null) {\n\t\t\t\t\t\ttexture = new Texture(this._device, {\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGB8\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\t_completePartialMipmapChain(texture);\n\t\t\t\t\t\tif (data.unswizzledGGGR) {\n\t\t\t\t\t\t\t\tasset.file.variants.basis.opt &= -9;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn texture;\n\t\t}\n\t\tpatch(asset, assets) {\n\t\t\t\tconst texture = asset.resource;\n\t\t\t\tif (!texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst options = this._getTextureOptions(asset);\n\t\t\t\tfor (const key of Object.keys(options)){\n\t\t\t\t\t\ttexture[key] = options[key];\n\t\t\t\t}\n\t\t}\n}\n\nconst XRTYPE_INLINE = 'inline';\nconst XRTYPE_VR = 'immersive-vr';\nconst XRTYPE_AR = 'immersive-ar';\nconst XRSPACE_VIEWER = 'viewer';\nconst XRSPACE_LOCAL = 'local';\nconst XRSPACE_LOCALFLOOR = 'local-floor';\nconst XRSPACE_BOUNDEDFLOOR = 'bounded-floor';\nconst XRSPACE_UNBOUNDED = 'unbounded';\nconst XRTARGETRAY_GAZE = 'gaze';\nconst XRTARGETRAY_SCREEN = 'screen';\nconst XRTARGETRAY_POINTER = 'tracked-pointer';\nconst XREYE_NONE = 'none';\nconst XREYE_LEFT = 'left';\nconst XREYE_RIGHT = 'right';\nconst XRHAND_NONE = 'none';\nconst XRHAND_LEFT = 'left';\nconst XRHAND_RIGHT = 'right';\nconst XRTRACKABLE_POINT = 'point';\nconst XRTRACKABLE_PLANE = 'plane';\nconst XRTRACKABLE_MESH = 'mesh';\nconst XRDEPTHSENSINGUSAGE_CPU = 'cpu-optimized';\nconst XRDEPTHSENSINGUSAGE_GPU = 'gpu-optimized';\nconst XRDEPTHSENSINGFORMAT_L8A8 = 'luminance-alpha';\nconst XRDEPTHSENSINGFORMAT_R16U = 'unsigned-short';\nconst XRDEPTHSENSINGFORMAT_F32 = 'float32';\n\nclass XrDomOverlay {\n\t\tconstructor(manager){\n\t\t\t\tthis._supported = platform.browser && !!window.XRDOMOverlayState;\n\t\t\t\tthis._root = null;\n\t\t\t\tthis._manager = manager;\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._supported && this._manager.active && this._manager._session.domOverlayState !== null;\n\t\t}\n\t\tget state() {\n\t\t\t\tif (!this._supported || !this._manager.active || !this._manager._session.domOverlayState) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._manager._session.domOverlayState.type;\n\t\t}\n\t\tset root(value) {\n\t\t\t\tif (!this._supported || this._manager.active) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._root = value;\n\t\t}\n\t\tget root() {\n\t\t\t\treturn this._root;\n\t\t}\n}\n\nconst poolVec3 = [];\nconst poolQuat = [];\nclass XrHitTestSource extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESULT = 'result';\n\t\t}\n\t\tconstructor(manager, xrHitTestSource, transient, inputSource = null){\n\t\t\t\tsuper();\n\t\t\t\tthis.manager = manager;\n\t\t\t\tthis._xrHitTestSource = xrHitTestSource;\n\t\t\t\tthis._transient = transient;\n\t\t\t\tthis._inputSource = inputSource;\n\t\t}\n\t\tremove() {\n\t\t\t\tif (!this._xrHitTestSource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst sources = this.manager.hitTest.sources;\n\t\t\t\tconst ind = sources.indexOf(this);\n\t\t\t\tif (ind !== -1) sources.splice(ind, 1);\n\t\t\t\tthis.onStop();\n\t\t}\n\t\tonStop() {\n\t\t\t\tthis._xrHitTestSource.cancel();\n\t\t\t\tthis._xrHitTestSource = null;\n\t\t\t\tthis.fire('remove');\n\t\t\t\tthis.manager.hitTest.fire('remove', this);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (this._transient) {\n\t\t\t\t\t\tconst transientResults = frame.getHitTestResultsForTransientInput(this._xrHitTestSource);\n\t\t\t\t\t\tfor(let i = 0; i < transientResults.length; i++){\n\t\t\t\t\t\t\t\tconst transientResult = transientResults[i];\n\t\t\t\t\t\t\t\tif (!transientResult.results.length) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tlet inputSource;\n\t\t\t\t\t\t\t\tif (transientResult.inputSource) {\n\t\t\t\t\t\t\t\t\t\tinputSource = this.manager.input._getByInputSource(transientResult.inputSource);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.updateHitResults(transientResult.results, inputSource);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tconst results = frame.getHitTestResults(this._xrHitTestSource);\n\t\t\t\t\t\tif (!results.length) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.updateHitResults(results);\n\t\t\t\t}\n\t\t}\n\t\tupdateHitResults(results, inputSource) {\n\t\t\t\tif (this._inputSource && this._inputSource !== inputSource) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst origin = poolVec3.pop() ?? new Vec3();\n\t\t\t\tif (inputSource) {\n\t\t\t\t\t\torigin.copy(inputSource.getOrigin());\n\t\t\t\t} else {\n\t\t\t\t\t\torigin.copy(this.manager.camera.getPosition());\n\t\t\t\t}\n\t\t\t\tlet candidateDistance = Infinity;\n\t\t\t\tlet candidateHitTestResult = null;\n\t\t\t\tconst position = poolVec3.pop() ?? new Vec3();\n\t\t\t\tconst rotation = poolQuat.pop() ?? new Quat();\n\t\t\t\tfor(let i = 0; i < results.length; i++){\n\t\t\t\t\t\tconst pose = results[i].getPose(this.manager._referenceSpace);\n\t\t\t\t\t\tconst distance = origin.distance(pose.transform.position);\n\t\t\t\t\t\tif (distance >= candidateDistance) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcandidateDistance = distance;\n\t\t\t\t\t\tcandidateHitTestResult = results[i];\n\t\t\t\t\t\tposition.copy(pose.transform.position);\n\t\t\t\t\t\trotation.copy(pose.transform.orientation);\n\t\t\t\t}\n\t\t\t\tthis.fire('result', position, rotation, inputSource || this._inputSource, candidateHitTestResult);\n\t\t\t\tthis.manager.hitTest.fire('result', this, position, rotation, inputSource || this._inputSource, candidateHitTestResult);\n\t\t\t\tpoolVec3.push(origin);\n\t\t\t\tpoolVec3.push(position);\n\t\t\t\tpoolQuat.push(rotation);\n\t\t}\n}\n\nclass XrHitTest extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RESULT = 'result';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!(window.XRSession && window.XRSession.prototype.requestHitTestSource), this._available = false, this._checkingAvailability = false, this.sources = [];\n\t\t\t\tthis.manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis.manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis.manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this.manager.session.enabledFeatures) {\n\t\t\t\t\t\tconst available = this.manager.session.enabledFeatures.indexOf('hit-test') !== -1;\n\t\t\t\t\t\tif (!available) return;\n\t\t\t\t\t\tthis._available = available;\n\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t} else if (!this._checkingAvailability) {\n\t\t\t\t\t\tthis._checkingAvailability = true;\n\t\t\t\t\t\tthis.manager.session.requestReferenceSpace(XRSPACE_VIEWER).then((referenceSpace)=>{\n\t\t\t\t\t\t\t\tthis.manager.session.requestHitTestSource({\n\t\t\t\t\t\t\t\t\t\tspace: referenceSpace\n\t\t\t\t\t\t\t\t}).then((hitTestSource)=>{\n\t\t\t\t\t\t\t\t\t\thitTestSource.cancel();\n\t\t\t\t\t\t\t\t\t\tif (this.manager.active) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch(()=>{});\n\t\t\t\t\t\t}).catch(()=>{});\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tthis._available = false;\n\t\t\t\tfor(let i = 0; i < this.sources.length; i++){\n\t\t\t\t\t\tthis.sources[i].onStop();\n\t\t\t\t}\n\t\t\t\tthis.sources = [];\n\t\t\t\tthis.fire('unavailable');\n\t\t}\n\t\tstart(options = {}) {\n\t\t\t\tif (!this._supported) {\n\t\t\t\t\t\toptions.callback?.(new Error('XR HitTest is not supported'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\toptions.callback?.(new Error('XR HitTest is not available'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!options.profile && !options.spaceType) {\n\t\t\t\t\t\toptions.spaceType = XRSPACE_VIEWER;\n\t\t\t\t}\n\t\t\t\tlet xrRay;\n\t\t\t\tconst offsetRay = options.offsetRay;\n\t\t\t\tif (offsetRay) {\n\t\t\t\t\t\tconst origin = new DOMPoint(offsetRay.origin.x, offsetRay.origin.y, offsetRay.origin.z, 1.0);\n\t\t\t\t\t\tconst direction = new DOMPoint(offsetRay.direction.x, offsetRay.direction.y, offsetRay.direction.z, 0.0);\n\t\t\t\t\t\txrRay = new XRRay(origin, direction);\n\t\t\t\t}\n\t\t\t\tconst callback = options.callback;\n\t\t\t\tif (options.spaceType) {\n\t\t\t\t\t\tthis.manager.session.requestReferenceSpace(options.spaceType).then((referenceSpace)=>{\n\t\t\t\t\t\t\t\tif (!this.manager.session) {\n\t\t\t\t\t\t\t\t\t\tconst err = new Error('XR Session is not started (2)');\n\t\t\t\t\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.manager.session.requestHitTestSource({\n\t\t\t\t\t\t\t\t\t\tspace: referenceSpace,\n\t\t\t\t\t\t\t\t\t\tentityTypes: options.entityTypes || undefined,\n\t\t\t\t\t\t\t\t\t\toffsetRay: xrRay\n\t\t\t\t\t\t\t\t}).then((xrHitTestSource)=>{\n\t\t\t\t\t\t\t\t\t\tthis._onHitTestSource(xrHitTestSource, false, options.inputSource, callback);\n\t\t\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.manager.session.requestHitTestSourceForTransientInput({\n\t\t\t\t\t\t\t\tprofile: options.profile,\n\t\t\t\t\t\t\t\tentityTypes: options.entityTypes || undefined,\n\t\t\t\t\t\t\t\toffsetRay: xrRay\n\t\t\t\t\t\t}).then((xrHitTestSource)=>{\n\t\t\t\t\t\t\t\tthis._onHitTestSource(xrHitTestSource, true, options.inputSource, callback);\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\t_onHitTestSource(xrHitTestSource, transient, inputSource, callback) {\n\t\t\t\tif (!this.manager.session) {\n\t\t\t\t\t\txrHitTestSource.cancel();\n\t\t\t\t\t\tconst err = new Error('XR Session is not started (3)');\n\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst hitTestSource = new XrHitTestSource(this.manager, xrHitTestSource, transient, inputSource ?? null);\n\t\t\t\tthis.sources.push(hitTestSource);\n\t\t\t\tif (callback) callback(null, hitTestSource);\n\t\t\t\tthis.fire('add', hitTestSource);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.sources.length; i++){\n\t\t\t\t\t\tthis.sources[i].update(frame);\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n}\n\nclass XrTrackedImage extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRACKED = 'tracked';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNTRACKED = 'untracked';\n\t\t}\n\t\tconstructor(image, width){\n\t\t\t\tsuper(), this._bitmap = null, this._measuredWidth = 0, this._trackable = false, this._tracking = false, this._emulated = false, this._pose = null, this._position = new Vec3(), this._rotation = new Quat();\n\t\t\t\tthis._image = image;\n\t\t\t\tthis._width = width;\n\t\t}\n\t\tget image() {\n\t\t\t\treturn this._image;\n\t\t}\n\t\tset width(value) {\n\t\t\t\tthis._width = value;\n\t\t}\n\t\tget width() {\n\t\t\t\treturn this._width;\n\t\t}\n\t\tget trackable() {\n\t\t\t\treturn this._trackable;\n\t\t}\n\t\tget tracking() {\n\t\t\t\treturn this._tracking;\n\t\t}\n\t\tget emulated() {\n\t\t\t\treturn this._emulated;\n\t\t}\n\t\tprepare() {\n\t\t\t\tif (this._bitmap) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\timage: this._bitmap,\n\t\t\t\t\t\t\t\twidthInMeters: this._width\n\t\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\treturn createImageBitmap(this._image).then((bitmap)=>{\n\t\t\t\t\t\tthis._bitmap = bitmap;\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\timage: this._bitmap,\n\t\t\t\t\t\t\t\twidthInMeters: this._width\n\t\t\t\t\t\t};\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._image = null;\n\t\t\t\tthis._pose = null;\n\t\t\t\tif (this._bitmap) {\n\t\t\t\t\t\tthis._bitmap.close();\n\t\t\t\t\t\tthis._bitmap = null;\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tif (this._pose) this._position.copy(this._pose.transform.position);\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tif (this._pose) this._rotation.copy(this._pose.transform.orientation);\n\t\t\t\treturn this._rotation;\n\t\t}\n}\n\nclass XrImageTracking extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRImageTrackingResult, this._available = false, this._images = [];\n\t\t\t\tthis._manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\tadd(image, width) {\n\t\t\t\tif (!this._supported || this._manager.active) return null;\n\t\t\t\tconst trackedImage = new XrTrackedImage(image, width);\n\t\t\t\tthis._images.push(trackedImage);\n\t\t\t\treturn trackedImage;\n\t\t}\n\t\tremove(trackedImage) {\n\t\t\t\tif (this._manager.active) return;\n\t\t\t\tconst ind = this._images.indexOf(trackedImage);\n\t\t\t\tif (ind !== -1) {\n\t\t\t\t\t\ttrackedImage.destroy();\n\t\t\t\t\t\tthis._images.splice(ind, 1);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tthis._manager.session.getTrackedImageScores().then((images)=>{\n\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\tfor(let i = 0; i < images.length; i++){\n\t\t\t\t\t\t\t\tthis._images[i]._trackable = images[i] === 'trackable';\n\t\t\t\t\t\t}\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tthis._available = false;\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t});\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tthis._available = false;\n\t\t\t\tfor(let i = 0; i < this._images.length; i++){\n\t\t\t\t\t\tconst image = this._images[i];\n\t\t\t\t\t\timage._pose = null;\n\t\t\t\t\t\timage._measuredWidth = 0;\n\t\t\t\t\t\tif (image._tracking) {\n\t\t\t\t\t\t\t\timage._tracking = false;\n\t\t\t\t\t\t\t\timage.fire('untracked');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprepareImages(callback) {\n\t\t\t\tif (this._images.length) {\n\t\t\t\t\t\tPromise.all(this._images.map((trackedImage)=>{\n\t\t\t\t\t\t\t\treturn trackedImage.prepare();\n\t\t\t\t\t\t})).then((bitmaps)=>{\n\t\t\t\t\t\t\t\tcallback(null, bitmaps);\n\t\t\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\t\t\tcallback(err, null);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tcallback(null, null);\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tconst results = frame.getImageTrackingResults();\n\t\t\t\tconst index = {};\n\t\t\t\tfor(let i = 0; i < results.length; i++){\n\t\t\t\t\t\tindex[results[i].index] = results[i];\n\t\t\t\t\t\tconst trackedImage = this._images[results[i].index];\n\t\t\t\t\t\ttrackedImage._emulated = results[i].trackingState === 'emulated';\n\t\t\t\t\t\ttrackedImage._measuredWidth = results[i].measuredWidthInMeters;\n\t\t\t\t\t\ttrackedImage._pose = frame.getPose(results[i].imageSpace, this._manager._referenceSpace);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._images.length; i++){\n\t\t\t\t\t\tif (this._images[i]._tracking && !index[i]) {\n\t\t\t\t\t\t\t\tthis._images[i]._tracking = false;\n\t\t\t\t\t\t\t\tthis._images[i].fire('untracked');\n\t\t\t\t\t\t} else if (!this._images[i]._tracking && index[i]) {\n\t\t\t\t\t\t\t\tthis._images[i]._tracking = true;\n\t\t\t\t\t\t\t\tthis._images[i].fire('tracked');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget images() {\n\t\t\t\treturn this._images;\n\t\t}\n}\n\nclass XrFinger {\n\t\tconstructor(index, hand){\n\t\t\t\tthis._joints = [];\n\t\t\t\tthis._tip = null;\n\t\t\t\tthis._index = index;\n\t\t\t\tthis._hand = hand;\n\t\t\t\tthis._hand._fingers.push(this);\n\t\t}\n\t\tget index() {\n\t\t\t\treturn this._index;\n\t\t}\n\t\tget hand() {\n\t\t\t\treturn this._hand;\n\t\t}\n\t\tget joints() {\n\t\t\t\treturn this._joints;\n\t\t}\n\t\tget tip() {\n\t\t\t\treturn this._tip;\n\t\t}\n}\n\nconst tipJointIds = platform.browser && window.XRHand ? [\n\t\t'thumb-tip',\n\t\t'index-finger-tip',\n\t\t'middle-finger-tip',\n\t\t'ring-finger-tip',\n\t\t'pinky-finger-tip'\n] : [];\nconst tipJointIdsIndex = {};\nfor(let i = 0; i < tipJointIds.length; i++){\n\t\ttipJointIdsIndex[tipJointIds[i]] = true;\n}\nclass XrJoint {\n\t\tconstructor(index, id, hand, finger = null){\n\t\t\t\tthis._radius = null;\n\t\t\t\tthis._localTransform = new Mat4();\n\t\t\t\tthis._worldTransform = new Mat4();\n\t\t\t\tthis._localPosition = new Vec3();\n\t\t\t\tthis._localRotation = new Quat();\n\t\t\t\tthis._position = new Vec3();\n\t\t\t\tthis._rotation = new Quat();\n\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\tthis._index = index;\n\t\t\t\tthis._id = id;\n\t\t\t\tthis._hand = hand;\n\t\t\t\tthis._finger = finger;\n\t\t\t\tthis._wrist = id === 'wrist';\n\t\t\t\tthis._tip = this._finger && !!tipJointIdsIndex[id];\n\t\t}\n\t\tupdate(pose) {\n\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\tthis._radius = pose.radius;\n\t\t\t\tthis._localPosition.copy(pose.transform.position);\n\t\t\t\tthis._localRotation.copy(pose.transform.orientation);\n\t\t}\n\t\t_updateTransforms() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t\t\tthis._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE);\n\t\t\t\t}\n\t\t\t\tconst manager = this._hand._manager;\n\t\t\t\tconst parent = manager.camera.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._worldTransform.mul2(parent.getWorldTransform(), this._localTransform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._worldTransform.copy(this._localTransform);\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._worldTransform.getTranslation(this._position);\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._rotation.setFromMat4(this._worldTransform);\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tget index() {\n\t\t\t\treturn this._index;\n\t\t}\n\t\tget hand() {\n\t\t\t\treturn this._hand;\n\t\t}\n\t\tget finger() {\n\t\t\t\treturn this._finger;\n\t\t}\n\t\tget wrist() {\n\t\t\t\treturn this._wrist;\n\t\t}\n\t\tget tip() {\n\t\t\t\treturn this._tip;\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this._radius || 0.005;\n\t\t}\n}\n\nlet fingerJointIds = [];\nconst vecA$1 = new Vec3();\nconst vecB$1 = new Vec3();\nconst vecC = new Vec3();\nif (platform.browser && window.XRHand) {\n\t\tfingerJointIds = [\n\t\t\t\t[\n\t\t\t\t\t\t'thumb-metacarpal',\n\t\t\t\t\t\t'thumb-phalanx-proximal',\n\t\t\t\t\t\t'thumb-phalanx-distal',\n\t\t\t\t\t\t'thumb-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'index-finger-metacarpal',\n\t\t\t\t\t\t'index-finger-phalanx-proximal',\n\t\t\t\t\t\t'index-finger-phalanx-intermediate',\n\t\t\t\t\t\t'index-finger-phalanx-distal',\n\t\t\t\t\t\t'index-finger-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'middle-finger-metacarpal',\n\t\t\t\t\t\t'middle-finger-phalanx-proximal',\n\t\t\t\t\t\t'middle-finger-phalanx-intermediate',\n\t\t\t\t\t\t'middle-finger-phalanx-distal',\n\t\t\t\t\t\t'middle-finger-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'ring-finger-metacarpal',\n\t\t\t\t\t\t'ring-finger-phalanx-proximal',\n\t\t\t\t\t\t'ring-finger-phalanx-intermediate',\n\t\t\t\t\t\t'ring-finger-phalanx-distal',\n\t\t\t\t\t\t'ring-finger-tip'\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\t\t'pinky-finger-metacarpal',\n\t\t\t\t\t\t'pinky-finger-phalanx-proximal',\n\t\t\t\t\t\t'pinky-finger-phalanx-intermediate',\n\t\t\t\t\t\t'pinky-finger-phalanx-distal',\n\t\t\t\t\t\t'pinky-finger-tip'\n\t\t\t\t]\n\t\t];\n}\nclass XrHand extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRACKING = 'tracking';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRACKINGLOST = 'trackinglost';\n\t\t}\n\t\tconstructor(inputSource){\n\t\t\t\tsuper(), this._tracking = false, this._fingers = [], this._joints = [], this._jointsById = {}, this._tips = [], this._wrist = null;\n\t\t\t\tconst xrHand = inputSource._xrInputSource.hand;\n\t\t\t\tthis._manager = inputSource._manager;\n\t\t\t\tthis._inputSource = inputSource;\n\t\t\t\tif (xrHand.get('wrist')) {\n\t\t\t\t\t\tconst joint = new XrJoint(0, 'wrist', this, null);\n\t\t\t\t\t\tthis._wrist = joint;\n\t\t\t\t\t\tthis._joints.push(joint);\n\t\t\t\t\t\tthis._jointsById.wrist = joint;\n\t\t\t\t}\n\t\t\t\tfor(let f = 0; f < fingerJointIds.length; f++){\n\t\t\t\t\t\tconst finger = new XrFinger(f, this);\n\t\t\t\t\t\tfor(let j = 0; j < fingerJointIds[f].length; j++){\n\t\t\t\t\t\t\t\tconst jointId = fingerJointIds[f][j];\n\t\t\t\t\t\t\t\tif (!xrHand.get(jointId)) continue;\n\t\t\t\t\t\t\t\tconst joint = new XrJoint(j, jointId, this, finger);\n\t\t\t\t\t\t\t\tthis._joints.push(joint);\n\t\t\t\t\t\t\t\tthis._jointsById[jointId] = joint;\n\t\t\t\t\t\t\t\tif (joint.tip) {\n\t\t\t\t\t\t\t\t\t\tthis._tips.push(joint);\n\t\t\t\t\t\t\t\t\t\tfinger._tip = joint;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tfinger._joints.push(joint);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tconst xrInputSource = this._inputSource._xrInputSource;\n\t\t\t\tfor(let j = 0; j < this._joints.length; j++){\n\t\t\t\t\t\tconst joint = this._joints[j];\n\t\t\t\t\t\tconst jointSpace = xrInputSource.hand.get(joint._id);\n\t\t\t\t\t\tif (jointSpace) {\n\t\t\t\t\t\t\t\tlet pose;\n\t\t\t\t\t\t\t\tif (frame.session.visibilityState !== 'hidden') {\n\t\t\t\t\t\t\t\t\t\tpose = frame.getJointPose(jointSpace, this._manager._referenceSpace);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (pose) {\n\t\t\t\t\t\t\t\t\t\tjoint.update(pose);\n\t\t\t\t\t\t\t\t\t\tif (joint.wrist && !this._tracking) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._tracking = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('tracking');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else if (joint.wrist) {\n\t\t\t\t\t\t\t\t\t\tif (this._tracking) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._tracking = false;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('trackinglost');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst j1 = this._jointsById['thumb-metacarpal'];\n\t\t\t\tconst j4 = this._jointsById['thumb-tip'];\n\t\t\t\tconst j6 = this._jointsById['index-finger-phalanx-proximal'];\n\t\t\t\tconst j9 = this._jointsById['index-finger-tip'];\n\t\t\t\tconst j16 = this._jointsById['ring-finger-phalanx-proximal'];\n\t\t\t\tconst j21 = this._jointsById['pinky-finger-phalanx-proximal'];\n\t\t\t\tif (j1 && j4 && j6 && j9 && j16 && j21) {\n\t\t\t\t\t\tthis._inputSource._dirtyRay = true;\n\t\t\t\t\t\tthis._inputSource._rayLocal.origin.lerp(j4._localPosition, j9._localPosition, 0.5);\n\t\t\t\t\t\tlet jointL = j1;\n\t\t\t\t\t\tlet jointR = j21;\n\t\t\t\t\t\tif (this._inputSource.handedness === XRHAND_LEFT) {\n\t\t\t\t\t\t\t\tconst t = jointL;\n\t\t\t\t\t\t\t\tjointL = jointR;\n\t\t\t\t\t\t\t\tjointR = t;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tvecA$1.sub2(jointL._localPosition, this._wrist._localPosition);\n\t\t\t\t\t\tvecB$1.sub2(jointR._localPosition, this._wrist._localPosition);\n\t\t\t\t\t\tvecC.cross(vecA$1, vecB$1).normalize();\n\t\t\t\t\t\tvecA$1.lerp(j6._localPosition, j16._localPosition, 0.5);\n\t\t\t\t\t\tvecA$1.sub(this._wrist._localPosition).normalize();\n\t\t\t\t\t\tthis._inputSource._rayLocal.direction.lerp(vecC, vecA$1, 0.5).normalize();\n\t\t\t\t}\n\t\t\t\tconst squeezing = this._fingerIsClosed(1) && this._fingerIsClosed(2) && this._fingerIsClosed(3) && this._fingerIsClosed(4);\n\t\t\t\tif (squeezing) {\n\t\t\t\t\t\tif (!this._inputSource._squeezing) {\n\t\t\t\t\t\t\t\tthis._inputSource._squeezing = true;\n\t\t\t\t\t\t\t\tthis._inputSource.fire('squeezestart');\n\t\t\t\t\t\t\t\tthis._manager.input.fire('squeezestart', this._inputSource);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._inputSource._squeezing) {\n\t\t\t\t\t\t\t\tthis._inputSource._squeezing = false;\n\t\t\t\t\t\t\t\tthis._inputSource.fire('squeeze');\n\t\t\t\t\t\t\t\tthis._manager.input.fire('squeeze', this._inputSource);\n\t\t\t\t\t\t\t\tthis._inputSource.fire('squeezeend');\n\t\t\t\t\t\t\t\tthis._manager.input.fire('squeezeend', this._inputSource);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_fingerIsClosed(index) {\n\t\t\t\tconst finger = this._fingers[index];\n\t\t\t\tvecA$1.sub2(finger.joints[0]._localPosition, finger.joints[1]._localPosition).normalize();\n\t\t\t\tvecB$1.sub2(finger.joints[2]._localPosition, finger.joints[3]._localPosition).normalize();\n\t\t\t\treturn vecA$1.dot(vecB$1) < -0.8;\n\t\t}\n\t\tgetJointById(id) {\n\t\t\t\treturn this._jointsById[id] || null;\n\t\t}\n\t\tget fingers() {\n\t\t\t\treturn this._fingers;\n\t\t}\n\t\tget joints() {\n\t\t\t\treturn this._joints;\n\t\t}\n\t\tget tips() {\n\t\t\t\treturn this._tips;\n\t\t}\n\t\tget wrist() {\n\t\t\t\treturn this._wrist;\n\t\t}\n\t\tget tracking() {\n\t\t\t\treturn this._tracking;\n\t\t}\n}\n\nconst vec3A$1 = new Vec3();\nconst quat = new Quat();\nlet ids$1 = 0;\nclass XrInputSource extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECT = 'select';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTSTART = 'selectstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTEND = 'selectend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZE = 'squeeze';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZESTART = 'squeezestart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZEEND = 'squeezeend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HITTESTADD = 'hittest:add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HITTESTREMOVE = 'hittest:remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_HITTESTRESULT = 'hittest:result';\n\t\t}\n\t\tconstructor(manager, xrInputSource){\n\t\t\t\tsuper(), this._ray = new Ray(), this._rayLocal = new Ray(), this._grip = false, this._hand = null, this._velocitiesAvailable = false, this._velocitiesTimestamp = now(), this._localTransform = null, this._worldTransform = null, this._position = new Vec3(), this._rotation = new Quat(), this._localPosition = null, this._localPositionLast = null, this._localRotation = null, this._linearVelocity = null, this._dirtyLocal = true, this._dirtyRay = false, this._selecting = false, this._squeezing = false, this._elementInput = true, this._elementEntity = null, this._hitTestSources = [];\n\t\t\t\tthis._id = ++ids$1;\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._xrInputSource = xrInputSource;\n\t\t\t\tif (xrInputSource.hand) {\n\t\t\t\t\t\tthis._hand = new XrHand(this);\n\t\t\t\t}\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tget inputSource() {\n\t\t\t\treturn this._xrInputSource;\n\t\t}\n\t\tget targetRayMode() {\n\t\t\t\treturn this._xrInputSource.targetRayMode;\n\t\t}\n\t\tget handedness() {\n\t\t\t\treturn this._xrInputSource.handedness;\n\t\t}\n\t\tget profiles() {\n\t\t\t\treturn this._xrInputSource.profiles;\n\t\t}\n\t\tget grip() {\n\t\t\t\treturn this._grip;\n\t\t}\n\t\tget hand() {\n\t\t\t\treturn this._hand;\n\t\t}\n\t\tget gamepad() {\n\t\t\t\treturn this._xrInputSource.gamepad || null;\n\t\t}\n\t\tget selecting() {\n\t\t\t\treturn this._selecting;\n\t\t}\n\t\tget squeezing() {\n\t\t\t\treturn this._squeezing;\n\t\t}\n\t\tset elementInput(value) {\n\t\t\t\tif (this._elementInput === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._elementInput = value;\n\t\t\t\tif (!this._elementInput) {\n\t\t\t\t\t\tthis._elementEntity = null;\n\t\t\t\t}\n\t\t}\n\t\tget elementInput() {\n\t\t\t\treturn this._elementInput;\n\t\t}\n\t\tget elementEntity() {\n\t\t\t\treturn this._elementEntity;\n\t\t}\n\t\tget hitTestSources() {\n\t\t\t\treturn this._hitTestSources;\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (this._hand) {\n\t\t\t\t\t\tthis._hand.update(frame);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst gripSpace = this._xrInputSource.gripSpace;\n\t\t\t\t\t\tif (gripSpace) {\n\t\t\t\t\t\t\t\tconst gripPose = frame.getPose(gripSpace, this._manager._referenceSpace);\n\t\t\t\t\t\t\t\tif (gripPose) {\n\t\t\t\t\t\t\t\t\t\tif (!this._grip) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._grip = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localTransform = new Mat4();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._worldTransform = new Mat4();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localPositionLast = new Vec3();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localPosition = new Vec3();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._localRotation = new Quat();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._linearVelocity = new Vec3();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst timestamp = now();\n\t\t\t\t\t\t\t\t\t\tconst dt = (timestamp - this._velocitiesTimestamp) / 1000;\n\t\t\t\t\t\t\t\t\t\tthis._velocitiesTimestamp = timestamp;\n\t\t\t\t\t\t\t\t\t\tthis._dirtyLocal = true;\n\t\t\t\t\t\t\t\t\t\tthis._localPositionLast.copy(this._localPosition);\n\t\t\t\t\t\t\t\t\t\tthis._localPosition.copy(gripPose.transform.position);\n\t\t\t\t\t\t\t\t\t\tthis._localRotation.copy(gripPose.transform.orientation);\n\t\t\t\t\t\t\t\t\t\tthis._velocitiesAvailable = true;\n\t\t\t\t\t\t\t\t\t\tif (this._manager.input.velocitiesSupported && gripPose.linearVelocity) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._linearVelocity.copy(gripPose.linearVelocity);\n\t\t\t\t\t\t\t\t\t\t} else if (dt > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tvec3A$1.sub2(this._localPosition, this._localPositionLast).divScalar(dt);\n\t\t\t\t\t\t\t\t\t\t\t\tthis._linearVelocity.lerp(this._linearVelocity, vec3A$1, 0.15);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._velocitiesAvailable = false;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst targetRayPose = frame.getPose(this._xrInputSource.targetRaySpace, this._manager._referenceSpace);\n\t\t\t\t\t\tif (targetRayPose) {\n\t\t\t\t\t\t\t\tthis._dirtyRay = true;\n\t\t\t\t\t\t\t\tthis._rayLocal.origin.copy(targetRayPose.transform.position);\n\t\t\t\t\t\t\t\tthis._rayLocal.direction.set(0, 0, -1);\n\t\t\t\t\t\t\t\tquat.copy(targetRayPose.transform.orientation);\n\t\t\t\t\t\t\t\tquat.transformVector(this._rayLocal.direction, this._rayLocal.direction);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_updateTransforms() {\n\t\t\t\tif (this._dirtyLocal) {\n\t\t\t\t\t\tthis._dirtyLocal = false;\n\t\t\t\t\t\tthis._localTransform.setTRS(this._localPosition, this._localRotation, Vec3.ONE);\n\t\t\t\t}\n\t\t\t\tconst parent = this._manager.camera.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tthis._worldTransform.mul2(parent.getWorldTransform(), this._localTransform);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._worldTransform.copy(this._localTransform);\n\t\t\t\t}\n\t\t}\n\t\t_updateRayTransforms() {\n\t\t\t\tconst dirty = this._dirtyRay;\n\t\t\t\tthis._dirtyRay = false;\n\t\t\t\tconst parent = this._manager.camera.parent;\n\t\t\t\tif (parent) {\n\t\t\t\t\t\tconst parentTransform = this._manager.camera.parent.getWorldTransform();\n\t\t\t\t\t\tparentTransform.getTranslation(this._position);\n\t\t\t\t\t\tthis._rotation.setFromMat4(parentTransform);\n\t\t\t\t\t\tthis._rotation.transformVector(this._rayLocal.origin, this._ray.origin);\n\t\t\t\t\t\tthis._ray.origin.add(this._position);\n\t\t\t\t\t\tthis._rotation.transformVector(this._rayLocal.direction, this._ray.direction);\n\t\t\t\t} else if (dirty) {\n\t\t\t\t\t\tthis._ray.origin.copy(this._rayLocal.origin);\n\t\t\t\t\t\tthis._ray.direction.copy(this._rayLocal.direction);\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\tif (!this._position) return null;\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._worldTransform.getTranslation(this._position);\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetLocalPosition() {\n\t\t\t\treturn this._localPosition;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\tif (!this._rotation) return null;\n\t\t\t\tthis._updateTransforms();\n\t\t\t\tthis._rotation.setFromMat4(this._worldTransform);\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tgetLocalRotation() {\n\t\t\t\treturn this._localRotation;\n\t\t}\n\t\tgetLinearVelocity() {\n\t\t\t\tif (!this._velocitiesAvailable) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._linearVelocity;\n\t\t}\n\t\tgetOrigin() {\n\t\t\t\tthis._updateRayTransforms();\n\t\t\t\treturn this._ray.origin;\n\t\t}\n\t\tgetDirection() {\n\t\t\t\tthis._updateRayTransforms();\n\t\t\t\treturn this._ray.direction;\n\t\t}\n\t\thitTestStart(options = {}) {\n\t\t\t\toptions.inputSource = this;\n\t\t\t\toptions.profile = this._xrInputSource.profiles[0];\n\t\t\t\tconst callback = options.callback;\n\t\t\t\toptions.callback = (err, hitTestSource)=>{\n\t\t\t\t\t\tif (hitTestSource) this.onHitTestSourceAdd(hitTestSource);\n\t\t\t\t\t\tif (callback) callback(err, hitTestSource);\n\t\t\t\t};\n\t\t\t\tthis._manager.hitTest.start(options);\n\t\t}\n\t\tonHitTestSourceAdd(hitTestSource) {\n\t\t\t\tthis._hitTestSources.push(hitTestSource);\n\t\t\t\tthis.fire('hittest:add', hitTestSource);\n\t\t\t\thitTestSource.on('result', (position, rotation, inputSource, hitTestResult)=>{\n\t\t\t\t\t\tif (inputSource !== this) return;\n\t\t\t\t\t\tthis.fire('hittest:result', hitTestSource, position, rotation, hitTestResult);\n\t\t\t\t});\n\t\t\t\thitTestSource.once('remove', ()=>{\n\t\t\t\t\t\tthis.onHitTestSourceRemove(hitTestSource);\n\t\t\t\t\t\tthis.fire('hittest:remove', hitTestSource);\n\t\t\t\t});\n\t\t}\n\t\tonHitTestSourceRemove(hitTestSource) {\n\t\t\t\tconst ind = this._hitTestSources.indexOf(hitTestSource);\n\t\t\t\tif (ind !== -1) this._hitTestSources.splice(ind, 1);\n\t\t}\n}\n\nclass XrInput extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECT = 'select';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTSTART = 'selectstart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SELECTEND = 'selectend';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZE = 'squeeze';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZESTART = 'squeezestart';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SQUEEZEEND = 'squeezeend';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._inputSources = [], this.velocitiesSupported = false;\n\t\t\t\tthis.manager = manager;\n\t\t\t\tthis.velocitiesSupported = !!(platform.browser && window.XRPose?.prototype?.hasOwnProperty('linearVelocity'));\n\t\t\t\tthis._onInputSourcesChangeEvt = (evt)=>{\n\t\t\t\t\t\tthis._onInputSourcesChange(evt);\n\t\t\t\t};\n\t\t\t\tthis.manager.on('start', this._onSessionStart, this);\n\t\t\t\tthis.manager.on('end', this._onSessionEnd, this);\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tconst session = this.manager.session;\n\t\t\t\tsession.addEventListener('inputsourceschange', this._onInputSourcesChangeEvt);\n\t\t\t\tsession.addEventListener('select', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource.fire('select', evt);\n\t\t\t\t\t\tthis.fire('select', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('selectstart', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._selecting = true;\n\t\t\t\t\t\tinputSource.fire('selectstart', evt);\n\t\t\t\t\t\tthis.fire('selectstart', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('selectend', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._selecting = false;\n\t\t\t\t\t\tinputSource.fire('selectend', evt);\n\t\t\t\t\t\tthis.fire('selectend', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('squeeze', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource.fire('squeeze', evt);\n\t\t\t\t\t\tthis.fire('squeeze', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('squeezestart', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._squeezing = true;\n\t\t\t\t\t\tinputSource.fire('squeezestart', evt);\n\t\t\t\t\t\tthis.fire('squeezestart', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tsession.addEventListener('squeezeend', (evt)=>{\n\t\t\t\t\t\tconst inputSource = this._getByInputSource(evt.inputSource);\n\t\t\t\t\t\tinputSource.update(evt.frame);\n\t\t\t\t\t\tinputSource._squeezing = false;\n\t\t\t\t\t\tinputSource.fire('squeezeend', evt);\n\t\t\t\t\t\tthis.fire('squeezeend', inputSource, evt);\n\t\t\t\t});\n\t\t\t\tconst inputSources = session.inputSources;\n\t\t\t\tfor(let i = 0; i < inputSources.length; i++){\n\t\t\t\t\t\tthis._addInputSource(inputSources[i]);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tlet i = this._inputSources.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tconst inputSource = this._inputSources[i];\n\t\t\t\t\t\tthis._inputSources.splice(i, 1);\n\t\t\t\t\t\tinputSource.fire('remove');\n\t\t\t\t\t\tthis.fire('remove', inputSource);\n\t\t\t\t}\n\t\t\t\tconst session = this.manager.session;\n\t\t\t\tsession.removeEventListener('inputsourceschange', this._onInputSourcesChangeEvt);\n\t\t}\n\t\t_onInputSourcesChange(evt) {\n\t\t\t\tfor(let i = 0; i < evt.removed.length; i++){\n\t\t\t\t\t\tthis._removeInputSource(evt.removed[i]);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < evt.added.length; i++){\n\t\t\t\t\t\tthis._addInputSource(evt.added[i]);\n\t\t\t\t}\n\t\t}\n\t\t_getByInputSource(xrInputSource) {\n\t\t\t\tfor(let i = 0; i < this._inputSources.length; i++){\n\t\t\t\t\t\tif (this._inputSources[i].inputSource === xrInputSource) {\n\t\t\t\t\t\t\t\treturn this._inputSources[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t}\n\t\t_addInputSource(xrInputSource) {\n\t\t\t\tif (this._getByInputSource(xrInputSource)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst inputSource = new XrInputSource(this.manager, xrInputSource);\n\t\t\t\tthis._inputSources.push(inputSource);\n\t\t\t\tthis.fire('add', inputSource);\n\t\t}\n\t\t_removeInputSource(xrInputSource) {\n\t\t\t\tfor(let i = 0; i < this._inputSources.length; i++){\n\t\t\t\t\t\tif (this._inputSources[i].inputSource !== xrInputSource) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst inputSource = this._inputSources[i];\n\t\t\t\t\t\tthis._inputSources.splice(i, 1);\n\t\t\t\t\t\tlet h = inputSource.hitTestSources.length;\n\t\t\t\t\t\twhile(h--){\n\t\t\t\t\t\t\t\tinputSource.hitTestSources[h].remove();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tinputSource.fire('remove');\n\t\t\t\t\t\tthis.fire('remove', inputSource);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tfor(let i = 0; i < this._inputSources.length; i++){\n\t\t\t\t\t\tthis._inputSources[i].update(frame);\n\t\t\t\t}\n\t\t}\n\t\tget inputSources() {\n\t\t\t\treturn this._inputSources;\n\t\t}\n}\n\nconst vec3A = new Vec3();\nconst vec3B = new Vec3();\nconst mat4A = new Mat4();\nconst mat4B = new Mat4();\nclass XrLightEstimation extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = false, this._available = false, this._lightProbeRequested = false, this._lightProbe = null, this._intensity = 0, this._rotation = new Quat(), this._color = new Color(), this._sphericalHarmonics = new Float32Array(27);\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tconst supported = !!this._manager.session.requestLightProbe;\n\t\t\t\tif (!supported) return;\n\t\t\t\tthis._supported = true;\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tthis._supported = false;\n\t\t\t\tthis._available = false;\n\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\tthis._lightProbe = null;\n\t\t}\n\t\tstart() {\n\t\t\t\tlet err;\n\t\t\t\tif (!this._manager.session) {\n\t\t\t\t\t\terr = new Error('XR session is not running');\n\t\t\t\t}\n\t\t\t\tif (!err && this._manager.type !== XRTYPE_AR) {\n\t\t\t\t\t\terr = new Error('XR session type is not AR');\n\t\t\t\t}\n\t\t\t\tif (!err && !this._supported) {\n\t\t\t\t\t\terr = new Error('light-estimation is not supported');\n\t\t\t\t}\n\t\t\t\tif (!err && this._lightProbe || this._lightProbeRequested) {\n\t\t\t\t\t\terr = new Error('light estimation is already requested');\n\t\t\t\t}\n\t\t\t\tif (err) {\n\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._lightProbeRequested = true;\n\t\t\t\tthis._manager.session.requestLightProbe().then((lightProbe)=>{\n\t\t\t\t\t\tconst wasRequested = this._lightProbeRequested;\n\t\t\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\t\t\tif (this._manager.active) {\n\t\t\t\t\t\t\t\tif (wasRequested) {\n\t\t\t\t\t\t\t\t\t\tthis._lightProbe = lightProbe;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.fire('error', new Error('XR session is not active'));\n\t\t\t\t\t\t}\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tend() {\n\t\t\t\tthis._lightProbeRequested = false;\n\t\t\t\tthis._lightProbe = null;\n\t\t\t\tthis._available = false;\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._lightProbe) return;\n\t\t\t\tconst lightEstimate = frame.getLightEstimate(this._lightProbe);\n\t\t\t\tif (!lightEstimate) return;\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t}\n\t\t\t\tconst pli = lightEstimate.primaryLightIntensity;\n\t\t\t\tthis._intensity = Math.max(1.0, Math.max(pli.x, Math.max(pli.y, pli.z)));\n\t\t\t\tvec3A.copy(pli).mulScalar(1 / this._intensity);\n\t\t\t\tthis._color.set(vec3A.x, vec3A.y, vec3A.z);\n\t\t\t\tvec3A.set(0, 0, 0);\n\t\t\t\tvec3B.copy(lightEstimate.primaryLightDirection);\n\t\t\t\tmat4A.setLookAt(vec3B, vec3A, Vec3.UP);\n\t\t\t\tmat4B.setFromAxisAngle(Vec3.RIGHT, 90);\n\t\t\t\tmat4A.mul(mat4B);\n\t\t\t\tthis._rotation.setFromMat4(mat4A);\n\t\t\t\tthis._sphericalHarmonics.set(lightEstimate.sphericalHarmonicsCoefficients);\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget intensity() {\n\t\t\t\treturn this._available ? this._intensity : null;\n\t\t}\n\t\tget color() {\n\t\t\t\treturn this._available ? this._color : null;\n\t\t}\n\t\tget rotation() {\n\t\t\t\treturn this._available ? this._rotation : null;\n\t\t}\n\t\tget sphericalHarmonics() {\n\t\t\t\treturn this._available ? this._sphericalHarmonics : null;\n\t\t}\n}\n\nlet ids = 0;\nclass XrPlane extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(planeDetection, xrPlane){\n\t\t\t\tsuper(), this._position = new Vec3(), this._rotation = new Quat();\n\t\t\t\tthis._id = ++ids;\n\t\t\t\tthis._planeDetection = planeDetection;\n\t\t\t\tthis._xrPlane = xrPlane;\n\t\t\t\tthis._lastChangedTime = xrPlane.lastChangedTime;\n\t\t\t\tthis._orientation = xrPlane.orientation;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this._xrPlane) return;\n\t\t\t\tthis._xrPlane = null;\n\t\t\t\tthis.fire('remove');\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tconst manager = this._planeDetection._manager;\n\t\t\t\tconst pose = frame.getPose(this._xrPlane.planeSpace, manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\t\tthis._position.copy(pose.transform.position);\n\t\t\t\t\t\tthis._rotation.copy(pose.transform.orientation);\n\t\t\t\t}\n\t\t\t\tif (this._lastChangedTime !== this._xrPlane.lastChangedTime) {\n\t\t\t\t\t\tthis._lastChangedTime = this._xrPlane.lastChangedTime;\n\t\t\t\t\t\tthis.fire('change');\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tget id() {\n\t\t\t\treturn this._id;\n\t\t}\n\t\tget orientation() {\n\t\t\t\treturn this._orientation;\n\t\t}\n\t\tget points() {\n\t\t\t\treturn this._xrPlane.polygon;\n\t\t}\n\t\tget label() {\n\t\t\t\treturn this._xrPlane.semanticLabel || '';\n\t\t}\n}\n\nclass XrPlaneDetection extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRPlane, this._available = false, this._planesIndex = new Map(), this._planes = [];\n\t\t\t\tthis._manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this._manager.session.enabledFeatures) {\n\t\t\t\t\t\tconst available = this._manager.session.enabledFeatures.indexOf('plane-detection') !== -1;\n\t\t\t\t\t\tif (available) {\n\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tfor(let i = 0; i < this._planes.length; i++){\n\t\t\t\t\t\tthis._planes[i].destroy();\n\t\t\t\t\t\tthis.fire('remove', this._planes[i]);\n\t\t\t\t}\n\t\t\t\tthis._planesIndex.clear();\n\t\t\t\tthis._planes.length = 0;\n\t\t\t\tif (this._available) {\n\t\t\t\t\t\tthis._available = false;\n\t\t\t\t\t\tthis.fire('unavailable');\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tif (!this._manager.session.enabledFeatures && frame.detectedPlanes.size) {\n\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst detectedPlanes = frame.detectedPlanes;\n\t\t\t\tfor (const [xrPlane, plane] of this._planesIndex){\n\t\t\t\t\t\tif (detectedPlanes.has(xrPlane)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._planesIndex.delete(xrPlane);\n\t\t\t\t\t\tthis._planes.splice(this._planes.indexOf(plane), 1);\n\t\t\t\t\t\tplane.destroy();\n\t\t\t\t\t\tthis.fire('remove', plane);\n\t\t\t\t}\n\t\t\t\tfor (const xrPlane of detectedPlanes){\n\t\t\t\t\t\tlet plane = this._planesIndex.get(xrPlane);\n\t\t\t\t\t\tif (!plane) {\n\t\t\t\t\t\t\t\tplane = new XrPlane(this, xrPlane);\n\t\t\t\t\t\t\t\tthis._planesIndex.set(xrPlane, plane);\n\t\t\t\t\t\t\t\tthis._planes.push(plane);\n\t\t\t\t\t\t\t\tplane.update(frame);\n\t\t\t\t\t\t\t\tthis.fire('add', plane);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tplane.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget planes() {\n\t\t\t\treturn this._planes;\n\t\t}\n}\n\nclass XrAnchor extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_PERSIST = 'persist';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_FORGET = 'forget';\n\t\t}\n\t\tconstructor(anchors, xrAnchor, uuid = null){\n\t\t\t\tsuper(), this._position = new Vec3(), this._rotation = new Quat(), this._uuid = null, this._uuidRequests = null;\n\t\t\t\tthis._anchors = anchors;\n\t\t\t\tthis._xrAnchor = xrAnchor;\n\t\t\t\tthis._uuid = uuid;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this._xrAnchor) return;\n\t\t\t\tconst xrAnchor = this._xrAnchor;\n\t\t\t\tthis._xrAnchor.delete();\n\t\t\t\tthis._xrAnchor = null;\n\t\t\t\tthis.fire('destroy', xrAnchor, this);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._xrAnchor) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst pose = frame.getPose(this._xrAnchor.anchorSpace, this._anchors.manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\t\tif (this._position.equals(pose.transform.position) && this._rotation.equals(pose.transform.orientation)) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._position.copy(pose.transform.position);\n\t\t\t\t\t\tthis._rotation.copy(pose.transform.orientation);\n\t\t\t\t\t\tthis.fire('change');\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\treturn this._rotation;\n\t\t}\n\t\tpersist(callback) {\n\t\t\t\tif (!this._anchors.persistence) {\n\t\t\t\t\t\tcallback?.(new Error('Persistent Anchors are not supported'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._uuid) {\n\t\t\t\t\t\tcallback?.(null, this._uuid);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._uuidRequests) {\n\t\t\t\t\t\tif (callback) this._uuidRequests.push(callback);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._uuidRequests = [];\n\t\t\t\tthis._xrAnchor.requestPersistentHandle().then((uuid)=>{\n\t\t\t\t\t\tthis._uuid = uuid;\n\t\t\t\t\t\tthis._anchors._indexByUuid.set(this._uuid, this);\n\t\t\t\t\t\tcallback?.(null, uuid);\n\t\t\t\t\t\tfor (const uuidRequest of this._uuidRequests){\n\t\t\t\t\t\t\t\tuuidRequest(null, uuid);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._uuidRequests = null;\n\t\t\t\t\t\tthis.fire('persist', uuid);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tcallback?.(ex, null);\n\t\t\t\t\t\tfor (const uuidRequest of this._uuidRequests){\n\t\t\t\t\t\t\t\tuuidRequest(ex, null);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._uuidRequests = null;\n\t\t\t\t});\n\t\t}\n\t\tforget(callback) {\n\t\t\t\tif (!this._uuid) {\n\t\t\t\t\t\tcallback?.(new Error('Anchor is not persistent'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._anchors.forget(this._uuid, (ex)=>{\n\t\t\t\t\t\tthis._uuid = null;\n\t\t\t\t\t\tcallback?.(ex);\n\t\t\t\t\t\tthis.fire('forget');\n\t\t\t\t});\n\t\t}\n\t\tget uuid() {\n\t\t\t\treturn this._uuid;\n\t\t}\n\t\tget persistent() {\n\t\t\t\treturn !!this._uuid;\n\t\t}\n}\n\nclass XrAnchors extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_DESTROY = 'destroy';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRAnchor, this._available = false, this._checkingAvailability = false, this._persistence = platform.browser && !!window?.XRSession?.prototype.restorePersistentAnchor, this._creationQueue = [], this._index = new Map(), this._indexByUuid = new Map(), this._list = [], this._callbacksAnchors = new Map();\n\t\t\t\tthis.manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis.manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis.manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tconst available = this.manager.session.enabledFeatures?.indexOf('anchors') >= 0;\n\t\t\t\tif (!available) return;\n\t\t\t\tthis._available = available;\n\t\t\t\tthis.fire('available');\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tthis._available = false;\n\t\t\t\tfor(let i = 0; i < this._creationQueue.length; i++){\n\t\t\t\t\t\tif (!this._creationQueue[i].callback) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._creationQueue[i].callback(new Error('session ended'), null);\n\t\t\t\t}\n\t\t\t\tthis._creationQueue.length = 0;\n\t\t\t\tthis._index.clear();\n\t\t\t\tthis._indexByUuid.clear();\n\t\t\t\tlet i = this._list.length;\n\t\t\t\twhile(i--){\n\t\t\t\t\t\tthis._list[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis._list.length = 0;\n\t\t\t\tthis.fire('unavailable');\n\t\t}\n\t\t_createAnchor(xrAnchor, uuid = null) {\n\t\t\t\tconst anchor = new XrAnchor(this, xrAnchor, uuid);\n\t\t\t\tthis._index.set(xrAnchor, anchor);\n\t\t\t\tif (uuid) this._indexByUuid.set(uuid, anchor);\n\t\t\t\tthis._list.push(anchor);\n\t\t\t\tanchor.once('destroy', this._onAnchorDestroy, this);\n\t\t\t\treturn anchor;\n\t\t}\n\t\t_onAnchorDestroy(xrAnchor, anchor) {\n\t\t\t\tthis._index.delete(xrAnchor);\n\t\t\t\tif (anchor.uuid) this._indexByUuid.delete(anchor.uuid);\n\t\t\t\tconst ind = this._list.indexOf(anchor);\n\t\t\t\tif (ind !== -1) this._list.splice(ind, 1);\n\t\t\t\tthis.fire('destroy', anchor);\n\t\t}\n\t\tcreate(position, rotation, callback) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tcallback?.(new Error('Anchors API is not available'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (window.XRHitTestResult && position instanceof XRHitTestResult) {\n\t\t\t\t\t\tconst hitResult = position;\n\t\t\t\t\t\tcallback = rotation;\n\t\t\t\t\t\tif (!this._supported) {\n\t\t\t\t\t\t\t\tcallback?.(new Error('Anchors API is not supported'), null);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!hitResult.createAnchor) {\n\t\t\t\t\t\t\t\tcallback?.(new Error('Creating Anchor from Hit Test is not supported'), null);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\thitResult.createAnchor().then((xrAnchor)=>{\n\t\t\t\t\t\t\t\tconst anchor = this._createAnchor(xrAnchor);\n\t\t\t\t\t\t\t\tcallback?.(null, anchor);\n\t\t\t\t\t\t\t\tthis.fire('add', anchor);\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tcallback?.(ex, null);\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._creationQueue.push({\n\t\t\t\t\t\t\t\ttransform: new XRRigidTransform(position, rotation),\n\t\t\t\t\t\t\t\tcallback: callback\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\trestore(uuid, callback) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tcallback?.(new Error('Anchors API is not available'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._persistence) {\n\t\t\t\t\t\tcallback?.(new Error('Anchor Persistence is not supported'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.manager.active) {\n\t\t\t\t\t\tcallback?.(new Error('WebXR session is not active'), null);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.manager.session.restorePersistentAnchor(uuid).then((xrAnchor)=>{\n\t\t\t\t\t\tconst anchor = this._createAnchor(xrAnchor, uuid);\n\t\t\t\t\t\tcallback?.(null, anchor);\n\t\t\t\t\t\tthis.fire('add', anchor);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tcallback?.(ex, null);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tforget(uuid, callback) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tcallback?.(new Error('Anchors API is not available'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._persistence) {\n\t\t\t\t\t\tcallback?.(new Error('Anchor Persistence is not supported'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this.manager.active) {\n\t\t\t\t\t\tcallback?.(new Error('WebXR session is not active'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.manager.session.deletePersistentAnchor(uuid).then(()=>{\n\t\t\t\t\t\tcallback?.(null);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tcallback?.(ex);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tif (!this.manager.session.enabledFeatures && !this._checkingAvailability) {\n\t\t\t\t\t\t\t\tthis._checkingAvailability = true;\n\t\t\t\t\t\t\t\tframe.createAnchor(new XRRigidTransform(), this.manager._referenceSpace).then((xrAnchor)=>{\n\t\t\t\t\t\t\t\t\t\txrAnchor.delete();\n\t\t\t\t\t\t\t\t\t\tif (this.manager.active) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch(()=>{});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._creationQueue.length) {\n\t\t\t\t\t\tfor(let i = 0; i < this._creationQueue.length; i++){\n\t\t\t\t\t\t\t\tconst request = this._creationQueue[i];\n\t\t\t\t\t\t\t\tframe.createAnchor(request.transform, this.manager._referenceSpace).then((xrAnchor)=>{\n\t\t\t\t\t\t\t\t\t\tif (request.callback) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._callbacksAnchors.set(xrAnchor, request.callback);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\t\t\tif (request.callback) {\n\t\t\t\t\t\t\t\t\t\t\t\trequest.callback(ex, null);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._creationQueue.length = 0;\n\t\t\t\t}\n\t\t\t\tfor (const [xrAnchor, anchor] of this._index){\n\t\t\t\t\t\tif (frame.trackedAnchors.has(xrAnchor)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._index.delete(xrAnchor);\n\t\t\t\t\t\tanchor.destroy();\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this._list.length; i++){\n\t\t\t\t\t\tthis._list[i].update(frame);\n\t\t\t\t}\n\t\t\t\tfor (const xrAnchor of frame.trackedAnchors){\n\t\t\t\t\t\tif (this._index.has(xrAnchor)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tconst tmp = xrAnchor.anchorSpace;\n\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst anchor = this._createAnchor(xrAnchor);\n\t\t\t\t\t\tanchor.update(frame);\n\t\t\t\t\t\tconst callback = this._callbacksAnchors.get(xrAnchor);\n\t\t\t\t\t\tif (callback) {\n\t\t\t\t\t\t\t\tthis._callbacksAnchors.delete(xrAnchor);\n\t\t\t\t\t\t\t\tcallback(null, anchor);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('add', anchor);\n\t\t\t\t}\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget persistence() {\n\t\t\t\treturn this._persistence;\n\t\t}\n\t\tget uuids() {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!this._persistence) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif (!this.manager.active) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this.manager.session.persistentAnchors;\n\t\t}\n\t\tget list() {\n\t\t\t\treturn this._list;\n\t\t}\n}\n\nclass XrMesh extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_CHANGE = 'change';\n\t\t}\n\t\tconstructor(meshDetection, xrMesh){\n\t\t\t\tsuper(), this._lastChanged = 0, this._position = new Vec3(), this._rotation = new Quat();\n\t\t\t\tthis._meshDetection = meshDetection;\n\t\t\t\tthis._xrMesh = xrMesh;\n\t\t\t\tthis._lastChanged = this._xrMesh.lastChangedTime;\n\t\t}\n\t\tget xrMesh() {\n\t\t\t\treturn this._xrMesh;\n\t\t}\n\t\tget label() {\n\t\t\t\treturn this._xrMesh.semanticLabel || '';\n\t\t}\n\t\tget vertices() {\n\t\t\t\treturn this._xrMesh.vertices;\n\t\t}\n\t\tget indices() {\n\t\t\t\treturn this._xrMesh.indices;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (!this._xrMesh) return;\n\t\t\t\tthis._xrMesh = null;\n\t\t\t\tthis.fire('remove');\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tconst manager = this._meshDetection._manager;\n\t\t\t\tconst pose = frame.getPose(this._xrMesh.meshSpace, manager._referenceSpace);\n\t\t\t\tif (pose) {\n\t\t\t\t\t\tthis._position.copy(pose.transform.position);\n\t\t\t\t\t\tthis._rotation.copy(pose.transform.orientation);\n\t\t\t\t}\n\t\t\t\tif (this._lastChanged !== this._xrMesh.lastChangedTime) {\n\t\t\t\t\t\tthis._lastChanged = this._xrMesh.lastChangedTime;\n\t\t\t\t\t\tthis.fire('change');\n\t\t\t\t}\n\t\t}\n\t\tgetPosition() {\n\t\t\t\treturn this._position;\n\t\t}\n\t\tgetRotation() {\n\t\t\t\treturn this._rotation;\n\t\t}\n}\n\nclass XrMeshDetection extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UNAVAILABLE = 'unavailable';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._supported = platform.browser && !!window.XRMesh, this._available = false, this._index = new Map(), this._list = [];\n\t\t\t\tthis._manager = manager;\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t\t\t}\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._available) {\n\t\t\t\t\t\tif (!this._manager.session.enabledFeatures && frame.detectedMeshes.size) {\n\t\t\t\t\t\t\t\tthis._available = true;\n\t\t\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const xrMesh of frame.detectedMeshes){\n\t\t\t\t\t\tlet mesh = this._index.get(xrMesh);\n\t\t\t\t\t\tif (!mesh) {\n\t\t\t\t\t\t\t\tmesh = new XrMesh(this, xrMesh);\n\t\t\t\t\t\t\t\tthis._index.set(xrMesh, mesh);\n\t\t\t\t\t\t\t\tthis._list.push(mesh);\n\t\t\t\t\t\t\t\tmesh.update(frame);\n\t\t\t\t\t\t\t\tthis.fire('add', mesh);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmesh.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const mesh of this._index.values()){\n\t\t\t\t\t\tif (frame.detectedMeshes.has(mesh.xrMesh)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._removeMesh(mesh);\n\t\t\t\t}\n\t\t}\n\t\t_removeMesh(mesh) {\n\t\t\t\tthis._index.delete(mesh.xrMesh);\n\t\t\t\tthis._list.splice(this._list.indexOf(mesh), 1);\n\t\t\t\tmesh.destroy();\n\t\t\t\tthis.fire('remove', mesh);\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this._manager.session.enabledFeatures) {\n\t\t\t\t\t\tconst available = this._manager.session.enabledFeatures.indexOf('mesh-detection') !== -1;\n\t\t\t\t\t\tif (!available) return;\n\t\t\t\t\t\tthis._available = available;\n\t\t\t\t\t\tthis.fire('available');\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tif (!this._available) return;\n\t\t\t\tthis._available = false;\n\t\t\t\tfor (const mesh of this._index.values()){\n\t\t\t\t\t\tthis._removeMesh(mesh);\n\t\t\t\t}\n\t\t\t\tthis.fire('unavailable');\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget available() {\n\t\t\t\treturn this._available;\n\t\t}\n\t\tget meshes() {\n\t\t\t\treturn this._list;\n\t\t}\n}\n\nclass XrView extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_DEPTHRESIZE = 'depth:resize';\n\t\t}\n\t\tconstructor(manager, xrView, viewsCount){\n\t\t\t\tsuper(), this._positionData = new Float32Array(3), this._viewport = new Vec4(), this._projMat = new Mat4(), this._projViewOffMat = new Mat4(), this._viewMat = new Mat4(), this._viewOffMat = new Mat4(), this._viewMat3 = new Mat3(), this._viewInvMat = new Mat4(), this._viewInvOffMat = new Mat4(), this._xrCamera = null, this._textureColor = null, this._textureDepth = null, this._depthInfo = null, this._emptyDepthBuffer = new Uint8Array(32), this._depthMatrix = new Mat4();\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._xrView = xrView;\n\t\t\t\tconst device = this._manager.app.graphicsDevice;\n\t\t\t\tif (this._manager.views.supportedColor) {\n\t\t\t\t\t\tthis._xrCamera = this._xrView.camera;\n\t\t\t\t\t\tif (this._manager.views.availableColor && this._xrCamera) {\n\t\t\t\t\t\t\t\tthis._textureColor = new Texture(device, {\n\t\t\t\t\t\t\t\t\t\tformat: PIXELFORMAT_RGB8,\n\t\t\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\t\t\twidth: this._xrCamera.width,\n\t\t\t\t\t\t\t\t\t\theight: this._xrCamera.height,\n\t\t\t\t\t\t\t\t\t\tname: `XrView-${this._xrView.eye}-Color`\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._manager.views.supportedDepth && this._manager.views.availableDepth) {\n\t\t\t\t\t\tconst filtering = this._manager.views.depthGpuOptimized ? FILTER_NEAREST : FILTER_LINEAR;\n\t\t\t\t\t\tthis._textureDepth = new Texture(device, {\n\t\t\t\t\t\t\t\tformat: this._manager.views.depthPixelFormat,\n\t\t\t\t\t\t\t\tarrayLength: viewsCount === 1 ? 0 : viewsCount,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\tminFilter: filtering,\n\t\t\t\t\t\t\t\tmagFilter: filtering,\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tname: `XrView-${this._xrView.eye}-Depth`\n\t\t\t\t\t\t});\n\t\t\t\t\t\tfor(let i = 0; i < this._textureDepth._levels.length; i++){\n\t\t\t\t\t\t\t\tthis._textureDepth._levels[i] = this._emptyDepthBuffer;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._textureDepth.upload();\n\t\t\t\t}\n\t\t\t\tif (this._textureColor || this._textureDepth) {\n\t\t\t\t\t\tdevice.on('devicelost', this._onDeviceLost, this);\n\t\t\t\t}\n\t\t}\n\t\tget textureColor() {\n\t\t\t\treturn this._textureColor;\n\t\t}\n\t\tget textureDepth() {\n\t\t\t\treturn this._textureDepth;\n\t\t}\n\t\tget depthUvMatrix() {\n\t\t\t\treturn this._depthMatrix;\n\t\t}\n\t\tget depthValueToMeters() {\n\t\t\t\treturn this._depthInfo?.rawValueToMeters || 0;\n\t\t}\n\t\tget eye() {\n\t\t\t\treturn this._xrView.eye;\n\t\t}\n\t\tget viewport() {\n\t\t\t\treturn this._viewport;\n\t\t}\n\t\tget projMat() {\n\t\t\t\treturn this._projMat;\n\t\t}\n\t\tget projViewOffMat() {\n\t\t\t\treturn this._projViewOffMat;\n\t\t}\n\t\tget viewOffMat() {\n\t\t\t\treturn this._viewOffMat;\n\t\t}\n\t\tget viewInvOffMat() {\n\t\t\t\treturn this._viewInvOffMat;\n\t\t}\n\t\tget viewMat3() {\n\t\t\t\treturn this._viewMat3;\n\t\t}\n\t\tget positionData() {\n\t\t\t\treturn this._positionData;\n\t\t}\n\t\tupdate(frame, xrView) {\n\t\t\t\tthis._xrView = xrView;\n\t\t\t\tif (this._manager.views.availableColor) {\n\t\t\t\t\t\tthis._xrCamera = this._xrView.camera;\n\t\t\t\t}\n\t\t\t\tconst layer = frame.session.renderState.baseLayer;\n\t\t\t\tconst viewport = layer.getViewport(this._xrView);\n\t\t\t\tthis._viewport.x = viewport.x;\n\t\t\t\tthis._viewport.y = viewport.y;\n\t\t\t\tthis._viewport.z = viewport.width;\n\t\t\t\tthis._viewport.w = viewport.height;\n\t\t\t\tthis._projMat.set(this._xrView.projectionMatrix);\n\t\t\t\tthis._viewMat.set(this._xrView.transform.inverse.matrix);\n\t\t\t\tthis._viewInvMat.set(this._xrView.transform.matrix);\n\t\t\t\tthis._updateTextureColor();\n\t\t\t\tthis._updateDepth(frame);\n\t\t}\n\t\t_updateTextureColor() {\n\t\t\t\tif (!this._manager.views.availableColor || !this._xrCamera || !this._textureColor) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst binding = this._manager.webglBinding;\n\t\t\t\tif (!binding) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst texture = binding.getCameraImage(this._xrCamera);\n\t\t\t\tif (!texture) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst device = this._manager.app.graphicsDevice;\n\t\t\t\tconst gl = device.gl;\n\t\t\t\tif (!this._frameBufferSource) {\n\t\t\t\t\t\tthis._frameBufferSource = gl.createFramebuffer();\n\t\t\t\t\t\tthis._frameBuffer = gl.createFramebuffer();\n\t\t\t\t} else {\n\t\t\t\t\t\tconst attachmentBaseConstant = gl.COLOR_ATTACHMENT0;\n\t\t\t\t\t\tconst width = this._xrCamera.width;\n\t\t\t\t\t\tconst height = this._xrCamera.height;\n\t\t\t\t\t\tdevice.setFramebuffer(this._frameBufferSource);\n\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant, gl.TEXTURE_2D, texture, 0);\n\t\t\t\t\t\tdevice.setFramebuffer(this._frameBuffer);\n\t\t\t\t\t\tgl.framebufferTexture2D(gl.FRAMEBUFFER, attachmentBaseConstant, gl.TEXTURE_2D, this._textureColor.impl._glTexture, 0);\n\t\t\t\t\t\tgl.bindFramebuffer(gl.READ_FRAMEBUFFER, this._frameBufferSource);\n\t\t\t\t\t\tgl.bindFramebuffer(gl.DRAW_FRAMEBUFFER, this._frameBuffer);\n\t\t\t\t\t\tgl.blitFramebuffer(0, height, width, 0, 0, 0, width, height, gl.COLOR_BUFFER_BIT, gl.NEAREST);\n\t\t\t\t}\n\t\t}\n\t\t_updateDepth(frame) {\n\t\t\t\tif (!this._manager.views.availableDepth || !this._textureDepth) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst gpu = this._manager.views.depthGpuOptimized;\n\t\t\t\tconst infoSource = gpu ? this._manager.webglBinding : frame;\n\t\t\t\tif (!infoSource) {\n\t\t\t\t\t\tthis._depthInfo = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst depthInfo = infoSource.getDepthInformation(this._xrView);\n\t\t\t\tif (!depthInfo) {\n\t\t\t\t\t\tthis._depthInfo = null;\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tlet matrixDirty = !this._depthInfo !== !depthInfo;\n\t\t\t\tthis._depthInfo = depthInfo;\n\t\t\t\tconst width = this._depthInfo?.width || 4;\n\t\t\t\tconst height = this._depthInfo?.height || 4;\n\t\t\t\tlet resized = false;\n\t\t\t\tif (this._textureDepth.width !== width || this._textureDepth.height !== height) {\n\t\t\t\t\t\tthis._textureDepth._width = width;\n\t\t\t\t\t\tthis._textureDepth._height = height;\n\t\t\t\t\t\tmatrixDirty = true;\n\t\t\t\t\t\tresized = true;\n\t\t\t\t}\n\t\t\t\tif (matrixDirty) {\n\t\t\t\t\t\tif (this._depthInfo) {\n\t\t\t\t\t\t\t\tthis._depthMatrix.data.set(this._depthInfo.normDepthBufferFromNormView.matrix);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._depthMatrix.setIdentity();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._depthInfo) {\n\t\t\t\t\t\tif (gpu) {\n\t\t\t\t\t\t\t\tif (this._depthInfo.texture) {\n\t\t\t\t\t\t\t\t\t\tconst gl = this._manager.app.graphicsDevice.gl;\n\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glTexture = this._depthInfo.texture;\n\t\t\t\t\t\t\t\t\t\tif (this._depthInfo.textureType === 'texture-array') {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glTarget = gl.TEXTURE_2D_ARRAY;\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glTarget = gl.TEXTURE_2D;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tswitch(this._manager.views.depthPixelFormat){\n\t\t\t\t\t\t\t\t\t\t\t\tcase PIXELFORMAT_R32F:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glInternalFormat = gl.R32F;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glPixelType = gl.FLOAT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glFormat = gl.RED;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\tcase PIXELFORMAT_DEPTH:\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glInternalFormat = gl.DEPTH_COMPONENT16;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glPixelType = gl.UNSIGNED_SHORT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glFormat = gl.DEPTH_COMPONENT;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tthis._textureDepth.impl._glCreated = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._textureDepth._levels[0] = new Uint8Array(this._depthInfo.data);\n\t\t\t\t\t\t\t\tthis._textureDepth.upload();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._textureDepth._levels[0] = this._emptyDepthBuffer;\n\t\t\t\t\t\tthis._textureDepth.upload();\n\t\t\t\t}\n\t\t\t\tif (resized) this.fire('depth:resize', width, height);\n\t\t}\n\t\tupdateTransforms(transform) {\n\t\t\t\tif (transform) {\n\t\t\t\t\t\tthis._viewInvOffMat.mul2(transform, this._viewInvMat);\n\t\t\t\t\t\tthis.viewOffMat.copy(this._viewInvOffMat).invert();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._viewInvOffMat.copy(this._viewInvMat);\n\t\t\t\t\t\tthis.viewOffMat.copy(this._viewMat);\n\t\t\t\t}\n\t\t\t\tthis._viewMat3.setFromMat4(this._viewOffMat);\n\t\t\t\tthis._projViewOffMat.mul2(this._projMat, this._viewOffMat);\n\t\t\t\tthis._positionData[0] = this._viewInvOffMat.data[12];\n\t\t\t\tthis._positionData[1] = this._viewInvOffMat.data[13];\n\t\t\t\tthis._positionData[2] = this._viewInvOffMat.data[14];\n\t\t}\n\t\t_onDeviceLost() {\n\t\t\t\tthis._frameBufferSource = null;\n\t\t\t\tthis._frameBuffer = null;\n\t\t\t\tthis._depthInfo = null;\n\t\t}\n\t\tgetDepth(u, v) {\n\t\t\t\tif (this._manager.views.depthGpuOptimized) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._depthInfo?.getDepthInMeters(u, v) ?? null;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._depthInfo = null;\n\t\t\t\tif (this._textureColor) {\n\t\t\t\t\t\tthis._textureColor.destroy();\n\t\t\t\t\t\tthis._textureColor = null;\n\t\t\t\t}\n\t\t\t\tif (this._textureDepth) {\n\t\t\t\t\t\tthis._textureDepth.destroy();\n\t\t\t\t\t\tthis._textureDepth = null;\n\t\t\t\t}\n\t\t\t\tif (this._frameBufferSource) {\n\t\t\t\t\t\tconst gl = this._manager.app.graphicsDevice.gl;\n\t\t\t\t\t\tgl.deleteFramebuffer(this._frameBufferSource);\n\t\t\t\t\t\tthis._frameBufferSource = null;\n\t\t\t\t\t\tgl.deleteFramebuffer(this._frameBuffer);\n\t\t\t\t\t\tthis._frameBuffer = null;\n\t\t\t\t}\n\t\t}\n}\n\nclass XrViews extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_ADD = 'add';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_REMOVE = 'remove';\n\t\t}\n\t\tconstructor(manager){\n\t\t\t\tsuper(), this._index = new Map(), this._indexTmp = new Map(), this._list = [], this._supportedColor = platform.browser && !!window.XRCamera && !!window.XRWebGLBinding, this._supportedDepth = platform.browser && !!window.XRDepthInformation, this._availableColor = false, this._availableDepth = false, this._depthUsage = '', this._depthFormat = '', this._depthFormats = {\n\t\t\t\t\t\t[XRDEPTHSENSINGFORMAT_L8A8]: PIXELFORMAT_LA8,\n\t\t\t\t\t\t[XRDEPTHSENSINGFORMAT_R16U]: PIXELFORMAT_DEPTH,\n\t\t\t\t\t\t[XRDEPTHSENSINGFORMAT_F32]: PIXELFORMAT_R32F\n\t\t\t\t};\n\t\t\t\tthis._manager = manager;\n\t\t\t\tthis._manager.on('start', this._onSessionStart, this);\n\t\t\t\tthis._manager.on('end', this._onSessionEnd, this);\n\t\t}\n\t\tget list() {\n\t\t\t\treturn this._list;\n\t\t}\n\t\tget supportedColor() {\n\t\t\t\treturn this._supportedColor;\n\t\t}\n\t\tget supportedDepth() {\n\t\t\t\treturn this._supportedDepth;\n\t\t}\n\t\tget availableColor() {\n\t\t\t\treturn this._availableColor;\n\t\t}\n\t\tget availableDepth() {\n\t\t\t\treturn this._availableDepth;\n\t\t}\n\t\tget depthUsage() {\n\t\t\t\treturn this._depthUsage;\n\t\t}\n\t\tget depthGpuOptimized() {\n\t\t\t\treturn this._depthUsage === XRDEPTHSENSINGUSAGE_GPU;\n\t\t}\n\t\tget depthFormat() {\n\t\t\t\treturn this._depthFormat;\n\t\t}\n\t\tget depthPixelFormat() {\n\t\t\t\treturn this._depthFormats[this._depthFormat] ?? null;\n\t\t}\n\t\tupdate(frame, xrViews) {\n\t\t\t\tfor(let i = 0; i < xrViews.length; i++){\n\t\t\t\t\t\tthis._indexTmp.set(xrViews[i].eye, xrViews[i]);\n\t\t\t\t}\n\t\t\t\tfor (const [eye, xrView] of this._indexTmp){\n\t\t\t\t\t\tlet view = this._index.get(eye);\n\t\t\t\t\t\tif (!view) {\n\t\t\t\t\t\t\t\tview = new XrView(this._manager, xrView, xrViews.length);\n\t\t\t\t\t\t\t\tthis._index.set(eye, view);\n\t\t\t\t\t\t\t\tthis._list.push(view);\n\t\t\t\t\t\t\t\tview.update(frame, xrView);\n\t\t\t\t\t\t\t\tthis.fire('add', view);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tview.update(frame, xrView);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const [eye, view] of this._index){\n\t\t\t\t\t\tif (this._indexTmp.has(eye)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tview.destroy();\n\t\t\t\t\t\tthis._index.delete(eye);\n\t\t\t\t\t\tconst ind = this._list.indexOf(view);\n\t\t\t\t\t\tif (ind !== -1) this._list.splice(ind, 1);\n\t\t\t\t\t\tthis.fire('remove', view);\n\t\t\t\t}\n\t\t\t\tthis._indexTmp.clear();\n\t\t}\n\t\tget(eye) {\n\t\t\t\treturn this._index.get(eye) || null;\n\t\t}\n\t\t_onSessionStart() {\n\t\t\t\tif (this._manager.type !== XRTYPE_AR) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._manager.session.enabledFeatures) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._availableColor = this._manager.session.enabledFeatures.indexOf('camera-access') !== -1;\n\t\t\t\tthis._availableDepth = this._manager.session.enabledFeatures.indexOf('depth-sensing') !== -1;\n\t\t\t\tif (this._availableDepth) {\n\t\t\t\t\t\tconst session = this._manager.session;\n\t\t\t\t\t\tthis._depthUsage = session.depthUsage;\n\t\t\t\t\t\tthis._depthFormat = session.depthDataFormat;\n\t\t\t\t}\n\t\t}\n\t\t_onSessionEnd() {\n\t\t\t\tfor (const view of this._index.values()){\n\t\t\t\t\t\tview.destroy();\n\t\t\t\t}\n\t\t\t\tthis._index.clear();\n\t\t\t\tthis._availableColor = false;\n\t\t\t\tthis._availableDepth = false;\n\t\t\t\tthis._depthUsage = '';\n\t\t\t\tthis._depthFormat = '';\n\t\t\t\tthis._list.length = 0;\n\t\t}\n}\n\nclass XrManager extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_AVAILABLE = 'available';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_START = 'start';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_END = 'end';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_UPDATE = 'update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ERROR = 'error';\n\t\t}\n\t\tconstructor(app){\n\t\t\t\tsuper(), this._supported = platform.browser && !!navigator.xr, this._available = {}, this._type = null, this._spaceType = null, this._session = null, this._baseLayer = null, this.webglBinding = null, this._referenceSpace = null, this._camera = null, this._localPosition = new Vec3(), this._localRotation = new Quat(), this._depthNear = 0.1, this._depthFar = 1000, this._supportedFrameRates = null, this._width = 0, this._height = 0, this._framebufferScaleFactor = 1.0;\n\t\t\t\tthis.app = app;\n\t\t\t\tthis._available[XRTYPE_INLINE] = false;\n\t\t\t\tthis._available[XRTYPE_VR] = false;\n\t\t\t\tthis._available[XRTYPE_AR] = false;\n\t\t\t\tthis.views = new XrViews(this);\n\t\t\t\tthis.domOverlay = new XrDomOverlay(this);\n\t\t\t\tthis.hitTest = new XrHitTest(this);\n\t\t\t\tthis.imageTracking = new XrImageTracking(this);\n\t\t\t\tthis.planeDetection = new XrPlaneDetection(this);\n\t\t\t\tthis.meshDetection = new XrMeshDetection(this);\n\t\t\t\tthis.input = new XrInput(this);\n\t\t\t\tthis.lightEstimation = new XrLightEstimation(this);\n\t\t\t\tthis.anchors = new XrAnchors(this);\n\t\t\t\tthis.views = new XrViews(this);\n\t\t\t\tif (this._supported) {\n\t\t\t\t\t\tnavigator.xr.addEventListener('devicechange', ()=>{\n\t\t\t\t\t\t\t\tthis._deviceAvailabilityCheck();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis._deviceAvailabilityCheck();\n\t\t\t\t\t\tthis.app.graphicsDevice.on('devicelost', this._onDeviceLost, this);\n\t\t\t\t\t\tthis.app.graphicsDevice.on('devicerestored', this._onDeviceRestored, this);\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {}\n\t\tstart(camera, type, spaceType, options) {\n\t\t\t\tlet callback = options;\n\t\t\t\tif (typeof options === 'object') {\n\t\t\t\t\t\tcallback = options.callback;\n\t\t\t\t}\n\t\t\t\tif (!this._available[type]) {\n\t\t\t\t\t\tif (callback) callback(new Error('XR is not available'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._session) {\n\t\t\t\t\t\tif (callback) callback(new Error('XR session is already started'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera = camera;\n\t\t\t\tthis._camera.camera.xr = this;\n\t\t\t\tthis._type = type;\n\t\t\t\tthis._spaceType = spaceType;\n\t\t\t\tthis._framebufferScaleFactor = options?.framebufferScaleFactor ?? 1.0;\n\t\t\t\tthis._setClipPlanes(camera.nearClip, camera.farClip);\n\t\t\t\tconst opts = {\n\t\t\t\t\t\trequiredFeatures: [\n\t\t\t\t\t\t\t\tspaceType\n\t\t\t\t\t\t],\n\t\t\t\t\t\toptionalFeatures: []\n\t\t\t\t};\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tif (device?.isWebGPU) {\n\t\t\t\t\t\topts.requiredFeatures.push('webgpu');\n\t\t\t\t}\n\t\t\t\tconst webgl = device?.isWebGL2;\n\t\t\t\tif (type === XRTYPE_AR) {\n\t\t\t\t\t\topts.optionalFeatures.push('light-estimation');\n\t\t\t\t\t\topts.optionalFeatures.push('hit-test');\n\t\t\t\t\t\tif (options) {\n\t\t\t\t\t\t\t\tif (options.imageTracking && this.imageTracking.supported) {\n\t\t\t\t\t\t\t\t\t\topts.optionalFeatures.push('image-tracking');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.planeDetection) {\n\t\t\t\t\t\t\t\t\t\topts.optionalFeatures.push('plane-detection');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.meshDetection) {\n\t\t\t\t\t\t\t\t\t\topts.optionalFeatures.push('mesh-detection');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.domOverlay.supported && this.domOverlay.root) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('dom-overlay');\n\t\t\t\t\t\t\t\topts.domOverlay = {\n\t\t\t\t\t\t\t\t\t\troot: this.domOverlay.root\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options && options.anchors && this.anchors.supported) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('anchors');\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (options && options.depthSensing && this.views.supportedDepth) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('depth-sensing');\n\t\t\t\t\t\t\t\tconst usagePreference = [];\n\t\t\t\t\t\t\t\tconst dataFormatPreference = [];\n\t\t\t\t\t\t\t\tusagePreference.push(XRDEPTHSENSINGUSAGE_GPU, XRDEPTHSENSINGUSAGE_CPU);\n\t\t\t\t\t\t\t\tdataFormatPreference.push(XRDEPTHSENSINGFORMAT_F32, XRDEPTHSENSINGFORMAT_L8A8, XRDEPTHSENSINGFORMAT_R16U);\n\t\t\t\t\t\t\t\tif (options.depthSensing.usagePreference) {\n\t\t\t\t\t\t\t\t\t\tconst ind = usagePreference.indexOf(options.depthSensing.usagePreference);\n\t\t\t\t\t\t\t\t\t\tif (ind !== -1) usagePreference.splice(ind, 1);\n\t\t\t\t\t\t\t\t\t\tusagePreference.unshift(options.depthSensing.usagePreference);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (options.depthSensing.dataFormatPreference) {\n\t\t\t\t\t\t\t\t\t\tconst ind = dataFormatPreference.indexOf(options.depthSensing.dataFormatPreference);\n\t\t\t\t\t\t\t\t\t\tif (ind !== -1) dataFormatPreference.splice(ind, 1);\n\t\t\t\t\t\t\t\t\t\tdataFormatPreference.unshift(options.depthSensing.dataFormatPreference);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\topts.depthSensing = {\n\t\t\t\t\t\t\t\t\t\tusagePreference: usagePreference,\n\t\t\t\t\t\t\t\t\t\tdataFormatPreference: dataFormatPreference\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (webgl && options && options.cameraColor && this.views.supportedColor) {\n\t\t\t\t\t\t\t\topts.optionalFeatures.push('camera-access');\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\topts.optionalFeatures.push('hand-tracking');\n\t\t\t\tif (options && options.optionalFeatures) {\n\t\t\t\t\t\topts.optionalFeatures = opts.optionalFeatures.concat(options.optionalFeatures);\n\t\t\t\t}\n\t\t\t\tif (this.imageTracking.supported && this.imageTracking.images.length) {\n\t\t\t\t\t\tthis.imageTracking.prepareImages((err, trackedImages)=>{\n\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t\t\t\t\t\t\tthis.fire('error', err);\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (trackedImages !== null) {\n\t\t\t\t\t\t\t\t\t\topts.trackedImages = trackedImages;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._onStartOptionsReady(type, spaceType, opts, callback);\n\t\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._onStartOptionsReady(type, spaceType, opts, callback);\n\t\t\t\t}\n\t\t}\n\t\t_onStartOptionsReady(type, spaceType, options, callback) {\n\t\t\t\tnavigator.xr.requestSession(type, options).then((session)=>{\n\t\t\t\t\t\tthis._onSessionStart(session, spaceType, callback);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tthis._camera.camera.xr = null;\n\t\t\t\t\t\tthis._camera = null;\n\t\t\t\t\t\tthis._type = null;\n\t\t\t\t\t\tthis._spaceType = null;\n\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\tend(callback) {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\tif (callback) callback(new Error('XR Session is not initialized'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.webglBinding = null;\n\t\t\t\tif (callback) this.once('end', callback);\n\t\t\t\tthis._session.end();\n\t\t}\n\t\tisAvailable(type) {\n\t\t\t\treturn this._available[type];\n\t\t}\n\t\t_deviceAvailabilityCheck() {\n\t\t\t\tfor(const key in this._available){\n\t\t\t\t\t\tthis._sessionSupportCheck(key);\n\t\t\t\t}\n\t\t}\n\t\tinitiateRoomCapture(callback) {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\tcallback(new Error('Session is not active'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._session.initiateRoomCapture) {\n\t\t\t\t\t\tcallback(new Error('Session does not support manual room capture'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._session.initiateRoomCapture().then(()=>{\n\t\t\t\t\t\tif (callback) callback(null);\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tif (callback) callback(err);\n\t\t\t\t});\n\t\t}\n\t\tupdateTargetFrameRate(frameRate, callback) {\n\t\t\t\tif (!this._session?.updateTargetFrameRate) {\n\t\t\t\t\t\tcallback?.(new Error('unable to update frameRate'));\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._session.updateTargetFrameRate(frameRate).then(()=>{\n\t\t\t\t\t\tcallback?.();\n\t\t\t\t}).catch((err)=>{\n\t\t\t\t\t\tcallback?.(err);\n\t\t\t\t});\n\t\t}\n\t\t_sessionSupportCheck(type) {\n\t\t\t\tnavigator.xr.isSessionSupported(type).then((available)=>{\n\t\t\t\t\t\tif (this._available[type] === available) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._available[type] = available;\n\t\t\t\t\t\tthis.fire('available', type, available);\n\t\t\t\t\t\tthis.fire(`available:${type}`, available);\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\t_onSessionStart(session, spaceType, callback) {\n\t\t\t\tlet failed = false;\n\t\t\t\tthis._session = session;\n\t\t\t\tconst onVisibilityChange = ()=>{\n\t\t\t\t\t\tthis.fire('visibility:change', session.visibilityState);\n\t\t\t\t};\n\t\t\t\tconst onClipPlanesChange = ()=>{\n\t\t\t\t\t\tthis._setClipPlanes(this._camera.nearClip, this._camera.farClip);\n\t\t\t\t};\n\t\t\t\tconst onEnd = ()=>{\n\t\t\t\t\t\tif (this._camera) {\n\t\t\t\t\t\t\t\tthis._camera.off('set_nearClip', onClipPlanesChange);\n\t\t\t\t\t\t\t\tthis._camera.off('set_farClip', onClipPlanesChange);\n\t\t\t\t\t\t\t\tthis._camera.camera.xr = null;\n\t\t\t\t\t\t\t\tthis._camera = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tsession.removeEventListener('end', onEnd);\n\t\t\t\t\t\tsession.removeEventListener('visibilitychange', onVisibilityChange);\n\t\t\t\t\t\tif (!failed) this.fire('end');\n\t\t\t\t\t\tthis._session = null;\n\t\t\t\t\t\tthis._referenceSpace = null;\n\t\t\t\t\t\tthis._width = 0;\n\t\t\t\t\t\tthis._height = 0;\n\t\t\t\t\t\tthis._type = null;\n\t\t\t\t\t\tthis._spaceType = null;\n\t\t\t\t\t\tif (this.app.systems) {\n\t\t\t\t\t\t\t\tthis.app.tick();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tsession.addEventListener('end', onEnd);\n\t\t\t\tsession.addEventListener('visibilitychange', onVisibilityChange);\n\t\t\t\tthis._camera.on('set_nearClip', onClipPlanesChange);\n\t\t\t\tthis._camera.on('set_farClip', onClipPlanesChange);\n\t\t\t\tthis._createBaseLayer();\n\t\t\t\tif (this.session.supportedFrameRates) {\n\t\t\t\t\t\tthis._supportedFrameRates = Array.from(this.session.supportedFrameRates);\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._supportedFrameRates = null;\n\t\t\t\t}\n\t\t\t\tthis._session.addEventListener('frameratechange', ()=>{\n\t\t\t\t\t\tthis.fire('frameratechange', this._session?.frameRate);\n\t\t\t\t});\n\t\t\t\tsession.requestReferenceSpace(spaceType).then((referenceSpace)=>{\n\t\t\t\t\t\tthis._referenceSpace = referenceSpace;\n\t\t\t\t\t\tthis.app.tick();\n\t\t\t\t\t\tif (callback) callback(null);\n\t\t\t\t\t\tthis.fire('start');\n\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\tfailed = true;\n\t\t\t\t\t\tsession.end();\n\t\t\t\t\t\tif (callback) callback(ex);\n\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t});\n\t\t}\n\t\t_setClipPlanes(near, far) {\n\t\t\t\tif (this._depthNear === near && this._depthFar === far) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._depthNear = near;\n\t\t\t\tthis._depthFar = far;\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._session.updateRenderState({\n\t\t\t\t\t\tdepthNear: this._depthNear,\n\t\t\t\t\t\tdepthFar: this._depthFar\n\t\t\t\t});\n\t\t}\n\t\t_createBaseLayer() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst framebufferScaleFactor = device.maxPixelRatio / window.devicePixelRatio * this._framebufferScaleFactor;\n\t\t\t\tthis._baseLayer = new XRWebGLLayer(this._session, device.gl, {\n\t\t\t\t\t\talpha: true,\n\t\t\t\t\t\tdepth: true,\n\t\t\t\t\t\tstencil: true,\n\t\t\t\t\t\tframebufferScaleFactor: framebufferScaleFactor,\n\t\t\t\t\t\tantialias: false\n\t\t\t\t});\n\t\t\t\tif (device?.isWebGL2 && window.XRWebGLBinding) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\tthis.webglBinding = new XRWebGLBinding(this._session, device.gl);\n\t\t\t\t\t\t} catch (ex) {\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._session.updateRenderState({\n\t\t\t\t\t\tbaseLayer: this._baseLayer,\n\t\t\t\t\t\tdepthNear: this._depthNear,\n\t\t\t\t\t\tdepthFar: this._depthFar\n\t\t\t\t});\n\t\t}\n\t\t_onDeviceLost() {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this.webglBinding) {\n\t\t\t\t\t\tthis.webglBinding = null;\n\t\t\t\t}\n\t\t\t\tthis._baseLayer = null;\n\t\t\t\tthis._session.updateRenderState({\n\t\t\t\t\t\tbaseLayer: this._baseLayer,\n\t\t\t\t\t\tdepthNear: this._depthNear,\n\t\t\t\t\t\tdepthFar: this._depthFar\n\t\t\t\t});\n\t\t}\n\t\t_onDeviceRestored() {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\tthis.app.graphicsDevice.gl.makeXRCompatible().then(()=>{\n\t\t\t\t\t\t\t\tthis._createBaseLayer();\n\t\t\t\t\t\t}).catch((ex)=>{\n\t\t\t\t\t\t\t\tthis.fire('error', ex);\n\t\t\t\t\t\t});\n\t\t\t\t}, 0);\n\t\t}\n\t\tupdate(frame) {\n\t\t\t\tif (!this._session) return false;\n\t\t\t\tconst width = frame.session.renderState.baseLayer.framebufferWidth;\n\t\t\t\tconst height = frame.session.renderState.baseLayer.framebufferHeight;\n\t\t\t\tif (this._width !== width || this._height !== height) {\n\t\t\t\t\t\tthis._width = width;\n\t\t\t\t\t\tthis._height = height;\n\t\t\t\t\t\tthis.app.graphicsDevice.setResolution(width, height);\n\t\t\t\t}\n\t\t\t\tconst pose = frame.getViewerPose(this._referenceSpace);\n\t\t\t\tif (!pose) return false;\n\t\t\t\tconst lengthOld = this.views.list.length;\n\t\t\t\tthis.views.update(frame, pose.views);\n\t\t\t\tconst posePosition = pose.transform.position;\n\t\t\t\tconst poseOrientation = pose.transform.orientation;\n\t\t\t\tthis._localPosition.set(posePosition.x, posePosition.y, posePosition.z);\n\t\t\t\tthis._localRotation.set(poseOrientation.x, poseOrientation.y, poseOrientation.z, poseOrientation.w);\n\t\t\t\tif (lengthOld === 0 && this.views.list.length > 0) {\n\t\t\t\t\t\tconst viewProjMat = new Mat4();\n\t\t\t\t\t\tconst view = this.views.list[0];\n\t\t\t\t\t\tviewProjMat.copy(view.projMat);\n\t\t\t\t\t\tconst data = viewProjMat.data;\n\t\t\t\t\t\tconst fov = 2.0 * Math.atan(1.0 / data[5]) * 180.0 / Math.PI;\n\t\t\t\t\t\tconst aspectRatio = data[5] / data[0];\n\t\t\t\t\t\tconst farClip = data[14] / (data[10] + 1);\n\t\t\t\t\t\tconst nearClip = data[14] / (data[10] - 1);\n\t\t\t\t\t\tconst horizontalFov = false;\n\t\t\t\t\t\tconst camera = this._camera.camera;\n\t\t\t\t\t\tcamera.setXrProperties({\n\t\t\t\t\t\t\t\taspectRatio,\n\t\t\t\t\t\t\t\tfarClip,\n\t\t\t\t\t\t\t\tfov,\n\t\t\t\t\t\t\t\thorizontalFov,\n\t\t\t\t\t\t\t\tnearClip\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis._camera.camera._node.setLocalPosition(this._localPosition);\n\t\t\t\tthis._camera.camera._node.setLocalRotation(this._localRotation);\n\t\t\t\tthis.input.update(frame);\n\t\t\t\tif (this._type === XRTYPE_AR) {\n\t\t\t\t\t\tif (this.hitTest.supported) {\n\t\t\t\t\t\t\t\tthis.hitTest.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.lightEstimation.supported) {\n\t\t\t\t\t\t\t\tthis.lightEstimation.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.imageTracking.supported) {\n\t\t\t\t\t\t\t\tthis.imageTracking.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.anchors.supported) {\n\t\t\t\t\t\t\t\tthis.anchors.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.planeDetection.supported) {\n\t\t\t\t\t\t\t\tthis.planeDetection.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.meshDetection.supported) {\n\t\t\t\t\t\t\t\tthis.meshDetection.update(frame);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.fire('update', frame);\n\t\t\t\treturn true;\n\t\t}\n\t\tget supported() {\n\t\t\t\treturn this._supported;\n\t\t}\n\t\tget active() {\n\t\t\t\treturn !!this._session;\n\t\t}\n\t\tget type() {\n\t\t\t\treturn this._type;\n\t\t}\n\t\tget spaceType() {\n\t\t\t\treturn this._spaceType;\n\t\t}\n\t\tget session() {\n\t\t\t\treturn this._session;\n\t\t}\n\t\tget frameRate() {\n\t\t\t\treturn this._session?.frameRate ?? null;\n\t\t}\n\t\tget supportedFrameRates() {\n\t\t\t\treturn this._supportedFrameRates;\n\t\t}\n\t\tget framebufferScaleFactor() {\n\t\t\t\treturn this._framebufferScaleFactor;\n\t\t}\n\t\tset fixedFoveation(value) {\n\t\t\t\tif ((this._baseLayer?.fixedFoveation ?? null) !== null) {\n\t\t\t\t\t\tif (this.app.graphicsDevice.samples > 1) ;\n\t\t\t\t\t\tthis._baseLayer.fixedFoveation = value;\n\t\t\t\t}\n\t\t}\n\t\tget fixedFoveation() {\n\t\t\t\treturn this._baseLayer?.fixedFoveation ?? null;\n\t\t}\n\t\tget camera() {\n\t\t\t\treturn this._camera ? this._camera.entity : null;\n\t\t}\n\t\tget visibilityState() {\n\t\t\t\tif (!this._session) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\treturn this._session.visibilityState;\n\t\t}\n}\n\nclass Application extends AppBase {\n\t\tconstructor(canvas, options = {}){\n\t\t\t\tsuper(canvas);\n\t\t\t\tconst appOptions = new AppOptions();\n\t\t\t\tappOptions.graphicsDevice = options.graphicsDevice ?? this.createDevice(canvas, options);\n\t\t\t\tthis.addComponentSystems(appOptions);\n\t\t\t\tthis.addResourceHandles(appOptions);\n\t\t\t\tappOptions.elementInput = options.elementInput;\n\t\t\t\tappOptions.keyboard = options.keyboard;\n\t\t\t\tappOptions.mouse = options.mouse;\n\t\t\t\tappOptions.touch = options.touch;\n\t\t\t\tappOptions.gamepads = options.gamepads;\n\t\t\t\tappOptions.scriptPrefix = options.scriptPrefix;\n\t\t\t\tappOptions.assetPrefix = options.assetPrefix;\n\t\t\t\tappOptions.scriptsOrder = options.scriptsOrder;\n\t\t\t\tappOptions.soundManager = new SoundManager();\n\t\t\t\tappOptions.lightmapper = Lightmapper;\n\t\t\t\tappOptions.batchManager = BatchManager;\n\t\t\t\tappOptions.xr = XrManager;\n\t\t\t\tthis.init(appOptions);\n\t\t}\n\t\tcreateDevice(canvas, options) {\n\t\t\t\tif (!options.graphicsDeviceOptions) {\n\t\t\t\t\t\toptions.graphicsDeviceOptions = {};\n\t\t\t\t}\n\t\t\t\tif (platform.browser && !!navigator.xr) {\n\t\t\t\t\t\toptions.graphicsDeviceOptions.xrCompatible = true;\n\t\t\t\t}\n\t\t\t\toptions.graphicsDeviceOptions.alpha = options.graphicsDeviceOptions.alpha || false;\n\t\t\t\treturn new WebglGraphicsDevice(canvas, options.graphicsDeviceOptions);\n\t\t}\n\t\taddComponentSystems(appOptions) {\n\t\t\t\tappOptions.componentSystems = [\n\t\t\t\t\t\tRigidBodyComponentSystem,\n\t\t\t\t\t\tCollisionComponentSystem,\n\t\t\t\t\t\tJointComponentSystem,\n\t\t\t\t\t\tAnimationComponentSystem,\n\t\t\t\t\t\tAnimComponentSystem,\n\t\t\t\t\t\tModelComponentSystem,\n\t\t\t\t\t\tRenderComponentSystem,\n\t\t\t\t\t\tCameraComponentSystem,\n\t\t\t\t\t\tLightComponentSystem,\n\t\t\t\t\t\tScriptComponentSystem,\n\t\t\t\t\t\tSoundComponentSystem,\n\t\t\t\t\t\tAudioListenerComponentSystem,\n\t\t\t\t\t\tParticleSystemComponentSystem,\n\t\t\t\t\t\tScreenComponentSystem,\n\t\t\t\t\t\tElementComponentSystem,\n\t\t\t\t\t\tButtonComponentSystem,\n\t\t\t\t\t\tScrollViewComponentSystem,\n\t\t\t\t\t\tScrollbarComponentSystem,\n\t\t\t\t\t\tSpriteComponentSystem,\n\t\t\t\t\t\tLayoutGroupComponentSystem,\n\t\t\t\t\t\tLayoutChildComponentSystem,\n\t\t\t\t\t\tZoneComponentSystem,\n\t\t\t\t\t\tGSplatComponentSystem\n\t\t\t\t];\n\t\t}\n\t\taddResourceHandles(appOptions) {\n\t\t\t\tappOptions.resourceHandlers = [\n\t\t\t\t\t\tRenderHandler,\n\t\t\t\t\t\tAnimationHandler,\n\t\t\t\t\t\tAnimClipHandler,\n\t\t\t\t\t\tAnimStateGraphHandler,\n\t\t\t\t\t\tModelHandler,\n\t\t\t\t\t\tMaterialHandler,\n\t\t\t\t\t\tTextureHandler,\n\t\t\t\t\t\tTextHandler,\n\t\t\t\t\t\tJsonHandler,\n\t\t\t\t\t\tAudioHandler,\n\t\t\t\t\t\tScriptHandler,\n\t\t\t\t\t\tSceneHandler,\n\t\t\t\t\t\tCubemapHandler,\n\t\t\t\t\t\tHtmlHandler,\n\t\t\t\t\t\tCssHandler,\n\t\t\t\t\t\tShaderHandler,\n\t\t\t\t\t\tHierarchyHandler,\n\t\t\t\t\t\tFolderHandler,\n\t\t\t\t\t\tFontHandler,\n\t\t\t\t\t\tBinaryHandler,\n\t\t\t\t\t\tTextureAtlasHandler,\n\t\t\t\t\t\tSpriteHandler,\n\t\t\t\t\t\tTemplateHandler,\n\t\t\t\t\t\tContainerHandler,\n\t\t\t\t\t\tGSplatHandler\n\t\t\t\t];\n\t\t}\n}\n\nclass AssetListLoader extends EventHandler {\n\t\tconstructor(assetList, assetRegistry){\n\t\t\t\tsuper(), this._assets = new Set(), this._loadingAssets = new Set(), this._waitingAssets = new Set(), this._loading = false, this._loaded = false, this._failed = [];\n\t\t\t\tthis._registry = assetRegistry;\n\t\t\t\tassetList.forEach((a)=>{\n\t\t\t\t\t\tif (a instanceof Asset) {\n\t\t\t\t\t\t\t\tif (!a.registry) {\n\t\t\t\t\t\t\t\t\t\ta.registry = assetRegistry;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._assets.add(a);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst asset = assetRegistry.get(a);\n\t\t\t\t\t\t\t\tif (asset) {\n\t\t\t\t\t\t\t\t\t\tthis._assets.add(asset);\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tthis._waitForAsset(a);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._registry.off('load', this._onLoad);\n\t\t\t\tthis._registry.off('error', this._onError);\n\t\t\t\tthis._waitingAssets.forEach((id)=>{\n\t\t\t\t\t\tthis._registry.off(`add:${id}`, this._onAddAsset);\n\t\t\t\t});\n\t\t\t\tthis.off('progress');\n\t\t\t\tthis.off('load');\n\t\t}\n\t\t_assetHasDependencies(asset) {\n\t\t\t\treturn asset.type === 'model' && asset.file?.url && asset.file.url && asset.file.url.match(/.json$/g);\n\t\t}\n\t\tload(done, scope) {\n\t\t\t\tif (this._loading) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._loading = true;\n\t\t\t\tthis._callback = done;\n\t\t\t\tthis._scope = scope;\n\t\t\t\tthis._registry.on('load', this._onLoad, this);\n\t\t\t\tthis._registry.on('error', this._onError, this);\n\t\t\t\tlet loadingAssets = false;\n\t\t\t\tthis._assets.forEach((asset)=>{\n\t\t\t\t\t\tif (!asset.loaded) {\n\t\t\t\t\t\t\t\tloadingAssets = true;\n\t\t\t\t\t\t\t\tif (this._assetHasDependencies(asset)) {\n\t\t\t\t\t\t\t\t\t\tthis._registry.loadFromUrl(asset.file.url, asset.type, (err, loadedAsset)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tif (err) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tthis._onError(err, asset);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tthis._onLoad(asset);\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._loadingAssets.add(asset);\n\t\t\t\t\t\t\t\tthis._registry.add(asset);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._loadingAssets.forEach((asset)=>{\n\t\t\t\t\t\tif (!this._assetHasDependencies(asset)) {\n\t\t\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif (!loadingAssets && this._waitingAssets.size === 0) {\n\t\t\t\t\t\tthis._loadingComplete();\n\t\t\t\t}\n\t\t}\n\t\tready(done, scope = this) {\n\t\t\t\tif (this._loaded) {\n\t\t\t\t\t\tdone.call(scope, Array.from(this._assets));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.once('load', (assets)=>{\n\t\t\t\t\t\t\t\tdone.call(scope, assets);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\t_loadingComplete() {\n\t\t\t\tif (this._loaded) return;\n\t\t\t\tthis._loaded = true;\n\t\t\t\tthis._registry.off('load', this._onLoad, this);\n\t\t\t\tthis._registry.off('error', this._onError, this);\n\t\t\t\tif (this._failed.length) {\n\t\t\t\t\t\tif (this._callback) {\n\t\t\t\t\t\t\t\tthis._callback.call(this._scope, 'Failed to load some assets', this._failed);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('error', this._failed);\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._callback) {\n\t\t\t\t\t\t\t\tthis._callback.call(this._scope);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.fire('load', Array.from(this._assets));\n\t\t\t\t}\n\t\t}\n\t\t_onLoad(asset) {\n\t\t\t\tif (this._loadingAssets.has(asset)) {\n\t\t\t\t\t\tthis.fire('progress', asset);\n\t\t\t\t\t\tthis._loadingAssets.delete(asset);\n\t\t\t\t}\n\t\t\t\tif (this._loadingAssets.size === 0) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tthis._loadingComplete();\n\t\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t}\n\t\t_onError(err, asset) {\n\t\t\t\tif (this._loadingAssets.has(asset)) {\n\t\t\t\t\t\tthis._failed.push(asset);\n\t\t\t\t\t\tthis._loadingAssets.delete(asset);\n\t\t\t\t}\n\t\t\t\tif (this._loadingAssets.size === 0) {\n\t\t\t\t\t\tsetTimeout(()=>{\n\t\t\t\t\t\t\t\tthis._loadingComplete();\n\t\t\t\t\t\t}, 0);\n\t\t\t\t}\n\t\t}\n\t\t_onAddAsset(asset) {\n\t\t\t\tthis._waitingAssets.delete(asset);\n\t\t\t\tthis._assets.add(asset);\n\t\t\t\tif (!asset.loaded) {\n\t\t\t\t\t\tthis._loadingAssets.add(asset);\n\t\t\t\t\t\tthis._registry.load(asset);\n\t\t\t\t}\n\t\t}\n\t\t_waitForAsset(assetId) {\n\t\t\t\tthis._waitingAssets.add(assetId);\n\t\t\t\tthis._registry.once(`add:${assetId}`, this._onAddAsset, this);\n\t\t}\n}\n\nconst MAX_TEXTURE_SIZE = 4096;\nconst DEFAULT_TEXTURE_SIZE = 512;\nclass Atlas {\n\t\tconstructor(device, width, height, name){\n\t\t\t\tthis.canvas = document.createElement('canvas');\n\t\t\t\tthis.canvas.width = width;\n\t\t\t\tthis.canvas.height = height;\n\t\t\t\tthis.texture = new Texture(device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tmipmaps: true,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR_MIPMAP_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\tthis.canvas\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t\t\tthis.ctx = this.canvas.getContext('2d', {\n\t\t\t\t\t\talpha: true\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture.destroy();\n\t\t}\n\t\tclear(clearColor) {\n\t\t\t\tconst { width, height } = this.canvas;\n\t\t\t\tthis.ctx.clearRect(0, 0, width, height);\n\t\t\t\tthis.ctx.fillStyle = clearColor;\n\t\t\t\tthis.ctx.fillRect(0, 0, width, height);\n\t\t}\n}\nclass CanvasFont extends EventHandler {\n\t\tconstructor(app, options = {}){\n\t\t\t\tsuper();\n\t\t\t\tthis.type = 'bitmap';\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.intensity = 0;\n\t\t\t\tthis.fontWeight = options.fontWeight || 'normal';\n\t\t\t\tthis.fontSize = parseInt(options.fontSize, 10);\n\t\t\t\tthis.glyphSize = this.fontSize;\n\t\t\t\tthis.fontName = options.fontName || 'Arial';\n\t\t\t\tthis.color = options.color || new Color(1, 1, 1);\n\t\t\t\tthis.padding = options.padding || 0;\n\t\t\t\tthis.width = Math.min(MAX_TEXTURE_SIZE, options.width || DEFAULT_TEXTURE_SIZE);\n\t\t\t\tthis.height = Math.min(MAX_TEXTURE_SIZE, options.height || DEFAULT_TEXTURE_SIZE);\n\t\t\t\tthis.atlases = [];\n\t\t\t\tthis.chars = '';\n\t\t\t\tthis.data = {};\n\t\t}\n\t\tcreateTextures(text) {\n\t\t\t\tconst _chars = this._normalizeCharsSet(text);\n\t\t\t\tif (_chars.length !== this.chars.length) {\n\t\t\t\t\t\tthis._renderAtlas(_chars);\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < _chars.length; i++){\n\t\t\t\t\t\tif (_chars[i] !== this.chars[i]) {\n\t\t\t\t\t\t\t\tthis._renderAtlas(_chars);\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tupdateTextures(text) {\n\t\t\t\tconst _chars = this._normalizeCharsSet(text);\n\t\t\t\tconst newCharsSet = [];\n\t\t\t\tfor(let i = 0; i < _chars.length; i++){\n\t\t\t\t\t\tconst char = _chars[i];\n\t\t\t\t\t\tif (!this.data.chars[char]) {\n\t\t\t\t\t\t\t\tnewCharsSet.push(char);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (newCharsSet.length > 0) {\n\t\t\t\t\t\tthis._renderAtlas(this.chars.concat(newCharsSet));\n\t\t\t\t}\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.atlases.forEach((atlas)=>atlas.destroy());\n\t\t\t\tthis.chars = null;\n\t\t\t\tthis.color = null;\n\t\t\t\tthis.data = null;\n\t\t\t\tthis.fontName = null;\n\t\t\t\tthis.fontSize = null;\n\t\t\t\tthis.glyphSize = null;\n\t\t\t\tthis.intensity = null;\n\t\t\t\tthis.atlases = null;\n\t\t\t\tthis.type = null;\n\t\t\t\tthis.fontWeight = null;\n\t\t}\n\t\t_colorToRgbString(color, alpha) {\n\t\t\t\tlet str;\n\t\t\t\tconst r = Math.round(255 * color.r);\n\t\t\t\tconst g = Math.round(255 * color.g);\n\t\t\t\tconst b = Math.round(255 * color.b);\n\t\t\t\tif (alpha) {\n\t\t\t\t\t\tstr = `rgba(${r}, ${g}, ${b}, ${color.a})`;\n\t\t\t\t} else {\n\t\t\t\t\t\tstr = `rgb(${r}, ${g}, ${b})`;\n\t\t\t\t}\n\t\t\t\treturn str;\n\t\t}\n\t\trenderCharacter(context, char, x, y, color) {\n\t\t\t\tcontext.fillStyle = color;\n\t\t\t\tcontext.fillText(char, x, y);\n\t\t}\n\t\t_getAtlas(index) {\n\t\t\t\tif (index >= this.atlases.length) {\n\t\t\t\t\t\tthis.atlases[index] = new Atlas(this.app.graphicsDevice, this.width, this.height, `font-atlas-${this.fontName}-${index}`);\n\t\t\t\t}\n\t\t\t\treturn this.atlases[index];\n\t\t}\n\t\t_renderAtlas(charsArray) {\n\t\t\t\tthis.chars = charsArray;\n\t\t\t\tconst w = this.width;\n\t\t\t\tconst h = this.height;\n\t\t\t\tconst color = this._colorToRgbString(this.color, false);\n\t\t\t\tconst a = this.color.a;\n\t\t\t\tthis.color.a = 1 / 255;\n\t\t\t\tconst transparent = this._colorToRgbString(this.color, true);\n\t\t\t\tthis.color.a = a;\n\t\t\t\tconst TEXT_ALIGN = 'center';\n\t\t\t\tconst TEXT_BASELINE = 'alphabetic';\n\t\t\t\tlet atlasIndex = 0;\n\t\t\t\tlet atlas = this._getAtlas(atlasIndex++);\n\t\t\t\tatlas.clear(transparent);\n\t\t\t\tthis.data = this._createJson(this.chars, this.fontName, w, h);\n\t\t\t\tconst symbols = string.getSymbols(this.chars.join(''));\n\t\t\t\tlet maxHeight = 0;\n\t\t\t\tlet maxDescent = 0;\n\t\t\t\tconst metrics = {};\n\t\t\t\tfor(let i = 0; i < symbols.length; i++){\n\t\t\t\t\t\tconst ch = symbols[i];\n\t\t\t\t\t\tmetrics[ch] = this._getTextMetrics(ch);\n\t\t\t\t\t\tmaxHeight = Math.max(maxHeight, metrics[ch].height);\n\t\t\t\t\t\tmaxDescent = Math.max(maxDescent, metrics[ch].descent);\n\t\t\t\t}\n\t\t\t\tthis.glyphSize = Math.max(this.glyphSize, maxHeight);\n\t\t\t\tconst sx = this.glyphSize + this.padding * 2;\n\t\t\t\tconst sy = this.glyphSize + this.padding * 2;\n\t\t\t\tconst _xOffset = this.glyphSize / 2 + this.padding;\n\t\t\t\tconst _yOffset = sy - maxDescent - this.padding;\n\t\t\t\tlet _x = 0;\n\t\t\t\tlet _y = 0;\n\t\t\t\tfor(let i = 0; i < symbols.length; i++){\n\t\t\t\t\t\tconst ch = symbols[i];\n\t\t\t\t\t\tconst code = string.getCodePoint(symbols[i]);\n\t\t\t\t\t\tlet fs = this.fontSize;\n\t\t\t\t\t\tatlas.ctx.font = `${this.fontWeight} ${fs.toString()}px ${this.fontName}`;\n\t\t\t\t\t\tatlas.ctx.textAlign = TEXT_ALIGN;\n\t\t\t\t\t\tatlas.ctx.textBaseline = TEXT_BASELINE;\n\t\t\t\t\t\tlet width = atlas.ctx.measureText(ch).width;\n\t\t\t\t\t\tif (width > fs) {\n\t\t\t\t\t\t\t\tfs = this.fontSize * this.fontSize / width;\n\t\t\t\t\t\t\t\tatlas.ctx.font = `${this.fontWeight} ${fs.toString()}px ${this.fontName}`;\n\t\t\t\t\t\t\t\twidth = this.fontSize;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.renderCharacter(atlas.ctx, ch, _x + _xOffset, _y + _yOffset, color);\n\t\t\t\t\t\tconst xoffset = this.padding + (this.glyphSize - width) / 2;\n\t\t\t\t\t\tconst yoffset = -this.padding + metrics[ch].descent - maxDescent;\n\t\t\t\t\t\tconst xadvance = width;\n\t\t\t\t\t\tthis._addChar(this.data, ch, code, _x, _y, sx, sy, xoffset, yoffset, xadvance, atlasIndex - 1, w, h);\n\t\t\t\t\t\t_x += sx;\n\t\t\t\t\t\tif (_x + sx > w) {\n\t\t\t\t\t\t\t\t_x = 0;\n\t\t\t\t\t\t\t\t_y += sy;\n\t\t\t\t\t\t\t\tif (_y + sy > h) {\n\t\t\t\t\t\t\t\t\t\tatlas = this._getAtlas(atlasIndex++);\n\t\t\t\t\t\t\t\t\t\tatlas.clear(transparent);\n\t\t\t\t\t\t\t\t\t\t_y = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.atlases.splice(atlasIndex).forEach((atlas)=>atlas.destroy());\n\t\t\t\tthis.atlases.forEach((atlas)=>atlas.texture.upload());\n\t\t\t\tthis.fire('render');\n\t\t}\n\t\t_createJson(chars, fontName, width, height) {\n\t\t\t\tconst base = {\n\t\t\t\t\t\t'version': 3,\n\t\t\t\t\t\t'intensity': this.intensity,\n\t\t\t\t\t\t'info': {\n\t\t\t\t\t\t\t\t'face': fontName,\n\t\t\t\t\t\t\t\t'width': width,\n\t\t\t\t\t\t\t\t'height': height,\n\t\t\t\t\t\t\t\t'maps': [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t'width': width,\n\t\t\t\t\t\t\t\t\t\t\t\t'height': height\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'chars': {}\n\t\t\t\t};\n\t\t\t\treturn base;\n\t\t}\n\t\t_addChar(json, char, charCode, x, y, w, h, xoffset, yoffset, xadvance, mapNum, mapW, mapH) {\n\t\t\t\tif (json.info.maps.length < mapNum + 1) {\n\t\t\t\t\t\tjson.info.maps.push({\n\t\t\t\t\t\t\t\t'width': mapW,\n\t\t\t\t\t\t\t\t'height': mapH\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst scale = this.fontSize / 32;\n\t\t\t\tjson.chars[char] = {\n\t\t\t\t\t\t'id': charCode,\n\t\t\t\t\t\t'letter': char,\n\t\t\t\t\t\t'x': x,\n\t\t\t\t\t\t'y': y,\n\t\t\t\t\t\t'width': w,\n\t\t\t\t\t\t'height': h,\n\t\t\t\t\t\t'xadvance': xadvance / scale,\n\t\t\t\t\t\t'xoffset': xoffset / scale,\n\t\t\t\t\t\t'yoffset': (yoffset + this.padding) / scale,\n\t\t\t\t\t\t'scale': scale,\n\t\t\t\t\t\t'range': 1,\n\t\t\t\t\t\t'map': mapNum,\n\t\t\t\t\t\t'bounds': [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tw / scale,\n\t\t\t\t\t\t\t\th / scale\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t}\n\t\t_normalizeCharsSet(text) {\n\t\t\t\tconst unicodeConverterFunc = this.app.systems.element.getUnicodeConverter();\n\t\t\t\tif (unicodeConverterFunc) {\n\t\t\t\t\t\ttext = unicodeConverterFunc(text);\n\t\t\t\t}\n\t\t\t\tconst set = {};\n\t\t\t\tconst symbols = string.getSymbols(text);\n\t\t\t\tfor(let i = 0; i < symbols.length; i++){\n\t\t\t\t\t\tconst ch = symbols[i];\n\t\t\t\t\t\tif (set[ch]) continue;\n\t\t\t\t\t\tset[ch] = ch;\n\t\t\t\t}\n\t\t\t\tconst chars = Object.keys(set);\n\t\t\t\treturn chars.sort();\n\t\t}\n\t\t_getTextMetrics(text) {\n\t\t\t\tconst textSpan = document.createElement('span');\n\t\t\t\ttextSpan.id = 'content-span';\n\t\t\t\ttextSpan.innerHTML = text;\n\t\t\t\tconst block = document.createElement('div');\n\t\t\t\tblock.id = 'content-block';\n\t\t\t\tblock.style.display = 'inline-block';\n\t\t\t\tblock.style.width = '1px';\n\t\t\t\tblock.style.height = '0px';\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.appendChild(textSpan);\n\t\t\t\tdiv.appendChild(block);\n\t\t\t\tdiv.style.font = `${this.fontSize}px ${this.fontName}`;\n\t\t\t\tconst body = document.body;\n\t\t\t\tbody.appendChild(div);\n\t\t\t\tlet ascent = -1;\n\t\t\t\tlet descent = -1;\n\t\t\t\tlet height = -1;\n\t\t\t\ttry {\n\t\t\t\t\t\tblock.style['vertical-align'] = 'baseline';\n\t\t\t\t\t\tascent = block.offsetTop - textSpan.offsetTop;\n\t\t\t\t\t\tblock.style['vertical-align'] = 'bottom';\n\t\t\t\t\t\theight = block.offsetTop - textSpan.offsetTop;\n\t\t\t\t\t\tdescent = height - ascent;\n\t\t\t\t} finally{\n\t\t\t\t\t\tdocument.body.removeChild(div);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\tascent: ascent,\n\t\t\t\t\t\tdescent: descent,\n\t\t\t\t\t\theight: height\n\t\t\t\t};\n\t\t}\n\t\tget textures() {\n\t\t\t\treturn this.atlases.map((atlas)=>atlas.texture);\n\t\t}\n}\n\nconst tempMeshInstances$1 = [];\nconst lights = [\n\t\t[],\n\t\t[],\n\t\t[]\n];\nclass RenderPassPicker extends RenderPass {\n\t\tconstructor(device, renderer){\n\t\t\t\tsuper(device), this.viewBindGroups = [];\n\t\t\t\tthis.renderer = renderer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tupdate(camera, scene, layers, mapping) {\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.layers = layers;\n\t\t\t\tthis.mapping = mapping;\n\t\t\t\tif (scene.clusteredLightingEnabled) {\n\t\t\t\t\t\tthis.emptyWorldClusters = this.renderer.worldClustersAllocator.empty;\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst device = this.device;\n\t\t\t\tconst { renderer, camera, scene, layers, mapping, renderTarget } = this;\n\t\t\t\tconst srcLayers = scene.layers.layerList;\n\t\t\t\tconst subLayerEnabled = scene.layers.subLayerEnabled;\n\t\t\t\tconst isTransparent = scene.layers.subLayerList;\n\t\t\t\tfor(let i = 0; i < srcLayers.length; i++){\n\t\t\t\t\t\tconst srcLayer = srcLayers[i];\n\t\t\t\t\t\tif (layers && layers.indexOf(srcLayer) < 0) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (srcLayer.enabled && subLayerEnabled[i]) {\n\t\t\t\t\t\t\t\tif (srcLayer.camerasSet.has(camera.camera)) {\n\t\t\t\t\t\t\t\t\t\tconst transparent = isTransparent[i];\n\t\t\t\t\t\t\t\t\t\tif (srcLayer._clearDepthBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.clear(camera.camera, false, true, false);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst meshInstances = srcLayer.meshInstances;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstance.pick && meshInstance.transparent === transparent) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttempMeshInstances$1.push(meshInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmapping.set(meshInstance.id, meshInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (tempMeshInstances$1.length > 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst clusteredLightingEnabled = scene.clusteredLightingEnabled;\n\t\t\t\t\t\t\t\t\t\t\t\tif (clusteredLightingEnabled) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst lightClusters = this.emptyWorldClusters;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tlightClusters.activate();\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.setCameraUniforms(camera.camera, renderTarget);\n\t\t\t\t\t\t\t\t\t\t\t\tif (device.supportsUniformBuffers) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\trenderer.setupViewUniformBuffers(this.viewBindGroups, renderer.viewUniformFormat, renderer.viewBindGroupFormat, null);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\trenderer.renderForward(camera.camera, renderTarget, tempMeshInstances$1, lights, SHADER_PICK, (meshInstance)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\t\ttempMeshInstances$1.length = 0;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst tempSet = new Set();\nconst _rect = new Vec4();\nclass Picker {\n\t\tconstructor(app, width, height){\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.mapping = new Map();\n\t\t\t\tthis.deviceValid = true;\n\t\t\t\tthis.renderer = app.renderer;\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.renderPass = new RenderPassPicker(this.device, app.renderer);\n\t\t\t\tthis.width = 0;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.resize(width, height);\n\t\t\t\tthis.device.on('destroy', ()=>{\n\t\t\t\t\t\tthis.deviceValid = false;\n\t\t\t\t});\n\t\t}\n\t\tgetSelection(x, y, width = 1, height = 1) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tif (device.isWebGPU) {\n\t\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\ty = this.renderTarget.height - (y + height);\n\t\t\t\tconst rect = this.sanitizeRect(x, y, width, height);\n\t\t\t\tdevice.setRenderTarget(this.renderTarget);\n\t\t\t\tdevice.updateBegin();\n\t\t\t\tconst pixels = new Uint8Array(4 * rect.z * rect.w);\n\t\t\t\tdevice.readPixels(rect.x, rect.y, rect.z, rect.w, pixels);\n\t\t\t\tdevice.updateEnd();\n\t\t\t\treturn this.decodePixels(pixels, this.mapping);\n\t\t}\n\t\tgetSelectionAsync(x, y, width = 1, height = 1) {\n\t\t\t\tif (this.device?.isWebGL2) {\n\t\t\t\t\t\ty = this.renderTarget.height - (y + height);\n\t\t\t\t}\n\t\t\t\tconst rect = this.sanitizeRect(x, y, width, height);\n\t\t\t\treturn this.renderTarget.colorBuffer.read(rect.x, rect.y, rect.z, rect.w, {\n\t\t\t\t\t\trenderTarget: this.renderTarget,\n\t\t\t\t\t\timmediate: true\n\t\t\t\t}).then((pixels)=>{\n\t\t\t\t\t\treturn this.decodePixels(pixels, this.mapping);\n\t\t\t\t});\n\t\t}\n\t\tsanitizeRect(x, y, width, height) {\n\t\t\t\tconst maxWidth = this.renderTarget.width;\n\t\t\t\tconst maxHeight = this.renderTarget.height;\n\t\t\t\tx = math.clamp(Math.floor(x), 0, maxWidth - 1);\n\t\t\t\ty = math.clamp(Math.floor(y), 0, maxHeight - 1);\n\t\t\t\twidth = Math.floor(Math.max(width, 1));\n\t\t\t\twidth = Math.min(width, maxWidth - x);\n\t\t\t\theight = Math.floor(Math.max(height, 1));\n\t\t\t\theight = Math.min(height, maxHeight - y);\n\t\t\t\treturn _rect.set(x, y, width, height);\n\t\t}\n\t\tdecodePixels(pixels, mapping) {\n\t\t\t\tconst selection = [];\n\t\t\t\tif (this.deviceValid) {\n\t\t\t\t\t\tconst count = pixels.length;\n\t\t\t\t\t\tfor(let i = 0; i < count; i += 4){\n\t\t\t\t\t\t\t\tconst r = pixels[i + 0];\n\t\t\t\t\t\t\t\tconst g = pixels[i + 1];\n\t\t\t\t\t\t\t\tconst b = pixels[i + 2];\n\t\t\t\t\t\t\t\tconst a = pixels[i + 3];\n\t\t\t\t\t\t\t\tconst index = (a << 24 | r << 16 | g << 8 | b) >>> 0;\n\t\t\t\t\t\t\t\tif (index !== 0xFFFFFFFF) {\n\t\t\t\t\t\t\t\t\t\ttempSet.add(mapping.get(index));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttempSet.forEach((meshInstance)=>{\n\t\t\t\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\t\t\t\t\tselection.push(meshInstance);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\ttempSet.clear();\n\t\t\t\t}\n\t\t\t\treturn selection;\n\t\t}\n\t\tallocateRenderTarget() {\n\t\t\t\tconst colorBuffer = new Texture(this.device, {\n\t\t\t\t\t\tformat: PIXELFORMAT_RGBA8,\n\t\t\t\t\t\twidth: this.width,\n\t\t\t\t\t\theight: this.height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tname: 'pick'\n\t\t\t\t});\n\t\t\t\tthis.renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: colorBuffer,\n\t\t\t\t\t\tdepth: true\n\t\t\t\t});\n\t\t}\n\t\treleaseRenderTarget() {\n\t\t\t\tif (this.renderTarget) {\n\t\t\t\t\t\tthis.renderTarget.destroyTextureBuffers();\n\t\t\t\t\t\tthis.renderTarget.destroy();\n\t\t\t\t\t\tthis.renderTarget = null;\n\t\t\t\t}\n\t\t}\n\t\tprepare(camera, scene, layers) {\n\t\t\t\tif (layers instanceof Layer) {\n\t\t\t\t\t\tlayers = [\n\t\t\t\t\t\t\t\tlayers\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (!this.renderTarget || this.width !== this.renderTarget.width || this.height !== this.renderTarget.height) {\n\t\t\t\t\t\tthis.releaseRenderTarget();\n\t\t\t\t\t\tthis.allocateRenderTarget();\n\t\t\t\t}\n\t\t\t\tthis.mapping.clear();\n\t\t\t\tconst renderPass = this.renderPass;\n\t\t\t\trenderPass.init(this.renderTarget);\n\t\t\t\trenderPass.colorOps.clearValue = Color.WHITE;\n\t\t\t\trenderPass.colorOps.clear = true;\n\t\t\t\trenderPass.depthStencilOps.clearDepth = true;\n\t\t\t\trenderPass.update(camera, scene, layers, this.mapping);\n\t\t\t\trenderPass.render();\n\t\t}\n\t\tresize(width, height) {\n\t\t\t\tthis.width = Math.floor(width);\n\t\t\t\tthis.height = Math.floor(height);\n\t\t}\n}\n\nclass SceneSettingsHandler extends ResourceHandler {\n\t\tconstructor(app){\n\t\t\t\tsuper(app, 'scenesettings');\n\t\t}\n\t\tload(url, callback) {\n\t\t\t\tSceneUtils.load(url, this.maxRetries, callback);\n\t\t}\n\t\topen(url, data) {\n\t\t\t\treturn data.settings;\n\t\t}\n}\n\nlet targetX, targetY;\nconst vecA = new Vec3();\nconst vecB = new Vec3();\nconst rayA = new Ray();\nconst rayB = new Ray();\nconst rayC = new Ray();\nrayA.end = new Vec3();\nrayB.end = new Vec3();\nrayC.end = new Vec3();\nconst _pq = new Vec3();\nconst _pa = new Vec3();\nconst _pb = new Vec3();\nconst _pc = new Vec3();\nconst _pd = new Vec3();\nconst _m = new Vec3();\nconst _au = new Vec3();\nconst _bv = new Vec3();\nconst _cw = new Vec3();\nconst _ir = new Vec3();\nconst _sct = new Vec3();\nconst _accumulatedScale = new Vec3();\nconst _paddingTop = new Vec3();\nconst _paddingBottom = new Vec3();\nconst _paddingLeft = new Vec3();\nconst _paddingRight = new Vec3();\nconst _cornerBottomLeft = new Vec3();\nconst _cornerBottomRight = new Vec3();\nconst _cornerTopRight = new Vec3();\nconst _cornerTopLeft = new Vec3();\nconst ZERO_VEC4 = new Vec4();\nfunction scalarTriple(p1, p2, p3) {\n\t\treturn _sct.cross(p1, p2).dot(p3);\n}\nfunction intersectLineQuad(p, q, corners) {\n\t\t_pq.sub2(q, p);\n\t\t_pa.sub2(corners[0], p);\n\t\t_pb.sub2(corners[1], p);\n\t\t_pc.sub2(corners[2], p);\n\t\t_m.cross(_pc, _pq);\n\t\tlet v = _pa.dot(_m);\n\t\tlet u;\n\t\tlet w;\n\t\tif (v >= 0) {\n\t\t\t\tu = -_pb.dot(_m);\n\t\t\t\tif (u < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tw = scalarTriple(_pq, _pb, _pa);\n\t\t\t\tif (w < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tconst denom = 1.0 / (u + v + w);\n\t\t\t\t_au.copy(corners[0]).mulScalar(u * denom);\n\t\t\t\t_bv.copy(corners[1]).mulScalar(v * denom);\n\t\t\t\t_cw.copy(corners[2]).mulScalar(w * denom);\n\t\t\t\t_ir.copy(_au).add(_bv).add(_cw);\n\t\t} else {\n\t\t\t\t_pd.sub2(corners[3], p);\n\t\t\t\tu = _pd.dot(_m);\n\t\t\t\tif (u < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tw = scalarTriple(_pq, _pa, _pd);\n\t\t\t\tif (w < 0) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tv = -v;\n\t\t\t\tconst denom = 1.0 / (u + v + w);\n\t\t\t\t_au.copy(corners[0]).mulScalar(u * denom);\n\t\t\t\t_bv.copy(corners[3]).mulScalar(v * denom);\n\t\t\t\t_cw.copy(corners[2]).mulScalar(w * denom);\n\t\t\t\t_ir.copy(_au).add(_bv).add(_cw);\n\t\t}\n\t\tif (_pq.sub2(corners[0], corners[2]).lengthSq() < 0.0001 * 0.0001) return -1;\n\t\tif (_pq.sub2(corners[1], corners[3]).lengthSq() < 0.0001 * 0.0001) return -1;\n\t\treturn _ir.sub(p).lengthSq();\n}\nclass ElementInputEvent {\n\t\tconstructor(event, element, camera){\n\t\t\t\tthis.event = event;\n\t\t\t\tthis.element = element;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis._stopPropagation = false;\n\t\t}\n\t\tstopPropagation() {\n\t\t\t\tthis._stopPropagation = true;\n\t\t\t\tif (this.event) {\n\t\t\t\t\t\tthis.event.stopImmediatePropagation();\n\t\t\t\t\t\tthis.event.stopPropagation();\n\t\t\t\t}\n\t\t}\n}\nclass ElementMouseEvent extends ElementInputEvent {\n\t\tconstructor(event, element, camera, x, y, lastX, lastY){\n\t\t\t\tsuper(event, element, camera);\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.ctrlKey = event.ctrlKey || false;\n\t\t\t\tthis.altKey = event.altKey || false;\n\t\t\t\tthis.shiftKey = event.shiftKey || false;\n\t\t\t\tthis.metaKey = event.metaKey || false;\n\t\t\t\tthis.button = event.button;\n\t\t\t\tif (Mouse.isPointerLocked()) {\n\t\t\t\t\t\tthis.dx = event.movementX || event.webkitMovementX || event.mozMovementX || 0;\n\t\t\t\t\t\tthis.dy = event.movementY || event.webkitMovementY || event.mozMovementY || 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.dx = x - lastX;\n\t\t\t\t\t\tthis.dy = y - lastY;\n\t\t\t\t}\n\t\t\t\tthis.wheelDelta = 0;\n\t\t\t\tif (event.type === 'wheel') {\n\t\t\t\t\t\tif (event.deltaY > 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = 1;\n\t\t\t\t\t\t} else if (event.deltaY < 0) {\n\t\t\t\t\t\t\t\tthis.wheelDelta = -1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\nclass ElementTouchEvent extends ElementInputEvent {\n\t\tconstructor(event, element, camera, x, y, touch){\n\t\t\t\tsuper(event, element, camera);\n\t\t\t\tthis.touches = event.touches;\n\t\t\t\tthis.changedTouches = event.changedTouches;\n\t\t\t\tthis.x = x;\n\t\t\t\tthis.y = y;\n\t\t\t\tthis.touch = touch;\n\t\t}\n}\nclass ElementSelectEvent extends ElementInputEvent {\n\t\tconstructor(event, element, camera, inputSource){\n\t\t\t\tsuper(event, element, camera);\n\t\t\t\tthis.inputSource = inputSource;\n\t\t}\n}\nclass ElementInput {\n\t\tconstructor(domElement, options){\n\t\t\t\tthis._app = null;\n\t\t\t\tthis._attached = false;\n\t\t\t\tthis._target = null;\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis._lastX = 0;\n\t\t\t\tthis._lastY = 0;\n\t\t\t\tthis._upHandler = this._handleUp.bind(this);\n\t\t\t\tthis._downHandler = this._handleDown.bind(this);\n\t\t\t\tthis._moveHandler = this._handleMove.bind(this);\n\t\t\t\tthis._wheelHandler = this._handleWheel.bind(this);\n\t\t\t\tthis._touchstartHandler = this._handleTouchStart.bind(this);\n\t\t\t\tthis._touchendHandler = this._handleTouchEnd.bind(this);\n\t\t\t\tthis._touchcancelHandler = this._touchendHandler;\n\t\t\t\tthis._touchmoveHandler = this._handleTouchMove.bind(this);\n\t\t\t\tthis._sortHandler = this._sortElements.bind(this);\n\t\t\t\tthis._elements = [];\n\t\t\t\tthis._hoveredElement = null;\n\t\t\t\tthis._pressedElement = null;\n\t\t\t\tthis._touchedElements = {};\n\t\t\t\tthis._touchesForWhichTouchLeaveHasFired = {};\n\t\t\t\tthis._selectedElements = {};\n\t\t\t\tthis._selectedPressedElements = {};\n\t\t\t\tthis._useMouse = !options || options.useMouse !== false;\n\t\t\t\tthis._useTouch = !options || options.useTouch !== false;\n\t\t\t\tthis._useXr = !options || options.useXr !== false;\n\t\t\t\tthis._selectEventsAttached = false;\n\t\t\t\tif (platform.touch) {\n\t\t\t\t\t\tthis._clickedEntities = {};\n\t\t\t\t}\n\t\t\t\tthis.attach(domElement);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tthis._enabled = value;\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tset app(value) {\n\t\t\t\tthis._app = value;\n\t\t}\n\t\tget app() {\n\t\t\t\treturn this._app || getApplication();\n\t\t}\n\t\tattach(domElement) {\n\t\t\t\tif (this._attached) {\n\t\t\t\t\t\tthis._attached = false;\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._target = domElement;\n\t\t\t\tthis._attached = true;\n\t\t\t\tconst opts = platform.passiveEvents ? {\n\t\t\t\t\t\tpassive: true\n\t\t\t\t} : false;\n\t\t\t\tif (this._useMouse) {\n\t\t\t\t\t\twindow.addEventListener('mouseup', this._upHandler, opts);\n\t\t\t\t\t\twindow.addEventListener('mousedown', this._downHandler, opts);\n\t\t\t\t\t\twindow.addEventListener('mousemove', this._moveHandler, opts);\n\t\t\t\t\t\twindow.addEventListener('wheel', this._wheelHandler, opts);\n\t\t\t\t}\n\t\t\t\tif (this._useTouch && platform.touch) {\n\t\t\t\t\t\tthis._target.addEventListener('touchstart', this._touchstartHandler, opts);\n\t\t\t\t\t\tthis._target.addEventListener('touchend', this._touchendHandler, false);\n\t\t\t\t\t\tthis._target.addEventListener('touchmove', this._touchmoveHandler, false);\n\t\t\t\t\t\tthis._target.addEventListener('touchcancel', this._touchcancelHandler, false);\n\t\t\t\t}\n\t\t\t\tthis.attachSelectEvents();\n\t\t}\n\t\tattachSelectEvents() {\n\t\t\t\tif (!this._selectEventsAttached && this._useXr && this.app && this.app.xr && this.app.xr.supported) {\n\t\t\t\t\t\tif (!this._clickedEntities) {\n\t\t\t\t\t\t\t\tthis._clickedEntities = {};\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._selectEventsAttached = true;\n\t\t\t\t\t\tthis.app.xr.on('start', this._onXrStart, this);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._attached) return;\n\t\t\t\tthis._attached = false;\n\t\t\t\tconst opts = platform.passiveEvents ? {\n\t\t\t\t\t\tpassive: true\n\t\t\t\t} : false;\n\t\t\t\tif (this._useMouse) {\n\t\t\t\t\t\twindow.removeEventListener('mouseup', this._upHandler, opts);\n\t\t\t\t\t\twindow.removeEventListener('mousedown', this._downHandler, opts);\n\t\t\t\t\t\twindow.removeEventListener('mousemove', this._moveHandler, opts);\n\t\t\t\t\t\twindow.removeEventListener('wheel', this._wheelHandler, opts);\n\t\t\t\t}\n\t\t\t\tif (this._useTouch) {\n\t\t\t\t\t\tthis._target.removeEventListener('touchstart', this._touchstartHandler, opts);\n\t\t\t\t\t\tthis._target.removeEventListener('touchend', this._touchendHandler, false);\n\t\t\t\t\t\tthis._target.removeEventListener('touchmove', this._touchmoveHandler, false);\n\t\t\t\t\t\tthis._target.removeEventListener('touchcancel', this._touchcancelHandler, false);\n\t\t\t\t}\n\t\t\t\tif (this._selectEventsAttached) {\n\t\t\t\t\t\tthis._selectEventsAttached = false;\n\t\t\t\t\t\tthis.app.xr.off('start', this._onXrStart, this);\n\t\t\t\t\t\tthis.app.xr.off('end', this._onXrEnd, this);\n\t\t\t\t\t\tthis.app.xr.off('update', this._onXrUpdate, this);\n\t\t\t\t\t\tthis.app.xr.input.off('selectstart', this._onSelectStart, this);\n\t\t\t\t\t\tthis.app.xr.input.off('selectend', this._onSelectEnd, this);\n\t\t\t\t\t\tthis.app.xr.input.off('remove', this._onXrInputRemove, this);\n\t\t\t\t}\n\t\t\t\tthis._target = null;\n\t\t}\n\t\taddElement(element) {\n\t\t\t\tif (this._elements.indexOf(element) === -1) {\n\t\t\t\t\t\tthis._elements.push(element);\n\t\t\t\t}\n\t\t}\n\t\tremoveElement(element) {\n\t\t\t\tconst idx = this._elements.indexOf(element);\n\t\t\t\tif (idx !== -1) {\n\t\t\t\t\t\tthis._elements.splice(idx, 1);\n\t\t\t\t}\n\t\t}\n\t\t_handleUp(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tif (Mouse.isPointerLocked()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mouseup', event);\n\t\t}\n\t\t_handleDown(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tif (Mouse.isPointerLocked()) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mousedown', event);\n\t\t}\n\t\t_handleMove(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mousemove', event);\n\t\t\t\tthis._lastX = targetX;\n\t\t\t\tthis._lastY = targetY;\n\t\t}\n\t\t_handleWheel(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._calcMouseCoords(event);\n\t\t\t\tthis._onElementMouseEvent('mousewheel', event);\n\t\t}\n\t\t_determineTouchedElements(event) {\n\t\t\t\tconst touchedElements = {};\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tfor(let i = cameras.length - 1; i >= 0; i--){\n\t\t\t\t\t\tconst camera = cameras[i];\n\t\t\t\t\t\tlet done = 0;\n\t\t\t\t\t\tconst len = event.changedTouches.length;\n\t\t\t\t\t\tfor(let j = 0; j < len; j++){\n\t\t\t\t\t\t\t\tif (touchedElements[event.changedTouches[j].identifier]) {\n\t\t\t\t\t\t\t\t\t\tdone++;\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst coords = getTouchTargetCoords(event.changedTouches[j]);\n\t\t\t\t\t\t\t\tconst element = this._getTargetElementByCoords(camera, coords.x, coords.y);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tdone++;\n\t\t\t\t\t\t\t\t\t\ttouchedElements[event.changedTouches[j].identifier] = {\n\t\t\t\t\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\t\t\t\t\tcamera: camera,\n\t\t\t\t\t\t\t\t\t\t\t\tx: coords.x,\n\t\t\t\t\t\t\t\t\t\t\t\ty: coords.y\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (done === len) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn touchedElements;\n\t\t}\n\t\t_handleTouchStart(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst newTouchedElements = this._determineTouchedElements(event);\n\t\t\t\tfor(let i = 0, len = event.changedTouches.length; i < len; i++){\n\t\t\t\t\t\tconst touch = event.changedTouches[i];\n\t\t\t\t\t\tconst newTouchInfo = newTouchedElements[touch.identifier];\n\t\t\t\t\t\tconst oldTouchInfo = this._touchedElements[touch.identifier];\n\t\t\t\t\t\tif (newTouchInfo && (!oldTouchInfo || newTouchInfo.element !== oldTouchInfo.element)) {\n\t\t\t\t\t\t\t\tthis._fireEvent(event.type, new ElementTouchEvent(event, newTouchInfo.element, newTouchInfo.camera, newTouchInfo.x, newTouchInfo.y, touch));\n\t\t\t\t\t\t\t\tthis._touchesForWhichTouchLeaveHasFired[touch.identifier] = false;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const touchId in newTouchedElements){\n\t\t\t\t\t\tthis._touchedElements[touchId] = newTouchedElements[touchId];\n\t\t\t\t}\n\t\t}\n\t\t_handleTouchEnd(event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tfor(const key in this._clickedEntities){\n\t\t\t\t\t\tdelete this._clickedEntities[key];\n\t\t\t\t}\n\t\t\t\tfor(let i = 0, len = event.changedTouches.length; i < len; i++){\n\t\t\t\t\t\tconst touch = event.changedTouches[i];\n\t\t\t\t\t\tconst touchInfo = this._touchedElements[touch.identifier];\n\t\t\t\t\t\tif (!touchInfo) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst element = touchInfo.element;\n\t\t\t\t\t\tconst camera = touchInfo.camera;\n\t\t\t\t\t\tconst x = touchInfo.x;\n\t\t\t\t\t\tconst y = touchInfo.y;\n\t\t\t\t\t\tdelete this._touchedElements[touch.identifier];\n\t\t\t\t\t\tdelete this._touchesForWhichTouchLeaveHasFired[touch.identifier];\n\t\t\t\t\t\tconst coords = getTouchTargetCoords(touch);\n\t\t\t\t\t\tfor(let c = cameras.length - 1; c >= 0; c--){\n\t\t\t\t\t\t\t\tconst hovered = this._getTargetElementByCoords(cameras[c], coords.x, coords.y);\n\t\t\t\t\t\t\t\tif (hovered === element) {\n\t\t\t\t\t\t\t\t\t\tif (!this._clickedEntities[element.entity.getGuid()]) {\n\t\t\t\t\t\t\t\t\t\t\t\tthis._fireEvent('click', new ElementTouchEvent(event, element, camera, x, y, touch));\n\t\t\t\t\t\t\t\t\t\t\t\tthis._clickedEntities[element.entity.getGuid()] = Date.now();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._fireEvent(event.type, new ElementTouchEvent(event, element, camera, x, y, touch));\n\t\t\t\t}\n\t\t}\n\t\t_handleTouchMove(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst newTouchedElements = this._determineTouchedElements(event);\n\t\t\t\tfor(let i = 0, len = event.changedTouches.length; i < len; i++){\n\t\t\t\t\t\tconst touch = event.changedTouches[i];\n\t\t\t\t\t\tconst newTouchInfo = newTouchedElements[touch.identifier];\n\t\t\t\t\t\tconst oldTouchInfo = this._touchedElements[touch.identifier];\n\t\t\t\t\t\tif (oldTouchInfo) {\n\t\t\t\t\t\t\t\tconst coords = getTouchTargetCoords(touch);\n\t\t\t\t\t\t\t\tif ((!newTouchInfo || newTouchInfo.element !== oldTouchInfo.element) && !this._touchesForWhichTouchLeaveHasFired[touch.identifier]) {\n\t\t\t\t\t\t\t\t\t\tthis._fireEvent('touchleave', new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch));\n\t\t\t\t\t\t\t\t\t\tthis._touchesForWhichTouchLeaveHasFired[touch.identifier] = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis._fireEvent('touchmove', new ElementTouchEvent(event, oldTouchInfo.element, oldTouchInfo.camera, coords.x, coords.y, touch));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onElementMouseEvent(eventType, event) {\n\t\t\t\tlet element = null;\n\t\t\t\tconst lastHovered = this._hoveredElement;\n\t\t\t\tthis._hoveredElement = null;\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tlet camera;\n\t\t\t\tfor(let i = cameras.length - 1; i >= 0; i--){\n\t\t\t\t\t\tcamera = cameras[i];\n\t\t\t\t\t\telement = this._getTargetElementByCoords(camera, targetX, targetY);\n\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._hoveredElement = element;\n\t\t\t\tif ((eventType === 'mousemove' || eventType === 'mouseup') && this._pressedElement) {\n\t\t\t\t\t\tthis._fireEvent(eventType, new ElementMouseEvent(event, this._pressedElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t} else if (element) {\n\t\t\t\t\t\tthis._fireEvent(eventType, new ElementMouseEvent(event, element, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\tif (eventType === 'mousedown') {\n\t\t\t\t\t\t\t\tthis._pressedElement = element;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (lastHovered !== this._hoveredElement) {\n\t\t\t\t\t\tif (lastHovered) {\n\t\t\t\t\t\t\t\tthis._fireEvent('mouseleave', new ElementMouseEvent(event, lastHovered, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._hoveredElement) {\n\t\t\t\t\t\t\t\tthis._fireEvent('mouseenter', new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (eventType === 'mouseup' && this._pressedElement) {\n\t\t\t\t\t\tif (this._pressedElement === this._hoveredElement) {\n\t\t\t\t\t\t\t\tconst guid = this._hoveredElement.entity.getGuid();\n\t\t\t\t\t\t\t\tlet fireClick = !this._clickedEntities;\n\t\t\t\t\t\t\t\tif (this._clickedEntities) {\n\t\t\t\t\t\t\t\t\t\tconst lastTouchUp = this._clickedEntities[guid] || 0;\n\t\t\t\t\t\t\t\t\t\tconst dt = Date.now() - lastTouchUp;\n\t\t\t\t\t\t\t\t\t\tfireClick = dt > 300;\n\t\t\t\t\t\t\t\t\t\tdelete this._clickedEntities[guid];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (fireClick) {\n\t\t\t\t\t\t\t\t\t\tthis._fireEvent('click', new ElementMouseEvent(event, this._hoveredElement, camera, targetX, targetY, this._lastX, this._lastY));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._pressedElement = null;\n\t\t\t\t}\n\t\t}\n\t\t_onXrStart() {\n\t\t\t\tthis.app.xr.on('end', this._onXrEnd, this);\n\t\t\t\tthis.app.xr.on('update', this._onXrUpdate, this);\n\t\t\t\tthis.app.xr.input.on('selectstart', this._onSelectStart, this);\n\t\t\t\tthis.app.xr.input.on('selectend', this._onSelectEnd, this);\n\t\t\t\tthis.app.xr.input.on('remove', this._onXrInputRemove, this);\n\t\t}\n\t\t_onXrEnd() {\n\t\t\t\tthis.app.xr.off('update', this._onXrUpdate, this);\n\t\t\t\tthis.app.xr.input.off('selectstart', this._onSelectStart, this);\n\t\t\t\tthis.app.xr.input.off('selectend', this._onSelectEnd, this);\n\t\t\t\tthis.app.xr.input.off('remove', this._onXrInputRemove, this);\n\t\t}\n\t\t_onXrUpdate() {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst inputSources = this.app.xr.input.inputSources;\n\t\t\t\tfor(let i = 0; i < inputSources.length; i++){\n\t\t\t\t\t\tthis._onElementSelectEvent('selectmove', inputSources[i], null);\n\t\t\t\t}\n\t\t}\n\t\t_onXrInputRemove(inputSource) {\n\t\t\t\tconst hovered = this._selectedElements[inputSource.id];\n\t\t\t\tif (hovered) {\n\t\t\t\t\t\tinputSource._elementEntity = null;\n\t\t\t\t\t\tthis._fireEvent('selectleave', new ElementSelectEvent(null, hovered, null, inputSource));\n\t\t\t\t}\n\t\t\t\tdelete this._selectedElements[inputSource.id];\n\t\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t}\n\t\t_onSelectStart(inputSource, event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._onElementSelectEvent('selectstart', inputSource, event);\n\t\t}\n\t\t_onSelectEnd(inputSource, event) {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tthis._onElementSelectEvent('selectend', inputSource, event);\n\t\t}\n\t\t_onElementSelectEvent(eventType, inputSource, event) {\n\t\t\t\tlet element;\n\t\t\t\tconst hoveredBefore = this._selectedElements[inputSource.id];\n\t\t\t\tlet hoveredNow;\n\t\t\t\tconst cameras = this.app.systems.camera.cameras;\n\t\t\t\tlet camera;\n\t\t\t\tif (inputSource.elementInput) {\n\t\t\t\t\t\trayC.set(inputSource.getOrigin(), inputSource.getDirection());\n\t\t\t\t\t\tfor(let i = cameras.length - 1; i >= 0; i--){\n\t\t\t\t\t\t\t\tcamera = cameras[i];\n\t\t\t\t\t\t\t\telement = this._getTargetElementByRay(rayC, camera);\n\t\t\t\t\t\t\t\tif (element) {\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tinputSource._elementEntity = element || null;\n\t\t\t\tif (element) {\n\t\t\t\t\t\tthis._selectedElements[inputSource.id] = element;\n\t\t\t\t\t\thoveredNow = element;\n\t\t\t\t} else {\n\t\t\t\t\t\tdelete this._selectedElements[inputSource.id];\n\t\t\t\t}\n\t\t\t\tif (hoveredBefore !== hoveredNow) {\n\t\t\t\t\t\tif (hoveredBefore) this._fireEvent('selectleave', new ElementSelectEvent(event, hoveredBefore, camera, inputSource));\n\t\t\t\t\t\tif (hoveredNow) this._fireEvent('selectenter', new ElementSelectEvent(event, hoveredNow, camera, inputSource));\n\t\t\t\t}\n\t\t\t\tconst pressed = this._selectedPressedElements[inputSource.id];\n\t\t\t\tif (eventType === 'selectmove' && pressed) {\n\t\t\t\t\t\tthis._fireEvent('selectmove', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t}\n\t\t\t\tif (eventType === 'selectstart') {\n\t\t\t\t\t\tthis._selectedPressedElements[inputSource.id] = hoveredNow;\n\t\t\t\t\t\tif (hoveredNow) this._fireEvent('selectstart', new ElementSelectEvent(event, hoveredNow, camera, inputSource));\n\t\t\t\t}\n\t\t\t\tif (!inputSource.elementInput && pressed) {\n\t\t\t\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t\t\t\t\tif (hoveredBefore) {\n\t\t\t\t\t\t\t\tthis._fireEvent('selectend', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (eventType === 'selectend' && inputSource.elementInput) {\n\t\t\t\t\t\tdelete this._selectedPressedElements[inputSource.id];\n\t\t\t\t\t\tif (pressed) {\n\t\t\t\t\t\t\t\tthis._fireEvent('selectend', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (pressed && pressed === hoveredBefore) {\n\t\t\t\t\t\t\t\tthis._fireEvent('click', new ElementSelectEvent(event, pressed, camera, inputSource));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_fireEvent(name, evt) {\n\t\t\t\tlet element = evt.element;\n\t\t\t\twhile(true){\n\t\t\t\t\t\telement.fire(name, evt);\n\t\t\t\t\t\tif (evt._stopPropagation) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!element.entity.parent) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telement = element.entity.parent.element;\n\t\t\t\t\t\tif (!element) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_calcMouseCoords(event) {\n\t\t\t\tconst rect = this._target.getBoundingClientRect();\n\t\t\t\tconst left = Math.floor(rect.left);\n\t\t\t\tconst top = Math.floor(rect.top);\n\t\t\t\ttargetX = event.clientX - left;\n\t\t\t\ttargetY = event.clientY - top;\n\t\t}\n\t\t_sortElements(a, b) {\n\t\t\t\tconst layerOrder = this.app.scene.layers.sortTransparentLayers(a.layers, b.layers);\n\t\t\t\tif (layerOrder !== 0) return layerOrder;\n\t\t\t\tif (a.screen && !b.screen) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (!a.screen && b.screen) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tif (!a.screen && !b.screen) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tif (a.screen.screen.screenSpace && !b.screen.screen.screenSpace) {\n\t\t\t\t\t\treturn -1;\n\t\t\t\t}\n\t\t\t\tif (b.screen.screen.screenSpace && !a.screen.screen.screenSpace) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\treturn b.drawOrder - a.drawOrder;\n\t\t}\n\t\t_getTargetElementByCoords(camera, x, y) {\n\t\t\t\tconst rayScreen = this._calculateRayScreen(x, y, camera, rayA) ? rayA : null;\n\t\t\t\tconst ray3d = this._calculateRay3d(x, y, camera, rayB) ? rayB : null;\n\t\t\t\treturn this._getTargetElement(camera, rayScreen, ray3d);\n\t\t}\n\t\t_getTargetElementByRay(ray, camera) {\n\t\t\t\trayA.origin.copy(ray.origin);\n\t\t\t\trayA.direction.copy(ray.direction);\n\t\t\t\trayA.end.copy(rayA.direction).mulScalar(camera.farClip * 2).add(rayA.origin);\n\t\t\t\tconst ray3d = rayA;\n\t\t\t\tconst screenPos = camera.worldToScreen(ray3d.origin, vecA);\n\t\t\t\tconst rayScreen = this._calculateRayScreen(screenPos.x, screenPos.y, camera, rayB) ? rayB : null;\n\t\t\t\treturn this._getTargetElement(camera, rayScreen, ray3d);\n\t\t}\n\t\t_getTargetElement(camera, rayScreen, ray3d) {\n\t\t\t\tlet result = null;\n\t\t\t\tlet closestDistance3d = Infinity;\n\t\t\t\tthis._elements.sort(this._sortHandler);\n\t\t\t\tfor(let i = 0, len = this._elements.length; i < len; i++){\n\t\t\t\t\t\tconst element = this._elements[i];\n\t\t\t\t\t\tif (!element.layers.some((v)=>camera.layersSet.has(v))) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (element.screen && element.screen.screen.screenSpace) {\n\t\t\t\t\t\t\t\tif (!rayScreen) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst currentDistance = this._checkElement(rayScreen, element, true);\n\t\t\t\t\t\t\t\tif (currentDistance >= 0) {\n\t\t\t\t\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (!ray3d) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst currentDistance = this._checkElement(ray3d, element, false);\n\t\t\t\t\t\t\t\tif (currentDistance >= 0) {\n\t\t\t\t\t\t\t\t\t\tif (currentDistance < closestDistance3d) {\n\t\t\t\t\t\t\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\t\t\t\t\t\t\tclosestDistance3d = currentDistance;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tif (element.screen) {\n\t\t\t\t\t\t\t\t\t\t\t\tresult = element;\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t}\n\t\t_calculateRayScreen(x, y, camera, ray) {\n\t\t\t\tconst sw = this.app.graphicsDevice.width;\n\t\t\t\tconst sh = this.app.graphicsDevice.height;\n\t\t\t\tconst cameraWidth = camera.rect.z * sw;\n\t\t\t\tconst cameraHeight = camera.rect.w * sh;\n\t\t\t\tconst cameraLeft = camera.rect.x * sw;\n\t\t\t\tconst cameraRight = cameraLeft + cameraWidth;\n\t\t\t\tconst cameraBottom = (1 - camera.rect.y) * sh;\n\t\t\t\tconst cameraTop = cameraBottom - cameraHeight;\n\t\t\t\tlet _x = x * sw / this._target.clientWidth;\n\t\t\t\tlet _y = y * sh / this._target.clientHeight;\n\t\t\t\tif (_x >= cameraLeft && _x <= cameraRight && _y <= cameraBottom && _y >= cameraTop) {\n\t\t\t\t\t\t_x = sw * (_x - cameraLeft) / cameraWidth;\n\t\t\t\t\t\t_y = sh * (_y - cameraTop) / cameraHeight;\n\t\t\t\t\t\t_y = sh - _y;\n\t\t\t\t\t\tray.origin.set(_x, _y, 1);\n\t\t\t\t\t\tray.direction.set(0, 0, -1);\n\t\t\t\t\t\tray.end.copy(ray.direction).mulScalar(2).add(ray.origin);\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_calculateRay3d(x, y, camera, ray) {\n\t\t\t\tconst sw = this._target.clientWidth;\n\t\t\t\tconst sh = this._target.clientHeight;\n\t\t\t\tconst cameraWidth = camera.rect.z * sw;\n\t\t\t\tconst cameraHeight = camera.rect.w * sh;\n\t\t\t\tconst cameraLeft = camera.rect.x * sw;\n\t\t\t\tconst cameraRight = cameraLeft + cameraWidth;\n\t\t\t\tconst cameraBottom = (1 - camera.rect.y) * sh;\n\t\t\t\tconst cameraTop = cameraBottom - cameraHeight;\n\t\t\t\tlet _x = x;\n\t\t\t\tlet _y = y;\n\t\t\t\tif (x >= cameraLeft && x <= cameraRight && y <= cameraBottom && _y >= cameraTop) {\n\t\t\t\t\t\t_x = sw * (_x - cameraLeft) / cameraWidth;\n\t\t\t\t\t\t_y = sh * (_y - cameraTop) / cameraHeight;\n\t\t\t\t\t\tcamera.screenToWorld(_x, _y, camera.nearClip, vecA);\n\t\t\t\t\t\tcamera.screenToWorld(_x, _y, camera.farClip, vecB);\n\t\t\t\t\t\tray.origin.copy(vecA);\n\t\t\t\t\t\tray.direction.set(0, 0, -1);\n\t\t\t\t\t\tray.end.copy(vecB);\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t}\n\t\t_checkElement(ray, element, screen) {\n\t\t\t\tif (element.maskedBy) {\n\t\t\t\t\t\tif (this._checkElement(ray, element.maskedBy.element, screen) < 0) {\n\t\t\t\t\t\t\t\treturn -1;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tlet scale;\n\t\t\t\tif (screen) {\n\t\t\t\t\t\tscale = ElementInput.calculateScaleToScreen(element);\n\t\t\t\t} else {\n\t\t\t\t\t\tscale = ElementInput.calculateScaleToWorld(element);\n\t\t\t\t}\n\t\t\t\tconst corners = ElementInput.buildHitCorners(element, screen ? element.screenCorners : element.worldCorners, scale);\n\t\t\t\treturn intersectLineQuad(ray.origin, ray.end, corners);\n\t\t}\n\t\tstatic buildHitCorners(element, screenOrWorldCorners, scale) {\n\t\t\t\tlet hitCorners = screenOrWorldCorners;\n\t\t\t\tconst button = element.entity && element.entity.button;\n\t\t\t\tif (button) {\n\t\t\t\t\t\tconst hitPadding = element.entity.button.hitPadding || ZERO_VEC4;\n\t\t\t\t\t\t_paddingTop.copy(element.entity.up);\n\t\t\t\t\t\t_paddingBottom.copy(_paddingTop).mulScalar(-1);\n\t\t\t\t\t\t_paddingRight.copy(element.entity.right);\n\t\t\t\t\t\t_paddingLeft.copy(_paddingRight).mulScalar(-1);\n\t\t\t\t\t\t_paddingTop.mulScalar(hitPadding.w * scale.y);\n\t\t\t\t\t\t_paddingBottom.mulScalar(hitPadding.y * scale.y);\n\t\t\t\t\t\t_paddingRight.mulScalar(hitPadding.z * scale.x);\n\t\t\t\t\t\t_paddingLeft.mulScalar(hitPadding.x * scale.x);\n\t\t\t\t\t\t_cornerBottomLeft.copy(hitCorners[0]).add(_paddingBottom).add(_paddingLeft);\n\t\t\t\t\t\t_cornerBottomRight.copy(hitCorners[1]).add(_paddingBottom).add(_paddingRight);\n\t\t\t\t\t\t_cornerTopRight.copy(hitCorners[2]).add(_paddingTop).add(_paddingRight);\n\t\t\t\t\t\t_cornerTopLeft.copy(hitCorners[3]).add(_paddingTop).add(_paddingLeft);\n\t\t\t\t\t\thitCorners = [\n\t\t\t\t\t\t\t\t_cornerBottomLeft,\n\t\t\t\t\t\t\t\t_cornerBottomRight,\n\t\t\t\t\t\t\t\t_cornerTopRight,\n\t\t\t\t\t\t\t\t_cornerTopLeft\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (scale.x < 0) {\n\t\t\t\t\t\tconst left = hitCorners[2].x;\n\t\t\t\t\t\tconst right = hitCorners[0].x;\n\t\t\t\t\t\thitCorners[0].x = left;\n\t\t\t\t\t\thitCorners[1].x = right;\n\t\t\t\t\t\thitCorners[2].x = right;\n\t\t\t\t\t\thitCorners[3].x = left;\n\t\t\t\t}\n\t\t\t\tif (scale.y < 0) {\n\t\t\t\t\t\tconst bottom = hitCorners[2].y;\n\t\t\t\t\t\tconst top = hitCorners[0].y;\n\t\t\t\t\t\thitCorners[0].y = bottom;\n\t\t\t\t\t\thitCorners[1].y = bottom;\n\t\t\t\t\t\thitCorners[2].y = top;\n\t\t\t\t\t\thitCorners[3].y = top;\n\t\t\t\t}\n\t\t\t\tif (scale.z < 0) {\n\t\t\t\t\t\tconst x = hitCorners[2].x;\n\t\t\t\t\t\tconst y = hitCorners[2].y;\n\t\t\t\t\t\tconst z = hitCorners[2].z;\n\t\t\t\t\t\thitCorners[2].x = hitCorners[0].x;\n\t\t\t\t\t\thitCorners[2].y = hitCorners[0].y;\n\t\t\t\t\t\thitCorners[2].z = hitCorners[0].z;\n\t\t\t\t\t\thitCorners[0].x = x;\n\t\t\t\t\t\thitCorners[0].y = y;\n\t\t\t\t\t\thitCorners[0].z = z;\n\t\t\t\t}\n\t\t\t\treturn hitCorners;\n\t\t}\n\t\tstatic calculateScaleToScreen(element) {\n\t\t\t\tlet current = element.entity;\n\t\t\t\tconst screenScale = element.screen.screen.scale;\n\t\t\t\t_accumulatedScale.set(screenScale, screenScale, screenScale);\n\t\t\t\twhile(current && !current.screen){\n\t\t\t\t\t\t_accumulatedScale.mul(current.getLocalScale());\n\t\t\t\t\t\tcurrent = current.parent;\n\t\t\t\t}\n\t\t\t\treturn _accumulatedScale;\n\t\t}\n\t\tstatic calculateScaleToWorld(element) {\n\t\t\t\tlet current = element.entity;\n\t\t\t\t_accumulatedScale.set(1, 1, 1);\n\t\t\t\twhile(current){\n\t\t\t\t\t\t_accumulatedScale.mul(current.getLocalScale());\n\t\t\t\t\t\tcurrent = current.parent;\n\t\t\t\t}\n\t\t\t\treturn _accumulatedScale;\n\t\t}\n}\n\nVec2.prototype.scale = Vec2.prototype.mulScalar;\nVec3.prototype.scale = Vec3.prototype.mulScalar;\nVec4.prototype.scale = Vec4.prototype.mulScalar;\nconst PIXELFORMAT_L8_A8 = PIXELFORMAT_LA8;\nconst PIXELFORMAT_R5_G6_B5 = PIXELFORMAT_RGB565;\nconst PIXELFORMAT_R5_G5_B5_A1 = PIXELFORMAT_RGBA5551;\nconst PIXELFORMAT_R4_G4_B4_A4 = PIXELFORMAT_RGBA4;\nconst PIXELFORMAT_R8_G8_B8 = PIXELFORMAT_RGB8;\nconst PIXELFORMAT_R8_G8_B8_A8 = PIXELFORMAT_RGBA8;\nconst PIXELFORMAT_SRGB = PIXELFORMAT_SRGB8;\nconst PIXELFORMAT_SRGBA = PIXELFORMAT_SRGBA8;\nconst BLENDMODE_CONSTANT_COLOR = BLENDMODE_CONSTANT;\nconst BLENDMODE_ONE_MINUS_CONSTANT_COLOR = BLENDMODE_ONE_MINUS_CONSTANT;\nconst BLENDMODE_CONSTANT_ALPHA = BLENDMODE_CONSTANT;\nconst BLENDMODE_ONE_MINUS_CONSTANT_ALPHA = BLENDMODE_ONE_MINUS_CONSTANT;\nconst CHUNKAPI_1_51 = '1.51';\nconst CHUNKAPI_1_55 = '1.55';\nconst CHUNKAPI_1_56 = '1.56';\nconst CHUNKAPI_1_57 = '1.57';\nconst CHUNKAPI_1_58 = '1.58';\nconst CHUNKAPI_1_60 = '1.60';\nconst CHUNKAPI_1_62 = '1.62';\nconst CHUNKAPI_1_65 = '1.65';\nconst CHUNKAPI_1_70 = '1.70';\nconst CHUNKAPI_2_1 = '2.1';\nconst CHUNKAPI_2_3 = '2.3';\nconst CHUNKAPI_2_5 = '2.5';\nconst CHUNKAPI_2_6 = '2.6';\nconst CHUNKAPI_2_7 = '2.7';\nconst CHUNKAPI_2_8 = '2.8';\nconst _viewport = new Vec4();\nfunction createSphere(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new SphereGeometry(opts));\n}\nfunction createPlane(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new PlaneGeometry(opts));\n}\nfunction createBox(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new BoxGeometry(opts));\n}\nfunction createTorus(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new TorusGeometry(opts));\n}\nfunction createCapsule(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new CapsuleGeometry(opts));\n}\nfunction createCone(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new ConeGeometry(opts));\n}\nfunction createCylinder(device, opts) {\n\t\treturn Mesh.fromGeometry(device, new CylinderGeometry(opts));\n}\nfunction createMesh(device, positions, opts = {}) {\n\t\tconst geom = new Geometry();\n\t\tgeom.positions = positions;\n\t\tgeom.normals = opts.normals;\n\t\tgeom.tangents = opts.tangents;\n\t\tgeom.colors = opts.colors;\n\t\tgeom.uvs = opts.uvs;\n\t\tgeom.uvs1 = opts.uvs1;\n\t\tgeom.blendIndices = opts.blendIndices;\n\t\tgeom.blendWeights = opts.blendWeights;\n\t\tgeom.indices = opts.indices;\n\t\treturn Mesh.fromGeometry(device, geom, opts);\n}\nfunction drawFullscreenQuad(device, target, vertexBuffer, shader, rect) {\n\t\tlet viewport;\n\t\tif (rect) {\n\t\t\t\tconst w = target ? target.width : device.width;\n\t\t\t\tconst h = target ? target.height : device.height;\n\t\t\t\tviewport = _viewport.set(rect.x * w, rect.y * h, rect.z * w, rect.w * h);\n\t\t}\n\t\tdrawQuadWithShader(device, target, shader, viewport);\n}\nObject.defineProperties(RenderTarget.prototype, {\n\t\t_glFrameBuffer: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.impl._glFrameBuffer;\n\t\t\t\t},\n\t\t\t\tset: function(rgbm) {}\n\t\t}\n});\nObject.defineProperty(VertexFormat, 'defaultInstancingFormat', {\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\nObject.defineProperties(Texture.prototype, {\n\t\trgbm: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.type === TEXTURETYPE_RGBM;\n\t\t\t\t},\n\t\t\t\tset: function(rgbm) {\n\t\t\t\t\t\tthis.type = rgbm ? TEXTURETYPE_RGBM : TEXTURETYPE_DEFAULT;\n\t\t\t\t}\n\t\t},\n\t\tswizzleGGGR: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.type === TEXTURETYPE_SWIZZLEGGGR;\n\t\t\t\t},\n\t\t\t\tset: function(swizzleGGGR) {\n\t\t\t\t\t\tthis.type = swizzleGGGR ? TEXTURETYPE_SWIZZLEGGGR : TEXTURETYPE_DEFAULT;\n\t\t\t\t}\n\t\t},\n\t\t_glTexture: {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this.impl._glTexture;\n\t\t\t\t}\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'boneLimit', {\n\t\tget: function() {\n\t\t\t\treturn 1024;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'webgl2', {\n\t\tget: function() {\n\t\t\t\treturn this.isWebGL2;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'textureFloatHighPrecision', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extBlendMinmax', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extTextureHalfFloat', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extTextureLod', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'textureHalfFloatFilterable', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'supportsMrt', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'supportsVolumeTextures', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'supportsInstancing', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'textureHalfFloatUpdatable', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extTextureFloat', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(GraphicsDevice.prototype, 'extStandardDerivatives', {\n\t\tget: function() {\n\t\t\t\treturn true;\n\t\t}\n});\nBlendState.DEFAULT = Object.freeze(new BlendState());\nconst _tempBlendState = new BlendState();\nconst _tempDepthState = new DepthState();\nGraphicsDevice.prototype.setBlendFunction = function(blendSrc, blendDst) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst);\n\t\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrc, blendDst);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendFunctionSeparate = function(blendSrc, blendDst, blendSrcAlpha, blendDstAlpha) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(currentBlendState.colorOp, blendSrc, blendDst);\n\t\t_tempBlendState.setAlphaBlend(currentBlendState.alphaOp, blendSrcAlpha, blendDstAlpha);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendEquation = function(blendEquation) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor);\n\t\t_tempBlendState.setAlphaBlend(blendEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setBlendEquationSeparate = function(blendEquation, blendAlphaEquation) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorBlend(blendEquation, currentBlendState.colorSrcFactor, currentBlendState.colorDstFactor);\n\t\t_tempBlendState.setAlphaBlend(blendAlphaEquation, currentBlendState.alphaSrcFactor, currentBlendState.alphaDstFactor);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setColorWrite = function(redWrite, greenWrite, blueWrite, alphaWrite) {\n\t\tconst currentBlendState = this.blendState;\n\t\t_tempBlendState.copy(currentBlendState);\n\t\t_tempBlendState.setColorWrite(redWrite, greenWrite, blueWrite, alphaWrite);\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.getBlending = function() {\n\t\treturn this.blendState.blend;\n};\nGraphicsDevice.prototype.setBlending = function(blending) {\n\t\t_tempBlendState.copy(this.blendState);\n\t\t_tempBlendState.blend = blending;\n\t\tthis.setBlendState(_tempBlendState);\n};\nGraphicsDevice.prototype.setDepthWrite = function(write) {\n\t\t_tempDepthState.copy(this.depthState);\n\t\t_tempDepthState.write = write;\n\t\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.setDepthFunc = function(func) {\n\t\t_tempDepthState.copy(this.depthState);\n\t\t_tempDepthState.func = func;\n\t\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.setDepthTest = function(test) {\n\t\t_tempDepthState.copy(this.depthState);\n\t\t_tempDepthState.test = test;\n\t\tthis.setDepthState(_tempDepthState);\n};\nGraphicsDevice.prototype.getCullMode = function() {\n\t\treturn this.cullMode;\n};\nconst Key = AnimationKey;\nconst Node = AnimationNode;\nconst LitOptions = LitShaderOptions;\nconst shaderChunks = new Proxy({}, {\n\t\tget (target, prop) {\n\t\t\t\treturn ShaderChunks.get(getApplication().graphicsDevice, SHADERLANGUAGE_GLSL).get(prop);\n\t\t},\n\t\tset (target, prop, value) {\n\t\t\t\tShaderChunks.get(getApplication().graphicsDevice, SHADERLANGUAGE_GLSL).set(prop, value);\n\t\t\t\treturn true;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'defaultMaterial', {\n\t\tget: function() {\n\t\t\t\treturn getDefaultMaterial(getApplication().graphicsDevice);\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogColor', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.color = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.color;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogEnd', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.end = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.end;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogStart', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.start = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.start;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'fogDensity', {\n\t\tset: function(value) {\n\t\t\t\tthis.fog.density = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.fog.density;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'toneMapping', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn undefined;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'gammaCorrection', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn undefined;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'rendering', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn undefined;\n\t\t}\n});\nObject.defineProperty(LayerComposition.prototype, '_meshInstances', {\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\nObject.defineProperty(Scene.prototype, 'drawCalls', {\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\n[\n\t\t'128',\n\t\t'64',\n\t\t'32',\n\t\t'16',\n\t\t'8',\n\t\t'4'\n].forEach((size, index)=>{\n\t\tObject.defineProperty(Scene.prototype, `skyboxPrefiltered${size}`, {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this._prefilteredCubemaps[index];\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis._prefilteredCubemaps[index] = value;\n\t\t\t\t\t\tthis.updateShaders = true;\n\t\t\t\t}\n\t\t});\n});\nObject.defineProperty(Scene.prototype, 'models', {\n\t\tget: function() {\n\t\t\t\tif (!this._models) {\n\t\t\t\t\t\tthis._models = [];\n\t\t\t\t}\n\t\t\t\treturn this._models;\n\t\t}\n});\nfunction _removedClassProperty(targetClass, name, comment = '') {\n\t\tObject.defineProperty(targetClass.prototype, name, {\n\t\t\t\tset: function(value) {},\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t});\n}\n_removedClassProperty(Layer, 'renderTarget');\n_removedClassProperty(Layer, 'onPreCull');\n_removedClassProperty(Layer, 'onPreRender');\n_removedClassProperty(Layer, 'onPreRenderOpaque');\n_removedClassProperty(Layer, 'onPreRenderTransparent');\n_removedClassProperty(Layer, 'onPostCull');\n_removedClassProperty(Layer, 'onPostRender');\n_removedClassProperty(Layer, 'onPostRenderOpaque');\n_removedClassProperty(Layer, 'onPostRenderTransparent');\n_removedClassProperty(Layer, 'onDrawCall');\n_removedClassProperty(Layer, 'layerReference');\n_removedClassProperty(CameraComponent, 'onPreCull', 'Use Scene#EVENT_PRECULL event instead.');\n_removedClassProperty(CameraComponent, 'onPostCull', 'Use Scene#EVENT_POSTCULL event instead.');\n_removedClassProperty(CameraComponent, 'onPreRender', 'Use Scene#EVENT_PRERENDER event instead.');\n_removedClassProperty(CameraComponent, 'onPostRender', 'Use Scene#EVENT_POSTRENDER event instead.');\n_removedClassProperty(CameraComponent, 'onPreRenderLayer', 'Use Scene#EVENT_PRERENDER_LAYER event instead.');\n_removedClassProperty(CameraComponent, 'onPostRenderLayer', 'Use Scene#EVENT_POSTRENDER_LAYER event instead.');\nForwardRenderer.prototype.renderComposition = function(comp) {\n\t\tgetApplication().renderComposition(comp);\n};\nMeshInstance.prototype.syncAabb = function() {};\nMorph.prototype.getTarget = function(index) {\n\t\treturn this.targets[index];\n};\nGraphNode.prototype.getChildren = function() {\n\t\treturn this.children;\n};\nGraphNode.prototype.getName = function() {\n\t\treturn this.name;\n};\nGraphNode.prototype.getPath = function() {\n\t\treturn this.path;\n};\nGraphNode.prototype.getRoot = function() {\n\t\treturn this.root;\n};\nGraphNode.prototype.getParent = function() {\n\t\treturn this.parent;\n};\nGraphNode.prototype.setName = function(name) {\n\t\tthis.name = name;\n};\nObject.defineProperty(Material.prototype, 'shader', {\n\t\tset: function(value) {},\n\t\tget: function() {\n\t\t\t\treturn null;\n\t\t}\n});\nObject.defineProperty(Material.prototype, 'blend', {\n\t\tset: function(value) {\n\t\t\t\tthis.blendState.blend = value;\n\t\t},\n\t\tget: function() {\n\t\t\t\treturn this.blendState.blend;\n\t\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'shininess', {\n\t\tget: function() {\n\t\t\t\treturn this.gloss * 100;\n\t\t},\n\t\tset: function(value) {\n\t\t\t\tthis.gloss = value * 0.01;\n\t\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'useGammaTonemap', {\n\t\tget: function() {\n\t\t\t\treturn this.useTonemap;\n\t\t},\n\t\tset: function(value) {\n\t\t\t\tthis.useTonemap = value;\n\t\t}\n});\nObject.defineProperty(StandardMaterial.prototype, 'anisotropy', {\n\t\tget: function() {\n\t\t\t\tconst sign = Math.sign(Math.cos(this.anisotropyRotation * math.DEG_TO_RAD * 2));\n\t\t\t\treturn this.anisotropyIntensity * sign;\n\t\t},\n\t\tset: function(value) {\n\t\t\t\tthis.anisotropyIntensity = Math.abs(value);\n\t\t\t\tif (value >= 0) {\n\t\t\t\t\t\tthis.anisotropyRotation = 0;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.anisotropyRotation = 90;\n\t\t\t\t}\n\t\t}\n});\nfunction _defineAlias(newName, oldName) {\n\t\tObject.defineProperty(StandardMaterial.prototype, oldName, {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn this[newName];\n\t\t\t\t},\n\t\t\t\tset: function(value) {\n\t\t\t\t\t\tthis[newName] = value;\n\t\t\t\t}\n\t\t});\n}\nfunction _deprecateTint(name) {\n\t\tObject.defineProperty(StandardMaterial.prototype, name, {\n\t\t\t\tget: function() {\n\t\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t\tset: function(value) {}\n\t\t});\n}\n_deprecateTint('sheenTint');\n_deprecateTint('diffuseTint');\n_deprecateTint('emissiveTint');\n_deprecateTint('ambientTint');\n_defineAlias('specularTint', 'specularMapTint');\n_defineAlias('aoVertexColor', 'aoMapVertexColor');\n_defineAlias('diffuseVertexColor', 'diffuseMapVertexColor');\n_defineAlias('specularVertexColor', 'specularMapVertexColor');\n_defineAlias('emissiveVertexColor', 'emissiveMapVertexColor');\n_defineAlias('metalnessVertexColor', 'metalnessMapVertexColor');\n_defineAlias('glossVertexColor', 'glossMapVertexColor');\n_defineAlias('opacityVertexColor', 'opacityMapVertexColor');\n_defineAlias('lightVertexColor', 'lightMapVertexColor');\n_defineAlias('sheenGloss', 'sheenGlossiess');\n_defineAlias('clearCoatGloss', 'clearCostGlossiness');\nfunction _defineOption(name, newName) {\n\t\tif (name !== 'pass') {\n\t\t\t\tObject.defineProperty(StandardMaterialOptions.prototype, name, {\n\t\t\t\t\t\tget: function() {\n\t\t\t\t\t\t\t\treturn this.litOptions[newName || name];\n\t\t\t\t\t\t},\n\t\t\t\t\t\tset: function(value) {\n\t\t\t\t\t\t\t\tthis.litOptions[newName || name] = value;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n}\n_defineOption('refraction', 'useRefraction');\nconst tempOptions = new LitShaderOptions();\nconst litOptionProperties = Object.getOwnPropertyNames(tempOptions);\nfor(const litOption in litOptionProperties){\n\t\t_defineOption(litOptionProperties[litOption]);\n}\nAssetRegistry.prototype.getAssetById = function(id) {\n\t\treturn this.get(id);\n};\nObject.defineProperty(XrInputSource.prototype, 'ray', {\n\t\tget: function() {\n\t\t\t\treturn this._rayLocal;\n\t\t}\n});\nObject.defineProperty(XrInputSource.prototype, 'position', {\n\t\tget: function() {\n\t\t\t\treturn this._localPosition;\n\t\t}\n});\nObject.defineProperty(XrInputSource.prototype, 'rotation', {\n\t\tget: function() {\n\t\t\t\treturn this._localRotation;\n\t\t}\n});\nconst EVENT_KEYDOWN = 'keydown';\nconst EVENT_KEYUP = 'keyup';\nconst EVENT_MOUSEDOWN = 'mousedown';\nconst EVENT_MOUSEMOVE = 'mousemove';\nconst EVENT_MOUSEUP = 'mouseup';\nconst EVENT_MOUSEWHEEL = 'mousewheel';\nconst EVENT_TOUCHSTART = 'touchstart';\nconst EVENT_TOUCHEND = 'touchend';\nconst EVENT_TOUCHMOVE = 'touchmove';\nconst EVENT_TOUCHCANCEL = 'touchcancel';\nconst EVENT_GAMEPADCONNECTED = 'gamepadconnected';\nconst EVENT_GAMEPADDISCONNECTED = 'gamepaddisconnected';\nconst EVENT_SELECT = 'select';\nconst EVENT_SELECTSTART = 'selectstart';\nconst EVENT_SELECTEND = 'selectend';\nObject.defineProperty(ElementInput.prototype, 'wheel', {\n\t\tget: function() {\n\t\t\t\treturn this.wheelDelta * -2;\n\t\t}\n});\nObject.defineProperty(MouseEvent.prototype, 'wheel', {\n\t\tget: function() {\n\t\t\t\treturn this.wheelDelta * -2;\n\t\t}\n});\nconst RIGIDBODY_TYPE_STATIC = BODYTYPE_STATIC;\nconst RIGIDBODY_TYPE_DYNAMIC = BODYTYPE_DYNAMIC;\nconst RIGIDBODY_TYPE_KINEMATIC = BODYTYPE_KINEMATIC;\nconst RIGIDBODY_CF_STATIC_OBJECT = BODYFLAG_STATIC_OBJECT;\nconst RIGIDBODY_CF_KINEMATIC_OBJECT = BODYFLAG_KINEMATIC_OBJECT;\nconst RIGIDBODY_CF_NORESPONSE_OBJECT = BODYFLAG_NORESPONSE_OBJECT;\nconst RIGIDBODY_ACTIVE_TAG = BODYSTATE_ACTIVE_TAG;\nconst RIGIDBODY_ISLAND_SLEEPING = BODYSTATE_ISLAND_SLEEPING;\nconst RIGIDBODY_WANTS_DEACTIVATION = BODYSTATE_WANTS_DEACTIVATION;\nconst RIGIDBODY_DISABLE_DEACTIVATION = BODYSTATE_DISABLE_DEACTIVATION;\nconst RIGIDBODY_DISABLE_SIMULATION = BODYSTATE_DISABLE_SIMULATION;\nAppBase.prototype.isFullscreen = function() {\n\t\treturn !!document.fullscreenElement;\n};\nAppBase.prototype.enableFullscreen = function(element, success, error) {\n\t\telement = element || this.graphicsDevice.canvas;\n\t\tconst s = function() {\n\t\t\t\tsuccess();\n\t\t\t\tdocument.removeEventListener('fullscreenchange', s);\n\t\t};\n\t\tconst e = function() {\n\t\t\t\terror();\n\t\t\t\tdocument.removeEventListener('fullscreenerror', e);\n\t\t};\n\t\tif (success) {\n\t\t\t\tdocument.addEventListener('fullscreenchange', s, false);\n\t\t}\n\t\tif (error) {\n\t\t\t\tdocument.addEventListener('fullscreenerror', e, false);\n\t\t}\n\t\tif (element.requestFullscreen) {\n\t\t\t\telement.requestFullscreen(Element.ALLOW_KEYBOARD_INPUT);\n\t\t} else {\n\t\t\t\terror();\n\t\t}\n};\nAppBase.prototype.disableFullscreen = function(success) {\n\t\tconst s = function() {\n\t\t\t\tsuccess();\n\t\t\t\tdocument.removeEventListener('fullscreenchange', s);\n\t\t};\n\t\tif (success) {\n\t\t\t\tdocument.addEventListener('fullscreenchange', s, false);\n\t\t}\n\t\tdocument.exitFullscreen();\n};\nAppBase.prototype.getSceneUrl = function(name) {\n\t\tconst entry = this.scenes.find(name);\n\t\tif (entry) {\n\t\t\t\treturn entry.url;\n\t\t}\n\t\treturn null;\n};\nAppBase.prototype.loadScene = function(url, callback) {\n\t\tthis.scenes.loadScene(url, callback);\n};\nAppBase.prototype.loadSceneHierarchy = function(url, callback) {\n\t\tthis.scenes.loadSceneHierarchy(url, callback);\n};\nAppBase.prototype.loadSceneSettings = function(url, callback) {\n\t\tthis.scenes.loadSceneSettings(url, callback);\n};\nModelComponent.prototype.setVisible = function(visible) {\n\t\tthis.enabled = visible;\n};\nObject.defineProperty(RigidBodyComponent.prototype, 'bodyType', {\n\t\tget: function() {\n\t\t\t\treturn this.type;\n\t\t},\n\t\tset: function(type) {\n\t\t\t\tthis.type = type;\n\t\t}\n});\nRigidBodyComponent.prototype.syncBodyToEntity = function() {\n\t\tthis._updateDynamic();\n};\nRigidBodyComponentSystem.prototype.setGravity = function() {\n\t\tif (arguments.length === 1) {\n\t\t\t\tthis.gravity.copy(arguments[0]);\n\t\t} else {\n\t\t\t\tthis.gravity.set(arguments[0], arguments[1], arguments[2]);\n\t\t}\n};\n\nclass CpuTimer {\n\t\tconstructor(app){\n\t\t\t\tthis._frameIndex = 0;\n\t\t\t\tthis._frameTimings = [];\n\t\t\t\tthis._timings = [];\n\t\t\t\tthis._prevTimings = [];\n\t\t\t\tthis.unitsName = 'ms';\n\t\t\t\tthis.decimalPlaces = 1;\n\t\t\t\tthis.enabled = true;\n\t\t\t\tapp.on('frameupdate', this.begin.bind(this, 'update'));\n\t\t\t\tapp.on('framerender', this.mark.bind(this, 'render'));\n\t\t\t\tapp.on('frameend', this.mark.bind(this, 'other'));\n\t\t}\n\t\tbegin(name) {\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._frameIndex < this._frameTimings.length) {\n\t\t\t\t\t\tthis._frameTimings.splice(this._frameIndex);\n\t\t\t\t}\n\t\t\t\tconst tmp = this._prevTimings;\n\t\t\t\tthis._prevTimings = this._timings;\n\t\t\t\tthis._timings = this._frameTimings;\n\t\t\t\tthis._frameTimings = tmp;\n\t\t\t\tthis._frameIndex = 0;\n\t\t\t\tthis.mark(name);\n\t\t}\n\t\tmark(name) {\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst timestamp = now();\n\t\t\t\tif (this._frameIndex > 0) {\n\t\t\t\t\t\tconst prev = this._frameTimings[this._frameIndex - 1];\n\t\t\t\t\t\tprev[1] = timestamp - prev[1];\n\t\t\t\t} else if (this._timings.length > 0) {\n\t\t\t\t\t\tconst prev = this._timings[this._timings.length - 1];\n\t\t\t\t\t\tprev[1] = timestamp - prev[1];\n\t\t\t\t}\n\t\t\t\tif (this._frameIndex >= this._frameTimings.length) {\n\t\t\t\t\t\tthis._frameTimings.push([\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\ttimestamp\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tconst timing = this._frameTimings[this._frameIndex];\n\t\t\t\t\t\ttiming[0] = name;\n\t\t\t\t\t\ttiming[1] = timestamp;\n\t\t\t\t}\n\t\t\t\tthis._frameIndex++;\n\t\t}\n\t\tget timings() {\n\t\t\t\treturn this._timings.slice(0, -1).map((v)=>v[1]);\n\t\t}\n}\n\nclass GpuTimer {\n\t\tconstructor(device){\n\t\t\t\tthis.device = device;\n\t\t\t\tdevice.gpuProfiler.enabled = true;\n\t\t\t\tthis.enabled = true;\n\t\t\t\tthis.unitsName = 'ms';\n\t\t\t\tthis.decimalPlaces = 1;\n\t\t\t\tthis._timings = [];\n\t\t}\n\t\tget timings() {\n\t\t\t\tthis._timings[0] = this.device.gpuProfiler._frameTime;\n\t\t\t\treturn this._timings;\n\t\t}\n}\n\nclass StatsTimer {\n\t\tconstructor(app, statNames, decimalPlaces, unitsName, multiplier){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.values = [];\n\t\t\t\tthis.statNames = statNames;\n\t\t\t\tif (this.statNames.length > 3) {\n\t\t\t\t\t\tthis.statNames.length = 3;\n\t\t\t\t}\n\t\t\t\tthis.unitsName = unitsName;\n\t\t\t\tthis.decimalPlaces = decimalPlaces;\n\t\t\t\tthis.multiplier = multiplier || 1;\n\t\t\t\tconst resolve = (path, obj)=>{\n\t\t\t\t\t\treturn path.split('.').reduce((prev, curr)=>{\n\t\t\t\t\t\t\t\treturn prev ? prev[curr] : null;\n\t\t\t\t\t\t}, obj || this);\n\t\t\t\t};\n\t\t\t\tapp.on('frameupdate', (ms)=>{\n\t\t\t\t\t\tfor(let i = 0; i < this.statNames.length; i++){\n\t\t\t\t\t\t\t\tthis.values[i] = resolve(this.statNames[i], this.app.stats) * this.multiplier;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget timings() {\n\t\t\t\treturn this.values;\n\t\t}\n}\n\nclass Graph {\n\t\tconstructor(name, app, watermark, textRefreshRate, timer){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.name = name;\n\t\t\t\tthis.device = app.graphicsDevice;\n\t\t\t\tthis.timer = timer;\n\t\t\t\tthis.watermark = watermark;\n\t\t\t\tthis.enabled = false;\n\t\t\t\tthis.textRefreshRate = textRefreshRate;\n\t\t\t\tthis.avgTotal = 0;\n\t\t\t\tthis.avgTimer = 0;\n\t\t\t\tthis.avgCount = 0;\n\t\t\t\tthis.timingText = '';\n\t\t\t\tthis.texture = null;\n\t\t\t\tthis.yOffset = 0;\n\t\t\t\tthis.cursor = 0;\n\t\t\t\tthis.sample = new Uint8ClampedArray(4);\n\t\t\t\tthis.sample.set([\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t255\n\t\t\t\t]);\n\t\t\t\tthis.counter = 0;\n\t\t\t\tthis.app.on('frameupdate', this.update, this);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.app.off('frameupdate', this.update, this);\n\t\t}\n\t\tloseContext() {\n\t\t\t\tif (this.timer && typeof this.timer.loseContext === 'function') {\n\t\t\t\t\t\tthis.timer.loseContext();\n\t\t\t\t}\n\t\t}\n\t\tupdate(ms) {\n\t\t\t\tconst timings = this.timer.timings;\n\t\t\t\tconst total = timings.reduce((a, v)=>a + v, 0);\n\t\t\t\tthis.avgTotal += total;\n\t\t\t\tthis.avgTimer += ms;\n\t\t\t\tthis.avgCount++;\n\t\t\t\tif (this.avgTimer > this.textRefreshRate) {\n\t\t\t\t\t\tthis.timingText = (this.avgTotal / this.avgCount).toFixed(this.timer.decimalPlaces);\n\t\t\t\t\t\tthis.avgTimer = 0;\n\t\t\t\t\t\tthis.avgTotal = 0;\n\t\t\t\t\t\tthis.avgCount = 0;\n\t\t\t\t}\n\t\t\t\tif (this.enabled) {\n\t\t\t\t\t\tlet value = 0;\n\t\t\t\t\t\tconst range = 1.5 * this.watermark;\n\t\t\t\t\t\tfor(let i = 0; i < timings.length; ++i){\n\t\t\t\t\t\t\t\tvalue += Math.floor(timings[i] / range * 255);\n\t\t\t\t\t\t\t\tthis.sample[i] = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.sample[3] = this.watermark / range * 255;\n\t\t\t\t\t\tconst data = this.texture.lock();\n\t\t\t\t\t\tdata.set(this.sample, (this.cursor + this.yOffset * this.texture.width) * 4);\n\t\t\t\t\t\tthis.texture.unlock();\n\t\t\t\t\t\tthis.cursor++;\n\t\t\t\t\t\tif (this.cursor === this.texture.width) {\n\t\t\t\t\t\t\t\tthis.cursor = 0;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\trender(render2d, x, y, w, h) {\n\t\t\t\trender2d.quad(x + w, y, -w, h, this.enabled ? this.cursor : 0, this.enabled ? 0.5 + this.yOffset : this.texture.height - 1, -w, 0, this.texture, 0);\n\t\t}\n}\n\nclass WordAtlas {\n\t\tconstructor(device, words){\n\t\t\t\tconst initContext = (context)=>{\n\t\t\t\t\t\tcontext.font = '10px \"Lucida Console\", Monaco, monospace';\n\t\t\t\t\t\tcontext.textAlign = 'left';\n\t\t\t\t\t\tcontext.textBaseline = 'alphabetic';\n\t\t\t\t};\n\t\t\t\tconst isNumber = (word)=>{\n\t\t\t\t\t\treturn word === '.' || word.length === 1 && word.charCodeAt(0) >= 48 && word.charCodeAt(0) <= 57;\n\t\t\t\t};\n\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\tconst context = canvas.getContext('2d', {\n\t\t\t\t\t\talpha: true\n\t\t\t\t});\n\t\t\t\tinitContext(context);\n\t\t\t\tconst placements = new Map();\n\t\t\t\tconst padding = 5;\n\t\t\t\tconst width = 512;\n\t\t\t\tlet x = padding;\n\t\t\t\tlet y = padding;\n\t\t\t\twords.forEach((word)=>{\n\t\t\t\t\t\tconst measurement = context.measureText(word);\n\t\t\t\t\t\tconst l = Math.ceil(-measurement.actualBoundingBoxLeft);\n\t\t\t\t\t\tconst r = Math.ceil(measurement.actualBoundingBoxRight);\n\t\t\t\t\t\tconst a = Math.ceil(measurement.actualBoundingBoxAscent);\n\t\t\t\t\t\tconst d = Math.ceil(measurement.actualBoundingBoxDescent);\n\t\t\t\t\t\tconst w = l + r;\n\t\t\t\t\t\tconst h = a + d;\n\t\t\t\t\t\tif (x + w + padding >= width) {\n\t\t\t\t\t\t\t\tx = padding;\n\t\t\t\t\t\t\t\ty += 16;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tplacements.set(word, {\n\t\t\t\t\t\t\t\tl,\n\t\t\t\t\t\t\t\tr,\n\t\t\t\t\t\t\t\ta,\n\t\t\t\t\t\t\t\td,\n\t\t\t\t\t\t\t\tw,\n\t\t\t\t\t\t\t\th,\n\t\t\t\t\t\t\t\tx: x,\n\t\t\t\t\t\t\t\ty: y\n\t\t\t\t\t\t});\n\t\t\t\t\t\tx += w + padding;\n\t\t\t\t});\n\t\t\t\tcanvas.width = 512;\n\t\t\t\tcanvas.height = math.nextPowerOfTwo(y + 16 + padding);\n\t\t\t\tinitContext(context);\n\t\t\t\tcontext.fillStyle = 'rgb(0, 0, 0)';\n\t\t\t\tcontext.fillRect(0, 0, canvas.width, canvas.height);\n\t\t\t\tplacements.forEach((m, word)=>{\n\t\t\t\t\t\tcontext.fillStyle = isNumber(word) ? 'rgb(255, 255, 255)' : 'rgb(170, 170, 170)';\n\t\t\t\t\t\tcontext.fillText(word, m.x - m.l, m.y + m.a);\n\t\t\t\t});\n\t\t\t\tthis.placements = placements;\n\t\t\t\tconst data = context.getImageData(0, 0, canvas.width, canvas.height).data;\n\t\t\t\tfor(let i = 0; i < data.length; i += 4){\n\t\t\t\t\t\tdata[i + 3] = data[i + 0];\n\t\t\t\t\t\tdata[i + 0] = 255;\n\t\t\t\t\t\tdata[i + 1] = 255;\n\t\t\t\t\t\tdata[i + 2] = 255;\n\t\t\t\t}\n\t\t\t\tthis.texture = new Texture(device, {\n\t\t\t\t\t\tname: 'mini-stats-word-atlas',\n\t\t\t\t\t\twidth: canvas.width,\n\t\t\t\t\t\theight: canvas.height,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\tlevels: [\n\t\t\t\t\t\t\t\tdata\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.texture.destroy();\n\t\t\t\tthis.texture = null;\n\t\t}\n\t\trender(render2d, word, x, y) {\n\t\t\t\tconst p = this.placements.get(word);\n\t\t\t\tif (p) {\n\t\t\t\t\t\tconst padding = 1;\n\t\t\t\t\t\trender2d.quad(x + p.l - padding, y - p.d + padding, p.w + padding * 2, p.h + padding * 2, p.x - padding, this.texture.height - p.y - p.h - padding, undefined, undefined, this.texture, 1);\n\t\t\t\t\t\treturn p.w;\n\t\t\t\t}\n\t\t\t\treturn 0;\n\t\t}\n}\n\nconst vertexShaderGLSL = `\n\tattribute vec3 vertex_position;\n\tattribute vec4 vertex_texCoord0;\n\tvarying vec4 uv0;\n\tvarying float wordFlag;\n\tvoid main(void) {\n\t\tgl_Position = vec4(vertex_position.xy * 2.0 - 1.0, 0.5, 1.0);\n\t\tuv0 = vertex_texCoord0;\n\t\twordFlag = vertex_position.z;\n\t}\n`;\nconst vertexShaderWGSL = `\n\tattribute vertex_position: vec3f;\n\tattribute vertex_texCoord0: vec4f;\n\tvarying uv0: vec4f;\n\tvarying wordFlag: f32;\n\t@vertex fn vertexMain(input : VertexInput) -> VertexOutput {\n\t\tvar output : VertexOutput;\n\t\toutput.position = vec4(input.vertex_position.xy * 2.0 - 1.0, 0.5, 1.0);\n\t\toutput.uv0 = input.vertex_texCoord0;\n\t\toutput.wordFlag = input.vertex_position.z;\n\t\treturn output;\n\t}\n`;\nconst fragmentShaderGLSL = `\n\tvarying vec4 uv0;\n\tvarying float wordFlag;\n\tuniform vec4 clr;\n\tuniform sampler2D graphTex;\n\tuniform sampler2D wordsTex;\n\tvoid main (void) {\n\t\tvec4 graphSample = texture2D(graphTex, uv0.xy);\n\t\tvec4 graph;\n\t\tif (uv0.w < graphSample.r)\n\t\t\tgraph = vec4(0.7, 0.2, 0.2, 1.0);\n\t\telse if (uv0.w < graphSample.g)\n\t\t\tgraph = vec4(0.2, 0.7, 0.2, 1.0);\n\t\telse if (uv0.w < graphSample.b)\n\t\t\tgraph = vec4(0.2, 0.2, 0.7, 1.0);\n\t\telse\n\t\t\tgraph = vec4(0.0, 0.0, 0.0, 1.0 - 0.25 * sin(uv0.w * 3.14159));\n\t\tvec4 words = texture2D(wordsTex, vec2(uv0.x, 1.0 - uv0.y));\n\t\tgl_FragColor = mix(graph, words, wordFlag) * clr;\n\t}\n`;\nconst fragmentShaderWGSL = `\n\tvarying uv0: vec4f;\n\tvarying wordFlag: f32;\n\tuniform clr: vec4f;\n\tvar graphTex : texture_2d<f32>;\n\tvar graphTex_sampler : sampler;\n\tvar wordsTex : texture_2d<f32>;\n\tvar wordsTex_sampler : sampler;\n\t@fragment fn fragmentMain(input : FragmentInput) -> FragmentOutput {\n\t\tvar uv0: vec4f = input.uv0;\n\t\tvar graphSample: vec4f = textureSample(graphTex, graphTex_sampler, uv0.xy);\n\t\tvar graph: vec4f;\n\t\tif (uv0.w < graphSample.r) {\n\t\t\tgraph = vec4f(0.7, 0.2, 0.2, 1.0);\n\t\t} else if (uv0.w < graphSample.g) {\n\t\t\tgraph = vec4f(0.2, 0.7, 0.2, 1.0);\n\t\t} else if (uv0.w < graphSample.b) {\n\t\t\tgraph = vec4f(0.2, 0.2, 0.7, 1.0);\n\t\t} else {\n\t\t\tgraph = vec4f(0.0, 0.0, 0.0, 1.0 - 0.25 * sin(uv0.w * 3.14159));\n\t\t}\n\t\tvar words: vec4f = textureSample(wordsTex, wordsTex_sampler, vec2f(uv0.x, 1.0 - uv0.y));\n\t\tvar output: FragmentOutput;\n\t\toutput.color = mix(graph, words, input.wordFlag) * uniform.clr;\n\t\treturn output;\n\t}\n`;\nclass Render2d {\n\t\tconstructor(device, maxQuads = 512){\n\t\t\t\tconst format = new VertexFormat(device, [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tcomponents: 3,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tsemantic: SEMANTIC_TEXCOORD0,\n\t\t\t\t\t\t\t\tcomponents: 4,\n\t\t\t\t\t\t\t\ttype: TYPE_FLOAT32\n\t\t\t\t\t\t}\n\t\t\t\t]);\n\t\t\t\tconst indices = new Uint16Array(maxQuads * 6);\n\t\t\t\tfor(let i = 0; i < maxQuads; ++i){\n\t\t\t\t\t\tindices[i * 6 + 0] = i * 4;\n\t\t\t\t\t\tindices[i * 6 + 1] = i * 4 + 1;\n\t\t\t\t\t\tindices[i * 6 + 2] = i * 4 + 2;\n\t\t\t\t\t\tindices[i * 6 + 3] = i * 4;\n\t\t\t\t\t\tindices[i * 6 + 4] = i * 4 + 2;\n\t\t\t\t\t\tindices[i * 6 + 5] = i * 4 + 3;\n\t\t\t\t}\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.buffer = new VertexBuffer(device, format, maxQuads * 4, {\n\t\t\t\t\t\tusage: BUFFER_STREAM\n\t\t\t\t});\n\t\t\t\tthis.data = new Float32Array(this.buffer.numBytes / 4);\n\t\t\t\tthis.indexBuffer = new IndexBuffer(device, INDEXFORMAT_UINT16, maxQuads * 6, BUFFER_STATIC, indices);\n\t\t\t\tthis.prim = {\n\t\t\t\t\t\ttype: PRIMITIVE_TRIANGLES,\n\t\t\t\t\t\tindexed: true,\n\t\t\t\t\t\tbase: 0,\n\t\t\t\t\t\tbaseVertex: 0,\n\t\t\t\t\t\tcount: 0\n\t\t\t\t};\n\t\t\t\tthis.quads = 0;\n\t\t\t\tthis.mesh = new Mesh(device);\n\t\t\t\tthis.mesh.vertexBuffer = this.buffer;\n\t\t\t\tthis.mesh.indexBuffer[0] = this.indexBuffer;\n\t\t\t\tthis.mesh.primitive = [\n\t\t\t\t\t\tthis.prim\n\t\t\t\t];\n\t\t\t\tconst material = new ShaderMaterial({\n\t\t\t\t\t\tuniqueName: 'MiniStats',\n\t\t\t\t\t\tvertexGLSL: vertexShaderGLSL,\n\t\t\t\t\t\tfragmentGLSL: fragmentShaderGLSL,\n\t\t\t\t\t\tvertexWGSL: vertexShaderWGSL,\n\t\t\t\t\t\tfragmentWGSL: fragmentShaderWGSL,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION,\n\t\t\t\t\t\t\t\tvertex_texCoord0: SEMANTIC_TEXCOORD0\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.material = material;\n\t\t\t\tmaterial.cull = CULLFACE_NONE;\n\t\t\t\tmaterial.depthState = DepthState.NODEPTH;\n\t\t\t\tmaterial.blendState = new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDEQUATION_ADD, BLENDMODE_ONE, BLENDMODE_ONE);\n\t\t\t\tmaterial.update();\n\t\t\t\tthis.meshInstance = new MeshInstance(this.mesh, material, new GraphNode('MiniStatsMesh'));\n\t\t\t\tthis.uniforms = {\n\t\t\t\t\t\tclr: new Float32Array(4)\n\t\t\t\t};\n\t\t\t\tthis.targetSize = {\n\t\t\t\t\t\twidth: device.width,\n\t\t\t\t\t\theight: device.height\n\t\t\t\t};\n\t\t}\n\t\tquad(x, y, w, h, u, v, uw, uh, texture, wordFlag = 0) {\n\t\t\t\tconst rw = this.targetSize.width;\n\t\t\t\tconst rh = this.targetSize.height;\n\t\t\t\tconst x0 = x / rw;\n\t\t\t\tconst y0 = y / rh;\n\t\t\t\tconst x1 = (x + w) / rw;\n\t\t\t\tconst y1 = (y + h) / rh;\n\t\t\t\tconst tw = texture.width;\n\t\t\t\tconst th = texture.height;\n\t\t\t\tconst u0 = u / tw;\n\t\t\t\tconst v0 = v / th;\n\t\t\t\tconst u1 = (u + (uw ?? w)) / tw;\n\t\t\t\tconst v1 = (v + (uh ?? h)) / th;\n\t\t\t\tthis.data.set([\n\t\t\t\t\t\tx0,\n\t\t\t\t\t\ty0,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu0,\n\t\t\t\t\t\tv0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tx1,\n\t\t\t\t\t\ty0,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu1,\n\t\t\t\t\t\tv0,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\tx1,\n\t\t\t\t\t\ty1,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu1,\n\t\t\t\t\t\tv1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\tx0,\n\t\t\t\t\t\ty1,\n\t\t\t\t\t\twordFlag,\n\t\t\t\t\t\tu0,\n\t\t\t\t\t\tv1,\n\t\t\t\t\t\t0,\n\t\t\t\t\t\t1\n\t\t\t\t], 4 * 7 * this.quads);\n\t\t\t\tthis.quads++;\n\t\t\t\tthis.prim.count += 6;\n\t\t}\n\t\tstartFrame() {\n\t\t\t\tthis.quads = 0;\n\t\t\t\tthis.prim.count = 0;\n\t\t\t\tthis.targetSize.width = this.device.canvas.scrollWidth;\n\t\t\t\tthis.targetSize.height = this.device.canvas.scrollHeight;\n\t\t}\n\t\trender(app, layer, graphTexture, wordsTexture, clr, height) {\n\t\t\t\tthis.buffer.setData(this.data.buffer);\n\t\t\t\tthis.uniforms.clr.set(clr, 0);\n\t\t\t\tthis.material.setParameter('clr', this.uniforms.clr);\n\t\t\t\tthis.material.setParameter('graphTex', graphTexture);\n\t\t\t\tthis.material.setParameter('wordsTex', wordsTexture);\n\t\t\t\tapp.drawMeshInstance(this.meshInstance, layer);\n\t\t}\n}\n\nclass MiniStats {\n\t\tconstructor(app, options){\n\t\t\t\tconst device = app.graphicsDevice;\n\t\t\t\toptions = options || MiniStats.getDefaultOptions();\n\t\t\t\tthis.initGraphs(app, device, options);\n\t\t\t\tconst words = new Set([\n\t\t\t\t\t\t'',\n\t\t\t\t\t\t'ms',\n\t\t\t\t\t\t'0',\n\t\t\t\t\t\t'1',\n\t\t\t\t\t\t'2',\n\t\t\t\t\t\t'3',\n\t\t\t\t\t\t'4',\n\t\t\t\t\t\t'5',\n\t\t\t\t\t\t'6',\n\t\t\t\t\t\t'7',\n\t\t\t\t\t\t'8',\n\t\t\t\t\t\t'9',\n\t\t\t\t\t\t'.',\n\t\t\t\t\t\t'-'\n\t\t\t\t].concat(this.graphs.map((graph)=>graph.name)).concat(options.stats ? options.stats.map((stat)=>stat.unitsName) : []).filter((item)=>!!item));\n\t\t\t\tthis.wordAtlas = new WordAtlas(device, words);\n\t\t\t\tthis.sizes = options.sizes;\n\t\t\t\tthis._activeSizeIndex = options.startSizeIndex;\n\t\t\t\tconst div = document.createElement('div');\n\t\t\t\tdiv.setAttribute('id', 'mini-stats');\n\t\t\t\tdiv.style.cssText = 'position:fixed;bottom:0;left:0;background:transparent;';\n\t\t\t\tdocument.body.appendChild(div);\n\t\t\t\tdiv.addEventListener('mouseenter', (event)=>{\n\t\t\t\t\t\tthis.opacity = 1.0;\n\t\t\t\t});\n\t\t\t\tdiv.addEventListener('mouseleave', (event)=>{\n\t\t\t\t\t\tthis.opacity = 0.7;\n\t\t\t\t});\n\t\t\t\tdiv.addEventListener('click', (event)=>{\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\t\t\tthis.activeSizeIndex = (this.activeSizeIndex + 1) % this.sizes.length;\n\t\t\t\t\t\t\t\tthis.resize(this.sizes[this.activeSizeIndex].width, this.sizes[this.activeSizeIndex].height, this.sizes[this.activeSizeIndex].graphs);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tdevice.on('resizecanvas', this.updateDiv, this);\n\t\t\t\tdevice.on('losecontext', this.loseContext, this);\n\t\t\t\tapp.on('postrender', this.postRender, this);\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.drawLayer = app.scene.layers.getLayerById(LAYERID_UI);\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.render2d = new Render2d(device);\n\t\t\t\tthis.div = div;\n\t\t\t\tthis.width = 0;\n\t\t\t\tthis.height = 0;\n\t\t\t\tthis.gspacing = 2;\n\t\t\t\tthis.clr = [\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t1,\n\t\t\t\t\t\t0.5\n\t\t\t\t];\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis.activeSizeIndex = this._activeSizeIndex;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.device.off('resizecanvas', this.updateDiv, this);\n\t\t\t\tthis.device.off('losecontext', this.loseContext, this);\n\t\t\t\tthis.app.off('postrender', this.postRender, this);\n\t\t\t\tthis.graphs.forEach((graph)=>graph.destroy());\n\t\t\t\tthis.wordAtlas.destroy();\n\t\t\t\tthis.texture.destroy();\n\t\t}\n\t\tstatic getDefaultOptions() {\n\t\t\t\treturn {\n\t\t\t\t\t\tsizes: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: 100,\n\t\t\t\t\t\t\t\t\t\theight: 16,\n\t\t\t\t\t\t\t\t\t\tspacing: 0,\n\t\t\t\t\t\t\t\t\t\tgraphs: false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: 128,\n\t\t\t\t\t\t\t\t\t\theight: 32,\n\t\t\t\t\t\t\t\t\t\tspacing: 2,\n\t\t\t\t\t\t\t\t\t\tgraphs: true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\twidth: 256,\n\t\t\t\t\t\t\t\t\t\theight: 64,\n\t\t\t\t\t\t\t\t\t\tspacing: 2,\n\t\t\t\t\t\t\t\t\t\tgraphs: true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t],\n\t\t\t\t\t\tstartSizeIndex: 0,\n\t\t\t\t\t\ttextRefreshRate: 500,\n\t\t\t\t\t\tcpu: {\n\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\twatermark: 33\n\t\t\t\t\t\t},\n\t\t\t\t\t\tgpu: {\n\t\t\t\t\t\t\t\tenabled: true,\n\t\t\t\t\t\t\t\twatermark: 33\n\t\t\t\t\t\t},\n\t\t\t\t\t\tstats: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'Frame',\n\t\t\t\t\t\t\t\t\t\tstats: [\n\t\t\t\t\t\t\t\t\t\t\t\t'frame.ms'\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\tdecimalPlaces: 1,\n\t\t\t\t\t\t\t\t\t\tunitsName: 'ms',\n\t\t\t\t\t\t\t\t\t\twatermark: 33\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'DrawCalls',\n\t\t\t\t\t\t\t\t\t\tstats: [\n\t\t\t\t\t\t\t\t\t\t\t\t'drawCalls.total'\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\twatermark: 1000\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t};\n\t\t}\n\t\tset activeSizeIndex(value) {\n\t\t\t\tthis._activeSizeIndex = value;\n\t\t\t\tthis.gspacing = this.sizes[value].spacing;\n\t\t\t\tthis.resize(this.sizes[value].width, this.sizes[value].height, this.sizes[value].graphs);\n\t\t}\n\t\tget activeSizeIndex() {\n\t\t\t\treturn this._activeSizeIndex;\n\t\t}\n\t\tset opacity(value) {\n\t\t\t\tthis.clr[3] = value;\n\t\t}\n\t\tget opacity() {\n\t\t\t\treturn this.clr[3];\n\t\t}\n\t\tget overallHeight() {\n\t\t\t\tconst graphs = this.graphs;\n\t\t\t\tconst spacing = this.gspacing;\n\t\t\t\treturn this.height * graphs.length + spacing * (graphs.length - 1);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tif (value !== this._enabled) {\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t\t\tfor(let i = 0; i < this.graphs.length; ++i){\n\t\t\t\t\t\t\t\tthis.graphs[i].enabled = value;\n\t\t\t\t\t\t\t\tthis.graphs[i].timer.enabled = value;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tinitGraphs(app, device, options) {\n\t\t\t\tthis.graphs = [];\n\t\t\t\tif (options.cpu.enabled) {\n\t\t\t\t\t\tconst timer = new CpuTimer(app);\n\t\t\t\t\t\tconst graph = new Graph('CPU', app, options.cpu.watermark, options.textRefreshRate, timer);\n\t\t\t\t\t\tthis.graphs.push(graph);\n\t\t\t\t}\n\t\t\t\tif (options.gpu.enabled) {\n\t\t\t\t\t\tconst timer = new GpuTimer(device);\n\t\t\t\t\t\tconst graph = new Graph('GPU', app, options.gpu.watermark, options.textRefreshRate, timer);\n\t\t\t\t\t\tthis.graphs.push(graph);\n\t\t\t\t}\n\t\t\t\tif (options.stats) {\n\t\t\t\t\t\toptions.stats.forEach((entry)=>{\n\t\t\t\t\t\t\t\tconst timer = new StatsTimer(app, entry.stats, entry.decimalPlaces, entry.unitsName, entry.multiplier);\n\t\t\t\t\t\t\t\tconst graph = new Graph(entry.name, app, entry.watermark, options.textRefreshRate, timer);\n\t\t\t\t\t\t\t\tthis.graphs.push(graph);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tconst maxWidth = options.sizes.reduce((max, v)=>{\n\t\t\t\t\t\treturn v.width > max ? v.width : max;\n\t\t\t\t}, 0);\n\t\t\t\tthis.texture = new Texture(device, {\n\t\t\t\t\t\tname: 'mini-stats-graph-texture',\n\t\t\t\t\t\twidth: math.nextPowerOfTwo(maxWidth),\n\t\t\t\t\t\theight: math.nextPowerOfTwo(this.graphs.length),\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_REPEAT,\n\t\t\t\t\t\taddressV: ADDRESS_REPEAT\n\t\t\t\t});\n\t\t\t\tthis.graphs.forEach((graph, i)=>{\n\t\t\t\t\t\tgraph.texture = this.texture;\n\t\t\t\t\t\tgraph.yOffset = i;\n\t\t\t\t});\n\t\t}\n\t\trender() {\n\t\t\t\tconst graphs = this.graphs;\n\t\t\t\tconst wordAtlas = this.wordAtlas;\n\t\t\t\tconst render2d = this.render2d;\n\t\t\t\tconst width = this.width;\n\t\t\t\tconst height = this.height;\n\t\t\t\tconst gspacing = this.gspacing;\n\t\t\t\trender2d.startFrame();\n\t\t\t\tfor(let i = 0; i < graphs.length; ++i){\n\t\t\t\t\t\tconst graph = graphs[i];\n\t\t\t\t\t\tlet y = i * (height + gspacing);\n\t\t\t\t\t\tgraph.render(render2d, 0, y, width, height);\n\t\t\t\t\t\tlet x = 1;\n\t\t\t\t\t\ty += height - 13;\n\t\t\t\t\t\tx += wordAtlas.render(render2d, graph.name, x, y) + 10;\n\t\t\t\t\t\tconst timingText = graph.timingText;\n\t\t\t\t\t\tfor(let j = 0; j < timingText.length; ++j){\n\t\t\t\t\t\t\t\tx += wordAtlas.render(render2d, timingText[j], x, y);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (graph.timer.unitsName) {\n\t\t\t\t\t\t\t\tx += 3;\n\t\t\t\t\t\t\t\twordAtlas.render(render2d, graph.timer.unitsName, x, y);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\trender2d.render(this.app, this.drawLayer, this.texture, this.wordAtlas.texture, this.clr, height);\n\t\t}\n\t\tresize(width, height, showGraphs) {\n\t\t\t\tconst graphs = this.graphs;\n\t\t\t\tfor(let i = 0; i < graphs.length; ++i){\n\t\t\t\t\t\tgraphs[i].enabled = showGraphs;\n\t\t\t\t}\n\t\t\t\tthis.width = width;\n\t\t\t\tthis.height = height;\n\t\t\t\tthis.updateDiv();\n\t\t}\n\t\tupdateDiv() {\n\t\t\t\tconst rect = this.device.canvas.getBoundingClientRect();\n\t\t\t\tthis.div.style.left = `${rect.left}px`;\n\t\t\t\tthis.div.style.bottom = `${window.innerHeight - rect.bottom}px`;\n\t\t\t\tthis.div.style.width = `${this.width}px`;\n\t\t\t\tthis.div.style.height = `${this.overallHeight}px`;\n\t\t}\n\t\tloseContext() {\n\t\t\t\tthis.graphs.forEach((graph)=>graph.loseContext());\n\t\t}\n\t\tpostRender() {\n\t\t\t\tif (this._enabled) {\n\t\t\t\t\t\tthis.render();\n\t\t\t\t}\n\t\t}\n}\n\nconst shaderOutlineExtendPS = `\n\tvarying vec2 vUv0;\n\tuniform vec2 uOffset;\n\tuniform float uSrcMultiplier;\n\tuniform sampler2D source;\n\tvoid main(void)\n\t{\n\t\tvec4 pixel;\n\t\tvec4 texel = texture2D(source, vUv0);\n\t\tvec4 firstTexel = texel;\n\t\tfloat diff = texel.a * uSrcMultiplier;\n\t\tpixel = texture2D(source, vUv0 + uOffset * -2.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = texture2D(source, vUv0 + uOffset * -1.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = texture2D(source, vUv0 + uOffset * 1.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t\tpixel = texture2D(source, vUv0 + uOffset * 2.0);\n\t\ttexel = max(texel, pixel);\n\t\tdiff = max(diff, length(firstTexel.rgb - pixel.rgb));\n\t   gl_FragColor = vec4(texel.rgb, min(diff, 1.0));\n\t}\n`;\nconst _tempFloatArray = new Float32Array(2);\nconst _tempColor = new Color();\nclass OutlineRenderer {\n\t\tconstructor(app, renderingLayer, priority = -1){\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.renderingLayer = renderingLayer ?? app.scene.layers.getLayerByName('Immediate');\n\t\t\t\tthis.rt = this.createRenderTarget('OutlineTexture', 1, 1, true);\n\t\t\t\tthis.outlineCameraEntity = new Entity('OutlineCamera');\n\t\t\t\tthis.outlineCameraEntity.addComponent('camera', {\n\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\tthis.renderingLayer.id\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpriority: priority,\n\t\t\t\t\t\tclearColor: new Color(0, 0, 0, 0),\n\t\t\t\t\t\trenderTarget: this.rt\n\t\t\t\t});\n\t\t\t\tthis.outlineShaderPass = this.outlineCameraEntity.camera.setShaderPass('OutlineShaderPass');\n\t\t\t\tthis.postRender = (cameraComponent)=>{\n\t\t\t\t\t\tif (this.outlineCameraEntity.camera === cameraComponent) {\n\t\t\t\t\t\t\t\tthis.onPostRender();\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tapp.scene.on('postrender', this.postRender);\n\t\t\t\tthis.app.root.addChild(this.outlineCameraEntity);\n\t\t\t\tthis.tempRt = this.createRenderTarget('OutlineTempTexture', 1, 1, false);\n\t\t\t\tthis.blendState = new BlendState(true, BLENDEQUATION_ADD, BLENDMODE_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_ALPHA);\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tthis.shaderExtend = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'OutlineExtendShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexGLSL: ShaderChunks.get(device, SHADERLANGUAGE_GLSL).get('fullscreenQuadVS'),\n\t\t\t\t\t\tfragmentGLSL: shaderOutlineExtendPS\n\t\t\t\t});\n\t\t\t\tthis.shaderBlend = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'OutlineBlendShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentChunk: 'outputTex2DPS'\n\t\t\t\t});\n\t\t\t\tthis.quadRenderer = new QuadRender(this.shaderBlend);\n\t\t\t\tthis.whiteTex = new Texture(device, {\n\t\t\t\t\t\tname: 'OutlineWhiteTexture',\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tmipmaps: false\n\t\t\t\t});\n\t\t\t\tconst pixels = this.whiteTex.lock();\n\t\t\t\tpixels.set(new Uint8Array([\n\t\t\t\t\t\t255,\n\t\t\t\t\t\t255,\n\t\t\t\t\t\t255,\n\t\t\t\t\t\t255\n\t\t\t\t]));\n\t\t\t\tthis.whiteTex.unlock();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.whiteTex.destroy();\n\t\t\t\tthis.whiteTex = null;\n\t\t\t\tthis.outlineCameraEntity.destroy();\n\t\t\t\tthis.outlineCameraEntity = null;\n\t\t\t\tthis.rt.destroyTextureBuffers();\n\t\t\t\tthis.rt.destroy();\n\t\t\t\tthis.rt = null;\n\t\t\t\tthis.tempRt.destroyTextureBuffers();\n\t\t\t\tthis.tempRt.destroy();\n\t\t\t\tthis.tempRt = null;\n\t\t\t\tthis.app.scene.off('postrender', this.postRender);\n\t\t\t\tthis.quadRenderer?.destroy();\n\t\t\t\tthis.quadRenderer = null;\n\t\t}\n\t\tgetMeshInstances(entity, recursive) {\n\t\t\t\tconst meshInstances = [];\n\t\t\t\tif (entity) {\n\t\t\t\t\t\tconst renders = recursive ? entity.findComponents('render') : entity.render ? [\n\t\t\t\t\t\t\t\tentity.render\n\t\t\t\t\t\t] : [];\n\t\t\t\t\t\trenders.forEach((render)=>{\n\t\t\t\t\t\t\t\tif (render.meshInstances) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances.push(...render.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\tconst models = recursive ? entity.findComponents('model') : entity.model ? [\n\t\t\t\t\t\t\t\tentity.model\n\t\t\t\t\t\t] : [];\n\t\t\t\t\t\tmodels.forEach((model)=>{\n\t\t\t\t\t\t\t\tif (model.meshInstances) {\n\t\t\t\t\t\t\t\t\t\tmeshInstances.push(...model.meshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn meshInstances;\n\t\t}\n\t\taddEntity(entity, color, recursive = true) {\n\t\t\t\tconst meshInstances = this.getMeshInstances(entity, recursive);\n\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\tif (meshInstance.material instanceof StandardMaterial) {\n\t\t\t\t\t\t\t\tconst outlineShaderPass = this.outlineShaderPass;\n\t\t\t\t\t\t\t\tmeshInstance.material.onUpdateShader = (options)=>{\n\t\t\t\t\t\t\t\t\t\tif (options.pass === outlineShaderPass) {\n\t\t\t\t\t\t\t\t\t\t\t\tconst opts = new StandardMaterialOptions();\n\t\t\t\t\t\t\t\t\t\t\t\topts.defines = options.defines;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMap = options.opacityMap;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMapUv = options.opacityMapUv;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMapChannel = options.opacityMapChannel;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityMapTransform = options.opacityMapTransform;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityVertexColor = options.opacityVertexColor;\n\t\t\t\t\t\t\t\t\t\t\t\topts.opacityVertexColorChannel = options.opacityVertexColorChannel;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.vertexColors = options.litOptions.vertexColors;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.alphaTest = options.litOptions.alphaTest;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.skin = options.litOptions.skin;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.batch = options.litOptions.batch;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useInstancing = options.litOptions.useInstancing;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useMorphPosition = options.litOptions.useMorphPosition;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useMorphNormal = options.litOptions.useMorphNormal;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.useMorphTextureBasedInt = options.litOptions.useMorphTextureBasedInt;\n\t\t\t\t\t\t\t\t\t\t\t\topts.litOptions.opacityFadesSpecular = options.litOptions.opacityFadesSpecular;\n\t\t\t\t\t\t\t\t\t\t\t\treturn opts;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\treturn options;\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t_tempColor.linear(color);\n\t\t\t\t\t\t\t\tconst colArray = new Float32Array([\n\t\t\t\t\t\t\t\t\t\t_tempColor.r,\n\t\t\t\t\t\t\t\t\t\t_tempColor.g,\n\t\t\t\t\t\t\t\t\t\t_tempColor.b\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t\t\tmeshInstance.setParameter('material_emissive', colArray, 1 << this.outlineShaderPass);\n\t\t\t\t\t\t\t\tmeshInstance.setParameter('texture_emissiveMap', this.whiteTex, 1 << this.outlineShaderPass);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.renderingLayer.addMeshInstances(meshInstances, true);\n\t\t}\n\t\tremoveEntity(entity, recursive = true) {\n\t\t\t\tconst meshInstances = this.getMeshInstances(entity, recursive);\n\t\t\t\tthis.renderingLayer.removeMeshInstances(meshInstances);\n\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\tif (meshInstance.material instanceof StandardMaterial) {\n\t\t\t\t\t\t\t\tmeshInstance.material.onUpdateShader = null;\n\t\t\t\t\t\t\t\tmeshInstance.deleteParameter('material_emissive');\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tremoveAllEntities() {\n\t\t\t\tthis.renderingLayer.clearMeshInstances();\n\t\t}\n\t\tblendOutlines() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tdevice.scope.resolve('source').setValue(this.rt.colorBuffer);\n\t\t\t\tdevice.setDepthState(DepthState.NODEPTH);\n\t\t\t\tdevice.setCullMode(CULLFACE_NONE);\n\t\t\t\tdevice.setBlendState(this.blendState);\n\t\t\t\tthis.quadRenderer.render();\n\t\t}\n\t\tonPostRender() {\n\t\t\t\tconst device = this.app.graphicsDevice;\n\t\t\t\tconst uOffset = device.scope.resolve('uOffset');\n\t\t\t\tconst uColorBuffer = device.scope.resolve('source');\n\t\t\t\tconst uSrcMultiplier = device.scope.resolve('uSrcMultiplier');\n\t\t\t\tconst { rt, tempRt, shaderExtend } = this;\n\t\t\t\tconst { width, height } = rt;\n\t\t\t\t_tempFloatArray[0] = 1.0 / width / 2.0;\n\t\t\t\t_tempFloatArray[1] = 0;\n\t\t\t\tuOffset.setValue(_tempFloatArray);\n\t\t\t\tuColorBuffer.setValue(rt.colorBuffer);\n\t\t\t\tuSrcMultiplier.setValue(0.0);\n\t\t\t\tdrawQuadWithShader(device, tempRt, shaderExtend);\n\t\t\t\t_tempFloatArray[0] = 0;\n\t\t\t\t_tempFloatArray[1] = 1.0 / height / 2.0;\n\t\t\t\tuOffset.setValue(_tempFloatArray);\n\t\t\t\tuColorBuffer.setValue(tempRt.colorBuffer);\n\t\t\t\tuSrcMultiplier.setValue(1.0);\n\t\t\t\tdrawQuadWithShader(device, rt, shaderExtend);\n\t\t}\n\t\tcreateRenderTarget(name, width, height, depth) {\n\t\t\t\tconst texture = new Texture(this.app.graphicsDevice, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: width,\n\t\t\t\t\t\theight: height,\n\t\t\t\t\t\tformat: PIXELFORMAT_SRGBA8,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR_MIPMAP_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR\n\t\t\t\t});\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\tdepth: depth,\n\t\t\t\t\t\tflipY: this.app.graphicsDevice.isWebGPU\n\t\t\t\t});\n\t\t}\n\t\tupdateRenderTarget(sceneCamera) {\n\t\t\t\tconst width = sceneCamera.renderTarget?.width ?? this.app.graphicsDevice.width;\n\t\t\t\tconst height = sceneCamera.renderTarget?.height ?? this.app.graphicsDevice.height;\n\t\t\t\tconst outlineCamera = this.outlineCameraEntity.camera;\n\t\t\t\tif (!outlineCamera.renderTarget || outlineCamera.renderTarget.width !== width || outlineCamera.renderTarget.height !== height) {\n\t\t\t\t\t\tthis.rt.resize(width, height);\n\t\t\t\t\t\tthis.tempRt.resize(width, height);\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate(sceneCameraEntity, blendLayer, blendLayerTransparent) {\n\t\t\t\tconst sceneCamera = sceneCameraEntity.camera;\n\t\t\t\tthis.updateRenderTarget(sceneCamera);\n\t\t\t\tconst evt = this.app.scene.on('prerender:layer', (cameraComponent, layer, transparent)=>{\n\t\t\t\t\t\tif (sceneCamera === cameraComponent && transparent === blendLayerTransparent && layer === blendLayer) {\n\t\t\t\t\t\t\t\tthis.blendOutlines();\n\t\t\t\t\t\t\t\tevt.off();\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.outlineCameraEntity.setLocalPosition(sceneCameraEntity.getPosition());\n\t\t\t\tthis.outlineCameraEntity.setLocalRotation(sceneCameraEntity.getRotation());\n\t\t\t\tconst outlineCamera = this.outlineCameraEntity.camera;\n\t\t\t\toutlineCamera.projection = sceneCamera.projection;\n\t\t\t\toutlineCamera.horizontalFov = sceneCamera.horizontalFov;\n\t\t\t\toutlineCamera.fov = sceneCamera.fov;\n\t\t\t\toutlineCamera.orthoHeight = sceneCamera.orthoHeight;\n\t\t\t\toutlineCamera.nearClip = sceneCamera.nearClip;\n\t\t\t\toutlineCamera.farClip = sceneCamera.farClip;\n\t\t}\n}\n\nclass CoreExporter {\n\t\tconstructor(){}\n\t\ttextureToCanvas(texture, options = {}) {\n\t\t\t\tconst image = texture.getSource();\n\t\t\t\tif (typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement || typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement || typeof OffscreenCanvas !== 'undefined' && image instanceof OffscreenCanvas || typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap) {\n\t\t\t\t\t\tconst { width, height } = this.calcTextureSize(image.width, image.height, options.maxTextureSize);\n\t\t\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\t\tconst context = canvas.getContext('2d');\n\t\t\t\t\t\tif (context === null) {\n\t\t\t\t\t\t\t\treturn Promise.resolve(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcontext.drawImage(image, 0, 0, canvas.width, canvas.height);\n\t\t\t\t\t\tif (options.color) {\n\t\t\t\t\t\t\t\tconst { r, g, b } = options.color;\n\t\t\t\t\t\t\t\tconst imagedata = context.getImageData(0, 0, width, height);\n\t\t\t\t\t\t\t\tconst data = imagedata.data;\n\t\t\t\t\t\t\t\tfor(let i = 0; i < data.length; i += 4){\n\t\t\t\t\t\t\t\t\t\tdata[i + 0] = data[i + 0] * r;\n\t\t\t\t\t\t\t\t\t\tdata[i + 1] = data[i + 1] * g;\n\t\t\t\t\t\t\t\t\t\tdata[i + 2] = data[i + 2] * b;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcontext.putImageData(imagedata, 0, 0);\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.resolve(canvas);\n\t\t\t\t}\n\t\t\t\tconst device = texture.device;\n\t\t\t\tconst { width, height } = this.calcTextureSize(texture.width, texture.height, options.maxTextureSize);\n\t\t\t\tconst format = isCompressedPixelFormat(texture.format) ? PIXELFORMAT_RGBA8 : texture.format;\n\t\t\t\tconst dstTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'ExtractedTexture',\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tcubemap: false,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: dstTexture,\n\t\t\t\t\t\tdepth: false\n\t\t\t\t});\n\t\t\t\tconst shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'ShaderCoreExporterBlit',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'fullscreenQuadVS',\n\t\t\t\t\t\tfragmentChunk: 'outputTex2DPS'\n\t\t\t\t});\n\t\t\t\tdevice.scope.resolve('source').setValue(texture);\n\t\t\t\tdevice.setBlendState(BlendState.NOBLEND);\n\t\t\t\tdrawQuadWithShader(device, renderTarget, shader);\n\t\t\t\treturn dstTexture.read(0, 0, width, height, {\n\t\t\t\t\t\trenderTarget: renderTarget,\n\t\t\t\t\t\timmediate: true\n\t\t\t\t}).then((textureData)=>{\n\t\t\t\t\t\tdstTexture.destroy();\n\t\t\t\t\t\trenderTarget.destroy();\n\t\t\t\t\t\tconst pixels = new Uint8ClampedArray(width * height * 4);\n\t\t\t\t\t\tpixels.set(textureData);\n\t\t\t\t\t\tconst newImage = new ImageData(pixels, width, height);\n\t\t\t\t\t\tconst canvas = document.createElement('canvas');\n\t\t\t\t\t\tcanvas.width = width;\n\t\t\t\t\t\tcanvas.height = height;\n\t\t\t\t\t\tconst newContext = canvas.getContext('2d');\n\t\t\t\t\t\tif (!newContext) {\n\t\t\t\t\t\t\t\treturn Promise.resolve(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewContext.putImageData(newImage, 0, 0);\n\t\t\t\t\t\treturn Promise.resolve(canvas);\n\t\t\t\t});\n\t\t}\n\t\tcalcTextureSize(width, height, maxTextureSize) {\n\t\t\t\tif (maxTextureSize) {\n\t\t\t\t\t\tconst scale = Math.min(maxTextureSize / Math.max(width, height), 1);\n\t\t\t\t\t\twidth = Math.round(width * scale);\n\t\t\t\t\t\theight = Math.round(height * scale);\n\t\t\t\t}\n\t\t\t\treturn {\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight\n\t\t\t\t};\n\t\t}\n}\n\nvar u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;\nvar fleb = new u8([\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t2,\n\t\t3,\n\t\t3,\n\t\t3,\n\t\t3,\n\t\t4,\n\t\t4,\n\t\t4,\n\t\t4,\n\t\t5,\n\t\t5,\n\t\t5,\n\t\t5,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0\n]);\nvar fdeb = new u8([\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t0,\n\t\t1,\n\t\t1,\n\t\t2,\n\t\t2,\n\t\t3,\n\t\t3,\n\t\t4,\n\t\t4,\n\t\t5,\n\t\t5,\n\t\t6,\n\t\t6,\n\t\t7,\n\t\t7,\n\t\t8,\n\t\t8,\n\t\t9,\n\t\t9,\n\t\t10,\n\t\t10,\n\t\t11,\n\t\t11,\n\t\t12,\n\t\t12,\n\t\t13,\n\t\t13,\n\t\t0,\n\t\t0\n]);\nvar clim = new u8([\n\t\t16,\n\t\t17,\n\t\t18,\n\t\t0,\n\t\t8,\n\t\t7,\n\t\t9,\n\t\t6,\n\t\t10,\n\t\t5,\n\t\t11,\n\t\t4,\n\t\t12,\n\t\t3,\n\t\t13,\n\t\t2,\n\t\t14,\n\t\t1,\n\t\t15\n]);\nvar freb = function(eb, start) {\n\t\tvar b = new u16(31);\n\t\tfor(var i = 0; i < 31; ++i){\n\t\t\t\tb[i] = start += 1 << eb[i - 1];\n\t\t}\n\t\tvar r = new i32(b[30]);\n\t\tfor(var i = 1; i < 30; ++i){\n\t\t\t\tfor(var j = b[i]; j < b[i + 1]; ++j){\n\t\t\t\t\t\tr[j] = j - b[i] << 5 | i;\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tb: b,\n\t\t\t\tr: r\n\t\t};\n};\nvar _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), revfd = _b.r;\nvar rev = new u16(32768);\nfor(var i = 0; i < 32768; ++i){\n\t\tvar x = (i & 0xAAAA) >> 1 | (i & 0x5555) << 1;\n\t\tx = (x & 0xCCCC) >> 2 | (x & 0x3333) << 2;\n\t\tx = (x & 0xF0F0) >> 4 | (x & 0x0F0F) << 4;\n\t\trev[i] = ((x & 0xFF00) >> 8 | (x & 0x00FF) << 8) >> 1;\n}\nvar hMap = function(cd, mb, r) {\n\t\tvar s = cd.length;\n\t\tvar i = 0;\n\t\tvar l = new u16(mb);\n\t\tfor(; i < s; ++i){\n\t\t\t\tif (cd[i]) ++l[cd[i] - 1];\n\t\t}\n\t\tvar le = new u16(mb);\n\t\tfor(i = 1; i < mb; ++i){\n\t\t\t\tle[i] = le[i - 1] + l[i - 1] << 1;\n\t\t}\n\t\tvar co;\n\t\tif (r) {\n\t\t\t\tco = new u16(1 << mb);\n\t\t\t\tvar rvb = 15 - mb;\n\t\t\t\tfor(i = 0; i < s; ++i){\n\t\t\t\t\t\tif (cd[i]) {\n\t\t\t\t\t\t\t\tvar sv = i << 4 | cd[i];\n\t\t\t\t\t\t\t\tvar r_1 = mb - cd[i];\n\t\t\t\t\t\t\t\tvar v = le[cd[i] - 1]++ << r_1;\n\t\t\t\t\t\t\t\tfor(var m = v | (1 << r_1) - 1; v <= m; ++v){\n\t\t\t\t\t\t\t\t\t\tco[rev[v] >> rvb] = sv;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tco = new u16(s);\n\t\t\t\tfor(i = 0; i < s; ++i){\n\t\t\t\t\t\tif (cd[i]) {\n\t\t\t\t\t\t\t\tco[i] = rev[le[cd[i] - 1]++] >> 15 - cd[i];\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\treturn co;\n};\nvar flt = new u8(288);\nfor(var i = 0; i < 144; ++i)flt[i] = 8;\nfor(var i = 144; i < 256; ++i)flt[i] = 9;\nfor(var i = 256; i < 280; ++i)flt[i] = 7;\nfor(var i = 280; i < 288; ++i)flt[i] = 8;\nvar fdt = new u8(32);\nfor(var i = 0; i < 32; ++i)fdt[i] = 5;\nvar flm = hMap(flt, 9, 0); hMap(flt, 9, 1);\nvar fdm = hMap(fdt, 5, 0); hMap(fdt, 5, 1);\nvar shft = function(p) {\n\t\treturn (p + 7) / 8 | 0;\n};\nvar slc = function(v, s, e) {\n\t\tif (e == null || e > v.length) e = v.length;\n\t\treturn new u8(v.subarray(s, e));\n};\nvar ec = [\n\t\t'unexpected EOF',\n\t\t'invalid block type',\n\t\t'invalid length/literal',\n\t\t'invalid distance',\n\t\t'stream finished',\n\t\t'no stream handler',\n\t\t,\n\t\t'no callback',\n\t\t'invalid UTF-8 data',\n\t\t'extra field too long',\n\t\t'date not in range 1980-2099',\n\t\t'filename too long',\n\t\t'stream finishing',\n\t\t'invalid zip data'\n];\nvar err = function(ind, msg, nt) {\n\t\tvar e = new Error(msg || ec[ind]);\n\t\te.code = ind;\n\t\tif (Error.captureStackTrace) Error.captureStackTrace(e, err);\n\t\tif (!nt) throw e;\n\t\treturn e;\n};\nvar wbits = function(d, p, v) {\n\t\tv <<= p & 7;\n\t\tvar o = p / 8 | 0;\n\t\td[o] |= v;\n\t\td[o + 1] |= v >> 8;\n};\nvar wbits16 = function(d, p, v) {\n\t\tv <<= p & 7;\n\t\tvar o = p / 8 | 0;\n\t\td[o] |= v;\n\t\td[o + 1] |= v >> 8;\n\t\td[o + 2] |= v >> 16;\n};\nvar hTree = function(d, mb) {\n\t\tvar t = [];\n\t\tfor(var i = 0; i < d.length; ++i){\n\t\t\t\tif (d[i]) t.push({\n\t\t\t\t\t\ts: i,\n\t\t\t\t\t\tf: d[i]\n\t\t\t\t});\n\t\t}\n\t\tvar s = t.length;\n\t\tvar t2 = t.slice();\n\t\tif (!s) return {\n\t\t\t\tt: et,\n\t\t\t\tl: 0\n\t\t};\n\t\tif (s == 1) {\n\t\t\t\tvar v = new u8(t[0].s + 1);\n\t\t\t\tv[t[0].s] = 1;\n\t\t\t\treturn {\n\t\t\t\t\t\tt: v,\n\t\t\t\t\t\tl: 1\n\t\t\t\t};\n\t\t}\n\t\tt.sort(function(a, b) {\n\t\t\t\treturn a.f - b.f;\n\t\t});\n\t\tt.push({\n\t\t\t\ts: -1,\n\t\t\t\tf: 25001\n\t\t});\n\t\tvar l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n\t\tt[0] = {\n\t\t\t\ts: -1,\n\t\t\t\tf: l.f + r.f,\n\t\t\t\tl: l,\n\t\t\t\tr: r\n\t\t};\n\t\twhile(i1 != s - 1){\n\t\t\t\tl = t[t[i0].f < t[i2].f ? i0++ : i2++];\n\t\t\t\tr = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n\t\t\t\tt[i1++] = {\n\t\t\t\t\t\ts: -1,\n\t\t\t\t\t\tf: l.f + r.f,\n\t\t\t\t\t\tl: l,\n\t\t\t\t\t\tr: r\n\t\t\t\t};\n\t\t}\n\t\tvar maxSym = t2[0].s;\n\t\tfor(var i = 1; i < s; ++i){\n\t\t\t\tif (t2[i].s > maxSym) maxSym = t2[i].s;\n\t\t}\n\t\tvar tr = new u16(maxSym + 1);\n\t\tvar mbt = ln(t[i1 - 1], tr, 0);\n\t\tif (mbt > mb) {\n\t\t\t\tvar i = 0, dt = 0;\n\t\t\t\tvar lft = mbt - mb, cst = 1 << lft;\n\t\t\t\tt2.sort(function(a, b) {\n\t\t\t\t\t\treturn tr[b.s] - tr[a.s] || a.f - b.f;\n\t\t\t\t});\n\t\t\t\tfor(; i < s; ++i){\n\t\t\t\t\t\tvar i2_1 = t2[i].s;\n\t\t\t\t\t\tif (tr[i2_1] > mb) {\n\t\t\t\t\t\t\t\tdt += cst - (1 << mbt - tr[i2_1]);\n\t\t\t\t\t\t\t\ttr[i2_1] = mb;\n\t\t\t\t\t\t} else break;\n\t\t\t\t}\n\t\t\t\tdt >>= lft;\n\t\t\t\twhile(dt > 0){\n\t\t\t\t\t\tvar i2_2 = t2[i].s;\n\t\t\t\t\t\tif (tr[i2_2] < mb) dt -= 1 << mb - tr[i2_2]++ - 1;\n\t\t\t\t\t\telse ++i;\n\t\t\t\t}\n\t\t\t\tfor(; i >= 0 && dt; --i){\n\t\t\t\t\t\tvar i2_3 = t2[i].s;\n\t\t\t\t\t\tif (tr[i2_3] == mb) {\n\t\t\t\t\t\t\t\t--tr[i2_3];\n\t\t\t\t\t\t\t\t++dt;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tmbt = mb;\n\t\t}\n\t\treturn {\n\t\t\t\tt: new u8(tr),\n\t\t\t\tl: mbt\n\t\t};\n};\nvar ln = function(n, l, d) {\n\t\treturn n.s == -1 ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1)) : l[n.s] = d;\n};\nvar lc = function(c) {\n\t\tvar s = c.length;\n\t\twhile(s && !c[--s]);\n\t\tvar cl = new u16(++s);\n\t\tvar cli = 0, cln = c[0], cls = 1;\n\t\tvar w = function(v) {\n\t\t\t\tcl[cli++] = v;\n\t\t};\n\t\tfor(var i = 1; i <= s; ++i){\n\t\t\t\tif (c[i] == cln && i != s) ++cls;\n\t\t\t\telse {\n\t\t\t\t\t\tif (!cln && cls > 2) {\n\t\t\t\t\t\t\t\tfor(; cls > 138; cls -= 138)w(32754);\n\t\t\t\t\t\t\t\tif (cls > 2) {\n\t\t\t\t\t\t\t\t\t\tw(cls > 10 ? cls - 11 << 5 | 28690 : cls - 3 << 5 | 12305);\n\t\t\t\t\t\t\t\t\t\tcls = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else if (cls > 3) {\n\t\t\t\t\t\t\t\tw(cln), --cls;\n\t\t\t\t\t\t\t\tfor(; cls > 6; cls -= 6)w(8304);\n\t\t\t\t\t\t\t\tif (cls > 2) w(cls - 3 << 5 | 8208), cls = 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\twhile(cls--)w(cln);\n\t\t\t\t\t\tcls = 1;\n\t\t\t\t\t\tcln = c[i];\n\t\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t\tc: cl.subarray(0, cli),\n\t\t\t\tn: s\n\t\t};\n};\nvar clen = function(cf, cl) {\n\t\tvar l = 0;\n\t\tfor(var i = 0; i < cl.length; ++i)l += cf[i] * cl[i];\n\t\treturn l;\n};\nvar wfblk = function(out, pos, dat) {\n\t\tvar s = dat.length;\n\t\tvar o = shft(pos + 2);\n\t\tout[o] = s & 255;\n\t\tout[o + 1] = s >> 8;\n\t\tout[o + 2] = out[o] ^ 255;\n\t\tout[o + 3] = out[o + 1] ^ 255;\n\t\tfor(var i = 0; i < s; ++i)out[o + i + 4] = dat[i];\n\t\treturn (o + 4 + s) * 8;\n};\nvar wblk = function(dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n\t\twbits(out, p++, final);\n\t\t++lf[256];\n\t\tvar _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;\n\t\tvar _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;\n\t\tvar _c = lc(dlt), lclt = _c.c, nlc = _c.n;\n\t\tvar _d = lc(ddt), lcdt = _d.c, ndc = _d.n;\n\t\tvar lcfreq = new u16(19);\n\t\tfor(var i = 0; i < lclt.length; ++i)++lcfreq[lclt[i] & 31];\n\t\tfor(var i = 0; i < lcdt.length; ++i)++lcfreq[lcdt[i] & 31];\n\t\tvar _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;\n\t\tvar nlcc = 19;\n\t\tfor(; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc);\n\t\tvar flen = bl + 5 << 3;\n\t\tvar ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n\t\tvar dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];\n\t\tif (bs >= 0 && flen <= ftlen && flen <= dtlen) return wfblk(out, p, dat.subarray(bs, bs + bl));\n\t\tvar lm, ll, dm, dl;\n\t\twbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n\t\tif (dtlen < ftlen) {\n\t\t\t\tlm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n\t\t\t\tvar llm = hMap(lct, mlcb, 0);\n\t\t\t\twbits(out, p, nlc - 257);\n\t\t\t\twbits(out, p + 5, ndc - 1);\n\t\t\t\twbits(out, p + 10, nlcc - 4);\n\t\t\t\tp += 14;\n\t\t\t\tfor(var i = 0; i < nlcc; ++i)wbits(out, p + 3 * i, lct[clim[i]]);\n\t\t\t\tp += 3 * nlcc;\n\t\t\t\tvar lcts = [\n\t\t\t\t\t\tlclt,\n\t\t\t\t\t\tlcdt\n\t\t\t\t];\n\t\t\t\tfor(var it = 0; it < 2; ++it){\n\t\t\t\t\t\tvar clct = lcts[it];\n\t\t\t\t\t\tfor(var i = 0; i < clct.length; ++i){\n\t\t\t\t\t\t\t\tvar len = clct[i] & 31;\n\t\t\t\t\t\t\t\twbits(out, p, llm[len]), p += lct[len];\n\t\t\t\t\t\t\t\tif (len > 15) wbits(out, p, clct[i] >> 5 & 127), p += clct[i] >> 12;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tlm = flm, ll = flt, dm = fdm, dl = fdt;\n\t\t}\n\t\tfor(var i = 0; i < li; ++i){\n\t\t\t\tvar sym = syms[i];\n\t\t\t\tif (sym > 255) {\n\t\t\t\t\t\tvar len = sym >> 18 & 31;\n\t\t\t\t\t\twbits16(out, p, lm[len + 257]), p += ll[len + 257];\n\t\t\t\t\t\tif (len > 7) wbits(out, p, sym >> 23 & 31), p += fleb[len];\n\t\t\t\t\t\tvar dst = sym & 31;\n\t\t\t\t\t\twbits16(out, p, dm[dst]), p += dl[dst];\n\t\t\t\t\t\tif (dst > 3) wbits16(out, p, sym >> 5 & 8191), p += fdeb[dst];\n\t\t\t\t} else {\n\t\t\t\t\t\twbits16(out, p, lm[sym]), p += ll[sym];\n\t\t\t\t}\n\t\t}\n\t\twbits16(out, p, lm[256]);\n\t\treturn p + ll[256];\n};\nvar deo = new i32([\n\t\t65540,\n\t\t131080,\n\t\t131088,\n\t\t131104,\n\t\t262176,\n\t\t1048704,\n\t\t1048832,\n\t\t2114560,\n\t\t2117632\n]);\nvar et = new u8(0);\nvar dflt = function(dat, lvl, plvl, pre, post, st) {\n\t\tvar s = st.z || dat.length;\n\t\tvar o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);\n\t\tvar w = o.subarray(pre, o.length - post);\n\t\tvar lst = st.l;\n\t\tvar pos = (st.r || 0) & 7;\n\t\tif (lvl) {\n\t\t\t\tif (pos) w[0] = st.r >> 3;\n\t\t\t\tvar opt = deo[lvl - 1];\n\t\t\t\tvar n = opt >> 13, c = opt & 8191;\n\t\t\t\tvar msk_1 = (1 << plvl) - 1;\n\t\t\t\tvar prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);\n\t\t\t\tvar bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n\t\t\t\tvar hsh = function(i) {\n\t\t\t\t\t\treturn (dat[i] ^ dat[i + 1] << bs1_1 ^ dat[i + 2] << bs2_1) & msk_1;\n\t\t\t\t};\n\t\t\t\tvar syms = new i32(25000);\n\t\t\t\tvar lf = new u16(288), df = new u16(32);\n\t\t\t\tvar lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;\n\t\t\t\tfor(; i + 2 < s; ++i){\n\t\t\t\t\t\tvar hv = hsh(i);\n\t\t\t\t\t\tvar imod = i & 32767, pimod = head[hv];\n\t\t\t\t\t\tprev[imod] = pimod;\n\t\t\t\t\t\thead[hv] = imod;\n\t\t\t\t\t\tif (wi <= i) {\n\t\t\t\t\t\t\t\tvar rem = s - i;\n\t\t\t\t\t\t\t\tif ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {\n\t\t\t\t\t\t\t\t\t\tpos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n\t\t\t\t\t\t\t\t\t\tli = lc_1 = eb = 0, bs = i;\n\t\t\t\t\t\t\t\t\t\tfor(var j = 0; j < 286; ++j)lf[j] = 0;\n\t\t\t\t\t\t\t\t\t\tfor(var j = 0; j < 30; ++j)df[j] = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tvar l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;\n\t\t\t\t\t\t\t\tif (rem > 2 && hv == hsh(i - dif)) {\n\t\t\t\t\t\t\t\t\t\tvar maxn = Math.min(n, rem) - 1;\n\t\t\t\t\t\t\t\t\t\tvar maxd = Math.min(32767, i);\n\t\t\t\t\t\t\t\t\t\tvar ml = Math.min(258, rem);\n\t\t\t\t\t\t\t\t\t\twhile(dif <= maxd && --ch_1 && imod != pimod){\n\t\t\t\t\t\t\t\t\t\t\t\tif (dat[i + l] == dat[i + l - dif]) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar nl = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (nl > l) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tl = nl, d = dif;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (nl > maxn) break;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar mmd = Math.min(dif, nl - 2);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar md = 0;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tfor(var j = 0; j < mmd; ++j){\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar ti = i - dif + j & 32767;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar pti = prev[ti];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tvar cd = ti - pti & 32767;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (cd > md) md = cd, pimod = ti;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\timod = pimod, pimod = prev[imod];\n\t\t\t\t\t\t\t\t\t\t\t\tdif += imod - pimod & 32767;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (d) {\n\t\t\t\t\t\t\t\t\t\tsyms[li++] = 268435456 | revfl[l] << 18 | revfd[d];\n\t\t\t\t\t\t\t\t\t\tvar lin = revfl[l] & 31, din = revfd[d] & 31;\n\t\t\t\t\t\t\t\t\t\teb += fleb[lin] + fdeb[din];\n\t\t\t\t\t\t\t\t\t\t++lf[257 + lin];\n\t\t\t\t\t\t\t\t\t\t++df[din];\n\t\t\t\t\t\t\t\t\t\twi = i + l;\n\t\t\t\t\t\t\t\t\t\t++lc_1;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tsyms[li++] = dat[i];\n\t\t\t\t\t\t\t\t\t\t++lf[dat[i]];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(i = Math.max(i, wi); i < s; ++i){\n\t\t\t\t\t\tsyms[li++] = dat[i];\n\t\t\t\t\t\t++lf[dat[i]];\n\t\t\t\t}\n\t\t\t\tpos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n\t\t\t\tif (!lst) {\n\t\t\t\t\t\tst.r = pos & 7 | w[pos / 8 | 0] << 3;\n\t\t\t\t\t\tpos -= 7;\n\t\t\t\t\t\tst.h = head, st.p = prev, st.i = i, st.w = wi;\n\t\t\t\t}\n\t\t} else {\n\t\t\t\tfor(var i = st.w || 0; i < s + lst; i += 65535){\n\t\t\t\t\t\tvar e = i + 65535;\n\t\t\t\t\t\tif (e >= s) {\n\t\t\t\t\t\t\t\tw[pos / 8 | 0] = lst;\n\t\t\t\t\t\t\t\te = s;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tpos = wfblk(w, pos + 1, dat.subarray(i, e));\n\t\t\t\t}\n\t\t\t\tst.i = s;\n\t\t}\n\t\treturn slc(o, 0, pre + shft(pos) + post);\n};\nvar crct = function() {\n\t\tvar t = new Int32Array(256);\n\t\tfor(var i = 0; i < 256; ++i){\n\t\t\t\tvar c = i, k = 9;\n\t\t\t\twhile(--k)c = (c & 1 && -306674912) ^ c >>> 1;\n\t\t\t\tt[i] = c;\n\t\t}\n\t\treturn t;\n}();\nvar crc = function() {\n\t\tvar c = -1;\n\t\treturn {\n\t\t\t\tp: function(d) {\n\t\t\t\t\t\tvar cr = c;\n\t\t\t\t\t\tfor(var i = 0; i < d.length; ++i)cr = crct[cr & 255 ^ d[i]] ^ cr >>> 8;\n\t\t\t\t\t\tc = cr;\n\t\t\t\t},\n\t\t\t\td: function() {\n\t\t\t\t\t\treturn ~c;\n\t\t\t\t}\n\t\t};\n};\nvar dopt = function(dat, opt, pre, post, st) {\n\t\tif (!st) {\n\t\t\t\tst = {\n\t\t\t\t\t\tl: 1\n\t\t\t\t};\n\t\t\t\tif (opt.dictionary) {\n\t\t\t\t\t\tvar dict = opt.dictionary.subarray(-32768);\n\t\t\t\t\t\tvar newDat = new u8(dict.length + dat.length);\n\t\t\t\t\t\tnewDat.set(dict);\n\t\t\t\t\t\tnewDat.set(dat, dict.length);\n\t\t\t\t\t\tdat = newDat;\n\t\t\t\t\t\tst.w = dict.length;\n\t\t\t\t}\n\t\t}\n\t\treturn dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20 : 12 + opt.mem, pre, post, st);\n};\nvar mrg = function(a, b) {\n\t\tvar o = {};\n\t\tfor(var k in a)o[k] = a[k];\n\t\tfor(var k in b)o[k] = b[k];\n\t\treturn o;\n};\nvar wbytes = function(d, b, v) {\n\t\tfor(; v; ++b)d[b] = v, v >>>= 8;\n};\nfunction deflateSync(data, opts) {\n\t\treturn dopt(data, opts || {}, 0, 0);\n}\nvar fltn = function(d, p, t, o) {\n\t\tfor(var k in d){\n\t\t\t\tvar val = d[k], n = p + k, op = o;\n\t\t\t\tif (Array.isArray(val)) op = mrg(o, val[1]), val = val[0];\n\t\t\t\tif (val instanceof u8) t[n] = [\n\t\t\t\t\t\tval,\n\t\t\t\t\t\top\n\t\t\t\t];\n\t\t\t\telse {\n\t\t\t\t\t\tt[n += '/'] = [\n\t\t\t\t\t\t\t\tnew u8(0),\n\t\t\t\t\t\t\t\top\n\t\t\t\t\t\t];\n\t\t\t\t\t\tfltn(val, n, t, o);\n\t\t\t\t}\n\t\t}\n};\nvar te = typeof TextEncoder != 'undefined' && new TextEncoder();\nvar td = typeof TextDecoder != 'undefined' && new TextDecoder();\nvar tds = 0;\ntry {\n\t\ttd.decode(et, {\n\t\t\t\tstream: true\n\t\t});\n\t\ttds = 1;\n} catch (e) {}\nfunction strToU8(str, latin1) {\n\t\tvar i; \n\t\tif (te) return te.encode(str);\n\t\tvar l = str.length;\n\t\tvar ar = new u8(str.length + (str.length >> 1));\n\t\tvar ai = 0;\n\t\tvar w = function(v) {\n\t\t\t\tar[ai++] = v;\n\t\t};\n\t\tfor(var i = 0; i < l; ++i){\n\t\t\t\tif (ai + 5 > ar.length) {\n\t\t\t\t\t\tvar n = new u8(ai + 8 + (l - i << 1));\n\t\t\t\t\t\tn.set(ar);\n\t\t\t\t\t\tar = n;\n\t\t\t\t}\n\t\t\t\tvar c = str.charCodeAt(i);\n\t\t\t\tif (c < 128 || latin1) w(c);\n\t\t\t\telse if (c < 2048) w(192 | c >> 6), w(128 | c & 63);\n\t\t\t\telse if (c > 55295 && c < 57344) c = 65536 + (c & 1023 << 10) | str.charCodeAt(++i) & 1023, w(240 | c >> 18), w(128 | c >> 12 & 63), w(128 | c >> 6 & 63), w(128 | c & 63);\n\t\t\t\telse w(224 | c >> 12), w(128 | c >> 6 & 63), w(128 | c & 63);\n\t\t}\n\t\treturn slc(ar, 0, ai);\n}\nvar exfl = function(ex) {\n\t\tvar le = 0;\n\t\tif (ex) {\n\t\t\t\tfor(var k in ex){\n\t\t\t\t\t\tvar l = ex[k].length;\n\t\t\t\t\t\tif (l > 65535) err(9);\n\t\t\t\t\t\tle += l + 4;\n\t\t\t\t}\n\t\t}\n\t\treturn le;\n};\nvar wzh = function(d, b, f, fn, u, c, ce, co) {\n\t\tvar fl = fn.length, ex = f.extra, col = co && co.length;\n\t\tvar exl = exfl(ex);\n\t\twbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;\n\t\tif (ce != null) d[b++] = 20, d[b++] = f.os;\n\t\td[b] = 20, b += 2;\n\t\td[b++] = f.flag << 1 | (c < 0 && 8), d[b++] = u && 8;\n\t\td[b++] = f.compression & 255, d[b++] = f.compression >> 8;\n\t\tvar dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;\n\t\tif (y < 0 || y > 119) err(10);\n\t\twbytes(d, b, y << 25 | dt.getMonth() + 1 << 21 | dt.getDate() << 16 | dt.getHours() << 11 | dt.getMinutes() << 5 | dt.getSeconds() >> 1), b += 4;\n\t\tif (c != -1) {\n\t\t\t\twbytes(d, b, f.crc);\n\t\t\t\twbytes(d, b + 4, c < 0 ? -c - 2 : c);\n\t\t\t\twbytes(d, b + 8, f.size);\n\t\t}\n\t\twbytes(d, b + 12, fl);\n\t\twbytes(d, b + 14, exl), b += 16;\n\t\tif (ce != null) {\n\t\t\t\twbytes(d, b, col);\n\t\t\t\twbytes(d, b + 6, f.attrs);\n\t\t\t\twbytes(d, b + 10, ce), b += 14;\n\t\t}\n\t\td.set(fn, b);\n\t\tb += fl;\n\t\tif (exl) {\n\t\t\t\tfor(var k in ex){\n\t\t\t\t\t\tvar exf = ex[k], l = exf.length;\n\t\t\t\t\t\twbytes(d, b, +k);\n\t\t\t\t\t\twbytes(d, b + 2, l);\n\t\t\t\t\t\td.set(exf, b + 4), b += 4 + l;\n\t\t\t\t}\n\t\t}\n\t\tif (col) d.set(co, b), b += col;\n\t\treturn b;\n};\nvar wzf = function(o, b, c, d, e) {\n\t\twbytes(o, b, 0x6054B50);\n\t\twbytes(o, b + 8, c);\n\t\twbytes(o, b + 10, c);\n\t\twbytes(o, b + 12, d);\n\t\twbytes(o, b + 16, e);\n};\nfunction zipSync(data, opts) {\n\t\tif (!opts) opts = {};\n\t\tvar r = {};\n\t\tvar files = [];\n\t\tfltn(data, '', r, opts);\n\t\tvar o = 0;\n\t\tvar tot = 0;\n\t\tfor(var fn in r){\n\t\t\t\tvar _a = r[fn], file = _a[0], p = _a[1];\n\t\t\t\tvar compression = p.level == 0 ? 0 : 8;\n\t\t\t\tvar f = strToU8(fn), s = f.length;\n\t\t\t\tvar com = p.comment, m = com && strToU8(com), ms = m && m.length;\n\t\t\t\tvar exl = exfl(p.extra);\n\t\t\t\tif (s > 65535) err(11);\n\t\t\t\tvar d = compression ? deflateSync(file, p) : file, l = d.length;\n\t\t\t\tvar c = crc();\n\t\t\t\tc.p(file);\n\t\t\t\tfiles.push(mrg(p, {\n\t\t\t\t\t\tsize: file.length,\n\t\t\t\t\t\tcrc: c.d(),\n\t\t\t\t\t\tc: d,\n\t\t\t\t\t\tf: f,\n\t\t\t\t\t\tm: m,\n\t\t\t\t\t\tu: s != fn.length || m && com.length != ms,\n\t\t\t\t\t\to: o,\n\t\t\t\t\t\tcompression: compression\n\t\t\t\t}));\n\t\t\t\to += 30 + s + exl + l;\n\t\t\t\ttot += 76 + 2 * (s + exl) + (ms || 0) + l;\n\t\t}\n\t\tvar out = new u8(tot + 22), oe = o, cdl = tot - o;\n\t\tfor(var i = 0; i < files.length; ++i){\n\t\t\t\tvar f = files[i];\n\t\t\t\twzh(out, f.o, f, f.f, f.u, f.c.length);\n\t\t\t\tvar badd = 30 + f.f.length + exfl(f.extra);\n\t\t\t\tout.set(f.c, f.o + badd);\n\t\t\t\twzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);\n\t\t}\n\t\twzf(out, o, files.length, cdl, oe);\n\t\treturn out;\n}\n\nconst ROOT_FILE_NAME = 'root';\nconst header = `#usda 1.0\n(\n\t\tcustomLayerData = {\n\t\t\t\tstring creator = \"PlayCanvas UsdzExporter\"\n\t\t}\n\t\tmetersPerUnit = 1\n\t\tupAxis = \"Y\"\n)\n`;\nconst materialListTemplate = (materials)=>`\ndef \"Materials\"\n{\n\t\t${materials.join('\\n')}\n}\n`;\nconst meshTemplate = (faceVertexCounts, indices, normals, positions, uv0, uv1)=>`\ndef \"Mesh\"\n{\n\t\tdef Mesh \"Mesh\"\n\t\t{\n\t\t\t\tint[] faceVertexCounts = [${faceVertexCounts}]\n\t\t\t\tint[] faceVertexIndices = [${indices}]\n\t\t\t\tnormal3f[] normals = [${normals}] (\n\t\t\t\t\t\tinterpolation = \"vertex\"\n\t\t\t\t)\n\t\t\t\tpoint3f[] points = [${positions}]\n\t\t\t\ttexCoord2f[] primvars:st = [${uv0}] (\n\t\t\t\t\t\tinterpolation = \"vertex\"\n\t\t\t\t)\n\t\t\t\ttexCoord2f[] primvars:st1 = [${uv1}] (\n\t\t\t\t\t\tinterpolation = \"vertex\"\n\t\t\t\t)\n\t\t\t\tuniform token subdivisionScheme = \"none\"\n\t\t}\n}\n`;\nconst meshInstanceTemplate = (nodeName, meshRefPath, worldMatrix, materialRefPath)=>`\ndef Xform \"${nodeName}\" (\n\t\tprepend references = ${meshRefPath}\n)\n{\n\t\tmatrix4d xformOp:transform = ${worldMatrix}\n\t\tuniform token[] xformOpOrder = [\"xformOp:transform\"]\n\n\t\trel material:binding = ${materialRefPath}\n}\n`;\nconst materialValueTemplate = (type, name, value)=>`                    ${type} inputs:${name} = ${value}`;\nclass UsdzExporter extends CoreExporter {\n\t\tinit() {\n\t\t\t\tthis.meshMap = new Map();\n\t\t\t\tthis.textureMap = new Map();\n\t\t\t\tthis.materialMap = new Map();\n\t\t\t\tthis.materials = [];\n\t\t\t\tthis.files = {};\n\t\t\t\tthis.nodeNames = new Set();\n\t\t}\n\t\tdone() {\n\t\t\t\tthis.meshMap = null;\n\t\t\t\tthis.textureMap = null;\n\t\t\t\tthis.materialMap = null;\n\t\t\t\tthis.materials = null;\n\t\t\t\tthis.files = null;\n\t\t\t\tthis.nodeNames = null;\n\t\t}\n\t\tbuild(entity, options = {}) {\n\t\t\t\tthis.init();\n\t\t\t\tthis.addFile(null, ROOT_FILE_NAME);\n\t\t\t\tconst allMeshInstances = [];\n\t\t\t\tif (entity) {\n\t\t\t\t\t\tconst renders = entity.findComponents('render');\n\t\t\t\t\t\trenders.forEach((render)=>{\n\t\t\t\t\t\t\t\tallMeshInstances.push(...render.meshInstances);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet rootContent = '';\n\t\t\t\tallMeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\trootContent += this.buildMeshInstance(meshInstance);\n\t\t\t\t});\n\t\t\t\trootContent += materialListTemplate(this.materials);\n\t\t\t\tthis.addFile(null, ROOT_FILE_NAME, '', rootContent);\n\t\t\t\tconst textureOptions = {\n\t\t\t\t\t\tmaxTextureSize: options.maxTextureSize\n\t\t\t\t};\n\t\t\t\tconst textureArray = Array.from(this.textureMap.keys());\n\t\t\t\tconst promises = [];\n\t\t\t\tfor(let i = 0; i < textureArray.length; i++){\n\t\t\t\t\t\tconst mimeType = 'image/png' ;\n\t\t\t\t\t\tconst texture = textureArray[i];\n\t\t\t\t\t\tconst texturePromise = this.textureToCanvas(texture, textureOptions).then((canvas)=>{\n\t\t\t\t\t\t\t\tif (canvas) {\n\t\t\t\t\t\t\t\t\t\treturn new Promise((resolve)=>canvas.toBlob(resolve, mimeType, 1)).then((blob)=>blob.arrayBuffer());\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconsole.warn(`Export of texture ${texture.name} is not currently supported.`);\n\t\t\t\t\t\t\t\treturn new Promise((resolve)=>resolve(null));\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromises.push(texturePromise);\n\t\t\t\t}\n\t\t\t\tconst finalData = Promise.all(promises).then((values)=>{\n\t\t\t\t\t\tvalues.forEach((textureArrayBuffer, index)=>{\n\t\t\t\t\t\t\t\tconst texture = textureArray[index];\n\t\t\t\t\t\t\t\tconst ids = this.getTextureFileIds(texture);\n\t\t\t\t\t\t\t\tthis.files[ids.fileName] = new Uint8Array(textureArrayBuffer);\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.alignFiles();\n\t\t\t\t\t\tconst arraybuffer = zipSync(this.files, {\n\t\t\t\t\t\t\t\tlevel: 0\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.done();\n\t\t\t\t\t\treturn arraybuffer;\n\t\t\t\t});\n\t\t\t\treturn finalData;\n\t\t}\n\t\talignFiles() {\n\t\t\t\tlet offset = 0;\n\t\t\t\tfor(const filename in this.files){\n\t\t\t\t\t\tconst file = this.files[filename];\n\t\t\t\t\t\tconst headerSize = 34 + filename.length;\n\t\t\t\t\t\toffset += headerSize;\n\t\t\t\t\t\tconst offsetMod64 = offset & 63;\n\t\t\t\t\t\tif (offsetMod64 !== 4) {\n\t\t\t\t\t\t\t\tconst padLength = 64 - offsetMod64;\n\t\t\t\t\t\t\t\tconst padding = new Uint8Array(padLength);\n\t\t\t\t\t\t\t\tthis.files[filename] = [\n\t\t\t\t\t\t\t\t\t\tfile,\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\textra: {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t12345: padding\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset = file.length;\n\t\t\t\t}\n\t\t}\n\t\tgetFileIds(category, name, ref, extension = 'usda') {\n\t\t\t\tconst fileName = `${category ? `${category}/` : ''}${name}.${extension}`;\n\t\t\t\tconst refName = `@./${fileName}@</${ref}>`;\n\t\t\t\treturn {\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tfileName,\n\t\t\t\t\t\trefName\n\t\t\t\t};\n\t\t}\n\t\tgetTextureFileIds(texture) {\n\t\t\t\treturn this.getFileIds('texture', `Texture_${texture.id}`, 'Texture', 'png');\n\t\t}\n\t\taddFile(category, uniqueId, refName = '', content = '') {\n\t\t\t\tlet contentU8 = null;\n\t\t\t\tif (content) {\n\t\t\t\t\t\tcontent = `${header}\\n${content}`;\n\t\t\t\t\t\tcontentU8 = strToU8(content);\n\t\t\t\t}\n\t\t\t\tconst ids = this.getFileIds(category, uniqueId, refName);\n\t\t\t\tthis.files[ids.fileName] = contentU8;\n\t\t\t\treturn ids.refName;\n\t\t}\n\t\tgetMaterialRef(material) {\n\t\t\t\tlet materialRef = this.materialMap.get(material);\n\t\t\t\tif (!materialRef) {\n\t\t\t\t\t\tmaterialRef = this.buildMaterial(material);\n\t\t\t\t\t\tthis.materialMap.set(material, materialRef);\n\t\t\t\t}\n\t\t\t\treturn materialRef;\n\t\t}\n\t\tgetMeshRef(mesh) {\n\t\t\t\tlet meshRef = this.meshMap.get(mesh);\n\t\t\t\tif (!meshRef) {\n\t\t\t\t\t\tmeshRef = this.buildMesh(mesh);\n\t\t\t\t\t\tthis.meshMap.set(mesh, meshRef);\n\t\t\t\t}\n\t\t\t\treturn meshRef;\n\t\t}\n\t\tbuildArray2(array) {\n\t\t\t\tconst components = [];\n\t\t\t\tconst count = array.length;\n\t\t\t\tfor(let i = 0; i < count; i += 2){\n\t\t\t\t\t\tcomponents.push(`(${array[i]}, ${1 - array[i + 1]})`);\n\t\t\t\t}\n\t\t\t\treturn components.join(', ');\n\t\t}\n\t\tbuildArray3(array) {\n\t\t\t\tconst components = [];\n\t\t\t\tconst count = array.length;\n\t\t\t\tfor(let i = 0; i < count; i += 3){\n\t\t\t\t\t\tcomponents.push(`(${array[i]}, ${array[i + 1]}, ${array[i + 2]})`);\n\t\t\t\t}\n\t\t\t\treturn components.join(', ');\n\t\t}\n\t\tbuildMat4(mat) {\n\t\t\t\tconst data = mat.data;\n\t\t\t\tconst vectors = [];\n\t\t\t\tfor(let i = 0; i < 16; i += 4){\n\t\t\t\t\t\tvectors.push(`(${data[i]}, ${data[i + 1]}, ${data[i + 2]}, ${data[i + 3]})`);\n\t\t\t\t}\n\t\t\t\treturn `( ${vectors.join(', ')} )`;\n\t\t}\n\t\tbuildMaterial(material) {\n\t\t\t\tconst materialName = `Material_${material.id}`;\n\t\t\t\tconst materialPath = `/Materials/${materialName}`;\n\t\t\t\tconst materialPropertyPath = (property)=>`<${materialPath}${property}>`;\n\t\t\t\tconst buildTexture = (texture, textureIds, mapType, uvChannel, tiling, offset, rotation, tintColor)=>{\n\t\t\t\t\t\treturn `\n\t\t\t\t\t\t\t\tdef Shader \"Transform2d_${mapType}\" (\n\t\t\t\t\t\t\t\t\t\tsdrMetadata = {\n\t\t\t\t\t\t\t\t\t\t\t\tstring role = \"math\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdTransform2d\"\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:in.connect = ${materialPropertyPath(`/uvReader_${uvChannel}.outputs:result`)}\n\t\t\t\t\t\t\t\t\t\tfloat inputs:rotation = ${rotation}\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:scale = (${tiling.x}, ${tiling.y})\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:translation = (${offset.x}, ${offset.y})\n\t\t\t\t\t\t\t\t\t\tfloat2 outputs:result\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdef Shader \"Texture_${texture.id}_${mapType}\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdUVTexture\"\n\t\t\t\t\t\t\t\t\t\tasset inputs:file = @${textureIds.fileName}@\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:st.connect = ${materialPropertyPath(`/Transform2d_${mapType}.outputs:result`)}\n\t\t\t\t\t\t\t\t\t\ttoken inputs:wrapS = \"repeat\"\n\t\t\t\t\t\t\t\t\t\ttoken inputs:wrapT = \"repeat\"\n\t\t\t\t\t\t\t\t\t\tfloat4 inputs:scale = (${tintColor.r}, ${tintColor.g}, ${tintColor.b}, ${tintColor.a})\n\t\t\t\t\t\t\t\t\t\tfloat outputs:r\n\t\t\t\t\t\t\t\t\t\tfloat outputs:g\n\t\t\t\t\t\t\t\t\t\tfloat outputs:b\n\t\t\t\t\t\t\t\t\t\tfloat3 outputs:rgb\n\t\t\t\t\t\t\t\t\t\tfloat outputs:a\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t`;\n\t\t\t\t};\n\t\t\t\tconst inputs = [];\n\t\t\t\tconst samplers = [];\n\t\t\t\tconst addTexture = (textureSlot, uniform, propType, propName, valueName, handleOpacity = false, tintTexture = false)=>{\n\t\t\t\t\t\tconst texture = material[textureSlot];\n\t\t\t\t\t\tif (texture) {\n\t\t\t\t\t\t\t\tconst textureIds = this.getTextureFileIds(texture);\n\t\t\t\t\t\t\t\tthis.textureMap.set(texture, textureIds.refName);\n\t\t\t\t\t\t\t\tconst channel = material[`${textureSlot}Channel`] || 'rgb';\n\t\t\t\t\t\t\t\tconst textureValue = materialPropertyPath(`/${textureIds.name}_${valueName}.outputs:${channel}`);\n\t\t\t\t\t\t\t\tinputs.push(materialValueTemplate(propType, `${propName}.connect`, textureValue));\n\t\t\t\t\t\t\t\tif (handleOpacity) {\n\t\t\t\t\t\t\t\t\t\tif (material.alphaTest > 0.0) ;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst tiling = material[`${textureSlot}Tiling`];\n\t\t\t\t\t\t\t\tconst offset = material[`${textureSlot}Offset`];\n\t\t\t\t\t\t\t\tconst rotation = material[`${textureSlot}Rotation`];\n\t\t\t\t\t\t\t\tconst uvChannel = material[`${textureSlot}Uv`] === 1 ? 'st1' : 'st';\n\t\t\t\t\t\t\t\tconst tintColor = tintTexture && uniform ? uniform : Color.WHITE;\n\t\t\t\t\t\t\t\tsamplers.push(buildTexture(texture, textureIds, valueName, uvChannel, tiling, offset, rotation, tintColor));\n\t\t\t\t\t\t} else if (uniform) {\n\t\t\t\t\t\t\t\tconst value = propType === 'float' ? `${uniform}` : `(${uniform.r}, ${uniform.g}, ${uniform.b})`;\n\t\t\t\t\t\t\t\tinputs.push(materialValueTemplate(propType, propName, value));\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\taddTexture('diffuseMap', material.diffuse, 'color3f', 'diffuseColor', 'diffuse', false, true);\n\t\t\t\tif (material.transparent || material.alphaTest > 0.0) {\n\t\t\t\t\t\taddTexture('opacityMap', material.opacity, 'float', 'opacity', 'opacity', true);\n\t\t\t\t}\n\t\t\t\taddTexture('normalMap', null, 'normal3f', 'normal', 'normal');\n\t\t\t\taddTexture('emissiveMap', material.emissive, 'color3f', 'emissiveColor', 'emissive', false, true);\n\t\t\t\taddTexture('aoMap', null, 'float', 'occlusion', 'occlusion');\n\t\t\t\taddTexture('metalnessMap', material.metalness, 'float', 'metallic', 'metallic');\n\t\t\t\taddTexture('glossMap', material.gloss, 'float', 'roughness', 'roughness');\n\t\t\t\tconst materialObject = `\n\t\t\t\t\t\tdef Material \"${materialName}\"\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdef Shader \"PreviewSurface\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdPreviewSurface\"\n${inputs.join('\\n')}\n\t\t\t\t\t\t\t\t\t\tint inputs:useSpecularWorkflow = 0\n\t\t\t\t\t\t\t\t\t\ttoken outputs:surface\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\ttoken outputs:surface.connect = ${materialPropertyPath('/PreviewSurface.outputs:surface')}\n\n\t\t\t\t\t\t\t\tdef Shader \"uvReader_st\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdPrimvarReader_float2\"\n\t\t\t\t\t\t\t\t\t\ttoken inputs:varname = \"st\"\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:fallback = (0.0, 0.0)\n\t\t\t\t\t\t\t\t\t\tfloat2 outputs:result\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tdef Shader \"uvReader_st1\"\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tuniform token info:id = \"UsdPrimvarReader_float2\"\n\t\t\t\t\t\t\t\t\t\ttoken inputs:varname = \"st1\"\n\t\t\t\t\t\t\t\t\t\tfloat2 inputs:fallback = (0.0, 0.0)\n\t\t\t\t\t\t\t\t\t\tfloat2 outputs:result\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t${samplers.join('\\n')}\n\t\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t\tthis.materials.push(materialObject);\n\t\t\t\treturn materialPropertyPath('');\n\t\t}\n\t\tbuildMesh(mesh) {\n\t\t\t\tlet positions = [];\n\t\t\t\tconst indices = [];\n\t\t\t\tlet normals = [];\n\t\t\t\tlet uv0 = [];\n\t\t\t\tlet uv1 = [];\n\t\t\t\tmesh.getVertexStream(SEMANTIC_POSITION, positions);\n\t\t\t\tmesh.getVertexStream(SEMANTIC_NORMAL, normals);\n\t\t\t\tmesh.getVertexStream(SEMANTIC_TEXCOORD0, uv0);\n\t\t\t\tmesh.getVertexStream(SEMANTIC_TEXCOORD1, uv1);\n\t\t\t\tmesh.getIndices(indices);\n\t\t\t\tconst indicesCount = indices.length || positions.length;\n\t\t\t\tconst faceVertexCounts = Array(indicesCount / 3).fill(3).join(', ');\n\t\t\t\tif (!indices.length) {\n\t\t\t\t\t\tfor(let i = 0; i < indicesCount; i++){\n\t\t\t\t\t\t\t\tindices[i] = i;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst numVerts = positions.length / 3;\n\t\t\t\tnormals = normals.length ? normals : Array(numVerts * 3).fill(0);\n\t\t\t\tuv0 = uv0.length ? uv0 : Array(numVerts * 2).fill(0);\n\t\t\t\tuv1 = uv1.length ? uv1 : Array(numVerts * 2).fill(0);\n\t\t\t\tpositions = this.buildArray3(positions);\n\t\t\t\tnormals = this.buildArray3(normals);\n\t\t\t\tuv0 = this.buildArray2(uv0);\n\t\t\t\tuv1 = this.buildArray2(uv1);\n\t\t\t\tconst meshObject = meshTemplate(faceVertexCounts, indices, normals, positions, uv0, uv1);\n\t\t\t\tconst refPath = this.addFile('mesh', `Mesh_${mesh.id}`, 'Mesh', meshObject);\n\t\t\t\treturn refPath;\n\t\t}\n\t\tbuildMeshInstance(meshInstance) {\n\t\t\t\tconst meshRefPath = this.getMeshRef(meshInstance.mesh);\n\t\t\t\tconst materialRefPath = this.getMaterialRef(meshInstance.material);\n\t\t\t\tconst worldMatrix = this.buildMat4(meshInstance.node.getWorldTransform());\n\t\t\t\tconst name = meshInstance.node.name.replace(/[^a-z0-9]/gi, '_');\n\t\t\t\tlet nodeName = name;\n\t\t\t\twhile(this.nodeNames.has(nodeName)){\n\t\t\t\t\t\tnodeName = `${name}_${Math.random().toString(36).slice(2, 7)}`;\n\t\t\t\t}\n\t\t\t\tthis.nodeNames.add(nodeName);\n\t\t\t\treturn meshInstanceTemplate(nodeName, meshRefPath, worldMatrix, materialRefPath);\n\t\t}\n}\n\nconst ARRAY_BUFFER = 34962;\nconst ELEMENT_ARRAY_BUFFER = 34963;\nconst getIndexComponentType = (indexFormat)=>{\n\t\tswitch(indexFormat){\n\t\t\t\tcase INDEXFORMAT_UINT8:\n\t\t\t\t\t\treturn 5121;\n\t\t\t\tcase INDEXFORMAT_UINT16:\n\t\t\t\t\t\treturn 5123;\n\t\t\t\tcase INDEXFORMAT_UINT32:\n\t\t\t\t\t\treturn 5125;\n\t\t}\n\t\treturn 0;\n};\nconst getComponentType = (dataType)=>{\n\t\tswitch(dataType){\n\t\t\t\tcase TYPE_INT8:\n\t\t\t\t\t\treturn 5120;\n\t\t\t\tcase TYPE_UINT8:\n\t\t\t\t\t\treturn 5121;\n\t\t\t\tcase TYPE_INT16:\n\t\t\t\t\t\treturn 5122;\n\t\t\t\tcase TYPE_UINT16:\n\t\t\t\t\t\treturn 5123;\n\t\t\t\tcase TYPE_INT32:\n\t\t\t\t\t\treturn 5124;\n\t\t\t\tcase TYPE_UINT32:\n\t\t\t\t\t\treturn 5125;\n\t\t\t\tcase TYPE_FLOAT32:\n\t\t\t\t\t\treturn 5126;\n\t\t}\n\t\treturn 0;\n};\nconst getAccessorType = (componentCount)=>{\n\t\tswitch(componentCount){\n\t\t\t\tcase 1:\n\t\t\t\t\t\treturn 'SCALAR';\n\t\t\t\tcase 2:\n\t\t\t\t\t\treturn 'VEC2';\n\t\t\t\tcase 3:\n\t\t\t\t\t\treturn 'VEC3';\n\t\t\t\tcase 4:\n\t\t\t\t\t\treturn 'VEC4';\n\t\t}\n\t\treturn 0;\n};\nconst getSemantic = (engineSemantic)=>{\n\t\tswitch(engineSemantic){\n\t\t\t\tcase SEMANTIC_POSITION:\n\t\t\t\t\t\treturn 'POSITION';\n\t\t\t\tcase SEMANTIC_NORMAL:\n\t\t\t\t\t\treturn 'NORMAL';\n\t\t\t\tcase SEMANTIC_TANGENT:\n\t\t\t\t\t\treturn 'TANGENT';\n\t\t\t\tcase SEMANTIC_COLOR:\n\t\t\t\t\t\treturn 'COLOR_0';\n\t\t\t\tcase SEMANTIC_BLENDINDICES:\n\t\t\t\t\t\treturn 'JOINTS_0';\n\t\t\t\tcase SEMANTIC_BLENDWEIGHT:\n\t\t\t\t\t\treturn 'WEIGHTS_0';\n\t\t\t\tcase SEMANTIC_TEXCOORD0:\n\t\t\t\t\t\treturn 'TEXCOORD_0';\n\t\t\t\tcase SEMANTIC_TEXCOORD1:\n\t\t\t\t\t\treturn 'TEXCOORD_1';\n\t\t\t\tcase SEMANTIC_TEXCOORD2:\n\t\t\t\t\t\treturn 'TEXCOORD_2';\n\t\t\t\tcase SEMANTIC_TEXCOORD3:\n\t\t\t\t\t\treturn 'TEXCOORD_3';\n\t\t\t\tcase SEMANTIC_TEXCOORD4:\n\t\t\t\t\t\treturn 'TEXCOORD_4';\n\t\t\t\tcase SEMANTIC_TEXCOORD5:\n\t\t\t\t\t\treturn 'TEXCOORD_5';\n\t\t\t\tcase SEMANTIC_TEXCOORD6:\n\t\t\t\t\t\treturn 'TEXCOORD_6';\n\t\t\t\tcase SEMANTIC_TEXCOORD7:\n\t\t\t\t\t\treturn 'TEXCOORD_7';\n\t\t}\n\t\treturn '';\n};\nconst getFilter = function(filter) {\n\t\tswitch(filter){\n\t\t\t\tcase FILTER_NEAREST:\n\t\t\t\t\t\treturn 9728;\n\t\t\t\tcase FILTER_LINEAR:\n\t\t\t\t\t\treturn 9729;\n\t\t\t\tcase FILTER_NEAREST_MIPMAP_NEAREST:\n\t\t\t\t\t\treturn 9984;\n\t\t\t\tcase FILTER_LINEAR_MIPMAP_NEAREST:\n\t\t\t\t\t\treturn 9985;\n\t\t\t\tcase FILTER_NEAREST_MIPMAP_LINEAR:\n\t\t\t\t\t\treturn 9986;\n\t\t\t\tcase FILTER_LINEAR_MIPMAP_LINEAR:\n\t\t\t\t\t\treturn 9987;\n\t\t}\n\t\treturn 0;\n};\nconst getWrap = function(wrap) {\n\t\tswitch(wrap){\n\t\t\t\tcase ADDRESS_CLAMP_TO_EDGE:\n\t\t\t\t\t\treturn 33071;\n\t\t\t\tcase ADDRESS_MIRRORED_REPEAT:\n\t\t\t\t\t\treturn 33648;\n\t\t\t\tcase ADDRESS_REPEAT:\n\t\t\t\t\t\treturn 10497;\n\t\t}\n\t\treturn 0;\n};\nfunction isCanvasTransparent(canvas) {\n\t\tconst context = canvas.getContext('2d');\n\t\tconst pixelData = context.getImageData(0, 0, canvas.width, canvas.height).data;\n\t\tfor(let i = 3; i < pixelData.length; i += 4){\n\t\t\t\tif (pixelData[i] < 255) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t}\n\t\treturn false;\n}\nconst textureSemantics = [\n\t\t'diffuseMap',\n\t\t'colorMap',\n\t\t'normalMap',\n\t\t'metalnessMap',\n\t\t'emissiveMap'\n];\nclass GltfExporter extends CoreExporter {\n\t\tcollectResources(root) {\n\t\t\t\tconst resources = {\n\t\t\t\t\t\tbuffers: [],\n\t\t\t\t\t\tcameras: [],\n\t\t\t\t\t\tentities: [],\n\t\t\t\t\t\tmaterials: [],\n\t\t\t\t\t\tskins: [],\n\t\t\t\t\t\ttextures: [],\n\t\t\t\t\t\tentityMeshInstances: [],\n\t\t\t\t\t\tbufferViewMap: new Map(),\n\t\t\t\t\t\tcompressableTexture: new Set()\n\t\t\t\t};\n\t\t\t\tconst { materials, buffers, entityMeshInstances, textures } = resources;\n\t\t\t\troot.forEach((entity)=>{\n\t\t\t\t\t\tresources.entities.push(entity);\n\t\t\t\t});\n\t\t\t\tconst collectMeshInstances = (meshInstances)=>{\n\t\t\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\t\t\tconst material = meshInstance.material;\n\t\t\t\t\t\t\t\tif (materials.indexOf(material) < 0) {\n\t\t\t\t\t\t\t\t\t\tresources.materials.push(material);\n\t\t\t\t\t\t\t\t\t\ttextureSemantics.forEach((semantic)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tconst texture = material[semantic];\n\t\t\t\t\t\t\t\t\t\t\t\tif (texture && textures.indexOf(texture) < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tif (semantic !== 'normalMap') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tresources.compressableTexture.add(texture);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttextures.push(texture);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst node = meshInstance.node;\n\t\t\t\t\t\t\t\tlet nodeMeshInstances = entityMeshInstances.find((e)=>e.node === node);\n\t\t\t\t\t\t\t\tif (!nodeMeshInstances) {\n\t\t\t\t\t\t\t\t\t\tnodeMeshInstances = {\n\t\t\t\t\t\t\t\t\t\t\t\tnode: node,\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances: []\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t\t\tentityMeshInstances.push(nodeMeshInstances);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnodeMeshInstances.meshInstances.push(meshInstance);\n\t\t\t\t\t\t\t\tconst mesh = meshInstance.mesh;\n\t\t\t\t\t\t\t\tconst vertexBuffer = mesh.vertexBuffer;\n\t\t\t\t\t\t\t\tif (buffers.indexOf(vertexBuffer) < 0) {\n\t\t\t\t\t\t\t\t\t\tbuffers.unshift(vertexBuffer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst indexBuffer = mesh.indexBuffer[0];\n\t\t\t\t\t\t\t\tif (buffers.indexOf(indexBuffer) < 0) {\n\t\t\t\t\t\t\t\t\t\tbuffers.push(indexBuffer);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mesh.skin && resources.skins.indexOf(mesh.skin) < 0) {\n\t\t\t\t\t\t\t\t\t\tresources.skins.push(mesh.skin);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t};\n\t\t\t\tresources.entities.forEach((entity)=>{\n\t\t\t\t\t\tif (entity.camera) {\n\t\t\t\t\t\t\t\tresources.cameras.push(entity.camera);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (entity.render && entity.render.enabled) {\n\t\t\t\t\t\t\t\tcollectMeshInstances(entity.render.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (entity.model && entity.model.enabled && entity.model.meshInstances) {\n\t\t\t\t\t\t\t\tcollectMeshInstances(entity.model.meshInstances);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn resources;\n\t\t}\n\t\twriteBufferViews(resources, json) {\n\t\t\t\tjson.bufferViews = [];\n\t\t\t\tfor (const buffer of resources.buffers){\n\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, buffer);\n\t\t\t\t}\n\t\t}\n\t\tstatic writeBufferView(resources, json, buffer) {\n\t\t\t\tjson.buffers = json.buffers ?? [];\n\t\t\t\tjson.buffers[0] = json.buffers[0] ?? {\n\t\t\t\t\t\tbyteLength: 0\n\t\t\t\t};\n\t\t\t\tconst bufferInfo = json.buffers[0];\n\t\t\t\tbufferInfo.byteLength = math.roundUp(bufferInfo.byteLength, 4);\n\t\t\t\tconst offset = bufferInfo.byteLength;\n\t\t\t\tconst addBufferView = (target, byteLength, byteOffset, byteStride)=>{\n\t\t\t\t\t\tconst bufferView = {\n\t\t\t\t\t\t\t\tbuffer: 0,\n\t\t\t\t\t\t\t\tbyteLength: byteLength,\n\t\t\t\t\t\t\t\tbyteOffset: byteOffset\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (target === ARRAY_BUFFER || target === ELEMENT_ARRAY_BUFFER) {\n\t\t\t\t\t\t\t\tbufferView.target = target;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (byteStride !== undefined) {\n\t\t\t\t\t\t\t\tbufferView.byteStride = byteStride;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn json.bufferViews.push(bufferView) - 1;\n\t\t\t\t};\n\t\t\t\tlet arrayBuffer;\n\t\t\t\tif (buffer instanceof VertexBuffer) {\n\t\t\t\t\t\tarrayBuffer = buffer.lock();\n\t\t\t\t\t\tconst format = buffer.getFormat();\n\t\t\t\t\t\tif (format.interleaved) {\n\t\t\t\t\t\t\t\tconst bufferViewIndex = addBufferView(ARRAY_BUFFER, arrayBuffer.byteLength, offset, format.size);\n\t\t\t\t\t\t\t\tresources.bufferViewMap.set(buffer, [\n\t\t\t\t\t\t\t\t\t\tbufferViewIndex\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst bufferViewIndices = [];\n\t\t\t\t\t\t\t\tfor (const element of format.elements){\n\t\t\t\t\t\t\t\t\t\tconst bufferViewIndex = addBufferView(ARRAY_BUFFER, element.size * format.vertexCount, offset + element.offset, element.size);\n\t\t\t\t\t\t\t\t\t\tbufferViewIndices.push(bufferViewIndex);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tresources.bufferViewMap.set(buffer, bufferViewIndices);\n\t\t\t\t\t\t}\n\t\t\t\t} else if (buffer instanceof IndexBuffer) {\n\t\t\t\t\t\tarrayBuffer = buffer.lock();\n\t\t\t\t\t\tconst bufferViewIndex = addBufferView(ELEMENT_ARRAY_BUFFER, arrayBuffer.byteLength, offset);\n\t\t\t\t\t\tresources.bufferViewMap.set(buffer, [\n\t\t\t\t\t\t\t\tbufferViewIndex\n\t\t\t\t\t\t]);\n\t\t\t\t} else {\n\t\t\t\t\t\tarrayBuffer = buffer;\n\t\t\t\t\t\tconst bufferViewIndex = addBufferView(undefined, arrayBuffer.byteLength, offset);\n\t\t\t\t\t\tresources.bufferViewMap.set(buffer, [\n\t\t\t\t\t\t\t\tbufferViewIndex\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tbufferInfo.byteLength += arrayBuffer.byteLength;\n\t\t}\n\t\twriteCameras(resources, json) {\n\t\t\t\tif (resources.cameras.length > 0) {\n\t\t\t\t\t\tjson.cameras = resources.cameras.map((cam)=>{\n\t\t\t\t\t\t\t\tconst projection = cam.projection;\n\t\t\t\t\t\t\t\tconst nearClip = cam.nearClip;\n\t\t\t\t\t\t\t\tconst farClip = cam.farClip;\n\t\t\t\t\t\t\t\tconst camera = {};\n\t\t\t\t\t\t\t\tif (projection === PROJECTION_ORTHOGRAPHIC) {\n\t\t\t\t\t\t\t\t\t\tcamera.type = 'orthographic';\n\t\t\t\t\t\t\t\t\t\tcamera.orthographic = {\n\t\t\t\t\t\t\t\t\t\t\t\txmag: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tymag: 1,\n\t\t\t\t\t\t\t\t\t\t\t\tznear: nearClip,\n\t\t\t\t\t\t\t\t\t\t\t\tzfar: farClip\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\tconst fov = cam.fov;\n\t\t\t\t\t\t\t\t\t\tcamera.type = 'perspective';\n\t\t\t\t\t\t\t\t\t\tcamera.perspective = {\n\t\t\t\t\t\t\t\t\t\t\t\tyfov: fov * Math.PI / 180,\n\t\t\t\t\t\t\t\t\t\t\t\tznear: nearClip,\n\t\t\t\t\t\t\t\t\t\t\t\tzfar: farClip\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn camera;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tattachTexture(resources, material, destination, name, textureSemantic, json) {\n\t\t\t\tconst texture = material[textureSemantic];\n\t\t\t\tif (texture) {\n\t\t\t\t\t\tconst textureIndex = resources.textures.indexOf(texture);\n\t\t\t\t\t\tif (textureIndex < 0) console.warn(`Texture ${texture.name} wasn't collected.`);\n\t\t\t\t\t\tdestination[name] = {\n\t\t\t\t\t\t\t\tindex: textureIndex\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst scale = material[`${textureSemantic}Tiling`];\n\t\t\t\t\t\tconst offset = material[`${textureSemantic}Offset`];\n\t\t\t\t\t\tconst rotation = material[`${textureSemantic}Rotation`];\n\t\t\t\t\t\tif (scale && !scale.equals(Vec2.ONE) || offset && !offset.equals(Vec2.ZERO) || rotation !== 0) {\n\t\t\t\t\t\t\t\tdestination[name].extensions = {\n\t\t\t\t\t\t\t\t\t\tKHR_texture_transform: {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tjson.extensionsUsed = json.extensionsUsed ?? [];\n\t\t\t\t\t\t\t\tif (json.extensionsUsed.indexOf('KHR_texture_transform') < 0) {\n\t\t\t\t\t\t\t\t\t\tjson.extensionsUsed.push('KHR_texture_transform');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tjson.extensionsRequired = json.extensionsRequired ?? [];\n\t\t\t\t\t\t\t\tif (json.extensionsRequired.indexOf('KHR_texture_transform') < 0) {\n\t\t\t\t\t\t\t\t\t\tjson.extensionsRequired.push('KHR_texture_transform');\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (scale && !scale.equals(Vec2.ONE)) {\n\t\t\t\t\t\t\t\t\t\tdestination[name].extensions.KHR_texture_transform.scale = [\n\t\t\t\t\t\t\t\t\t\t\t\tscale.x,\n\t\t\t\t\t\t\t\t\t\t\t\tscale.y\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (offset && !offset.equals(Vec2.ZERO)) {\n\t\t\t\t\t\t\t\t\t\tdestination[name].extensions.KHR_texture_transform.offset = [\n\t\t\t\t\t\t\t\t\t\t\t\toffset.x,\n\t\t\t\t\t\t\t\t\t\t\t\toffset.y - 1 + scale.y\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (rotation !== 0) {\n\t\t\t\t\t\t\t\t\t\tdestination[name].extensions.KHR_texture_transform.rotation = rotation * math.DEG_TO_RAD;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\twriteStandardMaterial(resources, mat, output, json) {\n\t\t\t\tconst { diffuse, emissive, opacity, metalness, gloss, glossInvert } = mat;\n\t\t\t\tconst pbr = output.pbrMetallicRoughness;\n\t\t\t\tif (!diffuse.equals(Color.WHITE) || opacity !== 1) {\n\t\t\t\t\t\tpbr.baseColorFactor = [\n\t\t\t\t\t\t\t\tdiffuse.r,\n\t\t\t\t\t\t\t\tdiffuse.g,\n\t\t\t\t\t\t\t\tdiffuse.b,\n\t\t\t\t\t\t\t\topacity\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tif (metalness !== 1) {\n\t\t\t\t\t\tpbr.metallicFactor = metalness;\n\t\t\t\t}\n\t\t\t\tconst roughness = glossInvert ? gloss : 1 - gloss;\n\t\t\t\tif (roughness !== 1) {\n\t\t\t\t\t\tpbr.roughnessFactor = roughness;\n\t\t\t\t}\n\t\t\t\tthis.attachTexture(resources, mat, pbr, 'baseColorTexture', 'diffuseMap', json);\n\t\t\t\tthis.attachTexture(resources, mat, pbr, 'metallicRoughnessTexture', 'metalnessMap', json);\n\t\t\t\tif (!emissive.equals(Color.BLACK)) {\n\t\t\t\t\t\toutput.emissiveFactor = [\n\t\t\t\t\t\t\t\temissive.r,\n\t\t\t\t\t\t\t\temissive.g,\n\t\t\t\t\t\t\t\temissive.b\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t}\n\t\twriteMaterials(resources, json) {\n\t\t\t\tif (resources.materials.length > 0) {\n\t\t\t\t\t\tjson.materials = resources.materials.map((mat)=>{\n\t\t\t\t\t\t\t\tconst { name, blendType, cull, alphaTest } = mat;\n\t\t\t\t\t\t\t\tconst material = {\n\t\t\t\t\t\t\t\t\t\tpbrMetallicRoughness: {}\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tif (name && name.length > 0) {\n\t\t\t\t\t\t\t\t\t\tmaterial.name = name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (mat instanceof StandardMaterial) {\n\t\t\t\t\t\t\t\t\t\tthis.writeStandardMaterial(resources, mat, material, json);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (blendType === BLEND_NORMAL) {\n\t\t\t\t\t\t\t\t\t\tmaterial.alphaMode = 'BLEND';\n\t\t\t\t\t\t\t\t} else if (blendType === BLEND_NONE) {\n\t\t\t\t\t\t\t\t\t\tif (alphaTest !== 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tmaterial.alphaMode = 'MASK';\n\t\t\t\t\t\t\t\t\t\t\t\tmaterial.alphaCutoff = alphaTest;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (cull === CULLFACE_NONE) {\n\t\t\t\t\t\t\t\t\t\tmaterial.doubleSided = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tthis.attachTexture(resources, mat, material, 'normalTexture', 'normalMap', json);\n\t\t\t\t\t\t\t\tthis.attachTexture(resources, mat, material, 'occlusionTexture', 'aoMap', json);\n\t\t\t\t\t\t\t\tthis.attachTexture(resources, mat, material, 'emissiveTexture', 'emissiveMap', json);\n\t\t\t\t\t\t\t\treturn material;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\twriteNodes(resources, json) {\n\t\t\t\tif (resources.entities.length > 0) {\n\t\t\t\t\t\tjson.nodes = resources.entities.map((entity)=>{\n\t\t\t\t\t\t\t\tconst name = entity.name;\n\t\t\t\t\t\t\t\tconst t = entity.getLocalPosition();\n\t\t\t\t\t\t\t\tconst r = entity.getLocalRotation();\n\t\t\t\t\t\t\t\tconst s = entity.getLocalScale();\n\t\t\t\t\t\t\t\tconst node = {};\n\t\t\t\t\t\t\t\tif (name && name.length > 0) {\n\t\t\t\t\t\t\t\t\t\tnode.name = name;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!t.equals(Vec3.ZERO)) {\n\t\t\t\t\t\t\t\t\t\tnode.translation = [\n\t\t\t\t\t\t\t\t\t\t\t\tt.x,\n\t\t\t\t\t\t\t\t\t\t\t\tt.y,\n\t\t\t\t\t\t\t\t\t\t\t\tt.z\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!r.equals(Quat.IDENTITY)) {\n\t\t\t\t\t\t\t\t\t\tnode.rotation = [\n\t\t\t\t\t\t\t\t\t\t\t\tr.x,\n\t\t\t\t\t\t\t\t\t\t\t\tr.y,\n\t\t\t\t\t\t\t\t\t\t\t\tr.z,\n\t\t\t\t\t\t\t\t\t\t\t\tr.w\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!s.equals(Vec3.ONE)) {\n\t\t\t\t\t\t\t\t\t\tnode.scale = [\n\t\t\t\t\t\t\t\t\t\t\t\ts.x,\n\t\t\t\t\t\t\t\t\t\t\t\ts.y,\n\t\t\t\t\t\t\t\t\t\t\t\ts.z\n\t\t\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (entity.camera && entity.camera.enabled) {\n\t\t\t\t\t\t\t\t\t\tnode.camera = resources.cameras.indexOf(entity.camera);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst entityMeshInstance = resources.entityMeshInstances.find((e)=>e.node === entity);\n\t\t\t\t\t\t\t\tif (entityMeshInstance) {\n\t\t\t\t\t\t\t\t\t\tnode.mesh = resources.entityMeshInstances.indexOf(entityMeshInstance);\n\t\t\t\t\t\t\t\t\t\tconst meshInstance = entityMeshInstance.meshInstances[0];\n\t\t\t\t\t\t\t\t\t\tif (meshInstance && meshInstance.mesh.skin) {\n\t\t\t\t\t\t\t\t\t\t\t\tnode.skin = resources.skins.indexOf(meshInstance.mesh.skin);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (entity.children.length > 0) {\n\t\t\t\t\t\t\t\t\t\tnode.children = [];\n\t\t\t\t\t\t\t\t\t\tentity.children.forEach((child)=>{\n\t\t\t\t\t\t\t\t\t\t\t\tnode.children.push(resources.entities.indexOf(child));\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\twriteMeshes(resources, json, options) {\n\t\t\t\tif (resources.entityMeshInstances.length > 0) {\n\t\t\t\t\t\tjson.accessors = [];\n\t\t\t\t\t\tjson.meshes = [];\n\t\t\t\t\t\tresources.entityMeshInstances.forEach((entityMeshInstances)=>{\n\t\t\t\t\t\t\t\tconst mesh = {\n\t\t\t\t\t\t\t\t\t\tprimitives: []\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst meshInstances = entityMeshInstances.meshInstances;\n\t\t\t\t\t\t\t\tmeshInstances.forEach((meshInstance)=>{\n\t\t\t\t\t\t\t\t\t\tconst primitive = GltfExporter.createPrimitive(resources, json, meshInstance.mesh, options);\n\t\t\t\t\t\t\t\t\t\tprimitive.material = resources.materials.indexOf(meshInstance.material);\n\t\t\t\t\t\t\t\t\t\tmesh.primitives.push(primitive);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tjson.meshes.push(mesh);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tstatic createPrimitive(resources, json, mesh, options = {}) {\n\t\t\t\tconst primitive = {\n\t\t\t\t\t\tattributes: {}\n\t\t\t\t};\n\t\t\t\tconst { vertexBuffer } = mesh;\n\t\t\t\tconst { format } = vertexBuffer;\n\t\t\t\tconst { interleaved, elements } = format;\n\t\t\t\tconst numVertices = vertexBuffer.getNumVertices();\n\t\t\t\telements.forEach((element, elementIndex)=>{\n\t\t\t\t\t\tconst semantic = getSemantic(element.name);\n\t\t\t\t\t\tif (options.stripUnusedAttributes) {\n\t\t\t\t\t\t\t\tlet isUsed = true;\n\t\t\t\t\t\t\t\tif (semantic.startsWith('TEXCOORD_')) {\n\t\t\t\t\t\t\t\t\t\tconst texCoordIndex = parseInt(semantic.split('_')[1], 10);\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.materials.some((material)=>{\n\t\t\t\t\t\t\t\t\t\t\t\treturn textureSemantics.some((texSemantic)=>{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tconst texture = material[texSemantic];\n\t\t\t\t\t\t\t\t\t\t\t\t\t\treturn texture && (texCoordIndex === 0 || material[`${texSemantic}Tiling`]?.uv === texCoordIndex);\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (semantic === 'COLOR_0') {\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.materials.some((material)=>material.vertexColors);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (semantic === 'TANGENT') {\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.materials.some((material)=>material.normalMap);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (semantic === 'JOINTS_0' || semantic === 'WEIGHTS_0') {\n\t\t\t\t\t\t\t\t\t\tisUsed = resources.entityMeshInstances.some((emi)=>emi.meshInstances.some((mi)=>mi.mesh.skin));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (!isUsed) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlet bufferView = resources.bufferViewMap.get(vertexBuffer);\n\t\t\t\t\t\tif (!bufferView) {\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, vertexBuffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(vertexBuffer);\n\t\t\t\t\t\t\t\tbufferView = resources.bufferViewMap.get(vertexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewIndex = bufferView[interleaved ? 0 : elementIndex];\n\t\t\t\t\t\tconst accessor = {\n\t\t\t\t\t\t\t\tbufferView: viewIndex,\n\t\t\t\t\t\t\t\tbyteOffset: interleaved ? element.offset : 0,\n\t\t\t\t\t\t\t\tcomponentType: getComponentType(element.dataType),\n\t\t\t\t\t\t\t\ttype: getAccessorType(element.numComponents),\n\t\t\t\t\t\t\t\tcount: numVertices\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst idx = json.accessors.push(accessor) - 1;\n\t\t\t\t\t\tprimitive.attributes[semantic] = idx;\n\t\t\t\t\t\tif (element.name === SEMANTIC_POSITION) {\n\t\t\t\t\t\t\t\tconst positions = [];\n\t\t\t\t\t\t\t\tmesh.getPositions(positions);\n\t\t\t\t\t\t\t\tconst min = new Vec3();\n\t\t\t\t\t\t\t\tconst max = new Vec3();\n\t\t\t\t\t\t\t\tBoundingBox.computeMinMax(positions, min, max);\n\t\t\t\t\t\t\t\taccessor.min = [\n\t\t\t\t\t\t\t\t\t\tmin.x,\n\t\t\t\t\t\t\t\t\t\tmin.y,\n\t\t\t\t\t\t\t\t\t\tmin.z\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t\t\taccessor.max = [\n\t\t\t\t\t\t\t\t\t\tmax.x,\n\t\t\t\t\t\t\t\t\t\tmax.y,\n\t\t\t\t\t\t\t\t\t\tmax.z\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tconst indexBuffer = mesh.indexBuffer[0];\n\t\t\t\tif (indexBuffer) {\n\t\t\t\t\t\tlet bufferView = resources.bufferViewMap.get(indexBuffer);\n\t\t\t\t\t\tif (!bufferView) {\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, indexBuffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(indexBuffer);\n\t\t\t\t\t\t\t\tbufferView = resources.bufferViewMap.get(indexBuffer);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst viewIndex = bufferView[0];\n\t\t\t\t\t\tconst accessor = {\n\t\t\t\t\t\t\t\tbufferView: viewIndex,\n\t\t\t\t\t\t\t\tcomponentType: getIndexComponentType(indexBuffer.getFormat()),\n\t\t\t\t\t\t\t\tcount: indexBuffer.getNumIndices(),\n\t\t\t\t\t\t\t\ttype: 'SCALAR'\n\t\t\t\t\t\t};\n\t\t\t\t\t\tconst idx = json.accessors.push(accessor) - 1;\n\t\t\t\t\t\tprimitive.indices = idx;\n\t\t\t\t}\n\t\t\t\treturn primitive;\n\t\t}\n\t\twriteSkins(resources, json) {\n\t\t\t\tif (resources.skins.length > 0) {\n\t\t\t\t\t\tjson.skins = resources.skins.map((skin)=>{\n\t\t\t\t\t\t\t\tconst matrices = new Float32Array(skin.inverseBindPose.length * 16);\n\t\t\t\t\t\t\t\tfor(let i = 0; i < skin.inverseBindPose.length; i++){\n\t\t\t\t\t\t\t\t\t\tconst ibm = skin.inverseBindPose[i];\n\t\t\t\t\t\t\t\t\t\tmatrices.set(ibm.data, i * 16);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst matrixBuffer = matrices.buffer;\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, matrixBuffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(matrixBuffer);\n\t\t\t\t\t\t\t\tconst bufferView = resources.bufferViewMap.get(matrixBuffer);\n\t\t\t\t\t\t\t\tconst accessor = {\n\t\t\t\t\t\t\t\t\t\tbufferView: bufferView[0],\n\t\t\t\t\t\t\t\t\t\tcomponentType: getComponentType(TYPE_FLOAT32),\n\t\t\t\t\t\t\t\t\t\tcount: skin.inverseBindPose.length,\n\t\t\t\t\t\t\t\t\t\ttype: 'MAT4'\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tconst accessorIndex = json.accessors.push(accessor) - 1;\n\t\t\t\t\t\t\t\tconst joints = skin.boneNames.map((boneName)=>{\n\t\t\t\t\t\t\t\t\t\tconst node = resources.entities.find((entity)=>entity.name === boneName);\n\t\t\t\t\t\t\t\t\t\treturn resources.entities.indexOf(node);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\t\t\tinverseBindMatrices: accessorIndex,\n\t\t\t\t\t\t\t\t\t\tjoints: joints\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t}\n\t\tconvertTextures(srcTextures, options) {\n\t\t\t\tconst textureOptions = {\n\t\t\t\t\t\tmaxTextureSize: options.maxTextureSize\n\t\t\t\t};\n\t\t\t\tconst promises = [];\n\t\t\t\tsrcTextures.forEach((srcTexture)=>{\n\t\t\t\t\t\tconst promise = this.textureToCanvas(srcTexture, textureOptions);\n\t\t\t\t\t\tpromise.then((canvas)=>{\n\t\t\t\t\t\t\t\treturn new Promise((resolve)=>resolve(canvas));\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpromises.push(promise);\n\t\t\t\t});\n\t\t\t\treturn promises;\n\t\t}\n\t\twriteTextures(resources, textureCanvases, json, options) {\n\t\t\t\tconst textures = resources.textures;\n\t\t\t\tconst promises = [];\n\t\t\t\tfor(let i = 0; i < textureCanvases.length; i++){\n\t\t\t\t\t\tconst texture = textures[i];\n\t\t\t\t\t\tconst canvas = textureCanvases[i];\n\t\t\t\t\t\tconst isRGBA = isCanvasTransparent(canvas) || !resources.compressableTexture.has(texture);\n\t\t\t\t\t\tconst mimeType = isRGBA ? 'image/png' : 'image/jpeg';\n\t\t\t\t\t\tpromises.push(this.getBlob(canvas, mimeType).then((blob)=>{\n\t\t\t\t\t\t\t\tconst reader = new FileReader();\n\t\t\t\t\t\t\t\treader.readAsArrayBuffer(blob);\n\t\t\t\t\t\t\t\treturn new Promise((resolve)=>{\n\t\t\t\t\t\t\t\t\t\treader.onloadend = ()=>{\n\t\t\t\t\t\t\t\t\t\t\t\tresolve(reader);\n\t\t\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}).then((reader)=>{\n\t\t\t\t\t\t\t\tconst buffer = this.getPaddedArrayBuffer(reader.result);\n\t\t\t\t\t\t\t\tGltfExporter.writeBufferView(resources, json, buffer);\n\t\t\t\t\t\t\t\tresources.buffers.push(buffer);\n\t\t\t\t\t\t\t\tconst bufferView = resources.bufferViewMap.get(buffer);\n\t\t\t\t\t\t\t\tjson.images[i] = {\n\t\t\t\t\t\t\t\t\t\tmimeType: mimeType,\n\t\t\t\t\t\t\t\t\t\tbufferView: bufferView[0]\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tjson.samplers[i] = {\n\t\t\t\t\t\t\t\t\t\tminFilter: getFilter(texture.minFilter),\n\t\t\t\t\t\t\t\t\t\tmagFilter: getFilter(texture.magFilter),\n\t\t\t\t\t\t\t\t\t\twrapS: getWrap(texture.addressU),\n\t\t\t\t\t\t\t\t\t\twrapT: getWrap(texture.addressV)\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t\t\tjson.textures[i] = {\n\t\t\t\t\t\t\t\t\t\tsampler: i,\n\t\t\t\t\t\t\t\t\t\tsource: i\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}));\n\t\t\t\t}\n\t\t\t\treturn Promise.all(promises);\n\t\t}\n\t\tgetBlob(canvas, mimeType) {\n\t\t\t\tif (canvas.toBlob !== undefined) {\n\t\t\t\t\t\treturn new Promise((resolve)=>{\n\t\t\t\t\t\t\t\tcanvas.toBlob(resolve, mimeType);\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tlet quality = 1.0;\n\t\t\t\tif (mimeType === 'image/jpeg') {\n\t\t\t\t\t\tquality = 0.92;\n\t\t\t\t}\n\t\t\t\treturn canvas.convertToBlob({\n\t\t\t\t\t\ttype: mimeType,\n\t\t\t\t\t\tquality: quality\n\t\t\t\t});\n\t\t}\n\t\tgetPaddedArrayBuffer(arrayBuffer, paddingByte = 0) {\n\t\t\t\tconst paddedLength = math.roundUp(arrayBuffer.byteLength, 4);\n\t\t\t\tif (paddedLength !== arrayBuffer.byteLength) {\n\t\t\t\t\t\tconst array = new Uint8Array(paddedLength);\n\t\t\t\t\t\tarray.set(new Uint8Array(arrayBuffer));\n\t\t\t\t\t\tif (paddingByte !== 0) {\n\t\t\t\t\t\t\t\tfor(let i = arrayBuffer.byteLength; i < paddedLength; i++){\n\t\t\t\t\t\t\t\t\t\tarray[i] = paddingByte;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn array.buffer;\n\t\t\t\t}\n\t\t\t\treturn arrayBuffer;\n\t\t}\n\t\tbuildJson(resources, options) {\n\t\t\t\tconst promises = this.convertTextures(resources.textures, options);\n\t\t\t\treturn Promise.all(promises).then(async (textureCanvases)=>{\n\t\t\t\t\t\tconst json = {\n\t\t\t\t\t\t\t\tasset: {\n\t\t\t\t\t\t\t\t\t\tversion: '2.0',\n\t\t\t\t\t\t\t\t\t\tgenerator: 'PlayCanvas GltfExporter'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tscenes: [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tnodes: [\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t\t]\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\timages: [],\n\t\t\t\t\t\t\t\tsamplers: [],\n\t\t\t\t\t\t\t\ttextures: [],\n\t\t\t\t\t\t\t\tscene: 0\n\t\t\t\t\t\t};\n\t\t\t\t\t\tthis.writeBufferViews(resources, json);\n\t\t\t\t\t\tthis.writeCameras(resources, json);\n\t\t\t\t\t\tthis.writeMeshes(resources, json, options);\n\t\t\t\t\t\tthis.writeMaterials(resources, json);\n\t\t\t\t\t\tthis.writeNodes(resources, json, options);\n\t\t\t\t\t\tthis.writeSkins(resources, json);\n\t\t\t\t\t\tawait this.writeTextures(resources, textureCanvases, json, options);\n\t\t\t\t\t\tif (!json.images.length) delete json.images;\n\t\t\t\t\t\tif (!json.samplers.length) delete json.samplers;\n\t\t\t\t\t\tif (!json.textures.length) delete json.textures;\n\t\t\t\t\t\treturn json;\n\t\t\t\t});\n\t\t}\n\t\tbuild(entity, options = {}) {\n\t\t\t\tconst resources = this.collectResources(entity);\n\t\t\t\treturn this.buildJson(resources, options).then((json)=>{\n\t\t\t\t\t\tconst encoder = new TextEncoder();\n\t\t\t\t\t\tconst jsonData = encoder.encode(JSON.stringify(json));\n\t\t\t\t\t\tconst headerLength = 12;\n\t\t\t\t\t\tconst jsonHeaderLength = 8;\n\t\t\t\t\t\tconst jsonDataLength = jsonData.length;\n\t\t\t\t\t\tconst jsonPaddingLength = 4 - (jsonDataLength & 3) & 3;\n\t\t\t\t\t\tconst binaryHeaderLength = 8;\n\t\t\t\t\t\tconst binaryDataLength = json.buffers.reduce((total, buffer)=>math.roundUp(total + buffer.byteLength, 4), 0);\n\t\t\t\t\t\tlet totalLength = headerLength + jsonHeaderLength + jsonDataLength + jsonPaddingLength;\n\t\t\t\t\t\tif (binaryDataLength > 0) {\n\t\t\t\t\t\t\t\ttotalLength += binaryHeaderLength + binaryDataLength;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst glbBuffer = new ArrayBuffer(totalLength);\n\t\t\t\t\t\tconst glbView = new DataView(glbBuffer);\n\t\t\t\t\t\tglbView.setUint32(0, 0x46546C67, true);\n\t\t\t\t\t\tglbView.setUint32(4, 2, true);\n\t\t\t\t\t\tglbView.setUint32(8, totalLength, true);\n\t\t\t\t\t\tglbView.setUint32(12, jsonDataLength + jsonPaddingLength, true);\n\t\t\t\t\t\tglbView.setUint32(16, 0x4E4F534A, true);\n\t\t\t\t\t\tlet offset = headerLength + jsonHeaderLength;\n\t\t\t\t\t\tnew Uint8Array(glbBuffer, offset, jsonDataLength).set(jsonData);\n\t\t\t\t\t\toffset += jsonDataLength;\n\t\t\t\t\t\tfor(let i = 0; i < jsonPaddingLength; i++){\n\t\t\t\t\t\t\t\tglbView.setUint8(offset + i, 0x20);\n\t\t\t\t\t\t}\n\t\t\t\t\t\toffset += jsonPaddingLength;\n\t\t\t\t\t\tif (binaryDataLength > 0) {\n\t\t\t\t\t\t\t\tglbView.setUint32(offset, binaryDataLength, true);\n\t\t\t\t\t\t\t\tglbView.setUint32(offset + 4, 0x004E4942, true);\n\t\t\t\t\t\t\t\toffset += binaryHeaderLength;\n\t\t\t\t\t\t\t\tresources.buffers.forEach((buffer)=>{\n\t\t\t\t\t\t\t\t\t\tlet src;\n\t\t\t\t\t\t\t\t\t\tconst bufferViewId = resources.bufferViewMap.get(buffer)[0];\n\t\t\t\t\t\t\t\t\t\tconst bufferOffset = json.bufferViews[bufferViewId].byteOffset;\n\t\t\t\t\t\t\t\t\t\tif (buffer instanceof ArrayBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\tsrc = new Uint8Array(buffer);\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst srcBuffer = buffer.lock();\n\t\t\t\t\t\t\t\t\t\t\t\tif (srcBuffer instanceof ArrayBuffer) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc = new Uint8Array(srcBuffer);\n\t\t\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tsrc = new Uint8Array(srcBuffer.buffer, srcBuffer.byteOffset, srcBuffer.byteLength);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst dst = new Uint8Array(glbBuffer, offset + bufferOffset, src.byteLength);\n\t\t\t\t\t\t\t\t\t\tdst.set(src);\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn Promise.resolve(glbBuffer);\n\t\t\t\t});\n\t\t}\n}\n\nconst SSAOTYPE_NONE = 'none';\nconst SSAOTYPE_LIGHTING = 'lighting';\nconst SSAOTYPE_COMBINE = 'combine';\n\nvar glslDownsamplePS = `\nuniform sampler2D sourceTexture;\nuniform vec2 sourceInvResolution;\nvarying vec2 uv0;\n#ifdef PREMULTIPLY\n\tuniform sampler2D premultiplyTexture;\n#endif\nvoid main()\n{\n\tvec3 e = texture2D (sourceTexture, uv0).rgb;\n\t#ifdef BOXFILTER\n\t\tvec3 value = e;\n\t\t#ifdef PREMULTIPLY\n\t\t\tfloat premultiply = texture2D(premultiplyTexture, uv0).{PREMULTIPLY_SRC_CHANNEL};\n\t\t\tvalue *= vec3(premultiply);\n\t\t#endif\n\t#else\n\t\tfloat x = sourceInvResolution.x;\n\t\tfloat y = sourceInvResolution.y;\n\t\tvec3 a = texture2D(sourceTexture, vec2 (uv0.x - 2.0 * x, uv0.y + 2.0 * y)).rgb;\n\t\tvec3 b = texture2D(sourceTexture, vec2 (uv0.x,\t\t   uv0.y + 2.0 * y)).rgb;\n\t\tvec3 c = texture2D(sourceTexture, vec2 (uv0.x + 2.0 * x, uv0.y + 2.0 * y)).rgb;\n\t\tvec3 d = texture2D(sourceTexture, vec2 (uv0.x - 2.0 * x, uv0.y)).rgb;\n\t\tvec3 f = texture2D(sourceTexture, vec2 (uv0.x + 2.0 * x, uv0.y)).rgb;\n\t\tvec3 g = texture2D(sourceTexture, vec2 (uv0.x - 2.0 * x, uv0.y - 2.0 * y)).rgb;\n\t\tvec3 h = texture2D(sourceTexture, vec2 (uv0.x,\t\t   uv0.y - 2.0 * y)).rgb;\n\t\tvec3 i = texture2D(sourceTexture, vec2 (uv0.x + 2.0 * x, uv0.y - 2.0 * y)).rgb;\n\t\tvec3 j = texture2D(sourceTexture, vec2 (uv0.x - x, uv0.y + y)).rgb;\n\t\tvec3 k = texture2D(sourceTexture, vec2 (uv0.x + x, uv0.y + y)).rgb;\n\t\tvec3 l = texture2D(sourceTexture, vec2 (uv0.x - x, uv0.y - y)).rgb;\n\t\tvec3 m = texture2D(sourceTexture, vec2 (uv0.x + x, uv0.y - y)).rgb;\n\t\tvec3 value = e * 0.125;\n\t\tvalue += (a + c + g + i) * 0.03125;\n\t\tvalue += (b + d + f + h) * 0.0625;\n\t\tvalue += (j + k + l + m) * 0.125;\n\t#endif\n\t#ifdef REMOVE_INVALID\n\t\tvalue = max(value, vec3(0.0));\n\t#endif\n\tgl_FragColor = vec4(value, 1.0);\n}\n`;\n\nvar wgslDownsamplePS = `\nvar sourceTexture: texture_2d<f32>;\nvar sourceTextureSampler: sampler;\nuniform sourceInvResolution: vec2f;\nvarying uv0: vec2f;\n#ifdef PREMULTIPLY\n\tvar premultiplyTexture: texture_2d<f32>;\n\tvar premultiplyTextureSampler: sampler;\n#endif\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet e: vec3f = textureSample(sourceTexture, sourceTextureSampler, input.uv0).rgb;\n\t#ifdef BOXFILTER\n\t\tvar value: vec3f = e;\n\t\t#ifdef PREMULTIPLY\n\t\t\tlet premultiply: f32 = textureSample(premultiplyTexture, premultiplyTextureSampler, input.uv0).{PREMULTIPLY_SRC_CHANNEL};\n\t\t\tvalue = value * vec3f(premultiply);\n\t\t#endif\n\t#else\n\t\tlet x: f32 = uniform.sourceInvResolution.x;\n\t\tlet y: f32 = uniform.sourceInvResolution.y;\n\t\tlet a: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - 2.0 * x, input.uv0.y + 2.0 * y)).rgb;\n\t\tlet b: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t\t   input.uv0.y + 2.0 * y)).rgb;\n\t\tlet c: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + 2.0 * x, input.uv0.y + 2.0 * y)).rgb;\n\t\tlet d: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - 2.0 * x, input.uv0.y)).rgb;\n\t\tlet f: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + 2.0 * x, input.uv0.y)).rgb;\n\t\tlet g: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - 2.0 * x, input.uv0.y - 2.0 * y)).rgb;\n\t\tlet h: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t\t   input.uv0.y - 2.0 * y)).rgb;\n\t\tlet i: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + 2.0 * x, input.uv0.y - 2.0 * y)).rgb;\n\t\tlet j: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y + y)).rgb;\n\t\tlet k: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y + y)).rgb;\n\t\tlet l: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y - y)).rgb;\n\t\tlet m: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y - y)).rgb;\n\t\tvar value: vec3f = e * 0.125;\n\t\tvalue = value + (a + c + g + i) * 0.03125;\n\t\tvalue = value + (b + d + f + h) * 0.0625;\n\t\tvalue = value + (j + k + l + m) * 0.125;\n\t#endif\n\t#ifdef REMOVE_INVALID\n\t\tvalue = max(value, vec3f(0.0));\n\t#endif\n\toutput.color = vec4f(value, 1.0);\n\treturn output;\n}\n`;\n\nclass RenderPassDownsample extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, options = {}){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tthis.premultiplyTexture = options.premultiplyTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('downsamplePS', glslDownsamplePS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('downsamplePS', wgslDownsamplePS);\n\t\t\t\tconst boxFilter = options.boxFilter ?? false;\n\t\t\t\tconst key = `${boxFilter ? 'Box' : ''}-${options.premultiplyTexture ? 'Premultiply' : ''}-${options.premultiplySrcChannel ?? ''}-${options.removeInvalid ? 'RemoveInvalid' : ''}`;\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (boxFilter) defines.set('BOXFILTER', '');\n\t\t\t\tif (options.premultiplyTexture) defines.set('PREMULTIPLY', '');\n\t\t\t\tif (options.removeInvalid) defines.set('REMOVE_INVALID', '');\n\t\t\t\tdefines.set('{PREMULTIPLY_SRC_CHANNEL}', options.premultiplySrcChannel ?? 'x');\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `DownSampleShader:${key}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'downsamplePS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tthis.sourceTextureId = device.scope.resolve('sourceTexture');\n\t\t\t\tthis.premultiplyTextureId = device.scope.resolve('premultiplyTexture');\n\t\t\t\tthis.sourceInvResolutionId = device.scope.resolve('sourceInvResolution');\n\t\t\t\tthis.sourceInvResolutionValue = new Float32Array(2);\n\t\t}\n\t\tsetSourceTexture(value) {\n\t\t\t\tthis._sourceTexture = value;\n\t\t\t\tthis.options.resizeSource = value;\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tif (this.premultiplyTexture) {\n\t\t\t\t\t\tthis.premultiplyTextureId.setValue(this.premultiplyTexture);\n\t\t\t\t}\n\t\t\t\tthis.sourceInvResolutionValue[0] = 1.0 / this.sourceTexture.width;\n\t\t\t\tthis.sourceInvResolutionValue[1] = 1.0 / this.sourceTexture.height;\n\t\t\t\tthis.sourceInvResolutionId.setValue(this.sourceInvResolutionValue);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glslUpsamplePS = `\n\tuniform sampler2D sourceTexture;\n\tuniform vec2 sourceInvResolution;\n\tvarying vec2 uv0;\n\tvoid main()\n\t{\n\t\tfloat x = sourceInvResolution.x;\n\t\tfloat y = sourceInvResolution.y;\n\t\tvec3 a = texture2D (sourceTexture, vec2 (uv0.x - x, uv0.y + y)).rgb;\n\t\tvec3 b = texture2D (sourceTexture, vec2 (uv0.x,\t uv0.y + y)).rgb;\n\t\tvec3 c = texture2D (sourceTexture, vec2 (uv0.x + x, uv0.y + y)).rgb;\n\t\tvec3 d = texture2D (sourceTexture, vec2 (uv0.x - x, uv0.y)).rgb;\n\t\tvec3 e = texture2D (sourceTexture, vec2 (uv0.x,\t uv0.y)).rgb;\n\t\tvec3 f = texture2D (sourceTexture, vec2 (uv0.x + x, uv0.y)).rgb;\n\t\tvec3 g = texture2D (sourceTexture, vec2 (uv0.x - x, uv0.y - y)).rgb;\n\t\tvec3 h = texture2D (sourceTexture, vec2 (uv0.x,\t uv0.y - y)).rgb;\n\t\tvec3 i = texture2D (sourceTexture, vec2 (uv0.x + x, uv0.y - y)).rgb;\n\t\tvec3 value = e * 4.0;\n\t\tvalue += (b + d + f + h) * 2.0;\n\t\tvalue += (a + c + g + i);\n\t\tvalue *= 1.0 / 16.0;\n\t\tgl_FragColor = vec4(value, 1.0);\n\t}\n`;\n\nvar wgslUpsamplePS = `\n\tvar sourceTexture: texture_2d<f32>;\n\tvar sourceTextureSampler: sampler;\n\tuniform sourceInvResolution: vec2f;\n\tvarying uv0: vec2f;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tlet x: f32 = uniform.sourceInvResolution.x;\n\t\tlet y: f32 = uniform.sourceInvResolution.y;\n\t\tlet a: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y + y)).rgb;\n\t\tlet b: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t input.uv0.y + y)).rgb;\n\t\tlet c: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y + y)).rgb;\n\t\tlet d: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y)).rgb;\n\t\tlet e: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t input.uv0.y)).rgb;\n\t\tlet f: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y)).rgb;\n\t\tlet g: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x - x, input.uv0.y - y)).rgb;\n\t\tlet h: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x,\t input.uv0.y - y)).rgb;\n\t\tlet i: vec3f = textureSample(sourceTexture, sourceTextureSampler, vec2f(input.uv0.x + x, input.uv0.y - y)).rgb;\n\t\tvar value: vec3f = e * 4.0;\n\t\tvalue = value + (b + d + f + h) * 2.0;\n\t\tvalue = value + (a + c + g + i);\n\t\tvalue = value * (1.0 / 16.0);\n\t\toutput.color = vec4f(value, 1.0);\n\t\treturn output;\n\t}\n`;\n\nclass RenderPassUpsample extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('upsamplePS', glslUpsamplePS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('upsamplePS', wgslUpsamplePS);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'UpSampleShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'upsamplePS'\n\t\t\t\t});\n\t\t\t\tthis.sourceTextureId = device.scope.resolve('sourceTexture');\n\t\t\t\tthis.sourceInvResolutionId = device.scope.resolve('sourceInvResolution');\n\t\t\t\tthis.sourceInvResolutionValue = new Float32Array(2);\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tthis.sourceInvResolutionValue[0] = 1.0 / this.sourceTexture.width;\n\t\t\t\tthis.sourceInvResolutionValue[1] = 1.0 / this.sourceTexture.height;\n\t\t\t\tthis.sourceInvResolutionId.setValue(this.sourceInvResolutionValue);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nclass RenderPassBloom extends RenderPass {\n\t\tconstructor(device, sourceTexture, format){\n\t\t\t\tsuper(device), this.blurLevel = 16, this.renderTargets = [];\n\t\t\t\tthis._sourceTexture = sourceTexture;\n\t\t\t\tthis.textureFormat = format;\n\t\t\t\tthis.bloomRenderTarget = this.createRenderTarget(0);\n\t\t\t\tthis.bloomTexture = this.bloomRenderTarget.colorBuffer;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\tthis.destroyRenderTargets();\n\t\t}\n\t\tdestroyRenderTargets(startIndex = 0) {\n\t\t\t\tfor(let i = startIndex; i < this.renderTargets.length; i++){\n\t\t\t\t\t\tconst rt = this.renderTargets[i];\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t\t\tthis.renderTargets.length = 0;\n\t\t}\n\t\tdestroyRenderPasses() {\n\t\t\t\tfor(let i = 0; i < this.beforePasses.length; i++){\n\t\t\t\t\t\tthis.beforePasses[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t}\n\t\tcreateRenderTarget(index) {\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tcolorBuffer: new Texture(this.device, {\n\t\t\t\t\t\t\t\tname: `BloomTexture${index}`,\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t\tformat: this.textureFormat,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t})\n\t\t\t\t});\n\t\t}\n\t\tcreateRenderTargets(count) {\n\t\t\t\tfor(let i = 0; i < count; i++){\n\t\t\t\t\t\tconst rt = i === 0 ? this.bloomRenderTarget : this.createRenderTarget(i);\n\t\t\t\t\t\tthis.renderTargets.push(rt);\n\t\t\t\t}\n\t\t}\n\t\tcalcMipLevels(width, height, minSize) {\n\t\t\t\tconst min = Math.min(width, height);\n\t\t\t\treturn Math.floor(Math.log2(min) - Math.log2(minSize));\n\t\t}\n\t\tcreateRenderPasses(numPasses) {\n\t\t\t\tconst device = this.device;\n\t\t\t\tlet passSourceTexture = this._sourceTexture;\n\t\t\t\tfor(let i = 0; i < numPasses; i++){\n\t\t\t\t\t\tconst pass = new RenderPassDownsample(device, passSourceTexture);\n\t\t\t\t\t\tconst rt = this.renderTargets[i];\n\t\t\t\t\t\tpass.init(rt, {\n\t\t\t\t\t\t\t\tresizeSource: passSourceTexture,\n\t\t\t\t\t\t\t\tscaleX: 0.5,\n\t\t\t\t\t\t\t\tscaleY: 0.5\n\t\t\t\t\t\t});\n\t\t\t\t\t\tpass.setClearColor(Color.BLACK);\n\t\t\t\t\t\tthis.beforePasses.push(pass);\n\t\t\t\t\t\tpassSourceTexture = rt.colorBuffer;\n\t\t\t\t}\n\t\t\t\tpassSourceTexture = this.renderTargets[numPasses - 1].colorBuffer;\n\t\t\t\tfor(let i = numPasses - 2; i >= 0; i--){\n\t\t\t\t\t\tconst pass = new RenderPassUpsample(device, passSourceTexture);\n\t\t\t\t\t\tconst rt = this.renderTargets[i];\n\t\t\t\t\t\tpass.init(rt);\n\t\t\t\t\t\tpass.blendState = BlendState.ADDBLEND;\n\t\t\t\t\t\tthis.beforePasses.push(pass);\n\t\t\t\t\t\tpassSourceTexture = rt.colorBuffer;\n\t\t\t\t}\n\t\t}\n\t\tonDisable() {\n\t\t\t\tthis.renderTargets[0]?.resize(1, 1);\n\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\tthis.destroyRenderTargets(1);\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tconst maxNumPasses = this.calcMipLevels(this._sourceTexture.width, this._sourceTexture.height, 1);\n\t\t\t\tconst numPasses = math.clamp(maxNumPasses, 1, this.blurLevel);\n\t\t\t\tif (this.renderTargets.length !== numPasses) {\n\t\t\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\t\t\tthis.destroyRenderTargets(1);\n\t\t\t\t\t\tthis.createRenderTargets(numPasses);\n\t\t\t\t\t\tthis.createRenderPasses(numPasses);\n\t\t\t\t}\n\t\t}\n}\n\nvar composePS$1 = `\n\t#include \"tonemappingPS\"\n\t#include \"gammaPS\"\n\tvarying vec2 uv0;\n\tuniform sampler2D sceneTexture;\n\tuniform vec2 sceneTextureInvRes;\n\t#include \"composeBloomPS\"\n\t#include \"composeDofPS\"\n\t#include \"composeSsaoPS\"\n\t#include \"composeGradingPS\"\n\t#include \"composeVignettePS\"\n\t#include \"composeFringingPS\"\n\t#include \"composeCasPS\"\n\t#include \"composeColorLutPS\"\n\t#include \"composeDeclarationsPS\"\n\tvoid main() {\n\t\t#include \"composeMainStartPS\"\n\t\tvec2 uv = uv0;\n\t\t#ifdef TAA\n\t\t#ifdef WEBGPU\n\t\t\tuv.y = 1.0 - uv.y;\n\t\t#endif\n\t\t#endif\n\t\tvec4 scene = texture2DLod(sceneTexture, uv, 0.0);\n\t\tvec3 result = scene.rgb;\n\t\t#ifdef CAS\n\t\t\tresult = applyCas(result, uv, sharpness);\n\t\t#endif\n\t\t#ifdef DOF\n\t\t\tresult = applyDof(result, uv0);\n\t\t#endif\n\t\t#ifdef SSAO_TEXTURE\n\t\t\tresult = applySsao(result, uv0);\n\t\t#endif\n\t\t#ifdef FRINGING\n\t\t\tresult = applyFringing(result, uv);\n\t\t#endif\n\t\t#ifdef BLOOM\n\t\t\tresult = applyBloom(result, uv0);\n\t\t#endif\n\t\t#ifdef GRADING\n\t\t\tresult = applyGrading(result);\n\t\t#endif\n\t\tresult = toneMap(max(vec3(0.0), result));\n\t\t#ifdef COLOR_LUT\n\t\t\tresult = applyColorLUT(result);\n\t\t#endif\n\t\t#ifdef VIGNETTE\n\t\t\tresult = applyVignette(result, uv);\n\t\t#endif\n\t\t#include \"composeMainEndPS\"\n\t\t#ifdef DEBUG_COMPOSE\n\t\t\t#if DEBUG_COMPOSE == scene\n\t\t\t\tresult = scene.rgb;\n\t\t\t#elif defined(BLOOM) && DEBUG_COMPOSE == bloom\n\t\t\t\tresult = dBloom * bloomIntensity;\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofcoc\n\t\t\t\tresult = vec3(dCoc, 0.0);\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofblur\n\t\t\t\tresult = dBlur;\n\t\t\t#elif defined(SSAO_TEXTURE) && DEBUG_COMPOSE == ssao\n\t\t\t\tresult = vec3(dSsao);\n\t\t\t#elif defined(VIGNETTE) && DEBUG_COMPOSE == vignette\n\t\t\t\tresult = vec3(dVignette);\n\t\t\t#endif\n\t\t#endif\n\t\tresult = gammaCorrectOutput(result);\n\t\tgl_FragColor = vec4(result, scene.a);\n\t}\n`;\n\nvar composeBloomPS$1 = `\n\t#ifdef BLOOM\n\t\tuniform sampler2D bloomTexture;\n\t\tuniform float bloomIntensity;\n\t\t\n\t\tvec3 dBloom;\n\t\t\n\t\tvec3 applyBloom(vec3 color, vec2 uv) {\n\t\t\tdBloom = texture2DLod(bloomTexture, uv, 0.0).rgb;\n\t\t\treturn color + dBloom * bloomIntensity;\n\t\t}\n\t#endif\n`;\n\nvar composeDofPS$1 = `\n\t#ifdef DOF\n\t\tuniform sampler2D cocTexture;\n\t\tuniform sampler2D blurTexture;\n\t\t\n\t\tvec2 dCoc;\n\t\tvec3 dBlur;\n\t\tvec3 getDofBlur(vec2 uv) {\n\t\t\tdCoc = texture2DLod(cocTexture, uv, 0.0).rg;\n\t\t\t#if DOF_UPSCALE\n\t\t\t\tvec2 blurTexelSize = 1.0 / vec2(textureSize(blurTexture, 0));\n\t\t\t\tvec3 bilinearBlur = vec3(0.0);\n\t\t\t\tfloat totalWeight = 0.0;\n\t\t\t\tfor (int i = -1; i <= 1; i++) {\n\t\t\t\t\tfor (int j = -1; j <= 1; j++) {\n\t\t\t\t\t\tvec2 offset = vec2(i, j) * blurTexelSize;\n\t\t\t\t\t\tvec2 cocSample = texture2DLod(cocTexture, uv + offset, 0.0).rg;\n\t\t\t\t\t\tvec3 blurSample = texture2DLod(blurTexture, uv + offset, 0.0).rgb;\n\t\t\t\t\t\tfloat cocWeight = clamp(cocSample.r + cocSample.g, 0.0, 1.0);\n\t\t\t\t\t\tbilinearBlur += blurSample * cocWeight;\n\t\t\t\t\t\ttotalWeight += cocWeight;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (totalWeight > 0.0) {\n\t\t\t\t\tbilinearBlur /= totalWeight;\n\t\t\t\t}\n\t\t\t\tdBlur = bilinearBlur;\n\t\t\t\treturn bilinearBlur;\n\t\t\t#else\n\t\t\t\tdBlur = texture2DLod(blurTexture, uv, 0.0).rgb;\n\t\t\t\treturn dBlur;\n\t\t\t#endif\n\t\t}\n\t\tvec3 applyDof(vec3 color, vec2 uv) {\n\t\t\tvec3 blur = getDofBlur(uv);\n\t\t\treturn mix(color, blur, dCoc.r + dCoc.g);\n\t\t}\n\t#endif\n`;\n\nvar composeSsaoPS$1 = `\n\t#ifdef SSAO\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#if DEBUG_COMPOSE == ssao\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#ifdef SSAO_TEXTURE\n\t\tuniform sampler2D ssaoTexture;\n\t\t\n\t\tfloat dSsao;\n\t\t\n\t\tvec3 applySsao(vec3 color, vec2 uv) {\n\t\t\tdSsao = texture2DLod(ssaoTexture, uv, 0.0).r;\n\t\t\t\n\t\t\t#ifdef SSAO\n\t\t\t\treturn color * dSsao;\n\t\t\t#else\n\t\t\t\treturn color;\n\t\t\t#endif\n\t\t}\n\t#endif\n`;\n\nvar composeGradingPS$1 = `\n\t#ifdef GRADING\n\t\tuniform vec3 brightnessContrastSaturation;\n\t\tuniform vec3 tint;\n\t\tvec3 colorGradingHDR(vec3 color, float brt, float sat, float con) {\n\t\t\tcolor *= tint;\n\t\t\tcolor = color * brt;\n\t\t\tfloat grey = dot(color, vec3(0.3, 0.59, 0.11));\n\t\t\tgrey = grey / max(1.0, max(color.r, max(color.g, color.b)));\n\t\t\tcolor = mix(vec3(grey), color, sat);\n\t\t\treturn mix(vec3(0.5), color, con);\n\t\t}\n\t\tvec3 applyGrading(vec3 color) {\n\t\t\treturn colorGradingHDR(color, \n\t\t\t\tbrightnessContrastSaturation.x, \n\t\t\t\tbrightnessContrastSaturation.z, \n\t\t\t\tbrightnessContrastSaturation.y);\n\t\t}\n\t#endif\n`;\n\nvar composeVignettePS$1 = `\n\t#ifdef VIGNETTE\n\t\tuniform vec4 vignetterParams;\n\t\t\n\t\tfloat dVignette;\n\t\t\n\t\tfloat calcVignette(vec2 uv) {\n\t\t\tfloat inner = vignetterParams.x;\n\t\t\tfloat outer = vignetterParams.y;\n\t\t\tfloat curvature = vignetterParams.z;\n\t\t\tfloat intensity = vignetterParams.w;\n\t\t\tvec2 curve = pow(abs(uv * 2.0 -1.0), vec2(1.0 / curvature));\n\t\t\tfloat edge = pow(length(curve), curvature);\n\t\t\tdVignette = 1.0 - intensity * smoothstep(inner, outer, edge);\n\t\t\treturn dVignette;\n\t\t}\n\t\tvec3 applyVignette(vec3 color, vec2 uv) {\n\t\t\treturn color * calcVignette(uv);\n\t\t}\n\t#endif\n`;\n\nvar composeFringingPS$1 = `\n\t#ifdef FRINGING\n\t\tuniform float fringingIntensity;\n\t\tvec3 applyFringing(vec3 color, vec2 uv) {\n\t\t\tvec2 centerDistance = uv - 0.5;\n\t\t\tvec2 offset = fringingIntensity * pow(centerDistance, vec2(2.0, 2.0));\n\t\t\tcolor.r = texture2D(sceneTexture, uv - offset).r;\n\t\t\tcolor.b = texture2D(sceneTexture, uv + offset).b;\n\t\t\treturn color;\n\t\t}\n\t#endif\n`;\n\nvar composeCasPS$1 = `\n\t#ifdef CAS\n\t\tuniform float sharpness;\n\t\tfloat maxComponent(float x, float y, float z) { return max(x, max(y, z)); }\n\t\tvec3 toSDR(vec3 c) { return c / (1.0 + maxComponent(c.r, c.g, c.b)); }\n\t\tvec3 toHDR(vec3 c) { return c / (1.0 - maxComponent(c.r, c.g, c.b)); }\n\t\tvec3 applyCas(vec3 color, vec2 uv, float sharpness) {\n\t\t\tfloat x = sceneTextureInvRes.x;\n\t\t\tfloat y = sceneTextureInvRes.y;\n\t\t\tvec3 a = toSDR(texture2DLod(sceneTexture, uv + vec2(0.0, -y), 0.0).rgb);\n\t\t\tvec3 b = toSDR(texture2DLod(sceneTexture, uv + vec2(-x, 0.0), 0.0).rgb);\n\t\t\tvec3 c = toSDR(color.rgb);\n\t\t\tvec3 d = toSDR(texture2DLod(sceneTexture, uv + vec2(x, 0.0), 0.0).rgb);\n\t\t\tvec3 e = toSDR(texture2DLod(sceneTexture, uv + vec2(0.0, y), 0.0).rgb);\n\t\t\tfloat min_g = min(a.g, min(b.g, min(c.g, min(d.g, e.g))));\n\t\t\tfloat max_g = max(a.g, max(b.g, max(c.g, max(d.g, e.g))));\n\t\t\tfloat sharpening_amount = sqrt(min(1.0 - max_g, min_g) / max_g);\n\t\t\tfloat w = sharpening_amount * sharpness;\n\t\t\tvec3 res = (w * (a + b + d + e) + c) / (4.0 * w + 1.0);\n\t\t\tres = max(res, 0.0);\n\t\t\treturn toHDR(res);\n\t\t}\n\t#endif\n`;\n\nvar composeColorLutPS$1 = `\n\t#ifdef COLOR_LUT\n\t\tuniform sampler2D colorLUT;\n\t\tuniform vec4 colorLUTParams;\n\t\tvec3 applyColorLUT(vec3 color) {\n\t\t\tvec3 c = clamp(color, 0.0, 1.0);\n\t\t\tfloat width = colorLUTParams.x;\n\t\t\tfloat height = colorLUTParams.y;\n\t\t\tfloat maxColor = colorLUTParams.z;\n\t\t\tfloat cell = c.b * maxColor;\n\t\t\tfloat cell_l = floor(cell);\n\t\t\tfloat cell_h = ceil(cell);\n\t\t\tfloat half_px_x = 0.5 / width;\n\t\t\tfloat half_px_y = 0.5 / height;\n\t\t\tfloat r_offset = half_px_x + c.r / height * (maxColor / height);\n\t\t\tfloat g_offset = half_px_y + c.g * (maxColor / height);\n\t\t\tvec2 uv_l = vec2(cell_l / height + r_offset, g_offset);\n\t\t\tvec2 uv_h = vec2(cell_h / height + r_offset, g_offset);\n\t\t\tvec3 color_l = texture2DLod(colorLUT, uv_l, 0.0).rgb;\n\t\t\tvec3 color_h = texture2DLod(colorLUT, uv_h, 0.0).rgb;\n\t\t\tvec3 lutColor = mix(color_l, color_h, fract(cell));\n\t\t\treturn mix(color, lutColor, colorLUTParams.w);\n\t\t}\n\t#endif\n`;\n\nconst composeChunksGLSL = {\n\t\tcomposePS: composePS$1,\n\t\tcomposeBloomPS: composeBloomPS$1,\n\t\tcomposeDofPS: composeDofPS$1,\n\t\tcomposeSsaoPS: composeSsaoPS$1,\n\t\tcomposeGradingPS: composeGradingPS$1,\n\t\tcomposeVignettePS: composeVignettePS$1,\n\t\tcomposeFringingPS: composeFringingPS$1,\n\t\tcomposeCasPS: composeCasPS$1,\n\t\tcomposeColorLutPS: composeColorLutPS$1,\n\t\tcomposeDeclarationsPS: '',\n\t\tcomposeMainStartPS: '',\n\t\tcomposeMainEndPS: ''\n};\n\nvar composePS = `\n\t#include \"tonemappingPS\"\n\t#include \"gammaPS\"\n\tvarying uv0: vec2f;\n\tvar sceneTexture: texture_2d<f32>;\n\tvar sceneTextureSampler: sampler;\n\tuniform sceneTextureInvRes: vec2f;\n\t#include \"composeBloomPS\"\n\t#include \"composeDofPS\"\n\t#include \"composeSsaoPS\"\n\t#include \"composeGradingPS\"\n\t#include \"composeVignettePS\"\n\t#include \"composeFringingPS\"\n\t#include \"composeCasPS\"\n\t#include \"composeColorLutPS\"\n\t#include \"composeDeclarationsPS\"\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\t#include \"composeMainStartPS\"\n\t\tvar output: FragmentOutput;\n\t\tvar uv = uv0;\n\t\t#ifdef TAA\n\t\t\tuv.y = 1.0 - uv.y;\n\t\t#endif\n\t\tlet scene = textureSampleLevel(sceneTexture, sceneTextureSampler, uv, 0.0);\n\t\tvar result = scene.rgb;\n\t\t#ifdef CAS\n\t\t\tresult = applyCas(result, uv, uniform.sharpness);\n\t\t#endif\n\t\t#ifdef DOF\n\t\t\tresult = applyDof(result, uv0);\n\t\t#endif\n\t\t#ifdef SSAO_TEXTURE\n\t\t\tresult = applySsao(result, uv0);\n\t\t#endif\n\t\t#ifdef FRINGING\n\t\t\tresult = applyFringing(result, uv);\n\t\t#endif\n\t\t#ifdef BLOOM\n\t\t\tresult = applyBloom(result, uv0);\n\t\t#endif\n\t\t#ifdef GRADING\n\t\t\tresult = applyGrading(result);\n\t\t#endif\n\t\tresult = toneMap(max(vec3f(0.0), result));\n\t\t#ifdef COLOR_LUT\n\t\t\tresult = applyColorLUT(result);\n\t\t#endif\n\t\t#ifdef VIGNETTE\n\t\t\tresult = applyVignette(result, uv);\n\t\t#endif\n\t\t#include \"composeMainEndPS\"\n\t\t#ifdef DEBUG_COMPOSE\n\t\t\t#if DEBUG_COMPOSE == scene\n\t\t\t\tresult = scene.rgb;\n\t\t\t#elif defined(BLOOM) && DEBUG_COMPOSE == bloom\n\t\t\t\tresult = dBloom * uniform.bloomIntensity;\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofcoc\n\t\t\t\tresult = vec3f(dCoc, 0.0);\n\t\t\t#elif defined(DOF) && DEBUG_COMPOSE == dofblur\n\t\t\t\tresult = dBlur;\n\t\t\t#elif defined(SSAO_TEXTURE) && DEBUG_COMPOSE == ssao\n\t\t\t\tresult = vec3f(dSsao);\n\t\t\t#elif defined(VIGNETTE) && DEBUG_COMPOSE == vignette\n\t\t\t\tresult = vec3f(dVignette);\n\t\t\t#endif\n\t\t#endif\n\t\tresult = gammaCorrectOutput(result);\n\t\toutput.color = vec4f(result, scene.a);\n\t\treturn output;\n\t}\n`;\n\nvar composeBloomPS = `\n\t#ifdef BLOOM\n\t\tvar bloomTexture: texture_2d<f32>;\n\t\tvar bloomTextureSampler: sampler;\n\t\tuniform bloomIntensity: f32;\n\t\t\n\t\tvar<private> dBloom: vec3f;\n\t\t\n\t\tfn applyBloom(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tdBloom = textureSampleLevel(bloomTexture, bloomTextureSampler, uv, 0.0).rgb;\n\t\t\treturn color + dBloom * uniform.bloomIntensity;\n\t\t}\n\t#endif\n`;\n\nvar composeDofPS = `\n\t#ifdef DOF\n\t\tvar cocTexture: texture_2d<f32>;\n\t\tvar cocTextureSampler: sampler;\n\t\tvar blurTexture: texture_2d<f32>;\n\t\tvar blurTextureSampler: sampler;\n\t\t\n\t\tvar<private> dCoc: vec2f;\n\t\tvar<private> dBlur: vec3f;\n\t\tfn getDofBlur(uv: vec2f) -> vec3f {\n\t\t\tdCoc = textureSampleLevel(cocTexture, cocTextureSampler, uv, 0.0).rg;\n\t\t\t#if DOF_UPSCALE\n\t\t\t\tlet blurTexelSize = 1.0 / vec2f(textureDimensions(blurTexture, 0));\n\t\t\t\tvar bilinearBlur = vec3f(0.0);\n\t\t\t\tvar totalWeight = 0.0;\n\t\t\t\tfor (var i = -1; i <= 1; i++) {\n\t\t\t\t\tfor (var j = -1; j <= 1; j++) {\n\t\t\t\t\t\tlet offset = vec2f(f32(i), f32(j)) * blurTexelSize;\n\t\t\t\t\t\tlet cocSample = textureSampleLevel(cocTexture, cocTextureSampler, uv + offset, 0.0).rg;\n\t\t\t\t\t\tlet blurSample = textureSampleLevel(blurTexture, blurTextureSampler, uv + offset, 0.0).rgb;\n\t\t\t\t\t\tlet cocWeight = clamp(cocSample.r + cocSample.g, 0.0, 1.0);\n\t\t\t\t\t\tbilinearBlur += blurSample * cocWeight;\n\t\t\t\t\t\ttotalWeight += cocWeight;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (totalWeight > 0.0) {\n\t\t\t\t\tbilinearBlur /= totalWeight;\n\t\t\t\t}\n\t\t\t\tdBlur = bilinearBlur;\n\t\t\t\treturn bilinearBlur;\n\t\t\t#else\n\t\t\t\tdBlur = textureSampleLevel(blurTexture, blurTextureSampler, uv, 0.0).rgb;\n\t\t\t\treturn dBlur;\n\t\t\t#endif\n\t\t}\n\t\tfn applyDof(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tlet blur = getDofBlur(uv);\n\t\t\treturn mix(color, blur, dCoc.r + dCoc.g);\n\t\t}\n\t#endif\n`;\n\nvar composeSsaoPS = `\n\t#ifdef SSAO\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#if DEBUG_COMPOSE == ssao\n\t\t#define SSAO_TEXTURE\n\t#endif\n\t#ifdef SSAO_TEXTURE\n\t\tvar ssaoTexture: texture_2d<f32>;\n\t\tvar ssaoTextureSampler: sampler;\n\t\t\n\t\tvar<private> dSsao: f32;\n\t\t\n\t\tfn applySsao(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tdSsao = textureSampleLevel(ssaoTexture, ssaoTextureSampler, uv, 0.0).r;\n\t\t\t\n\t\t\t#ifdef SSAO\n\t\t\t\treturn color * dSsao;\n\t\t\t#else\n\t\t\t\treturn color;\n\t\t\t#endif\n\t\t}\n\t#endif\n`;\n\nvar composeGradingPS = `\n\t#ifdef GRADING\n\t\tuniform brightnessContrastSaturation: vec3f;\n\t\tuniform tint: vec3f;\n\t\tfn colorGradingHDR(color: vec3f, brt: f32, sat: f32, con: f32) -> vec3f {\n\t\t\tvar colorOut = color * uniform.tint;\n\t\t\tcolorOut = colorOut * brt;\n\t\t\tlet grey = dot(colorOut, vec3f(0.3, 0.59, 0.11));\n\t\t\tlet normalizedGrey = grey / max(1.0, max(colorOut.r, max(colorOut.g, colorOut.b)));\n\t\t\tcolorOut = mix(vec3f(normalizedGrey), colorOut, sat);\n\t\t\treturn mix(vec3f(0.5), colorOut, con);\n\t\t}\n\t\tfn applyGrading(color: vec3f) -> vec3f {\n\t\t\treturn colorGradingHDR(color, \n\t\t\t\tuniform.brightnessContrastSaturation.x, \n\t\t\t\tuniform.brightnessContrastSaturation.z, \n\t\t\t\tuniform.brightnessContrastSaturation.y);\n\t\t}\n\t#endif\n`;\n\nvar composeVignettePS = `\n\t#ifdef VIGNETTE\n\t\tuniform vignetterParams: vec4f;\n\t\t\n\t\tvar<private> dVignette: f32;\n\t\t\n\t\tfn calcVignette(uv: vec2f) -> f32 {\n\t\t\tlet inner = uniform.vignetterParams.x;\n\t\t\tlet outer = uniform.vignetterParams.y;\n\t\t\tlet curvature = uniform.vignetterParams.z;\n\t\t\tlet intensity = uniform.vignetterParams.w;\n\t\t\tlet curve = pow(abs(uv * 2.0 - 1.0), vec2f(1.0 / curvature));\n\t\t\tlet edge = pow(length(curve), curvature);\n\t\t\tdVignette = 1.0 - intensity * smoothstep(inner, outer, edge);\n\t\t\treturn dVignette;\n\t\t}\n\t\tfn applyVignette(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\treturn color * calcVignette(uv);\n\t\t}\n\t#endif\n`;\n\nvar composeFringingPS = `\n\t#ifdef FRINGING\n\t\tuniform fringingIntensity: f32;\n\t\tfn applyFringing(color: vec3f, uv: vec2f) -> vec3f {\n\t\t\tlet centerDistance = uv - 0.5;\n\t\t\tlet offset = uniform.fringingIntensity * pow(centerDistance, vec2f(2.0));\n\t\t\tvar colorOut = color;\n\t\t\tcolorOut.r = textureSample(sceneTexture, sceneTextureSampler, uv - offset).r;\n\t\t\tcolorOut.b = textureSample(sceneTexture, sceneTextureSampler, uv + offset).b;\n\t\t\treturn colorOut;\n\t\t}\n\t#endif\n`;\n\nvar composeCasPS = `\n\t#ifdef CAS\n\t\tuniform sharpness: f32;\n\t\tfn maxComponent(x: f32, y: f32, z: f32) -> f32 { return max(x, max(y, z)); }\n\t\tfn toSDR(c: vec3f) -> vec3f { return c / (1.0 + maxComponent(c.r, c.g, c.b)); }\n\t\tfn toHDR(c: vec3f) -> vec3f { return c / (1.0 - maxComponent(c.r, c.g, c.b)); }\n\t\tfn applyCas(color: vec3f, uv: vec2f, sharpness: f32) -> vec3f {\n\t\t\tlet x = uniform.sceneTextureInvRes.x;\n\t\t\tlet y = uniform.sceneTextureInvRes.y;\n\t\t\tlet a = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(0.0, -y), 0.0).rgb);\n\t\t\tlet b = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(-x, 0.0), 0.0).rgb);\n\t\t\tlet c = toSDR(color.rgb);\n\t\t\tlet d = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(x, 0.0), 0.0).rgb);\n\t\t\tlet e = toSDR(textureSampleLevel(sceneTexture, sceneTextureSampler, uv + vec2f(0.0, y), 0.0).rgb);\n\t\t\tlet min_g = min(a.g, min(b.g, min(c.g, min(d.g, e.g))));\n\t\t\tlet max_g = max(a.g, max(b.g, max(c.g, max(d.g, e.g))));\n\t\t\tlet sharpening_amount = sqrt(min(1.0 - max_g, min_g) / max_g);\n\t\t\tlet w = sharpening_amount * uniform.sharpness;\n\t\t\tvar res = (w * (a + b + d + e) + c) / (4.0 * w + 1.0);\n\t\t\tres = max(res, vec3f(0.0));\n\t\t\treturn toHDR(res);\n\t\t}\n\t#endif\n`;\n\nvar composeColorLutPS = `\n\t#ifdef COLOR_LUT\n\t\tvar colorLUT: texture_2d<f32>;\n\t\tvar colorLUTSampler: sampler;\n\t\tuniform colorLUTParams: vec4f;\n\t\tfn applyColorLUT(color: vec3f) -> vec3f {\n\t\t\tvar c: vec3f = clamp(color, vec3f(0.0), vec3f(1.0));\n\t\t\tlet width: f32 = uniform.colorLUTParams.x;\n\t\t\tlet height: f32 = uniform.colorLUTParams.y;\n\t\t\tlet maxColor: f32 = uniform.colorLUTParams.z;\n\t\t\tlet cell: f32 = c.b * maxColor;\n\t\t\tlet cell_l: f32 = floor(cell);\n\t\t\tlet cell_h: f32 = ceil(cell);\n\t\t\tlet half_px_x: f32 = 0.5 / width;\n\t\t\tlet half_px_y: f32 = 0.5 / height;\n\t\t\tlet r_offset: f32 = half_px_x + c.r / height * (maxColor / height);\n\t\t\tlet g_offset: f32 = half_px_y + c.g * (maxColor / height);\n\t\t\tlet uv_l: vec2f = vec2f(cell_l / height + r_offset, g_offset);\n\t\t\tlet uv_h: vec2f = vec2f(cell_h / height + r_offset, g_offset);\n\t\t\tlet color_l: vec3f = textureSampleLevel(colorLUT, colorLUTSampler, uv_l, 0.0).rgb;\n\t\t\tlet color_h: vec3f = textureSampleLevel(colorLUT, colorLUTSampler, uv_h, 0.0).rgb;\n\t\t\tlet lutColor: vec3f = mix(color_l, color_h, fract(cell));\n\t\t\treturn mix(color, lutColor, uniform.colorLUTParams.w);\n\t\t}\n\t#endif\n`;\n\nconst composeChunksWGSL = {\n\t\tcomposePS,\n\t\tcomposeBloomPS,\n\t\tcomposeDofPS,\n\t\tcomposeSsaoPS,\n\t\tcomposeGradingPS,\n\t\tcomposeVignettePS,\n\t\tcomposeFringingPS,\n\t\tcomposeCasPS,\n\t\tcomposeColorLutPS,\n\t\tcomposeDeclarationsPS: '',\n\t\tcomposeMainStartPS: '',\n\t\tcomposeMainEndPS: ''\n};\n\nclass RenderPassCompose extends RenderPassShaderQuad {\n\t\tconstructor(graphicsDevice){\n\t\t\t\tsuper(graphicsDevice), this.sceneTexture = null, this.bloomIntensity = 0.01, this._bloomTexture = null, this._cocTexture = null, this.blurTexture = null, this.blurTextureUpscale = false, this._ssaoTexture = null, this._toneMapping = TONEMAP_LINEAR, this._gradingEnabled = false, this.gradingSaturation = 1, this.gradingContrast = 1, this.gradingBrightness = 1, this.gradingTint = new Color(1, 1, 1, 1), this._shaderDirty = true, this._vignetteEnabled = false, this.vignetteInner = 0.5, this.vignetteOuter = 1.0, this.vignetteCurvature = 0.5, this.vignetteIntensity = 0.3, this._fringingEnabled = false, this.fringingIntensity = 10, this._taaEnabled = false, this._sharpness = 0.5, this._gammaCorrection = GAMMA_SRGB, this._colorLUT = null, this.colorLUTIntensity = 1, this._key = '', this._debug = null, this._customComposeChunks = new Map([\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'composeDeclarationsPS',\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'composeMainStartPS',\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t],\n\t\t\t\t\t\t[\n\t\t\t\t\t\t\t\t'composeMainEndPS',\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t]\n\t\t\t\t]);\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_GLSL).add(composeChunksGLSL, false);\n\t\t\t\tShaderChunks.get(graphicsDevice, SHADERLANGUAGE_WGSL).add(composeChunksWGSL, false);\n\t\t\t\tconst { scope } = graphicsDevice;\n\t\t\t\tthis.sceneTextureId = scope.resolve('sceneTexture');\n\t\t\t\tthis.bloomTextureId = scope.resolve('bloomTexture');\n\t\t\t\tthis.cocTextureId = scope.resolve('cocTexture');\n\t\t\t\tthis.ssaoTextureId = scope.resolve('ssaoTexture');\n\t\t\t\tthis.blurTextureId = scope.resolve('blurTexture');\n\t\t\t\tthis.bloomIntensityId = scope.resolve('bloomIntensity');\n\t\t\t\tthis.bcsId = scope.resolve('brightnessContrastSaturation');\n\t\t\t\tthis.tintId = scope.resolve('tint');\n\t\t\t\tthis.vignetterParamsId = scope.resolve('vignetterParams');\n\t\t\t\tthis.fringingIntensityId = scope.resolve('fringingIntensity');\n\t\t\t\tthis.sceneTextureInvResId = scope.resolve('sceneTextureInvRes');\n\t\t\t\tthis.sceneTextureInvResValue = new Float32Array(2);\n\t\t\t\tthis.sharpnessId = scope.resolve('sharpness');\n\t\t\t\tthis.colorLUTId = scope.resolve('colorLUT');\n\t\t\t\tthis.colorLUTParams = new Float32Array(4);\n\t\t\t\tthis.colorLUTParamsId = scope.resolve('colorLUTParams');\n\t\t}\n\t\tset debug(value) {\n\t\t\t\tif (this._debug !== value) {\n\t\t\t\t\t\tthis._debug = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget debug() {\n\t\t\t\treturn this._debug;\n\t\t}\n\t\tset colorLUT(value) {\n\t\t\t\tif (this._colorLUT !== value) {\n\t\t\t\t\t\tthis._colorLUT = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget colorLUT() {\n\t\t\t\treturn this._colorLUT;\n\t\t}\n\t\tset bloomTexture(value) {\n\t\t\t\tif (this._bloomTexture !== value) {\n\t\t\t\t\t\tthis._bloomTexture = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget bloomTexture() {\n\t\t\t\treturn this._bloomTexture;\n\t\t}\n\t\tset cocTexture(value) {\n\t\t\t\tif (this._cocTexture !== value) {\n\t\t\t\t\t\tthis._cocTexture = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget cocTexture() {\n\t\t\t\treturn this._cocTexture;\n\t\t}\n\t\tset ssaoTexture(value) {\n\t\t\t\tif (this._ssaoTexture !== value) {\n\t\t\t\t\t\tthis._ssaoTexture = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget ssaoTexture() {\n\t\t\t\treturn this._ssaoTexture;\n\t\t}\n\t\tset taaEnabled(value) {\n\t\t\t\tif (this._taaEnabled !== value) {\n\t\t\t\t\t\tthis._taaEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget taaEnabled() {\n\t\t\t\treturn this._taaEnabled;\n\t\t}\n\t\tset gradingEnabled(value) {\n\t\t\t\tif (this._gradingEnabled !== value) {\n\t\t\t\t\t\tthis._gradingEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget gradingEnabled() {\n\t\t\t\treturn this._gradingEnabled;\n\t\t}\n\t\tset vignetteEnabled(value) {\n\t\t\t\tif (this._vignetteEnabled !== value) {\n\t\t\t\t\t\tthis._vignetteEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget vignetteEnabled() {\n\t\t\t\treturn this._vignetteEnabled;\n\t\t}\n\t\tset fringingEnabled(value) {\n\t\t\t\tif (this._fringingEnabled !== value) {\n\t\t\t\t\t\tthis._fringingEnabled = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget fringingEnabled() {\n\t\t\t\treturn this._fringingEnabled;\n\t\t}\n\t\tset toneMapping(value) {\n\t\t\t\tif (this._toneMapping !== value) {\n\t\t\t\t\t\tthis._toneMapping = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget toneMapping() {\n\t\t\t\treturn this._toneMapping;\n\t\t}\n\t\tset sharpness(value) {\n\t\t\t\tif (this._sharpness !== value) {\n\t\t\t\t\t\tthis._sharpness = value;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t}\n\t\tget sharpness() {\n\t\t\t\treturn this._sharpness;\n\t\t}\n\t\tget isSharpnessEnabled() {\n\t\t\t\treturn this._sharpness > 0;\n\t\t}\n\t\tpostInit() {\n\t\t\t\tthis.setClearColor(Color.BLACK);\n\t\t\t\tthis.setClearDepth(1.0);\n\t\t\t\tthis.setClearStencil(0);\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tconst rt = this.renderTarget ?? this.device.backBuffer;\n\t\t\t\tconst srgb = rt.isColorBufferSrgb(0);\n\t\t\t\tconst neededGammaCorrection = srgb ? GAMMA_NONE : GAMMA_SRGB;\n\t\t\t\tif (this._gammaCorrection !== neededGammaCorrection) {\n\t\t\t\t\t\tthis._gammaCorrection = neededGammaCorrection;\n\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t}\n\t\t\t\tconst shaderChunks = ShaderChunks.get(this.device, this.device.isWebGPU ? SHADERLANGUAGE_WGSL : SHADERLANGUAGE_GLSL);\n\t\t\t\tfor (const [name, prevValue] of this._customComposeChunks.entries()){\n\t\t\t\t\t\tconst currentValue = shaderChunks.get(name);\n\t\t\t\t\t\tif (currentValue !== prevValue) {\n\t\t\t\t\t\t\t\tthis._customComposeChunks.set(name, currentValue);\n\t\t\t\t\t\t\t\tthis._shaderDirty = true;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._shaderDirty) {\n\t\t\t\t\t\tthis._shaderDirty = false;\n\t\t\t\t\t\tconst gammaCorrectionName = gammaNames[this._gammaCorrection];\n\t\t\t\t\t\tconst customChunks = this._customComposeChunks;\n\t\t\t\t\t\tconst declHash = hashCode(customChunks.get('composeDeclarationsPS') ?? '');\n\t\t\t\t\t\tconst startHash = hashCode(customChunks.get('composeMainStartPS') ?? '');\n\t\t\t\t\t\tconst endHash = hashCode(customChunks.get('composeMainEndPS') ?? '');\n\t\t\t\t\t\tconst key = `${this.toneMapping}` + `-${gammaCorrectionName}` + `-${this.bloomTexture ? 'bloom' : 'nobloom'}` + `-${this.cocTexture ? 'dof' : 'nodof'}` + `-${this.blurTextureUpscale ? 'dofupscale' : ''}` + `-${this.ssaoTexture ? 'ssao' : 'nossao'}` + `-${this.gradingEnabled ? 'grading' : 'nograding'}` + `-${this.colorLUT ? 'colorlut' : 'nocolorlut'}` + `-${this.vignetteEnabled ? 'vignette' : 'novignette'}` + `-${this.fringingEnabled ? 'fringing' : 'nofringing'}` + `-${this.taaEnabled ? 'taa' : 'notaa'}` + `-${this.isSharpnessEnabled ? 'cas' : 'nocas'}` + `-${this._debug ?? ''}` + `-decl${declHash}-start${startHash}-end${endHash}`;\n\t\t\t\t\t\tif (this._key !== key) {\n\t\t\t\t\t\t\t\tthis._key = key;\n\t\t\t\t\t\t\t\tconst defines = new Map();\n\t\t\t\t\t\t\t\tdefines.set('TONEMAP', tonemapNames[this.toneMapping]);\n\t\t\t\t\t\t\t\tdefines.set('GAMMA', gammaCorrectionName);\n\t\t\t\t\t\t\t\tif (this.bloomTexture) defines.set('BLOOM', true);\n\t\t\t\t\t\t\t\tif (this.cocTexture) defines.set('DOF', true);\n\t\t\t\t\t\t\t\tif (this.blurTextureUpscale) defines.set('DOF_UPSCALE', true);\n\t\t\t\t\t\t\t\tif (this.ssaoTexture) defines.set('SSAO', true);\n\t\t\t\t\t\t\t\tif (this.gradingEnabled) defines.set('GRADING', true);\n\t\t\t\t\t\t\t\tif (this.colorLUT) defines.set('COLOR_LUT', true);\n\t\t\t\t\t\t\t\tif (this.vignetteEnabled) defines.set('VIGNETTE', true);\n\t\t\t\t\t\t\t\tif (this.fringingEnabled) defines.set('FRINGING', true);\n\t\t\t\t\t\t\t\tif (this.taaEnabled) defines.set('TAA', true);\n\t\t\t\t\t\t\t\tif (this.isSharpnessEnabled) defines.set('CAS', true);\n\t\t\t\t\t\t\t\tif (this._debug) defines.set('DEBUG_COMPOSE', this._debug);\n\t\t\t\t\t\t\t\tconst includes = new Map(shaderChunks);\n\t\t\t\t\t\t\t\tthis.shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\t\t\t\t\tuniqueName: `ComposeShader-${key}`,\n\t\t\t\t\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\t\t\t\t\tfragmentChunk: 'composePS',\n\t\t\t\t\t\t\t\t\t\tfragmentDefines: defines,\n\t\t\t\t\t\t\t\t\t\tfragmentIncludes: includes\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\texecute() {\n\t\t\t\tconst sceneTex = this.sceneTexture;\n\t\t\t\tthis.sceneTextureId.setValue(sceneTex);\n\t\t\t\tthis.sceneTextureInvResValue[0] = 1.0 / sceneTex.width;\n\t\t\t\tthis.sceneTextureInvResValue[1] = 1.0 / sceneTex.height;\n\t\t\t\tthis.sceneTextureInvResId.setValue(this.sceneTextureInvResValue);\n\t\t\t\tif (this._bloomTexture) {\n\t\t\t\t\t\tthis.bloomTextureId.setValue(this._bloomTexture);\n\t\t\t\t\t\tthis.bloomIntensityId.setValue(this.bloomIntensity);\n\t\t\t\t}\n\t\t\t\tif (this._cocTexture) {\n\t\t\t\t\t\tthis.cocTextureId.setValue(this._cocTexture);\n\t\t\t\t\t\tthis.blurTextureId.setValue(this.blurTexture);\n\t\t\t\t}\n\t\t\t\tif (this._ssaoTexture) {\n\t\t\t\t\t\tthis.ssaoTextureId.setValue(this._ssaoTexture);\n\t\t\t\t}\n\t\t\t\tif (this._gradingEnabled) {\n\t\t\t\t\t\tthis.bcsId.setValue([\n\t\t\t\t\t\t\t\tthis.gradingBrightness,\n\t\t\t\t\t\t\t\tthis.gradingContrast,\n\t\t\t\t\t\t\t\tthis.gradingSaturation\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.tintId.setValue([\n\t\t\t\t\t\t\t\tthis.gradingTint.r,\n\t\t\t\t\t\t\t\tthis.gradingTint.g,\n\t\t\t\t\t\t\t\tthis.gradingTint.b\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tconst lutTexture = this._colorLUT;\n\t\t\t\tif (lutTexture) {\n\t\t\t\t\t\tthis.colorLUTParams[0] = lutTexture.width;\n\t\t\t\t\t\tthis.colorLUTParams[1] = lutTexture.height;\n\t\t\t\t\t\tthis.colorLUTParams[2] = lutTexture.height - 1.0;\n\t\t\t\t\t\tthis.colorLUTParams[3] = this.colorLUTIntensity;\n\t\t\t\t\t\tthis.colorLUTParamsId.setValue(this.colorLUTParams);\n\t\t\t\t\t\tthis.colorLUTId.setValue(lutTexture);\n\t\t\t\t}\n\t\t\t\tif (this._vignetteEnabled) {\n\t\t\t\t\t\tthis.vignetterParamsId.setValue([\n\t\t\t\t\t\t\t\tthis.vignetteInner,\n\t\t\t\t\t\t\t\tthis.vignetteOuter,\n\t\t\t\t\t\t\t\tthis.vignetteCurvature,\n\t\t\t\t\t\t\t\tthis.vignetteIntensity\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tif (this._fringingEnabled) {\n\t\t\t\t\t\tthis.fringingIntensityId.setValue(this.fringingIntensity / 1024);\n\t\t\t\t}\n\t\t\t\tif (this.isSharpnessEnabled) {\n\t\t\t\t\t\tthis.sharpnessId.setValue(math.lerp(-0.125, -0.2, this.sharpness));\n\t\t\t\t}\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glslSampleCatmullRomPS = `\nvec4 SampleTextureCatmullRom(TEXTURE_ACCEPT(tex), vec2 uv, vec2 texSize) {\n\tvec2 samplePos = uv * texSize;\n\tvec2 texPos1 = floor(samplePos - 0.5) + 0.5;\n\tvec2 f = samplePos - texPos1;\n\tvec2 w0 = f * (-0.5 + f * (1.0 - 0.5 * f));\n\tvec2 w1 = 1.0 + f * f * (-2.5 + 1.5 * f);\n\tvec2 w2 = f * (0.5 + f * (2.0 - 1.5 * f));\n\tvec2 w3 = f * f * (-0.5 + 0.5 * f);\n\tvec2 w12 = w1 + w2;\n\tvec2 offset12 = w2 / (w1 + w2);\n\tvec2 texPos0 = (texPos1 - 1.0) / texSize;\n\tvec2 texPos3 = (texPos1 + 2.0) / texSize;\n\tvec2 texPos12 = (texPos1 + offset12) / texSize;\n\tvec4 result = vec4(0.0);\n\tresult += texture2DLod(tex, vec2(texPos0.x, texPos0.y), 0.0) * w0.x * w0.y;\n\tresult += texture2DLod(tex, vec2(texPos12.x, texPos0.y), 0.0) * w12.x * w0.y;\n\tresult += texture2DLod(tex, vec2(texPos3.x, texPos0.y), 0.0) * w3.x * w0.y;\n\tresult += texture2DLod(tex, vec2(texPos0.x, texPos12.y), 0.0) * w0.x * w12.y;\n\tresult += texture2DLod(tex, vec2(texPos12.x, texPos12.y), 0.0) * w12.x * w12.y;\n\tresult += texture2DLod(tex, vec2(texPos3.x, texPos12.y), 0.0) * w3.x * w12.y;\n\tresult += texture2DLod(tex, vec2(texPos0.x, texPos3.y), 0.0) * w0.x * w3.y;\n\tresult += texture2DLod(tex, vec2(texPos12.x, texPos3.y), 0.0) * w12.x * w3.y;\n\tresult += texture2DLod(tex, vec2(texPos3.x, texPos3.y), 0.0) * w3.x * w3.y;\n\treturn result;\n}\n`;\n\nvar wgslSampleCatmullRomPS = `\nfn SampleTextureCatmullRom(tex: texture_2d<f32>, texSampler: sampler, uv: vec2f, texSize: vec2f) -> vec4f {\n\tlet samplePos: vec2f = uv * texSize;\n\tlet texPos1: vec2f = floor(samplePos - 0.5) + 0.5;\n\tlet f: vec2f = samplePos - texPos1;\n\tlet w0: vec2f = f * (-0.5 + f * (1.0 - 0.5 * f));\n\tlet w1: vec2f = 1.0 + f * f * (-2.5 + 1.5 * f);\n\tlet w2: vec2f = f * (0.5 + f * (2.0 - 1.5 * f));\n\tlet w3: vec2f = f * f * (-0.5 + 0.5 * f);\n\tlet w12: vec2f = w1 + w2;\n\tlet offset12: vec2f = w2 / w12;\n\tlet texPos0: vec2f = (texPos1 - 1.0) / texSize;\n\tlet texPos3: vec2f = (texPos1 + 2.0) / texSize;\n\tlet texPos12: vec2f = (texPos1 + offset12) / texSize;\n\tvar result: vec4f = vec4f(0.0);\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos0.x, texPos0.y), 0.0) * w0.x * w0.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos12.x, texPos0.y), 0.0) * w12.x * w0.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos3.x, texPos0.y), 0.0) * w3.x * w0.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos0.x, texPos12.y), 0.0) * w0.x * w12.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos12.x, texPos12.y), 0.0) * w12.x * w12.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos3.x, texPos12.y), 0.0) * w3.x * w12.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos0.x, texPos3.y), 0.0) * w0.x * w3.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos12.x, texPos3.y), 0.0) * w12.x * w3.y;\n\tresult = result + textureSampleLevel(tex, texSampler, vec2f(texPos3.x, texPos3.y), 0.0) * w3.x * w3.y;\n\treturn result;\n}\n`;\n\nvar glsltaaResolvePS = `\n\t#include  \"sampleCatmullRomPS\"\n\t#include  \"screenDepthPS\"\n\tuniform sampler2D sourceTexture;\n\tuniform sampler2D historyTexture;\n\tuniform mat4 matrix_viewProjectionPrevious;\n\tuniform mat4 matrix_viewProjectionInverse;\n\tuniform vec4 jitters;\n\tuniform vec2 textureSize;\n\tvarying vec2 uv0;\n\tvec2 reproject(vec2 uv, float depth) {\n\t\t#ifndef WEBGPU\n\t\t\tdepth = depth * 2.0 - 1.0;\n\t\t#endif\n\t\tvec4 ndc = vec4(uv * 2.0 - 1.0, depth, 1.0);\n\t\tndc.xy -= jitters.xy;\n\t\tvec4 worldPosition = matrix_viewProjectionInverse * ndc;\n\t\tworldPosition /= worldPosition.w;\n\t\tvec4 screenPrevious = matrix_viewProjectionPrevious * worldPosition;\n\t\treturn (screenPrevious.xy / screenPrevious.w) * 0.5 + 0.5;\n\t}\n\tvec4 colorClamp(vec2 uv, vec4 historyColor) {\n\t\tvec3 minColor = vec3(9999.0);\n\t\tvec3 maxColor = vec3(-9999.0);\n\t\tfor(float x = -1.0; x <= 1.0; ++x) {\n\t\t\tfor(float y = -1.0; y <= 1.0; ++y) {\n\t\t\t\tvec3 color = texture2D(sourceTexture, uv + vec2(x, y) / textureSize).rgb;\n\t\t\t\tminColor = min(minColor, color);\n\t\t\t\tmaxColor = max(maxColor, color);\n\t\t\t}\n\t\t}\n\t\tvec3 clamped = clamp(historyColor.rgb, minColor, maxColor);\n\t\treturn vec4(clamped, historyColor.a);\n\t}\n\tvoid main()\n\t{\n\t\tvec2 uv = uv0;\n\t\t#ifdef WEBGPU\n\t\t\tuv.y = 1.0 - uv.y;\n\t\t#endif\n\t\tvec4 srcColor = texture2D(sourceTexture, uv);\n\t\tfloat linearDepth = getLinearScreenDepth(uv0);\n\t\tfloat depth = delinearizeDepth(linearDepth);\n\t\tvec2 historyUv = reproject(uv0, depth);\n\t\t#ifdef QUALITY_HIGH\n\t\t\tvec4 historyColor = SampleTextureCatmullRom(TEXTURE_PASS(historyTexture), historyUv, textureSize);\n\t\t#else\n\t\t\tvec4 historyColor = texture2D(historyTexture, historyUv);\n\t\t#endif\n\t\tvec4 historyColorClamped = colorClamp(uv, historyColor);\n\t\tfloat mixFactor = (historyUv.x < 0.0 || historyUv.x > 1.0 || historyUv.y < 0.0 || historyUv.y > 1.0) ?\n\t\t\t1.0 : 0.05;\n\t\tgl_FragColor = mix(historyColorClamped, srcColor, mixFactor);\n\t}\n`;\n\nvar wgsltaaResolvePS = `\n\t#include \"sampleCatmullRomPS\"\n\t#include \"screenDepthPS\"\n\tvar sourceTexture: texture_2d<f32>;\n\tvar sourceTextureSampler: sampler;\n\tvar historyTexture: texture_2d<f32>;\n\tvar historyTextureSampler: sampler;\n\tuniform matrix_viewProjectionPrevious: mat4x4f;\n\tuniform matrix_viewProjectionInverse: mat4x4f;\n\tuniform jitters: vec4f;\n\tuniform textureSize: vec2f;\n\tvarying uv0: vec2f;\n\tfn reproject(uv: vec2f, depth: f32) -> vec2f {\n\t\tvar ndc = vec4f(uv * 2.0 - 1.0, depth, 1.0);\n\t\tndc = vec4f(ndc.xy - uniform.jitters.xy, ndc.zw);\n\t\tvar worldPosition = uniform.matrix_viewProjectionInverse * ndc;\n\t\tworldPosition = worldPosition / worldPosition.w;\n\t\tlet screenPrevious = uniform.matrix_viewProjectionPrevious * worldPosition;\n\t\treturn (screenPrevious.xy / screenPrevious.w) * 0.5 + 0.5;\n\t}\n\tfn colorClamp(uv: vec2f, historyColor: vec4f) -> vec4f {\n\t\tvar minColor = vec3f(9999.0);\n\t\tvar maxColor = vec3f(-9999.0);\n\t\tfor (var ix: i32 = -1; ix <= 1; ix = ix + 1) {\n\t\t\tfor (var iy: i32 = -1; iy <= 1; iy = iy + 1) {\n\t\t\t\tlet color_sample = textureSample(sourceTexture, sourceTextureSampler, uv + vec2f(f32(ix), f32(iy)) / uniform.textureSize).rgb;\n\t\t\t\tminColor = min(minColor, color_sample);\n\t\t\t\tmaxColor = max(maxColor, color_sample);\n\t\t\t}\n\t\t}\n\t\tlet clamped = clamp(historyColor.rgb, minColor, maxColor);\n\t\treturn vec4f(clamped, historyColor.a);\n\t}\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tvar uv = input.uv0;\n\t\tuv.y = 1.0 - uv.y;\n\t\tlet srcColor = textureSample(sourceTexture, sourceTextureSampler, uv);\n\t\tlet linearDepth = getLinearScreenDepth(uv0);\n\t\tlet depth = delinearizeDepth(linearDepth);\n\t\tlet historyUv = reproject(uv0, depth);\n\t\t#ifdef QUALITY_HIGH\n\t\t\tvar historyColor: vec4f = SampleTextureCatmullRom(historyTexture, historyTextureSampler, historyUv, uniform.textureSize);\n\t\t#else\n\t\t\tvar historyColor: vec4f = textureSample(historyTexture, historyTextureSampler, historyUv);\n\t\t#endif\n\t\tlet historyColorClamped = colorClamp(uv, historyColor);\n\t\tlet mixFactor_condition = historyUv.x < 0.0 || historyUv.x > 1.0 || historyUv.y < 0.0 || historyUv.y > 1.0;\n\t\tlet mixFactor = select(0.05, 1.0, mixFactor_condition);\n\t\toutput.color = mix(historyColorClamped, srcColor, mixFactor);\n\t\treturn output;\n\t}\n`;\n\nclass RenderPassTAA extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, cameraComponent){\n\t\t\t\tsuper(device), this.historyIndex = 0, this.historyTexture = null, this.historyTextures = [], this.historyRenderTargets = [];\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('sampleCatmullRomPS', glslSampleCatmullRomPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('sampleCatmullRomPS', wgslSampleCatmullRomPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('taaResolvePS', glsltaaResolvePS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('taaResolvePS', wgsltaaResolvePS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tdefines.set('QUALITY_HIGH', true);\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'TaaResolveShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'taaResolvePS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tconst { scope } = device;\n\t\t\t\tthis.sourceTextureId = scope.resolve('sourceTexture');\n\t\t\t\tthis.textureSizeId = scope.resolve('textureSize');\n\t\t\t\tthis.textureSize = new Float32Array(2);\n\t\t\t\tthis.historyTextureId = scope.resolve('historyTexture');\n\t\t\t\tthis.viewProjPrevId = scope.resolve('matrix_viewProjectionPrevious');\n\t\t\t\tthis.viewProjInvId = scope.resolve('matrix_viewProjectionInverse');\n\t\t\t\tthis.jittersId = scope.resolve('jitters');\n\t\t\t\tthis.cameraParams = new Float32Array(4);\n\t\t\t\tthis.cameraParamsId = scope.resolve('camera_params');\n\t\t\t\tthis.setup();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tif (this.renderTarget) {\n\t\t\t\t\t\tthis.renderTarget.destroyTextureBuffers();\n\t\t\t\t\t\tthis.renderTarget.destroy();\n\t\t\t\t\t\tthis.renderTarget = null;\n\t\t\t\t}\n\t\t}\n\t\tsetup() {\n\t\t\t\tfor(let i = 0; i < 2; ++i){\n\t\t\t\t\t\tthis.historyTextures[i] = new Texture(this.device, {\n\t\t\t\t\t\t\t\tname: `TAA-History-${i}`,\n\t\t\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\t\t\tformat: this.sourceTexture.format,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.historyRenderTargets[i] = new RenderTarget({\n\t\t\t\t\t\t\t\tcolorBuffer: this.historyTextures[i],\n\t\t\t\t\t\t\t\tdepth: false\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tthis.historyTexture = this.historyTextures[0];\n\t\t\t\tthis.init(this.historyRenderTargets[0], {\n\t\t\t\t\t\tresizeSource: this.sourceTexture\n\t\t\t\t});\n\t\t}\n\t\tbefore() {\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tthis.historyTextureId.setValue(this.historyTextures[1 - this.historyIndex]);\n\t\t\t\tthis.textureSize[0] = this.sourceTexture.width;\n\t\t\t\tthis.textureSize[1] = this.sourceTexture.height;\n\t\t\t\tthis.textureSizeId.setValue(this.textureSize);\n\t\t\t\tconst camera = this.cameraComponent.camera;\n\t\t\t\tthis.viewProjPrevId.setValue(camera._viewProjPrevious.data);\n\t\t\t\tthis.viewProjInvId.setValue(camera._viewProjInverse.data);\n\t\t\t\tthis.jittersId.setValue(camera._jitters);\n\t\t\t\tconst f = camera._farClip;\n\t\t\t\tthis.cameraParams[0] = 1 / f;\n\t\t\t\tthis.cameraParams[1] = f;\n\t\t\t\tthis.cameraParams[2] = camera._nearClip;\n\t\t\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\t\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\t}\n\t\tupdate() {\n\t\t\t\tthis.historyIndex = 1 - this.historyIndex;\n\t\t\t\tthis.historyTexture = this.historyTextures[this.historyIndex];\n\t\t\t\tthis.renderTarget = this.historyRenderTargets[this.historyIndex];\n\t\t\t\treturn this.historyTexture;\n\t\t}\n}\n\nvar glslCocPS = `\n\t#include \"screenDepthPS\"\n\tvarying vec2 uv0;\n\tuniform vec3 params;\n\tvoid main()\n\t{\n\t\tfloat depth = getLinearScreenDepth(uv0);\n\t\tfloat focusDistance = params.x;\n\t\tfloat focusRange = params.y;\n\t\tfloat invRange = params.z;\n\t\tfloat farRange = focusDistance + focusRange * 0.5;\n\t\t\n\t\tfloat cocFar = min((depth - farRange) * invRange, 1.0);\n\t\t#ifdef NEAR_BLUR\n\t\t\tfloat nearRange = focusDistance - focusRange * 0.5;\n\t\t\tfloat cocNear = min((nearRange - depth) * invRange, 1.0);\n\t\t#else\n\t\t\tfloat cocNear = 0.0;\n\t\t#endif\n\t\tgl_FragColor = vec4(cocFar, cocNear, 0.0, 0.0);\n\t}\n`;\n\nvar wgslCocPS = `\n#include \"screenDepthPS\"\nvarying uv0: vec2f;\nuniform params: vec3f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet depth: f32 = getLinearScreenDepth(uv0);\n\tlet focusDistance: f32 = uniform.params.x;\n\tlet focusRange: f32 = uniform.params.y;\n\tlet invRange: f32 = uniform.params.z;\n\tlet farRange: f32 = focusDistance + focusRange * 0.5;\n\tlet cocFar: f32 = min((depth - farRange) * invRange, 1.0);\n\t#ifdef NEAR_BLUR\n\t\tlet nearRange: f32 = focusDistance - focusRange * 0.5;\n\t\tvar cocNear: f32 = min((nearRange - depth) * invRange, 1.0);\n\t#else\n\t\tvar cocNear: f32 = 0.0;\n\t#endif\n\toutput.color = vec4f(cocFar, cocNear, 0.0, 0.0);\n\treturn output;\n}\n`;\n\nclass RenderPassCoC extends RenderPassShaderQuad {\n\t\tconstructor(device, cameraComponent, nearBlur){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('cocPS', glslCocPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('cocPS', wgslCocPS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (nearBlur) defines.set('NEAR_BLUR', '');\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `CocShader-${nearBlur}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'cocPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tthis.paramsId = device.scope.resolve('params');\n\t\t\t\tthis.paramsValue = new Float32Array(3);\n\t\t\t\tthis.cameraParams = new Float32Array(4);\n\t\t\t\tthis.cameraParamsId = device.scope.resolve('camera_params');\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { paramsValue, focusRange } = this;\n\t\t\t\tparamsValue[0] = this.focusDistance + 0.001;\n\t\t\t\tparamsValue[1] = focusRange;\n\t\t\t\tparamsValue[2] = 1 / focusRange;\n\t\t\t\tthis.paramsId.setValue(paramsValue);\n\t\t\t\tconst camera = this.cameraComponent.camera;\n\t\t\t\tconst f = camera._farClip;\n\t\t\t\tthis.cameraParams[0] = 1 / f;\n\t\t\t\tthis.cameraParams[1] = f;\n\t\t\t\tthis.cameraParams[2] = camera._nearClip;\n\t\t\t\tthis.cameraParams[3] = camera.projection === PROJECTION_ORTHOGRAPHIC ? 1 : 0;\n\t\t\t\tthis.cameraParamsId.setValue(this.cameraParams);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glsldofBlurPS = `\n\t#if defined(NEAR_BLUR)\n\t\tuniform sampler2D nearTexture;\n\t#endif\n\tuniform sampler2D farTexture;\n\tuniform sampler2D cocTexture;\n\tuniform vec2 kernel[{KERNEL_COUNT}];\n\tuniform float blurRadiusNear;\n\tuniform float blurRadiusFar;\n\tvarying vec2 uv0;\n\tvoid main()\n\t{\n\t\tvec2 coc = texture2D(cocTexture, uv0).rg;\n\t\tfloat cocFar = coc.r;\n\t\tvec3 sum = vec3(0.0, 0.0, 0.0);\n\t\t#if defined(NEAR_BLUR)\n\t\t\tfloat cocNear = coc.g;\n\t\t\tif (cocNear > 0.0001) {\n\t\t\t\tivec2 nearTextureSize = textureSize(nearTexture, 0);\n\t\t\t\tvec2 step = cocNear * blurRadiusNear / vec2(nearTextureSize);\n\t\t\t\tfor (int i = 0; i < {KERNEL_COUNT}; i++) {\n\t\t\t\t\tvec2 uv = uv0 + step * kernel[i];\n\t\t\t\t\tvec3 tap = texture2DLod(nearTexture, uv, 0.0).rgb;\n\t\t\t\t\tsum += tap.rgb;\n\t\t\t\t}\n\t\t\t\tsum *= float({INV_KERNEL_COUNT});\n\t\t\t} else\n\t\t#endif\n\t\t\t\n\t\t\tif (cocFar > 0.0001) {\n\t\t\tivec2 farTextureSize = textureSize(farTexture, 0);\n\t\t\tvec2 step = cocFar * blurRadiusFar / vec2(farTextureSize);\n\t\t\tfloat sumCoC = 0.0; \n\t\t\tfor (int i = 0; i < {KERNEL_COUNT}; i++) {\n\t\t\t\tvec2 uv = uv0 + step * kernel[i];\n\t\t\t\tvec3 tap = texture2DLod(farTexture, uv, 0.0).rgb;\n\t\t\t\tfloat cocThis = texture2DLod(cocTexture, uv, 0.0).r;\n\t\t\t\ttap *= cocThis;\n\t\t\t\tsumCoC += cocThis;\n\t\t\t\tsum += tap;\n\t\t\t}\n\t\t\tif (sumCoC > 0.0)\n\t\t\t\tsum /= sumCoC;\n\t\t\tsum /= cocFar;\n\t\t}\n\t\tpcFragColor0 = vec4(sum, 1.0);\n\t}\n`;\n\nvar wgsldofBlurPS = `\n#if defined(NEAR_BLUR)\n\tvar nearTexture: texture_2d<f32>;\n\tvar nearTextureSampler: sampler;\n#endif\nvar farTexture: texture_2d<f32>;\nvar farTextureSampler: sampler;\nvar cocTexture: texture_2d<f32>;\nvar cocTextureSampler: sampler;\nuniform kernel: array<vec2f, {KERNEL_COUNT}>;\nuniform blurRadiusNear: f32;\nuniform blurRadiusFar: f32;\nvarying uv0: vec2f;\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet coc: vec2f = textureSample(cocTexture, cocTextureSampler, input.uv0).rg;\n\tlet cocFar: f32 = coc.r;\n\tvar sum: vec3f = vec3f(0.0, 0.0, 0.0);\n\t#if defined(NEAR_BLUR)\n\t\tlet cocNear: f32 = coc.g;\n\t\tif (cocNear > 0.0001) {\n\t\t\tlet nearTextureSize: vec2f = vec2f(textureDimensions(nearTexture, 0));\n\t\t\tlet step: vec2f = cocNear * uniform.blurRadiusNear / nearTextureSize;\n\t\t\tfor (var i: i32 = 0; i < {KERNEL_COUNT}; i = i + 1) {\n\t\t\t\tlet uv: vec2f = uv0 + step * uniform.kernel[i].element;\n\t\t\t\tlet tap: vec3f = textureSampleLevel(nearTexture, nearTextureSampler, uv, 0.0).rgb;\n\t\t\t\tsum = sum + tap;\n\t\t\t}\n\t\t\tsum = sum * f32({INV_KERNEL_COUNT});\n\t\t} else\n\t#endif\n\t\tif (cocFar > 0.0001) {\n\t\t\tlet farTextureSize: vec2f = vec2f(textureDimensions(farTexture, 0));\n\t\t\tlet step: vec2f = cocFar * uniform.blurRadiusFar / farTextureSize;\n\t\t\tvar sumCoC: f32 = 0.0;\n\t\t\tfor (var i: i32 = 0; i < {KERNEL_COUNT}; i = i + 1) {\n\t\t\t\tlet uv: vec2f = uv0 + step * uniform.kernel[i].element;\n\t\t\t\tvar tap: vec3f = textureSampleLevel(farTexture, farTextureSampler, uv, 0.0).rgb;\n\t\t\t\tlet cocThis: f32 = textureSampleLevel(cocTexture, cocTextureSampler, uv, 0.0).r;\n\t\t\t\ttap = tap * cocThis;\n\t\t\t\tsumCoC = sumCoC + cocThis;\n\t\t\t\tsum = sum + tap;\n\t\t\t}\n\t\t\tif (sumCoC > 0.0) {\n\t\t\t\tsum = sum / sumCoC;\n\t\t\t}\n\t\t\tsum = sum / cocFar;\n\t\t}\n\toutput.color = vec4f(sum, 1.0);\n\treturn output;\n}\n`;\n\nclass RenderPassDofBlur extends RenderPassShaderQuad {\n\t\tconstructor(device, nearTexture, farTexture, cocTexture){\n\t\t\t\tsuper(device), this.blurRadiusNear = 1, this.blurRadiusFar = 1, this._blurRings = 3, this._blurRingPoints = 3;\n\t\t\t\tthis.nearTexture = nearTexture;\n\t\t\t\tthis.farTexture = farTexture;\n\t\t\t\tthis.cocTexture = cocTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('dofBlurPS', glsldofBlurPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('dofBlurPS', wgsldofBlurPS);\n\t\t\t\tconst { scope } = device;\n\t\t\t\tthis.kernelId = scope.resolve('kernel[0]');\n\t\t\t\tthis.kernelCountId = scope.resolve('kernelCount');\n\t\t\t\tthis.blurRadiusNearId = scope.resolve('blurRadiusNear');\n\t\t\t\tthis.blurRadiusFarId = scope.resolve('blurRadiusFar');\n\t\t\t\tthis.nearTextureId = scope.resolve('nearTexture');\n\t\t\t\tthis.farTextureId = scope.resolve('farTexture');\n\t\t\t\tthis.cocTextureId = scope.resolve('cocTexture');\n\t\t}\n\t\tset blurRings(value) {\n\t\t\t\tif (this._blurRings !== value) {\n\t\t\t\t\t\tthis._blurRings = value;\n\t\t\t\t\t\tthis.shader = null;\n\t\t\t\t}\n\t\t}\n\t\tget blurRings() {\n\t\t\t\treturn this._blurRings;\n\t\t}\n\t\tset blurRingPoints(value) {\n\t\t\t\tif (this._blurRingPoints !== value) {\n\t\t\t\t\t\tthis._blurRingPoints = value;\n\t\t\t\t\t\tthis.shader = null;\n\t\t\t\t}\n\t\t}\n\t\tget blurRingPoints() {\n\t\t\t\treturn this._blurRingPoints;\n\t\t}\n\t\tcreateShader() {\n\t\t\t\tthis.kernel = new Float32Array(Kernel.concentric(this.blurRings, this.blurRingPoints));\n\t\t\t\tconst kernelCount = this.kernel.length >> 1;\n\t\t\t\tconst nearBlur = this.nearTexture !== null;\n\t\t\t\tconst defines = new Map();\n\t\t\t\tdefines.set('{KERNEL_COUNT}', kernelCount);\n\t\t\t\tdefines.set('{INV_KERNEL_COUNT}', 1.0 / kernelCount);\n\t\t\t\tif (nearBlur) defines.set('NEAR_BLUR', '');\n\t\t\t\tthis.shader = ShaderUtils.createShader(this.device, {\n\t\t\t\t\t\tuniqueName: `DofBlurShader-${kernelCount}-${nearBlur ? 'nearBlur' : 'noNearBlur'}`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'dofBlurPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t}\n\t\texecute() {\n\t\t\t\tif (!this.shader) {\n\t\t\t\t\t\tthis.createShader();\n\t\t\t\t}\n\t\t\t\tthis.nearTextureId.setValue(this.nearTexture);\n\t\t\t\tthis.farTextureId.setValue(this.farTexture);\n\t\t\t\tthis.cocTextureId.setValue(this.cocTexture);\n\t\t\t\tthis.kernelId.setValue(this.kernel);\n\t\t\t\tthis.kernelCountId.setValue(this.kernel.length >> 1);\n\t\t\t\tthis.blurRadiusNearId.setValue(this.blurRadiusNear);\n\t\t\t\tthis.blurRadiusFarId.setValue(this.blurRadiusFar);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nclass RenderPassDof extends RenderPass {\n\t\tconstructor(device, cameraComponent, sceneTexture, sceneTextureHalf, highQuality, nearBlur){\n\t\t\t\tsuper(device), this.focusDistance = 100, this.focusRange = 50, this.blurRadius = 1, this.blurRings = 3, this.blurRingPoints = 3, this.highQuality = true, this.cocTexture = null, this.blurTexture = null, this.cocPass = null, this.farPass = null, this.blurPass = null;\n\t\t\t\tthis.highQuality = highQuality;\n\t\t\t\tthis.cocPass = this.setupCocPass(device, cameraComponent, sceneTexture, nearBlur);\n\t\t\t\tthis.beforePasses.push(this.cocPass);\n\t\t\t\tconst sourceTexture = highQuality ? sceneTexture : sceneTextureHalf;\n\t\t\t\tthis.farPass = this.setupFarPass(device, sourceTexture, 0.5);\n\t\t\t\tthis.beforePasses.push(this.farPass);\n\t\t\t\tthis.blurPass = this.setupBlurPass(device, sceneTextureHalf, nearBlur, highQuality ? 2 : 0.5);\n\t\t\t\tthis.beforePasses.push(this.blurPass);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.destroyRenderPasses();\n\t\t\t\tthis.cocPass = null;\n\t\t\t\tthis.farPass = null;\n\t\t\t\tthis.blurPass = null;\n\t\t\t\tthis.destroyRT(this.cocRT);\n\t\t\t\tthis.destroyRT(this.farRt);\n\t\t\t\tthis.destroyRT(this.blurRt);\n\t\t\t\tthis.cocRT = null;\n\t\t\t\tthis.farRt = null;\n\t\t\t\tthis.blurRt = null;\n\t\t}\n\t\tdestroyRenderPasses() {\n\t\t\t\tfor(let i = 0; i < this.beforePasses.length; i++){\n\t\t\t\t\t\tthis.beforePasses[i].destroy();\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t}\n\t\tdestroyRT(rt) {\n\t\t\t\tif (rt) {\n\t\t\t\t\t\trt.destroyTextureBuffers();\n\t\t\t\t\t\trt.destroy();\n\t\t\t\t}\n\t\t}\n\t\tsetupCocPass(device, cameraComponent, sourceTexture, nearBlur) {\n\t\t\t\tconst format = nearBlur ? PIXELFORMAT_RG8 : PIXELFORMAT_R8;\n\t\t\t\tthis.cocRT = this.createRenderTarget('CoCTexture', format);\n\t\t\t\tthis.cocTexture = this.cocRT.colorBuffer;\n\t\t\t\tconst cocPass = new RenderPassCoC(device, cameraComponent, nearBlur);\n\t\t\t\tcocPass.init(this.cocRT, {\n\t\t\t\t\t\tresizeSource: sourceTexture\n\t\t\t\t});\n\t\t\t\tcocPass.setClearColor(Color.BLACK);\n\t\t\t\treturn cocPass;\n\t\t}\n\t\tsetupFarPass(device, sourceTexture, scale) {\n\t\t\t\tthis.farRt = this.createRenderTarget('FarDofTexture', sourceTexture.format);\n\t\t\t\tconst farPass = new RenderPassDownsample(device, sourceTexture, {\n\t\t\t\t\t\tboxFilter: true,\n\t\t\t\t\t\tpremultiplyTexture: this.cocTexture,\n\t\t\t\t\t\tpremultiplySrcChannel: 'r'\n\t\t\t\t});\n\t\t\t\tfarPass.init(this.farRt, {\n\t\t\t\t\t\tresizeSource: sourceTexture,\n\t\t\t\t\t\tscaleX: scale,\n\t\t\t\t\t\tscaleY: scale\n\t\t\t\t});\n\t\t\t\tfarPass.setClearColor(Color.BLACK);\n\t\t\t\treturn farPass;\n\t\t}\n\t\tsetupBlurPass(device, nearTexture, nearBlur, scale) {\n\t\t\t\tconst farTexture = this.farRt?.colorBuffer;\n\t\t\t\tthis.blurRt = this.createRenderTarget('DofBlurTexture', nearTexture.format);\n\t\t\t\tthis.blurTexture = this.blurRt.colorBuffer;\n\t\t\t\tconst blurPass = new RenderPassDofBlur(device, nearBlur ? nearTexture : null, farTexture, this.cocTexture);\n\t\t\t\tblurPass.init(this.blurRt, {\n\t\t\t\t\t\tresizeSource: nearTexture,\n\t\t\t\t\t\tscaleX: scale,\n\t\t\t\t\t\tscaleY: scale\n\t\t\t\t});\n\t\t\t\tblurPass.setClearColor(Color.BLACK);\n\t\t\t\treturn blurPass;\n\t\t}\n\t\tcreateTexture(name, format) {\n\t\t\t\treturn new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: format,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t}\n\t\tcreateRenderTarget(name, format) {\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: this.createTexture(name, format),\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tstencil: false\n\t\t\t\t});\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tthis.cocPass.focusDistance = this.focusDistance;\n\t\t\t\tthis.cocPass.focusRange = this.focusRange;\n\t\t\t\tthis.blurPass.blurRadiusNear = this.blurRadius;\n\t\t\t\tthis.blurPass.blurRadiusFar = this.blurRadius * (this.highQuality ? 1 : 0.5);\n\t\t\t\tthis.blurPass.blurRings = this.blurRings;\n\t\t\t\tthis.blurPass.blurRingPoints = this.blurRingPoints;\n\t\t}\n}\n\nconst tempMeshInstances = [];\nconst DEPTH_UNIFORM_NAME = 'uSceneDepthMap';\nclass RenderPassPrepass extends RenderPass {\n\t\tconstructor(device, scene, renderer, camera, options){\n\t\t\t\tsuper(device), this.viewBindGroups = [], this.linearDepthClearValue = new Color(0, 0, 0, 0);\n\t\t\t\tthis.scene = scene;\n\t\t\t\tthis.renderer = renderer;\n\t\t\t\tthis.camera = camera;\n\t\t\t\tthis.setupRenderTarget(options);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tthis.renderTarget?.destroy();\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tthis.linearDepthTexture?.destroy();\n\t\t\t\tthis.linearDepthTexture = null;\n\t\t\t\tthis.viewBindGroups.forEach((bg)=>{\n\t\t\t\t\t\tbg.defaultUniformBuffer.destroy();\n\t\t\t\t\t\tbg.destroy();\n\t\t\t\t});\n\t\t\t\tthis.viewBindGroups.length = 0;\n\t\t}\n\t\tsetupRenderTarget(options) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tthis.linearDepthFormat = device.textureFloatRenderable ? PIXELFORMAT_R32F : PIXELFORMAT_RGBA8;\n\t\t\t\tthis.linearDepthTexture = new Texture(device, {\n\t\t\t\t\t\tname: 'SceneLinearDepthTexture',\n\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\tformat: this.linearDepthFormat,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\tconst renderTarget = new RenderTarget({\n\t\t\t\t\t\tname: 'PrepassRT',\n\t\t\t\t\t\tcolorBuffer: this.linearDepthTexture,\n\t\t\t\t\t\tdepth: true,\n\t\t\t\t\t\tsamples: 1\n\t\t\t\t});\n\t\t\t\tthis.camera.shaderParams.sceneDepthMapLinear = true;\n\t\t\t\tthis.init(renderTarget, options);\n\t\t}\n\t\tafter() {\n\t\t\t\tthis.device.scope.resolve(DEPTH_UNIFORM_NAME).setValue(this.linearDepthTexture);\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { renderer, scene, renderTarget } = this;\n\t\t\t\tconst camera = this.camera.camera;\n\t\t\t\tconst layers = scene.layers.layerList;\n\t\t\t\tconst subLayerEnabled = scene.layers.subLayerEnabled;\n\t\t\t\tconst isTransparent = scene.layers.subLayerList;\n\t\t\t\tfor(let i = 0; i < layers.length; i++){\n\t\t\t\t\t\tconst layer = layers[i];\n\t\t\t\t\t\tif (layer.id === LAYERID_DEPTH) {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (layer.enabled && subLayerEnabled[i]) {\n\t\t\t\t\t\t\t\tif (layer.camerasSet.has(camera)) {\n\t\t\t\t\t\t\t\t\t\tconst culledInstances = layer.getCulledInstances(camera);\n\t\t\t\t\t\t\t\t\t\tconst meshInstances = isTransparent[i] ? culledInstances.transparent : culledInstances.opaque;\n\t\t\t\t\t\t\t\t\t\tfor(let j = 0; j < meshInstances.length; j++){\n\t\t\t\t\t\t\t\t\t\t\t\tconst meshInstance = meshInstances[j];\n\t\t\t\t\t\t\t\t\t\t\t\tif (meshInstance.material?.depthWrite) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\ttempMeshInstances.push(meshInstance);\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\trenderer.renderForwardLayer(camera, renderTarget, null, undefined, SHADER_PREPASS, this.viewBindGroups, {\n\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances: tempMeshInstances\n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\ttempMeshInstances.length = 0;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tconst { camera } = this;\n\t\t\t\tthis.setClearDepth(camera.clearDepthBuffer ? 1 : undefined);\n\t\t\t\tlet clearValue;\n\t\t\t\tif (camera.clearDepthBuffer) {\n\t\t\t\t\t\tconst farClip = camera.farClip - Number.MIN_VALUE;\n\t\t\t\t\t\tclearValue = this.linearDepthClearValue;\n\t\t\t\t\t\tif (this.linearDepthFormat === PIXELFORMAT_R32F) {\n\t\t\t\t\t\t\t\tclearValue.r = farClip;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tFloatPacking.float2RGBA8(farClip, clearValue);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.setClearColor(clearValue);\n\t\t}\n}\n\nvar glslDepthAwareBlurPS = `\n\t#include \"screenDepthPS\"\n\tvarying vec2 uv0;\n\tuniform sampler2D sourceTexture;\n\tuniform vec2 sourceInvResolution;\n\tuniform int filterSize;\n\tfloat random(const highp vec2 w) {\n\t\tconst vec3 m = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\treturn fract(m.z * fract(dot(w, m.xy)));\n\t}\n\tmediump float bilateralWeight(in mediump float depth, in mediump float sampleDepth) {\n\t\tmediump float diff = (sampleDepth - depth);\n\t\treturn max(0.0, 1.0 - diff * diff);\n\t}\n\tvoid tap(inout float sum, inout float totalWeight, float weight, float depth, vec2 position) {\n\t\tmediump float color = texture2D(sourceTexture, position).r;\n\t\tmediump float textureDepth = -getLinearScreenDepth(position);\n\t\n\t\tmediump float bilateral = bilateralWeight(depth, textureDepth);\n\t\tbilateral *= weight;\n\t\tsum += color * bilateral;\n\t\ttotalWeight += bilateral;\n\t}\n\tvoid main() {\n\t\tmediump float depth = -getLinearScreenDepth(uv0);\n\t\tmediump float totalWeight = 1.0;\n\t\tmediump float color = texture2D(sourceTexture, uv0 ).r;\n\t\tmediump float sum = color * totalWeight;\n\t\tfor (mediump int i = -filterSize; i <= filterSize; i++) {\n\t\t\tmediump float weight = 1.0;\n\t\t\t#ifdef HORIZONTAL\n\t\t\t\tvec2 offset = vec2(i, 0) * sourceInvResolution;\n\t\t\t#else\n\t\t\t\tvec2 offset = vec2(0, i) * sourceInvResolution;\n\t\t\t#endif\n\t\t\ttap(sum, totalWeight, weight, depth, uv0 + offset);\n\t\t}\n\t\tmediump float ao = sum / totalWeight;\n\t\tgl_FragColor.r = ao;\n\t}\n`;\n\nvar wgslDepthAwareBlurPS = `\n#include \"screenDepthPS\"\nvarying uv0: vec2f;\nvar sourceTexture: texture_2d<f32>;\nvar sourceTextureSampler: sampler;\nuniform sourceInvResolution: vec2f;\nuniform filterSize: i32;\nfn random(w: vec2f) -> f32 {\n\tconst m: vec3f = vec3f(0.06711056, 0.00583715, 52.9829189);\n\treturn fract(m.z * fract(dot(w, m.xy)));\n}\nfn bilateralWeight(depth: f32, sampleDepth: f32) -> f32 {\n\tlet diff: f32 = (sampleDepth - depth);\n\treturn max(0.0, 1.0 - diff * diff);\n}\nfn tap(sum_ptr: ptr<function, f32>, totalWeight_ptr: ptr<function, f32>, weight: f32, depth: f32, position: vec2f) {\n\tlet color: f32 = textureSample(sourceTexture, sourceTextureSampler, position).r;\n\tlet textureDepth: f32 = -getLinearScreenDepth(position);\n\tlet bilateral: f32 = bilateralWeight(depth, textureDepth) * weight;\n\t*sum_ptr = *sum_ptr + color * bilateral;\n\t*totalWeight_ptr = *totalWeight_ptr + bilateral;\n}\n@fragment\nfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\tvar output: FragmentOutput;\n\tlet depth: f32 = -getLinearScreenDepth(input.uv0);\n\tvar totalWeight: f32 = 1.0;\n\tlet color: f32 = textureSample(sourceTexture, sourceTextureSampler, input.uv0 ).r;\n\tvar sum: f32 = color * totalWeight;\n\tfor (var i: i32 = -uniform.filterSize; i <= uniform.filterSize; i = i + 1) {\n\t\tlet weight: f32 = 1.0;\n\t\t#ifdef HORIZONTAL\n\t\t\tvar offset: vec2f = vec2f(f32(i), 0.0) * uniform.sourceInvResolution;\n\t\t#else\n\t\t\tvar offset: vec2f = vec2f(0.0, f32(i)) * uniform.sourceInvResolution;\n\t\t#endif\n\t\ttap(&sum, &totalWeight, weight, depth, input.uv0 + offset);\n\t}\n\tlet ao: f32 = sum / totalWeight;\n\toutput.color = vec4f(ao, ao, ao, 1.0);\n\treturn output;\n}\n`;\n\nclass RenderPassDepthAwareBlur extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, cameraComponent, horizontal){\n\t\t\t\tsuper(device);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('depthAwareBlurPS', glslDepthAwareBlurPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('depthAwareBlurPS', wgslDepthAwareBlurPS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tif (horizontal) defines.set('HORIZONTAL', '');\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: `DepthAware${horizontal ? 'Horizontal' : 'Vertical'}BlurShader`,\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'depthAwareBlurPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tconst scope = this.device.scope;\n\t\t\t\tthis.sourceTextureId = scope.resolve('sourceTexture');\n\t\t\t\tthis.sourceInvResolutionId = scope.resolve('sourceInvResolution');\n\t\t\t\tthis.sourceInvResolutionValue = new Float32Array(2);\n\t\t\t\tthis.filterSizeId = scope.resolve('filterSize');\n\t\t}\n\t\texecute() {\n\t\t\t\tthis.filterSizeId.setValue(4);\n\t\t\t\tthis.sourceTextureId.setValue(this.sourceTexture);\n\t\t\t\tconst { width, height } = this.sourceTexture;\n\t\t\t\tthis.sourceInvResolutionValue[0] = 1.0 / width;\n\t\t\t\tthis.sourceInvResolutionValue[1] = 1.0 / height;\n\t\t\t\tthis.sourceInvResolutionId.setValue(this.sourceInvResolutionValue);\n\t\t\t\tsuper.execute();\n\t\t}\n}\n\nvar glslSsaoPS = `\n\t#include \"screenDepthPS\"\n\t\n\tvarying vec2 uv0;\n\tuniform vec2 uInvResolution;\n\tuniform float uAspect;\n\t#define saturate(x) clamp(x,0.0,1.0)\n\thighp float getWFromProjectionMatrix(const mat4 p, const vec3 v) {\n\t\treturn -v.z;\n\t}\n\thighp float getViewSpaceZFromW(const mat4 p, const float w) {\n\t\treturn -w;\n\t}\n\tconst float kLog2LodRate = 3.0;\n\tfloat random(const highp vec2 w) {\n\t\tconst vec3 m = vec3(0.06711056, 0.00583715, 52.9829189);\n\t\treturn fract(m.z * fract(dot(w, m.xy)));\n\t}\n\thighp vec2 getFragCoord() {\n\t\treturn gl_FragCoord.xy;\n\t}\n\thighp vec3 computeViewSpacePositionFromDepth(highp vec2 uv, highp float linearDepth) {\n\t\treturn vec3((0.5 - uv) * vec2(uAspect, 1.0) * linearDepth, linearDepth);\n\t}\n\thighp vec3 faceNormal(highp vec3 dpdx, highp vec3 dpdy) {\n\t\treturn normalize(cross(dpdx, dpdy));\n\t}\n\thighp vec3 computeViewSpaceNormal(const highp vec3 position) {\n\t\treturn faceNormal(dFdx(position), dFdy(position));\n\t}\n\thighp vec3 computeViewSpaceNormal(const highp vec3 position, const highp vec2 uv) {\n\t\thighp vec2 uvdx = uv + vec2(uInvResolution.x, 0.0);\n\t\thighp vec2 uvdy = uv + vec2(0.0, uInvResolution.y);\n\t\thighp vec3 px = computeViewSpacePositionFromDepth(uvdx, -getLinearScreenDepth(uvdx));\n\t\thighp vec3 py = computeViewSpacePositionFromDepth(uvdy, -getLinearScreenDepth(uvdy));\n\t\thighp vec3 dpdx = px - position;\n\t\thighp vec3 dpdy = py - position;\n\t\treturn faceNormal(dpdx, dpdy);\n\t}\n\tuniform vec2 uSampleCount;\n\tuniform float uSpiralTurns;\n\t#define PI (3.14159)\n\tmediump vec3 tapLocation(mediump float i, const mediump float noise) {\n\t\tmediump float offset = ((2.0 * PI) * 2.4) * noise;\n\t\tmediump float angle = ((i * uSampleCount.y) * uSpiralTurns) * (2.0 * PI) + offset;\n\t\tmediump float radius = (i + noise + 0.5) * uSampleCount.y;\n\t\treturn vec3(cos(angle), sin(angle), radius * radius);\n\t}\n\thighp vec2 startPosition(const float noise) {\n\t\tfloat angle = ((2.0 * PI) * 2.4) * noise;\n\t\treturn vec2(cos(angle), sin(angle));\n\t}\n\tuniform vec2 uAngleIncCosSin;\n\thighp mat2 tapAngleStep() {\n\t\thighp vec2 t = uAngleIncCosSin;\n\t\treturn mat2(t.x, t.y, -t.y, t.x);\n\t}\n\tmediump vec3 tapLocationFast(mediump float i, mediump vec2 p, const mediump float noise) {\n\t\tmediump float radius = (i + noise + 0.5) * uSampleCount.y;\n\t\treturn vec3(p, radius * radius);\n\t}\n\tuniform float uMaxLevel;\n\tuniform float uInvRadiusSquared;\n\tuniform float uMinHorizonAngleSineSquared;\n\tuniform float uBias;\n\tuniform float uPeak2;\n\tvoid computeAmbientOcclusionSAO(inout mediump float occlusion, mediump float i, mediump float ssDiskRadius,\n\t\t\tconst highp vec2 uv, const highp vec3 origin, const mediump vec3 normal,\n\t\t\tconst mediump vec2 tapPosition, const float noise) {\n\t\tmediump vec3 tap = tapLocationFast(i, tapPosition, noise);\n\t\tmediump float ssRadius = max(1.0, tap.z * ssDiskRadius);\n\t\tmediump vec2 uvSamplePos = uv + vec2(ssRadius * tap.xy) * uInvResolution;\n\t\tmediump float level = clamp(floor(log2(ssRadius)) - kLog2LodRate, 0.0, float(uMaxLevel));\n\t\thighp float occlusionDepth = -getLinearScreenDepth(uvSamplePos);\n\t\thighp vec3 p = computeViewSpacePositionFromDepth(uvSamplePos, occlusionDepth);\n\t\tvec3 v = p - origin;\n\t\tfloat vv = dot(v, v);\n\t\tfloat vn = dot(v, normal);\n\t\tmediump float w = max(0.0, 1.0 - vv * uInvRadiusSquared);\n\t\tw = w * w;\n\t\tw *= step(vv * uMinHorizonAngleSineSquared, vn * vn);\n\t\tocclusion += w * max(0.0, vn + origin.z * uBias) / (vv + uPeak2);\n\t}\n\tuniform float uProjectionScaleRadius;\n\tuniform float uIntensity;\n\tuniform float uRandomize;\n\tfloat scalableAmbientObscurance(highp vec2 uv, highp vec3 origin, vec3 normal) {\n\t\tfloat noise = random(getFragCoord()) + uRandomize;\n\t\thighp vec2 tapPosition = startPosition(noise);\n\t\thighp mat2 angleStep = tapAngleStep();\n\t\tfloat ssDiskRadius = -(uProjectionScaleRadius / origin.z);\n\t\tfloat occlusion = 0.0;\n\t\tfor (float i = 0.0; i < uSampleCount.x; i += 1.0) {\n\t\t\tcomputeAmbientOcclusionSAO(occlusion, i, ssDiskRadius, uv, origin, normal, tapPosition, noise);\n\t\t\ttapPosition = angleStep * tapPosition;\n\t\t}\n\t\treturn occlusion;\n\t}\n\tuniform float uPower;\n\tvoid main() {\n\t\thighp vec2 uv = uv0;\n\t\thighp float depth = -getLinearScreenDepth(uv0);\n\t\thighp vec3 origin = computeViewSpacePositionFromDepth(uv, depth);\n\t\tvec3 normal = computeViewSpaceNormal(origin, uv);\n\t\tfloat occlusion = 0.0;\n\t\tif (uIntensity > 0.0) {\n\t\t\tocclusion = scalableAmbientObscurance(uv, origin, normal);\n\t\t}\n\t\tfloat ao = max(0.0, 1.0 - occlusion * uIntensity);\n\t\tao = pow(ao, uPower);\n\t\tgl_FragColor = vec4(ao, ao, ao, 1.0);\n\t}\n`;\n\nvar wgslSsaoPS = `\n\t#include \"screenDepthPS\"\n\tvarying uv0: vec2f;\n\tuniform uInvResolution: vec2f;\n\tuniform uAspect: f32;\n\tfn getWFromProjectionMatrix(p: mat4x4f, v: vec3f) -> f32 {\n\t\treturn -v.z;\n\t}\n\tfn getViewSpaceZFromW(p: mat4x4f, w: f32) -> f32 {\n\t\treturn -w;\n\t}\n\tconst kLog2LodRate: f32 = 3.0;\n\tfn random(w: vec2f) -> f32 {\n\t\tconst m: vec3f = vec3f(0.06711056, 0.00583715, 52.9829189);\n\t\treturn fract(m.z * fract(dot(w, m.xy)));\n\t}\n\tfn getFragCoord() -> vec2f {\n\t\treturn pcPosition.xy;\n\t}\n\tfn computeViewSpacePositionFromDepth(uv: vec2f, linearDepth: f32) -> vec3f {\n\t\treturn vec3f((0.5 - uv) * vec2f(uniform.uAspect, 1.0) * linearDepth, linearDepth);\n\t}\n\tfn faceNormal(dpdx: vec3f, dpdy: vec3f) -> vec3f {\n\t\treturn normalize(cross(dpdx, dpdy));\n\t}\n\tfn computeViewSpaceNormalDeriv(position: vec3f) -> vec3f {\n\t\treturn faceNormal(dpdx(position), dpdy(position));\n\t}\n\tfn computeViewSpaceNormalDepth(position: vec3f, uv: vec2f) -> vec3f {\n\t\tlet uvdx: vec2f = uv + vec2f(uniform.uInvResolution.x, 0.0);\n\t\tlet uvdy: vec2f = uv + vec2f(0.0, uniform.uInvResolution.y);\n\t\tlet px: vec3f = computeViewSpacePositionFromDepth(uvdx, -getLinearScreenDepth(uvdx));\n\t\tlet py: vec3f = computeViewSpacePositionFromDepth(uvdy, -getLinearScreenDepth(uvdy));\n\t\tlet dpdx: vec3f = px - position;\n\t\tlet dpdy: vec3f = py - position;\n\t\treturn faceNormal(dpdx, dpdy);\n\t}\n\tuniform uSampleCount: vec2f;\n\tuniform uSpiralTurns: f32;\n\tconst PI: f32 = 3.14159;\n\tfn tapLocation(i: f32, noise: f32) -> vec3f {\n\t\tlet offset: f32 = ((2.0 * PI) * 2.4) * noise;\n\t\tlet angle: f32 = ((i * uniform.uSampleCount.y) * uniform.uSpiralTurns) * (2.0 * PI) + offset;\n\t\tlet radius: f32 = (i + noise + 0.5) * uniform.uSampleCount.y;\n\t\treturn vec3f(cos(angle), sin(angle), radius * radius);\n\t}\n\tfn startPosition(noise: f32) -> vec2f {\n\t\tlet angle: f32 = ((2.0 * PI) * 2.4) * noise;\n\t\treturn vec2f(cos(angle), sin(angle));\n\t}\n\tuniform uAngleIncCosSin: vec2f;\n\tfn tapAngleStep() -> mat2x2f {\n\t\tlet t: vec2f = uniform.uAngleIncCosSin;\n\t\treturn mat2x2f(vec2f(t.x, t.y), vec2f(-t.y, t.x));\n\t}\n\tfn tapLocationFast(i: f32, p: vec2f, noise_in: f32) -> vec3f {\n\t\tlet radius: f32 = (i + noise_in + 0.5) * uniform.uSampleCount.y;\n\t\treturn vec3f(p.x, p.y, radius * radius);\n\t}\n\tuniform uMaxLevel: f32;\n\tuniform uInvRadiusSquared: f32;\n\tuniform uMinHorizonAngleSineSquared: f32;\n\tuniform uBias: f32;\n\tuniform uPeak2: f32;\n\tfn computeAmbientOcclusionSAO(occlusion_ptr: ptr<function, f32>, i: f32, ssDiskRadius: f32,\n\t\t\tuv: vec2f, origin: vec3f, normal: vec3f,\n\t\t\ttapPosition: vec2f, noise: f32) {\n\t\tlet tap: vec3f = tapLocationFast(i, tapPosition, noise);\n\t\tlet ssRadius: f32 = max(1.0, tap.z * ssDiskRadius);\n\t\tlet uvSamplePos: vec2f = uv + (ssRadius * tap.xy) * uniform.uInvResolution;\n\t\tlet level: f32 = clamp(floor(log2(ssRadius)) - kLog2LodRate, 0.0, uniform.uMaxLevel);\n\t\tlet occlusionDepth: f32 = -getLinearScreenDepth(uvSamplePos);\n\t\tlet p: vec3f = computeViewSpacePositionFromDepth(uvSamplePos, occlusionDepth);\n\t\tlet v: vec3f = p - origin;\n\t\tlet vv: f32 = dot(v, v);\n\t\tlet vn: f32 = dot(v, normal);\n\t\tvar w_val: f32 = max(0.0, 1.0 - vv * uniform.uInvRadiusSquared);\n\t\tw_val = w_val * w_val;\n\t\tw_val = w_val * step(vv * uniform.uMinHorizonAngleSineSquared, vn * vn);\n\t\t*occlusion_ptr = *occlusion_ptr + w_val * max(0.0, vn + origin.z * uniform.uBias) / (vv + uniform.uPeak2);\n\t}\n\tuniform uProjectionScaleRadius: f32;\n\tuniform uIntensity: f32;\n\tuniform uRandomize: f32;\n\tfn scalableAmbientObscurance(uv: vec2f, origin: vec3f, normal: vec3f) -> f32 {\n\t\tlet noise: f32 = random(getFragCoord()) + uniform.uRandomize;\n\t\tvar tapPosition: vec2f = startPosition(noise);\n\t\tlet angleStep: mat2x2f = tapAngleStep();\n\t\tlet ssDiskRadius: f32 = -(uniform.uProjectionScaleRadius / origin.z);\n\t\tvar occlusion: f32 = 0.0;\n\t\tfor (var i: i32 = 0; i < i32(uniform.uSampleCount.x); i = i + 1) {\n\t\t\tcomputeAmbientOcclusionSAO(&occlusion, f32(i), ssDiskRadius, uv, origin, normal, tapPosition, noise);\n\t\t\ttapPosition = angleStep * tapPosition;\n\t\t}\n\t\treturn occlusion;\n\t}\n\tuniform uPower: f32;\n\t@fragment\n\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\tvar output: FragmentOutput;\n\t\tlet uv: vec2f = input.uv0;\n\t\tlet depth: f32 = -getLinearScreenDepth(input.uv0);\n\t\tlet origin: vec3f = computeViewSpacePositionFromDepth(uv, depth);\n\t\tlet normal: vec3f = computeViewSpaceNormalDepth(origin, uv);\n\t\tvar occlusion: f32 = 0.0;\n\t\tif (uniform.uIntensity > 0.0) {\n\t\t\tocclusion = scalableAmbientObscurance(uv, origin, normal);\n\t\t}\n\t\tvar ao: f32 = max(0.0, 1.0 - occlusion * uniform.uIntensity);\n\t\tao = pow(ao, uniform.uPower);\n\t\toutput.color = vec4f(ao, ao, ao, 1.0);\n\t\treturn output;\n\t}\n`;\n\nclass RenderPassSsao extends RenderPassShaderQuad {\n\t\tconstructor(device, sourceTexture, cameraComponent, blurEnabled){\n\t\t\t\tsuper(device), this.radius = 5, this.intensity = 1, this.power = 1, this.sampleCount = 10, this.minAngle = 5, this.randomize = false, this._scale = 1, this._blueNoise = new BlueNoise(19);\n\t\t\t\tthis.sourceTexture = sourceTexture;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_GLSL).set('ssaoPS', glslSsaoPS);\n\t\t\t\tShaderChunks.get(device, SHADERLANGUAGE_WGSL).set('ssaoPS', wgslSsaoPS);\n\t\t\t\tconst defines = new Map();\n\t\t\t\tShaderUtils.addScreenDepthChunkDefines(device, cameraComponent.shaderParams, defines);\n\t\t\t\tthis.shader = ShaderUtils.createShader(device, {\n\t\t\t\t\t\tuniqueName: 'SsaoShader',\n\t\t\t\t\t\tattributes: {\n\t\t\t\t\t\t\t\taPosition: SEMANTIC_POSITION\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvertexChunk: 'quadVS',\n\t\t\t\t\t\tfragmentChunk: 'ssaoPS',\n\t\t\t\t\t\tfragmentDefines: defines\n\t\t\t\t});\n\t\t\t\tconst rt = this.createRenderTarget('SsaoFinalTexture');\n\t\t\t\tthis.ssaoTexture = rt.colorBuffer;\n\t\t\t\tthis.init(rt, {\n\t\t\t\t\t\tresizeSource: this.sourceTexture\n\t\t\t\t});\n\t\t\t\tconst clearColor = new Color(0, 0, 0, 0);\n\t\t\t\tthis.setClearColor(clearColor);\n\t\t\t\tif (blurEnabled) {\n\t\t\t\t\t\tconst blurRT = this.createRenderTarget('SsaoTempTexture');\n\t\t\t\t\t\tconst blurPassHorizontal = new RenderPassDepthAwareBlur(device, rt.colorBuffer, cameraComponent, true);\n\t\t\t\t\t\tblurPassHorizontal.init(blurRT, {\n\t\t\t\t\t\t\t\tresizeSource: rt.colorBuffer\n\t\t\t\t\t\t});\n\t\t\t\t\t\tblurPassHorizontal.setClearColor(clearColor);\n\t\t\t\t\t\tconst blurPassVertical = new RenderPassDepthAwareBlur(device, blurRT.colorBuffer, cameraComponent, false);\n\t\t\t\t\t\tblurPassVertical.init(rt, {\n\t\t\t\t\t\t\t\tresizeSource: rt.colorBuffer\n\t\t\t\t\t\t});\n\t\t\t\t\t\tblurPassVertical.setClearColor(clearColor);\n\t\t\t\t\t\tthis.afterPasses.push(blurPassHorizontal);\n\t\t\t\t\t\tthis.afterPasses.push(blurPassVertical);\n\t\t\t\t}\n\t\t\t\tthis.ssaoTextureId = device.scope.resolve('ssaoTexture');\n\t\t\t\tthis.ssaoTextureSizeInvId = device.scope.resolve('ssaoTextureSizeInv');\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.renderTarget?.destroyTextureBuffers();\n\t\t\t\tthis.renderTarget?.destroy();\n\t\t\t\tthis.renderTarget = null;\n\t\t\t\tif (this.afterPasses.length > 0) {\n\t\t\t\t\t\tconst blurRt = this.afterPasses[0].renderTarget;\n\t\t\t\t\t\tblurRt?.destroyTextureBuffers();\n\t\t\t\t\t\tblurRt?.destroy();\n\t\t\t\t}\n\t\t\t\tthis.afterPasses.forEach((pass)=>pass.destroy());\n\t\t\t\tthis.afterPasses.length = 0;\n\t\t\t\tsuper.destroy();\n\t\t}\n\t\tset scale(value) {\n\t\t\t\tthis._scale = value;\n\t\t\t\tthis.scaleX = value;\n\t\t\t\tthis.scaleY = value;\n\t\t}\n\t\tget scale() {\n\t\t\t\treturn this._scale;\n\t\t}\n\t\tcreateRenderTarget(name) {\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tdepth: false,\n\t\t\t\t\t\tcolorBuffer: new Texture(this.device, {\n\t\t\t\t\t\t\t\tname: name,\n\t\t\t\t\t\t\t\twidth: 1,\n\t\t\t\t\t\t\t\theight: 1,\n\t\t\t\t\t\t\t\tformat: PIXELFORMAT_R8,\n\t\t\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\t\t\tminFilter: FILTER_NEAREST,\n\t\t\t\t\t\t\t\tmagFilter: FILTER_NEAREST,\n\t\t\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t\t\t})\n\t\t\t\t});\n\t\t}\n\t\texecute() {\n\t\t\t\tconst { device, sourceTexture, sampleCount, minAngle, scale } = this;\n\t\t\t\tconst { width, height } = this.renderTarget.colorBuffer;\n\t\t\t\tconst scope = device.scope;\n\t\t\t\tscope.resolve('uAspect').setValue(width / height);\n\t\t\t\tscope.resolve('uInvResolution').setValue([\n\t\t\t\t\t\t1.0 / width,\n\t\t\t\t\t\t1.0 / height\n\t\t\t\t]);\n\t\t\t\tscope.resolve('uSampleCount').setValue([\n\t\t\t\t\t\tsampleCount,\n\t\t\t\t\t\t1.0 / sampleCount\n\t\t\t\t]);\n\t\t\t\tconst minAngleSin = Math.sin(minAngle * Math.PI / 180.0);\n\t\t\t\tscope.resolve('uMinHorizonAngleSineSquared').setValue(minAngleSin * minAngleSin);\n\t\t\t\tconst spiralTurns = 10.0;\n\t\t\t\tconst step = 1.0 / (sampleCount - 0.5) * spiralTurns * 2.0 * 3.141;\n\t\t\t\tconst radius = this.radius / scale;\n\t\t\t\tconst bias = 0.001;\n\t\t\t\tconst peak = 0.1 * radius;\n\t\t\t\tconst intensity = 2 * (peak * 2.0 * 3.141) * this.intensity / sampleCount;\n\t\t\t\tconst projectionScale = 0.5 * sourceTexture.height;\n\t\t\t\tscope.resolve('uSpiralTurns').setValue(spiralTurns);\n\t\t\t\tscope.resolve('uAngleIncCosSin').setValue([\n\t\t\t\t\t\tMath.cos(step),\n\t\t\t\t\t\tMath.sin(step)\n\t\t\t\t]);\n\t\t\t\tscope.resolve('uMaxLevel').setValue(0.0);\n\t\t\t\tscope.resolve('uInvRadiusSquared').setValue(1.0 / (radius * radius));\n\t\t\t\tscope.resolve('uBias').setValue(bias);\n\t\t\t\tscope.resolve('uPeak2').setValue(peak * peak);\n\t\t\t\tscope.resolve('uIntensity').setValue(intensity);\n\t\t\t\tscope.resolve('uPower').setValue(this.power);\n\t\t\t\tscope.resolve('uProjectionScaleRadius').setValue(projectionScale * radius);\n\t\t\t\tscope.resolve('uRandomize').setValue(this.randomize ? this._blueNoise.value() : 0);\n\t\t\t\tsuper.execute();\n\t\t}\n\t\tafter() {\n\t\t\t\tthis.ssaoTextureId.setValue(this.ssaoTexture);\n\t\t\t\tconst srcTexture = this.sourceTexture;\n\t\t\t\tthis.ssaoTextureSizeInvId.setValue([\n\t\t\t\t\t\t1.0 / srcTexture.width,\n\t\t\t\t\t\t1.0 / srcTexture.height\n\t\t\t\t]);\n\t\t}\n}\n\nclass CameraFrameOptions {\n\t\tconstructor(){\n\t\t\t\tthis.stencil = false;\n\t\t\t\tthis.samples = 1;\n\t\t\t\tthis.sceneColorMap = false;\n\t\t\t\tthis.lastGrabLayerId = LAYERID_SKYBOX;\n\t\t\t\tthis.lastGrabLayerIsTransparent = false;\n\t\t\t\tthis.lastSceneLayerId = LAYERID_IMMEDIATE;\n\t\t\t\tthis.lastSceneLayerIsTransparent = true;\n\t\t\t\tthis.taaEnabled = false;\n\t\t\t\tthis.bloomEnabled = false;\n\t\t\t\tthis.ssaoType = SSAOTYPE_NONE;\n\t\t\t\tthis.ssaoBlurEnabled = true;\n\t\t\t\tthis.prepassEnabled = false;\n\t\t\t\tthis.dofEnabled = false;\n\t\t\t\tthis.dofNearBlur = false;\n\t\t\t\tthis.dofHighQuality = true;\n\t\t}\n}\nconst _defaultOptions = new CameraFrameOptions();\nclass RenderPassCameraFrame extends RenderPass {\n\t\tconstructor(app, cameraFrame, cameraComponent, options = {}){\n\t\t\t\tsuper(app.graphicsDevice), this._renderTargetScale = 1, this.layersDirty = false, this.rt = null;\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tthis.cameraFrame = cameraFrame;\n\t\t\t\tthis.options = this.sanitizeOptions(options);\n\t\t\t\tthis.setupRenderPasses(this.options);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.reset();\n\t\t}\n\t\treset() {\n\t\t\t\tthis.sceneTexture = null;\n\t\t\t\tthis.sceneTextureHalf = null;\n\t\t\t\tif (this.rt) {\n\t\t\t\t\t\tthis.rt.destroyTextureBuffers();\n\t\t\t\t\t\tthis.rt.destroy();\n\t\t\t\t\t\tthis.rt = null;\n\t\t\t\t}\n\t\t\t\tif (this.rtHalf) {\n\t\t\t\t\t\tthis.rtHalf.destroyTextureBuffers();\n\t\t\t\t\t\tthis.rtHalf.destroy();\n\t\t\t\t\t\tthis.rtHalf = null;\n\t\t\t\t}\n\t\t\t\tthis.beforePasses.forEach((pass)=>pass.destroy());\n\t\t\t\tthis.beforePasses.length = 0;\n\t\t\t\tthis.prePass = null;\n\t\t\t\tthis.scenePass = null;\n\t\t\t\tthis.scenePassTransparent = null;\n\t\t\t\tthis.colorGrabPass = null;\n\t\t\t\tthis.composePass = null;\n\t\t\t\tthis.bloomPass = null;\n\t\t\t\tthis.ssaoPass = null;\n\t\t\t\tthis.taaPass = null;\n\t\t\t\tthis.afterPass = null;\n\t\t\t\tthis.scenePassHalf = null;\n\t\t\t\tthis.dofPass = null;\n\t\t}\n\t\tsanitizeOptions(options) {\n\t\t\t\toptions = Object.assign({}, _defaultOptions, options);\n\t\t\t\tif (options.taaEnabled || options.ssaoType !== SSAOTYPE_NONE || options.dofEnabled) {\n\t\t\t\t\t\toptions.prepassEnabled = true;\n\t\t\t\t}\n\t\t\t\treturn options;\n\t\t}\n\t\tset renderTargetScale(value) {\n\t\t\t\tthis._renderTargetScale = value;\n\t\t\t\tif (this.scenePass) {\n\t\t\t\t\t\tthis.scenePass.scaleX = value;\n\t\t\t\t\t\tthis.scenePass.scaleY = value;\n\t\t\t\t}\n\t\t}\n\t\tget renderTargetScale() {\n\t\t\t\treturn this._renderTargetScale;\n\t\t}\n\t\tneedsReset(options) {\n\t\t\t\tconst currentOptions = this.options;\n\t\t\t\tconst arraysNotEqual = (arr1, arr2)=>arr1 !== arr2 && (!(Array.isArray(arr1) && Array.isArray(arr2)) || arr1.length !== arr2.length || !arr1.every((value, index)=>value === arr2[index]));\n\t\t\t\treturn options.ssaoType !== currentOptions.ssaoType || options.ssaoBlurEnabled !== currentOptions.ssaoBlurEnabled || options.taaEnabled !== currentOptions.taaEnabled || options.samples !== currentOptions.samples || options.stencil !== currentOptions.stencil || options.bloomEnabled !== currentOptions.bloomEnabled || options.prepassEnabled !== currentOptions.prepassEnabled || options.sceneColorMap !== currentOptions.sceneColorMap || options.dofEnabled !== currentOptions.dofEnabled || options.dofNearBlur !== currentOptions.dofNearBlur || options.dofHighQuality !== currentOptions.dofHighQuality || arraysNotEqual(options.formats, currentOptions.formats);\n\t\t}\n\t\tupdate(options) {\n\t\t\t\toptions = this.sanitizeOptions(options);\n\t\t\t\tif (this.needsReset(options) || this.layersDirty) {\n\t\t\t\t\t\tthis.layersDirty = false;\n\t\t\t\t\t\tthis.reset();\n\t\t\t\t}\n\t\t\t\tthis.options = options;\n\t\t\t\tif (!this.sceneTexture) {\n\t\t\t\t\t\tthis.setupRenderPasses(this.options);\n\t\t\t\t}\n\t\t}\n\t\tcreateRenderTarget(name, depth, stencil, samples, flipY) {\n\t\t\t\tconst texture = new Texture(this.device, {\n\t\t\t\t\t\tname: name,\n\t\t\t\t\t\twidth: 4,\n\t\t\t\t\t\theight: 4,\n\t\t\t\t\t\tformat: this.hdrFormat,\n\t\t\t\t\t\tmipmaps: false,\n\t\t\t\t\t\tminFilter: FILTER_LINEAR,\n\t\t\t\t\t\tmagFilter: FILTER_LINEAR,\n\t\t\t\t\t\taddressU: ADDRESS_CLAMP_TO_EDGE,\n\t\t\t\t\t\taddressV: ADDRESS_CLAMP_TO_EDGE\n\t\t\t\t});\n\t\t\t\treturn new RenderTarget({\n\t\t\t\t\t\tcolorBuffer: texture,\n\t\t\t\t\t\tdepth: depth,\n\t\t\t\t\t\tstencil: stencil,\n\t\t\t\t\t\tsamples: samples,\n\t\t\t\t\t\tflipY: flipY\n\t\t\t\t});\n\t\t}\n\t\tsetupRenderPasses(options) {\n\t\t\t\tconst { device } = this;\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tconst targetRenderTarget = cameraComponent.renderTarget;\n\t\t\t\tthis.hdrFormat = device.getRenderableHdrFormat(options.formats, true, options.samples) || PIXELFORMAT_RGBA8;\n\t\t\t\tthis._bloomEnabled = options.bloomEnabled && this.hdrFormat !== PIXELFORMAT_RGBA8;\n\t\t\t\tthis._sceneHalfEnabled = this._bloomEnabled || options.dofEnabled;\n\t\t\t\tcameraComponent.shaderParams.ssaoEnabled = options.ssaoType === SSAOTYPE_LIGHTING;\n\t\t\t\tconst flipY = !!targetRenderTarget?.flipY;\n\t\t\t\tthis.rt = this.createRenderTarget('SceneColor', true, options.stencil, options.samples, flipY);\n\t\t\t\tthis.sceneTexture = this.rt.colorBuffer;\n\t\t\t\tif (this._sceneHalfEnabled) {\n\t\t\t\t\t\tthis.rtHalf = this.createRenderTarget('SceneColorHalf', false, false, 1, flipY);\n\t\t\t\t\t\tthis.sceneTextureHalf = this.rtHalf.colorBuffer;\n\t\t\t\t}\n\t\t\t\tthis.sceneOptions = {\n\t\t\t\t\t\tresizeSource: targetRenderTarget,\n\t\t\t\t\t\tscaleX: this.renderTargetScale,\n\t\t\t\t\t\tscaleY: this.renderTargetScale\n\t\t\t\t};\n\t\t\t\tthis.createPasses(options);\n\t\t\t\tconst allPasses = this.collectPasses();\n\t\t\t\tthis.beforePasses = allPasses.filter((element)=>element !== undefined && element !== null);\n\t\t}\n\t\tcollectPasses() {\n\t\t\t\treturn [\n\t\t\t\t\t\tthis.prePass,\n\t\t\t\t\t\tthis.ssaoPass,\n\t\t\t\t\t\tthis.scenePass,\n\t\t\t\t\t\tthis.colorGrabPass,\n\t\t\t\t\t\tthis.scenePassTransparent,\n\t\t\t\t\t\tthis.taaPass,\n\t\t\t\t\t\tthis.scenePassHalf,\n\t\t\t\t\t\tthis.bloomPass,\n\t\t\t\t\t\tthis.dofPass,\n\t\t\t\t\t\tthis.composePass,\n\t\t\t\t\t\tthis.afterPass\n\t\t\t\t];\n\t\t}\n\t\tcreatePasses(options) {\n\t\t\t\tthis.setupScenePrepass(options);\n\t\t\t\tthis.setupSsaoPass(options);\n\t\t\t\tconst scenePassesInfo = this.setupScenePass(options);\n\t\t\t\tconst sceneTextureWithTaa = this.setupTaaPass(options);\n\t\t\t\tthis.setupSceneHalfPass(options, sceneTextureWithTaa);\n\t\t\t\tthis.setupBloomPass(options, this.sceneTextureHalf);\n\t\t\t\tthis.setupDofPass(options, this.sceneTexture, this.sceneTextureHalf);\n\t\t\t\tthis.setupComposePass(options);\n\t\t\t\tthis.setupAfterPass(options, scenePassesInfo);\n\t\t}\n\t\tsetupScenePrepass(options) {\n\t\t\t\tif (options.prepassEnabled) {\n\t\t\t\t\t\tconst { app, device, cameraComponent } = this;\n\t\t\t\t\t\tconst { scene, renderer } = app;\n\t\t\t\t\t\tthis.prePass = new RenderPassPrepass(device, scene, renderer, cameraComponent, this.sceneOptions);\n\t\t\t\t}\n\t\t}\n\t\tsetupScenePassSettings(pass) {\n\t\t\t\tpass.gammaCorrection = GAMMA_NONE;\n\t\t\t\tpass.toneMapping = TONEMAP_NONE;\n\t\t}\n\t\tsetupScenePass(options) {\n\t\t\t\tconst { app, device, cameraComponent } = this;\n\t\t\t\tconst { scene, renderer } = app;\n\t\t\t\tconst composition = scene.layers;\n\t\t\t\tthis.scenePass = new RenderPassForward(device, composition, scene, renderer);\n\t\t\t\tthis.setupScenePassSettings(this.scenePass);\n\t\t\t\tthis.scenePass.init(this.rt, this.sceneOptions);\n\t\t\t\tconst lastLayerId = options.sceneColorMap ? options.lastGrabLayerId : options.lastSceneLayerId;\n\t\t\t\tconst lastLayerIsTransparent = options.sceneColorMap ? options.lastGrabLayerIsTransparent : options.lastSceneLayerIsTransparent;\n\t\t\t\tconst ret = {\n\t\t\t\t\t\tlastAddedIndex: 0,\n\t\t\t\t\t\tclearRenderTarget: true\n\t\t\t\t};\n\t\t\t\tret.lastAddedIndex = this.scenePass.addLayers(composition, cameraComponent, ret.lastAddedIndex, ret.clearRenderTarget, lastLayerId, lastLayerIsTransparent);\n\t\t\t\tret.clearRenderTarget = false;\n\t\t\t\tif (options.sceneColorMap) {\n\t\t\t\t\t\tthis.colorGrabPass = new RenderPassColorGrab(device);\n\t\t\t\t\t\tthis.colorGrabPass.source = this.rt;\n\t\t\t\t\t\tthis.scenePassTransparent = new RenderPassForward(device, composition, scene, renderer);\n\t\t\t\t\t\tthis.setupScenePassSettings(this.scenePassTransparent);\n\t\t\t\t\t\tthis.scenePassTransparent.init(this.rt);\n\t\t\t\t\t\tret.lastAddedIndex = this.scenePassTransparent.addLayers(composition, cameraComponent, ret.lastAddedIndex, ret.clearRenderTarget, options.lastSceneLayerId, options.lastSceneLayerIsTransparent);\n\t\t\t\t\t\tif (!this.scenePassTransparent.rendersAnything) {\n\t\t\t\t\t\t\t\tthis.scenePassTransparent.destroy();\n\t\t\t\t\t\t\t\tthis.scenePassTransparent = null;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.scenePassTransparent) {\n\t\t\t\t\t\t\t\tif (options.prepassEnabled) {\n\t\t\t\t\t\t\t\t\t\tthis.scenePassTransparent.depthStencilOps.storeDepth = true;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn ret;\n\t\t}\n\t\tsetupSsaoPass(options) {\n\t\t\t\tconst { ssaoBlurEnabled, ssaoType } = options;\n\t\t\t\tconst { device, cameraComponent } = this;\n\t\t\t\tif (ssaoType !== SSAOTYPE_NONE) {\n\t\t\t\t\t\tthis.ssaoPass = new RenderPassSsao(device, this.sceneTexture, cameraComponent, ssaoBlurEnabled);\n\t\t\t\t}\n\t\t}\n\t\tsetupSceneHalfPass(options, sourceTexture) {\n\t\t\t\tif (this._sceneHalfEnabled) {\n\t\t\t\t\t\tthis.scenePassHalf = new RenderPassDownsample(this.device, this.sceneTexture, {\n\t\t\t\t\t\t\t\tboxFilter: true,\n\t\t\t\t\t\t\t\tremoveInvalid: true\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.scenePassHalf.name = 'RenderPassSceneHalf';\n\t\t\t\t\t\tthis.scenePassHalf.init(this.rtHalf, {\n\t\t\t\t\t\t\t\tresizeSource: sourceTexture,\n\t\t\t\t\t\t\t\tscaleX: 0.5,\n\t\t\t\t\t\t\t\tscaleY: 0.5\n\t\t\t\t\t\t});\n\t\t\t\t\t\tthis.scenePassHalf.setClearColor(Color.BLACK);\n\t\t\t\t}\n\t\t}\n\t\tsetupBloomPass(options, inputTexture) {\n\t\t\t\tif (this._bloomEnabled) {\n\t\t\t\t\t\tthis.bloomPass = new RenderPassBloom(this.device, inputTexture, this.hdrFormat);\n\t\t\t\t}\n\t\t}\n\t\tsetupDofPass(options, inputTexture, inputTextureHalf) {\n\t\t\t\tif (options.dofEnabled) {\n\t\t\t\t\t\tthis.dofPass = new RenderPassDof(this.device, this.cameraComponent, inputTexture, inputTextureHalf, options.dofHighQuality, options.dofNearBlur);\n\t\t\t\t}\n\t\t}\n\t\tsetupTaaPass(options) {\n\t\t\t\tlet textureWithTaa = this.sceneTexture;\n\t\t\t\tif (options.taaEnabled) {\n\t\t\t\t\t\tthis.taaPass = new RenderPassTAA(this.device, this.sceneTexture, this.cameraComponent);\n\t\t\t\t\t\ttextureWithTaa = this.taaPass.historyTexture;\n\t\t\t\t}\n\t\t\t\treturn textureWithTaa;\n\t\t}\n\t\tsetupComposePass(options) {\n\t\t\t\tthis.composePass = new RenderPassCompose(this.device);\n\t\t\t\tthis.composePass.bloomTexture = this.bloomPass?.bloomTexture;\n\t\t\t\tthis.composePass.taaEnabled = options.taaEnabled;\n\t\t\t\tthis.composePass.cocTexture = this.dofPass?.cocTexture;\n\t\t\t\tthis.composePass.blurTexture = this.dofPass?.blurTexture;\n\t\t\t\tthis.composePass.blurTextureUpscale = !this.dofPass?.highQuality;\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tconst targetRenderTarget = cameraComponent.renderTarget;\n\t\t\t\tthis.composePass.init(targetRenderTarget);\n\t\t\t\tthis.composePass.ssaoTexture = options.ssaoType === SSAOTYPE_COMBINE ? this.ssaoPass.ssaoTexture : null;\n\t\t}\n\t\tsetupAfterPass(options, scenePassesInfo) {\n\t\t\t\tconst { app, cameraComponent } = this;\n\t\t\t\tconst { scene, renderer } = app;\n\t\t\t\tconst composition = scene.layers;\n\t\t\t\tconst targetRenderTarget = cameraComponent.renderTarget;\n\t\t\t\tthis.afterPass = new RenderPassForward(this.device, composition, scene, renderer);\n\t\t\t\tthis.afterPass.init(targetRenderTarget);\n\t\t\t\tthis.afterPass.addLayers(composition, cameraComponent, scenePassesInfo.lastAddedIndex, scenePassesInfo.clearRenderTarget);\n\t\t}\n\t\tframeUpdate() {\n\t\t\t\tif (this.layersDirty) {\n\t\t\t\t\t\tthis.cameraFrame.update();\n\t\t\t\t}\n\t\t\t\tsuper.frameUpdate();\n\t\t\t\tconst sceneTexture = this.taaPass?.update() ?? this.rt.colorBuffer;\n\t\t\t\tthis.composePass.sceneTexture = sceneTexture;\n\t\t\t\tthis.scenePassHalf?.setSourceTexture(sceneTexture);\n\t\t}\n}\n\nclass CameraFrame {\n\t\tconstructor(app, cameraComponent){\n\t\t\t\tthis._enabled = true;\n\t\t\t\tthis.rendering = {\n\t\t\t\t\t\trenderFormats: [\n\t\t\t\t\t\t\t\tPIXELFORMAT_111110F,\n\t\t\t\t\t\t\t\tPIXELFORMAT_RGBA16F,\n\t\t\t\t\t\t\t\tPIXELFORMAT_RGBA32F\n\t\t\t\t\t\t],\n\t\t\t\t\t\tstencil: false,\n\t\t\t\t\t\trenderTargetScale: 1.0,\n\t\t\t\t\t\tsamples: 1,\n\t\t\t\t\t\tsceneColorMap: false,\n\t\t\t\t\t\tsceneDepthMap: false,\n\t\t\t\t\t\ttoneMapping: 0,\n\t\t\t\t\t\tsharpness: 0.0\n\t\t\t\t};\n\t\t\t\tthis.ssao = {\n\t\t\t\t\t\ttype: SSAOTYPE_NONE,\n\t\t\t\t\t\tblurEnabled: true,\n\t\t\t\t\t\trandomize: false,\n\t\t\t\t\t\tintensity: 0.5,\n\t\t\t\t\t\tradius: 30,\n\t\t\t\t\t\tsamples: 12,\n\t\t\t\t\t\tpower: 6,\n\t\t\t\t\t\tminAngle: 10,\n\t\t\t\t\t\tscale: 1\n\t\t\t\t};\n\t\t\t\tthis.bloom = {\n\t\t\t\t\t\tintensity: 0,\n\t\t\t\t\t\tblurLevel: 16\n\t\t\t\t};\n\t\t\t\tthis.grading = {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tbrightness: 1,\n\t\t\t\t\t\tcontrast: 1,\n\t\t\t\t\t\tsaturation: 1,\n\t\t\t\t\t\ttint: new Color(1, 1, 1, 1)\n\t\t\t\t};\n\t\t\t\tthis.colorLUT = {\n\t\t\t\t\t\ttexture: null,\n\t\t\t\t\t\tintensity: 1\n\t\t\t\t};\n\t\t\t\tthis.vignette = {\n\t\t\t\t\t\tintensity: 0,\n\t\t\t\t\t\tinner: 0.5,\n\t\t\t\t\t\touter: 1,\n\t\t\t\t\t\tcurvature: 0.5\n\t\t\t\t};\n\t\t\t\tthis.taa = {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tjitter: 1\n\t\t\t\t};\n\t\t\t\tthis.fringing = {\n\t\t\t\t\t\tintensity: 0\n\t\t\t\t};\n\t\t\t\tthis.dof = {\n\t\t\t\t\t\tenabled: false,\n\t\t\t\t\t\tnearBlur: false,\n\t\t\t\t\t\tfocusDistance: 100,\n\t\t\t\t\t\tfocusRange: 10,\n\t\t\t\t\t\tblurRadius: 3,\n\t\t\t\t\t\tblurRings: 4,\n\t\t\t\t\t\tblurRingPoints: 5,\n\t\t\t\t\t\thighQuality: true\n\t\t\t\t};\n\t\t\t\tthis.debug = null;\n\t\t\t\tthis.options = new CameraFrameOptions();\n\t\t\t\tthis.renderPassCamera = null;\n\t\t\t\tthis.app = app;\n\t\t\t\tthis.cameraComponent = cameraComponent;\n\t\t\t\tthis.updateOptions();\n\t\t\t\tthis.enable();\n\t\t\t\tthis.cameraLayersChanged = cameraComponent.on('set:layers', ()=>{\n\t\t\t\t\t\tif (this.renderPassCamera) this.renderPassCamera.layersDirty = true;\n\t\t\t\t});\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.disable();\n\t\t\t\tthis.cameraLayersChanged.off();\n\t\t}\n\t\tenable() {\n\t\t\t\tthis.renderPassCamera = this.createRenderPass();\n\t\t\t\tthis.cameraComponent.renderPasses = [\n\t\t\t\t\t\tthis.renderPassCamera\n\t\t\t\t];\n\t\t}\n\t\tdisable() {\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tcameraComponent.renderPasses?.forEach((renderPass)=>{\n\t\t\t\t\t\trenderPass.destroy();\n\t\t\t\t});\n\t\t\t\tcameraComponent.renderPasses = [];\n\t\t\t\tcameraComponent.rendering = null;\n\t\t\t\tcameraComponent.jitter = 0;\n\t\t\t\tcameraComponent.shaderParams.ssaoEnabled = false;\n\t\t\t\tthis.renderPassCamera = null;\n\t\t}\n\t\tcreateRenderPass() {\n\t\t\t\treturn new RenderPassCameraFrame(this.app, this, this.cameraComponent, this.options);\n\t\t}\n\t\tset enabled(value) {\n\t\t\t\tif (this._enabled !== value) {\n\t\t\t\t\t\tif (value) {\n\t\t\t\t\t\t\t\tthis.enable();\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.disable();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._enabled = value;\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this._enabled;\n\t\t}\n\t\tupdateOptions() {\n\t\t\t\tconst { options, rendering, bloom, taa, ssao } = this;\n\t\t\t\toptions.stencil = rendering.stencil;\n\t\t\t\toptions.samples = rendering.samples;\n\t\t\t\toptions.sceneColorMap = rendering.sceneColorMap;\n\t\t\t\toptions.prepassEnabled = rendering.sceneDepthMap;\n\t\t\t\toptions.bloomEnabled = bloom.intensity > 0;\n\t\t\t\toptions.taaEnabled = taa.enabled;\n\t\t\t\toptions.ssaoType = ssao.type;\n\t\t\t\toptions.ssaoBlurEnabled = ssao.blurEnabled;\n\t\t\t\toptions.formats = rendering.renderFormats.slice();\n\t\t\t\toptions.dofEnabled = this.dof.enabled;\n\t\t\t\toptions.dofNearBlur = this.dof.nearBlur;\n\t\t\t\toptions.dofHighQuality = this.dof.highQuality;\n\t\t}\n\t\tupdate() {\n\t\t\t\tif (!this._enabled) return;\n\t\t\t\tconst cameraComponent = this.cameraComponent;\n\t\t\t\tconst { options, renderPassCamera, rendering, bloom, grading, vignette, fringing, taa, ssao } = this;\n\t\t\t\tthis.updateOptions();\n\t\t\t\trenderPassCamera.update(options);\n\t\t\t\tconst { composePass, bloomPass, ssaoPass, dofPass } = renderPassCamera;\n\t\t\t\trenderPassCamera.renderTargetScale = math.clamp(rendering.renderTargetScale, 0.1, 1);\n\t\t\t\tcomposePass.toneMapping = rendering.toneMapping;\n\t\t\t\tcomposePass.sharpness = rendering.sharpness;\n\t\t\t\tif (options.bloomEnabled && bloomPass) {\n\t\t\t\t\t\tcomposePass.bloomIntensity = bloom.intensity;\n\t\t\t\t\t\tbloomPass.blurLevel = bloom.blurLevel;\n\t\t\t\t}\n\t\t\t\tif (options.dofEnabled) {\n\t\t\t\t\t\tdofPass.focusDistance = this.dof.focusDistance;\n\t\t\t\t\t\tdofPass.focusRange = this.dof.focusRange;\n\t\t\t\t\t\tdofPass.blurRadius = this.dof.blurRadius;\n\t\t\t\t\t\tdofPass.blurRings = this.dof.blurRings;\n\t\t\t\t\t\tdofPass.blurRingPoints = this.dof.blurRingPoints;\n\t\t\t\t}\n\t\t\t\tif (options.ssaoType !== SSAOTYPE_NONE) {\n\t\t\t\t\t\tssaoPass.intensity = ssao.intensity;\n\t\t\t\t\t\tssaoPass.power = ssao.power;\n\t\t\t\t\t\tssaoPass.radius = ssao.radius;\n\t\t\t\t\t\tssaoPass.sampleCount = ssao.samples;\n\t\t\t\t\t\tssaoPass.minAngle = ssao.minAngle;\n\t\t\t\t\t\tssaoPass.scale = ssao.scale;\n\t\t\t\t\t\tssaoPass.randomize = ssao.randomize;\n\t\t\t\t}\n\t\t\t\tcomposePass.gradingEnabled = grading.enabled;\n\t\t\t\tif (grading.enabled) {\n\t\t\t\t\t\tcomposePass.gradingSaturation = grading.saturation;\n\t\t\t\t\t\tcomposePass.gradingBrightness = grading.brightness;\n\t\t\t\t\t\tcomposePass.gradingContrast = grading.contrast;\n\t\t\t\t\t\tcomposePass.gradingTint = grading.tint;\n\t\t\t\t}\n\t\t\t\tcomposePass.colorLUT = this.colorLUT.texture;\n\t\t\t\tcomposePass.colorLUTIntensity = this.colorLUT.intensity;\n\t\t\t\tcomposePass.vignetteEnabled = vignette.intensity > 0;\n\t\t\t\tif (composePass.vignetteEnabled) {\n\t\t\t\t\t\tcomposePass.vignetteInner = vignette.inner;\n\t\t\t\t\t\tcomposePass.vignetteOuter = vignette.outer;\n\t\t\t\t\t\tcomposePass.vignetteCurvature = vignette.curvature;\n\t\t\t\t\t\tcomposePass.vignetteIntensity = vignette.intensity;\n\t\t\t\t}\n\t\t\t\tcomposePass.fringingEnabled = fringing.intensity > 0;\n\t\t\t\tif (composePass.fringingEnabled) {\n\t\t\t\t\t\tcomposePass.fringingIntensity = fringing.intensity;\n\t\t\t\t}\n\t\t\t\tcameraComponent.jitter = taa.enabled ? taa.jitter : 0;\n\t\t\t\tcomposePass.debug = this.debug;\n\t\t\t\tif (composePass.debug === 'ssao' && options.ssaoType === SSAOTYPE_NONE) composePass.debug = null;\n\t\t\t\tif (composePass.debug === 'vignette' && !composePass.vignetteEnabled) composePass.debug = null;\n\t\t}\n}\n\nconst tmpV1$5 = new Vec3();\nconst rotation$4 = new Quat();\nclass Pose {\n\t\tconstructor(position = Vec3.ZERO, angles = Vec3.ZERO, distance = 0){\n\t\t\t\tthis.position = new Vec3();\n\t\t\t\tthis.angles = new Vec3();\n\t\t\t\tthis.distance = 0;\n\t\t\t\tthis.pitchRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.yawRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.xRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.yRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.zRange = new Vec2(-Infinity, Infinity);\n\t\t\t\tthis.set(position, angles, distance);\n\t\t}\n\t\tcopy(other) {\n\t\t\t\treturn this.set(other.position, other.angles, other.distance);\n\t\t}\n\t\tclone() {\n\t\t\t\treturn new Pose(this.position.clone(), this.angles.clone(), this.distance);\n\t\t}\n\t\tequalsApprox(other, epsilon = 1e-6) {\n\t\t\t\treturn this.position.equalsApprox(other.position, epsilon) && this.angles.equalsApprox(other.angles, epsilon) && Math.abs(this.distance - other.distance) < epsilon;\n\t\t}\n\t\tlerp(lhs, rhs, alpha1, alpha2 = alpha1, alpha3 = alpha1) {\n\t\t\t\tthis.position.lerp(lhs.position, rhs.position, alpha1);\n\t\t\t\tthis.angles.x = math.lerpAngle(lhs.angles.x, rhs.angles.x, alpha2) % 360;\n\t\t\t\tthis.angles.y = math.lerpAngle(lhs.angles.y, rhs.angles.y, alpha2) % 360;\n\t\t\t\tthis.angles.z = math.lerpAngle(lhs.angles.z, rhs.angles.z, alpha2) % 360;\n\t\t\t\tthis.distance = math.lerp(lhs.distance, rhs.distance, alpha3);\n\t\t\t\treturn this;\n\t\t}\n\t\tmove(offset) {\n\t\t\t\tthis.position.add(offset);\n\t\t\t\tthis.position.x = math.clamp(this.position.x, this.xRange.x, this.xRange.y);\n\t\t\t\tthis.position.y = math.clamp(this.position.y, this.yRange.x, this.yRange.y);\n\t\t\t\tthis.position.z = math.clamp(this.position.z, this.zRange.x, this.zRange.y);\n\t\t\t\treturn this;\n\t\t}\n\t\trotate(euler) {\n\t\t\t\tthis.angles.add(euler);\n\t\t\t\tthis.angles.x %= 360;\n\t\t\t\tthis.angles.y %= 360;\n\t\t\t\tthis.angles.z %= 360;\n\t\t\t\tthis.angles.x = math.clamp(this.angles.x, this.pitchRange.x, this.pitchRange.y);\n\t\t\t\tthis.angles.y = math.clamp(this.angles.y, this.yawRange.x, this.yawRange.y);\n\t\t\t\treturn this;\n\t\t}\n\t\tset(position, angles, distance) {\n\t\t\t\tthis.position.copy(position);\n\t\t\t\tthis.angles.copy(angles);\n\t\t\t\tthis.distance = distance;\n\t\t\t\treturn this;\n\t\t}\n\t\tlook(from, to) {\n\t\t\t\tthis.position.copy(from);\n\t\t\t\tthis.distance = from.distance(to);\n\t\t\t\tconst dir = tmpV1$5.sub2(to, from).normalize();\n\t\t\t\tconst elev = Math.atan2(-dir.y, Math.sqrt(dir.x * dir.x + dir.z * dir.z)) * math.RAD_TO_DEG;\n\t\t\t\tconst azim = Math.atan2(-dir.x, -dir.z) * math.RAD_TO_DEG;\n\t\t\t\tthis.angles.set(-elev, azim, 0);\n\t\t\t\treturn this;\n\t\t}\n\t\tgetFocus(out) {\n\t\t\t\treturn rotation$4.setFromEulerAngles(this.angles).transformVector(Vec3.FORWARD, out).mulScalar(this.distance).add(this.position);\n\t\t}\n}\n\nclass InputDelta {\n\t\tconstructor(arg){\n\t\t\t\tif (Array.isArray(arg)) {\n\t\t\t\t\t\tthis._value = arg.slice();\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._value = new Array(+arg).fill(0);\n\t\t\t\t}\n\t\t}\n\t\tadd(other) {\n\t\t\t\tfor(let i = 0; i < this._value.length; i++){\n\t\t\t\t\t\tthis._value[i] += other._value[i] || 0;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tappend(offsets) {\n\t\t\t\tfor(let i = 0; i < this._value.length; i++){\n\t\t\t\t\t\tthis._value[i] += offsets[i] || 0;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tcopy(other) {\n\t\t\t\tfor(let i = 0; i < this._value.length; i++){\n\t\t\t\t\t\tthis._value[i] = other._value[i] || 0;\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t}\n\t\tlength() {\n\t\t\t\tlet sum = 0;\n\t\t\t\tfor (const value of this._value){\n\t\t\t\t\t\tsum += value * value;\n\t\t\t\t}\n\t\t\t\treturn Math.sqrt(sum);\n\t\t}\n\t\tread() {\n\t\t\t\tconst value = this._value.slice();\n\t\t\t\tthis._value.fill(0);\n\t\t\t\treturn value;\n\t\t}\n}\nclass InputFrame {\n\t\tconstructor(data){\n\t\t\t\tthis.deltas = {};\n\t\t\t\tfor(const name in data){\n\t\t\t\t\t\tthis.deltas[name] = new InputDelta(data[name]);\n\t\t\t\t}\n\t\t}\n\t\tread() {\n\t\t\t\tconst frame = {};\n\t\t\t\tfor(const name in this.deltas){\n\t\t\t\t\t\tframe[name] = this.deltas[name].read();\n\t\t\t\t}\n\t\t\t\treturn frame;\n\t\t}\n}\nclass InputSource extends InputFrame {\n\t\ton(event, callback) {\n\t\t\t\tthis._events.on(event, callback);\n\t\t}\n\t\toff(event, callback) {\n\t\t\t\tthis._events.off(event, callback);\n\t\t}\n\t\tfire(event, ...args) {\n\t\t\t\tthis._events.fire(event, ...args);\n\t\t}\n\t\tattach(element) {\n\t\t\t\tif (this._element) {\n\t\t\t\t\t\tthis.detach();\n\t\t\t\t}\n\t\t\t\tthis._element = element;\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element = null;\n\t\t\t\tthis.read();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t\t\tthis._events.off();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._element = null, this._events = new EventHandler();\n\t\t}\n}\nclass InputConsumer {\n\t\tupdate(frame, dt) {\n\t\t\t\tframe.read();\n\t\t}\n}\nclass InputController extends InputConsumer {\n\t\tattach(pose, smooth = true) {}\n\t\tdetach() {}\n\t\tupdate(frame, dt) {\n\t\t\t\tsuper.update(frame, dt);\n\t\t\t\treturn this._pose;\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._pose = new Pose();\n\t\t}\n}\n\nconst DOUBLE_TAP_THRESHOLD = 250;\nconst DOUBLE_TAP_VARIANCE = 100;\n\nconst movementState = ()=>{\n\t\tconst state = new Map();\n\t\treturn {\n\t\t\t\tdown: (event)=>{\n\t\t\t\t\t\tstate.set(event.pointerId, [\n\t\t\t\t\t\t\t\tevent.screenX,\n\t\t\t\t\t\t\t\tevent.screenY\n\t\t\t\t\t\t]);\n\t\t\t\t},\n\t\t\t\tmove: (event)=>{\n\t\t\t\t\t\tif (!state.has(event.pointerId)) {\n\t\t\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst prev = state.get(event.pointerId);\n\t\t\t\t\t\tconst mvX = event.screenX - prev[0];\n\t\t\t\t\t\tconst mvY = event.screenY - prev[1];\n\t\t\t\t\t\tprev[0] = event.screenX;\n\t\t\t\t\t\tprev[1] = event.screenY;\n\t\t\t\t\t\treturn [\n\t\t\t\t\t\t\t\tmvX,\n\t\t\t\t\t\t\t\tmvY\n\t\t\t\t\t\t];\n\t\t\t\t},\n\t\t\t\tup: (event)=>{\n\t\t\t\t\t\tstate.delete(event.pointerId);\n\t\t\t\t}\n\t\t};\n};\n\nconst v$1 = new Vec2();\nclass VirtualJoystick {\n\t\tconstructor({ range } = {}){\n\t\t\t\tthis._range = 70;\n\t\t\t\tthis._position = new Vec2();\n\t\t\t\tthis._value = new Vec2();\n\t\t\t\tthis._range = range ?? this._range;\n\t\t}\n\t\tget value() {\n\t\t\t\treturn this._value;\n\t\t}\n\t\tdown(x, y) {\n\t\t\t\tthis._position.set(x, y);\n\t\t\t\tthis._value.set(0, 0);\n\t\t\t\treturn [\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty,\n\t\t\t\t\t\tx,\n\t\t\t\t\t\ty\n\t\t\t\t];\n\t\t}\n\t\tmove(x, y) {\n\t\t\t\tv$1.set(x - this._position.x, y - this._position.y);\n\t\t\t\tif (v$1.length() > this._range) {\n\t\t\t\t\t\tv$1.normalize().mulScalar(this._range);\n\t\t\t\t}\n\t\t\t\tthis._value.set(math.clamp(v$1.x / this._range, -1, 1), math.clamp(v$1.y / this._range, -1, 1));\n\t\t\t\tconst { x: bx, y: by } = this._position;\n\t\t\t\treturn [\n\t\t\t\t\t\tbx,\n\t\t\t\t\t\tby,\n\t\t\t\t\t\tbx + v$1.x,\n\t\t\t\t\t\tby + v$1.y\n\t\t\t\t];\n\t\t}\n\t\tup() {\n\t\t\t\tthis._position.set(0, 0);\n\t\t\t\tthis._value.set(0, 0);\n\t\t\t\treturn [\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1,\n\t\t\t\t\t\t-1\n\t\t\t\t];\n\t\t}\n}\n\nclass SingleGestureSource extends InputSource {\n\t\tconstructor(){\n\t\t\t\tsuper({\n\t\t\t\t\t\tinput: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdoubleTap: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._layout = 'joystick', this._pointerData = new Map(), this._lastPointer = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\ttime: 0\n\t\t\t\t};\n\t\t\t\tthis._joystick = new VirtualJoystick();\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t}\n\t\tset layout(value) {\n\t\t\t\tif (this._layout === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._layout = value;\n\t\t\t\tthis.read();\n\t\t\t\tthis._pointerData.clear();\n\t\t}\n\t\tget layout() {\n\t\t\t\treturn this._layout;\n\t\t}\n\t\tget joystick() {\n\t\t\t\treturn this._joystick;\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tconst { pointerType, pointerId, clientX, clientY } = event;\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.setPointerCapture(pointerId);\n\t\t\t\tthis._pointerData.set(pointerId, {\n\t\t\t\t\t\tx: clientX,\n\t\t\t\t\t\ty: clientY\n\t\t\t\t});\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst sqrDist = (this._lastPointer.x - clientX) ** 2 + (this._lastPointer.y - clientY) ** 2;\n\t\t\t\tif (sqrDist < DOUBLE_TAP_VARIANCE && now - this._lastPointer.time < DOUBLE_TAP_THRESHOLD) {\n\t\t\t\t\t\tthis.deltas.doubleTap.append([\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tthis._lastPointer.x = clientX;\n\t\t\t\tthis._lastPointer.y = clientY;\n\t\t\t\tthis._lastPointer.time = now;\n\t\t\t\tif (this._layout === 'joystick') {\n\t\t\t\t\t\tthis.fire('joystick:position', this._joystick.down(clientX, clientY));\n\t\t\t\t}\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst { pointerType, pointerId, target, clientX, clientY } = event;\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tdata.x = clientX;\n\t\t\t\tdata.y = clientY;\n\t\t\t\tif (this._layout === 'joystick') {\n\t\t\t\t\t\tthis.fire('joystick:position', this._joystick.move(clientX, clientY));\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.deltas.input.append([\n\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tconst { pointerType, pointerId } = event;\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.releasePointerCapture(pointerId);\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerData.delete(pointerId);\n\t\t\t\tif (this._layout === 'joystick') {\n\t\t\t\t\t\tthis.fire('joystick:position', this._joystick.up());\n\t\t\t\t}\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._pointerData.clear();\n\t\t\t\tsuper.detach();\n\t\t}\n\t\tread() {\n\t\t\t\tthis.deltas.input.append([\n\t\t\t\t\t\tthis._joystick.value.x,\n\t\t\t\t\t\tthis._joystick.value.y\n\t\t\t\t]);\n\t\t\t\treturn super.read();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._joystick.up();\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nconst startsWith = (str, prefix)=>str.indexOf(prefix) === 0;\nconst endsWith = (str, suffix)=>str.indexOf(suffix, str.length - suffix.length) !== -1;\nclass DualGestureSource extends InputSource {\n\t\tconstructor(layout){\n\t\t\t\tsuper({\n\t\t\t\t\t\tleftInput: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\trightInput: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tdoubleTap: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._layout = 'joystick-touch', this._pointerData = new Map(), this._lastPointer = {\n\t\t\t\t\t\tx: 0,\n\t\t\t\t\t\ty: 0,\n\t\t\t\t\t\ttime: 0\n\t\t\t\t};\n\t\t\t\tif (layout) {\n\t\t\t\t\t\tthis.layout = layout;\n\t\t\t\t}\n\t\t\t\tthis._leftJoystick = new VirtualJoystick();\n\t\t\t\tthis._rightJoystick = new VirtualJoystick();\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t}\n\t\tset layout(value) {\n\t\t\t\tif (this._layout === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._layout = value;\n\t\t\t\tthis.read();\n\t\t\t\tthis._pointerData.clear();\n\t\t}\n\t\tget layout() {\n\t\t\t\treturn this._layout;\n\t\t}\n\t\tget leftJoystick() {\n\t\t\t\treturn this._leftJoystick;\n\t\t}\n\t\tget rightJoystick() {\n\t\t\t\treturn this._rightJoystick;\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tconst { pointerType, pointerId, clientX, clientY } = event;\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.setPointerCapture(pointerId);\n\t\t\t\tconst left = clientX < window.innerWidth * 0.5;\n\t\t\t\tthis._pointerData.set(pointerId, {\n\t\t\t\t\t\tx: clientX,\n\t\t\t\t\t\ty: clientY,\n\t\t\t\t\t\tleft\n\t\t\t\t});\n\t\t\t\tconst now = Date.now();\n\t\t\t\tconst sqrDist = (this._lastPointer.x - clientX) ** 2 + (this._lastPointer.y - clientY) ** 2;\n\t\t\t\tif (sqrDist < DOUBLE_TAP_VARIANCE && now - this._lastPointer.time < DOUBLE_TAP_THRESHOLD) {\n\t\t\t\t\t\tthis.deltas.doubleTap.append([\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\tthis._lastPointer.x = clientX;\n\t\t\t\tthis._lastPointer.y = clientY;\n\t\t\t\tthis._lastPointer.time = now;\n\t\t\t\tif (left && startsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:left', this._leftJoystick.down(clientX, clientY));\n\t\t\t\t}\n\t\t\t\tif (!left && endsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:right', this._rightJoystick.down(clientX, clientY));\n\t\t\t\t}\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst { pointerType, pointerId, target, clientX, clientY } = event;\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { left } = data;\n\t\t\t\tdata.x = clientX;\n\t\t\t\tdata.y = clientY;\n\t\t\t\tif (left) {\n\t\t\t\t\t\tif (startsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\t\t\tthis.fire('joystick:position:left', this._leftJoystick.move(clientX, clientY));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.deltas.leftInput.append([\n\t\t\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (endsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\t\t\tthis.fire('joystick:position:right', this._rightJoystick.move(clientX, clientY));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.deltas.rightInput.append([\n\t\t\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tconst { pointerType, pointerId } = event;\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.releasePointerCapture(pointerId);\n\t\t\t\tconst data = this._pointerData.get(pointerId);\n\t\t\t\tif (!data) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst { left } = data;\n\t\t\t\tthis._pointerData.delete(pointerId);\n\t\t\t\tif (left && startsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:left', this._leftJoystick.up());\n\t\t\t\t}\n\t\t\t\tif (!left && endsWith(this._layout, 'joystick')) {\n\t\t\t\t\t\tthis.fire('joystick:position:right', this._rightJoystick.up());\n\t\t\t\t}\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._pointerData.clear();\n\t\t\t\tsuper.detach();\n\t\t}\n\t\tread() {\n\t\t\t\tthis.deltas.leftInput.append([\n\t\t\t\t\t\tthis._leftJoystick.value.x,\n\t\t\t\t\t\tthis._leftJoystick.value.y\n\t\t\t\t]);\n\t\t\t\tthis.deltas.rightInput.append([\n\t\t\t\t\t\tthis._rightJoystick.value.x,\n\t\t\t\t\t\tthis._rightJoystick.value.y\n\t\t\t\t]);\n\t\t\t\treturn super.read();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._leftJoystick.up();\n\t\t\t\tthis._rightJoystick.up();\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nconst tmpVa = new Vec2();\nclass MultiTouchSource extends InputSource {\n\t\tconstructor(){\n\t\t\t\tsuper({\n\t\t\t\t\t\ttouch: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tcount: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tpinch: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._pointerEvents = new Map(), this._pointerPos = new Vec2(), this._pinchDist = -1;\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t\t\tthis._onContextMenu = this._onContextMenu.bind(this);\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tconst { pointerId, pointerType } = event;\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.setPointerCapture(pointerId);\n\t\t\t\tthis._pointerEvents.set(pointerId, event);\n\t\t\t\tthis.deltas.count.append([\n\t\t\t\t\t\t1\n\t\t\t\t]);\n\t\t\t\tif (this._pointerEvents.size > 1) {\n\t\t\t\t\t\tthis._getMidPoint(this._pointerPos);\n\t\t\t\t\t\tthis._pinchDist = this._getPinchDist();\n\t\t\t\t}\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst { pointerType, target, pointerId } = event;\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._pointerEvents.size === 0) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerEvents.set(pointerId, event);\n\t\t\t\tif (this._pointerEvents.size > 1) {\n\t\t\t\t\t\tconst mid = this._getMidPoint(tmpVa);\n\t\t\t\t\t\tthis.deltas.touch.append([\n\t\t\t\t\t\t\t\tmid.x - this._pointerPos.x,\n\t\t\t\t\t\t\t\tmid.y - this._pointerPos.y\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis._pointerPos.copy(mid);\n\t\t\t\t\t\tconst pinchDist = this._getPinchDist();\n\t\t\t\t\t\tif (this._pinchDist > 0) {\n\t\t\t\t\t\t\t\tthis.deltas.pinch.append([\n\t\t\t\t\t\t\t\t\t\tthis._pinchDist - pinchDist\n\t\t\t\t\t\t\t\t]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._pinchDist = pinchDist;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.deltas.touch.append([\n\t\t\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\t\t\tmovementY\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tconst { pointerType, pointerId } = event;\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (pointerType !== 'touch') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element?.releasePointerCapture(pointerId);\n\t\t\t\tthis._pointerEvents.delete(pointerId);\n\t\t\t\tthis.deltas.count.append([\n\t\t\t\t\t\t-1\n\t\t\t\t]);\n\t\t\t\tif (this._pointerEvents.size < 2) {\n\t\t\t\t\t\tthis._pinchDist = -1;\n\t\t\t\t}\n\t\t\t\tthis._pointerPos.set(0, 0);\n\t\t}\n\t\t_onContextMenu(event) {\n\t\t\t\tevent.preventDefault();\n\t\t}\n\t\t_getMidPoint(out) {\n\t\t\t\tif (this._pointerEvents.size < 2) {\n\t\t\t\t\t\treturn out.set(0, 0);\n\t\t\t\t}\n\t\t\t\tconst [a, b] = this._pointerEvents.values();\n\t\t\t\tconst dx = a.clientX - b.clientX;\n\t\t\t\tconst dy = a.clientY - b.clientY;\n\t\t\t\treturn out.set(b.clientX + dx * 0.5, b.clientY + dy * 0.5);\n\t\t}\n\t\t_getPinchDist() {\n\t\t\t\tif (this._pointerEvents.size < 2) {\n\t\t\t\t\t\treturn 0;\n\t\t\t\t}\n\t\t\t\tconst [a, b] = this._pointerEvents.values();\n\t\t\t\tconst dx = a.clientX - b.clientX;\n\t\t\t\tconst dy = a.clientY - b.clientY;\n\t\t\t\treturn Math.sqrt(dx * dx + dy * dy);\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('contextmenu', this._onContextMenu);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('contextmenu', this._onContextMenu);\n\t\t\t\tthis._pointerEvents.clear();\n\t\t\t\tsuper.detach();\n\t\t}\n}\n\nconst PASSIVE = {\n\t\tpassive: false\n};\nconst KEY_CODES = {\n\t\tA: 0,\n\t\tB: 1,\n\t\tC: 2,\n\t\tD: 3,\n\t\tE: 4,\n\t\tF: 5,\n\t\tG: 6,\n\t\tH: 7,\n\t\tI: 8,\n\t\tJ: 9,\n\t\tK: 10,\n\t\tL: 11,\n\t\tM: 12,\n\t\tN: 13,\n\t\tO: 14,\n\t\tP: 15,\n\t\tQ: 16,\n\t\tR: 17,\n\t\tS: 18,\n\t\tT: 19,\n\t\tU: 20,\n\t\tV: 21,\n\t\tW: 22,\n\t\tX: 23,\n\t\tY: 24,\n\t\tZ: 25,\n\t\t'0': 26,\n\t\t'1': 27,\n\t\t'2': 28,\n\t\t'3': 29,\n\t\t'4': 30,\n\t\t'5': 31,\n\t\t'6': 32,\n\t\t'7': 33,\n\t\t'8': 34,\n\t\t'9': 35,\n\t\tUP: 36,\n\t\tDOWN: 37,\n\t\tLEFT: 38,\n\t\tRIGHT: 39,\n\t\tSPACE: 40,\n\t\tSHIFT: 41,\n\t\tCTRL: 42\n};\nconst KEY_COUNT = Object.keys(KEY_CODES).length;\nconst array = Array(KEY_COUNT).fill(0);\nclass KeyboardMouseSource extends InputSource {\n\t\tstatic{\n\t\t\t\tthis.keyCode = KEY_CODES;\n\t\t}\n\t\tconstructor({ pointerLock = false } = {}){\n\t\t\t\tsuper({\n\t\t\t\t\t\tkey: Array(KEY_COUNT).fill(0),\n\t\t\t\t\t\tbutton: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\tmouse: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\twheel: [\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._movementState = movementState(), this._pointerId = -1, this._keyMap = new Map(), this._keyPrev = Array(KEY_COUNT).fill(0), this._keyNow = Array(KEY_COUNT).fill(0), this._button = Array(3).fill(0);\n\t\t\t\tthis._pointerLock = pointerLock ?? false;\n\t\t\t\tconst { keyCode } = KeyboardMouseSource;\n\t\t\t\tfor(let i = 0; i < 26; i++){\n\t\t\t\t\t\tconst code = `Key${String.fromCharCode('A'.charCodeAt(0) + i)}`;\n\t\t\t\t\t\tthis._keyMap.set(code, keyCode.A + i);\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < 10; i++){\n\t\t\t\t\t\tconst code = `Digit${i}`;\n\t\t\t\t\t\tthis._keyMap.set(code, keyCode['0'] + i);\n\t\t\t\t}\n\t\t\t\tthis._keyMap.set('ArrowUp', keyCode.UP);\n\t\t\t\tthis._keyMap.set('ArrowDown', keyCode.DOWN);\n\t\t\t\tthis._keyMap.set('ArrowLeft', keyCode.LEFT);\n\t\t\t\tthis._keyMap.set('ArrowRight', keyCode.RIGHT);\n\t\t\t\tthis._keyMap.set('Space', keyCode.SPACE);\n\t\t\t\tthis._keyMap.set('ShiftLeft', keyCode.SHIFT);\n\t\t\t\tthis._keyMap.set('ShiftRight', keyCode.SHIFT);\n\t\t\t\tthis._keyMap.set('ControlLeft', keyCode.CTRL);\n\t\t\t\tthis._keyMap.set('ControlRight', keyCode.CTRL);\n\t\t\t\tthis._onWheel = this._onWheel.bind(this);\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t\t\tthis._onContextMenu = this._onContextMenu.bind(this);\n\t\t\t\tthis._onKeyDown = this._onKeyDown.bind(this);\n\t\t\t\tthis._onKeyUp = this._onKeyUp.bind(this);\n\t\t}\n\t\t_onWheel(event) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\tthis.deltas.wheel.append([\n\t\t\t\t\t\tevent.deltaY\n\t\t\t\t]);\n\t\t}\n\t\t_onPointerDown(event) {\n\t\t\t\tthis._movementState.down(event);\n\t\t\t\tif (event.pointerType !== 'mouse') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._pointerLock) {\n\t\t\t\t\t\tif (document.pointerLockElement !== this._element) {\n\t\t\t\t\t\t\t\tthis._element?.requestPointerLock();\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._element?.setPointerCapture(event.pointerId);\n\t\t\t\t}\n\t\t\t\tthis._clearButtons();\n\t\t\t\tthis._button[event.button] = 1;\n\t\t\t\tthis.deltas.button.append(this._button);\n\t\t\t\tif (this._pointerId !== -1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerId = event.pointerId;\n\t\t}\n\t\t_onPointerMove(event) {\n\t\t\t\tconst [movementX, movementY] = this._movementState.move(event);\n\t\t\t\tif (event.pointerType !== 'mouse') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (event.target !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (this._pointerLock) {\n\t\t\t\t\t\tif (document.pointerLockElement !== this._element) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t\tif (this._pointerId !== event.pointerId) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis.deltas.mouse.append([\n\t\t\t\t\t\tmovementX,\n\t\t\t\t\t\tmovementY\n\t\t\t\t]);\n\t\t}\n\t\t_onPointerUp(event) {\n\t\t\t\tthis._movementState.up(event);\n\t\t\t\tif (event.pointerType !== 'mouse') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif (!this._pointerLock) {\n\t\t\t\t\t\tthis._element?.releasePointerCapture(event.pointerId);\n\t\t\t\t}\n\t\t\t\tthis._clearButtons();\n\t\t\t\tthis.deltas.button.append(this._button);\n\t\t\t\tif (this._pointerId !== event.pointerId) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._pointerId = -1;\n\t\t}\n\t\t_onContextMenu(event) {\n\t\t\t\tevent.preventDefault();\n\t\t}\n\t\t_onKeyDown(event) {\n\t\t\t\tif (this._pointerLock && document.pointerLockElement !== this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tthis._setKey(event.code, 1);\n\t\t}\n\t\t_onKeyUp(event) {\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tthis._setKey(event.code, 0);\n\t\t}\n\t\t_clearButtons() {\n\t\t\t\tfor(let i = 0; i < this._button.length; i++){\n\t\t\t\t\t\tif (this._button[i] === 1) {\n\t\t\t\t\t\t\t\tthis._button[i] = -1;\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._button[i] = 0;\n\t\t\t\t}\n\t\t}\n\t\t_setKey(code, value) {\n\t\t\t\tif (!this._keyMap.has(code)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._keyNow[this._keyMap.get(code) ?? 0] = value;\n\t\t}\n\t\tattach(element) {\n\t\t\t\tsuper.attach(element);\n\t\t\t\tthis._element = element;\n\t\t\t\tthis._element.addEventListener('wheel', this._onWheel, PASSIVE);\n\t\t\t\tthis._element.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('pointerleave', this._onPointerUp);\n\t\t\t\tthis._element.addEventListener('contextmenu', this._onContextMenu);\n\t\t\t\twindow.addEventListener('keydown', this._onKeyDown, false);\n\t\t\t\twindow.addEventListener('keyup', this._onKeyUp, false);\n\t\t}\n\t\tdetach() {\n\t\t\t\tif (!this._element) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._element.removeEventListener('wheel', this._onWheel, PASSIVE);\n\t\t\t\tthis._element.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._element.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._element.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointercancel', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('pointerleave', this._onPointerUp);\n\t\t\t\tthis._element.removeEventListener('contextmenu', this._onContextMenu);\n\t\t\t\twindow.removeEventListener('keydown', this._onKeyDown, false);\n\t\t\t\twindow.removeEventListener('keyup', this._onKeyUp, false);\n\t\t\t\tthis._keyNow.fill(0);\n\t\t\t\tthis._keyPrev.fill(0);\n\t\t\t\tsuper.detach();\n\t\t}\n\t\tread() {\n\t\t\t\tfor(let i = 0; i < array.length; i++){\n\t\t\t\t\t\tarray[i] = this._keyNow[i] - this._keyPrev[i];\n\t\t\t\t\t\tthis._keyPrev[i] = this._keyNow[i];\n\t\t\t\t}\n\t\t\t\tthis.deltas.key.append(array);\n\t\t\t\treturn super.read();\n\t\t}\n}\n\nconst BUTTON_CODES = {\n\t\tA: 0,\n\t\tB: 1,\n\t\tX: 2,\n\t\tY: 3,\n\t\tLB: 4,\n\t\tRB: 5,\n\t\tLT: 6,\n\t\tRT: 7,\n\t\tSELECT: 8,\n\t\tSTART: 9,\n\t\tLEFT_STICK: 10,\n\t\tRIGHT_STICK: 11\n};\nconst BUTTON_COUNT = Object.keys(BUTTON_CODES).length;\nclass GamepadSource extends InputSource {\n\t\tstatic{\n\t\t\t\tthis.buttonCode = BUTTON_CODES;\n\t\t}\n\t\tconstructor(){\n\t\t\t\tsuper({\n\t\t\t\t\t\tbuttons: Array(BUTTON_COUNT).fill(0),\n\t\t\t\t\t\tleftStick: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t],\n\t\t\t\t\t\trightStick: [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t]\n\t\t\t\t}), this._buttonPrev = Array(BUTTON_COUNT).fill(0);\n\t\t}\n\t\tread() {\n\t\t\t\tconst gamepads = navigator.getGamepads();\n\t\t\t\tfor(let i = 0; i < gamepads.length; i++){\n\t\t\t\t\t\tconst gp = gamepads[i];\n\t\t\t\t\t\tif (!gp) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gp.mapping !== 'standard') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gp.axes.length < 4) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (gp.buttons.length < BUTTON_COUNT) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst { buttons, axes } = gp;\n\t\t\t\t\t\tfor(let j = 0; j < this._buttonPrev.length; j++){\n\t\t\t\t\t\t\t\tconst state = +buttons[j].pressed;\n\t\t\t\t\t\t\t\tthis.deltas.buttons[j] = state - this._buttonPrev[j];\n\t\t\t\t\t\t\t\tthis._buttonPrev[j] = state;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.deltas.leftStick.append([\n\t\t\t\t\t\t\t\taxes[0],\n\t\t\t\t\t\t\t\taxes[1]\n\t\t\t\t\t\t]);\n\t\t\t\t\t\tthis.deltas.rightStick.append([\n\t\t\t\t\t\t\t\taxes[2],\n\t\t\t\t\t\t\t\taxes[3]\n\t\t\t\t\t\t]);\n\t\t\t\t}\n\t\t\t\treturn super.read();\n\t\t}\n}\n\nconst damp = (damping, dt)=>1 - Math.pow(damping, dt * 1000);\n\nconst offset$1 = new Vec3();\nconst angles$1 = new Vec3();\nconst forward = new Vec3();\nconst right = new Vec3();\nconst up = new Vec3();\nconst rotation$3 = new Quat();\nclass FlyController extends InputController {\n\t\tset pitchRange(value) {\n\t\t\t\tthis._targetPose.pitchRange.copy(value);\n\t\t\t\tthis._pose.copy(this._targetPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget pitchRange() {\n\t\t\t\treturn this._targetPose.pitchRange;\n\t\t}\n\t\tset yawRange(value) {\n\t\t\t\tthis._targetPose.yawRange.copy(value);\n\t\t\t\tthis._pose.copy(this._targetPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget yawRange() {\n\t\t\t\treturn this._targetPose.yawRange;\n\t\t}\n\t\tattach(pose, smooth = true) {\n\t\t\t\tthis._targetPose.copy(pose);\n\t\t\t\tif (!smooth) {\n\t\t\t\t\t\tthis._pose.copy(this._targetPose);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis._targetPose.copy(this._pose);\n\t\t}\n\t\tupdate(frame, dt) {\n\t\t\t\tconst { move, rotate } = frame.read();\n\t\t\t\tthis._targetPose.rotate(angles$1.set(-rotate[1], -rotate[0], 0));\n\t\t\t\trotation$3.setFromEulerAngles(this._pose.angles);\n\t\t\t\trotation$3.transformVector(Vec3.FORWARD, forward);\n\t\t\t\trotation$3.transformVector(Vec3.RIGHT, right);\n\t\t\t\trotation$3.transformVector(Vec3.UP, up);\n\t\t\t\toffset$1.set(0, 0, 0);\n\t\t\t\toffset$1.add(forward.mulScalar(move[2]));\n\t\t\t\toffset$1.add(right.mulScalar(move[0]));\n\t\t\t\toffset$1.add(up.mulScalar(move[1]));\n\t\t\t\tthis._targetPose.move(offset$1);\n\t\t\t\treturn this._pose.lerp(this._pose, this._targetPose, damp(this.moveDamping, dt), damp(this.rotateDamping, dt));\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._targetPose = new Pose(), this.rotateDamping = 0.98, this.moveDamping = 0.98;\n\t\t}\n}\n\nconst dir$2 = new Vec3();\nconst offset = new Vec3();\nconst angles = new Vec3();\nconst rotation$2 = new Quat();\nclass OrbitController extends InputController {\n\t\tset pitchRange(range) {\n\t\t\t\tthis._targetRootPose.pitchRange.copy(range);\n\t\t\t\tthis._rootPose.copy(this._targetRootPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget pitchRange() {\n\t\t\t\treturn this._targetRootPose.pitchRange;\n\t\t}\n\t\tset yawRange(range) {\n\t\t\t\tthis._targetRootPose.yawRange.copy(range);\n\t\t\t\tthis._rootPose.copy(this._targetRootPose.rotate(Vec3.ZERO));\n\t\t}\n\t\tget yawRange() {\n\t\t\t\treturn this._targetRootPose.yawRange;\n\t\t}\n\t\tset zoomRange(range) {\n\t\t\t\tthis._targetChildPose.zRange.copy(range);\n\t\t\t\tthis._childPose.copy(this._targetChildPose.move(Vec3.ZERO));\n\t\t}\n\t\tget zoomRange() {\n\t\t\t\treturn this._targetRootPose.zRange;\n\t\t}\n\t\tattach(pose, smooth = true) {\n\t\t\t\tthis._targetRootPose.set(pose.getFocus(dir$2), pose.angles, 0);\n\t\t\t\tthis._targetChildPose.position.set(0, 0, pose.distance);\n\t\t\t\tif (!smooth) {\n\t\t\t\t\t\tthis._rootPose.copy(this._targetRootPose);\n\t\t\t\t\t\tthis._childPose.copy(this._targetChildPose);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis._targetRootPose.copy(this._rootPose);\n\t\t\t\tthis._targetChildPose.copy(this._childPose);\n\t\t}\n\t\tupdate(frame, dt) {\n\t\t\t\tconst { move, rotate } = frame.read();\n\t\t\t\toffset.set(move[0], move[1], 0);\n\t\t\t\trotation$2.setFromEulerAngles(this._rootPose.angles).transformVector(offset, offset);\n\t\t\t\tthis._targetRootPose.move(offset);\n\t\t\t\tconst { z: dist } = this._targetChildPose.position;\n\t\t\t\tthis._targetChildPose.move(offset.set(0, 0, dist * (1 + move[2]) - dist));\n\t\t\t\tthis._targetRootPose.rotate(angles.set(-rotate[1], -rotate[0], 0));\n\t\t\t\tthis._rootPose.lerp(this._rootPose, this._targetRootPose, damp(this.moveDamping, dt), damp(this.rotateDamping, dt), 1);\n\t\t\t\tthis._childPose.lerp(this._childPose, this._targetChildPose, damp(this.zoomDamping, dt), 1, 1);\n\t\t\t\trotation$2.setFromEulerAngles(this._rootPose.angles).transformVector(this._childPose.position, offset).add(this._rootPose.position);\n\t\t\t\treturn this._pose.set(offset, this._rootPose.angles, this._childPose.position.z);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._targetRootPose = new Pose(), this._rootPose = new Pose(), this._targetChildPose = new Pose(), this._childPose = new Pose(), this.rotateDamping = 0.98, this.moveDamping = 0.98, this.zoomDamping = 0.98;\n\t\t}\n}\n\nconst EPSILON = 0.001;\nconst dir$1 = new Vec3();\nconst position$1 = new Vec3();\nconst rotation$1 = new Quat();\nclass FocusController extends InputController {\n\t\tattach(pose, smooth = true) {\n\t\t\t\tthis._targetRootPose.set(pose.getFocus(dir$1), pose.angles, 0);\n\t\t\t\tthis._targetChildPose.position.set(0, 0, pose.distance);\n\t\t\t\tif (!smooth) {\n\t\t\t\t\t\tthis._rootPose.copy(this._targetRootPose);\n\t\t\t\t\t\tthis._childPose.copy(this._targetChildPose);\n\t\t\t\t}\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis._targetRootPose.copy(this._rootPose);\n\t\t\t\tthis._targetChildPose.copy(this._childPose);\n\t\t}\n\t\tcomplete() {\n\t\t\t\treturn this._targetRootPose.equalsApprox(this._rootPose, EPSILON) && this._targetChildPose.equalsApprox(this._childPose, EPSILON);\n\t\t}\n\t\tupdate(frame, dt) {\n\t\t\t\tframe.read();\n\t\t\t\tthis._rootPose.lerp(this._rootPose, this._targetRootPose, damp(this.focusDamping, dt), damp(this.focusDamping, dt), 1);\n\t\t\t\tthis._childPose.lerp(this._childPose, this._targetChildPose, damp(this.focusDamping, dt), 1, 1);\n\t\t\t\trotation$1.setFromEulerAngles(this._rootPose.angles).transformVector(this._childPose.position, position$1).add(this._rootPose.position);\n\t\t\t\treturn this._pose.set(position$1, this._rootPose.angles, this._childPose.position.length());\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t}\n\t\tconstructor(...args){\n\t\t\t\tsuper(...args), this._targetRootPose = new Pose(), this._rootPose = new Pose(), this._targetChildPose = new Pose(), this._childPose = new Pose(), this.focusDamping = 0.98;\n\t\t}\n}\n\nconst GIZMOSPACE_LOCAL = 'local';\nconst GIZMOSPACE_WORLD = 'world';\nconst GIZMOAXIS_X = 'x';\nconst GIZMOAXIS_Y = 'y';\nconst GIZMOAXIS_Z = 'z';\nconst GIZMOAXIS_YZ = 'yz';\nconst GIZMOAXIS_XZ = 'xz';\nconst GIZMOAXIS_XY = 'xy';\nconst GIZMOAXIS_XYZ = 'xyz';\nconst GIZMOAXIS_FACE = 'face';\n\nconst v = new Vec3();\nconst position = new Vec3();\nconst dir = new Vec3();\nconst rotation = new Quat();\nconst m1 = new Mat4();\nconst m2 = new Mat4();\nconst ray$1 = new Ray();\nconst MIN_SCALE = 1e-4;\nconst PERS_SCALE_RATIO = 0.3;\nconst ORTHO_SCALE_RATIO = 0.32;\nconst UPDATE_EPSILON$2 = 1e-6;\nconst DIST_EPSILON = 1e-4;\nclass Gizmo extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_POINTERDOWN = 'pointer:down';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POINTERMOVE = 'pointer:move';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POINTERUP = 'pointer:up';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_POSITIONUPDATE = 'position:update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_ROTATIONUPDATE = 'rotation:update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_SCALEUPDATE = 'scale:update';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_NODESATTACH = 'nodes:attach';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_NODESDETACH = 'nodes:detach';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_RENDERUPDATE = 'render:update';\n\t\t}\n\t\tstatic createLayer(app, layerName = 'Gizmo', layerIndex = app.scene.layers.layerList.length) {\n\t\t\t\tconst layer = new Layer({\n\t\t\t\t\t\tname: layerName,\n\t\t\t\t\t\tclearDepthBuffer: true,\n\t\t\t\t\t\topaqueSortMode: SORTMODE_NONE,\n\t\t\t\t\t\ttransparentSortMode: SORTMODE_NONE\n\t\t\t\t});\n\t\t\t\tapp.scene.layers.insert(layer, layerIndex);\n\t\t\t\treturn layer;\n\t\t}\n\t\tconstructor(camera, layer, name = 'gizmo'){\n\t\t\t\tsuper(), this._size = 1, this._scale = 1, this._coordSpace = 'world', this._handles = [], this._renderUpdate = false, this.nodes = [], this.intersectShapes = [], this.preventDefault = true;\n\t\t\t\tthis._layer = layer;\n\t\t\t\tthis._camera = camera;\n\t\t\t\tthis._camera.layers = this._camera.layers.concat(this._layer.id);\n\t\t\t\tthis._app = this._camera.system.app;\n\t\t\t\tthis._device = this._app.graphicsDevice;\n\t\t\t\tthis.root = new Entity(name);\n\t\t\t\tthis._app.root.addChild(this.root);\n\t\t\t\tthis.root.enabled = false;\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis._onPointerDown = this._onPointerDown.bind(this);\n\t\t\t\tthis._onPointerMove = this._onPointerMove.bind(this);\n\t\t\t\tthis._onPointerUp = this._onPointerUp.bind(this);\n\t\t\t\tthis._device.canvas.addEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._device.canvas.addEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._device.canvas.addEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._handles.push(this._app.on('prerender', ()=>this.prerender()));\n\t\t\t\tthis._handles.push(this._app.on('update', ()=>this.update()));\n\t\t\t\tthis._handles.push(this._app.on('destroy', ()=>this.destroy()));\n\t\t}\n\t\tset enabled(state) {\n\t\t\t\tconst cameraDist = this.root.getLocalPosition().distance(this.camera.entity.getPosition());\n\t\t\t\tconst enabled = state ? this.nodes.length > 0 && cameraDist > DIST_EPSILON : false;\n\t\t\t\tif (enabled !== this.root.enabled) {\n\t\t\t\t\t\tthis.root.enabled = enabled;\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\tget enabled() {\n\t\t\t\treturn this.root.enabled;\n\t\t}\n\t\tset layer(layer) {\n\t\t\t\tif (this._layer === layer) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera.layers = this._camera.layers.filter((id)=>id !== this._layer.id);\n\t\t\t\tthis._layer = layer;\n\t\t\t\tthis._camera.layers = this._camera.layers.concat(this._layer.id);\n\t\t\t\tthis.enabled = true;\n\t\t}\n\t\tget layer() {\n\t\t\t\treturn this._layer;\n\t\t}\n\t\tset camera(camera) {\n\t\t\t\tif (this._camera === camera) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._camera.layers = this._camera.layers.filter((id)=>id !== this._layer.id);\n\t\t\t\tthis._camera = camera;\n\t\t\t\tthis._camera.layers = this._camera.layers.concat(this._layer.id);\n\t\t\t\tthis.enabled = true;\n\t\t}\n\t\tget camera() {\n\t\t\t\treturn this._camera;\n\t\t}\n\t\tset coordSpace(value) {\n\t\t\t\tthis._coordSpace = value ?? this._coordSpace;\n\t\t\t\tthis._updateRotation();\n\t\t}\n\t\tget coordSpace() {\n\t\t\t\treturn this._coordSpace;\n\t\t}\n\t\tset size(value) {\n\t\t\t\tthis._size = value;\n\t\t\t\tthis._updateScale();\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\tget facingDir() {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\t\t\tconst cameraPos = this._camera.entity.getPosition();\n\t\t\t\t\t\treturn dir.sub2(cameraPos, gizmoPos).normalize();\n\t\t\t\t}\n\t\t\t\treturn dir.copy(this._camera.entity.forward).mulScalar(-1);\n\t\t}\n\t\tget cameraDir() {\n\t\t\t\tconst cameraPos = this._camera.entity.getPosition();\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\treturn dir.sub2(cameraPos, gizmoPos).normalize();\n\t\t}\n\t\t_onPointerDown(e) {\n\t\t\t\tif (!this.enabled || document.pointerLockElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selection = this._getSelection(e.offsetX, e.offsetY);\n\t\t\t\tif (selection[0]) {\n\t\t\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tconst { canvas } = this._device;\n\t\t\t\tcanvas.setPointerCapture(e.pointerId);\n\t\t\t\tthis.fire(Gizmo.EVENT_POINTERDOWN, e.offsetX, e.offsetY, selection[0]);\n\t\t}\n\t\t_onPointerMove(e) {\n\t\t\t\tif (!this.enabled || document.pointerLockElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selection = this._getSelection(e.offsetX, e.offsetY);\n\t\t\t\tif (selection[0]) {\n\t\t\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tthis.fire(Gizmo.EVENT_POINTERMOVE, e.offsetX, e.offsetY, selection[0]);\n\t\t}\n\t\t_onPointerUp(e) {\n\t\t\t\tif (!this.enabled || document.pointerLockElement) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst selection = this._getSelection(e.offsetX, e.offsetY);\n\t\t\t\tif (selection[0]) {\n\t\t\t\t\t\tif (this.preventDefault) {\n\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t}\n\t\t\t\t\t\te.stopPropagation();\n\t\t\t\t}\n\t\t\t\tconst { canvas } = this._device;\n\t\t\t\tcanvas.releasePointerCapture(e.pointerId);\n\t\t\t\tthis.fire(Gizmo.EVENT_POINTERUP, e.offsetX, e.offsetY, selection[0]);\n\t\t}\n\t\t_updatePosition() {\n\t\t\t\tposition.set(0, 0, 0);\n\t\t\t\tif (this._coordSpace === 'local') {\n\t\t\t\t\t\tposition.copy(this.nodes[this.nodes.length - 1].getPosition());\n\t\t\t\t} else {\n\t\t\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\t\t\tposition.add(node.getPosition());\n\t\t\t\t\t\t}\n\t\t\t\t\t\tposition.mulScalar(1.0 / (this.nodes.length || 1));\n\t\t\t\t}\n\t\t\t\tif (position.equalsApprox(this.root.getLocalPosition(), UPDATE_EPSILON$2)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.root.setLocalPosition(position);\n\t\t\t\tthis.fire(Gizmo.EVENT_POSITIONUPDATE, position);\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_updateRotation() {\n\t\t\t\trotation.set(0, 0, 0, 1);\n\t\t\t\tif (this._coordSpace === 'local' && this.nodes.length !== 0) {\n\t\t\t\t\t\trotation.copy(this.nodes[this.nodes.length - 1].getRotation());\n\t\t\t\t}\n\t\t\t\tif (rotation.equalsApprox(this.root.getRotation(), UPDATE_EPSILON$2)) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.root.setRotation(rotation);\n\t\t\t\tthis.fire(Gizmo.EVENT_ROTATIONUPDATE, rotation.getEulerAngles());\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_updateScale() {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\t\t\tconst cameraPos = this._camera.entity.getPosition();\n\t\t\t\t\t\tconst dist = v.sub2(gizmoPos, cameraPos).dot(this._camera.entity.forward);\n\t\t\t\t\t\tthis._scale = Math.tan(0.5 * this._camera.fov * math.DEG_TO_RAD) * dist * PERS_SCALE_RATIO;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._scale = this._camera.orthoHeight * ORTHO_SCALE_RATIO;\n\t\t\t\t}\n\t\t\t\tthis._scale = Math.max(this._scale * this._size, MIN_SCALE);\n\t\t\t\tif (Math.abs(this._scale - this.root.getLocalScale().x) < UPDATE_EPSILON$2) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.root.setLocalScale(this._scale, this._scale, this._scale);\n\t\t\t\tthis.fire(Gizmo.EVENT_SCALEUPDATE, this._scale);\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_getSelection(x, y) {\n\t\t\t\tconst start = this._camera.screenToWorld(x, y, 0);\n\t\t\t\tconst end = this._camera.screenToWorld(x, y, this._camera.farClip - this._camera.nearClip);\n\t\t\t\tconst dir = v.copy(end).sub(start).normalize();\n\t\t\t\tconst selection = [];\n\t\t\t\tfor(let i = 0; i < this.intersectShapes.length; i++){\n\t\t\t\t\t\tconst shape = this.intersectShapes[i];\n\t\t\t\t\t\tif (shape.disabled || !shape.entity.enabled) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst parentTM = shape.entity.getWorldTransform();\n\t\t\t\t\t\tfor(let j = 0; j < shape.triData.length; j++){\n\t\t\t\t\t\t\t\tconst { tris, transform, priority } = shape.triData[j];\n\t\t\t\t\t\t\t\tconst triWTM = m1.copy(parentTM).mul(transform);\n\t\t\t\t\t\t\t\tconst invTriWTM = m2.copy(triWTM).invert();\n\t\t\t\t\t\t\t\tinvTriWTM.transformPoint(start, ray$1.origin);\n\t\t\t\t\t\t\t\tinvTriWTM.transformVector(dir, ray$1.direction);\n\t\t\t\t\t\t\t\tray$1.direction.normalize();\n\t\t\t\t\t\t\t\tfor(let k = 0; k < tris.length; k++){\n\t\t\t\t\t\t\t\t\t\tif (tris[k].intersectsRay(ray$1, v)) {\n\t\t\t\t\t\t\t\t\t\t\t\tselection.push({\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tdist: triWTM.transformPoint(v).sub(start).length(),\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tmeshInstances: shape.meshInstances,\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tpriority: priority\n\t\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (selection.length) {\n\t\t\t\t\t\tselection.sort((s0, s1)=>{\n\t\t\t\t\t\t\t\tif (s0.priority !== 0 && s1.priority !== 0) {\n\t\t\t\t\t\t\t\t\t\treturn s1.priority - s0.priority;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn s0.dist - s1.dist;\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn selection[0].meshInstances;\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t}\n\t\tattach(nodes = []) {\n\t\t\t\tif (Array.isArray(nodes)) {\n\t\t\t\t\t\tif (nodes.length === 0) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis.nodes = nodes;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis.nodes = [\n\t\t\t\t\t\t\t\tnodes\n\t\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t\tthis._updatePosition();\n\t\t\t\tthis._updateRotation();\n\t\t\t\tthis._updateScale();\n\t\t\t\tthis.fire(Gizmo.EVENT_NODESATTACH);\n\t\t\t\tthis.enabled = true;\n\t\t}\n\t\tdetach() {\n\t\t\t\tthis.enabled = false;\n\t\t\t\tthis.fire(Gizmo.EVENT_NODESDETACH);\n\t\t\t\tthis.nodes = [];\n\t\t}\n\t\tprerender() {}\n\t\tupdate() {\n\t\t\t\tif (this._renderUpdate) {\n\t\t\t\t\t\tthis._renderUpdate = false;\n\t\t\t\t\t\tthis.fire(Gizmo.EVENT_RENDERUPDATE);\n\t\t\t\t}\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._updatePosition();\n\t\t\t\tthis._updateRotation();\n\t\t\t\tthis._updateScale();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.detach();\n\t\t\t\tthis._device.canvas.removeEventListener('pointerdown', this._onPointerDown);\n\t\t\t\tthis._device.canvas.removeEventListener('pointermove', this._onPointerMove);\n\t\t\t\tthis._device.canvas.removeEventListener('pointerup', this._onPointerUp);\n\t\t\t\tthis._handles.forEach((handle)=>handle.off());\n\t\t\t\tthis.root.destroy();\n\t\t}\n}\n\nconst COLOR_RED = Object.freeze(new Color(1, 0.3, 0.3));\nconst COLOR_GREEN = Object.freeze(new Color(0.3, 1, 0.3));\nconst COLOR_BLUE = Object.freeze(new Color(0.3, 0.3, 1));\nObject.freeze(new Color(1, 1, 0.5));\nconst COLOR_GRAY = Object.freeze(new Color(0.5, 0.5, 0.5, 0.5));\nconst color4from3 = (color, a)=>{\n\t\treturn new Color(color.r, color.g, color.b, a);\n};\n\nconst v1$3 = new Vec3();\nconst v2$3 = new Vec3();\nconst point$3 = new Vec3();\nconst ray = new Ray();\nconst plane = new Plane();\nconst color$1 = new Color();\nconst AXES$2 = [\n\t\t'x',\n\t\t'y',\n\t\t'z'\n];\nclass TransformGizmo extends Gizmo {\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRANSFORMSTART = 'transform:start';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRANSFORMMOVE = 'transform:move';\n\t\t}\n\t\tstatic{\n\t\t\t\tthis.EVENT_TRANSFORMEND = 'transform:end';\n\t\t}\n\t\tconstructor(camera, layer, name = 'gizmo:transform'){\n\t\t\t\tsuper(camera, layer, name), this._theme = {\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\tx: COLOR_RED.clone(),\n\t\t\t\t\t\t\t\ty: COLOR_GREEN.clone(),\n\t\t\t\t\t\t\t\tz: COLOR_BLUE.clone(),\n\t\t\t\t\t\t\t\txyz: new Color(0.8, 0.8, 0.8, 1),\n\t\t\t\t\t\t\t\tf: new Color(0.8, 0.8, 0.8, 1)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tx: new Color().lerp(COLOR_RED, Color.WHITE, 0.75),\n\t\t\t\t\t\t\t\ty: new Color().lerp(COLOR_GREEN, Color.WHITE, 0.75),\n\t\t\t\t\t\t\t\tz: new Color().lerp(COLOR_BLUE, Color.WHITE, 0.75),\n\t\t\t\t\t\t\t\txyz: Color.WHITE.clone(),\n\t\t\t\t\t\t\t\tf: Color.WHITE.clone()\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\tx: COLOR_RED.clone(),\n\t\t\t\t\t\t\t\ty: COLOR_GREEN.clone(),\n\t\t\t\t\t\t\t\tz: COLOR_BLUE.clone()\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 0.8,\n\t\t\t\t\t\tdisabled: COLOR_GRAY.clone()\n\t\t\t\t}, this._rootStartPos = new Vec3(), this._rootStartRot = new Quat(), this._shapes = {}, this._shapeMap = new Map(), this._hovering = new Set(), this._hoverAxis = '', this._hoverIsPlane = false, this._selectedAxis = '', this._selectedIsPlane = false, this._selectionStartPoint = new Vec3(), this._snap = false, this.snapIncrement = 1, this.dragMode = 'selected';\n\t\t\t\tthis.on(Gizmo.EVENT_POINTERDOWN, (x, y, meshInstance)=>{\n\t\t\t\t\t\tconst shape = this._shapeMap.get(meshInstance);\n\t\t\t\t\t\tif (shape?.disabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this._dragging) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._hoverAxis = '';\n\t\t\t\t\t\tthis._hoverIsPlane = false;\n\t\t\t\t\t\tthis._selectedAxis = this._getAxis(meshInstance);\n\t\t\t\t\t\tthis._selectedIsPlane = this._getIsPlane(meshInstance);\n\t\t\t\t\t\tthis._rootStartPos.copy(this.root.getLocalPosition());\n\t\t\t\t\t\tthis._rootStartRot.copy(this.root.getRotation());\n\t\t\t\t\t\tconst point = this._screenToPoint(x, y);\n\t\t\t\t\t\tthis._selectionStartPoint.copy(point);\n\t\t\t\t\t\tthis.fire(TransformGizmo.EVENT_TRANSFORMSTART, point, x, y);\n\t\t\t\t});\n\t\t\t\tthis.on(Gizmo.EVENT_POINTERMOVE, (x, y, meshInstance)=>{\n\t\t\t\t\t\tconst shape = this._shapeMap.get(meshInstance);\n\t\t\t\t\t\tif (shape?.disabled) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._hover(meshInstance);\n\t\t\t\t\t\tif (!this._dragging) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst point = this._screenToPoint(x, y);\n\t\t\t\t\t\tthis.fire(TransformGizmo.EVENT_TRANSFORMMOVE, point, x, y);\n\t\t\t\t});\n\t\t\t\tthis.on(Gizmo.EVENT_POINTERUP, (_x, _y, meshInstance)=>{\n\t\t\t\t\t\tthis._hover(meshInstance);\n\t\t\t\t\t\tif (!this._dragging) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (meshInstance) {\n\t\t\t\t\t\t\t\tthis._hoverAxis = this._selectedAxis;\n\t\t\t\t\t\t\t\tthis._hoverIsPlane = this._selectedIsPlane;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._selectedAxis = '';\n\t\t\t\t\t\tthis._selectedIsPlane = false;\n\t\t\t\t\t\tthis.fire(TransformGizmo.EVENT_TRANSFORMEND);\n\t\t\t\t});\n\t\t\t\tthis.on(Gizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis.snap = false;\n\t\t\t\t\t\tthis._hoverAxis = '';\n\t\t\t\t\t\tthis._hoverIsPlane = false;\n\t\t\t\t\t\tthis._hover();\n\t\t\t\t\t\tthis.fire(Gizmo.EVENT_POINTERUP);\n\t\t\t\t});\n\t\t}\n\t\tset snap(value) {\n\t\t\t\tthis._snap = this.enabled && value;\n\t\t}\n\t\tget snap() {\n\t\t\t\treturn this._snap;\n\t\t}\n\t\tget theme() {\n\t\t\t\treturn this._theme;\n\t\t}\n\t\tset xAxisColor(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\tx: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tx: color4from3(value, this.colorAlpha)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\tx: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 1\n\t\t\t\t});\n\t\t}\n\t\tget xAxisColor() {\n\t\t\t\treturn this._theme.shapeBase.x;\n\t\t}\n\t\tset yAxisColor(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\ty: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\ty: color4from3(value, this.colorAlpha)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\ty: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 1\n\t\t\t\t});\n\t\t}\n\t\tget yAxisColor() {\n\t\t\t\treturn this._theme.shapeBase.y;\n\t\t}\n\t\tset zAxisColor(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\tz: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tz: color4from3(value, this.colorAlpha)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideBase: {\n\t\t\t\t\t\t\t\tz: value\n\t\t\t\t\t\t},\n\t\t\t\t\t\tguideOcclusion: 1\n\t\t\t\t});\n\t\t}\n\t\tget zAxisColor() {\n\t\t\t\treturn this._theme.shapeBase.z;\n\t\t}\n\t\tset colorAlpha(value) {\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\tx: color4from3(this._theme.shapeHover.x, value),\n\t\t\t\t\t\t\t\ty: color4from3(this._theme.shapeHover.y, value),\n\t\t\t\t\t\t\t\tz: color4from3(this._theme.shapeHover.z, value),\n\t\t\t\t\t\t\t\txyz: color4from3(this._theme.shapeHover.xyz, value),\n\t\t\t\t\t\t\t\tf: color4from3(this._theme.shapeHover.f, value)\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t}\n\t\tget colorAlpha() {\n\t\t\t\treturn (this._theme.shapeHover.x.a + this._theme.shapeHover.y.a + this._theme.shapeHover.z.a + this._theme.shapeHover.xyz.a + this._theme.shapeHover.f.a) / 5;\n\t\t}\n\t\tget _dragging() {\n\t\t\t\treturn !this._hoverAxis && !!this._selectedAxis;\n\t\t}\n\t\t_getAxis(meshInstance) {\n\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\treturn '';\n\t\t\t\t}\n\t\t\t\treturn meshInstance.node.name.split(':')[1];\n\t\t}\n\t\t_getIsPlane(meshInstance) {\n\t\t\t\tif (!meshInstance) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn meshInstance.node.name.indexOf('plane') !== -1;\n\t\t}\n\t\t_hover(meshInstance) {\n\t\t\t\tif (this._dragging) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst remove = new Set(this._hovering);\n\t\t\t\tlet changed = false;\n\t\t\t\tconst add = (axis)=>{\n\t\t\t\t\t\tif (remove.has(axis)) {\n\t\t\t\t\t\t\t\tremove.delete(axis);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis._hovering.add(axis);\n\t\t\t\t\t\t\t\tthis._shapes[axis]?.hover(true);\n\t\t\t\t\t\t\t\tchanged = true;\n\t\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\tthis._hoverAxis = this._getAxis(meshInstance);\n\t\t\t\tthis._hoverIsPlane = this._getIsPlane(meshInstance);\n\t\t\t\tif (this._hoverAxis) {\n\t\t\t\t\t\tif (this._hoverAxis === 'xyz') {\n\t\t\t\t\t\t\t\tadd('x');\n\t\t\t\t\t\t\t\tadd('y');\n\t\t\t\t\t\t\t\tadd('z');\n\t\t\t\t\t\t\t\tadd('xyz');\n\t\t\t\t\t\t} else if (this._hoverIsPlane) {\n\t\t\t\t\t\t\t\tswitch(this._hoverAxis){\n\t\t\t\t\t\t\t\t\t\tcase 'x':\n\t\t\t\t\t\t\t\t\t\t\t\tadd('y');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('z');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('yz');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\t\t\t\t\t\tadd('x');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('z');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('xz');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\tcase 'z':\n\t\t\t\t\t\t\t\t\t\t\t\tadd('x');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('y');\n\t\t\t\t\t\t\t\t\t\t\t\tadd('xy');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tadd(this._hoverAxis);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor (const axis of remove){\n\t\t\t\t\t\tthis._hovering.delete(axis);\n\t\t\t\t\t\tthis._shapes[axis]?.hover(false);\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_createRay(mouseWPos) {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tray.origin.copy(this._camera.entity.getPosition());\n\t\t\t\t\t\tray.direction.sub2(mouseWPos, ray.origin).normalize();\n\t\t\t\t\t\treturn ray;\n\t\t\t\t}\n\t\t\t\tconst orthoDepth = this._camera.farClip - this._camera.nearClip;\n\t\t\t\tray.origin.sub2(mouseWPos, v1$3.copy(this._camera.entity.forward).mulScalar(orthoDepth));\n\t\t\t\tray.direction.copy(this._camera.entity.forward);\n\t\t\t\treturn ray;\n\t\t}\n\t\t_createPlane(axis, isFacing, isLine) {\n\t\t\t\tconst facingDir = v1$3.copy(this.facingDir);\n\t\t\t\tconst normal = plane.normal.set(0, 0, 0);\n\t\t\t\tif (isFacing) {\n\t\t\t\t\t\tnormal.copy(this._camera.entity.forward).mulScalar(-1);\n\t\t\t\t} else {\n\t\t\t\t\t\tnormal[axis] = 1;\n\t\t\t\t\t\tthis._rootStartRot.transformVector(normal, normal);\n\t\t\t\t\t\tif (isLine) {\n\t\t\t\t\t\t\t\tv2$3.cross(normal, facingDir).normalize();\n\t\t\t\t\t\t\t\tnormal.cross(v2$3, normal).normalize();\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn plane.setFromPointNormal(this._rootStartPos, normal);\n\t\t}\n\t\t_dirFromAxis(axis, dir) {\n\t\t\t\tif (axis === 'f') {\n\t\t\t\t\t\tdir.copy(this._camera.entity.forward).mulScalar(-1);\n\t\t\t\t} else {\n\t\t\t\t\t\tdir.set(0, 0, 0);\n\t\t\t\t\t\tdir[axis] = 1;\n\t\t\t\t}\n\t\t\t\treturn dir;\n\t\t}\n\t\t_projectToAxis(point, axis) {\n\t\t\t\tv1$3.set(0, 0, 0);\n\t\t\t\tv1$3[axis] = 1;\n\t\t\t\tpoint.copy(v1$3.mulScalar(v1$3.dot(point)));\n\t\t\t\tconst v = point[axis];\n\t\t\t\tpoint.set(0, 0, 0);\n\t\t\t\tpoint[axis] = v;\n\t\t}\n\t\t_screenToPoint(x, y, isFacing = false, isLine = false) {\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, isFacing, isLine);\n\t\t\t\tif (!plane.intersectsRay(ray, point$3)) {\n\t\t\t\t\t\treturn point$3;\n\t\t\t\t}\n\t\t\t\treturn point$3;\n\t\t}\n\t\t_drawGuideLines(pos, rot, activeAxis, activeIsPlane) {\n\t\t\t\tfor (const axis of AXES$2){\n\t\t\t\t\t\tif (activeAxis === 'xyz') {\n\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (activeIsPlane) {\n\t\t\t\t\t\t\t\tif (axis !== activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (axis === activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\t_drawSpanLine(pos, rot, axis) {\n\t\t\t\tconst dir = this._dirFromAxis(axis, v1$3);\n\t\t\t\tconst base = this._theme.guideBase[axis];\n\t\t\t\tconst from = v1$3.copy(dir).mulScalar(this._camera.farClip - this._camera.nearClip);\n\t\t\t\tconst to = v2$3.copy(from).mulScalar(-1);\n\t\t\t\trot.transformVector(from, from).add(pos);\n\t\t\t\trot.transformVector(to, to).add(pos);\n\t\t\t\tif (this._theme.guideOcclusion < 1) {\n\t\t\t\t\t\tconst occluded = color$1.copy(base);\n\t\t\t\t\t\toccluded.a *= 1 - this._theme.guideOcclusion;\n\t\t\t\t\t\tthis._app.drawLine(from, to, occluded, false, this._layer);\n\t\t\t\t}\n\t\t\t\tif (base.a !== 0) {\n\t\t\t\t\t\tthis._app.drawLine(from, to, base, true);\n\t\t\t\t}\n\t\t}\n\t\t_createTransform() {\n\t\t\t\tfor(const key in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[key];\n\t\t\t\t\t\tthis.root.addChild(shape.entity);\n\t\t\t\t\t\tthis.intersectShapes.push(shape);\n\t\t\t\t\t\tfor(let i = 0; i < shape.meshInstances.length; i++){\n\t\t\t\t\t\t\t\tthis._shapeMap.set(shape.meshInstances[i], shape);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tenableShape(shapeAxis, enabled) {\n\t\t\t\tif (shapeAxis === 'face') {\n\t\t\t\t\t\tshapeAxis = 'f';\n\t\t\t\t}\n\t\t\t\tconst shape = this._shapes[shapeAxis];\n\t\t\t\tif (!shape) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tshape.disabled = !enabled;\n\t\t}\n\t\tisShapeEnabled(shapeAxis) {\n\t\t\t\tif (shapeAxis === 'face') {\n\t\t\t\t\t\tshapeAxis = 'f';\n\t\t\t\t}\n\t\t\t\tconst shape = this._shapes[shapeAxis];\n\t\t\t\tif (!shape) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\treturn !shape.disabled;\n\t\t}\n\t\tsetTheme(partial) {\n\t\t\t\tconst theme = {\n\t\t\t\t\t\t...this._theme,\n\t\t\t\t\t\t...partial\n\t\t\t\t};\n\t\t\t\tif (typeof theme !== 'object' || typeof theme.shapeBase !== 'object' || typeof theme.shapeHover !== 'object' || typeof theme.guideBase !== 'object') {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(const axis in theme.shapeBase){\n\t\t\t\t\t\tif (theme.shapeBase[axis] instanceof Color) {\n\t\t\t\t\t\t\t\tthis._theme.shapeBase[axis].copy(theme.shapeBase[axis]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const axis in theme.shapeHover){\n\t\t\t\t\t\tif (theme.shapeHover[axis] instanceof Color) {\n\t\t\t\t\t\t\t\tthis._theme.shapeHover[axis].copy(theme.shapeHover[axis]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfor(const axis in theme.guideBase){\n\t\t\t\t\t\tif (theme.guideBase[axis] instanceof Color) {\n\t\t\t\t\t\t\t\tthis._theme.guideBase[axis].copy(theme.guideBase[axis]);\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (typeof theme.guideOcclusion === 'number') {\n\t\t\t\t\t\tthis._theme.guideOcclusion = math.clamp(theme.guideOcclusion, 0, 1);\n\t\t\t\t}\n\t\t\t\tif (theme.disabled instanceof Color) {\n\t\t\t\t\t\tthis._theme.disabled.copy(theme.disabled);\n\t\t\t\t}\n\t\t\t\tfor(const name in this._shapes){\n\t\t\t\t\t\tthis._shapes[name].hover(!!this._hoverAxis);\n\t\t\t\t}\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst gizmoRot = this.root.getRotation();\n\t\t\t\tconst activeAxis = this._hoverAxis || this._selectedAxis;\n\t\t\t\tconst activeIsPlane = this._hoverIsPlane || this._selectedIsPlane;\n\t\t\t\tthis._drawGuideLines(gizmoPos, gizmoRot, activeAxis, activeIsPlane);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tsuper.destroy();\n\t\t\t\tfor(const key in this._shapes){\n\t\t\t\t\t\tthis._shapes[key].destroy();\n\t\t\t\t}\n\t\t}\n}\n\nconst tmpV1$4 = new Vec3();\nconst tmpV2$3 = new Vec3();\nconst tmpV3$1 = new Vec3();\nclass TriData {\n\t\tconstructor(geometry, priority = 0){\n\t\t\t\tthis._priority = 0;\n\t\t\t\tthis._transform = new Mat4();\n\t\t\t\tthis.tris = [];\n\t\t\t\tthis.fromGeometry(geometry);\n\t\t\t\tthis._priority = priority;\n\t\t}\n\t\tget transform() {\n\t\t\t\treturn this._transform;\n\t\t}\n\t\tget priority() {\n\t\t\t\treturn this._priority;\n\t\t}\n\t\tsetTransform(pos = new Vec3(), rot = new Quat(), scale = new Vec3()) {\n\t\t\t\tthis.transform.setTRS(pos, rot, scale);\n\t\t}\n\t\tfromGeometry(geometry) {\n\t\t\t\tif (!geometry || !(geometry instanceof Geometry)) {\n\t\t\t\t\t\tthrow new Error('No geometry provided.');\n\t\t\t\t}\n\t\t\t\tconst positions = geometry.positions ?? [];\n\t\t\t\tconst indices = geometry.indices ?? [];\n\t\t\t\tthis.tris = [];\n\t\t\t\tfor(let k = 0; k < indices.length; k += 3){\n\t\t\t\t\t\tconst i1 = indices[k];\n\t\t\t\t\t\tconst i2 = indices[k + 1];\n\t\t\t\t\t\tconst i3 = indices[k + 2];\n\t\t\t\t\t\ttmpV1$4.set(positions[i1 * 3], positions[i1 * 3 + 1], positions[i1 * 3 + 2]);\n\t\t\t\t\t\ttmpV2$3.set(positions[i2 * 3], positions[i2 * 3 + 1], positions[i2 * 3 + 2]);\n\t\t\t\t\t\ttmpV3$1.set(positions[i3 * 3], positions[i3 * 3 + 1], positions[i3 * 3 + 2]);\n\t\t\t\t\t\tconst tri = new Tri(tmpV1$4, tmpV2$3, tmpV3$1);\n\t\t\t\t\t\tthis.tris.push(tri);\n\t\t\t\t}\n\t\t}\n}\n\nconst unlitShader = {\n\t\tuniqueName: 'gizmo-unlit',\n\t\tattributes: {\n\t\t\t\tvertex_position: SEMANTIC_POSITION\n\t\t},\n\t\tvertexGLSL: `\n\t\tattribute vec3 vertex_position;\n\t\n\t\tuniform mat4 matrix_model;\n\t\tuniform mat4 matrix_viewProjection;\n\t\n\t\tvoid main(void) {\n\t\t\tgl_Position = matrix_viewProjection * matrix_model * vec4(vertex_position, 1.0);\n\t\t\tgl_Position.z = clamp(gl_Position.z, -abs(gl_Position.w), abs(gl_Position.w));\n\t\t}\n\t`,\n\t\tfragmentGLSL: `\n\t\t#include \"gammaPS\"\n\t\n\t\tprecision highp float;\n\t\n\t\tuniform vec4 uColor;\n\t\tuniform float uDepth;\n\t\tvoid main(void) {\n\t\t\tif (uColor.a < 1.0 / 255.0) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\tgl_FragColor = vec4(gammaCorrectOutput(decodeGamma(uColor)), uColor.a);\n\t\t\t#if DEPTH_WRITE == 1\n\t\t\t\tgl_FragDepth = uDepth;\n\t\t\t#endif\n\t\t}\n\t`,\n\t\tvertexWGSL: `\n\t\tattribute vertex_position: vec3f;\n\t\tuniform matrix_model: mat4x4f;\n\t\tuniform matrix_viewProjection: mat4x4f;\n\t\t@vertex\n\t\tfn vertexMain(input: VertexInput) -> VertexOutput {\n\t\t\tvar output: VertexOutput;\n\t\t\tlet pos = vec4f(input.vertex_position, 1.0);\n\t\t\toutput.position = uniform.matrix_viewProjection * uniform.matrix_model * pos;\n\t\t\toutput.position.z = clamp(output.position.z, -abs(output.position.w), abs(output.position.w));\n\t\t\treturn output;\n\t\t}\n\t`,\n\t\tfragmentWGSL: `\n\t\t#include \"gammaPS\"\n\t\tuniform uColor: vec4f;\n\t\tuniform uDepth: f32;\n\t\t@fragment\n\t\tfn fragmentMain(input: FragmentInput) -> FragmentOutput {\n\t\t\tvar output: FragmentOutput;\n\t\t\tif (uniform.uColor.a < 1.0 / 255.0) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\toutput.color = vec4f(gammaCorrectOutput(decodeGamma(uniform.uColor)), uniform.uColor.a);\n\t\t\t#if DEPTH_WRITE == 1\n\t\t\t\toutput.fragDepth = uniform.uDepth;\n\t\t\t#endif\n\t\t\treturn output;\n\t\t}\n\t`\n};\n\nconst tmpG = new Geometry();\ntmpG.positions = [];\ntmpG.normals = [];\nclass Shape {\n\t\tconstructor(device, name, args){\n\t\t\t\tthis._position = new Vec3();\n\t\t\t\tthis._rotation = new Vec3();\n\t\t\t\tthis._scale = new Vec3(1, 1, 1);\n\t\t\t\tthis._layers = [];\n\t\t\t\tthis._material = new ShaderMaterial(unlitShader);\n\t\t\t\tthis._disabled = false;\n\t\t\t\tthis._visible = true;\n\t\t\t\tthis._defaultColor = Color.WHITE;\n\t\t\t\tthis._hoverColor = Color.BLACK;\n\t\t\t\tthis._disabledColor = COLOR_GRAY;\n\t\t\t\tthis._cull = CULLFACE_BACK;\n\t\t\t\tthis._depth = -1;\n\t\t\t\tthis.triData = [];\n\t\t\t\tthis.meshInstances = [];\n\t\t\t\tthis.device = device;\n\t\t\t\tthis.axis = args.axis ?? 'x';\n\t\t\t\tif (args.position instanceof Vec3) {\n\t\t\t\t\t\tthis._position.copy(args.position);\n\t\t\t\t}\n\t\t\t\tif (args.rotation instanceof Vec3) {\n\t\t\t\t\t\tthis._rotation.copy(args.rotation);\n\t\t\t\t}\n\t\t\t\tif (args.scale instanceof Vec3) {\n\t\t\t\t\t\tthis._scale.copy(args.scale);\n\t\t\t\t}\n\t\t\t\tthis._disabled = args.disabled ?? this._disabled;\n\t\t\t\tthis._visible = args.visible ?? this._visible;\n\t\t\t\tthis._layers = args.layers ?? this._layers;\n\t\t\t\tif (args.defaultColor instanceof Color) {\n\t\t\t\t\t\tthis._defaultColor = args.defaultColor;\n\t\t\t\t}\n\t\t\t\tif (args.hoverColor instanceof Color) {\n\t\t\t\t\t\tthis._hoverColor = args.hoverColor;\n\t\t\t\t}\n\t\t\t\tif (args.disabledColor instanceof Color) {\n\t\t\t\t\t\tthis._disabledColor = args.disabledColor;\n\t\t\t\t}\n\t\t\t\tthis._cull = args.cull ?? this._cull;\n\t\t\t\tthis._depth = args.depth ?? this._depth;\n\t\t\t\tthis.entity = new Entity(`${name}:${this.axis}`);\n\t\t\t\tthis.entity.setLocalPosition(this._position);\n\t\t\t\tthis.entity.setLocalEulerAngles(this._rotation);\n\t\t\t\tthis.entity.setLocalScale(this._scale);\n\t\t}\n\t\tset disabled(value) {\n\t\t\t\tthis._disabled = value ?? false;\n\t\t\t\tthis.hover(false);\n\t\t}\n\t\tget disabled() {\n\t\t\t\treturn this._disabled;\n\t\t}\n\t\tset visible(value) {\n\t\t\t\tif (value === this._visible) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor(let i = 0; i < this.meshInstances.length; i++){\n\t\t\t\t\t\tthis.meshInstances[i].visible = value;\n\t\t\t\t}\n\t\t\t\tthis._visible = value;\n\t\t}\n\t\tget visible() {\n\t\t\t\treturn this._visible;\n\t\t}\n\t\t_createRenderComponent(entity, meshes) {\n\t\t\t\tconst color = this._disabled ? this._disabledColor : this._defaultColor;\n\t\t\t\tthis._material.setDefine('DEPTH_WRITE', this._depth > 0 ? '1' : '0');\n\t\t\t\tthis._material.setParameter('uDepth', this._depth);\n\t\t\t\tthis._material.setParameter('uColor', color.toArray());\n\t\t\t\tthis._material.cull = this._cull;\n\t\t\t\tthis._material.blendType = BLEND_NORMAL;\n\t\t\t\tthis._material.update();\n\t\t\t\tconst meshInstances = [];\n\t\t\t\tfor(let i = 0; i < meshes.length; i++){\n\t\t\t\t\t\tconst mi = new MeshInstance(meshes[i], this._material);\n\t\t\t\t\t\tmi.cull = false;\n\t\t\t\t\t\tmeshInstances.push(mi);\n\t\t\t\t\t\tthis.meshInstances.push(mi);\n\t\t\t\t}\n\t\t\t\tentity.addComponent('render', {\n\t\t\t\t\t\tmeshInstances: meshInstances,\n\t\t\t\t\t\tlayers: this._layers,\n\t\t\t\t\t\tcastShadows: false\n\t\t\t\t});\n\t\t}\n\t\t_update() {\n\t\t\t\tthis.entity.setLocalPosition(this._position);\n\t\t\t\tthis.entity.setLocalEulerAngles(this._rotation);\n\t\t\t\tthis.entity.setLocalScale(this._scale);\n\t\t}\n\t\thover(state) {\n\t\t\t\tconst color = this._disabled ? this._disabledColor : state ? this._hoverColor : this._defaultColor;\n\t\t\t\tthis._material.setParameter('uColor', color.toArray());\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.entity.destroy();\n\t\t}\n}\n\nconst UPDATE_EPSILON$1 = 1e-6;\nclass PlaneShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'plane', args), this._cull = CULLFACE_NONE, this._size = 0.16, this._gap = 0, this._flipped = new Vec3();\n\t\t\t\tthis._size = args.size ?? this._size;\n\t\t\t\tthis._gap = args.gap ?? this._gap;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new PlaneGeometry())\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new PlaneGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset size(value) {\n\t\t\t\tthis._size = value ?? this._size;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\tset gap(value) {\n\t\t\t\tthis._gap = value ?? this._gap;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget gap() {\n\t\t\t\treturn this._gap;\n\t\t}\n\t\tset flipped(value) {\n\t\t\t\tif (this._flipped.distance(value) < UPDATE_EPSILON$1) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._flipped.copy(value);\n\t\t\t\tthis._update();\n\t\t}\n\t\tget flipped() {\n\t\t\t\treturn this._flipped;\n\t\t}\n\t\t_update() {\n\t\t\t\tconst offset = this._size / 2 + this._gap;\n\t\t\t\tthis._position.set(this._flipped.x ? -offset : offset, this._flipped.y ? -offset : offset, this._flipped.z ? -offset : offset);\n\t\t\t\tthis._position[this.axis] = 0;\n\t\t\t\tthis.entity.setLocalPosition(this._position);\n\t\t\t\tthis.entity.setLocalEulerAngles(this._rotation);\n\t\t\t\tthis.entity.setLocalScale(this._size, this._size, this._size);\n\t\t}\n}\n\nconst tmpV1$3 = new Vec3();\nconst tmpV2$2 = new Vec3();\nconst tmpQ1$1 = new Quat();\nclass ArrowShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'arrow', args), this._gap = 0, this._lineThickness = 0.02, this._lineLength = 0.5, this._arrowThickness = 0.12, this._arrowLength = 0.18, this._tolerance = 0.1;\n\t\t\t\tthis._gap = args.gap ?? this._gap;\n\t\t\t\tthis._lineThickness = args.lineThickness ?? this._lineThickness;\n\t\t\t\tthis._lineLength = args.lineLength ?? this._lineLength;\n\t\t\t\tthis._arrowThickness = args.arrowThickness ?? this._arrowThickness;\n\t\t\t\tthis._arrowLength = args.arrowLength ?? this._arrowLength;\n\t\t\t\tthis._tolerance = args.tolerance ?? this._tolerance;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new ConeGeometry()),\n\t\t\t\t\t\tnew TriData(new CylinderGeometry(), 1)\n\t\t\t\t];\n\t\t\t\tthis._head = new Entity(`head:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._head);\n\t\t\t\tthis._createRenderComponent(this._head, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new ConeGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._line = new Entity(`line:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._line);\n\t\t\t\tthis._createRenderComponent(this._line, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new CylinderGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset gap(value) {\n\t\t\t\tthis._gap = value ?? this._gap;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget gap() {\n\t\t\t\treturn this._gap;\n\t\t}\n\t\tset lineThickness(value) {\n\t\t\t\tthis._lineThickness = value ?? this._lineThickness;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineThickness() {\n\t\t\t\treturn this._lineThickness;\n\t\t}\n\t\tset lineLength(value) {\n\t\t\t\tthis._lineLength = value ?? this._lineLength;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineLength() {\n\t\t\t\treturn this._lineLength;\n\t\t}\n\t\tset arrowThickness(value) {\n\t\t\t\tthis._arrowThickness = value ?? this._arrowThickness;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget arrowThickness() {\n\t\t\t\treturn this._arrowThickness;\n\t\t}\n\t\tset arrowLength(value) {\n\t\t\t\tthis._arrowLength = value ?? this._arrowLength;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget arrowLength() {\n\t\t\t\treturn this._arrowLength;\n\t\t}\n\t\tset tolerance(value) {\n\t\t\t\tthis._tolerance = value;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tolerance() {\n\t\t\t\treturn this._tolerance;\n\t\t}\n\t\t_update() {\n\t\t\t\ttmpV1$3.set(0, this._gap + this._arrowLength * 0.5 + this._lineLength, 0);\n\t\t\t\ttmpQ1$1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$2.set(this._arrowThickness, this._arrowLength, this._arrowThickness);\n\t\t\t\tthis.triData[0].setTransform(tmpV1$3, tmpQ1$1, tmpV2$2);\n\t\t\t\ttmpV1$3.set(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\ttmpQ1$1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$2.set(this._lineThickness + this._tolerance, this._lineLength, this._lineThickness + this._tolerance);\n\t\t\t\tthis.triData[1].setTransform(tmpV1$3, tmpQ1$1, tmpV2$2);\n\t\t\t\tthis._head.setLocalPosition(0, this._gap + this._arrowLength * 0.5 + this._lineLength, 0);\n\t\t\t\tthis._head.setLocalScale(this._arrowThickness, this._arrowLength, this._arrowThickness);\n\t\t\t\tthis._line.setLocalPosition(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\tthis._line.setLocalScale(this._lineThickness, this._lineLength, this._lineThickness);\n\t\t}\n}\n\nclass SphereShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'sphereCenter', args), this._radius = 0.03;\n\t\t\t\tthis._radius = args.radius ?? this._radius;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new SphereGeometry(), 2)\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new SphereGeometry({\n\t\t\t\t\t\t\t\tlatitudeBands: 32,\n\t\t\t\t\t\t\t\tlongitudeBands: 32\n\t\t\t\t\t\t}))\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset radius(value) {\n\t\t\t\tthis._radius = value ?? this._radius;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this._radius;\n\t\t}\n\t\t_update() {\n\t\t\t\tconst scale = this._radius * 2;\n\t\t\t\tthis.entity.setLocalScale(scale, scale, scale);\n\t\t}\n}\n\nconst v1$2 = new Vec3();\nconst v2$2 = new Vec3();\nconst point$2 = new Vec3();\nconst delta$1 = new Vec3();\nconst q$1 = new Quat();\nconst GLANCE_EPSILON$1 = 0.01;\nconst AXES$1 = [\n\t\t'x',\n\t\t'y',\n\t\t'z'\n];\nclass TranslateGizmo extends TransformGizmo {\n\t\tconstructor(camera, layer){\n\t\t\t\tsuper(camera, layer, 'gizmo:translate'), this._shapes = {\n\t\t\t\t\t\txyz: new SphereShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'xyz',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.xyz,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.xyz,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tyz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txy: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tx: new ArrowShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ty: new ArrowShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tz: new ArrowShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t})\n\t\t\t\t}, this._nodeLocalPositions = new Map(), this._nodePositions = new Map(), this.snapIncrement = 1, this.flipPlanes = true;\n\t\t\t\tthis._createTransform();\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMSTART, ()=>{\n\t\t\t\t\t\tthis._storeNodePositions();\n\t\t\t\t\t\tthis._drag(true);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMMOVE, (point)=>{\n\t\t\t\t\t\tconst translateDelta = delta$1.copy(point).sub(this._selectionStartPoint);\n\t\t\t\t\t\tif (this.snap) {\n\t\t\t\t\t\t\t\ttranslateDelta.mulScalar(1 / this.snapIncrement);\n\t\t\t\t\t\t\t\ttranslateDelta.round();\n\t\t\t\t\t\t\t\ttranslateDelta.mulScalar(this.snapIncrement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._setNodePositions(translateDelta);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMEND, ()=>{\n\t\t\t\t\t\tthis._drag(false);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._nodeLocalPositions.clear();\n\t\t\t\t\t\tthis._nodePositions.clear();\n\t\t\t\t});\n\t\t}\n\t\tset axisGap(value) {\n\t\t\t\tthis._setArrowProp('gap', value);\n\t\t}\n\t\tget axisGap() {\n\t\t\t\treturn this._shapes.x.gap;\n\t\t}\n\t\tset axisLineThickness(value) {\n\t\t\t\tthis._setArrowProp('lineThickness', value);\n\t\t}\n\t\tget axisLineThickness() {\n\t\t\t\treturn this._shapes.x.lineThickness;\n\t\t}\n\t\tset axisLineLength(value) {\n\t\t\t\tthis._setArrowProp('lineLength', value);\n\t\t}\n\t\tget axisLineLength() {\n\t\t\t\treturn this._shapes.x.lineLength;\n\t\t}\n\t\tset axisLineTolerance(value) {\n\t\t\t\tthis._setArrowProp('tolerance', value);\n\t\t}\n\t\tget axisLineTolerance() {\n\t\t\t\treturn this._shapes.x.tolerance;\n\t\t}\n\t\tset axisArrowThickness(value) {\n\t\t\t\tthis._setArrowProp('arrowThickness', value);\n\t\t}\n\t\tget axisArrowThickness() {\n\t\t\t\treturn this._shapes.x.arrowThickness;\n\t\t}\n\t\tset axisArrowLength(value) {\n\t\t\t\tthis._setArrowProp('arrowLength', value);\n\t\t}\n\t\tget axisArrowLength() {\n\t\t\t\treturn this._shapes.x.arrowLength;\n\t\t}\n\t\tset axisPlaneSize(value) {\n\t\t\t\tthis._setPlaneProp('size', value);\n\t\t}\n\t\tget axisPlaneSize() {\n\t\t\t\treturn this._shapes.yz.size;\n\t\t}\n\t\tset axisPlaneGap(value) {\n\t\t\t\tthis._setPlaneProp('gap', value);\n\t\t}\n\t\tget axisPlaneGap() {\n\t\t\t\treturn this._shapes.yz.gap;\n\t\t}\n\t\tset axisCenterSize(value) {\n\t\t\t\tthis._shapes.xyz.radius = value;\n\t\t}\n\t\tget axisCenterSize() {\n\t\t\t\treturn this._shapes.xyz.radius;\n\t\t}\n\t\tset flipShapes(value) {\n\t\t\t\tthis.flipPlanes = value;\n\t\t}\n\t\tget flipShapes() {\n\t\t\t\treturn this.flipPlanes;\n\t\t}\n\t\t_setArrowProp(prop, value) {\n\t\t\t\tthis._shapes.x[prop] = value;\n\t\t\t\tthis._shapes.y[prop] = value;\n\t\t\t\tthis._shapes.z[prop] = value;\n\t\t}\n\t\t_setPlaneProp(prop, value) {\n\t\t\t\tthis._shapes.yz[prop] = value;\n\t\t\t\tthis._shapes.xz[prop] = value;\n\t\t\t\tthis._shapes.xy[prop] = value;\n\t\t}\n\t\t_shapesLookAtCamera() {\n\t\t\t\tconst cameraDir = this.cameraDir;\n\t\t\t\tlet changed = false;\n\t\t\t\tlet dot, enabled;\n\t\t\t\tdot = cameraDir.dot(this.root.right);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.x.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.x.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.up);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.y.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.y.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.forward);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.z.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.z.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tlet flipped;\n\t\t\t\tv1$2.cross(cameraDir, this.root.right);\n\t\t\t\tenabled = 1 - v1$2.length() > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.yz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.yz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2$2.set(0, +(v1$2.dot(this.root.forward) < 0), +(v1$2.dot(this.root.up) < 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.yz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.yz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1$2.cross(cameraDir, this.root.forward);\n\t\t\t\tenabled = 1 - v1$2.length() > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.xy.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xy.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2$2.set(+(v1$2.dot(this.root.up) < 0), +(v1$2.dot(this.root.right) > 0), 0) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xy.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xy.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1$2.cross(cameraDir, this.root.up);\n\t\t\t\tenabled = 1 - v1$2.length() > GLANCE_EPSILON$1;\n\t\t\t\tif (this._shapes.xz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2$2.set(+(v1$2.dot(this.root.forward) > 0), 0, +(v1$2.dot(this.root.right) > 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_drag(state) {\n\t\t\t\tfor(const axis in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[axis];\n\t\t\t\t\t\tswitch(this.dragMode){\n\t\t\t\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = !state;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'selected':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedAxis === 'xyz') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedIsPlane) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 && !axis.includes(this._selectedAxis) : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis === this._selectedAxis : true;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_storeNodePositions() {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tthis._nodeLocalPositions.set(node, node.getLocalPosition().clone());\n\t\t\t\t\t\tthis._nodePositions.set(node, node.getPosition().clone());\n\t\t\t\t}\n\t\t}\n\t\t_setNodePositions(translateDelta) {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tif (this._coordSpace === 'local') {\n\t\t\t\t\t\t\t\tconst pos = this._nodeLocalPositions.get(node);\n\t\t\t\t\t\t\t\tif (!pos) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tv1$2.copy(translateDelta);\n\t\t\t\t\t\t\t\tnode.parent?.getWorldTransform().getScale(v2$2);\n\t\t\t\t\t\t\t\tv2$2.x = 1 / v2$2.x;\n\t\t\t\t\t\t\t\tv2$2.y = 1 / v2$2.y;\n\t\t\t\t\t\t\t\tv2$2.z = 1 / v2$2.z;\n\t\t\t\t\t\t\t\tq$1.copy(node.getLocalRotation()).transformVector(v1$2, v1$2);\n\t\t\t\t\t\t\t\tv1$2.mul(v2$2);\n\t\t\t\t\t\t\t\tnode.setLocalPosition(v1$2.add(pos));\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst pos = this._nodePositions.get(node);\n\t\t\t\t\t\t\t\tif (!pos) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tnode.setPosition(v1$2.copy(translateDelta).add(pos));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._updatePosition();\n\t\t}\n\t\t_screenToPoint(x, y) {\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isPlane = this._selectedIsPlane;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'xyz', !isPlane);\n\t\t\t\tif (!plane.intersectsRay(ray, point$2)) {\n\t\t\t\t\t\treturn point$2;\n\t\t\t\t}\n\t\t\t\tq$1.copy(this._rootStartRot).invert().transformVector(point$2, point$2);\n\t\t\t\tif (!isPlane && axis !== 'xyz') {\n\t\t\t\t\t\tthis._projectToAxis(point$2, axis);\n\t\t\t\t}\n\t\t\t\treturn point$2;\n\t\t}\n\t\t_drawGuideLines(pos, rot, activeAxis, activeIsPlane) {\n\t\t\t\tfor (const axis of AXES$1){\n\t\t\t\t\t\tif (this._dragging || activeAxis === 'xyz') {\n\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (activeIsPlane) {\n\t\t\t\t\t\t\t\tif (axis !== activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (axis === activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shapesLookAtCamera();\n\t\t}\n}\n\nconst TORUS_RENDER_SEGMENTS = 80;\nconst TORUS_INTERSECT_SEGMENTS = 20;\nclass ArcShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'disk', args), this._tubeRadius = 0.01, this._ringRadius = 0.5, this._sectorAngle = 360, this._tolerance = 0.05;\n\t\t\t\tthis._tubeRadius = args.tubeRadius ?? this._tubeRadius;\n\t\t\t\tthis._ringRadius = args.ringRadius ?? this._ringRadius;\n\t\t\t\tthis._sectorAngle = args.sectorAngle ?? this._sectorAngle;\n\t\t\t\tthis._triDataCache = [\n\t\t\t\t\t\tnew TriData(this._createTorusGeometry(this._sectorAngle)),\n\t\t\t\t\t\tnew TriData(this._createTorusGeometry(360))\n\t\t\t\t];\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tthis._triDataCache[0]\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tthis._createTorusMesh(this._sectorAngle),\n\t\t\t\t\t\tthis._createTorusMesh(360)\n\t\t\t\t]);\n\t\t\t\tthis.show('sector');\n\t\t\t\tthis._update();\n\t\t}\n\t\t_createTorusGeometry(sectorAngle) {\n\t\t\t\treturn new TorusGeometry({\n\t\t\t\t\t\ttubeRadius: this._tubeRadius + this._tolerance,\n\t\t\t\t\t\tringRadius: this._ringRadius,\n\t\t\t\t\t\tsectorAngle: sectorAngle,\n\t\t\t\t\t\tsegments: TORUS_INTERSECT_SEGMENTS\n\t\t\t\t});\n\t\t}\n\t\t_createTorusMesh(sectorAngle) {\n\t\t\t\tconst geom = new TorusGeometry({\n\t\t\t\t\t\ttubeRadius: this._tubeRadius,\n\t\t\t\t\t\tringRadius: this._ringRadius,\n\t\t\t\t\t\tsectorAngle: sectorAngle,\n\t\t\t\t\t\tsegments: TORUS_RENDER_SEGMENTS\n\t\t\t\t});\n\t\t\t\treturn Mesh.fromGeometry(this.device, geom);\n\t\t}\n\t\tset tubeRadius(value) {\n\t\t\t\tthis._tubeRadius = value ?? this._tubeRadius;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tubeRadius() {\n\t\t\t\treturn this._tubeRadius;\n\t\t}\n\t\tset ringRadius(value) {\n\t\t\t\tthis._ringRadius = value ?? this._ringRadius;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget ringRadius() {\n\t\t\t\treturn this._ringRadius;\n\t\t}\n\t\tset tolerance(value) {\n\t\t\t\tthis._tolerance = value ?? this._tolerance;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tolerance() {\n\t\t\t\treturn this._tolerance;\n\t\t}\n\t\t_update() {\n\t\t\t\tthis._triDataCache[0].fromGeometry(this._createTorusGeometry(this._sectorAngle));\n\t\t\t\tthis._triDataCache[1].fromGeometry(this._createTorusGeometry(360));\n\t\t\t\tthis.meshInstances[0].mesh = this._createTorusMesh(this._sectorAngle);\n\t\t\t\tthis.meshInstances[1].mesh = this._createTorusMesh(360);\n\t\t}\n\t\tshow(state) {\n\t\t\t\tswitch(state){\n\t\t\t\t\t\tcase 'sector':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis.triData[0] = this._triDataCache[0];\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[0].visible = true;\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[1].visible = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'ring':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis.triData[0] = this._triDataCache[1];\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[0].visible = false;\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[1].visible = true;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'none':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[0].visible = false;\n\t\t\t\t\t\t\t\t\t\tthis.meshInstances[1].visible = false;\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n}\n\nconst tmpV1$2 = new Vec3();\nclass MeshLine {\n\t\tconstructor(app, layer, args = {}){\n\t\t\t\tthis._thickness = 0.02;\n\t\t\t\tthis._material = new ShaderMaterial(unlitShader);\n\t\t\t\tthis.entity = new Entity('mesh-line');\n\t\t\t\tthis._thickness = args.thickness ?? this._thickness;\n\t\t\t\tthis._material.blendState = BlendState.ALPHABLEND;\n\t\t\t\tthis._material.setDefine('DEPTH_WRITE', '1');\n\t\t\t\tthis._material.setParameter('uDepth', 0);\n\t\t\t\tthis._material.update();\n\t\t\t\tconst mesh = Mesh.fromGeometry(app.graphicsDevice, new CylinderGeometry());\n\t\t\t\tconst meshInstance = new MeshInstance(mesh, this._material);\n\t\t\t\tthis.entity.addComponent('render', {\n\t\t\t\t\t\tmeshInstances: [\n\t\t\t\t\t\t\t\tmeshInstance\n\t\t\t\t\t\t],\n\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\tlayer.id\n\t\t\t\t\t\t]\n\t\t\t\t});\n\t\t}\n\t\tset thickness(value) {\n\t\t\t\tthis._thickness = value ?? this._thickness;\n\t\t}\n\t\tget thickness() {\n\t\t\t\treturn this._thickness;\n\t\t}\n\t\tdraw(from, to, scale, color) {\n\t\t\t\tthis._material.setParameter('uColor', color.toArray());\n\t\t\t\tconst dir = tmpV1$2.sub2(to, from).normalize();\n\t\t\t\tconst elev = Math.atan2(-dir.y, Math.sqrt(dir.x * dir.x + dir.z * dir.z)) * math.RAD_TO_DEG;\n\t\t\t\tconst azim = Math.atan2(-dir.x, -dir.z) * math.RAD_TO_DEG;\n\t\t\t\tthis.entity.setLocalEulerAngles(-elev + 90, azim, 0);\n\t\t\t\tconst length = from.distance(to) * scale;\n\t\t\t\tthis.entity.setLocalPosition(dir.mulScalar(0.5 * length).add(from));\n\t\t\t\tthis.entity.setLocalScale(this._thickness * scale, length, this._thickness * scale);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._material.destroy();\n\t\t\t\tthis.entity.destroy();\n\t\t}\n}\n\nconst point$1 = new Vec3();\nconst v1$1 = new Vec3();\nconst v2$1 = new Vec3();\nconst v3 = new Vec3();\nconst q1 = new Quat();\nconst q2 = new Quat();\nconst color = new Color();\nconst RING_FACING_EPSILON = 1e-4;\nconst UPDATE_EPSILON = 1e-6;\nconst AXES = [\n\t\t'x',\n\t\t'y',\n\t\t'z'\n];\nclass RotateGizmo extends TransformGizmo {\n\t\tconstructor(camera, layer){\n\t\t\t\tsuper(camera, layer, 'gizmo:rotate'), this._shapes = {\n\t\t\t\t\t\tz: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tsectorAngle: 180\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tx: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tsectorAngle: 180\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ty: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tsectorAngle: 180\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tf: new ArcShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'f',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.f,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.f,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tringRadius: 0.55\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txyz: new SphereShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'xyz',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.xyz,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.xyz,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tradius: 0.5\n\t\t\t\t\t\t})\n\t\t\t\t}, this._selectionStartAngle = 0, this._nodeLocalRotations = new Map(), this._nodeRotations = new Map(), this._nodeOffsets = new Map(), this._screenPos = new Vec2(), this._screenStartPos = new Vec2(), this._guideAngleStart = new Vec3(), this._guideAngleEnd = new Vec3(), this._facingDir = new Vec3(), this.snapIncrement = 5, this.rotationMode = 'absolute';\n\t\t\t\tthis.setTheme({\n\t\t\t\t\t\tshapeBase: {\n\t\t\t\t\t\t\t\txyz: new Color(0, 0, 0, 0)\n\t\t\t\t\t\t},\n\t\t\t\t\t\tshapeHover: {\n\t\t\t\t\t\t\t\txyz: new Color(1, 1, 1, 0.2)\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis._createTransform();\n\t\t\t\tthis._guideAngleLines = [\n\t\t\t\t\t\tnew MeshLine(this._app, this._layer),\n\t\t\t\t\t\tnew MeshLine(this._app, this._layer)\n\t\t\t\t];\n\t\t\t\tthis._guideAngleLines.forEach((line)=>{\n\t\t\t\t\t\tthis._app.root.addChild(line.entity);\n\t\t\t\t\t\tline.entity.enabled = false;\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMSTART, (point, x, y)=>{\n\t\t\t\t\t\tthis._screenPos.set(x, y);\n\t\t\t\t\t\tthis._screenStartPos.set(x, y);\n\t\t\t\t\t\tthis._selectionStartAngle = this._calculateArcAngle(point, x, y);\n\t\t\t\t\t\tthis._storeNodeRotations();\n\t\t\t\t\t\tthis._storeGuidePoints();\n\t\t\t\t\t\tthis._drag(true);\n\t\t\t\t\t\tthis._angleGuide(true);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMMOVE, (point, x, y)=>{\n\t\t\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\t\t\tif (!axis) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._screenPos.set(x, y);\n\t\t\t\t\t\tif (axis === 'xyz') {\n\t\t\t\t\t\t\t\tconst facingDir = v1$1.copy(this.facingDir);\n\t\t\t\t\t\t\t\tconst delta = v2$1.copy(point).sub(this._selectionStartPoint);\n\t\t\t\t\t\t\t\tconst angleAxis = v1$1.cross(facingDir, delta).normalize();\n\t\t\t\t\t\t\t\tconst angleDelta = this._screenPos.distance(this._screenStartPos);\n\t\t\t\t\t\t\t\tthis._setNodeRotations(axis, angleAxis, angleDelta);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tlet angleDelta = this._calculateArcAngle(point, x, y) - this._selectionStartAngle;\n\t\t\t\t\t\t\t\tif (this.snap) {\n\t\t\t\t\t\t\t\t\t\tangleDelta = Math.round(angleDelta / this.snapIncrement) * this.snapIncrement;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst angleAxis = this._dirFromAxis(axis, v1$1);\n\t\t\t\t\t\t\t\tthis._setNodeRotations(axis, angleAxis, angleDelta);\n\t\t\t\t\t\t\t\tthis._updateGuidePoints(angleDelta);\n\t\t\t\t\t\t\t\tthis._angleGuide(true);\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMEND, ()=>{\n\t\t\t\t\t\tthis._drag(false);\n\t\t\t\t\t\tthis._angleGuide(false);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._nodeLocalRotations.clear();\n\t\t\t\t\t\tthis._nodeRotations.clear();\n\t\t\t\t\t\tthis._nodeOffsets.clear();\n\t\t\t\t});\n\t\t}\n\t\tset xyzTubeRadius(value) {\n\t\t\t\tthis._setDiskProp('tubeRadius', value);\n\t\t}\n\t\tget xyzTubeRadius() {\n\t\t\t\treturn this._shapes.x.tubeRadius;\n\t\t}\n\t\tset xyzRingRadius(value) {\n\t\t\t\tthis._setDiskProp('ringRadius', value);\n\t\t}\n\t\tget xyzRingRadius() {\n\t\t\t\treturn this._shapes.x.ringRadius;\n\t\t}\n\t\tset faceTubeRadius(value) {\n\t\t\t\tthis._shapes.f.tubeRadius = value;\n\t\t}\n\t\tget faceTubeRadius() {\n\t\t\t\treturn this._shapes.f.tubeRadius;\n\t\t}\n\t\tset faceRingRadius(value) {\n\t\t\t\tthis._shapes.f.ringRadius = value;\n\t\t}\n\t\tget faceRingRadius() {\n\t\t\t\treturn this._shapes.f.ringRadius;\n\t\t}\n\t\tset centerRadius(value) {\n\t\t\t\tthis._shapes.xyz.radius = value;\n\t\t}\n\t\tget centerRadius() {\n\t\t\t\treturn this._shapes.xyz.radius;\n\t\t}\n\t\tset ringTolerance(value) {\n\t\t\t\tthis._setDiskProp('tolerance', value);\n\t\t\t\tthis._shapes.f.tolerance = value;\n\t\t}\n\t\tget ringTolerance() {\n\t\t\t\treturn this._shapes.x.tolerance;\n\t\t}\n\t\tset angleGuideThickness(value) {\n\t\t\t\tthis._guideAngleLines[0].thickness = value;\n\t\t\t\tthis._guideAngleLines[1].thickness = value;\n\t\t}\n\t\tget angleGuideThickness() {\n\t\t\t\treturn this._guideAngleLines[0].thickness;\n\t\t}\n\t\tset orbitRotation(value) {\n\t\t\t\tthis.rotationMode = value ? 'orbit' : 'absolute';\n\t\t}\n\t\tget orbitRotation() {\n\t\t\t\treturn this.rotationMode === 'orbit';\n\t\t}\n\t\t_setDiskProp(prop, value) {\n\t\t\t\tthis._shapes.x[prop] = value;\n\t\t\t\tthis._shapes.y[prop] = value;\n\t\t\t\tthis._shapes.z[prop] = value;\n\t\t}\n\t\t_storeGuidePoints() {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isFacing = axis === 'f';\n\t\t\t\tconst scale = isFacing ? this.faceRingRadius : this.xyzRingRadius;\n\t\t\t\tthis._guideAngleStart.copy(this._selectionStartPoint).sub(gizmoPos).normalize();\n\t\t\t\tthis._guideAngleStart.mulScalar(scale);\n\t\t\t\tthis._guideAngleEnd.copy(this._guideAngleStart);\n\t\t}\n\t\t_updateGuidePoints(angleDelta) {\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isFacing = axis === 'f';\n\t\t\t\tif (isFacing) {\n\t\t\t\t\t\tv1$1.copy(this.facingDir);\n\t\t\t\t} else {\n\t\t\t\t\t\tv1$1.set(0, 0, 0);\n\t\t\t\t\t\tv1$1[axis] = 1;\n\t\t\t\t\t\tthis._rootStartRot.transformVector(v1$1, v1$1);\n\t\t\t\t}\n\t\t\t\tq1.setFromAxisAngle(v1$1, angleDelta);\n\t\t\t\tq1.transformVector(this._guideAngleStart, this._guideAngleEnd);\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_angleGuide(state) {\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tif (state && this.dragMode !== 'show' && axis !== 'xyz') {\n\t\t\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\t\t\tconst baseColor = this._theme.shapeHover[axis];\n\t\t\t\t\t\tconst startColor = color.copy(baseColor);\n\t\t\t\t\t\tstartColor.a *= 0.3;\n\t\t\t\t\t\tthis._guideAngleLines[0].draw(gizmoPos, v1$1.copy(this._guideAngleStart).add(gizmoPos), this._scale, startColor);\n\t\t\t\t\t\tthis._guideAngleLines[1].draw(gizmoPos, v1$1.copy(this._guideAngleEnd).add(gizmoPos), this._scale, baseColor);\n\t\t\t\t\t\tthis._guideAngleLines[0].entity.enabled = true;\n\t\t\t\t\t\tthis._guideAngleLines[1].entity.enabled = true;\n\t\t\t\t} else {\n\t\t\t\t\t\tthis._guideAngleLines[0].entity.enabled = false;\n\t\t\t\t\t\tthis._guideAngleLines[1].entity.enabled = false;\n\t\t\t\t}\n\t\t}\n\t\t_shapesLookAtCamera() {\n\t\t\t\tif (this._camera.projection === PROJECTION_PERSPECTIVE) {\n\t\t\t\t\t\tconst dir = this._camera.entity.getPosition().sub(this.root.getPosition()).normalize();\n\t\t\t\t\t\tconst elev = Math.atan2(-dir.y, Math.sqrt(dir.x * dir.x + dir.z * dir.z)) * math.RAD_TO_DEG;\n\t\t\t\t\t\tconst azim = Math.atan2(-dir.x, -dir.z) * math.RAD_TO_DEG;\n\t\t\t\t\t\tthis._shapes.f.entity.setEulerAngles(-elev + 90, azim, 0);\n\t\t\t\t} else {\n\t\t\t\t\t\tq1.copy(this._camera.entity.getRotation()).getEulerAngles(v1$1);\n\t\t\t\t\t\tthis._shapes.f.entity.setEulerAngles(v1$1);\n\t\t\t\t\t\tthis._shapes.f.entity.rotateLocal(-90, 0, 0);\n\t\t\t\t}\n\t\t\t\tlet angle, dot, sector;\n\t\t\t\tconst facingDir = v1$1.copy(this.facingDir);\n\t\t\t\tq1.copy(this.root.getRotation()).invert().transformVector(facingDir, facingDir);\n\t\t\t\tangle = Math.atan2(facingDir.z, facingDir.y) * math.RAD_TO_DEG;\n\t\t\t\tthis._shapes.x.entity.setLocalEulerAngles(0, angle - 90, -90);\n\t\t\t\tangle = Math.atan2(facingDir.x, facingDir.z) * math.RAD_TO_DEG;\n\t\t\t\tthis._shapes.y.entity.setLocalEulerAngles(0, angle, 0);\n\t\t\t\tangle = Math.atan2(facingDir.y, facingDir.x) * math.RAD_TO_DEG;\n\t\t\t\tthis._shapes.z.entity.setLocalEulerAngles(90, 0, angle + 90);\n\t\t\t\tif (!this._dragging) {\n\t\t\t\t\t\tdot = facingDir.dot(this.root.right);\n\t\t\t\t\t\tsector = 1 - Math.abs(dot) > RING_FACING_EPSILON;\n\t\t\t\t\t\tthis._shapes.x.show(sector ? 'sector' : 'ring');\n\t\t\t\t\t\tdot = facingDir.dot(this.root.up);\n\t\t\t\t\t\tsector = 1 - Math.abs(dot) > RING_FACING_EPSILON;\n\t\t\t\t\t\tthis._shapes.y.show(sector ? 'sector' : 'ring');\n\t\t\t\t\t\tdot = facingDir.dot(this.root.forward);\n\t\t\t\t\t\tsector = 1 - Math.abs(dot) > RING_FACING_EPSILON;\n\t\t\t\t\t\tthis._shapes.z.show(sector ? 'sector' : 'ring');\n\t\t\t\t}\n\t\t\t\tif (!facingDir.equalsApprox(this._facingDir, UPDATE_EPSILON)) {\n\t\t\t\t\t\tthis._facingDir.copy(facingDir);\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_drag(state) {\n\t\t\t\tfor(const axis in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[axis];\n\t\t\t\t\t\tif (!(shape instanceof ArcShape)) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tswitch(this.dragMode){\n\t\t\t\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.show(state ? axis === this._selectedAxis ? 'ring' : 'none' : 'sector');\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'selected':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.show(state ? axis === this._selectedAxis ? 'ring' : 'sector' : 'sector');\n\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_storeNodeRotations() {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tthis._nodeLocalRotations.set(node, node.getLocalRotation().clone());\n\t\t\t\t\t\tthis._nodeRotations.set(node, node.getRotation().clone());\n\t\t\t\t\t\tthis._nodeOffsets.set(node, node.getPosition().clone().sub(gizmoPos));\n\t\t\t\t}\n\t\t}\n\t\t_setNodeRotations(axis, angleAxis, angleDelta) {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tq1.setFromAxisAngle(angleAxis, angleDelta);\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tif ((axis === 'x' || axis === 'y' || axis === 'z') && this._coordSpace === 'local') {\n\t\t\t\t\t\t\t\tconst rot = this._nodeLocalRotations.get(node);\n\t\t\t\t\t\t\t\tif (!rot) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tq2.copy(rot).mul(q1);\n\t\t\t\t\t\t\t\tnode.setLocalRotation(q2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tconst rot = this._nodeRotations.get(node);\n\t\t\t\t\t\t\t\tif (!rot) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tconst offset = this._nodeOffsets.get(node);\n\t\t\t\t\t\t\t\tif (!offset) {\n\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tv1$1.copy(offset);\n\t\t\t\t\t\t\t\tq1.transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\tq2.copy(q1).mul(rot);\n\t\t\t\t\t\t\t\tnode.setRotation(q2);\n\t\t\t\t\t\t\t\tnode.setPosition(v1$1.add(gizmoPos));\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (this._coordSpace === 'local') {\n\t\t\t\t\t\tthis._updateRotation();\n\t\t\t\t}\n\t\t}\n\t\t_screenToPoint(x, y) {\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'f' || axis === 'xyz', false);\n\t\t\t\tif (!plane.intersectsRay(ray, point$1)) {\n\t\t\t\t\t\tray.direction.mulScalar(-1);\n\t\t\t\t\t\tconst intersection = plane.intersectsRay(ray, point$1);\n\t\t\t\t\t\tray.direction.mulScalar(-1);\n\t\t\t\t\t\tif (!intersection) {\n\t\t\t\t\t\t\t\treturn point$1.copy(this.root.getLocalPosition());\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn point$1;\n\t\t}\n\t\t_calculateArcAngle(point, x, y) {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'f', false);\n\t\t\t\tlet angle = 0;\n\t\t\t\tconst facingDir = this.facingDir;\n\t\t\t\tconst facingDot = plane.normal.dot(facingDir);\n\t\t\t\tswitch(this.rotationMode){\n\t\t\t\t\t\tcase 'absolute':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tthis._camera.worldToScreen(gizmoPos, v2$1);\n\t\t\t\t\t\t\t\t\t\tif (axis === 'f' || facingDot > 1 - RING_FACING_EPSILON) {\n\t\t\t\t\t\t\t\t\t\t\t\tv1$1.set(this._screenStartPos.y >= v2$1.y ? 1 : -1, this._screenStartPos.x >= v2$1.x ? -1 : 1, 0).normalize();\n\t\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\t\t\tconst projDir = v1$1.cross(plane.normal, facingDir).normalize();\n\t\t\t\t\t\t\t\t\t\t\t\tthis._camera.worldToScreen(projDir.add(gizmoPos), v3);\n\t\t\t\t\t\t\t\t\t\t\t\tv1$1.sub2(v3, v2$1).normalize();\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tv2$1.set(x, y, 0);\n\t\t\t\t\t\t\t\t\t\tangle = v1$1.dot(v2$1);\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'orbit':\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tv1$1.sub2(point, gizmoPos);\n\t\t\t\t\t\t\t\t\t\tswitch(axis){\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'x':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._rootStartRot).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.atan2(v1$1.z, v1$1.y) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'y':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._rootStartRot).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.atan2(v1$1.x, v1$1.z) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'z':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._rootStartRot).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.atan2(v1$1.y, v1$1.x) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tcase 'f':\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tq1.copy(this._camera.entity.getRotation()).invert().transformVector(v1$1, v1$1);\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tangle = Math.sign(facingDot) * Math.atan2(v1$1.y, v1$1.x) * math.RAD_TO_DEG;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tconst dir = v1$1.sub2(point, this._camera.entity.getPosition()).normalize();\n\t\t\t\t\t\t\t\t\t\tconst dot = dir.dot(this._camera.entity.forward);\n\t\t\t\t\t\t\t\t\t\tif (dot < 0) {\n\t\t\t\t\t\t\t\t\t\t\t\tangle += 180;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn angle;\n\t\t}\n\t\t_drawGuideLines(pos, rot, activeAxis, activeIsPlane) {\n\t\t\t\tfor (const axis of AXES){\n\t\t\t\t\t\tif (activeAxis === 'xyz') {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (activeIsPlane) {\n\t\t\t\t\t\t\t\tif (axis !== activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tif (axis === activeAxis) {\n\t\t\t\t\t\t\t\t\t\tthis._drawSpanLine(pos, rot, axis);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shapesLookAtCamera();\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis._guideAngleLines.forEach((line)=>line.destroy());\n\t\t\t\tsuper.destroy();\n\t\t}\n}\n\nclass BoxShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'boxCenter', args), this._size = 0.06;\n\t\t\t\tthis._size = args.size ?? this._size;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new BoxGeometry(), 2)\n\t\t\t\t];\n\t\t\t\tthis._createRenderComponent(this.entity, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new BoxGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset size(value) {\n\t\t\t\tthis._size = value ?? this._size;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget size() {\n\t\t\t\treturn this._size;\n\t\t}\n\t\t_update() {\n\t\t\t\tthis.entity.setLocalScale(this._size, this._size, this._size);\n\t\t}\n}\n\nconst tmpV1$1 = new Vec3();\nconst tmpV2$1 = new Vec3();\nconst tmpQ1 = new Quat();\nclass BoxLineShape extends Shape {\n\t\tconstructor(device, args = {}){\n\t\t\t\tsuper(device, 'boxLine', args), this._gap = 0, this._lineThickness = 0.02, this._lineLength = 0.5, this._boxSize = 0.12, this._tolerance = 0.1, this._flipped = false;\n\t\t\t\tthis._gap = args.gap ?? this._gap;\n\t\t\t\tthis._lineThickness = args.lineThickness ?? this._lineThickness;\n\t\t\t\tthis._lineLength = args.lineLength ?? this._lineLength;\n\t\t\t\tthis._boxSize = args.boxSize ?? this._boxSize;\n\t\t\t\tthis._tolerance = args.tolerance ?? this._tolerance;\n\t\t\t\tthis.triData = [\n\t\t\t\t\t\tnew TriData(new BoxGeometry()),\n\t\t\t\t\t\tnew TriData(new CylinderGeometry(), 1)\n\t\t\t\t];\n\t\t\t\tthis._box = new Entity(`box:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._box);\n\t\t\t\tthis._createRenderComponent(this._box, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new BoxGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._line = new Entity(`line:${this.axis}`);\n\t\t\t\tthis.entity.addChild(this._line);\n\t\t\t\tthis._createRenderComponent(this._line, [\n\t\t\t\t\t\tMesh.fromGeometry(this.device, new CylinderGeometry())\n\t\t\t\t]);\n\t\t\t\tthis._update();\n\t\t}\n\t\tset gap(value) {\n\t\t\t\tthis._gap = value ?? this._gap;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget gap() {\n\t\t\t\treturn this._gap;\n\t\t}\n\t\tset lineThickness(value) {\n\t\t\t\tthis._lineThickness = value ?? this._lineThickness;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineThickness() {\n\t\t\t\treturn this._lineThickness;\n\t\t}\n\t\tset lineLength(value) {\n\t\t\t\tthis._lineLength = value ?? this._lineLength;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget lineLength() {\n\t\t\t\treturn this._lineLength;\n\t\t}\n\t\tset boxSize(value) {\n\t\t\t\tthis._boxSize = value ?? this._boxSize;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget boxSize() {\n\t\t\t\treturn this._boxSize;\n\t\t}\n\t\tset tolerance(value) {\n\t\t\t\tthis._tolerance = value;\n\t\t\t\tthis._update();\n\t\t}\n\t\tget tolerance() {\n\t\t\t\treturn this._tolerance;\n\t\t}\n\t\tset flipped(value) {\n\t\t\t\tif (this._flipped === value) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._flipped = value;\n\t\t\t\tif (this._rotation.equals(Vec3.ZERO)) {\n\t\t\t\t\t\ttmpV1$1.set(0, 0, this._flipped ? 180 : 0);\n\t\t\t\t} else {\n\t\t\t\t\t\ttmpV1$1.copy(this._rotation).mulScalar(this._flipped ? -1 : 1);\n\t\t\t\t}\n\t\t\t\tthis._line.enabled = !this._flipped;\n\t\t\t\tthis.entity.setLocalEulerAngles(tmpV1$1);\n\t\t}\n\t\tget flipped() {\n\t\t\t\treturn this._flipped;\n\t\t}\n\t\t_update() {\n\t\t\t\ttmpV1$1.set(0, this._gap + this._boxSize * 0.5 + this._lineLength, 0);\n\t\t\t\ttmpQ1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$1.set(this._boxSize, this._boxSize, this._boxSize);\n\t\t\t\tthis.triData[0].setTransform(tmpV1$1, tmpQ1, tmpV2$1);\n\t\t\t\ttmpV1$1.set(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\ttmpQ1.set(0, 0, 0, 1);\n\t\t\t\ttmpV2$1.set(this._lineThickness + this._tolerance, this._lineLength, this._lineThickness + this._tolerance);\n\t\t\t\tthis.triData[1].setTransform(tmpV1$1, tmpQ1, tmpV2$1);\n\t\t\t\tthis._box.setLocalPosition(0, this._gap + this._boxSize * 0.5 + this._lineLength, 0);\n\t\t\t\tthis._box.setLocalScale(this._boxSize, this._boxSize, this._boxSize);\n\t\t\t\tthis._line.setLocalPosition(0, this._gap + this._lineLength * 0.5, 0);\n\t\t\t\tthis._line.setLocalScale(this._lineThickness, this._lineLength, this._lineThickness);\n\t\t}\n}\n\nconst v1 = new Vec3();\nconst v2 = new Vec3();\nconst point = new Vec3();\nconst delta = new Vec3();\nconst q = new Quat();\nconst GLANCE_EPSILON = 0.01;\nclass ScaleGizmo extends TransformGizmo {\n\t\tconstructor(camera, layer){\n\t\t\t\tsuper(camera, layer, 'gizmo:scale'), this._shapes = {\n\t\t\t\t\t\txyz: new BoxShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'xyz',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.xyz,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.xyz,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tyz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txz: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\txy: new PlaneShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled,\n\t\t\t\t\t\t\t\tdepth: 1\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tx: new BoxLineShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'x',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, -90),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.x,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.x,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\ty: new BoxLineShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'y',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(0, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.y,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.y,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t}),\n\t\t\t\t\t\tz: new BoxLineShape(this._device, {\n\t\t\t\t\t\t\t\taxis: 'z',\n\t\t\t\t\t\t\t\tlayers: [\n\t\t\t\t\t\t\t\t\t\tthis._layer.id\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\trotation: new Vec3(90, 0, 0),\n\t\t\t\t\t\t\t\tdefaultColor: this._theme.shapeBase.z,\n\t\t\t\t\t\t\t\thoverColor: this._theme.shapeHover.z,\n\t\t\t\t\t\t\t\tdisabledColor: this._theme.disabled\n\t\t\t\t\t\t})\n\t\t\t\t}, this._coordSpace = 'local', this._nodeScales = new Map(), this._uniform = false, this.snapIncrement = 1, this.flipPlanes = true, this.lowerBoundScale = new Vec3(-Infinity, -Infinity, -Infinity);\n\t\t\t\tthis._createTransform();\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMSTART, ()=>{\n\t\t\t\t\t\tthis._storeNodeScales();\n\t\t\t\t\t\tthis._drag(true);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMMOVE, (point)=>{\n\t\t\t\t\t\tconst scaleDelta = delta.copy(point).sub(this._selectionStartPoint);\n\t\t\t\t\t\tif (this.snap) {\n\t\t\t\t\t\t\t\tscaleDelta.mulScalar(1 / this.snapIncrement);\n\t\t\t\t\t\t\t\tscaleDelta.round();\n\t\t\t\t\t\t\t\tscaleDelta.mulScalar(this.snapIncrement);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tscaleDelta.mulScalar(1 / this._scale);\n\t\t\t\t\t\tthis._setNodeScales(scaleDelta.add(Vec3.ONE));\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_TRANSFORMEND, ()=>{\n\t\t\t\t\t\tthis._drag(false);\n\t\t\t\t});\n\t\t\t\tthis.on(TransformGizmo.EVENT_NODESDETACH, ()=>{\n\t\t\t\t\t\tthis._nodeScales.clear();\n\t\t\t\t});\n\t\t}\n\t\tset coordSpace(value) {}\n\t\tget coordSpace() {\n\t\t\t\treturn this._coordSpace;\n\t\t}\n\t\tset uniform(value) {\n\t\t\t\tthis._uniform = value ?? this._uniform;\n\t\t}\n\t\tget uniform() {\n\t\t\t\treturn this._uniform;\n\t\t}\n\t\tset axisGap(value) {\n\t\t\t\tthis._setArrowProp('gap', value);\n\t\t}\n\t\tget axisGap() {\n\t\t\t\treturn this._shapes.x.gap;\n\t\t}\n\t\tset axisLineThickness(value) {\n\t\t\t\tthis._setArrowProp('lineThickness', value);\n\t\t}\n\t\tget axisLineThickness() {\n\t\t\t\treturn this._shapes.x.lineThickness;\n\t\t}\n\t\tset axisLineLength(value) {\n\t\t\t\tthis._setArrowProp('lineLength', value);\n\t\t}\n\t\tget axisLineLength() {\n\t\t\t\treturn this._shapes.x.lineLength;\n\t\t}\n\t\tset axisLineTolerance(value) {\n\t\t\t\tthis._setArrowProp('tolerance', value);\n\t\t}\n\t\tget axisLineTolerance() {\n\t\t\t\treturn this._shapes.x.tolerance;\n\t\t}\n\t\tset axisBoxSize(value) {\n\t\t\t\tthis._setArrowProp('boxSize', value);\n\t\t}\n\t\tget axisBoxSize() {\n\t\t\t\treturn this._shapes.x.boxSize;\n\t\t}\n\t\tset axisPlaneSize(value) {\n\t\t\t\tthis._setPlaneProp('size', value);\n\t\t}\n\t\tget axisPlaneSize() {\n\t\t\t\treturn this._shapes.yz.size;\n\t\t}\n\t\tset axisPlaneGap(value) {\n\t\t\t\tthis._setPlaneProp('gap', value);\n\t\t}\n\t\tget axisPlaneGap() {\n\t\t\t\treturn this._shapes.yz.gap;\n\t\t}\n\t\tset axisCenterSize(value) {\n\t\t\t\tthis._shapes.xyz.size = value;\n\t\t}\n\t\tget axisCenterSize() {\n\t\t\t\treturn this._shapes.xyz.size;\n\t\t}\n\t\tset flipShapes(value) {\n\t\t\t\tthis.flipPlanes = value;\n\t\t}\n\t\tget flipShapes() {\n\t\t\t\treturn this.flipPlanes;\n\t\t}\n\t\t_setArrowProp(prop, value) {\n\t\t\t\tthis._shapes.x[prop] = value;\n\t\t\t\tthis._shapes.y[prop] = value;\n\t\t\t\tthis._shapes.z[prop] = value;\n\t\t}\n\t\t_setPlaneProp(prop, value) {\n\t\t\t\tthis._shapes.yz[prop] = value;\n\t\t\t\tthis._shapes.xz[prop] = value;\n\t\t\t\tthis._shapes.xy[prop] = value;\n\t\t}\n\t\t_shapesLookAtCamera() {\n\t\t\t\tconst cameraDir = this.cameraDir;\n\t\t\t\tlet changed = false;\n\t\t\t\tlet dot, enabled;\n\t\t\t\tdot = cameraDir.dot(this.root.right);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.x.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.x.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.up);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.y.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.y.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tdot = cameraDir.dot(this.root.forward);\n\t\t\t\tenabled = 1 - Math.abs(dot) > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.z.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.z.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tlet flipped;\n\t\t\t\tv1.cross(cameraDir, this.root.right);\n\t\t\t\tenabled = 1 - v1.length() > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.yz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.yz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2.set(0, +(v1.dot(this.root.forward) < 0), +(v1.dot(this.root.up) < 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.yz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.yz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1.cross(cameraDir, this.root.forward);\n\t\t\t\tenabled = 1 - v1.length() > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.xy.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xy.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2.set(+(v1.dot(this.root.up) < 0), +(v1.dot(this.root.right) > 0), 0) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xy.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xy.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tv1.cross(cameraDir, this.root.up);\n\t\t\t\tenabled = 1 - v1.length() > GLANCE_EPSILON;\n\t\t\t\tif (this._shapes.xz.entity.enabled !== enabled) {\n\t\t\t\t\t\tthis._shapes.xz.entity.enabled = enabled;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tflipped = this.flipPlanes ? v2.set(+(v1.dot(this.root.forward) > 0), 0, +(v1.dot(this.root.right) > 0)) : Vec3.ZERO;\n\t\t\t\tif (!this._shapes.xz.flipped.equals(flipped)) {\n\t\t\t\t\t\tthis._shapes.xz.flipped = flipped;\n\t\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t\tif (changed) {\n\t\t\t\t\t\tthis._renderUpdate = true;\n\t\t\t\t}\n\t\t}\n\t\t_drag(state) {\n\t\t\t\tfor(const axis in this._shapes){\n\t\t\t\t\t\tconst shape = this._shapes[axis];\n\t\t\t\t\t\tswitch(this.dragMode){\n\t\t\t\t\t\t\t\tcase 'show':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'hide':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = !state;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tcase 'selected':\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedAxis === 'xyz') {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tif (this._selectedIsPlane) {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis.length === 1 && !axis.includes(this._selectedAxis) : true;\n\t\t\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t\t\tshape.visible = state ? axis === this._selectedAxis : true;\n\t\t\t\t\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tthis._renderUpdate = true;\n\t\t}\n\t\t_storeNodeScales() {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tthis._nodeScales.set(node, node.getLocalScale().clone());\n\t\t\t\t}\n\t\t}\n\t\t_setNodeScales(scaleDelta) {\n\t\t\t\tfor(let i = 0; i < this.nodes.length; i++){\n\t\t\t\t\t\tconst node = this.nodes[i];\n\t\t\t\t\t\tconst scale = this._nodeScales.get(node);\n\t\t\t\t\t\tif (!scale) {\n\t\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnode.setLocalScale(v1.copy(scale).mul(scaleDelta).max(this.lowerBoundScale));\n\t\t\t\t}\n\t\t}\n\t\t_screenToPoint(x, y) {\n\t\t\t\tconst gizmoPos = this.root.getLocalPosition();\n\t\t\t\tconst mouseWPos = this._camera.screenToWorld(x, y, 1);\n\t\t\t\tconst axis = this._selectedAxis;\n\t\t\t\tconst isPlane = this._selectedIsPlane;\n\t\t\t\tconst ray = this._createRay(mouseWPos);\n\t\t\t\tconst plane = this._createPlane(axis, axis === 'xyz', !isPlane);\n\t\t\t\tif (!plane.intersectsRay(ray, point)) {\n\t\t\t\t\t\treturn point;\n\t\t\t\t}\n\t\t\t\tif (axis === 'xyz') {\n\t\t\t\t\t\tconst projDir = v2.add2(this._camera.entity.up, this._camera.entity.right).normalize();\n\t\t\t\t\t\tconst dir = v1.sub2(point, gizmoPos);\n\t\t\t\t\t\tconst v = dir.length() * dir.normalize().dot(projDir);\n\t\t\t\t\t\tpoint.set(v, v, v);\n\t\t\t\t\t\treturn point;\n\t\t\t\t}\n\t\t\t\tq.copy(this._rootStartRot).invert().transformVector(point, point);\n\t\t\t\tif (!isPlane) {\n\t\t\t\t\t\tthis._projectToAxis(point, axis);\n\t\t\t\t}\n\t\t\t\tif (this._uniform && isPlane) {\n\t\t\t\t\t\tv1.set(1, 1, 1);\n\t\t\t\t\t\tv1[axis] = 0;\n\t\t\t\t\t\tpoint.copy(v1.mulScalar(v1.dot(point)));\n\t\t\t\t\t\tpoint[axis] = 0;\n\t\t\t\t}\n\t\t\t\treturn point;\n\t\t}\n\t\tprerender() {\n\t\t\t\tsuper.prerender();\n\t\t\t\tif (!this.enabled) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis._shapesLookAtCamera();\n\t\t}\n}\n\nconst tmpV1 = new Vec3();\nconst tmpV2 = new Vec3();\nconst tmpV3 = new Vec3();\nconst tmpM1 = new Mat4();\nclass ViewCube extends EventHandler {\n\t\tstatic{\n\t\t\t\tthis.EVENT_CAMERAALIGN = 'camera:align';\n\t\t}\n\t\tconstructor(anchor){\n\t\t\t\tsuper(), this._size = 0, this._anchor = new Vec4(1, 1, 1, 1), this._colorX = COLOR_RED.clone(), this._colorY = COLOR_GREEN.clone(), this._colorZ = COLOR_BLUE.clone(), this._colorNeg = new Color(0.3, 0.3, 0.3), this._radius = 10, this._textSize = 10, this._lineThickness = 2, this._lineLength = 40;\n\t\t\t\tthis.dom = document.createElement('div');\n\t\t\t\tthis.dom.id = 'view-cube-container';\n\t\t\t\tthis.dom.style.cssText = [\n\t\t\t\t\t\t'position: absolute',\n\t\t\t\t\t\t'margin: auto',\n\t\t\t\t\t\t'pointer-events: none'\n\t\t\t\t].join(';');\n\t\t\t\tdocument.body.appendChild(this.dom);\n\t\t\t\tthis.anchor = anchor ?? this._anchor;\n\t\t\t\tthis._svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n\t\t\t\tthis._svg.id = 'view-cube-svg';\n\t\t\t\tthis._group = document.createElementNS(this._svg.namespaceURI, 'g');\n\t\t\t\tthis._svg.appendChild(this._group);\n\t\t\t\tthis._resize();\n\t\t\t\tconst colX = this._colorX.toString(false);\n\t\t\t\tconst colY = this._colorY.toString(false);\n\t\t\t\tconst colZ = this._colorZ.toString(false);\n\t\t\t\tthis._shapes = {\n\t\t\t\t\t\tnx: this._circle(colX),\n\t\t\t\t\t\tny: this._circle(colY),\n\t\t\t\t\t\tnz: this._circle(colZ),\n\t\t\t\t\t\tpx: this._circle(colX, true, 'X'),\n\t\t\t\t\t\tpy: this._circle(colY, true, 'Y'),\n\t\t\t\t\t\tpz: this._circle(colZ, true, 'Z'),\n\t\t\t\t\t\txaxis: this._line(colX),\n\t\t\t\t\t\tyaxis: this._line(colY),\n\t\t\t\t\t\tzaxis: this._line(colZ)\n\t\t\t\t};\n\t\t\t\tthis._shapes.px.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.RIGHT);\n\t\t\t\t});\n\t\t\t\tthis._shapes.py.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.UP);\n\t\t\t\t});\n\t\t\t\tthis._shapes.pz.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.BACK);\n\t\t\t\t});\n\t\t\t\tthis._shapes.nx.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.LEFT);\n\t\t\t\t});\n\t\t\t\tthis._shapes.ny.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.DOWN);\n\t\t\t\t});\n\t\t\t\tthis._shapes.nz.children[0].addEventListener('pointerdown', ()=>{\n\t\t\t\t\t\tthis.fire(ViewCube.EVENT_CAMERAALIGN, Vec3.FORWARD);\n\t\t\t\t});\n\t\t\t\tthis.dom.appendChild(this._svg);\n\t\t}\n\t\tset anchor(value) {\n\t\t\t\tthis._anchor.copy(value);\n\t\t\t\tthis.dom.style.top = this._anchor.x ? '0px' : 'auto';\n\t\t\t\tthis.dom.style.right = this._anchor.y ? '0px' : 'auto';\n\t\t\t\tthis.dom.style.bottom = this._anchor.z ? '0px' : 'auto';\n\t\t\t\tthis.dom.style.left = this._anchor.w ? '0px' : 'auto';\n\t\t}\n\t\tget anchor() {\n\t\t\t\treturn this._anchor;\n\t\t}\n\t\tset colorX(value) {\n\t\t\t\tthis._colorX.copy(value);\n\t\t\t\tthis._shapes.px.children[0].setAttribute('fill', this._colorX.toString(false));\n\t\t\t\tthis._shapes.px.children[0].setAttribute('stroke', this._colorX.toString(false));\n\t\t\t\tthis._shapes.nx.children[0].setAttribute('stroke', this._colorX.toString(false));\n\t\t\t\tthis._shapes.xaxis.setAttribute('stroke', this._colorX.toString(false));\n\t\t}\n\t\tget colorX() {\n\t\t\t\treturn this._colorX;\n\t\t}\n\t\tset colorY(value) {\n\t\t\t\tthis._colorY.copy(value);\n\t\t\t\tthis._shapes.py.children[0].setAttribute('fill', this._colorY.toString(false));\n\t\t\t\tthis._shapes.py.children[0].setAttribute('stroke', this._colorY.toString(false));\n\t\t\t\tthis._shapes.ny.children[0].setAttribute('stroke', this._colorY.toString(false));\n\t\t\t\tthis._shapes.yaxis.setAttribute('stroke', this._colorY.toString(false));\n\t\t}\n\t\tget colorY() {\n\t\t\t\treturn this._colorY;\n\t\t}\n\t\tset colorZ(value) {\n\t\t\t\tthis._colorZ.copy(value);\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('fill', this._colorZ.toString(false));\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('stroke', this._colorZ.toString(false));\n\t\t\t\tthis._shapes.nz.children[0].setAttribute('stroke', this._colorZ.toString(false));\n\t\t\t\tthis._shapes.zaxis.setAttribute('stroke', this._colorZ.toString(false));\n\t\t}\n\t\tget colorZ() {\n\t\t\t\treturn this._colorZ;\n\t\t}\n\t\tset colorNeg(value) {\n\t\t\t\tthis._colorNeg.copy(value);\n\t\t\t\tthis._shapes.px.children[0].setAttribute('fill', this._colorNeg.toString(false));\n\t\t\t\tthis._shapes.py.children[0].setAttribute('fill', this._colorNeg.toString(false));\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('fill', this._colorNeg.toString(false));\n\t\t}\n\t\tget colorNeg() {\n\t\t\t\treturn this._colorNeg;\n\t\t}\n\t\tset radius(value) {\n\t\t\t\tthis._radius = value;\n\t\t\t\tthis._shapes.px.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.py.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.nx.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.ny.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._shapes.nz.children[0].setAttribute('r', `${value}`);\n\t\t\t\tthis._resize();\n\t\t}\n\t\tget radius() {\n\t\t\t\treturn this._radius;\n\t\t}\n\t\tset textSize(value) {\n\t\t\t\tthis._textSize = value;\n\t\t\t\tthis._shapes.px.children[1].setAttribute('font-size', `${value}`);\n\t\t\t\tthis._shapes.py.children[1].setAttribute('font-size', `${value}`);\n\t\t\t\tthis._shapes.pz.children[1].setAttribute('font-size', `${value}`);\n\t\t}\n\t\tget textSize() {\n\t\t\t\treturn this._textSize;\n\t\t}\n\t\tset lineThickness(value) {\n\t\t\t\tthis._lineThickness = value;\n\t\t\t\tthis._shapes.xaxis.setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.yaxis.setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.zaxis.setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.px.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.py.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.pz.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.nx.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.ny.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._shapes.nz.children[0].setAttribute('stroke-width', `${value}`);\n\t\t\t\tthis._resize();\n\t\t}\n\t\tget lineThickness() {\n\t\t\t\treturn this._lineThickness;\n\t\t}\n\t\tset lineLength(value) {\n\t\t\t\tthis._lineLength = value;\n\t\t\t\tthis._resize();\n\t\t}\n\t\tget lineLength() {\n\t\t\t\treturn this._lineLength;\n\t\t}\n\t\t_resize() {\n\t\t\t\tthis._size = 2 * (this.lineLength + this.radius + this.lineThickness);\n\t\t\t\tthis.dom.style.width = `${this._size}px`;\n\t\t\t\tthis.dom.style.height = `${this._size}px`;\n\t\t\t\tthis._svg.setAttribute('width', `${this._size}`);\n\t\t\t\tthis._svg.setAttribute('height', `${this._size}`);\n\t\t\t\tthis._group.setAttribute('transform', `translate(${this._size * 0.5}, ${this._size * 0.5})`);\n\t\t}\n\t\t_transform(group, x, y) {\n\t\t\t\tgroup.setAttribute('transform', `translate(${x * this._lineLength}, ${y * this._lineLength})`);\n\t\t}\n\t\t_x2y2(line, x, y) {\n\t\t\t\tline.setAttribute('x2', `${x * this._lineLength}`);\n\t\t\t\tline.setAttribute('y2', `${y * this._lineLength}`);\n\t\t}\n\t\t_line(color) {\n\t\t\t\tconst result = document.createElementNS(this._svg.namespaceURI, 'line');\n\t\t\t\tresult.setAttribute('stroke', color);\n\t\t\t\tresult.setAttribute('stroke-width', `${this._lineThickness}`);\n\t\t\t\tthis._group.appendChild(result);\n\t\t\t\treturn result;\n\t\t}\n\t\t_circle(color, fill = false, text) {\n\t\t\t\tconst group = document.createElementNS(this._svg.namespaceURI, 'g');\n\t\t\t\tconst circle = document.createElementNS(this._svg.namespaceURI, 'circle');\n\t\t\t\tcircle.setAttribute('fill', fill ? color : this._colorNeg.toString(false));\n\t\t\t\tcircle.setAttribute('stroke', color);\n\t\t\t\tcircle.setAttribute('stroke-width', `${this._lineThickness}`);\n\t\t\t\tcircle.setAttribute('r', `${this._radius}`);\n\t\t\t\tcircle.setAttribute('cx', '0');\n\t\t\t\tcircle.setAttribute('cy', '0');\n\t\t\t\tcircle.setAttribute('pointer-events', 'all');\n\t\t\t\tgroup.appendChild(circle);\n\t\t\t\tif (text) {\n\t\t\t\t\t\tconst t = document.createElementNS(this._svg.namespaceURI, 'text');\n\t\t\t\t\t\tt.setAttribute('font-size', `${this._textSize}`);\n\t\t\t\t\t\tt.setAttribute('font-family', 'Arial');\n\t\t\t\t\t\tt.setAttribute('font-weight', 'bold');\n\t\t\t\t\t\tt.setAttribute('text-anchor', 'middle');\n\t\t\t\t\t\tt.setAttribute('alignment-baseline', 'central');\n\t\t\t\t\t\tt.textContent = text;\n\t\t\t\t\t\tgroup.appendChild(t);\n\t\t\t\t}\n\t\t\t\tgroup.setAttribute('cursor', 'pointer');\n\t\t\t\tthis._group.appendChild(group);\n\t\t\t\treturn group;\n\t\t}\n\t\tupdate(cameraMatrix) {\n\t\t\t\tif (!this._size) {\n\t\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\ttmpM1.invert(cameraMatrix);\n\t\t\t\ttmpM1.getX(tmpV1);\n\t\t\t\ttmpM1.getY(tmpV2);\n\t\t\t\ttmpM1.getZ(tmpV3);\n\t\t\t\tthis._transform(this._shapes.px, tmpV1.x, -tmpV1.y);\n\t\t\t\tthis._transform(this._shapes.nx, -tmpV1.x, tmpV1.y);\n\t\t\t\tthis._transform(this._shapes.py, tmpV2.x, -tmpV2.y);\n\t\t\t\tthis._transform(this._shapes.ny, -tmpV2.x, tmpV2.y);\n\t\t\t\tthis._transform(this._shapes.pz, tmpV3.x, -tmpV3.y);\n\t\t\t\tthis._transform(this._shapes.nz, -tmpV3.x, tmpV3.y);\n\t\t\t\tthis._x2y2(this._shapes.xaxis, tmpV1.x, -tmpV1.y);\n\t\t\t\tthis._x2y2(this._shapes.yaxis, tmpV2.x, -tmpV2.y);\n\t\t\t\tthis._x2y2(this._shapes.zaxis, tmpV3.x, -tmpV3.y);\n\t\t\t\tconst order = [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'xaxis',\n\t\t\t\t\t\t\t\t\t\t'px'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: tmpV1.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'yaxis',\n\t\t\t\t\t\t\t\t\t\t'py'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: tmpV2.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'zaxis',\n\t\t\t\t\t\t\t\t\t\t'pz'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: tmpV3.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'nx'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: -tmpV1.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'ny'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: -tmpV2.z\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tn: [\n\t\t\t\t\t\t\t\t\t\t'nz'\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tvalue: -tmpV3.z\n\t\t\t\t\t\t}\n\t\t\t\t].sort((a, b)=>a.value - b.value);\n\t\t\t\tconst fragment = document.createDocumentFragment();\n\t\t\t\torder.forEach((o)=>{\n\t\t\t\t\t\to.n.forEach((n)=>{\n\t\t\t\t\t\t\t\tfragment.appendChild(this._shapes[n]);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\tthis._group.appendChild(fragment);\n\t\t}\n\t\tdestroy() {\n\t\t\t\tthis.dom.remove();\n\t\t\t\tthis.off();\n\t\t}\n}\n\nexport { ABSOLUTE_URL, ACTION_GAMEPAD, ACTION_KEYBOARD, ACTION_MOUSE, ADDRESS_CLAMP_TO_EDGE, ADDRESS_MIRRORED_REPEAT, ADDRESS_REPEAT, AMBIENTSRC_AMBIENTSH, AMBIENTSRC_CONSTANT, AMBIENTSRC_ENVALATLAS, ANIM_BLEND_1D, ANIM_BLEND_2D_CARTESIAN, ANIM_BLEND_2D_DIRECTIONAL, ANIM_BLEND_DIRECT, ANIM_CONTROL_STATES, ANIM_EQUAL_TO, ANIM_GREATER_THAN, ANIM_GREATER_THAN_EQUAL_TO, ANIM_INTERRUPTION_NEXT, ANIM_INTERRUPTION_NEXT_PREV, ANIM_INTERRUPTION_NONE, ANIM_INTERRUPTION_PREV, ANIM_INTERRUPTION_PREV_NEXT, ANIM_LAYER_ADDITIVE, ANIM_LAYER_OVERWRITE, ANIM_LESS_THAN, ANIM_LESS_THAN_EQUAL_TO, ANIM_NOT_EQUAL_TO, ANIM_PARAMETER_BOOLEAN, ANIM_PARAMETER_FLOAT, ANIM_PARAMETER_INTEGER, ANIM_PARAMETER_TRIGGER, ANIM_STATE_ANY, ANIM_STATE_END, ANIM_STATE_START, ASPECT_AUTO, ASPECT_MANUAL, ASSET_ANIMATION, ASSET_AUDIO, ASSET_CONTAINER, ASSET_CSS, ASSET_CUBEMAP, ASSET_HTML, ASSET_IMAGE, ASSET_JSON, ASSET_MATERIAL, ASSET_MODEL, ASSET_SCRIPT, ASSET_SHADER, ASSET_TEXT, ASSET_TEXTURE, ASSET_TEXTUREATLAS, AXIS_KEY, AXIS_MOUSE_X, AXIS_MOUSE_Y, AXIS_PAD_L_X, AXIS_PAD_L_Y, AXIS_PAD_R_X, AXIS_PAD_R_Y, AnimBinder, AnimClip, AnimClipHandler, AnimComponent, AnimComponentLayer, AnimComponentSystem, AnimController, AnimCurve, AnimData, AnimEvaluator, AnimEvents, AnimSnapshot, AnimStateGraph, AnimStateGraphHandler, AnimTarget, AnimTrack, Animation, AnimationComponent, AnimationComponentSystem, AnimationHandler, AnimationKey, AnimationNode, AppBase, AppOptions, Application, Asset, AssetListLoader, AssetReference, AssetRegistry, AudioHandler, AudioListenerComponent, AudioListenerComponentSystem, BAKE_COLOR, BAKE_COLORDIR, BINDGROUP_MESH, BINDGROUP_MESH_UB, BINDGROUP_VIEW, BLENDEQUATION_ADD, BLENDEQUATION_MAX, BLENDEQUATION_MIN, BLENDEQUATION_REVERSE_SUBTRACT, BLENDEQUATION_SUBTRACT, BLENDMODE_CONSTANT, BLENDMODE_CONSTANT_ALPHA, BLENDMODE_CONSTANT_COLOR, BLENDMODE_DST_ALPHA, BLENDMODE_DST_COLOR, BLENDMODE_ONE, BLENDMODE_ONE_MINUS_CONSTANT, BLENDMODE_ONE_MINUS_CONSTANT_ALPHA, BLENDMODE_ONE_MINUS_CONSTANT_COLOR, BLENDMODE_ONE_MINUS_DST_ALPHA, BLENDMODE_ONE_MINUS_DST_COLOR, BLENDMODE_ONE_MINUS_SRC_ALPHA, BLENDMODE_ONE_MINUS_SRC_COLOR, BLENDMODE_SRC_ALPHA, BLENDMODE_SRC_ALPHA_SATURATE, BLENDMODE_SRC_COLOR, BLENDMODE_ZERO, BLEND_ADDITIVE, BLEND_ADDITIVEALPHA, BLEND_MAX, BLEND_MIN, BLEND_MULTIPLICATIVE, BLEND_MULTIPLICATIVE2X, BLEND_NONE, BLEND_NORMAL, BLEND_PREMULTIPLIED, BLEND_SCREEN, BLEND_SUBTRACTIVE, BLUR_BOX, BLUR_GAUSSIAN, BODYFLAG_KINEMATIC_OBJECT, BODYFLAG_NORESPONSE_OBJECT, BODYFLAG_STATIC_OBJECT, BODYGROUP_DEFAULT, BODYGROUP_DYNAMIC, BODYGROUP_ENGINE_1, BODYGROUP_ENGINE_2, BODYGROUP_ENGINE_3, BODYGROUP_KINEMATIC, BODYGROUP_NONE, BODYGROUP_STATIC, BODYGROUP_TRIGGER, BODYGROUP_USER_1, BODYGROUP_USER_2, BODYGROUP_USER_3, BODYGROUP_USER_4, BODYGROUP_USER_5, BODYGROUP_USER_6, BODYGROUP_USER_7, BODYGROUP_USER_8, BODYMASK_ALL, BODYMASK_NONE, BODYMASK_NOT_STATIC, BODYMASK_NOT_STATIC_KINEMATIC, BODYMASK_STATIC, BODYSTATE_ACTIVE_TAG, BODYSTATE_DISABLE_DEACTIVATION, BODYSTATE_DISABLE_SIMULATION, BODYSTATE_ISLAND_SLEEPING, BODYSTATE_WANTS_DEACTIVATION, BODYTYPE_DYNAMIC, BODYTYPE_KINEMATIC, BODYTYPE_STATIC, BUFFERUSAGE_COPY_DST, BUFFERUSAGE_COPY_SRC, BUFFERUSAGE_INDEX, BUFFERUSAGE_INDIRECT, BUFFERUSAGE_READ, BUFFERUSAGE_STORAGE, BUFFERUSAGE_UNIFORM, BUFFERUSAGE_VERTEX, BUFFERUSAGE_WRITE, BUFFER_DYNAMIC, BUFFER_GPUDYNAMIC, BUFFER_STATIC, BUFFER_STREAM, BUTTON_TRANSITION_MODE_SPRITE_CHANGE, BUTTON_TRANSITION_MODE_TINT, Batch, BatchGroup, BatchManager, BinaryHandler, BindGroupFormat, BindStorageBufferFormat, BindStorageTextureFormat, BindTextureFormat, BindUniformBufferFormat, BlendState, BoundingBox, BoundingSphere, BoxGeometry, Bundle, BundleHandler, BundleRegistry, ButtonComponent, ButtonComponentSystem, CHUNKAPI_1_51, CHUNKAPI_1_55, CHUNKAPI_1_56, CHUNKAPI_1_57, CHUNKAPI_1_58, CHUNKAPI_1_60, CHUNKAPI_1_62, CHUNKAPI_1_65, CHUNKAPI_1_70, CHUNKAPI_2_1, CHUNKAPI_2_3, CHUNKAPI_2_5, CHUNKAPI_2_6, CHUNKAPI_2_7, CHUNKAPI_2_8, CLEARFLAG_COLOR, CLEARFLAG_DEPTH, CLEARFLAG_STENCIL, CUBEFACE_NEGX, CUBEFACE_NEGY, CUBEFACE_NEGZ, CUBEFACE_POSX, CUBEFACE_POSY, CUBEFACE_POSZ, CUBEPROJ_BOX, CUBEPROJ_NONE, CULLFACE_BACK, CULLFACE_FRONT, CULLFACE_FRONTANDBACK, CULLFACE_NONE, CURVE_LINEAR, CURVE_SMOOTHSTEP, CURVE_SPLINE, CURVE_STEP, Camera, CameraComponent, CameraComponentSystem, CameraFrame, CameraFrameOptions, CanvasFont, CapsuleGeometry, ChunkUtils, CollisionComponent, CollisionComponentSystem, Color, Component, ComponentSystem, ComponentSystemRegistry, Compute, ConeGeometry, ContactPoint, ContactResult, ContainerHandler, ContainerResource, Controller, CssHandler, CubemapHandler, Curve, CurveSet, CylinderGeometry, DETAILMODE_ADD, DETAILMODE_MAX, DETAILMODE_MIN, DETAILMODE_MUL, DETAILMODE_OVERLAY, DETAILMODE_SCREEN, DEVICETYPE_NULL, DEVICETYPE_WEBGL2, DEVICETYPE_WEBGPU, DISPLAYFORMAT_HDR, DISPLAYFORMAT_LDR, DISPLAYFORMAT_LDR_SRGB, DISTANCE_EXPONENTIAL, DISTANCE_INVERSE, DISTANCE_LINEAR, DITHER_BAYER8, DITHER_BLUENOISE, DITHER_IGNNOISE, DITHER_NONE, DefaultAnimBinder, DepthState, DomeGeometry, DrawCommands, DualGestureSource, ELEMENTTYPE_GROUP, ELEMENTTYPE_IMAGE, ELEMENTTYPE_TEXT, EMITTERSHAPE_BOX, EMITTERSHAPE_SPHERE, EVENT_CULL_END, EVENT_GAMEPADCONNECTED, EVENT_GAMEPADDISCONNECTED, EVENT_KEYDOWN, EVENT_KEYUP, EVENT_MOUSEDOWN, EVENT_MOUSEMOVE, EVENT_MOUSEUP, EVENT_MOUSEWHEEL, EVENT_POSTCULL, EVENT_POSTRENDER, EVENT_POSTRENDER_LAYER, EVENT_PRECULL, EVENT_PRERENDER, EVENT_PRERENDER_LAYER, EVENT_SELECT, EVENT_SELECTEND, EVENT_SELECTSTART, EVENT_TOUCHCANCEL, EVENT_TOUCHEND, EVENT_TOUCHMOVE, EVENT_TOUCHSTART, ElementComponent, ElementComponentSystem, ElementDragHelper, ElementInput, ElementInputEvent, ElementMouseEvent, ElementSelectEvent, ElementTouchEvent, Entity, EnvLighting, EventHandle, EventHandler, FILLMODE_FILL_WINDOW, FILLMODE_KEEP_ASPECT, FILLMODE_NONE, FILTER_LINEAR, FILTER_LINEAR_MIPMAP_LINEAR, FILTER_LINEAR_MIPMAP_NEAREST, FILTER_NEAREST, FILTER_NEAREST_MIPMAP_LINEAR, FILTER_NEAREST_MIPMAP_NEAREST, FITMODE_CONTAIN, FITMODE_COVER, FITMODE_STRETCH, FITTING_BOTH, FITTING_NONE, FITTING_SHRINK, FITTING_STRETCH, FOG_EXP, FOG_EXP2, FOG_LINEAR, FOG_NONE, FONT_BITMAP, FONT_MSDF, FRESNEL_NONE, FRESNEL_SCHLICK, FUNC_ALWAYS, FUNC_EQUAL, FUNC_GREATER, FUNC_GREATEREQUAL, FUNC_LESS, FUNC_LESSEQUAL, FUNC_NEVER, FUNC_NOTEQUAL, FloatPacking, FlyController, FocusController, FogParams, FolderHandler, Font, FontHandler, ForwardRenderer, Frustum, GAMMA_NONE, GAMMA_SRGB, GIZMOAXIS_FACE, GIZMOAXIS_X, GIZMOAXIS_XY, GIZMOAXIS_XYZ, GIZMOAXIS_XZ, GIZMOAXIS_Y, GIZMOAXIS_YZ, GIZMOAXIS_Z, GIZMOSPACE_LOCAL, GIZMOSPACE_WORLD, GSplatComponent, GSplatComponentSystem, GSplatData, GSplatHandler, GSplatInstance, GSplatResource, GSplatResourceBase, GSplatSogsData, GSplatSogsResource, GamePads, GamepadSource, Geometry, Gizmo, GltfExporter, GraphNode, GraphicsDevice, HierarchyHandler, HtmlHandler, Http, I18n, INDEXFORMAT_UINT16, INDEXFORMAT_UINT32, INDEXFORMAT_UINT8, INTERPOLATION_CUBIC, INTERPOLATION_LINEAR, INTERPOLATION_STEP, ImageElement, IndexBuffer, IndexedList, InputConsumer, InputController, InputDelta, InputFrame, InputSource, JointComponent, JointComponentSystem, JsonHandler, JsonStandardMaterialParser, KEY_0, KEY_1, KEY_2, KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_A, KEY_ADD, KEY_ALT, KEY_B, KEY_BACKSPACE, KEY_BACK_SLASH, KEY_C, KEY_CAPS_LOCK, KEY_CLOSE_BRACKET, KEY_COMMA, KEY_CONTEXT_MENU, KEY_CONTROL, KEY_D, KEY_DECIMAL, KEY_DELETE, KEY_DIVIDE, KEY_DOWN, KEY_E, KEY_END, KEY_ENTER, KEY_EQUAL, KEY_ESCAPE, KEY_F, KEY_F1, KEY_F10, KEY_F11, KEY_F12, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_G, KEY_H, KEY_HOME, KEY_I, KEY_INSERT, KEY_J, KEY_K, KEY_L, KEY_LEFT, KEY_M, KEY_META, KEY_MULTIPLY, KEY_N, KEY_NUMPAD_0, KEY_NUMPAD_1, KEY_NUMPAD_2, KEY_NUMPAD_3, KEY_NUMPAD_4, KEY_NUMPAD_5, KEY_NUMPAD_6, KEY_NUMPAD_7, KEY_NUMPAD_8, KEY_NUMPAD_9, KEY_O, KEY_OPEN_BRACKET, KEY_P, KEY_PAGE_DOWN, KEY_PAGE_UP, KEY_PAUSE, KEY_PERIOD, KEY_PRINT_SCREEN, KEY_Q, KEY_R, KEY_RETURN, KEY_RIGHT, KEY_S, KEY_SEMICOLON, KEY_SEPARATOR, KEY_SHIFT, KEY_SLASH, KEY_SPACE, KEY_SUBTRACT, KEY_T, KEY_TAB, KEY_U, KEY_UP, KEY_V, KEY_W, KEY_WINDOWS, KEY_X, KEY_Y, KEY_Z, Kernel, Key, Keyboard, KeyboardEvent, KeyboardMouseSource, LAYERID_DEPTH, LAYERID_IMMEDIATE, LAYERID_SKYBOX, LAYERID_UI, LAYERID_WORLD, LAYER_GIZMO, LAYER_HUD, LAYER_WORLD, LIGHTFALLOFF_INVERSESQUARED, LIGHTFALLOFF_LINEAR, LIGHTSHAPE_DISK, LIGHTSHAPE_PUNCTUAL, LIGHTSHAPE_RECT, LIGHTSHAPE_SPHERE, LIGHTTYPE_COUNT, LIGHTTYPE_DIRECTIONAL, LIGHTTYPE_OMNI, LIGHTTYPE_POINT, LIGHTTYPE_SPOT, LIGHT_COLOR_DIVIDER, Layer, LayerComposition, LayoutCalculator, LayoutChildComponent, LayoutChildComponentSystem, LayoutGroupComponent, LayoutGroupComponentSystem, Light, LightComponent, LightComponentSystem, LightingParams, Lightmapper, LitMaterial, LitOptions, LitShaderOptions, LocalizedAsset, MASK_AFFECT_DYNAMIC, MASK_AFFECT_LIGHTMAPPED, MASK_BAKE, MOTION_FREE, MOTION_LIMITED, MOTION_LOCKED, MOUSEBUTTON_LEFT, MOUSEBUTTON_MIDDLE, MOUSEBUTTON_NONE, MOUSEBUTTON_RIGHT, Mat3, Mat4, Material, MaterialHandler, Mesh, MeshInstance, MiniStats, Model, ModelComponent, ModelComponentSystem, ModelHandler, Morph, MorphInstance, MorphTarget, Mouse, MouseEvent, MultiTouchSource, Node, NullGraphicsDevice, ORIENTATION_HORIZONTAL, ORIENTATION_VERTICAL, OrbitController, OrientedBox, OutlineRenderer, PAD_1, PAD_2, PAD_3, PAD_4, PAD_DOWN, PAD_FACE_1, PAD_FACE_2, PAD_FACE_3, PAD_FACE_4, PAD_LEFT, PAD_L_SHOULDER_1, PAD_L_SHOULDER_2, PAD_L_STICK_BUTTON, PAD_L_STICK_X, PAD_L_STICK_Y, PAD_RIGHT, PAD_R_SHOULDER_1, PAD_R_SHOULDER_2, PAD_R_STICK_BUTTON, PAD_R_STICK_X, PAD_R_STICK_Y, PAD_SELECT, PAD_START, PAD_UP, PAD_VENDOR, PARTICLEMODE_CPU, PARTICLEMODE_GPU, PARTICLEORIENTATION_EMITTER, PARTICLEORIENTATION_SCREEN, PARTICLEORIENTATION_WORLD, PARTICLESORT_DISTANCE, PARTICLESORT_NEWER_FIRST, PARTICLESORT_NONE, PARTICLESORT_OLDER_FIRST, PIXELFORMAT_111110F, PIXELFORMAT_A8, PIXELFORMAT_ASTC_4x4, PIXELFORMAT_ASTC_4x4_SRGB, PIXELFORMAT_ATC_RGB, PIXELFORMAT_ATC_RGBA, PIXELFORMAT_BC6F, PIXELFORMAT_BC6UF, PIXELFORMAT_BC7, PIXELFORMAT_BC7_SRGBA, PIXELFORMAT_BGRA8, PIXELFORMAT_DEPTH, PIXELFORMAT_DEPTH16, PIXELFORMAT_DEPTHSTENCIL, PIXELFORMAT_DXT1, PIXELFORMAT_DXT1_SRGB, PIXELFORMAT_DXT3, PIXELFORMAT_DXT3_SRGBA, PIXELFORMAT_DXT5, PIXELFORMAT_DXT5_SRGBA, PIXELFORMAT_ETC1, PIXELFORMAT_ETC2_RGB, PIXELFORMAT_ETC2_RGBA, PIXELFORMAT_ETC2_SRGB, PIXELFORMAT_ETC2_SRGBA, PIXELFORMAT_L8, PIXELFORMAT_L8_A8, PIXELFORMAT_LA8, PIXELFORMAT_PVRTC_2BPP_RGBA_1, PIXELFORMAT_PVRTC_2BPP_RGB_1, PIXELFORMAT_PVRTC_4BPP_RGBA_1, PIXELFORMAT_PVRTC_4BPP_RGB_1, PIXELFORMAT_R16F, PIXELFORMAT_R16I, PIXELFORMAT_R16U, PIXELFORMAT_R32F, PIXELFORMAT_R32I, PIXELFORMAT_R32U, PIXELFORMAT_R4_G4_B4_A4, PIXELFORMAT_R5_G5_B5_A1, PIXELFORMAT_R5_G6_B5, PIXELFORMAT_R8, PIXELFORMAT_R8I, PIXELFORMAT_R8U, PIXELFORMAT_R8_G8_B8, PIXELFORMAT_R8_G8_B8_A8, PIXELFORMAT_RG16F, PIXELFORMAT_RG16I, PIXELFORMAT_RG16U, PIXELFORMAT_RG32I, PIXELFORMAT_RG32U, PIXELFORMAT_RG8, PIXELFORMAT_RG8I, PIXELFORMAT_RG8U, PIXELFORMAT_RGB16F, PIXELFORMAT_RGB32F, PIXELFORMAT_RGB565, PIXELFORMAT_RGB8, PIXELFORMAT_RGBA16F, PIXELFORMAT_RGBA16I, PIXELFORMAT_RGBA16U, PIXELFORMAT_RGBA32F, PIXELFORMAT_RGBA32I, PIXELFORMAT_RGBA32U, PIXELFORMAT_RGBA4, PIXELFORMAT_RGBA5551, PIXELFORMAT_RGBA8, PIXELFORMAT_RGBA8I, PIXELFORMAT_RGBA8U, PIXELFORMAT_SBGRA8, PIXELFORMAT_SRGB, PIXELFORMAT_SRGB8, PIXELFORMAT_SRGBA, PIXELFORMAT_SRGBA8, PRIMITIVE_LINELOOP, PRIMITIVE_LINES, PRIMITIVE_LINESTRIP, PRIMITIVE_POINTS, PRIMITIVE_TRIANGLES, PRIMITIVE_TRIFAN, PRIMITIVE_TRISTRIP, PROJECTION_ORTHOGRAPHIC, PROJECTION_PERSPECTIVE, ParticleEmitter, ParticleSystemComponent, ParticleSystemComponentSystem, Picker, Plane, PlaneGeometry, Pose, PostEffect, PostEffectQueue, ProgramLibrary, QuadRender, Quat, REFLECTIONSRC_CUBEMAP, REFLECTIONSRC_ENVATLAS, REFLECTIONSRC_ENVATLASHQ, REFLECTIONSRC_NONE, REFLECTIONSRC_SPHEREMAP, RENDERSTYLE_POINTS, RENDERSTYLE_SOLID, RENDERSTYLE_WIREFRAME, RESOLUTION_AUTO, RESOLUTION_FIXED, RIGIDBODY_ACTIVE_TAG, RIGIDBODY_CF_KINEMATIC_OBJECT, RIGIDBODY_CF_NORESPONSE_OBJECT, RIGIDBODY_CF_STATIC_OBJECT, RIGIDBODY_DISABLE_DEACTIVATION, RIGIDBODY_DISABLE_SIMULATION, RIGIDBODY_ISLAND_SLEEPING, RIGIDBODY_TYPE_DYNAMIC, RIGIDBODY_TYPE_KINEMATIC, RIGIDBODY_TYPE_STATIC, RIGIDBODY_WANTS_DEACTIVATION, Ray, RaycastResult, ReadStream, RenderComponent, RenderComponentSystem, RenderHandler, RenderPass, RenderPassBloom, RenderPassCameraFrame, RenderPassColorGrab, RenderPassCompose, RenderPassDepthAwareBlur, RenderPassDof, RenderPassDownsample, RenderPassForward, RenderPassPrepass, RenderPassShaderQuad, RenderPassSsao, RenderPassTAA, RenderPassUpsample, RenderTarget, ResourceHandler, ResourceLoader, RigidBodyComponent, RigidBodyComponentSystem, RotateGizmo, SAMPLETYPE_DEPTH, SAMPLETYPE_FLOAT, SAMPLETYPE_INT, SAMPLETYPE_UINT, SAMPLETYPE_UNFILTERABLE_FLOAT, SCALEMODE_BLEND, SCALEMODE_NONE, SCROLLBAR_VISIBILITY_SHOW_ALWAYS, SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED, SCROLL_MODE_BOUNCE, SCROLL_MODE_CLAMP, SCROLL_MODE_INFINITE, SEMANTIC_ATTR0, SEMANTIC_ATTR1, SEMANTIC_ATTR10, SEMANTIC_ATTR11, SEMANTIC_ATTR12, SEMANTIC_ATTR13, SEMANTIC_ATTR14, SEMANTIC_ATTR15, SEMANTIC_ATTR2, SEMANTIC_ATTR3, SEMANTIC_ATTR4, SEMANTIC_ATTR5, SEMANTIC_ATTR6, SEMANTIC_ATTR7, SEMANTIC_ATTR8, SEMANTIC_ATTR9, SEMANTIC_BLENDINDICES, SEMANTIC_BLENDWEIGHT, SEMANTIC_COLOR, SEMANTIC_NORMAL, SEMANTIC_POSITION, SEMANTIC_TANGENT, SEMANTIC_TEXCOORD, SEMANTIC_TEXCOORD0, SEMANTIC_TEXCOORD1, SEMANTIC_TEXCOORD2, SEMANTIC_TEXCOORD3, SEMANTIC_TEXCOORD4, SEMANTIC_TEXCOORD5, SEMANTIC_TEXCOORD6, SEMANTIC_TEXCOORD7, SHADERDEF_BATCH, SHADERDEF_DIRLM, SHADERDEF_INSTANCING, SHADERDEF_LM, SHADERDEF_LMAMBIENT, SHADERDEF_MORPH_NORMAL, SHADERDEF_MORPH_POSITION, SHADERDEF_MORPH_TEXTURE_BASED_INT, SHADERDEF_NOSHADOW, SHADERDEF_SCREENSPACE, SHADERDEF_SKIN, SHADERDEF_TANGENTS, SHADERDEF_UV0, SHADERDEF_UV1, SHADERDEF_VCOLOR, SHADERLANGUAGE_GLSL, SHADERLANGUAGE_WGSL, SHADERPASS_ALBEDO, SHADERPASS_AO, SHADERPASS_EMISSION, SHADERPASS_FORWARD, SHADERPASS_GLOSS, SHADERPASS_LIGHTING, SHADERPASS_METALNESS, SHADERPASS_OPACITY, SHADERPASS_SPECULARITY, SHADERPASS_UV0, SHADERPASS_WORLDNORMAL, SHADERSTAGE_COMPUTE, SHADERSTAGE_FRAGMENT, SHADERSTAGE_VERTEX, SHADERTAG_MATERIAL, SHADER_FORWARD, SHADER_PICK, SHADER_PREPASS, SHADER_SHADOW, SHADOWUPDATE_NONE, SHADOWUPDATE_REALTIME, SHADOWUPDATE_THISFRAME, SHADOW_CASCADE_0, SHADOW_CASCADE_1, SHADOW_CASCADE_2, SHADOW_CASCADE_3, SHADOW_CASCADE_ALL, SHADOW_PCF1, SHADOW_PCF1_16F, SHADOW_PCF1_32F, SHADOW_PCF3, SHADOW_PCF3_16F, SHADOW_PCF3_32F, SHADOW_PCF5, SHADOW_PCF5_16F, SHADOW_PCF5_32F, SHADOW_PCSS_32F, SHADOW_VSM16, SHADOW_VSM32, SHADOW_VSM_16F, SHADOW_VSM_32F, SKYTYPE_BOX, SKYTYPE_DOME, SKYTYPE_INFINITE, SORTMODE_BACK2FRONT, SORTMODE_CUSTOM, SORTMODE_FRONT2BACK, SORTMODE_MANUAL, SORTMODE_MATERIALMESH, SORTMODE_NONE, SPECOCC_AO, SPECOCC_GLOSSDEPENDENT, SPECOCC_NONE, SPRITETYPE_ANIMATED, SPRITETYPE_SIMPLE, SPRITE_RENDERMODE_SIMPLE, SPRITE_RENDERMODE_SLICED, SPRITE_RENDERMODE_TILED, SSAOTYPE_COMBINE, SSAOTYPE_LIGHTING, SSAOTYPE_NONE, STENCILOP_DECREMENT, STENCILOP_DECREMENTWRAP, STENCILOP_INCREMENT, STENCILOP_INCREMENTWRAP, STENCILOP_INVERT, STENCILOP_KEEP, STENCILOP_REPLACE, STENCILOP_ZERO, ScaleGizmo, Scene, SceneHandler, SceneRegistry, SceneRegistryItem, SceneSettingsHandler, ScopeId, ScopeSpace, ScreenComponent, ScreenComponentSystem, Script, ScriptAttributes, ScriptComponent, ScriptComponentSystem, ScriptHandler, ScriptRegistry, ScriptType, ScrollViewComponent, ScrollViewComponentSystem, ScrollbarComponent, ScrollbarComponentSystem, Shader, ShaderChunks, ShaderHandler, ShaderMaterial, ShaderPass, ShaderUtils, SingleContactResult, SingleGestureSource, Skeleton, Skin, SkinBatchInstance, SkinInstance, Sky, SortedLoopArray, Sound, SoundComponent, SoundComponentSystem, SoundInstance, SoundInstance3d, SoundManager, SoundSlot, SphereGeometry, Sprite, SpriteAnimationClip, SpriteComponent, SpriteComponentSystem, SpriteHandler, StandardMaterial, StandardMaterialOptions, StencilParameters, StorageBuffer, TEXHINT_ASSET, TEXHINT_LIGHTMAP, TEXHINT_NONE, TEXHINT_SHADOWMAP, TEXPROPERTY_ADDRESS_U, TEXPROPERTY_ADDRESS_V, TEXPROPERTY_ADDRESS_W, TEXPROPERTY_ALL, TEXPROPERTY_ANISOTROPY, TEXPROPERTY_COMPARE_FUNC, TEXPROPERTY_COMPARE_ON_READ, TEXPROPERTY_MAG_FILTER, TEXPROPERTY_MIN_FILTER, TEXTUREDIMENSION_1D, TEXTUREDIMENSION_2D, TEXTUREDIMENSION_2D_ARRAY, TEXTUREDIMENSION_3D, TEXTUREDIMENSION_CUBE, TEXTUREDIMENSION_CUBE_ARRAY, TEXTURELOCK_NONE, TEXTURELOCK_READ, TEXTURELOCK_WRITE, TEXTUREPROJECTION_CUBE, TEXTUREPROJECTION_EQUIRECT, TEXTUREPROJECTION_NONE, TEXTUREPROJECTION_OCTAHEDRAL, TEXTURETYPE_DEFAULT, TEXTURETYPE_RGBE, TEXTURETYPE_RGBM, TEXTURETYPE_RGBP, TEXTURETYPE_SWIZZLEGGGR, TONEMAP_ACES, TONEMAP_ACES2, TONEMAP_FILMIC, TONEMAP_HEJL, TONEMAP_LINEAR, TONEMAP_NEUTRAL, TONEMAP_NONE, TRACEID_BINDGROUPFORMAT_ALLOC, TRACEID_BINDGROUP_ALLOC, TRACEID_COMPUTEPIPELINE_ALLOC, TRACEID_ELEMENT, TRACEID_GPU_TIMINGS, TRACEID_OCTREE_RESOURCES, TRACEID_PIPELINELAYOUT_ALLOC, TRACEID_RENDERPIPELINE_ALLOC, TRACEID_RENDER_ACTION, TRACEID_RENDER_FRAME, TRACEID_RENDER_FRAME_TIME, TRACEID_RENDER_PASS, TRACEID_RENDER_PASS_DETAIL, TRACEID_RENDER_QUEUE, TRACEID_RENDER_TARGET_ALLOC, TRACEID_SHADER_ALLOC, TRACEID_SHADER_COMPILE, TRACEID_TEXTURES, TRACEID_TEXTURE_ALLOC, TRACEID_VRAM_IB, TRACEID_VRAM_SB, TRACEID_VRAM_TEXTURE, TRACEID_VRAM_VB, TYPE_FLOAT16, TYPE_FLOAT32, TYPE_INT16, TYPE_INT32, TYPE_INT8, TYPE_UINT16, TYPE_UINT32, TYPE_UINT8, Tags, Template, TemplateHandler, TextElement, TextHandler, Texture, TextureAtlas, TextureAtlasHandler, TextureHandler, TextureUtils, TorusGeometry, Touch, TouchDevice, TouchEvent, Tracing, TransformFeedback, TransformGizmo, TranslateGizmo, Tri, UNIFORMTYPE_BOOL, UNIFORMTYPE_BOOLARRAY, UNIFORMTYPE_BVEC2, UNIFORMTYPE_BVEC2ARRAY, UNIFORMTYPE_BVEC3, UNIFORMTYPE_BVEC3ARRAY, UNIFORMTYPE_BVEC4, UNIFORMTYPE_BVEC4ARRAY, UNIFORMTYPE_FLOAT, UNIFORMTYPE_FLOATARRAY, UNIFORMTYPE_INT, UNIFORMTYPE_INTARRAY, UNIFORMTYPE_ITEXTURE2D, UNIFORMTYPE_ITEXTURE2D_ARRAY, UNIFORMTYPE_ITEXTURE3D, UNIFORMTYPE_ITEXTURECUBE, UNIFORMTYPE_IVEC2, UNIFORMTYPE_IVEC2ARRAY, UNIFORMTYPE_IVEC3, UNIFORMTYPE_IVEC3ARRAY, UNIFORMTYPE_IVEC4, UNIFORMTYPE_IVEC4ARRAY, UNIFORMTYPE_MAT2, UNIFORMTYPE_MAT3, UNIFORMTYPE_MAT4, UNIFORMTYPE_MAT4ARRAY, UNIFORMTYPE_TEXTURE2D, UNIFORMTYPE_TEXTURE2D_ARRAY, UNIFORMTYPE_TEXTURE2D_SHADOW, UNIFORMTYPE_TEXTURE3D, UNIFORMTYPE_TEXTURECUBE, UNIFORMTYPE_TEXTURECUBE_SHADOW, UNIFORMTYPE_UINT, UNIFORMTYPE_UINTARRAY, UNIFORMTYPE_UTEXTURE2D, UNIFORMTYPE_UTEXTURE2D_ARRAY, UNIFORMTYPE_UTEXTURE3D, UNIFORMTYPE_UTEXTURECUBE, UNIFORMTYPE_UVEC2, UNIFORMTYPE_UVEC2ARRAY, UNIFORMTYPE_UVEC3, UNIFORMTYPE_UVEC3ARRAY, UNIFORMTYPE_UVEC4, UNIFORMTYPE_UVEC4ARRAY, UNIFORMTYPE_VEC2, UNIFORMTYPE_VEC2ARRAY, UNIFORMTYPE_VEC3, UNIFORMTYPE_VEC3ARRAY, UNIFORMTYPE_VEC4, UNIFORMTYPE_VEC4ARRAY, UNIFORM_BUFFER_DEFAULT_SLOT_NAME, UNUSED_UNIFORM_NAME, URI, UniformBufferFormat, UniformFormat, UsdzExporter, VIEW_CENTER, VIEW_LEFT, VIEW_RIGHT, Vec2, Vec3, Vec4, VertexBuffer, VertexFormat, VertexIterator, ViewCube, WasmModule, WebglGraphicsDevice, WebgpuGraphicsDevice, WorldClusters, XRDEPTHSENSINGFORMAT_F32, XRDEPTHSENSINGFORMAT_L8A8, XRDEPTHSENSINGFORMAT_R16U, XRDEPTHSENSINGUSAGE_CPU, XRDEPTHSENSINGUSAGE_GPU, XREYE_LEFT, XREYE_NONE, XREYE_RIGHT, XRHAND_LEFT, XRHAND_NONE, XRHAND_RIGHT, XRPAD_A, XRPAD_B, XRPAD_SQUEEZE, XRPAD_STICK_BUTTON, XRPAD_STICK_X, XRPAD_STICK_Y, XRPAD_TOUCHPAD_BUTTON, XRPAD_TOUCHPAD_X, XRPAD_TOUCHPAD_Y, XRPAD_TRIGGER, XRSPACE_BOUNDEDFLOOR, XRSPACE_LOCAL, XRSPACE_LOCALFLOOR, XRSPACE_UNBOUNDED, XRSPACE_VIEWER, XRTARGETRAY_GAZE, XRTARGETRAY_POINTER, XRTARGETRAY_SCREEN, XRTRACKABLE_MESH, XRTRACKABLE_PLANE, XRTRACKABLE_POINT, XRTYPE_AR, XRTYPE_INLINE, XRTYPE_VR, XrAnchor, XrAnchors, XrDomOverlay, XrFinger, XrHand, XrHitTest, XrHitTestSource, XrImageTracking, XrInput, XrInputSource, XrJoint, XrLightEstimation, XrManager, XrMeshDetection, XrPlane, XrPlaneDetection, XrTrackedImage, XrView, XrViews, ZoneComponent, ZoneComponentSystem, ambientSrcNames, app, basisInitialize, bindGroupNames, blendNames, calculateNormals, calculateTangents, createBox, createCapsule, createCone, createCylinder, createGraphicsDevice, createMesh, createPlane, createScript, createShader, createShaderFromCode, createSphere, createTorus, createURI, cubemaProjectionNames, ditherNames, dracoInitialize, drawFullscreenQuad, drawQuadWithShader, extend, fresnelNames, gammaNames, getPixelFormatArrayType, getReservedScriptNames, getTouchTargetCoords, guid, http, indexFormatByteSize, isCompressedPixelFormat, isIntegerPixelFormat, isSrgbPixelFormat, lightFalloffNames, lightShapeNames, lightTypeNames, math, now, path, pixelFormatGammaToLinear, pixelFormatInfo, pixelFormatLinearToGamma, platform, primitiveGlslToWgslTypeMap, reflectionSrcNames, registerScript, reprojectTexture, requiresManualGamma, revision, script, semanticToLocation, shaderChunks, shadowTypeInfo, specularOcclusionNames, spriteRenderModeNames, string, tonemapNames, typedArrayIndexFormats, typedArrayIndexFormatsByteSize, typedArrayToType, typedArrayTypes, typedArrayTypesByteSize, uniformTypeToName, uniformTypeToNameMapWGSL, uniformTypeToNameWGSL, uniformTypeToStorage, version, vertexTypesNames };\n","import { WasmModule, basisInitialize, dracoInitialize } from 'playcanvas';\n\nexport const loadModules = function (modules, urlPrefix) {\n\n    return new Promise((resolve) => {\n\n        if (typeof modules === \"undefined\" || modules.length === 0) {\n\n            resolve();\n\n        } else {\n            let remaining = modules.length;\n            const moduleLoaded = () => {\n                if (--remaining === 0) {\n                    resolve();\n                }\n            };\n\n            modules.forEach(function (m) {\n                WasmModule.setConfig(m.moduleName, {\n                    glueUrl: urlPrefix + m.glueUrl,\n                    wasmUrl: urlPrefix + m.wasmUrl,\n                    fallbackUrl: urlPrefix + m.fallbackUrl\n                });\n\n                if (!m.hasOwnProperty('preload') || m.preload) {\n                    if (m.moduleName === 'BASIS') {\n                        // preload basis transcoder\n                        basisInitialize();\n                        moduleLoaded();\n                    } else if (m.moduleName === 'DracoDecoderModule') {\n                        // preload draco decoder\n                        if (dracoInitialize) {\n                            // 1.63 onwards\n                            dracoInitialize();\n                            moduleLoaded();\n                        } else {\n                            // 1.62 and earlier\n                            WasmModule.getInstance(m.moduleName, moduleLoaded);\n                        }\n                    } else {\n                        // load remaining modules in global scope\n                        WasmModule.getInstance(m.moduleName, moduleLoaded);\n                    }\n                } else {\n                    moduleLoaded();\n                }\n            });\n        }\n    });\n};\n","import { script } from 'playcanvas';\n\n \nexport const ASSET_PREFIX = \"https://s3-eu-west-1.amazonaws.com/apps.playcanvas.com/ef01660a/\";\nexport const SCRIPT_PREFIX = \"\";\nexport const SCENE_PATH = \"2354634.json\";\n\nexport const CONTEXT_OPTIONS = {\n    'antialias': false,\n    'alpha': false,\n    'preserveDrawingBuffer': false,\n    'deviceTypes': [`webgpu`, `webgl2`, `webgl1`],\n    'powerPreference': \"high-performance\"\n};\n\nexport const SCRIPTS = [ 261500327, 261500761 ];\nexport const CONFIG_FILENAME = \"https://s3-eu-west-1.amazonaws.com/apps.playcanvas.com/ef01660a/config.json\";\nexport const INPUT_SETTINGS = {\n    useKeyboard: true,\n    useMouse: true,\n    useGamepads: false,\n    useTouch: true\n};\nexport const PRELOAD_MODULES = [\n];\n    \nscript.legacy = false;\n","pc.script.createLoadingScreen(function (app) {\n    var showSplash = function () {\n        // splash wrapper\n        var wrapper = document.createElement('div');\n        wrapper.id = 'application-splash-wrapper';\n        document.body.appendChild(wrapper);\n\n        // splash\n        var splash = document.createElement('div');\n        splash.id = 'application-splash';\n        wrapper.appendChild(splash);\n        splash.style.display = 'none';\n\n        var logo = document.createElement('img');\n        \n        // Base64 encoded image, generated from: https://base64.guru/converter/encode/image\n        logo.src = \"data:image/jpeg;base64,/9j/4gxYSUNDX1BST0ZJTEUAAQEAAAxITGlubwIQAABtbnRyUkdCIFhZWiAHzgACAAkABgAxAABhY3NwTVNGVAAAAABJRUMgc1JHQgAAAAAAAAAAAAAAAAAA9tYAAQAAAADTLUhQICAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFjcHJ0AAABUAAAADNkZXNjAAABhAAAAGx3dHB0AAAB8AAAABRia3B0AAACBAAAABRyWFlaAAACGAAAABRnWFlaAAACLAAAABRiWFlaAAACQAAAABRkbW5kAAACVAAAAHBkbWRkAAACxAAAAIh2dWVkAAADTAAAAIZ2aWV3AAAD1AAAACRsdW1pAAAD+AAAABRtZWFzAAAEDAAAACR0ZWNoAAAEMAAAAAxyVFJDAAAEPAAACAxnVFJDAAAEPAAACAxiVFJDAAAEPAAACAx0ZXh0AAAAAENvcHlyaWdodCAoYykgMTk5OCBIZXdsZXR0LVBhY2thcmQgQ29tcGFueQAAZGVzYwAAAAAAAAASc1JHQiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAABJzUkdCIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAWFlaIAAAAAAAAPNRAAEAAAABFsxYWVogAAAAAAAAAAAAAAAAAAAAAFhZWiAAAAAAAABvogAAOPUAAAOQWFlaIAAAAAAAAGKZAAC3hQAAGNpYWVogAAAAAAAAJKAAAA+EAAC2z2Rlc2MAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAFklFQyBodHRwOi8vd3d3LmllYy5jaAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkZXNjAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAC5JRUMgNjE5NjYtMi4xIERlZmF1bHQgUkdCIGNvbG91ciBzcGFjZSAtIHNSR0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAZGVzYwAAAAAAAAAsUmVmZXJlbmNlIFZpZXdpbmcgQ29uZGl0aW9uIGluIElFQzYxOTY2LTIuMQAAAAAAAAAAAAAALFJlZmVyZW5jZSBWaWV3aW5nIENvbmRpdGlvbiBpbiBJRUM2MTk2Ni0yLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHZpZXcAAAAAABOk/gAUXy4AEM8UAAPtzAAEEwsAA1yeAAAAAVhZWiAAAAAAAEwJVgBQAAAAVx/nbWVhcwAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAo8AAAACc2lnIAAAAABDUlQgY3VydgAAAAAAAAQAAAAABQAKAA8AFAAZAB4AIwAoAC0AMgA3ADsAQABFAEoATwBUAFkAXgBjAGgAbQByAHcAfACBAIYAiwCQAJUAmgCfAKQAqQCuALIAtwC8AMEAxgDLANAA1QDbAOAA5QDrAPAA9gD7AQEBBwENARMBGQEfASUBKwEyATgBPgFFAUwBUgFZAWABZwFuAXUBfAGDAYsBkgGaAaEBqQGxAbkBwQHJAdEB2QHhAekB8gH6AgMCDAIUAh0CJgIvAjgCQQJLAlQCXQJnAnECegKEAo4CmAKiAqwCtgLBAssC1QLgAusC9QMAAwsDFgMhAy0DOANDA08DWgNmA3IDfgOKA5YDogOuA7oDxwPTA+AD7AP5BAYEEwQgBC0EOwRIBFUEYwRxBH4EjASaBKgEtgTEBNME4QTwBP4FDQUcBSsFOgVJBVgFZwV3BYYFlgWmBbUFxQXVBeUF9gYGBhYGJwY3BkgGWQZqBnsGjAadBq8GwAbRBuMG9QcHBxkHKwc9B08HYQd0B4YHmQesB78H0gflB/gICwgfCDIIRghaCG4IggiWCKoIvgjSCOcI+wkQCSUJOglPCWQJeQmPCaQJugnPCeUJ+woRCicKPQpUCmoKgQqYCq4KxQrcCvMLCwsiCzkLUQtpC4ALmAuwC8gL4Qv5DBIMKgxDDFwMdQyODKcMwAzZDPMNDQ0mDUANWg10DY4NqQ3DDd4N+A4TDi4OSQ5kDn8Omw62DtIO7g8JDyUPQQ9eD3oPlg+zD88P7BAJECYQQxBhEH4QmxC5ENcQ9RETETERTxFtEYwRqhHJEegSBxImEkUSZBKEEqMSwxLjEwMTIxNDE2MTgxOkE8UT5RQGFCcUSRRqFIsUrRTOFPAVEhU0FVYVeBWbFb0V4BYDFiYWSRZsFo8WshbWFvoXHRdBF2UXiReuF9IX9xgbGEAYZRiKGK8Y1Rj6GSAZRRlrGZEZtxndGgQaKhpRGncanhrFGuwbFBs7G2MbihuyG9ocAhwqHFIcexyjHMwc9R0eHUcdcB2ZHcMd7B4WHkAeah6UHr4e6R8THz4faR+UH78f6iAVIEEgbCCYIMQg8CEcIUghdSGhIc4h+yInIlUigiKvIt0jCiM4I2YjlCPCI/AkHyRNJHwkqyTaJQklOCVoJZclxyX3JicmVyaHJrcm6CcYJ0kneierJ9woDSg/KHEooijUKQYpOClrKZ0p0CoCKjUqaCqbKs8rAis2K2krnSvRLAUsOSxuLKIs1y0MLUEtdi2rLeEuFi5MLoIuty7uLyQvWi+RL8cv/jA1MGwwpDDbMRIxSjGCMbox8jIqMmMymzLUMw0zRjN/M7gz8TQrNGU0njTYNRM1TTWHNcI1/TY3NnI2rjbpNyQ3YDecN9c4FDhQOIw4yDkFOUI5fzm8Ofk6Njp0OrI67zstO2s7qjvoPCc8ZTykPOM9Ij1hPaE94D4gPmA+oD7gPyE/YT+iP+JAI0BkQKZA50EpQWpBrEHuQjBCckK1QvdDOkN9Q8BEA0RHRIpEzkUSRVVFmkXeRiJGZ0arRvBHNUd7R8BIBUhLSJFI10kdSWNJqUnwSjdKfUrESwxLU0uaS+JMKkxyTLpNAk1KTZNN3E4lTm5Ot08AT0lPk0/dUCdQcVC7UQZRUFGbUeZSMVJ8UsdTE1NfU6pT9lRCVI9U21UoVXVVwlYPVlxWqVb3V0RXklfgWC9YfVjLWRpZaVm4WgdaVlqmWvVbRVuVW+VcNVyGXNZdJ114XcleGl5sXr1fD19hX7NgBWBXYKpg/GFPYaJh9WJJYpxi8GNDY5dj62RAZJRk6WU9ZZJl52Y9ZpJm6Gc9Z5Nn6Wg/aJZo7GlDaZpp8WpIap9q92tPa6dr/2xXbK9tCG1gbbluEm5rbsRvHm94b9FwK3CGcOBxOnGVcfByS3KmcwFzXXO4dBR0cHTMdSh1hXXhdj52m3b4d1Z3s3gReG54zHkqeYl553pGeqV7BHtje8J8IXyBfOF9QX2hfgF+Yn7CfyN/hH/lgEeAqIEKgWuBzYIwgpKC9INXg7qEHYSAhOOFR4Wrhg6GcobXhzuHn4gEiGmIzokziZmJ/opkisqLMIuWi/yMY4zKjTGNmI3/jmaOzo82j56QBpBukNaRP5GokhGSepLjk02TtpQglIqU9JVflcmWNJaflwqXdZfgmEyYuJkkmZCZ/JpomtWbQpuvnByciZz3nWSd0p5Anq6fHZ+Ln/qgaaDYoUehtqImopajBqN2o+akVqTHpTilqaYapoum/adup+CoUqjEqTepqaocqo+rAqt1q+msXKzQrUStuK4trqGvFq+LsACwdbDqsWCx1rJLssKzOLOutCW0nLUTtYq2AbZ5tvC3aLfguFm40blKucK6O7q1uy67p7whvJu9Fb2Pvgq+hL7/v3q/9cBwwOzBZ8Hjwl/C28NYw9TEUcTOxUvFyMZGxsPHQce/yD3IvMk6ybnKOMq3yzbLtsw1zLXNNc21zjbOts83z7jQOdC60TzRvtI/0sHTRNPG1EnUy9VO1dHWVdbY11zX4Nhk2OjZbNnx2nba+9uA3AXcit0Q3ZbeHN6i3ynfr+A24L3hROHM4lPi2+Nj4+vkc+T85YTmDeaW5x/nqegy6LzpRunQ6lvq5etw6/vshu0R7ZzuKO6070DvzPBY8OXxcvH/8ozzGfOn9DT0wvVQ9d72bfb794r4Gfio+Tj5x/pX+uf7d/wH/Jj9Kf26/kv+3P9t////7gAhQWRvYmUAZEAAAAABAwAQAwIDBgAAAAAAAAAAAAAAAP/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYFBQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQoJCg0PDg4ODg8PDAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8IAEQgCAAIAAwERAAIRAQMRAf/EAMUAAQADAAMBAQEBAAAAAAAAAAAICQoFBgcBBAMCAQEAAAAAAAAAAAAAAAAAAAAAEAABAwMCBgEDBAMBAQAAAAAIAAcZBQYJGDgQAQIDBDcgMDE1ERM2F2CgwBIzEQAABQICBQgECAgIDQUBAAABAgMEBQAGEQcSldWWNxAhMRO01HY4IEE1CFFhcSIyFDQVMEKys3SUdbVSIzNz0yTEFmCggZGxYpJTk0RkF3fRckOjJTYSAQAAAAAAAAAAAAAAAAAAAMD/2gAMAwEBAhEDEQAAAM/4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB+s9cPgAAAAAAAAAAAAAAAAAAAAAAAAAAB5kcMAAD0Y0qgAAAAAAAAAAAAAAAAAAAAAAAAAAAoCIwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkR+ErrO4FjhFEjCDvhYgRiI2lmB8AAK6z1slyAAQRPMizw+A48hueFg5Es8PgONIanh4PfCaAB00gkdSP7looAAIAHmQAABt3OqGLMkkbaiNxi6OsksjaUUMlIBulAABisLFjR6AAZHiC5vJABxxnBKUjuZvIPoBxZm1KYS3c1CgA8fMjpFs3xH9AADHWQXAAANu51QxZkkjbUCicztksjaUUMmfwmOfDUId/MnZ9IllzRo9MzZEAAjKfjN5JXQZ8ztRpSJFmF8/EbyCuUz9nazSiSDMMZZuahTPIV7ElzT0V5mScmqfDSUS0MgB9IsnTAAADbudUMWZJI21A44xtHFm0ooZM9IBs0PUTD0AXfmj0x7kCwAdzN5JU8ZZAaLS88xYHgpvIKmjLSDQ4XwGMIlwahTKmVXg23n5jEyAa6ichgxAAAABt3OqGLMkkbaiu4n4RKMxxs7KGTPSAbND1Ew9AF35o9IVnnoIMFAB3M3kkPypg7WXdHTjEac4byCEBTMdsL6znzDeWnGoUqMIlkmC48piM0ABrqJyGDEAAAAG3c6oYsySRtqKPjrRfMVAlvxQyZ6QDZoeomHoAu/NHpGw6mCvszjHczeSfgOJOykbzJ2RXO5m8g+gHlRl7K3C3c1CnBn9DmCqwzAnVADXUTkMGIAAAANu51QxZkkjbUUfGec2gklD+hQyZ6QDZoeomHoAu/NHpj3IFgA7mbySp8y7G1M9ZMQx5ydzN5BWkZ3zjSPBxQLdzUKZViNhs3KzDJ2ADXUTkMGIAAAANu51QxZkkjbUUfGcQsBNex/UoZM9IBs0PUTD0AXfmj0yRkGwDqp2E3klTxlkLhDTwUNGeg7mbyCpUy3AAFu5qFMqZVeaxizMxvkJgDXUTkMGIAAAANu51QxZkkjbUUfGcQGmkuTKGTPSAbND1Ew9AF35o9P8HwAyQkGDeSVPGWQ5c2zHp5iKOtm8gqVMtwABbuahTKmVXk2jZAVzmR0A11E5DBiAAAAC5w4sp3PRS5MhgV7A9ELlCEBAYAt9OzFLgBNEsHAAKrDxIvBIuFZILACbBXaRRLwCLBWcAASvLKSsQjEC5U9BKXTpYLWz2ko7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAO8F6h8AAAAAAAAAAAAAAAAAAAAAAAAAAAKcTwIAAHOE2T4AAAAAAAAAAAAAAAAAAAAAAAAAAARHOhgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/9oACAECAAEFAP8AgAP/2gAIAQMAAQUA/wCAA//aAAgBAQABBQD/AGA/A8Dzqp53McSG6eenIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVpyIVaciFWnIhVcFuXDaVY+TPXVS7EdyZMSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCmUEhTKCQplBIUygkKZQSFMoJCMx37Tfolv8HsbFaVDh2Y5eL0oGosBN9Y9ccu+OeHswuXMkRDegVfL4Ng3VxO44EPhhIkwzeUVPDte3ajd9zdWHsweXVD4YSh8MJQ+GEofDCUPhhJym+uBqb+G0VHUKqtQ+GEofDCUPhhKHwwlD4YSfNkr1HpxqRS/KrdW6sPZg8ucPhhKHwwlU8RRkU/xHcGZ+2J58KPS/KrlW6sPZg8uqHwwlD4YSqmIsyKb4jtjW+7FdzgOw3uOT96Q+GEofDCUPhhK68VBn2x4962FezcV1eL4/c8zyYfDBUPhhKHwwlD4YSh8MJQ+GEnjaa7GMcr5iXtiOrZ8g63VIrh1t0nmXvOzrib67ECm79ZwvwDDe8fkcO73CF7S+OVnek3HsP4Vej0m4KZkjx00po6cm49h8vtxrVEo1yUrJJjsprMeGsMW5/4PSwrUkFaRlCVdQkOjQPzvZ/+XxyV73/mJe2I6tnyDrdVwy8iH0VukIFN36zhfgKJWanblZ6sjZsdXVI0a6C+9rqccXCCr9atRi+WRk1+S5ZGjX5c7xvC5HAunCF7SR6mqUjUFlI0a6kaNdSNGunNdK/nju9uPYayevA5bIjnI0a6tDKCaFq1cQCktks2jue3KPeFuOvYnmNe5zcew+X2ygPG5rHDpI8bKs/KKaFq1gQyhtosWiuy2KLetsOvYvltg5uGLc+smZeEgyRMSMmuh4y4P7ZF20Ss0y46NlQaPwXMErs97u+P3ueRs1+fORo11jycq+ncFG9PM8qnWdIya6kaNdOE4V5OtePzEvbEdWz5B1uq4Vek0yv0o4RbqwrPaCm79ZwvwHHHzsxKLbfxwhe0lk43w/BuPYazI7TeGEKgXB4tio5vM8Pzi+bj2Hy+2Zfabwwe0+tdu2Effk+D5Zj4Ytz6zD7v+AhW/XLWF8y/O8GnCfxxV7InA/gX0hL2xHVs+QdbqkdRI1IXrroVbpNzUU5BbppUMiFNKqNDNJZwvwHHHzsxKLbfxwhe0k6mPsXXnv6KsK1FWFayJgsNrAjYm49ho2hjqhYs/B5eys3CDy7NZatrLGZaxCPfW1x0aC4K5Urnrzcew+X2P4bL1KZkIXSSVnYUHf8ANrDDsZYY6tq7DlW4zzcXzdtSv288MW59GljRuYrXpg8vZDrh9bRsLr5cv0WYQkqVaLU8cVeyJwP4F9IS9sR1bPkHW6pZvPWGIMuuupeAiZFLxrWNZZwvwHHHzsxKLbfxwhe0lfJgjK2d16+w2WvsNlkzKwdXdFxNx7DVRqtLo/Y7V6Wd3+6ioI6ki01RTl66xZXam49h8vtxdh72pY63j3P64CurKwxbn159z21SvJptxW/We6j7yI1QV6pfF83c5V2ccVeyJwP4F9IS9sR1bPkHW6pZvPWFoXZcFiXSJRH26UTLdzs9rvdKzhfgOOPnZiUW2/jhC9pLJxvh+Dcew1mQ6urpE6l1mq0WpiI/lPJNg3Rbm3Hcbx3WzuFmnNTcew+X2yqui4bRjdrnL5VU0SyrXiVqvVy5Khwwxbn1mF7nc6C/B0iu8NpEdjv9nyuxlNGvk94/fDFXsicD+BfSEvbEdWz5B1uqWbz1gsdhY98Ynr7Hf7PldhZwvwHHHzsxKLbfxwhe0lklsG+q0av9WOcv6sc5f1Y5yq1Gq9B85uPYazI7TViCJDm3LvrMqNfOoUtNx7D5fbM1tQ+OGLc+sw+79YsSQ/u0e+72u33u2fo3cxqIfjir2ROB/AvpCXtiOrZ8g63VLN56w4Yly65ubYSzhfgOOPnZiUW2/jhC9pLn2+31c/2e0v2e0v2e0srHLlyNJuPYazI7TVQK7VrXrguvjSyLYtwLGt5zLIfFo7jYl1249h8vtma2ofHDFufWYfd+sf5GdQ3kZ0dfR3OjJsNfW/w8ccVeyJwP4F9JrsxN0tg2z15droedpk0Tg95p3Q55xLx/Uzj9rZi2zwadz7rZlxeecS8UaJ21gx6fxYfLZczFs+5OZC6nHb3iGBj1QOrknEvJTiXkpxLyU4l5KcS8kUT/AHmE08dvVfrt+v8AVnEvDn1Fzkor5YtVwDLIBewe0acS8kYxX+CXN2W9V+q37g55w7x/UvsklfLVrPiHxT1AR3JnEvJFsSvnla7PBpsx7jNw2vVnCvDr6XGuWiXlffAY8pdxjSy9czYXdXKJ/hLZWf0uG5PVg6pv/qDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnKDqnooWU7Q6vt8rYuStWbcvPJ2c3PnJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyk6OZSdHMpOjmUnRzKTo5lJ0cyc1zb4eO+P9gP/9oACAECAgY/AAAH/9oACAEDAgY/AAAH/9oACAEBAQY/AP8AGA2cZGM15GSkV02sfHtUzLLrrrGAiaSSZAExznMIAUoBiI8wUJTZDZiFMUcDFG15YBAQ9Q/1auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auA+Ym68t3auBGYm68t3antvXVBSNsz8aJCyMHLNVWTxuKhCqEBVuuUihBMQxTBpAGICA9A+nlZe82Vc8LZt3wc5LlakBRcWsc/RcrAkQxigY+gmOiAmDEfWFeyswfl+5me0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7Rr2VmDqZntGvZWYOpme0a9lZg6mZ7RrM7Nqx036VrXetGKRScoiRu7AGkUzZqdYkRRUpf4xA2GBh5sB+L/Ai1L8txK0VIG8YprMRAuJgySwN3iYKpgqT6uOibRMGIAI4fDV3ZlXalaidt2VGqysyLSXMs4FBHATgkn1AaRsB6BEOS08vraBAbgvOUbQ8MDpTqkPrDtQEk+sUwNolxNzjgNCAIWWIAOACE4OA/HztqtlvmtFMU212orKQ0vEuReMzKNzACqB1dAmiqUDFNoiHOUcQx58OS08tbT+q/wB5LzkE42HF6qKDcFlccBVUAphKXm5xwGvs9mD8f34Pd6tN9mqWDKleSrpGILEPxeGAzMEzKdaApJ6ICCgYYCNW7acR1X3tc8m0iYzrjaCX1h6sRBLTPgOiXTOGI4cwUYAQsswAIgBgnDYDh6wxbAPP8dfZ7M14Pd6+z2Zrwe719nszXg93r7PZmvB7vX2ezA+P78Hu9XdlvdYNguSypNeJmvqavXIfWG5tE/VqCUukXHoHAKueByrLEGkLTYoyEoWXeCzIKK6vUk6swJqaQ6XSA4c1fZ7M14Pd6+z2Zrwe719nszXg93r7PZmvB7vX2azNeD3epbK7MH7v/vPDItnDwYxwLltoO0irJ6KgkTER0TBj83mGouGYgQXsu7QZMwOOiXrXChUyaQ8+AaRgxGhAELLMADzGCcNgP+dsA19nszXg93r7PZmvB7vSjlCEteXUTARBkynE+uNh6i9cmkTn+M1JmzXytnLQZLH6pCZWRK4jjqDjgQr5qZZuJhABEC9Zjh6uWLhWOh9dl3aDJn1htEnWuFCpk0jc+AaRgxGhAELLOADgBgnDYD8YYtgGvs9ma8Hu9fZ7M14Pd6UdIQVrzChAEQZMZtLrjYeovXpok5/jNSZc2Mrp2zmyxgIhLuEAXjlDmxwIR+2Mq2MfmEdEFNLD1cshYeWIRYz0bFLTDgJZ0LREW6KiaRgKcE1MTCZUuAYf5a+z2Zrwe719nszXg93r7PZmvB7vRnLawI27SkAROlBTDNVQAAMRECOTtxN8hcR+KnFsX/aUvZlwNedaHmWazJfRxEAOUixSiYhsPmmLiUwc4CIcjdojh1zpUiKWI4BpHMBQxH5RoBBCyzAIAICE4PrDH1tq+z2Zrwe719nszXg93r7PZmvB7vX2ezNeD3evs1ma8Hu9XTlTfH1L+9VoKoIy33esLhtpOGyTpPq1RKQTB1axcfmhz834DILwHBdiSr3ifBUj+SHJ7vfjyE7WnyXNllNERQlVkxfWZOKl0hjphApvqy4CHOBR0hIoAdJDGCrhsi7oxWHua1n60bNxqwYGScIGEhw+MBwxAQ5hDAQ5uT3ffFzT8k/JkB+0Jz801rJnxzbv7zb+n7xfjqW/PDWePhWO7cb0swv2ZCdgSqw/EUX2tL0X0LPRbSbhpNEzeSiX6Cbls4ROGBk1UVSmIcoh0gYBCn2fORcYo2y/KqA31Y6WkoWGMsfRK8aCOJgbCYwFOQf5MRAQHQHAtWH4ii+1pUHyeg/grhiWc7CSiJm8nDyCCblq4SP9JNVFUpiHKPrAQwp1nrkdHKp5bKuCkvSyk9JX7iOsOBHTYwiJhaGMIFMUcRSMIc+gPzKurwG/7Yz9FzZuatotLljFCHBg9OUE3zBU4YdeydFDrETgIAOJRwHDAwGLzUraMk5PPWZOEO+sG7xT0PrrPSwMkuUPmkcICIFUKHMPMcvMYACF/T2350tJf+wv+j0s+f2hE/uSP/AZBeA4LsSVe8T4KkfyQ5Pd78eQna0+VP3o7Ciw++INJJjmwybk53LAgaDaUMAdJ0OZJQcOdPQHoTHGvd98XNPyT8mQH7QnPzTWoi4YR2ZhMwT1CQiX5AKJkHLVQqqKhQMAlESHKAhiAhRjDn7MgJhERAGUWAc/PzADMAD/ACVx9mv1OM7nWTN8XvNLXFddyQYu5uacFTIo4W+srF0jFSKQgfNKAcxQ6Kzfua3JFSIn4C0Jh/DSiIEMo3ct2aiiSpAUKYoiUwAIYgIfFWH/AH9mub/pIzudAP8A39meb/o4zudT17XhKqTl0XO9VkJ6XVKmQ7hysOkooYqRSEARH1FKAVnj4Vju3G5M27By+zglLZs+BWiSw8G3bMFE24LxDJwqBTLNlDjpKqGMOJh6fgrj7NfqcZ3OuPs1+pxnc64+zX6nGdzp9fuZdxrXXd0mkgi+ml00UTqEbpgkkXQbppJhokKAcxasPxFF9rS5I+8sqrtdWbcp7ujmCkq0TQUOZssg6MokJXCapcBEhR6MeauPs1+pxnc6ayTvNULwZoH0l4KcjGCrZcPWU5m6CCwc38FQKZZhwzEYKdj3AxV72sY/WCwkkyFOYEz4AJ0VSnA6ZhABEB0R+cUwVO2pcDMkhB3IwcRssyUADFUbuUzJKFwEBD6JhwrMHLh+YTu7GuKSg1VRw/jPqLk6JVOb1HKUDB8tWH4ii+1pUHyVD3nlRdrmzLlWvWNjV5Vqk3WOdos0fHURErlJUuBjJEHEAx5unDGuPkv+oRXcqbST7NIl5MkT6S8FORbA7ZYvrKYzZBusXm6NFQMKYZiwrEYOaZODRd6WwZTrRj5JIhTnIRTANNJQpynTMIAIlHAQ0gGrgs+42SclA3PHuYuYYKlAxFWzpMyShBAfhKYav7Lt8ImdWVPyEMocekwNFzpFMPR9IpQGrq8Bv+2M+Q9l5W5qyVoWuNqxL8Ids3ZKpg4XM4BVQDLt1DYm0Ax564+zX6nGdzqMbZ3yaWalgPV00ptc7Ns0lmSJjFKZdqo0TRTUFMuIimoQdPo0ijz1E3DCPE5GGnWSEhESCQ4prtnSZVUVSD8ByGAQq8J3qCDPZUroXVCucPnAkkcEHyeOA4FM3VMYQ9YkLSThE4prIHKokoHSUxRxAf8AIIViOfsz6g5mcYHQGHqZ1x9mv1OM7nWX1+5kXG4uu7ph3NEkZtyRJNRUreTcoJAJUSJkDQTIUoYF9VXZIMVzNnrGGfuGbkuAmTVSbnOQ4YgIYgYAHnCuPs1+pxnc64+zX6nGdzqbzAzBnVblvC41ElZqbWTSSOuZFEjdMRIgRNMNFNMpQ0ShzB+AyC8BwXYkq94nwVI/khye7348hO1p8slBzTFGTiJdsqzk45wUDpLt1yCRRM5R6QMURAal7UIkqvYVxipLZbTR8RBePOYNJuc3+9anN1Rw6RDRP0HCvd98XNPyT8mQH7QnPzTX0Pd98Nf2pes9vAk92FX0M8fCsd243Jnj/Pwn7ij/AEbD8RRfa0uSN8dRPZ3nLnrcjkiyVszE3EMYkTAPVqvGTdwd0YmPNiUjhIBw+EMejk94ddgJRblvWRRMJRxDrUDgktz/AM4Q1WH4ii+1pUHyVCf+QojsMjy+8BKrFU/u66lIJpHnEf4sXqCDtRyBQ/hAmsjj8WHJ7wSseJTIBdSyRzE6BWSSTTW/+wpsfjq6vAb/ALYz5DeCYT8465ch4C5UFGk3HWXFFfNFhEVEhOgVQqZ8ecDEIYAEPUIYeqveLcyIFFsOX0+homHADKuGSqKJcfhFQ5QD0Mq/024P3w7q9/2BJdlU/B5BeA4LsSVe8T4KkfyQ5Pd78eQna0+T3aMwRdOj2a+umQh8w4NE5urdRTpoUDqimH0lGxgBVP14gJfxhqJuKBkEZWEnWaL+Ik2xwOi4bOCAokqQwcwlMUwCFTFrIIpJX9bYKTGXMqbApiSKSZv6qc49CTov8WfHmAdE34oVkdCzDJaNloi90mUnHOCiRVBwgKiaqShR5wMQxRAQH18mQH7QnPzTX0Pd98Nf2pes9vAk92FX0M8fCsd243JcGZmYFkvJa77nM3PMP05R43IoLZum1SEEklClLgkkUOYPVXDd/rqQ/pq4bv8AXUh/TVJ5hZY2a6hbqb3BEsUX6sk7dFBByc5VS9WsoYvOABz4Y8lh+IovtaXI0ywiLsa2a5b3AymTyzxqd2mJGqayZkwTTOmOI9biA4+qvMFCahc98purf2exX8CkoQ7llBw4t3KxAHE5AVcOFSk0g5tLRNh8FQOW+XMGlb9qW6iKTFkmImOc5xE6q6yhsTKKqnETHMbnER+Dmq780bndIk+5mahLfi1DAB5CTUKINGiZcQEROphpYdBdI3QFTdyzDgXUvcD9zJSjk3So4dKmWVOPymMI1YfiKL7WlQfJUZltYclFxUy0uphNrOZc6iaAt2zZ2icoGSIcdLSXKIc3QA1//a2R+svO7U3JfWadswMAVQgvHEUk5fuzJ4/PBJNQqBANh0CY2FQWV+XjE7aEhwOo5euDAd0+drDpLunKgAGkdQ3wAAFDApQAoAFXjmZdjsjSCs6MXkHZjjgKhky/xSJPhOqoJSFAOkRCrrvaYOJ5S7ZZ5LvxEccFXixljBj8AaWAVdXgN/2xnyGzUi81oyzWYwLCHLEOotZ4rpMzLGMoKhF0gwN1gYBhXmChNQue+VE3rmzeaua7+BXI7i7YSZgxiBcpGA6SjohlFVFylEMerESlEfpaRcS1gHMAdAUz93qBkyKXjmOs3fXW0RPidpBtVetICoF+iLldMgFAekhDc2Ah6GVf6bcH74d1e/7Akuyqfg8gvAcF2JKveJ8FSP5Icnu9+PITtafJkh4okOxUt7rV+SYneRSa0jlNIuVMTKNQEVHUVpGHnFIRFVEP4InKGAEKHJ7uXvSWawBvD3PfMZFZos0CfNRklCnI1khAOgHAACao9GmBTDznMPJkB+0Jz8019D3ffDX9qXrPbwJPdhV9DPHwrHduNyS9jX7nLb9r3bAiiWYgnqipV24rokXSA4FTEPnJqFMGA9AhXmEtT/jK/wBFXmEtT/jK/wBFUpZ2WubcDeN0LXHDukoWPUUOsZFBQ4qnADJlDAoDiPPyWH4ii+1pcgOpaSaxbYxwTK5drEQTE5volAyglDEcOYKSQQuyGWXXOVNBEj9uY5zmHApSlA+IiI9AByPM0pq0Ji8mTd6hHgxiATAElXOkCSjpZQwAkkJgAomwNziAAGI0lOX27TjLciDq/wB0rEjzGCPjU1BwE3zvnLLGKAAdU/OP4oFL83ksPxFF9rSoPk9Ba5s1L5i7PjU0zHbpPFy/WnQl5tBq1LisubEcMCFH48ApOzbORd2tkjbznro2HWECO5l0TmK+kAIIgUC8/VIgIgXHSMJj4aFXV4Df9sZ8gs5S4YyNdgUpxaunaKKgFNjom0DnAcBwHAcKVQiJyPlVkCgdZFm6SXMQojgBjFTMYQAR5sR5P+2dm5fOpDMCbiU5GHu+YKBYRFFYVE+sSIQdNyomcmAkESAA9I9GM5fN9z7q57suRyZ3NTb0wGVWVEAAOYoAUpSlAClIUAKUoAUoAUAD0Mq/024P3w7q9/2BJdlU/B5BeA4LsSVe8T4KkfyQ5Pd78eQna0+TJDxRIdiq37ztSSVh7ktd+hJQskiIlOk4bnA5B5ukMQwEB5hDEB5hq2syogU2s11YR98QJTAJo+YQIX6ylh09WcRBRIRDnIYvrxAAKskRUpTAcpTlAwAYo4lHAfWA84cmQH7QnPzTX0Pd98Nf2pes9vAk92FX0M8fCsd243Jnl/Pwn7ij/RsPxFF9rS5I0SiJRC+onnAcP+XeVHTMVILMZSJdIvY16kYQOi4QOCiShR+EpigIVYuZ7cxCTDpt93XkwJ/ysyyAE3ieAiIgUxsFSY84kOUfXV45aXY3+sW/ekWvGSAAHz0wWLgRZP4DpHwOUf4QBV75XXUiKU7ZEsvGOzYYFWImOKLhP/UXSMRUn+qYOSw/EUX2tKg+SoO6Ms7wk7JuBe+YxgtLxSwoLnbKsn6h0RMH4pjJlEQ+KvMNeesDf+lGZP8A3hr7+rn+mDaZctTDj6hO3MmbD4sacS1xTL6elXRhO6k5Fwq6cKGHpE6qxjGMPyjy3V4Df9sZ8hgIcxQGyYTmARD8d1Vm3xIujls+VU+4b9TERMUIp8cpVF8MelucCLdGOBRKH0qRctlSOG7ghVW66ZgMQ5DhpFMUwcwgIDiAhTy9rfjju8wMmyrTkURAmks6ihAPvNqAAAmNgmUFigHPingH0vRyr/Tbg/fDur3/AGBJdlU/B5BeA4LsSVe8T4KkfyQ5Pd78eQna0+TJDxRIdi5GiM+8EmVuY6jeIvxI5xBNoOmINZIAHmAWxjjpj/uzH+KkXLZUi7dwQqqC6ZgMQ5DhiUxTBzCAgOICHJkB+0Jz8019D3ffDX9qXrPbwJPdhV9DPHwrHduNyZ2SMPZU9LR7heF+rv2ca6XRUAsIwKIkUTTMU2BiiA4D0gIVw5ujVD3+irhzdGqHv9FXDm6NUPf6KlYydinkLJIgUy0e/QUbLkA4AYomTVKUwYgOIYhVh+IovtaXJG+Oons7zkk8jrhe9Vamb2CkF1g/Mb3A1THqsObAPrKICmPwmKnyWz7zFsMAF1DFSt3McqRfnHanOP3e8PgP/wAZzGRMOGOBic+BeSw/EUX2tKg+Sre/8ixPYJL0rq8Bv+2M+Q3gmE/OOuRlZc8/+sX3k0CMBJdYfSWcxQEH7sdDiIiOCZRREfhTx9dKIrEKqkqUSKpGDEpimDAQEB6QEKua3opkLaw7tE1xZfmAuCabJ0cRUaEwAA/qqukmAfwNAR5x9DKv9NuD98O6vf8AYEl2VT8HkF4DguxJV7xPgqR/JDk93vx5CdrT5MkPFEh2LlP7vd9Sor31ls0A9mPHJwFSRgCfNKiAiOJlGI4E/mhJ/BMPJkB+0Jz8019D3ffDX9qXrPbwJPdhV9DPHwrHduNyCJkyiI9IiAY1/JE/2Qr+SJ/shX8kT/ZCswQAAAAjITmD9ASqw/EUX2tLkjfHUT2d5yQ9ywL1SNm4B6hIREgkOB0XLZQFUlC/GUxQGrAzXjgIi6n2AI3FHkHH6pKtDCg+QHoHAFSCJcQ5yCUfXV1Zf3WyJIW7d8a4i5ZqcAHFJwQS6RcegxBwMUfUIANXvlTdKQllLPklGqbrR0SO2o/Pauk/9VdExTh8GOHSA1YfiKL7WlQfJVvf+RYnsEl6V1eA3/bGfIbwTCfnHXJatwSbwW9jXectt36UxtFMjJ4oUE3Z8RAP6qtoqiI/igYPXRVEzAchwAxDlHEBAecBAQ6QGpSYt5gDrMDKjrbjtwqZNJd00STH7wZFwDSEVEg0yFDpOQoev0Mq/wBNuD98O6vf9gSXZVPwdh5dNMiomVb2PBMYROUVnF0juQZIlRBYUwZmAgnAuOjpDh8NZg5VPckIqCbX7DOIdWZRm11ztgcAACqVIzQgHEPgEwfLyWDmY3i05texJ1lNpQ6qooEcmZqlVBIypSmEgG0cMQAcPgocPd6hgDHmAbgcDzfqVWXbctloxsUtnSjiSSeNJJV8K4rogj1YkUQRAuHTjiPLaWZ1kvfqNx2g/TesjDzpqlD5qrdYPxk1kxMmcP4IjhgPPXN7vUNh4gcdyqwmErlwysQbGcPl01mkio++s/XSpF0RBRBHQ0Oq+PHH0LBykY5Jxdwt7Fjhj05xeaXbnch1qioHFErQ4E+nhhpDV8WA6yIiYxC9YJ/CKSSc6uoZuD5A6HWgmLMoHEmnjo4hj8PoXtckVYbS+lrzi28Yds7fqMStwbritpgYiK2npY4YYB8teXuF3gcdyry9wu8DjuVeXuF3gcdyry9wu8DjuVeXuF3gcdyqfzefWwhaDidbMmxoJu6M8In9TQIhpdcdNIR0tHH6IYVBzyaBXR4SQbPyNjGEpVBbKlVAgmDEQA2jhjQ6Pu9QwFx+aA3A4EQD4x+oh/opDK+UynjrMRQnGk0Waayqzw+LVNZPquqO2SDA3XY46XNh0c/LeVsx9ntb/tq63SEi3iHr5RiVi+TJ1SqyRiIraXXJgQpi4B9Ao49OPl7hd4HHcqtu+nOVbPLy7IePNFy0kxklHxZJqU+m2BUijdHQMgJjgBgEcQNgP0QqDniIFdHhJBs/I2MYSgoLZUqoEEwAIgBtHDGh0fd6hgL+KA3A4EcPl+pBTDLGUyoj7KRY3C1nyzLWVVenMLVu4QBHqjtkgADfWBHS0vV0elLZjRtmNr3cSkE4hPut09OxImC6yK3WgoRJYREBRw0dHnx6a8vcLvA47lX/AHVkrSb2W5+5WUP9zNnZ3pMGYqm63rTpJDiYVR5tHmw6R5bKsGaymjb5kbQjEYo92Opldsu9RbB1bc6qQNlcDlSApTG0x0hDS5saEp/d5hTFMGBijPuBAQHpAf6lV2XZbtqpWRDXHJuJFjaSDgzpGPBwcVDIJLGImJiFMI6PzQwDAPVy2vk7G5Oxt1trZWfqlnnMws1UW+vO1XYgKJGqgF0BVEv0hxwx5qmYVb3f4dFOYYOWJ1iz7gRIDhIyWkACy59HSxw9fxf4FZfWAZ8MYW+blibfNJFT64W4SbxJqKwJ6RdMSdZpaOIY4YY0bR94lzo4jo424THD1Y//AKFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFeYlxu4TaFX9kyhcJ7qRspVgmnPqNgaGcA9j2z7EUAUVAuj9Y0fpDjhj6/Tt677afDGXFasm0mICSAiaot3rFYjhuqCapTpm0FCFNgYolHDAQEKERz1WxEcRwt+3QD/MEZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFu7MrjsvqC3dmVx2X1BbuzK47L6gt3Zlcdl9QW7syuOy+oLd2ZXHZfUFvbMqdzIzInBuS9blMgabmhbtmgri1bpNUf4lokiiXRSRIX5pA6MR58R/xgT//2Q==\";\n        splash.appendChild(logo);\n        logo.onload = function () {\n            splash.style.display = 'block';\n        };\n\n        var container = document.createElement('div');\n        container.id = 'progress-bar-container';\n        splash.appendChild(container);\n\n        var bar = document.createElement('div');\n        bar.id = 'progress-bar';\n        container.appendChild(bar);\n\n    };\n\n    var hideSplash = function () {\n        var splash = document.getElementById('application-splash-wrapper');\n        splash.parentElement.removeChild(splash);\n    };\n\n    var setProgress = function (value) {\n        var bar = document.getElementById('progress-bar');\n        if(bar) {\n            value = Math.min(1, Math.max(0, value));\n            bar.style.width = value * 100 + '%';\n        }\n    };\n\n    var createCss = function () {\n        var css = [\n            'body {',\n            '    background-color: #000000;',\n            '}',\n\n            '#application-splash-wrapper {',\n            '    position: absolute;',\n            '    top: 0;',\n            '    left: 0;',\n            '    height: 100%;',\n            '    width: 100%;',\n            '    background-color: #000000;',\n            '}',\n\n            '#application-splash {',\n            '    position: absolute;',\n            '    top: calc(50% - 132px);',\n            '    width: 264px;',\n            '    left: calc(50% - 132px);',\n            '}',\n\n            '#application-splash img {',\n            '    width: 100%;',\n            '}',\n\n            '#progress-bar-container {',\n            '    margin: 20px auto 0 auto;',\n            '    height: 2px;',\n            '    width: 100%;',\n            '    background-color: #000000;',\n            '}',\n\n            '#progress-bar {',\n            '    width: 0%;',\n            '    height: 100%;',\n            '    background-color: #ffff;',\n            '}',\n            '@media (max-width: 480px) {',\n            '    #application-splash {',\n            '        width: 170px;',\n            '        left: calc(50% - 85px);',\n            '    }',\n            '}'\n        ].join(\"\\n\");\n\n        var style = document.createElement('style');\n        style.type = 'text/css';\n        if (style.styleSheet) {\n            style.styleSheet.cssText = css;\n        } else {\n            style.appendChild(document.createTextNode(css));\n        }\n\n        document.head.appendChild(style);\n    };\n\n    createCss();\n    showSplash();\n\n    app.on('preload:end', function () {\n        app.off('preload:progress');\n    });\n    app.on('preload:progress', setProgress);\n    app.on('start', hideSplash);\n});"],"names":["TRACEID_RENDER_FRAME","TRACEID_RENDER_FRAME_TIME","TRACEID_RENDER_PASS","TRACEID_RENDER_PASS_DETAIL","TRACEID_RENDER_ACTION","TRACEID_RENDER_TARGET_ALLOC","TRACEID_TEXTURE_ALLOC","TRACEID_SHADER_ALLOC","TRACEID_SHADER_COMPILE","TRACEID_VRAM_TEXTURE","TRACEID_VRAM_VB","TRACEID_VRAM_IB","TRACEID_VRAM_SB","TRACEID_BINDGROUP_ALLOC","TRACEID_BINDGROUPFORMAT_ALLOC","TRACEID_RENDERPIPELINE_ALLOC","TRACEID_COMPUTEPIPELINE_ALLOC","TRACEID_PIPELINELAYOUT_ALLOC","TRACEID_ELEMENT","TRACEID_TEXTURES","TRACEID_RENDER_QUEUE","TRACEID_OCTREE_RESOURCES","TRACEID_GPU_TIMINGS","version","revision","extend","target","ex","prop","copy","Array","isArray","guid","create","replace","c","r","Math","random","v","toString","path","delimiter","join","sections","result","i","length","one","two","normalize","pathname","lead","startsWith","trail","endsWith","parts","split","cleaned","slice","push","lastDelimiterIndex","lastIndexOf","substring","getBasename","getDirectory","getExtension","ext","pop","isRelativePath","charAt","match","extractPath","detectPassiveEvents","opts","Object","defineProperty","get","window","addEventListener","removeEventListener","e","ua","navigator","userAgent","environment","global","platformName","test","browserName","xbox","touch","maxTouchPoints","gamepads","getGamepads","webkitGetGamepads","workers","Worker","passiveEvents","platform","name","globalThis","self","browser","worker","desktop","includes","mobile","ios","android","ASCII_LOWERCASE","ASCII_UPPERCASE","ASCII_LETTERS","HIGH_SURROGATE_BEGIN","HIGH_SURROGATE_END","LOW_SURROGATE_BEGIN","LOW_SURROGATE_END","ZERO_WIDTH_JOINER","REGIONAL_INDICATOR_BEGIN","REGIONAL_INDICATOR_END","FITZPATRICK_MODIFIER_BEGIN","FITZPATRICK_MODIFIER_END","DIACRITICAL_MARKS_BEGIN","DIACRITICAL_MARKS_END","VARIATION_MODIFIER_BEGIN","VARIATION_MODIFIER_END","getCodePointData","string","size","first","charCodeAt","second","code","long","isCodeBetween","begin","end","codeData","numCharsToTakeForNextSymbol","index","format","s","args","getCodePoint","codePointData","getCodePoints","TypeError","arr","codePoint","getSymbols","output","take","ch","char","fromCodePoint","map","String","fromCharCode","EventHandle","off","_removed","handler","offByHandle","on","callback","scope","_addCallback","once","removed","value","toJSON","key","undefined","constructor","_once","EventHandler","initEventHandler","_callbacks","Map","_callbackActive","has","set","callbackActive","evt","callbacks","values","clear","delete","splice","handle","ind","indexOf","fire","arg1","arg2","arg3","arg4","arg5","arg6","arg7","arg8","callbacksInitial","call","existingCallback","hasEvent","IndexedList","item","_index","Error","location","_list","remove","idx","list","cachedResult","func","uninitToken","Impl","loadScript","url","document","createElement","setAttribute","onload","onerror","body","appendChild","loadWasm","moduleName","config","loadUrl","wasmSupported","glueUrl","wasmUrl","fallbackUrl","err","module","locateFile","onAbort","then","instance","getModule","modules","hasOwnProperty","initializing","initialize","errorHandler","console","error","forEach","WebAssembly","instantiate","Module","Uint8Array","of","Instance","WasmModule","setConfig","getConfig","getInstance","ReadStream","remainingBytes","dataView","byteLength","offset","reset","skip","bytes","align","_inc","amount","readChar","getUint8","readChars","numChars","readU8","readU16","getUint16","readU32","getUint32","readU64","readU32be","readArray","readLine","view","arraybuffer","DataView","SortedLoopArray","_binarySearch","left","right","items","search","_sortBy","middle","current","floor","_doSort","a","b","sortBy","insert","loopIndex","append","sort","_sortHandler","bind","Tags","add","changed","tags","_processArguments","_parent","query","_has","multiple","t","flat","tmp","parent","EVENT_ADD","EVENT_REMOVE","EVENT_CHANGE","now","performance","Date","createURI","options","authority","scheme","host","hostpath","fragment","re","URI","getQuery","queryParams","decodeURIComponent","queryParam","pair","setQuery","params","q","encodeURIComponent","uri","Tracing","channel","enabled","_traceChannels","Set","stack","CURVE_LINEAR","CURVE_SMOOTHSTEP","CURVE_SPLINE","CURVE_STEP","math","DEG_TO_RAD","PI","RAD_TO_DEG","clamp","min","max","intToBytes24","g","intToBytes32","bytesToInt24","bytesToInt32","lerp","alpha","lerpAngle","powerOfTwo","x","nextPowerOfTwo","val","nearestPowerOfTwo","pow","round","log2","diff","smoothstep","smootherstep","roundUp","numToRound","ceil","between","num","inclusive","Color","clone","cstr","rhs","equals","lhs","linear","src","gamma","mulScalar","scalar","fromString","hex","parseInt","fromArray","asArray","toFixed","aa","toArray","BLACK","freeze","BLUE","CYAN","GRAY","GREEN","MAGENTA","RED","WHITE","YELLOW","CurveEvaluator","evaluate","time","forceReset","_left","_right","_reset","type","_curve","_p0","_recip","_p1","_evaluateHermite","_m0","_m1","keys","len","Infinity","isFinite","_calcTangents","d","s1_","s2_","tension","s1","s2","a_","d_","p0","p1","m0","m1","t2","twot","omt","omt2","curve","Curve","_eval","closest","abs","quantize","precision","Float32Array","step","quantizeClamped","data","CurveSet","curves","_type","numCurves","ev","arg","floatView","int32View","Int32Array","buffer","FloatPacking","float2Half","bits","m","float2RGBA8","intBits","Kernel","concentric","numRings","numPoints","kernel","spacing","ring","radius","circumference","pointsPerRing","angleStep","point","angle","cos","y","sin","Vec3","z","add2","addScalar","addScaled","cross","lx","ly","lz","rx","ry","rz","distance","sqrt","div","div2","divScalar","dot","equalsApprox","epsilon","lengthSq","mul","mul2","invLength","project","a_dot_b","b_dot_b","sub","sub2","subScalar","ZERO","HALF","ONE","UP","DOWN","RIGHT","LEFT","FORWARD","BACK","Mat3","dst","getX","getY","getZ","l","isIdentity","setIdentity","transpose","setFromMat4","setFromQuat","qx","qy","qz","qw","w","x2","y2","z2","xx","xy","xz","yy","yz","zz","wx","wy","wz","invertMat4","a0","a1","a2","a4","a5","a6","a8","a9","a10","b11","b21","b31","b12","b22","b32","b13","b23","b33","det","invDet","transformVector","vec","res","IDENTITY","Vec2","rotate","degrees","atan2","angleTo","angleRad","Vec4","_halfSize$1","x$1","scale","Mat4","_getPerspectiveHalfSize","halfSize","fov","aspect","znear","fovIsHorizontal","tan","a00","a01","a02","a03","a11","a12","a13","a20","a21","a22","a23","a30","a31","a32","a33","b0","b1","b2","b3","mulAffine2","transformPoint","transformVec4","setLookAt","position","up","setFrustum","bottom","top","zfar","temp1","temp2","temp3","temp4","setPerspective","setOrtho","near","far","setFromAxisAngle","axis","tx","ty","setTranslate","setScale","setViewport","width","height","setReflection","normal","invert","b00","b01","b02","b03","b04","b05","b06","b07","b08","b09","b10","setTRS","sx","sy","sz","getTranslation","getScale","scaleSign","setFromEulerAngles","ey","ez","c1","c2","s3","c3","getEulerAngles","eulers","asin","halfPi","Quat","conjugate","other","getAxisAngle","rad","acos","q1x","q1y","q1z","q1w","q2x","q2y","q2z","q2w","sa","ca","halfToRad","cx","cy","cz","m00","m01","m02","m10","m11","m12","m20","m21","m22","setFromDirections","from","to","dotProduct","Number","EPSILON","slerp","lw","rw","cosHalfTheta","halfTheta","sinHalfTheta","ratioA","ratioB","ix","iy","iz","iw","tmpVecA$1","tmpVecB$1","tmpVecC","tmpVecD","tmpVecE","BoundingBox","tc","center","tcx","tcy","tcz","th","halfExtents","thx","thy","thz","tminx","tmaxx","tminy","tmaxy","tminz","tmaxz","oc","ocx","ocy","ocz","oh","ohx","ohy","ohz","ominx","omaxx","ominy","omaxy","ominz","omaxz","intersects","aMax","getMax","aMin","getMin","bMax","bMin","_intersectsRay","ray","tMin","origin","tMax","dir","direction","MAX_VALUE","realMin","realMax","minMax","maxMin","_fastIntersectsRay","prod","absDiff","absDir","rayDir","intersectsRay","setMinMax","_min","_max","containsPoint","setFromTransformedAabb","aabb","ignoreScale","ac","ar","mx0","mx1","mx2","my0","my1","my2","mz0","mz1","mz2","computeMinMax","vertices","numVerts","minx","miny","minz","maxx","maxy","maxz","n","compute","intersectsBoundingSphere","sphere","sq","_distanceToBoundingSphereSq","boxMin","boxMax","out","pn","_expand","expandMin","expandMax","tmpVecA","tmpVecB","BoundingSphere","lenSq","discr","totalRadius","Plane","intersectsLine","start","d0","d1","denominator","nx","ny","nz","setFromPointNormal","Frustum","planes","matrix","m03","m13","m23","m30","m31","m32","m33","p","containsSphere","Ray","tmpRay","tmpVec3$2","tmpSphere","tmpMat4$1","OrientedBox","worldTransform","_worldTransform","_modelTransform","_aabb","e1","e2","h","q$3","EPSILON$1","Tri","v0","v1","v2","f","u","ADDRESS_REPEAT","ADDRESS_CLAMP_TO_EDGE","ADDRESS_MIRRORED_REPEAT","BLENDMODE_ZERO","BLENDMODE_ONE","BLENDMODE_SRC_COLOR","BLENDMODE_ONE_MINUS_SRC_COLOR","BLENDMODE_DST_COLOR","BLENDMODE_ONE_MINUS_DST_COLOR","BLENDMODE_SRC_ALPHA","BLENDMODE_SRC_ALPHA_SATURATE","BLENDMODE_ONE_MINUS_SRC_ALPHA","BLENDMODE_DST_ALPHA","BLENDMODE_ONE_MINUS_DST_ALPHA","BLENDMODE_CONSTANT","BLENDMODE_ONE_MINUS_CONSTANT","BLENDEQUATION_ADD","BLENDEQUATION_SUBTRACT","BLENDEQUATION_REVERSE_SUBTRACT","BLENDEQUATION_MIN","BLENDEQUATION_MAX","BUFFERUSAGE_READ","BUFFERUSAGE_WRITE","BUFFERUSAGE_COPY_SRC","BUFFERUSAGE_COPY_DST","BUFFERUSAGE_INDEX","BUFFERUSAGE_VERTEX","BUFFERUSAGE_UNIFORM","BUFFERUSAGE_STORAGE","BUFFERUSAGE_INDIRECT","BUFFER_STATIC","BUFFER_DYNAMIC","BUFFER_STREAM","BUFFER_GPUDYNAMIC","CLEARFLAG_COLOR","CLEARFLAG_DEPTH","CLEARFLAG_STENCIL","CUBEFACE_POSX","CUBEFACE_NEGX","CUBEFACE_POSY","CUBEFACE_NEGY","CUBEFACE_POSZ","CUBEFACE_NEGZ","CULLFACE_NONE","CULLFACE_BACK","CULLFACE_FRONT","CULLFACE_FRONTANDBACK","FILTER_NEAREST","FILTER_LINEAR","FILTER_NEAREST_MIPMAP_NEAREST","FILTER_NEAREST_MIPMAP_LINEAR","FILTER_LINEAR_MIPMAP_NEAREST","FILTER_LINEAR_MIPMAP_LINEAR","FUNC_NEVER","FUNC_LESS","FUNC_EQUAL","FUNC_LESSEQUAL","FUNC_GREATER","FUNC_NOTEQUAL","FUNC_GREATEREQUAL","FUNC_ALWAYS","INDEXFORMAT_UINT8","INDEXFORMAT_UINT16","INDEXFORMAT_UINT32","indexFormatByteSize","PIXELFORMAT_A8","PIXELFORMAT_L8","PIXELFORMAT_LA8","PIXELFORMAT_RGB565","PIXELFORMAT_RGBA5551","PIXELFORMAT_RGBA4","PIXELFORMAT_RGB8","PIXELFORMAT_RGBA8","PIXELFORMAT_DXT1","PIXELFORMAT_DXT3","PIXELFORMAT_DXT5","PIXELFORMAT_RGB16F","PIXELFORMAT_RGBA16F","PIXELFORMAT_RGB32F","PIXELFORMAT_RGBA32F","PIXELFORMAT_R32F","PIXELFORMAT_DEPTH","PIXELFORMAT_DEPTHSTENCIL","PIXELFORMAT_111110F","PIXELFORMAT_SRGB8","PIXELFORMAT_SRGBA8","PIXELFORMAT_ETC1","PIXELFORMAT_ETC2_RGB","PIXELFORMAT_ETC2_RGBA","PIXELFORMAT_PVRTC_2BPP_RGB_1","PIXELFORMAT_PVRTC_2BPP_RGBA_1","PIXELFORMAT_PVRTC_4BPP_RGB_1","PIXELFORMAT_PVRTC_4BPP_RGBA_1","PIXELFORMAT_ASTC_4x4","PIXELFORMAT_ATC_RGB","PIXELFORMAT_ATC_RGBA","PIXELFORMAT_BGRA8","PIXELFORMAT_R8I","PIXELFORMAT_R8U","PIXELFORMAT_R16I","PIXELFORMAT_R16U","PIXELFORMAT_R32I","PIXELFORMAT_R32U","PIXELFORMAT_RG8I","PIXELFORMAT_RG8U","PIXELFORMAT_RG16I","PIXELFORMAT_RG16U","PIXELFORMAT_RG32I","PIXELFORMAT_RG32U","PIXELFORMAT_RGBA8I","PIXELFORMAT_RGBA8U","PIXELFORMAT_RGBA16I","PIXELFORMAT_RGBA16U","PIXELFORMAT_RGBA32I","PIXELFORMAT_RGBA32U","PIXELFORMAT_R16F","PIXELFORMAT_RG16F","PIXELFORMAT_R8","PIXELFORMAT_RG8","PIXELFORMAT_DXT1_SRGB","PIXELFORMAT_DXT3_SRGBA","PIXELFORMAT_DXT5_SRGBA","PIXELFORMAT_ETC2_SRGB","PIXELFORMAT_ETC2_SRGBA","PIXELFORMAT_ASTC_4x4_SRGB","PIXELFORMAT_SBGRA8","PIXELFORMAT_BC6F","PIXELFORMAT_BC6UF","PIXELFORMAT_BC7","PIXELFORMAT_BC7_SRGBA","PIXELFORMAT_DEPTH16","pixelFormatInfo","ldr","srgbFormat","srgb","blockSize","isInt","isCompressedPixelFormat","isSrgbPixelFormat","isIntegerPixelFormat","pixelFormatLinearToGamma","pixelFormatGammaToLinear","requiresManualGamma","info","getPixelFormatArrayType","Uint32Array","Int16Array","Uint16Array","Int8Array","PRIMITIVE_POINTS","PRIMITIVE_LINES","PRIMITIVE_LINELOOP","PRIMITIVE_LINESTRIP","PRIMITIVE_TRIANGLES","PRIMITIVE_TRISTRIP","PRIMITIVE_TRIFAN","SEMANTIC_POSITION","SEMANTIC_NORMAL","SEMANTIC_TANGENT","SEMANTIC_BLENDWEIGHT","SEMANTIC_BLENDINDICES","SEMANTIC_COLOR","SEMANTIC_TEXCOORD","SEMANTIC_TEXCOORD0","SEMANTIC_TEXCOORD1","SEMANTIC_TEXCOORD2","SEMANTIC_TEXCOORD3","SEMANTIC_TEXCOORD4","SEMANTIC_TEXCOORD5","SEMANTIC_TEXCOORD6","SEMANTIC_TEXCOORD7","SEMANTIC_ATTR0","SEMANTIC_ATTR1","SEMANTIC_ATTR2","SEMANTIC_ATTR3","SEMANTIC_ATTR4","SEMANTIC_ATTR5","SEMANTIC_ATTR6","SEMANTIC_ATTR7","SEMANTIC_ATTR8","SEMANTIC_ATTR9","SEMANTIC_ATTR10","SEMANTIC_ATTR11","SEMANTIC_ATTR12","SEMANTIC_ATTR13","SEMANTIC_ATTR14","SEMANTIC_ATTR15","SHADERTAG_MATERIAL","STENCILOP_KEEP","STENCILOP_ZERO","STENCILOP_REPLACE","STENCILOP_INCREMENT","STENCILOP_INCREMENTWRAP","STENCILOP_DECREMENT","STENCILOP_DECREMENTWRAP","STENCILOP_INVERT","TEXTURELOCK_NONE","TEXTURELOCK_READ","TEXTURELOCK_WRITE","TEXTURETYPE_DEFAULT","TEXTURETYPE_RGBM","TEXTURETYPE_RGBE","TEXTURETYPE_RGBP","TEXTURETYPE_SWIZZLEGGGR","TEXHINT_NONE","TEXHINT_SHADOWMAP","TEXHINT_ASSET","TEXHINT_LIGHTMAP","TEXTUREDIMENSION_1D","TEXTUREDIMENSION_2D","TEXTUREDIMENSION_2D_ARRAY","TEXTUREDIMENSION_CUBE","TEXTUREDIMENSION_CUBE_ARRAY","TEXTUREDIMENSION_3D","SAMPLETYPE_FLOAT","SAMPLETYPE_UNFILTERABLE_FLOAT","SAMPLETYPE_DEPTH","SAMPLETYPE_INT","SAMPLETYPE_UINT","TEXTUREPROJECTION_NONE","TEXTUREPROJECTION_CUBE","TEXTUREPROJECTION_EQUIRECT","TEXTUREPROJECTION_OCTAHEDRAL","SHADERLANGUAGE_GLSL","SHADERLANGUAGE_WGSL","TYPE_INT8","TYPE_UINT8","TYPE_INT16","TYPE_UINT16","TYPE_INT32","TYPE_UINT32","TYPE_FLOAT32","TYPE_FLOAT16","UNIFORMTYPE_BOOL","UNIFORMTYPE_INT","UNIFORMTYPE_FLOAT","UNIFORMTYPE_VEC2","UNIFORMTYPE_VEC3","UNIFORMTYPE_VEC4","UNIFORMTYPE_IVEC2","UNIFORMTYPE_IVEC3","UNIFORMTYPE_IVEC4","UNIFORMTYPE_BVEC2","UNIFORMTYPE_BVEC3","UNIFORMTYPE_BVEC4","UNIFORMTYPE_MAT2","UNIFORMTYPE_MAT3","UNIFORMTYPE_MAT4","UNIFORMTYPE_TEXTURE2D","UNIFORMTYPE_TEXTURECUBE","UNIFORMTYPE_FLOATARRAY","UNIFORMTYPE_TEXTURE2D_SHADOW","UNIFORMTYPE_TEXTURECUBE_SHADOW","UNIFORMTYPE_TEXTURE3D","UNIFORMTYPE_VEC2ARRAY","UNIFORMTYPE_VEC3ARRAY","UNIFORMTYPE_VEC4ARRAY","UNIFORMTYPE_MAT4ARRAY","UNIFORMTYPE_TEXTURE2D_ARRAY","UNIFORMTYPE_UINT","UNIFORMTYPE_UVEC2","UNIFORMTYPE_UVEC3","UNIFORMTYPE_UVEC4","UNIFORMTYPE_INTARRAY","UNIFORMTYPE_UINTARRAY","UNIFORMTYPE_BOOLARRAY","UNIFORMTYPE_IVEC2ARRAY","UNIFORMTYPE_UVEC2ARRAY","UNIFORMTYPE_BVEC2ARRAY","UNIFORMTYPE_IVEC3ARRAY","UNIFORMTYPE_UVEC3ARRAY","UNIFORMTYPE_BVEC3ARRAY","UNIFORMTYPE_IVEC4ARRAY","UNIFORMTYPE_UVEC4ARRAY","UNIFORMTYPE_BVEC4ARRAY","UNIFORMTYPE_ITEXTURE2D","UNIFORMTYPE_UTEXTURE2D","UNIFORMTYPE_ITEXTURECUBE","UNIFORMTYPE_UTEXTURECUBE","UNIFORMTYPE_ITEXTURE3D","UNIFORMTYPE_UTEXTURE3D","UNIFORMTYPE_ITEXTURE2D_ARRAY","UNIFORMTYPE_UTEXTURE2D_ARRAY","uniformTypeToName","uniformTypeToNameWGSL","uniformTypeToNameMapWGSL","names","uniformTypeToStorage","DEVICETYPE_WEBGL2","DEVICETYPE_WEBGPU","DEVICETYPE_NULL","SHADERSTAGE_VERTEX","SHADERSTAGE_FRAGMENT","SHADERSTAGE_COMPUTE","DISPLAYFORMAT_LDR","DISPLAYFORMAT_LDR_SRGB","DISPLAYFORMAT_HDR","TEXPROPERTY_MIN_FILTER","TEXPROPERTY_MAG_FILTER","TEXPROPERTY_ADDRESS_U","TEXPROPERTY_ADDRESS_V","TEXPROPERTY_ADDRESS_W","TEXPROPERTY_COMPARE_ON_READ","TEXPROPERTY_COMPARE_FUNC","TEXPROPERTY_ANISOTROPY","TEXPROPERTY_ALL","BINDGROUP_VIEW","BINDGROUP_MESH","BINDGROUP_MESH_UB","bindGroupNames","UNIFORM_BUFFER_DEFAULT_SLOT_NAME","UNUSED_UNIFORM_NAME","typedArrayTypes","typedArrayTypesByteSize","vertexTypesNames","typedArrayToType","typedArrayIndexFormats","typedArrayIndexFormatsByteSize","primitiveGlslToWgslTypeMap","semanticToLocation","id$d","BindBaseFormat","visibility","slot","scopeId","BindUniformBufferFormat","BindStorageBufferFormat","readOnly","BindTextureFormat","textureDimension","sampleType","hasSampler","samplerName","BindStorageTextureFormat","write","read","BindGroupFormat","destroy","impl","getTexture","textureFormatsMap","textureFormats","getStorageTexture","storageTextureFormatsMap","storageTextureFormats","loseContext","graphicsDevice","formats","uniformBufferFormats","storageBufferFormats","id","device","bufferFormatsMap","bf","tf","resolve","storageBufferFormatsMap","createBindGroupFormatImpl","DeviceCache","onCreate","_cache","TextureUtils","calcLevelDimension","dimension","mipLevel","calcMipLevelsCount","depth","calcLevelGpuSize","formatInfo","pixelSize","blockWidth","blockHeight","blockDepth","calcGpuSize","mipmaps","cubemap","id$c","Texture","textures","removeValue","adjustVramSizeTracking","_vram","_gpuSize","_levels","recreateImpl","upload","createTextureImpl","dirtyAll","_clearLevels","_cubemap","resize","_width","_height","_depth","_updateNumLevel","vram","tex","propertyChanged","flag","renderVersionDirty","renderVersion","maxLevels","requestedLevels","_numLevelsRequested","_numLevels","_mipmaps","lockedMode","_lockedMode","minFilter","_minFilter","_format","magFilter","_magFilter","addressU","_addressU","addressV","_addressV","addressW","_volume","_addressW","compareOnRead","_compareOnRead","compareFunc","_compareFunc","anisotropy","_anisotropy","isWebGPU","_needsMipmapsUpload","numLevels","storage","_storage","gpuSize","mips","pot","_compressed","array","_arrayLength","arrayLength","volume","_shadersDirty","currentSrgb","linearFormat","flipY","_flipY","_needsUpload","premultiplyAlpha","_premultiplyAlpha","encoding","_levelsUpdated","_mipmapsUploaded","lock","level","face","mode","_lockedLevel","levels","ArrayBuffer","setSource","source","invalid","_isBrowserInterface","HTMLVideoElement","videoWidth","videoHeight","_invalid","getSource","unlock","uploadImmediate","_integerFormat","projection","textureData","white","gray","black","pink","BuiltInTextures","texture","deviceCache$3","getBuiltInTexture","cache","pixels","id$b","DynamicBindGroup","offsets","BindGroup","defaultUniformBuffer","setUniformBuffer","uniformBuffer","uniformBuffers","dirty","setStorageBuffer","storageBuffer","storageBuffers","setTexture","renderVersionUpdated","setStorageTexture","storageTextures","updateUniformBuffers","update","textureFormat","storageTextureFormat","storageBufferFormat","uniformBufferOffsets","createBindGroupImpl","BitPacking","shift","mask","all","shifted","any","opMask","factorMask","colorOpShift","colorSrcFactorShift","colorDstFactorShift","alphaOpShift","alphaSrcFactorShift","alphaDstFactorShift","redWriteShift","greenWriteShift","blueWriteShift","alphaWriteShift","blendShift","allWriteMasks","allWriteShift","BlendState","blend","target0","setColorBlend","op","srcFactor","dstFactor","setAlphaBlend","setColorWrite","redWrite","greenWrite","blueWrite","alphaWrite","colorOp","colorSrcFactor","colorDstFactor","alphaOp","alphaSrcFactor","alphaDstFactor","allWrite","NOBLEND","NOWRITE","ALPHABLEND","ADDBLEND","StringIds","stringIds$4","funcMask","funcShift","writeShift","DepthState","updateKey","depthBias","_depthBias","depthBiasSlope","_depthBiasSlope","DEFAULT","NODEPTH","WRITEDEPTH","Version","globalId","idCounter","VersionedObject","increment","ScopeId","setValue","versionObject","getValue","ScopeSpace","variables","uniformName","uniform","id$a","VertexBuffer","buffers","initialized","vb","getFormat","getUsage","usage","getNumVertices","numVertices","setData","numBytes","createVertexBufferImpl","verticesByteSize","initialData","hashCode","str","hash","hash32Fnv1a","prime","stringIds$3","webgpuValidElementSizes","deviceCache$2","VertexFormat","elements","_elements","getDefaultInstancingFormat","semantic","components","isElementValid","elementDesc","elementSize","_evaluateHash","stringElementsBatch","stringElementsRender","dataType","numComponents","stride","asInt","stringElementBatch","stringElementRender","batchingString","batchingHash","shaderProcessingHashString","renderingHashString","renderingHash","description","vertexCount","hasUv0","hasUv1","hasColor","hasTangents","interleaved","instancing","reduce","total","desc","element","stringIds$2","StencilParameters","_func","_dirty","ref","_ref","fail","_fail","zfail","_zfail","zpass","_zpass","readMask","_readMask","writeMask","_writeMask","_evalKey","_key","GraphicsDevice","postInit","vertexFormat","positions","quadVertexBuffer","initCapsDefines","capsDefines","textureFloatFilterable","textureFloatRenderable","supportsMultiDraw","dynamicBuffers","gpuProfiler","_destroyed","onDestroyShader","shader","shaders","postDestroy","canvas","contextLost","backBufferSize","targets","restoreContext","initializeRenderState","initializeContextCaches","vertexBuffers","shaderValid","shaderAsyncCompile","renderTarget","blendState","depthState","cullMode","vx","vy","vw","vh","sw","sh","blendColor","setStencilState","stencilFront","stencilBack","setBlendState","setBlendColor","setDepthState","setCullMode","setRenderTarget","setVertexBuffer","vertexBuffer","clearVertexBuffer","getIndirectDrawSlot","count","indirectDrawBuffer","getRenderTarget","initRenderTarget","init","draw","primitive","indexBuffer","numInstances","drawCommands","last","_isImageBrowserInterface","_isImageCanvasInterface","_isImageVideoInterface","ImageBitmap","HTMLImageElement","HTMLCanvasElement","resizeCanvas","pixelRatio","_maxPixelRatio","devicePixelRatio","setResolution","EVENT_RESIZE","updateClientRect","clientRect","rect","getBoundingClientRect","fullscreen","maxPixelRatio","ratio","deviceType","_deviceType","startRenderPass","renderPass","endRenderPass","startComputePass","endComputePass","frameStart","renderPassIndex","frameEnd","mapsToClear","computeDispatch","computes","getRenderableHdrFormat","filterable","samples","textureRG11B10Renderable","textureHalfFloatRenderable","validateAttributes","vb0Format","vb1Format","backBuffer","backBufferAntialias","isWebGL2","isHdr","maxIndirectDrawCount","maxColorAttachments","maxSamples","supportsCompute","supportsStorageTextureRead","insideRenderPass","supportsUniformBuffers","supportsClipDistances","stencilEnabled","defaultClearOptions","color","stencil","flags","initOptions","antialias","powerPreference","displayFormat","ib","ub","sb","_shaderStats","vsCompiled","fsCompiled","linked","materialShaders","compileTime","_drawCallsPerFrame","_shaderSwitchesPerFrame","_primsPerFrame","_renderTargetCreationTime","textureBias","id$9","RenderTarget","_device","destroyFrameBuffers","destroyTextureBuffers","_depthBuffer","_colorBuffers","colorBuffer","_colorBuffer","validateMrt","createRenderTargetImpl","_samples","success","copyRenderTarget","_stencil","getColorBuffer","depthBuffer","_face","_mipLevel","isColorBufferSrgb","backBufferFormat","colorBuffers","autoResolve","WebgpuBindGroup","bindGroup","createDescriptor","wgpu","createBindGroup","entries","persistent","allocation","gpuBuffer","binding","resource","byteSize","textureIndex","wgpuTexture","getView","sampler","getSampler","bufferIndex","wgpuBuffer","layout","bindGroupLayout","WebgpuUtils","shaderStage","stage","ret","GPUShaderStage","VERTEX","FRAGMENT","COMPUTE","gpuTextureFormats","samplerTypes","sampleTypes","stringIds$1","WebgpuBindGroupFormat","bindGroupFormat","bufferFormat","hasDynamicOffset","viewDimension","multisampled","gpuSampleType","gpuSamplerType","storageTexture","access","createBindGroupLayout","WebgpuBuffer","allocate","createBuffer","usageFlags","GPUBufferUsage","COPY_DST","srcOffset","byteOffset","srcData","queue","writeBuffer","immediate","readStorageBuffer","bufferOffset","dataOffset","writeStorageBuffer","clearStorageBuffer","WebgpuIndexBuffer","array$1","arr1","arr2","gpuVertexFormats","gpuVertexFormatsNormalized","WebgpuVertexBufferLayout","vertexFormat0","vertexFormat1","getKey","addFormat","stepMode","attributes","elementCount","formatTable","shaderLocation","arrayStride","WebgpuPipeline","getPipelineLayout","bindGroupFormats","bindGroupLayouts","pipelineLayout","createPipelineLayout","_primitiveTopology","_blendOperation","_blendFactor","_compareFunction","_cullModes","_stencilOps","_indexFormat","CacheEntry","WebgpuRenderPipeline","ibFormat","primitiveType","lookupHashes","cacheEntries","entry","hashes","pipeline","primitiveTopology","vertexBufferLayout","cacheEntry","getBlend","operation","getDepthStencil","depthStencil","depthAttachment","depthWriteEnabled","depthCompare","biasAllowed","depthBiasSlopeScale","stencilReadMas","stencilWriteMask","compare","failOp","passOp","depthFailOp","webgpuShader","vertex","getVertexShaderModule","entryPoint","vertexEntryPoint","topology","frontFace","multisample","stripIndexFormat","getFragmentShaderModule","fragmentEntryPoint","colorAttachments","GPUColorWrite","ALPHA","attachment","createRenderPipeline","WebgpuComputePipeline","getComputeShaderModule","computeEntryPoint","createComputePipeline","RefCountedObject","incRefCount","_refCount","decRefCount","refCount","Entry","obj","object","RefCountedKeyCache","release","MultisampledTextureCache","multisampledTextureCache","getMultisampledTextureCache","stringIds","ColorAttachment","multisampledBuffer","DepthAttachment","depthTextureInternal","depthTexture","multisampledDepthBuffer","multisampledDepthBufferKey","gpuFormat","hasStencil","WebgpuRenderTarget","assignedColorTexture","colorAttachment","rt","assignColorTexture","gpuTexture","createView","backBufferViewFormat","renderPassDescriptor","resolveTarget","setColorAttachment","initDepthStencil","isBackbuffer","initColor","isDefaultFramebuffer","renderingView","depthTextureDesc","sampleCount","GPUTextureUsage","RENDER_ATTACHMENT","TEXTURE_BINDING","COPY_SRC","createTexture","depthFormat","msTextures","msDepthTexture","multisampledDepthDesc","depthStencilAttachment","colorView","mipLevelCount","baseArrayLayer","arrayLayerCount","baseMipLevel","multisampledTextureDesc","multisampledColorBuffer","setupForRenderPass","colorOps","colorArrayOps","clearValue","clearValueLinear","loadOp","storeOp","store","depthClearValue","depthStencilOps","clearDepthValue","depthLoadOp","clearDepth","depthStoreOp","storeDepth","depthReadOnly","stencilClearValue","clearStencilValue","stencilLoadOp","clearStencil","stencilStoreOp","storeStencil","stencilReadOnly","uniformTypeToNumComponents","UniformFormat","isArrayType","calculateOffset","alignment","shortName","updateType","componentSize","UniformBufferFormat","uniforms","KEYWORD$2","KEYWORD_LINE$1","MARKER$1","ARRAY_IDENTIFIER","precisionQualifiers","shadowSamplers","textureDimensions","sampler2D","sampler3D","samplerCube","samplerCubeShadow","sampler2DShadow","sampler2DArray","sampler2DArrayShadow","isampler2D","usampler2D","isampler3D","usampler3D","isamplerCube","usamplerCube","isampler2DArray","usampler2DArray","textureDimensionInfo","UniformLine$1","UniformLine","line","words","trim","rest","exec","arraySize","isNaN","failed","isSampler","isSignedInt","isUnsignedInt","ShaderProcessorGLSL","run","shaderDefinition","varyingMap","vertexExtracted","extract","vshader","fragmentExtracted","fshader","attributesMap","attributesBlock","processAttributes","processingOptions","vertexVaryingsBlock","processVaryings","varyings","fragmentVaryingsBlock","outBlock","processOuts","outs","concatUniforms","concat","parsedUniforms","uniformsData","processUniforms","vBlock","fBlock","meshUniformBufferFormat","meshBindGroupFormat","replacement","keyword","lastIndex","lineMatch","cutOut","uniformLinesSamplers","uniformLinesNonSamplers","meshUniforms","hasUniform","uniformType","uniformFormat","hasTexture","uniformFormats","bindGroupIndex","getUniformShaderDeclaration","getTexturesShaderDeclaration","varyingLines","isVertex","block","splitToWords","outsLines","getTypeCount","lastChar","attributeLines","shaderDefinitionAttributes","copyCode","getVertexElement","attribNumElements","newName","isSignedType","bindIndex","typeString","textureType","sampleTypePrefix","namePostfix","extraCode","KEYWORD$1","KEYWORD_LINE","KEYWORD_RESOURCE","VARYING","MARKER","ENTRY_FUNCTION","textureBaseInfo","baseSampleType","getTextureInfo","baseType","componentType","baseInfo","finalSampleType","getTextureDeclarationType","baseTypeString","coreFormatString","wrappedArrayTypes","UNIFORM_ARRAY_REGEX","ubName","TEXTURE_REGEX","STORAGE_TEXTURE_REGEX","STORAGE_BUFFER_REGEX","EXTERNAL_TEXTURE_REGEX","SAMPLER_REGEX","ResourceLine","isTexture","isStorageTexture","isStorageBuffer","isExternalTexture","accessMode","samplerType","originalLine","matchedElements","textureMatch","storageTextureMatch","storageBufferMatch","externalTextureMatch","samplerMatch","WebgpuShaderProcessorWGSL","renameUniformAccess","parsedResources","mergeResources","resources","resourcesData","processResources","fOutput","generateFragmentOutputStruct","copyInputs","srcName","dstName","regex","RegExp","fragmentResources","fragmentResource","existing","find","getTextureShaderDeclaration","ubFormat","structName","startBindIndex","textureTypeName","blockPrivates","blockCopy","fragmentGlobals","numRenderTargets","structCode","needsFragDepth","floatAttributeToInt","signed","longToShortMap","shortType","floatToIntShort","blockAttributes","originalType","inputName","braceIndex","beginning","lineToInject","WebgpuShader","_vertexCode","_fragmentCode","createShaderModule","shaderType","shaderModule","_computeCode","processGLSL","processed","definition","transpile","ready","processWGSL","originalSrc","glslang","twgsl","label","spirv","compileGLSL","wgsl","convertSpirV2WGSL","original","vertexCode","fragmentCode","shaderLanguage","cshader","computeUniformBufferFormats","computeBindGroupFormat","gpuAddressModes","gpuFilterModes","mip","dummyUse","thingOne","WebgpuTexture","depthOrArrayLayers","STORAGE_BINDING","viewDescr","samplers","textureDescr","defaultViewDimension","addressModeU","addressModeV","addressModeW","mipmapFilter","forceNearest","allLinear","maxAnisotropy","maxTextureAnisotropy","createSampler","uploadData","anyUploads","anyLevelMissing","requiredMipLevels","mipObject","faceSource","isExternalImage","uploadExternalImage","isView","uploadTypedArrayData","arraySource","mipmapRenderer","generate","image","OffscreenCanvas","copySize","submit","getContext","copyExternalImageToTexture","dest","dataLayout","bytesPerRow","rowsPerImage","blockDim","writeTexture","paddedBytesPerRow","stagingBuffer","createBufferImpl","commandEncoder","getCommandEncoder","copyTextureToBuffer","readBuffer","temp","dstOffset","subarray","WebgpuUniformBuffer","storageInt32","WebgpuVertexBuffer","KEYWORD","DEFINE","EXTENSION","UNDEF","IF","ENDIF","IDENTIFIER$1","DEFINED","DEFINED_PARENS","DEFINED_BEFORE_PAREN","COMPARISON","INVALID","INCLUDE","LOOP_INDEX","FRAGCOLOR","Preprocessor","sourceName","stripComments","trimEnd","defines","injectDefines","_preprocess","stripDefines","intDefines","isInteger","parseFloat","stripUnusedColorAttachments","RemoveEmptyLines","processArraySize","counts","matches","anySingleUse","some","lines","keepLines","originalSource","define","expression","identifierValue","identifier","keep","_keep","stripThisDefine","replacementDefine","undef","extension","iff","evaluated","anyKeep","endif","blockInfo","blockCode","endifCommand","include","countIdentifier","includeSource","countString","evaluateAtomicExpression","expr","definedMatch","exists","comparisonMatch","operator","processParentheses","wrapsEntire","foundParen","maxDepth","deepestStart","deepestEnd","inDefinedParen","beforeParen","subExpr","subError","correct","processedExpr","parenError","withoutDefined","orSegments","orSegment","andSegments","andResult","andSegment","gles3PS","gles3VS","webgpuPS$1","webgpuVS$1","webgpuPS","webgpuVS","sharedGLSL","sharedWGSL","_attrib2Semantic","vertex_position","vertex_normal","vertex_tangent","vertex_texCoord0","vertex_texCoord1","vertex_texCoord2","vertex_texCoord3","vertex_texCoord4","vertex_texCoord5","vertex_texCoord6","vertex_texCoord7","vertex_color","vertex_boneIndices","vertex_boneWeights","ShaderDefinitionUtils","createDefinition","normalizedOutputTypes","fragmentOutputTypes","getDefines","gpu","gl2","deviceIntro","attachmentsDefine","outType","getDefinesWgsl","glslOutType","wgslOutType","vertCode","fragCode","vertexDefinesCode","getDefinesCode","vertexDefines","fragmentDefinesCode","fragmentDefines","versionCode","precisionCode","getShaderNameCode","fragmentPreamble","vincludes","vertexIncludes","fincludes","fragmentIncludes","feedbackVaryings","useTransformFeedback","forcePrecision","maxPrecision","collectAttributes","vsCode","attribs","attrs","found","ignore","startOfLine","lineStartString","endOfLine","startOfAttribName","attribName","id$8","Shader","cincludes","createShaderImpl","UsedBuffer","DynamicBufferAllocation","DynamicBuffers","gpuBuffers","stagingBuffers","usedBuffers","activeBuffer","alloc","alignedStart","bufferAlignment","space","bufferSize","scheduleSubmit","_updateFunctions","storageFloat32","storageUint32","UniformBuffer","assignStorage","setUniform","updateFunction","startUpdate","dynamicBindGroup","oldGpuBuffer","getBindGroup","endUpdate","createUniformBufferImpl","base","baseVertex","indexed","WebgpuClearRenderer","defaultOptions","setBindGroup","emptyBindGroup","colorData","setShader","WebgpuMipmapRenderer","webgpuTexture","numFaces","srcViews","dstView","passEncoder","beginRenderPass","getBindGroupLayout","minSampler","setPipeline","DynamicBuffer","ubSize","bindGroupCache","WebgpuDynamicBuffer","onAvailable","mappedRange","getMappedRange","isStaging","MAP_WRITE","UNIFORM","mappedAtCreation","WebgpuDynamicBuffers","createCommandEncoder","usedBuffer","unmap","copyBufferToBuffer","cb","finish","addCommandBuffer","pendingStagingBuffers","onCommandBuffersSubmitted","mapAsync","GPUMapMode","WRITE","GpuProfiler","pastFrameAllocations","_enableRequest","processEnableRequest","_enabled","_frameTime","request","frameAllocations","report","timings","allocations","sum","getSlot","maxCount","slotCount","WebgpuQuerySet","querySet","queryBuffer","activeStagingBuffer","getStagingBuffer","MAP_READ","resolveQuerySet","bytesPerSlot","READ","srcTimings","BigInt64Array","isTimestamp","capacity","createQuerySet","QUERY_RESOLVE","STORAGE","WebgpuGpuProfiler","timestampQueriesSet","results","supportsTimestampQuery","WebgpuResolver","pipelineCache","getPipeline","createPipeline","resolveDepth","sourceTexture","destinationTexture","srcView","WebgpuCompute","updateBindGroup","dispatch","dispatchWorkgroups","computePipeline","id$7","StorageBuffer","bufferUsage","WebgpuDrawCommands","gpuIndirect","gpuIndirectSigned","indexOrVertexCount","instanceCount","firstIndexOrVertex","firstInstance","o","used","_uniqueLocations","_indirectEntryByteSize","WebgpuGraphicsDevice","clearRenderer","resolver","initDeviceCaps","limits","maxTextures","maxTextureSize","maxTextureDimension2D","maxCubeMapSize","maxVolumeSize","maxTextureDimension3D","fragmentUniformsCount","maxUniformBufferBindingSize","vertexUniformsCount","supportsAreaLights","supportsGpuParticles","supportsImageBitmap","wgslFeatures","wgslLanguageFeatures","initWebGpu","glslangUrl","twgslUrl","buildUrl","srcPath","URL","href","Promise","default","createDevice","adapterOptions","xrCompatible","gpuAdapter","requestAdapter","requiredFeatures","requireFeature","feature","supported","features","textureFloatBlendable","extCompressedTextureS3TC","extCompressedTextureS3TCSliced3D","extCompressedTextureETC","extCompressedTextureASTC","extCompressedTextureASTCSliced3D","supportsDepthClip","supportsDepth32Stencil","supportsIndirectFirstInstance","supportsShaderF16","supportsStorageRGBA8","adapterLimits","requiredLimits","limitName","deviceDescr","defaultQueue","requestDevice","lost","handleDeviceLost","gpuContext","canvasToneMapping","preferredCanvasFormat","getPreferredCanvasFormat","hdrMediaQuery","matchMedia","canvasConfig","colorSpace","alphaMode","toneMapping","viewFormats","configure","createBackbuffer","reason","setupPassEncoderDefaults","minUniformBufferOffsetAlignment","supportsStencil","outColorBuffer","getCurrentTexture","externalBackbuffer","wrt","_indirectDrawNextIndex","createIndexBufferImpl","createDrawCommandImpl","createComputeImpl","allocateIndirectDrawBuffer","_indirectDrawBuffer","_indirectDrawBufferCount","nextIndex","submitVertexBuffer","vbBuffer","validateVBLocations","vb0","vb1","validateVB","vbSlot","renderPipeline","setIndexBuffer","indirectBuffer","drawsCount","indirectOffset","slotIndex","drawIndexedIndirect","drawIndirect","drawIndexed","asyncCompile","stencilRef","setStencilReference","setBlendConstant","setAlphaToCoverage","state","_uploadDirtyTextures","_needsMipmaps","setupTimeStampWrites","passDesc","timestampWrites","beginningOfPassWriteIndex","endOfPassWriteIndex","renderPassDesc","setScissor","destTexture","genMipmaps","computePassDesc","beginComputePass","applyParameters","countX","countY","countZ","endCommandEncoder","commandBuffer","front","commandBuffers","unshift","setScissorRect","clearBuffer","destBuffer","reject","copySrc","srcType","setTimeout","copyDst","copyTextureToTexture","sourceRT","WebglBuffer","bufferId","gl","deleteBuffer","glUsage","STATIC_DRAW","DYNAMIC_DRAW","STREAM_DRAW","DYNAMIC_COPY","bindBuffer","bufferData","bufferSubData","WebglVertexBuffer","unbindVertexArray","vao","ARRAY_BUFFER","WebglIndexBuffer","ELEMENT_ARRAY_BUFFER","glFormat","UNSIGNED_BYTE","UNSIGNED_SHORT","UNSIGNED_INT","WebglShaderInput","locationId","_vertexShaderBuiltins","CompiledShaderCache","deleteShader","_vertexShaderCache","_fragmentShaderCache","WebglShader","glProgram","deleteProgram","glVertexShader","glFragmentShader","compile","link","_compileShaderSource","isContextLost","createProgram","attachShader","outNames","attr","transformFeedbackVaryings","INTERLEAVED_ATTRIBS","loc","bindAttribLocation","linkProgram","isVertexShader","shaderDeviceCache","shaderCache","glShader","createShader","VERTEX_SHADER","FRAGMENT_SHADER","shaderSource","compileShader","finalize","linkStatus","getProgramParameter","LINK_STATUS","_isCompiled","message","getProgramInfoLog","numAttributes","ACTIVE_ATTRIBUTES","getActiveAttrib","getAttribLocation","_samplerTypes","numUniforms","ACTIVE_UNIFORMS","getActiveUniform","getUniformLocation","shaderInput","pcUniformType","getShaderParameter","COMPILE_STATUS","infoLog","getShaderInfoLog","_processError","isLinked","extParallelShaderCompile","COMPLETION_STATUS_KHR","linePrefix","compileDuration","WebglDrawCommands","glCounts","glOffsetsBytes","glInstanceCounts","indexSizeBytes","downsampleImage","srcW","srcH","dstW","dstH","context","drawImage","WebglTexture","_glTexture","textureUnits","textureUnit","j","deleteTexture","dirtyParameterFlags","_glTarget","TEXTURE_CUBE_MAP","TEXTURE_3D","TEXTURE_2D_ARRAY","TEXTURE_2D","_glFormat","_glInternalFormat","_glPixelType","LUMINANCE","LUMINANCE_ALPHA","R8","RG","RG8","RGB","RGB565","UNSIGNED_SHORT_5_6_5","RGBA","RGB5_A1","UNSIGNED_SHORT_5_5_5_1","RGBA4","UNSIGNED_SHORT_4_4_4_4","RGB8","RGBA8","COMPRESSED_RGB_S3TC_DXT1_EXT","COMPRESSED_RGBA_S3TC_DXT3_EXT","COMPRESSED_RGBA_S3TC_DXT5_EXT","extCompressedTextureETC1","COMPRESSED_RGB_ETC1_WEBGL","extCompressedTexturePVRTC","COMPRESSED_RGB_PVRTC_2BPPV1_IMG","COMPRESSED_RGBA_PVRTC_2BPPV1_IMG","COMPRESSED_RGB_PVRTC_4BPPV1_IMG","COMPRESSED_RGBA_PVRTC_4BPPV1_IMG","COMPRESSED_RGB8_ETC2","COMPRESSED_RGBA8_ETC2_EAC","COMPRESSED_RGBA_ASTC_4x4_KHR","extCompressedTextureATC","COMPRESSED_RGB_ATC_WEBGL","COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL","extTextureCompressionBPTC","COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT","COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT","COMPRESSED_RGBA_BPTC_UNORM_EXT","SRGB","extCompressedTextureS3TC_SRGB","COMPRESSED_SRGB_S3TC_DXT1_EXT","SRGB_ALPHA","COMPRESSED_SRGB_ALPHA_S3TC_DXT3_EXT","COMPRESSED_SRGB_ALPHA_S3TC_DXT5_EXT","COMPRESSED_SRGB8_ETC2","COMPRESSED_SRGB8_ALPHA8_ETC2_EAC","COMPRESSED_SRGB8_ALPHA8_ASTC_4x4_KHR","COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT","R16F","HALF_FLOAT","RG16F","RGB16F","RGBA16F","RGB32F","FLOAT","RGBA32F","R32F","DEPTH_COMPONENT","DEPTH_COMPONENT32F","DEPTH_COMPONENT16","DEPTH_STENCIL","DEPTH24_STENCIL8","UNSIGNED_INT_24_8","R11F_G11F_B10F","UNSIGNED_INT_10F_11F_11F_REV","SRGB8","SRGB8_ALPHA8","RED_INTEGER","R8I","BYTE","R8UI","R16I","SHORT","R16UI","R32I","INT","R32UI","RG_INTEGER","RG8I","RG8UI","RG16I","RG16UI","RG32I","RG32UI","RGBA_INTEGER","RGBA8I","RGBA8UI","RGBA16I","RGBA16UI","RGBA32I","RGBA32UI","_glCreated","resMult","texStorage3D","generateMipmap","setUnpackFlipY","setUnpackPremultiplyAlpha","texSubImage2D","TEXTURE_CUBE_MAP_POSITIVE_X","texImage2D","texData","compressedTexSubImage2D","compressedTexImage2D","compressedTexImage3D","texImage3D","compressedTexSubImage3D","texSubImage3D","readTextureAsync","writeTextureAsync","FramebufferPair","msaaFB","deleteRenderbuffer","resolveFB","WebglRenderTarget","_isInitialized","_glFrameBuffer","suppliedColorFramebuffer","deleteFramebuffer","_glDepthBuffer","_glResolveFrameBuffer","_glMsaaColorBuffers","colorMrtFramebuffers","framebuffer","_glMsaaDepthBuffer","msaaDepthBufferKey","createFramebuffer","setFramebuffer","colorBufferCount","attachmentBaseConstant","COLOR_ATTACHMENT0","maxRenderBufferSize","framebufferTexture2D","FRAMEBUFFER","drawBuffers","attachmentPoint","DEPTH_STENCIL_ATTACHMENT","DEPTH_ATTACHMENT","willRenderMsaa","createRenderbuffer","internalFormat","bindRenderbuffer","RENDERBUFFER","renderbufferStorage","framebufferRenderbuffer","renderbufferStorageMultisample","_createMsaaMrtFramebuffers","srcFramebuffer","dstFramebuffer","_checkFbo","status","checkFramebufferStatus","FRAMEBUFFER_INCOMPLETE_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT","FRAMEBUFFER_INCOMPLETE_DIMENSIONS","FRAMEBUFFER_UNSUPPORTED","internalResolve","bindFramebuffer","READ_FRAMEBUFFER","DRAW_FRAMEBUFFER","blitFramebuffer","NEAREST","fbPair","COLOR_BUFFER_BIT","DEPTH_BUFFER_BIT","FrameQueriesInfo","queries","deleteQuery","WebglGpuProfiler","freeQueries","frameQueries","previousFrameQueries","frameQueriesInfo","extDisjointTimerQuery","createQuery","beginQuery","TIME_ELAPSED_EXT","endQuery","frameGPUMarkerSlot","previousQueriesInfo","previousQueries","lastQuery","available","getQueryParameter","QUERY_RESULT_AVAILABLE","disjoint","getParameter","GPU_DISJOINT_EXT","duration","QUERY_RESULT","invalidateAttachments","WebglGraphicsDevice","feedback","deleteTransformFeedback","clearVertexArrayObjectCache","_contextLostHandler","_contextRestoredHandler","frameBuffer","updateBackbufferFormat","alphaBits","ALPHA_BITS","updateBackbuffer","resolutionChanged","_defaultFramebufferChanged","_defaultFramebuffer","getPrecision","getShaderPrecisionFormat","vertexShaderPrecisionHighpFloat","HIGH_FLOAT","vertexShaderPrecisionMediumpFloat","MEDIUM_FLOAT","fragmentShaderPrecisionHighpFloat","fragmentShaderPrecisionMediumpFloat","highpAvailable","mediumpAvailable","arguments","supportedExtensions","_extDisjointTimerQuery","initializeExtensions","getSupportedExtensions","extColorBufferFloat","extColorBufferHalfFloat","extDebugRendererInfo","extTextureFloatLinear","extFloatBlend","extTextureFilterAnisotropic","extMultiDraw","initializeCapabilities","contextAttribs","getContextAttributes","supportsMsaa","MAX_TEXTURE_SIZE","MAX_CUBE_MAP_TEXTURE_SIZE","MAX_RENDERBUFFER_SIZE","MAX_TEXTURE_IMAGE_UNITS","maxCombinedTextures","MAX_COMBINED_TEXTURE_IMAGE_UNITS","maxVertexTextures","MAX_VERTEX_TEXTURE_IMAGE_UNITS","MAX_VERTEX_UNIFORM_VECTORS","MAX_FRAGMENT_UNIFORM_VECTORS","MAX_COLOR_ATTACHMENTS","MAX_3D_TEXTURE_SIZE","unmaskedRenderer","UNMASKED_RENDERER_WEBGL","unmaskedVendor","UNMASKED_VENDOR_WEBGL","maliRendererRegex","samsungModelRegex","MAX_TEXTURE_MAX_ANISOTROPY_EXT","antialiasSupported","forceDisableMultisampling","MAX_SAMPLES","disable","BLEND","blendFunc","blendEquation","FUNC_ADD","colorMask","enable","CULL_FACE","cullFace","DEPTH_TEST","depthFunc","LEQUAL","depthMask","STENCIL_TEST","stencilFuncFront","stencilFuncBack","stencilRefFront","stencilRefBack","stencilMaskFront","stencilMaskBack","stencilFunc","ALWAYS","stencilFailFront","stencilFailBack","stencilZfailFront","stencilZfailBack","stencilZpassFront","stencilZpassBack","stencilWriteMaskFront","stencilWriteMaskBack","stencilOp","KEEP","stencilMask","alphaToCoverage","raster","SAMPLE_ALPHA_TO_COVERAGE","RASTERIZER_DISCARD","depthBiasEnabled","POLYGON_OFFSET_FILL","clearColor","hint","FRAGMENT_SHADER_DERIVATIVE_HINT","NICEST","SCISSOR_TEST","pixelStorei","UNPACK_COLORSPACE_CONVERSION_WEBGL","NONE","unpackFlipY","UNPACK_FLIP_Y_WEBGL","unpackPremultiplyAlpha","UNPACK_PREMULTIPLY_ALPHA_WEBGL","UNPACK_ALIGNMENT","initTextureUnits","_vaoMap","boundVao","activeFramebuffer","transformFeedbackBuffer","viewport","scissor","fb","prevRt","updateBegin","clearFlags","clearOptions","STENCIL_ATTACHMENT","fullSizeClearRect","invalidateFramebuffer","activeTexture","bindTexture","defaultFramebuffer","_tempEnableSafariTextureUnitWorkaround","unit","targetImpl","updateEnd","TEXTURE0","textureTarget","textureObject","targetToSlot","bindTextureOnUnit","setTextureParameters","filter","texParameteri","TEXTURE_MIN_FILTER","glFilter","TEXTURE_MAG_FILTER","TEXTURE_WRAP_S","glAddress","TEXTURE_WRAP_T","TEXTURE_WRAP_R","TEXTURE_COMPARE_MODE","COMPARE_REF_TO_TEXTURE","TEXTURE_COMPARE_FUNC","glComparison","texParameterf","TEXTURE_MAX_ANISOTROPY_EXT","createVertexArray","useCache","bindVertexArray","vertexAttribIPointer","glType","vertexAttribPointer","enableVertexAttribArray","vertexAttribDivisor","setBuffers","_multiDrawLoopFallback","drawElementsInstanced","drawElements","drawArraysInstanced","drawArrays","activateShader","samplerValue","uniform1i","numTextures","uniform1iv","uniformVersion","programVersion","commitFunction","bindBufferBase","TRANSFORM_FEEDBACK_BUFFER","beginTransformFeedback","POINTS","glPrimitive","multiDrawElementsInstancedWEBGL","multiDrawElementsWEBGL","multiDrawArraysInstancedWEBGL","multiDrawArraysWEBGL","bytesPerIndex","endTransformFeedback","glClearFlag","flush","readPixels","clientWaitAsync","interval_ms","sync","fenceSync","SYNC_GPU_COMMANDS_COMPLETE","clientWaitSync","TIMEOUT_EXPIRED","deleteSync","WAIT_FAILED","readPixelsAsync","pixelType","buf","PIXEL_PACK_BUFFER","STREAM_READ","getBufferSubData","catch","PIXEL_UNPACK_BUFFER","setTransformFeedbackBuffer","createTransformFeedback","bindTransformFeedback","TRANSFORM_FEEDBACK","setRaster","setStencilTest","setStencilFunc","setStencilFuncFront","stencilFuncSeparate","FRONT","setStencilFuncBack","setStencilOperation","glStencilOp","setStencilOperationFront","stencilOpSeparate","stencilMaskSeparate","setStencilOperationBack","currentBlendState","glBlendEquation","blendEquationSeparate","blendFuncSeparate","glBlendFunctionColor","glBlendFunctionAlpha","currentDepthState","polygonOffset","glCull","useProgram","mapObj","deleteVertexArray","requestFullscreen","exitFullscreen","fullscreenElement","event","preventDefault","firefoxVersion","disableAntialias","isChrome","isSafari","isMac","appVersion","_tempMacChromeBlitFramebufferWorkaround","SAMPLER_2D","SAMPLER_CUBE","UNSIGNED_INT_SAMPLER_2D","INT_SAMPLER_2D","SAMPLER_2D_SHADOW","SAMPLER_CUBE_SHADOW","SAMPLER_3D","INT_SAMPLER_3D","UNSIGNED_INT_SAMPLER_3D","SAMPLER_2D_ARRAY","INT_SAMPLER_2D_ARRAY","UNSIGNED_INT_SAMPLER_2D_ARRAY","REPEAT","CLAMP_TO_EDGE","MIRRORED_REPEAT","FUNC_SUBTRACT","FUNC_REVERSE_SUBTRACT","MIN","MAX","SRC_COLOR","ONE_MINUS_SRC_COLOR","DST_COLOR","ONE_MINUS_DST_COLOR","SRC_ALPHA","SRC_ALPHA_SATURATE","ONE_MINUS_SRC_ALPHA","DST_ALPHA","ONE_MINUS_DST_ALPHA","CONSTANT_COLOR","ONE_MINUS_CONSTANT_COLOR","CONSTANT_ALPHA","ONE_MINUS_CONSTANT_ALPHA","NEVER","LESS","EQUAL","GREATER","NOTEQUAL","GEQUAL","REPLACE","INCR","INCR_WRAP","DECR","DECR_WRAP","INVERT","STENCIL_BUFFER_BIT","FRONT_AND_BACK","LINEAR","NEAREST_MIPMAP_NEAREST","NEAREST_MIPMAP_LINEAR","LINEAR_MIPMAP_NEAREST","LINEAR_MIPMAP_LINEAR","LINES","LINE_LOOP","LINE_STRIP","TRIANGLES","TRIANGLE_STRIP","TRIANGLE_FAN","BOOL","FLOAT_VEC2","FLOAT_VEC3","FLOAT_VEC4","INT_VEC2","INT_VEC3","INT_VEC4","BOOL_VEC2","BOOL_VEC3","BOOL_VEC4","FLOAT_MAT2","FLOAT_MAT3","FLOAT_MAT4","UNSIGNED_INT_VEC2","UNSIGNED_INT_VEC3","UNSIGNED_INT_VEC4","INT_SAMPLER_CUBE","scopeX","scopeY","scopeZ","scopeW","uniformValue","uniform1f","uniform2fv","uniform3fv","uniform4fv","uniform2iv","uniform3iv","uniform4iv","uniformMatrix2fv","uniformMatrix3fv","uniformMatrix4fv","uniform1fv","uniform1ui","uniform2uiv","uniform3uiv","uniform4uiv","uniform1uiv","constantTexSource","NullIndexBuffer","NullRenderTarget","NullShader","NullTexture","NullVertexBuffer","NullDrawCommands","NullGraphicsDevice","disableParticleSystem","isNull","createGraphicsDevice","deviceTypes","xr","deviceCreateFuncs","attempt","next","log","ComputeParameter","Compute","setParameter","param","parameters","deleteParameter","setupDispatch","DrawCommands","_maxCount","_count","id$6","IndexBuffer","getNumIndices","numIndices","_lockTypedArray","indices","writeData","readData","ColorAttachmentOps","DepthStencilAttachmentOps","RenderPass","_name","scaleX","_options","scaleY","allocateAttachments","numColorOps","intFormat","frameUpdate","resizeSource","before","execute","after","onEnable","onDisable","setClearColor","setClearDepth","depthValue","setClearStencil","stencilValue","render","realPass","executeEnabled","_skipStart","_skipEnd","requiresCubemaps","beforePasses","afterPasses","TransformFeedback","_destroyOutputBuffer","_outputBuffer","process","swap","oldRt","_inputBuffer","inputBuffer","outputBuffer","outVB","set1","set2","set3","set4","arraySet1","inputArray","inputIndex","arraySet2","arraySet3","arraySet4","arrayGet1","outputArray","outputIndex","arrayGet2","arrayGet3","arrayGet4","VertexIteratorAccessor","getToArray","setFromArray","vertexElement","BYTES_PER_ELEMENT","VertexIterator","accessors","numAccessors","accessor","copyCount","vertexFormatSize","ACTION_MOUSE","ACTION_KEYBOARD","ACTION_GAMEPAD","AXIS_MOUSE_X","AXIS_MOUSE_Y","AXIS_PAD_L_X","AXIS_PAD_L_Y","AXIS_PAD_R_X","AXIS_PAD_R_Y","AXIS_KEY","KEY_BACKSPACE","KEY_TAB","KEY_RETURN","KEY_ENTER","KEY_SHIFT","KEY_CONTROL","KEY_ALT","KEY_PAUSE","KEY_CAPS_LOCK","KEY_ESCAPE","KEY_SPACE","KEY_PAGE_UP","KEY_PAGE_DOWN","KEY_END","KEY_HOME","KEY_LEFT","KEY_UP","KEY_RIGHT","KEY_DOWN","KEY_PRINT_SCREEN","KEY_INSERT","KEY_DELETE","KEY_0","KEY_1","KEY_2","KEY_3","KEY_4","KEY_5","KEY_6","KEY_7","KEY_8","KEY_9","KEY_SEMICOLON","KEY_EQUAL","KEY_A","KEY_B","KEY_C","KEY_D","KEY_E","KEY_F","KEY_G","KEY_H","KEY_I","KEY_J","KEY_K","KEY_L","KEY_M","KEY_N","KEY_O","KEY_P","KEY_Q","KEY_R","KEY_S","KEY_T","KEY_U","KEY_V","KEY_W","KEY_X","KEY_Y","KEY_Z","KEY_WINDOWS","KEY_CONTEXT_MENU","KEY_NUMPAD_0","KEY_NUMPAD_1","KEY_NUMPAD_2","KEY_NUMPAD_3","KEY_NUMPAD_4","KEY_NUMPAD_5","KEY_NUMPAD_6","KEY_NUMPAD_7","KEY_NUMPAD_8","KEY_NUMPAD_9","KEY_MULTIPLY","KEY_ADD","KEY_SEPARATOR","KEY_SUBTRACT","KEY_DECIMAL","KEY_DIVIDE","KEY_F1","KEY_F2","KEY_F3","KEY_F4","KEY_F5","KEY_F6","KEY_F7","KEY_F8","KEY_F9","KEY_F10","KEY_F11","KEY_F12","KEY_COMMA","KEY_PERIOD","KEY_SLASH","KEY_OPEN_BRACKET","KEY_BACK_SLASH","KEY_CLOSE_BRACKET","KEY_META","MOUSEBUTTON_NONE","MOUSEBUTTON_LEFT","MOUSEBUTTON_MIDDLE","MOUSEBUTTON_RIGHT","PAD_1","PAD_2","PAD_3","PAD_4","PAD_FACE_1","PAD_FACE_2","PAD_FACE_3","PAD_FACE_4","PAD_L_SHOULDER_1","PAD_R_SHOULDER_1","PAD_L_SHOULDER_2","PAD_R_SHOULDER_2","PAD_SELECT","PAD_START","PAD_L_STICK_BUTTON","PAD_R_STICK_BUTTON","PAD_UP","PAD_DOWN","PAD_LEFT","PAD_RIGHT","PAD_VENDOR","PAD_L_STICK_X","PAD_L_STICK_Y","PAD_R_STICK_X","PAD_R_STICK_Y","XRPAD_TOUCHPAD_X","XRPAD_TOUCHPAD_Y","XRPAD_STICK_X","XRPAD_STICK_Y","XRPAD_TOUCHPAD_BUTTON","XRPAD_TRIGGER","XRPAD_SQUEEZE","XRPAD_STICK_BUTTON","XRPAD_A","XRPAD_B","KeyboardEvent","keyboard","keyCode","_keyboardEvent","makeKeyboardEvent","toKeyCode","toUpperCase","_keyCodeToKeyIdentifier","Keyboard","attach","_element","detach","_keyDownHandler","_keyPressHandler","_keyUpHandler","_visibilityChangeHandler","_windowBlurHandler","toKeyIdentifier","_handleKeyDown","charCode","_keymap","stopPropagation","_handleKeyUp","_handleKeyPress","_handleVisibilityChange","visibilityState","_handleWindowBlur","_lastmap","isPressed","wasPressed","wasReleased","EVENT_KEYDOWN","EVENT_KEYUP","isMousePointerLocked","pointerLockElement","mozPointerLockElement","webkitPointerLockElement","MouseEvent","mouse","dx","dy","button","wheelDelta","ctrlKey","altKey","shiftKey","metaKey","coords","_getTargetCoords","deltaY","movementX","webkitMovementX","mozMovementX","movementY","webkitMovementY","mozMovementY","_lastX","_lastY","buttons","_buttons","Mouse","isPointerLocked","_target","_attached","passiveOptions","passive","_upHandler","_downHandler","_moveHandler","_wheelHandler","disableContextMenu","_contextMenuHandler","enableContextMenu","enablePointerLock","requestPointerLock","disablePointerLock","exitPointerLock","_lastbuttons","_handleUp","_handleDown","_handleMove","_handleWheel","clientX","clientWidth","clientY","clientHeight","EVENT_MOUSEMOVE","EVENT_MOUSEDOWN","EVENT_MOUSEUP","EVENT_MOUSEWHEEL","Controller","_keyboard","_mouse","_enableMouse","dt","_gamepads","_axesValues","_axes","appendAction","action_name","action","_actions","registerKeys","_enableKeyboard","registerMouse","registerPadButton","pad","registerAxis","controller","getAxis","positive","positiveKey","negativeKey","negative","actionName","dummyArray","MAPS_INDEXES","axes","MAPS","DEFAULT_DUAL","synthesizedButtons","PS3","mapping","DEFAULT_XR","PRODUCT_CODES","custom_maps","getMap","custom","product","raw","defaultmap","deadZone","sleep","ms","GamePadButton","pressed","touched","wasTouched","previous","dummyButton","GamePad","connected","_compileMapping","_compiledMapping","axesIndexes","buttonsIndexes","axesMap","buttonsMap","synthesizedButtonsMap","_previousAxes","gamepad","previousAxes","updateMap","resetMap","pulse","intensity","actuators","vibrationActuator","hapticActuators","startDelay","strongMagnitude","weakMagnitude","actuator","playEffect","getButton","isTouched","hand","GamePads","_previous","_ongamepadconnected","padIndex","findIndex","gp","_ongamepaddisconnected","poll","pads","padDevices","findByIndex","nPad","_ongamepadconnectedHandler","_ongamepaddisconnectedHandler","orderIndex","pulseAll","findById","gamepadsSupported","EVENT_GAMEPADCONNECTED","EVENT_GAMEPADDISCONNECTED","getTouchTargetCoords","totalOffsetX","totalOffsetY","HTMLElement","parentNode","offsetLeft","scrollLeft","offsetTop","scrollTop","offsetParent","pageX","pageY","Touch","TouchEvent","getTouchById","touches","changedTouches","TouchDevice","_startHandler","_endHandler","_cancelHandler","_handleTouchStart","_handleTouchEnd","_handleTouchMove","_handleTouchCancel","EVENT_TOUCHSTART","EVENT_TOUCHEND","EVENT_TOUCHMOVE","EVENT_TOUCHCANCEL","Http","progress","lengthComputable","loaded","endHandler","post","postdata","put","del","method","errored","retry","assign","retries","maxRetries","async","headers","Document","FormData","contentType","ContentType","FORM_URLENCODED","bFirstItem","encodedKey","encodedValue","JSON","stringify","timestamp","xhr","XMLHttpRequest","open","withCredentials","responseType","_guessResponseType","header","setRequestHeader","onreadystatechange","_onReadyStateChange","_onError","send","toLowerCase","binaryExtensions","ResponseType","DOCUMENT","TEXT","_isBinaryContentType","binTypes","BASIS","BIN","DDS","GLB","MP3","MP4","OGG","OPUS","WAV","_isBinaryResponseType","BLOB","readyState","responseURL","_onSuccess","response","getResponseHeader","parse","responseText","XML","responseXML","retrying","retryDelay","maxRetryDelay","AAC","GIF","JPEG","PNG","http","DISTANCE_LINEAR","DISTANCE_INVERSE","DISTANCE_EXPONENTIAL","Listener","getPosition","setPosition","listener","positionX","positionY","positionZ","setOrientation","orientation","forwardX","forwardY","forwardZ","upX","upY","upZ","getOrientation","_manager","manager","CONTEXT_STATE_RUNNING","USER_INPUT_EVENTS","SoundManager","suspended","_userSuspended","_context","AudioContext","_registerUnlockListeners","suspend","_suspend","resume","_resume","_removeUnlockListeners","close","createBufferSource","sampleRate","connect","destination","onended","disconnect","_unlockHandler","eventName","_unlockHandlerFunc","webkitAudioContext","Sound","audio","Audio","hasAudioContext","STATE_PLAYING","STATE_PAUSED","STATE_STOPPED","capTime","SoundInstance","currentTime","_state","_suspendInstanceEvents","stop","_startOffset","play","_currentTime","_updateCurrentTime","_duration","isPlaying","_sound","isPaused","isStopped","isSuspended","_suspended","loop","_loop","pitch","_currentOffset","_startedAt","_pitch","playbackRate","sound","_createSource","startTime","_startTime","gain","_onPlay","_onPlayCallback","_onPause","_onPauseCallback","_onResume","_onResumeCallback","_onStop","_onStopCallback","_onEnded","_suspendEndEvent","_onEndCallback","_onManagerVolumeChange","_onManagerSuspend","pause","_onManagerResume","_initializeNodes","createGain","_inputNode","_connectorNode","_playWhenLoaded","_waitingContextSuspension","_playAudioImmediate","_onManagerDestroy","wasPlaying","setExternalNodes","firstNode","lastNode","speakers","_firstNode","_lastNode","clearExternalNodes","getExternalNodes","_endedHandler","loopStart","loopEnd","onPlay","onPause","onResume","onStop","onEnd","_isReady","_loadedMetadataHandler","_onLoadedMetadata","_timeUpdateHandler","_onTimeUpdate","EVENT_PLAY","EVENT_PAUSE","EVENT_RESUME","EVENT_STOP","EVENT_END","prototype","paused","cloneNode","MAX_DISTANCE","SoundInstance3d","panner","createPanner","_position","velocity","_velocity","maxDistance","refDistance","rollOffFactor","rolloffFactor","distanceModel","fallOff","posOne","posTwo","lpos","factor","_maxDistance","_refDistance","_rollOffFactor","_distanceModel","BLEND_SUBTRACTIVE","BLEND_ADDITIVE","BLEND_NORMAL","BLEND_NONE","BLEND_PREMULTIPLIED","BLEND_MULTIPLICATIVE","BLEND_ADDITIVEALPHA","BLEND_MULTIPLICATIVE2X","BLEND_SCREEN","BLEND_MIN","BLEND_MAX","blendNames","FOG_NONE","FOG_LINEAR","FOG_EXP","FOG_EXP2","FRESNEL_NONE","FRESNEL_SCHLICK","fresnelNames","LAYER_HUD","LAYER_GIZMO","LAYER_WORLD","LAYERID_WORLD","LAYERID_DEPTH","LAYERID_SKYBOX","LAYERID_IMMEDIATE","LAYERID_UI","LIGHTTYPE_DIRECTIONAL","LIGHTTYPE_OMNI","LIGHTTYPE_POINT","LIGHTTYPE_SPOT","LIGHTTYPE_COUNT","lightTypeNames","LIGHT_COLOR_DIVIDER","LIGHTSHAPE_PUNCTUAL","LIGHTSHAPE_RECT","LIGHTSHAPE_DISK","LIGHTSHAPE_SPHERE","lightShapeNames","LIGHTFALLOFF_LINEAR","LIGHTFALLOFF_INVERSESQUARED","lightFalloffNames","SHADOW_PCF3_32F","SHADOW_PCF3","SHADOW_VSM_16F","SHADOW_VSM16","SHADOW_VSM_32F","SHADOW_VSM32","SHADOW_PCF5_32F","SHADOW_PCF5","SHADOW_PCF1_32F","SHADOW_PCF1","SHADOW_PCSS_32F","SHADOW_PCF1_16F","SHADOW_PCF3_16F","SHADOW_PCF5_16F","shadowTypeInfo","kind","pcf","vsm","pcss","SHADOW_CASCADE_0","SHADOW_CASCADE_1","SHADOW_CASCADE_2","SHADOW_CASCADE_3","SHADOW_CASCADE_ALL","BLUR_BOX","BLUR_GAUSSIAN","PARTICLESORT_NONE","PARTICLESORT_DISTANCE","PARTICLESORT_NEWER_FIRST","PARTICLESORT_OLDER_FIRST","PARTICLEMODE_GPU","PARTICLEMODE_CPU","EMITTERSHAPE_BOX","EMITTERSHAPE_SPHERE","PARTICLEORIENTATION_SCREEN","PARTICLEORIENTATION_WORLD","PARTICLEORIENTATION_EMITTER","PROJECTION_PERSPECTIVE","PROJECTION_ORTHOGRAPHIC","RENDERSTYLE_SOLID","RENDERSTYLE_WIREFRAME","RENDERSTYLE_POINTS","CUBEPROJ_NONE","CUBEPROJ_BOX","cubemaProjectionNames","DETAILMODE_MUL","DETAILMODE_ADD","DETAILMODE_SCREEN","DETAILMODE_OVERLAY","DETAILMODE_MIN","DETAILMODE_MAX","GAMMA_NONE","GAMMA_SRGB","gammaNames","TONEMAP_LINEAR","TONEMAP_FILMIC","TONEMAP_HEJL","TONEMAP_ACES","TONEMAP_ACES2","TONEMAP_NEUTRAL","TONEMAP_NONE","tonemapNames","SPECOCC_NONE","SPECOCC_AO","SPECOCC_GLOSSDEPENDENT","specularOcclusionNames","REFLECTIONSRC_NONE","REFLECTIONSRC_ENVATLAS","REFLECTIONSRC_ENVATLASHQ","REFLECTIONSRC_CUBEMAP","REFLECTIONSRC_SPHEREMAP","reflectionSrcNames","AMBIENTSRC_AMBIENTSH","AMBIENTSRC_ENVALATLAS","AMBIENTSRC_CONSTANT","ambientSrcNames","SHADERDEF_NOSHADOW","SHADERDEF_SKIN","SHADERDEF_UV0","SHADERDEF_UV1","SHADERDEF_VCOLOR","SHADERDEF_INSTANCING","SHADERDEF_LM","SHADERDEF_DIRLM","SHADERDEF_SCREENSPACE","SHADERDEF_TANGENTS","SHADERDEF_MORPH_POSITION","SHADERDEF_MORPH_NORMAL","SHADERDEF_LMAMBIENT","SHADERDEF_MORPH_TEXTURE_BASED_INT","SHADERDEF_BATCH","SHADOWUPDATE_NONE","SHADOWUPDATE_THISFRAME","SHADOWUPDATE_REALTIME","MASK_AFFECT_DYNAMIC","MASK_AFFECT_LIGHTMAPPED","MASK_BAKE","SHADER_FORWARD","SHADER_PREPASS","SHADER_SHADOW","SHADER_PICK","SHADERPASS_FORWARD","SHADERPASS_ALBEDO","SHADERPASS_WORLDNORMAL","SHADERPASS_OPACITY","SHADERPASS_SPECULARITY","SHADERPASS_GLOSS","SHADERPASS_METALNESS","SHADERPASS_AO","SHADERPASS_EMISSION","SHADERPASS_LIGHTING","SHADERPASS_UV0","SPRITE_RENDERMODE_SIMPLE","SPRITE_RENDERMODE_SLICED","SPRITE_RENDERMODE_TILED","spriteRenderModeNames","BAKE_COLOR","BAKE_COLORDIR","VIEW_CENTER","VIEW_LEFT","VIEW_RIGHT","SORTMODE_NONE","SORTMODE_MANUAL","SORTMODE_MATERIALMESH","SORTMODE_BACK2FRONT","SORTMODE_FRONT2BACK","SORTMODE_CUSTOM","ASPECT_AUTO","ASPECT_MANUAL","ORIENTATION_HORIZONTAL","ORIENTATION_VERTICAL","SKYTYPE_INFINITE","SKYTYPE_BOX","SKYTYPE_DOME","DITHER_NONE","DITHER_BAYER8","DITHER_BLUENOISE","DITHER_IGNNOISE","ditherNames","EVENT_PRERENDER","EVENT_POSTRENDER","EVENT_PRERENDER_LAYER","EVENT_POSTRENDER_LAYER","EVENT_PRECULL","EVENT_POSTCULL","EVENT_CULL_END","ShaderProcessorOptions","groupFormat","generateKey","viewUniformFormat","viewBindGroupFormat","programLibraryDeviceCache","getProgramLibrary","library","setProgramLibrary","ShaderGenerator","definesHash","sortedArray","shaderPassDeviceCache","ShaderPassInfo","buildShaderDefines","isShadow","isForward","ShaderPass","passesNamed","passesIndexed","getByIndex","getByName","ShaderChunkMap","markDirty","override","existed","_keyDirty","isDirty","resetDirty","k","_chunksCache","ShaderChunks","glsl","useWGSL","MapUtils","merge","maps","ShaderGeneratorPassThrough","createShaderDefinition","ShaderUtils","programLibrary","getCachedShader","uniqueName","vertexWGSL","vertexChunk","fragmentWGSL","fragmentChunk","chunksMap","vertexGLSL","fragmentGLSL","setCachedShader","getCoreDefines","material","cameraShaderParams","shaderPassInfo","pass","processShader","materialGenerator","libraryModuleName","register","variant","getProgram","unregister","addScreenDepthChunkDefines","sceneDepthMapLinear","vsName","fsName","shaderDefinitionOptions","createShaderFromCode","fsCode","_quadPrimitive","_tempViewport","_tempScissor","_dynamicBindGroup$1","QuadRender","RenderPassQuad","quad","scissorRect","_tempRect","drawQuadWithShader","Batch","scene","layers","meshInstance","removeFromLayers","addToLayers","layer","getLayerById","addMeshInstances","removeMeshInstances","updateBoundingBox","origMeshInstances","_aabbVer","model","meshInstances","dynamic","batchGroupId","BatchGroup","maxAabbSize","_ui","_sprite","_obj","sprite","MODEL","ELEMENT","SPRITE","RENDER","_invMatrix","SkinInstance","rootBone","_rootBone","numBones","numPixels","boneTexture","matrixPalette","entity","skin","bones","boneNames","boneName","bone","findByName","initSkin","inverseBindPose","matrices","uploadBones","_updateMatrices","rootNode","skinUpdateIndex","_skinUpdateIndex","getWorldTransform","updateMatrices","_updateBeforeCull","updateMatrixPalette","mp","pe","SkinBatchInstance","nodes","id$5","GeometryData","initDefaults","recreate","verticesUsage","indicesUsage","maxVertices","maxIndices","indexCount","vertexStreamsUpdated","indexStreamUpdated","vertexStreamDictionary","_changeVertexCount","DEFAULT_COMPONENTS_POSITION","DEFAULT_COMPONENTS_NORMAL","DEFAULT_COMPONENTS_UV","DEFAULT_COMPONENTS_COLORS","GeometryVertexStream","componentCount","dataTypeNormalize","Mesh","fromGeometry","geometry","mesh","normals","tangents","colors","uvs","uvs1","blendIndices","blendWeights","setPositions","setNormals","setVertexStream","setColors32","setUvs","setIndices","morph","_morph","_destroyIndexBuffer","_geometryData","_initBoneAabbs","morphTargets","boneAabb","boneUsed","boneMin","boneMax","maxMorphX","maxMorphY","maxMorphZ","iterator","posElement","weightsElement","indicesElement","boneWeight","boneIndex","minMorphX","minMorphY","minMorphZ","deltaPositions","dz","positionElement","_initGeometryData","verticesDynamic","indicesDynamic","getVertexStream","done","stream","setColors","getPositions","getNormals","getUvs","getColors","getIndices","streamIndices","il","destroyVB","destroyIB","_updateVertexBuffer","_updateIndexBuffer","updateRenderStates","_buildVertexFormat","vertexDesc","allocateVertexCount","_storageVertex","createFormat","_storageIndex","srcIndices","prepareRenderState","renderStyle","generateWireframe","seen","i1","i2","wireBuffer","dstIndices","storageIndex","storageVertex","defaultMaterialDeviceCache","getDefaultMaterial","setDefaultMaterial","RefCountedCache","incRef","decRef","LightmapCache","id$4","_tmpAabb","_tempBoneAabb","_tempSphere","_meshSet","InstancingData","_destroyVertexBuffer","numObjects","ShaderInstance","getUniformBuffer","MeshInstance","drawBucket","bucket","_drawBucket","_renderStyle","_mesh","_updateAabb","_updateAabbFunc","localAabb","_customAabb","toWorldSpace","skinInstance","_morphInstance","_targets","node","_aabbMeshVer","morphAabb","clearShaders","_shaderCache","shaderInstance","getShaderInstance","shaderPass","lightHash","sortedLights","shaderDefs","_shaderDefs","mat","_material","variants","getShaderVariant","objDefs","prevMat","removeMeshInstanceRef","addMeshInstanceRef","transparent","_updateShaderDefs","calculateSortDistance","_calculateSortDistance","receiveShadow","_receiveShadow","batching","_skinInstance","_setupSkinUpdate","morphInstance","morphPositions","morphNormals","intRenderFormat","screenSpace","_screenSpace","_sortKeyForward","toggles","instancingCount","instancingData","setRealtimeLightmap","lightmapParamNames","destroyDrawCommands","cmd","_prepareRenderStyleForArray","_isVisible","camera","visible","isVisibleFunc","frustum","alphaTest","setInstancing","cull","setIndirect","_deleteDrawCommandsKey","setMultiDraw","indexFormat","cmds","getDrawCommands","getIndirectMetaData","prim","meshMetaData","ensureMaterial","clearParameters","getParameters","passFlags","old","setParameters","passFlag","paramName","parameter","setLightmapped","setCustomAabb","castShadow","shadowCascadeMask","drawOrder","visibleThisFrame","flipFacesFactor","gsplatInstance","indirectData","pick","_sortKeyShadow","_sortKeyDynamic","_layer","_triFanIndices","_triStripIndices","mat3","paramsIdentical","equalParamSets","params1","params2","getScaleSign","mi","BatchManager","_batchGroups","_batchList","_dirtyGroups","addGroup","_batchGroupCounter","group","removeGroup","newBatchList","destroyBatch","_removeModelsFromBatchGroup","markGroupDirty","getGroupByName","groups","getBatches","batch","_children","groupId","_extractRender","groupMeshInstances","_extractModel","removeModelFromLayers","_extractElement","valid","_text","_model","_image","_renderable","unmaskMeshInstance","_dirtifyMask","_onPrerender","_collectAndRemoveMeshInstances","groupIds","_meshInstance","_renderMode","_batchGroup","newDirtyGroups","lists","groupData","prepare","POSITIVE_INFINITY","translucent","halfMaxAabbSize","maxInstanceCount","maxNumVertices","testAabb","skipTranslucentAabb","sf","meshInstancesLeftA","meshInstancesLeftB","skipMesh","defs","vertCount","vertexFormatBatchingHash","collectBatchedMeshData","streams","batchNumVerts","batchNumIndices","elems","_init","vertexFormats","batchData","indexBase","indexBaseVertex","indexData","verticesOffset","indexOffset","transform","indexArrayType","typeArrayType","elementByteSize","totalComponents","m2","m4","m5","m6","m8","m9","m14","m3","m7","srcFormat","batchGroup","updateAll","clonedMeshInstances","batch2","root","_colorUniformName","RenderPassColorGrab","releaseRenderTarget","colorRenderTarget","shouldReallocate","targetRT","sourceFormat","targetFormat","allocateRenderTarget","sourceRenderTarget","sourceRt","_depthUniformName","RenderPassDepthGrab","depthRenderTarget","isDepth","destinationRt","useDepthBuffer","numSamples","CameraShaderParams","_hash","gammaCorrection","srgbRenderTarget","fog","ssaoEnabled","_defines","_definesDirty","_sceneDepthMapLinear","_fog","_toneMapping","shaderOutputGamma","_ssaoEnabled","_gammaCorrectionAssigned","_gammaCorrection","_srgbRenderTarget","gammaOutput","_deviceCoord","_halfSize","_point$1","_invViewProjMat","_frustumPoints","Camera","renderPassColorGrab","renderPassDepthGrab","renderPasses","_storeShaderMatrices","viewProjMat","jitterX","jitterY","_shaderMatricesVersion","_viewProjPrevious","_viewProjCurrent","_viewProjInverse","_jitters","_scissorRectClear","_rect","aspectRatio","newValue","_aspectRatio","_projMatDirty","active","_xrProperties","aspectRatioMode","_aspectRatioMode","calculateProjection","_calculateProjection","calculateTransform","_calculateTransform","_clearColor","clearColorBuffer","_clearColorBuffer","_clearDepth","clearDepthBuffer","_clearDepthBuffer","_clearStencil","clearStencilBuffer","_clearStencilBuffer","cullFaces","_cullFaces","farClip","_farClip","flipFaces","_flipFaces","_fov","frustumCulling","_frustumCulling","horizontalFov","_horizontalFov","_layers","_layersSet","layersSet","nearClip","_nearClip","_node","orthoHeight","_orthoHeight","_projection","projectionMatrix","_evaluateProjectionMatrix","_projMat","_renderTarget","_scissorRect","viewMatrix","_viewMatDirty","wtm","_viewMat","aperture","_aperture","sensitivity","_sensitivity","shutter","_shutter","_xr","jitter","_enableRenderPassColorGrab","_enableRenderPassDepthGrab","renderer","_updateViewProjMat","_viewProjMatDirty","_viewProjMat","worldToScreen","worldCoord","cw","screenCoord","vpm","rh","screenToWorld","range","invView","cameraPos","_projMatSkybox","getProjectionMatrixSkybox","getExposure","ev100","getScreenSize","viewAngle","sphereViewHeight","screenViewHeight","getFrustumCorners","points","setXrProperties","properties","fogParams","shaderParams","scaleCompensatePosTransform","scaleCompensatePos","scaleCompensateRot","scaleCompensateRot2","scaleCompensateScale","scaleCompensateScaleForParent","tmpMat4","tmpQuat","position$3","invParentWtm$1","rotation$5","invParentRot","up$1","createTest","Function","findNode","children","GraphNode","_up","forward","_forward","normalMatrix","normalMat","_normalMatrix","_dirtyNormal","_notifyHierarchyStateChanged","_enabledInHierarchy","graphDepth","_graphDepth","_onHierarchyStateChanged","_frozen","_unfreezeParentToRoot","_cloneInternal","localPosition","localRotation","localScale","localEulerAngles","rotation","eulerAngles","localTransform","_dirtyLocal","_dirtyWorld","scaleCompensation","child","findOne","findByTag","queryNode","checkNode","findByPath","imax","thisArg","isDescendantOf","isAncestorOf","getLocalEulerAngles","getLocalPosition","getLocalRotation","getLocalScale","getLocalTransform","getRotation","_scale","_sync","worldScaleSign","_worldScaleSign","removeChild","reparent","insertChild","addChild","setLocalEulerAngles","_dirtifyLocal","setLocalPosition","setLocalRotation","setLocalScale","_dirtifyWorld","_dirtifyWorldInternal","setRotation","parentRot","setPositionAndRotation","parentWtm","setEulerAngles","_prepareInsertChild","_onInsertChild","addChildAndSaveTransform","wPos","wRot","_fireOnHierarchy","nameHierarchy","enabledInHierarchy","_updateGraphDepth","parentWorldScale","parentToUseScaleFrom","tmatrix","syncHierarchy","lookAt","ux","uy","uz","translate","translateLocal","rot","rotateLocal","_viewMat$1","_viewportMatrix","LightCamera","lightType","pointLightRotations","evalSpotCookieMatrix","light","cookieCamera","_spotCookieCamera","_outerConeAngle","cookieNode","cookieMatrix","rectViewport","atlasViewport","tempVec3$1","tempAreaLightSizes","areaHalfAxisWidth","areaHalfAxisHeight","TextureIndexFloat","POSITION_RANGE","DIRECTION_FLAGS","COLOR_ANGLES_BIAS","PROJ_MAT_0","ATLAS_VIEWPORT","PROJ_MAT_1","PROJ_MAT_2","PROJ_MAT_3","AREA_DATA_WIDTH","AREA_DATA_HEIGHT","COUNT","enums","prefix","lightBufferDefines","LightsBuffer","lightsTexture","setBounds","delta","boundsMin","boundsDelta","uploadTextures","lightsFloat","updateUniforms","_lightsTextureId","getSpotDirection","spot","getLightAreaSizes","addLightData","lightIndex","isSpot","hasAtlasViewport","atlasViewportAllocated","isCookie","cookiesEnabled","_cookie","isArea","areaLightsEnabled","shape","castShadows","shadowsEnabled","pos","lightProjectionMatrix","lightRenderData","getRenderData","shadowMatrix","dataFloat","dataUint","lightsUint","dataFloatStart","attenuationEnd","clusteredData","biases","_getUniformBiasValues","biasHalf","bias","normalBiasHalf","normalBias","getClusteredFlags","matData","areaSizes","maxLights","pixelsPerLightFloat","invMaxColorValue","invMaxAttenuation","tempVec3","tempMin3","tempMax3","tempBox","ClusterLight","WorldClusters","maxCellLightCount","_maxCellLightCount","_cellsDirty","cells","_cells","_cellsLimit","lightsBuffer","releaseClusterTexture","clusterTexture","registerUniforms","_clusterSkipId","_clusterMaxCellsId","_clusterWorldTextureId","_clusterTextureSizeId","_clusterTextureSizeData","_clusterBoundsMinId","_clusterBoundsMinData","_clusterBoundsDeltaId","_clusterBoundsDeltaData","_clusterCellsCountByBoundsSizeId","_clusterCellsCountByBoundsSizeData","_clusterCellsDotId","_clusterCellsDotData","_clusterCellsMaxId","_clusterCellsMaxData","updateParams","lightingParams","maxLightsPerCell","updateCells","numCells","totalPixels","clusters","Uint8ClampedArray","_usedLights","evalLightCellMinMax","clusteredLight","collectLights","lights","usedLights","runtimeLight","zeroAngleSpotlight","getBoundingBox","evaluateBounds","boundsMax","updateClusters","fill","divX","divZ","limit","pixelsPerCellCount","xStart","xEnd","yStart","yEnd","zStart","zEnd","clusterIndex","activate","reportCount","base64String","initData","binaryString","atob","blueNoiseData","BlueNoise","_next","seed","vec4","lightCubeDir","LightCube","ambientLight","weight","_direction","_intensity","lightColor","_color","namePrefix","deviceCacheBlueNoise","getBlueNoiseTexture","ShadowMap","renderTargets","shadowMap","createCubemap","_shadowResolution","_shadowType","create2dMap","createAtlas","resolution","shadowType","shadowInfo","formatName","isPcss","cached","_tempArray","_tempArray2","_viewport$3","_scissor","Slot","lightId","LightTextureAtlas","destroyShadowAtlas","destroyCookieAtlas","shadowAtlas","cookieAtlas","cookieRenderTarget","allocateShadowAtlas","existingFormat","requiredFormat","scissorOffset","shadowAtlasResolution","scissorVec","allocateCookieAtlas","allocateUniforms","_shadowAtlasTextureId","_shadowAtlasParamsId","_shadowAtlasParams","_cookieAtlasTextureId","shadowBuffer","shadowEdgePixels","subdivide","numLights","atlasSplit","gridSize","arraysEqual","every","slots","splitCount","invSize","nextLevelSplit","invSizeNext","rectNext","localLights","needsShadowAtlas","needsCookieAtlas","processLights","lightShadow","lightCookie","cookie","maxScreenSize","cookieAtlasResolution","setupSlot","faceCount","numShadowFaces","smallSize","cubeSlotsOffsets","shadowViewport","shadowScissor","assignSlot","slotReassigned","atlasSlotUpdated","atlasVersion","atlasSlotIndex","assignCount","_shadowMap","previousSlot","usedCount","blendModes","alphaSrc","id$3","Material","hasShaderChunks","_shaderChunks","shaderChunks","getShaderChunks","chunks","shaderChunksVersion","_oldChunks","fromEntries","_depthState","slopeDepthBias","_blendState","_updateTransparency","blendType","blendMode","alphaDst","_updateMeshInstanceKeys","depthTest","depthWrite","_setParameterSimple","_dirtyShader","clearVariants","uniformObject","setDefine","modified","getDefine","defaultMaterial","userId","_shaderVersion","_scene","ShadowMapCache","shadowMaps","isCubeMap","RenderPassShadowLocalNonClustered","shadowRenderer","renderFace","applyVsm","renderVsm","shadowCamera","prepareFace","setupRenderPass","ShadowRendererLocal","comp","casters","isClustered","clusteredLightingEnabled","shadowCam","shadowCamNode","lightNode","tileSize","lightTextureAtlas","texelSize","filterSize","atan","updateCameraFrustum","cullShadowCasters","visibleCasters","prepareLights","shadowLights","needsShadowRendering","buildNonClusteredRenderPasses","frameGraph","addRenderPass","RenderPassShadowDirectional","allCascadesRendering","shadowUpdateOverrides","visibleSceneAabb","shadowCamView$1","aabbPoints","_depthRange","getDepthRange","cameraViewMatrix","aabbMin","aabbMax","ShadowRendererDirectional","nearDist","generateSplitDistances","shadowDistance","cascade","numCascades","cascades","frustumNearDist","_shadowCascadeDistances","frustumFarDist","frustumPoints","cameraWorldMat","dist","lightDir","sizeRatio","scaledUp","scaledRight","scaledDir","cascadeFlag","origNumVisibleCasters","numVisibleCasters","depthRange","projectionCompensation","farDist","fraction","linearDist","logDist","cascadeDistribution","getLightRenderPass","tempSet$1","shadowCamView","shadowCamViewProj","pixelOffset","blurScissorRect","viewportMatrix","gauss","sigma","exp","gaussWeights","kernelSize","halfWidth","ShadowRenderer","createShadowCamera","isVsm","isPcf","_cullShadowCastersInternal","layerList","_lightsSet","shadowCasters","sortCompareShader","drawCallA","drawCallB","keyA","keyB","setupRenderState","useShadowSampler","_isPcf","blendStateNoWrite","blendStateWrite","shadowDepthState","dispatchUniforms","dispatchViewPos","shadowMapLightRadiusId","_shadowMatrixPalette","getShadowPass","shadowPassInfo","shadowPassCache","shadowPassName","submitCasters","shadowPass","flipFactor","setBaseConstants","setSkinning","setupCullMode","shadowShader","setVertexBuffers","setMorphing","setMeshInstanceMatrices","setupMeshUniformBuffers","style","_shadowDrawCalls","_instancedDrawCalls","needs","shadowUpdateMode","_shadowMapUpdates","getLightRenderData","clearRenderTarget","renderTargetIndex","setCameraUniforms","setupViewUniformBuffers","viewBindGroups","setupViewport","clearView","_isVsm","_vsmBlurSize","applyVsmBlur","getVsmBlurShader","blurMode","blurVsmShader","blurShader","blurVsmWeights","origShadowMap","tempShadowMap","shadowMapCache","tempRt","vsmBlurMode","sourceId","pixelOffsetId","weightId","initViewBindGroupFormat","tempClusterArray","WorldClustersAllocator","_empty","_allocated","cluster","empty","_clusters","passCount","renderActions","ra","lightClusters","hasClusteredLights","getLightIdHash","existingRenderAction","lighting","renderAction","clusteredLightsSet","_viewport$2","_invViewProjMatrices","RenderPassCookieRenderer","_quadRenderer2D","_quadRendererCube","_evtDeviceRestored","onDeviceRestored","_forceCopy","filteredLights","_filteredLights","initInvViewProjMatrices","projMat","viewMat","quadRenderer2D","quadRendererCube","renderTargetWidth","_cubeSlotsOffsets","blitTextureId","invViewProjId","RenderPassShadowLocalClustered","shadowRendererLocal","RenderPassUpdateClustered","cookiesRenderPass","shadowRenderPass","worldClustersAllocator","viewInvMat","viewMat3","tempSphere$1","_flipYMat","_tempLightSet","_tempLayerSet","_dynamicBindGroup","_fixProjRangeMat","_haltonSequence","_tempProjMat0","_tempProjMat1","_tempProjMat2","_tempProjMat3","_tempProjMat4","_tempProjMat5","_tempSet","_tempMeshInstances","_tempMeshInstancesSkinned","Renderer","_shadowRendererLocal","_shadowRendererDirectional","_renderPassUpdateClustered","gsplatDirector","pixelWidth","pixelHeight","viewList","session","views","updateTransforms","projViewOffMat","projMatSkybox","targetWidth","targetHeight","blueNoiseJitterVersion","blueNoise","blueNoiseJitterVec","jitterVec","blueNoiseJitterData","blueNoiseJitterId","projId","projSkyboxId","viewInvId","viewId","viewId3","viewProjId","flipYId","tbnBasis","nearClipId","farClipId","cameraParams","cameraParamsId","exposureId","physicalUnits","exposure","setCamera","forceWrite","setDepthWrite","_clearOptions","drawCall","twoSidedLightingNegScaleFactorId","viewOffMat","opacityMap","opacityMapId","alphaTestId","updateCpuSkinMatrices","drawCalls","drawCallsCount","si","updateGpuSkinMatrices","updateMorphing","morphInst","updateGSplats","gpuUpdate","prepareRendering","vertexBufferIds","morphPositionTex","texturePositions","morphNormalTex","textureNormals","morphTexParams","_textureParams","_skinDrawCalls","boneTextureId","vp","viewPos","viewPosId","setupViewUniforms","viewInvOffMat","positionData","viewIndexId","viewCount","bg","viewBindGroup","meshBindGroup","meshUniformBuffer","setNormalMatrix","modelMatrix","modelMatrixId","normalMatrixId","culledInstances","opaque","doCull","processingMeshInstances","cameras","stats","_stats","_lights","cullLights","getBoundingSphere","usePhysicalUnits","screenSize","cullShadowmaps","cameraDirShadowLights","cameraComponent","lightList","cameraLayers","cameraLayer","layerDirLights","splitLights","cullComposition","numCameras","_camerasRendered","layerIds","getCulledInstances","updateLightTextureAtlas","updateShaders","onlyLitShaders","useLighting","emitter","updateFrameUniforms","blueNoiseTextureId","beginFrame","layerCount","meshInst","lightCount","updateLayerComposition","shaderVersion","_update","clustersDebugRendered","dirLightShadows","_skinTime","_morphTime","_cullTime","_shadowMapTime","_lightClustersTime","_layerCompositionUpdateTime","_numDrawCallsCulled","_lightClusters","_gsplatCount","lightCube","constantLightCube","RenderAction","setupClears","triggerPostprocess","firstCameraUse","lastCameraUse","useCameraPasses","RenderPassForward","rendersAnything","addRenderAction","addLayer","autoClears","firstRa","addLayers","composition","startIndex","firstLayerClears","lastLayerId","lastLayerIsTransparent","subLayerList","isTransparent","renderedByCamera","updateDirectionalShadows","cameraComp","shadowDirLights","updateClears","noDepthClear","layerComposition","isEnabled","renderRenderAction","firstRenderAction","originalGammaCorrection","originalToneMapping","renderForwardLayer","RenderPassPostprocessing","onPostprocessing","_noLights","tmpColor$1","_drawCallList","shaderInstances","isNewMaterial","lightMaskChanged","vogelDiskPrecalculationSamples","vogelSpherePrecalculationSamples","ForwardRenderer","dispatchGlobalLights","ambientUniform","ambientColor","ambientLuminance","ambientId","skyboxIntensityId","skyboxLuminance","skyboxIntensity","cubeMapRotationMatrixId","_skyboxRotationMat3","_resolveLight","lightColorId","lightDirId","lightShadowMapId","lightShadowMatrixId","lightShadowParamsId","lightShadowIntensity","lightShadowSearchAreaId","lightRadiusId","lightPos","lightPosId","lightWidth","lightWidthId","lightHeight","lightHeightId","lightInAngleId","lightOutAngleId","lightCookieId","lightCookieIntId","lightCookieMatrixId","lightCookieOffsetId","lightCameraParamsId","lightSoftShadowParamsId","shadowMatrixPaletteId","shadowCascadeDistancesId","shadowCascadeCountId","shadowCascadeBlendId","setLTCDirectionalLight","cnt","campos","hWidth","hHeight","dispatchDirectLights","dirs","directional","_colorLinear","cascadeBlend","shadowIntensity","_softShadowParams","shadowRT","penumbraSize","_shadowCameraParams","_shadowRenderParams","setLTCPositionalLight","dispatchOmniLight","omni","pixelsPerMeter","cookieIntensity","dispatchSpotLight","_innerConeAngleCos","_outerConeAngleCos","fovRatio","_cookieTransform","_cookieTransformUniform","_cookieOffsetUniform","_cookieOffset","dispatchLocalLights","usedDirLights","omnis","numOmnis","spts","numSpts","renderForwardPrepareMaterials","addCall","getLightHash","prevMaterial","prevObjDefs","prevLightMask","lightMask","_materialSwitches","renderForwardInternal","preparedCalls","drawCallback","preparedCallsCount","newMaterial","_forwardDrawCalls","renderForward","allDrawCalls","sortVisible","onPreRenderLayer","requiresLightCube","debugLayer","_activeCamera","setFogConstants","forwardDrawCalls","fogUniform","fogColor","fogColorId","fogStartId","fogEndId","fogDensityId","density","setSceneConstants","_screenSize","screenSizeId","pcssDiskSamplesId","pcssDiskSamples","pcssSphereSamplesId","pcssSphereSamples","buildFrameGraph","newStart","_renderActions","isDepthLayer","isGrabPass","renderSceneColorMap","renderSceneDepthMap","nextRenderAction","isNextLayerDepth","isNextLayerGrabPass","nextNeedDirShadows","isDepthOnly","addMainRenderPass","colorGrabPass","endIndex","_updateSkyMesh","_depthMapTime","_forwardTime","_sortTime","layerCounter","lightKeys","_tempMaterials","sortManual","sortMaterialMesh","sortBackToFront","sortFrontToBack","sortCallbacks","CulledInstances","Layer","_dirtyComposition","gsplatPlacementsDirty","incrementCounter","decrementCounter","_clusteredLightsSet","_refCounter","addGSplatPlacement","placement","gsplatPlacements","removeGSplatPlacement","skipShadowCasters","destMeshInstances","destMeshInstancesSet","meshInstancesSet","addShadowCasters","sceneShaderVer","removeShadowCasters","shadowCastersSet","clearMeshInstances","markLightsDirty","_lightHashDirty","_lightIdHashDirty","_splitLightsDirty","hasLight","addLight","removeLight","clearLights","removeLayer","_splitLights","evaluateLightHash","directionalLights","useIds","isLocalLight","_lightHash","_lightIdHash","addCamera","camerasSet","removeCamera","clearCameras","_calculateSortDistances","camPos","camFwd","px","py","pz","fx","fy","fz","zDist","meshPos","instances","_visibleInstances","sortMode","transparentSortMode","opaqueSortMode","cameraNode","sortPos","sortDir","customCalculateSortValues","customSortCallback","WeakMap","cmpPriority","priority","sortPriority","LayerComposition","destroyRenderActions","renderActionCount","addDummyRenderAction","cameraFirstRenderAction","cameraFirstRenderActionIndex","lastRenderAction","postProcessMarked","isLayerEnabled","subLayerEnabled","disablePostEffectsLayer","postEffectsEnabled","propagateRenderTarget","_logRenderActions","getNextRenderAction","renderActionIndex","needsCameraClear","needsLayerClear","fromCamera","thisCamera","_isLayerAdded","layerIdMap","_isSublayerAdded","layerTransparentIndexMap","layerOpaqueIndexMap","_opaqueOrder","_transparentOrder","_updateLayerMaps","_updateOpaqueOrder","_updateTransparentOrder","pushOpaque","insertOpaque","removeOpaque","pushTransparent","insertTransparent","removeTransparent","getOpaqueIndex","getTransparentIndex","layerNameMap","subLayerIndexMap","getLayerByName","_sortLayersDescending","layersA","layersB","order","topLayerA","topLayerB","sortTransparentLayers","sortOpaqueLayers","tmpVec","tmpBiases","tmpColor","chanId","lightTypes","directionalCascades","channelMap","id$2","LightRenderData","Light","_destroyShadowMap","releaseRenderData","_renderData","shadowSamples","shadowBlockerSamples","shadowBias","_shadowBias","_updateShadowBias","_cascadeBlend","_mask","updateClusteredFlags","stype","_shape","_usePhysicalUnits","_updateLinearColor","layersDirty","_castShadows","_shadowIntensity","bakeShadows","shadowResolution","vsmBlurSize","normalOffsetBias","_normalOffsetBias","falloffMode","_falloffMode","innerConeAngle","_innerConeAngle","updateClusterData","outerConeAngle","_updateOuterAngle","_penumbraSize","penumbraFalloff","radAngle","_outerConeAngleSin","affectSpecularity","_affectSpecularity","luminance","_luminance","_cookieMatrix","_atlasViewport","cookieFalloff","_cookieFalloff","cookieChannel","_cookieChannel","chr","addLen","cookieTransform","_cookieTransformSet","cookieOffset","_cookieOffsetSet","xformNew","rd","clusteredLighting","setColor","attenuationStart","vsmBias","getLightUnitConversion","outerAngle","innerAngle","falloffEnd","falloffStart","getColor","cosAngle","box","scl","colorLinear","isDynamic","isLightmapped","clusteredFlags","useCookie","updateColor","updateAngles","clusteredData16","isStatic","bakeDir","bakeNumSamples","bakeArea","LightingParams","applySettings","lightingShadowsEnabled","lightingCookiesEnabled","lightingAreaLightsEnabled","lightingShadowAtlasResolution","lightingCookieAtlasResolution","lightingMaxLightsPerCell","lightingShadowType","lightingCells","_maxLightsPerCell","_cookieAtlasResolution","_maxTextureSize","_shadowAtlasResolution","_dirtyLightsFnc","_cookiesEnabled","_supportsAreaLights","_areaLightsEnabled","_shadowsEnabled","dirtyLightsFnc","MorphInstance","rtPositions","rtNormals","_getWeightIndex","_weightMap","getWeight","_weights","setWeight","_createShader","outputType","_updateTextureRenderTarget","activeCount","isPos","setAabbUniforms","morphTextureId","targetsTexturePositions","targetsTextureNormals","countId","morphFactor","_shaderMorphWeights","morphIndex","_shaderMorphIndex","_updateTextureMorph","zeroTextures","aabbSizeId","_aabbSize","_aabbNrmSize","aabbMinId","_aabbMin","_aabbNrmMin","weights","maxNumTargets","defaultWeight","createRT","textureVar","_createTexture","_renderTextureFormat","morphTextureWidth","morphTextureHeight","Model","getGraph","graph","setGraph","getCameras","setCameras","getLights","setLights","getMaterials","materials","srcNodes","cloneNodes","_duplicate","newNode","cloneGraph","cloneMeshInstances","cloneSkinInstances","cloneMorphInstances","skinInstances","cloneSkinInstance","morphInstances","cloneMorphInstance","nodeIndex","cloneMeshInstance","skinInstanceIndex","morphInstanceIndex","_shadersVersion","_immutable","Morph","targetAabb","_morphPositions","_morphNormals","_initTextureBased","_postInit","_findSparseSet","deltaArrays","ids","usedDataIndices","freeIndex","dataCount","vertexUsed","deltaInfos","deltaNormals","halfFloat","_textureFormat","texturesDataPositions","texturesDataNormals","textureDataSize","dstIndex","formatDesc","_updateMorphFlags","preferHighPrecision","renderableHalf","renderableFloat","MorphTarget","_defaultWeight","preserveData","nonUniformScale","uniformScale","particleTexChannels$1","rotMat","rotMatInv","randomPosTformed","randomPos","rndFactor3Vec","particlePosPrev","velocityVec","localVelocityVec","velocityVec2","localVelocityVec2","radialVelocityVec","particlePos","particleFinalPos","moveDirVec","tmpVec3$1","frac","saturate$1","glMod","encodeFloatRGBA","encX","encY","encZ","encW","encodeFloatRG","ParticleCPUUpdater","calcSpawnPosition","particleTex","spawnMatrix","extentsInnerRatioUniform","emitterPos","_emitter","rX","rY","rZ","rW","useCpu","numParticlesPot","emitterShape","edgeX","edgeY","edgeZ","sign","localSpace","spawnBoundsSphereInnerRatio","emitterRadius","emitterRadiusInner","particleRate","rate","rate2","startSpawnTime","pack8","packX","worldBounds","worldBoundsSize","packY","packZ","packA","startAngle","startAngle2","rg0","ba0","rg1","ba1","maxNegLife","lifetime","numParticles","maxPosLife","rgba3","vbToSort","isOnStop","fullMat","posCam","vertSize","useMesh","cf","cc","rotSpeed","rotSpeed2","scale2","alpha2","radialSpeed","radialSpeed2","precision1","vbCPU","numParticleVerts","rndFactor","particleLifetime","life","nlife","alphaDiv","respawn","particleEnabled","qRotSpeed","qRotSpeed2","qScale","qScale2","qAlpha","qAlpha2","qRadialSpeed","qRadialSpeed2","qLocalVelocity","qLocalVelocity2","qVelocity","qVelocity2","initialVelocity","wrap","wrapBounds","particleDistance","vbOffset","quadX","quadY","quadZ","alignToMotion","vbStride","vbOld","p2","spawnMatrix3","emitterMatrix3","emitterMatrix3Inv","ParticleGPUUpdater","_setInputBounds","inBoundsSizeUniform","prevWorldBoundsSize","constantInBoundsSize","inBoundsCenterUniform","prevWorldBoundsCenter","constantInBoundsCenter","randomize","frameRandomUniform","constantRadialSpeedDivMult","constantGraphSampleSize","constantGraphNumSamples","constantNumParticles","constantNumParticlesPot","constantInternalTex0","internalTex0","constantInternalTex1","internalTex1","constantInternalTex2","internalTex2","constantInternalTex3","internalTex3","emitterScale","worldBoundsMulUniform","worldBoundsMul","constantOutBoundsMul","worldBoundsAddUniform","worldBoundsAdd","constantOutBoundsAdd","maxVel","constantMaxVel","emitterMatrix","constantSpawnBounds","constantSpawnPosInnerRatio","constantSpawnBoundsSphere","constantSpawnBoundsSphereInnerRatio","constantInitialVelocity","emitterPosUniform","constantEmitterPos","constantFrameRandom","constantDelta","constantRate","constantRateDiv","constantStartAngle","constantStartAngle2","constantSeed","constantLifetime","emitterScaleUniform","constantEmitterScale","constantEmitterMatrix","constantEmitterMatrixInv","constantLocalVelocityDivMult","localVelocityUMax","constantVelocityDivMult","velocityUMax","constantRotSpeedDivMult","rotSpeedUMax","texIN","swapTex","particleTexOUT","particleTexIN","beenReset","particleTexStart","texOUT","constantParticleTexIN","rtParticleTexIN","rtParticleTexOUT","shaderParticleUpdateRespawn","shaderParticleUpdateNoRespawn","shaderParticleUpdateOnStop","gd","constantParticleTexOUT","constantFaceTangent","constantFaceBinorm","normalTypeNames","ShaderGeneratorParticle","createVertexDefines","vDefines","meshUv","animTex","soft","stretch","customFace","animTexLoop","particle_vertexData","particle_uv","particle_vertexData2","particle_vertexData3","particle_vertexData4","particle_vertexData5","createFragmentDefines","fDefines","halflambert","engineChunks","executionDefine","particle","ParticleMaterial","normalMap","halfLambert","depthSoftening","toneMap","noFog","inTools","_isAnimated","animLoop","particleVerts","pixelData","mult8Bit","mipFilter","saturate","default0Curve","default1Curve","default0Curve3","default1Curve3","particleTexHeight","particleTexChannels","tmpVec3","setPropertyTarget","setPropertyOptions","setProperty","pName","defaultVal","pack3NFloats","packed","packTextureXYZ_NXYZ","qXYZ","qXYZ2","packTextureRGBA","qRGB","qA","packTexture5Floats","qB","qC","qD","qE","packTexture2Floats","calcEndTime","interval","subGraph","A","B","maxUnsignedGraphValue","outUMax","chans","normalizeGraph","uMax","divGraphFrom2Curves","curve1","curve2","particleEmitterDeviceCache","ParticleEmitter","defaultParamTexture","centerPoint","dtex","xgrad","ygrad","onChangeCamera","resetMaterial","calculateBoundsMad","calculateWorldBounds","recalculateLocalBounds","emitterExtents","prevEmitterExtents","prevEmitterRadius","calculateLocalBounds","nodeWT","worldBoundsNoTrail","localBounds","worldBoundsTrail","simTimeTotal","timeToSwitchBounds","resetWorldBounds","maxR","maxScale","stepWeight","wVels","lVels","accumX","accumY","accumZ","accumR","accumW","rebuild","colorMap","spawnBounds","forceCpuParticles","wasVisible","_destroyResources","rebuildGraphs","iSort","_gpuUpdater","emitterExtentsInner","_cpuUpdater","shaderUniqueId","shaderOptions","numParticleIndices","_allocate","_createMaterial","_setMaterialTextures","resetTime","addTime","preWarm","prewarm","animNumFrames","animTilesX","animTilesY","localVelocityGraph","velocityGraph","qColor","colorGraph","rotationSpeedGraph","scaleGraph","alphaGraph","radialSpeedGraph","localVelocityGraph2","velocityGraph2","qColor2","colorGraph2","rotationSpeedGraph2","scaleGraph2","alphaGraph2","radialSpeedGraph2","colorUMax","scaleUMax","alphaUMax","radialSpeedUMax","qLocalVelocityDiv","qVelocityDiv","qColorDiv","qRotSpeedDiv","qScaleDiv","qAlphaDiv","qRadialSpeedDiv","umax","umax2","lumax","lumax2","rumax","rumax2","lmaxVel","maxRad","colorParam","animTilesParams","animParams","animIndexParams","wrapBoundsUniform","_compParticleFaceParams","tangent","binormal","particleNormal","emitterMat","getVertexInfo","psysVertCount","psysIndexCount","meshData","texCoordOffset","elem","vertID","vert","baseIndex","origLoop","lifetimeFraction","iterations","stepDelta","endTime","finishFrame","tilesParams","animStartFrame","animSpeed","animNumAnimations","animIndex","randomizeAnimIndex","onFinished","_addTimeTime","fixedTimeStep","maxSubSteps","simTime","GSplatParams","colorizeLod","_colorizeLod","lodBehindPenalty","_lodBehindPenalty","lodRangeMin","_lodRangeMin","lodRangeMax","_lodRangeMax","lodUnderfillLimit","_lodUnderfillLimit","debugAabbs","radialSorting","debugNodeAabbs","lodUpdateDistance","lodUpdateAngle","ShaderGeneratorShader","shaderDesc","vsHashGLSL","fsHashGLSL","vsHashWGSL","fsHashWGSL","chunksKey","useInstancing","useMorphPosition","useMorphNormal","useMorphTextureBasedInt","createAttributesDefinition","definitionOptions","srcAttributes","morph_vertex_id","createVertexDefinition","sharedIncludes","createFragmentDefinition","shaderGeneratorShader","ShaderMaterial","_shaderDesc","language","decodeTable","encodeTable","ChunkUtils","decodeFunc","encodeFunc","calculateNormals","triangleCount","p3","p1p2","p1p3","faceNormal","i3","invLen","calculateTangents","v3","w1","w2","w3","sdir","tdir","tan1","tan2","x1","y1","z1","t1","area","ndott","Geometry","primitiveUv1Padding$1","primitiveUv1PaddingScale$1","BoxGeometry","he","ws","widthSegments","ls","lengthSegments","hs","heightSegments","yOffset","minY","maxY","corners","faceAxes","faceNormals","sides","TOP","BOTTOM","vcounter","generateFace","side","uSegments","vSegments","SphereGeometry","latitudeBands","longitudeBands","lat","theta","sinTheta","cosTheta","lon","phi","sinPhi","cosPhi","DomeGeometry","bottomLimit","curvatureRadius","curvatureRadiusSq","SkyGeometry","dome","infinite","geom","SkyMesh","skyLayer","_depthWrite","aPosition","skyboxHighlightMultiplier","skyboxMip","Sky","skyType","skyMeshPosition","skyMeshRotation","skyMeshScale","skyCenter","_center","updateSkyMesh","skyMesh","_getSkyboxTex","resetSkyMesh","centerArray","projectedSkydomeCenterId","identityGraphNode","ImmediateBatch","addLines","destPos","destCol","col","addLinesArrays","onPreRender","visibleList","ImmediateBatches","getBatch","tempPoints","Immediate","createMaterial","materialDepth","_materialDepth","materialNoDepth","_materialNoDepth","batches","batchesMap","allBatches","getShaderDesc","shaderDescs","getTextureShaderDesc","getUnfilterableTextureShaderDesc","getDepthTextureShaderDesc","getQuadMesh","quadMesh","drawMesh","graphNode","getGraphNode","layerMeshInstances","drawWireAlignedBox","mulPoint","drawWireSphere","numSegments","sin0","cos0","sin1","cos1","batchLayer","updatedLayers","onPostRender","textureShader","depthTextureShader","cubeLocalPos","cubeWorldPos","_goldenAngle","circlePoint","circlePointDeterministic","spherePointDeterministic","radicalInverse","getProjectionName","packFloat32ToRGBA8","packSamples","hemisphereSamplePhong","dstVec","specularPower","hemisphereSampleLambert","hemisphereSampleGGX","D_GGX","NoH","linearRoughness","generatePhongSamples","H","generateLambertSamples","sourceTotalPixels","pixelsPerSample","pdf","requiredSamplesGGX","getRequiredSamplesGGX","table","generateGGXSamples","roughness","L","N","requiredSamples","createSamplesTex","packedSamples","SimpleCache","destroyContent","missFunc","samplesCache","deviceCache$1","getCachedTexture","getSamplesFnc","generateLambertSamplesTex","generatePhongSamplesTex","generateGGXSamplesTex","reprojectTexture","seamPixels","innerWidth","innerHeight","funcNames","distribution","processFunc","prefilterSamples","sourceFunc","targetFunc","shaderKey","constantSource","constantParams","uvModParam","samplesTex","calcLevels","supportsFloat16","supportsFloat32","lightingSourcePixelFormat","lightingPixelFormat","EnvLighting","generateSkyboxCubemap","generateLightingSource","generateAtlas","numReflectionSamples","numAmbientSamples","generatePrefilteredAtlas","sources","legacyAmbient","FogParams","Scene","defaultDrawLayer","ambientBakeNumSamples","_ambientBakeNumSamples","ambientBakeSpherePart","_ambientBakeSpherePart","_clusteredLightingEnabled","envAtlas","_envAtlas","_prefilteredCubemaps","_internalEnvAtlas","_resetSkyMesh","prev","sky","_sky","_lightingParams","gsplat","_gsplatParams","_fogParams","lightmapFilterRange","_lightmapFilterRange","lightmapFilterSmoothness","_lightmapFilterSmoothness","prefilteredCubemaps","cubemaps","complete","skybox","_skyboxCubeMap","_skyboxIntensity","_skyboxLuminance","_skyboxMip","_skyboxHighlightMultiplier","skyboxRotation","_skyboxRotation","_skyboxRotationMat4","_skyboxRotationShaderInclude","drawLine","drawLines","drawLineArrays","settings","physics","_gravity","gravity","global_ambient","fog_color","fog_start","fog_end","fog_density","lightmapSizeMultiplier","lightmapMaxResolution","lightmapMode","setting","skyboxMapping","setSkybox","lightmapPixelFormat","lightmapHDR","ambientBake","ambientBakeOcclusionBrightness","ambientBakeOcclusionContrast","lightmapFilterEnabled","forcePassThroughSpecular","dynamicLights","bakedLights","updateShadersTime","EVENT_SETLAYERS","EVENT_SETSKYBOX","Skin","ibp","spriteNormals","spriteIndices","Sprite","frameKeys","_frameKeys","_atlas","_updatingProperties","_meshesDirty","_createMeshes","atlas","_onSetFrames","_onFrameChanged","_onFrameRemoved","pixelsPerUnit","_pixelsPerUnit","renderMode","meshes","_meshes","createMeshFunc","_create9SliceMesh","_createSimpleMesh","frame","frames","texWidth","texHeight","hp","pivot","lu","bv","ru","tv","frameKey","TextureAtlas","_texture","_frames","setFrame","border","removeFrame","AnimationKey","AnimationNode","_keys","Animation","getNode","_nodeDict","addNode","_nodes","InterpolatedKey","getTarget","_targetNode","setTarget","_written","_keyFrames","_quat","_pos","Skeleton","animation","_animation","_time","numNodes","_interpolatedKeys","nodeName","_currKeyIndices","updateGraph","looping","interpKey","_interpolatedKeyDict","foundKey","currKeyIndex","k1","k2","skel1","skel2","key1","key2","dstKey","addInterpolatedKeys","_viewport$1","PostEffect","inputTarget","outputTarget","drawQuad","needsDepthBuffer","quadVertexShader","RenderPassShaderQuad","quadRender","_shader","LitShaderOptions","separateAmbient","nineSlicedMode","clusteredLightingCookiesEnabled","clusteredLightingShadowsEnabled","clusteredLightingShadowType","clusteredLightingAreaLightsEnabled","vertexColors","lightMapEnabled","dirLightMapEnabled","useHeights","useNormals","useClearCoatNormals","useAo","diffuseMapEnabled","pixelSnap","ambientSH","ssao","twoSidedLighting","occludeDirect","occludeSpecular","occludeSpecularFloat","useMsdf","msdfTextAttribute","opacityFadesSpecular","opacityDither","opacityShadowDither","cubeMapProjection","useSpecular","useSpecularityFactor","enableGGXSpecular","fresnelModel","useRefraction","useClearCoat","useSheen","useIridescence","useMetalness","useDynamicRefraction","dispersion","reflectionSource","reflectionEncoding","reflectionCubemapEncoding","ambientSource","ambientEncoding","useCubeMapRotation","lightMapWithoutAmbient","noShadow","lightMaskDynamic","userAttributes","linearDepth","shadowCatcher","LitMaterialOptions","litOptions","LitMaterialOptionsBuilder","renderParams","updateSharedOptions","updateMaterialOptions","updateEnvOptions","updateLightingOptions","occludeSpecularIntensity","hasSpecular","hasSpecularityFactor","ggxSpecular","hasRefraction","hasClearCoat","hasSheen","hasIrridescence","hasMetalness","dynamicRefraction","hasLighting","dirLightMap","hasHeights","hasNormals","hasClearCoatNormals","hasAo","hasDiffuseMap","useFog","useTonemap","useSkybox","hasSkybox","lightsFiltered","lType","builtinAttributes","LitShader","fDefineSet","condition","generateVertexShader","useUv","useUnmodifiedUv","mapTransforms","needsNormal","languageChunks","instance_line1","instance_line2","instance_line3","instance_line4","maxUvSets","numTransforms","transformDone","mapTransform","uv","checkId","varName","vertex_outlineParameters","vertex_shadowParameters","varyingsCode","_setupLightingDefines","hasAreaLights","clusteredShadowInfo","lightShape","prepareForwardPass","lightingUv","clusteredAreaLights","addAmbient","hasTBN","reflections","needsSceneColor","needsScreenSize","needsTransforms","prepareShadowPass","usePerspectiveDepth","generateFragmentShader","frontendDecl","frontendCode","allowWGSL","userChunks","userChunkMap","chunk","chunkName","LitOptionsUtils","generateLightsKey","dummyUvs","ShaderGeneratorLit","glslHash","shaderChunkGLSL","wgslHash","shaderChunkWGSL","loHash","uvOptions","dummy","usedUvs","litShader","tag","usedUvSets","lit","LitMaterial","StandardMaterialOptions","forceUv1","specularTint","metalnessTint","glossTint","emissiveEncoding","lightMapEncoding","packedNormal","normalDetailPackedNormal","clearCoatPackedNormal","glossInvert","sheenGlossInvert","clearCoatGlossInvert","useAO","_matTex2D","buildPropertiesList","ShaderGeneratorStandard","props","optionsContextMin","propsMin","optionsContext","_getUvSourceExpression","transformPropName","uVPropName","transformId","uvChannel","isMainPass","heightMap","_validateMapChunk","propName","_addMapDefines","mapPropName","propNameCaps","identifierPropName","channelPropName","vertexColorChannelPropName","tintPropName","vertexColorPropName","detailModePropName","invertName","tintOption","vertexColorOption","textureOption","textureIdentifier","detailModeOption","chunkCode","textureId","alias","textureDecode","_correctChannel","chan","createVertexShader","mapName","colorChannelName","channelName","transformName","uvName","uvSet","prepareFragmentDefines","lightMap","lightVertexColor","useSpecularColor","aoMap","aoVertexColor","isForwardPass","textureMapping","clearCoatNormalMap","baseName","diffuseDetail","diffuseDetailEncoding","diffuseEncoding","sheenEncoding","specularEncoding","aoDetail","standard","notWhite","notBlack","StandardMaterialOptionsBuilder","updateMinRef","stdMat","_updateSharedOptions","_updateMinOptions","_updateUVOptions","updateRef","_updateEnvOptions","_updateMaterialOptions","_updateLightOptions","minimalOptions","hasVcolor","_mapXForms","uniqueTextureMap","_updateTexOptions","diffuseMap","isOpacity","mname","vname","vcname","cname","tname","uname","iname","allow","mapId","_getMapTransformID","getUniform","isPrepass","specularMap","sphereMap","cubeMap","specular","specularityFactor","clearCoat","useMetalnessSpecularColor","specularVertexColor","specularityFactorTint","specularityFactorMap","isPackedNormalMap","equalish","metalness","diffuseDetailMap","emissiveMap","refractionTint","refraction","refractionIndexTint","refractionIndex","thicknessTint","thickness","sheenMap","aoMapUv","aoUvSet","aoDetailMap","normalDetail","normalDetailMap","diffuseDetailMode","aoDetailMode","clearCoatGloss","iorTint","iridescenceTint","iridescence","msdfMap","refractionMap","usingSceneEnv","lightMapChannel","lightMapUv","lightMapTransform","xform","xforms","_textureParameter","vertexColor","standardMaterialParameterTypes","mappingFormat","_engine","ambient","aoIntensity","diffuse","anisotropyIntensity","anisotropyRotation","shininess","gloss","clearCoatBumpiness","sheen","sheenGloss","emissive","emissiveIntensity","bumpiness","normalDetailMapBumpiness","heightMapFactor","alphaFade","opacity","reflectivity","attenuation","attenuationDistance","cubeMapProjectionBox","iridescenceThicknessTint","iridescenceThicknessMin","iridescenceThicknessMax","iridescenceRefractionIndex","standardMaterialTextureParameters","standardMaterialCubemapParameters","standardMaterialRemovedParameters","aoMapVertexColor","diffuseMapTint","diffuseMapVertexColor","emissiveMapTint","emissiveMapVertexColor","glossMapVertexColor","metalnessMapVertexColor","opacityMapVertexColor","specularAntialias","specularMapTint","specularMapVertexColor","ambientTint","emissiveTint","diffuseTint","sheenTint","conserveEnergy","useGamma","useGammaTonemap","sheenGlossTint","_props","_uniforms","_params","_tempColor$3","StandardMaterial","_uniformCache","_setParameter","_setParameters","_processParameters","paramsName","prevParams","_updateMap","_allocUniform","allocFunc","metalnessMap","updateEnvUniforms","hasLocalEnvOverride","shaderOptBuilder","onUpdateShader","asset","_assetReferences","_unbind","_activeParams","_activeLightingParams","TEXTURE_PARAMETERS","CUBEMAP_PARAMETERS","defineUniform","getUniformFunc","definePropInternal","constructorFunc","setterFunc","getterFunc","defineValueProp","internalName","dirtyShaderFunc","oldValue","defaultValue","defineAggProp","defineProp","_defineTex2D","mapTiling","mapOffset","mapRotation","tiling","cr","sr","uniform0","uniform1","_defineColor","_defineFloat","_defineObject","_defineFlag","_defineMaterialProps","bboxMin","minUniform","bboxMax","maxUniform","primitiveUv1Padding","primitiveUv1PaddingScale","ConeBaseGeometry","baseRadius","peakRadius","capSegments","roundedCaps","bottomToTop","norm","_v","third","fourth","capOffset","CapsuleGeometry","ConeGeometry","CylinderGeometry","PlaneGeometry","TorusGeometry","rc","tubeRadius","ringRadius","sectorAngle","segments","ProgramLibrary","clearCache","generator","_generators","isRegistered","generateShaderDefinition","def","definitionsCache","lcopy","storeNewProgram","_precached","processedCache","userMaterialId","generationKeyString","generationKey","processingKeyString","processingKey","totalKey","processedShader","generatedShaderDef","passName","opt","defaultMat","_getDefaultStdMatOptions","_programsCollection","dumpPrograms","text","display","click","_isClearingCache","removeFromCache","cachedShader","_defaultStdMatOptionMin","_defaultStdMatOption","precompile","standardMaterial","defaultCameraShaderParams","mat4$1","quat$2","aabb2","debugColor","SH_C0$2","SplatIterator","gsplatData","getProp","cg","sigmoid","calcSplatMat","GSplatData","calcSplatAabb","elementName","getElement","addProp","createIter","calcAabb","pred","mx","my","mz","Mx","My","Mz","numSplats","scaleVal","calcAabbExact","iter","getCenters","calcFocalPoint","renderWireframeBounds","worldMat","isCompressed","shBands","numProps","sizes","calcMortonOrder","calcMinMax","encodeMorton3","Part1By2","minX","maxX","minZ","maxZ","sizeX","sizeY","sizeZ","codes","reorder","getStorage","returnStorage","property","reorderData","comments","glslGsplatCopyToWorkBufferPS","wgslGsplatCopyToWorkBufferPS","id$1","tempMap","WorkBufferRenderInfo","clonedDefines","GSplatResourceBase","instanceIndices","workBufferRenderInfos","getWorkBufferRenderInfo","useIntervals","configureMaterialDefines","configureMaterial","createMesh","splatInstanceSize","instanceSize","meshPositions","meshIndices","createInstanceIndices","splatCount","numSplatInstances","evalTextureSize","centers","getSHData","numCoeffs","GSplatResource","colorTexture","transformATexture","transformBTexture","sh1to3Texture","sh4to7Texture","sh8to11Texture","sh12to15Texture","updateColorData","SH_C0","updateTransformData","dataA","dataAFloat32","dataB","updateSHData","sh1to3Data","sh4to7Data","sh8to11Data","sh12to15Data","t11","t10","float32","uint32","gsplatSogsColorGLSL","gsplatSogsColorWGSL","resolve$1","CustomRenderPass","executeCallback","invModelMat$1","dir$3","GSplatResolveSH","modelMat","prevDir","updateMode","sh_centroids","meta","centroids","shN_mins","shN","mins","shN_maxs","maxs","SortWorker","myself","require","parentPort","cameraPosition","cameraDirection","forceUpdate","lastCameraPosition","lastCameraDirection","boundMin","boundMax","distances","countBuffer","numBins","binCount","binBase","binDivider","binarySearch","compare_fn","cmp","minDist","maxDist","compareBits","bucketCount","numChunks","binMin","binMax","binTotal","binRange","ii","bin","sortKey","destIndex","cameraDist","findZero","postMessage","msgData","chunksSrc","validX","validY","validZ","GSplatSorter","terminate","orderTexture","orderBuffer","transfer","setMapping","messageHandler","newOrder","oldOrder","workerSource","eval","createObjectURL","Blob","glslGsplatSogsReorderPS","wgslGsplatSogsReorderPS","glslGsplatSogsReorderSh","gsplatPackingPS$1","wgslGsplatSogsReorderSH","gsplatPackingPS","glslSogsCentersPS","wgslSogsCentersPS","SH_C0$1","readImageDataAsync","GSplatSogsIterator","means","scales","sh0","means_l_data","means_l","means_u_data","means_u","quats_data","quats","scales_data","sh0_data","sh_labels_data","sh_labels","sh_centroids_data","coeffs","codebook","GSplatSogsData","_destroyGpuResources","packedTexture","packedSh0","packedShN","destroyed","_centers","isSogs","widths","decompress","members","shMembers","rot_1","rot_2","rot_3","rot_0","scale_0","scale_1","scale_2","f_dc_0","f_dc_1","f_dc_2","generateCenters","centersTexture","means_mins","means_maxs","u32","asFloat","packGpuMemory","scalesMins","scalesMaxs","sh0Mins","sh0Maxs","packShMemory","prepareGpuData","cameraPosition$1","cameraDirection$1","GSplatInstance","resolveSH","sorter","dither","updateViewport","cameraMat","invModelMat","setHighQualitySH","vertex_id_attrib","highQualitySH","GSplatSogsResource","FILLMODE_NONE","FILLMODE_FILL_WINDOW","FILLMODE_KEEP_ASPECT","RESOLUTION_AUTO","RESOLUTION_FIXED","currentApplication","getApplication","setApplication","app","_createdLoadingScreen","script","createLoadingScreen","FrameGraph","renderTargetMap","prevPass","firstPass","firstRT","secondPass","secondRT","lastCubeTexture","lastCubeRenderPass","thisTexture","AreaLightCacheEntry","texture0","texture1","deviceCache","AreaLightLuts","postfix","applyTextures","texture2","createPlaceholder","ltcMat1","ltcMat2","buildTexture","convertToHalfFloat","srcData1","srcData2","data1","data2","tex1","tex2","DEFAULT_LOCALE","DEFAULT_LOCALE_FALLBACKS","PLURALS","definePluralFn","locales","fn","getLang","locale","replaceLang","desiredLang","findAvailableLocale","desiredLocale","availableLocales","fallback","lang","mod10","mod100","DEFAULT_PLURAL_FN","getPluralFn","ABSOLUTE_URL","ASSET_ANIMATION","ASSET_AUDIO","ASSET_IMAGE","ASSET_JSON","ASSET_MODEL","ASSET_MATERIAL","ASSET_TEXT","ASSET_TEXTURE","ASSET_TEXTUREATLAS","ASSET_CUBEMAP","ASSET_SHADER","ASSET_CSS","ASSET_HTML","ASSET_SCRIPT","ASSET_CONTAINER","AssetFile","filename","contents","assetIdCounter","VARIANT_SUPPORT","pvr","dxt","etc2","etc1","basis","VARIANT_DEFAULT_PRIORITY","Asset","file","registry","_loader","_app","enableBundles","bundles","listBundlesForAsset","oldFile","_file","newFile","reload","_data","patch","_old","_resources","preload","_preload","loading","load","loadFaces","_loadFaces","getFileUrl","separator","getAbsoluteUrl","relativePath","getLocalizedAssetId","_i18n","addLocalizedAssetId","assetId","removeLocalizedAssetId","unload","urlObject","revokeObjectURL","fetchArrayBuffer","EVENT_LOAD","EVENT_UNLOAD","EVENT_ERROR","EVENT_PROGRESS","EVENT_ADDLOCALIZED","EVENT_REMOVELOCALIZED","TagsCache","addItem","removeItem","tagsRest","missingIndex","AssetRegistry","filters","assets","_assets","_idToAsset","_urlToAsset","_nameToAsset","_onNameChange","_tags","_onTagAdd","_onTagRemove","getByUrl","force","_fireLoad","_opened","assetIds","assetInBundle","_loaded","extra","getHandler","head","fileUrl","loadFromUrl","loadFromUrlAndFilename","loadFromUrlError","startLoad","loadedAsset","_loadTextures","_loadModel","modelAsset","continuation","basename","mappingUrl","_loadMaterials","onMaterialLoaded","materialAsset","onTextureLoaded","texParams","nameOld","findAll","loader","BundleRegistry","_onAssetAdd","_idToBundle","_onBundleLoadStart","_onBundleLoad","_onBundleError","_indexAssetInBundle","_assetToBundles","_indexAssetFileUrls","_unbindAssetEvents","bundle","urls","_getAssetFileUrls","_urlsToBundles","numFiles","_onAssetRemove","otherBundles","_fileRequests","requests","decodedUrl","_findLoadedOrLoadingBundleForUrl","candidate","hasUrl","urlIsLoadedOrLoading","ComponentSystemRegistry","system","Bundle","addFile","Untar","pump","bytesReceived","readFile","reader","headerRead","bytesRead","headerSize","decoder","TextDecoder","decode","fileName","fileSize","fileType","ustarFormat","bytesRemained","paddingSize","fetchPromise","assetsPrefix","getReader","ResourceHandler","_maxRetries","handlerType","BundleHandler","_fetchRetries","tryFetch","fetch","untar","ResourceLoader","addHandler","_handlers","removeHandler","makeKey","_loadNull","_requests","handleLoad","urlObj","_onFailure","openBinary","normalizedUrl","bundlesIgnore","bundlesFilter","fileUrlFromBundle","onLoad","warn","getFromCache","enableRetry","disableRetry","I18nParser","_validate","messages","I18n","idNum","_locale","_lang","_pluralFn","_translations","_findFallbackLocale","getText","translations","getPluralText","pluralFn","addData","parsed","_parser","_availableLangs","removeData","_onAssetLoad","_onAssetChange","_onAssetUnload","ScriptRegistry","addSchema","schema","_scriptSchemas","getSchema","scriptName","__name","_scripts","systems","_components","scriptInstances","scriptInstancesInitialized","component","_scriptsIndex","awaiting","_scriptsData","scriptInstance","preloading","scripts","initializeAttributes","_initialized","_postInitialized","postInitialize","nameOrType","scriptType","cmpStaticOrder","sortStaticOrder","_enableList","tmpPool","getTempArray","releaseTempArray","Entity","addComponent","removeComponent","findComponent","findComponents","findScript","findScripts","entities","getGuid","_guid","setGuid","_entityIndex","enableFirst","_beingEnabled","_onHierarchyStatePostChanged","_getSortedComponents","onPostStateChange","findByGuid","_destroying","duplicatedIdsMap","_cloneRecursively","resolveDuplicatedEntityReferenceProperties","needSort","cloneComponent","oldChild","newChild","_template","EVENT_DESTROY","oldSubtreeRoot","oldEntity","newEntity","componentName","entityProperties","getPropertiesOfType","propertyDescriptor","propertyName","oldEntityReferenceId","entityIsWithinOldSubtree","newEntityReferenceId","scrollview","scrollbar","anim","_new","SceneRegistryItem","_loading","_onLoadedCallbacks","SceneRegistry","_urlIndex","findByUrl","_loadSceneData","sceneItem","storeInCache","loadSceneData","unloadSceneData","_loadSceneHierarchy","onBeforeAddHierarchy","_preloadScripts","loadSceneHierarchy","loadSceneSettings","applySceneSettings","changeScene","loadScene","rigidbody","Ammo","ApplicationStats","lightmapper","batcher","_batcher","fps","updateStart","updateTime","renderStart","renderTime","physicsStart","physicsTime","cullTime","sortTime","skinTime","morphTime","instancingTime","triangles","gsplats","otherPrimitives","shadowMapUpdates","shadowMapTime","depthMapTime","forwardTime","lightClustersTime","_timeToCountFrames","_fpsAccum","shadow","misc","skinned","instanced","removedByInstancing","renderTargetCreationTime","particles","updatesPerFrame","_updatesPerFrame","frameTime","alphaTestPS$1","ambientPS$1","anisotropyPS$1","aoPS$1","aoDiffuseOccPS$1","aoSpecOccPS$1","bakeDirLmEndPS$1","bakeLmEndPS$1","basePS$1","baseNineSlicedPS$1","baseNineSlicedTiledPS$1","bayerPS$1","blurVSMPS$1","clearCoatPS$1","clearCoatGlossPS$1","clearCoatNormalPS$1","clusteredLightUtilsPS$1","clusteredLightCookiesPS$1","clusteredLightShadowsPS$1","clusteredLightPS$1","combinePS$1","cookieBlit2DPS$1","cookieBlitCubePS$1","cookieBlitVS$1","cookiePS","cubeMapProjectPS$1","cubeMapRotatePS$1","debugOutputPS$1","debugProcessFrontendPS$1","decodePS$1","detailModesPS$1","diffusePS$1","emissivePS$1","encodePS$1","endPS$1","envAtlasPS$1","envProcPS$1","falloffInvSquaredPS$1","falloffLinearPS$1","floatAsUintPS$1","fogPS$1","fresnelSchlickPS$1","fullscreenQuadVS$1","gammaPS$1","glossPS$1","gsplatCenterVS$1","gsplatColorVS$1","gsplatCommonVS$1","gsplatCompressedDataVS$1","gsplatCompressedSHVS$1","gsplatEvalSHVS$1","gsplatQuatToMat3VS$1","gsplatSogsColorVS$1","gsplatSogsDataVS$1","gsplatSogsSHVS$1","gsplatSourceFormatVS$1","gsplatStructsVS$1","gsplatCornerVS$1","gsplatDataVS$1","gsplatOutputVS$1","gsplatPS$1","gsplatSHVS$1","gsplatSourceVS$1","gsplatVS$1","gsplatWorkBufferVS$1","quadVS$1","immediateLinePS$1","immediateLineVS$1","iridescenceDiffractionPS$1","iridescencePS$1","iridescenceThicknessPS$1","iorPS$1","lightDeclarationPS$1","lightDiffuseLambertPS$1","lightDirPointPS$1","lightEvaluationPS$1","lightFunctionLightPS$1","lightFunctionShadowPS$1","lightingPS$1","lightmapAddPS$1","lightmapPS$1","lightSpecularAnisoGGXPS$1","lightSpecularBlinnPS$1","lightSheenPS$1","linearizeDepthPS$1","litForwardBackendPS$1","litForwardDeclarationPS$1","litForwardMainPS$1","litForwardPostCodePS$1","litForwardPreCodePS$1","litMainPS$1","litMainVS$1","litOtherMainPS$1","litShaderArgsPS$1","litShaderCorePS$1","litShadowMainPS$1","ltcPS$1","metalnessPS$1","msdfPS$1","metalnessModulatePS$1","morphPS$1","morphVS$1","msdfVS$1","normalVS$1","normalCoreVS$1","normalMapPS$1","opacityPS$1","opacityDitherPS$1","outputPS$1","outputAlphaPS$1","outputTex2DPS$1","sheenPS$1","sheenGlossPS$1","parallaxPS$1","pickPS$1","reflDirPS$1","reflDirAnisoPS$1","reflectionCCPS$1","reflectionCubePS$1","reflectionEnvHQPS$1","reflectionEnvPS$1","reflectionSpherePS$1","reflectionSheenPS$1","refractionCubePS$1","refractionDynamicPS$1","reprojectPS$1","reprojectVS$1","screenDepthPS$1","shadowCascadesPS$1","shadowEVSMPS$1","shadowPCF1PS$1","shadowPCF3PS$1","shadowPCF5PS$1","shadowPCSSPS","shadowSoftPS$1","skinBatchVS$1","skinVS$1","skyboxPS$1","skyboxVS$1","specularPS$1","sphericalPS$1","specularityFactorPS$1","spotPS$1","startNineSlicedPS$1","startNineSlicedTiledPS$1","stdDeclarationPS$1","stdFrontEndPS$1","TBNPS$1","thicknessPS$1","tonemappingPS$1","tonemappingAcesPS$1","tonemappingAces2PS$1","tonemappingFilmicPS$1","tonemappingHejlPS$1","tonemappingLinearPS$1","tonemappingNeutralPS$1","tonemappingNonePS$1","transformVS$1","transformCoreVS$1","transformInstancingVS$1","transmissionPS$1","twoSidedLightingPS$1","uv0VS$1","uv1VS$1","uvTransformVS$1","uvTransformUniformsPS$1","viewDirPS$1","shaderChunksGLSL","alphaTestPS","ambientPS","anisotropyPS","aoPS","aoDiffuseOccPS","aoSpecOccPS","bakeDirLmEndPS","bakeLmEndPS","basePS","baseNineSlicedPS","baseNineSlicedTiledPS","bayerPS","blurVSMPS","clearCoatPS","clearCoatGlossPS","clearCoatNormalPS","clusteredLightCookiesPS","clusteredLightShadowsPS","clusteredLightUtilsPS","clusteredLightPS","combinePS","cookieBlit2DPS","cookieBlitCubePS","cookieBlitVS","cubeMapProjectPS","cubeMapRotatePS","debugOutputPS","debugProcessFrontendPS","detailModesPS","diffusePS","decodePS","emissivePS","encodePS","endPS","envAtlasPS","envProcPS","falloffInvSquaredPS","falloffLinearPS","floatAsUintPS","fogPS","fresnelSchlickPS","frontendCodePS","frontendDeclPS","fullscreenQuadVS","gammaPS","glossPS","gsplatCenterVS","gsplatCornerVS","gsplatColorVS","gsplatCommonVS","gsplatCompressedDataVS","gsplatCompressedSHVS","gsplatEvalSHVS","gsplatQuatToMat3VS","gsplatSogsColorVS","gsplatSogsDataVS","gsplatSogsSHVS","gsplatSourceFormatVS","gsplatStructsVS","gsplatDataVS","gsplatOutputVS","gsplatPS","gsplatSHVS","gsplatSourceVS","gsplatVS","gsplatWorkBufferVS","quadVS","immediateLinePS","immediateLineVS","iridescenceDiffractionPS","iridescencePS","iridescenceThicknessPS","iorPS","lightDeclarationPS","lightDiffuseLambertPS","lightDirPointPS","lightEvaluationPS","lightFunctionLightPS","lightFunctionShadowPS","lightingPS","lightmapAddPS","lightmapPS","lightSpecularAnisoGGXPS","lightSpecularBlinnPS","lightSheenPS","linearizeDepthPS","litForwardBackendPS","litForwardDeclarationPS","litForwardMainPS","litForwardPostCodePS","litForwardPreCodePS","litMainPS","litMainVS","litOtherMainPS","litShaderArgsPS","litShaderCorePS","litShadowMainPS","litUserDeclarationPS","litUserDeclarationVS","litUserCodePS","litUserCodeVS","litUserMainStartPS","litUserMainStartVS","litUserMainEndPS","litUserMainEndVS","ltcPS","metalnessPS","metalnessModulatePS","morphPS","morphVS","msdfPS","msdfVS","normalVS","normalCoreVS","normalMapPS","opacityPS","opacityDitherPS","outputPS","outputAlphaPS","outputTex2DPS","sheenPS","sheenGlossPS","parallaxPS","pickPS","reflDirPS","reflDirAnisoPS","reflectionCCPS","reflectionCubePS","reflectionEnvHQPS","reflectionEnvPS","reflectionSpherePS","reflectionSheenPS","refractionCubePS","refractionDynamicPS","reprojectPS","reprojectVS","screenDepthPS","shadowCascadesPS","shadowEVSMPS","shadowPCF1PS","shadowPCF3PS","shadowPCF5PS","shadowSoftPS","skinBatchVS","skinVS","skyboxPS","skyboxVS","specularPS","sphericalPS","specularityFactorPS","spotPS","startNineSlicedPS","startNineSlicedTiledPS","stdDeclarationPS","stdFrontEndPS","TBNPS","thicknessPS","tonemappingPS","tonemappingAcesPS","tonemappingAces2PS","tonemappingFilmicPS","tonemappingHejlPS","tonemappingLinearPS","tonemappingNeutralPS","tonemappingNonePS","transformVS","transformCoreVS","transformInstancingVS","transmissionPS","twoSidedLightingPS","uv0VS","uv1VS","uvTransformVS","uvTransformUniformsPS","viewDirPS","indirectCoreCS","shaderChunksWGSL","AppBase","appOptions","assetPrefix","batchManager","componentSystems","elementInput","resourceHandlers","scriptsOrder","scriptPrefix","soundManager","_initDefaultMaterial","_initProgramLibrary","_soundManager","_registerSceneImmediate","defaultLayerWorld","defaultLayerDepth","defaultLayerSkybox","defaultLayerUi","defaultLayerImmediate","defaultLayerComposition","_firstBake","_firstBatch","attachSelectEvents","_scriptPrefix","resourceHandler","componentSystem","onVisibilityChange","hidden","_hiddenAttr","mozHidden","msHidden","webkitHidden","tick","makeTick","_applications","fillMode","_fillMode","resolutionMode","_resolutionMode","application_properties","scenes","_parseApplicationProperties","_parseScenes","_parseAssets","loadedCount","onAssetLoadOrError","sceneData","maxAssetRetries","useDevicePixelRatio","use_device_pixel_ratio","resolution_mode","fill_mode","setCanvasResolution","setCanvasFillMode","layerOrder","sublayer","batchGroups","grp","i18nAssets","i18n","_loadLibraries","libraries","onLibrariesLoaded","scriptsIndex","bundlesIndex","loadingType","_librariesLoaded","inputUpdate","_inTools","updateCanvasSize","renderComposition","_fillFrameStatsBasic","_fillFrameStats","prims","culled","_depthDrawCalls","_immediateRendered","isHidden","_allowResize","windowWidth","windowHeight","winR","onLibraryLoaded","setAreaLightLuts","_skyboxAsset","onSkyboxRemoved","onSkyboxChanged","bake","_processTimestamp","minPoint","maxPoint","drawMeshInstance","drawTexture","drawDepthTexture","_inFrameUpdate","_destroyRequested","canvasId","scriptHandler","cancelTick","frameRequestId","cancelAnimationFrame","getEntityFromIndex","timeScale","maxDeltaTime","autoRender","renderNextFrame","application","xrFrame","requestAnimationFrame","skipUpdate","renderState","baseLayer","AppOptions","tempSphere","BakeLight","restore","startBake","endBake","lightBounds","_tempPoint$1","BakeLightSimple","numVirtualLights","prepareVirtualLight","directionalSpreadAngle","linearIntensity","_tempPoint","BakeLightAmbient","fullIntensity","lightEntity","affectDynamic","affectLightmapped","BakeMeshNode","bounds","glslBilateralDeNoisePS","glslDilatePS","wgslBilateralDeNoisePS","wgslDilatePS","DENOISE_FILTER_SIZE","lightmapFiltersChunksGLSL","lightmapFiltersChunksWLSL","LightmapFilters","setSourceTexture","textureWidth","textureHeight","constantPixelOffset","prepareDenoise","filterRange","filterSmoothness","bakeHDR","shaderDenoise","sigmas","constantSigmas","constantKernel","bZnorm","evaluateDenoiseUniforms","getDenoise","getDilate","shaderDilate","normpdf","kSize","RenderPassLightmapper","receivers","worldClusters","lightArray","MAX_LIGHTMAP_SIZE","PASS_COLOR","PASS_DIR","tempVec$1","Lightmapper","blackTex","initBake","_initCalled","lightmapFilters","constantBakeDir","srcParams","finishBake","bakeNodes","destroyRT","ambientAOMaterial","createMaterialForPass","createMaterials","passMaterials","collectModels","allNodes","lightmapped","notInstancedMeshInstances","prepareShadowCasters","castShadowsLightmap","calculateLightmapSize","sizeMult","srcArea","_area","areaMult","computeNodeBounds","totalArea","lightmapSize","setLightmapping","startShaders","startFboTime","startCompileTime","bakeInternal","nowTime","totalRenderTime","shadersLinked","fboTime","lightmapCount","allocateTextures","bakeNode","prepareLightsToBake","allLights","bakeLights","sceneLights","bakeLight","restoreLights","setupScene","restoreScene","computeNodesBounds","computeBounds","backupMaterials","restoreMaterials","lightCameraPrepare","lightCameraPrepareAndCull","casterBounds","lightAffectsNode","frustumSize","nodeVisible","setupLightArray","renderShadowMap","shadowMapRendered","postprocessTextures","numDilates2x","dilateShader","denoiseShader","filterLightmap","nodeRT","lightmap","tempRT","tempTex","bilateralFilterEnabled","rcv","shadersUpdatedOn1stPass","isAmbientLight","isDirectional","virtualLightIndex","clusterLights","passMaterial","lastVirtualLightForPass","Component","_buildAccessors","descriptor","configurable","_accessorsBuilt","buildAccessors","onSetEnabled","record","ComponentSystem","ComponentType","componentData","DataType","initializeComponentData","convertValue","matchingProperties","INTERPOLATION_STEP","INTERPOLATION_LINEAR","INTERPOLATION_CUBIC","AnimCache","input","_len","_findKey","_t","_hermite","interpolation","idx0","idx1","hermite","AnimSnapshot","animTrack","_results","_inputs","_curves","outputs","_outputs","_output","AnimClip","track","_track","_snapshot","snapshot","alignCursorToCurrentTime","speed","signChanged","_speed","blendWeight","_blendWeight","blendOrder","_blendOrder","eventCursor","_eventCursor","eventCursorEnd","isReverse","events","nextEvent","nextEventAheadOfTime","nextEventBehindTime","resetEventCursor","moveEventCursor","clipFrameTime","frameEndTime","eventFrame","residual","fireNextEvent","_eventHandler","fireNextEventInFrame","frameStartTime","activeEventsForFrame","initialCursor","progressForTime","deltaTime","_playing","playing","eventHandler","ANIM_INTERRUPTION_NONE","ANIM_INTERRUPTION_PREV","ANIM_INTERRUPTION_NEXT","ANIM_INTERRUPTION_PREV_NEXT","ANIM_INTERRUPTION_NEXT_PREV","ANIM_GREATER_THAN","ANIM_LESS_THAN","ANIM_GREATER_THAN_EQUAL_TO","ANIM_LESS_THAN_EQUAL_TO","ANIM_EQUAL_TO","ANIM_NOT_EQUAL_TO","ANIM_PARAMETER_INTEGER","ANIM_PARAMETER_FLOAT","ANIM_PARAMETER_BOOLEAN","ANIM_PARAMETER_TRIGGER","ANIM_BLEND_1D","ANIM_BLEND_2D_DIRECTIONAL","ANIM_BLEND_2D_CARTESIAN","ANIM_BLEND_DIRECT","ANIM_STATE_START","ANIM_STATE_END","ANIM_STATE_ANY","ANIM_CONTROL_STATES","ANIM_LAYER_OVERWRITE","ANIM_LAYER_ADDITIVE","AnimBlend","blendVec","additive","it","blendQuat","stableSort","lessFunc","AnimTargetValue","_normalizeWeights","_component","normalizeWeights","updateWeights","totalWeight","_layerBlendType","setMask","updateValue","counter","IDENTITY_QUAT_ARR","valueType","baseValue","TYPE_QUAT","q1","aV1","q2","aV2","q3","aV","quatArr","vecArr","setter","unbind","TYPE_VEC3","AnimEvaluator","clips","_clips","addClip","clip","binder","_binder","inputs","paths","resolved","targetPath","blendCounter","animComponent","layerIndex","removeClip","unresolve","removeClips","updateClipTrack","rebind","findClip","assignMask","outputAnimation","usesLayerBlending","animTarget","AnimEvents","_events","AnimTrack","animEvents","_animEvents","_input","_interpolation","EMPTY","AnimBinder","joinPath","pathSegments","character","escape","splitPath","curr","encode","entityPath","propertyPath","AnimTarget","_set","_get","_targetPath","isTransform","_isTransform","isWeight","_isWeight","DefaultAnimBinder","_isPathActive","rootNodeNames","currEntityPath","_isPathInMask","createAnimTarget","valueCount","encodedPath","targetCache","handlers","nodeCounts","activeNodes","checkMaskValue","maskItem","flatten","findMeshInstances","weightName","textureName","textureAsset","AnimationComponent","animations","_animations","onSetAnimations","onAssetChanged","onAssetRemoved","animName","animationsIndex","currAnim","_stopCurrentAnimation","loadAnimationAssets","skeleton","animEvaluator","blendTime","prevAnim","_createAnimationController","blending","blendSpeed","fromSkel","toSkel","getAnimation","setModel","_resetAnimationController","modelComponent","animationNames","hasJson","hasGlb","onAssetReady","onAssetAdd","attribute","restarted","onBeforeRemove","AnimationComponentData","_schema$k","AnimationComponentSystem","clonedAnimations","clonedAnimationsIndex","onUpdate","AnimNode","_point","pointLength","_pointLength","_weight","normalizedWeight","_weightedSpeed","absoluteSpeed","weightedSpeed","_animTrack","AnimBlendTree","calculateWeights","syncAnimations","_syncAnimations","getChild","updateParameterValues","paramsEqual","_parameterValues","updatedParameter","_findParameter","_parameters","getNodeWeightedDuration","speedMultiplier","getNodeCount","createTree","findParameter","_pointCache","AnimBlendTree1D","weightedDurationSum","child2Distance","parameterDistance","AnimBlendTreeCartesian2D","pointDistanceCache","pointKey","weightSum","_p","pi","_pip","minj","pipj","AnimBlendTreeDirectional2D","pointCache","pLength","piLength","pjLength","weightedChildDuration","AnimBlendTreeDirect","AnimState","_createTree","_getNodeFromPath","currNode","_blendTree","addAnimation","pathString","indexOfAnimation","_animationList","_updateHasAnimations","_hasAnimations","hasAnimations","nodeCount","playable","trackClipName","trackClip","_controller","timelineDuration","blendTree","AnimTransition","_from","_to","_priority","conditions","_conditions","exitTime","_exitTime","transitionOffset","_transitionOffset","interruptionSource","_interruptionSource","hasExitTime","AnimController","_animEvaluator","activeState","stateName","_activeStateName","_findState","activeStateName","activeStateAnimations","previousState","_previousStateName","previousStateName","_stateNames","_states","activeStateProgress","_getActiveStateProgressForTime","_timeInState","activeStateDuration","_activeStateDurationDirty","maxDuration","activeClip","_activeStateDuration","activeStateCurrentTime","_timeInStateBefore","transitioning","_isTransitioning","transitionProgress","_currTransitionTime","_totalTransitionTime","states","_findTransitionsFromState","transitions","_findTransitionsFromStateCache","_transitions","transition","_findTransitionsBetweenStates","sourceStateName","destinationStateName","_findTransitionsBetweenStatesCache","_transitionHasConditionsMet","parameterName","predicate","_findTransition","_transitionInterruptionSource","progressBefore","startTransition","updateStateFromTransition","_consumeTrigger","_transitionPreviousStates","interpolatedTime","hasTransitionOffset","timeInState","timeInStateBefore","offsetTime","_transitionToState","newStateName","assignAnimation","_activate","removeNodeAnimations","stateWeight","activeClips","totalClips","consumeTrigger","v2$4","v3$1","v4","q$2","AnimComponentBinder","_packFloat","_packBoolean","_packVec2","_packVec3","_packVec4","_packColor","_packQuat","propertyComponent","_getEntityFromHierarchy","_createAnimTargetForProperty","entityHierarchy","currEntity","_resolvePath","resolveLeaf","steps","_setter","packFunc","setterFuncName","baseValues","objKey","propertyHierarchy","materialPropertyName","materialTexture","animDataType","animDataComponents","layerName","AnimComponentLayer","layerPlaying","dirtifyTargets","_blendType","_blendTime","_blendTimeElapsed","_startingWeight","_targetWeight","blendToWeight","nodePath","getAnimationAsset","animationAssets","AnimStateGraph","layerId","dataLayer","dataLayerTransition","conditionKeys","paramId","AnimComponent","stateGraphAsset","removeStateGraph","_stateGraphAsset","_onStateGraphAssetChangeEvent","_id","_asset","_stateGraph","loadStateGraph","_animationAssets","stateGraph","layerIndices","_layerIndices","prevAnimationAssets","prevMasks","_addLayer","animBinder","findAnimationLayer","_assignParameters","paramKeys","paramKey","containsBlendTree","setupAnimationAssets","stateKey","animationAsset","onAnimationAssetLoaded","targetKey","addAnimationState","getParameterValue","setParameterValue","getFloat","setFloat","getInteger","setInteger","getBoolean","setBoolean","getTrigger","setTrigger","singleFrame","_consumedTriggers","resetTrigger","trigger","oldAnim","AnimComponentData","_schema$j","AnimComponentSystem","complexProperties","masks","maskData","maskKey","decodeURI","onAnimationUpdate","pathArr","clonePath","AudioListenerComponent","setCurrentListener","audiolistener","AudioListenerComponentData","_schema$i","AudioListenerComponentSystem","BUTTON_TRANSITION_MODE_TINT","BUTTON_TRANSITION_MODE_SPRITE_CHANGE","ELEMENTTYPE_GROUP","ELEMENTTYPE_IMAGE","ELEMENTTYPE_TEXT","FITMODE_STRETCH","FITMODE_CONTAIN","FITMODE_COVER","VisualState","HOVER","PRESSED","INACTIVE","STATES_TO_TINT_NAMES","STATES_TO_SPRITE_ASSET_NAMES","STATES_TO_SPRITE_FRAME_NAMES","ButtonComponent","_setValue","imageEntity","_imageEntity","isString","_imageEntityUnsubscribe","_imageEntitySubscribe","hitPadding","transitionMode","hoverTint","pressedTint","inactiveTint","fadeDuration","hoverSpriteAsset","hoverSpriteFrame","pressedSpriteAsset","pressedSpriteFrame","inactiveSpriteAsset","inactiveSpriteFrame","_toggleLifecycleListeners","onOrOff","_onSetActive","_onSetTransitionMode","_onSetTransitionValue","_evtElementAdd","_onElementComponentAdd","_updateVisualState","_cancelTween","_resetToDefaultVisualState","_forceReapplyVisualState","_evtImageEntityElementAdd","_onImageElementGain","_onImageElementLose","_imageEntityElementSubscribe","_evtImageEntityElementRemove","_evtImageEntityElementColor","_onSetColor","_evtImageEntityElementOpacity","_onSetOpacity","_evtImageEntityElementSpriteAsset","_onSetSpriteAsset","_evtImageEntityElementSpriteFrame","_onSetSpriteFrame","_imageEntityElementUnsubscribe","_onElementComponentRemove","_toggleHitElementListeners","_storeDefaultVisualState","isAdding","_hasHitElementListeners","_onMouseEnter","_onMouseLeave","_onMouseDown","_onMouseUp","_onTouchStart","_onTouchEnd","_onTouchLeave","_onTouchCancel","_onSelectStart","_onSelectEnd","_onSelectEnter","_onSelectLeave","_onClick","_storeDefaultColor","_storeDefaultOpacity","_storeDefaultSpriteAsset","spriteAsset","_storeDefaultSpriteFrame","spriteFrame","_defaultTint","_defaultSpriteAsset","_defaultSpriteFrame","_isApplyingTint","_isApplyingSprite","_isHovering","_fireIfActive","_isPressed","_hoveringCounter","oldVisualState","_visualState","newVisualState","_determineVisualState","tintName","tintColor","_applyTint","spriteAssetName","spriteFrameName","_applySprite","_applyTintImmediately","_applyTintWithTween","color3","toColor3","_tweenInfo","lerpColor","_updateTintTween","elapsedTime","elapsedProportion","onRemove","oldButton","EVENT_MOUSEENTER","EVENT_MOUSELEAVE","EVENT_CLICK","EVENT_TOUCHLEAVE","EVENT_SELECTSTART","EVENT_SELECTEND","EVENT_SELECTENTER","EVENT_SELECTLEAVE","EVENT_HOVERSTART","EVENT_HOVEREND","EVENT_PRESSEDSTART","EVENT_PRESSEDEND","color4","ButtonComponentData","_schema$h","ButtonComponentSystem","_onRemoveComponent","_vec3$1","CollisionComponent","linearOffset","angularOffset","renderAsset","convexHull","checkVertexDuplicates","onSetType","changeType","onSetHalfExtents","recreatePhysicalShapes","onSetOffset","_hasOffset","onSetRadius","onSetHeight","onSetAxis","onSetAsset","onSetRenderAsset","onRenderAssetRemoved","onSetModel","implementations","doRecreatePhysicalShape","onSetRender","getCompoundChildShapeIndex","compound","shapes","getNumChildShapes","childShape","getChildShape","getPointer","_onInsert","_compoundParent","ancestor","collision","_updateCompound","_updateEachDescendantTransform","bodyComponent","getShapePosition","lo","getShapeRotation","enableSimulation","_getNodeTransform","addChildShape","disableSimulation","_removeCompoundChild","EVENT_CONTACT","EVENT_COLLISIONSTART","EVENT_COLLISIONEND","EVENT_TRIGGERENTER","EVENT_TRIGGERLEAVE","CollisionComponentData","BODYTYPE_STATIC","BODYTYPE_DYNAMIC","BODYTYPE_KINEMATIC","BODYFLAG_STATIC_OBJECT","BODYFLAG_KINEMATIC_OBJECT","BODYFLAG_NORESPONSE_OBJECT","BODYSTATE_ACTIVE_TAG","BODYSTATE_ISLAND_SLEEPING","BODYSTATE_WANTS_DEACTIVATION","BODYSTATE_DISABLE_DEACTIVATION","BODYSTATE_DISABLE_SIMULATION","BODYGROUP_NONE","BODYGROUP_DEFAULT","BODYGROUP_DYNAMIC","BODYGROUP_STATIC","BODYGROUP_KINEMATIC","BODYGROUP_ENGINE_1","BODYGROUP_TRIGGER","BODYGROUP_ENGINE_2","BODYGROUP_ENGINE_3","BODYGROUP_USER_1","BODYGROUP_USER_2","BODYGROUP_USER_3","BODYGROUP_USER_4","BODYGROUP_USER_5","BODYGROUP_USER_6","BODYGROUP_USER_7","BODYGROUP_USER_8","BODYMASK_NONE","BODYMASK_ALL","BODYMASK_STATIC","BODYMASK_NOT_STATIC","BODYMASK_NOT_STATIC_KINEMATIC","_ammoVec1$1","_ammoQuat$1","_ammoTransform$1","Trigger","mass","bodyPos","bodyRot","setOrigin","createBody","setRestitution","setFriction","setDamping","setLinearFactor","setAngularFactor","setCollisionFlags","getCollisionFlags","destroyBody","_getEntityTransform","updateTransform","setWorldTransform","_triggers","addBody","forceActivationState","removeBody","btVector3","btQuaternion","btTransform","mat4","quat$1","tempGraphNode","_schema$g","CollisionSystemImpl","beforeInitialize","afterInitialize","destroyShape","createPhysicalShape","firstCompoundChild","_addEachDescendant","updateCompoundChildTransform","beforeRemove","CollisionBoxSystemImpl","ammoHe","btBoxShape","CollisionSphereSystemImpl","btSphereShape","CollisionCapsuleSystemImpl","btCapsuleShapeX","btCapsuleShape","btCapsuleShapeZ","CollisionCylinderSystemImpl","btCylinderShapeX","btCylinderShape","btCylinderShapeZ","CollisionConeSystemImpl","btConeShapeX","btConeShape","btConeShapeZ","CollisionMeshSystemImpl","createAmmoHull","hull","btConvexHullShape","addPoint","recalcLocalAabb","setMargin","createAmmoMesh","checkDupes","triMesh","_triMeshCache","numTriangles","btTriangleMesh","vertexCache","indexedArray","getIndexedMeshArray","at","m_numTriangles","addVertex","findOrAddVertex","addIndex","triMeshShape","btBvhTriangleMeshShape","scaling","_getNodeScaling","setLocalScaling","btCompoundShape","entityTransform","loadAsset","previousPropertyValue","onAssetFullyReady","loadAndHandleAsset","containerAsset","worldScale","previousScale","getLocalScaling","numShapes","CollisionCompoundSystemImpl","_updateEachDescendant","CollisionComponentSystem","_createImplementation","_getImplementation","parentComponent","updateChildTransform","removeChildShape","removeChildShapeByIndex","onTransformChanged","previousType","newType","_calculateNodeRelativeTransform","relative","ammoQuat","getOrigin","ao","newOrigin","_tempColor$2","_vertexFormatDeviceCache","ImageRenderable","setMaterial","_entity","setMesh","forceUpdateAabb","addModelToLayers","setUnmaskDrawOrder","getLastChild","lastChild","getMaskOffset","setDrawOrder","setCull","visibleFn","_isScreenSpace","isVisibleForCamera","setScreenSpace","setLayer","setAabbFunc","_meshDirty","ImageElement","_defaultMesh","_onParentResizeOrPivotChange","_onScreenSpaceChange","_onScreenChange","_onDrawOrderChange","_onResolutionChange","_updateMesh","_updateMaterial","screen","_hasUserMaterial","_materialAsset","_system","defaultImageMaterials","_use9Slicing","nineSliced","nineTiled","getImageElementMaterial","_isScreenCulled","_createMesh","calculatedWidth","calculatedHeight","vertexData","fitMode","_targetAspectRatio","actualRatio","frameData","_spriteFrame","borderWidthScale","borderHeightScale","_innerOffset","_atlasRect","ppu","scaleMulX","scaleMulY","_outerScale","_innerOffsetUniform","_atlasRectUniform","_outerScaleUniform","vertexDataF32","atlasTextureWidth","atlasTextureHeight","_updateSprite","nineSlice","refreshMesh","_beingInitialized","_toggleMask","_onMaterialLoad","_onMaterialAdded","_bindMaterialAsset","_onMaterialChange","_onMaterialRemove","_unbindMaterialAsset","_onTextureAdded","_textureAsset","_bindTextureAsset","_onTextureLoad","_onTextureChange","_onTextureRemove","_unbindTextureAsset","_onSpriteAssetAdded","_spriteAsset","_bindSpriteAsset","_onSpriteAssetLoad","_onSpriteAssetChange","_onSpriteAssetRemove","_unbindSpriteAsset","textureAtlasAsset","_onTextureAtlasLoad","atlasAssetId","_bindSprite","_evtSetMeshes","_onSpriteMeshesChange","_onSpritePpuChange","_onAtlasTextureChange","_unbindSprite","atlasAsset","_setStencil","stencilParams","maskedBy","_maskRef","sp","_updateRenderableEmissive","_colorUniform","_removeMaterialAssetEvents","defaultScreenSpaceImageMaskMaterial","defaultImageMaskMaterial","defaultScreenSpaceImageMaterial","defaultImageMaterial","newAspectRatio","_prev","LocalizedAsset","defaultAsset","_defaultAsset","_unbindDefaultAsset","_bindDefaultAsset","_onSetLocale","localizedAsset","_localizedAsset","_onLocalizedAssetAdd","_unbindLocalizedAsset","_bindLocalizedAsset","autoLoad","_autoLoad","disableLocalization","_disableLocalization","_onDefaultAssetAdd","_onLocaleAdd","_onLocaleRemove","_onDefaultAssetRemove","_onLocalizedAssetLoad","_onLocalizedAssetChange","_onLocalizedAssetRemove","localizedAssetId","FONT_MSDF","FONT_BITMAP","EOF_TOKEN","ERROR_TOKEN","TEXT_TOKEN","OPEN_BRACKET_TOKEN","CLOSE_BRACKET_TOKEN","EQUALS_TOKEN","STRING_TOKEN","IDENTIFIER_TOKEN","WHITESPACE_TOKEN","WHITESPACE_CHARS","IDENTIFIER_REGEX","Scanner","token","_read","_last","_buf","_error","debugPrint","tokenStrings","_eof","_mode","_tag","_cur","_store","_whitespace","_string","_isIdentifierSymbol","_identifier","_symbols","symbols","Parser","_scanner","apply","_parseTag","combineTags","resolveMarkupTags","numSymbols","edges","tagStack","removeTags","addTags","edgeKeys","resolvedTags","edge","prevTag","resolvedTag","evaluateMarkup","parser","stripped_symbols","invalidTag","resolved_tags","Markup","MeshInfo","outlines","shadows","createTextMesh","meshInfo","LINE_BREAK_CHAR","WHITESPACE_CHAR","WORD_BOUNDARY_CHAR","ALPHANUMERIC_CHAR","CJK_CHAR","NO_LINE_BREAK_CJK_CHAR","CONTROL_CHARS","CONTROL_GLYPH_DATA","xadvance","xoffset","yoffset","colorTmp","vec2Tmp","_tempColor$1","TextElement","_setMaterial","_fontAsset","font","_onParentResize","_onPivotChange","_onLocaleSet","_onLocalizationData","_noResize","_font","_updateText","_drawOrder","_i18nKey","fontAsset","_resetLocalizedText","_setText","unicodeConverter","unicodeConverterFunc","getUnicodeConverter","_enableMarkup","_rtlReorder","rtlReorderFunc","getRtlReorder","_rtl","rtl","getColorThicknessHash","getColorOffsetHash","paletteMap","outlinePaletteMap","shadowPaletteMap","_colorPalette","_outlinePalette","_outlineColor","_outlineThickness","_shadowPalette","_shadowColor","_shadowOffset","_symbolColors","_symbolOutlineParams","_symbolShadowParams","outline","outlineHash","offsetX","offsetY","offX","offY","shadowHash","_updateMaterialEmissive","_updateMaterialOutline","_updateMaterialShadow","charactersPerTexture","_calculateCharsPerTexture","removedModel","screenCulled","_meshInfo","_removeMeshInstance","_setTextureParams","_getPxRange","_outlineColorUniform","_outlineThicknessScale","_shadowColorUniform","_shadowOffsetUniform","_shadowOffsetScale","_setMaskedBy","_updateMeshes","_rangeStart","_rangeEnd","_updateRenderRange","msdf","getTextElementMaterial","_isWordBoundary","_isValidNextChar","nextchar","_isNextCJKBoundary","_isNextCJKWholeWord","json","minFont","_minFontSize","_maxFontSize","maxFont","autoFit","_shouldAutoFit","_fontSize","MAGIC","_x","_y","_z","_xMinusTrailingWhitespace","wordStartX","wordStartIndex","lineStartIndex","numWordsThisLine","numCharsThisLine","numBreaksThisLine","splitHorizontalAnchors","anchor","maxLineWidth","autoWidth","_wrapLines","fontMinY","fontMaxY","breakLine","lineBreakIndex","lineBreakX","_lineWidths","sliceStart","sliceEnd","chars","_lineContents","_scaledLineHeight","retryUpdateMeshes","_lineHeight","_fontMinY","_fontMaxY","color_r","color_g","color_b","outline_color_rg","outline_color_ba","outline_thickness","shadow_color_rg","shadow_color_ba","shadow_offset_xy","isLineBreak","_maxLines","advance","quadsize","dataScale","kerning","kernTable","kernLeft","isWhitespace","meshInfoId","candidateLineWidth","_spacing","backtrack","backtrackStart","backtrackEnd","backChar","backCharData","backMeshInfo","fontSize","_shouldAutoFitWidth","_shouldAutoFitHeight","_getUv","colorIdx","outlineIdx","shadowIdx","_autoWidth","autoHeight","_autoHeight","ha","_alignment","va","prevQuad","hoffset","voffset","tmp0","tmp1","vertMax","_aabbDirty","_onFontRender","_onFontLoad","_onFontChange","_onFontRemove","_autoFitWidth","_autoFitHeight","symbolIndex","startChars","endChars","lineHeight","wrapLines","_originalFontSize","previousFontType","charId","newFontSize","rtlReorder","_unicodeConverter","outlineColor","outlineThickness","shadowColor","shadowOffset","minFontSize","maxFontSize","autoFitWidth","autoFitHeight","maxLines","enableMarkup","symbolColors","symbolOutlineParams","symbolShadowParams","rangeStart","rangeEnd","_currentMaterialType","_maskedMaterialSrc","position$2","invParentWtm","vecA$2","vecB$2","matA","matB","matC","matD","ElementComponent","_absLeft","_localAnchor","_margin","_absRight","_absTop","_absBottom","_hasSplitAnchorsX","_anchor","_hasSplitAnchorsY","_calculateLocalAnchors","_calculateSize","_anchorDirty","_batchGroupId","wt","wb","_setHeight","_calculatedHeight","_pivot","_setCalculatedWidth","_calculatedWidth","_setCalculatedHeight","canvasCorners","_canvasCornersDirty","_canvasCorners","screenCorners","_addedModels","wr","wl","_setWidth","margin","_maskedBy","prevX","prevY","_cornersDirty","_worldCornersDirty","_flagChildrenAsDirty","_screenCorners","parentBottomLeft","_screenTransform","textWidth","textHeight","useInput","_useInput","addElement","removeElement","_fitMode","worldCorners","_worldCorners","_screenMatrix","localPos","_dirtyBatch","_patch","_setPosition","_setLocalPosition","_unpatch","_screenToWorld","pvt","resx","resy","_anchorTransform","_sizeDirty","parentWorldTransform","_parentWorldTransform","depthOffset","pivotOffset","_parseUpToScreen","_updateScreen","_prerender","syncMask","_bindScreen","_bindElement","_unbindScreen","_unbindElement","previousScreen","syncDrawOrder","_updateMask","renderableElement","currentMask","_onScreenResize","_onScreenRemove","getOffsetPosition","onLayersChanged","oldComp","newComp","onLayerAdded","onLayerRemoved","_group","_evtLayersChanged","_evtLayerAdded","_evtLayerRemoved","propagateCalculatedWidth","propagateCalculatedHeight","newWidth","newHeight","updateMargins","_offsetReadAt","_maskOffset","mo","clipL","clipR","clipT","clipB","cameraWidth","cameraHeight","hitCorners","ElementComponentData","_schema$f","ElementComponentSystem","_defaultTexture","splitHorAnchors","splitVerAnchors","_marginChange","shouldForceSetAnchor","onAddComponent","onRemoveComponent","textAttibutes","_defaultTextMaterials","opacityMapChannel","emissiveVertexColor","_createBaseImageMaterial","nineSliceTiled","defaultScreenSpaceImageMask9SlicedMaterial","defaultScreenSpaceImageMask9TiledMaterial","defaultScreenSpaceImage9TiledMaterial","defaultScreenSpaceImage9SlicedMaterial","defaultImage9SlicedMaskMaterial","defaultImage9TiledMaskMaterial","defaultImage9SlicedMaterial","defaultImage9TiledMaterial","registerUnicodeConverter","registerRtlReorder","MOTION_FREE","MOTION_LIMITED","MOTION_LOCKED","properties$1","JointComponent","entityA","_destroyConstraint","_entityA","_createConstraint","entityB","_entityB","breakForce","_constraint","_breakForce","setBreakingImpulseThreshold","enableCollision","_enableCollision","angularLimitsX","_angularLimitsX","_updateAngularLimits","angularMotionX","_angularMotionX","angularLimitsY","_angularLimitsY","angularMotionY","_angularMotionY","angularLimitsZ","_angularLimitsZ","angularMotionZ","_angularMotionZ","linearLimitsX","_linearLimitsX","_updateLinearLimits","linearMotionX","_linearMotionX","linearLimitsY","_linearLimitsY","linearMotionY","_linearMotionY","linearLimitsZ","_linearLimitsZ","linearMotionZ","_linearMotionZ","_convertTransform","pcTransform","ammoTransform","ammoVec","constraint","setAngularLowerLimit","setAngularUpperLimit","setLinearLowerLimit","setLinearUpperLimit","bodyA","jointWtm","entityAWtm","invEntityAWtm","frameA","bodyB","entityBWtm","invEntityBWtm","frameB","btGeneric6DofSpringConstraint","enableSpring","setEquilibriumPoint","setStiffness","dynamicsWorld","addConstraint","removeConstraint","initFromData","_onSetEnabled","_onBeforeRemove","_linearSpringX","_linearStiffnessX","_linearDampingX","_linearEquilibriumX","_linearSpringY","_linearStiffnessY","_linearDampingY","_linearEquilibriumY","_linearSpringZ","_linearStiffnessZ","_linearDampingZ","_linearEquilibriumZ","_angularSpringX","_angularStiffnessX","_angularDampingX","_angularEquilibriumX","_angularSpringY","_angularStiffnessY","_angularDampingY","_angularEquilibriumY","_angularSpringZ","_angularEquilibriumZ","_angularDampingZ","_angularStiffnessZ","functionMap","Damping","Equilibrium","Spring","Stiffness","propInternal","JointComponentData","_schema$e","JointComponentSystem","LayoutChildComponent","minWidth","_minWidth","minHeight","_minHeight","maxWidth","_maxWidth","maxHeight","_maxHeight","fitWidthProportion","_fitWidthProportion","fitHeightProportion","_fitHeightProportion","excludeFromLayout","_excludeFromLayout","LayoutChildComponentData","_schema$d","LayoutChildComponentSystem","layoutChild","layoutchild","FITTING_NONE","FITTING_STRETCH","FITTING_SHRINK","FITTING_BOTH","AXIS_MAPPINGS","calculatedSize","minSize","maxSize","fitting","fittingProportion","OPPOSITE_ORIENTATION","PROPERTY_DEFAULTS","FITTING_ACTION","APPLY_STRETCHING","APPLY_SHRINKING","availableSpace","createCalculator","minExtentA","minExtentB","maxExtentA","calculateAll","allElements","layoutOptions","shouldIncludeInLayout","containerSize","padding","resetAnchors","reverseLinesIfRequired","splitLines","calculateSizesOnAxisB","calculateSizesOnAxisA","calculateBasePositions","applyAlignmentAndPadding","applySizesAndPositions","createLayoutInfo","layoutChildComponent","getElementSizeProperties","runningSize","allowOverrun","idealElementSize","reverseAxisA","reverseX","reverseY","reverseAxisB","lineIndex","reverse","sizesAllLines","sizesThisLine","idealRequiredSpace","calculateTotalSpace","fittingAction","determineFittingAction","stretchSizesToFitContainer","shrinkSizesToFitContainer","largestElementsForEachLine","largestSizesForEachLine","largestElement","largestSize","NEGATIVE_INFINITY","elementIndex","sizesThisElement","sizesForThisElement","currentSize","availableSize","elementFittingAction","fittingMode","totalSizes","sumValues","totalSpacing","ascendingMaxSizeOrder","getTraversalOrder","fittingProportions","getNormalizedValues","fittingProportionSums","createSumArray","remainingUndershoot","targetIncrease","calculateAdjustment","targetSize","actualSize","actualIncrease","appliedIncrease","descendingMinSizeOrder","inverseFittingProportions","invertNormalizedValues","inverseFittingProportionSums","remainingOvershoot","targetReduction","actualReduction","appliedReduction","remainingAdjustment","proportion","sumOfRemainingProportions","cursor","positionsAllLines","positionsThisLine","alignmentA","alignmentB","paddingA","paddingB","axisAOffset","axisBOffset","withinLineAxisBOffset","layoutWidth","layoutHeight","xOffset","sizeProperties","getProperty","accumulator","normalizedValues","numItems","invertedValues","numValues","orderBy","descending","assignIndex","itemA","itemB","getIndex","sumArray","CALCULATE_FNS","LayoutCalculator","calculateLayout","calculateFn","isEnabledAndHasEnabledElement","LayoutGroupComponent","_orientation","_scheduleReflow","_reverseX","_reverseY","_padding","widthFitting","_widthFitting","heightFitting","_heightFitting","_wrap","_isSelfOrChild","_listenForReflowEvents","onOff","_onElementOrLayoutComponentAdd","_onElementOrLayoutComponentRemove","_onChildInsert","_onChildRemove","_isPerformingReflow","scheduleReflow","reflow","container","containerWidth","containerHeight","layoutInfo","_layoutCalculator","LayoutGroupComponentData","_schema$c","MAX_ITERATIONS","LayoutGroupComponentSystem","layoutGroup","layoutgroup","_reflowQueue","_onPostUpdate","_processReflowQueue","iterationCount","componentA","componentB","PrimitivesCache","primData","_primitivesCache","getShapePrimitive","ModelComponent","customAabb","_bindModelAsset","_onModelAssetAdded","_unbindModelAsset","_clonedModel","_receiveShadows","_lightmapped","_mapping","_unsetMaterialEvents","receiveShadows","_castShadowsLightmap","_lightmapSizeMultiplier","_onMaterialAssetAdd","assetMapping","_loadAndSetMeshInstanceMaterial","_getMaterialAssetUrl","onRemoveChild","onInsertChild","_setMaterialEvent","_materialEvents","_getAssetByIdOrPath","idOrPath","isPath","isAsset","hide","show","_onMaterialAssetLoad","_onMaterialAssetUnload","_onMaterialAssetRemove","_onMaterialAssetChange","_onModelAssetLoad","_onModelAssetUnload","_onModelAssetChange","_onModelAssetRemove","ModelComponentData","_schema$b","ModelComponentSystem","aabbCenter","aabbHalfExtents","meshInstancesClone","SIMPLE_PROPERTIES","COMPLEX_PROPERTIES","GRAPH_PROPERTIES","ASSET_PROPERTIES","depthLayer","ParticleSystemComponent","autoPlay","colorMapAsset","normalMapAsset","meshAsset","addMeshInstanceToLayers","removeMeshInstanceFromLayers","onSetLayers","_bindColorMapAsset","_onColorMapAssetLoad","_onColorMapAssetUnload","_onColorMapAssetRemove","_onColorMapAssetChange","_unbindColorMapAsset","onSetColorMapAsset","_bindNormalMapAsset","_onNormalMapAssetLoad","_onNormalMapAssetUnload","_onNormalMapAssetRemove","_onNormalMapAssetChange","_unbindNormalMapAsset","onSetNormalMapAsset","_bindMeshAsset","_onMeshAssetLoad","_onMeshAssetUnload","_onMeshAssetRemove","_onMeshAssetChange","_unbindMeshAsset","_onMeshChanged","onSetMeshAsset","onSetMesh","_unbindRenderAsset","_bindRenderAsset","_onRenderChanged","_onRenderAssetLoad","_onRenderAssetUnload","_onRenderAssetRemove","_onRenderSetMeshes","onSetLoop","onSetBlendType","_requestDepth","_requestedDepth","_releaseDepth","onSetDepthSoftening","onSetSimpleProperty","onSetComplexProperty","onSetGraphProperty","unpause","setInTools","ParticleSystemComponentData","particlePS$1","particleVS$1","particleAnimFrameClampVS$1","particleAnimFrameLoopVS$1","particleAnimTexVS$1","particleInputFloatPS$1","particleInputRgba8PS$1","particleOutputFloatPS$1","particleOutputRgba8PS$1","particleUpdaterAABBPS$1","particleUpdaterEndPS$1","particleUpdaterInitPS$1","particleUpdaterNoRespawnPS$1","particleUpdaterOnStopPS$1","particleUpdaterRespawnPS$1","particleUpdaterSpherePS$1","particleUpdaterStartPS$1","particle_billboardVS$1","particle_blendAddPS$1","particle_blendMultiplyPS$1","particle_blendNormalPS$1","particle_cpuVS$1","particle_cpu_endVS$1","particle_customFaceVS$1","particle_endPS$1","particle_endVS$1","particle_halflambertPS$1","particle_initVS$1","particle_lambertPS$1","particle_lightingPS$1","particle_localShiftVS$1","particle_meshVS$1","particle_normalVS$1","particle_normalMapPS$1","particle_pointAlongVS$1","particle_simulationPS$1","particle_shaderPS$1","particle_shaderVS$1","particle_softPS$1","particle_softVS$1","particle_stretchVS$1","particle_TBNVS$1","particle_wrapVS$1","particleChunksGLSL","particlePS","particleVS","particleAnimFrameClampVS","particleAnimFrameLoopVS","particleAnimTexVS","particleInputFloatPS","particleInputRgba8PS","particleOutputFloatPS","particleOutputRgba8PS","particleUpdaterAABBPS","particleUpdaterEndPS","particleUpdaterInitPS","particleUpdaterNoRespawnPS","particleUpdaterOnStopPS","particleUpdaterRespawnPS","particleUpdaterSpherePS","particleUpdaterStartPS","particle_billboardVS","particle_blendAddPS","particle_blendMultiplyPS","particle_blendNormalPS","particle_cpuVS","particle_cpu_endVS","particle_customFaceVS","particle_endPS","particle_endVS","particle_halflambertPS","particle_initVS","particle_lambertPS","particle_lightingPS","particle_localShiftVS","particle_meshVS","particle_normalVS","particle_normalMapPS","particle_pointAlongVS","particle_simulationPS","particle_shaderPS","particle_shaderVS","particle_softPS","particle_softVS","particle_stretchVS","particle_TBNVS","particle_wrapVS","particleChunksWGSL","_schema$a","ParticleSystemComponentSystem","types","propertyTypes","particlesystem","sourceProp","numSteps","SkinInstanceCachedObject","SkinInstanceCache","createCachedSkinInstance","skinInst","getCachedSkinInstance","addCachedSkinInstance","cachedObjArray","_skinInstanceCache","cachedObj","removeCachedSkinInstance","cachedObjIndex","AssetReference","_registry","_bind","_url","_evtLoadById","_onLoad","_evtAddById","_onAdd","_evtRemoveById","_onRemove","_evtUnloadById","_onUnload","_evtLoadByUrl","_evtAddByUrl","_evtRemoveByUrl","_scope","RenderComponent","_meshInstances","destroyMeshInstances","_materialReferences","materialAssets","_onMaterialUnload","_assetReference","_onRenderAssetAdded","assignAsset","_clearSkinInstances","_cloneSkinInstances","_onSetMeshes","_cloneMeshes","_updateMainMaterial","oldRender","RenderComponentData","_schema$9","_properties$1","RenderComponentSystem","srcMeshInstances","ObjectPool","_resize","_pool","_constructor","freeAll","_ammoTransform","_ammoVec1","_ammoVec2","_ammoQuat","_quat1","_quat2","_vec3","RigidBodyComponent","onAppDestroy","angularDamping","damping","_angularDamping","_body","_linearDamping","angularFactor","_angularFactor","angularVelocity","setAngularVelocity","_angularVelocity","getAngularVelocity","_simulationEnabled","friction","_friction","linearDamping","linearFactor","_linearFactor","linearVelocity","setLinearVelocity","_linearVelocity","getLinearVelocity","_mass","getCollisionShape","calculateLocalInertia","setMassProps","updateInertiaTensor","restitution","_restitution","rollingFriction","_rollingFriction","setRollingFriction","setActivationState","isActive","_dynamic","syncEntityToBody","_kinematic","_compounds","applyForce","applyTorque","applyImpulse","applyTorqueImpulse","isStaticOrKinematic","isKinematic","motionState","getMotionState","_updateDynamic","invertedAo","entityRot","_updateKinematic","teleport","RigidBodyComponentData","ammoRayStart","ammoRayEnd","RaycastResult","hitFraction","SingleContactResult","contactPoint","impulse","localPointA","localPoint","localPointB","localPointOther","pointA","pointB","pointOther","ContactPoint","ContactResult","contacts","_schema$8","RigidBodyComponentSystem","collisionConfiguration","btDefaultCollisionConfiguration","dispatcher","btCollisionDispatcher","overlappingPairCache","btDbvtBroadphase","solver","btSequentialImpulseConstraintSolver","btDiscreteDynamicsWorld","setInternalTickCallback","checkForCollisionsPointer","addFunction","_checkForCollisions","contactPointPool","contactResultPool","singleContactResultPool","addRigidBody","removeRigidBody","localInertia","btDefaultMotionState","bodyInfo","btRigidBodyConstructionInfo","btRigidBody","raycastFirst","filterTags","filterCallback","raycastAll","rayCallback","ClosestRayResultCallback","filterCollisionGroup","set_m_collisionFilterGroup","filterCollisionMask","set_m_collisionFilterMask","rayTest","hasHit","collisionObj","get_m_collisionObject","castObject","get_m_hitPointWorld","get_m_hitNormalWorld","get_m_closestHitFraction","AllHitsRayResultCallback","collisionObjs","get_m_collisionObjects","hitFractions","get_m_hitFractions","numHits","_storeCollision","isNewCollision","collisions","others","frameCollisions","_createContactPointFromAmmo","get_m_localPointA","get_m_localPointB","positionWorldOnA","getPositionWorldOnA","positionWorldOnB","getPositionWorldOnB","normalWorldOnB","get_m_normalWorldOnB","contact","getAppliedImpulse","_createReverseContactPointFromAmmo","_createSingleContactResult","_createContactResult","_cleanOldCollisions","frameCollision","entityCollision","entityRigidbody","_hasContactEvent","world","timeStep","wrapPointer","btDynamicsWorld","getDispatcher","numManifolds","getNumManifolds","manifold","getManifoldByIndexInternal","body0","getBody0","body1","getBody1","wb0","wb1","e0","flags0","flags1","numContacts","getNumContacts","forwardContacts","reverseContacts","newCollision","e0Events","e1Events","e0BodyEvents","e1BodyEvents","globalEvents","btContactPoint","getContactPoint","reverseContactPoint","forwardResult","reverseResult","_gravityFloat32","getGravity","setGravity","triggers","compounds","kinematic","stepSimulation","SCALEMODE_NONE","SCALEMODE_BLEND","_transform","ScreenComponent","queueDrawOrderSync","_processDrawOrderSync","_recurseDrawOrderSync","prevDrawOrder","_calcProjectionMatrix","_resolution","_updateScale","_calcScale","referenceResolution","_scaleBlend","_onResize","_referenceResolution","_scaleMode","scaleMode","scaleBlend","ScreenComponentData","_schema$7","ScreenComponentSystem","_onUpdate","windowResolution","processDrawOrderSyncQueue","_drawOrderSyncQueue","_inputScreenPosition","_inputWorldPosition","_ray","_plane","_normal","_entityRotation","OPPOSITE_AXIS","ElementDragHelper","_onMouseDownOrTouchStart","_toggleDragListeners","isOn","_hasDragListeners","_onMove","_onMouseUpOrTouchEnd","_isDragging","_dragCamera","_calculateDragScale","currentMousePosition","_screenToLocal","_dragStartMousePosition","_dragStartHandlePosition","inputSource","getDirection","_determineInputPosition","_chooseRayOriginAndDirection","_dragScale","isWithin2DScreen","screenScale","dragScale","_deltaMousePosition","deltaMousePosition","_deltaHandlePosition","deltaHandlePosition","_axis","currentPosition","constrainedAxis","isDragging","EVENT_DRAGSTART","EVENT_DRAGEND","EVENT_DRAGMOVE","SCROLL_MODE_CLAMP","SCROLL_MODE_BOUNCE","SCROLL_MODE_INFINITE","SCROLLBAR_VISIBILITY_SHOW_ALWAYS","SCROLLBAR_VISIBILITY_SHOW_WHEN_REQUIRED","_tempScrollValue","ScrollViewComponent","horizontal","vertical","scrollMode","bounceAmount","dragThreshold","useMouseWheel","mouseWheelSensitivity","horizontalScrollbarVisibility","verticalScrollbarVisibility","viewportEntity","_viewportEntity","_viewportEntityUnsubscribe","_viewportEntitySubscribe","contentEntity","_contentEntity","_contentEntityUnsubscribe","_contentEntitySubscribe","horizontalScrollbarEntity","_horizontalScrollbarEntity","_horizontalScrollbarEntityUnsubscribe","_scrollbarEntities","_horizontalScrollbarEntitySubscribe","verticalScrollbarEntity","_verticalScrollbarEntity","_verticalScrollbarEntityUnsubscribe","_verticalScrollbarEntitySubscribe","scroll","_onSetScroll","_scroll","_onSetHorizontalScrollingEnabled","_onSetVerticalScrollingEnabled","_toggleElementListeners","_hasElementListeners","_syncAll","_onMouseWheel","_evtElementRemove","_evtViewportEntityElementAdd","_onViewportElementGain","_onViewportElementLose","_viewportEntityElementSubscribe","_evtViewportElementRemove","_evtViewportResize","_viewportEntityElementUnsubscribe","_evtContentEntityElementAdd","_onContentElementGain","_onContentElementLose","_contentEntityElementSubscribe","_evtContentElementRemove","_evtContentResize","_contentEntityElementUnsubscribe","_destroyDragHelper","_contentDragHelper","_onContentDragStart","_onContentDragEnd","_onContentDragMove","_prevContentSizes","_dragStartPosition","_prevContentDragPosition","_enableContentInput","_wasDragged","_setScrollFromContentPosition","_setVelocityFromContentPositionDelta","_disabledContentInput","_disableContentInput","_evtHorizontalScrollbarAdd","_onHorizontalScrollbarGain","_evtVerticalScrollbarAdd","_onVerticalScrollbarGain","_onHorizontalScrollbarLose","_onVerticalScrollbarLose","_onSetHorizontalScrollbarValue","scrollValueX","_scrollbarUpdateFlags","_onSetVerticalScrollbarValue","scrollValueY","_evtHorizontalScrollbarRemove","_evtHorizontalScrollbarValue","_syncScrollbarEnabledState","_syncScrollbarPosition","_evtVerticalScrollbarRemove","_evtVerticalScrollbarValue","resetVelocity","xChanged","_updateAxis","yChanged","scrollValue","hasChanged","_determineNewScrollValue","_syncContentPosition","_getScrollingEnabled","_getMaxScrollValue","_setVelocityFromOvershoot","_getAxis","_getSign","prevContentSize","currContentSize","_getContentSize","prevMaxOffset","_getMaxOffset","currMaxOffset","contentPosition","scrollbarEntity","handleSize","_getScrollbarHandleSize","isScrollingEnabled","requestedVisibility","_getScrollbarVisibility","_contentIsLargerThanViewport","_getViewportSize","_contentPositionToScrollValue","maxOffsetH","maxOffsetV","contentSize","viewportSize","overshoot","_toOvershoot","_getSize","_getCalculatedDimension","_updateVelocity","_hasOvershoot","maxScrollValue","overshootValue","overshootPixels","_applyScrollValueTension","log10","_setScrollbarComponentsEnabled","_setContentDraggingEnabled","wheelEvent","normalizedDeltaX","deltaX","normalizedDeltaY","scrollX","scrollY","_disabledContentInputEntities","_disableInput","oldScrollView","EVENT_SETSCROLL","DEFAULT_DRAG_THRESHOLD$1","ScrollViewComponentData","_schema$6","DEFAULT_DRAG_THRESHOLD","ScrollViewComponentSystem","ScrollbarComponent","handleEntity","_handleEntity","_handleEntityUnsubscribe","_handleEntitySubscribe","_onSetValue","_onSetHandleSize","_onSetOrientation","_evtHandleEntityElementAdd","_onHandleElementGain","_onHandleElementLose","_handleEntityElementSubscribe","handles","_evtHandleEntityChanges","_onSetHandleAlignment","_handleEntityElementUnsubscribe","_handleDragHelper","_onHandleDrag","_updateHandlePositionAndSize","_handlePositionToScrollValue","_getOppositeDimension","handleElement","_getHandlePosition","_getDimension","_getHandleLength","handlePosition","_getUsableTrackLength","_scrollValueToHandlePosition","_getTrackLength","_setHandleDraggingEnabled","oldScrollbar","EVENT_SETVALUE","ScrollbarComponentData","_schema$5","ScrollbarComponentSystem","_onAddComponent","instanceOptions","SoundSlot","overlap","isLoaded","_hasAsset","_createInstance","playWhenLoaded","resumed","stopped","_onAssetRemoved","_overlap","_onInstancePlayHandler","_onInstancePauseHandler","_onInstanceResumeHandler","_onInstanceStopHandler","_onInstanceEndHandler","positional","_onInstancePlay","_onInstancePause","_onInstanceResume","_onInstanceStop","_onInstanceEnd","updatePosition","oldAsset","_autoPlay","assetDuration","SoundComponent","_updateSoundInstances","isFactor","_slots","_positional","oldLength","playingBeforeDisable","_playingBeforeDisable","addSlot","removeSlot","_getSlotProperty","SoundComponentData","_schema$4","SoundComponentSystem","srcComponent","srcSlots","srcSlot","cloneData","SPRITETYPE_SIMPLE","SPRITETYPE_ANIMATED","SpriteAnimationClip","MIN_VALUE","_setFrame","_setTime","_frame","_paused","_onSpritePpuChanged","currentClip","_hideModel","_showModel","_showFrame","_destroy","EVENT_LOOP","PARAM_EMISSIVE_MAP","PARAM_OPACITY_MAP","PARAM_EMISSIVE","PARAM_OPACITY","PARAM_INNER_OFFSET","PARAM_OUTER_SCALE","PARAM_ATLAS_RECT","SpriteComponent","_currentClip","_defaultClip","_autoPlayClip","_tryAutoPlay","flipX","_flipX","_updateTransform","autoPlayClip","_addedModel","_onLayersChanged","_onLayerAdded","_onLayerRemoved","onDestroy","default9SlicedMaterialSlicedMode","default9SlicedMaterialTiledMode","posX","posY","SpriteComponentData","_schema$3","SpriteComponentSystem","_defaultMaterial","_default9SlicedMaterialSlicedMode","_default9SlicedMaterialTiledMode","ZoneComponent","_size","_checkState","_oldState","EVENT_ENABLE","EVENT_DISABLE","EVENT_STATE","ZoneComponentData","_schema$2","ZoneComponentSystem","zone","PostEffectEntry","effect","PostEffectQueue","_allocateColorBuffer","destinationRenderTarget","_createOffscreenTarget","useDepth","hdr","outputRt","effects","_resizeOffscreenTarget","_destroyOffscreenTarget","addEffect","isFirstEffect","newEntry","_sourceTarget","_newPostEffect","_requestDepthMap","removeEffect","_releaseDepthMap","_requestDepthMaps","_releaseDepthMaps","requestSceneDepthMap","_onCanvasResized","destTarget","resizeRenderTargets","desiredWidth","desiredHeight","onCameraRectChanged","depthTarget","CameraComponent","setShaderPass","_camera","getShaderPass","passes","dirtyLayerCompositionCameras","_disablePostEffectsLayer","oldLayers","postEffects","_postEffects","_sceneColorMapRequested","requestSceneColorMap","_renderSceneColorMap","_sceneDepthMapRequested","_renderSceneDepthMap","_enableDepthLayer","hasDepthLayer","layerComp","screenx","screeny","cameraz","onAppPrerender","addCameraToLayers","removeCameraFromLayers","calculateAspectRatio","startXr","spaceType","endXr","CameraComponentData","_schema$1","CameraComponentSystem","LightComponentData","cookieAsset","cookieAngle","cookieScale","LightComponent","refreshProperties","_cookieAssetId","onCookieAssetRemove","onCookieAssetAdd","_cookieAssetAdd","scx","scy","setFunc","skipEqualsCheck","addLightToLayers","removeLightFromLayers","onCookieAssetSet","forceLoad","_cookieAsset","onCookieAssetLoad","LightComponentSystem","vecLookup","rawToValue","field","vecType","CurveType","attributeToValue","assignAttributesToScript","attributeSchemaMap","attributeName","attributeSchema","dataToAssign","ScriptAttributes","reservedNames","__attributes","evtName","oldCopy","SCRIPT_INITIALIZE","SCRIPT_POST_INITIALIZE","SCRIPT_UPDATE","SCRIPT_POST_UPDATE","SCRIPT_SWAP","Script","_enabledOld","_scriptMethod","initScript","__destroyed","__scriptType","__executionOrder","EVENT_ATTR","__getScriptName","getScriptName","funcNameRegex","constructorFn","ScriptType","__attributesRaw","initScriptType","__initializeAttributes","methods","toLowerCamelCase$1","ScriptComponent","wasLooping","_beginLooping","_endLooping","_isLoopingThroughScripts","wasLoopingBefore","_removeDestroyedScripts","_addComponentToEnabled","_removeComponentFromEnabled","_destroyedScripts","_removeScriptInstance","_resetExecutionOrder","_onInitializeAttributes","_attributeDataMap","_onInitialize","_onPostInitialize","_updateList","_postUpdateList","_insertScriptInstance","scriptsLength","postUpdate","_resolveEntityScriptAttribute","useGuid","newAttributes","newGuidArray","scriptData","inferredScriptName","lowerInferredScriptName","onSwap","scriptInstanceOld","oldScriptComponent","newScriptComponent","newAttributesRaw","oldAttributes","newJsonValue","move","indOld","_executionOrder","EVENT_CREATE","EVENT_MOVE","ScriptComponentData","METHOD_INITIALIZE_ATTRIBUTES","METHOD_INITIALIZE","METHOD_POST_INITIALIZE","METHOD_UPDATE","METHOD_POST_UPDATE","executionOrderCounter","ScriptComponentSystem","MAX_SAFE_INTEGER","_enabledComponents","_callComponentMethod","gsplatIntervalTextureGLSL","gsplatIntervalTextureWGSL","GSplatIntervalTexture","intervalsDataTexture","getShader","intervals","totalIntervalSplats","numIntervals","dataTextureSize","intervalsData","runningSum","intervalSize","vecs","GSplatInfo","intervalTexture","setLines","textureSize","activeSplats","lineStart","lineCount","updateIntervals","totalCount","currentStart","currentEnd","worldMatrix","worldMatrixChanged","previousWorldTransform","lodIndex","UnifiedSortWorker","centersMap","centersData","_radialSort","weightTiers","weightByDistance","setupCameraRelativeBins","cameraBin","totalBudget","bitsPerBin","distFromCamera","accumulated","excess","evaluateSortKeysCommon","sortParams","processSplatFn","lineStarts","invBinRange","paramIdx","targetIndex","intervalsArray","intervalStart","intervalEnd","evaluateSortKeysLinear","transformedDirection","sdx","sdy","sdz","srcIndex","evaluateSortKeysRadial","transformedPosition","distSq","invertedDist","countingSort","computeEffectiveDistanceRangeLinear","pxMin","pyMin","pzMin","pxMax","pyMax","pzMax","dMin","dMax","eMin","eMax","localMin","localMax","computeEffectiveDistanceRangeRadial","totalUsedPixels","cameraOffsetFromRangeStart","cameraBinFloat","transferList","command","GSplatUnifiedSorter","onSorted","orderData","jobsInFlight","bufferLength","availableOrderData","setCenters","centersSet","centersBuffer","setSortParameters","payload","hasNewVersion","newLength","setSortParams","_whiteColor","GSplatWorkBufferRenderPass","splats","colorsByLod","splatInfo","renderSplat","workBufferRenderInfo","GSplatWorkBuffer","covATexture","covBTexture","centerTexture","setOrderData","GSplatRenderer","setNumSplats","setMaxNumSplats","roundedNumSplats","instanceIndicesCount","createMeshInstance","workBuffer","vis","cameraRect","viewportParams","GSplatPlacement","lodDistances","isOctree","octree","lodLevels","_lodDistances","_invWorldMat","_localCameraPos","_localCameraFwd","_dirToNode","_tempCompletedUrls","GSplatOctreeInstance","pending","pendingDecrements","filePlacements","getFileDecrements","toRelease","calculateNodeLod","localCameraPosition","localCameraForward","maxLod","dotOverDistance","lod","selectDesiredLodIndex","optimalLodIndex","allowedMaxCoarseLod","fi","lods","fileIndex","getFileResource","prefetchNextLod","desiredLodIndex","ensureFileResource","assetLoader","prefetchPending","targetLod","updateLod","worldCameraPosition","octreeWorldTransform","worldCameraForward","rangeMin","rangeMax","currentLodIndex","nodeLods","currentFileIndex","desiredFileIndex","willBeVisible","pendingEntry","newFileIndex","prevPendingPlacement","decrementFileRef","oldFileIndex","prevPendingFi","pendingVisibleAdds","incrementFileRef","newPlacement","pendingEntry2","removeScheduled","removedCandidates","addFilePlacement","dirtyModifiedPlacements","activePlacements","testMoved","threshold","previousPosition","updateMoved","newLodIndex","li","needsLodUpdate","pollPrefetchCompletions","debugRender","consumeNeedsLodUpdate","files","tmpMin","tmpMax","GSplatOctreeNode","boundData","_toDelete","GSplatOctree","_traceLodCounts","_extractLeafNodes","leafNodes","bound","fileResources","fileRefCounts","cooldowns","cooldownTicks","unloadResource","fullUrl","updateCooldownTick","remaining","getResource","assetFileUrl","baseDir","filenames","lodLevel","tree","nodeData","lodData","GSplatOctreeResource","GSplatWorldState","estimateTextureSize","fits","rows","splat","low","high","bestSize","mid","assignLines","numLines","sortParametersSet","sortedBefore","pendingReleases","translation","tempNonOctreePlacements","tempOctreePlacements","_updatedSplats","tempOctreesTicked","_lodColorsRaw","GSplatManager","createSorter","reconcile","placements","octreeInstances","director","inst","layerPlacementsDirty","octreeInstancesToDestroy","layerPlacements","updateWorldState","worldChanged","worldStates","lastWorldStateVersion","newState","sortedVersion","oldState","worldState","colorize","testCameraMoved","distanceThreshold","currentCameraPos","cameraMoved","lastCameraPos","cameraRotated","lodUpdateAngleDeg","lastCameraFwd","currentCameraFwd","rotThreshold","fullUpdate","framesTillFullUpdate","anyInstanceNeedsLodUpdate","anyOctreeMoved","cameraMovedOrRotated","instNeeds","moved","lastState","prepareSortParameters","sortedState","sorterRequest","GSplatLayerData","gsplatManager","GSplatCameraData","layersMap","layerData","removeLayerData","getLayerData","GSplatDirector","camerasMap","cameraData","getCameraData","gsplatCount","camerasComponents","GSplatComponent","_instance","_placement","destroyInstance","_materialTmp","_highQualitySH","unified","_unified","_onGSplatAssetAdded","_onGSplatAssetRemove","_onGSplatAssetLoad","_onGSplatAssetUnload","GSplatComponentData","GSplatAssetLoaderBase","GSplatAssetLoader","_schema","_properties","GSplatComponentSystem","gSplatComponent","srcMaterial","gsplatAssetLoader","Render","decRefMeshes","incRefMeshes","EVENT_SETMESHES","onContainerAssetLoaded","containerResource","renders","renderIndex","onContainerAssetAdded","onContainerAssetRemoved","RenderHandler","AnimCurve","_paths","AnimData","DracoWorker","jsUrl","draco","POSITION_ATTRIBUTE","NORMAL_ATTRIBUTE","typedArray","DT_INT8","DT_INT16","DT_INT32","DT_UINT8","DT_UINT16","DT_UINT32","DT_FLOAT32","componentSizeInBytes","attributeSizeInBytes","num_components","data_type","attributeOrder","generateNormals","subtract","decodeMesh","DecoderBuffer","Init","Decoder","GetEncodedGeometryType","TRIANGULAR_MESH","DecodeBufferToMesh","ok","num_faces","shortIndices","num_points","indicesSize","indicesPtr","_malloc","GetTrianglesUInt16Array","HEAPU16","GetTrianglesUInt32Array","HEAPU32","_free","num_attributes","GetAttribute","attribute_type","unique_id","totalVertexSize","normalOffset","sizeInBytes","ptrSize","ptr","GetAttributeDataArrayForAllPoints","HEAPU8","jobId","workQueue","onmessage","DracoDecoderModule","instantiateWasm","imports","successCallback","downloadMaxRetries","JobQueue","jobCallbacks","jobQueue","job","index2","index1","enqueueJob","downloadScript","compileModule","compileManual","arrayBuffer","compileStreaming","defaultNumWorkers$1","lazyConfig$1","initializeWorkers","moduleConfig","numWorkers","dracoSource","dracoModule","blob","workerUrl","dracoInitialize","lazyInit","dracoDecode","GlbResources","isDataURI","getDataURIMimeType","getNumComponents","accessorType","getComponentType$1","getComponentSizeInBytes","getComponentDataType","gltfToEngineSemanticMap","getDequantizeFunc","dequantizeArray","dstArray","srcArray","convFunc","getAccessorData","gltfAccessor","bufferViews","sparse","indicesAccessor","valuesAccessor","baseAccessor","bufferView","bytesPerElement","tmpArray","byteStride","getAccessorDataFloat32","normalized","float32Data","getAccessorBoundingBox","ctype","getPrimitiveType","generateIndices","dummyIndices","sourceDesc","srcStride","normalsTemp","cloneTexture","shallowCopyLevels","cloneTextureAsset","createVertexBufferInternal","positionDesc","sourceOffset","isCorrectlyInterleaved","targetArray","sourceArray","targetStride","sourceStride","kend","createVertexBuffer","vertexBufferDict","useAttributes","attribIds","attrib","vbKey","accessorData","createSkin","gltfSkin","glbSkins","bindMatrix","joints","numJoints","inverseBindMatrices","ibmData","ibmValues","createDracoMesh","meshVariants","meshDefaultMaterials","promises","POSITION","dracoExt","extensions","KHR_draco_mesh_compression","decompressedData","NORMAL","KHR_materials_variants","tempMapping","mappings","createMesh$1","gltfMesh","assetOptions","primitives","extras","targetNames","morphPreserveData","morphPreferHighPrecision","extractTextureTransform","texCoord","zeros","ones","textureTransform","KHR_texture_transform","tilingVec","offsetVec","extensionPbrSpecGlossiness","diffuseFactor","diffuseTexture","diffuseMapChannel","specularFactor","glossinessFactor","specularGlossinessTexture","glossMap","specularMapChannel","glossMapChannel","extensionClearCoat","clearcoatFactor","clearcoatTexture","clearCoatMap","clearCoatMapChannel","clearcoatRoughnessFactor","clearcoatRoughnessTexture","clearCoatGlossMap","clearCoatGlossMapChannel","clearcoatNormalTexture","extensionUnlit","emissiveMapUv","diffuseMapUv","emissiveMapTiling","diffuseMapTiling","emissiveMapOffset","diffuseMapOffset","emissiveMapRotation","diffuseMapRotation","emissiveMapChannel","diffuseVertexColor","emissiveVertexColorChannel","diffuseVertexColorChannel","extensionSpecular","specularColorTexture","specularColorFactor","specularityFactorMapChannel","specularTexture","extensionIor","ior","extensionDispersion","extensionTransmission","transmissionFactor","refractionMapChannel","transmissionTexture","extensionSheen","sheenColorFactor","sheenColorTexture","sheenRoughnessFactor","sheenGlossMap","sheenRoughnessTexture","sheenGlossMapChannel","extensionVolume","thicknessFactor","thicknessMap","thicknessTexture","thicknessMapChannel","attenuationColor","extensionEmissiveStrength","emissiveStrength","extensionIridescence","iridescenceFactor","iridescenceMapChannel","iridescenceMap","iridescenceTexture","iridescenceIor","iridescenceThicknessMinimum","iridescenceThicknessMaximum","iridescenceThicknessMapChannel","iridescenceThicknessMap","iridescenceThicknessTexture","extensionAnisotropy","anisotropyStrength","anisotropyTexture","anisotropyMap","gltfMaterial","pbrData","pbrMetallicRoughness","baseColorFactor","baseColorTexture","metallicFactor","roughnessFactor","metallicRoughnessTexture","metalnessMapChannel","normalTexture","occlusionTexture","aoMapChannel","emissiveFactor","emissiveTexture","alphaCutoff","doubleSided","extensionFunc","createAnimation","gltfAnimation","animationIndex","gltfAccessors","gltfNodes","createAnimData","interpMap","inputMap","outputMap","curveMap","outputCounter","quatArrays","transformSchema","constructNodePath","createMorphTargetCurves","gltfNode","outData","morphTargetCount","keyframeCount","singleBufferSize","morphTargetOutput","morphCurve","channels","inputKey","outputKey","curveKey","curveData","prevIndex","dp","tempMat","tempVec","createNode","nodeInstancingMap","EXT_mesh_gpu_instancing","createCamera","gltfCamera","gltfProperties","orthographic","perspective","ymag","xmag","yfov","cameraEntity","createLight","gltfLight","lightProps","createSkins","gltf","skins","createMeshes","skipMeshes","preprocess","postprocess","createVariants","createAnimations","createInstancing","TRANSLATION","rotations","ROTATION","SCALE","matrixIndex","i4","createNodes","uniqueNames","createScenes","sceneRoot","childNode","createCameras","createLights","KHR_lights_punctual","gltfLights","linkSkins","meshGroup","createResources","bufferViewData","textureAssets","textureInstances","applySampler","gltfSampler","getFilter","getWrap","wrapS","wrapT","gltfTextureUniqueId","getTextureSource","gltfTexture","KHR_texture_basisu","EXT_texture_webp","createImages","urlBase","images","processAsync","mimeTypeFileExtensions","getGammaTextures","KHR_materials_sheen","specularGlossiness","KHR_materials_pbrSpecularGlossiness","KHR_materials_specular","loadTexture","gltfImage","mimeType","gammaTextures","promise","crossOrigin","createTextures","seenImages","gltfImageIndex","cloneAsset","imageAsset","loadBuffers","binaryChunk","gltfBuffer","byteString","binaryArray","parseGltf","gltfChunk","decodeBinaryUtf8","parseGlb","glbData","magic","chunkLength","chunkType","chunkData","parseChunk","hasGlbHeader","u8","createBufferViews","gltfBufferView","GlbParser","createDefaultMaterial","AnimationHandler","parseResult","_parseAnimationV3","animData","_parseAnimationV4","defPos","defaults","defRot","defScl","AnimClipHandler","AnimStateGraphHandler","ie","msie","trident","rv","AudioHandler","_isSupported","msg","_createSound","decodeAudioData","onReady","BinaryHandler","GlbContainerResource","createModel","createAsset","_assetName","assetName","subAsset","instantiateModelEntity","instantiateRenderEntity","skinnedMeshInstances","materialIndex","instData","vbFormat","cloneHierarchy","glb","attachedMi","glbNode","cloneMi","childClone","sceneClones","createSceneHierarchy","getMaterialVariants","applyMaterialVariant","renderComponent","_applyMaterialVariant","applyMaterialVariantInstances","sceneNodes","nodeType","skinIndex","destroyAsset","destroyAssets","GlbContainerParser","_getUrlWithoutParams","ContainerResource","ContainerHandler","glbContainerParser","parsers","_getParser","CssHandler","CubemapHandler","loadAssets","getAssetIds","cubemapAsset","compareAssetIds","assetIdA","assetIdB","assetData","oldAssets","_handlerState","oldResources","getType","rgbm","faceAssets","cmpArrays","faceTextures","faceLevels","faceTexture","faces","resolveId","valueInt","loadedAssetIds","loadedAssets","onError","processTexAsset","texAsset","assetId_","addressu","addressv","FolderHandler","Font","em","upgradeDataSchema","newChars","newKey","letter","FontHandler","numLoaded","onLoaded","SplatCompressedIterator","unpackUnorm","unpack111011","unpack8888","unpackRot","chunkSize","shData0","shData1","shData2","shCoeffs","ci","shData","GSplatCompressedData","getChunks","strideCopy","numEntries","GSplatCompressedResource","chunkTexture","shTexture0","shTexture1","shTexture2","chunkTextureSize","chunkTextureData","magicBytes","endHeaderBytes","dataTypeMap","Float64Array","StreamBuf","progressFunc","tail","newSize","copyWithin","compact","getInt8","getInt16","getInt32","getFloat32","getFloat64","parseHeader","isCompressedPly","chunkProperties","vertexProperties","shProperties","_","hasBaseElements","hasSHElements","isFloatPly","readCompressedPly","streamBuf","numChunkProperties","evalStorageSize","storageSize","toCopy","texStorageSize","srcCoeffs","tmpBuf","toRead","tidx","readFloatPly","numProperties","inputSize","vertexIdx","floatData","checkFloatData","readGeneralPly","propertyParsingFunctions","readPly","propertyFilter","headerLength","storageType","defaultElementFilter","PlyParser","totalLength","totalReceived","elementFilter","combineProgress","upgradeMeta","SogsParser","loadTextures","subs","mapUrl","allSettled","parseZipArchive","u16","extractEocd","cdSizeBytes","cdOffsetBytes","extractCdr","filenameLength","extraFieldLength","fileCommentLength","compressionMethod","compressedSizeBytes","uncompressedSizeBytes","lfhOffsetBytes","recordSizeBytes","extractLfh","extraLength","offsetBytes","eocd","cdr","lfh","compression","inflate","compressed","ds","DecompressionStream","pipeThrough","ab","Response","downloadArrayBuffer","statusText","releaseLock","SogBundleParser","metaFile","GSplatOctreeParser","GSplatHandler","ply","sog","CompressUtils","setCompressedPRS","singleVecs","___1","tripleVecs","___2","oneCharToKey","fieldFirstCode","fieldArray","multCharToKey","fieldCodeBase","Decompress","_handleMap","_handleArray","_result","_handleKey","origKey","_handleArElt","elt","SceneParser","compressedFormat","entDecompressed","curData","curEnt","_createEntity","childEnt","_openComponentData","resource_id","_setPosRotScale","_isTemplate","template","systemsList","entityData","isTemplate","SceneUtils","errMsg","HierarchyHandler","HtmlHandler","JsonHandler","StandardMaterialValidator","setInvalid","removeInvalid","validate","TYPES","REMOVED","pathMapping","enumType","enumValidators","chunkNames","validated","_createEnumValidator","JsonStandardMaterialParser","migrated","migrate","dstMap","mapping_format","RENAMED_PROPERTIES","DEPRECATED_PROPERTIES","_validator","PLACEHOLDER_MAP","MaterialHandler","_bindAndAssignAssets","_assignTexture","_getPlaceholderTexture","placeholder","_assignPlaceholderTexture","_onTextureAdd","_onTextureRemoveOrUnload","_assignCubemap","prefiltered","_onCubemapLoad","_onCubemapAdd","_onCubemapRemoveOrUnload","prefilteredCubeMap128","TEXTURES","assetReference","dataAssetId","isPlaceHolderTexture","dataValidated","CUBEMAPS","GlbModelParser","modelHandler","JSON_PRIMITIVE_TYPE","JSON_VERTEX_ELEMENT_TYPE","JsonModelParser","modelData","_parseNodes","_parseSkins","_parseVertexBuffers","_parseIndexBuffers","morphs","_parseMorphs","_parseMeshes","_parseMeshInstances","parents","skinData","ibm","_getMorphVertexCount","morphTarget","morphTargetArray","sparseToFull","full","attributeMap","texCoord0","texCoord1","texCoord2","texCoord3","texCoord4","texCoord5","texCoord6","texCoord7","maxVerts","meshAabb","meshInstanceData","ModelHandler","_parsers","decider","handleMaterial","addParser","SceneHandler","ScriptTypes","Type","_types","reservedScriptNames","getReservedScriptNames","createScript","registerScript","reservedAttributes","value2","toLowerCamelCase","ScriptHandler","onScriptLoad","urlWithoutEndHash","basePath","isEsmScript","_loadModule","_loadScript","isBrowserWithOrigin","baseUrl","importUrl","__esmScriptDynamicImportRuntime__","scriptSchema","scriptClass","extendsScriptType","lowerCamelCaseName","ShaderHandler","onTextureAtlasLoaded","onTextureAtlasAdded","SpriteHandler","__data","_updateAtlas","Template","_templateRoot","_parseTemplate","TemplateHandler","TextHandler","JSON_ADDRESS_MODE$1","JSON_FILTER_MODE$1","regexFrame","TextureAtlasHandler","textureUrl","minfilter","magfilter","BasisWorker","BASIS_FORMAT","cTFETC1","cTFETC2","cTFBC1","cTFBC3","cTFPVRTC1_4_RGB","cTFPVRTC1_4_RGBA","cTFASTC_4x4","cTFATC_RGB","cTFATC_RGBA_INTERPOLATED_ALPHA","cTFRGBA32","cTFRGB565","cTFRGBA4444","opaqueMapping","astc","atc","none","alphaMapping","PIXEL_FORMAT","ETC1","ETC2_RGB","ETC2_RGBA","DXT1","DXT5","PVRTC_4BPP_RGB_1","PVRTC_4BPP_RGBA_1","ASTC_4x4","ATC_RGB","ATC_RGBA","R8_G8_B8_A8","R5_G6_B5","R4_G4_B4_A4","basisToEngineMapping","basisFormat","deviceDetails","unswizzleGGGR","genB","R","G","pack565","isPOT","performanceNow","rgbPriority","rgbaPriority","chooseTargetFormat","hasAlpha","isUASTC","testInOrder","dimensionsValid","transcodeKTX2","KTX2File","funcStart","basisFile","getWidth","getHeight","getLevels","getHasAlpha","unswizzle","isGGGR","startTranscoding","levelData","dstSize","getImageTranscodedSizeInBytes","transcodeImage","is16BitFormat","transcodeTime","unswizzledGGGR","transcodeBasis","BasisFile","getImageWidth","getImageHeight","getNumImages","getNumLevels","transcode","isKTX2","workerTranscode","workerInit","instantiateWasmFunc","initializeBasis","getCompressionFormats","prepareWorkerModules","getWorkerBlob","basisCode","sendResponse","module_","BasisQueue","clients","enqueueClient","client","handleResponse","BasisClient","eager","defaultNumWorkers","defaultRgbPriority","defaultRgbaPriority","defaultMaxRetries","lazyConfig","basisInitialize","eagerWorkers","clientConfig","basisTranscode","TextureParser","BasisParser","basisModuleFound","textureOptions","ImgParser","hasContents","_loadImageBitmapFromBlob","_loadImageBitmap","_loadImage","originalUrl","Image","retryTimeout","dummySize","createImageBitmap","colorSpaceConversion","imageBitmap","IDENTIFIER","KNOWN_FORMATS","createContainer","pixelFormat","KtxParser","dataU32","endianness","glTypeSize","glInternalFormat","glBaseInternalFormat","pixelDepth","numberOfArrayElements","numberOfFaces","numberOfMipmapLevels","bytesOfKeyValueData","isCubemap","mipmapLevel","imageSizeInBytes","KHRConstants","KHR_DF_MODEL_UASTC","Ktx2Parser","rs","vkFormat","typeSize","levelCount","supercompressionScheme","dfdByteOffset","dfdByteLength","kvdByteOffset","kvdByteLength","sgdByteOffset","sgdByteLength","uncompressedByteLength","dfdTotalSize","colorModel","DdsParser","isFourCc","fcc","bpp","FCC_DXT1","FCC_DXT5","FCC_FP16","FCC_FP32","FCC_ETC1","FCC_PVRTC_2BPP_RGB_1","FCC_PVRTC_2BPP_RGBA_1","FCC_PVRTC_4BPP_RGB_1","FCC_PVRTC_4BPP_RGBA_1","pvrtc2","pvrtc4","mipSize","DXT_BLOCK_WIDTH","DXT_BLOCK_HEIGHT","numBlocksAcross","numBlocksDown","numBlocks","mipWidth","mipHeight","mipBuff","HdrParser","readStream","_readPixels","_readPixelsFlat","rgbe","scanstart","JSON_ADDRESS_MODE","JSON_FILTER_MODE","JSON_TEXTURE_TYPE","_completePartialMipmapChain","isHtmlElement","downsample","sampledWidth","sampledHeight","sampledData","xs","ys","xsys","TextureHandler","imgParser","_getTextureOptions","dds","ktx","ktx2","XRTYPE_INLINE","XRTYPE_VR","XRTYPE_AR","XRSPACE_VIEWER","XRSPACE_LOCAL","XRSPACE_LOCALFLOOR","XRSPACE_BOUNDEDFLOOR","XRSPACE_UNBOUNDED","XRTARGETRAY_GAZE","XRTARGETRAY_SCREEN","XRTARGETRAY_POINTER","XREYE_NONE","XREYE_LEFT","XREYE_RIGHT","XRHAND_NONE","XRHAND_LEFT","XRHAND_RIGHT","XRTRACKABLE_POINT","XRTRACKABLE_PLANE","XRTRACKABLE_MESH","XRDEPTHSENSINGUSAGE_CPU","XRDEPTHSENSINGUSAGE_GPU","XRDEPTHSENSINGFORMAT_L8A8","XRDEPTHSENSINGFORMAT_R16U","XRDEPTHSENSINGFORMAT_F32","XrDomOverlay","_supported","_session","domOverlayState","_root","XRDOMOverlayState","poolVec3","poolQuat","XrHitTestSource","_xrHitTestSource","hitTest","cancel","_transient","transientResults","getHitTestResultsForTransientInput","transientResult","_getByInputSource","updateHitResults","getHitTestResults","_inputSource","candidateDistance","candidateHitTestResult","pose","getPose","_referenceSpace","xrHitTestSource","transient","EVENT_RESULT","XrHitTest","_onSessionStart","enabledFeatures","_available","_checkingAvailability","requestReferenceSpace","referenceSpace","requestHitTestSource","hitTestSource","_onSessionEnd","profile","xrRay","offsetRay","DOMPoint","XRRay","entityTypes","_onHitTestSource","requestHitTestSourceForTransientInput","XRSession","EVENT_AVAILABLE","EVENT_UNAVAILABLE","XrTrackedImage","trackable","_trackable","tracking","_tracking","emulated","_emulated","_bitmap","widthInMeters","bitmap","_pose","_rotation","_measuredWidth","EVENT_TRACKED","EVENT_UNTRACKED","XrImageTracking","trackedImage","_images","getTrackedImageScores","prepareImages","bitmaps","getImageTrackingResults","trackingState","measuredWidthInMeters","imageSpace","XRImageTrackingResult","XrFinger","_hand","_joints","tip","_tip","_fingers","tipJointIds","XRHand","tipJointIdsIndex","XrJoint","_radius","_localPosition","_localRotation","_updateTransforms","_localTransform","finger","_finger","wrist","_wrist","fingerJointIds","vecA$1","vecB$1","vecC","XrHand","xrInputSource","_xrInputSource","joint","jointSpace","getJointPose","j1","_jointsById","j4","j6","j9","j16","j21","_dirtyRay","_rayLocal","jointL","jointR","handedness","squeezing","_fingerIsClosed","_squeezing","getJointById","fingers","tips","_tips","xrHand","jointId","EVENT_TRACKING","EVENT_TRACKINGLOST","vec3A$1","quat","ids$1","XrInputSource","targetRayMode","profiles","grip","_grip","selecting","_selecting","_elementInput","_elementEntity","elementEntity","hitTestSources","_hitTestSources","gripSpace","gripPose","_localPositionLast","_velocitiesTimestamp","_velocitiesAvailable","velocitiesSupported","targetRayPose","targetRaySpace","_updateRayTransforms","parentTransform","hitTestStart","onHitTestSourceAdd","hitTestResult","onHitTestSourceRemove","EVENT_SELECT","EVENT_SQUEEZE","EVENT_SQUEEZESTART","EVENT_SQUEEZEEND","EVENT_HITTESTADD","EVENT_HITTESTREMOVE","EVENT_HITTESTRESULT","XrInput","_onInputSourcesChangeEvt","inputSources","_addInputSource","_inputSources","_onInputSourcesChange","_removeInputSource","added","XRPose","vec3A","vec3B","mat4A","mat4B","XrLightEstimation","requestLightProbe","_lightProbeRequested","_lightProbe","lightProbe","wasRequested","lightEstimate","getLightEstimate","pli","primaryLightIntensity","primaryLightDirection","_sphericalHarmonics","sphericalHarmonicsCoefficients","sphericalHarmonics","XrPlane","_xrPlane","_planeDetection","planeSpace","_lastChangedTime","lastChangedTime","polygon","semanticLabel","planeDetection","xrPlane","XrPlaneDetection","_planes","_planesIndex","detectedPlanes","plane","XRPlane","XrAnchor","_xrAnchor","xrAnchor","anchorSpace","_anchors","persist","persistence","_uuid","_uuidRequests","requestPersistentHandle","uuid","_indexByUuid","uuidRequest","forget","anchors","EVENT_PERSIST","EVENT_FORGET","XrAnchors","_creationQueue","_createAnchor","_onAnchorDestroy","XRHitTestResult","hitResult","createAnchor","XRRigidTransform","_persistence","restorePersistentAnchor","deletePersistentAnchor","_callbacksAnchors","trackedAnchors","uuids","persistentAnchors","XRAnchor","XrMesh","xrMesh","_xrMesh","_meshDetection","meshSpace","_lastChanged","meshDetection","XrMeshDetection","detectedMeshes","_removeMesh","XRMesh","XrView","textureColor","_textureColor","textureDepth","_textureDepth","depthUvMatrix","_depthMatrix","depthValueToMeters","_depthInfo","rawValueToMeters","eye","_xrView","_viewport","_projViewOffMat","_viewOffMat","_viewInvOffMat","_viewMat3","_positionData","xrView","availableColor","_xrCamera","getViewport","inverse","_viewInvMat","_updateTextureColor","_updateDepth","webglBinding","getCameraImage","_frameBufferSource","_frameBuffer","availableDepth","depthGpuOptimized","infoSource","depthInfo","getDepthInformation","matrixDirty","resized","normDepthBufferFromNormView","depthPixelFormat","_emptyDepthBuffer","_onDeviceLost","getDepth","getDepthInMeters","viewsCount","supportedColor","supportedDepth","filtering","EVENT_DEPTHRESIZE","XrViews","_supportedColor","_supportedDepth","_availableColor","_availableDepth","depthUsage","_depthUsage","_depthFormat","_depthFormats","xrViews","_indexTmp","depthDataFormat","XRCamera","XRWebGLBinding","XRDepthInformation","XrManager","_spaceType","_framebufferScaleFactor","framebufferScaleFactor","_setClipPlanes","optionalFeatures","webgl","imageTracking","domOverlay","depthSensing","usagePreference","dataFormatPreference","cameraColor","trackedImages","_onStartOptionsReady","requestSession","isAvailable","_deviceAvailabilityCheck","_sessionSupportCheck","initiateRoomCapture","updateTargetFrameRate","frameRate","isSessionSupported","onClipPlanesChange","_createBaseLayer","supportedFrameRates","_supportedFrameRates","_depthNear","_depthFar","updateRenderState","depthNear","depthFar","_baseLayer","XRWebGLLayer","_onDeviceRestored","makeXRCompatible","framebufferWidth","framebufferHeight","getViewerPose","lengthOld","posePosition","poseOrientation","lightEstimation","fixedFoveation","EVENT_START","EVENT_UPDATE","Application","graphicsDeviceOptions","addComponentSystems","addResourceHandles","AssetListLoader","_waitingAssets","_onAddAsset","_assetHasDependencies","_callback","loadingAssets","_loadingAssets","_loadingComplete","_failed","_waitForAsset","assetList","assetRegistry","DEFAULT_TEXTURE_SIZE","Atlas","ctx","clearRect","fillStyle","fillRect","CanvasFont","_chars","_normalizeCharsSet","_renderAtlas","updateTextures","newCharsSet","atlases","fontName","glyphSize","fontWeight","_colorToRgbString","renderCharacter","fillText","_getAtlas","charsArray","TEXT_ALIGN","TEXT_BASELINE","atlasIndex","_createJson","maxDescent","metrics","_getTextMetrics","descent","_xOffset","_yOffset","fs","textAlign","textBaseline","measureText","_addChar","mapNum","mapW","mapH","textSpan","innerHTML","ascent","tempMeshInstances$1","RenderPassPicker","emptyWorldClusters","srcLayers","srcLayer","tempSet","Picker","getSelection","sanitizeRect","decodePixels","getSelectionAsync","selection","deviceValid","SceneSettingsHandler","targetX","targetY","vecA","vecB","rayA","rayB","rayC","_pq","_pa","_pb","_pc","_pd","_m","_au","_bv","_cw","_ir","_sct","_accumulatedScale","_paddingTop","_paddingBottom","_paddingLeft","_paddingRight","_cornerBottomLeft","_cornerBottomRight","_cornerTopRight","_cornerTopLeft","ZERO_VEC4","scalarTriple","intersectLineQuad","denom","ElementInputEvent","_stopPropagation","stopImmediatePropagation","ElementMouseEvent","lastX","lastY","ElementTouchEvent","ElementSelectEvent","ElementInput","domElement","_useMouse","_useTouch","_touchstartHandler","_touchendHandler","_touchmoveHandler","_touchcancelHandler","_selectEventsAttached","_useXr","_clickedEntities","_onXrStart","_onXrEnd","_onXrUpdate","_onXrInputRemove","_calcMouseCoords","_onElementMouseEvent","_determineTouchedElements","touchedElements","_getTargetElementByCoords","newTouchedElements","newTouchInfo","oldTouchInfo","_touchedElements","_fireEvent","_touchesForWhichTouchLeaveHasFired","touchId","touchInfo","hovered","eventType","lastHovered","_hoveredElement","_pressedElement","fireClick","lastTouchUp","_onElementSelectEvent","_selectedElements","_selectedPressedElements","hoveredBefore","hoveredNow","_getTargetElementByRay","_sortElements","rayScreen","_calculateRayScreen","ray3d","_calculateRay3d","_getTargetElement","screenPos","closestDistance3d","currentDistance","_checkElement","cameraLeft","cameraRight","cameraBottom","cameraTop","calculateScaleToScreen","calculateScaleToWorld","buildHitCorners","screenOrWorldCorners","useMouse","useTouch","useXr","PIXELFORMAT_L8_A8","PIXELFORMAT_R5_G6_B5","PIXELFORMAT_R5_G5_B5_A1","PIXELFORMAT_R4_G4_B4_A4","PIXELFORMAT_R8_G8_B8","PIXELFORMAT_R8_G8_B8_A8","PIXELFORMAT_SRGB","PIXELFORMAT_SRGBA","BLENDMODE_CONSTANT_COLOR","BLENDMODE_ONE_MINUS_CONSTANT_COLOR","BLENDMODE_CONSTANT_ALPHA","BLENDMODE_ONE_MINUS_CONSTANT_ALPHA","CHUNKAPI_1_51","CHUNKAPI_1_55","CHUNKAPI_1_56","CHUNKAPI_1_57","CHUNKAPI_1_58","CHUNKAPI_1_60","CHUNKAPI_1_62","CHUNKAPI_1_65","CHUNKAPI_1_70","CHUNKAPI_2_1","CHUNKAPI_2_3","CHUNKAPI_2_5","CHUNKAPI_2_6","CHUNKAPI_2_7","CHUNKAPI_2_8","createSphere","createPlane","createBox","createTorus","createCapsule","createCone","createCylinder","drawFullscreenQuad","defineProperties","swizzleGGGR","_tempBlendState","_tempDepthState","setBlendFunction","blendSrc","blendDst","setBlendFunctionSeparate","blendSrcAlpha","blendDstAlpha","setBlendEquation","setBlendEquationSeparate","blendAlphaEquation","getBlending","setBlending","setDepthFunc","setDepthTest","getCullMode","Key","Node","LitOptions","Proxy","_models","_removedClassProperty","targetClass","comment","syncAabb","getChildren","getName","getPath","getRoot","getParent","setName","_defineAlias","oldName","_deprecateTint","_defineOption","tempOptions","litOptionProperties","getOwnPropertyNames","litOption","getAssetById","RIGIDBODY_TYPE_STATIC","RIGIDBODY_TYPE_DYNAMIC","RIGIDBODY_TYPE_KINEMATIC","RIGIDBODY_CF_STATIC_OBJECT","RIGIDBODY_CF_KINEMATIC_OBJECT","RIGIDBODY_CF_NORESPONSE_OBJECT","RIGIDBODY_ACTIVE_TAG","RIGIDBODY_ISLAND_SLEEPING","RIGIDBODY_WANTS_DEACTIVATION","RIGIDBODY_DISABLE_DEACTIVATION","RIGIDBODY_DISABLE_SIMULATION","isFullscreen","enableFullscreen","Element","ALLOW_KEYBOARD_INPUT","disableFullscreen","getSceneUrl","setVisible","syncBodyToEntity","CpuTimer","_frameIndex","_frameTimings","_prevTimings","_timings","mark","timing","unitsName","decimalPlaces","GpuTimer","StatsTimer","statNames","multiplier","Graph","timer","avgTotal","avgTimer","avgCount","textRefreshRate","timingText","watermark","sample","render2d","WordAtlas","word","initContext","isNumber","measurement","actualBoundingBoxLeft","actualBoundingBoxRight","actualBoundingBoxAscent","actualBoundingBoxDescent","getImageData","vertexShaderGLSL","vertexShaderWGSL","fragmentShaderGLSL","fragmentShaderWGSL","Render2d","uw","uh","wordFlag","x0","y0","tw","u0","u1","quads","startFrame","scrollWidth","scrollHeight","graphTexture","wordsTexture","clr","maxQuads","MiniStats","updateDiv","postRender","graphs","wordAtlas","getDefaultOptions","startSizeIndex","cpu","activeSizeIndex","_activeSizeIndex","gspacing","overallHeight","initGraphs","drawLayer","showGraphs","stat","cssText","shaderOutlineExtendPS","_tempFloatArray","_tempColor","OutlineRenderer","whiteTex","outlineCameraEntity","quadRenderer","getMeshInstances","recursive","models","addEntity","outlineShaderPass","opacityMapUv","opacityMapTransform","opacityVertexColor","opacityVertexColorChannel","colArray","renderingLayer","removeEntity","removeAllEntities","blendOutlines","uOffset","uColorBuffer","uSrcMultiplier","shaderExtend","createRenderTarget","updateRenderTarget","sceneCamera","outlineCamera","sceneCameraEntity","blendLayer","blendLayerTransparent","shaderBlend","CoreExporter","textureToCanvas","calcTextureSize","imagedata","putImageData","dstTexture","newImage","ImageData","newContext","i32","fleb","fdeb","clim","freb","eb","_a","fl","revfl","_b","revfd","rev","hMap","cd","mb","le","co","rvb","sv","r_1","flt","fdt","flm","fdm","shft","slc","ec","nt","captureStackTrace","wbits","wbits16","hTree","et","i0","maxSym","tr","mbt","ln","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","clen","wfblk","dat","wblk","final","syms","lf","df","bs","bl","dlt","mlb","ddt","mdb","_c","lclt","nlc","_d","lcdt","ndc","lcfreq","_e","lct","mlcb","nlcc","flen","ftlen","dtlen","lm","ll","dm","dl","llm","lcts","clct","sym","deo","dflt","lvl","plvl","pre","st","lst","msk_1","bs1_1","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","pti","lin","din","crct","crc","dopt","dictionary","dict","newDat","mem","mrg","wbytes","deflateSync","fltn","te","TextEncoder","td","tds","strToU8","latin1","ai","exfl","wzh","ce","exl","os","mtime","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","exf","wzf","zipSync","tot","com","oe","cdl","badd","ROOT_FILE_NAME","materialListTemplate","meshTemplate","faceVertexCounts","uv0","uv1","meshInstanceTemplate","meshRefPath","materialRefPath","materialValueTemplate","UsdzExporter","meshMap","textureMap","materialMap","nodeNames","build","allMeshInstances","rootContent","buildMeshInstance","textureArray","texturePromise","toBlob","finalData","textureArrayBuffer","getTextureFileIds","alignFiles","offsetMod64","padLength","getFileIds","category","refName","uniqueId","content","contentU8","getMaterialRef","materialRef","buildMaterial","getMeshRef","meshRef","buildMesh","buildArray2","buildArray3","buildMat4","vectors","materialName","materialPath","materialPropertyPath","textureIds","mapType","addTexture","textureSlot","propType","valueName","handleOpacity","tintTexture","textureValue","materialObject","indicesCount","meshObject","refPath","getIndexComponentType","getComponentType","getAccessorType","getSemantic","engineSemantic","isCanvasTransparent","textureSemantics","GltfExporter","collectResources","entityMeshInstances","bufferViewMap","compressableTexture","collectMeshInstances","nodeMeshInstances","writeBufferViews","writeBufferView","bufferInfo","addBufferView","bufferViewIndex","bufferViewIndices","writeCameras","cam","attachTexture","textureSemantic","extensionsUsed","extensionsRequired","writeStandardMaterial","pbr","writeMaterials","writeNodes","entityMeshInstance","writeMeshes","createPrimitive","stripUnusedAttributes","isUsed","texCoordIndex","texSemantic","emi","viewIndex","writeSkins","matrixBuffer","accessorIndex","convertTextures","srcTextures","srcTexture","writeTextures","textureCanvases","isRGBA","getBlob","FileReader","readAsArrayBuffer","onloadend","getPaddedArrayBuffer","quality","convertToBlob","paddingByte","paddedLength","buildJson","encoder","jsonData","jsonHeaderLength","jsonDataLength","jsonPaddingLength","binaryHeaderLength","binaryDataLength","glbBuffer","glbView","setUint32","setUint8","bufferViewId","srcBuffer","SSAOTYPE_NONE","SSAOTYPE_LIGHTING","SSAOTYPE_COMBINE","glslDownsamplePS","wgslDownsamplePS","RenderPassDownsample","_sourceTexture","sourceTextureId","premultiplyTexture","premultiplyTextureId","sourceInvResolutionValue","sourceInvResolutionId","boxFilter","premultiplySrcChannel","glslUpsamplePS","wgslUpsamplePS","RenderPassUpsample","RenderPassBloom","destroyRenderPasses","destroyRenderTargets","createRenderTargets","bloomRenderTarget","calcMipLevels","createRenderPasses","numPasses","passSourceTexture","maxNumPasses","blurLevel","bloomTexture","composePS$1","composeBloomPS$1","composeDofPS$1","composeSsaoPS$1","composeGradingPS$1","composeVignettePS$1","composeFringingPS$1","composeCasPS$1","composeColorLutPS$1","composeChunksGLSL","composePS","composeBloomPS","composeDofPS","composeSsaoPS","composeGradingPS","composeVignettePS","composeFringingPS","composeCasPS","composeColorLutPS","composeDeclarationsPS","composeMainStartPS","composeMainEndPS","composeChunksWGSL","RenderPassCompose","debug","_debug","_shaderDirty","colorLUT","_colorLUT","_bloomTexture","cocTexture","_cocTexture","ssaoTexture","_ssaoTexture","taaEnabled","_taaEnabled","gradingEnabled","_gradingEnabled","vignetteEnabled","_vignetteEnabled","fringingEnabled","_fringingEnabled","sharpness","_sharpness","isSharpnessEnabled","neededGammaCorrection","prevValue","_customComposeChunks","currentValue","gammaCorrectionName","customChunks","declHash","startHash","endHash","blurTextureUpscale","sceneTex","sceneTexture","sceneTextureId","sceneTextureInvResValue","sceneTextureInvResId","bloomTextureId","bloomIntensityId","bloomIntensity","cocTextureId","blurTextureId","blurTexture","ssaoTextureId","bcsId","gradingBrightness","gradingContrast","gradingSaturation","tintId","gradingTint","lutTexture","colorLUTParams","colorLUTIntensity","colorLUTParamsId","colorLUTId","vignetterParamsId","vignetteInner","vignetteOuter","vignetteCurvature","vignetteIntensity","fringingIntensityId","fringingIntensity","sharpnessId","glslSampleCatmullRomPS","wgslSampleCatmullRomPS","glsltaaResolvePS","wgsltaaResolvePS","RenderPassTAA","setup","historyTextures","historyRenderTargets","historyTexture","historyTextureId","historyIndex","textureSizeId","viewProjPrevId","viewProjInvId","jittersId","glslCocPS","wgslCocPS","RenderPassCoC","paramsValue","focusRange","focusDistance","paramsId","nearBlur","glsldofBlurPS","wgsldofBlurPS","RenderPassDofBlur","blurRings","_blurRings","blurRingPoints","_blurRingPoints","kernelCount","nearTexture","nearTextureId","farTextureId","farTexture","kernelId","kernelCountId","blurRadiusNearId","blurRadiusNear","blurRadiusFarId","blurRadiusFar","RenderPassDof","cocPass","farPass","blurPass","cocRT","farRt","blurRt","setupCocPass","setupFarPass","setupBlurPass","blurRadius","highQuality","sceneTextureHalf","tempMeshInstances","DEPTH_UNIFORM_NAME","RenderPassPrepass","linearDepthTexture","setupRenderTarget","linearDepthFormat","linearDepthClearValue","glslDepthAwareBlurPS","wgslDepthAwareBlurPS","RenderPassDepthAwareBlur","filterSizeId","glslSsaoPS","wgslSsaoPS","RenderPassSsao","minAngle","minAngleSin","spiralTurns","peak","projectionScale","power","_blueNoise","ssaoTextureSizeInvId","blurEnabled","blurRT","blurPassHorizontal","blurPassVertical","CameraFrameOptions","sceneColorMap","lastGrabLayerId","lastGrabLayerIsTransparent","lastSceneLayerId","lastSceneLayerIsTransparent","bloomEnabled","ssaoType","ssaoBlurEnabled","prepassEnabled","dofEnabled","dofNearBlur","dofHighQuality","_defaultOptions","RenderPassCameraFrame","rtHalf","prePass","scenePass","scenePassTransparent","composePass","bloomPass","ssaoPass","taaPass","afterPass","scenePassHalf","dofPass","sanitizeOptions","renderTargetScale","_renderTargetScale","needsReset","currentOptions","arraysNotEqual","setupRenderPasses","hdrFormat","targetRenderTarget","_bloomEnabled","_sceneHalfEnabled","sceneOptions","createPasses","allPasses","collectPasses","setupScenePrepass","setupSsaoPass","scenePassesInfo","setupScenePass","sceneTextureWithTaa","setupTaaPass","setupSceneHalfPass","setupBloomPass","setupDofPass","setupComposePass","setupAfterPass","setupScenePassSettings","lastAddedIndex","inputTexture","inputTextureHalf","textureWithTaa","cameraFrame","CameraFrame","cameraLayersChanged","renderPassCamera","createRenderPass","rendering","updateOptions","bloom","taa","sceneDepthMap","renderFormats","dof","grading","vignette","fringing","saturation","brightness","contrast","tint","inner","outer","curvature","tmpV1$5","rotation$4","Pose","angles","alpha1","alpha3","xRange","yRange","zRange","euler","pitchRange","yawRange","look","elev","azim","getFocus","InputDelta","_value","InputFrame","deltas","InputSource","InputConsumer","InputController","smooth","DOUBLE_TAP_THRESHOLD","DOUBLE_TAP_VARIANCE","movementState","down","pointerId","screenX","screenY","mvX","mvY","v$1","VirtualJoystick","_range","bx","by","SingleGestureSource","_layout","_pointerData","joystick","_joystick","_onPointerDown","pointerType","_movementState","setPointerCapture","sqrDist","_lastPointer","doubleTap","_onPointerMove","_onPointerUp","releasePointerCapture","suffix","DualGestureSource","leftJoystick","_leftJoystick","rightJoystick","_rightJoystick","leftInput","rightInput","tmpVa","MultiTouchSource","_pointerEvents","_getMidPoint","_pointerPos","_pinchDist","_getPinchDist","pinchDist","pinch","_onContextMenu","PASSIVE","KEY_CODES","C","D","E","F","I","J","K","M","O","P","Q","S","T","U","V","W","X","Y","Z","SPACE","SHIFT","CTRL","KEY_COUNT","KeyboardMouseSource","_onWheel","wheel","_pointerLock","_clearButtons","_button","_pointerId","_onKeyDown","_setKey","_onKeyUp","_keyMap","_keyNow","_keyPrev","pointerLock","BUTTON_CODES","LB","RB","LT","RT","SELECT","START","LEFT_STICK","RIGHT_STICK","BUTTON_COUNT","GamepadSource","_buttonPrev","leftStick","rightStick","buttonCode","damp","offset$1","angles$1","rotation$3","FlyController","_targetPose","moveDamping","rotateDamping","dir$2","rotation$2","OrbitController","_targetRootPose","_rootPose","zoomRange","_targetChildPose","_childPose","zoomDamping","dir$1","position$1","rotation$1","FocusController","focusDamping","GIZMOSPACE_LOCAL","GIZMOSPACE_WORLD","GIZMOAXIS_X","GIZMOAXIS_Y","GIZMOAXIS_Z","GIZMOAXIS_YZ","GIZMOAXIS_XZ","GIZMOAXIS_XY","GIZMOAXIS_XYZ","GIZMOAXIS_FACE","ray$1","MIN_SCALE","PERS_SCALE_RATIO","ORTHO_SCALE_RATIO","UPDATE_EPSILON$2","DIST_EPSILON","Gizmo","createLayer","_renderUpdate","coordSpace","_coordSpace","_updateRotation","facingDir","gizmoPos","cameraDir","_getSelection","EVENT_POINTERDOWN","EVENT_POINTERMOVE","EVENT_POINTERUP","_updatePosition","EVENT_POSITIONUPDATE","EVENT_ROTATIONUPDATE","EVENT_SCALEUPDATE","intersectShapes","disabled","parentTM","triData","tris","triWTM","invTriWTM","s0","EVENT_NODESATTACH","EVENT_NODESDETACH","prerender","EVENT_RENDERUPDATE","_handles","COLOR_RED","COLOR_GREEN","COLOR_BLUE","COLOR_GRAY","color4from3","v1$3","v2$3","point$3","color$1","AXES$2","TransformGizmo","snap","_snap","theme","_theme","xAxisColor","setTheme","shapeBase","shapeHover","colorAlpha","guideBase","guideOcclusion","yAxisColor","zAxisColor","xyz","_dragging","_hoverAxis","_selectedAxis","_getIsPlane","_hover","_hovering","_shapes","hover","_hoverIsPlane","_createRay","mouseWPos","orthoDepth","_createPlane","isFacing","isLine","_rootStartRot","_rootStartPos","_dirFromAxis","_projectToAxis","_screenToPoint","_drawGuideLines","activeAxis","activeIsPlane","_drawSpanLine","occluded","_createTransform","_shapeMap","enableShape","shapeAxis","isShapeEnabled","partial","gizmoRot","_selectedIsPlane","_selectionStartPoint","snapIncrement","dragMode","EVENT_TRANSFORMSTART","EVENT_TRANSFORMMOVE","EVENT_TRANSFORMEND","tmpV1$4","tmpV2$3","tmpV3$1","TriData","setTransform","tri","unlitShader","tmpG","Shape","_disabled","_visible","_createRenderComponent","_disabledColor","_defaultColor","_cull","_hoverColor","defaultColor","hoverColor","disabledColor","UPDATE_EPSILON$1","PlaneShape","gap","_gap","flipped","_flipped","tmpV1$3","tmpV2$2","tmpQ1$1","ArrowShape","lineThickness","_lineThickness","lineLength","_lineLength","arrowThickness","_arrowThickness","arrowLength","_arrowLength","tolerance","_tolerance","_head","_line","SphereShape","v1$2","v2$2","point$2","delta$1","q$1","GLANCE_EPSILON$1","AXES$1","TranslateGizmo","axisGap","_setArrowProp","axisLineThickness","axisLineLength","axisLineTolerance","axisArrowThickness","axisArrowLength","axisPlaneSize","_setPlaneProp","axisPlaneGap","axisCenterSize","flipShapes","flipPlanes","_shapesLookAtCamera","_drag","_storeNodePositions","_nodeLocalPositions","_nodePositions","_setNodePositions","translateDelta","isPlane","TORUS_RENDER_SEGMENTS","TORUS_INTERSECT_SEGMENTS","ArcShape","_createTorusGeometry","_tubeRadius","_ringRadius","_createTorusMesh","_triDataCache","_sectorAngle","tmpV1$2","MeshLine","_thickness","point$1","v1$1","v2$1","RING_FACING_EPSILON","UPDATE_EPSILON","AXES","RotateGizmo","xyzTubeRadius","_setDiskProp","xyzRingRadius","faceTubeRadius","faceRingRadius","centerRadius","ringTolerance","angleGuideThickness","_guideAngleLines","orbitRotation","rotationMode","_storeGuidePoints","_guideAngleStart","_guideAngleEnd","_updateGuidePoints","angleDelta","_angleGuide","baseColor","startColor","sector","_facingDir","_storeNodeRotations","_nodeLocalRotations","_nodeRotations","_nodeOffsets","_setNodeRotations","angleAxis","intersection","_calculateArcAngle","facingDot","_screenStartPos","projDir","_selectionStartAngle","_screenPos","BoxShape","tmpV1$1","tmpV2$1","tmpQ1","BoxLineShape","boxSize","_boxSize","_box","GLANCE_EPSILON","ScaleGizmo","_uniform","axisBoxSize","_storeNodeScales","_nodeScales","_setNodeScales","scaleDelta","lowerBoundScale","tmpV1","tmpV2","tmpV3","tmpM1","ViewCube","dom","colorX","_colorX","xaxis","colorY","_colorY","yaxis","colorZ","_colorZ","zaxis","colorNeg","_colorNeg","textSize","_textSize","_svg","_x2y2","createElementNS","namespaceURI","_circle","circle","textContent","cameraMatrix","createDocumentFragment","colX","colY","colZ","EVENT_CAMERAALIGN","loadModules","urlPrefix","moduleLoaded","ASSET_PREFIX","SCRIPT_PREFIX","SCENE_PATH","CONTEXT_OPTIONS","SCRIPTS","CONFIG_FILENAME","INPUT_SETTINGS","useKeyboard","useGamepads","PRELOAD_MODULES","legacy","pc","showSplash","wrapper","splash","logo","bar","hideSplash","getElementById","parentElement","setProgress","createCss","css","styleSheet","createTextNode"],"mappings":"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AAA,CAAK,IACP,CAAA,CACD,CACD,CACE5D,kBACA,CACEp1B,IAAAA,CAAM,OACN4B,CAAAA,IAAAA,CAAM,EACNo3B,GAAK,CAAA,IAAA,CACLC,UAAYhD,CAAAA,kBACd,EACD,CACD,CACE8B,gBACA,CAAA,CACE/3B,KAAM,MACN4B,CAAAA,IAAAA,CAAM,CACR,CAAA,CACD,CACD,CACEo2B,iBAAAA,CACA,CACEh4B,IAAAA,CAAM,QACN4B,IAAM,CAAA,CACR,CACD,CAAA,CACD,CACE4zB,kBACA,CAAA,CACEx1B,IAAM,CAAA,QAAA,CACN4B,IAAM,CAAA,CACR,CACD,CAAA,CACD,CACE6zB,mBACA,CAAA,CACEz1B,IAAM,CAAA,SAAA,CACN4B,KAAM,CACR,CAAA,CACD,CACD,CACE8zB,mBACA,CACE11B,IAAAA,CAAM,QACN4B,CAAAA,IAAAA,CAAM,EACR,CACD,CAAA,CACD,CACE+zB,mBAAAA,CACA,CACE31B,IAAM,CAAA,SAAA,CACN4B,IAAM,CAAA,EACR,EACD,CACD,CACEg0B,gBACA,CAAA,CACE51B,KAAM,MACN4B,CAAAA,IAAAA,CAAM,CACR,CAAA,CACD,CACD,CACEi0B,iBACA,CAAA,CACE71B,KAAM,OACN4B,CAAAA,IAAAA,CAAM,CACR,CAAA,CACD,CACD,CACEk3B,mBAAAA,CACA,CACE94B,IAAAA,CAAM,UACN4B,IAAM,CAAA,CACR,CACD,CAAA,CACD,CACEk0B,wBACA,CAAA,CACE91B,IAAM,CAAA,cAAA,CACN4B,KAAM,CACR,CAAA,CACD,CACD,CACEm0B,oBACA,CACE/1B,IAAAA,CAAM,SACN4B,CAAAA,IAAAA,CAAM,CACR,CACD,CAAA,CACD,CACEo0B,iBAAAA,CACA,CACEh2B,IAAAA,CAAM,OACN4B,CAAAA,IAAAA,CAAM,EACNo3B,GAAK,CAAA,IAAA,CACLE,IAAM,CAAA,IACR,EACD,CACD,CACEjD,kBACA,CAAA,CACEj2B,KAAM,QACN4B,CAAAA,IAAAA,CAAM,CACNo3B,CAAAA,GAAAA,CAAK,KACLE,IAAM,CAAA,IACR,CACD,CAAA,CACD,CACEtC,iBACA,CAAA,CACE52B,IAAM,CAAA,OAAA,CACN4B,KAAM,CACNo3B,CAAAA,GAAAA,CAAK,IACP,CAAA,CACD,CACD,CACEP,kBAAAA,CACA,CACEz4B,IAAAA,CAAM,QACN4B,CAAAA,IAAAA,CAAM,CACNo3B,CAAAA,GAAAA,CAAK,KACLE,IAAM,CAAA,IACR,CACD,CAAA,CACD,CACE7D,gBACA,CAAA,CACEr1B,IAAM,CAAA,MAAA,CACNm5B,UAAW,CACXH,CAAAA,GAAAA,CAAK,IACLC,CAAAA,UAAAA,CAAYd,qBACd,CACD,CAAA,CACD,CACE7C,gBAAAA,CACA,CACEt1B,IAAM,CAAA,MAAA,CACNm5B,SAAW,CAAA,EAAA,CACXH,IAAK,IACLC,CAAAA,UAAAA,CAAYb,sBACd,CAAA,CACD,CACD,CACE7C,gBAAAA,CACA,CACEv1B,IAAAA,CAAM,MACNm5B,CAAAA,SAAAA,CAAW,EACXH,CAAAA,GAAAA,CAAK,KACLC,UAAYZ,CAAAA,sBACd,CACD,CAAA,CACD,CACEnC,gBACA,CAAA,CACEl2B,IAAM,CAAA,MAAA,CACNm5B,UAAW,CACXH,CAAAA,GAAAA,CAAK,IACP,CAAA,CACD,CACD,CACE7C,oBAAAA,CACA,CACEn2B,IAAAA,CAAM,WACNm5B,SAAW,CAAA,CAAA,CACXH,GAAK,CAAA,IAAA,CACLC,WAAYX,qBACd,CAAA,CACD,CACD,CACElC,sBACA,CACEp2B,IAAAA,CAAM,WACNm5B,CAAAA,SAAAA,CAAW,EACXH,CAAAA,GAAAA,CAAK,IACLC,CAAAA,UAAAA,CAAYV,sBACd,CACD,CAAA,CACD,CACElC,4BAAAA,CACA,CACEr2B,IAAM,CAAA,kBAAA,CACNg5B,GAAK,CAAA,IAAA,CACLG,UAAW,CACb,CAAA,CACD,CACD,CACE7C,8BACA,CACEt2B,IAAAA,CAAM,mBACNg5B,CAAAA,GAAAA,CAAK,KACLG,SAAW,CAAA,CACb,CACD,CAAA,CACD,CACE5C,4BACA,CAAA,CACEv2B,IAAM,CAAA,kBAAA,CACNg5B,IAAK,IACLG,CAAAA,SAAAA,CAAW,CACb,CAAA,CACD,CACD,CACE3C,6BACA,CAAA,CACEx2B,KAAM,mBACNg5B,CAAAA,GAAAA,CAAK,IACLG,CAAAA,SAAAA,CAAW,CACb,CACD,CAAA,CACD,CACE1C,oBAAAA,CACA,CACEz2B,IAAM,CAAA,UAAA,CACNm5B,SAAW,CAAA,EAAA,CACXH,IAAK,IACLC,CAAAA,UAAAA,CAAYT,yBACd,CAAA,CACD,CACD,CACE9B,mBAAAA,CACA,CACE12B,IAAAA,CAAM,UACNm5B,SAAW,CAAA,CAAA,CACXH,GAAK,CAAA,IACP,EACD,CACD,CACErC,oBACA,CAAA,CACE32B,IAAM,CAAA,UAAA,CACNm5B,SAAW,CAAA,EAAA,CACXH,IAAK,IACP,CAAA,CACD,CACD,CACEN,iBACA,CACE14B,IAAAA,CAAM,WACNm5B,CAAAA,SAAAA,CAAW,EACb,CACD,CAAA,CACD,CACER,iBAAAA,CACA,CACE34B,IAAM,CAAA,YAAA,CACNm5B,SAAW,CAAA,EACb,EACD,CACD,CACEP,eACA,CAAA,CACE54B,KAAM,UACNm5B,CAAAA,SAAAA,CAAW,EACXH,CAAAA,GAAAA,CAAK,KACLC,UAAYJ,CAAAA,qBACd,CACD,CAAA,CACD,CACEV,qBAAAA,CACA,CACEn4B,IAAAA,CAAM,YACNm5B,SAAW,CAAA,CAAA,CACXH,GAAK,CAAA,IAAA,CACLE,KAAM,IACR,CAAA,CACD,CACD,CACEd,uBACA,CACEp4B,IAAAA,CAAM,YACNm5B,CAAAA,SAAAA,CAAW,GACXH,GAAK,CAAA,IAAA,CACLE,IAAM,CAAA,IACR,EACD,CACD,CACEb,sBACA,CAAA,CACEr4B,KAAM,YACNm5B,CAAAA,SAAAA,CAAW,EACXH,CAAAA,GAAAA,CAAK,KACLE,IAAM,CAAA,IACR,CACD,CAAA,CACD,CACEZ,qBAAAA,CACA,CACEt4B,IAAAA,CAAM,YACNm5B,SAAW,CAAA,CAAA,CACXH,GAAK,CAAA,IAAA,CACLE,KAAM,IACR,CAAA,CACD,CACD,CACEX,uBACA,CACEv4B,IAAAA,CAAM,YACNm5B,CAAAA,SAAAA,CAAW,GACXH,GAAK,CAAA,IAAA,CACLE,IAAM,CAAA,IACR,EACD,CACD,CACEV,yBACA,CAAA,CACEx4B,KAAM,eACNm5B,CAAAA,SAAAA,CAAW,EACXH,CAAAA,GAAAA,CAAK,KACLE,IAAM,CAAA,IACR,CACD,CAAA,CACD,CACEL,qBAAAA,CACA,CACE74B,IAAAA,CAAM,YACNm5B,SAAW,CAAA,EAAA,CACXH,GAAK,CAAA,IAAA,CACLE,KAAM,IACR,CAAA,CACD,CACD,CACErC,gBACA,CACE72B,IAAAA,CAAM,KACN4B,CAAAA,IAAAA,CAAM,EACNw3B,KAAO,CAAA,IACT,CACD,CAAA,CACD,CACEtC,eACA,CAAA,CACE92B,IAAM,CAAA,KAAA,CACN4B,KAAM,CACNw3B,CAAAA,KAAAA,CAAO,IACT,CAAA,CACD,CACD,CACErC,gBAAAA,CACA,CACE/2B,IAAAA,CAAM,MACN4B,CAAAA,IAAAA,CAAM,CACNw3B,CAAAA,KAAAA,CAAO,IACT,CACD,CAAA,CACD,CACEpC,gBAAAA,CACA,CACEh3B,IAAM,CAAA,MAAA,CACN4B,IAAM,CAAA,CAAA,CACNw3B,MAAO,IACT,CAAA,CACD,CACD,CACEnC,iBACA,CACEj3B,IAAAA,CAAM,MACN4B,CAAAA,IAAAA,CAAM,EACNw3B,KAAO,CAAA,IACT,CACD,CAAA,CACD,CACElC,gBACA,CAAA,CACEl3B,IAAM,CAAA,MAAA,CACN4B,KAAM,CACNw3B,CAAAA,KAAAA,CAAO,IACT,CAAA,CACD,CACD,CACEjC,gBACA,CAAA,CACEn3B,KAAM,MACN4B,CAAAA,IAAAA,CAAM,CACNw3B,CAAAA,KAAAA,CAAO,IACT,CACD,CAAA,CACD,CACEhC,gBAAAA,CACA,CACEp3B,IAAM,CAAA,MAAA,CACN4B,IAAM,CAAA,CAAA,CACNw3B,MAAO,IACT,CAAA,CACD,CACD,CACE/B,kBACA,CACEr3B,IAAAA,CAAM,OACN4B,CAAAA,IAAAA,CAAM,EACNw3B,KAAO,CAAA,IACT,CACD,CAAA,CACD,CACE9B,iBACA,CAAA,CACEt3B,IAAM,CAAA,OAAA,CACN4B,IAAM,CAAA,CAAA,CACNw3B,KAAO,CAAA,IACT,EACD,CACD,CACE7B,iBACA,CAAA,CACEv3B,KAAM,OACN4B,CAAAA,IAAAA,CAAM,CACNw3B,CAAAA,KAAAA,CAAO,IACT,CACD,CAAA,CACD,CACE5B,iBAAAA,CACA,CACEx3B,IAAM,CAAA,OAAA,CACN4B,IAAM,CAAA,CAAA,CACNw3B,MAAO,IACT,CAAA,CACD,CACD,CACE3B,mBACA,CACEz3B,IAAAA,CAAM,QACN4B,CAAAA,IAAAA,CAAM,EACNw3B,KAAO,CAAA,IACT,CACD,CAAA,CACD,CACE1B,kBAAAA,CACA,CACE13B,IAAAA,CAAM,SACN4B,IAAM,CAAA,CAAA,CACNw3B,KAAO,CAAA,IACT,EACD,CACD,CACEzB,mBACA,CAAA,CACE33B,KAAM,SACN4B,CAAAA,IAAAA,CAAM,CACNw3B,CAAAA,KAAAA,CAAO,IACT,CACD,CAAA,CACD,CACExB,mBAAAA,CACA,CACE53B,IAAM,CAAA,SAAA,CACN4B,IAAM,CAAA,CAAA,CACNw3B,MAAO,IACT,CAAA,CACD,CACD,CACEvB,oBACA,CACE73B,IAAAA,CAAM,SACN4B,CAAAA,IAAAA,CAAM,GACNw3B,KAAO,CAAA,IACT,CACD,CAAA,CACD,CACEtB,mBACA,CAAA,CACE93B,IAAM,CAAA,SAAA,CACN4B,KAAM,EACNw3B,CAAAA,KAAAA,CAAO,IACT,CAAA,CACD,CACF,CACD,CAAA,MAAMC,uBAA0B,CAAC72B,SAC/B,OAAOu2B,eAAAA,CAAgBt6B,GAAG,CAAC+D,SAAS22B,SAAc30B,GAAAA,SACpD,CACA,CAAA,MAAM80B,kBAAoB,MAAC92B,EAAAA,CACzB,OAAOu2B,eAAAA,CAAgBt6B,GAAG,CAAC+D,MAAAA,CAAAA,EAAS02B,IAAS,GAAA,IAC/C,CACA,CAAA,MAAMK,oBAAuB,CAAC/2B,SAC5B,OAAOu2B,eAAAA,CAAgBt6B,GAAG,CAAC+D,SAAS42B,KAAU,GAAA,IAChD,CACA,CAAA,MAAMI,yBAA2B,MAACh3B,EAAAA,CAChC,OAAOu2B,eAAAA,CAAgBt6B,GAAG,CAAC+D,MAAAA,CAAAA,EAASy2B,UAAcz2B,EAAAA,MACpD,EACA,MAAMi3B,wBAAAA,CAA2B,MAACj3B,EAAAA,CAChC,IAAK,KAAM,CAAC+B,GAAKF,CAAAA,KAAAA,CAAM,GAAI00B,eAAgB,CAAA,CACzC,GAAI10B,KAAAA,CAAM40B,UAAU,GAAKz2B,MAAQ,CAAA,CAC/B,OAAO+B,GACT,CACF,CACA,OAAO/B,MACT,CACA,CAAA,MAAMk3B,mBAAsB,CAACl3B,SAC3B,MAAMm3B,IAAAA,CAAOZ,eAAgBt6B,CAAAA,GAAG,CAAC+D,MACjC,CAAA,CAAA,OAAO,CAAC,EAAEm3B,IAAMX,EAAAA,GAAAA,EAAO,CAACW,IAAAA,EAAMT,IAAG,CACnC,CAAA,CACA,MAAMU,uBAAAA,CAA0B,MAC9B,EAAA,CAAA,OAAOp3B,MACL,EAAA,KAAKozB,gBACL,CAAA,KAAKF,kBACL,CAAA,KAAKC,oBACH,OAAOpf,YACT,CAAK0gB,KAAAA,gBAAAA,CACL,KAAKM,iBACL,CAAA,KAAKM,mBACH,CAAA,OAAO1gB,UACT,CAAK+f,KAAAA,gBAAAA,CACL,KAAKM,iBAAAA,CACL,KAAKM,mBACH,CAAA,OAAO+B,WACT,CAAA,KAAK9C,iBACL,KAAKM,iBAAAA,CACL,KAAKM,mBAAAA,CACH,OAAOmC,UACT,CAAA,KAAK5B,eACL,CAAA,KAAKlB,iBACL,KAAKM,iBAAAA,CACL,KAAKM,mBAAAA,CACL,KAAK5C,kBAAAA,CACL,KAAKC,oBAAAA,CACL,KAAKC,iBACL,CAAA,KAAK6C,gBACL,CAAA,KAAKC,kBACL,KAAKxC,kBAAAA,CACL,KAAKC,mBAAAA,CACH,OAAOsE,WACT,CAAA,KAAKlD,eACL,CAAA,KAAKM,iBACL,KAAKM,kBAAAA,CACH,OAAOuC,SACT,SACE,OAAOvwB,UACX,CACF,CAAA,CACA,MAAMwwB,gBAAmB,CAAA,CAAA,CACzB,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,kBAAAA,CAAqB,CAC3B,CAAA,MAAMC,mBAAsB,CAAA,CAAA,CAC5B,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,kBAAAA,CAAqB,CAC3B,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAoB,CAAA,UAAA,CAC1B,MAAMC,eAAkB,CAAA,QAAA,CACxB,MAAMC,gBAAAA,CAAmB,UACzB,MAAMC,oBAAAA,CAAuB,aAC7B,CAAA,MAAMC,sBAAwB,cAC9B,CAAA,MAAMC,cAAiB,CAAA,OAAA,CACvB,MAAMC,iBAAoB,CAAA,UAAA,CAC1B,MAAMC,kBAAAA,CAAqB,YAC3B,MAAMC,kBAAAA,CAAqB,WAC3B,CAAA,MAAMC,kBAAqB,CAAA,WAAA,CAC3B,MAAMC,kBAAAA,CAAqB,YAC3B,MAAMC,kBAAAA,CAAqB,WAC3B,CAAA,MAAMC,mBAAqB,WAC3B,CAAA,MAAMC,kBAAqB,CAAA,WAAA,CAC3B,MAAMC,kBAAqB,CAAA,WAAA,CAC3B,MAAMC,cAAAA,CAAiB,QACvB,MAAMC,cAAAA,CAAiB,OACvB,CAAA,MAAMC,eAAiB,OACvB,CAAA,MAAMC,cAAiB,CAAA,OAAA,CACvB,MAAMC,cAAiB,CAAA,OAAA,CACvB,MAAMC,cAAAA,CAAiB,QACvB,MAAMC,cAAAA,CAAiB,OACvB,CAAA,MAAMC,cAAiB,CAAA,OAAA,CACvB,MAAMC,cAAAA,CAAiB,QACvB,MAAMC,cAAAA,CAAiB,OACvB,CAAA,MAAMC,gBAAkB,QACxB,CAAA,MAAMC,eAAkB,CAAA,QAAA,CACxB,MAAMC,eAAkB,CAAA,QAAA,CACxB,MAAMC,eAAAA,CAAkB,SACxB,MAAMC,eAAAA,CAAkB,QACxB,CAAA,MAAMC,gBAAkB,QACxB,CAAA,MAAMC,kBAAqB,CAAA,CAAA,CAC3B,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,iBAAAA,CAAoB,CAC1B,CAAA,MAAMC,mBAAsB,CAAA,CAAA,CAC5B,MAAMC,uBAAAA,CAA0B,EAChC,MAAMC,mBAAAA,CAAsB,CAC5B,CAAA,MAAMC,wBAA0B,CAChC,CAAA,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,iBAAAA,CAAoB,CAC1B,CAAA,MAAMC,oBAAsB,SAC5B,CAAA,MAAMC,gBAAmB,CAAA,MAAA,CACzB,MAAMC,gBAAmB,CAAA,MAAA,CACzB,MAAMC,gBAAAA,CAAmB,OACzB,MAAMC,uBAAAA,CAA0B,aAChC,CAAA,MAAMC,YAAe,CAAA,CAAA,CACrB,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,aAAAA,CAAgB,CACtB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,mBAAsB,CAAA,IAAA,CAC5B,MAAMC,mBAAsB,CAAA,IAAA,CAC5B,MAAMC,yBAAAA,CAA4B,WAClC,MAAMC,qBAAAA,CAAwB,MAC9B,CAAA,MAAMC,4BAA8B,YACpC,CAAA,MAAMC,mBAAsB,CAAA,IAAA,CAC5B,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMC,6BAAAA,CAAgC,EACtC,MAAMC,gBAAAA,CAAmB,CACzB,CAAA,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,sBAAAA,CAAyB,MAC/B,CAAA,MAAMC,uBAAyB,MAC/B,CAAA,MAAMC,0BAA6B,CAAA,UAAA,CACnC,MAAMC,4BAA+B,CAAA,YAAA,CACrC,MAAMC,mBAAAA,CAAsB,OAC5B,MAAMC,mBAAAA,CAAsB,MAC5B,CAAA,MAAMC,UAAY,CAClB,CAAA,MAAMC,UAAa,CAAA,CAAA,CACnB,MAAMC,UAAa,CAAA,CAAA,CACnB,MAAMC,WAAAA,CAAc,EACpB,MAAMC,UAAAA,CAAa,CACnB,CAAA,MAAMC,WAAc,CAAA,CAAA,CACpB,MAAMC,YAAAA,CAAe,EACrB,MAAMC,YAAAA,CAAe,CACrB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,iBAAoB,CAAA,CAAA,CAC1B,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,gBAAAA,CAAmB,CACzB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAoB,CAAA,CAAA,CAC1B,MAAMC,iBAAoB,CAAA,CAAA,CAC1B,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,iBAAAA,CAAoB,CAC1B,CAAA,MAAMC,iBAAoB,CAAA,EAAA,CAC1B,MAAMC,iBAAAA,CAAoB,GAC1B,MAAMC,gBAAAA,CAAmB,EACzB,CAAA,MAAMC,iBAAmB,EACzB,CAAA,MAAMC,gBAAmB,CAAA,EAAA,CACzB,MAAMC,qBAAwB,CAAA,EAAA,CAC9B,MAAMC,uBAAAA,CAA0B,GAChC,MAAMC,sBAAAA,CAAyB,EAC/B,CAAA,MAAMC,6BAA+B,EACrC,CAAA,MAAMC,8BAAiC,CAAA,EAAA,CACvC,MAAMC,qBAAwB,CAAA,EAAA,CAC9B,MAAMC,qBAAAA,CAAwB,GAC9B,MAAMC,qBAAAA,CAAwB,EAC9B,CAAA,MAAMC,qBAAwB,CAAA,EAAA,CAC9B,MAAMC,qBAAAA,CAAwB,GAC9B,MAAMC,2BAAAA,CAA8B,EACpC,CAAA,MAAMC,iBAAmB,EACzB,CAAA,MAAMC,iBAAoB,CAAA,EAAA,CAC1B,MAAMC,iBAAoB,CAAA,EAAA,CAC1B,MAAMC,iBAAAA,CAAoB,GAC1B,MAAMC,oBAAAA,CAAuB,EAC7B,CAAA,MAAMC,sBAAwB,EAC9B,CAAA,MAAMC,qBAAwB,CAAA,EAAA,CAC9B,MAAMC,sBAAyB,CAAA,EAAA,CAC/B,MAAMC,sBAAAA,CAAyB,GAC/B,MAAMC,sBAAAA,CAAyB,EAC/B,CAAA,MAAMC,sBAAyB,CAAA,EAAA,CAC/B,MAAMC,sBAAAA,CAAyB,GAC/B,MAAMC,sBAAAA,CAAyB,EAC/B,CAAA,MAAMC,uBAAyB,EAC/B,CAAA,MAAMC,sBAAyB,CAAA,EAAA,CAC/B,MAAMC,sBAAyB,CAAA,EAAA,CAC/B,MAAMC,sBAAAA,CAAyB,GAC/B,MAAMC,sBAAAA,CAAyB,EAC/B,CAAA,MAAMC,yBAA2B,EACjC,CAAA,MAAMC,wBAA2B,CAAA,EAAA,CACjC,MAAMC,sBAAyB,CAAA,EAAA,CAC/B,MAAMC,sBAAAA,CAAyB,GAC/B,MAAMC,4BAAAA,CAA+B,EACrC,CAAA,MAAMC,4BAA+B,CAAA,EAAA,CACrC,MAAMC,iBAAAA,CAAoB,CACxB,MACA,CAAA,KAAA,CACA,OACA,CAAA,MAAA,CACA,OACA,MACA,CAAA,OAAA,CACA,OACA,CAAA,OAAA,CACA,QACA,OACA,CAAA,OAAA,CACA,MACA,CAAA,MAAA,CACA,OACA,WACA,CAAA,aAAA,CACA,EACA,CAAA,iBAAA,CACA,oBACA,WACA,CAAA,EAAA,CACA,EACA,CAAA,EAAA,CACA,GACA,gBACA,CAAA,MAAA,CACA,OACA,CAAA,OAAA,CACA,QACA,EACA,CAAA,EAAA,CACA,EACA,CAAA,EAAA,CACA,EACA,CAAA,EAAA,CACA,EACA,CAAA,EAAA,CACA,GACA,EACA,CAAA,EAAA,CACA,EACA,CAAA,YAAA,CACA,aACA,cACA,CAAA,cAAA,CACA,YACA,CAAA,YAAA,CACA,kBACA,iBACD,CAAA,CACD,MAAMC,qBAAAA,CAAwB,CAC5B,CACE,MAAA,CACD,CACD,CACE,MACD,CACD,CACE,KACD,CAAA,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,QACA,WACD,CAAA,CACD,CACE,OAAA,CACA,WACD,CAAA,CACD,CACE,OAAA,CACA,YACD,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,OAAA,CACA,WACD,CAAA,CACD,CACE,YACD,CAAA,CACD,CACE,YAAA,CACD,CACD,CACE,YAAA,CACD,CACD,CACE,UACA,aACD,CAAA,CACD,CACE,SAAA,CACA,cACD,CACD,CACE,SACA,CAAA,aAAA,CACD,CACD,CACE,iBAAA,CACD,CACD,CACE,mBACD,CAAA,CACD,CACE,YAAA,CACD,CACD,CACE,kBAAA,CACD,CACD,CACE,qBACD,CACD,CACE,iBACD,CAAA,CACD,CACE,kBACD,CAAA,CACD,CACE,kBAAA,CACD,CACD,CACE,kBAAA,CACD,CACD,CACE,qBACD,CACD,CACE,uBACD,CAAA,CACD,CACE,KACD,CAAA,CACD,CACE,OAAA,CACA,YACD,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,OACA,CAAA,WAAA,CACD,CACD,CACE,YAAA,CACD,CACD,CACE,aACD,CACD,CACE,aACD,CAAA,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,eACA,kBACD,CAAA,CACD,CACE,cAAA,CACA,oBACD,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,cAAA,CACA,kBACD,CAAA,CACD,CACE,cACA,CAAA,mBAAA,CACD,CACD,CACE,cACA,CAAA,kBAAA,CACD,CACD,CACE,eACA,kBACD,CAAA,CACD,CACE,cAAA,CACA,oBACD,CACD,CACE,iBACD,CAAA,CACD,CACE,iBACD,CAAA,CACD,CACE,mBAAA,CACD,CACD,CACE,mBAAA,CACD,CACD,CACE,kBACD,CACD,CACE,iBACD,CAAA,CACD,CACE,uBACD,CAAA,CACD,CACE,uBAAA,CACD,CACF,CACD,MAAMC,wBAA2B,CAAA,IAAI39B,GACrC09B,CAAAA,qBAAAA,CAAsBn5B,OAAO,CAAC,CAACq5B,KAAOngC,CAAAA,KAAAA,GAAAA,CACpCmgC,KAAMr5B,CAAAA,OAAO,CAAC,IAACrJ,EAAOyiC,wBAAyBx9B,CAAAA,GAAG,CAACjF,IAAMuC,CAAAA,KAAAA,CAAAA,EAC3D,CACA,CAAA,CAAA,MAAMogC,qBAAuB,IAAIl5B,UAAAA,CAAW,CAC1Cw1B,UAAAA,CACAA,WACAE,YACAA,CAAAA,YAAAA,CACAA,YACAA,CAAAA,YAAAA,CACAF,WACAA,UACAA,CAAAA,UAAAA,CACAA,UACAA,CAAAA,UAAAA,CACAA,WACAE,YACAA,CAAAA,YAAAA,CACAA,YACAF,CAAAA,UAAAA,CACAA,UACAE,CAAAA,YAAAA,CACAF,UACAA,CAAAA,UAAAA,CACAA,WACAE,YACAA,CAAAA,YAAAA,CACAA,YACAA,CAAAA,YAAAA,CACAF,WACAC,WACAA,CAAAA,WAAAA,CACAA,WACAA,CAAAA,WAAAA,CACAD,WACAC,WACAD,CAAAA,UAAAA,CACAA,UACAC,CAAAA,WAAAA,CACAD,WACAA,UACAC,CAAAA,WAAAA,CACAD,UACAA,CAAAA,UAAAA,CACAC,YACAD,UACAA,CAAAA,UAAAA,CACAC,WACAD,CAAAA,UAAAA,CACAC,YACAD,UACAC,CAAAA,WAAAA,CACAD,UACAC,CAAAA,WAAAA,CACD,EACD,MAAM0D,iBAAAA,CAAoB,QAC1B,CAAA,MAAMC,iBAAoB,CAAA,QAAA,CAC1B,MAAMC,eAAAA,CAAkB,OACxB,MAAMC,kBAAAA,CAAqB,CAC3B,CAAA,MAAMC,qBAAuB,CAC7B,CAAA,MAAMC,mBAAsB,CAAA,CAAA,CAC5B,MAAMC,iBAAoB,CAAA,KAAA,CAC1B,MAAMC,sBAAAA,CAAyB,WAC/B,MAAMC,iBAAAA,CAAoB,KAC1B,CAAA,MAAMC,uBAAyB,CAC/B,CAAA,MAAMC,sBAAyB,CAAA,CAAA,CAC/B,MAAMC,qBAAwB,CAAA,CAAA,CAC9B,MAAMC,qBAAAA,CAAwB,EAC9B,MAAMC,qBAAAA,CAAwB,EAC9B,CAAA,MAAMC,2BAA8B,CAAA,EAAA,CACpC,MAAMC,wBAAAA,CAA2B,GACjC,MAAMC,sBAAAA,CAAyB,GAC/B,CAAA,MAAMC,gBAAkB,GACxB,CAAA,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,cAAAA,CAAiB,CACrB,MAAA,CACA,OACA,SACD,CAAA,CACD,MAAMC,gCAAAA,CAAmC,UACzC,MAAMC,mBAAAA,CAAsB,uBAC5B,CAAA,MAAMC,gBAAkB,CACtBpK,SAAAA,CACAvwB,UACAqwB,CAAAA,UAAAA,CACAC,WACA5iB,CAAAA,UAAAA,CACA0iB,WACAtjB,CAAAA,YAAAA,CACAwjB,YACD,CACD,MAAMsK,uBAA0B,CAAA,CAC9B,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACD,CACD,MAAMC,iBAAmB,CACvB,MAAA,CACA,OACA,CAAA,OAAA,CACA,SACA,OACA,CAAA,QAAA,CACA,SACA,CAAA,SAAA,CACD,CACD,MAAMC,gBAAAA,CAAmB,CACvB,WAAA,CAAa1F,UACb,YAAcC,CAAAA,UAAAA,CACd,YAAcC,CAAAA,UAAAA,CACd,aAAeC,CAAAA,WAAAA,CACf,YAAcC,CAAAA,UAAAA,CACd,cAAeC,WACf,CAAA,cAAA,CAAgBC,YAClB,CAAA,CACA,MAAMqF,sBAAyB,CAAA,CAC7B/6B,UACAswB,CAAAA,WAAAA,CACAF,YACD,CACD,MAAM4K,8BAAiC,CAAA,CACrC,EACA,CACA,CAAA,CAAA,CACD,CACD,MAAMC,2BAA6B,IAAI5/B,GAAAA,CAAI,CACzC,CACE,QACA,KACD,CAAA,CACD,CACE,MAAA,CACA,QACD,CACD,CACE,MACA,CAAA,OAAA,CACD,CACD,CACE,MACA,CAAA,OAAA,CACD,CACD,CACE,KAAA,CACA,KACD,CAAA,CACD,CACE,OACA,CAAA,OAAA,CACD,CACD,CACE,QACA,OACD,CAAA,CACD,CACE,OAAA,CACA,QACD,CACD,CACE,MACA,CAAA,KAAA,CACD,CACD,CACE,OAAA,CACA,OACD,CAAA,CACD,CACE,OACA,CAAA,OAAA,CACD,CACD,CACE,QACA,OACD,CAAA,CACF,CACD,CAAA,MAAM6/B,kBAAqB,CAAA,EAC3BA,CAAAA,kBAAkB,CAACnK,iBAAAA,CAAkB,CAAG,CACxCmK,CAAAA,kBAAkB,CAAClK,eAAgB,CAAA,CAAG,CACtCkK,CAAAA,kBAAkB,CAAChK,oBAAAA,CAAqB,CAAG,CAC3CgK,CAAAA,kBAAkB,CAAC/J,sBAAsB,CAAG,CAC5C+J,CAAAA,kBAAkB,CAAC9J,cAAe,CAAA,CAAG,CACrC8J,CAAAA,kBAAkB,CAAC5J,kBAAAA,CAAmB,CAAG,CACzC4J,CAAAA,kBAAkB,CAAC3J,kBAAAA,CAAmB,CAAG,CACzC2J,CAAAA,kBAAkB,CAAC1J,mBAAmB,CAAG,CACzC0J,CAAAA,kBAAkB,CAACzJ,kBAAmB,CAAA,CAAG,CACzCyJ,CAAAA,kBAAkB,CAACxJ,kBAAAA,CAAmB,CAAG,CACzCwJ,CAAAA,kBAAkB,CAACvJ,kBAAmB,CAAA,CAAG,EACzCuJ,CAAAA,kBAAkB,CAACtJ,kBAAAA,CAAmB,CAAG,EACzCsJ,CAAAA,kBAAkB,CAACrJ,kBAAmB,CAAA,CAAG,EACzCqJ,CAAAA,kBAAkB,CAACjK,gBAAAA,CAAiB,CAAG,EACvCiK,CAAAA,kBAAkB,CAACpJ,cAAe,CAAA,CAAG,CACrCoJ,CAAAA,kBAAkB,CAACnJ,cAAAA,CAAe,CAAG,CACrCmJ,CAAAA,kBAAkB,CAAClJ,eAAe,CAAG,CACrCkJ,CAAAA,kBAAkB,CAACjJ,cAAe,CAAA,CAAG,CACrCiJ,CAAAA,kBAAkB,CAAChJ,cAAAA,CAAe,CAAG,CACrCgJ,CAAAA,kBAAkB,CAAC/I,cAAAA,CAAe,CAAG,CACrC+I,CAAAA,kBAAkB,CAAC9I,eAAe,CAAG,CACrC8I,CAAAA,kBAAkB,CAAC7I,cAAe,CAAA,CAAG,CACrC6I,CAAAA,kBAAkB,CAAC5I,cAAAA,CAAe,CAAG,CACrC4I,CAAAA,kBAAkB,CAAC3I,cAAe,CAAA,CAAG,CACrC2I,CAAAA,kBAAkB,CAAC1I,eAAAA,CAAgB,CAAG,EACtC0I,CAAAA,kBAAkB,CAACzI,gBAAgB,CAAG,EACtCyI,CAAAA,kBAAkB,CAACxI,eAAgB,CAAA,CAAG,EACtCwI,CAAAA,kBAAkB,CAACvI,eAAAA,CAAgB,CAAG,EACtCuI,CAAAA,kBAAkB,CAACtI,eAAgB,CAAA,CAAG,EACtCsI,CAAAA,kBAAkB,CAACrI,eAAAA,CAAgB,CAAG,EAEtC,CAAA,IAAIsI,IAAO,CAAA,CACX,OAAMC,cACJpgC,CAAAA,WAAAA,CAAYzE,IAAI,CAAE8kC,UAAU,CAAC,CAC3B,IAAI,CAACC,IAAI,CAAG,CAAC,CACb,CAAA,IAAI,CAACC,OAAO,CAAG,IACf,CAAA,IAAI,CAAChlC,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC8kC,UAAU,CAAGA,WACpB,CACF,CACA,MAAMG,uBAAgCJ,SAAAA,cAAAA,EAEtC,MAAMK,gCAAgCL,cACpCpgC,CAAAA,WAAAA,CAAYzE,IAAI,CAAE8kC,UAAU,CAAEK,QAAAA,CAAW,KAAK,CAAC,CAC7C,KAAK,CAACnlC,IAAAA,CAAM8kC,YAAa,IAAI,CAACtiC,MAAM,CAAG,EACvC,CAAA,IAAI,CAAC2iC,QAAQ,CAAGA,SAClB,CACF,CACA,MAAMC,0BAA0BP,cAC9BpgC,CAAAA,WAAAA,CAAYzE,IAAI,CAAE8kC,UAAU,CAAEO,gBAAAA,CAAmBxH,mBAAmB,CAAEyH,WAAapH,gBAAgB,CAAEqH,UAAa,CAAA,IAAI,CAAEC,WAAc,CAAA,IAAI,CAAC,CACzI,KAAK,CAACxlC,IAAM8kC,CAAAA,UAAAA,CACZ,CAAA,IAAI,CAACO,gBAAgB,CAAGA,gBACxB,CAAA,IAAI,CAACC,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACC,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACC,WAAW,CAAGA,WAAe,EAAA,CAAC,EAAExlC,IAAK,CAAA,QAAQ,EACpD,CACF,CACA,MAAMylC,wBAAiCZ,SAAAA,cAAAA,CACrCpgC,WAAYzE,CAAAA,IAAI,CAAEwC,MAAAA,CAAS4yB,iBAAiB,CAAEiQ,gBAAAA,CAAmBxH,mBAAmB,CAAE6H,MAAQ,IAAI,CAAEC,IAAO,CAAA,KAAK,CAAC,CAC/G,KAAK,CAAC3lC,IAAAA,CAAMijC,oBACZ,CAAA,IAAI,CAACzgC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC6iC,gBAAgB,CAAGA,gBACxB,CAAA,IAAI,CAACK,KAAK,CAAGA,KACb,CAAA,IAAI,CAACC,IAAI,CAAGA,KACd,CACF,CACA,MAAMC,eAAAA,CA4CJC,SAAU,CACR,IAAI,CAACC,IAAI,CAACD,OAAO,GACnB,CACAE,UAAAA,CAAW/lC,IAAI,CAAE,CACf,MAAMuC,KAAAA,CAAQ,IAAI,CAACyjC,iBAAiB,CAACvnC,GAAG,CAACuB,IACzC,CAAA,CAAA,GAAIuC,KAAUiC,GAAAA,SAAAA,CAAW,CACvB,OAAO,IAAI,CAACyhC,cAAc,CAAC1jC,KAAAA,CAAM,CAEnC,OAAO,IACT,CACA2jC,iBAAkBlmC,CAAAA,IAAI,CAAE,CACtB,MAAMuC,KAAQ,CAAA,IAAI,CAAC4jC,wBAAwB,CAAC1nC,GAAG,CAACuB,MAChD,GAAIuC,KAAAA,GAAUiC,SAAW,CAAA,CACvB,OAAO,IAAI,CAAC4hC,qBAAqB,CAAC7jC,MAAM,CAE1C,OAAO,IACT,CACA8jC,WAAc,EAAA,EA5Dd5hC,WAAAA,CAAY6hC,cAAc,CAAEC,OAAO,CAAC,CAClC,IAAI,CAACC,oBAAoB,CAAG,EAAE,CAC9B,IAAI,CAACP,cAAc,CAAG,EAAE,CACxB,IAAI,CAACG,qBAAqB,CAAG,EAAE,CAC/B,IAAI,CAACK,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACC,EAAE,CAAG9B,IACV,EAAA,CAAA,IAAIG,IAAO,CAAA,CAAA,CACXwB,OAAQl9B,CAAAA,OAAO,CAAC,MAAC7G,EAAAA,CACfA,MAAOuiC,CAAAA,IAAI,CAAGA,IACd,EAAA,CAAA,GAAIviC,MAAkB4iC,YAAAA,iBAAAA,EAAqB5iC,OAAO+iC,UAAU,CAAE,CAC5DR,IAAAA,GACF,CACA,GAAIviC,MAAAA,YAAkByiC,uBAAyB,CAAA,CAC7C,IAAI,CAACuB,oBAAoB,CAAChpC,IAAI,CAACgF,MACjC,EAAA,CAAA,KAAO,GAAIA,MAAAA,YAAkB4iC,kBAAmB,CAC9C,IAAI,CAACa,cAAc,CAACzoC,IAAI,CAACgF,MAAAA,EAC3B,MAAO,GAAIA,MAAAA,YAAkBijC,wBAA0B,CAAA,CACrD,IAAI,CAACW,qBAAqB,CAAC5oC,IAAI,CAACgF,MAClC,EAAA,CAAA,KAAO,GAAIA,MAAAA,YAAkB0iC,wBAAyB,CACpD,IAAI,CAACuB,oBAAoB,CAACjpC,IAAI,CAACgF,MACjC,EAAA,CAAA,IAAA,CACF,EACA,CAAA,IAAI,CAACmkC,MAAM,CAAGL,cACd,CAAA,MAAMriC,KAAQqiC,CAAAA,cAAAA,CAAeriC,KAC7B,CAAA,IAAI,CAAC2iC,gBAAgB,CAAG,IAAI9hC,GAAAA,CAC5B,IAAI,CAAC0hC,oBAAoB,CAACn9B,OAAO,CAAC,CAACw9B,EAAAA,CAAInqC,CAAI,GAAA,IAAI,CAACkqC,gBAAgB,CAAC3hC,GAAG,CAAC4hC,GAAG7mC,IAAI,CAAEtD,CAC9E,CAAA,CAAA,CAAA,IAAI,CAACspC,iBAAiB,CAAG,IAAIlhC,IAC7B,IAAI,CAACmhC,cAAc,CAAC58B,OAAO,CAAC,CAACy9B,EAAAA,CAAIpqC,KAC/B,IAAI,CAACspC,iBAAiB,CAAC/gC,GAAG,CAAC6hC,EAAAA,CAAG9mC,IAAI,CAAEtD,EACpCoqC,CAAAA,EAAAA,CAAG9B,OAAO,CAAG/gC,MAAM8iC,OAAO,CAACD,EAAG9mC,CAAAA,IAAI,EACpC,CACA,CAAA,CAAA,IAAI,CAACmmC,wBAAwB,CAAG,IAAIrhC,GACpC,CAAA,IAAI,CAACshC,qBAAqB,CAAC/8B,OAAO,CAAC,CAACy9B,EAAAA,CAAIpqC,CACtC,GAAA,CAAA,IAAI,CAACypC,wBAAwB,CAAClhC,GAAG,CAAC6hC,GAAG9mC,IAAI,CAAEtD,CAC3CoqC,CAAAA,CAAAA,GAAG9B,OAAO,CAAG/gC,KAAM8iC,CAAAA,OAAO,CAACD,EAAG9mC,CAAAA,IAAI,EACpC,CAAA,CACA,CAAA,IAAI,CAACgnC,uBAAuB,CAAG,IAAIliC,GACnC,CAAA,IAAI,CAAC2hC,oBAAoB,CAACp9B,OAAO,CAAC,CAACw9B,EAAAA,CAAInqC,CACrC,GAAA,CAAA,IAAI,CAACsqC,uBAAuB,CAAC/hC,GAAG,CAAC4hC,EAAG7mC,CAAAA,IAAI,CAAEtD,CAC1CmqC,CAAAA,CAAAA,EAAG7B,CAAAA,OAAO,CAAG/gC,KAAM8iC,CAAAA,OAAO,CAACF,EAAAA,CAAG7mC,IAAI,EACpC,CAAA,CACA,CAAA,IAAI,CAAC8lC,IAAI,CAAGQ,cAAeW,CAAAA,yBAAyB,CAAC,IAAI,EAC3D,CAmBF,CAEA,MAAMC,WACJzoC,CAAAA,GAAAA,CAAIkoC,MAAM,CAAEQ,QAAQ,CAAE,CACpB,GAAI,CAAC,IAAI,CAACC,MAAM,CAACpiC,GAAG,CAAC2hC,MAAAA,CAAAA,CAAS,CAC5B,IAAI,CAACS,MAAM,CAACniC,GAAG,CAAC0hC,OAAQQ,QACxBR,EAAAA,CAAAA,CAAAA,MAAAA,CAAO5iC,EAAE,CAAC,UAAW,IACnB,CAAA,IAAI,CAACgD,MAAM,CAAC4/B,MACd,EAAA,CAAA,CAAA,CACAA,MAAO5iC,CAAAA,EAAE,CAAC,YAAc,CAAA,IAAA,CACtB,IAAI,CAACqjC,MAAM,CAAC3oC,GAAG,CAACkoC,SAASN,WAAcM,GAAAA,MAAAA,EACzC,CACF,EAAA,CACA,OAAO,IAAI,CAACS,MAAM,CAAC3oC,GAAG,CAACkoC,MAAAA,CACzB,CACA5/B,MAAAA,CAAO4/B,MAAM,CAAE,CACb,IAAI,CAACS,MAAM,CAAC3oC,GAAG,CAACkoC,MAAAA,CAAAA,EAASd,UAAUc,MACnC,CAAA,CAAA,IAAI,CAACS,MAAM,CAAC7hC,MAAM,CAACohC,MACrB,EAAA,CACAliC,WAAa,EAAA,CACX,IAAI,CAAC2iC,MAAM,CAAG,IAAItiC,IACpB,CACF,CAEA,MAAMuiC,YAAAA,CACJ,OAAOC,kBAAAA,CAAmBC,SAAS,CAAEC,QAAQ,CAAE,CAC7C,OAAOvrC,IAAKoU,CAAAA,GAAG,CAACk3B,SAAAA,EAAaC,SAAU,CACzC,CAAA,CACA,OAAOC,kBAAAA,CAAmBplB,KAAK,CAAEC,MAAM,CAAEolB,KAAAA,CAAQ,CAAC,CAAE,CAClD,OAAO,CAAA,CAAIzrC,IAAKmQ,CAAAA,KAAK,CAACnQ,IAAAA,CAAKoV,IAAI,CAACpV,IAAAA,CAAKoU,GAAG,CAACgS,MAAOC,MAAQolB,CAAAA,KAAAA,CAAAA,CAAAA,CAC1D,CACA,OAAOC,iBAAiBtlB,KAAK,CAAEC,MAAM,CAAEolB,KAAK,CAAEllC,MAAM,CAAE,CACpD,MAAMolC,UAAa7O,CAAAA,eAAAA,CAAgBt6B,GAAG,CAAC+D,QACvC,MAAMqlC,SAAAA,CAAY9O,eAAgBt6B,CAAAA,GAAG,CAAC+D,MAASZ,CAAAA,EAAAA,IAAAA,EAAQ,CACvD,CAAA,GAAIimC,SAAY,CAAA,CAAA,CAAG,CACjB,OAAOxlB,MAAQC,MAASolB,CAAAA,KAAAA,CAAQG,SAClC,CACA,MAAM1O,SAAYyO,CAAAA,UAAAA,CAAWzO,SAAS,EAAI,EAC1C,IAAI2O,UAAAA,CAAa7rC,IAAKmQ,CAAAA,KAAK,CAAC,CAACiW,KAAQ,CAAA,CAAA,EAAK,CAC1C,CAAA,CAAA,MAAM0lB,WAAc9rC,CAAAA,IAAAA,CAAKmQ,KAAK,CAAEkW,CAAAA,MAAAA,CAAS,CAAA,EAAK,CAAA,CAAA,CAC9C,MAAM0lB,UAAAA,CAAa/rC,IAAKmQ,CAAAA,KAAK,CAAEs7B,CAAAA,KAAQ,CAAA,CAAA,EAAK,CAAA,CAAA,CAC5C,GAAIllC,MAAW6zB,GAAAA,4BAAAA,EAAgC7zB,MAAW8zB,GAAAA,6BAAAA,CAA+B,CACvFwR,UAAa7rC,CAAAA,IAAAA,CAAKoU,GAAG,CAACpU,KAAKmQ,KAAK,CAAC07B,UAAa,CAAA,CAAA,CAAA,CAAI,GACpD,CACA,OAAOA,UAAaC,CAAAA,WAAAA,CAAcC,WAAa7O,SACjD,CACA,OAAO8O,WAAAA,CAAY5lB,KAAK,CAAEC,MAAM,CAAEolB,KAAK,CAAEllC,MAAM,CAAE0lC,OAAO,CAAEC,OAAO,CAAE,CACjE,IAAI1rC,OAAS,CACb,CAAA,MAAM,CAAE,CAAA,CACNA,QAAU4qC,YAAaM,CAAAA,gBAAgB,CAACtlB,KAAAA,CAAOC,OAAQolB,KAAOllC,CAAAA,MAAAA,CAAAA,CAC9D,GAAI,CAAC0lC,SAAW7lB,KAAU,GAAA,CAAA,EAAKC,MAAW,GAAA,CAAA,EAAKolB,QAAU,CAAG,CAAA,CAC1D,KACF,CACArlB,MAAQpmB,IAAKoU,CAAAA,GAAG,CAACgS,KAAAA,EAAS,CAAG,CAAA,CAAA,CAAA,CAC7BC,MAASrmB,CAAAA,IAAAA,CAAKoU,GAAG,CAACiS,MAAAA,EAAU,CAAG,CAAA,CAAA,CAAA,CAC/BolB,MAAQzrC,IAAKoU,CAAAA,GAAG,CAACq3B,KAAAA,EAAS,EAAG,CAC/B,EAAA,CACA,OAAOjrC,MAAAA,EAAU0rC,OAAU,CAAA,CAAA,CAAI,CAAA,CACjC,CACF,CAEA,IAAIC,IAAO,CAAA,CACX,OAAMC,OAyDJxC,CAAAA,OAAAA,EAAU,CACR,MAAMc,OAAS,IAAI,CAACA,MAAM,CAC1B,GAAIA,MAAAA,CAAQ,CACV,MAAM3/B,IAAM2/B,MAAO2B,CAAAA,QAAQ,CAAC3iC,OAAO,CAAC,IAAI,CAAA,CACxC,GAAIqB,GAAAA,GAAQ,CAAC,CAAG,CAAA,CACd2/B,MAAO2B,CAAAA,QAAQ,CAAC9iC,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC9B,CACA2/B,MAAO1iC,CAAAA,KAAK,CAACskC,WAAW,CAAC,IAAI,CAAA,CAC7B,IAAI,CAACzC,IAAI,CAACD,OAAO,CAACc,MAAAA,CAAAA,CAClB,IAAI,CAAC6B,sBAAsB,CAAC7B,OAAO8B,KAAK,CAAE,CAAC,IAAI,CAACC,QAAQ,CACxD,CAAA,IAAI,CAACC,OAAO,CAAG,IACf,CAAA,IAAI,CAAChC,MAAM,CAAG,KAChB,CACF,CACAiC,YAAAA,CAAaC,MAAS,CAAA,IAAI,CAAE,CAC1B,KAAM,CAAElC,MAAM,CAAE,CAAG,IAAI,CACvB,IAAI,CAACb,IAAI,EAAED,QAAQc,MACnB,CAAA,CAAA,IAAI,CAACb,IAAI,CAAG,IACZ,CAAA,IAAI,CAACA,IAAI,CAAGa,MAAOmC,CAAAA,iBAAiB,CAAC,IAAI,CAAA,CACzC,IAAI,CAACC,QAAQ,EACb,CAAA,GAAIF,MAAQ,CAAA,CACV,IAAI,CAACA,MAAM,GACb,CACF,CACAG,YAAe,EAAA,CACb,IAAI,CAACL,OAAO,CAAG,IAAI,CAACM,QAAQ,CAAG,CAC7B,CACE,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACD,CACF,CAAG,CACF,IACD,EACH,CACAC,MAAO7mB,CAAAA,KAAK,CAAEC,MAAM,CAAEolB,KAAQ,CAAA,CAAC,CAAE,CAC/B,MAAMf,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,IAAI,CAAC6B,sBAAsB,CAAC7B,MAAO8B,CAAAA,KAAK,CAAE,CAAC,IAAI,CAACC,QAAQ,CACxD,CAAA,IAAI,CAACA,QAAQ,CAAG,CAAA,CAChB,IAAI,CAAC5C,IAAI,CAACD,OAAO,CAACc,MAClB,CAAA,CAAA,IAAI,CAACqC,YAAY,EACjB,CAAA,IAAI,CAACG,MAAM,CAAGltC,IAAKmQ,CAAAA,KAAK,CAACiW,KAAAA,CACzB,CAAA,IAAI,CAAC+mB,OAAO,CAAGntC,IAAKmQ,CAAAA,KAAK,CAACkW,MAAAA,CAC1B,CAAA,IAAI,CAAC+mB,MAAM,CAAGptC,KAAKmQ,KAAK,CAACs7B,KACzB,CAAA,CAAA,IAAI,CAAC4B,eAAe,EACpB,CAAA,IAAI,CAACxD,IAAI,CAAGa,MAAOmC,CAAAA,iBAAiB,CAAC,IAAI,CAAA,CACzC,IAAI,CAACC,QAAQ,GACf,CACA1C,WAAc,EAAA,CACZ,IAAI,CAACP,IAAI,CAACO,WAAW,EACrB,CAAA,IAAI,CAAC0C,QAAQ,GACf,CACAP,sBAAAA,CAAuBe,IAAI,CAAE3nC,IAAI,CAAE,CACjC2nC,IAAKC,CAAAA,GAAG,EAAI5nC,KACd,CACA6nC,eAAgBC,CAAAA,IAAI,CAAE,CACpB,IAAI,CAAC5D,IAAI,CAAC2D,eAAe,CAACC,IAC1B,CAAA,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAAI,CAAChD,MAAM,CAACiD,cACxC,CACAN,eAAAA,EAAkB,CAChB,MAAMO,UAAY,IAAI,CAAC3B,OAAO,CAAGb,aAAaI,kBAAkB,CAAC,IAAI,CAACplB,KAAK,CAAE,IAAI,CAACC,MAAM,EAAI,CAC5F,CAAA,MAAMwnB,eAAkB,CAAA,IAAI,CAACC,mBAC7B,CAAA,IAAI,CAACC,UAAU,CAAG/tC,IAAKmU,CAAAA,GAAG,CAAC05B,eAAmBD,EAAAA,SAAAA,CAAWA,SACzD,CAAA,CAAA,IAAI,CAACI,QAAQ,CAAG,IAAI,CAACD,UAAU,CAAG,EACpC,CACA,IAAIE,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIC,SAAUjuC,CAAAA,CAAC,CAAE,CACf,GAAI,IAAI,CAACkuC,UAAU,GAAKluC,EAAG,CACzB,GAAIo9B,oBAAqB,CAAA,IAAI,CAAC+Q,OAAO,CAAA,CAAA,CAAA,KAAU,CAC7C,IAAI,CAACD,UAAU,CAAGluC,CAAAA,CAClB,IAAI,CAACstC,eAAe,CAACpG,sBAAAA,EACvB,CACF,CACF,CACA,IAAI+G,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIE,SAAUpuC,CAAAA,CAAC,CAAE,CACf,GAAI,IAAI,CAACquC,UAAU,GAAKruC,CAAAA,CAAG,CACzB,GAAIo9B,qBAAqB,IAAI,CAAC+Q,OAAO,CAAA,CAAA,CAAA,KAAU,CAC7C,IAAI,CAACE,UAAU,CAAGruC,EAClB,IAAI,CAACstC,eAAe,CAACnG,wBACvB,CACF,CACF,CACA,IAAIiH,WAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,QAAAA,CAAStuC,CAAC,CAAE,CACd,GAAI,IAAI,CAACuuC,SAAS,GAAKvuC,CAAG,CAAA,CACxB,IAAI,CAACuuC,SAAS,CAAGvuC,CAAAA,CACjB,IAAI,CAACstC,eAAe,CAAClG,uBACvB,CACF,CACA,IAAIkH,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,QAASxuC,CAAAA,CAAC,CAAE,CACd,GAAI,IAAI,CAACyuC,SAAS,GAAKzuC,CAAAA,CAAG,CACxB,IAAI,CAACyuC,SAAS,CAAGzuC,CACjB,CAAA,IAAI,CAACstC,eAAe,CAACjG,qBACvB,EAAA,CACF,CACA,IAAImH,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SACd,CACA,IAAIC,QAAAA,CAASA,QAAQ,CAAE,CACrB,GAAI,CAAC,IAAI,CAACC,OAAO,CAAE,CACjB,MACF,CACA,GAAID,QAAa,GAAA,IAAI,CAACE,SAAS,CAAE,CAC/B,IAAI,CAACA,SAAS,CAAGF,QACjB,CAAA,IAAI,CAACpB,eAAe,CAAChG,qBAAAA,EACvB,CACF,CACA,IAAIoH,QAAW,EAAA,CACb,OAAO,IAAI,CAACE,SACd,CACA,IAAIC,cAAc7uC,CAAC,CAAE,CACnB,GAAI,IAAI,CAAC8uC,cAAc,GAAK9uC,CAAAA,CAAG,CAC7B,IAAI,CAAC8uC,cAAc,CAAG9uC,EACtB,IAAI,CAACstC,eAAe,CAAC/F,6BACvB,CACF,CACA,IAAIsH,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIC,WAAAA,CAAY/uC,CAAC,CAAE,CACjB,GAAI,IAAI,CAACgvC,YAAY,GAAKhvC,CAAG,CAAA,CAC3B,IAAI,CAACgvC,YAAY,CAAGhvC,CAAAA,CACpB,IAAI,CAACstC,eAAe,CAAC9F,wBAAAA,EACvB,CACF,CACA,IAAIuH,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIC,UAAWjvC,CAAAA,CAAC,CAAE,CAChB,GAAI,IAAI,CAACkvC,WAAW,GAAKlvC,CAAAA,CAAG,CAC1B,IAAI,CAACkvC,WAAW,CAAGlvC,CACnB,CAAA,IAAI,CAACstC,eAAe,CAAC7F,sBACvB,EAAA,CACF,CACA,IAAIwH,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAInD,OAAQ/rC,CAAAA,CAAC,CAAE,CACb,GAAI,IAAI,CAAC8tC,QAAQ,GAAK9tC,CAAG,CAAA,CACvB,GAAI,IAAI,CAACwqC,MAAM,CAAC2E,QAAQ,CAAA,CAAA,KAAS,GAAI/R,oBAAqB,CAAA,IAAI,CAAC+Q,OAAO,QAAU,CAC9E,IAAI,CAACL,QAAQ,CAAG9tC,EAClB,CACA,GAAIA,CAAAA,CAAG,IAAI,CAACovC,mBAAmB,CAAG,KACpC,CACF,CACA,IAAIrD,OAAU,EAAA,CACZ,OAAO,IAAI,CAAC+B,QAAQ,CAEtB,IAAIuB,SAAY,EAAA,CACd,OAAO,IAAI,CAACxB,UACd,CACA,IAAIyB,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QAAQ,CAEtB,IAAIrpB,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC8mB,MACd,CACA,IAAI7mB,QAAS,CACX,OAAO,IAAI,CAAC8mB,OACd,CACA,IAAI1B,OAAQ,CACV,OAAO,IAAI,CAAC2B,MAAM,CAEpB,IAAI7mC,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC8nC,OAAO,CAErB,IAAInC,OAAU,EAAA,CACZ,OAAO,IAAI,CAACc,QACd,CACA,IAAI0C,OAAAA,EAAU,CACZ,MAAMC,KAAO,IAAI,CAACC,GAAG,EAAI,IAAI,CAAC5B,QAAQ,EAAI,EAAE,IAAI,CAAC6B,WAAW,EAAI,IAAI,CAACnD,OAAO,CAAChsC,MAAM,GAAK,CAAA,CACxF,CAAA,OAAO0qC,aAAaY,WAAW,CAAC,IAAI,CAACkB,MAAM,CAAE,IAAI,CAACC,OAAO,CAAE,IAAI,CAACC,MAAM,CAAE,IAAI,CAACiB,OAAO,CAAEsB,IAAAA,CAAM,IAAI,CAAC3C,QAAQ,CAC3G,CACA,IAAI8C,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,YAAY,CAAG,CAC7B,CACA,IAAIC,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACD,YAAY,CAE1B,IAAIE,MAAS,EAAA,CACX,OAAO,IAAI,CAACpB,OACd,CACA,IAAI32B,KAAK9P,KAAK,CAAE,CACd,GAAI,IAAI,CAACwS,KAAK,GAAKxS,MAAO,CACxB,IAAI,CAACwS,KAAK,CAAGxS,KACb,CAAA,IAAI,CAACsiC,MAAM,CAACwF,aAAa,CAAG,KAC9B,CACF,CACA,IAAIh4B,IAAO,EAAA,CACT,OAAO,IAAI,CAAC0C,KACd,CACA,IAAIqiB,IAAAA,CAAK70B,KAAK,CAAE,CACd,MAAM+nC,WAAAA,CAAc9S,iBAAkB,CAAA,IAAI,CAAC92B,MAAM,CACjD,CAAA,GAAI6B,QAAU+nC,WAAa,CAAA,CACzB,GAAI/nC,KAAAA,CAAO,CACT,MAAM40B,UAAAA,CAAaO,wBAAyB,CAAA,IAAI,CAACh3B,MAAM,CAAA,CACvD,GAAI,IAAI,CAAC8nC,OAAO,GAAKrR,UAAY,CAAA,CAC/B,IAAI,CAACqR,OAAO,CAAGrR,UAAAA,CACf,IAAI,CAAC2P,YAAY,EACjB,CAAA,IAAI,CAACjC,MAAM,CAACwF,aAAa,CAAG,KAC9B,CACF,CAAA,KAAO,CACL,MAAME,YAAAA,CAAe5S,wBAAyB,CAAA,IAAI,CAACj3B,MAAM,CAAA,CACzD,GAAI,IAAI,CAAC8nC,OAAO,GAAK+B,YAAc,CAAA,CACjC,IAAI,CAAC/B,OAAO,CAAG+B,YAAAA,CACf,IAAI,CAACzD,YAAY,EACjB,CAAA,IAAI,CAACjC,MAAM,CAACwF,aAAa,CAAG,KAC9B,CACF,CACF,CACF,CACA,IAAIjT,IAAO,EAAA,CACT,OAAOI,iBAAkB,CAAA,IAAI,CAAC92B,MAAM,CACtC,CACA,IAAI8pC,KAAMA,CAAAA,KAAK,CAAE,CACf,GAAI,IAAI,CAACC,MAAM,GAAKD,KAAAA,CAAO,CACzB,IAAI,CAACC,MAAM,CAAGD,KACd,CAAA,IAAI,CAACE,YAAY,CAAG,KACtB,CACF,CACA,IAAIF,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MAAM,CAEpB,IAAIE,gBAAiBA,CAAAA,gBAAgB,CAAE,CACrC,GAAI,IAAI,CAACC,iBAAiB,GAAKD,gBAAAA,CAAkB,CAC/C,IAAI,CAACC,iBAAiB,CAAGD,gBACzB,CAAA,IAAI,CAACD,YAAY,CAAG,KACtB,CACF,CACA,IAAIC,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACC,iBACd,CACA,IAAIb,GAAM,EAAA,CACR,OAAO97B,IAAKe,CAAAA,UAAU,CAAC,IAAI,CAACq4B,MAAM,CAAA,EAAKp5B,IAAKe,CAAAA,UAAU,CAAC,IAAI,CAACs4B,OAAO,CACrE,CACA,IAAIuD,QAAAA,EAAW,CACb,OAAO,IAAI,CAACx4B,IAAI,EACd,KAAKipB,iBACH,OAAO,MACT,CAAKC,KAAAA,gBAAAA,CACH,OAAO,MACT,CAAA,KAAKC,gBACH,CAAA,OAAO,MACX,CACA,OAAO5D,mBAAAA,CAAoB,IAAI,CAACl3B,MAAM,CAAI,CAAA,MAAA,CAAS,QACrD,CACAumC,QAAAA,EAAW,CACT,IAAI,CAAC6D,cAAc,CAAG,IAAI,CAAC3D,QAAQ,CAAG,CACpC,CACE,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACD,CACF,CAAG,CACF,IACD,CACD,CAAA,IAAI,CAACuD,YAAY,CAAG,IACpB,CAAA,IAAI,CAACjB,mBAAmB,CAAG,IAAI,CAACtB,QAAQ,CACxC,IAAI,CAAC4C,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACpD,eAAe,CAAC5F,eACvB,EAAA,CACAiJ,IAAK3+B,CAAAA,OAAAA,CAAU,EAAE,CAAE,CACjBA,IAAAA,QAAAA,CACAA,UACAA,SAFAA,CAAAA,CAAAA,QAAAA,CAAAA,OAAAA,EAAQ4+B,QAAR5+B,QAAQ4+B,CAAAA,KAAAA,CAAU,CAClB5+B,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,OAAAA,EAAQ6+B,IAAR7+B,GAAAA,SAAAA,CAAQ6+B,KAAS,CACjB7+B,CAAAA,CAAAA,CAAAA,SAAAA,CAAAA,OAAAA,EAAQ8+B,OAAR9+B,SAAQ8+B,CAAAA,IAAAA,CAAS/P,iBACjB,CAAA,CAAA,IAAI,CAACiN,WAAW,CAAGh8B,OAAAA,CAAQ8+B,IAAI,CAC/B,IAAI,CAACC,YAAY,CAAG/+B,OAAAA,CAAQ4+B,KAAK,CACjC,MAAMI,MAAS,CAAA,IAAI,CAAChF,OAAO,CAAG,IAAI,CAACQ,OAAO,CAACx6B,OAAQ6+B,CAAAA,IAAI,CAAC,CAAG,IAAI,CAACrE,OAAO,CACvE,GAAIwE,MAAM,CAACh/B,OAAAA,CAAQ4+B,KAAK,CAAC,GAAK,IAAM,CAAA,CAClC,MAAM1qB,KAAAA,CAAQpmB,KAAKoU,GAAG,CAAC,CAAG,CAAA,IAAI,CAAC84B,MAAM,EAAIh7B,OAAQ4+B,CAAAA,KAAK,EACtD,MAAMzqB,MAAAA,CAASrmB,IAAKoU,CAAAA,GAAG,CAAC,CAAG,CAAA,IAAI,CAAC+4B,OAAO,EAAIj7B,OAAAA,CAAQ4+B,KAAK,CAAA,CACxD,MAAMrF,KAAQzrC,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,EAAG,IAAI,CAACg5B,MAAM,EAAIl7B,QAAQ4+B,KAAK,CAAA,CACtD,MAAMr2B,IAAAA,CAAO,IAAI02B,WAAY/F,CAAAA,YAAAA,CAAaM,gBAAgB,CAACtlB,MAAOC,MAAQolB,CAAAA,KAAAA,CAAO,IAAI,CAAC4C,OAAO,CAC7F6C,CAAAA,CAAAA,MAAM,CAACh/B,QAAQ4+B,KAAK,CAAC,CAAG,IAAKnT,uBAAAA,CAAwB,IAAI,CAAC0Q,OAAO,CAAA,EAAG5zB,IACtE,EAAA,CACA,OAAOy2B,MAAM,CAACh/B,OAAQ4+B,CAAAA,KAAK,CAAC,CAE9BM,SAAUC,CAAAA,MAAM,CAAE9F,QAAW,CAAA,CAAC,CAAE,CAC9B,IAAI+F,OAAU,CAAA,KAAA,CACd,IAAIlrB,KAAAA,CAAOC,OACX,GAAI,IAAI,CAAC2mB,QAAQ,CAAE,CACjB,GAAIqE,MAAM,CAAC,CAAE,CAAA,CAAE,CACbjrB,KAAAA,CAAQirB,MAAM,CAAC,CAAA,CAAE,CAACjrB,KAAK,EAAI,CAC3BC,CAAAA,MAAAA,CAASgrB,MAAM,CAAC,EAAE,CAAChrB,MAAM,EAAI,CAAA,CAC7B,IAAI,IAAI5lB,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAGA,CAAI,EAAA,CAAA,CACxB,MAAMswC,IAAAA,CAAOM,MAAM,CAAC5wC,CAAAA,CAAE,CACtB,GAAI,CAACswC,IAAQA,EAAAA,IAAAA,CAAK3qB,KAAK,GAAKA,KAAS2qB,EAAAA,IAAAA,CAAK1qB,MAAM,GAAKA,QAAU,CAAC,IAAI,CAACqkB,MAAM,CAAC6G,mBAAmB,CAACR,IAAO,CAAA,CAAA,CACrGO,QAAU,IACV,CAAA,KACF,CACF,CACF,MAAO,CACLA,OAAAA,CAAU,KACZ,CACA,GAAI,CAACA,OAAAA,CAAS,CACZ,IAAI,IAAI7wC,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,IAAI,CACxB,GAAI,IAAI,CAACisC,OAAO,CAACnB,QAAS,CAAA,CAAC9qC,EAAE,GAAK4wC,MAAM,CAAC5wC,CAAAA,CAAE,CAAE,CAC3C,IAAI,CAACkwC,cAAc,CAACpF,QAAS,CAAA,CAAC9qC,CAAE,CAAA,CAAG,KACrC,CACF,CACF,CACF,CAAA,KAAO,CACL,GAAI,CAAC,IAAI,CAACiqC,MAAM,CAAC6G,mBAAmB,CAACF,MAAAA,CAAAA,CAAS,CAC5CC,OAAU,CAAA,KACZ,CACA,GAAI,CAACA,OAAAA,CAAS,CACZ,GAAID,SAAW,IAAI,CAAC3E,OAAO,CAACnB,SAAS,CAAE,CACrC,IAAI,CAACoF,cAAc,CAACpF,QAAAA,CAAS,CAAG,KAClC,CACA,GAAI8F,MAAAA,YAAkBG,gBAAkB,CAAA,CACtCprB,MAAQirB,MAAOI,CAAAA,UAAU,CACzBprB,MAAAA,CAASgrB,OAAOK,YAClB,CAAO,KAAA,CACLtrB,MAAQirB,MAAOjrB,CAAAA,KAAK,CACpBC,MAAAA,CAASgrB,MAAOhrB,CAAAA,OAAM,CAE1B,CACF,CACA,GAAIirB,OAAS,CAAA,CACX,IAAI,CAACpE,MAAM,CAAG,CACd,CAAA,IAAI,CAACC,OAAO,CAAG,EACf,GAAI,IAAI,CAACH,QAAQ,CAAE,CACjB,IAAI,IAAIvsC,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxB,IAAI,CAACisC,OAAO,CAACnB,QAAAA,CAAS,CAAC9qC,CAAAA,CAAE,CAAG,IAC5B,CAAA,IAAI,CAACkwC,cAAc,CAACpF,SAAS,CAAC9qC,CAAAA,CAAE,CAAG,KACrC,CACF,CAAO,KAAA,CACL,IAAI,CAACisC,OAAO,CAACnB,QAAAA,CAAS,CAAG,IACzB,CAAA,IAAI,CAACoF,cAAc,CAACpF,SAAS,CAAG,KAClC,CACF,CAAA,KAAO,CACL,GAAIA,QAAAA,GAAa,CAAG,CAAA,CAClB,IAAI,CAAC2B,MAAM,CAAG9mB,KACd,CAAA,IAAI,CAAC+mB,OAAO,CAAG9mB,OACjB,CACA,IAAI,CAACqmB,OAAO,CAACnB,QAAAA,CAAS,CAAG8F,OAC3B,CACA,GAAI,IAAI,CAACM,QAAQ,GAAKL,OAAW,EAAA,CAACA,OAAS,CAAA,CACzC,IAAI,CAACK,QAAQ,CAAGL,OAAAA,CAChB,IAAI,CAAC1E,MAAM,GACb,CACF,CACAgF,SAAAA,CAAUrG,QAAW,CAAA,CAAC,CAAE,CACtB,OAAO,IAAI,CAACmB,OAAO,CAACnB,QAAAA,CAAS,CAE/BsG,QAAS,CACP,GAAI,IAAI,CAAC3D,WAAW,GAAKnN,gBAAAA,CAAAA,CACzB,GAAI,IAAI,CAACmN,WAAW,GAAKjN,iBAAmB,CAAA,CAC1C,IAAI,CAAC2L,MAAM,GACb,CACA,IAAI,CAACqE,YAAY,CAAG,CAAC,CACrB,CAAA,IAAI,CAAC/C,WAAW,CAAGnN,iBACrB,CACA6L,MAAAA,EAAS,CACP,IAAI,CAAC2D,YAAY,CAAG,IACpB,CAAA,IAAI,CAACjB,mBAAmB,CAAG,IAAI,CAACtB,QAChC,CAAA,IAAI,CAACnE,IAAI,CAACiI,eAAe,GAAG,IAAI,CAACpH,MAAM,CAAE,IAAI,EAC/C,CACAhB,IAAAA,CAAK50B,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAEnU,OAAU,CAAA,EAAE,CAAE,CACtC,OAAO,IAAI,CAAC23B,IAAI,CAACH,IAAI,GAAG50B,EAAG0H,CAAG4J,CAAAA,KAAAA,CAAOC,MAAQnU,CAAAA,OAAAA,CAC/C,CACAu3B,KAAM30B,CAAAA,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAE5L,IAAI,CAAE,CAC/B,OAAO,IAAI,CAACovB,IAAI,CAACJ,KAAK,GAAG30B,CAAG0H,CAAAA,CAAAA,CAAG4J,KAAOC,CAAAA,MAAAA,CAAQ5L,KAChD,CAnbAjS,WAAAA,CAAY6hC,cAAc,CAAEn4B,QAAU,EAAE,CAAC,CACvC,IAAI,CAACu6B,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAChC,EAAE,CAAG0B,MACV,CAAA,IAAI,CAACwF,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACV,YAAY,CAAG,CAAC,CACrB,CAAA,IAAI,CAAC/C,WAAW,CAAGnN,gBACnB,CAAA,IAAI,CAAC2M,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAAC+B,QAAQ,CAAG,KAChB,CAAA,IAAI,CAAC1B,UAAU,CAAG,CAClB,CAAA,IAAI,CAACrD,MAAM,CAAGL,cACd,CAAA,IAAI,CAACtmC,IAAI,CAAGmO,OAAQnO,CAAAA,IAAI,EAAI,EAC5B,CAAA,IAAI,CAACmpC,MAAM,CAAGltC,KAAKmQ,KAAK,CAAC+B,OAAQkU,CAAAA,KAAK,EAAI,CAC1C,CAAA,CAAA,IAAI,CAAC+mB,OAAO,CAAGntC,IAAAA,CAAKmQ,KAAK,CAAC+B,QAAQmU,MAAM,EAAI,CAC5C,CAAA,CAAA,IAAI,CAACgoB,OAAO,CAAGn8B,OAAAA,CAAQ3L,MAAM,EAAI4yB,iBACjC,CAAA,IAAI,CAAC0W,WAAW,CAAGzS,uBAAAA,CAAwB,IAAI,CAACiR,OAAO,CACvD,CAAA,IAAI,CAAC0D,cAAc,CAAGzU,oBAAAA,CAAqB,IAAI,CAAC+Q,OAAO,CACvD,CAAA,GAAI,IAAI,CAAC0D,cAAc,CAAE,CACvB7/B,QAAQi8B,SAAS,CAAGzW,cACpBxlB,CAAAA,QAAQo8B,SAAS,CAAG5W,eACtB,CACA,IAAI,CAACmX,OAAO,CAAG38B,OAAAA,CAAQ+9B,MAAM,EAAI,KACjC,CAAA,IAAI,CAAC7C,MAAM,CAAGptC,IAAAA,CAAKmQ,KAAK,CAAC+B,OAAAA,CAAQu5B,KAAK,EAAI,EAC1C,CAAA,IAAI,CAACsE,YAAY,CAAG/vC,IAAKmQ,CAAAA,KAAK,CAAC+B,OAAAA,CAAQ89B,WAAW,EAAI,CAAA,CACtD,CAAA,IAAI,CAACP,QAAQ,CAAGv9B,OAAQs9B,CAAAA,OAAO,EAAI,KACnC,CAAA,IAAI,CAACxC,QAAQ,CAAG96B,OAAQg6B,CAAAA,OAAO,EAAI,KACnC,CAAA,IAAI,CAACoE,MAAM,CAAGp+B,OAAAA,CAAQm+B,KAAK,EAAI,KAC/B,CAAA,IAAI,CAACI,iBAAiB,CAAGv+B,OAAQs+B,CAAAA,gBAAgB,EAAI,KACrD,CAAA,IAAI,CAACxC,QAAQ,CAAG97B,QAAQ+5B,OAAO,EAAI,IACnC,CAAA,IAAI,CAAC6B,mBAAmB,CAAG57B,OAAAA,CAAQq9B,SAAS,CAC5C,GAAIr9B,OAAAA,CAAQq9B,SAAS,GAAKhnC,SAAAA,CAAW,CACnC,IAAI,CAACwlC,UAAU,CAAG77B,OAAQq9B,CAAAA,UAAS,CAErC,IAAI,CAAClC,eAAe,EACpB,CAAA,IAAI,CAACe,UAAU,CAAGl8B,OAAQi8B,CAAAA,SAAS,EAAIpW,2BACvC,CAAA,IAAI,CAACwW,UAAU,CAAGr8B,QAAQo8B,SAAS,EAAI3W,aACvC,CAAA,IAAI,CAACyX,WAAW,CAAGl9B,QAAQi9B,UAAU,EAAI,CACzC,CAAA,IAAI,CAACV,SAAS,CAAGv8B,OAAAA,CAAQs8B,QAAQ,EAAI7Z,cACrC,CAAA,IAAI,CAACga,SAAS,CAAGz8B,OAAQw8B,CAAAA,QAAQ,EAAI/Z,cACrC,CAAA,IAAI,CAACma,SAAS,CAAG58B,OAAAA,CAAQ08B,QAAQ,EAAIja,cACrC,CAAA,IAAI,CAACqa,cAAc,CAAG98B,OAAAA,CAAQ68B,aAAa,EAAI,KAC/C,CAAA,IAAI,CAACG,YAAY,CAAGh9B,OAAQ+8B,CAAAA,WAAW,EAAIhX,SAC3C,CAAA,IAAI,CAACrd,KAAK,CAAG1I,QAAQgG,IAAI,EAAIgpB,mBAC7B,CAAA,IAAI,CAAC8Q,UAAU,CAAG1P,sBAAAA,CAClB,GAAI,IAAI,CAAC0K,QAAQ,CAAE,CACjB,IAAI,CAACgF,UAAU,CAAGzP,uBACpB,CAAA,KAAO,GAAIrwB,OAAAA,CAAQ8/B,UAAU,EAAI9/B,OAAAA,CAAQ8/B,UAAU,GAAKzP,uBAAwB,CAC9E,IAAI,CAACyP,UAAU,CAAG9/B,OAAQ8/B,CAAAA,WAAU,CAEtC,IAAI,CAACtF,OAAO,CAAGx6B,OAAAA,CAAQg/B,MAAM,CAC7B,MAAMtE,MAAS,CAAA,CAAC,CAAC16B,OAAQg/B,CAAAA,MAAM,CAC/B,GAAI,CAAC,IAAI,CAACxE,OAAO,CAAE,CACjB,IAAI,CAACK,YAAY,GACnB,CACA,IAAI,CAACJ,YAAY,CAACC,MAClBvC,CAAAA,CAAAA,cAAAA,CAAegC,QAAQ,CAAC9qC,IAAI,CAAC,IAAI,EACnC,CA6XF,CAEA,MAAM0wC,WAAAA,CAAc,CAClBC,KAAAA,CAAO,CACL,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACD,CACDC,IAAM,CAAA,CACJ,GACA,CAAA,GAAA,CACA,IACA,GACD,CAAA,CACDC,KAAO,CAAA,CACL,CACA,CAAA,CAAA,CACA,CACA,CAAA,GAAA,CACD,CACD7rB,MAAQ,CAAA,CACN,GACA,CAAA,GAAA,CACA,IACA,GACD,CAAA,CACD8rB,IAAM,CAAA,CACJ,IACA,GACA,CAAA,GAAA,CACA,GACD,CACH,CACA,CAAMC,MAAAA,eAAAA,CACJ1I,OAAU,EAAA,CACR,IAAI,CAACtiC,GAAG,CAAC8F,OAAO,CAAC,OAACmlC,EAAAA,CAChBA,OAAQ3I,CAAAA,OAAO,GACjB,CACF,EAAA,CACAphC,WAAa,EAAA,CACX,IAAI,CAAClB,GAAG,CAAG,IAAIuB,IACjB,CACF,CACA,MAAM2pC,cAAgB,IAAIvH,WAAAA,CAC1B,MAAMwH,iBAAAA,CAAoB,CAAC/H,MAAQ3mC,CAAAA,IAAAA,GAAAA,CACjC,MAAM2uC,KAAAA,CAAQF,cAAchwC,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CACtC,OAAO,IAAI4H,eACb,CACA,CAAA,CAAA,GAAI,CAACI,KAAMprC,CAAAA,GAAG,CAACyB,GAAG,CAAChF,IAAO,CAAA,CAAA,CACxB,MAAMwuC,OAAAA,CAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAClC3mC,KAAM,CAAC,iBAAiB,EAAEA,IAAAA,CAAK,CAAC,CAChCqiB,KAAAA,CAAO,CACPC,CAAAA,MAAAA,CAAQ,EACR9f,MAAQ4yB,CAAAA,iBACV,CACA,CAAA,CAAA,MAAMwZ,OAASJ,OAAQ1B,CAAAA,IAAI,EAC3B,CAAA,MAAMp2B,KAAOw3B,WAAW,CAACluC,IAAK,CAAA,CAC9B4uC,OAAO3pC,GAAG,CAACyR,IACX83B,CAAAA,CAAAA,OAAAA,CAAQV,MAAM,EACda,CAAAA,KAAAA,CAAMprC,GAAG,CAAC0B,GAAG,CAACjF,IAAMwuC,CAAAA,OAAAA,EACtB,CACA,OAAOG,KAAAA,CAAMprC,GAAG,CAAC9E,GAAG,CAACuB,IAAAA,CACvB,CAEA,CAAA,IAAI6uC,KAAO,CACX,CAAA,MAAMC,gBACJrqC,CAAAA,WAAAA,EAAa,CACX,IAAI,CAACsqC,OAAO,CAAG,GAAE,CAErB,CACA,MAAMC,UAkBJnJ,OAAU,EAAA,CACR,IAAI,CAACC,IAAI,CAACD,OAAO,EACjB,CAAA,IAAI,CAACC,IAAI,CAAG,IACZ,CAAA,IAAI,CAACtjC,MAAM,CAAG,IACd,CAAA,IAAI,CAACysC,oBAAoB,CAAG,KAC9B,CACAC,gBAAAA,CAAiBlvC,IAAI,CAAEmvC,aAAa,CAAE,CACpC,MAAM5sC,KAAQ,CAAA,IAAI,CAACC,MAAM,CAACokC,gBAAgB,CAACnoC,GAAG,CAACuB,MAC/C,GAAI,IAAI,CAACovC,cAAc,CAAC7sC,KAAAA,CAAM,GAAK4sC,aAAAA,CAAe,CAChD,IAAI,CAACC,cAAc,CAAC7sC,MAAM,CAAG4sC,aAC7B,CAAA,IAAI,CAACE,KAAK,CAAG,KACf,CACF,CACAC,gBAAiBtvC,CAAAA,IAAI,CAAEuvC,aAAa,CAAE,CACpC,MAAMhtC,KAAQ,CAAA,IAAI,CAACC,MAAM,CAACwkC,uBAAuB,CAACvoC,GAAG,CAACuB,IAAAA,CAAAA,CACtD,GAAI,IAAI,CAACwvC,cAAc,CAACjtC,KAAAA,CAAM,GAAKgtC,aAAe,CAAA,CAChD,IAAI,CAACC,cAAc,CAACjtC,KAAAA,CAAM,CAAGgtC,aAC7B,CAAA,IAAI,CAACF,KAAK,CAAG,KACf,CACF,CACAI,UAAWzvC,CAAAA,IAAI,CAAEwuC,OAAO,CAAE,CACxB,MAAMjsC,MAAQ,IAAI,CAACC,MAAM,CAACwjC,iBAAiB,CAACvnC,GAAG,CAACuB,IAAAA,CAAAA,CAChD,GAAI,IAAI,CAACsoC,QAAQ,CAAC/lC,KAAM,CAAA,GAAKisC,OAAS,CAAA,CACpC,IAAI,CAAClG,QAAQ,CAAC/lC,KAAAA,CAAM,CAAGisC,OACvB,CAAA,IAAI,CAACa,KAAK,CAAG,KACf,CAAO,KAAA,GAAI,IAAI,CAACK,oBAAoB,CAAGlB,OAAAA,CAAQ7E,kBAAkB,CAAE,CACjE,IAAI,CAAC0F,KAAK,CAAG,KACf,CACF,CACAM,iBAAkB3vC,CAAAA,IAAI,CAAEwuC,OAAO,CAAE,CAC/B,MAAMjsC,KAAQ,CAAA,IAAI,CAACC,MAAM,CAAC2jC,wBAAwB,CAAC1nC,GAAG,CAACuB,IAAAA,CAAAA,CACvD,GAAI,IAAI,CAAC4vC,eAAe,CAACrtC,KAAM,CAAA,GAAKisC,QAAS,CAC3C,IAAI,CAACoB,eAAe,CAACrtC,KAAM,CAAA,CAAGisC,OAC9B,CAAA,IAAI,CAACa,KAAK,CAAG,KACf,CAAO,KAAA,GAAI,IAAI,CAACK,oBAAoB,CAAGlB,OAAAA,CAAQ7E,kBAAkB,CAAE,CACjE,IAAI,CAAC0F,KAAK,CAAG,KACf,CACF,CACAQ,oBAAuB,EAAA,CACrB,IAAI,IAAInzC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC0yC,cAAc,CAACzyC,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,IAAI,CAAC0yC,cAAc,CAAC1yC,CAAAA,CAAE,CAACozC,MAAM,GAC/B,CACF,CACAA,MAAAA,EAAS,CACP,KAAM,CAAE7J,cAAc,CAAEG,qBAAqB,CAAEK,oBAAoB,CAAE,CAAG,IAAI,CAACjkC,MAAM,CACnF,IAAI,IAAI9F,CAAI,CAAA,CAAA,CAAGA,CAAIupC,CAAAA,cAAAA,CAAetpC,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,MAAMqzC,cAAgB9J,cAAc,CAACvpC,CAAE,CAAA,CACvC,IAAI2H,KAAQ0rC,CAAAA,aAAAA,CAAc/K,OAAO,CAAC3gC,KAAK,CACvC,GAAI,CAACA,MAAO,CACV,GAAI0rC,aAAc/vC,CAAAA,IAAI,GAAK,gBAAkB,CAAA,CAC3CqE,KAAQqqC,CAAAA,iBAAAA,CAAkB,IAAI,CAAC/H,MAAM,CAAE,OAAA,EACzC,CACA,GAAIoJ,aAAAA,CAAc/vC,IAAI,GAAK,iBAAkB,CAC3CqE,KAAAA,CAAQqqC,iBAAkB,CAAA,IAAI,CAAC/H,MAAM,CAAE,MACzC,EAAA,CACA,GAAI,CAACtiC,KAAAA,CAAO,CACVA,KAAAA,CAAQqqC,iBAAkB,CAAA,IAAI,CAAC/H,MAAM,CAAE,MACzC,EAAA,CACF,CACA,IAAI,CAAC8I,UAAU,CAACM,aAAc/vC,CAAAA,IAAI,CAAEqE,KACtC,EAAA,CACA,IAAI,IAAI3H,EAAI,CAAGA,CAAAA,CAAAA,CAAI0pC,qBAAsBzpC,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACnD,MAAMszC,oBAAAA,CAAuB5J,qBAAqB,CAAC1pC,CAAAA,CAAE,CACrD,MAAM2H,MAAQ2rC,oBAAqBhL,CAAAA,OAAO,CAAC3gC,KAAK,CAChD,IAAI,CAACsrC,iBAAiB,CAACK,oBAAqBhwC,CAAAA,IAAI,CAAEqE,KAAAA,EACpD,CACA,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,EAAI+pC,oBAAqB9pC,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClD,MAAMuzC,mBAAAA,CAAsBxJ,oBAAoB,CAAC/pC,EAAE,CACnD,MAAM2H,KAAQ4rC,CAAAA,mBAAAA,CAAoBjL,OAAO,CAAC3gC,KAAK,CAC/C,IAAI,CAACirC,gBAAgB,CAACW,mBAAoBjwC,CAAAA,IAAI,CAAEqE,KAAAA,EAClD,CACA,IAAI,CAAC6rC,oBAAoB,CAACvzC,MAAM,CAAG,IAAI,CAACyyC,cAAc,CAACzyC,MAAM,CAC7D,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC0yC,cAAc,CAACzyC,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,MAAMyyC,cAAgB,IAAI,CAACC,cAAc,CAAC1yC,EAAE,CAC5C,IAAI,CAACwzC,oBAAoB,CAACxzC,CAAE,CAAA,CAAGyyC,cAAc/kC,MAAM,CACnD,GAAI,IAAI,CAACslC,oBAAoB,CAAGP,aAAcxF,CAAAA,kBAAkB,CAAE,CAChE,IAAI,CAAC0F,KAAK,CAAG,KACf,CACF,CACA,GAAI,IAAI,CAACA,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAG,KACb,CAAA,IAAI,CAACK,oBAAoB,CAAG,IAAI,CAAC/I,MAAM,CAACiD,aAAa,CACrD,IAAI,CAAC9D,IAAI,CAACgK,MAAM,CAAC,IAAI,EACvB,CACF,CArGArrC,WAAAA,CAAY6hC,cAAc,CAAE9jC,MAAM,CAAEysC,oBAAoB,CAAC,CACvD,IAAI,CAACS,oBAAoB,CAAG,CAAC,CAC7B,CAAA,IAAI,CAACQ,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACxJ,EAAE,CAAGmI,IAAAA,EACV,CAAA,IAAI,CAAClI,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC9jC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC6sC,KAAK,CAAG,IACb,CAAA,IAAI,CAACvJ,IAAI,CAAGQ,cAAe6J,CAAAA,mBAAmB,CAAC,IAAI,CACnD,CAAA,IAAI,CAAC7H,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACsH,eAAe,CAAG,EACvB,CAAA,IAAI,CAACJ,cAAc,CAAG,EACtB,CAAA,IAAI,CAACJ,cAAc,CAAG,EAAE,CACxB,IAAI,CAACH,oBAAoB,CAAGA,oBAAAA,CAC5B,GAAIA,oBAAAA,CAAsB,CACxB,IAAI,CAACC,gBAAgB,CAAChL,iCAAkC+K,oBAC1D,EAAA,CACF,CAsFF,CAEA,MAAMmB,UAAAA,CAAa,CACjBnrC,GAAAA,CAAKwmC,OAAO,CAAEpnC,KAAK,CAAEgsC,KAAK,CAAEC,IAAO,CAAA,CAAC,CAClC,CAAA,MAAM55B,KAAO+0B,OAAU,CAAA,EAAE6E,IAAAA,EAAQD,KAAI,CACrC,CAAA,OAAO35B,IAAOrS,CAAAA,KAAAA,EAASgsC,KACzB,CACA5xC,CAAAA,GAAAA,CAAKgtC,OAAO,CAAE4E,KAAK,CAAEC,IAAAA,CAAO,CAAC,CAAA,CAC3B,OAAO7E,OAAW4E,EAAAA,KAAAA,CAAQC,IAC5B,CAAA,CACAC,IAAK9E,OAAO,CAAE4E,KAAK,CAAEC,KAAO,CAAC,CAAA,CAC3B,MAAME,OAAAA,CAAUF,MAAQD,KACxB,CAAA,OAAO,CAAC5E,QAAU+E,OAAM,IAAOA,OACjC,CAAA,CACAC,IAAKhF,OAAO,CAAE4E,KAAK,CAAEC,KAAO,CAAC,CAAA,CAC3B,OAAQ7E,CAAAA,OAAU6E,CAAAA,IAAAA,EAAQD,KAAI,IAAO,CACvC,CACF,CAAA,CAEA,MAAMK,MAAAA,CAAS,CACf,CAAA,MAAMC,UAAa,CAAA,EAAA,CACnB,MAAMC,YAAe,CAAA,CAAA,CACrB,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,mBAAAA,CAAsB,CAC5B,CAAA,MAAMC,aAAe,EACrB,CAAA,MAAMC,mBAAsB,CAAA,EAAA,CAC5B,MAAMC,mBAAsB,CAAA,EAAA,CAC5B,MAAMC,aAAAA,CAAgB,GACtB,MAAMC,eAAAA,CAAkB,EACxB,CAAA,MAAMC,eAAiB,EACvB,CAAA,MAAMC,eAAkB,CAAA,EAAA,CACxB,MAAMC,UAAa,CAAA,EAAA,CACnB,MAAMC,aAAAA,CAAgB,EACtB,CAAA,MAAMC,aAAgBN,CAAAA,aACtB,OAAMO,UAQJ,CAAA,IAAIC,KAAMrtC,CAAAA,KAAK,CAAE,CACf,IAAI,CAACstC,OAAO,CAAGvB,UAAWnrC,CAAAA,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEttC,KAAQ,CAAA,CAAA,CAAI,EAAGitC,UAC7D,EAAA,CACA,IAAII,KAAAA,EAAQ,CACV,OAAOtB,UAAAA,CAAWG,GAAG,CAAC,IAAI,CAACoB,OAAO,CAAEL,UAAAA,CACtC,CACAM,aAAAA,CAAcC,EAAE,CAAEC,SAAS,CAAEC,SAAS,CAAE,CACtC,IAAI,CAACJ,OAAO,CAAGvB,UAAAA,CAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEE,EAAIjB,CAAAA,YAAAA,CAAcF,MAC9D,CAAA,CAAA,IAAI,CAACiB,OAAO,CAAGvB,UAAAA,CAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEG,SAAWjB,CAAAA,mBAAAA,CAAqBF,UAC5E,CAAA,CAAA,IAAI,CAACgB,OAAO,CAAGvB,WAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEI,SAAAA,CAAWjB,mBAAqBH,CAAAA,UAAAA,EAC9E,CACAqB,aAAcH,CAAAA,EAAE,CAAEC,SAAS,CAAEC,SAAS,CAAE,CACtC,IAAI,CAACJ,OAAO,CAAGvB,UAAWnrC,CAAAA,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEE,GAAId,YAAcL,CAAAA,MAAAA,CAC9D,CAAA,IAAI,CAACiB,OAAO,CAAGvB,UAAAA,CAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEG,SAAWd,CAAAA,mBAAAA,CAAqBL,UAC5E,CAAA,CAAA,IAAI,CAACgB,OAAO,CAAGvB,UAAAA,CAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEI,SAAWd,CAAAA,mBAAAA,CAAqBN,UAC9E,EAAA,CACAsB,cAAcC,QAAQ,CAAEC,UAAU,CAAEC,SAAS,CAAEC,UAAU,CAAE,CACzD,IAAI,CAACH,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACC,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACC,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACC,UAAU,CAAGA,WACpB,CACA,IAAIC,OAAU,EAAA,CACZ,OAAOlC,UAAAA,CAAW3xC,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEf,YAAcF,CAAAA,MAAAA,CACpD,CACA,IAAI6B,cAAiB,EAAA,CACnB,OAAOnC,UAAAA,CAAW3xC,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEd,mBAAqBF,CAAAA,UAAAA,CAC3D,CACA,IAAI6B,gBAAiB,CACnB,OAAOpC,UAAW3xC,CAAAA,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEb,oBAAqBH,UAC3D,CAAA,CACA,IAAI8B,OAAAA,EAAU,CACZ,OAAOrC,UAAAA,CAAW3xC,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEZ,YAAAA,CAAcL,MACpD,CAAA,CACA,IAAIgC,cAAAA,EAAiB,CACnB,OAAOtC,UAAAA,CAAW3xC,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEX,mBAAAA,CAAqBL,WAC3D,CACA,IAAIgC,cAAiB,EAAA,CACnB,OAAOvC,UAAW3xC,CAAAA,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEV,mBAAqBN,CAAAA,UAAAA,CAC3D,CACA,IAAIuB,QAAAA,CAAS7tC,KAAK,CAAE,CAClB,IAAI,CAACstC,OAAO,CAAGvB,UAAWnrC,CAAAA,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEttC,KAAQ,CAAA,CAAA,CAAI,EAAG6sC,aAC7D,EAAA,CACA,IAAIgB,QAAAA,EAAW,CACb,OAAO9B,UAAAA,CAAWG,GAAG,CAAC,IAAI,CAACoB,OAAO,CAAET,aAAAA,CACtC,CACA,IAAIiB,UAAAA,CAAW9tC,KAAK,CAAE,CACpB,IAAI,CAACstC,OAAO,CAAGvB,WAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEttC,KAAQ,CAAA,CAAA,CAAI,EAAG8sC,eAC7D,EAAA,CACA,IAAIgB,UAAAA,EAAa,CACf,OAAO/B,UAAAA,CAAWG,GAAG,CAAC,IAAI,CAACoB,OAAO,CAAER,eAAAA,CACtC,CACA,IAAIiB,SAAAA,CAAU/tC,KAAK,CAAE,CACnB,IAAI,CAACstC,OAAO,CAAGvB,WAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEttC,KAAAA,CAAQ,CAAI,CAAA,CAAA,CAAG+sC,cAC7D,EAAA,CACA,IAAIgB,SAAAA,EAAY,CACd,OAAOhC,UAAAA,CAAWG,GAAG,CAAC,IAAI,CAACoB,OAAO,CAAEP,cAAAA,CACtC,CACA,IAAIiB,UAAAA,CAAWhuC,KAAK,CAAE,CACpB,IAAI,CAACstC,OAAO,CAAGvB,WAAWnrC,GAAG,CAAC,IAAI,CAAC0sC,OAAO,CAAEttC,KAAAA,CAAQ,CAAI,CAAA,CAAA,CAAGgtC,iBAC7D,CACA,IAAIgB,UAAa,EAAA,CACf,OAAOjC,UAAAA,CAAWG,GAAG,CAAC,IAAI,CAACoB,OAAO,CAAEN,eAAAA,CACtC,CACA,IAAIuB,QAAAA,EAAW,CACb,OAAOxC,WAAW3xC,GAAG,CAAC,IAAI,CAACkzC,OAAO,CAAEH,aAAAA,CAAeD,aACrD,CAAA,CACA91C,KAAKyW,GAAG,CAAE,CACR,IAAI,CAACy/B,OAAO,CAAGz/B,GAAIy/B,CAAAA,OAAO,CAC1B,OAAO,IAAI,CAEb3/B,KAAQ,EAAA,CACN,MAAMA,KAAAA,CAAQ,IAAI,IAAI,CAACvN,WAAW,CAClC,OAAOuN,KAAMvW,CAAAA,IAAI,CAAC,IAAI,CACxB,CACA,IAAI8I,GAAM,EAAA,CACR,OAAO,IAAI,CAACotC,OACd,CACAx/B,MAAOD,CAAAA,GAAG,CAAE,CACV,OAAO,IAAI,CAACy/B,OAAO,GAAKz/B,IAAIy/B,OAC9B,CAvFAltC,WAAAA,CAAYitC,KAAQ,CAAA,KAAK,CAAEY,OAAAA,CAAU1gB,iBAAiB,CAAE2gB,cAAAA,CAAiBvhB,aAAa,CAAEwhB,eAAiBzhB,cAAc,CAAE0hB,OAAO,CAAEC,cAAc,CAAEC,cAAc,CAAET,QAAAA,CAAW,IAAI,CAAEC,UAAAA,CAAa,IAAI,CAAEC,UAAY,IAAI,CAAEC,UAAa,CAAA,IAAI,CAAC,CACxO,IAAI,CAACV,OAAO,CAAG,CACf,CAAA,IAAI,CAACC,aAAa,CAACU,OAAAA,CAASC,cAAgBC,CAAAA,cAAAA,CAAAA,CAC5C,IAAI,CAACR,aAAa,CAACS,OAAAA,EAAWH,QAASI,cAAkBH,EAAAA,cAAAA,CAAgBI,cAAkBH,EAAAA,cAAAA,CAAAA,CAC3F,IAAI,CAACP,aAAa,CAACC,QAAAA,CAAUC,WAAYC,SAAWC,CAAAA,UAAAA,CACpD,CAAA,IAAI,CAACX,KAAK,CAAGA,MACf,CA8FF,CAXI,UA1FED,CA0FGoB,OAAO,CAAGt0C,OAAO4U,MAAM,CAAC,IAAIs+B,UAAAA,CAGjC,CA7FEA,UAAAA,CA6FGqB,OAAO,CAAGv0C,OAAO4U,MAAM,CAAC,IAAIs+B,UAAAA,CAAWjtC,UAAWA,SAAWA,CAAAA,SAAAA,CAAWA,SAAWA,CAAAA,SAAAA,CAAWA,UAAWA,SAAW,CAAA,KAAA,CAAO,KAAO,CAAA,KAAA,CAAO,OAG9I,CAhGEitC,UAAAA,CAgGGsB,UAAU,CAAGx0C,OAAO4U,MAAM,CAAC,IAAIs+B,UAAAA,CAAW,KAAM7f,iBAAmBP,CAAAA,mBAAAA,CAAqBE,6BAG7F,CAAA,CAAA,CAnGEkgB,WAmGGuB,QAAQ,CAAGz0C,MAAO4U,CAAAA,MAAM,CAAC,IAAIs+B,UAAW,CAAA,IAAA,CAAM7f,kBAAmBZ,aAAeA,CAAAA,aAAAA,CAAAA,CAIzF,CAAMiiB,MAAAA,SAAAA,CACJx0C,IAAIuB,IAAI,CAAE,CACR,IAAIqE,MAAQ,IAAI,CAACd,GAAG,CAAC9E,GAAG,CAACuB,IAAAA,CAAAA,CACzB,GAAIqE,KAAAA,GAAUG,UAAW,CACvBH,KAAAA,CAAQ,IAAI,CAACqiC,EAAE,EACf,CAAA,IAAI,CAACnjC,GAAG,CAAC0B,GAAG,CAACjF,IAAMqE,CAAAA,KAAAA,EACrB,CACA,OAAOA,KACT,CACAI,aAAa,CACX,IAAI,CAAClB,GAAG,CAAG,IAAIuB,GACf,CAAA,IAAI,CAAC4hC,EAAE,CAAG,EACZ,CACF,CAEA,MAAMwM,WAAAA,CAAc,IAAID,SAAAA,CACxB,MAAME,QAAW,CAAA,CAAA,CACjB,MAAMC,SAAAA,CAAY,EAClB,MAAMC,UAAAA,CAAa,CACnB,CAAA,MAAMC,WASJ,IAAIl0C,IAAAA,CAAKiF,KAAK,CAAE,CACd,IAAI,CAAC8C,IAAI,CAAG9C,KAAQ+vB,CAAAA,cAAAA,CAAiBI,WACrC,CAAA,IAAI,CAAC+e,SAAS,GAChB,CACA,IAAIn0C,MAAO,CACT,OAAO,IAAI,CAAC+H,IAAI,GAAKqtB,WACvB,CACA,IAAIkR,MAAMrhC,KAAK,CAAE,CACf,IAAI,CAACqS,IAAI,CAAG05B,UAAWnrC,CAAAA,GAAG,CAAC,IAAI,CAACyR,IAAI,CAAErS,KAAQ,CAAA,CAAA,CAAI,CAAGgvC,CAAAA,UAAAA,CAAAA,CACrD,IAAI,CAACE,SAAS,GAChB,CACA,IAAI7N,KAAQ,EAAA,CACV,OAAO0K,UAAAA,CAAWG,GAAG,CAAC,IAAI,CAAC75B,IAAI,CAAE28B,UACnC,CAAA,CACA,IAAIlsC,IAAAA,CAAK9C,KAAK,CAAE,CACd,IAAI,CAACqS,IAAI,CAAG05B,UAAAA,CAAWnrC,GAAG,CAAC,IAAI,CAACyR,IAAI,CAAErS,KAAAA,CAAO+uC,SAAWD,CAAAA,QAAAA,CAAAA,CACxD,IAAI,CAACI,SAAS,GAChB,CACA,IAAIpsC,IAAAA,EAAO,CACT,OAAOipC,UAAAA,CAAW3xC,GAAG,CAAC,IAAI,CAACiY,IAAI,CAAE08B,SAAAA,CAAWD,SAC9C,CACA,IAAIK,SAAUnvC,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACovC,UAAU,CAAGpvC,KAClB,CAAA,IAAI,CAACkvC,SAAS,GAChB,CACA,IAAIC,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,cAAervC,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACsvC,eAAe,CAAGtvC,KACvB,CAAA,IAAI,CAACkvC,SAAS,GAChB,CACA,IAAIG,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eACd,CACAl4C,IAAKyW,CAAAA,GAAG,CAAE,CACR,IAAI,CAACwE,IAAI,CAAGxE,GAAAA,CAAIwE,IAChB,CAAA,IAAI,CAAC+8B,UAAU,CAAGvhC,GAAIuhC,CAAAA,UAAU,CAChC,IAAI,CAACE,eAAe,CAAGzhC,GAAIyhC,CAAAA,eAAe,CAC1C,IAAI,CAACpvC,GAAG,CAAG2N,GAAAA,CAAI3N,GAAG,CAClB,OAAO,IACT,CACAyN,KAAQ,EAAA,CACN,MAAMA,KAAAA,CAAQ,IAAI,IAAI,CAACvN,WAAW,CAClC,OAAOuN,KAAAA,CAAMvW,IAAI,CAAC,IAAI,CACxB,CACA83C,SAAY,EAAA,CACV,KAAM,CAAE78B,IAAI,CAAE+8B,UAAU,CAAEE,eAAe,CAAE,CAAG,IAAI,CAClD,MAAMpvC,GAAAA,CAAM,CAAC,EAAEmS,KAAK,CAAC,EAAE+8B,UAAW,CAAA,CAAC,EAAEE,eAAgB,CAAA,CAAC,CACtD,IAAI,CAACpvC,GAAG,CAAG2uC,WAAAA,CAAYz0C,GAAG,CAAC8F,GAC7B,EAAA,CACA4N,OAAOD,GAAG,CAAE,CACV,OAAO,IAAI,CAAC3N,GAAG,GAAK2N,GAAAA,CAAI3N,GAAG,CA5D7BE,WAAY0C,CAAAA,IAAAA,CAAOitB,cAAc,CAAEsR,KAAAA,CAAQ,IAAI,CAAC,CAC9C,IAAI,CAAChvB,IAAI,CAAG,CACZ,CAAA,IAAI,CAAC+8B,UAAU,CAAG,CAClB,CAAA,IAAI,CAACE,eAAe,CAAG,CACvB,CAAA,IAAI,CAACpvC,GAAG,CAAG,CACX,CAAA,IAAI,CAAC4C,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACu+B,KAAK,CAAGA,MACf,CAgEF,CAxEM4N,WAgEGM,OAAO,CAAGr1C,MAAO4U,CAAAA,MAAM,CAAC,IAAImgC,UAAAA,CAGjC,CAnEEA,UAAAA,CAmEGO,OAAO,CAAGt1C,MAAAA,CAAO4U,MAAM,CAAC,IAAImgC,UAAAA,CAAW9e,WAAa,CAAA,KAAA,CAAA,CAGzD,CAtEE8e,UAsEGQ,CAAAA,UAAU,CAAGv1C,MAAAA,CAAO4U,MAAM,CAAC,IAAImgC,UAAW9e,CAAAA,WAAAA,CAAa,MAIhE,CAAMuf,MAAAA,OAAAA,CACJ5hC,MAAOsS,CAAAA,KAAK,CAAE,CACZ,OAAO,IAAI,CAACuvB,QAAQ,GAAKvvB,KAAAA,CAAMuvB,QAAQ,EAAI,IAAI,CAAC54C,QAAQ,GAAKqpB,KAAAA,CAAMrpB,QAAQ,CAE7EK,IAAKgpB,CAAAA,KAAK,CAAE,CACV,IAAI,CAACuvB,QAAQ,CAAGvvB,KAAAA,CAAMuvB,QACtB,CAAA,IAAI,CAAC54C,QAAQ,CAAGqpB,MAAMrpB,SACxB,CACAiP,KAAAA,EAAQ,CACN,IAAI,CAAC2pC,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAC54C,QAAQ,CAAG,EAClB,CACAqJ,WAAa,EAAA,CACX,IAAI,CAACuvC,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAC54C,QAAQ,CAAG,EAClB,CACF,CAEA,IAAI64C,UAAY,CAChB,CAAA,MAAMC,eAMJC,CAAAA,SAAAA,EAAY,CACV,IAAI,CAACh5C,OAAO,CAACC,QAAQ,GACvB,CAPAqJ,WAAa,EAAA,CACXwvC,WACA,CAAA,IAAI,CAAC94C,OAAO,CAAG,IAAI44C,OACnB,CAAA,IAAI,CAAC54C,OAAO,CAAC64C,QAAQ,CAAGC,UAC1B,CAIF,CAEA,MAAMG,QAMJ9vC,MAAOC,CAAAA,GAAG,CAAE,CACV,OAAOC,SACT,CACA6vC,QAAShwC,CAAAA,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAGA,KACb,CAAA,IAAI,CAACiwC,aAAa,CAACH,SAAS,GAC9B,CACAI,QAAAA,EAAW,CACT,OAAO,IAAI,CAAClwC,KAAK,CAbnBI,WAAAA,CAAYzE,IAAI,CAAC,CACf,IAAI,CAACA,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACqE,KAAK,CAAG,IACb,CAAA,IAAI,CAACiwC,aAAa,CAAG,IAAIJ,gBAC3B,CAWF,CAEA,MAAMM,UAKJzN,CAAAA,OAAAA,CAAQ/mC,IAAI,CAAE,CACZ,GAAI,CAAC,IAAI,CAACy0C,SAAS,CAACzvC,GAAG,CAAChF,IAAO,CAAA,CAAA,CAC7B,IAAI,CAACy0C,SAAS,CAACxvC,GAAG,CAACjF,IAAAA,CAAM,IAAIo0C,OAAQp0C,CAAAA,IAAAA,CAAAA,EACvC,CACA,OAAO,IAAI,CAACy0C,SAAS,CAACh2C,GAAG,CAACuB,IAC5B,CAAA,CACAuoC,WAAYlkC,CAAAA,KAAK,CAAE,CACjB,IAAI,MAAMqwC,WAAAA,IAAe,IAAI,CAACD,SAAS,CAAC,CACtC,MAAME,OAAU,CAAA,IAAI,CAACF,SAAS,CAACC,WAAY,CAAA,CAC3C,GAAIC,OAAAA,CAAQtwC,KAAK,GAAKA,KAAO,CAAA,CAC3BswC,QAAQtwC,KAAK,CAAG,KAClB,CACF,CACF,CAjBAI,WAAAA,CAAYzE,IAAI,CAAC,CACf,IAAI,CAACA,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACy0C,SAAS,CAAG,IAAI3vC,IACvB,CAeF,CAEA,IAAI8vC,IAAO,CAAA,CACX,CAAMC,MAAAA,YAAAA,CAmBJhP,SAAU,CACR,MAAMc,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM3/B,IAAM2/B,MAAOmO,CAAAA,OAAO,CAACnvC,OAAO,CAAC,IAAI,CAAA,CACvC,GAAIqB,GAAAA,GAAQ,CAAC,CAAG,CAAA,CACd2/B,MAAOmO,CAAAA,OAAO,CAACtvC,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC7B,CACA,GAAI,IAAI,CAAC8+B,IAAI,CAACiP,WAAW,CAAE,CACzB,IAAI,CAACjP,IAAI,CAACD,OAAO,CAACc,MAClB,CAAA,CAAA,IAAI,CAAC6B,sBAAsB,CAAC7B,MAAO8B,CAAAA,KAAK,CAAE,CAAC,IAAI,CAACgD,OAAO,CAACthC,UAAU,EACpE,CACF,CACAq+B,sBAAuBe,CAAAA,IAAI,CAAE3nC,IAAI,CAAE,CACjC2nC,IAAAA,CAAKyL,EAAE,EAAIpzC,KACb,CACAykC,WAAAA,EAAc,CACZ,IAAI,CAACP,IAAI,CAACO,WAAW,GACvB,CACA4O,SAAY,EAAA,CACV,OAAO,IAAI,CAACzyC,MAAM,CAEpB0yC,QAAAA,EAAW,CACT,OAAO,IAAI,CAACC,KAAK,CAEnBC,gBAAiB,CACf,OAAO,IAAI,CAACC,WAAW,CAEzBvI,IAAO,EAAA,CACL,OAAO,IAAI,CAACrB,OACd,CACAqC,MAAS,EAAA,CACP,IAAI,CAAChI,IAAI,CAACgI,MAAM,CAAC,IAAI,EACvB,CACAwH,OAAQ5+B,CAAAA,IAAI,CAAE,CACZ,GAAIA,IAAKvM,CAAAA,UAAU,GAAK,IAAI,CAACorC,QAAQ,CAAE,CACrC,OAAO,KACT,CACA,IAAI,CAAC9J,OAAO,CAAG/0B,IACf,CAAA,IAAI,CAACo3B,MAAM,EAAA,CACX,OAAO,IACT,CAzDArpC,WAAY6hC,CAAAA,cAAc,CAAE9jC,MAAM,CAAE6yC,WAAW,CAAElnC,OAAO,CAAC,CACvD,IAAI,CAACgnC,KAAK,CAAGziB,aACb,CAAA,IAAI,CAACyiB,KAAK,CAAGhnC,OAAAA,EAASgnC,KAASziB,EAAAA,aAC/B,CAAA,IAAI,CAACiU,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC9jC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC6yC,WAAW,CAAGA,WACnB,CAAA,IAAI,CAAC3O,EAAE,CAAGkO,IACV,EAAA,CAAA,IAAI,CAAC9O,IAAI,CAAGQ,eAAekP,sBAAsB,CAAC,IAAI,CAAEhzC,OAAQ2L,OAChE,CAAA,CAAA,IAAI,CAAConC,QAAQ,CAAG/yC,MAAAA,CAAOizC,gBAAgB,CAAGjzC,OAAOizC,gBAAgB,CAAGjzC,MAAOZ,CAAAA,IAAI,CAAGyzC,WAClF,CAAA,IAAI,CAAC7M,sBAAsB,CAAClC,cAAemC,CAAAA,KAAK,CAAE,IAAI,CAAC8M,QAAQ,CAAA,CAC/D,MAAMG,WAAAA,CAAcvnC,OAASuI,EAAAA,IAAAA,CAC7B,GAAIg/B,WAAAA,CAAa,CACf,IAAI,CAACJ,OAAO,CAACI,aACf,CAAO,KAAA,CACL,IAAI,CAACjK,OAAO,CAAG,IAAI2B,WAAY,CAAA,IAAI,CAACmI,QAAQ,EAC9C,CACA,IAAI,CAAC5O,MAAM,CAACmO,OAAO,CAACt3C,IAAI,CAAC,IAAI,EAC/B,CAyCF,CAEA,SAASm4C,QAAAA,CAASC,GAAG,CAAA,CACnB,GAAIA,GAAAA,GAAQ,IAAQA,EAAAA,GAAAA,GAAQpxC,UAAW,CACrC,OAAO,CACT,CACA,IAAIqxC,IAAO,CAAA,CAAA,CACX,IAAI,IAAIn5C,EAAI,CAAGkY,CAAAA,GAAAA,CAAMghC,GAAIj5C,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC5Cm5C,KAAO,CAACA,IAAQ,EAAA,CAAA,EAAKA,IAAOD,CAAAA,GAAAA,CAAI9zC,UAAU,CAACpF,GAC3Cm5C,IAAQ,EAAA,EACV,CACA,OAAOA,IACT,CACA,SAASC,WAAAA,CAAY/J,KAAK,CACxB,CAAA,MAAMgK,KAAQ,CAAA,QAAA,CACd,IAAIF,IAAO,CAAA,UAAA,CACX,IAAI,IAAIn5C,EAAI,CAAGA,CAAAA,CAAAA,CAAIqvC,KAAMpvC,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACnCm5C,IAAQ9J,EAAAA,KAAK,CAACrvC,CAAE,CAAA,CAChBm5C,IAAQE,EAAAA,MACV,CACA,OAAOF,IAAAA,GAAS,CAClB,CAEA,MAAMG,WAAc,CAAA,IAAI/C,SACxB,CAAA,MAAMgD,uBAA0B,CAAA,CAC9B,CACA,CAAA,CAAA,CACA,EACA,EACA,CAAA,EAAA,CACD,CACD,MAAMC,cAAgB,IAAIhP,WAC1B,CAAMiP,MAAAA,YAAAA,CAuDJ,IAAIC,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SACd,CACA,OAAOC,2BAA2BhQ,cAAc,CAAE,CAChD,OAAO4P,cAAcz3C,GAAG,CAAC6nC,cAAgB,CAAA,IAAA,CACvC,OAAO,IAAI6P,YAAAA,CAAa7P,cAAgB,CAAA,CACtC,CACEiQ,QAAAA,CAAUra,eACVsa,CAAAA,UAAAA,CAAY,EACZriC,IAAMgrB,CAAAA,YACR,CACA,CAAA,CACEoX,SAAUpa,eACVqa,CAAAA,UAAAA,CAAY,CACZriC,CAAAA,IAAAA,CAAMgrB,YACR,CACA,CAAA,CACEoX,QAAUla,CAAAA,eAAAA,CACVma,WAAY,CACZriC,CAAAA,IAAAA,CAAMgrB,YACR,CAAA,CACA,CACEoX,QAAUja,CAAAA,eAAAA,CACVka,UAAY,CAAA,CAAA,CACZriC,KAAMgrB,YACR,CAAA,CACD,CACH,CAAA,CACF,CACA,OAAOsX,cAAAA,CAAenQ,cAAc,CAAEoQ,WAAW,CAAE,CACjD,MAAMC,YAAcD,WAAYF,CAAAA,UAAU,CAAGnS,uBAAuB,CAACqS,WAAYviC,CAAAA,IAAI,CAAC,CACtF,GAAImyB,cAAegF,CAAAA,QAAQ,EAAI,CAAC2K,wBAAwB31C,QAAQ,CAACq2C,WAAc,CAAA,CAAA,CAC7E,OAAO,KACT,CACA,OAAO,IACT,CACA7G,MAAS,EAAA,CACP,IAAI,CAAC8G,aAAa,GACpB,CACAA,aAAgB,EAAA,CACd,MAAMC,mBAAAA,CAAsB,EAAE,CAC9B,MAAMC,oBAAuB,CAAA,EAAE,CAC/B,MAAMliC,IAAM,IAAI,CAACyhC,SAAS,CAAC15C,MAAM,CACjC,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC1B,KAAM,CAAEsD,IAAI,CAAE+2C,QAAQ,CAAEC,aAAa,CAAEl6C,SAAS,CAAEsN,MAAM,CAAE6sC,MAAM,CAAEr1C,IAAI,CAAEs1C,KAAK,CAAE,CAAG,IAAI,CAACb,SAAS,CAAC35C,CAAAA,CAAE,CACnG,MAAMy6C,kBAAAA,CAAqBn3C,IAAO+2C,CAAAA,QAAAA,CAAWC,cAAgBl6C,SAAYo6C,CAAAA,KAAAA,CACzEL,mBAAoBr5C,CAAAA,IAAI,CAAC25C,kBACzB,CAAA,CAAA,MAAMC,mBAAsBD,CAAAA,kBAAAA,CAAqB/sC,OAAS6sC,MAASr1C,CAAAA,IAAAA,CACnEk1C,oBAAqBt5C,CAAAA,IAAI,CAAC45C,mBAC5B,EAAA,CACAP,mBAAoBjqC,CAAAA,IAAI,GACxB,MAAMyqC,cAAAA,CAAiBR,mBAAoBt6C,CAAAA,IAAI,EAC/C,CAAA,IAAI,CAAC+6C,YAAY,CAAG3B,QAAAA,CAAS0B,cAC7B,CAAA,CAAA,IAAI,CAACE,0BAA0B,CAAGF,cAClC,CAAA,IAAI,CAACG,mBAAmB,CAAGV,qBAAqBv6C,IAAI,CAAC,GACrD,CAAA,CAAA,IAAI,CAACk7C,aAAa,CAAGzB,WAAAA,CAAYv3C,GAAG,CAAC,IAAI,CAAC+4C,mBAAmB,EAC/D,CA9GA/yC,WAAAA,CAAY6hC,cAAc,CAAEoR,WAAW,CAAEC,WAAW,CAAC,CACnD,IAAI,CAAChR,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC+P,SAAS,CAAG,EACjB,CAAA,IAAI,CAACuB,MAAM,CAAG,KACd,CAAA,IAAI,CAACC,MAAM,CAAG,KACd,CAAA,IAAI,CAACC,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,WAAW,CAAG,KACnB,CAAA,IAAI,CAACtC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACkC,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACK,WAAW,CAAGL,cAAgBnzC,SACnC,CAAA,IAAI,CAACyzC,UAAU,CAAG,KAClB,CAAA,IAAI,CAACr2C,IAAI,CAAG81C,WAAYQ,CAAAA,MAAM,CAAC,CAACC,KAAAA,CAAOC,IACrC,GAAA,CAAA,OAAOD,KAAQl8C,CAAAA,IAAAA,CAAK0V,IAAI,CAACymC,KAAK5B,UAAU,CAAGnS,uBAAuB,CAAC+T,KAAKjkC,IAAI,CAAC,CAAG,CAAA,CAAA,CAAK,CACvF,CAAG,CAAA,CAAA,CAAA,CACH,IAAI/J,MAAAA,CAAS,EAAGusC,WAChB,CAAA,IAAI,IAAIj6C,CAAAA,CAAI,EAAGkY,GAAM8iC,CAAAA,WAAAA,CAAY/6C,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACpD,MAAMg6C,YAAcgB,WAAW,CAACh7C,CAAE,CAAA,CAClCi6C,WAAcD,CAAAA,WAAAA,CAAYF,UAAU,CAAGnS,uBAAuB,CAACqS,WAAAA,CAAYviC,IAAI,CAAC,CAChF,GAAIwjC,WAAAA,CAAa,CACfvtC,MAAAA,CAAS2F,KAAK0B,OAAO,CAACrH,MAAQusC,CAAAA,WAAAA,EAChC,CACA,MAAMO,KAAAA,CAAQR,WAAYQ,CAAAA,KAAK,EAAI,KACnC,CAAA,MAAMp6C,SAAYo6C,CAAAA,KAAAA,CAAQ,MAAQR,WAAY55C,CAAAA,SAAS,EAAI,KAAA,CAC3D,MAAMu7C,OAAU,CAAA,CACdr4C,IAAM02C,CAAAA,WAAAA,CAAYH,QAAQ,CAC1BnsC,MAAQutC,CAAAA,WAAAA,CAAcvtC,OAASssC,WAAY3tC,CAAAA,cAAc,CAAC,QAAA,CAAA,CAAY2tC,YAAYtsC,MAAM,CAAGA,MAC3F6sC,CAAAA,MAAAA,CAAQU,YAAchB,WAAcD,CAAAA,WAAAA,CAAY3tC,cAAc,CAAC,UAAY2tC,WAAYO,CAAAA,MAAM,CAAG,IAAI,CAACr1C,IAAI,CACzGm1C,QAAUL,CAAAA,WAAAA,CAAYviC,IAAI,CAC1B6iC,aAAAA,CAAeN,WAAYF,CAAAA,UAAU,CACrC15C,SAAWA,CAAAA,SAAAA,CACX8E,IAAM+0C,CAAAA,WAAAA,CACNO,KAAOA,CAAAA,KACT,CACA,CAAA,IAAI,CAACb,SAAS,CAAC74C,IAAI,CAAC66C,SACpB,GAAIV,WAAAA,CAAa,CACfvtC,MAAAA,EAAUusC,YAAcgB,YAC1B,CAAA,KAAO,CACLvtC,MAAAA,EAAUnO,KAAK0V,IAAI,CAACglC,WAAc,CAAA,CAAA,CAAA,CAAK,EACzC,CACA,GAAID,WAAYH,CAAAA,QAAQ,GAAKxb,kBAAoB,CAAA,CAC/C,IAAI,CAAC6c,MAAM,CAAG,KAChB,CAAO,KAAA,GAAIlB,WAAYH,CAAAA,QAAQ,GAAKvb,kBAAAA,CAAoB,CACtD,IAAI,CAAC6c,MAAM,CAAG,KAChB,CAAO,KAAA,GAAInB,WAAYH,CAAAA,QAAQ,GAAK1b,cAAgB,CAAA,CAClD,IAAI,CAACid,QAAQ,CAAG,KAClB,CAAO,KAAA,GAAIpB,YAAYH,QAAQ,GAAK7b,gBAAkB,CAAA,CACpD,IAAI,CAACqd,WAAW,CAAG,KACrB,CACF,CACA,GAAIJ,WAAa,CAAA,CACf,IAAI,CAAClC,gBAAgB,CAAGrrC,OAC1B,CACA,IAAI,CAACwsC,aAAa,GACpB,CA0DF,CAEA,MAAM0B,WAAAA,CAAc,IAAIrF,SACxB,CAAA,MAAMsF,iBACJ,CAAA,IAAIpxC,KAAK9C,KAAK,CAAE,CACd,IAAI,CAACm0C,KAAK,CAAGn0C,KACb,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAItxC,IAAAA,EAAO,CACT,OAAO,IAAI,CAACqxC,KACd,CACA,IAAIE,GAAAA,CAAIr0C,KAAK,CAAE,CACb,IAAI,CAACs0C,IAAI,CAAGt0C,KACZ,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAIC,GAAAA,EAAM,CACR,OAAO,IAAI,CAACC,IAAI,CAElB,IAAIC,IAAKv0C,CAAAA,KAAK,CAAE,CACd,IAAI,CAACw0C,KAAK,CAAGx0C,KACb,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAIG,IAAO,EAAA,CACT,OAAO,IAAI,CAACC,KACd,CACA,IAAIC,MAAMz0C,KAAK,CAAE,CACf,IAAI,CAAC00C,MAAM,CAAG10C,KACd,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAIK,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAIC,KAAAA,CAAM30C,KAAK,CAAE,CACf,IAAI,CAAC40C,MAAM,CAAG50C,KACd,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAIO,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MAAM,CAEpB,IAAIC,QAAS70C,CAAAA,KAAK,CAAE,CAClB,IAAI,CAAC80C,SAAS,CAAG90C,KACjB,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAIS,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SACd,CACA,IAAIC,UAAU/0C,KAAK,CAAE,CACnB,IAAI,CAACg1C,UAAU,CAAGh1C,KAClB,CAAA,IAAI,CAACo0C,MAAM,CAAG,KAChB,CACA,IAAIW,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CAYAC,QAAW,EAAA,CACT,KAAM,CAAEd,KAAK,CAAEG,IAAI,CAAEE,KAAK,CAAEE,MAAM,CAAEE,MAAM,CAAEE,SAAS,CAAEE,UAAU,CAAE,CAAG,IAAI,CAC1E,MAAM90C,GAAM,CAAA,CAAC,EAAEi0C,KAAM,CAAA,CAAC,EAAEG,IAAAA,CAAK,CAAC,EAAEE,KAAAA,CAAM,CAAC,EAAEE,MAAO,CAAA,CAAC,EAAEE,MAAAA,CAAO,CAAC,EAAEE,SAAAA,CAAU,CAAC,EAAEE,WAAW,CACrF,CAAA,IAAI,CAACE,IAAI,CAAGjB,WAAY75C,CAAAA,GAAG,CAAC8F,GAC5B,CAAA,CAAA,IAAI,CAACk0C,MAAM,CAAG,MAChB,CACA,IAAIl0C,KAAM,CACR,GAAI,IAAI,CAACk0C,MAAM,CAAE,CACf,IAAI,CAACa,QAAQ,GACf,CACA,OAAO,IAAI,CAACC,IAAI,CAElB99C,KAAKyW,GAAG,CAAE,CACR,IAAI,CAACsmC,KAAK,CAAGtmC,GAAIsmC,CAAAA,KAAK,CACtB,IAAI,CAACG,IAAI,CAAGzmC,GAAIymC,CAAAA,IAAI,CACpB,IAAI,CAACQ,SAAS,CAAGjnC,GAAAA,CAAIinC,SAAS,CAC9B,IAAI,CAACE,UAAU,CAAGnnC,GAAAA,CAAImnC,UACtB,CAAA,IAAI,CAACR,KAAK,CAAG3mC,IAAI2mC,KACjB,CAAA,IAAI,CAACE,MAAM,CAAG7mC,GAAI6mC,CAAAA,MAAM,CACxB,IAAI,CAACE,MAAM,CAAG/mC,GAAI+mC,CAAAA,MAAM,CACxB,IAAI,CAACR,MAAM,CAAGvmC,GAAAA,CAAIumC,MAAM,CACxB,IAAI,CAACc,IAAI,CAAGrnC,GAAIqnC,CAAAA,IAAI,CACpB,OAAO,IAAI,CAEbvnC,OAAQ,CACN,MAAMA,KAAQ,CAAA,IAAI,IAAI,CAACvN,WAAW,CAClC,OAAOuN,MAAMvW,IAAI,CAAC,IAAI,CACxB,CAtCAgJ,WAAY0J,CAAAA,OAAAA,CAAU,EAAE,CAAC,CACvB,IAAI,CAACsqC,MAAM,CAAG,IACd,CAAA,IAAI,CAACD,KAAK,CAAGrqC,OAAQhH,CAAAA,IAAI,EAAIqtB,WAC7B,CAAA,IAAI,CAACmkB,IAAI,CAAGxqC,OAAAA,CAAQuqC,GAAG,EAAI,CAC3B,CAAA,IAAI,CAACS,SAAS,CAAGhrC,OAAQ+qC,CAAAA,QAAQ,EAAI,GACrC,CAAA,IAAI,CAACG,UAAU,CAAGlrC,QAAQirC,SAAS,EAAI,GACvC,CAAA,IAAI,CAACP,KAAK,CAAG1qC,OAAAA,CAAQyqC,IAAI,EAAIpc,cAC7B,CAAA,IAAI,CAACuc,MAAM,CAAG5qC,OAAAA,CAAQ2qC,KAAK,EAAItc,cAC/B,CAAA,IAAI,CAACyc,MAAM,CAAG9qC,OAAQ6qC,CAAAA,KAAK,EAAIxc,cAC/B,CAAA,IAAI,CAAC8c,QAAQ,GACf,CAgCF,CAFI,iBA1FEf,CA0FG3E,OAAO,CAAGr1C,MAAAA,CAAO4U,MAAM,CAAC,IAAIolC,iBAIrC,CAAA,CAAA,MAAMiB,cAAuB70C,SAAAA,YAAAA,CA4D3B80C,QAAW,EAAA,CACT,MAAMC,YAAAA,CAAe,IAAIvD,YAAa,CAAA,IAAI,CAAE,CAC1C,CACEI,QAAU/b,CAAAA,iBAAAA,CACVgc,UAAY,CAAA,CAAA,CACZriC,KAAMgrB,YACR,CAAA,CACD,CACD,CAAA,MAAMwa,UAAY,IAAIpjC,YAAAA,CAAa,CACjC,CAAC,EACD,CAAC,CAAA,CACD,CACA,CAAA,CAAC,EACD,CAAC,CAAA,CACD,CACA,CAAA,CAAA,CACA,EACD,CACD,CAAA,IAAI,CAACqjC,gBAAgB,CAAG,IAAI/E,YAAAA,CAAa,IAAI,CAAE6E,YAAAA,CAAc,CAAG,CAAA,CAC9DhjC,KAAMijC,SACR,CAAA,EACF,CACAE,eAAAA,EAAkB,CAChB,KAAM,CAAEC,WAAW,CAAE,CAAG,IAAI,CAC5BA,WAAYx0C,CAAAA,KAAK,GACjB,GAAI,IAAI,CAACy0C,sBAAsB,CAAED,WAAY70C,CAAAA,GAAG,CAAC,+BAAA,CAAiC,IAClF,GAAI,IAAI,CAAC+0C,sBAAsB,CAAEF,WAAAA,CAAY70C,GAAG,CAAC,gCAAiC,EAClF,CAAA,CAAA,GAAI,IAAI,CAACg1C,iBAAiB,CAAEH,WAAAA,CAAY70C,GAAG,CAAC,kBAAmB,EACjE,EAAA,CACA4gC,OAAU,EAAA,CACR,IAAI,CAACjgC,IAAI,CAAC,SAAA,CACV,CAAA,IAAI,CAACg0C,gBAAgB,EAAE/T,SACvB,CAAA,IAAI,CAAC+T,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACM,cAAc,EAAErU,OACrB,EAAA,CAAA,IAAI,CAACqU,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,WAAW,EAAEtU,SAClB,CAAA,IAAI,CAACsU,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,UAAU,CAAG,KACpB,CACAC,eAAAA,CAAgBC,MAAM,CAAE,CACtB,IAAI,CAAC10C,IAAI,CAAC,gBAAA,CAAkB00C,MAC5B,CAAA,CAAA,MAAMtzC,GAAM,CAAA,IAAI,CAACuzC,OAAO,CAAC50C,OAAO,CAAC20C,MACjC,CAAA,CAAA,GAAItzC,MAAQ,CAAC,CAAA,CAAG,CACd,IAAI,CAACuzC,OAAO,CAAC/0C,MAAM,CAACwB,IAAK,CAC3B,EAAA,CACF,CACAwzC,WAAAA,EAAc,CACZ,IAAI,CAACv2C,KAAK,CAAG,IACb,CAAA,IAAI,CAACw2C,MAAM,CAAG,KAChB,CACApU,WAAc,EAAA,CACZ,IAAI,CAACqU,WAAW,CAAG,KACnB,IAAI,CAACC,cAAc,CAAC11C,GAAG,CAAC,CAAC,CAAG,CAAA,CAAC,GAC7B,IAAK,MAAMupC,OAAW,IAAA,IAAI,CAAClG,QAAQ,CAAC,CAClCkG,OAAAA,CAAQnI,WAAW,GACrB,CACA,IAAK,MAAMjvB,UAAU,IAAI,CAAC09B,OAAO,CAAC,CAChC19B,MAAOivB,CAAAA,WAAW,GACpB,CACA,IAAK,MAAM/qC,MAAU,IAAA,IAAI,CAACs/C,OAAO,CAAC,CAChCt/C,MAAAA,CAAO+qC,WAAW,GACpB,CACA,IAAI,CAAC8T,WAAW,EAAE9T,WAAAA,GACpB,CACAwU,cAAAA,EAAiB,CACf,IAAI,CAACH,WAAW,CAAG,MACnB,IAAI,CAACI,qBAAqB,EAAA,CAC1B,IAAI,CAACC,uBAAuB,EAC5B,CAAA,IAAK,MAAM3jC,MAAU,IAAA,IAAI,CAAC09B,OAAO,CAAC,CAChC19B,MAAO02B,CAAAA,MAAM,GACf,CACA,IAAI,CAACqM,WAAW,EAAEU,cACpB,KAAA,CACAv2C,MAAOC,CAAAA,GAAG,CAAE,CACV,OAAOC,SACT,CACAu2C,yBAA0B,CACxB,IAAI,CAACC,aAAa,CAAG,EACrB,CAAA,IAAI,CAACV,MAAM,CAAG,IACd,CAAA,IAAI,CAACW,WAAW,CAAGz2C,SACnB,CAAA,IAAI,CAAC02C,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACC,YAAY,CAAG,KACtB,CACAL,qBAAAA,EAAwB,CACtB,IAAI,CAACM,UAAU,CAAG,IAAI3J,UACtB,CAAA,IAAI,CAAC4J,UAAU,CAAG,IAAI/H,UACtB,CAAA,IAAI,CAACgI,QAAQ,CAAG9nB,aAChB,CAAA,IAAI,CAAC+nB,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,CACxC,CAAA,IAAI,CAACp4B,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,IAAI,CAACo4B,EAAE,CAAG,IAAI,CAACC,EAAE,CAAG,CACxC,CAAA,IAAI,CAACC,UAAU,CAAG,IAAI9pC,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CACvC,EAAA,CACA+pC,gBAAgBC,YAAY,CAAEC,WAAW,CAAE,EAC3CC,aAAAA,CAAcb,UAAU,CAAE,EAC1Bc,aAAAA,CAAclgD,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAED,CAAC,CAAE,EAC1B6vC,aAAcd,CAAAA,UAAU,CAAE,EAC1Be,WAAYd,CAAAA,QAAQ,CAAE,EACtBe,eAAgBlB,CAAAA,YAAY,CAAE,CAC5B,IAAI,CAACA,YAAY,CAAGA,aACtB,CACAmB,eAAAA,CAAgBC,YAAY,CAAE,CAC5B,GAAIA,YAAAA,CAAc,CAChB,IAAI,CAACvB,aAAa,CAACx9C,IAAI,CAAC++C,YAAAA,EAC1B,CACF,CACAC,mBAAoB,CAClB,IAAI,CAACxB,aAAa,CAACr+C,MAAM,CAAG,EAC9B,CACA8/C,oBAAoBC,KAAQ,CAAA,CAAC,CAAE,CAC7B,OAAO,CACT,CACA,IAAIC,oBAAqB,CACvB,OAAO,IACT,CACAC,iBAAkB,CAChB,OAAO,IAAI,CAACzB,YAAY,CAE1B0B,gBAAiBvhD,CAAAA,MAAM,CAAE,CACvB,GAAIA,MAAOy5C,CAAAA,WAAW,CAAE,OACxBz5C,MAAAA,CAAOwhD,IAAI,EAAA,CACX,IAAI,CAAClC,OAAO,CAAC5tC,GAAG,CAAC1R,MACnB,EAAA,CACAyhD,IAAKC,CAAAA,SAAS,CAAEC,WAAW,CAAEC,YAAY,CAAEC,YAAY,CAAEt7C,KAAQ,CAAA,IAAI,CAAEu7C,IAAO,CAAA,IAAI,CAAE,EACpF5P,mBAAoBgB,CAAAA,OAAO,CAAE,CAC3B,OAAO,IAAI,CAAC6O,wBAAwB,CAAC7O,UAAY,IAAI,CAAC8O,uBAAuB,CAAC9O,UAAY,IAAI,CAAC+O,sBAAsB,CAAC/O,QACxH,CACA6O,wBAAAA,CAAyB7O,OAAO,CAAE,CAChC,OAAO,OAAOgP,WAAAA,GAAgB,aAAehP,OAAmBgP,YAAAA,WAAAA,EAAe,OAAOC,gBAAAA,GAAqB,aAAejP,OAAmBiP,YAAAA,gBAC/I,CACAH,uBAAAA,CAAwB9O,OAAO,CAAE,CAC/B,OAAO,OAAOkP,oBAAsB,WAAelP,EAAAA,OAAAA,YAAmBkP,iBACxE,CACAH,uBAAuB/O,OAAO,CAAE,CAC9B,OAAO,OAAOf,gBAAqB,GAAA,WAAA,EAAee,OAAmBf,YAAAA,gBACvE,CACAkQ,YAAat7B,CAAAA,KAAK,CAAEC,MAAM,CAAE,CAC1B,MAAMs7B,UAAAA,CAAa3hD,KAAKmU,GAAG,CAAC,IAAI,CAACytC,cAAc,CAAE99C,QAAAA,CAASI,OAAO,CAAGzB,OAAOo/C,gBAAgB,CAAG,CAC9F,CAAA,CAAA,MAAM7hC,EAAIhgB,IAAKmQ,CAAAA,KAAK,CAACiW,KAAAA,CAAQu7B,YAC7B,MAAMztB,CAAAA,CAAIl0B,IAAKmQ,CAAAA,KAAK,CAACkW,MAASs7B,CAAAA,UAAAA,CAAAA,CAC9B,GAAI3hC,CAAAA,GAAM,IAAI,CAACw+B,MAAM,CAACp4B,KAAK,EAAI8N,CAAAA,GAAM,IAAI,CAACsqB,MAAM,CAACn4B,MAAM,CAAE,CACvD,IAAI,CAACy7B,aAAa,CAAC9hC,CAAAA,CAAGkU,GACxB,CACF,CACA4tB,aAAc17B,CAAAA,KAAK,CAAEC,MAAM,CAAE,CAC3B,IAAI,CAACm4B,MAAM,CAACp4B,KAAK,CAAGA,KACpB,CAAA,IAAI,CAACo4B,MAAM,CAACn4B,MAAM,CAAGA,MACrB,CAAA,IAAI,CAAC1c,IAAI,CAAC4zC,cAAAA,CAAewE,YAAY,CAAE37B,KAAAA,CAAOC,MAChD,EAAA,CACAwtB,QAAS,CACP,IAAI,CAACmO,gBAAgB,GACvB,CACAA,gBAAAA,EAAmB,CACjB,GAAIl+C,SAASK,MAAM,CAAE,CACnB,IAAI,CAAC89C,UAAU,CAAC77B,KAAK,CAAG,IAAI,CAACo4B,MAAM,CAACp4B,KAAK,CACzC,IAAI,CAAC67B,UAAU,CAAC57B,MAAM,CAAG,IAAI,CAACm4B,MAAM,CAACn4B,OACvC,MAAO,CACL,MAAM67B,IAAO,CAAA,IAAI,CAAC1D,MAAM,CAAC2D,qBAAqB,EAC9C,CAAA,IAAI,CAACF,UAAU,CAAC77B,KAAK,CAAG87B,IAAAA,CAAK97B,KAC7B,CAAA,IAAI,CAAC67B,UAAU,CAAC57B,MAAM,CAAG67B,IAAAA,CAAK77B,OAChC,CACF,CACA,IAAID,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACo4B,MAAM,CAACp4B,KACrB,CACA,IAAIC,QAAS,CACX,OAAO,IAAI,CAACm4B,MAAM,CAACn4B,MAAM,CAE3B,IAAI+7B,UAAWA,CAAAA,UAAU,CAAE,EAC3B,IAAIA,UAAAA,EAAa,CACf,OAAO,KACT,CACA,IAAIC,aAAcC,CAAAA,KAAK,CAAE,CACvB,IAAI,CAACV,cAAc,CAAGU,MACxB,CACA,IAAID,eAAgB,CAClB,OAAO,IAAI,CAACT,cAAc,CAE5B,IAAIW,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzBC,eAAAA,CAAgBC,UAAU,CAAE,EAC5BC,aAAAA,CAAcD,UAAU,CAAE,EAC1BE,gBAAAA,CAAiB7+C,IAAI,CAAE,EACvB8+C,cAAiB,EAAA,EACjBC,UAAa,EAAA,CACX,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACpV,aAAa,GACpB,CACAqV,QAAAA,EAAW,CACT,IAAI,CAACC,WAAW,CAAC71C,OAAO,CAAE9F,GAAMA,EAAAA,GAAAA,CAAI+B,KAAK,EACzC,CAAA,CAAA,IAAI,CAAC45C,WAAW,CAAC55C,KAAK,GACxB,CACA65C,eAAAA,CAAgBC,QAAQ,CAAEp/C,IAAO,CAAA,SAAS,CAAE,EAC5Cq/C,sBAAuB9Y,CAAAA,OAAAA,CAAU,CAC/BxQ,mBACAN,CAAAA,mBAAAA,CACAE,mBACD,CAAA,CAAE2pB,WAAa,IAAI,CAAEC,OAAU,CAAA,CAAC,CAAE,CACjC,IAAI,IAAI7iD,CAAAA,CAAI,EAAGA,CAAI6pC,CAAAA,OAAAA,CAAQ5pC,MAAM,CAAED,IAAI,CACrC,MAAM8F,MAAS+jC,CAAAA,OAAO,CAAC7pC,CAAE,CAAA,CACzB,OAAO8F,MAAAA,EACL,KAAKuzB,mBAAAA,CACH,CACE,GAAI,IAAI,CAACypB,wBAAwB,CAAE,CACjC,OAAOh9C,MACT,CACA,KACF,CACF,KAAKizB,mBACH,CAAA,GAAI,IAAI,CAACgqB,0BAA0B,CAAE,CACnC,OAAOj9C,MACT,CACA,MACF,KAAKmzB,mBACH,CAAA,GAAI,IAAI,CAAC2V,QAAQ,EAAIiU,OAAAA,CAAU,EAAG,CAChC,QACF,CACA,GAAI,IAAI,CAACvF,sBAAsB,GAAK,CAACsF,UAAAA,EAAc,IAAI,CAACvF,sBAAsB,CAAD,CAAI,CAC/E,OAAOv3C,MACT,CACA,KACJ,CACF,CACA,OAAOgC,SACT,CACAk7C,kBAAmBpF,CAAAA,MAAM,CAAEqF,SAAS,CAAEC,SAAS,CAAE,EAxRjDn7C,WAAAA,CAAYg2C,MAAM,CAAEtsC,OAAO,CAAC,CAAA,IAsB1B,iBACA,CAAA,kBAAA,CACA,kBACA,CAAA,kBAAA,CACA,kBACA,CAAA,kBA1BA,CAAA,KAAK,EAAA,CAAI,IAAI,CAAC0xC,UAAU,CAAG,IAAA,CAAM,IAAI,CAAClF,cAAc,CAAG,IAAIp8B,IAAQ,CAAA,IAAI,CAACuhC,mBAAmB,CAAG,KAAO,CAAA,IAAI,CAACxU,QAAQ,CAAG,KAAO,CAAA,IAAI,CAACyU,QAAQ,CAAG,KAAO,CAAA,IAAI,CAACC,KAAK,CAAG,KAAO,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAAA,CAAM,IAAI,CAACC,mBAAmB,CAAG,CAAA,CAAG,IAAI,CAACC,UAAU,CAAG,CAAA,CAAG,IAAI,CAAClG,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAACmG,eAAe,CAAG,KAAA,CAAO,IAAI,CAACC,0BAA0B,CAAG,KAAA,CAAO,IAAI,CAAClF,YAAY,CAAG,IAAA,CAAM,IAAI,CAACZ,OAAO,CAAG,EAAE,CAAE,IAAI,CAACjS,QAAQ,CAAG,EAAE,CAAE,IAAI,CAACsS,OAAO,CAAG,IAAInrC,GAAO,CAAA,IAAI,CAACm6B,aAAa,CAAG,CAAG,CAAA,IAAI,CAAC0W,gBAAgB,CAAG,KAAO,CAAA,IAAI,CAACC,sBAAsB,CAAG,KAAO,CAAA,IAAI,CAACC,qBAAqB,CAAG,KAAO,CAAA,IAAI,CAAChB,wBAAwB,CAAG,KAAO,CAAA,IAAI,CAACzF,sBAAsB,CAAG,KAAO,CAAA,IAAI,CAACqB,UAAU,CAAG,IAAI3J,UAAAA,CAAc,IAAI,CAAC4J,UAAU,CAAG,IAAI/H,WAAc,IAAI,CAACmN,cAAc,CAAG,MAAO,IAAI,CAAC1E,YAAY,CAAG,IAAIxD,iBAAqB,CAAA,IAAI,CAACyD,WAAW,CAAG,IAAIzD,iBAAAA,CAAqB,IAAI,CAAC6B,UAAU,CAAG,KAAA,CAAO,IAAI,CAACsG,mBAAmB,CAAG,CACz3BC,KAAAA,CAAO,CACL,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACDjZ,KAAO,CAAA,CAAA,CACPkZ,OAAS,CAAA,CAAA,CACTC,MAAO/tB,eAAkBC,CAAAA,eAC3B,CAAG,CAAA,IAAI,CAACmrB,UAAU,CAAG,CACnB77B,KAAAA,CAAO,EACPC,MAAQ,CAAA,CACV,CAAG,CAAA,IAAI,CAAC6pB,aAAa,CAAG,KAAO,CAAA,IAAI,CAAC2N,WAAW,CAAG,IAAIh1C,GAAAA,CAAO,IAAI,CAACo6C,WAAW,CAAG,IAAIzvC,GACpF,CAAA,IAAI,CAACgrC,MAAM,CAAGA,MAAAA,CACd,GAAI,cAAA,GAAkBA,OAAQ,CAC5BA,MAAAA,CAAO/yC,YAAY,CAAC,cAAe,CAAC,WAAW,EAAEvM,OAAAA,CAAQ,CAAC,EAC5D,CACA,IAAI,CAAC2lD,WAAW,CAAG,CACjB,GAAG3yC,OAAO,CAEZ,CAAA,CAAA,iBAAA,CAAA,IAAI,CAAC2yC,WAAW,EAAClwC,KAAAA,GAAjB,kBAAiBA,KAAU,CAAA,IAAA,CAC3B,CAAA,CAAA,kBAAA,CAAA,IAAI,CAACkwC,WAAW,EAACpZ,KAAAA,GAAjB,mBAAiBA,KAAU,CAAA,IAAA,CAC3B,CAAA,CAAA,kBAAA,CAAA,IAAI,CAACoZ,WAAW,EAACF,OAAAA,GAAjB,mBAAiBA,OAAY,CAAA,IAAA,CAC7B,CAAA,CAAA,kBAAA,CAAA,IAAI,CAACE,WAAW,EAACC,SAAAA,GAAjB,mBAAiBA,SAAc,CAAA,IAAA,CAC/B,CAAA,CAAA,kBAAA,CAAA,IAAI,CAACD,WAAW,EAACE,kBAAjB,kBAAiBA,CAAAA,eAAAA,CAAoB,kBACrC,CAAA,CAAA,CAAA,mBAAA,IAAI,CAACF,WAAW,EAACG,gBAAjB,kBAAiBA,CAAAA,aAAAA,CAAkB/d,iBACnC,CAAA,CAAA,IAAI,CAAC2a,cAAc,CAAG99C,QAAAA,CAASI,OAAO,CAAGlE,IAAAA,CAAKmU,GAAG,CAAC,EAAG1R,MAAOo/C,CAAAA,gBAAgB,CAAI,CAAA,CAChF,CAAA,IAAI,CAAChJ,OAAO,CAAG,EACf,CAAA,IAAI,CAACrM,KAAK,CAAG,CACXe,GAAAA,CAAK,EACLwL,EAAI,CAAA,CAAA,CACJkM,EAAI,CAAA,CAAA,CACJC,GAAI,CACJC,CAAAA,EAAAA,CAAI,CACN,CACA,CAAA,IAAI,CAACC,YAAY,CAAG,CAClBC,UAAY,CAAA,CAAA,CACZC,UAAY,CAAA,CAAA,CACZC,OAAQ,CACRC,CAAAA,eAAAA,CAAiB,CACjBC,CAAAA,WAAAA,CAAa,CACf,CACA,CAAA,IAAI,CAAC3G,uBAAuB,EAC5B,CAAA,IAAI,CAAC4G,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACC,uBAAuB,CAAG,CAC/B,CAAA,IAAI,CAACC,cAAc,CAAG,EAAE,CACxB,IAAI,IAAInlD,CAAIu9B,CAAAA,gBAAAA,CAAkBv9B,GAAK69B,gBAAkB79B,CAAAA,CAAAA,EAAAA,CAAI,CACvD,IAAI,CAACmlD,cAAc,CAACnlD,CAAE,CAAA,CAAG,EAC3B,CACA,IAAI,CAAColD,yBAAyB,CAAG,CACjC,CAAA,IAAI,CAAC79C,KAAK,CAAG,IAAIuwC,UAAAA,CAAW,SAC5B,CAAA,IAAI,CAACuN,WAAW,CAAG,IAAI,CAAC99C,KAAK,CAAC8iC,OAAO,CAAC,aAAA,CAAA,CACtC,IAAI,CAACgb,WAAW,CAAC1N,QAAQ,CAAC,CAAA,EAC5B,CAkOF,CA7RMmF,cAEGwE,CAAAA,YAAY,CAAG,cA6RxB,CAAA,IAAIgE,IAAO,CAAA,CACX,CAAMC,MAAAA,YAAAA,CAiEJpc,OAAU,EAAA,CACR,MAAMc,MAAS,CAAA,IAAI,CAACub,OAAO,CAC3B,GAAIvb,MAAAA,CAAQ,CACVA,MAAAA,CAAOiU,OAAO,CAACr1C,MAAM,CAAC,IAAI,EAC1B,GAAIohC,MAAAA,CAAOwU,YAAY,GAAK,IAAI,CAAE,CAChCxU,MAAO0V,CAAAA,eAAe,CAAC,IACzB,EAAA,CACA,IAAI,CAAC8F,mBAAmB,GAC1B,CACF,CACAA,mBAAAA,EAAsB,CACpB,MAAMxb,MAAS,CAAA,IAAI,CAACub,OAAO,CAC3B,GAAIvb,MAAAA,CAAQ,CACV,IAAI,CAACb,IAAI,CAACD,OAAO,CAACc,MAAAA,EACpB,CACF,CACAyb,uBAAwB,CACtB,IAAI,CAACC,YAAY,EAAExc,OACnB,EAAA,CAAA,IAAI,CAACwc,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,aAAa,EAAEj5C,OAAQ,CAACk5C,WAC3BA,EAAAA,CAAAA,WAAAA,CAAY1c,OAAO,GACrB,EACA,CAAA,IAAI,CAACyc,aAAa,CAAG,IACrB,CAAA,IAAI,CAACE,YAAY,CAAG,KACtB,CACAtZ,MAAAA,CAAO7mB,KAAK,CAAEC,MAAM,CAAE,CACpB,GAAI,IAAI,CAACD,KAAK,GAAKA,OAAS,IAAI,CAACC,MAAM,GAAKA,OAAQ,CAClD,GAAI,IAAI,CAACklB,QAAQ,CAAG,CAAG,CAAA,CACrB,MACF,CACA,MAAMb,MAAS,CAAA,IAAI,CAACub,OAAO,CAC3B,IAAI,CAACC,mBAAmB,EACxB,CAAA,GAAIxb,MAAOwU,CAAAA,YAAY,GAAK,IAAI,CAAE,CAChCxU,MAAAA,CAAO0V,eAAe,CAAC,IAAA,EACzB,CACA,IAAI,CAACgG,YAAY,EAAEnZ,MAAO7mB,CAAAA,KAAAA,CAAOC,OACjC,CAAA,IAAI,CAACggC,aAAa,EAAEj5C,OAAAA,CAAQ,WAACk5C,EAAAA,CAC3BA,YAAYrZ,MAAM,CAAC7mB,KAAOC,CAAAA,MAAAA,EAC5B,GACA,IAAI,CAACmgC,WAAW,EAChB,CAAA,IAAI,CAAC3c,IAAI,CAAGa,OAAO+b,sBAAsB,CAAC,IAAI,EAChD,CACF,CACAD,WAAAA,EAAc,EACd3F,MAAO,CACL,IAAI,CAAChX,IAAI,CAACgX,IAAI,CAAC,IAAI,CAACoF,OAAO,CAAE,IAAI,EACnC,CACA,IAAInN,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACjP,IAAI,CAACiP,WAAW,CAE9B,IAAIpO,MAAS,EAAA,CACX,OAAO,IAAI,CAACub,OACd,CACA7b,WAAc,EAAA,CACZ,IAAI,CAACP,IAAI,CAACO,WAAW,GACvB,CACAU,QAAQ4Z,KAAQ,CAAA,IAAI,CAAEjZ,KAAAA,CAAQ,CAAC,CAAC,IAAI,CAAC2a,YAAY,CAAE,CACjD,GAAI,IAAI,CAACH,OAAO,EAAI,IAAI,CAACS,QAAQ,CAAG,CAAA,CAAG,CACrC,IAAI,CAAC7c,IAAI,CAACiB,OAAO,CAAC,IAAI,CAACmb,OAAO,CAAE,IAAI,CAAEvB,KAAOjZ,CAAAA,KAAAA,EAC/C,CACF,CACAjsC,KAAK6xC,MAAM,CAAEqT,KAAK,CAAEjZ,KAAK,CAAE,CACzB,GAAI,CAAC,IAAI,CAACwa,OAAO,CAAE,CACjB,GAAI5U,MAAAA,CAAO4U,OAAO,CAAE,CAClB,IAAI,CAACA,OAAO,CAAG5U,OAAO4U,QACxB,CAAO,KAAA,CACL,OAAO,KACT,CACF,CACA,MAAMU,QAAU,IAAI,CAACV,OAAO,CAACW,gBAAgB,CAACvV,MAAAA,CAAQ,IAAI,CAAEqT,KAAOjZ,CAAAA,KAAAA,CAAAA,CACnE,OAAOkb,OACT,CACA,IAAIrD,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACoD,QAAQ,CAEtB,IAAIjb,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC2B,MACd,CACA,IAAIuX,SAAU,CACZ,OAAO,IAAI,CAACkC,QAAQ,CAEtB,IAAIP,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1BO,cAAexgD,CAAAA,KAAK,CAAE,CACpB,OAAO,IAAI,CAAC+/C,aAAa,GAAG//C,KAAM,CACpC,CACA,IAAIygD,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACX,YAAY,CAE1B,IAAIrV,IAAO,EAAA,CACT,OAAO,IAAI,CAACiW,KACd,CACA,IAAIzb,UAAW,CACb,OAAO,IAAI,CAAC0b,SACd,CACA,IAAIhb,SAAU,CACZ,OAAO,IAAI,CAAC+B,QAAQ,CAEtB,IAAI5nB,KAAAA,EAAQ,CACV,IAAIA,KAAAA,CAAQ,IAAI,CAACmgC,YAAY,EAAEngC,KAAAA,EAAS,IAAI,CAACggC,YAAY,EAAEhgC,KAAAA,EAAS,IAAI,CAAC6/B,OAAO,CAAC7/B,KAAK,CACtF,GAAI,IAAI,CAAC6gC,SAAS,CAAG,CAAA,CAAG,CACtB7gC,KAAAA,CAAQglB,YAAaC,CAAAA,kBAAkB,CAACjlB,KAAO,CAAA,IAAI,CAAC6gC,SAAS,EAC/D,CACA,OAAO7gC,KACT,CACA,IAAIC,MAAS,EAAA,CACX,IAAIA,MAAAA,CAAS,IAAI,CAACkgC,YAAY,EAAElgC,MAAAA,EAAU,IAAI,CAAC+/B,YAAY,EAAE//B,MAAAA,EAAU,IAAI,CAAC4/B,OAAO,CAAC5/B,MAAM,CAC1F,GAAI,IAAI,CAAC4gC,SAAS,CAAG,CAAA,CAAG,CACtB5gC,MAAAA,CAAS+kB,aAAaC,kBAAkB,CAAChlB,MAAQ,CAAA,IAAI,CAAC4gC,SAAS,EACjE,CACA,OAAO5gC,MACT,CACA6gC,iBAAAA,CAAkB5gD,KAAQ,CAAA,CAAC,CAAE,CAC3B,GAAI,IAAI,CAACokC,MAAM,CAACkZ,UAAU,GAAK,IAAI,CAAE,CACnC,OAAOvmB,iBAAkB,CAAA,IAAI,CAACqN,MAAM,CAACyc,gBAAgB,CACvD,CACA,MAAMb,WAAc,CAAA,IAAI,CAACQ,cAAc,CAACxgD,KACxC,CAAA,CAAA,OAAOggD,YAAcjpB,iBAAkBipB,CAAAA,WAAAA,CAAY//C,MAAM,CAAA,CAAI,KAC/D,CAvLAiC,WAAAA,CAAY0J,OAAU,CAAA,EAAE,CAAC,CACvB,IAAI,CAACu4B,EAAE,CAAGsb,IAAAA,EAAAA,CACV,MAAMrb,MAAAA,CAASx4B,QAAQo0C,WAAW,EAAE5b,MAAUx4B,EAAAA,OAAAA,CAAQk1C,YAAY,GAAG,CAAE,CAAA,CAAC1c,MAAUx4B,EAAAA,OAAAA,CAAQ60C,WAAW,EAAErc,QAAUx4B,OAAQm4B,CAAAA,cAAc,CACvI,IAAI,CAAC4b,OAAO,CAAGvb,MAAAA,CACf,KAAM,CAAEwZ,UAAU,CAAE,CAAG,IAAI,CAAC+B,OAAO,CACnC,IAAI,CAACS,QAAQ,CAAG1mD,IAAAA,CAAKmU,GAAG,CAACjC,OAAAA,CAAQoxC,OAAO,EAAI,EAAGY,UAC/C,CAAA,CAAA,GAAIxZ,MAAO2E,CAAAA,QAAQ,CAAE,CACnB,IAAI,CAACqX,QAAQ,CAAG,IAAI,CAACA,QAAQ,CAAG,CAAIxC,CAAAA,UAAAA,CAAa,EACnD,CACA,IAAI,CAACqC,YAAY,CAAGr0C,OAAAA,CAAQo0C,WAAW,CACvC,GAAIp0C,OAAQo0C,CAAAA,WAAW,CAAE,CACvB,IAAI,CAACD,aAAa,CAAG,CACnBn0C,OAAAA,CAAQo0C,WAAW,EACpB,CAEH,IAAI,CAACF,YAAY,CAAGl0C,OAAAA,CAAQ60C,WAC5B,CAAA,IAAI,CAACC,KAAK,CAAG90C,QAAQ6+B,IAAI,EAAI,CAC7B,CAAA,GAAI,IAAI,CAACqV,YAAY,CAAE,CACrB,MAAM7/C,MAAS,CAAA,IAAI,CAAC6/C,YAAY,CAAC/X,OAAO,CACxC,GAAI9nC,MAAAA,GAAWqzB,mBAAqBrzB,MAAWs2B,GAAAA,mBAAAA,CAAqB,CAClE,IAAI,CAACuQ,MAAM,CAAG,IACd,CAAA,IAAI,CAACyZ,QAAQ,CAAG,MAClB,CAAO,KAAA,GAAItgD,MAAWszB,GAAAA,wBAAAA,CAA0B,CAC9C,IAAI,CAACuT,MAAM,CAAG,IACd,CAAA,IAAI,CAACyZ,QAAQ,CAAG,KAClB,CAAA,KAAO,GAAItgD,MAAAA,GAAWozB,kBAAoB,IAAI,CAACysB,YAAY,CAAC1b,MAAM,CAAC2E,QAAQ,EAAI,IAAI,CAACqX,QAAQ,CAAG,CAAG,CAAA,CAChG,IAAI,CAACtZ,MAAM,CAAG,IACd,CAAA,IAAI,CAACyZ,QAAQ,CAAG,MAClB,CAAA,KAAO,CACL,IAAI,CAACzZ,MAAM,CAAG,KACd,CAAA,IAAI,CAACyZ,QAAQ,CAAG,MAClB,CACF,CAAO,KAAA,CACL,IAAI,CAACzZ,MAAM,CAAGl7B,OAAAA,CAAQu5B,KAAK,EAAI,IAC/B,CAAA,IAAI,CAACob,QAAQ,CAAG30C,OAAAA,CAAQyyC,OAAO,EAAI,MACrC,CACA,GAAIzyC,OAAQk1C,CAAAA,YAAY,CAAE,CACxB,GAAI,CAAC,IAAI,CAACf,aAAa,CAAE,CACvB,IAAI,CAACA,aAAa,CAAG,CAChBn0C,GAAAA,OAAAA,CAAQk1C,YAAY,CAEzB,CAAA,IAAI,CAACb,YAAY,CAAGr0C,OAAQk1C,CAAAA,YAAY,CAAC,CAAE,EAC7C,CACF,CACA,IAAI,CAACC,WAAW,CAAGn1C,QAAQm1C,WAAW,EAAI,IAC1C,CAAA,IAAI,CAACtjD,IAAI,CAAGmO,OAAAA,CAAQnO,IAAI,CACxB,GAAI,CAAC,IAAI,CAACA,IAAI,CAAE,CACd,IAAI,CAACA,IAAI,CAAG,IAAI,CAACwiD,YAAY,EAAExiD,KACjC,CACA,GAAI,CAAC,IAAI,CAACA,IAAI,CAAE,CACd,IAAI,CAACA,IAAI,CAAG,IAAI,CAACqiD,YAAY,EAAEriD,KACjC,CACA,GAAI,CAAC,IAAI,CAACA,IAAI,CAAE,CACd,IAAI,CAACA,IAAI,CAAG,WACd,CACA,IAAI,CAACssC,KAAK,CAAGn+B,OAAAA,CAAQm+B,KAAK,EAAI,KAC9B,CAAA,IAAI,CAAC4W,SAAS,CAAG/0C,OAAQq5B,CAAAA,QAAQ,EAAI,CAAA,CACrC,GAAI,IAAI,CAAC0b,SAAS,CAAG,CAAK,EAAA,IAAI,CAAC7Z,MAAM,CAAE,CACrC,IAAI,CAAC6Z,SAAS,CAAG,EACnB,CACA,IAAI,CAACjZ,QAAQ,CAAG97B,OAAAA,CAAQq5B,QAAQ,GAAKhjC,SAAAA,CACrC,IAAI,CAACi+C,WAAW,EAChB,CAAA,IAAI,CAAC3c,IAAI,CAAGa,MAAAA,CAAO+b,sBAAsB,CAAC,IAAI,EAChD,CAyHF,CAEA,MAAMa,eACJzT,CAAAA,MAAAA,CAAO0T,SAAS,CAAE,CAChB,IAAI,CAAC3d,OAAO,EAAA,CACZ,MAAMc,MAAS6c,CAAAA,SAAAA,CAAU7c,MAAM,CAC/B,MAAMyR,IAAO,CAAA,IAAI,CAACqL,gBAAgB,CAAC9c,MAAQ6c,CAAAA,SAAAA,CAC3C,CAAA,IAAI,CAACA,SAAS,CAAG7c,MAAO+c,CAAAA,IAAI,CAACC,eAAe,CAACvL,IAC/C,EAAA,CACAvS,SAAU,CACR,IAAI,CAAC2d,SAAS,CAAG,KACnB,CACAC,gBAAiB9c,CAAAA,MAAM,CAAE6c,SAAS,CAAE,CAClC,MAAMI,QAAU,EAAE,CAClB,MAAMphD,MAAAA,CAASghD,UAAUhhD,MAAM,CAC/B,MAAMgkC,oBAAAA,CAAuBgd,UAAUhhD,MAAM,CAACgkC,oBAAoB,CAClEgd,UAAUpU,cAAc,CAAC/lC,OAAO,CAAC,CAAC83C,EAAIzkD,CAAAA,CAAAA,GAAAA,CACpC,MAAMqoC,IAAAA,CAAOyB,oBAAoB,CAAC9pC,CAAE,CAAA,CAACqoC,IAAI,CACzC,MAAM3tB,MAAS+pC,CAAAA,EAAAA,CAAG0C,UAAU,CAAG1C,EAAAA,CAAGrb,IAAI,CAAC1uB,MAAM,CAAG+pC,EAAAA,CAAG2C,UAAU,CAACC,SAAS,CAAC3sC,MAAM,CAC9EwsC,OAAAA,CAAQpmD,IAAI,CAAC,CACXwmD,OAASjf,CAAAA,IAAAA,CACTkf,SAAU,CACR7sC,MAAAA,CAAQA,MACRhN,CAAAA,MAAAA,CAAQ,EACRxI,IAAMu/C,CAAAA,EAAAA,CAAG3+C,MAAM,CAAC0hD,QAClB,CACF,CAAA,EACF,GACA,MAAMje,cAAAA,CAAiBud,SAAUhhD,CAAAA,MAAM,CAACyjC,cAAc,CACtDud,SAAUlb,CAAAA,QAAQ,CAACj/B,OAAO,CAAC,CAACmgC,GAAAA,CAAK2a,gBAC/B,MAAMC,WAAAA,CAAc5a,GAAI1D,CAAAA,IAAI,CAC5B,MAAMiK,aAAAA,CAAgBvtC,MAAOyjC,CAAAA,cAAc,CAACke,YAAa,CAAA,CACzD,MAAMpf,IAAAA,CAAOkB,cAAc,CAACke,YAAAA,CAAa,CAACpf,IAAI,CAC9C,MAAMv5B,IAAO44C,CAAAA,WAAAA,CAAYC,OAAO,CAAC1d,MAAAA,CAAAA,CACjCid,OAAQpmD,CAAAA,IAAI,CAAC,CACXwmD,OAAAA,CAASjf,IACTkf,CAAAA,QAAAA,CAAUz4C,IACZ,CACA,CAAA,CAAA,GAAIukC,aAAcxK,CAAAA,UAAU,CAAE,CAC5B,MAAM+e,OAAUF,CAAAA,WAAAA,CAAYG,UAAU,CAAC5d,MAAAA,CAAQoJ,aAAczK,CAAAA,UAAU,EACvEse,OAAQpmD,CAAAA,IAAI,CAAC,CACXwmD,QAASjf,IAAO,CAAA,CAAA,CAChBkf,QAAUK,CAAAA,OACZ,CACF,EAAA,CACF,CACA,CAAA,CAAA,MAAMle,sBAAwBod,SAAUhhD,CAAAA,MAAM,CAAC4jC,qBAAqB,CACpEod,SAAU5T,CAAAA,eAAe,CAACvmC,OAAO,CAAC,CAACmgC,GAAAA,CAAK2a,YACtC,GAAA,CAAA,MAAMC,YAAc5a,GAAI1D,CAAAA,IAAI,CAC5B,MAAMf,KAAOqB,qBAAqB,CAAC+d,YAAa,CAAA,CAACpf,IAAI,CACrD,MAAMv5B,IAAO44C,CAAAA,WAAAA,CAAYC,OAAO,CAAC1d,MAAAA,CAAAA,CACjCid,OAAQpmD,CAAAA,IAAI,CAAC,CACXwmD,OAASjf,CAAAA,IAAAA,CACTkf,SAAUz4C,IACZ,CAAA,EACF,CACA,CAAA,CAAA,MAAMi7B,qBAAuB+c,SAAUhhD,CAAAA,MAAM,CAACikC,oBAAoB,CAClE+c,SAAUhU,CAAAA,cAAc,CAACnmC,OAAO,CAAC,CAAC+N,MAAAA,CAAQotC,WACxC,GAAA,CAAA,MAAMC,WAAartC,MAAO0uB,CAAAA,IAAI,CAAC1uB,MAAM,CACrC,MAAM2tB,IAAAA,CAAO0B,oBAAoB,CAAC+d,YAAY,CAACzf,IAAI,CACnD6e,OAAAA,CAAQpmD,IAAI,CAAC,CACXwmD,OAAAA,CAASjf,KACTkf,QAAU,CAAA,CACR7sC,MAAQqtC,CAAAA,UACV,CACF,CACF,EAAA,CAAA,CAAA,CACA,MAAMrM,IAAAA,CAAO,CACXsM,MAAQlB,CAAAA,SAAAA,CAAUhhD,MAAM,CAACsjC,IAAI,CAAC6e,eAAe,CAC7Cf,OAAAA,CAASA,OACX,CACA,CAAA,OAAOxL,IACT,CACF,CAEA,MAAMwM,WAAAA,CACJ,OAAOC,WAAAA,CAAYC,KAAK,CAAE,CACxB,IAAIC,GAAAA,CAAM,CACV,CAAA,GAAID,KAAQ/hB,CAAAA,kBAAAA,CAAoBgiB,KAAOC,cAAeC,CAAAA,MAAM,CAC5D,GAAIH,MAAQ9hB,oBAAsB+hB,CAAAA,GAAAA,EAAOC,cAAeE,CAAAA,QAAQ,CAChE,GAAIJ,KAAAA,CAAQ7hB,mBAAqB8hB,CAAAA,GAAAA,EAAOC,eAAeG,OAAO,CAC9D,OAAOJ,GACT,CACF,CAEA,MAAMK,iBAAoB,CAAA,EAAE,CAC5BA,iBAAiB,CAACvwB,cAAAA,CAAe,CAAG,EACpCuwB,CAAAA,iBAAiB,CAACtwB,cAAe,CAAA,CAAG,EACpCswB,CAAAA,iBAAiB,CAACrwB,eAAAA,CAAgB,CAAG,EACrCqwB,CAAAA,iBAAiB,CAACntB,cAAe,CAAA,CAAG,SACpCmtB,CAAAA,iBAAiB,CAACltB,eAAAA,CAAgB,CAAG,UACrCktB,CAAAA,iBAAiB,CAACpwB,mBAAmB,CAAG,EACxCowB,CAAAA,iBAAiB,CAACnwB,oBAAqB,CAAA,CAAG,EAC1CmwB,CAAAA,iBAAiB,CAAClwB,iBAAAA,CAAkB,CAAG,EACvCkwB,CAAAA,iBAAiB,CAACjwB,gBAAAA,CAAiB,CAAG,YACtCiwB,CAAAA,iBAAiB,CAAChwB,kBAAkB,CAAG,YACvCgwB,CAAAA,iBAAiB,CAAC/vB,gBAAiB,CAAA,CAAG,gBACtC+vB,CAAAA,iBAAiB,CAAC9vB,gBAAAA,CAAiB,CAAG,gBACtC8vB,CAAAA,iBAAiB,CAAC7vB,gBAAiB,CAAA,CAAG,gBACtC6vB,CAAAA,iBAAiB,CAAC5vB,kBAAAA,CAAmB,CAAG,EACxC4vB,CAAAA,iBAAiB,CAAC3vB,mBAAoB,CAAA,CAAG,aACzC2vB,CAAAA,iBAAiB,CAACrtB,gBAAAA,CAAiB,CAAG,UACtCqtB,CAAAA,iBAAiB,CAACptB,iBAAkB,CAAA,CAAG,WACvCotB,CAAAA,iBAAiB,CAAC1vB,kBAAAA,CAAmB,CAAG,EACxC0vB,CAAAA,iBAAiB,CAACzvB,oBAAoB,CAAG,aACzCyvB,CAAAA,iBAAiB,CAACxvB,gBAAiB,CAAA,CAAG,UACtCwvB,CAAAA,iBAAiB,CAACvvB,iBAAAA,CAAkB,CAAG,cACvCuvB,CAAAA,iBAAiB,CAACtsB,mBAAAA,CAAoB,CAAG,cACzCssB,CAAAA,iBAAiB,CAACtvB,yBAAyB,CAAG,sBAC9CsvB,CAAAA,iBAAiB,CAACrvB,mBAAoB,CAAA,CAAG,eACzCqvB,CAAAA,iBAAiB,CAACpvB,iBAAAA,CAAkB,CAAG,EACvCovB,CAAAA,iBAAiB,CAACnvB,kBAAmB,CAAA,CAAG,iBACxCmvB,CAAAA,iBAAiB,CAAClvB,gBAAAA,CAAiB,CAAG,EACtCkvB,CAAAA,iBAAiB,CAACjvB,oBAAqB,CAAA,CAAG,gBAC1CivB,CAAAA,iBAAiB,CAAChvB,qBAAAA,CAAsB,CAAG,iBAC3CgvB,CAAAA,iBAAiB,CAAC/uB,4BAA6B,CAAA,CAAG,EAClD+uB,CAAAA,iBAAiB,CAAC9uB,6BAAAA,CAA8B,CAAG,EACnD8uB,CAAAA,iBAAiB,CAAC7uB,6BAA6B,CAAG,EAClD6uB,CAAAA,iBAAiB,CAAC5uB,6BAA8B,CAAA,CAAG,EACnD4uB,CAAAA,iBAAiB,CAAC3uB,oBAAAA,CAAqB,CAAG,gBAC1C2uB,CAAAA,iBAAiB,CAAC1uB,mBAAAA,CAAoB,CAAG,EACzC0uB,CAAAA,iBAAiB,CAACzuB,qBAAqB,CAAG,EAC1CyuB,CAAAA,iBAAiB,CAACxuB,iBAAkB,CAAA,CAAG,YACvCwuB,CAAAA,iBAAiB,CAAC3sB,kBAAAA,CAAmB,CAAG,iBACxC2sB,CAAAA,iBAAiB,CAACvuB,eAAgB,CAAA,CAAG,QACrCuuB,CAAAA,iBAAiB,CAACtuB,eAAAA,CAAgB,CAAG,QACrCsuB,CAAAA,iBAAiB,CAACruB,gBAAiB,CAAA,CAAG,SACtCquB,CAAAA,iBAAiB,CAACpuB,gBAAAA,CAAiB,CAAG,SACtCouB,CAAAA,iBAAiB,CAACnuB,gBAAiB,CAAA,CAAG,SACtCmuB,CAAAA,iBAAiB,CAACluB,gBAAAA,CAAiB,CAAG,SACtCkuB,CAAAA,iBAAiB,CAACjuB,iBAAiB,CAAG,SACtCiuB,CAAAA,iBAAiB,CAAChuB,gBAAiB,CAAA,CAAG,SACtCguB,CAAAA,iBAAiB,CAAC/tB,iBAAAA,CAAkB,CAAG,UACvC+tB,CAAAA,iBAAiB,CAAC9tB,iBAAAA,CAAkB,CAAG,UACvC8tB,CAAAA,iBAAiB,CAAC7tB,kBAAkB,CAAG,UACvC6tB,CAAAA,iBAAiB,CAAC5tB,iBAAkB,CAAA,CAAG,UACvC4tB,CAAAA,iBAAiB,CAAC3tB,kBAAAA,CAAmB,CAAG,WACxC2tB,CAAAA,iBAAiB,CAAC1tB,kBAAmB,CAAA,CAAG,WACxC0tB,CAAAA,iBAAiB,CAACztB,mBAAAA,CAAoB,CAAG,YACzCytB,CAAAA,iBAAiB,CAACxtB,mBAAoB,CAAA,CAAG,YACzCwtB,CAAAA,iBAAiB,CAACvtB,mBAAAA,CAAoB,CAAG,YACzCutB,CAAAA,iBAAiB,CAACttB,mBAAoB,CAAA,CAAG,YACzCstB,CAAAA,iBAAiB,CAAC1sB,gBAAAA,CAAiB,CAAG,gBACtC0sB,CAAAA,iBAAiB,CAACzsB,kBAAkB,CAAG,iBACvCysB,CAAAA,iBAAiB,CAACxsB,eAAgB,CAAA,CAAG,gBACrCwsB,CAAAA,iBAAiB,CAACjtB,qBAAAA,CAAsB,CAAG,qBAC3CitB,CAAAA,iBAAiB,CAAChtB,sBAAAA,CAAuB,CAAG,qBAC5CgtB,CAAAA,iBAAiB,CAAC/sB,uBAAuB,CAAG,qBAC5C+sB,CAAAA,iBAAiB,CAAC9sB,qBAAsB,CAAA,CAAG,qBAC3C8sB,CAAAA,iBAAiB,CAAC7sB,sBAAAA,CAAuB,CAAG,sBAC5C6sB,CAAAA,iBAAiB,CAACvsB,qBAAsB,CAAA,CAAG,qBAC3CusB,CAAAA,iBAAiB,CAAC5sB,yBAAAA,CAA0B,CAAG,qBAE/C,CAAA,MAAM6sB,YAAe,CAAA,EAAE,CACvBA,YAAY,CAACnnB,iBAAiB,CAAG,WACjCmnB,CAAAA,YAAY,CAAClnB,6BAA8B,CAAA,CAAG,eAC9CknB,CAAAA,YAAY,CAACjnB,gBAAAA,CAAiB,CAAG,YACjCinB,CAAAA,YAAY,CAAChnB,cAAe,CAAA,CAAG,YAC/BgnB,CAAAA,YAAY,CAAC/mB,eAAAA,CAAgB,CAAG,YAChC,CAAA,MAAMgnB,WAAc,CAAA,EAAE,CACtBA,WAAW,CAACpnB,gBAAAA,CAAiB,CAAG,OAChConB,CAAAA,WAAW,CAACnnB,6BAA8B,CAAA,CAAG,oBAC7CmnB,CAAAA,WAAW,CAAClnB,gBAAAA,CAAiB,CAAG,OAChCknB,CAAAA,WAAW,CAACjnB,cAAe,CAAA,CAAG,MAC9BinB,CAAAA,WAAW,CAAChnB,eAAAA,CAAgB,CAAG,MAC/B,CAAA,MAAMinB,WAAc,CAAA,IAAItS,SACxB,CAAMuS,MAAAA,qBAAAA,CAOJ3f,OAAU,EAAA,CACR,IAAI,CAAC8e,eAAe,CAAG,KACzB,CACAte,WAAAA,EAAc,EACdod,iBAAiBgC,eAAe,CAAE,CAChC,MAAM7B,QAAU,EAAE,CAClB,IAAIr/C,GAAAA,CAAM,GACVkhD,eAAgBjf,CAAAA,oBAAoB,CAACn9B,OAAO,CAAC,YAACq8C,EAAAA,CAC5C,MAAM5gB,UAAAA,CAAa8f,YAAYC,WAAW,CAACa,YAAa5gB,CAAAA,UAAU,EAClEvgC,GAAO,EAAA,CAAC,CAAC,EAAEmhD,aAAa3gB,IAAI,CAAC,EAAE,EAAED,UAAW,CAAA,CAAC,CAC7C8e,OAAAA,CAAQpmD,IAAI,CAAC,CACXwmD,OAAS0B,CAAAA,YAAAA,CAAa3gB,IAAI,CAC1BD,UAAAA,CAAYA,UACZ1tB,CAAAA,MAAAA,CAAQ,CACNjD,IAAM,CAAA,SAAA,CACNwxC,gBAAkB,CAAA,IACpB,CACF,CACF,EAAA,CAAA,CAAA,CACAF,eAAgBxf,CAAAA,cAAc,CAAC58B,OAAO,CAAC,aAAC0mC,EAAAA,CACtC,MAAMjL,UAAa8f,CAAAA,WAAAA,CAAYC,WAAW,CAAC9U,cAAcjL,UAAU,CAAA,CACnE,MAAMQ,UAAAA,CAAayK,aAAczK,CAAAA,UAAU,CAC3C,MAAMsgB,cAAgB7V,aAAc1K,CAAAA,gBAAgB,CACpD,MAAMwgB,aAAe,KACrB,CAAA,MAAMC,aAAgBR,CAAAA,WAAW,CAAChgB,UAAW,CAAA,CAC7C/gC,GAAO,EAAA,CAAC,CAAC,EAAEwrC,aAAAA,CAAchL,IAAI,CAAC,EAAE,EAAED,UAAAA,CAAW,CAAC,EAAEghB,cAAc,CAAC,EAAEF,aAAc,CAAA,CAAC,EAAEC,YAAa,CAAA,CAAC,CAChGjC,OAAAA,CAAQpmD,IAAI,CAAC,CACXwmD,OAAAA,CAASjU,cAAchL,IAAI,CAC3BD,UAAYA,CAAAA,UAAAA,CACZ0J,QAAS,CACPlJ,UAAAA,CAAYwgB,aACZF,CAAAA,aAAAA,CAAeA,cACfC,YAAcA,CAAAA,YAChB,CACF,CAAA,CAAA,CACA,GAAI9V,aAAcxK,CAAAA,UAAU,CAAE,CAC5B,MAAMwgB,cAAiBV,CAAAA,YAAY,CAAC/f,UAAAA,CAAW,CAC/C/gC,GAAO,EAAA,CAAC,CAAC,EAAEwrC,cAAchL,IAAI,CAAG,CAAE,CAAA,EAAE,EAAED,UAAAA,CAAW,CAAC,EAAEihB,eAAe,CAAC,CACpEnC,OAAQpmD,CAAAA,IAAI,CAAC,CACXwmD,OAAAA,CAASjU,aAAchL,CAAAA,IAAI,CAAG,CAC9BD,CAAAA,UAAAA,CAAYA,UACZwf,CAAAA,OAAAA,CAAS,CACPnwC,IAAM4xC,CAAAA,cACR,CACF,CAAA,EACF,CACF,CACAN,CAAAA,CAAAA,eAAAA,CAAgBrf,qBAAqB,CAAC/8B,OAAO,CAAE0mC,aAC7C,EAAA,CAAA,KAAM,CAAEvtC,MAAM,CAAE6iC,gBAAgB,CAAE,CAAG0K,aAAAA,CACrC,KAAM,CAAEpK,IAAI,CAAED,KAAK,CAAE,CAAGqK,cACxBxrC,GAAO,EAAA,CAAC,CAAC,EAAEwrC,cAAchL,IAAI,CAAC,GAAG,EAAEviC,OAAO,CAAC,EAAE6iC,gBAAiB,CAAA,CAAC,EAAEM,IAAO,CAAA,IAAA,CAAO,IAAK,CAAA,CAAC,EAAED,KAAQ,CAAA,IAAA,CAAO,IAAK,CAAA,CAAC,CAC5Gke,OAAQpmD,CAAAA,IAAI,CAAC,CACXwmD,OAASjU,CAAAA,aAAAA,CAAchL,IAAI,CAC3BD,WAAYkgB,cAAeG,CAAAA,OAAO,CAClCa,cAAAA,CAAgB,CACdC,MAAQtgB,CAAAA,IAAAA,CAAOD,KAAQ,CAAA,YAAA,CAAe,YAAc,YACpDljC,CAAAA,MAAAA,CAAQ4iD,iBAAiB,CAAC5iD,OAAO,CACjCojD,aAAAA,CAAevgB,gBACjB,CACF,GACF,CACAogB,CAAAA,CAAAA,eAAAA,CAAgBhf,oBAAoB,CAACp9B,OAAO,CAAEq8C,YAC5C,EAAA,CAAA,MAAMvgB,SAAWugB,YAAavgB,CAAAA,QAAQ,CACtC,MAAML,UAAa8f,CAAAA,WAAAA,CAAYC,WAAW,CAACa,aAAa5gB,UAAU,CAAA,CAClEvgC,GAAO,EAAA,CAAC,CAAC,EAAEmhD,YAAAA,CAAa3gB,IAAI,CAAC,GAAG,EAAED,UAAAA,CAAW,CAAC,EAAEK,SAAW,IAAO,CAAA,IAAA,CAAK,CAAC,CACxEye,QAAQpmD,IAAI,CAAC,CACXwmD,OAAAA,CAAS0B,aAAa3gB,IAAI,CAC1BD,UAAYA,CAAAA,UAAAA,CACZ1tB,OAAQ,CACNjD,IAAAA,CAAMgxB,QAAW,CAAA,mBAAA,CAAsB,SACzC,CACF,CACF,EAAA,CAAA,CAAA,CACA,MAAMiT,IAAO,CAAA,CACXwL,OAASA,CAAAA,OACX,EACA,OAAO,CACLr/C,GACA6zC,CAAAA,IACF,CACF,CAtFA3zC,WAAAA,CAAYghD,eAAe,CAAC,CAC1B,MAAM9e,MAAAA,CAAS8e,eAAgB9e,CAAAA,MAAM,CACrC,KAAM,CAAEpiC,GAAG,CAAE6zC,IAAI,CAAE,CAAG,IAAI,CAACqL,gBAAgB,CAACgC,eAAAA,CAC5C,CAAA,IAAI,CAAClhD,GAAG,CAAGghD,WAAAA,CAAY9mD,GAAG,CAAC8F,GAAAA,CAC3B,CAAA,IAAI,CAACogD,eAAe,CAAGhe,MAAO+c,CAAAA,IAAI,CAACwC,qBAAqB,CAAC9N,IAC3D,EAAA,CAkFF,CAEA,MAAM+N,YAAAA,CAMJtgB,OAAQc,CAAAA,MAAM,CAAE,CACd,GAAI,IAAI,CAACvvB,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACyuB,OAAO,EACnB,CAAA,IAAI,CAACzuB,MAAM,CAAG,KAChB,CACF,CACA,IAAI29B,WAAAA,EAAc,CAChB,OAAO,CAAC,CAAC,IAAI,CAAC39B,MAChB,CACAivB,WAAAA,EAAc,EACd+f,QAAAA,CAASzf,MAAM,CAAE/kC,IAAI,CAAE,CACrB,IAAI,CAACwV,MAAM,CAAGuvB,MAAAA,CAAO+c,IAAI,CAAC2C,YAAY,CAAC,CACrCzkD,IACAuzC,CAAAA,KAAAA,CAAO,IAAI,CAACmR,UACd,GACF,CACAxY,MAAAA,CAAOnH,MAAM,CAAE8E,OAAO,CAAE,CACtB,MAAMiY,IAAAA,CAAO/c,OAAO+c,IAAI,CACxB,GAAI,CAAC,IAAI,CAACtsC,MAAM,CAAE,CAChB,MAAMxV,IAAO6pC,CAAAA,OAAAA,CAAQthC,UAAU,CAAG,EAAI,CAAC,CACvC,CAAA,IAAI,CAACm8C,UAAU,EAAIC,cAAeC,CAAAA,QAAQ,CAC1C,IAAI,CAACJ,QAAQ,CAACzf,OAAQ/kC,IACxB,EAAA,CACA,MAAM6kD,SAAAA,CAAYhb,QAAQib,UAAU,EAAI,CACxC,CAAA,MAAMC,QAAU,IAAIl9C,UAAAA,CAAWgiC,OAAQr0B,CAAAA,MAAM,EAAIq0B,OAASgb,CAAAA,SAAAA,CAAWhb,OAAQthC,CAAAA,UAAU,EACvF,MAAMuM,IAAAA,CAAO,IAAIjN,UAAAA,CAAW,IAAI,CAAC2N,MAAM,CAACxV,IAAI,EAC5C8U,IAAKzR,CAAAA,GAAG,CAAC0hD,OAAAA,CAAAA,CACTjD,IAAKkD,CAAAA,KAAK,CAACC,WAAW,CAAC,IAAI,CAACzvC,MAAM,CAAE,EAAGV,IAAM,CAAA,CAAA,CAAGA,IAAK/Z,CAAAA,MAAM,EAC7D,CACAgpC,IAAAA,CAAKgB,MAAM,CAAEv8B,MAAM,CAAExI,IAAI,CAAE8U,IAAI,CAAEowC,SAAS,CAAE,CAC1C,OAAOngB,OAAOogB,iBAAiB,CAAC,IAAI,CAAE38C,OAAQxI,IAAM8U,CAAAA,IAAAA,CAAMowC,SAC5D,CAAA,CACAphB,KAAMiB,CAAAA,MAAM,CAAEqgB,YAAY,CAAEtwC,IAAI,CAAEuwC,UAAU,CAAErlD,IAAI,CAAE,CAClD+kC,MAAOugB,CAAAA,kBAAkB,CAAC,IAAI,CAAEF,YAActwC,CAAAA,IAAAA,CAAMuwC,WAAYrlD,IAClE,EAAA,CACA0D,KAAMqhC,CAAAA,MAAM,CAAEv8B,MAAM,CAAExI,IAAI,CAAE,CAC1B+kC,MAAOwgB,CAAAA,kBAAkB,CAAC,IAAI,CAAE/8C,MAAQxI,CAAAA,IAAAA,EAC1C,CA1CA6C,WAAAA,CAAY6hD,UAAa,CAAA,CAAC,CAAC,CACzB,IAAI,CAAClvC,MAAM,CAAG,IACd,CAAA,IAAI,CAACkvC,UAAU,CAAG,CAClB,CAAA,IAAI,CAACA,UAAU,CAAGA,WACpB,CAuCF,CAEA,MAAMc,0BAA0BjB,YAK9BrY,CAAAA,MAAAA,CAAOmP,WAAW,CAAE,CAClB,MAAMtW,MAAAA,CAASsW,WAAYtW,CAAAA,MAAM,CACjC,KAAK,CAACmH,MAAOnH,CAAAA,MAAAA,CAAQsW,WAAYxR,CAAAA,OAAO,EAC1C,CAPAhnC,YAAYw4C,WAAW,CAAE9uC,OAAO,CAAC,CAC/B,KAAK,CAACkkB,iBAAqBlkB,EAAAA,SAASs9B,OAAUjZ,CAAAA,mBAAAA,CAAsB,CAAA,CAAA,CAAA,CAAK,IAAI,CAAChwB,MAAM,CAAG,IACvF,CAAA,IAAI,CAACA,MAAM,CAAGy6C,YAAYz6C,MAAM,GAAKkyB,kBAAqB,CAAA,QAAA,CAAW,SACvE,CAKF,CAEA,MAAM2yB,OAAAA,CAAU,CACdl1C,MAAAA,CAAQm1C,IAAI,CAAEC,IAAI,CAChB,CAAA,GAAID,IAAK3qD,CAAAA,MAAM,GAAK4qD,IAAK5qD,CAAAA,MAAM,CAAE,CAC/B,OAAO,KACT,CACA,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAI4qD,IAAK3qD,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAClC,GAAI4qD,IAAI,CAAC5qD,CAAE,CAAA,GAAK6qD,IAAI,CAAC7qD,EAAE,CAAE,CACvB,OAAO,KACT,CACF,CACA,OAAO,IACT,CACF,CAEA,CAAA,MAAM8qD,gBAAmB,CAAA,EAAE,CAC3BA,gBAAgB,CAAC3oB,SAAAA,CAAU,CAAG,OAC9B2oB,CAAAA,gBAAgB,CAAC1oB,WAAW,CAAG,OAC/B0oB,CAAAA,gBAAgB,CAACzoB,UAAW,CAAA,CAAG,QAC/ByoB,CAAAA,gBAAgB,CAACxoB,WAAAA,CAAY,CAAG,QAChCwoB,CAAAA,gBAAgB,CAACvoB,UAAW,CAAA,CAAG,QAC/BuoB,CAAAA,gBAAgB,CAACtoB,YAAY,CAAG,QAChCsoB,CAAAA,gBAAgB,CAACroB,YAAa,CAAA,CAAG,SACjCqoB,CAAAA,gBAAgB,CAACpoB,YAAAA,CAAa,CAAG,SAAA,CACjC,MAAMqoB,0BAA6B,CAAA,EAAE,CACrCA,0BAA0B,CAAC5oB,SAAAA,CAAU,CAAG,QACxC4oB,CAAAA,0BAA0B,CAAC3oB,UAAW,CAAA,CAAG,QACzC2oB,CAAAA,0BAA0B,CAAC1oB,UAAAA,CAAW,CAAG,SACzC0oB,CAAAA,0BAA0B,CAACzoB,WAAY,CAAA,CAAG,SAC1CyoB,CAAAA,0BAA0B,CAACxoB,UAAAA,CAAW,CAAG,QACzCwoB,CAAAA,0BAA0B,CAACvoB,WAAY,CAAA,CAAG,QAC1CuoB,CAAAA,0BAA0B,CAACtoB,YAAAA,CAAa,CAAG,SAC3CsoB,CAAAA,0BAA0B,CAACroB,aAAa,CAAG,SAC3C,CAAMsoB,MAAAA,wBAAAA,CACJjpD,IAAIkpD,aAAa,CAAEC,aAAgB,CAAA,IAAI,CAAE,CACvC,MAAMrjD,GAAAA,CAAM,IAAI,CAACsjD,MAAM,CAACF,aAAAA,CAAeC,eACvC,IAAIlD,MAAAA,CAAS,IAAI,CAAC/V,KAAK,CAAClwC,GAAG,CAAC8F,GAAAA,CAAAA,CAC5B,GAAI,CAACmgD,MAAAA,CAAQ,CACXA,MAAAA,CAAS,IAAI,CAAC7oD,MAAM,CAAC8rD,aAAAA,CAAeC,eACpC,IAAI,CAACjZ,KAAK,CAAC1pC,GAAG,CAACV,GAAAA,CAAKmgD,MACtB,EAAA,CACA,OAAOA,MACT,CACAmD,MAAAA,CAAOF,aAAa,CAAEC,aAAAA,CAAgB,IAAI,CAAE,CAC1C,OAAO,CAAC,EAAED,aAAAA,EAAenQ,oBAAoB,CAAC,EAAEoQ,aAAepQ,EAAAA,mBAAAA,CAAoB,CAAC,CAEtF37C,MAAO8rD,CAAAA,aAAa,CAAEC,aAAa,CAAE,CACnC,MAAMlD,OAAS,EAAE,CACjB,MAAMoD,SAAAA,CAAY,MAChB,EAAA,CAAA,MAAM9P,WAAcx1C,CAAAA,MAAAA,CAAOw1C,WAAW,CACtC,MAAM+P,QAAAA,CAAWvlD,OAAOy1C,UAAU,CAAG,UAAa,CAAA,QAAA,CAClD,IAAI+P,UAAa,CAAA,EAAE,CACnB,MAAMC,aAAezlD,MAAO4zC,CAAAA,QAAQ,CAACz5C,MAAM,CAC3C,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIurD,YAAcvrD,CAAAA,CAAAA,EAAAA,CAAI,CACnC,MAAM27C,QAAU71C,MAAO4zC,CAAAA,QAAQ,CAAC15C,CAAAA,CAAE,CAClC,MAAMmK,QAAAA,CAAW89B,kBAAkB,CAAC0T,OAAQr4C,CAAAA,IAAI,CAAC,CACjD,MAAMkoD,WAAc7P,CAAAA,OAAAA,CAAQv7C,SAAS,CAAG2qD,2BAA6BD,gBACrEQ,CAAAA,UAAAA,CAAWxqD,IAAI,CAAC,CACd2qD,cAAgBthD,CAAAA,QAAAA,CAChBuD,MAAQ4tC,CAAAA,WAAAA,CAAcK,QAAQjuC,MAAM,CAAG,CACvC5H,CAAAA,MAAAA,CAAQ,CAAC,EAAE0lD,WAAW,CAAC7P,OAAAA,CAAQtB,QAAQ,CAAC,CAAC,EAAEsB,OAAAA,CAAQrB,aAAa,CAAG,CAAA,CAAI,CAAC,CAAC,EAAEqB,OAAAA,CAAQrB,aAAa,CAAC,CAAC,CAAG,EAAA,CAAG,CAC1G,GACA,GAAI,CAACgB,WAAet7C,EAAAA,CAAAA,GAAMurD,aAAe,CAAG,CAAA,CAC1CvD,MAAOlnD,CAAAA,IAAI,CAAC,CACVwqD,UAAAA,CAAYA,UACZI,CAAAA,WAAAA,CAAa/P,QAAQpB,MAAM,CAC3B8Q,QAAUA,CAAAA,QACZ,GACAC,UAAa,CAAA,GAAE,CAEnB,CACF,CACA,CAAA,GAAIL,aAAe,CAAA,CACjBG,SAAUH,CAAAA,aAAAA,EACZ,CACA,GAAIC,cAAe,CACjBE,SAAAA,CAAUF,aACZ,EAAA,CACA,OAAOlD,MACT,CACAjgD,WAAa,EAAA,CACX,IAAI,CAACkqC,KAAK,CAAG,IAAI7pC,IACnB,CACF,CAEA,MAAMujD,cAAAA,CAIJC,kBAAkBC,gBAAgB,CAAE,CAClC,MAAMC,iBAAmB,EAAE,CAC3BD,gBAAiBl/C,CAAAA,OAAO,CAAC,MAAC7G,EAAAA,CACxBgmD,gBAAiBhrD,CAAAA,IAAI,CAACgF,MAAAA,CAAOmiD,eAAe,EAC9C,GACA,MAAMvM,IAAAA,CAAO,CACXoQ,gBAAAA,CAAkBA,gBACpB,CACA,CAAA,MAAMC,cAAiB,CAAA,IAAI,CAAC9hB,MAAM,CAAC+c,IAAI,CAACgF,oBAAoB,CAACtQ,IAAAA,CAAAA,CAC7D,OAAOqQ,cACT,CAbAhkD,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,OAChB,CAYF,CAEA,MAAMgiB,kBAAqB,CAAA,CACzB,YACA,CAAA,WAAA,CACAnkD,SACA,CAAA,YAAA,CACA,gBACA,gBACAA,CAAAA,SAAAA,CACD,CACD,MAAMokD,gBAAkB,CACtB,KAAA,CACA,UACA,CAAA,kBAAA,CACA,MACA,KACD,CAAA,CACD,MAAMC,YAAAA,CAAe,CACnB,MACA,CAAA,KAAA,CACA,KACA,CAAA,eAAA,CACA,MACA,eACA,CAAA,WAAA,CACA,qBACA,CAAA,qBAAA,CACA,YACA,qBACA,CAAA,UAAA,CACA,oBACD,CAAA,CACD,MAAMC,gBAAmB,CAAA,CACvB,OACA,CAAA,MAAA,CACA,OACA,CAAA,YAAA,CACA,SACA,CAAA,WAAA,CACA,gBACA,QACD,CAAA,CACD,MAAMC,UAAAA,CAAa,CACjB,MACA,CAAA,MAAA,CACA,OACD,CAAA,CACD,MAAMC,WAAc,CAAA,CAClB,MACA,CAAA,MAAA,CACA,UACA,iBACA,CAAA,gBAAA,CACA,iBACA,CAAA,gBAAA,CACA,SACD,CACD,MAAMC,YAAe,CAAA,CACnB,GACA,QACA,CAAA,QAAA,CACD,CACD,MAAMC,YAEN,MAAMC,oBAA6Bd,SAAAA,cAAAA,CAMjC5pD,GAAIu+C,CAAAA,SAAS,CAAE2K,aAAa,CAAEC,aAAa,CAAEwB,QAAQ,CAAE9O,MAAM,CAAEa,YAAY,CAAEoN,gBAAgB,CAAEnN,UAAU,CAAEC,UAAU,CAAEC,QAAQ,CAAEmF,cAAc,CAAE1E,YAAY,CAAEC,WAAW,CAAE,CAC1K,MAAMqN,cAAgBrM,SAAU7oC,CAAAA,IAAI,CACpC,GAAIi1C,UAAYC,aAAkBjvB,GAAAA,mBAAAA,EAAuBivB,aAAkB/uB,GAAAA,kBAAAA,CAAoB,CAC7F8uB,QAAAA,CAAW5kD,UACb,CACA,MAAM8kD,YAAe,CAAA,IAAI,CAACA,YAAY,CACtCA,YAAY,CAAC,CAAA,CAAE,CAAGD,aAClBC,CAAAA,YAAY,CAAC,EAAE,CAAGhP,MAAAA,CAAO5T,EACzB4iB,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGhO,QAClBgO,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGjO,UAAW92C,CAAAA,GAAG,CAChC+kD,YAAY,CAAC,CAAE,CAAA,CAAGlO,WAAW72C,GAC7B+kD,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAG3B,aAAelQ,EAAAA,aAAAA,EAAiB,CAClD6R,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAG1B,aAAenQ,EAAAA,aAAAA,EAAiB,CAClD6R,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGnO,YAAAA,CAAarV,IAAI,CAACvhC,GAAG,CACvC+kD,YAAY,CAAC,CAAA,CAAE,CAAGf,gBAAgB,CAAC,CAAA,CAAE,EAAEhkD,GAAAA,EAAO,CAC9C+kD,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGf,gBAAgB,CAAC,CAAE,CAAA,EAAEhkD,KAAO,CAC9C+kD,CAAAA,YAAY,CAAC,GAAG,CAAGf,gBAAgB,CAAC,CAAA,CAAE,EAAEhkD,GAAO,EAAA,CAC/C+kD,CAAAA,YAAY,CAAC,EAAG,CAAA,CAAG7I,cAAiB1E,CAAAA,YAAAA,CAAax3C,GAAG,CAAG,CACvD+kD,CAAAA,YAAY,CAAC,EAAA,CAAG,CAAG7I,cAAAA,CAAiBzE,YAAYz3C,GAAG,CAAG,CACtD+kD,CAAAA,YAAY,CAAC,EAAA,CAAG,CAAGF,QAAAA,EAAY,EAC/B,MAAMvT,IAAAA,CAAOC,WAAYwT,CAAAA,YAAAA,CAAAA,CACzB,IAAIC,YAAe,CAAA,IAAI,CAAC5a,KAAK,CAAClwC,GAAG,CAACo3C,IAClC,CAAA,CAAA,GAAI0T,aAAc,CAChB,IAAI,IAAI7sD,CAAAA,CAAI,EAAGA,CAAI6sD,CAAAA,YAAAA,CAAa5sD,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM8sD,KAAAA,CAAQD,YAAY,CAAC7sD,CAAAA,CAAE,CAC7B,GAAI2qD,QAAQl1C,MAAM,CAACq3C,KAAMC,CAAAA,MAAM,CAAEH,YAAe,CAAA,CAAA,CAC9C,OAAOE,KAAAA,CAAME,QAAQ,CAEzB,CACF,CACA,MAAMC,iBAAoBhB,CAAAA,kBAAkB,CAACU,aAAAA,CAAc,CAC3D,MAAMZ,cAAAA,CAAiB,IAAI,CAACH,iBAAiB,CAACC,gBAAAA,CAAAA,CAC9C,MAAMqB,kBAAAA,CAAqB,IAAI,CAACA,kBAAkB,CAACnrD,GAAG,CAACkpD,aAAAA,CAAeC,aACtE,CAAA,CAAA,MAAMiC,WAAa,IAAIX,UACvBW,CAAAA,UAAAA,CAAWJ,MAAM,CAAG,IAAI5vB,WAAYyvB,CAAAA,YAAAA,CACpCO,CAAAA,UAAWH,CAAAA,QAAQ,CAAG,IAAI,CAAC7tD,MAAM,CAAC8tD,iBAAmBP,CAAAA,QAAAA,CAAU9O,OAAQa,YAAcsN,CAAAA,cAAAA,CAAgBrN,UAAYC,CAAAA,UAAAA,CAAYuO,mBAAoBtO,QAAUmF,CAAAA,cAAAA,CAAgB1E,YAAcC,CAAAA,WAAAA,CAAAA,CACzL,GAAIuN,YAAAA,CAAc,CAChBA,YAAAA,CAAa/rD,IAAI,CAACqsD,UAAAA,EACpB,CAAO,KAAA,CACLN,aAAe,CACbM,UAAAA,EACD,CAEH,IAAI,CAAClb,KAAK,CAAC1pC,GAAG,CAAC4wC,IAAM0T,CAAAA,YAAAA,CAAAA,CACrB,OAAOM,UAAAA,CAAWH,QAAQ,CAE5BI,QAAS1O,CAAAA,UAAU,CAAE,CACnB,IAAI1J,KACJ,CAAA,GAAI0J,WAAW1J,KAAK,CAAE,CACpBA,KAAAA,CAAQ,CACNiP,KAAAA,CAAO,CACLoJ,SAAAA,CAAWnB,eAAe,CAACxN,UAAAA,CAAW9I,OAAO,CAAC,CAC9CR,SAAW+W,CAAAA,YAAY,CAACzN,UAAAA,CAAW7I,cAAc,CAAC,CAClDR,SAAW8W,CAAAA,YAAY,CAACzN,UAAW5I,CAAAA,cAAc,CACnD,EACA5hC,KAAO,CAAA,CACLm5C,SAAWnB,CAAAA,eAAe,CAACxN,UAAW3I,CAAAA,OAAO,CAAC,CAC9CX,UAAW+W,YAAY,CAACzN,UAAW1I,CAAAA,cAAc,CAAC,CAClDX,SAAW8W,CAAAA,YAAY,CAACzN,UAAWzI,CAAAA,cAAc,CACnD,CACF,EACF,CACA,OAAOjB,KACT,CACAsY,eAAgB3O,CAAAA,UAAU,CAAEF,YAAY,CAAEsF,cAAc,CAAE1E,YAAY,CAAEC,WAAW,CAAE2N,iBAAiB,CAAE,CACtG,IAAIM,YACJ,CAAA,KAAM,CAAEviB,KAAK,CAAEkZ,OAAO,CAAE,CAAGzF,YAAAA,CAC3B,GAAIzT,KAAAA,EAASkZ,OAAS,CAAA,CACpBqJ,aAAe,CACbznD,MAAAA,CAAQ24C,YAAarV,CAAAA,IAAI,CAACokB,eAAe,CAAC1nD,MAC5C,EACA,GAAIklC,KAAAA,CAAO,CACTuiB,YAAAA,CAAaE,iBAAiB,CAAG9O,UAAAA,CAAW3V,KAC5CukB,CAAAA,YAAaG,CAAAA,YAAY,CAAGtB,gBAAgB,CAACzN,UAAWl0C,CAAAA,IAAI,CAAC,CAC7D,MAAMkjD,WAAcV,CAAAA,iBAAAA,GAAsB,eAAmBA,EAAAA,iBAAAA,GAAsB,gBACnFM,CAAAA,YAAazW,CAAAA,SAAS,CAAG6W,WAAchP,CAAAA,UAAAA,CAAW7H,SAAS,CAAG,CAC9DyW,CAAAA,YAAAA,CAAaK,mBAAmB,CAAGD,YAAchP,UAAW3H,CAAAA,cAAc,CAAG,EAC/E,MAAO,CACLuW,YAAAA,CAAaE,iBAAiB,CAAG,KACjCF,CAAAA,YAAAA,CAAaG,YAAY,CAAG,SAC9B,CACA,GAAIxJ,OAAWH,EAAAA,cAAAA,CAAgB,CAC7BwJ,YAAaM,CAAAA,cAAc,CAAGxO,YAAAA,CAAa7C,QAC3C+Q,CAAAA,YAAAA,CAAaO,gBAAgB,CAAGzO,YAAAA,CAAa3C,SAC7C6Q,CAAAA,YAAalO,CAAAA,YAAY,CAAG,CAC1B0O,QAAS3B,gBAAgB,CAAC/M,YAAa50C,CAAAA,IAAI,CAAC,CAC5CujD,MAAAA,CAAQ1B,WAAW,CAACjN,aAAanD,IAAI,CAAC,CACtC+R,MAAAA,CAAQ3B,WAAW,CAACjN,YAAAA,CAAa/C,KAAK,CAAC,CACvC4R,WAAa5B,CAAAA,WAAW,CAACjN,YAAAA,CAAajD,KAAK,CAAC,CAE9CmR,CAAAA,YAAajO,CAAAA,WAAW,CAAG,CACzByO,QAAS3B,gBAAgB,CAAC9M,WAAY70C,CAAAA,IAAI,CAAC,CAC3CujD,MAAAA,CAAQ1B,WAAW,CAAChN,YAAYpD,IAAI,CAAC,CACrC+R,MAAAA,CAAQ3B,WAAW,CAAChN,WAAAA,CAAYhD,KAAK,CAAC,CACtC4R,WAAa5B,CAAAA,WAAW,CAAChN,WAAAA,CAAYlD,KAAK,CAC5C,EACF,CACF,CACA,OAAOmR,YACT,CACApuD,MAAAA,CAAO8tD,iBAAiB,CAAEP,QAAQ,CAAE9O,MAAM,CAAEa,YAAY,CAAEsN,cAAc,CAAErN,UAAU,CAAEC,UAAU,CAAEuO,kBAAkB,CAAEtO,QAAQ,CAAEmF,cAAc,CAAE1E,YAAY,CAAEC,WAAW,CAAE,CACzK,MAAM0H,IAAO,CAAA,IAAI,CAAC/c,MAAM,CAAC+c,IAAI,CAC7B,MAAMmH,YAAAA,CAAevQ,MAAOxU,CAAAA,IAAI,CAChC,MAAMsS,KAAO,CACX0S,MAAAA,CAAQ,CACNtiD,MAAAA,CAAQqiD,aAAaE,qBAAqB,EAAA,CAC1CC,UAAYH,CAAAA,YAAAA,CAAaI,gBAAgB,CACzCnW,OAAAA,CAAS8U,kBACX,CAAA,CACA5M,UAAW,CACTkO,QAAAA,CAAUvB,iBACVwB,CAAAA,SAAAA,CAAW,MACX7P,QAAUyN,CAAAA,UAAU,CAACzN,QAAAA,CAAS,CAEhC2O,CAAAA,YAAAA,CAAc,IAAI,CAACD,eAAe,CAAC3O,UAAAA,CAAYF,YAAcsF,CAAAA,cAAAA,CAAgB1E,YAAcC,CAAAA,WAAAA,CAAa2N,iBACxGyB,CAAAA,CAAAA,WAAAA,CAAa,CACX1O,KAAOvB,CAAAA,YAAAA,CAAaoE,OACtB,EACAmF,MAAQ+D,CAAAA,cACV,CACA,CAAA,GAAIW,SAAU,CACZhR,IAAAA,CAAK4E,SAAS,CAACqO,gBAAgB,CAAGpC,YAAY,CAACG,QAAAA,EAAS,CAE1DhR,IAAAA,CAAK5pC,QAAQ,CAAG,CACdhG,MAAQqiD,CAAAA,YAAAA,CAAaS,uBAAuB,EAAA,CAC5CN,WAAYH,YAAaU,CAAAA,kBAAkB,CAC3C3Q,OAAAA,CAAS,EACX,CACA,CAAA,MAAM4Q,iBAAmBrQ,YAAarV,CAAAA,IAAI,CAAC0lB,gBAAgB,CAC3D,GAAIA,gBAAAA,CAAiB7uD,MAAM,CAAG,EAAG,CAC/B,IAAIy8C,SAAY,CAAA,CAAA,CAChB,GAAIgC,UAAWlJ,CAAAA,QAAQ,CAAEkH,SAAAA,EAAaqS,cAAch4C,GAAG,CACvD,GAAI2nC,UAAAA,CAAWjJ,UAAU,CAAEiH,SAAAA,EAAaqS,aAAcl4C,CAAAA,KAAK,CAC3D,GAAI6nC,UAAAA,CAAWhJ,SAAS,CAAEgH,SAAaqS,EAAAA,aAAAA,CAAcr4C,IAAI,CACzD,GAAIgoC,UAAW/I,CAAAA,UAAU,CAAE+G,SAAAA,EAAaqS,cAAcC,KAAK,CAC3D,MAAMha,KAAAA,CAAQ,IAAI,CAACoY,QAAQ,CAAC1O,UAAAA,CAAAA,CAC5BoQ,iBAAiBniD,OAAO,CAAC,UAACsiD,EAAAA,CACxBvT,KAAK5pC,QAAQ,CAACosC,OAAO,CAACp9C,IAAI,CAAC,CACzBgF,MAAQmpD,CAAAA,UAAAA,CAAWnpD,MAAM,CACzB42C,SAAAA,CAAWA,SACX1H,CAAAA,KAAAA,CAAOA,KACT,CAAA,EACF,CACF,EAAA,CACA,MAAMgY,QAAWhG,CAAAA,IAAAA,CAAKkI,oBAAoB,CAACxT,MAC3C,OAAOsR,QACT,CAvJAjlD,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,KAAK,CAACA,QAAS,IAAI,CAAC2iB,YAAY,CAAG,IAAIzvB,WAAY,CAAA,EAAA,CACnD,CAAA,IAAI,CAAC+vB,kBAAkB,CAAG,IAAIlC,wBAC9B,CAAA,IAAI,CAAC/Y,KAAK,CAAG,IAAI7pC,IACnB,CAoJF,CAEA,MAAM+mD,qBAA8BxD,SAAAA,cAAAA,CAClC5pD,GAAI67C,CAAAA,MAAM,CAAEmL,eAAe,CAAE,CAC3B,MAAMgD,eAAiB,IAAI,CAACH,iBAAiB,CAAC,CAC5C7C,eAAgB3f,CAAAA,IAAI,CACrB,CAAA,CACD,MAAM4jB,QAAW,CAAA,IAAI,CAAC7tD,MAAM,CAACy+C,MAAQmO,CAAAA,cAAAA,CAAAA,CACrC,OAAOiB,QACT,CACA7tD,MAAOy+C,CAAAA,MAAM,CAAEmO,cAAc,CAAE,CAC7B,MAAM/E,IAAAA,CAAO,IAAI,CAAC/c,MAAM,CAAC+c,IAAI,CAC7B,MAAMmH,YAAAA,CAAevQ,MAAOxU,CAAAA,IAAI,CAChC,MAAMsS,IAAAA,CAAO,CACXrrB,OAAAA,CAAS,CACPvkB,MAAQqiD,CAAAA,YAAAA,CAAaiB,sBAAsB,EAAA,CAC3Cd,WAAYH,YAAakB,CAAAA,iBAAiB,CAC5C,CACArH,OAAQ+D,cACV,CAAA,CACA,MAAMiB,QAAAA,CAAWhG,KAAKsI,qBAAqB,CAAC5T,IAC5C,CAAA,CAAA,OAAOsR,QACT,CACF,CAEA,MAAMuC,iBACJC,WAAc,EAAA,CACZ,IAAI,CAACC,SAAS,GAChB,CACAC,WAAc,EAAA,CACZ,IAAI,CAACD,SAAS,GAChB,CACA,IAAIE,QAAW,EAAA,CACb,OAAO,IAAI,CAACF,SACd,CACA1nD,WAAAA,EAAa,CACX,IAAI,CAAC0nD,SAAS,CAAG,EACnB,CACF,CAEA,MAAMG,KAAAA,SAAcL,gBAClBxnD,CAAAA,WAAAA,CAAY8nD,GAAG,CAAC,CACd,KAAK,EACL,CAAA,IAAI,CAACC,MAAM,CAAGD,GACd,CAAA,IAAI,CAACL,WAAW,GAClB,CACF,CACA,MAAMO,kBACJ5mB,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC8I,KAAK,CAACtlC,OAAO,CAAC,KACjBmgD,EAAAA,CAAAA,KAAAA,CAAMgD,MAAM,EAAE3mB,UAChB,CACA,CAAA,CAAA,IAAI,CAAC8I,KAAK,CAACrpC,KAAK,GAClB,CACAA,OAAQ,CACN,IAAI,CAACqpC,KAAK,CAACrpC,KAAK,GAClB,CACA7G,GAAAA,CAAI8F,GAAG,CAAE,CACP,MAAMilD,KAAAA,CAAQ,IAAI,CAAC7a,KAAK,CAAClwC,GAAG,CAAC8F,GAC7B,CAAA,CAAA,GAAIilD,KAAO,CAAA,CACTA,MAAM0C,WAAW,EAAA,CACjB,OAAO1C,KAAAA,CAAMgD,MAAM,CAErB,OAAO,IACT,CACAvnD,GAAAA,CAAIV,GAAG,CAAEioD,MAAM,CAAE,CACf,IAAI,CAAC7d,KAAK,CAAC1pC,GAAG,CAACV,GAAAA,CAAK,IAAI+nD,KAAME,CAAAA,MAAAA,CAAAA,EAChC,CACAE,OAAAA,CAAQnoD,GAAG,CAAE,CACX,MAAMilD,KAAAA,CAAQ,IAAI,CAAC7a,KAAK,CAAClwC,GAAG,CAAC8F,GAC7B,CAAA,CAAA,GAAIilD,KAAO,CAAA,CACTA,MAAM4C,WAAW,EAAA,CACjB,GAAI5C,KAAAA,CAAM6C,QAAQ,GAAK,CAAG,CAAA,CACxB,IAAI,CAAC1d,KAAK,CAACppC,MAAM,CAAChB,GAClBilD,CAAAA,CAAAA,KAAMgD,CAAAA,MAAM,EAAE3mB,OAChB,GAAA,CACF,CACF,CACAphC,aAAa,CACX,IAAI,CAACkqC,KAAK,CAAG,IAAI7pC,IACnB,CACF,CAEA,MAAM6nD,wBAAiCF,SAAAA,kBAAAA,CACrCpmB,WAAYM,CAAAA,MAAM,CAAE,CAClB,IAAI,CAACrhC,KAAK,GACZ,CACF,CACA,MAAMsnD,yBAA2B,IAAI1lB,WAAAA,CACrC,MAAM2lB,2BAAAA,CAA8B,MAClC,EAAA,CAAA,OAAOD,wBAAyBnuD,CAAAA,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CAC1C,OAAO,IAAIgmB,wBACb,CACF,CAAA,CAAA,CAEA,MAAMG,SAAAA,CAAY,IAAI7Z,SACtB,CAAA,MAAM8Z,eACJlnB,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACmnB,kBAAkB,EAAEnnB,SACzB,CAAA,IAAI,CAACmnB,kBAAkB,CAAG,KAC5B,CACF,CACA,MAAMC,eAQJpnB,CAAAA,OAAAA,CAAQc,MAAM,CAAE,CACd,GAAI,IAAI,CAACumB,oBAAoB,CAAE,CAC7B,IAAI,CAACC,YAAY,EAAEtnB,OACnB,EAAA,CAAA,IAAI,CAACsnB,YAAY,CAAG,KACtB,CACA,GAAI,IAAI,CAACC,uBAAuB,CAAE,CAChC,IAAI,CAACA,uBAAuB,CAAG,IAAA,CAC/BP,2BAA4BlmB,CAAAA,MAAAA,CAAAA,CAAQ+lB,OAAO,CAAC,IAAI,CAACW,0BAA0B,EAC7E,CACF,CAhBA5oD,WAAY6oD,CAAAA,SAAS,CAAC,CACpB,IAAI,CAACH,YAAY,CAAG,IACpB,CAAA,IAAI,CAACD,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACE,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAAC5qD,MAAM,CAAG8qD,SACd,CAAA,IAAI,CAACC,UAAU,CAAGD,SAAAA,GAAc,uBAClC,CAWF,CACA,MAAME,kBAAAA,CAUJ3nB,QAAQc,MAAM,CAAE,CACd,IAAI,CAACoO,WAAW,CAAG,KACnB,CAAA,IAAI,CAAC0Y,oBAAoB,CAAG,IAAA,CAC5B,IAAI,CAACjC,gBAAgB,CAACniD,OAAO,CAAC,eAACqkD,EAAAA,CAC7BA,eAAgB7nB,CAAAA,OAAO,GACzB,CACA,CAAA,CAAA,IAAI,CAAC2lB,gBAAgB,CAAC7uD,MAAM,CAAG,CAC/B,CAAA,IAAI,CAACutD,eAAe,EAAErkB,OAAQc,CAAAA,MAAAA,CAC9B,CAAA,IAAI,CAACujB,eAAe,CAAG,KACzB,CACA3W,WAAY,CACV,MAAMoa,EAAK,CAAA,IAAI,CAACxS,YAAY,CAC5B,IAAI52C,GAAAA,CAAM,CAAC,EAAEopD,EAAAA,CAAGpO,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC2K,eAAe,CAAG,IAAI,CAACA,eAAe,CAAC1nD,MAAM,CAAG,SAAU,CAAA,CAAC,CAC3F,IAAI,CAACgpD,gBAAgB,CAACniD,OAAO,CAAEqkD,eAC7BnpD,EAAAA,CAAAA,GAAAA,EAAO,CAAC,CAAC,EAAEmpD,eAAgBlrD,CAAAA,MAAM,CAAC,EACpC,CACA,CAAA,CAAA,IAAI,CAAC+B,GAAG,CAAGuoD,SAAAA,CAAUruD,GAAG,CAAC8F,GAAAA,EAC3B,CACAqpD,kBAAAA,CAAmBjnB,MAAM,CAAEknB,UAAU,CAAE,CACrC,IAAI,CAACJ,oBAAoB,CAAGI,WAC5B,MAAMriD,IAAAA,CAAOqiD,UAAWC,CAAAA,UAAU,CAAC,CACjCtrD,MAAAA,CAAQmkC,MAAOonB,CAAAA,oBAAoB,CAErC,CAAA,CAAA,MAAML,eAAkB,CAAA,IAAI,CAACM,oBAAoB,CAACxC,gBAAgB,CAAC,EAAE,CACrE,MAAMjM,OAAU,CAAA,IAAI,CAACpE,YAAY,CAACoE,OAAO,CACzC,GAAIA,OAAAA,CAAU,CAAG,CAAA,CACfmO,gBAAgBO,aAAa,CAAGziD,KAClC,CAAA,KAAO,CACLkiD,eAAgBliD,CAAAA,IAAI,CAAGA,KACzB,CACA,IAAI,CAAC0iD,kBAAkB,CAAC,EAAG1pD,SAAWmiC,CAAAA,MAAAA,CAAOonB,oBAAoB,CAAA,CACjE,IAAI,CAACxa,SAAS,GAChB,CACA2a,mBAAmB3rD,KAAK,CAAEyqD,kBAAkB,CAAExqD,MAAM,CAAE,CACpD,GAAI,CAAC,IAAI,CAACgpD,gBAAgB,CAACjpD,MAAM,CAAE,CACjC,IAAI,CAACipD,gBAAgB,CAACjpD,KAAAA,CAAM,CAAG,IAAIwqD,gBACrC,CACA,GAAIC,kBAAoB,CAAA,CACtB,IAAI,CAACxB,gBAAgB,CAACjpD,KAAAA,CAAM,CAACyqD,kBAAkB,CAAGA,mBACpD,CACA,GAAIxqD,MAAQ,CAAA,CACV,IAAI,CAACgpD,gBAAgB,CAACjpD,KAAAA,CAAM,CAACC,MAAM,CAAGA,OACxC,CACF,CACAs6C,KAAKnW,MAAM,CAAEwU,YAAY,CAAE,CACzB,MAAMuI,IAAAA,CAAO/c,MAAO+c,CAAAA,IAAI,CACxB,IAAI,CAACyK,gBAAgB,CAACxnB,OAAQ+c,IAAMvI,CAAAA,YAAAA,CAAAA,CACpC,GAAIA,YAAAA,CAAamH,aAAa,CAAE,CAC9BnH,YAAamH,CAAAA,aAAa,CAACj5C,OAAO,CAAC,CAACk5C,WAAAA,CAAahgD,SAC/C,IAAI,CAAC2rD,kBAAkB,CAAC3rD,KAAOiC,CAAAA,SAAAA,CAAW+9C,WAAYzc,CAAAA,IAAI,CAACtjC,MAAM,EACnE,CACF,EAAA,CACA,IAAI,CAACwrD,oBAAoB,CAACxC,gBAAgB,CAAG,EAAE,CAC/C,MAAM9O,KAAAA,CAAQ,IAAI,CAAC0R,YAAY,CAAG,CAAA,CAAIjT,aAAamH,aAAa,EAAE3lD,MAAU,EAAA,CAAA,CAC5E,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAO,EAAEhgD,CAAAA,CAAE,CAC5B,MAAMgxD,eAAkB,CAAA,IAAI,CAACW,SAAS,CAAC1nB,MAAQ+c,CAAAA,IAAAA,CAAMvI,YAAcz+C,CAAAA,CAAAA,CAAAA,CACnE,MAAM4xD,oBAAuB5xD,CAAAA,CAAAA,GAAM,CAAK,EAAA,IAAI,CAAC8uD,gBAAgB,CAAC,CAAE,CAAA,EAAEhpD,OAClE,GAAIkrD,eAAAA,CAAgBliD,IAAI,EAAI8iD,qBAAsB,CAChD,IAAI,CAACN,oBAAoB,CAACxC,gBAAgB,CAAChuD,IAAI,CAACkwD,iBAClD,CACF,CACA,IAAI,CAACna,SAAS,EACd,CAAA,IAAI,CAACwB,WAAW,CAAG,KACrB,CACAoZ,iBAAiBxnB,MAAM,CAAE+c,IAAI,CAAEvI,YAAY,CAAE,CAC3C,KAAM,CAAEoE,OAAO,CAAEl9B,KAAK,CAAEC,MAAM,CAAEolB,KAAK,CAAEsb,WAAW,CAAE,CAAG7H,YACvD,CAAA,GAAIzT,KAASsb,EAAAA,WAAAA,CAAa,CACxB,IAAIuL,aAAAA,CACJ,GAAI,CAACvL,WAAa,CAAA,CAChB,IAAI,CAACkH,eAAe,CAAG,IAAI+C,eAAgB,CAAA,sBAAA,CAAA,CAC3C,MAAMuB,gBAAmB,CAAA,CACvB5sD,IAAM,CAAA,CACJygB,MACAC,MACA,CAAA,CAAA,CACD,CACDilB,SAAAA,CAAW,KACXknB,WAAalP,CAAAA,OAAAA,CACb/8C,MAAQ,CAAA,IAAI,CAAC0nD,eAAe,CAAC1nD,MAAM,CACnC2yC,MAAOuZ,eAAgBC,CAAAA,iBAAiB,CAC1C,CACA,GAAIpP,OAAU,CAAA,CAAA,CAAG,CACfiP,gBAAAA,CAAiBrZ,KAAK,EAAIuZ,eAAgBE,CAAAA,gBAAe,CACpD,KAAA,CACLJ,gBAAiBrZ,CAAAA,KAAK,EAAIuZ,eAAgBG,CAAAA,SAAQ,CAEpD,MAAM1B,YAAezJ,CAAAA,IAAAA,CAAKoL,aAAa,CAACN,iBACxC,CAAA,IAAI,CAACtE,eAAe,CAACiD,YAAY,CAAGA,YACpC,CAAA,IAAI,CAACjD,eAAe,CAACgD,oBAAoB,CAAG,IAC5CqB,CAAAA,aAAAA,CAAgBpB,YAAaW,CAAAA,UAAU,GACzC,CAAA,KAAO,CACL,IAAI,CAAC5D,eAAe,CAAG,IAAI+C,eAAAA,CAAgBjK,YAAYld,IAAI,CAACtjC,MAAM,CAAA,CAClE,GAAI+8C,OAAU,CAAA,CAAA,CAAG,CACf,MAAMwP,YAAc,sBACpB,CAAA,IAAI,CAAC7E,eAAe,CAAC1nD,MAAM,CAAGusD,WAC9B,CAAA,IAAI,CAAC7E,eAAe,CAACqD,UAAU,CAAGwB,WAAAA,GAAgB,sBAClD,CAAA,MAAMxqD,GAAM,CAAA,CAAC,EAAEy+C,WAAAA,CAAYtc,EAAE,CAAC,CAAC,EAAErkB,KAAAA,CAAM,CAAC,EAAEC,MAAAA,CAAO,CAAC,EAAEi9B,QAAQ,CAAC,EAAEwP,WAAY,CAAA,CAAC,CAC5E,MAAMC,UAAAA,CAAanC,2BAA4BlmB,CAAAA,MAAAA,CAAAA,CAC/C,IAAIsoB,cAAiBD,CAAAA,UAAAA,CAAWvwD,GAAG,CAAC8F,KACpC,GAAI,CAAC0qD,cAAgB,CAAA,CACnB,MAAMC,qBAAwB,CAAA,CAC5BttD,IAAM,CAAA,CACJygB,KACAC,CAAAA,MAAAA,CACA,CACD,CAAA,CACDilB,UAAW,IACXknB,CAAAA,WAAAA,CAAalP,OACb/8C,CAAAA,MAAAA,CAAQusD,YACR5Z,KAAOuZ,CAAAA,eAAAA,CAAgBC,iBAAiB,EAAII,WAAgB/L,GAAAA,WAAAA,CAAYld,IAAI,CAACtjC,MAAM,CAAGksD,eAAAA,CAAgBE,eAAe,CAAG,CAAA,CAC1H,CAAA,CACAK,cAAiBvL,CAAAA,IAAAA,CAAKoL,aAAa,CAACI,qBAAAA,CAAAA,CACpCF,UAAW/pD,CAAAA,GAAG,CAACV,GAAK0qD,CAAAA,cAAAA,EACtB,CACA,IAAI,CAAC/E,eAAe,CAACkD,uBAAuB,CAAG6B,cAC/C,CAAA,IAAI,CAAC/E,eAAe,CAACmD,0BAA0B,CAAG9oD,GAAAA,CAClDgqD,cAAgBU,cAAenB,CAAAA,UAAU,GAC3C,CAAA,KAAO,CACL,MAAMX,YAAAA,CAAenK,WAAYld,CAAAA,IAAI,CAAC+nB,UACtC,CAAA,IAAI,CAAC3D,eAAe,CAACiD,YAAY,CAAGA,aACpCoB,aAAgBpB,CAAAA,YAAAA,CAAaW,UAAU,GACzC,CACF,CACA,IAAI,CAACE,oBAAoB,CAACmB,sBAAsB,CAAG,CACjD3jD,IAAAA,CAAM+iD,aACR,EACF,CACF,CACAF,SAAAA,CAAU1nB,MAAM,CAAE+c,IAAI,CAAEvI,YAAY,CAAE54C,KAAK,CAAE,CAC3C,MAAMmrD,gBAAkB,EAAC,CACzB,KAAM,CAAEnO,OAAO,CAAEl9B,KAAK,CAAEC,MAAM,CAAEklB,QAAQ,CAAE,CAAG2T,YAAAA,CAC7C,MAAMoH,WAAAA,CAAcpH,YAAa4H,CAAAA,cAAc,CAACxgD,KAChD,CAAA,CAAA,IAAI6sD,SAAY,CAAA,IAAA,CAChB,GAAI7M,WAAa,CAAA,CACf,MAAM8M,aAAAA,CAAgB,EACtB,GAAI9M,WAAAA,CAAYpa,OAAO,CAAE,CACvBinB,SAAY7M,CAAAA,WAAAA,CAAYzc,IAAI,CAACgoB,UAAU,CAAC,CACtCvmB,SAAW,CAAA,IAAA,CACX+nB,eAAgBnU,YAAanO,CAAAA,IAAI,CACjCuiB,eAAAA,CAAiB,EACjBF,aACAG,CAAAA,YAAAA,CAAchoB,QAChB,CAAA,EACF,CAAO,KAAA,CACL4nB,SAAY7M,CAAAA,WAAAA,CAAYzc,IAAI,CAACgoB,UAAU,CAAC,CACtCuB,cACAG,YAAchoB,CAAAA,QAChB,CACF,EAAA,CACF,CACA,GAAI+X,OAAAA,CAAU,CAAG,CAAA,CACf,MAAM/8C,MAAS,CAAA,IAAI,CAAC4rD,YAAY,CAAGznB,MAAOonB,CAAAA,oBAAoB,CAAGxL,WAAAA,CAAYzc,IAAI,CAACtjC,MAAM,CACxF,MAAMitD,wBAA0B,CAC9B7tD,IAAAA,CAAM,CACJygB,KAAAA,CACAC,MACA,CAAA,CAAA,CACD,CACDilB,SAAAA,CAAW,KACXknB,WAAalP,CAAAA,OAAAA,CACb/8C,MAAQA,CAAAA,MAAAA,CACR2yC,MAAOuZ,eAAgBC,CAAAA,iBAAiB,CAC1C,CACA,MAAMe,uBAA0BhM,CAAAA,IAAAA,CAAKoL,aAAa,CAACW,yBACnD,IAAI,CAACvB,kBAAkB,CAAC3rD,MAAOmtD,uBAAyBD,CAAAA,uBAAAA,CAAwBjtD,MAAM,CACtFkrD,CAAAA,eAAgBliD,CAAAA,IAAI,CAAGkkD,uBAAAA,CAAwB5B,UAAU,EACzDJ,CAAAA,eAAgBO,CAAAA,aAAa,CAAGmB,UAClC,CAAO,KAAA,CACL1B,gBAAgBliD,IAAI,CAAG4jD,UACzB,CACA,OAAO1B,eACT,CACAiC,kBAAmBhR,CAAAA,UAAU,CAAExD,YAAY,CAAE,CAC3C,MAAMuB,MAAQ,IAAI,CAACsR,oBAAoB,CAACxC,gBAAgB,EAAE7uD,MAAAA,EAAU,CACpE,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAO,EAAEhgD,CAAE,CAAA,CAC5B,MAAMgxD,eAAAA,CAAkB,IAAI,CAACM,oBAAoB,CAACxC,gBAAgB,CAAC9uD,CAAAA,CAAE,CACrE,MAAMkzD,SAAWjR,UAAWkR,CAAAA,aAAa,CAACnzD,CAAAA,CAAE,CAC5C,MAAMw8B,IAAAA,CAAOiiB,YAAagI,CAAAA,iBAAiB,CAACzmD,CAC5CgxD,CAAAA,CAAAA,eAAgBoC,CAAAA,UAAU,CAAG52B,IAAO02B,CAAAA,QAAAA,CAASG,gBAAgB,CAAGH,SAASE,UACzEpC,CAAAA,eAAAA,CAAgBsC,MAAM,CAAGJ,QAAAA,CAAStqD,KAAK,CAAG,OAAU,CAAA,MACpDooD,CAAAA,eAAAA,CAAgBuC,OAAO,CAAGL,QAAAA,CAASM,KAAK,CAAG,QAAU,UACvD,CACA,MAAMhG,eAAAA,CAAkB,IAAI,CAAC8D,oBAAoB,CAACmB,sBAAsB,CACxE,GAAIjF,eAAAA,CAAiB,CACnBA,eAAAA,CAAgBiG,eAAe,CAAGxR,UAAAA,CAAWyR,eAAe,CAACC,eAAe,CAC5EnG,eAAgBoG,CAAAA,WAAW,CAAG3R,UAAWyR,CAAAA,eAAe,CAACG,UAAU,CAAG,OAAA,CAAU,MAChFrG,CAAAA,gBAAgBsG,YAAY,CAAG7R,UAAWyR,CAAAA,eAAe,CAACK,UAAU,CAAG,OAAU,CAAA,SACjFvG,CAAAA,eAAgBwG,CAAAA,aAAa,CAAG,KAAA,CAChC,GAAI,IAAI,CAACxG,eAAe,CAACqD,UAAU,CAAE,CACnCrD,eAAgByG,CAAAA,iBAAiB,CAAGhS,UAAWyR,CAAAA,eAAe,CAACQ,iBAAiB,CAChF1G,eAAAA,CAAgB2G,aAAa,CAAGlS,UAAWyR,CAAAA,eAAe,CAACU,YAAY,CAAG,OAAU,CAAA,MACpF5G,CAAAA,eAAAA,CAAgB6G,cAAc,CAAGpS,UAAAA,CAAWyR,eAAe,CAACY,YAAY,CAAG,OAAA,CAAU,SACrF9G,CAAAA,gBAAgB+G,eAAe,CAAG,MACpC,CACF,CACF,CACA5qB,WAAAA,EAAc,CACZ,IAAI,CAAC0O,WAAW,CAAG,MACrB,CACAhO,QAAQJ,MAAM,CAAErrC,MAAM,CAAEqlD,KAAK,CAAEjZ,KAAK,CAAE,EAhNtCjjC,WAAAA,CAAY02C,YAAY,CAAC,CACvB,IAAI,CAACpG,WAAW,CAAG,KACnB,CAAA,IAAI,CAACyW,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACtB,eAAe,CAAG,IACvB,CAAA,IAAI,CAACuD,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACO,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACI,YAAY,CAAG,KACpB,CAAA,IAAI,CAACjT,YAAY,CAAGA,aACtB,CAyMF,CAEA,MAAM+V,0BAA6B,CAAA,EAAE,CACrCA,0BAA0B,CAAC3xB,iBAAAA,CAAkB,CAAG,CAChD2xB,CAAAA,0BAA0B,CAAC1xB,iBAAiB,CAAG,CAC/C0xB,CAAAA,0BAA0B,CAACzxB,gBAAiB,CAAA,CAAG,CAC/CyxB,CAAAA,0BAA0B,CAACxxB,gBAAiB,CAAA,CAAG,CAC/CwxB,CAAAA,0BAA0B,CAAC5xB,eAAAA,CAAgB,CAAG,CAC9C4xB,CAAAA,0BAA0B,CAACvxB,kBAAkB,CAAG,CAChDuxB,CAAAA,0BAA0B,CAACtxB,iBAAkB,CAAA,CAAG,CAChDsxB,CAAAA,0BAA0B,CAACrxB,iBAAAA,CAAkB,CAAG,CAChDqxB,CAAAA,0BAA0B,CAAC7xB,gBAAiB,CAAA,CAAG,CAC/C6xB,CAAAA,0BAA0B,CAACpxB,iBAAAA,CAAkB,CAAG,CAChDoxB,CAAAA,0BAA0B,CAACnxB,iBAAkB,CAAA,CAAG,CAChDmxB,CAAAA,0BAA0B,CAAClxB,iBAAAA,CAAkB,CAAG,CAChDkxB,CAAAA,0BAA0B,CAACjxB,gBAAiB,CAAA,CAAG,CAC/CixB,CAAAA,0BAA0B,CAAChxB,gBAAAA,CAAiB,CAAG,EAC/CgxB,CAAAA,0BAA0B,CAAC/wB,iBAAiB,CAAG,EAC/C+wB,CAAAA,0BAA0B,CAACnwB,gBAAiB,CAAA,CAAG,CAC/CmwB,CAAAA,0BAA0B,CAAClwB,iBAAkB,CAAA,CAAG,CAChDkwB,CAAAA,0BAA0B,CAACjwB,iBAAAA,CAAkB,CAAG,CAChDiwB,CAAAA,0BAA0B,CAAChwB,kBAAkB,CAAG,CAChD,CAAMiwB,MAAAA,aAAAA,CACJ,IAAIC,WAAc,EAAA,CAChB,OAAO,IAAI,CAAC1U,KAAK,CAAG,CACtB,CAwEA2U,gBAAgBjnD,MAAM,CAAE,CACtB,IAAIknD,UAAY,IAAI,CAACpN,QAAQ,EAAI,CAAI,CAAA,IAAI,CAACA,QAAQ,CAAG,EACrD,CAAA,GAAI,IAAI,CAACxH,KAAK,CAAE,CACd4U,SAAY,CAAA,GACd,CACAlnD,MAAS2F,CAAAA,IAAAA,CAAK0B,OAAO,CAACrH,OAAQknD,SAC9B,CAAA,CAAA,IAAI,CAAClnD,MAAM,CAAGA,MAAAA,CAAS,EACzB,CA9EA3F,YAAYzE,IAAI,CAAEmU,IAAI,CAAEuoC,MAAQ,CAAC,CAAC,CAChC,IAAI,CAAC6U,SAAS,CAAGvxD,IACjB,CAAA,IAAI,CAACA,IAAI,CAAG08C,MAAQ,CAAC,EAAE18C,IAAK,CAAA,GAAG,CAAC,CAAGA,IACnC,CAAA,IAAI,CAACmU,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC6iC,aAAa,CAAGka,0BAA0B,CAAC/8C,IAAK,CACrD,CAAA,IAAI,CAACq9C,UAAU,CAAGr9C,IAClB,CAAA,GAAIuoC,KAAQ,CAAA,CAAA,CAAG,CACb,OAAOvoC,MACL,KAAKorB,iBAAAA,CACH,IAAI,CAACiyB,UAAU,CAAGlxB,sBAAAA,CAClB,MACF,KAAKhB,gBACH,IAAI,CAACkyB,UAAU,CAAGrwB,qBAClB,MACF,KAAKJ,gBACH,CAAA,IAAI,CAACywB,UAAU,CAAGpwB,qBAClB,CAAA,WACG/B,gBACH,CAAA,IAAI,CAACmyB,UAAU,CAAGnwB,qBAClB,CAAA,MACG7B,KAAAA,gBAAAA,CACH,IAAI,CAACgyB,UAAU,CAAG9wB,sBAClB,MACF,KAAKf,iBACH,CAAA,IAAI,CAAC6xB,UAAU,CAAGlwB,sBAClB,CAAA,WACGN,iBACH,CAAA,IAAI,CAACwwB,UAAU,CAAGjwB,sBAClB,CAAA,MACGzB,KAAAA,iBAAAA,CACH,IAAI,CAAC0xB,UAAU,CAAGhwB,sBAAAA,CAClB,MACG/B,KAAAA,gBAAAA,CACH,IAAI,CAAC+xB,UAAU,CAAG7wB,qBAAAA,CAClB,MACF,KAAKf,iBACH,CAAA,IAAI,CAAC4xB,UAAU,CAAG/vB,sBAClB,CAAA,MACGR,KAAAA,iBAAAA,CACH,IAAI,CAACuwB,UAAU,CAAG9vB,sBAAAA,CAClB,MACG3B,KAAAA,iBAAAA,CACH,IAAI,CAACyxB,UAAU,CAAG7vB,sBAAAA,CAClB,MACF,KAAKjC,iBACH,IAAI,CAAC8xB,UAAU,CAAG5wB,sBAClB,MACF,KAAKf,iBACH,CAAA,IAAI,CAAC2xB,UAAU,CAAG5vB,sBAClB,CAAA,MACGV,KAAAA,iBAAAA,CACH,IAAI,CAACswB,UAAU,CAAG3vB,sBAAAA,CAClB,MACF,KAAK7B,kBACH,IAAI,CAACwxB,UAAU,CAAG1vB,uBAClB,MACF,KAAK3B,gBACH,CAAA,IAAI,CAACqxB,UAAU,CAAG3wB,qBAClB,CAAA,KACJ,CACF,CACA,IAAI,CAAC6b,KAAK,CAAGA,KACb,CAAA,IAAI+U,aAAgB,CAAA,IAAI,CAACza,aAAa,CACtC,GAAI0F,KAAAA,CAAO,CACT+U,aAAAA,CAAgB1hD,IAAK0B,CAAAA,OAAO,CAACggD,aAAe,CAAA,CAAA,EAC9C,CACA,IAAI,CAACvN,QAAQ,CAAGuN,aAAgB,CAAA,CAAA,CAChC,GAAI/U,KAAO,CAAA,CACT,IAAI,CAACwH,QAAQ,EAAIxH,MACnB,CACF,CASF,CACA,MAAMgV,mBAAAA,CAgBJjzD,GAAIuB,CAAAA,IAAI,CAAE,CACR,OAAO,IAAI,CAACuD,GAAG,CAAC9E,GAAG,CAACuB,IAAAA,CACtB,CAjBAyE,WAAAA,CAAY6hC,cAAc,CAAEqrB,QAAQ,CAAC,CACnC,IAAI,CAACzN,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAC3gD,GAAG,CAAG,IAAIuB,GACf,CAAA,IAAI,CAACb,KAAK,CAAGqiC,eAAeriC,KAC5B,CAAA,IAAI,CAAC0tD,QAAQ,CAAGA,QAChB,CAAA,IAAIvnD,OAAS,CACb,CAAA,IAAI,IAAI1N,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIi1D,QAASh1D,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAMi4C,OAAAA,CAAUgd,QAAQ,CAACj1D,CAAAA,CAAE,CAC3Bi4C,OAAAA,CAAQ0c,eAAe,CAACjnD,MAAAA,CAAAA,CACxBA,MAASuqC,CAAAA,OAAAA,CAAQvqC,MAAM,CAAG,CAAA,CAAIuqC,OAAQuP,CAAAA,QAAQ,CAC9CvP,OAAAA,CAAQ3P,OAAO,CAAG,IAAI,CAAC/gC,KAAK,CAAC8iC,OAAO,CAAC4N,OAAQ30C,CAAAA,IAAI,CACjD,CAAA,IAAI,CAACuD,GAAG,CAAC0B,GAAG,CAAC0vC,OAAQ30C,CAAAA,IAAI,CAAE20C,OAAAA,EAC7B,CACA,IAAI,CAACuP,QAAQ,CAAGn0C,KAAK0B,OAAO,CAACrH,MAAQ,CAAA,EAAA,EACvC,CAIF,CAEA,MAAMwnD,SAAY,CAAA,gDAAA,CAClB,MAAMC,cAAiB,CAAA,mEAAA,CACvB,MAAMC,QAAAA,CAAW,MACjB,MAAMC,gBAAAA,CAAmB,mBACzB,CAAA,MAAMC,oBAAsB,IAAIviD,GAAAA,CAAI,CAClC,OAAA,CACA,SACA,CAAA,MAAA,CACD,CACD,CAAA,MAAMwiD,eAAiB,IAAIxiD,GAAAA,CAAI,CAC7B,iBAAA,CACA,oBACA,sBACD,CAAA,CAAA,CACD,MAAMyiD,iBAAAA,CAAoB,CACxBC,SAAWt0B,CAAAA,mBAAAA,CACXu0B,SAAWn0B,CAAAA,mBAAAA,CACXo0B,YAAat0B,qBACbu0B,CAAAA,iBAAAA,CAAmBv0B,qBACnBw0B,CAAAA,eAAAA,CAAiB10B,oBACjB20B,cAAgB10B,CAAAA,yBAAAA,CAChB20B,oBAAsB30B,CAAAA,yBAAAA,CACtB40B,WAAY70B,mBACZ80B,CAAAA,UAAAA,CAAY90B,mBACZ+0B,CAAAA,UAAAA,CAAY30B,oBACZ40B,UAAY50B,CAAAA,mBAAAA,CACZ60B,YAAc/0B,CAAAA,qBAAAA,CACdg1B,YAAch1B,CAAAA,qBAAAA,CACdi1B,eAAiBl1B,CAAAA,yBAAAA,CACjBm1B,gBAAiBn1B,yBACnB,CAAA,CACA,MAAMo1B,oBAAAA,CAAuB,CAC3B,CAACr1B,mBAAAA,EAAsB,WAAA,CACvB,CAACE,qBAAsB,EAAE,aACzB,CAAA,CAACE,qBAAsB,WAAA,CACvB,CAACH,yBAAAA,EAA4B,gBAC/B,CAAA,CACA,IAAIq1B,aAAAA,CAAgB,MAAMC,WACxB3uD,CAAAA,WAAAA,CAAY4uD,IAAI,CAAE/Y,MAAM,CAAC,CACvB,IAAI,CAAC+Y,IAAI,CAAGA,IACZ,CAAA,MAAMC,MAAQD,IAAKE,CAAAA,IAAI,EAAGl2D,CAAAA,KAAK,CAAC,KAChC,CAAA,CAAA,GAAI20D,mBAAoBhtD,CAAAA,GAAG,CAACsuD,KAAK,CAAC,CAAE,CAAA,CAAA,CAAG,CACrC,IAAI,CAACh9C,SAAS,CAAGg9C,MAAMjjB,KAAK,GAC9B,CACA,IAAI,CAACl8B,IAAI,CAAGm/C,KAAMjjB,CAAAA,KAAK,GACvB,GAAIgjB,IAAAA,CAAK/yD,QAAQ,CAAC,GAClB,CAAA,CAAA,CAAA,GAAI+yD,IAAK/yD,CAAAA,QAAQ,CAAC,GAAM,CAAA,CAAA,CACtB,MAAMkzD,IAAAA,CAAOF,MAAM/2D,IAAI,CAAC,GACxB,CAAA,CAAA,MAAM4B,MAAQ4zD,gBAAiB0B,CAAAA,IAAI,CAACD,IAAAA,CACpC,CAAA,IAAI,CAACxzD,IAAI,CAAG7B,KAAK,CAAC,CAAA,CAAE,CACpB,IAAI,CAACu1D,SAAS,CAAGltC,MAAAA,CAAOroB,KAAK,CAAC,CAAA,CAAE,CAChC,CAAA,GAAIw1D,KAAM,CAAA,IAAI,CAACD,SAAS,EAAG,CACzBpZ,MAAAA,CAAOsZ,MAAM,CAAG,KAClB,CACF,CAAA,KAAO,CACL,IAAI,CAAC5zD,IAAI,CAAGszD,KAAMjjB,CAAAA,KAAK,EACvB,CAAA,IAAI,CAACqjB,SAAS,CAAG,EACnB,CACA,IAAI,CAACG,SAAS,CAAG,IAAI,CAAC1/C,IAAI,CAACxO,OAAO,CAAC,SAAe,CAAA,GAAA,CAAC,CACnD,CAAA,IAAI,CAACmuD,WAAW,CAAG,IAAI,CAAC3/C,IAAI,CAACxO,OAAO,CAAC,UAAgB,CAAA,GAAA,CAAC,CACtD,CAAA,IAAI,CAACouD,aAAa,CAAG,IAAI,CAAC5/C,IAAI,CAACxO,OAAO,CAAC,UAAA,CAAA,GAAgB,CAAC,EAC1D,CACF,CACA,CAAA,MAAMquD,mBACJ,CAAA,OAAOC,IAAIttB,MAAM,CAAEutB,gBAAgB,CAAE5Z,MAAM,CAAE,CAC3C,MAAM6Z,WAAa,IAAIrvD,GAAAA,CACvB,MAAMsvD,eAAAA,CAAkBJ,oBAAoBK,OAAO,CAACH,gBAAiBI,CAAAA,OAAO,EAC5E,MAAMC,iBAAAA,CAAoBP,mBAAoBK,CAAAA,OAAO,CAACH,gBAAiBM,CAAAA,OAAO,CAC9E,CAAA,MAAMC,cAAgB,IAAI3vD,GAAAA,CAC1B,MAAM4vD,eAAAA,CAAkBV,oBAAoBW,iBAAiB,CAACP,eAAgBpM,CAAAA,UAAU,CAAEkM,gBAAiBlM,CAAAA,UAAU,CAAEyM,aAAAA,CAAeP,gBAAiBU,CAAAA,iBAAiB,CACxK,CAAA,MAAMC,oBAAsBb,mBAAoBc,CAAAA,eAAe,CAACV,eAAAA,CAAgBW,QAAQ,CAAEZ,UAAAA,CAAY,IACtG,CAAA,CAAA,MAAMa,sBAAwBhB,mBAAoBc,CAAAA,eAAe,CAACP,iBAAAA,CAAkBQ,QAAQ,CAAEZ,UAAAA,CAAY,KAC1G,CAAA,CAAA,MAAMc,SAAWjB,mBAAoBkB,CAAAA,WAAW,CAACX,iBAAAA,CAAkBY,IAAI,CACvE,CAAA,MAAMC,cAAiBhB,CAAAA,eAAAA,CAAgBzC,QAAQ,CAAC0D,MAAM,CAACd,iBAAAA,CAAkB5C,QAAQ,CACjF,CAAA,MAAMA,QAAWj2D,CAAAA,KAAAA,CAAM2qB,IAAI,CAAC,IAAI5W,GAAI2lD,CAAAA,cAAAA,CAAAA,CAAAA,CACpC,MAAME,cAAiB3D,CAAAA,QAAAA,CAASpuD,GAAG,CAAC,IAAQ,EAAA,IAAI4vD,aAAcE,CAAAA,IAAAA,CAAM/Y,SACpE,MAAMib,YAAAA,CAAevB,mBAAoBwB,CAAAA,eAAe,CAAC7uB,MAAQ2uB,CAAAA,cAAAA,CAAgBpB,gBAAiBU,CAAAA,iBAAiB,CAAEta,MACrH,CAAA,CAAA,MAAMmb,MAAS,CAAA,CAAC,EAAEf,eAAgB,CAAA;AAAE,EAAEG,mBAAoB,CAAA;AAAE,EAAEU,aAAavzD,IAAI,CAAC,CAAC,CACjF,MAAMsyD,QAAUF,eAAgB9hD,CAAAA,GAAG,CAACxW,OAAO,CAACg2D,QAAU2D,CAAAA,MAAAA,CAAAA,CACtD,MAAMC,MAAS,CAAA,CAAC,EAAEV,qBAAsB,CAAA;AAAE,EAAEC,QAAS,CAAA;AAAE,EAAEM,YAAAA,CAAavzD,IAAI,CAAC,CAAC,CAC5E,MAAMwyD,OAAAA,CAAUD,iBAAkBjiD,CAAAA,GAAG,CAACxW,OAAO,CAACg2D,QAAAA,CAAU4D,QACxD,OAAO,CACLpB,OAASA,CAAAA,OAAAA,CACTE,OAASA,CAAAA,OAAAA,CACTxM,UAAYyM,CAAAA,aAAAA,CACZkB,uBAAyBJ,CAAAA,YAAAA,CAAaI,uBAAuB,CAC7DC,mBAAqBL,CAAAA,YAAAA,CAAaK,mBAAmB,CAEzD,CACA,OAAOvB,OAAQ/hD,CAAAA,GAAG,CAAE,CAClB,MAAM01C,UAAAA,CAAa,EAAE,CACrB,MAAM+M,QAAAA,CAAW,EAAE,CACnB,MAAMI,IAAAA,CAAO,EAAE,CACf,MAAMxD,QAAAA,CAAW,EAAE,CACnB,IAAIkE,WAAAA,CAAc,CAAC,EAAE/D,QAAS,CAAA;AAAE,CAAC,CACjC,IAAI3zD,KAAAA,CACJ,MAAOA,CAAAA,KAAQyzD,CAAAA,SAAAA,CAAU6B,IAAI,CAACnhD,GAAG,CAAA,IAAO,KAAK,CAC3C,MAAMwjD,OAAU33D,CAAAA,KAAK,CAAC,CAAA,CAAE,CACxB,OAAO23D,OACL,EAAA,IAAK,WACL,CAAA,IAAK,SACL,CAAA,IAAK,UACL,IAAK,KAAA,CACH,CACEjE,cAAAA,CAAekE,SAAS,CAAG53D,MAAMoE,KAAK,CACtC,MAAMyzD,SAAAA,CAAYnE,cAAe4B,CAAAA,IAAI,CAACnhD,GACtC,CAAA,CAAA,GAAIwjD,OAAY,GAAA,WAAA,CAAa,CAC3B9N,UAAAA,CAAWxqD,IAAI,CAACw4D,SAAS,CAAC,CAAE,CAAA,EAC9B,CAAO,KAAA,GAAIF,UAAY,SAAW,CAAA,CAChCf,QAASv3D,CAAAA,IAAI,CAACw4D,SAAS,CAAC,CAAE,CAAA,EAC5B,CAAO,KAAA,GAAIF,OAAY,GAAA,KAAA,CAAO,CAC5BX,IAAK33D,CAAAA,IAAI,CAACw4D,SAAS,CAAC,CAAA,CAAE,EACxB,CAAA,KAAO,GAAIF,OAAAA,GAAY,SAAW,CAAA,CAChCnE,QAASn0D,CAAAA,IAAI,CAACw4D,SAAS,CAAC,CAAE,CAAA,EAC5B,CACA1jD,GAAAA,CAAM0hD,mBAAoBiC,CAAAA,MAAM,CAAC3jD,GAAAA,CAAKnU,KAAMoE,CAAAA,KAAK,CAAEsvD,cAAAA,CAAekE,SAAS,CAAEF,WAAAA,CAC7EjE,CAAAA,SAAAA,CAAUmE,SAAS,CAAG53D,KAAMoE,CAAAA,KAAK,CAAGszD,WAAAA,CAAYl5D,MAAM,CACtDk5D,WAAc,CAAA,EAAA,CACd,KACF,CACJ,CACF,CACA,OAAO,CACLvjD,GAAAA,CACA01C,WACA+M,QACAI,CAAAA,IAAAA,CACAxD,QACF,CACF,CACA,OAAO6D,gBAAgB7uB,MAAM,CAAEgrB,QAAQ,CAAEiD,iBAAiB,CAAEta,MAAM,CAAE,CAClE,MAAM4b,oBAAuB,CAAA,EAAE,CAC/B,MAAMC,wBAA0B,EAAE,CAClCxE,QAAStoD,CAAAA,OAAO,CAAEsrC,OAChB,EAAA,CAAA,GAAIA,OAAQkf,CAAAA,SAAS,CAAE,CACrBqC,oBAAqB14D,CAAAA,IAAI,CAACm3C,OAC5B,EAAA,CAAA,KAAO,CACLwhB,uBAAAA,CAAwB34D,IAAI,CAACm3C,OAC/B,EAAA,CACF,CACA,CAAA,CAAA,MAAMyhB,YAAe,CAAA,EAAE,CACvBD,uBAAAA,CAAwB9sD,OAAO,CAAEsrC,OAC/B,EAAA,CAAA,GAAI,CAACigB,iBAAAA,CAAkByB,UAAU,CAAC1hB,OAAAA,CAAQ30C,IAAI,CAAA,CAAG,CAC/C,MAAMs2D,YAAc/zB,iBAAkB58B,CAAAA,OAAO,CAACgvC,OAAAA,CAAQxgC,IAAI,CAAA,CAC1D,MAAMoiD,aAAAA,CAAgB,IAAIpF,aAAAA,CAAcxc,OAAQ30C,CAAAA,IAAI,CAAEs2D,WAAAA,CAAa3hB,QAAQ+e,SAAS,CAAA,CACpF0C,YAAa54D,CAAAA,IAAI,CAAC+4D,aAAAA,EACpB,CACF,CAAA,CAAA,CACA,GAAIH,YAAAA,CAAaz5D,MAAM,GAAK,CAAG,CAAA,CAC7By5D,aAAa54D,IAAI,CAAC,IAAI2zD,aAAAA,CAAchtB,mBAAqB5E,CAAAA,iBAAAA,CAAAA,EAC3D,CACA,MAAMo2B,uBAA0BS,CAAAA,YAAAA,CAAaz5D,MAAM,CAAG,IAAI+0D,mBAAAA,CAAoB/qB,OAAQyvB,YAAgB,CAAA,CAAA,IAAA,CACtG,MAAMnwB,cAAAA,CAAiB,EAAE,CACzBiwB,qBAAqB7sD,OAAO,CAAC,OAACsrC,EAAAA,CAC5B,GAAI,CAACigB,kBAAkB4B,UAAU,CAAC7hB,OAAQ30C,CAAAA,IAAI,CAAG,CAAA,CAC/C,IAAIslC,UAAAA,CAAapH,gBACjB,CAAA,GAAIyW,OAAQmf,CAAAA,WAAW,CAAE,CACvBxuB,WAAajH,eACf,CAAA,KAAO,GAAIsW,OAAAA,CAAQof,aAAa,CAAE,CAChCzuB,UAAAA,CAAahH,gBACf,CAAA,KAAO,CACL,GAAIqW,OAAQr+B,CAAAA,SAAS,GAAK,OAAS,CAAA,CACjCgvB,UAAanH,CAAAA,8BACf,CACA,GAAI8zB,cAAejtD,CAAAA,GAAG,CAAC2vC,OAAAA,CAAQxgC,IAAI,CAAA,CAAG,CACpCmxB,UAAAA,CAAalH,iBACf,CACF,CACA,MAAMmJ,SAAAA,CAAY2qB,iBAAiB,CAACvd,QAAQxgC,IAAI,CAAC,CACjD8xB,cAAAA,CAAezoC,IAAI,CAAC,IAAI4nC,iBAAkBuP,CAAAA,OAAAA,CAAQ30C,IAAI,CAAE+iC,kBAAqBC,CAAAA,oBAAAA,CAAsBuE,SAAWjC,CAAAA,UAAAA,CAAAA,EAChH,CACF,CAAA,CAAA,CACA,MAAMswB,mBAAAA,CAAsB,IAAIhwB,eAAAA,CAAgBe,OAAQV,cACxD,CAAA,CAAA,IAAIjkC,IAAO,CAAA,EAAA,CACX4yD,iBAAkB6B,CAAAA,cAAc,CAACptD,OAAO,CAAC,CAAC7G,MAAQk0D,CAAAA,cAAAA,GAAAA,CAChD,GAAIl0D,MAAAA,CAAQ,CACVR,IAAQgyD,EAAAA,mBAAAA,CAAoB2C,2BAA2B,CAACn0D,MAAQk0D,CAAAA,cAAAA,CAAgB,CAClF,EAAA,CACF,CACA,CAAA,CAAA,GAAIf,uBAAyB,CAAA,CAC3B3zD,IAAQgyD,EAAAA,mBAAAA,CAAoB2C,2BAA2B,CAAChB,uBAAAA,CAAyB3xB,iBAAmB,CAAA,CAAA,EACtG,CACA4wB,iBAAAA,CAAkBrM,gBAAgB,CAACl/C,OAAO,CAAC,CAAC7G,MAAQk0D,CAAAA,cAAAA,GAAAA,CAClD,GAAIl0D,MAAQ,CAAA,CACVR,IAAQgyD,EAAAA,mBAAAA,CAAoB4C,4BAA4B,CAACp0D,MAAQk0D,CAAAA,cAAAA,EACnE,CACF,CAAA,CAAA,CACA10D,IAAQgyD,EAAAA,mBAAAA,CAAoB4C,4BAA4B,CAAChB,oBAAqB7xB,cAC9E,CAAA,CAAA,OAAO,CACL/hC,IAAAA,CACA2zD,uBACAC,CAAAA,mBACF,CACF,CACA,OAAOd,eAAAA,CAAgB+B,YAAY,CAAE1C,UAAU,CAAE2C,QAAQ,CAAE,CACzD,IAAIC,KAAAA,CAAQ,EACZ,CAAA,MAAMllB,EAAKilB,CAAAA,QAAAA,CAAW,KAAQ,CAAA,IAAA,CAC9BD,YAAaxtD,CAAAA,OAAO,CAAC,CAACgqD,KAAM9wD,KAC1B,GAAA,CAAA,MAAM+wD,KAAQU,CAAAA,mBAAAA,CAAoBgD,YAAY,CAAC3D,MAC/C,MAAMl/C,IAAAA,CAAOm/C,KAAM/1D,CAAAA,KAAK,CAAC,CAAA,CAAG,CAAC,CAAGhB,CAAAA,CAAAA,IAAI,CAAC,GAAA,CAAA,CACrC,MAAMyD,IAAAA,CAAOszD,KAAK,CAACA,KAAM32D,CAAAA,MAAM,CAAG,CAAA,CAAE,CACpC,GAAIm6D,SAAU,CACZ3C,UAAAA,CAAWlvD,GAAG,CAACjF,IAAMuC,CAAAA,KAAAA,EACvB,CAAO,KAAA,CACLA,KAAQ4xD,CAAAA,UAAAA,CAAW11D,GAAG,CAACuB,IACzB,EAAA,CACA+2D,OAAS,CAAC,kBAAkB,EAAEx0D,KAAAA,CAAM,EAAE,EAAEsvC,EAAG,CAAA,CAAC,EAAE19B,IAAAA,CAAK,CAAC,EAAEnU,IAAK,CAAA;AAAG,EAChE,CACA,CAAA,CAAA,OAAO+2D,KACT,CACA,OAAO7B,WAAAA,CAAY+B,SAAS,CAAE,CAC5B,IAAIF,KAAQ,CAAA,EAAA,CACZE,UAAU5tD,OAAO,CAAC,CAACgqD,IAAAA,CAAM9wD,KACvBw0D,GAAAA,CAAAA,KAAAA,EAAS,CAAC,kBAAkB,EAAEx0D,KAAAA,CAAM,MAAM,EAAE8wD,IAAK,CAAA;AAAG,EAAC,CACvD,CAAA,CACA,OAAO0D,KACT,CACA,OAAOG,YAAAA,CAAa/iD,IAAI,CAAE,CACxB,MAAMgjD,QAAWhjD,CAAAA,IAAAA,CAAKxW,SAAS,CAACwW,IAAAA,CAAKxX,MAAM,CAAG,CAC9C,CAAA,CAAA,MAAMkV,GAAMe,CAAAA,QAAAA,CAASukD,SAAU,EAC/B,CAAA,CAAA,OAAOxD,KAAM9hD,CAAAA,GAAAA,CAAAA,CAAO,EAAIA,GAC1B,CACA,OAAO8iD,iBAAAA,CAAkByC,cAAc,CAAEC,0BAA0B,CAAE5C,aAAa,CAAEG,iBAAiB,CAAE,CACrG,IAAImC,KAAQ,CAAA,EAAA,CACZK,cAAe/tD,CAAAA,OAAO,CAAC,IAACgqD,EAAAA,CACtB,MAAMC,KAAAA,CAAQU,oBAAoBgD,YAAY,CAAC3D,IAC/C,CAAA,CAAA,IAAIl/C,IAAOm/C,CAAAA,KAAK,CAAC,CAAA,CAAE,CACnB,IAAItzD,IAAAA,CAAOszD,KAAK,CAAC,EAAE,CACnB,GAAI+D,0BAA2BtuD,CAAAA,cAAc,CAAC/I,IAAO,CAAA,CAAA,CACnD,MAAMu2C,QAAAA,CAAW8gB,0BAA0B,CAACr3D,IAAK,CAAA,CACjD,MAAM6G,QAAW89B,CAAAA,kBAAkB,CAAC4R,QAAAA,CAAS,CAC7Cke,aAAcxvD,CAAAA,GAAG,CAAC4B,QAAAA,CAAU7G,MAC5B,IAAIs3D,QAAAA,CACJ,MAAMjf,OAAAA,CAAUuc,iBAAkB2C,CAAAA,gBAAgB,CAAChhB,QAAAA,CAAAA,CACnD,GAAI8B,OAAS,CAAA,CACX,MAAMtB,QAAAA,CAAWsB,QAAQtB,QAAQ,CACjC,GAAIA,QAAAA,GAAa5X,cAAgB4X,QAAa3X,GAAAA,YAAAA,EAAgB,CAACiZ,OAAAA,CAAQv7C,SAAS,EAAI,CAACu7C,OAAAA,CAAQnB,KAAK,CAAE,CAClG,MAAMsgB,iBAAAA,CAAoBxD,oBAAoBkD,YAAY,CAAC/iD,IAC3D,CAAA,CAAA,MAAMsjD,QAAU,CAAC,SAAS,EAAEz3D,IAAAA,CAAK,CAAC,CAClCs3D,QAAW,CAAA,CAAC,GAAG,EAAEE,iBAAAA,CAAkB,CAAC,EAAEx3D,KAAK,MAAM,EAAEw3D,iBAAkB,CAAA,CAAC,EAAEC,OAAQ,CAAA;AAAI,CAAC,CACrFz3D,KAAOy3D,OACP,CAAA,MAAMC,aAAe3gB,QAAalY,GAAAA,SAAAA,EAAakY,QAAahY,GAAAA,UAAAA,EAAcgY,QAAa9X,GAAAA,UAAAA,CACvF,GAAIu4B,iBAAsB,GAAA,CAAA,CAAG,CAC3BrjD,IAAOujD,CAAAA,YAAAA,CAAe,MAAQ,OAChC,CAAA,KAAO,CACLvjD,IAAAA,CAAOujD,YAAe,CAAA,CAAC,IAAI,EAAEF,iBAAAA,CAAkB,CAAC,CAAG,CAAC,IAAI,EAAEA,iBAAAA,CAAkB,EAC9E,CACF,CACF,CACAT,KAAS,EAAA,CAAC,kBAAkB,EAAElwD,QAAAA,CAAS,KAAK,EAAEsN,IAAAA,CAAK,CAAC,EAAEnU,IAAK,CAAA;AAAG,CAAC,CAC/D,GAAIs3D,QAAAA,CAAU,CACZP,KAAAA,EAASO,SACX,CACF,CACF,CACA,CAAA,CAAA,OAAOP,KACT,CACA,OAAOC,aAAa3D,IAAI,CAAE,CACxBA,IAAOA,CAAAA,IAAAA,CAAKv3D,OAAO,CAAC,OAAQ,GAAKy3D,CAAAA,CAAAA,IAAI,EACrC,CAAA,OAAOF,KAAKh2D,KAAK,CAAC,GACpB,CAAA,CACA,OAAO44D,MAAO3jD,CAAAA,GAAG,CAAE6b,KAAK,CAAE/rB,GAAG,CAAEyzD,WAAW,CAAE,CAC1C,OAAOvjD,GAAI3U,CAAAA,SAAS,CAAC,CAAA,CAAGwwB,OAAS0nC,WAAcvjD,CAAAA,GAAAA,CAAI3U,SAAS,CAACyE,IAC/D,CACA,OAAOu0D,4BAA4Bn0D,MAAM,CAAEghD,SAAS,CAAEmU,SAAS,CAAE,CAC/D,MAAM33D,IAAOikC,CAAAA,cAAc,CAACuf,SAAAA,CAAU,CACtC,IAAIxhD,IAAAA,CAAO,CAAC,aAAa,EAAEwhD,SAAU,CAAA,YAAY,EAAEmU,SAAU,CAAA,qBAAqB,EAAE33D,IAAK,CAAA;AAAI,CAAC,CAC9FwC,MAAOmvD,CAAAA,QAAQ,CAACtoD,OAAO,CAAC,OAACsrC,EAAAA,CACvB,MAAMijB,UAAAA,CAAar1B,iBAAiB,CAACoS,OAAAA,CAAQxgC,IAAI,CAAC,CAClDnS,MAAQ,CAAC,IAAI,EAAE41D,UAAAA,CAAW,CAAC,EAAEjjB,OAAAA,CAAQ4c,SAAS,CAAC,EAAE5c,QAAQ+H,KAAK,CAAG,CAAC,CAAC,EAAE/H,OAAQ+H,CAAAA,KAAK,CAAC,CAAC,CAAC,CAAG,EAAG,CAAA;AAAG,EAAC,CACjG,CAAA,CACA,OAAO,CAAC,EAAE16C,IAAK,CAAA;AAAI,CAAC,CAEtB,OAAO40D,6BAA6BnR,eAAe,CAAEjC,SAAS,CAAE,CAC9D,IAAIxhD,IAAAA,CAAO,GACXyjD,eAAgBxf,CAAAA,cAAc,CAAC58B,OAAO,CAAC,MACrC,EAAA,CAAA,IAAIwuD,WAAc3E,CAAAA,oBAAoB,CAAC1wD,MAAO6iC,CAAAA,gBAAgB,CAAC,CAC/D,MAAM1pC,QAAUk8D,WAAgB,GAAA,gBAAA,CAChC,MAAMC,gBAAAA,CAAmBt1D,OAAO8iC,UAAU,GAAKhH,gBAAkB,GAAM97B,CAAAA,MAAAA,CAAO8iC,UAAU,GAAKjH,cAAAA,CAAiB,GAAM,CAAA,EAAA,CACpHw5B,YAAc,CAAC,EAAEC,iBAAiB,EAAED,WAAAA,CAAY,CAAC,CACjD,IAAIE,WAAc,CAAA,EAAA,CAClB,IAAIC,SAAY,CAAA,EAAA,CAChB,GAAIr8D,OAAS,CAAA,CACXo8D,YAAc,UACdC,CAAAA,SAAAA,CAAY,CAAC,QAAQ,EAAEx1D,MAAOxC,CAAAA,IAAI,CAAC,CAAC,EAAE83D,iBAAiB,eAAe,EAAEt1D,MAAOxC,CAAAA,IAAI,CAAC,EAAE+3D,WAAAA,CAAY,EAAE,EAAEv1D,MAAAA,CAAOxC,IAAI,CAAC;AAAW,EAC/H,CACAgC,IAAQ,EAAA,CAAC,aAAa,EAAEwhD,SAAAA,CAAU,YAAY,EAAEhhD,MAAAA,CAAOuiC,IAAI,CAAC,UAAU,EAAE8yB,WAAY,CAAA,CAAC,EAAEr1D,MAAOxC,CAAAA,IAAI,CAAC,EAAE+3D,WAAY,CAAA;AAAG,CAAC,CACrH,GAAIv1D,MAAO+iC,CAAAA,UAAU,CAAE,CACrBvjC,IAAAA,EAAQ,CAAC,aAAa,EAAEwhD,UAAU,YAAY,EAAEhhD,OAAOuiC,IAAI,CAAG,EAAE,kBAAkB,EAAEviC,MAAOxC,CAAAA,IAAI,CAAC;AAAW,EAAC,CAE9GgC,IAAQg2D,EAAAA,UACV,CACA,CAAA,CAAA,OAAOh2D,IACT,CACF,CAEA,MAAMi2D,SAAY,CAAA,4CAAA,CAClB,MAAMC,YAAe,CAAA,uDAAA,CACrB,MAAMC,gBAAAA,CAAmB,0MACzB,CAAA,MAAMC,OAAU,CAAA,0CAAA,CAChB,MAAMC,MAAS,CAAA,KAAA,CACf,MAAMC,cAAAA,CAAiB,2DACvB,CAAA,MAAMC,eAAkB,CAAA,CACtB,aAAc,CACZ3S,aAAAA,CAAehoB,mBACf46B,CAAAA,cAAAA,CAAgBt6B,gBAClB,CAAA,CACA,YAAc,CAAA,CACZ0nB,cAAe/nB,mBACf26B,CAAAA,cAAAA,CAAgBt6B,gBAClB,CAAA,CACA,kBAAoB,CAAA,CAClB0nB,aAAe9nB,CAAAA,yBAAAA,CACf06B,eAAgBt6B,gBAClB,CAAA,CACA,YAAc,CAAA,CACZ0nB,aAAe3nB,CAAAA,mBAAAA,CACfu6B,cAAgBt6B,CAAAA,gBAClB,EACA,cAAgB,CAAA,CACd0nB,aAAe7nB,CAAAA,qBAAAA,CACfy6B,cAAgBt6B,CAAAA,gBAClB,CACA,CAAA,oBAAA,CAAsB,CACpB0nB,aAAe5nB,CAAAA,2BAAAA,CACfw6B,cAAgBt6B,CAAAA,gBAClB,CACA,CAAA,yBAAA,CAA2B,CACzB0nB,aAAAA,CAAe/nB,mBACf26B,CAAAA,cAAAA,CAAgBt6B,gBAClB,CAAA,CACA,kBAAoB,CAAA,CAClB0nB,aAAe/nB,CAAAA,mBAAAA,CACf26B,eAAgBp6B,gBAClB,CAAA,CACA,wBAA0B,CAAA,CACxBwnB,aAAe9nB,CAAAA,yBAAAA,CACf06B,cAAgBp6B,CAAAA,gBAClB,EACA,oBAAsB,CAAA,CACpBwnB,aAAe7nB,CAAAA,qBAAAA,CACfy6B,cAAgBp6B,CAAAA,gBAClB,CACA,CAAA,0BAAA,CAA4B,CAC1BwnB,aAAe5nB,CAAAA,2BAAAA,CACfw6B,cAAgBp6B,CAAAA,gBAClB,CACA,CAAA,kBAAA,CAAoB,CAClBwnB,aAAAA,CAAe/nB,oBACf26B,cAAgBr6B,CAAAA,6BAClB,CACF,CAAA,CACA,MAAMs6B,cAAAA,CAAiB,CAACC,QAAAA,CAAUC,iBAChC,MAAMC,QAAAA,CAAWL,eAAe,CAACG,QAAS,CAAA,CAC1C,IAAIG,eAAAA,CAAkBD,SAASJ,cAAc,CAC7C,GAAII,QAAAA,CAASJ,cAAc,GAAKt6B,gBAAoBw6B,EAAAA,QAAAA,GAAa,0BAA2B,CAC1F,OAAOC,aACL,EAAA,IAAK,KACHE,CAAAA,eAAAA,CAAkBv6B,eAClB,CAAA,MACG,IAAA,KAAA,CACHu6B,eAAkBx6B,CAAAA,cAAAA,CAClB,MACF,IAAK,KACHw6B,CAAAA,eAAAA,CAAkB36B,iBAClB,MACF,IAAK,KACH26B,CAAAA,eAAAA,CAAkB16B,6BAClB,CAAA,KACJ,CACF,CACA,OAAO,CACLynB,aAAAA,CAAegT,QAAShT,CAAAA,aAAa,CACrCtgB,UAAAA,CAAYuzB,eACd,CACF,EACA,MAAMC,yBAAAA,CAA4B,CAAClT,aAAAA,CAAetgB,UAChD,GAAA,CAAA,GAAIA,UAAelH,GAAAA,gBAAAA,CAAkB,CACnC,OAAOwnB,aAAAA,EACL,KAAK/nB,mBAAAA,CACH,OAAO,kBACT,CAAKC,KAAAA,yBAAAA,CACH,OAAO,wBACT,CAAA,KAAKC,qBACH,CAAA,OAAO,oBACT,CAAA,KAAKC,2BACH,CAAA,OAAO,0BACX,CACF,CACA,IAAI+6B,cAAAA,CACJ,OAAOnT,aAAAA,EACL,KAAKhoB,mBAAAA,CACHm7B,eAAiB,YACjB,CAAA,MACGl7B,KAAAA,mBAAAA,CACHk7B,cAAiB,CAAA,YAAA,CACjB,MACF,KAAKj7B,yBACHi7B,CAAAA,cAAAA,CAAiB,kBACjB,CAAA,MACG96B,KAAAA,mBAAAA,CACH86B,cAAiB,CAAA,YAAA,CACjB,MACGh7B,KAAAA,qBAAAA,CACHg7B,cAAiB,CAAA,cAAA,CACjB,MACF,KAAK/6B,2BACH+6B,CAAAA,cAAAA,CAAiB,qBACjB,KACJ,CACA,IAAIC,gBAAAA,CACJ,OAAO1zB,UAAAA,EACL,KAAKpH,gBAAAA,CACL,KAAKC,6BACH66B,CAAAA,gBAAAA,CAAmB,KACnB,CAAA,MACG16B,KAAAA,eAAAA,CACH06B,gBAAmB,CAAA,KAAA,CACnB,MACG36B,KAAAA,cAAAA,CACH26B,gBAAmB,CAAA,KAAA,CACnB,KACJ,CACA,OAAO,CAAC,EAAED,cAAe,CAAA,CAAC,EAAEC,gBAAAA,CAAiB,CAAC,CAAC,CACjD,CACA,MAAMC,iBAAoB,CAAA,CACxB,KAAO,CAAA,YAAA,CACP,KAAO,CAAA,YAAA,CACP,KAAO,CAAA,YAAA,CACP,QAAS,cACT,CAAA,OAAA,CAAS,cACT,CAAA,OAAA,CAAS,cACX,CAAA,CACA,MAAMjC,YAAAA,CAAe,IAAC3D,EAAAA,CACpBA,IAAOA,CAAAA,IAAAA,CAAKv3D,OAAO,CAAC,MAAQ,CAAA,GAAA,CAAA,CAAKy3D,IAAI,EACrC,CAAA,OAAOF,IAAKh2D,CAAAA,KAAK,CAAC,QAAA,CACpB,CACA,CAAA,MAAM67D,oBAAsB,2BAC5B,CAAA,MAAM9F,WACJ3uD,CAAAA,WAAAA,CAAY4uD,IAAI,CAAE/Y,MAAM,CAAC,CACvB,IAAI,CAAC6e,MAAM,CAAG,IACd,CAAA,IAAI,CAACzF,SAAS,CAAG,CACjB,CAAA,IAAI,CAACL,IAAI,CAAGA,IAAAA,CACZ,MAAMj2D,KAAQ45D,CAAAA,YAAAA,CAAa3D,IAC3B,CAAA,CAAA,GAAIj2D,KAAMT,CAAAA,MAAM,CAAG,CAAA,CAAG,CACpB29C,MAAOsZ,CAAAA,MAAM,CAAG,IAAA,CAChB,MACF,CACA,IAAI,CAAC5zD,IAAI,CAAG5C,KAAK,CAAC,CAAA,CAAE,CACpB,IAAI,CAAC+W,IAAI,CAAG/W,KAAMG,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAGhB,IAAI,CAAC,KAChC,GAAI,IAAI,CAAC4X,IAAI,CAAC7T,QAAQ,CAAC,QAAA,CAAA,CAAW,CAChC,MAAMnC,KAAAA,CAAQ+6D,mBAAoBzF,CAAAA,IAAI,CAAC,IAAI,CAACt/C,IAAI,CAChD,CAAA,IAAI,CAACA,IAAI,CAAGhW,KAAK,CAAC,CAAA,CAAE,CAACo1D,IAAI,EACzB,CAAA,IAAI,CAACG,SAAS,CAAGltC,MAAAA,CAAOroB,KAAK,CAAC,CAAA,CAAE,CAChC,CAAA,GAAIw1D,KAAM,CAAA,IAAI,CAACD,SAAS,EAAG,CACzBpZ,MAAAA,CAAOsZ,MAAM,CAAG,KAClB,CACF,CACF,CACF,CACA,MAAMwF,aAAAA,CAAgB,sDACtB,CAAA,MAAMC,qBAAwB,CAAA,uGAAA,CAC9B,MAAMC,oBAAAA,CAAuB,sEAC7B,CAAA,MAAMC,sBAAyB,CAAA,kDAAA,CAC/B,MAAMC,aAAAA,CAAgB,iEACtB,CAAA,MAAMC,aAwDJtnD,MAAOsS,CAAAA,KAAK,CAAE,CACZ,GAAI,IAAI,CAACzkB,IAAI,GAAKykB,KAAMzkB,CAAAA,IAAI,CAAE,OAAO,KACrC,CAAA,GAAI,IAAI,CAACmU,IAAI,GAAKsQ,KAAAA,CAAMtQ,IAAI,CAAE,OAAO,KAAA,CACrC,GAAI,IAAI,CAACulD,SAAS,GAAKj1C,KAAMi1C,CAAAA,SAAS,CAAE,OAAO,KAC/C,CAAA,GAAI,IAAI,CAAC7F,SAAS,GAAKpvC,KAAAA,CAAMovC,SAAS,CAAE,OAAO,KAAA,CAC/C,GAAI,IAAI,CAAC8F,gBAAgB,GAAKl1C,KAAMk1C,CAAAA,gBAAgB,CAAE,OAAO,MAC7D,GAAI,IAAI,CAACC,eAAe,GAAKn1C,KAAAA,CAAMm1C,eAAe,CAAE,OAAO,KAC3D,CAAA,GAAI,IAAI,CAACC,iBAAiB,GAAKp1C,KAAMo1C,CAAAA,iBAAiB,CAAE,OAAO,KAAA,CAC/D,GAAI,IAAI,CAAC9pB,aAAa,GAAKtrB,KAAAA,CAAMsrB,aAAa,CAAE,OAAO,KACvD,CAAA,GAAI,IAAI,CAAC1K,gBAAgB,GAAK5gB,MAAM4gB,gBAAgB,CAAE,OAAO,KAAA,CAC7D,GAAI,IAAI,CAACC,UAAU,GAAK7gB,KAAM6gB,CAAAA,UAAU,CAAE,OAAO,KACjD,CAAA,GAAI,IAAI,CAACuyB,WAAW,GAAKpzC,KAAAA,CAAMozC,WAAW,CAAE,OAAO,KAAA,CACnD,GAAI,IAAI,CAACr1D,MAAM,GAAKiiB,KAAMjiB,CAAAA,MAAM,CAAE,OAAO,KACzC,CAAA,GAAI,IAAI,CAACyjD,MAAM,GAAKxhC,KAAAA,CAAMwhC,MAAM,CAAE,OAAO,KAAA,CACzC,GAAI,IAAI,CAAC6T,UAAU,GAAKr1C,KAAAA,CAAMq1C,UAAU,CAAE,OAAO,KACjD,CAAA,GAAI,IAAI,CAACC,WAAW,GAAKt1C,KAAMs1C,CAAAA,WAAW,CAAE,OAAO,KAAA,CACnD,OAAO,IACT,CAxEAt1D,WAAAA,CAAY4uD,IAAI,CAAE/Y,MAAM,CAAC,CACvB,IAAI,CAAC0f,YAAY,CAAG3G,IACpB,CAAA,IAAI,CAACA,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACqG,SAAS,CAAG,KACjB,CAAA,IAAI,CAAC7F,SAAS,CAAG,KACjB,CAAA,IAAI,CAAC8F,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACC,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAAC1lD,IAAI,CAAG,EACZ,CAAA,IAAI,CAAC8lD,eAAe,CAAG,EAAE,CACzB,MAAMC,YAAe,CAAA,IAAI,CAAC7G,IAAI,CAACl1D,KAAK,CAACi7D,aACrC,CAAA,CAAA,GAAIc,YAAc,CAAA,CAChB,IAAI,CAACl6D,IAAI,CAAGk6D,YAAY,CAAC,CAAA,CAAE,CAC3B,IAAI,CAAC/lD,IAAI,CAAG+lD,YAAY,CAAC,CAAA,CAAE,CAC3B,IAAI,CAACnqB,aAAa,CAAGmqB,YAAY,CAAC,CAAA,CAAE,CACpC,IAAI,CAACR,SAAS,CAAG,IAAA,CACjB,IAAI,CAACO,eAAe,CAACz8D,IAAI,CAAA,GAAI08D,cAC7B,MAAMvgC,IAAAA,CAAO8+B,cAAe,CAAA,IAAI,CAACtkD,IAAI,CAAE,IAAI,CAAC47B,aAAa,CACzD,CAAA,IAAI,CAAC1K,gBAAgB,CAAG1L,KAAKisB,aAC7B,CAAA,IAAI,CAACtgB,UAAU,CAAG3L,IAAAA,CAAK2L,WAAU,CAEnC,MAAM60B,mBAAAA,CAAsB,IAAI,CAAC9G,IAAI,CAACl1D,KAAK,CAACk7D,qBAAAA,CAAAA,CAC5C,GAAIc,mBAAAA,CAAqB,CACvB,IAAI,CAACR,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAAC35D,IAAI,CAAGm6D,mBAAmB,CAAC,EAAE,CAClC,IAAI,CAACtC,WAAW,CAAGsC,mBAAmB,CAAC,EAAE,CACzC,IAAI,CAAC33D,MAAM,CAAG23D,mBAAmB,CAAC,EAAE,CACpC,IAAI,CAAClU,MAAM,CAAGkU,mBAAmB,CAAC,EAAE,CACpC,IAAI,CAACF,eAAe,CAACz8D,IAAI,CAAI28D,GAAAA,mBAAAA,EAC/B,CACA,MAAMC,kBAAAA,CAAqB,IAAI,CAAC/G,IAAI,CAACl1D,KAAK,CAACm7D,sBAC3C,GAAIc,kBAAAA,CAAoB,CACtB,IAAI,CAACR,eAAe,CAAG,IACvB,CAAA,IAAI,CAACE,UAAU,CAAGM,kBAAkB,CAAC,CAAE,CAAA,EAAI,MAC3C,CAAA,IAAI,CAACp6D,IAAI,CAAGo6D,kBAAkB,CAAC,CAAA,CAAE,CACjC,IAAI,CAACjmD,IAAI,CAAGimD,kBAAkB,CAAC,CAAA,CAAE,CACjC,IAAI,CAACH,eAAe,CAACz8D,IAAI,CAAA,GAAI48D,kBAC/B,EAAA,CACA,MAAMC,oBAAuB,CAAA,IAAI,CAAChH,IAAI,CAACl1D,KAAK,CAACo7D,sBAAAA,CAAAA,CAC7C,GAAIc,oBAAAA,CAAsB,CACxB,IAAI,CAACr6D,IAAI,CAAGq6D,oBAAoB,CAAC,CAAE,CACnC,CAAA,IAAI,CAACR,iBAAiB,CAAG,IAAA,CACzB,IAAI,CAACI,eAAe,CAACz8D,IAAI,CAAI48D,GAAAA,kBAAAA,EAC/B,CACA,MAAME,aAAe,IAAI,CAACjH,IAAI,CAACl1D,KAAK,CAACq7D,aACrC,CAAA,CAAA,GAAIc,aAAc,CAChB,IAAI,CAACt6D,IAAI,CAAGs6D,YAAY,CAAC,CAAA,CAAE,CAC3B,IAAI,CAACP,WAAW,CAAGO,YAAY,CAAC,CAAA,CAAE,CAClC,IAAI,CAACzG,SAAS,CAAG,IAAA,CACjB,IAAI,CAACoG,eAAe,CAACz8D,IAAI,CAAI88D,GAAAA,YAAAA,EAC/B,CACA,GAAI,IAAI,CAACL,eAAe,CAACt9D,MAAM,GAAK,CAAG,CAAA,CACrC29C,MAAOsZ,CAAAA,MAAM,CAAG,KAClB,CACF,CAmBF,CACA,MAAM2G,yBAAAA,CACJ,OAAOtG,GAAAA,CAAIttB,MAAM,CAAEutB,gBAAgB,CAAE5Z,MAAM,CAAE,CAC3C,MAAM6Z,UAAAA,CAAa,IAAIrvD,GACvB,CAAA,MAAMsvD,eAAkBmG,CAAAA,yBAAAA,CAA0BlG,OAAO,CAACH,gBAAiBI,CAAAA,OAAO,EAClF,MAAMC,iBAAAA,CAAoBgG,yBAA0BlG,CAAAA,OAAO,CAACH,gBAAAA,CAAiBM,OAAO,CAAA,CACpF,MAAMC,aAAgB,CAAA,IAAI3vD,GAC1B,CAAA,MAAM4vD,eAAkB6F,CAAAA,yBAAAA,CAA0B5F,iBAAiB,CAACP,gBAAgBpM,UAAU,CAAEkM,gBAAiBlM,CAAAA,UAAU,CAAEyM,aAAAA,CAAeP,gBAAiBU,CAAAA,iBAAiB,CAAEta,MAChL,CAAA,CAAA,MAAMua,mBAAsB0F,CAAAA,yBAAAA,CAA0BzF,eAAe,CAACV,eAAgBW,CAAAA,QAAQ,CAAEZ,UAAAA,CAAY,IAC5G,CAAA,CAAA,MAAMa,qBAAwBuF,CAAAA,yBAAAA,CAA0BzF,eAAe,CAACP,kBAAkBQ,QAAQ,CAAEZ,UAAY,CAAA,KAAA,CAAA,CAChH,MAAMiB,cAAAA,CAAiBhB,eAAgBzC,CAAAA,QAAQ,CAAC0D,MAAM,CAACd,iBAAkB5C,CAAAA,QAAQ,CACjF,CAAA,MAAMA,QAAWj2D,CAAAA,KAAAA,CAAM2qB,IAAI,CAAC,IAAI5W,GAAI2lD,CAAAA,cAAAA,CAAAA,CAAAA,CACpC,MAAME,cAAAA,CAAiB3D,QAASpuD,CAAAA,GAAG,CAAC,IAAC8vD,EAAO,IAAID,WAAAA,CAAYC,IAAM/Y,CAAAA,MAAAA,CAAAA,CAAAA,CAClE,MAAMib,YAAAA,CAAegF,0BAA0B/E,eAAe,CAAC7uB,MAAQ2uB,CAAAA,cAAAA,CAAgBpB,gBAAiBU,CAAAA,iBAAiB,CAAEta,MAAAA,CAC3H8Z,CAAAA,eAAgB9hD,CAAAA,GAAG,CAAGioD,yBAAAA,CAA0BC,mBAAmB,CAACpG,eAAgB9hD,CAAAA,GAAG,CAAEgjD,cACzFf,CAAAA,CAAAA,iBAAkBjiD,CAAAA,GAAG,CAAGioD,yBAAAA,CAA0BC,mBAAmB,CAACjG,kBAAkBjiD,GAAG,CAAEgjD,cAC7F,CAAA,CAAA,MAAMmF,eAAkBF,CAAAA,yBAAAA,CAA0BG,cAAc,CAACtG,gBAAgBuG,SAAS,CAAEpG,iBAAkBoG,CAAAA,SAAS,CAAErgB,MAAAA,CAAAA,CACzH,MAAMsgB,aAAAA,CAAgBL,0BAA0BM,gBAAgB,CAACl0B,MAAQ8zB,CAAAA,eAAAA,CAAiBvG,gBAAiBU,CAAAA,iBAAiB,CAAEta,MAAAA,CAAAA,CAC9H,MAAMwgB,OAAUP,CAAAA,yBAAAA,CAA0BQ,4BAA4B,CAACxG,iBAAkBjiD,CAAAA,GAAG,CAAEq0B,MAAAA,CAAOuZ,mBAAmB,CACxHkU,CAAAA,eAAgB9hD,CAAAA,GAAG,CAAGioD,yBAAAA,CAA0BS,UAAU,CAAC5G,gBAAgB9hD,GAAG,CAAEgoC,MAChFia,CAAAA,CAAAA,iBAAkBjiD,CAAAA,GAAG,CAAGioD,yBAAAA,CAA0BS,UAAU,CAACzG,iBAAAA,CAAkBjiD,GAAG,CAAEgoC,MACpF,CAAA,CAAA,MAAMmb,MAAS,CAAA,CAAC,EAAEf,eAAgB,CAAA;AAAE,EAAEG,mBAAoB,CAAA;AAAE,EAAEU,YAAAA,CAAavzD,IAAI,CAAC;AAAE,EAAE44D,aAAAA,CAAc54D,IAAI,CAAC;AAAE,CAAC,CAC1G,MAAMsyD,OAAUF,CAAAA,eAAAA,CAAgB9hD,GAAG,CAACxW,OAAO,CAACu8D,MAAAA,CAAQ5C,MACpD,CAAA,CAAA,MAAMC,MAAS,CAAA,CAAC,EAAEV,qBAAsB,CAAA;AAAE,EAAE8F,OAAQ,CAAA;AAAE,EAAEvF,YAAAA,CAAavzD,IAAI,CAAC;AAAE,EAAE44D,aAAAA,CAAc54D,IAAI,CAAC;AAAE,CAAC,CACpG,MAAMwyD,OAAAA,CAAUD,iBAAkBjiD,CAAAA,GAAG,CAACxW,OAAO,CAACu8D,MAAQ3C,CAAAA,MAAAA,CAAAA,CACtD,OAAO,CACLpB,QAASA,OACTE,CAAAA,OAAAA,CAASA,OACTxM,CAAAA,UAAAA,CAAYyM,aACZkB,CAAAA,uBAAAA,CAAyBJ,aAAaI,uBAAuB,CAC7DC,mBAAqBgF,CAAAA,aAAAA,CAAchF,mBACrC,CACF,CACA,OAAOvB,OAAQ/hD,CAAAA,GAAG,CAAE,CAClB,MAAM01C,UAAa,CAAA,EAAE,CACrB,MAAM+M,QAAW,CAAA,EAAE,CACnB,MAAMpD,QAAAA,CAAW,EAAE,CACnB,MAAMgJ,SAAAA,CAAY,EAAE,CACpB,IAAI9E,WAAAA,CAAc,CAAC,EAAEwC,MAAO,CAAA;AAAE,CAAC,CAC/B,IAAIl6D,KACJ,CAAA,MAAM,CAACA,KAAAA,CAAQ85D,SAAUxE,CAAAA,IAAI,CAACnhD,GAAAA,CAAG,IAAO,IAAA,CAAK,CAC3C,MAAMwjD,OAAAA,CAAU33D,KAAK,CAAC,CAAE,CACxB+5D,CAAAA,YAAAA,CAAanC,SAAS,CAAG53D,KAAAA,CAAMoE,KAAK,CACpC,MAAMyzD,SAAAA,CAAYkC,YAAazE,CAAAA,IAAI,CAACnhD,GACpC,CAAA,CAAA,GAAIwjD,OAAY,GAAA,WAAA,CAAa,CAC3B9N,UAAAA,CAAWxqD,IAAI,CAACw4D,SAAS,CAAC,CAAA,CAAE,EAC9B,CAAA,KAAO,GAAIF,OAAAA,GAAY,SAAW,CAAA,CAChCf,SAASv3D,IAAI,CAACw4D,SAAS,CAAC,CAAE,CAAA,EAC5B,CAAO,KAAA,GAAIF,UAAY,SAAW,CAAA,CAChCnE,QAASn0D,CAAAA,IAAI,CAACw4D,SAAS,CAAC,CAAE,CAAA,EAC5B,CACA1jD,GAAMioD,CAAAA,yBAAAA,CAA0BtE,MAAM,CAAC3jD,GAAKnU,CAAAA,KAAAA,CAAMoE,KAAK,CAAE21D,aAAanC,SAAS,CAAEF,WACjFoC,CAAAA,CAAAA,SAAUlC,CAAAA,SAAS,CAAG53D,KAAAA,CAAMoE,KAAK,CAAGszD,WAAAA,CAAYl5D,MAAM,CACtDk5D,WAAc,CAAA,GAChB,CACA,MAAM,CAAC13D,KAAAA,CAAQg6D,gBAAiB1E,CAAAA,IAAI,CAACnhD,GAAG,CAAA,IAAO,IAAK,CAAA,CAClDqoD,UAAUn9D,IAAI,CAACW,KAAK,CAAC,CAAE,CAAA,CAAA,CACvBmU,GAAMioD,CAAAA,yBAAAA,CAA0BtE,MAAM,CAAC3jD,GAAAA,CAAKnU,KAAMoE,CAAAA,KAAK,CAAE41D,gBAAAA,CAAiBpC,SAAS,CAAEF,YACrFsC,CAAAA,gBAAAA,CAAiBpC,SAAS,CAAG53D,KAAMoE,CAAAA,KAAK,CAAGszD,WAAAA,CAAYl5D,MAAM,CAC7Dk5D,WAAAA,CAAc,GAChB,CACA,OAAO,CACLvjD,GAAAA,CACA01C,UACA+M,CAAAA,QAAAA,CACApD,SACAgJ,SACF,CACF,CACA,OAAOnF,eAAgB7uB,CAAAA,MAAM,CAAEgrB,QAAQ,CAAEiD,iBAAiB,CAAEta,MAAM,CAAE,CAClE,MAAM8b,YAAe,CAAA,EAAE,CACvBzE,QAAStoD,CAAAA,OAAO,CAAEsrC,OAChB,EAAA,CAAA,GAAI,CAACigB,iBAAAA,CAAkByB,UAAU,CAAC1hB,OAAAA,CAAQ30C,IAAI,CAAA,CAAG,CAC/C20C,OAAQwkB,CAAAA,MAAM,CAAG,YAAA,CACjB,MAAM7C,WAAc7zB,CAAAA,wBAAAA,CAAyBhkC,GAAG,CAACk2C,OAAQxgC,CAAAA,IAAI,CAC7D,CAAA,MAAMoiD,cAAgB,IAAIpF,aAAAA,CAAcxc,OAAQ30C,CAAAA,IAAI,CAAEs2D,WAAAA,CAAa3hB,OAAQ+e,CAAAA,SAAS,EACpF0C,YAAa54D,CAAAA,IAAI,CAAC+4D,aAAAA,EACpB,CAAO,KAAA,CACL5hB,OAAQwkB,CAAAA,MAAM,CAAG,UACnB,CACF,CACA,CAAA,CAAA,GAAI/C,aAAaz5D,MAAM,GAAK,CAAG,CAAA,CAC7By5D,aAAa54D,IAAI,CAAC,IAAI2zD,aAAAA,CAAchtB,mBAAqB5E,CAAAA,iBAAAA,CAAAA,EAC3D,CACA,MAAMo2B,wBAA0B,IAAIjE,mBAAAA,CAAoB/qB,MAAQyvB,CAAAA,YAAAA,CAAAA,CAChE,IAAIp0D,IAAAA,CAAO,EACX4yD,CAAAA,iBAAAA,CAAkB6B,cAAc,CAACptD,OAAO,CAAC,CAAC7G,MAAQk0D,CAAAA,cAAAA,GAAAA,CAChD,GAAIl0D,MAAAA,CAAQ,CACVR,IAAQu4D,EAAAA,yBAAAA,CAA0B5D,2BAA2B,CAACn0D,OAAQk0D,cAAgB,CAAA,CAAA,EACxF,CACF,CAAA,CAAA,CACA,GAAIf,uBAAyB,CAAA,CAC3B3zD,IAAQu4D,EAAAA,yBAAAA,CAA0B5D,2BAA2B,CAAChB,uBAAyB3xB,CAAAA,iBAAAA,CAAmB,GAC5G,CACA,OAAO,CACLhiC,IAAAA,CACA2zD,uBACF,CACF,CACA,OAAO6E,oBAAoBltB,MAAM,CAAEqkB,QAAQ,CAAE,CAC3CA,QAAAA,CAAStoD,OAAO,CAAC,OACf,EAAA,CAAA,MAAM4xD,OAAU,CAAA,CAAC,QAAQ,EAAEtmB,OAAAA,CAAQ30C,IAAI,CAAC,CAAC,CACzC,MAAMk7D,OAAU,CAAA,CAAC,EAAEvmB,OAAAA,CAAQwkB,MAAM,CAAC,CAAC,EAAExkB,OAAAA,CAAQ30C,IAAI,CAAC,CAAC,CACnD,MAAMm7D,KAAAA,CAAQ,IAAIC,MAAO,CAAA,CAAC,GAAG,EAAEH,OAAQ,CAAA,GAAG,CAAC,CAAE,KAC7C3tB,MAASA,CAAAA,MAAAA,CAAOxxC,OAAO,CAACq/D,KAAOD,CAAAA,OAAAA,EACjC,CACA,CAAA,CAAA,OAAO5tB,MACT,CACA,OAAOotB,cAAe5P,CAAAA,MAAM,CAAEt8C,QAAQ,CAAE8rC,MAAM,CAAE,CAC9C,MAAMqgB,SAAY7P,CAAAA,MAAAA,CAAOvnD,GAAG,CAAC,IAAC8vD,EAAO,IAAIoG,YAAapG,CAAAA,IAAAA,CAAM/Y,MAC5D,CAAA,CAAA,CAAA,MAAM+gB,iBAAoB7sD,CAAAA,QAAAA,CAASjL,GAAG,CAAC,IAAQ,EAAA,IAAIk2D,YAAapG,CAAAA,IAAAA,CAAM/Y,SACtE+gB,iBAAkBhyD,CAAAA,OAAO,CAAEiyD,mBACzB,MAAMC,QAAAA,CAAWZ,SAAUa,CAAAA,IAAI,CAAEvX,QAAWA,EAAAA,QAAAA,CAASjkD,IAAI,GAAKs7D,gBAAAA,CAAiBt7D,IAAI,CAAA,CACnF,GAAIu7D,QAAAA,CAAU,CACZ,GAAI,CAACA,QAASppD,CAAAA,MAAM,CAACmpD,gBAAAA,CAAAA,CAAmB,CACtChhB,MAAAA,CAAOsZ,MAAM,CAAG,KAClB,CACF,CAAA,KAAO,CACL+G,SAAAA,CAAUn9D,IAAI,CAAC89D,gBAAAA,EACjB,CACF,CAAA,CAAA,CACA,OAAOX,SACT,CACA,OAAOE,gBAAAA,CAAiBl0B,MAAM,CAAEg0B,SAAS,CAAE/F,iBAAiB,CAAEta,MAAM,CAAE,CACpE,MAAMrU,cAAAA,CAAiB,EAAE,CACzB,IAAI,IAAIvpC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIi+D,SAAUh+D,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC,MAAMunD,QAAAA,CAAW0W,SAAS,CAACj+D,EAAE,CAC7B,GAAIunD,QAASyV,CAAAA,SAAS,CAAE,CACtB,MAAMpV,OAAUqW,CAAAA,SAAS,CAACj+D,CAAAA,CAAI,CAAE,CAAA,CAChC,MAAM6oC,UAAa+e,CAAAA,OAAAA,EAASuP,SAC5B,CAAA,MAAMvuB,UAAa2e,CAAAA,QAAAA,CAAS3e,UAAU,CACtC,MAAMiC,SAAY0c,CAAAA,QAAAA,CAAS5e,gBAAgB,CAC3CY,cAAezoC,CAAAA,IAAI,CAAC,IAAI4nC,kBAAkB6e,QAASjkD,CAAAA,IAAI,CAAE+iC,kBAAAA,CAAqBC,qBAAsBuE,SAAWjC,CAAAA,UAAAA,CAAYC,UAAYA,CAAAA,UAAAA,CAAa+e,QAAQtkD,IAAI,CAAG,IACnK,CAAA,CAAA,CAAA,GAAIulC,UAAY7oC,CAAAA,CAAAA,GAClB,CACA,GAAIunD,SAAS2V,eAAe,CAAE,CAC5B,MAAMz0B,QAAW8e,CAAAA,QAAAA,CAAS6V,UAAU,GAAK,aACzC,MAAMpU,YAAAA,CAAe,IAAIxgB,uBAAAA,CAAwB+e,QAASjkD,CAAAA,IAAI,CAAE+iC,kBAAAA,CAAqBC,qBAAsBmC,QAC3GugB,CAAAA,CAAAA,YAAaljD,CAAAA,MAAM,CAAGyhD,QAAS9vC,CAAAA,IAAI,CACnC8xB,cAAAA,CAAezoC,IAAI,CAACkoD,YAAAA,EACtB,CACF,CACA,MAAMkQ,mBAAAA,CAAsB,IAAIhwB,eAAAA,CAAgBe,OAAQV,cACxD,CAAA,CAAA,IAAIjkC,IAAO,CAAA,EAAA,CACX4yD,iBAAkBrM,CAAAA,gBAAgB,CAACl/C,OAAO,CAAC,CAAC7G,MAAAA,CAAQk0D,cAClD,GAAA,CAAA,GAAIl0D,MAAQ,CAAA,CACVR,IAAQu4D,EAAAA,yBAAAA,CAA0BkB,2BAA2B,CAACj5D,MAAAA,CAAQk0D,cAAgB,CAAA,CAAA,EACxF,CACF,CACA10D,CAAAA,CAAAA,IAAAA,EAAQu4D,yBAA0BkB,CAAAA,2BAA2B,CAAC7F,mBAAqB7xB,CAAAA,cAAAA,CAAgB,CACnG,CAAA,CAAA,OAAO,CACL/hC,IAAAA,CACA4zD,mBACF,CACF,CACA,OAAOe,2BAAAA,CAA4B+E,QAAQ,CAAElY,SAAS,CAAEmU,SAAS,CAAE,CACjE,MAAM33D,IAAAA,CAAOikC,cAAc,CAACuf,SAAU,CAAA,CACtC,MAAMmY,UAAAA,CAAa,CAAC,UAAU,EAAE37D,IAAK,CAAA,CAAC,CACtC,IAAIgC,IAAAA,CAAO,CAAC,OAAO,EAAE25D,UAAW,CAAA;AAAI,CAAC,CACrCD,SAAS/J,QAAQ,CAACtoD,OAAO,CAAEsrC,OACzB,EAAA,CAAA,IAAIijB,UAAap1B,CAAAA,qBAAqB,CAACmS,OAAQxgC,CAAAA,IAAI,CAAC,CAAC,CAAE,CAAA,CACvD,GAAIwgC,OAAQ+H,CAAAA,KAAK,CAAG,CAAA,CAAG,CACrB,GAAIuc,kBAAkBlwD,cAAc,CAAC6uD,YAAa,CAChDA,UAAAA,CAAaqB,iBAAiB,CAACrB,UAAAA,EAAW,CAE5C51D,IAAQ,EAAA,CAAC,IAAI,EAAE2yC,OAAAA,CAAQ4c,SAAS,CAAC,QAAQ,EAAEqG,WAAW,EAAE,EAAEjjB,OAAQ+H,CAAAA,KAAK,CAAC;AAAI,EAAC,CAC/E,KAAO,CACL16C,IAAAA,EAAQ,CAAC,IAAI,EAAE2yC,OAAAA,CAAQ4c,SAAS,CAAC,EAAE,EAAEqG,UAAW,CAAA;AAAG,EAAC,CAExD,CAAA,CAAA,CACA51D,MAAQ,MACRA,CAAAA,IAAAA,EAAQ,CAAC,OAAO,EAAEwhD,SAAU,CAAA,WAAW,EAAEmU,SAAU,CAAA,kBAAkB,EAAE33D,IAAK,CAAA,GAAG,EAAE27D,UAAW,CAAA;;AAAK,CAAC,CAClG,OAAO35D,IACT,CACA,OAAOy5D,2BAA4Bj5D,CAAAA,MAAM,CAAEghD,SAAS,CAAEoY,cAAc,CAAE,CACpE,IAAI55D,IAAO,CAAA,EAAA,CACX,IAAI21D,SAAAA,CAAYiE,eAChBp5D,MAAOyjC,CAAAA,cAAc,CAAC58B,OAAO,CAAE7G,SAC7B,MAAMq5D,eAAAA,CAAkB/C,0BAA0Bt2D,MAAO6iC,CAAAA,gBAAgB,CAAE7iC,MAAO8iC,CAAAA,UAAU,CAC5FtjC,CAAAA,IAAAA,EAAQ,CAAC,OAAO,EAAEwhD,SAAU,CAAA,WAAW,EAAEmU,SAAAA,CAAU,MAAM,EAAEn1D,OAAOxC,IAAI,CAAC,EAAE,EAAE67D,eAAgB,CAAA;AAAG,CAAC,CAC/FlE,SACA,EAAA,CAAA,GAAIn1D,MAAO+iC,CAAAA,UAAU,CAAE,CACrB,MAAMC,WAAAA,CAAchjC,MAAO8iC,CAAAA,UAAU,GAAKlH,gBAAmB,CAAA,oBAAA,CAAuB,SACpFp8B,CAAAA,IAAAA,EAAQ,CAAC,OAAO,EAAEwhD,SAAAA,CAAU,WAAW,EAAEmU,SAAAA,CAAU,MAAM,EAAEn1D,MAAOgjC,CAAAA,WAAW,CAAC,EAAE,EAAEA,WAAY,CAAA;AAAG,CAAC,CAClGmyB,SAAAA,GACF,CACF,CAAA,CAAA,CACAn1D,OAAOikC,oBAAoB,CAACp9B,OAAO,CAAC,MAClC,EAAA,CAAA,MAAM48C,OAASzjD,MAAO2iC,CAAAA,QAAQ,CAAG,MAAS,CAAA,YAAA,CAC1CnjC,IAAQ,EAAA,CAAC,OAAO,EAAEwhD,SAAAA,CAAU,WAAW,EAAEmU,SAAAA,CAAU,eAAe,EAAE1R,MAAAA,CAAO,EAAE,EAAEzjD,OAAOxC,IAAI,CAAC,GAAG,EAAEwC,MAAAA,CAAOA,MAAM,CAAC;AAAG,CAAC,CAClHm1D,SACF,GAAA,CAAA,CAAA,CACA,OAAO31D,IACT,CACA,OAAO8yD,eAAAA,CAAgB+B,YAAY,CAAE1C,UAAU,CAAE2C,QAAQ,CAAE,CACzD,IAAIC,KAAAA,CAAQ,EACZ,CAAA,IAAI+E,aAAgB,CAAA,EAAA,CACpB,IAAIC,SAAY,CAAA,EAAA,CAChBlF,YAAaxtD,CAAAA,OAAO,CAAC,CAACgqD,IAAM9wD,CAAAA,KAAAA,GAAAA,CAC1B,MAAMpE,KAAQk1D,CAAAA,IAAAA,CAAKl1D,KAAK,CAACi6D,OACzB,CAAA,CAAA,GAAIj6D,KAAO,CAAA,CACT,MAAM6B,IAAO7B,CAAAA,KAAK,CAAC,CAAA,CAAE,CACrB,GAAI24D,QAAU,CAAA,CACZ3C,WAAWlvD,GAAG,CAACjF,IAAMuC,CAAAA,KAAAA,EACvB,CAAO,KAAA,CACLA,KAAQ4xD,CAAAA,UAAAA,CAAW11D,GAAG,CAACuB,IAAAA,EACzB,CACA+2D,KAAAA,EAAS,CAAC,cAAc,EAAEx0D,KAAM,CAAA,EAAE,EAAE8wD,IAAK,CAAA;AAAG,CAAC,CAC7C,GAAI,CAACyD,QAAAA,CAAU,CACbgF,aAAiB,EAAA,CAAC,iBAAiB,EAAEzI,IAAK,CAAA;AAAG,CAAC,CAC9C0I,WAAa,CAAC,IAAI,EAAE/7D,IAAK,CAAA,SAAS,EAAEA,IAAK,CAAA;AAAG,EAC9C,CACF,CACF,CAAA,CAAA,CACA,GAAI82D,QAAU,CAAA,CACZC,KAAS,EAAA,6CACX,CAAO,KAAA,CACLA,OAAS,4CACTA,CAAAA,KAAAA,EAAS,mDACTA,KAAS,EAAA,iDACX,CACA,MAAMiF,eAAAA,CAAkBlF,QAAW,CAAA,EAAA,CAAK,CAAC;;;;AAIvC,MAAA,EAAEgF,aAAc,CAAA;;;;AAId,QAAA,EAAEC,SAAU,CAAA;;;;;AAKhB,IAAA,CAAC,CACD,MAAMJ,UAAAA,CAAa7E,SAAW,cAAiB,CAAA,eAAA,CAC/C,OAAO,CAAC;AACC,aAAA,EAAE6E,UAAW,CAAA;AAClB,QAAA,EAAE5E,KAAM,CAAA;;AAEV,MAAA,EAAEiF,eAAgB,CAAA;AACpB,IAAA,CAAC,CAEH,OAAOjB,4BAAAA,CAA6BzoD,GAAG,CAAE2pD,gBAAgB,CAAE,CACzD,IAAIC,UAAAA,CAAa,2BACjB,CAAA,IAAI,IAAIx/D,CAAI,CAAA,CAAA,CAAGA,CAAIu/D,CAAAA,gBAAAA,CAAkBv/D,CAAI,EAAA,CAAA,CACvCw/D,UAAc,EAAA,CAAC,cAAc,EAAEx/D,CAAAA,CAAE,OAAO,EAAEA,EAAI,CAAIA,CAAAA,CAAAA,CAAI,EAAG,CAAA,YAAY,EAAEA,CAAE,CAAA;AAAG,EAAC,CAE/E,MAAMy/D,eAAiB7pD,GAAItG,CAAAA,MAAM,CAAC,iBAAuB,CAAA,GAAA,CAAC,EAC1D,GAAImwD,cAAAA,CAAgB,CAClBD,UAAc,EAAA,6CAChB,CACA,OAAO,CAAC,EAAEA,UAAW,CAAA;AAAI,CAAC,CAE5B,OAAOE,oBAAoBjoD,IAAI,CAAEkoD,MAAM,CAAE,CACvC,MAAMC,cAAiB,CAAA,CACrB,MAAO,KACP,CAAA,WAAA,CAAa,QACb,WAAa,CAAA,OAAA,CACb,YAAa,OACf,CAAA,CACA,MAAMC,SAAAA,CAAYD,cAAc,CAACnoD,IAAAA,CAAK,EAAIA,IAC1C,CAAA,MAAMqoD,gBAAkB,CACtB,KAAA,CAAOH,OAAS,KAAQ,CAAA,KAAA,CACxB,QAASA,MAAS,CAAA,OAAA,CAAU,QAC5B,OAASA,CAAAA,MAAAA,CAAS,QAAU,OAC5B,CAAA,OAAA,CAASA,MAAS,CAAA,OAAA,CAAU,OAC9B,CACA,CAAA,OAAOG,eAAe,CAACD,SAAAA,CAAU,EAAI,IACvC,CACA,OAAO5H,iBAAkByC,CAAAA,cAAc,CAAEC,0BAA6B,CAAA,EAAE,CAAE5C,aAAa,CAAEG,iBAAiB,CAAEta,MAAM,CAAE,CAClH,IAAImiB,eAAAA,CAAkB,GACtB,IAAIX,aAAAA,CAAgB,GACpB,IAAIC,SAAAA,CAAY,GAChB3E,cAAe/tD,CAAAA,OAAO,CAAC,IAACgqD,EAAAA,CACtB,MAAMC,KAAQ0D,CAAAA,YAAAA,CAAa3D,MAC3B,MAAMrzD,IAAAA,CAAOszD,KAAK,CAAC,EAAE,CACrB,IAAIn/C,KAAOm/C,KAAK,CAAC,EAAE,CACnB,MAAMoJ,aAAevoD,IACrB,CAAA,GAAIkjD,2BAA2BtuD,cAAc,CAAC/I,MAAO,CACnD,MAAMu2C,SAAW8gB,0BAA0B,CAACr3D,IAAK,CAAA,CACjD,MAAM6G,QAAW89B,CAAAA,kBAAkB,CAAC4R,QAAS,CAAA,CAC7Cke,cAAcxvD,GAAG,CAAC4B,SAAU7G,IAC5B,CAAA,CAAA,MAAMq4C,QAAUuc,iBAAkB2C,CAAAA,gBAAgB,CAAChhB,QACnD,CAAA,CAAA,GAAI8B,QAAS,CACX,MAAMtB,QAAWsB,CAAAA,OAAAA,CAAQtB,QAAQ,CACjC,GAAIA,WAAa5X,YAAgB4X,EAAAA,QAAAA,GAAa3X,cAAgB,CAACiZ,OAAAA,CAAQv7C,SAAS,EAAI,CAACu7C,QAAQnB,KAAK,CAAE,CAClG,MAAMwgB,YAAAA,CAAe3gB,WAAalY,SAAakY,EAAAA,QAAAA,GAAahY,UAAcgY,EAAAA,QAAAA,GAAa9X,WACvF9qB,IAAOomD,CAAAA,yBAAAA,CAA0B6B,mBAAmB,CAACjoD,IAAAA,CAAMujD,cAC7D,CACF,CACA+E,iBAAmB,CAAC,cAAc,EAAE51D,QAAS,CAAA,EAAE,EAAE7G,IAAK,CAAA,EAAE,EAAEmU,IAAK,CAAA;AAAG,CAAC,CACnE2nD,aAAAA,EAAiB,CAAC,iBAAiB,EAAEzI,IAAK,CAAA;AAAG,CAAC,CAC9C0I,SAAa,EAAA,CAAC,IAAI,EAAE/7D,IAAK,CAAA,GAAG,EAAE08D,YAAAA,CAAa,OAAO,EAAE18D,IAAK,CAAA;AAAI,EAAC,CAElE,CACA,CAAA,CAAA,OAAO,CAAC;;AAEJ,QAAA,EAAEy8D,eAAgB,CAAA;;;;;AAKpB,MAAA,EAAEX,aAAc,CAAA;;;;;AAKd,QAAA,EAAEC,SAAU,CAAA;;;;AAIhB,IAAA,CAAC,CAEH,OAAOf,UAAAA,CAAW1oD,GAAG,CAAEgoC,MAAM,CAAE,CAC7B,MAAMn8C,KAAQmU,CAAAA,GAAAA,CAAInU,KAAK,CAACm6D,cACxB,CAAA,CAAA,GAAI,CAACn6D,KAAAA,EAAS,CAACA,KAAK,CAAC,CAAA,CAAE,CAAE,CACvB,OAAOmU,GACT,CACA,MAAMqqD,UAAYx+D,KAAK,CAAC,CAAE,CAAA,CAC1B,MAAMy+D,UAAAA,CAAaz+D,KAAMoE,CAAAA,KAAK,CAAGpE,KAAK,CAAC,CAAA,CAAE,CAACxB,MAAM,CAAG,CAAA,CACnD,MAAMkgE,SAAAA,CAAYvqD,GAAI/U,CAAAA,KAAK,CAAC,CAAA,CAAGq/D,UAAa,CAAA,CAAA,CAAA,CAC5C,MAAMx6D,GAAAA,CAAMkQ,GAAI/U,CAAAA,KAAK,CAACq/D,UAAAA,CAAa,CACnC,CAAA,CAAA,MAAME,aAAe,CAAC;AAAoB,kBAAA,EAAEH,UAAU,EAAE,CAAC,CACzD,OAAOE,SAAAA,CAAYC,aAAe16D,GACpC,CACA,OAAO6zD,MAAO3jD,CAAAA,GAAG,CAAE6b,KAAK,CAAE/rB,GAAG,CAAEyzD,WAAW,CAAE,CAC1C,OAAOvjD,IAAI3U,SAAS,CAAC,EAAGwwB,KAAS0nC,CAAAA,CAAAA,WAAAA,CAAcvjD,IAAI3U,SAAS,CAACyE,IAC/D,CACF,CAEA,MAAM26D,YAkCJl3B,CAAAA,OAAAA,CAAQyU,MAAM,CAAE,CACd,IAAI,CAAC0iB,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,aAAa,CAAG,KACvB,CACAC,kBAAmBl7D,CAAAA,IAAI,CAAEm7D,UAAU,CAAE,CACnC,MAAMx2B,MAAAA,CAAS,IAAI,CAAC2T,MAAM,CAAC3T,MAAM,CACjC,MAAM+c,IAAO/c,CAAAA,MAAAA,CAAO+c,IAAI,CACxB,MAAM0Z,aAAe1Z,IAAKwZ,CAAAA,kBAAkB,CAAC,CAC3Cl7D,IAAAA,CAAMA,IACR,CACA,CAAA,CAAA,OAAOo7D,YACT,CACArS,qBAAAA,EAAwB,CACtB,OAAO,IAAI,CAACmS,kBAAkB,CAAC,IAAI,CAACF,WAAW,CAAE,QAAA,CACnD,CACA1R,uBAA0B,EAAA,CACxB,OAAO,IAAI,CAAC4R,kBAAkB,CAAC,IAAI,CAACD,aAAa,CAAE,WACrD,CACAnR,sBAAAA,EAAyB,CACvB,OAAO,IAAI,CAACoR,kBAAkB,CAAC,IAAI,CAACG,YAAY,CAAE,SACpD,CAAA,CACAC,aAAc,CACZ,MAAMhjB,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAMijB,UAAYvJ,mBAAoBC,CAAAA,GAAG,CAAC3Z,MAAO3T,CAAAA,MAAM,CAAE2T,MAAOkjB,CAAAA,UAAU,CAAEljB,MAC5E,CAAA,CAAA,IAAI,CAAC0iB,WAAW,CAAG,IAAI,CAACS,SAAS,CAACF,SAAAA,CAAUjJ,OAAO,CAAE,QAAA,CAAUha,OAAOkjB,UAAU,CAAClJ,OAAO,CACxF,CAAA,IAAI,CAAC2I,aAAa,CAAG,IAAI,CAACQ,SAAS,CAACF,SAAAA,CAAU/I,OAAO,CAAE,UAAA,CAAYla,OAAOkjB,UAAU,CAAChJ,OAAO,CAC5F,CAAA,GAAI,EAAE,IAAI,CAACwI,WAAW,EAAI,IAAI,CAACC,aAAa,CAAD,CAAI,CAC7C3iB,MAAOsZ,CAAAA,MAAM,CAAG,KAClB,CAAA,KAAO,CACLtZ,MAAOojB,CAAAA,KAAK,CAAG,KACjB,CACApjB,OAAOqb,uBAAuB,CAAG4H,UAAU5H,uBAC3Crb,CAAAA,MAAOsb,CAAAA,mBAAmB,CAAG2H,SAAU3H,CAAAA,mBAAmB,CAC1Dtb,MAAAA,CAAO0N,UAAU,CAAGuV,SAAAA,CAAUvV,WAAU,CAE1C2V,aAAc,CACZ,MAAMrjB,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAMijB,UAAYhD,yBAA0BtG,CAAAA,GAAG,CAAC3Z,MAAAA,CAAO3T,MAAM,CAAE2T,MAAAA,CAAOkjB,UAAU,CAAEljB,MAAAA,CAClF,CAAA,IAAI,CAAC0iB,WAAW,CAAGO,SAAAA,CAAUjJ,OAAO,CACpC,IAAI,CAAC2I,aAAa,CAAGM,SAAU/I,CAAAA,OAAO,CACtCla,MAAAA,CAAOqb,uBAAuB,CAAG4H,SAAAA,CAAU5H,uBAAuB,CAClErb,OAAOsb,mBAAmB,CAAG2H,UAAU3H,mBACvCtb,CAAAA,MAAO0N,CAAAA,UAAU,CAAGuV,SAAUvV,CAAAA,WAAU,CAE1CyV,SAAAA,CAAUnrD,GAAG,CAAE6qD,UAAU,CAAES,WAAW,CAAE,CACtC,MAAMj3B,OAAS,IAAI,CAAC2T,MAAM,CAAC3T,MAAM,CACjC,GAAI,CAACA,OAAOk3B,OAAO,EAAI,CAACl3B,MAAOm3B,CAAAA,KAAK,CAAE,CACpC30D,OAAAA,CAAQC,KAAK,CAAC,CAAC,yBAAyB,EAAE,IAAI,CAACkxC,MAAM,CAACyjB,KAAK,CAAC,gIAAgI,CAAC,CAAE,CAC7LzjB,OAAQ,IAAI,CAACA,MAAM,CACrB,CAAA,CACA,OAAO,IACT,CACA,GAAI,CACF,MAAM0jB,MAAQr3B,MAAOk3B,CAAAA,OAAO,CAACI,WAAW,CAAC3rD,IAAK6qD,UAC9C,CAAA,CAAA,MAAMe,KAAOv3B,MAAOm3B,CAAAA,KAAK,CAACK,iBAAiB,CAACH,OAC5C,OAAOE,IACT,CAAE,MAAO31D,GAAAA,CAAK,CACZY,OAAQC,CAAAA,KAAK,CAAC,CAAC,0BAA0B,EAAE+zD,UAAW,CAAA,SAAS,EAAE,IAAI,CAAC7iB,MAAM,CAACyjB,KAAK,CAAC,4BAA4B,EAAG,KAAK,CAAE,CAAA;AAAY,EAAA,EAAEx1D,IAAImH,KAAK,CAAC,CAAC,CAAC,CAAE,CACnJ6tD,SAAAA,CAAWjrD,GACX8rD,CAAAA,QAAAA,CAAUR,YACVtjB,MAAQ,CAAA,IAAI,CAACA,MAAM,CACnBlxC,KAAOb,CAAAA,GAAAA,CACPmH,KAAOnH,CAAAA,GAAAA,CAAImH,KAAK,CAClB,EACF,CACF,CACA,IAAI2uD,UAAa,EAAA,CACf,OAAO,IAAI,CAACrB,WACd,CACA,IAAIsB,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACrB,aAAa,CAE3B52B,WAAAA,EAAc,EACdwU,eAAelU,MAAM,CAAE2T,MAAM,CAAE,EA1G/B71C,WAAAA,CAAY61C,MAAM,CAAC,CACjB,IAAI,CAAC0iB,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,aAAa,CAAG,IACrB,CAAA,IAAI,CAACI,YAAY,CAAG,IACpB,CAAA,IAAI,CAACpS,gBAAgB,CAAG,MACxB,CAAA,IAAI,CAACM,kBAAkB,CAAG,MAC1B,CAAA,IAAI,CAACQ,iBAAiB,CAAG,MACzB,CAAA,IAAI,CAACzR,MAAM,CAAGA,MACd,CAAA,MAAMkjB,WAAaljB,MAAOkjB,CAAAA,UAAU,CACpC,GAAIA,WAAWe,cAAc,GAAK3/B,mBAAqB,CAAA,CACrD,GAAI4+B,UAAWgB,CAAAA,OAAO,CAAE,CACtB,IAAI,CAACnB,YAAY,CAAGG,UAAWgB,CAAAA,OAAO,EAAI,IAC1C,CAAA,IAAI,CAACC,2BAA2B,CAAGjB,UAAAA,CAAWiB,2BAC9C,CAAA,IAAI,CAACC,sBAAsB,CAAGlB,WAAWkB,uBAC3C,MAAO,CACL,IAAI,CAACzT,gBAAgB,CAAG,YACxB,CAAA,IAAI,CAACM,kBAAkB,CAAG,cAAA,CAC1B,GAAIiS,UAAW5I,CAAAA,iBAAiB,CAAE,CAChC,IAAI,CAAC+I,WAAW,GAClB,CAAO,KAAA,CACL,IAAI,CAACX,WAAW,CAAGQ,UAAAA,CAAWlJ,OAAO,EAAI,IACzC,CAAA,IAAI,CAAC2I,aAAa,CAAGO,UAAWhJ,CAAAA,OAAO,EAAI,IAC3Cla,CAAAA,OAAOqb,uBAAuB,CAAG6H,WAAW7H,uBAC5Crb,CAAAA,MAAAA,CAAOsb,mBAAmB,CAAG4H,UAAAA,CAAW5H,oBAC1C,CACF,CACAtb,MAAAA,CAAOojB,KAAK,CAAG,KACjB,CAAO,KAAA,CACL,GAAIF,UAAW5I,CAAAA,iBAAiB,CAAE,CAChC,IAAI,CAAC0I,WAAW,GAClB,CACF,CACF,CA2EF,CAEA,MAAMqB,eAAkB,CAAA,EAAE,CAC1BA,eAAe,CAAC/tC,cAAAA,CAAe,CAAG,QAClC+tC,CAAAA,eAAe,CAAC9tC,qBAAAA,CAAsB,CAAG,eACzC8tC,CAAAA,eAAe,CAAC7tC,uBAAwB,CAAA,CAAG,gBAC3C,MAAM8tC,cAAAA,CAAiB,EACvBA,CAAAA,cAAc,CAACjrC,eAAe,CAAG,CAC/BoZ,MAAO,SACP8xB,CAAAA,GAAAA,CAAK,SACP,CACAD,CAAAA,cAAc,CAAChrC,aAAc,CAAA,CAAG,CAC9BmZ,KAAO,CAAA,QAAA,CACP8xB,GAAK,CAAA,SACP,CACAD,CAAAA,cAAc,CAAC/qC,6BAA8B,CAAA,CAAG,CAC9CkZ,KAAO,CAAA,SAAA,CACP8xB,GAAK,CAAA,SACP,CACAD,CAAAA,cAAc,CAAC9qC,4BAAAA,CAA6B,CAAG,CAC7CiZ,KAAAA,CAAO,SACP8xB,CAAAA,GAAAA,CAAK,QACP,CACAD,CAAAA,cAAc,CAAC7qC,4BAAAA,CAA6B,CAAG,CAC7CgZ,KAAAA,CAAO,QACP8xB,CAAAA,GAAAA,CAAK,SACP,CACAD,CAAAA,cAAc,CAAC5qC,4BAA4B,CAAG,CAC5C+Y,KAAO,CAAA,QAAA,CACP8xB,IAAK,QACP,CAAA,CACA,MAAMC,QAAW,CAACC,YAClB,CAAA,MAAMC,aAOJnjE,CAAAA,MAAAA,CAAO8qC,MAAM,CAAE,CACb,MAAM6H,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,MAAMkV,KAAO/c,MAAO+c,CAAAA,IAAI,CACxB,MAAMlY,SAAAA,CAAYgD,QAAQhD,SAC1B,CAAA,IAAI,CAAC4M,IAAI,CAAG,CACVx2C,IAAAA,CAAM,CACJygB,KAAOmsB,CAAAA,OAAAA,CAAQnsB,KAAK,CACpBC,OAAQksB,OAAQlsB,CAAAA,MAAM,CACtB28C,kBAAAA,CAAoBzwB,QAAQrG,OAAO,CAAG,CAAIqG,CAAAA,OAAAA,CAAQzC,KAAK,CAAGyC,OAAAA,CAAQvC,WAAW,CAAG,CAClF,CACAzpC,CAAAA,MAAAA,CAAQ,IAAI,CAACA,MAAM,CACnB6sD,aAAAA,CAAe7jB,UACfijB,WAAa,CAAA,CAAA,CACblnB,UAAWiH,OAAQtC,CAAAA,MAAM,CAAG,IAAA,CAAO,KACnCiJ,KAAOuZ,CAAAA,eAAAA,CAAgBE,eAAe,CAAGF,gBAAgBlI,QAAQ,CAAGkI,eAAgBG,CAAAA,QAAQ,EAAIx1B,uBAAAA,CAAwBmV,QAAQhsC,MAAM,CAAA,CAAI,EAAIksD,eAAgBC,CAAAA,iBAAiB,CAAD,EAAMngB,OAAQ/C,CAAAA,OAAO,CAAGijB,eAAAA,CAAgBwQ,eAAe,CAAG,CAAA,CAC1O,CACA,CAAA,IAAI,CAACrR,UAAU,CAAGnK,IAAAA,CAAKoL,aAAa,CAAC,IAAI,CAAC1W,IAAI,EAC9C,IAAI+mB,SAAAA,CACJ,GAAI,IAAI,CAAC3wB,OAAO,CAAChsC,MAAM,GAAKszB,yBAA0B,CACpDqpC,SAAAA,CAAY,CACV38D,MAAQ,CAAA,aAAA,CACR6c,OAAQ,YACV,EACF,CACA,IAAI,CAAC7T,IAAI,CAAG,IAAI,CAACsiD,UAAU,CAACqR,SAAAA,EAC9B,CACAt5B,OAAAA,CAAQc,MAAM,CAAE,EAChB8C,eAAgBC,CAAAA,IAAI,CAAE,CACpB,IAAI,CAAC01B,QAAQ,CAACziE,MAAM,CAAG,EACzB,CACA0nD,QAAQ1d,MAAM,CAAE,CACd,IAAI,CAACoH,eAAe,CAACpH,OAAQ,IAAI,CAAC6H,OAAO,CACzC,CAAA,OAAO,IAAI,CAAChjC,IAAI,CAElBsiD,UAAWqR,CAAAA,SAAS,CAAE,CACpB,MAAMhxD,OAAUgxD,CAAAA,SAAAA,EAAa,EAC7B,CAAA,MAAME,aAAe,IAAI,CAACjnB,IAAI,CAC9B,MAAM5J,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,MAAM8wB,oBAAAA,CAAuB,KAC3B,GAAI9wB,OAAAA,CAAQrG,OAAO,CAAE,OAAO,MAC5B,CAAA,GAAIqG,QAAQtC,MAAM,CAAE,OAAO,IAC3B,CAAA,GAAIsC,OAAQzC,CAAAA,KAAK,CAAE,OAAO,UAAA,CAC1B,OAAO,IACT,EACA,MAAMqM,IAAAA,CAAO,CACX51C,MAAAA,CAAQ2L,QAAQ3L,MAAM,EAAI68D,aAAa78D,MAAM,CAC7C+kC,UAAWp5B,OAAQo5B,CAAAA,SAAS,EAAI+3B,oBAAAA,EAAAA,CAChCjgD,OAAQlR,OAAQkR,CAAAA,MAAM,EAAI,KAAA,CAC1BmwC,aAAcrhD,OAAQqhD,CAAAA,YAAY,EAAI,CAAA,CACtCH,cAAelhD,OAAQkhD,CAAAA,aAAa,EAAIgQ,YAAahQ,CAAAA,aAAa,CAClEC,cAAgBnhD,CAAAA,OAAAA,CAAQmhD,cAAc,EAAI,EAC1CC,eAAiBphD,CAAAA,OAAAA,CAAQohD,eAAe,EAAI8P,aAAaJ,kBAC3D,CACA,CAAA,MAAMzzD,KAAO,IAAI,CAACqiD,UAAU,CAACC,UAAU,CAAC1V,IACxC,CAAA,CAAA,OAAO5sC,IACT,CACA+4C,WAAW5d,MAAM,CAAErB,UAAU,CAAE,CAC7B,IAAIgf,OAAAA,CAAU,IAAI,CAAC8a,QAAQ,CAAC95B,UAAAA,CAAW,CACvC,GAAI,CAACgf,QAAS,CACZ,MAAM9V,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,MAAM4J,IAAAA,CAAO,CACXmnB,YAAcZ,CAAAA,eAAe,CAACnwB,OAAAA,CAAQ/D,QAAQ,CAAC,CAC/C+0B,aAAcb,eAAe,CAACnwB,QAAQ7D,QAAQ,CAAC,CAC/C80B,YAAAA,CAAcd,eAAe,CAACnwB,OAAAA,CAAQ3D,QAAQ,CAAC,CAEjD,CAAA,GAAI,CAACvF,UAAAA,EAAckJ,QAAQxD,aAAa,CAAE,CACxC1F,UAAalH,CAAAA,iBACf,CACA,GAAIkH,UAAAA,GAAelH,gBAAoBkH,EAAAA,UAAAA,GAAejH,gBAAkBiH,UAAehH,GAAAA,eAAAA,CAAiB,CACtG8Z,IAAAA,CAAKqS,OAAO,CAAG,MACfrS,CAAAA,IAAAA,CAAK7N,SAAS,CAAG,QACjB6N,CAAAA,IAAKhO,CAAAA,SAAS,CAAG,SACnB,CAAA,KAAO,GAAI9E,UAAAA,GAAenH,8BAA+B,CACvDia,IAAAA,CAAK7N,SAAS,CAAG,SACjB6N,CAAAA,IAAAA,CAAKhO,SAAS,CAAG,SACjBgO,CAAAA,IAAAA,CAAKsnB,YAAY,CAAG,UACtB,CAAO,KAAA,CACL,MAAMC,YAAAA,CAAe,CAACh5B,MAAOoT,CAAAA,sBAAsB,GAAKvL,QAAQhsC,MAAM,GAAKmzB,mBAAuB6Y,EAAAA,OAAAA,CAAQhsC,MAAM,GAAKizB,mBAAkB,EACvI,GAAIkqC,YAAAA,EAAgB,IAAI,CAACnxB,OAAO,CAAChsC,MAAM,GAAKszB,wBAA4ByD,EAAAA,oBAAAA,CAAqB,IAAI,CAACiV,OAAO,CAAChsC,MAAM,CAAG,CAAA,CACjH41C,KAAK7N,SAAS,CAAG,SACjB6N,CAAAA,IAAAA,CAAKhO,SAAS,CAAG,SACjBgO,CAAAA,IAAAA,CAAKsnB,YAAY,CAAG,UACtB,CAAO,KAAA,CACLtnB,KAAK7N,SAAS,CAAGq0B,cAAc,CAACpwB,QAAQjE,SAAS,CAAC,CAACwC,KACnDqL,CAAAA,IAAKhO,CAAAA,SAAS,CAAGw0B,cAAc,CAACpwB,OAAQpE,CAAAA,SAAS,CAAC,CAAC2C,KAAK,CACxDqL,IAAKsnB,CAAAA,YAAY,CAAGd,cAAc,CAACpwB,QAAQpE,SAAS,CAAC,CAACy0B,IACxD,CACF,CACA,MAAMe,SAAYxnB,CAAAA,IAAAA,CAAKhO,SAAS,GAAK,UAAYgO,IAAK7N,CAAAA,SAAS,GAAK,QAAA,EAAY6N,KAAKsnB,YAAY,GAAK,QACtGtnB,CAAAA,IAAAA,CAAKynB,aAAa,CAAGD,SAAAA,CAAY7vD,IAAKI,CAAAA,KAAK,CAAClU,IAAKmV,CAAAA,KAAK,CAACo9B,OAAAA,CAAQnD,WAAW,CAAG,CAAA,CAAA,CAAG1E,MAAOm5B,CAAAA,oBAAoB,EAAI,CAC/Gxb,CAAAA,OAAAA,CAAU3d,OAAO+c,IAAI,CAACqc,aAAa,CAAC3nB,IAAAA,CACpC,CAAA,IAAI,CAACgnB,QAAQ,CAAC95B,UAAW,CAAA,CAAGgf,QAC9B,CACA,OAAOA,OACT,CACAje,aAAc,EACd0H,gBAAgBpH,MAAM,CAAE6H,OAAO,CAAE,CAC/B,GAAIA,OAAAA,CAAQhC,YAAY,EAAIgC,OAAAA,CAAQjD,mBAAmB,CAAE,CACvD,IAAI,CAACy0B,UAAU,CAACr5B,OAChB6H,CAAAA,OAAAA,CAAQhC,YAAY,CAAG,KACvBgC,CAAAA,OAAQjD,CAAAA,mBAAmB,CAAG,MAChC,CACF,CACAy0B,UAAAA,CAAWr5B,MAAM,CAAE,CACjB,MAAM6H,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,GAAIA,QAAQ7F,OAAO,CAAE,CACnB,IAAIs3B,UAAAA,CAAa,KACjB,CAAA,IAAIC,gBAAkB,KACtB,CAAA,MAAMC,iBAAoB3xB,CAAAA,OAAAA,CAAQhD,SAAS,CAC3C,IAAI,IAAIhE,QAAAA,CAAW,EAAGA,QAAW24B,CAAAA,iBAAAA,CAAmB34B,WAAW,CAC7D,MAAM44B,UAAY5xB,OAAQ7F,CAAAA,OAAO,CAACnB,QAAAA,CAAS,CAC3C,GAAI44B,SAAAA,CAAW,CACb,GAAI5xB,QAAQrG,OAAO,CAAE,CACnB,IAAI,IAAI6E,IAAO,CAAA,CAAA,CAAGA,KAAO,CAAGA,CAAAA,IAAAA,EAAAA,CAAO,CACjC,MAAMqzB,UAAAA,CAAaD,SAAS,CAACpzB,KAAK,CAClC,GAAIqzB,UAAY,CAAA,CACd,GAAI,IAAI,CAACC,eAAe,CAACD,YAAa,CACpC,IAAI,CAACE,mBAAmB,CAAC55B,OAAQ05B,UAAY74B,CAAAA,QAAAA,CAAUwF,IACvDizB,CAAAA,CAAAA,UAAAA,CAAa,KACf,CAAO,KAAA,GAAI7yB,WAAYozB,CAAAA,MAAM,CAACH,UAAa,CAAA,CAAA,CACzC,IAAI,CAACI,oBAAoB,CAAC95B,MAAAA,CAAQ05B,WAAY74B,QAAUwF,CAAAA,IAAAA,CAAAA,CACxDizB,WAAa,KACf,CAAA,IAAA,CACF,CAAO,KAAA,CACLC,gBAAkB,KACpB,CACF,CACF,CAAA,KAAO,GAAI1xB,OAAQ1D,CAAAA,OAAO,CAAS,CAAA,KAAA,GAAI0D,QAAQzC,KAAK,CAAE,CACpD,GAAIyC,OAAAA,CAAQvC,WAAW,GAAKm0B,SAAAA,CAAUzjE,MAAM,CAAE,CAC5C,IAAI,IAAI4F,KAAQ,CAAA,CAAA,CAAGA,MAAQisC,OAAQxC,CAAAA,YAAY,CAAEzpC,KAAAA,EAAAA,CAAQ,CACvD,MAAMm+D,WAAAA,CAAcN,SAAS,CAAC79D,KAAAA,CAAM,CACpC,GAAI,IAAI,CAAC+9D,eAAe,CAACI,WAAc,CAAA,CAAA,CACrC,IAAI,CAACH,mBAAmB,CAAC55B,MAAAA,CAAQ+5B,WAAal5B,CAAAA,QAAAA,CAAUjlC,OACxD09D,UAAa,CAAA,KACf,MAAO,GAAI7yB,WAAAA,CAAYozB,MAAM,CAACE,WAAAA,CAAAA,CAAc,CAC1C,IAAI,CAACD,oBAAoB,CAAC95B,MAAQ+5B,CAAAA,WAAAA,CAAal5B,SAAUjlC,KACzD09D,CAAAA,CAAAA,UAAAA,CAAa,KACf,CAAA,IAAA,CACF,CACF,CAAO,KAAA,CACLC,gBAAkB,KACpB,CACF,MAAO,CACL,GAAI,IAAI,CAACI,eAAe,CAACF,SAAAA,CAAAA,CAAY,CACnC,IAAI,CAACG,mBAAmB,CAAC55B,MAAQy5B,CAAAA,SAAAA,CAAW54B,SAAU,CACtDy4B,CAAAA,CAAAA,UAAAA,CAAa,KACf,CAAO,KAAA,GAAI7yB,YAAYozB,MAAM,CAACJ,SAAY,CAAA,CAAA,CACxC,IAAI,CAACK,oBAAoB,CAAC95B,MAAAA,CAAQy5B,UAAW54B,QAAU,CAAA,CAAA,CAAA,CACvDy4B,UAAa,CAAA,KACf,MACF,CACF,CAAA,KAAO,CACLC,eAAkB,CAAA,KACpB,CACF,CACA,GAAID,UAAcC,EAAAA,eAAAA,EAAmB1xB,QAAQtG,OAAO,EAAI,CAAC7O,uBAAAA,CAAwBmV,QAAQhsC,MAAM,CAAA,EAAK,CAAC+2B,oBAAAA,CAAqBiV,QAAQhsC,MAAM,CAAA,CAAG,CACzImkC,MAAOg6B,CAAAA,cAAc,CAACC,QAAQ,CAAC,IAAI,EACrC,CACA,GAAIpyB,OAAAA,CAAQ9F,QAAQ,CAAE,CACpB8F,OAAQhG,CAAAA,sBAAsB,CAAC7B,MAAAA,CAAO8B,KAAK,CAAE,CAAC+F,QAAQ9F,QAAQ,EAChE,CACA8F,OAAQ9F,CAAAA,QAAQ,CAAG8F,OAAAA,CAAQ7C,OAAO,CAClC6C,OAAAA,CAAQhG,sBAAsB,CAAC7B,OAAO8B,KAAK,CAAE+F,OAAQ9F,CAAAA,QAAQ,EAC/D,CACF,CACA43B,gBAAgBO,KAAK,CAAE,CACrB,OAAO,OAAOrjB,WAAgB,GAAA,WAAA,EAAeqjB,iBAAiBrjB,WAAe,EAAA,OAAO/P,gBAAqB,GAAA,WAAA,EAAeozB,iBAAiBpzB,gBAAoB,EAAA,OAAOiQ,iBAAsB,GAAA,WAAA,EAAemjB,iBAAiBnjB,iBAAqB,EAAA,OAAOojB,kBAAoB,WAAeD,EAAAA,KAAAA,YAAiBC,eAC5S,CACAP,mBAAAA,CAAoB55B,MAAM,CAAEk6B,KAAK,CAAEr5B,QAAQ,CAAEjlC,KAAK,CAAE,CAClD,MAAM+P,GAAM,CAAA,CACVg7B,OAAQuzB,KACRz2C,CAAAA,MAAAA,CAAQ,CACN,CACA,CAAA,CAAA,CACD,CACDkiB,KAAO,CAAA,KACT,CACA,CAAA,MAAMnxB,IAAM,CACVqzB,OAAAA,CAAS,IAAI,CAACqf,UAAU,CACxBrmB,QAAAA,CAAUA,QACVpd,CAAAA,MAAAA,CAAQ,CACN,CACA,CAAA,CAAA,CACA7nB,MACD,CACD8c,MAAAA,CAAQ,KACV,CACA,CAAA,MAAM0hD,QAAW,CAAA,CACf1+C,MAAO,IAAI,CAAC+1B,IAAI,CAACx2C,IAAI,CAACygB,KAAK,CAC3BC,MAAAA,CAAQ,IAAI,CAAC81B,IAAI,CAACx2C,IAAI,CAAC0gB,MAAM,CAC7B28C,kBAAAA,CAAoB,CACtB,CAAA,CACAt4B,OAAOq6B,MAAM,EAAA,CACblC,QAAS+B,CAAAA,KAAAA,YAAiBnjB,mBAAqBmjB,KAAMI,CAAAA,UAAU,CAAC,IAAA,CAAA,CAAA,CAChEt6B,OAAO+c,IAAI,CAACkD,KAAK,CAACsa,0BAA0B,CAAC5uD,GAAK6I,CAAAA,GAAAA,CAAK4lD,QACzD,EAAA,CACAN,qBAAqB95B,MAAM,CAAEjwB,IAAI,CAAE8wB,QAAQ,CAAEjlC,KAAK,CAAE,CAClD,MAAMisC,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,MAAMkV,IAAO/c,CAAAA,MAAAA,CAAO+c,IAAI,CACxB,MAAMyd,IAAO,CAAA,CACX3yB,OAAS,CAAA,IAAI,CAACqf,UAAU,CACxBzjC,MAAQ,CAAA,CACN,EACA,CACA7nB,CAAAA,KAAAA,CACD,CACDilC,QAAUA,CAAAA,QACZ,EACA,MAAMnlB,KAAAA,CAAQglB,YAAaC,CAAAA,kBAAkB,CAACkH,OAAQnsB,CAAAA,KAAK,CAAEmlB,QAAAA,CAAAA,CAC7D,MAAMllB,MAAS+kB,CAAAA,YAAAA,CAAaC,kBAAkB,CAACkH,QAAQlsB,MAAM,CAAEklB,UAC/DH,YAAaM,CAAAA,gBAAgB,CAACtlB,KAAOC,CAAAA,MAAAA,CAAQ,CAAGksB,CAAAA,OAAAA,CAAQhsC,MAAM,CAC9D,CAAA,MAAMolC,UAAa7O,CAAAA,eAAAA,CAAgBt6B,GAAG,CAAC+vC,OAAAA,CAAQhsC,MAAM,CAAA,CACrD,IAAI4+D,UACJ,CAAA,IAAIx/D,KACJ,GAAIgmC,UAAAA,CAAWhmC,IAAI,CAAE,CACnBw/D,UAAa,CAAA,CACXh3D,OAAQ,CACRi3D,CAAAA,WAAAA,CAAaz5B,UAAWhmC,CAAAA,IAAI,CAAGygB,KAC/Bi/C,CAAAA,YAAAA,CAAch/C,MAChB,CAAA,CACA1gB,KAAO,CACLygB,KAAAA,CAAOA,KACPC,CAAAA,MAAAA,CAAQA,MACV,EACF,CAAA,KAAO,GAAIslB,UAAAA,CAAWzO,SAAS,CAAE,CAC/B,MAAMooC,QAAAA,CAAW,IACf,EAAA,CAAA,OAAOtlE,IAAKmQ,CAAAA,KAAK,CAAC,CAACxK,KAAO,CAAA,EAAK,EACjC,CACAw/D,CAAAA,UAAAA,CAAa,CACXh3D,MAAAA,CAAQ,EACRi3D,WAAaz5B,CAAAA,UAAAA,CAAWzO,SAAS,CAAGooC,SAASl/C,KAC7Ci/C,CAAAA,CAAAA,YAAAA,CAAcC,QAASj/C,CAAAA,MAAAA,CACzB,EACA1gB,IAAO,CAAA,CACLygB,MAAOpmB,IAAKoU,CAAAA,GAAG,CAAC,CAAGgS,CAAAA,KAAAA,CAAAA,CACnBC,MAAQrmB,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGiS,MACtB,CAAA,EACF,MACAqkB,MAAOq6B,CAAAA,MAAM,EACbtd,CAAAA,IAAAA,CAAKkD,KAAK,CAAC4a,YAAY,CAACL,IAAMzqD,CAAAA,IAAAA,CAAM0qD,WAAYx/D,IAClD,EAAA,CACA+jC,IAAK50B,CAAAA,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAEnU,OAAO,CAAE,CACjC,MAAMq5B,QAAWr5B,CAAAA,OAAAA,CAAQq5B,QAAQ,EAAI,CAAA,CACrC,MAAMwF,IAAO7+B,CAAAA,OAAAA,CAAQ6+B,IAAI,EAAI,EAC7B,MAAMt2B,IAAAA,CAAOvI,OAAQuI,CAAAA,IAAI,EAAI,IAC7B,CAAA,MAAMowC,SAAY34C,CAAAA,OAAAA,CAAQ24C,SAAS,EAAI,KAAA,CACvC,MAAMtY,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,MAAM5G,UAAAA,CAAa7O,gBAAgBt6B,GAAG,CAAC+vC,OAAQhsC,CAAAA,MAAM,EACrD,MAAM6+D,WAAAA,CAAch/C,KAAQulB,CAAAA,UAAAA,CAAWhmC,IAAI,CAC3C,MAAM6/D,kBAAoB1xD,IAAK0B,CAAAA,OAAO,CAAC4vD,WAAa,CAAA,GAAA,CAAA,CACpD,MAAMz/D,IAAAA,CAAO6/D,kBAAoBn/C,MACjC,CAAA,MAAMqkB,MAAS6H,CAAAA,OAAAA,CAAQ7H,MAAM,CAC7B,MAAM+6B,aAAgB/6B,CAAAA,MAAAA,CAAOg7B,gBAAgB,CAAC1vC,gBAAAA,CAAmBG,sBACjEsvC,aAActb,CAAAA,QAAQ,CAACzf,MAAQ/kC,CAAAA,IAAAA,CAAAA,CAC/B,MAAM0Q,GAAAA,CAAM,CACVk8B,OAAS,CAAA,IAAI,CAACqf,UAAU,CACxBrmB,QAAUA,CAAAA,QAAAA,CACVpd,MAAQ,CAAA,CACNrZ,EACA0H,CACAu0B,CAAAA,IAAAA,CACD,CAEH,CAAA,MAAM7xB,IAAM,CACV/D,MAAAA,CAAQsqD,aAActqD,CAAAA,MAAM,CAC5BhN,MAAQ,CAAA,CAAA,CACRi3D,WAAaI,CAAAA,iBACf,EACA,MAAMV,QAAAA,CAAW,CACf1+C,KAAAA,CACAC,OACA28C,kBAAoB,CAAA,CACtB,EACA,MAAM2C,cAAAA,CAAiBj7B,OAAOk7B,iBAAiB,EAAA,CAC/CD,cAAeE,CAAAA,mBAAmB,CAACxvD,GAAK6I,CAAAA,GAAAA,CAAK4lD,QAC7C,CAAA,CAAA,OAAOp6B,OAAOo7B,UAAU,CAACL,aAAe9/D,CAAAA,IAAAA,CAAM,KAAMklD,SAAWn+C,CAAAA,CAAAA,IAAI,CAAC,IAACq5D,EAAAA,CACnE,MAAM1mE,MAASob,CAAAA,IAAAA,EAAMjS,WAAgBgF,GAAAA,UAAAA,CAAaiN,KAAO,IAAIjN,UAAAA,CAAWiN,IAAMU,EAAAA,MAAAA,EAAUkL,OAAS++C,WACjG,CAAA,CAAA,IAAI,IAAI3kE,CAAAA,CAAI,EAAGA,CAAI4lB,CAAAA,MAAAA,CAAQ5lB,IAAI,CAC7B,MAAM+pD,UAAY/pD,CAAI+kE,CAAAA,iBAAAA,CACtB,MAAMQ,SAAAA,CAAYvlE,EAAI2kE,WACtB,CAAA,MAAM/mD,GAAM0nD,CAAAA,IAAAA,CAAKE,QAAQ,CAACzb,SAAAA,CAAWA,SAAY4a,CAAAA,WAAAA,CAAAA,CACjD/lE,OAAO2J,GAAG,CAACqV,IAAK2nD,SAClB,EAAA,CACA,OAAOvrD,IAAQpb,EAAAA,MACjB,CACF,CAAA,CAnSAmJ,YAAY+pC,OAAO,CAAC,CAClB,IAAI,CAAC4wB,QAAQ,CAAG,EAChB,CAAA,IAAI,CAAC5wB,OAAO,CAAGA,OACf,CAAA,IAAI,CAAChsC,MAAM,CAAG4iD,iBAAiB,CAAC5W,OAAAA,CAAQhsC,MAAM,CAAC,CAC/C,IAAI,CAAC3G,MAAM,CAAC2yC,QAAQ7H,MAAM,EAC5B,CA+RF,CAEA,MAAMw7B,4BAA4Bhc,YAIhCrY,CAAAA,MAAAA,CAAOqB,aAAa,CAAE,CACpB,MAAMxI,MAAAA,CAASwI,aAAcxI,CAAAA,MAAM,CACnC,KAAK,CAACmH,MAAOnH,CAAAA,MAAAA,CAAQwI,cAAcizB,YAAY,CAAChrD,MAAM,EACxD,CANA3S,YAAY0qC,aAAa,CAAC,CACxB,KAAK,CAAC5c,mBACR,EAAA,CAKF,CAEA,MAAM8vC,2BAA2Blc,YAI/BrY,CAAAA,MAAAA,CAAOyO,YAAY,CAAE,CACnB,MAAM5V,MAAAA,CAAS4V,YAAa5V,CAAAA,MAAM,CAClC,KAAK,CAACmH,MAAOnH,CAAAA,MAAAA,CAAQ4V,aAAa9Q,OAAO,EAC3C,CANAhnC,WAAAA,CAAY83C,YAAY,CAAE/5C,MAAM,CAAE2L,OAAO,CAAC,CACxC,KAAK,CAACmkB,kBAAsBnkB,EAAAA,SAASs9B,OAAUjZ,CAAAA,mBAAAA,CAAsB,CAAA,CAAA,EACvE,CAKF,CAEA,MAAM8vC,OAAU,CAAA,qEAAA,CAChB,MAAMC,MAAS,CAAA,kCAAA,CACf,MAAMC,SAAAA,CAAY,wDAClB,MAAMC,KAAAA,CAAQ,kCACd,MAAMC,EAAAA,CAAK,0CACX,MAAMC,KAAAA,CAAQ,+CACd,CAAA,MAAMC,aAAe,cACrB,CAAA,MAAMC,OAAU,CAAA,4BAAA,CAChB,MAAMC,cAAiB,CAAA,wBAAA,CACvB,MAAMC,oBAAAA,CAAuB,gBAC7B,MAAMC,UAAAA,CAAa,+CACnB,MAAMC,OAAAA,CAAU,SAChB,MAAMC,OAAAA,CAAU,8CAChB,CAAA,MAAMC,WAAa,QACnB,CAAA,MAAMC,SAAY,CAAA,uBAClB,OAAMC,YACJ,CAAA,OAAOpP,GAAI3mB,CAAAA,MAAM,CAAEhtC,QAAW,CAAA,IAAIwE,GAAK,CAAEqJ,OAAAA,CAAU,EAAE,CAAE,CACrDk1D,YAAAA,CAAaC,UAAU,CAAGn1D,OAAAA,CAAQm1D,UAAU,CAC5Ch2B,OAAS,IAAI,CAACi2B,aAAa,CAACj2B,QAC5BA,MAASA,CAAAA,MAAAA,CAAOjwC,KAAK,CAAC,OAAA,CAAA,CAASkG,GAAG,CAAE8vD,IAAOA,EAAAA,IAAAA,CAAKmQ,OAAO,EAAIjnE,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAChE,MAAMknE,OAAU,CAAA,IAAI3+D,GACpB,CAAA,MAAM4+D,cAAgB,IAAI5+D,GAAAA,CAC1BwoC,OAAS,IAAI,CAACq2B,WAAW,CAACr2B,MAAAA,CAAQm2B,OAASC,CAAAA,aAAAA,CAAepjE,SAAU6N,OAAQy1D,CAAAA,YAAY,CACxF,CAAA,GAAIt2B,SAAW,IAAM,CAAA,OAAO,IAC5B,CAAA,MAAMu2B,WAAa,IAAI/+D,GAAAA,CACvB2+D,QAAQp6D,OAAO,CAAC,CAAChF,KAAOE,CAAAA,GAAAA,GAAAA,CACtB,GAAIiiB,MAAAA,CAAOs9C,SAAS,CAACC,UAAAA,CAAW1/D,KAAW,CAAA,CAAA,EAAA,CAACA,MAAM/D,QAAQ,CAAC,GAAM,CAAA,CAAA,CAC/DujE,WAAW5+D,GAAG,CAACV,IAAKF,KACtB,EAAA,CACF,GACAipC,MAAS,CAAA,IAAI,CAACi2B,aAAa,CAACj2B,MAC5BA,CAAAA,CAAAA,MAAAA,CAAS,IAAI,CAAC02B,2BAA2B,CAAC12B,MAAAA,CAAQn/B,OAClDm/B,CAAAA,CAAAA,MAAAA,CAAS,IAAI,CAAC22B,gBAAgB,CAAC32B,MAC/BA,CAAAA,CAAAA,MAAAA,CAAS,IAAI,CAAC42B,gBAAgB,CAAC52B,MAAAA,CAAQu2B,YACvCv2B,MAAS,CAAA,IAAI,CAACo2B,aAAa,CAACp2B,MAAQo2B,CAAAA,aAAAA,CAAAA,CACpC,OAAOp2B,MACT,CACA,OAAO02B,2BAAAA,CAA4B12B,MAAM,CAAEn/B,OAAO,CAAE,CAClD,GAAIA,OAAQ61D,CAAAA,2BAA2B,CAAE,CACvC,MAAMG,MAAS,CAAA,IAAIr/D,IACnB,MAAMs/D,OAAAA,CAAU92B,MAAOnvC,CAAAA,KAAK,CAACilE,SAC7BgB,CAAAA,CAAAA,OAAAA,EAAS/6D,QAAQ,KAAClL,EAAAA,CAChB,MAAMoE,KAAQqQ,CAAAA,QAAAA,CAASzU,KAAMD,CAAAA,MAAM,CAACC,KAAMxB,CAAAA,MAAM,CAAG,CAAA,CAAA,CAAI,IACvDwnE,MAAOl/D,CAAAA,GAAG,CAAC1C,KAAAA,CAAO,CAAC4hE,MAAAA,CAAO1lE,GAAG,CAAC8D,KAAAA,CAAAA,EAAU,CAAA,EAAK,CAAA,EAC/C,CACA,CAAA,CAAA,MAAM8hE,aAAe3oE,KAAM2qB,CAAAA,IAAI,CAAC89C,MAAAA,CAAO9+D,MAAM,EAAIi/D,CAAAA,CAAAA,IAAI,CAAE5nB,OAAQA,KAAU,GAAA,CAAA,CAAA,CACzE,GAAI2nB,YAAc,CAAA,CAChB,MAAME,KAAQj3B,CAAAA,MAAAA,CAAOjwC,KAAK,CAAC,MAC3B,MAAMmnE,SAAAA,CAAY,EAAE,CACpB,IAAI,IAAI9nE,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI6nE,MAAM5nE,MAAM,CAAED,IAAI,CACnC,MAAMyB,MAAQomE,KAAK,CAAC7nE,CAAE,CAAA,CAACyB,KAAK,CAACilE,SAAAA,CAAAA,CAC7B,GAAIjlE,KAAAA,CAAO,CACT,MAAMoE,KAAAA,CAAQqQ,QAASzU,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACD,MAAM,CAACC,KAAK,CAAC,CAAE,CAAA,CAACxB,MAAM,CAAG,GAAI,EAC7D,CAAA,CAAA,GAAI4F,KAAQ,CAAA,CAAA,EAAK4hE,OAAO1lE,GAAG,CAAC8D,KAAW,CAAA,GAAA,CAAA,CAAG,CACxC,QACF,CACF,CACAiiE,SAAAA,CAAUhnE,IAAI,CAAC+mE,KAAK,CAAC7nE,CAAAA,CAAE,EACzB,CACA4wC,MAAAA,CAASk3B,SAAUjoE,CAAAA,IAAI,CAAC,IAC1B,EAAA,CACF,CACA,OAAO+wC,MACT,CACA,OAAOi2B,cAAcj2B,MAAM,CAAE,CAC3B,OAAOA,MAAAA,CAAOxxC,OAAO,CAAC,uCAAwC,IAChE,CAAA,CACA,OAAOooE,gBAAAA,CAAiB52B,MAAM,CAAEu2B,UAAU,CAAE,CAC1C,GAAIv2B,MAAW,GAAA,IAAA,CAAM,CACnBu2B,UAAWx6D,CAAAA,OAAO,CAAC,CAAChF,KAAAA,CAAOE,GACzB+oC,GAAAA,CAAAA,MAAAA,CAASA,OAAOxxC,OAAO,CAAC,IAAIs/D,MAAAA,CAAO,CAAC,GAAG,EAAE72D,GAAI,CAAA,GAAG,CAAC,CAAE,GAAA,CAAA,CAAM,CAAC,CAAC,EAAEF,MAAM,CAAC,CAAC,EACvE,CAAA,EACF,CACA,OAAOipC,MACT,CACA,OAAOo2B,cAAcp2B,MAAM,CAAEo2B,aAAa,CAAE,CAC1C,GAAIp2B,MAAAA,GAAW,MAAQo2B,aAAc9hE,CAAAA,IAAI,CAAG,CAAG,CAAA,CAC7C,MAAM2iE,KAAAA,CAAQj3B,OAAOjwC,KAAK,CAAC,IAC3BqmE,CAAAA,CAAAA,aAAAA,CAAcr6D,OAAO,CAAC,CAAChF,KAAOE,CAAAA,GAAAA,GAAAA,CAC5B,MAAM42D,KAAQ,CAAA,IAAIC,OAAO72D,GAAK,CAAA,GAAA,CAAA,CAC9B,IAAI,IAAI7H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI6nE,MAAM5nE,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,GAAI,CAAC6nE,KAAK,CAAC7nE,CAAAA,CAAE,CAAC4D,QAAQ,CAAC,KAAM,CAC3BikE,KAAK,CAAC7nE,CAAE,CAAA,CAAG6nE,KAAK,CAAC7nE,EAAE,CAACZ,OAAO,CAACq/D,KAAAA,CAAO92D,OACrC,CACF,CACF,CACAipC,CAAAA,CAAAA,MAAAA,CAASi3B,MAAMhoE,IAAI,CAAC,MACtB,CACA,OAAO+wC,MACT,CACA,OAAO22B,gBAAiB32B,CAAAA,MAAM,CAAE,CAC9B,GAAIA,MAAW,GAAA,IAAA,CAAM,CACnBA,MAASA,CAAAA,MAAAA,CAAOjwC,KAAK,CAAC,SAASkG,GAAG,CAAC,IAAQ8vD,EAAAA,IAAAA,CAAKE,IAAI,EAAO,GAAA,EAAA,CAAK,EAAKF,CAAAA,IAAAA,CAAAA,CAAM92D,IAAI,CAAC,IAAA,CAAA,CAChF+wC,MAASA,CAAAA,MAAAA,CAAOxxC,OAAO,CAAC,aAAA,CAAe,MACzC,EAAA,CACA,OAAOwxC,MACT,CACA,OAAOq2B,WAAYr2B,CAAAA,MAAM,CAAEm2B,OAAU,CAAA,IAAI3+D,GAAK,CAAE4+D,aAAa,CAAEpjE,QAAQ,CAAEsjE,YAAY,CAAE,CACrF,MAAMa,cAAiBn3B,CAAAA,MAAAA,CACvB,MAAM59B,KAAQ,CAAA,EAAE,CAChB,IAAItG,KAAAA,CAAQ,MACZ,IAAIjL,KAAAA,CACJ,MAAOA,CAAAA,KAAQmkE,CAAAA,OAAAA,CAAQ7O,IAAI,CAACnmB,OAAM,IAAO,IAAA,EAAQ,CAAClkC,KAAAA,CAAM,CACtD,MAAM0sD,OAAAA,CAAU33D,KAAK,CAAC,CAAA,CAAE,CACxB,OAAO23D,OAAAA,EACL,IAAK,QAAA,CACH,CACEyM,MAAOxM,CAAAA,SAAS,CAAG53D,KAAAA,CAAMoE,KAAK,CAC9B,MAAMmiE,MAASnC,CAAAA,MAAAA,CAAO9O,IAAI,CAACnmB,MAAAA,CAC3BlkC,CAAAA,KAAAA,GAAAA,KAAAA,CAAUs7D,SAAW,IACrB,CAAA,CAAA,MAAMC,UAAaD,CAAAA,MAAM,CAAC,CAAE,CAC5B9B,CAAAA,YAAAA,CAAa7M,SAAS,CAAG2O,MAAAA,CAAOniE,KAAK,CACrC,MAAMqiE,eAAkBhC,CAAAA,YAAAA,CAAanP,IAAI,CAACkR,UAAAA,CAAAA,CAC1C,MAAME,UAAaD,CAAAA,eAAe,CAAC,CAAA,CAAE,CACrC,IAAIvgE,KAAAA,CAAQsgE,UAAWhnE,CAAAA,SAAS,CAACknE,UAAWloE,CAAAA,MAAM,CAAE42D,CAAAA,IAAI,GACxD,GAAIlvD,KAAAA,GAAU,GAAIA,KAAQ,CAAA,MAAA,CAC1B,MAAMygE,IAAOzB,CAAAA,YAAAA,CAAa0B,KAAK,CAACr1D,OAChC,IAAIs1D,eAAAA,CAAkBpB,YACtB,CAAA,GAAIkB,KAAM,CACR,MAAMG,iBAAoBJ,CAAAA,UAAAA,CAAW5nE,UAAU,CAAC,GAAA,CAAA,EAAQ4nE,WAAW1nE,QAAQ,CAAC,KAC5E,GAAI8nE,iBAAAA,CAAmB,CACrBD,eAAAA,CAAkB,KACpB,CACA,GAAIC,iBAAmB,CAAA,CACrBvB,cAAcz+D,GAAG,CAAC4/D,UAAYxgE,CAAAA,KAAAA,EAChC,MAAO,CACLo/D,OAAAA,CAAQx+D,GAAG,CAAC4/D,UAAAA,CAAYxgE,OAC1B,CACA,GAAI2gE,eAAiB,CAAA,CACnB13B,OAASA,MAAO3vC,CAAAA,SAAS,CAAC,CAAA,CAAG+mE,OAAOniE,KAAK,CAAG,CAAK+qC,CAAAA,CAAAA,MAAAA,CAAO3vC,SAAS,CAAC4kE,MAAAA,CAAOxM,SAAS,CAClFuM,CAAAA,QAAQvM,SAAS,CAAG2O,MAAOniE,CAAAA,KAAK,CAAG,EACrC,CACF,CACA,GAAI,CAACyiE,eAAiB,CAAA,CACpB1C,OAAQvM,CAAAA,SAAS,CAAG2O,MAAOniE,CAAAA,KAAK,CAAGmiE,MAAM,CAAC,EAAE,CAAC/nE,OAAM,CAErD,KACF,CACF,IAAK,OACH,CAAA,CACE8lE,MAAM1M,SAAS,CAAG53D,KAAMoE,CAAAA,KAAK,CAC7B,MAAM2iE,KAAAA,CAAQzC,MAAMhP,IAAI,CAACnmB,QACzB,MAAMu3B,UAAAA,CAAaK,KAAK,CAAC,EAAE,CAAC3R,IAAI,EAChC,CAAA,MAAMuR,KAAOzB,YAAa0B,CAAAA,KAAK,CAACr1D,KAAAA,CAAAA,CAChC,GAAIo1D,IAAM,CAAA,CACRrB,QAAQl+D,MAAM,CAACs/D,YACf,GAAIjB,YAAAA,CAAc,CAChBt2B,MAAAA,CAASA,OAAO3vC,SAAS,CAAC,CAAGunE,CAAAA,KAAAA,CAAM3iE,KAAK,CAAG,CAAA,CAAA,CAAK+qC,MAAO3vC,CAAAA,SAAS,CAAC8kE,KAAM1M,CAAAA,SAAS,CAChFuM,CAAAA,OAAAA,CAAQvM,SAAS,CAAGmP,KAAAA,CAAM3iE,KAAK,CAAG,EACpC,CACF,CACA,GAAI,CAACqhE,aAAc,CACjBtB,OAAAA,CAAQvM,SAAS,CAAGmP,MAAM3iE,KAAK,CAAG2iE,KAAK,CAAC,CAAA,CAAE,CAACvoE,OAC7C,CACA,KACF,CACF,IAAK,WAAA,CACH,CACE6lE,SAAAA,CAAUzM,SAAS,CAAG53D,KAAAA,CAAMoE,KAAK,CACjC,MAAM4iE,SAAY3C,CAAAA,SAAAA,CAAU/O,IAAI,CAACnmB,MAAAA,CACjClkC,CAAAA,KAAAA,GAAAA,KAAAA,CAAU+7D,SAAc,GAAA,IAAA,CAAA,CACxB,GAAIA,SAAW,CAAA,CACb,MAAMN,UAAAA,CAAaM,SAAS,CAAC,CAAA,CAAE,CAC/B,MAAML,KAAOzB,YAAa0B,CAAAA,KAAK,CAACr1D,KAChC,CAAA,CAAA,GAAIo1D,KAAM,CACRrB,OAAAA,CAAQx+D,GAAG,CAAC4/D,WAAY,MAC1B,EAAA,CACF,CACAvC,OAAAA,CAAQvM,SAAS,CAAGoP,SAAAA,CAAU5iE,KAAK,CAAG4iE,SAAS,CAAC,CAAA,CAAE,CAACxoE,MAAM,CACzD,KACF,CACF,IAAK,OACL,CAAA,IAAK,SACL,IAAK,IAAA,CACH,CACE+lE,EAAAA,CAAG3M,SAAS,CAAG53D,KAAAA,CAAMoE,KAAK,CAC1B,MAAM6iE,GAAM1C,CAAAA,EAAAA,CAAGjP,IAAI,CAACnmB,MAAAA,CAAAA,CACpB,MAAMq3B,UAAaS,CAAAA,GAAG,CAAC,CAAA,CAAE,CACzB,MAAMC,SAAAA,CAAYhC,YAAaxvD,CAAAA,QAAQ,CAAC8wD,UAAYlB,CAAAA,OAAAA,CACpDr6D,CAAAA,KAAAA,GAAAA,MAAUi8D,SAAUj8D,CAAAA,KAAK,EACzB,IAAI3M,MAAAA,CAAS4oE,UAAU5oE,MAAM,CAC7B,GAAIq5D,OAAAA,GAAY,SAAU,CACxBr5D,MAAAA,CAAS,CAACA,OACZ,CACAiT,KAAMlS,CAAAA,IAAI,CAAC,CACT8nE,QAAS7oE,MACTqoE,CAAAA,IAAAA,CAAMroE,OACN0xB,KAAOhwB,CAAAA,KAAAA,CAAMoE,KAAK,CAClBH,GAAAA,CAAKsgE,EAAG3M,CAAAA,SAAS,CAEnBuM,CAAAA,CAAAA,OAAQvM,CAAAA,SAAS,CAAGqP,GAAI7iE,CAAAA,KAAK,CAAG6iE,GAAG,CAAC,CAAE,CAAA,CAACzoE,MAAM,CAC7C,KACF,CACF,IAAK,OAAA,CACL,IAAK,MAAA,CACL,IAAK,MACH,CAAA,CACEgmE,KAAM5M,CAAAA,SAAS,CAAG53D,KAAMoE,CAAAA,KAAK,CAC7B,MAAMgjE,MAAQ5C,KAAMlP,CAAAA,IAAI,CAACnmB,MACzB,CAAA,CAAA,MAAMk4B,UAAY91D,KAAM1R,CAAAA,GAAG,EAC3B,CAAA,GAAI,CAACwnE,SAAW,CAAA,CACdr8D,OAAQC,CAAAA,KAAK,CAAC,CAAC,mCAAmC,EAAEm8D,KAAK,CAAC,CAAE,CAAA,CAAC,6DAA6D,EAAElC,YAAAA,CAAaC,UAAU,CAAC;AAAY,CAAA,EAAEh2B,MAAO3vC,CAAAA,SAAS,CAACQ,KAAAA,CAAMoE,KAAK,CAAEpE,KAAMoE,CAAAA,KAAK,CAAG,GAAA,CAAA,CAAK,GAAG,CAAC,CAAE,CACvN+qC,MAAQm3B,CAAAA,cACV,CACAr7D,CAAAA,CAAAA,KAAAA,CAAQ,IACR,CAAA,QACF,CACA,MAAMq8D,SAAYD,CAAAA,SAAAA,CAAUV,IAAI,CAAGx3B,MAAO3vC,CAAAA,SAAS,CAAC6nE,SAAAA,CAAUpjE,GAAG,CAAEjE,KAAMoE,CAAAA,KAAK,CAAI,CAAA,EAAA,CAClF+qC,MAASA,CAAAA,MAAAA,CAAO3vC,SAAS,CAAC,CAAG6nE,CAAAA,SAAAA,CAAUr3C,KAAK,CAAA,CAAIs3C,SAAYn4B,CAAAA,MAAAA,CAAO3vC,SAAS,CAACglE,KAAM5M,CAAAA,SAAS,CAC5FuM,CAAAA,OAAQvM,CAAAA,SAAS,CAAGyP,SAAAA,CAAUr3C,KAAK,CAAGs3C,SAAU9oE,CAAAA,MAAM,CACtD,MAAM+oE,YAAAA,CAAeH,KAAK,CAAC,CAAE,CAAA,CAC7B,GAAIG,YAAAA,GAAiB,MAAUA,EAAAA,YAAAA,GAAiB,MAAQ,CAAA,CACtD,IAAIjpE,MAAAA,CAAS,KACb,CAAA,GAAI,CAAC+oE,SAAAA,CAAUF,OAAO,CAAE,CACtB,GAAII,YAAiB,GAAA,MAAA,CAAQ,CAC3BjpE,MAAAA,CAAS,CAAC+oE,SAAAA,CAAUV,KACtB,CAAO,KAAA,CACL,MAAMO,SAAYhC,CAAAA,YAAAA,CAAaxvD,QAAQ,CAAC0xD,KAAK,CAAC,CAAE,CAAA,CAAE9B,OAClDhnE,CAAAA,CAAAA,MAAAA,CAAS4oE,SAAU5oE,CAAAA,MAAM,CACzB2M,KAAAA,GAAAA,KAAAA,CAAUi8D,SAAUj8D,CAAAA,KAAK,EAC3B,CACF,CACAsG,KAAAA,CAAMlS,IAAI,CAAC,CACT8nE,OAAAA,CAASE,SAAUF,CAAAA,OAAO,EAAI7oE,MAAAA,CAC9BqoE,IAAMroE,CAAAA,MAAAA,CACN0xB,MAAOm0C,OAAQvM,CAAAA,SAAS,CACxB3zD,GAAAA,CAAKkgE,OAAQvM,CAAAA,SAAS,CACxB,EACF,CACA,KACF,CACF,IAAK,SACH,CAAA,CACEmN,OAAQnN,CAAAA,SAAS,CAAG53D,KAAAA,CAAMoE,KAAK,CAC/B,MAAMojE,OAAAA,CAAUzC,OAAQzP,CAAAA,IAAI,CAACnmB,MAAAA,CAC7BlkC,CAAAA,KAAAA,GAAAA,KAAUu8D,CAAAA,OAAAA,GAAY,IACtB,CAAA,CAAA,GAAI,CAACA,OAAAA,CAAS,CACZv8D,KAAAA,CAAQ,IACR,CAAA,QACF,CACA,MAAMy7D,UAAac,CAAAA,OAAO,CAAC,CAAA,CAAE,CAACpS,IAAI,EAClC,CAAA,MAAMqS,eAAkBD,CAAAA,OAAO,CAAC,CAAA,CAAE,EAAEpS,IAAAA,EAAAA,CACpC,MAAMuR,IAAAA,CAAOzB,YAAa0B,CAAAA,KAAK,CAACr1D,KAAAA,CAAAA,CAChC,GAAIo1D,IAAAA,CAAM,CACR,IAAIe,cAAgBvlE,QAAU7B,EAAAA,GAAAA,CAAIomE,UAClC,CAAA,CAAA,GAAIgB,aAAkBrhE,GAAAA,SAAAA,CAAW,CAC/BqhE,aAAAA,CAAgB,IAAI,CAACtC,aAAa,CAACsC,aACnC,CAAA,CAAA,GAAID,eAAiB,CAAA,CACnB,MAAME,WAAAA,CAAcrC,OAAQhlE,CAAAA,GAAG,CAACmnE,eAAAA,CAAAA,CAChC,MAAMlpB,KAAAA,CAAQqnB,UAAW+B,CAAAA,WAAAA,CAAAA,CACzB,GAAIt/C,MAAAA,CAAOs9C,SAAS,CAACpnB,KAAQ,CAAA,CAAA,CAC3B,IAAIjgD,MAAS,CAAA,EAAA,CACb,IAAI,IAAIC,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5BD,MAAUopE,EAAAA,aAAAA,CAAc/pE,OAAO,CAACqnE,UAAY3/D,CAAAA,MAAAA,CAAO9G,CACrD,CAAA,EAAA,CACAmpE,aAAgBppE,CAAAA,OAClB,CAAO,KAAA,CACL0M,OAAQC,CAAAA,KAAK,CAAC,CAAC,0BAA0B,EAAEw8D,eAAgB,CAAA,mCAAmC,EAAEvC,YAAAA,CAAaC,UAAU,CAAC;AAAY,CAAA,EAAEh2B,OAAO3vC,SAAS,CAACQ,MAAMoE,KAAK,CAAEpE,MAAMoE,KAAK,CAAG,GAAK,CAAA,CAAA,GAAG,CAAC,CAAE,CAC3LkiE,eAAgBA,cAChBn3B,CAAAA,MAAAA,CAAQA,MACV,CACAlkC,CAAAA,CAAAA,KAAAA,CAAQ,KACV,CACF,CACAkkC,MAASA,CAAAA,MAAAA,CAAO3vC,SAAS,CAAC,CAAA,CAAGgoE,QAAQpjE,KAAK,CAAG,GAAKsjE,aAAgBv4B,CAAAA,MAAAA,CAAO3vC,SAAS,CAACulE,OAAAA,CAAQnN,SAAS,CACpGuM,CAAAA,QAAQvM,SAAS,CAAG4P,OAAQpjE,CAAAA,KAAK,CAAG,EACtC,CAAA,KAAO,CACL4G,OAAQC,CAAAA,KAAK,CAAC,CAAC,SAAS,EAAEy7D,UAAAA,CAAW,mCAAmC,EAAExB,YAAAA,CAAaC,UAAU,CAAC,CAAC,CAAE,CACnGmB,cAAAA,CAAgBA,cAChBn3B,CAAAA,MAAAA,CAAQA,MACV,CACAlkC,CAAAA,CAAAA,KAAAA,CAAQ,KACR,QACF,CACF,CACA,KACF,CACJ,CACF,CACA,GAAIsG,MAAM/S,MAAM,CAAG,EAAG,CACpBwM,OAAAA,CAAQC,KAAK,CAAC,CAAC,+IAA+I,EAAEi6D,aAAaC,UAAU,CAAC,CAAC,CACzLl6D,CAAAA,KAAAA,CAAQ,KACV,CACA,GAAIA,KAAO,CAAA,CACTD,QAAQC,KAAK,CAAC,gCAAiC,CAC7CkkC,MAAAA,CAAQm3B,cACV,CACA,CAAA,CAAA,OAAO,IACT,CACA,OAAOn3B,MACT,CACA,OAAOy3B,KAAMr1D,CAAAA,KAAK,CAAE,CAClB,IAAI,IAAIhT,CAAI,CAAA,CAAA,CAAGA,EAAIgT,KAAM/S,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,GAAI,CAACgT,KAAK,CAAChT,CAAAA,CAAE,CAACooE,IAAI,CAAE,CAClB,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,OAAOiB,yBAAyBC,IAAI,CAAEvC,OAAO,CAAE,CAC7C,IAAIr6D,KAAQ,CAAA,KAAA,CACZ48D,IAAOA,CAAAA,IAAAA,CAAKzS,IAAI,EAChB,CAAA,IAAI9wC,OAAS,KACb,CAAA,GAAIujD,OAAS,MAAQ,CAAA,CACnB,OAAO,CACLvpE,MAAAA,CAAQ,KACR2M,KACF,CACF,CACA,GAAI48D,IAAAA,GAAS,QAAS,CACpB,OAAO,CACLvpE,MAAAA,CAAQ,MACR2M,KACF,CACF,CACA,MAAM68D,YAAAA,CAAepD,QAAQpP,IAAI,CAACuS,IAClC,CAAA,CAAA,GAAIC,aAAc,CAChBxjD,MAAAA,CAASwjD,YAAY,CAAC,CAAA,CAAE,GAAK,GAC7BD,CAAAA,IAAAA,CAAOC,YAAY,CAAC,EAAE,CAAC1S,IAAI,GAC3B,MAAM2S,MAAAA,CAASzC,QAAQz+D,GAAG,CAACghE,MAC3B,OAAO,CACLvpE,OAAQgmB,MAAS,CAAA,CAACyjD,OAASA,MAC3B98D,CAAAA,KACF,CACF,CACA,MAAM+8D,eAAkBnD,CAAAA,UAAAA,CAAWvP,IAAI,CAACuS,IAAAA,CAAAA,CACxC,GAAIG,eAAiB,CAAA,CACnB,MAAMt6D,IAAO43D,CAAAA,OAAAA,CAAQhlE,GAAG,CAAC0nE,eAAe,CAAC,CAAA,CAAE,CAAC5S,IAAI,EAAA,CAAA,EAAO4S,eAAe,CAAC,CAAA,CAAE,CAAC5S,IAAI,GAC9E,MAAMznD,KAAAA,CAAQ23D,QAAQhlE,GAAG,CAAC0nE,eAAe,CAAC,CAAA,CAAE,CAAC5S,IAAI,EAAA,CAAA,EAAO4S,eAAe,CAAC,CAAA,CAAE,CAAC5S,IAAI,EAAA,CAC/E,MAAM6S,QAAWD,CAAAA,eAAe,CAAC,CAAA,CAAE,CAAC5S,IAAI,EAAA,CACxC,IAAI92D,MAAS,CAAA,KAAA,CACb,OAAO2pE,QACL,EAAA,IAAK,IACH3pE,CAAAA,MAAAA,CAASoP,OAASC,KAClB,CAAA,UACG,IACHrP,CAAAA,MAAAA,CAASoP,OAASC,KAClB,CAAA,MACG,IAAA,GAAA,CACHrP,OAASoP,IAAOC,CAAAA,KAAAA,CAChB,MACG,IAAA,IAAA,CACHrP,OAASoP,IAAQC,EAAAA,KAAAA,CACjB,MACG,IAAA,GAAA,CACHrP,OAASoP,IAAOC,CAAAA,KAAAA,CAChB,MACG,IAAA,IAAA,CACHrP,OAASoP,IAAQC,EAAAA,KAAAA,CACjB,MACF,QACE1C,MAAQ,KACZ,CACA,OAAO,CACL3M,MAAAA,CACA2M,KACF,CACF,CACA,MAAM3M,MAASgnE,CAAAA,OAAAA,CAAQz+D,GAAG,CAACghE,IAAAA,CAAAA,CAC3B,OAAO,CACLvpE,MAAAA,CACA2M,KACF,CACF,CACA,OAAOi9D,kBAAAA,CAAmB1B,UAAU,CAAElB,OAAO,CAAE,CAC7C,IAAIr6D,MAAQ,KACZ,CAAA,IAAIm0D,UAAYoH,UAAWpR,CAAAA,IAAI,GAC/B,MAAMgK,SAAAA,CAAUtgE,UAAU,CAAC,GAAA,CAAA,EAAQsgE,UAAUpgE,QAAQ,CAAC,GAAK,CAAA,CAAA,CACzD,IAAIuqC,KAAQ,CAAA,CAAA,CACZ,IAAI4+B,WAAc,CAAA,IAAA,CAClB,IAAI,IAAI5pE,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI6gE,UAAU5gE,MAAM,CAAG,EAAGD,CAAI,EAAA,CAAA,CAC3C,GAAI6gE,SAAS,CAAC7gE,CAAE,CAAA,GAAK,IAAKgrC,KACrB,EAAA,CAAA,KAAA,GAAI61B,SAAS,CAAC7gE,CAAAA,CAAE,GAAK,GAAK,CAAA,CAC7BgrC,QACA,GAAIA,KAAAA,GAAU,EAAG,CACf4+B,WAAAA,CAAc,MACd,KACF,CACF,CACF,CACA,GAAIA,WAAa,CAAA,CACf/I,UAAYA,SAAUhgE,CAAAA,KAAK,CAAC,CAAG,CAAA,CAAC,GAAGg2D,IAAI,GACzC,CAAO,KAAA,CACL,KACF,CACF,CACA,MAAM,IAAK,CAAA,CACT,IAAIgT,UAAa,CAAA,KAAA,CACjB,IAAI7+B,KAAAA,CAAQ,EACZ,IAAI8+B,QAAAA,CAAW,EACf,IAAIC,YAAAA,CAAe,CAAC,CACpB,CAAA,IAAIC,WAAa,CAAC,CAAA,CAClB,IAAIC,cAAiB,CAAA,CAAA,CACrB,IAAI,IAAIjqE,CAAAA,CAAI,EAAGA,CAAI6gE,CAAAA,SAAAA,CAAU5gE,MAAM,CAAED,IAAI,CACvC,GAAI6gE,SAAS,CAAC7gE,CAAAA,CAAE,GAAK,GAAK,CAAA,CACxB,MAAMkqE,WAAAA,CAAcrJ,UAAU5/D,SAAS,CAAC,EAAGjB,CAC3C,CAAA,CAAA,GAAIqmE,qBAAqB3jE,IAAI,CAACwnE,WAAc,CAAA,CAAA,CAC1CD,iBACF,CAAO,KAAA,GAAIA,iBAAmB,CAAG,CAAA,CAC/Bj/B,QACA,GAAIA,KAAAA,CAAQ8+B,SAAU,CACpBA,QAAAA,CAAW9+B,MACX++B,YAAe/pE,CAAAA,EACjB,CACA6pE,UAAa,CAAA,KACf,CACF,CAAO,KAAA,GAAIhJ,SAAS,CAAC7gE,EAAE,GAAK,GAAA,CAAK,CAC/B,GAAIiqE,cAAAA,CAAiB,EAAG,CACtBA,cAAAA,GACF,MAAO,GAAIj/B,KAAAA,CAAQ,EAAG,CACpB,GAAIA,QAAU8+B,QAAYC,EAAAA,YAAAA,GAAiB,CAAC,CAAG,CAAA,CAC7CC,UAAahqE,CAAAA,EACf,CACAgrC,KACF,GAAA,CACF,CACF,CACA,GAAI,CAAC6+B,UAAcE,EAAAA,YAAAA,GAAiB,CAAC,CAAKC,EAAAA,UAAAA,GAAe,CAAC,CAAG,CAAA,CAC3D,KACF,CACA,MAAMG,QAAUtJ,SAAU5/D,CAAAA,SAAS,CAAC8oE,YAAAA,CAAe,EAAGC,UACtD,CAAA,CAAA,KAAM,CAAEjqE,MAAM,CAAE2M,MAAO09D,QAAQ,CAAE,CAAGzD,YAAAA,CAAaxvD,QAAQ,CAACgzD,OAAAA,CAASpD,SACnEr6D,KAAQA,CAAAA,KAAAA,EAAS09D,SACjBvJ,SAAYA,CAAAA,SAAAA,CAAU5/D,SAAS,CAAC,EAAG8oE,YAAiBhqE,CAAAA,EAAAA,OAAS,MAAS,CAAA,OAAM,EAAK8gE,SAAU5/D,CAAAA,SAAS,CAAC+oE,UAAa,CAAA,CAAA,EACpH,CACA,OAAO,CACL/B,WAAYpH,SACZn0D,CAAAA,KACF,CACF,CACA,OAAOyK,QAAS8wD,CAAAA,UAAU,CAAElB,OAAO,CAAE,CACnC,MAAMsD,OAAAA,CAAU9D,QAAQxP,IAAI,CAACkR,cAAgB,IAC7C,CAAA,IAAIqC,cAAgBrC,UACpB,CAAA,IAAIsC,WAAa,KACjB,CAAA,MAAMC,eAAiBvC,UAAW7oE,CAAAA,OAAO,CAACgnE,cAAAA,CAAgB,IAC1D,GAAIoE,cAAAA,CAAevhE,OAAO,CAAC,GAAA,CAAA,GAAS,CAAC,CAAG,CAAA,CACtC,MAAM43D,SAAY8F,CAAAA,YAAAA,CAAagD,kBAAkB,CAAC1B,UAAAA,CAAYlB,SAC9DuD,aAAgBzJ,CAAAA,SAAAA,CAAUoH,UAAU,CACpCsC,UAAAA,CAAa1J,SAAUn0D,CAAAA,MAAK,CAE9B,GAAI69D,WAAY,CACd,OAAO,CACLxqE,MAAQ,CAAA,KAAA,CACR2M,KAAO,CAAA,IACT,CACF,CACA,MAAM+9D,WAAaH,aAAc3pE,CAAAA,KAAK,CAAC,IACvC,CAAA,CAAA,IAAK,MAAM+pE,SAAAA,IAAaD,WAAW,CACjC,MAAME,YAAcD,SAAU/pE,CAAAA,KAAK,CAAC,IACpC,CAAA,CAAA,IAAIiqE,UAAY,IAChB,CAAA,IAAK,MAAMC,UAAcF,IAAAA,WAAAA,CAAY,CACnC,KAAM,CAAE5qE,MAAM,CAAE2M,KAAK,CAAE,CAAGi6D,aAAa0C,wBAAwB,CAACwB,WAAWhU,IAAI,EAAA,CAAIkQ,SACnF,GAAI,CAAChnE,QAAU2M,KAAO,CAAA,CACpBk+D,UAAY,KACZ,CAAA,KACF,CACF,CACA,GAAIA,UAAW,CACb,OAAO,CACL7qE,MAAAA,CAAQ,KACR2M,KAAO,CAAA,CAAC29D,OACV,CACF,CACF,CACA,OAAO,CACLtqE,OAAQ,KACR2M,CAAAA,KAAAA,CAAO,CAAC29D,OACV,CACF,CACF,CAEA,IAAIS,QAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDf,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;AAYf,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDlB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;AAalB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;AAChB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;AAEhB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;AAclB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;AAiBlB,CAAC,CAED,MAAMC,gBAAmB,CAAA,CACvBC,gBAAiBztC,iBACjB0tC,CAAAA,aAAAA,CAAeztC,eACf0tC,CAAAA,cAAAA,CAAgBztC,gBAChB0tC,CAAAA,gBAAAA,CAAkBrtC,mBAClBstC,gBAAkBrtC,CAAAA,kBAAAA,CAClBstC,gBAAkBrtC,CAAAA,kBAAAA,CAClBstC,gBAAkBrtC,CAAAA,kBAAAA,CAClBstC,iBAAkBrtC,kBAClBstC,CAAAA,gBAAAA,CAAkBrtC,kBAClBstC,CAAAA,gBAAAA,CAAkBrtC,kBAClBstC,CAAAA,gBAAAA,CAAkBrtC,mBAClBstC,YAAc/tC,CAAAA,cAAAA,CACdguC,kBAAoBjuC,CAAAA,qBAAAA,CACpBkuC,kBAAoBnuC,CAAAA,oBACtB,CACA,CAAMouC,MAAAA,qBAAAA,CACJ,OAAOC,gBAAAA,CAAiBriC,MAAM,CAAEx4B,OAAO,CAAE,CACvC,MAAM86D,qBAAAA,CAAwB,OAAC96D,EAAAA,CAC7B,IAAI+6D,mBAAsB/6D,CAAAA,OAAAA,CAAQ+6D,mBAAmB,EAAI,MACzD,CAAA,GAAI,CAACxtE,KAAMC,CAAAA,OAAO,CAACutE,mBAAsB,CAAA,CAAA,CACvCA,oBAAsB,CACpBA,mBAAAA,EACD,CAEH,OAAOA,mBACT,EACA,MAAMC,UAAAA,CAAa,CAACC,GAAAA,CAAKC,GAAKvS,CAAAA,QAAAA,CAAU3oD,WACtC,MAAMm7D,WAAAA,CAAc3iC,MAAO2E,CAAAA,QAAQ,CAAG89B,GAAAA,CAAMC,IAC5C,IAAIE,iBAAAA,CAAoB,EACxB,CAAA,GAAI,CAACzS,QAAAA,CAAU,CACb,MAAMoS,mBAAAA,CAAsBD,qBAAsB96D,CAAAA,OAAAA,CAAAA,CAClD,IAAI,IAAIzR,EAAI,CAAGA,CAAAA,CAAAA,CAAIiqC,MAAOuZ,CAAAA,mBAAmB,CAAExjD,CAAAA,EAAAA,CAAI,CACjD6sE,iBAAqB,EAAA,CAAC,yBAAyB,EAAE7sE,CAAE,CAAA;AAAE,CAAC,CACtD,MAAM8sE,OAAUN,CAAAA,mBAAmB,CAACxsE,CAAE,CAAA,EAAI,MAC1C6sE,CAAAA,iBAAAA,EAAqB,CAAC,gBAAgB,EAAE7sE,CAAE,CAAA,CAAC,EAAE8sE,OAAQ,CAAA;AAAE,EACzD,CACF,CACA,OAAOD,iBAAAA,CAAoBD,WAC7B,CACA,CAAA,MAAMG,cAAiB,CAAA,CAAC3S,QAAU3oD,CAAAA,OAAAA,GAAAA,CAChC,IAAIo7D,iBAAoB,CAAA,EAAA,CACxB,GAAI,CAACzS,QAAU,CAAA,CACb,MAAMoS,mBAAsBD,CAAAA,qBAAAA,CAAsB96D,OAClD,CAAA,CAAA,IAAI,IAAIzR,CAAAA,CAAI,EAAGA,CAAIiqC,CAAAA,MAAAA,CAAOuZ,mBAAmB,CAAExjD,CAAI,EAAA,CAAA,CACjD,MAAMgtE,WAAcR,CAAAA,mBAAmB,CAACxsE,CAAAA,CAAE,EAAI,MAAA,CAC9C,MAAMitE,WAAcjlC,CAAAA,0BAAAA,CAA2BjmC,GAAG,CAACirE,WACnDH,CAAAA,CAAAA,iBAAAA,EAAqB,CAAC,eAAe,EAAE7sE,CAAAA,CAAE,GAAG,EAAEitE,WAAY,CAAA;AAAG,EAC/D,CACF,CACA,OAAOJ,iBACT,CACA,CAAA,MAAMvpE,KAAOmO,OAAQnO,CAAAA,IAAI,EAAI,UAC7B,CAAA,IAAI4pE,SACJ,IAAIC,QAAAA,CACJ,MAAMC,iBAAoBf,CAAAA,qBAAAA,CAAsBgB,cAAc,CAACpjC,MAAAA,CAAQx4B,QAAQ67D,aAAa,CAAA,CAC5F,MAAMC,mBAAsBlB,CAAAA,qBAAAA,CAAsBgB,cAAc,CAACpjC,MAAAA,CAAQx4B,QAAQ+7D,eAAe,CAAA,CAChG,MAAMhM,IAAO/vD,CAAAA,OAAAA,CAAQowD,cAAc,GAAK3/B,mBAAAA,CACxC,GAAIs/B,IAAM,CAAA,CACR0L,SAAW,CAAC;QACV,EAAEH,cAAAA,CAAe,KAAMt7D,OAAS,CAAA,CAAA;AAChC,QAAA,EAAE05D,QAAS,CAAA;AACX,QAAA,EAAEE,UAAW,CAAA;AACb,QAAA,EAAE+B,iBAAkB,CAAA;QACpB,EAAE37D,OAAAA,CAAQkwD,UAAU,CAAC;MACvB,CAAC,CACDwL,SAAW,CAAC;QACV,EAAEJ,cAAAA,CAAe,MAAOt7D,OAAS,CAAA,CAAA;AACjC,QAAA,EAAEy5D,QAAS,CAAA;AACX,QAAA,EAAEG,UAAW,CAAA;AACb,QAAA,EAAEkC,mBAAoB,CAAA;QACtB,EAAE97D,OAAAA,CAAQmwD,YAAY,CAAC;AACzB,MAAA,EAAC,CACI,KAAA,CACLsL,SAAW,CAAC,EAAEb,sBAAsBoB,WAAW,CAACxjC,QAAUwiC,UAAWxB,CAAAA,UAAAA,CAAYF,QAAS,IAAMt5D,CAAAA,OAAAA,CAAAA,CAAW27D,kBAAoBf,qBAAsBqB,CAAAA,aAAa,CAACzjC,MAAQ,CAAA,CAAA;AACzK,QAAA,EAAEmhC,UAAW,CAAA;QACb,EAAEiB,qBAAAA,CAAsBsB,iBAAiB,CAACrqE,IAAM,CAAA,CAAA;AAChD,QAAA,EAAEmO,OAAQkwD,CAAAA,UAAU,CAAC,CAAC,CACxBwL,QAAAA,CAAW,CAAC,EAAE,CAAC17D,OAAQm8D,CAAAA,gBAAgB,EAAI,EAAC,EAAKvB,qBAAAA,CAAsBoB,WAAW,CAACxjC,MAAUwiC,CAAAA,CAAAA,UAAAA,CAAWzB,UAAYF,CAAAA,OAAAA,CAAS,KAAOr5D,CAAAA,OAAAA,CAAAA,CAAW87D,mBAAsBlB,CAAAA,qBAAAA,CAAsBqB,aAAa,CAACzjC,MAAQ,CAAA,CAAA;AAC/M,QAAA,EAAEmhC,UAAW,CAAA;QACb,EAAEiB,qBAAAA,CAAsBsB,iBAAiB,CAACrqE,IAAM,CAAA,CAAA;AAChD,QAAA,EAAEmO,OAAQmwD,CAAAA,YAAY,CAAC,EAAC,CAE5B,OAAO,CACLt+D,IAAAA,CAAMA,KACNu+D,cAAgBpwD,CAAAA,OAAAA,CAAQowD,cAAc,EAAI5/B,oBAC1CqpB,UAAY75C,CAAAA,OAAAA,CAAQ65C,UAAU,CAC9BsM,QAASsV,QACTW,CAAAA,SAAAA,CAAWp8D,OAAQq8D,CAAAA,cAAc,CACjCC,SAAWt8D,CAAAA,OAAAA,CAAQu8D,gBAAgB,CACnClW,QAASqV,QACTc,CAAAA,gBAAAA,CAAkBx8D,OAAQw8D,CAAAA,gBAAgB,CAC1CC,oBAAsBz8D,CAAAA,OAAAA,CAAQy8D,oBAAoB,CAClDjV,uBAAyBxnD,CAAAA,OAAAA,CAAQwnD,uBAAuB,CACxDC,oBAAqBznD,OAAQynD,CAAAA,mBAAmB,CAEpD,CACA,OAAOmU,cAAAA,CAAepjC,MAAM,CAAE88B,OAAO,CAAE,CACrC,IAAIzhE,IAAAA,CAAO,GACX2kC,MAAOmT,CAAAA,WAAW,CAACzwC,OAAO,CAAC,CAAChF,KAAAA,CAAOE,GACjCvC,GAAAA,CAAAA,IAAAA,EAAQ,CAAC,QAAQ,EAAEuC,GAAI,CAAA,CAAC,EAAEF,KAAM,CAAA;AAAE,EAAC,CAErCrC,CAAAA,CAAAA,IAAAA,EAAQ,IACRyhE,CAAAA,OAAAA,EAASp6D,QAAQ,CAAChF,KAAAA,CAAOE,GACvBvC,GAAAA,CAAAA,IAAAA,EAAQ,CAAC,QAAQ,EAAEuC,GAAI,CAAA,CAAC,EAAEF,KAAM,CAAA;AAAE,EAAC,CAErCrC,CAAAA,CAAAA,IAAAA,EAAQ,IACR,CAAA,OAAOA,IACT,CACA,OAAOqoE,iBAAkBrqE,CAAAA,IAAI,CAAE,CAC7B,OAAO,CAAC,oBAAoB,EAAEA,IAAK,CAAA;AAAE,CAAC,CAExC,OAAOmqE,WAAAA,CAAYxjC,MAAM,CAAE,CACzB,OAAOA,MAAAA,CAAO2E,QAAQ,CAAG,gBAAmB,CAAA,mBAC9C,CACA,OAAO8+B,aAAAA,CAAczjC,MAAM,CAAEkkC,cAAc,CAAE,CAC3C,GAAIA,gBAAkBA,cAAmB,GAAA,OAAA,EAAWA,cAAmB,GAAA,SAAA,EAAaA,cAAmB,GAAA,MAAA,CAAQ,CAC7GA,cAAAA,CAAiB,KACnB,CACA,GAAIA,cAAgB,CAAA,CAClB,GAAIA,cAAAA,GAAmB,OAAWlkC,EAAAA,MAAAA,CAAOmkC,YAAY,GAAK,OAAA,CAAS,CACjED,cAAAA,CAAiB,UACnB,CACA,GAAIA,cAAAA,GAAmB,WAAalkC,MAAOmkC,CAAAA,YAAY,GAAK,MAAA,CAAQ,CAClED,cAAAA,CAAiB,OACnB,CACF,CACA,MAAMv0D,SAAAA,CAAYu0D,cAAiBA,CAAAA,cAAAA,CAAiBlkC,MAAOrwB,CAAAA,SAAS,CACpE,MAAMtU,KAAO,CAAC;AACF,gBAAA,EAAEsU,SAAU,CAAA;AACZ,gBAAA,EAAEA,SAAU,CAAA;AACZ,gBAAA,EAAEA,SAAU,CAAA;AACZ,gBAAA,EAAEA,SAAU,CAAA;AACZ,gBAAA,EAAEA,SAAU,CAAA;AACZ,gBAAA,EAAEA,SAAU,CAAA;AACZ,gBAAA,EAAEA,SAAU,CAAA;AACxB,IAAA,CAAC,CACD,OAAOtU,IACT,CACA,OAAO+oE,kBAAkBC,MAAM,CAAE,CAC/B,MAAMC,QAAU,EAAC,CACjB,IAAIC,KAAAA,CAAQ,EACZ,IAAIC,KAAAA,CAAQH,MAAOrlE,CAAAA,OAAO,CAAC,WAC3B,CAAA,CAAA,MAAMwlE,KAAS,EAAA,CAAA,CAAE,CACf,GAAIA,KAAAA,CAAQ,CAAKH,EAAAA,MAAM,CAACG,KAAQ,CAAA,CAAA,CAAE,GAAK,GAAA,CAAK,MAC5C,IAAIC,MAAAA,CAAS,KACb,CAAA,GAAID,MAAQ,CAAG,CAAA,CACb,IAAIE,WAAAA,CAAcL,OAAOttE,WAAW,CAAC,IAAMytE,CAAAA,KAAAA,CAAAA,CAC3CE,YAAcA,WAAgB,GAAA,CAAC,CAAIA,CAAAA,WAAAA,CAAc,EAAI,CACrD,CAAA,MAAMC,eAAkBN,CAAAA,MAAAA,CAAOrtE,SAAS,CAAC0tE,WAAAA,CAAaF,KACtD,CAAA,CAAA,GAAIG,gBAAgBhrE,QAAQ,CAAC,GAAM,CAAA,CAAA,CACjC8qE,OAAS,KACX,CACF,CACA,GAAI,CAACA,OAAQ,CACX,MAAMG,SAAYP,CAAAA,MAAAA,CAAOrlE,OAAO,CAAC,GAAA,CAAKwlE,KACtC,CAAA,CAAA,MAAMK,kBAAoBR,MAAOttE,CAAAA,WAAW,CAAC,GAAA,CAAK6tE,WAClD,MAAME,UAAAA,CAAaT,MAAOrtE,CAAAA,SAAS,CAAC6tE,iBAAoB,CAAA,CAAA,CAAGD,SAC3D,CAAA,CAAA,GAAIN,OAAO,CAACQ,UAAAA,CAAW,CAAS,CAAA,KAAA,CAC9B,MAAMl1B,QAAWyxB,CAAAA,gBAAgB,CAACyD,UAAAA,CAAW,CAC7C,GAAIl1B,QAAAA,GAAa/xC,SAAW,CAAA,CAC1BymE,OAAO,CAACQ,UAAAA,CAAW,CAAGl1B,SACxB,MAAO,CACL00B,OAAO,CAACQ,UAAAA,CAAW,CAAG,CAAC,IAAI,EAAEP,KAAAA,CAAM,CAAC,CACpCA,KACF,GAAA,CACF,CACF,CACAC,KAAAA,CAAQH,MAAOrlE,CAAAA,OAAO,CAAC,WAAawlE,CAAAA,KAAAA,CAAQ,CAC9C,EAAA,CACA,OAAOF,OACT,CACF,CAEA,IAAIS,KAAO,CACX,CAAA,MAAMC,OAmCJ7uB,IAAO,EAAA,CACL,IAAI,CAAC4gB,KAAK,CAAG,KACb,CAAA,IAAI,CAAC9J,MAAM,CAAG,MAChB,CACA,IAAImK,KAAQ,EAAA,CACV,OAAO,CAAC,UAAU,EAAE,IAAI,CAACr3B,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC82B,UAAU,CAACe,cAAc,GAAK3/B,mBAAsB,CAAA,MAAA,CAAS,MAAO,CAAA,EAAE,EAAE,IAAI,CAAC5+B,IAAI,CAAC,CAAC,CAE1H6lC,OAAU,EAAA,CACR,IAAI,CAACc,MAAM,CAAC0T,eAAe,CAAC,IAAI,CAAA,CAChC,IAAI,CAACvU,IAAI,CAACD,OAAO,CAAC,IAAI,EACxB,CACAQ,WAAAA,EAAc,CACZ,IAAI,CAACyW,IAAI,EAAA,CACT,IAAI,CAAChX,IAAI,CAACO,WAAW,GACvB,CACAwU,gBAAiB,CACf,IAAI,CAAC/U,IAAI,CAAC+U,cAAc,CAAC,IAAI,CAAClU,MAAM,CAAE,IAAI,EAC5C,CAnDAliC,WAAAA,CAAY6hC,cAAc,CAAEk3B,UAAU,CAAC,CACrC,IAAI,CAACxV,UAAU,CAAG,IAAIljD,GACtB,CAAA,IAAI,CAAC4hC,EAAE,CAAGglC,IACV,EAAA,CAAA,IAAI,CAAC/kC,MAAM,CAAGL,cACd,CAAA,IAAI,CAACk3B,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACx9D,IAAI,CAAGw9D,UAAAA,CAAWx9D,IAAI,EAAI,UAAA,CAC/B,IAAI,CAAC88C,IAAI,EACT,CAAA,GAAI0gB,UAAWgB,CAAAA,OAAO,CAAE,CACtBhB,UAAAA,CAAWgB,OAAO,CAAG6E,aAAapP,GAAG,CAACuJ,UAAWgB,CAAAA,OAAO,CAAEhB,UAAWoO,CAAAA,SAAS,CAAE,CAC9EtI,WAAY,CAAC,mBAAmB,EAAE,IAAI,CAACvF,KAAK,CAAC,CAAC,CAC9C6F,YAAAA,CAAc,IAChB,CACF,EAAA,CAAA,KAAO,CACL,MAAM1F,KAAOV,UAAWe,CAAAA,cAAc,GAAK3/B,mBAC3C4+B,CAAAA,UAAWlJ,CAAAA,OAAO,CAAG+O,YAAAA,CAAapP,GAAG,CAACuJ,UAAAA,CAAWlJ,OAAO,CAAEkJ,WAAW+M,SAAS,CAAE,CAC9EjH,UAAAA,CAAY,CAAC,kBAAkB,EAAE,IAAI,CAACvF,KAAK,CAAC,CAAC,CAC7C6F,YAAAA,CAAc1F,IAChB,CACA,CAAA,CAAA,GAAIV,UAAWe,CAAAA,cAAc,GAAK5/B,mBAAqB,CAAA,CAAA,IACrD6+B,WAAAA,CAAAA,CAAAA,YAAAA,UAAWxV,EAAAA,UAAAA,GAAXwV,WAAWxV,CAAAA,UAAAA,CAAe+gB,sBAAsBgC,iBAAiB,CAACvN,UAAWlJ,CAAAA,OAAO,GACtF,CACA,MAAM0P,2BAA8B19B,CAAAA,cAAAA,CAAeyZ,QAAQ,GAAKhgD,QAASC,CAAAA,IAAI,GAAK,KAASD,EAAAA,QAAAA,CAASC,IAAI,GAAK,KAAI,CACjHw9D,CAAAA,UAAWhJ,CAAAA,OAAO,CAAG6O,YAAapP,CAAAA,GAAG,CAACuJ,UAAWhJ,CAAAA,OAAO,CAAEgJ,UAAWiN,CAAAA,SAAS,CAAE,CAC9EzG,4BACAJ,YAAc1F,CAAAA,IAAAA,CACdoF,UAAY,CAAA,CAAC,oBAAoB,EAAE,IAAI,CAACvF,KAAK,CAAC,CAChD,CACA,CAAA,CAAA,GAAI,CAACP,UAAWlJ,CAAAA,OAAO,EAAI,CAACkJ,WAAWhJ,OAAO,CAAE,CAC9C,IAAI,CAACZ,MAAM,CAAG,IACd,CAAA,MACF,CACF,CACA,IAAI,CAAC9tB,IAAI,CAAGQ,cAAeulC,CAAAA,gBAAgB,CAAC,IAAI,EAClD,CAmBF,CAEA,MAAMC,UAAAA,EAEN,MAAMC,uBAAAA,EAEN,MAAMC,eAUJnmC,OAAU,EAAA,CACR,IAAI,CAAComC,UAAU,CAAC5iE,OAAO,CAAE06C,YACvBA,SAAUle,CAAAA,OAAO,CAAC,IAAI,CAACc,MAAM,EAC/B,CACA,CAAA,CAAA,IAAI,CAACslC,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,cAAc,CAAC7iE,OAAO,CAAC,aAC1Bq4D,EAAAA,CAAAA,aAAAA,CAAc77B,OAAO,CAAC,IAAI,CAACc,MAAM,EACnC,CAAA,CACA,CAAA,IAAI,CAACulC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,YAAY,CAAG,KACtB,CACAC,KAAAA,CAAMvoB,UAAU,CAAEliD,IAAI,CAAE,CACtB,GAAI,IAAI,CAACwqE,YAAY,CAAE,CACrB,MAAME,YAAAA,CAAev8D,IAAK0B,CAAAA,OAAO,CAAC,IAAI,CAAC26D,YAAY,CAACxqE,IAAI,CAAE,IAAI,CAAC2qE,eAAe,EAC9E,MAAMC,KAAAA,CAAQ,IAAI,CAACC,UAAU,CAAGH,YAAAA,CAChC,GAAIE,KAAAA,CAAQ5qE,KAAM,CAChB,IAAI,CAAC8qE,cAAc,GACrB,CACF,CACA,GAAI,CAAC,IAAI,CAACN,YAAY,CAAE,CACtB,IAAIroB,UAAY,IAAI,CAACkoB,UAAU,CAACjuE,GAAG,EACnC,CAAA,GAAI,CAAC+lD,SAAAA,CAAW,CACdA,SAAY,CAAA,IAAI,CAACsC,YAAY,CAAC,IAAI,CAAC1f,MAAM,CAAE,IAAI,CAAC8lC,UAAU,CAAE,KAAA,EAC9D,CACA,IAAI/K,aAAAA,CAAgB,IAAI,CAACwK,cAAc,CAACluE,GAAG,GAC3C,GAAI,CAAC0jE,cAAe,CAClBA,aAAAA,CAAgB,IAAI,CAACrb,YAAY,CAAC,IAAI,CAAC1f,MAAM,CAAE,IAAI,CAAC8lC,UAAU,CAAE,MAClE,CACA,IAAI,CAACL,YAAY,CAAG,IAAIN,UACxB,CAAA,IAAI,CAACM,YAAY,CAAC1K,aAAa,CAAGA,aAClC,CAAA,IAAI,CAAC0K,YAAY,CAACroB,SAAS,CAAGA,SAC9B,CAAA,IAAI,CAACqoB,YAAY,CAAChiE,MAAM,CAAG,CAC3B,CAAA,IAAI,CAACgiE,YAAY,CAACxqE,IAAI,CAAG,EAC3B,CACA,MAAMwqE,YAAe,CAAA,IAAI,CAACA,YAAY,CACtC,MAAME,YAAAA,CAAev8D,IAAK0B,CAAAA,OAAO,CAAC26D,YAAaxqE,CAAAA,IAAI,CAAE,IAAI,CAAC2qE,eAAe,CACzEzoB,CAAAA,UAAAA,CAAWC,SAAS,CAAGqoB,YAAAA,CAAaroB,SACpCD,CAAAA,UAAW15C,CAAAA,MAAM,CAAGkiE,YACpBxoB,CAAAA,UAAWrY,CAAAA,OAAO,CAAG2gC,YAAAA,CAAa1K,aAAa,CAAC2K,KAAK,CAACC,YAAAA,CAAc1qE,KACpEwqE,CAAAA,YAAAA,CAAaxqE,IAAI,CAAG0qE,aAAe1qE,KACrC,CACA8qE,cAAiB,EAAA,CACf,GAAI,IAAI,CAACN,YAAY,CAAE,CACrB,IAAI,CAACD,WAAW,CAAC3uE,IAAI,CAAC,IAAI,CAAC4uE,YAAY,CACvC,CAAA,IAAI,CAACA,YAAY,CAAG,KACtB,CACF,CACApL,MAAS,EAAA,CACP,IAAI,CAAC0L,cAAc,GACrB,CA3DAjoE,YAAYkiC,MAAM,CAAE8lC,UAAU,CAAEF,eAAe,CAAC,CAC9C,IAAI,CAACN,UAAU,CAAG,EAAE,CACpB,IAAI,CAACC,cAAc,CAAG,EAAE,CACxB,IAAI,CAACC,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACzlC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC8lC,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACF,eAAe,CAAGA,gBACzB,CAoDF,CAEA,MAAMI,iBAAmB,EACzBA,CAAAA,gBAAgB,CAACptC,iBAAkB,CAAA,CAAG,SAAS4P,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CACzE,CAAA,MAAM+Q,IAAMg0B,aAAcy9B,CAAAA,cAAc,CACxCzxD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,MAChB,CACAsoE,CAAAA,gBAAgB,CAACntC,gBAAAA,CAAiB,CAAG,CAAC2P,aAAAA,CAAe9qC,KAAO+F,CAAAA,MAAAA,GAAAA,CAC1D,MAAM+Q,GAAMg0B,CAAAA,aAAAA,CAAcy9B,cAC1BzxD,CAAAA,GAAG,CAAC/Q,MAAO,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CACtB8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,EAAE,CAE5BsoE,CAAAA,gBAAgB,CAACltC,gBAAiB,CAAA,CAAG,CAAC0P,aAAe9qC,CAAAA,KAAAA,CAAO+F,MAC1D,GAAA,CAAA,MAAM+Q,IAAMg0B,aAAcy9B,CAAAA,cAAc,CACxCzxD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,KAAK,CAAC,CAAE,CACtB8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,EAAE,CAC1B8W,GAAG,CAAC/Q,OAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,GAAE,CAE5BsoE,CAAAA,gBAAgB,CAACjtC,gBAAiB,CAAA,CAAG,CAACyP,aAAAA,CAAe9qC,MAAO+F,MAC1D,GAAA,CAAA,MAAM+Q,GAAMg0B,CAAAA,aAAAA,CAAcy9B,cAAc,CACxCzxD,GAAG,CAAC/Q,OAAO,CAAG/F,KAAK,CAAC,CAAA,CAAE,CACtB8W,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,EAC5B,CACAsoE,CAAAA,gBAAgB,CAACrtC,eAAAA,CAAgB,CAAG,SAAS6P,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CAAA,CACvE,MAAM+Q,GAAMg0B,CAAAA,aAAAA,CAAcizB,YAAY,CACtCjnD,GAAG,CAAC/Q,OAAO,CAAG/F,MAChB,CACAsoE,CAAAA,gBAAgB,CAAChtC,iBAAAA,CAAkB,CAAG,SAASwP,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,EACzE,MAAM+Q,GAAAA,CAAMg0B,aAAcizB,CAAAA,YAAY,CACtCjnD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,KAAK,CAAC,CAAE,CACtB8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,EAC5B,CACAsoE,CAAAA,gBAAgB,CAAC/sC,iBAAAA,CAAkB,CAAG,SAASuP,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CAAA,CACzE,MAAM+Q,GAAAA,CAAMg0B,cAAcizB,YAC1BjnD,CAAAA,GAAG,CAAC/Q,MAAO,CAAA,CAAG/F,KAAK,CAAC,EAAE,CACtB8W,GAAG,CAAC/Q,OAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAA,EAAE,CAE5BsoE,CAAAA,gBAAgB,CAAC9sC,kBAAkB,CAAG,SAASsP,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CACzE,CAAA,MAAM+Q,IAAMg0B,aAAcizB,CAAAA,YAAY,CACtCjnD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,KAAK,CAAC,CAAE,CACtB8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,EAC5B,CACAsoE,CAAAA,gBAAgB,CAAC1sC,gBAAAA,CAAiB,CAAG,CAACkP,cAAe9qC,KAAO+F,CAAAA,MAAAA,GAAAA,CAC1D,MAAM+Q,GAAMg0B,CAAAA,aAAAA,CAAcy9B,cAAc,CACxCzxD,GAAG,CAAC/Q,OAAO,CAAG/F,KAAK,CAAC,CAAA,CAAE,CACtB8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAA,EAAE,CAE5BsoE,CAAAA,gBAAgB,CAACzsC,iBAAiB,CAAG,CAACiP,aAAe9qC,CAAAA,KAAAA,CAAO+F,UAC1D,MAAM+Q,GAAAA,CAAMg0B,aAAcy9B,CAAAA,cAAc,CACxCzxD,GAAG,CAAC/Q,MAAO,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CACtB8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,CAC1B8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,EAAA,CAAG,CAAG/F,KAAK,CAAC,GAAE,CAE7BsoE,CAAAA,gBAAgB,CAACrsC,sBAAuB,CAAA,CAAG,SAAS6O,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CAAEsyC,KAAK,CACrF,CAAA,MAAMvhC,GAAMg0B,CAAAA,aAAAA,CAAcy9B,cAAc,CACxC,IAAI,IAAIlwE,CAAAA,CAAI,EAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5Bye,GAAG,CAAC/Q,MAAAA,CAAS1N,CAAI,CAAA,CAAA,CAAE,CAAG2H,KAAK,CAAC3H,CAAE,EAChC,CACF,CACAiwE,CAAAA,gBAAgB,CAACjsC,sBAAsB,CAAG,CAACyO,aAAe9qC,CAAAA,KAAAA,CAAO+F,OAAQsyC,KACvE,GAAA,CAAA,MAAMvhC,GAAMg0B,CAAAA,aAAAA,CAAcy9B,cAAc,CACxC,IAAI,IAAIlwE,CAAAA,CAAI,EAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5Bye,GAAG,CAAC/Q,MAAAA,CAAS1N,CAAI,CAAA,CAAA,CAAE,CAAG2H,KAAK,CAAC3H,CAAI,CAAA,CAAA,CAAE,CAClCye,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,EAAI,CAAI,CAAA,CAAA,EAAE,CAE9C,CACAiwE,CAAAA,gBAAgB,CAAChsC,qBAAAA,CAAsB,CAAG,CAACwO,aAAAA,CAAe9qC,KAAO+F,CAAAA,MAAAA,CAAQsyC,SACvE,MAAMvhC,GAAAA,CAAMg0B,aAAcy9B,CAAAA,cAAc,CACxC,IAAI,IAAIlwE,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5Bye,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,CAAE,CAClCye,CAAAA,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,EAAI,CAAI,CAAA,CAAA,CAAE,CAC1Cye,GAAG,CAAC/Q,MAAAA,CAAS1N,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,EAAI,CAAE,EAC5C,CACF,CACAiwE,CAAAA,gBAAgB,CAAC5rC,iBAAiB,CAAG,CAACoO,cAAe9qC,KAAO+F,CAAAA,MAAAA,CAAQsyC,KAClE,GAAA,CAAA,MAAMvhC,IAAMg0B,aAAc09B,CAAAA,aAAa,CACvC1xD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,MAChB,CACAsoE,CAAAA,gBAAgB,CAAC3rC,iBAAAA,CAAkB,CAAG,CAACmO,aAAAA,CAAe9qC,KAAO+F,CAAAA,MAAAA,CAAQsyC,SACnE,MAAMvhC,GAAAA,CAAMg0B,aAAc09B,CAAAA,aAAa,CACvC1xD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,KAAK,CAAC,CAAE,CACtB8W,CAAAA,GAAG,CAAC/Q,MAAS,CAAA,CAAA,CAAE,CAAG/F,KAAK,CAAC,CAAE,EAC5B,CACAsoE,CAAAA,gBAAgB,CAAC1rC,iBAAAA,CAAkB,CAAG,CAACkO,aAAAA,CAAe9qC,KAAO+F,CAAAA,MAAAA,CAAQsyC,SACnE,MAAMvhC,GAAAA,CAAMg0B,aAAc09B,CAAAA,aAAa,CACvC1xD,GAAG,CAAC/Q,MAAAA,CAAO,CAAG/F,KAAK,CAAC,CAAE,CACtB8W,CAAAA,GAAG,CAAC/Q,OAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,EAAE,CAE5BsoE,CAAAA,gBAAgB,CAACzrC,iBAAkB,CAAA,CAAG,CAACiO,aAAe9qC,CAAAA,KAAAA,CAAO+F,MAAQsyC,CAAAA,KAAAA,GAAAA,CACnE,MAAMvhC,GAAMg0B,CAAAA,aAAAA,CAAc09B,aAC1B1xD,CAAAA,GAAG,CAAC/Q,MAAO,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CACtB8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,CAAE,CAC1B8W,GAAG,CAAC/Q,MAAAA,CAAS,CAAE,CAAA,CAAG/F,KAAK,CAAC,CAAA,EAAE,CAE5BsoE,CAAAA,gBAAgB,CAACxrC,oBAAqB,CAAA,CAAG,SAASgO,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CAAEsyC,KAAK,CAAA,CACnF,MAAMvhC,GAAAA,CAAMg0B,cAAcizB,YAAY,CACtC,IAAI,IAAI1lE,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5Bye,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,EAAE,CAAG2H,KAAK,CAAC3H,CAAAA,EAAE,CAElC,CACAiwE,CAAAA,gBAAgB,CAACtrC,qBAAsB,CAAA,CAAGsrC,gBAAgB,CAACxrC,qBAAqB,CAChFwrC,gBAAgB,CAACvrC,sBAAsB,CAAG,SAAS+N,aAAa,CAAE9qC,KAAK,CAAE+F,MAAM,CAAEsyC,KAAK,EACpF,MAAMvhC,GAAAA,CAAMg0B,aAAc09B,CAAAA,aAAa,CACvC,IAAI,IAAInwE,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5Bye,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,CAAAA,EAAE,CAElC,CACAiwE,CAAAA,gBAAgB,CAACrrC,sBAAuB,CAAA,CAAG,CAAC6N,aAAe9qC,CAAAA,KAAAA,CAAO+F,MAAQsyC,CAAAA,KAAAA,GAAAA,CACxE,MAAMvhC,GAAMg0B,CAAAA,aAAAA,CAAcizB,YAAY,CACtC,IAAI,IAAI1lE,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5Bye,GAAG,CAAC/Q,OAAS1N,CAAI,CAAA,CAAA,CAAE,CAAG2H,KAAK,CAAC3H,CAAI,CAAA,CAAA,CAAE,CAClCye,GAAG,CAAC/Q,MAAAA,CAAS1N,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,EAAI,CAAE,EAC5C,CACF,CACAiwE,CAAAA,gBAAgB,CAACnrC,sBAAuB,CAAA,CAAGmrC,gBAAgB,CAACrrC,sBAAAA,CAAuB,CACnFqrC,gBAAgB,CAACprC,sBAAAA,CAAuB,CAAG,CAAC4N,cAAe9qC,KAAO+F,CAAAA,MAAAA,CAAQsyC,KACxE,GAAA,CAAA,MAAMvhC,IAAMg0B,aAAc09B,CAAAA,aAAa,CACvC,IAAI,IAAInwE,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,IAAI,CAC5Bye,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,EAAE,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,EAAE,CAClCye,GAAG,CAAC/Q,OAAS1N,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,CAAI,CAAA,CAAA,EAAE,CAE9C,CACAiwE,CAAAA,gBAAgB,CAAClrC,sBAAuB,CAAA,CAAG,CAAC0N,aAAAA,CAAe9qC,MAAO+F,MAAQsyC,CAAAA,KAAAA,GAAAA,CACxE,MAAMvhC,GAAAA,CAAMg0B,cAAcizB,YAAY,CACtC,IAAI,IAAI1lE,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5Bye,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,EAAE,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,EAAE,CAClCye,GAAG,CAAC/Q,OAAS1N,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAC1Cye,GAAG,CAAC/Q,MAAAA,CAAS1N,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG2H,KAAK,CAAC3H,EAAI,CAAI,CAAA,CAAA,EAAE,CAE9C,CACAiwE,CAAAA,gBAAgB,CAAChrC,sBAAAA,CAAuB,CAAGgrC,gBAAgB,CAAClrC,sBAAuB,CACnFkrC,CAAAA,gBAAgB,CAACjrC,sBAAuB,CAAA,CAAG,CAACyN,aAAe9qC,CAAAA,KAAAA,CAAO+F,MAAQsyC,CAAAA,KAAAA,GAAAA,CACxE,MAAMvhC,GAAMg0B,CAAAA,aAAAA,CAAc09B,aAAa,CACvC,IAAI,IAAInwE,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5Bye,GAAG,CAAC/Q,MAAAA,CAAS1N,EAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,EAAI,CAAE,CAClCye,CAAAA,GAAG,CAAC/Q,MAAS1N,CAAAA,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG2H,KAAK,CAAC3H,CAAI,CAAA,CAAA,CAAI,EAAE,CAC1Cye,GAAG,CAAC/Q,OAAS1N,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,CAAAA,CAAI,CAAI,CAAA,CAAA,EAAE,CAE9C,CACA,OAAMowE,aAeJjnC,CAAAA,OAAAA,EAAU,CACR,GAAI,IAAI,CAACge,UAAU,CAAE,CACnB,MAAMld,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,IAAI,CAACb,IAAI,CAACD,OAAO,CAACc,MAAAA,CAClBA,CAAAA,MAAO8B,CAAAA,KAAK,CAAC0Y,EAAE,EAAI,IAAI,CAAC3+C,MAAM,CAAC0hD,SAAQ,CAE3C,CACA,IAAI95C,QAAS,CACX,OAAO,IAAI,CAACy5C,UAAU,CAAG,CAAA,CAAI,IAAI,CAACC,UAAU,CAAC15C,MAAM,CAErD2iE,cAActhC,OAAO,CAAE,CACrB,IAAI,CAAC22B,YAAY,CAAG32B,OACpB,CAAA,IAAI,CAACohC,aAAa,CAAG,IAAIhzC,YAAY4R,OAAQr0B,CAAAA,MAAM,CAAEq0B,OAAAA,CAAQib,UAAU,CAAEjb,OAAAA,CAAQthC,UAAU,CAAG,EAC9F,CAAA,IAAI,CAACyiE,cAAc,CAAG,IAAIr2D,YAAak1B,CAAAA,OAAAA,CAAQr0B,MAAM,CAAEq0B,QAAQib,UAAU,CAAEjb,OAAQthC,CAAAA,UAAU,CAAG,CAClG,EAAA,CACAk8B,WAAc,EAAA,CACZ,IAAI,CAACP,IAAI,EAAEO,WAAAA,GACb,CACA2mC,UAAWzW,CAAAA,aAAa,CAAElyD,KAAK,CAAE,CAC/B,MAAM+F,MAASmsD,CAAAA,aAAAA,CAAcnsD,MAAM,CACnC,GAAI/F,KAAU,GAAA,IAAA,EAAQA,QAAUG,SAAW,CAAA,CACzC,MAAMyoE,cAAAA,CAAiBN,gBAAgB,CAACpW,aAAAA,CAAc/E,UAAU,CAAC,CACjE,GAAIyb,cAAAA,CAAgB,CAClBA,cAAAA,CAAe,IAAI,CAAE5oE,KAAAA,CAAO+F,MAAQmsD,CAAAA,aAAAA,CAAc7Z,KAAK,EACzD,CAAA,KAAO,CACL,IAAI,CAACkwB,cAAc,CAAC3nE,GAAG,CAACZ,MAAO+F,MACjC,EAAA,CACF,CACF,CACAnF,IAAIjF,IAAI,CAAEqE,KAAK,CAAE,CACf,MAAMkyD,aAAAA,CAAgB,IAAI,CAAC/zD,MAAM,CAACe,GAAG,CAAC9E,GAAG,CAACuB,MAC1C,GAAIu2D,aAAAA,CAAe,CACjB,IAAI,CAACyW,UAAU,CAACzW,aAAelyD,CAAAA,KAAAA,EACjC,CACF,CACA6oE,WAAAA,CAAYC,gBAAgB,CAAE,CAC5B,GAAI,CAAC,IAAI,CAACtpB,UAAU,CAAE,CACpB,MAAMC,UAAAA,CAAa,IAAI,CAACA,UAAU,CAClC,MAAMspB,aAAetpB,UAAWC,CAAAA,SAAS,CACzC,IAAI,CAACpd,MAAM,CAACuT,cAAc,CAACmyB,KAAK,CAACvoB,UAAAA,CAAY,IAAI,CAACthD,MAAM,CAAC0hD,QAAQ,CACjE,CAAA,IAAI,CAAC6oB,aAAa,CAACjpB,UAAWrY,CAAAA,OAAO,EACrC,GAAI0hC,gBAAAA,CAAkB,CACpBA,gBAAAA,CAAiB3pB,SAAS,CAAGM,UAAAA,CAAWC,SAAS,CAACspB,YAAY,CAAC,IAAI,CACnEF,CAAAA,iBAAiBp+B,OAAO,CAAC,EAAE,CAAG+U,UAAAA,CAAW15C,OAAM,CAEjD,GAAIgjE,YAAAA,GAAiBtpB,WAAWC,SAAS,CAAE,CACzC,IAAI,CAACpa,kBAAkB,CAAG,IAAI,CAAChD,MAAM,CAACiD,cAAa,CAEvD,CACF,CACA0jC,SAAAA,EAAY,CACV,GAAI,IAAI,CAACzpB,UAAU,CAAE,CACnB,IAAI,CAAC/d,IAAI,CAACgI,MAAM,CAAC,IAAI,EACvB,MAAO,CACL,IAAI,CAAC8+B,cAAc,CAAG,IACtB,CAAA,IAAI,CAACxK,YAAY,CAAG,KACtB,CACF,CACAtyB,MAAAA,CAAOq9B,gBAAgB,CAAE,CACvB,IAAI,CAACD,WAAW,CAACC,kBACjB,MAAMxb,QAAAA,CAAW,IAAI,CAACnvD,MAAM,CAACmvD,QAAQ,CACrC,IAAI,IAAIj1D,CAAI,CAAA,CAAA,CAAGA,CAAIi1D,CAAAA,QAAAA,CAASh1D,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACtC,MAAM2H,KAAAA,CAAQstD,QAAQ,CAACj1D,CAAAA,CAAE,CAACsoC,OAAO,CAAC3gC,KAAK,CACvC,IAAI,CAAC2oE,UAAU,CAACrb,QAAQ,CAACj1D,CAAAA,CAAE,CAAE2H,KAC/B,EAAA,CACA,IAAI,CAACipE,SAAS,GAChB,CAhFA7oE,WAAY6hC,CAAAA,cAAc,CAAE9jC,MAAM,CAAEqhD,UAAa,CAAA,IAAI,CAAC,CACpD,IAAI,CAACla,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAAChD,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC9jC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACqhD,UAAU,CAAGA,UAAAA,CAClB,GAAIA,UAAY,CAAA,CACd,IAAI,CAAC/d,IAAI,CAAGQ,cAAAA,CAAeinC,uBAAuB,CAAC,IAAI,CACvD,CAAA,MAAM9hC,OAAU,CAAA,IAAI2B,YAAY5qC,MAAO0hD,CAAAA,QAAQ,CAC/C,CAAA,IAAI,CAAC6oB,aAAa,CAAC,IAAI51D,UAAWs0B,CAAAA,OAAAA,CAAAA,CAClCnF,CAAAA,cAAemC,CAAAA,KAAK,CAAC0Y,EAAE,EAAI,IAAI,CAAC3+C,MAAM,CAAC0hD,SAAQ,CACjD,KAAO,CACL,IAAI,CAACJ,UAAU,CAAG,IAAIioB,wBACxB,CACF,CAoEF,CAEA,MAAM/uB,SAAAA,CAAY,CAChB7oC,IAAMmmB,CAAAA,kBAAAA,CACNkzC,IAAM,CAAA,CAAA,CACNC,WAAY,CACZ/wB,CAAAA,KAAAA,CAAO,CACPgxB,CAAAA,OAAAA,CAAS,KACX,CACA,CAAA,MAAMC,mBA6CJ9nC,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACyU,MAAM,CAACzU,OAAO,EACnB,CAAA,IAAI,CAACyU,MAAM,CAAG,IAAA,CACd,IAAI,CAACnL,aAAa,CAACtJ,OAAO,EAC1B,CAAA,IAAI,CAACsJ,aAAa,CAAG,KACvB,CACA7pC,KAAMqhC,CAAAA,MAAM,CAAEwU,YAAY,CAAEhtC,OAAO,CAAEy/D,cAAc,CAAE,CACnDz/D,OAAUA,CAAAA,OAAAA,EAAWy/D,eACrB,MAAM/sB,KAAAA,CAAQ1yC,QAAQ0yC,KAAK,EAAI+sB,cAAe/sB,CAAAA,KAAK,CACnD,GAAIA,KAAAA,GAAU,CAAG,CAAA,CACf,KAAM,CAAE1R,aAAa,CAAEg+B,gBAAgB,CAAE,CAAG,IAAI,CAChDh+B,aAAAA,CAAc+9B,WAAW,CAACC,gBAAAA,CAAAA,CAC1BxmC,MAAOknC,CAAAA,YAAY,CAAC7pC,iBAAmBmpC,CAAAA,gBAAAA,CAAiB3pB,SAAS,CAAE2pB,iBAAiBp+B,OAAO,CAAA,CAC3FpI,MAAOknC,CAAAA,YAAY,CAAC9pC,cAAgB4C,CAAAA,MAAAA,CAAOmnC,cAAc,CAAA,CACzD,GAAIjtB,KAAQ/tB,CAAAA,eAAAA,GAAoBqoB,YAAAA,CAAaoH,WAAW,EAAIpH,YAAAA,CAAarV,IAAI,CAAC2nB,oBAAoB,CAAD,CAAI,CACnG,MAAM9M,MAAQxyC,OAAQwyC,CAAAA,KAAK,EAAIitB,cAAAA,CAAejtB,KAAK,CACnD,IAAI,CAACotB,SAAS,CAAC9oE,GAAG,CAAC07C,KACnBha,CAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,EACzC,MAAO,CACLlM,MAAAA,CAAOsV,aAAa,CAACxK,UAAAA,CAAWqB,OAAO,EACzC,CACA3D,aAAclqC,CAAAA,GAAG,CAAC,OAAS,CAAA,IAAI,CAAC8oE,SAAS,EACzC,GAAIltB,KAAAA,CAAQ9tB,eAAmBooB,EAAAA,YAAAA,CAAazT,KAAK,CAAE,CACjD,MAAMA,KAAAA,CAAQv5B,QAAQu5B,KAAK,EAAIkmC,cAAelmC,CAAAA,KAAK,CACnDyH,aAAclqC,CAAAA,GAAG,CAAC,OAAA,CAASyiC,OAC3Bf,MAAOwV,CAAAA,aAAa,CAAC7I,UAAAA,CAAWQ,UAAU,EAC5C,CAAA,KAAO,CACL3E,aAAclqC,CAAAA,GAAG,CAAC,OAAS,CAAA,CAAA,CAAA,CAC3B0hC,MAAOwV,CAAAA,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,EACzC,CACA,GAAIgN,KAAQ7tB,CAAAA,iBAAAA,EAAqBmoB,YAAayF,CAAAA,OAAO,EACrDzR,aAAcm+B,CAAAA,SAAS,EACvB3mC,CAAAA,MAAAA,CAAOyV,WAAW,CAAC7oB,aAAAA,CAAAA,CACnBoT,MAAOqnC,CAAAA,SAAS,CAAC,IAAI,CAAC1zB,MAAM,CAAA,CAC5B3T,OAAOoW,IAAI,CAACC,SACd,EAAA,CACF,CAhFAv4C,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,MAAM3kC,KAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Bd,IAAA,CAAC,CACD,IAAI,CAACs4C,MAAM,CAAG,IAAIqxB,MAAAA,CAAOhlC,MAAQ,CAAA,CAC/B3mC,KAAM,2BACNu+D,CAAAA,cAAAA,CAAgB3/B,oBAChB01B,OAAStyD,CAAAA,IAAAA,CACTwyD,QAASxyD,IACX,CAAA,CACA,CAAA,IAAI,CAACmtC,aAAa,CAAG,IAAI29B,aAAcnmC,CAAAA,MAAAA,CAAQ,IAAI+qB,mBAAoB/qB,CAAAA,MAAAA,CAAQ,CAC7E,IAAIwqB,cAAc,OAASzxB,CAAAA,gBAAAA,CAAAA,CAC3B,IAAIyxB,aAAc,CAAA,OAAA,CAAS5xB,mBAC5B,CAAG,CAAA,KAAA,CACJ,CAAA,IAAI,CAAC4tC,gBAAgB,CAAG,IAAIr+B,gBAC5B,CAAA,IAAI,CAACi/B,SAAS,CAAG,IAAIx3D,YAAa,CAAA,CAAA,EACpC,CAsCF,CAEA,MAAM03D,qBAyCJpoC,OAAU,EAAA,CACR,IAAI,CAACyU,MAAM,CAACzU,OAAO,EACnB,CAAA,IAAI,CAACyU,MAAM,CAAG,KAChB,CACAsmB,SAASsN,aAAa,CAAE,CACtB,MAAM7O,YAAAA,CAAe6O,cAAc91B,IAAI,CACvC,GAAIinB,YAAAA,CAAahQ,aAAa,EAAI,CAAA,CAAG,CACnC,MACF,CACA,GAAI6e,aAAAA,CAAc1/B,OAAO,CAACtC,MAAM,CAAE,CAChC,MACF,CACA,MAAMvF,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAM+c,IAAO/c,CAAAA,MAAAA,CAAO+c,IAAI,CACxB,MAAMmH,aAAe,IAAI,CAACvQ,MAAM,CAACxU,IAAI,CACrC,MAAM4jB,SAAWhG,IAAKkI,CAAAA,oBAAoB,CAAC,CACzClH,MAAAA,CAAQ,MACRoG,CAAAA,MAAAA,CAAQ,CACNtiD,MAAQqiD,CAAAA,YAAAA,CAAaE,qBAAqB,EAAA,CAC1CC,WAAYH,YAAaI,CAAAA,gBAAgB,CAC3C,CACAz8C,SAAU,CACRhG,MAAAA,CAAQqiD,aAAaS,uBAAuB,EAAA,CAC5CN,WAAYH,YAAaU,CAAAA,kBAAkB,CAC3C3Q,OAAAA,CAAS,CACP,CACEp4C,MAAAA,CAAQ68D,aAAa78D,MACvB,EACD,CACH,CACAw6C,SAAW,CAAA,CACTkO,SAAU,gBACZ,CACF,GACA,MAAM1c,OAAAA,CAAU0/B,cAAc1/B,OAAO,CACrC,MAAM2/B,QAAAA,CAAW3/B,QAAQrG,OAAO,CAAG,CAAIqG,CAAAA,OAAAA,CAAQzC,KAAK,CAAGyC,OAAAA,CAAQvC,WAAW,CAAG,EAC7E,MAAMmiC,QAAAA,CAAW,EAAE,CACnB,IAAI,IAAIphC,IAAO,CAAA,CAAA,CAAGA,IAAOmhC,CAAAA,QAAAA,CAAUnhC,OAAO,CACxCohC,QAAAA,CAAS5wE,IAAI,CAAC0wE,aAAAA,CAAcpgB,UAAU,CAAC,CACrCvmB,SAAW,CAAA,IAAA,CACXioB,aAAc,CACdH,CAAAA,aAAAA,CAAe,EACfC,cAAgBtiB,CAAAA,IAClB,IACF,CACA,MAAM40B,cAAiBj7B,CAAAA,MAAAA,CAAOk7B,iBAAiB,EAC/C,CAAA,IAAI,IAAInlE,CAAAA,CAAI,EAAGA,CAAI2iE,CAAAA,YAAAA,CAAahQ,aAAa,CAAE3yD,IAAI,CACjD,IAAI,IAAIswC,IAAO,CAAA,CAAA,CAAGA,KAAOmhC,QAAUnhC,CAAAA,IAAAA,EAAAA,CAAO,CACxC,MAAMqhC,QAAUH,aAAcpgB,CAAAA,UAAU,CAAC,CACvCvmB,SAAAA,CAAW,KACXioB,YAAc9yD,CAAAA,CAAAA,CACd2yD,aAAe,CAAA,CAAA,CACfC,eAAgBtiB,IAClB,CAAA,CAAA,CACA,MAAMshC,WAAc1M,CAAAA,cAAAA,CAAe2M,eAAe,CAAC,CACjD/iB,gBAAkB,CAAA,CAChB,CACEhgD,IAAM6iE,CAAAA,OAAAA,CACNre,MAAQ,CAAA,OAAA,CACRC,QAAS,OACX,CAAA,CACD,CACH,CAAA,CACA,MAAMzM,SAAYE,CAAAA,IAAAA,CAAKC,eAAe,CAAC,CACrCe,OAAQgF,QAAS8kB,CAAAA,kBAAkB,CAAC,CAAA,CAAA,CACpC5qB,QAAS,CACP,CACEI,QAAS,CACTC,CAAAA,QAAAA,CAAU,IAAI,CAACwqB,UAAU,CAC3B,CACA,CACEzqB,OAAS,CAAA,CAAA,CACTC,SAAUmqB,QAAQ,CAACphC,KAAK,CAC1B,CACD,CACH,CAAA,CACAshC,YAAYI,WAAW,CAAChlB,UACxB4kB,WAAYT,CAAAA,YAAY,CAAC,CAAGrqB,CAAAA,SAAAA,CAAAA,CAC5B8qB,WAAYvxB,CAAAA,IAAI,CAAC,CACjBuxB,CAAAA,CAAAA,WAAAA,CAAYlsE,GAAG,EACfgsE,CAAAA,QAAQ,CAACphC,IAAAA,CAAK,CAAGqhC,QACnB,CACF,CACA1nC,MAAAA,CAAO+iB,QAAQ,CAAG,KACpB,CA5HAjlD,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,MAAM3kC,KAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Bd,IAAA,CAAC,CACD,IAAI,CAACs4C,MAAM,CAAG,IAAIqxB,MAAOhlC,CAAAA,MAAAA,CAAQ,CAC/B3mC,IAAM,CAAA,4BAAA,CACNu+D,eAAgB3/B,mBAChB01B,CAAAA,OAAAA,CAAStyD,KACTwyD,OAASxyD,CAAAA,IACX,EACA,CAAA,IAAI,CAACysE,UAAU,CAAG9nC,MAAO+c,CAAAA,IAAI,CAACqc,aAAa,CAAC,CAC1C31B,SAAW,CAAA,QACb,GACF,CAsFF,CAEA,MAAMukC,aAQJtB,CAAAA,YAAAA,CAAalsB,EAAE,CAAE,CACf,MAAMytB,MAASztB,CAAAA,EAAAA,CAAG3+C,MAAM,CAAC0hD,QAAQ,CACjC,IAAIV,UAAY,IAAI,CAACqrB,cAAc,CAACpwE,GAAG,CAACmwE,MACxC,CAAA,CAAA,GAAI,CAACprB,SAAW,CAAA,CACdA,UAAY,IAAIxU,SAAAA,CAAU,IAAI,CAACrI,MAAM,CAAE,IAAI,CAAC8e,eAAe,CAAEtE,IAC7DqC,SAAU1T,CAAAA,MAAM,GAChB,IAAI,CAAC++B,cAAc,CAAC5pE,GAAG,CAAC2pE,MAAQprB,CAAAA,SAAAA,EAClC,CACA,OAAOA,SACT,CAhBA/+C,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACkoC,cAAc,CAAG,IAAI/pE,GAC1B,CAAA,IAAI,CAAC6hC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC8e,eAAe,CAAG,IAAI7f,gBAAgB,IAAI,CAACe,MAAM,CAAE,CACtD,IAAI1B,uBAAAA,CAAwBf,iCAAkCnB,kBAAqBC,CAAAA,oBAAAA,CAAAA,CACpF,EACH,CAWF,CAEA,MAAM8rC,mBAA4BH,SAAAA,aAAAA,CAahC9oC,QAAQc,MAAM,CAAE,CACdA,MAAO8B,CAAAA,KAAK,CAAC0Y,EAAE,EAAI,IAAI,CAAC/pC,MAAM,CAACxV,IAAI,CACnC,IAAI,CAACwV,MAAM,CAACyuB,OAAO,EACnB,CAAA,IAAI,CAACzuB,MAAM,CAAG,KAChB,CACA23D,WAAAA,EAAc,CACZ,IAAI,CAACC,WAAW,CAAG,IAAI,CAAC53D,MAAM,CAAC63D,cAAc,GAC/C,CACA5C,KAAMjiE,CAAAA,MAAM,CAAExI,IAAI,CAAE,CAClB,OAAO,IAAIuV,WAAW,IAAI,CAAC63D,WAAW,CAAE5kE,MAAAA,CAAQxI,IAAO,CAAA,CAAA,CACzD,CAtBA6C,WAAYkiC,CAAAA,MAAM,CAAE/kC,IAAI,CAAEstE,SAAS,CAAC,CAClC,KAAK,CAACvoC,MAAAA,CAAAA,CAAS,IAAI,CAACvvB,MAAM,CAAG,IAAM,CAAA,IAAI,CAAC43D,WAAW,CAAG,IACtD,CAAA,IAAI,CAAC53D,MAAM,CAAGuvB,MAAO+c,CAAAA,IAAI,CAAC2C,YAAY,CAAC,CACrCzkD,IAAMA,CAAAA,IAAAA,CACNuzC,MAAO+5B,SAAY3oB,CAAAA,cAAAA,CAAe4oB,SAAS,CAAG5oB,cAAAA,CAAesI,QAAQ,CAAGtI,cAAAA,CAAe6oB,OAAO,CAAG7oB,eAAeC,QAAQ,CACxH6oB,iBAAkBH,SACpB,CAAA,CAAA,CACA,GAAIA,SAAW,CAAA,CACb,IAAI,CAACH,WAAW,GAClB,CACApoC,MAAAA,CAAO8B,KAAK,CAAC0Y,EAAE,EAAIv/C,KACrB,CAYF,CAEA,MAAM0tE,6BAA6BtD,cACjC3lB,CAAAA,YAAAA,CAAa1f,MAAM,CAAE/kC,IAAI,CAAEstE,SAAS,CAAE,CACpC,OAAO,IAAIJ,oBAAoBnoC,MAAQ/kC,CAAAA,IAAAA,CAAMstE,UAC/C,CACAlO,MAAAA,EAAS,CACP,KAAK,CAACA,MACN,EAAA,CAAA,MAAMtkB,MAAQ,IAAI,CAACyvB,WAAW,CAACxvE,MAAM,CACrC,GAAI+/C,KAAAA,CAAO,CACT,MAAM/V,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMslC,UAAAA,CAAa,IAAI,CAACA,UAAU,CAClC,MAAMrK,eAAiBj7B,MAAO+c,CAAAA,IAAI,CAAC6rB,oBAAoB,EAAA,CACvD,IAAI,IAAI7yE,CAAAA,CAAIggD,MAAQ,CAAGhgD,CAAAA,CAAAA,EAAK,EAAGA,CAAI,EAAA,CAAA,CACjC,MAAM8yE,UAAa,CAAA,IAAI,CAACrD,WAAW,CAACzvE,CAAE,CAAA,CACtC,KAAM,CAAEglE,aAAa,CAAE3d,SAAS,CAAE35C,MAAM,CAAExI,IAAI,CAAE,CAAG4tE,UAAAA,CACnD,MAAMl9D,GAAMovD,CAAAA,aAAAA,CAActqD,MAAM,CAChC9E,GAAAA,CAAIm9D,KAAK,EACT7N,CAAAA,cAAAA,CAAe8N,kBAAkB,CAACp9D,IAAKlI,MAAQ25C,CAAAA,SAAAA,CAAU3sC,MAAM,CAAEhN,MAAAA,CAAQxI,MACzEqqE,UAAWzuE,CAAAA,IAAI,CAACumD,SAClB,EAAA,CACA,MAAM4rB,EAAK/N,CAAAA,cAAAA,CAAegO,MAAM,EAChCjpC,CAAAA,MAAAA,CAAOkpC,gBAAgB,CAACF,EAAAA,CAAI,IAC5B,CAAA,CAAA,IAAI,IAAIjzE,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAMglE,aAAAA,CAAgB,IAAI,CAACyK,WAAW,CAACzvE,CAAE,CAAA,CAACglE,aAAa,CACvD,IAAI,CAACoO,qBAAqB,CAACtyE,IAAI,CAACkkE,eAClC,CACA,IAAI,CAACyK,WAAW,CAACxvE,MAAM,CAAG,EAC5B,CACF,CACAozE,yBAAAA,EAA4B,CAC1B,MAAMrzB,KAAAA,CAAQ,IAAI,CAACozB,qBAAqB,CAACnzE,MAAM,CAC/C,GAAI+/C,KAAAA,CAAO,CACT,IAAI,IAAIhgD,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAMglE,aAAgB,CAAA,IAAI,CAACoO,qBAAqB,CAACpzE,EAAE,CACnDglE,aAAAA,CAActqD,MAAM,CAAC44D,QAAQ,CAACC,UAAAA,CAAWC,KAAK,CAAEvnE,CAAAA,IAAI,CAAC,IACnD,CAAA,GAAI,IAAI,CAACujE,cAAc,CAAE,CACvBxK,aAAAA,CAAcqN,WAAW,EACzB,CAAA,IAAI,CAAC7C,cAAc,CAAC1uE,IAAI,CAACkkE,aAAAA,EAC3B,CACF,CAAA,EACF,CACA,IAAI,CAACoO,qBAAqB,CAACnzE,MAAM,CAAG,EACtC,CACF,CACA8H,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACotE,qBAAqB,CAAG,GAAE,CAEnD,CAEA,MAAMK,WACJ9pC,CAAAA,WAAAA,EAAc,CACZ,IAAI,CAAC+pC,oBAAoB,CAAC9qE,KAAK,GACjC,CACA,IAAIiK,QAAQlL,KAAK,CAAE,CACjB,IAAI,CAACgsE,cAAc,CAAGhsE,MACxB,CACA,IAAIkL,SAAU,CACZ,OAAO,IAAI,CAAC8gE,cAAc,CAE5BC,oBAAAA,EAAuB,CACrB,GAAI,IAAI,CAACD,cAAc,GAAK,IAAI,CAACE,QAAQ,CAAE,CACzC,IAAI,CAACA,QAAQ,CAAG,IAAI,CAACF,cAAc,CACnC,GAAI,CAAC,IAAI,CAACE,QAAQ,CAAE,CAClB,IAAI,CAACC,UAAU,CAAG,EACpB,CACF,CACF,CACAC,QAAQ7mC,aAAa,CAAE,CACrB,IAAI,CAACwmC,oBAAoB,CAACnrE,GAAG,CAAC2kC,aAAe,CAAA,IAAI,CAAC8mC,gBAAgB,CAClE,CAAA,IAAI,CAACA,gBAAgB,CAAG,GAAE,CAE5BC,OAAO/mC,aAAa,CAAEgnC,OAAO,CAAE,CAC7B,GAAIA,OAAS,CAAA,CACX,MAAMC,WAAc,CAAA,IAAI,CAACT,oBAAoB,CAAC3xE,GAAG,CAACmrC,aAAAA,CAAAA,CAClD,GAAIgnC,OAAQj0E,CAAAA,MAAM,CAAG,CAAA,CAAG,CACtB,IAAI,CAAC6zE,UAAU,CAAGI,OAAAA,CAAQ14B,MAAM,CAAC,CAAC44B,IAAKtjE,CAAIsjE,GAAAA,GAAAA,CAAMtjE,EAAG,CACtD,EAAA,CACA,GAAI6B,OAAQ5Q,CAAAA,GAAG,CAACvD,mBAAsB,CAAA,CAAA,CACpC,IAAIi9C,KAAAA,CAAQ,EACZ,IAAI,IAAIz7C,EAAI,CAAGA,CAAAA,CAAAA,CAAIm0E,YAAYl0E,MAAM,CAAE,EAAED,CAAE,CAAA,CACzCm0E,WAAW,CAACn0E,CAAAA,CAAE,CACdy7C,KAASy4B,EAAAA,OAAO,CAACl0E,CAAE,EACrB,CACF,CACF,CACA,IAAI,CAAC0zE,oBAAoB,CAAC7qE,MAAM,CAACqkC,aACnC,EAAA,CACAmnC,QAAQ/wE,IAAI,CAAE,CACZ,GAAI,IAAI,CAAC0wE,gBAAgB,CAAC/zE,MAAM,EAAI,IAAI,CAACq0E,QAAQ,CAAE,CACjD,OAAO,CAAC,CACV,CACA,MAAMjsC,IAAO,CAAA,IAAI,CAAC2rC,gBAAgB,CAAC/zE,MAAM,CACzC,IAAI,CAAC+zE,gBAAgB,CAAClzE,IAAI,CAACwC,IAAAA,CAAAA,CAC3B,OAAO+kC,IACT,CACA,IAAIksC,SAAAA,EAAY,CACd,OAAO,IAAI,CAACP,gBAAgB,CAAC/zE,MAAM,CAErC8H,aAAa,CACX,IAAI,CAACisE,gBAAgB,CAAG,EAAE,CAC1B,IAAI,CAACN,oBAAoB,CAAG,IAAItrE,GAChC,CAAA,IAAI,CAACyrE,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACF,cAAc,CAAG,KACtB,CAAA,IAAI,CAACG,UAAU,CAAG,CAClB,CAAA,IAAI,CAACQ,QAAQ,CAAG,KAClB,CACF,CAEA,MAAME,cAiBJrrC,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACsrC,QAAQ,EAAEtrC,OAAAA,EACf,CAAA,IAAI,CAACsrC,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,WAAW,EAAEvrC,SAClB,CAAA,IAAI,CAACurC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,mBAAmB,CAAG,KAC3B,IAAI,CAACnF,cAAc,CAAC7iE,OAAO,CAAEq4D,gBAC3BA,aAAc77B,CAAAA,OAAO,GACvB,CACA,CAAA,CAAA,IAAI,CAACqmC,cAAc,CAAG,KACxB,CACAoF,kBAAmB,CACjB,IAAI5P,cAAgB,IAAI,CAACwK,cAAc,CAACluE,GAAG,EAC3C,CAAA,GAAI,CAAC0jE,aAAe,CAAA,CAClBA,cAAgB,IAAI,CAAC/6B,MAAM,CAAC+c,IAAI,CAAC2C,YAAY,CAAC,CAC5CzkD,IAAM,CAAA,IAAI,CAACwvE,WAAW,CAACxvE,IAAI,CAC3BuzC,KAAAA,CAAOoR,cAAeC,CAAAA,QAAQ,CAAGD,cAAegrB,CAAAA,QAAQ,CAE5D,EAAA,CACA,OAAO7P,aACT,CACA36B,QAAQ2V,KAAK,CAAE,CACb,MAAM/V,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMi7B,cAAAA,CAAiBj7B,MAAOk7B,CAAAA,iBAAiB,GAC/CD,cAAe4P,CAAAA,eAAe,CAAC,IAAI,CAACL,QAAQ,CAAE,CAAA,CAAGz0B,MAAO,IAAI,CAAC00B,WAAW,CAAE,CAAA,CAAA,CAC1E,MAAMC,mBAAsB,CAAA,IAAI,CAACC,gBAAgB,EACjD,CAAA,IAAI,CAACD,mBAAmB,CAAGA,oBAC3BzP,cAAe8N,CAAAA,kBAAkB,CAAC,IAAI,CAAC0B,WAAW,CAAE,CAAA,CAAGC,oBAAqB,CAAG,CAAA,IAAI,CAACI,YAAY,CAAG/0B,OACrG,CACA+zB,OAAAA,CAAQ/zB,KAAK,CAAE9S,aAAa,CAAE,CAC5B,MAAM83B,aAAgB,CAAA,IAAI,CAAC2P,mBAC3B,CAAA,IAAI,CAACA,mBAAmB,CAAG,IAAA,CAC3B,OAAO3P,aAAcsO,CAAAA,QAAQ,CAACC,UAAWyB,CAAAA,IAAI,CAAE/oE,CAAAA,IAAI,CAAC,IAClD,CAAA,MAAMgpE,WAAa,IAAIC,aAAAA,CAAclQ,cAAcuN,cAAc,EAAA,CAAA,CACjE,MAAM2B,OAAU,CAAA,EAAE,CAClB,IAAI,IAAIl0E,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5Bk0E,OAAQpzE,CAAAA,IAAI,CAACgpB,MAAOmrD,CAAAA,UAAU,CAACj1E,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGi1E,UAAU,CAACj1E,CAAI,CAAA,CAAA,CAAE,EAAI,IACnE,EAAA,CACAglE,cAAc+N,KAAK,EACnB,CAAA,IAAI,CAACvD,cAAc,EAAE1uE,KAAKkkE,aAC1B,CAAA,CAAA,OAAO,CACL93B,aACAgnC,CAAAA,OACF,CACF,CACF,CAAA,CA7DAnsE,YAAYkiC,MAAM,CAAEkrC,WAAW,CAAEC,QAAQ,CAAC,CACxC,IAAI,CAAC5F,cAAc,CAAG,EACtB,CAAA,IAAI,CAACmF,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAAC1qC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACmrC,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACL,YAAY,CAAGI,YAAc,CAAI,CAAA,CAAA,CACtC,MAAMnuB,IAAO/c,CAAAA,MAAAA,CAAO+c,IAAI,CACxB,IAAI,CAACytB,QAAQ,CAAGztB,IAAKquB,CAAAA,cAAc,CAAC,CAClC59D,IAAAA,CAAM09D,YAAc,WAAc,CAAA,WAAA,CAClCn1B,KAAOo1B,CAAAA,QACT,EACA,CAAA,IAAI,CAACV,WAAW,CAAG1tB,KAAK2C,YAAY,CAAC,CACnCzkD,IAAM,CAAA,IAAI,CAAC6vE,YAAY,CAAGK,SAC1B38B,KAAOoR,CAAAA,cAAAA,CAAeyrB,aAAa,CAAGzrB,cAAAA,CAAe0rB,OAAO,CAAG1rB,eAAesI,QAAQ,CAAGtI,eAAeC,QAC1G,GACF,CA+CF,CAEA,MAAM0rB,iBAA0B/B,SAAAA,WAAAA,CAO9BtqC,SAAU,CACR,IAAI,CAACssC,mBAAmB,EAAEtsC,SAC1B,CAAA,IAAI,CAACssC,mBAAmB,CAAG,KAC7B,CACApzB,YAAa,CACX,IAAI,CAACuxB,oBAAoB,GAC3B,CACArxB,QAAW,EAAA,CACT,GAAI,IAAI,CAACsxB,QAAQ,CAAE,CACjB,IAAI,CAAC4B,mBAAmB,EAAEprC,OAAAA,CAAQ,IAAI,CAACkqC,SAAS,CAAG,CACrD,EAAA,CACF,CACAR,OAAU,EAAA,CACR,GAAI,IAAI,CAACF,QAAQ,CAAE,CACjB,MAAM3mC,aAAgB,CAAA,IAAI,CAACjD,MAAM,CAACiD,aAClC,CAAA,IAAI,CAACuoC,mBAAmB,EAAE1B,OAAAA,CAAQ,IAAI,CAACQ,SAAS,CAAErnC,aAAejhC,CAAAA,CAAAA,IAAAA,CAAK,OACpE,EAAA,CAAA,IAAI,CAACgoE,MAAM,CAACyB,QAAQxoC,aAAa,CAAEwoC,OAAQxB,CAAAA,OAAO,EACpD,CACA,CAAA,CAAA,KAAK,CAACH,OAAQ7mC,CAAAA,aAAAA,EAChB,CACF,CA1BAnlC,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,KAAK,EACL,CAAA,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAACqqC,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACmB,mBAAmB,CAAGxrC,MAAAA,CAAO0rC,sBAAsB,CAAG,IAAInB,eAAevqC,MAAQ,CAAA,IAAA,CAAM,EAAI,IAAI,CAACqqC,QAAQ,CAAI,CAAA,KACnH,CAsBF,CAEA,MAAMsB,cAqCJzsC,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACyU,MAAM,CAACzU,OAAO,EACnB,CAAA,IAAI,CAACyU,MAAM,CAAG,IACd,CAAA,IAAI,CAACi4B,aAAa,CAAG,KACvB,CACAC,YAAYhwE,MAAM,CAAE,CAClB,IAAIknD,QAAAA,CAAW,IAAI,CAAC6oB,aAAa,CAAC9zE,GAAG,CAAC+D,QACtC,GAAI,CAACknD,SAAU,CACbA,QAAAA,CAAW,IAAI,CAAC+oB,cAAc,CAACjwE,MAAAA,CAAAA,CAC/B,IAAI,CAAC+vE,aAAa,CAACttE,GAAG,CAACzC,OAAQknD,QACjC,EAAA,CACA,OAAOA,QACT,CACA+oB,eAAejwE,MAAM,CAAE,CACrB,MAAMqoD,YAAAA,CAAe,IAAI,CAACvQ,MAAM,CAACxU,IAAI,CACrC,MAAM4jB,QAAAA,CAAW,IAAI,CAAC/iB,MAAM,CAAC+c,IAAI,CAACkI,oBAAoB,CAAC,CACrDlH,OAAQ,MACRoG,CAAAA,MAAAA,CAAQ,CACNtiD,MAAQqiD,CAAAA,YAAAA,CAAaE,qBAAqB,EAC1CC,CAAAA,UAAAA,CAAYH,YAAaI,CAAAA,gBAAgB,CAE3Cz8C,CAAAA,QAAAA,CAAU,CACRhG,MAAQqiD,CAAAA,YAAAA,CAAaS,uBAAuB,EAC5CN,CAAAA,UAAAA,CAAYH,aAAaU,kBAAkB,CAC3C3Q,QAAS,CACP,CACEp4C,OAAQA,MACV,CAAA,CACD,CAEHw6C,CAAAA,SAAAA,CAAW,CACTkO,QAAAA,CAAU,gBACZ,CACF,CAAA,CAAA,CACA,OAAOxB,QACT,CACAgpB,aAAa9Q,cAAc,CAAE+Q,aAAa,CAAEC,kBAAkB,CAAE,CAC9D,MAAMjsC,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAM+c,IAAO/c,CAAAA,MAAAA,CAAO+c,IAAI,CACxB,MAAMgG,SAAW,IAAI,CAAC8oB,WAAW,CAACI,kBAAAA,CAAmBpwE,MAAM,CAC3D,CAAA,MAAM2rE,SAAWwE,aAAc1T,CAAAA,kBAAkB,CACjD,IAAI,IAAIjyB,KAAO,CAAGA,CAAAA,IAAAA,CAAOmhC,QAAUnhC,CAAAA,IAAAA,EAAAA,CAAO,CACxC,MAAM6lC,OAAAA,CAAUF,cAAc7kB,UAAU,CAAC,CACvCvmB,SAAW,CAAA,IAAA,CACXloB,OAAQ,YACRmwC,CAAAA,YAAAA,CAAc,EACdH,aAAe,CAAA,CAAA,CACfC,eAAgBtiB,IAClB,CAAA,CAAA,CACA,MAAMqhC,OAAUuE,CAAAA,kBAAAA,CAAmB9kB,UAAU,CAAC,CAC5CvmB,SAAW,CAAA,IAAA,CACXioB,aAAc,CACdH,CAAAA,aAAAA,CAAe,EACfC,cAAgBtiB,CAAAA,IAClB,GACA,MAAMshC,WAAAA,CAAc1M,eAAe2M,eAAe,CAAC,CACjD/iB,gBAAkB,CAAA,CAChB,CACEhgD,IAAM6iE,CAAAA,OAAAA,CACNre,MAAQ,CAAA,OAAA,CACRC,QAAS,OACX,CAAA,CACD,CAEH,CAAA,CAAA,MAAMzM,UAAYE,IAAKC,CAAAA,eAAe,CAAC,CACrCe,MAAAA,CAAQgF,SAAS8kB,kBAAkB,CAAC,GACpC5qB,OAAS,CAAA,CACP,CACEI,OAAS,CAAA,CAAA,CACTC,QAAU4uB,CAAAA,OACZ,EACD,CACH,CAAA,CACAvE,YAAYI,WAAW,CAAChlB,UACxB4kB,WAAYT,CAAAA,YAAY,CAAC,CAAGrqB,CAAAA,SAAAA,CAAAA,CAC5B8qB,YAAYvxB,IAAI,CAAC,GACjBuxB,WAAYlsE,CAAAA,GAAG,GACjB,CACAukC,MAAAA,CAAO+iB,QAAQ,CAAG,KACpB,CAnHAjlD,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAAC4rC,aAAa,CAAG,IAAIztE,GACzB,CAAA,IAAI,CAAC6hC,MAAM,CAAGA,MACd,CAAA,MAAM3kC,KAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBd,IAAA,CAAC,CACD,IAAI,CAACs4C,MAAM,CAAG,IAAIqxB,MAAAA,CAAOhlC,MAAQ,CAAA,CAC/B3mC,KAAM,2BACNu+D,CAAAA,cAAAA,CAAgB3/B,mBAChB01B,CAAAA,OAAAA,CAAStyD,KACTwyD,OAASxyD,CAAAA,IACX,CACF,EAAA,CAiFF,CAEA,MAAM8wE,aAAAA,CAmBJjtC,OAAU,EAAA,CACR,IAAI,CAACuJ,cAAc,CAAC/lC,OAAO,CAAC,EAAC83C,EAAKA,EAAGtb,CAAAA,OAAO,GAC5C,CAAA,IAAI,CAACuJ,cAAc,CAACzyC,MAAM,CAAG,CAC7B,CAAA,IAAI,CAAC6mD,SAAS,CAAC3d,OAAO,EACtB,CAAA,IAAI,CAAC2d,SAAS,CAAG,KACnB,CACAuvB,eAAAA,EAAkB,CAChB,KAAM,CAAEvvB,SAAS,CAAE,CAAG,IAAI,CAC1BA,SAAU3T,CAAAA,oBAAoB,EAC9B2T,CAAAA,SAAAA,CAAU1T,MAAM,GAClB,CACAkjC,QAASjiE,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CAChB,MAAM+tB,MAAAA,CAAS,IAAI,CAAC5Z,OAAO,CAAC4Z,MAAM,CAClCA,MAAAA,CAAOknC,YAAY,CAAC,CAAA,CAAG,IAAI,CAACrqB,SAAS,CACrC,CAAA,MAAM8qB,WAAc3nC,CAAAA,MAAAA,CAAO2nC,WAAW,CACtCA,WAAAA,CAAYI,WAAW,CAAC,IAAI,CAAChlB,QAAQ,CACrC4kB,CAAAA,WAAAA,CAAY2E,kBAAkB,CAACliE,CAAAA,CAAG0H,CAAGG,CAAAA,CAAAA,EACvC,CAnCAnU,WAAYsoB,CAAAA,OAAO,CAAC,CAClB,IAAI,CAACqiB,cAAc,CAAG,EAAE,CACxB,IAAI,CAACoU,SAAS,CAAG,IACjB,CAAA,IAAI,CAACz2B,OAAO,CAAGA,OAAAA,CACf,KAAM,CAAE4Z,MAAM,CAAE2T,MAAM,CAAE,CAAGvtB,QAC3B,KAAM,CAAE2xC,sBAAsB,CAAED,2BAA2B,CAAE,CAAGnkB,MAAOxU,CAAAA,IAAI,CAC3E,IAAI,CAAC0d,SAAS,CAAG,IAAIxU,SAAAA,CAAUrI,MAAQ+3B,CAAAA,sBAAAA,CAAAA,CACvC,GAAID,2BAA6B,CAAA,CAC/B,IAAI,MAAMz+D,QAAQy+D,2BAA4B,CAAA,CAC5C,GAAIA,2BAAAA,CAA4B11D,cAAc,CAAC/I,IAAAA,CAAAA,CAAO,CACpD,MAAMmhD,GAAK,IAAI2rB,aAAAA,CAAcnmC,MAAQ83B,CAAAA,2BAA2B,CAACz+D,IAAK,CAAA,CAAE,IACxE,CAAA,CAAA,IAAI,CAACovC,cAAc,CAAC5xC,IAAI,CAAC2jD,IACzB,IAAI,CAACqC,SAAS,CAACtU,gBAAgB,CAAClvC,IAAAA,CAAMmhD,EACxC,EAAA,CACF,CACF,CACA,IAAI,CAACuI,QAAQ,CAAG/iB,MAAOusC,CAAAA,eAAe,CAACz0E,GAAG,CAAC67C,MAAQokB,CAAAA,sBAAAA,EACrD,CAmBF,CAEA,IAAIyU,IAAO,CAAA,CACX,CAAMC,MAAAA,aAAAA,CAWJvtC,SAAU,CACR,MAAMc,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM3/B,GAAAA,CAAM2/B,OAAOmO,OAAO,CAACnvC,OAAO,CAAC,IAAI,CACvC,CAAA,GAAIqB,GAAQ,GAAA,CAAC,EAAG,CACd2/B,MAAAA,CAAOmO,OAAO,CAACtvC,MAAM,CAACwB,GAAAA,CAAK,CAC7B,EAAA,CACA,IAAI,CAACwhC,sBAAsB,CAAC7B,MAAAA,CAAO8B,KAAK,CAAE,CAAC,IAAI,CAACyb,QAAQ,CACxD,CAAA,IAAI,CAACpe,IAAI,CAACD,OAAO,CAACc,MACpB,EAAA,CACA6B,uBAAuBe,IAAI,CAAE3nC,IAAI,CAAE,CACjC2nC,IAAK6X,CAAAA,EAAE,EAAIx/C,KACb,CACA+jC,IAAKv7B,CAAAA,MAAAA,CAAS,CAAC,CAAExI,KAAO,IAAI,CAACsiD,QAAQ,CAAExtC,KAAO,IAAI,CAAEowC,SAAY,CAAA,KAAK,CAAE,CACrE,OAAO,IAAI,CAAChhB,IAAI,CAACH,IAAI,CAAC,IAAI,CAACgB,MAAM,CAAEv8B,OAAQxI,IAAM8U,CAAAA,IAAAA,CAAMowC,UACzD,CACAphB,KAAAA,CAAMshB,YAAe,CAAA,CAAC,CAAEtwC,IAAI,CAAEuwC,UAAa,CAAA,CAAC,CAAErlD,IAAI,CAAE,CAClD,IAAI,CAACkkC,IAAI,CAACJ,KAAK,CAAC,IAAI,CAACiB,MAAM,CAAEqgB,YAAAA,CAActwC,KAAMuwC,UAAYrlD,CAAAA,IAAAA,EAC/D,CACA0D,KAAAA,CAAM8E,OAAS,CAAC,CAAExI,IAAO,CAAA,IAAI,CAACsiD,QAAQ,CAAE,CACtC,IAAI,CAACpe,IAAI,CAACxgC,KAAK,CAAC,IAAI,CAACqhC,MAAM,CAAEv8B,MAAAA,CAAQxI,MACvC,CA9BA6C,WAAAA,CAAY6hC,cAAc,CAAE4d,QAAQ,CAAEmvB,WAAAA,CAAc,CAAC,CAAC,CACpD,IAAI,CAAC3sC,EAAE,CAAGysC,MACV,CAAA,IAAI,CAACxsC,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC4d,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACmvB,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACvtC,IAAI,CAAGQ,cAAAA,CAAeq7B,gBAAgB,CAACnvC,mBAAAA,CAAsB6gD,WAClE,CAAA,CAAA,IAAI,CAACvtC,IAAI,CAACsgB,QAAQ,CAAC9f,eAAgB4d,QACnC,CAAA,CAAA,IAAI,CAACvd,MAAM,CAACmO,OAAO,CAACt3C,IAAI,CAAC,IAAI,CAC7B,CAAA,IAAI,CAACgrC,sBAAsB,CAAClC,cAAemC,CAAAA,KAAK,CAAE,IAAI,CAACyb,QAAQ,EACjE,CAsBF,CAEA,MAAMovB,kBAOJltB,CAAAA,QAAAA,CAAS4qB,QAAQ,CAAE,CACjB,IAAI,CAACuC,WAAW,CAAG,IAAI15C,WAAY,CAAA,CAAA,CAAIm3C,QACvC,CAAA,CAAA,IAAI,CAACwC,iBAAiB,CAAG,IAAIr8D,WAAW,IAAI,CAACo8D,WAAW,CAACn8D,MAAM,CAC/D,CAAA,IAAI,CAACq0B,OAAO,CAAG,IAAI2nC,aAAc,CAAA,IAAI,CAACzsC,MAAM,CAAE,IAAI,CAAC4sC,WAAW,CAACppE,UAAU,CAAEsoB,oBAAAA,CAAuBL,sBACpG,CACAplB,GAAAA,CAAItQ,CAAC,CAAE+2E,kBAAkB,CAAEC,aAAa,CAAEC,kBAAkB,CAAElG,UAAa,CAAA,CAAC,CAAEmG,aAAAA,CAAgB,CAAC,CAAE,CAC/F,MAAMC,CAAAA,CAAIn3E,EAAI,CACd,CAAA,IAAI,CAAC62E,WAAW,CAACM,CAAAA,CAAI,CAAE,CAAA,CAAGJ,kBAC1B,CAAA,IAAI,CAACF,WAAW,CAACM,CAAI,CAAA,CAAA,CAAE,CAAGH,aAC1B,CAAA,IAAI,CAACH,WAAW,CAACM,EAAI,CAAE,CAAA,CAAGF,kBAC1B,CAAA,IAAI,CAACH,iBAAiB,CAACK,CAAAA,CAAI,EAAE,CAAGpG,UAChC,CAAA,IAAI,CAAC8F,WAAW,CAACM,CAAI,CAAA,CAAA,CAAE,CAAGD,cAC5B,CACA9jC,MAAO4M,CAAAA,KAAK,CAAE,CACZ,GAAI,IAAI,CAACjR,OAAO,EAAIiR,KAAAA,CAAQ,CAAG,CAAA,CAC7B,MAAMo3B,IAAOp3B,CAAAA,KAAAA,CAAQ,CACrB,CAAA,IAAI,CAACjR,OAAO,CAAC/F,KAAK,CAAC,EAAG,IAAI,CAAC6tC,WAAW,CAAE,EAAGO,IAC7C,EAAA,CACF,CACAjuC,OAAAA,EAAU,CACR,IAAI,CAAC4F,OAAO,EAAE5F,SACd,CAAA,IAAI,CAAC4F,OAAO,CAAG,KACjB,CA5BAhnC,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAAC4sC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAAC/nC,OAAO,CAAG,IACf,CAAA,IAAI,CAAC9E,MAAM,CAAGA,OAChB,CAwBF,CAEA,MAAMotC,gBAAmB,CAAA,IAAIjvE,IAC7B,MAAMkvE,sBAAAA,CAAyB,EAAI,CACnC,CAAA,MAAMC,6BAA6Bz6B,cAUjC3T,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACquC,aAAa,CAACruC,OAAO,EAC1B,CAAA,IAAI,CAACquC,aAAa,CAAG,KACrB,IAAI,CAACvT,cAAc,CAAC96B,OAAO,EAC3B,CAAA,IAAI,CAAC86B,cAAc,CAAG,IAAA,CACtB,IAAI,CAACwT,QAAQ,CAACtuC,OAAO,EACrB,CAAA,IAAI,CAACsuC,QAAQ,CAAG,IAAA,CAChB,KAAK,CAACtuC,OAAAA,GACR,CACAuuC,cAAAA,EAAiB,CACf,MAAMC,MAAAA,CAAS,IAAI,CAAC3wB,IAAI,EAAE2wB,MAC1B,CAAA,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC/9D,SAAS,CAAG,OACjB,CAAA,IAAI,CAACw0D,YAAY,CAAG,OACpB,CAAA,IAAI,CAAC3qB,UAAU,CAAG,CAClB,CAAA,IAAI,CAACm0B,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,cAAc,CAAGF,MAAOG,CAAAA,qBAAqB,CAClD,IAAI,CAACC,cAAc,CAAGJ,MAAOG,CAAAA,qBAAqB,CAClD,IAAI,CAACE,aAAa,CAAGL,MAAAA,CAAOM,qBAAqB,CACjD,IAAI,CAACz0B,mBAAmB,CAAGm0B,MAAAA,CAAOn0B,mBAClC,CAAA,IAAI,CAAC5B,aAAa,CAAG,CACrB,CAAA,IAAI,CAACuhB,aAAa,CAAG,EACrB,CAAA,IAAI,CAAC+U,qBAAqB,CAAGP,MAAAA,CAAOQ,2BAA2B,CAAG,EAClE,CAAA,IAAI,CAACC,mBAAmB,CAAGT,MAAOQ,CAAAA,2BAA2B,CAAG,EAChE,CAAA,IAAI,CAACt0B,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACw0B,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAAC50B,eAAe,CAAG,IACvB,CAAA,IAAI,CAACpG,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACyF,0BAA0B,CAAG,IAClC,CAAA,IAAI,CAACw1B,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAAC11B,OAAO,CAAG,IAAI,CAACO,mBAAmB,CAAG,CAAI,CAAA,CAAA,CAC9C,MAAMo1B,YAAAA,CAAex2E,OAAOK,SAAS,CAACqqE,GAAG,CAAC+L,oBAAoB,CAC9D,IAAI,CAAC90B,0BAA0B,CAAG60B,YAAAA,EAAclwE,GAAI,CAAA,yCAAA,CAAA,CACpD,IAAI,CAAC60C,eAAe,GACtB,CACA,MAAMu7B,UAAWC,CAAAA,UAAU,CAAEC,QAAQ,CAAE,CACrC,GAAI,CAAC52E,MAAAA,CAAOK,SAAS,CAACqqE,GAAG,CAAE,CACzB,MAAM,IAAIxiE,KAAAA,CAAM,wFAClB,CAAA,CACA,GAAIyuE,UAAcC,EAAAA,QAAAA,CAAU,CAC1B,MAAMC,SAAW,OAACC,EAAAA,CAChB,OAAO,IAAIC,IAAID,OAAS92E,CAAAA,MAAAA,CAAOmI,QAAQ,CAAC6uE,IAAI,CAAEt5E,CAAAA,QAAQ,EACxD,CAAA,CACA,MAAMg2E,OAAU,CAAA,MAAMuD,OAAQplC,CAAAA,GAAG,CAAC,CAChC,yBAAoD,CAAC,EAAEglC,QAASD,CAAAA,QAAAA,CAAAA,CAAU,CAAC,CAAE3sE,CAAAA,IAAI,CAAEH,QAASs1D,KAAMwX,CAAAA,QAAAA,CAASx5E,OAAO,CAAC,MAAO,OAC1H,CAAA,CAAA,CAAA,CAAA,yBAAoD,CAAC,EAAEy5E,QAASF,CAAAA,UAAAA,CAAAA,CAAY,CAAC,CAAE1sE,CAAAA,IAAI,CAAEH,QAASA,MAAOotE,CAAAA,OAAO,EAC7G,CAAA,CAAA,CACD,CAAA,IAAI,CAAC9X,KAAK,CAAGsU,OAAO,CAAC,CAAA,CAAE,CACvB,IAAI,CAACvU,OAAO,CAAGuU,OAAO,CAAC,GAAE,CAE3B,OAAO,IAAI,CAACyD,YAAY,EAC1B,CACA,MAAMA,cAAe,CACnB,MAAMC,cAAiB,CAAA,CACrB90B,gBAAiB,IAAI,CAACF,WAAW,CAACE,eAAe,GAAK,SAAA,CAAY,IAAI,CAACF,WAAW,CAACE,eAAe,CAAGx8C,SAAAA,CACrGuxE,aAAc,IAAI,CAACj1B,WAAW,CAACi1B,YAAY,CAE7C,CAAA,IAAI,CAACC,UAAU,CAAG,MAAMt3E,MAAAA,CAAOK,SAAS,CAACqqE,GAAG,CAAC6M,cAAc,CAACH,cAC5D,CAAA,CAAA,MAAMI,gBAAmB,CAAA,EAAE,CAC3B,MAAMC,cAAAA,CAAiB,OAACC,EAAAA,CACtB,MAAMC,SAAY,CAAA,IAAI,CAACL,UAAU,CAACM,QAAQ,CAACtxE,GAAG,CAACoxE,SAC/C,GAAIC,SAAAA,CAAW,CACbH,gBAAAA,CAAiB14E,IAAI,CAAC44E,OAAAA,EACxB,CACA,OAAOC,SACT,CACA,CAAA,IAAI,CAACt8B,sBAAsB,CAAGo8B,cAAAA,CAAe,oBAC7C,CAAA,CAAA,IAAI,CAACI,qBAAqB,CAAGJ,cAAAA,CAAe,oBAC5C,CAAA,IAAI,CAACK,wBAAwB,CAAGL,cAAe,CAAA,wBAAA,CAC/C,CAAA,IAAI,CAACM,gCAAgC,CAAGN,cAAe,CAAA,kCAAA,CACvD,CAAA,IAAI,CAACO,uBAAuB,CAAGP,eAAe,0BAC9C,CAAA,CAAA,IAAI,CAACQ,wBAAwB,CAAGR,cAAAA,CAAe,0BAC/C,CAAA,CAAA,IAAI,CAACS,gCAAgC,CAAGT,cAAAA,CAAe,qCACvD,CAAA,IAAI,CAAC9D,sBAAsB,CAAG8D,cAAe,CAAA,iBAAA,CAC7C,CAAA,IAAI,CAACU,iBAAiB,CAAGV,cAAe,CAAA,oBAAA,CACxC,CAAA,IAAI,CAACW,sBAAsB,CAAGX,eAAe,uBAC7C,CAAA,CAAA,IAAI,CAACY,6BAA6B,CAAGZ,cAAAA,CAAe,0BACpD,CAAA,IAAI,CAACa,iBAAiB,CAAGb,cAAe,CAAA,YAAA,CACxC,CAAA,IAAI,CAACc,oBAAoB,CAAGd,eAAe,oBAC3C,CAAA,CAAA,IAAI,CAAC32B,wBAAwB,CAAG22B,cAAAA,CAAe,0BAC/C,CAAA,CAAA,IAAI,CAAC31B,qBAAqB,CAAG21B,cAAAA,CAAe,kBAC5C,MAAMe,aAAAA,CAAgB,IAAI,CAAClB,UAAU,EAAE3B,MAAAA,CACvC,MAAM8C,cAAAA,CAAiB,EACvB,CAAA,GAAID,aAAe,CAAA,CACjB,IAAI,MAAME,SAAAA,IAAaF,aAAc,CAAA,CACnC,GAAIE,SAAc,GAAA,iBAAA,EAAqBA,SAAc,GAAA,iBAAA,CAAmB,CACtE,QACF,CACAD,cAAc,CAACC,UAAU,CAAGF,aAAa,CAACE,SAAAA,EAAU,CAExD,CACA,MAAMC,WAAAA,CAAc,CAClBnB,gBACAiB,CAAAA,cAAAA,CACAG,YAAc,CAAA,CACZvZ,MAAO,eACT,CACF,CACA,CAAA,IAAI,CAACra,IAAI,CAAG,MAAM,IAAI,CAACsyB,UAAU,CAACuB,aAAa,CAACF,WAChD,CAAA,CAAA,IAAI,CAAC3zB,IAAI,CAAC8zB,IAAI,EAAE7uE,IAAAA,CAAK,IAAI,CAAC8uE,gBAAgB,CAAC3qE,IAAI,CAAC,IAAI,CAAA,CAAA,CACpD,IAAI,CAACsnE,cAAc,EACnB,CAAA,IAAI,CAACsD,UAAU,CAAG,IAAI,CAACj9B,MAAM,CAACwmB,UAAU,CAAC,QACzC,CAAA,CAAA,IAAI0W,kBAAoB,UACxB,CAAA,IAAIC,qBAAwBl5E,CAAAA,MAAAA,CAAOK,SAAS,CAACqqE,GAAG,CAACyO,wBAAwB,GACzE,MAAM52B,aAAAA,CAAgB,IAAI,CAACH,WAAW,CAACG,aAAa,CACpD,IAAI,CAACmC,gBAAgB,CAAGw0B,qBAAAA,GAA0B,aAAe32B,aAAkB9d,GAAAA,sBAAAA,CAAyBlN,kBAAqBb,CAAAA,iBAAAA,CAAoB6rB,gBAAkB9d,sBAAyB1K,CAAAA,kBAAAA,CAAqB7B,iBACrN,CAAA,IAAI,CAACm3B,oBAAoB,CAAG9M,aAAkB9d,GAAAA,sBAAAA,CAAyB,CAAC,EAAEy0C,qBAAAA,CAAsB,KAAK,CAAC,CAAGA,qBACzG,CAAA,GAAI32B,aAAkB7d,GAAAA,iBAAAA,EAAqB,IAAI,CAAC2W,sBAAsB,CAAE,CACtE,MAAM+9B,aAAgBp5E,CAAAA,MAAAA,CAAOq5E,UAAU,CAAC,yBACxC,GAAID,aAAAA,EAAe1T,OAAS,CAAA,CAC1B,IAAI,CAAChhB,gBAAgB,CAAG3tB,mBACxB,CAAA,IAAI,CAACs4B,oBAAoB,CAAG,cAC5B6pB,qBAAwB,CAAA,aACxB,CAAA,IAAI,CAAC53B,KAAK,CAAG,IACb23B,CAAAA,iBAAAA,CAAoB,WACtB,CACF,CACA,IAAI,CAACK,YAAY,CAAG,CAClBrxC,MAAQ,CAAA,IAAI,CAAC+c,IAAI,CACjBu0B,UAAY,CAAA,MAAA,CACZC,UAAW,IAAI,CAACp3B,WAAW,CAAClwC,KAAK,CAAG,eAAA,CAAkB,QACtDpO,CAAAA,MAAAA,CAAQo1E,sBACRO,WAAa,CAAA,CACXlrC,IAAM0qC,CAAAA,iBACR,EACAxiC,KAAOuZ,CAAAA,eAAAA,CAAgBC,iBAAiB,CAAGD,gBAAgBG,QAAQ,CAAGH,eAAgBlI,CAAAA,QAAQ,CAC9F4xB,WAAan3B,CAAAA,aAAAA,GAAkB9d,sBAAyB,CAAA,CACtD,IAAI,CAAC4qB,oBAAoB,CAC1B,CAAG,EAAE,CAER,CAAA,IAAI,CAAC2pB,UAAU,EAAEW,SAAU,CAAA,IAAI,CAACL,YAAY,CAAA,CAC5C,IAAI,CAACM,gBAAgB,EACrB,CAAA,IAAI,CAACpE,aAAa,CAAG,IAAIvG,mBAAoB,CAAA,IAAI,CACjD,CAAA,IAAI,CAAChN,cAAc,CAAG,IAAIsN,oBAAAA,CAAqB,IAAI,CACnD,CAAA,IAAI,CAACkG,QAAQ,CAAG,IAAI7B,cAAe,CAAA,IAAI,CACvC,CAAA,IAAI,CAAC74B,QAAQ,EAAA,CACb,OAAO,IAAI,CAEb,MAAMg+B,gBAAiB99C,CAAAA,IAAI,CAAE,CAC3B,GAAIA,IAAK4+C,CAAAA,MAAM,GAAK,WAAa,CAAA,CAC/B,KAAK,CAAClyC,aACN,CAAM,MAAA,IAAI,CAACwvC,YAAY,GACvB,KAAK,CAACh7B,cACR,GAAA,CACF,CACApB,QAAW,EAAA,CACT,KAAK,CAACA,WACN,IAAI,CAACqB,qBAAqB,EAAA,CAC1B,IAAI,CAAC09B,wBAAwB,EAC7B,CAAA,IAAI,CAACr+B,WAAW,CAAG,IAAI+3B,kBAAkB,IAAI,CAC7C,CAAA,IAAI,CAACh4B,cAAc,CAAG,IAAIo1B,oBAAAA,CAAqB,IAAI,CAAE,GAAA,CAAM,IAAM,CAAA,IAAI,CAAC+E,MAAM,CAACoE,+BAA+B,CAC5G,CAAA,IAAI,CAAC3K,cAAc,CAAG,IAAI9+B,SAAU,CAAA,IAAI,CAAE,IAAIpJ,gBAAgB,IAAI,CAAE,EAAE,CAAA,CAAA,CACtE,IAAI,CAACkoC,cAAc,CAACh+B,MAAM,GAC5B,CACAwoC,gBAAAA,EAAmB,CACjB,IAAI,CAACI,eAAe,CAAG,IAAI,CAAC53B,WAAW,CAACF,OAAO,CAC/C,IAAI,CAACf,UAAU,CAAG,IAAIoC,aAAa,CACjCjiD,IAAAA,CAAM,mBACNsmC,CAAAA,cAAAA,CAAgB,IAAI,CACpBoB,KAAAA,CAAO,IAAI,CAACoZ,WAAW,CAACpZ,KAAK,CAC7BkZ,OAAAA,CAAS,IAAI,CAAC83B,eAAe,CAC7Bn5B,OAAAA,CAAS,IAAI,CAACA,OAAO,CACvB,CACA,CAAA,IAAI,CAACM,UAAU,CAAC/Z,IAAI,CAACsoB,YAAY,CAAG,KACtC,CACArP,UAAa,EAAA,CACX,KAAK,CAACA,aACN,IAAI,CAAC5E,WAAW,CAAC4E,UAAU,EAC3B,CAAA,IAAI,CAACiiB,MAAM,GACX,MAAM2X,cAAAA,CAAiB,IAAI,CAACjB,UAAU,EAAEkB,iBAAAA,IAAAA,EAAyB,IAAI,CAACC,kBAAkB,EAAE/yC,IAAAA,CAAK+nB,UAC/F,CAAA,GAAI,IAAI,CAAClT,cAAc,CAAC5pC,CAAC,GAAK4nE,eAAet2D,KAAK,EAAI,IAAI,CAACs4B,cAAc,CAACliC,CAAC,GAAKkgE,cAAAA,CAAer2D,MAAM,CAAE,CACrG,IAAI,CAACq4B,cAAc,CAAC11C,GAAG,CAAC0zE,cAAAA,CAAet2D,KAAK,CAAEs2D,cAAAA,CAAer2D,MAAM,CAAA,CACnE,IAAI,CAACu9B,UAAU,CAACha,OAAO,EACvB,CAAA,IAAI,CAACga,UAAU,CAAG,IAClB,CAAA,IAAI,CAACy4B,gBAAgB,GACvB,CACA,MAAM3qB,EAAK,CAAA,IAAI,CAAC9N,UAAU,CAC1B,MAAMi5B,GAAAA,CAAMnrB,GAAG7nB,IAAI,CACnBgzC,GAAI5qB,CAAAA,kBAAkB,CAAC,CAAG1pD,CAAAA,SAAAA,CAAW,IAAI,CAACupD,oBAAoB,CAC9D,CAAA,IAAI,CAAClR,gBAAgB,CAAC8Q,EACtBmrB,CAAAA,CAAAA,GAAAA,CAAIlrB,kBAAkB,CAAC,IAAI,CAAE+qB,cAAAA,EAC/B,CACA15B,QAAAA,EAAW,CACT,KAAK,CAACA,QACN,EAAA,CAAA,IAAI,CAAC9E,WAAW,CAAC8E,QAAQ,EAAA,CACzB,IAAI,CAAC+hB,MAAM,EACX,CAAA,GAAI,CAAC,IAAI,CAACtmB,WAAW,CAAE,CACrB,IAAI,CAACP,WAAW,CAACs2B,OAAO,GAC1B,CACA,IAAI,CAACsI,sBAAsB,CAAG,EAChC,CACApX,gBAAAA,CAAiBrb,UAAU,CAAE,CAC3B,OAAO,IAAIH,aAAaG,UAC1B,CAAA,CACAinB,uBAAwBp+B,CAAAA,aAAa,CAAE,CACrC,OAAO,IAAIgzB,mBAAAA,CAAoBhzB,cACjC,CACAqG,sBAAAA,CAAuB+G,YAAY,CAAE/5C,MAAM,CAAE2L,OAAO,CAAE,CACpD,OAAO,IAAIk0D,kBAAAA,CAAmB9lB,YAAc/5C,CAAAA,MAAAA,CAAQ2L,QACtD,CACA6qE,qBAAAA,CAAsB/7B,WAAW,CAAE9uC,OAAO,CAAE,CAC1C,OAAO,IAAIi5C,kBAAkBnK,WAAa9uC,CAAAA,OAAAA,CAC5C,CACA09D,gBAAAA,CAAiBvxB,MAAM,CAAE,CACvB,OAAO,IAAIyiB,YAAAA,CAAaziB,OAC1B,CACA2+B,qBAAAA,CAAsB97B,YAAY,CAAE,CAClC,OAAO,IAAIm2B,kBAAmB,CAAA,IAAI,CACpC,CACAxqC,iBAAAA,CAAkB0F,OAAO,CAAE,CACzB,OAAO,IAAIwwB,aAAcxwB,CAAAA,OAAAA,CAC3B,CACAkU,sBAAuBvH,CAAAA,YAAY,CAAE,CACnC,OAAO,IAAIqS,kBAAAA,CAAmBrS,YAChC,CAAA,CACAlU,0BAA0Bwe,eAAe,CAAE,CACzC,OAAO,IAAID,qBAAsBC,CAAAA,eAAAA,CACnC,CACAtV,mBAAAA,CAAoBqT,SAAS,CAAE,CAC7B,OAAO,IAAID,eACb,CACA21B,iBAAAA,CAAkBnsD,OAAO,CAAE,CACzB,OAAO,IAAI+lD,aAAc/lD,CAAAA,OAAAA,CAC3B,CACA,IAAI4vB,kBAAAA,EAAqB,CACvB,IAAI,CAACw8B,0BAA0B,EAAA,CAC/B,OAAO,IAAI,CAACC,mBACd,CACAD,0BAAAA,EAA6B,CAC3B,GAAI,IAAI,CAACJ,sBAAsB,GAAK,CAAK,EAAA,IAAI,CAACM,wBAAwB,CAAG,IAAI,CAACp5B,oBAAoB,CAAE,CAClG,IAAI,CAACm5B,mBAAmB,EAAEvzC,SAC1B,CAAA,IAAI,CAACuzC,mBAAmB,CAAG,KAC7B,CACA,GAAI,IAAI,CAACA,mBAAmB,GAAK,IAAM,CAAA,CACrC,IAAI,CAACA,mBAAmB,CAAG,IAAIhG,cAAc,IAAI,CAAE,IAAI,CAACnzB,oBAAoB,CAAG+zB,sBAAAA,CAAwBvhD,oBAAuBL,CAAAA,oBAAAA,CAC9H,CAAA,IAAI,CAACinD,wBAAwB,CAAG,IAAI,CAACp5B,qBAAoB,CAE7D,CACAxD,mBAAoBC,CAAAA,KAAAA,CAAQ,CAAC,CAAE,CAC7B,IAAI,CAACy8B,0BAA0B,EAAA,CAC/B,MAAMp0C,IAAO,CAAA,IAAI,CAACg0C,sBAAsB,CACxC,MAAMO,SAAAA,CAAY,IAAI,CAACP,sBAAsB,CAAGr8B,KAChD,CAAA,IAAI,CAACq8B,sBAAsB,CAAGO,UAC9B,OAAOv0C,IACT,CACA8oC,YAAatrE,CAAAA,KAAK,CAAEihD,SAAS,CAAEzU,OAAO,CAAE,CACtC,GAAI,IAAI,CAACu/B,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAACT,YAAY,CAACtrE,KAAOihD,CAAAA,SAAAA,CAAU1d,IAAI,CAAC0d,SAAS,CAAEzU,OAAAA,EAAWyU,SAAUtT,CAAAA,oBAAoB,CACxG,CAAA,IAAI,CAACqY,gBAAgB,CAAChmD,KAAM,CAAA,CAAGihD,SAAUhhD,CAAAA,MAAM,CAACsjC,KAClD,CACF,CACAyzC,mBAAmBh9B,YAAY,CAAExX,IAAI,CAAE,CACrC,MAAMviC,MAAAA,CAAS+5C,YAAa/5C,CAAAA,MAAM,CAClC,KAAM,CAAEw1C,WAAW,CAAE5B,QAAQ,CAAE,CAAG5zC,MAClC,CAAA,MAAMylD,aAAe7R,QAASz5C,CAAAA,MAAM,CACpC,MAAM68E,SAAWj9B,YAAazW,CAAAA,IAAI,CAAC1uB,MAAM,CACzC,GAAI4gC,WAAAA,CAAa,CACf,IAAI,CAACs2B,WAAW,CAAChyB,eAAe,CAACvX,KAAMy0C,QACvC,CAAA,CAAA,OAAO,CACT,CACA,IAAI,IAAI98E,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIurD,aAAcvrD,CAAI,EAAA,CAAA,CACnC,IAAI,CAAC4xE,WAAW,CAAChyB,eAAe,CAACvX,IAAAA,CAAOroC,EAAG88E,QAAUpjC,CAAAA,QAAQ,CAAC15C,CAAAA,CAAE,CAAC0N,MAAM,EACzE,CACA,OAAO69C,YACT,CACAwxB,mBAAAA,CAAoBC,GAAG,CAAEC,GAAG,CAAE,CAC5B,MAAMC,UAAAA,CAAa,EACjB,EAAA,CAAA,KAAM,CAAExjC,QAAQ,CAAE,CAAGpB,EAAAA,CAAGxyC,MAAM,CAC9B,IAAI,IAAI9F,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI05C,SAASz5C,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAMsD,IAAOo2C,CAAAA,QAAQ,CAAC15C,CAAAA,CAAE,CAACsD,IAAI,CAC7B,MAAM6G,QAAAA,CAAW89B,kBAAkB,CAAC3kC,IAAAA,CAAK,CACzC,GAAI+zE,iBAAiB/uE,GAAG,CAAC6B,QACzBktE,CAAAA,CAAAA,CAAAA,gBAAAA,CAAiB9uE,GAAG,CAAC4B,QAAAA,CAAU7G,IACjC,EAAA,CACF,EACA45E,UAAWF,CAAAA,GAAAA,CAAAA,CACXE,UAAWD,CAAAA,GAAAA,CAAAA,CACX5F,iBAAiBzuE,KAAK,GACxB,CACAy3C,IAAAA,CAAKC,SAAS,CAAEC,WAAW,CAAEC,YAAAA,CAAe,CAAC,CAAEC,YAAY,CAAEt7C,KAAAA,CAAQ,IAAI,CAAEu7C,IAAAA,CAAO,IAAI,CAAE,CACtF,GAAI,IAAI,CAAC9C,MAAM,CAACojB,KAAK,EAAI,CAAC,IAAI,CAACpjB,MAAM,CAACsZ,MAAM,CAAE,CAC5C,MAAM0a,WAAAA,CAAc,IAAI,CAACA,WAAW,CACpC,IAAI5kB,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC5B,MAAMgwB,GAAAA,CAAM,IAAI,CAAC1+B,aAAa,CAAC,CAAA,CAAE,CACjC,MAAM2+B,GAAAA,CAAM,IAAI,CAAC3+B,aAAa,CAAC,CAAA,CAAE,CACjC,GAAIn5C,MAAO,CACT,GAAI63E,GAAK,CAAA,CACP,MAAMG,MAAS,CAAA,IAAI,CAACN,kBAAkB,CAACG,GAAK,CAAA,CAAA,CAAA,CAC5C,GAAIC,GAAAA,CAAK,CACP,IAAI,CAACJ,kBAAkB,CAACI,IAAKE,MAC/B,EAAA,CACF,CACAnwB,QAAAA,CAAW,IAAI,CAACowB,cAAc,CAACr7E,GAAG,CAACu+C,SAAW08B,CAAAA,GAAAA,EAAKl3E,MAAQm3E,CAAAA,GAAAA,EAAKn3E,OAAQy6C,WAAaz6C,EAAAA,MAAAA,CAAQ,IAAI,CAAC83C,MAAM,CAAE,IAAI,CAACa,YAAY,CAAE,IAAI,CAACoN,gBAAgB,CAAE,IAAI,CAACnN,UAAU,CAAE,IAAI,CAACC,UAAU,CAAE,IAAI,CAACC,QAAQ,CAAE,IAAI,CAACmF,cAAc,CAAE,IAAI,CAAC1E,YAAY,CAAE,IAAI,CAACC,WAAW,CAC7P,CAAA,GAAI,IAAI,CAAC0N,QAAQ,GAAKA,QAAU,CAAA,CAC9B,IAAI,CAACA,QAAQ,CAAGA,QAAAA,CAChB4kB,YAAYI,WAAW,CAAChlB,QAC1B,EAAA,CACF,CACA,GAAIzM,WAAAA,CAAa,CACfqxB,WAAAA,CAAYyL,cAAc,CAAC98B,WAAAA,CAAYnX,IAAI,CAAC1uB,MAAM,CAAE6lC,WAAAA,CAAYnX,IAAI,CAACtjC,MAAM,EAC7E,CACA,GAAI26C,YAAAA,CAAc,CAChB,MAAM1R,OAAAA,CAAU0R,YAAarX,CAAAA,IAAI,EAAE2F,OAAW,EAAA,IAAI,CAACkR,kBAAkB,CACrE,MAAMq9B,cAAAA,CAAiBvuC,OAAQ3F,CAAAA,IAAI,CAAC1uB,MAAM,CAC1C,MAAM6iE,UAAAA,CAAa98B,aAAaT,KAAK,CACrC,IAAI,IAAI1nC,EAAI,CAAGA,CAAAA,CAAAA,CAAIilE,UAAYjlE,CAAAA,CAAAA,EAAAA,CAAI,CACjC,MAAMklE,cAAAA,CAAiB,CAAC/8B,aAAag9B,SAAS,CAAGnlE,CAAAA,EAAKg/D,uBACtD,GAAI/2B,WAAAA,CAAa,CACfqxB,WAAAA,CAAY8L,mBAAmB,CAACJ,cAAAA,CAAgBE,cAClD,EAAA,CAAA,KAAO,CACL5L,WAAY+L,CAAAA,YAAY,CAACL,cAAAA,CAAgBE,gBAC3C,CACF,CACF,CAAO,KAAA,CACL,GAAIj9B,WAAa,CAAA,CACfqxB,WAAYgM,CAAAA,WAAW,CAACt9B,SAAUN,CAAAA,KAAK,CAAEQ,YAAAA,CAAcF,UAAUwwB,IAAI,CAAExwB,SAAUywB,CAAAA,UAAU,EAAI,CAAG,CAAA,CAAA,EACpG,CAAO,KAAA,CACLa,YAAYvxB,IAAI,CAACC,SAAUN,CAAAA,KAAK,CAAEQ,YAAcF,CAAAA,SAAAA,CAAUwwB,IAAI,CAAE,GAClE,CACF,CACF,CACA,GAAIpwB,KAAM,CACR,IAAI,CAACZ,iBAAiB,EACtB,CAAA,IAAI,CAACkN,QAAQ,CAAG,KAClB,CACF,CACAskB,SAAAA,CAAU1zB,MAAM,CAAEigC,YAAAA,CAAe,KAAK,CAAE,CACtC,GAAIjgC,MAAAA,GAAW,IAAI,CAACA,MAAM,CAAE,CAC1B,IAAI,CAACA,MAAM,CAAGA,OAChB,CACF,CACA2B,aAAAA,CAAcb,UAAU,CAAE,CACxB,IAAI,CAACA,UAAU,CAAC3/C,IAAI,CAAC2/C,UAAAA,EACvB,CACAe,aAAcd,CAAAA,UAAU,CAAE,CACxB,IAAI,CAACA,UAAU,CAAC5/C,IAAI,CAAC4/C,UACvB,EAAA,CACAS,eAAgBC,CAAAA,YAAY,CAAEC,WAAW,CAAE,CACzC,GAAID,cAAgBC,WAAa,CAAA,CAC/B,IAAI,CAACyE,cAAc,CAAG,IAAA,CACtB,IAAI,CAAC1E,YAAY,CAACtgD,IAAI,CAACsgD,YAAAA,EAAgBxD,kBAAkB3E,OAAO,CAAA,CAChE,IAAI,CAACoI,WAAW,CAACvgD,IAAI,CAACugD,WAAAA,EAAezD,kBAAkB3E,OAAO,CAAA,CAC9D,MAAM8E,GAAAA,CAAM,IAAI,CAACqD,YAAY,CAACrD,GAAG,CACjC,GAAI,IAAI,CAAC8hC,UAAU,GAAK9hC,GAAK,CAAA,CAC3B,IAAI,CAAC8hC,UAAU,CAAG9hC,GAAAA,CAClB,IAAI,CAAC41B,WAAW,CAACmM,mBAAmB,CAAC/hC,GAAAA,EACvC,CACF,CAAO,KAAA,CACL,IAAI,CAAC+H,cAAc,CAAG,MACxB,CACF,CACAvE,cAAclgD,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAED,CAAC,CAAE,CACxB,MAAMvQ,CAAI,CAAA,IAAI,CAAC8/C,UAAU,CACzB,GAAI7/C,CAAAA,GAAMD,CAAEC,CAAAA,CAAC,EAAIuU,CAAMxU,GAAAA,CAAAA,CAAEwU,CAAC,EAAIhE,IAAMxQ,CAAEwQ,CAAAA,CAAC,EAAID,CAAAA,GAAMvQ,EAAEuQ,CAAC,CAAE,CACpDvQ,CAAAA,CAAEkJ,GAAG,CAACjJ,CAAAA,CAAGuU,CAAGhE,CAAAA,CAAAA,CAAGD,GACf,IAAI,CAACgiE,WAAW,CAACoM,gBAAgB,CAAC3+E,CAAAA,EACpC,CACF,CACAqgD,YAAYd,QAAQ,CAAE,CACpB,IAAI,CAACA,QAAQ,CAAGA,SAClB,CACAq/B,mBAAmBC,KAAK,CAAE,EAC1B7/B,uBAAAA,EAA0B,CACxB,KAAK,CAACA,uBACR,GAAA,CACAy9B,0BAA2B,CACzB,IAAI,CAAC9uB,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC8wB,UAAU,CAAG,CAAA,CAClB,IAAI,CAAC3+B,UAAU,CAAC52C,GAAG,CAAC,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,EAC/B,CACA41E,oBAAAA,EAAuB,CACrB,IAAI,CAACvyC,QAAQ,CAACj/B,OAAO,CAAEmlC,OACrB,EAAA,CAAA,GAAIA,QAAQhC,YAAY,EAAIgC,OAAQssC,CAAAA,aAAa,CAAE,CACjDtsC,OAAAA,CAAQ3F,MAAM,GAChB,CACF,CACF,EAAA,CACAkyC,oBAAqBC,CAAAA,QAAQ,CAAEh7E,IAAI,CAAE,CACnC,GAAI,IAAI,CAACm6C,WAAW,CAACo2B,QAAQ,CAAE,CAC7B,GAAI,IAAI,CAACp2B,WAAW,CAACg4B,mBAAmB,CAAE,CACxC,MAAMptC,IAAO,CAAA,IAAI,CAACoV,WAAW,CAAC42B,OAAO,CAAC/wE,IACtC,CAAA,CAAA,GAAI+kC,OAAS,CAAC,CAAA,CAAA,CAAA,KAAU,CACtBi2C,QAAAA,CAAWA,UAAY,EACvBA,CAAAA,QAAAA,CAASC,eAAe,CAAG,CACzB9J,QAAU,CAAA,IAAI,CAACh3B,WAAW,CAACg4B,mBAAmB,CAAChB,QAAQ,CACvD+J,yBAAAA,CAA2Bn2C,IAAO,CAAA,CAAA,CAClCo2C,oBAAqBp2C,IAAO,CAAA,CAAA,CAAI,CAClC,EACF,CACF,CACF,CACA,OAAOi2C,QACT,CACAt8B,eAAgBC,CAAAA,UAAU,CAAE,CAC1B,IAAI,CAACk8B,oBAAoB,EACzB,CAAA,MAAMltB,GAAKhP,UAAWxD,CAAAA,YAAY,EAAI,IAAI,CAAC0E,UAC3C,CAAA,IAAI,CAAC1E,YAAY,CAAGwS,EACpB,CAAA,MAAMmrB,IAAMnrB,EAAG7nB,CAAAA,IAAI,CACnB,GAAI6nB,KAAO,IAAI,CAAC9N,UAAU,CAAE,CAC1B,IAAI,CAAChD,gBAAgB,CAAC8Q,IACxB,CACAmrB,GAAAA,CAAInpB,kBAAkB,CAAChR,WAAYgP,EACnC,CAAA,CAAA,MAAMytB,cAAiBtC,CAAAA,GAAAA,CAAI9qB,oBAAoB,CAC/C,IAAI,CAAC+sB,oBAAoB,CAACK,cAAgBz8B,CAAAA,UAAAA,CAAW3+C,IAAI,CAAA,CACzD,MAAM4hE,cAAiB,CAAA,IAAI,CAACC,iBAAiB,EAC7C,CAAA,IAAI,CAACyM,WAAW,CAAG1M,cAAe2M,CAAAA,eAAe,CAAC6M,cAAAA,CAClD,CAAA,IAAI,CAAC9M,WAAW,CAACvQ,KAAK,CAAG,CAAC,EAAEpf,UAAAA,CAAW3+C,IAAI,CAAC,gBAAgB,EAAE2tD,EAAAA,CAAG3tD,IAAI,CAAC,CAAC,CACvE,IAAI,CAACw4E,wBAAwB,EAAA,CAC7B,KAAM,CAAEn2D,KAAK,CAAEC,MAAM,CAAE,CAAGqrC,GAC1B,IAAI,CAACvrC,WAAW,CAAC,EAAG,CAAGC,CAAAA,KAAAA,CAAOC,MAC9B,CAAA,CAAA,IAAI,CAAC+4D,UAAU,CAAC,CAAG,CAAA,CAAA,CAAGh5D,MAAOC,MAC7B,CAAA,CAAA,IAAI,CAACg+B,gBAAgB,CAAG,KAC1B,CACA1B,aAAAA,CAAcD,UAAU,CAAE,CACxB,IAAI,CAAC2vB,WAAW,CAAClsE,GAAG,EACpB,CAAA,IAAI,CAACksE,WAAW,CAAG,IACnB,CAAA,IAAI,CAAChuB,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACiI,gBAAgB,CAAC5rD,MAAM,CAAG,CAC/B,CAAA,MAAMrB,OAAS,IAAI,CAAC6/C,YAAY,CAChC,GAAI7/C,MAAQ,CAAA,CACV,GAAIA,MAAAA,CAAO0nD,WAAW,EAAIrE,UAAAA,CAAWyR,eAAe,CAACsiB,YAAY,CAAE,CACjE,GAAI/zB,UAAAA,CAAWY,OAAO,CAAG,CAAA,EAAKjkD,MAAOgoD,CAAAA,WAAW,CAAE,CAChD,MAAM4G,eAAkB5uD,CAAAA,MAAAA,CAAOwqC,IAAI,CAACokB,eAAe,CACnD,MAAMoxB,YAAchgF,MAAO0nD,CAAAA,WAAW,CAACld,IAAI,CAAC+nB,UAAU,CACtD,GAAI3D,eAAmBoxB,EAAAA,WAAAA,CAAa,CAClC,IAAI,CAACnH,QAAQ,CAACzB,YAAY,CAAC,IAAI,CAAC9Q,cAAc,CAAE1X,eAAgBkD,CAAAA,uBAAuB,CAAEkuB,WAAAA,EAC3F,CACF,CACF,CACF,CACA,IAAI,IAAI5+E,CAAI,CAAA,CAAA,CAAGA,CAAIiiD,CAAAA,UAAAA,CAAWkR,aAAa,CAAClzD,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACtD,MAAMkzD,QAAAA,CAAWjR,UAAWkR,CAAAA,aAAa,CAACnzD,CAAE,CAAA,CAC5C,GAAIkzD,QAAAA,CAAS2rB,UAAU,CAAE,CACvB,IAAI,CAAC5a,cAAc,CAACC,QAAQ,CAACjiB,UAAAA,CAAWxD,YAAY,CAACmH,aAAa,CAAC5lD,CAAAA,CAAE,CAACopC,IAAI,EAC5E,CACF,CACF,CACA+Y,gBAAiB7+C,CAAAA,IAAI,CAAE,CACrB,IAAI,CAAC0pD,QAAQ,CAAG,IAAA,CAChB,MAAM8xB,eAAkB,CAAA,IAAI,CAACT,oBAAoB,CAACv2E,SAAWxE,CAAAA,IAAAA,CAAAA,CAC7D,MAAM4hE,cAAAA,CAAiB,IAAI,CAACC,iBAAiB,EAC7C,CAAA,IAAI,CAACyM,WAAW,CAAG1M,cAAAA,CAAe6Z,gBAAgB,CAACD,eAAAA,CACnD,CAAA,IAAI,CAACl7B,gBAAgB,CAAG,KAC1B,CACAxB,gBAAiB,CACf,IAAI,CAACwvB,WAAW,CAAClsE,GAAG,EACpB,CAAA,IAAI,CAACksE,WAAW,CAAG,IACnB,CAAA,IAAI,CAAChuB,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACiI,gBAAgB,CAAC5rD,MAAM,CAAG,EACjC,CACAwiD,eAAAA,CAAgBC,QAAQ,CAAEp/C,IAAAA,CAAO,SAAS,CAAE,CAC1C,IAAI,CAAC6+C,gBAAgB,CAAC7+C,MACtB,IAAI,IAAItD,CAAI,CAAA,CAAA,CAAGA,EAAI0iD,QAASziD,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACtC,MAAMqwB,OAAAA,CAAUqyB,QAAQ,CAAC1iD,EAAE,CAC3BqwB,OAAAA,CAAQ2uD,eAAe,EAAA,CACvB3uD,QAAQ+Y,IAAI,CAACitC,eAAe,GAC9B,CACA,IAAI,IAAIr2E,CAAI,CAAA,CAAA,CAAGA,EAAI0iD,QAASziD,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACtC,MAAMqwB,OAAAA,CAAUqyB,QAAQ,CAAC1iD,EAAE,CAC3BqwB,OAAAA,CAAQ+Y,IAAI,CAACktC,QAAQ,CAACjmD,OAAAA,CAAQ4uD,MAAM,CAAE5uD,QAAQ6uD,MAAM,CAAE7uD,OAAQ8uD,CAAAA,MAAM,EACtE,CACA,IAAI,CAAC/8B,cAAc,GACrB,CACA+iB,iBAAAA,EAAoB,CAClB,IAAID,eAAiB,IAAI,CAACA,cAAc,CACxC,GAAI,CAACA,cAAAA,CAAgB,CACnBA,cAAAA,CAAiB,IAAI,CAACle,IAAI,CAAC6rB,oBAAoB,EAC/C,CAAA,IAAI,CAAC3N,cAAc,CAAGA,eACxB,CACA,OAAOA,cACT,CACAka,iBAAoB,EAAA,CAClB,KAAM,CAAEla,cAAc,CAAE,CAAG,IAAI,CAC/B,GAAIA,cAAgB,CAAA,CAClB,MAAM+N,EAAAA,CAAK/N,eAAegO,MAAM,EAAA,CAChC,IAAI,CAACC,gBAAgB,CAACF,EAAAA,CACtB,CAAA,IAAI,CAAC/N,cAAc,CAAG,KACxB,CACF,CACAiO,gBAAiBkM,CAAAA,aAAa,CAAEC,KAAAA,CAAQ,KAAK,CAAE,CAC7C,GAAIA,KAAAA,CAAO,CACT,IAAI,CAACC,cAAc,CAACC,OAAO,CAACH,aAAAA,EAC9B,CAAO,KAAA,CACL,IAAI,CAACE,cAAc,CAACz+E,IAAI,CAACu+E,aAC3B,EAAA,CACF,CACA/a,MAAAA,EAAS,CACP,IAAI,CAAC8a,iBAAiB,EAAA,CACtB,GAAI,IAAI,CAACG,cAAc,CAACt/E,MAAM,CAAG,CAAA,CAAG,CAClC,IAAI,CAACu9C,cAAc,CAAC8mB,MAAM,EAAA,CAC1B,IAAI,CAACtd,IAAI,CAACkD,KAAK,CAACoa,MAAM,CAAC,IAAI,CAACib,cAAc,CAC1C,CAAA,IAAI,CAACA,cAAc,CAACt/E,MAAM,CAAG,CAC7B,CAAA,IAAI,CAACu9C,cAAc,CAAC61B,yBAAyB,GAC/C,CACF,CACAzqE,KAAAA,CAAM6I,OAAO,CAAE,CACb,GAAIA,OAAAA,CAAQ0yC,KAAK,CAAE,CACjB,IAAI,CAACqzB,aAAa,CAAC5uE,KAAK,CAAC,IAAI,CAAE,IAAI,CAAC61C,YAAY,CAAEhtC,OAAS,CAAA,IAAI,CAACuyC,mBAAmB,EACrF,CACF,CACAt+B,YAAYrR,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,CACtB,GAAI,IAAI,CAACm+C,WAAW,CAAE,CACpB,GAAI,CAAC,IAAI,CAACnzB,YAAY,CAAC7O,KAAK,CAAE,CAC5B7zB,EAAI,IAAI,CAAC0iC,YAAY,CAAC74B,MAAM,CAAG7J,CAAAA,CAAI0X,EACrC,CACA,IAAI,CAACorB,EAAE,CAAGxqC,CACV,CAAA,IAAI,CAACyqC,EAAE,CAAG/iC,CACV,CAAA,IAAI,CAACgjC,EAAE,CAAGx/B,CACV,CAAA,IAAI,CAACy/B,EAAE,CAAGvrB,CAAAA,CACV,IAAI,CAACm+C,WAAW,CAAClsD,WAAW,CAACrR,CAAAA,CAAG0H,EAAGwD,CAAGkU,CAAAA,CAAAA,CAAG,CAAG,CAAA,CAAA,EAC9C,CACF,CACAkrD,UAAAA,CAAWtqE,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,CACrB,GAAI,IAAI,CAACm+C,WAAW,CAAE,CACpB,GAAI,CAAC,IAAI,CAACnzB,YAAY,CAAC7O,KAAK,CAAE,CAC5B7zB,CAAAA,CAAI,IAAI,CAAC0iC,YAAY,CAAC74B,MAAM,CAAG7J,CAAAA,CAAI0X,EACrC,CACA,IAAI,CAAC7M,EAAE,CAAGvS,CACV,CAAA,IAAI,CAACwS,EAAE,CAAG9K,CACV,CAAA,IAAI,CAACkjC,EAAE,CAAG1/B,CACV,CAAA,IAAI,CAAC2/B,EAAE,CAAGzrB,CAAAA,CACV,IAAI,CAACm+C,WAAW,CAAC6N,cAAc,CAACprE,CAAG0H,CAAAA,CAAAA,CAAGwD,CAAGkU,CAAAA,CAAAA,EAC3C,CACF,CACAg3B,kBAAAA,CAAmB5X,aAAa,CAAEnlC,OAAS,CAAC,CAAExI,IAAO2tC,CAAAA,aAAAA,CAAc2U,QAAQ,CAAE,CAC3E,MAAM0d,cAAAA,CAAiB,IAAI,CAACC,iBAAiB,EAC7CD,CAAAA,cAAAA,CAAewa,WAAW,CAAC7sC,aAAAA,CAAcn4B,MAAM,CAAEhN,OAAQxI,IAC3D,EAAA,CACAmlD,iBAAkBxX,CAAAA,aAAa,CAAEnlC,MAAS,CAAA,CAAC,CAAExI,IAAAA,CAAO2tC,cAAc2U,QAAQ,CAAG95C,MAAM,CAAEsM,KAAO,IAAI,CAAEowC,SAAY,CAAA,KAAK,CAAE,CACnH,MAAM4a,aAAgB,CAAA,IAAI,CAACC,gBAAgB,CAAC1vC,gBAAmBG,CAAAA,oBAAAA,CAAAA,CAC/DsvC,cAActb,QAAQ,CAAC,IAAI,CAAExkD,MAC7B,MAAMy6E,UAAAA,CAAa3a,aAActqD,CAAAA,MAAM,CACvC,MAAMwqD,cAAAA,CAAiB,IAAI,CAACC,iBAAiB,EAC7CD,CAAAA,cAAAA,CAAe8N,kBAAkB,CAACngC,cAAcn4B,MAAM,CAAEhN,MAAQiyE,CAAAA,UAAAA,CAAY,EAAGz6E,IAC/E,CAAA,CAAA,OAAO,IAAI,CAACmgE,UAAU,CAACL,aAAAA,CAAe9/D,IAAM8U,CAAAA,IAAAA,CAAMowC,UACpD,CACAib,UAAAA,CAAWL,aAAa,CAAE9/D,IAAI,CAAE8U,IAAAA,CAAO,IAAI,CAAEowC,UAAY,KAAK,CAAE,CAC9D,MAAMu1B,WAAa3a,aAActqD,CAAAA,MAAM,CACvC,OAAO,IAAIu+D,OAAQ,CAAA,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC3B,MAAM32C,IAAO,CAAA,IAAA,CACX02C,UAAYrM,EAAAA,QAAAA,CAASC,WAAWyB,IAAI,CAAA,CAAE/oE,IAAK,CAAA,IAAA,CACzC+N,OAAAA,IAAS,CAAA,IAAIjN,WAAW7H,IACxB,CAAA,CAAA,CAAA,MAAM26E,QAAUF,UAAWpN,CAAAA,cAAc,CAAC,CAAA,CAAGrtE,MAC7C,MAAM46E,OAAAA,CAAU9lE,IAAKjS,CAAAA,WAAW,CAChCiS,IAAKzR,CAAAA,GAAG,CAAC,IAAIu3E,QAAQD,OACrBF,CAAAA,CAAAA,CAAAA,UAAAA,CAAW5M,KAAK,EAAA,CAChB/N,cAAc77B,OAAO,CAAC,IAAI,CAAA,CAC1BkB,QAAQrwB,IACV,EAAA,CAAA,EACF,CACA,CAAA,GAAIowC,UAAW,CACb,IAAI,CAACka,MAAM,GACXr7B,IACF,GAAA,CAAA,KAAO,CACL82C,UAAAA,CAAW,KACT92C,IACF,GAAA,CAAA,EACF,CACF,CAAA,CACF,CACAuhB,kBAAmB3X,CAAAA,aAAa,CAAEyX,YAAAA,CAAe,CAAC,CAAEtwC,IAAI,CAAEuwC,UAAAA,CAAa,CAAC,CAAErlD,IAAI,CAAE,CAC9E,IAAI,CAAC8hD,IAAI,CAACkD,KAAK,CAACC,WAAW,CAACtX,aAAcn4B,CAAAA,MAAM,CAAE4vC,YAActwC,CAAAA,IAAAA,CAAMuwC,UAAYrlD,CAAAA,IAAAA,EACpF,CACAihD,gBAAiBvV,CAAAA,MAAM,CAAE6zB,IAAI,CAAExgB,KAAK,CAAEjZ,KAAK,CAAE,CAC3C,MAAMq5B,QAAAA,CAAW,CACf1+C,KAAAA,CAAOirB,OAASA,MAAOjrB,CAAAA,KAAK,CAAG8+C,IAAAA,CAAK9+C,KAAK,CACzCC,MAAAA,CAAQgrB,MAASA,CAAAA,MAAAA,CAAOhrB,MAAM,CAAG6+C,IAAAA,CAAK7+C,MAAM,CAC5C28C,mBAAoB,CACtB,CAAA,CACA,MAAM2C,cAAAA,CAAiB,IAAI,CAACC,iBAAiB,EAC7C,CAAA,GAAIlhB,MAAO,CACT,MAAM47B,OAAU,CAAA,CACd/tC,QAASlB,MAASA,CAAAA,MAAAA,CAAOiV,WAAW,CAACzc,IAAI,CAAC+nB,UAAU,CAAG,IAAI,CAAChO,UAAU,CAAC/Z,IAAI,CAAC2nB,oBAAoB,CAChGjmB,QAAAA,CAAU,CACZ,CAAA,CACA,MAAMk1C,OAAU,CAAA,CACdluC,OAAS2yB,CAAAA,IAAAA,CAAOA,KAAK5e,WAAW,CAACzc,IAAI,CAAC+nB,UAAU,CAAG,IAAI,CAAChO,UAAU,CAAC/Z,IAAI,CAAC2nB,oBAAoB,CAC5FjmB,QAAAA,CAAU,CACZ,CACAo6B,CAAAA,cAAAA,CAAe+a,oBAAoB,CAACJ,QAASG,OAAS3b,CAAAA,QAAAA,EACxD,CACA,GAAIr5B,MAAO,CACT,MAAMk1C,QAAWtvC,CAAAA,MAAAA,CAASA,OAAS,IAAI,CAAC6N,YAAY,CACpD,MAAMw3B,aAAgBiK,CAAAA,QAAAA,CAAS92C,IAAI,CAACokB,eAAe,CAACiD,YAAY,CAChE,GAAI7f,OAAOiS,OAAO,CAAG,CAAG,CAAA,CACtB,MAAM+7B,WAAcna,CAAAA,IAAAA,CAAK5e,WAAW,CAACzc,IAAI,CAAC+nB,UAAU,CACpD,IAAI,CAACsmB,QAAQ,CAACzB,YAAY,CAAC9Q,eAAgB+Q,aAAe2I,CAAAA,WAAAA,EAC5D,CAAO,KAAA,CACL,MAAMA,WAAcna,CAAAA,IAAAA,CAAOA,IAAKne,CAAAA,WAAW,CAACld,IAAI,CAAC+nB,UAAU,CAAG,IAAI,CAAC1S,YAAY,CAACrV,IAAI,CAACokB,eAAe,CAACiD,YAAY,CACjH,MAAMovB,OAAU,CAAA,CACd/tC,OAASmkC,CAAAA,aAAAA,CACTnrC,SAAU,CACZ,CAAA,CACA,MAAMk1C,OAAAA,CAAU,CACdluC,OAAS8sC,CAAAA,WAAAA,CACT9zC,QAAU,CAAA,CACZ,EACAo6B,cAAe+a,CAAAA,oBAAoB,CAACJ,OAAAA,CAASG,QAAS3b,QACxD,EAAA,CACF,CACA,OAAO,IACT,CAnmBAt8D,WAAAA,CAAYg2C,MAAM,CAAEtsC,QAAU,EAAE,CAAC,CAC/B,KAAK,CAACssC,MAAAA,CAAQtsC,OAAU,CAAA,CAAA,IAAI,CAAC2rE,cAAc,CAAG,IAAI3wB,oBAAAA,CAAqB,IAAI,CAAG,CAAA,IAAI,CAAC+pB,eAAe,CAAG,IAAIrnB,qBAAAA,CAAsB,IAAI,CAAA,CAAG,IAAI,CAACutB,mBAAmB,CAAG,IAAA,CAAM,IAAI,CAACC,wBAAwB,CAAG,CAAA,CAAG,IAAI,CAACN,sBAAsB,CAAG,CAAA,CAAG,IAAI,CAACrvB,QAAQ,CAAG,IAAA,CAAM,IAAI,CAACnB,gBAAgB,CAAG,EAAE,CAAE,IAAI,CAACqZ,cAAc,CAAG,IAAA,CAAM,IAAI,CAACqa,cAAc,CAAG,EAAE,CAAE,IAAI,CAACpe,OAAO,CAAG,KAAM,IAAI,CAACC,KAAK,CAAG,KACrX3vD,OAAU,CAAA,IAAI,CAAC2yC,WAAW,CAC1B3yC,OAAAA,CAAQyC,KAAK,CAAGzC,QAAQyC,KAAK,EAAI,IACjC,CAAA,IAAI,CAACkvC,mBAAmB,CAAG3xC,OAAAA,CAAQ4yC,SAAS,EAAI,KAChD,CAAA,IAAI,CAACzV,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACmT,WAAW,CAAG5b,iBAAAA,CACnB,IAAI,CAAC5+B,KAAK,CAAC8iC,OAAO,CAAC5C,mBAAqBkQ,CAAAA,CAAAA,QAAQ,CAAC,CAAA,EACnD,CA4lBF,CAEA,MAAMwoC,WACJh3C,CAAAA,OAAAA,CAAQc,MAAM,CAAE,CACd,GAAI,IAAI,CAACm2C,QAAQ,CAAE,CACjBn2C,MAAAA,CAAOo2C,EAAE,CAACC,YAAY,CAAC,IAAI,CAACF,QAAQ,CACpC,CAAA,IAAI,CAACA,QAAQ,CAAG,KAClB,CACF,CACA,IAAI/nC,WAAAA,EAAc,CAChB,OAAO,CAAC,CAAC,IAAI,CAAC+nC,QAAQ,CAExBz2C,WAAAA,EAAc,CACZ,IAAI,CAACy2C,QAAQ,CAAG,KAClB,CACAhvC,OAAOnH,MAAM,CAAEwO,KAAK,CAAE75C,MAAM,CAAEmwC,OAAO,CAAE,CACrC,MAAMsxC,EAAKp2C,CAAAA,MAAAA,CAAOo2C,EAAE,CACpB,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,IAAIG,OACJ,CAAA,OAAO9nC,OACL,KAAKziB,aAAAA,CACHuqD,OAAUF,CAAAA,EAAAA,CAAGG,WAAW,CACxB,MACGvqD,KAAAA,cAAAA,CACHsqD,QAAUF,EAAGI,CAAAA,YAAY,CACzB,WACGvqD,aACHqqD,CAAAA,OAAAA,CAAUF,EAAGK,CAAAA,WAAW,CACxB,MACF,KAAKvqD,iBACHoqD,CAAAA,OAAAA,CAAUF,GAAGM,YAAY,CACzB,KACJ,CACA,IAAI,CAACP,QAAQ,CAAGC,EAAAA,CAAG12B,YAAY,EAC/B02B,CAAAA,EAAAA,CAAGO,UAAU,CAAChiF,OAAQ,IAAI,CAACwhF,QAAQ,CAAA,CACnCC,GAAGQ,UAAU,CAACjiF,MAAQmwC,CAAAA,OAAAA,CAASwxC,SACjC,CAAO,KAAA,CACLF,EAAGO,CAAAA,UAAU,CAAChiF,MAAQ,CAAA,IAAI,CAACwhF,QAAQ,EACnCC,EAAGS,CAAAA,aAAa,CAACliF,MAAAA,CAAQ,EAAGmwC,OAC9B,EAAA,CACF,CACAhnC,WAAAA,EAAa,CACX,IAAI,CAACq4E,QAAQ,CAAG,KAClB,CACF,CAEA,MAAMW,iBAAAA,SAA0BZ,YAC9Bh3C,OAAQc,CAAAA,MAAM,CAAE,CACd,KAAK,CAACd,OAAAA,CAAQc,MACdA,CAAAA,CAAAA,MAAAA,CAAO+2C,iBAAiB,GAC1B,CACAr3C,WAAc,EAAA,CACZ,KAAK,CAACA,WAAAA,EACN,CAAA,IAAI,CAACs3C,GAAG,CAAG,KACb,CACA7vC,OAAOyO,YAAY,CAAE,CACnB,MAAM5V,OAAS4V,YAAa5V,CAAAA,MAAM,CAClC,KAAK,CAACmH,MAAOnH,CAAAA,MAAAA,CAAQ4V,YAAapH,CAAAA,KAAK,CAAExO,MAAOo2C,CAAAA,EAAE,CAACa,YAAY,CAAErhC,YAAa9Q,CAAAA,OAAO,EACvF,CACAhnC,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACi7E,GAAG,CAAG,KAC7B,CACF,CAEA,MAAME,gBAAyBhB,SAAAA,WAAAA,CAa7B/uC,MAAOmP,CAAAA,WAAW,CAAE,CAClB,MAAMtW,MAASsW,CAAAA,WAAAA,CAAYtW,MAAM,CACjC,KAAK,CAACmH,MAAAA,CAAOnH,OAAQsW,WAAY9H,CAAAA,KAAK,CAAExO,MAAAA,CAAOo2C,EAAE,CAACe,oBAAoB,CAAE7gC,WAAAA,CAAYxR,OAAO,EAC7F,CAfAhnC,WAAYw4C,CAAAA,WAAW,CAAC,CACtB,KAAK,EACL,CAAA,MAAM8/B,GAAK9/B,WAAYtW,CAAAA,MAAM,CAACo2C,EAAE,CAChC,MAAMv6E,MAASy6C,CAAAA,WAAAA,CAAYz6C,MAAM,CACjC,GAAIA,MAAWiyB,GAAAA,iBAAAA,CAAmB,CAChC,IAAI,CAACspD,QAAQ,CAAGhB,EAAGiB,CAAAA,cAAa,CAC3B,KAAA,GAAIx7E,MAAWkyB,GAAAA,kBAAAA,CAAoB,CACxC,IAAI,CAACqpD,QAAQ,CAAGhB,GAAGkB,eACrB,CAAO,KAAA,GAAIz7E,SAAWmyB,kBAAoB,CAAA,CACxC,IAAI,CAACopD,QAAQ,CAAGhB,EAAAA,CAAGmB,aACrB,CACF,CAKF,CAEA,MAAMC,gBAAAA,CACJ15E,YAAY6hC,cAAc,CAAEtmC,IAAI,CAAEmU,IAAI,CAAEiqE,UAAU,CAAC,CACjD,IAAI,CAACA,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACp5C,OAAO,CAAGsB,eAAeriC,KAAK,CAAC8iC,OAAO,CAAC/mC,KAC5C,CAAA,IAAI,CAAC7E,OAAO,CAAG,IAAI44C,OAAAA,CACnB,GAAI/zC,IAAAA,CAAKrC,SAAS,CAACqC,IAAAA,CAAKrD,MAAM,CAAG,KAAO,KAAO,CAAA,CAC7C,OAAOwX,IAAAA,EACL,KAAKorB,iBACHprB,CAAAA,IAAAA,CAAOmsB,sBACP,CAAA,WACGhB,eACHnrB,CAAAA,IAAAA,CAAOgtB,oBACP,CAAA,WACGJ,gBACH5sB,CAAAA,IAAAA,CAAOitB,qBACP,CAAA,WACG/B,gBACHlrB,CAAAA,IAAAA,CAAOktB,qBACP,CAAA,WACG7B,gBACHrrB,CAAAA,IAAAA,CAAOusB,qBACP,CAAA,WACGf,iBACHxrB,CAAAA,IAAAA,CAAOmtB,sBACP,CAAA,WACGN,iBACH7sB,CAAAA,IAAAA,CAAOotB,sBACP,CAAA,WACGzB,iBACH3rB,CAAAA,IAAAA,CAAOqtB,sBACP,CAAA,WACG/B,gBACHtrB,CAAAA,IAAAA,CAAOwsB,qBACP,CAAA,WACGf,iBACHzrB,CAAAA,IAAAA,CAAOstB,sBACP,CAAA,WACGR,iBACH9sB,CAAAA,IAAAA,CAAOutB,sBACP,CAAA,WACG3B,iBACH5rB,CAAAA,IAAAA,CAAOwtB,sBACP,CAAA,WACGjC,gBACHvrB,CAAAA,IAAAA,CAAOysB,qBACP,CAAA,WACGf,iBACH1rB,CAAAA,IAAAA,CAAOytB,uBACP,MACF,KAAKV,kBACH/sB,IAAO0tB,CAAAA,sBAAAA,CACP,MACF,KAAK7B,kBACH7rB,IAAO2tB,CAAAA,sBAAAA,CACP,KACJ,CACF,CACA,IAAI,CAACiV,QAAQ,CAAG5iC,IAChB,CAAA,IAAI,CAAC9P,KAAK,CAAG,CACX,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACD,CACD,IAAI,CAAC0nC,KAAK,CAAG,GAAE,CAEnB,CAEA,MAAMsyC,qBAAAA,CAAwB,IAAI5uE,GAAAA,CAAI,CACpC,aACA,CAAA,eAAA,CACA,WACA,CAAA,eAAA,CACA,kBACD,CACD,CAAA,MAAM6uE,mBACJz4C,CAAAA,OAAAA,CAAQc,MAAM,CAAE,CACd,IAAI,CAACpjC,GAAG,CAAC8F,OAAO,CAAEixC,SAChB3T,MAAOo2C,CAAAA,EAAE,CAACwB,YAAY,CAACjkC,MACzB,EAAA,CAAA,EACF,CACAjU,WAAAA,CAAYM,MAAM,CAAE,CAClB,IAAI,CAACpjC,GAAG,CAAC+B,KAAK,GAChB,CACAb,aAAa,CACX,IAAI,CAAClB,GAAG,CAAG,IAAIuB,IACjB,CACF,CACA,MAAM05E,kBAAqB,CAAA,IAAIt3C,WAC/B,CAAA,MAAMu3C,qBAAuB,IAAIv3C,WACjC,CAAMw3C,MAAAA,WAAAA,CAQJ74C,QAAQyU,MAAM,CAAE,CACd,GAAI,IAAI,CAACqkC,SAAS,CAAE,CAClBrkC,OAAO3T,MAAM,CAACo2C,EAAE,CAAC6B,aAAa,CAAC,IAAI,CAACD,SAAS,CAC7C,CAAA,IAAI,CAACA,SAAS,CAAG,KACnB,CACF,CACA7hC,IAAAA,EAAO,CACL,IAAI,CAAC6U,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACyN,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACpX,UAAU,CAAG,EAAE,CACpB,IAAI,CAAC22B,SAAS,CAAG,IACjB,CAAA,IAAI,CAACE,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,CAAG,KAC1B,CACAz4C,WAAAA,EAAc,CACZ,IAAI,CAACyW,IAAI,GACX,CACAjC,cAAelU,CAAAA,MAAM,CAAE2T,MAAM,CAAE,CAC7B,IAAI,CAACykC,OAAO,CAACp4C,MAAQ2T,CAAAA,MAAAA,CAAAA,CACrB,IAAI,CAAC0kC,IAAI,CAACr4C,MAAAA,CAAQ2T,MACpB,EAAA,CACAykC,QAAQp4C,MAAM,CAAE2T,MAAM,CAAE,CACtB,MAAMkjB,UAAAA,CAAaljB,MAAOkjB,CAAAA,UAAU,CACpC,IAAI,CAACqhB,cAAc,CAAG,IAAI,CAACI,oBAAoB,CAACt4C,OAAQ62B,UAAWlJ,CAAAA,OAAO,CAAE,IAAA,CAC5E,CAAA,IAAI,CAACwqB,gBAAgB,CAAG,IAAI,CAACG,oBAAoB,CAACt4C,MAAAA,CAAQ62B,WAAWhJ,OAAO,CAAE,KAChF,EAAA,CACAwqB,KAAKr4C,MAAM,CAAE2T,MAAM,CAAE,CACnB,GAAI,IAAI,CAACqkC,SAAS,CAAE,CAClB,MACF,CACA,MAAM5B,GAAKp2C,MAAOo2C,CAAAA,EAAE,CACpB,GAAIA,GAAGmC,aAAa,EAAA,CAAI,CACtB,MACF,CACA,MAAMP,SAAAA,CAAY5B,EAAGoC,CAAAA,aAAa,EAClC,CAAA,IAAI,CAACR,SAAS,CAAGA,SACjB5B,CAAAA,EAAAA,CAAGqC,YAAY,CAACT,UAAW,IAAI,CAACE,cAAc,CAAA,CAC9C9B,GAAGqC,YAAY,CAACT,SAAW,CAAA,IAAI,CAACG,gBAAgB,CAAA,CAChD,MAAMthB,UAAAA,CAAaljB,OAAOkjB,UAAU,CACpC,MAAM0N,KAAAA,CAAQ1N,WAAWxV,UAAU,CACnC,GAAIwV,UAAAA,CAAWoN,oBAAoB,CAAE,CACnC,IAAIyU,QAAAA,CAAW7hB,WAAWmN,gBAAgB,CAC1C,GAAI,CAAC0U,SAAU,CACbA,QAAAA,CAAW,EAAE,CACb,IAAI,MAAMC,IAAAA,IAAQpU,KAAM,CAAA,CACtB,GAAIA,KAAMniE,CAAAA,cAAc,CAACu2E,IAAAA,CAAAA,CAAO,CAC9BD,QAAS7hF,CAAAA,IAAI,CAAC,CAAC,IAAI,EAAE8hF,IAAAA,CAAK,CAAC,EAC7B,CACF,CACF,CACAvC,EAAGwC,CAAAA,yBAAyB,CAACZ,SAAWU,CAAAA,QAAAA,CAAUtC,EAAGyC,CAAAA,mBAAmB,EAC1E,CACA,IAAI,MAAMF,IAAAA,IAAQpU,MAAM,CACtB,GAAIA,KAAMniE,CAAAA,cAAc,CAACu2E,IAAO,CAAA,CAAA,CAC9B,MAAM/oC,QAAAA,CAAW20B,KAAK,CAACoU,IAAAA,CAAK,CAC5B,MAAMG,IAAM96C,kBAAkB,CAAC4R,QAAS,CAAA,CACxCwmC,GAAG2C,kBAAkB,CAACf,SAAWc,CAAAA,GAAAA,CAAKH,MACxC,CACF,CACAvC,EAAG4C,CAAAA,WAAW,CAAChB,SACjB,EAAA,CACAM,oBAAqBt4C,CAAAA,MAAM,CAAEr0B,GAAG,CAAEstE,cAAc,CAAE,CAChD,MAAM7C,EAAAA,CAAKp2C,MAAOo2C,CAAAA,EAAE,CACpB,GAAIA,EAAAA,CAAGmC,aAAa,EAAA,CAAI,CACtB,OAAO,IACT,CACA,MAAMW,kBAAoBD,cAAiBpB,CAAAA,kBAAAA,CAAqBC,oBAChE,CAAA,MAAMqB,YAAcD,iBAAkBphF,CAAAA,GAAG,CAACkoC,MAAAA,CAAQ,KAChD,OAAO,IAAI23C,mBACb,CAAA,CAAA,CACA,IAAIyB,QAAWD,CAAAA,WAAAA,CAAYv8E,GAAG,CAAC9E,GAAG,CAAC6T,GAAAA,CAAAA,CACnC,GAAI,CAACytE,SAAU,CACbA,QAAAA,CAAWhD,EAAGiD,CAAAA,YAAY,CAACJ,cAAiB7C,CAAAA,EAAAA,CAAGkD,aAAa,CAAGlD,GAAGmD,eAAe,CAAA,CACjFnD,EAAGoD,CAAAA,YAAY,CAACJ,QAAUztE,CAAAA,GAAAA,CAAAA,CAC1ByqE,EAAGqD,CAAAA,aAAa,CAACL,QACjBD,CAAAA,CAAAA,WAAAA,CAAYv8E,GAAG,CAAC0B,GAAG,CAACqN,GAAAA,CAAKytE,QAC3B,EAAA,CACA,OAAOA,QACT,CACAM,QAAS15C,CAAAA,MAAM,CAAE2T,MAAM,CAAE,CACvB,MAAMyiC,GAAKp2C,MAAOo2C,CAAAA,EAAE,CACpB,GAAIA,GAAGmC,aAAa,EAAA,CAAI,CACtB,OAAO,IACT,CACA,MAAMP,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,MAAMnhB,UAAaljB,CAAAA,MAAAA,CAAOkjB,UAAU,CACpC,MAAM8iB,UAAavD,CAAAA,EAAAA,CAAGwD,mBAAmB,CAAC5B,SAAAA,CAAW5B,EAAGyD,CAAAA,WAAW,EACnE,GAAI,CAACF,UAAY,CAAA,CACf,GAAI,CAAC,IAAI,CAACG,WAAW,CAAC95C,MAAQ2T,CAAAA,MAAAA,CAAQ,IAAI,CAACukC,cAAc,CAAErhB,UAAAA,CAAWlJ,OAAO,CAAE,UAAW,CACxF,OAAO,KACT,CACA,GAAI,CAAC,IAAI,CAACmsB,WAAW,CAAC95C,MAAQ2T,CAAAA,MAAAA,CAAQ,IAAI,CAACwkC,gBAAgB,CAAEthB,UAAAA,CAAWhJ,OAAO,CAAE,YAAa,CAC5F,OAAO,KACT,CACA,MAAMksB,OAAU,CAAA,CAAC,sCAAsC,EAAE3D,GAAG4D,iBAAiB,CAAChC,SAAW,CAAA,CAAA,CAAC,CAC1Fx1E,OAAQC,CAAAA,KAAK,CAACs3E,OAAAA,CAAAA,CACd,OAAO,KACT,CACA,MAAME,aAAAA,CAAgB7D,GAAGwD,mBAAmB,CAAC5B,SAAW5B,CAAAA,EAAAA,CAAG8D,iBAAiB,CAC5EvmC,CAAAA,MAAAA,CAAO0N,UAAU,CAAC1iD,KAAK,EACvB,CAAA,IAAI,IAAI5I,CAAAA,CAAI,EAAGA,CAAIkkF,CAAAA,aAAAA,CAAelkF,CAAI,EAAA,CAAA,CACpC,MAAMi9B,IAAOojD,CAAAA,EAAAA,CAAG+D,eAAe,CAACnC,UAAWjiF,CAC3C,CAAA,CAAA,MAAMmK,QAAWk2E,CAAAA,EAAAA,CAAGgE,iBAAiB,CAACpC,SAAAA,CAAWhlD,IAAK35B,CAAAA,IAAI,EAC1D,GAAIq+E,qBAAAA,CAAsBr5E,GAAG,CAAC20B,KAAK35B,IAAI,CAAA,CAAG,CACxC,QACF,CACA,GAAIw9D,UAAAA,CAAWxV,UAAU,CAACruB,KAAK35B,IAAI,CAAC,GAAKwE,SAAAA,CAAW,CAClD2E,OAAQC,CAAAA,KAAK,CAAC,CAAC,yBAAyB,EAAEuwB,IAAAA,CAAK35B,IAAI,CAAC,4DAA4D,EAAEs6C,MAAAA,CAAOyjB,KAAK,CAAC,CAAC,CAAC,CAAEzjB,OACnIA,CAAAA,MAAAA,CAAOsZ,MAAM,CAAG,KAClB,CAAO,KAAA,CACLtZ,OAAO0N,UAAU,CAAC/iD,GAAG,CAAC4B,SAAU8yB,IAAK35B,CAAAA,IAAI,EAC3C,CACF,CACA,MAAMqlD,YAAAA,CAAe1e,MAAOq6C,CAAAA,aAAa,CACzC,MAAMC,WAAAA,CAAclE,EAAGwD,CAAAA,mBAAmB,CAAC5B,SAAW5B,CAAAA,EAAAA,CAAGmE,eAAe,CAAA,CACxE,IAAI,IAAIxkF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIukF,YAAavkF,CAAI,EAAA,CAAA,CAClC,MAAMi9B,IAAAA,CAAOojD,GAAGoE,gBAAgB,CAACxC,SAAWjiF,CAAAA,CAAAA,CAAAA,CAC5C,MAAMmK,QAAWk2E,CAAAA,EAAAA,CAAGqE,kBAAkB,CAACzC,UAAWhlD,IAAK35B,CAAAA,IAAI,CAC3D,CAAA,GAAIq+E,sBAAsBr5E,GAAG,CAAC20B,IAAK35B,CAAAA,IAAI,EAAG,CACxC,QACF,CACA,MAAMqhF,YAAc,IAAIlD,gBAAAA,CAAiBx3C,MAAQhN,CAAAA,IAAAA,CAAK35B,IAAI,CAAE2mC,MAAAA,CAAO26C,aAAa,CAAC3nD,KAAKxlB,IAAI,CAAC,CAAEtN,QAAAA,CAAAA,CAC7F,GAAIw+C,YAAargD,CAAAA,GAAG,CAAC20B,IAAAA,CAAKxlB,IAAI,CAAG,CAAA,CAC/B,IAAI,CAACirD,QAAQ,CAAC5hE,IAAI,CAAC6jF,WAAAA,EACrB,MAAO,CACL,IAAI,CAAC1vB,QAAQ,CAACn0D,IAAI,CAAC6jF,WACrB,EAAA,CACF,CACA/mC,MAAOojB,CAAAA,KAAK,CAAG,IAAA,CACf,OAAO,IACT,CACA+iB,WAAY95C,CAAAA,MAAM,CAAE2T,MAAM,CAAEylC,QAAQ,CAAEzyC,MAAM,CAAE6vB,UAAU,CAAE,CACxD,MAAM4f,EAAKp2C,CAAAA,MAAAA,CAAOo2C,EAAE,CACpB,GAAI,CAACA,EAAAA,CAAGwE,kBAAkB,CAACxB,SAAUhD,EAAGyE,CAAAA,cAAc,CAAG,CAAA,CACvD,MAAMC,OAAU1E,CAAAA,EAAAA,CAAG2E,gBAAgB,CAAC3B,UACpC,KAAM,CAAC/9E,IAAMoH,CAAAA,KAAAA,CAAM,CAAG,IAAI,CAACu4E,aAAa,CAACr0C,OAAQm0C,OACjD,CAAA,CAAA,MAAMf,QAAU,CAAC,kBAAkB,EAAEvjB,UAAW,CAAA;;AAAY,EAAEskB,OAAQ,CAAA;AAAE,EAAEz/E,KAAK,iBAAiB,EAAG,KAAK,CAAA,CAAE,CAAC,CAC3GmH,OAAAA,CAAQC,KAAK,CAACs3E,SACd,OAAO,KACT,CACA,OAAO,IACT,CACAkB,QAAAA,CAASj7C,MAAM,CAAE,CACf,KAAM,CAAEk7C,wBAAwB,CAAE,CAAGl7C,MACrC,CAAA,GAAIk7C,wBAA0B,CAAA,CAC5B,OAAOl7C,MAAOo2C,CAAAA,EAAE,CAACwD,mBAAmB,CAAC,IAAI,CAAC5B,SAAS,CAAEkD,wBAAAA,CAAyBC,qBAAqB,CACrG,CACA,OAAO,IACT,CACAH,aAAcrvE,CAAAA,GAAG,CAAEmvE,OAAO,CAAE,CAC1B,MAAMr4E,KAAQ,CAAA,GACd,IAAIpH,IAAAA,CAAO,EACX,CAAA,GAAIsQ,IAAK,CACP,MAAMiyD,KAAQjyD,CAAAA,GAAAA,CAAIjV,KAAK,CAAC,IAAA,CAAA,CACxB,IAAIgpB,IAAAA,CAAO,EACX,IAAIC,EAAAA,CAAKi+C,MAAM5nE,MAAM,CACrB,GAAI8kF,OAAWA,EAAAA,OAAAA,CAAQxkF,UAAU,CAAC,UAAW,CAC3C,MAAMkB,KAAQsjF,CAAAA,OAAAA,CAAQtjF,KAAK,CAAC,8BAAA,CAAA,CAC5B,GAAIA,KAAAA,CAAO,CACTiL,KAAMs3E,CAAAA,OAAO,CAAGviF,KAAK,CAAC,CAAE,CACxBiL,CAAAA,KAAAA,CAAMiqD,IAAI,CAAGzgD,QAAAA,CAASzU,KAAK,CAAC,EAAE,CAAE,EAAA,CAAA,CAChCkoB,IAAOpqB,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGjH,MAAMiqD,IAAI,CAAG,GAChC/sC,EAAKrqB,CAAAA,IAAAA,CAAKmU,GAAG,CAACm0D,MAAM5nE,MAAM,CAAEyM,KAAMiqD,CAAAA,IAAI,CAAG,CAC3C,EAAA,CACF,CACA,IAAI,IAAI32D,CAAI2pB,CAAAA,IAAAA,CAAM3pB,EAAI4pB,EAAI5pB,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAMqlF,UAAAA,CAAarlF,CAAI,CAAA,CAAA,GAAM0M,MAAMiqD,IAAI,CAAG,IAAO,CAAA,IAAA,CACjDrxD,MAAQ,CAAC,EAAE+/E,UAAW,CAAA,EAAErlF,EAAI,CAAE,CAAA,EAAG,EAAE6nE,KAAK,CAAC7nE,EAAE,CAAC;AAAE,EAChD,CACA0M,KAAMkkC,CAAAA,MAAM,CAAGh7B,IACjB,CACA,OAAO,CACLtQ,IAAAA,CACAoH,MACD,CArLH3E,YAAY61C,MAAM,CAAC,CACjB,IAAI,CAAC0nC,eAAe,CAAG,CAAA,CACvB,IAAI,CAACllC,IAAI,GACT,IAAI,CAACiiC,OAAO,CAACzkC,MAAAA,CAAO3T,MAAM,CAAE2T,MAAAA,CAAAA,CAC5B,IAAI,CAAC0kC,IAAI,CAAC1kC,MAAO3T,CAAAA,MAAM,CAAE2T,MACzBA,CAAAA,CAAAA,MAAAA,CAAO3T,MAAM,CAAC4T,OAAO,CAAC/8C,IAAI,CAAC88C,QAC7B,CAiLF,CAEA,MAAM2nC,iBAOJ77B,CAAAA,QAAAA,CAAS4qB,QAAQ,CAAE,CACjB,IAAI,CAACkR,QAAQ,CAAG,IAAI/qE,UAAAA,CAAW65D,SAC/B,CAAA,IAAI,CAACmR,cAAc,CAAG,IAAIhrE,UAAW65D,CAAAA,QAAAA,CACrC,CAAA,IAAI,CAACoR,gBAAgB,CAAG,IAAIjrE,WAAW65D,QACzC,EAAA,CACAhkE,IAAItQ,CAAC,CAAE+2E,kBAAkB,CAAEC,aAAa,CAAEC,kBAAkB,CAAE,CAC5D,IAAI,CAACuO,QAAQ,CAACxlF,CAAAA,CAAE,CAAG+2E,kBACnB,CAAA,IAAI,CAAC0O,cAAc,CAACzlF,CAAE,CAAA,CAAGi3E,mBAAqB,IAAI,CAAC0O,cAAc,CACjE,IAAI,CAACD,gBAAgB,CAAC1lF,CAAE,CAAA,CAAGg3E,cAC7B,CAfAjvE,WAAAA,CAAY49E,cAAc,CAAC,CACzB,IAAI,CAACH,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACC,cAAc,CAAGA,eACxB,CAWF,CAEA,SAASC,eAAAA,CAAgBzhB,KAAK,CAAEj/D,IAAI,EAClC,MAAM2gF,IAAAA,CAAO1hB,MAAMx+C,KAAK,CACxB,MAAMmgE,IAAO3hB,CAAAA,KAAAA,CAAMv+C,MAAM,CACzB,GAAIigE,KAAO3gF,IAAQ4gF,EAAAA,IAAAA,CAAO5gF,KAAM,CAC9B,MAAMod,MAAQpd,IAAO3F,CAAAA,IAAAA,CAAKoU,GAAG,CAACkyE,IAAAA,CAAMC,MACpC,MAAMC,IAAAA,CAAOxmF,KAAKmQ,KAAK,CAACm2E,KAAOvjE,KAC/B,CAAA,CAAA,MAAM0jE,IAAOzmF,CAAAA,IAAAA,CAAKmQ,KAAK,CAACo2E,KAAOxjE,KAC/B,CAAA,CAAA,MAAMy7B,OAASjzC,QAASC,CAAAA,aAAa,CAAC,QACtCgzC,CAAAA,CAAAA,OAAOp4B,KAAK,CAAGogE,IACfhoC,CAAAA,MAAAA,CAAOn4B,MAAM,CAAGogE,IAAAA,CAChB,MAAMC,OAAUloC,CAAAA,MAAAA,CAAOwmB,UAAU,CAAC,IAAA,CAAA,CAClC0hB,QAAQC,SAAS,CAAC/hB,MAAO,CAAG,CAAA,CAAA,CAAG0hB,KAAMC,IAAM,CAAA,CAAA,CAAG,EAAGC,IAAMC,CAAAA,IAAAA,CAAAA,CACvD,OAAOjoC,MACT,CACA,OAAOomB,KACT,CACA,MAAMgiB,YAMJh9C,CAAAA,OAAAA,CAAQc,MAAM,CAAE,CACd,GAAI,IAAI,CAACm8C,UAAU,CAAE,CACnB,IAAI,IAAIpmF,CAAAA,CAAI,EAAGA,CAAIiqC,CAAAA,MAAAA,CAAOo8C,YAAY,CAACpmF,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,MAAMsmF,WAAcr8C,CAAAA,MAAAA,CAAOo8C,YAAY,CAACrmF,CAAAA,CAAE,CAC1C,IAAI,IAAIumF,EAAI,CAAGA,CAAAA,CAAAA,CAAID,YAAYrmF,MAAM,CAAEsmF,IAAI,CACzC,GAAID,WAAW,CAACC,CAAAA,CAAE,GAAK,IAAI,CAACH,UAAU,CAAE,CACtCE,WAAW,CAACC,CAAAA,CAAE,CAAG,KACnB,CACF,CACF,CACAt8C,MAAAA,CAAOo2C,EAAE,CAACmG,aAAa,CAAC,IAAI,CAACJ,UAAU,CACvC,CAAA,IAAI,CAACA,UAAU,CAAG,KACpB,CACF,CACAz8C,WAAc,EAAA,CACZ,IAAI,CAACy8C,UAAU,CAAG,KACpB,CACAr5C,gBAAgBC,IAAI,CAAE,CACpB,IAAI,CAACy5C,mBAAmB,EAAIz5C,KAC9B,CACAzgC,UAAW09B,CAAAA,MAAM,CAAE6H,OAAO,CAAE,CAC1B,MAAMuuC,EAAAA,CAAKp2C,OAAOo2C,EAClB,CAAA,IAAI,CAAC+F,UAAU,CAAG/F,EAAAA,CAAGjuB,aAAa,EAClC,CAAA,IAAI,CAACs0B,SAAS,CAAG50C,OAAQvF,CAAAA,QAAQ,CAAG8zC,EAAGsG,CAAAA,gBAAgB,CAAG70C,OAAQ1D,CAAAA,OAAO,CAAGiyC,EAAGuG,CAAAA,UAAU,CAAG90C,OAAQzC,CAAAA,KAAK,CAAGgxC,EAAGwG,CAAAA,gBAAgB,CAAGxG,EAAGyG,CAAAA,UAAU,CAC/I,OAAOh1C,OAAAA,CAAQlE,OAAO,EACpB,KAAKzV,eACH,IAAI,CAAC4uD,SAAS,CAAG1G,EAAGrxB,CAAAA,KAAK,CACzB,IAAI,CAACg4B,iBAAiB,CAAG3G,GAAGrxB,KAC5B,CAAA,IAAI,CAACi4B,YAAY,CAAG5G,EAAAA,CAAGiB,aAAa,CACpC,WACGlpD,cACH,CAAA,IAAI,CAAC2uD,SAAS,CAAG1G,GAAG6G,SACpB,CAAA,IAAI,CAACF,iBAAiB,CAAG3G,EAAAA,CAAG6G,SAAS,CACrC,IAAI,CAACD,YAAY,CAAG5G,EAAGiB,CAAAA,aAAa,CACpC,MACF,KAAKjpD,gBACH,IAAI,CAAC0uD,SAAS,CAAG1G,EAAAA,CAAG8G,eAAe,CACnC,IAAI,CAACH,iBAAiB,CAAG3G,EAAG8G,CAAAA,eAAe,CAC3C,IAAI,CAACF,YAAY,CAAG5G,GAAGiB,aAAa,CACpC,MACG/lD,KAAAA,cAAAA,CACH,IAAI,CAACwrD,SAAS,CAAG1G,EAAGtpE,CAAAA,GAAG,CACvB,IAAI,CAACiwE,iBAAiB,CAAG3G,GAAG+G,EAC5B,CAAA,IAAI,CAACH,YAAY,CAAG5G,EAAAA,CAAGiB,aAAa,CACpC,WACG9lD,eACH,CAAA,IAAI,CAACurD,SAAS,CAAG1G,GAAGgH,EACpB,CAAA,IAAI,CAACL,iBAAiB,CAAG3G,EAAAA,CAAGiH,GAAG,CAC/B,IAAI,CAACL,YAAY,CAAG5G,EAAGiB,CAAAA,aAAa,CACpC,MACF,KAAKhpD,mBACH,IAAI,CAACyuD,SAAS,CAAG1G,EAAAA,CAAGkH,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG3G,EAAGmH,CAAAA,MAAM,CAClC,IAAI,CAACP,YAAY,CAAG5G,GAAGoH,oBAAoB,CAC3C,MACGlvD,KAAAA,oBAAAA,CACH,IAAI,CAACwuD,SAAS,CAAG1G,EAAGqH,CAAAA,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG3G,GAAGsH,OAC5B,CAAA,IAAI,CAACV,YAAY,CAAG5G,EAAAA,CAAGuH,sBAAsB,CAC7C,WACGpvD,iBACH,CAAA,IAAI,CAACuuD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG3G,EAAAA,CAAGwH,KAC5B,CAAA,IAAI,CAACZ,YAAY,CAAG5G,GAAGyH,sBAAsB,CAC7C,MACGrvD,KAAAA,gBAAAA,CACH,IAAI,CAACsuD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG3G,GAAG0H,IAC5B,CAAA,IAAI,CAACd,YAAY,CAAG5G,EAAAA,CAAGiB,aAAa,CACpC,WACG5oD,iBACH,CAAA,IAAI,CAACquD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG3G,EAAAA,CAAG2H,KAAK,CACjC,IAAI,CAACf,YAAY,CAAG5G,EAAGiB,CAAAA,aAAa,CACpC,MACF,KAAKpnD,kBACL,KAAK6B,kBAAAA,CACH,MACGpD,KAAAA,gBAAAA,CACH,IAAI,CAACouD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG/8C,OAAO6vC,wBAAwB,CAACmO,4BAA4B,CACrF,WACGrvD,gBACH,CAAA,IAAI,CAACmuD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG/8C,MAAAA,CAAO6vC,wBAAwB,CAACoO,6BAA6B,CACtF,MACF,KAAKrvD,iBACH,IAAI,CAACkuD,SAAS,CAAG1G,EAAAA,CAAGqH,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG/8C,MAAO6vC,CAAAA,wBAAwB,CAACqO,6BAA6B,CACtF,MACG3uD,KAAAA,gBAAAA,CACH,IAAI,CAACutD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG/8C,OAAOm+C,wBAAwB,CAACC,yBAAyB,CAClF,WACG1uD,4BACH,CAAA,IAAI,CAACotD,SAAS,CAAG1G,GAAGkH,GACpB,CAAA,IAAI,CAACP,iBAAiB,CAAG/8C,MAAAA,CAAOq+C,yBAAyB,CAACC,+BAA+B,CACzF,MACF,KAAK3uD,8BACH,IAAI,CAACmtD,SAAS,CAAG1G,EAAAA,CAAGqH,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG/8C,MAAOq+C,CAAAA,yBAAyB,CAACE,gCAAgC,CAC1F,MACG3uD,KAAAA,4BAAAA,CACH,IAAI,CAACktD,SAAS,CAAG1G,EAAAA,CAAGkH,GACpB,CAAA,IAAI,CAACP,iBAAiB,CAAG/8C,MAAAA,CAAOq+C,yBAAyB,CAACG,+BAA+B,CACzF,MACF,KAAK3uD,8BACH,IAAI,CAACitD,SAAS,CAAG1G,EAAAA,CAAGqH,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG/8C,MAAOq+C,CAAAA,yBAAyB,CAACI,gCAAgC,CAC1F,MACGjvD,KAAAA,oBAAAA,CACH,IAAI,CAACstD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG/8C,OAAO+vC,uBAAuB,CAAC2O,oBAAoB,CAC5E,WACGjvD,qBACH,CAAA,IAAI,CAACqtD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG/8C,MAAAA,CAAO+vC,uBAAuB,CAAC4O,yBAAyB,CACjF,MACF,KAAK7uD,qBACH,IAAI,CAACgtD,SAAS,CAAG1G,EAAAA,CAAGqH,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG/8C,MAAOgwC,CAAAA,wBAAwB,CAAC4O,4BAA4B,CACrF,MACG7uD,KAAAA,mBAAAA,CACH,IAAI,CAAC+sD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG/8C,OAAO6+C,uBAAuB,CAACC,wBAAwB,CAChF,WACG9uD,oBACH,CAAA,IAAI,CAAC8sD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG/8C,MAAAA,CAAO6+C,uBAAuB,CAACE,4CAA4C,CACpG,MACF,KAAKhtD,iBACH,IAAI,CAAC+qD,SAAS,CAAG1G,EAAAA,CAAGkH,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG/8C,MAAOg/C,CAAAA,yBAAyB,CAACC,oCAAoC,CAC9F,MACGjtD,KAAAA,iBAAAA,CACH,IAAI,CAAC8qD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG/8C,OAAOg/C,yBAAyB,CAACE,sCAAsC,CAChG,WACGjtD,eACH,CAAA,IAAI,CAAC6qD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG/8C,MAAAA,CAAOg/C,yBAAyB,CAACG,8BAA8B,CACxF,MACG3tD,KAAAA,qBAAAA,CACH,IAAI,CAACsrD,SAAS,CAAG1G,EAAGgJ,CAAAA,IAAI,CACxB,IAAI,CAACrC,iBAAiB,CAAG/8C,OAAOq/C,6BAA6B,CAACC,6BAA6B,CAC3F,WACG7tD,sBACH,CAAA,IAAI,CAACqrD,SAAS,CAAG1G,GAAGmJ,UACpB,CAAA,IAAI,CAACxC,iBAAiB,CAAG/8C,MAAAA,CAAOq/C,6BAA6B,CAACG,mCAAmC,CACjG,MACF,KAAK9tD,uBACH,IAAI,CAACorD,SAAS,CAAG1G,EAAAA,CAAGmJ,UAAU,CAC9B,IAAI,CAACxC,iBAAiB,CAAG/8C,MAAOq/C,CAAAA,6BAA6B,CAACI,mCAAmC,CACjG,MACG9tD,KAAAA,qBAAAA,CACH,IAAI,CAACmrD,SAAS,CAAG1G,EAAGgJ,CAAAA,IAAI,CACxB,IAAI,CAACrC,iBAAiB,CAAG/8C,OAAO+vC,uBAAuB,CAAC2P,qBAAqB,CAC7E,WACG9tD,sBACH,CAAA,IAAI,CAACkrD,SAAS,CAAG1G,GAAGmJ,UACpB,CAAA,IAAI,CAACxC,iBAAiB,CAAG/8C,MAAAA,CAAO+vC,uBAAuB,CAAC4P,gCAAgC,CACxF,MACF,KAAK9tD,0BACH,IAAI,CAACirD,SAAS,CAAG1G,EAAAA,CAAGmJ,UAAU,CAC9B,IAAI,CAACxC,iBAAiB,CAAG/8C,MAAOgwC,CAAAA,wBAAwB,CAAC4P,oCAAoC,CAC7F,MACG1tD,KAAAA,qBAAAA,CACH,IAAI,CAAC4qD,SAAS,CAAG1G,EAAGqH,CAAAA,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG/8C,OAAOg/C,yBAAyB,CAACa,oCAAoC,CAC9F,WACGzuD,gBACH,CAAA,IAAI,CAAC0rD,SAAS,CAAG1G,GAAGtpE,GACpB,CAAA,IAAI,CAACiwE,iBAAiB,CAAG3G,EAAAA,CAAG0J,IAAI,CAChC,IAAI,CAAC9C,YAAY,CAAG5G,EAAG2J,CAAAA,UAAU,CACjC,MACF,KAAK1uD,kBACH,IAAI,CAACyrD,SAAS,CAAG1G,EAAAA,CAAGgH,EAAE,CACtB,IAAI,CAACL,iBAAiB,CAAG3G,EAAG4J,CAAAA,KAAK,CACjC,IAAI,CAAChD,YAAY,CAAG5G,GAAG2J,UAAU,CACjC,MACF,KAAKlxD,kBACH,CAAA,IAAI,CAACiuD,SAAS,CAAG1G,GAAGkH,GACpB,CAAA,IAAI,CAACP,iBAAiB,CAAG3G,EAAAA,CAAG6J,MAAM,CAClC,IAAI,CAACjD,YAAY,CAAG5G,EAAG2J,CAAAA,UAAU,CACjC,MACF,KAAKjxD,oBACH,IAAI,CAACguD,SAAS,CAAG1G,EAAAA,CAAGqH,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG3G,EAAG8J,CAAAA,OAAO,CACnC,IAAI,CAAClD,YAAY,CAAG5G,GAAG2J,UAAU,CACjC,MACGhxD,KAAAA,kBAAAA,CACH,IAAI,CAAC+tD,SAAS,CAAG1G,EAAGkH,CAAAA,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG3G,GAAG+J,MAC5B,CAAA,IAAI,CAACnD,YAAY,CAAG5G,EAAAA,CAAGgK,KAAK,CAC5B,WACGpxD,mBACH,CAAA,IAAI,CAAC8tD,SAAS,CAAG1G,GAAGqH,IACpB,CAAA,IAAI,CAACV,iBAAiB,CAAG3G,EAAAA,CAAGiK,OAAO,CACnC,IAAI,CAACrD,YAAY,CAAG5G,EAAGgK,CAAAA,KAAK,CAC5B,MACF,KAAKnxD,iBACH,IAAI,CAAC6tD,SAAS,CAAG1G,EAAAA,CAAGtpE,GAAG,CACvB,IAAI,CAACiwE,iBAAiB,CAAG3G,EAAGkK,CAAAA,IAAI,CAChC,IAAI,CAACtD,YAAY,CAAG5G,GAAGgK,KAAK,CAC5B,MACGlxD,KAAAA,iBAAAA,CACH,IAAI,CAAC4tD,SAAS,CAAG1G,EAAGmK,CAAAA,eAAe,CACnC,IAAI,CAACxD,iBAAiB,CAAG3G,GAAGoK,kBAC5B,CAAA,IAAI,CAACxD,YAAY,CAAG5G,EAAAA,CAAGgK,KAAK,CAC5B,WACGjuD,mBACH,CAAA,IAAI,CAAC2qD,SAAS,CAAG1G,GAAGmK,eACpB,CAAA,IAAI,CAACxD,iBAAiB,CAAG3G,EAAAA,CAAGqK,iBAAiB,CAC7C,IAAI,CAACzD,YAAY,CAAG5G,EAAGkB,CAAAA,cAAc,CACrC,MACF,KAAKnoD,yBACH,IAAI,CAAC2tD,SAAS,CAAG1G,EAAAA,CAAGsK,aAAa,CACjC,IAAI,CAAC3D,iBAAiB,CAAG3G,GAAGuK,gBAC5B,CAAA,IAAI,CAAC3D,YAAY,CAAG5G,EAAAA,CAAGwK,iBAAiB,CACxC,WACGxxD,mBACH,CAAA,IAAI,CAAC0tD,SAAS,CAAG1G,GAAGkH,GACpB,CAAA,IAAI,CAACP,iBAAiB,CAAG3G,EAAAA,CAAGyK,cAAc,CAC1C,IAAI,CAAC7D,YAAY,CAAG5G,EAAG0K,CAAAA,4BAA4B,CACnD,MACF,KAAKzxD,kBACH,IAAI,CAACytD,SAAS,CAAG1G,EAAAA,CAAGkH,GAAG,CACvB,IAAI,CAACP,iBAAiB,CAAG3G,EAAG2K,CAAAA,KAAK,CACjC,IAAI,CAAC/D,YAAY,CAAG5G,GAAGiB,aAAa,CACpC,MACG/nD,KAAAA,kBAAAA,CACH,IAAI,CAACwtD,SAAS,CAAG1G,EAAGqH,CAAAA,IAAI,CACxB,IAAI,CAACV,iBAAiB,CAAG3G,GAAG4K,YAC5B,CAAA,IAAI,CAAChE,YAAY,CAAG5G,EAAAA,CAAGiB,aAAa,CACpC,WACGnnD,eACH,CAAA,IAAI,CAAC4sD,SAAS,CAAG1G,EAAAA,CAAG6K,WAAW,CAC/B,IAAI,CAAClE,iBAAiB,CAAG3G,EAAG8K,CAAAA,GAAG,CAC/B,IAAI,CAAClE,YAAY,CAAG5G,GAAG+K,IAAI,CAC3B,MACGhxD,KAAAA,eAAAA,CACH,IAAI,CAAC2sD,SAAS,CAAG1G,EAAG6K,CAAAA,WAAW,CAC/B,IAAI,CAAClE,iBAAiB,CAAG3G,GAAGgL,IAC5B,CAAA,IAAI,CAACpE,YAAY,CAAG5G,EAAAA,CAAGiB,aAAa,CACpC,WACGjnD,gBACH,CAAA,IAAI,CAAC0sD,SAAS,CAAG1G,GAAG6K,WACpB,CAAA,IAAI,CAAClE,iBAAiB,CAAG3G,EAAAA,CAAGiL,IAAI,CAChC,IAAI,CAACrE,YAAY,CAAG5G,EAAGkL,CAAAA,KAAK,CAC5B,MACF,KAAKjxD,iBACH,IAAI,CAACysD,SAAS,CAAG1G,EAAAA,CAAG6K,WAAW,CAC/B,IAAI,CAAClE,iBAAiB,CAAG3G,EAAGmL,CAAAA,KAAK,CACjC,IAAI,CAACvE,YAAY,CAAG5G,EAAGkB,CAAAA,cAAc,CACrC,WACGhnD,gBACH,CAAA,IAAI,CAACwsD,SAAS,CAAG1G,GAAG6K,WACpB,CAAA,IAAI,CAAClE,iBAAiB,CAAG3G,EAAAA,CAAGoL,IAAI,CAChC,IAAI,CAACxE,YAAY,CAAG5G,EAAGqL,CAAAA,GAAG,CAC1B,MACF,KAAKlxD,iBACH,IAAI,CAACusD,SAAS,CAAG1G,EAAAA,CAAG6K,WAAW,CAC/B,IAAI,CAAClE,iBAAiB,CAAG3G,EAAGsL,CAAAA,KAAK,CACjC,IAAI,CAAC1E,YAAY,CAAG5G,GAAGmB,YAAY,CACnC,MACG/mD,KAAAA,gBAAAA,CACH,IAAI,CAACssD,SAAS,CAAG1G,EAAGuL,CAAAA,UAAU,CAC9B,IAAI,CAAC5E,iBAAiB,CAAG3G,GAAGwL,IAC5B,CAAA,IAAI,CAAC5E,YAAY,CAAG5G,EAAAA,CAAG+K,IAAI,CAC3B,WACG1wD,gBACH,CAAA,IAAI,CAACqsD,SAAS,CAAG1G,GAAGuL,UACpB,CAAA,IAAI,CAAC5E,iBAAiB,CAAG3G,EAAAA,CAAGyL,KAAK,CACjC,IAAI,CAAC7E,YAAY,CAAG5G,EAAGiB,CAAAA,aAAa,CACpC,MACF,KAAK3mD,kBACH,IAAI,CAACosD,SAAS,CAAG1G,EAAAA,CAAGuL,UAAU,CAC9B,IAAI,CAAC5E,iBAAiB,CAAG3G,EAAG0L,CAAAA,KAAK,CACjC,IAAI,CAAC9E,YAAY,CAAG5G,GAAGkL,KAAK,CAC5B,MACG3wD,KAAAA,iBAAAA,CACH,IAAI,CAACmsD,SAAS,CAAG1G,EAAGuL,CAAAA,UAAU,CAC9B,IAAI,CAAC5E,iBAAiB,CAAG3G,GAAG2L,MAC5B,CAAA,IAAI,CAAC/E,YAAY,CAAG5G,EAAAA,CAAGkB,cAAc,CACrC,WACG1mD,iBACH,CAAA,IAAI,CAACksD,SAAS,CAAG1G,GAAGuL,UACpB,CAAA,IAAI,CAAC5E,iBAAiB,CAAG3G,EAAAA,CAAG4L,KAAK,CACjC,IAAI,CAAChF,YAAY,CAAG5G,EAAGqL,CAAAA,GAAG,CAC1B,MACF,KAAK5wD,kBACH,IAAI,CAACisD,SAAS,CAAG1G,EAAAA,CAAGuL,UACpB,CAAA,IAAI,CAAC5E,iBAAiB,CAAG3G,GAAG6L,MAC5B,CAAA,IAAI,CAACjF,YAAY,CAAG5G,EAAAA,CAAGmB,YAAY,CACnC,WACGzmD,kBACH,CAAA,IAAI,CAACgsD,SAAS,CAAG1G,GAAG8L,YACpB,CAAA,IAAI,CAACnF,iBAAiB,CAAG3G,EAAAA,CAAG+L,MAAM,CAClC,IAAI,CAACnF,YAAY,CAAG5G,EAAG+K,CAAAA,IAAI,CAC3B,MACF,KAAKpwD,mBACH,IAAI,CAAC+rD,SAAS,CAAG1G,EAAAA,CAAG8L,YAAY,CAChC,IAAI,CAACnF,iBAAiB,CAAG3G,EAAGgM,CAAAA,OAAO,CACnC,IAAI,CAACpF,YAAY,CAAG5G,GAAGiB,aAAa,CACpC,MACGrmD,KAAAA,mBAAAA,CACH,IAAI,CAAC8rD,SAAS,CAAG1G,EAAG8L,CAAAA,YAAY,CAChC,IAAI,CAACnF,iBAAiB,CAAG3G,GAAGiM,OAC5B,CAAA,IAAI,CAACrF,YAAY,CAAG5G,EAAAA,CAAGkL,KAAK,CAC5B,WACGrwD,mBACH,CAAA,IAAI,CAAC6rD,SAAS,CAAG1G,GAAG8L,YACpB,CAAA,IAAI,CAACnF,iBAAiB,CAAG3G,EAAAA,CAAGkM,QAAQ,CACpC,IAAI,CAACtF,YAAY,CAAG5G,EAAGkB,CAAAA,cAAc,CACrC,MACF,KAAKpmD,oBACH,IAAI,CAAC4rD,SAAS,CAAG1G,EAAAA,CAAG8L,YAAY,CAChC,IAAI,CAACnF,iBAAiB,CAAG3G,EAAGmM,CAAAA,OAAO,CACnC,IAAI,CAACvF,YAAY,CAAG5G,GAAGqL,GAAG,CAC1B,MACGtwD,KAAAA,mBAAAA,CACH,IAAI,CAAC2rD,SAAS,CAAG1G,EAAG8L,CAAAA,YAAY,CAChC,IAAI,CAACnF,iBAAiB,CAAG3G,GAAGoM,QAC5B,CAAA,IAAI,CAACxF,YAAY,CAAG5G,EAAAA,CAAGmB,YAAY,CACnC,KACJ,CACA,IAAI,CAACkL,UAAU,CAAG,MACpB,CACAvgD,MAAOlC,CAAAA,MAAM,CAAE6H,OAAO,CAAE,CACtB,MAAMuuC,EAAAA,CAAKp2C,OAAOo2C,EAAE,CACpB,GAAI,CAACvuC,OAAQhC,CAAAA,YAAY,GAAKgC,OAAAA,CAAQjD,mBAAmB,EAAIiD,OAAAA,CAAQ3B,gBAAgB,EAAI,CAAC2B,QAAQ3C,GAAE,EAAI,CACtG,MACF,CACA,IAAIrE,QAAAA,CAAW,EACf,IAAI44B,SAAAA,CACJ,IAAIipB,OACJ,CAAA,MAAMlpB,kBAAoB3xB,OAAQhD,CAAAA,SAAS,CAC3C,GAAIgD,OAAAA,CAAQzC,KAAK,EAAI,CAAC,IAAI,CAACq9C,UAAU,CAAE,CACrCrM,EAAAA,CAAGuM,YAAY,CAACvM,EAAAA,CAAGwG,gBAAgB,CAAEpjB,iBAAAA,CAAmB,IAAI,CAACujB,iBAAiB,CAAEl1C,OAAQrF,CAAAA,MAAM,CAAEqF,OAAQpF,CAAAA,OAAO,CAAEoF,OAAQxC,CAAAA,YAAY,EACvI,CACA,MAAMwC,QAAQ7F,OAAO,CAACnB,SAAS,EAAIA,QAAAA,GAAa,EAAE,CAChD,GAAI,CAACgH,OAAQhC,CAAAA,YAAY,EAAIhF,QAAa,GAAA,CAAA,CAAG,CAC3CA,QACA,EAAA,CAAA,QACF,MAAO,GAAIA,QAAAA,GAAa,CAACgH,OAAAA,CAAQjD,mBAAmB,EAAI,CAACiD,QAAQvE,QAAO,EAAI,CAC1E,KACF,CACAm2B,SAAY5xB,CAAAA,OAAAA,CAAQ7F,OAAO,CAACnB,QAAAA,CAAS,CACrC6hD,OAAU,CAAA,CAAA,CAAIptF,KAAKkV,GAAG,CAAC,EAAGq2B,QAC1B,CAAA,CAAA,GAAIA,WAAa,CAAK,EAAA,CAACgH,QAAQ1C,WAAW,EAAI,CAAC0C,OAAQR,CAAAA,cAAc,EAAIQ,OAAQ7F,CAAAA,OAAO,CAAChsC,MAAM,CAAGwjE,kBAAmB,CACnH4c,EAAAA,CAAGwM,cAAc,CAAC,IAAI,CAACnG,SAAS,CAChC50C,CAAAA,OAAQ3B,CAAAA,gBAAgB,CAAG,KAC7B,CACA,GAAI2B,OAAQvF,CAAAA,QAAQ,CAAE,CACpB,IAAI+D,KACJ,GAAIrG,MAAAA,CAAO6G,mBAAmB,CAAC4yB,SAAS,CAAC,CAAE,CAAA,CAAA,CAAG,CAC5C,IAAIpzB,IAAAA,CAAO,EAAGA,IAAO,CAAA,CAAA,CAAGA,OAAO,CAC7B,GAAI,CAACwB,OAAQ5B,CAAAA,cAAc,CAAC,CAAE,CAAA,CAACI,KAAK,CAAE,CACpC,QACF,CACA,IAAI16B,IAAM8tD,SAAS,CAACpzB,KAAK,CACzB,GAAIrG,OAAO0W,wBAAwB,CAAC/qC,KAAM,CACxC,GAAIA,IAAI+P,KAAK,CAAGskB,MAAO8tC,CAAAA,cAAc,EAAIniE,GAAAA,CAAIgQ,MAAM,CAAGqkB,MAAAA,CAAO8tC,cAAc,CAAE,CAC3EniE,IAAMgwE,eAAgBhwE,CAAAA,GAAAA,CAAKq0B,OAAO8tC,cAAc,CAAA,CAChD,GAAIjtC,QAAa,GAAA,CAAA,CAAG,CAClBgH,OAAQrF,CAAAA,MAAM,CAAG72B,GAAI+P,CAAAA,KAAK,CAC1BmsB,OAAAA,CAAQpF,OAAO,CAAG92B,GAAAA,CAAIgQ,OAAM,CAEhC,CACF,CACAqkB,MAAAA,CAAO6iD,cAAc,CAAC,KAAA,CAAA,CACtB7iD,OAAO8iD,yBAAyB,CAACj7C,QAAQ9B,iBAAiB,CAAA,CAC1D,GAAI,IAAI,CAAC08C,UAAU,CAAE,CACnBrM,GAAG2M,aAAa,CAAC3M,GAAG4M,2BAA2B,CAAG38C,KAAMxF,QAAU,CAAA,CAAA,CAAG,EAAG,IAAI,CAACi8C,SAAS,CAAE,IAAI,CAACE,YAAY,CAAErxE,KAC7G,CAAO,KAAA,CACLyqE,GAAG6M,UAAU,CAAC7M,GAAG4M,2BAA2B,CAAG38C,KAAMxF,QAAU,CAAA,IAAI,CAACk8C,iBAAiB,CAAE,IAAI,CAACD,SAAS,CAAE,IAAI,CAACE,YAAY,CAAErxE,GAAAA,EAC5H,CACF,CACF,CAAA,KAAO,CACL+2E,OAAAA,CAAU,CAAIptF,CAAAA,IAAAA,CAAKkV,GAAG,CAAC,CAAA,CAAGq2B,UAC1B,IAAIwF,IAAAA,CAAO,EAAGA,IAAO,CAAA,CAAA,CAAGA,OAAO,CAC7B,GAAI,CAACwB,OAAQ5B,CAAAA,cAAc,CAAC,CAAE,CAAA,CAACI,KAAK,CAAE,CACpC,QACF,CACA,MAAM68C,QAAUzpB,SAAS,CAACpzB,KAAK,CAC/B,GAAIwB,QAAQ1C,WAAW,CAAE,CACvB,GAAI,IAAI,CAACs9C,UAAU,EAAIS,QAAS,CAC9B9M,EAAAA,CAAG+M,uBAAuB,CAAC/M,EAAAA,CAAG4M,2BAA2B,CAAG38C,IAAAA,CAAMxF,SAAU,CAAG,CAAA,CAAA,CAAGvrC,KAAKoU,GAAG,CAACm+B,QAAQrF,MAAM,CAAGkgD,QAAS,CAAIptF,CAAAA,CAAAA,IAAAA,CAAKoU,GAAG,CAACm+B,OAAAA,CAAQpF,OAAO,CAAGigD,OAAAA,CAAS,GAAI,IAAI,CAAC3F,iBAAiB,CAAEmG,OAAAA,EAC3L,MAAO,CACL9M,EAAAA,CAAGgN,oBAAoB,CAAChN,EAAAA,CAAG4M,2BAA2B,CAAG38C,IAAAA,CAAMxF,SAAU,IAAI,CAACk8C,iBAAiB,CAAEznF,IAAAA,CAAKoU,GAAG,CAACm+B,OAAAA,CAAQrF,MAAM,CAAGkgD,OAAAA,CAAS,CAAIptF,CAAAA,CAAAA,IAAAA,CAAKoU,GAAG,CAACm+B,QAAQpF,OAAO,CAAGigD,QAAS,CAAI,CAAA,CAAA,CAAA,CAAGQ,SACrL,CACF,CAAA,KAAO,CACLljD,MAAO6iD,CAAAA,cAAc,CAAC,KACtB7iD,CAAAA,CAAAA,MAAAA,CAAO8iD,yBAAyB,CAACj7C,OAAAA,CAAQ9B,iBAAiB,CAC1D,CAAA,GAAI,IAAI,CAAC08C,UAAU,EAAIS,OAAS,CAAA,CAC9B9M,GAAG2M,aAAa,CAAC3M,GAAG4M,2BAA2B,CAAG38C,KAAMxF,QAAU,CAAA,CAAA,CAAG,EAAGvrC,IAAKoU,CAAAA,GAAG,CAACm+B,OAAQrF,CAAAA,MAAM,CAAGkgD,OAAS,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACm+B,QAAQpF,OAAO,CAAGigD,QAAS,CAAI,CAAA,CAAA,IAAI,CAAC5F,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEkG,OAC5L,EAAA,CAAA,KAAO,CACL9M,EAAG6M,CAAAA,UAAU,CAAC7M,EAAG4M,CAAAA,2BAA2B,CAAG38C,IAAMxF,CAAAA,QAAAA,CAAU,IAAI,CAACk8C,iBAAiB,CAAEznF,IAAKoU,CAAAA,GAAG,CAACm+B,OAAQrF,CAAAA,MAAM,CAAGkgD,OAAS,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACm+B,QAAQpF,OAAO,CAAGigD,QAAS,CAAI,CAAA,CAAA,CAAA,CAAG,IAAI,CAAC5F,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEkG,OAAAA,EAC9M,CACF,CACF,CACF,CACF,CAAO,KAAA,GAAIr7C,QAAQ1D,OAAO,CAAE,CAC1B,GAAI0D,OAAAA,CAAQ1C,WAAW,CAAE,CACvBixC,GAAGiN,oBAAoB,CAACjN,GAAGuG,UAAU,CAAE97C,SAAU,IAAI,CAACk8C,iBAAiB,CAAEznF,IAAAA,CAAKoU,GAAG,CAACm+B,OAAAA,CAAQrF,MAAM,CAAGkgD,OAAAA,CAAS,GAAIptF,IAAKoU,CAAAA,GAAG,CAACm+B,OAAQpF,CAAAA,OAAO,CAAGigD,OAAS,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACm+B,QAAQnF,MAAM,CAAGggD,QAAS,CAAI,CAAA,CAAA,CAAA,CAAGjpB,WACpM,CAAO,KAAA,CACLz5B,OAAO6iD,cAAc,CAAC,OACtB7iD,MAAO8iD,CAAAA,yBAAyB,CAACj7C,OAAQ9B,CAAAA,iBAAiB,EAC1DqwC,EAAGkN,CAAAA,UAAU,CAAClN,EAAGuG,CAAAA,UAAU,CAAE97C,QAAU,CAAA,IAAI,CAACk8C,iBAAiB,CAAEznF,KAAKoU,GAAG,CAACm+B,QAAQrF,MAAM,CAAGkgD,QAAS,CAAIptF,CAAAA,CAAAA,IAAAA,CAAKoU,GAAG,CAACm+B,OAAAA,CAAQpF,OAAO,CAAGigD,OAAS,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACm+B,QAAQnF,MAAM,CAAGggD,QAAS,CAAI,CAAA,CAAA,CAAA,CAAG,IAAI,CAAC5F,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEvjB,SAAAA,EAC7N,CACF,CAAO,KAAA,GAAI5xB,QAAQzC,KAAK,EAAI,OAAOq0B,SAAc,GAAA,QAAA,CAAU,CACzD,GAAI5xB,OAAAA,CAAQxC,YAAY,GAAKo0B,SAAAA,CAAUzjE,MAAM,CAAE,CAC7C,GAAI6xC,OAAQ1C,CAAAA,WAAW,CAAE,CACvB,IAAI,IAAIvpC,KAAQ,CAAA,CAAA,CAAGA,MAAQisC,OAAQxC,CAAAA,YAAY,CAAEzpC,KAAQ,EAAA,CAAA,CACvDw6E,GAAGmN,uBAAuB,CAACnN,GAAGwG,gBAAgB,CAAE/7C,SAAU,CAAG,CAAA,CAAA,CAAGjlC,MAAOtG,IAAKoU,CAAAA,GAAG,CAACpU,IAAKmQ,CAAAA,KAAK,CAACoiC,OAAQrF,CAAAA,MAAM,CAAGkgD,OAAU,CAAA,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACpU,KAAKmQ,KAAK,CAACoiC,QAAQpF,OAAO,CAAGigD,SAAU,CAAI,CAAA,CAAA,CAAA,CAAG,IAAI,CAAC3F,iBAAiB,CAAEtjB,SAAS,CAAC79D,MAAM,EAC3N,CACF,MAAO,CACL,IAAI,IAAIA,KAAQ,CAAA,CAAA,CAAGA,MAAQisC,OAAQxC,CAAAA,YAAY,CAAEzpC,KAAQ,EAAA,CAAA,CACvDw6E,GAAGoN,aAAa,CAACpN,GAAGwG,gBAAgB,CAAE/7C,SAAU,CAAG,CAAA,CAAA,CAAGjlC,MAAOtG,IAAKoU,CAAAA,GAAG,CAACpU,IAAKmQ,CAAAA,KAAK,CAACoiC,OAAQrF,CAAAA,MAAM,CAAGkgD,OAAU,CAAA,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACpU,KAAKmQ,KAAK,CAACoiC,QAAQpF,OAAO,CAAGigD,SAAU,CAAI,CAAA,CAAA,CAAA,CAAG,IAAI,CAAC5F,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEvjB,SAAS,CAAC79D,KAAM,CAAA,EAC5N,CACF,CACF,CACF,MAAO,CACL,GAAIokC,OAAO6G,mBAAmB,CAAC4yB,WAAY,CACzC,GAAIz5B,OAAO0W,wBAAwB,CAAC+iB,WAAY,CAC9C,GAAIA,UAAU/9C,KAAK,CAAGskB,OAAO4tC,cAAc,EAAInU,UAAU99C,MAAM,CAAGqkB,OAAO4tC,cAAc,CAAE,CACvFnU,SAAYkiB,CAAAA,eAAAA,CAAgBliB,UAAWz5B,MAAO4tC,CAAAA,cAAc,EAC5D,GAAI/sC,QAAAA,GAAa,CAAG,CAAA,CAClBgH,OAAQrF,CAAAA,MAAM,CAAGi3B,SAAU/9C,CAAAA,KAAK,CAChCmsB,OAAAA,CAAQpF,OAAO,CAAGg3B,SAAAA,CAAU99C,OAAM,CAEtC,CACF,CACA,MAAMrG,EAAImkD,SAAU/9C,CAAAA,KAAK,EAAI+9C,SAAU1yB,CAAAA,UAAU,CACjD,MAAMvd,CAAAA,CAAIiwC,UAAU99C,MAAM,EAAI89C,UAAUzyB,WAAW,CACnDhH,OAAO6iD,cAAc,CAACh7C,QAAQjC,MAAM,CAAA,CACpC5F,OAAO8iD,yBAAyB,CAACj7C,QAAQ9B,iBAAiB,CAAA,CAC1D,GAAI,IAAI,CAAC08C,UAAU,EAAI56C,OAAAA,CAAQrF,MAAM,GAAKltB,CAAAA,EAAKuyB,QAAQpF,OAAO,GAAKjZ,GAAK,CAACwW,MAAAA,CAAO4W,sBAAsB,CAAC6iB,SAAAA,CAAAA,CAAY,CACjH2c,EAAG2M,CAAAA,aAAa,CAAC3M,EAAGyG,CAAAA,UAAU,CAAEh8C,QAAU,CAAA,CAAA,CAAG,EAAG,IAAI,CAACi8C,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEvjB,WACrF,CAAO,KAAA,CACL2c,GAAG6M,UAAU,CAAC7M,GAAGyG,UAAU,CAAEh8C,SAAU,IAAI,CAACk8C,iBAAiB,CAAE,IAAI,CAACD,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEvjB,SAClG,CAAA,CAAA,GAAI54B,WAAa,CAAG,CAAA,CAClBgH,QAAQrF,MAAM,CAAGltB,CACjBuyB,CAAAA,OAAAA,CAAQpF,OAAO,CAAGjZ,EACpB,CACF,CACF,CAAA,KAAO,CACLk5D,OAAU,CAAA,CAAA,CAAIptF,KAAKkV,GAAG,CAAC,EAAGq2B,QAC1B,CAAA,CAAA,GAAIgH,QAAQ1C,WAAW,CAAE,CACvB,GAAI,IAAI,CAACs9C,UAAU,EAAIhpB,UAAW,CAChC2c,EAAAA,CAAG+M,uBAAuB,CAAC/M,EAAAA,CAAGyG,UAAU,CAAEh8C,QAAAA,CAAU,EAAG,CAAGvrC,CAAAA,IAAAA,CAAKoU,GAAG,CAACpU,IAAAA,CAAKmQ,KAAK,CAACoiC,OAAAA,CAAQrF,MAAM,CAAGkgD,OAAAA,CAAAA,CAAU,GAAIptF,IAAKoU,CAAAA,GAAG,CAACpU,IAAKmQ,CAAAA,KAAK,CAACoiC,OAAQpF,CAAAA,OAAO,CAAGigD,OAAU,CAAA,CAAA,CAAA,CAAA,CAAI,IAAI,CAAC3F,iBAAiB,CAAEtjB,SAC3L,EAAA,CAAA,KAAO,CACL2c,EAAGgN,CAAAA,oBAAoB,CAAChN,EAAGyG,CAAAA,UAAU,CAAEh8C,QAAU,CAAA,IAAI,CAACk8C,iBAAiB,CAAEznF,KAAKoU,GAAG,CAACpU,IAAKmQ,CAAAA,KAAK,CAACoiC,OAAAA,CAAQrF,MAAM,CAAGkgD,OAAAA,CAAAA,CAAU,GAAIptF,IAAKoU,CAAAA,GAAG,CAACpU,IAAKmQ,CAAAA,KAAK,CAACoiC,OAAQpF,CAAAA,OAAO,CAAGigD,OAAU,CAAA,CAAA,CAAA,CAAA,CAAI,EAAGjpB,SACrL,EAAA,CACF,MAAO,CACLz5B,MAAAA,CAAO6iD,cAAc,CAAC,KAAA,CAAA,CACtB7iD,OAAO8iD,yBAAyB,CAACj7C,QAAQ9B,iBAAiB,CAAA,CAC1D,GAAI,IAAI,CAAC08C,UAAU,EAAIhpB,SAAAA,CAAW,CAChC2c,EAAG2M,CAAAA,aAAa,CAAC3M,EAAGyG,CAAAA,UAAU,CAAEh8C,QAAU,CAAA,CAAA,CAAG,EAAGvrC,IAAKoU,CAAAA,GAAG,CAACm+B,OAAQrF,CAAAA,MAAM,CAAGkgD,OAAS,CAAA,CAAA,CAAA,CAAIptF,KAAKoU,GAAG,CAACm+B,QAAQpF,OAAO,CAAGigD,QAAS,CAAI,CAAA,CAAA,IAAI,CAAC5F,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEvjB,SACpK,EAAA,CAAA,KAAO,CACL2c,EAAG6M,CAAAA,UAAU,CAAC7M,EAAGyG,CAAAA,UAAU,CAAEh8C,QAAU,CAAA,IAAI,CAACk8C,iBAAiB,CAAEznF,KAAKoU,GAAG,CAACm+B,QAAQrF,MAAM,CAAGkgD,QAAS,CAAIptF,CAAAA,CAAAA,IAAAA,CAAKoU,GAAG,CAACm+B,OAAQpF,CAAAA,OAAO,CAAGigD,OAAS,CAAA,CAAA,CAAA,CAAI,EAAG,IAAI,CAAC5F,SAAS,CAAE,IAAI,CAACE,YAAY,CAAEvjB,WACtL,CACF,CACF,CACA,GAAI54B,QAAAA,GAAa,EAAG,CAClBgH,OAAAA,CAAQ3B,gBAAgB,CAAG,MAC7B,MAAO,CACL2B,OAAAA,CAAQ3B,gBAAgB,CAAG,KAC7B,CACF,CACArF,QAAAA,GACF,CACA,GAAIgH,OAAAA,CAAQhC,YAAY,CAAE,CACxB,GAAIgC,OAAQvF,CAAAA,QAAQ,CAAE,CACpB,IAAI,IAAIvsC,CAAI,CAAA,CAAA,CAAGA,EAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CACxB8xC,OAAQ5B,CAAAA,cAAc,CAAC,CAAE,CAAA,CAAClwC,EAAE,CAAG,MACjC,CACF,CAAO,KAAA,CACL8xC,QAAQ5B,cAAc,CAAC,EAAE,CAAG,MAC9B,CACF,CACA,GAAI,CAAC4B,OAAQ1C,CAAAA,WAAW,EAAI,CAAC0C,OAAAA,CAAQR,cAAc,EAAIQ,OAAAA,CAAQvE,QAAQ,EAAIuE,OAAAA,CAAQjD,mBAAmB,EAAIiD,OAAAA,CAAQ7F,OAAO,CAAChsC,MAAM,GAAK,CAAG,CAAA,CACtIogF,EAAGwM,CAAAA,cAAc,CAAC,IAAI,CAACnG,SAAS,CAChC50C,CAAAA,OAAQ3B,CAAAA,gBAAgB,CAAG,KAC7B,CACA,GAAI2B,OAAQ9F,CAAAA,QAAQ,CAAE,CACpB8F,OAAAA,CAAQhG,sBAAsB,CAAC7B,MAAAA,CAAO8B,KAAK,CAAE,CAAC+F,QAAQ9F,QAAQ,EAChE,CACA8F,OAAQ9F,CAAAA,QAAQ,CAAG8F,OAAQ7C,CAAAA,OAAO,CAClC6C,OAAQhG,CAAAA,sBAAsB,CAAC7B,MAAO8B,CAAAA,KAAK,CAAE+F,OAAQ9F,CAAAA,QAAQ,CAC7D,CAAA,IAAI,CAAC0gD,UAAU,CAAG,KACpB,CACAr7C,eAAAA,CAAgBpH,MAAM,CAAE6H,OAAO,CAAE,CAC/B,GAAIA,QAAQhC,YAAY,EAAIgC,QAAQjD,mBAAmB,CAAE,CACvD5E,MAAO8I,CAAAA,UAAU,CAACjB,OAAS,CAAA,CAAA,CAC3BA,CAAAA,OAAQhC,CAAAA,YAAY,CAAG,KACvBgC,CAAAA,QAAQjD,mBAAmB,CAAG,MAChC,CACF,CACA5F,KAAK50B,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAEnU,OAAO,CAAE,CACjC,MAAMqgC,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,MAAM7H,MAAS6H,CAAAA,OAAAA,CAAQ7H,MAAM,CAC7B,OAAOA,OAAOyjD,gBAAgB,CAAC57C,QAASz9B,CAAG0H,CAAAA,CAAAA,CAAG4J,MAAOC,MAAQnU,CAAAA,OAAAA,CAC/D,CACAu3B,KAAM30B,CAAAA,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAE5L,IAAI,CAAE,CAC/B,KAAM,CAAE83B,OAAO,CAAE,CAAG,IAAI,CACxB,KAAM,CAAE7H,MAAM,CAAE,CAAG6H,OACnB7H,CAAAA,MAAAA,CAAO8I,UAAU,CAACjB,OAAAA,CAAS,GAC3B,OAAO7H,MAAAA,CAAO0jD,iBAAiB,CAAC77C,OAAAA,CAASz9B,EAAG0H,CAAG4J,CAAAA,KAAAA,CAAOC,OAAQ5L,IAChE,CAAA,CAlgBAjS,YAAY+pC,OAAO,CAAC,CAClB,IAAI,CAACs0C,UAAU,CAAG,IAClB,CAAA,IAAI,CAACK,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAAC30C,OAAO,CAAGA,QACjB,CA+fF,CAEA,MAAM87C,gBAKJzkD,OAAQk3C,CAAAA,EAAE,CAAE,CACV,GAAI,IAAI,CAACwN,MAAM,CAAE,CACfxN,EAAAA,CAAGyN,kBAAkB,CAAC,IAAI,CAACD,MAAM,CACjC,CAAA,IAAI,CAACA,MAAM,CAAG,KAChB,CACA,GAAI,IAAI,CAACE,SAAS,CAAE,CAClB1N,GAAGyN,kBAAkB,CAAC,IAAI,CAACC,SAAS,CACpC,CAAA,IAAI,CAACA,SAAS,CAAG,KACnB,CACF,CAbAhmF,YAAY8lF,MAAM,CAAEE,SAAS,CAAC,CAC5B,IAAI,CAACF,MAAM,CAAGA,MACd,CAAA,IAAI,CAACE,SAAS,CAAGA,UACnB,CAWF,CACA,MAAMC,iBAAAA,CACJ7kD,QAAQc,MAAM,CAAE,CACd,MAAMo2C,EAAAA,CAAKp2C,OAAOo2C,EAClB,CAAA,IAAI,CAAC4N,cAAc,CAAG,KAAA,CACtB,GAAI,IAAI,CAACC,cAAc,CAAE,CACvB,GAAI,IAAI,CAACA,cAAc,GAAK,IAAI,CAACC,wBAAwB,CAAE,CACzD9N,EAAG+N,CAAAA,iBAAiB,CAAC,IAAI,CAACF,cAAc,EAC1C,CACA,IAAI,CAACA,cAAc,CAAG,KACxB,CACA,GAAI,IAAI,CAACG,cAAc,CAAE,CACvBhO,GAAGyN,kBAAkB,CAAC,IAAI,CAACO,cAAc,CACzC,CAAA,IAAI,CAACA,cAAc,CAAG,KACxB,CACA,GAAI,IAAI,CAACC,qBAAqB,CAAE,CAC9B,GAAI,IAAI,CAACA,qBAAqB,GAAK,IAAI,CAACH,wBAAwB,CAAE,CAChE9N,GAAG+N,iBAAiB,CAAC,IAAI,CAACE,qBAAqB,EACjD,CACA,IAAI,CAACA,qBAAqB,CAAG,KAC/B,CACA,IAAI,CAACC,mBAAmB,CAAC5hF,OAAO,CAAE+N,SAChC2lE,EAAGyN,CAAAA,kBAAkB,CAACpzE,MACxB,EAAA,CAAA,CACA,CAAA,IAAI,CAAC6zE,mBAAmB,CAACtuF,MAAM,CAAG,CAClC,CAAA,IAAI,CAACuuF,oBAAoB,EAAE7hF,OAAQ,CAAC8hF,cAClCA,WAAYtlD,CAAAA,OAAO,CAACk3C,EACtB,EAAA,CAAA,CACA,CAAA,IAAI,CAACmO,oBAAoB,CAAG,IAAA,CAC5B,GAAI,IAAI,CAACE,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAG,KAC1B,GAAI,IAAI,CAACC,kBAAkB,CAAE,CAC3Bx+B,2BAA4BlmB,CAAAA,MAAAA,CAAAA,CAAQ+lB,OAAO,CAAC,IAAI,CAAC2+B,kBAAkB,EACrE,CACF,CACA,IAAI,CAACR,wBAAwB,CAAGrmF,UAClC,CACA,IAAIuwC,aAAc,CAChB,OAAO,IAAI,CAAC41C,cAAc,CAE5B7tC,IAAAA,CAAKnW,MAAM,CAAErrC,MAAM,CAAE,CACnB,MAAMyhF,GAAKp2C,MAAOo2C,CAAAA,EAAE,CACpB,IAAI,CAAC4N,cAAc,CAAG,KACtB,MAAM71C,OAAAA,CAAU,EAAE,CAClB,GAAI,IAAI,CAAC+1C,wBAAwB,GAAKrmF,SAAW,CAAA,CAC/C,IAAI,CAAComF,cAAc,CAAG,IAAI,CAACC,yBAAwB,CACrD,KAAO,CACL,IAAI,CAACD,cAAc,CAAG7N,EAAAA,CAAGuO,iBAAiB,EAC1C3kD,CAAAA,MAAAA,CAAO4kD,cAAc,CAAC,IAAI,CAACX,cAAc,CAAA,CACzC,MAAMY,gBAAmBlwF,CAAAA,MAAAA,CAAOgnD,aAAa,EAAE3lD,MAAAA,EAAU,EACzD,MAAM8uF,sBAAAA,CAAyB1O,GAAG2O,iBAAiB,CACnD,IAAI,IAAIhvF,CAAAA,CAAI,EAAGA,CAAI8uF,CAAAA,gBAAAA,CAAkB,EAAE9uF,CAAE,CAAA,CACvC,MAAM6lD,WAAcjnD,CAAAA,MAAAA,CAAOynD,cAAc,CAACrmD,CAAAA,CAAAA,CAC1C,GAAI6lD,WAAa,CAAA,CACf,GAAI,CAACA,WAAAA,CAAYzc,IAAI,CAACg9C,UAAU,CAAE,CAChCvgC,WAAAA,CAAYpZ,MAAM,CAAGltC,IAAAA,CAAKmU,GAAG,CAACmyC,WAAAA,CAAYlgC,KAAK,CAAEskB,MAAAA,CAAOglD,mBAAmB,CAC3EppC,CAAAA,YAAYnZ,OAAO,CAAGntC,KAAKmU,GAAG,CAACmyC,YAAYjgC,MAAM,CAAEqkB,OAAOglD,mBAAmB,CAAA,CAC7EhlD,OAAO8I,UAAU,CAAC8S,YAAa,CACjC,EAAA,CACAw6B,GAAG6O,oBAAoB,CAAC7O,GAAG8O,WAAW,CAAEJ,uBAAyB/uF,CAAG6lD,CAAAA,WAAAA,CAAYtZ,QAAQ,CAAG8zC,EAAAA,CAAG4M,2BAA2B,CAAGruF,MAAAA,CAAO2nD,KAAK,CAAG85B,EAAAA,CAAGyG,UAAU,CAAEjhC,WAAAA,CAAYzc,IAAI,CAACg9C,UAAU,CAAExnF,MAAOksC,CAAAA,QAAQ,EACtMsN,OAAQt3C,CAAAA,IAAI,CAACiuF,sBAAyB/uF,CAAAA,CAAAA,EACxC,CACF,CACAqgF,EAAG+O,CAAAA,WAAW,CAACh3C,OACf,CAAA,CAAA,MAAMkO,YAAc1nD,MAAO+mD,CAAAA,YAAY,CACvC,GAAIW,WAAAA,EAAe1nD,OAAO+tC,MAAM,CAAE,CAChC,MAAM0iD,eAAAA,CAAkBzwF,OAAOwnD,QAAQ,CAAGi6B,GAAGiP,wBAAwB,CAAGjP,GAAGkP,gBAAgB,CAC3F,GAAIjpC,WAAa,CAAA,CACf,GAAI,CAACA,WAAAA,CAAYld,IAAI,CAACg9C,UAAU,CAAE,CAChC9/B,WAAAA,CAAY7Z,MAAM,CAAGltC,IAAAA,CAAKmU,GAAG,CAAC4yC,WAAAA,CAAY3gC,KAAK,CAAEskB,MAAAA,CAAOglD,mBAAmB,CAC3E3oC,CAAAA,YAAY5Z,OAAO,CAAGntC,KAAKmU,GAAG,CAAC4yC,YAAY1gC,MAAM,CAAEqkB,OAAOglD,mBAAmB,CAAA,CAC7EhlD,OAAO8I,UAAU,CAACuT,YAAa,CACjC,EAAA,CACA+5B,GAAG6O,oBAAoB,CAAC7O,GAAG8O,WAAW,CAAEE,gBAAiB/oC,WAAY/Z,CAAAA,QAAQ,CAAG8zC,EAAG4M,CAAAA,2BAA2B,CAAGruF,MAAO2nD,CAAAA,KAAK,CAAG85B,EAAGyG,CAAAA,UAAU,CAAEloF,MAAO+mD,CAAAA,YAAY,CAACvc,IAAI,CAACg9C,UAAU,CAAExnF,MAAAA,CAAOksC,QAAQ,EACrM,CAAO,KAAA,CACL,MAAM0kD,cAAiB5wF,CAAAA,MAAAA,CAAOqnD,QAAQ,CAAG,CAAA,CACzC,GAAI,CAACupC,cAAAA,CAAgB,CACnB,GAAI,CAAC,IAAI,CAACnB,cAAc,CAAE,CACxB,IAAI,CAACA,cAAc,CAAGhO,GAAGoP,kBAAkB,GAC7C,CACA,MAAMC,cAAAA,CAAiB9wF,OAAOwnD,QAAQ,CAAGi6B,GAAGuK,gBAAgB,CAAGvK,GAAGoK,kBAAkB,CACpFpK,GAAGsP,gBAAgB,CAACtP,GAAGuP,YAAY,CAAE,IAAI,CAACvB,cAAc,EACxDhO,EAAGwP,CAAAA,mBAAmB,CAACxP,EAAGuP,CAAAA,YAAY,CAAEF,cAAgB9wF,CAAAA,MAAAA,CAAO+mB,KAAK,CAAE/mB,MAAAA,CAAOgnB,MAAM,CACnFy6D,CAAAA,EAAAA,CAAGyP,uBAAuB,CAACzP,EAAAA,CAAG8O,WAAW,CAAEE,eAAAA,CAAiBhP,GAAGuP,YAAY,CAAE,IAAI,CAACvB,cAAc,EAChGhO,EAAGsP,CAAAA,gBAAgB,CAACtP,EAAGuP,CAAAA,YAAY,CAAE,IACvC,EAAA,CACF,CACF,CACF,CACA,GAAIhxF,MAAOqnD,CAAAA,QAAQ,CAAG,CAAG,CAAA,CACvB,IAAI,CAACqoC,qBAAqB,CAAG,IAAI,CAACJ,cAAc,CAChD,IAAI,CAACA,cAAc,CAAG7N,GAAGuO,iBAAiB,EAAA,CAC1C3kD,OAAO4kD,cAAc,CAAC,IAAI,CAACX,cAAc,EACzC,MAAMY,gBAAAA,CAAmBlwF,OAAOgnD,aAAa,EAAE3lD,QAAU,CACzD,CAAA,GAAI,IAAI,CAACkuF,wBAAwB,GAAKrmF,SAAW,CAAA,CAC/C,MAAM4S,MAAS2lE,CAAAA,EAAAA,CAAGoP,kBAAkB,EACpC,CAAA,IAAI,CAAClB,mBAAmB,CAACztF,IAAI,CAAC4Z,MAAAA,CAAAA,CAC9B,MAAMg1E,cAAiBzlD,CAAAA,MAAAA,CAAOyc,gBAAgB,GAAKhuB,iBAAAA,CAAoB2nD,GAAG2H,KAAK,CAAG3H,GAAG0H,IAAI,CACzF1H,GAAGsP,gBAAgB,CAACtP,GAAGuP,YAAY,CAAEl1E,QACrC2lE,EAAG0P,CAAAA,8BAA8B,CAAC1P,EAAGuP,CAAAA,YAAY,CAAEhxF,MAAOqnD,CAAAA,QAAQ,CAAEypC,cAAgB9wF,CAAAA,MAAAA,CAAO+mB,KAAK,CAAE/mB,MAAAA,CAAOgnB,MAAM,CAC/Gy6D,CAAAA,EAAAA,CAAGyP,uBAAuB,CAACzP,EAAAA,CAAG8O,WAAW,CAAE9O,EAAAA,CAAG2O,iBAAiB,CAAE3O,EAAAA,CAAGuP,YAAY,CAAEl1E,MAAAA,EACpF,MAAO,CACL,IAAI,IAAI1a,CAAI,CAAA,CAAA,CAAGA,EAAI8uF,gBAAkB,CAAA,EAAE9uF,EAAE,CACvC,MAAM6lD,YAAcjnD,MAAOynD,CAAAA,cAAc,CAACrmD,CAC1C,CAAA,CAAA,GAAI6lD,YAAa,CACf,MAAMnrC,OAAS2lE,EAAGoP,CAAAA,kBAAkB,GACpC,IAAI,CAAClB,mBAAmB,CAACztF,IAAI,CAAC4Z,MAC9B2lE,CAAAA,CAAAA,EAAAA,CAAGsP,gBAAgB,CAACtP,EAAAA,CAAGuP,YAAY,CAAEl1E,MAAAA,CAAAA,CACrC2lE,GAAG0P,8BAA8B,CAAC1P,GAAGuP,YAAY,CAAEhxF,OAAOqnD,QAAQ,CAAEJ,YAAYzc,IAAI,CAAC49C,iBAAiB,CAAEpoF,MAAAA,CAAO+mB,KAAK,CAAE/mB,MAAAA,CAAOgnB,MAAM,CACnIy6D,CAAAA,EAAAA,CAAGyP,uBAAuB,CAACzP,EAAAA,CAAG8O,WAAW,CAAE9O,EAAAA,CAAG2O,iBAAiB,CAAGhvF,CAAAA,CAAGqgF,GAAGuP,YAAY,CAAEl1E,QACxF,CACF,CACF,CACA,GAAI9b,MAAAA,CAAO+tC,MAAM,CAAE,CACjB,MAAM+iD,cAAiB9wF,CAAAA,MAAAA,CAAOwnD,QAAQ,CAAGi6B,EAAAA,CAAGuK,gBAAgB,CAAGvK,EAAAA,CAAGoK,kBAAkB,CACpF,MAAM4E,gBAAkBzwF,MAAOwnD,CAAAA,QAAQ,CAAGi6B,EAAGiP,CAAAA,wBAAwB,CAAGjP,EAAAA,CAAGkP,gBAAgB,CAC3F,IAAI1nF,GACJ,CAAA,MAAMy+C,YAAc1nD,MAAO+mD,CAAAA,YAAY,CACvC,GAAIW,WAAAA,CAAa,CACfz+C,GAAM,CAAA,CAAC,EAAEy+C,WAAYtc,CAAAA,EAAE,CAAC,CAAC,EAAEprC,OAAO+mB,KAAK,CAAC,CAAC,EAAE/mB,MAAAA,CAAOgnB,MAAM,CAAC,CAAC,EAAEhnB,MAAOqnD,CAAAA,QAAQ,CAAC,CAAC,EAAEypC,eAAe,CAAC,EAAEL,gBAAgB,CACjH,CAAA,IAAI,CAACX,kBAAkB,CAAGv+B,2BAAAA,CAA4BlmB,QAAQloC,GAAG,CAAC8F,KACpE,CACA,GAAI,CAAC,IAAI,CAAC6mF,kBAAkB,CAAE,CAC5B,IAAI,CAACA,kBAAkB,CAAGrO,EAAGoP,CAAAA,kBAAkB,GAC/CpP,EAAGsP,CAAAA,gBAAgB,CAACtP,EAAGuP,CAAAA,YAAY,CAAE,IAAI,CAAClB,kBAAkB,CAC5DrO,CAAAA,EAAAA,CAAG0P,8BAA8B,CAAC1P,EAAAA,CAAGuP,YAAY,CAAEhxF,MAAAA,CAAOqnD,QAAQ,CAAEypC,cAAAA,CAAgB9wF,OAAO+mB,KAAK,CAAE/mB,OAAOgnB,MAAM,CAC/G,CAAA,IAAI,CAAC8oE,kBAAkB,CAACvlD,OAAO,CAAG,UAChCk3C,CAAAA,EAAAA,CAAGyN,kBAAkB,CAAC,IAAI,EAC5B,CACA,CAAA,GAAIxnC,YAAa,CACf6J,2BAAAA,CAA4BlmB,QAAQ1hC,GAAG,CAACV,IAAK,IAAI,CAAC6mF,kBAAkB,EACtE,CACF,CACA,IAAI,CAACC,kBAAkB,CAAG9mF,GAAAA,CAC1Bw4E,GAAGyP,uBAAuB,CAACzP,GAAG8O,WAAW,CAAEE,gBAAiBhP,EAAGuP,CAAAA,YAAY,CAAE,IAAI,CAAClB,kBAAkB,EACtG,CACA,GAAII,gBAAmB,CAAA,CAAA,CAAG,CACxB,IAAI,CAACkB,0BAA0B,CAAC/lD,MAAAA,CAAQrrC,OAAQkwF,gBAChD7kD,CAAAA,CAAAA,MAAAA,CAAO4kD,cAAc,CAAC,IAAI,CAACX,cAAc,CAAA,CACzC7N,GAAG+O,WAAW,CAACh3C,SACjB,CACF,CACF,CACA43C,0BAA2B/lD,CAAAA,MAAM,CAAErrC,MAAM,CAAEkwF,gBAAgB,CAAE,CAC3D,MAAMzO,EAAKp2C,CAAAA,MAAAA,CAAOo2C,EAAE,CACpB,IAAI,CAACmO,oBAAoB,CAAG,EAAE,CAC9B,IAAI,IAAIxuF,CAAAA,CAAI,EAAGA,CAAI8uF,CAAAA,gBAAAA,CAAkB,EAAE9uF,CAAAA,CAAE,CACvC,MAAM6lD,YAAcjnD,MAAOynD,CAAAA,cAAc,CAACrmD,CAC1C,CAAA,CAAA,MAAMiwF,eAAiB5P,EAAGuO,CAAAA,iBAAiB,GAC3C3kD,MAAO4kD,CAAAA,cAAc,CAACoB,cACtB,CAAA,CAAA,MAAMv1E,OAAS,IAAI,CAAC6zE,mBAAmB,CAACvuF,CAAAA,CAAE,CAC1CqgF,EAAGsP,CAAAA,gBAAgB,CAACtP,EAAGuP,CAAAA,YAAY,CAAEl1E,MACrC2lE,CAAAA,CAAAA,EAAAA,CAAG0P,8BAA8B,CAAC1P,EAAAA,CAAGuP,YAAY,CAAEhxF,MAAAA,CAAOqnD,QAAQ,CAAEJ,WAAAA,CAAYzc,IAAI,CAAC49C,iBAAiB,CAAEpoF,MAAO+mB,CAAAA,KAAK,CAAE/mB,MAAOgnB,CAAAA,MAAM,EACnIy6D,EAAGyP,CAAAA,uBAAuB,CAACzP,EAAG8O,CAAAA,WAAW,CAAE9O,EAAG2O,CAAAA,iBAAiB,CAAE3O,EAAGuP,CAAAA,YAAY,CAAEl1E,MAClF2lE,CAAAA,CAAAA,EAAAA,CAAG+O,WAAW,CAAC,CACb/O,GAAG2O,iBAAiB,CACrB,EACD,MAAMkB,cAAAA,CAAiB7P,GAAGuO,iBAAiB,EAAA,CAC3C3kD,OAAO4kD,cAAc,CAACqB,gBACtB7P,EAAG6O,CAAAA,oBAAoB,CAAC7O,EAAG8O,CAAAA,WAAW,CAAE9O,EAAG2O,CAAAA,iBAAiB,CAAEnpC,WAAYtZ,CAAAA,QAAQ,CAAG8zC,EAAG4M,CAAAA,2BAA2B,CAAGruF,MAAO2nD,CAAAA,KAAK,CAAG85B,EAAGyG,CAAAA,UAAU,CAAEjhC,WAAYzc,CAAAA,IAAI,CAACg9C,UAAU,CAAE,EACjL,CAAA,IAAI,CAACoI,oBAAoB,CAACxuF,EAAE,CAAG,IAAI4tF,gBAAgBqC,cAAgBC,CAAAA,cAAAA,EACrE,CACF,CACAC,SAAAA,CAAUlmD,MAAM,CAAErrC,MAAM,CAAE6Y,IAAO,CAAA,EAAE,CAAE,CACnC,MAAM4oE,GAAKp2C,MAAOo2C,CAAAA,EAAE,CACpB,MAAM+P,MAAAA,CAAS/P,GAAGgQ,sBAAsB,CAAChQ,GAAG8O,WAAW,CAAA,CACvD,OAAOiB,MACL,EAAA,KAAK/P,GAAGiQ,iCAAiC,CACvC,MACGjQ,KAAAA,EAAAA,CAAGkQ,yCAAyC,CAC/C,WACGlQ,EAAGmQ,CAAAA,iCAAiC,CACvC,MACF,KAAKnQ,GAAGoQ,uBAAuB,CAC7B,KACJ,CACF,CACA9mD,aAAc,CACZ,IAAI,CAACukD,cAAc,CAAG,IACtB,CAAA,IAAI,CAACG,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACC,mBAAmB,CAACtuF,MAAM,CAAG,CAClC,CAAA,IAAI,CAACyuF,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,kBAAkB,CAAG7mF,SAC1B,CAAA,IAAI,CAAC0mF,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACL,wBAAwB,CAAGrmF,SAChC,CAAA,IAAI,CAACmmF,cAAc,CAAG,MACxB,CACAyC,gBAAgBzmD,MAAM,CAAEr0B,GAAG,CAAE6I,GAAG,CAAE7f,MAAM,CAAEg1C,IAAI,CAAE,CAC9C3J,OAAO00C,UAAU,CAAC,EAAG,CAAG//E,CAAAA,MAAAA,CAAO+mB,KAAK,CAAE/mB,MAAAA,CAAOgnB,MAAM,CACnD,CAAA,MAAMy6D,GAAKp2C,MAAOo2C,CAAAA,EAAE,CACpBA,EAAGsQ,CAAAA,eAAe,CAACtQ,EAAGuQ,CAAAA,gBAAgB,CAAEh7E,GACxCyqE,CAAAA,CAAAA,EAAAA,CAAGsQ,eAAe,CAACtQ,EAAAA,CAAGwQ,gBAAgB,CAAEpyE,GAAAA,CAAAA,CACxC4hE,GAAGyQ,eAAe,CAAC,EAAG,CAAGlyF,CAAAA,MAAAA,CAAO+mB,KAAK,CAAE/mB,MAAAA,CAAOgnB,MAAM,CAAE,CAAA,CAAG,EAAGhnB,MAAO+mB,CAAAA,KAAK,CAAE/mB,MAAOgnB,CAAAA,MAAM,CAAEguB,IAAMysC,CAAAA,EAAAA,CAAG0Q,OAAO,EAC3G,CACA1mD,OAAAA,CAAQJ,MAAM,CAAErrC,MAAM,CAAEqlD,KAAK,CAAEjZ,KAAK,CAAE,CACpC,MAAMq1C,EAAKp2C,CAAAA,MAAAA,CAAOo2C,EAAE,CACpB,GAAI,IAAI,CAACmO,oBAAoB,CAAE,CAC7B,GAAIvqC,MAAO,CACT,IAAI,IAAIjkD,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACwuF,oBAAoB,CAACvuF,MAAM,CAAED,CAAI,EAAA,CAAA,CACvD,MAAMgxF,MAAS,CAAA,IAAI,CAACxC,oBAAoB,CAACxuF,EAAE,CAC3C,IAAI,CAAC0wF,eAAe,CAACzmD,OAAQ+mD,MAAOnD,CAAAA,MAAM,CAAEmD,MAAOjD,CAAAA,SAAS,CAAEnvF,MAAQyhF,CAAAA,EAAAA,CAAG4Q,gBAAgB,EAC3F,CACF,CACA,GAAIjmD,KAAAA,CAAO,CACT,IAAI,CAAC0lD,eAAe,CAACzmD,MAAAA,CAAQ,IAAI,CAACikD,cAAc,CAAE,IAAI,CAACI,qBAAqB,CAAE1vF,MAAAA,CAAQyhF,GAAG6Q,gBAAgB,EAC3G,CACF,CAAO,KAAA,CACL,IAAI,CAACR,eAAe,CAACzmD,MAAQ,CAAA,IAAI,CAACikD,cAAc,CAAE,IAAI,CAACI,qBAAqB,CAAE1vF,OAAQ,CAACqlD,MAAQo8B,EAAG4Q,CAAAA,gBAAgB,CAAG,CAAA,GAAMjmD,KAAQq1C,CAAAA,EAAAA,CAAG6Q,gBAAgB,CAAG,CAAA,GAC3J,CACA7Q,EAAAA,CAAGsQ,eAAe,CAACtQ,EAAAA,CAAG8O,WAAW,CAAE,IAAI,CAACjB,cAAc,EACxD,CACAnmF,WAAa,EAAA,CACX,IAAI,CAACmmF,cAAc,CAAG,IACtB,CAAA,IAAI,CAACG,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACE,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACD,mBAAmB,CAAG,EAC3B,CAAA,IAAI,CAACG,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACT,cAAc,CAAG,MACxB,CACF,CAEA,MAAMkD,iBACJhoD,OAAQk3C,CAAAA,EAAE,CAAE,CACV,IAAI,CAAC+Q,OAAO,CAACzkF,OAAO,CAAEgE,OAAQ0vE,EAAGgR,CAAAA,WAAW,CAAC1gF,KAC7C,CAAA,CAAA,CAAA,IAAI,CAACygF,OAAO,CAAG,KACjB,CACArpF,aAAa,CACX,IAAI,CAACqpF,OAAO,CAAG,GAAE,CAErB,CACA,MAAME,gBAAAA,SAAyB7d,YAM7BtqC,OAAU,EAAA,CACR,IAAI,CAACooD,WAAW,CAAC5kF,OAAO,CAAC,KAAS,EAAA,IAAI,CAACs9B,MAAM,CAACo2C,EAAE,CAACgR,WAAW,CAAC1gF,KAC7D,CAAA,CAAA,CAAA,IAAI,CAAC6gF,YAAY,CAAC7kF,OAAO,CAAEgE,OAAQ,IAAI,CAACs5B,MAAM,CAACo2C,EAAE,CAACgR,WAAW,CAAC1gF,QAC9D,IAAI,CAAC8gF,oBAAoB,CAAC9kF,OAAO,CAAC,gBAAC+kF,EAAmBA,iBAAiBvoD,OAAO,CAAC,IAAI,CAACc,MAAM,CAACo2C,EAAE,CAAA,CAC7F,CAAA,IAAI,CAACkR,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC9B,CACA9nD,WAAc,EAAA,CACZ,KAAK,CAACA,WAAAA,EACN,CAAA,IAAI,CAAC4nD,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,YAAY,CAAG,EAAE,CACtB,IAAI,CAACC,oBAAoB,CAAG,GAAE,CAEhCtzC,gBAAiB,CACf,IAAI,CAAC98C,GAAG,CAAG,IAAI,CAAC4oC,MAAM,CAAC0nD,sBACzB,CACA1/E,QAAW,EAAA,CACT,OAAO,IAAI,CAACs/E,WAAW,CAACjwF,GAAG,IAAM,IAAI,CAAC2oC,MAAM,CAACo2C,EAAE,CAACuR,WAAW,EAC7D,CACAngE,KAAMnuB,CAAAA,IAAI,CAAE,CACV,GAAI,IAAI,CAACjC,GAAG,CAAE,CACZ,MAAMgnC,KAAO,IAAI,CAACgsC,OAAO,CAAC/wE,IAAAA,CAAAA,CAC1B,MAAMqN,KAAQ,CAAA,IAAI,CAACsB,QAAQ,EAC3B,CAAA,IAAI,CAACu/E,YAAY,CAACnpD,IAAAA,CAAK,CAAG13B,KAC1B,CAAA,IAAI,CAACs5B,MAAM,CAACo2C,EAAE,CAACwR,UAAU,CAAC,IAAI,CAACxwF,GAAG,CAACywF,gBAAgB,CAAEnhF,KACrD,CAAA,CAAA,OAAO03B,IACT,CACA,OAAOvgC,SACT,CACApC,GAAAA,CAAI2iC,IAAI,CAAE,CACR,GAAIA,IAASvgC,GAAAA,SAAAA,CAAW,CACtB,IAAI,CAACmiC,MAAM,CAACo2C,EAAE,CAAC0R,QAAQ,CAAC,IAAI,CAAC1wF,GAAG,CAACywF,gBAAgB,EACnD,CACF,CACAzvC,UAAAA,EAAa,CACX,IAAI,CAACuxB,oBAAoB,EACzB,CAAA,GAAI,IAAI,CAACC,QAAQ,CAAE,CACjB,IAAI,CAACme,kBAAkB,CAAG,IAAI,CAACvgE,KAAK,CAAC,UACvC,EAAA,CACF,CACA8wB,QAAW,EAAA,CACT,GAAI,IAAI,CAACsxB,QAAQ,CAAE,CACjB,IAAI,CAACnuE,GAAG,CAAC,IAAI,CAACssF,kBAAkB,EAClC,CACF,CACAje,OAAU,EAAA,CACR,GAAI,IAAI,CAACF,QAAQ,CAAE,CACjB,MAAMxyE,GAAM,CAAA,IAAI,CAACA,GAAG,CACpB,MAAMg/E,EAAK,CAAA,IAAI,CAACp2C,MAAM,CAACo2C,EAAE,CACzB,MAAMnzC,aAAgB,CAAA,IAAI,CAACjD,MAAM,CAACiD,aAAa,CAC/C,MAAMskD,YAAe,CAAA,IAAI,CAACA,YAAY,CACtC,GAAIA,YAAavxF,CAAAA,MAAM,CAAG,CAAG,CAAA,CAC3B,IAAI,CAACuxF,YAAY,CAAG,EAAE,CACtB,MAAME,gBAAmB,CAAA,IAAIP,gBAC7BO,CAAAA,gBAAAA,CAAiBN,OAAO,CAAGI,YAC3BE,CAAAA,gBAAiBxkD,CAAAA,aAAa,CAAGA,aACjC,CAAA,IAAI,CAACukD,oBAAoB,CAAC3wF,IAAI,CAAC4wF,gBAAAA,EACjC,CACA,GAAI,IAAI,CAACD,oBAAoB,CAACxxF,MAAM,CAAG,CAAA,CAAG,CACxC,MAAMgyF,mBAAAA,CAAsB,IAAI,CAACR,oBAAoB,CAAC,CAAE,CAAA,CACxD,MAAMS,eAAkBD,CAAAA,mBAAAA,CAAoBb,OAAO,CACnD,MAAMe,UAAYD,eAAe,CAACA,gBAAgBjyF,MAAM,CAAG,EAAE,CAC7D,MAAMmyF,UAAY/R,EAAGgS,CAAAA,iBAAiB,CAACF,SAAW9R,CAAAA,EAAAA,CAAGiS,sBAAsB,CAC3E,CAAA,MAAMC,SAAWlS,EAAGmS,CAAAA,YAAY,CAACnxF,GAAIoxF,CAAAA,gBAAgB,EACrD,GAAIL,SAAAA,EAAa,CAACG,QAAU,CAAA,CAC1B,IAAI,CAACd,oBAAoB,CAAC99C,KAAK,EAAA,CAC/B,MAAMugC,OAAU,CAAA,IAAI,CAACA,OACrBA,CAAAA,OAAQj0E,CAAAA,MAAM,CAAG,CACjB,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIkyF,eAAgBjyF,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC7C,MAAM2Q,KAAQuhF,CAAAA,eAAe,CAAClyF,CAAE,CAAA,CAChC,MAAM0yF,QAAWrS,CAAAA,EAAAA,CAAGgS,iBAAiB,CAAC1hF,KAAAA,CAAO0vE,GAAGsS,YAAY,CAC5Dze,CAAAA,OAAO,CAACl0E,EAAE,CAAG0yF,QAAAA,CAAW,KACxB,IAAI,CAACnB,WAAW,CAACzwF,IAAI,CAAC6P,KACxB,EAAA,CACA,IAAI,CAACsjE,MAAM,CAACge,mBAAoB/kD,CAAAA,aAAa,CAAEgnC,OACjD,EAAA,CACA,GAAIqe,QAAU,CAAA,CACZ,IAAI,CAACd,oBAAoB,CAAC9kF,OAAO,CAAC,gBAChC,EAAA,CAAA,IAAI,CAACsnE,MAAM,CAACyd,iBAAiBxkD,aAAa,CAAE,MAC5CwkD,gBAAiBvoD,CAAAA,OAAO,CAACk3C,EAC3B,EAAA,CAAA,CACA,CAAA,IAAI,CAACoR,oBAAoB,CAACxxF,MAAM,CAAG,EACrC,CACF,CACA,KAAK,CAAC8zE,OAAAA,CAAQ7mC,eAChB,CACF,CA5FAnlC,YAAYkiC,MAAM,CAAC,CACjB,KAAK,EAAA,CAAI,IAAI,CAACsnD,WAAW,CAAG,EAAE,CAAE,IAAI,CAACC,YAAY,CAAG,EAAE,CAAE,IAAI,CAACC,oBAAoB,CAAG,EAAE,CAAE,IAAI,CAACvd,OAAO,CAAG,EACvG,CAAA,IAAI,CAACjqC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC5oC,GAAG,CAAG4oC,MAAAA,CAAO0nD,sBAAqB,CA0F3C,CAEA,MAAMiB,qBAAAA,CAAwB,EAAE,CAChC,MAAMC,4BAA4B/1C,cAiZhCC,CAAAA,QAAAA,EAAW,CACT,KAAK,CAACA,UACN,CAAA,IAAI,CAACU,WAAW,CAAG,IAAI6zC,gBAAiB,CAAA,IAAI,EAC9C,CACAnoD,OAAAA,EAAU,CACR,KAAK,CAACA,UACN,MAAMk3C,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,GAAI,IAAI,CAACyS,QAAQ,CAAE,CACjBzS,EAAAA,CAAG0S,uBAAuB,CAAC,IAAI,CAACD,QAAQ,EAC1C,CACA,IAAI,CAACE,2BAA2B,EAAA,CAChC,IAAI,CAACj1C,MAAM,CAAC77C,mBAAmB,CAAC,mBAAoB,IAAI,CAAC+wF,mBAAmB,CAAE,KAAA,CAAA,CAC9E,IAAI,CAACl1C,MAAM,CAAC77C,mBAAmB,CAAC,uBAAwB,IAAI,CAACgxF,uBAAuB,CAAE,KAAA,CACtF,CAAA,IAAI,CAACD,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAAC7S,EAAE,CAAG,IAAA,CACV,KAAK,CAACviC,WAAAA,GACR,CACA89B,gBAAiBuX,CAAAA,WAAW,CAAE,CAC5B,IAAI,CAACnX,eAAe,CAAG,IAAI,CAAC53B,WAAW,CAACF,OACxC,CAAA,IAAI,CAACf,UAAU,CAAG,IAAIoC,aAAa,CACjCjiD,IAAAA,CAAM,mBACNsmC,cAAgB,CAAA,IAAI,CACpBoB,KAAO,CAAA,IAAI,CAACoZ,WAAW,CAACpZ,KAAK,CAC7BkZ,OAAAA,CAAS,IAAI,CAAC83B,eAAe,CAC7Bn5B,OAAAA,CAAS,IAAI,CAACA,OAAO,CACvB,CACA,CAAA,IAAI,CAACM,UAAU,CAAC/Z,IAAI,CAAC+kD,wBAAwB,CAAGgF,YAClD,CACAC,sBAAAA,CAAuB3E,WAAW,CAAE,CAClC,MAAMpO,EAAK,CAAA,IAAI,CAACA,EAAE,CAClBA,GAAGsQ,eAAe,CAACtQ,GAAG8O,WAAW,CAAEV,aACnC,MAAM4E,SAAAA,CAAY,IAAI,CAAChT,EAAE,CAACmS,YAAY,CAAC,IAAI,CAACnS,EAAE,CAACiT,UAAU,CACzD,CAAA,IAAI,CAAC5sC,gBAAgB,CAAG2sC,SAAAA,CAAY36D,kBAAoBD,iBAC1D,CACA86D,kBAAmB,CACjB,MAAMC,kBAAoB,IAAI,CAACz1C,MAAM,CAACp4B,KAAK,GAAK,IAAI,CAACs4B,cAAc,CAAC5pC,CAAC,EAAI,IAAI,CAAC0pC,MAAM,CAACn4B,MAAM,GAAK,IAAI,CAACq4B,cAAc,CAACliC,CAAC,CACrH,GAAI,IAAI,CAAC03E,0BAA0B,EAAID,kBAAmB,CACxD,GAAI,IAAI,CAACC,0BAA0B,CAAE,CACnC,IAAI,CAACL,sBAAsB,CAAC,IAAI,CAACM,mBAAmB,EACtD,CACA,IAAI,CAACD,0BAA0B,CAAG,MAClC,IAAI,CAACx1C,cAAc,CAAC11C,GAAG,CAAC,IAAI,CAACw1C,MAAM,CAACp4B,KAAK,CAAE,IAAI,CAACo4B,MAAM,CAACn4B,MAAM,EAC7D,IAAI,CAACu9B,UAAU,CAACha,OAAO,GACvB,IAAI,CAACyyC,gBAAgB,CAAC,IAAI,CAAC8X,mBAAmB,EAChD,CACF,CACA56C,sBAAAA,CAAuB+G,YAAY,CAAE/5C,MAAM,CAAE,CAC3C,OAAO,IAAIi7E,iBACb,CACAzE,sBAAsB/7B,WAAW,CAAE,CACjC,OAAO,IAAI4gC,iBAAiB5gC,WAC9B,CAAA,CACA4uB,iBAAiBvxB,MAAM,CAAE,CACvB,OAAO,IAAIokC,YAAYpkC,MACzB,CAAA,CACA2+B,sBAAsB97B,YAAY,CAAE,CAClC,OAAO,IAAI8kC,kBAAkB9kC,YAAaklC,CAAAA,cAAc,CAC1D,CACAv5C,iBAAAA,CAAkB0F,OAAO,CAAE,CACzB,OAAO,IAAIq0C,YAAAA,CAAar0C,OAC1B,CAAA,CACAkU,sBAAuBvH,CAAAA,YAAY,CAAE,CACnC,OAAO,IAAIuvC,iBACb,CACA2F,cAAe,CACb,MAAMtT,GAAK,IAAI,CAACA,EAAE,CAClB,IAAIzmE,UAAY,OAChB,CAAA,GAAIymE,GAAGuT,wBAAwB,CAAE,CAC/B,MAAMC,+BAAAA,CAAkCxT,GAAGuT,wBAAwB,CAACvT,GAAGkD,aAAa,CAAElD,GAAGyT,UAAU,CAAA,CACnG,MAAMC,iCAAoC1T,CAAAA,EAAAA,CAAGuT,wBAAwB,CAACvT,EAAAA,CAAGkD,aAAa,CAAElD,EAAAA,CAAG2T,YAAY,CACvG,CAAA,MAAMC,kCAAoC5T,EAAGuT,CAAAA,wBAAwB,CAACvT,EAAGmD,CAAAA,eAAe,CAAEnD,EAAGyT,CAAAA,UAAU,EACvG,MAAMI,mCAAAA,CAAsC7T,GAAGuT,wBAAwB,CAACvT,GAAGmD,eAAe,CAAEnD,GAAG2T,YAAY,CAAA,CAC3G,GAAIH,+BAAmCE,EAAAA,iCAAAA,EAAqCE,mCAAqCC,mCAAqC,CAAA,CACpJ,MAAMC,cAAiBN,CAAAA,+BAAAA,CAAgCj6E,SAAS,CAAG,CAAA,EAAKq6E,kCAAkCr6E,SAAS,CAAG,EACtH,MAAMw6E,gBAAAA,CAAmBL,kCAAkCn6E,SAAS,CAAG,GAAKs6E,mCAAoCt6E,CAAAA,SAAS,CAAG,CAC5H,CAAA,GAAI,CAACu6E,cAAgB,CAAA,CACnB,GAAIC,gBAAkB,CAAA,CACpBx6E,UAAY,UACd,CAAA,KAAO,CACLA,SAAY,CAAA,OACd,CACF,CACF,CACF,CACA,OAAOA,SACT,CACAxY,YAAe,EAAA,CACb,IAAI,IAAIpB,CAAAA,CAAI,EAAGA,CAAIq0F,CAAAA,SAAAA,CAAUp0F,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC,GAAI,IAAI,CAACs0F,mBAAmB,CAACrrF,OAAO,CAACorF,SAAS,CAACr0F,CAAE,CAAA,CAAA,GAAM,CAAC,CAAG,CAAA,CACzD,OAAO,IAAI,CAACqgF,EAAE,CAACj/E,YAAY,CAACizF,SAAS,CAACr0F,EAAE,CAC1C,CACF,CACA,OAAO,IACT,CACA,IAAI2xF,qBAAAA,EAAwB,CAC1B,GAAI,CAAC,IAAI,CAAC4C,sBAAsB,CAAE,CAChC,IAAI,CAACA,sBAAsB,CAAG,IAAI,CAACnzF,YAAY,CAAC,iCAAmC,CAAA,0BAAA,EACrF,CACA,OAAO,IAAI,CAACmzF,sBACd,CACAC,oBAAuB,EAAA,CACrB,MAAMnU,EAAK,CAAA,IAAI,CAACA,EAChB,CAAA,IAAI,CAACiU,mBAAmB,CAAGjU,EAAGoU,CAAAA,sBAAsB,IAAM,EAC1D,CAAA,IAAI,CAACF,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACzxC,wBAAwB,CAAG,IAChC,CAAA,IAAI,CAAC4xC,mBAAmB,CAAG,IAAI,CAACtzF,YAAY,CAAC,yBAC7C,CAAA,IAAI,CAACk8C,sBAAsB,CAAG,CAAC,CAAC,IAAI,CAACo3C,mBACrC,CAAA,IAAI,CAACC,uBAAuB,CAAG,IAAI,CAACvzF,YAAY,CAAC,8BACjD,CAAA,IAAI,CAAC2hD,0BAA0B,CAAG,CAAC,CAAC,IAAI,CAAC4xC,uBAAuB,EAAI,CAAC,CAAC,IAAI,CAACD,mBAC3E,CAAA,IAAI,CAACE,oBAAoB,CAAG,IAAI,CAACxzF,YAAY,CAAC,4BAC9C,CAAA,IAAI,CAACyzF,qBAAqB,CAAG,IAAI,CAACzzF,YAAY,CAAC,0BAC/C,CAAA,CAAA,IAAI,CAACi8C,sBAAsB,CAAG,CAAC,CAAC,IAAI,CAACw3C,qBAAqB,CAC1D,IAAI,CAACC,aAAa,CAAG,IAAI,CAAC1zF,YAAY,CAAC,iBACvC,CAAA,CAAA,IAAI,CAAC2zF,2BAA2B,CAAG,IAAI,CAAC3zF,YAAY,CAAC,gCAAA,CAAkC,wCACvF,CAAA,IAAI,CAAC+jF,wBAAwB,CAAG,IAAI,CAAC/jF,YAAY,CAAC,6BAClD,CAAA,CAAA,IAAI,CAAC4zF,YAAY,CAAG,IAAI,CAAC5zF,YAAY,CAAC,kBAAA,CACtC,CAAA,IAAI,CAACm8C,iBAAiB,CAAG,CAAC,CAAC,IAAI,CAACy3C,YAAY,CAC5C,IAAI,CAAC5M,wBAAwB,CAAG,IAAI,CAAChnF,YAAY,CAAC,+BAAA,CAClD,CAAA,IAAI,CAAC44E,uBAAuB,CAAG,IAAI,CAAC54E,YAAY,CAAC,+BACjD,CAAA,IAAI,CAACknF,yBAAyB,CAAG,IAAI,CAAClnF,YAAY,CAAC,gCAAkC,CAAA,uCAAA,CACrF,CAAA,IAAI,CAAC04E,wBAAwB,CAAG,IAAI,CAAC14E,YAAY,CAAC,+BAAiC,CAAA,sCAAA,CACnF,CAAA,IAAI,CAACkoF,6BAA6B,CAAG,IAAI,CAACloF,YAAY,CAAC,oCACvD,CAAA,CAAA,IAAI,CAAC0nF,uBAAuB,CAAG,IAAI,CAAC1nF,YAAY,CAAC,8BAAA,CACjD,CAAA,IAAI,CAAC64E,wBAAwB,CAAG,IAAI,CAAC74E,YAAY,CAAC,gCAClD,CAAA,IAAI,CAAC6nF,yBAAyB,CAAG,IAAI,CAAC7nF,YAAY,CAAC,8BACrD,EAAA,CACA6zF,wBAAyB,CACvB,MAAM5U,GAAK,IAAI,CAACA,EAAE,CAClB,IAAIh/E,IACJ,MAAMiB,SAAAA,CAAY,OAAOD,SAAc,GAAA,WAAA,CAAcA,UAAUC,SAAS,CAAG,EAC3E,CAAA,IAAI,CAAC8rE,YAAY,CAAG,IAAI,CAACx0D,SAAS,CAAG,IAAI,CAAC+5E,YAAY,EACtD,CAAA,MAAMuB,eAAiB7U,EAAG8U,CAAAA,oBAAoB,EAC9C,CAAA,IAAI,CAACC,YAAY,CAAGF,gBAAgB7wC,SAAa,EAAA,KACjD,CAAA,IAAI,CAAC23B,eAAe,CAAGkZ,cAAAA,EAAgBhxC,SAAW,KAClD,CAAA,IAAI,CAAC2zB,cAAc,CAAGwI,GAAGmS,YAAY,CAACnS,GAAGgV,gBAAgB,CACzD,CAAA,IAAI,CAACtd,cAAc,CAAGsI,EAAAA,CAAGmS,YAAY,CAACnS,EAAAA,CAAGiV,yBAAyB,CAClE,CAAA,IAAI,CAACrG,mBAAmB,CAAG5O,EAAGmS,CAAAA,YAAY,CAACnS,EAAGkV,CAAAA,qBAAqB,CACnE,CAAA,IAAI,CAAC3d,WAAW,CAAGyI,GAAGmS,YAAY,CAACnS,GAAGmV,uBAAuB,CAC7D,CAAA,IAAI,CAACC,mBAAmB,CAAGpV,EAAAA,CAAGmS,YAAY,CAACnS,EAAAA,CAAGqV,gCAAgC,CAC9E,CAAA,IAAI,CAACC,iBAAiB,CAAGtV,EAAGmS,CAAAA,YAAY,CAACnS,EAAGuV,CAAAA,8BAA8B,CAC1E,CAAA,IAAI,CAACxd,mBAAmB,CAAGiI,GAAGmS,YAAY,CAACnS,GAAGwV,0BAA0B,CACxE,CAAA,IAAI,CAAC3d,qBAAqB,CAAGmI,EAAAA,CAAGmS,YAAY,CAACnS,EAAAA,CAAGyV,4BAA4B,CAC5E,CAAA,IAAI,CAACtyC,mBAAmB,CAAG68B,EAAGmS,CAAAA,YAAY,CAACnS,EAAG0V,CAAAA,qBAAqB,CACnE,CAAA,IAAI,CAAC/d,aAAa,CAAGqI,EAAAA,CAAGmS,YAAY,CAACnS,EAAAA,CAAG2V,mBAAmB,CAC3D30F,CAAAA,GAAAA,CAAM,IAAI,CAACuzF,oBAAoB,CAC/B,IAAI,CAACqB,gBAAgB,CAAG50F,IAAMg/E,EAAGmS,CAAAA,YAAY,CAACnxF,GAAI60F,CAAAA,uBAAuB,EAAI,EAC7E,CAAA,IAAI,CAACC,cAAc,CAAG90F,GAAMg/E,CAAAA,EAAAA,CAAGmS,YAAY,CAACnxF,GAAAA,CAAI+0F,qBAAqB,CAAI,CAAA,EAAA,CACzE,MAAMC,iBAAoB,CAAA,aAAA,CAC1B,MAAMC,iBAAoB,CAAA,iBAC1B,CAAA,IAAI,CAAChe,oBAAoB,CAAG,EAAE,IAAI,CAAC6d,cAAc,GAAK,KAAA,EAAS7zF,UAAUb,KAAK,CAAC60F,kBAAiB,CAAM,EAAA,CAAC,IAAI,CAACL,gBAAgB,CAACx0F,KAAK,CAAC40F,mBACnIh1F,GAAM,CAAA,IAAI,CAAC0zF,2BACX,CAAA,IAAI,CAAC5xB,aAAa,CAAG9hE,GAAAA,CAAMg/E,GAAGmS,YAAY,CAACnxF,IAAIk1F,8BAA8B,CAAA,CAAI,EACjF,MAAMC,kBAAAA,CAAqB,CAAC,IAAI,CAACC,yBAAyB,CAC1D,IAAI,CAAChzC,UAAU,CAAG+yC,kBAAqBnW,CAAAA,EAAAA,CAAGmS,YAAY,CAACnS,EAAAA,CAAGqW,WAAW,CAAI,CAAA,CACzE,CAAA,IAAI,CAACjzC,UAAU,CAAGlkD,IAAAA,CAAKmU,GAAG,CAAC,IAAI,CAAC+vC,UAAU,CAAE,EAC5C,CAAA,IAAI,CAACZ,OAAO,CAAG2zC,oBAAsB,IAAI,CAACpzC,mBAAmB,CAAG,IAAI,CAACK,UAAU,CAAG,CAClF,CAAA,IAAI,CAAC40B,kBAAkB,CAAG,CAACh1E,QAASU,CAAAA,OAAO,CAC3C,GAAI,IAAI,CAAC6zE,WAAW,EAAI,EAAG,CACzB,IAAI,CAACS,kBAAkB,CAAG,MAC5B,CACA,IAAI,CAACl7B,eAAe,GACtB,CACAiB,qBAAwB,EAAA,CACtB,KAAK,CAACA,qBAAAA,EAAAA,CACN,MAAMiiC,EAAK,CAAA,IAAI,CAACA,EAAE,CAClBA,GAAGsW,OAAO,CAACtW,GAAGuW,KAAK,CAAA,CACnBvW,GAAGwW,SAAS,CAACxW,GAAGpiE,GAAG,CAAEoiE,GAAGtiE,IAAI,CAAA,CAC5BsiE,EAAGyW,CAAAA,aAAa,CAACzW,EAAAA,CAAG0W,QAAQ,CAC5B1W,CAAAA,EAAAA,CAAG2W,SAAS,CAAC,IAAA,CAAM,KAAM,IAAM,CAAA,IAAA,CAAA,CAC/B3W,GAAGlhC,UAAU,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,GACvBkhC,EAAG4W,CAAAA,MAAM,CAAC5W,EAAG6W,CAAAA,SAAS,CACtB,CAAA,IAAI,CAACC,QAAQ,CAAG9W,GAAG9hE,IAAI,CACvB8hE,GAAG8W,QAAQ,CAAC9W,GAAG9hE,IAAI,CAAA,CACnB8hE,GAAG4W,MAAM,CAAC5W,GAAG+W,UAAU,CAAA,CACvB/W,GAAGgX,SAAS,CAAChX,GAAGiX,MAAM,CAAA,CACtBjX,GAAGkX,SAAS,CAAC,KACb,CAAA,IAAI,CAACrzC,OAAO,CAAG,MACfm8B,EAAGsW,CAAAA,OAAO,CAACtW,EAAGmX,CAAAA,YAAY,CAC1B,CAAA,IAAI,CAACC,gBAAgB,CAAG,IAAI,CAACC,eAAe,CAAG5/D,WAC/C,CAAA,IAAI,CAAC6/D,eAAe,CAAG,IAAI,CAACC,cAAc,CAAG,CAC7C,CAAA,IAAI,CAACC,gBAAgB,CAAG,IAAI,CAACC,eAAe,CAAG,IAC/CzX,EAAG0X,CAAAA,WAAW,CAAC1X,EAAG2X,CAAAA,MAAM,CAAE,CAAG,CAAA,GAAA,CAC7B,CAAA,IAAI,CAACC,gBAAgB,CAAG,IAAI,CAACC,eAAe,CAAGp4D,cAC/C,CAAA,IAAI,CAACq4D,iBAAiB,CAAG,IAAI,CAACC,gBAAgB,CAAGt4D,cACjD,CAAA,IAAI,CAACu4D,iBAAiB,CAAG,IAAI,CAACC,gBAAgB,CAAGx4D,cACjD,CAAA,IAAI,CAACy4D,qBAAqB,CAAG,GAC7B,CAAA,IAAI,CAACC,oBAAoB,CAAG,GAAA,CAC5BnY,GAAGoY,SAAS,CAACpY,GAAGqY,IAAI,CAAErY,GAAGqY,IAAI,CAAErY,GAAGqY,IAAI,CAAA,CACtCrY,GAAGsY,WAAW,CAAC,IACf,CAAA,IAAI,CAACC,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,MAAM,CAAG,KACdxY,EAAGsW,CAAAA,OAAO,CAACtW,EAAGyY,CAAAA,wBAAwB,EACtCzY,EAAGsW,CAAAA,OAAO,CAACtW,EAAG0Y,CAAAA,kBAAkB,CAChC,CAAA,IAAI,CAACC,gBAAgB,CAAG,KACxB3Y,CAAAA,EAAAA,CAAGsW,OAAO,CAACtW,GAAG4Y,mBAAmB,CACjC,CAAA,IAAI,CAACplC,UAAU,CAAG,CAAA,CAClBwsB,GAAGxsB,UAAU,CAAC,EACd,CAAA,IAAI,CAACqlC,UAAU,CAAG,IAAI7jF,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CACrCgrE,GAAG6Y,UAAU,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,EACvB,CAAA,IAAI,CAAC9kC,YAAY,CAAG,EACpBisB,EAAGjsB,CAAAA,YAAY,CAAC,CAChBisB,CAAAA,CAAAA,EAAAA,CAAG8Y,IAAI,CAAC9Y,EAAAA,CAAG+Y,+BAA+B,CAAE/Y,EAAAA,CAAGgZ,MAAM,CACrDhZ,CAAAA,EAAAA,CAAG4W,MAAM,CAAC5W,EAAAA,CAAGiZ,YAAY,CACzBjZ,CAAAA,EAAAA,CAAGkZ,WAAW,CAAClZ,EAAAA,CAAGmZ,kCAAkC,CAAEnZ,EAAAA,CAAGoZ,IAAI,CAC7D,CAAA,IAAI,CAACC,WAAW,CAAG,KACnBrZ,CAAAA,EAAAA,CAAGkZ,WAAW,CAAClZ,EAAAA,CAAGsZ,mBAAmB,CAAE,KAAA,CACvC,CAAA,IAAI,CAACC,sBAAsB,CAAG,KAAA,CAC9BvZ,GAAGkZ,WAAW,CAAClZ,GAAGwZ,8BAA8B,CAAE,OAClDxZ,EAAGkZ,CAAAA,WAAW,CAAClZ,EAAGyZ,CAAAA,gBAAgB,CAAE,CACtC,EAAA,CACAC,iBAAiB/5C,KAAQ,CAAA,EAAE,CAAE,CAC3B,IAAI,CAACqmC,YAAY,CAAG,EAAE,CACtB,IAAI,IAAIrmF,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,IAAI,CAACqmF,YAAY,CAACvlF,IAAI,CAAC,CACrB,IAAA,CACA,KACA,IACD,CAAA,EACH,CACF,CACAu9C,uBAAAA,EAA0B,CACxB,KAAK,CAACA,yBACN,CAAA,IAAI,CAAC27C,OAAO,CAAG,IAAI5xF,GACnB,CAAA,IAAI,CAAC6xF,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACpH,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACqH,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAAC7T,WAAW,CAAG,CACnB,CAAA,IAAI,CAACyT,gBAAgB,CAAC,IAAI,CAACtE,mBAAmB,EAChD,CACA9rD,WAAAA,EAAc,CACZ,KAAK,CAACA,cACN,IAAK,MAAMiU,MAAU,IAAA,IAAI,CAACC,OAAO,CAAC,CAChCD,MAAAA,CAAOjU,WAAW,GACpB,CACF,CACAwU,cAAiB,EAAA,CACf,IAAI,CAACq2C,oBAAoB,GACzB,IAAI,CAACS,sBAAsB,EAC3B,CAAA,KAAK,CAAC92C,cACN,EAAA,CAAA,IAAK,MAAMP,MAAU,IAAA,IAAI,CAACC,OAAO,CAAC,CAChCD,MAAOO,CAAAA,cAAc,GACvB,CACF,CACAz4B,YAAYrR,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,CACtB,GAAI,IAAI,CAACorB,EAAE,GAAKxqC,GAAK,IAAI,CAACyqC,EAAE,GAAK/iC,CAAAA,EAAK,IAAI,CAACgjC,EAAE,GAAKx/B,CAAK,EAAA,IAAI,CAACy/B,EAAE,GAAKvrB,EAAG,CACpE,IAAI,CAAC4sD,EAAE,CAAC+Z,QAAQ,CAAC/lF,CAAAA,CAAG0H,EAAGwD,CAAGkU,CAAAA,CAAAA,CAC1B,CAAA,IAAI,CAACorB,EAAE,CAAGxqC,CACV,CAAA,IAAI,CAACyqC,EAAE,CAAG/iC,CACV,CAAA,IAAI,CAACgjC,EAAE,CAAGx/B,CACV,CAAA,IAAI,CAACy/B,EAAE,CAAGvrB,EACZ,CACF,CACAkrD,UAAWtqE,CAAAA,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,CACrB,GAAI,IAAI,CAAC7M,EAAE,GAAKvS,CAAK,EAAA,IAAI,CAACwS,EAAE,GAAK9K,GAAK,IAAI,CAACkjC,EAAE,GAAK1/B,CAAAA,EAAK,IAAI,CAAC2/B,EAAE,GAAKzrB,CAAG,CAAA,CACpE,IAAI,CAAC4sD,EAAE,CAACga,OAAO,CAAChmF,EAAG0H,CAAGwD,CAAAA,CAAAA,CAAGkU,EACzB,CAAA,IAAI,CAAC7M,EAAE,CAAGvS,CACV,CAAA,IAAI,CAACwS,EAAE,CAAG9K,CACV,CAAA,IAAI,CAACkjC,EAAE,CAAG1/B,CACV,CAAA,IAAI,CAAC2/B,EAAE,CAAGzrB,EACZ,CACF,CACAo7D,eAAeyL,EAAE,CAAE,CACjB,GAAI,IAAI,CAACJ,iBAAiB,GAAKI,GAAI,CACjC,MAAMja,GAAK,IAAI,CAACA,EAAE,CAClBA,EAAAA,CAAGsQ,eAAe,CAACtQ,EAAAA,CAAG8O,WAAW,CAAEmL,EACnC,CAAA,CAAA,IAAI,CAACJ,iBAAiB,CAAGI,GAC3B,CACF,CACAn0C,gBAAiBvV,CAAAA,MAAM,CAAE6zB,IAAI,CAAExgB,KAAK,CAAEjZ,KAAK,CAAE,CAC3C,MAAMq1C,GAAK,IAAI,CAACA,EAAE,CAClB,GAAIzvC,SAAW,IAAI,CAACuS,UAAU,CAAE,CAC9BvS,OAAS,KACX,CACA,GAAIqT,KAAO,CAAA,CACT,GAAI,CAACwgB,IAAAA,CAAM,CACT,GAAI,CAAC7zB,OAAOkV,YAAY,CAAE,CACxB,OAAO,KACT,CACF,CAAO,KAAA,GAAIlV,OAAQ,CACjB,GAAI,CAACA,MAAOkV,CAAAA,YAAY,EAAI,CAAC2e,IAAAA,CAAK3e,YAAY,CAAE,CAC9C,OAAO,KACT,CACA,GAAIlV,MAAOkV,CAAAA,YAAY,CAAClY,OAAO,GAAK62B,KAAK3e,YAAY,CAAClY,OAAO,CAAE,CAC7D,OAAO,KACT,CACF,CACF,CACA,GAAI5C,OAAS4F,MAAQ,CAAA,CACnB,GAAI,CAACA,MAAAA,CAAOjE,MAAM,CAAE,CAClB,GAAI,CAACiE,MAAAA,CAAO+U,YAAY,EAAI,CAAC8e,KAAK9e,YAAY,CAAE,CAC9C,OAAO,KACT,CACA,GAAI/U,MAAAA,CAAO+U,YAAY,CAAC/X,OAAO,GAAK62B,IAAK9e,CAAAA,YAAY,CAAC/X,OAAO,CAAE,CAC7D,OAAO,KACT,CACF,CACF,CACA,MAAM2sD,MAAS,CAAA,IAAI,CAAC97C,YACpB,CAAA,IAAI,CAACA,YAAY,CAAGgmB,IAAAA,CACpB,IAAI,CAAC+1B,WAAW,GAChB,MAAM5kF,GAAAA,CAAMg7B,OAASA,MAAOxH,CAAAA,IAAI,CAAC8kD,cAAc,CAAG,IAAI,CAAC/qC,UAAU,EAAE/Z,IAAK8kD,CAAAA,cAAAA,CACxE,MAAMzvE,GAAMgmD,CAAAA,IAAAA,CAAOA,KAAKr7B,IAAI,CAAC8kD,cAAc,CAAG,IAAI,CAAC/qC,UAAU,EAAE/Z,KAAK8kD,cACpE7N,CAAAA,EAAAA,CAAGsQ,eAAe,CAACtQ,EAAAA,CAAGuQ,gBAAgB,CAAEh7E,GAAAA,CAAAA,CACxCyqE,GAAGsQ,eAAe,CAACtQ,GAAGwQ,gBAAgB,CAAEpyE,KACxC,MAAMc,CAAAA,CAAIqxB,OAASA,MAAOjrB,CAAAA,KAAK,CAAG8+C,IAAOA,CAAAA,IAAAA,CAAK9+C,KAAK,CAAG,IAAI,CAACA,KAAK,CAChE,MAAM8N,EAAImd,MAASA,CAAAA,MAAAA,CAAOhrB,MAAM,CAAG6+C,IAAAA,CAAOA,KAAK7+C,MAAM,CAAG,IAAI,CAACA,MAAM,CACnEy6D,EAAGyQ,CAAAA,eAAe,CAAC,CAAG,CAAA,CAAA,CAAGvxE,EAAGkU,CAAG,CAAA,CAAA,CAAG,EAAGlU,CAAGkU,CAAAA,CAAAA,CAAG,CAACwwB,KAAAA,CAAQo8B,GAAG4Q,gBAAgB,CAAG,CAAA,GAAMjmD,MAAQq1C,EAAG6Q,CAAAA,gBAAgB,CAAG,CAAA,CAAA,CAAI7Q,GAAG0Q,OAAO,CAC5H,CAAA,IAAI,CAACtyC,YAAY,CAAG87C,MAAAA,CACpBla,GAAGsQ,eAAe,CAACtQ,GAAG8O,WAAW,CAAEoL,OAASA,MAAOnxD,CAAAA,IAAI,CAAC8kD,cAAc,CAAG,MACzE,OAAO,IACT,CACA7rC,UAAa,EAAA,CACX,KAAK,CAACA,UAAAA,EAAAA,CACN,IAAI,CAACkxC,gBAAgB,GACrB,IAAI,CAAC91C,WAAW,CAAC4E,UAAU,GAC7B,CACAE,QAAAA,EAAW,CACT,KAAK,CAACA,WACN,IAAI,CAAC9E,WAAW,CAAC8E,QAAQ,GACzB,IAAI,CAAC9E,WAAW,CAACs2B,OAAO,GAC1B,CACA/xB,eAAAA,CAAgBC,UAAU,CAAE,CAC1B,MAAMgP,EAAKhP,CAAAA,UAAAA,CAAWxD,YAAY,EAAI,IAAI,CAAC0E,UAC3C,CAAA,IAAI,CAAC1E,YAAY,CAAGwS,EAAAA,CACpB,IAAI,CAACupC,WAAW,GAChB,KAAM,CAAE70E,KAAK,CAAEC,MAAM,CAAE,CAAGqrC,EAAAA,CAC1B,IAAI,CAACvrC,WAAW,CAAC,CAAG,CAAA,CAAA,CAAGC,MAAOC,MAC9B,CAAA,CAAA,IAAI,CAAC+4D,UAAU,CAAC,EAAG,CAAGh5D,CAAAA,KAAAA,CAAOC,QAC7B,MAAMstC,QAAAA,CAAWjR,WAAWiR,QAAQ,CACpC,MAAMQ,eAAkBzR,CAAAA,UAAAA,CAAWyR,eAAe,CAClD,GAAIR,UAAUtqD,KAAS8qD,EAAAA,eAAAA,CAAgBG,UAAU,EAAIH,eAAAA,CAAgBU,YAAY,CAAE,CACjF,IAAIqmC,UAAa,CAAA,CAAA,CACjB,MAAMC,YAAe,CAAA,GACrB,GAAIxnC,QAAAA,EAAUtqD,MAAO,CACnB6xF,UAAAA,EAAcrkE,eACdskE,CAAAA,YAAAA,CAAaz2C,KAAK,CAAG,CACnBiP,SAASE,UAAU,CAAC9zD,CAAC,CACrB4zD,QAASE,CAAAA,UAAU,CAACv/C,CAAC,CACrBq/C,SAASE,UAAU,CAACvjD,CAAC,CACrBqjD,QAAAA,CAASE,UAAU,CAACxjD,CAAC,EACtB,CAEH,GAAI8jD,eAAgBG,CAAAA,UAAU,CAAE,CAC9B4mC,UAAAA,EAAcpkE,eACdqkE,CAAAA,YAAAA,CAAa1vD,KAAK,CAAG0oB,eAAAA,CAAgBC,gBAAe,CAEtD,GAAID,eAAgBU,CAAAA,YAAY,CAAE,CAChCqmC,UAAAA,EAAcnkE,iBACdokE,CAAAA,YAAAA,CAAax2C,OAAO,CAAGwP,eAAAA,CAAgBQ,kBAAiB,CAE1DwmC,aAAav2C,KAAK,CAAGs2C,WACrB,IAAI,CAAC7xF,KAAK,CAAC8xF,YAAAA,EACb,CACA,IAAI,CAAC92C,gBAAgB,CAAG,KAC1B,CACA1B,aAAcD,CAAAA,UAAU,CAAE,CACxB,IAAI,CAAC++B,iBAAiB,EAAA,CACtB,MAAMpiF,MAAS,CAAA,IAAI,CAAC6/C,YAAY,CAChC,MAAMqwC,gBAAmB7sC,CAAAA,UAAAA,CAAWkR,aAAa,CAAClzD,MAAM,CACxD,GAAIrB,MAAAA,CAAQ,CACVg0F,qBAAsB3yF,CAAAA,MAAM,CAAG,CAC/B,CAAA,MAAMogF,GAAK,IAAI,CAACA,EAAE,CAClB,IAAI,IAAIrgF,CAAI,CAAA,CAAA,CAAGA,EAAI8uF,gBAAkB9uF,CAAAA,CAAAA,EAAAA,CAAI,CACvC,MAAMkzD,QAAAA,CAAWjR,WAAWkR,aAAa,CAACnzD,EAAE,CAC5C,GAAI,EAAEkzD,QAAAA,CAASM,KAAK,EAAIN,QAAAA,CAAS7oB,OAAO,CAAD,CAAI,CACzCuoD,qBAAsB9xF,CAAAA,IAAI,CAACu/E,EAAG2O,CAAAA,iBAAiB,CAAGhvF,CACpD,EAAA,CACF,CACA,GAAIpB,MAAAA,GAAW,IAAI,CAACukD,UAAU,CAAE,CAC9B,GAAI,CAAClB,UAAWyR,CAAAA,eAAe,CAACK,UAAU,CAAE,CAC1C6+B,qBAAsB9xF,CAAAA,IAAI,CAACu/E,EAAGkP,CAAAA,gBAAgB,EAChD,CACA,GAAI,CAACttC,UAAWyR,CAAAA,eAAe,CAACY,YAAY,CAAE,CAC5Cs+B,qBAAsB9xF,CAAAA,IAAI,CAACu/E,EAAGsa,CAAAA,kBAAkB,EAClD,CACF,CACA,GAAI/H,qBAAsB3yF,CAAAA,MAAM,CAAG,CAAG,CAAA,CACpC,GAAIgiD,UAAW24C,CAAAA,iBAAiB,CAAE,CAChCva,EAAAA,CAAGwa,qBAAqB,CAACxa,EAAAA,CAAGwQ,gBAAgB,CAAE+B,qBAAAA,EAChD,CACF,CACA,GAAI9D,gBAAoB7sC,EAAAA,UAAAA,CAAWiR,QAAQ,EAAE7oB,QAAS,CACpD,GAAI4X,WAAWY,OAAO,CAAG,GAAKjkD,MAAOgoD,CAAAA,WAAW,CAAE,CAChDhoD,MAAAA,CAAOyrC,OAAO,CAAC,IAAA,CAAM,OACvB,CACF,CACA,GAAIzrC,MAAO0nD,CAAAA,WAAW,EAAIrE,UAAWyR,CAAAA,eAAe,CAACsiB,YAAY,CAAE,CACjE,GAAI/zB,UAAAA,CAAWY,OAAO,CAAG,CAAA,EAAKjkD,OAAOgoD,WAAW,CAAE,CAChDhoD,MAAOyrC,CAAAA,OAAO,CAAC,KAAO,CAAA,IAAA,EACxB,CACF,CACA,IAAI,IAAIrqC,CAAI,CAAA,CAAA,CAAGA,EAAI8uF,gBAAkB9uF,CAAAA,CAAAA,EAAAA,CAAI,CACvC,MAAMkzD,QAAAA,CAAWjR,WAAWkR,aAAa,CAACnzD,EAAE,CAC5C,GAAIkzD,SAAS2rB,UAAU,CAAE,CACvB,MAAMh5B,WAAAA,CAAcjnD,OAAOgnD,aAAa,CAAC5lD,EAAE,CAC3C,GAAI6lD,aAAeA,WAAYzc,CAAAA,IAAI,CAACg9C,UAAU,EAAIvgC,YAAYra,OAAO,CAAE,CACrE,IAAI,CAACsvD,aAAa,CAAC,IAAI,CAACrF,mBAAmB,CAAG,GAC9C,IAAI,CAACsF,WAAW,CAACl1C,WACjB,CAAA,CAAA,IAAI,CAACw6B,EAAE,CAACwM,cAAc,CAAChnC,WAAAA,CAAYzc,IAAI,CAACs9C,SAAS,EACnD,CACF,CACF,CACF,CACA,IAAI,CAAC9iC,gBAAgB,CAAG,MAC1B,CACA,IAAIo3C,mBAAmBrzF,KAAK,CAAE,CAC5B,GAAI,IAAI,CAAC+rF,mBAAmB,GAAK/rF,MAAO,CACtC,IAAI,CAAC+rF,mBAAmB,CAAG/rF,KAC3B,CAAA,IAAI,CAAC8rF,0BAA0B,CAAG,KACpC,CACF,CACA,IAAIuH,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAACtH,mBAAmB,CAEjC8G,aAAc,CACZ,IAAI,CAACP,QAAQ,CAAG,KAChB,GAAI,IAAI,CAACgB,sCAAsC,CAAE,CAC/C,IAAI,IAAIC,KAAO,CAAGA,CAAAA,IAAAA,CAAO,IAAI,CAAC7U,YAAY,CAACpmF,MAAM,CAAE,EAAEi7F,IAAK,CAAA,CACxD,IAAI,IAAI7yD,IAAAA,CAAO,EAAGA,IAAO,CAAA,CAAA,CAAG,EAAEA,IAAK,CAAA,CACjC,IAAI,CAACg+C,YAAY,CAAC6U,IAAAA,CAAK,CAAC7yD,IAAAA,CAAK,CAAG,KAClC,CACF,CACF,CACA,MAAMzpC,OAAS,IAAI,CAAC6/C,YAAY,EAAI,IAAI,CAAC0E,UAAU,CACnD,MAAMg4C,UAAav8F,CAAAA,MAAAA,CAAOwqC,IAAI,CAC9B,GAAI,CAAC+xD,UAAW9iD,CAAAA,WAAW,CAAE,CAC3B,IAAI,CAAC8H,gBAAgB,CAACvhD,QACxB,CACA,IAAI,CAACiwF,cAAc,CAACsM,WAAWjN,cAAc,EAC/C,CACAkN,SAAY,EAAA,CACV,IAAI,CAACpa,iBAAiB,GACtB,MAAMpiF,MAAAA,CAAS,IAAI,CAAC6/C,YAAY,CAChC,GAAI7/C,MAAAA,EAAUA,SAAW,IAAI,CAACukD,UAAU,CAAE,CACxC,GAAIvkD,MAAOqnD,CAAAA,QAAQ,CAAG,CAAKrnD,EAAAA,MAAAA,CAAOgoD,WAAW,CAAE,CAC7ChoD,OAAOyrC,OAAO,GAChB,CACA,MAAMwb,WAAAA,CAAcjnD,OAAOknD,YAAY,CACvC,GAAID,WAAeA,EAAAA,WAAAA,CAAYzc,IAAI,CAACg9C,UAAU,EAAIvgC,WAAYra,CAAAA,OAAO,CAAE,CACrE,IAAI,CAACsvD,aAAa,CAAC,IAAI,CAACrF,mBAAmB,CAAG,CAC9C,CAAA,CAAA,IAAI,CAACsF,WAAW,CAACl1C,aACjB,IAAI,CAACw6B,EAAE,CAACwM,cAAc,CAAChnC,WAAYzc,CAAAA,IAAI,CAACs9C,SAAS,EACnD,CACF,CACF,CACAoG,eAAel9C,KAAK,CAAE,CACpB,GAAI,IAAI,CAAC8pD,WAAW,GAAK9pD,MAAO,CAC9B,IAAI,CAAC8pD,WAAW,CAAG9pD,MACnB,MAAMywC,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClBA,EAAGkZ,CAAAA,WAAW,CAAClZ,EAAGsZ,CAAAA,mBAAmB,CAAE/pD,KACzC,EAAA,CACF,CACAm9C,yBAA0Bh9C,CAAAA,gBAAgB,CAAE,CAC1C,GAAI,IAAI,CAAC6pD,sBAAsB,GAAK7pD,gBAAkB,CAAA,CACpD,IAAI,CAAC6pD,sBAAsB,CAAG7pD,gBAC9B,CAAA,MAAMswC,GAAK,IAAI,CAACA,EAAE,CAClBA,EAAAA,CAAGkZ,WAAW,CAAClZ,EAAAA,CAAGwZ,8BAA8B,CAAE9pD,gBAAAA,EACpD,CACF,CACA+qD,aAAAA,CAAcxU,WAAW,CAAE,CACzB,GAAI,IAAI,CAACA,WAAW,GAAKA,WAAAA,CAAa,CACpC,IAAI,CAACjG,EAAE,CAACya,aAAa,CAAC,IAAI,CAACza,EAAE,CAACgb,QAAQ,CAAG/U,YACzC,CAAA,IAAI,CAACA,WAAW,CAAGA,YACrB,CACF,CACAyU,YAAYjpD,OAAO,CAAE,CACnB,MAAM1I,IAAAA,CAAO0I,QAAQ1I,IAAI,CACzB,MAAMkyD,aAAgBlyD,CAAAA,IAAAA,CAAKs9C,SAAS,CACpC,MAAM6U,cAAgBnyD,IAAKg9C,CAAAA,UAAU,CACrC,MAAME,WAAAA,CAAc,IAAI,CAACA,WAAW,CACpC,MAAMj+C,IAAAA,CAAO,IAAI,CAACmzD,YAAY,CAACF,aAAc,CAAA,CAC7C,GAAI,IAAI,CAACjV,YAAY,CAACC,WAAAA,CAAY,CAACj+C,IAAK,CAAA,GAAKkzD,cAAe,CAC1D,IAAI,CAAClb,EAAE,CAAC0a,WAAW,CAACO,aAAAA,CAAeC,cACnC,CAAA,IAAI,CAAClV,YAAY,CAACC,YAAY,CAACj+C,IAAAA,CAAK,CAAGkzD,cACzC,CACF,CACAE,iBAAkB3pD,CAAAA,OAAO,CAAEw0C,WAAW,CAAE,CACtC,MAAMl9C,IAAAA,CAAO0I,QAAQ1I,IAAI,CACzB,MAAMkyD,aAAgBlyD,CAAAA,IAAAA,CAAKs9C,SAAS,CACpC,MAAM6U,cAAgBnyD,IAAKg9C,CAAAA,UAAU,CACrC,MAAM/9C,IAAAA,CAAO,IAAI,CAACmzD,YAAY,CAACF,aAAc,CAAA,CAC7C,GAAI,IAAI,CAACjV,YAAY,CAACC,WAAAA,CAAY,CAACj+C,IAAK,CAAA,GAAKkzD,cAAe,CAC1D,IAAI,CAACT,aAAa,CAACxU,aACnB,IAAI,CAACjG,EAAE,CAAC0a,WAAW,CAACO,aAAeC,CAAAA,aAAAA,CACnC,CAAA,IAAI,CAAClV,YAAY,CAACC,WAAAA,CAAY,CAACj+C,IAAK,CAAA,CAAGkzD,cACzC,CACF,CACAG,qBAAqB5pD,OAAO,CAAE,CAC5B,MAAMuuC,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,MAAMl8B,KAAAA,CAAQrS,QAAQ1I,IAAI,CAACq9C,mBAAmB,CAC9C,MAAM7nF,OAASkzC,OAAQ1I,CAAAA,IAAI,CAACs9C,SAAS,CACrC,GAAIviC,KAAQxd,CAAAA,sBAAAA,CAAwB,CAClC,IAAIg1D,MAAAA,CAAS7pD,QAAQnE,UAAU,CAC/B,GAAI,CAACmE,OAAAA,CAAQvE,QAAQ,EAAIuE,OAAAA,CAAQ1C,WAAW,EAAI0C,OAAAA,CAAQ7F,OAAO,CAAChsC,MAAM,GAAK,EAAG,CAC5E,GAAI07F,SAAWxkE,6BAAiCwkE,EAAAA,MAAAA,GAAWvkE,6BAA8B,CACvFukE,MAAAA,CAAS1kE,eACX,CAAO,KAAA,GAAI0kE,SAAWtkE,4BAAgCskE,EAAAA,MAAAA,GAAWrkE,4BAA6B,CAC5FqkE,MAAAA,CAASzkE,cACX,CACF,CACAmpD,GAAGub,aAAa,CAACh9F,OAAQyhF,EAAGwb,CAAAA,kBAAkB,CAAE,IAAI,CAACC,QAAQ,CAACH,MAAAA,CAAO,EACvE,CACA,GAAIx3C,MAAQvd,sBAAwB,CAAA,CAClCy5C,GAAGub,aAAa,CAACh9F,OAAQyhF,EAAG0b,CAAAA,kBAAkB,CAAE,IAAI,CAACD,QAAQ,CAAChqD,OAAAA,CAAQhE,UAAU,CAAC,EACnF,CACA,GAAIqW,KAAAA,CAAQtd,sBAAuB,CACjCw5C,EAAAA,CAAGub,aAAa,CAACh9F,MAAAA,CAAQyhF,GAAG2b,cAAc,CAAE,IAAI,CAACC,SAAS,CAACnqD,OAAQ9D,CAAAA,SAAS,CAAC,EAC/E,CACA,GAAImW,KAAQrd,CAAAA,qBAAAA,CAAuB,CACjCu5C,EAAGub,CAAAA,aAAa,CAACh9F,MAAQyhF,CAAAA,EAAAA,CAAG6b,cAAc,CAAE,IAAI,CAACD,SAAS,CAACnqD,QAAQ5D,SAAS,CAAC,EAC/E,CACA,GAAIiW,MAAQpd,qBAAuB,CAAA,CACjCs5C,GAAGub,aAAa,CAACh9F,OAAQyhF,EAAG8b,CAAAA,cAAc,CAAE,IAAI,CAACF,SAAS,CAACnqD,OAAAA,CAAQzD,SAAS,CAAC,EAC/E,CACA,GAAI8V,KAAAA,CAAQnd,4BAA6B,CACvCq5C,EAAAA,CAAGub,aAAa,CAACh9F,MAAAA,CAAQyhF,GAAG+b,oBAAoB,CAAEtqD,QAAQvD,cAAc,CAAG8xC,GAAGgc,sBAAsB,CAAGhc,GAAGoZ,IAAI,EAChH,CACA,GAAIt1C,KAAAA,CAAQld,yBAA0B,CACpCo5C,EAAAA,CAAGub,aAAa,CAACh9F,MAAAA,CAAQyhF,GAAGic,oBAAoB,CAAE,IAAI,CAACC,YAAY,CAACzqD,OAAQrD,CAAAA,YAAY,CAAC,EAC3F,CACA,GAAI0V,KAAQjd,CAAAA,sBAAAA,CAAwB,CAClC,MAAM7lC,GAAAA,CAAM,IAAI,CAAC0zF,2BAA2B,CAC5C,GAAI1zF,GAAAA,CAAK,CACPg/E,EAAGmc,CAAAA,aAAa,CAAC59F,MAAQyC,CAAAA,GAAAA,CAAIo7F,0BAA0B,CAAEppF,IAAAA,CAAKI,KAAK,CAAClU,IAAAA,CAAKmV,KAAK,CAACo9B,OAAAA,CAAQnD,WAAW,CAAG,CAAA,CAAA,CAAG,IAAI,CAACw0B,aAAa,CAC5H,EAAA,CACF,CACF,CACApwB,WAAWjB,OAAO,CAAEw0C,WAAW,CAAE,CAC/B,MAAMl9C,IAAO0I,CAAAA,OAAAA,CAAQ1I,IAAI,CACzB,GAAI,CAACA,IAAKg9C,CAAAA,UAAU,CAAE,CACpBh9C,IAAAA,CAAK78B,UAAU,CAAC,IAAI,CAAEulC,OACxB,EAAA,CACA,GAAI1I,IAAKq9C,CAAAA,mBAAmB,CAAG,CAAK30C,EAAAA,OAAAA,CAAQhC,YAAY,EAAIgC,OAAAA,CAAQjD,mBAAmB,CAAE,CACvF,IAAI,CAACisD,aAAa,CAACxU,WACnB,CAAA,CAAA,IAAI,CAACyU,WAAW,CAACjpD,SACjB,GAAI1I,IAAAA,CAAKq9C,mBAAmB,CAAE,CAC5B,IAAI,CAACiV,oBAAoB,CAAC5pD,OAC1B1I,CAAAA,CAAAA,KAAKq9C,mBAAmB,CAAG,EAC7B,CACA,GAAI30C,QAAQhC,YAAY,EAAIgC,QAAQjD,mBAAmB,CAAE,CACvDzF,IAAK+C,CAAAA,MAAM,CAAC,IAAI,CAAE2F,QAClBA,CAAAA,OAAAA,CAAQhC,YAAY,CAAG,KACvBgC,CAAAA,OAAQjD,CAAAA,mBAAmB,CAAG,MAChC,CACF,MAAO,CACL,IAAI,CAAC4sD,iBAAiB,CAAC3pD,OAASw0C,CAAAA,WAAAA,EAClC,CACF,CACAoW,kBAAkBp+C,aAAa,CAAE,CAC/B,IAAIz2C,GAAAA,CAAKo5E,IACT,MAAM0b,QAAAA,CAAWr+C,cAAcr+C,MAAM,CAAG,EACxC,GAAI08F,QAAAA,CAAU,CACZ90F,GAAM,CAAA,EAAA,CACN,IAAI,IAAI7H,CAAAA,CAAI,EAAGA,CAAIs+C,CAAAA,aAAAA,CAAcr+C,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAM6/C,YAAAA,CAAevB,aAAa,CAACt+C,CAAAA,CAAE,CACrC6H,GAAOg4C,EAAAA,YAAAA,CAAa7V,EAAE,CAAG6V,YAAAA,CAAa/5C,MAAM,CAACi1C,cAAa,CAE5DkmC,GAAAA,CAAM,IAAI,CAAC+Y,OAAO,CAACj4F,GAAG,CAAC8F,KACzB,CACA,GAAI,CAACo5E,GAAK,CAAA,CACR,MAAMZ,EAAK,CAAA,IAAI,CAACA,EAAE,CAClBY,IAAMZ,EAAGqc,CAAAA,iBAAiB,GAC1Brc,EAAGuc,CAAAA,eAAe,CAAC3b,GACnBZ,CAAAA,CAAAA,EAAAA,CAAGO,UAAU,CAACP,EAAAA,CAAGe,oBAAoB,CAAE,IAAA,CAAA,CACvC,IAAI,IAAIphF,CAAAA,CAAI,EAAGA,CAAIs+C,CAAAA,aAAAA,CAAcr+C,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAM6/C,YAAAA,CAAevB,aAAa,CAACt+C,CAAAA,CAAE,CACrCqgF,EAAAA,CAAGO,UAAU,CAACP,GAAGa,YAAY,CAAErhC,aAAazW,IAAI,CAACg3C,QAAQ,CACzD,CAAA,MAAM1mC,SAAWmG,YAAa/5C,CAAAA,MAAM,CAAC4zC,QAAQ,CAC7C,IAAI,IAAI6sC,CAAAA,CAAI,EAAGA,CAAI7sC,CAAAA,QAAAA,CAASz5C,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACtC,MAAMpkF,CAAAA,CAAIu3C,QAAQ,CAAC6sC,CAAAA,CAAE,CACrB,MAAMxD,GAAAA,CAAM96C,kBAAkB,CAAC9lC,CAAAA,CAAEmB,IAAI,CAAC,CACtC,GAAInB,CAAEq4C,CAAAA,KAAK,CAAE,CACX6lC,EAAAA,CAAGwc,oBAAoB,CAAC9Z,GAAAA,CAAK5gF,EAAEm4C,aAAa,CAAE,IAAI,CAACwiD,MAAM,CAAC36F,CAAEk4C,CAAAA,QAAQ,CAAC,CAAEl4C,CAAAA,CAAEo4C,MAAM,CAAEp4C,CAAAA,CAAEuL,MAAM,EAC3F,CAAA,KAAO,CACL2yE,EAAG0c,CAAAA,mBAAmB,CAACha,GAAK5gF,CAAAA,CAAAA,CAAEm4C,aAAa,CAAE,IAAI,CAACwiD,MAAM,CAAC36F,EAAEk4C,QAAQ,CAAC,CAAEl4C,CAAE/B,CAAAA,SAAS,CAAE+B,CAAEo4C,CAAAA,MAAM,CAAEp4C,CAAEuL,CAAAA,MAAM,EACvG,CACA2yE,EAAAA,CAAG2c,uBAAuB,CAACja,GAAAA,CAAAA,CAC3B,GAAIljC,YAAa/5C,CAAAA,MAAM,CAACy1C,UAAU,CAAE,CAClC8kC,EAAG4c,CAAAA,mBAAmB,CAACla,GAAK,CAAA,CAAA,EAC9B,CACF,CACF,CACA1C,GAAGuc,eAAe,CAAC,MACnBvc,EAAGO,CAAAA,UAAU,CAACP,EAAGa,CAAAA,YAAY,CAAE,IAC/B,CAAA,CAAA,GAAIyb,SAAU,CACZ,IAAI,CAAC3C,OAAO,CAACzxF,GAAG,CAACV,GAAAA,CAAKo5E,KACxB,CACF,CACA,OAAOA,GACT,CACAD,mBAAoB,CAClB,GAAI,IAAI,CAACiZ,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAAG,KAChB,IAAI,CAAC5Z,EAAE,CAACuc,eAAe,CAAC,IAC1B,EAAA,CACF,CACAM,UAAW38C,CAAAA,WAAW,CAAE,CACtB,MAAM8/B,GAAK,IAAI,CAACA,EAAE,CAClB,IAAIY,IACJ,GAAI,IAAI,CAAC3iC,aAAa,CAACr+C,MAAM,GAAK,CAAA,CAAG,CACnC,MAAM4/C,YAAAA,CAAe,IAAI,CAACvB,aAAa,CAAC,CAAE,CAAA,CAC1C,GAAI,CAACuB,YAAazW,CAAAA,IAAI,CAAC63C,GAAG,CAAE,CAC1BphC,YAAazW,CAAAA,IAAI,CAAC63C,GAAG,CAAG,IAAI,CAACyb,iBAAiB,CAAC,IAAI,CAACp+C,aAAa,EACnE,CACA2iC,IAAMphC,YAAazW,CAAAA,IAAI,CAAC63C,IAC1B,MAAO,CACLA,GAAAA,CAAM,IAAI,CAACyb,iBAAiB,CAAC,IAAI,CAACp+C,aAAa,EACjD,CACA,GAAI,IAAI,CAAC27C,QAAQ,GAAKhZ,GAAAA,CAAK,CACzB,IAAI,CAACgZ,QAAQ,CAAGhZ,GAAAA,CAChBZ,GAAGuc,eAAe,CAAC3b,KACrB,CACA,MAAMb,SAAW7/B,WAAcA,CAAAA,WAAAA,CAAYnX,IAAI,CAACg3C,QAAQ,CAAG,IAC3DC,CAAAA,EAAAA,CAAGO,UAAU,CAACP,EAAAA,CAAGe,oBAAoB,CAAEhB,QAAAA,EACzC,CACA+c,sBAAuB5sD,CAAAA,IAAI,CAAE+P,SAAS,CAAEC,WAAW,CAAEC,YAAY,CAAEC,YAAY,CAAE,CAC/E,MAAM4/B,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,GAAI//B,SAAAA,CAAU0wB,OAAO,CAAE,CACrB,MAAMlrE,MAASy6C,CAAAA,WAAAA,CAAYnX,IAAI,CAACi4C,QAAQ,CACxC,KAAM,CAAEmE,QAAQ,CAAEC,cAAc,CAAEC,gBAAgB,CAAE1lC,KAAK,CAAE,CAAGS,aAAarX,IAAI,CAC/E,GAAIoX,YAAe,CAAA,CAAA,CAAG,CACpB,IAAI,IAAIxgD,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5BqgF,GAAG+c,qBAAqB,CAAC7sD,KAAMi1C,QAAQ,CAACxlF,EAAE,CAAE8F,MAAAA,CAAQ2/E,cAAc,CAACzlF,CAAAA,CAAE,CAAE0lF,gBAAgB,CAAC1lF,EAAE,EAC5F,CACF,MAAO,CACL,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BqgF,EAAGgd,CAAAA,YAAY,CAAC9sD,IAAMi1C,CAAAA,QAAQ,CAACxlF,CAAE,CAAA,CAAE8F,OAAQ2/E,cAAc,CAACzlF,EAAE,EAC9D,CACF,CACF,CAAO,KAAA,CACL,KAAM,CAAEwlF,QAAQ,CAAEC,cAAc,CAAEC,gBAAgB,CAAE1lC,KAAK,CAAE,CAAGS,YAAAA,CAAarX,IAAI,CAC/E,GAAIoX,aAAe,CAAG,CAAA,CACpB,IAAI,IAAIxgD,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BqgF,EAAGid,CAAAA,mBAAmB,CAAC/sD,IAAMk1C,CAAAA,cAAc,CAACzlF,CAAE,CAAA,CAAEwlF,QAAQ,CAACxlF,CAAAA,CAAE,CAAE0lF,gBAAgB,CAAC1lF,EAAE,EAClF,CACF,MAAO,CACL,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BqgF,EAAGkd,CAAAA,UAAU,CAAChtD,IAAMk1C,CAAAA,cAAc,CAACzlF,CAAE,CAAA,CAAEwlF,QAAQ,CAACxlF,CAAAA,CAAE,EACpD,CACF,CACF,CACF,CACAqgD,IAAAA,CAAKC,SAAS,CAAEC,WAAW,CAAEC,YAAY,CAAEC,YAAY,CAAEt7C,KAAAA,CAAQ,IAAI,CAAEu7C,IAAAA,CAAO,IAAI,CAAE,CAClF,MAAM9C,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,GAAIA,MAAQ,CAAA,CACV,IAAI,CAAC4/C,cAAc,GACnB,GAAI,IAAI,CAACj/C,WAAW,CAAE,CACpB,MAAM8hC,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,GAAIl7E,KAAAA,CAAO,CACT,IAAI,CAAC+3F,UAAU,CAAC38C,WAAAA,EAClB,CACA,IAAI+lC,WAAAA,CAAc,EAClB,MAAM5jB,QAAAA,CAAW9kB,OAAOxU,IAAI,CAACs5B,QAAQ,CACrC,IAAI,IAAI1iE,CAAI,CAAA,CAAA,CAAGkY,IAAMwqD,QAASziE,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CACjD,MAAM4nD,QAAU8a,QAAQ,CAAC1iE,EAAE,CAC3B,IAAIy9F,aAAe71C,OAAQtf,CAAAA,OAAO,CAAC3gC,KAAK,CACxC,GAAI,CAAC81F,YAAAA,CAAc,CACjB,MAAM30D,WAAAA,CAAc8e,QAAQtf,OAAO,CAAChlC,IAAI,CACxC,GAAIwlC,cAAgB,gBAAkB,CAAA,CACpC20D,aAAezrD,iBAAkB,CAAA,IAAI,CAAE,OACzC,EAAA,CACA,GAAIlJ,WAAgB,GAAA,gBAAA,CAAkB,CACpC20D,YAAezrD,CAAAA,iBAAAA,CAAkB,IAAI,CAAE,MAAA,EACzC,CACA,GAAI,CAACyrD,aAAc,CACjBA,YAAAA,CAAezrD,kBAAkB,IAAI,CAAE,QACzC,CACF,CACA,GAAIyrD,YAAwB9xD,YAAAA,OAAAA,CAAS,CACnC,MAAMmG,OAAAA,CAAU2rD,aAChB,IAAI,CAAC1qD,UAAU,CAACjB,OAAAA,CAASw0C,aACzB,GAAI1+B,OAAAA,CAAQvf,IAAI,GAAKi+C,WAAa,CAAA,CAChCjG,GAAGqd,SAAS,CAAC91C,QAAQ85B,UAAU,CAAE4E,YACjC1+B,CAAAA,OAAAA,CAAQvf,IAAI,CAAGi+C,YACjB,CACAA,WACF,GAAA,CAAA,KAAO,CACL1+B,OAAQvY,CAAAA,KAAK,CAACpvC,MAAM,CAAG,EACvB,MAAM09F,WAAAA,CAAcF,aAAax9F,MAAM,CACvC,IAAI,IAAIsmF,CAAAA,CAAI,EAAGA,CAAIoX,CAAAA,WAAAA,CAAapX,IAAI,CAClC,MAAMz0C,QAAU2rD,YAAY,CAAClX,EAAE,CAC/B,IAAI,CAACxzC,UAAU,CAACjB,QAASw0C,WACzB1+B,CAAAA,CAAAA,QAAQvY,KAAK,CAACk3C,EAAE,CAAGD,WACnBA,CAAAA,WACF,GAAA,CACAjG,GAAGud,UAAU,CAACh2C,QAAQ85B,UAAU,CAAE95B,QAAQvY,KAAK,EACjD,CACF,CACA,MAAM4lB,SAAWrX,MAAOxU,CAAAA,IAAI,CAAC6rB,QAAQ,CACrC,IAAI,IAAIj1D,CAAAA,CAAI,EAAGkY,GAAM+8C,CAAAA,QAAAA,CAASh1D,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CACjD,MAAMi4C,OAAUgd,CAAAA,QAAQ,CAACj1D,CAAE,CAAA,CAC3B,MAAMsoC,OAAAA,CAAU2P,OAAQ3P,CAAAA,OAAO,CAC/B,MAAMu1D,cAAAA,CAAiB5lD,QAAQx5C,OAAO,CACtC,MAAMq/F,cAAiBx1D,CAAAA,OAAAA,CAAQsP,aAAa,CAACn5C,OAAO,CACpD,GAAIo/F,cAAAA,CAAevmD,QAAQ,GAAKwmD,cAAAA,CAAexmD,QAAQ,EAAIumD,cAAAA,CAAen/F,QAAQ,GAAKo/F,cAAAA,CAAep/F,QAAQ,CAAE,CAC9Gm/F,eAAevmD,QAAQ,CAAGwmD,eAAexmD,QACzCumD,CAAAA,cAAen/F,CAAAA,QAAQ,CAAGo/F,cAAep/F,CAAAA,QAAQ,CACjD,MAAMiJ,KAAAA,CAAQ2gC,QAAQ3gC,KAAK,CAC3B,GAAIA,KAAU,GAAA,IAAA,EAAQA,QAAUG,SAAW,CAAA,CACzC,IAAI,CAACi2F,cAAc,CAAC9lD,OAAQoC,CAAAA,QAAQ,CAAC,CAACpC,OAAAA,CAAStwC,OACjD,CACF,CACF,CACA,GAAI,IAAI,CAACwyF,uBAAuB,CAAE,CAChC9Z,EAAG2d,CAAAA,cAAc,CAAC3d,EAAG4d,CAAAA,yBAAyB,CAAE,CAAG,CAAA,IAAI,CAAC9D,uBAAuB,CAAC/wD,IAAI,CAACg3C,QAAQ,EAC7FC,EAAG6d,CAAAA,sBAAsB,CAAC7d,EAAG8d,CAAAA,MAAM,EACrC,CACA,MAAM5tD,IAAO,CAAA,IAAI,CAAC6tD,WAAW,CAAC99C,SAAU7oC,CAAAA,IAAI,CAAC,CAC7C,MAAMuoC,MAAQM,SAAUN,CAAAA,KAAK,CAC7B,GAAIS,YAAAA,CAAc,CAChB,GAAI,IAAI,CAACu0C,YAAY,CAAE,CACrB,MAAM5rD,IAAAA,CAAOqX,aAAarX,IAAI,CAC9B,GAAIkX,SAAU0wB,CAAAA,OAAO,CAAE,CACrB,MAAMlrE,OAASy6C,WAAYnX,CAAAA,IAAI,CAACi4C,QAAQ,CACxC,GAAI7gC,YAAe,CAAA,CAAA,CAAG,CACpB,IAAI,CAACw0C,YAAY,CAACqJ,+BAA+B,CAAC9tD,IAAMnH,CAAAA,IAAAA,CAAKo8C,QAAQ,CAAE,CAAA,CAAG1/E,OAAQsjC,IAAKq8C,CAAAA,cAAc,CAAE,CAAGr8C,CAAAA,IAAAA,CAAKs8C,gBAAgB,CAAE,CAAA,CAAGjlC,aAAaT,KAAK,EACxJ,MAAO,CACL,IAAI,CAACg1C,YAAY,CAACsJ,sBAAsB,CAAC/tD,IAAAA,CAAMnH,KAAKo8C,QAAQ,CAAE,EAAG1/E,MAAQsjC,CAAAA,IAAAA,CAAKq8C,cAAc,CAAE,CAAA,CAAGhlC,aAAaT,KAAK,EACrH,CACF,CAAO,KAAA,CACL,GAAIQ,YAAe,CAAA,CAAA,CAAG,CACpB,IAAI,CAACw0C,YAAY,CAACuJ,6BAA6B,CAAChuD,IAAMnH,CAAAA,IAAAA,CAAKq8C,cAAc,CAAE,CAAA,CAAGr8C,KAAKo8C,QAAQ,CAAE,EAAGp8C,IAAKs8C,CAAAA,gBAAgB,CAAE,CAAGjlC,CAAAA,YAAAA,CAAaT,KAAK,EAC9I,CAAA,KAAO,CACL,IAAI,CAACg1C,YAAY,CAACwJ,oBAAoB,CAACjuD,IAAMnH,CAAAA,IAAAA,CAAKq8C,cAAc,CAAE,CAAA,CAAGr8C,KAAKo8C,QAAQ,CAAE,EAAG/kC,YAAaT,CAAAA,KAAK,EAC3G,CACF,CACF,MAAO,CACL,IAAI,CAACm9C,sBAAsB,CAAC5sD,KAAM+P,SAAWC,CAAAA,WAAAA,CAAaC,aAAcC,YAC1E,EAAA,CACF,MAAO,CACL,GAAIH,UAAU0wB,OAAO,CAAE,CACrB,MAAMlrE,MAAAA,CAASy6C,YAAYnX,IAAI,CAACi4C,QAAQ,CACxC,MAAM3zE,OAAS4yC,SAAUwwB,CAAAA,IAAI,CAAGvwB,WAAYk+C,CAAAA,aAAa,CACzD,GAAIj+C,YAAAA,CAAe,EAAG,CACpB6/B,EAAAA,CAAG+c,qBAAqB,CAAC7sD,IAAAA,CAAMyP,MAAOl6C,MAAQ4H,CAAAA,MAAAA,CAAQ8yC,cACxD,CAAO,KAAA,CACL6/B,GAAGgd,YAAY,CAAC9sD,KAAMyP,KAAOl6C,CAAAA,MAAAA,CAAQ4H,MACvC,EAAA,CACF,CAAO,KAAA,CACL,MAAMvI,KAAQm7C,CAAAA,SAAAA,CAAUwwB,IAAI,CAC5B,GAAItwB,aAAe,CAAG,CAAA,CACpB6/B,GAAGid,mBAAmB,CAAC/sD,KAAMprC,KAAO66C,CAAAA,KAAAA,CAAOQ,cAC7C,CAAO,KAAA,CACL6/B,GAAGkd,UAAU,CAAChtD,KAAMprC,KAAO66C,CAAAA,KAAAA,EAC7B,CACF,CACF,CACA,GAAI,IAAI,CAACm6C,uBAAuB,CAAE,CAChC9Z,GAAGqe,oBAAoB,EAAA,CACvBre,GAAG2d,cAAc,CAAC3d,GAAG4d,yBAAyB,CAAE,EAAG,IACrD,EAAA,CACA,IAAI,CAACh5C,kBAAkB,GACzB,CACF,CACA,GAAIvE,IAAM,CAAA,CACR,IAAI,CAACZ,iBAAiB,GACxB,CACF,CACAl3C,MAAM6I,OAAO,CAAE,CACb,MAAMy/D,cAAAA,CAAiB,IAAI,CAACltB,mBAAmB,CAC/CvyC,OAAUA,CAAAA,OAAAA,EAAWy/D,eACrB,MAAM/sB,KAAAA,CAAQ1yC,QAAQ0yC,KAAK,EAAI+sB,eAAe/sB,KAAK,CACnD,GAAIA,KAAU,GAAA,CAAA,CAAG,CACf,MAAMk8B,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,GAAIl8B,KAAAA,CAAQ/tB,gBAAiB,CAC3B,MAAM6tB,MAAQxyC,OAAQwyC,CAAAA,KAAK,EAAIitB,cAAejtB,CAAAA,KAAK,CACnD,MAAM3kD,CAAAA,CAAI2kD,KAAK,CAAC,CAAA,CAAE,CAClB,MAAMpwC,CAAAA,CAAIowC,KAAK,CAAC,CAAA,CAAE,CAClB,MAAMp0C,CAAAA,CAAIo0C,KAAK,CAAC,CAAA,CAAE,CAClB,MAAMr0C,CAAAA,CAAIq0C,KAAK,CAAC,CAAA,CAAE,CAClB,MAAM5kD,CAAAA,CAAI,IAAI,CAAC65F,UAAU,CACzB,GAAI55F,CAAAA,GAAMD,EAAEC,CAAC,EAAIuU,IAAMxU,CAAEwU,CAAAA,CAAC,EAAIhE,CAAMxQ,GAAAA,CAAAA,CAAEwQ,CAAC,EAAID,CAAAA,GAAMvQ,EAAEuQ,CAAC,CAAE,CACpD,IAAI,CAACywE,EAAE,CAAC6Y,UAAU,CAAC55F,CAAGuU,CAAAA,CAAAA,CAAGhE,EAAGD,CAC5B,CAAA,CAAA,IAAI,CAACspF,UAAU,CAAC3wF,GAAG,CAACjJ,CAAAA,CAAGuU,EAAGhE,CAAGD,CAAAA,CAAAA,EAC/B,CACA,IAAI,CAAC2vC,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,EACvC,CACA,GAAIgO,KAAQ9tB,CAAAA,eAAAA,CAAiB,CAC3B,MAAM2U,KAAAA,CAAQv5B,QAAQu5B,KAAK,EAAIkmC,cAAelmC,CAAAA,KAAK,CACnD,GAAIA,QAAU,IAAI,CAAC6oB,UAAU,CAAE,CAC7B,IAAI,CAACwsB,EAAE,CAACxsB,UAAU,CAAC7oB,MACnB,CAAA,IAAI,CAAC6oB,UAAU,CAAG7oB,MACpB,CACA,IAAI,CAACyU,aAAa,CAAC7I,WAAWQ,UAAU,EAC1C,CACA,GAAI+M,KAAAA,CAAQ7tB,kBAAmB,CAC7B,MAAM4tB,QAAUzyC,OAAQyyC,CAAAA,OAAO,EAAIgtB,cAAehtB,CAAAA,OAAO,CACzD,GAAIA,OAAAA,GAAY,IAAI,CAACkQ,YAAY,CAAE,CACjC,IAAI,CAACisB,EAAE,CAACjsB,YAAY,CAAClQ,OAAAA,CACrB,CAAA,IAAI,CAACkQ,YAAY,CAAGlQ,QACtB,CACAm8B,EAAGsY,CAAAA,WAAW,CAAC,GACf,CAAA,CAAA,IAAI,CAACJ,qBAAqB,CAAG,GAC7B,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAC9B,CACAnY,GAAGz3E,KAAK,CAAC,IAAI,CAAC+1F,WAAW,CAACx6C,KAAM,CAAA,EAClC,CACF,CACAmgB,MAAAA,EAAS,CACP,IAAI,CAAC+b,EAAE,CAACue,KAAK,GACf,CACAC,UAAAA,CAAWxqF,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAEye,MAAM,CAAE,CAC7B,MAAMmuC,GAAK,IAAI,CAACA,EAAE,CAClBA,EAAAA,CAAGwe,UAAU,CAACxqF,CAAAA,CAAG0H,EAAGwD,CAAGkU,CAAAA,CAAAA,CAAG4sD,GAAGqH,IAAI,CAAErH,GAAGiB,aAAa,CAAEpvC,QACvD,CACA4sD,eAAAA,CAAgB36C,KAAK,CAAE46C,WAAW,CAAE,CAClC,MAAM1e,GAAK,IAAI,CAACA,EAAE,CAClB,MAAM2e,KAAO3e,EAAG4e,CAAAA,SAAS,CAAC5e,EAAG6e,CAAAA,0BAA0B,CAAE,CACzD,CAAA,CAAA,IAAI,CAAC56B,MAAM,EAAA,CACX,OAAO,IAAI2U,OAAAA,CAAQ,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC3B,SAASl9E,IACP,EAAA,CAAA,MAAMif,IAAM0+D,EAAG8e,CAAAA,cAAc,CAACH,IAAM76C,CAAAA,KAAAA,CAAO,GAC3C,GAAIxiC,GAAAA,GAAQ0+D,GAAG+e,eAAe,CAAE,CAC9Brf,UAAWr9E,CAAAA,IAAAA,CAAMq8F,aACnB,CAAO,KAAA,CACL1e,GAAGgf,UAAU,CAACL,MACd,GAAIr9E,GAAAA,GAAQ0+D,EAAGif,CAAAA,WAAW,CAAE,CAC1B1f,OAAO,IAAI11E,KAAAA,CAAM,qCACnB,CAAO,KAAA,CACLmgC,UACF,CACF,CACF,CACA3nC,IACF,GAAA,CAAA,CACF,CACA,MAAM68F,eAAAA,CAAgBlrF,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAEye,MAAM,CAAE,CACxC,MAAMmuC,GAAK,IAAI,CAACA,EAAE,CAClB,MAAMj3C,KAAO,IAAI,CAACqV,YAAY,CAACoH,WAAW,EAAEzc,IAC5C,CAAA,MAAMtjC,OAASsjC,IAAM29C,EAAAA,SAAAA,EAAa1G,GAAGqH,IAAI,CACzC,MAAM8X,SAAYp2D,CAAAA,IAAAA,EAAM69C,cAAgB5G,EAAGiB,CAAAA,aAAa,CACxD,MAAMme,GAAAA,CAAMpf,GAAG12B,YAAY,EAAA,CAC3B02B,GAAGO,UAAU,CAACP,GAAGqf,iBAAiB,CAAED,KACpCpf,EAAGQ,CAAAA,UAAU,CAACR,EAAGqf,CAAAA,iBAAiB,CAAExtD,MAAOzkC,CAAAA,UAAU,CAAE4yE,EAAGsf,CAAAA,WAAW,EACrEtf,EAAGwe,CAAAA,UAAU,CAACxqF,CAAG0H,CAAAA,CAAAA,CAAGwD,EAAGkU,CAAG3tB,CAAAA,MAAAA,CAAQ05F,UAAW,CAC7Cnf,CAAAA,CAAAA,EAAAA,CAAGO,UAAU,CAACP,EAAAA,CAAGqf,iBAAiB,CAAE,IACpC,CAAA,CAAA,MAAM,IAAI,CAACZ,eAAe,CAAC,CAAG,CAAA,EAAA,CAAA,CAC9Bze,GAAGO,UAAU,CAACP,GAAGqf,iBAAiB,CAAED,KACpCpf,EAAGuf,CAAAA,gBAAgB,CAACvf,EAAGqf,CAAAA,iBAAiB,CAAE,CAAGxtD,CAAAA,MAAAA,CAAAA,CAC7CmuC,GAAGO,UAAU,CAACP,GAAGqf,iBAAiB,CAAE,MACpCrf,EAAGC,CAAAA,YAAY,CAACmf,GAChB,CAAA,CAAA,OAAOvtD,MACT,CACAw7C,gBAAAA,CAAiB57C,OAAO,CAAEz9B,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAEnU,OAAO,CAAE,CACtD,MAAM6+B,IAAAA,CAAO7+B,QAAQ6+B,IAAI,EAAI,EAC7B,MAAMmO,YAAAA,CAAehtC,QAAQgtC,YAAY,EAAI,IAAI8G,YAAa,CAAA,CAC5DM,YAAa/T,OACb9G,CAAAA,KAAAA,CAAO,MACPsF,IAAMA,CAAAA,IACR,GACA,MAAM51B,MAAAA,CAAS,IAAIg2B,WAAY/F,CAAAA,YAAAA,CAAaM,gBAAgB,CAACtlB,KAAAA,CAAOC,OAAQ,CAAGksB,CAAAA,OAAAA,CAAQlE,OAAO,CAC9F,CAAA,CAAA,MAAM5zB,KAAOvI,OAAQuI,CAAAA,IAAI,EAAI,IAAKkjB,wBAAwB4U,OAAQlE,CAAAA,OAAO,CAAA,EAAGlzB,MAC5E,CAAA,CAAA,IAAI,CAACilC,eAAe,CAAClB,cACrB,IAAI,CAAC0B,gBAAgB,CAAC1B,YAAAA,CAAAA,CACtB,OAAO,IAAIw6B,OAAAA,CAAQ,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC3B,IAAI,CAAC2f,eAAe,CAAClrF,CAAG0H,CAAAA,CAAAA,CAAG4J,MAAOC,MAAQ5L,CAAAA,IAAAA,CAAAA,CAAM/N,IAAI,CAAE+N,OACpD,GAAI,IAAI,CAAC0jC,UAAU,CAAE,OACrB,GAAI,CAACjsC,QAAQgtC,YAAY,CAAE,CACzBA,YAAatV,CAAAA,OAAO,GACtB,CACAkB,OAAAA,CAAQrwB,MACV,CAAG6lF,CAAAA,CAAAA,KAAK,CAACjgB,MACX,EAAA,CAAA,CACF,CACA,MAAM+N,iBAAAA,CAAkB77C,OAAO,CAAEz9B,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAE5L,IAAI,CAAE,CAC1D,MAAMqmE,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,MAAMj3C,IAAAA,CAAO0I,QAAQ1I,IAAI,CACzB,MAAMtjC,MAASsjC,CAAAA,IAAAA,EAAM29C,WAAa1G,EAAGqH,CAAAA,IAAI,CACzC,MAAM8X,SAAAA,CAAYp2D,MAAM69C,YAAgB5G,EAAAA,EAAAA,CAAGiB,aAAa,CACxD,MAAMme,IAAMpf,EAAG12B,CAAAA,YAAY,GAC3B02B,EAAGO,CAAAA,UAAU,CAACP,EAAGyf,CAAAA,mBAAmB,CAAEL,GACtCpf,CAAAA,CAAAA,EAAAA,CAAGQ,UAAU,CAACR,EAAAA,CAAGyf,mBAAmB,CAAE9lF,IAAAA,CAAMqmE,GAAGK,WAAW,CAAA,CAC1DL,GAAG0a,WAAW,CAAC1a,GAAGyG,UAAU,CAAE19C,KAAKg9C,UAAU,CAAA,CAC7C/F,GAAG2M,aAAa,CAAC3M,GAAGyG,UAAU,CAAE,EAAGzyE,CAAG0H,CAAAA,CAAAA,CAAG4J,MAAOC,MAAQ9f,CAAAA,MAAAA,CAAQ05F,UAAW,CAC3Enf,CAAAA,CAAAA,EAAAA,CAAGO,UAAU,CAACP,EAAAA,CAAGyf,mBAAmB,CAAE,IAAA,CACtChuD,CAAAA,OAAQhC,CAAAA,YAAY,CAAG,KACvBgC,CAAAA,QAAQ3B,gBAAgB,CAAG,KAC3B,CAAM,MAAA,IAAI,CAAC2uD,eAAe,CAAC,EAAG,EAChC,EAAA,CACA7gB,mBAAmBC,KAAK,CAAE,CACxB,GAAI,IAAI,CAAC0a,eAAe,GAAK1a,MAAO,CAClC,IAAI,CAAC0a,eAAe,CAAG1a,MACvB,GAAIA,KAAAA,CAAO,CACT,IAAI,CAACmC,EAAE,CAAC4W,MAAM,CAAC,IAAI,CAAC5W,EAAE,CAACyY,wBAAwB,EACjD,MAAO,CACL,IAAI,CAACzY,EAAE,CAACsW,OAAO,CAAC,IAAI,CAACtW,EAAE,CAACyY,wBAAwB,EAClD,CACF,CACF,CACAiH,0BAAAA,CAA2B31D,EAAE,CAAE,CAC7B,GAAI,IAAI,CAAC+vD,uBAAuB,GAAK/vD,EAAAA,CAAI,CACvC,IAAI,CAAC+vD,uBAAuB,CAAG/vD,EAAAA,CAC/B,MAAMi2C,EAAK,CAAA,IAAI,CAACA,EAAE,CAClB,GAAIj2C,EAAI,CAAA,CACN,GAAI,CAAC,IAAI,CAAC0oD,QAAQ,CAAE,CAClB,IAAI,CAACA,QAAQ,CAAGzS,EAAAA,CAAG2f,uBAAuB,GAC5C,CACA3f,GAAG4f,qBAAqB,CAAC5f,GAAG6f,kBAAkB,CAAE,IAAI,CAACpN,QAAQ,EAC/D,CAAO,KAAA,CACLzS,GAAG4f,qBAAqB,CAAC5f,GAAG6f,kBAAkB,CAAE,MAClD,CACF,CACF,CACAC,SAAU94F,CAAAA,EAAE,CAAE,CACZ,GAAI,IAAI,CAACwxF,MAAM,GAAKxxF,EAAI,CAAA,CACtB,IAAI,CAACwxF,MAAM,CAAGxxF,EACd,CAAA,GAAIA,GAAI,CACN,IAAI,CAACg5E,EAAE,CAACsW,OAAO,CAAC,IAAI,CAACtW,EAAE,CAAC0Y,kBAAkB,EAC5C,CAAA,KAAO,CACL,IAAI,CAAC1Y,EAAE,CAAC4W,MAAM,CAAC,IAAI,CAAC5W,EAAE,CAAC0Y,kBAAkB,EAC3C,CACF,CACF,CACAqH,cAAenJ,CAAAA,MAAM,CAAE,CACrB,GAAI,IAAI,CAAC/yC,OAAO,GAAK+yC,MAAQ,CAAA,CAC3B,MAAM5W,EAAK,CAAA,IAAI,CAACA,EAAE,CAClB,GAAI4W,MAAQ,CAAA,CACV5W,GAAG4W,MAAM,CAAC5W,GAAGmX,YAAY,EAC3B,MAAO,CACLnX,EAAAA,CAAGsW,OAAO,CAACtW,EAAAA,CAAGmX,YAAY,EAC5B,CACA,IAAI,CAACtzC,OAAO,CAAG+yC,OACjB,CACF,CACAoJ,cAAe51F,CAAAA,IAAI,CAAEuxC,GAAG,CAAEpI,IAAI,CAAE,CAC9B,GAAI,IAAI,CAAC6jD,gBAAgB,GAAKhtF,IAAAA,EAAQ,IAAI,CAACktF,eAAe,GAAK37C,GAAO,EAAA,IAAI,CAAC67C,gBAAgB,GAAKjkD,IAAAA,EAAQ,IAAI,CAAC8jD,eAAe,GAAKjtF,IAAQ,EAAA,IAAI,CAACmtF,cAAc,GAAK57C,KAAO,IAAI,CAAC87C,eAAe,GAAKlkD,IAAAA,CAAM,CACrM,IAAI,CAACysC,EAAE,CAAC0X,WAAW,CAAC,IAAI,CAACwE,YAAY,CAAC9xF,IAAAA,CAAK,CAAEuxC,GAAKpI,CAAAA,IAAAA,CAClD,CAAA,IAAI,CAAC6jD,gBAAgB,CAAG,IAAI,CAACC,eAAe,CAAGjtF,IAC/C,CAAA,IAAI,CAACktF,eAAe,CAAG,IAAI,CAACC,cAAc,CAAG57C,GAC7C,CAAA,IAAI,CAAC67C,gBAAgB,CAAG,IAAI,CAACC,eAAe,CAAGlkD,KACjD,CACF,CACA0sD,mBAAAA,CAAoB71F,IAAI,CAAEuxC,GAAG,CAAEpI,IAAI,CAAE,CACnC,GAAI,IAAI,CAAC6jD,gBAAgB,GAAKhtF,MAAQ,IAAI,CAACktF,eAAe,GAAK37C,GAAAA,EAAO,IAAI,CAAC67C,gBAAgB,GAAKjkD,IAAM,CAAA,CACpG,MAAMysC,EAAK,CAAA,IAAI,CAACA,EAAE,CAClBA,GAAGkgB,mBAAmB,CAAClgB,GAAGmgB,KAAK,CAAE,IAAI,CAACjE,YAAY,CAAC9xF,IAAK,CAAA,CAAEuxC,IAAKpI,IAC/D,CAAA,CAAA,IAAI,CAAC6jD,gBAAgB,CAAGhtF,IACxB,CAAA,IAAI,CAACktF,eAAe,CAAG37C,GACvB,CAAA,IAAI,CAAC67C,gBAAgB,CAAGjkD,KAC1B,CACF,CACA6sD,kBAAmBh2F,CAAAA,IAAI,CAAEuxC,GAAG,CAAEpI,IAAI,CAAE,CAClC,GAAI,IAAI,CAAC8jD,eAAe,GAAKjtF,IAAAA,EAAQ,IAAI,CAACmtF,cAAc,GAAK57C,GAAO,EAAA,IAAI,CAAC87C,eAAe,GAAKlkD,KAAM,CACjG,MAAMysC,GAAK,IAAI,CAACA,EAAE,CAClBA,EAAAA,CAAGkgB,mBAAmB,CAAClgB,EAAAA,CAAG9hE,IAAI,CAAE,IAAI,CAACg+E,YAAY,CAAC9xF,KAAK,CAAEuxC,GAAAA,CAAKpI,KAC9D,CAAA,IAAI,CAAC8jD,eAAe,CAAGjtF,IACvB,CAAA,IAAI,CAACmtF,cAAc,CAAG57C,GACtB,CAAA,IAAI,CAAC87C,eAAe,CAAGlkD,KACzB,CACF,CACA8sD,mBAAAA,CAAoBxkD,IAAI,CAAEE,KAAK,CAAEE,KAAK,CAAEI,SAAS,CAAE,CACjD,GAAI,IAAI,CAACu7C,gBAAgB,GAAK/7C,IAAAA,EAAQ,IAAI,CAACi8C,iBAAiB,GAAK/7C,KAAS,EAAA,IAAI,CAACi8C,iBAAiB,GAAK/7C,OAAS,IAAI,CAAC47C,eAAe,GAAKh8C,IAAAA,EAAQ,IAAI,CAACk8C,gBAAgB,GAAKh8C,KAAS,EAAA,IAAI,CAACk8C,gBAAgB,GAAKh8C,MAAO,CACjN,IAAI,CAAC+jC,EAAE,CAACoY,SAAS,CAAC,IAAI,CAACkI,WAAW,CAACzkD,KAAK,CAAE,IAAI,CAACykD,WAAW,CAACvkD,MAAM,CAAE,IAAI,CAACukD,WAAW,CAACrkD,MAAM,CAC1F,CAAA,IAAI,CAAC27C,gBAAgB,CAAG,IAAI,CAACC,eAAe,CAAGh8C,IAC/C,CAAA,IAAI,CAACi8C,iBAAiB,CAAG,IAAI,CAACC,gBAAgB,CAAGh8C,KACjD,CAAA,IAAI,CAACi8C,iBAAiB,CAAG,IAAI,CAACC,gBAAgB,CAAGh8C,MACnD,CACA,GAAI,IAAI,CAACi8C,qBAAqB,GAAK77C,SAAa,EAAA,IAAI,CAAC87C,oBAAoB,GAAK97C,UAAW,CACvF,IAAI,CAAC2jC,EAAE,CAACsY,WAAW,CAACj8C,SAAAA,CACpB,CAAA,IAAI,CAAC67C,qBAAqB,CAAG77C,SAC7B,CAAA,IAAI,CAAC87C,oBAAoB,CAAG97C,UAC9B,CACF,CACAkkD,wBAAAA,CAAyB1kD,IAAI,CAAEE,KAAK,CAAEE,KAAK,CAAEI,SAAS,CAAE,CACtD,GAAI,IAAI,CAACu7C,gBAAgB,GAAK/7C,IAAAA,EAAQ,IAAI,CAACi8C,iBAAiB,GAAK/7C,KAAS,EAAA,IAAI,CAACi8C,iBAAiB,GAAK/7C,MAAO,CAC1G,IAAI,CAAC+jC,EAAE,CAACwgB,iBAAiB,CAAC,IAAI,CAACxgB,EAAE,CAACmgB,KAAK,CAAE,IAAI,CAACG,WAAW,CAACzkD,KAAK,CAAE,IAAI,CAACykD,WAAW,CAACvkD,MAAM,CAAE,IAAI,CAACukD,WAAW,CAACrkD,MAAM,CACjH,CAAA,IAAI,CAAC27C,gBAAgB,CAAG/7C,IACxB,CAAA,IAAI,CAACi8C,iBAAiB,CAAG/7C,KACzB,CAAA,IAAI,CAACi8C,iBAAiB,CAAG/7C,MAC3B,CACA,GAAI,IAAI,CAACi8C,qBAAqB,GAAK77C,SAAW,CAAA,CAC5C,IAAI,CAAC2jC,EAAE,CAACygB,mBAAmB,CAAC,IAAI,CAACzgB,EAAE,CAACmgB,KAAK,CAAE9jD,UAC3C,CAAA,IAAI,CAAC67C,qBAAqB,CAAG77C,UAC/B,CACF,CACAqkD,wBAAwB7kD,IAAI,CAAEE,KAAK,CAAEE,KAAK,CAAEI,SAAS,CAAE,CACrD,GAAI,IAAI,CAACw7C,eAAe,GAAKh8C,MAAQ,IAAI,CAACk8C,gBAAgB,GAAKh8C,KAAAA,EAAS,IAAI,CAACk8C,gBAAgB,GAAKh8C,KAAO,CAAA,CACvG,IAAI,CAAC+jC,EAAE,CAACwgB,iBAAiB,CAAC,IAAI,CAACxgB,EAAE,CAAC9hE,IAAI,CAAE,IAAI,CAACoiF,WAAW,CAACzkD,IAAK,CAAA,CAAE,IAAI,CAACykD,WAAW,CAACvkD,KAAM,CAAA,CAAE,IAAI,CAACukD,WAAW,CAACrkD,KAAM,CAAA,CAChH,CAAA,IAAI,CAAC47C,eAAe,CAAGh8C,IACvB,CAAA,IAAI,CAACk8C,gBAAgB,CAAGh8C,KACxB,CAAA,IAAI,CAACk8C,gBAAgB,CAAGh8C,MAC1B,CACA,GAAI,IAAI,CAACk8C,oBAAoB,GAAK97C,UAAW,CAC3C,IAAI,CAAC2jC,EAAE,CAACygB,mBAAmB,CAAC,IAAI,CAACzgB,EAAE,CAAC9hE,IAAI,CAAEm+B,SAAAA,CAC1C,CAAA,IAAI,CAAC87C,oBAAoB,CAAG97C,UAC9B,CACF,CACA6C,aAAAA,CAAcb,UAAU,CAAE,CACxB,MAAMsiD,iBAAoB,CAAA,IAAI,CAACtiD,UAAU,CACzC,GAAI,CAACsiD,iBAAAA,CAAkBvrF,MAAM,CAACipC,UAAAA,CAAAA,CAAa,CACzC,MAAM2hC,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,KAAM,CAAErrC,KAAK,CAAEY,OAAO,CAAEG,OAAO,CAAEF,cAAc,CAAEC,cAAc,CAAEE,cAAc,CAAEC,cAAc,CAAE,CAAGyI,WACpG,GAAIsiD,iBAAAA,CAAkBhsD,KAAK,GAAKA,KAAAA,CAAO,CACrC,GAAIA,KAAO,CAAA,CACTqrC,GAAG4W,MAAM,CAAC5W,GAAGuW,KAAK,EACpB,MAAO,CACLvW,EAAAA,CAAGsW,OAAO,CAACtW,EAAAA,CAAGuW,KAAK,EACrB,CACF,CACA,GAAIoK,iBAAAA,CAAkBprD,OAAO,GAAKA,OAAAA,EAAWorD,kBAAkBjrD,OAAO,GAAKA,QAAS,CAClF,MAAMkrD,gBAAkB,IAAI,CAACA,eAAe,CAC5C5gB,EAAAA,CAAG6gB,qBAAqB,CAACD,eAAe,CAACrrD,OAAQ,CAAA,CAAEqrD,eAAe,CAAClrD,OAAAA,CAAQ,EAC7E,CACA,GAAIirD,kBAAkBnrD,cAAc,GAAKA,gBAAkBmrD,iBAAkBlrD,CAAAA,cAAc,GAAKA,cAAkBkrD,EAAAA,iBAAAA,CAAkBhrD,cAAc,GAAKA,cAAAA,EAAkBgrD,kBAAkB/qD,cAAc,GAAKA,eAAgB,CAC5NoqC,EAAAA,CAAG8gB,iBAAiB,CAAC,IAAI,CAACC,oBAAoB,CAACvrD,eAAe,CAAE,IAAI,CAACurD,oBAAoB,CAACtrD,eAAe,CAAE,IAAI,CAACurD,oBAAoB,CAACrrD,eAAe,CAAE,IAAI,CAACqrD,oBAAoB,CAACprD,eAAe,EACjM,CACA,GAAI+qD,iBAAkB9qD,CAAAA,QAAQ,GAAKwI,UAAWxI,CAAAA,QAAQ,CAAE,CACtD,IAAI,CAACmqC,EAAE,CAAC2W,SAAS,CAACt4C,UAAAA,CAAWlJ,QAAQ,CAAEkJ,UAAAA,CAAWjJ,UAAU,CAAEiJ,UAAAA,CAAWhJ,SAAS,CAAEgJ,UAAAA,CAAW/I,UAAU,EAC3G,CACAqrD,kBAAkBjiG,IAAI,CAAC2/C,YACzB,CACF,CACAc,cAAclgD,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAED,CAAC,CAAE,CACxB,MAAMvQ,CAAAA,CAAI,IAAI,CAAC8/C,UAAU,CACzB,GAAI7/C,CAAAA,GAAMD,EAAEC,CAAC,EAAIuU,IAAMxU,CAAEwU,CAAAA,CAAC,EAAIhE,CAAMxQ,GAAAA,CAAAA,CAAEwQ,CAAC,EAAID,CAAAA,GAAMvQ,EAAEuQ,CAAC,CAAE,CACpD,IAAI,CAACywE,EAAE,CAAClhC,UAAU,CAAC7/C,CAAGuU,CAAAA,CAAAA,CAAGhE,EAAGD,CAC5BvQ,CAAAA,CAAAA,CAAAA,CAAEkJ,GAAG,CAACjJ,CAAAA,CAAGuU,EAAGhE,CAAGD,CAAAA,CAAAA,EACjB,CACF,CACAwvC,eAAAA,CAAgBC,YAAY,CAAEC,WAAW,CAAE,CACzC,GAAID,cAAgBC,WAAa,CAAA,CAC/B,IAAI,CAAC8gD,cAAc,CAAC,IAAA,CAAA,CACpB,GAAI/gD,YAAAA,GAAiBC,YAAa,CAChC,IAAI,CAAC+gD,cAAc,CAAChhD,aAAa50C,IAAI,CAAE40C,aAAarD,GAAG,CAAEqD,aAAa7C,QAAQ,CAAA,CAC9E,IAAI,CAACkkD,mBAAmB,CAACrhD,YAAanD,CAAAA,IAAI,CAAEmD,YAAajD,CAAAA,KAAK,CAAEiD,YAAa/C,CAAAA,KAAK,CAAE+C,YAAa3C,CAAAA,SAAS,EAC5G,CAAO,KAAA,CACL2C,eAAAA,YAAiBxD,CAAAA,iBAAAA,CAAkB3E,OAAO,CAC1C,CAAA,IAAI,CAACopD,mBAAmB,CAACjhD,aAAa50C,IAAI,CAAE40C,aAAarD,GAAG,CAAEqD,aAAa7C,QAAQ,CAAA,CACnF,IAAI,CAACokD,wBAAwB,CAACvhD,YAAanD,CAAAA,IAAI,CAAEmD,YAAajD,CAAAA,KAAK,CAAEiD,YAAa/C,CAAAA,KAAK,CAAE+C,YAAa3C,CAAAA,SAAS,CAC/G4C,CAAAA,WAAAA,GAAAA,YAAgBzD,iBAAkB3E,CAAAA,OAAO,EACzC,IAAI,CAACupD,kBAAkB,CAACnhD,WAAAA,CAAY70C,IAAI,CAAE60C,WAAAA,CAAYtD,GAAG,CAAEsD,WAAAA,CAAY9C,QAAQ,CAC/E,CAAA,IAAI,CAACukD,uBAAuB,CAACzhD,YAAYpD,IAAI,CAAEoD,YAAYlD,KAAK,CAAEkD,YAAYhD,KAAK,CAAEgD,YAAY5C,SAAS,EAC5G,CACF,CAAO,KAAA,CACL,IAAI,CAAC0jD,cAAc,CAAC,KACtB,EAAA,CACF,CACA3gD,aAAcd,CAAAA,UAAU,CAAE,CACxB,MAAM2iD,kBAAoB,IAAI,CAAC3iD,UAAU,CACzC,GAAI,CAAC2iD,iBAAkB7rF,CAAAA,MAAM,CAACkpC,UAAa,CAAA,CAAA,CACzC,MAAM0hC,EAAK,CAAA,IAAI,CAACA,EAAE,CAClB,MAAMr3C,KAAQ2V,CAAAA,UAAAA,CAAW3V,KAAK,CAC9B,GAAIs4D,kBAAkBt4D,KAAK,GAAKA,MAAO,CACrCq3C,EAAAA,CAAGkX,SAAS,CAACvuD,KAAAA,EACf,CACA,GAAI,CAAEv+B,IAAI,CAAE/H,IAAI,CAAE,CAAGi8C,UAAAA,CACrB,GAAI,CAACj8C,IAAAA,EAAQsmC,MAAO,CAClBtmC,IAAAA,CAAO,KACP+H,IAAOqtB,CAAAA,YACT,CACA,GAAIwpE,iBAAAA,CAAkB72F,IAAI,GAAKA,IAAAA,CAAM,CACnC41E,EAAGgX,CAAAA,SAAS,CAAC,IAAI,CAACkF,YAAY,CAAC9xF,IAAAA,CAAK,EACtC,CACA,GAAI62F,kBAAkB5+F,IAAI,GAAKA,IAAM,CAAA,CACnC,GAAIA,IAAAA,CAAM,CACR29E,EAAG4W,CAAAA,MAAM,CAAC5W,EAAG+W,CAAAA,UAAU,EACzB,CAAO,KAAA,CACL/W,GAAGsW,OAAO,CAACtW,GAAG+W,UAAU,EAC1B,CACF,CACA,KAAM,CAAEtgD,SAAS,CAAEE,cAAc,CAAE,CAAG2H,WACtC,GAAI7H,SAAAA,EAAaE,eAAgB,CAC/B,GAAI,CAAC,IAAI,CAACgiD,gBAAgB,CAAE,CAC1B,IAAI,CAACA,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAAC3Y,EAAE,CAAC4W,MAAM,CAAC,IAAI,CAAC5W,EAAE,CAAC4Y,mBAAmB,EAC5C,CACA5Y,GAAGkhB,aAAa,CAACvqD,eAAgBF,SACnC,EAAA,CAAA,KAAO,CACL,GAAI,IAAI,CAACkiD,gBAAgB,CAAE,CACzB,IAAI,CAACA,gBAAgB,CAAG,KAAA,CACxB,IAAI,CAAC3Y,EAAE,CAACsW,OAAO,CAAC,IAAI,CAACtW,EAAE,CAAC4Y,mBAAmB,EAC7C,CACF,CACAqI,iBAAAA,CAAkBviG,IAAI,CAAC4/C,UAAAA,EACzB,CACF,CACAe,WAAAA,CAAYd,QAAQ,CAAE,CACpB,GAAI,IAAI,CAACA,QAAQ,GAAKA,QAAU,CAAA,CAC9B,GAAIA,QAAa/nB,GAAAA,aAAAA,CAAe,CAC9B,IAAI,CAACwpD,EAAE,CAACsW,OAAO,CAAC,IAAI,CAACtW,EAAE,CAAC6W,SAAS,EACnC,CAAO,KAAA,CACL,GAAI,IAAI,CAACt4C,QAAQ,GAAK/nB,aAAAA,CAAe,CACnC,IAAI,CAACwpD,EAAE,CAAC4W,MAAM,CAAC,IAAI,CAAC5W,EAAE,CAAC6W,SAAS,EAClC,CACA,MAAM3mD,KAAO,IAAI,CAACixD,MAAM,CAAC5iD,QAAAA,CAAS,CAClC,GAAI,IAAI,CAACu4C,QAAQ,GAAK5mD,KAAM,CAC1B,IAAI,CAAC8vC,EAAE,CAAC8W,QAAQ,CAAC5mD,IAAAA,CACjB,CAAA,IAAI,CAAC4mD,QAAQ,CAAG5mD,KAClB,CACF,CACA,IAAI,CAACqO,QAAQ,CAAGA,SAClB,CACF,CACA0yB,UAAU1zB,MAAM,CAAEigC,aAAe,KAAK,CAAE,CACtC,GAAIjgC,MAAAA,GAAW,IAAI,CAACA,MAAM,CAAE,CAC1B,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAACY,kBAAkB,CAAGq/B,YAC1B,CAAA,IAAI,CAACt/B,WAAW,CAAGz2C,UACrB,CACF,CACA01F,cAAAA,EAAiB,CACf,KAAM,CAAE5/C,MAAM,CAAE,CAAG,IAAI,CACvB,KAAM,CAAExU,IAAI,CAAE,CAAGwU,MACjB,CAAA,GAAI,IAAI,CAACW,WAAW,GAAKz2C,SAAW,CAAA,CAClC,GAAI81C,MAAOsZ,CAAAA,MAAM,CAAE,CACjB,IAAI,CAAC3Y,WAAW,CAAG,MACrB,CAAO,KAAA,GAAI,CAACX,MAAOojB,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAACxiB,kBAAkB,CAAE,CAC3B,GAAIpV,KAAK87C,QAAQ,CAAC,IAAI,CAAG,CAAA,CACvB,GAAI,CAAC97C,IAAAA,CAAKu6C,QAAQ,CAAC,IAAI,CAAE/lC,MAAS,CAAA,CAAA,CAChCA,OAAOsZ,MAAM,CAAG,IAChB,CAAA,IAAI,CAAC3Y,WAAW,CAAG,MACrB,CACF,CAAA,KAAO,CACL,IAAI,CAACA,WAAW,CAAG,MACrB,CACF,CAAO,KAAA,CACL,GAAI,CAACnV,IAAAA,CAAKu6C,QAAQ,CAAC,IAAI,CAAE/lC,MAAS,CAAA,CAAA,CAChCA,OAAOsZ,MAAM,CAAG,IAChB,CAAA,IAAI,CAAC3Y,WAAW,CAAG,MACrB,CACF,CACF,CACF,CACA,GAAI,IAAI,CAACA,WAAW,GAAKz2C,SAAW,CAAA,CAClC,IAAI,CAACu4E,EAAE,CAACohB,UAAU,CAACr4D,KAAK64C,SAAS,CACjC,CAAA,IAAI,CAAC1jC,WAAW,CAAG,KACrB,CACF,CACAy0C,2BAAAA,EAA8B,CAC5B,MAAM3S,EAAAA,CAAK,IAAI,CAACA,EAAE,CAClB,IAAI,CAAC2Z,OAAO,CAACrtF,OAAO,CAAC,CAAC3C,IAAAA,CAAMnC,IAAK65F,MAC/BrhB,GAAAA,CAAAA,EAAAA,CAAGshB,iBAAiB,CAAC33F,IAAAA,EACvB,GACA,IAAI,CAACgwF,OAAO,CAACpxF,KAAK,GACpB,CACA,IAAI+4C,WAAWA,UAAU,CAAE,CACzB,GAAIA,UAAAA,CAAY,CACd,MAAM5D,MAAAA,CAAS,IAAI,CAACsiC,EAAE,CAACtiC,MAAM,CAC7BA,MAAAA,CAAO6jD,iBAAiB,GAC1B,CAAA,KAAO,CACL92F,QAAS+2F,CAAAA,cAAc,GACzB,CACF,CACA,IAAIlgD,UAAa,EAAA,CACf,OAAO,CAAC,CAAC72C,SAASg3F,iBACpB,CA5gDA/5F,WAAYg2C,CAAAA,MAAM,CAAEtsC,OAAU,CAAA,EAAE,CAAC,CAC/B,KAAK,CAACssC,MAAAA,CAAQtsC,SAAU,IAAI,CAACiiF,mBAAmB,CAAG,IAAA,CAAM,IAAI,CAACD,0BAA0B,CAAG,KAC3FhiF,CAAAA,OAAAA,CAAU,IAAI,CAAC2yC,WAAW,CAC1B,IAAI,CAAC7C,gBAAgB,EACrB,CAAA,IAAI,CAACw4C,gBAAgB,EACrB,CAAA,IAAI,CAAC/7C,WAAW,CAAG,KACnB,CAAA,IAAI,CAACi1C,mBAAmB,CAAI8O,QAC1BA,KAAMC,CAAAA,cAAc,GACpB,IAAI,CAACr4D,WAAW,EAChB,CAAA,IAAI,CAACzgC,IAAI,CAAC,cACZ,CACA,CAAA,IAAI,CAACgqF,uBAAuB,CAAG,IAC7B,CAAA,IAAI,CAAC/0C,cAAc,EAAA,CACnB,IAAI,CAACj1C,IAAI,CAAC,gBACZ,EAAA,CAAA,CACA,MAAM9G,EAAK,CAAA,OAAOC,YAAc,WAAeA,EAAAA,SAAAA,CAAUC,SAAS,CAClE,IAAI,CAACm0F,yBAAyB,CAAGr0F,EAAMA,EAAAA,EAAAA,CAAGwB,QAAQ,CAAC,aAAA,CAAA,GAAmBxB,EAAGwB,CAAAA,QAAQ,CAAC,MAAWxB,CAAAA,EAAAA,EAAAA,CAAGwB,QAAQ,CAAC,MAAA,CAAM,EAC/G,GAAI,IAAI,CAAC6yF,yBAAyB,CAAE,CAClChlF,OAAQ4yC,CAAAA,SAAS,CAAG,MACtB,CACA,GAAIhhD,QAASV,CAAAA,WAAW,GAAK,SAAW,CAAA,CACtC,MAAMP,EAAK,CAAA,OAAOC,YAAc,WAAcA,CAAAA,SAAAA,CAAUC,SAAS,CAAG,EAAA,CACpE,MAAMb,KAAQW,CAAAA,EAAAA,CAAGX,KAAK,CAAC,wBAAA,CAAA,CACvB,MAAMwgG,cAAiBxgG,CAAAA,KAAAA,CAAQA,KAAK,CAAC,CAAA,CAAE,CAAG,IAC1C,CAAA,GAAIwgG,eAAgB,CAClB,MAAMxjG,QAAU4oE,UAAW46B,CAAAA,cAAAA,CAAAA,CAC3B,MAAMC,gBAAmB7+F,CAAAA,QAAAA,CAASC,IAAI,GAAK,SAAA,GAAc7E,OAAW,EAAA,GAAA,EAAOA,UAAY,GAAE,CAAA,EAAM4E,SAASC,IAAI,GAAK,WAAa7E,OAAW,EAAA,GAAA,CACzI,GAAIyjG,gBAAAA,CAAkB,CACpBzwF,OAAAA,CAAQ4yC,SAAS,CAAG,MACtB,CACF,CACF,CACA,IAAI,CAACjB,mBAAmB,CAAG3xC,OAAQ4yC,CAAAA,SAAS,EAAI,KAChD5yC,CAAAA,QAAQ4yC,SAAS,CAAG,MACpB,MAAMg8B,EAAAA,CAAK5uE,QAAQ4uE,EAAE,EAAItiC,OAAOwmB,UAAU,CAAC,SAAU9yD,OACrD,CAAA,CAAA,GAAI,CAAC4uE,EAAI,CAAA,CACP,MAAM,IAAIn2E,KAAAA,CAAM,sBAClB,CACA,IAAI,CAACm2E,EAAE,CAAGA,EACV,CAAA,IAAI,CAACh9B,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACtB,WAAW,CAAG7b,kBACnB,IAAI,CAACktD,sBAAsB,CAAC,IAAA,CAAA,CAC5B,MAAM+O,QAAW9+F,CAAAA,QAAAA,CAASV,WAAW,GAAK,QAAA,CAC1C,MAAMy/F,QAAW/+F,CAAAA,QAAAA,CAASV,WAAW,GAAK,QAAA,CAC1C,MAAM0/F,KAAQh/F,CAAAA,QAAAA,CAASI,OAAO,EAAIpB,SAAAA,CAAUigG,UAAU,CAACr5F,OAAO,CAAC,KAAW,CAAA,GAAA,CAAC,CAC3E,CAAA,IAAI,CAACgyF,sCAAsC,CAAGmH,QAC9C,CAAA,IAAI,CAACG,uCAAuC,CAAGF,OAASF,QAAY,EAAA,CAAC1wF,QAAQyC,KAAK,CAClF6pC,OAAO97C,gBAAgB,CAAC,mBAAoB,IAAI,CAACgxF,mBAAmB,CAAE,KAAA,CAAA,CACtEl1C,OAAO97C,gBAAgB,CAAC,uBAAwB,IAAI,CAACixF,uBAAuB,CAAE,KAAA,CAAA,CAC9E,IAAI,CAACsB,oBAAoB,GACzB,IAAI,CAACS,sBAAsB,EAC3B,CAAA,IAAI,CAAC72C,qBAAqB,EAAA,CAC1B,IAAI,CAACC,uBAAuB,GAC5B,IAAI,CAACu9B,gBAAgB,CAAC,IAAA,CACtB,CAAA,IAAI,CAACrD,mBAAmB,CAAG,CAAC6pB,UAAY,OAAOthD,WAAAA,GAAgB,WAC/D,CAAA,IAAI,CAACwjC,aAAa,CAAG,IAAIvxE,GAAI,CAAA,CAC3BstE,GAAGmiB,UAAU,CACbniB,GAAGoiB,YAAY,CACfpiB,GAAGqiB,uBAAuB,CAC1BriB,GAAGsiB,cAAc,CACjBtiB,GAAGuiB,iBAAiB,CACpBviB,GAAGwiB,mBAAmB,CACtBxiB,GAAGyiB,UAAU,CACbziB,GAAG0iB,cAAc,CACjB1iB,GAAG2iB,uBAAuB,CAC1B3iB,GAAG4iB,gBAAgB,CACnB5iB,EAAG6iB,CAAAA,oBAAoB,CACvB7iB,EAAAA,CAAG8iB,6BAA6B,CACjC,CACD,CAAA,IAAI,CAAClH,SAAS,CAAG,CACf5b,GAAG+iB,MAAM,CACT/iB,GAAGgjB,aAAa,CAChBhjB,GAAGijB,eAAe,CACnB,CACD,IAAI,CAACrC,eAAe,CAAG,CACrB5gB,EAAG0W,CAAAA,QAAQ,CACX1W,EAAGkjB,CAAAA,aAAa,CAChBljB,EAAGmjB,CAAAA,qBAAqB,CACxBnjB,EAAGojB,CAAAA,GAAG,CACNpjB,EAAGqjB,CAAAA,GAAG,CACP,CACD,IAAI,CAACtC,oBAAoB,CAAG,CAC1B/gB,EAAAA,CAAGtiE,IAAI,CACPsiE,EAAAA,CAAGpiE,GAAG,CACNoiE,EAAAA,CAAGsjB,SAAS,CACZtjB,EAAAA,CAAGujB,mBAAmB,CACtBvjB,EAAAA,CAAGwjB,SAAS,CACZxjB,EAAAA,CAAGyjB,mBAAmB,CACtBzjB,EAAAA,CAAG0jB,SAAS,CACZ1jB,EAAAA,CAAG2jB,kBAAkB,CACrB3jB,EAAAA,CAAG4jB,mBAAmB,CACtB5jB,EAAAA,CAAG6jB,SAAS,CACZ7jB,EAAAA,CAAG8jB,mBAAmB,CACtB9jB,EAAAA,CAAG+jB,cAAc,CACjB/jB,EAAAA,CAAGgkB,wBAAwB,CAE7B,CAAA,IAAI,CAAChD,oBAAoB,CAAG,CAC1BhhB,EAAGtiE,CAAAA,IAAI,CACPsiE,EAAAA,CAAGpiE,GAAG,CACNoiE,EAAAA,CAAGsjB,SAAS,CACZtjB,EAAAA,CAAGujB,mBAAmB,CACtBvjB,EAAAA,CAAGwjB,SAAS,CACZxjB,EAAAA,CAAGyjB,mBAAmB,CACtBzjB,EAAAA,CAAG0jB,SAAS,CACZ1jB,EAAAA,CAAG2jB,kBAAkB,CACrB3jB,EAAAA,CAAG4jB,mBAAmB,CACtB5jB,EAAAA,CAAG6jB,SAAS,CACZ7jB,EAAAA,CAAG8jB,mBAAmB,CACtB9jB,EAAAA,CAAGikB,cAAc,CACjBjkB,EAAAA,CAAGkkB,wBAAwB,CAE7B,CAAA,IAAI,CAAChI,YAAY,CAAG,CAClBlc,GAAGmkB,KAAK,CACRnkB,GAAGokB,IAAI,CACPpkB,GAAGqkB,KAAK,CACRrkB,GAAGiX,MAAM,CACTjX,GAAGskB,OAAO,CACVtkB,GAAGukB,QAAQ,CACXvkB,GAAGwkB,MAAM,CACTxkB,GAAG2X,MAAM,CACV,CACD,IAAI,CAAC2I,WAAW,CAAG,CACjBtgB,EAAGqY,CAAAA,IAAI,CACPrY,EAAGtiE,CAAAA,IAAI,CACPsiE,EAAGykB,CAAAA,OAAO,CACVzkB,EAAG0kB,CAAAA,IAAI,CACP1kB,EAAG2kB,CAAAA,SAAS,CACZ3kB,EAAG4kB,CAAAA,IAAI,CACP5kB,EAAG6kB,CAAAA,SAAS,CACZ7kB,EAAAA,CAAG8kB,MAAM,CACV,CACD,IAAI,CAACxG,WAAW,CAAG,CACjB,CACAte,CAAAA,EAAAA,CAAG4Q,gBAAgB,CACnB5Q,EAAAA,CAAG6Q,gBAAgB,CACnB7Q,EAAAA,CAAG4Q,gBAAgB,CAAG5Q,EAAAA,CAAG6Q,gBAAgB,CACzC7Q,EAAAA,CAAG+kB,kBAAkB,CACrB/kB,EAAAA,CAAG+kB,kBAAkB,CAAG/kB,EAAAA,CAAG4Q,gBAAgB,CAC3C5Q,EAAAA,CAAG+kB,kBAAkB,CAAG/kB,EAAAA,CAAG6Q,gBAAgB,CAC3C7Q,EAAAA,CAAG+kB,kBAAkB,CAAG/kB,EAAAA,CAAG4Q,gBAAgB,CAAG5Q,EAAAA,CAAG6Q,gBAAgB,CAEnE,CAAA,IAAI,CAACsQ,MAAM,CAAG,CACZ,EACAnhB,EAAG9hE,CAAAA,IAAI,CACP8hE,EAAGmgB,CAAAA,KAAK,CACRngB,EAAGglB,CAAAA,cAAc,CAClB,CACD,IAAI,CAACvJ,QAAQ,CAAG,CACdzb,EAAAA,CAAG0Q,OAAO,CACV1Q,EAAAA,CAAGilB,MAAM,CACTjlB,EAAAA,CAAGklB,sBAAsB,CACzBllB,EAAAA,CAAGmlB,qBAAqB,CACxBnlB,EAAAA,CAAGolB,qBAAqB,CACxBplB,EAAAA,CAAGqlB,oBAAoB,CAEzB,CAAA,IAAI,CAACtH,WAAW,CAAG,CACjB/d,GAAG8d,MAAM,CACT9d,GAAGslB,KAAK,CACRtlB,GAAGulB,SAAS,CACZvlB,GAAGwlB,UAAU,CACbxlB,GAAGylB,SAAS,CACZzlB,GAAG0lB,cAAc,CACjB1lB,GAAG2lB,YAAY,CAChB,CACD,IAAI,CAAClJ,MAAM,CAAG,CACZzc,EAAG+K,CAAAA,IAAI,CACP/K,EAAGiB,CAAAA,aAAa,CAChBjB,EAAGkL,CAAAA,KAAK,CACRlL,EAAGkB,CAAAA,cAAc,CACjBlB,EAAGqL,CAAAA,GAAG,CACNrL,EAAGmB,CAAAA,YAAY,CACfnB,EAAGgK,CAAAA,KAAK,CACRhK,EAAG2J,CAAAA,UAAU,CACd,CACD,IAAI,CAACpF,aAAa,CAAG,EACrB,CAAA,IAAI,CAACA,aAAa,CAACvE,EAAAA,CAAG4lB,IAAI,CAAC,CAAGtjE,gBAC9B,CAAA,IAAI,CAACiiD,aAAa,CAACvE,GAAGqL,GAAG,CAAC,CAAG9oD,eAC7B,CAAA,IAAI,CAACgiD,aAAa,CAACvE,EAAGgK,CAAAA,KAAK,CAAC,CAAGxnD,iBAC/B,CAAA,IAAI,CAAC+hD,aAAa,CAACvE,EAAAA,CAAG6lB,UAAU,CAAC,CAAGpjE,gBACpC,CAAA,IAAI,CAAC8hD,aAAa,CAACvE,EAAAA,CAAG8lB,UAAU,CAAC,CAAGpjE,gBACpC,CAAA,IAAI,CAAC6hD,aAAa,CAACvE,GAAG+lB,UAAU,CAAC,CAAGpjE,gBACpC,CAAA,IAAI,CAAC4hD,aAAa,CAACvE,EAAGgmB,CAAAA,QAAQ,CAAC,CAAGpjE,iBAClC,CAAA,IAAI,CAAC2hD,aAAa,CAACvE,EAAAA,CAAGimB,QAAQ,CAAC,CAAGpjE,iBAClC,CAAA,IAAI,CAAC0hD,aAAa,CAACvE,GAAGkmB,QAAQ,CAAC,CAAGpjE,iBAClC,CAAA,IAAI,CAACyhD,aAAa,CAACvE,EAAGmmB,CAAAA,SAAS,CAAC,CAAGpjE,iBACnC,CAAA,IAAI,CAACwhD,aAAa,CAACvE,EAAAA,CAAGomB,SAAS,CAAC,CAAGpjE,iBACnC,CAAA,IAAI,CAACuhD,aAAa,CAACvE,GAAGqmB,SAAS,CAAC,CAAGpjE,iBACnC,CAAA,IAAI,CAACshD,aAAa,CAACvE,EAAGsmB,CAAAA,UAAU,CAAC,CAAGpjE,gBACpC,CAAA,IAAI,CAACqhD,aAAa,CAACvE,EAAAA,CAAGumB,UAAU,CAAC,CAAGpjE,gBACpC,CAAA,IAAI,CAACohD,aAAa,CAACvE,GAAGwmB,UAAU,CAAC,CAAGpjE,gBACpC,CAAA,IAAI,CAACmhD,aAAa,CAACvE,EAAGmiB,CAAAA,UAAU,CAAC,CAAG9+D,qBACpC,CAAA,IAAI,CAACkhD,aAAa,CAACvE,EAAAA,CAAGoiB,YAAY,CAAC,CAAG9+D,uBACtC,CAAA,IAAI,CAACihD,aAAa,CAACvE,GAAGmB,YAAY,CAAC,CAAGn9C,gBACtC,CAAA,IAAI,CAACugD,aAAa,CAACvE,EAAGymB,CAAAA,iBAAiB,CAAC,CAAGxiE,iBAC3C,CAAA,IAAI,CAACsgD,aAAa,CAACvE,EAAAA,CAAG0mB,iBAAiB,CAAC,CAAGxiE,iBAC3C,CAAA,IAAI,CAACqgD,aAAa,CAACvE,GAAG2mB,iBAAiB,CAAC,CAAGxiE,iBAC3C,CAAA,IAAI,CAACogD,aAAa,CAACvE,EAAGuiB,CAAAA,iBAAiB,CAAC,CAAG/+D,4BAC3C,CAAA,IAAI,CAAC+gD,aAAa,CAACvE,EAAAA,CAAGwiB,mBAAmB,CAAC,CAAG/+D,8BAC7C,CAAA,IAAI,CAAC8gD,aAAa,CAACvE,EAAAA,CAAG4iB,gBAAgB,CAAC,CAAG7+D,2BAC1C,CAAA,IAAI,CAACwgD,aAAa,CAACvE,GAAGyiB,UAAU,CAAC,CAAG/+D,qBACpC,CAAA,IAAI,CAAC6gD,aAAa,CAACvE,EAAGsiB,CAAAA,cAAc,CAAC,CAAGt9D,sBACxC,CAAA,IAAI,CAACu/C,aAAa,CAACvE,EAAAA,CAAGqiB,uBAAuB,CAAC,CAAGp9D,sBACjD,CAAA,IAAI,CAACs/C,aAAa,CAACvE,GAAG4mB,gBAAgB,CAAC,CAAG1hE,wBAC1C,CAAA,IAAI,CAACq/C,aAAa,CAACvE,EAAGqiB,CAAAA,uBAAuB,CAAC,CAAGl9D,wBACjD,CAAA,IAAI,CAACo/C,aAAa,CAACvE,EAAAA,CAAG0iB,cAAc,CAAC,CAAGt9D,sBACxC,CAAA,IAAI,CAACm/C,aAAa,CAACvE,GAAG2iB,uBAAuB,CAAC,CAAGt9D,sBACjD,CAAA,IAAI,CAACk/C,aAAa,CAACvE,EAAG6iB,CAAAA,oBAAoB,CAAC,CAAGv9D,4BAC9C,CAAA,IAAI,CAACi/C,aAAa,CAACvE,EAAAA,CAAG8iB,6BAA6B,CAAC,CAAGv9D,4BACvD,CAAA,IAAI,CAAC41D,YAAY,CAAG,EACpB,CAAA,IAAI,CAACA,YAAY,CAACnb,EAAGyG,CAAAA,UAAU,CAAC,CAAG,CACnC,CAAA,IAAI,CAAC0U,YAAY,CAACnb,EAAAA,CAAGsG,gBAAgB,CAAC,CAAG,CACzC,CAAA,IAAI,CAAC6U,YAAY,CAACnb,GAAGuG,UAAU,CAAC,CAAG,CACnC,CAAA,IAAIsgB,OAAQC,MAAQC,CAAAA,MAAAA,CAAQC,OAC5B,IAAIC,YACJ,CAAA,IAAI,CAACvJ,cAAc,CAAG,EAAE,CACxB,IAAI,CAACA,cAAc,CAACp7D,iBAAiB,CAAG,SAASsV,OAAO,CAAEtwC,KAAK,EAC7D,GAAIswC,OAAAA,CAAQtwC,KAAK,GAAKA,KAAAA,CAAO,CAC3B04E,EAAGqd,CAAAA,SAAS,CAACzlD,OAAQypC,CAAAA,UAAU,CAAE/5E,KACjCswC,CAAAA,CAAAA,QAAQtwC,KAAK,CAAGA,MAClB,CACF,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACn7D,eAAAA,CAAgB,CAAG,IAAI,CAACm7D,cAAc,CAACp7D,gBAAiB,CAC5E,CAAA,IAAI,CAACo7D,cAAc,CAACl7D,iBAAAA,CAAkB,CAAG,SAASoV,OAAO,CAAEtwC,KAAK,CAAA,CAC9D,GAAIswC,OAAQtwC,CAAAA,KAAK,GAAKA,KAAO,CAAA,CAC3B04E,GAAGknB,SAAS,CAACtvD,QAAQypC,UAAU,CAAE/5E,MACjCswC,CAAAA,OAAAA,CAAQtwC,KAAK,CAAGA,MAClB,CACF,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACj7D,gBAAiB,CAAA,CAAG,SAASmV,OAAO,CAAEtwC,KAAK,CAC7D2/F,CAAAA,YAAAA,CAAervD,QAAQtwC,KAAK,CAC5Bu/F,OAASv/F,KAAK,CAAC,EAAE,CACjBw/F,MAAAA,CAASx/F,KAAK,CAAC,CAAA,CAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAE,CAAA,GAAKJ,QAAUI,YAAY,CAAC,EAAE,GAAKH,MAAAA,CAAQ,CAC5D9mB,EAAGmnB,CAAAA,UAAU,CAACvvD,OAAQypC,CAAAA,UAAU,CAAE/5E,KAClC2/F,CAAAA,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGH,OACpB,CACF,CACA,CAAA,IAAI,CAACpJ,cAAc,CAACh7D,gBAAAA,CAAiB,CAAG,SAASkV,OAAO,CAAEtwC,KAAK,CAAA,CAC7D2/F,aAAervD,OAAQtwC,CAAAA,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,EAAE,CACjBy/F,MAAAA,CAASz/F,KAAK,CAAC,CAAA,CAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAE,CAAA,GAAKJ,QAAUI,YAAY,CAAC,EAAE,GAAKH,MAAAA,EAAUG,YAAY,CAAC,CAAA,CAAE,GAAKF,MAAQ,CAAA,CAC1F/mB,GAAGonB,UAAU,CAACxvD,QAAQypC,UAAU,CAAE/5E,MAClC2/F,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGH,MAClBG,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGF,OACpB,CACF,CACA,CAAA,IAAI,CAACrJ,cAAc,CAAC/6D,gBAAAA,CAAiB,CAAG,SAASiV,OAAO,CAAEtwC,KAAK,CAAA,CAC7D2/F,aAAervD,OAAQtwC,CAAAA,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,CAAE,CAAA,CACjBy/F,MAASz/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjB0/F,OAAS1/F,KAAK,CAAC,EAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAA,CAAE,GAAKJ,MAAUI,EAAAA,YAAY,CAAC,CAAE,CAAA,GAAKH,QAAUG,YAAY,CAAC,EAAE,GAAKF,MAAAA,EAAUE,YAAY,CAAC,CAAA,CAAE,GAAKD,MAAQ,CAAA,CACxHhnB,GAAGqnB,UAAU,CAACzvD,QAAQypC,UAAU,CAAE/5E,MAClC2/F,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGH,MAClBG,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGF,MAClBE,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGD,OACpB,CACF,CACA,CAAA,IAAI,CAACtJ,cAAc,CAAC96D,iBAAAA,CAAkB,CAAG,SAASgV,OAAO,CAAEtwC,KAAK,CAAA,CAC9D2/F,aAAervD,OAAQtwC,CAAAA,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,EAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAA,CAAE,GAAKJ,MAAUI,EAAAA,YAAY,CAAC,CAAE,CAAA,GAAKH,OAAQ,CAC5D9mB,EAAAA,CAAGsnB,UAAU,CAAC1vD,OAAAA,CAAQypC,UAAU,CAAE/5E,KAAAA,CAClC2/F,CAAAA,YAAY,CAAC,EAAE,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,EAAE,CAAGH,OACpB,CACF,CACA,CAAA,IAAI,CAACpJ,cAAc,CAAC36D,iBAAkB,CAAA,CAAG,IAAI,CAAC26D,cAAc,CAAC96D,iBAAkB,CAC/E,CAAA,IAAI,CAAC86D,cAAc,CAAC76D,iBAAAA,CAAkB,CAAG,SAAS+U,OAAO,CAAEtwC,KAAK,CAAA,CAC9D2/F,aAAervD,OAAQtwC,CAAAA,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,EAAE,CACjBy/F,MAAAA,CAASz/F,KAAK,CAAC,CAAA,CAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAE,CAAA,GAAKJ,QAAUI,YAAY,CAAC,EAAE,GAAKH,MAAAA,EAAUG,YAAY,CAAC,CAAA,CAAE,GAAKF,MAAQ,CAAA,CAC1F/mB,GAAGunB,UAAU,CAAC3vD,QAAQypC,UAAU,CAAE/5E,KAClC2/F,CAAAA,CAAAA,YAAY,CAAC,EAAE,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,EAAE,CAAGH,MAClBG,CAAAA,YAAY,CAAC,EAAE,CAAGF,OACpB,CACF,CACA,CAAA,IAAI,CAACrJ,cAAc,CAAC16D,iBAAkB,CAAA,CAAG,IAAI,CAAC06D,cAAc,CAAC76D,iBAAkB,CAC/E,CAAA,IAAI,CAAC66D,cAAc,CAAC56D,iBAAAA,CAAkB,CAAG,SAAS8U,OAAO,CAAEtwC,KAAK,CAAA,CAC9D2/F,aAAervD,OAAQtwC,CAAAA,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,EAAE,CACjBy/F,MAAAA,CAASz/F,KAAK,CAAC,CAAA,CAAE,CACjB0/F,MAAS1/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjB,GAAI2/F,YAAY,CAAC,EAAE,GAAKJ,MAAAA,EAAUI,YAAY,CAAC,CAAA,CAAE,GAAKH,MAAUG,EAAAA,YAAY,CAAC,CAAE,CAAA,GAAKF,QAAUE,YAAY,CAAC,EAAE,GAAKD,MAAAA,CAAQ,CACxHhnB,EAAGwnB,CAAAA,UAAU,CAAC5vD,OAAQypC,CAAAA,UAAU,CAAE/5E,KAClC2/F,CAAAA,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGH,MAClBG,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGF,MAClBE,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGD,OACpB,CACF,CACA,CAAA,IAAI,CAACtJ,cAAc,CAACz6D,kBAAkB,CAAG,IAAI,CAACy6D,cAAc,CAAC56D,kBAAkB,CAC/E,IAAI,CAAC46D,cAAc,CAACx6D,gBAAiB,CAAA,CAAG,SAAS0U,OAAO,CAAEtwC,KAAK,CAC7D04E,CAAAA,EAAAA,CAAGynB,gBAAgB,CAAC7vD,OAAAA,CAAQypC,UAAU,CAAE,KAAA,CAAO/5E,OACjD,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACv6D,gBAAiB,CAAA,CAAG,SAASyU,OAAO,CAAEtwC,KAAK,CAC7D04E,CAAAA,EAAAA,CAAG0nB,gBAAgB,CAAC9vD,OAAAA,CAAQypC,UAAU,CAAE,KAAA,CAAO/5E,OACjD,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACt6D,gBAAiB,CAAA,CAAG,SAASwU,OAAO,CAAEtwC,KAAK,CAC7D04E,CAAAA,EAAAA,CAAG2nB,gBAAgB,CAAC/vD,OAAQypC,CAAAA,UAAU,CAAE,KAAO/5E,CAAAA,KAAAA,EACjD,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACn6D,uBAAuB,CAAG,SAASqU,OAAO,CAAEtwC,KAAK,EACnE04E,EAAG4nB,CAAAA,UAAU,CAAChwD,OAAQypC,CAAAA,UAAU,CAAE/5E,KACpC,EAAA,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC/5D,qBAAAA,CAAsB,CAAG,SAASiU,OAAO,CAAEtwC,KAAK,CAAA,CAClE04E,GAAGmnB,UAAU,CAACvvD,QAAQypC,UAAU,CAAE/5E,OACpC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC95D,qBAAsB,CAAA,CAAG,SAASgU,OAAO,CAAEtwC,KAAK,CAClE04E,CAAAA,EAAAA,CAAGonB,UAAU,CAACxvD,OAAAA,CAAQypC,UAAU,CAAE/5E,KAAAA,EACpC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC75D,sBAAsB,CAAG,SAAS+T,OAAO,CAAEtwC,KAAK,EAClE04E,EAAGqnB,CAAAA,UAAU,CAACzvD,OAAQypC,CAAAA,UAAU,CAAE/5E,KACpC,EAAA,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC15D,gBAAAA,CAAiB,CAAG,SAAS4T,OAAO,CAAEtwC,KAAK,CAAA,CAC7D,GAAIswC,OAAQtwC,CAAAA,KAAK,GAAKA,KAAO,CAAA,CAC3B04E,GAAG6nB,UAAU,CAACjwD,QAAQypC,UAAU,CAAE/5E,MAClCswC,CAAAA,OAAAA,CAAQtwC,KAAK,CAAGA,MAClB,CACF,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACz5D,iBAAkB,CAAA,CAAG,SAAS2T,OAAO,CAAEtwC,KAAK,CAC9D2/F,CAAAA,YAAAA,CAAervD,QAAQtwC,KAAK,CAC5Bu/F,OAASv/F,KAAK,CAAC,EAAE,CACjBw/F,MAAAA,CAASx/F,KAAK,CAAC,CAAA,CAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAE,CAAA,GAAKJ,QAAUI,YAAY,CAAC,EAAE,GAAKH,MAAAA,CAAQ,CAC5D9mB,EAAG8nB,CAAAA,WAAW,CAAClwD,OAAQypC,CAAAA,UAAU,CAAE/5E,KACnC2/F,CAAAA,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAGH,OACpB,CACF,CACA,CAAA,IAAI,CAACpJ,cAAc,CAACx5D,kBAAkB,CAAG,SAAS0T,OAAO,CAAEtwC,KAAK,EAC9D2/F,YAAervD,CAAAA,OAAAA,CAAQtwC,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,EAAE,CACjBy/F,MAAAA,CAASz/F,KAAK,CAAC,CAAA,CAAE,CACjB,GAAI2/F,YAAY,CAAC,CAAE,CAAA,GAAKJ,QAAUI,YAAY,CAAC,EAAE,GAAKH,MAAAA,EAAUG,YAAY,CAAC,CAAA,CAAE,GAAKF,MAAQ,CAAA,CAC1F/mB,GAAG+nB,WAAW,CAACnwD,QAAQypC,UAAU,CAAE/5E,MACnC2/F,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGH,MAClBG,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGF,OACpB,CACF,CACA,CAAA,IAAI,CAACrJ,cAAc,CAACv5D,iBAAAA,CAAkB,CAAG,SAASyT,OAAO,CAAEtwC,KAAK,CAAA,CAC9D2/F,aAAervD,OAAQtwC,CAAAA,KAAK,CAC5Bu/F,MAASv/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjBw/F,OAASx/F,KAAK,CAAC,EAAE,CACjBy/F,MAAAA,CAASz/F,KAAK,CAAC,CAAA,CAAE,CACjB0/F,MAAS1/F,CAAAA,KAAK,CAAC,CAAE,CAAA,CACjB,GAAI2/F,YAAY,CAAC,CAAA,CAAE,GAAKJ,MAAUI,EAAAA,YAAY,CAAC,CAAE,CAAA,GAAKH,QAAUG,YAAY,CAAC,EAAE,GAAKF,MAAAA,EAAUE,YAAY,CAAC,CAAA,CAAE,GAAKD,MAAQ,CAAA,CACxHhnB,GAAGgoB,WAAW,CAACpwD,QAAQypC,UAAU,CAAE/5E,MACnC2/F,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGJ,MAClBI,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGH,MAClBG,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGF,MAClBE,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGD,OACpB,CACF,CACA,CAAA,IAAI,CAACtJ,cAAc,CAACt5D,oBAAAA,CAAqB,CAAG,SAASwT,OAAO,CAAEtwC,KAAK,CAAA,CACjE04E,GAAGud,UAAU,CAAC3lD,QAAQypC,UAAU,CAAE/5E,OACpC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACr5D,qBAAsB,CAAA,CAAG,SAASuT,OAAO,CAAEtwC,KAAK,CAClE04E,CAAAA,EAAAA,CAAGioB,WAAW,CAACrwD,OAAAA,CAAQypC,UAAU,CAAE/5E,KAAAA,EACrC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACp5D,qBAAAA,CAAsB,CAAG,IAAI,CAACo5D,cAAc,CAACt5D,oBAAAA,CAAqB,CACtF,IAAI,CAACs5D,cAAc,CAACn5D,uBAAuB,CAAG,SAASqT,OAAO,CAAEtwC,KAAK,EACnE04E,EAAGsnB,CAAAA,UAAU,CAAC1vD,OAAQypC,CAAAA,UAAU,CAAE/5E,KACpC,EAAA,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACl5D,sBAAAA,CAAuB,CAAG,SAASoT,OAAO,CAAEtwC,KAAK,CAAA,CACnE04E,GAAG8nB,WAAW,CAAClwD,QAAQypC,UAAU,CAAE/5E,OACrC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAACj5D,sBAAuB,CAAA,CAAG,IAAI,CAACi5D,cAAc,CAACn5D,sBAAuB,CACzF,CAAA,IAAI,CAACm5D,cAAc,CAACh5D,sBAAAA,CAAuB,CAAG,SAASkT,OAAO,CAAEtwC,KAAK,CAAA,CACnE04E,GAAGunB,UAAU,CAAC3vD,QAAQypC,UAAU,CAAE/5E,OACpC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC/4D,sBAAuB,CAAA,CAAG,SAASiT,OAAO,CAAEtwC,KAAK,CACnE04E,CAAAA,EAAAA,CAAG+nB,WAAW,CAACnwD,OAAAA,CAAQypC,UAAU,CAAE/5E,KAAAA,EACrC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC94D,uBAAuB,CAAG,IAAI,CAAC84D,cAAc,CAACh5D,uBAAuB,CACzF,IAAI,CAACg5D,cAAc,CAAC74D,sBAAuB,CAAA,CAAG,SAAS+S,OAAO,CAAEtwC,KAAK,CACnE04E,CAAAA,EAAAA,CAAGwnB,UAAU,CAAC5vD,OAAAA,CAAQypC,UAAU,CAAE/5E,KAAAA,EACpC,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC54D,uBAAuB,CAAG,SAAS8S,OAAO,CAAEtwC,KAAK,EACnE04E,EAAGgoB,CAAAA,WAAW,CAACpwD,OAAQypC,CAAAA,UAAU,CAAE/5E,KACrC,EAAA,CACA,CAAA,IAAI,CAACo2F,cAAc,CAAC34D,sBAAAA,CAAuB,CAAG,IAAI,CAAC24D,cAAc,CAAC74D,sBAAAA,CAAuB,CACzF,IAAI,CAAC64D,cAAc,CAAC55D,sBAAsB,CAAG,SAAS8T,OAAO,CAAEtwC,KAAK,EAClE04E,EAAG2nB,CAAAA,gBAAgB,CAAC/vD,OAAQypC,CAAAA,UAAU,CAAE,KAAO/5E,CAAAA,KAAAA,EACjD,CACA,CAAA,IAAI,CAAC4gG,iBAAiB,CAAG,IAAI,CAAChhG,KAAK,CAAC8iC,OAAO,CAAC,QAAA,CAAA,CAC5C,IAAI,CAAC0S,QAAQ,GACf,CA8nCF,CAEA,MAAMyrD,eACJp3D,CAAAA,MAAAA,CAAOmP,WAAW,CAAE,EACtB,CAEA,MAAMkoD,iBACJt/D,OAAQc,CAAAA,MAAM,CAAE,EAChBmW,KAAKnW,MAAM,CAAEwU,YAAY,CAAE,EAC3B9U,WAAc,EAAA,EACdU,OAAQJ,CAAAA,MAAM,CAAErrC,MAAM,CAAEqlD,KAAK,CAAEjZ,KAAK,CAAE,EACxC,CAEA,MAAM09D,UAAAA,CACJv/D,QAAQyU,MAAM,CAAE,EAChBjU,WAAAA,EAAc,EACdwU,cAAAA,CAAelU,MAAM,CAAE2T,MAAM,CAAE,EACjC,CAEA,MAAM+qD,WAAAA,CACJx/D,QAAQc,MAAM,CAAE,EAChB8C,eAAAA,CAAgBC,IAAI,CAAE,EACtBrD,WAAc,EAAA,EAChB,CAEA,MAAMi/D,iBACJz/D,OAAQc,CAAAA,MAAM,CAAE,EAChBmH,OAAOyO,YAAY,CAAE,EACvB,CAEA,MAAMgpD,gBACJv4F,CAAAA,GAAAA,CAAItQ,CAAC,CAAE+2E,kBAAkB,CAAEC,aAAa,CAAEC,kBAAkB,CAAE,EAChE,CAEA,MAAM6xB,2BAA2BhsD,cAgB/B3T,CAAAA,OAAAA,EAAU,CACR,KAAK,CAACA,UACR,CACAuuC,cAAAA,EAAiB,CACf,IAAI,CAACqxB,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACnvF,SAAS,CAAG,OACjB,CAAA,IAAI,CAACw0D,YAAY,CAAG,OACpB,CAAA,IAAI,CAAC3qB,UAAU,CAAG,CAClB,CAAA,IAAI,CAACm0B,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACE,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,aAAa,CAAG,IACrB,CAAA,IAAI,CAACx0B,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAAC5B,aAAa,CAAG,CACrB,CAAA,IAAI,CAACuhB,aAAa,CAAG,EACrB,CAAA,IAAI,CAACtf,sBAAsB,CAAG,KAC9B,CAAA,IAAI,CAACw0B,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACh7B,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACyF,0BAA0B,CAAG,IAClC,CAAA,IAAI,CAACw1B,mBAAmB,CAAG,MAC7B,CACAx7B,UAAW,CACT,KAAK,CAACA,QACR,GAAA,CACAsF,YAAa,CACX,KAAK,CAACA,UACR,GAAA,CACAE,UAAW,CACT,KAAK,CAACA,QACR,GAAA,CACAi4C,aAAc,EACdY,WAAY,EACZyD,WAAWxqF,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAEye,MAAM,CAAE,EAC/B4G,sBAAuB+G,CAAAA,YAAY,CAAE/5C,MAAM,CAAE,CAC3C,OAAO,IAAI8iG,iBAAiB/oD,YAAc/5C,CAAAA,MAAAA,CAC5C,CACAw2E,qBAAsB/7B,CAAAA,WAAW,CAAE,CACjC,OAAO,IAAIioD,eAAgBjoD,CAAAA,WAAAA,CAC7B,CACA4uB,gBAAiBvxB,CAAAA,MAAM,CAAE,CACvB,OAAO,IAAI8qD,UAAW9qD,CAAAA,MAAAA,CACxB,CACAxR,iBAAkB0F,CAAAA,OAAO,CAAE,CACzB,OAAO,IAAI62D,WAAY72D,CAAAA,OAAAA,CACzB,CACAkU,sBAAuBvH,CAAAA,YAAY,CAAE,CACnC,OAAO,IAAIgqD,gBAAiBhqD,CAAAA,YAAAA,CAC9B,CACA89B,qBAAsB97B,CAAAA,YAAY,CAAE,CAClC,OAAO,IAAIooD,gBACb,CACAxoD,KAAKC,SAAS,CAAEC,WAAW,CAAEC,YAAY,CAAEC,YAAY,CAAEt7C,MAAQ,IAAI,CAAEu7C,KAAO,IAAI,CAAE,EACpF4wB,SAAAA,CAAU1zB,MAAM,CAAEigC,YAAAA,CAAe,KAAK,CAAE,EACxCt+B,aAAcb,CAAAA,UAAU,CAAE,EAC1Be,cAAcd,UAAU,CAAE,EAC1BS,eAAAA,CAAgBC,YAAY,CAAEC,WAAW,CAAE,EAC3CE,cAAclgD,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAED,CAAC,CAAE,EAC1B8vC,WAAAA,CAAYd,QAAQ,CAAE,EACtBq/B,kBAAmBC,CAAAA,KAAK,CAAE,EAC1B7/B,yBAA0B,CACxB,KAAK,CAACA,uBAAAA,GACR,CACAz1C,KAAAA,CAAM6I,OAAO,CAAE,EACfiU,WAAYrR,CAAAA,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,EACxBkrD,WAAWtqE,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,EACvB0yB,gBAAAA,CAAiBvV,MAAM,CAAE6zB,IAAI,CAAExgB,KAAK,CAAEjZ,KAAK,CAAE,CAC3C,OAAO,IACT,CAnFAjjC,YAAYg2C,MAAM,CAAEtsC,QAAU,EAAE,CAAC,CAC/B,KAAK,CAACssC,MAAQtsC,CAAAA,OAAAA,CAAAA,CACdA,QAAU,IAAI,CAAC2yC,WAAW,CAC1B,IAAI,CAAC4kD,MAAM,CAAG,IACd,CAAA,IAAI,CAACjnD,WAAW,CAAG3b,eACnB,CAAA,IAAI,CAACyc,OAAO,CAAG,CACf,CAAA,IAAI,CAACM,UAAU,CAAG,IAAIoC,YAAAA,CAAa,CACjCjiD,IAAM,CAAA,aAAA,CACNsmC,eAAgB,IAAI,CACpBoB,MAAO,IAAI,CAACoZ,WAAW,CAACpZ,KAAK,CAC7BkZ,OAAAA,CAAS,IAAI,CAAC83B,eAAe,CAC7Bn5B,OAAAA,CAAS,IAAI,CAACA,OAAO,CAEvB,CAAA,CAAA,IAAI,CAAC60B,cAAc,GACrB,CAsEF,CAEA,SAASuxB,qBAAqBlrD,MAAM,CAAEtsC,QAAU,EAAE,EAChD,MAAMy3F,WAAAA,CAAcz3F,QAAQy3F,WAAW,EAAI,EAAE,CAC7C,GAAI,CAACA,WAAYtlG,CAAAA,QAAQ,CAACsiC,iBAAoB,CAAA,CAAA,CAC5CgjE,YAAYpoG,IAAI,CAAColC,mBACnB,CACA,GAAI,CAACgjE,WAAYtlG,CAAAA,QAAQ,CAACwiC,eAAkB,CAAA,CAAA,CAC1C8iE,YAAYpoG,IAAI,CAACslC,iBACnB,CACA,GAAI/iC,SAASI,OAAO,EAAI,CAAC,CAACpB,SAAAA,CAAU8mG,EAAE,CAAE,CAAA,IACtC13F,QAAAA,CAAAA,CAAAA,QAAAA,CAAAA,SAAQ4nE,YAAR5nE,GAAAA,QAAAA,CAAQ4nE,aAAiB,IAC3B,EAAA,CACA,MAAM+vB,iBAAoB,CAAA,EAAE,CAC5B,IAAI,IAAIppG,EAAI,CAAGA,CAAAA,CAAAA,CAAIkpG,YAAYjpG,MAAM,CAAED,IAAI,CACzC,MAAM8hD,WAAaonD,WAAW,CAAClpG,EAAE,CACjC,GAAI8hD,UAAe3b,GAAAA,iBAAAA,EAAqBnkC,MAAQK,EAAAA,SAAAA,EAAWqqE,IAAK,CAC9D08B,iBAAAA,CAAkBtoG,IAAI,CAAC,IAAA,CACrB,MAAMmpC,MAAS,CAAA,IAAIstC,qBAAqBx5B,MAAQtsC,CAAAA,OAAAA,CAAAA,CAChD,OAAOw4B,MAAOyuC,CAAAA,UAAU,CAACjnE,OAAQknE,CAAAA,UAAU,CAAElnE,OAAQmnE,CAAAA,QAAQ,CAC/D,CACF,EAAA,CACA,GAAI92B,UAAe5b,GAAAA,iBAAAA,CAAmB,CACpCkjE,iBAAkBtoG,CAAAA,IAAI,CAAC,IACrB,CAAA,OAAO,IAAI+xF,mBAAoB90C,CAAAA,MAAAA,CAAQtsC,QACzC,CACF,EAAA,CACA,GAAIqwC,UAAe1b,GAAAA,eAAAA,CAAiB,CAClCgjE,iBAAkBtoG,CAAAA,IAAI,CAAC,IACrB,CAAA,OAAO,IAAIgoG,kBAAmB/qD,CAAAA,MAAAA,CAAQtsC,QACxC,CACF,EAAA,CACF,CACA,OAAO,IAAIwnE,QAAQ,CAAC5uC,OAAAA,CAASu1C,UAC3B,IAAIypB,OAAAA,CAAU,EACd,MAAMC,IAAAA,CAAO,KACX,GAAID,OAAAA,EAAWD,kBAAkBnpG,MAAM,CAAE,CACvC2/E,MAAO,CAAA,IAAI11E,MAAM,oCACnB,CAAA,EAAA,CAAA,KAAO,CACL+uE,OAAQ5uC,CAAAA,OAAO,CAAC++D,iBAAiB,CAACC,UAAU,EAAIp9F,CAAAA,CAAAA,IAAI,CAAC,MAACg+B,EAAAA,CACpD,GAAIA,MAAQ,CAAA,CACVI,QAAQJ,MACV,EAAA,CAAA,KAAO,CACLq/D,IACF,GAAA,CACF,GAAGzJ,KAAK,CAAC,GACPpzF,EAAAA,CAAAA,OAAAA,CAAQ88F,GAAG,CAAC19F,GAAAA,CAAAA,CACZy9F,OACF,CACF,EAAA,CACF,EACAA,IACF,GAAA,CAAA,CACF,CAEA,MAAME,gBAAAA,CACJzhG,aAAa,CACX,IAAI,CAACugC,OAAO,CAAG,KACjB,CACF,CACA,MAAMmhE,OAYJC,CAAAA,YAAAA,CAAapmG,IAAI,CAAEqE,KAAK,CAAE,CACxB,IAAIgiG,MAAQ,IAAI,CAACC,UAAU,CAAC7nG,GAAG,CAACuB,IAChC,CAAA,CAAA,GAAI,CAACqmG,KAAO,CAAA,CACVA,MAAQ,IAAIH,gBACZG,CAAAA,KAAMrhE,CAAAA,OAAO,CAAG,IAAI,CAAC2B,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC/mC,MAC1C,IAAI,CAACsmG,UAAU,CAACrhG,GAAG,CAACjF,IAAMqmG,CAAAA,KAAAA,EAC5B,CACAA,KAAMhiG,CAAAA,KAAK,CAAGA,MAChB,CACA6qF,aAAalvF,IAAI,CAAE,CACjB,OAAO,IAAI,CAACsmG,UAAU,CAAC7nG,GAAG,CAACuB,IAAAA,CAAAA,EAAOqE,KACpC,CACAkiG,eAAgBvmG,CAAAA,IAAI,CAAE,CACpB,IAAI,CAACsmG,UAAU,CAAC/gG,MAAM,CAACvF,IAAAA,EACzB,CACA07E,eAAkB,EAAA,CAChB,IAAK,KAAM,EAAG2qB,MAAM,GAAI,IAAI,CAACC,UAAU,CAAC,CACtCD,KAAMrhE,CAAAA,OAAO,CAACqP,QAAQ,CAACgyD,MAAMhiG,KAAK,EACpC,CACF,CACAmiG,aAAAA,CAAcz1F,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACrB,IAAI,CAAC+iE,MAAM,CAAG5qE,CACd,CAAA,IAAI,CAAC6qE,MAAM,CAAGnjE,CACd,CAAA,IAAI,CAACojE,MAAM,CAAGjjE,EAChB,CAnCAnU,WAAY6hC,CAAAA,cAAc,CAAEgU,MAAM,CAAEt6C,KAAO,SAAS,CAAC,CACnD,IAAI,CAACs6C,MAAM,CAAG,IACd,CAAA,IAAI,CAACgsD,UAAU,CAAG,IAAIxhG,GACtB,CAAA,IAAI,CAAC62E,MAAM,CAAG,CACd,CAAA,IAAI,CAACh1C,MAAM,CAAGL,cACd,CAAA,IAAI,CAACgU,MAAM,CAAGA,MACd,CAAA,IAAI,CAACt6C,IAAI,CAAGA,KACZ,GAAIsmC,cAAAA,CAAe8Z,eAAe,CAAE,CAClC,IAAI,CAACta,IAAI,CAAGQ,cAAe4yC,CAAAA,iBAAiB,CAAC,IAAI,EACnD,CACF,CA0BF,CAEA,MAAMutB,YACJ,CAAA,IAAIz1B,UAAW,CACb,OAAO,IAAI,CAAC01B,SAAS,CAEvB,IAAIhqD,OAAQ,CACV,OAAO,IAAI,CAACiqD,MAAM,CAWpB9gE,OAAAA,EAAU,CACR,IAAI,CAACC,IAAI,EAAED,OAAAA,IACX,CAAA,IAAI,CAACC,IAAI,CAAG,KACd,CACAsgB,QAAS4qB,CAAAA,QAAQ,CAAE,CACjB,IAAI,CAAC01B,SAAS,CAAG11B,QACjB,CAAA,IAAI,CAAClrC,IAAI,CAACsgB,QAAQ,GAAG4qB,QAAAA,EACvB,CACAhkE,GAAItQ,CAAAA,CAAC,CAAE+2E,kBAAkB,CAAEC,aAAa,CAAEC,kBAAkB,CAAElG,UAAa,CAAA,CAAC,CAAEmG,aAAgB,CAAA,CAAC,CAAE,CAC/F,IAAI,CAAC9tC,IAAI,CAAC94B,GAAG,CAACtQ,CAAG+2E,CAAAA,kBAAAA,CAAoBC,cAAeC,kBAAoBlG,CAAAA,UAAAA,CAAYmG,eACtF,CACA9jC,MAAAA,CAAO4M,KAAK,CAAE,CACZ,IAAI,CAACiqD,MAAM,CAAGjqD,KACd,CAAA,IAAI,CAAC5W,IAAI,CAACgK,MAAM,GAAG4M,OACrB,CAvBAj4C,WAAAA,CAAYkiC,MAAM,CAAE07C,cAAAA,CAAiB,CAAC,CAAC,CACrC,IAAI,CAACqkB,SAAS,CAAG,CACjB,CAAA,IAAI,CAAC5gE,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC6gE,MAAM,CAAG,CACd,CAAA,IAAI,CAACxsB,SAAS,CAAG,CACjB,CAAA,IAAI,CAACxzC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC07C,cAAc,CAAGA,cACtB,CAAA,IAAI,CAACv8C,IAAI,CAAGa,MAAOsyC,CAAAA,qBAAqB,CAAC,IAAI,EAC/C,CAgBF,CAEA,IAAI2tB,KAAO,CACX,CAAA,MAAMC,YAmBJhhE,OAAU,EAAA,CACR,MAAMc,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM3/B,GAAM2/B,CAAAA,MAAAA,CAAOmO,OAAO,CAACnvC,OAAO,CAAC,IAAI,CAAA,CACvC,GAAIqB,GAAQ,GAAA,CAAC,EAAG,CACd2/B,MAAAA,CAAOmO,OAAO,CAACtvC,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC7B,CACA,GAAI,IAAI,CAAC2/B,MAAM,CAACsW,WAAW,GAAK,IAAI,CAAE,CACpC,IAAI,CAACtW,MAAM,CAACsW,WAAW,CAAG,KAC5B,CACA,GAAI,IAAI,CAACnX,IAAI,CAACiP,WAAW,CAAE,CACzB,IAAI,CAACjP,IAAI,CAACD,OAAO,CAACc,QAClB,IAAI,CAAC6B,sBAAsB,CAAC7B,MAAAA,CAAO8B,KAAK,CAAE,CAAC,IAAI,CAACgD,OAAO,CAACthC,UAAU,EACpE,CACF,CACAq+B,sBAAAA,CAAuBe,IAAI,CAAE3nC,IAAI,CAAE,CACjC2nC,IAAAA,CAAK2X,EAAE,EAAIt/C,KACb,CACAykC,WAAc,EAAA,CACZ,IAAI,CAACP,IAAI,CAACO,WAAW,GACvB,CACA4O,SAAY,EAAA,CACV,OAAO,IAAI,CAACzyC,MACd,CACAskG,aAAAA,EAAgB,CACd,OAAO,IAAI,CAACC,UACd,CACAj6D,IAAO,EAAA,CACL,OAAO,IAAI,CAACrB,OAAO,CAErBqC,QAAS,CACP,IAAI,CAAChI,IAAI,CAACgI,MAAM,CAAC,IAAI,EACvB,CACAwH,OAAAA,CAAQ5+B,IAAI,CAAE,CACZ,GAAIA,IAAKvM,CAAAA,UAAU,GAAK,IAAI,CAACorC,QAAQ,CAAE,CACrC,OAAO,KACT,CACA,IAAI,CAAC9J,OAAO,CAAG/0B,IACf,CAAA,IAAI,CAACo3B,MAAM,EAAA,CACX,OAAO,IACT,CACAk5D,iBAAkB,CAChB,MAAMl6D,KAAO,IAAI,CAACA,IAAI,EACtB,CAAA,MAAMm6D,QAAU,IAAI,CAACzkG,MAAM,GAAKmyB,kBAAAA,CAAqB,IAAIkF,WAAYiT,CAAAA,IAAAA,CAAAA,CAAQ,IAAI,CAACtqC,MAAM,GAAKkyB,kBAAqB,CAAA,IAAIqF,YAAY+S,IAAQ,CAAA,CAAA,IAAIrjC,WAAWqjC,IACzJ,CAAA,CAAA,OAAOm6D,OACT,CACAC,SAAAA,CAAUxwF,IAAI,CAAEgmC,KAAK,CAAE,CACrB,MAAMuqD,OAAU,CAAA,IAAI,CAACD,eAAe,GACpC,GAAItwF,IAAAA,CAAK/Z,MAAM,CAAG+/C,KAAAA,CAAO,CACvB,GAAItP,WAAAA,CAAYozB,MAAM,CAAC9pD,IAAAA,CAAAA,CAAO,CAC5BA,IAAOA,CAAAA,IAAAA,CAAKwrD,QAAQ,CAAC,CAAA,CAAGxlB,OACxBuqD,OAAQhiG,CAAAA,GAAG,CAACyR,IACd,EAAA,CAAA,KAAO,CACL,IAAI,IAAIha,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5BuqG,OAAO,CAACvqG,CAAAA,CAAE,CAAGga,IAAI,CAACha,GAAE,CAExB,CACF,CAAO,KAAA,CACLuqG,QAAQhiG,GAAG,CAACyR,MACd,CACA,IAAI,CAACo3B,MAAM,GACb,CACAq5D,QAASzwF,CAAAA,IAAI,CAAE,CACb,MAAMuwF,QAAU,IAAI,CAACD,eAAe,EACpC,CAAA,MAAMtqD,MAAQ,IAAI,CAACqqD,UAAU,CAC7B,GAAI35D,YAAYozB,MAAM,CAAC9pD,MAAO,CAC5BA,IAAAA,CAAKzR,GAAG,CAACgiG,OAAAA,EACX,MAAO,CACLvwF,IAAAA,CAAK/Z,MAAM,CAAG,CAAA,CACd,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5Bga,IAAI,CAACha,EAAE,CAAGuqG,OAAO,CAACvqG,CAAE,EACtB,CACF,CACA,OAAOggD,KACT,CA3FAj4C,WAAAA,CAAY6hC,cAAc,CAAE9jC,MAAM,CAAEukG,UAAU,CAAE5xD,MAAQziB,aAAa,CAAEgjB,WAAW,CAAEvnC,OAAO,CAAC,CAC1F,IAAI,CAACw4B,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC9jC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACukG,UAAU,CAAGA,UAClB,CAAA,IAAI,CAAC5xD,KAAK,CAAGA,KACb,CAAA,IAAI,CAACzO,EAAE,CAAGkgE,MACV,CAAA,IAAI,CAAC9gE,IAAI,CAAGQ,eAAe0yC,qBAAqB,CAAC,IAAI,CAAE7qE,OAAAA,CAAAA,CACvD,MAAMgtF,aAAgB12D,CAAAA,8BAA8B,CAACjiC,MAAO,CAC5D,CAAA,IAAI,CAAC24F,aAAa,CAAGA,aACrB,CAAA,IAAI,CAAC5lD,QAAQ,CAAG,IAAI,CAACwxD,UAAU,CAAG5L,cAClC,GAAIzlD,WAAAA,CAAa,CACf,IAAI,CAACJ,OAAO,CAACI,WAAAA,EACf,MAAO,CACL,IAAI,CAACjK,OAAO,CAAG,IAAI2B,WAAY,CAAA,IAAI,CAACmI,QAAQ,EAC9C,CACA,IAAI,CAAC/M,sBAAsB,CAAClC,cAAAA,CAAemC,KAAK,CAAE,IAAI,CAAC8M,QAAQ,CAAA,CAC/D,IAAI,CAAC5O,MAAM,CAACmO,OAAO,CAACt3C,IAAI,CAAC,IAAI,EAC/B,CA2EF,CAEA,MAAM4pG,kBACJ3iG,CAAAA,WAAAA,EAAa,CACX,IAAI,CAACqrD,UAAU,CAAG,IAAI/9C,MAAM,CAAG,CAAA,CAAA,CAAG,EAAG,CACrC,CAAA,CAAA,IAAI,CAACg+C,gBAAgB,CAAG,IAAIh+C,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAAG,EAC3C,CAAA,IAAI,CAACzM,KAAK,CAAG,KACb,CAAA,IAAI,CAAC4qD,KAAK,CAAG,KACb,CAAA,IAAI,CAACnpB,OAAO,CAAG,IACf,CAAA,IAAI,CAACw0C,UAAU,CAAG,MACpB,CACF,CACA,MAAM8rB,yBACJ5iG,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC4rD,eAAe,CAAG,CACvB,CAAA,IAAI,CAACO,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACL,UAAU,CAAG,KAClB,CAAA,IAAI,CAACO,YAAY,CAAG,KACpB,CAAA,IAAI,CAACL,UAAU,CAAG,KAClB,CAAA,IAAI,CAACiiB,YAAY,CAAG,KACpB,CAAA,IAAI,CAAC1hB,YAAY,CAAG,MACtB,CACF,CACA,MAAMs2C,UAAAA,CACJ,IAAI13C,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,aAAa,CAAC,CAAA,CAAE,CAe9B,IAAI7vD,KAAKqE,KAAK,CAAE,CACd,IAAI,CAACkjG,KAAK,CAAGljG,MACf,CACA,IAAIrE,IAAAA,EAAO,CACT,GAAI,CAAC,IAAI,CAACunG,KAAK,CAAE,CACf,IAAI,CAACA,KAAK,CAAG,IAAI,CAAC9iG,WAAW,CAACzE,KAChC,CACA,OAAO,IAAI,CAACunG,KACd,CACA,IAAIC,MAAAA,CAAOnjG,KAAK,CAAE,CAChB,IAAI,CAACojG,QAAQ,CAACD,MAAM,CAAGnjG,MACzB,CACA,IAAImjG,QAAS,CACX,OAAO,IAAI,CAACC,QAAQ,CAACD,MACvB,CACA,IAAIE,MAAAA,CAAOrjG,KAAK,CAAE,CAChB,IAAI,CAACojG,QAAQ,CAACC,MAAM,CAAGrjG,MACzB,CACA,IAAIqjG,QAAS,CACX,OAAO,IAAI,CAACD,QAAQ,CAACC,MACvB,CACA,IAAIv5F,OAAAA,CAAQ9J,KAAK,CAAE,CACjB,IAAI,CAACojG,QAAQ,CAAGpjG,KAChB,CAAA,GAAIA,MAAO,CACT,IAAI,CAACmjG,MAAM,CAAG,IAAI,CAACA,MAAM,EAAI,CAC7B,CAAA,IAAI,CAACE,MAAM,CAAG,IAAI,CAACA,MAAM,EAAI,EAC/B,CACF,CACA,IAAIv5F,SAAU,CACZ,OAAO,IAAI,CAACs5F,QAAQ,CAEtB3qD,IAAAA,CAAK3B,aAAe,IAAI,CAAEhtC,OAAO,CAAE,CACjC,IAAI,CAACA,OAAO,CAAGA,OACf,CAAA,IAAI,CAACgtC,YAAY,CAAGA,YACpB,CAAA,IAAI,CAACoE,OAAO,CAAGtjD,KAAKoU,GAAG,CAAC,IAAI,CAAC8qC,YAAY,CAAG,IAAI,CAACA,YAAY,CAACoE,OAAO,CAAG,IAAI,CAAC5Y,MAAM,CAAC4Y,OAAO,CAAE,CAC7F,CAAA,CAAA,IAAI,CAACooD,mBAAmB,EAAA,CACxB,IAAI,CAACluD,QAAQ,GACf,CACAkuD,mBAAAA,EAAsB,CACpB,MAAMh6C,EAAAA,CAAK,IAAI,CAACxS,YAAY,CAC5B,IAAI,CAACiV,eAAe,CAAG,IAAIi3C,yBAC3B,CAAA,GAAI15C,IAAI3K,WAAa,CAAA,CACnB,IAAI,CAACoN,eAAe,CAACK,UAAU,CAAG,KACpC,CACA,MAAMm3C,YAAcj6C,EAAKA,CAAAA,EAAAA,CAAGrL,aAAa,EAAE3lD,MAAAA,EAAU,EAAI,CACzD,CAAA,IAAI,CAACkzD,aAAa,CAAClzD,MAAM,CAAG,EAC5B,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIkrG,YAAalrG,CAAI,EAAA,CAAA,CAClC,MAAMkzD,QAAW,CAAA,IAAIw3C,kBACrB,CAAA,IAAI,CAACv3C,aAAa,CAACnzD,EAAE,CAAGkzD,QAAAA,CACxB,GAAI,IAAI,CAACrQ,OAAO,GAAK,CAAA,CAAG,CACtBqQ,QAASM,CAAAA,KAAK,CAAG,IACjBN,CAAAA,SAAS7oB,OAAO,CAAG,MACrB,CACA,MAAMwb,YAAc,IAAI,CAACpH,YAAY,EAAEmH,aAAAA,GAAgB5lD,CAAE,CAAA,CACzD,GAAI,IAAI,CAACy+C,YAAY,EAAEjT,OAAAA,EAAWqa,aAAara,OAAS,CAAA,CACtD,MAAM2/D,SAAYtuE,CAAAA,oBAAAA,CAAqBgpB,YAAYjY,OAAO,CAC1DslB,CAAAA,QAAS2rB,CAAAA,UAAU,CAAG,CAACssB,UACzB,CACF,CACF,CACAhiE,SAAU,EACV4T,UAAW,EACXquD,aAAc,CACZ,GAAI,IAAI,CAACL,QAAQ,EAAI,IAAI,CAACtsD,YAAY,CAAE,CACtC,MAAM4sD,YAAe,CAAA,IAAI,CAACN,QAAQ,CAACM,YAAY,EAAI,IAAI,CAACphE,MAAM,CAACkZ,UAAU,CACzE,MAAMx9B,MAAQpmB,IAAKmQ,CAAAA,KAAK,CAAC27F,YAAAA,CAAa1lF,KAAK,CAAG,IAAI,CAACmlF,MAAM,EACzD,MAAMllF,MAAAA,CAASrmB,KAAKmQ,KAAK,CAAC27F,aAAazlF,MAAM,CAAG,IAAI,CAAColF,MAAM,EAC3D,IAAI,CAACvsD,YAAY,CAACjS,MAAM,CAAC7mB,KAAOC,CAAAA,MAAAA,EAClC,CACF,CACA0lF,MAAAA,EAAS,EACTC,OAAAA,EAAU,EACVC,KAAAA,EAAQ,EACRC,QAAAA,EAAW,EACXC,SAAAA,EAAY,EACZ,IAAI74F,QAAQlL,KAAK,CAAE,CACjB,GAAI,IAAI,CAACksE,QAAQ,GAAKlsE,MAAO,CAC3B,IAAI,CAACksE,QAAQ,CAAGlsE,MAChB,GAAIA,KAAAA,CAAO,CACT,IAAI,CAAC8jG,QAAQ,GACf,CAAA,KAAO,CACL,IAAI,CAACC,SAAS,GAChB,CACF,CACF,CACA,IAAI74F,SAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,CAEtB83B,aAAAA,CAAc1nD,KAAK,CAAE,CACnB,MAAMjE,KAAQ,CAAA,IAAI,CAACmT,aAAa,CAAClzD,MAAM,CACvC,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAMkzD,QAAW,CAAA,IAAI,CAACC,aAAa,CAACnzD,EAAE,CACtC,GAAIikD,MAAO,CACTiP,QAAAA,CAASE,UAAU,CAACr0D,IAAI,CAACklD,KACzBiP,CAAAA,CAAAA,QAAAA,CAASG,gBAAgB,CAAC19C,MAAM,CAACsuC,KACnC,EAAA,CACAiP,SAAStqD,KAAK,CAAG,CAAC,CAACq7C,MACrB,CACF,CACA2nD,aAAAA,CAAcC,UAAU,CAAE,CACxB,GAAIA,UAAe/jG,GAAAA,SAAAA,CAAW,CAC5B,IAAI,CAAC4rD,eAAe,CAACC,eAAe,CAAGk4C,WACzC,CACA,IAAI,CAACn4C,eAAe,CAACG,UAAU,CAAGg4C,aAAe/jG,UACnD,CACAgkG,gBAAgBC,YAAY,CAAE,CAC5B,GAAIA,YAAAA,GAAiBjkG,UAAW,CAC9B,IAAI,CAAC4rD,eAAe,CAACQ,iBAAiB,CAAG63C,aAC3C,CACA,IAAI,CAACr4C,eAAe,CAACU,YAAY,CAAG23C,YAAiBjkG,GAAAA,UACvD,CACAkkG,MAAS,EAAA,CACP,GAAI,IAAI,CAACn5F,OAAO,CAAE,CAChB,MAAMo3B,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAMgiE,SAAW,IAAI,CAACxtD,YAAY,GAAK32C,SAAAA,CACvC,IAAI,CAACwjG,MAAM,GACX,GAAI,IAAI,CAACY,cAAc,CAAE,CACvB,GAAID,QAAAA,EAAY,CAAC,IAAI,CAACE,UAAU,CAAE,CAChCliE,OAAO+X,eAAe,CAAC,IAAI,EAC7B,CACA,IAAI,CAACupD,OAAO,GACZ,GAAIU,QAAAA,EAAY,CAAC,IAAI,CAACG,QAAQ,CAAE,CAC9BniE,OAAOiY,aAAa,CAAC,IAAI,EAC3B,CACF,CACA,IAAI,CAACspD,KAAK,EACVvhE,CAAAA,OAAOqY,eAAe,GACxB,CACF,CA7IAv6C,WAAAA,CAAY6hC,cAAc,CAAC,CACzB,IAAI,CAACiqC,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACs4B,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACF,cAAc,CAAG,IACtB,CAAA,IAAI,CAACrpD,OAAO,CAAG,CACf,CAAA,IAAI,CAACsQ,aAAa,CAAG,EACrB,CAAA,IAAI,CAACk5C,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACzR,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAAC0R,YAAY,CAAG,EAAE,CACtB,IAAI,CAACC,WAAW,CAAG,EAAE,CACrB,IAAI,CAACtiE,MAAM,CAAGL,eAChB,CAkIF,CAEA,MAAM4iE,iBAAAA,CAoBJ,OAAOlpB,YAAa15C,CAAAA,cAAc,CAAE+3B,UAAU,CAAEr+D,IAAI,CAAE2qE,gBAAgB,CAAE,CACtE,OAAO,IAAIgB,MAAOrlC,CAAAA,cAAAA,CAAgByiC,sBAAsBC,gBAAgB,CAAC1iC,eAAgB,CACvFtmC,IAAAA,CACAq+D,WACAsM,gBACAC,CAAAA,oBAAAA,CAAsB,KACtBtM,YAAc,CAAA,6CAChB,GACF,CACAz4B,OAAAA,EAAU,CACR,GAAI,IAAI,CAACsjE,oBAAoB,CAAE,CAC7B,IAAI,CAACC,aAAa,CAACvjE,OAAO,GAC5B,CACF,CACAwjE,QAAQ/uD,MAAM,CAAEgvD,IAAO,CAAA,IAAI,CAAE,CAC3B,MAAM3iE,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM4iE,KAAQ5iE,CAAAA,MAAAA,CAAOiW,eAAe,EACpCjW,CAAAA,MAAAA,CAAO0V,eAAe,CAAC,IAAA,CAAA,CACvB1V,OAAOuwD,WAAW,EAAA,CAClBvwD,OAAO2V,eAAe,CAAC,IAAI,CAACktD,YAAY,EACxC7iE,MAAOk2D,CAAAA,SAAS,CAAC,KACjBl2D,CAAAA,CAAAA,MAAAA,CAAO81D,0BAA0B,CAAC,IAAI,CAAC2M,aAAa,CAAA,CACpDziE,OAAOqnC,SAAS,CAAC1zB,QACjB3T,MAAOoW,CAAAA,IAAI,CAAC,CACV5oC,IAAAA,CAAM8lB,iBACNuzC,IAAM,CAAA,CAAA,CACNC,WAAY,CACZ/wB,CAAAA,KAAAA,CAAO,IAAI,CAAC8sD,YAAY,CAACn0D,WAAW,CACpCq4B,QAAS,KACX,CAAA,CAAA,CACA/mC,OAAO81D,0BAA0B,CAAC,MAClC91D,MAAOk2D,CAAAA,SAAS,CAAC,IACjBl2D,CAAAA,CAAAA,MAAAA,CAAOmxD,SAAS,EAChBnxD,CAAAA,MAAAA,CAAO0V,eAAe,CAACktD,KAAAA,CAAAA,CACvB,GAAID,IAAM,CAAA,CACR,IAAI57F,GAAM,CAAA,IAAI,CAAC87F,YAAY,CAAC1jE,IAAI,CAACg3C,QAAQ,CACzC,IAAI,CAAC0sB,YAAY,CAAC1jE,IAAI,CAACg3C,QAAQ,CAAG,IAAI,CAACssB,aAAa,CAACtjE,IAAI,CAACg3C,QAC1D,CAAA,IAAI,CAACssB,aAAa,CAACtjE,IAAI,CAACg3C,QAAQ,CAAGpvE,IACnCA,GAAM,CAAA,IAAI,CAAC87F,YAAY,CAAC1jE,IAAI,CAAC63C,GAAG,CAChC,IAAI,CAAC6rB,YAAY,CAAC1jE,IAAI,CAAC63C,GAAG,CAAG,IAAI,CAACyrB,aAAa,CAACtjE,IAAI,CAAC63C,GACrD,CAAA,IAAI,CAACyrB,aAAa,CAACtjE,IAAI,CAAC63C,GAAG,CAAGjwE,IAChC,CACF,CACA,IAAI+7F,WAAc,EAAA,CAChB,OAAO,IAAI,CAACD,YAAY,CAE1B,IAAIE,YAAe,EAAA,CACjB,OAAO,IAAI,CAACN,aAAa,CAlE3B3kG,YAAYglG,WAAW,CAAEC,YAAY,CAAEv0D,KAAAA,CAAQtiB,iBAAiB,CAAC,CAC/D,GAAI62E,YAAiBllG,GAAAA,SAAAA,EAAa,EAAEklG,YAAAA,YAAwB70D,YAAW,CAAI,CAAA,CACzEM,KAAQu0D,CAAAA,YAAAA,CACRA,YAAellG,CAAAA,UACjB,CACA,IAAI,CAACmiC,MAAM,CAAG8iE,WAAAA,CAAY9iE,MAAM,CAChC,MAAMo2C,GAAK,IAAI,CAACp2C,MAAM,CAACo2C,EAAE,CACzB,MAAM4sB,KAAAA,CAAQD,cAAgBD,WAC9B,CAAA,GAAIt0D,QAAUtiB,iBAAqB82E,EAAAA,KAAAA,CAAMx0D,KAAK,GAAKA,KAAAA,CAAO,CACxD4nC,EAAGO,CAAAA,UAAU,CAACP,EAAGa,CAAAA,YAAY,CAAE+rB,KAAM7jE,CAAAA,IAAI,CAACg3C,QAAQ,CAAA,CAClDC,GAAGQ,UAAU,CAACR,GAAGa,YAAY,CAAE+rB,MAAMl+D,OAAO,CAAEsxC,GAAGM,YAAY,EAC/D,CACA,IAAI,CAACmsB,YAAY,CAAGC,WACpB,CAAA,IAAI,CAACN,oBAAoB,CAAG,CAACO,YAC7B,CAAA,IAAI,CAACN,aAAa,CAAGM,cAAgB,IAAI70D,YAAAA,CAAa40D,YAAY9iE,MAAM,CAAE8iE,YAAYjnG,MAAM,CAAEinG,YAAYp0D,WAAW,CAAE,CACrHF,KAAOA,CAAAA,KAAAA,CACPz+B,KAAM+yF,WAAYh+D,CAAAA,OAAO,CAE7B,EAAA,CAkDF,CAEA,SAASm+D,IAAAA,CAAKt9F,CAAC,CACb,CAAA,IAAI,CAACy/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAC,CAAG+J,EAC3B,CACA,SAASu9F,IAAAA,CAAKv9F,CAAC,CAAEC,CAAC,EAChB,IAAI,CAACw/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAC,CAAG+J,CACzB,CAAA,IAAI,CAACy/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG,CAAA,CAAE,CAAGgK,EAC/B,CACA,SAASu9F,IAAKx9F,CAAAA,CAAC,CAAEC,CAAC,CAAExQ,CAAC,CACnB,CAAA,IAAI,CAACgwC,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAC,CAAG+J,CACzB,CAAA,IAAI,CAACy/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG,EAAE,CAAGgK,CAC7B,CAAA,IAAI,CAACw/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG,EAAE,CAAGxG,EAC/B,CACA,SAASguG,IAAAA,CAAKz9F,CAAC,CAAEC,CAAC,CAAExQ,CAAC,CAAEiZ,CAAC,CACtB,CAAA,IAAI,CAAC+2B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAC,CAAG+J,CACzB,CAAA,IAAI,CAACy/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG,CAAA,CAAE,CAAGgK,CAC7B,CAAA,IAAI,CAACw/B,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG,CAAA,CAAE,CAAGxG,CAC7B,CAAA,IAAI,CAACgwC,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG,CAAA,CAAE,CAAGyS,EAC/B,CACA,SAASg1F,SAAUznG,CAAAA,KAAK,CAAE0nG,UAAU,CAAEC,UAAU,CAC9C,CAAA,IAAI,CAACn+D,KAAK,CAACxpC,MAAM,CAAG0nG,UAAU,CAACC,UAAW,EAC5C,CACA,SAASC,SAAAA,CAAU5nG,KAAK,CAAE0nG,UAAU,CAAEC,UAAU,CAAA,CAC9C,IAAI,CAACn+D,KAAK,CAACxpC,KAAM,CAAA,CAAG0nG,UAAU,CAACC,UAAAA,CAAW,CAC1C,IAAI,CAACn+D,KAAK,CAACxpC,MAAQ,CAAE,CAAA,CAAG0nG,UAAU,CAACC,UAAAA,CAAa,GAAE,CAEpD,SAASE,SAAAA,CAAU7nG,KAAK,CAAE0nG,UAAU,CAAEC,UAAU,EAC9C,IAAI,CAACn+D,KAAK,CAACxpC,KAAAA,CAAM,CAAG0nG,UAAU,CAACC,WAAW,CAC1C,IAAI,CAACn+D,KAAK,CAACxpC,KAAQ,CAAA,CAAA,CAAE,CAAG0nG,UAAU,CAACC,WAAa,CAAE,CAClD,CAAA,IAAI,CAACn+D,KAAK,CAACxpC,KAAAA,CAAQ,EAAE,CAAG0nG,UAAU,CAACC,UAAa,CAAA,CAAA,EAAE,CAEpD,SAASG,UAAU9nG,KAAK,CAAE0nG,UAAU,CAAEC,UAAU,EAC9C,IAAI,CAACn+D,KAAK,CAACxpC,KAAAA,CAAM,CAAG0nG,UAAU,CAACC,WAAW,CAC1C,IAAI,CAACn+D,KAAK,CAACxpC,KAAQ,CAAA,CAAA,CAAE,CAAG0nG,UAAU,CAACC,WAAa,CAAE,CAClD,CAAA,IAAI,CAACn+D,KAAK,CAACxpC,KAAAA,CAAQ,EAAE,CAAG0nG,UAAU,CAACC,UAAa,CAAA,CAAA,CAAE,CAClD,IAAI,CAACn+D,KAAK,CAACxpC,MAAQ,CAAE,CAAA,CAAG0nG,UAAU,CAACC,UAAa,CAAA,CAAA,EAAE,CAEpD,SAASI,UAAUlgG,MAAM,CAAEmgG,WAAW,CAAEC,WAAW,EACjDD,WAAW,CAACC,YAAY,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,QAAO,CAE/C,SAASqgG,SAAUrgG,CAAAA,MAAM,CAAEmgG,WAAW,CAAEC,WAAW,CACjDD,CAAAA,WAAW,CAACC,WAAY,CAAA,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,MAAO,CAC7CmgG,CAAAA,WAAW,CAACC,YAAc,CAAE,CAAA,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,MAAS,CAAA,CAAA,EAAE,CAEvD,SAASsgG,UAAUtgG,MAAM,CAAEmgG,WAAW,CAAEC,WAAW,EACjDD,WAAW,CAACC,YAAY,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,OAAO,CAC7CmgG,WAAW,CAACC,WAAAA,CAAc,EAAE,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,OAAS,CAAE,CACrDmgG,CAAAA,WAAW,CAACC,YAAc,CAAE,CAAA,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,MAAS,CAAA,CAAA,EAAE,CAEvD,SAASugG,UAAUvgG,MAAM,CAAEmgG,WAAW,CAAEC,WAAW,EACjDD,WAAW,CAACC,YAAY,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,OAAO,CAC7CmgG,WAAW,CAACC,WAAAA,CAAc,EAAE,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,OAAS,CAAE,CACrDmgG,CAAAA,WAAW,CAACC,YAAc,CAAE,CAAA,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CACrDmgG,WAAW,CAACC,WAAc,CAAA,CAAA,CAAE,CAAG,IAAI,CAACz+D,KAAK,CAAC3hC,MAAAA,CAAS,GAAE,CAEvD,MAAMwgG,sBAiCJnsG,CAAAA,GAAAA,CAAI2L,MAAM,CAAE,CACV,OAAO,IAAI,CAAC2hC,KAAK,CAAC,IAAI,CAACxpC,KAAK,CAAG6H,OAAO,CAExCnF,IAAIqH,CAAC,CAAEC,CAAC,CAAExQ,CAAC,CAAEiZ,CAAC,CAAE,EAChB61F,UAAAA,CAAWzgG,MAAM,CAAEmgG,WAAW,CAAEC,WAAW,CAAE,EAC7CM,YAAavoG,CAAAA,KAAK,CAAE0nG,UAAU,CAAEC,UAAU,CAAE,EArC5CzlG,WAAY2S,CAAAA,MAAM,CAAE2zF,aAAa,CAAErxD,YAAY,CAAC,CAC9C,IAAI,CAACn3C,KAAK,CAAG,CACb,CAAA,IAAI,CAACy0C,aAAa,CAAG+zD,aAAc/zD,CAAAA,aAAa,CAChD,GAAI0C,YAAAA,CAAa1B,WAAW,CAAE,CAC5B,IAAI,CAACjM,KAAK,CAAG,IAAI3H,eAAe,CAAC2mE,aAAch0D,CAAAA,QAAQ,CAAC,CAAC3/B,MAAAA,CAAQ2zF,cAAc3gG,MAAM,EACvF,MAAO,CACL,IAAI,CAAC2hC,KAAK,CAAG,IAAI3H,eAAe,CAAC2mE,cAAch0D,QAAQ,CAAC,CAAC3/B,MAAQ2zF,CAAAA,aAAAA,CAAc3gG,MAAM,CAAEsvC,YAAAA,CAAa/B,WAAW,CAAGozD,aAAAA,CAAc/zD,aAAa,EAC/I,CACA,IAAI,CAACC,MAAM,CAAG8zD,aAAc9zD,CAAAA,MAAM,CAAG,IAAI,CAAClL,KAAK,CAACtnC,WAAW,CAACumG,iBAAiB,CAC7E,OAAOD,aAAc/zD,CAAAA,aAAa,EAChC,KAAK,CAAA,CACH,IAAI,CAAC/xC,GAAG,CAAG2kG,IACX,CAAA,IAAI,CAACiB,UAAU,CAAGP,SAClB,CAAA,IAAI,CAACQ,YAAY,CAAGd,SACpB,CAAA,WACG,CACH,CAAA,IAAI,CAAC/kG,GAAG,CAAG4kG,IACX,CAAA,IAAI,CAACgB,UAAU,CAAGJ,SAClB,CAAA,IAAI,CAACK,YAAY,CAAGX,UACpB,MACF,KAAK,EACH,IAAI,CAACllG,GAAG,CAAG6kG,IACX,CAAA,IAAI,CAACe,UAAU,CAAGH,SAClB,CAAA,IAAI,CAACI,YAAY,CAAGV,SAAAA,CACpB,MACG,KAAA,CAAA,CACH,IAAI,CAACnlG,GAAG,CAAG8kG,IACX,CAAA,IAAI,CAACc,UAAU,CAAGF,SAClB,CAAA,IAAI,CAACG,YAAY,CAAGT,SACpB,CAAA,KACJ,CACF,CAOF,CACA,MAAMY,cAcJjF,CAAAA,IAAAA,CAAKtpD,MAAQ,CAAC,CAAE,CACd,IAAIhgD,CAAAA,CAAI,EACR,MAAMwuG,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,MAAMC,YAAe,CAAA,IAAI,CAACD,SAAS,CAACvuG,MAAM,CAC1C,MAAMD,EAAIyuG,YAAa,CAAA,CACrB,MAAMC,QAAWF,CAAAA,SAAS,CAACxuG,CAAI,EAAA,CAC/B0uG,CAAAA,QAAS7oG,CAAAA,KAAK,EAAIm6C,KAAQ0uD,CAAAA,QAAAA,CAASn0D,OAAM,CAE7C,CACA70C,GAAM,EAAA,CACJ,IAAI,CAACm6C,YAAY,CAACzO,MAAM,GAC1B,CACAo5D,SAAU3wD,CAAAA,QAAQ,CAAE7/B,IAAI,CAAE2+B,WAAW,CAAE,CACrC,MAAMgD,OAAU,CAAA,IAAI,CAACA,OAAO,CAAC9B,SAAS,CACtC,GAAI8B,QAAS,CACX,GAAIhD,YAAc,IAAI,CAACkH,YAAY,CAAClH,WAAW,CAAE,CAC/CA,WAAAA,CAAc,IAAI,CAACkH,YAAY,CAAClH,YAClC,CACA,MAAM2B,aAAAA,CAAgBqB,QAAQrB,aAAa,CAC3C,GAAI,IAAI,CAACuF,YAAY,CAACtH,SAAS,GAAG+C,WAAW,CAAE,CAC7C,IAAIz1C,KAAAA,CAAQ,EACZ,IAAI,IAAI7F,EAAI,CAAGA,CAAAA,CAAAA,CAAI24C,YAAa34C,CAAI,EAAA,CAAA,CAClC27C,QAAQyyD,YAAY,CAACvoG,MAAOmU,IAAMha,CAAAA,CAAAA,CAAIs6C,eACtCz0C,KAAS81C,EAAAA,OAAAA,CAAQpB,OAAM,CAE3B,MAAO,CACL,GAAIvgC,KAAK/Z,MAAM,CAAG04C,YAAc2B,aAAe,CAAA,CAC7C,MAAMq0D,SAAYh2D,CAAAA,WAAAA,CAAc2B,cAChC,GAAI5J,WAAAA,CAAYozB,MAAM,CAAC9pD,IAAAA,CAAAA,CAAO,CAC5BA,IAAOA,CAAAA,IAAAA,CAAKwrD,QAAQ,CAAC,CAAA,CAAGmpC,WACxBhzD,OAAQtM,CAAAA,KAAK,CAAC9mC,GAAG,CAACyR,MACpB,CAAO,KAAA,CACL,IAAI,IAAIha,CAAAA,CAAI,EAAGA,CAAI2uG,CAAAA,SAAAA,CAAW3uG,IAAI,CAChC27C,OAAAA,CAAQtM,KAAK,CAACrvC,CAAAA,CAAE,CAAGga,IAAI,CAACha,GAAE,CAE9B,CACF,CAAO,KAAA,CACL27C,QAAQtM,KAAK,CAAC9mC,GAAG,CAACyR,IAAAA,EACpB,CACF,CACF,CACF,CACAywF,QAAS5wD,CAAAA,QAAQ,CAAE7/B,IAAI,CAAE,CACvB,MAAM2hC,OAAAA,CAAU,IAAI,CAACA,OAAO,CAAC9B,QAAS,CAAA,CACtC,IAAImG,KAAAA,CAAQ,CACZ,CAAA,GAAIrE,QAAS,CACXqE,KAAAA,CAAQ,IAAI,CAACH,YAAY,CAAClH,WAAW,CACrC,IAAI34C,CACJ,CAAA,MAAMs6C,cAAgBqB,OAAQrB,CAAAA,aAAa,CAC3C,GAAI,IAAI,CAACuF,YAAY,CAACtH,SAAS,EAAG+C,CAAAA,WAAW,CAAE,CAC7C,GAAIt8C,MAAMC,OAAO,CAAC+a,MAAO,CACvBA,IAAAA,CAAK/Z,MAAM,CAAG,EAChB,CACA07C,OAAQ91C,CAAAA,KAAK,CAAG,CAChB,CAAA,IAAI6H,OAAS,CACb,CAAA,IAAI1N,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CACxB27C,QAAQwyD,UAAU,CAACzgG,OAAQsM,IAAMha,CAAAA,CAAAA,CAAIs6C,eACrC5sC,MAAUiuC,EAAAA,OAAAA,CAAQpB,OAAM,CAE5B,MAAO,CACL,GAAI7J,YAAYozB,MAAM,CAAC9pD,MAAO,CAC5BA,IAAAA,CAAKzR,GAAG,CAACozC,OAAAA,CAAQtM,KAAK,EACxB,CAAA,KAAO,CACLr1B,IAAK/Z,CAAAA,MAAM,CAAG,CACd,CAAA,MAAM0uG,UAAY3uD,KAAQ1F,CAAAA,aAAAA,CAC1B,IAAIt6C,CAAI,CAAA,CAAA,CAAGA,EAAI2uG,SAAW3uG,CAAAA,CAAAA,EAAAA,CAAI,CAC5Bga,IAAI,CAACha,CAAAA,CAAE,CAAG27C,OAAQtM,CAAAA,KAAK,CAACrvC,CAAE,EAC5B,CACF,CACF,CACF,CACA,OAAOggD,KACT,CArFAj4C,WAAY83C,CAAAA,YAAY,CAAC,CACvB,IAAI,CAACA,YAAY,CAAGA,YACpB,CAAA,IAAI,CAAC+uD,gBAAgB,CAAG/uD,aAAatH,SAAS,EAAA,CAAGrzC,IAAI,CACrD,IAAI,CAACwV,MAAM,CAAG,IAAI,CAACmlC,YAAY,CAACzP,IAAI,EACpC,CAAA,IAAI,CAACo+D,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC7yD,OAAO,CAAG,EAAC,CAChB,MAAMqB,YAAe,CAAA,IAAI,CAAC6C,YAAY,CAACtH,SAAS,EAChD,CAAA,IAAI,IAAIv4C,CAAI,CAAA,CAAA,CAAGA,EAAIg9C,YAAatD,CAAAA,QAAQ,CAACz5C,MAAM,CAAED,IAAI,CACnD,MAAMquG,cAAgBrxD,YAAatD,CAAAA,QAAQ,CAAC15C,CAAE,CAC9C,CAAA,IAAI,CAACwuG,SAAS,CAACxuG,CAAAA,CAAE,CAAG,IAAIkuG,sBAAAA,CAAuB,IAAI,CAACxzF,MAAM,CAAE2zF,cAAerxD,YAC3E,CAAA,CAAA,IAAI,CAACrB,OAAO,CAAC0yD,aAAc/qG,CAAAA,IAAI,CAAC,CAAG,IAAI,CAACkrG,SAAS,CAACxuG,GAAE,CAExD,CA0EF,CAEA,MAAM6uG,aAAe,OACrB,CAAA,MAAMC,gBAAkB,UACxB,CAAA,MAAMC,eAAiB,SACvB,CAAA,MAAMC,aAAe,QACrB,CAAA,MAAMC,aAAe,QACrB,CAAA,MAAMC,aAAe,OACrB,CAAA,MAAMC,aAAe,OACrB,CAAA,MAAMC,aAAe,OACrB,CAAA,MAAMC,aAAe,OACrB,CAAA,MAAMC,SAAW,KACjB,CAAA,MAAMC,cAAgB,CACtB,CAAA,MAAMC,QAAU,CAChB,CAAA,MAAMC,WAAa,EACnB,CAAA,MAAMC,UAAY,EAClB,CAAA,MAAMC,UAAY,EAClB,CAAA,MAAMC,YAAc,EACpB,CAAA,MAAMC,QAAU,EAChB,CAAA,MAAMC,UAAY,EAClB,CAAA,MAAMC,cAAgB,EACtB,CAAA,MAAMC,WAAa,EACnB,CAAA,MAAMC,UAAY,EAClB,CAAA,MAAMC,YAAc,EACpB,CAAA,MAAMC,cAAgB,EACtB,CAAA,MAAMC,QAAU,EAChB,CAAA,MAAMC,SAAW,EACjB,CAAA,MAAMC,SAAW,EACjB,CAAA,MAAMC,OAAS,EACf,CAAA,MAAMC,UAAY,EAClB,CAAA,MAAMC,SAAW,EACjB,CAAA,MAAMC,iBAAmB,EACzB,CAAA,MAAMC,WAAa,EACnB,CAAA,MAAMC,WAAa,EACnB,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,cAAgB,EACtB,CAAA,MAAMC,UAAY,EAClB,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,MAAQ,EACd,CAAA,MAAMC,KAAQ,CAAA,EAAA,CACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,KAAAA,CAAQ,GACd,MAAMC,WAAAA,CAAc,GACpB,MAAMC,gBAAAA,CAAmB,GACzB,MAAMC,YAAAA,CAAe,GACrB,MAAMC,YAAAA,CAAe,GACrB,MAAMC,YAAAA,CAAe,GACrB,MAAMC,YAAAA,CAAe,GACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,OAAAA,CAAU,IAChB,MAAMC,aAAAA,CAAgB,IACtB,MAAMC,YAAAA,CAAe,IACrB,MAAMC,WAAAA,CAAc,IACpB,MAAMC,UAAAA,CAAa,IACnB,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,MAAAA,CAAS,IACf,MAAMC,OAAAA,CAAU,IAChB,MAAMC,OAAAA,CAAU,IAChB,MAAMC,OAAAA,CAAU,IAChB,MAAMC,SAAAA,CAAY,IAClB,MAAMC,UAAAA,CAAa,IACnB,MAAMC,SAAAA,CAAY,IAClB,MAAMC,gBAAAA,CAAmB,IACzB,MAAMC,cAAAA,CAAiB,IACvB,MAAMC,iBAAAA,CAAoB,IAC1B,MAAMC,QAAAA,CAAW,IACjB,MAAMC,gBAAAA,CAAmB,CAAC,CAC1B,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,mBAAqB,CAC3B,CAAA,MAAMC,kBAAoB,CAC1B,CAAA,MAAMC,MAAQ,CACd,CAAA,MAAMC,MAAQ,CACd,CAAA,MAAMC,MAAQ,CACd,CAAA,MAAMC,MAAQ,CACd,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,UAAAA,CAAa,EACnB,MAAMC,SAAAA,CAAY,EAClB,MAAMC,kBAAAA,CAAqB,GAC3B,MAAMC,kBAAAA,CAAqB,GAC3B,MAAMC,MAAAA,CAAS,GACf,MAAMC,QAAAA,CAAW,GACjB,MAAMC,QAAAA,CAAW,GACjB,MAAMC,SAAAA,CAAY,GAClB,MAAMC,UAAAA,CAAa,GACnB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,qBAAAA,CAAwB,EAC9B,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,kBAAAA,CAAqB,EAC3B,MAAMC,OAAAA,CAAU,EAChB,MAAMC,OAAAA,CAAU,CAEhB,CAAMC,MAAAA,aAAAA,CACJhwG,YAAYiwG,QAAQ,CAAEjW,KAAK,CAAC,CAC1B,IAAI,CAACl6F,GAAG,CAAG,IACX,CAAA,IAAI,CAAC8zC,OAAO,CAAG,IACf,CAAA,IAAI,CAAComD,KAAK,CAAG,IACb,CAAA,GAAIA,MAAO,CACT,IAAI,CAACl6F,GAAG,CAAGk6F,MAAMkW,OACjB,CAAA,IAAI,CAACt8D,OAAO,CAAGomD,KAAAA,CAAMnjG,MAAM,CAC3B,IAAI,CAACmjG,KAAK,CAAGA,MACf,CACF,CACF,CAEA,MAAMmW,eAAiB,IAAIH,aAAAA,CAC3B,SAASI,iBAAkBpW,CAAAA,KAAK,EAC9BmW,cAAerwG,CAAAA,GAAG,CAAGk6F,KAAMkW,CAAAA,OAAO,CAClCC,cAAAA,CAAev8D,OAAO,CAAGomD,KAAAA,CAAMnjG,MAAM,CACrCs5G,eAAenW,KAAK,CAAGA,MACvB,OAAOmW,cACT,CACA,SAASE,SAAAA,CAAUryG,CAAC,CAClB,CAAA,GAAI,OAAOA,CAAM,GAAA,QAAA,CAAU,CACzB,OAAOA,CAAAA,CAAEsyG,WAAW,EAAGjzG,CAAAA,UAAU,CAAC,CACpC,CAAA,CACA,OAAOW,CACT,CACA,MAAMuyG,uBAA0B,CAAA,CAC9B,IAAK,KACL,CAAA,IAAA,CAAM,QACN,IAAM,CAAA,OAAA,CACN,KAAM,SACN,CAAA,IAAA,CAAM,MACN,IAAM,CAAA,QAAA,CACN,IAAM,CAAA,MAAA,CACN,IAAM,CAAA,IAAA,CACN,KAAM,OACN,CAAA,IAAA,CAAM,OACN,IAAM,CAAA,QAAA,CACN,KAAM,KACR,CACA,OAAMC,QAAiBtwG,SAAAA,YAAAA,CAoBrBuwG,OAAO78D,OAAO,CAAE,CACd,GAAI,IAAI,CAAC88D,QAAQ,CAAE,CACjB,IAAI,CAACC,MAAM,GACb,CACA,IAAI,CAACD,QAAQ,CAAG98D,OAChB,CAAA,IAAI,CAAC88D,QAAQ,CAACx2G,gBAAgB,CAAC,SAAA,CAAW,IAAI,CAAC02G,eAAe,CAAE,KAChE,CAAA,CAAA,IAAI,CAACF,QAAQ,CAACx2G,gBAAgB,CAAC,UAAA,CAAY,IAAI,CAAC22G,gBAAgB,CAAE,KAClE,CAAA,CAAA,IAAI,CAACH,QAAQ,CAACx2G,gBAAgB,CAAC,OAAA,CAAS,IAAI,CAAC42G,aAAa,CAAE,KAC5D/tG,CAAAA,CAAAA,QAAAA,CAAS7I,gBAAgB,CAAC,kBAAA,CAAoB,IAAI,CAAC62G,wBAAwB,CAAE,KAC7E92G,CAAAA,CAAAA,MAAAA,CAAOC,gBAAgB,CAAC,MAAA,CAAQ,IAAI,CAAC82G,kBAAkB,CAAE,KAC3D,EAAA,CACAL,QAAS,CACP,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAACv2G,mBAAmB,CAAC,SAAW,CAAA,IAAI,CAACy2G,eAAe,CAAA,CACjE,IAAI,CAACF,QAAQ,CAACv2G,mBAAmB,CAAC,WAAY,IAAI,CAAC02G,gBAAgB,CACnE,CAAA,IAAI,CAACH,QAAQ,CAACv2G,mBAAmB,CAAC,OAAA,CAAS,IAAI,CAAC22G,aAAa,CAC7D,CAAA,IAAI,CAACJ,QAAQ,CAAG,KAChB3tG,QAAS5I,CAAAA,mBAAmB,CAAC,kBAAoB,CAAA,IAAI,CAAC42G,wBAAwB,CAAE,OAChF92G,MAAOE,CAAAA,mBAAmB,CAAC,MAAQ,CAAA,IAAI,CAAC62G,kBAAkB,CAAE,OAC9D,CACAC,eAAAA,CAAgBf,OAAO,CAAE,CACvBA,QAAUG,SAAUH,CAAAA,OAAAA,CAAAA,CACpB,MAAMjuE,EAAKsuE,CAAAA,uBAAuB,CAACL,OAAQv4G,CAAAA,QAAQ,GAAG,CACtD,GAAIsqC,GAAI,CACN,OAAOA,EACT,CACA,IAAI/zB,IAAMgiG,OAAQv4G,CAAAA,QAAQ,CAAC,EAAI24G,CAAAA,CAAAA,WAAW,GAC1C,MAAMp4G,MAAAA,CAASgW,IAAIhW,MAAM,CACzB,IAAI,IAAI+/C,KAAQ,CAAA,CAAA,CAAGA,MAAQ,CAAI//C,CAAAA,MAAAA,CAAQ+/C,QAAQ,CAC7C/pC,GAAAA,CAAM,CAAC,CAAC,EAAEA,IAAI,EAChB,CACA,OAAO,CAAC,EAAE,EAAEA,GAAAA,CAAI,CAAC,CAEnBgjG,eAAelX,KAAK,CAAE,CACpB,MAAMz8F,IAAAA,CAAOy8F,MAAMkW,OAAO,EAAIlW,MAAMmX,QAAQ,CAC5C,GAAI5zG,IAASwC,GAAAA,SAAAA,CAAW,OACxB,MAAMkiC,EAAAA,CAAK,IAAI,CAACgvE,eAAe,CAAC1zG,IAChC,CAAA,CAAA,IAAI,CAAC6zG,OAAO,CAACnvE,EAAG,CAAA,CAAG,KACnB,IAAI,CAAC9gC,IAAI,CAAC,SAAA,CAAWivG,kBAAkBpW,KACvC,CAAA,CAAA,CAAA,GAAI,IAAI,CAACC,cAAc,CAAE,CACvBD,KAAAA,CAAMC,cAAc,GACtB,CACA,GAAI,IAAI,CAACoX,eAAe,CAAE,CACxBrX,MAAMqX,eAAe,GACvB,CACF,CACAC,YAAAA,CAAatX,KAAK,CAAE,CAClB,MAAMz8F,IAAOy8F,CAAAA,KAAAA,CAAMkW,OAAO,EAAIlW,KAAAA,CAAMmX,QAAQ,CAC5C,GAAI5zG,OAASwC,SAAW,CAAA,OACxB,MAAMkiC,EAAK,CAAA,IAAI,CAACgvE,eAAe,CAAC1zG,KAChC,CAAO,OAAA,IAAI,CAAC6zG,OAAO,CAACnvE,GAAG,CACvB,IAAI,CAAC9gC,IAAI,CAAC,QAASivG,iBAAkBpW,CAAAA,KAAAA,CAAAA,CAAAA,CACrC,GAAI,IAAI,CAACC,cAAc,CAAE,CACvBD,MAAMC,cAAc,GACtB,CACA,GAAI,IAAI,CAACoX,eAAe,CAAE,CACxBrX,KAAMqX,CAAAA,eAAe,GACvB,CACF,CACAE,gBAAgBvX,KAAK,CAAE,CACrB,IAAI,CAAC74F,IAAI,CAAC,UAAA,CAAYivG,kBAAkBpW,KACxC,CAAA,CAAA,CAAA,GAAI,IAAI,CAACC,cAAc,CAAE,CACvBD,KAAAA,CAAMC,cAAc,GACtB,CACA,GAAI,IAAI,CAACoX,eAAe,CAAE,CACxBrX,MAAMqX,eAAe,GACvB,CACF,CACAG,uBAAAA,EAA0B,CACxB,GAAIzuG,QAAAA,CAAS0uG,eAAe,GAAK,QAAA,CAAU,CACzC,IAAI,CAACC,iBAAiB,GACxB,CACF,CACAA,iBAAoB,EAAA,CAClB,IAAI,CAACN,OAAO,CAAG,EACf,CAAA,IAAI,CAACO,QAAQ,CAAG,GAClB,CACAtmE,MAAS,EAAA,CACP,IAAI,MAAMt0C,IAAAA,IAAQ,IAAI,CAAC46G,QAAQ,CAAC,CAC9B,OAAO,IAAI,CAACA,QAAQ,CAAC56G,IAAK,EAC5B,CACA,IAAI,MAAMA,QAAQ,IAAI,CAACq6G,OAAO,CAAC,CAC7B,GAAI,IAAI,CAACA,OAAO,CAAC9sG,cAAc,CAACvN,IAAO,CAAA,CAAA,CACrC,IAAI,CAAC46G,QAAQ,CAAC56G,IAAK,CAAA,CAAG,IAAI,CAACq6G,OAAO,CAACr6G,IAAK,EAC1C,CACF,CACF,CACA66G,UAAU9xG,GAAG,CAAE,CACb,MAAMowG,OAAAA,CAAUG,UAAUvwG,GAC1B,CAAA,CAAA,MAAMmiC,GAAK,IAAI,CAACgvE,eAAe,CAACf,OAAAA,CAAAA,CAChC,OAAO,CAAC,CAAC,IAAI,CAACkB,OAAO,CAACnvE,EAAG,CAC3B,CACA4vE,UAAW/xG,CAAAA,GAAG,CAAE,CACd,MAAMowG,QAAUG,SAAUvwG,CAAAA,GAAAA,CAAAA,CAC1B,MAAMmiC,EAAK,CAAA,IAAI,CAACgvE,eAAe,CAACf,SAChC,OAAO,CAAC,CAAC,IAAI,CAACkB,OAAO,CAACnvE,EAAAA,CAAG,EAAI,CAAC,CAAC,CAAC,IAAI,CAAC0vE,QAAQ,CAAC1vE,EAAAA,CAAG,CAEnD6vE,WAAAA,CAAYhyG,GAAG,CAAE,CACf,MAAMowG,OAAUG,CAAAA,SAAAA,CAAUvwG,KAC1B,MAAMmiC,EAAAA,CAAK,IAAI,CAACgvE,eAAe,CAACf,OAChC,CAAA,CAAA,OAAO,CAAC,CAAC,CAAC,IAAI,CAACkB,OAAO,CAACnvE,EAAG,CAAA,EAAI,CAAC,CAAC,IAAI,CAAC0vE,QAAQ,CAAC1vE,GAAG,CAnHnDjiC,YAAY4zC,OAAO,CAAElqC,QAAU,EAAE,CAAC,CAChC,KAAK,GAAI,IAAI,CAACgnG,QAAQ,CAAG,IAAA,CAAM,IAAI,CAACU,OAAO,CAAG,EAAC,CAAG,IAAI,CAACO,QAAQ,CAAG,EAClE,CAAA,IAAI,CAACf,eAAe,CAAG,IAAI,CAACM,cAAc,CAAC7oG,IAAI,CAAC,IAAI,CACpD,CAAA,IAAI,CAACyoG,aAAa,CAAG,IAAI,CAACQ,YAAY,CAACjpG,IAAI,CAAC,IAAI,CAChD,CAAA,IAAI,CAACwoG,gBAAgB,CAAG,IAAI,CAACU,eAAe,CAAClpG,IAAI,CAAC,IAAI,CACtD,CAAA,IAAI,CAAC0oG,wBAAwB,CAAG,IAAI,CAACS,uBAAuB,CAACnpG,IAAI,CAAC,IAAI,CACtE,CAAA,IAAI,CAAC2oG,kBAAkB,CAAG,IAAI,CAACU,iBAAiB,CAACrpG,IAAI,CAAC,IAAI,EAC1D,GAAIurC,OAAAA,CAAS,CACX,IAAI,CAAC68D,MAAM,CAAC78D,OAAAA,EACd,CACA,IAAI,CAACqmD,cAAc,CAAGvwF,OAAAA,CAAQuwF,cAAc,EAAI,KAChD,CAAA,IAAI,CAACoX,eAAe,CAAG3nG,OAAAA,CAAQ2nG,eAAe,EAAI,MACpD,CAyGF,CA5HMb,SAEGuB,aAAa,CAAG,SAGrB,CALEvB,QAAAA,CAKGwB,WAAW,CAAG,OAAA,CAyHvB,SAASC,oBACP,EAAA,CAAA,OAAO,CAAC,EAAElvG,SAASmvG,kBAAkB,EAAInvG,SAASovG,qBAAqB,EAAIpvG,SAASqvG,wBAAuB,CAC7G,CACA,MAAMC,WACJryG,WAAYsyG,CAAAA,KAAK,CAAEtY,KAAK,CAAC,CACvB,IAAI,CAAC1tF,CAAC,CAAG,CACT,CAAA,IAAI,CAAC0H,CAAC,CAAG,CACT,CAAA,IAAI,CAACu+F,EAAE,CAAG,CACV,CAAA,IAAI,CAACC,EAAE,CAAG,CACV,CAAA,IAAI,CAACC,MAAM,CAAGhF,gBACd,CAAA,IAAI,CAACiF,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,OAAO,CAAG,KACf,CAAA,IAAI,CAACC,MAAM,CAAG,KACd,CAAA,IAAI,CAACC,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,OAAO,CAAG,KAAA,CACf,IAAIC,MAAS,CAAA,CACXzmG,EAAG,CACH0H,CAAAA,CAAAA,CAAG,CACL,CACA,CAAA,GAAIgmF,MAAO,CACT,GAAIA,iBAAiBqY,UAAY,CAAA,CAC/B,MAAMlwG,KAAM,CAAA,qBAAA,CACd,CACA4wG,MAAAA,CAAST,KAAMU,CAAAA,gBAAgB,CAAChZ,KAClC,EAAA,CAAA,KAAO,CACLA,KAAQ,CAAA,GACV,CACA,GAAI+Y,OAAQ,CACV,IAAI,CAACzmG,CAAC,CAAGymG,OAAOzmG,CAChB,CAAA,IAAI,CAAC0H,CAAC,CAAG++F,MAAAA,CAAO/+F,EAAC,CACnB,KAAO,GAAIi+F,oBAAwB,EAAA,CAAA,CACjC,IAAI,CAAC3lG,CAAC,CAAG,CACT,CAAA,IAAI,CAAC0H,CAAC,CAAG,EACX,CAAA,KAAO,CACL,MACF,CACA,GAAIgmF,KAAMtqF,CAAAA,IAAI,GAAK,OAAS,CAAA,CAC1B,GAAIsqF,KAAMiZ,CAAAA,MAAM,CAAG,CAAG,CAAA,CACpB,IAAI,CAACP,UAAU,CAAG,EACpB,CAAA,KAAO,GAAI1Y,KAAMiZ,CAAAA,MAAM,CAAG,CAAG,CAAA,CAC3B,IAAI,CAACP,UAAU,CAAG,CAAC,EACrB,CACF,CACA,GAAIT,uBAAwB,CAC1B,IAAI,CAACM,EAAE,CAAGvY,MAAMkZ,SAAS,EAAIlZ,MAAMmZ,eAAe,EAAInZ,MAAMoZ,YAAY,EAAI,CAC5E,CAAA,IAAI,CAACZ,EAAE,CAAGxY,KAAAA,CAAMqZ,SAAS,EAAIrZ,KAAAA,CAAMsZ,eAAe,EAAItZ,KAAAA,CAAMuZ,YAAY,EAAI,EAC9E,MAAO,CACL,IAAI,CAAChB,EAAE,CAAG,IAAI,CAACjmG,CAAC,CAAGgmG,KAAMkB,CAAAA,MAAM,CAC/B,IAAI,CAAChB,EAAE,CAAG,IAAI,CAACx+F,CAAC,CAAGs+F,KAAMmB,CAAAA,OAAM,CAEjC,GAAIzZ,MAAMtqF,IAAI,GAAK,aAAesqF,KAAMtqF,CAAAA,IAAI,GAAK,SAAW,CAAA,CAC1D,IAAI,CAAC+iG,MAAM,CAAGzY,KAAMyY,CAAAA,OAAM,CAE5B,IAAI,CAACiB,OAAO,CAAGpB,MAAMqB,QAAQ,CAAC76G,KAAK,CAAC,CAAA,CACpC,CAAA,IAAI,CAAC86C,OAAO,CAAGomD,KAAAA,CAAMnjG,MAAM,CAC3B,IAAI,CAAC87G,OAAO,CAAG3Y,KAAM2Y,CAAAA,OAAO,EAAI,KAChC,CAAA,IAAI,CAACC,MAAM,CAAG5Y,KAAM4Y,CAAAA,MAAM,EAAI,KAC9B,CAAA,IAAI,CAACC,QAAQ,CAAG7Y,MAAM6Y,QAAQ,EAAI,KAClC,CAAA,IAAI,CAACC,OAAO,CAAG9Y,MAAM8Y,OAAO,EAAI,KAChC,CAAA,IAAI,CAAC9Y,KAAK,CAAGA,MACf,CACF,CAEA,MAAM4Z,KAAc1zG,SAAAA,YAAAA,CAgClB,OAAO2zG,eAAkB,EAAA,CACvB,OAAO5B,oBACT,EAAA,CACAxB,OAAO78D,OAAO,CAAE,CACd,IAAI,CAACkgE,OAAO,CAAGlgE,OAAAA,CACf,GAAI,IAAI,CAACmgE,SAAS,CAAE,OACpB,IAAI,CAACA,SAAS,CAAG,IAAA,CACjB,MAAMC,cAAiB,CAAA,CACrBC,QAAS,KACX,CAAA,CACA,MAAMvqG,OAAUpO,CAAAA,QAAAA,CAASD,aAAa,CAAG24G,cAAAA,CAAiB,MAC1D/5G,MAAOC,CAAAA,gBAAgB,CAAC,SAAW,CAAA,IAAI,CAACg6G,UAAU,CAAExqG,SACpDzP,MAAOC,CAAAA,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAACi6G,YAAY,CAAEzqG,SACxDzP,MAAOC,CAAAA,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAACk6G,YAAY,CAAE1qG,SACxDzP,MAAOC,CAAAA,gBAAgB,CAAC,OAAS,CAAA,IAAI,CAACm6G,aAAa,CAAE3qG,SACvD,CACAinG,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACoD,SAAS,CAAE,OACrB,IAAI,CAACA,SAAS,CAAG,KACjB,CAAA,IAAI,CAACD,OAAO,CAAG,IACf,CAAA,MAAME,eAAiB,CACrBC,OAAAA,CAAS,KACX,CACA,CAAA,MAAMvqG,QAAUpO,QAASD,CAAAA,aAAa,CAAG24G,cAAiB,CAAA,KAAA,CAC1D/5G,OAAOE,mBAAmB,CAAC,UAAW,IAAI,CAAC+5G,UAAU,CAAExqG,OAAAA,CAAAA,CACvDzP,OAAOE,mBAAmB,CAAC,YAAa,IAAI,CAACg6G,YAAY,CAAEzqG,OAAAA,CAAAA,CAC3DzP,OAAOE,mBAAmB,CAAC,YAAa,IAAI,CAACi6G,YAAY,CAAE1qG,OAAAA,CAAAA,CAC3DzP,OAAOE,mBAAmB,CAAC,QAAS,IAAI,CAACk6G,aAAa,CAAE3qG,OAAAA,EAC1D,CACA4qG,kBAAqB,EAAA,CACnB,GAAI,CAAC,IAAI,CAACR,OAAO,CAAE,OACnB,IAAI,CAACA,OAAO,CAAC55G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAACq6G,mBAAmB,EACvE,CACAC,mBAAoB,CAClB,GAAI,CAAC,IAAI,CAACV,OAAO,CAAE,OACnB,IAAI,CAACA,OAAO,CAAC35G,mBAAmB,CAAC,cAAe,IAAI,CAACo6G,mBAAmB,EAC1E,CACAE,kBAAkBt2D,OAAO,CAAEx5C,KAAK,CAAE,CAChC,GAAI,CAAC5B,QAAAA,CAASK,IAAI,CAACsxG,kBAAkB,CAAE,CACrC,GAAI/vG,MAAO,CACTA,KAAAA,GACF,CACA,MACF,CACA,MAAM3G,CAAI,CAAA,IAAA,CACRmgD,UACAp7C,QAAS5I,CAAAA,mBAAmB,CAAC,mBAAqB6D,CAAAA,CAAAA,EACpD,EACA,MAAM5D,CAAAA,CAAI,KACRuK,KACA5B,EAAAA,CAAAA,QAAAA,CAAS5I,mBAAmB,CAAC,kBAAA,CAAoBC,GACnD,CACA,CAAA,GAAI+jD,QAAS,CACXp7C,QAAAA,CAAS7I,gBAAgB,CAAC,mBAAA,CAAqB8D,EAAG,KACpD,EAAA,CACA,GAAI2G,KAAO,CAAA,CACT5B,SAAS7I,gBAAgB,CAAC,mBAAoBE,CAAG,CAAA,KAAA,EACnD,CACA2I,QAASK,CAAAA,IAAI,CAACsxG,kBAAkB,GAClC,CACAC,kBAAmBx2D,CAAAA,OAAO,CAAE,CAC1B,GAAI,CAACp7C,QAAS6xG,CAAAA,eAAe,CAAE,CAC7B,MACF,CACA,MAAM52G,CAAAA,CAAI,KACRmgD,OACAp7C,EAAAA,CAAAA,QAAAA,CAAS5I,mBAAmB,CAAC,mBAAA,CAAqB6D,GACpD,CACA,CAAA,GAAImgD,QAAS,CACXp7C,QAAAA,CAAS7I,gBAAgB,CAAC,mBAAA,CAAqB8D,EAAG,KACpD,EAAA,CACA+E,SAAS6xG,eAAe,GAC1B,CACAvpE,MAAS,EAAA,CACP,IAAI,CAACwpE,YAAY,CAAC,CAAE,CAAA,CAAG,IAAI,CAAClB,QAAQ,CAAC,CAAE,CACvC,CAAA,IAAI,CAACkB,YAAY,CAAC,CAAA,CAAE,CAAG,IAAI,CAAClB,QAAQ,CAAC,CAAA,CAAE,CACvC,IAAI,CAACkB,YAAY,CAAC,EAAE,CAAG,IAAI,CAAClB,QAAQ,CAAC,GAAE,CAEzC/B,UAAUa,MAAM,CAAE,CAChB,OAAO,IAAI,CAACkB,QAAQ,CAAClB,OAAO,CAE9BZ,WAAWY,MAAM,CAAE,CACjB,OAAO,IAAI,CAACkB,QAAQ,CAAClB,OAAO,EAAI,CAAC,IAAI,CAACoC,YAAY,CAACpC,OAAO,CAE5DX,YAAYW,MAAM,CAAE,CAClB,OAAO,CAAC,IAAI,CAACkB,QAAQ,CAAClB,MAAO,CAAA,EAAI,IAAI,CAACoC,YAAY,CAACpC,MAAO,CAC5D,CACAqC,SAAU9a,CAAAA,KAAK,CAAE,CACf,IAAI,CAAC2Z,QAAQ,CAAC3Z,MAAMyY,MAAM,CAAC,CAAG,KAC9B,CAAA,MAAMr4G,EAAI,IAAIi4G,UAAAA,CAAW,IAAI,CAAErY,KAAAA,CAAAA,CAC/B,GAAI,CAAC5/F,CAAAA,CAAE4/F,KAAK,CAAE,OACd,IAAI,CAAC74F,IAAI,CAAC,SAAW/G,CAAAA,CAAAA,EACvB,CACA26G,WAAY/a,CAAAA,KAAK,CAAE,CACjB,IAAI,CAAC2Z,QAAQ,CAAC3Z,MAAMyY,MAAM,CAAC,CAAG,IAC9B,CAAA,MAAMr4G,EAAI,IAAIi4G,UAAAA,CAAW,IAAI,CAAErY,KAAAA,CAAAA,CAC/B,GAAI,CAAC5/F,CAAAA,CAAE4/F,KAAK,CAAE,OACd,IAAI,CAAC74F,IAAI,CAAC,WAAa/G,CAAAA,CAAAA,EACzB,CACA46G,WAAYhb,CAAAA,KAAK,CAAE,CACjB,MAAM5/F,EAAI,IAAIi4G,UAAAA,CAAW,IAAI,CAAErY,KAAAA,CAAAA,CAC/B,GAAI,CAAC5/F,CAAAA,CAAE4/F,KAAK,CAAE,OACd,IAAI,CAAC74F,IAAI,CAAC,WAAa/G,CAAAA,CAAAA,CACvB,CAAA,IAAI,CAACo5G,MAAM,CAAGp5G,CAAAA,CAAEkS,CAAC,CACjB,IAAI,CAACmnG,MAAM,CAAGr5G,CAAE4Z,CAAAA,EAAC,CAEnBihG,YAAAA,CAAajb,KAAK,CAAE,CAClB,MAAM5/F,CAAI,CAAA,IAAIi4G,WAAW,IAAI,CAAErY,OAC/B,GAAI,CAAC5/F,EAAE4/F,KAAK,CAAE,OACd,IAAI,CAAC74F,IAAI,CAAC,YAAA,CAAc/G,GAC1B,CACA44G,gBAAAA,CAAiBhZ,KAAK,CAAE,CACtB,MAAMtgD,IAAO,CAAA,IAAI,CAACo6D,OAAO,CAACn6D,qBAAqB,EAC/C,CAAA,MAAMvyC,KAAO5P,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAKtyC,CAAAA,IAAI,EACjC,MAAMuV,GAAAA,CAAMnlB,KAAKmQ,KAAK,CAAC+xC,KAAK/8B,GAAG,CAAA,CAC/B,GAAIq9E,KAAMkb,CAAAA,OAAO,CAAG9tG,IAAQ4yF,EAAAA,KAAAA,CAAMkb,OAAO,EAAI9tG,IAAAA,CAAO,IAAI,CAAC0sG,OAAO,CAACqB,WAAW,EAAInb,KAAAA,CAAMob,OAAO,CAAGz4F,GAAAA,EAAOq9E,MAAMob,OAAO,EAAIz4F,IAAM,IAAI,CAACm3F,OAAO,CAACuB,YAAY,CAAE,CACvJ,OAAO,IACT,CACA,OAAO,CACL/oG,CAAG0tF,CAAAA,KAAAA,CAAMkb,OAAO,CAAG9tG,IAAAA,CACnB4M,EAAGgmF,KAAMob,CAAAA,OAAO,CAAGz4F,GACrB,CACF,CA7IA3c,WAAY4zC,CAAAA,OAAO,CAAC,CAClB,KAAK,GAAI,IAAI,CAAC4/D,MAAM,CAAG,CAAA,CAAG,IAAI,CAACC,MAAM,CAAG,CAAG,CAAA,IAAI,CAACE,QAAQ,CAAG,CACzD,KACA,CAAA,KAAA,CACA,MACD,CAAE,IAAI,CAACkB,YAAY,CAAG,CACrB,KACA,CAAA,KAAA,CACA,MACD,CAAE,IAAI,CAACf,OAAO,CAAG,KAAM,IAAI,CAACC,SAAS,CAAG,KACzC,CAAA,IAAI,CAACG,UAAU,CAAG,IAAI,CAACY,SAAS,CAACzsG,IAAI,CAAC,IAAI,CAC1C,CAAA,IAAI,CAAC8rG,YAAY,CAAG,IAAI,CAACY,WAAW,CAAC1sG,IAAI,CAAC,IAAI,CAC9C,CAAA,IAAI,CAAC+rG,YAAY,CAAG,IAAI,CAACY,WAAW,CAAC3sG,IAAI,CAAC,IAAI,CAC9C,CAAA,IAAI,CAACgsG,aAAa,CAAG,IAAI,CAACY,YAAY,CAAC5sG,IAAI,CAAC,IAAI,CAChD,CAAA,IAAI,CAACksG,mBAAmB,CAAIva,QAC1BA,KAAMC,CAAAA,cAAc,GACtB,CACA,CAAA,IAAI,CAACwW,MAAM,CAAC78D,SACd,CA4HF,CAzJI,KAAK0hE,CAAAA,eAAe,CAAG,WAGvB,CALE1B,MAKG2B,eAAe,CAAG,WAGvB,CARE3B,KAAAA,CAQG4B,aAAa,CAAG,SAGrB,CAXE5B,KAWG6B,CAAAA,gBAAgB,CAAG,YAkJ5B,CAAA,MAAMC,WAaJjF,MAAO78D,CAAAA,OAAO,CAAE,CACd,IAAI,CAAC88D,QAAQ,CAAG98D,QAChB,GAAI,IAAI,CAAC+hE,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAClF,MAAM,CAAC78D,OAAAA,EACxB,CACA,GAAI,IAAI,CAACgiE,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACnF,MAAM,CAAC78D,OAAAA,EACrB,CACF,CACA+8D,MAAAA,EAAS,CACP,GAAI,IAAI,CAACgF,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAChF,MAAM,GACvB,CACA,GAAI,IAAI,CAACiF,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACjF,MAAM,GACpB,CACA,IAAI,CAACD,QAAQ,CAAG,KAClB,CACA4D,oBAAqB,CACnB,GAAI,CAAC,IAAI,CAACsB,MAAM,CAAE,CAChB,IAAI,CAACC,YAAY,GACnB,CACA,IAAI,CAACD,MAAM,CAACtB,kBAAkB,GAChC,CACAE,mBAAoB,CAClB,GAAI,CAAC,IAAI,CAACoB,MAAM,CAAE,CAChB,IAAI,CAACC,YAAY,GACnB,CACA,IAAI,CAACD,MAAM,CAACpB,iBAAiB,GAC/B,CACAnpE,OAAOyqE,EAAE,CAAE,CACT,GAAI,IAAI,CAACH,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAACtqE,MAAM,GACvB,CACA,GAAI,IAAI,CAACuqE,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACvqE,MAAM,GACpB,CACA,GAAI,IAAI,CAAC0qE,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC1qE,MAAM,GACvB,CACA,IAAI,CAAC2qE,WAAW,CAAG,GACnB,IAAI,MAAMl2G,OAAO,IAAI,CAACm2G,KAAK,CAAC,CAC1B,IAAI,CAACD,WAAW,CAACl2G,GAAI,CAAA,CAAG,GAAE,CAE9B,CACAo2G,YAAaC,CAAAA,WAAW,CAAEC,MAAM,CAAE,CAChC,IAAI,CAACC,QAAQ,CAACF,WAAAA,CAAY,CAAG,IAAI,CAACE,QAAQ,CAACF,WAAAA,CAAY,EAAI,EAAE,CAC7D,IAAI,CAACE,QAAQ,CAACF,WAAY,CAAA,CAACp9G,IAAI,CAACq9G,MAAAA,EAClC,CACAE,YAAaF,CAAAA,MAAM,CAAElmG,IAAI,CAAE,CACzB,GAAI,CAAC,IAAI,CAACylG,SAAS,CAAE,CACnB,IAAI,CAACY,eAAe,GACtB,CACA,GAAI,IAAI,CAACF,QAAQ,CAACD,MAAAA,CAAO,CAAE,CACzB,MAAM,IAAIj0G,KAAM,CAAA,CAAC,QAAQ,EAAEi0G,MAAAA,CAAO,mBAAmB,CAAC,CACxD,CACA,GAAIlmG,IAAAA,GAASnQ,UAAW,CACtB,MAAM,IAAIoC,KAAM,CAAA,gBAAA,CAClB,CACA,GAAI,CAAC+N,KAAKhY,MAAM,CAAE,CAChBgY,IAAO,CAAA,CACLA,MACD,CAEH,IAAI,CAACgmG,YAAY,CAACE,MAAQ,CAAA,CACxB1mG,KAAMq3F,eACN72F,CAAAA,IACF,GACF,CACAsmG,aAAAA,CAAcJ,MAAM,CAAE3D,MAAM,CAAE,CAC5B,GAAI,CAAC,IAAI,CAACmD,MAAM,CAAE,CAChB,IAAI,CAACC,YAAY,GACnB,CACA,GAAIpD,SAAW1yG,SAAW,CAAA,CACxB,MAAM,IAAIoC,KAAAA,CAAM,iBAClB,CACA,IAAI,CAAC+zG,YAAY,CAACE,OAAQ,CACxB1mG,IAAAA,CAAMo3F,aACN2L,MACF,CAAA,EACF,CACAgE,iBAAkBL,CAAAA,MAAM,CAAEM,GAAG,CAAEjE,MAAM,CAAE,CACrC,GAAIA,MAAW1yG,GAAAA,SAAAA,CAAW,CACxB,MAAM,IAAIoC,MAAM,gBAClB,CAAA,CACA,IAAI,CAAC+zG,YAAY,CAACE,MAAQ,CAAA,CACxB1mG,KAAMs3F,cACNyL,CAAAA,MAAAA,CACAiE,GACF,CACF,EAAA,CACAC,aAAajtG,OAAO,CAAE,CACpB,MAAMnO,IAAAA,CAAOmO,QAAQnO,IAAI,CACzB,GAAI,CAAC,IAAI,CAAC06G,KAAK,CAAC16G,KAAK,CAAE,CACrB,IAAI,CAAC06G,KAAK,CAAC16G,IAAK,CAAA,CAAG,GAAE,CAEvB,MAAMtD,CAAI,CAAA,IAAI,CAACg+G,KAAK,CAAC16G,KAAK,CAACxC,IAAI,CAACwC,IAChCmO,CAAAA,CAAAA,OAAAA,CAAUA,SAAW,EACrBA,CAAAA,OAAQgtG,CAAAA,GAAG,CAAGhtG,OAAQgtG,CAAAA,GAAG,EAAI7I,KAC7B,CAAA,MAAMxlG,KAAO,SAASuuG,UAAU,CAAE/tE,MAAM,CAAEjpC,KAAK,CAAEE,GAAG,CAClD,CAAA,OAAO+oC,MACL,EAAA,IAAK,SACH+tE,UAAWhB,CAAAA,MAAM,CAACt2G,EAAE,CAAC,YAAa,CAAClF,EAAAA,CACjCw8G,WAAWZ,WAAW,CAACz6G,KAAK,CAACtD,CAAAA,CAAE,CAAGmC,CAAEm4G,CAAAA,EAAE,CAAG,GAC3C,CAAA,CAAA,CACA,MACG,IAAA,QAAA,CACHqE,WAAWhB,MAAM,CAACt2G,EAAE,CAAC,WAAA,CAAa,CAChCs3G,EAAAA,CAAAA,UAAAA,CAAWZ,WAAW,CAACz6G,IAAAA,CAAK,CAACtD,CAAE,CAAA,CAAGmC,EAAEo4G,EAAE,CAAG,GAC3C,CACA,CAAA,CAAA,UACG,KACHoE,CAAAA,UAAAA,CAAWX,KAAK,CAAC16G,IAAAA,CAAK,CAACxC,IAAI,CAAC,KAC1B,OAAO69G,UAAAA,CAAWjB,SAAS,CAAC/D,SAAS,CAAC9xG,GAAOF,CAAAA,CAAAA,KAAAA,CAAQ,CACvD,CACA,CAAA,CAAA,UACG,OACHg3G,CAAAA,UAAAA,CAAWX,KAAK,CAAC16G,IAAAA,CAAK,CAACxC,IAAI,CAAC,KAC1B,OAAO69G,UAAAA,CAAWb,SAAS,CAACc,OAAO,CAACntG,OAAQgtG,CAAAA,GAAG,CAAEtH,aACnD,CAAA,CAAA,CAAA,CACA,MACG,IAAA,OAAA,CACHwH,WAAWX,KAAK,CAAC16G,KAAK,CAACxC,IAAI,CAAC,IAC1B,CAAA,OAAO69G,WAAWb,SAAS,CAACc,OAAO,CAACntG,OAAAA,CAAQgtG,GAAG,CAAErH,aAAAA,CACnD,GACA,MACF,IAAK,QACHuH,UAAWX,CAAAA,KAAK,CAAC16G,IAAK,CAAA,CAACxC,IAAI,CAAC,IAAA,CAC1B,OAAO69G,UAAWb,CAAAA,SAAS,CAACc,OAAO,CAACntG,QAAQgtG,GAAG,CAAExH,cACnD,CACA,CAAA,CAAA,UACG,OACH0H,CAAAA,UAAAA,CAAWX,KAAK,CAAC16G,IAAAA,CAAK,CAACxC,IAAI,CAAC,KAC1B,OAAO69G,UAAAA,CAAWb,SAAS,CAACc,OAAO,CAACntG,OAAQgtG,CAAAA,GAAG,CAAEvH,aACnD,CAAA,CAAA,CAAA,CACA,MAEA,QAAA,MAAM,IAAIhtG,KAAM,CAAA,cAAA,CACpB,CACF,CACAkG,CAAAA,IAAAA,CAAK,IAAI,CAAEqB,OAAAA,CAAQotG,QAAQ,CAAE,CAAA,CAAGptG,QAAQqtG,WAAW,CAAA,CACnD,GAAIrtG,OAAQstG,CAAAA,WAAW,EAAIttG,OAAQutG,CAAAA,QAAQ,GAAKvtG,OAAQotG,CAAAA,QAAQ,CAAE,CAChEzuG,IAAAA,CAAK,IAAI,CAAEqB,OAAAA,CAAQutG,QAAQ,CAAE,CAAC,CAAGvtG,CAAAA,OAAAA,CAAQstG,WAAW,EACtD,CACF,CACApF,SAAAA,CAAUsF,UAAU,CAAE,CACpB,GAAI,CAAC,IAAI,CAACb,QAAQ,CAACa,WAAW,CAAE,CAC9B,OAAO,KACT,CACA,MAAMh/G,MAAS,CAAA,IAAI,CAACm+G,QAAQ,CAACa,WAAW,CAACh/G,MAAM,CAC/C,IAAI,IAAI4F,MAAQ,CAAGA,CAAAA,KAAAA,CAAQ5F,OAAQ,EAAE4F,KAAAA,CAAM,CACzC,MAAMs4G,MAAAA,CAAS,IAAI,CAACC,QAAQ,CAACa,UAAW,CAAA,CAACp5G,MAAM,CAC/C,OAAOs4G,OAAO1mG,IAAI,EAChB,KAAKq3F,eACH,CAAA,GAAI,IAAI,CAAC4O,SAAS,CAAE,CAClB,MAAMxlG,IAAMimG,MAAOlmG,CAAAA,IAAI,CAAChY,MAAM,CAC9B,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAC1B,GAAI,IAAI,CAAC09G,SAAS,CAAC/D,SAAS,CAACwE,OAAOlmG,IAAI,CAACjY,EAAE,CAAG,CAAA,CAC5C,OAAO,IACT,CACF,CACF,CACA,MACG6uG,KAAAA,YAAAA,CACH,GAAI,IAAI,CAAC8O,MAAM,EAAI,IAAI,CAACA,MAAM,CAAChE,SAAS,CAACwE,OAAO3D,MAAM,CAAA,CAAG,CACvD,OAAO,IACT,CACA,MACF,KAAKzL,eACH,GAAI,IAAI,CAAC+O,SAAS,EAAI,IAAI,CAACA,SAAS,CAACnE,SAAS,CAACwE,OAAOM,GAAG,CAAEN,OAAO3D,MAAM,CAAA,CAAG,CACzE,OAAO,IACT,CACA,KACJ,CACF,CACA,OAAO,KACT,CACAZ,UAAWqF,CAAAA,UAAU,CAAE,CACrB,GAAI,CAAC,IAAI,CAACb,QAAQ,CAACa,UAAAA,CAAW,CAAE,CAC9B,OAAO,KACT,CACA,MAAMh/G,OAAS,IAAI,CAACm+G,QAAQ,CAACa,UAAAA,CAAW,CAACh/G,MAAM,CAC/C,IAAI,IAAI4F,KAAAA,CAAQ,EAAGA,KAAQ5F,CAAAA,MAAAA,CAAQ,EAAE4F,KAAM,CAAA,CACzC,MAAMs4G,MAAS,CAAA,IAAI,CAACC,QAAQ,CAACa,WAAW,CAACp5G,KAAAA,CAAM,CAC/C,OAAOs4G,MAAAA,CAAO1mG,IAAI,EAChB,KAAKq3F,eAAAA,CACH,GAAI,IAAI,CAAC4O,SAAS,CAAE,CAClB,MAAMxlG,GAAMimG,CAAAA,MAAAA,CAAOlmG,IAAI,CAAChY,MAAM,CAC9B,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,GAAI,IAAI,CAAC09G,SAAS,CAAC9D,UAAU,CAACuE,MAAOlmG,CAAAA,IAAI,CAACjY,CAAE,CAAA,CAAA,CAAG,CAC7C,OAAO,IACT,CACF,CACF,CACA,MACG6uG,KAAAA,YAAAA,CACH,GAAI,IAAI,CAAC8O,MAAM,EAAI,IAAI,CAACA,MAAM,CAAC/D,UAAU,CAACuE,MAAAA,CAAO3D,MAAM,CAAG,CAAA,CACxD,OAAO,IACT,CACA,MACGzL,KAAAA,cAAAA,CACH,GAAI,IAAI,CAAC+O,SAAS,EAAI,IAAI,CAACA,SAAS,CAAClE,UAAU,CAACuE,MAAAA,CAAOM,GAAG,CAAEN,MAAAA,CAAO3D,MAAM,CAAG,CAAA,CAC1E,OAAO,IACT,CACA,KACJ,CACF,CACA,OAAO,KACT,CACAoE,QAAQt7G,IAAI,CAAE,CACZ,IAAIqE,KAAAA,CAAQ,EACZ,GAAI,IAAI,CAACq2G,KAAK,CAAC16G,KAAK,CAAE,CACpB,MAAM4U,GAAM,CAAA,IAAI,CAAC8lG,KAAK,CAAC16G,KAAK,CAACrD,MAAM,CACnC,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,GAAI,OAAO,IAAI,CAACg+G,KAAK,CAAC16G,KAAK,CAACtD,CAAAA,CAAE,GAAK,UAAY,CAAA,CAC7C,MAAMP,CAAI,CAAA,IAAI,CAACu+G,KAAK,CAAC16G,KAAK,CAACtD,CAAAA,CAAE,GAC7B,GAAIT,IAAAA,CAAKma,GAAG,CAACja,CAAAA,CAAAA,CAAKF,KAAKma,GAAG,CAAC/R,OAAQ,CACjCA,KAAAA,CAAQlI,EACV,CACF,CAAA,KAAO,GAAI,IAAI,CAACs+G,WAAW,CAACz6G,IAAAA,CAAK,CAAE,CACjC,GAAI/D,KAAKma,GAAG,CAAC,IAAI,CAACqkG,WAAW,CAACz6G,IAAK,CAAA,CAACtD,EAAE,CAAIT,CAAAA,IAAAA,CAAKma,GAAG,CAAC/R,KAAAA,CAAAA,CAAQ,CACzDA,KAAQ,CAAA,IAAI,CAACo2G,WAAW,CAACz6G,IAAK,CAAA,CAACtD,CAAE,EACnC,CACF,CACF,CACF,CACA,OAAO2H,KACT,CACAi2G,YAAe,EAAA,CACb,IAAI,CAACD,MAAM,CAAG,IAAIhC,KAAAA,CAClB,GAAI,CAAC,IAAI,CAAClD,QAAQ,CAAE,CAClB,MAAM,IAAIvuG,MAAM,2CAClB,CAAA,CACA,IAAI,CAACyzG,MAAM,CAACnF,MAAM,CAAC,IAAI,CAACC,QAAQ,EAClC,CACA6F,eAAAA,EAAkB,CAChB,IAAI,CAACZ,SAAS,CAAG,IAAInF,SACrB,GAAI,CAAC,IAAI,CAACE,QAAQ,CAAE,CAClB,MAAM,IAAIvuG,KAAM,CAAA,2CAAA,CAClB,CACA,IAAI,CAACwzG,SAAS,CAAClF,MAAM,CAAC,IAAI,CAACC,QAAQ,EACrC,CA7PA1wG,YAAY4zC,OAAO,CAAElqC,QAAU,EAAE,CAAC,CAChC,IAAI,CAACgnG,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC2F,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACJ,KAAK,CAAG,EACb,CAAA,IAAI,CAACD,WAAW,CAAG,EACnB,CAAA,IAAI,CAACL,SAAS,CAAGjsG,QAAQumG,QAAQ,EAAI,IACrC,CAAA,IAAI,CAAC2F,MAAM,CAAGlsG,QAAQ4oG,KAAK,EAAI,IAC/B,CAAA,IAAI,CAACyD,SAAS,CAAGrsG,QAAQ1O,QAAQ,EAAI,KACrC,GAAI44C,OAAAA,CAAS,CACX,IAAI,CAAC68D,MAAM,CAAC78D,OAAAA,EACd,CACF,CAmPF,CAEA,MAAMujE,UAAar9G,CAAAA,MAAAA,CAAO4U,MAAM,CAAC,EAAE,EACnC,IAAIzT,WAAAA,CAAc,WAChB,OAAOk8G,UACT,EACA,GAAI,OAAO78G,YAAc,WAAa,CAAA,CACpCW,YAAc,CAACX,UAAUW,WAAW,EAAIX,UAAUY,iBAAiB,EAAID,WAAU,EAAGoN,IAAI,CAAC/N,SAC3F,EAAA,CACA,MAAM88G,YAAe,CAAA,CACnB1D,QAAS,CACPzF,UAAAA,CACAC,WACAC,UACAC,CAAAA,UAAAA,CACAC,iBACAC,gBACAC,CAAAA,gBAAAA,CACAC,iBACAC,UACAC,CAAAA,SAAAA,CACAC,kBACAC,CAAAA,kBAAAA,CACAC,MACAC,CAAAA,QAAAA,CACAC,SACAC,SACAC,CAAAA,UAAAA,CACAU,cACAC,aACAF,CAAAA,qBAAAA,CACAG,mBACAC,OACAC,CAAAA,OACF,EACAsH,IAAM,CAAA,CACJnI,cACAC,aACAC,CAAAA,aAAAA,CACAC,cACAC,gBACAC,CAAAA,gBAAAA,CACAC,cACAC,aACF,CACF,EACA,MAAM6H,IAAAA,CAAO,CACXnoE,OAAS,CAAA,CACPukE,QAAS,CACP,YAAA,CACA,aACA,YACA,CAAA,YAAA,CACA,mBACA,kBACA,CAAA,kBAAA,CACA,mBACA,YACA,CAAA,WAAA,CACA,qBACA,oBACA,CAAA,QAAA,CACA,WACA,UACA,CAAA,WAAA,CACA,aACD,CACD2D,IAAAA,CAAM,CACJ,eACA,CAAA,eAAA,CACA,gBACA,eACD,CACH,EACAE,YAAc,CAAA,CACZ7D,QAAS,CACP,YAAA,CACA,aACA,YACA,CAAA,YAAA,CACA,mBACA,kBACA,CAAA,kBAAA,CACA,mBACA,YACA,CAAA,WAAA,CACA,qBACA,oBACA,CAAA,YAAA,CACD,CACD2D,IAAM,CAAA,CACJ,gBACA,eACA,CAAA,eAAA,CACA,gBACD,CACDG,kBAAAA,CAAoB,CAClB3I,MAAQ,CAAA,CACNvxF,KAAM,CACN3R,CAAAA,GAAAA,CAAK,EACLC,GAAK,CAAA,CACP,EACAkjG,QAAU,CAAA,CACRxxF,KAAM,CACN3R,CAAAA,GAAAA,CAAK,CAAC,CACNC,CAAAA,GAAAA,CAAK,CACP,CACAmjG,CAAAA,QAAAA,CAAU,CACRzxF,IAAM,CAAA,CAAA,CACN3R,IAAK,CAAC,CAAA,CACNC,IAAK,CACP,CAAA,CACAojG,UAAW,CACT1xF,IAAAA,CAAM,EACN3R,GAAK,CAAA,CAAA,CACLC,IAAK,CACP,CACF,CACF,CACA6rG,CAAAA,GAAAA,CAAK,CACH/D,OAAS,CAAA,CACP,aACA,YACA,CAAA,YAAA,CACA,aACA,kBACA,CAAA,kBAAA,CACA,mBACA,kBACA,CAAA,YAAA,CACA,YACA,oBACA,CAAA,oBAAA,CACA,SACA,UACA,CAAA,UAAA,CACA,YACA,YACD,CAAA,CACD2D,KAAM,CACJ,eAAA,CACA,gBACA,eACA,CAAA,eAAA,CACD,CACDK,OAAS,CAAA,UACX,EACAC,UAAY,CAAA,CACVjE,QAAS,CACP,eAAA,CACA,gBACA,uBACA,CAAA,oBAAA,CACA,UACA,SACD,CAAA,CACD2D,KAAM,CACJ,kBAAA,CACA,mBACA,eACA,CAAA,eAAA,CACD,CACDK,OAAS,CAAA,aACX,CACF,CACA,CAAA,MAAME,cAAgB,CACpB,eAAA,CAAiB,KACnB,CACA,CAAA,MAAMC,YAAc,EAAC,CACrB,SAASC,MAAOpB,CAAAA,GAAG,CACjB,CAAA,MAAMqB,MAASF,CAAAA,WAAW,CAACnB,GAAIz0E,CAAAA,EAAE,CAAC,CAClC,GAAI81E,OAAQ,CACV,OAAOA,MACT,CACA,IAAI,MAAMx6G,IAAQq6G,IAAAA,aAAAA,CAAc,CAC9B,GAAIlB,GAAAA,CAAIz0E,EAAE,CAAC/gC,OAAO,CAAC3D,IAAU,CAAA,GAAA,CAAC,EAAG,CAC/B,MAAMy6G,QAAUJ,aAAa,CAACr6G,KAAK,CACnC,GAAI,CAACm5G,GAAIgB,CAAAA,OAAO,CAAE,CAChB,MAAMO,IAAMX,IAAI,CAAC,CAAC,IAAI,EAAEU,QAAQ,CAAC,CAAC,CAClC,GAAIC,GAAAA,CAAK,CACP,OAAOA,GACT,CACF,CACA,OAAOX,IAAI,CAACU,OAAAA,CAAQ,CAExB,CACA,GAAItB,GAAIgB,CAAAA,OAAO,GAAK,aAAe,CAAA,CACjC,OAAOJ,IAAKK,CAAAA,UAAU,CAExB,MAAMO,WAAaZ,IAAKnoE,CAAAA,OAAO,CAC/B,MAAMrwC,GAAAA,CAAM43G,IAAIhD,OAAO,CAACx7G,MAAM,CAAGggH,UAAAA,CAAWxE,OAAO,CAACx7G,MAAM,CAAGo/G,IAAKC,CAAAA,YAAY,CAAGW,UACjFp5G,CAAAA,GAAAA,CAAI44G,OAAO,CAAGhB,GAAAA,CAAIgB,OAAO,CACzB,OAAO54G,GACT,CACA,IAAIq5G,SAAW,GACf,CAAA,SAASC,MAAMC,EAAE,CAAA,CACf,OAAO,IAAInnC,OAAAA,CAAQ,OACjB8G,EAAAA,CAAAA,UAAAA,CAAW11C,QAAS+1E,EACtB,EAAA,CAAA,CACF,CACA,MAAMC,aAAAA,CA6BJjtE,OAAOonE,MAAM,CAAE,CACb,KAAM,CAAE7yG,KAAK,CAAE24G,OAAO,CAAE,CAAG9F,MAAAA,CAC3B,MAAM+F,OAAU/F,CAAAA,MAAAA,CAAO+F,OAAO,EAAI54G,KAAAA,CAAQ,CAC1C,CAAA,IAAI,CAACiyG,UAAU,CAAG,CAAC,IAAI,CAAC0G,OAAO,EAAIA,OACnC,CAAA,IAAI,CAACzG,WAAW,CAAG,IAAI,CAACyG,OAAO,EAAI,CAACA,OACpC,CAAA,IAAI,CAACE,UAAU,CAAG,CAAC,IAAI,CAACD,OAAO,EAAIA,OACnC,CAAA,IAAI,CAAC54G,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC24G,OAAO,CAAGA,OACf,CAAA,IAAI,CAACC,OAAO,CAAGA,QACjB,CArCAx4G,WAAY0H,CAAAA,OAAO,CAAEgxG,QAAQ,CAAC,CAC5B,IAAI,CAAC94G,KAAK,CAAG,CACb,CAAA,IAAI,CAAC24G,OAAO,CAAG,KACf,CAAA,IAAI,CAACC,OAAO,CAAG,KACf,CAAA,IAAI,CAAC3G,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,WAAW,CAAG,KACnB,CAAA,IAAI,CAAC2G,UAAU,CAAG,KAAA,CAClB,GAAI,OAAO/wG,OAAAA,GAAY,SAAU,CAC/B,IAAI,CAAC9H,KAAK,CAAG8H,OACb,CAAA,IAAI,CAAC6wG,OAAO,CAAG7wG,UAAY,CAC3B,CAAA,IAAI,CAAC8wG,OAAO,CAAG9wG,OAAU,CAAA,EAC3B,MAAO,CACL,IAAI,CAAC9H,KAAK,CAAG8H,QAAQ9H,KACrB,CAAA,IAAI,CAAC24G,OAAO,CAAG7wG,OAAAA,CAAQ6wG,OAAO,CAC9B,IAAI,CAACC,OAAO,CAAG9wG,OAAQ8wG,CAAAA,OAAO,EAAI9wG,OAAQ9H,CAAAA,KAAK,CAAG,EACpD,CACA,GAAI84G,QAAU,CAAA,CACZ,GAAI,OAAOA,QAAAA,GAAa,SAAU,CAChC,IAAI,CAAC7G,UAAU,CAAG6G,WAAa,CAAK,EAAA,IAAI,CAACH,OACzC,CAAA,IAAI,CAACzG,WAAW,CAAG4G,QAAAA,GAAa,GAAK,CAAC,IAAI,CAACH,OAC3C,CAAA,IAAI,CAACE,UAAU,CAAGC,QAAAA,GAAa,GAAK,IAAI,CAACF,QAAO,CAClD,KAAO,CACL,IAAI,CAAC3G,UAAU,CAAG,CAAC6G,SAASH,OAAO,EAAI,IAAI,CAACA,OAAO,CACnD,IAAI,CAACzG,WAAW,CAAG4G,SAASH,OAAO,EAAI,CAAC,IAAI,CAACA,OAAO,CACpD,IAAI,CAACE,UAAU,CAAG,EAAEC,SAASF,OAAO,EAAIE,SAAS94G,KAAK,CAAG,CAAA,CAAM,EAAA,IAAI,CAAC44G,QACtE,CACF,CACF,CAWF,CACA,MAAMG,WAAAA,CAAc7+G,MAAO4U,CAAAA,MAAM,CAAC,IAAI4pG,cAAc,CACpD,CAAA,CAAA,CAAA,MAAMM,QAqBJ,IAAIC,SAAAA,EAAY,CACd,OAAO,IAAI,CAACnC,GAAG,CAACmC,SAAS,CAE3BC,iBAAkB,CAChB,KAAM,CAAEzB,IAAI,CAAE3D,OAAO,CAAE,CAAG,IAAI,CAACqF,gBAAgB,CAC/C,MAAMC,WAAAA,CAAc5B,aAAaC,IAAI,CACrC,MAAM4B,cAAiB7B,CAAAA,YAAAA,CAAa1D,OAAO,CAC3C2D,KAAKn/G,MAAM,CAAG,CACdw7G,CAAAA,OAAAA,CAAQx7G,MAAM,CAAG,CAAA,CACjB,MAAMghH,OAAU,CAAA,IAAI,CAACp6G,GAAG,CAACu4G,IAAI,CAC7B,GAAI6B,QAAS,CACX,IAAI,CAACp6G,GAAG,CAACu4G,IAAI,CAACzyG,OAAO,CAAC,CAAC0Y,IAAAA,CAAMrlB,KAC3Bo/G,IAAI,CAAC2B,WAAW,CAAC17F,IAAAA,CAAK,CAAC,CAAG,IAAI,IAAI,CAACo5F,GAAG,CAACW,IAAI,CAACp/G,EAAE,EAAI,EACpD,GACF,CACA,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAG6e,EAAIugG,IAAKn/G,CAAAA,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,IAAI,CACzC,GAAI,CAACo/G,IAAI,CAACp/G,EAAE,CAAE,CACZo/G,IAAI,CAACp/G,CAAAA,CAAE,CAAG,IAAI,EAChB,CACF,CACA,MAAMkhH,WAAa,IAAI,CAACr6G,GAAG,CAAC40G,OAAO,CACnC,GAAIyF,UAAAA,CAAY,CACdA,UAAWv0G,CAAAA,OAAO,CAAC,CAAC6tG,MAAAA,CAAQx6G,KAC1By7G,OAAO,CAACuF,cAAc,CAACxG,MAAAA,CAAO,CAAC,CAAG,IAAI,IAAI,CAACkB,QAAQ,CAAC17G,CAAE,CAAA,EAAI0gH,YAC5D,CACF,EAAA,CACA,MAAMS,qBAAwB,CAAA,IAAI,CAACt6G,GAAG,CAAC04G,kBAAkB,CACzD,GAAI4B,sBAAuB,CACzBt/G,MAAAA,CAAOqlD,OAAO,CAACi6D,qBAAAA,CAAAA,CAAuBx0G,OAAO,CAAE6tG,SAC7C,KAAM,CAAEn1F,IAAI,CAAE1R,GAAG,CAAED,GAAG,CAAE,CAAG8mG,MAAM,CAAC,EAAE,CACpCiB,OAAO,CAACuF,cAAc,CAACxG,MAAM,CAAC,CAAE,CAAA,CAAC,CAAC,CAAG,IAAI,IAAI6F,aAAAA,CAAc9gH,KAAKma,GAAG,CAACrG,KAAKI,KAAK,CAAC,IAAI,CAACuqG,KAAK,CAAC34F,IAAK,CAAA,EAAI,EAAG3R,GAAKC,CAAAA,GAAAA,CAAAA,CAAAA,CAAOpU,KAAKma,GAAG,CAACrG,KAAKI,KAAK,CAAC,IAAI,CAAC2tG,aAAa,CAAC/7F,IAAK,CAAA,EAAI,EAAG3R,GAAKC,CAAAA,GAAAA,CAAAA,CAAAA,EAC5K,GACF,CACA,IAAI,IAAI3T,CAAI,CAAA,CAAA,CAAG6e,EAAI48F,OAAQx7G,CAAAA,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,IAAI,CAC5C,GAAI,CAACy7G,OAAO,CAACz7G,EAAE,CAAE,CACfy7G,OAAO,CAACz7G,CAAAA,CAAE,CAAG,IAAI0gH,YACnB,CACF,CACF,CACAttE,OAAOiuE,OAAO,CAAE,CACd,IAAI,CAAC5C,GAAG,CAAG4C,OAAAA,CACX,MAAMC,YAAe,CAAA,IAAI,CAACF,aAAa,CACvC,MAAMhC,IAAO,CAAA,IAAI,CAACpB,KAClBsD,CAAAA,YAAarhH,CAAAA,MAAM,CAAG,CACtBqhH,CAAAA,YAAAA,CAAaxgH,IAAI,CAAIs+G,GAAAA,IAAAA,CACrBA,CAAAA,IAAKn/G,CAAAA,MAAM,CAAG,CACdm/G,CAAAA,IAAAA,CAAKt+G,IAAI,CAAIugH,GAAAA,OAAAA,CAAQjC,IAAI,CACzB,CAAA,MAAM3D,QAAU,IAAI,CAACC,QAAQ,CAC7B,IAAI,IAAI17G,CAAI,CAAA,CAAA,CAAG6e,EAAI48F,OAAQx7G,CAAAA,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,IAAI,CAC5Cy7G,OAAO,CAACz7G,CAAE,CAAA,CAACozC,MAAM,CAACiuE,OAAAA,CAAQ5F,OAAO,CAACz7G,CAAAA,CAAE,EACtC,CACA,OAAO,IAAI,CAEbuhH,UAAU16G,GAAG,CAAE,CACbA,GAAI44G,CAAAA,OAAO,CAAG,QACdG,CAAAA,WAAW,CAAC,IAAI,CAAC51E,EAAE,CAAC,CAAGnjC,GACvB,CAAA,IAAI,CAACA,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC44G,OAAO,CAAG,QACf,CAAA,IAAI,CAACoB,eAAe,GACtB,CACAW,QAAW,EAAA,CACT,GAAI5B,WAAW,CAAC,IAAI,CAAC51E,EAAE,CAAC,CAAE,CACxB,OAAO41E,WAAW,CAAC,IAAI,CAAC51E,EAAE,CAAC,CAC3B,MAAMnjC,GAAAA,CAAMg5G,OAAO,IAAI,CAACpB,GAAG,CAC3B,CAAA,IAAI,CAAC53G,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC44G,OAAO,CAAG54G,GAAI44G,CAAAA,OAAO,CAC1B,IAAI,CAACoB,eAAe,GACtB,CACF,CACA,IAAIzB,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC0B,gBAAgB,CAAC1B,IAAI,CAACv4G,GAAG,CAAC,CAAC+I,EAAIA,IAC7C,CACA,IAAI6rG,SAAU,CACZ,OAAO,IAAI,CAACqF,gBAAgB,CAACrF,OAAO,CAAC50G,GAAG,CAAEgJ,GAAIA,CAChD,EAAA,CAAA,CACA,MAAM4xG,KAAMC,CAAAA,SAAS,CAAEhvB,QAAQ,CAAEjhF,OAAO,CAAE,CACxC,MAAMkwG,SAAY,CAAA,IAAI,CAAClD,GAAG,CAACmD,iBAAiB,CAAG,CAC7C,IAAI,CAACnD,GAAG,CAACmD,iBAAiB,CAC3B,CAAG,IAAI,CAACnD,GAAG,CAACoD,eAAe,EAAI3C,UAChC,CAAA,GAAIyC,UAAU1hH,MAAM,CAAE,CACpB,MAAM6hH,UAAarwG,CAAAA,OAAAA,EAASqwG,YAAc,CAC1C,CAAA,MAAMC,gBAAkBtwG,OAASswG,EAAAA,eAAAA,EAAmBL,UACpD,MAAMM,aAAAA,CAAgBvwG,SAASuwG,aAAiBN,EAAAA,SAAAA,CAChD,MAAMhsC,OAAU,CAAA,MAAMuD,QAAQplC,GAAG,CAAC8tE,UAAU96G,GAAG,CAAC,MAAOo7G,QACrD,EAAA,CAAA,GAAI,CAACA,QAAU,CAAA,CACb,OAAO,IACT,CACA,GAAIA,QAASC,CAAAA,UAAU,CAAE,CACvB,OAAOD,SAASC,UAAU,CAACD,SAASxqG,IAAI,CAAE,CACxCi7E,QACAovB,CAAAA,UAAAA,CACAC,gBACAC,aACF,CAAA,CACF,MAAO,GAAIC,QAAAA,CAASR,KAAK,CAAE,CACzB,MAAMtB,KAAM2B,CAAAA,UAAAA,CAAAA,CACZ,OAAOG,QAASR,CAAAA,KAAK,CAACC,SAAWhvB,CAAAA,QAAAA,CACnC,CACA,OAAO,KACT,IACA,OAAOhd,OAAAA,CAAQ9N,IAAI,CAAEtoE,GAAIA,CAAM,GAAA,IAAA,EAAQA,IAAM,UAC/C,CAAA,CACA,OAAO,KACT,CACA6iH,UAAUt8G,KAAK,CAAE,CACf,MAAM20G,MAAAA,CAAS,IAAI,CAACsG,gBAAgB,CAACrF,OAAO,CAAC51G,KAAM,CAAA,CACnD,OAAO20G,MAAAA,CAASA,SAAWkG,WAC7B,CACA/G,UAAUa,MAAM,CAAE,CAChB,OAAO,IAAI,CAAC2H,SAAS,CAAC3H,QAAQ8F,OAChC,CACA1G,UAAWY,CAAAA,MAAM,CAAE,CACjB,OAAO,IAAI,CAAC2H,SAAS,CAAC3H,MAAQZ,CAAAA,CAAAA,UAAU,CAE1CC,WAAAA,CAAYW,MAAM,CAAE,CAClB,OAAO,IAAI,CAAC2H,SAAS,CAAC3H,MAAAA,CAAAA,CAAQX,WAAW,CAE3CuI,UAAU5H,MAAM,CAAE,CAChB,OAAO,IAAI,CAAC2H,SAAS,CAAC3H,QAAQ+F,OAChC,CACAC,UAAWhG,CAAAA,MAAM,CAAE,CACjB,OAAO,IAAI,CAAC2H,SAAS,CAAC3H,MAAQgG,CAAAA,CAAAA,UAAU,CAE1C3oE,QAAAA,CAAS2iE,MAAM,CAAE,CACf,OAAO,IAAI,CAAC2H,SAAS,CAAC3H,MAAAA,CAAAA,CAAQ7yG,KAAK,CAErCi3G,QAAQv5F,IAAI,CAAE,CACZ,MAAMzV,CAAAA,CAAI,IAAI,CAACwvG,IAAI,CAAC/5F,IAAK,CAAA,CACzB,OAAOzV,CAAKrQ,EAAAA,IAAAA,CAAKma,GAAG,CAAC9J,CAAAA,CAAAA,CAAKswG,SAAWtwG,CAAI,CAAA,CAC3C,CArJA7H,WAAYs5G,CAAAA,OAAO,CAAEx6G,GAAG,CAAC,CACvB,IAAI,CAACi6G,gBAAgB,CAAG,CACtBrF,QAAS,EAAE,CACX2D,KAAM,EACR,CACA,CAAA,IAAI,CAACp1E,EAAE,CAAGq3E,QAAQr3E,EAClB,CAAA,IAAI,CAACnkC,KAAK,CAAGw7G,OAAAA,CAAQx7G,KAAK,CAC1B,IAAI,CAAC61G,QAAQ,CAAG2F,OAAQ5F,CAAAA,OAAO,CAAC50G,GAAG,CAAC,CAAK,EAAA,IAAIw5G,cAAcxwG,CAC3D,CAAA,CAAA,CAAA,IAAI,CAACmuG,KAAK,CAAG,CACRqD,GAAAA,OAAAA,CAAQjC,IAAI,CAEjB,CAAA,IAAI,CAACgC,aAAa,CAAG,CAAA,GAChBC,QAAQjC,IAAI,CAChB,CACD,IAAI,CAACK,OAAO,CAAG54G,IAAI44G,OACnB,CAAA,IAAI,CAAC54G,GAAG,CAAGA,GACX,CAAA,IAAI,CAACw7G,IAAI,CAAGhB,OAAQgB,CAAAA,IAAI,EAAI,MAC5B,CAAA,IAAI,CAAC5D,GAAG,CAAG4C,OACX,CAAA,IAAI,CAACR,eAAe,GACtB,CAmIF,CACA,MAAMyB,iBAAiBr6G,YAkBrB,CAAA,IAAIi4G,SAASv4G,KAAK,CAAE,CAClBu4G,QAAWv4G,CAAAA,MACb,CACA,IAAIu4G,QAAAA,EAAW,CACb,OAAOA,QACT,CACA,IAAIO,QAAAA,EAAW,CACb,MAAMhxG,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,IAAI,IAAIzP,EAAI,CAAG6e,CAAAA,CAAAA,CAAIpP,QAAQxP,MAAM,CAAED,EAAI6e,CAAG7e,CAAAA,CAAAA,EAAAA,CAAI,CAC5C,MAAMy7G,OAAAA,CAAUhsG,OAAO,CAACzP,CAAAA,CAAE,CAAC07G,QAAQ,CACnC,GAAI,CAAC,IAAI,CAAC6G,SAAS,CAACviH,EAAE,CAAE,CACtB,IAAI,CAACuiH,SAAS,CAACviH,CAAE,CAAA,CAAG,GAAE,CAExB,IAAI,IAAIumF,CAAAA,CAAI,EAAGzrE,CAAI2gG,CAAAA,OAAAA,CAAQx7G,MAAM,CAAEsmF,CAAAA,CAAIzrE,EAAGyrE,CAAI,EAAA,CAAA,CAC5C,MAAMi0B,MAASiB,CAAAA,OAAO,CAACz7G,CAAE,CACzB,CAAA,IAAI,CAACygH,QAAQ,CAACzgH,CAAAA,CAAE,CAACumF,CAAE,CAAA,CAAGi0B,OAAS,CAACA,MAAAA,CAAOZ,UAAU,EAAIY,MAAAA,CAAO8F,OAAO,EAAI9F,MAAAA,CAAOX,WAAW,CAAG,MAC9F,CACF,CACA,IAAI,CAAC0I,SAAS,CAACtiH,MAAM,CAAG,IAAI,CAACwP,OAAO,CAACxP,MAAM,CAC3C,OAAO,IAAI,CAACsiH,SAAS,CAEvBC,mBAAAA,CAAoBzgB,KAAK,CAAE,CACzB,MAAM0c,GAAM,CAAA,IAAIkC,QAAQ5e,KAAMsf,CAAAA,OAAO,CAAE,IAAI,CAACxB,MAAM,CAAC9d,KAAAA,CAAMsf,OAAO,CAChE,CAAA,CAAA,MAAM5xG,QAAU,IAAI,CAACA,OAAO,CAC5B,IAAIgzG,SAAWhzG,OAAQizG,CAAAA,SAAS,CAAC,EAACC,EAAKA,GAAG98G,KAAK,GAAK44G,IAAI54G,KAAK,CAAA,CAC7D,MAAM48G,QAAa,GAAA,CAAC,EAAE,CACpBhzG,OAAAA,CAAQ3G,MAAM,CAAC25G,QAAAA,CAAU,GACzBA,QAAWhzG,CAAAA,OAAAA,CAAQizG,SAAS,CAAEC,EAAKA,EAAAA,EAAAA,CAAG98G,KAAK,GAAK44G,IAAI54G,KAAK,EAC3D,CACA4J,OAAQ3O,CAAAA,IAAI,CAAC29G,GACb,CAAA,CAAA,IAAI,CAACv1G,IAAI,CAAC,mBAAoBu1G,GAChC,EAAA,CACAmE,uBAAuB7gB,KAAK,CAAE,CAC5B,MAAMtyF,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,MAAMgzG,QAAAA,CAAWhzG,QAAQizG,SAAS,CAAC,EAAMC,EAAAA,EAAAA,CAAG98G,KAAK,GAAKk8F,KAAAA,CAAMsf,OAAO,CAACx7G,KAAK,EACzE,GAAI48G,QAAAA,GAAa,CAAC,CAAG,CAAA,CACnB,IAAI,CAACv5G,IAAI,CAAC,qBAAuBuG,CAAAA,OAAO,CAACgzG,QAAS,CAAA,CAAA,CAClDhzG,QAAQ3G,MAAM,CAAC25G,SAAU,CAC3B,EAAA,CACF,CACArvE,MAAS,EAAA,CACP,IAAI,CAACyvE,IAAI,GACX,CACAA,IAAAA,CAAKC,KAAO,EAAE,CAAE,CACd,GAAIA,IAAAA,CAAK7iH,MAAM,CAAG,CAAA,CAAG,CACnB6iH,IAAK7iH,CAAAA,MAAM,CAAG,EAChB,CACA,MAAM8iH,UAAa//G,CAAAA,WAAAA,EAAAA,CACnB,IAAI,IAAIhD,CAAAA,CAAI,EAAGkY,GAAM6qG,CAAAA,UAAAA,CAAW9iH,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CACnD,GAAI+iH,UAAU,CAAC/iH,EAAE,CAAE,CACjB,MAAMy+G,GAAM,CAAA,IAAI,CAACuE,WAAW,CAACD,UAAU,CAAC/iH,CAAAA,CAAE,CAAC6F,KAAK,CAAA,CAChD,GAAI44G,GAAK,CAAA,CACPqE,KAAKhiH,IAAI,CAAC29G,IAAIrrE,MAAM,CAAC2vE,UAAU,CAAC/iH,CAAAA,CAAE,GACpC,CAAO,KAAA,CACL,MAAMijH,IAAO,CAAA,IAAItC,QAAQoC,UAAU,CAAC/iH,EAAE,CAAE,IAAI,CAAC6/G,MAAM,CAACkD,UAAU,CAAC/iH,CAAAA,CAAE,GACjE,IAAI,CAACyP,OAAO,CAAC3O,IAAI,CAACmiH,IAClBH,CAAAA,CAAAA,IAAAA,CAAKhiH,IAAI,CAACmiH,IAAAA,EACZ,CACF,CACF,CACA,OAAOH,IACT,CACA35E,SAAU,CACRnnC,MAAAA,CAAOE,mBAAmB,CAAC,kBAAA,CAAoB,IAAI,CAACghH,0BAA0B,CAAE,KAChFlhH,CAAAA,CAAAA,MAAAA,CAAOE,mBAAmB,CAAC,qBAAA,CAAuB,IAAI,CAACihH,6BAA6B,CAAE,KACxF,EAAA,CACAtD,OAAOpB,GAAG,CAAE,CACV,OAAOoB,MAAOpB,CAAAA,GAAAA,CAChB,CACA9E,SAAUyJ,CAAAA,UAAU,CAAE5I,MAAM,CAAE,CAC5B,OAAO,IAAI,CAAC/qG,OAAO,CAAC2zG,WAAW,EAAEzJ,SAAAA,CAAUa,SAAW,KACxD,CACAZ,WAAWwJ,UAAU,CAAE5I,MAAM,CAAE,CAC7B,OAAO,IAAI,CAAC/qG,OAAO,CAAC2zG,UAAAA,CAAW,EAAExJ,UAAWY,CAAAA,MAAAA,CAAAA,EAAW,KACzD,CACAX,WAAAA,CAAYuJ,UAAU,CAAE5I,MAAM,CAAE,CAC9B,OAAO,IAAI,CAAC/qG,OAAO,CAAC2zG,UAAW,CAAA,EAAEvJ,YAAYW,MAAW,CAAA,EAAA,KAC1D,CACAoE,OAAQwE,CAAAA,UAAU,CAAE/9F,IAAI,CAAE,CACxB,OAAO,IAAI,CAAC5V,OAAO,CAAC2zG,WAAW,EAAExE,OAAAA,CAAQv5F,OAAS,CACpD,CACAo8F,MAAM2B,UAAU,CAAE1B,SAAS,CAAEhvB,QAAQ,CAAEjhF,OAAO,CAAE,CAC9C,MAAMgtG,GAAAA,CAAM,IAAI,CAAChvG,OAAO,CAAC2zG,UAAW,CAAA,CACpC,OAAO3E,GAAMA,CAAAA,GAAAA,CAAIgD,KAAK,CAACC,SAAAA,CAAWhvB,QAAUjhF,CAAAA,OAAAA,CAAAA,CAAWwnE,OAAQ5uC,CAAAA,OAAO,CAAC,KACzE,CAAA,CACAg5E,SAAS3B,SAAS,CAAEhvB,QAAQ,CAAEjhF,OAAO,CAAE,CACrC,OAAOwnE,QAAQplC,GAAG,CAAC,IAAI,CAACpkC,OAAO,CAAC5I,GAAG,CAAC,GAAO43G,EAAAA,GAAAA,CAAIgD,KAAK,CAACC,SAAAA,CAAWhvB,SAAUjhF,OAC5E,CAAA,CAAA,CAAA,CACA6xG,SAASt5E,EAAE,CAAE,CACX,OAAO,IAAI,CAACv6B,OAAO,CAACqvD,IAAI,CAAE6jD,IAAKA,EAAMA,EAAAA,EAAAA,CAAG34E,EAAE,GAAKA,EAAAA,CAAAA,EAAO,IACxD,CACAg5E,WAAAA,CAAYn9G,KAAK,CAAE,CACjB,OAAO,IAAI,CAAC4J,OAAO,CAACqvD,IAAI,CAAC,EAAC6jD,EAAKA,IAAMA,EAAG98G,CAAAA,KAAK,GAAKA,KAAU,CAAA,EAAA,IAC9D,CAxGAkC,WAAa,EAAA,CACX,KAAK,EACL,CAAA,IAAI,CAACw7G,iBAAiB,CAAGlgH,QAASN,CAAAA,QAAQ,CAC1C,IAAI,CAAC0M,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC8yG,SAAS,CAAG,EAAE,CACnB,IAAI,CAACW,0BAA0B,CAAG,IAAI,CAACV,mBAAmB,CAACpyG,IAAI,CAAC,IAAI,CACpE,CAAA,IAAI,CAAC+yG,6BAA6B,CAAG,IAAI,CAACP,sBAAsB,CAACxyG,IAAI,CAAC,IAAI,EAC1EpO,MAAOC,CAAAA,gBAAgB,CAAC,kBAAoB,CAAA,IAAI,CAACihH,0BAA0B,CAAE,OAC7ElhH,MAAOC,CAAAA,gBAAgB,CAAC,qBAAuB,CAAA,IAAI,CAACkhH,6BAA6B,CAAE,OACnF,IAAI,CAACN,IAAI,GACX,CA+FF,CA9GI,QAFEP,CAEGkB,sBAAsB,CAAG,kBAG9B,CALElB,QAKGmB,CAAAA,yBAAyB,CAAG,qBA6GrC,CAAA,SAASC,qBAAqB7gH,KAAK,CAAA,CACjC,IAAI8gH,YAAe,CAAA,CAAA,CACnB,IAAIC,YAAe,CAAA,CAAA,CACnB,IAAIhlH,MAASiE,CAAAA,KAAAA,CAAMjE,MAAM,CACzB,MAAM,EAAEA,MAAAA,YAAkBilH,WAAU,CAAMjlH,EAAAA,MAAAA,CAAO,CAC/CA,MAASA,CAAAA,MAAAA,CAAOklH,WAAU,CAE5B,MAAMllH,MAAO,CAAA,CACX+kH,cAAgB/kH,MAAOmlH,CAAAA,UAAU,CAAGnlH,MAAOolH,CAAAA,UAAU,CACrDJ,YAAgBhlH,EAAAA,MAAAA,CAAOqlH,SAAS,CAAGrlH,MAAAA,CAAOslH,SAAS,CACnDtlH,MAAAA,CAASA,OAAOulH,aAClB,CACA,OAAO,CACL9vG,EAAGxR,KAAMuhH,CAAAA,KAAK,CAAGT,YACjB5nG,CAAAA,CAAAA,CAAGlZ,MAAMwhH,KAAK,CAAGT,YACnB,CACF,CACA,MAAMU,KACJv8G,CAAAA,WAAAA,CAAYlF,KAAK,CAAC,CAChB,MAAMi4G,MAAS4I,CAAAA,oBAAAA,CAAqB7gH,MACpC,CAAA,IAAI,CAACmnC,EAAE,CAAGnnC,MAAMslE,UAChB,CAAA,IAAI,CAAC9zD,CAAC,CAAGymG,MAAAA,CAAOzmG,CAAC,CACjB,IAAI,CAAC0H,CAAC,CAAG++F,MAAO/+F,CAAAA,CAAC,CACjB,IAAI,CAACnd,MAAM,CAAGiE,MAAMjE,MACpB,CAAA,IAAI,CAACiE,KAAK,CAAGA,MACf,CACF,CACA,MAAM0hH,WASJC,YAAax6E,CAAAA,EAAE,CAAEz/B,IAAI,CAAE,CACrB,OAAOA,IAAAA,CAAKu0D,IAAI,CAAEj8D,OAAQA,KAAMmnC,CAAAA,EAAE,GAAKA,EAAAA,CAAAA,EAAO,IAChD,CAVAjiC,YAAYkiC,MAAM,CAAE83D,KAAK,CAAC,CACxB,IAAI,CAAC0iB,OAAO,CAAG,EACf,CAAA,IAAI,CAACC,cAAc,CAAG,EAAE,CACxB,IAAI,CAAC/oE,OAAO,CAAGomD,MAAMnjG,MACrB,CAAA,IAAI,CAACmjG,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC0iB,OAAO,CAAGzlH,KAAAA,CAAM2qB,IAAI,CAACo4E,KAAAA,CAAM0iB,OAAO,CAAE59G,CAAAA,GAAG,CAAC,KAAChE,EAAQ,IAAIyhH,KAAMzhH,CAAAA,KAAAA,CAAAA,CAChE,CAAA,IAAI,CAAC6hH,cAAc,CAAG1lH,KAAAA,CAAM2qB,IAAI,CAACo4E,KAAAA,CAAM2iB,cAAc,CAAE79G,CAAAA,GAAG,CAAC,KAAChE,EAAQ,IAAIyhH,KAAMzhH,CAAAA,KAAAA,CAAAA,EAChF,CAIF,CAEA,MAAM8hH,oBAAoB18G,YAsBxBuwG,CAAAA,MAAAA,CAAO78D,OAAO,CAAE,CACd,GAAI,IAAI,CAAC88D,QAAQ,CAAE,CACjB,IAAI,CAACC,MAAM,GACb,CACA,IAAI,CAACD,QAAQ,CAAG98D,QAChB,IAAI,CAAC88D,QAAQ,CAACx2G,gBAAgB,CAAC,YAAc,CAAA,IAAI,CAAC2iH,aAAa,CAAE,OACjE,IAAI,CAACnM,QAAQ,CAACx2G,gBAAgB,CAAC,UAAY,CAAA,IAAI,CAAC4iH,WAAW,CAAE,OAC7D,IAAI,CAACpM,QAAQ,CAACx2G,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAACk6G,YAAY,CAAE,OAC/D,IAAI,CAAC1D,QAAQ,CAACx2G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAAC6iH,cAAc,CAAE,OACrE,CACApM,MAAAA,EAAS,CACP,GAAI,IAAI,CAACD,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACv2G,mBAAmB,CAAC,YAAc,CAAA,IAAI,CAAC0iH,aAAa,CAAE,OACpE,IAAI,CAACnM,QAAQ,CAACv2G,mBAAmB,CAAC,UAAY,CAAA,IAAI,CAAC2iH,WAAW,CAAE,OAChE,IAAI,CAACpM,QAAQ,CAACv2G,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAACi6G,YAAY,CAAE,OAClE,IAAI,CAAC1D,QAAQ,CAACv2G,mBAAmB,CAAC,cAAe,IAAI,CAAC4iH,cAAc,CAAE,KAAA,EACxE,CACA,IAAI,CAACrM,QAAQ,CAAG,KAClB,CACAsM,iBAAkB5iH,CAAAA,CAAC,CAAE,CACnB,IAAI,CAAC+G,IAAI,CAAC,aAAc,IAAIq7G,UAAAA,CAAW,IAAI,CAAEpiH,CAAAA,CAAAA,EAC/C,CACA6iH,eAAgB7iH,CAAAA,CAAC,CAAE,CACjB,IAAI,CAAC+G,IAAI,CAAC,WAAY,IAAIq7G,UAAAA,CAAW,IAAI,CAAEpiH,CAAAA,CAAAA,EAC7C,CACA8iH,gBAAiB9iH,CAAAA,CAAC,CAAE,CAClBA,CAAAA,CAAE6/F,cAAc,EAChB,CAAA,IAAI,CAAC94F,IAAI,CAAC,YAAa,IAAIq7G,UAAAA,CAAW,IAAI,CAAEpiH,CAAAA,CAAAA,EAC9C,CACA+iH,kBAAmB/iH,CAAAA,CAAC,CAAE,CACpB,IAAI,CAAC+G,IAAI,CAAC,cAAe,IAAIq7G,UAAAA,CAAW,IAAI,CAAEpiH,CAAAA,CAAAA,EAChD,CAxCA4F,WAAY4zC,CAAAA,OAAO,CAAC,CAClB,KAAK,EACL,CAAA,IAAI,CAAC88D,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACmM,aAAa,CAAG,IAAI,CAACG,iBAAiB,CAAC30G,IAAI,CAAC,IAAI,CACrD,CAAA,IAAI,CAACy0G,WAAW,CAAG,IAAI,CAACG,eAAe,CAAC50G,IAAI,CAAC,IAAI,CACjD,CAAA,IAAI,CAAC+rG,YAAY,CAAG,IAAI,CAAC8I,gBAAgB,CAAC70G,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAAC00G,cAAc,CAAG,IAAI,CAACI,kBAAkB,CAAC90G,IAAI,CAAC,IAAI,CACvD,CAAA,IAAI,CAACooG,MAAM,CAAC78D,SACd,CAiCF,CApDI,WAAKwpE,CAAAA,gBAAgB,CAAG,YAGxB,CALER,YAKGS,cAAc,CAAG,UAGtB,CARET,WAAAA,CAQGU,eAAe,CAAG,WAGvB,CAXEV,WAWGW,CAAAA,iBAAiB,CAAG,aA6C7B,CAAA,MAAMC,KAiDJxjH,GAAI8I,CAAAA,GAAG,CAAE4G,OAAO,CAAEnK,QAAQ,CAAE,CAC1B,GAAI,OAAOmK,OAAAA,GAAY,WAAY,CACjCnK,QAAAA,CAAWmK,QACXA,OAAU,CAAA,GACZ,CACA,MAAM1R,MAAS,CAAA,IAAI,CAACg0E,OAAO,CAAC,KAAOlpE,CAAAA,GAAAA,CAAK4G,QAASnK,QACjD,CAAA,CAAA,KAAM,CAAEk+G,QAAQ,CAAE,CAAG/zG,OACrB,CAAA,GAAI+zG,SAAU,CACZ,MAAMr+G,QAAU,KAAC46F,EAAAA,CACf,GAAIA,KAAM0jB,CAAAA,gBAAgB,CAAE,CAC1BD,QAAAA,CAASt8G,IAAI,CAAC,UAAA,CAAY64F,MAAM2jB,MAAM,CAAE3jB,MAAMtmD,KAAK,EACrD,CACF,CACA,CAAA,MAAMkqE,WAAa,KAAC5jB,EAAAA,CAClB56F,QAAQ46F,KACRhiG,CAAAA,CAAAA,MAAAA,CAAOmC,mBAAmB,CAAC,WAAA,CAAaiF,SACxCpH,MAAOmC,CAAAA,mBAAmB,CAAC,UAAYiF,CAAAA,OAAAA,CAAAA,CACvCpH,OAAOmC,mBAAmB,CAAC,UAAWyjH,UACxC,EAAA,CAAA,CACA5lH,OAAOkC,gBAAgB,CAAC,YAAakF,OACrCpH,CAAAA,CAAAA,MAAAA,CAAOkC,gBAAgB,CAAC,UAAA,CAAYkF,SACpCpH,MAAOkC,CAAAA,gBAAgB,CAAC,SAAW0jH,CAAAA,UAAAA,EACrC,CACA,OAAO5lH,MACT,CACA6lH,IAAK/6G,CAAAA,GAAG,CAAEmP,IAAI,CAAEvI,OAAO,CAAEnK,QAAQ,CAAE,CACjC,GAAI,OAAOmK,OAAY,GAAA,UAAA,CAAY,CACjCnK,QAAWmK,CAAAA,OAAAA,CACXA,OAAU,CAAA,GACZ,CACAA,QAAQo0G,QAAQ,CAAG7rG,KACnB,OAAO,IAAI,CAAC+5D,OAAO,CAAC,OAAQlpE,GAAK4G,CAAAA,OAAAA,CAASnK,SAC5C,CACAw+G,GAAAA,CAAIj7G,GAAG,CAAEmP,IAAI,CAAEvI,OAAO,CAAEnK,QAAQ,CAAE,CAChC,GAAI,OAAOmK,OAAAA,GAAY,WAAY,CACjCnK,QAAAA,CAAWmK,QACXA,OAAU,CAAA,GACZ,CACAA,OAAAA,CAAQo0G,QAAQ,CAAG7rG,IAAAA,CACnB,OAAO,IAAI,CAAC+5D,OAAO,CAAC,KAAA,CAAOlpE,IAAK4G,OAASnK,CAAAA,QAAAA,CAC3C,CACAy+G,GAAIl7G,CAAAA,GAAG,CAAE4G,OAAO,CAAEnK,QAAQ,CAAE,CAC1B,GAAI,OAAOmK,OAAAA,GAAY,WAAY,CACjCnK,QAAAA,CAAWmK,QACXA,OAAU,CAAA,GACZ,CACA,OAAO,IAAI,CAACsiE,OAAO,CAAC,QAAUlpE,CAAAA,GAAAA,CAAK4G,QAASnK,QAC9C,CAAA,CACAysE,QAAQiyC,MAAM,CAAEn7G,GAAG,CAAE4G,OAAO,CAAEnK,QAAQ,CAAE,CACtC,IAAIoL,GAAAA,CAAK/B,MAAOk1G,QAChB,CAAA,IAAII,OAAU,CAAA,KAAA,CACd,GAAI,OAAOx0G,UAAY,UAAY,CAAA,CACjCnK,SAAWmK,OACXA,CAAAA,OAAAA,CAAU,GACZ,CACA,GAAIA,OAAQy0G,CAAAA,KAAK,CAAE,CACjBz0G,OAAAA,CAAU5P,OAAOskH,MAAM,CAAC,CACtBC,OAAS,CAAA,CAAA,CACTC,WAAY,CACd,CAAA,CAAG50G,SACL,CACAA,OAAAA,CAAQnK,QAAQ,CAAGA,QAAAA,CACnB,GAAImK,OAAQ60G,CAAAA,KAAK,EAAI,IAAM,CAAA,CACzB70G,QAAQ60G,KAAK,CAAG,KAClB,CACA,GAAI70G,QAAQ80G,OAAO,EAAI,KAAM,CAC3B90G,OAAAA,CAAQ80G,OAAO,CAAG,GACpB,CACA,GAAI90G,QAAQo0G,QAAQ,EAAI,KAAM,CAC5B,GAAIp0G,QAAQo0G,QAAQ,YAAYW,SAAU,CACxCX,QAAAA,CAAWp0G,QAAQo0G,SACrB,MAAO,GAAIp0G,OAAAA,CAAQo0G,QAAQ,YAAYY,QAAAA,CAAU,CAC/CZ,QAAWp0G,CAAAA,OAAAA,CAAQo0G,SAAQ,CAC7B,KAAO,GAAIp0G,OAAQo0G,CAAAA,QAAQ,YAAYhkH,MAAQ,CAAA,CAC7C,IAAI6kH,WAAcj1G,CAAAA,OAAAA,CAAQ80G,OAAO,CAAC,cAAA,CAAe,CACjD,GAAIG,WAAAA,GAAgB5+G,UAAW,CAC7B2J,OAAAA,CAAQ80G,OAAO,CAAC,cAAA,CAAe,CAAGhB,IAAKoB,CAAAA,WAAW,CAACC,eAAe,CAClEF,YAAcj1G,OAAQ80G,CAAAA,OAAO,CAAC,cAAe,EAC/C,CACA,OAAOG,WAAAA,EACL,KAAKnB,IAAKoB,CAAAA,WAAW,CAACC,eAAe,CACnC,CACEf,QAAW,CAAA,EAAA,CACX,IAAIgB,UAAa,CAAA,IAAA,CACjB,IAAI,MAAMh/G,GAAAA,IAAO4J,QAAQo0G,QAAQ,CAAC,CAChC,GAAIp0G,OAAAA,CAAQo0G,QAAQ,CAACx5G,cAAc,CAACxE,GAAM,CAAA,CAAA,CACxC,GAAIg/G,UAAY,CAAA,CACdA,WAAa,MACf,CAAA,KAAO,CACLhB,QAAY,EAAA,IACd,CACA,MAAMiB,UAAAA,CAAar0G,mBAAmB5K,GACtC,CAAA,CAAA,MAAMk/G,aAAet0G,kBAAmBhB,CAAAA,OAAAA,CAAQo0G,QAAQ,CAACh+G,GAAAA,CAAI,EAC7Dg+G,QAAY,EAAA,CAAC,EAAEiB,UAAW,CAAA,CAAC,EAAEC,YAAa,CAAA,EAAC,CAE/C,CACA,KACF,CACF,QACA,KAAKxB,IAAKoB,CAAAA,WAAW,CAACK,IAAI,CACxB,GAAIN,WAAe,EAAA,IAAA,CAAM,CACvBj1G,OAAAA,CAAQ80G,OAAO,CAAC,eAAe,CAAGhB,IAAAA,CAAKoB,WAAW,CAACK,KAAI,CAEzDnB,QAAAA,CAAWmB,KAAKC,SAAS,CAACx1G,QAAQo0G,QAAQ,CAAA,CAC1C,KACJ,CACF,CAAA,KAAO,CACLA,QAAWp0G,CAAAA,OAAAA,CAAQo0G,SAAQ,CAE/B,CACA,GAAIp0G,OAAAA,CAAQwgC,KAAK,GAAK,KAAA,CAAO,CAC3B,MAAMi1E,SAAAA,CAAY71G,MAClBqB,GAAM,CAAA,IAAIV,IAAInH,GACd,CAAA,CAAA,GAAI,CAAC6H,GAAI/B,CAAAA,KAAK,CAAE,CACd+B,GAAAA,CAAI/B,KAAK,CAAG,CAAC,GAAG,EAAEu2G,SAAAA,CAAU,EAAC,CAC/B,KAAO,CACLx0G,GAAI/B,CAAAA,KAAK,CAAG,CAAC,EAAE+B,IAAI/B,KAAK,CAAC,IAAI,EAAEu2G,SAAAA,CAAU,EAAC,CAE5Cr8G,IAAM6H,GAAIhT,CAAAA,QAAQ,GACpB,CACA,GAAI+R,QAAQd,KAAK,CAAE,CACjB+B,GAAM,CAAA,IAAIV,IAAInH,GACd8F,CAAAA,CAAAA,KAAAA,CAAQhS,OAAO+T,GAAIT,CAAAA,QAAQ,GAAIR,OAAQd,CAAAA,KAAK,EAC5C+B,GAAIJ,CAAAA,QAAQ,CAAC3B,KACb9F,CAAAA,CAAAA,GAAAA,CAAM6H,IAAIhT,QAAQ,GACpB,CACA,MAAMynH,GAAAA,CAAM,IAAIC,cAChBD,CAAAA,GAAAA,CAAIE,IAAI,CAACrB,MAAAA,CAAQn7G,IAAK4G,OAAQ60G,CAAAA,KAAK,CACnCa,CAAAA,GAAAA,CAAIG,eAAe,CAAG71G,OAAAA,CAAQ61G,eAAe,GAAKx/G,SAAAA,CAAY2J,QAAQ61G,eAAe,CAAG,KACxFH,CAAAA,GAAAA,CAAII,YAAY,CAAG91G,OAAAA,CAAQ81G,YAAY,EAAI,IAAI,CAACC,kBAAkB,CAAC38G,KACnE,IAAI,MAAM48G,UAAUh2G,OAAQ80G,CAAAA,OAAO,CAAC,CAClC,GAAI90G,QAAQ80G,OAAO,CAACl6G,cAAc,CAACo7G,MAAAA,CAAAA,CAAS,CAC1CN,GAAIO,CAAAA,gBAAgB,CAACD,MAAQh2G,CAAAA,OAAAA,CAAQ80G,OAAO,CAACkB,MAAAA,CAAO,EACtD,CACF,CACAN,IAAIQ,kBAAkB,CAAG,KACvB,IAAI,CAACC,mBAAmB,CAAC5B,MAAAA,CAAQn7G,IAAK4G,OAAS01G,CAAAA,GAAAA,EACjD,CACAA,CAAAA,GAAAA,CAAIj8G,OAAO,CAAG,IAAA,CACZ,IAAI,CAAC28G,QAAQ,CAAC7B,MAAQn7G,CAAAA,GAAAA,CAAK4G,QAAS01G,GACpClB,CAAAA,CAAAA,OAAAA,CAAU,KACZ,CAAA,CACA,GAAI,CACFkB,IAAIW,IAAI,CAACjC,UACX,CAAE,MAAO1jH,EAAG,CACV,GAAI,CAAC8jH,OAAS,CAAA,CACZx0G,QAAQ/E,KAAK,CAACy6G,IAAI/2B,MAAM,CAAE+2B,IAAKhlH,CACjC,EAAA,CACF,CACA,OAAOglH,GACT,CACAK,kBAAmB38G,CAAAA,GAAG,CAAE,CACtB,MAAM6H,IAAM,IAAIV,GAAAA,CAAInH,KACpB,MAAMxJ,GAAAA,CAAM1B,KAAKyB,YAAY,CAACsR,IAAI/S,IAAI,CAAA,CAAEooH,WAAW,EACnD,CAAA,GAAIxC,KAAKyC,gBAAgB,CAAC/+G,OAAO,CAAC5H,GAAAA,CAAAA,EAAQ,EAAG,CAC3C,OAAOkkH,KAAK0C,YAAY,CAAC/mC,YAAY,CACvC,KAAO,GAAI7/E,GAAQ,GAAA,OAAA,CAAS,CAC1B,OAAOkkH,IAAAA,CAAK0C,YAAY,CAACjB,IAAI,CACxB,KAAA,GAAI3lH,MAAQ,MAAQ,CAAA,CACzB,OAAOkkH,IAAK0C,CAAAA,YAAY,CAACC,QAC3B,CACA,OAAO3C,IAAAA,CAAK0C,YAAY,CAACE,IAAI,CAE/BC,oBAAAA,CAAqB1B,WAAW,CAAE,CAChC,MAAM2B,QAAW,CAAA,CACf9C,KAAKoB,WAAW,CAAC2B,KAAK,CACtB/C,IAAAA,CAAKoB,WAAW,CAAC4B,GAAG,CACpBhD,IAAKoB,CAAAA,WAAW,CAAC6B,GAAG,CACpBjD,KAAKoB,WAAW,CAAC8B,GAAG,CACpBlD,IAAAA,CAAKoB,WAAW,CAAC+B,GAAG,CACpBnD,IAAKoB,CAAAA,WAAW,CAACgC,GAAG,CACpBpD,KAAKoB,WAAW,CAACiC,GAAG,CACpBrD,IAAAA,CAAKoB,WAAW,CAACkC,IAAI,CACrBtD,IAAKoB,CAAAA,WAAW,CAACmC,GAAG,CACrB,CACD,GAAIT,QAAAA,CAASp/G,OAAO,CAACy9G,WAAAA,CAAAA,EAAgB,EAAG,CACtC,OAAO,IACT,CACA,OAAO,KACT,CACAqC,qBAAAA,CAAsBxB,YAAY,CAAE,CAClC,OAAOA,YAAiBhC,GAAAA,IAAAA,CAAK0C,YAAY,CAAC/mC,YAAY,EAAIqmC,YAAiBhC,GAAAA,IAAAA,CAAK0C,YAAY,CAACe,IAAI,EAAIzB,YAAiBhC,GAAAA,IAAAA,CAAK0C,YAAY,CAACjB,IAAI,CAE9IY,mBAAAA,CAAoB5B,MAAM,CAAEn7G,GAAG,CAAE4G,OAAO,CAAE01G,GAAG,CAAE,CAC7C,GAAIA,GAAAA,CAAI8B,UAAU,GAAK,EAAG,CACxB,OAAO9B,IAAI/2B,MAAM,EACf,KAAK,CACH,CAAA,CACE,GAAI+2B,GAAI+B,CAAAA,WAAW,EAAI/B,GAAI+B,CAAAA,WAAW,CAAC3oH,UAAU,CAAC,YAAa,CAC7D,IAAI,CAAC4oH,UAAU,CAACnD,OAAQn7G,GAAK4G,CAAAA,OAAAA,CAAS01G,KACxC,CAAO,KAAA,CACL,IAAI,CAACU,QAAQ,CAAC7B,MAAQn7G,CAAAA,GAAAA,CAAK4G,QAAS01G,GACtC,EAAA,CACA,KACF,CACF,KAAK,IACL,KAAK,GAAA,CACL,KAAK,GACL,CAAA,KAAK,IACH,CACE,IAAI,CAACgC,UAAU,CAACnD,OAAQn7G,GAAK4G,CAAAA,OAAAA,CAAS01G,KACtC,KACF,CACF,QACE,CACE,IAAI,CAACU,QAAQ,CAAC7B,OAAQn7G,GAAK4G,CAAAA,OAAAA,CAAS01G,KACpC,KACF,CACJ,CACF,CACF,CACAgC,WAAWnD,MAAM,CAAEn7G,GAAG,CAAE4G,OAAO,CAAE01G,GAAG,CAAE,CACpC,IAAIiC,QAAAA,CACJ,IAAI1C,WACJ,CAAA,MAAMe,OAASN,GAAIkC,CAAAA,iBAAiB,CAAC,cAAA,CAAA,CACrC,GAAI5B,MAAAA,CAAQ,CACV,MAAM/mH,KAAAA,CAAQ+mH,OAAO9mH,KAAK,CAAC,KAC3B+lH,WAAchmH,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACm2D,IAAI,GAC7B,CACA,GAAI,CACF,GAAI,IAAI,CAACuxD,oBAAoB,CAAC1B,WAAgB,CAAA,EAAA,IAAI,CAACqC,qBAAqB,CAAC5B,IAAII,YAAY,CAAA,CAAG,CAC1F6B,QAAWjC,CAAAA,GAAAA,CAAIiC,SAAQ,CACzB,KAAO,GAAI1C,WAAgBnB,GAAAA,IAAAA,CAAKoB,WAAW,CAACK,IAAI,EAAIn8G,GAAIlK,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAC,EAAE,CAACF,QAAQ,CAAC,OAAU,CAAA,CAAA,CACvF2oH,SAAWpC,IAAKsC,CAAAA,KAAK,CAACnC,GAAIoC,CAAAA,YAAY,EACxC,CAAO,KAAA,GAAIpC,IAAII,YAAY,GAAKhC,KAAK0C,YAAY,CAACC,QAAQ,EAAIxB,WAAAA,GAAgBnB,KAAKoB,WAAW,CAAC6C,GAAG,CAAE,CAClGJ,SAAWjC,GAAIsC,CAAAA,YAAW,CACrB,KAAA,CACLL,SAAWjC,GAAIoC,CAAAA,aAAY,CAE7B93G,OAAAA,CAAQnK,QAAQ,CAAC,IAAA,CAAM8hH,QACzB,EAAA,CAAE,MAAOv9G,GAAAA,CAAK,CACZ4F,OAAQnK,CAAAA,QAAQ,CAACuE,GACnB,EAAA,CACF,CACAg8G,QAAS7B,CAAAA,MAAM,CAAEn7G,GAAG,CAAE4G,OAAO,CAAE01G,GAAG,CAAE,CAClC,GAAI11G,QAAQi4G,QAAQ,CAAE,CACpB,MACF,CACA,GAAIj4G,OAAQy0G,CAAAA,KAAK,EAAIz0G,OAAQ20G,CAAAA,OAAO,CAAG30G,OAAQ40G,CAAAA,UAAU,CAAE,CACzD50G,OAAAA,CAAQ20G,OAAO,EACf30G,CAAAA,QAAQi4G,QAAQ,CAAG,KACnB,MAAMC,UAAAA,CAAat2G,KAAKI,KAAK,CAAClU,KAAKkV,GAAG,CAAC,EAAGhD,OAAQ20G,CAAAA,OAAO,EAAIb,IAAKoE,CAAAA,UAAU,CAAE,CAAGl4G,CAAAA,OAAAA,CAAQm4G,aAAa,EAAI,GAAA,CAAA,CAC1Gn9G,QAAQ88F,GAAG,CAAC,CAAC,EAAEyc,MAAAA,CAAO,EAAE,EAAEn7G,GAAAA,CAAI,SAAS,EAAEs8G,GAAAA,CAAI/2B,MAAM,CAAC,cAAc,EAAEu5B,UAAW,CAAA,GAAG,CAAC,CACnF5pC,CAAAA,UAAAA,CAAW,KACTtuE,OAAQi4G,CAAAA,QAAQ,CAAG,KACnB,CAAA,IAAI,CAAC31C,OAAO,CAACiyC,OAAQn7G,GAAK4G,CAAAA,OAAAA,CAASA,QAAQnK,QAAQ,EACrD,EAAGqiH,UACL,EAAA,CAAA,KAAO,CACLl4G,OAAQnK,CAAAA,QAAQ,CAAC6/G,GAAI/2B,CAAAA,MAAM,GAAK,CAAI,CAAA,eAAA,CAAkB+2B,IAAI/2B,MAAM,CAAE,MACpE,CACF,CACF,CA1SI,IAFEm1B,CAEGoB,WAAW,CAAG,CACjBkD,IAAK,WACLvB,CAAAA,KAAAA,CAAO,cACPC,GAAK,CAAA,0BAAA,CACLC,IAAK,WACL5B,CAAAA,eAAAA,CAAiB,oCACjBkD,GAAK,CAAA,WAAA,CACLrB,IAAK,mBACLsB,CAAAA,IAAAA,CAAM,aACN/C,IAAM,CAAA,kBAAA,CACN0B,IAAK,YACLC,CAAAA,GAAAA,CAAK,YACLC,GAAK,CAAA,WAAA,CACLC,KAAM,0BACNmB,CAAAA,GAAAA,CAAK,YACL7B,IAAM,CAAA,YAAA,CACNW,IAAK,aACLU,CAAAA,GAAAA,CAAK,iBACP,CAGA,CAvBEjE,KAuBG0C,YAAY,CAAG,CAClBE,IAAM,CAAA,MAAA,CACNjnC,aAAc,aACd8nC,CAAAA,IAAAA,CAAM,OACNd,QAAU,CAAA,UAAA,CACVlB,KAAM,MACR,CAGA,CAhCEzB,IAgCGyC,CAAAA,gBAAgB,CAAG,CACtB,QAAA,CACA,OACA,MACA,CAAA,MAAA,CACA,OACA,MACA,CAAA,MAAA,CACA,OACA,QACA,CAAA,MAAA,CACA,OACD,CAGD,CA/CEzC,IAAAA,CA+CGoE,UAAU,CAAG,GAAA,CA8PtB,MAAMM,IAAO,CAAA,IAAI1E,KAEjB,MAAM2E,eAAAA,CAAkB,SACxB,MAAMC,gBAAAA,CAAmB,UACzB,MAAMC,oBAAAA,CAAuB,aAE7B,CAAMC,MAAAA,QAAAA,CAMJC,aAAc,CACZ,OAAO,IAAI,CAAChmG,QAAQ,CAEtBimG,WAAAA,CAAYjmG,QAAQ,CAAE,CACpB,IAAI,CAACA,QAAQ,CAACvlB,IAAI,CAACulB,UACnB,MAAMkmG,QAAAA,CAAW,IAAI,CAACA,QAAQ,CAC9B,GAAIA,QAAAA,CAAU,CACZ,GAAI,WAAA,GAAeA,SAAU,CAC3BA,QAAAA,CAASC,SAAS,CAAC9iH,KAAK,CAAG2c,QAASjQ,CAAAA,CAAC,CACrCm2G,QAAAA,CAASE,SAAS,CAAC/iH,KAAK,CAAG2c,QAASvI,CAAAA,CAAC,CACrCyuG,QAAAA,CAASG,SAAS,CAAChjH,KAAK,CAAG2c,QAASpI,CAAAA,EAAC,CAChC,KAAA,GAAIsuG,SAASD,WAAW,CAAE,CAC/BC,QAASD,CAAAA,WAAW,CAACjmG,QAASjQ,CAAAA,CAAC,CAAEiQ,QAASvI,CAAAA,CAAC,CAAEuI,QAASpI,CAAAA,CAAC,EACzD,CACF,CACF,CACA0uG,cAAeC,CAAAA,WAAW,CAAE,CAC1B,IAAI,CAACA,WAAW,CAAC9rH,IAAI,CAAC8rH,WAAAA,CAAAA,CACtB,MAAML,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC9B,GAAIA,QAAU,CAAA,CACZ,MAAM1vG,CAAI+vG,CAAAA,WAAAA,CAAY7wG,IAAI,CAC1B,GAAI,aAAcwwG,QAAU,CAAA,CAC1BA,SAASM,QAAQ,CAACnjH,KAAK,CAAG,CAACmT,CAAC,CAAC,CAAA,CAAE,CAC/B0vG,QAAAA,CAASO,QAAQ,CAACpjH,KAAK,CAAG,CAACmT,CAAC,CAAC,CAAE,CAC/B0vG,CAAAA,QAASQ,CAAAA,QAAQ,CAACrjH,KAAK,CAAG,CAACmT,CAAC,CAAC,GAAG,CAChC0vG,SAASS,GAAG,CAACtjH,KAAK,CAAGmT,CAAC,CAAC,CAAE,CACzB0vG,CAAAA,QAASU,CAAAA,GAAG,CAACvjH,KAAK,CAAGmT,CAAC,CAAC,CAAA,CAAE,CACzB0vG,QAAAA,CAASW,GAAG,CAACxjH,KAAK,CAAGmT,CAAC,CAAC,GAAE,CAC3B,KAAO,GAAI0vG,QAAAA,CAASI,cAAc,CAAE,CAClCJ,QAASI,CAAAA,cAAc,CAAC,CAAC9vG,CAAC,CAAC,CAAE,CAAA,CAAE,CAACA,CAAC,CAAC,EAAE,CAAE,CAACA,CAAC,CAAC,EAAA,CAAG,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,EAChE,CACF,CACF,CACAswG,cAAiB,EAAA,CACf,OAAO,IAAI,CAACP,WAAW,CAEzB,IAAIL,QAAW,EAAA,CACb,MAAMvkC,OAAU,CAAA,IAAI,CAAColC,QAAQ,CAACplC,OAAO,CACrC,OAAOA,QAAUA,OAAQukC,CAAAA,QAAQ,CAAG,IACtC,CA5CAziH,YAAYujH,OAAO,CAAC,CAClB,IAAI,CAAChnG,QAAQ,CAAG,IAAIrI,IACpB,CAAA,IAAI,CAAC4uG,WAAW,CAAG,IAAItoG,IACvB,CAAA,IAAI,CAAC8oG,QAAQ,CAAGC,QAClB,CAyCF,CAEA,MAAMC,qBAAAA,CAAwB,UAC9B,MAAMC,iBAAAA,CAAoB,CACxB,OACA,CAAA,YAAA,CACA,YACD,CACD,MAAMC,qBAAqBxjH,YAWzB,CAAA,IAAIunC,OAAOA,MAAM,CAAE,CACjBA,MAASn8B,CAAAA,IAAAA,CAAKI,KAAK,CAAC+7B,MAAAA,CAAQ,EAAG,CAC/B,CAAA,CAAA,IAAI,CAACpB,OAAO,CAAGoB,MACf,CAAA,IAAI,CAACtmC,IAAI,CAAC,eAAgBsmC,MAC5B,EAAA,CACA,IAAIA,MAAS,EAAA,CACX,OAAO,IAAI,CAACpB,OAAO,CAErB,IAAIs9E,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAI1lC,OAAU,EAAA,CACZ,GAAI,CAAC,IAAI,CAAC2lC,QAAQ,EAAI,IAAI,CAACC,YAAY,CAAE,CACvC,IAAI,CAACD,QAAQ,CAAG,IAAI,IAAI,CAACC,YAAY,CACrC,GAAI,IAAI,CAACD,QAAQ,CAAC1tC,KAAK,GAAKqtC,sBAAuB,CACjD,IAAI,CAACO,wBAAwB,GAC/B,CACF,CACA,OAAO,IAAI,CAACF,QAAQ,CAEtBG,OAAAA,EAAU,CACR,GAAI,CAAC,IAAI,CAACJ,cAAc,CAAE,CACxB,IAAI,CAACA,cAAc,CAAG,IAAA,CACtB,GAAI,IAAI,CAACC,QAAQ,EAAI,IAAI,CAACA,QAAQ,CAAC1tC,KAAK,GAAKqtC,qBAAAA,CAAuB,CAClE,IAAI,CAACS,QAAQ,GACf,CACF,CACF,CACAC,MAAAA,EAAS,CACP,GAAI,IAAI,CAACN,cAAc,CAAE,CACvB,IAAI,CAACA,cAAc,CAAG,KAAA,CACtB,GAAI,IAAI,CAACC,QAAQ,EAAI,IAAI,CAACA,QAAQ,CAAC1tC,KAAK,GAAKqtC,qBAAAA,CAAuB,CAClE,IAAI,CAACW,OAAO,GACd,CACF,CACF,CACA/iF,OAAAA,EAAU,CACR,IAAI,CAACjgC,IAAI,CAAC,SAAA,CAAA,CACV,GAAI,IAAI,CAAC0iH,QAAQ,CAAE,CACjB,IAAI,CAACO,sBAAsB,EAC3B,CAAA,IAAI,CAACP,QAAQ,EAAEQ,OACf,CAAA,IAAI,CAACR,QAAQ,CAAG,KAClB,CACF,CACAM,SAAU,CACR,IAAI,CAACN,QAAQ,CAACK,MAAM,EAAGhgH,CAAAA,IAAI,CAAC,IAC1B,CAAA,MAAM2kC,OAAS,IAAI,CAACg7E,QAAQ,CAACS,kBAAkB,EAC/Cz7E,CAAAA,MAAAA,CAAOl2B,MAAM,CAAG,IAAI,CAACkxG,QAAQ,CAACjiE,YAAY,CAAC,CAAA,CAAG,EAAG,IAAI,CAACiiE,QAAQ,CAACU,UAAU,EACzE17E,MAAO27E,CAAAA,OAAO,CAAC,IAAI,CAACX,QAAQ,CAACY,WAAW,EACxC57E,MAAOnf,CAAAA,KAAK,CAAC,CACbmf,CAAAA,CAAAA,OAAO67E,OAAO,CAAG,KACf77E,EAAAA,CAAAA,MAAAA,CAAO87E,UAAU,CAAC,CAAA,CAAA,CAClB,IAAI,CAACxjH,IAAI,CAAC,QACZ,EAAA,EACF,EAAG,CAAC/G,EAAAA,IAAQ09F,KAAK,CAAC,CAAM,EAAA,EAAA,EAC1B,CACAmsB,QAAW,EAAA,CACT,IAAI,CAACJ,QAAQ,CAACG,OAAO,EAAA,CAAG9/G,IAAI,CAAC,IAAA,CAC3B,IAAI,CAAC/C,IAAI,CAAC,SACZ,EAAA,CAAA,CAAG,CAAM,EAAA,EAAA,CAAA,CAAG22F,KAAK,CAAE19F,CAAK,EAAA,EAAA,EAC1B,CACAwqH,cAAAA,EAAiB,CACf,IAAI,CAACR,sBAAsB,EAC3B,CAAA,GAAI,CAAC,IAAI,CAACR,cAAc,EAAI,IAAI,CAACC,QAAQ,CAAC1tC,KAAK,GAAKqtC,qBAAAA,CAAuB,CACzE,IAAI,CAACW,OAAO,GACd,CACF,CACAJ,wBAA2B,EAAA,CACzBN,kBAAkB7+G,OAAO,CAAC,SACxB3K,EAAAA,CAAAA,MAAAA,CAAOC,gBAAgB,CAAC2qH,SAAAA,CAAW,IAAI,CAACC,kBAAkB,CAAE,KAC9D,EAAA,CAAA,EACF,CACAV,sBAAyB,EAAA,CACvBX,kBAAkB7+G,OAAO,CAAC,SACxB3K,EAAAA,CAAAA,MAAAA,CAAOE,mBAAmB,CAAC0qH,SAAAA,CAAW,IAAI,CAACC,kBAAkB,CAAE,KACjE,EAAA,CAAA,EACF,CAtFA9kH,WAAa,EAAA,CACX,KAAK,EACL,CAAA,IAAI,CAAC6jH,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,YAAY,CAAG,OAAOA,YAAAA,GAAiB,aAAeA,YAAgB,EAAA,OAAOiB,qBAAuB,WAAeA,EAAAA,kBAAAA,CACxH,GAAI,CAAC,IAAI,CAACjB,YAAY,CAAA,CACtB,IAAI,CAACgB,kBAAkB,CAAG,IAAI,CAACF,cAAc,CAACv8G,IAAI,CAAC,IAAI,CACvD,CAAA,IAAI,CAACu7G,cAAc,CAAG,KACtB,CAAA,IAAI,CAACnB,QAAQ,CAAG,IAAIH,SAAS,IAAI,CACjC,CAAA,IAAI,CAACj8E,OAAO,CAAG,EACjB,CA8EF,CAEA,MAAM2+E,MAQJ,IAAIr6B,QAAAA,EAAW,CACb,IAAIA,QAAAA,CAAW,EACf,GAAI,IAAI,CAACh4E,MAAM,CAAE,CACfg4E,QAAW,CAAA,IAAI,CAACh4E,MAAM,CAACg4E,SAAQ,CACjC,KAAO,GAAI,IAAI,CAACs6B,KAAK,CAAE,CACrBt6B,SAAW,IAAI,CAACs6B,KAAK,CAACt6B,SAAQ,CAEhC,OAAOA,UAAY,CACrB,CAfA3qF,YAAYw/C,QAAQ,CAAC,CACnB,GAAIA,QAAAA,YAAoB0lE,MAAO,CAC7B,IAAI,CAACD,KAAK,CAAGzlE,SACf,CAAO,KAAA,CACL,IAAI,CAAC7sC,MAAM,CAAG6sC,SAChB,CACF,CAUF,CAEA,SAAS2lE,eACP,EAAA,CAAA,OAAO,CAAC,EAAE,OAAOrB,YAAAA,GAAiB,aAAe,OAAOiB,kBAAAA,GAAuB,WAAU,CAC3F,CAEA,MAAMK,aAAgB,CAAA,CAAA,CACtB,MAAMC,YAAe,CAAA,CAAA,CACrB,MAAMC,aAAgB,CAAA,CAAA,CACtB,SAASC,OAAQl2G,CAAAA,IAAI,CAAEs7E,QAAQ,CAAA,CAC7B,OAAOt7E,IAAOs7E,CAAAA,QAAAA,EAAY,CAC5B,CACA,MAAM66B,sBAAsBtlH,YAuD1B,CAAA,IAAIulH,YAAY7lH,KAAK,CAAE,CACrB,GAAIA,KAAAA,CAAQ,EAAG,OACf,GAAI,IAAI,CAAC8lH,MAAM,GAAKN,aAAe,CAAA,CACjC,MAAMpB,OAAU,CAAA,IAAI,CAAC2B,sBACrB,CAAA,IAAI,CAACA,sBAAsB,CAAG,IAAA,CAC9B,IAAI,CAACC,IAAI,EACT,CAAA,IAAI,CAACC,YAAY,CAAGjmH,MACpB,IAAI,CAACkmH,IAAI,EACT,CAAA,IAAI,CAACH,sBAAsB,CAAG3B,QAChC,CAAA,KAAO,CACL,IAAI,CAAC6B,YAAY,CAAGjmH,KACpB,CAAA,IAAI,CAACmmH,YAAY,CAAGnmH,MACtB,CACF,CACA,IAAI6lH,aAAc,CAChB,GAAI,IAAI,CAACI,YAAY,GAAK,IAAM,CAAA,CAC9B,OAAO,IAAI,CAACA,YAAY,CAE1B,GAAI,IAAI,CAACH,MAAM,GAAKL,YAAAA,CAAc,CAChC,OAAO,IAAI,CAACU,YACd,CACA,GAAI,IAAI,CAACL,MAAM,GAAKJ,eAAiB,CAAC,IAAI,CAACz8E,MAAM,CAAE,CACjD,OAAO,CACT,CACA,IAAI,CAACm9E,kBAAkB,EACvB,CAAA,OAAO,IAAI,CAACD,YAAY,CAE1B,IAAIp7B,SAAS/qF,KAAK,CAAE,CAClB,IAAI,CAACqmH,SAAS,CAAGzuH,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGmW,OAAOniB,KAAU,CAAA,EAAA,CAAA,CAAA,CAC9C,MAAMsmH,SAAY,CAAA,IAAI,CAACR,MAAM,GAAKN,cAClC,IAAI,CAACQ,IAAI,EACT,CAAA,GAAIM,UAAW,CACb,IAAI,CAACJ,IAAI,GACX,CACF,CACA,IAAIn7B,UAAW,CACb,GAAI,CAAC,IAAI,CAACw7B,MAAM,CAAE,CAChB,OAAO,CACT,CACA,GAAI,IAAI,CAACF,SAAS,CAAE,CAClB,OAAOV,QAAQ,IAAI,CAACU,SAAS,CAAE,IAAI,CAACE,MAAM,CAACx7B,QAAQ,CACrD,CACA,OAAO,IAAI,CAACw7B,MAAM,CAACx7B,QAAQ,CAE7B,IAAIy7B,UAAW,CACb,OAAO,IAAI,CAACV,MAAM,GAAKL,YACzB,CACA,IAAIa,SAAY,EAAA,CACd,OAAO,IAAI,CAACR,MAAM,GAAKN,aACzB,CACA,IAAIiB,SAAAA,EAAY,CACd,OAAO,IAAI,CAACX,MAAM,GAAKJ,aACzB,CACA,IAAIgB,aAAc,CAChB,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,KAAK5mH,KAAK,CAAE,CACd,IAAI,CAAC6mH,KAAK,CAAG,CAAC,CAAC7mH,KACf,CAAA,GAAI,IAAI,CAACipC,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAC29E,IAAI,CAAG,IAAI,CAACC,MAC1B,CACF,CACA,IAAID,MAAO,CACT,OAAO,IAAI,CAACC,KAAK,CAEnB,IAAIC,MAAMA,KAAK,CAAE,CACf,IAAI,CAACC,cAAc,CAAG,IAAI,CAAClB,WAC3B,CAAA,IAAI,CAACmB,UAAU,CAAG,IAAI,CAACtD,QAAQ,CAACplC,OAAO,CAACunC,WAAW,CACnD,IAAI,CAACoB,MAAM,CAAGrvH,KAAKoU,GAAG,CAACmW,OAAO2kG,KAAU,CAAA,EAAA,CAAA,CAAG,KAC3C,GAAI,IAAI,CAAC79E,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACi+E,YAAY,CAAClnH,KAAK,CAAG,IAAI,CAACinH,OAAM,CAEhD,CACA,IAAIH,KAAQ,EAAA,CACV,OAAO,IAAI,CAACG,MAAM,CAEpB,IAAIE,KAAMnnH,CAAAA,KAAK,CAAE,CACf,IAAI,CAACumH,MAAM,CAAGvmH,MACd,GAAI,IAAI,CAAC8lH,MAAM,GAAKJ,aAAAA,CAAe,CACjC,IAAI,CAACM,IAAI,GACX,CAAA,KAAO,CACL,IAAI,CAACoB,aAAa,GACpB,CACF,CACA,IAAID,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACZ,MACd,CACA,IAAIc,SAAAA,CAAUrnH,KAAK,CAAE,CACnB,IAAI,CAACsnH,UAAU,CAAG1vH,IAAKoU,CAAAA,GAAG,CAAC,CAAGmW,CAAAA,MAAAA,CAAOniB,QAAU,CAC/C,CAAA,CAAA,MAAMsmH,UAAY,IAAI,CAACR,MAAM,GAAKN,aAAAA,CAClC,IAAI,CAACQ,IAAI,GACT,GAAIM,SAAAA,CAAW,CACb,IAAI,CAACJ,IAAI,GACX,CACF,CACA,IAAImB,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAIz/E,MAAAA,CAAOA,MAAM,CAAE,CACjBA,OAASn8B,IAAKI,CAAAA,KAAK,CAAC+7B,MAAQ,CAAA,CAAA,CAAG,EAC/B,CAAA,IAAI,CAACpB,OAAO,CAAGoB,OACf,GAAI,IAAI,CAAC0/E,IAAI,CAAE,CACb,IAAI,CAACA,IAAI,CAACA,IAAI,CAACvnH,KAAK,CAAG6nC,MAAAA,CAAS,IAAI,CAAC67E,QAAQ,CAAC77E,OAChD,CACF,CACA,IAAIA,QAAS,CACX,OAAO,IAAI,CAACpB,OAAO,CAErB+gF,OAAAA,EAAU,CACR,IAAI,CAACjmH,IAAI,CAAC,MAAA,CAAA,CACV,GAAI,IAAI,CAACkmH,eAAe,CAAE,CACxB,IAAI,CAACA,eAAe,CAAC,IAAI,EAC3B,CACF,CACAC,QAAAA,EAAW,CACT,IAAI,CAACnmH,IAAI,CAAC,OAAA,CAAA,CACV,GAAI,IAAI,CAAComH,gBAAgB,CAAE,CACzB,IAAI,CAACA,gBAAgB,CAAC,IAAI,EAC5B,CACF,CACAC,SAAAA,EAAY,CACV,IAAI,CAACrmH,IAAI,CAAC,QAAA,CAAA,CACV,GAAI,IAAI,CAACsmH,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAAC,IAAI,EAC7B,CACF,CACAC,OAAAA,EAAU,CACR,IAAI,CAACvmH,IAAI,CAAC,MAAA,CAAA,CACV,GAAI,IAAI,CAACwmH,eAAe,CAAE,CACxB,IAAI,CAACA,eAAe,CAAC,IAAI,EAC3B,CACF,CACAC,QAAW,EAAA,CACT,GAAI,IAAI,CAACC,gBAAgB,CAAG,CAAA,CAAG,CAC7B,IAAI,CAACA,gBAAgB,EACrB,CAAA,MACF,CACA,IAAI,CAAC1mH,IAAI,CAAC,KAAA,CAAA,CACV,GAAI,IAAI,CAAC2mH,cAAc,CAAE,CACvB,IAAI,CAACA,cAAc,CAAC,IAAI,EAC1B,CACA,IAAI,CAAClC,IAAI,GACX,CACAmC,wBAAyB,CACvB,IAAI,CAACtgF,MAAM,CAAG,IAAI,CAACpB,QAAO,CAE5B2hF,iBAAAA,EAAoB,CAClB,GAAI,IAAI,CAACtC,MAAM,GAAKN,eAAiB,CAAC,IAAI,CAACmB,UAAU,CAAE,CACrD,IAAI,CAACA,UAAU,CAAG,IAAA,CAClB,IAAI,CAAC0B,KAAK,GACZ,CACF,CACAC,kBAAmB,CACjB,GAAI,IAAI,CAAC3B,UAAU,CAAE,CACnB,IAAI,CAACA,UAAU,CAAG,MAClB,IAAI,CAACrC,MAAM,GACb,CACF,CACAiE,gBAAmB,EAAA,CACjB,IAAI,CAAChB,IAAI,CAAG,IAAI,CAAC7D,QAAQ,CAACplC,OAAO,CAACkqC,UAAU,EAC5C,CAAA,IAAI,CAACC,UAAU,CAAG,IAAI,CAAClB,IACvB,CAAA,IAAI,CAACmB,cAAc,CAAG,IAAI,CAACnB,IAAI,CAC/B,IAAI,CAACmB,cAAc,CAAC9D,OAAO,CAAC,IAAI,CAAClB,QAAQ,CAACplC,OAAO,CAACumC,WAAW,EAC/D,CACAqB,MAAO,CACL,GAAI,IAAI,CAACJ,MAAM,GAAKJ,aAAe,CAAA,CACjC,IAAI,CAACM,IAAI,GACX,CACA,IAAI,CAACF,MAAM,CAAGN,aACd,CAAA,IAAI,CAACmD,eAAe,CAAG,MACvB,GAAI,IAAI,CAACC,yBAAyB,CAAE,CAClC,OAAO,KACT,CACA,GAAI,IAAI,CAAClF,QAAQ,CAACK,SAAS,CAAE,CAC3B,IAAI,CAACL,QAAQ,CAAC5jH,IAAI,CAAC,QAAA,CAAU,IAAI,CAAC+oH,mBAAmB,CAAE,IAAI,CAC3D,CAAA,IAAI,CAACD,yBAAyB,CAAG,IAAA,CACjC,OAAO,KACT,CACA,IAAI,CAACC,mBAAmB,GACxB,OAAO,IACT,CACAA,mBAAsB,EAAA,CACpB,IAAI,CAACD,yBAAyB,CAAG,KACjC,CAAA,GAAI,IAAI,CAAC9C,MAAM,GAAKN,aAAe,CAAA,CACjC,MACF,CACA,GAAI,CAAC,IAAI,CAACv8E,MAAM,CAAE,CAChB,IAAI,CAACm+E,aAAa,GACpB,CACA,IAAIrhH,OAAS4/G,OAAQ,CAAA,IAAI,CAACM,YAAY,CAAE,IAAI,CAACl7B,QAAQ,EACrDhlF,MAAS4/G,CAAAA,OAAAA,CAAQ,IAAI,CAAC2B,UAAU,CAAGvhH,MAAQ,CAAA,IAAI,CAACwgH,MAAM,CAACx7B,QAAQ,CAC/D,CAAA,IAAI,CAACk7B,YAAY,CAAG,IACpB,CAAA,GAAI,IAAI,CAACI,SAAS,CAAE,CAClB,IAAI,CAACp9E,MAAM,CAACnf,KAAK,CAAC,CAAA,CAAG/jB,OAAQ,IAAI,CAACsgH,SAAS,EAC7C,CAAA,KAAO,CACL,IAAI,CAACp9E,MAAM,CAACnf,KAAK,CAAC,CAAG/jB,CAAAA,MAAAA,EACvB,CACA,IAAI,CAACihH,UAAU,CAAG,IAAI,CAACtD,QAAQ,CAACplC,OAAO,CAACunC,WAAW,CACnD,IAAI,CAACM,YAAY,CAAG,CACpB,CAAA,IAAI,CAACY,cAAc,CAAGhhH,MACtB,CAAA,IAAI,CAAC8hC,MAAM,CAAG,IAAI,CAACpB,OAAO,CAC1B,IAAI,CAACmgF,IAAI,CAAG,IAAI,CAACC,KAAK,CACtB,IAAI,CAACC,KAAK,CAAG,IAAI,CAACG,MAAM,CACxB,IAAI,CAACvD,QAAQ,CAAChkH,EAAE,CAAC,cAAgB,CAAA,IAAI,CAACyoH,sBAAsB,CAAE,IAAI,CAClE,CAAA,IAAI,CAACzE,QAAQ,CAAChkH,EAAE,CAAC,SAAA,CAAW,IAAI,CAAC0oH,iBAAiB,CAAE,IAAI,CAAA,CACxD,IAAI,CAAC1E,QAAQ,CAAChkH,EAAE,CAAC,QAAA,CAAU,IAAI,CAAC4oH,gBAAgB,CAAE,IAAI,CAAA,CACtD,IAAI,CAAC5E,QAAQ,CAAChkH,EAAE,CAAC,UAAW,IAAI,CAACopH,iBAAiB,CAAE,IAAI,EACxD,GAAI,CAAC,IAAI,CAAC/C,sBAAsB,CAAE,CAChC,IAAI,CAACyB,OAAO,GACd,CACF,CACAa,KAAAA,EAAQ,CACN,IAAI,CAACM,eAAe,CAAG,KAAA,CACvB,GAAI,IAAI,CAAC7C,MAAM,GAAKN,aAAAA,CAAe,CACjC,OAAO,KACT,CACA,IAAI,CAACM,MAAM,CAAGL,YAAAA,CACd,GAAI,IAAI,CAACmD,yBAAyB,CAAE,CAClC,OAAO,IACT,CACA,IAAI,CAACxC,kBAAkB,EACvB,CAAA,IAAI,CAAC6B,gBAAgB,EAAA,CACrB,IAAI,CAACh/E,MAAM,CAAC+8E,IAAI,CAAC,EACjB,CAAA,IAAI,CAAC/8E,MAAM,CAAG,IACd,CAAA,IAAI,CAACg9E,YAAY,CAAG,KACpB,GAAI,CAAC,IAAI,CAACF,sBAAsB,CAAE,CAChC,IAAI,CAAC2B,QAAQ,GACf,CACA,OAAO,IACT,CACApD,MAAS,EAAA,CACP,GAAI,IAAI,CAACwB,MAAM,GAAKL,YAAAA,CAAc,CAChC,OAAO,KACT,CACA,IAAI1/G,MAAAA,CAAS,IAAI,CAAC8/G,WAAW,CAC7B,IAAI,CAACC,MAAM,CAAGN,cACd,GAAI,IAAI,CAACoD,yBAAyB,CAAE,CAClC,OAAO,IACT,CACA,GAAI,CAAC,IAAI,CAAC3/E,MAAM,CAAE,CAChB,IAAI,CAACm+E,aAAa,GACpB,CACA,GAAI,IAAI,CAACnB,YAAY,GAAK,KAAM,CAC9BlgH,MAAAA,CAAS4/G,QAAQ,IAAI,CAACM,YAAY,CAAE,IAAI,CAACl7B,QAAQ,CAAA,CACjDhlF,OAAS4/G,OAAQ,CAAA,IAAI,CAAC2B,UAAU,CAAGvhH,OAAQ,IAAI,CAACwgH,MAAM,CAACx7B,QAAQ,CAC/D,CAAA,IAAI,CAACk7B,YAAY,CAAG,KACtB,CACA,GAAI,IAAI,CAACI,SAAS,CAAE,CAClB,IAAI,CAACp9E,MAAM,CAACnf,KAAK,CAAC,CAAG/jB,CAAAA,MAAAA,CAAQ,IAAI,CAACsgH,SAAS,EAC7C,CAAO,KAAA,CACL,IAAI,CAACp9E,MAAM,CAACnf,KAAK,CAAC,EAAG/jB,MACvB,EAAA,CACA,IAAI,CAACihH,UAAU,CAAG,IAAI,CAACtD,QAAQ,CAACplC,OAAO,CAACunC,WACxC,CAAA,IAAI,CAACkB,cAAc,CAAGhhH,MACtB,CAAA,IAAI,CAAC8hC,MAAM,CAAG,IAAI,CAACpB,OACnB,CAAA,IAAI,CAACmgF,IAAI,CAAG,IAAI,CAACC,KACjB,CAAA,IAAI,CAACC,KAAK,CAAG,IAAI,CAACG,MAClB,CAAA,IAAI,CAAC0B,eAAe,CAAG,KAAA,CACvB,GAAI,CAAC,IAAI,CAAC5C,sBAAsB,CAAE,CAChC,IAAI,CAAC6B,SAAS,GAChB,CACA,OAAO,IACT,CACA5B,IAAO,EAAA,CACL,IAAI,CAAC2C,eAAe,CAAG,KAAA,CACvB,GAAI,IAAI,CAAC7C,MAAM,GAAKJ,aAAAA,CAAe,CACjC,OAAO,KACT,CACA,MAAMqD,UAAAA,CAAa,IAAI,CAACjD,MAAM,GAAKN,aACnC,CAAA,IAAI,CAACM,MAAM,CAAGJ,aACd,CAAA,GAAI,IAAI,CAACkD,yBAAyB,CAAE,CAClC,OAAO,IACT,CACA,IAAI,CAAClF,QAAQ,CAACpkH,GAAG,CAAC,cAAA,CAAgB,IAAI,CAAC6oH,sBAAsB,CAAE,IAAI,CAAA,CACnE,IAAI,CAACzE,QAAQ,CAACpkH,GAAG,CAAC,UAAW,IAAI,CAAC8oH,iBAAiB,CAAE,IAAI,EACzD,IAAI,CAAC1E,QAAQ,CAACpkH,GAAG,CAAC,QAAU,CAAA,IAAI,CAACgpH,gBAAgB,CAAE,IAAI,CACvD,CAAA,IAAI,CAAC5E,QAAQ,CAACpkH,GAAG,CAAC,SAAA,CAAW,IAAI,CAACwpH,iBAAiB,CAAE,IAAI,CACzD,CAAA,IAAI,CAAC9B,UAAU,CAAG,CAClB,CAAA,IAAI,CAACb,YAAY,CAAG,CACpB,CAAA,IAAI,CAACY,cAAc,CAAG,CACtB,CAAA,IAAI,CAACd,YAAY,CAAG,IACpB,CAAA,IAAI,CAACgC,gBAAgB,GACrB,GAAIc,UAAAA,EAAc,IAAI,CAAC9/E,MAAM,CAAE,CAC7B,IAAI,CAACA,MAAM,CAAC+8E,IAAI,CAAC,CAAA,EACnB,CACA,IAAI,CAAC/8E,MAAM,CAAG,IAAA,CACd,GAAI,CAAC,IAAI,CAAC88E,sBAAsB,CAAE,CAChC,IAAI,CAAC+B,OAAO,GACd,CACA,OAAO,IACT,CACAkB,iBAAiBC,SAAS,CAAEC,QAAQ,CAAE,CACpC,GAAI,CAACD,SAAAA,CAAW,CACdnkH,OAAQC,CAAAA,KAAK,CAAC,0CACd,CAAA,CAAA,MACF,CACA,GAAI,CAACmkH,SAAU,CACbA,QAAAA,CAAWD,UACb,CACA,MAAME,SAAW,IAAI,CAACzF,QAAQ,CAACplC,OAAO,CAACumC,WAAW,CAClD,GAAI,IAAI,CAACuE,UAAU,GAAKH,SAAAA,CAAW,CACjC,GAAI,IAAI,CAACG,UAAU,CAAE,CACnB,IAAI,CAACV,cAAc,CAAC3D,UAAU,CAAC,IAAI,CAACqE,UAAU,EAChD,CAAA,KAAO,CACL,IAAI,CAACV,cAAc,CAAC3D,UAAU,CAACoE,QACjC,EAAA,CACA,IAAI,CAACC,UAAU,CAAGH,SAClB,CAAA,IAAI,CAACP,cAAc,CAAC9D,OAAO,CAACqE,SAAAA,EAC9B,CACA,GAAI,IAAI,CAACI,SAAS,GAAKH,SAAU,CAC/B,GAAI,IAAI,CAACG,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAACtE,UAAU,CAACoE,QAAAA,EAC5B,CACA,IAAI,CAACE,SAAS,CAAGH,QAAAA,CACjB,IAAI,CAACG,SAAS,CAACzE,OAAO,CAACuE,UACzB,CACF,CACAG,oBAAqB,CACnB,MAAMH,SAAW,IAAI,CAACzF,QAAQ,CAACplC,OAAO,CAACumC,WAAW,CAClD,GAAI,IAAI,CAACuE,UAAU,CAAE,CACnB,IAAI,CAACV,cAAc,CAAC3D,UAAU,CAAC,IAAI,CAACqE,UAAU,CAC9C,CAAA,IAAI,CAACA,UAAU,CAAG,KACpB,CACA,GAAI,IAAI,CAACC,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAACtE,UAAU,CAACoE,QAC1B,CAAA,CAAA,IAAI,CAACE,SAAS,CAAG,KACnB,CACA,IAAI,CAACX,cAAc,CAAC9D,OAAO,CAACuE,UAC9B,CACAI,gBAAAA,EAAmB,CACjB,OAAO,CACL,IAAI,CAACH,UAAU,CACf,IAAI,CAACC,SAAS,CAElB,CACAjC,aAAgB,EAAA,CACd,GAAI,CAAC,IAAI,CAACb,MAAM,CAAE,CAChB,OAAO,IACT,CACA,MAAMjoC,OAAAA,CAAU,IAAI,CAAColC,QAAQ,CAACplC,OAAO,CACrC,GAAI,IAAI,CAACioC,MAAM,CAACxzG,MAAM,CAAE,CACtB,IAAI,CAACk2B,MAAM,CAAGq1C,QAAQomC,kBAAkB,EACxC,CAAA,IAAI,CAACz7E,MAAM,CAACl2B,MAAM,CAAG,IAAI,CAACwzG,MAAM,CAACxzG,MAAM,CACvC,IAAI,CAACk2B,MAAM,CAAC27E,OAAO,CAAC,IAAI,CAAC6D,UAAU,CACnC,CAAA,IAAI,CAACx/E,MAAM,CAAC67E,OAAO,CAAG,IAAI,CAAC0E,aAAa,CACxC,IAAI,CAACvgF,MAAM,CAACwgF,SAAS,CAAG9D,OAAAA,CAAQ,IAAI,CAAC2B,UAAU,CAAE,IAAI,CAACr+E,MAAM,CAACl2B,MAAM,CAACg4E,QAAQ,CAAA,CAC5E,GAAI,IAAI,CAACs7B,SAAS,CAAE,CAClB,IAAI,CAACp9E,MAAM,CAACygF,OAAO,CAAG9xH,KAAKoU,GAAG,CAAC,IAAI,CAACi9B,MAAM,CAACwgF,SAAS,CAAE9D,QAAQ,IAAI,CAAC2B,UAAU,CAAG,IAAI,CAACjB,SAAS,CAAE,IAAI,CAACp9E,MAAM,CAACl2B,MAAM,CAACg4E,QAAQ,CAC7H,EAAA,CACF,CACA,OAAO,IAAI,CAAC9hD,MACd,CACAm9E,kBAAqB,EAAA,CACnB,IAAI,CAACD,YAAY,CAAGR,QAAQ,CAAC,IAAI,CAACjC,QAAQ,CAACplC,OAAO,CAACunC,WAAW,CAAG,IAAI,CAACmB,UAAS,EAAK,IAAI,CAACC,MAAM,CAAG,IAAI,CAACF,cAAc,CAAE,IAAI,CAACh8B,QAAQ,EACtI,CACA+9B,iBAAAA,EAAoB,CAClB,GAAI,IAAI,CAAC7/E,MAAM,EAAI,IAAI,CAAC68E,MAAM,GAAKN,aAAe,CAAA,CAChD,IAAI,CAACv8E,MAAM,CAAC+8E,IAAI,CAAC,EACjB,CAAA,IAAI,CAAC/8E,MAAM,CAAG,KAChB,CACF,CA/YA7oC,YAAYujH,OAAO,CAAEwD,KAAK,CAAEr9G,OAAO,CAAC,CAClC,KAAK,GAAI,IAAI,CAACm/B,MAAM,CAAG,IACvB,CAAA,IAAI,CAACy6E,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAACl9E,OAAO,CAAG38B,OAAAA,CAAQ+9B,MAAM,GAAK1nC,SAAAA,CAAYuL,KAAKI,KAAK,CAACqW,OAAOrY,OAAQ+9B,CAAAA,MAAM,GAAK,CAAG,CAAA,CAAA,CAAG,GAAK,CAC9F,CAAA,IAAI,CAACo/E,MAAM,CAAGn9G,OAAQg9G,CAAAA,KAAK,GAAK3mH,SAAYvI,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,GAAA,CAAMmW,OAAOrY,OAAQg9G,CAAAA,KAAK,GAAK,CAAK,CAAA,CAAA,CACzF,CAAA,IAAI,CAACD,KAAK,CAAG,CAAC,EAAE/8G,OAAAA,CAAQ88G,IAAI,GAAKzmH,SAAAA,CAAY2J,QAAQ88G,IAAI,CAAG,KAAI,CAChE,CAAA,IAAI,CAACL,MAAM,CAAGY,KACd,CAAA,IAAI,CAACrB,MAAM,CAAGJ,aACd,CAAA,IAAI,CAACiB,UAAU,CAAG,KAClB,CAAA,IAAI,CAACsB,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAAClC,sBAAsB,CAAG,KAC9B,CAAA,IAAI,CAAC4C,eAAe,CAAG,IACvB,CAAA,IAAI,CAACrB,UAAU,CAAG1vH,IAAKoU,CAAAA,GAAG,CAAC,CAAGmW,CAAAA,MAAAA,CAAOrY,QAAQu9G,SAAS,CAAA,EAAK,EAC3D,CAAA,IAAI,CAAChB,SAAS,CAAGzuH,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGmW,OAAOrY,OAAQihF,CAAAA,QAAQ,GAAK,CACzD,CAAA,CAAA,IAAI,CAACk7B,YAAY,CAAG,IACpB,CAAA,IAAI,CAACwB,eAAe,CAAG39G,OAAQ6/G,CAAAA,MAAM,CACrC,IAAI,CAAChC,gBAAgB,CAAG79G,QAAQ8/G,OAChC,CAAA,IAAI,CAAC/B,iBAAiB,CAAG/9G,OAAAA,CAAQ+/G,QAAQ,CACzC,IAAI,CAAC9B,eAAe,CAAGj+G,OAAQggH,CAAAA,MAAM,CACrC,IAAI,CAAC5B,cAAc,CAAGp+G,QAAQigH,KAAK,CACnC,GAAIxE,eAAmB,EAAA,CAAA,CACrB,IAAI,CAACyB,UAAU,CAAG,CAClB,CAAA,IAAI,CAACb,YAAY,CAAG,CACpB,CAAA,IAAI,CAACY,cAAc,CAAG,CACtB,CAAA,IAAI,CAAC0B,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACU,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,SAAS,CAAG,IACjB,CAAA,IAAI,CAACT,yBAAyB,CAAG,MACjC,IAAI,CAACL,gBAAgB,EACrB,CAAA,IAAI,CAACiB,aAAa,CAAG,IAAI,CAACxB,QAAQ,CAACv/G,IAAI,CAAC,IAAI,EAC9C,MAAO,CACL,IAAI,CAACuhH,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,sBAAsB,CAAG,IAAI,CAACC,iBAAiB,CAACzhH,IAAI,CAAC,IAAI,CAC9D,CAAA,IAAI,CAAC0hH,kBAAkB,CAAG,IAAI,CAACC,aAAa,CAAC3hH,IAAI,CAAC,IAAI,CACtD,CAAA,IAAI,CAAC+gH,aAAa,CAAG,IAAI,CAACxB,QAAQ,CAACv/G,IAAI,CAAC,IAAI,EAC5C,IAAI,CAAC2+G,aAAa,GACpB,CACF,CA0WF,CAhaMxB,cAEGyE,UAAU,CAAG,MAGlB,CALEzE,aAAAA,CAKG0E,WAAW,CAAG,OAGnB,CARE1E,aAQG2E,CAAAA,YAAY,CAAG,QAGpB,CAXE3E,cAWG4E,UAAU,CAAG,MAGlB,CAdE5E,aAcG6E,CAAAA,SAAS,CAAG,KAmZrB,CAAA,GAAI,CAAClF,eAAmB,EAAA,CAAA,CACtBrrH,OAAOskH,MAAM,CAACoH,cAAc8E,SAAS,CAAE,CACrCxE,IAAM,CAAA,UAAA,CACJ,GAAI,IAAI,CAACJ,MAAM,GAAKJ,aAAAA,CAAe,CACjC,IAAI,CAACM,IAAI,GACX,CACA,GAAI,CAAC,IAAI,CAAC/8E,MAAM,CAAE,CAChB,GAAI,CAAC,IAAI,CAACm+E,aAAa,GAAI,CACzB,OAAO,KACT,CACF,CACA,IAAI,CAACv/E,MAAM,CAAG,IAAI,CAACpB,OAAO,CAC1B,IAAI,CAACqgF,KAAK,CAAG,IAAI,CAACG,MAAM,CACxB,IAAI,CAACL,IAAI,CAAG,IAAI,CAACC,KAAK,CACtB,IAAI,CAAC59E,MAAM,CAACi9E,IAAI,EAChB,CAAA,IAAI,CAACJ,MAAM,CAAGN,aACd,CAAA,IAAI,CAACmD,eAAe,CAAG,KACvB,CAAA,IAAI,CAACjF,QAAQ,CAAChkH,EAAE,CAAC,cAAA,CAAgB,IAAI,CAACyoH,sBAAsB,CAAE,IAAI,CAAA,CAClE,IAAI,CAACzE,QAAQ,CAAChkH,EAAE,CAAC,UAAW,IAAI,CAAC0oH,iBAAiB,CAAE,IAAI,EACxD,IAAI,CAAC1E,QAAQ,CAAChkH,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC4oH,gBAAgB,CAAE,IAAI,CACtD,CAAA,IAAI,CAAC5E,QAAQ,CAAChkH,EAAE,CAAC,SAAA,CAAW,IAAI,CAACopH,iBAAiB,CAAE,IAAI,CAAA,CACxD,GAAI,IAAI,CAACpF,QAAQ,CAACK,SAAS,CAAE,CAC3B,IAAI,CAACqE,iBAAiB,GACxB,CACA,GAAI,CAAC,IAAI,CAACrC,sBAAsB,CAAE,CAChC,IAAI,CAACyB,OAAO,GACd,CACA,OAAO,IACT,EACAa,KAAO,CAAA,UAAA,CACL,GAAI,CAAC,IAAI,CAACp/E,MAAM,EAAI,IAAI,CAAC68E,MAAM,GAAKN,aAAe,CAAA,CACjD,OAAO,KACT,CACA,IAAI,CAACyC,gBAAgB,EACrB,CAAA,IAAI,CAACh/E,MAAM,CAACo/E,KAAK,EACjB,CAAA,IAAI,CAACM,eAAe,CAAG,KACvB,CAAA,IAAI,CAAC7C,MAAM,CAAGL,YACd,CAAA,IAAI,CAACQ,YAAY,CAAG,IAAA,CACpB,GAAI,CAAC,IAAI,CAACF,sBAAsB,CAAE,CAChC,IAAI,CAAC2B,QAAQ,GACf,CACA,OAAO,IACT,CAAA,CACApD,OAAQ,UACN,CAAA,GAAI,CAAC,IAAI,CAACr7E,MAAM,EAAI,IAAI,CAAC68E,MAAM,GAAKL,aAAc,CAChD,OAAO,KACT,CACA,IAAI,CAACK,MAAM,CAAGN,aACd,CAAA,IAAI,CAACmD,eAAe,CAAG,MACvB,GAAI,IAAI,CAAC1/E,MAAM,CAAC0hF,MAAM,CAAE,CACtB,IAAI,CAAC1hF,MAAM,CAACi9E,IAAI,EAAA,CAChB,GAAI,CAAC,IAAI,CAACH,sBAAsB,CAAE,CAChC,IAAI,CAAC6B,SAAS,GAChB,CACF,CACA,OAAO,IACT,EACA5B,IAAM,CAAA,UAAA,CACJ,GAAI,CAAC,IAAI,CAAC/8E,MAAM,EAAI,IAAI,CAAC68E,MAAM,GAAKJ,aAAe,CAAA,CACjD,OAAO,KACT,CACA,IAAI,CAAChC,QAAQ,CAACpkH,GAAG,CAAC,eAAgB,IAAI,CAAC6oH,sBAAsB,CAAE,IAAI,EACnE,IAAI,CAACzE,QAAQ,CAACpkH,GAAG,CAAC,SAAW,CAAA,IAAI,CAAC8oH,iBAAiB,CAAE,IAAI,CACzD,CAAA,IAAI,CAAC1E,QAAQ,CAACpkH,GAAG,CAAC,QAAA,CAAU,IAAI,CAACgpH,gBAAgB,CAAE,IAAI,CAAA,CACvD,IAAI,CAAC5E,QAAQ,CAACpkH,GAAG,CAAC,UAAW,IAAI,CAACwpH,iBAAiB,CAAE,IAAI,CACzD,CAAA,IAAI,CAACb,gBAAgB,EAAA,CACrB,IAAI,CAACh/E,MAAM,CAACo/E,KAAK,EACjB,CAAA,IAAI,CAACM,eAAe,CAAG,KACvB,CAAA,IAAI,CAAC7C,MAAM,CAAGJ,aACd,CAAA,IAAI,CAACO,YAAY,CAAG,IACpB,CAAA,GAAI,CAAC,IAAI,CAACF,sBAAsB,CAAE,CAChC,IAAI,CAAC+B,OAAO,GACd,CACA,OAAO,IACT,CACAkB,CAAAA,gBAAAA,CAAkB,YAClBM,CAAAA,kBAAAA,CAAoB,YACpBC,CAAAA,gBAAAA,CAAkB,WAChB,OAAO,CACL,KACA,IACD,CACH,EACAW,iBAAmB,CAAA,UAAA,CACjB,IAAI,CAACjhF,MAAM,CAAC1uC,mBAAmB,CAAC,iBAAkB,IAAI,CAAC0vH,sBAAsB,CAC7E,CAAA,IAAI,CAACD,QAAQ,CAAG,IAChB,CAAA,IAAIjkH,OAAS4/G,OAAQ,CAAA,IAAI,CAACM,YAAY,CAAE,IAAI,CAACl7B,QAAQ,EACrDhlF,MAAS4/G,CAAAA,OAAAA,CAAQ,IAAI,CAAC2B,UAAU,CAAGvhH,MAAQ,CAAA,IAAI,CAACwgH,MAAM,CAACx7B,QAAQ,CAC/D,CAAA,IAAI,CAACk7B,YAAY,CAAG,IACpB,CAAA,IAAI,CAACh9E,MAAM,CAAC48E,WAAW,CAAG9/G,OAC5B,CACAqhH,CAAAA,aAAAA,CAAe,WACb,GAAI,IAAI,CAACb,MAAM,EAAI,IAAI,CAACA,MAAM,CAAClB,KAAK,CAAE,CACpC,IAAI,CAAC2E,QAAQ,CAAG,KAChB,CAAA,IAAI,CAAC/gF,MAAM,CAAG,IAAI,CAACs9E,MAAM,CAAClB,KAAK,CAACuF,SAAS,CAAC,IAC1C,CAAA,CAAA,IAAI,CAAC3hF,MAAM,CAAC3uC,gBAAgB,CAAC,gBAAA,CAAkB,IAAI,CAAC2vH,sBAAsB,EAC1E,IAAI,CAAChhF,MAAM,CAAC3uC,gBAAgB,CAAC,YAAc,CAAA,IAAI,CAAC6vH,kBAAkB,CAClE,CAAA,IAAI,CAAClhF,MAAM,CAAC67E,OAAO,CAAG,IAAI,CAAC0E,cAAa,CAE1C,OAAO,IAAI,CAACvgF,MAAM,CACpB,CACAmhF,cAAe,UACb,CAAA,GAAI,CAAC,IAAI,CAAC/D,SAAS,CAAE,CACnB,MACF,CACA,GAAI,IAAI,CAACp9E,MAAM,CAAC48E,WAAW,CAAGF,QAAQ,IAAI,CAAC2B,UAAU,CAAG,IAAI,CAACjB,SAAS,CAAE,IAAI,CAACp9E,MAAM,CAAC8hD,QAAQ,CAAG,CAAA,CAC7F,GAAI,IAAI,CAAC67B,IAAI,CAAE,CACb,IAAI,CAAC39E,MAAM,CAAC48E,WAAW,CAAGF,QAAQ,IAAI,CAAC2B,UAAU,CAAE,IAAI,CAACr+E,MAAM,CAAC8hD,QAAQ,EACzE,CAAA,KAAO,CACL,IAAI,CAAC9hD,MAAM,CAAC1uC,mBAAmB,CAAC,YAAc,CAAA,IAAI,CAAC4vH,kBAAkB,CAAA,CACrE,IAAI,CAAClhF,MAAM,CAACo/E,KAAK,EAAA,CACjB,IAAI,CAACL,QAAQ,GACf,CACF,CACF,EACAc,iBAAmB,CAAA,UAAA,CACjB,GAAI,IAAI,CAAC7/E,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACo/E,KAAK,GACnB,CACF,CACF,CAAA,CAAA,CACAnuH,OAAOC,cAAc,CAACyrH,cAAc8E,SAAS,CAAE,SAAU,CACvDtwH,GAAAA,CAAK,WACH,OAAO,IAAI,CAACqsC,OACd,EACA7lC,GAAK,CAAA,SAASinC,MAAM,CAClBA,CAAAA,MAAAA,CAASn8B,KAAKI,KAAK,CAAC+7B,OAAQ,CAAG,CAAA,CAAA,CAC/B,CAAA,IAAI,CAACpB,OAAO,CAAGoB,MACf,CAAA,GAAI,IAAI,CAACoB,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACpB,MAAM,CAAGA,MAAAA,CAAS,IAAI,CAAC67E,QAAQ,CAAC77E,OAC9C,CACF,CACF,CAAA,CAAA,CACA3tC,OAAOC,cAAc,CAACyrH,cAAc8E,SAAS,CAAE,QAAS,CACtDtwH,GAAAA,CAAK,WACH,OAAO,IAAI,CAAC6sH,MACd,EACArmH,GAAK,CAAA,SAASkmH,KAAK,CACjB,CAAA,IAAI,CAACG,MAAM,CAAGrvH,KAAKoU,GAAG,CAACmW,OAAO2kG,KAAU,CAAA,EAAA,CAAA,CAAG,KAC3C,GAAI,IAAI,CAAC79E,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACi+E,YAAY,CAAG,IAAI,CAACD,OAAM,CAE1C,CACF,CACA/sH,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACyrH,aAAAA,CAAc8E,SAAS,CAAE,OAAA,CAAS,CACtDtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAACmsH,MAAM,CACpB,CACA3lH,IAAK,SAASZ,KAAK,CACjB,CAAA,IAAI,CAACgmH,IAAI,EACT,CAAA,IAAI,CAACO,MAAM,CAAGvmH,MAChB,CACF,CAAA,CAAA,CACA9F,OAAOC,cAAc,CAACyrH,cAAc8E,SAAS,CAAE,cAAe,CAC5DtwH,GAAAA,CAAK,WACH,GAAI,IAAI,CAAC6rH,YAAY,GAAK,KAAM,CAC9B,OAAO,IAAI,CAACA,YAAY,CAE1B,GAAI,IAAI,CAACH,MAAM,GAAKJ,aAAiB,EAAA,CAAC,IAAI,CAACz8E,MAAM,CAAE,CACjD,OAAO,CACT,CACA,OAAO,IAAI,CAACA,MAAM,CAAC48E,WAAW,CAAG,IAAI,CAACyB,UAAU,CAElD1mH,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CAAA,CACjB,GAAIA,KAAQ,CAAA,CAAA,CAAG,OACf,IAAI,CAACimH,YAAY,CAAGjmH,MACpB,GAAI,IAAI,CAACipC,MAAM,EAAI,IAAI,CAAC+gF,QAAQ,CAAE,CAChC,IAAI,CAAC/gF,MAAM,CAAC48E,WAAW,CAAGF,OAAAA,CAAQ,IAAI,CAAC2B,UAAU,CAAG3B,OAAQ3lH,CAAAA,KAAAA,CAAO,IAAI,CAAC+qF,QAAQ,EAAG,IAAI,CAACw7B,MAAM,CAACx7B,QAAQ,CACvG,CAAA,IAAI,CAACk7B,YAAY,CAAG,KACtB,CACF,CACF,GACF,CAEA,MAAM4E,aAAe,GACrB,CAAA,MAAMC,wBAAwBlF,aAW5B2C,CAAAA,gBAAAA,EAAmB,CACjB,IAAI,CAAChB,IAAI,CAAG,IAAI,CAAC7D,QAAQ,CAACplC,OAAO,CAACkqC,UAAU,EAC5C,CAAA,IAAI,CAACuC,MAAM,CAAG,IAAI,CAACrH,QAAQ,CAACplC,OAAO,CAAC0sC,YAAY,EAChD,CAAA,IAAI,CAACD,MAAM,CAACnG,OAAO,CAAC,IAAI,CAAC2C,IAAI,CAC7B,CAAA,IAAI,CAACkB,UAAU,CAAG,IAAI,CAACsC,MACvB,CAAA,IAAI,CAACrC,cAAc,CAAG,IAAI,CAACnB,IAAI,CAC/B,IAAI,CAACmB,cAAc,CAAC9D,OAAO,CAAC,IAAI,CAAClB,QAAQ,CAACplC,OAAO,CAACumC,WAAW,EAC/D,CACA,IAAIloG,SAAS3c,KAAK,CAAE,CAClB,IAAI,CAACirH,SAAS,CAAC7zH,IAAI,CAAC4I,KACpB,CAAA,CAAA,MAAM+qH,OAAS,IAAI,CAACA,MAAM,CAC1B,GAAI,cAAeA,MAAQ,CAAA,CACzBA,OAAOjI,SAAS,CAAC9iH,KAAK,CAAGA,KAAAA,CAAM0M,CAAC,CAChCq+G,OAAOhI,SAAS,CAAC/iH,KAAK,CAAGA,KAAAA,CAAMoU,CAAC,CAChC22G,OAAO/H,SAAS,CAAChjH,KAAK,CAAGA,KAAAA,CAAMuU,EAAC,CAClC,KAAO,GAAIw2G,MAAOnI,CAAAA,WAAW,CAAE,CAC7BmI,MAAAA,CAAOnI,WAAW,CAAC5iH,KAAAA,CAAM0M,CAAC,CAAE1M,KAAAA,CAAMoU,CAAC,CAAEpU,KAAAA,CAAMuU,CAAC,EAC9C,CACF,CACA,IAAIoI,QAAAA,EAAW,CACb,OAAO,IAAI,CAACsuG,SACd,CACA,IAAIC,QAAAA,CAASA,QAAQ,CAAE,CACrB,IAAI,CAACC,SAAS,CAAC/zH,IAAI,CAAC8zH,UACtB,CACA,IAAIA,UAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,YAAYprH,KAAK,CAAE,CACrB,IAAI,CAAC+qH,MAAM,CAACK,WAAW,CAAGprH,MAC5B,CACA,IAAIorH,WAAc,EAAA,CAChB,OAAO,IAAI,CAACL,MAAM,CAACK,WAAW,CAEhC,IAAIC,YAAYrrH,KAAK,CAAE,CACrB,IAAI,CAAC+qH,MAAM,CAACM,WAAW,CAAGrrH,MAC5B,CACA,IAAIqrH,WAAc,EAAA,CAChB,OAAO,IAAI,CAACN,MAAM,CAACM,WAAW,CAEhC,IAAIC,cAActrH,KAAK,CAAE,CACvB,IAAI,CAAC+qH,MAAM,CAACQ,aAAa,CAAGvrH,MAC9B,CACA,IAAIsrH,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACP,MAAM,CAACQ,aAAa,CAElC,IAAIC,cAAcxrH,KAAK,CAAE,CACvB,IAAI,CAAC+qH,MAAM,CAACS,aAAa,CAAGxrH,MAC9B,CACA,IAAIwrH,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACT,MAAM,CAACS,aACrB,CA7DAprH,WAAYujH,CAAAA,OAAO,CAAEwD,KAAK,CAAEr9G,QAAU,EAAE,CAAC,CACvC,KAAK,CAAC65G,OAASwD,CAAAA,KAAAA,CAAOr9G,SAAU,IAAI,CAACmhH,SAAS,CAAG,IAAI32G,KAAQ,IAAI,CAAC62G,SAAS,CAAG,IAAI72G,KAClF,GAAIxK,OAAAA,CAAQ6S,QAAQ,CAAE,CACpB,IAAI,CAACA,QAAQ,CAAG7S,OAAQ6S,CAAAA,SAAQ,CAElC,IAAI,CAACyuG,WAAW,CAAGthH,QAAQshH,WAAW,GAAKjrH,UAAYgiB,MAAOrY,CAAAA,OAAAA,CAAQshH,WAAW,CAAIP,CAAAA,YACrF,CAAA,IAAI,CAACQ,WAAW,CAAGvhH,OAAAA,CAAQuhH,WAAW,GAAKlrH,SAAAA,CAAYgiB,OAAOrY,OAAQuhH,CAAAA,WAAW,EAAI,CACrF,CAAA,IAAI,CAACC,aAAa,CAAGxhH,OAAQwhH,CAAAA,aAAa,GAAKnrH,SAAYgiB,CAAAA,MAAAA,CAAOrY,QAAQwhH,aAAa,CAAA,CAAI,CAC3F,CAAA,IAAI,CAACE,aAAa,CAAG1hH,QAAQ0hH,aAAa,GAAKrrH,UAAY2J,OAAQ0hH,CAAAA,aAAa,CAAGjJ,gBACrF,CAqDF,CACA,GAAI,CAACgD,kBAAmB,CACtB,IAAIx/G,OAAS,IAAIuO,IAAAA,CACjB,MAAMm3G,OAAU,CAAA,SAASC,MAAM,CAAEC,MAAM,CAAEN,WAAW,CAAED,WAAW,CAAEE,aAAa,CAAEE,aAAa,CAAA,CAC7FzlH,OAASA,MAAOmQ,CAAAA,IAAI,CAACw1G,MAAQC,CAAAA,MAAAA,CAAAA,CAC7B,MAAMz2G,QAAWnP,CAAAA,MAAAA,CAAOzN,MAAM,EAC9B,CAAA,GAAI4c,SAAWm2G,WAAa,CAAA,CAC1B,OAAO,CACT,CAAA,KAAO,GAAIn2G,QAAWk2G,CAAAA,WAAAA,CAAa,CACjC,OAAO,CACT,CACA,IAAIhzH,MAAAA,CAAS,EACb,GAAIozH,aAAAA,GAAkBjJ,gBAAiB,CACrCnqH,MAAAA,CAAS,EAAIkzH,aAAiBp2G,EAAAA,SAAWm2G,WAAU,CAAA,EAAMD,WAAcC,CAAAA,WAAU,EACnF,CAAO,KAAA,GAAIG,gBAAkBhJ,gBAAkB,CAAA,CAC7CpqH,OAASizH,WAAeA,EAAAA,YAAcC,aAAiBp2G,EAAAA,SAAWm2G,WAAU,CAAC,EAC/E,CAAO,KAAA,GAAIG,gBAAkB/I,oBAAsB,CAAA,CACjDrqH,OAASR,IAAKkV,CAAAA,GAAG,CAACoI,QAAWm2G,CAAAA,WAAAA,CAAa,CAACC,aAAAA,EAC7C,CACA,OAAO5/G,KAAKI,KAAK,CAAC1T,OAAQ,CAAG,CAAA,CAAA,CAC/B,EACA8B,MAAOC,CAAAA,cAAc,CAAC2wH,eAAgBJ,CAAAA,SAAS,CAAE,UAAY,CAAA,CAC3DtwH,IAAK,UACH,CAAA,OAAO,IAAI,CAAC6wH,SAAS,CAEvBrqH,CAAAA,GAAAA,CAAK,SAAS+b,QAAQ,CAAA,CACpB,IAAI,CAACsuG,SAAS,CAAC7zH,IAAI,CAACulB,UACpB,GAAI,IAAI,CAACssB,MAAM,CAAE,CACf,MAAM45E,QAAAA,CAAW,IAAI,CAACa,QAAQ,CAACb,QAAQ,CACvC,MAAM+I,IAAO/I,CAAAA,QAAAA,CAASF,WAAW,EACjC,CAAA,MAAMkJ,OAASJ,OAAQG,CAAAA,IAAAA,CAAM,IAAI,CAACX,SAAS,CAAE,IAAI,CAACI,WAAW,CAAE,IAAI,CAACD,WAAW,CAAE,IAAI,CAACE,aAAa,CAAE,IAAI,CAACE,aAAa,CACvH,CAAA,MAAM1zH,EAAI,IAAI,CAAC+vC,MAAM,CACrB,IAAI,CAACoB,MAAM,CAACpB,MAAM,CAAG/vC,EAAI+zH,MAAS,CAAA,IAAI,CAACnI,QAAQ,CAAC77E,OAAM,CAE1D,CACF,GACA3tC,MAAOC,CAAAA,cAAc,CAAC2wH,eAAgBJ,CAAAA,SAAS,CAAE,aAAe,CAAA,CAC9DtwH,IAAK,UACH,CAAA,OAAO,IAAI,CAAC0xH,YAAY,CAE1BlrH,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CAAA,CACjB,IAAI,CAAC8rH,YAAY,CAAG9rH,MACtB,CACF,GACA9F,MAAOC,CAAAA,cAAc,CAAC2wH,eAAgBJ,CAAAA,SAAS,CAAE,aAAe,CAAA,CAC9DtwH,IAAK,UACH,CAAA,OAAO,IAAI,CAAC2xH,YAAY,CAE1BnrH,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CAAA,CACjB,IAAI,CAAC+rH,YAAY,CAAG/rH,MACtB,CACF,GACA9F,MAAOC,CAAAA,cAAc,CAAC2wH,eAAgBJ,CAAAA,SAAS,CAAE,eAAiB,CAAA,CAChEtwH,IAAK,UACH,CAAA,OAAO,IAAI,CAAC4xH,cAAc,CAE5BprH,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CAAA,CACjB,IAAI,CAACgsH,cAAc,CAAGhsH,MACxB,CACF,GACA9F,MAAOC,CAAAA,cAAc,CAAC2wH,eAAgBJ,CAAAA,SAAS,CAAE,eAAiB,CAAA,CAChEtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC6xH,cACd,EACArrH,GAAK,CAAA,SAASZ,KAAK,CACjB,CAAA,IAAI,CAACisH,cAAc,CAAGjsH,MACxB,CACF,CAAA,EACF,CAEA,MAAMksH,iBAAAA,CAAoB,EAC1B,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,YAAAA,CAAe,EACrB,MAAMC,UAAAA,CAAa,EACnB,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,oBAAAA,CAAuB,EAC7B,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,sBAAAA,CAAyB,EAC/B,MAAMC,YAAAA,CAAe,EACrB,MAAMC,SAAAA,CAAY,EAClB,MAAMC,SAAAA,CAAY,GAClB,MAAMC,UAAAA,CAAa,CACjB,CAACX,iBAAAA,EAAoB,aACrB,CAAA,CAACC,gBAAiB,UAAA,CAClB,CAACC,YAAa,EAAE,SAChB,CAACC,UAAAA,EAAa,MACd,CAAA,CAACC,qBAAsB,eAAA,CACvB,CAACC,oBAAqB,EAAE,iBACxB,CAACC,mBAAAA,EAAsB,eACvB,CAAA,CAACC,wBAAyB,kBAAA,CAC1B,CAACC,YAAa,EAAE,SAChB,CAACC,SAAAA,EAAY,KACb,CAAA,CAACC,WAAY,KACf,EACA,MAAME,QAAAA,CAAW,OACjB,MAAMC,UAAAA,CAAa,SACnB,MAAMC,OAAAA,CAAU,MAChB,MAAMC,QAAAA,CAAW,OACjB,MAAMC,YAAAA,CAAe,EACrB,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,YAAAA,CAAe,CACnB,CAACF,YAAAA,EAAe,MAChB,CAAA,CAACC,iBAAkB,SACrB,EACA,MAAME,SAAAA,CAAY,EAClB,MAAMC,WAAAA,CAAc,EACpB,MAAMC,WAAAA,CAAc,GACpB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,UAAAA,CAAa,EACnB,MAAMC,qBAAAA,CAAwB,EAC9B,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,eAAAA,CAAkBD,eACxB,MAAME,cAAAA,CAAiB,EACvB,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,cAAAA,CAAiB,CACrB,CAACL,qBAAAA,EAAwB,aACzB,CAAA,CAACC,gBAAiB,MAAA,CAClB,CAACE,cAAe,EAAE,MACpB,CACA,CAAA,MAAMG,oBAAsB,GAC5B,CAAA,MAAMC,oBAAsB,CAC5B,CAAA,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,eAAAA,CAAkB,CACtB,CAACJ,mBAAAA,EAAsB,UACvB,CAAA,CAACC,iBAAkB,MAAA,CACnB,CAACC,eAAgB,EAAE,OACnB,CAACC,iBAAAA,EAAoB,QACvB,CAAA,CACA,MAAME,mBAAsB,CAAA,CAAA,CAC5B,MAAMC,2BAA8B,CAAA,CAAA,CACpC,MAAMC,iBAAoB,CAAA,CACxB,CAACF,mBAAoB,EAAE,SACvB,CAACC,2BAAAA,EAA8B,gBACjC,CAAA,CACA,MAAME,eAAkB,CAAA,CAAA,CACxB,MAAMC,WAAc,CAAA,CAAA,CACpB,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,YAAe,CAAA,CAAA,CACrB,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,YAAe,CAAA,CAAA,CACrB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,WAAc,CAAA,CAAA,CACpB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,WAAc,CAAA,CAAA,CACpB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,cAAiB,CAAA,IAAIjvH,IAAI,CAC7B,CACE2uH,gBACA,CACEzzH,IAAAA,CAAM,WACNg0H,IAAM,CAAA,MAAA,CACNxxH,OAAQqzB,iBACRo+F,CAAAA,GAAAA,CAAK,IACP,CACD,CAAA,CACD,CACEhB,eACA,CAAA,CACEjzH,KAAM,UACNg0H,CAAAA,IAAAA,CAAM,OACNxxH,MAAQqzB,CAAAA,iBAAAA,CACRo+F,IAAK,IACP,CAAA,CACD,CACD,CACEV,eAAAA,CACA,CACEvzH,IAAM,CAAA,UAAA,CACNg0H,KAAM,MACNxxH,CAAAA,MAAAA,CAAQqzB,kBACRo+F,GAAK,CAAA,IACP,EACD,CACD,CACEL,gBACA,CACE5zH,IAAAA,CAAM,WACNg0H,IAAM,CAAA,MAAA,CACNxxH,OAAQs2B,mBACRm7F,CAAAA,GAAAA,CAAK,IACP,CACD,CAAA,CACD,CACEJ,eACA,CAAA,CACE7zH,KAAM,UACNg0H,CAAAA,IAAAA,CAAM,OACNxxH,MAAQs2B,CAAAA,mBAAAA,CACRm7F,IAAK,IACP,CAAA,CACD,CACD,CACEH,eAAAA,CACA,CACE9zH,IAAM,CAAA,UAAA,CACNg0H,KAAM,MACNxxH,CAAAA,MAAAA,CAAQs2B,oBACRm7F,GAAK,CAAA,IACP,EACD,CACD,CACEd,eACA,CACEnzH,IAAAA,CAAM,UACNg0H,IAAM,CAAA,KAAA,CACNxxH,OAAQizB,mBACRy+F,CAAAA,GAAAA,CAAK,IACP,CACD,CAAA,CACD,CACEb,cACA,CAAA,CACErzH,KAAM,SACNg0H,CAAAA,IAAAA,CAAM,MACNxxH,MAAQmzB,CAAAA,mBAAAA,CACRu+F,GAAK,CAAA,IACP,CACD,CAAA,CACD,CACEP,eACA,CAAA,CACE3zH,KAAM,UACNg0H,CAAAA,IAAAA,CAAM,OACNxxH,MAAQozB,CAAAA,gBAAAA,CACRu+F,KAAM,IACR,CAAA,CACD,CACF,CACD,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,mBAAqB,GAC3B,CAAA,MAAMC,SAAW,CACjB,CAAA,MAAMC,cAAgB,CACtB,CAAA,MAAMC,kBAAoB,CAC1B,CAAA,MAAMC,sBAAwB,CAC9B,CAAA,MAAMC,yBAA2B,CACjC,CAAA,MAAMC,yBAA2B,CACjC,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,oBAAsB,CAC5B,CAAA,MAAMC,2BAA6B,CACnC,CAAA,MAAMC,0BAA4B,CAClC,CAAA,MAAMC,4BAA8B,CACpC,CAAA,MAAMC,uBAAyB,EAC/B,MAAMC,wBAA0B,CAChC,CAAA,MAAMC,kBAAoB,CAC1B,CAAA,MAAMC,sBAAwB,CAC9B,CAAA,MAAMC,mBAAqB,CAC3B,CAAA,MAAMC,cAAgB,CACtB,CAAA,MAAMC,aAAe,CACrB,CAAA,MAAMC,sBAAwB,CAC5B,CAACF,eAAgB,MAAA,CACjB,CAACC,YAAa,EAAE,KAClB,CACA,CAAA,MAAME,eAAiB,KACvB,CAAA,MAAMC,eAAiB,KACvB,CAAA,MAAMC,kBAAoB,QAC1B,CAAA,MAAMC,mBAAqB,SAC3B,CAAA,MAAMC,eAAiB,KACvB,CAAA,MAAMC,eAAiB,KACvB,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,WAAa,CACjB,CAACF,YAAa,MAAA,CACd,CAACC,UAAW,EAAE,MAChB,CACA,CAAA,MAAME,eAAiB,CACvB,CAAA,MAAMC,eAAiB,CACvB,CAAA,MAAMC,aAAe,CACrB,CAAA,MAAMC,aAAe,CACrB,CAAA,MAAMC,cAAgB,CACtB,CAAA,MAAMC,gBAAkB,CACxB,CAAA,MAAMC,aAAe,CACrB,CAAA,MAAMC,aAAe,CACnB,QAAA,CACA,SACA,MACA,CAAA,MAAA,CACA,QACA,SACA,CAAA,MAAA,CACD,CACD,MAAMC,YAAAA,CAAe,EACrB,MAAMC,UAAAA,CAAa,EACnB,MAAMC,sBAAAA,CAAyB,EAC/B,MAAMC,sBAAAA,CAAyB,CAC7B,CAACH,YAAAA,EAAe,MAChB,CAAA,CAACC,YAAa,IAAA,CACd,CAACC,sBAAAA,EAAyB,gBAC5B,EACA,MAAME,kBAAAA,CAAqB,OAC3B,MAAMC,sBAAAA,CAAyB,WAC/B,MAAMC,wBAAAA,CAA2B,aACjC,MAAMC,qBAAAA,CAAwB,UAC9B,MAAMC,uBAAAA,CAA0B,YAChC,MAAMC,kBAAAA,CAAqB,CACzB,CAACL,kBAAAA,EAAqB,MACtB,CAAA,CAACC,wBAAyB,UAAA,CAC1B,CAACC,wBAAyB,EAAE,aAC5B,CAACC,qBAAAA,EAAwB,SACzB,CAAA,CAACC,yBAA0B,WAC7B,EACA,MAAME,oBAAAA,CAAuB,YAC7B,MAAMC,qBAAAA,CAAwB,WAC9B,MAAMC,mBAAAA,CAAsB,WAC5B,MAAMC,eAAAA,CAAkB,CACtB,CAACH,oBAAAA,EAAuB,WACxB,CAAA,CAACC,uBAAwB,YAAA,CACzB,CAACC,mBAAoB,EAAE,UACzB,CACA,CAAA,MAAME,mBAAqB,CAC3B,CAAA,MAAMC,eAAiB,CACvB,CAAA,MAAMC,cAAgB,CACtB,CAAA,MAAMC,cAAgB,CACtB,CAAA,MAAMC,iBAAmB,EACzB,CAAA,MAAMC,qBAAuB,EAC7B,CAAA,MAAMC,aAAe,EACrB,CAAA,MAAMC,gBAAkB,GACxB,CAAA,MAAMC,sBAAwB,GAC9B,CAAA,MAAMC,kBAAqB,CAAA,GAAA,CAC3B,MAAMC,wBAAAA,CAA2B,KACjC,MAAMC,sBAAAA,CAAyB,KAC/B,MAAMC,mBAAAA,CAAsB,KAC5B,MAAMC,iCAAAA,CAAoC,KAC1C,MAAMC,eAAAA,CAAkB,MACxB,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,sBAAAA,CAAyB,EAC/B,MAAMC,qBAAAA,CAAwB,EAC9B,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,uBAAAA,CAA0B,EAChC,MAAMC,SAAAA,CAAY,EAClB,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,WAAAA,CAAc,EACpB,MAAMC,kBAAAA,CAAqB,UAC3B,MAAMC,iBAAAA,CAAoB,eAC1B,MAAMC,sBAAAA,CAAyB,qBAC/B,MAAMC,kBAAAA,CAAqB,gBAC3B,MAAMC,sBAAAA,CAAyB,oBAC/B,MAAMC,gBAAAA,CAAmB,cACzB,MAAMC,oBAAAA,CAAuB,kBAC7B,MAAMC,aAAAA,CAAgB,WACtB,MAAMC,mBAAAA,CAAsB,iBAC5B,MAAMC,mBAAAA,CAAsB,iBAC5B,MAAMC,cAAAA,CAAiB,YACvB,MAAMC,wBAAAA,CAA2B,EACjC,MAAMC,wBAAAA,CAA2B,EACjC,MAAMC,uBAAAA,CAA0B,EAChC,MAAMC,qBAAAA,CAAwB,CAC5B,CAACH,wBAAAA,EAA2B,QAC5B,CAAA,CAACC,wBAAyB,EAAE,QAC5B,CAAA,CAACC,yBAA0B,OAC7B,EACA,MAAME,UAAAA,CAAa,EACnB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,WAAAA,CAAc,EACpB,MAAMC,SAAAA,CAAY,EAClB,MAAMC,UAAAA,CAAa,EACnB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,qBAAAA,CAAwB,EAC9B,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,mBAAAA,CAAsB,EAC5B,MAAMC,eAAAA,CAAkB,EACxB,MAAMC,WAAAA,CAAc,EACpB,MAAMC,aAAAA,CAAgB,EACtB,MAAMC,sBAAAA,CAAyB,EAC/B,MAAMC,oBAAAA,CAAuB,EAC7B,MAAMC,gBAAAA,CAAmB,WACzB,MAAMC,WAAAA,CAAc,MACpB,MAAMC,YAAAA,CAAe,OACrB,MAAMC,WAAAA,CAAc,OACpB,MAAMC,aAAAA,CAAgB,SACtB,MAAMC,gBAAAA,CAAmB,YACzB,MAAMC,eAAAA,CAAkB,WACxB,MAAMC,WAAAA,CAAc,CAClB,CAACJ,WAAAA,EAAc,MACf,CAAA,CAACC,eAAgB,QAAA,CACjB,CAACC,gBAAiB,EAAE,YACpB,CAACC,eAAAA,EAAkB,UACrB,CAAA,CACA,MAAME,eAAkB,CAAA,WAAA,CACxB,MAAMC,gBAAmB,CAAA,YAAA,CACzB,MAAMC,qBAAwB,CAAA,iBAAA,CAC9B,MAAMC,sBAAyB,CAAA,kBAAA,CAC/B,MAAMC,aAAgB,CAAA,SAAA,CACtB,MAAMC,cAAiB,CAAA,UAAA,CACvB,MAAMC,cAAiB,CAAA,UAEvB,OAAMC,sBAQJ9lE,CAAAA,UAAAA,CAAWr2D,IAAI,CAAE,CACf,IAAI,IAAItD,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC+5D,cAAc,CAAC95D,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,MAAM65D,aAAAA,CAAgB,IAAI,CAACE,cAAc,CAAC/5D,CAAE,CAAA,CAC5C,GAAI65D,aAAe93D,EAAAA,GAAAA,CAAIuB,MAAO,CAC5B,OAAO,IACT,CACF,CACA,OAAO,KACT,CACAw2D,WAAWx2D,IAAI,CAAE,CACf,IAAI,IAAItD,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC6rD,gBAAgB,CAAC5rD,MAAM,CAAED,IAAI,CACnD,MAAM0/H,YAAc,IAAI,CAAC7zE,gBAAgB,CAAC7rD,CAAAA,CAAE,CAC5C,GAAI0/H,WAAAA,EAAar2F,WAAW/lC,IAAO,CAAA,CAAA,CACjC,OAAO,IACT,CACF,CACA,OAAO,KACT,CACAu3D,gBAAiBhhB,CAAAA,QAAQ,CAAE,CACzB,OAAO,IAAI,CAACmD,YAAY,EAAEtD,SAASolB,IAAK,CAACnjB,SAAUA,OAAQr4C,CAAAA,IAAI,GAAKu2C,QACtE,CAAA,CACA8lF,YAAY11F,MAAM,CAAE,CAClB,IAAIpiC,GAAAA,CAAMm/G,KAAKC,SAAS,CAAC,IAAI,CAACltD,cAAc,EAAIitD,IAAKC,CAAAA,SAAS,CAAC,IAAI,CAACp7D,gBAAgB,CACpF,CAAA,GAAI5hB,OAAO2E,QAAQ,CAAE,CACnB/mC,GAAO,EAAA,IAAI,CAACm1C,YAAY,EAAEnC,2BAC5B,CACA,OAAOhzC,GACT,CAlCAE,WAAAA,CAAY63H,iBAAiB,CAAEC,mBAAmB,CAAE7iF,YAAY,CAAC,CAC/D,IAAI,CAAC+c,cAAc,CAAG,EAAE,CACxB,IAAI,CAAClO,gBAAgB,CAAG,EAAE,CAC1B,IAAI,CAACkO,cAAc,CAAC3yB,cAAe,CAAA,CAAGw4F,iBACtC,CAAA,IAAI,CAAC/zE,gBAAgB,CAACzkB,eAAe,CAAGy4F,mBACxC,CAAA,IAAI,CAAC7iF,YAAY,CAAGA,aACtB,CA6BF,CAEA,MAAM8iF,0BAA4B,IAAIt1F,WAAAA,CACtC,SAASu1F,iBAAkB91F,CAAAA,MAAM,EAC/B,MAAM+1F,OAAAA,CAAUF,0BAA0B/9H,GAAG,CAACkoC,QAC9C,OAAO+1F,OACT,CACA,SAASC,iBAAAA,CAAkBh2F,MAAM,CAAE+1F,OAAO,EACxCF,yBAA0B/9H,CAAAA,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CACpC,OAAO+1F,OACT,CAAA,EACF,CAEA,MAAME,eAAAA,CACJ,OAAOC,WAAYp5D,CAAAA,OAAO,CAAE,CAC1B,MAAMq5D,YAAcphI,KAAM2qB,CAAAA,IAAI,CAACo9C,OAAS72D,CAAAA,CAAAA,IAAI,CAAC,CAACN,CAAAA,CAAGC,IAAID,CAAC,CAAC,EAAE,CAAGC,CAAC,CAAC,CAAE,CAAA,CAAG,EAAI,CAAC,CAAA,CAAA,CACxE,OAAOopC,QAAS+tE,CAAAA,IAAAA,CAAKC,SAAS,CAACmZ,WAAAA,CAAAA,CACjC,CACF,CAEA,MAAMC,sBAAwB,IAAI71F,WAClC,OAAM81F,cAQJC,CAAAA,kBAAAA,EAAqB,CACnB,IAAInnE,OAAAA,CACJ,GAAI,IAAI,CAAConE,QAAQ,CAAE,CACjBpnE,QAAU,SACZ,CAAA,KAAO,GAAI,IAAI,CAACqnE,SAAS,CAAE,CACzBrnE,QAAU,UACZ,CAAA,KAAO,GAAI,IAAI,CAACvzD,KAAK,GAAK82H,WAAa,CAAA,CACrCvjE,QAAU,OACZ,CACA,IAAI,CAAC2N,OAAO,CAACx+D,GAAG,CAAC,CAAC,EAAE6wD,OAAAA,CAAQ,KAAK,CAAC,CAAE,IACpC,IAAI,CAAC2N,OAAO,CAACx+D,GAAG,CAAC,CAAC,EAAE,IAAI,CAACjF,IAAI,CAAC+0G,WAAW,EAAA,CAAG,KAAK,CAAC,CAAE,IACtD,CAlBAtwG,WAAAA,CAAYzE,IAAI,CAAEuC,KAAK,CAAE4L,OAAU,CAAA,EAAE,CAAC,CACpC,IAAI,CAACs1D,OAAO,CAAG,IAAI3+D,GACnB,CAAA,IAAI,CAAC9E,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACuC,KAAK,CAAGA,KAAAA,CACbhE,OAAOskH,MAAM,CAAC,IAAI,CAAE10G,OAAAA,CAAAA,CACpB,IAAI,CAAC8uH,kBAAkB,GACzB,CAaF,CACA,MAAMG,UAeJ,CAAA,OAAO3+H,IAAIkoC,MAAM,CAAE,CACjB,OAAOo2F,qBAAAA,CAAsBt+H,GAAG,CAACkoC,MAAAA,CAAQ,KACvC,OAAO,IAAIy2F,UACb,CACF,CAAA,CACAh3E,SAASpmD,IAAI,CAAEmO,OAAO,CAAE,CACtB,IAAIwrB,IAAO,CAAA,IAAI,CAAC0jG,WAAW,CAAC5+H,GAAG,CAACuB,IAAAA,CAAAA,CAChC,GAAI25B,IAASn1B,GAAAA,SAAAA,CAAW,CACtBm1B,IAAO,CAAA,IAAIqjG,eAAeh9H,IAAM,CAAA,IAAI,CAACs5E,SAAS,CAAEnrE,SAChD,IAAI,CAACkvH,WAAW,CAACp4H,GAAG,CAAC00B,IAAK35B,CAAAA,IAAI,CAAE25B,IAChC,CAAA,CAAA,IAAI,CAAC2jG,aAAa,CAAC3jG,IAAKp3B,CAAAA,KAAK,CAAC,CAAGo3B,IACjC,CAAA,IAAI,CAAC2/C,SAAS,GAChB,CACA,OAAO3/C,IACT,CACA4jG,WAAWh7H,KAAK,CAAE,CAChB,MAAMo3B,IAAAA,CAAO,IAAI,CAAC2jG,aAAa,CAAC/6H,KAAM,CAAA,CACtC,OAAOo3B,IACT,CACA6jG,UAAUx9H,IAAI,CAAE,CACd,OAAO,IAAI,CAACq9H,WAAW,CAAC5+H,GAAG,CAACuB,IAAAA,CAC9B,CAnCAyE,WAAa,EAAA,CACX,IAAI,CAAC44H,WAAW,CAAG,IAAIv4H,GACvB,CAAA,IAAI,CAACw4H,aAAa,CAAG,EACrB,CAAA,IAAI,CAAChkD,SAAS,CAAG,CAAA,CACjB,MAAMtsE,GAAM,CAAA,CAAChN,KAAMuC,KAAO4L,CAAAA,OAAAA,GAAAA,CACxB,IAAI,CAACi4C,QAAQ,CAACpmD,IAAMmO,CAAAA,OAAAA,EACtB,EACAnB,GAAI,CAAA,SAAA,CAAWksH,eAAgB,CAC7BiE,SAAAA,CAAW,IACb,CACAnwH,CAAAA,CAAAA,GAAAA,CAAI,WACJA,GAAI,CAAA,QAAA,CAAA,CACJA,IAAI,MACN,EAAA,CAuBF,CAEA,MAAMywH,cAAAA,SAAuB34H,IAC3BG,GAAIjF,CAAAA,IAAI,CAAEgC,IAAI,CAAE,CACd,GAAI,CAAC,IAAI,CAACgD,GAAG,CAAChF,IAAS,CAAA,EAAA,IAAI,CAACvB,GAAG,CAACuB,QAAUgC,IAAM,CAAA,CAC9C,IAAI,CAAC07H,SAAS,GAChB,CACA,OAAO,KAAK,CAACz4H,GAAAA,CAAIjF,KAAMgC,IACzB,CAAA,CACAgL,IAAIw/C,MAAM,CAAEmxE,SAAW,IAAI,CAAE,CAC3B,IAAK,KAAM,CAACp5H,GAAKF,CAAAA,KAAAA,CAAM,GAAI9F,MAAOqlD,CAAAA,OAAO,CAAC4I,MAAQ,CAAA,CAAA,CAChD,GAAImxE,QAAY,EAAA,CAAC,IAAI,CAAC34H,GAAG,CAACT,KAAM,CAC9B,IAAI,CAACU,GAAG,CAACV,IAAKF,KAChB,EAAA,CACF,CACA,OAAO,IAAI,CAEbkB,MAAAA,CAAOvF,IAAI,CAAE,CACX,MAAM49H,OAAU,CAAA,IAAI,CAAC54H,GAAG,CAAChF,MACzB,MAAMvD,MAAAA,CAAS,KAAK,CAAC8I,MAAAA,CAAOvF,MAC5B,GAAI49H,OAAAA,EAAWnhI,OAAQ,CACrB,IAAI,CAACihI,SAAS,GAChB,CACA,OAAOjhI,MACT,CACA6I,KAAQ,EAAA,CACN,GAAI,IAAI,CAAC1D,IAAI,CAAG,CAAA,CAAG,CACjB,IAAI,CAAC87H,SAAS,GAChB,CACA,KAAK,CAACp4H,KAAAA,GACR,CACAo4H,SAAY,EAAA,CACV,IAAI,CAACjlF,MAAM,CAAG,IACd,CAAA,IAAI,CAAColF,SAAS,CAAG,KACnB,CACAC,SAAU,CACR,OAAO,IAAI,CAACrlF,MAAM,CAEpBslF,UAAAA,EAAa,CACX,IAAI,CAACtlF,MAAM,CAAG,MAChB,CACA,IAAIl0C,GAAAA,EAAM,CACR,GAAI,IAAI,CAACs5H,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAG,KACjB,CAAA,IAAI,CAACtkF,IAAI,CAAG79C,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAACu9B,OAAO,EAAIh3C,CAAAA,CAAAA,IAAI,CAAC,CAAC,CAACN,EAAE,CAAE,CAACC,EAAE,GAAGD,CAAAA,CAAIC,EAAI,CAAC,CAAA,CAAID,EAAIC,CAAI,CAAA,CAAA,CAAI,GAAGhJ,GAAG,CAAC,CAAC,CAACy6H,CAAAA,CAAG7hI,EAAE,GAAG,CAAC,EAAE6hI,CAAE,CAAA,CAAC,EAAEroF,QAASx5C,CAAAA,CAAAA,CAAAA,CAAG,CAAC,CAAEI,CAAAA,IAAI,CAAC,GAChI,EAAA,CACA,OAAO,IAAI,CAACg9C,IAAI,CAElB99C,KAAK6xC,MAAM,CAAE,CACX,IAAI,CAAChoC,KAAK,EACV,CAAA,IAAK,KAAM,CAACf,GAAAA,CAAKF,MAAM,GAAIipC,MAAAA,CAAO,CAChC,IAAI,CAACroC,GAAG,CAACV,GAAAA,CAAKF,OAChB,CACA,OAAO,IAAI,CAEbI,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,IAAIA,IAAO,CAAA,CAAA,IAAI,CAACm7H,SAAS,CAAG,MAAO,IAAI,CAACtkF,IAAI,CAAG,GACtD,CACF,CAEA,MAAM0kF,aAAe,IAAI/2F,WACzB,OAAMg3F,YACJ,CAAA,OAAOz/H,IAAIkoC,MAAM,CAAE43B,eAAiB5/B,mBAAmB,CAAE,CACvD,MAAMgQ,KAAAA,CAAQsvF,aAAax/H,GAAG,CAACkoC,OAAQ,IACrC,CAAA,OAAO,IAAIu3F,YACb,CAAA,CAAA,CACA,OAAO3/D,cAAmB5/B,GAAAA,mBAAAA,CAAsBgQ,MAAMwvF,IAAI,CAAGxvF,MAAMuvB,IACrE,CACA,IAAIkgE,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACD,IAAI,CAACv8H,IAAI,GAAK,CAAA,EAAK,IAAI,CAACs8D,IAAI,CAACt8D,IAAI,CAAG,CAClD,CACA,IAAI2C,KAAM,CACR,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC45H,IAAI,CAAC55H,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC25D,IAAI,CAAC35D,GAAG,CAAC,KAAK,EAAE,IAAI,CAACpJ,OAAO,CAAC,CACzE,CACA2iI,OAAU,EAAA,CACR,OAAO,IAAI,CAACK,IAAI,CAACL,OAAO,IAAM,IAAI,CAAC5/D,IAAI,CAAC4/D,OAAO,EACjD,CACAC,UAAAA,EAAa,CACX,IAAI,CAACI,IAAI,CAACJ,UAAU,GACpB,IAAI,CAAC7/D,IAAI,CAAC6/D,UAAU,GACtB,CACAtiI,IAAAA,CAAK6xC,MAAM,CAAE,CACX,IAAI,CAACnyC,OAAO,CAAGmyC,MAAOnyC,CAAAA,OAAO,CAC7B,IAAI,CAACgjI,IAAI,CAAC1iI,IAAI,CAAC6xC,MAAO6wF,CAAAA,IAAI,EAC1B,IAAI,CAACjgE,IAAI,CAACziE,IAAI,CAAC6xC,MAAO4wB,CAAAA,IAAI,EAC1B,OAAO,IAAI,CAEbz5D,WAAAA,EAAa,CACX,IAAI,CAAC05H,IAAI,CAAG,IAAIV,cAChB,CAAA,IAAI,CAACv/D,IAAI,CAAG,IAAIu/D,cAChB,CAAA,IAAI,CAACtiI,OAAO,CAAG,GACjB,CACF,CAEA,MAAMkjI,QAAAA,CACJ,OAAOC,KAAM,CAAA,GAAGC,IAAI,CAAE,CACpB,MAAM9hI,MAAS,CAAA,IAAIqI,IAAIy5H,IAAI,CAAC,EAAE,EAAI,EAAE,EACpC,IAAI,IAAI7hI,EAAI,CAAGA,CAAAA,CAAAA,CAAI6hI,KAAK5hI,MAAM,CAAED,IAAI,CAClC,MAAM6G,IAAMg7H,IAAI,CAAC7hI,EAAE,CACnB,GAAI6G,IAAK,CACP,IAAK,KAAM,CAACgB,GAAAA,CAAKF,MAAM,GAAId,GAAAA,CAAI,CAC7B9G,MAAOwI,CAAAA,GAAG,CAACV,GAAKF,CAAAA,KAAAA,EAClB,CACF,CACF,CACA,OAAO5H,MACT,CACF,CAEA,MAAM+hI,0BAAAA,SAAmC5B,gBAMvCP,WAAYluH,CAAAA,OAAO,CAAE,CACnB,OAAO,IAAI,CAAC5J,GAAG,CAEjBk6H,sBAAAA,CAAuB93F,MAAM,CAAEx4B,OAAO,CAAE,CACtC,OAAO,IAAI,CAAC+lD,gBAAgB,CAT9BzvD,WAAAA,CAAYF,GAAG,CAAE2vD,gBAAgB,CAAC,CAChC,KAAK,EACL,CAAA,IAAI,CAAC3vD,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC2vD,gBAAgB,CAAGA,iBAC1B,CAOF,CACA,MAAMwqE,YACJ,OAAO1+C,YAAAA,CAAar5C,MAAM,CAAEx4B,OAAO,CAAE,CACnC,MAAMwwH,eAAiBlC,iBAAkB91F,CAAAA,MAAAA,CAAAA,CACzC,IAAI2T,MAASqkF,CAAAA,cAAAA,CAAeC,eAAe,CAACzwH,OAAAA,CAAQ0wH,UAAU,CAC9D,CAAA,GAAI,CAACvkF,MAAQ,CAAA,CACX,MAAM4jB,IAAOv3B,CAAAA,MAAAA,CAAO2E,QAAQ,GAAK,CAAC,CAACn9B,OAAAA,CAAQ2wH,UAAU,EAAI,CAAC,CAAC3wH,OAAQ4wH,CAAAA,WAAW,CAAM,GAAA,CAAC,CAAC5wH,OAAAA,CAAQ6wH,YAAY,EAAI,CAAC,CAAC7wH,OAAQ8wH,CAAAA,aAAa,CACrI,CAAA,MAAMC,UAAYhB,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQu3B,CAAAA,IAAAA,CAAOt/B,oBAAsBD,mBACxE,CAAA,CAAA,MAAM0/B,WAAalwD,OAAQ4wH,CAAAA,WAAW,CAAGG,SAAUzgI,CAAAA,GAAG,CAAC0P,OAAQ4wH,CAAAA,WAAW,EAAI7gE,IAAO/vD,CAAAA,OAAAA,CAAQ2wH,UAAU,CAAG3wH,OAAAA,CAAQgxH,UAAU,CAC5H,MAAM7gE,aAAenwD,OAAQ8wH,CAAAA,aAAa,CAAGC,SAAUzgI,CAAAA,GAAG,CAAC0P,OAAQ8wH,CAAAA,aAAa,EAAI/gE,IAAO/vD,CAAAA,OAAAA,CAAQ6wH,YAAY,CAAG7wH,OAAAA,CAAQixH,YAAY,CACtI,MAAM10D,iBAAmB2zD,QAASC,CAAAA,KAAK,CAACY,SAAW/wH,CAAAA,OAAAA,CAAQu8D,gBAAgB,CAC3E,CAAA,MAAMF,eAAiB6zD,QAASC,CAAAA,KAAK,CAACY,SAAW/wH,CAAAA,OAAAA,CAAQq8D,cAAc,CACvElwB,CAAAA,MAAAA,CAAS,IAAIqxB,MAAOhlC,CAAAA,MAAAA,CAAQoiC,sBAAsBC,gBAAgB,CAACriC,OAAQ,CACzE3mC,IAAAA,CAAMmO,QAAQ0wH,UAAU,CACxBtgE,eAAgBL,IAAOt/B,CAAAA,mBAAAA,CAAsBD,oBAC7CqpB,UAAY75C,CAAAA,OAAAA,CAAQ65C,UAAU,CAC9BqW,UAAAA,CAAYA,WACZC,YAAcA,CAAAA,YAAAA,CACdsM,qBAAsBz8D,OAAQy8D,CAAAA,oBAAoB,CAClDJ,cAAgBA,CAAAA,cAAAA,CAChBR,cAAe77D,OAAQ67D,CAAAA,aAAa,CACpCU,gBAAkBA,CAAAA,gBAAAA,CAClBR,gBAAiB/7D,OAAQ+7D,CAAAA,eAAe,CACxChB,mBAAqB/6D,CAAAA,OAAAA,CAAQ+6D,mBAAmB,CAClD,CAAA,CAAA,CACAy1D,eAAeU,eAAe,CAAClxH,QAAQ0wH,UAAU,CAAEvkF,QACrD,CACA,OAAOA,MACT,CACA,OAAOglF,eAAeC,QAAQ,CAAEtwH,MAAM,CAAE,CACtC,MAAMw0D,OAAU,CAAA,IAAI3+D,IAAIy6H,QAAS97D,CAAAA,OAAO,EACxCx0D,MAAOuwH,CAAAA,kBAAkB,CAAC/7D,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAAA,CAAOE,MAAMk/D,OAAQx+D,CAAAA,GAAG,CAACV,GAAKF,CAAAA,KAAAA,CAAAA,CAAAA,CACzE,MAAMo7H,cAAiBrC,CAAAA,UAAAA,CAAW3+H,GAAG,CAACwQ,MAAAA,CAAO03B,MAAM,CAAE42F,CAAAA,UAAU,CAACtuH,MAAOywH,CAAAA,IAAI,EAC3ED,cAAeh8D,CAAAA,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAOE,CAAAA,GAAAA,GAAMk/D,QAAQx+D,GAAG,CAACV,IAAKF,KAC9D,CAAA,CAAA,CAAA,OAAOo/D,OACT,CACA,OAAOk8D,cAAcrlF,MAAM,CAAEsa,iBAAiB,CAAE,CAC9C,MAAMV,gBAAmB5Z,CAAAA,MAAAA,CAAOkjB,UAAU,CAC1C,MAAMx9D,KAAOk0D,gBAAiBl0D,CAAAA,IAAI,EAAI,QACtC,CAAA,MAAMuE,IAAM,CAAC,EAAEvE,KAAK,IAAI,EAAEs6C,OAAO5T,EAAE,CAAC,CAAC,CACrC,MAAMk5F,kBAAoB,IAAIpB,0BAAAA,CAA2Bj6H,IAAK2vD,gBAC9D,CAAA,CAAA,MAAM2rE,kBAAoB,QAC1B,CAAA,MAAMnD,QAAUD,iBAAkBniF,CAAAA,MAAAA,CAAO3T,MAAM,CAC/C+1F,CAAAA,OAAAA,CAAQoD,QAAQ,CAACD,iBAAAA,CAAmBD,mBACpC,MAAMG,OAAAA,CAAUrD,QAAQsD,UAAU,CAACH,iBAAmB,CAAA,EAAIjrE,CAAAA,iBAAAA,CAAAA,CAC1D8nE,QAAQuD,UAAU,CAACJ,mBACnB,OAAOE,OACT,CACA,OAAOG,0BAAAA,CAA2Bv5F,MAAM,CAAE64F,kBAAkB,CAAE/7D,OAAO,CAAE,CACrE,GAAI+7D,kBAAAA,CAAmBW,mBAAmB,CAAE,CAC1C18D,QAAQx+D,GAAG,CAAC,wBAAyB,EACvC,EAAA,CACA,GAAI0hC,MAAOqT,CAAAA,sBAAsB,CAAE,CACjCypB,OAAAA,CAAQx+D,GAAG,CAAC,sBAAA,CAAwB,IACtC,CACF,CACF,CACA,SAAS+6E,YAAAA,CAAar5C,MAAM,CAAEy5F,MAAM,CAAEC,MAAM,CAAEz1D,qBAAuB,KAAK,CAAE01D,wBAA0B,EAAE,GACxG,SAASC,qBAAqB55F,MAAM,CAAEqkC,MAAM,CAAEw1D,MAAM,CAAE3B,UAAU,CAAE72E,UAAU,CAAE4iB,oBAAAA,CAAuB,KAAK,CAAE01D,uBAAAA,CAA0B,EAAE,CAAA,CACtI,GAAI,OAAO11D,oBAAAA,GAAyB,UAAW,CAC7C01D,uBAAAA,CAAwB11D,oBAAoB,CAAGA,qBACjD,MAAO,GAAI,OAAOA,uBAAyB,QAAU,CAAA,CACnD01D,wBAA0B,CACxB,GAAGA,uBAAuB,CAC1B,GAAG11D,oBAAoB,EAE3B,CACA,MAAM+zD,cAAiBlC,CAAAA,iBAAAA,CAAkB91F,QACzC,IAAI2T,MAAAA,CAASqkF,eAAeC,eAAe,CAACC,YAC5C,GAAI,CAACvkF,OAAQ,CACXA,MAAAA,CAAS,IAAIqxB,MAAOhlC,CAAAA,MAAAA,CAAQoiC,sBAAsBC,gBAAgB,CAACriC,OAAQ,CACzE,GAAG25F,uBAAuB,CAC1BtgI,IAAAA,CAAM6+H,WACNxgE,UAAY2M,CAAAA,MAAAA,CACZ1M,aAAckiE,MACdx4E,CAAAA,UAAAA,CAAYA,UACd,CACA22E,CAAAA,CAAAA,CAAAA,cAAAA,CAAeU,eAAe,CAACR,UAAAA,CAAYvkF,QAC7C,CACA,OAAOA,MACT,CAEA,MAAMmmF,eAAiB,CACrBtsH,IAAAA,CAAMmmB,mBACNkzC,IAAM,CAAA,CAAA,CACNC,WAAY,CACZ/wB,CAAAA,KAAAA,CAAO,EACPgxB,OAAS,CAAA,KACX,EACA,MAAMgzD,aAAAA,CAAgB,IAAI7hH,IAC1B,CAAA,MAAM8hH,aAAe,IAAI9hH,IAAAA,CACzB,MAAM+hH,mBAAsB,CAAA,IAAI9xF,gBAChC,CAAM+xF,MAAAA,UAAAA,CAeJh7F,SAAU,CACR,IAAI,CAACsJ,aAAa,EAAEtJ,SACpB,CAAA,IAAI,CAACsJ,aAAa,CAAG,IACrB,CAAA,IAAI,CAACqU,SAAS,EAAE3d,SAChB,CAAA,IAAI,CAAC2d,SAAS,CAAG,KACnB,CACAklD,MAAAA,CAAO5R,QAAQ,CAAEC,OAAO,CAAE,CACxB,MAAMpwD,OAAS,IAAI,CAAC2T,MAAM,CAAC3T,MAAM,CACjC,GAAImwD,QAAAA,CAAU,CACZ4pC,aAAcz7H,CAAAA,GAAG,CAAC0hC,MAAO4U,CAAAA,EAAE,CAAE5U,MAAO6U,CAAAA,EAAE,CAAE7U,MAAO8U,CAAAA,EAAE,CAAE9U,MAAO+U,CAAAA,EAAE,EAC5DilF,YAAa17H,CAAAA,GAAG,CAAC0hC,MAAOrjB,CAAAA,EAAE,CAAEqjB,MAAOpjB,CAAAA,EAAE,CAAEojB,MAAOgV,CAAAA,EAAE,CAAEhV,MAAOiV,CAAAA,EAAE,EAC3Dm7C,OAAUA,CAAAA,OAAAA,EAAWD,SACrBnwD,MAAOvkB,CAAAA,WAAW,CAAC00E,QAAS/lF,CAAAA,CAAC,CAAE+lF,QAASr+E,CAAAA,CAAC,CAAEq+E,QAASl+E,CAAAA,CAAC,CAAEk+E,QAAS76E,CAAAA,CAAC,EACjE0qB,MAAO00C,CAAAA,UAAU,CAAC0b,OAAQhmF,CAAAA,CAAC,CAAEgmF,OAAQt+E,CAAAA,CAAC,CAAEs+E,OAAQn+E,CAAAA,CAAC,CAAEm+E,OAAQ96E,CAAAA,CAAC,EAC9D,CACA0qB,MAAAA,CAAO2V,eAAe,CAAC3V,MAAAA,CAAOiT,gBAAgB,CAC9C,CAAA,MAAMU,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B3T,MAAOqnC,CAAAA,SAAS,CAAC1zB,MACjB,CAAA,CAAA,GAAI3T,OAAO4Z,sBAAsB,CAAE,CACjC5Z,MAAOknC,CAAAA,YAAY,CAAC/pC,cAAgB6C,CAAAA,MAAAA,CAAOmnC,cAAc,CACzD,CAAA,MAAMtqB,UAAY,IAAI,CAACA,SAAS,CAChCA,SAAAA,CAAU1T,MAAM,EAChBnJ,CAAAA,MAAAA,CAAOknC,YAAY,CAAC9pC,cAAAA,CAAgByf,WACpC,MAAMrU,aAAAA,CAAgB,IAAI,CAACA,aAAa,CACxC,GAAIA,aAAAA,CAAe,CACjBA,aAAcW,CAAAA,MAAM,CAAC8wF,mBACrBj6F,CAAAA,CAAAA,MAAAA,CAAOknC,YAAY,CAAC7pC,iBAAAA,CAAmB48F,oBAAoBp9E,SAAS,CAAEo9E,oBAAoB7xF,OAAO,EACnG,MAAO,CACLpI,MAAAA,CAAOknC,YAAY,CAAC7pC,iBAAAA,CAAmB2C,OAAOmnC,cAAc,EAC9D,CACF,CACAnnC,MAAAA,CAAOoW,IAAI,CAAC0jF,cAAAA,CAAAA,CACZ,GAAI3pC,QAAU,CAAA,CACZnwD,OAAOvkB,WAAW,CAACs+G,cAAc3vH,CAAC,CAAE2vH,cAAcjoH,CAAC,CAAEioH,cAAc9nH,CAAC,CAAE8nH,cAAczkH,CAAC,CAAA,CACrF0qB,OAAO00C,UAAU,CAACslD,aAAa5vH,CAAC,CAAE4vH,aAAaloH,CAAC,CAAEkoH,aAAa/nH,CAAC,CAAE+nH,aAAa1kH,CAAC,EAClF,CACF,CAlDAxX,WAAAA,CAAY61C,MAAM,CAAC,CACjB,MAAM3T,MAAS2T,CAAAA,MAAAA,CAAO3T,MAAM,CAC5B,IAAI,CAAC2T,MAAM,CAAGA,MACd,CAAA,GAAI3T,OAAO4Z,sBAAsB,CAAE,CACjC,MAAMqU,iBAAAA,CAAoB,IAAIunE,sBAC9B,CAAA,IAAI,CAAC7hF,MAAM,CAAGokF,WAAYiB,CAAAA,aAAa,CAACrlF,MAAQsa,CAAAA,iBAAAA,CAAAA,CAChD,MAAM8G,QAAW,CAAA,IAAI,CAACphB,MAAM,CAACqb,uBAAuB,CACpD,GAAI+F,SAAU,CACZ,IAAI,CAACvsB,aAAa,CAAG,IAAI29B,aAAcnmC,CAAAA,MAAAA,CAAQ+0B,SAAU,KAC3D,EAAA,CACA,MAAMjW,eAAkB,CAAA,IAAI,CAACnL,MAAM,CAACsb,mBAAmB,CACvD,IAAI,CAACpS,SAAS,CAAG,IAAIxU,SAAAA,CAAUrI,OAAQ8e,eACzC,EAAA,CACF,CAsCF,CAEA,MAAMq7E,uBAAuBx5B,UAO3BW,CAAAA,OAAAA,EAAU,CACR,KAAM,CAAEthE,MAAM,CAAE,CAAG,IAAI,CACvBA,MAAOyV,CAAAA,WAAW,CAAC7oB,aACnBoT,CAAAA,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAAA,CAAWO,OAAO,CACvClN,CAAAA,MAAAA,CAAOmV,eAAe,CAAC,IAAA,CAAM,MAC7B,IAAI,CAACilF,IAAI,CAACr4B,MAAM,CAAC,IAAI,CAACvqD,IAAI,CAAE,IAAI,CAAC6iF,WAAW,EAC9C,CAZAv8H,WAAYkiC,CAAAA,MAAM,CAAEo6F,IAAI,CAAE5iF,IAAI,CAAE6iF,WAAW,CAAC,CAC1C,KAAK,CAACr6F,MACN,CAAA,CAAA,IAAI,CAACo6F,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC5iF,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC6iF,WAAW,CAAGA,YACrB,CAQF,CAEA,MAAMC,SAAAA,CAAY,IAAIpiH,IACtB,CAAA,SAASqiH,mBAAmBv6F,MAAM,CAAErrC,MAAM,CAAEg/C,MAAM,CAAE6D,IAAI,CAAE6iF,WAAW,CACnE,CAAA,MAAMD,KAAO,IAAIF,UAAAA,CAAWvmF,QAC5B,GAAI,CAAC6D,KAAM,CACTA,IAAAA,CAAO8iF,SACP9iF,CAAAA,IAAAA,CAAKptC,CAAC,CAAG,CACTotC,CAAAA,IAAK1lC,CAAAA,CAAC,CAAG,CACT0lC,CAAAA,KAAKvlC,CAAC,CAAGtd,OAASA,MAAO+mB,CAAAA,KAAK,CAAGskB,MAAOtkB,CAAAA,KAAK,CAC7C87B,IAAAA,CAAKliC,CAAC,CAAG3gB,MAAAA,CAASA,OAAOgnB,MAAM,CAAGqkB,OAAOrkB,OAC3C,CACA,MAAMq8B,UAAAA,CAAa,IAAImiF,cAAen6F,CAAAA,MAAAA,CAAQo6F,KAAM5iF,IAAM6iF,CAAAA,WAAAA,CAAAA,CAC1DriF,WAAW7B,IAAI,CAACxhD,OAChBqjD,CAAAA,UAAAA,CAAWiR,QAAQ,CAACtqD,KAAK,CAAG,KAC5Bq5C,CAAAA,WAAWyR,eAAe,CAACG,UAAU,CAAG,KAAA,CACxC,GAAI5pB,MAAO2E,CAAAA,QAAQ,EAAIhwC,MAAW,GAAA,IAAA,EAAQqrC,OAAO4Y,OAAO,CAAG,EAAG,CAC5DZ,UAAAA,CAAWiR,QAAQ,CAACM,KAAK,CAAG,KAC9B,CACAvR,WAAW+pD,MAAM,EAAA,CACjBq4B,KAAKl7F,OAAO,GACd,CAEA,MAAMs7F,KAAAA,CAQJt7F,QAAQu7F,KAAK,CAAEC,MAAM,CAAE,CACrB,GAAI,IAAI,CAACC,YAAY,CAAE,CACrB,IAAI,CAACC,gBAAgB,CAACH,KAAAA,CAAOC,MAC7B,CAAA,CAAA,IAAI,CAACC,YAAY,CAACz7F,OAAO,EACzB,CAAA,IAAI,CAACy7F,YAAY,CAAG,KACtB,CACF,CACAE,WAAYJ,CAAAA,KAAK,CAAEC,MAAM,CAAE,CACzB,IAAI,IAAI3kI,EAAI,CAAGA,CAAAA,CAAAA,CAAI2kI,OAAO1kI,MAAM,CAAED,IAAI,CACpC,MAAM+kI,MAAQL,KAAMC,CAAAA,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,EACjD,GAAI+kI,KAAAA,CAAO,CACTA,KAAME,CAAAA,gBAAgB,CAAC,CACrB,IAAI,CAACL,YAAY,CAClB,EACH,CACF,CACF,CACAC,gBAAiBH,CAAAA,KAAK,CAAEC,MAAM,CAAE,CAC9B,IAAI,IAAI3kI,EAAI,CAAGA,CAAAA,CAAAA,CAAI2kI,OAAO1kI,MAAM,CAAED,IAAI,CACpC,MAAM+kI,MAAQL,KAAMC,CAAAA,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,EACjD,GAAI+kI,KAAAA,CAAO,CACTA,KAAMG,CAAAA,mBAAmB,CAAC,CACxB,IAAI,CAACN,YAAY,CAClB,EACH,CACF,CACF,CACAO,mBAAoB,CAClB,IAAI,CAAC7xG,KAAK,CAACv0B,IAAI,CAAC,IAAI,CAACqmI,iBAAiB,CAAC,EAAE,CAACt2G,IAAI,EAC9C,IAAI,IAAI9uB,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAColI,iBAAiB,CAACnlI,MAAM,CAAED,IAAI,CACpD,IAAI,CAACszB,KAAK,CAAChjB,GAAG,CAAC,IAAI,CAAC80H,iBAAiB,CAACplI,EAAE,CAAC8uB,IAAI,EAC/C,CACA,IAAI,CAAC81G,YAAY,CAAC91G,IAAI,CAAG,IAAI,CAACwE,KAC9B,CAAA,IAAI,CAACsxG,YAAY,CAACS,QAAQ,CAAG,EAC/B,CACA,IAAIC,KAAQ,EAAA,CACV,OAAOx9H,SACT,CA5CAC,YAAYw9H,aAAa,CAAEC,OAAO,CAAEC,YAAY,CAAC,CAC/C,IAAI,CAACnyG,KAAK,CAAG,IAAIrI,WACjB,CAAA,IAAI,CAAC25G,YAAY,CAAG,IACpB,CAAA,IAAI,CAACQ,iBAAiB,CAAGG,aACzB,CAAA,IAAI,CAACC,OAAO,CAAGA,OACf,CAAA,IAAI,CAACC,YAAY,CAAGA,aACtB,CAuCF,CAEA,MAAMC,UACJ39H,CAAAA,WAAAA,CAAYiiC,EAAE,CAAE1mC,IAAI,CAAEkiI,OAAO,CAAEG,WAAW,CAAEhB,MAAAA,CAAS,CACnDxP,aACD,CAAA,CAAC,CACA,IAAI,CAACyQ,GAAG,CAAG,KACX,CAAA,IAAI,CAACC,OAAO,CAAG,KACf,CAAA,IAAI,CAACC,IAAI,CAAG,CACVR,MAAO,EAAE,CACT3pF,QAAS,EAAE,CACXoqF,OAAQ,EAAE,CACV/5B,OAAQ,EACV,CACA,CAAA,IAAI,CAAChiE,EAAE,CAAGA,EACV,CAAA,IAAI,CAAC1mC,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACkiI,OAAO,CAAGA,OACf,CAAA,IAAI,CAACG,WAAW,CAAGA,WACnB,CAAA,IAAI,CAAChB,MAAM,CAAGA,OAChB,CAaF,CAXI,UAAKqB,CAAAA,KAAK,CAAG,OAGb,CAtBEN,WAsBGO,OAAO,CAAG,SAGf,CAzBEP,UAAAA,CAyBGQ,MAAM,CAAG,QAGd,CA5BER,UA4BGS,CAAAA,MAAM,CAAG,QAIlB,CAAA,MAAMC,WAAa,IAAI7jH,IACvB,OAAM8jH,YAUJ,CAAA,IAAIC,SAASA,QAAQ,CAAE,CACrB,IAAI,CAACC,SAAS,CAAGD,SACnB,CACA,IAAIA,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SACd,CACAnmF,IAAKnW,CAAAA,MAAM,CAAEu8F,QAAQ,CAAE,CACrB,MAAMC,SAAAA,CAAYD,SAAW,CAC7B,CAAA,IAAI7gH,MAAQpmB,IAAK0V,CAAAA,IAAI,CAAC1V,IAAKud,CAAAA,IAAI,CAAC2pH,SAChC9gH,CAAAA,CAAAA,CAAAA,KAAAA,CAAQtS,KAAK0B,OAAO,CAAC4Q,MAAO,CAC5B,CAAA,CAAA,MAAMC,OAASrmB,IAAK0V,CAAAA,IAAI,CAACwxH,SAAY9gH,CAAAA,KAAAA,CACrC,CAAA,IAAI,CAAC+gH,WAAW,CAAG,IAAI/6F,QAAQ1B,MAAQ,CAAA,CACrCtkB,MAAOA,KACPC,CAAAA,MAAAA,CAAQA,OACR9f,MAAQmzB,CAAAA,mBAAAA,CACRuS,QAAS,KACTkC,CAAAA,SAAAA,CAAWzW,eACX4W,SAAW5W,CAAAA,cAAAA,CACX3zB,IAAM,CAAA,MACR,CACA,CAAA,CAAA,IAAI,CAACqjI,aAAa,CAAG,IAAI,CAACD,WAAW,CAACt2F,IAAI,CAAC,CACzCG,IAAAA,CAAMhQ,gBACR,CACA,CAAA,CAAA,IAAI,CAACmmG,WAAW,CAACt1F,MAAM,GACzB,CACAjI,SAAU,CACR,GAAI,IAAI,CAACu9F,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAACv9F,OAAO,EACxB,CAAA,IAAI,CAACu9F,WAAW,CAAG,KACrB,CACF,CACAr8F,OAAQi8F,CAAAA,QAAQ,CAAEM,MAAM,CAAE,CACxB,IAAI,CAACN,QAAQ,CAAGA,QAAAA,CAChB,MAAMO,IAAO,CAAA,IAAI,CAACA,IAAI,CACtB,MAAMC,KAAQ,CAAA,EAAE,CAChB,IAAI,IAAIvgD,EAAI,CAAGA,CAAAA,CAAAA,CAAIsgD,KAAKE,SAAS,CAAC9mI,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC5C,MAAMygD,QAAAA,CAAWH,KAAKE,SAAS,CAACxgD,EAAE,CAClC,IAAI0gD,KAAOX,QAASY,CAAAA,UAAU,CAACF,QAC/B,CAAA,CAAA,GAAI,CAACC,IAAM,CAAA,CACTA,KAAOL,OACT,CACAE,MAAMhmI,IAAI,CAACmmI,MACb,CACA,IAAI,CAACH,KAAK,CAAGA,MACf,CACAK,QAAAA,CAASN,IAAI,CAAE,CACb,IAAI,CAACA,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACC,KAAK,CAAG,EAAE,CACf,MAAMN,QAAWK,CAAAA,IAAAA,CAAKO,eAAe,CAACnnI,MAAM,CAC5C,IAAI,CAACmgD,IAAI,CAACymF,IAAAA,CAAK58F,MAAM,CAAEu8F,QAAAA,CACvB,CAAA,IAAI,CAACa,QAAQ,CAAG,EAAE,CAClB,IAAI,IAAIrnI,EAAI,CAAGA,CAAAA,CAAAA,CAAIwmI,SAAUxmI,CAAI,EAAA,CAAA,CAC/B,IAAI,CAACqnI,QAAQ,CAACrnI,CAAE,CAAA,CAAG,IAAIuiB,KACzB,CACF,CACA+kH,WAAYr9F,CAAAA,MAAM,CAAE,CAClB,IAAI,CAACy8F,WAAW,CAACv6F,MAAM,GACzB,CACAo7F,gBAAgBC,QAAQ,CAAEC,eAAe,CAAE,CACzC,GAAI,IAAI,CAACC,gBAAgB,GAAKD,eAAAA,CAAiB,CAC7C,IAAI,CAACC,gBAAgB,CAAGD,eACxBrB,CAAAA,UAAAA,CAAWrnI,IAAI,CAACyoI,QAAAA,CAASG,iBAAiB,EAAI5hH,CAAAA,CAAAA,MAAM,GACpD,IAAI,IAAI/lB,EAAI,IAAI,CAAC8mI,KAAK,CAAC7mI,MAAM,CAAG,CAAGD,CAAAA,CAAAA,EAAK,EAAGA,CAAI,EAAA,CAAA,CAC7C,IAAI,CAACqnI,QAAQ,CAACrnI,CAAE,CAAA,CAACkkB,UAAU,CAACkiH,UAAAA,CAAY,IAAI,CAACU,KAAK,CAAC9mI,CAAE,CAAA,CAAC2nI,iBAAiB,EACvE,CAAA,CAAA,IAAI,CAACN,QAAQ,CAACrnI,EAAE,CAACkkB,UAAU,CAAC,IAAI,CAACmjH,QAAQ,CAACrnI,CAAAA,CAAE,CAAE,IAAI,CAAC6mI,IAAI,CAACO,eAAe,CAACpnI,CAAE,CAAA,EAC5E,CACF,CACF,CACA4nI,eAAeJ,QAAQ,CAAEC,eAAe,CAAE,CACxC,GAAI,IAAI,CAACI,iBAAiB,CAAE,CAC1B,IAAI,CAACN,eAAe,CAACC,QAAUC,CAAAA,eAAAA,EACjC,CACF,CACAK,mBAAAA,CAAoBN,QAAQ,CAAEC,eAAe,CAAE,CAC7C,IAAI,CAACF,eAAe,CAACC,SAAUC,eAC/B,CAAA,CAAA,MAAMM,GAAK,IAAI,CAACpB,aAAa,CAC7B,MAAM3mF,MAAQ,IAAI,CAAC8mF,KAAK,CAAC7mI,MAAM,CAC/B,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAMgoI,EAAK,CAAA,IAAI,CAACX,QAAQ,CAACrnI,EAAE,CAACga,IAAI,CAChC,MAAM82D,IAAAA,CAAO9wE,EAAI,EACjB+nI,CAAAA,EAAE,CAACj3D,IAAAA,CAAK,CAAGk3D,EAAE,CAAC,EAAE,CAChBD,EAAE,CAACj3D,IAAAA,CAAO,EAAE,CAAGk3D,EAAE,CAAC,CAAE,CACpBD,CAAAA,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,IAAO,CAAA,CAAA,CAAE,CAAGk3D,EAAE,CAAC,GAAG,CACrBD,EAAE,CAACj3D,IAAAA,CAAO,EAAE,CAAGk3D,EAAE,CAAC,CAAE,CACpBD,CAAAA,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,IAAO,CAAA,CAAA,CAAE,CAAGk3D,EAAE,CAAC,GAAG,CACrBD,EAAE,CAACj3D,IAAAA,CAAO,EAAE,CAAGk3D,EAAE,CAAC,CAAE,CACpBD,CAAAA,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,IAAO,CAAA,EAAA,CAAG,CAAGk3D,EAAE,CAAC,GAAG,CACtBD,EAAE,CAACj3D,IAAAA,CAAO,GAAG,CAAGk3D,EAAE,CAAC,EAAG,EACxB,CACA,IAAI,CAACV,WAAW,CAAC,IAAI,CAACT,IAAI,CAAC58F,MAAM,EACnC,CAvGAliC,YAAY8+H,IAAI,CAAC,CACf,IAAI,CAAC9qF,MAAM,CAAG,IACd,CAAA,IAAI,CAACwqF,SAAS,CAAG,IACjB,CAAA,IAAI,CAACmB,gBAAgB,CAAG,CAAC,CACzB,CAAA,IAAI,CAACG,iBAAiB,CAAG,IAAA,CACzB,GAAIhB,IAAM,CAAA,CACR,IAAI,CAACM,QAAQ,CAACN,IAChB,EAAA,CACF,CAgGF,CAEA,MAAMoB,0BAA0B5B,YAS9BuB,CAAAA,cAAAA,CAAeJ,QAAQ,CAAEC,eAAe,CAAE,EAC1CK,oBAAoBN,QAAQ,CAAEC,eAAe,CAAE,CAC7C,MAAMM,EAAK,CAAA,IAAI,CAACpB,aAAa,CAC7B,MAAM3mF,KAAQ,CAAA,IAAI,CAAC8mF,KAAK,CAAC7mI,MAAM,CAC/B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAMgoI,EAAAA,CAAK,IAAI,CAAClB,KAAK,CAAC9mI,CAAE,CAAA,CAAC2nI,iBAAiB,EAAG3tH,CAAAA,IAAI,CACjD,MAAM82D,IAAAA,CAAO9wE,EAAI,EACjB+nI,CAAAA,EAAE,CAACj3D,IAAAA,CAAK,CAAGk3D,EAAE,CAAC,EAAE,CAChBD,EAAE,CAACj3D,IAAAA,CAAO,EAAE,CAAGk3D,EAAE,CAAC,CAAE,CACpBD,CAAAA,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,EAAA,CAAG,CACrBD,EAAE,CAACj3D,IAAO,CAAA,CAAA,CAAE,CAAGk3D,EAAE,CAAC,EAAE,CACpBD,EAAE,CAACj3D,IAAAA,CAAO,EAAE,CAAGk3D,EAAE,CAAC,CAAE,CACpBD,CAAAA,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,IAAO,CAAA,CAAA,CAAE,CAAGk3D,EAAE,CAAC,GAAG,CACrBD,EAAE,CAACj3D,IAAAA,CAAO,EAAE,CAAGk3D,EAAE,CAAC,CAAE,CACpBD,CAAAA,EAAE,CAACj3D,KAAO,CAAE,CAAA,CAAGk3D,EAAE,CAAC,CAAA,CAAE,CACpBD,EAAE,CAACj3D,IAAO,CAAA,EAAA,CAAG,CAAGk3D,EAAE,CAAC,GAAG,CACtBD,EAAE,CAACj3D,IAAAA,CAAO,GAAG,CAAGk3D,EAAE,CAAC,EAAG,EACxB,CACA,IAAI,CAACV,WAAW,CAAC,IAAI,CAACr9F,MAAM,EAC9B,CA7BAliC,WAAYkiC,CAAAA,MAAM,CAAEi+F,KAAK,CAAEV,QAAQ,CAAC,CAClC,KAAK,EACL,CAAA,MAAMhB,SAAW0B,KAAMjoI,CAAAA,MAAM,CAC7B,IAAI,CAACmgD,IAAI,CAACnW,MAAAA,CAAQu8F,SAClB,CAAA,IAAI,CAACv8F,MAAM,CAAGA,MACd,CAAA,IAAI,CAACu9F,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACV,KAAK,CAAGoB,MACf,CAuBF,CAEA,IAAIC,IAAO,CAAA,CACX,OAAMC,YAIJC,CAAAA,YAAAA,EAAe,CACb,IAAI,CAACC,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,aAAa,CAAGvyG,aACrB,CAAA,IAAI,CAACwyG,YAAY,CAAGxyG,aACpB,CAAA,IAAI,CAACyyG,WAAW,CAAG,CACnB,CAAA,IAAI,CAACC,UAAU,CAAG,CAClB,CAAA,IAAI,CAACztF,WAAW,CAAG,CACnB,CAAA,IAAI,CAAC0tF,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACC,sBAAsB,CAAG,EAC9B,CAAA,IAAI,CAACv+B,OAAO,CAAG,KACjB,CACAw+B,kBAAmB/oF,CAAAA,KAAK,CAAEnG,QAAQ,CAAE,CAClC,GAAI,CAAC,IAAI,CAACoB,WAAW,CAAE,CACrB,IAAI,CAACA,WAAW,CAAG+E,MACrB,CACF,CApBAj4C,aAAa,CACX,IAAI,CAACsgI,YAAY,GACnB,CA+BF,CAlCMD,aAuBGY,2BAA2B,CAAG,CAGnC,CA1BEZ,YAAAA,CA0BGa,yBAAyB,CAAG,CAGjC,CA7BEb,YA6BGc,CAAAA,qBAAqB,CAAG,CAG7B,CAhCEd,aAgCGe,yBAAyB,CAAG,CAGrC,CAAMC,MAAAA,oBAAAA,CACJrhI,YAAYiS,IAAI,CAAEqvH,cAAc,CAAEhvF,QAAQ,CAAEivF,iBAAiB,CAAE9uF,KAAK,CAAC,CACnE,IAAI,CAACxgC,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACqvH,cAAc,CAAGA,cACtB,CAAA,IAAI,CAAChvF,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACivF,iBAAiB,CAAGA,iBACzB,CAAA,IAAI,CAAC9uF,KAAK,CAAGA,MACf,CACF,CACA,MAAM+uF,IAAAA,SAAah6E,iBAiBjB,OAAOi6E,YAAAA,CAAa5/F,cAAc,CAAE6/F,QAAQ,CAAEh4H,OAAU,CAAA,EAAE,CAAE,CAC1D,MAAMi4H,IAAO,CAAA,IAAIH,KAAK3/F,cAAgBn4B,CAAAA,OAAAA,CAAAA,CACtC,KAAM,CAAEwrC,SAAS,CAAE0sF,OAAO,CAAEC,QAAQ,CAAEC,MAAM,CAAEC,GAAG,CAAEC,IAAI,CAAEC,YAAY,CAAEC,YAAY,CAAE1/B,OAAO,CAAE,CAAGk/B,SACjG,GAAIxsF,SAAAA,CAAW,CACbysF,IAAKQ,CAAAA,YAAY,CAACjtF,SACpB,EAAA,CACA,GAAI0sF,OAAS,CAAA,CACXD,KAAKS,UAAU,CAACR,SAClB,CACA,GAAIC,SAAU,CACZF,IAAAA,CAAKU,eAAe,CAACpsG,gBAAAA,CAAkB4rG,SAAU,CACnD,EAAA,CACA,GAAIC,MAAQ,CAAA,CACVH,KAAKW,WAAW,CAACR,QACnB,CACA,GAAIC,GAAK,CAAA,CACPJ,IAAKY,CAAAA,MAAM,CAAC,CAAGR,CAAAA,GAAAA,EACjB,CACA,GAAIC,IAAAA,CAAM,CACRL,IAAKY,CAAAA,MAAM,CAAC,CAAGP,CAAAA,IAAAA,EACjB,CACA,GAAIC,YAAAA,CAAc,CAChBN,IAAKU,CAAAA,eAAe,CAAClsG,qBAAuB8rG,CAAAA,YAAAA,CAAc,EAAGA,YAAa/pI,CAAAA,MAAM,CAAG,CAAGmiC,CAAAA,UAAAA,EACxF,CACA,GAAI6nG,YAAAA,CAAc,CAChBP,IAAKU,CAAAA,eAAe,CAACnsG,oBAAsBgsG,CAAAA,YAAAA,CAAc,GAC3D,CACA,GAAI1/B,QAAS,CACXm/B,IAAAA,CAAKa,UAAU,CAAChgC,OAAAA,EAClB,CACAm/B,IAAKt2F,CAAAA,MAAM,GACX,OAAOs2F,IACT,CACA,IAAIc,KAAAA,CAAMA,KAAK,CAAE,CACf,GAAIA,KAAU,GAAA,IAAI,CAACC,MAAM,CAAE,CACzB,GAAI,IAAI,CAACA,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAC/6E,WAAW,GACzB,CACA,IAAI,CAAC+6E,MAAM,CAAGD,MACd,GAAIA,KAAAA,CAAO,CACTA,KAAMh7E,CAAAA,WAAW,GACnB,CACF,CACF,CACA,IAAIg7E,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAI37G,IAAAA,CAAKA,IAAI,CAAE,CACb,IAAI,CAACwE,KAAK,CAAGxE,IACb,CAAA,IAAI,CAACu2G,QAAQ,GACf,CACA,IAAIv2G,MAAO,CACT,OAAO,IAAI,CAACwE,KAAK,CAEnB6V,OAAAA,EAAU,CACR,MAAMqhG,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,GAAIA,KAAAA,CAAO,CACT,IAAI,CAACA,KAAK,CAAG,IAAA,CACb,GAAIA,KAAM76E,CAAAA,QAAQ,CAAG,CAAG,CAAA,CACtB66E,MAAMrhG,OAAO,GACf,CACF,CACA,GAAI,IAAI,CAAC0W,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAC1W,OAAO,EACzB,CAAA,IAAI,CAAC0W,YAAY,CAAG,KACtB,CACA,IAAI,IAAI0mC,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAChmC,WAAW,CAACtgD,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC9C,IAAI,CAACmkD,mBAAmB,CAACnkD,CAAAA,EAC3B,CACA,IAAI,CAAChmC,WAAW,CAACtgD,MAAM,CAAG,CAC1B,CAAA,IAAI,CAAC0qI,aAAa,CAAG,KACvB,CACAD,mBAAAA,CAAoB7kI,KAAK,CAAE,CACzB,GAAI,IAAI,CAAC06C,WAAW,CAAC16C,KAAAA,CAAM,CAAE,CAC3B,IAAI,CAAC06C,WAAW,CAAC16C,MAAM,CAACsjC,OAAO,EAC/B,CAAA,IAAI,CAACoX,WAAW,CAAC16C,MAAM,CAAG,KAC5B,CACF,CACA+kI,cAAAA,CAAeC,YAAY,CAAE,CAC3B,IAAI,CAACC,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACC,QAAQ,CAAG,EAAE,CAClB,IAAI12H,CAAAA,CAAG0H,EAAGG,CACV,CAAA,IAAImR,KAAMC,IACV,CAAA,MAAM09G,QAAU,EAAE,CAClB,MAAMC,OAAU,CAAA,EAAE,CAClB,MAAMF,QAAAA,CAAW,IAAI,CAACA,QAAQ,CAC9B,MAAMvE,QAAAA,CAAW,IAAI,CAACK,IAAI,CAACE,SAAS,CAAC9mI,MAAM,CAC3C,IAAIirI,UAAWC,SAAWC,CAAAA,SAAAA,CAC1B,IAAI,IAAIprI,CAAI,CAAA,CAAA,CAAGA,EAAIwmI,QAAUxmI,CAAAA,CAAAA,EAAAA,CAAI,CAC/BgrI,OAAO,CAAChrI,EAAE,CAAG,IAAIic,KAAK6N,MAAOgE,CAAAA,SAAS,CAAEhE,MAAOgE,CAAAA,SAAS,CAAEhE,MAAOgE,CAAAA,SAAS,CAC1Em9G,CAAAA,OAAO,CAACjrI,CAAE,CAAA,CAAG,IAAIic,IAAK,CAAA,CAAC6N,OAAOgE,SAAS,CAAE,CAAChE,MAAOgE,CAAAA,SAAS,CAAE,CAAChE,MAAAA,CAAOgE,SAAS,EAC/E,CACA,MAAMu9G,QAAW,CAAA,IAAI98B,eAAe,IAAI,CAAC1uD,YAAY,CACrD,CAAA,MAAMyrF,WAAaD,QAAS1vF,CAAAA,OAAO,CAAC7d,iBAAkB,CAAA,CACtD,MAAMytG,cAAiBF,CAAAA,QAAAA,CAAS1vF,OAAO,CAAC1d,oBAAAA,CAAqB,CAC7D,MAAMutG,cAAAA,CAAiBH,SAAS1vF,OAAO,CAACzd,sBAAsB,CAC9D,MAAMrO,SAAW,IAAI,CAACgwB,YAAY,CAAClH,WAAW,CAC9C,IAAI,IAAI4tC,EAAI,CAAGA,CAAAA,CAAAA,CAAI12D,SAAU02D,CAAI,EAAA,CAAA,CAC/B,IAAI,IAAI+6C,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,IAAI,CACxB,MAAMmK,UAAaF,CAAAA,cAAAA,CAAel8F,KAAK,CAACk8F,eAAe1lI,KAAK,CAAGy7H,EAAE,CACjE,GAAImK,WAAa,CAAG,CAAA,CAClB,MAAMC,SAAYF,CAAAA,cAAAA,CAAen8F,KAAK,CAACm8F,cAAAA,CAAe3lI,KAAK,CAAGy7H,CAAAA,CAAE,CAChEyJ,QAAQ,CAACW,SAAU,CAAA,CAAG,KACtBr3H,CAAIi3H,CAAAA,UAAAA,CAAWj8F,KAAK,CAACi8F,UAAAA,CAAWzlI,KAAK,CAAC,CACtCkW,EAAIuvH,UAAWj8F,CAAAA,KAAK,CAACi8F,UAAWzlI,CAAAA,KAAK,CAAG,CAAE,CAAA,CAC1CqW,EAAIovH,UAAWj8F,CAAAA,KAAK,CAACi8F,UAAWzlI,CAAAA,KAAK,CAAG,CAAE,CAAA,CAC1CwnB,KAAO49G,OAAO,CAACS,UAAU,CACzBp+G,IAAAA,CAAO09G,OAAO,CAACU,SAAAA,CAAU,CACzB,GAAIp+G,IAAAA,CAAKjZ,CAAC,CAAGA,CAAAA,CAAGiZ,KAAKjZ,CAAC,CAAGA,EACzB,GAAIiZ,IAAAA,CAAKvR,CAAC,CAAGA,CAAAA,CAAGuR,KAAKvR,CAAC,CAAGA,EACzB,GAAIuR,IAAAA,CAAKpR,CAAC,CAAGA,CAAAA,CAAGoR,KAAKpR,CAAC,CAAGA,EACzB,GAAImR,IAAAA,CAAKhZ,CAAC,CAAGA,CAAAA,CAAGgZ,KAAKhZ,CAAC,CAAGA,EACzB,GAAIgZ,IAAAA,CAAKtR,CAAC,CAAGA,CAAAA,CAAGsR,KAAKtR,CAAC,CAAGA,EACzB,GAAIsR,IAAAA,CAAKnR,CAAC,CAAGA,CAAAA,CAAGmR,KAAKnR,CAAC,CAAGA,EACzB,GAAI2uH,YAAAA,CAAc,CAChB,IAAIc,SAAAA,CAAYT,UAAY72H,CAC5B,CAAA,IAAIu3H,UAAYT,SAAYpvH,CAAAA,CAAAA,CAC5B,IAAI8vH,SAAYT,CAAAA,SAAAA,CAAYlvH,EAC5B,IAAI,IAAI2C,EAAI,CAAGA,CAAAA,CAAAA,CAAIgsH,aAAa5qI,MAAM,CAAE4e,IAAI,CAC1C,MAAMjgB,OAASisI,YAAY,CAAChsH,EAAE,CAC9B,MAAMy7F,GAAK17G,MAAOktI,CAAAA,cAAc,CAACvlD,CAAI,CAAA,CAAA,CAAE,CACvC,MAAMg0B,EAAAA,CAAK37G,OAAOktI,cAAc,CAACvlD,EAAI,CAAI,CAAA,CAAA,CAAE,CAC3C,MAAMwlD,EAAAA,CAAKntI,OAAOktI,cAAc,CAACvlD,EAAI,CAAI,CAAA,CAAA,CAAE,CAC3C,GAAI+zB,EAAAA,CAAK,EAAG,CACVqxB,SAAAA,EAAarxB,GACf,CAAO,KAAA,CACL4wB,WAAa5wB,GACf,CACA,GAAIC,EAAK,CAAA,CAAA,CAAG,CACVqxB,SAAarxB,EAAAA,GACf,CAAO,KAAA,CACL4wB,SAAa5wB,EAAAA,GACf,CACA,GAAIwxB,EAAAA,CAAK,EAAG,CACVF,SAAAA,EAAaE,GACf,CAAO,KAAA,CACLX,WAAaW,GACf,CACF,CACA,GAAIz+G,IAAAA,CAAKjZ,CAAC,CAAGs3H,SAAAA,CAAWr+G,KAAKjZ,CAAC,CAAGs3H,UACjC,GAAIr+G,IAAAA,CAAKvR,CAAC,CAAG6vH,SAAAA,CAAWt+G,KAAKvR,CAAC,CAAG6vH,UACjC,GAAIt+G,IAAAA,CAAKpR,CAAC,CAAG2vH,SAAAA,CAAWv+G,KAAKpR,CAAC,CAAG2vH,UACjC,GAAIx+G,IAAAA,CAAKhZ,CAAC,CAAG62H,SAAAA,CAAW79G,KAAKhZ,CAAC,CAAG62H,UACjC,GAAI79G,IAAAA,CAAKtR,CAAC,CAAGovH,SAAAA,CAAW99G,KAAKtR,CAAC,CAAGovH,UACjC,GAAI99G,IAAAA,CAAKnR,CAAC,CAAGkvH,SAAAA,CAAW/9G,KAAKnR,CAAC,CAAGkvH,UACnC,CACF,CACF,CACAC,QAAS/hC,CAAAA,IAAI,GACf,CACA,MAAM0iC,gBAAkB,IAAI,CAACnsF,YAAY,CAACtH,SAAS,GAAGmB,QAAQ,CAAColB,IAAI,CAAE38D,GAAIA,CAAEmB,CAAAA,IAAI,GAAKw6B,iBACpF,CAAA,CAAA,GAAIkuG,iBAAmBA,eAAgB5rI,CAAAA,SAAS,CAAE,CAChD,MAAMqK,KAAO,CAAC,KACZ,OAAOuhI,eAAAA,CAAgB3xF,QAAQ,EAC7B,KAAKlY,UACH,OAAQ9tB,GAAI9U,IAAKoU,CAAAA,GAAG,CAACU,CAAI,CAAA,GAAA,CAAO,CAAC,CACnC,CAAA,CAAA,KAAK+tB,WACH,OAAQ/tB,GAAIA,CAAI,CAAA,GAClB,MAAKguB,UACH,CAAA,OAAO,CAAK9iC,EAAAA,IAAAA,CAAKoU,GAAG,CAACU,CAAAA,CAAI,MAAS,CAAC,CAAA,CACrC,MAAKiuB,WACH,CAAA,OAAO,CAAKjuB,EAAAA,CAAAA,CAAI,KAClB,CACE,QAAA,OAAO,CAAKA,EAAAA,CAChB,CACF,CAAA,GAAA,CACA,IAAI,IAAIrU,CAAAA,CAAI,EAAGA,CAAIwmI,CAAAA,QAAAA,CAAUxmI,IAAI,CAC/B,GAAI+qI,QAAQ,CAAC/qI,CAAAA,CAAE,CAAE,CACf,MAAM0T,IAAMs3H,OAAO,CAAChrI,EAAE,CACtB,MAAM2T,IAAMs3H,OAAO,CAACjrI,EAAE,CACtB0T,GAAAA,CAAInL,GAAG,CAACkC,IAAAA,CAAKiJ,IAAIW,CAAC,CAAA,CAAG5J,KAAKiJ,GAAIqI,CAAAA,CAAC,CAAGtR,CAAAA,IAAAA,CAAKiJ,GAAIwI,CAAAA,CAAC,GAC5CvI,GAAIpL,CAAAA,GAAG,CAACkC,IAAKkJ,CAAAA,GAAAA,CAAIU,CAAC,CAAG5J,CAAAA,IAAAA,CAAKkJ,IAAIoI,CAAC,CAAA,CAAGtR,KAAKkJ,GAAIuI,CAAAA,CAAC,GAC9C,CACF,CACF,CACA,IAAI,IAAIlc,EAAI,CAAGA,CAAAA,CAAAA,CAAIwmI,SAAUxmI,CAAI,EAAA,CAAA,CAC/B,MAAM8uB,IAAO,CAAA,IAAI7D,YACjB6D,IAAKL,CAAAA,SAAS,CAACu8G,OAAO,CAAChrI,EAAE,CAAEirI,OAAO,CAACjrI,CAAE,CAAA,CAAA,CACrC,IAAI,CAAC8qI,QAAQ,CAAChqI,IAAI,CAACguB,MACrB,CACF,CACAm9G,mBAAoB,CAClB,GAAI,CAAC,IAAI,CAACtB,aAAa,CAAE,CACvB,IAAI,CAACA,aAAa,CAAG,IAAIvC,YAAAA,CACzB,GAAI,IAAI,CAACvoF,YAAY,CAAE,CACrB,IAAI,CAAC8qF,aAAa,CAAC1vF,WAAW,CAAG,IAAI,CAAC4E,YAAY,CAAClH,WACnD,CAAA,IAAI,CAACgyF,aAAa,CAAClC,WAAW,CAAG,IAAI,CAAC5oF,YAAY,CAAClH,YAAW,CAEhE,GAAI,IAAI,CAAC4H,WAAW,CAACtgD,MAAM,CAAG,GAAK,IAAI,CAACsgD,WAAW,CAAC,CAAA,CAAE,CAAE,CACtD,IAAI,CAACoqF,aAAa,CAAChC,UAAU,CAAG,IAAI,CAACpoF,WAAW,CAAC,EAAE,CAAC8pD,UAAU,CAC9D,IAAI,CAACsgC,aAAa,CAACjC,UAAU,CAAG,IAAI,CAACnoF,WAAW,CAAC,EAAE,CAAC8pD,WAAU,CAElE,CACF,CACAzhG,KAAMsjI,CAAAA,eAAe,CAAEC,cAAc,CAAE1D,YAAc,CAAC,CAAEC,WAAa,CAAC,CAAE,CACtE,IAAI,CAACuD,iBAAiB,EACtB,CAAA,IAAI,CAACtB,aAAa,CAACtC,YAAY,EAC/B,CAAA,IAAI,CAACsC,aAAa,CAACrC,QAAQ,CAAG,IAC9B,CAAA,IAAI,CAACqC,aAAa,CAAClC,WAAW,CAAGA,WACjC,CAAA,IAAI,CAACkC,aAAa,CAACjC,UAAU,CAAGA,UAChC,CAAA,IAAI,CAACiC,aAAa,CAACpC,aAAa,CAAG2D,eAAAA,CAAkBl2G,cAAgBC,cACrE,CAAA,IAAI,CAAC00G,aAAa,CAACnC,YAAY,CAAG2D,eAAiBn2G,aAAgBC,CAAAA,eACrE,CACAm0G,eAAgBvwF,CAAAA,QAAQ,CAAE7/B,IAAI,CAAEqvH,cAAc,CAAE1wF,WAAW,CAAE0B,QAAW5X,CAAAA,YAAY,CAAE6mG,iBAAoB,CAAA,KAAK,CAAE9uF,KAAQ,CAAA,KAAK,CAAE,CAC9H,IAAI,CAACyxF,iBAAiB,EAAA,CACtB,MAAMhxF,WAActC,CAAAA,WAAAA,EAAe3+B,KAAK/Z,MAAM,CAAGopI,eACjD,IAAI,CAACsB,aAAa,CAAC5B,kBAAkB,CAAC9tF,WAAapB,CAAAA,QAAAA,CACnD,CAAA,IAAI,CAAC8wF,aAAa,CAAC/B,oBAAoB,CAAG,IAC1C,CAAA,IAAI,CAAC+B,aAAa,CAAC7B,sBAAsB,CAACjvF,SAAS,CAAG,IAAIuvF,qBAAqBpvH,IAAMqvH,CAAAA,cAAAA,CAAgBhvF,SAAUivF,iBAAmB9uF,CAAAA,KAAAA,EACpI,CACA4xF,eAAgBvyF,CAAAA,QAAQ,CAAE7/B,IAAI,CAAE,CAC9B,IAAIgmC,KAAAA,CAAQ,EACZ,IAAIqsF,IAAAA,CAAO,KACX,CAAA,GAAI,IAAI,CAAC1B,aAAa,CAAE,CACtB,MAAM2B,MAAS,CAAA,IAAI,CAAC3B,aAAa,CAAC7B,sBAAsB,CAACjvF,QAAAA,CAAS,CAClE,GAAIyyF,MAAAA,CAAQ,CACVD,IAAO,CAAA,IAAA,CACPrsF,MAAQ,IAAI,CAAC2qF,aAAa,CAAC1vF,WAAW,CACtC,GAAIvK,WAAAA,CAAYozB,MAAM,CAAC9pD,IAAAA,CAAAA,CAAO,CAC5BA,IAAKzR,CAAAA,GAAG,CAAC+jI,MAAOtyH,CAAAA,IAAI,EACtB,CAAO,KAAA,CACLA,KAAK/Z,MAAM,CAAG,EACd+Z,IAAKlZ,CAAAA,IAAI,CAACwrI,MAAOtyH,CAAAA,IAAI,EACvB,CACF,CACF,CACA,GAAI,CAACqyH,KAAM,CACT,GAAI,IAAI,CAACxsF,YAAY,CAAE,CACrB,MAAMwrF,SAAW,IAAI98B,cAAAA,CAAe,IAAI,CAAC1uD,YAAY,EACrDG,KAAQqrF,CAAAA,QAAAA,CAAS5gC,QAAQ,CAAC5wD,QAAAA,CAAU7/B,MACtC,CACF,CACA,OAAOgmC,KACT,CACAkqF,aAAajtF,SAAS,CAAEosF,eAAiBjB,YAAaY,CAAAA,2BAA2B,CAAErwF,WAAW,CAAE,CAC9F,IAAI,CAACyxF,eAAe,CAACtsG,iBAAmBmf,CAAAA,SAAAA,CAAWosF,eAAgB1wF,WAAalW,CAAAA,YAAAA,CAAc,OAChG,CACA0nG,UAAAA,CAAWR,OAAO,CAAEN,cAAAA,CAAiBjB,aAAaa,yBAAyB,CAAEtwF,WAAW,CAAE,CACxF,IAAI,CAACyxF,eAAe,CAACrsG,eAAiB4rG,CAAAA,OAAAA,CAASN,eAAgB1wF,WAAalW,CAAAA,YAAAA,CAAc,OAC5F,CACA6nG,MAAAA,CAAO13H,OAAO,CAAEk3H,GAAG,CAAET,cAAiBjB,CAAAA,YAAAA,CAAac,qBAAqB,CAAEvwF,WAAW,CAAE,CACrF,IAAI,CAACyxF,eAAe,CAAChsG,kBAAoBxrB,OAASk3H,CAAAA,GAAAA,CAAKT,eAAgB1wF,WAAalW,CAAAA,YAAAA,CAAc,OACpG,CACA8pG,SAAAA,CAAU1C,MAAM,CAAER,cAAAA,CAAiBjB,aAAae,yBAAyB,CAAExwF,WAAW,CAAE,CACtF,IAAI,CAACyxF,eAAe,CAACjsG,cAAgB0rG,CAAAA,MAAAA,CAAQR,eAAgB1wF,WAAalW,CAAAA,YAAAA,CAAc,OAC1F,CACA4nG,WAAAA,CAAYR,MAAM,CAAElxF,WAAW,CAAE,CAC/B,IAAI,CAACyxF,eAAe,CAACjsG,eAAgB0rG,MAAQzB,CAAAA,YAAAA,CAAae,yBAAyB,CAAExwF,WAAAA,CAAavW,WAAY,IAChH,EAAA,CACAmoG,WAAWhgC,OAAO,CAAEF,UAAU,CAAE,CAC9B,IAAI,CAAC4hC,iBAAiB,EACtB,CAAA,IAAI,CAACtB,aAAa,CAAC9B,kBAAkB,CAAG,IACxC,CAAA,IAAI,CAAC8B,aAAa,CAACpgC,OAAO,CAAGA,OAC7B,CAAA,IAAI,CAACogC,aAAa,CAAChC,UAAU,CAAGt+B,YAAcE,OAAQtqG,CAAAA,OAAM,CAE9DusI,YAAAA,CAAavvF,SAAS,CAAE,CACtB,OAAO,IAAI,CAACmvF,eAAe,CAACtuG,iBAAAA,CAAmBmf,UACjD,CACAwvF,UAAAA,CAAW9C,OAAO,CAAE,CAClB,OAAO,IAAI,CAACyC,eAAe,CAACruG,eAAAA,CAAiB4rG,QAC/C,CACA+C,MAAAA,CAAO95H,OAAO,CAAEk3H,GAAG,CAAE,CACnB,OAAO,IAAI,CAACsC,eAAe,CAAChuG,iBAAoBxrB,CAAAA,OAAAA,CAASk3H,IAC3D,CACA6C,SAAAA,CAAU9C,MAAM,CAAE,CAChB,OAAO,IAAI,CAACuC,eAAe,CAACjuG,cAAAA,CAAgB0rG,OAC9C,CACA+C,UAAAA,CAAWriC,OAAO,CAAE,CAClB,IAAIvqD,KAAQ,CAAA,CAAA,CACZ,GAAI,IAAI,CAAC2qF,aAAa,EAAI,IAAI,CAACA,aAAa,CAACpgC,OAAO,CAAE,CACpD,MAAMsiC,cAAgB,IAAI,CAAClC,aAAa,CAACpgC,OAAO,CAChDvqD,KAAQ,CAAA,IAAI,CAAC2qF,aAAa,CAAChC,UAAU,CACrC,GAAIj4F,YAAYozB,MAAM,CAACymC,SAAU,CAC/BA,OAAAA,CAAQhiG,GAAG,CAACskI,aAAAA,EACd,MAAO,CACLtiC,OAAAA,CAAQtqG,MAAM,CAAG,CAAA,CACjB,IAAI,IAAID,CAAAA,CAAI,EAAG8sI,EAAKD,CAAAA,aAAAA,CAAc5sI,MAAM,CAAED,CAAAA,CAAI8sI,GAAI9sI,CAAI,EAAA,CAAA,CACpDuqG,QAAQzpG,IAAI,CAAC+rI,aAAa,CAAC7sI,CAAAA,CAAE,EAC/B,CACF,CACF,MAAO,CACL,GAAI,IAAI,CAACugD,WAAW,CAACtgD,MAAM,CAAG,GAAK,IAAI,CAACsgD,WAAW,CAAC,CAAA,CAAE,CAAE,CACtD,MAAMA,YAAc,IAAI,CAACA,WAAW,CAAC,CAAA,CAAE,CACvCP,KAAQO,CAAAA,WAAAA,CAAYkqD,QAAQ,CAACF,OAAAA,EAC/B,CACF,CACA,OAAOvqD,KACT,CACA5M,MAAAA,CAAOuZ,cAAgBhvB,mBAAmB,CAAEwnG,kBAAoB,IAAI,CAAE,CACpE,GAAI,IAAI,CAACwF,aAAa,CAAE,CACtB,GAAIxF,iBAAAA,CAAmB,CACrB,MAAMmH,MAAAA,CAAS,IAAI,CAAC3B,aAAa,CAAC7B,sBAAsB,CAAChrG,kBAAkB,CAC3E,GAAIwuG,OAAQ,CACV,GAAIA,OAAOjD,cAAc,GAAK,EAAG,CAC/B,IAAI,CAAC/1G,KAAK,CAACjD,OAAO,CAACi8G,MAAAA,CAAOtyH,IAAI,CAAE,IAAI,CAAC2wH,aAAa,CAAC1vF,WAAW,CAC9D,CAAA,IAAI,CAACoqF,QAAQ,GACf,CACF,CACF,CACA,IAAI0H,SAAAA,CAAY,IAAI,CAACpC,aAAa,CAACrC,QAAQ,CAC3C,GAAI,IAAI,CAACqC,aAAa,CAAC1vF,WAAW,CAAG,IAAI,CAAC0vF,aAAa,CAAClC,WAAW,CAAE,CACnEsE,SAAAA,CAAY,IACZ,CAAA,IAAI,CAACpC,aAAa,CAAClC,WAAW,CAAG,IAAI,CAACkC,aAAa,CAAC1vF,YAAW,CAEjE,GAAI8xF,SAAAA,CAAW,CACb,GAAI,IAAI,CAACltF,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAC1W,OAAO,EACzB,CAAA,IAAI,CAAC0W,YAAY,CAAG,KACtB,CACF,CACA,IAAImtF,SAAAA,CAAY,IAAI,CAACrC,aAAa,CAACrC,QAAQ,CAC3C,GAAI,IAAI,CAACqC,aAAa,CAAChC,UAAU,CAAG,IAAI,CAACgC,aAAa,CAACjC,UAAU,CAAE,CACjEsE,SAAAA,CAAY,IACZ,CAAA,IAAI,CAACrC,aAAa,CAACjC,UAAU,CAAG,IAAI,CAACiC,aAAa,CAAChC,WAAU,CAE/D,GAAIqE,SAAW,CAAA,CACb,GAAI,IAAI,CAACzsF,WAAW,CAACtgD,MAAM,CAAG,CAAK,EAAA,IAAI,CAACsgD,WAAW,CAAC,EAAE,CAAE,CACtD,IAAI,CAACA,WAAW,CAAC,CAAE,CAAA,CAACpX,OAAO,EAC3B,CAAA,IAAI,CAACoX,WAAW,CAAC,CAAE,CAAA,CAAG,KACxB,CACF,CACA,GAAI,IAAI,CAACoqF,aAAa,CAAC/B,oBAAoB,CAAE,CAC3C,IAAI,CAACqE,mBAAmB,GAC1B,CACA,GAAI,IAAI,CAACtC,aAAa,CAAC9B,kBAAkB,CAAE,CACzC,IAAI,CAACqE,kBAAkB,GACzB,CACA,IAAI,CAAC5sF,SAAS,CAAC,EAAE,CAAC7oC,IAAI,CAAGk1C,aACzB,CAAA,GAAI,IAAI,CAACpM,WAAW,CAACtgD,MAAM,CAAG,GAAK,IAAI,CAACsgD,WAAW,CAAC,CAAA,CAAE,CAAE,CACtD,GAAI,IAAI,CAACoqF,aAAa,CAAC9B,kBAAkB,CAAE,CACzC,IAAI,CAACvoF,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAG,IAAI,CAAC2qF,aAAa,CAAChC,UAC7C,CAAA,IAAI,CAACroF,SAAS,CAAC,CAAA,CAAE,CAAC0wB,OAAO,CAAG,KAC9B,CACF,CAAA,KAAO,CACL,GAAI,IAAI,CAAC25D,aAAa,CAAC/B,oBAAoB,CAAE,CAC3C,IAAI,CAACtoF,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAG,IAAI,CAAC2qF,aAAa,CAAC1vF,WAAW,CACxD,IAAI,CAACqF,SAAS,CAAC,EAAE,CAAC0wB,OAAO,CAAG,MAC9B,CACF,CACA,IAAI,CAAC25D,aAAa,CAAC1vF,WAAW,CAAG,CACjC,CAAA,IAAI,CAAC0vF,aAAa,CAAChC,UAAU,CAAG,CAChC,CAAA,IAAI,CAACgC,aAAa,CAAC/B,oBAAoB,CAAG,KAC1C,CAAA,IAAI,CAAC+B,aAAa,CAAC9B,kBAAkB,CAAG,KACxC,CAAA,IAAI,CAAC8B,aAAa,CAACrC,QAAQ,CAAG,MAC9B,IAAI,CAAC6E,kBAAkB,GACzB,CACF,CACAC,kBAAmBnyF,CAAAA,WAAW,CAAE,CAC9B,MAAMoyF,WAAa,EAAE,CACrB,IAAI,MAAMxzF,QAAAA,IAAY,IAAI,CAAC8wF,aAAa,CAAC7B,sBAAsB,CAAC,CAC9D,MAAMwD,MAAAA,CAAS,IAAI,CAAC3B,aAAa,CAAC7B,sBAAsB,CAACjvF,SAAS,CAClEwzF,UAAAA,CAAWvsI,IAAI,CAAC,CACd+4C,QAAAA,CAAUA,SACVC,UAAYwyF,CAAAA,MAAAA,CAAOjD,cAAc,CACjC5xH,IAAAA,CAAM60H,OAAOjyF,QAAQ,CACrBj6C,UAAWksI,MAAOhD,CAAAA,iBAAiB,CACnC9uF,KAAO8xF,CAAAA,MAAAA,CAAO9xF,KAAK,CACrB,EACF,CACA,OAAO,IAAIf,aAAa,IAAI,CAACxP,MAAM,CAAEojG,UAAAA,CAAYpyF,YACnD,CACAgyF,mBAAAA,EAAsB,CACpB,GAAI,CAAC,IAAI,CAACptF,YAAY,CAAE,CACtB,MAAMytF,oBAAsB,IAAI,CAAC3C,aAAa,CAAClC,WAAW,CAC1D,MAAM3iI,MAAAA,CAAS,IAAI,CAACsnI,kBAAkB,CAACE,mBACvC,CAAA,CAAA,IAAI,CAACztF,YAAY,CAAG,IAAI1H,YAAAA,CAAa,IAAI,CAAClO,MAAM,CAAEnkC,MAAQwnI,CAAAA,mBAAAA,CAAqB,CAC7E70F,KAAO,CAAA,IAAI,CAACkyF,aAAa,CAACpC,aAAa,CACvCx5F,OAAAA,CAAS,IAAI,CAACw+F,cAAc,CAEhC,EAAA,CACA,MAAMlC,QAAW,CAAA,IAAI98B,eAAe,IAAI,CAAC1uD,YAAY,CACrD,CAAA,MAAMlH,YAAc,IAAI,CAACgyF,aAAa,CAAC1vF,WAAW,CAClD,IAAI,MAAMpB,QAAAA,IAAY,IAAI,CAAC8wF,aAAa,CAAC7B,sBAAsB,CAAC,CAC9D,MAAMwD,MAAAA,CAAS,IAAI,CAAC3B,aAAa,CAAC7B,sBAAsB,CAACjvF,SAAS,CAClEwxF,QAAAA,CAAS7gC,SAAS,CAAC3wD,QAAAA,CAAUyyF,OAAOtyH,IAAI,CAAE2+B,YAC1C,CAAO,OAAA,IAAI,CAACgyF,aAAa,CAAC7B,sBAAsB,CAACjvF,QAAAA,EAAS,CAE5DwxF,QAAAA,CAAS3lI,GAAG,GACd,CACAwnI,oBAAqB,CACnB,GAAI,IAAI,CAAC3sF,WAAW,CAACtgD,MAAM,EAAI,GAAK,CAAC,IAAI,CAACsgD,WAAW,CAAC,EAAE,CAAE,CACxD,MAAMkoF,WAAc,CAAA,IAAI,CAACkC,aAAa,CAAClC,WAAW,CAClD,MAAM+E,aAAe/E,WAAc,CAAA,KAAA,EAAUA,cAAgB,CAAIxwG,CAAAA,kBAAAA,CAAqBD,mBACtF,MAAMvmB,OAAAA,CAAU,IAAI,CAACg8H,aAAa,CAAG,CACnC1+F,OAAAA,CAAS,IACX,CAAIjnC,CAAAA,SACJ,CAAA,IAAI,CAACy4C,WAAW,CAAC,CAAA,CAAE,CAAG,IAAI4pD,WAAAA,CAAY,IAAI,CAAClgE,MAAM,CAAEujG,YAAc,CAAA,IAAI,CAAC7C,aAAa,CAACjC,UAAU,CAAE,IAAI,CAACiC,aAAa,CAACnC,YAAY,CAAE1gI,SAAAA,CAAW2J,SAC9I,CACA,MAAMi8H,WAAa,IAAI,CAAC/C,aAAa,CAACpgC,OAAO,CAC7C,GAAImjC,UAAAA,CAAY,CACd,MAAMntF,WAAAA,CAAc,IAAI,CAACA,WAAW,CAAC,CAAE,CAAA,CACvCA,YAAYiqD,SAAS,CAACkjC,WAAY,IAAI,CAAC/C,aAAa,CAAChC,UAAU,CAC/D,CAAA,IAAI,CAACgC,aAAa,CAACpgC,OAAO,CAAG,KAC/B,CACF,CACAojC,kBAAAA,CAAmBC,WAAW,CAAE,CAC9B,GAAIA,WAAgB7U,GAAAA,qBAAAA,CAAuB,CACzC,IAAI,CAAC8U,iBAAiB,GACxB,CAAA,KAAO,GAAID,WAAgB5U,GAAAA,kBAAAA,CAAoB,CAC7C,IAAI,CAAC14E,SAAS,CAAC04E,kBAAAA,CAAmB,CAAG,CACnCvhH,IAAAA,CAAM8lB,iBACNuzC,IAAM,CAAA,CAAA,CACNC,WAAY,CACZ/wB,CAAAA,KAAAA,CAAO,IAAI,CAACH,YAAY,CAAG,IAAI,CAACA,YAAY,CAAClH,WAAW,CAAG,EAC3Dq4B,OAAS,CAAA,KACX,EACF,CACF,CACAm8D,oBAAqB,CACnB,GAAI,IAAI,CAAC7sF,SAAS,CAAC04E,kBAAmB,CAAA,CAAE,CACtC,IAAI,CAAC2U,kBAAkB,CAAC3U,kBAAAA,EAC1B,CACA,GAAI,IAAI,CAAC14E,SAAS,CAACy4E,sBAAsB,CAAE,CACzC,IAAI,CAAC4U,kBAAkB,CAAC5U,qBAC1B,EAAA,CACF,CACA8U,iBAAoB,EAAA,CAClB,IAAI,CAACnD,mBAAmB,CAAC3R,qBACzB,CAAA,CAAA,MAAMpgF,YAAc,IAAI,CAACkH,YAAY,CAAClH,WAAW,CACjD,MAAMkvB,KAAAA,CAAQ,EAAE,CAChB,IAAI/hE,OACJ,GAAI,IAAI,CAACy6C,WAAW,CAACtgD,MAAM,CAAG,CAAA,EAAK,IAAI,CAACsgD,WAAW,CAAC,CAAE,CAAA,CAAE,CACtD,MAAMlO,OAAAA,CAAU,CACd,CACE,CAAA,CACA,EACD,CACD,CACE,EACA,CACD,CAAA,CACD,CACE,CACA,CAAA,CAAA,CACD,CACF,CACD,MAAMy+B,KAAO,IAAI,CAACxwB,SAAS,CAACw4E,iBAAAA,CAAkB,CAAChoD,IAAI,CACnD,MAAM9wB,KAAQ,CAAA,IAAI,CAACM,SAAS,CAACw4E,kBAAkB,CAAC94E,KAAK,CACrD,MAAM+wB,UAAAA,CAAa,IAAI,CAACzwB,SAAS,CAACw4E,iBAAkB,CAAA,CAAC/nD,UAAU,EAAI,CAAA,CACnE,MAAMxwB,WAAc,CAAA,IAAI,CAACA,WAAW,CAACu4E,kBAAkB,CACvD,MAAM4U,WAAa,IAAI5lG,sBAAsB,CAACyY,WAAYz6C,CAAAA,MAAM,CAAC,CAACy6C,WAAAA,CAAYxR,OAAO,CACrF,CAAA,MAAM++F,KAAO,IAAI/6H,GAAAA,CACjB,IAAI,IAAIwzE,CAAAA,CAAIzV,KAAMyV,CAAIzV,CAAAA,IAAAA,CAAO9wB,MAAOumC,CAAK,EAAA,CAAA,CAAE,CACzC,IAAI,IAAI+6C,EAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAGA,CAAI,EAAA,CAAA,CACxB,MAAMyM,EAAKL,CAAAA,UAAU,CAACnnD,CAAIl0C,CAAAA,OAAO,CAACivF,CAAE,CAAA,CAAC,EAAE,CAAC,CAAGvwD,WAC3C,MAAMi9D,EAAAA,CAAKN,UAAU,CAACnnD,CAAAA,CAAIl0C,OAAO,CAACivF,CAAAA,CAAE,CAAC,CAAE,CAAA,CAAC,CAAGvwD,UAAAA,CAC3C,MAAM53B,IAAAA,CAAO40F,GAAKC,EAAKA,CAAAA,EAAAA,CAAKr1F,YAAco1F,EAAKA,CAAAA,EAAAA,CAAKp1F,YAAcq1F,EAClE,CAAA,GAAI,CAACF,IAAKxlI,CAAAA,GAAG,CAAC6wC,IAAO,CAAA,CAAA,CACnB20F,KAAKx9H,GAAG,CAAC6oC,MACT0uB,KAAM/mE,CAAAA,IAAI,CAACitI,EAAIC,CAAAA,EAAAA,EACjB,CACF,CACF,CACAloI,OAASy6C,WAAYz6C,CAAAA,OAAM,CACtB,KAAA,CACL,IAAI,IAAI9F,CAAAA,CAAI,EAAGA,CAAI24C,CAAAA,WAAAA,CAAa34C,GAAK,CAAE,CAAA,CACrC6nE,MAAM/mE,IAAI,CAACd,EAAGA,CAAI,CAAA,CAAA,CAAGA,EAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,GAC5C,CACA8F,MAAAA,CAAS+hE,MAAM5nE,MAAM,CAAG,MAAQg4B,kBAAqBD,CAAAA,mBACvD,CACA,MAAMi2G,UAAAA,CAAa,IAAI9jC,WAAY,CAAA,IAAI,CAACtqD,YAAY,CAAC5V,MAAM,CAAEnkC,MAAAA,CAAQ+hE,MAAM5nE,MAAM,CAAA,CACjF,MAAMiuI,UAAa,CAAA,IAAIpmG,sBAAsB,CAACmmG,UAAAA,CAAWnoI,MAAM,CAAC,CAACmoI,WAAWl/F,OAAO,CAAA,CACnFm/F,WAAW3lI,GAAG,CAACs/D,OACfomE,UAAW78F,CAAAA,MAAM,EACjB,CAAA,IAAI,CAACkP,SAAS,CAACy4E,sBAAsB,CAAG,CACtCthH,KAAM+lB,eACNszC,CAAAA,IAAAA,CAAM,EACNC,UAAY,CAAA,CAAA,CACZ/wB,MAAO6nB,KAAM5nE,CAAAA,MAAM,CACnB+wE,OAAS,CAAA,IACX,CACA,CAAA,IAAI,CAACzwB,WAAW,CAACw4E,sBAAsB,CAAGkV,WAC5C,CAxeAlmI,WAAY6hC,CAAAA,cAAc,CAAEn4B,OAAO,CAAC,CAClC,KAAK,EAAA,CAAI,IAAI,CAAC8uC,WAAW,CAAG,CAC1B,IAAA,CACD,CAAE,IAAI,CAACV,YAAY,CAAG,IAAA,CAAM,IAAI,CAACS,SAAS,CAAG,CAC5C,CACE7oC,KAAM,CACNq5D,CAAAA,IAAAA,CAAM,EACNC,UAAY,CAAA,CAAA,CACZ/wB,MAAO,CACT,CAAA,CACD,CAAE,IAAI,CAAC6mF,IAAI,CAAG,IAAA,CAAM,IAAI,CAACiE,QAAQ,CAAG,IAAM,CAAA,IAAI,CAACzF,QAAQ,CAAG,EAAG,IAAI,CAAC/xG,KAAK,CAAG,IAAIrI,YAAe,IAAI,CAAC0/G,aAAa,CAAG,IAAA,CAAM,IAAI,CAACF,MAAM,CAAG,KAAM,IAAI,CAACgD,aAAa,CAAG,KAAA,CAAO,IAAI,CAACF,cAAc,CAAG,KAC/L,CAAA,IAAI,CAACvjG,EAAE,CAAGm+F,IACV,EAAA,CAAA,IAAI,CAACl+F,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC6jG,aAAa,CAAGh8H,OAAS08H,EAAAA,YAAAA,EAAgB,KAC9C,CAAA,IAAI,CAACZ,cAAc,CAAG97H,SAAS28H,aAAiB,EAAA,MAClD,CA0dF,CAEA,MAAMC,2BAA6B,IAAI7jG,WAAAA,CACvC,SAAS8jG,kBAAmBrkG,CAAAA,MAAM,EAChC,MAAM44F,QAAAA,CAAWwL,2BAA2BtsI,GAAG,CAACkoC,QAChD,OAAO44F,QACT,CACA,SAAS0L,kBAAAA,CAAmBtkG,MAAM,CAAE44F,QAAQ,EAC1CwL,0BAA2BtsI,CAAAA,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CACrC,OAAO44F,QACT,CAAA,EACF,CAEA,MAAM2L,eAAAA,CACJrlG,SAAU,CACR,IAAI,CAAC8I,KAAK,CAACtlC,OAAO,CAAC,CAACgjD,SAAUG,MAC5BA,GAAAA,CAAAA,MAAAA,CAAO3mB,OAAO,GAChB,CAAA,CAAA,CACA,IAAI,CAAC8I,KAAK,CAACrpC,KAAK,GAClB,CACA6lI,OAAO3+E,MAAM,CAAE,CACb,MAAMH,QAAAA,CAAW,CAAC,IAAI,CAAC1d,KAAK,CAAClwC,GAAG,CAAC+tD,MAAAA,CAAAA,EAAW,CAAA,EAAK,CAAA,CACjD,IAAI,CAAC7d,KAAK,CAAC1pC,GAAG,CAACunD,OAAQH,QACzB,EAAA,CACA++E,OAAO5+E,MAAM,CAAE,CACb,GAAIA,MAAAA,CAAQ,CACV,IAAIH,QAAAA,CAAW,IAAI,CAAC1d,KAAK,CAAClwC,GAAG,CAAC+tD,QAC9B,GAAIH,QAAAA,CAAU,CACZA,QACA,EAAA,CAAA,GAAIA,WAAa,CAAG,CAAA,CAClB,IAAI,CAAC1d,KAAK,CAACppC,MAAM,CAACinD,QAClBA,MAAO3mB,CAAAA,OAAO,GAChB,CAAO,KAAA,CACL,IAAI,CAAC8I,KAAK,CAAC1pC,GAAG,CAACunD,OAAQH,QACzB,EAAA,CACF,CACF,CACF,CACA5nD,aAAa,CACX,IAAI,CAACkqC,KAAK,CAAG,IAAI7pC,IACnB,CACF,CAEA,MAAMumI,aAAAA,CAIJ,OAAOF,MAAO38F,CAAAA,OAAO,CAAE,CACrB,IAAI,CAACG,KAAK,CAACw8F,MAAM,CAAC38F,OACpB,EAAA,CACA,OAAO48F,MAAO58F,CAAAA,OAAO,CAAE,CACrB,IAAI,CAACG,KAAK,CAACy8F,MAAM,CAAC58F,OAAAA,EACpB,CACA,OAAO3I,OAAAA,EAAU,CACf,IAAI,CAAC8I,KAAK,CAAC9I,OAAO,GACpB,CACF,CAXI,aAAK8I,CAAAA,KAAK,CAAG,IAAIu8F,eAAAA,CAarB,IAAII,IAAO,CAAA,CAAA,CACX,MAAMC,QAAW,CAAA,IAAI5jH,YACrB,MAAM6jH,aAAAA,CAAgB,IAAI7jH,WAC1B,CAAA,MAAM8jH,YAAc,IAAI59G,cAAAA,CACxB,MAAM69G,QAAW,CAAA,IAAIj8H,IACrB,MAAM65C,YAAAA,CAAe,IAAIzvB,WAAY,CAAA,CAAA,CACrC,OAAM8xG,cAMJ9lG,CAAAA,OAAAA,EAAU,CACR,GAAI,IAAI,CAAC+lG,oBAAoB,CAAE,CAC7B,IAAI,CAACrvF,YAAY,EAAE1W,OAAAA,GACrB,CACA,IAAI,CAAC0W,YAAY,CAAG,KACtB,CAVA93C,WAAYonI,CAAAA,UAAU,CAAC,CACrB,IAAI,CAACtvF,YAAY,CAAG,IACpB,CAAA,IAAI,CAACqvF,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAAClvF,KAAK,CAAGmvF,WACf,CAOF,CACA,MAAMC,cACJz+D,CAAAA,YAAAA,CAAa1mC,MAAM,CAAE,CACnB,GAAI,CAAC,IAAI,CAAC6c,SAAS,CAAE,CACnB,MAAMlJ,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMmL,eAAAA,CAAkBnL,OAAOsb,mBAC/B,CAAA,IAAI,CAACpS,SAAS,CAAG,IAAIxU,UAAUrI,MAAQ8e,CAAAA,eAAAA,EACzC,CACA,OAAO,IAAI,CAACjC,SACd,CACAuoF,gBAAiBplG,CAAAA,MAAM,CAAE,CACvB,GAAI,CAAC,IAAI,CAACwI,aAAa,CAAE,CACvB,MAAMmL,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMohB,QAAWphB,CAAAA,MAAAA,CAAOqb,uBAAuB,CAC/C,IAAI,CAACxmB,aAAa,CAAG,IAAI29B,aAAAA,CAAcnmC,OAAQ+0B,QAAU,CAAA,KAAA,EAC3D,CACA,OAAO,IAAI,CAACvsB,aACd,CACAtJ,OAAU,EAAA,CACR,IAAI,CAAC2d,SAAS,EAAE3d,OAChB,EAAA,CAAA,IAAI,CAAC2d,SAAS,CAAG,IACjB,CAAA,IAAI,CAACrU,aAAa,EAAEtJ,SACpB,CAAA,IAAI,CAACsJ,aAAa,CAAG,KACvB,CACA1qC,WAAAA,EAAa,CACX,IAAI,CAAC++C,SAAS,CAAG,IACjB,CAAA,IAAI,CAACrU,aAAa,CAAG,KACvB,CACF,CACA,MAAM68F,aAsDJ,IAAIC,UAAAA,CAAWC,MAAM,CAAE,CACrB,IAAI,CAACC,WAAW,CAAGlwI,IAAKmQ,CAAAA,KAAK,CAAC8/H,MAAU,CAAA,CAAA,GAAA,CACxC,IAAI,CAAC34F,SAAS,GAChB,CACA,IAAI04F,YAAa,CACf,OAAO,IAAI,CAACE,WAAW,CAEzB,IAAI7B,YAAYA,WAAW,CAAE,CAC3B,IAAI,CAAC8B,YAAY,CAAG9B,WAAAA,CACpB,IAAI,CAAClE,IAAI,CAACiE,kBAAkB,CAACC,aAC/B,CACA,IAAIA,aAAc,CAChB,OAAO,IAAI,CAAC8B,YAAY,CAE1B,IAAIhG,KAAKA,IAAI,CAAE,CACb,GAAIA,IAAAA,GAAS,IAAI,CAACiG,KAAK,CAAE,CACvB,MACF,CACA,GAAI,IAAI,CAACA,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACjgF,WAAW,GACxB,CACA,IAAI,CAACigF,KAAK,CAAGjG,KACb,GAAIA,IAAAA,CAAM,CACRA,IAAKl6E,CAAAA,WAAW,GAClB,CACF,CACA,IAAIk6E,IAAO,EAAA,CACT,OAAO,IAAI,CAACiG,KAAK,CAEnB,IAAI7gH,IAAKA,CAAAA,IAAI,CAAE,CACb,IAAI,CAACwE,KAAK,CAAGxE,KACf,CACA,IAAIA,MAAO,CACT,GAAI,CAAC,IAAI,CAAC8gH,WAAW,CAAE,CACrB,OAAO,IAAI,CAACt8G,KAAK,CAEnB,GAAI,IAAI,CAACu8G,eAAe,CAAE,CACxB,OAAO,IAAI,CAACA,eAAe,CAAC,IAAI,CAACv8G,KAAK,CACxC,CACA,IAAIw8G,SAAAA,CAAY,IAAI,CAACC,WAAW,CAChC,IAAIC,YAAAA,CAAe,CAAC,CAACF,SAAAA,CACrB,GAAI,CAACA,SAAW,CAAA,CACdA,UAAYjB,QACZ,CAAA,GAAI,IAAI,CAACoB,YAAY,CAAE,CACrB,GAAI,CAAC,IAAI,CAACvG,IAAI,CAACoB,QAAQ,CAAE,CACvB,MAAMD,aAAe,IAAI,CAACqF,cAAc,CAAG,IAAI,CAACA,cAAc,CAAC1F,KAAK,CAAC2F,QAAQ,CAAG,IAChF,CAAA,IAAI,CAACzG,IAAI,CAACkB,cAAc,CAACC,YAAAA,EAC3B,CACA,MAAME,QAAAA,CAAW,IAAI,CAACrB,IAAI,CAACqB,QAAQ,CACnC,IAAI5lI,KAAQ,CAAA,IAAA,CACZ,IAAI,IAAInF,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC0pI,IAAI,CAACoB,QAAQ,CAAC7qI,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,GAAI+qI,QAAQ,CAAC/qI,EAAE,CAAE,CACf8uI,cAAcjgH,sBAAsB,CAAC,IAAI,CAAC66G,IAAI,CAACoB,QAAQ,CAAC9qI,EAAE,CAAE,IAAI,CAACiwI,YAAY,CAAC5I,QAAQ,CAACrnI,CAAAA,CAAE,EACzF,GAAImF,KAAAA,CAAO,CACTA,KAAQ,CAAA,KAAA,CACR2qI,UAAU3kH,MAAM,CAACpsB,IAAI,CAAC+vI,aAAAA,CAAc3jH,MAAM,CAC1C2kH,CAAAA,SAAAA,CAAUtkH,WAAW,CAACzsB,IAAI,CAAC+vI,aAActjH,CAAAA,WAAW,EACtD,CAAO,KAAA,CACLskH,UAAUx/H,GAAG,CAACw+H,eAChB,CACF,CACF,CACAkB,YAAe,CAAA,KACjB,MAAO,GAAI,IAAI,CAACI,IAAI,CAAC/K,QAAQ,GAAK,IAAI,CAACA,QAAQ,EAAI,IAAI,CAACqE,IAAI,CAACrE,QAAQ,GAAK,IAAI,CAACgL,YAAY,CAAE,CAC3F,GAAI,IAAI,CAAC3G,IAAI,CAAE,CACboG,SAAAA,CAAU3kH,MAAM,CAACpsB,IAAI,CAAC,IAAI,CAAC2qI,IAAI,CAAC56G,IAAI,CAAC3D,MAAM,CAAA,CAC3C2kH,UAAUtkH,WAAW,CAACzsB,IAAI,CAAC,IAAI,CAAC2qI,IAAI,CAAC56G,IAAI,CAACtD,WAAW,EACvD,CAAO,KAAA,CACLskH,UAAU3kH,MAAM,CAAC5iB,GAAG,CAAC,CAAA,CAAG,EAAG,CAC3BunI,CAAAA,CAAAA,SAAAA,CAAUtkH,WAAW,CAACjjB,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,EAClC,CACA,GAAI,IAAI,CAACmhI,IAAI,EAAI,IAAI,CAACA,IAAI,CAACc,KAAK,CAAE,CAChC,MAAM8F,SAAAA,CAAY,IAAI,CAAC5G,IAAI,CAACc,KAAK,CAAC17G,IAAI,CACtCghH,SAAAA,CAAUh/G,OAAO,CAACw/G,SAAAA,CAAUljH,MAAM,EAAIkjH,CAAAA,SAAAA,CAAUpjH,MAAM,EACxD,EAAA,CACA8iH,aAAe,IACf,CAAA,IAAI,CAAC3K,QAAQ,CAAG,IAAI,CAAC+K,IAAI,CAAC/K,QAAQ,CAClC,IAAI,CAACgL,YAAY,CAAG,IAAI,CAAC3G,IAAI,CAACrE,SAChC,CACF,CACA,GAAI2K,aAAc,CAChB,IAAI,CAAC18G,KAAK,CAACzE,sBAAsB,CAACihH,SAAAA,CAAW,IAAI,CAACM,IAAI,CAACzI,iBAAiB,EAAA,EAC1E,CACA,OAAO,IAAI,CAACr0G,KACd,CACAi9G,YAAe,EAAA,CACb,IAAI,CAACC,YAAY,CAAC7jI,OAAO,CAAC,cAAC8jI,EAAAA,CACzBA,cAAetnG,CAAAA,OAAO,GACxB,CACA,CAAA,CAAA,IAAI,CAACqnG,YAAY,CAAC5nI,KAAK,GACzB,CACA8nI,kBAAkBC,UAAU,CAAEC,SAAS,CAAElM,KAAK,CAAE5B,kBAAkB,CAAElD,iBAAiB,CAAEC,mBAAmB,CAAEgR,YAAY,CAAE,CACxH,MAAMC,UAAAA,CAAa,IAAI,CAACC,WAAW,CACnCnkF,YAAY,CAAC,CAAE,CAAA,CAAG+jF,UAClB/jF,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGgkF,SAClBhkF,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGkkF,UAClBlkF,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAGk2E,mBAAmB3pF,IAAI,CACzC,MAAMA,IAAOC,CAAAA,WAAAA,CAAYwT,cACzB,IAAI6jF,cAAAA,CAAiB,IAAI,CAACD,YAAY,CAACzuI,GAAG,CAACo3C,MAC3C,GAAI,CAACs3F,eAAgB,CACnB,MAAMO,IAAM,IAAI,CAACC,SAAS,CAC1BR,cAAAA,CAAiB,IAAIrB,cACrBqB,CAAAA,eAAe7yF,MAAM,CAAGozF,IAAIE,QAAQ,CAACnvI,GAAG,CAACo3C,IAAAA,CACzCs3F,CAAAA,cAAAA,CAAe1jF,MAAM,CAAG,IAAI5vB,WAAYyvB,CAAAA,YAAAA,CAAAA,CACxC,GAAI,CAAC6jF,cAAAA,CAAe7yF,MAAM,CAAE,CAC1B,MAAMA,MAASozF,CAAAA,GAAAA,CAAIG,gBAAgB,CAAC,CAClClnG,OAAQ,IAAI,CAACy/F,IAAI,CAACz/F,MAAM,CACxBy6F,KAAOA,CAAAA,KAAAA,CACP0M,QAASN,UACThO,CAAAA,kBAAAA,CAAoBA,mBACpBE,IAAM2N,CAAAA,UAAAA,CACNE,aAAcA,YACdjR,CAAAA,iBAAAA,CAAmBA,kBACnBC,mBAAqBA,CAAAA,mBAAAA,CACrB7iF,aAAc,IAAI,CAAC0sF,IAAI,CAAC7pF,YAAY,EAAE/5C,MACxC,CAAA,CAAA,CACAkrI,IAAIE,QAAQ,CAAC3oI,GAAG,CAAC4wC,IAAAA,CAAMyE,OACvB6yF,CAAAA,cAAAA,CAAe7yF,MAAM,CAAGA,OAC1B,CACA,IAAI,CAAC4yF,YAAY,CAACjoI,GAAG,CAAC4wC,IAAMs3F,CAAAA,cAAAA,EAC9B,CACA,OAAOA,cACT,CACA,IAAI5N,QAAAA,CAASA,QAAQ,CAAE,CACrB,IAAI,CAAC0N,YAAY,GACjB,MAAMc,OAAAA,CAAU,IAAI,CAACJ,SAAS,CAC9B,GAAII,OAAAA,CAAS,CACXA,OAAQC,CAAAA,qBAAqB,CAAC,IAAI,EACpC,CACA,IAAI,CAACL,SAAS,CAAGpO,QAAAA,CACjB,GAAIA,QAAU,CAAA,CACZA,SAAS0O,kBAAkB,CAAC,IAAI,CAChC,CAAA,IAAI,CAACC,WAAW,CAAG3O,QAAS2O,CAAAA,WAAW,CACvC,IAAI,CAAC36F,SAAS,GAChB,CACF,CACA,IAAIgsF,QAAAA,EAAW,CACb,OAAO,IAAI,CAACoO,SACd,CACAQ,iBAAkBX,CAAAA,UAAU,CAAE,CAC5B,GAAIA,aAAe,IAAI,CAACC,WAAW,CAAE,CACnC,IAAI,CAACA,WAAW,CAAGD,UACnB,CAAA,IAAI,CAACP,YAAY,GACnB,CACF,CACA,IAAImB,sBAAsBA,qBAAqB,CAAE,CAC/C,IAAI,CAACC,sBAAsB,CAAGD,sBAChC,CACA,IAAIA,qBAAAA,EAAwB,CAC1B,OAAO,IAAI,CAACC,sBACd,CACA,IAAIC,aAAAA,CAAcr9H,GAAG,CAAE,CACrB,GAAI,IAAI,CAACs9H,cAAc,GAAKt9H,GAAAA,CAAK,CAC/B,IAAI,CAACs9H,cAAc,CAAGt9H,GAAAA,CACtB,IAAI,CAACk9H,iBAAiB,CAACl9H,IAAM,IAAI,CAACw8H,WAAW,CAAG,CAAC5V,mBAAqB,IAAI,CAAC4V,WAAW,CAAG5V,kBAAAA,EAC3F,CACF,CACA,IAAIyW,eAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIC,SAASv9H,GAAG,CAAE,CAChB,IAAI,CAACk9H,iBAAiB,CAACl9H,GAAAA,CAAM,IAAI,CAACw8H,WAAW,CAAG9U,eAAkB,CAAA,IAAI,CAAC8U,WAAW,CAAG,CAAC9U,eACxF,EAAA,CACA,IAAI6V,QAAW,EAAA,CACb,OAAO,CAAC,IAAI,CAACf,WAAW,CAAG9U,eAAc,IAAO,CAClD,CACA,IAAIgU,aAAa17H,GAAG,CAAE,CACpB,IAAI,CAACw9H,aAAa,CAAGx9H,GAAAA,CACrB,IAAI,CAACk9H,iBAAiB,CAACl9H,GAAM,CAAA,IAAI,CAACw8H,WAAW,CAAG3V,eAAiB,IAAI,CAAC2V,WAAW,CAAG,CAAC3V,gBACrF,IAAI,CAAC4W,gBAAgB,GACvB,CACA,IAAI/B,YAAe,EAAA,CACjB,OAAO,IAAI,CAAC8B,aAAa,CAE3B,IAAIE,aAAc19H,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC27H,cAAc,EAAE/mG,SACrB,CAAA,IAAI,CAAC+mG,cAAc,CAAG37H,IACtB,IAAIu8H,UAAAA,CAAa,IAAI,CAACC,WAAW,CACjCD,UAAav8H,CAAAA,GAAAA,EAAOA,IAAIi2H,KAAK,CAAC0H,cAAc,CAAGpB,UAAAA,CAAajV,yBAA2BiV,UAAa,CAAA,CAACjV,yBACrGiV,UAAav8H,CAAAA,GAAAA,EAAOA,IAAIi2H,KAAK,CAAC2H,YAAY,CAAGrB,UAAAA,CAAahV,uBAAyBgV,UAAa,CAAA,CAAChV,uBACjGgV,UAAav8H,CAAAA,GAAAA,EAAOA,IAAIi2H,KAAK,CAAC4H,eAAe,CAAGtB,UAAAA,CAAa9U,kCAAoC8U,UAAa,CAAA,CAAC9U,kCAC/G,IAAI,CAACyV,iBAAiB,CAACX,UAAAA,EACzB,CACA,IAAImB,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC/B,cACd,CACA,IAAImC,WAAAA,CAAY99H,GAAG,CAAE,CACnB,GAAI,IAAI,CAAC+9H,YAAY,GAAK/9H,GAAAA,CAAK,CAC7B,IAAI,CAAC+9H,YAAY,CAAG/9H,GAAAA,CACpB,IAAI,CAACk9H,iBAAiB,CAACl9H,IAAM,IAAI,CAACw8H,WAAW,CAAGpV,qBAAAA,CAAwB,IAAI,CAACoV,WAAW,CAAG,CAACpV,qBAAAA,EAC9F,CACF,CACA,IAAI0W,aAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIzqI,IAAI0M,GAAG,CAAE,CACX,IAAI,CAACg+H,eAAe,CAAGh+H,IACzB,CACA,IAAI1M,GAAAA,EAAM,CACR,OAAO,IAAI,CAAC0qI,eACd,CACA,IAAI3+F,IAAAA,CAAKr/B,GAAG,CAAE,CACZ,MAAMi+H,OAAU,CAAA,IAAI,CAACzB,WAAW,CAAG,MACnC,IAAI,CAACU,iBAAiB,CAACe,OAAAA,CAAUj+H,KAAO,EAC1C,EAAA,CACA,IAAIq/B,IAAO,EAAA,CACT,OAAO,IAAI,CAACm9F,WAAW,EAAI,EAC7B,CACA,IAAI0B,eAAAA,CAAgB9qI,KAAK,CAAE,CACzB,GAAI,IAAI,CAAC+qI,cAAc,CAAE,CACvB,IAAI,CAACA,cAAc,CAAC1yF,KAAK,CAAGr4C,MAC9B,CACF,CACA,IAAI8qI,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACC,cAAc,CAAG,IAAI,CAACA,cAAc,CAAC1yF,KAAK,CAAG,CAC3D,CACA7W,OAAU,EAAA,CACR,MAAMugG,IAAO,CAAA,IAAI,CAACA,IAAI,CACtB,GAAIA,IAAM,CAAA,CACR,IAAI,CAACA,IAAI,CAAG,IACZ,CAAA,GAAIA,KAAK/5E,QAAQ,CAAG,EAAG,CACrB+5E,IAAAA,CAAKvgG,OAAO,GACd,CACF,CACA,IAAI,CAACwpG,mBAAmB,CAACrD,YAAAA,CAAasD,kBAAkB,CAAC,CAAA,CAAE,CAAE,IAC7D,CAAA,CAAA,IAAI,CAACD,mBAAmB,CAACrD,aAAasD,kBAAkB,CAAC,EAAE,CAAE,IAAA,CAC7D,CAAA,IAAI,CAACb,aAAa,EAAE5oG,OAAAA,EACpB,CAAA,IAAI,CAAC4oG,aAAa,CAAG,IACrB,CAAA,IAAI,CAACE,aAAa,EAAE9oG,OAAAA,EACpB,CAAA,IAAI,CAAC8oG,aAAa,CAAG,IAAA,CACrB,IAAI,CAAC1B,YAAY,EACjB,CAAA,IAAI,CAAC1N,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC6P,cAAc,EAAEvpG,OAAAA,EAAAA,CACrB,IAAI,CAAC0pG,mBAAmB,GAC1B,CACAA,mBAAAA,EAAsB,CACpB,GAAI,IAAI,CAACpyF,YAAY,CAAE,CACrB,IAAK,MAAMqyF,OAAO,IAAI,CAACryF,YAAY,CAAC93C,MAAM,GAAG,CAC3CmqI,GAAAA,EAAK3pG,UACP,CACA,IAAI,CAACsX,YAAY,CAAG,KACtB,CACF,CAOA,OAAOsyF,2BAA4BxN,CAAAA,aAAa,CAAEqI,WAAW,CAAE,CAC7D,GAAIrI,aAAAA,CAAe,CACjB,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,cAActlI,MAAM,CAAED,IAAI,CAC3CulI,aAAa,CAACvlI,CAAE,CAAA,CAAC0vI,YAAY,CAAG9B,WAAAA,CAChC,MAAMlE,IAAOnE,CAAAA,aAAa,CAACvlI,CAAE,CAAA,CAAC0pI,IAAI,CAClC,GAAI,CAACsF,QAAS1mI,CAAAA,GAAG,CAACohI,IAAO,CAAA,CAAA,CACvBsF,SAAS1+H,GAAG,CAACo5H,MACbA,IAAKiE,CAAAA,kBAAkB,CAACC,WAC1B,EAAA,CACF,CACAoB,QAASpmI,CAAAA,KAAK,GAChB,CACF,CACAoqI,UAAWC,CAAAA,MAAM,CAAE,CACjB,GAAI,IAAI,CAACC,OAAO,CAAE,CAChB,GAAI,IAAI,CAACC,aAAa,CAAE,CACtB,OAAO,IAAI,CAACA,aAAa,CAACF,MAAAA,CAC5B,CACAlE,WAAY5jH,CAAAA,MAAM,CAAG,IAAI,CAAC2D,IAAI,CAAC3D,MAAM,CACrC4jH,WAAAA,CAAYvzH,MAAM,CAAG,IAAI,CAAC8X,KAAK,CAAC9H,WAAW,CAACvrB,MAAM,GAClD,OAAOgzI,MAAAA,CAAOG,OAAO,CAACxgH,cAAc,CAACm8G,WAAe,CAAA,CAAA,CACtD,CACA,OAAO,KACT,CACAl4F,SAAY,EAAA,CACV,KAAM,CAAEgsF,QAAQ,CAAE,CAAG,IAAI,CACzB,IAAI,CAAC0P,eAAe,CAAG,IAAI,CAAC9C,WAAW,EAAI,EAAM5M,EAAAA,SAASjqC,eAAe,EAAIiqC,SAASwQ,SAAS,CAAG,QAAW,CAAA,CAAA,CAAKxQ,SAAS74F,EAAE,CAAG,QAClI,CACAspG,aAAAA,CAAczzF,YAAY,CAAE0zF,IAAAA,CAAO,KAAK,CAAE,CACxC,GAAI1zF,YAAAA,CAAc,CAChB,IAAI,CAAC6yF,cAAc,CAAG,IAAIzD,cAAepvF,CAAAA,YAAAA,CAAalH,WAAW,CACjE,CAAA,IAAI,CAAC+5F,cAAc,CAAC7yF,YAAY,CAAGA,YACnCA,CAAAA,YAAAA,CAAa/5C,MAAM,CAACy1C,UAAU,CAAG,IACjC,CAAA,IAAI,CAACg4F,IAAI,CAAGA,KACd,CAAA,KAAO,CACL,IAAI,CAACb,cAAc,CAAG,IACtB,CAAA,IAAI,CAACa,IAAI,CAAG,KACd,CACA,IAAI,CAAC9B,iBAAiB,CAAC5xF,YAAAA,CAAe,IAAI,CAACkxF,WAAW,CAAGvV,oBAAuB,CAAA,IAAI,CAACuV,WAAW,CAAG,CAACvV,oBACtG,EAAA,CACAgY,YAAYP,MAAM,CAAE5qG,IAAI,CAAE2X,KAAAA,CAAQ,CAAC,CAAE,CACnC,MAAMn4C,GAAMorI,CAAAA,MAAAA,EAAQA,QAAU,IAC9B,CAAA,GAAI5qG,OAAS,CAAC,CAAA,CAAG,CACf,IAAI,CAACorG,sBAAsB,CAAC5rI,GAAAA,EAC9B,MAAO,CACL,IAAI,CAAC44C,YAAL,GAAA,IAAI,CAACA,YAAiB,CAAA,IAAIr4C,KAC1B,MAAM0qI,GAAAA,CAAM,IAAI,CAACryF,YAAY,CAAC1+C,GAAG,CAAC8F,MAAQ,IAAIkiG,YAAAA,CAAa,IAAI,CAAC2/B,IAAI,CAACz/F,MAAM,CAC3E6oG,CAAAA,GAAIr1D,CAAAA,SAAS,CAAGp1C,IAChByqG,CAAAA,GAAAA,CAAI1/F,MAAM,CAAC4M,KAAAA,CAAAA,CACX,IAAI,CAACS,YAAY,CAACl4C,GAAG,CAACV,IAAKirI,GAC3B,CAAA,CAAA,MAAM7oG,OAAS,IAAI,CAACy/F,IAAI,CAACz/F,MAAM,CAC/BA,MAAOuY,CAAAA,WAAW,CAAClyC,GAAG,CAAC,IAAI,CAACmwC,YAAY,EAC1C,CACF,CACAizF,aAAaT,MAAM,CAAE3+D,SAAW,CAAC,CAAE,CACjC,MAAMzsE,GAAAA,CAAMorI,QAAQA,MAAU,EAAA,IAAA,CAC9B,IAAIH,GACJ,CAAA,GAAIx+D,WAAa,CAAG,CAAA,CAClB,IAAI,CAACm/D,sBAAsB,CAAC5rI,GAC9B,EAAA,CAAA,KAAO,CACL,IAAI,CAAC44C,eAAL,IAAI,CAACA,aAAiB,IAAIr4C,GAAAA,CAAAA,CAC1B0qI,IAAM,IAAI,CAACryF,YAAY,CAAC1+C,GAAG,CAAC8F,GAC5B,CAAA,CAAA,GAAI,CAACirI,GAAAA,CAAK,CACR,MAAMvyF,YAAc,IAAI,CAACmpF,IAAI,CAACnpF,WAAW,GAAG,CAAA,CAAE,CAC9C,MAAMozF,WAAAA,CAAcpzF,aAAaz6C,MACjC,CAAA,MAAM6/E,eAAiBguD,WAAgB7rI,GAAAA,SAAAA,CAAYowB,mBAAmB,CAACy7G,WAAAA,CAAY,CAAG,CACtFb,CAAAA,GAAAA,CAAM,IAAI/oC,YAAa,CAAA,IAAI,CAAC2/B,IAAI,CAACz/F,MAAM,CAAE07C,cAAAA,CAAAA,CACzC,IAAI,CAACllC,YAAY,CAACl4C,GAAG,CAACV,IAAKirI,GAC7B,EAAA,CACAA,IAAIppF,QAAQ,CAAC4qB,UACf,CACA,OAAOw+D,GACT,CACAW,sBAAAA,CAAuB5rI,GAAG,CAAE,CAC1B,MAAM+rI,IAAO,CAAA,IAAI,CAACnzF,YAAY,CAC9B,GAAImzF,IAAM,CAAA,CACR,MAAMd,GAAMc,CAAAA,IAAAA,CAAK7xI,GAAG,CAAC8F,GAAAA,CAAAA,CACrBirI,KAAK3pG,OACLyqG,EAAAA,CAAAA,IAAAA,CAAK/qI,MAAM,CAAChB,GAAAA,CAAAA,CACZ,GAAI+rI,IAAK1uI,CAAAA,IAAI,GAAK,CAAG,CAAA,CACnB,IAAI,CAAC2tI,mBAAmB,GAC1B,CACF,CACF,CACAgB,eAAgBZ,CAAAA,MAAM,CAAE,CACtB,MAAMW,KAAO,IAAI,CAACnzF,YAAY,CAC9B,GAAI,CAACmzF,IAAM,CAAA,OAAO9rI,UAClB,OAAO8rI,IAAAA,CAAK7xI,GAAG,CAACkxI,MAAAA,CAAAA,EAAWW,KAAK7xI,GAAG,CAAC,KACtC,CACA+xI,mBAAAA,EAAsB,CACpB,MAAMC,IAAAA,CAAO,IAAI,CAACrK,IAAI,EAAEppF,SAAS,CAAC,IAAI,CAACstF,WAAW,CAAC,CACnD,MAAM5zH,KAAO,IAAI,CAACg6H,YAAY,GAAK,IAAI,CAACA,YAAY,CAAG,IAAIv5H,UAAAA,CAAW,EAAC,CACvET,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAG+5H,IAAK/zF,CAAAA,KAAK,CACpBhmC,IAAI,CAAC,CAAE,CAAA,CAAG+5H,KAAKjjE,IACf92D,CAAAA,IAAI,CAAC,EAAE,CAAG+5H,IAAAA,CAAKhjE,UAAU,CACzB,OAAO/2D,IACT,CACAi6H,cAAAA,CAAehqG,MAAM,CAAE,CACrB,GAAI,CAAC,IAAI,CAAC44F,QAAQ,CAAE,CAClB,IAAI,CAACA,QAAQ,CAAGyL,kBAAAA,CAAmBrkG,QACrC,CACF,CACAiqG,eAAkB,EAAA,CAChB,IAAI,CAACtqC,UAAU,CAAG,GACpB,CACAuqC,aAAAA,EAAgB,CACd,OAAO,IAAI,CAACvqC,UACd,CACApX,YAAalvF,CAAAA,IAAI,CAAE,CACjB,OAAO,IAAI,CAACsmG,UAAU,CAACtmG,IAAK,CAC9B,CACAomG,YAAapmG,CAAAA,IAAI,CAAE0W,IAAI,CAAEo6H,UAAY,UAAU,CAAE,CAC/C,MAAMzqC,KAAAA,CAAQ,IAAI,CAACC,UAAU,CAACtmG,IAAK,CAAA,CACnC,GAAIqmG,KAAO,CAAA,CACTA,MAAM3vF,IAAI,CAAGA,IACb2vF,CAAAA,KAAAA,CAAMyqC,SAAS,CAAGA,UACpB,MAAO,CACL,IAAI,CAACxqC,UAAU,CAACtmG,KAAK,CAAG,CACtBglC,QAAS,IACTtuB,CAAAA,IAAAA,CAAMA,KACNo6H,SAAWA,CAAAA,SACb,EACF,CACF,CACAzB,oBAAoBrvI,IAAI,CAAEwuC,OAAO,CAAE,CACjC,MAAMuiG,GAAM,CAAA,IAAI,CAAC7hD,YAAY,CAAClvF,MAC9B,GAAI+wI,GAAAA,GAAQviG,QAAS,CACnB,MACF,CACA,GAAIuiG,GAAAA,CAAK,CACP1F,aAAcD,CAAAA,MAAM,CAAC2F,GAAIr6H,CAAAA,IAAI,EAC/B,CACA,GAAI83B,QAAS,CACX68F,aAAAA,CAAcF,MAAM,CAAC38F,OAAAA,CAAAA,CACrB,IAAI,CAAC43D,YAAY,CAACpmG,IAAMwuC,CAAAA,OAAAA,EAC1B,MAAO,CACL,IAAI,CAAC+3D,eAAe,CAACvmG,MACvB,CACF,CACAumG,gBAAgBvmG,IAAI,CAAE,CACpB,GAAI,IAAI,CAACsmG,UAAU,CAACtmG,KAAK,CAAE,CACzB,OAAO,IAAI,CAACsmG,UAAU,CAACtmG,IAAAA,EAAK,CAEhC,CACAgxI,cAAcrqG,MAAM,CAAEsqG,QAAQ,CAAE,CAC9B,MAAM3qC,UAAa,CAAA,IAAI,CAACA,UAAU,CAClC,IAAI,MAAM4qC,SAAAA,IAAa5qC,WAAW,CAChC,MAAM6qC,UAAY7qC,UAAU,CAAC4qC,UAAU,CACvC,GAAIC,UAAUL,SAAS,CAAGG,SAAU,CAClC,GAAI,CAACE,SAAUnsG,CAAAA,OAAO,CAAE,CACtBmsG,SAAAA,CAAUnsG,OAAO,CAAG2B,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAACmqG,SAC3C,EAAA,CACAC,SAAUnsG,CAAAA,OAAO,CAACqP,QAAQ,CAAC88F,SAAUz6H,CAAAA,IAAI,EAC3C,CACF,CACF,CACA06H,cAAe/sI,CAAAA,KAAK,CAAE,CACpB,GAAIA,MAAO,CACT,IAAI,CAACisC,IAAI,CAAG,CAAC,IAAI,CAACA,IAAI,CAAG0oF,uBAAsB,EAAK,CAAC,EACvD,CAAO,KAAA,CACL,IAAI,CAACqW,mBAAmB,CAACrD,YAAasD,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAAE,MAC7D,IAAI,CAACD,mBAAmB,CAACrD,YAAAA,CAAasD,kBAAkB,CAAC,CAAA,CAAE,CAAE,IAC7D,CAAA,CAAA,IAAI,CAAC7B,WAAW,EAAI,CAAC,IACrB,CAAA,IAAI,CAACn9F,IAAI,CAAI,CAAA,IAAI,CAACA,IAAI,CAAGyoF,mBAAkB,EAAK,CAAC,EACnD,CACF,CACAsY,aAAAA,CAAc7lH,IAAI,CAAE,CAClB,GAAIA,IAAM,CAAA,CACR,GAAI,IAAI,CAACihH,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAChxI,IAAI,CAAC+vB,IACxB,EAAA,CAAA,KAAO,CACL,IAAI,CAACihH,WAAW,CAAGjhH,KAAKxZ,KAAK,GAC/B,CACF,CAAO,KAAA,CACL,IAAI,CAACy6H,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC1K,QAAQ,CAAG,CAAC,EACnB,CACA,IAAI,CAAC2M,gBAAgB,GACvB,CACAA,kBAAmB,CACjB,GAAI,IAAI,CAACD,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAAClK,iBAAiB,CAAG,CAAC,IAAI,CAACkI,YAAW,CAE5D,CAreAhoI,YAAY2hI,IAAI,CAAE7G,QAAQ,CAAEuN,IAAAA,CAAO,IAAI,CAAC,CACtC,IAAI,CAACwE,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,iBAAiB,CAAG/c,kBACzB,CAAA,IAAI,CAACyb,IAAI,CAAG,IACZ,CAAA,IAAI,CAACuB,SAAS,CAAG,CACjB,CAAA,IAAI,CAACrF,WAAW,CAAG,GACnB,CAAA,IAAI,CAACyD,OAAO,CAAG,IACf,CAAA,IAAI,CAAC6B,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACjrG,EAAE,CAAG4kG,MACV,CAAA,IAAI,CAACuE,aAAa,CAAG,IACrB,CAAA,IAAI,CAACT,cAAc,CAAG,IACtB,CAAA,IAAI,CAACwC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACz0F,YAAY,CAAG,IACpB,CAAA,IAAI,CAACuzF,YAAY,CAAG,IACpB,CAAA,IAAI,CAACpqC,UAAU,CAAG,EAClB,CAAA,IAAI,CAACurC,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC91F,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACkyF,WAAW,CAAG,KACnB,CAAA,IAAI,CAACl+G,KAAK,CAAG,IAAIrI,WACjB,CAAA,IAAI,CAACo6G,QAAQ,CAAG,CAAC,CACjB,CAAA,IAAI,CAACgL,YAAY,CAAG,CAAC,CACrB,CAAA,IAAI,CAACN,WAAW,CAAG,IACnB,CAAA,IAAI,CAACH,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,eAAe,CAAG,IACvB,CAAA,IAAI,CAACuF,cAAc,CAAG,CACtB,CAAA,IAAI,CAAC7C,eAAe,CAAG,CACvB,CAAA,IAAI,CAAC8C,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,MAAM,CAAGpgB,WACd,CAAA,IAAI,CAAC+b,SAAS,CAAG,IACjB,CAAA,IAAI,CAACc,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC7B,cAAc,CAAG,IACtB,CAAA,IAAI,CAAC2B,cAAc,CAAG,IACtB,CAAA,IAAI,CAACnC,YAAY,CAAG5W,iBACpB,CAAA,IAAI,CAACwZ,YAAY,CAAG,KACpB,CAAA,IAAI,CAAC9B,YAAY,CAAG,IAAIpoI,GACxB,CAAA,IAAI,CAAC2oI,WAAW,CAAG1U,mBAAuB,EAAA,EAC1C,CAAA,IAAI,CAACsV,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACvB,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACT,KAAK,CAAGjG,IAAAA,CACbA,KAAKl6E,WAAW,EAChB,CAAA,IAAI,CAACqzE,QAAQ,CAAGA,QAAAA,CAChB,GAAI6G,IAAK7pF,CAAAA,YAAY,CAAE,CACrB,MAAM/5C,OAAS4jI,IAAK7pF,CAAAA,YAAY,CAAC/5C,MACjC,CAAA,IAAI,CAACirI,WAAW,EAAIjrI,MAAAA,CAAOo1C,MAAM,CAAGmgF,aAAAA,CAAgB,CACpD,CAAA,IAAI,CAAC0V,WAAW,EAAIjrI,OAAOq1C,MAAM,CAAGmgF,cAAgB,CACpD,CAAA,IAAI,CAACyV,WAAW,EAAIjrI,MAAOs1C,CAAAA,QAAQ,CAAGmgF,gBAAmB,CAAA,CACzD,CAAA,IAAI,CAACwV,WAAW,EAAIjrI,MAAAA,CAAOu1C,WAAW,CAAGugF,kBAAAA,CAAqB,EAChE,CACA,IAAI,CAAC/kF,SAAS,GAChB,CAkbF,CAveMy4F,aA0SGsD,kBAAkB,CAAG,CACxB,kBACA,CAAA,qBAAA,CACD,CA4LL,MAAM2C,cAAAA,CAAiB,CACrB,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACD,CACD,MAAMC,iBAAmB,CACvB,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACD,CAAA,CACD,MAAMC,IAAO,CAAA,IAAIj3H,KACjB,SAASk3H,eAAAA,CAAgB9lI,CAAC,CAAEC,CAAC,EAC3B,GAAID,CAAAA,EAAK,CAACC,CAAG,CAAA,OAAO,MACpB,GAAI,CAACD,GAAKC,CAAG,CAAA,OAAO,MACpBD,CAAIA,CAAAA,CAAAA,CAAEoK,IAAI,CACVnK,CAAAA,CAAIA,EAAEmK,IAAI,CACV,GAAIpK,CAAMC,GAAAA,CAAAA,CAAG,OAAO,IACpB,CAAA,GAAID,aAAaiK,YAAgBhK,EAAAA,CAAAA,YAAagK,aAAc,CAC1D,GAAIjK,EAAE3P,MAAM,GAAK4P,EAAE5P,MAAM,CAAE,OAAO,KAClC,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAI4P,CAAE3P,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC/B,GAAI4P,CAAC,CAAC5P,EAAE,GAAK6P,CAAC,CAAC7P,CAAE,CAAA,CAAE,OAAO,KAC5B,CACA,OAAO,IACT,CACA,OAAO,KACT,CACA,SAAS21I,eAAeC,OAAO,CAAEC,OAAO,CACtC,CAAA,IAAI,MAAMlsC,KAASisC,IAAAA,OAAAA,CAAQ,CACzB,GAAIA,OAAAA,CAAQvpI,cAAc,CAACs9F,KAAAA,CAAAA,EAAU,CAAC+rC,eAAgBE,CAAAA,OAAO,CAACjsC,KAAM,CAAA,CAAEksC,OAAO,CAAClsC,KAAAA,CAAM,EAAG,CACrF,OAAO,KACT,CACF,CACA,IAAI,MAAMA,KAAAA,IAASksC,QAAQ,CACzB,GAAIA,QAAQxpI,cAAc,CAACs9F,QAAU,CAAC+rC,eAAAA,CAAgBG,OAAO,CAAClsC,KAAAA,CAAM,CAAEisC,OAAO,CAACjsC,MAAM,CAAG,CAAA,CACrF,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,SAASmsC,YAAAA,CAAaC,EAAE,CACtB,CAAA,OAAOA,GAAG3F,IAAI,CAACj9G,cAAc,CAAClM,SAAS,CAEzC,MAAM+uH,aAWJ7sG,OAAU,EAAA,CACR,IAAI,CAACc,MAAM,CAAG,IACd,CAAA,IAAI,CAACu9F,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC9C,KAAK,CAAG,IACb,CAAA,IAAI,CAACuR,YAAY,CAAG,EACpB,CAAA,IAAI,CAACC,UAAU,CAAG,EAAE,CACpB,IAAI,CAACC,YAAY,CAAG,GAAE,CAExBC,SAAS9yI,IAAI,CAAEkiI,OAAO,CAAEG,WAAW,CAAE37F,EAAE,CAAE26F,MAAM,CAAE,CAC/C,GAAI36F,EAAOliC,GAAAA,SAAAA,CAAW,CACpBkiC,EAAK,CAAA,IAAI,CAACqsG,kBACV,CAAA,IAAI,CAACA,kBAAkB,GACzB,CACA,GAAI,IAAI,CAACJ,YAAY,CAACjsG,EAAAA,CAAG,CAAE,CACzB,OAAOliC,SACT,CACA,MAAMwuI,MAAQ,IAAI5Q,UAAAA,CAAW17F,GAAI1mC,IAAMkiI,CAAAA,OAAAA,CAASG,YAAahB,MAC7D,CAAA,CAAA,IAAI,CAACsR,YAAY,CAACjsG,EAAG,CAAA,CAAGssG,MACxB,OAAOA,KACT,CACAC,WAAYvsG,CAAAA,EAAE,CAAE,CACd,GAAI,CAAC,IAAI,CAACisG,YAAY,CAACjsG,EAAAA,CAAG,CAAE,CAC1B,MACF,CACA,MAAMwsG,YAAAA,CAAe,EAAE,CACvB,IAAI,IAAIx2I,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACk2I,UAAU,CAACj2I,MAAM,CAAED,IAAI,CAC7C,GAAI,IAAI,CAACk2I,UAAU,CAACl2I,CAAE,CAAA,CAACylI,YAAY,GAAKz7F,EAAAA,CAAI,CAC1C,IAAI,CAACysG,YAAY,CAAC,IAAI,CAACP,UAAU,CAACl2I,EAAE,EACtC,CAAA,KAAO,CACLw2I,YAAa11I,CAAAA,IAAI,CAAC,IAAI,CAACo1I,UAAU,CAACl2I,CAAAA,CAAE,EACtC,CACF,CACA,IAAI,CAACk2I,UAAU,CAAGM,YAClB,CAAA,IAAI,CAACE,2BAA2B,CAAC,IAAI,CAAClP,QAAQ,CAAEx9F,EAChD,CAAA,CAAA,OAAO,IAAI,CAACisG,YAAY,CAACjsG,EAAG,EAC9B,CACA2sG,cAAe3sG,CAAAA,EAAE,CAAE,CACjB,GAAI,IAAI,CAACmsG,YAAY,CAACltI,OAAO,CAAC+gC,IAAM,CAAG,CAAA,CACrC,IAAI,CAACmsG,YAAY,CAACr1I,IAAI,CAACkpC,IACzB,CACF,CACA4sG,eAAetzI,IAAI,CAAE,CACnB,MAAMuzI,MAAS,CAAA,IAAI,CAACZ,YAAY,CAChC,IAAI,MAAMK,KAAAA,IAASO,OAAO,CACxB,GAAI,CAACA,MAAOxqI,CAAAA,cAAc,CAACiqI,KAAQ,CAAA,CAAA,SACnC,GAAIO,MAAM,CAACP,MAAM,CAAChzI,IAAI,GAAKA,IAAM,CAAA,CAC/B,OAAOuzI,MAAM,CAACP,MAAM,CAExB,CACA,OAAO,IACT,CACAQ,UAAWrR,CAAAA,YAAY,CAAE,CACvB,MAAM/vD,QAAU,EAAE,CAClB,MAAMx9D,GAAM,CAAA,IAAI,CAACg+H,UAAU,CAACj2I,MAAM,CAClC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAM+2I,KAAAA,CAAQ,IAAI,CAACb,UAAU,CAACl2I,CAAE,CAAA,CAChC,GAAI+2I,KAAMtR,CAAAA,YAAY,GAAKA,YAAc,CAAA,CACvC/vD,QAAQ50E,IAAI,CAACi2I,OACf,CACF,CACA,OAAOrhE,OACT,CACAghE,4BAA4BtG,IAAI,CAAEpmG,EAAE,CAAE,CACpC,GAAI,CAAComG,IAAAA,CAAKv9H,OAAO,CAAE,OACnB,GAAIu9H,IAAAA,CAAK9K,KAAK,EAAI8K,KAAK9K,KAAK,CAACG,YAAY,GAAKz7F,EAAAA,CAAI,CAChDomG,IAAK9K,CAAAA,KAAK,CAACG,YAAY,CAAG,CAAC,EAC7B,CACA,GAAI2K,IAAKpkC,CAAAA,MAAM,EAAIokC,IAAKpkC,CAAAA,MAAM,CAACy5B,YAAY,GAAKz7F,GAAI,CAClDomG,IAAAA,CAAKpkC,MAAM,CAACy5B,YAAY,CAAG,CAAC,EAC9B,CACA,GAAI2K,IAAAA,CAAKz0F,OAAO,EAAIy0F,IAAAA,CAAKz0F,OAAO,CAAC8pF,YAAY,GAAKz7F,EAAI,CAAA,CACpDomG,KAAKz0F,OAAO,CAAC8pF,YAAY,CAAG,CAAC,EAC/B,CACA,GAAI2K,KAAKrK,MAAM,EAAIqK,KAAKrK,MAAM,CAACN,YAAY,GAAKz7F,EAAAA,CAAI,CAClDomG,IAAKrK,CAAAA,MAAM,CAACN,YAAY,CAAG,CAAC,EAC9B,CACA,IAAI,IAAIzlI,CAAAA,CAAI,EAAGA,CAAIowI,CAAAA,IAAAA,CAAK4G,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,IAAI,CAAC02I,2BAA2B,CAACtG,IAAK4G,CAAAA,SAAS,CAACh3I,CAAE,CAAA,CAAEgqC,IACtD,CACF,CACAj6B,OAAO0H,IAAI,CAAEw/H,OAAO,CAAE7G,IAAI,CAAE,CAC1B,MAAMkG,MAAQ,IAAI,CAACL,YAAY,CAACgB,OAAAA,CAAQ,CACxC,GAAIX,KAAAA,CAAO,CACT,GAAIA,KAAAA,CAAMxQ,IAAI,CAACruH,IAAAA,CAAK,CAACxO,OAAO,CAACmnI,MAAQ,CAAG,CAAA,CACtCkG,MAAMxQ,IAAI,CAACruH,KAAK,CAAC3W,IAAI,CAACsvI,IACtB,CAAA,CAAA,IAAI,CAACuG,cAAc,CAACM,SACtB,CACF,CACF,CACA5sI,MAAOoN,CAAAA,IAAI,CAAEw/H,OAAO,CAAE7G,IAAI,CAAE,CAC1B,MAAMkG,KAAQ,CAAA,IAAI,CAACL,YAAY,CAACgB,QAAQ,CACxC,GAAIX,MAAO,CACT,MAAMhsI,IAAMgsI,KAAMxQ,CAAAA,IAAI,CAACruH,IAAK,CAAA,CAACxO,OAAO,CAACmnI,IAAAA,CAAAA,CACrC,GAAI9lI,GAAO,EAAA,CAAA,CAAG,CACZgsI,KAAMxQ,CAAAA,IAAI,CAACruH,IAAK,CAAA,CAAC3O,MAAM,CAACwB,GAAAA,CAAK,GAC7B,IAAI,CAACqsI,cAAc,CAACM,OAAAA,EACtB,CACF,CACF,CACAC,cAAAA,CAAe9G,IAAI,CAAE/pI,GAAG,CAAEiwI,KAAK,CAAEa,kBAAkB,CAAE,CACnD,GAAI/G,IAAKpkC,CAAAA,MAAM,CAAE,CACf3lG,GAAAA,CAAM8wI,kBAAkB,CAAC/G,IAAAA,CAAKpkC,MAAM,CAACy5B,YAAY,CAAC,CAAGp/H,GAAAA,CAAIsyD,MAAM,CAACy3E,IAAAA,CAAKpkC,MAAM,CAACu5B,aAAa,EACzF6K,IAAKpkC,CAAAA,MAAM,CAAC64B,gBAAgB,GAC9B,CACA,OAAOx+H,GACT,CACA+wI,aAAchH,CAAAA,IAAI,CAAE/pI,GAAG,CAAEiwI,KAAK,CAAEa,kBAAkB,CAAE,CAClD,GAAI/G,KAAK9K,KAAK,EAAI8K,KAAK9K,KAAK,CAACA,KAAK,CAAE,CAClCj/H,IAAM8wI,kBAAkB,CAAC/G,KAAK9K,KAAK,CAACG,YAAY,CAAC,CAAGp/H,IAAIsyD,MAAM,CAACy3E,KAAK9K,KAAK,CAACC,aAAa,CACvF6K,CAAAA,IAAAA,CAAK9K,KAAK,CAAC+R,qBAAqB,GAClC,CACA,OAAOhxI,GACT,CACAixI,eAAAA,CAAgBlH,IAAI,CAAE/pI,GAAG,CAAEiwI,KAAK,CAAE,CAChC,GAAI,CAAClG,KAAKz0F,OAAO,CAAE,OACnB,IAAI47F,KAAAA,CAAQ,MACZ,GAAInH,IAAAA,CAAKz0F,OAAO,CAAC67F,KAAK,EAAIpH,IAAKz0F,CAAAA,OAAO,CAAC67F,KAAK,CAACC,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAG,EAAG,CAC5EoG,GAAAA,CAAIvF,IAAI,CAACsvI,IAAAA,CAAKz0F,OAAO,CAAC67F,KAAK,CAACC,MAAM,CAAClS,aAAa,CAAC,CAAA,CAAE,EACnD6K,IAAKz0F,CAAAA,OAAO,CAAC07F,qBAAqB,CAACjH,KAAKz0F,OAAO,CAAC67F,KAAK,CAACC,MAAM,EAC5DF,KAAQ,CAAA,KACV,MAAO,GAAInH,IAAAA,CAAKz0F,OAAO,CAAC+7F,MAAM,CAAE,CAC9BrxI,GAAAA,CAAIvF,IAAI,CAACsvI,IAAAA,CAAKz0F,OAAO,CAAC+7F,MAAM,CAACC,WAAW,CAAC/S,YAAY,CACrDwL,CAAAA,IAAAA,CAAKz0F,OAAO,CAAC07F,qBAAqB,CAACjH,IAAKz0F,CAAAA,OAAO,CAAC+7F,MAAM,CAACC,WAAW,CAACrS,KAAK,EACxE,GAAI8K,IAAAA,CAAKz0F,OAAO,CAAC+7F,MAAM,CAACC,WAAW,CAACC,kBAAkB,CAAE,CACtDvxI,GAAAA,CAAIvF,IAAI,CAACsvI,IAAAA,CAAKz0F,OAAO,CAAC+7F,MAAM,CAACC,WAAW,CAACC,kBAAkB,CAC3D,CAAA,GAAI,CAACxH,IAAKz0F,CAAAA,OAAO,CAAC+7F,MAAM,CAACC,WAAW,CAACC,kBAAkB,CAACv4F,YAAY,EAAI,CAAC+wF,IAAKz0F,CAAAA,OAAO,CAAC+7F,MAAM,CAACC,WAAW,CAACC,kBAAkB,CAACt4F,WAAW,CAAE,CACvI8wF,IAAKz0F,CAAAA,OAAO,CAACk8F,YAAY,EAAA,CACzBzH,KAAKz0F,OAAO,CAACm8F,YAAY,GAC3B,CACF,CACAP,KAAQ,CAAA,KACV,CACA,GAAIA,KAAAA,CAAO,CACTjB,KAAM1Q,CAAAA,GAAG,CAAG,KACd,CACF,CACAmS,8BAA+BZ,CAAAA,kBAAkB,CAAEa,QAAQ,CAAE,CAC3D,IAAI,IAAInkI,EAAI,CAAGA,CAAAA,CAAAA,CAAImkI,SAAS/3I,MAAM,CAAE4T,IAAI,CACtC,MAAMm2B,GAAKguG,QAAQ,CAACnkI,EAAE,CACtB,MAAMyiI,MAAQ,IAAI,CAACL,YAAY,CAACjsG,EAAAA,CAAG,CACnC,GAAI,CAACssG,MAAO,SACZ,IAAIjwI,IAAM8wI,kBAAkB,CAACntG,GAAG,CAChC,GAAI,CAAC3jC,GAAKA,CAAAA,GAAAA,CAAM8wI,kBAAkB,CAACntG,EAAAA,CAAG,CAAG,EAAE,CAC3C,IAAI,IAAIlvB,CAAAA,CAAI,EAAGA,CAAIw7H,CAAAA,KAAAA,CAAMxQ,IAAI,CAACR,KAAK,CAACrlI,MAAM,CAAE6a,IAAI,CAC9CzU,GAAAA,CAAM,IAAI,CAAC+wI,aAAa,CAACd,KAAMxQ,CAAAA,IAAI,CAACR,KAAK,CAACxqH,EAAE,CAAEzU,GAAAA,CAAKiwI,MAAOa,kBAC5D,EAAA,CACA,IAAI,IAAI73I,CAAAA,CAAI,EAAGA,CAAIg3I,CAAAA,KAAAA,CAAMxQ,IAAI,CAAC95B,MAAM,CAAC/rG,MAAM,CAAEX,IAAI,CAC/C+G,GAAAA,CAAM,IAAI,CAAC6wI,cAAc,CAACZ,KAAMxQ,CAAAA,IAAI,CAAC95B,MAAM,CAAC1sG,EAAE,CAAE+G,GAAAA,CAAKiwI,MAAOa,kBAC9D,EAAA,CACA,IAAI,IAAIh1I,CAAAA,CAAI,EAAGA,CAAIm0I,CAAAA,KAAAA,CAAMxQ,IAAI,CAACnqF,OAAO,CAAC17C,MAAM,CAAEkC,IAAI,CAChD,IAAI,CAACm1I,eAAe,CAAChB,KAAAA,CAAMxQ,IAAI,CAACnqF,OAAO,CAACx5C,CAAE,CAAA,CAAEkE,IAAKiwI,KACnD,EAAA,CACA,IAAI,IAAIvwI,CAAAA,CAAI,EAAGA,CAAIuwI,CAAAA,KAAAA,CAAMxQ,IAAI,CAACC,MAAM,CAAC9lI,MAAM,CAAE8F,IAAI,CAC/C,MAAMqqI,KAAOkG,KAAMxQ,CAAAA,IAAI,CAACC,MAAM,CAAChgI,EAAE,CACjC,GAAIqqI,KAAKrK,MAAM,EAAIqK,KAAKrK,MAAM,CAACkS,aAAa,GAAK3B,MAAM9Q,OAAO,EAAI4K,KAAKrK,MAAM,CAACA,MAAM,CAACmS,WAAW,GAAK3a,wBAAuB,CAAA,CAAI,CAC9Hl3H,GAAIvF,CAAAA,IAAI,CAACsvI,IAAKrK,CAAAA,MAAM,CAACkS,aAAa,CAAA,CAClC7H,KAAKrK,MAAM,CAACsR,qBAAqB,EACjCf,CAAAA,MAAMzQ,OAAO,CAAG,IAChBuK,CAAAA,IAAAA,CAAKrK,MAAM,CAACoS,WAAW,CAAG7B,MAC5B,CACF,CACF,CACF,CACApyE,SAAS8zE,QAAQ,CAAE,CACjB,MAAMb,kBAAAA,CAAqB,EAC3B,CAAA,GAAI,CAACa,QAAAA,CAAU,CACbA,QAAAA,CAAWn2I,OAAOoW,IAAI,CAAC,IAAI,CAACg+H,YAAY,EAC1C,CACA,MAAMO,aAAe,EAAE,CACvB,IAAI,IAAIx2I,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACk2I,UAAU,CAACj2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC7C,GAAIg4I,QAAAA,CAAS/uI,OAAO,CAAC,IAAI,CAACitI,UAAU,CAACl2I,EAAE,CAACylI,YAAY,EAAI,CAAG,CAAA,CACzD+Q,aAAa11I,IAAI,CAAC,IAAI,CAACo1I,UAAU,CAACl2I,CAAE,CAAA,CAAA,CACpC,QACF,CACA,IAAI,CAACy2I,YAAY,CAAC,IAAI,CAACP,UAAU,CAACl2I,CAAE,CAAA,EACtC,CACA,IAAI,CAACk2I,UAAU,CAAGM,YAAAA,CAClB,IAAI,CAACuB,8BAA8B,CAACZ,kBAAoBa,CAAAA,QAAAA,CAAAA,CACxD,GAAIA,QAAa,GAAA,IAAI,CAAC7B,YAAY,CAAE,CAClC,IAAI,CAACA,YAAY,CAACl2I,MAAM,CAAG,EAC7B,CAAA,KAAO,CACL,MAAMm4I,cAAAA,CAAiB,EAAE,CACzB,IAAI,IAAIp4I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACm2I,YAAY,CAACl2I,MAAM,CAAED,IAAI,CAC/C,GAAIg4I,SAAS/uI,OAAO,CAAC,IAAI,CAACktI,YAAY,CAACn2I,CAAE,CAAA,CAAA,CAAI,EAAGo4I,cAAet3I,CAAAA,IAAI,CAAC,IAAI,CAACq1I,YAAY,CAACn2I,CAAAA,CAAE,EAC1F,CACA,IAAI,CAACm2I,YAAY,CAAGiC,eACtB,CACA,IAAI9B,MAAO+B,KAAOC,CAAAA,SAAAA,CAAWvB,MAC7B,IAAI,MAAME,WAAWE,kBAAmB,CAAA,CACtC,GAAI,CAACA,kBAAAA,CAAmB9qI,cAAc,CAAC4qI,OAAAA,CAAAA,CAAU,SACjDX,KAAQa,CAAAA,kBAAkB,CAACF,OAAQ,CAAA,CACnCqB,UAAY,IAAI,CAACrC,YAAY,CAACgB,OAAAA,CAAQ,CACtC,GAAI,CAACqB,UAAW,CACd,QACF,CACAD,KAAQ,CAAA,IAAI,CAACE,OAAO,CAACjC,MAAOgC,SAAU9S,CAAAA,OAAO,CAAE8S,SAAU3S,CAAAA,WAAW,CAAE2S,SAAU1S,CAAAA,GAAG,EAAI0S,SAAUzS,CAAAA,OAAO,EACxG,IAAI,IAAI7lI,EAAI,CAAGA,CAAAA,CAAAA,CAAIq4I,MAAMp4I,MAAM,CAAED,IAAI,CACnC+2I,KAAAA,CAAQ,IAAI,CAAC53I,MAAM,CAACk5I,KAAK,CAACr4I,EAAE,CAAEs4I,SAAAA,CAAU9S,OAAO,CAAEtvH,QAAAA,CAAS+gI,QAAS,EACnE,CAAA,CAAA,CAAA,GAAIF,MAAO,CACTA,KAAAA,CAAMjS,WAAW,CAAC,IAAI,CAACJ,KAAK,CAAE4T,UAAU3T,MAAM,EAChD,CACF,CACF,CACF,CACA4T,OAAQhT,CAAAA,aAAa,CAAEC,OAAO,CAAEG,YAAc77G,MAAO0uH,CAAAA,iBAAiB,CAAEC,WAAW,CAAE,CACnF,GAAIlT,aAAAA,CAActlI,MAAM,GAAK,CAAA,CAAG,OAAO,EAAE,CACzC,MAAMy4I,eAAkB/S,CAAAA,WAAAA,CAAc,GACtC,MAAMgT,gBAAAA,CAAmB,KACzB,MAAMC,cAAAA,CAAiB,WACvB,MAAM9pH,IAAAA,CAAO,IAAI7D,WACjB,CAAA,MAAM4tH,SAAW,IAAI5tH,WAAAA,CACrB,IAAI6tH,mBAAsB,CAAA,IAAA,CAC1B,IAAIC,EACJ,CAAA,MAAMV,MAAQ,EAAE,CAChB,IAAI9xD,CAAI,CAAA,CAAA,CACR,GAAIkyD,WAAa,CAAA,CACflT,cAAcr1H,IAAI,CAAC,CAACN,CAAGC,CAAAA,CAAAA,GAAAA,CACrB,OAAOD,CAAAA,CAAEklI,SAAS,CAAGjlI,EAAEilI,SACzB,GACF,CACA,IAAIkE,mBAAqBzT,aACzB,CAAA,IAAI0T,mBACJ,MAAMC,QAAAA,CAAWT,YAAc,SAAS1C,EAAE,EACxC,GAAI+C,mBAAAA,CAAqB,CACvBA,mBAAoBxoI,CAAAA,GAAG,CAACylI,EAAGjnH,CAAAA,IAAI,EACjC,CAAO,KAAA,CACLgqH,oBAAsB/C,EAAGjnH,CAAAA,IAAI,CAACxZ,KAAK,GACrC,CACA2jI,kBAAmBn4I,CAAAA,IAAI,CAACi1I,EAC1B,EAAA,CAAA,CAAI,SAASA,EAAE,CAAA,CACbkD,mBAAmBn4I,IAAI,CAACi1I,IAC1B,CACA,CAAA,MAAMiD,mBAAmB/4I,MAAM,CAAG,EAAE,CAClCo4I,KAAK,CAAC9xD,CAAE,CAAA,CAAG,CACTyyD,kBAAkB,CAAC,EAAE,CACtB,CACDC,mBAAqB,EAAE,CACvB,MAAMpW,QAAWmW,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAACnW,QAAQ,CAC/C,MAAMkC,MAAQiU,kBAAkB,CAAC,EAAE,CAACjU,KAAK,CACzC,MAAMoU,IAAAA,CAAOH,kBAAkB,CAAC,CAAA,CAAE,CAACjI,WAAW,CAC9C,MAAMx+H,MAASymI,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAACpvC,UAAU,CAC/C,MAAM1lD,QAAU80F,kBAAkB,CAAC,EAAE,CAAC35F,YAAY,CAClD,IAAI+5F,SAAAA,CAAYJ,kBAAkB,CAAC,CAAA,CAAE,CAACtP,IAAI,CAAC7pF,YAAY,CAACnH,cAAc,GACtE,MAAMo8F,SAAAA,CAAYkE,kBAAkB,CAAC,CAAA,CAAE,CAAClE,SAAS,CACjDhmH,KAAK/vB,IAAI,CAACi6I,kBAAkB,CAAC,CAAA,CAAE,CAAClqH,IAAI,CAAA,CACpC,MAAM7H,SAAY6uH,CAAAA,YAAAA,CAAakD,kBAAkB,CAAC,CAAA,CAAE,EACpD,MAAMK,wBAAAA,CAA2BL,kBAAkB,CAAC,CAAA,CAAE,CAACtP,IAAI,CAAC7pF,YAAY,CAAC/5C,MAAM,CAAC80C,YAAY,CAC5F,MAAMo2B,OAAUgoE,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAACtP,IAAI,CAACppF,SAAS,CAAC,CAAE,CAAA,CAAC0wB,OAAO,CAC/D8nE,mBAAAA,CAAsB,KACtB,IAAI,IAAI94I,EAAI,CAAGA,CAAAA,CAAAA,CAAIg5I,mBAAmB/4I,MAAM,CAAED,IAAI,CAChD,MAAM+1I,GAAKiD,kBAAkB,CAACh5I,EAAE,CAChC,GAAIwlI,OAAW6S,EAAAA,KAAK,CAAC9xD,CAAAA,CAAE,CAACtmF,MAAM,EAAI04I,iBAAkB,CAClDM,kBAAAA,CAAqBA,mBAAmBtgF,MAAM,CAACqgF,mBAAmBn4I,KAAK,CAACb,IACxE,KACF,CACA,GAAI6iI,QAAakT,GAAAA,EAAAA,CAAGlT,QAAQ,EAAIkC,KAAAA,GAAUgR,GAAGhR,KAAK,EAAIsU,2BAA6BtD,EAAGrM,CAAAA,IAAI,CAAC7pF,YAAY,CAAC/5C,MAAM,CAAC80C,YAAY,EAAIo2B,OAAY+kE,GAAAA,EAAAA,CAAGrM,IAAI,CAACppF,SAAS,CAAC,CAAE,CAAA,CAAC0wB,OAAO,EAAImoE,IAAAA,GAASpD,GAAGhF,WAAW,EAAIqI,UAAYrD,EAAGrM,CAAAA,IAAI,CAAC7pF,YAAY,CAACnH,cAAc,EAAKkgG,CAAAA,cAAAA,CAAgB,CACxQM,QAASnD,CAAAA,EAAAA,CAAAA,CACT,QACF,CACA8C,QAAAA,CAAS95I,IAAI,CAAC+vB,IAAAA,CAAAA,CACd+pH,SAASvoI,GAAG,CAACylI,GAAGjnH,IAAI,CAAA,CACpB,GAAI+pH,QAASrtH,CAAAA,WAAW,CAACnX,CAAC,CAAGqkI,iBAAmBG,QAASrtH,CAAAA,WAAW,CAACzP,CAAC,CAAG28H,iBAAmBG,QAASrtH,CAAAA,WAAW,CAACtP,CAAC,CAAGw8H,gBAAiB,CACpIQ,QAAAA,CAASnD,IACT,QACF,CACA,GAAI7xF,OAAS,CAAA,CACX,GAAI,EAAE60F,GAAKhD,EAAG12F,CAAAA,YAAY,CAAK6E,EAAAA,OAAAA,CAAQz5C,IAAI,GAAKsuI,EAAAA,CAAGtuI,IAAI,EAAIy5C,OAAAA,CAAQ5H,KAAK,GAAKy8F,EAAAA,CAAGz8F,KAAK,CAAE,CACrF48F,SAASnD,EACT,CAAA,CAAA,QACF,CACF,CACA,GAAI9uH,YAAc6uH,YAAaC,CAAAA,EAAAA,CAAAA,CAAK,CAClCmD,QAASnD,CAAAA,EAAAA,CAAAA,CACT,QACF,CACA,GAAI,CAACJ,cAAepjI,CAAAA,MAAAA,CAAQwjI,GAAGnsC,UAAU,CAAA,CAAG,CAC1CsvC,QAASnD,CAAAA,EAAAA,CAAAA,CACT,QACF,CACA,GAAI0C,aAAeK,mBAAuBA,EAAAA,mBAAAA,CAAoB9rH,UAAU,CAAC+oH,EAAAA,CAAGjnH,IAAI,CAAKinH,EAAAA,EAAAA,CAAGjB,SAAS,GAAKA,SAAAA,CAAW,CAC/GoE,QAASnD,CAAAA,EAAAA,CAAAA,CACT,QACF,CACAjnH,IAAAA,CAAKxe,GAAG,CAACylI,EAAAA,CAAGjnH,IAAI,CAChBsqH,CAAAA,SAAAA,EAAarD,GAAGrM,IAAI,CAAC7pF,YAAY,CAACnH,cAAc,GAChD2/F,KAAK,CAAC9xD,EAAE,CAACzlF,IAAI,CAACi1I,EAChB,EAAA,CACAxvD,IACAyyD,kBAAqBC,CAAAA,mBACvB,CACA,OAAOZ,KACT,CACAiB,uBAAuB/T,aAAa,CAAEC,OAAO,CAAE,CAC7C,IAAI+T,OAAU,CAAA,IAAA,CACd,IAAIC,aAAgB,CAAA,CAAA,CACpB,IAAIC,eAAkB,CAAA,CAAA,CACtB,IAAI5W,QAAW,CAAA,IAAA,CACf,IAAI,IAAI7iI,CAAAA,CAAI,EAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,GAAIulI,aAAa,CAACvlI,CAAE,CAAA,CAACkzI,OAAO,CAAE,CAC5B,MAAMxJ,IAAOnE,CAAAA,aAAa,CAACvlI,CAAE,CAAA,CAAC0pI,IAAI,CAClC,MAAM75G,SAAW65G,IAAK7pF,CAAAA,YAAY,CAAClH,WAAW,CAC9C6gG,eAAiB3pH,QACjB,CAAA,GAAI65G,KAAKppF,SAAS,CAAC,EAAE,CAAC0wB,OAAO,CAAE,CAC7ByoE,eAAAA,EAAmB/P,KAAKppF,SAAS,CAAC,EAAE,CAACN,MAAK,CACrC,KAAA,CACL,MAAM2M,aAAgB+8E,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAAC7oC,IAAI,CAC5C,GAAIk1C,aAAkB9uB,GAAAA,gBAAAA,EAAoB8uB,gBAAkB/uB,kBAAoB,CAAA,CAC9E,GAAI8rG,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAACN,KAAK,GAAK,CAAG,CAAA,CACjCy5F,iBAAmB,EACrB,CACF,CACF,CACA,GAAI,CAACF,OAAS,CAAA,CACZ1W,SAAW0C,aAAa,CAACvlI,EAAE,CAAC6iI,QAAQ,CACpC0W,OAAU,CAAA,GACV,MAAMG,KAAAA,CAAQhQ,KAAK7pF,YAAY,CAAC/5C,MAAM,CAAC4zC,QAAQ,CAC/C,IAAI,IAAI6sC,EAAI,CAAGA,CAAAA,CAAAA,CAAImzD,MAAMz5I,MAAM,CAAEsmF,IAAI,CACnC,MAAM1sC,SAAW6/F,KAAK,CAACnzD,EAAE,CAACjjF,IAAI,CAC9Bi2I,OAAO,CAAC1/F,QAAS,CAAA,CAAG,CAClBS,aAAeo/F,CAAAA,KAAK,CAACnzD,CAAE,CAAA,CAACjsC,aAAa,CACrCD,QAAAA,CAAUq/F,KAAK,CAACnzD,CAAAA,CAAE,CAAClsC,QAAQ,CAC3Bj6C,UAAWs5I,KAAK,CAACnzD,EAAE,CAACnmF,SAAS,CAC7B4/C,KAAO,CAAA,CACT,EACF,CACA,GAAIwlF,QAAS,CACX+T,OAAO,CAACr7G,qBAAsB,CAAA,CAAG,CAC/Boc,aAAe,CAAA,CAAA,CACfD,SAAU5X,YACVriC,CAAAA,SAAAA,CAAW,MACX4/C,KAAO,CAAA,CACT,EACF,CACF,CACF,CACF,CACA,OAAO,CACLu5F,QAASA,OACTC,CAAAA,aAAAA,CAAeA,cACfC,eAAiBA,CAAAA,eAAAA,CACjB5W,SAAUA,QACZ,CACF,CACA1jI,MAAOomI,CAAAA,aAAa,CAAEC,OAAO,CAAEC,YAAY,CAAE,CAC3C,GAAI,CAAC,IAAI,CAACkU,KAAK,CAAE,CACf,IAAI,CAACC,aAAa,CAAG,EACrB,CAAA,IAAI,CAACD,KAAK,CAAG,KACf,CACA,IAAIrN,OAAS,IACb,CAAA,IAAIzyF,SACJ,IAAI6vF,IAAAA,CAAM75G,SACV,IAAIknH,KAAAA,CAAQ,KACZ,MAAM8C,SAAAA,CAAY,IAAI,CAACP,sBAAsB,CAAC/T,aAAeC,CAAAA,OAAAA,CAAAA,CAC7D,GAAIqU,SAAUN,CAAAA,OAAO,CAAE,CACrB,MAAMA,QAAUM,SAAUN,CAAAA,OAAO,CACjC,IAAI1W,QAAAA,CAAWgX,UAAUhX,QAAQ,CACjC,MAAM2W,aAAgBK,CAAAA,SAAAA,CAAUL,aAAa,CAC7C,MAAMC,gBAAkBI,SAAUJ,CAAAA,eAAe,CACjD1C,KAAQ,CAAA,IAAItS,MAAMc,aAAeC,CAAAA,OAAAA,CAASC,cAC1C,IAAI,CAACyQ,UAAU,CAACp1I,IAAI,CAACi2I,KACrB,CAAA,CAAA,IAAI+C,UAAWC,eAAiB1vC,CAAAA,UAAAA,CAAY2vC,UAC5C,IAAIC,cAAAA,CAAiB,EACrB,IAAIC,WAAAA,CAAc,EAClB,IAAIC,SAAAA,CACJ,MAAMC,cAAiBZ,CAAAA,aAAAA,EAAiB,MAASn8G,WAAcF,CAAAA,WAAAA,CAC/D,MAAMotE,OAAU,CAAA,IAAI6vC,eAAeX,eACnC,CAAA,CAAA,IAAI5/F,YAAY0/F,OAAQ,CAAA,CACtBjN,OAASiN,OAAO,CAAC1/F,SAAS,CAC1ByyF,OAAO+N,aAAa,CAAG3yG,eAAe,CAAC4kG,MAAAA,CAAOjyF,QAAQ,CACtDiyF,CAAAA,MAAOgO,CAAAA,eAAe,CAAG3yG,uBAAuB,CAAC2kG,OAAOjyF,QAAQ,CAAC,CACjEiyF,MAAAA,CAAO5xH,MAAM,CAAG,IAAI4xH,OAAO+N,aAAa,CAACb,cAAgBlN,MAAOhyF,CAAAA,aAAa,EAC/E,CACA,IAAI,IAAIt6C,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,GAAI,CAACulI,aAAa,CAACvlI,CAAE,CAAA,CAACkzI,OAAO,CAAE,CAC7B,QACF,CACAxJ,IAAAA,CAAOnE,aAAa,CAACvlI,CAAAA,CAAE,CAAC0pI,IAAI,CAC5B75G,QAAAA,CAAW65G,KAAK7pF,YAAY,CAAClH,WAAW,CACxC,GAAI,CAAC6sF,OAAS,CAAA,CACZ2U,UAAY5U,aAAa,CAACvlI,EAAE,CAACowI,IAAI,CAACzI,iBAAiB,GACrD,CACA,IAAI9tF,QAAAA,IAAY0/F,QAAQ,CACtB,GAAI1/F,WAAa3b,qBAAuB,CAAA,CACtCouG,OAASiN,OAAO,CAAC1/F,SAAS,CAC1B,MAAM2rB,SAAW,IAAI8mE,MAAAA,CAAO+N,aAAa,CAAC/N,MAAAA,CAAO5xH,MAAM,CAACA,MAAM,CAAE4xH,MAAOgO,CAAAA,eAAe,CAAGhO,MAAOtsF,CAAAA,KAAK,EACrG,MAAMu6F,eAAAA,CAAkB7Q,KAAK0C,eAAe,CAACvyF,SAAU2rB,QAAY8mE,CAAAA,CAAAA,MAAAA,CAAOhyF,aAAa,CACvFgyF,OAAOtsF,KAAK,EAAIu6F,gBAChB,GAAI,CAAC/U,SAAW8G,MAAOhyF,CAAAA,aAAa,EAAI,CAAG,CAAA,CACzC,GAAIT,QAAa/b,GAAAA,iBAAAA,CAAmB,CAClC,MAAMhjB,CAAAA,CAAIq/H,UAAUngI,IAAI,CACxB,MAAMhB,EAAK8B,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM7B,EAAK6B,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM0/H,EAAK1/H,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM2/H,EAAK3/H,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM4/H,EAAK5/H,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM6/H,EAAK7/H,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM8/H,EAAK9/H,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAM+/H,EAAK//H,CAAAA,CAAC,CAAC,CAAE,CAAA,CACf,MAAMsO,GAAMtO,CAAAA,CAAC,CAAC,EAAG,CAAA,CACjB,MAAMwO,GAAMxO,CAAAA,CAAC,CAAC,EAAG,CAAA,CACjB,MAAMuX,GAAMvX,CAAAA,CAAC,CAAC,EAAG,CAAA,CACjB,MAAMggI,GAAMhgI,CAAAA,CAAC,CAAC,EAAG,CAAA,CACjB,IAAIzG,CAAG0H,CAAAA,CAAAA,CAAGG,EACV,IAAI,IAAIqqE,EAAI,CAAGA,CAAAA,CAAAA,CAAIg0D,gBAAiBh0D,CAAK+lD,EAAAA,MAAAA,CAAOhyF,aAAa,CAAC,CAC5DjmC,EAAImxD,QAAQ,CAAC+gB,EAAE,CACfxqE,CAAAA,CAAIypD,QAAQ,CAAC+gB,CAAAA,CAAI,EAAE,CACnBrqE,CAAAA,CAAIspD,QAAQ,CAAC+gB,CAAAA,CAAI,EAAE,CACnB/gB,QAAQ,CAAC+gB,CAAAA,CAAE,CAAGlyE,CAAAA,CAAI2E,EAAK+C,CAAAA,CAAAA,CAAI0+H,GAAKv+H,CAAI0+H,CAAAA,EAAAA,CAAKtxH,GACzCk8C,CAAAA,QAAQ,CAAC+gB,CAAI,CAAA,CAAA,CAAE,CAAGlyE,CAAI4E,CAAAA,EAAAA,CAAK8C,EAAI2+H,EAAKx+H,CAAAA,CAAAA,CAAI2+H,GAAKxoH,GAC7CmzC,CAAAA,QAAQ,CAAC+gB,CAAAA,CAAI,EAAE,CAAGlyE,CAAAA,CAAImmI,GAAKz+H,CAAI4+H,CAAAA,EAAAA,CAAKz+H,EAAIkN,GAAM0xH,CAAAA,IAChD,CACF,CAAO,KAAA,GAAIjhG,WAAa9b,eAAmB8b,EAAAA,QAAAA,GAAa7b,iBAAkB,CACxEy3G,IAAAA,CAAKr1H,UAAU,CAAC+5H,SAAAA,CAAAA,CAAWn7H,SAAS,EACpC,CAAA,KAAM,CAAChG,EAAIC,CAAAA,EAAAA,CAAIuhI,GAAIO,EAAIN,CAAAA,EAAAA,CAAIC,GAAIC,EAAIK,CAAAA,EAAAA,CAAIJ,GAAG,CAAGnF,IAAAA,CAAKz7H,IAAI,CACtD,IAAI3F,EAAG0H,CAAGG,CAAAA,CAAAA,CACV,IAAI,IAAIqqE,CAAAA,CAAI,EAAGA,CAAIg0D,CAAAA,eAAAA,CAAiBh0D,GAAK+lD,MAAOhyF,CAAAA,aAAa,CAAC,CAC5DjmC,CAAAA,CAAImxD,QAAQ,CAAC+gB,CAAAA,CAAE,CACfxqE,CAAIypD,CAAAA,QAAQ,CAAC+gB,CAAI,CAAA,CAAA,CAAE,CACnBrqE,CAAIspD,CAAAA,QAAQ,CAAC+gB,CAAI,CAAA,CAAA,CAAE,CACnB/gB,QAAQ,CAAC+gB,CAAE,CAAA,CAAGlyE,EAAI2E,EAAK+C,CAAAA,CAAAA,CAAIg/H,GAAK7+H,CAAIy+H,CAAAA,EACpCn1E,CAAAA,QAAQ,CAAC+gB,EAAI,CAAE,CAAA,CAAGlyE,EAAI4E,EAAK8C,CAAAA,CAAAA,CAAI0+H,GAAKv+H,CAAI8+H,CAAAA,EACxCx1E,CAAAA,QAAQ,CAAC+gB,EAAI,CAAE,CAAA,CAAGlyE,EAAImmI,EAAKz+H,CAAAA,CAAAA,CAAI2+H,GAAKx+H,CAAI0+H,CAAAA,GAC1C,CACF,CACF,CACF,CACF,CACA,GAAIpV,QAAS,CACX8G,MAAAA,CAASiN,OAAO,CAACr7G,qBAAAA,CAAsB,CACvC,IAAI,IAAIqoD,EAAI,CAAGA,CAAAA,CAAAA,CAAI12D,SAAU02D,CAAI,EAAA,CAAA,CAC/B+lD,OAAO5xH,MAAM,CAAC4xH,OAAOtsF,KAAK,EAAA,CAAG,CAAGhgD,EAClC,CACF,CACA,GAAI0pI,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAAC0wB,OAAO,CAAE,CAC7B8oE,SAAYpQ,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAACwwB,IAAI,CAClCipE,gBAAkBrQ,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAACywB,UAAU,EAAI,CAAA,CAClDs5B,WAAaq/B,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAACN,KAAK,CACpC,MAAMi7F,SAAAA,CAAYvR,KAAKnpF,WAAW,CAAC,EAAE,CAAChI,SAAS,GAC/CyhG,SAAY,CAAA,IAAIlyG,sBAAsB,CAACmzG,SAAAA,CAAU,CAACvR,IAAKnpF,CAAAA,WAAW,CAAC,CAAE,CAAA,CAACxR,OAAO,EAC/E,CAAA,KAAO,CACLgrG,eAAkB,CAAA,CAAA,CAClB,MAAMptF,aAAgB+8E,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAAC7oC,IAAI,CAC5C,GAAIk1C,aAAkB9uB,GAAAA,gBAAAA,EAAoB8uB,gBAAkB/uB,kBAAoB,CAAA,CAC9E,GAAI8rG,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAACN,KAAK,GAAK,CAAA,CAAG,CACjC85F,SAAY,CAAA,CAAA,CACZzvC,WAAa,CACb2vC,CAAAA,SAAAA,CAAYrtF,gBAAkB9uB,gBAAmB03G,CAAAA,cAAAA,CAAiBC,iBACpE,CAAO,KAAA,CACLnrC,WAAa,CACb,CAAA,QACF,CACF,CACF,CACA,IAAI,IAAI9jB,CAAAA,CAAI,EAAGA,CAAI8jB,CAAAA,UAAAA,CAAY9jB,IAAI,CACjCgkB,OAAO,CAAChkB,CAAI2zD,CAAAA,WAAAA,CAAY,CAAGF,SAAS,CAACF,UAAYvzD,CAAE,CAAA,CAAGwzD,gBAAkBE,eAC1E,CACAC,aAAe7vC,UACf4vC,CAAAA,cAAAA,EAAkBpqH,SACpB,CACA65G,IAAAA,CAAO,IAAIH,IAAAA,CAAK,IAAI,CAACt/F,MAAM,CAC3B,CAAA,IAAI4P,YAAY0/F,OAAQ,CAAA,CACtBjN,OAASiN,OAAO,CAAC1/F,SAAS,CAC1B6vF,IAAAA,CAAKU,eAAe,CAACvwF,QAAAA,CAAUyyF,OAAO5xH,MAAM,CAAE4xH,OAAOhyF,aAAa,CAAExyC,UAAWwkI,MAAOjyF,CAAAA,QAAQ,CAAEiyF,MAAOlsI,CAAAA,SAAS,EAClH,CACA,GAAImqG,QAAQtqG,MAAM,CAAG,EAAG,CACtBypI,IAAAA,CAAKa,UAAU,CAAChgC,OAAAA,EAClB,CACAm/B,IAAKt2F,CAAAA,MAAM,CAACzV,mBAAqB,CAAA,KAAA,CAAA,CACjC,GAAI6nG,OAAS,CAAA,CACX3C,SAAWA,QAASvtH,CAAAA,KAAK,GACzButH,QAASzvF,CAAAA,MAAM,GACjB,CACA,MAAMwxF,aAAe,IAAI0K,YAAAA,CAAa5F,KAAM7G,QAAU,CAAA,IAAI,CAAC2E,QAAQ,CACnE5C,CAAAA,YAAagQ,CAAAA,UAAU,CAAGmC,KAAM3R,CAAAA,iBAAiB,CAAC,CAAE,CAAA,CAACwP,UAAU,CAC/DhQ,aAAah7B,UAAU,CAAGmtC,MAAM3R,iBAAiB,CAAC,EAAE,CAACx7B,UAAU,CAC/Dg7B,YAAAA,CAAaG,KAAK,CAAGgS,KAAAA,CAAM3R,iBAAiB,CAAC,CAAE,CAAA,CAACL,KAAK,CACrDH,aAAamM,WAAW,CAAGgG,MAAM3R,iBAAiB,CAAC,EAAE,CAAC2L,WAAW,CACjEnM,YAAAA,CAAakN,QAAQ,CAAG,IACxBlN,CAAAA,YAAa2O,CAAAA,IAAI,CAAGwD,KAAM3R,CAAAA,iBAAiB,CAAC,CAAE,CAAA,CAACmO,IAAI,CACnD,MAAM2H,WAAa,IAAI,CAACjF,YAAY,CAACxQ,YAAAA,CAAa,CAClD,GAAIyV,UAAAA,EAAcA,WAAWtV,GAAG,CAAE,CAChChB,YAAa2O,CAAAA,IAAI,CAAG,MACtB,CACA,GAAI/N,OAAS,CAAA,CACX,MAAM0C,KAAQ,CAAA,EAAE,CAChB,IAAI,IAAIloI,EAAI,CAAGA,CAAAA,CAAAA,CAAI+2I,MAAM3R,iBAAiB,CAACnlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrDkoI,KAAMpnI,CAAAA,IAAI,CAACi2I,KAAM3R,CAAAA,iBAAiB,CAACplI,CAAE,CAAA,CAACowI,IAAI,EAC5C,CACAxL,aAAaqL,YAAY,CAAG,IAAIhI,iBAAkB,CAAA,IAAI,CAACh+F,MAAM,CAAEi+F,MAAO,IAAI,CAACV,QAAQ,EACrF,CACA5C,aAAagL,WAAW,CAAG,KAC3BhL,CAAAA,YAAAA,CAAakQ,SAAS,CAAGiC,KAAAA,CAAM3R,iBAAiB,CAAC,CAAA,CAAE,CAAC0P,SACpDlQ,CAAAA,YAAavlF,CAAAA,YAAY,CAAG03F,KAAM3R,CAAAA,iBAAiB,CAAC,CAAE,CAAA,CAAC/lF,YAAY,CACnEulF,aAAatlF,WAAW,CAAGy3F,MAAM3R,iBAAiB,CAAC,EAAE,CAAC9lF,WAAW,CACjEslF,YAAAA,CAAaoQ,eAAe,CAAGc,YAAAA,CAAaiB,MAAM3R,iBAAiB,CAAC,EAAE,CACtER,CAAAA,aAAagQ,UAAU,CAAGmC,MAAM3R,iBAAiB,CAAC,EAAE,CAACwP,UAAU,CAC/DmC,KAAAA,CAAMnS,YAAY,CAAGA,YAAAA,CACrBmS,MAAM5R,iBAAiB,GACzB,CACA,OAAO4R,KACT,CACAoE,SAAY,EAAA,CACV,GAAI,IAAI,CAAChF,YAAY,CAACl2I,MAAM,CAAG,CAAG,CAAA,CAChC,IAAI,CAACikE,QAAQ,CAAC,IAAI,CAACiyE,YAAY,EACjC,CACA,IAAI,IAAIn2I,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACk2I,UAAU,CAACj2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC7C,GAAI,CAAC,IAAI,CAACk2I,UAAU,CAACl2I,EAAE,CAACwlI,OAAO,CAAE,SACjC,IAAI,CAAC0Q,UAAU,CAACl2I,EAAE,CAACmlI,iBAAiB,GACtC,CACF,CACA7vH,MAAMyhI,KAAK,CAAEqE,mBAAmB,CAAE,CAChC,MAAMC,MAAS,CAAA,IAAI5W,MAAM2W,mBAAqBrE,CAAAA,KAAAA,CAAMvR,OAAO,CAAEuR,KAAAA,CAAMtR,YAAY,CAC/E,CAAA,IAAI,CAACyQ,UAAU,CAACp1I,IAAI,CAACu6I,MAAAA,CAAAA,CACrB,MAAMnT,KAAQ,CAAA,EAAE,CAChB,IAAI,IAAIloI,EAAI,CAAGA,CAAAA,CAAAA,CAAIo7I,oBAAoBn7I,MAAM,CAAED,IAAI,CACjDkoI,KAAAA,CAAMpnI,IAAI,CAACs6I,mBAAmB,CAACp7I,CAAE,CAAA,CAACowI,IAAI,EACxC,CACAiL,OAAOzW,YAAY,CAAG,IAAI0K,YAAayH,CAAAA,KAAAA,CAAMnS,YAAY,CAAC8E,IAAI,CAAEqN,KAAMnS,CAAAA,YAAY,CAAC/B,QAAQ,CAAEkU,MAAMnS,YAAY,CAACwL,IAAI,CACpHiL,CAAAA,OAAOzW,YAAY,CAACgL,WAAW,CAAG,KAClCyL,CAAAA,MAAOzW,CAAAA,YAAY,CAACh7B,UAAU,CAAGwxC,mBAAmB,CAAC,CAAA,CAAE,CAACxxC,UACxDyxC,CAAAA,MAAOzW,CAAAA,YAAY,CAAC2O,IAAI,CAAG6H,mBAAmB,CAAC,CAAA,CAAE,CAAC7H,IAClD8H,CAAAA,MAAOzW,CAAAA,YAAY,CAACG,KAAK,CAAGqW,mBAAmB,CAAC,CAAA,CAAE,CAACrW,KAAK,CACxD,GAAIgS,KAAMvR,CAAAA,OAAO,CAAE,CACjB6V,MAAAA,CAAOzW,YAAY,CAACqL,YAAY,CAAG,IAAIhI,iBAAAA,CAAkB,IAAI,CAACh+F,MAAM,CAAEi+F,KAAO,CAAA,IAAI,CAACV,QAAQ,EAC5F,CACA6T,MAAOzW,CAAAA,YAAY,CAACgQ,UAAU,CAAGmC,MAAMnS,YAAY,CAACgQ,UAAU,CAC9D,OAAOyG,MACT,CACA5E,YAAAA,CAAaM,KAAK,CAAE,CAClBA,MAAM5tG,OAAO,CAAC,IAAI,CAACu7F,KAAK,CAAE,IAAI,CAACuR,YAAY,CAACc,KAAAA,CAAMtR,YAAY,CAAC,CAACd,MAAM,EACxE,CA5hBA58H,WAAAA,CAAYkiC,MAAM,CAAEqxG,IAAI,CAAE5W,KAAK,CAAC,CAC9B,IAAI,CAACz6F,MAAM,CAAGA,MACd,CAAA,IAAI,CAACu9F,QAAQ,CAAG8T,IAChB,CAAA,IAAI,CAAC5W,KAAK,CAAGA,KACb,CAAA,IAAI,CAACiV,KAAK,CAAG,KACb,CAAA,IAAI,CAAC1D,YAAY,CAAG,EACpB,CAAA,IAAI,CAACI,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACH,UAAU,CAAG,EAAE,CACpB,IAAI,CAACC,YAAY,CAAG,GACtB,CAohBF,CAEA,MAAMoF,kBAAoB,gBAC1B,CAAA,MAAMC,4BAA4B5wC,UAChCzhE,CAAAA,OAAAA,EAAU,CACR,KAAK,CAACA,UACN,IAAI,CAACsyG,mBAAmB,CAAC,IAAI,CAACC,iBAAiB,EACjD,CACAC,gBAAiBC,CAAAA,QAAQ,CAAE3lE,aAAa,CAAE4lE,YAAY,CAAE,CACtD,MAAMC,YAAeF,CAAAA,QAAAA,EAAU/1F,YAAY//C,MAC3C,CAAA,GAAIg2I,eAAiBD,YAAc,CAAA,CACjC,OAAO,IACT,CACA,MAAMl2H,KAAQswD,CAAAA,aAAAA,EAAetwD,OAAS,IAAI,CAACskB,MAAM,CAACtkB,KAAK,CACvD,MAAMC,MAAAA,CAASqwD,eAAerwD,MAAU,EAAA,IAAI,CAACqkB,MAAM,CAACrkB,MAAM,CAC1D,OAAO,CAACg2H,QAAYj2H,EAAAA,KAAAA,GAAUi2H,SAASj2H,KAAK,EAAIC,SAAWg2H,QAASh2H,CAAAA,MAAM,CAE5Em2H,oBAAAA,CAAqBt9F,YAAY,CAAEu9F,kBAAkB,CAAE/xG,MAAM,CAAEnkC,MAAM,CAAE,CACrE,MAAMgsC,OAAU,CAAA,IAAInG,QAAQ1B,MAAQ,CAAA,CAClC3mC,KAAMi4I,iBACNz1I,CAAAA,MAAAA,CACA6f,MAAOq2H,kBAAqBA,CAAAA,kBAAAA,CAAmBn2F,WAAW,CAAClgC,KAAK,CAAGskB,MAAOtkB,CAAAA,KAAK,CAC/EC,MAAQo2H,CAAAA,kBAAAA,CAAqBA,mBAAmBn2F,WAAW,CAACjgC,MAAM,CAAGqkB,MAAAA,CAAOrkB,MAAM,CAClF4lB,OAAAA,CAAS,KACTkC,SAAWpW,CAAAA,2BAAAA,CACXuW,UAAW3W,aACX6W,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBACZ,GACA,GAAIsqB,YAAAA,CAAc,CAChBA,YAAagH,CAAAA,mBAAmB,EAChChH,CAAAA,YAAAA,CAAaqH,YAAY,CAAGhU,OAC5B2M,CAAAA,aAAamH,aAAa,CAAG,CAC3B9T,OACD,EACH,MAAO,CACL2M,YAAAA,CAAe,IAAI8G,YAAa,CAAA,CAC9BjiD,KAAM,aACNuiD,CAAAA,WAAAA,CAAa/T,QACb9G,KAAO,CAAA,KAAA,CACPkZ,QAAS,KACT0C,CAAAA,WAAAA,CAAa,KACf,CACF,EAAA,CACA,OAAOnI,YACT,CACAg9F,oBAAoBxqF,EAAE,CAAE,CACtB,GAAIA,EAAAA,CAAI,CACNA,EAAGvL,CAAAA,qBAAqB,GACxBuL,EAAG9nB,CAAAA,OAAO,GACZ,CACF,CACAiiE,aAAc,CACZ,MAAMnhE,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAMgyG,SAAW,IAAI,CAACrrG,MAAM,CAC5B,MAAMirG,aAAeI,QAAUp2F,EAAAA,WAAAA,CAAY//C,QAAU,IAAI,CAACmkC,MAAM,CAACyc,gBAAgB,CACjF,GAAI,IAAI,CAACi1F,gBAAgB,CAAC,IAAI,CAACD,iBAAiB,CAAEO,QAAUp2F,EAAAA,WAAAA,CAAag2F,cAAe,CACtF,IAAI,CAACJ,mBAAmB,CAAC,IAAI,CAACC,iBAAiB,CAC/C,CAAA,IAAI,CAACA,iBAAiB,CAAG,IAAI,CAACK,oBAAoB,CAAC,IAAI,CAACL,iBAAiB,CAAEO,QAAUhyG,CAAAA,MAAAA,CAAQ4xG,cAC/F,CACA,MAAMh2F,YAAc,IAAI,CAAC61F,iBAAiB,CAAC71F,WAAW,CACtD5b,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAACkxG,mBAAmB5jG,QAAQ,CAACkO,aACnD,CACA0lD,OAAAA,EAAU,CACR,MAAMthE,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMgyG,QAAAA,CAAW,IAAI,CAACrrG,MAAM,CAC5B,MAAMiV,WAAAA,CAAc,IAAI,CAAC61F,iBAAiB,CAAC71F,WAAW,CACtD,GAAI5b,MAAO2E,CAAAA,QAAQ,CAAE,CACnB3E,MAAAA,CAAOkc,gBAAgB,CAAC81F,QAAAA,CAAU,IAAI,CAACP,iBAAiB,CAAE,IAAM,CAAA,KAAA,CAAA,CAChEzxG,OAAOg6B,cAAc,CAACC,QAAQ,CAAC,IAAI,CAACw3E,iBAAiB,CAAC71F,WAAW,CAACzc,IAAI,EACxE,CAAO,KAAA,CACLa,OAAOkc,gBAAgB,CAAC81F,SAAU,IAAI,CAACP,iBAAiB,CAAE,IAAA,CAAM,OAChEzxG,MAAO6wD,CAAAA,aAAa,CAAC7wD,MAAOwrD,CAAAA,mBAAmB,CAAG,CAAA,CAAA,CAClDxrD,MAAO8wD,CAAAA,WAAW,CAACl1C,WACnB5b,CAAAA,CAAAA,MAAAA,CAAOo2C,EAAE,CAACwM,cAAc,CAAChnC,WAAYzc,CAAAA,IAAI,CAACs9C,SAAS,EACrD,CACF,CACA3+E,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,MAAO,IAAI,CAAC01I,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAAC9qG,MAAM,CAAG,KAC/D,CACF,CAEA,MAAMsrG,iBAAAA,CAAoB,gBAC1B,CAAMC,MAAAA,mBAAAA,SAA4BvxC,WAKhCzhE,OAAU,EAAA,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAACsyG,mBAAmB,CAAC,IAAI,CAACW,iBAAiB,EACjD,CACAT,iBAAiBC,QAAQ,CAAE3lE,aAAa,CAAE,CACxC,MAAMtwD,KAAQswD,CAAAA,aAAAA,EAAetwD,OAAS,IAAI,CAACskB,MAAM,CAACtkB,KAAK,CACvD,MAAMC,MAAAA,CAASqwD,eAAerwD,MAAU,EAAA,IAAI,CAACqkB,MAAM,CAACrkB,MAAM,CAC1D,OAAO,CAACg2H,QAAYj2H,EAAAA,KAAAA,GAAUi2H,SAASj2H,KAAK,EAAIC,SAAWg2H,QAASh2H,CAAAA,MAAM,CAE5Em2H,oBAAAA,CAAqBt9F,YAAY,CAAEu9F,kBAAkB,CAAE/xG,MAAM,CAAEnkC,MAAM,CAAEu2I,OAAO,CAAE,CAC9E,MAAMvqG,QAAU,IAAInG,OAAAA,CAAQ1B,OAAQ,CAClC3mC,IAAAA,CAAM44I,kBACNp2I,MACA6f,CAAAA,KAAAA,CAAOq2H,mBAAqBA,kBAAmBn2F,CAAAA,WAAW,CAAClgC,KAAK,CAAGskB,OAAOtkB,KAAK,CAC/EC,OAAQo2H,kBAAqBA,CAAAA,kBAAAA,CAAmBn2F,WAAW,CAACjgC,MAAM,CAAGqkB,MAAOrkB,CAAAA,MAAM,CAClF4lB,OAAS,CAAA,KAAA,CACTkC,UAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,eACX8W,QAAU5Z,CAAAA,qBAAAA,CACV8Z,SAAU9Z,qBACZ,CAAA,CAAA,CACA,GAAIsqB,YAAc,CAAA,CAChBA,aAAagH,mBAAmB,EAAA,CAChC,GAAI42F,OAAS,CAAA,CACX59F,aAAakH,YAAY,CAAG7T,QAC9B,CAAO,KAAA,CACL2M,aAAaqH,YAAY,CAAGhU,OAC5B2M,CAAAA,YAAAA,CAAamH,aAAa,CAAG,CAC3B9T,SACD,CAEL,MAAO,CACL2M,YAAAA,CAAe,IAAI8G,YAAa,CAAA,CAC9BjiD,KAAM,aACNuiD,CAAAA,WAAAA,CAAaw2F,QAAU,IAAOvqG,CAAAA,OAAAA,CAC9BwU,YAAa+1F,OAAUvqG,CAAAA,OAAAA,CAAU,KACjC9G,KAAO,CAAA,CAACqxG,OACRn4F,CAAAA,OAAAA,CAASja,MAAO+xC,CAAAA,eAAe,CAC/Bp1B,WAAa,CAAA,KACf,GACF,CACA,OAAOnI,YACT,CACAg9F,mBAAAA,CAAoBxqF,EAAE,CAAE,CACtB,GAAIA,EAAI,CAAA,CACNA,GAAGvL,qBAAqB,EAAA,CACxBuL,GAAG9nB,OAAO,GACZ,CACF,CACAmiE,MAAAA,EAAS,CACP,MAAM2nC,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMhpG,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMqyG,aAAAA,CAAgBrJ,QAAQx0F,YAAgBxU,EAAAA,MAAAA,CAAOkZ,UAAU,CAC/D,IAAIo5F,eAAiB,IACrB,CAAA,IAAIz2I,OAASw2I,aAAcp4F,CAAAA,OAAO,CAAG9qB,wBAA2BD,CAAAA,iBAAAA,CAChE,GAAI8Q,MAAO2E,CAAAA,QAAQ,CAAE,CACnB,MAAM4tG,WAAaF,aAAcz5F,CAAAA,OAAO,CACxC,GAAI25F,UAAAA,CAAa,EAAG,CAClB12I,MAAAA,CAASozB,iBACTqjH,cAAiB,CAAA,MACnB,CACF,CACA,MAAMtmE,cAAgBg9D,MAAOx0F,CAAAA,YAAY,EAAE6H,WAAe2sF,EAAAA,MAAAA,CAAOx0F,YAAY,EAAEoH,WAAAA,CAC/E,GAAI,IAAI,CAAC81F,gBAAgB,CAAC,IAAI,CAACS,iBAAiB,CAAEnmE,eAAgB,CAChE,IAAI,CAACwlE,mBAAmB,CAAC,IAAI,CAACW,iBAAiB,CAC/C,CAAA,IAAI,CAACA,iBAAiB,CAAG,IAAI,CAACL,oBAAoB,CAAC,IAAI,CAACK,iBAAiB,CAAEnJ,MAAAA,CAAOx0F,YAAY,CAAExU,MAAAA,CAAQnkC,OAAQy2I,cAClH,EAAA,CACA,MAAM12F,WAAc02F,CAAAA,cAAAA,CAAiB,IAAI,CAACH,iBAAiB,CAAC91F,WAAW,CAAG,IAAI,CAAC81F,iBAAiB,CAACv2F,WAAW,CAC5G5b,OAAO1iC,KAAK,CAAC8iC,OAAO,CAAC6xG,iBAAAA,CAAAA,CAAmBvkG,QAAQ,CAACkO,WAAAA,EACnD,CACA0lD,OAAU,EAAA,CACR,MAAMthE,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,GAAIA,MAAOoZ,CAAAA,QAAQ,EAAIpZ,MAAOwU,CAAAA,YAAY,CAACoE,OAAO,CAAG,EAAG,CACtD,MAAMjtC,IAAMq0B,MAAOwU,CAAAA,YAAY,CAACrV,IAAI,CAAC8kD,cAAc,CACnD,MAAMzpB,KAAO,IAAI,CAAC23E,iBAAiB,CACnCnyG,OAAOwU,YAAY,CAAGgmB,KACtBx6B,MAAOuwD,CAAAA,WAAW,EAClB,CAAA,IAAI,CAAC4hD,iBAAiB,CAAChzG,IAAI,CAACsnD,eAAe,CAACzmD,MAAAA,CAAQr0B,IAAK6uD,IAAKr7B,CAAAA,IAAI,CAAC8kD,cAAc,CAAE,IAAI,CAACkuD,iBAAiB,CAAEnyG,MAAOo2C,CAAAA,EAAE,CAAC6Q,gBAAgB,EACvI,MAAO,CACLjnD,MAAAA,CAAOkc,gBAAgB,CAAClc,MAAAA,CAAOwU,YAAY,CAAE,IAAI,CAAC29F,iBAAiB,CAAE,MAAO,IAC9E,EAAA,CACF,CArFAr0I,WAAYkiC,CAAAA,MAAM,CAAEgpG,MAAM,CAAC,CACzB,KAAK,CAAChpG,QAAS,IAAI,CAACmyG,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAACnJ,MAAM,CAAG,IAC5D,CAAA,IAAI,CAACA,MAAM,CAAGA,OAChB,CAmFF,CAEA,MAAMwJ,kBAAAA,CACJ,IAAItjG,IAAO,EAAA,CACT,GAAI,IAAI,CAACujG,KAAK,GAAK50I,SAAAA,CAAW,CAC5B,MAAMD,GAAAA,CAAM,CAAC,EAAE,IAAI,CAAC80I,eAAe,CAAC,CAAC,EAAE,IAAI,CAAClhE,WAAW,CAAC,CAAC,EAAE,IAAI,CAACmhE,gBAAgB,CAAC,CAAC,EAAE,IAAI,CAACC,GAAG,CAAC,CAAC,EAAE,IAAI,CAACC,WAAW,CAAC,CAAC,EAAE,IAAI,CAACrZ,mBAAmB,CAAC,CAAC,CAC9I,IAAI,CAACiZ,KAAK,CAAGzjG,QAASpxC,CAAAA,GAAAA,EACxB,CACA,OAAO,IAAI,CAAC60I,KACd,CACA,IAAI31E,OAAAA,EAAU,CACZ,MAAMA,OAAAA,CAAU,IAAI,CAACg2E,QAAQ,CAC7B,GAAI,IAAI,CAACC,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAAG,KAAA,CACrBj2E,QAAQn+D,KAAK,EAAA,CACb,GAAI,IAAI,CAACq0I,oBAAoB,CAAEl2E,OAAAA,CAAQx+D,GAAG,CAAC,uBAAA,CAAyB,MACpEw+D,OAAQx+D,CAAAA,GAAG,CAAC,KAAO,CAAA,IAAI,CAAC20I,IAAI,CAAC7kC,WAAW,EACxCtxC,CAAAA,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,SAAA,CAAW6xH,YAAY,CAAC,IAAI,CAAC+iB,YAAY,CAAC,EACtDp2E,OAAQx+D,CAAAA,GAAG,CAAC,OAASqxH,CAAAA,UAAU,CAAC,IAAI,CAACwjB,iBAAiB,CAAC,EACzD,CACA,OAAOr2E,OACT,CACAi6D,WAAY,CACV,IAAI,CAAC0b,KAAK,CAAG50I,SACb,CAAA,IAAI,CAACk1I,aAAa,CAAG,KACvB,CACA,IAAIH,IAAIplI,IAAI,CAAE,CACZ,GAAI,IAAI,CAACylI,IAAI,GAAKzlI,KAAM,CACtB,IAAI,CAACylI,IAAI,CAAGzlI,KACZ,IAAI,CAACupH,SAAS,GAChB,CACF,CACA,IAAI6b,GAAAA,EAAM,CACR,OAAO,IAAI,CAACK,IACd,CACA,IAAIJ,WAAAA,CAAYn1I,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC01I,YAAY,GAAK11I,KAAAA,CAAO,CAC/B,IAAI,CAAC01I,YAAY,CAAG11I,KAAAA,CACpB,IAAI,CAACq5H,SAAS,GAChB,CACF,CACA,IAAI8b,WAAc,EAAA,CAChB,OAAO,IAAI,CAACO,YAAY,CAE1B,IAAIV,eAAgBh1I,CAAAA,KAAK,CAAE,CACzB,IAAI,CAAC21I,wBAAwB,CAAG,IAChC,CAAA,GAAI,IAAI,CAACC,gBAAgB,GAAK51I,KAAAA,CAAO,CACnC,IAAI,CAAC41I,gBAAgB,CAAG51I,KAAAA,CACxB,IAAI,CAACq5H,SAAS,GAChB,CACF,CACA,IAAI2b,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACY,gBAAgB,CAE9B,IAAI9hE,WAAY9zE,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAACw1I,YAAY,GAAKx1I,KAAO,CAAA,CAC/B,IAAI,CAACw1I,YAAY,CAAGx1I,KACpB,CAAA,IAAI,CAACq5H,SAAS,GAChB,CACF,CACA,IAAIvlD,aAAc,CAChB,OAAO,IAAI,CAAC0hE,YAAY,CAE1B,IAAIP,iBAAiBj1I,KAAK,CAAE,CAC1B,GAAI,IAAI,CAAC61I,iBAAiB,GAAK71I,MAAO,CACpC,IAAI,CAAC61I,iBAAiB,CAAG71I,MACzB,IAAI,CAACq5H,SAAS,GAChB,CACF,CACA,IAAI4b,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACY,iBACd,CACA,IAAI/Z,mBAAAA,CAAoB97H,KAAK,CAAE,CAC7B,GAAI,IAAI,CAACs1I,oBAAoB,GAAKt1I,KAAO,CAAA,CACvC,IAAI,CAACs1I,oBAAoB,CAAGt1I,KAC5B,CAAA,IAAI,CAACq5H,SAAS,GAChB,CACF,CACA,IAAIyC,qBAAsB,CACxB,OAAO,IAAI,CAACwZ,oBAAoB,CAElC,IAAIG,mBAAoB,CACtB,MAAMK,YAAc,IAAI,CAACF,gBAAgB,GAAK5jB,UAAAA,EAAc,CAAC,IAAI,CAAC6jB,iBAAiB,CACnF,OAAOC,YAAc9jB,UAAaD,CAAAA,UACpC,CACA3xH,WAAa,EAAA,CACX,IAAI,CAACw1I,gBAAgB,CAAG5jB,UACxB,CAAA,IAAI,CAACwjB,YAAY,CAAGtjB,cACpB,CAAA,IAAI,CAAC2jB,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACH,YAAY,CAAG,KACpB,CAAA,IAAI,CAACH,IAAI,CAAGzoB,QACZ,CAAA,IAAI,CAACwoB,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACF,QAAQ,CAAG,IAAI30I,GACpB,CAAA,IAAI,CAAC40I,aAAa,CAAG,KACvB,CACF,CAEA,MAAMU,aAAe,IAAIzhI,IAAAA,CACzB,MAAM0hI,SAAY,CAAA,IAAI1hI,KACtB,MAAM2hI,QAAAA,CAAW,IAAI3hI,IACrB,CAAA,MAAM4hI,gBAAkB,IAAIt7H,IAAAA,CAC5B,MAAMu7H,cAAiB,CAAA,CACrB,IAAI7hI,IACJ,CAAA,IAAIA,KACJ,IAAIA,IAAAA,CACJ,IAAIA,IACJ,CAAA,IAAIA,KACJ,IAAIA,IAAAA,CACJ,IAAIA,IACJ,CAAA,IAAIA,KACL,CACD,MAAM8hI,OAuEJ50G,OAAU,EAAA,CACR,IAAI,CAAC60G,mBAAmB,EAAE70G,OAC1B,EAAA,CAAA,IAAI,CAAC60G,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,mBAAmB,EAAE90G,OAC1B,EAAA,CAAA,IAAI,CAAC80G,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,YAAY,CAACj+I,MAAM,CAAG,EAC7B,CACAk+I,oBAAAA,CAAqBC,WAAW,CAAEC,OAAO,CAAEC,OAAO,CAAEpxG,aAAa,CAAE,CACjE,GAAI,IAAI,CAACqxG,sBAAsB,GAAKrxG,aAAAA,CAAe,CACjD,IAAI,CAACqxG,sBAAsB,CAAGrxG,aAAAA,CAC9B,IAAI,CAACsxG,iBAAiB,CAACz/I,IAAI,CAAC,IAAI,CAAC0/I,gBAAgB,EAAIL,YACrD,CAAA,IAAI,CAACK,gBAAL,GAAA,IAAI,CAACA,gBAAqB,CAAA,IAAIl8H,MAC9B,IAAI,CAACk8H,gBAAgB,CAAC1/I,IAAI,CAACq/I,WAC3B,CAAA,CAAA,IAAI,CAACM,gBAAgB,CAAC34H,MAAM,CAACq4H,WAAAA,CAC7B,CAAA,IAAI,CAACO,QAAQ,CAAC,CAAA,CAAE,CAAG,IAAI,CAACA,QAAQ,CAAC,CAAA,CAAE,CACnC,IAAI,CAACA,QAAQ,CAAC,EAAE,CAAG,IAAI,CAACA,QAAQ,CAAC,EAAE,CACnC,IAAI,CAACA,QAAQ,CAAC,CAAE,CAAA,CAAGN,OACnB,CAAA,IAAI,CAACM,QAAQ,CAAC,EAAE,CAAGL,QACrB,CACF,CACA,IAAI1jD,mBAAoB,CACtB,MAAMn5C,KAAO,IAAI,CAACm9F,iBAAiB,CAAG,IAAI,CAACta,WAAW,CAAG,IAAI,CAACua,KAAK,CACnE,OAAOp9F,IAAAA,CAAKptC,CAAC,GAAK,CAAA,EAAKotC,KAAK1lC,CAAC,GAAK,GAAK0lC,IAAKvlC,CAAAA,CAAC,GAAK,CAAKulC,EAAAA,IAAAA,CAAKliC,CAAC,GAAK,CACpE,CACA,IAAIu/H,WAAAA,CAAYC,QAAQ,CAAE,CACxB,GAAI,IAAI,CAACC,YAAY,GAAKD,QAAAA,CAAU,CAClC,IAAI,CAACC,YAAY,CAAGD,QACpB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAIH,aAAc,CAChB,OAAO,IAAI,CAAC31C,EAAE,EAAE+1C,MAAS,CAAA,IAAI,CAACC,aAAa,CAACL,WAAW,CAAG,IAAI,CAACE,YACjE,CACA,IAAII,eAAAA,CAAgBL,QAAQ,CAAE,CAC5B,GAAI,IAAI,CAACM,gBAAgB,GAAKN,QAAAA,CAAU,CACtC,IAAI,CAACM,gBAAgB,CAAGN,QACxB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAIG,iBAAkB,CACpB,OAAO,IAAI,CAACC,gBAAgB,CAE9B,IAAIC,mBAAoBP,CAAAA,QAAQ,CAAE,CAChC,IAAI,CAACQ,oBAAoB,CAAGR,QAC5B,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACA,IAAIK,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACC,oBAAoB,CAElC,IAAIC,kBAAmBT,CAAAA,QAAQ,CAAE,CAC/B,IAAI,CAACU,mBAAmB,CAAGV,SAC7B,CACA,IAAIS,oBAAqB,CACvB,OAAO,IAAI,CAACC,mBAAmB,CAEjC,IAAIvmD,WAAW6lD,QAAQ,CAAE,CACvB,IAAI,CAACW,WAAW,CAAC3gJ,IAAI,CAACggJ,QACxB,EAAA,CACA,IAAI7lD,UAAa,EAAA,CACf,OAAO,IAAI,CAACwmD,WAAW,CAEzB,IAAIC,gBAAiBZ,CAAAA,QAAQ,CAAE,CAC7B,IAAI,CAACa,iBAAiB,CAAGb,SAC3B,CACA,IAAIY,kBAAmB,CACrB,OAAO,IAAI,CAACC,iBAAiB,CAE/B,IAAI/rF,WAAWkrF,QAAQ,CAAE,CACvB,IAAI,CAACc,WAAW,CAAGd,SACrB,CACA,IAAIlrF,UAAAA,EAAa,CACf,OAAO,IAAI,CAACgsF,WACd,CACA,IAAIC,gBAAAA,CAAiBf,QAAQ,CAAE,CAC7B,IAAI,CAACgB,iBAAiB,CAAGhB,SAC3B,CACA,IAAIe,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACC,iBAAiB,CAE/B,IAAI3rF,YAAa2qF,CAAAA,QAAQ,CAAE,CACzB,IAAI,CAACiB,aAAa,CAAGjB,SACvB,CACA,IAAI3qF,cAAe,CACjB,OAAO,IAAI,CAAC4rF,aAAa,CAE3B,IAAIC,mBAAmBlB,QAAQ,CAAE,CAC/B,IAAI,CAACmB,mBAAmB,CAAGnB,SAC7B,CACA,IAAIkB,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACC,mBACd,CACA,IAAIC,SAAAA,CAAUpB,QAAQ,CAAE,CACtB,IAAI,CAACqB,UAAU,CAAGrB,SACpB,CACA,IAAIoB,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,OAAQtB,CAAAA,QAAQ,CAAE,CACpB,GAAI,IAAI,CAACuB,QAAQ,GAAKvB,SAAU,CAC9B,IAAI,CAACuB,QAAQ,CAAGvB,QAChB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAIoB,OAAU,EAAA,CACZ,OAAO,IAAI,CAACl3C,EAAE,EAAE+1C,MAAAA,CAAS,IAAI,CAACC,aAAa,CAACkB,OAAO,CAAG,IAAI,CAACC,QAAQ,CAErE,IAAIC,UAAUxB,QAAQ,CAAE,CACtB,IAAI,CAACyB,UAAU,CAAGzB,SACpB,CACA,IAAIwB,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAI99H,GAAAA,CAAIq8H,QAAQ,CAAE,CAChB,GAAI,IAAI,CAAC0B,IAAI,GAAK1B,QAAAA,CAAU,CAC1B,IAAI,CAAC0B,IAAI,CAAG1B,QACZ,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAIv8H,KAAM,CACR,OAAO,IAAI,CAACymF,EAAE,EAAE+1C,MAAS,CAAA,IAAI,CAACC,aAAa,CAACz8H,GAAG,CAAG,IAAI,CAAC+9H,IAAI,CAE7D,IAAIC,cAAe3B,CAAAA,QAAQ,CAAE,CAC3B,IAAI,CAAC4B,eAAe,CAAG5B,SACzB,CACA,IAAI2B,gBAAiB,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7B,IAAIC,cAAc7B,QAAQ,CAAE,CAC1B,GAAI,IAAI,CAAC8B,cAAc,GAAK9B,SAAU,CACpC,IAAI,CAAC8B,cAAc,CAAG9B,QACtB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAI2B,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACz3C,EAAE,EAAE+1C,MAAAA,CAAS,IAAI,CAACC,aAAa,CAACyB,aAAa,CAAG,IAAI,CAACC,cAAc,CAEjF,IAAIlc,OAAOoa,QAAQ,CAAE,CACnB,IAAI,CAAC+B,OAAO,CAAG/B,QAAAA,CAASl+I,KAAK,CAAC,CAAA,CAC9B,CAAA,IAAI,CAACkgJ,UAAU,CAAG,IAAIhuI,IAAI,IAAI,CAAC+tI,OAAO,EACxC,CACA,IAAInc,MAAAA,EAAS,CACX,OAAO,IAAI,CAACmc,OAAO,CAErB,IAAIE,WAAY,CACd,OAAO,IAAI,CAACD,UAAU,CAExB,IAAIE,SAASlC,QAAQ,CAAE,CACrB,GAAI,IAAI,CAACmC,SAAS,GAAKnC,SAAU,CAC/B,IAAI,CAACmC,SAAS,CAAGnC,QACjB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAIgC,QAAW,EAAA,CACb,OAAO,IAAI,CAAC93C,EAAE,EAAE+1C,MAAAA,CAAS,IAAI,CAACC,aAAa,CAAC8B,QAAQ,CAAG,IAAI,CAACC,SAAS,CAEvE,IAAI9Q,KAAK2O,QAAQ,CAAE,CACjB,IAAI,CAACoC,KAAK,CAAGpC,SACf,CACA,IAAI3O,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC+Q,KACd,CACA,IAAIC,WAAAA,CAAYrC,QAAQ,CAAE,CACxB,GAAI,IAAI,CAACsC,YAAY,GAAKtC,QAAAA,CAAU,CAClC,IAAI,CAACsC,YAAY,CAAGtC,QACpB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAImC,aAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAI9vG,WAAWwtG,QAAQ,CAAE,CACvB,GAAI,IAAI,CAACuC,WAAW,GAAKvC,SAAU,CACjC,IAAI,CAACuC,WAAW,CAAGvC,QACnB,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAI1tG,UAAa,EAAA,CACf,OAAO,IAAI,CAAC+vG,WAAW,CAEzB,IAAIC,gBAAmB,EAAA,CACrB,IAAI,CAACC,yBAAyB,GAC9B,OAAO,IAAI,CAACC,QACd,CACA,IAAIhgG,IAAAA,CAAKs9F,QAAQ,CAAE,CACjB,IAAI,CAACF,KAAK,CAAC9/I,IAAI,CAACggJ,UAClB,CACA,IAAIt9F,MAAO,CACT,OAAO,IAAI,CAACo9F,KAAK,CAEnB,IAAIpgG,aAAasgG,QAAQ,CAAE,CACzB,IAAI,CAAC2C,aAAa,CAAG3C,SACvB,CACA,IAAItgG,YAAe,EAAA,CACjB,OAAO,IAAI,CAACijG,aAAa,CAE3B,IAAIpd,WAAYya,CAAAA,QAAQ,CAAE,CACxB,IAAI,CAAC4C,YAAY,CAAC5iJ,IAAI,CAACggJ,QAAAA,EACzB,CACA,IAAIza,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACqd,YACd,CACA,IAAIC,UAAAA,EAAa,CACf,GAAI,IAAI,CAACC,aAAa,CAAE,CACtB,MAAMC,GAAAA,CAAM,IAAI,CAACX,KAAK,CAACxZ,iBAAiB,EAAA,CACxC,IAAI,CAACoa,QAAQ,CAAChjJ,IAAI,CAAC+iJ,KAAK/7H,MAAM,EAC9B,CAAA,IAAI,CAAC87H,aAAa,CAAG,MACvB,CACA,OAAO,IAAI,CAACE,QACd,CACA,IAAIC,QAAAA,CAASjD,QAAQ,CAAE,CACrB,IAAI,CAACkD,SAAS,CAAGlD,SACnB,CACA,IAAIiD,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,WAAYnD,CAAAA,QAAQ,CAAE,CACxB,IAAI,CAACoD,YAAY,CAAGpD,SACtB,CACA,IAAImD,aAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,QAAQrD,QAAQ,CAAE,CACpB,IAAI,CAACsD,QAAQ,CAAGtD,SAClB,CACA,IAAIqD,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QACd,CACA,IAAIl5C,EAAAA,CAAG41C,QAAQ,CAAE,CACf,GAAI,IAAI,CAACuD,GAAG,GAAKvD,QAAAA,CAAU,CACzB,IAAI,CAACuD,GAAG,CAAGvD,QACX,CAAA,IAAI,CAACE,aAAa,CAAG,KACvB,CACF,CACA,IAAI91C,IAAK,CACP,OAAO,IAAI,CAACm5C,GAAG,CAEjBhtI,KAAAA,EAAQ,CACN,OAAO,IAAIyoI,SAASh/I,IAAI,CAAC,IAAI,CAC/B,CACAA,KAAKgpB,KAAK,CAAE,CACV,IAAI,CAACi3H,YAAY,CAAGj3H,KAAAA,CAAMi3H,YAAY,CACtC,IAAI,CAACsB,QAAQ,CAAGv4H,KAAAA,CAAMu4H,QACtB,CAAA,IAAI,CAACG,IAAI,CAAG14H,KAAAA,CAAM04H,IAAI,CACtB,IAAI,CAACI,cAAc,CAAG94H,KAAM84H,CAAAA,cAAc,CAC1C,IAAI,CAACK,SAAS,CAAGn5H,MAAMm5H,SACvB,CAAA,IAAI,CAAC/B,aAAa,CAACL,WAAW,CAAG/2H,KAAMo3H,CAAAA,aAAa,CAACL,WACrD,CAAA,IAAI,CAACK,aAAa,CAACkB,OAAO,CAAGt4H,KAAMo3H,CAAAA,aAAa,CAACkB,OACjD,CAAA,IAAI,CAAClB,aAAa,CAACz8H,GAAG,CAAGqF,KAAMo3H,CAAAA,aAAa,CAACz8H,GAC7C,CAAA,IAAI,CAACy8H,aAAa,CAACyB,aAAa,CAAG74H,KAAMo3H,CAAAA,aAAa,CAACyB,aACvD,CAAA,IAAI,CAACzB,aAAa,CAAC8B,QAAQ,CAAGl5H,KAAMo3H,CAAAA,aAAa,CAAC8B,QAClD,CAAA,IAAI,CAAC7B,eAAe,CAAGr3H,KAAAA,CAAMq3H,eAAe,CAC5C,IAAI,CAACE,mBAAmB,CAAGv3H,KAAMu3H,CAAAA,mBAAmB,CACpD,IAAI,CAACE,kBAAkB,CAAGz3H,MAAMy3H,kBAChC,CAAA,IAAI,CAACtmD,UAAU,CAAGnxE,KAAAA,CAAMmxE,UAAU,CAClC,IAAI,CAACymD,gBAAgB,CAAG53H,KAAM43H,CAAAA,gBAAgB,CAC9C,IAAI,CAAC9rF,UAAU,CAAG9rC,MAAM8rC,UACxB,CAAA,IAAI,CAACisF,gBAAgB,CAAG/3H,KAAAA,CAAM+3H,gBAAgB,CAC9C,IAAI,CAAC1rF,YAAY,CAAGrsC,KAAMqsC,CAAAA,YAAY,CACtC,IAAI,CAAC6rF,kBAAkB,CAAGl4H,MAAMk4H,kBAChC,CAAA,IAAI,CAACE,SAAS,CAAGp4H,KAAAA,CAAMo4H,SAAS,CAChC,IAAI,CAACI,SAAS,CAAGx4H,KAAMw4H,CAAAA,SAAS,CAChC,IAAI,CAACG,cAAc,CAAG34H,MAAM24H,cAC5B,CAAA,IAAI,CAAC/b,MAAM,CAAG58G,KAAAA,CAAM48G,MAAM,CAC1B,IAAI,CAACyc,WAAW,CAAGr5H,MAAMq5H,WACzB,CAAA,IAAI,CAAC7vG,UAAU,CAAGxpB,KAAAA,CAAMwpB,UAAU,CAClC,IAAI,CAACkQ,IAAI,CAAG15B,KAAM05B,CAAAA,IAAI,CACtB,IAAI,CAAChD,YAAY,CAAG12B,MAAM02B,YAC1B,CAAA,IAAI,CAAC6lF,WAAW,CAAGv8G,KAAAA,CAAMu8G,WAAW,CACpC,IAAI,CAAC0d,QAAQ,CAAGj6H,KAAMi6H,CAAAA,QAAQ,CAC9B,IAAI,CAACI,OAAO,CAAGr6H,MAAMq6H,OACrB,CAAA,IAAI,CAACF,WAAW,CAAGn6H,KAAAA,CAAMm6H,WAAW,CACpC,IAAI,CAACnf,cAAc,CAAGh7G,KAAMg7G,CAAAA,cAAc,CAC1C,IAAI,CAACwf,MAAM,CAAGx6H,MAAMw6H,MACpB,CAAA,IAAI,CAACtD,aAAa,CAAG,IAAA,CACrB,OAAO,IACT,CACAuD,0BAA2Bv4G,CAAAA,MAAM,CAAEgtD,MAAM,CAAE,CACzC,GAAIA,MAAAA,CAAQ,CACV,GAAI,CAAC,IAAI,CAAC+mD,mBAAmB,CAAE,CAC7B,IAAI,CAACA,mBAAmB,CAAG,IAAIxC,oBAAoBvxG,MACrD,EAAA,CACF,MAAO,CACL,IAAI,CAAC+zG,mBAAmB,EAAE70G,SAC1B,CAAA,IAAI,CAAC60G,mBAAmB,CAAG,KAC7B,CACF,CACAyE,2BAA2Bx4G,MAAM,CAAEy4G,QAAQ,CAAEzrD,MAAM,CAAE,CACnD,GAAIA,OAAQ,CACV,GAAI,CAAC,IAAI,CAACgnD,mBAAmB,CAAE,CAC7B,IAAI,CAACA,mBAAmB,CAAG,IAAI9B,mBAAAA,CAAoBlyG,OAAQ,IAAI,EACjE,CACF,CAAO,KAAA,CACL,IAAI,CAACg0G,mBAAmB,EAAE90G,OAC1B,EAAA,CAAA,IAAI,CAAC80G,mBAAmB,CAAG,KAC7B,CACF,CACA0E,kBAAqB,EAAA,CACnB,GAAI,IAAI,CAAC1D,aAAa,EAAI,IAAI,CAAC4C,aAAa,EAAI,IAAI,CAACe,iBAAiB,CAAE,CACtE,IAAI,CAACC,YAAY,CAACtlI,IAAI,CAAC,IAAI,CAACgkI,gBAAgB,CAAE,IAAI,CAACK,UAAU,CAC7D,CAAA,IAAI,CAACgB,iBAAiB,CAAG,MAC3B,CACF,CACAE,aAAAA,CAAcC,UAAU,CAAEC,EAAE,CAAEt8I,EAAE,CAAEu8I,YAAc,IAAIhnI,IAAM,CAAE,CAC1D,IAAI,CAAC0mI,kBAAkB,EAAA,CACvB,IAAI,CAACE,YAAY,CAAC1+H,cAAc,CAAC4+H,WAAYE,WAC7C,CAAA,CAAA,MAAMC,IAAM,IAAI,CAACL,YAAY,CAAC7oI,IAAI,CAClC,MAAMuF,CAAAA,CAAIwjI,WAAW1uI,CAAC,CAAG6uI,GAAG,CAAC,CAAA,CAAE,CAAGH,UAAWhnI,CAAAA,CAAC,CAAGmnI,GAAG,CAAC,EAAE,CAAGH,UAAAA,CAAW7mI,CAAC,CAAGgnI,GAAG,CAAC,EAAG,CAAA,CAAG,EAAIA,GAAG,CAAC,GAAG,CAC9FD,YAAY5uI,CAAC,CAAG,CAAC4uI,WAAAA,CAAY5uI,CAAC,CAAGkL,CAAAA,CAAI,CAAA,EAAK,EAC1C0jI,CAAAA,WAAYlnI,CAAAA,CAAC,CAAG,CAAC,EAAIknI,WAAYlnI,CAAAA,CAAC,CAAGwD,CAAAA,EAAK,GAC1C,KAAM,CAAElL,EAAGqI,EAAE,CAAEX,EAAGY,EAAE,CAAET,EAAGgO,EAAE,CAAE3K,EAAG4jI,EAAE,CAAE,CAAG,IAAI,CAACtE,KAAK,CACjDoE,YAAY5uI,CAAC,CAAG4uI,YAAY5uI,CAAC,CAAG6V,GAAK84H,EAAKtmI,CAAAA,EAAAA,CAAKsmI,EAC/CC,CAAAA,WAAAA,CAAYlnI,CAAC,CAAGknI,WAAAA,CAAYlnI,CAAC,CAAGonI,EAAAA,CAAKz8I,GAAK,CAAC,EAAIiW,EAAKwmI,CAAAA,EAAC,EAAKz8I,EAC1D,CAAA,OAAOu8I,WACT,CACAG,aAAAA,CAAc/uI,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE8mI,EAAE,CAAEt8I,EAAE,CAAEq8I,UAAa,CAAA,IAAI9mI,IAAM,CAAE,CACtD,KAAM,CAAE5H,CAAAA,CAAGqI,EAAE,CAAEX,CAAAA,CAAGY,EAAE,CAAET,CAAAA,CAAGgO,EAAE,CAAE3K,CAAAA,CAAG4jI,EAAE,CAAE,CAAG,IAAI,CAACtE,KAAK,CACjD,MAAMwE,KAAAA,CAAQ,IAAI,CAAChD,OAAO,CAAG,IAAI,CAACY,QAAQ,CAC1CvD,YAAan1I,CAAAA,GAAG,CAAC,CAAC8L,EAAIqI,EAAKsmI,CAAAA,EAAC,GAAM94H,EAAAA,CAAK84H,EAAC,CAAI,CAAA,CAAA,CAAI,CAACjnI,CAAAA,CAAI,CAAC,CAAA,CAAIY,GAAKwmI,EAAC,EAAKz8I,EAAC,GAAMy8I,GAAKz8I,EAAC,CAAA,CAAIwV,EAAImnI,KAC1F3F,CAAAA,CAAAA,YAAAA,CAAa5nI,SAAS,CAAC,CAAA,CAAA,CACvB4nI,aAAa9/H,GAAG,CAAC3B,KAAKgC,GAAG,CAAA,CACzB,GAAI,IAAI,CAACqjI,WAAW,GAAK1oB,sBAAAA,CAAwB,CAC/Cr2G,IAAKC,CAAAA,uBAAuB,CAACm7H,SAAW,CAAA,IAAI,CAACj7H,GAAG,CAAE,IAAI,CAACo8H,WAAW,CAAE,IAAI,CAACmC,QAAQ,CAAE,IAAI,CAACL,aAAa,CACrGjD,CAAAA,SAAUtpI,CAAAA,CAAC,EAAIqpI,YAAarpI,CAAAA,CAAC,CAC7BspI,SAAAA,CAAU5hI,CAAC,EAAI2hI,YAAAA,CAAa3hI,CAAC,CAC7B,MAAMunI,QAAU,IAAI,CAACnC,KAAK,CAACxZ,iBAAiB,EAC5CgW,CAAAA,SAAAA,CAAUzhI,CAAC,CAAG,CAAC,IAAI,CAAC+kI,QAAQ,CAC5BqC,OAAQn/H,CAAAA,cAAc,CAACw5H,SAAWC,CAAAA,QAAAA,CAAAA,CAClC,MAAM2F,SAAY,CAAA,IAAI,CAACpC,KAAK,CAAC72B,WAAW,EACxCy4B,CAAAA,UAAAA,CAAWllI,IAAI,CAAC+/H,QAAAA,CAAU2F,WAC1BR,UAAW3iJ,CAAAA,SAAS,GACpB2iJ,UAAWjtI,CAAAA,SAAS,CAACoG,CACrB6mI,CAAAA,CAAAA,UAAAA,CAAWzyI,GAAG,CAACizI,SAAAA,EACjB,MAAO,CACL,IAAI,CAACZ,kBAAkB,EAAA,CACvB9E,gBAAgB9+I,IAAI,CAAC,IAAI,CAAC8jJ,YAAY,EAAE98H,MAAM,EAAA,CAC9C83H,gBAAgB15H,cAAc,CAACu5H,aAAcqF,UAC/C,EAAA,CACA,OAAOA,UACT,CACAvB,2BAA4B,CAC1B,GAAI,IAAI,CAACvC,aAAa,CAAE,CACtB,GAAI,IAAI,CAACqC,WAAW,GAAK1oB,sBAAwB,CAAA,CAC/C,IAAI,CAAC6oB,QAAQ,CAACz8H,cAAc,CAAC,IAAI,CAACtC,GAAG,CAAE,IAAI,CAACo8H,WAAW,CAAE,IAAI,CAACmC,QAAQ,CAAE,IAAI,CAACZ,OAAO,CAAE,IAAI,CAACO,aAAa,CAAA,CACxG,IAAI,CAAC4C,cAAc,CAACzkJ,IAAI,CAAC,IAAI,CAAC0iJ,QAAQ,EACxC,CAAA,KAAO,CACL,MAAM1lI,CAAAA,CAAI,IAAI,CAACslI,YAAY,CAC3B,MAAMhtI,CAAAA,CAAI0H,EAAI,IAAI,CAAC+iI,WAAW,CAC9B,IAAI,CAAC2C,QAAQ,CAACx8H,QAAQ,CAAC,CAAC5Q,EAAGA,CAAG,CAAA,CAAC0H,EAAGA,CAAG,CAAA,IAAI,CAACklI,QAAQ,CAAE,IAAI,CAACZ,OAAO,EAChE,IAAI,CAACmD,cAAc,CAACx+H,cAAc,CAAC,IAAI,CAACtC,GAAG,CAAE,IAAI,CAACo8H,WAAW,CAAE,IAAI,CAACmC,QAAQ,CAAE,IAAI,CAACZ,OAAO,EAC5F,CACA,IAAI,CAACpB,aAAa,CAAG,MACvB,CACF,CACAwE,yBAA4B,EAAA,CAC1B,IAAI,CAACjC,yBAAyB,GAC9B,OAAO,IAAI,CAACgC,cACd,CACAE,WAAc,EAAA,CACZ,MAAMC,KAAQpkJ,CAAAA,IAAAA,CAAKoV,IAAI,CAAC,IAAI,CAACstI,SAAS,CAAG,IAAI,CAACA,SAAS,CAAG,IAAI,CAACI,QAAQ,CAAG,GAAA,CAAQ,IAAI,CAACF,YAAY,EACnG,OAAO,CAAA,EAAO5iJ,IAAKkV,CAAAA,GAAG,CAAC,CAAKkvI,CAAAA,KAAAA,CAAAA,CAAS,GAAE,CACzC,CACAC,cAAcrzH,MAAM,CAAE,CACpB,GAAI,IAAI,CAAC+wH,WAAW,GAAK1oB,uBAAwB,CAC/C,MAAM/7G,SAAW,IAAI,CAACskI,KAAK,CAAC72B,WAAW,GAAGztG,QAAQ,CAAC0T,OAAOpF,MAAM,CAAA,CAChE,GAAItO,QAAW0T,CAAAA,MAAAA,CAAO/U,MAAM,CAAE,CAC5B,OAAO,CACT,CACA,MAAMqoI,SAAYtkJ,CAAAA,IAAAA,CAAKooB,IAAI,CAAC4I,MAAAA,CAAO/U,MAAM,CAAGqB,QAAAA,CAAAA,CAC5C,MAAMinI,gBAAmBvkJ,CAAAA,IAAAA,CAAKujB,GAAG,CAAC+gI,SAAAA,CAAAA,CAClC,MAAME,gBAAmBxkJ,CAAAA,IAAAA,CAAKujB,GAAG,CAAC,IAAI,CAACJ,GAAG,CAAG,EAAIrP,IAAKC,CAAAA,UAAU,EAChE,OAAO/T,IAAAA,CAAKmU,GAAG,CAACowI,gBAAAA,CAAmBC,iBAAkB,CACvD,CAAA,CACA,OAAO1wI,IAAAA,CAAKI,KAAK,CAAC8c,OAAO/U,MAAM,CAAG,IAAI,CAAC6lI,YAAY,CAAE,CAAG,CAAA,CAAA,CAC1D,CACA2C,iBAAkB9+H,CAAAA,IAAAA,CAAO,IAAI,CAAC+7H,QAAQ,CAAE97H,GAAM,CAAA,IAAI,CAACk7H,OAAO,CAAE,CAC1D,MAAM39H,GAAAA,CAAM,IAAI,CAACA,GAAG,CAAGnjB,IAAKgU,CAAAA,EAAE,CAAG,GACjC,CAAA,IAAIc,EAAG0H,CACP,CAAA,GAAI,IAAI,CAACw1B,UAAU,GAAKqnF,sBAAwB,CAAA,CAC9C,GAAI,IAAI,CAACgoB,aAAa,CAAE,CACtBvsI,EAAI6Q,IAAO3lB,CAAAA,IAAAA,CAAKujB,GAAG,CAACJ,GAAAA,CAAM,GAC1B3G,CAAI1H,CAAAA,CAAAA,CAAI,IAAI,CAACyqI,YAAW,CACnB,KAAA,CACL/iI,EAAImJ,IAAO3lB,CAAAA,IAAAA,CAAKujB,GAAG,CAACJ,GAAAA,CAAM,GAC1BrO,CAAI0H,CAAAA,CAAAA,CAAI,IAAI,CAAC+iI,YAAW,CAE5B,CAAA,KAAO,CACL/iI,CAAI,CAAA,IAAI,CAACslI,YAAY,CACrBhtI,EAAI0H,CAAI,CAAA,IAAI,CAAC+iI,YACf,CACA,MAAMmF,MAAAA,CAASnG,cACfmG,CAAAA,MAAM,CAAC,EAAE,CAAC5vI,CAAC,CAAGA,CACd4vI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAACloI,CAAC,CAAG,CAACA,CACfkoI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC/nI,CAAC,CAAG,CAACgJ,IACf++H,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC5vI,CAAC,CAAGA,CACd4vI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAACloI,CAAC,CAAGA,CACdkoI,CAAAA,MAAM,CAAC,EAAE,CAAC/nI,CAAC,CAAG,CAACgJ,IACf++H,CAAAA,MAAM,CAAC,EAAE,CAAC5vI,CAAC,CAAG,CAACA,CACf4vI,CAAAA,MAAM,CAAC,EAAE,CAACloI,CAAC,CAAGA,CACdkoI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC/nI,CAAC,CAAG,CAACgJ,IACf++H,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAC5vI,CAAC,CAAG,CAACA,CACf4vI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAACloI,CAAC,CAAG,CAACA,CACfkoI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC/nI,CAAC,CAAG,CAACgJ,KACf,GAAI,IAAI,CAACo8H,WAAW,GAAK1oB,uBAAwB,CAC/C,GAAI,IAAI,CAACgoB,aAAa,CAAE,CACtBvsI,CAAAA,CAAI8Q,IAAM5lB,IAAKujB,CAAAA,GAAG,CAACJ,GAAM,CAAA,CAAA,CAAA,CACzB3G,EAAI1H,CAAI,CAAA,IAAI,CAACyqI,YACf,MAAO,CACL/iI,CAAAA,CAAIoJ,IAAM5lB,IAAKujB,CAAAA,GAAG,CAACJ,GAAM,CAAA,CAAA,CAAA,CACzBrO,EAAI0H,CAAI,CAAA,IAAI,CAAC+iI,YACf,CACF,CACAmF,MAAM,CAAC,CAAE,CAAA,CAAC5vI,CAAC,CAAGA,CACd4vI,CAAAA,MAAM,CAAC,EAAE,CAACloI,CAAC,CAAG,CAACA,CACfkoI,CAAAA,MAAM,CAAC,EAAE,CAAC/nI,CAAC,CAAG,CAACiJ,GACf8+H,CAAAA,MAAM,CAAC,EAAE,CAAC5vI,CAAC,CAAGA,CACd4vI,CAAAA,MAAM,CAAC,CAAA,CAAE,CAACloI,CAAC,CAAGA,CACdkoI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC/nI,CAAC,CAAG,CAACiJ,GACf8+H,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC5vI,CAAC,CAAG,CAACA,CACf4vI,CAAAA,MAAM,CAAC,CAAE,CAAA,CAACloI,CAAC,CAAGA,CACdkoI,CAAAA,MAAM,CAAC,EAAE,CAAC/nI,CAAC,CAAG,CAACiJ,GACf8+H,CAAAA,MAAM,CAAC,EAAE,CAAC5vI,CAAC,CAAG,CAACA,CACf4vI,CAAAA,MAAM,CAAC,EAAE,CAACloI,CAAC,CAAG,CAACA,CACfkoI,CAAAA,MAAM,CAAC,EAAE,CAAC/nI,CAAC,CAAG,CAACiJ,GAAAA,CACf,OAAO8+H,MACT,CACAC,gBAAgBC,UAAU,CAAE,CAC1BtiJ,MAAOskH,CAAAA,MAAM,CAAC,IAAI,CAACg5B,aAAa,CAAEgF,UAAAA,CAClC,CAAA,IAAI,CAAClF,aAAa,CAAG,KACvB,CAlfAl3I,WAAa,EAAA,CACX,IAAI,CAACg7H,cAAc,CAAG,IACtB,CAAA,IAAI,CAACib,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACmG,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,YAAY,CAAG,IAAI5H,kBACxB,CAAA,IAAI,CAACyB,YAAY,CAAG,EACpB,CAAA,IAAI,CAACqE,MAAM,CAAG,CACd,CAAA,IAAI,CAACvD,YAAY,CAAG,EAAA,CAAK,CACzB,CAAA,IAAI,CAACK,gBAAgB,CAAG/gB,WACxB,CAAA,IAAI,CAACihB,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACE,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,WAAW,CAAG,IAAIrqI,KAAM,CAAA,GAAA,CAAM,IAAM,GAAM,CAAA,CAAA,CAC/C,CAAA,IAAI,CAACuqI,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,WAAW,CAAG,CACnB,CAAA,IAAI,CAACE,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,aAAa,CAAG,CACrB,CAAA,IAAI,CAACE,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACE,UAAU,CAAG,IAClB,CAAA,IAAI,CAACE,QAAQ,CAAG,GAChB,CAAA,IAAI,CAACE,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,IAAI,CAAG,EACZ,CAAA,IAAI,CAACE,eAAe,CAAG,IACvB,CAAA,IAAI,CAACE,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,OAAO,CAAG,CACb3rB,cACAC,aACAC,CAAAA,cAAAA,CACAE,WACAD,iBACD,CACD,CAAA,IAAI,CAACyrB,UAAU,CAAG,IAAIhuI,IAAI,IAAI,CAAC+tI,OAAO,CACtC,CAAA,IAAI,CAACI,SAAS,CAAG,EACjB,CAAA,IAAI,CAACC,KAAK,CAAG,IACb,CAAA,IAAI,CAACE,YAAY,CAAG,EACpB,CAAA,IAAI,CAACC,WAAW,CAAG1oB,sBACnB,CAAA,IAAI,CAACimB,KAAK,CAAG,IAAI18H,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAG,EAC/B,CAAA,IAAI,CAACu/H,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,YAAY,CAAG,IAAIx/H,KAAK,CAAG,CAAA,CAAA,CAAG,EAAG,CACtC,CAAA,CAAA,IAAI,CAACy8H,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACqD,SAAS,CAAG,EACjB,CAAA,IAAI,CAACI,QAAQ,CAAG,CAAM,CAAA,GACtB,CAAA,IAAI,CAACF,YAAY,CAAG,GACpB,CAAA,IAAI,CAACV,QAAQ,CAAG,IAAIl/H,IACpB,CAAA,IAAI,CAAC08H,aAAa,CAAG,IACrB,CAAA,IAAI,CAACuE,cAAc,CAAG,IAAIjhI,IAC1B,CAAA,IAAI,CAACw/H,QAAQ,CAAG,IAAIx/H,IACpB,CAAA,IAAI,CAACs/H,aAAa,CAAG,IACrB,CAAA,IAAI,CAACgB,YAAY,CAAG,IAAItgI,IACxB,CAAA,IAAI,CAACqgI,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACrE,sBAAsB,CAAG,CAC9B,CAAA,IAAI,CAACG,gBAAgB,CAAG,IAAIn8H,IAC5B,CAAA,IAAI,CAACk8H,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACD,iBAAiB,CAAG,IAAIj8H,IAC7B,CAAA,IAAI,CAACo8H,QAAQ,CAAG,CACd,EACA,CACA,CAAA,CAAA,CACA,EACD,CACD,IAAI,CAACvL,OAAO,CAAG,IAAInhH,OACnB,CAAA,IAAI,CAACqwH,GAAG,CAAG,IACX,CAAA,IAAI,CAACnD,aAAa,CAAG,CACnByB,cAAe,IAAI,CAACC,cAAc,CAClCn+H,GAAAA,CAAK,IAAI,CAAC+9H,IAAI,CACd3B,WAAa,CAAA,IAAI,CAACE,YAAY,CAC9BqB,QAAS,IAAI,CAACC,QAAQ,CACtBW,QAAAA,CAAU,IAAI,CAACC,SAAS,EAE5B,CA8aF,CAEA,MAAMoD,2BAAAA,CAA8B,IAAI/hI,IACxC,CAAA,MAAMgiI,mBAAqB,IAAItoI,IAAAA,CAC/B,MAAMuoI,kBAAqB,CAAA,IAAI38H,KAC/B,MAAM48H,mBAAAA,CAAsB,IAAI58H,IAChC,CAAA,MAAM68H,qBAAuB,IAAIzoI,IAAAA,CACjC,MAAM0oI,6BAAgC,CAAA,IAAI1oI,KAC1C,MAAM2oI,OAAAA,CAAU,IAAIriI,IAAAA,CACpB,MAAMsiI,OAAAA,CAAU,IAAIh9H,IACpB,CAAA,MAAMi9H,WAAa,IAAI7oI,IAAAA,CACvB,MAAM8oI,cAAiB,CAAA,IAAIxiI,KAC3B,MAAMyiI,UAAAA,CAAa,IAAIn9H,IACvB,CAAA,MAAMo9H,aAAe,IAAIp9H,IAAAA,CACzB,MAAMsK,MAAS,CAAA,IAAI5P,KACnB,MAAM3jB,MAAAA,CAAS,IAAIqd,IACnB,CAAA,MAAMipI,KAAO,IAAIjpI,IAAAA,CACjB,SAASkpI,UAAWviE,CAAAA,IAAI,CAAEj7E,KAAK,CAAA,CAC7B,GAAIi7E,IAAgBwiE,YAAAA,QAAAA,CAAU,CAC5B,OAAOxiE,IACT,CACA,OAAQwtD,OACN,IAAI/7H,CAAAA,CAAI+7H,IAAI,CAACxtD,IAAAA,CAAK,CAClB,GAAIvuE,CAAAA,YAAa+wI,SAAU,CACzB/wI,CAAAA,CAAIA,IACN,CACA,OAAOA,IAAM1M,KACf,CACF,CACA,SAAS09I,QAAAA,CAASjV,IAAI,CAAE1tI,IAAI,EAC1B,GAAIA,IAAAA,CAAK0tI,MAAO,CACd,OAAOA,IACT,CACA,MAAMkV,SAAWlV,IAAK4G,CAAAA,SAAS,CAC/B,MAAM9+H,GAAAA,CAAMotI,SAASrlJ,MAAM,CAC3B,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAK,EAAElY,CAAAA,CAAE,CAC1B,MAAMD,OAASslJ,QAASC,CAAAA,QAAQ,CAACtlJ,CAAE,CAAA,CAAE0C,MACrC,GAAI3C,MAAAA,CAAQ,CACV,OAAOA,MACT,CACF,CACA,OAAO,IACT,CACA,MAAMwlJ,kBAAkBt9I,YAKtB,CAAA,IAAImH,OAAQ,CACV,GAAI,CAAC,IAAI,CAACmI,MAAM,CAAE,CAChB,IAAI,CAACA,MAAM,CAAG,IAAI0E,KACpB,CACA,OAAO,IAAI,CAAC0rH,iBAAiB,EAAA,CAAGjpH,IAAI,CAAC,IAAI,CAACnH,MAAM,CAAA,CAAEnX,SAAS,EAC7D,CACA,IAAImkB,EAAK,EAAA,CACP,GAAI,CAAC,IAAI,CAACihI,GAAG,CAAE,CACb,IAAI,CAACA,GAAG,CAAG,IAAIvpI,KACjB,CACA,OAAO,IAAI,CAAC0rH,iBAAiB,GAAGhpH,IAAI,CAAC,IAAI,CAAC6mI,GAAG,EAAEplJ,SAAS,EAC1D,CACA,IAAIqlJ,OAAAA,EAAU,CACZ,GAAI,CAAC,IAAI,CAACC,QAAQ,CAAE,CAClB,IAAI,CAACA,QAAQ,CAAG,IAAIzpI,KACtB,CACA,OAAO,IAAI,CAAC0rH,iBAAiB,GAAG/oH,IAAI,CAAC,IAAI,CAAC8mI,QAAQ,EAAEtlJ,SAAS,EAAA,CAAG0V,SAAS,CAAC,CAAC,EAC7E,CACA,IAAI6vI,cAAe,CACjB,MAAMC,UAAY,IAAI,CAACC,aAAa,CACpC,GAAI,IAAI,CAACC,YAAY,CAAE,CACrBF,SAAAA,CAAUxlI,UAAU,CAAC,IAAI,CAACunH,iBAAiB,EAAA,CAAA,CAAI3oH,SAAS,EACxD,CAAA,IAAI,CAAC8mI,YAAY,CAAG,MACtB,CACA,OAAOF,SACT,CACA,IAAI/yI,OAAQA,CAAAA,OAAO,CAAE,CACnB,GAAI,IAAI,CAACghE,QAAQ,GAAKhhE,OAAS,CAAA,CAC7B,IAAI,CAACghE,QAAQ,CAAGhhE,OAChB,CAAA,GAAIA,SAAW,IAAI,CAACnC,OAAO,EAAEmC,OAAAA,EAAW,CAACA,OAAS,CAAA,CAChD,IAAI,CAACkzI,4BAA4B,CAAC,IAAI,CAAElzI,SAC1C,CACF,CACF,CACA,IAAIA,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,EAAI,IAAI,CAACmyE,mBAAmB,CAElD,IAAI/0I,QAAS,CACX,OAAO,IAAI,CAACP,OAAO,CAErB,IAAI/Q,MAAO,CACT,IAAIywI,KAAO,IAAI,CAAC1/H,OAAO,CACvB,GAAI,CAAC0/H,IAAM,CAAA,CACT,OAAO,EACT,CACA,IAAIrwI,MAAS,CAAA,IAAI,CAACuD,IAAI,CACtB,MAAM8sI,IAAQA,EAAAA,IAAAA,CAAK1/H,OAAO,CAAC,CACzB3Q,OAAS,CAAC,EAAEqwI,KAAK9sI,IAAI,CAAC,CAAC,EAAEvD,MAAAA,CAAO,CAAC,CACjCqwI,IAAAA,CAAOA,KAAK1/H,QACd,CACA,OAAO3Q,MACT,CACA,IAAIu7I,IAAAA,EAAO,CACT,IAAIv7I,MAAAA,CAAS,IAAI,CACjB,MAAMA,OAAO2Q,OAAO,CAAC,CACnB3Q,MAASA,CAAAA,MAAAA,CAAO2Q,QAAO,CAEzB,OAAO3Q,MACT,CACA,IAAIulJ,QAAW,EAAA,CACb,OAAO,IAAI,CAACtO,SAAS,CAEvB,IAAIiP,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzBH,4BAAAA,CAA6B3V,IAAI,CAAEv9H,OAAO,CAAE,CAC1Cu9H,IAAAA,CAAK+V,wBAAwB,CAACtzI,OAAAA,CAAAA,CAC9B,MAAMxT,CAAI+wI,CAAAA,IAAAA,CAAK4G,SAAS,CACxB,IAAI,IAAIh3I,CAAI,CAAA,CAAA,CAAGkY,IAAM7Y,CAAEY,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAC1C,GAAIX,CAAC,CAACW,CAAAA,CAAE,CAAC6zE,QAAQ,CAAE,CACjB,IAAI,CAACkyE,4BAA4B,CAAC1mJ,CAAC,CAACW,CAAE,CAAA,CAAE6S,SAC1C,CACF,CACF,CACAszI,wBAAyBtzI,CAAAA,OAAO,CAAE,CAChC,IAAI,CAACmzI,mBAAmB,CAAGnzI,QAC3B,GAAIA,OAAAA,EAAW,CAAC,IAAI,CAACuzI,OAAO,CAAE,CAC5B,IAAI,CAACC,qBAAqB,GAC5B,CACF,CACAC,eAAehxI,KAAK,CAAE,CACpBA,KAAMhS,CAAAA,IAAI,CAAG,IAAI,CAACA,IAAI,CACtB,MAAMkN,KAAO,IAAI,CAACA,IAAI,CAACpG,KAAK,CAC5BkL,KAAM9E,CAAAA,IAAI,CAAC5H,KAAK,EAAA,CAChB,IAAI,IAAI5I,CAAAA,CAAI,EAAGA,CAAIwQ,CAAAA,IAAAA,CAAKvQ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClCsV,KAAM9E,CAAAA,IAAI,CAACF,GAAG,CAACE,IAAI,CAACxQ,CAAAA,CAAE,EACxB,CACAsV,KAAAA,CAAMixI,aAAa,CAACxnJ,IAAI,CAAC,IAAI,CAACwnJ,aAAa,CAC3CjxI,CAAAA,KAAAA,CAAMkxI,aAAa,CAACznJ,IAAI,CAAC,IAAI,CAACynJ,aAAa,CAC3ClxI,CAAAA,KAAAA,CAAMmxI,UAAU,CAAC1nJ,IAAI,CAAC,IAAI,CAAC0nJ,UAAU,CACrCnxI,CAAAA,KAAAA,CAAMoxI,gBAAgB,CAAC3nJ,IAAI,CAAC,IAAI,CAAC2nJ,gBAAgB,CACjDpxI,CAAAA,KAAAA,CAAMgP,QAAQ,CAACvlB,IAAI,CAAC,IAAI,CAACulB,QAAQ,CACjChP,CAAAA,KAAAA,CAAMqxI,QAAQ,CAAC5nJ,IAAI,CAAC,IAAI,CAAC4nJ,QAAQ,CACjCrxI,CAAAA,KAAAA,CAAMsxI,WAAW,CAAC7nJ,IAAI,CAAC,IAAI,CAAC6nJ,WAAW,CACvCtxI,CAAAA,KAAAA,CAAMuxI,cAAc,CAAC9nJ,IAAI,CAAC,IAAI,CAAC8nJ,cAAc,CAC7CvxI,CAAAA,KAAAA,CAAMwxI,WAAW,CAAG,IAAI,CAACA,WAAW,CACpCxxI,MAAM6d,cAAc,CAACp0B,IAAI,CAAC,IAAI,CAACo0B,cAAc,CAC7C7d,CAAAA,KAAMyxI,CAAAA,WAAW,CAAG,IAAI,CAACA,WAAW,CACpCzxI,MAAMwwI,YAAY,CAAG,IAAI,CAACA,YAAY,CACtCxwI,KAAAA,CAAM+vH,QAAQ,CAAG,IAAI,CAACA,QAAQ,CAAG,CACjC/vH,CAAAA,KAAAA,CAAMu+D,QAAQ,CAAG,IAAI,CAACA,QACtBv+D,CAAAA,KAAM0xI,CAAAA,iBAAiB,CAAG,IAAI,CAACA,iBAAiB,CAChD1xI,MAAM0wI,mBAAmB,CAAG,MAC9B,CACA1wI,KAAAA,EAAQ,CACN,MAAMA,KAAAA,CAAQ,IAAI,IAAI,CAACvN,WAAW,CAClC,IAAI,CAACu+I,cAAc,CAAChxI,OACpB,OAAOA,KACT,CACAvW,IAAK6xC,CAAAA,MAAM,CAAE,CACXA,MAAAA,CAAO01G,cAAc,CAAC,IAAI,EAC1B,OAAO,IAAI,CAEbn9G,OAAAA,EAAU,CACR,IAAI,CAAC9+B,MAAM,EACX,CAAA,MAAMi7I,SAAW,IAAI,CAACtO,SAAS,CAC/B,MAAMsO,SAASrlJ,MAAM,CAAC,CACpB,MAAMgnJ,KAAAA,CAAQ3B,SAAShkJ,GAAG,EAC1B2lJ,CAAAA,KAAMv2I,CAAAA,OAAO,CAAG,IAChBu2I,CAAAA,KAAAA,CAAM99G,OAAO,GACf,CACA,IAAI,CAACjgC,IAAI,CAAC,SAAW,CAAA,IAAI,EACzB,IAAI,CAACjC,GAAG,GACV,CACA63D,KAAK8jB,IAAI,CAAEj7E,KAAK,CAAE,CAChB,MAAM+tE,OAAU,CAAA,EAAE,CAClB,MAAMhzE,IAAAA,CAAOyiJ,WAAWviE,IAAMj7E,CAAAA,KAAAA,CAAAA,CAC9B,IAAI,CAACgF,OAAO,CAAC,IAACyjI,EAAAA,CACZ,GAAI1tI,IAAK0tI,CAAAA,IAAAA,CAAAA,CAAO,CACd16D,OAAQ50E,CAAAA,IAAI,CAACsvI,IACf,EAAA,CACF,GACA,OAAO16D,OACT,CACAwxE,OAAQtkE,CAAAA,IAAI,CAAEj7E,KAAK,CAAE,CACnB,MAAMjF,IAAAA,CAAOyiJ,WAAWviE,IAAMj7E,CAAAA,KAAAA,CAAAA,CAC9B,OAAO09I,QAAS,CAAA,IAAI,CAAE3iJ,IACxB,CAAA,CACAykJ,UAAU,GAAGx2I,KAAK,CAAE,CAClB,MAAM+kE,OAAAA,CAAU,EAAE,CAClB,MAAM0xE,UAAY,CAAChX,IAAAA,CAAMiX,aACvB,GAAIA,SAAAA,EAAajX,KAAK5/H,IAAI,CAAClI,GAAG,CAAIqI,GAAAA,KAAAA,CAAAA,CAAQ,CACxC+kE,OAAQ50E,CAAAA,IAAI,CAACsvI,IACf,EAAA,CACA,IAAI,IAAIpwI,CAAAA,CAAI,EAAGA,CAAIowI,CAAAA,IAAAA,CAAK4G,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5ConJ,UAAUhX,IAAK4G,CAAAA,SAAS,CAACh3I,CAAE,CAAA,CAAE,MAC/B,CACF,CAAA,CACAonJ,UAAU,IAAI,CAAE,OAChB,OAAO1xE,OACT,CACAwxD,UAAW5jI,CAAAA,IAAI,CAAE,CACf,OAAO,IAAI,CAAC4jJ,OAAO,CAAC,MAAQ5jJ,CAAAA,IAAAA,CAC9B,CACAgkJ,UAAW3nJ,CAAAA,IAAI,CAAE,CACf,MAAMe,MAAQ1B,KAAMC,CAAAA,OAAO,CAACU,IAAQA,CAAAA,CAAAA,IAAAA,CAAOA,KAAKgB,KAAK,CAAC,KACtD,IAAIZ,MAAAA,CAAS,IAAI,CACjB,IAAI,IAAIC,CAAI,CAAA,CAAA,CAAGunJ,KAAO7mJ,KAAMT,CAAAA,MAAM,CAAED,CAAIunJ,CAAAA,IAAAA,CAAM,EAAEvnJ,CAAE,CAAA,CAChDD,MAASA,CAAAA,MAAAA,CAAOulJ,QAAQ,CAACxmF,IAAI,CAAEz/D,GAAIA,CAAEiE,CAAAA,IAAI,GAAK5C,KAAK,CAACV,EAAE,CACtD,CAAA,GAAI,CAACD,MAAQ,CAAA,CACX,OAAO,IACT,CACF,CACA,OAAOA,MACT,CACA4M,OAAQrF,CAAAA,QAAQ,CAAEkgJ,OAAO,CAAE,CACzBlgJ,QAASsC,CAAAA,IAAI,CAAC49I,OAAS,CAAA,IAAI,EAC3B,MAAMlC,QAAAA,CAAW,IAAI,CAACtO,SAAS,CAC/B,MAAM9+H,GAAAA,CAAMotI,SAASrlJ,MAAM,CAC3B,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAK,EAAElY,CAAE,CAAA,CAC1BslJ,QAAQ,CAACtlJ,CAAAA,CAAE,CAAC2M,OAAO,CAACrF,SAAUkgJ,OAChC,EAAA,CACF,CACAC,cAAerX,CAAAA,IAAI,CAAE,CACnB,IAAIn/H,OAAS,IAAI,CAACP,OAAO,CACzB,MAAMO,OAAO,CACX,GAAIA,SAAWm/H,IAAM,CAAA,CACnB,OAAO,IACT,CACAn/H,OAASA,MAAOP,CAAAA,QAAO,CAEzB,OAAO,KACT,CACAg3I,YAAAA,CAAatX,IAAI,CAAE,CACjB,OAAOA,KAAKqX,cAAc,CAAC,IAAI,CACjC,CACAhgI,gBAAiB,CACf,IAAI,CAACkgH,iBAAiB,EAAA,CAAGlgH,cAAc,CAAC,IAAI,CAACm/H,WAAW,CAAA,CACxD,OAAO,IAAI,CAACA,WAAW,CAEzBe,qBAAsB,CACpB,IAAI,CAACnB,aAAa,CAAC/+H,cAAc,CAAC,IAAI,CAACi/H,gBAAgB,CAAA,CACvD,OAAO,IAAI,CAACA,gBAAgB,CAE9BkB,kBAAmB,CACjB,OAAO,IAAI,CAACrB,aAAa,CAE3BsB,gBAAAA,EAAmB,CACjB,OAAO,IAAI,CAACrB,aACd,CACAsB,aAAgB,EAAA,CACd,OAAO,IAAI,CAACrB,UAAU,CAExBsB,mBAAoB,CAClB,GAAI,IAAI,CAACjB,WAAW,CAAE,CACpB,IAAI,CAACD,cAAc,CAAClgI,MAAM,CAAC,IAAI,CAAC4/H,aAAa,CAAE,IAAI,CAACC,aAAa,CAAE,IAAI,CAACC,UAAU,CAClF,CAAA,IAAI,CAACK,WAAW,CAAG,MACrB,CACA,OAAO,IAAI,CAACD,cAAc,CAE5Bv8B,aAAc,CACZ,IAAI,CAACqd,iBAAiB,EAAA,CAAG5gH,cAAc,CAAC,IAAI,CAACzC,QAAQ,CAAA,CACrD,OAAO,IAAI,CAACA,QAAQ,CAEtB0jI,aAAc,CACZ,IAAI,CAACrB,QAAQ,CAAC1nI,WAAW,CAAC,IAAI,CAAC0oH,iBAAiB,EAAA,CAAA,CAChD,OAAO,IAAI,CAACgf,QAAQ,CAEtB3/H,UAAW,CACT,GAAI,CAAC,IAAI,CAACihI,MAAM,CAAE,CAChB,IAAI,CAACA,MAAM,CAAG,IAAIhsI,KACpB,CACA,OAAO,IAAI,CAAC0rH,iBAAiB,EAAA,CAAG3gH,QAAQ,CAAC,IAAI,CAACihI,MAAM,CACtD,CACAtgB,iBAAoB,EAAA,CAClB,GAAI,CAAC,IAAI,CAACmf,WAAW,EAAI,CAAC,IAAI,CAACC,WAAW,CAAE,CAC1C,OAAO,IAAI,CAAC5zH,cAAc,CAE5B,GAAI,IAAI,CAACziB,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAACi3H,iBAAiB,GAChC,CACA,IAAI,CAACugB,KAAK,GACV,OAAO,IAAI,CAAC/0H,cACd,CACA,IAAIg1H,cAAAA,EAAiB,CACnB,GAAI,IAAI,CAACC,eAAe,GAAK,EAAG,CAC9B,IAAI,CAACA,eAAe,CAAG,IAAI,CAACzgB,iBAAiB,GAAG1gH,UAClD,CACA,OAAO,IAAI,CAACmhI,eACd,CACA/9I,MAAS,EAAA,CACP,IAAI,CAACqG,OAAO,EAAE23I,WAAY,CAAA,IAAI,EAChC,CACAC,QAAAA,CAASr3I,MAAM,CAAEpL,KAAK,CAAE,CACtB,IAAI,CAACwE,MAAM,EAAA,CACX,GAAI4G,MAAQ,CAAA,CACV,GAAIpL,KAAS,EAAA,CAAA,CAAG,CACdoL,MAAOs3I,CAAAA,WAAW,CAAC,IAAI,CAAE1iJ,OAC3B,CAAO,KAAA,CACLoL,OAAOu3I,QAAQ,CAAC,IAAI,EACtB,CACF,CACF,CACAC,mBAAAA,CAAoBp0I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CAC3B,IAAI,CAACsqI,aAAa,CAACt/H,kBAAkB,CAAC7S,CAAG0H,CAAAA,CAAAA,CAAGG,GAC5C,GAAI,CAAC,IAAI,CAAC4qI,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAC,gBAAAA,CAAiBt0I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACxB,GAAI7H,CAAAA,YAAa4H,KAAM,CACrB,IAAI,CAACsqI,aAAa,CAACxnJ,IAAI,CAACsV,CAAAA,EAC1B,MAAO,CACL,IAAI,CAACkyI,aAAa,CAACh+I,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CAC/B,EAAA,CACA,GAAI,CAAC,IAAI,CAAC4qI,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAE,gBAAiBv0I,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAEqD,CAAC,CAAE,CAC3B,GAAIlL,aAAawT,IAAM,CAAA,CACrB,IAAI,CAAC2+H,aAAa,CAACznJ,IAAI,CAACsV,GAC1B,CAAO,KAAA,CACL,IAAI,CAACmyI,aAAa,CAACj+I,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CAAGqD,CAAAA,CAAAA,EAClC,CACA,GAAI,CAAC,IAAI,CAACunI,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAG,aAAAA,CAAcx0I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACrB,GAAI7H,CAAAA,YAAa4H,KAAM,CACrB,IAAI,CAACwqI,UAAU,CAAC1nJ,IAAI,CAACsV,CAAAA,EACvB,MAAO,CACL,IAAI,CAACoyI,UAAU,CAACl+I,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CAC5B,EAAA,CACA,GAAI,CAAC,IAAI,CAAC4qI,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAA,aAAgB,EAAA,CACd,GAAI,CAAC,IAAI,CAAC5B,WAAW,CAAE,CACrB,IAAI,CAACA,WAAW,CAAG,IAAA,CACnB,GAAI,CAAC,IAAI,CAACC,WAAW,CAAE,CACrB,IAAI,CAAC+B,aAAa,GACpB,CACF,CACF,CACAzC,qBAAAA,EAAwB,CACtB,IAAI1zH,CAAAA,CAAI,IAAI,CAACjiB,OAAO,CACpB,MAAMiiB,CAAAA,CAAE,CACNA,CAAEyzH,CAAAA,OAAO,CAAG,KACZzzH,CAAAA,CAAAA,CAAIA,EAAEjiB,QACR,CACF,CACAo4I,aAAAA,EAAgB,CACd,GAAI,CAAC,IAAI,CAAC/B,WAAW,CAAE,CACrB,IAAI,CAACV,qBAAqB,GAC5B,CACA,IAAI,CAAC0C,qBAAqB,GAC5B,CACAA,uBAAwB,CACtB,GAAI,CAAC,IAAI,CAAChC,WAAW,CAAE,CACrB,IAAI,CAACX,OAAO,CAAG,KACf,CAAA,IAAI,CAACW,WAAW,CAAG,IACnB,CAAA,IAAI,IAAI/mJ,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,GAAI,CAAC,IAAI,CAACg3I,SAAS,CAACh3I,EAAE,CAAC+mJ,WAAW,CAAE,CAClC,IAAI,CAAC/P,SAAS,CAACh3I,EAAE,CAAC+oJ,qBAAqB,GACzC,CACF,CACF,CACA,IAAI,CAACjD,YAAY,CAAG,IACpB,CAAA,IAAI,CAACsC,eAAe,CAAG,CACvB,CAAA,IAAI,CAAC/iB,QAAQ,GACf,CACA9a,WAAAA,CAAYl2G,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACnB,GAAI7H,CAAAA,YAAa4H,KAAM,CACrB6oI,UAAAA,CAAW/lJ,IAAI,CAACsV,CAAAA,EAClB,MAAO,CACLywI,UAAAA,CAAWv8I,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CACvB,EAAA,CACA,GAAI,IAAI,CAACxL,OAAO,GAAK,IAAA,CAAM,CACzB,IAAI,CAAC61I,aAAa,CAACxnJ,IAAI,CAAC+lJ,UAC1B,EAAA,CAAA,KAAO,CACLC,cAAehmJ,CAAAA,IAAI,CAAC,IAAI,CAAC2R,OAAO,CAACi3H,iBAAiB,IAAI5hH,MAAM,EAAA,CAC5Dg/H,eAAe5gI,cAAc,CAAC2gI,WAAY,IAAI,CAACyB,aAAa,EAC9D,CACA,GAAI,CAAC,IAAI,CAACO,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAM,WAAY30I,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAEqD,CAAC,CAAE,CACtB,GAAIlL,CAAawT,YAAAA,IAAAA,CAAM,CACrBm9H,UAAAA,CAAWjmJ,IAAI,CAACsV,CAAAA,EAClB,MAAO,CACL2wI,UAAAA,CAAWz8I,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CAAGqD,CAAAA,CAAAA,EAC1B,CACA,GAAI,IAAI,CAAC7O,OAAO,GAAK,KAAM,CACzB,IAAI,CAAC81I,aAAa,CAACznJ,IAAI,CAACimJ,UAAAA,EAC1B,MAAO,CACL,MAAMiE,UAAY,IAAI,CAACv4I,OAAO,CAACs3I,WAAW,GAC1C/C,YAAalmJ,CAAAA,IAAI,CAACkqJ,SAAWljI,CAAAA,CAAAA,MAAM,GACnC,IAAI,CAACygI,aAAa,CAACznJ,IAAI,CAACkmJ,YAAc3nI,CAAAA,CAAAA,GAAG,CAAC0nI,UAC5C,EAAA,CACA,GAAI,CAAC,IAAI,CAAC8B,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAQ,sBAAuB5kI,CAAAA,QAAQ,CAAEqiI,QAAQ,CAAE,CACzC,GAAI,IAAI,CAACj2I,OAAO,GAAK,KAAM,CACzB,IAAI,CAAC61I,aAAa,CAACxnJ,IAAI,CAACulB,QAAAA,CAAAA,CACxB,IAAI,CAACkiI,aAAa,CAACznJ,IAAI,CAAC4nJ,QAC1B,EAAA,CAAA,KAAO,CACL,MAAMwC,UAAY,IAAI,CAACz4I,OAAO,CAACi3H,iBAAiB,GAChDod,cAAehmJ,CAAAA,IAAI,CAACoqJ,SAAWpjI,CAAAA,CAAAA,MAAM,GACrCg/H,cAAe5gI,CAAAA,cAAc,CAACG,QAAU,CAAA,IAAI,CAACiiI,aAAa,CAAA,CAC1D,IAAI,CAACC,aAAa,CAACvnI,WAAW,CAAC8lI,gBAAgBznI,GAAG,CAACqpI,UACrD,CACA,GAAI,CAAC,IAAI,CAACG,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAU,eAAe/0I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACtB,IAAI,CAACsqI,aAAa,CAACt/H,kBAAkB,CAAC7S,CAAAA,CAAG0H,EAAGG,CAC5C,CAAA,CAAA,GAAI,IAAI,CAACxL,OAAO,GAAK,IAAM,CAAA,CACzB,MAAMu4I,SAAY,CAAA,IAAI,CAACv4I,OAAO,CAACs3I,WAAW,EAC1C/C,CAAAA,YAAAA,CAAalmJ,IAAI,CAACkqJ,SAAAA,CAAAA,CAAWljI,MAAM,EACnC,CAAA,IAAI,CAACygI,aAAa,CAACjpI,IAAI,CAAC0nI,YAAAA,CAAc,IAAI,CAACuB,aAAa,EAC1D,CACA,GAAI,CAAC,IAAI,CAACM,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAF,SAASpY,IAAI,CAAE,CACb,IAAI,CAACiZ,mBAAmB,CAACjZ,IAAAA,CAAAA,CACzB,IAAI,CAAC4G,SAAS,CAACl2I,IAAI,CAACsvI,MACpB,IAAI,CAACkZ,cAAc,CAAClZ,IAAAA,EACtB,CACAmZ,wBAAyBnZ,CAAAA,IAAI,CAAE,CAC7B,MAAMoZ,KAAOpZ,IAAK9lB,CAAAA,WAAW,GAC7B,MAAMm/B,IAAAA,CAAOrZ,KAAK4X,WAAW,EAAA,CAC7B,IAAI,CAACqB,mBAAmB,CAACjZ,IACzBA,CAAAA,CAAAA,IAAAA,CAAK7lB,WAAW,CAACq6B,OAAAA,CAAQ7lJ,IAAI,CAAC,IAAI,CAACo0B,cAAc,CAAA,CAAEpN,MAAM,EAAG5B,CAAAA,cAAc,CAACqlI,IAC3EpZ,CAAAA,CAAAA,CAAAA,IAAAA,CAAK4Y,WAAW,CAACnE,OAAAA,CAAQ9lJ,IAAI,CAAC,IAAI,CAACipJ,WAAW,EAAA,CAAA,CAAIjiI,MAAM,EAAGzI,CAAAA,GAAG,CAACmsI,IAC/D,CAAA,CAAA,CAAA,IAAI,CAACzS,SAAS,CAACl2I,IAAI,CAACsvI,IAAAA,CAAAA,CACpB,IAAI,CAACkZ,cAAc,CAAClZ,IAAAA,EACtB,CACAmY,WAAAA,CAAYnY,IAAI,CAAEvqI,KAAK,CAAE,CACvB,IAAI,CAACwjJ,mBAAmB,CAACjZ,MACzB,IAAI,CAAC4G,SAAS,CAACluI,MAAM,CAACjD,KAAO,CAAA,CAAA,CAAGuqI,MAChC,IAAI,CAACkZ,cAAc,CAAClZ,IAAAA,EACtB,CACAiZ,mBAAoBjZ,CAAAA,IAAI,CAAE,CACxBA,IAAAA,CAAK/lI,MAAM,GACb,CACAq/I,iBAAiBpmJ,IAAI,CAAEqmJ,aAAa,CAAE14I,MAAM,CAAE,CAC5C,IAAI,CAAC/H,IAAI,CAAC5F,KAAM2N,MAChB,CAAA,CAAA,IAAI,IAAIjR,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,IAAI,CAACg3I,SAAS,CAACh3I,CAAE,CAAA,CAAC0pJ,gBAAgB,CAACC,aAAAA,CAAeA,cAAe14I,MACnE,EAAA,CACF,CACAq4I,cAAelZ,CAAAA,IAAI,CAAE,CACnBA,IAAAA,CAAK1/H,OAAO,CAAG,IAAI,CACnB,MAAMk5I,kBAAAA,CAAqBxZ,KAAKv8D,QAAQ,EAAI,IAAI,CAAChhE,OAAO,CACxD,GAAIu9H,IAAAA,CAAK4V,mBAAmB,GAAK4D,kBAAAA,CAAoB,CACnDxZ,IAAK4V,CAAAA,mBAAmB,CAAG4D,kBAC3BxZ,CAAAA,IAAAA,CAAK2V,4BAA4B,CAAC3V,IAAAA,CAAMwZ,oBAC1C,CACAxZ,IAAAA,CAAKyZ,iBAAiB,EACtBzZ,CAAAA,IAAAA,CAAK0Y,aAAa,EAClB,CAAA,GAAI,IAAI,CAAC1C,OAAO,CAAE,CAChBhW,IAAAA,CAAKiW,qBAAqB,GAC5B,CACAjW,KAAKsZ,gBAAgB,CAAC,SAAU,iBAAmB,CAAA,IAAI,EACvD,GAAI,IAAI,CAACxgJ,IAAI,CAAE,IAAI,CAACA,IAAI,CAAC,aAAeknI,CAAAA,IAAAA,EAC1C,CACAyZ,iBAAoB,EAAA,CAClB,IAAI,CAAC3D,WAAW,CAAG,IAAI,CAACx1I,OAAO,CAAG,IAAI,CAACA,OAAO,CAACw1I,WAAW,CAAG,CAAA,CAAI,EACjE,IAAI,IAAIlmJ,EAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAAC8+H,SAAS,CAAC/2I,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACvD,IAAI,CAACg3I,SAAS,CAACh3I,CAAAA,CAAE,CAAC6pJ,iBAAiB,GACrC,CACF,CACAxB,WAAAA,CAAYpB,KAAK,CAAE,CACjB,MAAMphJ,KAAAA,CAAQ,IAAI,CAACmxI,SAAS,CAAC/tI,OAAO,CAACg+I,KACrC,CAAA,CAAA,GAAIphJ,QAAU,CAAC,CAAA,CAAG,CAChB,MACF,CACA,IAAI,CAACmxI,SAAS,CAACluI,MAAM,CAACjD,MAAO,CAC7BohJ,CAAAA,CAAAA,MAAMv2I,OAAO,CAAG,KAChBu2I,KAAMyC,CAAAA,gBAAgB,CAAC,QAAU,CAAA,iBAAA,CAAmB,IAAI,CACxD,CAAA,IAAI,CAACxgJ,IAAI,CAAC,cAAe+9I,KAC3B,EAAA,CACAiB,OAAQ,CACN,GAAI,IAAI,CAACpB,WAAW,CAAE,CACpB,IAAI,CAACD,cAAc,CAAClgI,MAAM,CAAC,IAAI,CAAC4/H,aAAa,CAAE,IAAI,CAACC,aAAa,CAAE,IAAI,CAACC,UAAU,CAClF,CAAA,IAAI,CAACK,WAAW,CAAG,MACrB,CACA,GAAI,IAAI,CAACC,WAAW,CAAE,CACpB,GAAI,IAAI,CAACr2I,OAAO,GAAK,IAAA,CAAM,CACzB,IAAI,CAACyiB,cAAc,CAACp0B,IAAI,CAAC,IAAI,CAAC8nJ,cAAc,EAC9C,CAAA,KAAO,CACL,GAAI,IAAI,CAACG,iBAAiB,CAAE,CAC1B,IAAI8C,gBAAAA,CACJ,MAAM74I,MAAS,CAAA,IAAI,CAACP,OAAO,CAC3B,IAAI4R,KAAQ,CAAA,IAAI,CAACmkI,UAAU,CAC3B,IAAIsD,oBAAuB94I,CAAAA,MAAAA,CAC3B,GAAI84I,oBAAsB,CAAA,CACxB,MAAMA,oBAAwBA,EAAAA,oBAAAA,CAAqB/C,iBAAiB,CAAC,CACnE+C,qBAAuBA,oBAAqBr5I,CAAAA,QAAO,CAErD,GAAIq5I,qBAAsB,CACxBA,oBAAAA,CAAuBA,qBAAqBr5I,OAAO,CACnD,GAAIq5I,oBAAsB,CAAA,CACxBD,iBAAmBC,oBAAqB52H,CAAAA,cAAc,CAACnM,QAAQ,EAAA,CAC/D09H,qBAAqBnnI,IAAI,CAACusI,iBAAkB,IAAI,CAACrD,UAAU,CAC3DnkI,CAAAA,KAAAA,CAAQoiI,qBACV,CACF,CACF,CACAD,mBAAoBxlI,CAAAA,WAAW,CAAChO,MAAOkiB,CAAAA,cAAc,EACrDqxH,kBAAmBjnI,CAAAA,IAAI,CAACknI,mBAAqB,CAAA,IAAI,CAAC+B,aAAa,CAAA,CAC/D,IAAIwD,OAAU/4I,CAAAA,MAAAA,CAAOkiB,cAAc,CACnC,GAAIliB,OAAO+1I,iBAAiB,CAAE,CAC5BrC,6BAA8BpnI,CAAAA,IAAI,CAACusI,gBAAAA,CAAkB74I,MAAO62I,CAAAA,aAAa,IACzExD,2BAA4B39H,CAAAA,MAAM,CAAC1V,MAAOkiB,CAAAA,cAAc,CAACpM,cAAc,CAACw9H,oBAAqBE,mBAAqBE,CAAAA,6BAAAA,CAAAA,CAClHqF,QAAU1F,4BACZ,CACA0F,QAAQ7lI,cAAc,CAAC,IAAI,CAACoiI,aAAa,CAAEhC,kBAC3C,CAAA,CAAA,IAAI,CAACpxH,cAAc,CAACxM,MAAM,CAAC49H,kBAAAA,CAAoBC,mBAAoBliI,KACrE,EAAA,CAAA,KAAO,CACL,IAAI,CAAC6Q,cAAc,CAACjP,UAAU,CAAC,IAAI,CAACxT,OAAO,CAACyiB,cAAc,CAAE,IAAI,CAAC0zH,cAAc,EACjF,CACF,CACA,IAAI,CAACE,WAAW,CAAG,MACrB,CACF,CACAkD,aAAAA,EAAgB,CACd,GAAI,CAAC,IAAI,CAACp2E,QAAQ,CAAE,CAClB,MACF,CACA,GAAI,IAAI,CAACuyE,OAAO,CAAE,CAChB,MACF,CACA,IAAI,CAACA,OAAO,CAAG,IACf,CAAA,GAAI,IAAI,CAACU,WAAW,EAAI,IAAI,CAACC,WAAW,CAAE,CACxC,IAAI,CAACmB,KAAK,GACZ,CACA,MAAM5C,QAAAA,CAAW,IAAI,CAACtO,SAAS,CAC/B,IAAI,IAAIh3I,EAAI,CAAGkY,CAAAA,GAAAA,CAAMotI,SAASrlJ,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACjDslJ,QAAQ,CAACtlJ,EAAE,CAACiqJ,aAAa,GAC3B,CACF,CACAC,OAAO71I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAEiuI,EAAK,CAAA,CAAC,CAAEC,EAAK,CAAA,CAAC,CAAEC,EAAK,CAAA,CAAC,CAAE,CACtC,GAAIh2I,aAAa4H,IAAM,CAAA,CACrBrd,OAAOG,IAAI,CAACsV,GACZ,GAAI0H,CAAAA,YAAaE,KAAM,CACrBipI,IAAAA,CAAKnmJ,IAAI,CAACgd,CAAAA,EACZ,MAAO,CACLmpI,IAAAA,CAAKnmJ,IAAI,CAACkd,IAAAA,CAAKiC,EAAE,EACnB,CACF,MAAO,GAAIhC,CAAAA,GAAMpU,UAAW,CAC1B,MACF,MAAO,CACLlJ,MAAAA,CAAO2J,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CACjBgpI,CAAAA,CAAAA,IAAAA,CAAK38I,GAAG,CAAC4hJ,EAAAA,CAAIC,GAAIC,EACnB,EAAA,CACAl4H,OAAO9N,SAAS,CAAC,IAAI,CAACimG,WAAW,EAAA,CAAI1rH,OAAQsmJ,IAC7CF,CAAAA,CAAAA,UAAAA,CAAW/lI,WAAW,CAACkT,MAAAA,CAAAA,CACvB,IAAI,CAAC62H,WAAW,CAAChE,UACnB,EAAA,CACAsF,UAAUj2I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACjB,GAAI7H,aAAa4H,IAAM,CAAA,CACrB6oI,WAAW/lJ,IAAI,CAACsV,GAClB,CAAO,KAAA,CACLywI,WAAWv8I,GAAG,CAAC8L,EAAG0H,CAAGG,CAAAA,CAAAA,EACvB,CACA4oI,UAAWx0I,CAAAA,GAAG,CAAC,IAAI,CAACg6G,WAAW,EAC/B,CAAA,CAAA,IAAI,CAACC,WAAW,CAACu6B,YACnB,CACAyF,cAAAA,CAAel2I,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACtB,GAAI7H,CAAAA,YAAa4H,KAAM,CACrB6oI,UAAAA,CAAW/lJ,IAAI,CAACsV,CAAAA,EAClB,MAAO,CACLywI,UAAAA,CAAWv8I,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CACvB,EAAA,CACA,IAAI,CAACsqI,aAAa,CAAC/kI,eAAe,CAACqjI,WAAYA,UAC/C,CAAA,CAAA,IAAI,CAACyB,aAAa,CAACj2I,GAAG,CAACw0I,UAAAA,CAAAA,CACvB,GAAI,CAAC,IAAI,CAACgC,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACA5mI,MAAOzN,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACd8oI,WAAW99H,kBAAkB,CAAC7S,EAAG0H,CAAGG,CAAAA,CAAAA,CAAAA,CACpC,GAAI,IAAI,CAACxL,OAAO,GAAK,IAAA,CAAM,CACzB,IAAI,CAAC81I,aAAa,CAACjpI,IAAI,CAACynI,UAAY,CAAA,IAAI,CAACwB,aAAa,EACxD,MAAO,CACL,MAAMgE,IAAM,IAAI,CAACxC,WAAW,EAC5B,CAAA,MAAMiB,UAAY,IAAI,CAACv4I,OAAO,CAACs3I,WAAW,GAC1C/C,YAAalmJ,CAAAA,IAAI,CAACkqJ,SAAWljI,CAAAA,CAAAA,MAAM,GACnCi/H,UAAWznI,CAAAA,IAAI,CAAC0nI,YAAcD,CAAAA,UAAAA,CAAAA,CAC9B,IAAI,CAACwB,aAAa,CAACjpI,IAAI,CAACynI,WAAYwF,GACtC,EAAA,CACA,GAAI,CAAC,IAAI,CAAC1D,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACA+B,WAAYp2I,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACnB8oI,UAAAA,CAAW99H,kBAAkB,CAAC7S,CAAAA,CAAG0H,EAAGG,CACpC,CAAA,CAAA,IAAI,CAACsqI,aAAa,CAAClpI,GAAG,CAAC0nI,UAAAA,CAAAA,CACvB,GAAI,CAAC,IAAI,CAAC8B,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CArjBA3gJ,WAAYzE,CAAAA,IAAAA,CAAO,UAAU,CAAC,CAC5B,KAAK,EAAI,CAAA,IAAI,CAACkN,IAAI,CAAG,IAAIH,IAAK,CAAA,IAAI,EAAG,IAAI,CAACk2I,aAAa,CAAG,IAAItqI,KAAQ,IAAI,CAACuqI,aAAa,CAAG,IAAI3+H,KAAQ,IAAI,CAAC4+H,UAAU,CAAG,IAAIxqI,KAAK,CAAG,CAAA,CAAA,CAAG,GAAI,IAAI,CAACyqI,gBAAgB,CAAG,IAAIzqI,KAAQ,IAAI,CAACqI,QAAQ,CAAG,IAAIrI,KAAQ,IAAI,CAAC0qI,QAAQ,CAAG,IAAI9+H,KAAQ,IAAI,CAAC++H,WAAW,CAAG,IAAI3qI,KAAQ,IAAI,CAACgsI,MAAM,CAAG,IAAA,CAAM,IAAI,CAACpB,cAAc,CAAG,IAAItkI,IAAAA,CAAQ,IAAI,CAACukI,WAAW,CAAG,KAAO,CAAA,IAAI,CAACzhB,QAAQ,CAAG,EAAG,IAAI,CAAC+gB,OAAO,CAAG,KAAA,CAAO,IAAI,CAACjzH,cAAc,CAAG,IAAI5Q,IAAAA,CAAQ,IAAI,CAACwkI,WAAW,CAAG,KAAO,CAAA,IAAI,CAACqB,eAAe,CAAG,EAAG,IAAI,CAACvC,aAAa,CAAG,IAAIrnI,KAAQ,IAAI,CAACsnI,YAAY,CAAG,IAAA,CAAM,IAAI,CAACvuI,MAAM,CAAG,IAAM,CAAA,IAAI,CAACiuI,GAAG,CAAG,KAAM,IAAI,CAACE,QAAQ,CAAG,IAAA,CAAM,IAAI,CAACh1I,OAAO,CAAG,IAAM,CAAA,IAAI,CAACsmI,SAAS,CAAG,EAAE,CAAE,IAAI,CAACkP,WAAW,CAAG,EAAG,IAAI,CAACryE,QAAQ,CAAG,IAAA,CAAM,IAAI,CAACmyE,mBAAmB,CAAG,KAAO,CAAA,IAAI,CAACgB,iBAAiB,CAAG,KAC7tB,CAAA,IAAI,CAAC1jJ,IAAI,CAAGA,KACd,CAmjBF,CAEA,MAAMonJ,WAAa,IAAInoI,IAAAA,CACvB,MAAMsgI,YAAe,CAAA,IAAItgI,KACzB,MAAMooI,eAAAA,CAAkB,IAAIpoI,IAC5B,CAAA,MAAMqoI,YAWJ,OAAOzrJ,MAAAA,CAAOmE,IAAI,CAAEunJ,SAAS,CAAEv6G,IAAI,CAAE,CACnC,MAAM2iG,MAAAA,CAAS,IAAI8K,MACnB9K,CAAAA,OAAO7C,IAAI,CAAG,IAAImV,SAAUjiJ,CAAAA,IAAAA,CAC5B2vI,CAAAA,MAAO6L,CAAAA,WAAW,CAAG,CACrB7L,CAAAA,OAAOmM,eAAe,CAAG7gB,aACzB0U,CAAAA,MAAAA,CAAO2L,iBAAiB,CAAG,IAAA,CAC3B,OAAOiM,SACL,EAAA,KAAKp1B,eACHwd,MAAO7C,CAAAA,IAAI,CAAC4Y,WAAW,CAAC4B,YAAYE,mBAAmB,CAACx6G,KAAK,CAC7D2iG,CAAAA,OAAOvwH,GAAG,CAAG,EACbuwH,CAAAA,MAAAA,CAAO1hG,UAAU,CAAGqnF,sBAAAA,CACpB,MACGjD,KAAAA,cAAAA,CACHsd,OAAO1hG,UAAU,CAAGqnF,uBACpB,MACF,KAAKpD,sBACHyd,MAAO1hG,CAAAA,UAAU,CAAGsnF,uBACpB,CAAA,KACJ,CACA,OAAOoa,MACT,CAIA,OAAO8X,oBAAAA,CAAqBC,KAAK,CAAE,CACjC,IAAIC,YAAeL,CAAAA,WAAAA,CAAYM,iBAAiB,CAChD,GAAI,CAACD,YAAc,CAAA,CACjBA,aAAeL,WAAYzrJ,CAAAA,MAAM,CAAC,kBAAoBw2H,CAAAA,cAAAA,CACtDi1B,CAAAA,WAAYM,CAAAA,iBAAiB,CAAGD,aAClC,CACAA,aAAavoI,GAAG,CAAGsoI,MAAMG,eAAe,CAAG,EAC3C,MAAMC,UAAAA,CAAaH,aAAa9J,KAAK,CACrCiK,WAAW7gC,WAAW,CAACygC,MAAM7J,KAAK,CAAC72B,WAAW,EAC9C8gC,CAAAA,CAAAA,UAAAA,CAAWpC,WAAW,CAACgC,KAAAA,CAAM7J,KAAK,CAAC6G,WAAW,IAC9CoD,UAAWX,CAAAA,WAAW,CAAC,CAAC,EAAA,CAAI,EAAG,CAC/BC,CAAAA,CAAAA,UAAAA,CAAW/jI,MAAM,CAACykI,UAAAA,CAAW9gC,WAAW,EAAI8gC,CAAAA,UAAAA,CAAWpD,WAAW,EAAI/rI,CAAAA,IAAAA,CAAKgC,GAAG,CAAE8H,CAAAA,MAAM,GACtF88H,YAAatlI,CAAAA,IAAI,CAAC0tI,YAAa1J,CAAAA,gBAAgB,CAAEmJ,UACjD,CAAA,CAAA,MAAMW,aAAeL,KAAMK,CAAAA,YAAY,CACvC,MAAMC,YAAAA,CAAeN,MAAMO,aAAa,CACxCZ,gBAAgBjlI,WAAW,CAAC4lI,aAAaj3I,CAAC,CAAEi3I,YAAavvI,CAAAA,CAAC,CAAEuvI,YAAAA,CAAapvI,CAAC,CAAEovI,YAAAA,CAAa/rI,CAAC,CAC1F8rI,CAAAA,YAAAA,CAAa9tI,IAAI,CAACotI,eAAAA,CAAiB9H,cACnC,OAAOwI,YACT,CACF,CAtDMT,YAEGE,mBAAmB,CAAG,CACzB,IAAIjjI,IAAAA,EAAAA,CAAOX,kBAAkB,CAAC,CAAA,CAAG,GAAI,GACrC,CAAA,CAAA,IAAIW,OAAOX,kBAAkB,CAAC,EAAG,CAAC,EAAA,CAAI,KACtC,IAAIW,IAAAA,EAAAA,CAAOX,kBAAkB,CAAC,EAAA,CAAI,EAAG,CACrC,CAAA,CAAA,IAAIW,OAAOX,kBAAkB,CAAC,CAAC,EAAI,CAAA,CAAA,CAAG,GACtC,IAAIW,IAAAA,EAAAA,CAAOX,kBAAkB,CAAC,CAAA,CAAG,IAAK,GACtC,CAAA,CAAA,IAAIW,OAAOX,kBAAkB,CAAC,EAAG,CAAG,CAAA,GAAA,CAAA,CACrC,CATC0jI,WAAAA,CAiCGM,iBAAiB,CAAG,IAAA,CAuB7B,MAAMM,UAAa,CAAA,IAAIvvI,KACvB,MAAMwvI,kBAAAA,CAAqB,IAAI5xI,YAAa,CAAA,CAAA,CAAA,CAC5C,MAAM6xI,iBAAoB,CAAA,IAAIzvI,KAAK,CAAC,EAAA,CAAK,EAAG,CAC5C,CAAA,CAAA,MAAM0vI,mBAAqB,IAAI1vI,IAAAA,CAAK,EAAG,CAAG,CAAA,EAAA,CAAA,CAC1C,MAAM2vI,iBAAAA,CAAoB,CACxBC,cAAAA,CAAgB,EAChBC,eAAiB,CAAA,CAAA,CACjBC,kBAAmB,CACnBC,CAAAA,UAAAA,CAAY,EACZC,cAAgB,CAAA,CAAA,CAChBC,WAAY,CACZC,CAAAA,UAAAA,CAAY,EACZC,UAAY,CAAA,CAAA,CACZC,gBAAiB,CACjBC,CAAAA,gBAAAA,CAAkB,EAClBC,KAAO,CAAA,CACT,EACA,MAAMC,KAAAA,CAAQ,CACZ,qBAAuB,CAAA,CAAC,EAAEz2B,mBAAoB,CAAA,CAAC,CAAC,CAChD,iBAAA,CAAmB,CAAC,EAAEC,eAAAA,CAAgB,CAAC,CAAC,CACxC,kBAAmB,CAAC,EAAEC,gBAAgB,CAAC,CAAC,CACxC,mBAAqB,CAAA,CAAC,EAAEC,iBAAkB,CAAA,CAAC,CAAC,CAC5C,qBAAA,CAAuB,CAAC,EAAEJ,mBAAAA,CAAoB,EAAE,CAClD,EACA,MAAMyK,kBAAAA,CAAqB,CAACzwE,MAAQ28F,CAAAA,MAAAA,GAAAA,CAClC,OAAO5qJ,MAAOoW,CAAAA,IAAI,CAAC63C,MAAQjpD,CAAAA,CAAAA,GAAG,CAAC,GAACgB,EAAM,CAAC,SAAS,EAAE4kJ,OAAO,EAAE5kJ,GAAAA,CAAI,EAAE,EAAEioD,MAAM,CAACjoD,GAAI,CAAA,CAAC,CAAC,CAAEhI,CAAAA,IAAI,CAAC,IACzF,CAAA,CAAA,CACA,MAAM6sJ,kBAAAA,CAAqB,CAAC;;EAC1B,EAAEnsB,kBAAAA,CAAmBqrB,kBAAmB,kBAAoB,CAAA,CAAA;EAC5D,EAAErrB,kBAAAA,CAAmBisB,MAAO,EAAI,CAAA,CAAA;AAClC,CAAC,CACD,MAAMG,YAoBJxjH,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACyjH,aAAa,EAAEzjH,OAAAA,EACpB,CAAA,IAAI,CAACyjH,aAAa,CAAG,KACvB,CACAx6F,aAAcnoB,CAAAA,MAAM,CAAEtkB,KAAK,CAAEC,MAAM,CAAE9f,MAAM,CAAExC,IAAI,CAAE,CACjD,MAAMwpC,GAAM,CAAA,IAAInB,OAAQ1B,CAAAA,MAAAA,CAAQ,CAC9B3mC,IAAAA,CAAMA,IACNqiB,CAAAA,KAAAA,CAAOA,KACPC,CAAAA,MAAAA,CAAQA,MACR4lB,CAAAA,OAAAA,CAAS,KACT1lC,CAAAA,MAAAA,CAAQA,MACRioC,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBAAAA,CACV1c,IAAMgpB,CAAAA,mBAAAA,CACNoN,SAAW5W,CAAAA,cAAAA,CACXyW,SAAWzW,CAAAA,cAAAA,CACXyX,WAAY,CACd,CAAA,CAAA,CACA,OAAO5B,GACT,CACA+/G,SAAAA,CAAUn5I,GAAG,CAAEo5I,KAAK,CAAE,CACpB,IAAI,CAACC,SAAS,CAAChuJ,IAAI,CAAC2U,GACpB,CAAA,CAAA,IAAI,CAACs5I,WAAW,CAACjuJ,IAAI,CAAC+tJ,KAAAA,EACxB,CACAG,cAAiB,EAAA,CACf,IAAI,CAACL,aAAa,CAACx8G,IAAI,EAAA,CAAG7nC,GAAG,CAAC,IAAI,CAAC2kJ,WAAW,CAAA,CAC9C,IAAI,CAACN,aAAa,CAACx7G,MAAM,GAC3B,CACA+7G,cAAiB,EAAA,CACf,IAAI,CAACC,gBAAgB,CAACz1G,QAAQ,CAAC,IAAI,CAACi1G,aAAa,EACnD,CACAS,gBAAiBx/H,CAAAA,SAAS,CAAEy/H,IAAI,CAAE,CAChC,MAAMtc,GAAAA,CAAMsc,KAAKnM,KAAK,CAACxZ,iBAAiB,EAAA,CACxCqJ,GAAIryH,CAAAA,IAAI,CAACkP,SAAAA,CAAAA,CAAW/X,SAAS,CAAC,CAAC,CAC/B+X,CAAAA,CAAAA,SAAAA,CAAUztB,SAAS,GACrB,CACAmtJ,iBAAAA,CAAkBvC,KAAK,CAAE,CACvB,MAAMha,GAAMga,CAAAA,KAAAA,CAAM7J,KAAK,CAACxZ,iBAAiB,EACzCqJ,CAAAA,GAAAA,CAAIvvH,eAAe,CAACiqI,iBAAmBF,CAAAA,UAAAA,CACvCC,CAAAA,kBAAkB,CAAC,CAAA,CAAE,CAAGD,UAAAA,CAAWn3I,CACnCo3I,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAAGD,UAAWzvI,CAAAA,CAAC,CACpC0vI,kBAAkB,CAAC,CAAE,CAAA,CAAGD,UAAWtvI,CAAAA,CAAC,CACpC80H,GAAAA,CAAIvvH,eAAe,CAACkqI,mBAAoBH,UACxCC,CAAAA,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAAGD,UAAWn3I,CAAAA,CAAC,CACpCo3I,kBAAkB,CAAC,CAAA,CAAE,CAAGD,UAAAA,CAAWzvI,CACnC0vI,CAAAA,kBAAkB,CAAC,CAAE,CAAA,CAAGD,UAAWtvI,CAAAA,CAAC,CACpC,OAAOuvI,kBACT,CACA+B,YAAaxC,CAAAA,KAAK,CAAEyC,UAAU,CAAE,CAC9B,MAAMC,MAAS1C,CAAAA,KAAAA,CAAM7wI,KAAK,GAAKw7G,cAC/B,CAAA,MAAMg4B,gBAAmB3C,CAAAA,KAAAA,CAAM4C,sBAAsB,CACrD,MAAMC,QAAW,CAAA,IAAI,CAACC,cAAc,EAAI,CAAC,CAAC9C,KAAM+C,CAAAA,OAAO,EAAIJ,gBAAAA,CAC3D,MAAMK,MAAAA,CAAS,IAAI,CAACC,iBAAiB,EAAIjD,KAAMkD,CAAAA,KAAK,GAAKn4B,mBAAAA,CACzD,MAAMo4B,WAAAA,CAAc,IAAI,CAACC,cAAc,EAAIpD,KAAAA,CAAMmD,WAAW,EAAIR,gBAChE,CAAA,MAAMU,IAAMrD,KAAM7J,CAAAA,KAAK,CAAC72B,WAAW,EACnC,CAAA,IAAIgkC,qBAAwB,CAAA,IAAA,CAC5B,IAAI/C,aAAgB,CAAA,IAAA,CACpB,GAAImC,MAAAA,CAAQ,CACV,GAAIS,WAAa,CAAA,CACf,MAAMI,eAAAA,CAAkBvD,KAAMwD,CAAAA,aAAa,CAAC,IAAA,CAAM,CAClDF,CAAAA,CAAAA,qBAAAA,CAAwBC,gBAAgBE,aAC1C,CAAO,KAAA,GAAIZ,QAAU,CAAA,CACnBS,qBAAwB1D,CAAAA,WAAAA,CAAYG,oBAAoB,CAACC,KAC3D,EAAA,CACF,CAAO,KAAA,CACL,GAAImD,WAAAA,EAAeN,SAAU,CAC3BtC,aAAAA,CAAgBP,KAAMO,CAAAA,cAAa,CAEvC,CACA,MAAMmD,SAAY,CAAA,IAAI,CAACxB,WAAW,CAClC,MAAMyB,QAAW,CAAA,IAAI,CAACC,UAAU,CAChC,MAAMC,cAAAA,CAAiBpB,UAAa,CAAA,IAAI,CAACb,aAAa,CAACjnI,KAAK,CAAG,CAC/D+oI,CAAAA,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,kBAAkBC,cAAc,CAAG,CAAE,CAAA,CAAGwC,GAAIh6I,CAAAA,CAAC,CAC5Eq6I,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBC,CAAAA,cAAc,CAAG,CAAA,CAAE,CAAGwC,GAAItyI,CAAAA,CAAC,CAC5E2yI,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBC,CAAAA,cAAc,CAAG,CAAA,CAAE,CAAGwC,GAAAA,CAAInyI,CAC3EwyI,CAAAA,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBC,CAAAA,cAAc,CAAG,CAAA,CAAE,CAAGb,KAAAA,CAAM8D,cAAc,CAC3F,MAAMC,aAAAA,CAAgB/D,KAAM+D,CAAAA,aAAa,CACzCJ,QAAQ,CAACE,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBG,iBAAiB,CAAG,EAAE,CAAGgD,aAAa,CAAC,CAAA,CAAE,CACzFJ,QAAQ,CAACE,eAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBG,iBAAiB,CAAG,CAAE,CAAA,CAAGgD,aAAa,CAAC,CAAE,CACzFJ,CAAAA,QAAQ,CAACE,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBG,iBAAiB,CAAG,CAAA,CAAE,CAAGgD,aAAa,CAAC,CAAA,CAAE,CACzF,GAAI/D,KAAMmD,CAAAA,WAAW,CAAE,CACrB,MAAMI,eAAAA,CAAkBvD,KAAMwD,CAAAA,aAAa,CAAC,IAAM,CAAA,CAAA,CAAA,CAClD,MAAMQ,MAAAA,CAAShE,KAAMiE,CAAAA,qBAAqB,CAACV,eAAAA,CAAAA,CAC3C,MAAMW,QAAAA,CAAWv0I,YAAaC,CAAAA,UAAU,CAACo0I,MAAAA,CAAOG,IAAI,CAAA,CACpD,MAAMC,cAAiBz0I,CAAAA,YAAAA,CAAaC,UAAU,CAACo0I,MAAOK,CAAAA,UAAU,CAChEV,CAAAA,QAAQ,CAACE,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBG,iBAAiB,CAAG,CAAE,CAAA,CAAGmD,SAAWE,cAAkB,EAAA,GACxG,CACA,GAAI1B,MAAQ,CAAA,CACV,IAAI,CAACL,gBAAgB,CAAC7B,UAAYR,CAAAA,KAAAA,CAClC0D,CAAAA,SAAS,CAACG,cAAAA,CAAiB,EAAIjD,iBAAkBE,CAAAA,eAAe,CAAG,CAAA,CAAE,CAAGN,UAAAA,CAAWn3I,CACnFq6I,CAAAA,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBE,CAAAA,eAAe,CAAG,CAAA,CAAE,CAAGN,UAAWzvI,CAAAA,CAAC,CACpF2yI,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBE,CAAAA,eAAe,CAAG,CAAA,CAAE,CAAGN,UAAAA,CAAWtvI,EACrF,CACAyyI,QAAQ,CAACE,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBE,CAAAA,eAAe,CAAG,CAAA,CAAE,CAAGd,KAAMsE,CAAAA,iBAAiB,CAACnB,WAAAA,CAAaN,QAC5G,CAAA,CAAA,GAAIS,qBAAuB,CAAA,CACzB,MAAMiB,OAAUjB,CAAAA,qBAAAA,CAAsBt0I,IAAI,CAC1C,IAAI,IAAIc,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,EAAA,CAAIA,CAAI,EAAA,CAAA,CACzB4zI,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,kBAAkBI,UAAU,CAAGlxI,CAAE,CAAA,CAAGy0I,OAAO,CAACz0I,CAAE,EAC/E,CACF,CACA,GAAIywI,aAAAA,CAAe,CACjBmD,SAAS,CAACG,cAAAA,CAAiB,EAAIjD,iBAAkBK,CAAAA,cAAc,CAAG,CAAA,CAAE,CAAGV,aAAAA,CAAcl3I,CACrFq6I,CAAAA,SAAS,CAACG,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBK,cAAc,CAAG,EAAE,CAAGV,aAAAA,CAAcxvI,CACrF2yI,CAAAA,SAAS,CAACG,cAAAA,CAAiB,EAAIjD,iBAAkBK,CAAAA,cAAc,CAAG,CAAA,CAAE,CAAGV,aAAAA,CAAcrvI,CAAC,CAAG,EAC3F,CACA,GAAI8xI,MAAQ,CAAA,CACV,MAAMwB,SAAAA,CAAY,IAAI,CAACjC,iBAAiB,CAACvC,KACzC0D,CAAAA,CAAAA,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,kBAAkBS,eAAe,CAAG,CAAE,CAAA,CAAGmD,SAAS,CAAC,CAAE,CACpFd,CAAAA,SAAS,CAACG,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBS,eAAe,CAAG,EAAE,CAAGmD,SAAS,CAAC,CAAA,CAAE,CACpFd,SAAS,CAACG,cAAiB,CAAA,CAAA,CAAIjD,iBAAkBS,CAAAA,eAAe,CAAG,CAAA,CAAE,CAAGmD,SAAS,CAAC,CAAE,CACpFd,CAAAA,SAAS,CAACG,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBU,gBAAgB,CAAG,CAAA,CAAE,CAAGkD,SAAS,CAAC,CAAA,CAAE,CACrFd,SAAS,CAACG,cAAAA,CAAiB,CAAIjD,CAAAA,iBAAAA,CAAkBU,gBAAgB,CAAG,CAAE,CAAA,CAAGkD,SAAS,CAAC,CAAE,CACrFd,CAAAA,SAAS,CAACG,cAAAA,CAAiB,EAAIjD,iBAAkBU,CAAAA,gBAAgB,CAAG,CAAA,CAAE,CAAGkD,SAAS,CAAC,CAAA,EAAE,CAEzF,CArIAznJ,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,IAAI,CAACgkH,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAAChkH,MAAM,CAAGA,MACdu3F,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqB15B,GAAG,CAAC,uBAAwBmkJ,kBAC1ElrB,CAAAA,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAQ/H,CAAAA,mBAAAA,CAAAA,CAAqB35B,GAAG,CAAC,uBAAwBmkJ,kBAC1E,CAAA,CAAA,IAAI,CAACoB,cAAc,CAAG,KACtB,CAAA,IAAI,CAACM,cAAc,CAAG,KACtB,CAAA,IAAI,CAACH,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACwB,SAAS,CAAG,GAAA,CACjB,MAAMC,mBAAsB9D,CAAAA,iBAAAA,CAAkBW,KAC9C,CAAA,IAAI,CAACW,WAAW,CAAG,IAAIrzI,YAAAA,CAAa,CAAI61I,CAAAA,mBAAAA,CAAsB,IAAI,CAACD,SAAS,CAC5E,CAAA,IAAI,CAACb,UAAU,CAAG,IAAIzxH,WAAAA,CAAY,IAAI,CAAC+vH,WAAW,CAACxyI,MAAM,CACzD,CAAA,IAAI,CAACkyI,aAAa,CAAG,IAAI,CAACx6F,aAAa,CAAC,IAAI,CAACnoB,MAAM,CAAEylH,oBAAqB,IAAI,CAACD,SAAS,CAAEx2H,mBAAqB,CAAA,eAAA,CAC/G,CAAA,IAAI,CAACm0H,gBAAgB,CAAG,IAAI,CAACnjH,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,eAClD,CAAA,CAAA,IAAI,CAACslH,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAAC7C,SAAS,CAAG,IAAI9wI,IACrB,CAAA,IAAI,CAAC+wI,WAAW,CAAG,IAAI/wI,KACzB,CAoHF,CAEA,MAAM4zI,QAAW,CAAA,IAAI5zI,IACrB,CAAA,MAAM6zI,QAAW,CAAA,IAAI7zI,IACrB,CAAA,MAAM8zI,QAAW,CAAA,IAAI9zI,KACrB,MAAM+zI,OAAAA,CAAU,IAAI/kI,WACpB,CAAMglI,MAAAA,YAAAA,CACJloJ,WAAa,EAAA,CACX,IAAI,CAACijJ,KAAK,CAAG,IACb,CAAA,IAAI,CAACt3I,GAAG,CAAG,IAAIuI,IACf,CAAA,IAAI,CAACtI,GAAG,CAAG,IAAIsI,KACjB,CACF,CACA,MAAMi0I,aAiBJ,CAAA,IAAIC,iBAAkBnwG,CAAAA,KAAK,CAAE,CAC3B,GAAIA,KAAU,GAAA,IAAI,CAACowG,kBAAkB,CAAE,CACrC,IAAI,CAACA,kBAAkB,CAAGpwG,KAC1B,CAAA,IAAI,CAACqwG,WAAW,CAAG,KACrB,CACF,CACA,IAAIF,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACC,kBACd,CACA,IAAIE,KAAM3oJ,CAAAA,KAAK,CAAE,CACfkoJ,QAAAA,CAAS9wJ,IAAI,CAAC4I,KAAO+H,CAAAA,CAAAA,KAAK,EAC1B,CAAA,GAAI,CAAC,IAAI,CAAC6gJ,MAAM,CAAC96I,MAAM,CAACo6I,QAAW,CAAA,CAAA,CACjC,IAAI,CAACU,MAAM,CAACxxJ,IAAI,CAAC8wJ,QAAAA,CAAAA,CACjB,IAAI,CAACW,WAAW,CAACzxJ,IAAI,CAAC8wJ,QAAUjyI,CAAAA,CAAAA,GAAG,CAAC3B,IAAAA,CAAKgC,GAAG,CAC5C,CAAA,IAAI,CAACoyI,WAAW,CAAG,KACrB,CACF,CACA,IAAIC,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MAAM,CAEpBpnH,OAAAA,EAAU,CACR,IAAI,CAACsnH,YAAY,CAACtnH,OAAO,EACzB,CAAA,IAAI,CAACunH,qBAAqB,GAC5B,CACAA,qBAAwB,EAAA,CACtB,GAAI,IAAI,CAACC,cAAc,CAAE,CACvB,IAAI,CAACA,cAAc,CAACxnH,OAAO,EAC3B,CAAA,IAAI,CAACwnH,cAAc,CAAG,KACxB,CACF,CACAC,gBAAAA,CAAiB3mH,MAAM,CAAE,CACvB,IAAI,CAAC4mH,cAAc,CAAG5mH,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,aAC3C,CAAA,CAAA,IAAI,CAACymH,kBAAkB,CAAG7mH,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,kBAC/C,CAAA,IAAI,CAAC0mH,sBAAsB,CAAG9mH,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,qBAAA,CACnD,CAAA,IAAI,CAAC2mH,qBAAqB,CAAG/mH,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,oBAClD,CAAA,CAAA,IAAI,CAAC4mH,uBAAuB,CAAG,IAAIp3I,YAAa,CAAA,CAAA,CAChD,CAAA,IAAI,CAACq3I,mBAAmB,CAAGjnH,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,kBAAA,CAChD,CAAA,IAAI,CAAC8mH,qBAAqB,CAAG,IAAIt3I,YAAAA,CAAa,CAC9C,CAAA,CAAA,IAAI,CAACu3I,qBAAqB,CAAGnnH,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,oBAAA,CAClD,CAAA,IAAI,CAACgnH,uBAAuB,CAAG,IAAIx3I,YAAAA,CAAa,CAChD,CAAA,CAAA,IAAI,CAACy3I,gCAAgC,CAAGrnH,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,+BAC7D,CAAA,CAAA,IAAI,CAACknH,kCAAkC,CAAG,IAAI13I,YAAAA,CAAa,CAC3D,CAAA,CAAA,IAAI,CAAC23I,kBAAkB,CAAGvnH,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,iBAC/C,CAAA,CAAA,IAAI,CAAConH,oBAAoB,CAAG,IAAI53I,YAAa,CAAA,CAAA,CAC7C,CAAA,IAAI,CAAC63I,kBAAkB,CAAGznH,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,iBAAA,CAC/C,CAAA,IAAI,CAACsnH,oBAAoB,CAAG,IAAI93I,YAAa,CAAA,CAAA,EAC/C,CACA+3I,YAAAA,CAAaC,cAAc,CAAE,CAC3B,GAAIA,cAAAA,CAAgB,CAClB,IAAI,CAACvB,KAAK,CAAGuB,cAAAA,CAAevB,KAC5B,CAAA,IAAI,CAACH,iBAAiB,CAAG0B,cAAAA,CAAeC,gBAAgB,CACxD,IAAI,CAACrB,YAAY,CAAC3C,cAAc,CAAG+D,cAAe/D,CAAAA,cAAc,CAChE,IAAI,CAAC2C,YAAY,CAACrC,cAAc,CAAGyD,cAAAA,CAAezD,cAClD,CAAA,IAAI,CAACqC,YAAY,CAACxC,iBAAiB,CAAG4D,cAAe5D,CAAAA,kBAAiB,CAE1E,CACA8D,WAAAA,EAAc,CACZ,GAAI,IAAI,CAAC1B,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAG,KACnB,CAAA,MAAMvnI,EAAK,CAAA,IAAI,CAACynI,MAAM,CAACl8I,CAAC,CACxB,MAAM0U,EAAAA,CAAK,IAAI,CAACwnI,MAAM,CAACx0I,CAAC,CACxB,MAAMiN,EAAAA,CAAK,IAAI,CAACunI,MAAM,CAACr0I,CAAC,CACxB,MAAM81I,QAAWlpI,CAAAA,EAAAA,CAAKC,EAAKC,CAAAA,EAAAA,CAC3B,MAAMipI,WAAAA,CAAc,IAAI,CAAC9B,iBAAiB,CAAG6B,QAC7C,CAAA,IAAIrsI,KAAQpmB,CAAAA,IAAAA,CAAK0V,IAAI,CAAC1V,IAAAA,CAAKud,IAAI,CAACm1I,WAChCtsI,CAAAA,CAAAA,CAAAA,KAAAA,CAAQtS,IAAK0B,CAAAA,OAAO,CAAC4Q,KAAO,CAAA,IAAI,CAACwqI,iBAAiB,CAClD,CAAA,MAAMvqI,MAASrmB,CAAAA,IAAAA,CAAK0V,IAAI,CAACg9I,WAAAA,CAActsI,KACvC,CAAA,CAAA,IAAI,CAACgsI,oBAAoB,CAAC,CAAE,CAAA,CAAG7oI,EAC/B,CAAA,IAAI,CAAC6oI,oBAAoB,CAAC,EAAE,CAAG5oI,EAC/B,CAAA,IAAI,CAAC4oI,oBAAoB,CAAC,CAAA,CAAE,CAAG3oI,EAC/B,CAAA,IAAI,CAACyoI,oBAAoB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACtB,iBAAiB,CACrD,IAAI,CAACsB,oBAAoB,CAAC,CAAE,CAAA,CAAG3oI,EAAKE,CAAAA,EAAAA,CAAK,IAAI,CAACmnI,iBAC9C,CAAA,IAAI,CAACsB,oBAAoB,CAAC,CAAE,CAAA,CAAG3oI,EAAK,CAAA,IAAI,CAACqnI,iBACzC,CAAA,IAAI,CAAC+B,QAAQ,CAAG,IAAIC,kBAAkBF,WACtC,CAAA,CAAA,IAAI,CAACxqF,MAAM,CAAG,IAAIhtD,UAAAA,CAAWu3I,QAC7B,CAAA,CAAA,IAAI,CAACf,uBAAuB,CAAC,CAAE,CAAA,CAAGtrI,KAClC,CAAA,IAAI,CAACsrI,uBAAuB,CAAC,CAAA,CAAE,CAAG,CAAA,CAAMtrI,KACxC,CAAA,IAAI,CAACsrI,uBAAuB,CAAC,CAAE,CAAA,CAAG,EAAMrrI,MACxC,CAAA,IAAI,CAAC8qI,qBAAqB,EAC1B,CAAA,IAAI,CAACC,cAAc,CAAG,IAAI,CAACF,YAAY,CAACr+F,aAAa,CAAC,IAAI,CAACnoB,MAAM,CAAEtkB,KAAAA,CAAOC,MAAQ2V,CAAAA,cAAAA,CAAgB,gBACpG,EAAA,CACF,CACA0xH,cAAiB,EAAA,CACf,IAAI,CAAC0D,cAAc,CAACvgH,IAAI,EAAA,CAAG7nC,GAAG,CAAC,IAAI,CAAC2pJ,QAAQ,CAC5C,CAAA,IAAI,CAACvB,cAAc,CAACv/G,MAAM,EAC1B,CAAA,IAAI,CAACq/G,YAAY,CAACxD,cAAc,GAClC,CACAE,cAAAA,EAAiB,CACf,IAAI,CAAC0D,cAAc,CAACl5G,QAAQ,CAAC,IAAI,CAACy6G,WAAW,CAACnyJ,MAAM,CAAG,CAAA,CAAI,EAAI,CAC/D,CAAA,CAAA,IAAI,CAACwwJ,YAAY,CAACtD,cAAc,EAChC,CAAA,IAAI,CAAC4D,sBAAsB,CAACp5G,QAAQ,CAAC,IAAI,CAACg5G,cAAc,EACxD,IAAI,CAACG,kBAAkB,CAACn5G,QAAQ,CAAC,IAAI,CAACw4G,iBAAiB,CACvD,CAAA,MAAMnD,WAAc,CAAA,IAAI,CAACA,WAAW,CACpC,IAAI,CAACuE,kCAAkC,CAAC,CAAA,CAAE,CAAG,IAAI,CAAChB,MAAM,CAACl8I,CAAC,CAAG24I,WAAAA,CAAY34I,CACzE,CAAA,IAAI,CAACk9I,kCAAkC,CAAC,CAAE,CAAA,CAAG,IAAI,CAAChB,MAAM,CAACx0I,CAAC,CAAGixI,WAAYjxI,CAAAA,CAAC,CAC1E,IAAI,CAACw1I,kCAAkC,CAAC,CAAA,CAAE,CAAG,IAAI,CAAChB,MAAM,CAACr0I,CAAC,CAAG8wI,WAAAA,CAAY9wI,CAAC,CAC1E,IAAI,CAACo1I,gCAAgC,CAAC35G,QAAQ,CAAC,IAAI,CAAC45G,kCAAkC,CACtF,CAAA,IAAI,CAACJ,qBAAqB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACpE,SAAS,CAAC14I,CAAC,CAChD,IAAI,CAAC88I,qBAAqB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACpE,SAAS,CAAChxI,CAAC,CAChD,IAAI,CAACo1I,qBAAqB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACpE,SAAS,CAAC7wI,CAAC,CAChD,IAAI,CAACm1I,uBAAuB,CAAC,CAAA,CAAE,CAAGrE,WAAAA,CAAY34I,CAAC,CAC/C,IAAI,CAACg9I,uBAAuB,CAAC,CAAE,CAAA,CAAGrE,WAAYjxI,CAAAA,CAAC,CAC/C,IAAI,CAACs1I,uBAAuB,CAAC,EAAE,CAAGrE,WAAAA,CAAY9wI,CAAC,CAC/C,IAAI,CAAC80I,qBAAqB,CAACr5G,QAAQ,CAAC,IAAI,CAACs5G,uBAAuB,CAChE,CAAA,IAAI,CAACC,mBAAmB,CAACv5G,QAAQ,CAAC,IAAI,CAACw5G,qBAAqB,CAAA,CAC5D,IAAI,CAACC,qBAAqB,CAACz5G,QAAQ,CAAC,IAAI,CAAC05G,uBAAuB,CAAA,CAChE,IAAI,CAACG,kBAAkB,CAAC75G,QAAQ,CAAC,IAAI,CAAC85G,oBAAoB,CAC1D,CAAA,IAAI,CAACC,kBAAkB,CAAC/5G,QAAQ,CAAC,IAAI,CAACg6G,oBAAoB,EAC5D,CACAU,mBAAAA,CAAoBC,cAAc,CAAE5+I,GAAG,CAAEC,GAAG,CAAE,CAC5CD,GAAAA,CAAI3U,IAAI,CAACuzJ,cAAe5+I,CAAAA,GAAG,EAC3BA,GAAIkK,CAAAA,GAAG,CAAC,IAAI,CAACmvI,SAAS,CACtBr5I,CAAAA,GAAAA,CAAIqJ,GAAG,CAAC,IAAI,CAACiwI,WAAW,CACxBt5I,CAAAA,GAAAA,CAAI6J,IAAI,CAAC7J,IAAK,IAAI,CAAC48I,KAAK,CAAA,CACxB58I,GAAIhE,CAAAA,KAAK,EACTiE,CAAAA,GAAAA,CAAI5U,IAAI,CAACuzJ,cAAe3+I,CAAAA,GAAG,CAC3BA,CAAAA,GAAAA,CAAIiK,GAAG,CAAC,IAAI,CAACmvI,SAAS,CACtBp5I,CAAAA,GAAAA,CAAIoJ,GAAG,CAAC,IAAI,CAACiwI,WAAW,CAAA,CACxBr5I,GAAI4J,CAAAA,IAAI,CAAC5J,GAAAA,CAAK,IAAI,CAAC28I,KAAK,CACxB38I,CAAAA,GAAAA,CAAIsB,IAAI,EAAA,CACRvB,GAAIC,CAAAA,GAAG,CAACsI,IAAAA,CAAK8B,IAAI,CAAA,CACjBpK,GAAID,CAAAA,GAAG,CAAC,IAAI,CAAC88I,WAAW,EAC1B,CACA+B,aAAAA,CAAcC,MAAM,CAAE,CACpB,MAAM/C,SAAY,CAAA,IAAI,CAACgB,YAAY,CAAChB,SAAS,CAC7C,MAAMgD,UAAAA,CAAa,IAAI,CAACL,WAAW,CACnC,IAAI3E,UAAa,CAAA,CAAA,CACjB+E,MAAO7lJ,CAAAA,OAAO,CAAEq+I,KACd,EAAA,CAAA,MAAM0H,YAAe,CAAA,CAAC,EAAE1H,KAAMp3G,CAAAA,IAAI,EAAIyoF,mBAAAA,CAAsBC,uBAAsB,CAAC,CACnF,CAAA,MAAMq2B,kBAAqB3H,CAAAA,KAAAA,CAAMvzI,IAAI,GAAKk+G,cAAkBq1B,EAAAA,KAAAA,CAAMG,eAAe,GAAK,CACtF,CAAA,GAAIH,MAAMn4I,OAAO,EAAIm4I,KAAMvzI,CAAAA,IAAI,GAAK+9G,qBAAAA,EAAyBw1B,KAAMjW,CAAAA,gBAAgB,EAAIiW,KAAAA,CAAMtpC,SAAS,CAAG,CAAKgxC,EAAAA,YAAAA,EAAgB,CAACC,kBAAAA,CAAoB,CACjJ,GAAIlF,UAAAA,CAAagC,SAAW,CAAA,CAC1B,IAAI6C,cAAAA,CACJ,GAAI7E,UAAAA,CAAagF,WAAWxyJ,MAAM,CAAE,CAClCqyJ,cAAAA,CAAiBG,UAAU,CAAChF,UAAW,EACzC,MAAO,CACL6E,cAAAA,CAAiB,IAAIrC,YAAAA,CACrBwC,UAAW3xJ,CAAAA,IAAI,CAACwxJ,cAAAA,EAClB,CACAA,cAAAA,CAAetH,KAAK,CAAGA,KACvBA,CAAAA,KAAAA,CAAM4H,cAAc,CAAC5C,SACrBsC,cAAe5+I,CAAAA,GAAG,CAAC3U,IAAI,CAACixJ,OAAAA,CAAQ5iI,MAAM,EAAA,CAAA,CACtCklI,eAAe3+I,GAAG,CAAC5U,IAAI,CAACixJ,OAAQ9iI,CAAAA,MAAM,EACtCugI,CAAAA,CAAAA,aACF,CACF,CACF,CACAgF,CAAAA,CAAAA,UAAWxyJ,CAAAA,MAAM,CAAGwtJ,WACtB,CACAoF,cAAAA,EAAiB,CACf,MAAMJ,UAAa,CAAA,IAAI,CAACL,WAAW,CACnC,MAAM1+I,GAAAA,CAAM,IAAI,CAACq5I,SAAS,CAC1B,MAAMp5I,GAAAA,CAAM,IAAI,CAACm/I,SAAS,CAC1B,GAAIL,UAAWxyJ,CAAAA,MAAM,CAAG,CAAA,CAAG,CACzByT,GAAI3U,CAAAA,IAAI,CAAC0zJ,UAAU,CAAC,CAAA,CAAE,CAAC/+I,GAAG,CAC1BC,CAAAA,GAAAA,CAAI5U,IAAI,CAAC0zJ,UAAU,CAAC,CAAE,CAAA,CAAC9+I,GAAG,CAC1B,CAAA,IAAI,IAAI3T,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIyyJ,UAAWxyJ,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC0T,GAAAA,CAAIA,GAAG,CAAC++I,UAAU,CAACzyJ,EAAE,CAAC0T,GAAG,CACzBC,CAAAA,GAAAA,CAAIA,GAAG,CAAC8+I,UAAU,CAACzyJ,CAAE,CAAA,CAAC2T,GAAG,EAC3B,CACF,CAAA,KAAO,CACLD,GAAAA,CAAInL,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACdoL,GAAIpL,CAAAA,GAAG,CAAC,CAAA,CAAG,EAAG,CAChB,EAAA,CACA,IAAI,CAACykJ,WAAW,CAACnvI,IAAI,CAAClK,IAAKD,GAC3B,CAAA,CAAA,IAAI,CAAC+8I,YAAY,CAAC5D,SAAS,CAACn5I,GAAAA,CAAK,IAAI,CAACs5I,WAAW,EACnD,CACA+F,cAAAA,CAAelB,cAAc,CAAE,CAC7B,IAAI,CAACpqF,MAAM,CAACurF,IAAI,CAAC,CACjB,CAAA,CAAA,IAAI,CAACd,QAAQ,CAACc,IAAI,CAAC,CAAA,CACnB,CAAA,IAAI,CAACvC,YAAY,CAACxC,iBAAiB,CAAG4D,cAAiBA,CAAAA,cAAAA,CAAe5D,iBAAiB,CAAG,KAC1F,CAAA,MAAMgF,IAAO,CAAA,IAAI,CAAC1C,MAAM,CAACl8I,CAAC,CAC1B,MAAM6+I,IAAAA,CAAO,IAAI,CAAC3C,MAAM,CAACr0I,CAAC,CAC1B,MAAMurD,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM0rF,KAAQ,CAAA,IAAI,CAAC/C,kBAAkB,CACrC,MAAM8B,QAAAA,CAAW,IAAI,CAACA,QAAQ,CAC9B,MAAMkB,kBAAAA,CAAqB,IAAI,CAACjD,iBAAiB,CACjD,MAAMsC,UAAAA,CAAa,IAAI,CAACL,WAAW,CACnC,IAAI,IAAIpyJ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIyyJ,UAAWxyJ,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMsyJ,cAAiBG,CAAAA,UAAU,CAACzyJ,CAAE,CAAA,CACpC,MAAMgrJ,KAAAA,CAAQsH,cAAetH,CAAAA,KAAK,CAClC,IAAI,CAACyF,YAAY,CAACjD,YAAY,CAACxC,KAAAA,CAAOhrJ,CACtC,CAAA,CAAA,IAAI,CAACqyJ,mBAAmB,CAACC,cAAgBxC,CAAAA,QAAAA,CAAUC,QACnD,CAAA,CAAA,MAAMsD,MAASvD,CAAAA,QAAAA,CAASz7I,CAAC,CACzB,MAAMi/I,IAAOvD,CAAAA,QAAAA,CAAS17I,CAAC,CACvB,MAAMk/I,MAAAA,CAASzD,SAAS/zI,CAAC,CACzB,MAAMy3I,IAAAA,CAAOzD,QAASh0I,CAAAA,CAAC,CACvB,MAAM03I,MAAS3D,CAAAA,QAAAA,CAAS5zI,CAAC,CACzB,MAAMw3I,IAAAA,CAAO3D,QAAS7zI,CAAAA,CAAC,CACvB,IAAI,IAAI7H,CAAIg/I,CAAAA,MAAAA,CAAQh/I,CAAKi/I,EAAAA,IAAAA,CAAMj/I,CAAI,EAAA,CAAA,CACjC,IAAI,IAAI6H,CAAAA,CAAIu3I,MAAQv3I,CAAAA,CAAAA,EAAKw3I,IAAMx3I,CAAAA,CAAAA,EAAAA,CAAI,CACjC,IAAI,IAAIH,CAAIw3I,CAAAA,MAAAA,CAAQx3I,CAAKy3I,EAAAA,IAAAA,CAAMz3I,CAAI,EAAA,CAAA,CACjC,MAAM43I,YAAAA,CAAet/I,CAAI4+I,CAAAA,IAAAA,EAAQ/2I,CAAAA,CAAIH,CAAIm3I,CAAAA,IAAG,CAC5C,CAAA,MAAMlzG,MAAQynB,MAAM,CAACksF,YAAa,CAAA,CAClC,GAAI3zG,KAAAA,CAAQmzG,KAAO,CAAA,CACjBjB,QAAQ,CAACkB,kBAAAA,CAAqBO,YAAe3zG,CAAAA,KAAAA,CAAM,CAAGhgD,CACtDynE,CAAAA,MAAM,CAACksF,YAAa,CAAA,CAAG3zG,KAAQ,CAAA,EACjC,CACF,CACF,CACF,CACF,CACF,CACA5M,MAAOo/G,CAAAA,MAAM,CAAEX,cAAAA,CAAiB,IAAI,CAAE,CACpC,IAAI,CAACD,YAAY,CAACC,cAClB,CAAA,CAAA,IAAI,CAACE,WAAW,EAChB,CAAA,IAAI,CAACQ,aAAa,CAACC,MAAAA,CAAAA,CACnB,IAAI,CAACK,cAAc,EACnB,CAAA,IAAI,CAACE,cAAc,CAAClB,cAAAA,CAAAA,CACpB,IAAI,CAAC5E,cAAc,GACrB,CACA2G,QAAAA,EAAW,CACT,IAAI,CAACzG,cAAc,GACrB,CArOAplJ,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC3mC,IAAI,CAAG,UACZ,CAAA,IAAI,CAACuwJ,WAAW,CAAG,CACnB,CAAA,IAAI,CAAC9G,SAAS,CAAG,IAAI9wI,IACrB,CAAA,IAAI,CAAC62I,SAAS,CAAG,IAAI72I,IACrB,CAAA,IAAI,CAAC+wI,WAAW,CAAG,IAAI/wI,IACvB,CAAA,IAAI,CAACs0I,MAAM,CAAG,IAAIt0I,IAAK,CAAA,CAAA,CAAG,EAAG,CAC7B,CAAA,CAAA,IAAI,CAACu0I,WAAW,CAAG,IAAIv0I,IACvB,CAAA,IAAI,CAACq0I,KAAK,CAAG,IAAI,CAACC,MAAM,CACxB,IAAI,CAACJ,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACiC,WAAW,CAAG,EAAE,CACrB,IAAI,CAACA,WAAW,CAACtxJ,IAAI,CAAC,IAAImvJ,YAC1B,CAAA,CAAA,IAAI,CAACQ,YAAY,CAAG,IAAI9D,YAAAA,CAAa1iH,MACrC,CAAA,CAAA,IAAI,CAAC2mH,gBAAgB,CAAC3mH,MAAAA,EACxB,CAuNF,CAEA,MAAM6pH,YAAe,CAAA,01KAAA,CACrB,IAAI95I,IAAAA,CAAO,IACX,CAAA,MAAM+5I,QAAW,CAAA,IAAA,CACf,GAAI,CAAC/5I,IAAM,CAAA,CACT,MAAMg6I,YAAAA,CAAeC,KAAKH,YAC1B95I,CAAAA,CAAAA,IAAAA,CAAOjN,UAAW4c,CAAAA,IAAI,CAACqqI,YAAAA,CAAc,IAACrtJ,EAAOA,IAAKvB,CAAAA,UAAU,CAAC,CAAA,CAAA,EAC/D,CACF,CAAA,CACA,MAAM8uJ,aAAAA,CAAgB,KACpBH,QACA,EAAA,CAAA,OAAO/5I,IACT,CACA,CAAMm6I,MAAAA,SAAAA,CAMJC,KAAQ,EAAA,CACN,IAAI,CAACC,IAAI,CAAI,CAAA,IAAI,CAACA,IAAI,CAAG,CAAA,EAAKr6I,IAAK/Z,CAAAA,OAAM,CAE3C0H,KAAQ,EAAA,CACN,IAAI,CAACysJ,KAAK,EAAA,CACV,OAAOp6I,IAAI,CAAC,IAAI,CAACq6I,IAAI,CAAC,CAAG,GAC3B,CACAC,IAAAA,CAAK7vF,IAAO,CAAA,IAAItiD,IAAM,CAAE,CACtB,IAAI,CAACiyI,KAAK,EAAA,CACV,OAAO3vF,IAAAA,CAAKl8D,GAAG,CAACyR,IAAI,CAAC,IAAI,CAACq6I,IAAI,CAAC,CAAEr6I,IAAI,CAAC,IAAI,CAACq6I,IAAI,CAAG,CAAE,CAAA,CAAEr6I,IAAI,CAAC,IAAI,CAACq6I,IAAI,CAAG,CAAA,CAAE,CAAEr6I,IAAI,CAAC,IAAI,CAACq6I,IAAI,CAAG,CAAE,CAAA,CAAA,CAAEv+I,SAAS,CAAC,EAAI,GAChH,CAAA,CAfA/N,WAAYssJ,CAAAA,IAAAA,CAAO,CAAC,CAAC,CACnB,IAAI,CAACA,IAAI,CAAG,CACZ,CAAA,IAAI,CAACA,IAAI,CAAGA,IAAO,CAAA,CAAA,CACnBN,QACF,GAAA,CAYF,CAEA,MAAMQ,YAAe,CAAA,CACnB,IAAIt4I,IAAAA,CAAK,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAChB,IAAIA,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAA,CACf,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAC,CAAG,CAAA,CAAA,CAAA,CAChB,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,CACf,CAAA,CAAA,IAAIA,IAAK,CAAA,CAAA,CAAG,EAAG,CAAC,CAAA,CAAA,CAChB,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,CAChB,CAAA,CACD,OAAMu4I,SACJphH,CAAAA,MAAAA,CAAOqhH,YAAY,CAAEjC,MAAM,CAAE,CAC3B,MAAM3oB,OAAS,IAAI,CAACA,MAAM,CAC1B,KAAM,CAAEvqI,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAE,CAAG4kJ,YAAAA,CACpB,IAAI,IAAIluE,EAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CACxBsjD,MAAM,CAACtjD,CAAAA,CAAI,CAAE,CAAA,CAAGjnF,CAChBuqI,CAAAA,MAAM,CAACtjD,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG1yE,CACpBg2H,CAAAA,MAAM,CAACtjD,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG12E,EACtB,CACA,IAAI,IAAI02E,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIisE,OAAOvyJ,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACpC,MAAMykE,KAAAA,CAAQwH,MAAM,CAACjsE,EAAE,CACvB,GAAIykE,KAAM7wI,CAAAA,KAAK,GAAKq7G,qBAAAA,CAAuB,CACzC,IAAI,IAAIn2H,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxB,MAAMq1J,MAAAA,CAASn1J,IAAKoU,CAAAA,GAAG,CAAC4gJ,YAAY,CAACl1J,CAAAA,CAAE,CAAC6d,GAAG,CAAC8tI,KAAM2J,CAAAA,UAAU,CAAG,CAAA,CAAA,CAAA,CAAK3J,KAAM4J,CAAAA,UAAU,CACpF,MAAMC,UAAa7J,CAAAA,KAAAA,CAAM8J,MACzBjrB,CAAAA,MAAM,CAACxqI,CAAAA,CAAI,EAAE,EAAIw1J,UAAAA,CAAWv1J,CAAC,CAAGo1J,MAChC7qB,CAAAA,MAAM,CAACxqI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAIw1J,UAAWhhJ,CAAAA,CAAC,CAAG6gJ,MACpC7qB,CAAAA,MAAM,CAACxqI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAIw1J,UAAWhlJ,CAAAA,CAAC,CAAG6kJ,OACtC,CACF,CACF,CACF,CACA3sJ,WAAAA,EAAa,CACX,IAAI,CAAC8hI,MAAM,CAAG,IAAIhwH,YAAAA,CAAa,CAAI,CAAA,CAAA,EACrC,CACF,CAEA,MAAMu4C,aAAAA,CAAgB,CAACnoB,MAAAA,CAAQ8qH,UAAY7vJ,CAAAA,IAAAA,CAAM8U,IAC/C,GAAA,CAAA,MAAM83B,QAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAClC3mC,IAAM,CAAA,CAAC,EAAEyxJ,UAAAA,CAAW,EAAE7vJ,IAAK,CAAA,CAAC,CAC5BygB,KAAAA,CAAOzgB,IACP0gB,CAAAA,MAAAA,CAAQ1gB,IACRY,CAAAA,MAAAA,CAAQ4yB,kBACRqV,QAAU7Z,CAAAA,cAAAA,CACV+Z,QAAU/Z,CAAAA,cAAAA,CACVzc,IAAMgpB,CAAAA,mBAAAA,CACNoN,SAAW5W,CAAAA,cAAAA,CACXyW,SAAWzW,CAAAA,cAAAA,CACXyX,UAAY,CAAA,CAAA,CACZlD,OAAS,CAAA,KACX,CACAsG,CAAAA,CAAAA,OAAAA,CAAQ1B,IAAI,EAAG7nC,CAAAA,GAAG,CAACyR,IAAAA,CAAAA,CACnB83B,OAAQV,CAAAA,MAAM,EACd,CAAA,OAAOU,OACT,CACA,CAAA,MAAMkjH,oBAAuB,CAAA,IAAIxqH,WACjC,CAAA,MAAMyqH,mBAAsB,CAAChrH,SAC3B,OAAO+qH,oBAAAA,CAAqBjzJ,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CACtC,MAAMjwB,IAAAA,CAAOk6I,aACb,EAAA,CAAA,MAAMhvJ,IAAO3F,CAAAA,IAAAA,CAAKud,IAAI,CAAC9C,IAAK/Z,CAAAA,MAAM,CAAG,CACrC,CAAA,CAAA,OAAOmyD,aAAcnoB,CAAAA,MAAAA,CAAQ,WAAa/kC,CAAAA,IAAAA,CAAM8U,IAClD,CAAA,CAAA,CACF,CAEA,CAAA,MAAMk7I,SAMJ/rH,CAAAA,OAAAA,EAAU,CACR,GAAI,IAAI,CAAC2I,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC3I,OAAO,EACpB,CAAA,IAAI,CAAC2I,OAAO,CAAG,KACjB,CACA,MAAMoM,QAAU,IAAI,CAACi3G,aAAa,CAClC,IAAI,IAAIn1J,CAAI,CAAA,CAAA,CAAGA,EAAIk+C,OAAQj+C,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrCk+C,OAAO,CAACl+C,CAAAA,CAAE,CAACmpC,OAAO,GACpB,CACA,IAAI,CAACgsH,aAAa,CAACl1J,MAAM,CAAG,EAC9B,CACA,OAAOd,MAAO8qC,CAAAA,MAAM,CAAE+gH,KAAK,CAAE,CAC3B,IAAIoK,SAAY,CAAA,IAAA,CAChB,GAAIpK,KAAAA,CAAM7wI,KAAK,GAAKs7G,cAAgB,CAAA,CAClC2/B,SAAY,CAAA,IAAI,CAACC,aAAa,CAACprH,MAAAA,CAAQ+gH,MAAMsK,iBAAiB,CAAEtK,KAAMuK,CAAAA,WAAW,EACnF,CAAA,KAAO,CACLH,SAAAA,CAAY,IAAI,CAACI,WAAW,CAACvrH,MAAQ+gH,CAAAA,KAAAA,CAAMsK,iBAAiB,CAAEtK,MAAMuK,WAAW,EACjF,CACA,OAAOH,SACT,CACA,OAAOK,WAAAA,CAAYxrH,MAAM,CAAEyrH,UAAU,CAAEC,UAAU,CAAE,CACjD,MAAMP,SAAAA,CAAY,IAAI,CAACI,WAAW,CAACvrH,MAAAA,CAAQyrH,UAAYC,CAAAA,UAAAA,CAAAA,CACvD,MAAMz3G,OAAAA,CAAUk3G,SAAUD,CAAAA,aAAa,CACvC,MAAMlkG,EAAK/S,CAAAA,OAAO,CAAC,CAAA,CAAE,CACrB,IAAI,IAAIl+C,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxBk+C,OAAQp9C,CAAAA,IAAI,CAACmwD,EAAAA,EACf,CACA,OAAOmkG,SACT,CACA,OAAOI,WAAYvrH,CAAAA,MAAM,CAAE/kC,IAAI,CAAEywJ,UAAU,CAAE,CAC3C,MAAMC,UAAAA,CAAav+B,cAAet1H,CAAAA,GAAG,CAAC4zJ,UAAAA,CAAAA,CACtC,IAAI7vJ,MAAAA,CAAS8vJ,WAAW9vJ,MAAM,CAC9B,GAAIA,MAAAA,GAAWozB,gBAAoB,EAAA,CAAC+Q,MAAOqT,CAAAA,sBAAsB,EAAIrT,MAAO8Y,CAAAA,0BAA0B,CAAE,CACtGj9C,MAASu1B,CAAAA,iBACX,CACA,MAAMw6H,WAAax5H,eAAgBt6B,CAAAA,GAAG,CAAC+D,MAAAA,CAAAA,EAASxC,IAChD,CAAA,IAAIq4F,MAASzkE,CAAAA,aAAAA,CACb,GAAIy+H,UAAAA,GAAeh/B,cAAgB,CAAA,CACjCh7B,MAAS1xD,CAAAA,MAAAA,CAAO4qD,qBAAqB,CAAG39D,cAAgBD,eAC1D,CACA,GAAI0+H,UAAAA,GAAe1+B,eAAiB,CAAA,CAClCt7B,MAAS1kE,CAAAA,eACX,CACA,MAAM6a,OAAAA,CAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAClCnkC,MAAQA,CAAAA,MAAAA,CACR6f,MAAOzgB,IACP0gB,CAAAA,MAAAA,CAAQ1gB,IACRsmC,CAAAA,OAAAA,CAAS,KACTkC,CAAAA,SAAAA,CAAWiuD,MACX9tD,CAAAA,SAAAA,CAAW8tD,MACX5tD,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACV7wB,CAAAA,IAAAA,CAAM,CAAC,YAAY,EAAEuyJ,UAAW,CAAA,CAAC,CACnC,CAAA,CACA,IAAIj3J,MAAAA,CAAS,IACb,CAAA,GAAIg3J,YAAYr+B,GAAK,CAAA,CACnBzlF,OAAQxD,CAAAA,aAAa,CAAG,IACxBwD,CAAAA,OAAAA,CAAQtD,WAAW,CAAGhX,SAAAA,CACtB54B,MAAS,CAAA,IAAI2mD,YAAa,CAAA,CACxBe,WAAaxU,CAAAA,OACf,CACF,EAAA,CAAA,KAAO,CACLlzC,MAAAA,CAAS,IAAI2mD,YAAAA,CAAa,CACxBM,WAAAA,CAAa/T,QACb9G,KAAO,CAAA,IACT,CACF,EAAA,CACA,GAAIf,MAAAA,CAAO2E,QAAQ,CAAE,CACnBhwC,MAAAA,CAAOgxC,KAAK,CAAG,KACjB,CACA,OAAO,IAAIslH,UAAUpjH,OAAS,CAAA,CAC5BlzC,MACD,CAAA,CACH,CACA,OAAOy2J,aAAcprH,CAAAA,MAAM,CAAE/kC,IAAI,CAAEywJ,UAAU,CAAE,CAC7C,MAAMC,UAAAA,CAAav+B,eAAet1H,GAAG,CAAC4zJ,UACtC,CAAA,CAAA,MAAME,UAAax5H,CAAAA,eAAAA,CAAgBt6B,GAAG,CAAC6zJ,WAAW9vJ,MAAM,CAAA,EAAGxC,IAC3D,CAAA,MAAMwyJ,MAASH,CAAAA,UAAAA,GAAe1+B,eAC9B,CAAA,MAAMt7B,OAASm6D,MAAS7+H,CAAAA,cAAAA,CAAiBC,aACzC,CAAA,MAAMuU,OAAU,CAAA,IAAIE,OAAQ1B,CAAAA,MAAAA,CAAQ,CAClCnkC,MAAAA,CAAQ8vJ,UAAY9vJ,EAAAA,MAAAA,CACpB6f,KAAOzgB,CAAAA,IAAAA,CACP0gB,MAAQ1gB,CAAAA,IAAAA,CACRumC,QAAS,IACTD,CAAAA,OAAAA,CAAS,KACTkC,CAAAA,SAAAA,CAAWiuD,MACX9tD,CAAAA,SAAAA,CAAW8tD,MACX5tD,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACV7wB,CAAAA,IAAAA,CAAM,CAAC,cAAc,EAAEuyJ,UAAAA,CAAW,CAAC,CACrC,CAAA,CACA,GAAI,CAACC,MAAQ,CAAA,CACXrqH,OAAQ6C,CAAAA,aAAa,CAAG,IACxB7C,CAAAA,OAAAA,CAAQ+C,WAAW,CAAGhX,UACxB,CACA,MAAM0mB,OAAU,CAAA,EAAE,CAClB,IAAI,IAAIl+C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAGA,CAAI,EAAA,CAAA,CACxB,GAAI81J,MAAAA,CAAQ,CACV53G,OAAAA,CAAQp9C,IAAI,CAAC,IAAIykD,YAAa,CAAA,CAC5BM,WAAapa,CAAAA,OAAAA,CACb6E,IAAMtwC,CAAAA,CAAAA,CACNgrC,KAAO,CAAA,IACT,CACF,CAAA,EAAA,CAAA,KAAO,CACLkT,OAAAA,CAAQp9C,IAAI,CAAC,IAAIykD,YAAAA,CAAa,CAC5Be,WAAa7a,CAAAA,OAAAA,CACb6E,IAAMtwC,CAAAA,CACR,CACF,CAAA,EAAA,CACF,CACA,OAAO,IAAIk1J,SAAAA,CAAUzpH,OAASyS,CAAAA,OAAAA,CAChC,CApHAn2C,WAAAA,CAAY+pC,OAAO,CAAEoM,OAAO,CAAC,CAC3B,IAAI,CAACpM,OAAO,CAAGA,OACf,CAAA,IAAI,CAACikH,MAAM,CAAG,KACd,CAAA,IAAI,CAACZ,aAAa,CAAGj3G,QACvB,CAiHF,CAEA,MAAM83G,UAAAA,CAAa,EAAE,CACrB,MAAMC,WAAc,CAAA,EAAE,CACtB,MAAMC,WAAc,CAAA,IAAI/zI,IACxB,CAAA,MAAMg0I,SAAW,IAAIh0I,IACrB,CAAMi0I,MAAAA,IAAAA,CACJruJ,WAAY05C,CAAAA,IAAI,CAAC,CACf,IAAI,CAACv8C,IAAI,CAAG3F,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAAA,CAAKliC,CAAC,CAAG,IAAA,CAChC,CAAA,IAAI,CAAC63D,IAAI,CAAG,KACZ,CAAA,IAAI,CAACi/E,OAAO,CAAG,CAAC,CAChB,CAAA,IAAI,CAAC50G,IAAI,CAAGA,KACd,CACF,CACA,MAAM60G,iBAwCJntH,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACotH,kBAAkB,EACvB,CAAA,IAAI,CAACC,kBAAkB,GACzB,CACAD,kBAAAA,EAAqB,CACnB,IAAI,CAACE,WAAW,EAAEttH,OAAAA,EAClB,CAAA,IAAI,CAACstH,WAAW,CAAG,KACrB,CACAD,kBAAqB,EAAA,CACnB,IAAI,CAACE,WAAW,EAAEvtH,OAAAA,EAClB,CAAA,IAAI,CAACutH,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,kBAAkB,EAAExtH,OAAAA,EACzB,CAAA,IAAI,CAACwtH,kBAAkB,CAAG,KAC5B,CACAC,mBAAoBlB,CAAAA,UAAU,CAAEC,UAAAA,CAAap/B,eAAe,CAAE,CAC5D,MAAMsgC,cAAiB,CAAA,IAAI,CAACJ,WAAW,EAAE3kH,OAAQhsC,CAAAA,MAAAA,CACjD,MAAMgxJ,cAAAA,CAAiBz/B,cAAet1H,CAAAA,GAAG,CAAC4zJ,UAAAA,CAAAA,CAAY7vJ,MAAM,CAC5D,GAAI,CAAC,IAAI,CAAC2wJ,WAAW,EAAI,IAAI,CAACA,WAAW,CAAC3kH,OAAO,CAACnsB,KAAK,GAAK+vI,UAAcmB,EAAAA,cAAAA,GAAmBC,cAAgB,CAAA,CAC3G,IAAI,CAACr4J,OAAO,EAAA,CACZ,IAAI,CAAC83J,kBAAkB,EACvB,CAAA,IAAI,CAACE,WAAW,CAAGvB,SAAUO,CAAAA,WAAW,CAAC,IAAI,CAACxrH,MAAM,CAAEyrH,UAAAA,CAAYC,WAClE,CAAA,IAAI,CAACc,WAAW,CAACV,MAAM,CAAG,IAAA,CAC1B,MAAMgB,aAAAA,CAAgB,CAAI,CAAA,IAAI,CAACC,qBAAqB,CACpD,IAAI,CAACC,UAAU,CAAC1uJ,GAAG,CAACwuJ,aAAeA,CAAAA,aAAAA,CAAe,CAAC,CAAA,CAAIA,aAAe,CAAA,CAAC,CAAIA,CAAAA,aAAAA,EAC7E,CACF,CACAG,mBAAoBxB,CAAAA,UAAU,CAAE,CAC9B,GAAI,IAAI,CAACgB,WAAW,CAAC/wI,KAAK,GAAK+vI,WAAY,CACzC,IAAI,CAACiB,kBAAkB,CAACnqH,MAAM,CAACkpH,UAAAA,CAAYA,WAC3C,CAAA,IAAI,CAACj3J,OAAO,GACd,CACF,CACA04J,gBAAAA,EAAmB,CACjB,IAAI,CAACC,qBAAqB,CAAG,IAAI,CAACntH,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,oBACvD,CAAA,CAAA,IAAI,CAACgtH,oBAAoB,CAAG,IAAI,CAACptH,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,mBAAA,CACtD,CAAA,IAAI,CAACitH,kBAAkB,CAAG,IAAIz9I,YAAa,CAAA,CAAA,CAC3C,CAAA,IAAI,CAAC09I,qBAAqB,CAAG,IAAI,CAACttH,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,oBACzD,EAAA,CACA8iH,gBAAiB,CACf,MAAMl8F,EAAK,CAAA,IAAI,CAACwlG,WAAW,CAACtB,aAAa,CAAC,CAAE,CAAA,CAC5C,MAAMqC,YAAAA,CAAevmG,EAAG3K,CAAAA,WAAW,CACnC,IAAI,CAAC8wG,qBAAqB,CAACz/G,QAAQ,CAAC6/G,YAAAA,CACpC,CAAA,IAAI,CAACF,kBAAkB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,qBAClC,CAAA,IAAI,CAACM,kBAAkB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACG,gBAAgB,CAClD,IAAI,CAACJ,oBAAoB,CAAC1/G,QAAQ,CAAC,IAAI,CAAC2/G,kBAAkB,CAC1D,CAAA,IAAI,CAACC,qBAAqB,CAAC5/G,QAAQ,CAAC,IAAI,CAAC++G,WAAW,EACtD,CACAgB,SAAAA,CAAUC,SAAS,CAAE9F,cAAc,CAAE,CACnC,IAAI+F,UAAAA,CAAa/F,cAAe+F,CAAAA,UAAU,CAC1C,GAAI,CAACA,UAAY,CAAA,CACf,MAAMC,QAAAA,CAAWt4J,IAAK0V,CAAAA,IAAI,CAAC1V,IAAAA,CAAKud,IAAI,CAAC66I,SACrCC,CAAAA,CAAAA,CAAAA,UAAAA,CAAa3B,WACb2B,CAAAA,UAAU,CAAC,EAAE,CAAGC,QAChBD,CAAAA,UAAAA,CAAW33J,MAAM,CAAG,EACtB,CACA,MAAM63J,WAAAA,CAAc,CAACloJ,CAAAA,CAAGC,CAAID,GAAAA,CAAAA,CAAE3P,MAAM,GAAK4P,EAAE5P,MAAM,EAAI2P,CAAEmoJ,CAAAA,KAAK,CAAC,CAACt4J,CAAGO,CAAAA,CAAAA,GAAIP,CAAMoQ,GAAAA,CAAC,CAAC7P,CAAAA,CAAE,CAC/E,CAAA,GAAI,CAAC83J,WAAAA,CAAYF,WAAY,IAAI,CAACA,UAAU,CAAA,CAAG,CAC7C,IAAI,CAACn5J,OAAO,EACZ,CAAA,IAAI,CAACu5J,KAAK,CAAC/3J,MAAM,CAAG,CACpB,CAAA,IAAI,CAAC23J,UAAU,CAAC33J,MAAM,CAAG,CACzB,CAAA,IAAI,CAAC23J,UAAU,CAAC92J,IAAI,CAAI82J,GAAAA,UAAAA,CAAAA,CACxB,MAAMK,UAAAA,CAAa,IAAI,CAACL,UAAU,CAAC,CAAA,CAAE,CACrC,GAAIK,UAAa,CAAA,CAAA,CAAG,CAClB,MAAMC,OAAU,CAAA,CAAA,CAAID,UACpB,CAAA,IAAI,IAAIj4J,CAAAA,CAAI,EAAGA,CAAIi4J,CAAAA,UAAAA,CAAYj4J,CAAI,EAAA,CAAA,CACjC,IAAI,IAAIumF,CAAI,CAAA,CAAA,CAAGA,CAAI0xE,CAAAA,UAAAA,CAAY1xE,CAAI,EAAA,CAAA,CACjC,MAAM9kC,IAAAA,CAAO,IAAIt/B,IAAAA,CAAKniB,EAAIk4J,OAAS3xE,CAAAA,CAAAA,CAAI2xE,OAASA,CAAAA,OAAAA,CAASA,OACzD,CAAA,CAAA,MAAMC,cAAiB,CAAA,IAAI,CAACP,UAAU,CAAC,CAAI53J,CAAAA,CAAAA,CAAIi4J,UAAa1xE,CAAAA,CAAAA,CAAE,CAC9D,GAAI4xE,eAAiB,CAAG,CAAA,CACtB,IAAI,IAAI9jJ,CAAI,CAAA,CAAA,CAAGA,CAAI8jJ,CAAAA,cAAAA,CAAgB9jJ,CAAI,EAAA,CAAA,CACrC,IAAI,IAAI0H,CAAI,CAAA,CAAA,CAAGA,CAAIo8I,CAAAA,cAAAA,CAAgBp8I,IAAI,CACrC,MAAMq8I,WAAcF,CAAAA,OAAAA,CAAUC,cAC9B,CAAA,MAAME,QAAW,CAAA,IAAIl2I,IAAKs/B,CAAAA,IAAAA,CAAKptC,CAAC,CAAGA,CAAI+jJ,CAAAA,WAAAA,CAAa32G,IAAK1lC,CAAAA,CAAC,CAAGA,CAAIq8I,CAAAA,WAAAA,CAAaA,WAAaA,CAAAA,WAAAA,CAAAA,CAC3F,IAAI,CAACJ,KAAK,CAACl3J,IAAI,CAAC,IAAIs1J,IAAAA,CAAKiC,QAC3B,CAAA,EAAA,CACF,CACF,CAAA,KAAO,CACL,IAAI,CAACL,KAAK,CAACl3J,IAAI,CAAC,IAAIs1J,IAAAA,CAAK30G,OAC3B,CACF,CACF,CACF,CAAA,KAAO,CACL,IAAI,CAACu2G,KAAK,CAACl3J,IAAI,CAAC,IAAIs1J,IAAAA,CAAK,IAAIj0I,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,EAC7C,CACA,IAAI,CAAC61I,KAAK,CAAC9nJ,IAAI,CAAC,CAACN,CAAAA,CAAGC,CAClB,GAAA,CAAA,OAAOA,CAAE3K,CAAAA,IAAI,CAAG0K,CAAAA,CAAE1K,IAAI,CACxB,EACF,CACF,CACAqtJ,aAAc+F,CAAAA,WAAW,CAAEzG,cAAc,CAAE,CACzC,MAAM/D,cAAiB+D,CAAAA,cAAAA,CAAe/D,cAAc,CACpD,MAAMM,cAAAA,CAAiByD,cAAezD,CAAAA,cAAc,CACpD,IAAImK,gBAAmB,CAAA,KAAA,CACvB,IAAIC,gBAAAA,CAAmB,MACvB,MAAMhG,MAAAA,CAASwD,UACfxD,CAAAA,MAAOvyJ,CAAAA,MAAM,CAAG,CAAA,CAChB,MAAMw4J,aAAgB,CAACluJ,IACrB,EAAA,CAAA,IAAI,IAAIvK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIuK,KAAKtK,MAAM,CAAED,CAAI,EAAA,CAAA,CAClC,MAAMgrJ,KAAAA,CAAQzgJ,IAAI,CAACvK,CAAE,CAAA,CACrB,GAAIgrJ,KAAAA,CAAMjW,gBAAgB,CAAE,CAC1B,MAAM2jB,YAActK,cAAkBpD,EAAAA,KAAAA,CAAMmD,WAAW,CACvD,MAAMwK,WAAAA,CAAc7K,cAAkB,EAAA,CAAC,CAAC9C,KAAAA,CAAM4N,MAC9CL,CAAAA,gBAAAA,GAAAA,gBAAqBG,CAAAA,WAAAA,CACrBF,CAAAA,gBAAAA,GAAAA,gBAAAA,CAAqBG,WACrB,CAAA,CAAA,GAAID,WAAeC,EAAAA,WAAAA,CAAa,CAC9BnG,MAAAA,CAAO1xJ,IAAI,CAACkqJ,KACd,EAAA,CACF,CACF,CACF,CACA,CAAA,GAAI8C,gBAAkBM,cAAgB,CAAA,CACpCqK,aAAcH,CAAAA,WAAAA,EAChB,CACA9F,MAAAA,CAAOtiJ,IAAI,CAAC,CAACN,CAAGC,CAAAA,CAAAA,GAAAA,CACd,OAAOA,CAAAA,CAAEgpJ,aAAa,CAAGjpJ,CAAEipJ,CAAAA,aAAa,CAE1C,CAAA,CAAA,GAAIN,gBAAkB,CAAA,CACpB,IAAI,CAAC3B,mBAAmB,CAAC,IAAI,CAACI,qBAAqB,CAAEnF,cAAe8D,CAAAA,UAAU,EAChF,CACA,GAAI6C,gBAAkB,CAAA,CACpB,IAAI,CAACtB,mBAAmB,CAAC,IAAI,CAAC4B,qBAAqB,EACrD,CACA,GAAIP,gBAAoBC,EAAAA,gBAAAA,CAAkB,CACxC,IAAI,CAACd,SAAS,CAAClF,MAAOvyJ,CAAAA,MAAM,CAAE4xJ,cAAAA,EAChC,CACA,OAAOW,MACT,CACAuG,SAAU/N,CAAAA,KAAK,CAAEvpG,IAAI,CAAE,CACrBupG,MAAMO,aAAa,CAACxsJ,IAAI,CAAC0iD,IACzB,CAAA,CAAA,MAAMu3G,SAAYhO,CAAAA,KAAAA,CAAMiO,cAAc,CACtC,IAAI,IAAI3oH,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAO0oH,SAAW1oH,CAAAA,IAAAA,EAAAA,CAAO,CACzC,GAAI06G,KAAAA,CAAMmD,WAAW,EAAInD,KAAM+C,CAAAA,OAAO,CAAE,CACtCmI,WAAYn3J,CAAAA,IAAI,CAAC0iD,IAAAA,CAAAA,CACjB00G,QAASp3J,CAAAA,IAAI,CAAC0iD,IAAAA,CAAAA,CACd,GAAIupG,KAAM7wI,CAAAA,KAAK,GAAKw7G,cAAAA,CAAgB,CAClCugC,WAAAA,CAAY5lJ,GAAG,CAAC,IAAI,CAAC2mJ,UAAU,EACjC,CACA,GAAIjM,KAAM7wI,CAAAA,KAAK,GAAKs7G,cAAgB,CAAA,CAClC,MAAMyjC,SAAAA,CAAYhD,WAAYh6I,CAAAA,CAAC,CAAG,CAAA,CAClC,MAAMxO,MAAAA,CAAS,IAAI,CAACyrJ,gBAAgB,CAAC7oH,IAAK,CAC1C4lH,CAAAA,WAAY7hJ,CAAAA,CAAC,EAAI6kJ,SAAAA,CAAYxrJ,MAAO2G,CAAAA,CAAC,CACrC6hJ,YAAYn6I,CAAC,EAAIm9I,SAAYxrJ,CAAAA,MAAAA,CAAOqO,CACpCm6I,CAAAA,WAAAA,CAAYh6I,CAAC,CAAGg9I,SAChBhD,CAAAA,WAAAA,CAAY32I,CAAC,CAAG25I,SAChB/C,CAAAA,QAAAA,CAASp3J,IAAI,CAACm3J,WAChB,EAAA,CACA,GAAIlL,KAAAA,CAAMmD,WAAW,CAAE,CACrB,MAAMI,eAAAA,CAAkBvD,KAAMwD,CAAAA,aAAa,CAAC,IAAA,CAAMl+G,IAClDi+G,CAAAA,CAAAA,eAAAA,CAAgB6K,cAAc,CAACr6J,IAAI,CAACm3J,WAAAA,CAAAA,CACpC3H,eAAgB8K,CAAAA,aAAa,CAACt6J,IAAI,CAACo3J,QACrC,EAAA,CACF,CACF,CACF,CACAmD,UAAAA,CAAWtO,KAAK,CAAEvtE,SAAS,CAAE87E,cAAc,CAAE,CAC3CvO,KAAAA,CAAM4C,sBAAsB,CAAG,KAC/B,MAAMvlH,IAAAA,CAAO,IAAI,CAAC2vH,KAAK,CAACv6E,SAAU,CAClCp1C,CAAAA,IAAKguH,CAAAA,OAAO,CAAGrL,KAAAA,CAAMhhH,EACrB3B,CAAAA,IAAAA,CAAK+uC,IAAI,CAAG,IAAA,CACZ,GAAImiF,cAAAA,CAAgB,CAClBvO,KAAAA,CAAMwO,gBAAgB,CAAG,IACzBxO,CAAAA,KAAMyO,CAAAA,YAAY,CAAG,IAAI,CAACh7J,OAAO,CACjCusJ,KAAAA,CAAM0O,cAAc,CAAGj8E,UACzB,CACF,CACArqC,MAAAA,CAAOklH,WAAW,CAAEzG,cAAc,CAAE,CAClC,IAAI,CAACmF,qBAAqB,CAAGnF,cAAemF,CAAAA,qBAAqB,CACjE,IAAI,CAAC8B,qBAAqB,CAAGjH,cAAeiH,CAAAA,qBAAqB,CACjE,MAAMtG,MAAS,CAAA,IAAI,CAACD,aAAa,CAAC+F,WAAazG,CAAAA,cAAAA,CAAAA,CAC/C,GAAIW,MAAAA,CAAOvyJ,MAAM,CAAG,CAAG,CAAA,CACrB,MAAM+3J,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxB,IAAI,IAAIh4J,CAAAA,CAAI,EAAGA,CAAIg4J,CAAAA,KAAAA,CAAM/3J,MAAM,CAAED,CAAI,EAAA,CAAA,CACnCg4J,KAAK,CAACh4J,CAAE,CAAA,CAACo3E,IAAI,CAAG,MAClB,CACA,MAAMuiF,WAAAA,CAAcp6J,KAAKmU,GAAG,CAAC8+I,MAAOvyJ,CAAAA,MAAM,CAAE+3J,KAAAA,CAAM/3J,MAAM,CAAA,CACxD,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI25J,WAAa35J,CAAAA,CAAAA,EAAAA,CAAI,CAClC,MAAMgrJ,MAAQwH,MAAM,CAACxyJ,CAAE,CAAA,CACvB,GAAIgrJ,KAAAA,CAAMmD,WAAW,CAAE,CACrBnD,KAAAA,CAAM4O,UAAU,CAAG,IAAI,CAACnD,YAC1B,CACA,MAAMoD,YAAAA,CAAe7B,KAAK,CAAChN,KAAM0O,CAAAA,cAAc,CAAC,CAChD,GAAI1O,KAAMyO,CAAAA,YAAY,GAAK,IAAI,CAACh7J,OAAO,EAAIusJ,KAAAA,CAAMhhH,EAAE,GAAK6vH,YAAAA,EAAcxD,OAAS,CAAA,CAC7E,MAAMwD,YAAAA,CAAe7B,KAAK,CAAChN,KAAM0O,CAAAA,cAAc,CAAC,CAChD,GAAIG,YAAAA,CAAa30J,IAAI,GAAK8yJ,KAAK,CAACh4J,CAAAA,CAAE,CAACkF,IAAI,EAAI,CAAC20J,YAAaziF,CAAAA,IAAI,CAAE,CAC7D,IAAI,CAACkiF,UAAU,CAACtO,KAAOA,CAAAA,KAAAA,CAAM0O,cAAc,CAAE,KAAA,EAC/C,CACF,CACF,CACA,IAAII,SAAY,CAAA,CAAA,CAChB,IAAI,IAAI95J,CAAI,CAAA,CAAA,CAAGA,CAAI25J,CAAAA,WAAAA,CAAa35J,CAAI,EAAA,CAAA,CAClC,MAAM85J,SAAY9B,CAAAA,KAAAA,CAAM/3J,MAAM,EAAI+3J,KAAK,CAAC8B,SAAU,CAAA,CAAC1iF,IAAI,CAAC,CACtD0iF,SACF,GAAA,CACA,MAAM9O,KAAAA,CAAQwH,MAAM,CAACxyJ,EAAE,CACvB,GAAI,CAACgrJ,KAAAA,CAAM4C,sBAAsB,CAAE,CACjC,IAAI,CAAC0L,UAAU,CAACtO,KAAAA,CAAO8O,SAAW,CAAA,IAAA,EACpC,CACA,MAAMzxH,KAAO2vH,KAAK,CAAChN,KAAM0O,CAAAA,cAAc,CAAC,CACxC,IAAI,CAACX,SAAS,CAAC/N,KAAAA,CAAO3iH,IAAKoZ,CAAAA,IAAI,EACjC,CACF,CACA,IAAI,CAAC0rG,cAAc,GACrB,CAjPAplJ,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAACxrC,OAAO,CAAG,CACf,CAAA,IAAI,CAACu4J,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACP,WAAW,CAAG,IACnB,CAAA,IAAI,CAACgB,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACqB,qBAAqB,CAAG,CAC7B,CAAA,IAAI,CAACpC,WAAW,CAAG,IAAI/qH,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CAC1C3mC,IAAM,CAAA,aAAA,CACNqiB,KAAO,CAAA,IAAI,CAACmzI,qBAAqB,CACjClzI,MAAAA,CAAQ,IAAI,CAACkzI,qBAAqB,CAClChzJ,MAAQyzB,CAAAA,kBAAAA,CACRkS,QAAS,KACTD,CAAAA,OAAAA,CAAS,KACTkC,CAAAA,SAAAA,CAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,cACX8W,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACZ,CAAA,CACA,CAAA,IAAI,CAACwiI,kBAAkB,CAAG,IAAIpxG,YAAAA,CAAa,CACzCM,WAAAA,CAAa,IAAI,CAAC6wG,WAAW,CAC7B1rH,MAAO,KACP4E,CAAAA,KAAAA,CAAO,IACT,CAAA,CACA,CAAA,IAAI,CAACooH,KAAK,CAAG,EACb,CAAA,IAAI,CAACJ,UAAU,CAAG,EAAE,CACpB,IAAI,CAACuB,gBAAgB,CAAG,CACtB,IAAIt3I,KAAK,CAAG,CAAA,CAAA,CAAA,CACZ,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CACZ,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CACZ,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CACZ,IAAIA,IAAAA,CAAK,EAAG,CACZ,CAAA,CAAA,IAAIA,IAAK,CAAA,CAAA,CAAG,CACb,CAAA,CACD,CAAA,IAAI,CAACo1I,UAAU,CAAG,IAAI90I,IACtB,CAAA,IAAI,CAACy0I,mBAAmB,CAAC,CACzB,CAAA,CAAA,IAAI,CAACM,mBAAmB,CAAC,CAAA,CAAA,CACzB,IAAI,CAACC,gBAAgB,GACvB,CA4MF,CAEA,MAAM4C,UAAa,CAAA,EAAE,CACrBA,UAAU,CAAClmC,iBAAAA,CAAkB,CAAG,CAC9Bj+G,GAAK0e,CAAAA,aAAAA,CACL7V,GAAK6V,CAAAA,aAAAA,CACL6gB,EAAI/f,CAAAA,8BACN,CACA2kI,CAAAA,UAAU,CAAC/lC,UAAW,CAAA,CAAG,CACvBp+G,GAAK0e,CAAAA,aAAAA,CACL7V,GAAK4V,CAAAA,cAAAA,CACL8gB,EAAIjgB,CAAAA,iBACN,CACA6kI,CAAAA,UAAU,CAAChmC,YAAa,CAAA,CAAG,CACzBn+G,GAAAA,CAAK+e,mBACLlW,CAAAA,GAAAA,CAAKoW,8BACLsgB,EAAIjgB,CAAAA,iBAAAA,CACJ8kI,QAAU1lI,CAAAA,aACZ,CACAylI,CAAAA,UAAU,CAAC9lC,mBAAoB,CAAA,CAAG,CAChCr+G,GAAAA,CAAK0e,aACL7V,CAAAA,GAAAA,CAAKoW,6BACLsgB,CAAAA,EAAAA,CAAIjgB,iBACN,CACA6kI,CAAAA,UAAU,CAACjmC,cAAe,CAAA,CAAG,CAC3Bl+G,GAAAA,CAAK0e,cACL7V,GAAK6V,CAAAA,aAAAA,CACL6gB,EAAIjgB,CAAAA,iBACN,CACA6kI,CAAAA,UAAU,CAAC5lC,oBAAoB,CAAG,CAChCv+G,GAAK+e,CAAAA,mBAAAA,CACLlW,GAAK6V,CAAAA,aAAAA,CACL6gB,EAAIjgB,CAAAA,iBACN,CACA6kI,CAAAA,UAAU,CAAC3lC,sBAAuB,CAAA,CAAG,CACnCx+G,GAAAA,CAAK6e,oBACLhW,GAAK8V,CAAAA,mBAAAA,CACL4gB,EAAIjgB,CAAAA,iBACN,CACA6kI,CAAAA,UAAU,CAAC1lC,aAAa,CAAG,CACzBz+G,GAAK8e,CAAAA,6BAAAA,CACLjW,GAAK6V,CAAAA,aAAAA,CACL6gB,EAAIjgB,CAAAA,iBACN,CACA6kI,CAAAA,UAAU,CAAC7lC,oBAAAA,CAAqB,CAAG,CACjCt+G,GAAK6e,CAAAA,mBAAAA,CACLhW,GAAK4V,CAAAA,cAAAA,CACL8gB,EAAIjgB,CAAAA,iBACN,CACA6kI,CAAAA,UAAU,CAACzlC,UAAU,CAAG,CACtB1+G,GAAK0e,CAAAA,aAAAA,CACL7V,GAAK6V,CAAAA,aAAAA,CACL6gB,EAAI9f,CAAAA,iBACN,CACA0kI,CAAAA,UAAU,CAACxlC,SAAAA,CAAU,CAAG,CACtB3+G,GAAK0e,CAAAA,aAAAA,CACL7V,IAAK6V,aACL6gB,CAAAA,EAAAA,CAAI7f,iBACN,CAAA,CACA,IAAI2kI,IAAAA,CAAO,CACX,CAAA,MAAMC,QAwBJ,CAAA,IAAIC,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACC,aAAa,EAAI,IAC/B,CACA,IAAIC,YAAAA,EAAe,CACjB,GAAI,CAAC,IAAI,CAACD,aAAa,CAAE,CACvB,IAAI,CAACA,aAAa,CAAG,IAAI54B,aAC3B,CACA,OAAO,IAAI,CAAC44B,aAAa,CAE3BE,eAAgBz4F,CAAAA,cAAAA,CAAiB5/B,mBAAmB,CAAE,CACpD,MAAMs4H,MAAS,CAAA,IAAI,CAACF,YAAY,CAChC,OAAOx4F,cAAAA,GAAmB5/B,mBAAsBs4H,CAAAA,MAAAA,CAAO94B,IAAI,CAAG84B,OAAO/4F,IACvE,CACA,IAAIg5F,mBAAoB7yJ,CAAAA,KAAK,CAAE,CAC7B,IAAI,CAAC0yJ,YAAY,CAAC57J,OAAO,CAAGkJ,MAC9B,CACA,IAAI6yJ,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACH,YAAY,CAAC57J,OAAO,CAElC,IAAI87J,MAAO5yJ,CAAAA,KAAK,CAAE,CAChB,IAAI,CAAC8yJ,UAAU,CAAG9yJ,MACpB,CACA,IAAI4yJ,MAAAA,EAAS,CACX14J,MAAAA,CAAOskH,MAAM,CAAC,IAAI,CAACs0C,UAAU,CAAE54J,MAAAA,CAAO64J,WAAW,CAAC,IAAI,CAACL,YAAY,CAAC54B,IAAI,CAAA,CAAA,CACxE,OAAO,IAAI,CAACg5B,UACd,CACA,IAAI3jH,SAAUnvC,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACgzJ,WAAW,CAAC7jH,SAAS,CAAGnvC,MAC/B,CACA,IAAImvC,WAAY,CACd,OAAO,IAAI,CAAC6jH,WAAW,CAAC7jH,SAC1B,CACA,IAAI8jH,cAAejzJ,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACgzJ,WAAW,CAAC3jH,cAAc,CAAGrvC,MACpC,CACA,IAAIizJ,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACD,WAAW,CAAC3jH,cAAc,CAExC,IAAIxB,QAAS7tC,CAAAA,KAAK,CAAE,CAClB,IAAI,CAACkzJ,WAAW,CAACrlH,QAAQ,CAAG7tC,MAC9B,CACA,IAAI6tC,QAAAA,EAAW,CACb,OAAO,IAAI,CAACqlH,WAAW,CAACrlH,QAAQ,CAElC,IAAIC,UAAAA,CAAW9tC,KAAK,CAAE,CACpB,IAAI,CAACkzJ,WAAW,CAACplH,UAAU,CAAG9tC,MAChC,CACA,IAAI8tC,UAAa,EAAA,CACf,OAAO,IAAI,CAAColH,WAAW,CAACplH,UAAU,CAEpC,IAAIC,SAAAA,CAAU/tC,KAAK,CAAE,CACnB,IAAI,CAACkzJ,WAAW,CAACnlH,SAAS,CAAG/tC,MAC/B,CACA,IAAI+tC,SAAY,EAAA,CACd,OAAO,IAAI,CAACmlH,WAAW,CAACnlH,SAAS,CAEnC,IAAIC,UAAWhuC,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACkzJ,WAAW,CAACllH,UAAU,CAAGhuC,MAChC,CACA,IAAIguC,UAAAA,EAAa,CACf,OAAO,IAAI,CAACklH,WAAW,CAACllH,UAAU,CAEpC,IAAI67F,WAAc,EAAA,CAChB,OAAO,IAAI,CAACqpB,WAAW,CAAC7lH,KAAK,CAE/B8lH,mBAAAA,EAAsB,CACpB,MAAMtpB,WAAc,CAAA,IAAI,CAACA,WAAW,CACpC,MAAMjM,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3CulI,aAAa,CAACvlI,CAAE,CAAA,CAACwxI,WAAW,CAAGA,YACjC,CACF,CACA,IAAI9yF,UAAAA,CAAW/2C,KAAK,CAAE,CACpB,IAAI,CAACkzJ,WAAW,CAAC97J,IAAI,CAAC4I,KAAAA,CAAAA,CACtB,IAAI,CAACmzJ,mBAAmB,GAC1B,CACA,IAAIp8G,UAAAA,EAAa,CACf,OAAO,IAAI,CAACm8G,WACd,CACA,IAAIE,SAAAA,CAAUtjJ,IAAI,CAAE,CAClB,MAAMujJ,SAAYjB,CAAAA,UAAU,CAACtiJ,IAAK,CAAA,CAClC,IAAI,CAACojJ,WAAW,CAAC3lH,aAAa,CAAC8lH,SAAU7lH,CAAAA,EAAE,CAAE6lH,SAAAA,CAAUplJ,GAAG,CAAEolJ,SAAUv8I,CAAAA,GAAG,EACzE,IAAI,CAACo8I,WAAW,CAACvlH,aAAa,CAAC0lH,SAAUjlH,CAAAA,OAAO,EAAIilH,SAAAA,CAAU7lH,EAAE,CAAE6lH,SAAUhB,CAAAA,QAAQ,EAAIgB,SAAAA,CAAUplJ,GAAG,CAAEolJ,SAAAA,CAAUC,QAAQ,EAAID,SAAUv8I,CAAAA,GAAG,CAC1I,CAAA,MAAMu2B,KAAQv9B,CAAAA,IAAAA,GAASu8G,UACvB,CAAA,GAAI,IAAI,CAAC6mC,WAAW,CAAC7lH,KAAK,GAAKA,KAAAA,CAAO,CACpC,IAAI,CAAC6lH,WAAW,CAAC7lH,KAAK,CAAGA,KACzB,CAAA,IAAI,CAAC8lH,mBAAmB,GAC1B,CACA,IAAI,CAACI,uBAAuB,GAC9B,CACA,IAAIH,SAAAA,EAAY,CACd,GAAI,CAAC,IAAI,CAACvpB,WAAW,CAAE,CACrB,OAAOxd,UACT,CACA,KAAM,CAAEp+E,OAAO,CAAEC,cAAc,CAAEC,cAAc,CAAEC,OAAO,CAAEC,cAAc,CAAEC,cAAc,CAAE,CAAG,IAAI,CAAC4kH,WAAW,CAC7G,IAAI,IAAI76J,CAAI,CAAA,CAAA,CAAGA,CAAI+5J,CAAAA,UAAAA,CAAW95J,MAAM,CAAED,CAAI,EAAA,CAAA,CACxC,MAAMg7J,SAAAA,CAAYjB,UAAU,CAAC/5J,CAAE,CAAA,CAC/B,GAAIg7J,SAAUplJ,CAAAA,GAAG,GAAKigC,cAAAA,EAAkBmlH,SAAUv8I,CAAAA,GAAG,GAAKq3B,cAAAA,EAAkBklH,UAAU7lH,EAAE,GAAKS,OAAWolH,EAAAA,SAAAA,CAAUplJ,GAAG,GAAKogC,cAAkBglH,EAAAA,SAAAA,CAAUv8I,GAAG,GAAKw3B,cAAAA,EAAkB+kH,SAAU7lH,CAAAA,EAAE,GAAKY,OAAAA,CAAS,CACxM,OAAO/1C,CACT,CACF,CACA,OAAO+zH,YACT,CACA,IAAIp1E,UAAAA,CAAWh3C,KAAK,CAAE,CACpB,IAAI,CAACgzJ,WAAW,CAAC57J,IAAI,CAAC4I,OACxB,CACA,IAAIg3C,UAAa,EAAA,CACf,OAAO,IAAI,CAACg8G,WAAW,CAEzB,IAAIQ,SAAUxzJ,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACgzJ,WAAW,CAACj4J,IAAI,CAAGiF,MAC1B,CACA,IAAIwzJ,SAAAA,EAAY,CACd,OAAO,IAAI,CAACR,WAAW,CAACj4J,IAAI,CAE9B,IAAI20F,SAAU1vF,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACgzJ,WAAW,CAAClwJ,IAAI,CAAG9C,MAC1B,CACA,IAAI0vF,SAAY,EAAA,CACd,OAAO,IAAI,CAACsjE,WAAW,CAAClwJ,IAAI,CAE9B,IAAI2wJ,UAAAA,CAAWzzJ,KAAK,CAAE,CACpB,IAAI,CAACgzJ,WAAW,CAAC3xH,KAAK,CAAGrhC,MAC3B,CACA,IAAIyzJ,UAAAA,EAAa,CACf,OAAO,IAAI,CAACT,WAAW,CAAC3xH,KAAK,CAE/BjqC,IAAK6xC,CAAAA,MAAM,CAAE,CACX,IAAI,CAACttC,IAAI,CAAGstC,MAAOttC,CAAAA,IAAI,CACvB,IAAI,CAAC+vI,SAAS,CAAGziG,MAAAA,CAAOyiG,SACxB,CAAA,IAAI,CAACz6C,eAAe,CAAGhoD,MAAOgoD,CAAAA,eAAe,CAC7C,IAAI,CAACiiE,WAAW,CAAC97J,IAAI,CAAC6xC,MAAOiqH,CAAAA,WAAW,CACxC,CAAA,IAAI,CAACF,WAAW,CAAC57J,IAAI,CAAC6xC,MAAAA,CAAO+pH,WAAW,CACxC,CAAA,IAAI,CAACpnB,IAAI,CAAG3iG,MAAO2iG,CAAAA,IAAI,CACvB,IAAI,CAACl0F,YAAY,CAAGzO,MAAOyO,CAAAA,YAAY,EAAE/pC,KAAAA,EAAAA,CACzC,GAAIs7B,MAAAA,CAAO0O,WAAW,CAAE,CACtB,IAAI,CAACA,WAAW,CAAG1O,MAAOyO,CAAAA,YAAY,GAAKzO,MAAAA,CAAO0O,WAAW,CAAG,IAAI,CAACD,YAAY,CAAGzO,OAAO0O,WAAW,CAAChqC,KAAK,GAC9G,CACA,IAAI,CAAC4+H,eAAe,GACpB,IAAI,MAAM5wI,IAAQstC,IAAAA,MAAAA,CAAOg5D,UAAU,CAAC,CAClC,GAAIh5D,OAAOg5D,UAAU,CAACv9F,cAAc,CAAC/I,IAAO,CAAA,CAAA,CAC1C,IAAI,CAAC+3J,mBAAmB,CAAC/3J,IAAMstC,CAAAA,MAAAA,CAAOg5D,UAAU,CAACtmG,IAAK,CAAA,CAAC0W,IAAI,EAC7D,CACF,CACA,IAAI,CAAC+sD,OAAO,CAACn+D,KAAK,EAClBgoC,CAAAA,MAAAA,CAAOm2B,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAAA,CAAOE,MAAM,IAAI,CAACk/D,OAAO,CAACx+D,GAAG,CAACV,GAAKF,CAAAA,KAAAA,CAAAA,CAC3D,CAAA,IAAI,CAACyyJ,aAAa,CAAGxpH,MAAAA,CAAOupH,eAAe,CAAG,IAAI34B,YAAiB,CAAA,IACnE,CAAA,IAAI,CAAC44B,aAAa,EAAEr7J,IAAAA,CAAK6xC,OAAOwpH,aAAa,CAAA,CAC7C,OAAO,IAAI,CAEb9kJ,KAAQ,EAAA,CACN,MAAMA,KAAQ,CAAA,IAAI,IAAI,CAACvN,WAAW,CAClC,OAAOuN,KAAAA,CAAMvW,IAAI,CAAC,IAAI,CACxB,CACAm8J,uBAAAA,EAA0B,CACxB,MAAM31B,cAAgB,IAAI,CAACA,aAAa,CACxC,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3CulI,aAAa,CAACvlI,CAAAA,CAAE,CAAC62C,SAAS,GAC5B,CACF,CACAs2G,cAAeljH,CAAAA,MAAM,CAAEy6F,KAAK,CAAE,CAC5B,GAAI,IAAI,CAAC42B,YAAY,CAAE,CACrB,IAAI,CAACC,aAAa,GACpB,CACF,CACApqB,gBAAAA,CAAiB5+H,MAAM,CAAE,EACzB6gC,MAAAA,EAAS,CACP,GAAIvxC,MAAOoW,CAAAA,IAAI,CAAC,IAAI,CAACwiJ,UAAU,CAAA,CAAEx6J,MAAM,CAAG,CAAG,CAAA,CAC3C,IAAK,KAAM,CAAC4H,GAAAA,CAAKF,KAAM,CAAA,GAAI9F,MAAOqlD,CAAAA,OAAO,CAAC,IAAI,CAACuzG,UAAU,CAAA,CAAE,CACzD,IAAI,CAACJ,YAAY,CAAC54B,IAAI,CAACl5H,GAAG,CAACV,GAAAA,CAAKF,KAChC,CAAA,CAAA,OAAO,IAAI,CAAC8yJ,UAAU,CAAC5yJ,GAAAA,EAAI,CAE/B,CACA,GAAI,IAAI,CAACm1I,aAAa,EAAI,IAAI,CAACod,aAAa,EAAEh5B,OAAW,EAAA,CAAA,CACvD,IAAI,CAAC4b,aAAa,CAAG,KACrB,CAAA,IAAI,CAACod,aAAa,EAAE/4B,UACpB,EAAA,CAAA,IAAI,CAACk6B,aAAa,GACpB,CACA,IAAI,CAAC5oH,KAAK,CAAG,KACf,CACAuhG,eAAAA,EAAkB,CAChB,IAAI,CAACtqC,UAAU,CAAG,GACpB,CACAuqC,aAAgB,EAAA,CACd,OAAO,IAAI,CAACvqC,UACd,CACA2xD,aAAAA,EAAgB,CACd,IAAI,CAACrqB,QAAQ,CAACtoI,KAAK,EACnB,CAAA,MAAM28H,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,MAAMvlF,KAAAA,CAAQulF,aAActlI,CAAAA,MAAM,CAClC,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BulI,aAAa,CAACvlI,CAAAA,CAAE,CAACuwI,YAAY,GAC/B,CACF,CACA/9C,YAAalvF,CAAAA,IAAI,CAAE,CACjB,OAAO,IAAI,CAACsmG,UAAU,CAACtmG,IAAK,CAC9B,CACA+3J,mBAAAA,CAAoB/3J,IAAI,CAAE0W,IAAI,CAAE,CAC9B,MAAM2vF,KAAAA,CAAQ,IAAI,CAACC,UAAU,CAACtmG,IAAK,CAAA,CACnC,GAAIqmG,KAAAA,CAAO,CACTA,KAAAA,CAAM3vF,IAAI,CAAGA,KACf,CAAO,KAAA,CACL,IAAI,CAAC4vF,UAAU,CAACtmG,IAAK,CAAA,CAAG,CACtBglC,OAAAA,CAAS,IACTtuB,CAAAA,IAAAA,CAAMA,IACR,EACF,CACF,CACA0vF,YAAAA,CAAapmG,IAAI,CAAE0W,IAAI,CAAE,CACvB,GAAIA,IAASlS,GAAAA,SAAAA,EAAa,OAAOxE,IAAAA,GAAS,QAAU,CAAA,CAClD,MAAMk4J,aAAAA,CAAgBl4J,KACtB,GAAIk4J,aAAAA,CAAcv7J,MAAM,CAAE,CACxB,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIw7J,CAAAA,aAAAA,CAAcv7J,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,IAAI,CAAC0pG,YAAY,CAAC8xD,aAAa,CAACx7J,CAAAA,CAAE,EACpC,CACA,MACF,CACAsD,IAAOk4J,CAAAA,aAAAA,CAAcl4J,IAAI,CACzB0W,IAAOwhJ,CAAAA,aAAAA,CAAc7zJ,MACvB,CACA,IAAI,CAAC0zJ,mBAAmB,CAAC/3J,IAAM0W,CAAAA,IAAAA,EACjC,CACA6vF,eAAAA,CAAgBvmG,IAAI,CAAE,CACpB,GAAI,IAAI,CAACsmG,UAAU,CAACtmG,IAAAA,CAAK,CAAE,CACzB,OAAO,IAAI,CAACsmG,UAAU,CAACtmG,IAAK,EAC9B,CACF,CACAgxI,aAAcrqG,CAAAA,MAAM,CAAEjE,KAAK,CAAE,CAC3B,MAAM4jE,UAAa,CAAA,IAAI,CAACA,UAAU,CAClC,GAAI5jE,KAAUl+B,GAAAA,SAAAA,CAAWk+B,MAAQ4jE,UACjC,CAAA,IAAI,MAAM4qC,SAAAA,IAAaxuG,KAAM,CAAA,CAC3B,MAAMyuG,SAAAA,CAAY7qC,UAAU,CAAC4qC,SAAAA,CAAU,CACvC,GAAIC,SAAW,CAAA,CACb,GAAI,CAACA,SAAUnsG,CAAAA,OAAO,CAAE,CACtBmsG,SAAUnsG,CAAAA,OAAO,CAAG2B,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAACmqG,SAAAA,EAC3C,CACAC,SAAAA,CAAUnsG,OAAO,CAACqP,QAAQ,CAAC88F,SAAUz6H,CAAAA,IAAI,EAC3C,CACF,CACF,CACAyhJ,UAAUn4J,IAAI,CAAEqE,KAAK,CAAE,CACrB,IAAI+zJ,QAAW,CAAA,KAAA,CACf,KAAM,CAAE30F,OAAO,CAAE,CAAG,IAAI,CACxB,GAAIp/D,QAAUG,SAAaH,EAAAA,KAAAA,GAAU,KAAO,CAAA,CAC1C+zJ,QAAW,CAAA,CAAC30F,OAAQz+D,CAAAA,GAAG,CAAChF,IAASyjE,CAAAA,EAAAA,OAAAA,CAAQhlE,GAAG,CAACuB,IAAUqE,CAAAA,GAAAA,KAAAA,CACvDo/D,OAAQx+D,CAAAA,GAAG,CAACjF,IAAMqE,CAAAA,KAAAA,EACpB,CAAO,KAAA,CACL+zJ,QAAW30F,CAAAA,OAAAA,CAAQz+D,GAAG,CAAChF,IACvByjE,CAAAA,CAAAA,OAAAA,CAAQl+D,MAAM,CAACvF,IACjB,EAAA,CACA,IAAI,CAAC05I,gBAAL,IAAI,CAACA,aAAkB0e,CAAAA,QAAAA,EACzB,CACAC,SAAAA,CAAUr4J,IAAI,CAAE,CACd,OAAO,IAAI,CAACyjE,OAAO,CAACz+D,GAAG,CAAChF,KAC1B,CACA6lC,OAAAA,EAAU,CACR,IAAI,CAAC+nG,QAAQ,CAACtoI,KAAK,EACnB,CAAA,IAAI,IAAI5I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACulI,aAAa,CAACtlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAChD,MAAM4kI,YAAe,CAAA,IAAI,CAACW,aAAa,CAACvlI,CAAE,CAAA,CAC1C4kI,YAAa2L,CAAAA,YAAY,EACzB3L,CAAAA,aAAaqM,SAAS,CAAG,IACzB,CAAA,GAAIrM,YAAa8E,CAAAA,IAAI,CAAE,CACrB,MAAMkyB,eAAAA,CAAkBttB,kBAAmB1J,CAAAA,YAAAA,CAAa8E,IAAI,CAACz/F,MAAM,CAAA,CACnE,GAAI,IAAI,GAAK2xH,eAAiB,CAAA,CAC5Bh3B,YAAa/B,CAAAA,QAAQ,CAAG+4B,gBAC1B,CACF,CACF,CACA,IAAI,CAACr2B,aAAa,CAACtlI,MAAM,CAAG,EAC9B,CACAsxI,kBAAmB3M,CAAAA,YAAY,CAAE,CAC/B,IAAI,CAACW,aAAa,CAACzkI,IAAI,CAAC8jI,YAC1B,EAAA,CACA0M,qBAAsB1M,CAAAA,YAAY,CAAE,CAClC,MAAMW,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,MAAMvlI,EAAIulI,aAAct8H,CAAAA,OAAO,CAAC27H,YAAAA,CAAAA,CAChC,GAAI5kI,CAAAA,GAAM,CAAC,CAAA,CAAG,CACZulI,aAAcz8H,CAAAA,MAAM,CAAC9I,CAAAA,CAAG,CAC1B,EAAA,CACF,CA9SA+H,WAAAA,EAAa,CACX,IAAI,CAACw9H,aAAa,CAAG,EAAE,CACvB,IAAI,CAACjiI,IAAI,CAAG,UACZ,CAAA,IAAI,CAACu4J,MAAM,CAAG,EACd,CAAA,IAAI,CAAC7xH,EAAE,CAAGiwH,IACV,EAAA,CAAA,IAAI,CAAC/oB,QAAQ,CAAG,IAAI9oI,GACpB,CAAA,IAAI,CAAC2+D,OAAO,CAAG,IAAI3+D,GACnB,CAAA,IAAI,CAAC40I,aAAa,CAAG,KACrB,CAAA,IAAI,CAACpzC,UAAU,CAAG,EAClB,CAAA,IAAI,CAACypC,SAAS,CAAG,CACjB,CAAA,IAAI,CAACz6C,eAAe,CAAG,KACvB,CAAA,IAAI,CAACiiE,WAAW,CAAG,IAAI9lH,UACvB,CAAA,IAAI,CAAC4lH,WAAW,CAAG,IAAI/jH,UACvB,CAAA,IAAI,CAAC28F,IAAI,CAAGz8G,aACZ,CAAA,IAAI,CAACuoB,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC86G,aAAa,CAAG,IACrB,CAAA,IAAI,CAACK,UAAU,CAAG,EAClB,CAAA,IAAI,CAACa,YAAY,CAAG,IACpB,CAAA,IAAI,CAACQ,cAAc,CAAG,CACtB,CAAA,IAAI,CAACC,MAAM,CAAG,IACd,CAAA,IAAI,CAACppH,KAAK,CAAG,KACf,CAyRF,CAEA,MAAMqpH,cAAAA,CAIJ7yH,OAAU,EAAA,CACR,IAAI,CAACvgC,KAAK,EACV,CAAA,IAAI,CAACqpC,KAAK,CAAG,KACf,CACArpC,KAAQ,EAAA,CACN,IAAI,CAACqpC,KAAK,CAACtlC,OAAO,CAAC,UAACsvJ,EAAAA,CAClBA,UAAWtvJ,CAAAA,OAAO,CAAEyoJ,YAClBA,SAAUjsH,CAAAA,OAAO,GACnB,CAAA,EACF,CACA,CAAA,CAAA,IAAI,CAAC8I,KAAK,CAACrpC,KAAK,GAClB,CACAuiD,MAAO6/F,CAAAA,KAAK,CAAE,CACZ,MAAMkR,SAAYlR,CAAAA,KAAAA,CAAM7wI,KAAK,GAAKs7G,cAClC,CAAA,MAAMkgC,UAAa3K,CAAAA,KAAAA,CAAMuK,WAAW,CACpC,MAAMG,UAAa1K,CAAAA,KAAAA,CAAMsK,iBAAiB,CAC1C,OAAO,CAAC,EAAE4G,SAAU,CAAA,CAAC,EAAEvG,UAAAA,CAAW,CAAC,EAAED,UAAW,CAAA,CAAC,CAEnD3zJ,GAAIkoC,CAAAA,MAAM,CAAE+gH,KAAK,CAAE,CACjB,MAAMnjJ,GAAM,CAAA,IAAI,CAACsjD,MAAM,CAAC6/F,KAAAA,CAAAA,CACxB,MAAMiR,UAAAA,CAAa,IAAI,CAAChqH,KAAK,CAAClwC,GAAG,CAAC8F,GAClC,CAAA,CAAA,GAAIo0J,YAAcA,UAAWh8J,CAAAA,MAAM,CAAE,CACnC,OAAOg8J,UAAAA,CAAW36J,GAAG,EACvB,CACA,MAAM8zJ,SAAYF,CAAAA,SAAAA,CAAU/1J,MAAM,CAAC8qC,MAAQ+gH,CAAAA,KAAAA,CAC3CoK,CAAAA,SAAUW,CAAAA,MAAM,CAAG,IAAA,CACnB,OAAOX,SACT,CACA9kJ,GAAAA,CAAI06I,KAAK,CAAEoK,SAAS,CAAE,CACpB,MAAMvtJ,GAAAA,CAAM,IAAI,CAACsjD,MAAM,CAAC6/F,KAAAA,CAAAA,CACxB,MAAMiR,UAAAA,CAAa,IAAI,CAAChqH,KAAK,CAAClwC,GAAG,CAAC8F,GAClC,CAAA,CAAA,GAAIo0J,UAAY,CAAA,CACdA,UAAWn7J,CAAAA,IAAI,CAACs0J,SAClB,EAAA,CAAA,KAAO,CACL,IAAI,CAACnjH,KAAK,CAAC1pC,GAAG,CAACV,GAAK,CAAA,CAClButJ,SACD,CAAA,EACH,CACF,CAzCArtJ,WAAa,EAAA,CACX,IAAI,CAACkqC,KAAK,CAAG,IAAI7pC,IACnB,CAwCF,CAEA,MAAM+zJ,iCAA0CvxD,SAAAA,UAAAA,CAW9CW,OAAU,EAAA,CACR,IAAI,CAAC6wD,cAAc,CAACC,UAAU,CAAC,IAAI,CAACrR,KAAK,CAAE,IAAA,CAAM,IAAI,CAAC16G,IAAI,CAAE,KAAA,EAC9D,CACAk7D,KAAAA,EAAQ,CACN,GAAI,IAAI,CAAC8wD,QAAQ,CAAE,CACjB,IAAI,CAACF,cAAc,CAACG,SAAS,CAAC,IAAI,CAACvR,KAAK,CAAE,IAAI,CAACwR,YAAY,EAC7D,CACF,CAjBAz0J,WAAAA,CAAYkiC,MAAM,CAAEmyH,cAAc,CAAEpR,KAAK,CAAE16G,IAAI,CAAEgsH,QAAQ,CAAC,CACxD,KAAK,CAACryH,MAAAA,CACN,CAAA,IAAI,CAACoiE,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAAC+vD,cAAc,CAAGA,cACtB,CAAA,IAAI,CAACpR,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC16G,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACgsH,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACE,YAAY,CAAGJ,eAAeK,WAAW,CAACzR,KAAO,CAAA,IAAA,CAAM16G,IAC5D8rH,CAAAA,CAAAA,cAAAA,CAAeM,eAAe,CAAC,IAAI,CAAE,IAAI,CAACF,YAAY,CAAE,IAC1D,EAAA,CASF,CAEA,MAAMG,mBAAAA,CAOJppB,IAAKyX,CAAAA,KAAK,CAAE4R,IAAI,CAAEC,OAAAA,CAAU,IAAI,CAAE,CAChC,MAAMC,WAAAA,CAAc,IAAI,CAACpa,QAAQ,CAAChe,KAAK,CAACq4B,wBAAwB,CAChE/R,KAAMjW,CAAAA,gBAAgB,CAAG,IAAA,CACzB,GAAI,CAAC+nB,WAAa,CAAA,CAChB,GAAI,CAAC9R,KAAM4O,CAAAA,UAAU,CAAE,CACrB5O,KAAAA,CAAM4O,UAAU,CAAG1E,SAAU/1J,CAAAA,MAAM,CAAC,IAAI,CAAC8qC,MAAM,CAAE+gH,KACnD,EAAA,CACF,CACA,MAAMvzI,IAAOuzI,CAAAA,KAAAA,CAAM7wI,KAAK,CACxB,MAAM6+I,SAAYvhJ,CAAAA,IAAAA,GAASk+G,cAAiB,CAAA,CAAA,CAAI,CAChD,CAAA,IAAI,IAAIrlF,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAO0oH,SAAW1oH,CAAAA,IAAAA,EAAAA,CAAO,CACzC,MAAMi+G,gBAAkBvD,KAAMwD,CAAAA,aAAa,CAAC,IAAA,CAAMl+G,IAClD,CAAA,CAAA,MAAM0sH,SAAYzO,CAAAA,eAAAA,CAAgBiO,YAClCQ,CAAAA,SAAAA,CAAU/b,QAAQ,CAAG+J,KAAM8D,CAAAA,cAAc,CAAG,GAC5CkO,CAAAA,SAAU3c,CAAAA,OAAO,CAAG2K,KAAAA,CAAM8D,cAAc,CACxC,MAAMmO,aAAAA,CAAgBD,SAAU7b,CAAAA,KAAK,CACrC,MAAM+b,SAAYlS,CAAAA,KAAAA,CAAM7J,KAAK,CAC7B8b,aAAAA,CAAc1yC,WAAW,CAAC2yC,SAAU5yC,CAAAA,WAAW,EAC/C,CAAA,CAAA,GAAI7yG,OAASk+G,cAAgB,CAAA,CAC3BqnC,SAAUt6I,CAAAA,GAAG,CAAGsoI,KAAAA,CAAMG,eAAe,CAAG,EACxC8R,aAAcjU,CAAAA,WAAW,CAACkU,SAAAA,CAAUlV,WAAW,EAAA,CAAA,CAC/CiV,aAAcxS,CAAAA,WAAW,CAAC,CAAC,EAAI,CAAA,CAAA,CAAG,CACpC,EAAA,CAAA,KAAO,GAAIhzI,IAAAA,GAASg+G,eAAgB,CAClC,GAAIqnC,WAAa,CAAA,CACf,MAAMK,QAAAA,CAAW,IAAI,CAACf,cAAc,CAACgB,iBAAiB,CAACpG,qBAAqB,CAAGhM,KAAAA,CAAMO,aAAa,CAACrvI,CAAC,CAAG,CAAA,CACvG,MAAMmhJ,SAAAA,CAAY,CAAIF,CAAAA,QAAAA,CACtB,MAAMG,UAAAA,CAAaD,SAAY,CAAA,IAAI,CAACjB,cAAc,CAACgB,iBAAiB,CAAC3F,gBAAgB,CACrFuF,SAAAA,CAAUt6I,GAAG,CAAGnjB,IAAKg+J,CAAAA,IAAI,CAAC,CAAA,CAAID,YAAcjqJ,IAAKG,CAAAA,UAAU,CAAG,EAChE,CAAO,KAAA,CACLwpJ,SAAUt6I,CAAAA,GAAG,CAAG,GAClB,CACF,CACA,IAAI,CAACggI,QAAQ,CAAC8a,mBAAmB,CAACR,SAAAA,CAAAA,CAClC,IAAI,CAACZ,cAAc,CAACqB,iBAAiB,CAACb,KAAM5R,KAAOuD,CAAAA,eAAAA,CAAgBmP,cAAc,CAAEV,SAAWH,CAAAA,OAAAA,EAChG,CACF,CACAc,aAAcC,CAAAA,YAAY,CAAEpL,MAAM,CAAE,CAClC,IAAIgK,YAAAA,CACJ,IAAI,IAAIx8J,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIwyJ,MAAOvyJ,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAMgrJ,KAAQwH,CAAAA,MAAM,CAACxyJ,CAAAA,CAAE,CACvB,GAAI,IAAI,CAACo8J,cAAc,CAACyB,oBAAoB,CAAC7S,KAAAA,CAAAA,EAAUA,KAAM4C,CAAAA,sBAAsB,CAAE,CACnFgQ,YAAAA,CAAa98J,IAAI,CAACkqJ,KAClB,CAAA,CAAA,IAAI,IAAI16G,IAAAA,CAAO,EAAGA,IAAO06G,CAAAA,KAAAA,CAAMiO,cAAc,CAAE3oH,IAAO,EAAA,CAAA,CACpDksH,YAAe,CAAA,IAAI,CAACJ,cAAc,CAACK,WAAW,CAACzR,KAAAA,CAAO,IAAM16G,CAAAA,IAAAA,EAC9D,CACF,CACF,CACA,OAAOksH,YACT,CACAsB,6BAAAA,CAA8BC,UAAU,CAAEzF,WAAW,CAAE,CACrD,IAAI,IAAIt4J,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIs4J,YAAYr4J,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,MAAMgrJ,KAAAA,CAAQsN,WAAW,CAACt4J,CAAE,CAAA,CAC5B,GAAI,IAAI,CAACo8J,cAAc,CAACyB,oBAAoB,CAAC7S,KAAQ,CAAA,CAAA,CACnD,MAAMsR,QAAAA,CAAWtR,KAAM7wI,CAAAA,KAAK,GAAKw7G,cAAAA,CACjC,MAAMqjC,SAAYhO,CAAAA,KAAAA,CAAMiO,cAAc,CACtC,IAAI,IAAI3oH,IAAO,CAAA,CAAA,CAAGA,KAAO0oH,SAAW1oH,CAAAA,IAAAA,EAAAA,CAAO,CACzC,MAAM2R,UAAa,CAAA,IAAIk6G,iCAAkC,CAAA,IAAI,CAAClyH,MAAM,CAAE,IAAI,CAACmyH,cAAc,CAAEpR,KAAAA,CAAO16G,KAAMgsH,QACxGyB,CAAAA,CAAAA,UAAAA,CAAWC,aAAa,CAAC/7G,UAC3B,EAAA,CACF,CACF,CACF,CAnEAl6C,WAAAA,CAAY26I,QAAQ,CAAE0Z,cAAc,CAAC,CACnC,IAAI,CAACwB,YAAY,CAAG,EACpB,CAAA,IAAI,CAAClb,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC0Z,cAAc,CAAGA,cACtB,CAAA,IAAI,CAACnyH,MAAM,CAAGy4G,QAASz4G,CAAAA,OAAM,CAgEjC,CAEA,MAAMg0H,2BAAAA,SAAoCrzD,UAQxCW,CAAAA,OAAAA,EAAU,CACR,KAAM,CAAEy/C,KAAK,CAAE/X,MAAM,CAAEmpB,cAAc,CAAE8B,oBAAoB,CAAE,CAAG,IAAI,CACpE,MAAMlF,SAAYhO,CAAAA,KAAAA,CAAMiO,cAAc,CACtC,MAAMkF,qBAAAA,CAAwBnT,MAAMmT,qBAAqB,CACzD,IAAI,IAAI7tH,IAAO,CAAA,CAAA,CAAGA,IAAO0oH,CAAAA,SAAAA,CAAW1oH,OAAO,CACzC,GAAI6tH,qBAAuB,GAAC7tH,IAAK,CAAA,GAAK4rF,iBAAmB,CAAA,CACvDkgC,eAAeC,UAAU,CAACrR,KAAO/X,CAAAA,MAAAA,CAAQ3iG,IAAM,CAAA,CAAC4tH,oBAClD,EAAA,CACA,GAAIC,qBAAAA,GAAwB7tH,IAAAA,CAAK,GAAK6rF,sBAAAA,CAAwB,CAC5DgiC,qBAAqB,CAAC7tH,IAAK,CAAA,CAAG4rF,kBAChC,CACF,CACF,CACA1wB,KAAQ,EAAA,CACN,IAAI,CAAC4wD,cAAc,CAACG,SAAS,CAAC,IAAI,CAACvR,KAAK,CAAE,IAAI,CAAC/X,MAAM,EACvD,CAtBAlrI,WAAAA,CAAYkiC,MAAM,CAAEmyH,cAAc,CAAEpR,KAAK,CAAE/X,MAAM,CAAEirB,oBAAoB,CAAC,CACtE,KAAK,CAACj0H,MACN,CAAA,CAAA,IAAI,CAACmyH,cAAc,CAAGA,cACtB,CAAA,IAAI,CAACpR,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC/X,MAAM,CAAGA,MACd,CAAA,IAAI,CAACirB,oBAAoB,CAAGA,qBAC9B,CAiBF,CAEA,MAAME,gBAAAA,CAAmB,IAAInzI,WAAAA,CAC7B,MAAME,MAAS,CAAA,IAAIlP,IACnB,CAAA,MAAMoiJ,eAAkB,CAAA,IAAI97I,IAC5B,CAAA,MAAM+7I,WAAa,CACjB,IAAIriJ,IACJ,CAAA,IAAIA,IACJ,CAAA,IAAIA,IACJ,CAAA,IAAIA,KACJ,IAAIA,IAAAA,CACJ,IAAIA,IAAAA,CACJ,IAAIA,IAAAA,CACJ,IAAIA,IAAAA,CACL,CACD,MAAMsiJ,WAAc,CAAA,CAClB7qJ,GAAK,CAAA,CAAA,CACLC,GAAK,CAAA,CACP,EACA,SAAS6qJ,aAAAA,CAAcC,gBAAgB,CAAEC,OAAO,CAAEC,OAAO,CAAA,CACvDL,UAAU,CAAC,CAAE,CAAA,CAACjqJ,CAAC,CAAGiqJ,UAAU,CAAC,EAAE,CAACjqJ,CAAC,CAAGiqJ,UAAU,CAAC,CAAA,CAAE,CAACjqJ,CAAC,CAAGiqJ,UAAU,CAAC,CAAA,CAAE,CAACjqJ,CAAC,CAAGqqJ,OAAAA,CAAQrqJ,CAAC,CACjFiqJ,UAAU,CAAC,CAAE,CAAA,CAACviJ,CAAC,CAAGuiJ,UAAU,CAAC,CAAA,CAAE,CAACviJ,CAAC,CAAGuiJ,UAAU,CAAC,CAAA,CAAE,CAACviJ,CAAC,CAAGuiJ,UAAU,CAAC,CAAE,CAAA,CAACviJ,CAAC,CAAG2iJ,OAAQ3iJ,CAAAA,CAAC,CACjFuiJ,UAAU,CAAC,CAAE,CAAA,CAACpiJ,CAAC,CAAGoiJ,UAAU,CAAC,CAAA,CAAE,CAACpiJ,CAAC,CAAGoiJ,UAAU,CAAC,CAAA,CAAE,CAACpiJ,CAAC,CAAGoiJ,UAAU,CAAC,CAAA,CAAE,CAACpiJ,CAAC,CAAGwiJ,OAAQxiJ,CAAAA,CAAC,CACjFoiJ,UAAU,CAAC,CAAE,CAAA,CAACjqJ,CAAC,CAAGiqJ,UAAU,CAAC,CAAE,CAAA,CAACjqJ,CAAC,CAAGiqJ,UAAU,CAAC,CAAA,CAAE,CAACjqJ,CAAC,CAAGiqJ,UAAU,CAAC,CAAE,CAAA,CAACjqJ,CAAC,CAAGsqJ,OAAQtqJ,CAAAA,CAAC,CACjFiqJ,UAAU,CAAC,CAAA,CAAE,CAACviJ,CAAC,CAAGuiJ,UAAU,CAAC,CAAA,CAAE,CAACviJ,CAAC,CAAGuiJ,UAAU,CAAC,CAAA,CAAE,CAACviJ,CAAC,CAAGuiJ,UAAU,CAAC,CAAE,CAAA,CAACviJ,CAAC,CAAG4iJ,OAAQ5iJ,CAAAA,CAAC,CACjFuiJ,UAAU,CAAC,CAAA,CAAE,CAACpiJ,CAAC,CAAGoiJ,UAAU,CAAC,CAAE,CAAA,CAACpiJ,CAAC,CAAGoiJ,UAAU,CAAC,CAAE,CAAA,CAACpiJ,CAAC,CAAGoiJ,UAAU,CAAC,CAAE,CAAA,CAACpiJ,CAAC,CAAGyiJ,QAAQziJ,CAAC,CACjF,IAAI8T,IAAAA,CAAO,UACX,CAAA,IAAIG,IAAO,CAAA,CAAC,WACZ,IAAI,IAAInwB,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAAA,CAAE,CACxBy+J,gBAAiBt6I,CAAAA,cAAc,CAACm6I,UAAU,CAACt+J,CAAAA,CAAE,CAAEs+J,UAAU,CAACt+J,CAAAA,CAAE,CAC5D,CAAA,MAAMkc,CAAIoiJ,CAAAA,UAAU,CAACt+J,CAAAA,CAAE,CAACkc,CAAC,CACzB,GAAIA,CAAAA,CAAI8T,IAAMA,CAAAA,IAAAA,CAAO9T,CACrB,CAAA,GAAIA,CAAIiU,CAAAA,IAAAA,CAAMA,IAAOjU,CAAAA,EACvB,CACAqiJ,WAAAA,CAAY7qJ,GAAG,CAAGsc,IAClBuuI,CAAAA,WAAAA,CAAY5qJ,GAAG,CAAGwc,IAClB,CAAA,OAAOouI,WACT,CACA,MAAMK,yBAAAA,CAMJrrB,IAAKyX,CAAAA,KAAK,CAAE4R,IAAI,CAAE3pB,MAAM,CAAE4pB,OAAU,CAAA,IAAI,CAAE,CACxC7R,KAAMjW,CAAAA,gBAAgB,CAAG,IAAA,CACzB,GAAI,CAACiW,KAAAA,CAAM4O,UAAU,CAAE,CACrB5O,KAAAA,CAAM4O,UAAU,CAAG1E,UAAU/1J,MAAM,CAAC,IAAI,CAAC8qC,MAAM,CAAE+gH,KACnD,EAAA,CACA,MAAM6T,QAAAA,CAAW5rB,MAAOiO,CAAAA,SAAS,CACjC,IAAI,CAAC4d,sBAAsB,CAAC9T,KAAO6T,CAAAA,QAAAA,CAAUt/J,IAAKmU,CAAAA,GAAG,CAACu/H,MAAAA,CAAOqN,QAAQ,CAAE0K,KAAM+T,CAAAA,cAAc,CAC3F,CAAA,CAAA,MAAMZ,qBAAwBnT,CAAAA,KAAAA,CAAMmT,qBAAqB,CACzD,IAAI,IAAIa,OAAAA,CAAU,CAAGA,CAAAA,OAAAA,CAAUhU,KAAMiU,CAAAA,WAAW,CAAED,OAAAA,EAAAA,CAAU,CAC1D,GAAIb,qBAAuB,GAACa,OAAQ,CAAA,GAAK9iC,iBAAmB,CAAA,CAC1D,KACF,CACA,MAAMqyB,eAAkBvD,CAAAA,KAAAA,CAAMwD,aAAa,CAACvb,MAAQ+rB,CAAAA,OAAAA,CAAAA,CACpD,MAAMhC,SAAYzO,CAAAA,eAAAA,CAAgBiO,YAClCQ,CAAAA,SAAAA,CAAUv+G,YAAY,CAAGusG,MAAM4O,UAAU,CAACzE,aAAa,CAAC,CAAE,CAAA,CAC1D5G,eAAgB6K,CAAAA,cAAc,CAACr6J,IAAI,CAACisJ,KAAAA,CAAMkU,QAAQ,CAACF,OAAQ,CAAA,CAAA,CAC3DzQ,gBAAgB8K,aAAa,CAACt6J,IAAI,CAACisJ,KAAMkU,CAAAA,QAAQ,CAACF,OAAAA,CAAQ,CAC1D,CAAA,MAAM/B,aAAgBD,CAAAA,SAAAA,CAAU7b,KAAK,CACrC,MAAM+b,SAAAA,CAAYlS,MAAM7J,KAAK,CAC7B8b,aAAc1yC,CAAAA,WAAW,CAAC2yC,SAAAA,CAAU5yC,WAAW,EAAA,CAAA,CAC/C2yC,aAAcjU,CAAAA,WAAW,CAACkU,SAAAA,CAAUlV,WAAW,EAAA,CAAA,CAC/CiV,aAAcxS,CAAAA,WAAW,CAAC,CAAC,EAAA,CAAI,CAAG,CAAA,CAAA,CAAA,CAClC,MAAM0U,eAAAA,CAAkBH,OAAY,GAAA,CAAA,CAAIH,SAAW7T,KAAMoU,CAAAA,uBAAuB,CAACJ,OAAAA,CAAU,CAAE,CAAA,CAC7F,MAAMK,cAAAA,CAAiBrU,MAAMoU,uBAAuB,CAACJ,OAAQ,CAAA,CAC7D,MAAMM,aAAAA,CAAgBrsB,MAAO+Q,CAAAA,iBAAiB,CAACmb,eAAAA,CAAiBE,cAChEl0I,CAAAA,CAAAA,MAAAA,CAAO5iB,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,GACjB,MAAMg3J,cAAAA,CAAiBtsB,MAAO7C,CAAAA,IAAI,CAACzI,iBAAiB,EACpD,CAAA,IAAI,IAAI3nI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxBu/J,cAAep7I,CAAAA,cAAc,CAACm7I,aAAa,CAACt/J,CAAE,CAAA,CAAEs/J,aAAa,CAACt/J,CAAE,CAAA,CAAA,CAChEmrB,MAAO7a,CAAAA,GAAG,CAACgvJ,aAAa,CAACt/J,CAAAA,CAAE,EAC7B,CACAmrB,OAAOrV,SAAS,CAAC,CAAI,CAAA,CAAA,CAAA,CACrB,IAAI0F,MAAAA,CAAS,CACb,CAAA,IAAI,IAAIxb,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxB,MAAMw/J,IAAAA,CAAOF,aAAa,CAACt/J,CAAAA,CAAE,CAAC4d,GAAG,CAACuN,MAAAA,CAAAA,CAAQlrB,MAAM,EAAA,CAChD,GAAIu/J,IAAAA,CAAOhkJ,MAAQ,CAAA,CACjBA,MAASgkJ,CAAAA,KACX,CACF,CACA,MAAMpwJ,KAAQ6tJ,CAAAA,aAAAA,CAAc7tJ,KAAK,CACjC,MAAMmV,EAAAA,CAAK04I,aAAc14I,CAAAA,EAAE,CAC3B,MAAMk7I,QAAWxC,CAAAA,aAAAA,CAAcxX,OAAO,CACtC,MAAMia,SAAAA,CAAY,IAAO1U,KAAMsK,CAAAA,iBAAiB,CAAG95I,MAAAA,CACnD,MAAMnH,CAAAA,CAAI9U,IAAK0V,CAAAA,IAAI,CAACkW,MAAAA,CAAOjO,GAAG,CAACqH,EAAMm7I,CAAAA,CAAAA,SAAAA,CAAAA,CAAaA,SAClD,CAAA,MAAM3jJ,EAAIxc,IAAK0V,CAAAA,IAAI,CAACkW,MAAAA,CAAOjO,GAAG,CAAC9N,KAASswJ,CAAAA,CAAAA,SAAAA,CAAAA,CAAaA,UACrD,MAAMC,QAAAA,CAAWp7I,EAAGzO,CAAAA,SAAS,CAACzB,CAAAA,CAAAA,CAC9B,MAAMurJ,WAAAA,CAAcxwJ,MAAM0G,SAAS,CAACiG,CACpC,CAAA,CAAA,MAAMmB,GAAMiO,CAAAA,MAAAA,CAAOjO,GAAG,CAACuiJ,QACvB,CAAA,CAAA,MAAMI,SAAYJ,CAAAA,QAAAA,CAAS3pJ,SAAS,CAACoH,GACrCiO,CAAAA,CAAAA,MAAAA,CAAOhP,IAAI,CAACwjJ,QAAAA,CAAUC,WAAatvJ,CAAAA,CAAAA,GAAG,CAACuvJ,SAAAA,CAAAA,CACvC5C,aAAc1yC,CAAAA,WAAW,CAACp/F,MAAAA,CAAAA,CAC1B8xI,aAAc1S,CAAAA,cAAc,CAAC,CAAA,CAAG,CAAG,CAAA,GAAA,CACnCyS,CAAAA,SAAU/b,CAAAA,QAAQ,CAAG,GACrB+b,CAAAA,SAAAA,CAAU3c,OAAO,CAAG,GACpB2c,CAAAA,SAAU5b,CAAAA,WAAW,CAAG5lI,MAAAA,CACxB,IAAI,CAACknI,QAAQ,CAAC8a,mBAAmB,CAACR,SAAAA,CAAAA,CAClC,IAAI,CAACZ,cAAc,CAACqB,iBAAiB,CAACb,IAAAA,CAAM5R,KAAOuD,CAAAA,eAAAA,CAAgBmP,cAAc,CAAEV,SAAWH,CAAAA,OAAAA,CAAAA,CAC9F,MAAMiD,WAAc,CAAA,CAAA,EAAKd,OACzB,CAAA,MAAMtB,cAAiBnP,CAAAA,eAAAA,CAAgBmP,cAAc,CACrD,MAAMqC,qBAAAA,CAAwBrC,cAAez9J,CAAAA,MAAM,CACnD,IAAI+/J,iBAAoB,CAAA,CAAA,CACxB,IAAI,IAAIhgK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+/J,qBAAuB//J,CAAAA,CAAAA,EAAAA,CAAI,CAC5C,MAAM4kI,YAAe84B,CAAAA,cAAc,CAAC19J,CAAAA,CAAE,CACtC,GAAI4kI,YAAaiQ,CAAAA,iBAAiB,CAAGirB,WAAa,CAAA,CAChDpC,cAAc,CAACsC,iBAAoB,EAAA,CAAA,CAAGp7B,YACtC,CAAA,GAAIo7B,iBAAsB,GAAA,CAAA,CAAG,CAC3B5B,gBAAAA,CAAiBr/J,IAAI,CAAC6lI,YAAa91G,CAAAA,IAAI,EACzC,CAAO,KAAA,CACLsvI,gBAAiB9tJ,CAAAA,GAAG,CAACs0H,YAAAA,CAAa91G,IAAI,EACxC,CACF,CACF,CACA,GAAIixI,qBAAAA,GAA0BC,iBAAmB,CAAA,CAC/CtC,cAAez9J,CAAAA,MAAM,CAAG+/J,kBAC1B,CACA3B,eAAgBt/J,CAAAA,IAAI,CAACk+J,aAAAA,CAAct1B,iBAAiB,EAAA,CAAA,CAAI5hH,MAAM,EAAA,CAC9D,MAAMk6I,UAAAA,CAAazB,aAAcH,CAAAA,eAAAA,CAAiBD,gBAAiBhxI,CAAAA,MAAM,GAAIgxI,gBAAiBlxI,CAAAA,MAAM,EACpG+vI,CAAAA,CAAAA,aAAAA,CAAc1S,cAAc,CAAC,CAAG,CAAA,CAAA,CAAG0V,WAAWtsJ,GAAG,CAAG,EACpDqpJ,CAAAA,CAAAA,SAAU3c,CAAAA,OAAO,CAAG4f,UAAAA,CAAWtsJ,GAAG,CAAGssJ,UAAAA,CAAWvsJ,GAAG,CAAG,EACtD66I,CAAAA,eAAgB2R,CAAAA,sBAAsB,CAAG1kJ,OAC3C,CACF,CACAsjJ,sBAAuB9T,CAAAA,KAAK,CAAE6T,QAAQ,CAAEsB,OAAO,CAAE,CAC/CnV,KAAAA,CAAMoU,uBAAuB,CAACpM,IAAI,CAACmN,SACnC,IAAI,IAAIngK,CAAI,CAAA,CAAA,CAAGA,CAAIgrJ,CAAAA,KAAAA,CAAMiU,WAAW,CAAEj/J,IAAI,CACxC,MAAMogK,QAAWpgK,CAAAA,CAAAA,CAAIgrJ,KAAMiU,CAAAA,WAAW,CACtC,MAAMoB,UAAaxB,CAAAA,QAAAA,CAAW,CAACsB,OAAUtB,CAAAA,QAAO,EAAKuB,QAAAA,CACrD,MAAME,OAAUzB,CAAAA,QAAAA,CAAW,CAACsB,OAAUtB,CAAAA,QAAO,GAAMuB,QAAAA,CACnD,MAAMZ,IAAAA,CAAOnsJ,IAAKY,CAAAA,IAAI,CAACosJ,UAAAA,CAAYC,OAAStV,CAAAA,KAAAA,CAAMuV,mBAAmB,CACrEvV,CAAAA,KAAMoU,CAAAA,uBAAuB,CAACp/J,CAAAA,CAAI,CAAE,CAAA,CAAGw/J,KACzC,CACF,CACAgB,kBAAAA,CAAmBxV,KAAK,CAAE/X,MAAM,CAAE,CAChC,IAAIhxF,UAAAA,CAAa,IACjB,CAAA,GAAI,IAAI,CAACm6G,cAAc,CAACyB,oBAAoB,CAAC7S,KAAAA,CAAAA,CAAQ,CACnD,MAAMgO,SAAYhO,CAAAA,KAAAA,CAAMiO,cAAc,CACtC,MAAMkF,qBAAwBnT,CAAAA,KAAAA,CAAMmT,qBAAqB,CACzD,IAAID,oBAAAA,CAAuB,IAC3B,CAAA,IAAI1B,YACJ,CAAA,IAAI,IAAIlsH,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAO0oH,SAAW1oH,CAAAA,IAAAA,EAAAA,CAAO,CACzC,GAAI6tH,qBAAAA,GAAwB7tH,IAAAA,CAAK,GAAK4rF,iBAAAA,CAAmB,CACvDgiC,oBAAAA,CAAuB,MACzB,CACA1B,YAAe,CAAA,IAAI,CAACJ,cAAc,CAACK,WAAW,CAACzR,KAAO/X,CAAAA,MAAAA,CAAQ3iG,IAChE,EAAA,CACA2R,UAAa,CAAA,IAAIg8G,2BAA4B,CAAA,IAAI,CAACh0H,MAAM,CAAE,IAAI,CAACmyH,cAAc,CAAEpR,KAAAA,CAAO/X,OAAQirB,oBAC9F,CAAA,CAAA,IAAI,CAAC9B,cAAc,CAACM,eAAe,CAACz6G,UAAAA,CAAYu6G,aAAc0B,oBAChE,EAAA,CACA,OAAOj8G,UACT,CAlHAl6C,WAAAA,CAAY26I,QAAQ,CAAE0Z,cAAc,CAAC,CACnC,IAAI,CAAC1Z,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC0Z,cAAc,CAAGA,cACtB,CAAA,IAAI,CAACnyH,MAAM,CAAGy4G,QAAAA,CAASz4G,OACzB,CA+GF,CAEA,MAAMw2H,SAAAA,CAAY,IAAI1tJ,GAAAA,CACtB,MAAM2tJ,aAAAA,CAAgB,IAAIn+I,IAAAA,CAC1B,MAAMo+I,iBAAAA,CAAoB,IAAIp+I,IAC9B,CAAA,MAAMq+I,WAAc,CAAA,IAAI/mJ,YAAa,CAAA,CAAA,CAAA,CACrC,MAAMgnJ,eAAAA,CAAkB,IAAI1+I,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAC1C,MAAM2+I,cAAAA,CAAiB,IAAIv+I,IAC3B,CAAA,SAASw+I,KAAM1sJ,CAAAA,CAAC,CAAE2sJ,KAAK,CACrB,CAAA,OAAOzhK,KAAK0hK,GAAG,CAAC,EAAE5sJ,CAAIA,CAAAA,CAAAA,CAAM,EAAA,EAAM2sJ,KAAQA,CAAAA,KAAI,CAChD,CAAA,CACA,SAASE,YAAAA,CAAaC,UAAU,CAAA,CAC9B,MAAMH,KAAAA,CAAQ,CAACG,UAAa,CAAA,CAAA,GAAM,EAAI,CAAA,CAAA,CACtC,MAAMC,SAAAA,CAAY,CAACD,UAAa,CAAA,CAAA,EAAK,EACrC,CAAA,MAAMx4J,MAAS,CAAA,IAAI3J,KAAMmiK,CAAAA,UAAAA,CAAAA,CACzB,IAAI/sF,GAAAA,CAAM,EACV,IAAI,IAAIp0E,CAAI,CAAA,CAAA,CAAGA,CAAImhK,CAAAA,UAAAA,CAAY,EAAEnhK,CAAAA,CAAE,CACjC2I,MAAM,CAAC3I,CAAAA,CAAE,CAAG+gK,KAAAA,CAAM/gK,CAAIohK,CAAAA,SAAAA,CAAWJ,OACjC5sF,GAAOzrE,EAAAA,MAAM,CAAC3I,CAAAA,EAAE,CAElB,IAAI,IAAIA,EAAI,CAAGA,CAAAA,CAAAA,CAAImhK,UAAY,CAAA,EAAEnhK,CAAE,CAAA,CACjC2I,MAAM,CAAC3I,EAAE,EAAIo0E,IACf,CACA,OAAOzrE,MACT,CACA,MAAM04J,cAAAA,CAsBJ,OAAOC,kBAAAA,CAAmB3L,UAAU,CAAEl+I,IAAI,CAAE64B,IAAI,CAAE,CAChD,MAAM0sH,SAAAA,CAAYpS,WAAYzrJ,CAAAA,MAAM,CAAC,cAAA,CAAgBsY,IAAM64B,CAAAA,IAAAA,CAAAA,CAC3D,MAAMslH,UAAAA,CAAav+B,cAAet1H,CAAAA,GAAG,CAAC4zJ,UAAAA,CAAAA,CACtC,MAAM4L,KAAAA,CAAQ3L,YAAYp+B,GAAO,EAAA,KAAA,CACjC,MAAMgqC,KAAAA,CAAQ5L,UAAYr+B,EAAAA,GAAAA,EAAO,KACjC,CAAA,GAAIgqC,KAAO,CAAA,CACTvE,SAAU9jE,CAAAA,UAAU,CAAG,IAAI7jF,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,EAC5C,CAAO,KAAA,CACL2nJ,SAAU9jE,CAAAA,UAAU,CAAG,IAAI7jF,MAAM,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,EAC5C,CACA2nJ,SAAAA,CAAUld,gBAAgB,CAAG,IAC7Bkd,CAAAA,SAAAA,CAAU/c,kBAAkB,CAAG,KAC/B+c,CAAAA,SAAUrd,CAAAA,gBAAgB,CAAG,CAAC6hB,KAC9B,CAAA,OAAOxE,SACT,CACAyE,0BAA2Bl8B,CAAAA,aAAa,CAAE2N,OAAO,CAAED,MAAM,CAAE,CACzD,MAAMzyF,YAAe+kF,CAAAA,aAAAA,CAActlI,MAAM,CACzC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIwgD,CAAAA,YAAAA,CAAcxgD,IAAI,CACnC,MAAM4kI,YAAeW,CAAAA,aAAa,CAACvlI,CAAAA,CAAE,CACrC,GAAI4kI,YAAagQ,CAAAA,UAAU,CAAE,CAC3B,GAAI,CAAChQ,YAAa2O,CAAAA,IAAI,EAAI3O,YAAaoO,CAAAA,UAAU,CAACC,MAAAA,CAAAA,CAAS,CACzDrO,YAAAA,CAAamQ,gBAAgB,CAAG,KAChC7B,OAAQpyI,CAAAA,IAAI,CAAC8jI,YAAAA,EACf,CACF,CACF,CACF,CACA64B,kBAAkBb,IAAI,CAAE5R,KAAK,CAAE9X,OAAO,CAAED,MAAM,CAAE4pB,OAAO,CAAE,CACvD,IAAI,CAACna,QAAQ,CAAChe,KAAK,EAAEx7H,IAAKo2H,CAAAA,aAAAA,CAAe2T,MACzCC,CAAAA,CAAAA,OAAQjzI,CAAAA,MAAM,CAAG,CAAA,CACjB,GAAI48J,OAAAA,CAAS,CACX,IAAI,CAAC4E,0BAA0B,CAAC5E,OAAAA,CAAS3pB,QAASD,MACpD,EAAA,CAAA,KAAO,CACL,MAAMtO,MAASi4B,CAAAA,IAAAA,CAAK8E,SAAS,CAC7B,MAAMxpJ,GAAAA,CAAMysH,MAAO1kI,CAAAA,MAAM,CACzB,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC1B,MAAM+kI,KAAAA,CAAQJ,MAAM,CAAC3kI,EAAE,CACvB,GAAI+kI,KAAM48B,CAAAA,UAAU,CAACr5J,GAAG,CAAC0iJ,KAAAA,CAAAA,CAAQ,CAC/B,GAAI,CAACyV,SAAUn4J,CAAAA,GAAG,CAACy8H,KAAAA,CAAAA,CAAQ,CACzB07B,SAAAA,CAAUnwJ,GAAG,CAACy0H,KACd,CAAA,CAAA,IAAI,CAAC08B,0BAA0B,CAAC18B,KAAAA,CAAM68B,aAAa,CAAE1uB,OAAAA,CAASD,MAChE,EAAA,CACF,CACF,CACAwtB,SAAU73J,CAAAA,KAAK,GACjB,CACAsqI,OAAAA,CAAQhjI,IAAI,CAAC,IAAI,CAAC2xJ,iBAAiB,CACnC,CAAA,IAAI,CAACnf,QAAQ,CAAChe,KAAK,EAAEx7H,IAAKq2H,CAAAA,cAAAA,CAAgB0T,MAC5C,EAAA,CACA4uB,iBAAkBC,CAAAA,SAAS,CAAEC,SAAS,CAAE,CACtC,MAAMC,IAAOF,CAAAA,SAAAA,CAAU1sB,cAAc,CACrC,MAAM6sB,IAAAA,CAAOF,SAAU3sB,CAAAA,cAAc,CACrC,GAAI4sB,IAAAA,GAASC,IAAM,CAAA,CACjB,OAAOF,SAAAA,CAAUr4B,IAAI,CAAC1/F,EAAE,CAAG83H,SAAAA,CAAUp4B,IAAI,CAAC1/F,EAC5C,CACA,OAAOi4H,IAAOD,CAAAA,IAChB,CACAE,gBAAAA,CAAiBj4H,MAAM,CAAE+gH,KAAK,CAAE,CAC9B,MAAM8R,WAAAA,CAAc,IAAI,CAACpa,QAAQ,CAAChe,KAAK,CAACq4B,wBAAwB,CAChE,MAAMoF,gBAAAA,CAAmBrF,WAAc9R,CAAAA,KAAAA,CAAMoX,MAAM,CAAGpX,MAAMoX,MAAM,EAAIpX,KAAM7wI,CAAAA,KAAK,GAAKs7G,cAAAA,CACtFxrF,MAAOsV,CAAAA,aAAa,CAAC4iH,gBAAAA,CAAmB,IAAI,CAACE,iBAAiB,CAAG,IAAI,CAACC,eAAe,CACrFr4H,CAAAA,MAAAA,CAAOwV,aAAa,CAACurG,KAAMuX,CAAAA,gBAAgB,CAC3Ct4H,CAAAA,MAAAA,CAAOmV,eAAe,CAAC,IAAA,CAAM,IAC/B,EAAA,CACAojH,gBAAiBxX,CAAAA,KAAK,CAAEgS,SAAS,CAAEzO,eAAe,CAAEj+G,IAAI,CAAE,CACxD,MAAM2sH,aAAgBD,CAAAA,SAAAA,CAAU7b,KAAK,CACrC,GAAI6J,KAAAA,CAAM7wI,KAAK,GAAKq7G,qBAAuB,CAAA,CACzC,IAAI,CAACktB,QAAQ,CAAC+f,eAAe,CAACxF,aAAAA,CAAc3yC,WAAW,EAAA,CAAA,CACvD,IAAI,CAACo4C,sBAAsB,CAAC/qH,QAAQ,CAACqzG,KAAM8D,CAAAA,cAAc,EAC3D,CACA4R,aAAAA,CAAc/5I,MAAM,CAACs2I,aAAc3yC,CAAAA,WAAW,EAAI2yC,CAAAA,aAAAA,CAAcjV,WAAW,EAAA,CAAI/rI,IAAKgC,CAAAA,GAAG,CAAE8H,CAAAA,MAAM,EAC/F46I,CAAAA,iBAAAA,CAAkBpjJ,IAAI,CAACy/I,SAAAA,CAAUzb,gBAAgB,CAAEmf,aACnD,CAAA,CAAA,MAAMpV,YAAeiD,CAAAA,eAAAA,CAAgB6K,cAAc,CACnD4D,SAAUv7G,CAAAA,IAAI,CAAG6pG,YACjB0R,CAAAA,SAAAA,CAAU14B,WAAW,CAAGiqB,eAAAA,CAAgB8K,aAAa,CACrDyH,cAAep7I,CAAAA,WAAW,CAAC4lI,YAAAA,CAAaj3I,CAAC,CAAEi3I,YAAavvI,CAAAA,CAAC,CAAEuvI,YAAAA,CAAapvI,CAAC,CAAEovI,aAAa/rI,CAAC,CAAA,CACzFgvI,eAAgBE,CAAAA,YAAY,CAAClxI,IAAI,CAACujJ,cAAAA,CAAgBH,iBAClD,CAAA,CAAA,GAAI3V,KAAM7wI,CAAAA,KAAK,GAAKq7G,qBAAAA,CAAuB,CACzCw1B,KAAAA,CAAM2X,oBAAoB,CAACp6J,GAAG,CAACgmJ,eAAAA,CAAgBE,YAAY,CAACz0I,IAAI,CAAEs2B,IAAO,CAAA,EAAA,EAC3E,CACF,CACAsyH,aAAc5X,CAAAA,KAAK,CAAE,CACnB,MAAMH,SAAYG,CAAAA,KAAAA,CAAM7wI,KAAK,CAC7B,MAAMw7I,UAAAA,CAAa3K,KAAMuK,CAAAA,WAAW,CACpC,IAAIsN,cAAAA,CAAiB,IAAI,CAACC,eAAe,CAACjY,SAAU,CAAA,GAAG8K,UAAW,CAAA,CAClE,GAAI,CAACkN,cAAgB,CAAA,CACnB,MAAME,cAAAA,CAAiB,CAAC,WAAW,EAAElY,SAAAA,CAAU,CAAC,EAAE8K,UAAW,CAAA,CAAC,CAC9DkN,cAAiBniC,CAAAA,UAAAA,CAAW3+H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAA,CAAEyf,QAAQ,CAACq5G,cAAAA,CAAgB,CACpEviC,QAAAA,CAAU,IACVqqB,CAAAA,SAAAA,CAAWA,SACX8K,CAAAA,UAAAA,CAAYA,UACd,CACA,CAAA,CAAA,GAAI,CAAC,IAAI,CAACmN,eAAe,CAACjY,SAAAA,CAAU,CAAE,CACpC,IAAI,CAACiY,eAAe,CAACjY,SAAU,CAAA,CAAG,GAAE,CAEtC,IAAI,CAACiY,eAAe,CAACjY,SAAU,CAAA,CAAC8K,WAAW,CAAGkN,eAChD,CACA,OAAOA,cAAeh9J,CAAAA,KAAK,CAE7Bm9J,cAActF,cAAc,CAAE1S,KAAK,CAAE/X,MAAM,CAAE,CAC3C,MAAMhpG,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMy4G,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC9B,MAAMhe,KAAAA,CAAQge,QAAShe,CAAAA,KAAK,CAC5B,MAAM0P,SAAY,CAAA,CAAA,EAAK1X,aACvB,CAAA,MAAMumC,UAAa,CAAA,IAAI,CAACL,aAAa,CAAC5X,KACtC,CAAA,CAAA,MAAMloB,kBAAqBmQ,CAAAA,MAAAA,CAAOoR,YAAY,CAC9C,MAAM6e,UAAAA,CAAajwB,MAAOx0F,CAAAA,YAAY,CAAC7O,KAAK,CAAG,CAAC,CAAI,CAAA,CAAA,CACpD,MAAMoQ,KAAQ09G,CAAAA,cAAAA,CAAez9J,MAAM,CACnC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAM4kI,YAAe84B,CAAAA,cAAc,CAAC19J,CAAAA,CAAE,CACtC,MAAM0pI,IAAAA,CAAO9E,YAAa8E,CAAAA,IAAI,CAC9B,MAAMgJ,cAAiB9N,CAAAA,YAAAA,CAAa8N,cAAc,CAClD,GAAIA,cAAAA,EAAkBA,cAAe1yF,CAAAA,KAAK,EAAI,CAAA,CAAG,CAC/C,QACF,CACA4kF,YAAaqP,CAAAA,cAAc,CAAChqG,MAAAA,CAAAA,CAC5B,MAAM44F,QAAAA,CAAW+B,aAAa/B,QAAQ,CACtC6f,QAASygB,CAAAA,gBAAgB,CAACl5H,MAAAA,CAAQ44F,QAClC6f,CAAAA,CAAAA,QAAAA,CAAS0gB,WAAW,CAACn5H,MAAAA,CAAQ26F,YAC7B,CAAA,CAAA,GAAI/B,QAASlwF,CAAAA,KAAK,CAAE,CAClBkwF,QAASsqB,CAAAA,cAAc,CAACljH,MAAAA,CAAQy6F,KAChC7B,CAAAA,CAAAA,QAASlwF,CAAAA,KAAK,CAAG,MACnB,CACA+vG,QAAS2gB,CAAAA,aAAa,CAAC,IAAA,CAAMH,UAAYt+B,CAAAA,YAAAA,CAAAA,CACzC/B,SAASyR,aAAa,CAACrqG,MACvB26F,CAAAA,CAAAA,YAAAA,CAAa0P,aAAa,CAACrqG,MAAQmqG,CAAAA,SAAAA,CAAAA,CACnC,MAAM3D,cAAiB7L,CAAAA,YAAAA,CAAa8L,iBAAiB,CAACuyB,UAAY,CAAA,CAAA,CAAGv+B,KAAO5B,CAAAA,kBAAAA,CAAoB,IAAI,CAAClD,iBAAiB,CAAE,IAAI,CAACC,mBAAmB,CAAA,CAChJ,MAAMyjC,YAAe7yB,CAAAA,cAAAA,CAAe7yF,MAAM,CAC1C,GAAI0lH,YAAAA,CAAapsG,MAAM,CAAE,SACzB0tE,YAAawQ,CAAAA,cAAc,CAAGkuB,YAAAA,CAAat5H,EAAE,CAC7CC,OAAOqnC,SAAS,CAACgyF,YACjB5gB,CAAAA,CAAAA,QAAAA,CAAS6gB,gBAAgB,CAACt5H,MAAQy/F,CAAAA,IAAAA,CAAAA,CAClCgZ,QAAS8gB,CAAAA,WAAW,CAACv5H,MAAAA,CAAQ26F,YAAaqN,CAAAA,aAAa,CACvD,CAAA,GAAIS,eAAgB,CAClBzoG,MAAAA,CAAO2V,eAAe,CAAC8yF,cAAe7yF,CAAAA,YAAY,EACpD,CACA6iG,SAAS+gB,uBAAuB,CAAC7+B,YACjC8d,CAAAA,CAAAA,QAAAA,CAASghB,uBAAuB,CAACjzB,cACjC,CAAA,CAAA,MAAMkzB,MAAQ/+B,YAAagJ,CAAAA,WAAW,CACtC,MAAMsH,YAAetQ,CAAAA,YAAAA,CAAaiP,eAAe,CAACZ,MAClDhpG,CAAAA,CAAAA,MAAAA,CAAOoW,IAAI,CAACqpF,IAAKppF,CAAAA,SAAS,CAACqjH,KAAAA,CAAM,CAAEj6B,IAAKnpF,CAAAA,WAAW,CAACojH,KAAAA,CAAM,CAAEjxB,cAAAA,EAAgB1yF,KAAOk1F,CAAAA,YAAAA,CACnFwN,CAAAA,QAASkhB,CAAAA,gBAAgB,EACzB,CAAA,GAAIlxB,cAAgB,CAAA,CAClBgQ,QAASmhB,CAAAA,mBAAmB,GAC9B,CACF,CACF,CACAhG,oBAAAA,CAAqB7S,KAAK,CAAE,CAC1B,MAAM8Y,KAAQ9Y,CAAAA,KAAAA,CAAMn4I,OAAO,EAAIm4I,KAAMmD,CAAAA,WAAW,EAAInD,KAAAA,CAAM+Y,gBAAgB,GAAK7nC,iBAAAA,EAAqB8uB,KAAMjW,CAAAA,gBAAgB,CAC1H,GAAIiW,KAAM+Y,CAAAA,gBAAgB,GAAK5nC,sBAAwB,CAAA,CACrD6uB,KAAM+Y,CAAAA,gBAAgB,CAAG7nC,kBAC3B,CACA,GAAI4nC,MAAO,CACT,IAAI,CAACphB,QAAQ,CAACshB,iBAAiB,EAAIhZ,KAAAA,CAAMiO,eAC3C,CACA,OAAO6K,KACT,CACAG,kBAAmBjZ,CAAAA,KAAK,CAAE/X,MAAM,CAAE3iG,IAAI,CAAE,CACtC,OAAO06G,KAAMwD,CAAAA,aAAa,CAACxD,KAAAA,CAAM7wI,KAAK,GAAKq7G,qBAAwByd,CAAAA,MAAAA,CAAS,IAAM3iG,CAAAA,IAAAA,CACpF,CACAosH,eAAgBz6G,CAAAA,UAAU,CAAEu6G,YAAY,CAAE0H,iBAAiB,CAAE,CAC3D,MAAMjzG,EAAAA,CAAKurG,YAAa/9G,CAAAA,YAAY,CACpCwD,UAAAA,CAAW7B,IAAI,CAAC6Q,GAChBhP,CAAAA,UAAAA,CAAWyR,eAAe,CAACC,eAAe,CAAG,CAC7C1R,CAAAA,WAAWyR,eAAe,CAACG,UAAU,CAAGqwG,iBACxC,CAAA,GAAIjzG,EAAG3K,CAAAA,WAAW,CAAE,CAClBrE,UAAAA,CAAWyR,eAAe,CAACK,UAAU,CAAG,KAC1C,CAAA,KAAO,CACL9R,UAAAA,CAAWiR,QAAQ,CAACE,UAAU,CAACr0D,IAAI,CAACy9J,aAAatjE,UAAU,CAC3Dj3C,CAAAA,UAAAA,CAAWiR,QAAQ,CAACtqD,KAAK,CAAGs7J,iBAC5BjiH,CAAAA,UAAWyR,CAAAA,eAAe,CAACK,UAAU,CAAG,MAC1C,CACA9R,UAAWoqD,CAAAA,gBAAgB,CAAG,MAChC,CACAowD,WAAAA,CAAYzR,KAAK,CAAE/X,MAAM,CAAE3iG,IAAI,CAAE,CAC/B,MAAM74B,IAAOuzI,CAAAA,KAAAA,CAAM7wI,KAAK,CACxB,MAAMo0I,eAAkB,CAAA,IAAI,CAAC0V,kBAAkB,CAACjZ,KAAAA,CAAO/X,OAAQ3iG,IAC/D,CAAA,CAAA,MAAM0sH,SAAYzO,CAAAA,eAAAA,CAAgBiO,YAAY,CAC9C,MAAM2H,iBAAAA,CAAoB1sJ,OAAS+9G,qBAAwB,CAAA,CAAA,CAAIllF,IAC/D0sH,CAAAA,SAAUv+G,CAAAA,YAAY,CAAGusG,KAAAA,CAAM4O,UAAU,CAACzE,aAAa,CAACgP,iBAAkB,CAAA,CAC1E,OAAOnH,SACT,CACAX,UAAWrR,CAAAA,KAAK,CAAE/X,MAAM,CAAE3iG,IAAI,CAAE1nC,KAAK,CAAEg7C,gBAAAA,CAAmB,IAAI,CAAE,CAC9D,MAAM3Z,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMskH,eAAAA,CAAkB,IAAI,CAAC0V,kBAAkB,CAACjZ,KAAO/X,CAAAA,MAAAA,CAAQ3iG,IAC/D,CAAA,CAAA,MAAM0sH,SAAYzO,CAAAA,eAAAA,CAAgBiO,YAAY,CAC9C,IAAI,CAACgG,gBAAgB,CAACxX,KAAAA,CAAOgS,SAAWzO,CAAAA,eAAAA,CAAiBj+G,IACzD,CAAA,CAAA,MAAM2gB,GAAK+rG,SAAUv+G,CAAAA,YAAY,CACjC,MAAMikG,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC9BA,QAAS0hB,CAAAA,iBAAiB,CAACpH,SAAAA,CAAW/rG,EACtC,CAAA,CAAA,GAAIhnB,MAAO4Z,CAAAA,sBAAsB,CAAE,CACjC6+F,QAAS2hB,CAAAA,uBAAuB,CAAC9V,eAAAA,CAAgB+V,cAAc,CAAE,IAAI,CAAC1kC,iBAAiB,CAAE,IAAI,CAACC,mBAAmB,CAAE,IAAA,EACrH,CACA,GAAIj8E,gBAAAA,CAAkB,CACpB8+F,QAAAA,CAAS6hB,aAAa,CAACvH,SAAW/rG,CAAAA,EAAAA,CAAAA,CAClC,GAAIroD,KAAO,CAAA,CACT85I,QAAS95I,CAAAA,KAAK,CAACo0J,SAAAA,EACjB,CACF,CAAA,KAAO,CACLta,QAAAA,CAAS8hB,SAAS,CAACxH,SAAW/rG,CAAAA,EAAAA,CAAI,IAAM,CAAA,KAAA,EAC1C,CACA,IAAI,CAACixG,gBAAgB,CAACj4H,MAAQ+gH,CAAAA,KAAAA,CAAAA,CAC9B,IAAI,CAACgY,aAAa,CAACzU,eAAAA,CAAgBmP,cAAc,CAAE1S,KAAOgS,CAAAA,SAAAA,EAC5D,CACAhxD,MAAAA,CAAOg/C,KAAK,CAAE/X,MAAM,CAAErvF,gBAAAA,CAAmB,IAAI,CAAE,CAC7C,GAAI,IAAI,CAACi6G,oBAAoB,CAAC7S,KAAQ,CAAA,CAAA,CACpC,MAAMgO,SAAAA,CAAYhO,MAAMiO,cAAc,CACtC,IAAI,IAAI3oH,IAAO,CAAA,CAAA,CAAGA,IAAO0oH,CAAAA,SAAAA,CAAW1oH,IAAO,EAAA,CAAA,CACzC,IAAI,CAACmsH,WAAW,CAACzR,KAAO/X,CAAAA,MAAAA,CAAQ3iG,MAChC,IAAI,CAAC+rH,UAAU,CAACrR,KAAO/X,CAAAA,MAAAA,CAAQ3iG,IAAM,CAAA,IAAA,CAAMsT,gBAC7C,EAAA,CACA,IAAI,CAAC24G,SAAS,CAACvR,KAAO/X,CAAAA,MAAAA,EACxB,CACF,CACAspB,SAAAA,CAAUvR,KAAK,CAAE/X,MAAM,CAAE,CACvB,GAAI+X,MAAMyZ,MAAM,EAAIzZ,KAAM0Z,CAAAA,YAAY,CAAG,CAAA,CAAG,CAC1C,MAAM5H,YAAc,IAAI,CAACpa,QAAQ,CAAChe,KAAK,CAACq4B,wBAAwB,CAChE,GAAI,CAACD,WAAe9R,EAAAA,KAAAA,CAAM7wI,KAAK,GAAKq7G,qBAAuB,CAAA,CACzD,IAAI,CAACmvC,YAAY,CAAC3Z,KAAAA,CAAO/X,MAC3B,EAAA,CACF,CACF,CACA2xB,gBAAiBC,CAAAA,QAAQ,CAAEvH,UAAU,CAAE,CACrC,MAAMrrH,KAAAA,CAAQ,IAAI,CAAC6yH,aAAa,CAChC,IAAIC,UAAa9yH,CAAAA,KAAK,CAAC4yH,QAAAA,CAAS,CAACvH,UAAAA,CAAW,CAC5C,GAAI,CAACyH,UAAAA,CAAY,CACf,IAAI,CAACC,cAAc,CAAC1H,UAAW,CAAA,CAAG4D,YAAa5D,CAAAA,UAAAA,CAAAA,CAC/C,MAAMv2F,OAAAA,CAAU,IAAI3+D,GACpB2+D,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,WAAa+0J,CAAAA,UAAAA,CAAAA,CACzB,GAAIuH,QAAAA,GAAa,EAAG99F,OAAQx+D,CAAAA,GAAG,CAAC,OAAA,CAAS,EACzCw8J,CAAAA,CAAAA,UAAAA,CAAa/iC,WAAY1+C,CAAAA,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CACjDk4F,UAAY,CAAA,CAAC,OAAO,EAAE0iC,QAAAA,CAAS,EAAEvH,UAAAA,CAAW,CAAC,CAC7ChyG,UAAY,CAAA,CACVigB,eAAiBztC,CAAAA,iBACnB,CACAukG,CAAAA,WAAAA,CAAa,kBACbE,CAAAA,aAAAA,CAAe,WACf/0D,CAAAA,eAAAA,CAAiBzG,OACnB,CACA90B,CAAAA,CAAAA,KAAK,CAAC4yH,QAAS,CAAA,CAACvH,UAAW,CAAA,CAAGyH,WAChC,CACA,OAAOA,UACT,CACAJ,YAAAA,CAAa3Z,KAAK,CAAE/X,MAAM,CAAE,CAC1B,MAAMhpG,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1BA,OAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CACvC,CAAA,MAAMo4G,eAAkBvD,CAAAA,KAAAA,CAAMwD,aAAa,CAACxD,KAAAA,CAAM7wI,KAAK,GAAKq7G,qBAAwByd,CAAAA,MAAAA,CAAS,IAAM,CAAA,CAAA,CAAA,CACnG,MAAM+pB,SAAAA,CAAYzO,eAAgBiO,CAAAA,YAAY,CAC9C,MAAMyI,aAAgBjI,CAAAA,SAAAA,CAAUv+G,YAAY,CAC5C,MAAMymH,aAAgB,CAAA,IAAI,CAACxiB,QAAQ,CAACyiB,cAAc,CAACpjK,GAAG,CAACkoC,MAAQ+gH,CAAAA,KAAAA,CAAAA,CAC/D,MAAMoa,MAAAA,CAASF,aAAc/P,CAAAA,aAAa,CAAC,CAAE,CAAA,CAC7C,MAAM0P,QAAAA,CAAW7Z,KAAMqa,CAAAA,WAAW,CAClC,MAAM/H,UAAatS,CAAAA,KAAAA,CAAM0Z,YAAY,CACrC,MAAMK,UAAAA,CAAa,IAAI,CAACH,gBAAgB,CAACC,QAAAA,CAAUvH,UACnDuD,CAAAA,CAAAA,eAAgB3kJ,CAAAA,CAAC,CAAG8uI,KAAAA,CAAMsK,iBAAiB,CAAG,CAC9CuL,CAAAA,eAAAA,CAAgBthJ,CAAC,CAAGshJ,eAAgB3kJ,CAAAA,CAAC,CACrC,IAAI,CAACopJ,QAAQ,CAAC3tH,QAAQ,CAACstH,aAAcp/G,CAAAA,WAAW,CAChD+6G,CAAAA,WAAW,CAAC,CAAE,CAAA,CAAG,CAAI5V,CAAAA,KAAAA,CAAMsK,iBAAiB,CAC5CsL,WAAW,CAAC,CAAE,CAAA,CAAG,CACjB,CAAA,IAAI,CAAC2E,aAAa,CAAC5tH,QAAQ,CAACipH,WAAAA,CAAAA,CAC5B,GAAIiE,QAAAA,GAAa7sC,cAAe,IAAI,CAACwtC,QAAQ,CAAC7tH,QAAQ,CAAC,IAAI,CAACqtH,cAAc,CAAC1H,UAAW,CAAA,CAAA,CACtF94B,kBAAmBv6F,CAAAA,MAAAA,CAAQm7H,MAAQL,CAAAA,UAAAA,CAAY,KAAMlE,eACrD,CAAA,CAAA,IAAI,CAACyE,QAAQ,CAAC3tH,QAAQ,CAACytH,MAAAA,CAAOv/G,WAAW,CACzC+6G,CAAAA,WAAW,CAAC,CAAE,CAAA,CAAGA,WAAW,CAAC,EAAE,CAC/BA,WAAW,CAAC,CAAE,CAAA,CAAG,CACjB,CAAA,IAAI,CAAC2E,aAAa,CAAC5tH,QAAQ,CAACipH,WAAAA,CAAAA,CAC5Bp8B,kBAAmBv6F,CAAAA,MAAAA,CAAQg7H,cAAeF,UAAY,CAAA,IAAA,CAAMlE,eAC5D,CAAA,CAAA,IAAI,CAACne,QAAQ,CAACyiB,cAAc,CAAC70J,GAAG,CAAC06I,KAAAA,CAAOka,aAC1C,EAAA,CACAO,uBAA0B,EAAA,CACxB,GAAI,IAAI,CAACx7H,MAAM,CAAC4Z,sBAAsB,EAAI,CAAC,IAAI,CAAC+7E,iBAAiB,CAAE,CACjE,IAAI,CAACA,iBAAiB,CAAG,IAAI5qE,mBAAoB,CAAA,IAAI,CAAC/qB,MAAM,CAAE,CAC5D,IAAIwqB,aAAAA,CAAc,wBAAyBhxB,gBAC5C,CAAA,CAAA,CACD,CAAA,IAAI,CAACo8F,mBAAmB,CAAG,IAAI32F,gBAAgB,IAAI,CAACe,MAAM,CAAE,CAC1D,IAAI1B,uBAAwBf,CAAAA,gCAAAA,CAAkCnB,kBAAqBC,CAAAA,oBAAAA,CAAAA,CACpF,EACH,CACF,CACA8kE,WAAAA,EAAc,CACZ,IAAI,CAACq6D,uBAAuB,GAC9B,CA9SA19J,WAAAA,CAAY26I,QAAQ,CAAE0a,iBAAiB,CAAC,CACtC,IAAI,CAAC0F,eAAe,CAAG,EAAE,CACzB,IAAI,CAAC74H,MAAM,CAAGy4G,QAAAA,CAASz4G,MACvB,CAAA,IAAI,CAACy4G,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC0a,iBAAiB,CAAGA,iBACzB,CAAA,MAAM71J,KAAQ,CAAA,IAAI,CAAC0iC,MAAM,CAAC1iC,KAAK,CAC/B,IAAI,CAAC+9J,QAAQ,CAAG/9J,KAAAA,CAAM8iC,OAAO,CAAC,SAC9B,CAAA,IAAI,CAACk7H,aAAa,CAAGh+J,KAAAA,CAAM8iC,OAAO,CAAC,aACnC,CAAA,CAAA,IAAI,CAACm7H,QAAQ,CAAGj+J,KAAM8iC,CAAAA,OAAO,CAAC,WAC9B,CAAA,CAAA,IAAI,CAACy6H,aAAa,CAAG,CACnB,GACA,EAAC,CACF,CACD,IAAI,CAACE,cAAc,CAAG,EACtB,CAAA,IAAI,CAACtC,sBAAsB,CAAGn7J,KAAM8iC,CAAAA,OAAO,CAAC,cAAA,CAC5C,CAAA,IAAI,CAACu1F,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACyiC,eAAe,CAAG,IAAIvtH,UAC3B,CAAA,IAAI,CAACstH,iBAAiB,CAAG,IAAIttH,UAC7B,CAAA,IAAI,CAACstH,iBAAiB,CAAC9sH,aAAa,CAAC,KAAA,CAAO,KAAO,CAAA,KAAA,CAAO,KAC5D,EAAA,CA2RF,CAEA,MAAMmwH,gBAAmB,CAAA,EAAE,CACrBC,MAAAA,sBAAAA,CAOJx8H,OAAU,EAAA,CACR,GAAI,IAAI,CAACy8H,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACz8H,OAAO,EACnB,CAAA,IAAI,CAACy8H,MAAM,CAAG,KAChB,CACA,IAAI,CAACC,UAAU,CAACl5J,OAAO,CAAC,OAACm5J,EAAAA,CACvBA,OAAQ38H,CAAAA,OAAO,GACjB,CACA,CAAA,CAAA,IAAI,CAAC08H,UAAU,CAAC5lK,MAAM,CAAG,EAC3B,CACA,IAAI+/C,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC6lH,UAAU,CAAC5lK,MACzB,CACA,IAAI8lK,KAAQ,EAAA,CACV,GAAI,CAAC,IAAI,CAACH,MAAM,CAAE,CAChB,MAAMG,KAAQ,CAAA,IAAI7V,cAAc,IAAI,CAACjmH,MAAM,CAC3C87H,CAAAA,KAAAA,CAAMziK,IAAI,CAAG,cACbyiK,CAAAA,KAAAA,CAAM3yH,MAAM,CAAC,EAAE,CACf,CAAA,IAAI,CAACwyH,MAAM,CAAGG,MAChB,CACA,OAAO,IAAI,CAACH,MAAM,CAEpBz/C,MAAO+3B,CAAAA,YAAY,CAAE,CACnBwnB,gBAAiB5kK,CAAAA,IAAI,IAAI,IAAI,CAAC+kK,UAAU,CACxC,CAAA,IAAI,CAACA,UAAU,CAAC5lK,MAAM,CAAG,CACzB,CAAA,IAAI,CAAC+lK,SAAS,CAACp9J,KAAK,GACpB,MAAMq9J,SAAAA,CAAY/nB,YAAaj+I,CAAAA,MAAM,CACrC,IAAI,IAAI0yB,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIszI,SAAWtzI,CAAAA,CAAAA,EAAAA,CAAI,CAChC,MAAMsvB,UAAai8F,CAAAA,YAAY,CAACvrH,CAAE,CAAA,CAClC,MAAMuzI,aAAAA,CAAgBjkH,UAAWikH,CAAAA,aAAa,CAC9C,GAAIA,aAAe,CAAA,CACjB,MAAMlmH,KAAAA,CAAQkmH,aAAcjmK,CAAAA,MAAM,CAClC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAMmmK,EAAAA,CAAKD,aAAa,CAAClmK,CAAE,CAC3BmmK,CAAAA,EAAAA,CAAGC,aAAa,CAAG,KACnB,MAAMrhC,KAAAA,CAAQohC,EAAGphC,CAAAA,KAAK,CACtB,GAAIA,KAAMshC,CAAAA,kBAAkB,EAAIthC,KAAMQ,CAAAA,aAAa,CAACtlI,MAAM,CAAE,CAC1D,MAAMk5C,IAAAA,CAAO4rF,MAAMuhC,cAAc,EAAA,CACjC,MAAMC,oBAAAA,CAAuB,IAAI,CAACP,SAAS,CAACjkK,GAAG,CAACo3C,IAChD,CAAA,CAAA,IAAI+4G,QAAWqU,CAAAA,oBAAAA,EAAsBH,aACrC,CAAA,GAAI,CAAClU,QAAU,CAAA,CACbA,QAAWwT,CAAAA,gBAAAA,CAAiBpkK,GAAG,EAAA,EAAM,IAAI4uJ,aAAAA,CAAc,IAAI,CAACjmH,MAAM,CAClE,CAAA,IAAI,CAAC47H,UAAU,CAAC/kK,IAAI,CAACoxJ,QACrB,CAAA,CAAA,IAAI,CAAC8T,SAAS,CAACz9J,GAAG,CAAC4wC,IAAAA,CAAMgtH,EAC3B,EAAA,CACAA,EAAGC,CAAAA,aAAa,CAAGlU,SACrB,CACA,GAAI,CAACiU,EAAGC,CAAAA,aAAa,CAAE,CACrBD,EAAGC,CAAAA,aAAa,CAAG,IAAI,CAACL,MAC1B,CACF,CACF,CACF,CACAL,gBAAiB/4J,CAAAA,OAAO,CAAC,IAAC3C,EAAOA,IAAKm/B,CAAAA,OAAO,EAC7Cu8H,CAAAA,CAAAA,gBAAiBzlK,CAAAA,MAAM,CAAG,EAC5B,CACAmzC,MAAAA,CAAO8qG,YAAY,CAAEsoB,QAAQ,CAAE,CAC7B,IAAI,CAACrgD,MAAM,CAAC+3B,YACZ,CAAA,CAAA,IAAI,CAAC8nB,SAAS,CAACr5J,OAAO,CAAE85J,YACtB,EAAA,CAAA,MAAM1hC,KAAQ0hC,CAAAA,YAAAA,CAAa1hC,KAAK,CAChC,MAAM+gC,OAAUW,CAAAA,YAAAA,CAAaL,aAAa,CAC1CN,OAAQ1yH,CAAAA,MAAM,CAAC2xF,KAAAA,CAAM2hC,kBAAkB,CAAEF,QAC3C,EAAA,CAAA,EACF,CArEAz+J,WAAAA,CAAY6hC,cAAc,CAAC,CACzB,IAAI,CAACg8H,MAAM,CAAG,IACd,CAAA,IAAI,CAACC,UAAU,CAAG,EAAE,CACpB,IAAI,CAACG,SAAS,CAAG,IAAI59J,GACrB,CAAA,IAAI,CAAC6hC,MAAM,CAAGL,eAChB,CAiEF,CAEA,MAAM+8H,WAAc,CAAA,IAAIxkJ,IACxB,CAAA,MAAMykJ,qBAAuB,EAC7B,CAAMC,MAAAA,wBAAAA,SAAiCj8D,UASrCzhE,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC29H,eAAe,EAAE39H,OAAAA,EACtB,CAAA,IAAI,CAAC29H,eAAe,CAAG,IACvB,CAAA,IAAI,CAACC,iBAAiB,EAAE59H,OACxB,EAAA,CAAA,IAAI,CAAC49H,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,kBAAkB,EAAE//J,GAAAA,EACzB,CAAA,IAAI,CAAC+/J,kBAAkB,CAAG,KAC5B,CACA,OAAO7nK,MAAAA,CAAOs/C,YAAY,CAAE06G,gBAAgB,CAAE,CAC5C,MAAMl3G,WAAa,IAAI4kH,wBAAAA,CAAyBpoH,YAAaxU,CAAAA,MAAM,CAAEkvH,gBAAAA,CAAAA,CACrEl3G,UAAW7B,CAAAA,IAAI,CAAC3B,YAAAA,CAChBwD,CAAAA,UAAAA,CAAWiR,QAAQ,CAACtqD,KAAK,CAAG,KAC5Bq5C,CAAAA,UAAAA,CAAWyR,eAAe,CAACG,UAAU,CAAG,KACxC,CAAA,OAAO5R,UACT,CACAglH,gBAAmB,EAAA,CACjB,IAAI,CAACC,UAAU,CAAG,KACpB,CACA9zH,MAAAA,CAAOo/G,MAAM,CAAE,CACb,MAAM2U,cAAiB,CAAA,IAAI,CAACC,eAAe,CAC3C,IAAI,CAACzrE,MAAM,CAAC62D,MAAAA,CAAQ2U,eACpB,CAAA,IAAI,CAACj7D,cAAc,CAAGi7D,cAAAA,CAAelnK,MAAM,CAAG,EAChD,CACA07F,MAAAA,CAAO62D,MAAM,CAAE2U,cAAc,CAAE,CAC7B,IAAI,IAAInnK,CAAI,CAAA,CAAA,CAAGA,CAAIwyJ,CAAAA,MAAAA,CAAOvyJ,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAMgrJ,KAAAA,CAAQwH,MAAM,CAACxyJ,CAAE,CAAA,CACvB,GAAIgrJ,KAAAA,CAAM7wI,KAAK,GAAKq7G,qBAAAA,CAAuB,CACzC,QACF,CACA,GAAI,CAACw1B,KAAAA,CAAM4C,sBAAsB,CAAE,CACjC,QACF,CACA,GAAI,CAAC5C,KAAMwO,CAAAA,gBAAgB,EAAI,CAAC,IAAI,CAAC0N,UAAU,CAAE,CAC/C,QACF,CACA,GAAIlc,KAAAA,CAAMn4I,OAAO,EAAIm4I,KAAM4N,CAAAA,MAAM,EAAI5N,KAAAA,CAAMjW,gBAAgB,CAAE,CAC3DoyB,cAAermK,CAAAA,IAAI,CAACkqJ,KAAAA,EACtB,CACF,CACA,IAAI,CAACkc,UAAU,CAAG,MACpB,CACAG,uBAAAA,EAA0B,CACxB,GAAI,CAACT,oBAAqB3mK,CAAAA,MAAM,CAAE,CAChC,IAAI,IAAIqwC,IAAO,CAAA,CAAA,CAAGA,IAAO,CAAA,CAAA,CAAGA,IAAO,EAAA,CAAA,CACjC,MAAM2iG,MAAAA,CAAS2X,WAAYzrJ,CAAAA,MAAM,CAAC,IAAMs2H,CAAAA,cAAAA,CAAgBnlF,IACxD,CAAA,CAAA,MAAMg3H,OAAUr0B,CAAAA,MAAAA,CAAOsO,gBAAgB,CACvC,MAAMgmB,OAAAA,CAAUt0B,MAAO7C,CAAAA,IAAI,CAAC2X,iBAAiB,EAAGzyI,CAAAA,KAAK,GAAGyQ,MAAM,EAC9D6gJ,CAAAA,oBAAoB,CAACt2H,IAAAA,CAAK,CAAG,IAAI/tB,IAAOhF,EAAAA,CAAAA,IAAI,CAAC+pJ,OAAAA,CAASC,OAASxhJ,CAAAA,CAAAA,MAAM,GACvE,CACF,CACF,CACA,IAAIyhJ,cAAiB,EAAA,CACnB,GAAI,CAAC,IAAI,CAACV,eAAe,CAAE,CACzB,MAAMlpH,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CACnDk4F,UAAAA,CAAY,kBACZ72E,CAAAA,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,WAAa,CAAA,cAAA,CACbE,aAAe,CAAA,gBACjB,CACA,CAAA,CAAA,IAAI,CAACukC,eAAe,CAAG,IAAI3iC,UAAWvmF,CAAAA,MAAAA,EACxC,CACA,OAAO,IAAI,CAACkpH,eACd,CACA,IAAIW,gBAAmB,EAAA,CACrB,GAAI,CAAC,IAAI,CAACV,iBAAiB,CAAE,CAC3B,MAAMnpH,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CACnDk4F,WAAY,oBACZ72E,CAAAA,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,WAAa,CAAA,cAAA,CACbE,cAAe,kBACjB,CAAA,CACA,CAAA,IAAI,CAACwkC,iBAAiB,CAAG,IAAI5iC,WAAWvmF,MAC1C,EAAA,CACA,OAAO,IAAI,CAACmpH,iBAAiB,CAE/Bx7D,OAAU,EAAA,CACR,MAAMthE,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1BA,OAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CACvClM,CAAAA,MAAAA,CAAOyV,WAAW,CAAC7oB,aACnBoT,CAAAA,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,CACvClN,CAAAA,MAAAA,CAAOmV,eAAe,EACtB,CAAA,MAAMsoH,iBAAoB,CAAA,IAAI,CAACjpH,YAAY,CAACoH,WAAW,CAAClgC,KAAK,CAC7D,MAAMwzI,gBAAmB,CAAA,IAAI,CAACwO,iBAAiB,CAC/C,MAAMR,cAAAA,CAAiB,IAAI,CAACC,eAAe,CAC3C,IAAI,IAAIpnK,EAAI,CAAGA,CAAAA,CAAAA,CAAImnK,cAAelnK,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,MAAMgrJ,MAAQmc,cAAc,CAACnnK,CAAE,CAAA,CAC/B,MAAMg5J,SAAAA,CAAYhO,KAAMiO,CAAAA,cAAc,CACtC,MAAM50B,IAAO20B,CAAAA,SAAAA,CAAY,CAAI,CAAA,IAAI,CAACyO,gBAAgB,CAAG,IAAI,CAACD,cAAc,CACxE,GAAIxO,SAAAA,CAAY,CAAG,CAAA,CACjB,IAAI,CAACqO,uBAAuB,GAC9B,CACA,IAAI,CAACO,aAAa,CAACjwH,QAAQ,CAACqzG,KAAAA,CAAM4N,MAAM,CAAA,CACxC,IAAI,IAAItoH,IAAO,CAAA,CAAA,CAAGA,IAAO0oH,CAAAA,SAAAA,CAAW1oH,IAAO,EAAA,CAAA,CACzCq2H,WAAY5nK,CAAAA,IAAI,CAACisJ,KAAAA,CAAMO,aAAa,CACpC,CAAA,GAAIyN,SAAY,CAAA,CAAA,CAAG,CACjB,MAAME,SAAYyN,CAAAA,WAAAA,CAAYzqJ,CAAC,CAAG,CAAA,CAClC,MAAMxO,MAAAA,CAASyrJ,gBAAgB,CAAC7oH,IAAK,CACrCq2H,CAAAA,WAAYtyJ,CAAAA,CAAC,EAAI6kJ,SAAAA,CAAYxrJ,MAAO2G,CAAAA,CAAC,CACrCsyJ,WAAY5qJ,CAAAA,CAAC,EAAIm9I,SAAAA,CAAYxrJ,MAAOqO,CAAAA,CAAC,CACrC4qJ,YAAYzqJ,CAAC,CAAGg9I,SAChByN,CAAAA,WAAYpnJ,CAAAA,CAAC,CAAG25I,SAAAA,CAChB,IAAI,CAAC2O,aAAa,CAAClwH,QAAQ,CAACivH,oBAAoB,CAACt2H,KAAK,CAACt2B,IAAI,EAC7D,CACA2sJ,WAAY7wJ,CAAAA,SAAS,CAAC4xJ,iBAAAA,CAAAA,CACtBrjC,IAAKr4B,CAAAA,MAAM,CAAC26D,WAAAA,EACd,CACF,CACAQ,cAAelnK,CAAAA,MAAM,CAAG,EAC1B,CAxHA8H,WAAYkiC,CAAAA,MAAM,CAAEkvH,gBAAgB,CAAC,CACnC,KAAK,CAAClvH,MAAAA,CAAAA,CAAS,IAAI,CAAC68H,eAAe,CAAG,IAAM,CAAA,IAAI,CAACC,iBAAiB,CAAG,IAAM,CAAA,IAAI,CAACK,eAAe,CAAG,EAAE,CAAE,IAAI,CAACF,UAAU,CAAG,KAAA,CAAO,IAAI,CAACF,kBAAkB,CAAG,IACzJ,CAAA,IAAI,CAACW,iBAAiB,CAAGxO,gBACzB,CAAA,IAAI,CAAC9sD,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACu7D,aAAa,CAAG39H,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,aAAA,CAC1C,CAAA,IAAI,CAACw9H,aAAa,CAAG59H,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,aAAA,CAC1C,CAAA,IAAI,CAAC28H,kBAAkB,CAAG/8H,MAAAA,CAAO5iC,EAAE,CAAC,gBAAA,CAAkB,IAAI,CAAC4/J,gBAAgB,CAAE,IAAI,EACnF,CAkHF,CAEA,MAAMa,8BAAuCl9D,SAAAA,UAAAA,CAO3Cx3D,MAAOklH,CAAAA,WAAW,CAAE,CAClB,MAAMsF,YAAAA,CAAe,IAAI,CAACmK,mBAAmB,CAACnK,YAAY,CAC1D,MAAMpB,YAAe,CAAA,IAAI,CAACuL,mBAAmB,CAACpK,aAAa,CAACC,YAAAA,CAActF,WAC1E,CAAA,CAAA,MAAMt4G,KAAQ49G,CAAAA,YAAAA,CAAa39J,MAC3B,CAAA,IAAI,CAAC4S,OAAO,CAAGmtC,KAAQ,CAAA,CAAA,CACvB,GAAIA,KAAAA,CAAO,CACT,IAAI,CAACo8G,cAAc,CAACM,eAAe,CAAC,IAAI,CAAEF,YAAAA,CAAc,OAC1D,CACF,CACAjxD,OAAU,EAAA,CACR,MAAMqyD,YAAAA,CAAe,IAAI,CAACmK,mBAAmB,CAACnK,YAAY,CAC1D,MAAM59G,KAAQ49G,CAAAA,YAAAA,CAAa39J,MAAM,CACjC,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAMgrJ,KAAQ4S,CAAAA,YAAY,CAAC59J,CAAAA,CAAE,CAC7B,IAAI,IAAIswC,IAAAA,CAAO,EAAGA,IAAO06G,CAAAA,KAAAA,CAAMiO,cAAc,CAAE3oH,IAAO,EAAA,CAAA,CACpD,IAAI,CAAC8rH,cAAc,CAACC,UAAU,CAACrR,KAAAA,CAAO,IAAM16G,CAAAA,IAAAA,CAAM,IACpD,EAAA,CACF,CACAstH,YAAa39J,CAAAA,MAAM,CAAG,EACxB,CAzBA8H,WAAAA,CAAYkiC,MAAM,CAAEmyH,cAAc,CAAE2L,mBAAmB,CAAC,CACtD,KAAK,CAAC99H,MAAAA,CACN,CAAA,IAAI,CAACoiE,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAAC+vD,cAAc,CAAGA,cACtB,CAAA,IAAI,CAAC2L,mBAAmB,CAAGA,oBAC7B,CAqBF,CAEA,MAAMC,yBAAkCp9D,SAAAA,UAAAA,CAUtCx3D,MAAO2qH,CAAAA,UAAU,CAAE3P,cAAc,CAAEN,cAAc,CAAE0E,MAAM,CAAE8F,WAAW,CAAE,CACtE,IAAI,CAACyF,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACkK,iBAAiB,CAACp1J,OAAO,CAAGi7I,cAAAA,CACjC,GAAIA,cAAAA,CAAgB,CAClB,IAAI,CAACma,iBAAiB,CAAC70H,MAAM,CAACo/G,MAChC,EAAA,CACA,IAAI,CAAC0V,gBAAgB,CAACr1J,OAAO,CAAGu7I,cAChC,CAAA,GAAIA,cAAgB,CAAA,CAClB,IAAI,CAAC8Z,gBAAgB,CAAC90H,MAAM,CAACklH,WAAAA,EAC/B,CACF,CACAnvH,SAAU,CACR,IAAI,CAAC8+H,iBAAiB,CAAC9+H,OAAO,EAC9B,CAAA,IAAI,CAAC8+H,iBAAiB,CAAG,KAC3B,CACA18D,OAAAA,EAAU,CACR,KAAM,CAAEm3C,QAAQ,CAAE,CAAG,IAAI,CACzB,KAAM,CAAEhe,KAAK,CAAE,CAAGge,QAClBA,CAAAA,QAAAA,CAASylB,sBAAsB,CAAC/0H,MAAM,CAAC,IAAI,CAAC2qH,UAAU,CAAC7f,YAAY,CAAExZ,KAAAA,CAAM8hC,QAAQ,EACrF,CA5BAz+J,WAAYkiC,CAAAA,MAAM,CAAEy4G,QAAQ,CAAE0Z,cAAc,CAAE2L,mBAAmB,CAAE3K,iBAAiB,CAAC,CACnF,KAAK,CAACnzH,MACN,CAAA,CAAA,IAAI,CAACy4G,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACqb,UAAU,CAAG,IAClB,CAAA,IAAI,CAACkK,iBAAiB,CAAGpB,wBAAyB1nK,CAAAA,MAAM,CAACi+J,iBAAkBzG,CAAAA,kBAAkB,CAAEyG,iBAAAA,CAAkBjE,gBAAgB,CAAA,CACjI,IAAI,CAAC7sD,YAAY,CAACxrG,IAAI,CAAC,IAAI,CAACmnK,iBAAiB,CAC7C,CAAA,IAAI,CAACC,gBAAgB,CAAG,IAAIJ,8BAAAA,CAA+B79H,MAAQmyH,CAAAA,cAAAA,CAAgB2L,mBACnF,CAAA,CAAA,IAAI,CAACz7D,YAAY,CAACxrG,IAAI,CAAC,IAAI,CAAConK,gBAAgB,EAC9C,CAqBF,CAEA,IAAIxgC,gBAAAA,CAAmB,CACvB,CAAA,MAAM0W,WAAc,CAAA,IAAI77H,IACxB,CAAA,MAAM6lJ,UAAa,CAAA,IAAI7lJ,IACvB,CAAA,MAAMglJ,QAAU,IAAIhlJ,IAAAA,CACpB,MAAM8lJ,QAAAA,CAAW,IAAI7pJ,IAAAA,CACrB,MAAM8pJ,YAAAA,CAAe,IAAIn3I,cACzB,CAAA,MAAMo3I,SAAY,CAAA,IAAIhmJ,IAAOkD,EAAAA,CAAAA,QAAQ,CAAC,CAAA,CAAG,CAAC,CAAG,CAAA,CAAA,CAAA,CAC7C,MAAM+iJ,aAAAA,CAAgB,IAAIz1J,GAAAA,CAC1B,MAAM01J,aAAAA,CAAgB,IAAI11J,GAAAA,CAC1B,MAAM21J,iBAAAA,CAAoB,IAAIt2H,gBAAAA,CAC9B,MAAMu2H,gBAAAA,CAAmB,IAAIpmJ,IAAOha,EAAAA,CAAAA,GAAG,CAAC,CACtC,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,EAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,EACA,CAAA,CAAA,CACD,CACD,CAAA,MAAMqgK,eAAkB,CAAA,CACtB,IAAI/mJ,IAAAA,CAAK,EAAK,CAAA,OAAA,CAAA,CACd,IAAIA,IAAAA,CAAK,GAAM,CAAA,OAAA,CAAA,CACf,IAAIA,IAAAA,CAAK,IAAM,OACf,CAAA,CAAA,IAAIA,IAAK,CAAA,IAAA,CAAO,OAChB,CAAA,CAAA,IAAIA,IAAK,CAAA,IAAA,CAAO,SAChB,IAAIA,IAAAA,CAAK,IAAO,CAAA,OAAA,CAAA,CAChB,IAAIA,IAAAA,CAAK,IAAO,CAAA,OAAA,CAAA,CAChB,IAAIA,IAAK,CAAA,KAAA,CAAQ,OACjB,CAAA,CAAA,IAAIA,IAAK,CAAA,KAAA,CAAQ,OACjB,CAAA,CAAA,IAAIA,IAAK,CAAA,KAAA,CAAQ,MACjB,CAAA,CAAA,IAAIA,IAAK,CAAA,KAAA,CAAQ,OACjB,CAAA,CAAA,IAAIA,KAAK,KAAQ,CAAA,OAAA,CAAA,CACjB,IAAIA,IAAAA,CAAK,KAAQ,CAAA,OAAA,CAAA,CACjB,IAAIA,IAAAA,CAAK,KAAQ,CAAA,OAAA,CAAA,CACjB,IAAIA,IAAAA,CAAK,KAAQ,CAAA,OAAA,CAAA,CACjB,IAAIA,IAAAA,CAAK,OAAS,OACnB,CAAA,CAAA,CACD,MAAMgnJ,aAAAA,CAAgB,IAAItmJ,IAAAA,CAC1B,MAAMumJ,aAAAA,CAAgB,IAAIvmJ,IAAAA,CAC1B,MAAMwmJ,aAAAA,CAAgB,IAAIxmJ,IAAAA,CAC1B,MAAMymJ,aAAAA,CAAgB,IAAIzmJ,IAC1B,CAAA,MAAM0mJ,aAAgB,CAAA,IAAI1mJ,IAC1B,CAAA,MAAM2mJ,aAAgB,CAAA,IAAI3mJ,KAC1B,MAAM4mJ,QAAAA,CAAW,IAAIp2J,GAAAA,CACrB,MAAMq2J,kBAAAA,CAAqB,EAAE,CAC7B,MAAMC,yBAA4B,CAAA,EAAE,CACpC,MAAMC,QAyEJngI,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACizH,cAAc,CAAG,IACtB,CAAA,IAAI,CAACmN,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACC,0BAA0B,CAAG,IAClC,CAAA,IAAI,CAACrE,cAAc,CAACh8H,OAAO,EAC3B,CAAA,IAAI,CAACg8H,cAAc,CAAG,IACtB,CAAA,IAAI,CAACsE,0BAA0B,EAAEtgI,OAAAA,EACjC,CAAA,IAAI,CAACsgI,0BAA0B,CAAG,IAAA,CAClC,IAAI,CAACrM,iBAAiB,CAACj0H,OAAO,EAC9B,CAAA,IAAI,CAACi0H,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACsM,cAAc,EAAEvgI,OAAAA,EACrB,CAAA,IAAI,CAACugI,cAAc,CAAG,KACxB,CACAnF,aAActxB,CAAAA,MAAM,CAAEx0F,YAAY,CAAE,CAClC,MAAMxU,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAM0/H,UAAalrH,CAAAA,YAAAA,CAAeA,YAAa94B,CAAAA,KAAK,CAAGskB,MAAAA,CAAOtkB,KAAK,CACnE,MAAMikJ,WAAAA,CAAcnrH,YAAeA,CAAAA,YAAAA,CAAa74B,MAAM,CAAGqkB,MAAOrkB,CAAAA,MAAM,CACtE,MAAM67B,IAAAA,CAAOwxF,MAAOxxF,CAAAA,IAAI,CACxB,IAAIptC,CAAI9U,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC+xC,IAAKptC,CAAAA,CAAC,CAAGs1J,UAAAA,CAAAA,CAC5B,IAAI5tJ,CAAAA,CAAIxc,KAAKmQ,KAAK,CAAC+xC,IAAK1lC,CAAAA,CAAC,CAAG6tJ,WAAAA,CAAAA,CAC5B,IAAIrqJ,CAAAA,CAAIhgB,KAAKmQ,KAAK,CAAC+xC,IAAKvlC,CAAAA,CAAC,CAAGytJ,UAAAA,CAAAA,CAC5B,IAAIl2I,CAAAA,CAAIl0B,KAAKmQ,KAAK,CAAC+xC,IAAKliC,CAAAA,CAAC,CAAGqqJ,WAAAA,CAAAA,CAC5B3/H,MAAOvkB,CAAAA,WAAW,CAACrR,CAAAA,CAAG0H,CAAGwD,CAAAA,CAAAA,CAAGkU,CAC5B,CAAA,CAAA,GAAIw/G,MAAO2L,CAAAA,iBAAiB,CAAE,CAC5B,MAAMta,WAAc2O,CAAAA,MAAAA,CAAO3O,WAAW,CACtCjwH,CAAI9U,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC40H,WAAAA,CAAYjwH,CAAC,CAAGs1J,UAC/B5tJ,CAAAA,CAAAA,CAAAA,CAAIxc,IAAKmQ,CAAAA,KAAK,CAAC40H,WAAYvoH,CAAAA,CAAC,CAAG6tJ,WAAAA,CAAAA,CAC/BrqJ,CAAIhgB,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC40H,WAAYpoH,CAAAA,CAAC,CAAGytJ,UAAAA,CAAAA,CAC/Bl2I,CAAIl0B,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC40H,YAAY/kH,CAAC,CAAGqqJ,WACjC,EAAA,CACA3/H,MAAO00C,CAAAA,UAAU,CAACtqE,CAAAA,CAAG0H,EAAGwD,CAAGkU,CAAAA,CAAAA,EAC7B,CACA2wI,iBAAAA,CAAkBnxB,MAAM,CAAEr0I,MAAM,CAAE,CAChC,MAAMgxC,KAAAA,CAAQhxC,MAAQgxC,EAAAA,KAAAA,CACtB,IAAIi6H,QAAAA,CAAW,IACf,CAAA,GAAI52B,MAAO9pC,CAAAA,EAAE,EAAI8pC,MAAAA,CAAO9pC,EAAE,CAAC2gE,OAAO,CAAE,CAClC,MAAM3vB,SAAAA,CAAYlH,MAAOkO,CAAAA,KAAK,EAAElwI,MAAAA,EAAQ02H,iBAAuB,EAAA,EAAA,IAAA,CAC/D,MAAMoiC,KAAAA,CAAQ92B,MAAO9pC,CAAAA,EAAE,CAAC4gE,KAAK,CAC7BF,QAAAA,CAAWE,MAAMx/J,IAAI,CACrB,IAAI,IAAI9K,CAAI,CAAA,CAAA,CAAGA,CAAIoqK,CAAAA,QAAAA,CAAS5pK,MAAM,CAAER,CAAI,EAAA,CAAA,CACtC,MAAMqP,IAAAA,CAAO+6J,QAAQ,CAACpqK,EAAE,CACxBqP,IAAAA,CAAKk7J,gBAAgB,CAAC7vB,SACtBlH,CAAAA,CAAAA,MAAAA,CAAOG,OAAO,CAACn0H,WAAW,CAACnQ,IAAAA,CAAKm7J,cAAc,EAChD,CACF,CAAA,KAAO,CACL,IAAI3C,QAAUr0B,MAAOsO,CAAAA,gBAAgB,CACrC,GAAItO,MAAOqM,CAAAA,mBAAmB,CAAE,CAC9BrM,MAAOqM,CAAAA,mBAAmB,CAACgoB,OAAAA,CAASzpC,WACtC,EAAA,CACA,IAAIqsC,aAAAA,CAAgBj3B,OAAOwQ,yBAAyB,EAAA,CACpD,GAAI7zG,KAAAA,CAAO,CACT03H,OAAAA,CAAUuB,aAActrJ,CAAAA,IAAI,CAACgrJ,SAAAA,CAAWjB,OACxC4C,CAAAA,CAAAA,aAAAA,CAAgBpB,aAAcvrJ,CAAAA,IAAI,CAACgrJ,SAAAA,CAAW2B,eAChD,CACA,GAAI,IAAI,CAACjgI,MAAM,CAAC2E,QAAQ,CAAE,CACxB04H,OAAAA,CAAUyB,aAAcxrJ,CAAAA,IAAI,CAACorJ,gBAAAA,CAAkBrB,OAC/C4C,CAAAA,CAAAA,aAAAA,CAAgBlB,cAAczrJ,IAAI,CAACorJ,gBAAkBuB,CAAAA,aAAAA,EACvD,CACA,KAAM,CAAE3nB,MAAM,CAAE,CAAGtP,MAAAA,CACnB,IAAIoL,OAAAA,CAAU,CACd,CAAA,IAAIC,OAAU,CAAA,CAAA,CACd,GAAIiE,MAAS,CAAA,CAAA,CAAG,CACd,MAAM4nB,WAAcvrK,CAAAA,MAAAA,CAASA,MAAO+mB,CAAAA,KAAK,CAAG,IAAI,CAACskB,MAAM,CAACtkB,KAAK,CAC7D,MAAMykJ,aAAexrK,MAASA,CAAAA,MAAAA,CAAOgnB,MAAM,CAAG,IAAI,CAACqkB,MAAM,CAACrkB,MAAM,CAChE,MAAMlY,MAAAA,CAASk7J,eAAe,CAAC,IAAI,CAAC3+H,MAAM,CAACiD,aAAa,CAAG07H,eAAAA,CAAgB3oK,MAAM,CAAC,CAClFo+I,OAAAA,CAAUkE,MAAU70I,EAAAA,MAAO2G,CAAAA,CAAC,CAAG,CAAA,CAAI,CAAA,CAAA,CAAK81J,YACxC7rB,OAAUiE,CAAAA,MAAAA,EAAU70I,MAAAA,CAAOqO,CAAC,CAAG,CAAI,CAAA,CAAA,EAAKquJ,YACxC9C,CAAAA,OAAAA,CAAU2B,aAAclqK,CAAAA,IAAI,CAACuoK,OAAAA,CAC7BA,CAAAA,OAAAA,CAAQttJ,IAAI,CAAC,CAAA,CAAE,CAAGqkI,OAClBipB,CAAAA,OAAAA,CAAQttJ,IAAI,CAAC,CAAE,CAAA,CAAGskI,OAClB4rB,CAAAA,aAAAA,CAAgBhB,aAAcnqK,CAAAA,IAAI,CAACmrK,aAAAA,CACnCA,CAAAA,aAAclwJ,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAGqkI,OACxB6rB,CAAAA,aAAAA,CAAclwJ,IAAI,CAAC,CAAA,CAAE,CAAGskI,OAAAA,CACxB,GAAI,IAAI,CAAC+rB,sBAAsB,GAAK,IAAI,CAACpgI,MAAM,CAACiD,aAAa,CAAE,CAC7D,IAAI,CAACm9H,sBAAsB,CAAG,IAAI,CAACpgI,MAAM,CAACiD,aAAa,CACvD,IAAI,CAACo9H,SAAS,CAAChW,IAAI,CAAC,IAAI,CAACiW,kBAAkB,EAC7C,CACF,CACA,MAAMC,SAAYjoB,CAAAA,MAAAA,CAAS,CAAI,CAAA,IAAI,CAACgoB,kBAAkB,CAAGpoJ,IAAKpE,CAAAA,IAAI,CAClE,IAAI,CAAC0sJ,mBAAmB,CAAC,CAAE,CAAA,CAAGD,SAAUn2J,CAAAA,CAAC,CACzC,IAAI,CAACo2J,mBAAmB,CAAC,CAAA,CAAE,CAAGD,SAAAA,CAAUzuJ,CACxC,CAAA,IAAI,CAAC0uJ,mBAAmB,CAAC,CAAA,CAAE,CAAGD,SAAAA,CAAUtuJ,CAAC,CACzC,IAAI,CAACuuJ,mBAAmB,CAAC,CAAE,CAAA,CAAGD,SAAUjrJ,CAAAA,CAAC,CACzC,IAAI,CAACmrJ,iBAAiB,CAAC/yH,QAAQ,CAAC,IAAI,CAAC8yH,mBAAmB,CAAA,CACxD,IAAI,CAACE,MAAM,CAAChzH,QAAQ,CAAC2vH,OAAAA,CAAQttJ,IAAI,CAAA,CACjC,IAAI,CAAC4wJ,YAAY,CAACjzH,QAAQ,CAACuyH,aAAAA,CAAclwJ,IAAI,CAAA,CAC7C,GAAIi5H,MAAAA,CAAOuM,kBAAkB,CAAE,CAC7BvM,MAAAA,CAAOuM,kBAAkB,CAAC4oB,UAAYvqC,CAAAA,WAAAA,EACxC,CAAO,KAAA,CACL,MAAMwwB,GAAMpb,CAAAA,MAAAA,CAAOkO,KAAK,CAAC72B,WAAW,EAAA,CACpC,MAAMkgC,GAAAA,CAAMvX,MAAOkO,CAAAA,KAAK,CAAC6G,WAAW,EACpCogB,CAAAA,UAAAA,CAAWzhJ,MAAM,CAAC0nI,IAAK7D,GAAKvuI,CAAAA,IAAAA,CAAKgC,GAAG,EACtC,CACA,IAAI,CAAC4sJ,SAAS,CAAClzH,QAAQ,CAACywH,UAAAA,CAAWpuJ,IAAI,CAAA,CACvCutJ,OAAQxoK,CAAAA,IAAI,CAACqpK,UAAYriJ,CAAAA,CAAAA,MAAM,EAC/B,CAAA,IAAI,CAAC+kJ,MAAM,CAACnzH,QAAQ,CAAC4vH,OAAQvtJ,CAAAA,IAAI,CACjCquJ,CAAAA,QAAAA,CAASppJ,WAAW,CAACsoJ,OACrB,CAAA,CAAA,IAAI,CAACwD,OAAO,CAACpzH,QAAQ,CAAC0wH,QAASruJ,CAAAA,IAAI,CACnCokI,CAAAA,WAAAA,CAAY7gI,IAAI,CAAC+pJ,OAASC,CAAAA,OAAAA,CAAAA,CAC1B,IAAI,CAACyD,UAAU,CAACrzH,QAAQ,CAACymG,WAAAA,CAAYpkI,IAAI,CAAA,CACzCi5H,MAAOkL,CAAAA,oBAAoB,CAACC,WAAAA,CAAaC,OAASC,CAAAA,OAAAA,CAAS,IAAI,CAACr0G,MAAM,CAACiD,aAAa,CAAA,CACpF,IAAI,CAAC+9H,OAAO,CAACtzH,QAAQ,CAAC/H,KAAAA,CAAQ,CAAC,CAAA,CAAI,CACnC,CAAA,CAAA,IAAI,CAAC6yH,eAAe,CAACxvB,MAAAA,CAAOkO,KAAK,CAAC72B,WAAW,EAC7C2oB,CAAAA,CAAAA,MAAAA,CAAOG,OAAO,CAACn0H,WAAW,CAACm/H,WAC7B,EAAA,CACA,IAAI,CAAC8sB,QAAQ,CAACvzH,QAAQ,CAAC/H,KAAAA,CAAQ,CAAC,CAAA,CAAI,GACpC,MAAMxf,CAAAA,CAAI6iH,MAAOiO,CAAAA,SAAS,CAC1B,MAAMltH,CAAIi/G,CAAAA,MAAAA,CAAOqN,QAAQ,CACzB,IAAI,CAAC6qB,UAAU,CAACxzH,QAAQ,CAACvnB,GACzB,IAAI,CAACg7I,SAAS,CAACzzH,QAAQ,CAAC3jB,CACxB,CAAA,CAAA,IAAI,CAACq3I,YAAY,CAAC,CAAA,CAAE,CAAG,CAAA,CAAIr3I,CAC3B,CAAA,IAAI,CAACq3I,YAAY,CAAC,CAAA,CAAE,CAAGr3I,CACvB,CAAA,IAAI,CAACq3I,YAAY,CAAC,CAAA,CAAE,CAAGj7I,CACvB,CAAA,IAAI,CAACi7I,YAAY,CAAC,CAAE,CAAA,CAAGp4B,MAAO1hG,CAAAA,UAAU,GAAKsnF,uBAAAA,CAA0B,EAAI,CAC3E,CAAA,IAAI,CAACyyC,cAAc,CAAC3zH,QAAQ,CAAC,IAAI,CAAC0zH,YAAY,CAAA,CAC9C,IAAI,CAACE,UAAU,CAAC5zH,QAAQ,CAAC,IAAI,CAAC+sF,KAAK,CAAC8mC,aAAa,CAAGv4B,MAAOyQ,CAAAA,WAAW,GAAK,IAAI,CAAChf,KAAK,CAAC+mC,QAAQ,CAAA,CAC9F,OAAO5B,QACT,CACAjhK,KAAAA,CAAMqqI,MAAM,CAAE/5C,UAAU,CAAErlC,UAAU,CAAEO,YAAY,CAAE,CAClD,MAAMjQ,KAAAA,CAAQ,CAAC+0C,UAAc+5C,EAAAA,MAAAA,CAAO2M,iBAAiB,CAAGxpH,eAAkB,CAAA,CAAA,GAAMy9B,UAAco/E,EAAAA,MAAAA,CAAO8M,iBAAiB,CAAG1pH,eAAAA,CAAkB,CAAA,CAAA,EAAM+9B,YAAAA,EAAgB6+E,MAAOiN,CAAAA,mBAAmB,CAAG5pH,iBAAoB,CAAA,CAAA,CAClN,CAAA,GAAI6tB,KAAO,CAAA,CACT,MAAMla,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1BA,MAAAA,CAAOrhC,KAAK,CAAC,CACXq7C,KAAAA,CAAO,CACLgvF,MAAAA,CAAOyM,WAAW,CAACpgJ,CAAC,CACpB2zI,MAAOyM,CAAAA,WAAW,CAAC7rI,CAAC,CACpBo/H,MAAOyM,CAAAA,WAAW,CAAC7vI,CAAC,CACpBojI,MAAAA,CAAOyM,WAAW,CAAC9vI,CAAC,CACrB,CACDo7B,KAAAA,CAAOioG,MAAO4M,CAAAA,WAAW,CACzB37F,OAAS+uF,CAAAA,MAAAA,CAAO+M,aAAa,CAC7B77F,KAAOA,CAAAA,KACT,CACF,EAAA,CACF,CACAunH,SAAAA,CAAUz4B,MAAM,CAAEr0I,MAAM,CAAEgK,KAAK,CAAE69J,aAAe,IAAI,CAAE,CACpD,IAAI,CAACrC,iBAAiB,CAACnxB,MAAAA,CAAQr0I,QAC/B,IAAI,CAAC4lK,SAAS,CAACvxB,MAAQr0I,CAAAA,MAAAA,CAAQgK,KAAO,CAAA,KAAA,EACxC,CACA47J,SAAUvxB,CAAAA,MAAM,CAAEr0I,MAAM,CAAEgK,KAAK,CAAE+iK,UAAU,CAAE,CAC3C,MAAM1hI,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1BA,OAAO0V,eAAe,CAAC/gD,MACvBqrC,CAAAA,CAAAA,MAAAA,CAAOuwD,WAAW,EAAA,CAClB,GAAImxE,UAAAA,CAAY,CACd1hI,MAAAA,CAAOsL,aAAa,CAAC,IAAM,CAAA,IAAA,CAAM,IAAM,CAAA,IAAA,CAAA,CACvCtL,OAAO2hI,aAAa,CAAC,IACvB,EAAA,CACA,IAAI,CAACrH,aAAa,CAACtxB,MAAQr0I,CAAAA,MAAAA,CAAAA,CAC3B,GAAIgK,KAAAA,CAAO,CACT,MAAM6I,OAAUwhI,CAAAA,MAAAA,CAAO44B,aAAa,CACpC5hI,MAAAA,CAAOrhC,KAAK,CAAC6I,OAAUA,CAAAA,OAAAA,CAAU,CAC/BwyC,KAAAA,CAAO,CACLgvF,MAAOyM,CAAAA,WAAW,CAACpgJ,CAAC,CACpB2zI,MAAAA,CAAOyM,WAAW,CAAC7rI,CAAC,CACpBo/H,MAAAA,CAAOyM,WAAW,CAAC7vI,CAAC,CACpBojI,MAAOyM,CAAAA,WAAW,CAAC9vI,CAAC,CACrB,CACDo7B,KAAOioG,CAAAA,MAAAA,CAAO4M,WAAW,CACzB17F,MAAO,CAAC8uF,MAAO2M,CAAAA,iBAAiB,CAAGxpH,eAAAA,CAAkB,CAAA,GAAM68G,MAAO8M,CAAAA,iBAAiB,CAAG1pH,eAAAA,CAAkB,CAAA,CAAA,EAAM48G,MAAAA,CAAOiN,mBAAmB,CAAG5pH,iBAAAA,CAAoB,CAAA,CAAA,CAC/J4tB,OAAS+uF,CAAAA,MAAAA,CAAO+M,aAClB,CACF,EAAA,CACF,CACAqjB,aAAAA,CAAcljB,SAAS,CAAE+iB,UAAU,CAAE4I,QAAQ,CAAE,CAC7C,MAAMjpC,QAAAA,CAAWipC,QAASjpC,CAAAA,QAAQ,CAClC,IAAItyF,KAAO1Z,aACX,CAAA,GAAIspH,SAAW,CAAA,CACb,IAAII,SAAAA,CAAY,CAChB,CAAA,GAAI1d,SAAS0Q,IAAI,GAAKx8G,cAAkB8rG,EAAAA,QAAAA,CAAS0Q,IAAI,GAAKz8G,aAAe,CAAA,CACvEypH,SAAY2iB,CAAAA,UAAAA,CAAa4I,QAAS92B,CAAAA,eAAe,CAAG82B,QAAAA,CAAS17B,IAAI,CAAC+X,eAAc,CAElF,GAAI5H,SAAAA,CAAY,CAAG,CAAA,CACjBhwG,IAAOsyF,CAAAA,QAAAA,CAAS0Q,IAAI,GAAKx8G,cAAiBD,CAAAA,aAAAA,CAAgBC,eAC5D,CAAA,KAAO,CACLwZ,IAAAA,CAAOsyF,SAAS0Q,KAClB,CACF,CACA,IAAI,CAACtpG,MAAM,CAACyV,WAAW,CAACnP,IACxB,CAAA,CAAA,GAAIA,IAAS1Z,GAAAA,aAAAA,EAAiBgsG,QAAS0Q,CAAAA,IAAI,GAAK18G,aAAe,CAAA,CAC7D,IAAI,CAACk1I,gCAAgC,CAACp0H,QAAQ,CAACm0H,SAAS17B,IAAI,CAAC+X,cAAc,EAC7E,CACF,CACAqV,mBAAoBvqB,CAAAA,MAAM,CAAE,CAC1B,GAAIA,MAAO9pC,CAAAA,EAAE,EAAI8pC,MAAAA,CAAO9pC,EAAE,CAAC4gE,KAAK,CAACx/J,IAAI,CAACtK,MAAM,CAAE,CAC5C,MAAM6O,KAAOmkI,MAAO9pC,CAAAA,EAAE,CAAC4gE,KAAK,CAACx/J,IAAI,CAAC,CAAA,CAAE,CACpC6zI,WAAAA,CAAY7gI,IAAI,CAACzO,IAAKw4J,CAAAA,OAAO,CAAEx4J,IAAAA,CAAKk9J,UAAU,CAC9C/4B,CAAAA,MAAAA,CAAOG,OAAO,CAACn0H,WAAW,CAACm/H,WAC3B,CAAA,CAAA,MACF,CACA,MAAMkpB,OAAUr0B,CAAAA,MAAAA,CAAOsO,gBAAgB,CACvC,GAAItO,MAAAA,CAAOqM,mBAAmB,CAAE,CAC9BrM,MAAOqM,CAAAA,mBAAmB,CAACgoB,OAAAA,CAASzpC,WACtC,EAAA,CACA,GAAIoV,MAAOuM,CAAAA,kBAAkB,CAAE,CAC7BvM,MAAOuM,CAAAA,kBAAkB,CAAC4oB,UAAAA,CAAYvqC,aACxC,CAAO,KAAA,CACL,MAAMwwB,GAAAA,CAAMpb,MAAOkO,CAAAA,KAAK,CAAC72B,WAAW,EACpC,CAAA,MAAMkgC,GAAMvX,CAAAA,MAAAA,CAAOkO,KAAK,CAAC6G,WAAW,EAAA,CACpCogB,WAAWzhJ,MAAM,CAAC0nI,GAAK7D,CAAAA,GAAAA,CAAKvuI,IAAKgC,CAAAA,GAAG,CACpC,CAAA,IAAI,CAAC4sJ,SAAS,CAAClzH,QAAQ,CAACywH,UAAAA,CAAWpuJ,IAAI,EACzC,CACAutJ,OAAQxoK,CAAAA,IAAI,CAACqpK,UAAAA,CAAAA,CAAYriJ,MAAM,EAAA,CAC/Bq4H,WAAY7gI,CAAAA,IAAI,CAAC+pJ,OAAAA,CAASC,OAC1Bt0B,CAAAA,CAAAA,MAAAA,CAAOG,OAAO,CAACn0H,WAAW,CAACm/H,aAC7B,CACA+kB,gBAAAA,CAAiBl5H,MAAM,CAAE44F,QAAQ,CAAE,CACjC54F,MAAAA,CAAOyV,WAAW,CAACmjF,QAAAA,CAAS0Q,IAAI,CAAA,CAChC,GAAI1Q,QAAAA,CAASopC,UAAU,CAAE,CACvB,IAAI,CAACC,YAAY,CAACv0H,QAAQ,CAACkrF,QAASopC,CAAAA,UAAU,EAChD,CACA,GAAIppC,QAAAA,CAASopC,UAAU,EAAIppC,QAASwQ,CAAAA,SAAS,CAAG,CAAG,CAAA,CACjD,IAAI,CAAC84B,WAAW,CAACx0H,QAAQ,CAACkrF,SAASwQ,SAAS,EAC9C,CACF,CACA+4B,qBAAsBC,CAAAA,SAAS,CAAE,CAC/B3kC,mBACA,MAAM4kC,cAAAA,CAAiBD,SAAUpsK,CAAAA,MAAM,CACvC,GAAIqsK,cAAmB,GAAA,CAAA,CAAG,OAC1B,IAAI,IAAItsK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIssK,cAAgBtsK,CAAAA,CAAAA,EAAAA,CAAI,CACrC,MAAMusK,EAAAA,CAAKF,SAAS,CAACrsK,CAAE,CAAA,CAACiwI,YAAY,CACpC,GAAIs8B,EAAI,CAAA,CACNA,EAAG3kC,CAAAA,cAAc,CAACykC,SAAS,CAACrsK,CAAAA,CAAE,CAACowI,IAAI,CAAE1I,gBACrC6kC,CAAAA,CAAAA,EAAGxwH,CAAAA,MAAM,CAAG,KACd,CACF,CACF,CACAywH,qBAAAA,CAAsBH,SAAS,CAAE,CAC/B,IAAK,MAAMP,QAAYO,IAAAA,SAAAA,CAAU,CAC/B,MAAMxlC,IAAOilC,CAAAA,QAAAA,CAAS77B,YAAY,CAClC,GAAIpJ,IAAAA,EAAQA,IAAK9qF,CAAAA,MAAM,CAAE,CACvB8qF,IAAKiB,CAAAA,mBAAmB,CAACgkC,QAAS17B,CAAAA,IAAI,CAAE1I,gBAAAA,CACxCb,CAAAA,IAAAA,CAAK9qF,MAAM,CAAG,MAChB,CACF,CACF,CACA0wH,cAAeJ,CAAAA,SAAS,CAAE,CACxB,IAAK,MAAMP,QAAAA,IAAYO,SAAU,CAAA,CAC/B,MAAMK,SAAAA,CAAYZ,QAAS75B,CAAAA,aAAa,CACxC,GAAIy6B,SAAAA,EAAaA,SAAU3wH,CAAAA,MAAM,CAAE,CACjC2wH,SAAUt5H,CAAAA,MAAM,GAClB,CACF,CACF,CACAu5H,aAAAA,CAAcN,SAAS,CAAE,CACvB,IAAK,MAAMP,QAAAA,IAAYO,SAAU,CAAA,CAC/BP,QAAS72B,CAAAA,cAAc,EAAE7hG,MAAAA,GAC3B,CACF,CACAw5H,SAAAA,CAAUP,SAAS,CAAE,CACnB,IAAI,CAACG,qBAAqB,CAACH,SAAAA,CAAAA,CAC3B,IAAI,CAACI,cAAc,CAACJ,SACpB,CAAA,CAAA,IAAI,CAACM,aAAa,CAACN,SACrB,EAAA,CACA9I,gBAAiBt5H,CAAAA,MAAM,CAAEy/F,IAAI,CAAE,CAC7Bz/F,MAAO2V,CAAAA,eAAe,CAAC8pF,IAAAA,CAAK7pF,YAAY,EAC1C,CACA2jH,WAAYv5H,CAAAA,MAAM,CAAEgoG,aAAa,CAAE,CACjC,GAAIA,aAAAA,CAAe,CACjBA,aAAc46B,CAAAA,gBAAgB,CAAC5iI,MAAAA,CAAAA,CAC/BA,MAAO2V,CAAAA,eAAe,CAACqyF,aAAAA,CAAczH,KAAK,CAACsiC,eAAe,CAC1D,CAAA,IAAI,CAACC,gBAAgB,CAACp1H,QAAQ,CAACs6F,aAAAA,CAAc+6B,gBAAgB,CAAA,CAC7D,IAAI,CAACC,cAAc,CAACt1H,QAAQ,CAACs6F,aAAAA,CAAci7B,cAAc,CAAA,CACzD,IAAI,CAACC,cAAc,CAACx1H,QAAQ,CAACs6F,aAAcm7B,CAAAA,cAAc,EAC3D,CACF,CACAhK,WAAAA,CAAYn5H,MAAM,CAAE26F,YAAY,CAAE,CAChC,MAAMqL,YAAAA,CAAerL,YAAaqL,CAAAA,YAAY,CAC9C,GAAIA,YAAc,CAAA,CAChB,IAAI,CAACo9B,cAAc,EAAA,CACnB,MAAM3mC,WAAcuJ,CAAAA,YAAAA,CAAavJ,WAAW,CAC5C,IAAI,CAAC4mC,aAAa,CAAC31H,QAAQ,CAAC+uF,WAAAA,EAC9B,CACF,CACA+7B,eAAgBn+I,CAAAA,QAAQ,CAAE,CACxB,MAAMipJ,EAAK,CAAA,IAAI,CAACC,OAAO,CACvBD,EAAE,CAAC,CAAE,CAAA,CAAGjpJ,QAASjQ,CAAAA,CAAC,CAClBk5J,EAAE,CAAC,EAAE,CAAGjpJ,QAAAA,CAASvI,CACjBwxJ,CAAAA,EAAE,CAAC,CAAA,CAAE,CAAGjpJ,QAASpI,CAAAA,CAAC,CAClB,IAAI,CAACuxJ,SAAS,CAAC91H,QAAQ,CAAC41H,EAC1B,EAAA,CACA9H,uBAAwB3I,CAAAA,WAAW,CAAE,CACnC,GAAI,IAAI,CAAC7yH,MAAM,CAAC4Z,sBAAsB,EAAI,CAAC,IAAI,CAAC+7E,iBAAiB,CAAE,CACjE,MAAM3qE,QAAAA,CAAW,CACf,IAAIR,aAAc,CAAA,aAAA,CAAehxB,kBACjC,IAAIgxB,aAAAA,CAAc,oBAAsBhxB,CAAAA,gBAAAA,CAAAA,CACxC,IAAIgxB,aAAAA,CAAc,mBAAqBhxB,CAAAA,gBAAAA,CAAAA,CACvC,IAAIgxB,aAAc,CAAA,yBAAA,CAA2BhxB,gBAC7C,CAAA,CAAA,IAAIgxB,aAAc,CAAA,uBAAA,CAAyBhxB,gBAC3C,CAAA,CAAA,IAAIgxB,aAAc,CAAA,cAAA,CAAgBjxB,gBAClC,CAAA,CAAA,IAAIixB,aAAc,CAAA,uBAAA,CAAyBjxB,gBAC3C,CAAA,CAAA,IAAIixB,cAAc,eAAiB1xB,CAAAA,gBAAAA,CAAAA,CACnC,IAAI0xB,aAAAA,CAAc,iBAAmB5xB,CAAAA,iBAAAA,CAAAA,CACrC,IAAI4xB,aAAAA,CAAc,UAAY5xB,CAAAA,iBAAAA,CAAAA,CAC9B,IAAI4xB,aAAAA,CAAc,aAAe5xB,CAAAA,iBAAAA,CAAAA,CACjC,IAAI4xB,aAAAA,CAAc,aAAc5xB,iBACjC,CAAA,CAAA,CACD,GAAIi6H,WAAAA,CAAa,CACf7nG,QAAAA,CAASn0D,IAAI,CAAA,GAAI,CACf,IAAI2zD,aAAc,CAAA,+BAAA,CAAiC1xB,gBACnD,CAAA,CAAA,IAAI0xB,aAAc,CAAA,oBAAA,CAAsB1xB,kBACxC,IAAI0xB,aAAAA,CAAc,kBAAoB1xB,CAAAA,gBAAAA,CAAAA,CACtC,IAAI0xB,aAAAA,CAAc,oBAAsB1xB,CAAAA,gBAAAA,CAAAA,CACxC,IAAI0xB,aAAc,CAAA,iBAAA,CAAmB1xB,gBACrC,CAAA,CAAA,IAAI0xB,aAAc,CAAA,iBAAA,CAAmB1xB,gBACrC,CAAA,CAAA,IAAI0xB,cAAc,mBAAqB3xB,CAAAA,gBAAAA,CAAAA,CACvC,IAAI2xB,aAAAA,CAAc,iBAAmB7xB,CAAAA,eAAAA,CAAAA,CACrC,IAAI6xB,aAAAA,CAAc,aAAe5xB,CAAAA,iBAAAA,CAAAA,CAClC,EACH,CACA,IAAI,CAAC+8F,iBAAiB,CAAG,IAAI5qE,mBAAoB,CAAA,IAAI,CAAC/qB,MAAM,CAAEgrB,QAAAA,CAAAA,CAC9D,MAAMprB,OAAAA,CAAU,CACd,IAAItB,uBAAwBf,CAAAA,gCAAAA,CAAkCnB,kBAAqBC,CAAAA,oBAAAA,CAAAA,CACpF,CACD,IAAI,CAACu5F,mBAAmB,CAAG,IAAI32F,eAAgB,CAAA,IAAI,CAACe,MAAM,CAAEJ,OAAAA,EAC9D,CACF,CACA6jI,iBAAkB5+J,CAAAA,IAAI,CAAEjJ,KAAK,CAAE,CAC7B,IAAI,CAAC8kK,MAAM,CAAChzH,QAAQ,CAAC7oC,IAAAA,CAAKw4J,OAAO,CAACttJ,IAAI,CACtC,CAAA,IAAI,CAAC4wJ,YAAY,CAACjzH,QAAQ,CAAC7oC,IAAKw4J,CAAAA,OAAO,CAACttJ,IAAI,CAC5C,CAAA,IAAI,CAAC8wJ,MAAM,CAACnzH,QAAQ,CAAC7oC,IAAAA,CAAKk9J,UAAU,CAAChyJ,IAAI,CAAA,CACzC,IAAI,CAAC6wJ,SAAS,CAAClzH,QAAQ,CAAC7oC,IAAAA,CAAK6+J,aAAa,CAAC3zJ,IAAI,CAAA,CAC/C,IAAI,CAAC+wJ,OAAO,CAACpzH,QAAQ,CAAC7oC,KAAKu5J,QAAQ,CAACruJ,IAAI,CAAA,CACxC,IAAI,CAACgxJ,UAAU,CAACrzH,QAAQ,CAAC7oC,IAAKm7J,CAAAA,cAAc,CAACjwJ,IAAI,CACjD,CAAA,IAAI,CAACyzJ,SAAS,CAAC91H,QAAQ,CAAC7oC,IAAK8+J,CAAAA,YAAY,CACzC,CAAA,IAAI,CAACC,WAAW,CAACl2H,QAAQ,CAAC9xC,KAC5B,EAAA,CACAw+J,uBAAwBC,CAAAA,cAAc,CAAE1kC,iBAAiB,CAAEC,mBAAmB,CAAEgqC,QAAQ,CAAE,CACxF,KAAM,CAAE5/H,MAAM,CAAE,CAAG,IAAI,CACvB,MAAM6jI,SAAAA,CAAYjE,UAAU5pK,MAAU,EAAA,CAAA,CACtC,MAAMqkK,cAAAA,CAAerkK,MAAM,CAAG6tK,SAAU,CAAA,CACtC,MAAMrpH,EAAK,CAAA,IAAI2rB,aAAcnmC,CAAAA,MAAAA,CAAQ21F,iBAAmB,CAAA,KAAA,CAAA,CACxD,MAAMmuC,EAAAA,CAAK,IAAIz7H,SAAUrI,CAAAA,MAAAA,CAAQ41F,mBAAqBp7E,CAAAA,EAAAA,CAAAA,CACtD6/G,cAAexjK,CAAAA,IAAI,CAACitK,EAAAA,EACtB,CACA,GAAIlE,QAAU,CAAA,CACZ,IAAI,IAAI7pK,CAAI,CAAA,CAAA,CAAGA,EAAI8tK,SAAW9tK,CAAAA,CAAAA,EAAAA,CAAI,CAChC,MAAM8O,IAAO+6J,CAAAA,QAAQ,CAAC7pK,CAAAA,CAAE,CACxB,IAAI,CAAC0tK,iBAAiB,CAAC5+J,IAAM9O,CAAAA,CAAAA,CAAAA,CAC7B,MAAMguK,aAAAA,CAAgB1J,cAAc,CAACtkK,CAAAA,CAAE,CACvCguK,aAAAA,CAAcz7H,oBAAoB,CAACa,MAAM,EAAA,CACzC46H,aAAc56H,CAAAA,MAAM,GACtB,CACF,CAAO,KAAA,CACL,MAAM46H,aAAAA,CAAgB1J,cAAc,CAAC,CAAA,CAAE,CACvC0J,aAAAA,CAAcz7H,oBAAoB,CAACa,MAAM,EAAA,CACzC46H,aAAc56H,CAAAA,MAAM,GACtB,CACA,GAAI,CAACy2H,QAAU,CAAA,CACb5/H,OAAOknC,YAAY,CAAC/pC,cAAgBk9H,CAAAA,cAAc,CAAC,CAAA,CAAE,EACvD,CACF,CACAZ,uBAAAA,CAAwBjzB,cAAc,CAAE,CACtC,MAAMxmG,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,GAAIA,MAAAA,CAAO4Z,sBAAsB,CAAE,CACjC,MAAMoqH,cAAgBx9B,cAAe9/D,CAAAA,YAAY,CAAC1mC,MAAAA,CAAAA,CAClDgkI,aAAc76H,CAAAA,MAAM,EACpBnJ,CAAAA,MAAAA,CAAOknC,YAAY,CAAC9pC,cAAAA,CAAgB4mI,aACpC,CAAA,CAAA,MAAMC,iBAAoBz9B,CAAAA,cAAAA,CAAepB,gBAAgB,CAACplG,MAC1DikI,CAAAA,CAAAA,iBAAAA,CAAkB96H,MAAM,CAACs1H,iBACzBz+H,CAAAA,CAAAA,MAAAA,CAAOknC,YAAY,CAAC7pC,kBAAmBohI,iBAAkB5hH,CAAAA,SAAS,CAAE4hH,iBAAAA,CAAkBr2H,OAAO,EAC/F,CACF,CACAoxH,wBAAwB7+B,YAAY,CAAEupC,eAAkB,CAAA,KAAK,CAAE,CAC7D,MAAMC,WAAAA,CAAcxpC,aAAawL,IAAI,CAACj9G,cAAc,CACpD,IAAI,CAACk7I,aAAa,CAAC12H,QAAQ,CAACy2H,WAAYp0J,CAAAA,IAAI,CAC5C,CAAA,GAAIm0J,eAAiB,CAAA,CACnB,IAAI,CAACG,cAAc,CAAC32H,QAAQ,CAACitF,YAAAA,CAAawL,IAAI,CAACuV,YAAY,CAAC3rI,IAAI,EAClE,CACF,CACAu5H,IAAAA,CAAKN,MAAM,CAAEo5B,SAAS,CAAEkC,eAAe,CAAE,CACvC,MAAMC,MAAAA,CAASD,eAAgBC,CAAAA,MAAM,CACrCA,MAAOvuK,CAAAA,MAAM,CAAG,CAAA,CAChB,MAAMuxI,WAAAA,CAAc+8B,gBAAgB/8B,WACpCA,CAAAA,WAAAA,CAAYvxI,MAAM,CAAG,CACrB,CAAA,MAAMwuK,MAASx7B,CAAAA,MAAAA,CAAOyN,cAAc,CACpC,MAAM1gG,KAAAA,CAAQqsH,SAAUpsK,CAAAA,MAAM,CAC9B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAM8rK,QAAAA,CAAWO,SAAS,CAACrsK,CAAE,CAAA,CAC7B,GAAI8rK,QAAAA,CAAS54B,OAAO,CAAE,CACpB,MAAMA,OAAAA,CAAU,CAACu7B,MAAAA,EAAU,CAAC3C,QAAAA,CAASv4B,IAAI,EAAIu4B,QAAAA,CAAS94B,UAAU,CAACC,MACjE,CAAA,CAAA,GAAIC,OAAS,CAAA,CACX44B,SAAS/2B,gBAAgB,CAAG,IAC5B,CAAA,MAAMvF,MAASs8B,CAAAA,QAAAA,CAASt6B,WAAW,CAAGA,WAAcg9B,CAAAA,MAAAA,CACpDh/B,MAAO1uI,CAAAA,IAAI,CAACgrK,QAAAA,CAAAA,CACZ,GAAIA,QAAAA,CAAS77B,YAAY,EAAI67B,QAAAA,CAAS75B,aAAa,EAAI65B,QAAS72B,CAAAA,cAAc,CAAE,CAC9E,IAAI,CAACy5B,uBAAuB,CAACp+J,GAAG,CAACw7J,QAAAA,CAAAA,CACjC,GAAIA,QAAAA,CAAS72B,cAAc,CAAE,CAC3B62B,QAAS72B,CAAAA,cAAc,CAAC05B,OAAO,CAAC7tK,IAAI,CAACmyI,MAAAA,EACvC,CACF,CACF,CACF,CACF,CACF,CACAsf,cAAcqK,IAAI,CAAE,CAClB,IAAI,CAACpK,MAAM,CAACvyJ,MAAM,CAAG,CACrB,CAAA,IAAI,CAACq4J,WAAW,CAACr4J,MAAM,CAAG,EAC1B,MAAM2uK,KAAAA,CAAQ,IAAI,CAAClqC,KAAK,CAACmqC,MAAM,CAC/B,MAAM7uH,KAAAA,CAAQ48G,IAAK8E,CAAAA,SAAS,CAACzhK,MAAM,CACnC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAM+kI,KAAAA,CAAQ63B,IAAK8E,CAAAA,SAAS,CAAC1hK,CAAAA,CAAE,CAC/B,GAAI,CAACyoK,aAAAA,CAAcngK,GAAG,CAACy8H,KAAAA,CAAAA,CAAQ,CAC7B0jC,aAAAA,CAAcn4J,GAAG,CAACy0H,KAClB,CAAA,CAAA,MAAMytB,MAASztB,CAAAA,KAAAA,CAAM+pC,OAAO,CAC5B,IAAI,IAAIvoF,CAAI,CAAA,CAAA,CAAGA,EAAIisE,MAAOvyJ,CAAAA,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACpC,MAAMykE,KAAQwH,CAAAA,MAAM,CAACjsE,CAAE,CAAA,CACvB,GAAI,CAACiiF,aAAclgK,CAAAA,GAAG,CAAC0iJ,KAAAA,CAAAA,CAAQ,CAC7Bwd,aAAcl4J,CAAAA,GAAG,CAAC06I,KAAAA,CAAAA,CAClB,IAAI,CAACwH,MAAM,CAAC1xJ,IAAI,CAACkqJ,KACjB,CAAA,CAAA,GAAIA,KAAM7wI,CAAAA,KAAK,GAAKq7G,qBAAAA,CAAuB,CACzC,IAAI,CAAC8iC,WAAW,CAACx3J,IAAI,CAACkqJ,KACxB,EAAA,CACF,CACF,CACF,CACF,CACA4jB,KAAMpc,CAAAA,MAAM,CAAG,IAAI,CAACA,MAAM,CAACvyJ,MAAM,CACjCuoK,aAAc5/J,CAAAA,KAAK,EACnB6/J,CAAAA,aAAAA,CAAc7/J,KAAK,GACrB,CACAmmK,UAAAA,CAAW97B,MAAM,CAAEuf,MAAM,CAAE,CACzB,MAAMuK,wBAAAA,CAA2B,IAAI,CAACr4B,KAAK,CAACq4B,wBAAwB,CACpE,MAAMyO,aAAgB,CAAA,IAAI,CAAC9mC,KAAK,CAAC8mC,aAAa,CAC9C,IAAI,IAAIxrK,CAAI,CAAA,CAAA,CAAGA,CAAIwyJ,CAAAA,MAAAA,CAAOvyJ,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAMgrJ,KAAAA,CAAQwH,MAAM,CAACxyJ,CAAE,CAAA,CACvB,GAAIgrJ,KAAAA,CAAMn4I,OAAO,CAAE,CACjB,GAAIm4I,KAAAA,CAAM7wI,KAAK,GAAKq7G,qBAAuB,CAAA,CACzCw1B,KAAMgkB,CAAAA,iBAAiB,CAAC1G,YAAAA,CAAAA,CACxB,GAAIr1B,MAAAA,CAAOG,OAAO,CAACxgH,cAAc,CAAC01I,YAAAA,CAAAA,CAAe,CAC/Ctd,KAAAA,CAAMjW,gBAAgB,CAAG,IACzBiW,CAAAA,KAAMikB,CAAAA,gBAAgB,CAAGzD,aAAAA,CACzB,MAAM0D,UAAAA,CAAaj8B,MAAO2Q,CAAAA,aAAa,CAAC0kB,YACxCtd,CAAAA,CAAAA,KAAM6N,CAAAA,aAAa,CAAGt5J,IAAAA,CAAKoU,GAAG,CAACq3I,MAAM6N,aAAa,CAAEqW,UACtD,EAAA,CAAA,KAAO,CACL,GAAI,CAACnS,wBAAAA,CAA0B,CAC7B,GAAI/R,KAAAA,CAAMmD,WAAW,EAAI,CAACnD,KAAAA,CAAMoK,SAAS,CAAE,CACzCpK,KAAAA,CAAMjW,gBAAgB,CAAG,KAC3B,CACF,CACF,CACF,MAAO,CACLiW,KAAAA,CAAMikB,gBAAgB,CAAG,IAAI,CAACvqC,KAAK,CAAC8mC,cAAa,CAErD,CACF,CACF,CACA2D,cAAAA,CAAevS,IAAI,CAAE,CACnB,MAAME,WAAAA,CAAc,IAAI,CAACp4B,KAAK,CAACq4B,wBAAwB,CACvD,IAAI,IAAI/8J,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACs4J,WAAW,CAACr4J,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9C,MAAMgrJ,KAAAA,CAAQ,IAAI,CAACsN,WAAW,CAACt4J,CAAAA,CAAE,CACjC,GAAIgrJ,KAAM7wI,CAAAA,KAAK,GAAKq7G,qBAAAA,CAAuB,CACzC,GAAIsnC,WAAAA,CAAa,CACf,GAAI9R,KAAMwO,CAAAA,gBAAgB,EAAIxO,KAAAA,CAAM+Y,gBAAgB,GAAK7nC,iBAAmB,CAAA,CAC1E8uB,KAAM+Y,CAAAA,gBAAgB,CAAG5nC,uBAC3B,CACF,CAAO,KAAA,CACL,GAAI6uB,KAAAA,CAAM+Y,gBAAgB,GAAK7nC,iBAAqB8uB,EAAAA,KAAAA,CAAMmD,WAAW,CAAE,CACrE,GAAI,CAACnD,KAAAA,CAAMwD,aAAa,CAAC,KAAM,CAAGgO,CAAAA,CAAAA,YAAY,CAAC/9G,YAAY,CAAE,CAC3DusG,KAAM+Y,CAAAA,gBAAgB,CAAG5nC,uBAC3B,CACF,CACF,CACA,GAAI6uB,KAAMjW,CAAAA,gBAAgB,EAAIiW,KAAMmD,CAAAA,WAAW,EAAInD,KAAAA,CAAM+Y,gBAAgB,GAAK7nC,iBAAmB,CAAA,CAC/F,IAAI,CAACqtC,oBAAoB,CAACh2B,IAAI,CAACyX,KAAAA,CAAO4R,IACxC,EAAA,CACF,CACF,CACA,IAAI,CAACwS,qBAAqB,CAACxmK,KAAK,EAChC,CAAA,MAAM+lK,OAAU/R,CAAAA,IAAAA,CAAK+R,OAAO,CAC5B,IAAI,IAAI3uK,CAAI,CAAA,CAAA,CAAGA,EAAI2uK,OAAQ1uK,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrC,MAAMqvK,eAAkBV,CAAAA,OAAO,CAAC3uK,CAAAA,CAAE,CAClC,GAAIqvK,eAAgBx8J,CAAAA,OAAO,CAAE,CAC3B,MAAMogI,MAASo8B,CAAAA,eAAAA,CAAgBp8B,MAAM,CACrC,IAAIq8B,SAAAA,CACJ,MAAMC,YAAAA,CAAet8B,MAAOtO,CAAAA,MAAM,CAClC,IAAI,IAAI9lH,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI0wJ,aAAatvK,MAAM,CAAE4e,CAAI,EAAA,CAAA,CAC1C,MAAM2wJ,WAAAA,CAAc5S,IAAK53B,CAAAA,YAAY,CAACuqC,YAAY,CAAC1wJ,CAAE,CAAA,CAAA,CACrD,GAAI2wJ,WAAAA,CAAa,CACf,MAAMC,eAAiBD,WAAYE,CAAAA,WAAW,CAACl6C,qBAAAA,CAAsB,CACrE,IAAI,IAAIjvC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkpF,cAAexvK,CAAAA,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC5C,MAAMykE,MAAQykB,cAAc,CAAClpF,CAAE,CAAA,CAC/B,GAAIykE,KAAAA,CAAMmD,WAAW,EAAI,CAACgb,QAAAA,CAAS7gK,GAAG,CAAC0iJ,KAAQ,CAAA,CAAA,CAC7Cme,QAAS74J,CAAAA,GAAG,CAAC06I,KACbskB,CAAAA,CAAAA,SAAAA,CAAYA,SAAa,EAAA,EAAE,CAC3BA,SAAAA,CAAUxuK,IAAI,CAACkqJ,KACf,CAAA,CAAA,IAAI,CAACwe,0BAA0B,CAACj2B,IAAI,CAACyX,KAAAA,CAAO4R,KAAM3pB,MACpD,EAAA,CACF,CACF,CACF,CACA,GAAIq8B,SAAW,CAAA,CACb,IAAI,CAACF,qBAAqB,CAAC7mK,GAAG,CAAC0qI,MAAAA,CAAQq8B,SACzC,EAAA,CACAnG,SAASvgK,KAAK,GAChB,CACF,CACF,CACA+mK,eAAAA,CAAgB/S,IAAI,CAAE,CACpB,KAAM,CAAEl4B,KAAK,CAAE,CAAG,IAAI,CACtB,IAAI,CAACgqC,uBAAuB,CAAC9lK,KAAK,EAClC,CAAA,MAAMgnK,UAAahT,CAAAA,IAAAA,CAAK+R,OAAO,CAAC1uK,MAAM,CACtC,IAAI,CAAC4vK,gBAAgB,EAAID,WACzB,IAAI,IAAI5vK,CAAI,CAAA,CAAA,CAAGA,CAAI4vK,CAAAA,UAAAA,CAAY5vK,CAAI,EAAA,CAAA,CACjC,MAAMizI,MAAAA,CAAS2pB,IAAK+R,CAAAA,OAAO,CAAC3uK,CAAAA,CAAE,CAC9B0kI,KAAAA,EAAOx7H,KAAKo2H,aAAe2T,CAAAA,MAAAA,CAAAA,CAC3B,MAAMx0F,YAAAA,CAAew0F,MAAOx0F,CAAAA,YAAY,CACxCw0F,MAAAA,CAAO7nC,WAAW,CAAC3sD,YAAAA,CAAAA,CACnB,IAAI,CAAC++G,mBAAmB,CAACvqB,MAAOA,CAAAA,MAAM,EACtC,MAAM68B,QAAAA,CAAW78B,MAAOtO,CAAAA,MAAM,CAC9B,IAAI,IAAIp+C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIupF,QAAS7vK,CAAAA,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACtC,MAAMw+C,MAAQ63B,IAAK53B,CAAAA,YAAY,CAAC8qC,QAAQ,CAACvpF,CAAAA,CAAE,CAC3C,CAAA,GAAIw+C,KAASA,EAAAA,KAAAA,CAAMlyH,OAAO,CAAE,CAC1B,IAAI,CAACk8J,UAAU,CAAC97B,MAAOA,CAAAA,MAAM,CAAElO,KAAAA,CAAM+pC,OAAO,CAAA,CAC5C,MAAMP,eAAAA,CAAkBxpC,KAAMgrC,CAAAA,kBAAkB,CAAC98B,MAAAA,CAAOA,MAAM,CAAA,CAC9D,IAAI,CAACM,IAAI,CAACN,MAAAA,CAAOA,MAAM,CAAElO,KAAMQ,CAAAA,aAAa,CAAEgpC,eAAAA,EAChD,CACF,CACA7pC,KAAAA,EAAOx7H,IAAKq2H,CAAAA,cAAAA,CAAgB0T,MAC9B,EAAA,CACA,GAAIvO,KAAAA,CAAMq4B,wBAAwB,CAAE,CAClC,IAAI,CAACiT,uBAAuB,GAC9B,CACA,IAAI,CAACb,cAAc,CAACvS,IAAAA,CAAAA,CACpBl4B,KAAOx7H,EAAAA,IAAAA,CAAKs2H,cACd,EAAA,CACAywC,cAAc5D,SAAS,CAAE6D,cAAc,CAAE,CACvC,MAAMlwH,KAAQqsH,CAAAA,SAAAA,CAAUpsK,MAAM,CAC9B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,IAAI,CAC5B,MAAMgxI,GAAMq7B,CAAAA,SAAS,CAACrsK,CAAAA,CAAE,CAAC6iI,QAAQ,CACjC,GAAImO,GAAK,CAAA,CACP,GAAI,CAACm4B,QAAS7gK,CAAAA,GAAG,CAAC0oI,GAAM,CAAA,CAAA,CACtBm4B,QAAS74J,CAAAA,GAAG,CAAC0gI,GAAAA,CAAAA,CACb,GAAIA,GAAAA,CAAIG,gBAAgB,GAAK+oB,QAAAA,CAAS7nC,SAAS,CAAC8e,gBAAgB,CAAE,CAChE,GAAI++B,eAAgB,CAClB,GAAI,CAACl/B,GAAAA,CAAIm/B,WAAW,EAAIn/B,GAAIo/B,CAAAA,OAAO,EAAI,CAACp/B,GAAIo/B,CAAAA,OAAO,CAAC5J,QAAQ,CAAE,CAC5D,QACF,CACF,CACAx1B,GAAIuqB,CAAAA,aAAa,GACnB,CACF,CACF,CACF,CACA4N,QAAAA,CAASvgK,KAAK,GAChB,CACAynK,mBAAAA,EAAsB,CACpB,IAAI,CAACC,kBAAkB,CAAC34H,QAAQ,CAACs9G,mBAAoB,CAAA,IAAI,CAAChrH,MAAM,CAClE,EAAA,CACAsmI,UAAW3T,CAAAA,IAAI,CAAE,CACf,MAAMl4B,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,MAAMurC,aAAgBvrC,CAAAA,KAAAA,CAAMurC,aAAa,EAAI,IAAI,CAAChmI,MAAM,CAACwF,aAAa,CACtE,MAAMk1F,MAASi4B,CAAAA,IAAAA,CAAK8E,SAAS,CAC7B,MAAM8O,UAAa7rC,CAAAA,MAAAA,CAAO1kI,MAAM,CAChC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIwwK,CAAAA,UAAAA,CAAYxwK,CAAI,EAAA,CAAA,CACjC,MAAM+kI,KAAAA,CAAQJ,MAAM,CAAC3kI,CAAAA,CAAE,CACvB,MAAMulI,aAAgBR,CAAAA,KAAAA,CAAMQ,aAAa,CACzC,MAAMvlF,KAAQulF,CAAAA,aAAAA,CAActlI,MAAM,CAClC,IAAI,IAAIsmF,CAAI,CAAA,CAAA,CAAGA,EAAIvmC,KAAOumC,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAMkqF,QAAWlrC,CAAAA,aAAa,CAACh/C,CAAAA,CAAE,CACjCkqF,QAAS17B,CAAAA,gBAAgB,CAAG,KAAA,CAC5B,GAAIk7B,aAAAA,CAAe,CACjB7G,kBAAmBtoK,CAAAA,IAAI,CAAC2vK,QAAAA,EAC1B,CACA,GAAIA,QAASxgC,CAAAA,YAAY,CAAE,CACzBo5B,yBAAAA,CAA0BvoK,IAAI,CAAC2vK,QACjC,EAAA,CACF,CACF,CACA,GAAIR,aAAe,CAAA,CACjB,MAAMC,cAAAA,CAAiB,CAACxrC,KAAAA,CAAMurC,aAAa,EAAI,CAAC,IAAI,CAAChmI,MAAM,CAACwF,aAAa,CACzE,IAAI,CAACwgI,aAAa,CAAC7G,kBAAoB8G,CAAAA,cAAAA,CACvCxrC,CAAAA,KAAAA,CAAMurC,aAAa,CAAG,KACtB,CAAA,IAAI,CAAChmI,MAAM,CAACwF,aAAa,CAAG,KAC5Bi1F,CAAAA,KAAAA,CAAMo3B,cAAc,GACtB,CACA,IAAI,CAACuU,mBAAmB,EACxB,CAAA,IAAI,CAACjE,qBAAqB,CAAC/C,yBAAAA,CAC3BD,CAAAA,kBAAAA,CAAmBnpK,MAAM,CAAG,CAC5BopK,CAAAA,yBAAAA,CAA0BppK,MAAM,CAAG,CACnC,CAAA,MAAMuyJ,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAMke,UAAAA,CAAale,MAAOvyJ,CAAAA,MAAM,CAChC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI0wK,CAAAA,UAAAA,CAAY1wK,CAAI,EAAA,CAAA,CACjCwyJ,MAAM,CAACxyJ,CAAE,CAAA,CAACuwK,UAAU,GACtB,CACF,CACAP,yBAA0B,CACxB,IAAI,CAAC5S,iBAAiB,CAAChqH,MAAM,CAAC,IAAI,CAACklH,WAAW,CAAE,IAAI,CAAC5zB,KAAK,CAAC8hC,QAAQ,EACrE,CACAmK,sBAAAA,CAAuB/T,IAAI,CAAE,CAC3B,MAAM1kJ,GAAM0kJ,CAAAA,IAAAA,CAAK8E,SAAS,CAACzhK,MAAM,CACjC,MAAMykI,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,MAAMksC,aAAgBlsC,CAAAA,KAAAA,CAAMo3B,cAAc,CAC1C,IAAI,IAAI97J,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAM+kI,KAAQ63B,CAAAA,IAAAA,CAAK8E,SAAS,CAAC1hK,CAAAA,CAAE,CAC/B+kI,KAAM+2B,CAAAA,cAAc,CAAG8U,cACzB,CACAhU,IAAAA,CAAKiU,OAAO,GACd,CACAzlE,WAAAA,EAAc,CACZ,IAAI,CAAC0lE,qBAAqB,CAAG,KAC7B,CAAA,IAAI,CAACrL,uBAAuB,CAAC,IAAI,CAAC/gC,KAAK,CAACq4B,wBAAwB,CAChE,CAAA,IAAI,CAACgU,eAAe,CAACnoK,KAAK,GAC5B,CAlqBAb,WAAAA,CAAY6hC,cAAc,CAAE86F,KAAK,CAAC,CAChC,IAAI,CAACosC,qBAAqB,CAAG,KAC7B,CAAA,IAAI,CAACpC,uBAAuB,CAAG,IAAI37J,GACnC,CAAA,IAAI,CAACy/I,MAAM,CAAG,EACd,CAAA,IAAI,CAAC8F,WAAW,CAAG,EAAE,CACrB,IAAI,CAAC8W,qBAAqB,CAAG,IAAIhnK,GACjC,CAAA,IAAI,CAAC2oK,eAAe,CAAG,IAAI3oK,GAC3B,CAAA,IAAI,CAACkiK,SAAS,CAAG,IAAInW,SAAAA,CAAU,GAC/B,CAAA,CAAA,IAAI,CAACuV,cAAc,CAAG,IACtB,CAAA,IAAI,CAACz/H,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC86F,KAAK,CAAGA,KACb,CAAA,IAAI,CAACyjC,sBAAsB,CAAG,IAAIxC,sBAAAA,CAAuB/7H,cACzD,CAAA,CAAA,IAAI,CAACwzH,iBAAiB,CAAG,IAAI9G,iBAAkB1sH,CAAAA,cAAAA,CAC/C,CAAA,IAAI,CAACu7H,cAAc,CAAG,IAAInJ,cAC1B,CAAA,IAAI,CAACI,cAAc,CAAG,IAAIiF,eAAe,IAAI,CAAE,IAAI,CAACjE,iBAAiB,CACrE,CAAA,IAAI,CAACmM,oBAAoB,CAAG,IAAI5M,mBAAoB,CAAA,IAAI,CAAE,IAAI,CAACP,cAAc,CAC7E,CAAA,IAAI,CAACoN,0BAA0B,CAAG,IAAI5K,yBAA0B,CAAA,IAAI,CAAE,IAAI,CAACxC,cAAc,CACzF,CAAA,GAAI,IAAI,CAAC13B,KAAK,CAACq4B,wBAAwB,CAAE,CACvC,IAAI,CAAC0M,0BAA0B,CAAG,IAAIzB,yBAAAA,CAA0B,IAAI,CAAC/9H,MAAM,CAAE,IAAI,CAAE,IAAI,CAACmyH,cAAc,CAAE,IAAI,CAACmN,oBAAoB,CAAE,IAAI,CAACnM,iBAAiB,EAC3J,CACA,IAAI,CAACx9B,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACmxC,SAAS,CAAG,CACjB,CAAA,IAAI,CAACC,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,SAAS,CAAG,CACjB,CAAA,IAAI,CAACC,cAAc,CAAG,CACtB,CAAA,IAAI,CAACC,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACC,2BAA2B,CAAG,CACnC,CAAA,IAAI,CAACzN,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACyJ,cAAc,CAAG,CACtB,CAAA,IAAI,CAACxJ,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACG,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACsN,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACzB,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAAC0B,cAAc,CAAG,CACtB,CAAA,IAAI,CAACC,YAAY,CAAG,CACpB,CAAA,MAAMjqK,KAAQqiC,CAAAA,cAAAA,CAAeriC,KAC7B,CAAA,IAAI,CAAC+lK,aAAa,CAAG/lK,KAAAA,CAAM8iC,OAAO,CAAC,iBAAA,CACnC,CAAA,IAAI,CAACgkI,aAAa,CAAG9mK,KAAAA,CAAM8iC,OAAO,CAAC,cACnC,CAAA,CAAA,IAAI,CAACikI,cAAc,CAAG/mK,MAAM8iC,OAAO,CAAC,eACpC,CAAA,CAAA,IAAI,CAACwgI,SAAS,CAAGtjK,MAAM8iC,OAAO,CAAC,oBAC/B,CAAA,CAAA,IAAI,CAACmjI,OAAO,CAAG,IAAI3zJ,YAAa,CAAA,CAAA,CAChC,CAAA,IAAI,CAAC4zJ,SAAS,CAAGlmK,KAAAA,CAAM8iC,OAAO,CAAC,eAC/B,CAAA,CAAA,IAAI,CAACsgI,MAAM,CAAGpjK,MAAM8iC,OAAO,CAAC,mBAC5B,CAAA,CAAA,IAAI,CAACugI,YAAY,CAAGrjK,MAAM8iC,OAAO,CAAC,yBAClC,CAAA,CAAA,IAAI,CAACygI,MAAM,CAAGvjK,MAAM8iC,OAAO,CAAC,aAC5B,CAAA,CAAA,IAAI,CAAC0gI,OAAO,CAAGxjK,KAAM8iC,CAAAA,OAAO,CAAC,cAAA,CAC7B,CAAA,IAAI,CAAC2gI,UAAU,CAAGzjK,KAAM8iC,CAAAA,OAAO,CAAC,uBAAA,CAChC,CAAA,IAAI,CAAC4gI,OAAO,CAAG1jK,KAAM8iC,CAAAA,OAAO,CAAC,iBAAA,CAC7B,CAAA,IAAI,CAAC6gI,QAAQ,CAAG3jK,KAAM8iC,CAAAA,OAAO,CAAC,UAAA,CAC9B,CAAA,IAAI,CAAC8gI,UAAU,CAAG5jK,KAAAA,CAAM8iC,OAAO,CAAC,aAChC,CAAA,CAAA,IAAI,CAAC+gI,SAAS,CAAG7jK,KAAAA,CAAM8iC,OAAO,CAAC,YAC/B,CAAA,CAAA,IAAI,CAACghI,YAAY,CAAG,IAAIxxJ,YAAAA,CAAa,CACrC,CAAA,CAAA,IAAI,CAACyxJ,cAAc,CAAG/jK,KAAAA,CAAM8iC,OAAO,CAAC,eACpC,CAAA,CAAA,IAAI,CAACwjI,WAAW,CAAGtmK,KAAM8iC,CAAAA,OAAO,CAAC,YAAA,CAAA,CACjC,IAAI,CAACwjI,WAAW,CAACl2H,QAAQ,CAAC,CAAA,CAC1B,CAAA,IAAI,CAAC0yH,sBAAsB,CAAG,CAC9B,CAAA,IAAI,CAACE,kBAAkB,CAAG,IAAIpoJ,IAC9B,CAAA,IAAI,CAACsoJ,mBAAmB,CAAG,IAAI5wJ,YAAAA,CAAa,CAC5C,CAAA,CAAA,IAAI,CAAC6wJ,iBAAiB,CAAGnjK,KAAM8iC,CAAAA,OAAO,CAAC,iBAAA,CACvC,CAAA,IAAI,CAACimI,kBAAkB,CAAG/oK,KAAM8iC,CAAAA,OAAO,CAAC,gBAAA,CACxC,CAAA,IAAI,CAAC8hI,WAAW,CAAG5kK,KAAAA,CAAM8iC,OAAO,CAAC,YACjC,CAAA,IAAI,CAAC6hI,YAAY,CAAG3kK,KAAAA,CAAM8iC,OAAO,CAAC,oBAClC,CAAA,CAAA,IAAI,CAACkhI,UAAU,CAAGhkK,KAAM8iC,CAAAA,OAAO,CAAC,UAChC,CAAA,CAAA,IAAI,CAAC0hI,gCAAgC,CAAGxkK,KAAM8iC,CAAAA,OAAO,CAAC,gCACtD,CAAA,CAAA,IAAI,CAAC0hI,gCAAgC,CAACp0H,QAAQ,CAAC,CAAA,CAC/C,CAAA,IAAI,CAACo1H,gBAAgB,CAAGxlK,KAAM8iC,CAAAA,OAAO,CAAC,kBAAA,CACtC,CAAA,IAAI,CAAC4iI,cAAc,CAAG1lK,KAAAA,CAAM8iC,OAAO,CAAC,iBACpC,CAAA,IAAI,CAAC8iI,cAAc,CAAG5lK,KAAAA,CAAM8iC,OAAO,CAAC,kBACpC,CAAA,CAAA,IAAI,CAAConI,SAAS,CAAG,IAAIjd,SACrB,CAAA,IAAI,CAACkd,iBAAiB,CAAGnqK,KAAM8iC,CAAAA,OAAO,CAAC,cAAA,EACzC,CA4lBF,CAEA,MAAMsnI,YAAAA,CAgBJxoI,OAAU,EAAA,CACR,IAAI,CAACm7H,cAAc,CAAC33J,OAAO,CAAEohK,EAC3BA,EAAAA,CAAAA,EAAAA,CAAGx7H,oBAAoB,CAACpJ,OAAO,EAC/B4kI,CAAAA,EAAAA,CAAG5kI,OAAO,GACZ,CACA,CAAA,CAAA,IAAI,CAACm7H,cAAc,CAACrkK,MAAM,CAAG,EAC/B,CACA2xK,WAAAA,CAAY3+B,MAAM,CAAElO,KAAK,CAAE,CACzB,IAAI,CAAC7rC,UAAU,CAAG+5C,MAAAA,EAAQ0M,kBAAoB5a,KAAM4a,CAAAA,gBAAgB,CACpE,IAAI,CAAC9rF,UAAU,CAAGo/E,QAAQ6M,gBAAoB/a,EAAAA,KAAAA,CAAM+a,gBACpD,CAAA,IAAI,CAAC1rF,YAAY,CAAG6+E,MAAQgN,EAAAA,kBAAAA,EAAsBlb,KAAMkb,CAAAA,mBAAkB,CAzB5El4I,WAAa,EAAA,CACX,IAAI,CAACkrI,MAAM,CAAG,IACd,CAAA,IAAI,CAAClO,KAAK,CAAG,IACb,CAAA,IAAI,CAACyM,WAAW,CAAG,KACnB,CAAA,IAAI,CAAC/yF,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC2nH,aAAa,CAAG,IACrB,CAAA,IAAI,CAACltE,UAAU,CAAG,KAClB,CAAA,IAAI,CAACrlC,UAAU,CAAG,KAClB,CAAA,IAAI,CAACO,YAAY,CAAG,KACpB,CAAA,IAAI,CAACy9G,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACC,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,aAAa,CAAG,KACrB,CAAA,IAAI,CAACzN,cAAc,CAAG,EAAE,CACxB,IAAI,CAAC0N,eAAe,CAAG,MACzB,CAaF,CAEA,MAAMC,iBAAAA,SAA0BrnE,UAO9B,CAAA,IAAIsnE,eAAkB,EAAA,CACpB,OAAO,IAAI,CAAChM,aAAa,CAACjmK,MAAM,CAAG,CACrC,CACAkyK,gBAAgB1L,YAAY,CAAE,CAC5B,IAAI,CAACP,aAAa,CAACplK,IAAI,CAAC2lK,YAAAA,EAC1B,CACA2L,QAAAA,CAAS/C,eAAe,CAAEtqC,KAAK,CAAEyM,WAAW,CAAE6gC,UAAAA,CAAa,IAAI,CAAE,CAC/D,MAAMlM,EAAK,CAAA,IAAIwL,YACfxL,CAAAA,EAAG1nH,CAAAA,YAAY,CAAG,IAAI,CAACA,YAAY,CACnC0nH,EAAAA,CAAGlzB,MAAM,CAAGo8B,eACZlJ,CAAAA,EAAGphC,CAAAA,KAAK,CAAGA,KACXohC,CAAAA,EAAAA,CAAG30B,WAAW,CAAGA,WACjB,CAAA,GAAI6gC,WAAY,CACd,MAAMC,OAAU,CAAA,IAAI,CAACpM,aAAa,CAACjmK,MAAM,GAAK,CAC9CkmK,CAAAA,EAAAA,CAAGyL,WAAW,CAACU,OAAUjD,CAAAA,eAAAA,CAAkBvnK,SAAWi9H,CAAAA,KAAAA,EACxD,CACA,IAAI,CAACotC,eAAe,CAAChM,EACvB,EAAA,CACAoM,SAAUC,CAAAA,WAAW,CAAEnD,eAAe,CAAEoD,UAAU,CAAEC,gBAAgB,CAAEC,WAAW,CAAEC,sBAAyB,CAAA,IAAI,CAAE,CAChH,KAAM,CAAElR,SAAS,CAAEmR,YAAY,CAAE,CAAGL,WAAAA,CACpC,IAAItO,iBAAAA,CAAoBwO,gBACxB,CAAA,IAAI7sK,MAAQ4sK,UACZ,CAAA,MAAM5sK,KAAQ67J,CAAAA,SAAAA,CAAUzhK,MAAM,CAAC,CAC7B,MAAM8kI,KAAQ28B,CAAAA,SAAS,CAAC77J,KAAAA,CAAM,CAC9B,MAAMitK,aAAgBD,CAAAA,YAAY,CAAChtK,KAAM,CAAA,CACzC,MAAMktK,gBAAAA,CAAmB1D,eAAgBp8B,CAAAA,MAAM,CAAC+N,SAAS,CAAC14I,GAAG,CAACy8H,KAAM/6F,CAAAA,EAAE,CACtE,CAAA,GAAI+oI,gBAAkB,CAAA,CACpB,IAAI,CAACX,QAAQ,CAAC/C,eAAAA,CAAiBtqC,KAAO+tC,CAAAA,aAAAA,CAAe5O,iBACrDA,CAAAA,CAAAA,iBAAAA,CAAoB,MACtB,CACAr+J,KACA,EAAA,CAAA,GAAIk/H,KAAM/6F,CAAAA,EAAE,GAAK2oI,WAAAA,EAAeG,gBAAkBF,sBAAwB,CAAA,CACxE,KACF,CACF,CACA,OAAO/sK,KACT,CACAmtK,0BAA2B,CACzB,KAAM,CAAEtwB,QAAQ,CAAEwjB,aAAa,CAAE,CAAG,IAAI,CACxC,IAAI,IAAIlmK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkmK,aAAcjmK,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAMymK,YAAeP,CAAAA,aAAa,CAAClmK,CAAAA,CAAE,CACrC,MAAMizK,UAAAA,CAAaxM,YAAaxzB,CAAAA,MAAM,CACtC,MAAMA,MAASggC,CAAAA,UAAAA,CAAWhgC,MAAM,CAChC,MAAMigC,eAAkB,CAAA,IAAI,CAACxwB,QAAQ,CAAC0sB,qBAAqB,CAACrtK,GAAG,CAACkxI,MAChE,CAAA,CAAA,GAAIigC,eAAiB,CAAA,CACnB,IAAI,IAAIr0J,CAAI,CAAA,CAAA,CAAGA,CAAIq0J,CAAAA,eAAAA,CAAgBjzK,MAAM,CAAE4e,CAAI,EAAA,CAAA,CAC7C,MAAMmsI,KAAQkoB,CAAAA,eAAe,CAACr0J,CAAAA,CAAE,CAChC,GAAI6jI,QAASquB,CAAAA,eAAe,CAAChvK,GAAG,CAACipJ,KAAAA,CAAAA,GAAW/X,MAAQ,CAAA,CAClDyP,QAASquB,CAAAA,eAAe,CAACxoK,GAAG,CAACyiJ,KAAO/X,CAAAA,MAAAA,CAAAA,CACpC,MAAMgwB,UAAAA,CAAavgB,QAAS8mB,CAAAA,0BAA0B,CAAChJ,kBAAkB,CAACxV,KAAAA,CAAO/X,MACjF,CAAA,CAAA,GAAIgwB,UAAY,CAAA,CACd,IAAI,CAAC32D,YAAY,CAACxrG,IAAI,CAACmiK,UAAAA,EACzB,CACF,CACF,CACF,CACF,CACF,CACAkQ,YAAAA,EAAe,CACb,MAAM1M,YAAe,CAAA,IAAI,CAACP,aAAa,CAAC,CAAE,CAAA,CAC1C,GAAIO,YAAAA,CAAc,CAChB,MAAM4I,eAAkB5I,CAAAA,YAAAA,CAAaxzB,MAAM,CAC3C,MAAMA,MAAAA,CAASo8B,eAAgBp8B,CAAAA,MAAM,CACrC,MAAMr4C,iBAAAA,CAAoBq4C,MAAOr4C,CAAAA,iBAAiB,CAClD,IAAI,CAAC+Q,aAAa,CAAC/Q,iBAAqB6rE,EAAAA,YAAAA,CAAavtE,UAAU,CAAG+5C,MAAO/5C,CAAAA,UAAU,CAAGpxF,SAAAA,CAAAA,CACtF,IAAI,CAAC8jG,aAAa,CAAChR,iBAAAA,EAAqB6rE,YAAa5yG,CAAAA,UAAU,EAAI,CAAC,IAAI,CAACu/G,YAAY,CAAGngC,MAAOp/E,CAAAA,UAAU,CAAG/rD,SAAAA,CAAAA,CAC5G,IAAI,CAACgkG,eAAe,CAAClR,iBAAAA,EAAqB6rE,YAAaryG,CAAAA,YAAY,CAAG6+E,MAAAA,CAAO7+E,YAAY,CAAGtsD,SAAAA,EAC9F,CACF,CACAsjG,WAAc,EAAA,CACZ,KAAK,CAACA,cACN,IAAI,CAAC4nE,wBAAwB,EAAA,CAC7B,IAAI,CAACG,YAAY,GACnB,CACA7nE,MAAAA,EAAS,CACP,KAAM,CAAE46D,aAAa,CAAE,CAAG,IAAI,CAC9B,IAAI,IAAIlmK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkmK,aAAcjmK,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAMmmK,EAAKD,CAAAA,aAAa,CAAClmK,CAAAA,CAAE,CAC3B,GAAImmK,EAAAA,CAAG2L,cAAc,CAAE,CACrB,IAAI,CAACptC,KAAK,CAACx7H,IAAI,CAACg2H,eAAAA,CAAiBinC,EAAGlzB,CAAAA,MAAM,EAC5C,CACF,CACF,CACA1nC,OAAAA,EAAU,CACR,KAAM,CAAE8nE,gBAAgB,CAAEnN,aAAa,CAAE,CAAG,IAAI,CAChD,IAAI,IAAIlmK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkmK,cAAcjmK,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,MAAMmmK,EAAAA,CAAKD,aAAa,CAAClmK,CAAE,CAAA,CAC3B,MAAM+kI,KAAAA,CAAQohC,EAAGphC,CAAAA,KAAK,CACtB,GAAIsuC,iBAAiBC,SAAS,CAACvuC,KAAOohC,CAAAA,EAAAA,CAAG30B,WAAW,CAAA,CAAG,CACrD,IAAI,CAAC+hC,kBAAkB,CAACpN,EAAInmK,CAAAA,CAAAA,GAAM,CACpC,EAAA,CACF,CACF,CACAwrG,OAAQ,CACN,IAAI,IAAIxrG,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACkmK,aAAa,CAACjmK,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,MAAMmmK,EAAAA,CAAK,IAAI,CAACD,aAAa,CAAClmK,CAAAA,CAAE,CAChC,GAAImmK,EAAG4L,CAAAA,aAAa,CAAE,CACpB,IAAI,CAACrtC,KAAK,CAACx7H,IAAI,CAACi2H,gBAAAA,CAAkBgnC,GAAGlzB,MAAM,EAC7C,CACF,CACA,IAAI,CAAC3mC,YAAY,CAACrsG,MAAM,CAAG,EAC7B,CACAszK,kBAAmB9M,CAAAA,YAAY,CAAE+M,iBAAiB,CAAE,CAClD,KAAM,CAAE9wB,QAAQ,CAAEhe,KAAK,CAAE,CAAG,IAAI,CAChC,MAAMz6F,MAAAA,CAASy4G,QAASz4G,CAAAA,MAAM,CAC9B,KAAM,CAAE86F,KAAK,CAAEyM,WAAW,CAAEyB,MAAM,CAAE,CAAGwzB,YAAAA,CACvC,GAAIxzB,MAAAA,CAAQ,CACV,MAAMwgC,uBAA0BxgC,CAAAA,MAAAA,CAAO0J,eAAe,CACtD,MAAM+2B,mBAAsBzgC,CAAAA,MAAAA,CAAOx3D,WAAW,CAC9C,GAAI,IAAI,CAACkhE,eAAe,GAAK70I,SAAWmrI,CAAAA,MAAAA,CAAO0J,eAAe,CAAG,IAAI,CAACA,eAAe,CACrF,GAAI,IAAI,CAAClhE,WAAW,GAAK3zE,SAAWmrI,CAAAA,MAAAA,CAAOx3D,WAAW,CAAG,IAAI,CAACA,WAAW,CACzEipD,KAAMx7H,CAAAA,IAAI,CAACk2H,qBAAAA,CAAuB6T,OAAQlO,KAAOyM,CAAAA,WAAAA,CAAAA,CACjD,MAAM//H,OAAAA,CAAU,CACd20J,aAAAA,CAAeK,YAAaL,CAAAA,aAAa,CAC3C,CACA,MAAMz1B,UAAAA,CAAasC,MAAOA,CAAAA,MAAM,CAAClQ,cAAc,EAAEl9H,KAAS22H,EAAAA,cAAAA,CAC1D,GAAI,CAACg3C,iBAAqB,EAAA,CAACvgC,MAAOA,CAAAA,MAAM,CAACr4C,iBAAiB,CAAE,CAC1DnpF,OAAQynF,CAAAA,UAAU,CAAGutE,YAAAA,CAAavtE,UAAU,CAC5CznF,OAAQoiD,CAAAA,UAAU,CAAG4yG,YAAAA,CAAa5yG,UAClCpiD,CAAAA,OAAQ2iD,CAAAA,YAAY,CAAGqyG,YAAAA,CAAaryG,aACtC,CACA,MAAM3V,aAAegoH,YAAahoH,CAAAA,YAAY,EAAIxU,MAAAA,CAAOkZ,UAAU,CACnEu/F,QAASixB,CAAAA,kBAAkB,CAAC1gC,MAAAA,CAAOA,MAAM,CAAEx0F,YAAcsmF,CAAAA,KAAAA,CAAOyM,WAAab,CAAAA,UAAAA,CAAY81B,aAAanC,cAAc,CAAE7yJ,OACtHw4B,CAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CACvClM,CAAAA,MAAAA,CAAOmV,eAAe,CAAC,IAAM,CAAA,IAAA,CAAA,CAC7BnV,MAAOg0C,CAAAA,kBAAkB,CAAC,KAC1BymD,CAAAA,CAAAA,KAAAA,CAAMx7H,IAAI,CAACm2H,sBAAwB4T,CAAAA,MAAAA,CAAQlO,KAAOyM,CAAAA,WAAAA,CAAAA,CAClD,GAAI,IAAI,CAACmL,eAAe,GAAK70I,SAAAA,CAAWmrI,MAAO0J,CAAAA,eAAe,CAAG82B,uBACjE,CAAA,GAAI,IAAI,CAACh4F,WAAW,GAAK3zE,SAAWmrI,CAAAA,MAAAA,CAAOx3D,WAAW,CAAGi4F,oBAC3D,CACF,CAxIA3rK,WAAYkiC,CAAAA,MAAM,CAAEopI,gBAAgB,CAAE3uC,KAAK,CAAEge,QAAQ,CAAC,CACpD,KAAK,CAACz4G,MAAAA,CAAAA,CAAS,IAAI,CAACi8H,aAAa,CAAG,EAAE,CAAE,IAAI,CAACkN,YAAY,CAAG,KAC5D,CAAA,IAAI,CAACC,gBAAgB,CAAGA,gBACxB,CAAA,IAAI,CAAC3uC,KAAK,CAAGA,KACb,CAAA,IAAI,CAACge,QAAQ,CAAGA,SAClB,CAoIF,CAEA,MAAMkxB,wBAAAA,SAAiChpE,UAOrCW,CAAAA,OAAAA,EAAU,CACR,MAAMk7D,YAAe,CAAA,IAAI,CAACA,YAAY,CACtC,MAAMxzB,OAASwzB,YAAaxzB,CAAAA,MAAM,CAClCA,MAAAA,CAAO4gC,gBAAgB,GACzB,CAVA9rK,WAAAA,CAAYkiC,MAAM,CAAEy4G,QAAQ,CAAE+jB,YAAY,CAAC,CACzC,KAAK,CAACx8H,OACN,CAAA,IAAI,CAACy4G,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC+jB,YAAY,CAAGA,YACpB,CAAA,IAAI,CAACp6D,gBAAgB,CAAG,MAC1B,CAMF,CAEA,MAAMynE,SAAY,CAAA,CAChB,EAAE,CACF,EAAE,CACF,EAAE,CACH,CACD,MAAMC,UAAa,CAAA,IAAI1+J,MACvB,MAAM2+J,aAAAA,CAAgB,CACpB3H,SAAAA,CAAW,EAAE,CACb4H,eAAiB,CAAA,EAAE,CACnBC,aAAAA,CAAe,EAAE,CACjBC,gBAAkB,CAAA,EAAE,CACpBvrK,KAAAA,CAAO,WACL,IAAI,CAACyjK,SAAS,CAACpsK,MAAM,CAAG,CACxB,CAAA,IAAI,CAACg0K,eAAe,CAACh0K,MAAM,CAAG,CAC9B,CAAA,IAAI,CAACi0K,aAAa,CAACj0K,MAAM,CAAG,CAC5B,CAAA,IAAI,CAACk0K,gBAAgB,CAACl0K,MAAM,CAAG,EACjC,CACF,CACA,CAAA,SAASm0K,+BAA+B53B,UAAU,CAAA,CAChD,MAAM35F,OAAAA,CAAU,EAAE,CAClB,IAAI,IAAI7iD,CAAI,CAAA,CAAA,CAAGA,CAAIw8I,CAAAA,UAAAA,CAAY,EAAEx8I,CAAAA,CAAE,CACjC,MAAMV,EAAIC,IAAKud,CAAAA,IAAI,CAAC9c,CAAAA,CAAI,EAAOT,CAAAA,CAAAA,IAAAA,CAAKud,IAAI,CAAC0/H,UACzC35F,CAAAA,CAAAA,OAAAA,CAAQ/hD,IAAI,CAACxB,CACf,EAAA,CACA,OAAOujD,OACT,CACA,SAASwxH,gCAAAA,CAAiC73B,UAAU,CAAA,CAClD,MAAM35F,OAAAA,CAAU,EAAE,CAClB,IAAI,IAAI7iD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIw8I,UAAYx8I,CAAAA,CAAAA,EAAAA,CAAI,CACjC,MAAM00J,OAAS10J,CAAIw8I,CAAAA,UAAAA,CACnB,MAAMhhI,MAAAA,CAASjc,IAAKud,CAAAA,IAAI,CAAC43I,MAAAA,CAASA,MAClC7xG,CAAAA,CAAAA,OAAAA,CAAQ/hD,IAAI,CAAC0a,MACf,EAAA,CACA,OAAOqnC,OACT,CACA,MAAMyxH,eAAAA,SAAwBhL,QAqD5BngI,CAAAA,OAAAA,EAAU,CACR,KAAK,CAACA,OAAAA,GACR,CACAorI,oBAAAA,CAAqB7vC,KAAK,CAAE,CAC1B,MAAM8vC,cAAiB,CAAA,IAAI,CAACC,YAAY,CACxCV,UAAWp+J,CAAAA,MAAM,CAAC+uH,KAAAA,CAAM+vB,YAAY,CACpC+f,CAAAA,cAAc,CAAC,CAAA,CAAE,CAAGT,UAAAA,CAAWz0K,CAC/Bk1K,CAAAA,cAAc,CAAC,CAAE,CAAA,CAAGT,UAAWlgK,CAAAA,CAAC,CAChC2gK,cAAc,CAAC,CAAA,CAAE,CAAGT,UAAAA,CAAWlkK,CAAC,CAChC,GAAI60H,KAAAA,CAAM8mC,aAAa,CAAE,CACvB,IAAI,IAAIxrK,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxBw0K,cAAc,CAACx0K,CAAE,CAAA,EAAI0kI,KAAMgwC,CAAAA,iBAAgB,CAE/C,CACA,IAAI,CAACC,SAAS,CAACh9H,QAAQ,CAAC68H,gBACxB,IAAI,CAACI,iBAAiB,CAACj9H,QAAQ,CAAC+sF,KAAM8mC,CAAAA,aAAa,CAAG9mC,KAAMmwC,CAAAA,eAAe,CAAGnwC,KAAAA,CAAMowC,eAAe,CAAA,CACnG,IAAI,CAACC,uBAAuB,CAACp9H,QAAQ,CAAC+sF,KAAMswC,CAAAA,mBAAmB,CAACh7J,IAAI,EACtE,CACAi7J,aAAAA,CAAc1tK,KAAK,CAAEvH,CAAC,CAAE,CACtB,MAAMgrJ,MAAQ,CAAC,KAAK,EAAEhrJ,CAAAA,CAAE,CACxB,CAAA,IAAI,CAACk1K,YAAY,CAACl1K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,MAAM,CAAC,CACrD,CAAA,IAAI,CAACyU,QAAQ,CAACz/J,CAAAA,CAAE,CAAG,IAAI6Z,YAAa,CAAA,CAAA,CACpC,CAAA,IAAI,CAACs7J,UAAU,CAACn1K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,UAAU,CAAC,CACvD,CAAA,IAAI,CAACoqB,gBAAgB,CAACp1K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,UAAU,CAAC,CAC7D,CAAA,IAAI,CAACqqB,mBAAmB,CAACr1K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,aAAa,CAAC,CACnE,CAAA,IAAI,CAACsqB,mBAAmB,CAACt1K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,aAAa,CAAC,CACnE,CAAA,IAAI,CAACuqB,oBAAoB,CAACv1K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,gBAAgB,CAAC,CACvE,CAAA,IAAI,CAACwqB,uBAAuB,CAACx1K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,iBAAiB,CAAC,CAC3E,CAAA,IAAI,CAACyqB,aAAa,CAACz1K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,OAAO,CAAC,CACvD,CAAA,IAAI,CAAC0qB,QAAQ,CAAC11K,CAAE,CAAA,CAAG,IAAI6Z,YAAAA,CAAa,CACpC,CAAA,CAAA,IAAI,CAAC87J,UAAU,CAAC31K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,SAAS,CAAC,CACtD,CAAA,IAAI,CAAC4qB,UAAU,CAAC51K,CAAAA,CAAE,CAAG,IAAI6Z,YAAa,CAAA,CAAA,CACtC,CAAA,IAAI,CAACg8J,YAAY,CAAC71K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,UAAU,CAAC,CACzD,CAAA,IAAI,CAAC8qB,WAAW,CAAC91K,CAAAA,CAAE,CAAG,IAAI6Z,YAAa,CAAA,CAAA,CACvC,CAAA,IAAI,CAACk8J,aAAa,CAAC/1K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,WAAW,CAAC,CAC3D,CAAA,IAAI,CAACgrB,cAAc,CAACh2K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,eAAe,CAAC,CAChE,CAAA,IAAI,CAACirB,eAAe,CAACj2K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,MAAM,eAAe,CAAC,CACjE,CAAA,IAAI,CAACkrB,aAAa,CAACl2K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,OAAO,CAAC,CACvD,CAAA,IAAI,CAACmrB,gBAAgB,CAACn2K,CAAAA,CAAE,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,gBAAgB,CAAC,CACnE,CAAA,IAAI,CAACorB,mBAAmB,CAACp2K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,aAAa,CAAC,CACnE,CAAA,IAAI,CAACqrB,mBAAmB,CAACr2K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,aAAa,CAAC,CACnE,CAAA,IAAI,CAACsrB,mBAAmB,CAACt2K,CAAAA,CAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,aAAa,CAAC,CACnE,CAAA,IAAI,CAACurB,uBAAuB,CAACv2K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,iBAAiB,CAAC,CAC3E,CAAA,IAAI,CAACwrB,qBAAqB,CAACx2K,CAAE,CAAA,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,uBAAuB,CAAC,CAC/E,CAAA,IAAI,CAACyrB,wBAAwB,CAACz2K,EAAE,CAAGuH,KAAAA,CAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,uBAAuB,CAAC,CAClF,CAAA,IAAI,CAAC0rB,oBAAoB,CAAC12K,CAAAA,CAAE,CAAGuH,KAAM8iC,CAAAA,OAAO,CAAC,CAAC,EAAE2gH,KAAAA,CAAM,mBAAmB,CAAC,CAC1E,CAAA,IAAI,CAAC2rB,oBAAoB,CAAC32K,CAAE,CAAA,CAAGuH,MAAM8iC,OAAO,CAAC,CAAC,EAAE2gH,KAAM,CAAA,mBAAmB,CAAC,EAC5E,CACA4rB,sBAAuB90B,CAAAA,GAAG,CAAE+0B,GAAG,CAAEjpJ,GAAG,CAAEkpJ,MAAM,CAAE3xJ,GAAG,CAAE,CACjD,IAAI,CAACuwJ,QAAQ,CAACmB,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGC,MAAAA,CAAOziK,CAAC,CAAGuZ,GAAIvZ,CAAAA,CAAC,CAAG8Q,GAC3C,CAAA,IAAI,CAACuwJ,QAAQ,CAACmB,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGC,MAAO/6J,CAAAA,CAAC,CAAG6R,GAAAA,CAAI7R,CAAC,CAAGoJ,GAC3C,CAAA,IAAI,CAACuwJ,QAAQ,CAACmB,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGC,MAAAA,CAAO56J,CAAC,CAAG0R,GAAI1R,CAAAA,CAAC,CAAGiJ,GAAAA,CAC3C,IAAI,CAACwwJ,UAAU,CAACkB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC,IAAI,CAAC+9H,QAAQ,CAACmB,GAAI,CAAA,CAAA,CAChD,MAAME,MAAAA,CAASj1B,GAAIrgI,CAAAA,eAAe,CAAC,IAAIxF,IAAAA,CAAK,CAAC,EAAA,CAAK,CAAG,CAAA,CAAA,CAAA,CACrD,CAAA,IAAI,CAAC25J,UAAU,CAACiB,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGE,MAAAA,CAAO1iK,CAAC,CAAG8Q,GACrC,CAAA,IAAI,CAACywJ,UAAU,CAACiB,GAAAA,CAAI,CAAC,CAAE,CAAA,CAAGE,MAAOh7J,CAAAA,CAAC,CAAGoJ,GACrC,CAAA,IAAI,CAACywJ,UAAU,CAACiB,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGE,MAAO76J,CAAAA,CAAC,CAAGiJ,GAAAA,CACrC,IAAI,CAAC0wJ,YAAY,CAACgB,GAAI,CAAA,CAACl/H,QAAQ,CAAC,IAAI,CAACi+H,UAAU,CAACiB,GAAAA,CAAI,CACpD,CAAA,MAAMG,QAAUl1B,GAAIrgI,CAAAA,eAAe,CAAC,IAAIxF,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,EAAA,CAAA,CACnD,CAAA,IAAI,CAAC65J,WAAW,CAACe,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGG,OAAQ3iK,CAAAA,CAAC,CAAG8Q,GACvC,CAAA,IAAI,CAAC2wJ,WAAW,CAACe,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGG,OAAQj7J,CAAAA,CAAC,CAAGoJ,GACvC,CAAA,IAAI,CAAC2wJ,WAAW,CAACe,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGG,OAAQ96J,CAAAA,CAAC,CAAGiJ,GAAAA,CACvC,IAAI,CAAC4wJ,aAAa,CAACc,GAAI,CAAA,CAACl/H,QAAQ,CAAC,IAAI,CAACm+H,WAAW,CAACe,IAAI,EACxD,CACAI,oBAAqBC,CAAAA,IAAI,CAAEtjI,IAAI,CAAEq/F,MAAM,CAAE,CACvC,IAAI4jC,GAAM,CAAA,CAAA,CACV,MAAMtvK,KAAAA,CAAQ,IAAI,CAAC0iC,MAAM,CAAC1iC,KAAK,CAC/B,IAAI,IAAIvH,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIk3K,IAAKj3K,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClC,GAAI,EAAEk3K,IAAI,CAACl3K,CAAAA,CAAE,CAAC4zC,IAAI,CAAGA,IAAG,CAAI,CAAA,SAC5B,MAAMujI,WAAAA,CAAcD,IAAI,CAACl3K,CAAE,CAAA,CAC3B,MAAM8hJ,GAAAA,CAAMq1B,YAAYh2B,KAAK,CAACxZ,iBAAiB,EAAA,CAC/C,GAAI,CAAC,IAAI,CAACutC,YAAY,CAAC2B,GAAI,CAAA,CAAE,CAC3B,IAAI,CAAC5B,aAAa,CAAC1tK,KAAOsvK,CAAAA,GAAAA,EAC5B,CACA,IAAI,CAAC3B,YAAY,CAAC2B,GAAAA,CAAI,CAACl/H,QAAQ,CAACw/H,WAAYC,CAAAA,YAAY,CACxDt1B,CAAAA,GAAAA,CAAInjI,IAAI,CAACw4J,YAAYxiB,UAAU,CAAA,CAAE7+I,SAAS,CAAC,CAAC,CAAA,CAAA,CAC5CqhK,WAAYxiB,CAAAA,UAAU,CAACv0J,SAAS,EAChC,CAAA,IAAI,CAACq/J,QAAQ,CAACoX,IAAI,CAAC,CAAA,CAAE,CAAGM,WAAAA,CAAYxiB,UAAU,CAACtgJ,CAC/C,CAAA,IAAI,CAACorJ,QAAQ,CAACoX,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGM,WAAYxiB,CAAAA,UAAU,CAAC54I,CAAC,CAChD,IAAI,CAAC0jJ,QAAQ,CAACoX,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGM,WAAYxiB,CAAAA,UAAU,CAACz4I,CAAC,CAChD,IAAI,CAACi5J,UAAU,CAAC0B,GAAI,CAAA,CAACl/H,QAAQ,CAAC,IAAI,CAAC8nH,QAAQ,CAACoX,GAAAA,CAAI,CAChD,CAAA,GAAIM,YAAYjpB,KAAK,GAAKn4B,mBAAqB,CAAA,CAC7C,IAAI,CAAC6gD,sBAAsB,CAAC90B,GAAK+0B,CAAAA,GAAAA,CAAKM,WAAYxiB,CAAAA,UAAU,CAAE1hB,MAAAA,CAAOkO,KAAK,CAAC72B,WAAW,EAAI2oB,CAAAA,MAAAA,CAAOoN,OAAO,EAC1G,CACA,GAAI82B,WAAYhpB,CAAAA,WAAW,CAAE,CAC3B,MAAMI,eAAkB4oB,CAAAA,WAAAA,CAAY3oB,aAAa,CAACvb,MAAQ,CAAA,CAAA,CAAA,CAC1D,MAAM+b,MAASmoB,CAAAA,WAAAA,CAAYloB,qBAAqB,CAACV,eACjD,CAAA,CAAA,IAAI,CAAC6mB,gBAAgB,CAACyB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC42G,eAAAA,CAAgBiJ,YAAY,CAAA,CAChE,IAAI,CAAC6d,mBAAmB,CAACwB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC42G,eAAAA,CAAgBE,YAAY,CAACz0I,IAAI,CACxE,CAAA,IAAI,CAACw8J,qBAAqB,CAACK,GAAAA,CAAI,CAACl/H,QAAQ,CAACw/H,WAAYxU,CAAAA,oBAAoB,CACzE,CAAA,IAAI,CAAC8T,wBAAwB,CAACI,GAAAA,CAAI,CAACl/H,QAAQ,CAACw/H,WAAAA,CAAY/X,uBAAuB,CAAA,CAC/E,IAAI,CAACsX,oBAAoB,CAACG,GAAAA,CAAI,CAACl/H,QAAQ,CAACw/H,WAAAA,CAAYlY,WAAW,CAAA,CAC/D,IAAI,CAAC0X,oBAAoB,CAACE,GAAI,CAAA,CAACl/H,QAAQ,CAAC,CAAA,CAAIw/H,WAAYE,CAAAA,YAAY,CACpE,CAAA,IAAI,CAAC9B,oBAAoB,CAACsB,GAAAA,CAAI,CAACl/H,QAAQ,CAACw/H,WAAAA,CAAYG,eAAe,CAAA,CACnE,IAAI,CAACf,uBAAuB,CAACM,GAAAA,CAAI,CAACl/H,QAAQ,CAACw/H,WAAAA,CAAYI,iBAAiB,CACxE,CAAA,MAAMC,QAAWjpB,CAAAA,eAAAA,CAAgBiO,YAAY,CAAC/9G,YAAY,CAC1D,GAAI+4H,QAAU,CAAA,CACZ,IAAI,CAAChC,uBAAuB,CAACqB,GAAI,CAAA,CAACl/H,QAAQ,CAACw/H,WAAYM,CAAAA,YAAY,CAAGlpB,eAAAA,CAAgBiO,YAAY,CAAC/9G,YAAY,CAAC94B,KAAK,CAAG4oI,eAAAA,CAAgB2R,sBAAsB,EAChK,CACA,MAAMmL,YAAe8L,CAAAA,WAAAA,CAAYO,mBACjCrM,CAAAA,YAAAA,CAAaprK,MAAM,CAAG,CACtBorK,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAG,CAClBA,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAG9c,eAAAA,CAAgBiO,YAAY,CAAClc,QAC/C+qB,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAG9c,eAAgBiO,CAAAA,YAAY,CAACtb,SAAS,CACxDmqB,YAAY,CAAC,CAAA,CAAE,CAAG,CAAA,CAClB,IAAI,CAACiL,mBAAmB,CAACO,GAAAA,CAAI,CAACl/H,QAAQ,CAAC0zH,YAAAA,CAAAA,CACvC,MAAM94J,MAAAA,CAAS4kK,WAAYQ,CAAAA,mBAAmB,CAC9CplK,MAAOtS,CAAAA,MAAM,CAAG,CAChBsS,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAG4kK,WAAY7hB,CAAAA,iBAAiB,CACzC/iJ,MAAM,CAAC,CAAE,CAAA,CAAGy8I,MAAOK,CAAAA,UAAU,CAC7B98I,MAAM,CAAC,CAAA,CAAE,CAAGy8I,MAAAA,CAAOG,IACnB58I,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAG,CAAA,CACZ,IAAI,CAAC+iK,mBAAmB,CAACuB,IAAI,CAACl/H,QAAQ,CAACplC,MAAAA,EACzC,CACAskK,GAAAA,GACF,CACA,OAAOA,GACT,CACAe,qBAAAA,CAAsB91B,GAAG,CAAE+0B,GAAG,CAAE,CAC9B,MAAME,OAASj1B,GAAIrgI,CAAAA,eAAe,CAAC,IAAIxF,IAAK,CAAA,CAAC,EAAK,CAAA,CAAA,CAAG,CACrD,CAAA,CAAA,CAAA,IAAI,CAAC25J,UAAU,CAACiB,GAAI,CAAA,CAAC,EAAE,CAAGE,MAAAA,CAAO1iK,CACjC,CAAA,IAAI,CAACuhK,UAAU,CAACiB,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGE,MAAOh7J,CAAAA,CAAC,CAClC,IAAI,CAAC65J,UAAU,CAACiB,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGE,MAAAA,CAAO76J,CAAC,CAClC,IAAI,CAAC25J,YAAY,CAACgB,GAAI,CAAA,CAACl/H,QAAQ,CAAC,IAAI,CAACi+H,UAAU,CAACiB,GAAAA,CAAI,CACpD,CAAA,MAAMG,QAAUl1B,GAAIrgI,CAAAA,eAAe,CAAC,IAAIxF,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,EAAA,CAAA,CACnD,CAAA,IAAI,CAAC65J,WAAW,CAACe,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGG,OAAQ3iK,CAAAA,CAAC,CACpC,IAAI,CAACyhK,WAAW,CAACe,IAAI,CAAC,CAAA,CAAE,CAAGG,OAAAA,CAAQj7J,CACnC,CAAA,IAAI,CAAC+5J,WAAW,CAACe,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGG,OAAAA,CAAQ96J,CAAC,CACpC,IAAI,CAAC65J,aAAa,CAACc,GAAAA,CAAI,CAACl/H,QAAQ,CAAC,IAAI,CAACm+H,WAAW,CAACe,GAAAA,CAAI,EACxD,CACAgB,kBAAkBtwK,KAAK,CAAEuwK,IAAI,CAAEjB,GAAG,CAAE,CAClC,MAAM/0B,IAAMg2B,IAAK32B,CAAAA,KAAK,CAACxZ,iBAAiB,EACxC,CAAA,GAAI,CAAC,IAAI,CAACutC,YAAY,CAAC2B,GAAI,CAAA,CAAE,CAC3B,IAAI,CAAC5B,aAAa,CAAC1tK,KAAAA,CAAOsvK,GAC5B,EAAA,CACA,IAAI,CAACpB,aAAa,CAACoB,IAAI,CAACl/H,QAAQ,CAACmgI,IAAAA,CAAKhpB,cAAc,CAAA,CACpD,IAAI,CAAComB,YAAY,CAAC2B,GAAI,CAAA,CAACl/H,QAAQ,CAACmgI,IAAKV,CAAAA,YAAY,EACjDt1B,GAAI/6H,CAAAA,cAAc,CAAC+wJ,IAAAA,CAAKllD,SAAS,CACjC,CAAA,IAAI,CAAC8iD,QAAQ,CAACmB,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGiB,IAAAA,CAAKllD,SAAS,CAACv+G,CAAC,CACxC,IAAI,CAACqhK,QAAQ,CAACmB,IAAI,CAAC,CAAA,CAAE,CAAGiB,IAAAA,CAAKllD,SAAS,CAAC72G,CACvC,CAAA,IAAI,CAAC25J,QAAQ,CAACmB,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGiB,IAAKllD,CAAAA,SAAS,CAAC12G,CAAC,CACxC,IAAI,CAACy5J,UAAU,CAACkB,GAAI,CAAA,CAACl/H,QAAQ,CAAC,IAAI,CAAC+9H,QAAQ,CAACmB,GAAI,CAAA,CAAA,CAChD,GAAIiB,IAAAA,CAAK5pB,KAAK,GAAKn4B,mBAAqB,CAAA,CACtC,IAAI,CAAC6hD,qBAAqB,CAAC91B,GAAAA,CAAK+0B,GAClC,EAAA,CACA,GAAIiB,IAAAA,CAAK3pB,WAAW,CAAE,CACpB,MAAMI,eAAkBupB,CAAAA,IAAAA,CAAKtpB,aAAa,CAAC,KAAM,CACjD,CAAA,CAAA,IAAI,CAAC4mB,gBAAgB,CAACyB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC42G,eAAgBiJ,CAAAA,YAAY,CAChE,CAAA,MAAMxI,MAAS8oB,CAAAA,IAAAA,CAAK7oB,qBAAqB,CAACV,iBAC1C,MAAMh8I,MAAAA,CAASulK,IAAKH,CAAAA,mBAAmB,CACvCplK,MAAOtS,CAAAA,MAAM,CAAG,CAChBsS,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAGulK,IAAAA,CAAKxiB,iBAAiB,CAClC/iJ,MAAM,CAAC,CAAE,CAAA,CAAGy8I,MAAOK,CAAAA,UAAU,CAC7B98I,MAAM,CAAC,CAAA,CAAE,CAAGy8I,MAAAA,CAAOG,IACnB58I,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAG,CAAMulK,CAAAA,IAAAA,CAAKhpB,cAAc,CACrC,IAAI,CAACwmB,mBAAmB,CAACuB,GAAI,CAAA,CAACl/H,QAAQ,CAACplC,QACvC,IAAI,CAACgjK,oBAAoB,CAACsB,GAAI,CAAA,CAACl/H,QAAQ,CAACmgI,KAAKR,eAAe,CAAA,CAC5D,MAAMS,cAAAA,CAAiBD,IAAKL,CAAAA,YAAY,CAAGlpB,eAAAA,CAAgBiO,YAAY,CAAC/9G,YAAY,CAAC94B,KAAK,CAC1F,IAAI,CAAC6vJ,uBAAuB,CAACqB,GAAAA,CAAI,CAACl/H,QAAQ,CAACogI,cAAAA,CAAAA,CAC3C,MAAM1M,YAAAA,CAAeyM,KAAKJ,mBAC1BrM,CAAAA,YAAAA,CAAaprK,MAAM,CAAG,CACtBorK,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAG,CAClBA,CAAAA,YAAY,CAAC,EAAE,CAAG9c,eAAAA,CAAgBiO,YAAY,CAAClc,QAC/C+qB,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAG9c,eAAAA,CAAgBiO,YAAY,CAACtb,SAC/CmqB,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAG,CAClB,CAAA,IAAI,CAACiL,mBAAmB,CAACO,GAAI,CAAA,CAACl/H,QAAQ,CAAC0zH,YACzC,EAAA,CACA,GAAIyM,IAAAA,CAAK/pB,OAAO,CAAE,CAChB,IAAI,CAACmoB,aAAa,CAACW,GAAI,CAAA,CAACl/H,QAAQ,CAACmgI,IAAK/pB,CAAAA,OAAO,CAC7C,CAAA,IAAI,CAACsnB,mBAAmB,CAACwB,GAAI,CAAA,CAACl/H,QAAQ,CAACmqG,GAAI9nI,CAAAA,IAAI,CAC/C,CAAA,IAAI,CAACm8J,gBAAgB,CAACU,GAAI,CAAA,CAACl/H,QAAQ,CAACmgI,IAAKE,CAAAA,eAAe,EAC1D,CACF,CACAC,iBAAkB1wK,CAAAA,KAAK,CAAE+lJ,IAAI,CAAEupB,GAAG,CAAE,CAClC,MAAM/0B,GAAAA,CAAMwL,IAAKnM,CAAAA,KAAK,CAACxZ,iBAAiB,GACxC,GAAI,CAAC,IAAI,CAACutC,YAAY,CAAC2B,GAAI,CAAA,CAAE,CAC3B,IAAI,CAAC5B,aAAa,CAAC1tK,KAAOsvK,CAAAA,GAAAA,EAC5B,CACA,IAAI,CAACb,cAAc,CAACa,GAAI,CAAA,CAACl/H,QAAQ,CAAC21G,IAAK4qB,CAAAA,kBAAkB,CACzD,CAAA,IAAI,CAACjC,eAAe,CAACY,GAAAA,CAAI,CAACl/H,QAAQ,CAAC21G,IAAK6qB,CAAAA,kBAAkB,CAC1D,CAAA,IAAI,CAAC1C,aAAa,CAACoB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC21G,IAAAA,CAAKwB,cAAc,CAAA,CACpD,IAAI,CAAComB,YAAY,CAAC2B,GAAAA,CAAI,CAACl/H,QAAQ,CAAC21G,IAAAA,CAAK8pB,YAAY,CAAA,CACjDt1B,GAAI/6H,CAAAA,cAAc,CAACumI,IAAAA,CAAK16B,SAAS,CACjC,CAAA,IAAI,CAAC8iD,QAAQ,CAACmB,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGvpB,IAAK16B,CAAAA,SAAS,CAACv+G,CACvC,CAAA,IAAI,CAACqhK,QAAQ,CAACmB,GAAAA,CAAI,CAAC,CAAE,CAAA,CAAGvpB,IAAK16B,CAAAA,SAAS,CAAC72G,CAAC,CACxC,IAAI,CAAC25J,QAAQ,CAACmB,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGvpB,KAAK16B,SAAS,CAAC12G,CAAC,CACxC,IAAI,CAACy5J,UAAU,CAACkB,IAAI,CAACl/H,QAAQ,CAAC,IAAI,CAAC+9H,QAAQ,CAACmB,GAAAA,CAAI,EAChD,GAAIvpB,IAAAA,CAAKY,KAAK,GAAKn4B,mBAAqB,CAAA,CACtC,IAAI,CAAC6hD,qBAAqB,CAAC91B,GAAK+0B,CAAAA,GAAAA,EAClC,CACA/0B,GAAAA,CAAInjI,IAAI,CAAC2uI,KAAKqH,UAAU,CAAA,CAAE7+I,SAAS,CAAC,CAAC,CAAA,CAAA,CACrCw3I,IAAKqH,CAAAA,UAAU,CAACv0J,SAAS,EACzB,CAAA,IAAI,CAACq/J,QAAQ,CAACoX,GAAAA,CAAI,CAAC,CAAE,CAAA,CAAGvpB,IAAKqH,CAAAA,UAAU,CAACtgJ,CAAC,CACzC,IAAI,CAACorJ,QAAQ,CAACoX,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGvpB,KAAKqH,UAAU,CAAC54I,CACxC,CAAA,IAAI,CAAC0jJ,QAAQ,CAACoX,GAAAA,CAAI,CAAC,CAAA,CAAE,CAAGvpB,IAAAA,CAAKqH,UAAU,CAACz4I,CAAC,CACzC,IAAI,CAACi5J,UAAU,CAAC0B,GAAAA,CAAI,CAACl/H,QAAQ,CAAC,IAAI,CAAC8nH,QAAQ,CAACoX,GAAAA,CAAI,CAChD,CAAA,GAAIvpB,KAAKa,WAAW,CAAE,CACpB,MAAMI,eAAkBjB,CAAAA,IAAAA,CAAKkB,aAAa,CAAC,KAAM,CACjD,CAAA,CAAA,IAAI,CAAC4mB,gBAAgB,CAACyB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC42G,eAAgBiJ,CAAAA,YAAY,CAChE,CAAA,IAAI,CAAC6d,mBAAmB,CAACwB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC42G,eAAAA,CAAgBE,YAAY,CAACz0I,IAAI,CAAA,CACxE,MAAMg1I,MAAS1B,CAAAA,IAAAA,CAAK2B,qBAAqB,CAACV,eAC1C,CAAA,CAAA,MAAMh8I,MAAS+6I,CAAAA,IAAAA,CAAKqqB,mBACpBplK,CAAAA,MAAAA,CAAOtS,MAAM,CAAG,CAChBsS,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAG+6I,IAAAA,CAAKgI,iBACjB/iJ,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAGy8I,MAAAA,CAAOK,UACnB98I,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAGy8I,MAAOG,CAAAA,IAAI,CACvB58I,MAAM,CAAC,EAAE,CAAG,CAAA,CAAM+6I,IAAKwB,CAAAA,cAAc,CACrC,IAAI,CAACwmB,mBAAmB,CAACuB,GAAI,CAAA,CAACl/H,QAAQ,CAACplC,MACvC,CAAA,CAAA,IAAI,CAACgjK,oBAAoB,CAACsB,GAAAA,CAAI,CAACl/H,QAAQ,CAAC21G,IAAAA,CAAKgqB,eAAe,CAAA,CAC5D,MAAMS,cAAiBzqB,CAAAA,IAAAA,CAAKmqB,YAAY,CAAGlpB,eAAgBiO,CAAAA,YAAY,CAAC/9G,YAAY,CAAC94B,KAAK,CAC1F,MAAMjD,GAAM6rI,CAAAA,eAAAA,CAAgBiO,YAAY,CAAC/b,IAAI,CAAGlhJ,IAAAA,CAAKgU,EAAE,CAAG,GAC1D,CAAA,MAAM6kK,QAAW,CAAA,CAAA,CAAM74K,IAAKujB,CAAAA,GAAG,CAACJ,GAAAA,CAAM,CACtC,CAAA,CAAA,IAAI,CAAC8yJ,uBAAuB,CAACqB,GAAI,CAAA,CAACl/H,QAAQ,CAACogI,cAAiBK,CAAAA,QAAAA,CAAAA,CAC5D,MAAM/M,YAAAA,CAAe/d,KAAKoqB,mBAC1BrM,CAAAA,YAAAA,CAAaprK,MAAM,CAAG,CACtBorK,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAG,CAClBA,CAAAA,YAAY,CAAC,CAAA,CAAE,CAAG9c,eAAAA,CAAgBiO,YAAY,CAAClc,QAC/C+qB,CAAAA,YAAY,CAAC,CAAE,CAAA,CAAG9c,eAAgBiO,CAAAA,YAAY,CAACtb,SAAS,CACxDmqB,YAAY,CAAC,CAAA,CAAE,CAAG,CAAA,CAClB,IAAI,CAACiL,mBAAmB,CAACO,IAAI,CAACl/H,QAAQ,CAAC0zH,YAAAA,EACzC,CACA,GAAI/d,IAAKS,CAAAA,OAAO,CAAE,CAChB,GAAI,CAACT,IAAKa,CAAAA,WAAW,CAAE,CACrB,MAAM9C,YAAeT,CAAAA,WAAAA,CAAYG,oBAAoB,CAACuC,IACtD,CAAA,CAAA,IAAI,CAAC+nB,mBAAmB,CAACwB,GAAI,CAAA,CAACl/H,QAAQ,CAAC0zG,YAAarxI,CAAAA,IAAI,EAC1D,CACA,IAAI,CAACk8J,aAAa,CAACW,GAAAA,CAAI,CAACl/H,QAAQ,CAAC21G,IAAAA,CAAKS,OAAO,CAAA,CAC7C,IAAI,CAACooB,gBAAgB,CAACU,GAAI,CAAA,CAACl/H,QAAQ,CAAC21G,IAAAA,CAAK0qB,eAAe,CAAA,CACxD,GAAI1qB,IAAAA,CAAK+qB,gBAAgB,CAAE,CACzB/qB,IAAAA,CAAKgrB,uBAAuB,CAAC,CAAE,CAAA,CAAGhrB,IAAK+qB,CAAAA,gBAAgB,CAAChkK,CACxDi5I,CAAAA,IAAAA,CAAKgrB,uBAAuB,CAAC,CAAE,CAAA,CAAGhrB,IAAK+qB,CAAAA,gBAAgB,CAACt8J,CAAC,CACzDuxI,IAAKgrB,CAAAA,uBAAuB,CAAC,CAAE,CAAA,CAAGhrB,IAAK+qB,CAAAA,gBAAgB,CAACn8J,CAAC,CACzDoxI,KAAKgrB,uBAAuB,CAAC,CAAE,CAAA,CAAGhrB,IAAK+qB,CAAAA,gBAAgB,CAAC94J,CAAC,CACzD,IAAI,CAAC62J,mBAAmB,CAACS,GAAI,CAAA,CAACl/H,QAAQ,CAAC21G,IAAKgrB,CAAAA,uBAAuB,CACnEhrB,CAAAA,IAAKirB,CAAAA,oBAAoB,CAAC,CAAA,CAAE,CAAGjrB,IAAKkrB,CAAAA,aAAa,CAACnkK,CAAC,CACnDi5I,IAAKirB,CAAAA,oBAAoB,CAAC,CAAA,CAAE,CAAGjrB,IAAAA,CAAKkrB,aAAa,CAACz8J,CAAC,CACnD,IAAI,CAACs6J,mBAAmB,CAACQ,GAAAA,CAAI,CAACl/H,QAAQ,CAAC21G,IAAAA,CAAKirB,oBAAoB,EAClE,CACF,CACF,CACAE,mBAAAA,CAAoB5nC,YAAY,CAAEj9F,IAAI,CAAE8kI,aAAa,CAAE,CACrD,IAAI7B,GAAAA,CAAM6B,aACV,CAAA,MAAMnxK,MAAQ,IAAI,CAAC0iC,MAAM,CAAC1iC,KAAK,CAC/B,MAAMoxK,KAAAA,CAAQ9nC,YAAY,CAACpb,cAAAA,CAAe,CAC1C,MAAMmjD,QAAWD,CAAAA,KAAAA,CAAM14K,MAAM,CAC7B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI44K,CAAAA,QAAAA,CAAU54K,CAAI,EAAA,CAAA,CAC/B,MAAM83K,IAAOa,CAAAA,KAAK,CAAC34K,CAAAA,CAAE,CACrB,GAAI,EAAE83K,IAAKlkI,CAAAA,IAAI,CAAGA,IAAG,CAAI,CAAA,SACzB,IAAI,CAACikI,iBAAiB,CAACtwK,KAAAA,CAAOuwK,IAAMjB,CAAAA,GAAAA,CACpCA,CAAAA,GAAAA,GACF,CACA,MAAMgC,IAAOhoC,CAAAA,YAAY,CAAClb,cAAAA,CAAe,CACzC,MAAMmjD,OAAUD,CAAAA,IAAAA,CAAK54K,MAAM,CAC3B,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI84K,OAAS94K,CAAAA,CAAAA,EAAAA,CAAI,CAC9B,MAAMstJ,IAAAA,CAAOurB,IAAI,CAAC74K,CAAE,CAAA,CACpB,GAAI,EAAEstJ,IAAK15G,CAAAA,IAAI,CAAGA,IAAG,CAAI,CAAA,SACzB,IAAI,CAACqkI,iBAAiB,CAAC1wK,KAAO+lJ,CAAAA,IAAAA,CAAMupB,GACpCA,CAAAA,CAAAA,GACF,GAAA,CACF,CACAkC,6BAA8B9lC,CAAAA,MAAM,CAAEx0F,YAAY,CAAE4tH,SAAS,CAAEx7B,YAAY,CAAE9L,KAAK,CAAE/B,IAAI,CAAE,CACxF,MAAMohB,SAAYnR,CAAAA,MAAAA,CAAOmR,SAAS,EAAI,IAAI,CAAC1f,KAAK,CAACmY,GAAG,CACpD,MAAMwH,YAAepR,CAAAA,MAAAA,CAAOoR,YAC5BA,CAAAA,YAAAA,CAAaxH,GAAG,CAAGuH,UAAU3sI,IAC7B4sI,CAAAA,YAAAA,CAAazH,gBAAgB,CAAGn+F,YAAcgI,EAAAA,iBAAAA,CAAkB,IAAM,KACtE,CAAA,MAAMuyH,OAAU,CAAA,CAAClN,QAAUr7B,CAAAA,cAAAA,CAAgByjC,aAAeC,CAAAA,gBAAAA,GAAAA,CACxDH,cAAc3H,SAAS,CAACvrK,IAAI,CAACgrK,QAC7BkI,CAAAA,CAAAA,aAAAA,CAAcC,eAAe,CAACnzK,IAAI,CAAC2vI,cACnCujC,CAAAA,CAAAA,aAAAA,CAAcE,aAAa,CAACpzK,IAAI,CAACozK,eACjCF,aAAcG,CAAAA,gBAAgB,CAACrzK,IAAI,CAACqzK,gBAAAA,EACtC,CACAH,CAAAA,aAAAA,CAAcprK,KAAK,EAAA,CACnB,MAAMqhC,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMy6F,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxB,MAAMq4B,wBAA2Br4B,CAAAA,KAAAA,CAAMq4B,wBAAwB,CAC/D,MAAMnsB,SAAAA,CAAY7L,KAAOk0C,EAAAA,YAAAA,CAAalc,wBAA6B,CAAA,EAAA,CAAA,CACnE,IAAImc,YAAe,CAAA,IAAA,CAAMC,WAAaC,CAAAA,aAAAA,CACtC,MAAM9M,cAAAA,CAAiBD,SAAUpsK,CAAAA,MAAM,CACvC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIssK,CAAAA,cAAAA,CAAgBtsK,CAAI,EAAA,CAAA,CACrC,MAAM8rK,QAAWO,CAAAA,SAAS,CAACrsK,CAAAA,CAAE,CAC7B,MAAM0yI,cAAiBo5B,CAAAA,QAAAA,CAASp5B,cAAc,CAC9C,GAAIA,cAAAA,EAAkBA,cAAe1yF,CAAAA,KAAK,EAAI,CAAA,CAAG,CAC/C,QACF,CACA8rH,QAAS73B,CAAAA,cAAc,CAAChqG,MAAAA,CAAAA,CACxB,MAAM44F,QAAAA,CAAWipC,QAASjpC,CAAAA,QAAQ,CAClC,MAAMuO,OAAU06B,CAAAA,QAAAA,CAAS/6B,WAAW,CACpC,MAAMsoC,SAAYvN,CAAAA,QAAAA,CAASl4H,IAAI,CAC/B,GAAIivF,QAAAA,EAAYA,QAAaq2C,GAAAA,YAAAA,EAAgB9nC,OAAY+nC,GAAAA,WAAAA,CAAa,CACpED,YAAAA,CAAe,KACjB,CACA,GAAIr2C,QAAAA,GAAaq2C,aAAc,CAC7B,IAAI,CAACI,iBAAiB,EACtBz2C,CAAAA,QAASk5B,CAAAA,MAAM,CAAGr3B,KAClB,CAAA,GAAI7B,QAASlwF,CAAAA,KAAK,CAAE,CAClBkwF,QAASsqB,CAAAA,cAAc,CAACljH,MAAQy6F,CAAAA,KAAAA,CAChC7B,CAAAA,QAAAA,CAASlwF,KAAK,CAAG,MACnB,CACF,CACA,MAAM89F,cAAiBq7B,CAAAA,QAAAA,CAASp7B,iBAAiB,CAAC1N,IAAM4N,CAAAA,SAAAA,CAAWlM,MAAO2f,YAAc,CAAA,IAAI,CAACzkB,iBAAiB,CAAE,IAAI,CAACC,mBAAmB,CAAEgR,YAAAA,CAAAA,CAC1ImoC,OAAQlN,CAAAA,QAAAA,CAAUr7B,cAAgB5N,CAAAA,QAAAA,GAAaq2C,YAAc,CAAA,CAACA,cAAgBG,SAAcD,GAAAA,aAAAA,CAAAA,CAC5FF,YAAer2C,CAAAA,QAAAA,CACfs2C,WAAc/nC,CAAAA,OAAAA,CACdgoC,aAAgBC,CAAAA,UAClB,CACA,OAAOrF,aACT,CACAuF,qBAAsBtmC,CAAAA,MAAM,CAAEumC,aAAa,CAAE3oC,YAAY,CAAE7N,IAAI,CAAEy2C,YAAY,CAAEl5B,SAAS,CAAE+jB,cAAc,CAAE,CACxG,MAAMr6H,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMy6F,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxB,MAAM6P,QAAW,CAAA,CAAA,EAAKvR,IACtB,CAAA,MAAMkgC,UAAa3iB,CAAAA,SAAAA,CAAY,CAAC,CAAA,CAAI,CACpC,CAAA,MAAMwc,yBAA2Br4B,KAAMq4B,CAAAA,wBAAwB,CAC/D,MAAM8M,QAAW52B,CAAAA,MAAAA,CAAO9pC,EAAE,EAAE2gE,SAAW72B,MAAO9pC,CAAAA,EAAE,CAAC4gE,KAAK,CAACx/J,IAAI,CAACtK,MAAM,CAAGgzI,MAAO9pC,CAAAA,EAAE,CAAC4gE,KAAK,CAACx/J,IAAI,CAAG,IAAA,CAC5F,MAAMmvK,kBAAAA,CAAqBF,aAAcnN,CAAAA,SAAS,CAACpsK,MAAM,CACzD,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI05K,CAAAA,kBAAAA,CAAoB15K,CAAI,EAAA,CAAA,CACzC,MAAM8rK,QAAAA,CAAW0N,cAAcnN,SAAS,CAACrsK,CAAE,CAAA,CAC3C,MAAM25K,WAAAA,CAAcH,aAActF,CAAAA,aAAa,CAACl0K,CAAE,CAAA,CAClD,MAAMm0K,gBAAAA,CAAmBqF,aAAcrF,CAAAA,gBAAgB,CAACn0K,CAAAA,CAAE,CAC1D,MAAMywI,cAAiB+oC,CAAAA,aAAAA,CAAcvF,eAAe,CAACj0K,CAAE,CAAA,CACvD,MAAM6iI,QAAWipC,CAAAA,QAAAA,CAASjpC,QAAQ,CAClC,MAAMw2C,SAAAA,CAAYvN,QAASl4H,CAAAA,IAAI,CAC/B,GAAI68F,cAAe7yF,CAAAA,MAAM,CAACsZ,MAAM,CAAE,SAClC,GAAIyiH,WAAa,CAAA,CACf,MAAM97F,YAAAA,CAAe,KACrB5zC,CAAAA,MAAAA,CAAOqnC,SAAS,CAACm/D,cAAe7yF,CAAAA,MAAM,CAAEigC,YAAAA,CAAAA,CACxCglD,QAASyR,CAAAA,aAAa,CAACrqG,MAAAA,CAAAA,CACvB,GAAIkqI,gBAAkB,CAAA,CACpB,MAAMuE,aAAAA,CAAgB,IAAI,CAACzB,oBAAoB,CAACpmC,YAAY,CAACrb,qBAAAA,CAAsB,CAAE6jD,SAAAA,CAAWpmC,MAChG,CAAA,CAAA,GAAI,CAAC8pB,wBAAAA,CAA0B,CAC7B,IAAI,CAAC0b,mBAAmB,CAAC5nC,YAAcwoC,CAAAA,SAAAA,CAAWX,aACpD,EAAA,CACF,CACA,IAAI,CAACvM,WAAW,CAACx0H,QAAQ,CAACkrF,QAAAA,CAASwQ,SAAS,CAC5CppG,CAAAA,MAAAA,CAAOsV,aAAa,CAACsjF,QAASnkF,CAAAA,UAAU,CACxCzU,CAAAA,MAAAA,CAAOwV,aAAa,CAACojF,QAASlkF,CAAAA,UAAU,CACxC1U,CAAAA,MAAAA,CAAOg0C,kBAAkB,CAAC4kD,SAASjqC,eAAe,EACpD,CACA,IAAI,CAACyqE,aAAa,CAACpwB,MAAAA,CAAOmN,UAAU,CAAE8iB,UAAY4I,CAAAA,QAAAA,CAAAA,CAClD,MAAMzsH,YAAAA,CAAeysH,QAASzsH,CAAAA,YAAY,EAAIwjF,QAASxjF,CAAAA,YAAY,CACnE,MAAMC,WAAcwsH,CAAAA,QAAAA,CAASxsH,WAAW,EAAIujF,SAASvjF,WAAW,CAChErV,MAAOmV,CAAAA,eAAe,CAACC,YAAAA,CAAcC,WACrCwsH,CAAAA,CAAAA,QAAAA,CAASx3B,aAAa,CAACrqG,MAAAA,CAAQsqG,QAC/BtqG,CAAAA,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,gBAAkBsN,CAAAA,CAAAA,QAAQ,CAACm0H,QAAAA,CAAS9hI,EAAE,CAAA,CAC3D,MAAM0/F,IAAAA,CAAOoiC,SAASpiC,IAAI,CAC1B,IAAI,CAAC65B,gBAAgB,CAACt5H,MAAQy/F,CAAAA,IAAAA,CAAAA,CAC9B,IAAI,CAAC85B,WAAW,CAACv5H,MAAQ6hI,CAAAA,QAAAA,CAAS75B,aAAa,CAAA,CAC/C,IAAI,CAACmxB,WAAW,CAACn5H,MAAAA,CAAQ6hI,QACzB,CAAA,CAAA,MAAMp5B,cAAiBo5B,CAAAA,QAAAA,CAASp5B,cAAc,CAC9C,GAAIA,cAAAA,CAAgB,CAClBzoG,MAAAA,CAAO2V,eAAe,CAAC8yF,eAAe7yF,YAAY,EACpD,CACA,IAAI,CAAC4jH,uBAAuB,CAACqI,QAAAA,CAAU,MACvC,IAAI,CAACpI,uBAAuB,CAACjzB,cAC7B,CAAA,CAAA,MAAMkzB,KAAQmI,CAAAA,QAAAA,CAASl+B,WAAW,CAClC,MAAMrtF,WAAcmpF,CAAAA,IAAAA,CAAKnpF,WAAW,CAACojH,KAAM,CAAA,CAC3C8V,YAAe3N,GAAAA,QAAAA,CAAU9rK,CACzB,CAAA,CAAA,MAAMk1I,YAAe42B,CAAAA,QAAAA,CAASj4B,eAAe,CAACZ,QAC9C,GAAI42B,QAAAA,CAAU,CACZ,IAAI,IAAIpqK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIoqK,SAAS5pK,MAAM,CAAER,CAAI,EAAA,CAAA,CACtC,MAAMqP,IAAAA,CAAO+6J,QAAQ,CAACpqK,EAAE,CACxBwqC,MAAAA,CAAOvkB,WAAW,CAAC5W,IAAKsrF,CAAAA,QAAQ,CAAC/lF,CAAC,CAAEvF,IAAAA,CAAKsrF,QAAQ,CAACr+E,CAAC,CAAEjN,IAAKsrF,CAAAA,QAAQ,CAACl+E,CAAC,CAAEpN,IAAKsrF,CAAAA,QAAQ,CAAC76E,CAAC,CACrF,CAAA,GAAI0qB,OAAO4Z,sBAAsB,CAAE,CACjC,MAAMmqH,aAAgB1J,CAAAA,cAAc,CAAC7kK,CAAAA,CAAE,CACvCwqC,MAAOknC,CAAAA,YAAY,CAAC/pC,cAAAA,CAAgB4mI,aACtC,EAAA,CAAA,KAAO,CACL,IAAI,CAACN,iBAAiB,CAAC5+J,IAAAA,CAAMrP,CAC/B,EAAA,CACA,MAAM0F,KAAAA,CAAQ1F,IAAM,CACpB,CAAA,MAAMihD,IAAOjhD,CAAAA,CAAAA,GAAMoqK,QAAS5pK,CAAAA,MAAM,CAAG,CAAA,CACrCgqC,MAAOoW,CAAAA,IAAI,CAACqpF,IAAAA,CAAKppF,SAAS,CAACqjH,KAAM,CAAA,CAAEpjH,YAAamyF,cAAgB1yF,EAAAA,KAAAA,CAAOk1F,YAAc/vI,CAAAA,KAAAA,CAAOu7C,IAC5F,CAAA,CAAA,IAAI,CAACk5H,iBAAiB,EAAA,CACtB,GAAI9N,QAAAA,CAASp5B,cAAc,CAAE,CAC3B,IAAI,CAACmxB,mBAAmB,GAC1B,CACF,CACF,CAAO,KAAA,CACL55H,MAAOoW,CAAAA,IAAI,CAACqpF,IAAKppF,CAAAA,SAAS,CAACqjH,KAAAA,CAAM,CAAEpjH,WAAAA,CAAamyF,cAAgB1yF,EAAAA,KAAAA,CAAOk1F,aACvE,CAAA,IAAI,CAAC0kC,iBAAiB,EACtB,CAAA,GAAI9N,QAASp5B,CAAAA,cAAc,CAAE,CAC3B,IAAI,CAACmxB,mBAAmB,GAC1B,CACF,CACA,GAAI7jK,CAAI05K,CAAAA,kBAAAA,CAAqB,CAAK,EAAA,CAACF,aAActF,CAAAA,aAAa,CAACl0K,CAAAA,CAAI,CAAE,CAAA,CAAE,CACrE6iI,QAAAA,CAASyR,aAAa,CAACrqG,MAAQ6hI,CAAAA,QAAAA,CAASliE,UAAU,EACpD,CACF,CACF,CACAiwE,aAAc5mC,CAAAA,MAAM,CAAEx0F,YAAY,CAAEq7H,YAAY,CAAEjpC,YAAY,CAAE7N,IAAI,CAAEy2C,YAAY,CAAE10C,KAAK,CAAEwb,SAAS,CAAE+jB,cAAc,CAAE,CACpH,MAAMkV,cAAgB,IAAI,CAACT,6BAA6B,CAAC9lC,MAAQx0F,CAAAA,YAAAA,CAAcq7H,YAAcjpC,CAAAA,YAAAA,CAAc9L,MAAO/B,IAClH,CAAA,CAAA,IAAI,CAACu2C,qBAAqB,CAACtmC,MAAAA,CAAQumC,aAAe3oC,CAAAA,YAAAA,CAAc7N,IAAMy2C,CAAAA,YAAAA,CAAcl5B,SAAW+jB,CAAAA,cAAAA,CAAAA,CAC/F0P,aAAcprK,CAAAA,KAAK,GACrB,CACA+qK,mBAAmB1gC,MAAM,CAAEx0F,YAAY,CAAEsmF,KAAK,CAAEyM,WAAW,CAAEb,UAAU,CAAE2zB,cAAc,CAAE7yJ,OAAU,CAAA,EAAE,CAAE,CACrG,KAAM,CAAEizH,KAAK,CAAEz6F,MAAM,CAAE,CAAG,IAAI,CAC9B,MAAM8yH,wBAA2Br4B,CAAAA,KAAAA,CAAMq4B,wBAAwB,CAC/D,IAAI,CAACwH,aAAa,CAACtxB,MAAAA,CAAQx0F,YAC3B,CAAA,CAAA,IAAIy0F,OAASw8B,CAAAA,WAAAA,CACb,GAAI3qC,KAAAA,CAAO,CACTA,KAAMg1C,CAAAA,WAAW,CAAC9mC,MAAAA,CAAQzB,WAC1B,CAAA,CAAA,MAAM+8B,eAAkBxpC,CAAAA,KAAAA,CAAMgrC,kBAAkB,CAAC98B,MAAAA,CAAAA,CACjDC,OAAU1B,CAAAA,WAAAA,CAAc+8B,eAAgB/8B,CAAAA,WAAW,CAAG+8B,eAAAA,CAAgBC,MAAM,CAC5E9pC,KAAMt6E,CAAAA,SAAS,CAAC4vH,gBAAgB,CAACj1C,KAAAA,CAAOmO,QAAS1B,WACjD,CAAA,CAAA,GAAIzM,KAAMk1C,CAAAA,iBAAiB,CAAE,CAC3B,IAAI,CAACxI,SAAS,CAACr+H,MAAM,CAACsxF,KAAAA,CAAM+vB,YAAY,CAAE1vB,KAAM+pC,CAAAA,OAAO,EACvD,IAAI,CAAC4C,iBAAiB,CAAC/5H,QAAQ,CAAC,IAAI,CAAC85H,SAAS,CAAC5nC,MAAM,EACvD,CACA6lC,WAAAA,CAAc3qC,KAAM2qC,CAAAA,YAAW,CAC1B,KAAA,CACLx8B,OAAUzhI,CAAAA,OAAAA,CAAQ8zH,aAAa,CAC/BmqC,WAAcj+J,CAAAA,OAAAA,CAAQi+J,WAAW,EAAIoE,UACvC,CACA,GAAI/W,wBAA0B,CAAA,CAC5B,MAAMqJ,aAAAA,CAAgB30J,QAAQ20J,aAAa,EAAI,IAAI,CAAC+B,sBAAsB,CAACpC,KAAK,CAChFK,aAAcxS,CAAAA,QAAQ,EACtB,CAAA,GAAI7uB,KAAO,CAAA,CACT,GAAI,CAAC,IAAI,CAAC+rC,qBAAqB,EAAIpsC,KAAAA,CAAM8hC,QAAQ,CAAC0T,UAAU,GAAKn1C,KAAM/6F,CAAAA,EAAE,CAAE,CACzE,IAAI,CAAC8mI,qBAAqB,CAAG,KAC/B,CACF,CACF,CACApsC,KAAAA,CAAMy1C,aAAa,CAAGlnC,MACtB,CAAA,MAAMmR,SAAYnR,CAAAA,MAAAA,CAAOmR,SAAS,EAAI,IAAI,CAAC1f,KAAK,CAACmY,GAAG,CACpD,IAAI,CAACu9B,eAAe,CAACh2B,SAAAA,CAAAA,CACrB,MAAMylB,QAAAA,CAAW,IAAI,CAACzF,iBAAiB,CAACnxB,MAAAA,CAAQx0F,YAChD,CAAA,CAAA,GAAIxU,MAAO4Z,CAAAA,sBAAsB,CAAE,CACjC,IAAI,CAACwgH,uBAAuB,CAACC,cAAAA,CAAgB,IAAI,CAAC1kC,iBAAiB,CAAE,IAAI,CAACC,mBAAmB,CAAEgqC,QACjG,EAAA,CACA,MAAM3wE,UAAaznF,CAAAA,OAAAA,CAAQynF,UAAU,EAAI,KACzC,CAAA,MAAMrlC,UAAapiD,CAAAA,OAAAA,CAAQoiD,UAAU,EAAI,KACzC,CAAA,MAAMO,YAAe3iD,CAAAA,OAAAA,CAAQ2iD,YAAY,EAAI,MAC7C,GAAI8kC,UAAAA,EAAcrlC,UAAcO,EAAAA,YAAAA,CAAc,CAC5C,IAAI,CAACxrD,KAAK,CAACqqI,MAAAA,CAAQ/5C,UAAYrlC,CAAAA,UAAAA,CAAYO,YAC7C,EAAA,CACA,MAAMmsF,SAAAA,CAAY,CAAC,EAAEtN,MAAOuN,CAAAA,UAAU,CAAG/hG,YAAAA,EAAc7O,KAAI,CAAA,CAC3D,MAAMyqI,gBAAmB,CAAA,IAAI,CAACT,iBAAiB,CAC/C,IAAI,CAACC,aAAa,CAAC5mC,MAAQx0F,CAAAA,YAAAA,CAAcy0F,OAASw8B,CAAAA,WAAAA,CAAa/+B,UAAY,CAAA,IAAA,CAAM5L,KAAOwb,CAAAA,SAAAA,CAAW+jB,cACnG,CAAA,CAAA,GAAIv/B,KAAO,CAAA,CACTA,KAAM60C,CAAAA,iBAAiB,EAAI,IAAI,CAACA,iBAAiB,CAAGS,iBACtD,CACF,CACAD,eAAAA,CAAgBh2B,SAAS,CAAE,CACzB,GAAIA,SAAU3sI,CAAAA,IAAI,GAAKg9G,QAAAA,CAAU,CAC/Bs/C,UAAAA,CAAWp+J,MAAM,CAACyuI,SAAAA,CAAUngG,KAAK,CAAA,CACjC,MAAMq2H,UAAAA,CAAa,IAAI,CAACC,QACxBD,CAAAA,UAAU,CAAC,CAAA,CAAE,CAAGvG,UAAAA,CAAWz0K,CAAC,CAC5Bg7K,UAAU,CAAC,CAAE,CAAA,CAAGvG,UAAWlgK,CAAAA,CAAC,CAC5BymK,UAAU,CAAC,CAAA,CAAE,CAAGvG,UAAAA,CAAWlkK,CAAC,CAC5B,IAAI,CAAC2qK,UAAU,CAAC7iI,QAAQ,CAAC2iI,UAAAA,CAAAA,CACzB,GAAIl2B,SAAAA,CAAU3sI,IAAI,GAAKi9G,UAAY,CAAA,CACjC,IAAI,CAAC+lD,UAAU,CAAC9iI,QAAQ,CAACysG,SAAAA,CAAU3yH,KAAK,CAAA,CACxC,IAAI,CAACipJ,QAAQ,CAAC/iI,QAAQ,CAACysG,SAAAA,CAAU1+I,GAAG,EACtC,CAAO,KAAA,CACL,IAAI,CAACi1K,YAAY,CAAChjI,QAAQ,CAACysG,SAAAA,CAAUw2B,OAAO,EAC9C,CACF,CACF,CACAC,iBAAAA,EAAoB,CAClB,MAAMn2C,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxB,IAAI,CAAC6vC,oBAAoB,CAAC7vC,KAC1B,CAAA,CAAA,MAAMz6F,MAAS,CAAA,IAAI,CAACA,MACpB,CAAA,IAAI,CAAC6wI,WAAW,CAAC,CAAA,CAAE,CAAG7wI,MAAOtkB,CAAAA,KAAK,CAClC,IAAI,CAACm1J,WAAW,CAAC,CAAE,CAAA,CAAG7wI,MAAOrkB,CAAAA,MAAM,CACnC,IAAI,CAACk1J,WAAW,CAAC,CAAA,CAAE,CAAG,CAAA,CAAI7wI,MAAOtkB,CAAAA,KAAK,CACtC,IAAI,CAACm1J,WAAW,CAAC,CAAE,CAAA,CAAG,CAAI7wI,CAAAA,MAAAA,CAAOrkB,MAAM,CACvC,IAAI,CAACm1J,YAAY,CAACpjI,QAAQ,CAAC,IAAI,CAACmjI,WAAW,CAC3C,CAAA,IAAI,CAACE,iBAAiB,CAACrjI,QAAQ,CAAC,IAAI,CAACsjI,eAAe,CAAA,CACpD,IAAI,CAACC,mBAAmB,CAACvjI,QAAQ,CAAC,IAAI,CAACwjI,iBAAiB,EAC1D,CACAC,eAAgBrd,CAAAA,UAAU,CAAEsV,gBAAgB,CAAE,CAC5C,MAAM3uC,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxBq5B,UAAAA,CAAWpwJ,KAAK,EAAA,CAChB,GAAI+2H,KAAAA,CAAMq4B,wBAAwB,CAAE,CAClC,KAAM,CAAE3O,cAAc,CAAEN,cAAc,CAAE,CAAGppB,KAAAA,CAAM8hC,QAAQ,CACzD,IAAI,CAACiD,0BAA0B,CAACr2H,MAAM,CAAC2qH,WAAY3P,cAAgBN,CAAAA,cAAAA,CAAgB,IAAI,CAAC0E,MAAM,CAAE,IAAI,CAAC8F,WAAW,CAAA,CAChHyF,UAAWC,CAAAA,aAAa,CAAC,IAAI,CAACyL,0BAA0B,EAC1D,CAAO,KAAA,CACL,IAAI,CAACF,oBAAoB,CAACzL,6BAA6B,CAACC,WAAY,IAAI,CAACzF,WAAW,EACtF,CACA,IAAIma,UAAa,CAAA,CAAA,CACjB,IAAI4I,QAAW,CAAA,IAAA,CACf,IAAI58H,YAAAA,CAAe,IACnB,CAAA,MAAMynH,aAAgBmN,CAAAA,gBAAAA,CAAiBiI,cAAc,CACrD,IAAI,IAAIt7K,CAAIyyK,CAAAA,UAAAA,CAAYzyK,CAAIkmK,CAAAA,aAAAA,CAAcjmK,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpD,MAAMymK,YAAeP,CAAAA,aAAa,CAAClmK,CAAAA,CAAE,CACrC,KAAM,CAAE+kI,KAAK,CAAEkO,MAAM,CAAE,CAAGwzB,aAC1B,GAAIA,YAAAA,CAAauL,eAAe,CAAE,CAChC/+B,MAAAA,CAAOA,MAAM,CAACiL,YAAY,CAACvxI,OAAO,CAAC,UAACs1C,EAAAA,CAClC87G,UAAWC,CAAAA,aAAa,CAAC/7G,UAC3B,EAAA,CAAA,EACF,CAAO,KAAA,CACL,MAAMs5H,YAAAA,CAAex2C,KAAM/6F,CAAAA,EAAE,GAAKorF,aAClC,CAAA,MAAMomD,UAAaD,CAAAA,YAAAA,GAAiBtoC,MAAAA,CAAOwoC,mBAAmB,EAAIxoC,OAAOyoC,mBAAkB,CAC3F,CAAA,GAAIL,QAAU,CAAA,CACZA,QAAW,CAAA,KAAA,CACX5I,UAAazyK,CAAAA,CAAAA,CACby+C,YAAegoH,CAAAA,YAAAA,CAAahoH,aAC9B,CACA,MAAMk9H,iBAAmBzV,aAAa,CAAClmK,CAAI,CAAA,CAAA,CAAE,CAC7C,MAAM47K,gBAAmBD,CAAAA,gBAAAA,CAAmB,CAACA,gBAAiB3J,CAAAA,eAAe,EAAI2J,gBAAAA,CAAiB52C,KAAK,CAAC/6F,EAAE,GAAKorF,cAAgB,KAC/H,CAAA,MAAMymD,mBAAsBD,CAAAA,gBAAAA,GAAqB3oC,MAAAA,CAAOwoC,mBAAmB,EAAIxoC,MAAOyoC,CAAAA,mBAAmB,CAAD,CACxG,MAAMI,kBAAAA,CAAqBH,gBAAmBA,CAAAA,gBAAAA,CAAiB7J,cAAc,EAAI,IAAI,CAAC1C,qBAAqB,CAAC9mK,GAAG,CAACqzK,gBAAAA,CAAiB1oC,MAAM,CAACA,MAAM,CAAI,CAAA,KAAA,CAClJ,GAAI,CAAC0oC,gBAAoBA,EAAAA,gBAAAA,CAAiBl9H,YAAY,GAAKA,YAAAA,EAAgBq9H,kBAAsBD,EAAAA,mBAAAA,EAAuBL,UAAY,CAAA,CAClI,MAAMO,WAAAA,CAAcR,YAAgB9I,EAAAA,UAAAA,GAAezyK,CACnD,CAAA,GAAI,CAAC+7K,WAAAA,CAAa,CAChB,IAAI,CAACC,iBAAiB,CAACje,UAAYsV,CAAAA,gBAAAA,CAAkB50H,YAAcg0H,CAAAA,UAAAA,CAAYzyK,CACjF,EAAA,CACA,GAAIu7K,YAAAA,CAAc,CAChB,GAAItoC,MAAOwoC,CAAAA,mBAAmB,CAAE,CAC9B,MAAMQ,aAAgBhpC,CAAAA,MAAAA,CAAOA,MAAM,CAAC+K,mBACpCi+B,CAAAA,aAAAA,CAAcrrI,MAAM,CAAGqiG,MAAOx0F,CAAAA,YAAY,CAC1Cs/G,UAAAA,CAAWC,aAAa,CAACie,eAC3B,CACA,GAAIhpC,MAAOyoC,CAAAA,mBAAmB,CAAE,CAC9B3d,UAAWC,CAAAA,aAAa,CAAC/qB,MAAOA,CAAAA,MAAM,CAACgL,mBAAmB,EAC5D,CACF,CACA,GAAIwoB,aAAaoL,kBAAkB,EAAI5+B,MAAQ4gC,EAAAA,gBAAAA,CAAkB,CAC/D,MAAM5xH,UAAa,CAAA,IAAI2xH,wBAAyB,CAAA,IAAI,CAAC3pI,MAAM,CAAE,IAAI,CAAEw8H,YAAAA,CAAAA,CACnE1I,WAAWC,aAAa,CAAC/7G,UAC3B,EAAA,CACAo5H,QAAW,CAAA,KACb,CACF,CACF,CACF,CACAW,iBAAkBje,CAAAA,UAAU,CAAEsV,gBAAgB,CAAE50H,YAAY,CAAEg0H,UAAU,CAAEyJ,QAAQ,CAAE,CAClF,MAAMj6H,UAAa,CAAA,IAAIgwH,iBAAkB,CAAA,IAAI,CAAChoI,MAAM,CAAEopI,gBAAAA,CAAkB,IAAI,CAAC3uC,KAAK,CAAE,IAAI,CACxFziF,CAAAA,UAAAA,CAAW7B,IAAI,CAAC3B,YAChB,CAAA,CAAA,MAAMynH,cAAgBmN,gBAAiBiI,CAAAA,cAAc,CACrD,IAAI,IAAIt7K,CAAAA,CAAIyyK,UAAYzyK,CAAAA,CAAAA,EAAKk8K,SAAUl8K,CAAI,EAAA,CAAA,CACzCiiD,UAAWkwH,CAAAA,eAAe,CAACjM,aAAa,CAAClmK,CAAAA,CAAE,EAC7C,CACA+9J,UAAWC,CAAAA,aAAa,CAAC/7G,UAAAA,EAC3B,CACA7O,MAAAA,CAAOwpH,IAAI,CAAE,CACX,IAAI,CAACxxD,WAAW,EAAA,CAChB,IAAI,CAACgxD,cAAc,CAAChxD,WAAW,EAAA,CAC/B,IAAI,CAACs5B,KAAK,CAACy3C,cAAc,EACzB,CAAA,IAAI,CAACxL,sBAAsB,CAAC/T,IAAAA,CAAAA,CAC5B,IAAI,CAACrK,aAAa,CAACqK,IACnB,CAAA,CAAA,IAAI,CAAC2T,UAAU,CAAC3T,IAAAA,CAAAA,CAChB,IAAI,CAACie,iBAAiB,EACtB,CAAA,IAAI,CAACnR,cAAc,EAAEt2H,OAAOwpH,IAC5B,CAAA,CAAA,IAAI,CAAC+S,eAAe,CAAC/S,IAAAA,CAAAA,CACrB,IAAI,CAACgQ,SAAS,CAAC,IAAI,CAAC8B,uBAAuB,EAC7C,CAtlBA3mK,WAAY6hC,CAAAA,cAAc,CAAE86F,KAAK,CAAC,CAChC,KAAK,CAAC96F,cAAgB86F,CAAAA,KAAAA,CAAAA,CACtB,MAAMz6F,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,IAAI,CAAC2vI,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACN,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAAC8C,aAAa,CAAG,CACrB,CAAA,IAAI,CAACC,YAAY,CAAG,CACpB,CAAA,IAAI,CAACC,SAAS,CAAG,EACjB,MAAM/0K,KAAAA,CAAQ0iC,MAAO1iC,CAAAA,KAAK,CAC1B,IAAI,CAACizK,UAAU,CAAGjzK,KAAAA,CAAM8iC,OAAO,CAAC,WAChC,CAAA,CAAA,IAAI,CAACowI,UAAU,CAAGlzK,KAAAA,CAAM8iC,OAAO,CAAC,WAChC,CAAA,CAAA,IAAI,CAACqwI,QAAQ,CAAGnzK,KAAM8iC,CAAAA,OAAO,CAAC,SAAA,CAC9B,CAAA,IAAI,CAACswI,YAAY,CAAGpzK,KAAM8iC,CAAAA,OAAO,CAAC,aAAA,CAClC,CAAA,IAAI,CAACsqI,SAAS,CAAGptK,KAAAA,CAAM8iC,OAAO,CAAC,qBAC/B,CAAA,CAAA,IAAI,CAACuqI,iBAAiB,CAAGrtK,KAAAA,CAAM8iC,OAAO,CAAC,iBACvC,CAAA,CAAA,IAAI,CAAC0qI,uBAAuB,CAAGxtK,KAAM8iC,CAAAA,OAAO,CAAC,uBAAA,CAC7C,CAAA,IAAI,CAAC2wI,iBAAiB,CAAGzzK,KAAM8iC,CAAAA,OAAO,CAAC,oBAAA,CACvC,CAAA,IAAI,CAAC6wI,mBAAmB,CAAG3zK,KAAM8iC,CAAAA,OAAO,CAAC,sBAAA,CACzC,CAAA,IAAI,CAAC6qI,YAAY,CAAG,EACpB,CAAA,IAAI,CAACzV,QAAQ,CAAG,EAAE,CAClB,IAAI,CAAC0V,UAAU,CAAG,EAAE,CACpB,IAAI,CAACC,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACC,mBAAmB,CAAG,EAAE,CAC7B,IAAI,CAACC,mBAAmB,CAAG,EAAE,CAC7B,IAAI,CAACC,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACE,aAAa,CAAG,EACrB,CAAA,IAAI,CAACC,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACC,UAAU,CAAG,EAAE,CACpB,IAAI,CAACC,UAAU,CAAG,EAAE,CACpB,IAAI,CAACC,YAAY,CAAG,EACpB,CAAA,IAAI,CAACC,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,aAAa,CAAG,EAAE,CACvB,IAAI,CAACC,cAAc,CAAG,EAAE,CACxB,IAAI,CAACC,eAAe,CAAG,EACvB,CAAA,IAAI,CAACC,aAAa,CAAG,EAAE,CACvB,IAAI,CAACC,gBAAgB,CAAG,EAAE,CAC1B,IAAI,CAACC,mBAAmB,CAAG,EAAE,CAC7B,IAAI,CAACC,mBAAmB,CAAG,EAAE,CAC7B,IAAI,CAACb,uBAAuB,CAAG,EAC/B,CAAA,IAAI,CAACc,mBAAmB,CAAG,EAAE,CAC7B,IAAI,CAACC,uBAAuB,CAAG,EAAE,CACjC,IAAI,CAACC,qBAAqB,CAAG,EAAE,CAC/B,IAAI,CAACC,wBAAwB,CAAG,EAAE,CAClC,IAAI,CAACC,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACC,oBAAoB,CAAG,EAAE,CAC9B,IAAI,CAACoE,YAAY,CAAGxzK,KAAAA,CAAM8iC,OAAO,CAAC,aAClC,CAAA,CAAA,IAAI,CAACywI,WAAW,CAAG,IAAIjhK,YAAa,CAAA,CAAA,CACpC,CAAA,IAAI,CAAC0gK,QAAQ,CAAG,IAAI1gK,YAAAA,CAAa,CACjC,CAAA,CAAA,IAAI,CAAC46J,YAAY,CAAG,IAAI56J,YAAAA,CAAa,CACrC,CAAA,CAAA,IAAI,CAACohK,eAAe,CAAG7G,8BAAAA,CAA+B,EACtD,CAAA,CAAA,IAAI,CAAC+G,iBAAiB,CAAG9G,gCAAiC,CAAA,EAAA,EAC5D,CAoiBF,CAEA,IAAIkI,YAAAA,CAAe,CACnB,CAAA,MAAMC,UAAY,EAAE,CACpB,MAAMC,cAAAA,CAAiB,IAAI1pK,GAAAA,CAC3B,SAAS2pK,UAAAA,CAAW5a,SAAS,CAAEC,SAAS,CAAA,CACtC,OAAOD,SAAAA,CAAUhtB,SAAS,CAAGitB,UAAUjtB,SACzC,CACA,SAAS6nC,gBAAiB7a,CAAAA,SAAS,CAAEC,SAAS,EAC5C,MAAMC,IAAAA,CAAOF,SAAUvvB,CAAAA,eAAe,CACtC,MAAM0vB,IAAOF,CAAAA,SAAAA,CAAUxvB,eAAe,CACtC,GAAIyvB,IAASC,GAAAA,IAAAA,CAAM,CACjB,OAAOF,SAAUr4B,CAAAA,IAAI,CAAC1/F,EAAE,CAAG83H,SAAAA,CAAUp4B,IAAI,CAAC1/F,EAC5C,CACA,OAAOi4H,IAAAA,CAAOD,IAChB,CACA,SAAS4a,eAAAA,CAAgB9a,SAAS,CAAEC,SAAS,CAAA,CAC3C,OAAOA,SAAAA,CAAU1sB,eAAe,CAAGysB,SAAUzsB,CAAAA,eAAe,CAE9D,SAASwnC,eAAgB/a,CAAAA,SAAS,CAAEC,SAAS,CAC3C,CAAA,OAAOD,SAAUzsB,CAAAA,eAAe,CAAG0sB,SAAAA,CAAU1sB,eAC/C,CACA,MAAMynC,cAAgB,CACpB,IAAA,CACAJ,UACAC,CAAAA,gBAAAA,CACAC,eACAC,CAAAA,eAAAA,CACD,CACD,MAAME,gBACJh1K,WAAa,EAAA,CACX,IAAI,CAACymK,MAAM,CAAG,EACd,CAAA,IAAI,CAACh9B,WAAW,CAAG,GACrB,CACF,CACA,MAAMwrC,KAAAA,CAoDJ,IAAInqK,OAAAA,CAAQ0B,GAAG,CAAE,CACf,GAAIA,MAAQ,IAAI,CAACs/D,QAAQ,CAAE,CACzB,IAAI,CAACopG,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACrpG,QAAQ,CAAGt/D,GAChB,CAAA,GAAIA,GAAK,CAAA,CACP,IAAI,CAAC4oK,gBAAgB,EAAA,CACrB,GAAI,IAAI,CAAC1xE,QAAQ,CAAE,IAAI,CAACA,QAAQ,GAClC,CAAO,KAAA,CACL,IAAI,CAAC2xE,gBAAgB,EACrB,CAAA,GAAI,IAAI,CAAC1xE,SAAS,CAAE,IAAI,CAACA,SAAS,GACpC,CACF,CACF,CACA,IAAI74F,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACghE,QACd,CACA,IAAI8rE,gBAAiBprI,CAAAA,GAAG,CAAE,CACxB,IAAI,CAACqrI,iBAAiB,CAAGrrI,GACzB,CAAA,IAAI,CAAC0oK,iBAAiB,CAAG,KAC3B,CACA,IAAIt9B,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACC,iBAAiB,CAE/B,IAAIE,gBAAAA,CAAiBvrI,GAAG,CAAE,CACxB,IAAI,CAACwrI,iBAAiB,CAAGxrI,GACzB,CAAA,IAAI,CAAC0oK,iBAAiB,CAAG,KAC3B,CACA,IAAIn9B,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACC,iBAAiB,CAE/B,IAAIE,kBAAAA,CAAmB1rI,GAAG,CAAE,CAC1B,IAAI,CAAC2rI,mBAAmB,CAAG3rI,GAC3B,CAAA,IAAI,CAAC0oK,iBAAiB,CAAG,KAC3B,CACA,IAAIh9B,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACC,mBAAmB,CAEjC,IAAImmB,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACgX,mBAAmB,CAACn4K,IAAI,CAAG,CACzC,CACA,IAAIwhK,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAAC2W,mBAAmB,CAEjCF,gBAAmB,EAAA,CACjB,GAAI,IAAI,CAACG,WAAW,GAAK,CAAA,CAAG,CAC1B,IAAI,CAACzpG,QAAQ,CAAG,IAChB,CAAA,GAAI,IAAI,CAAC43B,QAAQ,CAAE,IAAI,CAACA,QAAQ,GAClC,CACA,IAAI,CAAC6xE,WAAW,GAClB,CACAF,gBAAmB,EAAA,CACjB,GAAI,IAAI,CAACE,WAAW,GAAK,CAAA,CAAG,CAC1B,IAAI,CAACzpG,QAAQ,CAAG,KAAA,CAChB,GAAI,IAAI,CAAC63B,SAAS,CAAE,IAAI,CAACA,SAAS,GACpC,CAAO,KAAA,GAAI,IAAI,CAAC4xE,WAAW,GAAK,CAAG,CAAA,CACjC,MACF,CACA,IAAI,CAACA,WAAW,GAClB,CACAC,kBAAmBC,CAAAA,SAAS,CAAE,CAC5B,GAAI,CAAC,IAAI,CAACC,gBAAgB,CAAC75K,QAAQ,CAAC45K,SAAAA,CAAAA,CAAY,CAC9C,IAAI,CAACC,gBAAgB,CAAC38K,IAAI,CAAC08K,SAC3B,CAAA,CAAA,IAAI,CAACN,qBAAqB,CAAG,KAC/B,CACF,CACAQ,qBAAsBF,CAAAA,SAAS,CAAE,CAC/B,MAAM33K,KAAAA,CAAQ,IAAI,CAAC43K,gBAAgB,CAACx0K,OAAO,CAACu0K,SAC5C,CAAA,CAAA,GAAI33K,KAAS,EAAA,CAAA,CAAG,CACd,IAAI,CAAC43K,gBAAgB,CAAC30K,MAAM,CAACjD,KAAO,CAAA,CAAA,CACpC,CAAA,IAAI,CAACq3K,qBAAqB,CAAG,KAC/B,CACF,CACAj4C,iBAAiBM,aAAa,CAAEo4C,iBAAiB,CAAE,CACjD,MAAMC,iBAAoB,CAAA,IAAI,CAACr4C,aAAa,CAC5C,MAAMs4C,oBAAuB,CAAA,IAAI,CAACC,gBAAgB,CAClD,IAAI,IAAI99K,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,IAAI,CAC3C,MAAM+1I,EAAKxQ,CAAAA,aAAa,CAACvlI,CAAAA,CAAE,CAC3B,GAAI,CAAC69K,oBAAqBv1K,CAAAA,GAAG,CAACytI,EAAAA,CAAAA,CAAK,CACjC6nC,iBAAAA,CAAkB98K,IAAI,CAACi1I,EACvB8nC,CAAAA,CAAAA,oBAAAA,CAAqBvtK,GAAG,CAACylI,EACzB0mC,CAAAA,CAAAA,cAAAA,CAAensK,GAAG,CAACylI,GAAGlT,QAAQ,EAChC,CACF,CACA,GAAI,CAAC86C,iBAAmB,CAAA,CACtB,IAAI,CAACI,gBAAgB,CAACx4C,aAAAA,EACxB,CACA,GAAIk3C,cAAev3K,CAAAA,IAAI,CAAG,CAAG,CAAA,CAC3B,MAAM84K,cAAAA,CAAiB,IAAI,CAACliB,cAAc,CAC1C2gB,cAAe9vK,CAAAA,OAAO,CAAEqkI,GACtB,EAAA,CAAA,GAAIgtC,cAAkB,EAAA,CAAA,EAAKhtC,IAAI8qB,cAAc,GAAKkiB,cAAgB,CAAA,CAChE,GAAIhtC,GAAAA,CAAIG,gBAAgB,GAAK+oB,SAAS7nC,SAAS,CAAC8e,gBAAgB,CAAE,CAChEH,GAAAA,CAAIuqB,aAAa,GACnB,CACAvqB,GAAI8qB,CAAAA,cAAc,CAAGkiB,eACvB,CACF,CAAA,CAAA,CACAvB,cAAe7zK,CAAAA,KAAK,GACtB,CACF,CACAs8H,mBAAAA,CAAoBK,aAAa,CAAEo4C,iBAAiB,CAAE,CACpD,MAAMC,iBAAAA,CAAoB,IAAI,CAACr4C,aAAa,CAC5C,MAAMs4C,oBAAAA,CAAuB,IAAI,CAACC,gBAAgB,CAClD,IAAI,IAAI99K,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAM+1I,EAAKxQ,CAAAA,aAAa,CAACvlI,CAAAA,CAAE,CAC3B,GAAI69K,oBAAqBv1K,CAAAA,GAAG,CAACytI,EAAAA,CAAAA,CAAK,CAChC8nC,oBAAqBh1K,CAAAA,MAAM,CAACktI,EAAAA,CAAAA,CAC5B,MAAMxvD,CAAAA,CAAIq3F,iBAAkB30K,CAAAA,OAAO,CAAC8sI,EACpC,CAAA,CAAA,GAAIxvD,CAAK,EAAA,CAAA,CAAG,CACVq3F,iBAAAA,CAAkB90K,MAAM,CAACy9E,EAAG,CAC9B,EAAA,CACF,CACF,CACA,GAAI,CAACo3F,iBAAmB,CAAA,CACtB,IAAI,CAACM,mBAAmB,CAAC14C,aAC3B,EAAA,CACF,CACAw4C,gBAAAA,CAAiBx4C,aAAa,CAAE,CAC9B,MAAMq8B,aAAAA,CAAgB,IAAI,CAACA,aAAa,CACxC,MAAMsc,gBAAAA,CAAmB,IAAI,CAACA,gBAAgB,CAC9C,IAAI,IAAIl+K,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAM+1I,EAAKxQ,CAAAA,aAAa,CAACvlI,CAAAA,CAAE,CAC3B,GAAI+1I,EAAGnB,CAAAA,UAAU,EAAI,CAACspC,gBAAAA,CAAiB51K,GAAG,CAACytI,EAAK,CAAA,CAAA,CAC9CmoC,gBAAiB5tK,CAAAA,GAAG,CAACylI,EACrB6rB,CAAAA,CAAAA,aAAAA,CAAc9gK,IAAI,CAACi1I,EACrB,EAAA,CACF,CACF,CACAkoC,oBAAoB14C,aAAa,CAAE,CACjC,MAAMq8B,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,MAAMsc,gBAAmB,CAAA,IAAI,CAACA,gBAAgB,CAC9C,IAAI,IAAIl+K,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,MAAM+1I,EAAAA,CAAKxQ,aAAa,CAACvlI,CAAE,CAAA,CAC3B,GAAIk+K,gBAAAA,CAAiB51K,GAAG,CAACytI,EAAAA,CAAAA,CAAK,CAC5BmoC,gBAAAA,CAAiBr1K,MAAM,CAACktI,EACxB,CAAA,CAAA,MAAMxvD,CAAIq7E,CAAAA,aAAAA,CAAc34J,OAAO,CAAC8sI,EAChC,CAAA,CAAA,GAAIxvD,CAAK,EAAA,CAAA,CAAG,CACVq7E,aAAc94J,CAAAA,MAAM,CAACy9E,CAAAA,CAAG,CAC1B,EAAA,CACF,CACF,CACF,CACA43F,kBAAmBR,CAAAA,iBAAAA,CAAoB,KAAK,CAAE,CAC5C,IAAI,CAACp4C,aAAa,CAACtlI,MAAM,CAAG,CAC5B,CAAA,IAAI,CAAC69K,gBAAgB,CAACl1K,KAAK,EAC3B,CAAA,GAAI,CAAC+0K,iBAAAA,CAAmB,CACtB,IAAI,CAAC/b,aAAa,CAAC3hK,MAAM,CAAG,CAC5B,CAAA,IAAI,CAACi+K,gBAAgB,CAACt1K,KAAK,GAC7B,CACF,CACAw1K,eAAkB,EAAA,CAChB,IAAI,CAACC,eAAe,CAAG,IACvB,CAAA,IAAI,CAACC,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,iBAAiB,CAAG,KAC3B,CACAC,QAAAA,CAASxzB,KAAK,CAAE,CACd,OAAO,IAAI,CAAC2W,UAAU,CAACr5J,GAAG,CAAC0iJ,KAAAA,CAC7B,CACAyzB,QAASzzB,CAAAA,KAAK,CAAE,CACd,MAAMnsI,CAAAA,CAAImsI,KAAMA,CAAAA,KAAK,CACrB,GAAI,CAAC,IAAI,CAAC2W,UAAU,CAACr5J,GAAG,CAACuW,CAAI,CAAA,CAAA,CAC3B,IAAI,CAAC8iJ,UAAU,CAACrxJ,GAAG,CAACuO,GACpB,IAAI,CAACiwJ,OAAO,CAAChuK,IAAI,CAAC+d,CAClB,CAAA,CAAA,IAAI,CAACu/J,eAAe,GACtB,CACA,GAAIv/J,CAAAA,CAAEpH,IAAI,GAAK+9G,sBAAuB,CACpC,IAAI,CAAC6nD,mBAAmB,CAAC/sK,GAAG,CAACuO,CAAAA,EAC/B,CACF,CACA6/J,WAAY1zB,CAAAA,KAAK,CAAE,CACjB,MAAMnsI,CAAAA,CAAImsI,MAAMA,KAAK,CACrB,GAAI,IAAI,CAAC2W,UAAU,CAACr5J,GAAG,CAACuW,CAAI,CAAA,CAAA,CAC1B,IAAI,CAAC8iJ,UAAU,CAAC94J,MAAM,CAACgW,GACvB,IAAI,CAACiwJ,OAAO,CAAChmK,MAAM,CAAC,IAAI,CAACgmK,OAAO,CAAC7lK,OAAO,CAAC4V,CAAI,CAAA,CAAA,CAAA,CAAA,CAC7C,IAAI,CAACu/J,eAAe,GACtB,CACA,GAAIv/J,CAAAA,CAAEpH,IAAI,GAAK+9G,qBAAuB,CAAA,CACpC,IAAI,CAAC6nD,mBAAmB,CAACx0K,MAAM,CAACgW,CAClC,EAAA,CACF,CACA8/J,WAAc,EAAA,CACZ,IAAI,CAAChd,UAAU,CAACh1J,OAAO,CAAC,KAACq+I,EAAQA,KAAM4zB,CAAAA,WAAW,CAAC,IAAI,CACvD,CAAA,CAAA,IAAI,CAACjd,UAAU,CAAC/4J,KAAK,EAAA,CACrB,IAAI,CAACy0K,mBAAmB,CAACz0K,KAAK,EAC9B,CAAA,IAAI,CAACkmK,OAAO,CAAC7uK,MAAM,CAAG,EACtB,IAAI,CAACm+K,eAAe,GACtB,CACA,IAAI1O,WAAc,EAAA,CAChB,GAAI,IAAI,CAAC6O,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAAG,KAAA,CACzB,MAAM7O,WAAAA,CAAc,IAAI,CAACmP,YAAY,CACrC,IAAI,IAAI7+K,CAAI,CAAA,CAAA,CAAGA,CAAI0vK,CAAAA,WAAAA,CAAYzvK,MAAM,CAAED,IAAI,CACzC0vK,WAAW,CAAC1vK,CAAAA,CAAE,CAACC,MAAM,CAAG,EAC1B,CACA,MAAMuyJ,MAAS,CAAA,IAAI,CAACsc,OAAO,CAC3B,IAAI,IAAI9uK,CAAI,CAAA,CAAA,CAAGA,CAAIwyJ,CAAAA,MAAAA,CAAOvyJ,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAMgrJ,KAAQwH,CAAAA,MAAM,CAACxyJ,CAAAA,CAAE,CACvB,GAAIgrJ,KAAMn4I,CAAAA,OAAO,CAAE,CACjB68J,WAAW,CAAC1kB,KAAAA,CAAM7wI,KAAK,CAAC,CAACrZ,IAAI,CAACkqJ,KAAAA,EAChC,CACF,CACA,IAAI,IAAIhrJ,CAAI,CAAA,CAAA,CAAGA,EAAI0vK,WAAYzvK,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC0vK,WAAW,CAAC1vK,CAAAA,CAAE,CAACkQ,IAAI,CAAC,CAACN,CAAAA,CAAGC,CAAID,GAAAA,CAAAA,CAAE/H,GAAG,CAAGgI,EAAEhI,GAAG,EAC3C,CACF,CACA,OAAO,IAAI,CAACg3K,YAAY,CAE1BC,iBAAkBxmB,CAAAA,WAAW,CAAEymB,iBAAiB,CAAEC,MAAM,CAAE,CACxD,IAAI7lI,IAAO,CAAA,CAAA,CACX,MAAMq5G,MAAAA,CAAS,IAAI,CAACsc,OAAO,CAC3B,IAAI,IAAI9uK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIwyJ,MAAOvyJ,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAMi/K,YAAAA,CAAezsB,MAAM,CAACxyJ,CAAE,CAAA,CAACyX,IAAI,GAAK+9G,qBACxC,CAAA,GAAI8iC,WAAe2mB,EAAAA,YAAAA,EAAgBF,iBAAqB,EAAA,CAACE,aAAc,CACrEzC,SAAAA,CAAU17K,IAAI,CAACk+K,MAASxsB,CAAAA,MAAM,CAACxyJ,CAAAA,CAAE,CAACgqC,EAAE,CAAGwoH,MAAM,CAACxyJ,CAAAA,CAAE,CAAC6H,GAAG,EACtD,CACF,CACA,GAAI20K,SAAAA,CAAUv8K,MAAM,CAAG,CAAG,CAAA,CACxBu8K,SAAUtsK,CAAAA,IAAI,EACdipC,CAAAA,IAAAA,CAAOC,WAAYojI,CAAAA,SAAAA,CACnBA,CAAAA,SAAAA,CAAUv8K,MAAM,CAAG,EACrB,CACA,OAAOk5C,IACT,CACA8/H,YAAanc,CAAAA,WAAW,CAAE,CACxB,GAAI,IAAI,CAACuhB,eAAe,CAAE,CACxB,IAAI,CAACA,eAAe,CAAG,KACvB,CAAA,IAAI,CAACa,UAAU,CAAG,IAAI,CAACJ,iBAAiB,CAAC,CAAChiB,WAAAA,CAAa,IAAM,CAAA,KAAA,EAC/D,CACA,OAAO,IAAI,CAACoiB,UAAU,CAExB5Y,cAAiB,EAAA,CACf,GAAI,IAAI,CAACgY,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACa,YAAY,CAAG,IAAI,CAACL,iBAAiB,CAAC,IAAA,CAAM,KAAO,CAAA,IAAA,EAC1D,CACA,OAAO,IAAI,CAACK,YAAY,CAE1BC,SAAUnsC,CAAAA,MAAM,CAAE,CAChB,GAAI,CAAC,IAAI,CAACosC,UAAU,CAAC/2K,GAAG,CAAC2qI,MAAAA,CAAOA,MAAM,CAAG,CAAA,CACvC,IAAI,CAACosC,UAAU,CAAC/uK,GAAG,CAAC2iI,MAAOA,CAAAA,MAAM,CACjC,CAAA,IAAI,CAAC07B,OAAO,CAAC7tK,IAAI,CAACmyI,MAClB,CAAA,CAAA,IAAI,CAACgqC,iBAAiB,CAAG,KAC3B,CACF,CACAqC,YAAAA,CAAarsC,MAAM,CAAE,CACnB,GAAI,IAAI,CAACosC,UAAU,CAAC/2K,GAAG,CAAC2qI,MAAAA,CAAOA,MAAM,CAAA,CAAG,CACtC,IAAI,CAACosC,UAAU,CAACx2K,MAAM,CAACoqI,MAAAA,CAAOA,MAAM,CAAA,CACpC,MAAMptI,KAAQ,CAAA,IAAI,CAAC8oK,OAAO,CAAC1lK,OAAO,CAACgqI,MAAAA,CAAAA,CACnC,IAAI,CAAC07B,OAAO,CAAC7lK,MAAM,CAACjD,KAAAA,CAAO,CAC3B,CAAA,CAAA,IAAI,CAACo3K,iBAAiB,CAAG,KAC3B,CACF,CACAsC,YAAe,EAAA,CACb,IAAI,CAAC5Q,OAAO,CAAC1uK,MAAM,CAAG,CACtB,CAAA,IAAI,CAACo/K,UAAU,CAACz2K,KAAK,EACrB,CAAA,IAAI,CAACq0K,iBAAiB,CAAG,KAC3B,CACAuC,uBAAwBnT,CAAAA,SAAS,CAAEoT,MAAM,CAAEC,MAAM,CAAE,CACjD,MAAM1/H,KAAQqsH,CAAAA,SAAAA,CAAUpsK,MAAM,CAC9B,KAAM,CAAEoU,CAAGsrK,CAAAA,EAAE,CAAE5jK,CAAAA,CAAG6jK,EAAE,CAAE1jK,CAAG2jK,CAAAA,EAAE,CAAE,CAAGJ,MAAAA,CAChC,KAAM,CAAEprK,CAAGyrK,CAAAA,EAAE,CAAE/jK,CAAAA,CAAGgkK,EAAE,CAAE7jK,CAAAA,CAAG8jK,EAAE,CAAE,CAAGN,MAAAA,CAChC,IAAI,IAAI1/K,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAM8rK,QAAWO,CAAAA,SAAS,CAACrsK,CAAAA,CAAE,CAC7B,IAAIigL,KACJ,CAAA,GAAInU,QAASp6B,CAAAA,qBAAqB,CAAE,CAClCuuC,KAAAA,CAAQnU,QAASp6B,CAAAA,qBAAqB,CAACo6B,QAAAA,CAAU2T,MAAQC,CAAAA,MAAAA,EAC3D,CAAO,KAAA,CACL,MAAMQ,OAAAA,CAAUpU,QAASh9I,CAAAA,IAAI,CAAC3D,MAAM,CACpC80J,KAAQ,CAACC,CAAAA,OAAAA,CAAQ7rK,CAAC,CAAGsrK,EAAC,EAAKG,EAAK,CAACI,CAAAA,OAAAA,CAAQnkK,CAAC,CAAG6jK,EAAC,EAAKG,GAAK,CAACG,OAAQhkK,CAAAA,CAAC,CAAG2jK,EAAC,EAAKG,GAC7E,CACA,MAAMxwC,MAAAA,CAASs8B,QAASr8B,CAAAA,WAAW,CAAG,GACtCq8B,CAAAA,QAAAA,CAASz2B,eAAe,CAAG7F,MAAAA,CAASywC,MACtC,CACF,CACAlQ,kBAAAA,CAAmB98B,MAAM,CAAE,CACzB,IAAIktC,SAAY,CAAA,IAAI,CAACC,iBAAiB,CAACr+K,GAAG,CAACkxI,MAC3C,CAAA,CAAA,GAAI,CAACktC,SAAAA,CAAW,CACdA,SAAAA,CAAY,IAAIpD,eAAAA,CAChB,IAAI,CAACqD,iBAAiB,CAAC73K,GAAG,CAAC0qI,MAAQktC,CAAAA,SAAAA,EACrC,CACA,OAAOA,SACT,CACApG,WAAAA,CAAY9mC,MAAM,CAAEzB,WAAW,CAAE,CAC/B,MAAM6uC,QAAW7uC,CAAAA,WAAAA,CAAc,IAAI,CAAC8uC,mBAAmB,CAAG,IAAI,CAACC,cAAc,CAC7E,GAAIF,QAAariD,GAAAA,aAAAA,CAAe,CAC9B,MACF,CACA,MAAMuwC,eAAAA,CAAkB,IAAI,CAACwB,kBAAkB,CAAC98B,MAChD,CAAA,CAAA,MAAMktC,UAAY3uC,WAAc+8B,CAAAA,eAAAA,CAAgB/8B,WAAW,CAAG+8B,eAAgBC,CAAAA,MAAM,CACpF,MAAMgS,UAAavtC,CAAAA,MAAAA,CAAO7C,IAAI,CAC9B,GAAIiwC,QAAAA,GAAahiD,eAAiB,CAAA,CAChC,MAAMoiD,OAAUD,CAAAA,UAAAA,CAAWl2D,WAAW,EAAA,CACtC,MAAMo2D,OAAAA,CAAUF,UAAW/6B,CAAAA,OAAO,CAClC,GAAI,IAAI,CAACk7B,yBAAyB,CAAE,CAClC,IAAI,CAACA,yBAAyB,CAACR,SAAWA,CAAAA,SAAAA,CAAUlgL,MAAM,CAAEwgL,OAASC,CAAAA,OAAAA,EACvE,CACA,GAAI,IAAI,CAACE,kBAAkB,CAAE,CAC3BT,SAAAA,CAAUjwK,IAAI,CAAC,IAAI,CAAC0wK,kBAAkB,EACxC,CACF,CAAO,KAAA,CACL,GAAIP,QAAaliD,GAAAA,mBAAAA,EAAuBkiD,QAAajiD,GAAAA,mBAAAA,CAAqB,CACxE,MAAMqiD,OAAUD,CAAAA,UAAAA,CAAWl2D,WAAW,EACtC,CAAA,MAAMo2D,OAAUF,CAAAA,UAAAA,CAAW/6B,OAAO,CAClC,IAAI,CAAC+5B,uBAAuB,CAACW,SAAWM,CAAAA,OAAAA,CAASC,OACnD,EAAA,CACAP,SAAUjwK,CAAAA,IAAI,CAAC4sK,aAAa,CAACuD,QAAS,CAAA,EACxC,CACF,CAtWAt4K,WAAY0J,CAAAA,OAAAA,CAAU,EAAE,CAAC,CACvB,IAAI,CAAC8zH,aAAa,CAAG,EAAE,CACvB,IAAI,CAACu4C,gBAAgB,CAAG,IAAI/qK,GAC5B,CAAA,IAAI,CAAC6uJ,aAAa,CAAG,EACrB,CAAA,IAAI,CAACsc,gBAAgB,CAAG,IAAInrK,GAC5B,CAAA,IAAI,CAACqtK,iBAAiB,CAAG,IAAIS,OAC7B,CAAA,IAAI,CAAC/R,OAAO,CAAG,EAAE,CACjB,IAAI,CAACnN,UAAU,CAAG,IAAI5uJ,GACtB,CAAA,IAAI,CAACsqK,mBAAmB,CAAG,IAAItqK,GAC/B,CAAA,IAAI,CAAC8rK,YAAY,CAAG,CAClB,EAAE,CACF,EAAE,CACF,EAAE,CAEJ,CAAA,IAAI,CAACN,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACtE,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACtL,OAAO,CAAG,EACf,CAAA,IAAI,CAAC0Q,UAAU,CAAG,IAAItsK,GACtB,CAAA,IAAI,CAAC0qK,gBAAgB,CAAG,EAAE,CAC1B,IAAI,CAACP,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACD,iBAAiB,CAAG,KACzB,CAAA,GAAIxrK,OAAQu4B,CAAAA,EAAE,GAAKliC,SAAAA,CAAW,CAC5B,IAAI,CAACkiC,EAAE,CAAGv4B,OAAAA,CAAQu4B,EAAE,CACpBuyI,aAAeh9K,IAAKoU,CAAAA,GAAG,CAAC,IAAI,CAACq2B,EAAE,CAAG,CAAA,CAAGuyI,cACvC,CAAO,KAAA,CACL,IAAI,CAACvyI,EAAE,CAAGuyI,YACZ,GAAA,CACA,IAAI,CAACj5K,IAAI,CAAGmO,OAAAA,CAAQnO,IACpB,CAAA,IAAI,CAACuwE,QAAQ,CAAGpiE,OAAAA,CAAQoB,OAAO,EAAI,IACnC,CAAA,IAAI,CAACyqK,WAAW,CAAG,IAAI,CAACzpG,QAAQ,CAAG,CAAA,CAAI,CACvC,CAAA,IAAI,CAAC0sG,cAAc,CAAG9uK,OAAAA,CAAQ8uK,cAAc,EAAIriD,qBAChD,CAAA,IAAI,CAACoiD,mBAAmB,CAAG7uK,OAAAA,CAAQ6uK,mBAAmB,EAAIniD,mBAC1D,CAAA,GAAI1sH,OAAQgtC,CAAAA,YAAY,CAAE,CACxB,IAAI,CAACA,YAAY,CAAGhtC,OAAAA,CAAQgtC,aAC9B,CACA,IAAI,CAACmhG,iBAAiB,CAAG,CAAC,CAACnuI,OAAAA,CAAQkuI,gBACnC,CAAA,IAAI,CAACI,iBAAiB,CAAG,CAAC,CAACtuI,OAAQquI,CAAAA,gBAAgB,CACnD,IAAI,CAACI,mBAAmB,CAAG,CAAC,CAACzuI,OAAQwuI,CAAAA,kBAAkB,CACvD,IAAI,CAACx0C,QAAQ,CAAGh6F,OAAAA,CAAQg6F,QACxB,CAAA,IAAI,CAACC,SAAS,CAAGj6F,OAAQi6F,CAAAA,SAAS,CAClC,GAAI,IAAI,CAAC73B,QAAQ,EAAI,IAAI,CAAC43B,QAAQ,CAAE,CAClC,IAAI,CAACA,QAAQ,GACf,CACA,IAAI,CAACm1E,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACD,yBAAyB,CAAG,IACjC,CAAA,IAAI,CAACzB,UAAU,CAAG,CAClB,CAAA,IAAI,CAACb,eAAe,CAAG,KACvB,CAAA,IAAI,CAACc,YAAY,CAAG,CACpB,CAAA,IAAI,CAACb,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACxiB,cAAc,CAAG,CAAC,EACzB,CAqTF,CAEA,MAAMglB,WAAc,CAAA,CAAClxK,EAAGC,CAAID,GAAAA,CAAAA,CAAEmxK,QAAQ,CAAGlxK,CAAEkxK,CAAAA,QAAQ,CACnD,MAAMC,aAAe,GAAC36K,EAAMA,GAAI6J,CAAAA,IAAI,CAAC4wK,WAAAA,CAErC,CAAMG,MAAAA,gBAAAA,SAAyBh5K,YAO7BkhC,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC+3I,oBAAoB,GAC3B,CACAA,sBAAuB,CACrB,IAAI,CAAC5F,cAAc,CAAC3uK,OAAO,CAAEw5J,EAAKA,EAAAA,EAAAA,CAAGh9H,OAAO,EAAA,CAC5C,CAAA,IAAI,CAACmyI,cAAc,CAACr7K,MAAM,CAAG,EAC/B,CACA+gI,SAAY,EAAA,CACV,IAAI,CAACjlF,MAAM,CAAG,KAChB,CACA80H,OAAU,EAAA,CACR,MAAM34J,GAAAA,CAAM,IAAI,CAACwpJ,SAAS,CAACzhK,MAAM,CACjC,GAAI,CAAC,IAAI,CAAC87C,MAAM,CAAE,CAChB,IAAI,IAAI/7C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,GAAI,IAAI,CAAC0hK,SAAS,CAAC1hK,CAAAA,CAAE,CAACi9K,iBAAiB,CAAE,CACvC,IAAI,CAAClhI,MAAM,CAAG,KACd,KACF,CACF,CACF,CACA,GAAI,IAAI,CAACA,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAG,KACd,CAAA,IAAI,CAAC4yH,OAAO,CAAC1uK,MAAM,CAAG,CAAA,CACtB,IAAI,CAACo/K,UAAU,CAACz2K,KAAK,EAAA,CACrB,IAAI,IAAI5I,CAAI,CAAA,CAAA,CAAGA,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAM+kI,KAAQ,CAAA,IAAI,CAAC28B,SAAS,CAAC1hK,CAAE,CAC/B+kI,CAAAA,KAAAA,CAAMk4C,iBAAiB,CAAG,KAC1B,CAAA,IAAI,IAAI12F,CAAI,CAAA,CAAA,CAAGA,CAAIw+C,CAAAA,KAAAA,CAAM4pC,OAAO,CAAC1uK,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC3C,MAAM8oF,eAAAA,CAAkBtqC,KAAM4pC,CAAAA,OAAO,CAACpoF,CAAAA,CAAE,CACxC,GAAI,CAAC,IAAI,CAAC84F,UAAU,CAAC/2K,GAAG,CAAC+mK,eAAgBp8B,CAAAA,MAAM,CAAG,CAAA,CAChD,IAAI,CAACosC,UAAU,CAAC/uK,GAAG,CAAC++J,eAAAA,CAAgBp8B,MAAM,CAAA,CAC1C,IAAI,CAAC07B,OAAO,CAAC7tK,IAAI,CAACuuK,eACpB,EAAA,CACF,CACF,CACA,GAAI,IAAI,CAACV,OAAO,CAAC1uK,MAAM,CAAG,CAAG,CAAA,CAC3B+gL,YAAa,CAAA,IAAI,CAACrS,OAAO,EAC3B,CACA,IAAIwS,iBAAoB,CAAA,CAAA,CACxB,IAAI,CAACD,oBAAoB,EACzB,CAAA,IAAI,IAAIlhL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC2uK,OAAO,CAAC1uK,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAMizI,MAAAA,CAAS,IAAI,CAAC07B,OAAO,CAAC3uK,CAAAA,CAAE,CAC9B,GAAIizI,MAAOA,CAAAA,MAAM,CAACiL,YAAY,CAACj+I,MAAM,CAAG,CAAG,CAAA,CACzC,IAAI,CAACmhL,oBAAoB,CAACD,iBAAAA,CAAmBluC,MAC7CkuC,CAAAA,CAAAA,iBACA,EAAA,CAAA,QACF,CACA,IAAIE,uBAA0B,CAAA,IAAA,CAC9B,MAAMC,4BAAAA,CAA+BH,iBACrC,CAAA,IAAII,gBAAmB,CAAA,IAAA,CACvB,IAAIC,iBAAoB,CAAA,KAAA,CACxB,IAAI,IAAIj7F,CAAI,CAAA,CAAA,CAAGA,CAAIruE,CAAAA,GAAAA,CAAKquE,IAAI,CAC1B,MAAMw+C,KAAQ,CAAA,IAAI,CAAC28B,SAAS,CAACn7E,CAAAA,CAAE,CAC/B,MAAMk7F,cAAAA,CAAiB18C,KAAMlyH,CAAAA,OAAO,EAAI,IAAI,CAAC6uK,eAAe,CAACn7F,CAAAA,CAAE,CAC/D,GAAIk7F,cAAgB,CAAA,CAClB,GAAI18C,KAAAA,CAAM4pC,OAAO,CAAC1uK,MAAM,CAAG,CAAA,CAAG,CAC5B,GAAIgzI,MAAOtO,CAAAA,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,EAAK,CAAG,CAAA,CACxC,GAAI,CAACw3I,iBAAAA,EAAqBz8C,KAAM/6F,CAAAA,EAAE,GAAKipG,MAAAA,CAAO0uC,uBAAuB,CAAE,CACrEH,iBAAAA,CAAoB,IACpB,CAAA,GAAID,gBAAkB,CAAA,CACpBA,gBAAiB1P,CAAAA,kBAAkB,CAAG,KACxC,CACF,CACA,MAAMiB,aAAgB,CAAA,IAAI,CAACD,YAAY,CAACtsF,CAAE,CAAA,CAC1Cg7F,gBAAmB,CAAA,IAAI,CAACpP,eAAe,CAACgP,iBAAAA,CAAmBp8C,MAAO+tC,aAAe7/B,CAAAA,MAAAA,CAAQouC,uBAAyBG,CAAAA,iBAAAA,CAClHL,CAAAA,iBAAAA,EAAAA,CACAE,uBAA0B,CAAA,MAC5B,CACF,CACF,CACF,CACA,GAAIC,4BAAAA,CAA+BH,iBAAmB,CAAA,CACpDI,iBAAiBxP,aAAa,CAAG,KACnC,CACA,GAAI,CAACyP,iBAAqBD,EAAAA,gBAAAA,CAAkB,CAC1CA,gBAAAA,CAAiB1P,kBAAkB,CAAG,KACxC,CACA,GAAI5+B,MAAAA,CAAOx0F,YAAY,EAAIw0F,MAAAA,CAAO2uC,kBAAkB,CAAE,CACpD,IAAI,CAACC,qBAAqB,CAACP,4BAAAA,CAA+B,CAAGruC,CAAAA,MAAAA,EAC/D,CACF,CACA,IAAI,CAAC6uC,iBAAiB,GACxB,CACF,CACAC,mBAAAA,CAAoBC,iBAAiB,CAAE,CACrC,MAAMvb,aAAe,IAAIkL,YAAAA,CACzB,IAAI,CAAC2J,cAAc,CAACx6K,IAAI,CAAC2lK,cACzB,OAAOA,YACT,CACA2a,oBAAAA,CAAqBY,iBAAiB,CAAE/uC,MAAM,CAAE,CAC9C,MAAMwzB,YAAe,CAAA,IAAI,CAACsb,mBAAmB,CAACC,iBAAAA,CAC9Cvb,CAAAA,YAAaxzB,CAAAA,MAAM,CAAGA,MACtBwzB,CAAAA,YAAAA,CAAauL,eAAe,CAAG,KACjC,CACAG,eAAgB6P,CAAAA,iBAAiB,CAAEj9C,KAAK,CAAE+tC,aAAa,CAAE7/B,MAAM,CAAEouC,uBAAuB,CAAEG,iBAAiB,CAAE,CAC3G,IAAIvwH,EAAK8zE,CAAAA,KAAAA,CAAM/6F,EAAE,GAAKorF,aAAgB6d,CAAAA,MAAAA,CAAOx0F,YAAY,CAAG,KAC5D,IAAI24B,IAAAA,CAAO,KACX,CAAA,MAAM8uF,aAAgB,CAAA,IAAI,CAACoV,cAAc,CACzC,IAAI,IAAIt7K,CAAIgiL,CAAAA,iBAAAA,CAAoB,CAAGhiL,CAAAA,CAAAA,EAAK,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CAC7C,GAAIkmK,aAAa,CAAClmK,CAAAA,CAAE,CAACizI,MAAM,GAAKA,MAAAA,EAAUizB,aAAa,CAAClmK,CAAE,CAAA,CAACy+C,YAAY,GAAKwS,EAAI,CAAA,CAC9EmmB,KAAO,IACP,CAAA,KACF,CACF,CACA,GAAIoqG,iBAAAA,EAAqBvuC,MAAO2uC,CAAAA,kBAAkB,CAAE,CAClD3wH,EAAAA,CAAK,KACP,CACA,MAAMw1G,YAAAA,CAAe,IAAI,CAACsb,mBAAmB,CAACC,iBAAAA,CAC9Cvb,CAAAA,YAAAA,CAAaoL,kBAAkB,CAAG,KAClCpL,CAAAA,YAAa1hC,CAAAA,KAAK,CAAGA,KACrB0hC,CAAAA,YAAAA,CAAaj1B,WAAW,CAAGshC,aAC3BrM,CAAAA,YAAAA,CAAaxzB,MAAM,CAAGA,MACtBwzB,CAAAA,YAAahoH,CAAAA,YAAY,CAAGwS,EAC5Bw1G,CAAAA,YAAaqL,CAAAA,cAAc,CAAGuP,uBAC9B5a,CAAAA,YAAAA,CAAasL,aAAa,CAAG,KAAA,CAC7B,MAAMkQ,gBAAAA,CAAmBZ,uBAA2B,EAAA,CAACjqG,IACrD,CAAA,MAAM8qG,eAAkBn9C,CAAAA,KAAAA,CAAM4a,gBAAgB,EAAI5a,KAAM+a,CAAAA,gBAAgB,EAAI/a,KAAAA,CAAMkb,kBAAkB,CACpG,GAAIgiC,gBAAoBC,EAAAA,eAAAA,CAAiB,CACvCzb,YAAAA,CAAamL,WAAW,CAACqQ,gBAAmBhvC,CAAAA,MAAAA,CAASnrI,SAAWi9H,CAAAA,KAAAA,EAClE,CACA,OAAO0hC,YACT,CACAob,sBAAsBpP,UAAU,CAAE0P,UAAU,CAAE,CAC5C,IAAI,IAAIvyK,CAAAA,CAAI6iK,UAAY7iK,CAAAA,CAAAA,EAAK,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CAClC,MAAMu2J,EAAK,CAAA,IAAI,CAACmV,cAAc,CAAC1rK,CAAE,CAAA,CACjC,MAAMm1H,KAAAA,CAAQohC,EAAGphC,CAAAA,KAAK,CACtB,GAAIohC,EAAAA,CAAG1nH,YAAY,EAAIsmF,KAAM/6F,CAAAA,EAAE,GAAKorF,aAAAA,CAAe,CACjD,KACF,CACA,GAAI2P,KAAAA,CAAM/6F,EAAE,GAAKorF,aAAe,CAAA,CAC9B,QACF,CACA,GAAI+wC,EAAAA,CAAG6L,eAAe,CAAE,CACtB,KACF,CACA,MAAMoQ,UAAAA,CAAajc,EAAIlzB,EAAAA,MAAAA,CAAOA,MAC9B,CAAA,GAAImvC,UAAY,CAAA,CACd,GAAI,CAACD,UAAWlvC,CAAAA,MAAM,CAACxxF,IAAI,CAAChsC,MAAM,CAAC2sK,UAAW3gI,CAAAA,IAAI,CAAK,EAAA,CAAC0gI,UAAWlvC,CAAAA,MAAM,CAAC3O,WAAW,CAAC7uH,MAAM,CAAC2sK,UAAAA,CAAW99C,WAAW,CAAA,CAAG,CACpH,KACF,CACF,CACA6hC,EAAAA,CAAG1nH,YAAY,CAAG0jI,UAAW1jI,CAAAA,aAAY,CAE7C,CACAqjI,iBAAoB,EAAA,EACpBO,aAAAA,CAAct9C,KAAK,CAAE,CACnB,MAAMt2D,MAAQ,IAAI,CAAC6zG,UAAU,CAACvgL,GAAG,CAACgjI,KAAM/6F,CAAAA,EAAE,CAAM+6F,GAAAA,KAAAA,CAChD,OAAOt2D,KACT,CACA8zG,gBAAAA,CAAiBx9C,KAAK,CAAEyM,WAAW,CAAE,CACnC,MAAM3qI,GAAAA,CAAM2qI,WAAc,CAAA,IAAI,CAACgxC,wBAAwB,CAAG,IAAI,CAACC,mBAAmB,CAClF,GAAI57K,GAAI9E,CAAAA,GAAG,CAACgjI,KAAWj9H,CAAAA,GAAAA,SAAAA,CAAW,CAChC,OAAO,IACT,CACA,OAAO,KACT,CACAhH,IAAAA,CAAKikI,KAAK,CAAE,CACV,GAAI,IAAI,CAACs9C,aAAa,CAACt9C,KAAAA,CAAAA,CAAQ,OAC/B,IAAI,CAAC28B,SAAS,CAAC5gK,IAAI,CAACikI,KACpB,CAAA,CAAA,IAAI,CAAC28B,SAAS,CAAC5gK,IAAI,CAACikI,KAAAA,CACpB,CAAA,IAAI,CAAC29C,YAAY,CAAC39C,KAAM/6F,CAAAA,EAAE,CAAC,CAAG,IAAI,CAAC6oI,YAAY,CAAC/xK,IAAI,CAAC,KAAS,CAAA,CAAA,CAC9D,CAAA,IAAI,CAAC6hL,iBAAiB,CAAC59C,KAAM/6F,CAAAA,EAAE,CAAC,CAAG,IAAI,CAAC6oI,YAAY,CAAC/xK,IAAI,CAAC,IAAA,CAAA,CAAQ,CAClE,CAAA,IAAI,CAAC4gL,eAAe,CAAC5gL,IAAI,CAAC,IAC1B,CAAA,CAAA,IAAI,CAAC4gL,eAAe,CAAC5gL,IAAI,CAAC,IAAA,CAAA,CAC1B,IAAI,CAAC8hL,gBAAgB,EACrB,CAAA,IAAI,CAAC7mI,MAAM,CAAG,IACd,CAAA,IAAI,CAAC7yC,IAAI,CAAC,KAAO67H,CAAAA,KAAAA,EACnB,CACAh1H,MAAAA,CAAOg1H,KAAK,CAAEl/H,KAAK,CAAE,CACnB,GAAI,IAAI,CAACw8K,aAAa,CAACt9C,KAAAA,CAAAA,CAAQ,OAC/B,IAAI,CAAC28B,SAAS,CAAC54J,MAAM,CAACjD,KAAAA,CAAO,CAAGk/H,CAAAA,KAAAA,CAAOA,OACvC,IAAI,CAAC8tC,YAAY,CAAC/pK,MAAM,CAACjD,KAAO,CAAA,CAAA,CAAG,KAAO,CAAA,IAAA,CAAA,CAC1C,MAAMm6C,KAAAA,CAAQ,IAAI,CAAC0hH,SAAS,CAACzhK,MAAM,CACnC,IAAI,CAAC4iL,kBAAkB,CAACh9K,KAAAA,CAAOm6C,KAAQ,CAAA,CAAA,CAAA,CACvC,IAAI,CAAC8iI,uBAAuB,CAACj9K,KAAOm6C,CAAAA,KAAAA,CAAQ,CAC5C,CAAA,CAAA,IAAI,CAAC0hI,eAAe,CAAC54K,MAAM,CAACjD,KAAO,CAAA,CAAA,CAAG,IAAM,CAAA,IAAA,CAAA,CAC5C,IAAI,CAAC+8K,gBAAgB,EACrB,CAAA,IAAI,CAAC7mI,MAAM,CAAG,KACd,IAAI,CAAC7yC,IAAI,CAAC,KAAO67H,CAAAA,KAAAA,EACnB,CACA16H,MAAAA,CAAO06H,KAAK,CAAE,CACZ,IAAI/6F,EAAK,CAAA,IAAI,CAAC03H,SAAS,CAACz4J,OAAO,CAAC87H,KAChC,CAAA,CAAA,OAAO,IAAI,CAAC29C,YAAY,CAAC14I,EAAG,CAC5B,CAAO,OAAA,IAAI,CAAC24I,iBAAiB,CAAC34I,EAAAA,CAAG,CACjC,MAAMA,EAAAA,EAAM,CAAE,CAAA,CACZ,IAAI,CAAC03H,SAAS,CAAC54J,MAAM,CAACkhC,EAAI,CAAA,CAAA,CAAA,CAC1B,IAAI,CAAC6oI,YAAY,CAAC/pK,MAAM,CAACkhC,EAAAA,CAAI,CAC7B,CAAA,CAAA,IAAI,CAAC03I,eAAe,CAAC54K,MAAM,CAACkhC,EAAI,CAAA,CAAA,CAAA,CAChCA,EAAK,CAAA,IAAI,CAAC03H,SAAS,CAACz4J,OAAO,CAAC87H,KAC5B,CAAA,CAAA,IAAI,CAAChpF,MAAM,CAAG,IACd,CAAA,IAAI,CAAC7yC,IAAI,CAAC,QAAA,CAAU67H,KACtB,EAAA,CACA,MAAM/kF,KAAAA,CAAQ,IAAI,CAAC0hH,SAAS,CAACzhK,MAAM,CACnC,IAAI,CAAC4iL,kBAAkB,CAAC,CAAA,CAAG7iI,KAAQ,CAAA,CAAA,CAAA,CACnC,IAAI,CAAC8iI,uBAAuB,CAAC,EAAG9iI,KAAQ,CAAA,CAAA,CAAA,CACxC,IAAI,CAAC4iI,gBAAgB,GACvB,CACAG,UAAAA,CAAWh+C,KAAK,CAAE,CAChB,GAAI,IAAI,CAACw9C,gBAAgB,CAACx9C,MAAO,KAAQ,CAAA,CAAA,OACzC,IAAI,CAAC28B,SAAS,CAAC5gK,IAAI,CAACikI,MACpB,CAAA,IAAI,CAAC29C,YAAY,CAAC39C,KAAAA,CAAM/6F,EAAE,CAAC,CAAG,IAAI,CAAC6oI,YAAY,CAAC/xK,IAAI,CAAC,KAAS,CAAA,CAAA,CAAA,CAC9D,IAAI,CAAC4gL,eAAe,CAAC5gL,IAAI,CAAC,IAC1B,CAAA,CAAA,IAAI,CAAC8hL,gBAAgB,EACrB,CAAA,IAAI,CAAC7mI,MAAM,CAAG,IAAA,CACd,IAAI,CAAC7yC,IAAI,CAAC,KAAA,CAAO67H,KACnB,EAAA,CACAi+C,YAAaj+C,CAAAA,KAAK,CAAEl/H,KAAK,CAAE,CACzB,GAAI,IAAI,CAAC08K,gBAAgB,CAACx9C,KAAO,CAAA,KAAA,CAAA,CAAQ,OACzC,IAAI,CAAC28B,SAAS,CAAC54J,MAAM,CAACjD,KAAO,CAAA,CAAA,CAAGk/H,KAChC,CAAA,CAAA,IAAI,CAAC8tC,YAAY,CAAC/pK,MAAM,CAACjD,KAAO,CAAA,CAAA,CAAG,KACnC,CAAA,CAAA,MAAMm6C,KAAQ,CAAA,IAAI,CAAC6yH,YAAY,CAAC5yK,MAAM,CACtC,IAAI,CAAC4iL,kBAAkB,CAACh9K,KAAOm6C,CAAAA,KAAAA,CAAQ,CACvC,CAAA,CAAA,IAAI,CAAC0hI,eAAe,CAAC54K,MAAM,CAACjD,KAAAA,CAAO,EAAG,IACtC,CAAA,CAAA,IAAI,CAAC+8K,gBAAgB,EACrB,CAAA,IAAI,CAAC7mI,MAAM,CAAG,IACd,CAAA,IAAI,CAAC7yC,IAAI,CAAC,KAAA,CAAO67H,OACnB,CACAk+C,YAAAA,CAAal+C,KAAK,CAAE,CAClB,IAAI,IAAI/kI,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACwpJ,SAAS,CAACzhK,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACvD,GAAI,IAAI,CAAC0hK,SAAS,CAAC1hK,EAAE,GAAK+kI,KAAAA,EAAS,CAAC,IAAI,CAAC8tC,YAAY,CAAC7yK,CAAAA,CAAE,CAAE,CACxD,IAAI,CAAC0hK,SAAS,CAAC54J,MAAM,CAAC9I,CAAAA,CAAG,CACzB,CAAA,CAAA,IAAI,CAAC6yK,YAAY,CAAC/pK,MAAM,CAAC9I,CAAAA,CAAG,EAC5BkY,CAAAA,GAAAA,EAAAA,CACA,IAAI,CAAC2qK,kBAAkB,CAAC7iL,CAAGkY,CAAAA,GAAAA,CAAM,CACjC,CAAA,CAAA,IAAI,CAACwpK,eAAe,CAAC54K,MAAM,CAAC9I,CAAAA,CAAG,EAC/B,CAAA,IAAI,CAAC+7C,MAAM,CAAG,IAAA,CACd,GAAI,IAAI,CAAC2lH,SAAS,CAACz4J,OAAO,CAAC87H,KAAAA,CAAAA,CAAS,CAAG,CAAA,CACrC,IAAI,CAAC77H,IAAI,CAAC,QAAA,CAAU67H,KACtB,EAAA,CACA,KACF,CACF,CACA,IAAI,CAAC69C,gBAAgB,GACvB,CACAM,eAAAA,CAAgBn+C,KAAK,CAAE,CACrB,GAAI,IAAI,CAACw9C,gBAAgB,CAACx9C,KAAAA,CAAO,IAAO,CAAA,CAAA,OACxC,IAAI,CAAC28B,SAAS,CAAC5gK,IAAI,CAACikI,KACpB,CAAA,CAAA,IAAI,CAAC49C,iBAAiB,CAAC59C,KAAAA,CAAM/6F,EAAE,CAAC,CAAG,IAAI,CAAC6oI,YAAY,CAAC/xK,IAAI,CAAC,IAAA,CAAA,CAAQ,CAClE,CAAA,IAAI,CAAC4gL,eAAe,CAAC5gL,IAAI,CAAC,IAC1B,CAAA,CAAA,IAAI,CAAC8hL,gBAAgB,EACrB,CAAA,IAAI,CAAC7mI,MAAM,CAAG,IACd,CAAA,IAAI,CAAC7yC,IAAI,CAAC,KAAO67H,CAAAA,KAAAA,EACnB,CACAo+C,iBAAAA,CAAkBp+C,KAAK,CAAEl/H,KAAK,CAAE,CAC9B,GAAI,IAAI,CAAC08K,gBAAgB,CAACx9C,KAAAA,CAAO,MAAO,OACxC,IAAI,CAAC28B,SAAS,CAAC54J,MAAM,CAACjD,KAAAA,CAAO,CAAGk/H,CAAAA,KAAAA,CAAAA,CAChC,IAAI,CAAC8tC,YAAY,CAAC/pK,MAAM,CAACjD,MAAO,CAAG,CAAA,IAAA,CAAA,CACnC,MAAMm6C,KAAAA,CAAQ,IAAI,CAAC6yH,YAAY,CAAC5yK,MAAM,CACtC,IAAI,CAAC6iL,uBAAuB,CAACj9K,KAAAA,CAAOm6C,KAAQ,CAAA,CAAA,CAAA,CAC5C,IAAI,CAAC0hI,eAAe,CAAC54K,MAAM,CAACjD,KAAAA,CAAO,CAAG,CAAA,IAAA,CAAA,CACtC,IAAI,CAAC+8K,gBAAgB,EACrB,CAAA,IAAI,CAAC7mI,MAAM,CAAG,IACd,CAAA,IAAI,CAAC7yC,IAAI,CAAC,KAAA,CAAO67H,KACnB,EAAA,CACAq+C,kBAAkBr+C,KAAK,CAAE,CACvB,IAAI,IAAI/kI,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACwpJ,SAAS,CAACzhK,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACvD,GAAI,IAAI,CAAC0hK,SAAS,CAAC1hK,CAAE,CAAA,GAAK+kI,OAAS,IAAI,CAAC8tC,YAAY,CAAC7yK,CAAE,CAAA,CAAE,CACvD,IAAI,CAAC0hK,SAAS,CAAC54J,MAAM,CAAC9I,CAAAA,CAAG,CACzB,CAAA,CAAA,IAAI,CAAC6yK,YAAY,CAAC/pK,MAAM,CAAC9I,CAAG,CAAA,CAAA,CAC5BkY,CAAAA,GAAAA,EAAAA,CACA,IAAI,CAAC4qK,uBAAuB,CAAC9iL,CAAGkY,CAAAA,GAAAA,CAAM,CACtC,CAAA,CAAA,IAAI,CAACwpK,eAAe,CAAC54K,MAAM,CAAC9I,CAAG,CAAA,CAAA,CAC/B,CAAA,IAAI,CAAC+7C,MAAM,CAAG,IACd,CAAA,GAAI,IAAI,CAAC2lH,SAAS,CAACz4J,OAAO,CAAC87H,KAAAA,CAAAA,CAAS,CAAG,CAAA,CACrC,IAAI,CAAC77H,IAAI,CAAC,QAAU67H,CAAAA,KAAAA,EACtB,CACA,KACF,CACF,CACA,IAAI,CAAC69C,gBAAgB,GACvB,CACAS,cAAet+C,CAAAA,KAAK,CAAE,CACpB,OAAO,IAAI,CAAC09C,mBAAmB,CAAC1gL,GAAG,CAACgjI,KAAAA,CAAAA,EAAU,CAAC,CACjD,CACAu+C,mBAAoBv+C,CAAAA,KAAK,CAAE,CACzB,OAAO,IAAI,CAACy9C,wBAAwB,CAACzgL,GAAG,CAACgjI,KAAAA,CAAAA,EAAU,CAAC,CACtD,CACAuuC,SAAAA,CAAUvuC,KAAK,CAAEyM,WAAW,CAAE,CAC5B,GAAIzM,KAAAA,CAAMlyH,OAAO,CAAE,CACjB,MAAMhN,KAAAA,CAAQ2rI,WAAc,CAAA,IAAI,CAAC8xC,mBAAmB,CAACv+C,KAAAA,CAAAA,CAAS,IAAI,CAACs+C,cAAc,CAACt+C,KAAAA,CAAAA,CAClF,GAAIl/H,KAAAA,EAAS,CAAG,CAAA,CACd,OAAO,IAAI,CAAC67K,eAAe,CAAC77K,KAAAA,CAAM,CAEtC,CACA,OAAO,KACT,CACA+8K,gBAAAA,EAAmB,CACjB,IAAI,CAACN,UAAU,CAAC15K,KAAK,EACrB,CAAA,IAAI,CAAC26K,YAAY,CAAC36K,KAAK,GACvB,IAAI,CAAC65K,mBAAmB,CAAC75K,KAAK,EAAA,CAC9B,IAAI,CAAC45K,wBAAwB,CAAC55K,KAAK,EAAA,CACnC,IAAI,IAAI5I,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC0hK,SAAS,CAACzhK,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAM+kI,KAAQ,CAAA,IAAI,CAAC28B,SAAS,CAAC1hK,CAAAA,CAAE,CAC/B,IAAI,CAACsiL,UAAU,CAAC/5K,GAAG,CAACw8H,KAAM/6F,CAAAA,EAAE,CAAE+6F,KAAAA,CAAAA,CAC9B,IAAI,CAACw+C,YAAY,CAACh7K,GAAG,CAACw8H,KAAMzhI,CAAAA,IAAI,CAAEyhI,KAClC,CAAA,CAAA,MAAMy+C,gBAAmB,CAAA,IAAI,CAAC3Q,YAAY,CAAC7yK,CAAAA,CAAE,CAAG,IAAI,CAACwiL,wBAAwB,CAAG,IAAI,CAACC,mBAAmB,CACxGe,iBAAiBj7K,GAAG,CAACw8H,KAAO/kI,CAAAA,CAAAA,EAC9B,CACF,CACAglI,YAAah7F,CAAAA,EAAE,CAAE,CACf,OAAO,IAAI,CAACs4I,UAAU,CAACvgL,GAAG,CAACioC,EAAO,CAAA,EAAA,IACpC,CACAy5I,cAAAA,CAAengL,IAAI,CAAE,CACnB,OAAO,IAAI,CAACigL,YAAY,CAACxhL,GAAG,CAACuB,IAAAA,CAAAA,EAAS,IACxC,CACAu/K,mBAAmBpQ,UAAU,CAAEyJ,QAAQ,CAAE,CACvC,IAAI,IAAIl8K,CAAAA,CAAIyyK,UAAYzyK,CAAAA,CAAAA,EAAKk8K,QAAUl8K,CAAAA,CAAAA,EAAAA,CAAI,CACzC,GAAI,IAAI,CAAC6yK,YAAY,CAAC7yK,CAAAA,CAAE,GAAK,KAAA,CAAO,CAClC,IAAI,CAAC0iL,YAAY,CAAC,IAAI,CAAChhB,SAAS,CAAC1hK,CAAAA,CAAE,CAACgqC,EAAE,CAAC,CAAGhqC,EAC5C,CACF,CACF,CACA8iL,uBAAAA,CAAwBrQ,UAAU,CAAEyJ,QAAQ,CAAE,CAC5C,IAAI,IAAIl8K,CAAAA,CAAIyyK,UAAYzyK,CAAAA,CAAAA,EAAKk8K,SAAUl8K,CAAI,EAAA,CAAA,CACzC,GAAI,IAAI,CAAC6yK,YAAY,CAAC7yK,CAAAA,CAAE,GAAK,IAAM,CAAA,CACjC,IAAI,CAAC2iL,iBAAiB,CAAC,IAAI,CAACjhB,SAAS,CAAC1hK,CAAAA,CAAE,CAACgqC,EAAE,CAAC,CAAGhqC,EACjD,CACF,CACF,CACA0jL,qBAAsBC,CAAAA,OAAO,CAAEC,OAAO,CAAEC,KAAK,CAAE,CAC7C,IAAIC,SAAY,CAAA,CAAC,CACjB,CAAA,IAAIC,SAAY,CAAA,CAAC,CACjB,CAAA,IAAI,IAAI/jL,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMyrK,OAAQ1jL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAChD,MAAMgqC,EAAAA,CAAK25I,OAAO,CAAC3jL,CAAE,CAAA,CACrB,GAAI6jL,KAAAA,CAAMx3K,cAAc,CAAC29B,EAAK,CAAA,CAAA,CAC5B85I,UAAYvkL,IAAKoU,CAAAA,GAAG,CAACmwK,SAAAA,CAAWD,KAAK,CAAC75I,EAAG,CAAA,EAC3C,CACF,CACA,IAAI,IAAIhqC,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM0rK,OAAQ3jL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAChD,MAAMgqC,EAAAA,CAAK45I,OAAO,CAAC5jL,CAAE,CAAA,CACrB,GAAI6jL,KAAAA,CAAMx3K,cAAc,CAAC29B,EAAK,CAAA,CAAA,CAC5B+5I,UAAYxkL,IAAKoU,CAAAA,GAAG,CAACowK,SAAAA,CAAWF,KAAK,CAAC75I,EAAG,CAAA,EAC3C,CACF,CACA,GAAI85I,SAAAA,GAAc,CAAC,CAAA,EAAKC,SAAc,GAAA,CAAC,EAAG,CACxC,OAAO,CACT,CAAA,KAAO,GAAIA,SAAAA,GAAc,CAAC,CAAA,EAAKD,SAAc,GAAA,CAAC,CAAG,CAAA,CAC/C,OAAO,CAAC,CACV,CACA,OAAOC,SAAYD,CAAAA,SACrB,CACAE,qBAAAA,CAAsBL,OAAO,CAAEC,OAAO,CAAE,CACtC,OAAO,IAAI,CAACF,qBAAqB,CAACC,OAAAA,CAASC,OAAS,CAAA,IAAI,CAACjB,iBAAiB,CAC5E,CACAsB,gBAAAA,CAAiBN,OAAO,CAAEC,OAAO,CAAE,CACjC,OAAO,IAAI,CAACF,qBAAqB,CAACC,OAASC,CAAAA,OAAAA,CAAS,IAAI,CAAClB,YAAY,CACvE,CAhWA36K,WAAYzE,CAAAA,IAAAA,CAAO,UAAU,CAAC,CAC5B,KAAK,EAAA,CAAI,IAAI,CAACo+J,SAAS,CAAG,EAAE,CAAE,IAAI,CAAC4gB,UAAU,CAAG,IAAIl6K,GAAO,CAAA,IAAI,CAACm7K,YAAY,CAAG,IAAIn7K,GAAO,CAAA,IAAI,CAACq6K,mBAAmB,CAAG,IAAIr6K,IAAO,IAAI,CAACo6K,wBAAwB,CAAG,IAAIp6K,GAAAA,CAAO,IAAI,CAACyqK,YAAY,CAAG,EAAE,CAAE,IAAI,CAAC6O,eAAe,CAAG,EAAE,CAAE,IAAI,CAAC/S,OAAO,CAAG,EAAE,CAAE,IAAI,CAAC0Q,UAAU,CAAG,IAAItsK,GAAAA,CAAO,IAAI,CAACuoK,cAAc,CAAG,EAAE,CAAE,IAAI,CAACv/H,MAAM,CAAG,KACtT,CAAA,IAAI,CAACz4C,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACo/K,YAAY,CAAG,EACpB,CAAA,IAAI,CAACC,iBAAiB,CAAG,GAC3B,CA4VF,CAEA,MAAMuB,MAAS,CAAA,IAAIjoK,IACnB,CAAA,MAAMkoK,UAAY,CAChBh1B,IAAAA,CAAM,CACNE,CAAAA,UAAAA,CAAY,CACd,CAAA,CACA,MAAM+0B,QAAAA,CAAW,IAAI/uK,KACrB,CAAA,MAAMgvK,MAAS,CAAA,CACb/kL,CAAG,CAAA,CAAA,CACHuU,CAAG,CAAA,CAAA,CACHhE,EAAG,CACHD,CAAAA,CAAAA,CAAG,CACL,CAAA,CACA,MAAM00K,UAAAA,CAAa,CACjB,aAAA,CAAe9uD,qBACf,CAAA,MAAA,CAAQC,cACR,CAAA,OAAA,CAASA,cACT,CAAA,MAAA,CAAQE,cACV,CAAA,CACA,MAAM4uD,mBAAsB,CAAA,CAC1B,CACE,IAAIpiK,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,GACnB,CACD,CACE,IAAIA,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,EAAK,CAAA,EAAA,CAAA,CACpB,IAAIA,IAAK,CAAA,CAAA,CAAG,EAAK,CAAA,EAAA,CAAK,EACvB,CAAA,CAAA,CACD,CACE,IAAIA,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,EAAA,CAAK,EACpB,CAAA,CAAA,IAAIA,IAAK,CAAA,CAAA,CAAG,GAAK,EAAK,CAAA,EAAA,CAAA,CACtB,IAAIA,IAAAA,CAAK,EAAK,CAAA,CAAA,CAAG,EAAK,CAAA,EAAA,CAAA,CACvB,CACD,CACE,IAAIA,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,EAAA,CAAK,EACpB,CAAA,CAAA,IAAIA,KAAK,CAAG,CAAA,EAAA,CAAK,EAAK,CAAA,EAAA,CAAA,CACtB,IAAIA,IAAAA,CAAK,EAAK,CAAA,CAAA,CAAG,EAAK,CAAA,EAAA,CAAA,CACtB,IAAIA,IAAAA,CAAK,EAAK,CAAA,EAAA,CAAK,EAAK,CAAA,EAAA,CAAA,CACzB,CACF,CACD,MAAMqiK,UAAa,CAAA,CACjB,KAAO,CAAA,CAAA,CACP,KAAO,CAAA,CAAA,CACP,KAAO,CAAA,CAAA,CACP,KAAO,CAAA,CAAA,CACP,KAAO,CAAA,CACT,CACA,CAAA,IAAIC,KAAO,CACX,CAAA,MAAMC,eAaJv7I,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACm7H,cAAc,CAAC33J,OAAO,CAAEohK,EAC3BA,EAAAA,CAAAA,EAAAA,CAAGx7H,oBAAoB,CAACpJ,OAAO,EAC/B4kI,CAAAA,EAAAA,CAAG5kI,OAAO,GACZ,CACA,CAAA,CAAA,IAAI,CAACm7H,cAAc,CAACrkK,MAAM,CAAG,EAC/B,CACA,IAAIu3J,YAAe,EAAA,CACjB,MAAMvmG,EAAK,CAAA,IAAI,CAACurG,YAAY,CAAC/9G,YAAY,CACzC,GAAIwS,EAAI,CAAA,CACN,OAAO,IAAI,CAAC+5F,KAAK,CAACoX,MAAM,CAAGnxG,EAAG3K,CAAAA,WAAW,CAAG2K,EAAAA,CAAGpL,WACjD,CACA,OAAO,IACT,CAzBA99C,WAAAA,CAAYkrI,MAAM,CAAE3iG,IAAI,CAAE06G,KAAK,CAAC,CAC9B,IAAI,CAACA,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC/X,MAAM,CAAGA,MACd,CAAA,IAAI,CAACupB,YAAY,CAAG6E,eAAeC,kBAAkB,CAACtW,KAAMuK,CAAAA,WAAW,CAAEvK,KAAAA,CAAM7wI,KAAK,CAAEm2B,KACtF,CAAA,IAAI,CAACm+G,YAAY,CAAG,IAAIlsI,IACxB,CAAA,IAAI,CAAC62I,cAAc,CAAG,IAAIj3I,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CACxC,CAAA,CAAA,IAAI,CAACk3I,aAAa,CAAG,IAAIl3I,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAG,CACvC,CAAA,CAAA,IAAI,CAAC+9I,sBAAsB,CAAG,CAC9B,CAAA,IAAI,CAAC5vH,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACotH,cAAc,CAAG,EAAE,CACxB,IAAI,CAAC4G,cAAc,CAAG,GACxB,CAeF,CACA,MAAMqgB,KAAAA,CAuFJx7I,SAAU,CACR,IAAI,CAAC69H,kBAAkB,EAAE//J,GAAAA,EACzB,CAAA,IAAI,CAAC+/J,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAAC4d,iBAAiB,EACtB,CAAA,IAAI,CAACC,iBAAiB,EACtB,CAAA,IAAI,CAACC,WAAW,CAAG,KACrB,CACA7d,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAAClD,gBAAgB,GAAK7nC,kBAAmB,CAC/C,IAAI,CAAC6nC,gBAAgB,CAAG5nC,uBAC1B,CACF,CACA0oD,iBAAoB,EAAA,CAClB,GAAI,IAAI,CAACC,WAAW,CAAE,CACpB,IAAI,IAAI9kL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8kL,WAAW,CAAC7kL,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9C,IAAI,CAAC8kL,WAAW,CAAC9kL,EAAE,CAACmpC,OAAO,GAC7B,CACA,IAAI,CAAC27I,WAAW,CAAC7kL,MAAM,CAAG,EAC5B,CACF,CACAmyK,QAASrtC,CAAAA,KAAK,CAAE,CACd,IAAI,CAACJ,MAAM,CAACr0H,GAAG,CAACy0H,KAAAA,EAClB,CACA65C,WAAAA,CAAY75C,KAAK,CAAE,CACjB,IAAI,CAACJ,MAAM,CAAC97H,MAAM,CAACk8H,KACrB,EAAA,CACA,IAAIggD,aAAAA,CAAcp9K,KAAK,CAAE,CACvB,IAAI,CAAC4vK,iBAAiB,CAAC,CAAA,CAAE,CAAG5vK,MAC9B,CACA,IAAIo9K,eAAgB,CAClB,OAAO,IAAI,CAACxN,iBAAiB,CAAC,CAAE,CAClC,CACA,IAAIyN,oBAAqBr9K,CAAAA,KAAK,CAAE,CAC9B,IAAI,CAAC4vK,iBAAiB,CAAC,CAAA,CAAE,CAAG5vK,MAC9B,CACA,IAAIq9K,oBAAuB,EAAA,CACzB,OAAO,IAAI,CAACzN,iBAAiB,CAAC,CAAE,CAClC,CACA,IAAI0N,WAAWt9K,KAAK,CAAE,CACpB,GAAI,IAAI,CAACu9K,WAAW,GAAKv9K,KAAO,CAAA,CAC9B,IAAI,CAACu9K,WAAW,CAAGv9K,KACnB,CAAA,IAAI,CAACw9K,iBAAiB,GACxB,CACF,CACA,IAAIF,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIjmB,WAAAA,CAAYt3J,KAAK,CAAE,CACrB,GAAI,CAAC,IAAI,CAACu3J,QAAQ,EAAI,IAAI,CAACD,WAAW,GAAKt3J,KAAO,CAAA,CAChD,IAAI,CAACu3J,QAAQ,CAAGqlB,mBAAmB,CAAC58K,KAAAA,CAAQ,CAAE,CAC9C,CAAA,IAAI,CAACg7J,oBAAoB,CAAG,IAAI9oJ,YAAAA,CAAa,CAAI,CAAA,EAAA,CACjD,CAAA,IAAI,CAACulJ,uBAAuB,CAAG,IAAIvlJ,YAAAA,CAAa,CAChD,CAAA,CAAA,IAAI,CAAC+qK,iBAAiB,EACtB,CAAA,IAAI,CAAC/tI,SAAS,GAChB,CACF,CACA,IAAIooH,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,QAAQ,CAACj/J,MACvB,CACA,IAAIo3K,YAAa1vK,CAAAA,KAAK,CAAE,CACtB,GAAI,IAAI,CAACy9K,aAAa,GAAKz9K,KAAO,CAAA,CAChC,IAAI,CAACy9K,aAAa,CAAGz9K,KACrB,CAAA,IAAI,CAACkvC,SAAS,GAChB,CACF,CACA,IAAIwgI,YAAe,EAAA,CACjB,OAAO,IAAI,CAAC+N,aACd,CACA,IAAIhwB,SAAUA,CAAAA,SAAS,CAAE,CACvB,GAAI,IAAI,CAACwE,UAAU,GAAKxE,SAAW,CAAA,CACjC,IAAI,CAACwvB,iBAAiB,EACtB,CAAA,IAAI,CAAChrB,UAAU,CAAGxE,UACpB,CACF,CACA,IAAIA,SAAY,EAAA,CACd,OAAO,IAAI,CAACwE,UACd,CACA,IAAIhmH,IAAKjsC,CAAAA,KAAK,CAAE,CACd,GAAI,IAAI,CAAC09K,KAAK,GAAK19K,KAAAA,CAAO,CACxB,IAAI,CAAC09K,KAAK,CAAG19K,KACb,CAAA,IAAI,CAACkvC,SAAS,EACd,CAAA,IAAI,CAACyuI,oBAAoB,GAC3B,CACF,CACA,IAAI1xI,IAAO,EAAA,CACT,OAAO,IAAI,CAACyxI,KACd,CACA,IAAIpsB,cAAiB,EAAA,CACnB,MAAMxhJ,IAAO,CAAA,IAAI,CAAC0C,KAAK,CACvB,GAAI1C,IAAS+9G,GAAAA,qBAAAA,CAAuB,CAClC,OAAO,IAAI,CAACypC,WAAW,CACzB,KAAO,GAAIxnJ,IAAAA,GAASg+G,cAAgB,CAAA,CAClC,OAAO,CACT,CACA,OAAO,CACT,CACA,IAAIh+G,IAAK9P,CAAAA,KAAK,CAAE,CACd,GAAI,IAAI,CAACwS,KAAK,GAAKxS,KAAAA,CAAO,CACxB,MACF,CACA,IAAI,CAACwS,KAAK,CAAGxS,KACb,CAAA,IAAI,CAACi9K,iBAAiB,EACtB,CAAA,IAAI,CAACO,iBAAiB,EACtB,CAAA,IAAI,CAACtuI,SAAS,EACd,CAAA,IAAI,CAACyuI,oBAAoB,GACzB,MAAMC,KAAAA,CAAQ,IAAI,CAAChwB,WACnB,CAAA,IAAI,CAACA,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC4I,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACxI,UAAU,CAAG4vB,MACpB,CACA,IAAI9tK,IAAO,EAAA,CACT,OAAO,IAAI,CAAC0C,KAAK,CAEnB,IAAI+zI,KAAMvmJ,CAAAA,KAAK,CAAE,CACf,GAAI,IAAI,CAAC69K,MAAM,GAAK79K,KAAO,CAAA,CACzB,MACF,CACA,IAAI,CAAC69K,MAAM,CAAG79K,MACd,IAAI,CAACi9K,iBAAiB,EAAA,CACtB,IAAI,CAAC/tI,SAAS,EAAA,CACd,IAAI,CAACyuI,oBAAoB,EAAA,CACzB,MAAMC,KAAAA,CAAQ,IAAI,CAAChwB,WAAW,CAC9B,IAAI,CAACA,WAAW,CAAG,IACnB,CAAA,IAAI,CAACI,UAAU,CAAG4vB,MACpB,CACA,IAAIr3B,KAAQ,EAAA,CACV,OAAO,IAAI,CAACs3B,MACd,CACA,IAAIvW,gBAAiBtnK,CAAAA,KAAK,CAAE,CAC1B,GAAI,IAAI,CAAC89K,iBAAiB,GAAK99K,KAAAA,CAAO,CACpC,IAAI,CAAC89K,iBAAiB,CAAG99K,KACzB,CAAA,IAAI,CAAC+9K,kBAAkB,GACzB,CACF,CACA,IAAIzW,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACwW,iBACd,CACA,IAAI9vB,UAAWhuJ,CAAAA,KAAK,CAAE,CACpB,GAAI,IAAI,CAAC4tJ,WAAW,GAAK5tJ,KAAAA,CAAO,CAC9B,MACF,CACA,IAAIiuJ,UAAAA,CAAav+B,cAAet1H,CAAAA,GAAG,CAAC4F,KAAAA,CAAAA,CACpC,GAAI,CAACiuJ,WAAY,CACfjuJ,KAAAA,CAAQ4uH,gBACV,CACA,MAAMtsF,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,GAAItiC,KAAUsvH,GAAAA,eAAAA,GAAoB,CAAChtF,MAAOqT,CAAAA,sBAAsB,EAAI,CAACrT,MAAOoT,CAAAA,sBAAsB,CAAD,CAAI,CACnG11C,KAAAA,CAAQ4uH,gBACV,CACA,GAAI,IAAI,CAACp8G,KAAK,GAAKs7G,cAAkB9tH,EAAAA,KAAAA,GAAUovH,eAAmBpvH,EAAAA,KAAAA,GAAU4uH,eAAmB5uH,EAAAA,KAAAA,GAAUuvH,eAAmBvvH,EAAAA,KAAAA,GAAUwvH,eAAmBxvH,EAAAA,KAAAA,GAAUsvH,gBAAiB,CAClLtvH,KAAAA,CAAQ4uH,gBACV,CACA,GAAI5uH,KAAAA,GAAUgvH,cAAmB,GAAA,CAAC1sF,MAAAA,CAAOqT,sBAAsB,EAAI,CAACrT,MAAAA,CAAOoT,sBAAqB,EAAI,CAClG11C,KAAAA,CAAQ8uH,eACV,CACA,GAAI9uH,KAAAA,GAAU8uH,cAAkB,EAAA,CAACxsF,OAAO8Y,0BAA0B,CAAE,CAClEp7C,KAAAA,CAAQ4uH,gBACV,CACAq/B,UAAav+B,CAAAA,cAAAA,CAAet1H,GAAG,CAAC4F,KAAAA,CAChC,CAAA,IAAI,CAAC88J,MAAM,CAAG7O,UAAAA,EAAYp+B,GAAO,EAAA,KACjC,CAAA,IAAI,CAAC4qC,MAAM,CAAGxM,UAAAA,EAAYr+B,KAAO,KACjC,CAAA,IAAI,CAACg+B,WAAW,CAAG5tJ,KACnB,CAAA,IAAI,CAACi9K,iBAAiB,EACtB,CAAA,IAAI,CAAC/tI,SAAS,GAChB,CACA,IAAI8+G,UAAa,EAAA,CACf,OAAO,IAAI,CAACJ,WAAW,CAEzB,IAAI1iJ,OAAAA,CAAQlL,KAAK,CAAE,CACjB,GAAI,IAAI,CAACksE,QAAQ,GAAKlsE,KAAAA,CAAO,CAC3B,IAAI,CAACksE,QAAQ,CAAGlsE,KAAAA,CAChB,IAAI,CAACg+K,WAAW,GAClB,CACF,CACA,IAAI9yK,OAAU,EAAA,CACZ,OAAO,IAAI,CAACghE,QACd,CACA,IAAIs6E,WAAYxmJ,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAACi+K,YAAY,GAAKj+K,KAAAA,CAAO,CAC/B,IAAI,CAACi+K,YAAY,CAAGj+K,KACpB,CAAA,IAAI,CAACi9K,iBAAiB,GACtB,IAAI,CAACe,WAAW,EAAA,CAChB,IAAI,CAAC9uI,SAAS,GAChB,CACF,CACA,IAAIs3G,WAAc,EAAA,CAChB,OAAO,IAAI,CAACy3B,YAAY,EAAI,IAAI,CAACP,KAAK,GAAK9oD,SAAAA,EAAa,IAAI,CAAC8oD,KAAK,GAAK,CACzE,CACA,IAAI/N,eAAgB3vK,CAAAA,KAAK,CAAE,CACzB,GAAI,IAAI,CAACk+K,gBAAgB,GAAKl+K,KAAO,CAAA,CACnC,IAAI,CAACk+K,gBAAgB,CAAGl+K,KAAAA,CACxB,IAAI,CAACkvC,SAAS,GAChB,CACF,CACA,IAAIygI,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACuO,gBACd,CACA,IAAIC,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACF,YAAY,EAAI,IAAI,CAACP,KAAK,GAAK9oD,SAC7C,CACA,IAAIwpD,gBAAAA,CAAiBp+K,KAAK,CAAE,CAC1B,GAAI,IAAI,CAAC2tJ,iBAAiB,GAAK3tJ,KAAAA,CAAO,CACpC,GAAI,IAAI,CAACwS,KAAK,GAAKs7G,cAAgB,CAAA,CACjC9tH,MAAQpI,IAAKmU,CAAAA,GAAG,CAAC/L,KAAAA,CAAO,IAAI,CAACsiC,MAAM,CAAC8tC,cAAc,EACpD,CAAA,KAAO,CACLpwE,KAAAA,CAAQpI,IAAKmU,CAAAA,GAAG,CAAC/L,KAAAA,CAAO,IAAI,CAACsiC,MAAM,CAAC4tC,cAAc,EACpD,CACA,IAAI,CAACy9E,iBAAiB,CAAG3tJ,KACzB,CAAA,IAAI,CAACi9K,iBAAiB,GACxB,CACF,CACA,IAAImB,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACzwB,iBACd,CACA,IAAI0wB,WAAYr+K,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC+8J,YAAY,GAAK/8J,KAAO,CAAA,CAC/B,MACF,CACA,GAAIA,KAAAA,CAAQ,CAAM,GAAA,CAAA,CAAGA,KACrB,EAAA,CAAA,IAAI,CAAC+8J,YAAY,CAAG/8J,MACtB,CACA,IAAIq+K,WAAc,EAAA,CAChB,OAAO,IAAI,CAACthB,YAAY,CAE1B,IAAIuhB,gBAAiBt+K,CAAAA,KAAK,CAAE,CAC1B,GAAI,IAAI,CAACu+K,iBAAiB,GAAKv+K,KAAO,CAAA,CACpC,MAAMgrC,KAAAA,CAAQ,CAAC,IAAI,CAACuzI,iBAAiB,EAAIv+K,KAAAA,EAAS,IAAI,CAACu+K,iBAAiB,EAAI,CAACv+K,KAC7E,CAAA,IAAI,CAACu+K,iBAAiB,CAAGv+K,KACzB,CAAA,GAAIgrC,KAAO,CAAA,CACT,IAAI,CAACkE,SAAS,GAChB,CACF,CACF,CACA,IAAIovI,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACC,iBACd,CACA,IAAIC,WAAYx+K,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAACy+K,YAAY,GAAKz+K,KAAO,CAAA,CAC/B,MACF,CACA,IAAI,CAACy+K,YAAY,CAAGz+K,KAAAA,CACpB,IAAI,CAACkvC,SAAS,EAAA,CACd,IAAI,CAACyuI,oBAAoB,GAC3B,CACA,IAAIa,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIC,cAAe1+K,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAAC2+K,eAAe,GAAK3+K,KAAO,CAAA,CAClC,MACF,CACA,IAAI,CAAC2+K,eAAe,CAAG3+K,KACvB,CAAA,IAAI,CAACuwK,kBAAkB,CAAG34K,IAAKuc,CAAAA,GAAG,CAACnU,KAAAA,CAAQpI,IAAKgU,CAAAA,EAAE,CAAG,GAAA,CAAA,CACrD,IAAI,CAACgzK,iBAAiB,CAAC,KAAO,CAAA,IAAA,CAAA,CAC9B,GAAI,IAAI,CAACd,iBAAiB,CAAE,CAC1B,IAAI,CAACC,kBAAkB,GACzB,CACF,CACA,IAAIW,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eACd,CACA,IAAIE,cAAAA,CAAe7+K,KAAK,CAAE,CACxB,GAAI,IAAI,CAACwjJ,eAAe,GAAKxjJ,KAAO,CAAA,CAClC,MACF,CACA,IAAI,CAACwjJ,eAAe,CAAGxjJ,KAAAA,CACvB,IAAI,CAAC8+K,iBAAiB,CAAC9+K,KACvB,CAAA,CAAA,GAAI,IAAI,CAAC89K,iBAAiB,CAAE,CAC1B,IAAI,CAACC,kBAAkB,GACzB,CACF,CACA,IAAIc,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACr7B,eACd,CACA,IAAIssB,YAAa9vK,CAAAA,KAAK,CAAE,CACtB,IAAI,CAAC++K,aAAa,CAAG/+K,KACrB,CAAA,IAAI,CAAC4vK,iBAAiB,CAAC,CAAE,CAAA,CAAG5vK,MAC9B,CACA,IAAI8vK,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACiP,aAAa,CAE3B,IAAIC,eAAAA,CAAgBh/K,KAAK,CAAE,CACzB,IAAI,CAAC4vK,iBAAiB,CAAC,CAAA,CAAE,CAAG5vK,MAC9B,CACA,IAAIg/K,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACpP,iBAAiB,CAAC,CAAE,CAClC,CACAkP,iBAAAA,CAAkB5qK,KAAK,CAAE,CACvB,MAAM+qK,SAAW/qK,KAAQtc,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,GACnC,CAAA,IAAI,CAAC4kK,kBAAkB,CAAG54K,IAAKuc,CAAAA,GAAG,CAAC8qK,QAAAA,CACnC,CAAA,IAAI,CAACC,kBAAkB,CAAGtnL,IAAKyc,CAAAA,GAAG,CAAC4qK,QAAAA,CAAAA,CACnC,IAAI,CAACL,iBAAiB,CAAC,KAAA,CAAO,IAChC,EAAA,CACA,IAAI7kE,SAAAA,CAAU/5G,KAAK,CAAE,CACnB,GAAI,IAAI,CAACitJ,UAAU,GAAKjtJ,KAAAA,CAAO,CAC7B,IAAI,CAACitJ,UAAU,CAAGjtJ,KAAAA,CAClB,IAAI,CAAC+9K,kBAAkB,GACzB,CACF,CACA,IAAIhkE,SAAY,EAAA,CACd,OAAO,IAAI,CAACkzC,UAAU,CAExB,IAAIkyB,iBAAAA,CAAkBn/K,KAAK,CAAE,CAC3B,GAAI,IAAI,CAACwS,KAAK,GAAKq7G,qBAAAA,CAAuB,CACxC,IAAI,CAACuxD,kBAAkB,CAAGp/K,KAAAA,CAC1B,IAAI,CAACkvC,SAAS,GAChB,CACF,CACA,IAAIiwI,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACC,kBAAkB,CAEhC,IAAIC,SAAUr/K,CAAAA,KAAK,CAAE,CACnB,GAAI,IAAI,CAACs/K,UAAU,GAAKt/K,KAAO,CAAA,CAC7B,IAAI,CAACs/K,UAAU,CAAGt/K,KAClB,CAAA,IAAI,CAAC+9K,kBAAkB,GACzB,CACF,CACA,IAAIsB,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAI57B,YAAe,EAAA,CACjB,GAAI,CAAC,IAAI,CAAC67B,aAAa,CAAE,CACvB,IAAI,CAACA,aAAa,CAAG,IAAI3kK,KAC3B,CACA,OAAO,IAAI,CAAC2kK,aAAa,CAE3B,IAAI37B,aAAAA,EAAgB,CAClB,GAAI,CAAC,IAAI,CAAC47B,cAAc,CAAE,CACxB,IAAI,CAACA,cAAc,CAAG,IAAIhlK,KAAK,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,EAC1C,CACA,OAAO,IAAI,CAACglK,cAAc,CAE5B,IAAIvuB,MAAAA,CAAOjxJ,KAAK,CAAE,CAChB,GAAI,IAAI,CAAComJ,OAAO,GAAKpmJ,KAAO,CAAA,CAC1B,MACF,CACA,IAAI,CAAComJ,OAAO,CAAGpmJ,KAAAA,CACf,IAAI,CAACkvC,SAAS,GAChB,CACA,IAAI+hH,MAAS,EAAA,CACX,OAAO,IAAI,CAAC7K,OAAO,CAErB,IAAIq5B,aAAcz/K,CAAAA,KAAK,CAAE,CACvB,GAAI,IAAI,CAAC0/K,cAAc,GAAK1/K,KAAAA,CAAO,CACjC,MACF,CACA,IAAI,CAAC0/K,cAAc,CAAG1/K,KACtB,CAAA,IAAI,CAACkvC,SAAS,GAChB,CACA,IAAIuwI,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIC,aAAc3/K,CAAAA,KAAK,CAAE,CACvB,GAAI,IAAI,CAAC4/K,cAAc,GAAK5/K,KAAAA,CAAO,CACjC,MACF,CACA,GAAIA,KAAM1H,CAAAA,MAAM,CAAG,CAAG,CAAA,CACpB,MAAMunL,GAAAA,CAAM7/K,KAAMnG,CAAAA,MAAM,CAACmG,KAAAA,CAAM1H,MAAM,CAAG,CACxC,CAAA,CAAA,MAAMwnL,MAAS,CAAA,CAAA,CAAI9/K,KAAM1H,CAAAA,MAAM,CAC/B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIynL,CAAAA,MAAAA,CAAQznL,CAAI,EAAA,CAAA,CAC7B2H,KAAS6/K,EAAAA,IACX,CACF,CACA,IAAI,CAACD,cAAc,CAAG5/K,MACtB,IAAI,CAACkvC,SAAS,EAAA,CACd,IAAI,CAACyuI,oBAAoB,GAC3B,CACA,IAAIgC,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIG,eAAAA,CAAgB//K,KAAK,CAAE,CACzB,GAAI,IAAI,CAAC0wK,gBAAgB,GAAK1wK,KAAO,CAAA,CACnC,MACF,CACA,IAAI,CAAC0wK,gBAAgB,CAAG1wK,KACxB,CAAA,IAAI,CAACggL,mBAAmB,CAAG,CAAC,CAAChgL,KAAAA,CAC7B,GAAIA,KAAAA,EAAS,CAAC,IAAI,CAAC6wK,aAAa,CAAE,CAChC,IAAI,CAACoP,YAAY,CAAG,IAAI/lK,IACxB,CAAA,IAAI,CAACgmK,gBAAgB,CAAG,MAC1B,CACA,IAAI,CAAChxI,SAAS,GAChB,CACA,IAAI6wI,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACrP,gBAAgB,CAE9B,IAAIuP,YAAAA,CAAajgL,KAAK,CAAE,CACtB,GAAI,IAAI,CAAC6wK,aAAa,GAAK7wK,KAAAA,CAAO,CAChC,MACF,CACA,MAAMmgL,QAAW,CAAA,CAAC,EAAE,IAAI,CAACH,mBAAmB,EAAIhgL,KAAI,CACpD,CAAA,GAAImgL,QAAY,EAAA,CAACngL,KAAS,EAAA,IAAI,CAAC6wK,aAAa,CAAE,CAC5C,IAAI,CAACA,aAAa,CAACjwK,GAAG,CAAC,CAAA,CAAG,GAC5B,CAAO,KAAA,CACL,IAAI,CAACiwK,aAAa,CAAG7wK,MACvB,CACA,IAAI,CAACkgL,gBAAgB,CAAG,CAAC,CAAClgL,KAC1B,CAAA,GAAIA,OAAS,CAAC,IAAI,CAAC0wK,gBAAgB,CAAE,CACnC,IAAI,CAACqP,eAAe,CAAG,IAAIvlK,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CACzC,CAAA,CAAA,IAAI,CAACwlK,mBAAmB,CAAG,MAC7B,CACA,IAAI,CAAC9wI,SAAS,GAChB,CACA,IAAI+wI,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACpP,aAAa,CAE3BjI,UAAa,EAAA,CACX,IAAI,CAACx7B,gBAAgB,CAAG,IAAI,CAAC56H,KAAK,GAAKq7G,qBAAyB,EAAA,IAAI,CAAC3hD,QAAQ,CAC7E,IAAI,CAACglF,aAAa,CAAG,CACrB,CAAA,IAAI,CAACjL,sBAAsB,CAAG,KAC9B,CAAA,IAAI,CAAC4L,gBAAgB,CAAG,MAC1B,CACAorB,iBAAoB,EAAA,CAClB,IAAI,CAACC,iBAAiB,EAAA,CACtB,GAAI,IAAI,CAACjrB,UAAU,CAAE,CACnB,GAAI,CAAC,IAAI,CAACA,UAAU,CAAC7D,MAAM,CAAE,CAC3B,IAAI,CAAC6D,UAAU,CAACzwH,OAAO,GACzB,CACA,IAAI,CAACywH,UAAU,CAAG,KACpB,CACA,GAAI,IAAI,CAACmK,gBAAgB,GAAK7nC,iBAAmB,CAAA,CAC/C,IAAI,CAAC6nC,gBAAgB,CAAG5nC,uBAC1B,CACA,GAAI,IAAI,CAACgiC,qBAAqB,CAAE,CAC9B,IAAI,IAAIn+J,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACm+J,qBAAqB,CAACl+J,MAAM,CAAED,CAAI,EAAA,CAAA,CACxD,GAAI,IAAI,CAACm+J,qBAAqB,CAACn+J,CAAE,CAAA,GAAKk8H,iBAAmB,CAAA,CACvD,IAAI,CAACiiC,qBAAqB,CAACn+J,CAAAA,CAAE,CAAGm8H,uBAClC,CACF,CACF,CACF,CACAqyB,aAAAA,CAAcvb,MAAM,CAAE3iG,IAAI,CAAE,CAC1B,IAAI,IAAItwC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8kL,WAAW,CAAC7kL,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC9C,MAAMyP,OAAU,CAAA,IAAI,CAACq1K,WAAW,CAAC9kL,CAAAA,CAAE,CACnC,GAAIyP,OAAQwjI,CAAAA,MAAM,GAAKA,MAAAA,EAAUxjI,QAAQ6gC,IAAI,GAAKA,IAAM,CAAA,CACtD,OAAO7gC,OACT,CACF,CACA,MAAMs4K,EAAAA,CAAK,IAAIrD,eAAAA,CAAgBzxC,MAAQ3iG,CAAAA,IAAAA,CAAM,IAAI,CAAA,CACjD,IAAI,CAACw0I,WAAW,CAAChkL,IAAI,CAACinL,EAAAA,CAAAA,CACtB,OAAOA,EACT,CACAzyK,KAAQ,EAAA,CACN,MAAMA,KAAAA,CAAQ,IAAIqvK,KAAAA,CAAM,IAAI,CAAC16I,MAAM,CAAE,IAAI,CAAC+9I,iBAAiB,CAC3D1yK,CAAAA,KAAMmC,CAAAA,IAAI,CAAG,IAAI,CAAC0C,KAAK,CACvB7E,KAAAA,CAAM2yK,QAAQ,CAAC,IAAI,CAACnzB,MAAM,CAC1Bx/I,CAAAA,KAAMosG,CAAAA,SAAS,CAAG,IAAI,CAACkzC,UACvBt/I,CAAAA,KAAAA,CAAMwxK,iBAAiB,CAAG,IAAI,CAACC,kBAAkB,CACjDzxK,KAAM0xK,CAAAA,SAAS,CAAG,IAAI,CAACC,UAAU,CACjC3xK,KAAM64I,CAAAA,WAAW,CAAG,IAAI,CAACA,WAAW,CACpC74I,KAAAA,CAAMu+D,QAAQ,CAAG,IAAI,CAACA,QACtBv+D,CAAAA,KAAM4yK,CAAAA,gBAAgB,CAAG,IAAI,CAACA,gBAAgB,CAC9C5yK,MAAMw5I,cAAc,CAAG,IAAI,CAACA,cAC5Bx5I,CAAAA,KAAAA,CAAM6wK,WAAW,CAAG,IAAI,CAACC,YACzB9wK,CAAAA,KAAAA,CAAMqgJ,UAAU,CAAG,IAAI,CAACJ,WAAW,CACnCjgJ,KAAM0wK,CAAAA,WAAW,CAAG,IAAI,CAACthB,YAAY,CACrCpvJ,KAAM+vJ,CAAAA,WAAW,CAAG,IAAI,CAACA,WACzB/vJ,CAAAA,KAAAA,CAAM6yK,OAAO,CAAG,IAAI,CAACA,OACrB7yK,CAAAA,KAAAA,CAAMyuJ,gBAAgB,CAAG,IAAI,CAACA,gBAAgB,CAC9CzuJ,KAAMs+B,CAAAA,IAAI,CAAG,IAAI,CAACA,IAAI,CACtB,GAAI,IAAI,CAACuqH,qBAAqB,CAAE,CAC9B7oJ,MAAM6oJ,qBAAqB,CAAG,IAAI,CAACA,qBAAqB,CAACt9J,KAAK,GAChE,CACAyU,KAAAA,CAAM+wK,cAAc,CAAG,IAAI,CAACC,eAC5BhxK,CAAAA,KAAMkxK,CAAAA,cAAc,CAAG,IAAI,CAACr7B,eAAe,CAC3C71I,MAAM2pJ,WAAW,CAAG,IAAI,CAACA,WACzB3pJ,CAAAA,KAAAA,CAAMirJ,mBAAmB,CAAG,IAAI,CAACA,mBAAmB,CACpDjrJ,KAAM+hK,CAAAA,YAAY,CAAG,IAAI,CAAC+N,aAAa,CACvC9vK,KAAM44I,CAAAA,KAAK,CAAG,IAAI,CAACs3B,MAAM,CACzBlwK,KAAMitJ,CAAAA,gBAAgB,CAACxjK,IAAI,CAAC,IAAI,CAACwjK,gBAAgB,CACjDjtJ,CAAAA,KAAAA,CAAM2vK,UAAU,CAAG,IAAI,CAACA,UAAU,CAClC3vK,KAAM2wK,CAAAA,gBAAgB,CAAG,IAAI,CAACC,iBAAiB,CAC/C5wK,KAAMywK,CAAAA,gBAAgB,CAAG,IAAI,CAACzwB,iBAC9BhgJ,CAAAA,KAAAA,CAAMypJ,cAAc,CAAG,IAAI,CAACA,cAC5BzpJ,CAAAA,KAAAA,CAAMgiK,eAAe,CAAG,IAAI,CAACA,eAAe,CAC5ChiK,KAAMyvK,CAAAA,aAAa,CAAG,IAAI,CAACA,aAAa,CACxCzvK,KAAM0vK,CAAAA,oBAAoB,CAAG,IAAI,CAACA,oBAAoB,CACtD1vK,KAAAA,CAAMmiK,YAAY,CAAG,IAAI,CAACA,YAC1BniK,CAAAA,KAAMqxK,CAAAA,eAAe,CAAG,IAAI,CAACA,eAAe,CAC5C,OAAOrxK,KACT,CACA,OAAO8yK,sBAAuB3wK,CAAAA,IAAI,CAAE4wK,UAAAA,CAAa9oL,IAAKgU,CAAAA,EAAE,CAAG,CAAC,CAAE+0K,UAAAA,CAAa,CAAC,CAAE,CAC5E,OAAO7wK,MACL,KAAKk+G,cAAAA,CACH,CACE,MAAM4yD,UAAahpL,CAAAA,IAAAA,CAAKuc,GAAG,CAACusK,YAC5B,MAAMG,YAAAA,CAAejpL,IAAKuc,CAAAA,GAAG,CAACwsK,UAAAA,CAAAA,CAC9B,OAAO,CAAA,CAAI/oL,KAAKgU,EAAE,EAAI,CAAA,CAAIi1K,YAAe,CAACA,CAAAA,YAAAA,CAAeD,UAAS,EAAK,CAAE,CAC3E,CACF,KAAK9yD,cACH,CAAA,OAAO,EAAIl2H,IAAKgU,CAAAA,EAAE,CACpB,KAAKiiH,qBACH,CAAA,OAAO,CACX,CACF,CACAy5B,qBAAsBV,CAAAA,eAAe,CAAE,CACrC,MAAMlO,OAAAA,CAAUkO,eAAgBiO,CAAAA,YAAY,CAAClc,QAAQ,CACrD,OAAO,IAAI,CAACnmI,KAAK,EACf,KAAKs7G,cACH0uD,CAAAA,SAAAA,CAAUh1B,IAAI,CAAG,IAAI,CAAC81B,UACtBd,CAAAA,SAAU90B,CAAAA,UAAU,CAAG,IAAI,CAAC62B,iBAAiB,CAC7C,MACGvwD,KAAAA,cAAAA,CACH,GAAI,IAAI,CAAC8uC,MAAM,CAAE,CACf0f,UAAUh1B,IAAI,CAAG,CAAC,IAAA,CAAO,GAC3B,CAAA,KAAO,CACLg1B,SAAAA,CAAUh1B,IAAI,CAAG,IAAI,CAAC81B,UAAU,CAAG,GACrC,CACAd,UAAU90B,UAAU,CAAG,IAAI,CAACoV,MAAM,CAAG,IAAI,CAAC0jB,OAAO,EAAI,IAAI,CAACr5B,cAAc,CAAG,CAAE,CAAA,CAAK,IAAI,CAACo3B,iBAAiB,CACxG,MACG1wD,KAAAA,qBAAAA,CACH,GAAI,IAAI,CAACivC,MAAM,CAAE,CACf0f,SAAUh1B,CAAAA,IAAI,CAAG,CAAC,KAAO,GAC3B,CAAA,KAAO,CACLg1B,SAAAA,CAAUh1B,IAAI,CAAG,IAAI,CAAC81B,UAAU,CAAG5kC,OAAU,CAAA,IAC/C,CACA8jC,SAAAA,CAAU90B,UAAU,CAAG,IAAI,CAACoV,MAAM,CAAG,IAAI,CAAC0jB,OAAO,EAAI9nC,OAAU,CAAA,CAAE,CAAK,CAAA,IAAI,CAAC6lC,iBAAiB,CAC5F,KACJ,CACA,OAAO/B,SACT,CACAsE,QAAAA,EAAW,CACT,OAAO,IAAI,CAAC3zB,MAAM,CAEpBka,iBAAkBz+I,CAAAA,MAAM,CAAE,CACxB,GAAI,IAAI,CAACpW,KAAK,GAAKw7G,cAAgB,CAAA,CACjC,MAAMzwH,IAAAA,CAAO,IAAI,CAAC4pJ,cAAc,CAChC,MAAMjzI,KAAAA,CAAQ,IAAI,CAACsvI,eAAe,CAClC,MAAMu9B,QAAW,CAAA,IAAI,CAACvQ,kBAAkB,CACxC,MAAM/nC,IAAO,CAAA,IAAI,CAAC+Q,KAAK,CACvB+iC,MAAAA,CAAOnlL,IAAI,CAACqxI,IAAK7rH,CAAAA,EAAE,EACnB,GAAI1I,KAAAA,CAAQ,EAAI,CAAA,CACd0U,MAAO/U,CAAAA,MAAM,CAAGtW,IAAAA,CAAO,IAAI,CAAC2hL,kBAAkB,CAC9C3C,MAAOpuK,CAAAA,SAAS,CAAC,CAAC5Q,KAAOwjL,QAC3B,EAAA,CAAA,KAAO,CACLn4J,MAAAA,CAAO/U,MAAM,CAAGtW,IAAQ,EAAA,EAAIwjL,QAAO,CAAA,CACnCxE,MAAOpuK,CAAAA,SAAS,CAAC,CAACya,MAAO/U,CAAAA,MAAM,EACjC,CACA+U,MAAAA,CAAOpF,MAAM,CAAChP,IAAI,CAACi0H,IAAK9lB,CAAAA,WAAW,EAAI45D,CAAAA,MAAAA,EACzC,CAAO,KAAA,GAAI,IAAI,CAAC/pK,KAAK,GAAKs7G,eAAgB,CACxCllG,MAAAA,CAAOpF,MAAM,CAAG,IAAI,CAACg2H,KAAK,CAAC72B,WAAW,EACtC/5F,CAAAA,MAAO/U,CAAAA,MAAM,CAAG,IAAI,CAACszI,eAAc,CAEvC,CACA8D,cAAe+1B,CAAAA,GAAG,CAAE,CAClB,GAAI,IAAI,CAACxuK,KAAK,GAAKw7G,cAAAA,CAAgB,CACjC,MAAM0tB,KAAQ,CAAA,IAAI,CAACyL,cAAc,CACjC,MAAMjzI,KAAAA,CAAQ,IAAI,CAACsvI,eAAe,CAClC,MAAM/a,IAAO,CAAA,IAAI,CAAC+Q,KAAK,CACvB,MAAMynC,GAAMrpL,CAAAA,IAAAA,CAAKma,GAAG,CAACna,IAAAA,CAAKyc,GAAG,CAACH,KAAQxI,CAAAA,IAAAA,CAAKC,UAAU,CAAA,CAAI+vI,KACzDslC,CAAAA,CAAAA,GAAAA,CAAIx9J,MAAM,CAAC5iB,GAAG,CAAC,CAAG,CAAA,CAAC86I,MAAQ,EAAK,CAAA,CAAA,CAAA,CAChCslC,GAAIn9J,CAAAA,WAAW,CAACjjB,GAAG,CAACqgL,GAAAA,CAAKvlC,KAAQ,CAAA,EAAA,CAAKulC,GACtCD,CAAAA,CAAAA,GAAAA,CAAI95J,sBAAsB,CAAC85J,GAAKv4C,CAAAA,IAAAA,CAAKzI,iBAAiB,EAAI,CAAA,IAAA,EAC5D,CAAO,KAAA,GAAI,IAAI,CAACxtH,KAAK,GAAKs7G,cAAgB,CAAA,CACxCkzD,GAAIx9J,CAAAA,MAAM,CAACpsB,IAAI,CAAC,IAAI,CAACoiJ,KAAK,CAAC72B,WAAW,EAAA,CAAA,CACtCq+D,GAAIn9J,CAAAA,WAAW,CAACjjB,GAAG,CAAC,IAAI,CAACumJ,cAAc,CAAE,IAAI,CAACA,cAAc,CAAE,IAAI,CAACA,cAAc,EACnF,CACF,CACAq2B,iBAAAA,EAAoB,CAClB,GAAI,IAAI,CAAChrK,KAAK,GAAKs7G,cAAkB,EAAA,CAAC,IAAI,CAACuyD,iBAAiB,CAAE,CAC5D,IAAI,CAACzlB,gBAAgB,CAACzrH,SAAS,CAAG,CAClC,CAAA,IAAI,CAACyrH,gBAAgB,CAACvrH,cAAc,CAAG,EACzC,CAAO,KAAA,CACL,MAAMm4G,IAAAA,CAAO,IAAI,CAAC81B,UAAU,CAAG,CAAC,GAChC,CAAA,IAAI,CAAC1iB,gBAAgB,CAACzrH,SAAS,CAAGq4G,IAClC,CAAA,IAAI,CAACoT,gBAAgB,CAACvrH,cAAc,CAAGm4G,KACzC,CACF,CACAu2B,kBAAqB,EAAA,CACnB,IAAIhkE,SAAAA,CAAY,IAAI,CAACkzC,UAAU,CAC/B,GAAI,IAAI,CAAC6wB,iBAAiB,CAAE,CAC1B/jE,SAAAA,CAAY,IAAI,CAACulE,UAAU,CAAGtC,KAAMyD,CAAAA,sBAAsB,CAAC,IAAI,CAACjuK,KAAK,CAAE,IAAI,CAACgxI,eAAe,CAAG93I,IAAKC,CAAAA,UAAU,CAAE,IAAI,CAACgzK,eAAe,CAAGjzK,IAAAA,CAAKC,UAAU,EACvJ,CACA,MAAM2wC,KAAAA,CAAQ,IAAI,CAAC6wG,MAAM,CACzB,MAAM+zB,WAAAA,CAAc,IAAI,CAACzR,YAAY,CACrC,GAAI11D,SAAAA,EAAa,CAAG,CAAA,CAClB0iE,SAASzuK,MAAM,CAACsuC,KAAOnuC,CAAAA,CAAAA,SAAS,CAAC4rG,SAAAA,EACnC,CAAO,KAAA,CACL0iE,SAASrlL,IAAI,CAACklD,KAAOnuC,CAAAA,CAAAA,SAAS,CAAC4rG,SAAAA,CAAAA,CAAW/rG,MAAM,GAClD,CACAkzK,WAAW,CAAC,CAAE,CAAA,CAAGzE,QAAS9kL,CAAAA,CAAC,CAC3BupL,WAAW,CAAC,CAAE,CAAA,CAAGzE,QAASvwK,CAAAA,CAAC,CAC3Bg1K,WAAW,CAAC,CAAA,CAAE,CAAGzE,QAAAA,CAASv0K,CAAC,CAC3B,IAAI,CAAC02K,iBAAiB,CAAC,IAAA,EACzB,CACA0B,QAAAA,EAAW,CACT,GAAI5zF,SAAUp0F,CAAAA,MAAM,GAAK,CAAG,CAAA,CAC1B,IAAI,CAAC60J,MAAM,CAACvsJ,GAAG,CAAC8rF,SAAS,CAAC,CAAE,CAAA,CAAC/0F,CAAC,CAAE+0F,SAAS,CAAC,EAAE,CAACxgF,CAAC,CAAEwgF,SAAS,CAAC,CAAA,CAAE,CAACxkF,CAAC,EAChE,CAAO,KAAA,GAAIwkF,SAAUp0F,CAAAA,MAAM,GAAK,CAAA,CAAG,CACjC,IAAI,CAAC60J,MAAM,CAACvsJ,GAAG,CAAC8rF,SAAS,CAAC,CAAE,CAAA,CAAEA,SAAS,CAAC,CAAE,CAAA,CAAEA,SAAS,CAAC,CAAE,CAAA,EAC1D,CACA,IAAI,CAACqxF,kBAAkB,GACzB,CACAC,WAAAA,EAAc,CACZ,IAAI,CAAChhD,MAAM,CAACh4H,OAAO,CAAEo4H,KACnB,EAAA,CAAA,GAAIA,MAAMy5C,QAAQ,CAAC,IAAI,CAAA,CAAG,CACxBz5C,KAAAA,CAAMq5C,eAAe,GACvB,CACF,CAAA,EACF,CACAvnI,SAAAA,EAAY,CACV,IAAIhvC,GAAM,CAAA,IAAI,CAACsS,KAAK,EAAI,EAAK,CAAA,IAAI,CAACo7I,WAAW,EAAI,EAAA,CAAK,IAAI,CAAC6wB,YAAY,EAAI,EAAA,CAAK,CAAC,IAAI,CAACF,iBAAiB,GAAK,CAAA,CAAM,CAAI,CAAA,CAAA,GAAM,EAAA,CAAK,CAAC,IAAI,CAACn4B,OAAO,CAAG,CAAI,CAAA,CAAA,GAAM,EAAA,CAAK,CAAC,IAAI,CAACs5B,cAAc,CAAG,CAAA,CAAI,CAAA,GAAM,EAAKhD,CAAAA,MAAM,CAAC,IAAI,CAACkD,cAAc,CAAC/lL,MAAM,CAAC,CAAG,CAAA,CAAA,EAAI,EAAK,CAAC,CAAA,IAAI,CAAC62K,gBAAgB,CAAG,CAAA,CAAI,CAAA,GAAM,EAAK,CAAA,IAAI,CAACmN,MAAM,EAAI,EAAK,CAAC,CAAA,IAAI,CAACvmB,WAAW,CAAG,CAAA,CAAI,EAAI,CAAA,GAAM,CAAI,CAAC,CAAA,IAAI,CAACmmB,aAAa,CAAG,CAAI,CAAA,CAAA,CAAI,CAAA,GAAM,CAAI,CAAC,CAAA,IAAI,CAAC0B,iBAAiB,CAAG,CAAA,CAAI,CAAA,GAAM,CAAI,CAAA,IAAI,CAAClzI,IAAI,EAAI,CAAI,CAAC,CAAA,IAAI,CAACgyI,YAAY,CAAG,CAAA,CAAI,CAAA,GAAM,CACtd,CAAA,GAAI,IAAI,CAAC2B,cAAc,CAACtnL,MAAM,GAAK,CAAA,CAAG,CACpC4H,GAAAA,EAAOw8K,MAAM,CAAC,IAAI,CAACkD,cAAc,CAAC/lL,MAAM,CAAC,CAAG,CAAA,CAAA,EAAI,GAChDqG,GAAOw8K,EAAAA,MAAM,CAAC,IAAI,CAACkD,cAAc,CAAC/lL,MAAM,CAAC,CAAG,CAAA,CAAA,EAAI,GAClD,CACA,GAAIqG,GAAAA,GAAQ,IAAI,CAACA,GAAG,CAAE,CACpB,IAAI,CAAC89K,WAAW,GAClB,CACA,IAAI,CAAC99K,GAAG,CAAGA,IACb,CACAy9K,oBAAAA,EAAuB,CACrB,MAAMwD,UAAY,CAAC,EAAE,IAAI,CAACl1I,IAAI,CAAGyoF,mBAAkB,EACnD,MAAM0sD,aAAAA,CAAgB,CAAC,EAAE,IAAI,CAACn1I,IAAI,CAAG0oF,uBAAsB,CAC3D,CAAA,IAAI,CAAC0sD,cAAc,CAAI,CAAA,IAAI,CAACvxK,IAAI,GAAKk+G,cAAAA,CAAiB,CAAI,CAAA,CAAA,GAAM,EAAK,CAAC,CAAA,IAAI,CAAC6vD,MAAM,CAAG,CAAE,GAAM,EAAK,CAAC,CAAA,IAAI,CAACY,YAAY,CAAG,CAAE,GAAM,EAAK,CAAC5B,CAAAA,UAAU,CAAC,IAAI,CAAC+C,cAAc,CAAC,EAAI,CAAA,GAAM,EAAK,CAACuB,CAAAA,SAAAA,CAAY,EAAI,CAAA,GAAM,EAAK,CAACC,CAAAA,aAAAA,CAAgB,CAAI,CAAA,CAAA,GAAM,GAC3O,CACAz5B,iBAAAA,CAAkBnB,WAAW,CAAE86B,SAAS,CAAE,CACxC,OAAO,IAAI,CAACD,cAAc,CAAI,CAAC76B,CAAAA,WAAAA,CAAc5uJ,IAAKmQ,CAAAA,KAAK,CAAC,IAAI,CAAC4nK,eAAe,CAAG,GAAO,CAAA,CAAA,CAAA,EAAK,GAAG,GAAM,CAAA,CAAI,CAAC,CAAC2R,SAAAA,CAAY1pL,IAAKmQ,CAAAA,KAAK,CAAC,IAAI,CAACsoK,eAAe,CAAG,GAAO,CAAA,CAAA,CAAA,EAAK,GAAG,GAAM,CAC/K,CACAuO,iBAAAA,CAAkB2C,WAAW,CAAEC,YAAY,CAAE,CAC3C,KAAM,CAAEC,eAAe,CAAE,CAAG,IAAI,CAChC,MAAMxuK,UAAaD,CAAAA,YAAAA,CAAaC,UAAU,CAC1C,GAAIsuK,WAAAA,CAAa,CACfE,eAAe,CAAC,CAAA,CAAE,CAAGxuK,UAAAA,CAAWvH,KAAKI,KAAK,CAAC,IAAI,CAAC2jK,YAAY,CAAC,CAAE,CAAA,CAAGthD,mBAAqB,CAAA,CAAA,CAAG,KAC1FszD,CAAAA,CAAAA,CAAAA,eAAe,CAAC,CAAE,CAAA,CAAGxuK,WAAWvH,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAAC2jK,YAAY,CAAC,CAAA,CAAE,CAAGthD,mBAAqB,CAAA,CAAA,CAAG,KAC1FszD,CAAAA,CAAAA,CAAAA,eAAe,CAAC,CAAE,CAAA,CAAGxuK,WAAWvH,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAAC2jK,YAAY,CAAC,CAAA,CAAE,CAAGthD,mBAAAA,CAAqB,CAAG,CAAA,KAAA,CAAA,EAC5F,CACA,GAAIqzD,YAAc,CAAA,CAChBC,eAAe,CAAC,CAAA,CAAE,CAAGxuK,UAAAA,CAAW,IAAI,CAACs9J,kBAAkB,CACvDkR,CAAAA,eAAe,CAAC,CAAA,CAAE,CAAGxuK,UAAAA,CAAW,IAAI,CAACu9J,kBAAkB,EACzD,CACF,CA5sBApwK,WAAAA,CAAY6hC,cAAc,CAAEo+I,iBAAiB,CAAC,CAC5C,IAAI,CAACrjD,MAAM,CAAG,IAAI5xH,GAClB,CAAA,IAAI,CAACwvJ,gBAAgB,CAAG3rH,UAAAA,CAAWM,OAAO,CAAC5hC,KAAK,EAChD,CAAA,IAAI,CAAC0zK,cAAc,CAAG,CACtB,CAAA,IAAI,CAACj6B,aAAa,CAAG,IAAI5xH,WAAY,CAAA,CAAA,CACrC,CAAA,IAAI,CAACisJ,eAAe,CAAG,IAAI/rJ,WAAY,CAAA,IAAI,CAAC0xH,aAAa,CAACr0I,MAAM,CAChE,CAAA,IAAI,CAACssJ,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAAC/8H,MAAM,CAAGL,cACd,CAAA,IAAI,CAACo+I,iBAAiB,CAAGA,iBACzB,CAAA,IAAI,CAACh+I,EAAE,CAAGy6I,IAAAA,EACV,CAAA,IAAI,CAACzd,kBAAkB,CAAGp9H,cAAAA,CAAeviC,EAAE,CAAC,gBAAkB,CAAA,IAAI,CAAC4/J,gBAAgB,CAAE,IAAI,CACzF,CAAA,IAAI,CAAC9sJ,KAAK,CAAGq7G,qBACb,CAAA,IAAI,CAACs/B,MAAM,CAAG,IAAIz/I,KAAAA,CAAM,GAAK,EAAK,CAAA,EAAA,CAClC,CAAA,IAAI,CAACu/I,UAAU,CAAG,CAClB,CAAA,IAAI,CAACmyB,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACE,UAAU,CAAG,CAClB,CAAA,IAAI,CAACrB,YAAY,CAAG,KACpB,CAAA,IAAI,CAAC/xG,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACwxG,KAAK,CAAGhpD,mBACb,CAAA,IAAI,CAACgtD,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACxhL,GAAG,CAAG,CACX,CAAA,IAAI,CAACyhL,OAAO,CAAG,IACf,CAAA,IAAI,CAACC,cAAc,CAAG,CACtB,CAAA,IAAI,CAACC,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACtB,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACp5B,cAAc,CAAG,EACtB,CAAA,IAAI,CAACs3B,YAAY,CAAGhwD,mBACpB,CAAA,IAAI,CAACm/B,WAAW,CAAGh/B,eACnB,CAAA,IAAI,CAACmuC,YAAY,CAAG,EACpB,CAAA,IAAI,CAACW,WAAW,CAAGrtC,aACnB,CAAA,IAAI,CAACmwD,OAAO,CAAG,GAAO,CAAA,GACtB,CAAA,IAAI,CAACp6B,OAAO,CAAG,IACf,CAAA,IAAI,CAACiqB,eAAe,CAAG,CACvB,CAAA,IAAI,CAACqP,cAAc,CAAG,IACtB,CAAA,IAAI,CAACE,cAAc,CAAG,KACtB,CAAA,IAAI,CAAClP,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACC,uBAAuB,CAAG,IAAIz+J,YAAAA,CAAa,CAChD,CAAA,CAAA,IAAI,CAAC2+J,aAAa,CAAG,IACrB,CAAA,IAAI,CAACD,oBAAoB,CAAG,IAAI1+J,YAAa,CAAA,CAAA,CAC7C,CAAA,IAAI,CAAC8tK,mBAAmB,CAAG,KAC3B,CAAA,IAAI,CAACE,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACvB,eAAe,CAAG,EACvB,CAAA,IAAI,CAACn7B,eAAe,CAAG,EACvB,CAAA,IAAI,CAAC+T,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACyD,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACvD,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAACH,WAAW,CAAG,CACnB,CAAA,IAAI,CAACmmB,aAAa,CAAG,CACrB,CAAA,IAAI,CAAC7kB,mBAAmB,CAAG,EAC3B,CAAA,IAAI,CAACilB,MAAM,CAAGzvD,mBACd,CAAA,IAAI,CAACqhD,YAAY,CAAG,IAAIv9J,YAAa,CAAA,CAAA,CAAA,CACrC,IAAI,CAAC6rK,kBAAkB,EACvB,CAAA,IAAI,CAAC9yD,SAAS,CAAG,IAAI32G,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,CAChC,CAAA,CAAA,IAAI,CAAC04I,UAAU,CAAG,IAAI14I,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CACjC,CAAA,IAAI,CAACi8J,kBAAkB,CAAG34K,IAAAA,CAAKuc,GAAG,CAAC,IAAI,CAACwqK,eAAe,CAAG/mL,IAAAA,CAAKgU,EAAE,CAAG,KACpE,IAAI,CAACkzK,iBAAiB,CAAC,IAAI,CAACt7B,eAAe,CAC3C,CAAA,IAAI,CAACs6B,iBAAiB,CAAG39K,SACzB,CAAA,IAAI,CAAC8xJ,UAAU,CAAG,IAClB,CAAA,IAAI,CAAC+d,mBAAmB,CAAG,EAC3B,CAAA,IAAI,CAACD,mBAAmB,CAAG,EAAE,CAC7B,IAAI,CAAC3Y,cAAc,CAAG,EACtB,CAAA,IAAI,CAACzJ,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAAC4vB,WAAW,CAAG,CAAC,IACpB,CAAA,IAAI,CAACW,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACK,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACniB,gBAAgB,CAAG3nC,qBACxB,CAAA,IAAI,CAAC+hC,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACsG,MAAM,CAAG,KACd,CAAA,IAAI,CAACrC,MAAM,CAAG,IACd,CAAA,IAAI,CAACmV,iBAAiB,CAAG,IAAI19J,YAAAA,CAAa,CAC1C,CAAA,CAAA,IAAI,CAACkrK,aAAa,CAAG,EACrB,CAAA,IAAI,CAACC,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACvN,YAAY,CAAG,CACpB,CAAA,IAAI,CAACkP,eAAe,CAAG,CACvB,CAAA,IAAI,CAACO,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACv5B,sBAAsB,CAAG,KAC9B,CAAA,IAAI,CAAC6L,YAAY,CAAG,CACpB,CAAA,IAAI,CAACC,cAAc,CAAG,CACtB,CAAA,IAAI,CAACF,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACrY,KAAK,CAAG,IACb,CAAA,IAAI,CAAC2jC,WAAW,CAAG,EAAE,CACrB,IAAI,CAAC/vC,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAAC8jB,aAAa,CAAG,CAAA,CACrB,IAAI,CAACssB,iBAAiB,GACxB,CAwnBF,CAEA,MAAMsE,cAeJC,CAAAA,aAAAA,CAAc19E,MAAM,CAAE,CACpB,IAAI,CAACoiD,cAAc,CAAGpiD,MAAO29E,CAAAA,sBAAsB,EAAI,IAAI,CAACv7B,cAAc,CAC1E,IAAI,CAACN,cAAc,CAAG9hD,MAAAA,CAAO49E,sBAAsB,EAAI,IAAI,CAAC97B,cAC5D,CAAA,IAAI,CAACG,iBAAiB,CAAGjiD,MAAAA,CAAO69E,yBAAyB,EAAI,IAAI,CAAC57B,iBAAiB,CACnF,IAAI,CAAC+I,qBAAqB,CAAGhrD,MAAAA,CAAO89E,6BAA6B,EAAI,IAAI,CAAC9yB,qBAC1E,CAAA,IAAI,CAAC8B,qBAAqB,CAAG9sD,MAAO+9E,CAAAA,6BAA6B,EAAI,IAAI,CAACjxB,qBAAqB,CAC/F,IAAI,CAAChH,gBAAgB,CAAG9lD,OAAOg+E,wBAAwB,EAAI,IAAI,CAACl4B,gBAChE,CAAA,IAAI,CAAC6D,UAAU,CAAG3pD,MAAOi+E,CAAAA,kBAAkB,EAAI,IAAI,CAACt0B,UAAU,CAC9D,GAAI3pD,MAAAA,CAAOk+E,aAAa,CAAE,CACxB,IAAI,CAAC55B,KAAK,CAAG,IAAIr0I,IAAK+vF,CAAAA,MAAAA,CAAOk+E,aAAa,EAC5C,CACF,CACA,IAAI55B,KAAM3oJ,CAAAA,KAAK,CAAE,CACf,IAAI,CAAC4oJ,MAAM,CAACxxJ,IAAI,CAAC4I,KACnB,EAAA,CACA,IAAI2oJ,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MAAM,CAEpB,IAAIuB,gBAAAA,CAAiBnqJ,KAAK,CAAE,CAC1B,IAAI,CAACwiL,iBAAiB,CAAG92K,IAAAA,CAAKI,KAAK,CAAC9L,MAAO,CAAG,CAAA,GAAA,EAChD,CACA,IAAImqJ,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACq4B,iBACd,CACA,IAAIrxB,qBAAsBnxJ,CAAAA,KAAK,CAAE,CAC/B,IAAI,CAACyiL,sBAAsB,CAAG/2K,IAAAA,CAAKI,KAAK,CAAC9L,KAAO,CAAA,EAAA,CAAI,IAAI,CAAC0iL,eAAe,EAC1E,CACA,IAAIvxB,qBAAwB,EAAA,CAC1B,OAAO,IAAI,CAACsxB,sBACd,CACA,IAAIpzB,qBAAsBrvJ,CAAAA,KAAK,CAAE,CAC/B,IAAI,CAAC2iL,sBAAsB,CAAGj3K,IAAKI,CAAAA,KAAK,CAAC9L,KAAO,CAAA,EAAA,CAAI,IAAI,CAAC0iL,eAAe,EAC1E,CACA,IAAIrzB,qBAAwB,EAAA,CAC1B,OAAO,IAAI,CAACszB,sBAAsB,CAEpC,IAAI30B,UAAWhuJ,CAAAA,KAAK,CAAE,CACpB,GAAI,IAAI,CAAC4tJ,WAAW,GAAK5tJ,KAAO,CAAA,CAC9B,IAAI,CAAC4tJ,WAAW,CAAG5tJ,KACnB,CAAA,IAAI,CAAC4iL,eAAe,GACtB,CACF,CACA,IAAI50B,UAAAA,EAAa,CACf,OAAO,IAAI,CAACJ,WACd,CACA,IAAIzH,cAAenmJ,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAAC6iL,eAAe,GAAK7iL,KAAO,CAAA,CAClC,IAAI,CAAC6iL,eAAe,CAAG7iL,KACvB,CAAA,IAAI,CAAC4iL,eAAe,GACtB,CACF,CACA,IAAIz8B,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAAC08B,eACd,CACA,IAAIv8B,iBAAkBtmJ,CAAAA,KAAK,CAAE,CAC3B,GAAI,IAAI,CAAC8iL,mBAAmB,CAAE,CAC5B,GAAI,IAAI,CAACC,kBAAkB,GAAK/iL,KAAAA,CAAO,CACrC,IAAI,CAAC+iL,kBAAkB,CAAG/iL,KAAAA,CAC1B,IAAI,CAAC4iL,eAAe,GACtB,CACF,CACF,CACA,IAAIt8B,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACy8B,kBACd,CACA,IAAIt8B,eAAezmJ,KAAK,CAAE,CACxB,GAAI,IAAI,CAACgjL,eAAe,GAAKhjL,MAAO,CAClC,IAAI,CAACgjL,eAAe,CAAGhjL,KAAAA,CACvB,IAAI,CAAC4iL,eAAe,GACtB,CACF,CACA,IAAIn8B,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACu8B,eAAe,CAtF7B5iL,WAAYswE,CAAAA,kBAAkB,CAAER,cAAc,CAAE+yG,cAAc,CAAC,CAC7D,IAAI,CAACF,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACn6B,MAAM,CAAG,IAAIt0I,IAAAA,CAAK,EAAI,CAAA,CAAA,CAAG,GAC9B,CAAA,IAAI,CAACkuK,iBAAiB,CAAG,GACzB,CAAA,IAAI,CAACQ,eAAe,CAAG,IACvB,CAAA,IAAI,CAACp1B,WAAW,CAAGh/B,eACnB,CAAA,IAAI,CAAC+zD,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACE,eAAe,CAAG,KACvB,CAAA,IAAI,CAACJ,sBAAsB,CAAG,IAC9B,CAAA,IAAI,CAACxyB,UAAU,CAAG,IAClB,CAAA,IAAI,CAAC6yB,mBAAmB,CAAGpyG,kBAC3B,CAAA,IAAI,CAACgyG,eAAe,CAAGxyG,cACvB,CAAA,IAAI,CAAC0yG,eAAe,CAAGK,eACzB,CA2EF,CAEA,MAAMC,aAAAA,CAiEJ1hJ,OAAU,EAAA,CACR,IAAI,CAACyU,MAAM,CAAG,IAAA,CACd,MAAM4sF,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,GAAIA,KAAAA,CAAO,CACT,IAAI,CAACA,KAAK,CAAG,IAAA,CACbA,MAAM96E,WAAW,EAAA,CACjB,GAAI86E,KAAAA,CAAM76E,QAAQ,CAAG,CAAG,CAAA,CACtB66E,MAAMrhG,OAAO,GACf,CACF,CACA,IAAI,CAAC2hJ,WAAW,EAAE3hJ,SAClB,CAAA,IAAI,CAAC2hJ,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC9d,gBAAgB,EAAE7jI,OAAAA,EACvB,CAAA,IAAI,CAAC6jI,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAAC+d,SAAS,EAAE5hJ,OAChB,EAAA,CAAA,IAAI,CAAC4hJ,SAAS,CAAG,IACjB,CAAA,IAAI,CAAC7d,cAAc,EAAE/jI,OACrB,EAAA,CAAA,IAAI,CAAC+jI,cAAc,CAAG,KACxB,CACA53J,KAAQ,EAAA,CACN,OAAO,IAAIu1K,aAAc,CAAA,IAAI,CAACrgD,KAAK,CACrC,CACAwgD,eAAAA,CAAgBnjL,GAAG,CAAE,CACnB,GAAI,OAAOA,GAAAA,GAAQ,QAAU,CAAA,CAC3B,MAAMhC,KAAAA,CAAQ,IAAI,CAAColL,UAAU,CAAClpL,GAAG,CAAC8F,GAAAA,CAAAA,CAClC,OAAOhC,KACT,CACA,OAAOgC,GACT,CACAqjL,SAAUrjL,CAAAA,GAAG,CAAE,CACb,MAAMhC,KAAAA,CAAQ,IAAI,CAACmlL,eAAe,CAACnjL,GAAAA,CAAAA,CACnC,OAAO,IAAI,CAACsjL,QAAQ,CAACtlL,KAAAA,CAAM,CAE7BulL,SAAAA,CAAUvjL,GAAG,CAAE6sJ,MAAM,CAAE,CACrB,MAAM7uJ,MAAQ,IAAI,CAACmlL,eAAe,CAACnjL,GACnC,CAAA,CAAA,IAAI,CAACsjL,QAAQ,CAACtlL,KAAM,CAAA,CAAG6uJ,MACvB,CAAA,IAAI,CAAC34G,MAAM,CAAG,KAChB,CACAsvI,aAAAA,CAAc/2G,QAAQ,CAAE,CACtB,MAAMvN,QAAU,IAAI3+D,GAAAA,CACpB2+D,OAAQx+D,CAAAA,GAAG,CAAC,2BAAA,CAA6B+rE,QACzC,CAAA,CAAA,GAAI,IAAI,CAACk2D,KAAK,CAAC4H,eAAe,CAAErrE,OAAAA,CAAQx+D,GAAG,CAAC,WAAa,CAAA,EAAA,CAAA,CACzD,MAAM+iL,UAAAA,CAAa,IAAI,CAAC9gD,KAAK,CAAC4H,eAAe,CAAG,OAAA,CAAU,MAC1D,CAAA,OAAOpQ,WAAY1+C,CAAAA,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CAC3Ck4F,UAAAA,CAAY,CAAC,mBAAmB,EAAE7tD,QAAAA,CAAS,CAAC,EAAE,IAAI,CAACk2D,KAAK,CAAC4H,eAAe,CAAG,KAAA,CAAQ,OAAQ,CAAA,CAAC,CAC5F9mF,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,YAAa,SACbE,CAAAA,aAAAA,CAAe,SACf/0D,CAAAA,eAAAA,CAAiBzG,OACjByF,CAAAA,mBAAAA,CAAqB,CACnB8+G,UAAAA,CACD,CACH,CACF,CACAC,0BAAAA,CAA2B9sI,YAAY,CAAE+sI,WAAW,CAAEC,KAAK,CAAE,CAC3D,KAAM,CAAEjhD,KAAK,CAAEvgG,MAAM,CAAE,CAAG,IAAI,CAC9B,IAAI,CAACyhJ,eAAe,CAACD,KAAAA,CAAAA,CACrB,IAAI,CAACE,cAAc,CAACh0I,QAAQ,CAAC8zI,KAAAA,CAAQjhD,KAAMohD,CAAAA,uBAAuB,CAAGphD,KAAMqhD,CAAAA,qBAAqB,CAChG5hJ,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,EACvC,IAAI,CAAC21I,OAAO,CAACn0I,QAAQ,CAAC6zI,WACtB,CAAA,CAAA,IAAI,CAACO,WAAW,CAACp0I,QAAQ,CAAC,IAAI,CAACq0I,mBAAmB,EAClD,IAAI,CAACC,UAAU,CAACt0I,QAAQ,CAAC,IAAI,CAACu0I,iBAAiB,CAAA,CAC/C1nD,kBAAmBv6F,CAAAA,MAAAA,CAAQwU,YAAc,CAAA,IAAI,CAACb,MAAM,EACtD,CACAuuI,mBAAAA,CAAoBX,WAAW,CAAE,CAC/B,IAAI,CAACvhJ,MAAM,CACX,GAAIuhJ,WAAc,CAAA,CAAA,EAAK,CAAC,IAAI,CAACY,YAAY,CAAE,CACzC,GAAI,IAAI,CAACtB,WAAW,CAAE,CACpB,IAAI,CAACS,0BAA0B,CAAC,IAAI,CAACT,WAAW,CAAEU,WAAa,CAAA,IAAA,EACjE,CACA,GAAI,IAAI,CAACT,SAAS,CAAE,CAClB,IAAI,CAACQ,0BAA0B,CAAC,IAAI,CAACR,SAAS,CAAES,WAAa,CAAA,KAAA,EAC/D,CACA,IAAI,CAACY,YAAY,CAAGZ,WAAgB,GAAA,EACtC,CACF,CACAE,eAAgBD,CAAAA,KAAAA,CAAQ,IAAI,CAAE,CAC5B,IAAI,CAACY,UAAU,CAAC10I,QAAQ,CAAC8zI,KAAQ,CAAA,IAAI,CAACa,SAAS,CAAG,IAAI,CAACC,YAAY,CACnE,CAAA,IAAI,CAACC,SAAS,CAAC70I,QAAQ,CAAC8zI,KAAQ,CAAA,IAAI,CAACgB,QAAQ,CAAG,IAAI,CAACC,WAAW,EAClE,CACA7f,gBAAAA,CAAiB5iI,MAAM,CAAE,CACvB,IAAI,CAACyhJ,eAAe,GACtB,CACAt4I,MAAAA,EAAS,CACP,IAAI,CAAC2I,MAAM,CAAG,KAAA,CACd,MAAMmC,OAAAA,CAAU,IAAI,CAACssF,KAAK,CAAC2F,QAAQ,CACnC,MAAM/yH,OAAU,CAAA,IAAA,CAChB,MAAMuvK,OAAAA,CAAU,IAAI,CAACX,mBAAmB,CACxC,MAAMzhF,OAAU,CAAA,IAAI,CAAC2hF,iBAAiB,CACtC,IAAIV,WAAc,CAAA,CAAA,CAClB,IAAI,IAAIxrL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIk+C,OAAQj+C,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrC,GAAIT,IAAKma,CAAAA,GAAG,CAAC,IAAI,CAACwxK,SAAS,CAAClrL,CAAMod,CAAAA,CAAAA,CAAAA,OAAAA,CAAS,CACzCuvK,OAAO,CAACnB,WAAAA,CAAY,CAAG,IAAI,CAACN,SAAS,CAAClrL,CACtCuqG,CAAAA,CAAAA,OAAO,CAACihF,WAAY,CAAA,CAAGxrL,CACvBwrL,CAAAA,WAAAA,GACF,CACF,CACA,IAAI,CAACW,mBAAmB,CAACX,WAC3B,EAAA,CApKAzjL,WAAYyiI,CAAAA,KAAK,CAAC,CAChB,IAAI,CAACA,KAAK,CAAGA,KAAAA,CACbA,KAAMh7E,CAAAA,WAAW,EACjB,CAAA,IAAI,CAACvlB,MAAM,CAAGugG,KAAMvgG,CAAAA,MAAM,CAC1B,MAAM2iJ,aAAgBpiD,CAAAA,KAAAA,CAAM2F,QAAQ,CAAClwI,MAAM,CAC3C,IAAI,CAAC29C,MAAM,CAAG,IAAI,CAACytI,aAAa,CAACuB,aACjC,CAAA,CAAA,IAAI,CAACzB,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACF,UAAU,CAAG,IAAI7iL,GACtB,CAAA,IAAI,IAAI3I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+qI,KAAM2F,CAAAA,QAAQ,CAAClwI,MAAM,CAAER,CAAI,EAAA,CAAA,CAC5C,MAAMb,MAAAA,CAAS4rI,KAAM2F,CAAAA,QAAQ,CAAC1wI,CAAAA,CAAE,CAChC,GAAIb,MAAO0E,CAAAA,IAAI,CAAE,CACf,IAAI,CAAC2nL,UAAU,CAAC1iL,GAAG,CAAC3J,MAAAA,CAAO0E,IAAI,CAAE7D,CACnC,EAAA,CACA,IAAI,CAAC2rL,SAAS,CAAC3rL,CAAGb,CAAAA,MAAAA,CAAOiuL,aAAa,EACxC,CACA,IAAI,CAACb,mBAAmB,CAAG,IAAInyK,YAAAA,CAAa+yK,aAC5C,CAAA,CAAA,IAAI,CAACV,iBAAiB,CAAG,IAAI/uJ,WAAAA,CAAYyvJ,eACzC,MAAME,QAAAA,CAAW,CAACxpL,IAAAA,CAAMypL,UACtB,GAAA,CAAA,IAAI,CAACA,UAAAA,CAAW,CAAGviD,KAAMwiD,CAAAA,cAAc,CAAC1pL,IAAAA,CAAMknI,KAAMyiD,CAAAA,oBAAoB,CACxE,CAAA,OAAO,IAAI1nI,YAAa,CAAA,CACtBM,WAAa,CAAA,IAAI,CAACknI,UAAAA,CAAW,CAC7B/hJ,KAAAA,CAAO,KACT,CAAA,CACF,CACA,CAAA,GAAIw/F,KAAM0H,CAAAA,cAAc,CAAE,CACxB,IAAI,CAAC44C,WAAW,CAAGgC,QAAAA,CAAS,YAAc,CAAA,kBAAA,EAC5C,CACA,GAAItiD,KAAM2H,CAAAA,YAAY,CAAE,CACtB,IAAI,CAAC44C,SAAS,CAAG+B,SAAS,YAAc,CAAA,gBAAA,EAC1C,CACA,IAAI,CAAC1f,cAAc,CAAG,IAAIvzJ,YAAa,CAAA,CACrC2wH,KAAM0iD,CAAAA,iBAAiB,CACvB1iD,KAAAA,CAAM2iD,kBAAkB,CACzB,EACD,MAAM1qK,QAAAA,CAAW+nH,KAAM17G,CAAAA,IAAI,CAACtD,WAAW,CACvC,IAAI,CAAC8gK,SAAS,CAAG,IAAIzyK,YAAa,CAAA,CAChC4I,QAASpO,CAAAA,CAAC,CAAG,CACboO,CAAAA,QAAAA,CAAS1G,CAAC,CAAG,CACb0G,CAAAA,QAAAA,CAASvG,CAAC,CAAG,CACd,CAAA,CAAA,CACD,MAAMxI,GAAAA,CAAM82H,KAAM17G,CAAAA,IAAI,CAAC1B,MAAM,EAC7B,CAAA,IAAI,CAACq/J,QAAQ,CAAG,IAAI5yK,YAAa,CAAA,CAC/BnG,IAAIW,CAAC,CAAG,CACRX,CAAAA,GAAAA,CAAIqI,CAAC,CAAG,CACRrI,CAAAA,GAAAA,CAAIwI,CAAC,CAAG,CAAA,CACT,CACD,CAAA,IAAI,CAACqwK,YAAY,CAAG,IAAI1yK,YAAAA,CAAa,CACnC,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACD,CAAA,IAAI,CAAC6yK,WAAW,CAAG,IAAI7yK,YAAa,CAAA,CAClC,CAAC,CAAA,CACD,CAAC,CACD,CAAA,CAAC,CACF,CAAA,CACD,CAAA,IAAI,CAACwyK,UAAU,CAAG,IAAI,CAACpiJ,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,UAC5C,CAAA,CAAA,IAAI,CAACmiJ,SAAS,CAAG,IAAI,CAACviJ,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,SAAA,CAC3C,CAAA,IAAI,CAACshJ,cAAc,CAAG,IAAI,CAAC1hJ,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,cAChD,CAAA,CAAA,IAAI,CAAC0hJ,WAAW,CAAG,IAAI,CAAC9hJ,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,iBAC7C,CAAA,IAAI,CAAC4hJ,UAAU,CAAG,IAAI,CAAChiJ,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,eAC5C,CAAA,CAAA,IAAI,CAACyhJ,OAAO,CAAG,IAAI,CAAC7hJ,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,OAAA,CACzC,CAAA,IAAI,CAAC+hJ,YAAY,CAAG,MACtB,CAsGF,CAEA,MAAMgB,KAWJC,CAAAA,QAAAA,EAAW,CACT,OAAO,IAAI,CAACC,KACd,CACAC,QAAAA,CAASD,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAGA,MACf,CACAE,UAAa,EAAA,CACX,OAAO,IAAI,CAAC7e,OAAO,CAErB8e,UAAW9e,CAAAA,OAAO,CAAE,CAClB,IAAI,CAACA,OAAO,CAAGA,QACjB,CACA+e,SAAAA,EAAY,CACV,OAAO,IAAI,CAACl7B,MAAM,CAEpBm7B,SAAUn7B,CAAAA,MAAM,CAAE,CAChB,IAAI,CAACA,MAAM,CAAGA,OAChB,CACAo7B,YAAAA,EAAe,CACb,MAAMC,SAAY,CAAA,EAAE,CACpB,IAAI,IAAI7tL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACulI,aAAa,CAACtlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAChD,MAAM4kI,YAAe,CAAA,IAAI,CAACW,aAAa,CAACvlI,CAAAA,CAAE,CAC1C,GAAI6tL,UAAU5kL,OAAO,CAAC27H,YAAa/B,CAAAA,QAAQ,CAAM,GAAA,CAAC,CAAG,CAAA,CACnDgrD,SAAU/sL,CAAAA,IAAI,CAAC8jI,YAAAA,CAAa/B,QAAQ,EACtC,CACF,CACA,OAAOgrD,SACT,CACAv4K,KAAQ,EAAA,CACN,MAAMw4K,QAAAA,CAAW,EAAE,CACnB,MAAMC,UAAa,CAAA,EAAE,CACrB,MAAMC,UAAa,CAAA,SAAS59C,IAAI,CAAA,CAC9B,MAAM69C,OAAU79C,CAAAA,IAAAA,CAAK96H,KAAK,EAAA,CAC1Bw4K,QAAShtL,CAAAA,IAAI,CAACsvI,IAAAA,CAAAA,CACd29C,UAAWjtL,CAAAA,IAAI,CAACmtL,OAAAA,CAAAA,CAChB,IAAI,IAAI3jL,GAAM,CAAA,CAAA,CAAGA,IAAM8lI,IAAK4G,CAAAA,SAAS,CAAC/2I,MAAM,CAAEqK,GAAAA,EAAAA,CAAM,CAClD2jL,OAAAA,CAAQzlC,QAAQ,CAACwlC,UAAAA,CAAW59C,IAAK4G,CAAAA,SAAS,CAAC1sI,GAAAA,CAAI,CACjD,EAAA,CACA,OAAO2jL,OACT,CAAA,CACA,MAAMC,UAAAA,CAAaF,UAAW,CAAA,IAAI,CAACV,KAAK,CACxC,CAAA,MAAMa,kBAAqB,CAAA,EAAE,CAC7B,MAAMC,kBAAqB,CAAA,EAAE,CAC7B,MAAMC,mBAAAA,CAAsB,EAAE,CAC9B,IAAI,IAAIruL,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACsuL,aAAa,CAACruL,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,MAAM6mI,IAAO,CAAA,IAAI,CAACynD,aAAa,CAACtuL,CAAAA,CAAE,CAAC6mI,IAAI,CACvC,MAAM0nD,iBAAoB,CAAA,IAAIloD,YAAaQ,CAAAA,IAAAA,CAAAA,CAC3C,MAAMC,KAAAA,CAAQ,EAAE,CAChB,IAAI,IAAIvgD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIsgD,IAAKE,CAAAA,SAAS,CAAC9mI,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC5C,MAAMygD,QAAWH,CAAAA,IAAAA,CAAKE,SAAS,CAACxgD,CAAAA,CAAE,CAClC,MAAM0gD,IAAOinD,CAAAA,UAAAA,CAAWhnD,UAAU,CAACF,QACnCF,CAAAA,CAAAA,KAAAA,CAAMhmI,IAAI,CAACmmI,IACb,EAAA,CACAsnD,iBAAkBznD,CAAAA,KAAK,CAAGA,KAC1BsnD,CAAAA,kBAAAA,CAAmBttL,IAAI,CAACytL,iBAC1B,EAAA,CACA,IAAI,IAAIvuL,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACwuL,cAAc,CAACvuL,MAAM,CAAED,IAAI,CACjD,MAAMwqI,KAAQ,CAAA,IAAI,CAACgkD,cAAc,CAACxuL,CAAAA,CAAE,CAACwqI,KAAK,CAC1C,MAAMikD,kBAAqB,CAAA,IAAI5D,aAAcrgD,CAAAA,KAAAA,CAAAA,CAC7C6jD,oBAAoBvtL,IAAI,CAAC2tL,kBAC3B,EAAA,CACA,IAAI,IAAIzuL,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACulI,aAAa,CAACtlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAChD,MAAM4kI,YAAAA,CAAe,IAAI,CAACW,aAAa,CAACvlI,CAAE,CAAA,CAC1C,MAAM0uL,SAAAA,CAAYZ,QAAS7kL,CAAAA,OAAO,CAAC27H,YAAAA,CAAawL,IAAI,CAAA,CACpD,MAAMu+C,iBAAoB,CAAA,IAAIr/C,YAAa1K,CAAAA,YAAAA,CAAa8E,IAAI,CAAE9E,YAAa/B,CAAAA,QAAQ,CAAEkrD,UAAU,CAACW,SAAU,CAAA,CAAA,CAC1G,GAAI9pD,YAAAA,CAAaqL,YAAY,CAAE,CAC7B,MAAM2+C,iBAAAA,CAAoB,IAAI,CAACN,aAAa,CAACrlL,OAAO,CAAC27H,YAAaqL,CAAAA,YAAY,CAC9E0+C,CAAAA,iBAAkB1+C,CAAAA,YAAY,CAAGm+C,kBAAkB,CAACQ,iBAAkB,EACxE,CACA,GAAIhqD,YAAaqN,CAAAA,aAAa,CAAE,CAC9B,MAAM48C,kBAAAA,CAAqB,IAAI,CAACL,cAAc,CAACvlL,OAAO,CAAC27H,aAAaqN,aAAa,CACjF08C,CAAAA,iBAAAA,CAAkB18C,aAAa,CAAGo8C,mBAAmB,CAACQ,kBAAmB,EAC3E,CACAV,kBAAAA,CAAmBrtL,IAAI,CAAC6tL,iBAC1B,EAAA,CACA,MAAMr5K,KAAQ,CAAA,IAAI83K,KAClB93K,CAAAA,KAAMg4K,CAAAA,KAAK,CAAGY,UACd54K,CAAAA,KAAMiwH,CAAAA,aAAa,CAAG4oD,kBACtB74K,CAAAA,KAAAA,CAAMg5K,aAAa,CAAGF,kBACtB94K,CAAAA,KAAAA,CAAMk5K,cAAc,CAAGH,mBACvB/4K,CAAAA,KAAAA,CAAM+3K,QAAQ,EAAA,CAAGpjC,aAAa,EAAA,CAC9B,OAAO30I,KACT,CACA6zB,OAAAA,EAAU,CACR,MAAMo8F,cAAgB,IAAI,CAACA,aAAa,CACxC,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3CulI,aAAa,CAACvlI,CAAAA,CAAE,CAACmpC,OAAO,GAC1B,CACA,IAAI,CAACo8F,aAAa,CAACtlI,MAAM,CAAG,EAC9B,CACA4tI,iBAAAA,EAAoB,CAClByB,YAAAA,CAAayD,2BAA2B,CAAC,IAAI,CAACxN,aAAa,CAAExM,qBAAAA,EAC/D,CAtGAhxH,WAAAA,EAAa,CACX,IAAI,CAACulL,KAAK,CAAG,IACb,CAAA,IAAI,CAAC/nD,aAAa,CAAG,EAAE,CACvB,IAAI,CAAC+oD,aAAa,CAAG,EACrB,CAAA,IAAI,CAACE,cAAc,CAAG,EAAE,CACxB,IAAI,CAAC7f,OAAO,CAAG,EAAE,CACjB,IAAI,CAACnc,MAAM,CAAG,EACd,CAAA,IAAI,CAACs8B,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,UAAU,CAAG,MACpB,CA8FF,CAEA,MAAMC,KAAcz/H,SAAAA,gBAAAA,CAgBlBpmB,OAAU,EAAA,CACR,IAAI,CAAC2jI,eAAe,EAAE3jI,OAAAA,EACtB,CAAA,IAAI,CAAC2jI,eAAe,CAAG,IACvB,CAAA,IAAI,CAAC8e,uBAAuB,EAAEziJ,OAC9B,EAAA,CAAA,IAAI,CAACyiJ,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAACC,qBAAqB,EAAE1iJ,OAAAA,EAC5B,CAAA,IAAI,CAAC0iJ,qBAAqB,CAAG,KAC/B,CACA,IAAI/8J,MAAO,CACT,GAAI,CAAC,IAAI,CAACwE,KAAK,CAAE,CACf,MAAM5f,GAAAA,CAAM,IAAIuI,IAAAA,CAChB,MAAMtI,GAAAA,CAAM,IAAIsI,IAAAA,CAChB,IAAI,IAAIjc,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACmwI,QAAQ,CAAClwI,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,MAAMivL,UAAAA,CAAa,IAAI,CAAC9+C,QAAQ,CAACnwI,CAAAA,CAAE,CAAC8uB,IAAI,CACxCpb,GAAAA,CAAIA,GAAG,CAACu7K,WAAW7hK,MAAM,EAAA,CAAA,CACzBzZ,GAAIA,CAAAA,GAAG,CAACs7K,UAAAA,CAAW/hK,MAAM,EAAA,EAC3B,CACA,IAAI,CAACoG,KAAK,CAAG,IAAIrI,WAAAA,CACjB,IAAI,CAACqI,KAAK,CAAC7E,SAAS,CAAC/a,GAAKC,CAAAA,GAAAA,EAC5B,CACA,OAAO,IAAI,CAAC2f,KAAK,CAEnB,IAAI4+G,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACg9C,eACd,CACA,IAAI/8C,YAAe,EAAA,CACjB,OAAO,IAAI,CAACg9C,aACd,CACAx1C,KAAAA,EAAQ,CACN,IAAI,CAACy1C,iBAAiB,EACtB,CAAA,IAAI,IAAIpvL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACmwI,QAAQ,CAAClwI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,IAAI,CAACmwI,QAAQ,CAACnwI,CAAE,CAAA,CAACqvL,SAAS,GAC5B,CACF,CACAC,eAAeC,WAAW,CAAEC,GAAG,CAAEC,eAAe,CAAE,CAChD,IAAIC,SAAY,CAAA,CAAA,CAChB,MAAMC,SAAAA,CAAYJ,WAAW,CAAC,CAAE,CAAA,CAACtvL,MAAM,CACvC,IAAI,IAAIR,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkwL,SAAWlwL,CAAAA,CAAAA,EAAK,EAAE,CACnC,IAAImwL,UAAa,CAAA,KAAA,CACjB,IAAI,IAAI5vL,CAAI,CAAA,CAAA,CAAGA,EAAIuvL,WAAYtvL,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,MAAMga,IAAOu1K,CAAAA,WAAW,CAACvvL,CAAAA,CAAE,CAC3B,GAAIga,IAAI,CAACva,CAAE,CAAA,GAAK,GAAKua,IAAI,CAACva,CAAI,CAAA,CAAA,CAAE,GAAK,CAAA,EAAKua,IAAI,CAACva,EAAI,CAAE,CAAA,GAAK,CAAG,CAAA,CAC3DmwL,UAAa,CAAA,IAAA,CACb,KACF,CACF,CACA,GAAIA,UAAAA,CAAY,CACdJ,GAAAA,CAAI1uL,IAAI,CAAC4uL,SACTD,CAAAA,CAAAA,eAAAA,CAAgB3uL,IAAI,CAACrB,CAAI,CAAA,CAAA,CACzBiwL,CAAAA,SAAAA,GACF,CAAO,KAAA,CACLF,IAAI1uL,IAAI,CAAC,CACX,EAAA,CACF,CACA,OAAO4uL,SACT,CACAN,iBAAoB,EAAA,CAClB,MAAMG,WAAAA,CAAc,EAAE,CAAEM,UAAa,CAAA,EAAE,CACvC,MAAM3xI,OAAAA,CAAU,IAAI,CAACiyF,QAAQ,CAC7B,IAAI,IAAInwI,CAAI,CAAA,CAAA,CAAGA,CAAIk+C,CAAAA,OAAAA,CAAQj+C,MAAM,CAAED,CAAI,EAAA,CAAA,CACrC,MAAMpB,MAASs/C,CAAAA,OAAO,CAACl+C,CAAAA,CAAE,CACzB,GAAIpB,MAAO6S,CAAAA,OAAO,CAACq6H,cAAc,CAAE,CACjCyjD,WAAAA,CAAYzuL,IAAI,CAAClC,MAAO6S,CAAAA,OAAO,CAACq6H,cAAc,CAAA,CAC9C+jD,UAAW/uL,CAAAA,IAAI,CAAC,IAAA,EAClB,CACA,GAAIlC,MAAO6S,CAAAA,OAAO,CAACq+K,YAAY,CAAE,CAC/BP,WAAYzuL,CAAAA,IAAI,CAAClC,MAAO6S,CAAAA,OAAO,CAACq+K,YAAY,CAC5CD,CAAAA,UAAAA,CAAW/uL,IAAI,CAAC,KAClB,EAAA,CACF,CACA,MAAM0uL,GAAM,CAAA,EAAE,CAAEC,eAAAA,CAAkB,EAAE,CACpC,MAAMC,SAAY,CAAA,IAAI,CAACJ,cAAc,CAACC,WAAAA,CAAaC,GAAKC,CAAAA,eAAAA,CAAAA,CACxD,MAAM53G,cAAAA,CAAiB,IAAI,CAAC5tC,MAAM,CAAC4tC,cAAc,CACjD,IAAIq1G,iBAAoB3tL,CAAAA,IAAAA,CAAK0V,IAAI,CAAC1V,IAAKud,CAAAA,IAAI,CAAC4yK,SAC5CxC,CAAAA,CAAAA,CAAAA,iBAAAA,CAAoB3tL,IAAKmU,CAAAA,GAAG,CAACw5K,iBAAAA,CAAmBr1G,cAChD,CAAA,CAAA,MAAMs1G,mBAAqB5tL,IAAK0V,CAAAA,IAAI,CAACy6K,SAAAA,CAAYxC,iBACjD,CAAA,CAAA,GAAIC,kBAAqBt1G,CAAAA,cAAAA,CAAgB,CACvC,MACF,CACA,IAAI,CAACq1G,iBAAiB,CAAGA,iBACzB,CAAA,IAAI,CAACC,kBAAkB,CAAGA,kBAC1B,CAAA,IAAI4C,SAAY,CAAA,KAAA,CAChB,MAAMn1K,UAAAA,CAAaD,YAAaC,CAAAA,UAAU,CAC1C,GAAI,IAAI,CAACo1K,cAAc,GAAKj3J,mBAAAA,CAAqB,CAC/Cg3J,SAAAA,CAAY,KACd,CACA,MAAME,qBAAAA,CAAwB,EAAE,CAChC,MAAMC,mBAAAA,CAAsB,EAAE,CAC9B,MAAMC,eAAAA,CAAkBjD,kBAAoBC,kBAAqB,CAAA,CAAA,CACjE,IAAI,IAAIntL,CAAI,CAAA,CAAA,CAAGA,CAAIuvL,CAAAA,WAAAA,CAAYtvL,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,MAAMga,IAAOu1K,CAAAA,WAAW,CAACvvL,CAAAA,CAAE,CAC3B,MAAMwxC,WAAAA,CAAc,IAAI,CAACw+I,cAAc,GAAKj3J,mBAAsB,CAAA,IAAIsE,WAAY8yJ,CAAAA,eAAAA,CAAAA,CAAmB,IAAIt2K,YAAAA,CAAas2K,eACtH,CAAA,CAACN,CAAAA,UAAU,CAAC7vL,CAAE,CAAA,CAAGiwL,qBAAwBC,CAAAA,mBAAkB,EAAGpvL,IAAI,CAAC0wC,WAAAA,CAAAA,CACnE,GAAIu+I,SAAW,CAAA,CACb,IAAI,IAAItwL,CAAI,CAAA,CAAA,CAAGA,CAAIgwL,CAAAA,eAAAA,CAAgBxvL,MAAM,CAAER,CAAAA,EAAAA,CAAI,CAC7C,MAAMoG,KAAQ4pL,CAAAA,eAAe,CAAChwL,CAAAA,CAAE,CAAG,CAAA,CACnC,MAAM2wL,QAAAA,CAAW3wL,CAAI,CAAA,CAAA,CAAI,CACzB+xC,CAAAA,WAAW,CAAC4+I,QAAAA,CAAS,CAAGx1K,UAAAA,CAAWZ,IAAI,CAACnU,KAAM,CAAA,CAC9C2rC,CAAAA,WAAW,CAAC4+I,QAAW,CAAA,CAAA,CAAE,CAAGx1K,UAAAA,CAAWZ,IAAI,CAACnU,MAAQ,CAAE,CAAA,CACtD2rC,CAAAA,WAAW,CAAC4+I,QAAAA,CAAW,CAAE,CAAA,CAAGx1K,UAAWZ,CAAAA,IAAI,CAACnU,KAAAA,CAAQ,CAAE,CAAA,EACxD,CACF,CAAA,KAAO,CACL,IAAI,IAAIpG,CAAI,CAAA,CAAA,CAAGA,CAAIgwL,CAAAA,eAAAA,CAAgBxvL,MAAM,CAAER,CAAI,EAAA,CAAA,CAC7C,MAAMoG,KAAAA,CAAQ4pL,eAAe,CAAChwL,CAAE,CAAA,CAAG,EACnC,MAAM2wL,QAAAA,CAAW3wL,CAAI,CAAA,CAAA,CAAI,CACzB+xC,CAAAA,WAAW,CAAC4+I,QAAS,CAAA,CAAGp2K,IAAI,CAACnU,KAAM,CACnC2rC,CAAAA,WAAW,CAAC4+I,QAAW,CAAA,CAAA,CAAE,CAAGp2K,IAAI,CAACnU,KAAAA,CAAQ,CAAE,CAC3C2rC,CAAAA,WAAW,CAAC4+I,QAAW,CAAA,CAAA,CAAE,CAAGp2K,IAAI,CAACnU,KAAAA,CAAQ,GAAE,CAE/C,CACF,CACA,GAAIoqL,qBAAAA,CAAsBhwL,MAAM,CAAG,CAAG,CAAA,CACpC,IAAI,CAAC2rL,uBAAuB,CAAG,IAAI,CAACoB,cAAc,CAAC,uBAAA,CAAyB,IAAI,CAACgD,cAAc,CAAE9xI,OAAQj+C,CAAAA,MAAM,CAAE,CAC/GgwL,qBACD,CAAA,EACH,CACA,GAAIC,mBAAoBjwL,CAAAA,MAAM,CAAG,CAAG,CAAA,CAClC,IAAI,CAAC4rL,qBAAqB,CAAG,IAAI,CAACmB,cAAc,CAAC,qBAAuB,CAAA,IAAI,CAACgD,cAAc,CAAE9xI,OAAAA,CAAQj+C,MAAM,CAAE,CAC3GiwL,mBACD,CAAA,EACH,CACA,MAAMG,UAAa,CAAA,CACjB,CACEx2I,QAAUja,CAAAA,eAAAA,CACVka,UAAY,CAAA,CAAA,CACZriC,IAAM+qB,CAAAA,WAAAA,CACNgY,KAAO,CAAA,IACT,EACD,CACD,IAAI,CAACsyH,eAAe,CAAG,IAAI30H,YAAAA,CAAa,IAAI,CAAClO,MAAM,CAAE,IAAIwP,YAAAA,CAAa,IAAI,CAACxP,MAAM,CAAEomJ,UAAAA,CAAYb,GAAIvvL,CAAAA,MAAM,CAAGuvL,CAAAA,GAAAA,CAAIvvL,MAAM,CAAE,CACtH+Z,IAAAA,CAAM,IAAImjB,WAAAA,CAAYqyJ,GACxB,CAAA,CAAA,CAAA,CACA,OAAO,IACT,CACA,IAAItxI,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACiyF,QACd,CACAmgD,iBAAAA,EAAoB,CAClB,IAAI,CAACpB,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,aAAa,CAAG,KACrB,CAAA,IAAI,IAAInvL,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACmwI,QAAQ,CAAClwI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAMpB,MAAAA,CAAS,IAAI,CAACuxI,QAAQ,CAACnwI,CAAE,CAAA,CAC/B,GAAIpB,MAAAA,CAAOszI,cAAc,CAAE,CACzB,IAAI,CAACg9C,eAAe,CAAG,KACzB,CACA,GAAItwL,MAAAA,CAAOuzI,YAAY,CAAE,CACvB,IAAI,CAACg9C,aAAa,CAAG,KACvB,CACF,CACF,CACAnC,cAAe1pL,CAAAA,IAAI,CAAEwC,MAAM,CAAEypC,WAAW,CAAEkB,MAAM,CAAE,CAChD,OAAO,IAAI9E,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CAC9BwG,MAAAA,CAAQA,OACRlB,WAAaA,CAAAA,WAAAA,CACb5pB,KAAO,CAAA,IAAI,CAACunK,iBAAiB,CAC7BtnK,MAAAA,CAAQ,IAAI,CAACunK,kBAAkB,CAC/BrnL,MAAAA,CAAQA,MACR2lC,CAAAA,OAAAA,CAAS,KACTD,CAAAA,OAAAA,CAAS,MACTkC,SAAWzW,CAAAA,cAAAA,CACX4W,SAAW5W,CAAAA,cAAAA,CACX8W,QAAU5Z,CAAAA,qBAAAA,CACV8Z,QAAU9Z,CAAAA,qBAAAA,CACV7wB,IAAMA,CAAAA,IACR,CACF,CAAA,CApLAyE,WAAYm2C,CAAAA,OAAO,CAAEtU,cAAc,CAAE,CAAE2mJ,mBAAAA,CAAsB,KAAK,CAAE,CAAG,EAAE,CAAC,CACxE,KAAK,EACL,CAAA,IAAI,CAACtmJ,MAAM,CAAGL,eACd,MAAMK,MAAAA,CAASL,cACf,CAAA,IAAI,CAAC2mJ,mBAAmB,CAAGA,mBAC3B,CAAA,IAAI,CAACpgD,QAAQ,CAAGjyF,OAAQr9C,CAAAA,KAAK,GAC7B,MAAM2vL,cAAAA,CAAiBvmJ,MAAO8Y,CAAAA,0BAA0B,CAAGhqB,mBAAAA,CAAsBjxB,SACjF,CAAA,MAAM2oL,gBAAkBxmJ,MAAOqT,CAAAA,sBAAsB,CAAGrkB,mBAAAA,CAAsBnxB,SAC9E,CAAA,IAAI,CAACmlL,oBAAoB,CAAG,IAAI,CAACsD,mBAAmB,CAAGE,eAAAA,EAAmBD,cAAiBA,CAAAA,cAAAA,EAAkBC,eAC7G,CAAA,IAAI,CAACxD,oBAAoB,CAAG,IAAI,CAACA,oBAAoB,EAAI/xJ,mBACzD,CAAA,IAAI,CAACk3G,eAAe,CAAGv1G,oBAAAA,CAAqB,IAAI,CAACowJ,oBAAoB,CACrE,CAAA,IAAI,CAAC+C,cAAc,CAAG,IAAI,CAACO,mBAAmB,CAAGt3J,mBAAAA,CAAsBF,mBACvE,CAAA,IAAI,CAAC4gH,KAAK,EACV,CAAA,IAAI,CAAC22C,iBAAiB,GACxB,CAuKF,CAEA,MAAMI,YAWJ,IAAIptL,IAAAA,EAAO,CACT,OAAO,IAAI,CAACunG,KACd,CACA,IAAIgiF,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC8D,cACd,CACA,IAAI7hK,IAAAA,EAAO,CACT,GAAI,CAAC,IAAI,CAACwE,KAAK,CAAE,CACf,IAAI,CAACA,KAAK,CAAG,IAAIrI,WAAAA,CACjB,GAAI,IAAI,CAAC6gH,cAAc,CAAE,CACvB,IAAI,CAACx4G,KAAK,CAACjD,OAAO,CAAC,IAAI,CAACy7G,cAAc,EACxC,CACF,CACA,OAAO,IAAI,CAACx4G,KAAK,CAEnBhe,KAAQ,EAAA,CACN,OAAO,IAAIo7K,WAAY,CAAA,IAAI,CAACj/K,OAAO,CACrC,CACA49K,WAAY,CACV,GAAI,CAAC,IAAI,CAAC59K,OAAO,CAACm/K,YAAY,CAAE,CAC9B,IAAI,CAACn/K,OAAO,CAAG,KACjB,CACA,IAAI,CAAC2lE,IAAI,CAAG,KACd,CAjCArvE,WAAY0J,CAAAA,OAAO,CAAC,CAClB,IAAI,CAAC2lE,IAAI,CAAG,KACZ,CAAA,IAAI,CAAC3lE,OAAO,CAAGA,OACf,CAAA,IAAI,CAACo5F,KAAK,CAAGp5F,OAAAA,CAAQnO,IAAI,CACzB,IAAI,CAACqtL,cAAc,CAAGl/K,OAAQo7K,CAAAA,aAAa,EAAI,CAC/C,CAAA,IAAI,CAACv5J,KAAK,CAAG7hB,OAAQqd,CAAAA,IAAI,CACzB,IAAI,CAACg9G,cAAc,CAAGr6H,OAAQq6H,CAAAA,cAAc,CAC5C,IAAI,CAACoG,cAAc,CAAG,CAAC,CAACzgI,OAAAA,CAAQq6H,cAAc,CAC9C,IAAI,CAACqG,YAAY,CAAG,CAAC,CAAC1gI,QAAQq+K,aAChC,CAyBF,CAEA,IAAIe,eAAAA,CACJ,IAAIC,YAAAA,CAAe,CACnB,CAAA,MAAMC,qBAAwB,CAAA,CAAA,CAC9B,MAAMC,MAAAA,CAAS,IAAIzuK,IAAAA,CACnB,MAAM0uK,SAAY,CAAA,IAAI1uK,IACtB,CAAA,MAAM2uK,gBAAmB,CAAA,IAAIj1K,IAC7B,CAAA,MAAMk1K,SAAY,CAAA,IAAIl1K,IACtB,CAAA,MAAMm1K,aAAgB,CAAA,IAAIn1K,IAC1B,CAAA,MAAMo1K,gBAAkB,IAAIp1K,IAAAA,CAC5B,MAAMq1K,WAAAA,CAAc,IAAIr1K,IAAAA,CACxB,MAAMs1K,gBAAAA,CAAmB,IAAIt1K,IAAAA,CAC7B,MAAMu1K,YAAAA,CAAe,IAAIv1K,IAAAA,CACzB,MAAMw1K,iBAAAA,CAAoB,IAAIx1K,IAC9B,CAAA,MAAMy1K,iBAAoB,CAAA,IAAIz1K,IAC9B,CAAA,MAAM01K,WAAc,CAAA,IAAI11K,KACxB,MAAM21K,gBAAAA,CAAmB,IAAI31K,IAAAA,CAC7B,MAAM41K,UAAAA,CAAa,IAAI51K,IAAAA,CACvB,MAAM61K,SAAY,CAAA,IAAI71K,IACtB,CAAA,SAAS81K,IAAK/9J,CAAAA,CAAC,CACb,CAAA,OAAOA,CAAIz0B,CAAAA,IAAAA,CAAKmQ,KAAK,CAACskB,CACxB,CAAA,CACA,SAASg+J,UAAAA,CAAW39K,CAAC,CACnB,CAAA,OAAO9U,IAAKoU,CAAAA,GAAG,CAACpU,IAAAA,CAAKmU,GAAG,CAACW,CAAG,CAAA,CAAA,CAAA,CAAI,CAClC,CAAA,CACA,SAAS49K,KAAAA,CAAM59K,CAAC,CAAE0H,CAAC,CACjB,CAAA,OAAO1H,CAAI0H,CAAAA,CAAAA,CAAIxc,IAAKmQ,CAAAA,KAAK,CAAC2E,CAAAA,CAAI0H,CAChC,CAAA,CACA,SAASm2K,eAAAA,CAAgBzyL,CAAC,CAAA,CACxB,IAAI0yL,IAAAA,CAAOJ,KAAKtyL,CAChB,CAAA,CAAA,IAAI2yL,IAAOL,CAAAA,IAAAA,CAAK,GAAQtyL,CAAAA,CAAAA,CAAAA,CACxB,IAAI4yL,IAAAA,CAAON,KAAK,KAAUtyL,CAAAA,CAAAA,CAAAA,CAC1B,IAAI6yL,IAAAA,CAAOP,IAAK,CAAA,SAAA,CAActyL,CAC9B0yL,CAAAA,CAAAA,IAAAA,EAAQC,KAAO,GACfA,CAAAA,IAAAA,EAAQC,IAAO,CAAA,GAAA,CACfA,IAAQC,EAAAA,IAAAA,CAAO,GACfA,CAAAA,IAAAA,EAAQA,IAAO,CAAA,GAAA,CACf,OAAO,CACLH,IACAC,CAAAA,IAAAA,CACAC,IACAC,CAAAA,IAAAA,CACD,CAEH,SAASC,aAAc9yL,CAAAA,CAAC,CACtB,CAAA,IAAI0yL,IAAOJ,CAAAA,IAAAA,CAAKtyL,CAChB,CAAA,CAAA,IAAI2yL,IAAOL,CAAAA,IAAAA,CAAK,GAAQtyL,CAAAA,CAAAA,CAAAA,CACxB0yL,IAAQC,EAAAA,IAAAA,CAAO,IACfA,IAAQA,EAAAA,IAAAA,CAAO,GACf,CAAA,OAAO,CACLD,IAAAA,CACAC,IACD,CACH,CACA,MAAMI,kBAIJC,CAAAA,iBAAAA,CAAkBC,WAAW,CAAEC,WAAW,CAAEC,wBAAwB,CAAEC,UAAU,CAAE7yL,CAAC,CAAE,CACnF,MAAMowK,OAAAA,CAAU,IAAI,CAAC0iB,QAAQ,CAC7B,MAAMC,EAAKxzL,CAAAA,IAAAA,CAAKC,MAAM,EAAA,CACtB,MAAMwzL,EAAKzzL,CAAAA,IAAAA,CAAKC,MAAM,EAAA,CACtB,MAAMyzL,EAAAA,CAAK1zL,IAAKC,CAAAA,MAAM,EACtB,CAAA,MAAM0zL,EAAK3zL,CAAAA,IAAAA,CAAKC,MAAM,EAAA,CACtB,GAAI4wK,OAAAA,CAAQ+iB,MAAM,CAAE,CAClBT,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAA,CAAIrC,qBAAsB,CAAA,CAAGgC,EACnGL,CAAAA,WAAW,CAAC1yL,EAAI+wL,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAG,CAAA,CAAIrC,qBAAsB,CAAA,CAAGiC,EACnGN,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAA,CAAIrC,qBAAsB,CAAA,CAAGkC,GACrG,CACA9B,SAAU98K,CAAAA,CAAC,CAAG0+K,EAAK,CAAA,EACnB5B,CAAAA,SAAAA,CAAUp1K,CAAC,CAAGi3K,EAAK,CAAA,EACnB7B,CAAAA,SAAUj1K,CAAAA,CAAC,CAAG+2K,EAAAA,CAAK,EACnB,CAAA,GAAI7iB,OAAQijB,CAAAA,YAAY,GAAK96D,gBAAAA,CAAkB,CAC7C,MAAM5kH,GAAMpU,CAAAA,IAAAA,CAAKoU,GAAG,CAACpU,KAAKma,GAAG,CAACy3K,SAAU98K,CAAAA,CAAC,CAAG9U,CAAAA,IAAAA,CAAKoU,GAAG,CAACpU,IAAKma,CAAAA,GAAG,CAACy3K,SAAAA,CAAUp1K,CAAC,CAAA,CAAGxc,IAAKma,CAAAA,GAAG,CAACy3K,SAAUj1K,CAAAA,CAAC,CAChG,CAAA,CAAA,CAAA,MAAMo3K,KAAQ3/K,CAAAA,GAAAA,CAAM,CAAC,EAAMA,CAAAA,GAAE,EAAKi/K,wBAAwB,CAAC,CAAA,CAAE,CAC7D,MAAMW,MAAQ5/K,GAAM,CAAC,CAAA,EAAA,CAAMA,GAAE,EAAKi/K,wBAAwB,CAAC,EAAE,CAC7D,MAAMY,KAAQ7/K,CAAAA,GAAAA,CAAM,CAAC,EAAMA,CAAAA,GAAE,EAAKi/K,wBAAwB,CAAC,CAAE,CAC7DzB,CAAAA,SAAAA,CAAU98K,CAAC,CAAGi/K,KAAS3/K,EAAAA,GAAQpU,GAAAA,IAAAA,CAAKma,GAAG,CAACy3K,SAAU98K,CAAAA,CAAC,EAAI9U,IAAKk0L,CAAAA,IAAI,CAACtC,SAAAA,CAAU98K,CAAC,CAAA,CAAI,CAAI88K,CAAAA,SAAAA,CAAU98K,CAAAA,CAC9F88K,CAAAA,SAAUp1K,CAAAA,CAAC,CAAGw3K,KAAAA,EAAS5/K,GAAQpU,GAAAA,IAAAA,CAAKma,GAAG,CAACy3K,SAAUp1K,CAAAA,CAAC,CAAIxc,CAAAA,IAAAA,CAAKk0L,IAAI,CAACtC,SAAUp1K,CAAAA,CAAC,CAAI,CAAA,CAAA,CAAIo1K,SAAUp1K,CAAAA,CAAC,CAC/Fo1K,CAAAA,SAAUj1K,CAAAA,CAAC,CAAGs3K,KAAAA,EAAS7/K,GAAAA,GAAQpU,KAAKma,GAAG,CAACy3K,SAAUj1K,CAAAA,CAAC,CAAI3c,CAAAA,IAAAA,CAAKk0L,IAAI,CAACtC,UAAUj1K,CAAC,CAAA,CAAI,CAAIi1K,CAAAA,SAAAA,CAAUj1K,CAAAA,CAC9F,CAAA,GAAI,CAACk0J,OAAAA,CAAQsjB,UAAU,CAAE,CACvBxC,gBAAAA,CAAiBnyL,IAAI,CAAC8zL,YAAYviL,GAAG,CAACqiL,WAAYxuK,CAAAA,cAAc,CAACgtK,SAAAA,CAAAA,EACnE,CAAO,KAAA,CACLD,gBAAiBnyL,CAAAA,IAAI,CAAC4zL,WAAAA,CAAYxuK,cAAc,CAACgtK,SACnD,CAAA,EAAA,CACF,MAAO,CACLA,SAAAA,CAAU/wL,SAAS,EAAA,CACnB,MAAMuzL,2BAAAA,CAA8BvjB,OAAQwjB,CAAAA,aAAa,GAAK,CAAA,CAAI,CAAIxjB,CAAAA,OAAAA,CAAQyjB,kBAAkB,CAAGzjB,OAAQwjB,CAAAA,aAAa,CACxH,MAAMt0L,CAAAA,CAAI4zL,EAAM,EAAA,CAAMS,CAAAA,2BAA0B,CAAKA,CAAAA,2BAAAA,CACrD,GAAI,CAACvjB,OAAAA,CAAQsjB,UAAU,CAAE,CACvBxC,gBAAAA,CAAiBnyL,IAAI,CAAC8zL,YAAYviL,GAAG,CAAC6gL,SAAUr7K,CAAAA,SAAS,CAACxW,CAAAA,CAAI8wK,OAAQwjB,CAAAA,aAAa,CACrF,EAAA,CAAA,KAAO,CACL1C,gBAAAA,CAAiBnyL,IAAI,CAACoyL,SAAUr7K,CAAAA,SAAS,CAACxW,CAAI8wK,CAAAA,OAAAA,CAAQwjB,aAAa,CAAA,EACrE,CACF,CACA,MAAME,YAAAA,CAAezgL,KAAKY,IAAI,CAACm8J,OAAQ2jB,CAAAA,IAAI,CAAE3jB,OAAAA,CAAQ4jB,KAAK,CAAEjB,IAC5D,IAAIkB,cAAAA,CAAiB,CAACH,YAAAA,CAAe9zL,CACrC,CAAA,GAAIowK,OAAQ8jB,CAAAA,KAAK,CAAE,CACjB,MAAMC,KAAAA,CAAQ,CAACjD,gBAAiB78K,CAAAA,CAAC,CAAG+7J,OAAQgkB,CAAAA,WAAW,CAACjpK,MAAM,CAAC9W,CAAC,EAAI+7J,QAAQikB,eAAe,CAAChgL,CAAC,CAAG,EAChG,CAAA,MAAMigL,KAAQ,CAACpD,CAAAA,gBAAiBn1K,CAAAA,CAAC,CAAGq0J,OAAAA,CAAQgkB,WAAW,CAACjpK,MAAM,CAACpP,CAAAA,EAAKq0J,OAAAA,CAAQikB,eAAe,CAACt4K,CAAC,CAAG,GAChG,MAAMw4K,KAAAA,CAAQ,CAACrD,gBAAiBh1K,CAAAA,CAAC,CAAGk0J,OAAAA,CAAQgkB,WAAW,CAACjpK,MAAM,CAACjP,CAAAA,EAAKk0J,OAAAA,CAAQikB,eAAe,CAACn4K,CAAC,CAAG,EAAA,CAChG,IAAIs4K,KAAAA,CAAQnhL,IAAKY,CAAAA,IAAI,CAACm8J,OAAAA,CAAQqkB,UAAU,CAAGphL,IAAKC,CAAAA,UAAU,CAAE88J,OAAAA,CAAQskB,WAAW,CAAGrhL,IAAAA,CAAKC,UAAU,CAAEy/K,EACnGyB,CAAAA,CAAAA,KAAAA,CAAQA,KAASj1L,EAAAA,KAAKgU,EAAE,CAAG,CAAA,CAAA,EAAMhU,IAAAA,CAAKgU,EAAE,CAAG,CAAA,CAC3C,CAAA,MAAMohL,GAAMpC,CAAAA,aAAAA,CAAc4B,KAC1BzB,CAAAA,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAsB,CAAG4D,GAAG,CAAC,CAAA,CAAE,CAC/CjC,WAAW,CAAC1yL,CAAAA,CAAI+wL,qBAAwB,CAAA,CAAA,CAAE,CAAG4D,GAAG,CAAC,CAAA,CAAE,CACnD,MAAMC,GAAMrC,CAAAA,aAAAA,CAAc+B,KAC1B5B,CAAAA,CAAAA,WAAW,CAAC1yL,EAAI+wL,qBAAwB,CAAA,CAAA,CAAE,CAAG6D,GAAG,CAAC,CAAA,CAAE,CACnDlC,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAE,CAAA,CAAG6D,GAAG,CAAC,EAAE,CACnD,MAAMC,GAAMtC,CAAAA,aAAAA,CAAcgC,KAC1B7B,CAAAA,CAAAA,WAAW,CAAC1yL,EAAI+wL,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAGrC,qBAAAA,CAAsB,CAAG8D,GAAG,CAAC,CAAE,CACrGnC,CAAAA,WAAW,CAAC1yL,CAAAA,CAAI+wL,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAGrC,qBAAAA,CAAsB,CAAG8D,GAAG,CAAC,CAAA,CAAE,CACrG,MAAMC,GAAAA,CAAMvC,aAAciC,CAAAA,KAAAA,CAC1B9B,CAAAA,WAAW,CAAC1yL,CAAAA,CAAI+wL,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAGrC,qBAAAA,CAAsB,CAAG+D,GAAG,CAAC,CAAE,CACrGpC,CAAAA,WAAW,CAAC1yL,CAAAA,CAAI+wL,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAGrC,qBAAAA,CAAsB,CAAG+D,GAAG,CAAC,CAAA,CAAE,CACrG,MAAMv0K,EAAAA,CAAK,CACXmyK,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,EAAI3gB,OAAQgjB,CAAAA,eAAe,CAAGrC,qBAAAA,CAAwB,CAAE,CAAA,CAAGxwK,EACnG,CAAA,MAAMw0K,WAAax1L,IAAKoU,CAAAA,GAAG,CAACy8J,OAAAA,CAAQ4kB,QAAQ,CAAE,CAAC5kB,OAAQ6kB,CAAAA,YAAY,CAAG,CAAE,EAAK11L,IAAAA,CAAKoU,GAAG,CAACy8J,QAAQ2jB,IAAI,CAAE3jB,OAAQ4jB,CAAAA,KAAK,CACjH,CAAA,CAAA,MAAMkB,UAAa9kB,CAAAA,OAAAA,CAAQ4kB,QAAQ,CAAG,CAAA,CACtCf,cAAiB,CAACA,CAAAA,cAAAA,CAAiBc,UAAS,GAAMA,UAAaG,CAAAA,UAAS,CACxE,CAAA,MAAMC,KAAQjD,CAAAA,eAAAA,CAAgB+B,cAC9BvB,CAAAA,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAGrC,sBAAwB,CAAE,CAAA,CAAGoE,KAAK,CAAC,CAAE,CAC3GzC,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAGrC,qBAAwB,CAAA,CAAA,CAAE,CAAGoE,KAAK,CAAC,CAAE,CAC3GzC,CAAAA,WAAW,CAAC1yL,CAAAA,CAAI+wL,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAGrC,qBAAAA,CAAwB,CAAE,CAAA,CAAGoE,KAAK,CAAC,CAAA,CAAE,CAC3GzC,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAGrC,qBAAwB,CAAA,CAAA,CAAE,CAAGoE,KAAK,CAAC,CAAE,EAC7G,CAAO,KAAA,CACLzC,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAsB,CAAGG,gBAAAA,CAAiB78K,CAC1Dq+K,CAAAA,WAAW,CAAC1yL,CAAAA,CAAI+wL,sBAAwB,CAAE,CAAA,CAAGG,gBAAiBn1K,CAAAA,CAAC,CAC/D22K,WAAW,CAAC1yL,EAAI+wL,qBAAwB,CAAA,CAAA,CAAE,CAAGG,gBAAAA,CAAiBh1K,CAC9Dw2K,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAE,CAAA,CAAG19K,IAAKY,CAAAA,IAAI,CAACm8J,OAAAA,CAAQqkB,UAAU,CAAGphL,IAAKC,CAAAA,UAAU,CAAE88J,OAAAA,CAAQskB,WAAW,CAAGrhL,KAAKC,UAAU,CAAEy/K,EACpIL,CAAAA,CAAAA,WAAW,CAAC1yL,CAAI+wL,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAGrC,qBAAsB,CAAA,CAAGkD,eACjG,CACF,CACA7gJ,MAAOp5B,CAAAA,IAAI,CAAEo7K,QAAQ,CAAE1C,WAAW,CAAEC,WAAW,CAAEC,wBAAwB,CAAEC,UAAU,CAAE/lC,KAAK,CAAEuoC,QAAQ,CAAE,CACtG,IAAIzlL,CAAGC,CAAAA,CAAAA,CAAGxQ,CACV,CAAA,MAAM+wK,OAAU,CAAA,IAAI,CAAC0iB,QAAQ,CAC7B,GAAI1iB,OAAAA,CAAQxrC,YAAY,CAACwL,IAAI,CAAE,CAC7B,MAAMklD,OAAAA,CAAUllB,OAAQxrC,CAAAA,YAAY,CAACwL,IAAI,CAACj9G,cAAc,CACxD,IAAI,IAAIozD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAIA,CAAAA,CAAAA,EAAAA,CAAI,CACzByqG,MAAOh3K,CAAAA,IAAI,CAACusE,CAAAA,CAAE,CAAG+uG,OAAAA,CAAQt7K,IAAI,CAACusE,CAAE,EAClC,CACA0qG,SAAAA,CAAUlyL,IAAI,CAACiyL,MACfC,CAAAA,CAAAA,SAAAA,CAAUlrK,MAAM,EAChB8qK,CAAAA,eAAAA,CAAkBzgB,OAAQxrC,CAAAA,YAAY,CAACwL,IAAI,CAACqW,UAAU,CACtDqqC,YAAAA,CAAevxL,IAAKoU,CAAAA,GAAG,CAACpU,IAAAA,CAAKoU,GAAG,CAACk9K,gBAAgBx8K,CAAC,CAAEw8K,eAAgB90K,CAAAA,CAAC,CAAG80K,CAAAA,eAAAA,CAAgB30K,CAAC,EAC3F,CACA22K,UAAaziB,CAAAA,OAAAA,CAAQxrC,YAAY,CAACwL,IAAI,GAAK,IAAQggC,EAAAA,OAAAA,CAAQsjB,UAAU,CAAGz3K,IAAAA,CAAK8B,IAAI,CAAGqyJ,OAAQxrC,CAAAA,YAAY,CAACwL,IAAI,CAAC9lB,WAAW,EACzH,CAAA,MAAMirE,MAASnlB,CAAAA,OAAAA,CAAQn9B,MAAM,CAAGm9B,QAAQn9B,MAAM,CAACkO,KAAK,CAAC72B,WAAW,EAAA,CAAKruG,IAAK8B,CAAAA,IAAI,CAC9E,MAAMy3K,QAAAA,CAAW,CAACplB,OAAAA,CAAQqlB,OAAO,CAAG,EAAK,CAAA,EAAA,CACzC,IAAIC,EAAIC,CAAAA,EAAAA,CACR,IAAIC,QAAAA,CAAUC,SAAWC,CAAAA,MAAAA,CAAQ5hL,KAAO6hL,CAAAA,MAAAA,CAAQC,WAAaC,CAAAA,YAAAA,CAC7D,MAAMC,UAAAA,CAAa9lB,OAAQx2J,CAAAA,SAAS,CAAG,CAAA,CACvC,IAAI,IAAI5Z,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIowK,OAAQ6kB,CAAAA,YAAY,CAAEj1L,CAAAA,EAAAA,CAAI,CAC3C,MAAMgqC,EAAAA,CAAKzqC,IAAKmQ,CAAAA,KAAK,CAAC0gK,OAAAA,CAAQ+lB,KAAK,CAACn2L,EAAIowK,OAAQgmB,CAAAA,gBAAgB,EAAIhmB,OAAQqlB,CAAAA,OAAO,CAAG,CAAA,CAAI,CAAA,CAAA,CAAK,CAAE,CAAA,CAAA,CACjG,MAAMY,SAAAA,CAAY3D,WAAW,CAAC1oJ,GAAK+mJ,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAG,CAAA,CAAIrC,qBAAsB,CACnHK,CAAAA,aAAAA,CAAc/8K,CAAC,CAAGgiL,SAClBjF,CAAAA,aAAcr1K,CAAAA,CAAC,CAAG22K,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAIrC,CAAAA,qBAAAA,CAAsB,CACnHK,aAAcl1K,CAAAA,CAAC,CAAGw2K,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAIrC,CAAAA,qBAAAA,CAAsB,CACnH,MAAM+C,YAAAA,CAAe1jB,OAAQ2jB,CAAAA,IAAI,CAAI3jB,CAAAA,OAAAA,CAAQ4jB,KAAK,CAAG5jB,OAAAA,CAAQ2jB,IAAG,EAAKsC,SAAAA,CACrE,MAAMC,gBAAAA,CAAmBlmB,OAAQ4kB,CAAAA,QAAQ,CACzC,IAAIuB,IAAO7D,CAAAA,WAAW,CAAC1oJ,EAAAA,CAAK+mJ,sBAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAGrC,qBAAsB,CAAA,CAAGjkC,KAC3G,CAAA,MAAM0pC,KAAQxE,CAAAA,UAAAA,CAAWuE,IAAOD,CAAAA,gBAAAA,CAAAA,CAChC,IAAIh0K,KAAAA,CAAQ,CACZ,CAAA,IAAIm0K,SAAW,CACf,CAAA,MAAM56K,KAAQ,CAAA,CAAA,CACd,MAAM66K,OAAAA,CAAUH,IAAOzpC,CAAAA,KAAAA,EAAS,CAAOypC,EAAAA,IAAAA,EAAQD,gBAC/C,CAAA,GAAII,OAAS,CAAA,CACX,IAAI,CAACjE,iBAAiB,CAACC,WAAAA,CAAaC,WAAaC,CAAAA,wBAAAA,CAA0BC,UAAY7oJ,CAAAA,EAAAA,EACzF,CACA,IAAI2sJ,gBAAkBJ,IAAO,CAAA,CAAA,EAAOA,IAAOD,CAAAA,gBAAAA,CAC3C,GAAIK,eAAAA,CAAiB,CACnBt3L,CAAAA,CAAIm3L,MAAQN,UACZR,CAAAA,EAAAA,CAAKn2L,IAAKmQ,CAAAA,KAAK,CAACrQ,CAAAA,CAAAA,CAChBs2L,EAAKp2L,CAAAA,IAAAA,CAAK0V,IAAI,CAAC5V,CACfA,CAAAA,CAAAA,CAAAA,EAAK,CACLuQ,CAAAA,CAAAA,CAAIwgK,OAAQwmB,CAAAA,SAAS,CAAClB,EAAG,CAAA,CACzB7lL,CAAIugK,CAAAA,OAAAA,CAAQwmB,SAAS,CAACjB,EAAG,CAAA,CACzBC,QAAWhmL,CAAAA,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CACzBuQ,EAAIwgK,OAAQymB,CAAAA,UAAU,CAACnB,EAAAA,CAAG,CAC1B7lL,CAAAA,CAAIugK,OAAQymB,CAAAA,UAAU,CAAClB,EAAAA,CAAG,CAC1BE,SAAAA,CAAYjmL,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,CAAAA,CAC1BuQ,CAAIwgK,CAAAA,OAAAA,CAAQ0mB,MAAM,CAACpB,EAAG,CAAA,CACtB7lL,EAAIugK,OAAQ0mB,CAAAA,MAAM,CAACnB,EAAAA,CAAG,CACtBrzK,KAAAA,CAAQ1S,CAAI,CAACC,CAAAA,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CACtBuQ,CAAIwgK,CAAAA,OAAAA,CAAQ2mB,OAAO,CAACrB,EAAG,CAAA,CACvB7lL,CAAIugK,CAAAA,OAAAA,CAAQ2mB,OAAO,CAACpB,EAAG,CAAA,CACvBG,OAASlmL,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,CACvBuQ,CAAAA,CAAAA,CAAIwgK,QAAQ4mB,MAAM,CAACtB,EAAG,CAAA,CACtB7lL,CAAIugK,CAAAA,OAAAA,CAAQ4mB,MAAM,CAACrB,GAAG,CACtBzhL,KAAAA,CAAQtE,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,CACtBuQ,CAAAA,CAAAA,CAAIwgK,OAAQ6mB,CAAAA,OAAO,CAACvB,EAAAA,CAAG,CACvB7lL,CAAAA,CAAIugK,QAAQ6mB,OAAO,CAACtB,EAAG,CAAA,CACvBI,MAASnmL,CAAAA,CAAAA,CAAI,CAACC,EAAID,CAAAA,EAAKvQ,CACvBuQ,CAAAA,CAAAA,CAAIwgK,OAAQ8mB,CAAAA,YAAY,CAACxB,EAAAA,CAAG,CAC5B7lL,CAAIugK,CAAAA,OAAAA,CAAQ8mB,YAAY,CAACvB,EAAG,CAAA,CAC5BK,WAAcpmL,CAAAA,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CAC5BuQ,CAAIwgK,CAAAA,OAAAA,CAAQ+mB,aAAa,CAACzB,EAAAA,CAAG,CAC7B7lL,CAAAA,CAAIugK,OAAQ+mB,CAAAA,aAAa,CAACxB,EAAAA,CAAG,CAC7BM,YAAAA,CAAermL,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,EAC7B22L,WAAe,EAACC,CAAAA,YAAAA,CAAeD,WAAU,GAAMK,SAAAA,CAAY,GAAQ,CAAA,CAAE,CACrEhF,CAAAA,eAAgBh9K,CAAAA,CAAC,CAAGq+K,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAsB,CAC3DM,eAAgBt1K,CAAAA,CAAC,CAAG22K,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAE,CAC/DM,CAAAA,eAAAA,CAAgBn1K,CAAC,CAAGw2K,WAAW,CAAC1oJ,EAAAA,CAAK+mJ,qBAAwB,CAAA,CAAA,CAAE,CAC/D,GAAI,CAAC3gB,OAAAA,CAAQsjB,UAAU,CAAE,CACvBhC,iBAAAA,CAAkB3yL,IAAI,CAACsyL,eAAiBzzK,CAAAA,CAAAA,GAAG,CAACi1K,UAC9C,EAAA,CAAA,KAAO,CACLnB,iBAAAA,CAAkB3yL,IAAI,CAACsyL,eACzB,EAAA,CACAK,iBAAkBtxL,CAAAA,SAAS,EAAG0V,CAAAA,SAAS,CAACkgL,WAAAA,CAAAA,CACxCN,EAAM,EAAA,CAAA,CACNC,IAAM,CACN/lL,CAAAA,CAAAA,CAAIwgK,OAAQgnB,CAAAA,cAAc,CAAC1B,EAAAA,CAAG,CAC9B7lL,CAAAA,CAAIugK,OAAQgnB,CAAAA,cAAc,CAACzB,EAAAA,CAAG,CAC9BpE,gBAAiBl9K,CAAAA,CAAC,CAAGzE,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,CACnCuQ,CAAAA,CAAAA,CAAIwgK,QAAQgnB,cAAc,CAAC1B,EAAK,CAAA,CAAA,CAAE,CAClC7lL,CAAAA,CAAIugK,OAAQgnB,CAAAA,cAAc,CAACzB,EAAK,CAAA,CAAA,CAAE,CAClCpE,gBAAiBx1K,CAAAA,CAAC,CAAGnM,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CACnCuQ,CAAIwgK,CAAAA,OAAAA,CAAQgnB,cAAc,CAAC1B,EAAAA,CAAK,CAAE,CAAA,CAClC7lL,CAAIugK,CAAAA,OAAAA,CAAQgnB,cAAc,CAACzB,EAAK,CAAA,CAAA,CAAE,CAClCpE,gBAAiBr1K,CAAAA,CAAC,CAAGtM,CAAAA,CAAI,CAACC,CAAAA,CAAID,CAAAA,EAAKvQ,CACnCuQ,CAAAA,CAAAA,CAAIwgK,OAAQinB,CAAAA,eAAe,CAAC3B,EAAAA,CAAG,CAC/B7lL,CAAAA,CAAIugK,OAAQinB,CAAAA,eAAe,CAAC1B,EAAAA,CAAG,CAC/BlE,iBAAAA,CAAkBp9K,CAAC,CAAGzE,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,CAAAA,CACpCuQ,CAAIwgK,CAAAA,OAAAA,CAAQinB,eAAe,CAAC3B,EAAK,CAAA,CAAA,CAAE,CACnC7lL,CAAIugK,CAAAA,OAAAA,CAAQinB,eAAe,CAAC1B,EAAK,CAAA,CAAA,CAAE,CACnClE,iBAAkB11K,CAAAA,CAAC,CAAGnM,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CACpCuQ,CAAAA,CAAAA,CAAIwgK,OAAQinB,CAAAA,eAAe,CAAC3B,EAAAA,CAAK,CAAE,CAAA,CACnC7lL,EAAIugK,OAAQinB,CAAAA,eAAe,CAAC1B,EAAAA,CAAK,CAAE,CACnClE,CAAAA,iBAAAA,CAAkBv1K,CAAC,CAAGtM,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CACpCuQ,CAAIwgK,CAAAA,OAAAA,CAAQknB,SAAS,CAAC5B,EAAG,CAAA,CACzB7lL,CAAIugK,CAAAA,OAAAA,CAAQknB,SAAS,CAAC3B,EAAAA,CAAG,CACzBrE,WAAYj9K,CAAAA,CAAC,CAAGzE,CAAAA,CAAI,CAACC,CAAAA,CAAID,CAAAA,EAAKvQ,CAC9BuQ,CAAAA,CAAAA,CAAIwgK,OAAQknB,CAAAA,SAAS,CAAC5B,EAAK,CAAA,CAAA,CAAE,CAC7B7lL,CAAAA,CAAIugK,OAAQknB,CAAAA,SAAS,CAAC3B,EAAAA,CAAK,CAAE,CAC7BrE,CAAAA,WAAAA,CAAYv1K,CAAC,CAAGnM,CAAI,CAACC,CAAAA,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CAC9BuQ,CAAIwgK,CAAAA,OAAAA,CAAQknB,SAAS,CAAC5B,EAAK,CAAA,CAAA,CAAE,CAC7B7lL,CAAAA,CAAIugK,OAAQknB,CAAAA,SAAS,CAAC3B,EAAAA,CAAK,EAAE,CAC7BrE,WAAYp1K,CAAAA,CAAC,CAAGtM,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CAC9BuQ,CAAIwgK,CAAAA,OAAAA,CAAQmnB,UAAU,CAAC7B,GAAG,CAC1B7lL,CAAAA,CAAIugK,OAAQmnB,CAAAA,UAAU,CAAC5B,EAAAA,CAAG,CAC1BnE,aAAan9K,CAAC,CAAGzE,CAAI,CAACC,CAAAA,CAAAA,CAAID,CAAAA,EAAKvQ,EAC/BuQ,CAAIwgK,CAAAA,OAAAA,CAAQmnB,UAAU,CAAC7B,EAAK,CAAA,CAAA,CAAE,CAC9B7lL,CAAAA,CAAIugK,OAAQmnB,CAAAA,UAAU,CAAC5B,EAAAA,CAAK,CAAE,CAC9BnE,CAAAA,YAAAA,CAAaz1K,CAAC,CAAGnM,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAAAA,CAC/BuQ,CAAIwgK,CAAAA,OAAAA,CAAQmnB,UAAU,CAAC7B,EAAK,CAAA,CAAA,CAAE,CAC9B7lL,CAAAA,CAAIugK,QAAQmnB,UAAU,CAAC5B,EAAK,CAAA,CAAA,CAAE,CAC9BnE,YAAat1K,CAAAA,CAAC,CAAGtM,CAAAA,CAAI,CAACC,CAAID,CAAAA,CAAAA,EAAKvQ,CAC/BkyL,CAAAA,gBAAiBl9K,CAAAA,CAAC,EAAKo9K,CAAAA,iBAAAA,CAAkBp9K,CAAC,CAAGk9K,iBAAiBl9K,CAAAA,EAAK+8K,aAAAA,CAAc/8K,CACjFk9K,CAAAA,gBAAAA,CAAiBx1K,CAAC,EAAK01K,CAAAA,iBAAAA,CAAkB11K,CAAC,CAAGw1K,gBAAiBx1K,CAAAA,CAAC,EAAIq1K,aAAcr1K,CAAAA,CAAC,CAClFw1K,gBAAiBr1K,CAAAA,CAAC,EAAI,CAACu1K,iBAAkBv1K,CAAAA,CAAC,CAAGq1K,gBAAAA,CAAiBr1K,CAAAA,EAAKk1K,aAAAA,CAAcl1K,CAAC,CAClF,GAAIk0J,OAAAA,CAAQonB,eAAe,CAAG,EAAG,CAC/B,GAAIpnB,OAAQijB,CAAAA,YAAY,GAAK76D,mBAAAA,CAAqB,CAChD24D,SAAAA,CAAUpyL,IAAI,CAACqyL,aAAet7K,CAAAA,CAAAA,SAAS,CAAC,CAAA,CAAA,CAAG8H,GAAG,CAAC3B,KAAKgC,GAAG,CAAA,CAAE7d,SAAS,EAAA,CAClEmxL,gBAAiBjhL,CAAAA,GAAG,CAAC6gL,SAAAA,CAAUr7K,SAAS,CAACs6J,OAAAA,CAAQonB,eAAe,CAAA,EAClE,CAAO,KAAA,CACLjG,gBAAiBjhL,CAAAA,GAAG,CAAC2L,IAAKqC,CAAAA,OAAO,CAACxI,SAAS,CAACs6J,OAAAA,CAAQonB,eAAe,CAAA,EACrE,CACF,CACAlG,WAAYj9K,CAAAA,CAAC,EAAKm9K,CAAAA,YAAAA,CAAan9K,CAAC,CAAGi9K,WAAAA,CAAYj9K,CAAAA,EAAK+8K,aAAAA,CAAc/8K,CAClEi9K,CAAAA,WAAYv1K,CAAAA,CAAC,EAAKy1K,CAAAA,YAAAA,CAAaz1K,CAAC,CAAGu1K,YAAYv1K,CAAAA,EAAKq1K,aAAAA,CAAcr1K,CAClEu1K,CAAAA,WAAAA,CAAYp1K,CAAC,EAAI,CAACs1K,YAAat1K,CAAAA,CAAC,CAAGo1K,WAAAA,CAAYp1K,CAAC,EAAIk1K,aAAcl1K,CAAAA,CAAC,CACnE05K,QAAAA,EAAY,CAACC,UAAYD,QAAO,EAAKxE,aAAcr1K,CAAAA,CAAC,CACpDuG,KAAAA,CAAQ,CAACA,MAAQ,CAACwzK,MAASxzK,CAAAA,KAAI,GAAM+zK,SAAY,CAAA,GAAA,CAAU,CAAE,CAAC,EAAKvF,YAAAA,CACnE2F,QAAW,CAACV,CAAAA,MAAAA,CAAS7hL,KAAI,GAAMmiL,SAAY,CAAA,GAAA,CAAS,CAAE,CAAA,CACtD,GAAIjmB,OAAAA,CAAQxrC,YAAY,CAACwL,IAAI,CAAE,CAC7B,GAAI,CAACggC,OAAAA,CAAQsjB,UAAU,CAAE,CACvB1C,MAAO7sK,CAAAA,cAAc,CAACotK,gBAAAA,CAAkBA,gBAC1C,EAAA,CAAA,KAAO,CACLA,gBAAAA,CAAiBl9K,CAAC,EAAIw8K,eAAgBx8K,CAAAA,CAAC,CACvCk9K,iBAAiBx1K,CAAC,EAAI80K,eAAgB90K,CAAAA,CAAC,CACvCw1K,gBAAiBr1K,CAAAA,CAAC,EAAI20K,eAAgB30K,CAAAA,EAAC,CAE3C,CACA,GAAI,CAACk0J,OAAAA,CAAQsjB,UAAU,CAAE,CACvBnC,gBAAiBjhL,CAAAA,GAAG,CAACghL,WAAAA,CAAYh0K,GAAG,CAACuzK,eACrCU,CAAAA,CAAAA,CAAAA,gBAAAA,CAAiBjhL,GAAG,CAACohL,iBAAkBp0K,CAAAA,GAAG,CAACuzK,eAAAA,CAAAA,EAC7C,MAAO,CACLI,SAAAA,CAAU9sK,cAAc,CAACmtK,WAAaA,CAAAA,WAAAA,CAAAA,CACtCC,gBAAiBjhL,CAAAA,GAAG,CAACghL,WAAahhL,CAAAA,CAAAA,GAAG,CAACohL,iBAAAA,EACxC,CACAG,UAAAA,CAAW9yL,IAAI,CAACwyL,kBAChBI,WAAY5yL,CAAAA,IAAI,CAACsyL,eAAAA,CAAAA,CAAiB/gL,GAAG,CAACihL,gBAAiBz7K,CAAAA,SAAS,CAACg3I,KAAAA,CAAAA,CAAAA,CACjE8kC,gBAAiB7yL,CAAAA,IAAI,CAAC4yL,WAAAA,CACtBe,CAAAA,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAsB,CAAGa,gBAAAA,CAAiBv9K,CAC3Dq+K,CAAAA,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAE,CAAA,CAAGa,gBAAiB71K,CAAAA,CAAC,CAChE22K,WAAW,CAAC1oJ,EAAAA,CAAK+mJ,qBAAwB,CAAA,CAAA,CAAE,CAAGa,gBAAAA,CAAiB11K,CAC/Dw2K,CAAAA,WAAW,CAAC1oJ,EAAAA,CAAK+mJ,qBAAwB,CAAA,CAAA,CAAE,EAAI6E,QAAAA,CAAW9oC,MAC1D,GAAIsjB,OAAAA,CAAQqnB,IAAI,EAAIrnB,OAAQsnB,CAAAA,UAAU,CAAE,CACtC,GAAI,CAACtnB,OAAQsjB,CAAAA,UAAU,CAAE,CACvB9B,gBAAiBh0K,CAAAA,GAAG,CAACi1K,UACvB,EAAA,CACAjB,gBAAiBv9K,CAAAA,CAAC,CAAG49K,KAAAA,CAAML,gBAAiBv9K,CAAAA,CAAC,CAAE+7J,OAAAA,CAAQsnB,UAAU,CAACrjL,CAAC,CAAA,CAAI+7J,OAAQsnB,CAAAA,UAAU,CAACrjL,CAAC,CAAG,EAC9Fu9K,CAAAA,gBAAiB71K,CAAAA,CAAC,CAAGk2K,KAAAA,CAAML,iBAAiB71K,CAAC,CAAEq0J,OAAQsnB,CAAAA,UAAU,CAAC37K,CAAC,CAAIq0J,CAAAA,OAAAA,CAAQsnB,UAAU,CAAC37K,CAAC,CAAG,EAC9F61K,CAAAA,gBAAAA,CAAiB11K,CAAC,CAAG+1K,KAAML,CAAAA,gBAAAA,CAAiB11K,CAAC,CAAEk0J,OAAQsnB,CAAAA,UAAU,CAACx7K,CAAC,EAAIk0J,OAAQsnB,CAAAA,UAAU,CAACx7K,CAAC,CAAG,EAAA,CAC9F,GAAI,CAACk0J,QAAQsjB,UAAU,CAAE,CACvB9B,gBAAAA,CAAiBthL,GAAG,CAACuiL,UACvB,EAAA,CACF,CACA,GAAIziB,OAAAA,CAAQlgK,IAAI,CAAG,CAAG,CAAA,CACpB,GAAIkgK,OAAAA,CAAQlgK,IAAI,GAAK,CAAG,CAAA,CACtB4hL,SAAU/yL,CAAAA,IAAI,CAAC6yL,gBAAAA,CAAAA,CAAkBh0K,GAAG,CAAC23K,MAAAA,CACrCnlB,CAAAA,OAAAA,CAAQunB,gBAAgB,CAAC3tJ,EAAG,CAAA,CAAG,EAAE8nJ,SAAAA,CAAUz9K,CAAC,CAAGy9K,SAAUz9K,CAAAA,CAAC,CAAGy9K,SAAAA,CAAU/1K,CAAC,CAAG+1K,SAAAA,CAAU/1K,CAAC,CAAG+1K,SAAU51K,CAAAA,CAAC,CAAG41K,SAAAA,CAAU51K,CAAAA,EACnH,CAAA,KAAO,GAAIk0J,OAAAA,CAAQlgK,IAAI,GAAK,EAAG,CAC7BkgK,OAAAA,CAAQunB,gBAAgB,CAAC3tJ,EAAG,CAAA,CAAGusJ,KACjC,CAAA,KAAO,GAAInmB,OAAAA,CAAQlgK,IAAI,GAAK,CAAG,CAAA,CAC7BkgK,OAAQunB,CAAAA,gBAAgB,CAAC3tJ,EAAG,CAAA,CAAG,CAACusJ,KAClC,CACF,CACF,CACA,GAAIlB,QAAU,CAAA,CACZ,GAAIkB,IAAAA,CAAO,CAAG,CAAA,CACZ7D,WAAW,CAAC1oJ,GAAK+mJ,qBAAwB,CAAA,CAAA,CAAI3gB,OAAQgjB,CAAAA,eAAe,CAAG,CAAA,CAAIrC,qBAAsB,CAAA,CAAG,CAAC,EACvG,CACF,CAAO,KAAA,CACL,GAAIwF,IAAAA,EAAQD,gBAAkB,CAAA,CAC5BC,MAAQh3L,IAAKoU,CAAAA,GAAG,CAAC2iL,gBAAAA,CAAkB,CAAClmB,OAAQ6kB,CAAAA,YAAY,CAAG,CAAA,EAAKnB,YAAAA,CAChEpB,CAAAA,WAAW,CAAC1oJ,EAAAA,CAAK+mJ,sBAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAIrC,CAAAA,qBAAAA,CAAsB,CAAG3gB,OAAAA,CAAQ7hD,IAAI,CAAG,CAAI,CAAA,CAAC,EAC1H,CACA,GAAIgoE,IAAAA,CAAO,GAAKnmB,OAAQ7hD,CAAAA,IAAI,CAAE,CAC5BmkE,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAIrC,CAAAA,qBAAAA,CAAsB,CAAG,EACtG,CACF,CACA,GAAI2B,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAG,CAAA,CAAIrC,qBAAsB,CAAA,CAAG,CAAG,CAAA,CACzG4F,eAAkB,CAAA,MACpB,CACAjE,WAAW,CAAC1oJ,EAAK+mJ,CAAAA,qBAAAA,CAAwB,CAAI3gB,CAAAA,OAAAA,CAAQgjB,eAAe,CAAGrC,qBAAsB,CAAA,CAAGwF,IAChG,CAAA,IAAI,IAAI92L,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2wK,QAAQgmB,gBAAgB,CAAE32L,CAAI,EAAA,CAAA,CAC/C,MAAMm4L,QAAAA,CAAW,CAAC53L,CAAIowK,CAAAA,OAAAA,CAAQgmB,gBAAgB,CAAG32L,CAAAA,GAAM2wK,OAAAA,CAAQqlB,OAAO,CAAG,CAAA,CAAI,CAAA,CAAA,CAC7E,IAAIoC,KAAAA,CAAQznB,OAAQ+lB,CAAAA,KAAK,CAACyB,QAAAA,CAAS,CACnC,IAAIE,KAAQ1nB,CAAAA,OAAAA,CAAQ+lB,KAAK,CAACyB,SAAW,CAAE,CAAA,CACvC,IAAIG,KAAAA,CAAQ3nB,OAAQ+lB,CAAAA,KAAK,CAACyB,QAAAA,CAAW,EAAE,CACvC,GAAI,CAACjB,eAAAA,CAAiB,CACpBkB,KAAAA,CAAQC,KAAQC,CAAAA,KAAAA,CAAQ,EAC1B,CACA,MAAMx4K,CAAIvf,CAAAA,CAAAA,CAAIowK,OAAQgmB,CAAAA,gBAAgB,CAAGZ,QAAAA,CAAW/1L,CAAI+1L,CAAAA,QACxDx7K,CAAAA,IAAI,CAACuF,CAAAA,CAAE,CAAGqyK,gBAAAA,CAAiBv9K,CAAC,CAC5B2F,IAAI,CAACuF,CAAI,CAAA,CAAA,CAAE,CAAGqyK,gBAAAA,CAAiB71K,CAAC,CAChC/B,IAAI,CAACuF,CAAI,CAAA,CAAA,CAAE,CAAGqyK,gBAAAA,CAAiB11K,CAAC,CAChClC,IAAI,CAACuF,CAAI,CAAA,CAAA,CAAE,CAAGi3K,KACdx8K,CAAAA,IAAI,CAACuF,CAAAA,CAAI,CAAE,CAAA,CAAG6wJ,OAAQ4nB,CAAAA,aAAa,CAAGn8K,KAAQ62K,CAAAA,WAAW,CAAC1oJ,EAAAA,CAAK+mJ,qBAAwB,CAAA,CAAA,CAAE,CACzF/2K,IAAI,CAACuF,CAAAA,CAAI,CAAE,CAAA,CAAG+C,KACdtI,CAAAA,IAAI,CAACuF,EAAI,CAAE,CAAA,CAAGk3K,QACdz8K,CAAAA,IAAI,CAACuF,CAAI,CAAA,CAAA,CAAE,CAAGsyK,UAAAA,CAAWx9K,CACzB2F,CAAAA,IAAI,CAACuF,CAAAA,CAAI,EAAE,CAAGs4K,KACd79K,CAAAA,IAAI,CAACuF,CAAAA,CAAI,CAAE,CAAA,CAAGu4K,KACd99K,CAAAA,IAAI,CAACuF,CAAI,CAAA,EAAA,CAAG,CAAGw4K,KACf/9K,CAAAA,IAAI,CAACuF,CAAI,CAAA,EAAA,CAAG,CAAGsyK,UAAAA,CAAW91K,CAC1B/B,CAAAA,IAAI,CAACuF,CAAAA,CAAI,EAAG,CAAA,CAAGyqB,EACfhwB,CAAAA,IAAI,CAACuF,CAAAA,CAAI,EAAG,CAAA,CAAGsyK,UAAW31K,CAAAA,CAAC,CAC3BlC,IAAI,CAACuF,CAAAA,CAAI,EAAG,CAAA,CAAG6wJ,OAAQ+lB,CAAAA,KAAK,CAACyB,QAAAA,CAAW,EAAE,CAC1C,GAAIxnB,OAAQqlB,CAAAA,OAAO,CAAE,CACnBz7K,IAAI,CAACuF,CAAI,CAAA,EAAA,CAAG,CAAG6wJ,OAAAA,CAAQ+lB,KAAK,CAACyB,QAAW,CAAA,CAAA,CAAE,CAC1C59K,IAAI,CAACuF,CAAAA,CAAI,EAAG,CAAA,CAAG6wJ,OAAQ+lB,CAAAA,KAAK,CAACyB,QAAAA,CAAW,CAAE,EAC5C,CACF,CACF,CACA,GAAIxnB,QAAQlgK,IAAI,CAAG+nH,iBAAqBm4C,EAAAA,OAAAA,CAAQn9B,MAAM,CAAE,CACtD,MAAMglD,QAAW7nB,CAAAA,OAAAA,CAAQqlB,OAAO,CAAG,CAAI,CAAA,CAAA,CACvC,MAAMkC,gBAAAA,CAAmBvnB,QAAQunB,gBAAgB,CACjD,IAAI,IAAI33L,CAAI,CAAA,CAAA,CAAGA,CAAIowK,CAAAA,OAAAA,CAAQ6kB,YAAY,CAAEj1L,CAAAA,EAAAA,CAAI,CAC3Co1L,QAAQ,CAACp1L,CAAAA,CAAE,CAAC,CAAA,CAAE,CAAGA,CACjBo1L,CAAAA,QAAQ,CAACp1L,CAAE,CAAA,CAAC,CAAE,CAAA,CAAG23L,gBAAgB,CAACp4L,IAAKmQ,CAAAA,KAAK,CAAC0gK,OAAAA,CAAQ+lB,KAAK,CAACn2L,EAAIowK,OAAQgmB,CAAAA,gBAAgB,CAAG6B,QAAAA,CAAW,CAAE,CAAA,CAAA,EAAE,CAE3G7nB,OAAQ8nB,CAAAA,KAAK,CAAC3vL,GAAG,CAAC6nK,OAAAA,CAAQ+lB,KAAK,CAAA,CAC/Bf,SAASllL,IAAI,CAAC,CAAC6I,EAAAA,CAAIo/K,EACjB,GAAA,CAAA,OAAOp/K,EAAE,CAAC,CAAE,CAAA,CAAGo/K,EAAE,CAAC,CAAE,CACtB,CACA,CAAA,CAAA,IAAI,IAAIn4L,CAAI,CAAA,CAAA,CAAGA,CAAIowK,CAAAA,OAAAA,CAAQ6kB,YAAY,CAAEj1L,CAAI,EAAA,CAAA,CAC3C,MAAM4V,GAAMw/K,CAAAA,QAAQ,CAACp1L,CAAAA,CAAE,CAAC,CAAA,CAAE,CAAGowK,OAAAA,CAAQgmB,gBAAgB,CAAG6B,QAAAA,CACxD,MAAMxzH,IAAAA,CAAOzkE,CAAIowK,CAAAA,OAAAA,CAAQgmB,gBAAgB,CAAG6B,QAC5C,CAAA,IAAI,IAAI1xG,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI6pF,OAAQgmB,CAAAA,gBAAgB,CAAG6B,QAAU1xG,CAAAA,CAAAA,EAAAA,CAAI,CAC1D6pF,OAAAA,CAAQ+lB,KAAK,CAAC1xH,IAAO8hB,CAAAA,CAAAA,CAAE,CAAG6pF,OAAQ8nB,CAAAA,KAAK,CAACtiL,GAAAA,CAAM2wE,CAAE,EAClD,CACF,CACF,CACF,CAhUAx+E,WAAAA,CAAYqoK,OAAO,CAAC,CAClB,IAAI,CAAC0iB,QAAQ,CAAG1iB,QAClB,CA+TF,CAEA,MAAMgoB,YAAAA,CAAe,IAAI55K,IAAAA,CACzB,MAAM65K,cAAiB,CAAA,IAAI75K,IAC3B,CAAA,MAAM85K,iBAAoB,CAAA,IAAI95K,IAC9B,CAAA,MAAM+5K,mBAqDJC,eAAkB,EAAA,CAChB,IAAI,CAACC,mBAAmB,CAAC,CAAE,CAAA,CAAG,IAAI,CAAC3F,QAAQ,CAAC4F,mBAAmB,CAACrkL,CAAC,CACjE,IAAI,CAACokL,mBAAmB,CAAC,CAAE,CAAA,CAAG,IAAI,CAAC3F,QAAQ,CAAC4F,mBAAmB,CAAC38K,CAAC,CACjE,IAAI,CAAC08K,mBAAmB,CAAC,CAAE,CAAA,CAAG,IAAI,CAAC3F,QAAQ,CAAC4F,mBAAmB,CAACx8K,CAAC,CACjE,IAAI,CAACy8K,oBAAoB,CAAChhJ,QAAQ,CAAC,IAAI,CAAC8gJ,mBAAmB,CAC3D,CAAA,IAAI,CAACG,qBAAqB,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC9F,QAAQ,CAAC+F,qBAAqB,CAACxkL,CACpE,CAAA,IAAI,CAACukL,qBAAqB,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC9F,QAAQ,CAAC+F,qBAAqB,CAAC98K,CACpE,CAAA,IAAI,CAAC68K,qBAAqB,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC9F,QAAQ,CAAC+F,qBAAqB,CAAC38K,CAAC,CACrE,IAAI,CAAC48K,sBAAsB,CAACnhJ,QAAQ,CAAC,IAAI,CAACihJ,qBAAqB,EACjE,CACAG,SAAY,EAAA,CACV,IAAI,CAACC,kBAAkB,CAAC,CAAE,CAAA,CAAGz5L,IAAKC,CAAAA,MAAM,EACxC,CAAA,IAAI,CAACw5L,kBAAkB,CAAC,EAAE,CAAGz5L,IAAAA,CAAKC,MAAM,EACxC,CAAA,IAAI,CAACw5L,kBAAkB,CAAC,CAAE,CAAA,CAAGz5L,IAAKC,CAAAA,MAAM,GAC1C,CACA4zC,MAAOnJ,CAAAA,MAAM,CAAE0oJ,WAAW,CAAEC,wBAAwB,CAAE9lC,KAAK,CAAEuoC,QAAQ,CAAE,CACrE,MAAMjlB,OAAU,CAAA,IAAI,CAAC0iB,QAAQ,CAC7B7oJ,MAAAA,CAAOsV,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,CAAA,CACvClM,MAAOwV,CAAAA,aAAa,CAAC7I,UAAAA,CAAWO,OAAO,CAAA,CACvClN,MAAOyV,CAAAA,WAAW,CAAC7oB,aAAAA,CAAAA,CACnB,IAAI,CAACkiK,SAAS,EACd,CAAA,IAAI,CAACE,0BAA0B,CAACthJ,QAAQ,CAACy4H,OAAAA,CAAQvtC,QAAQ,CAACrwC,YAAY,CAAC,oBAAsBx4E,CAAAA,CAAAA,IAAI,CACjG,CAAA,IAAI,CAACk/K,uBAAuB,CAACvhJ,QAAQ,CAAC,CAAMy4H,CAAAA,OAAAA,CAAQx2J,SAAS,CAAA,CAC7D,IAAI,CAACu/K,uBAAuB,CAACxhJ,QAAQ,CAACy4H,OAAAA,CAAQx2J,SAAS,CAAA,CACvD,IAAI,CAACw/K,oBAAoB,CAACzhJ,QAAQ,CAACy4H,OAAAA,CAAQ6kB,YAAY,CAAA,CACvD,IAAI,CAACoE,uBAAuB,CAAC1hJ,QAAQ,CAACy4H,OAAQgjB,CAAAA,eAAe,EAC7D,IAAI,CAACkG,oBAAoB,CAAC3hJ,QAAQ,CAACy4H,OAAQmpB,CAAAA,YAAY,EACvD,IAAI,CAACC,oBAAoB,CAAC7hJ,QAAQ,CAACy4H,OAAQqpB,CAAAA,YAAY,EACvD,IAAI,CAACC,oBAAoB,CAAC/hJ,QAAQ,CAACy4H,OAAQupB,CAAAA,YAAY,CACvD,CAAA,IAAI,CAACC,oBAAoB,CAACjiJ,QAAQ,CAACy4H,OAAAA,CAAQypB,YAAY,CACvD,CAAA,MAAMzpD,IAAOggC,CAAAA,OAAAA,CAAQxrC,YAAY,CAACwL,IAAI,CACtC,MAAM0pD,YAAe1pD,CAAAA,IAAAA,GAAS,IAAOn0H,CAAAA,IAAAA,CAAKgC,GAAG,CAAGmyH,IAAKqW,CAAAA,UAAU,CAC/D,GAAI2pB,OAAAA,CAAQ8jB,KAAK,CAAE,CACjB,IAAI,CAAC6F,qBAAqB,CAAC,CAAA,CAAE,CAAG3pB,OAAAA,CAAQ4pB,cAAc,CAAC3lL,CACvD,CAAA,IAAI,CAAC0lL,qBAAqB,CAAC,CAAE,CAAA,CAAG3pB,OAAQ4pB,CAAAA,cAAc,CAACj+K,CAAC,CACxD,IAAI,CAACg+K,qBAAqB,CAAC,EAAE,CAAG3pB,OAAAA,CAAQ4pB,cAAc,CAAC99K,CAAC,CACxD,IAAI,CAAC+9K,oBAAoB,CAACtiJ,QAAQ,CAAC,IAAI,CAACoiJ,qBAAqB,CAC7D,CAAA,IAAI,CAACG,qBAAqB,CAAC,CAAE,CAAA,CAAG9pB,OAAQ+pB,CAAAA,cAAc,CAAC9lL,CACvD,CAAA,IAAI,CAAC6lL,qBAAqB,CAAC,CAAA,CAAE,CAAG9pB,OAAQ+pB,CAAAA,cAAc,CAACp+K,CAAC,CACxD,IAAI,CAACm+K,qBAAqB,CAAC,CAAE,CAAA,CAAG9pB,OAAQ+pB,CAAAA,cAAc,CAACj+K,CAAC,CACxD,IAAI,CAACk+K,oBAAoB,CAACziJ,QAAQ,CAAC,IAAI,CAACuiJ,qBAAqB,CAAA,CAC7D,IAAI,CAAC1B,eAAe,EAAA,CACpB,IAAI6B,MAAAA,CAASjqB,QAAQiqB,MAAM,CAAG96L,IAAKoU,CAAAA,GAAG,CAACpU,IAAAA,CAAKoU,GAAG,CAACmmL,YAAazlL,CAAAA,CAAC,CAAEylL,YAAAA,CAAa/9K,CAAC,CAAA,CAAG+9K,YAAa59K,CAAAA,CAAC,EAC/Fm+K,MAAS96L,CAAAA,IAAAA,CAAKoU,GAAG,CAAC0mL,MAAQ,CAAA,CAAA,CAAA,CAC1B,IAAI,CAACC,cAAc,CAAC3iJ,QAAQ,CAAC0iJ,MAAAA,EAC/B,CACA,MAAMxH,UAAaziD,CAAAA,IAAAA,GAAS,MAAQggC,OAAQsjB,CAAAA,UAAU,CAAGz3K,IAAAA,CAAK8B,IAAI,CAAGqyH,IAAK9lB,CAAAA,WAAW,EACrF,CAAA,MAAMiwE,aAAgBnqD,CAAAA,IAAAA,GAAS,IAAO7tH,CAAAA,IAAAA,CAAKX,QAAQ,CAAGwuH,KAAKzI,iBAAiB,EAAA,CAC5E,GAAIyoC,OAAAA,CAAQijB,YAAY,GAAK96D,gBAAkB,CAAA,CAC7C6/D,YAAan5K,CAAAA,WAAW,CAAC0zK,WAAAA,CAAAA,CACzB,IAAI,CAAC6H,mBAAmB,CAAC7iJ,QAAQ,CAACygJ,YAAAA,CAAap+K,IAAI,CAAA,CACnD,IAAI,CAACygL,0BAA0B,CAAC9iJ,QAAQ,CAACi7I,wBAC3C,EAAA,CAAA,KAAO,CACL,IAAI,CAAC8H,yBAAyB,CAAC/iJ,QAAQ,CAACy4H,OAAQwjB,CAAAA,aAAa,CAC7D,CAAA,IAAI,CAAC+G,mCAAmC,CAAChjJ,QAAQ,CAACy4H,OAAQwjB,CAAAA,aAAa,GAAK,CAAA,CAAI,CAAIxjB,CAAAA,OAAAA,CAAQyjB,kBAAkB,CAAGzjB,OAAAA,CAAQwjB,aAAa,EACxI,CACA,IAAI,CAACgH,uBAAuB,CAACjjJ,QAAQ,CAACy4H,OAAAA,CAAQonB,eAAe,CAAA,CAC7Da,cAAep5K,CAAAA,WAAW,CAACs7K,aAC3BjC,CAAAA,CAAAA,iBAAAA,CAAkBl4K,UAAU,CAACm6K,aAC7B,CAAA,CAAA,IAAI,CAACM,iBAAiB,CAAC,CAAA,CAAE,CAAGhI,UAAAA,CAAWx+K,CACvC,CAAA,IAAI,CAACwmL,iBAAiB,CAAC,CAAE,CAAA,CAAGhI,UAAW92K,CAAAA,CAAC,CACxC,IAAI,CAAC8+K,iBAAiB,CAAC,CAAE,CAAA,CAAGhI,UAAW32K,CAAAA,CAAC,CACxC,IAAI,CAAC4+K,kBAAkB,CAACnjJ,QAAQ,CAAC,IAAI,CAACkjJ,iBAAiB,CACvD,CAAA,IAAI,CAACE,mBAAmB,CAACpjJ,QAAQ,CAAC,IAAI,CAACqhJ,kBAAkB,CAAA,CACzD,IAAI,CAACgC,aAAa,CAACrjJ,QAAQ,CAACm1G,KAC5B,CAAA,CAAA,IAAI,CAACmuC,YAAY,CAACtjJ,QAAQ,CAACy4H,OAAAA,CAAQ2jB,IAAI,CACvC,CAAA,IAAI,CAACmH,eAAe,CAACvjJ,QAAQ,CAACy4H,OAAAA,CAAQ4jB,KAAK,CAAG5jB,OAAQ2jB,CAAAA,IAAI,CAC1D,CAAA,IAAI,CAACoH,kBAAkB,CAACxjJ,QAAQ,CAACy4H,OAAQqkB,CAAAA,UAAU,CAAGphL,IAAAA,CAAKC,UAAU,CAAA,CACrE,IAAI,CAAC8nL,mBAAmB,CAACzjJ,QAAQ,CAACy4H,OAAQskB,CAAAA,WAAW,CAAGrhL,IAAKC,CAAAA,UAAU,CACvE,CAAA,IAAI,CAAC+nL,YAAY,CAAC1jJ,QAAQ,CAACy4H,OAAQ/b,CAAAA,IAAI,CACvC,CAAA,IAAI,CAACinC,gBAAgB,CAAC3jJ,QAAQ,CAACy4H,OAAQ4kB,CAAAA,QAAQ,CAC/C,CAAA,IAAI,CAACuG,mBAAmB,CAAC,CAAE,CAAA,CAAGzB,YAAazlL,CAAAA,CAAC,CAC5C,IAAI,CAACknL,mBAAmB,CAAC,CAAA,CAAE,CAAGzB,YAAAA,CAAa/9K,CAC3C,CAAA,IAAI,CAACw/K,mBAAmB,CAAC,CAAA,CAAE,CAAGzB,YAAAA,CAAa59K,CAAC,CAC5C,IAAI,CAACs/K,oBAAoB,CAAC7jJ,QAAQ,CAAC,IAAI,CAAC4jJ,mBAAmB,CAC3D,CAAA,IAAI,CAACE,qBAAqB,CAAC9jJ,QAAQ,CAAC0gJ,cAAAA,CAAer+K,IAAI,CACvD,CAAA,IAAI,CAAC0hL,wBAAwB,CAAC/jJ,QAAQ,CAAC2gJ,iBAAAA,CAAkBt+K,IAAI,CAC7D,CAAA,IAAI,CAAC2hL,4BAA4B,CAAChkJ,QAAQ,CAACy4H,OAAAA,CAAQwrB,iBAAiB,CACpE,CAAA,IAAI,CAACC,uBAAuB,CAAClkJ,QAAQ,CAACy4H,OAAAA,CAAQ0rB,YAAY,CAAA,CAC1D,IAAI,CAACC,uBAAuB,CAACpkJ,QAAQ,CAACy4H,QAAQ4rB,YAAY,CAAC,CAAE,CAAA,CAAA,CAC7D,IAAIC,KAAAA,CAAQ7rB,OAAQ8rB,CAAAA,OAAO,CAAG9rB,OAAAA,CAAQ+rB,cAAc,CAAG/rB,OAAQgsB,CAAAA,aAAa,CAC5EH,KAAAA,CAAQ7rB,QAAQisB,SAAS,CAAGjsB,OAAQksB,CAAAA,gBAAgB,CAAGL,KAAAA,CACvD,MAAMM,MAAAA,CAASnsB,OAAQ8rB,CAAAA,OAAO,CAAG9rB,OAAAA,CAAQgsB,aAAa,CAAGhsB,OAAQ+rB,CAAAA,cAAc,CAC/E,IAAI,CAACK,qBAAqB,CAAC7kJ,QAAQ,CAACskJ,KACpCz3D,CAAAA,CAAAA,kBAAAA,CAAmBv6F,OAAQmmI,OAAQ8rB,CAAAA,OAAO,CAAG9rB,OAAAA,CAAQqsB,eAAe,CAAGrsB,OAAQssB,CAAAA,gBAAgB,CAAE,CAACrH,QAAAA,CAAWjlB,OAAQ7hD,CAAAA,IAAI,CAAG6hD,OAAAA,CAAQusB,2BAA2B,CAAGvsB,OAAQwsB,CAAAA,6BAA6B,CAAGxsB,OAAAA,CAAQysB,0BAA0B,CAAA,CAC5OzsB,OAAQvtC,CAAAA,QAAQ,CAACn5B,YAAY,CAAC,gBAAkBuyF,CAAAA,KAAAA,CAAAA,CAChD7rB,OAAQvtC,CAAAA,QAAQ,CAACn5B,YAAY,CAAC,eAAiB6yF,CAAAA,MAAAA,CAC/CnsB,CAAAA,OAAAA,CAAQisB,SAAS,CAAG,KACpBjsB,CAAAA,QAAQ8rB,OAAO,CAAG,CAAC9rB,OAAAA,CAAQ8rB,OAAO,CAClC9rB,OAAQsoB,CAAAA,mBAAmB,CAAC35L,IAAI,CAACqxK,OAAAA,CAAQikB,eAAe,CAAA,CACxDjkB,OAAQyoB,CAAAA,qBAAqB,CAAC95L,IAAI,CAACqxK,OAAQgkB,CAAAA,WAAW,CAACjpK,MAAM,CAC7D,CAAA,GAAIilJ,QAAQ8jB,KAAK,CAAE,CACjB,IAAI,CAACsE,eAAe,GACtB,CACF,CAlJAzwL,WAAYqoK,CAAAA,OAAO,CAAE0sB,EAAE,CAAC,CACtB,IAAI,CAAChK,QAAQ,CAAG1iB,OAChB,CAAA,IAAI,CAAC4oB,kBAAkB,CAAG,IAAIn/K,YAAa,CAAA,CAAA,CAC3C,CAAA,IAAI,CAACghL,iBAAiB,CAAG,IAAIhhL,YAAa,CAAA,CAAA,CAC1C,CAAA,IAAI,CAAC0hL,mBAAmB,CAAG,IAAI1hL,aAAa,CAC1C,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACD,CAAA,IAAI,CAACkgL,qBAAqB,CAAG,IAAIlgL,YAAAA,CAAa,CAC9C,CAAA,CAAA,IAAI,CAACqgL,qBAAqB,CAAG,IAAIrgL,YAAa,CAAA,CAAA,CAC9C,CAAA,IAAI,CAAC4+K,mBAAmB,CAAG,IAAI5+K,YAAAA,CAAa,CAC5C,CAAA,CAAA,IAAI,CAAC++K,qBAAqB,CAAG,IAAI/+K,YAAa,CAAA,CAAA,CAC9C,CAAA,IAAI,CAAC2iL,qBAAqB,CAAGM,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,eAC9C,CAAA,CAAA,IAAI,CAAC0yJ,sBAAsB,CAAGD,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,gBAC/C,CAAA,CAAA,IAAI,CAACywJ,kBAAkB,CAAGgC,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,YAC3C,CAAA,CAAA,IAAI,CAACmxJ,oBAAoB,CAAGsB,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAAA,CAC7C,CAAA,IAAI,CAACmwJ,mBAAmB,CAAGsC,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,aAAA,CAC5C,CAAA,IAAI,CAACowJ,0BAA0B,CAAGqC,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,oBAAA,CACnD,CAAA,IAAI,CAACqwJ,yBAAyB,CAAGoC,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,mBAAA,CAClD,CAAA,IAAI,CAACswJ,mCAAmC,CAAGmC,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,6BAAA,CAC5D,CAAA,IAAI,CAACuwJ,uBAAuB,CAAGkC,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,iBAChD,CAAA,CAAA,IAAI,CAAC0wJ,mBAAmB,CAAG+B,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,aAC5C,CAAA,CAAA,IAAI,CAAC2wJ,aAAa,CAAG8B,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,OACtC,CAAA,CAAA,IAAI,CAAC4wJ,YAAY,CAAG6B,GAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,MACrC,CAAA,CAAA,IAAI,CAAC6wJ,eAAe,CAAG4B,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,SACxC,CAAA,CAAA,IAAI,CAACixJ,gBAAgB,CAAGwB,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,UACzC,CAAA,CAAA,IAAI,CAAC6uJ,uBAAuB,CAAG4D,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,iBAChD,CAAA,CAAA,IAAI,CAAC8uJ,uBAAuB,CAAG2D,GAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,iBAChD,CAAA,CAAA,IAAI,CAACivJ,oBAAoB,CAAGwD,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAAA,CAC7C,CAAA,IAAI,CAACmvJ,oBAAoB,CAAGsD,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAC7C,CAAA,CAAA,IAAI,CAACqvJ,oBAAoB,CAAGoD,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAC7C,CAAA,CAAA,IAAI,CAACuvJ,oBAAoB,CAAGkD,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAAA,CAC7C,CAAA,IAAI,CAACoxJ,qBAAqB,CAAGqB,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,eAAA,CAC9C,CAAA,IAAI,CAACqxJ,wBAAwB,CAAGoB,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,kBAAA,CACjD,CAAA,IAAI,CAAC+uJ,oBAAoB,CAAG0D,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,cAC7C,CAAA,CAAA,IAAI,CAACgvJ,uBAAuB,CAAGyD,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,iBAChD,CAAA,CAAA,IAAI,CAACsxJ,4BAA4B,CAAGmB,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,uBACrD,CAAA,IAAI,CAACwxJ,uBAAuB,CAAGiB,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,iBAChD,CAAA,CAAA,IAAI,CAAC0xJ,uBAAuB,CAAGe,GAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,iBAChD,CAAA,CAAA,IAAI,CAACgxJ,YAAY,CAAGyB,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,MAAA,CACrC,CAAA,IAAI,CAAC8wJ,kBAAkB,CAAG2B,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,YAAA,CAC3C,CAAA,IAAI,CAAC+wJ,mBAAmB,CAAG0B,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,aAAA,CAC5C,CAAA,IAAI,CAAC4vJ,oBAAoB,CAAG6C,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAAA,CAC7C,CAAA,IAAI,CAAC+vJ,oBAAoB,CAAG0C,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,cAAA,CAC7C,CAAA,IAAI,CAACsuJ,oBAAoB,CAAGmE,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,cAAA,CAC7C,CAAA,IAAI,CAACyuJ,sBAAsB,CAAGgE,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,gBAC/C,CAAA,CAAA,IAAI,CAACiwJ,cAAc,CAAGwC,EAAAA,CAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,QACvC,CAAA,CAAA,IAAI,CAAC2yJ,mBAAmB,CAAGF,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,aAC5C,CAAA,CAAA,IAAI,CAAC4yJ,kBAAkB,CAAGH,EAAGv1L,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,YAC3C,CAAA,CAAA,IAAI,CAAC4uJ,0BAA0B,CAAG6D,GAAGv1L,KAAK,CAAC8iC,OAAO,CAAC,oBACrD,EAAA,CAgGF,CAEA,MAAM6yJ,eAAkB,CAAA,CACtB,MACA,CAAA,QAAA,CACA,KACD,CACD,CAAMC,MAAAA,uBAAAA,SAAgCj9D,gBACpCP,WAAYluH,CAAAA,OAAO,CAAE,CACnB,MAAM0uH,WAAAA,CAAcD,eAAgBC,CAAAA,WAAW,CAAC1uH,OAAQs1D,CAAAA,OAAO,CAC/D,CAAA,IAAIl/D,GAAM,CAAA,CAAC,SAAS,EAAEs4H,YAAY,CAAC,CAAC,CACpC,IAAI,MAAMrhI,IAAAA,IAAQ2S,OAAQ,CAAA,CACxB,GAAIA,OAAAA,CAAQpF,cAAc,CAACvN,IAAO,CAAA,CAAA,CAChC+I,GAAO4J,EAAAA,OAAO,CAAC3S,IAAK,EACtB,CACF,CACA,OAAO+I,GACT,CACAu1L,mBAAAA,CAAoB3rL,OAAO,CAAE65C,UAAU,CAAE,CACvC,MAAM+xI,QAAAA,CAAW,IAAIj1L,GAAAA,CAAIqJ,QAAQs1D,OAAO,CAAA,CACxC,GAAIt1D,OAAAA,CAAQi4H,IAAI,CAAE2zD,QAAS90L,CAAAA,GAAG,CAAC,UAAA,CAAY,EAC3C,CAAA,CAAA,GAAIkJ,OAAQ6rL,CAAAA,MAAM,CAAED,QAAAA,CAAS90L,GAAG,CAAC,aAAA,CAAe,EAChD,CAAA,CAAA,GAAIkJ,OAAQiiL,CAAAA,UAAU,CAAE2J,QAAAA,CAAS90L,GAAG,CAAC,aAAe,CAAA,EAAA,CAAA,CACpD,GAAIkJ,OAAAA,CAAQ4gI,WAAW,CAAEgrD,SAAS90L,GAAG,CAAC,cAAgB,CAAA,EAAA,CAAA,CACtD,GAAIkJ,OAAAA,CAAQ8rL,OAAO,CAAEF,QAAS90L,CAAAA,GAAG,CAAC,SAAA,CAAW,EAC7C,CAAA,CAAA,GAAIkJ,OAAQ+rL,CAAAA,IAAI,CAAG,CAAGH,CAAAA,QAAAA,CAAS90L,GAAG,CAAC,MAAQ,CAAA,EAAA,CAAA,CAC3C,GAAIkJ,OAAAA,CAAQgsL,OAAO,CAAG,CAAA,CAAKJ,QAAS90L,CAAAA,GAAG,CAAC,SAAA,CAAW,EACnD,CAAA,CAAA,GAAIkJ,QAAQisL,UAAU,CAAEL,QAAS90L,CAAAA,GAAG,CAAC,aAAA,CAAe,EACpD,CAAA,CAAA,GAAIkJ,OAAQyiL,CAAAA,KAAK,CAAEmJ,QAAAA,CAAS90L,GAAG,CAAC,OAAS,CAAA,EAAA,CAAA,CACzC,GAAIkJ,OAAQiiL,CAAAA,UAAU,CAAE2J,QAAAA,CAAS90L,GAAG,CAAC,aAAe,CAAA,EAAA,CAAA,CACpD,GAAIkJ,OAAQksL,CAAAA,WAAW,CAAEN,QAAAA,CAAS90L,GAAG,CAAC,cAAgB,CAAA,EAAA,CAAA,CACtD,GAAIkJ,OAAQgmL,CAAAA,IAAI,CAAE4F,QAAAA,CAAS90L,GAAG,CAAC,MAAQ,CAAA,EAAA,CAAA,CACvC,GAAIkJ,OAAAA,CAAQumL,aAAa,CAAEqF,QAAS90L,CAAAA,GAAG,CAAC,iBAAA,CAAmB,IAC3D80L,QAAS90L,CAAAA,GAAG,CAAC,QAAA,CAAU20L,eAAe,CAACzrL,OAAQqU,CAAAA,MAAM,CAAC,CACtDwlC,CAAAA,UAAWsyI,CAAAA,mBAAmB,CAAG9/J,iBAAAA,CACjC,GAAIrsB,OAAAA,CAAQi4H,IAAI,EAAIj4H,OAAAA,CAAQ6rL,MAAM,CAAE,CAClChyI,UAAAA,CAAWuyI,WAAW,CAAGx/J,mBAC3B,CACA,GAAI5sB,OAAAA,CAAQ0hL,MAAM,CAAE,CAClB7nI,UAAAA,CAAWwyI,oBAAoB,CAAGh/J,cAClCwsB,CAAAA,UAAAA,CAAWyyI,oBAAoB,CAAGh/J,cAClCusB,CAAAA,UAAW0yI,CAAAA,oBAAoB,CAAGh/J,cAClCssB,CAAAA,UAAAA,CAAW2yI,oBAAoB,CAAGh/J,eACpC,CACA,OAAOo+J,QACT,CACAa,qBAAsBzsL,CAAAA,OAAO,CAAE,CAC7B,MAAM0sL,QAAAA,CAAW,IAAI/1L,GAAAA,CAAIqJ,OAAQs1D,CAAAA,OAAO,CACxC,CAAA,GAAIt1D,QAAQ+rL,IAAI,CAAG,CAAGW,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,MAAQ,CAAA,EAAA,CAAA,CAC3C,GAAIkJ,OAAQ2sL,CAAAA,WAAW,CAAED,QAAAA,CAAS51L,GAAG,CAAC,cAAgB,CAAA,EAAA,CAAA,CACtD41L,SAAS51L,GAAG,CAAC,QAAU20L,CAAAA,eAAe,CAACzrL,OAAAA,CAAQqU,MAAM,CAAC,CACtDq4K,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,OAASisH,CAAAA,UAAU,CAAC/iH,OAAAA,CAAQujC,KAAK,CAAC,CAAA,CAC/C,OAAOmpJ,QACT,CACAp8D,sBAAAA,CAAuB93F,MAAM,CAAEx4B,OAAO,CAAE,CACtC,MAAMowD,cAAAA,CAAiB53B,MAAO2E,CAAAA,QAAQ,CAAG1M,mBAAAA,CAAsBD,oBAC/D,MAAMo8J,YAAAA,CAAe78D,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQ43B,cAC9C,CAAA,CAAA,MAAMvW,UAAa,CAAA,EACnB,CAAA,MAAM+xI,QAAW,CAAA,IAAI,CAACD,mBAAmB,CAAC3rL,OAAS65C,CAAAA,UAAAA,CAAAA,CACnD,MAAM6yI,QAAAA,CAAW,IAAI,CAACD,qBAAqB,CAACzsL,SAC5C,MAAM6sL,eAAAA,CAAkB,CAAC,SAAS,EAAE7sL,OAAAA,CAAQ0hL,MAAM,CAAG,MAAQ,KAAM,CAAA;AAAE,CAAC,CACtEkK,QAAS90L,CAAAA,GAAG,CAAC+1L,eAAiB,CAAA,EAAA,CAAA,CAC9BH,SAAS51L,GAAG,CAAC+1L,eAAiB,CAAA,EAAA,CAAA,CAC9B,MAAM16L,QAAW,CAAA,IAAIwE,IAAIi2L,YACzB,CAAA,CAAA,OAAOhyH,sBAAsBC,gBAAgB,CAACriC,MAAQ,CAAA,CACpD3mC,KAAM,gBACNu+D,CAAAA,cAAAA,CAAgBA,eAChBvW,UAAYA,CAAAA,UAAAA,CACZqW,WAAY08H,YAAat8L,CAAAA,GAAG,CAAC,mBAAA,CAAA,CAC7B6/D,aAAcy8H,YAAat8L,CAAAA,GAAG,CAAC,mBAC/ByrE,CAAAA,CAAAA,eAAAA,CAAiB2wH,SACjBnwH,gBAAkBpqE,CAAAA,QAAAA,CAClBkqE,cAAgBlqE,CAAAA,QAAAA,CAChB0pE,cAAe+vH,QACjB,CAAA,CACF,CACF,CACA,MAAMkB,SAAW,IAAIpB,uBAErB,CAAMqB,MAAAA,gBAAAA,SAAyBtkC,SAK7B/oB,gBAAiB5+H,CAAAA,MAAM,CAAE,CACvB,KAAM,CAAE03B,MAAM,CAAEy6F,KAAK,CAAE5B,kBAAkB,CAAEsO,OAAO,CAAE,CAAG7+H,MAAAA,CACvD,KAAM,CAAE69J,OAAO,CAAE,CAAG,IAAI,CACxB,MAAM3+J,OAAAA,CAAU,CACds1D,OAASi7D,CAAAA,WAAAA,CAAYY,cAAc,CAAC,IAAI,CAAErwH,MAAAA,CAAAA,CAC1CywH,KAAMxG,cACN22D,CAAAA,MAAAA,CAAQ,IAAI,CAAC/iB,OAAO,CAAC+iB,MAAM,CAC3BrtK,MAAQsqJ,CAAAA,OAAAA,CAAQ5J,QAAQ,CAAG4J,OAAAA,CAAQquB,SAAS,GAAK,IAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAChEL,WAAa,CAAA,IAAI,CAAChuB,OAAO,CAACsuB,WAAW,CACrCjB,OAAAA,CAAS,IAAI,CAACrtB,OAAO,CAACqtB,OAAO,CAC7BzF,aAAe,CAAA,IAAI,CAAC5nB,OAAO,CAAC4nB,aAAa,CACzCwF,IAAAA,CAAM,IAAI,CAACptB,OAAO,CAACuuB,cAAc,CACjCj1D,IAAM,CAAA,IAAI,CAAC0mC,OAAO,CAACqlB,OAAO,CAC1B6H,OAAQlsD,OAAU/V,CAAAA,aAAAA,CAClBxlH,MAAOitH,kBAAoBsa,EAAAA,iBAAAA,EAAqB1jB,WAChDklE,OAAS97D,CAAAA,kBAAAA,EAAoBrnD,WAAeo+C,EAAAA,cAAAA,CAC5CgjB,IAAKnY,KAAS,EAAA,CAAC,IAAI,CAAC0rC,OAAO,CAACyuB,KAAK,CAAGn6D,MAAMmY,GAAG,CAACplI,IAAI,CAAG,MAAA,CACrDggL,KAAM,IAAI,CAACrnB,OAAO,CAACqnB,IAAI,EAAI,IAAI,CAACrnB,OAAO,CAACsnB,UAAU,CAClDhE,UAAAA,CAAY,IAAI,CAACtjB,OAAO,CAACsjB,UAAU,CACnCrhD,WAAa+9B,CAAAA,OAAAA,CAAQ0uB,OAAO,CAAG,KAAA,CAAQ,IAAI,CAAC1uB,OAAO,CAAC/9B,WAAW,CAC/Dr9F,KAAO,CAAA,IAAI,CAACo7H,OAAO,CAACrV,SAAS,CAC7BwiC,OAAAA,CAAS,IAAI,CAACntB,OAAO,CAAC2uB,WAAW,GACjCpB,WAAa,CAAA,IAAI,CAACvtB,OAAO,CAAC4uB,QAAQ,CAClC9K,MAAO,IAAI,CAAC9jB,OAAO,CAAC8jB,KAAK,CACzBwJ,UAAY,CAAA,IAAI,CAACttB,OAAO,CAACvlD,WAAW,GAAK4N,0BAC3C,CACA,CAAA,MAAMvgE,kBAAoB,IAAIunE,sBAAAA,CAAuBltH,MAAOqtH,CAAAA,iBAAiB,CAAErtH,MAAOstH,CAAAA,mBAAmB,CAAEttH,MAAOyqC,CAAAA,YAAY,EAC9H,MAAMgjF,OAAAA,CAAUD,kBAAkB91F,MAClC+1F,CAAAA,CAAAA,OAAAA,CAAQoD,QAAQ,CAAC,UAAA,CAAYm7D,UAC7B,OAAOv+D,OAAAA,CAAQsD,UAAU,CAAC,UAAA,CAAY7xH,OAASymD,CAAAA,iBAAAA,CAAmB,IAAI,CAAC2jG,MAAM,CAC/E,CAlCA9zJ,WAAAA,CAAYqoK,OAAO,CAAC,CAClB,KAAK,EAAA,CAAI,IAAI,CAACA,OAAO,CAAG,IACxB,CAAA,IAAI,CAACA,OAAO,CAAGA,QACjB,CAgCF,CAEA,MAAM6uB,cAAgB,CACpB,CACE,CAAC,CACD,CAAA,CAAC,EACF,CACD,CACE,EACA,CAAC,CAAA,CACF,CACD,CACE,CAAA,CACA,EACD,CACD,CACE,CAAC,CAAA,CACD,EACD,CACF,CACD,SAASjS,cAAe/iJ,CAAAA,MAAM,CAAEtkB,KAAK,CAAEC,MAAM,CAAEs5K,SAAS,CAAEp5L,MAAAA,CAASmzB,mBAAmB,CAAEkmK,QAAQ,CAAExjG,MAAM,CAAA,CACtG,IAAIyjG,SAAAA,CAAYnoK,eAChB,GAAI0kE,MAAAA,GAAW71F,MAAW4yB,GAAAA,iBAAAA,EAAqB5yB,SAAWyzB,kBAAiB,CAAA,CAAI,CAC7E6lK,SAAYloK,CAAAA,cACd,CACA,MAAM4a,OAAAA,CAAU,IAAInG,OAAQ1B,CAAAA,MAAAA,CAAQ,CAClCtkB,KAAOA,CAAAA,KAAAA,CACPC,MAAQA,CAAAA,MAAAA,CACR9f,OAAQA,MACR2lC,CAAAA,OAAAA,CAAS,MACTD,OAAS,CAAA,KAAA,CACTkC,UAAW0xJ,SACXvxJ,CAAAA,SAAAA,CAAWuxJ,SACXrxJ,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBAAAA,CACV7wB,KAAM,uBACR,CAAA,CAAA,CACA,MAAM4uC,MAASJ,CAAAA,OAAAA,CAAQ1B,IAAI,EAAA,CAC3B,GAAItqC,MAAW4yB,GAAAA,iBAAAA,EAAqB5yB,SAAWyzB,kBAAoB,CAAA,CACjE,MAAM+rC,IAAO,CAAA,IAAIv4D,UAAWmyL,CAAAA,SAAAA,CAAUj/L,MAAM,CAC5C,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIk/L,SAAUj/L,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvCslE,IAAI,CAACtlE,EAAE,CAAGk/L,SAAS,CAACl/L,CAAE,CAAA,CAAGm/L,QAAW,CAAA,IACtC,CACAD,SAAY55H,CAAAA,KACd,CACApzB,MAAO3pC,CAAAA,GAAG,CAAC22L,SACXptJ,CAAAA,CAAAA,OAAAA,CAAQV,MAAM,EAAA,CACd,OAAOU,OACT,CACA,SAASutJ,QAAShrL,CAAAA,CAAC,EACjB,OAAO9U,IAAAA,CAAKoU,GAAG,CAACpU,IAAAA,CAAKmU,GAAG,CAACW,CAAAA,CAAG,GAAI,CAClC,CAAA,CACA,MAAMirL,aAAgB,CAAA,IAAI/lL,KAAM,CAAA,CAC9B,EACA,CACA,CAAA,CAAA,CACA,EACD,CACD,CAAA,MAAMgmL,cAAgB,IAAIhmL,KAAAA,CAAM,CAC9B,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACD,EACD,MAAMimL,cAAAA,CAAiB,IAAIvlL,QAAS,CAAA,CAClC,CACA,CAAA,CAAA,CACA,EACA,CACD,CAAA,CAAE,CACD,CACA,CAAA,CAAA,CACA,EACA,CACD,CAAA,CAAE,CACD,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACD,EACD,MAAMwlL,cAAAA,CAAiB,IAAIxlL,QAAS,CAAA,CAClC,CACA,CAAA,CAAA,CACA,EACA,CACD,CAAA,CAAE,CACD,CACA,CAAA,CAAA,CACA,EACA,CACD,CAAA,CAAE,CACD,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACD,EACD,IAAIylL,iBAAAA,CAAoB,EACxB,MAAMC,mBAAAA,CAAsB,CAC5B,CAAA,MAAM/M,yBAA2B,IAAI/4K,YAAAA,CAAa,GAClD,MAAM84K,WAAAA,CAAc,IAAIpwK,IACxB,CAAA,MAAMq9K,QAAU,IAAI3jL,IAAAA,CACpB,MAAMqR,IAAO,CAAA,IAAIrR,KACjB,MAAMoR,IAAAA,CAAO,IAAIpR,IACjB,CAAA,IAAI4jL,iBACJ,CAAA,IAAIC,mBACJ,SAASC,WAAAA,CAAYC,KAAK,CAAEC,UAAU,EACpC,GAAIH,kBAAkB,CAACE,KAAAA,CAAM,GAAKl4L,SAAag4L,EAAAA,kBAAkB,CAACE,KAAM,CAAA,GAAK,KAAM,CACjFH,iBAAiB,CAACG,KAAAA,CAAM,CAAGF,kBAAkB,CAACE,OAAM,CACtD,KAAO,CACLH,iBAAiB,CAACG,KAAM,CAAA,CAAGC,WAC7B,CACF,CACA,SAASC,YAAatwL,CAAAA,CAAC,CAAEC,CAAC,CAAExQ,CAAC,CAAA,CAC3B,MAAM8gM,MAASvwL,CAAAA,CAAAA,CAAI,KAAO,EAAKC,CAAAA,CAAAA,CAAI,KAAO,CAAIxQ,CAAAA,CAAAA,CAAI,GAClD,CAAA,OAAO8gM,QAAU,CAAA,EAAK,EAAC,CACzB,CACA,SAASC,mBAAoBC,CAAAA,IAAI,CAAEC,KAAK,EACtC,MAAMnrL,GAAAA,CAAMkrL,KAAKpgM,MAAM,CAAG,EAC1B,MAAM4pI,MAAAA,CAAS,IAAI7qI,KAAMmW,CAAAA,GAAAA,CAAM,GAC/B,IAAI,IAAInV,EAAI,CAAGA,CAAAA,CAAAA,CAAImV,IAAKnV,CAAI,EAAA,CAAA,CAC1B6pI,MAAM,CAAC7pI,EAAI,CAAE,CAAA,CAAGqgM,IAAI,CAACrgM,CAAAA,CAAI,EAAE,CAC3B6pI,MAAM,CAAC7pI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGqgM,IAAI,CAACrgM,EAAI,CAAI,CAAA,CAAA,CAAE,CACnC6pI,MAAM,CAAC7pI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAGqgM,IAAI,CAACrgM,CAAAA,CAAI,EAAI,CAAE,CACnC6pI,CAAAA,MAAM,CAAC7pI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGkgM,YAAaI,CAAAA,KAAK,CAACtgM,CAAAA,CAAI,EAAE,CAAEsgM,KAAK,CAACtgM,CAAI,CAAA,CAAA,CAAI,EAAE,CAAEsgM,KAAK,CAACtgM,CAAAA,CAAI,EAAI,CAAE,CAAA,EACnF,CACA,OAAO6pI,MACT,CACA,SAAS02D,eAAAA,CAAgBC,IAAI,CAAEC,EAAE,CAC/B,CAAA,MAAM52D,OAAS,IAAI7qI,KAAAA,CAAMyhM,GAAGxgM,MAAM,CAAG,GACrC,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIygM,GAAGxgM,MAAM,CAAED,IAAI,CAChC6pI,MAAM,CAAC7pI,CAAAA,CAAI,EAAE,CAAGwgM,IAAI,CAACxgM,CAAI,CAAA,CAAA,CAAE,CAC3B6pI,MAAM,CAAC7pI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAGwgM,IAAI,CAACxgM,CAAAA,CAAI,EAAI,CAAE,CACnC6pI,CAAAA,MAAM,CAAC7pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGwgM,IAAI,CAACxgM,CAAI,CAAA,CAAA,CAAI,CAAE,CACnC6pI,CAAAA,MAAM,CAAC7pI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGygM,EAAE,CAACzgM,CAAE,EAC3B,CACA,OAAO6pI,MACT,CACA,SAAS62D,kBAAAA,CAAmBD,EAAE,CAAEE,EAAE,CAAEC,EAAE,CAAEC,EAAE,CAAEC,EAAE,CAC5C,CAAA,MAAMj3D,OAAS,IAAI7qI,KAAAA,CAAMyhM,EAAGxgM,CAAAA,MAAM,CAAG,CACrC,CAAA,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIygM,EAAGxgM,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAChC6pI,MAAM,CAAC7pI,CAAAA,CAAI,EAAE,CAAGygM,EAAE,CAACzgM,CAAE,CACrB6pI,CAAAA,MAAM,CAAC7pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG2gM,EAAE,CAAC3gM,CAAE,CACzB6pI,CAAAA,MAAM,CAAC7pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG,CACpB6pI,CAAAA,MAAM,CAAC7pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGkgM,YAAAA,CAAaU,EAAE,CAAC5gM,CAAAA,CAAE,CAAE6gM,EAAE,CAAC7gM,CAAE,CAAA,CAAE8gM,EAAE,CAAC9gM,CAAAA,CAAE,EACtD,CACA,OAAO6pI,MACT,CACA,SAASk3D,kBAAmBN,CAAAA,EAAE,CAAEE,EAAE,CAAA,CAChC,MAAM92D,MAAS,CAAA,IAAI7qI,MAAMyhM,EAAGxgM,CAAAA,MAAM,CAAG,CAAA,CAAA,CACrC,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIygM,CAAAA,EAAAA,CAAGxgM,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAChC6pI,MAAM,CAAC7pI,CAAI,CAAA,CAAA,CAAE,CAAGygM,EAAE,CAACzgM,EAAE,CACrB6pI,MAAM,CAAC7pI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG2gM,EAAE,CAAC3gM,CAAAA,CAAE,CACzB6pI,MAAM,CAAC7pI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CACpB6pI,CAAAA,MAAM,CAAC7pI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,EACtB,CACA,OAAO6pI,MACT,CACA,SAASm3D,YAAY5wB,OAAO,CAAA,CAC1B,MAAM6wB,QAAAA,CAAW1hM,KAAKoU,GAAG,CAACy8J,QAAQ2jB,IAAI,CAAE3jB,QAAQ4jB,KAAK,CAAA,CAAI5jB,OAAQ6kB,CAAAA,YAAY,CAAG7kB,OAAQ4kB,CAAAA,QAAQ,CAChG,OAAOzjL,IAAAA,CAAKF,GAAG,EAAK4vL,CAAAA,QAAAA,CAAW,GACjC,CACA,SAASC,QAASC,CAAAA,CAAC,CAAEC,CAAC,CAAA,CACpB,MAAM9hM,CAAI,CAAA,IAAIua,YAAasnL,CAAAA,CAAAA,CAAElhM,MAAM,CACnC,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAImhM,CAAElhM,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC/BV,CAAC,CAACU,EAAE,CAAGmhM,CAAC,CAACnhM,CAAE,CAAA,CAAGohM,CAAC,CAACphM,CAAAA,EAAE,CAEpB,OAAOV,CACT,CACA,SAAS+hM,sBAAsBF,CAAC,CAAEG,OAAO,CAAA,CACvC,MAAMC,KAAQD,CAAAA,OAAAA,CAAQrhM,MAAM,CAC5B,MAAM0I,OAASw4L,CAAElhM,CAAAA,MAAM,CAAGshM,KAAAA,CAC1B,IAAI,IAAIvhM,CAAAA,CAAI,EAAGA,CAAI2I,CAAAA,MAAAA,CAAQ3I,IAAI,CAC7B,IAAI,IAAIumF,CAAAA,CAAI,EAAGA,CAAIg7G,CAAAA,KAAAA,CAAOh7G,IAAI,CAC5B,MAAM32E,EAAIrQ,IAAKma,CAAAA,GAAG,CAACynL,CAAC,CAACnhM,EAAIuhM,KAAQh7G,CAAAA,CAAAA,CAAE,CACnC+6G,CAAAA,OAAO,CAAC/6G,CAAE,CAAA,CAAGhnF,IAAKoU,CAAAA,GAAG,CAAC2tL,OAAO,CAAC/6G,EAAE,CAAE32E,CAAAA,EACpC,CACF,CACF,CACA,SAAS4xL,cAAAA,CAAeL,CAAC,CAAEM,IAAI,EAC7B,MAAMF,KAAAA,CAAQE,KAAKxhM,MAAM,CACzB,MAAM0I,MAAAA,CAASw4L,EAAElhM,MAAM,CAAGshM,MAC1B,IAAI,IAAIvhM,EAAI,CAAGA,CAAAA,CAAAA,CAAI2I,OAAQ3I,CAAI,EAAA,CAAA,CAC7B,IAAI,IAAIumF,CAAAA,CAAI,EAAGA,CAAIg7G,CAAAA,KAAAA,CAAOh7G,IAAI,CAC5B46G,CAAC,CAACnhM,CAAAA,CAAIuhM,MAAQh7G,CAAE,CAAA,EAAIk7G,IAAI,CAACl7G,CAAAA,CAAE,GAAK,CAAI,CAAA,CAAA,CAAIk7G,IAAI,CAACl7G,EAAE,CAC/C46G,CAAC,CAACnhM,CAAAA,CAAIuhM,MAAQh7G,CAAE,CAAA,EAAI,EACpB46G,CAAAA,CAAC,CAACnhM,CAAAA,CAAIuhM,MAAQh7G,CAAE,CAAA,EAAI,GACtB,CACF,CACF,CACA,SAASm7G,oBAAoBC,MAAM,CAAEC,MAAM,CAAEN,OAAO,EAClD,MAAM1jL,GAAAA,CAAMsjL,QAASU,CAAAA,MAAAA,CAAQD,QAC7BN,qBAAsBzjL,CAAAA,GAAAA,CAAK0jL,SAC3BE,cAAe5jL,CAAAA,GAAAA,CAAK0jL,SACpB,OAAO1jL,GACT,CACA,MAAMikL,2BAA6B,IAAIr3J,WACvC,OAAMs3J,eAgIJ,CAAA,IAAIC,qBAAsB,CACxB,OAAOF,0BAA2B9/L,CAAAA,GAAG,CAAC,IAAI,CAAC6nC,cAAc,CAAE,IAAA,CACzD,MAAM8rH,UAAa,CAAA,EAAA,CACnB,MAAMssC,WAActsC,CAAAA,UAAAA,CAAa,GAAM,EACvC,CAAA,MAAMusC,KAAO,IAAIpoL,YAAAA,CAAa67I,WAAaA,UAAa,CAAA,CAAA,CAAA,CACxD,IAAI,IAAI35I,EAAI,CAAGA,CAAAA,CAAAA,CAAI25I,WAAY35I,CAAI,EAAA,CAAA,CACjC,IAAI,IAAI1H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIqhJ,WAAYrhJ,CAAI,EAAA,CAAA,CACjC,MAAM6tL,KAAQ7tL,CAAAA,CAAAA,CAAI,EAAI2tL,WACtB,CAAA,MAAMG,KAAQpmL,CAAAA,CAAAA,CAAI,EAAIimL,WACtB,CAAA,MAAM3iM,EAAIggM,QAAS,CAAA,CAAA,CAAIA,SAAS9/L,IAAKud,CAAAA,IAAI,CAAColL,KAAQA,CAAAA,KAAAA,CAAQC,MAAQA,KAASzsC,CAAAA,CAAAA,UAAAA,CAAAA,CAAc,IACzF,MAAM/iI,CAAAA,CAAI5W,EAAI25I,UAAarhJ,CAAAA,CAC3B4tL,CAAAA,IAAI,CAACtvK,CAAI,CAAA,CAAA,CAAE,CAAG,CACdsvK,CAAAA,IAAI,CAACtvK,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAClBsvK,CAAAA,IAAI,CAACtvK,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CAClBsvK,CAAAA,IAAI,CAACtvK,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAGtzB,EACpB,CACF,CACA,MAAMyyC,OAAUk7I,CAAAA,cAAAA,CAAe,IAAI,CAACpjJ,cAAc,CAAE8rH,UAAYA,CAAAA,UAAAA,CAAYusC,KAAM1oK,kBAAoB,CAAA,CAAA,CAAK,IAC3GuY,CAAAA,CAAAA,QAAQpE,SAAS,CAAGxW,aACpB4a,CAAAA,OAAAA,CAAQjE,SAAS,CAAG3W,aAAAA,CACpB,OAAO4a,OACT,EACF,CACAswJ,cAAAA,EAAiB,CACf,IAAI,CAACC,aAAa,GACpB,CACAC,kBAAqB,EAAA,CACnB,IAAI,CAACtI,cAAc,CAAC3lL,CAAC,CAAG,EAAM,IAAI,CAACggL,eAAe,CAAChgL,CAAC,CACpD,IAAI,CAAC2lL,cAAc,CAACj+K,CAAC,CAAG,CAAM,CAAA,IAAI,CAACs4K,eAAe,CAACt4K,CAAC,CACpD,IAAI,CAACi+K,cAAc,CAAC99K,CAAC,CAAG,CAAM,CAAA,IAAI,CAACm4K,eAAe,CAACn4K,CAAC,CACpD,IAAI,CAACi+K,cAAc,CAACp7L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAACjpK,MAAM,CAAA,CAAE7N,GAAG,CAAC,IAAI,CAAC08K,cAAc,CAAA,CAAElkL,SAAS,CAAC,CAAC,EACtF,CAAA,IAAI,CAACqkL,cAAc,CAAC9lL,CAAC,EAAI,EACzB,CAAA,IAAI,CAAC8lL,cAAc,CAACp+K,CAAC,EAAI,EACzB,CAAA,IAAI,CAACo+K,cAAc,CAACj+K,CAAC,EAAI,GAC3B,CACAqmL,oBAAAA,EAAuB,CACrB,GAAI,CAAC,IAAI,CAACnyD,IAAI,CAAE,OAChB,IAAI,CAACsoD,mBAAmB,CAAC35L,IAAI,CAAC,IAAI,CAACs1L,eAAe,CAAA,CAClD,IAAI,CAACwE,qBAAqB,CAAC95L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAACjpK,MAAM,EACvD,GAAI,CAAC,IAAI,CAACgoK,MAAM,CAAE,CAChB,IAAIqP,sBAAyB,CAAA,KAAA,CAC7B,GAAI,IAAI,CAACnP,YAAY,GAAK96D,iBAAkB,CAC1CiqE,sBAAAA,CAAyB,CAAC,IAAI,CAACC,cAAc,CAAChtL,MAAM,CAAC,IAAI,CAACitL,kBAAkB,EAC9E,CAAA,KAAO,CACLF,sBAAyB,CAAA,EAAE,IAAI,CAAC5O,aAAa,GAAK,IAAI,CAAC+O,iBAAiB,EAC1E,CACA,GAAIH,sBAAwB,CAAA,CAC1B,IAAI,CAACI,oBAAoB,GAC3B,CACF,CACA,MAAMC,MAAAA,CAAS,IAAI,CAACzyD,IAAI,CAACzI,iBAAiB,GAC1C,GAAI,IAAI,CAAC+rD,UAAU,CAAE,CACnB,IAAI,CAACoP,kBAAkB,CAAC/jM,IAAI,CAAC,IAAI,CAACgkM,WAAW,EAC/C,MAAO,CACL,IAAI,CAACD,kBAAkB,CAACj0K,sBAAsB,CAAC,IAAI,CAACk0K,WAAW,CAAEF,MACnE,EAAA,CACA,IAAI,CAACG,gBAAgB,CAAC,CAAA,CAAE,CAAC1yL,GAAG,CAAC,IAAI,CAACwyL,kBAAkB,CACpD,CAAA,IAAI,CAACE,gBAAgB,CAAC,EAAE,CAAC1yL,GAAG,CAAC,IAAI,CAACwyL,kBAAkB,CACpD,CAAA,MAAMzxL,IAAM,IAAI,CAAC4xL,YAAY,CAC7B,GAAI5xL,KAAO,IAAI,CAAC6xL,kBAAkB,CAAE,CAClC,IAAI,CAACF,gBAAgB,CAAC,CAAA,CAAE,CAACjkM,IAAI,CAAC,IAAI,CAACikM,gBAAgB,CAAC,CAAA,CAAE,EACtD,IAAI,CAACA,gBAAgB,CAAC,CAAA,CAAE,CAACjkM,IAAI,CAAC,IAAI,CAAC+jM,kBAAkB,CACrD,CAAA,IAAI,CAACI,kBAAkB,CAAG7xL,GAAAA,CAAM,IAAI,CAAC2jL,SAAQ,CAE/C,IAAI,CAACZ,WAAW,CAACr1L,IAAI,CAAC,IAAI,CAACikM,gBAAgB,CAAC,CAAE,CAAA,CAAA,CAC9C,IAAI,CAAC3O,eAAe,CAACt1L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAAC5oK,WAAW,EAAE1V,SAAS,CAAC,CAClE,CAAA,CAAA,GAAI,IAAI,CAAC49K,UAAU,CAAE,CACnB,IAAI,CAAC9uD,YAAY,CAAC91G,IAAI,CAACD,sBAAsB,CAAC,IAAI,CAACulK,WAAW,CAAEyO,MAAAA,CAAAA,CAChE,IAAI,CAACj+D,YAAY,CAAC8E,IAAI,CAAC56G,IAAI,CAACD,sBAAsB,CAAC,IAAI,CAACulK,WAAW,CAAEyO,MACvE,EAAA,CAAA,KAAO,CACL,IAAI,CAACj+D,YAAY,CAAC91G,IAAI,CAAC/vB,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAC5C,CAAA,IAAI,CAACxvD,YAAY,CAAC8E,IAAI,CAAC56G,IAAI,CAAC/vB,IAAI,CAAC,IAAI,CAACq1L,WAAW,EACnD,CACA,IAAI,CAACxvD,YAAY,CAACS,QAAQ,CAAG,CAAI,CAAA,IAAI,CAACT,YAAY,CAACS,QAAQ,CAC3D,GAAI,IAAI,CAAC6uD,KAAK,CAAE,IAAI,CAACoO,kBAAkB,GACzC,CACAa,gBAAmB,EAAA,CACjB,GAAI,CAAC,IAAI,CAAC/yD,IAAI,CAAE,OAChB,IAAI,CAAC0yD,kBAAkB,CAACj0K,sBAAsB,CAAC,IAAI,CAACk0K,WAAW,CAAE,IAAI,CAACrP,UAAU,CAAGnxK,IAAKX,CAAAA,QAAQ,CAAG,IAAI,CAACwuH,IAAI,CAACzI,iBAAiB,EAC9H,CAAA,CAAA,IAAI,CAACq7D,gBAAgB,CAAC,CAAE,CAAA,CAACjkM,IAAI,CAAC,IAAI,CAAC+jM,kBAAkB,CAAA,CACrD,IAAI,CAACE,gBAAgB,CAAC,CAAA,CAAE,CAACjkM,IAAI,CAAC,IAAI,CAAC+jM,kBAAkB,EACrD,IAAI,CAAC1O,WAAW,CAACr1L,IAAI,CAAC,IAAI,CAACikM,gBAAgB,CAAC,CAAA,CAAE,EAC9C,IAAI,CAAC3O,eAAe,CAACt1L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAAC5oK,WAAW,CAAE1V,CAAAA,SAAS,CAAC,CAAA,CAAA,CAClE,IAAI,CAAC4iL,mBAAmB,CAAC35L,IAAI,CAAC,IAAI,CAACs1L,eAAe,CAClD,CAAA,IAAI,CAACwE,qBAAqB,CAAC95L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAACjpK,MAAM,CACvD,CAAA,IAAI,CAAC83K,YAAY,CAAG,CACpB,CAAA,IAAI,CAACC,kBAAkB,CAAG,EAC5B,CACAN,oBAAuB,EAAA,CACrB,IAAI9yK,IAAOhG,CAAAA,MAAAA,CAAOgE,SAAS,CAC3B,IAAIiC,IAAOjG,CAAAA,MAAAA,CAAOgE,SAAS,CAC3B,IAAIkC,KAAOlG,MAAOgE,CAAAA,SAAS,CAC3B,IAAImC,IAAAA,CAAO,CAACnG,MAAAA,CAAOgE,SAAS,CAC5B,IAAIoC,KAAO,CAACpG,MAAAA,CAAOgE,SAAS,CAC5B,IAAIqC,IAAO,CAAA,CAACrG,OAAOgE,SAAS,CAC5B,IAAIs1K,IAAO,CAAA,CAAA,CACX,IAAIC,QAAW,CAAA,CAAA,CACf,MAAMC,UAAAA,CAAa,IAAI,CAACtO,QAAQ,CAAG,IAAI,CAACp7K,SAAS,CACjD,MAAM2pL,KAAQ,CAAA,CACZ,IAAI,CAACjM,SAAS,CACd,IAAI,CAACC,UAAU,CAChB,CACD,MAAMiM,KAAAA,CAAQ,CACZ,IAAI,CAACpM,cAAc,CACnB,IAAI,CAACC,eAAe,CACrB,CACD,MAAMoM,MAAAA,CAAS,CACb,CACA,CAAA,CAAA,CACD,CACD,MAAMC,MAAAA,CAAS,CACb,CACA,CAAA,CAAA,CACD,CACD,MAAMC,OAAS,CACb,CAAA,CACA,EACD,CACD,MAAMC,OAAS,CACb,CAAA,CACA,CACD,CAAA,CACD,MAAMC,MAAS,CAAA,CACb,EACA,CACD,CAAA,CACD,IAAIxvL,CAAG0H,CAAAA,CAAAA,CAAGG,CACV,CAAA,IAAI,IAAIlc,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC4Z,SAAS,CAAG,CAAA,CAAG5Z,IAAI,CACzC,MAAM6F,MAAQtG,IAAKmU,CAAAA,GAAG,CAAC1T,CAAG,CAAA,IAAI,CAAC4Z,SAAS,CAAG,CAC3C,CAAA,CAAA,IAAI,IAAI2sE,CAAI,CAAA,CAAA,CAAGA,EAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CACxBlyE,CAAImvL,CAAAA,KAAK,CAACj9G,CAAAA,CAAE,CAAC1gF,KAAQ,CAAA,CAAA,CAAI,EAAE,CAAGy9L,UAAAA,CAAaG,MAAM,CAACl9G,CAAAA,CAAE,CACpDxqE,CAAAA,CAAIynL,KAAK,CAACj9G,CAAAA,CAAE,CAAC1gF,KAAQ,CAAA,CAAA,CAAI,EAAE,CAAGy9L,UAAAA,CAAaI,MAAM,CAACn9G,CAAAA,CAAE,CACpDrqE,CAAIsnL,CAAAA,KAAK,CAACj9G,CAAE,CAAA,CAAC1gF,MAAQ,CAAI,CAAA,CAAA,CAAE,CAAGy9L,UAAAA,CAAaK,MAAM,CAACp9G,CAAAA,CAAE,CACpDz2D,IAAOvwB,CAAAA,IAAAA,CAAKmU,GAAG,CAACW,CAAAA,CAAGyb,IACnBC,CAAAA,CAAAA,IAAAA,CAAOxwB,KAAKmU,GAAG,CAACqI,EAAGgU,IACnBC,CAAAA,CAAAA,IAAAA,CAAOzwB,KAAKmU,GAAG,CAACwI,CAAG8T,CAAAA,IAAAA,CAAAA,CACnBC,KAAO1wB,IAAKoU,CAAAA,GAAG,CAACU,CAAG4b,CAAAA,IAAAA,CAAAA,CACnBC,KAAO3wB,IAAKoU,CAAAA,GAAG,CAACoI,CAAAA,CAAGmU,MACnBC,IAAO5wB,CAAAA,IAAAA,CAAKoU,GAAG,CAACuI,CAAAA,CAAGiU,KACnBszK,CAAAA,MAAM,CAACl9G,CAAAA,CAAE,CAAGlyE,CACZqvL,CAAAA,MAAM,CAACn9G,CAAAA,CAAE,CAAGxqE,CACZ4nL,CAAAA,MAAM,CAACp9G,EAAE,CAAGrqE,EACd,CACA,IAAI,IAAIqqE,EAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CACxBs9G,MAAM,CAACt9G,EAAE,EAAI+8G,UAAAA,CAAa/jM,KAAKud,IAAI,CAACymL,KAAK,CAACh9G,CAAAA,CAAE,CAAC1gF,KAAQ,CAAA,CAAA,CAAI,EAAE,CAAG09L,KAAK,CAACh9G,CAAE,CAAA,CAAC1gF,KAAQ,CAAA,CAAA,CAAI,EAAE,CAAG09L,KAAK,CAACh9G,CAAE,CAAA,CAAC1gF,MAAQ,CAAI,CAAA,CAAA,CAAE,CAAG09L,KAAK,CAACh9G,CAAE,CAAA,CAAC1gF,MAAQ,CAAI,CAAA,CAAA,CAAE,CAAG09L,KAAK,CAACh9G,CAAE,CAAA,CAAC1gF,MAAQ,CAAI,CAAA,CAAA,CAAE,CAAG09L,KAAK,CAACh9G,EAAE,CAAC1gF,KAAAA,CAAQ,EAAI,CAAE,CAAA,EAC/L,CACA+9L,MAAM,CAAC,EAAE,EAAI,IAAI,CAAC1M,YAAY,CAACrxL,KAAM,CAAA,CAAGy9L,UACxCM,CAAAA,MAAM,CAAC,CAAE,CAAA,EAAI,IAAI,CAACzM,aAAa,CAACtxL,KAAAA,CAAM,CAAGy9L,UACzCF,CAAAA,IAAAA,CAAO7jM,KAAKoU,GAAG,CAACyvL,KAAM7jM,IAAKoU,CAAAA,GAAG,CAACpU,IAAAA,CAAKma,GAAG,CAACkqL,MAAM,CAAC,CAAE,CAAA,CAAA,CAAGrkM,KAAKma,GAAG,CAACkqL,MAAM,CAAC,CAAA,CAAE,IACtEP,QAAW9jM,CAAAA,IAAAA,CAAKoU,GAAG,CAAC0vL,QAAAA,CAAU,IAAI,CAACvM,MAAM,CAACjxL,KAAAA,CAAM,EAClD,CACA,GAAI,IAAI,CAACwtL,YAAY,GAAK96D,gBAAkB,CAAA,CAC1ClkH,CAAI,CAAA,IAAI,CAACouL,cAAc,CAACpuL,CAAC,CAAG,EAAA,CAC5B0H,EAAI,IAAI,CAAC0mL,cAAc,CAAC1mL,CAAC,CAAG,EAAA,CAC5BG,EAAI,IAAI,CAACumL,cAAc,CAACvmL,CAAC,CAAG,GAC9B,MAAO,CACL7H,CAAAA,CAAI,IAAI,CAACu/K,aAAa,CACtB73K,CAAI,CAAA,IAAI,CAAC63K,aAAa,CACtB13K,CAAI,CAAA,IAAI,CAAC03K,cACX,CACA,MAAMr0K,CAAAA,CAAIhgB,IAAKoU,CAAAA,GAAG,CAACkwL,MAAM,CAAC,EAAE,CAAEA,MAAM,CAAC,CAAE,CAAA,CACvCv2K,CAAAA,IAAAA,CAAKjZ,CAAC,CAAGyb,IAAAA,CAAOuzK,SAAWhvL,CAAI+uL,CAAAA,IAAAA,CAAO7jL,CACtC+N,CAAAA,IAAAA,CAAKvR,CAAC,CAAGgU,IAAAA,CAAOszK,SAAWtnL,CAAIqnL,CAAAA,IAAAA,CAAO7jL,CACtC+N,CAAAA,IAAAA,CAAKpR,CAAC,CAAG8T,IAAAA,CAAOqzK,QAAWnnL,CAAAA,CAAAA,CAAIknL,KAAO7jL,CACtC8N,CAAAA,KAAKhZ,CAAC,CAAG4b,KAAOozK,QAAWhvL,CAAAA,CAAAA,CAAI+uL,IAAO7jL,CAAAA,CACtC8N,CAAAA,IAAKtR,CAAAA,CAAC,CAAGmU,IAAOmzK,CAAAA,QAAAA,CAAWtnL,EAAIqnL,IAAO7jL,CAAAA,CACtC8N,CAAAA,IAAAA,CAAKnR,CAAC,CAAGiU,IAAAA,CAAOkzK,SAAWnnL,CAAIknL,CAAAA,IAAAA,CAAO7jL,EACtC,IAAI,CAACwjL,WAAW,CAACt0K,SAAS,CAACnB,IAAAA,CAAMD,MACnC,CACAy2K,OAAAA,EAAU,CACR,MAAMhH,EAAAA,CAAK,IAAI,CAAClzJ,cAAc,CAC9B,GAAI,IAAI,CAACm6J,QAAQ,GAAK,IAAM,CAAA,IAAI,CAACA,QAAQ,CAAG,IAAI,CAAChC,mBAAmB,CACpE,IAAI,CAACiC,WAAW,CAAG,IAAI,CAAC3Q,YAAY,GAAK96D,iBAAmB,IAAI,CAACkqE,cAAc,CAAG,IAAI,CAAC7O,aACvF,CAAA,IAAI,CAACT,MAAM,CAAG,IAAI,CAACA,MAAM,EAAI,IAAI,CAACjjL,IAAI,CAAG+nH,iBAAAA,EAAqB6kE,GAAGnnG,iBAAiB,EAAI,GAAKmnG,EAAG5kH,CAAAA,qBAAqB,CAAG,EAAA,EAAM4kH,GAAGmH,iBAAiB,CAChJ,MAAMC,UAAa,CAAA,IAAI,CAACC,iBAAiB,EACzC,CAAA,IAAI,CAACjQ,KAAK,CAAG,CAAC,IAAI,CAACA,KAAK,EAAI,CAAC4I,EAAAA,CAAGx/I,sBAAsB,GAAK,CAAC,IAAI,CAAC61I,MAAM,CACvEuM,iBAAAA,CAAoB,IAAI,CAACvM,MAAM,EAAI,IAAI,CAACe,KAAK,CAAG,EAAI,CACpD,CAAA,IAAI,CAACuB,OAAO,CAAG,CAAC,CAAC,IAAI,CAAC/rD,IAAI,CAC1B,IAAI,CAAC0pD,eAAe,CAAG//K,IAAAA,CAAKiB,cAAc,CAAC,IAAI,CAAC2gL,YAAY,CAAA,CAC5D,IAAI,CAACmP,aAAa,GAClB,IAAI,CAACxB,oBAAoB,EACzB,CAAA,IAAI,CAACO,gBAAgB,EAAA,CACrB,GAAI,IAAI,CAAC/yD,IAAI,CAAE,CACb,IAAI,CAACgkD,WAAW,CAACvlK,sBAAsB,CAAC,IAAI,CAACk0K,WAAW,CAAE,IAAI,CAACrP,UAAU,CAAGnxK,IAAKX,CAAAA,QAAQ,CAAG,IAAI,CAACwuH,IAAI,CAACzI,iBAAiB,EACvH,CAAA,CAAA,IAAI,CAACq7D,gBAAgB,CAAC,EAAE,CAACjkM,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAC9C,CAAA,IAAI,CAAC4O,gBAAgB,CAAC,CAAE,CAAA,CAACjkM,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAAA,CAC9C,IAAI,CAACC,eAAe,CAACt1L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAAC5oK,WAAW,EAAE1V,SAAS,CAAC,CAClE,CAAA,CAAA,IAAI,CAAC4iL,mBAAmB,CAAC35L,IAAI,CAAC,IAAI,CAACs1L,eAAe,CAAA,CAClD,IAAI,CAACwE,qBAAqB,CAAC95L,IAAI,CAAC,IAAI,CAACq1L,WAAW,CAACjpK,MAAM,CAAA,CACvD,GAAI,IAAI,CAAC+oK,KAAK,CAAE,IAAI,CAACoO,kBAAkB,GACzC,CACA,IAAI,CAAClN,QAAQ,CAAG,IAAIp2L,KAAAA,CAAM,IAAI,CAACi2L,YAAY,EAC3C,IAAI,IAAIoP,KAAQ,CAAA,CAAA,CAAGA,MAAQ,IAAI,CAACpP,YAAY,CAAEoP,KAAAA,EAAAA,CAAQ,IAAI,CAACjP,QAAQ,CAACiP,KAAAA,CAAM,CAAG,CAC3E,CAAA,CACA,EACD,CACD,IAAI,CAAC1M,gBAAgB,CAAG,IAAI99K,aAAa,IAAI,CAACo7K,YAAY,CAC1D,CAAA,IAAI,CAACqP,WAAW,CAACvL,SAAS,EAC1B,CAAA,IAAI,CAACrG,WAAW,CAAG,IAAI74K,aAAa,IAAI,CAACu5K,eAAe,CAAGsM,kBAAoBC,mBAC/E,CAAA,CAAA,MAAM9M,WAAa,IAAI,CAACziD,IAAI,GAAK,IAAA,EAAQ,IAAI,CAACsjD,UAAU,CAAGz3K,IAAK8B,CAAAA,IAAI,CAAG,IAAI,CAACqyH,IAAI,CAAC9lB,WAAW,EAC5F,CAAA,GAAI,IAAI,CAAC+oE,YAAY,GAAK96D,gBAAkB,CAAA,CAC1C,GAAI,IAAI,CAAC6X,IAAI,GAAK,MAAQ,IAAI,CAACsjD,UAAU,CAAE,CACzCf,YAAYhsK,MAAM,CAAC1K,IAAK8B,CAAAA,IAAI,CAAE8J,IAAKjG,CAAAA,QAAQ,CAAE,IAAI,CAACoiL,WAAW,EAC/D,CAAA,KAAO,CACLrR,WAAYhsK,CAAAA,MAAM,CAAC1K,IAAK8B,CAAAA,IAAI,CAAE,IAAI,CAACqyH,IAAI,CAAC4X,WAAW,EAAI43C,CAAAA,OAAAA,CAAQ7gM,IAAI,CAAC,IAAI,CAACilM,WAAW,CAAA,CAAE1mL,GAAG,CAAC,IAAI,CAAC8yH,IAAI,CAACqW,UAAU,CAAA,EAChH,CACAmsC,wBAAwB,CAAC,EAAE,CAAG,IAAI,CAAC6P,cAAc,CAACpuL,CAAC,GAAK,EAAI,IAAI,CAACkwL,mBAAmB,CAAClwL,CAAC,CAAG,IAAI,CAACouL,cAAc,CAACpuL,CAAC,CAAG,CACjHu+K,CAAAA,wBAAwB,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC6P,cAAc,CAAC1mL,CAAC,GAAK,CAAA,CAAI,IAAI,CAACwoL,mBAAmB,CAACxoL,CAAC,CAAG,IAAI,CAAC0mL,cAAc,CAAC1mL,CAAC,CAAG,CACjH62K,CAAAA,wBAAwB,CAAC,EAAE,CAAG,IAAI,CAAC6P,cAAc,CAACvmL,CAAC,GAAK,CAAA,CAAI,IAAI,CAACqoL,mBAAmB,CAACroL,CAAC,CAAG,IAAI,CAACumL,cAAc,CAACvmL,CAAC,CAAG,EACnH,CACA,IAAI,IAAIlc,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACi1L,YAAY,CAAEj1L,CAAAA,EAAAA,CAAI,CACxC,IAAI,CAACwkM,WAAW,CAAC/R,iBAAiB,CAAC,IAAI,CAACC,WAAW,CAAEC,YAAaC,wBAA0BC,CAAAA,UAAAA,CAAY7yL,GACxG,GAAI,IAAI,CAACmzL,MAAM,CAAE,IAAI,CAACT,WAAW,CAAC1yL,CAAI2/L,CAAAA,mBAAAA,CAAsB,EAAI,IAAI,CAACvM,eAAe,CAAG,CAAA,CAAIuM,mBAAoB,CAAA,CAAG,EACpH,CACA,IAAI,CAACrD,gBAAgB,CAAG,IAAIziL,YAAa,CAAA,IAAI,CAACu5K,eAAe,CAAGsM,iBAAoBC,CAAAA,mBAAAA,CAAAA,CACpF,IAAI,IAAI3/L,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACs8L,gBAAgB,CAACr8L,MAAM,CAAED,IAAI,CACnD,IAAI,CAACs8L,gBAAgB,CAACt8L,EAAE,CAAG,IAAI,CAAC0yL,WAAW,CAAC1yL,GAAE,CAEhD,GAAI,CAAC,IAAI,CAACmzL,MAAM,CAAE,CAChB,GAAI,IAAI,CAACe,KAAK,CAAE,CACd,IAAI,CAACkI,aAAa,CAAGpP,cAAe8P,CAAAA,EAAAA,CAAI,IAAI,CAAC1J,eAAe,CAAEsM,iBAAmB,CAAA,IAAI,CAAChN,WAAW,CAAEh6J,iBAAmB,CAAA,CAAA,CAAG,MACzH,CAAA,IAAI,CAACyjK,cAAc,CAAGnP,eAAe8P,EAAI,CAAA,IAAI,CAAC1J,eAAe,CAAEsM,kBAAmB,IAAI,CAAChN,WAAW,CAAEh6J,iBAAAA,CAAmB,CAAG,CAAA,KAAA,CAC1H,CAAA,IAAI,CAAC4jK,gBAAgB,CAAGtP,cAAAA,CAAe8P,GAAI,IAAI,CAAC1J,eAAe,CAAEsM,kBAAmB,IAAI,CAACpD,gBAAgB,CAAE5jK,iBAAAA,CAAmB,EAAG,KACnI,EAAA,CAAA,KAAO,CACL,IAAI,CAAC0jK,aAAa,CAAGpP,eAAe8P,EAAI,CAAA,IAAI,CAAC1J,eAAe,CAAEsM,iBAAmB,CAAA,IAAI,CAAChN,WAAW,CACjG,CAAA,IAAI,CAACyJ,cAAc,CAAGnP,cAAAA,CAAe8P,EAAI,CAAA,IAAI,CAAC1J,eAAe,CAAEsM,kBAAmB,IAAI,CAAChN,WAAW,CAClG,CAAA,IAAI,CAAC4J,gBAAgB,CAAGtP,cAAAA,CAAe8P,GAAI,IAAI,CAAC1J,eAAe,CAAEsM,iBAAAA,CAAmB,IAAI,CAACpD,gBAAgB,EAC3G,CACA,IAAI,CAACG,eAAe,CAAG,IAAIl3I,YAAAA,CAAa,CACtCM,WAAa,CAAA,IAAI,CAACu2I,aAAa,CAC/BpxJ,MAAO,KACT,CAAA,CACA,CAAA,IAAI,CAAC0xJ,gBAAgB,CAAG,IAAIn3I,YAAa,CAAA,CACvCM,YAAa,IAAI,CAACs2I,cAAc,CAChCnxJ,KAAAA,CAAO,KACT,CAAA,CACA,CAAA,IAAI,CAACkxJ,OAAO,CAAG,MACjB,CACA,MAAMn1H,OAAAA,CAAU,IAAI3+D,GAAAA,CACpB,GAAI,IAAI,CAACsrL,UAAU,CAAE3sH,OAAAA,CAAQx+D,GAAG,CAAC,aAAA,CAAe,EAChD,CAAA,CAAA,GAAI,IAAI,CAAC2rL,KAAK,CAAEntH,OAAQx+D,CAAAA,GAAG,CAAC,OAAS,CAAA,EAAA,CAAA,CACrC,GAAI,IAAI,CAAC8qL,YAAY,GAAK96D,iBAAkBxxD,OAAQx+D,CAAAA,GAAG,CAAC,kBAAoB,CAAA,EAAA,CAAA,CAC5E,MAAMk8L,cAAAA,CAAiB,CAAC,MAAM,EAAE,IAAI,CAACpR,YAAY,CAAC,MAAM,EAAE,IAAI,CAACa,KAAK,CAAC,OAAO,EAAE,IAAI,CAACR,UAAU,CAAC,CAAC,CAC/F,MAAM2K,YAAAA,CAAe78D,aAAaz/H,GAAG,CAAC+6L,GAAIA,EAAGluJ,CAAAA,QAAQ,CAAG1M,mBAAsBD,CAAAA,mBAAAA,CAAAA,CAC9E,MAAMr+B,QAAAA,CAAW,IAAIwE,GAAIi2L,CAAAA,YAAAA,CAAAA,CACzB,MAAMqG,aAAgB,CAAA,CACpBp5I,WAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,YAAa,kBACbE,CAAAA,aAAAA,CAAe,wBACf/0D,eAAiBzG,CAAAA,OAAAA,CACjBiH,iBAAkBpqE,QACpB,CACA8gM,CAAAA,aAAAA,CAAcviE,UAAU,CAAG,CAAC,sBAAsB,EAAEsiE,cAAAA,CAAe,CAAC,CACpE19H,OAAAA,CAAQx+D,GAAG,CAAC,UAAW,EACvB,CAAA,CAAA,IAAI,CAACo0L,2BAA2B,CAAG36D,WAAY1+C,CAAAA,YAAY,CAACw5G,EAAAA,CAAI4H,eAChE39H,OAAQl+D,CAAAA,MAAM,CAAC,SACf67L,CAAAA,CAAAA,cAAcviE,UAAU,CAAG,CAAC,wBAAwB,EAAEsiE,cAAe,CAAA,CAAC,CACtE19H,OAAQx+D,CAAAA,GAAG,CAAC,YAAc,CAAA,EAAA,CAC1B,CAAA,IAAI,CAACq0L,6BAA6B,CAAG56D,YAAY1+C,YAAY,CAACw5G,GAAI4H,aAClE39H,CAAAA,CAAAA,OAAAA,CAAQl+D,MAAM,CAAC,YAAA,CACf67L,CAAAA,aAAcviE,CAAAA,UAAU,CAAG,CAAC,mBAAmB,EAAEsiE,cAAe,CAAA,CAAC,CACjE19H,OAAAA,CAAQx+D,GAAG,CAAC,SAAA,CAAW,GACvB,CAAA,IAAI,CAACs0L,0BAA0B,CAAG76D,WAAY1+C,CAAAA,YAAY,CAACw5G,EAAI4H,CAAAA,aAAAA,CAC/D,CAAA,IAAI,CAACtO,gBAAgB,CAAG,IAAI,CAACX,OAAO,CAAG,IAAI,CAAC/rD,IAAI,CAAC7pF,YAAY,CAAClH,WAAW,CAAG,CAC5E,CAAA,IAAI,CAACgsJ,kBAAkB,CAAG,IAAI,CAAClP,OAAO,CAAG,IAAI,CAAC/rD,IAAI,CAACnpF,WAAW,CAAC,CAAA,CAAE,CAAC8pD,UAAU,CAAG,EAC/E,IAAI,CAACu6F,SAAS,CAAC,IAAI,CAAC3P,YAAY,EAChC,MAAMvrD,IAAAA,CAAO,IAAIH,IAAKuzD,CAAAA,EAAAA,CACtBpzD,CAAAA,IAAAA,CAAK7pF,YAAY,CAAG,IAAI,CAACA,YACzB6pF,CAAAA,IAAKnpF,CAAAA,WAAW,CAAC,CAAE,CAAA,CAAG,IAAI,CAACA,WAAW,CACtCmpF,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAAC7oC,IAAI,CAAGkmB,mBACzB+rG,CAAAA,KAAKppF,SAAS,CAAC,EAAE,CAACwwB,IAAI,CAAG,CACzB44D,CAAAA,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAACN,KAAK,CAAG,IAAI,CAACi1I,YAAY,CAAG,IAAI,CAAC0P,kBAAkB,CACrEj7D,KAAKppF,SAAS,CAAC,CAAE,CAAA,CAAC0wB,OAAO,CAAG,IAC5B,CAAA,IAAI,CAAC6xD,QAAQ,CAAG,IAAI,CAACgiE,eAAe,GACpC,IAAI,CAACxC,aAAa,EAClB,CAAA,IAAI,CAACz9D,YAAY,CAAG,IAAI0K,aAAa5F,IAAM,CAAA,IAAI,CAAC7G,QAAQ,CAAE,IAAI,CAACuN,IAAI,CACnE,CAAA,IAAI,CAACxL,YAAY,CAACuQ,IAAI,CAAG,MACzB,IAAI,CAACvQ,YAAY,CAAC/tF,SAAS,EAC3B,CAAA,IAAI,CAAC+tF,YAAY,CAAC2O,IAAI,CAAG,IAAA,CACzB,GAAI,IAAI,CAACmgD,UAAU,CAAE,CACnB,IAAI,CAAC9uD,YAAY,CAAC91G,IAAI,CAACD,sBAAsB,CAAC,IAAI,CAACulK,WAAW,CAAE,IAAI,CAAChkD,IAAI,CAACzI,iBAAiB,EAAA,EAC7F,MAAO,CACL,IAAI,CAAC/C,YAAY,CAAC91G,IAAI,CAAC/vB,IAAI,CAAC,IAAI,CAACq1L,WAAW,EAC9C,CACA,IAAI,CAACxvD,YAAY,CAACgL,WAAW,CAAG,KAChC,CAAA,IAAI,CAAChL,YAAY,CAACsO,OAAO,CAAGgxD,UAC5B,CAAA,IAAI,CAACY,oBAAoB,GACzB,IAAI,CAACC,SAAS,EACd,CAAA,IAAI,CAACC,OAAO,CAAC,CAAG,CAAA,KAAA,CAAA,CAChB,GAAI,IAAI,CAACC,OAAO,CAAE,IAAI,CAACC,OAAO,CAAC,IAAI,CAAClQ,QAAQ,EAC9C,CACA+J,WAAAA,EAAc,CACZ,OAAO,IAAI,CAACoG,aAAa,EAAI,CAAM,GAAA,IAAI,CAACC,UAAU,CAAG,CAAK,EAAA,IAAI,CAACC,UAAU,CAAG,CAAA,CAAA,GAAO,IAAI,CAACtB,QAAQ,EAAI,IAAI,CAACA,QAAQ,GAAK,IAAI,CAAChC,mBAAmB,EAAI,IAAI,CAACtD,SAAQ,CACjK,CACA2F,aAAAA,EAAgB,CACd,MAAMxqL,UAAY,IAAI,CAACA,SAAS,CAChC,MAAMkjL,GAAK,IAAI,CAAClzJ,cAChB,CAAA,IAAI,CAACwtJ,cAAc,CAAG,IAAI,CAACkO,kBAAkB,CAAC3rL,QAAQ,CAACC,UACvD,CAAA,IAAI,CAAC09K,SAAS,CAAG,IAAI,CAACiO,aAAa,CAAC5rL,QAAQ,CAACC,SAC7C,CAAA,CAAA,IAAI,CAAC4rL,MAAM,CAAG,IAAI,CAACC,UAAU,CAAC1rL,eAAe,CAACH,SAAW,CAAA,CAAA,CAAG,EAC5D,CAAA,IAAI,CAACg9K,SAAS,CAAG,IAAI,CAAC8O,kBAAkB,CAAC/rL,QAAQ,CAACC,SAClD,CAAA,CAAA,IAAI,CAACk9K,MAAM,CAAG,IAAI,CAAC6O,UAAU,CAAChsL,QAAQ,CAACC,SAAAA,CACvC,CAAA,IAAI,CAACo9K,MAAM,CAAG,IAAI,CAAC4O,UAAU,CAACjsL,QAAQ,CAACC,UACvC,CAAA,IAAI,CAACs9K,YAAY,CAAG,IAAI,CAAC2O,gBAAgB,CAAClsL,QAAQ,CAACC,UACnD,CAAA,IAAI,CAACy9K,eAAe,CAAG,IAAI,CAACyO,mBAAmB,CAACnsL,QAAQ,CAACC,SACzD,CAAA,CAAA,IAAI,CAAC29K,UAAU,CAAG,IAAI,CAACwO,cAAc,CAACpsL,QAAQ,CAACC,SAAAA,CAC/C,CAAA,IAAI,CAACosL,OAAO,CAAG,IAAI,CAACC,WAAW,CAAClsL,eAAe,CAACH,UAAW,CAAG,CAAA,CAAA,CAC9D,CAAA,IAAI,CAACi9K,UAAU,CAAG,IAAI,CAACqP,mBAAmB,CAACvsL,QAAQ,CAACC,UACpD,CAAA,IAAI,CAACm9K,OAAO,CAAG,IAAI,CAACoP,WAAW,CAACxsL,QAAQ,CAACC,SACzC,CAAA,CAAA,IAAI,CAACq9K,OAAO,CAAG,IAAI,CAACmP,WAAW,CAACzsL,QAAQ,CAACC,SAAAA,CACzC,CAAA,IAAI,CAACu9K,aAAa,CAAG,IAAI,CAACkP,iBAAiB,CAAC1sL,QAAQ,CAACC,WACrD,IAAI,IAAI5Z,EAAI,CAAGA,CAAAA,CAAAA,CAAI4Z,SAAW5Z,CAAAA,CAAAA,EAAAA,CAAI,CAChC,IAAI,CAAC42L,SAAS,CAAC52L,CAAAA,CAAE,EAAIqT,IAAKC,CAAAA,UAAU,CACpC,IAAI,CAACujL,UAAU,CAAC72L,CAAE,CAAA,EAAIqT,KAAKC,WAC7B,CACA,IAAI,CAACsoL,iBAAiB,CAAG,IAAI/hL,YAAa,CAAA,CAAA,CAC1C,CAAA,IAAI,CAACiiL,YAAY,CAAG,IAAIjiL,aAAa,CACrC,CAAA,CAAA,IAAI,CAACysL,SAAS,CAAG,IAAIzsL,YAAAA,CAAa,CAClC,CAAA,CAAA,IAAI,CAACmiL,YAAY,CAAG,CAClB,CAAA,CACD,CACD,IAAI,CAACuK,SAAS,CAAG,CACf,CAAA,CACD,CACD,IAAI,CAACC,SAAS,CAAG,CACf,CAAA,CACD,CACD,IAAI,CAACC,eAAe,CAAG,CACrB,CACD,CACD,CAAA,IAAI,CAACC,iBAAiB,CAAGhF,oBAAoB,IAAI,CAACtK,cAAc,CAAE,IAAI,CAACC,eAAe,CAAE,IAAI,CAACuE,iBAAiB,CAC9G,CAAA,IAAI,CAAC+K,YAAY,CAAGjF,mBAAAA,CAAoB,IAAI,CAACpK,SAAS,CAAE,IAAI,CAACC,UAAU,CAAE,IAAI,CAACuE,YAAY,CAC1F,CAAA,IAAI,CAAC8K,SAAS,CAAGlF,oBAAoB,IAAI,CAAC8D,MAAM,CAAE,IAAI,CAACQ,OAAO,CAAE,IAAI,CAACM,SAAS,CAC9E,CAAA,IAAI,CAACO,YAAY,CAAGnF,mBAAoB,CAAA,IAAI,CAAC9K,SAAS,CAAE,IAAI,CAACC,UAAU,CAAE,IAAI,CAACmF,YAAY,CAC1F,CAAA,IAAI,CAAC8K,SAAS,CAAGpF,mBAAAA,CAAoB,IAAI,CAAC5K,MAAM,CAAE,IAAI,CAACC,OAAO,CAAE,IAAI,CAACwP,SAAS,CAC9E,CAAA,IAAI,CAACQ,SAAS,CAAGrF,mBAAoB,CAAA,IAAI,CAAC1K,MAAM,CAAE,IAAI,CAACC,OAAO,CAAE,IAAI,CAACuP,SAAS,CAC9E,CAAA,IAAI,CAACQ,eAAe,CAAGtF,oBAAoB,IAAI,CAACxK,YAAY,CAAE,IAAI,CAACC,aAAa,CAAE,IAAI,CAACsP,eAAe,CACtG,CAAA,GAAI,IAAI,CAACvS,KAAK,CAAE,CACd,MAAM+S,KAAO,CACX,CAAA,CACA,EACA,CACD,CAAA,CACD5F,sBAAsB,IAAI,CAAC/J,SAAS,CAAE2P,IAAAA,CAAAA,CACtC,MAAMC,KAAAA,CAAQ,CACZ,CACA,CAAA,CAAA,CACA,EACD,CACD7F,qBAAAA,CAAsB,IAAI,CAAC9J,UAAU,CAAE2P,KAAAA,CAAAA,CACvC,MAAMC,KAAQ,CAAA,CACZ,EACA,CACA,CAAA,CAAA,CACD,CACD9F,qBAAsB,CAAA,IAAI,CAACjK,cAAc,CAAE+P,KAC3C,CAAA,CAAA,MAAMC,OAAS,CACb,CAAA,CACA,EACA,CACD,CAAA,CACD/F,sBAAsB,IAAI,CAAChK,eAAe,CAAE+P,MAAAA,CAAAA,CAC5C,MAAMC,KAAQ,CAAA,CACZ,EACD,CACDhG,qBAAAA,CAAsB,IAAI,CAACnK,YAAY,CAAEmQ,KAAAA,CAAAA,CACzC,MAAMC,MAAS,CAAA,CACb,EACD,CACDjG,qBAAAA,CAAsB,IAAI,CAAClK,aAAa,CAAEmQ,MAAAA,CAAAA,CAC1C,IAAIjN,MAAS96L,CAAAA,IAAAA,CAAKoU,GAAG,CAACszL,IAAI,CAAC,CAAA,CAAE,CAAEC,KAAK,CAAC,EAAE,CACvC7M,CAAAA,MAAAA,CAAS96L,KAAKoU,GAAG,CAAC0mL,OAAQ4M,IAAI,CAAC,EAAE,CACjC5M,CAAAA,MAAAA,CAAS96L,KAAKoU,GAAG,CAAC0mL,OAAQ6M,KAAK,CAAC,CAAE,CAAA,CAAA,CAClC7M,OAAS96L,IAAKoU,CAAAA,GAAG,CAAC0mL,MAAQ4M,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CACjC5M,MAAS96L,CAAAA,IAAAA,CAAKoU,GAAG,CAAC0mL,MAAAA,CAAQ6M,KAAK,CAAC,CAAA,CAAE,EAClC,IAAIK,OAAAA,CAAUhoM,IAAKoU,CAAAA,GAAG,CAACwzL,KAAK,CAAC,EAAE,CAAEC,MAAM,CAAC,CAAE,CAAA,CAAA,CAC1CG,OAAUhoM,CAAAA,IAAAA,CAAKoU,GAAG,CAAC4zL,OAAAA,CAASJ,KAAK,CAAC,CAAA,CAAE,EACpCI,OAAUhoM,CAAAA,IAAAA,CAAKoU,GAAG,CAAC4zL,QAASH,MAAM,CAAC,EAAE,CACrCG,CAAAA,OAAAA,CAAUhoM,KAAKoU,GAAG,CAAC4zL,OAASJ,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAA,CACpCI,QAAUhoM,IAAKoU,CAAAA,GAAG,CAAC4zL,OAASH,CAAAA,MAAM,CAAC,CAAA,CAAE,EACrC,MAAMI,MAAAA,CAASjoM,KAAKoU,GAAG,CAAC0zL,KAAK,CAAC,CAAA,CAAE,CAAEC,MAAM,CAAC,EAAE,CAC3C,CAAA,IAAI,CAACjN,MAAM,CAAGA,MAASkN,CAAAA,OAAAA,CAAUC,OACnC,CACA,GAAI,CAAC,IAAI,CAACrU,MAAM,CAAE,CAChB,IAAI,CAACoG,YAAY,CAAGvM,eAAe8P,EAAIljL,CAAAA,SAAAA,CAAW,EAAGwmL,mBAAoB,CAAA,IAAI,CAAChJ,cAAc,CAAE,IAAI,CAACsP,iBAAiB,CACpH,CAAA,CAAA,IAAI,CAACjN,YAAY,CAAGzM,cAAe8P,CAAAA,EAAAA,CAAIljL,UAAW,CAAGwmL,CAAAA,mBAAAA,CAAoB,IAAI,CAAC9I,SAAS,CAAE,IAAI,CAACqP,YAAY,CAC1G,CAAA,CAAA,IAAI,CAAChN,YAAY,CAAG3M,cAAAA,CAAe8P,GAAIljL,SAAW,CAAA,CAAA,CAAG8mL,mBAAmB,IAAI,CAAC9J,SAAS,CAAE,IAAI,CAACE,MAAM,CAAE,IAAI,CAACgQ,SAAS,CAAE,IAAI,CAACD,YAAY,CAAE,IAAI,CAACE,SAAS,CACtJ,CAAA,CAAA,IAAI,CAAClN,YAAY,CAAG7M,cAAe8P,CAAAA,EAAAA,CAAIljL,UAAW,CAAGmnL,CAAAA,kBAAAA,CAAmB,IAAI,CAAC7J,YAAY,CAAE,IAAI,CAAC8P,eAAe,CAAA,EACjH,CACA,IAAI,CAACS,UAAU,CAAGza,cAAAA,CAAe8P,GAAIljL,SAAW,CAAA,CAAA,CAAG2mL,eAAgB,CAAA,IAAI,CAACiF,MAAM,CAAE,IAAI,CAACxO,MAAM,EAAGz9J,kBAAoB,CAAA,CAAA,CAAK,IACzH,EAAA,CACAurK,sBAAuB,CACrB,GAAI,IAAI,CAACf,QAAQ,CAAE,CACjB,IAAI,CAAClhE,QAAQ,CAACn5B,YAAY,CAAC,WAAY,IAAI,CAACq6F,QAAQ,CACpD,CAAA,GAAI,IAAI,CAACv9B,QAAQ,EAAI,IAAI,CAACi4B,SAAS,CAAE,CACnC,IAAI,CAAC57D,QAAQ,CAACn5B,YAAY,CAAC,WAAA,CAAa,IAAI,CAAC+0F,SAAS,EACxD,CACF,CACF,CACAoG,eAAAA,EAAkB,CAChB,MAAMhiE,QAAAA,CAAW,IAAI27D,gBAAiB,CAAA,IAAI,CAC1C37D,CAAAA,QAAAA,CAASv/H,IAAI,CAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC8sI,IAAI,CAAC9sI,IAAI,CAAC,CAAC,CACnDu/H,SAAS0Q,IAAI,CAAG18G,aAChBgsG,CAAAA,QAAAA,CAASltF,UAAU,CAAG,KACtBktF,CAAAA,QAAAA,CAASk4B,SAAS,CAAG,IAAI,CAACA,SAC1Bl4B,CAAAA,QAASu4B,CAAAA,UAAU,CAAG,IAAI,CAACA,UAAU,CACrC,OAAOv4B,QACT,CACAw/D,eAAgB,CACd,MAAMx/D,SAAW,IAAI,CAACA,QAAQ,CAC9BA,QAAAA,CAASn5B,YAAY,CAAC,SAAA,CAAW,IAAI,CAAC+zF,OAAO,CAC7C,CAAA,GAAI,IAAI,CAACsB,WAAW,GAAI,CACtBl8D,QAAAA,CAASn5B,YAAY,CAAC,oBAAA,CAAsB,IAAI,CAACg+F,eAAe,CAChE7kE,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,eAAA,CAAiB,IAAI,CAACi+F,UAAU,CACtD9kE,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,oBAAA,CAAsB,IAAI,CAACk+F,eAAe,EAClE,CACA/kE,QAAAA,CAASn5B,YAAY,CAAC,WAAA,CAAa,IAAI,CAACgY,SAAS,EACjD,GAAI,CAAC,IAAI,CAACyxE,MAAM,CAAE,CAChBtwD,SAASn5B,YAAY,CAAC,eAAgB,IAAI,CAAC6vF,YAAY,CACvD12D,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,eAAgB,IAAI,CAAC+vF,YAAY,CACvD52D,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,cAAA,CAAgB,IAAI,CAACiwF,YAAY,CACvD92D,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,cAAA,CAAgB,IAAI,CAACmwF,YAAY,EACzD,CACAh3D,SAASn5B,YAAY,CAAC,aAAc,IAAI,CAAC+9F,UAAU,CACnD5kE,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,eAAgB,IAAI,CAACurF,YAAY,CACvDpyD,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,iBAAA,CAAmB,IAAI,CAAC0pF,eAAe,CAC7DvwD,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,UAAA,CAAY,IAAI,CAACsrF,QAAQ,CAC/CnyD,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,MAAA,CAAQ,IAAI,CAACqqF,IAAI,EACvClxD,QAASn5B,CAAAA,YAAY,CAAC,SAAW,CAAA,IAAI,CAACsqF,KAAK,CAAG,IAAI,CAACD,IAAI,EACvDlxD,QAASn5B,CAAAA,YAAY,CAAC,MAAA,CAAQ,IAAI,CAAC2qD,IAAI,EACvCxxB,QAASn5B,CAAAA,YAAY,CAAC,cAAgB,CAAA,IAAI,CAAC68F,SAAS,CAAC,CAAE,CAAA,CAAA,CACvD1jE,SAASn5B,YAAY,CAAC,eAAgB,IAAI,CAAC88F,SAAS,CAAC,EAAE,CACvD3jE,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,oBAAA,CAAsB,IAAI,CAAC+8F,eAAe,CAAC,CAAA,CAAE,EACnE5jE,QAASn5B,CAAAA,YAAY,CAAC,iBAAmB,CAAA,IAAI,CAAC9vF,SAAS,CAAA,CACvDipH,QAASn5B,CAAAA,YAAY,CAAC,iBAAmB,CAAA,CAAA,CAAM,IAAI,CAAC9vF,SAAS,EAC7DipH,QAASn5B,CAAAA,YAAY,CAAC,cAAA,CAAgB,IAAI7vF,YAAa,CAAA,CACrD,EACA,CACA,CAAA,CAAA,CACD,GACD,GAAI,IAAI,CAACq6K,KAAK,CAAE,CACd,IAAI,CAACoQ,WAAW,CAAC9L,eAAe,EAChC31D,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,cAAA,CAAgB,IAAI,CAAC46F,WAAW,CAAC7L,mBAAmB,CAAA,CAC1E51D,SAASn5B,YAAY,CAAC,gBAAkB,CAAA,IAAI,CAAC46F,WAAW,CAAC1L,qBAAqB,CAC9E/1D,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,QAAA,CAAU,IAAI,CAAC2wF,MAAM,EAC7C,CACA,GAAI,IAAI,CAAC5C,IAAI,EAAI,IAAI,CAACC,UAAU,CAAE,CAChC,IAAI,CAACmQ,iBAAiB,CAAC,EAAE,CAAG,IAAI,CAACnQ,UAAU,CAACrjL,CAC5C,CAAA,IAAI,CAACwzL,iBAAiB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACnQ,UAAU,CAAC37K,CAAC,CAC7C,IAAI,CAAC8rL,iBAAiB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACnQ,UAAU,CAACx7K,CAAC,CAC7C2mH,QAASn5B,CAAAA,YAAY,CAAC,YAAA,CAAc,IAAI,CAACm+F,iBAAiB,EAC5D,CACA,IAAI,CAAC/C,oBAAoB,EAAA,CACzB,GAAI,IAAI,CAACnG,cAAc,CAAG,CAAA,CAAG,CAC3B97D,QAASn5B,CAAAA,YAAY,CAAC,WAAa,CAAA,CAAA,EAAO,IAAI,CAACi1F,cAAc,CAAG,IAAI,CAACA,cAAc,CAAG,GAAE,CAAA,EAC1F,CACA,GAAI,IAAI,CAAClB,OAAO,CAAG,CAAK56D,CAAAA,QAAAA,CAAS0Q,IAAI,CAAG18G,aAAAA,CACxC,IAAI,CAACixK,uBAAuB,GAC9B,CACAA,yBAA0B,CACxB,IAAIC,QAASC,QACb,CAAA,GAAI,IAAI,CAACn9E,WAAW,GAAK4N,0BAA4B,CAAA,CACnDsvE,QAAU,IAAIluL,YAAAA,CAAa,CACzB,CACA,CAAA,CAAA,CACA,CACD,CAAA,CAAA,CACDmuL,SAAW,IAAInuL,YAAAA,CAAa,CAC1B,CACA,CAAA,CAAA,CACA,EACD,EACH,CAAA,KAAO,CACL,IAAIuW,EACJ,GAAI,IAAI,CAACy6F,WAAW,GAAK6N,0BAA2B,CAClDtoG,CAAAA,CAAI,IAAI,CAAC63K,cAAc,CAAC7nM,SAAS,GACnC,CAAO,KAAA,CACL,MAAM8nM,UAAa,CAAA,IAAI,CAAC93D,IAAI,GAAK,KAAO7tH,IAAKX,CAAAA,QAAQ,CAAG,IAAI,CAACwuH,IAAI,CAACzI,iBAAiB,EACnFv3G,CAAAA,CAAAA,CAAI83K,WAAWzmL,eAAe,CAAC,IAAI,CAACwmL,cAAc,EAAE7nM,SAAS,GAC/D,CACA,MAAM0Q,EAAI,IAAImL,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAA,CACzB,GAAI1c,IAAKma,CAAAA,GAAG,CAAC5I,CAAAA,CAAEoM,GAAG,CAACkT,CAAAA,CAAAA,CAAAA,GAAQ,EAAG,CAC5Btf,CAAAA,CAAEvI,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,EACd,CACA,MAAMsH,CAAAA,CAAI,IAAIoM,IAAOK,EAAAA,CAAAA,KAAK,CAAC8T,CAAGtf,CAAAA,CAAAA,CAAAA,CAAG1Q,SAAS,EAAA,CAC1C0Q,EAAEwL,KAAK,CAACzM,EAAGugB,CAAGhwB,CAAAA,CAAAA,SAAS,GACvB2nM,OAAU,CAAA,IAAIluL,YAAa,CAAA,CACzB/I,EAAEuD,CAAC,CACHvD,EAAEiL,CAAC,CACHjL,EAAEoL,CAAC,CACJ,CACD8rL,CAAAA,QAAAA,CAAW,IAAInuL,YAAa,CAAA,CAC1BhK,EAAEwE,CAAC,CACHxE,EAAEkM,CAAC,CACHlM,EAAEqM,CAAC,CACJ,EACH,CACA,IAAI,CAAC2mH,QAAQ,CAACn5B,YAAY,CAAC,aAAA,CAAeq+F,OAC1C,CAAA,CAAA,IAAI,CAACllE,QAAQ,CAACn5B,YAAY,CAAC,YAAA,CAAcs+F,UAC3C,CACAG,aAAAA,EAAgB,CACd,MAAMzuJ,SAAW,EAAE,CACnB,GAAI,CAAC,IAAI,CAACy5I,MAAM,CAAE,CAChBz5I,QAAAA,CAAS54C,IAAI,CAAC,CACZ+4C,SAAUhb,cACVib,CAAAA,UAAAA,CAAY,EACZriC,IAAMgrB,CAAAA,YACR,GACA,GAAI,IAAI,CAACgzJ,OAAO,CAAE,CAChB/7I,QAAS54C,CAAAA,IAAI,CAAC,CACZ+4C,QAAAA,CAAU/a,cACVgb,CAAAA,UAAAA,CAAY,EACZriC,IAAMgrB,CAAAA,YACR,GACF,CACF,CAAA,KAAO,CACLiX,QAAS54C,CAAAA,IAAI,CAAC,CACZ+4C,SAAUhb,cACVib,CAAAA,UAAAA,CAAY,EACZriC,IAAMgrB,CAAAA,YACR,EAAG,CACDoX,QAAAA,CAAU/a,cACVgb,CAAAA,UAAAA,CAAY,EACZriC,IAAMgrB,CAAAA,YACR,EAAG,CACDoX,QAAAA,CAAU9a,eACV+a,UAAY,CAAA,CAAA,CACZriC,KAAMgrB,YACR,CAAA,CAAG,CACDoX,QAAU7a,CAAAA,cAAAA,CACV8a,WAAY,CACZriC,CAAAA,IAAAA,CAAMgrB,YACR,CAAG,CAAA,CACDoX,QAAU5a,CAAAA,cAAAA,CACV6a,WAAY,IAAI,CAAC27I,OAAO,CAAG,CAAA,CAAI,EAC/Bh+K,IAAMgrB,CAAAA,YACR,CACF,EAAA,CACA,OAAOiX,QACT,CACAkrJ,UAAU3P,YAAY,CAAE,CACtB,MAAMmT,aAAAA,CAAgBnT,YAAe,CAAA,IAAI,CAACmB,gBAAgB,CAC1D,MAAMiS,cAAiBpT,CAAAA,YAAAA,CAAe,IAAI,CAAC0P,kBAAkB,CAC7D,GAAI,IAAI,CAAC9kJ,YAAY,GAAK/3C,SAAa,EAAA,IAAI,CAAC+3C,YAAY,CAACnH,cAAc,EAAA,GAAO0vJ,cAAe,CAC3F,MAAM1uJ,SAAW,IAAI,CAACyuJ,aAAa,EACnC,CAAA,MAAMnrJ,YAAe,CAAA,IAAIvD,aAAa,IAAI,CAAC7P,cAAc,CAAE8P,QAAAA,CAC3D,CAAA,IAAI,CAACmG,YAAY,CAAG,IAAI1H,YAAa,CAAA,IAAI,CAACvO,cAAc,CAAEoT,aAAcorJ,aAAe,CAAA,CACrF3vJ,MAAOxiB,cACT,CAAA,CACA,CAAA,IAAI,CAACsqB,WAAW,CAAG,IAAI4pD,YAAY,IAAI,CAACvgE,cAAc,CAAE3R,mBAAoBowK,cAC5E,CAAA,CAAA,MAAMruL,KAAO,IAAIH,YAAAA,CAAa,IAAI,CAACgmC,YAAY,CAACzP,IAAI,IACpD,IAAIk4J,QAAAA,CAAU/tJ,OAAQguJ,cACtB,CAAA,GAAI,IAAI,CAAC9S,OAAO,CAAE,CAChB6S,SAAW,IAAIzuL,YAAAA,CAAa,IAAI,CAAC6vH,IAAI,CAAC7pF,YAAY,CAACzP,IAAI,EACvDmK,CAAAA,CAAAA,MAAAA,CAAS+tJ,SAASroM,MAAM,CAAG,IAAI,CAACypI,IAAI,CAAC7pF,YAAY,CAAClH,WAAW,CAC7D,IAAI,IAAI6vJ,IAAAA,CAAO,EAAGA,IAAO,CAAA,IAAI,CAAC9+D,IAAI,CAAC7pF,YAAY,CAAC/5C,MAAM,CAAC4zC,QAAQ,CAACz5C,MAAM,CAAEuoM,OAAO,CAC7E,GAAI,IAAI,CAAC9+D,IAAI,CAAC7pF,YAAY,CAAC/5C,MAAM,CAAC4zC,QAAQ,CAAC8uJ,IAAAA,CAAK,CAACllM,IAAI,GAAK+6B,mBAAoB,CAC5EkqK,cAAAA,CAAiB,IAAI,CAAC7+D,IAAI,CAAC7pF,YAAY,CAAC/5C,MAAM,CAAC4zC,QAAQ,CAAC8uJ,IAAAA,CAAK,CAAC96L,MAAM,CAAG,EACvE,KACF,CACF,CACF,CACA,IAAI,IAAI1N,CAAAA,CAAI,EAAGA,CAAIooM,CAAAA,aAAAA,CAAepoM,IAAI,CACpC,MAAMgqC,EAAKzqC,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC1P,CAAAA,CAAI,IAAI,CAACo2L,gBAAgB,EAC/C,GAAI,CAAC,IAAI,CAACX,OAAO,CAAE,CACjB,MAAMgT,MAASzoM,CAAAA,CAAAA,CAAI,CACnBga,CAAAA,IAAI,CAACha,CAAAA,CAAI,EAAE,CAAGi/L,aAAa,CAACwJ,MAAO,CAAA,CAAC,EAAE,CACtCzuL,IAAI,CAACha,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGi/L,aAAa,CAACwJ,OAAO,CAAC,CAAA,CAAE,CAC1CzuL,IAAI,CAACha,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CAClBga,CAAAA,IAAI,CAACha,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGgqC,GACpB,MAAO,CACL,MAAM0+J,KAAO1oM,CAAI,CAAA,IAAI,CAACo2L,gBAAgB,CACtCp8K,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAGsoM,QAAQ,CAACI,IAAOnuJ,CAAAA,MAAAA,CAAO,CACrCvgC,IAAI,CAACha,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGsoM,QAAQ,CAACI,IAAAA,CAAOnuJ,OAAS,CAAE,CAC7CvgC,CAAAA,IAAI,CAACha,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGsoM,QAAQ,CAACI,IAAOnuJ,CAAAA,MAAAA,CAAS,EAAE,CAC7CvgC,IAAI,CAACha,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGgqC,EAClBhwB,CAAAA,IAAI,CAACha,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAGsoM,QAAQ,CAACI,KAAOnuJ,MAASguJ,CAAAA,cAAAA,CAAiB,EAAE,CAC9DvuL,IAAI,CAACha,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAMsoM,CAAAA,QAAQ,CAACI,IAAOnuJ,CAAAA,MAAAA,CAASguJ,eAAiB,CAAE,EACtE,CACF,CACA,GAAI,IAAI,CAACpV,MAAM,CAAE,CACf,IAAI,CAACgD,KAAK,CAAG,IAAIt8K,YAAAA,CAAaG,KAC9B,CAAA,IAAI,CAACk+K,KAAK,CAAG,IAAIr+K,YAAa,CAAA,IAAI,CAACs8K,KAAK,CAACl2L,MAAM,EACjD,CACA,IAAI,CAAC4/C,YAAY,CAACzO,MAAM,EACxB,CAAA,GAAI,IAAI,CAACqkJ,OAAO,CAAE,CAChB,IAAI,CAAC/rD,IAAI,CAAC7pF,YAAY,CAACzO,MAAM,GAC/B,CACA,IAAI3yB,GAAM,CAAA,CAAA,CACV,MAAM8rF,OAAU,CAAA,IAAIptE,WAAY,CAAA,IAAI,CAACojB,WAAW,CAACnQ,IAAI,EACrD,CAAA,CAAA,GAAI,IAAI,CAACqlJ,OAAO,CAAE,CAChB,MAAMjxI,EAAK,CAAA,IAAI,CAACklF,IAAI,CAACnpF,WAAW,CAAC,CAAA,CAAE,CACnC+nJ,QAAAA,CAAW,IAAIxgK,sBAAsB,CAAC0c,GAAG1+C,MAAM,CAAC,CAAC0+C,EAAGpU,CAAAA,IAAI,IAC1D,CACA,IAAI,IAAIpwC,CAAI,CAAA,CAAA,CAAGA,EAAIi1L,YAAcj1L,CAAAA,CAAAA,EAAAA,CAAI,CACnC,GAAI,CAAC,IAAI,CAACy1L,OAAO,CAAE,CACjB,MAAMkT,SAAY3oM,CAAAA,CAAAA,CAAI,CACtBuqG,CAAAA,OAAO,CAAC9rF,GAAAA,EAAAA,CAAM,CAAGkqL,SACjBp+F,CAAAA,OAAO,CAAC9rF,GAAAA,EAAAA,CAAM,CAAGkqL,SAAY,CAAA,CAC7Bp+F,CAAAA,OAAO,CAAC9rF,GAAM,EAAA,CAAA,CAAGkqL,UAAY,CAC7Bp+F,CAAAA,OAAO,CAAC9rF,GAAAA,EAAAA,CAAM,CAAGkqL,SACjBp+F,CAAAA,OAAO,CAAC9rF,GAAAA,EAAAA,CAAM,CAAGkqL,SAAY,CAAA,CAC7Bp+F,CAAAA,OAAO,CAAC9rF,GAAM,EAAA,CAAA,CAAGkqL,UAAY,EAC/B,CAAA,KAAO,CACL,IAAI,IAAIpiH,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACo+G,kBAAkB,CAAEp+G,CAAAA,EAAAA,CAAI,CAC9CgkB,OAAO,CAACvqG,EAAI,IAAI,CAAC2kM,kBAAkB,CAAGp+G,EAAE,CAAG+hH,QAAQ,CAAC/hH,CAAE,CAAA,CAAGvmF,EAAI,IAAI,CAACo2L,iBAAgB,CAEtF,CACF,CACA,IAAI,CAAC71I,WAAW,CAACnP,MAAM,EACvB,CAAA,GAAI,IAAI,CAACqkJ,OAAO,CAAE,IAAI,CAAC/rD,IAAI,CAACnpF,WAAW,CAAC,CAAA,CAAE,CAACnP,MAAM,GACnD,CACF,CACAzjC,OAAQ,CACN,IAAI,CAAC0uL,SAAS,CAAG,IACjB,CAAA,IAAI,CAAChoC,IAAI,CAAG90J,IAAKC,CAAAA,MAAM,GACvB,IAAI,CAACqjI,QAAQ,CAACn5B,YAAY,CAAC,MAAA,CAAQ,IAAI,CAAC2qD,IAAI,EAC5C,GAAI,IAAI,CAAC8+B,MAAM,CAAE,CACf,IAAI,IAAInzL,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACs8L,gBAAgB,CAACr8L,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnD,IAAI,CAAC0yL,WAAW,CAAC1yL,CAAAA,CAAE,CAAG,IAAI,CAACs8L,gBAAgB,CAACt8L,GAAE,CAElD,MAAO,CACL,IAAI,CAAC8kM,oBAAoB,GAC3B,CACA,IAAI,CAAC3B,gBAAgB,EACrB,CAAA,IAAI,CAAC4B,SAAS,EAAA,CACd,MAAM6D,QAAAA,CAAW,IAAI,CAACr6E,IAAI,CAC1B,IAAI,CAACA,IAAI,CAAG,IACZ,CAAA,IAAI,CAACy2E,OAAO,CAAC,EAAG,KAChB,CAAA,CAAA,IAAI,CAACz2E,IAAI,CAAGq6E,QAAAA,CACZ,GAAI,IAAI,CAAC3D,OAAO,CAAE,CAChB,IAAI,CAACC,OAAO,CAAC,IAAI,CAAClQ,QAAQ,EAC5B,CACF,CACAkQ,OAAQ9tL,CAAAA,IAAI,CAAE,CACZ,MAAMyxL,gBAAmBzxL,CAAAA,IAAAA,CAAO,IAAI,CAAC49K,QAAQ,CAC7C,MAAM8T,UAAAA,CAAavpM,KAAKmU,GAAG,CAACnU,IAAKmQ,CAAAA,KAAK,CAACm5L,gBAAmB,CAAA,IAAI,CAACjvL,SAAS,CAAA,CAAG,IAAI,CAACA,SAAS,CACzF,CAAA,MAAMmvL,UAAY3xL,IAAO0xL,CAAAA,UAAAA,CACzB,IAAI,IAAI9oM,CAAAA,CAAI,EAAGA,CAAI8oM,CAAAA,UAAAA,CAAY9oM,IAAI,CACjC,IAAI,CAACglM,OAAO,CAAC+D,UAAW,KAC1B,EAAA,CACF,CACAhE,SAAY,EAAA,CACV,IAAI,CAACiE,OAAO,CAAGhI,WAAAA,CAAY,IAAI,EACjC,CACAiI,aAAc,CACZ,GAAI,IAAI,CAAC9V,MAAM,CAAE,IAAI,CAACtzI,YAAY,CAACzO,MAAM,GAC3C,CACA4zJ,OAAQl4C,CAAAA,KAAK,CAAEuoC,QAAQ,CAAE,CACvB,MAAMprJ,MAAAA,CAAS,IAAI,CAACL,cAAc,CAClC,IAAI,CAACq5J,YAAY,EAAIn2C,KACrB,CAAA,IAAI,CAACy1C,oBAAoB,EAAA,CACzB,GAAI,IAAI,CAACxD,WAAW,EAAA,CAAI,CACtB,MAAMmK,WAAAA,CAAc,IAAI,CAACxB,eAAe,CACxCwB,WAAW,CAAC,CAAA,CAAE,CAAG,CAAM,CAAA,IAAI,CAAC9D,UAC5B8D,CAAAA,WAAW,CAAC,CAAE,CAAA,CAAG,EAAM,IAAI,CAAC7D,UAAU,CACtC,MAAM9yL,OAAS,IAAI,CAACo1L,UAAU,CAC9Bp1L,MAAM,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC42L,cACjB52L,CAAAA,MAAM,CAAC,EAAE,CAAG,IAAI,CAAC4yL,aAAa,CAAG,IAAI,CAACiE,SAAS,CAC/C72L,MAAM,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC4yL,aAAa,CAAG,CACjC5yL,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAG,IAAI,CAAC82L,iBAAiB,CAAG,CACrC,CAAA,MAAMzB,gBAAkB,IAAI,CAACA,eAAe,CAC5CA,eAAe,CAAC,CAAA,CAAE,CAAG,IAAI,CAAC0B,SAC1B1B,CAAAA,eAAe,CAAC,EAAE,CAAG,IAAI,CAAC2B,mBAAkB,CAE9C,GAAI,IAAI,CAAC7kE,KAAK,CAAE,CACd,GAAI,IAAI,CAACuO,MAAM,GAAK,IAAI,CAACvO,KAAK,CAACy1C,aAAa,CAAE,CAC5C,IAAI,CAAClnC,MAAM,CAAG,IAAI,CAACvO,KAAK,CAACy1C,aAAa,CACtC,IAAI,CAACioB,cAAc,GACrB,CACF,CACA,GAAI,IAAI,CAAC/O,YAAY,GAAK96D,gBAAkB,CAAA,CAC1Cq6D,wBAAwB,CAAC,EAAE,CAAG,IAAI,CAAC6P,cAAc,CAACpuL,CAAC,GAAK,CAAA,CAAI,IAAI,CAACkwL,mBAAmB,CAAClwL,CAAC,CAAG,IAAI,CAACouL,cAAc,CAACpuL,CAAC,CAAG,CACjHu+K,CAAAA,wBAAwB,CAAC,EAAE,CAAG,IAAI,CAAC6P,cAAc,CAAC1mL,CAAC,GAAK,EAAI,IAAI,CAACwoL,mBAAmB,CAACxoL,CAAC,CAAG,IAAI,CAAC0mL,cAAc,CAAC1mL,CAAC,CAAG,CACjH62K,CAAAA,wBAAwB,CAAC,EAAE,CAAG,IAAI,CAAC6P,cAAc,CAACvmL,CAAC,GAAK,EAAI,IAAI,CAACqoL,mBAAmB,CAACroL,CAAC,CAAG,IAAI,CAACumL,cAAc,CAACvmL,CAAC,CAAG,CACjH,CAAA,GAAI,IAAI,CAAC0oH,YAAY,CAACwL,IAAI,GAAK,IAAM,CAAA,CACnCuiD,YAAYhsK,MAAM,CAAC1K,KAAK8B,IAAI,CAAE8J,IAAKjG,CAAAA,QAAQ,CAAE,IAAI,CAAC6gL,cAAc,EAClE,CAAA,KAAO,CACL9P,WAAYhsK,CAAAA,MAAM,CAAC1K,IAAAA,CAAK8B,IAAI,CAAE,IAAI,CAAC6mH,YAAY,CAACwL,IAAI,CAAC4X,WAAW,EAAI43C,CAAAA,OAAAA,CAAQ7gM,IAAI,CAAC,IAAI,CAAC0jM,cAAc,CAAA,CAAEnlL,GAAG,CAAC,IAAI,CAACsnH,YAAY,CAACwL,IAAI,CAACqW,UAAU,CAC7I,EAAA,CACF,CACA,IAAIosC,UAAAA,CACJ,MAAMiH,YAAAA,CAAe,IAAI,CAACl1D,YAAY,CAACwL,IAAI,GAAK,KAAOn0H,IAAKgC,CAAAA,GAAG,CAAG,IAAI,CAAC2mH,YAAY,CAACwL,IAAI,CAACqW,UAAU,CACnG,IAAI,CAAC80C,mBAAmB,CAAC,EAAE,CAAGzB,YAAAA,CAAazlL,CAAC,CAC5C,IAAI,CAACknL,mBAAmB,CAAC,CAAA,CAAE,CAAGzB,YAAa/9K,CAAAA,CAAC,CAC5C,IAAI,CAACw/K,mBAAmB,CAAC,CAAE,CAAA,CAAGzB,aAAa59K,CAAC,CAC5C,IAAI,CAAC2mH,QAAQ,CAACn5B,YAAY,CAAC,cAAgB,CAAA,IAAI,CAAC6xF,mBAAmB,CAAA,CACnE,GAAI,IAAI,CAAC7H,UAAU,EAAI,IAAI,CAAC9uD,YAAY,CAACwL,IAAI,CAAE,CAC7CyiD,UAAa,CAAA,IAAI,CAACjuD,YAAY,CAACwL,IAAI,CAAC9lB,WAAW,EAC/C,CAAA,IAAI,CAACuwE,iBAAiB,CAAC,CAAE,CAAA,CAAGhI,UAAWx+K,CAAAA,CAAC,CACxC,IAAI,CAACwmL,iBAAiB,CAAC,EAAE,CAAGhI,UAAAA,CAAW92K,CACvC,CAAA,IAAI,CAAC8+K,iBAAiB,CAAC,CAAA,CAAE,CAAGhI,UAAW32K,CAAAA,CAAC,CACxC,IAAI,CAAC2mH,QAAQ,CAACn5B,YAAY,CAAC,YAAc,CAAA,IAAI,CAACmxF,iBAAiB,EACjE,CACA,IAAI,CAACiN,uBAAuB,EAAA,CAC5B,GAAI,CAAC,IAAI,CAAC3U,MAAM,CAAE,CAChB,IAAI,CAACmR,WAAW,CAAClxJ,MAAM,CAACnJ,MAAAA,CAAQ0oJ,YAAaC,wBAA0B9lC,CAAAA,KAAAA,CAAOuoC,QAChF,EAAA,CAAA,KAAO,CACL,MAAMr7K,IAAAA,CAAO,IAAIH,YAAa,CAAA,IAAI,CAACgmC,YAAY,CAACzP,IAAI,EACpD,CAAA,CAAA,IAAI,CAACo0J,WAAW,CAACpxJ,MAAM,CAACp5B,IAAAA,CAAM,IAAI,CAACo7K,QAAQ,CAAE,IAAI,CAAC1C,WAAW,CAAEC,YAAaC,wBAA0BC,CAAAA,UAAAA,CAAY/lC,MAAOuoC,QAC3H,EAAA,CACA,GAAI,CAAC,IAAI,CAAC9mE,IAAI,CAAE,CACd,GAAIh9G,KAAKF,GAAG,EAAA,CAAK,IAAI,CAAC23L,OAAO,CAAE,CAC7B,GAAI,IAAI,CAACQ,UAAU,CAAE,IAAI,CAACA,UAAU,EACpC,CAAA,IAAI,CAAC5kE,YAAY,CAACsO,OAAO,CAAG,MAC9B,CACF,CACA,GAAI,IAAI,CAACtO,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAACkQ,SAAS,CAAG,IAAI,CAACA,UAAS,CAEhD,CACAqvD,mBAAoB,CAClB,IAAI,CAAC/H,aAAa,EAAEjzJ,OACpB,EAAA,CAAA,IAAI,CAACizJ,aAAa,CAAG,IACrB,CAAA,IAAI,CAACD,cAAc,EAAEhzJ,OAAAA,EACrB,CAAA,IAAI,CAACgzJ,cAAc,CAAG,IAAA,CACtB,GAAI,IAAI,CAACG,gBAAgB,EAAI,IAAI,CAACA,gBAAgB,CAACnzJ,OAAO,CAAE,CAC1D,IAAI,CAACmzJ,gBAAgB,CAACnzJ,OAAO,EAC7B,CAAA,IAAI,CAACmzJ,gBAAgB,CAAG,KAC1B,CACA,IAAI,CAACG,eAAe,EAAEtzJ,OAAAA,EACtB,CAAA,IAAI,CAACszJ,eAAe,CAAG,IACvB,CAAA,IAAI,CAACC,gBAAgB,EAAEvzJ,OAAAA,EACvB,CAAA,IAAI,CAACuzJ,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACnD,YAAY,EAAEpwJ,SACnB,CAAA,IAAI,CAACowJ,YAAY,CAAG,IACpB,CAAA,IAAI,CAACE,YAAY,EAAEtwJ,OACnB,EAAA,CAAA,IAAI,CAACswJ,YAAY,CAAG,IACpB,CAAA,IAAI,CAACE,YAAY,EAAExwJ,OAAAA,EACnB,CAAA,IAAI,CAACwwJ,YAAY,CAAG,IACpB,CAAA,IAAI,CAACE,YAAY,EAAE1wJ,OACnB,EAAA,CAAA,IAAI,CAAC0wJ,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC4N,UAAU,EAAEt+J,OAAAA,EACjB,CAAA,IAAI,CAACs+J,UAAU,CAAG,IAClB,CAAA,IAAI,CAAC5nJ,YAAY,CAAG/3C,SACpB,CAAA,IAAI,CAACy4C,WAAW,CAAGz4C,UACnB,MAAMo8L,UAAAA,CAAa,IAAI,CAACt/D,YAAY,EAAEsO,OAAW,EAAA,IACjD,CAAA,IAAI,CAACtO,YAAY,EAAEz7F,OAAAA,EACnB,CAAA,IAAI,CAACy7F,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC/B,QAAQ,EAAE15F,OACf,EAAA,CAAA,IAAI,CAAC05F,QAAQ,CAAG,IAChB,CAAA,OAAOqhE,UACT,CACA/6J,OAAAA,EAAU,CACR,IAAI,CAAC8pG,MAAM,CAAG,KACd,IAAI,CAACkxD,iBAAiB,GACxB,CA32BAp8L,WAAY6hC,CAAAA,cAAc,CAAEn4B,OAAO,CAAC,CAClC,IAAI,CAACoxH,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC02D,YAAY,CAAG,IACpB,CAAA,IAAI,CAACE,YAAY,CAAG,IACpB,CAAA,IAAI,CAACE,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC8N,UAAU,CAAG,IAClB,CAAA,IAAI,CAAC79J,cAAc,CAAGA,cAAAA,CACtB,MAAMkzJ,EAAKlzJ,CAAAA,cAAAA,CACX,MAAMhwB,SAAY,CAAA,EAClB,CAAA,IAAI,CAACA,SAAS,CAAGA,SACjB,CAAA,IAAI,CAAC6vL,YAAY,CAAG,EACpB5J,iBAAoB,CAAA,IAAI,CACxBC,kBAAqBruL,CAAAA,OAAAA,CACrBsuL,YAAY,cAAgB,CAAA,CAAA,CAAA,CAC5B,GAAI,IAAI,CAAC9K,YAAY,CAAGrrJ,eAAeiuC,cAAc,CAAE,CACrD,IAAI,CAACo9G,YAAY,CAAGrrJ,eAAeiuC,eACrC,CACAkoH,WAAY,CAAA,MAAA,CAAQ,GACpBA,WAAY,CAAA,OAAA,CAAS,IAAI,CAAChM,IAAI,EAC9BgM,WAAY,CAAA,UAAA,CAAY,IACxBA,WAAY,CAAA,gBAAA,CAAkB,IAAI9jL,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAC7C8jL,YAAY,qBAAuB,CAAA,IAAI9jL,KAAK,CAAG,CAAA,CAAA,CAAG,IAClD8jL,WAAY,CAAA,eAAA,CAAiB,CAC7BA,CAAAA,CAAAA,WAAAA,CAAY,qBAAsB,CAClCA,CAAAA,CAAAA,WAAAA,CAAY,eAAgBxnE,gBAC5BwnE,CAAAA,CAAAA,WAAAA,CAAY,kBAAmB,CAC/BA,CAAAA,CAAAA,WAAAA,CAAY,MAAQ,CAAA,KAAA,CAAA,CACpBA,YAAY,YAAc,CAAA,KAAA,CAAA,CAC1BA,YAAY,aAAe,CAAA,KAAA,CAAA,CAC3BA,YAAY,YAAc,CAAA,IAAA,CAAA,CAC1BA,YAAY,UAAY,CAAA,IAAI,CAACgC,mBAAmB,CAAA,CAChDhC,YAAY,WAAa,CAAA,IAAA,CAAA,CACzBA,YAAY,MAAQ,CAAA,IAAA,CAAA,CACpBA,WAAY,CAAA,SAAA,CAAW,OACvBA,WAAY,CAAA,MAAA,CAAQ9nE,mBACpB8nE,WAAY,CAAA,MAAA,CAAQ1nE,kBACpB0nE,WAAY,CAAA,OAAA,CAAS,IACrBA,CAAAA,CAAAA,WAAAA,CAAY,WAAY,KACxBA,CAAAA,CAAAA,WAAAA,CAAY,cAAe,KAC3BA,CAAAA,CAAAA,WAAAA,CAAY,YAAa,CACzBA,CAAAA,CAAAA,WAAAA,CAAY,SAAW,CAAA,CAAA,CAAA,CACvBA,YAAY,eAAiB,CAAA,KAAA,CAAA,CAC7BA,YAAY,gBAAkB,CAAA,CAAA,CAAA,CAC9BA,YAAY,MAAQ,CAAA,IAAA,CAAA,CACpBA,WAAY,CAAA,gBAAA,CAAkB,IAAI9jL,IAAK,CAAA,CAAA,CAAG,EAAG,CAC7C8jL,CAAAA,CAAAA,CAAAA,WAAAA,CAAY,cAAetnE,0BAC3BsnE,CAAAA,CAAAA,WAAAA,CAAY,YAAc,CAAA,KAAA,CAAA,CAC1BA,YAAY,OAAS,CAAA,KAAA,CAAA,CACrBA,YAAY,WAAahsE,CAAAA,YAAAA,CAAAA,CACzBgsE,YAAY,MAAQ,CAAA,IAAA,CAAA,CACpBA,WAAY,CAAA,YAAA,CAAc,GAC1BA,WAAY,CAAA,aAAA,CAAe,IAAI,CAACtL,UAAU,EAC1CsL,WAAY,CAAA,YAAA,CAAc,CAC1BA,CAAAA,CAAAA,WAAAA,CAAY,aAAc,CAC1BA,CAAAA,CAAAA,WAAAA,CAAY,iBAAkB,CAC9BA,CAAAA,CAAAA,WAAAA,CAAY,gBAAiB,CAC7BA,CAAAA,CAAAA,WAAAA,CAAY,oBAAqB,CACjCA,CAAAA,CAAAA,WAAAA,CAAY,YAAa,CACzBA,CAAAA,CAAAA,WAAAA,CAAY,qBAAsB,KAClCA,CAAAA,CAAAA,WAAAA,CAAY,YAAa,CACzBA,CAAAA,CAAAA,WAAAA,CAAY,UAAY,CAAA,IAAA,CACxB,CAAA,IAAI,CAACuE,WAAW,CAAG,IAAI/L,mBAAmB,IAAI,CAAEuE,EAChD,CAAA,CAAA,IAAI,CAAC0H,WAAW,CAAG,IAAIhS,kBAAAA,CAAmB,IAAI,CAC9C,CAAA,IAAI,CAACqI,iBAAiB,CAAG,IAAIhhL,aAAa,CAC1C,CAAA,CAAA,IAAI,CAACguL,iBAAiB,CAAG,IAAIhuL,aAAa,CAC1C,CAAA,CAAA,IAAI,CAAC0hL,mBAAmB,CAAG,IAAI1hL,YAAAA,CAAa,CAC1C,CAAA,CACA,EACA,CACD,CAAA,CAAA,CACDkmL,YAAY,YAAcN,CAAAA,cAAAA,CAAAA,CAC1BM,YAAY,aAAe,CAAA,IAAI,CAAC0F,UAAU,EAC1C1F,WAAY,CAAA,YAAA,CAAcR,eAC1BQ,WAAY,CAAA,aAAA,CAAe,IAAI,CAAC4F,UAAU,CAC1C5F,CAAAA,WAAAA,CAAY,aAAcR,aAC1BQ,CAAAA,CAAAA,WAAAA,CAAY,cAAe,IAAI,CAAC6F,UAAU,CAC1C7F,CAAAA,WAAAA,CAAY,qBAAsBP,cAClCO,CAAAA,CAAAA,WAAAA,CAAY,sBAAuB,IAAI,CAACuF,kBAAkB,CAC1DvF,CAAAA,WAAAA,CAAY,gBAAiBP,cAC7BO,CAAAA,CAAAA,WAAAA,CAAY,gBAAkB,CAAA,IAAI,CAACwF,aAAa,CAAA,CAChDxF,YAAY,oBAAsBT,CAAAA,aAAAA,CAAAA,CAClCS,YAAY,qBAAuB,CAAA,IAAI,CAAC2F,kBAAkB,EAC1D3F,WAAY,CAAA,kBAAA,CAAoBT,eAChCS,WAAY,CAAA,mBAAA,CAAqB,IAAI,CAAC8F,gBAAgB,CACtD,CAAA,IAAI,CAAC6B,eAAe,CAAG,IAAI7tL,YAAAA,CAAa,EACxC,CAAA,IAAI,CAAC8tL,UAAU,CAAG,IAAI9tL,YAAAA,CAAa,EACnC,CAAA,IAAI,CAAC+tL,eAAe,CAAG,IAAI/tL,YAAAA,CAAa,EACxC,CAAA,IAAI,CAACu7K,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC8C,KAAK,CAAG,IACb,CAAA,IAAI,CAACP,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAAC1kD,MAAM,CAAG,IACd,CAAA,IAAI,CAACipD,OAAO,CAAG,KACf,CAAA,IAAI,CAACzG,OAAO,CAAG,IACf,CAAA,IAAI,CAACtC,MAAM,CAAG,CAACvpJ,cAAe0uC,CAAAA,oBAAoB,CAClD,IAAI,CAAC47G,KAAK,CAAG,IACb,CAAA,IAAI,CAAC6O,WAAW,CAAG,IAAI93K,WACvB,CAAA,IAAI,CAAC63K,kBAAkB,CAAG,IAAI73K,WAC9B,CAAA,IAAI,CAAC+3K,gBAAgB,CAAG,CACtB,IAAI/3K,YACJ,IAAIA,WAAAA,CACL,CACD,IAAI,CAACmpK,WAAW,CAAG,IAAInpK,WACvB,CAAA,IAAI,CAACopK,eAAe,CAAG,IAAIp4K,IAC3B,CAAA,IAAI,CAACy8K,mBAAmB,CAAG,IAAIz8K,IAC/B,CAAA,IAAI,CAAC48K,qBAAqB,CAAG,IAAI58K,IACjC,CAAA,IAAI,CAACymL,kBAAkB,CAAG,IAAI,CAACD,cAAc,CAC7C,IAAI,CAACE,iBAAiB,CAAG,IAAI,CAAC/O,aAAa,CAC3C,IAAI,CAACoG,cAAc,CAAG,IAAI/9K,IAC1B,CAAA,IAAI,CAACk+K,cAAc,CAAG,IAAIl+K,IAC1B,CAAA,IAAI,CAACinL,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACvG,2BAA2B,CAAG,IACnC,CAAA,IAAI,CAACC,6BAA6B,CAAG,IACrC,CAAA,IAAI,CAACC,0BAA0B,CAAG,IAClC,CAAA,IAAI,CAACzG,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACuO,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAAC9hE,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC+B,YAAY,CAAG,IACpB,CAAA,IAAI,CAACkQ,SAAS,CAAG,CACjB,CAAA,IAAI,CAACuf,IAAI,CAAG90J,KAAKC,MAAM,EACvB,CAAA,IAAI,CAACkqM,aAAa,CAAG,EAAM,EAC3B,CAAA,IAAI,CAACC,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,OAAO,CAAG,CACf,CAAA,IAAI,CAAC3G,YAAY,CAAG,CACpB,CAAA,IAAI,CAAC5G,SAAS,CAAG,KACjB,CAAA,IAAI,CAAC/mD,MAAM,CAAG,KACd,IAAI,CAACwuD,OAAO,GACd,CA8uBF,CAEA,MAAM+F,YAAAA,CACJ,IAAIC,WAAAA,CAAYniM,KAAK,CAAE,CACrB,GAAI,IAAI,CAACoiM,YAAY,GAAKpiM,KAAAA,CAAO,CAC/B,IAAI,CAACoiM,YAAY,CAAGpiM,KACpB,CAAA,IAAI,CAACgrC,KAAK,CAAG,KACf,CACF,CACA,IAAIm3J,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,gBAAAA,CAAiBriM,KAAK,CAAE,CAC1B,GAAI,IAAI,CAACsiM,iBAAiB,GAAKtiM,KAAAA,CAAO,CACpC,IAAI,CAACsiM,iBAAiB,CAAGtiM,KACzB,CAAA,IAAI,CAACgrC,KAAK,CAAG,KACf,CACF,CACA,IAAIq3J,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACC,iBAAiB,CAE/B,IAAIC,WAAAA,CAAYviM,KAAK,CAAE,CACrB,GAAI,IAAI,CAACwiM,YAAY,GAAKxiM,KAAAA,CAAO,CAC/B,IAAI,CAACwiM,YAAY,CAAGxiM,KACpB,CAAA,IAAI,CAACgrC,KAAK,CAAG,KACf,CACF,CACA,IAAIu3J,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIC,YAAYziM,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC0iM,YAAY,GAAK1iM,KAAO,CAAA,CAC/B,IAAI,CAAC0iM,YAAY,CAAG1iM,KACpB,CAAA,IAAI,CAACgrC,KAAK,CAAG,KACf,CACF,CACA,IAAIy3J,aAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,iBAAkB3iM,CAAAA,KAAK,CAAE,CAC3B,GAAI,IAAI,CAAC4iM,kBAAkB,GAAK5iM,KAAO,CAAA,CACrC,IAAI,CAAC4iM,kBAAkB,CAAG5iM,KAC1B,CAAA,IAAI,CAACgrC,KAAK,CAAG,KACf,CACF,CACA,IAAI23J,mBAAoB,CACtB,OAAO,IAAI,CAACC,kBAAkB,CAEhCxiM,aAAa,CACX,IAAI,CAACyiM,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,cAAc,CAAG,KACtB,CAAA,IAAI,CAAC/3J,KAAK,CAAG,KACb,CAAA,IAAI,CAACo3J,YAAY,CAAG,KACpB,CAAA,IAAI,CAACY,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,cAAc,CAAG,CACtB,CAAA,IAAI,CAACX,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACE,YAAY,CAAG,CACpB,CAAA,IAAI,CAACE,YAAY,CAAG,EACpB,CAAA,IAAI,CAACE,kBAAkB,CAAG,EAC5B,CACF,CAEA,MAAMM,qBAAAA,SAA8B3qE,gBAClCP,WAAYluH,CAAAA,OAAO,CAAE,CACnB,MAAMiqC,IAAOjqC,CAAAA,OAAAA,CAAQq5L,UAAU,CAC/B,MAAMC,WAAarvJ,IAAK+mF,CAAAA,UAAU,CAAGxpF,QAASyC,CAAAA,IAAAA,CAAK+mF,UAAU,CAAA,CAAI,EACjE,MAAMuoE,UAAAA,CAAatvJ,KAAKgnF,YAAY,CAAGzpF,SAASyC,IAAKgnF,CAAAA,YAAY,CAAI,CAAA,CAAA,CACrE,MAAMuoE,UAAavvJ,CAAAA,IAAAA,CAAK0mF,UAAU,CAAGnpF,QAAAA,CAASyC,KAAK0mF,UAAU,CAAA,CAAI,CACjE,CAAA,MAAM8oE,WAAaxvJ,IAAK4mF,CAAAA,YAAY,CAAGrpF,QAASyC,CAAAA,IAAAA,CAAK4mF,YAAY,CAAI,CAAA,CAAA,CACrE,MAAMnC,WAAAA,CAAcD,gBAAgBC,WAAW,CAAC1uH,QAAQs1D,OAAO,CAAA,CAC/D,MAAMokI,SAAY15L,CAAAA,OAAAA,CAAQ4oJ,YAAY,EAAExyJ,KAAO,EAC/C,CAAA,IAAIA,IAAM,CAAC,EAAE6zC,KAAKymF,UAAU,CAAC,CAAC,EAAEhC,YAAY,CAAC,EAAE4qE,WAAW,CAAC,EAAEC,WAAW,CAAC,EAAEC,WAAW,CAAC,EAAEC,WAAW,CAAC,EAAEC,UAAU,CAAC,CAClH,GAAI15L,OAAQo1H,CAAAA,IAAI,CAAEh/H,GAAAA,EAAO,QACzB,GAAI4J,OAAAA,CAAQ25L,aAAa,CAAEvjM,GAAAA,EAAO,QAClC,GAAI4J,OAAAA,CAAQ45L,gBAAgB,CAAExjM,KAAO,SACrC,CAAA,GAAI4J,QAAQ65L,cAAc,CAAEzjM,KAAO,SACnC,CAAA,GAAI4J,OAAQ85L,CAAAA,uBAAuB,CAAE1jM,GAAO,EAAA,SAAA,CAC5C,OAAOA,GACT,CACA2jM,2BAA2BC,iBAAiB,CAAEh6L,OAAO,CAAE,CACrD,MAAMi6L,aAAAA,CAAgBj6L,QAAQq5L,UAAU,CAACx/I,UAAU,CACnD,MAAMA,UAAaogJ,CAAAA,aAAAA,CAAgB,CACjC,GAAGA,aAAa,CACd5jM,CAAAA,SAAAA,CACJ,GAAI2J,OAAQo1H,CAAAA,IAAI,CAAE,CAChBv7E,WAAW8gB,kBAAkB,CAAGnuC,oBAChCqtB,CAAAA,UAAAA,CAAW6gB,kBAAkB,CAAGjuC,sBAClC,CACA,GAAIzsB,QAAQ45L,gBAAgB,EAAI55L,QAAQ65L,cAAc,CAAE,CACtDhgJ,UAAWqgJ,CAAAA,eAAe,CAAG/rK,gBAC/B,CACA6rK,kBAAkBngJ,UAAU,CAAGA,WACjC,CACAsgJ,sBAAAA,CAAuBH,iBAAiB,CAAEh6L,OAAO,CAAEo6L,cAAc,CAAErqI,IAAI,CAAE,CACvE,MAAM9lB,IAAAA,CAAOjqC,QAAQq5L,UAAU,CAC/B,MAAMlnM,QAAAA,CAAW,IAAIwE,GAAIyjM,CAAAA,cAAAA,CAAAA,CACzBjoM,SAAS2E,GAAG,CAAC,wBAAyB,EACtC,CAAA,CAAA,MAAMw+D,OAAU,CAAA,IAAI3+D,IAAIqJ,OAAQs1D,CAAAA,OAAO,EACvC,GAAIt1D,OAAAA,CAAQo1H,IAAI,CAAE9/D,OAAAA,CAAQx+D,GAAG,CAAC,OAAQ,IACtC,CAAA,CAAA,GAAIkJ,QAAQ25L,aAAa,CAAErkI,QAAQx+D,GAAG,CAAC,YAAc,CAAA,IAAA,CAAA,CACrD,GAAIkJ,OAAQ45L,CAAAA,gBAAgB,EAAI55L,OAAQ65L,CAAAA,cAAc,CAAE,CACtDvkI,OAAAA,CAAQx+D,GAAG,CAAC,WAAY,IACxB,CAAA,CAAA,GAAIkJ,QAAQ85L,uBAAuB,CAAExkI,QAAQx+D,GAAG,CAAC,cAAgB,CAAA,IAAA,CAAA,CACjE,GAAIkJ,OAAQ45L,CAAAA,gBAAgB,CAAEtkI,OAAQx+D,CAAAA,GAAG,CAAC,mBAAqB,CAAA,IAAA,CAAA,CAC/D,GAAIkJ,OAAQ65L,CAAAA,cAAc,CAAEvkI,OAAQx+D,CAAAA,GAAG,CAAC,iBAAmB,CAAA,IAAA,EAC7D,CACAkjM,iBAAkB9pI,CAAAA,UAAU,CAAGH,IAAAA,CAAO9lB,KAAK0mF,UAAU,CAAG1mF,KAAK+mF,UAC7DgpE,CAAAA,iBAAkB39H,CAAAA,cAAc,CAAGlqE,QACnC6nM,CAAAA,iBAAkBn+H,CAAAA,aAAa,CAAGvG,QACpC,CACA+kI,yBAAyBL,iBAAiB,CAAEh6L,OAAO,CAAEo6L,cAAc,CAAErqI,IAAI,CAAE,CACzE,MAAM9lB,KAAOjqC,OAAQq5L,CAAAA,UAAU,CAC/B,MAAMlnM,QAAAA,CAAW,IAAIwE,GAAIyjM,CAAAA,cAAAA,CAAAA,CACzB,MAAM9kI,OAAU,CAAA,IAAI3+D,IAAIqJ,OAAQs1D,CAAAA,OAAO,CACvC0kI,CAAAA,kBAAkB7pI,YAAY,CAAGJ,KAAO9lB,IAAK4mF,CAAAA,YAAY,CAAG5mF,IAAKgnF,CAAAA,YAAY,CAC7E+oE,kBAAkBz9H,gBAAgB,CAAGpqE,QACrC6nM,CAAAA,iBAAAA,CAAkBj+H,eAAe,CAAGzG,QACtC,CACAg7D,sBAAAA,CAAuB93F,MAAM,CAAEx4B,OAAO,CAAE,CACtC,MAAMiqC,KAAOjqC,OAAQq5L,CAAAA,UAAU,CAC/B,MAAMtpI,IAAAA,CAAOv3B,OAAO2E,QAAQ,EAAI,CAAC,CAAC8M,IAAAA,CAAK0mF,UAAU,EAAI,CAAC,CAAC1mF,IAAAA,CAAK4mF,YAAY,GAAK7wH,QAAQ4oJ,YAAY,EAAE34B,SAAW,IAAG,CAAA,CACjH,MAAM+pE,iBAAAA,CAAoB,CACxBnoM,IAAM,CAAA,CAAC,eAAe,EAAEo4C,IAAAA,CAAKymF,UAAU,CAAC,CAAC,CACzCtgE,cAAAA,CAAgBL,KAAOt/B,mBAAsBD,CAAAA,mBAAAA,CAC7CuqC,oBAAqB9wB,IAAK8wB,CAAAA,mBAAmB,CAC7CvT,uBAAyBvd,CAAAA,IAAAA,CAAKud,uBAAuB,CACrDC,oBAAqBxd,IAAKwd,CAAAA,mBAAmB,CAE/C,CAAA,MAAM2I,eAAiBL,IAAOt/B,CAAAA,mBAAAA,CAAsBD,mBACpD,CAAA,MAAM4pK,eAAiBlqE,QAASC,CAAAA,KAAK,CAACJ,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQ43B,CAAAA,cAAAA,CAAAA,CAAiBpwD,OAAQ4oJ,CAAAA,YAAY,CAACx4F,cAAe,CAAA,CAAA,CACpH,IAAI,CAAC2pI,0BAA0B,CAACC,iBAAmBh6L,CAAAA,OAAAA,CAAAA,CACnD,IAAI,CAACm6L,sBAAsB,CAACH,iBAAAA,CAAmBh6L,QAASo6L,cAAgBrqI,CAAAA,IAAAA,CAAAA,CACxE,IAAI,CAACsqI,wBAAwB,CAACL,iBAAmBh6L,CAAAA,OAAAA,CAASo6L,eAAgBrqI,IAC1E,CAAA,CAAA,OAAO6K,sBAAsBC,gBAAgB,CAACriC,OAAQwhK,iBACxD,CAAA,CACF,CACA,MAAMM,sBAAwB,IAAIlB,qBAElC,OAAMmB,cAAuB9xC,SAAAA,QAAAA,CAK3B,IAAI4wC,UAAWnjM,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACskM,WAAW,CAAGnkM,SACnB,CAAA,GAAIH,MAAO,CACT,IAAI,CAACskM,WAAW,CAAG,CACjB9pE,UAAAA,CAAYx6H,MAAMw6H,UAAU,CAC5B72E,WAAY3jD,KAAM2jD,CAAAA,UAAU,CAC5BkhB,mBAAqB7kE,CAAAA,KAAAA,CAAM6kE,mBAAmB,CAC9Ci2D,UAAAA,CAAY96H,MAAM86H,UAAU,CAC5BC,aAAc/6H,KAAM+6H,CAAAA,YAAY,CAChCN,UAAAA,CAAYz6H,MAAMy6H,UAAU,CAC5BE,aAAc36H,KAAM26H,CAAAA,YAAY,CAElC,CAAA,GAAI36H,KAAMg6D,CAAAA,UAAU,EAAIh6D,KAAMi6D,CAAAA,YAAY,EAAIj6D,KAAMk6D,CAAAA,cAAc,CAAE,CAClE,MAAMqqI,QAAWvkM,CAAAA,KAAAA,CAAMk6D,cAAc,EAAI5/B,mBAAAA,CACzC,GAAIiqK,QAAajqK,GAAAA,mBAAAA,CAAqB,CACpC,IAAI,CAACgqK,WAAW,CAACxpE,UAAU,CAAG96H,KAAMg6D,CAAAA,UAAU,CAC9C,IAAI,CAACsqI,WAAW,CAACvpE,YAAY,CAAG/6H,MAAMi6D,aACxC,MAAO,GAAIsqI,QAAAA,GAAahqK,oBAAqB,CAC3C,IAAI,CAAC+pK,WAAW,CAAC7pE,UAAU,CAAGz6H,MAAMg6D,UACpC,CAAA,IAAI,CAACsqI,WAAW,CAAC3pE,YAAY,CAAG36H,KAAAA,CAAMi6D,aAAY,CAEtD,CACF,CACA,IAAI,CAAC25F,aAAa,GACpB,CACA,IAAIuvC,YAAa,CACf,OAAO,IAAI,CAACmB,WAAW,CAEzBltM,KAAK6xC,MAAM,CAAE,CACX,KAAK,CAAC7xC,KAAK6xC,MACX,CAAA,CAAA,IAAI,CAACk6J,UAAU,CAAGl6J,MAAAA,CAAOk6J,UAAU,CACnC,OAAO,IAAI,CAEb35D,gBAAiB5+H,CAAAA,MAAM,CAAE,CACvB,KAAM,CAAE6+H,OAAO,CAAE,CAAG7+H,MACpB,CAAA,MAAMd,QAAU,CACds1D,OAAAA,CAASi7D,YAAYY,cAAc,CAAC,IAAI,CAAErwH,MAAAA,CAAAA,CAC1Cs0H,KAAM,CAACuK,OAAUhW,CAAAA,cAAa,IAAO,CACrCgwE,CAAAA,aAAAA,CAAe,CAACh6D,OAAAA,CAAU5V,oBAAmB,IAAO,CAAA,CACpD6vE,gBAAkB,CAACj6D,CAAAA,OAAUvV,CAAAA,wBAAuB,IAAO,CAC3DyvE,CAAAA,cAAAA,CAAgB,CAACl6D,OAAAA,CAAUtV,sBAAqB,IAAO,EACvDyvE,uBAAyB,CAACn6D,CAAAA,OAAUpV,CAAAA,iCAAgC,IAAO,CAC3EgH,CAAAA,IAAAA,CAAMzwH,OAAOywH,IAAI,CACjBntH,MAAOtD,MAAOuwH,CAAAA,kBAAkB,CAACsa,iBAAiB,CAClD3hE,YAAalpE,MAAOuwH,CAAAA,kBAAkB,CAACrnD,WAAW,CAClDohE,GAAKtqI,CAAAA,MAAAA,CAAOuwH,kBAAkB,CAAC+Z,GAAG,CAClCiuD,UAAY,CAAA,IAAI,CAACA,UAAU,CAC3BzwC,YAAc,CAAA,IAAI,CAACA,YACrB,EACA,MAAMniG,iBAAAA,CAAoB,IAAIunE,sBAAAA,CAAuBltH,OAAOqtH,iBAAiB,CAAErtH,OAAOstH,mBAAmB,CAAEttH,OAAOyqC,YAAY,CAAA,CAC9H,MAAMgjF,OAAUD,CAAAA,iBAAAA,CAAkBxtH,OAAO03B,MAAM,CAAA,CAC/C+1F,QAAQoD,QAAQ,CAAC,kBAAmB2oE,qBACpC,CAAA,CAAA,OAAO/rE,OAAQsD,CAAAA,UAAU,CAAC,iBAAmB7xH,CAAAA,OAAAA,CAASymD,kBAAmB,IAAI,CAAC2jG,MAAM,CACtF,CAzDA9zJ,WAAY+iM,CAAAA,UAAU,CAAC,CACrB,KAAK,EACL,CAAA,IAAI,CAACA,UAAU,CAAGA,WACpB,CAuDF,CAEA,MAAMqB,WAAAA,CAAc,CAClB,QAAU,CAAA,cAAA,CACV,OAAQ,aACR,CAAA,MAAA,CAAQ,YACR,CAAA,MAAA,CAAQ,aACR,MAAQ,CAAA,YAAA,CACR,KAAM,gBACN,CAAA,KAAA,CAAO,iBACT,CACA,CAAA,MAAMC,WAAc,CAAA,CAClB,SAAU,cACV,CAAA,MAAA,CAAQ,cACR,MAAQ,CAAA,YAAA,CACR,OAAQ,YACR,CAAA,MAAA,CAAQ,YACV,CACA,OAAMC,UACJ,CAAA,OAAOC,WAAWr8J,QAAQ,CAAE,CAC1B,OAAOk8J,WAAW,CAACl8J,QAAAA,CAAS,EAAI,aAClC,CACA,OAAOs8J,UAAWt8J,CAAAA,QAAQ,CAAE,CAC1B,OAAOm8J,WAAW,CAACn8J,QAAAA,CAAS,EAAI,aAClC,CACF,CAEA,MAAMu8J,gBAAAA,CAAmB,CAACvvJ,SAAWstD,CAAAA,OAAAA,GAAAA,CACnC,MAAMkiG,aAAAA,CAAgBliG,QAAQtqG,MAAM,CAAG,EACvC,MAAMg7C,WAAAA,CAAcgC,UAAUh9C,MAAM,CAAG,CACvC,CAAA,MAAM8Y,GAAK,IAAIkD,IAAAA,CACf,MAAMk8K,EAAK,CAAA,IAAIl8K,KACf,MAAMywL,EAAAA,CAAK,IAAIzwL,IAAAA,CACf,MAAM0wL,IAAO,CAAA,IAAI1wL,KACjB,MAAM2wL,IAAAA,CAAO,IAAI3wL,IACjB,CAAA,MAAM4wL,UAAa,CAAA,IAAI5wL,KACvB,MAAM0tH,OAAAA,CAAU,EAAE,CAClB,IAAI,IAAI3pI,CAAI,CAAA,CAAA,CAAGA,CAAIi9C,CAAAA,SAAAA,CAAUh9C,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC2pI,OAAO,CAAC3pI,EAAE,CAAG,EACf,CACA,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAGA,EAAIysM,aAAezsM,CAAAA,CAAAA,EAAAA,CAAI,CACpC,MAAM+tI,EAAAA,CAAKxjC,OAAO,CAACvqG,EAAI,CAAE,CAAA,CACzB,MAAMguI,EAAKzjC,CAAAA,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,EAAE,CAC7B,MAAM8sM,GAAKviG,OAAO,CAACvqG,EAAI,CAAI,CAAA,CAAA,CAAE,CAC7B+Y,EAAGxQ,CAAAA,GAAG,CAAC00C,SAAS,CAAC8wF,EAAK,CAAA,CAAA,CAAE,CAAE9wF,SAAS,CAAC8wF,GAAK,CAAI,CAAA,CAAA,CAAE,CAAE9wF,SAAS,CAAC8wF,EAAK,CAAA,CAAA,CAAI,EAAE,CACtEoqD,CAAAA,EAAAA,CAAG5vL,GAAG,CAAC00C,SAAS,CAAC+wF,EAAAA,CAAK,EAAE,CAAE/wF,SAAS,CAAC+wF,EAAK,CAAA,CAAA,CAAI,EAAE,CAAE/wF,SAAS,CAAC+wF,EAAAA,CAAK,EAAI,CAAE,CAAA,CAAA,CACtE0+D,GAAGnkM,GAAG,CAAC00C,SAAS,CAAC6vJ,EAAAA,CAAK,CAAE,CAAA,CAAE7vJ,SAAS,CAAC6vJ,EAAAA,CAAK,EAAI,CAAE,CAAA,CAAE7vJ,SAAS,CAAC6vJ,EAAAA,CAAK,CAAI,CAAA,CAAA,CAAE,EACtEH,IAAK9uL,CAAAA,IAAI,CAACs6K,EAAIp/K,CAAAA,EAAAA,CAAAA,CACd6zL,KAAK/uL,IAAI,CAAC6uL,EAAI3zL,CAAAA,EAAAA,CAAAA,CACd8zL,WAAWvwL,KAAK,CAACqwL,KAAMC,IAAMxsM,CAAAA,CAAAA,SAAS,EACtCupI,CAAAA,OAAO,CAACoE,EAAK,CAAA,CAAA,CAAE,EAAI8+D,UAAWx4L,CAAAA,CAAC,CAC/Bs1H,OAAO,CAACoE,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,EAAI8+D,WAAW9wL,CAClC4tH,CAAAA,OAAO,CAACoE,GAAK,CAAI,CAAA,CAAA,CAAE,EAAI8+D,UAAAA,CAAW3wL,CAAC,CACnCytH,OAAO,CAACqE,EAAAA,CAAK,EAAE,EAAI6+D,UAAAA,CAAWx4L,CAC9Bs1H,CAAAA,OAAO,CAACqE,GAAK,CAAI,CAAA,CAAA,CAAE,EAAI6+D,UAAW9wL,CAAAA,CAAC,CACnC4tH,OAAO,CAACqE,EAAK,CAAA,CAAA,CAAI,EAAE,EAAI6+D,UAAAA,CAAW3wL,CAAC,CACnCytH,OAAO,CAACmjE,GAAK,CAAE,CAAA,EAAID,WAAWx4L,CAC9Bs1H,CAAAA,OAAO,CAACmjE,EAAK,CAAA,CAAA,CAAI,EAAE,EAAID,UAAAA,CAAW9wL,CAAC,CACnC4tH,OAAO,CAACmjE,EAAAA,CAAK,CAAI,CAAA,CAAA,CAAE,EAAID,UAAW3wL,CAAAA,EAAC,CAErC,IAAI,IAAIlc,CAAI,CAAA,CAAA,CAAGA,EAAIi7C,WAAaj7C,CAAAA,CAAAA,EAAAA,CAAI,CAClC,MAAM6xB,EAAAA,CAAK83G,OAAO,CAAC3pI,CAAAA,CAAI,EAAE,CACzB,MAAM8xB,EAAK63G,CAAAA,OAAO,CAAC3pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAC7B,MAAM+xB,GAAK43G,OAAO,CAAC3pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAC7B,MAAM+sM,OAAS,CAAIxtM,CAAAA,IAAAA,CAAKud,IAAI,CAAC+U,EAAAA,CAAKA,EAAKC,CAAAA,EAAAA,CAAKA,GAAKC,EAAKA,CAAAA,EAAAA,CACtD43G,CAAAA,OAAO,CAAC3pI,EAAI,CAAE,CAAA,EAAI+sM,MAClBpjE,CAAAA,OAAO,CAAC3pI,CAAAA,CAAI,EAAI,CAAE,CAAA,EAAI+sM,MACtBpjE,CAAAA,OAAO,CAAC3pI,CAAAA,CAAI,EAAI,CAAE,CAAA,EAAI+sM,OACxB,CACA,OAAOpjE,OACT,CACA,CAAA,MAAMqjE,iBAAoB,CAAA,CAAC/vJ,UAAW0sF,OAASG,CAAAA,GAAAA,CAAKv/B,WAClD,MAAMkiG,aAAAA,CAAgBliG,QAAQtqG,MAAM,CAAG,CACvC,CAAA,MAAMg7C,YAAcgC,SAAUh9C,CAAAA,MAAM,CAAG,CACvC,CAAA,MAAM6zB,GAAK,IAAI7X,IAAAA,CACf,MAAM8X,EAAK,CAAA,IAAI9X,KACf,MAAMgxL,EAAAA,CAAK,IAAIhxL,IACf,CAAA,MAAMixL,GAAK,IAAIrrL,IAAAA,CACf,MAAMsrL,EAAAA,CAAK,IAAItrL,IACf,CAAA,MAAMurL,GAAK,IAAIvrL,IAAAA,CACf,MAAMwrL,IAAO,CAAA,IAAIpxL,IACjB,CAAA,MAAMqxL,KAAO,IAAIrxL,IAAAA,CACjB,MAAMsxL,IAAO,CAAA,IAAI1zL,aAAaohC,WAAc,CAAA,CAAA,CAAA,CAC5C,MAAMuyJ,IAAAA,CAAO,IAAI3zL,YAAaohC,CAAAA,WAAAA,CAAc,GAC5C,MAAM2uF,QAAAA,CAAW,EAAE,CACnB,IAAI,IAAI5pI,CAAI,CAAA,CAAA,CAAGA,EAAIysM,aAAezsM,CAAAA,CAAAA,EAAAA,CAAI,CACpC,MAAM+tI,EAAAA,CAAKxjC,OAAO,CAACvqG,CAAAA,CAAI,CAAE,CAAA,CACzB,MAAMguI,EAAKzjC,CAAAA,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,EAAE,CAC7B,MAAM8sM,EAAKviG,CAAAA,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,EAAE,CAC7B8zB,EAAAA,CAAGvrB,GAAG,CAAC00C,SAAS,CAAC8wF,EAAAA,CAAK,EAAE,CAAE9wF,SAAS,CAAC8wF,EAAK,CAAA,CAAA,CAAI,EAAE,CAAE9wF,SAAS,CAAC8wF,EAAK,CAAA,CAAA,CAAI,EAAE,CACtEh6G,CAAAA,EAAAA,CAAGxrB,GAAG,CAAC00C,SAAS,CAAC+wF,EAAK,CAAA,CAAA,CAAE,CAAE/wF,SAAS,CAAC+wF,EAAK,CAAA,CAAA,CAAI,EAAE,CAAE/wF,SAAS,CAAC+wF,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CACtEi/D,GAAG1kM,GAAG,CAAC00C,SAAS,CAAC6vJ,EAAAA,CAAK,EAAE,CAAE7vJ,SAAS,CAAC6vJ,EAAAA,CAAK,EAAI,CAAE,CAAA,CAAE7vJ,SAAS,CAAC6vJ,EAAAA,CAAK,EAAI,CAAE,CAAA,CAAA,CACtEI,EAAG3kM,CAAAA,GAAG,CAACuhI,GAAG,CAACiE,GAAK,CAAE,CAAA,CAAEjE,GAAG,CAACiE,EAAAA,CAAK,CAAI,CAAA,CAAA,CAAE,EACnCo/D,EAAG5kM,CAAAA,GAAG,CAACuhI,GAAG,CAACkE,GAAK,CAAE,CAAA,CAAElE,GAAG,CAACkE,GAAK,CAAI,CAAA,CAAA,CAAE,EACnCo/D,EAAG7kM,CAAAA,GAAG,CAACuhI,GAAG,CAACgjE,EAAK,CAAA,CAAA,CAAE,CAAEhjE,GAAG,CAACgjE,GAAK,CAAI,CAAA,CAAA,CAAE,EACnC,MAAMW,EAAAA,CAAK15K,GAAG1f,CAAC,CAAGyf,GAAGzf,CAAC,CACtB,MAAMmL,EAAKytL,CAAAA,EAAAA,CAAG54L,CAAC,CAAGyf,EAAAA,CAAGzf,CAAC,CACtB,MAAMq5L,EAAK35K,CAAAA,EAAAA,CAAGhY,CAAC,CAAG+X,EAAAA,CAAG/X,CAAC,CACtB,MAAM0D,EAAKwtL,CAAAA,EAAAA,CAAGlxL,CAAC,CAAG+X,EAAAA,CAAG/X,CAAC,CACtB,MAAM4xL,GAAK55K,EAAG7X,CAAAA,CAAC,CAAG4X,EAAAA,CAAG5X,CAAC,CACtB,MAAMwD,GAAKutL,EAAG/wL,CAAAA,CAAC,CAAG4X,EAAG5X,CAAAA,CAAC,CACtB,MAAMxD,EAAAA,CAAKy0L,GAAG94L,CAAC,CAAG64L,GAAG74L,CAAC,CACtB,MAAMsE,EAAKy0L,CAAAA,EAAAA,CAAG/4L,CAAC,CAAG64L,GAAG74L,CAAC,CACtB,MAAMu5L,EAAKT,CAAAA,EAAAA,CAAGpxL,CAAC,CAAGmxL,EAAAA,CAAGnxL,CAAC,CACtB,MAAM7C,EAAKk0L,CAAAA,EAAAA,CAAGrxL,CAAC,CAAGmxL,EAAAA,CAAGnxL,CAAC,CACtB,MAAM8xL,IAAOn1L,CAAAA,EAAAA,CAAKQ,GAAKP,EAAKi1L,CAAAA,EAAAA,CAC5B,GAAIC,IAAS,GAAA,CAAA,CAAG,CACdR,IAAK9kM,CAAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,GACf+kM,IAAK/kM,CAAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,GACjB,CAAO,KAAA,CACL,MAAMjJ,CAAAA,CAAI,EAAIuuM,IACdR,CAAAA,IAAAA,CAAK9kM,GAAG,CAAE2Q,CAAAA,EAAKu0L,CAAAA,EAAAA,CAAKG,EAAKpuL,CAAAA,EAAC,EAAKlgB,CAAG,CAAC4Z,CAAAA,EAAKw0L,CAAAA,EAAAA,CAAKE,GAAKnuL,EAAC,EAAKngB,CAAG,CAAC4Z,CAAAA,EAAKy0L,CAAAA,EAAAA,CAAKC,GAAKluL,EAAC,EAAKpgB,GACjFguM,IAAK/kM,CAAAA,GAAG,CAAEmQ,CAAAA,EAAK8G,CAAAA,EAAAA,CAAK7G,GAAK80L,EAAC,EAAKnuM,EAAG,CAACoZ,EAAK+G,CAAAA,EAAAA,CAAK9G,GAAK+0L,EAAC,EAAKpuM,EAAG,CAACoZ,GAAKgH,EAAK/G,CAAAA,EAAAA,CAAKg1L,EAAC,EAAKruM,GACnF,CACAiuM,IAAI,CAACx/D,EAAK,CAAA,CAAA,CAAI,EAAE,EAAIs/D,IAAAA,CAAKh5L,CACzBk5L,CAAAA,IAAI,CAACx/D,GAAK,CAAI,CAAA,CAAA,CAAE,EAAIs/D,IAAKtxL,CAAAA,CAAC,CAC1BwxL,IAAI,CAACx/D,EAAK,CAAA,CAAA,CAAI,EAAE,EAAIs/D,IAAAA,CAAKnxL,CAAC,CAC1BqxL,IAAI,CAACv/D,GAAK,CAAI,CAAA,CAAA,CAAE,EAAIq/D,IAAKh5L,CAAAA,CAAC,CAC1Bk5L,IAAI,CAACv/D,EAAAA,CAAK,EAAI,CAAE,CAAA,EAAIq/D,KAAKtxL,CACzBwxL,CAAAA,IAAI,CAACv/D,EAAK,CAAA,CAAA,CAAI,EAAE,EAAIq/D,IAAAA,CAAKnxL,CAAC,CAC1BqxL,IAAI,CAACT,EAAAA,CAAK,CAAI,CAAA,CAAA,CAAE,EAAIO,IAAKh5L,CAAAA,CAAC,CAC1Bk5L,IAAI,CAACT,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,EAAIO,KAAKtxL,CACzBwxL,CAAAA,IAAI,CAACT,GAAK,CAAI,CAAA,CAAA,CAAE,EAAIO,IAAAA,CAAKnxL,CAAC,CAC1BsxL,IAAI,CAACz/D,EAAAA,CAAK,EAAI,CAAE,CAAA,EAAIu/D,IAAKj5L,CAAAA,CAAC,CAC1Bm5L,IAAI,CAACz/D,EAAK,CAAA,CAAA,CAAI,EAAE,EAAIu/D,IAAAA,CAAKvxL,CAAC,CAC1ByxL,IAAI,CAACz/D,EAAAA,CAAK,EAAI,CAAE,CAAA,EAAIu/D,KAAKpxL,CACzBsxL,CAAAA,IAAI,CAACx/D,EAAK,CAAA,CAAA,CAAI,EAAE,EAAIs/D,IAAAA,CAAKj5L,CAAC,CAC1Bm5L,IAAI,CAACx/D,GAAK,CAAI,CAAA,CAAA,CAAE,EAAIs/D,IAAKvxL,CAAAA,CAAC,CAC1ByxL,IAAI,CAACx/D,EAAAA,CAAK,EAAI,CAAE,CAAA,EAAIs/D,KAAKpxL,CACzBsxL,CAAAA,IAAI,CAACV,EAAK,CAAA,CAAA,CAAI,EAAE,EAAIQ,IAAAA,CAAKj5L,CAAC,CAC1Bm5L,IAAI,CAACV,EAAAA,CAAK,CAAI,CAAA,CAAA,CAAE,EAAIQ,IAAKvxL,CAAAA,CAAC,CAC1ByxL,IAAI,CAACV,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,EAAIQ,KAAKpxL,EAC3B,CACA,MAAM0xL,EAAAA,CAAK,IAAI3xL,IACf,CAAA,MAAM/C,EAAK,CAAA,IAAI+C,KACf,MAAMmU,CAAAA,CAAI,IAAInU,IACd,CAAA,MAAMqpD,KAAO,IAAIrpD,IAAAA,CACjB,IAAI,IAAIjc,CAAAA,CAAI,EAAGA,CAAIi7C,CAAAA,WAAAA,CAAaj7C,IAAI,CAClCowB,CAAAA,CAAE7nB,GAAG,CAACohI,OAAO,CAAC3pI,CAAAA,CAAI,EAAE,CAAE2pI,OAAO,CAAC3pI,CAAI,CAAA,CAAA,CAAI,EAAE,CAAE2pI,OAAO,CAAC3pI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAA,CAC5D4tM,GAAGrlM,GAAG,CAACglM,IAAI,CAACvtM,CAAAA,CAAI,CAAE,CAAA,CAAEutM,IAAI,CAACvtM,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAEutM,IAAI,CAACvtM,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAA,CACpDkZ,GAAG3Q,GAAG,CAACilM,IAAI,CAACxtM,CAAAA,CAAI,EAAE,CAAEwtM,IAAI,CAACxtM,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAEwtM,IAAI,CAACxtM,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAA,CACpD,MAAM8tM,KAAAA,CAAQ19K,EAAElT,GAAG,CAAC0wL,IACpBtoI,IAAKvmE,CAAAA,IAAI,CAACqxB,CAAGta,CAAAA,CAAAA,SAAS,CAACg4L,KAAAA,CAAAA,CACvBxoI,KAAKznD,IAAI,CAAC+vL,GAAItoI,IAAMllE,CAAAA,CAAAA,SAAS,EAC7BwpI,CAAAA,QAAQ,CAAC5pI,CAAI,CAAA,CAAA,CAAE,CAAGslE,IAAKjxD,CAAAA,CAAC,CACxBu1H,QAAQ,CAAC5pI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGslE,KAAKvpD,CAC3B6tH,CAAAA,QAAQ,CAAC5pI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGslE,IAAAA,CAAKppD,CAAC,CAC5BopD,IAAAA,CAAKhpD,KAAK,CAAC8T,CAAAA,CAAGw9K,GACdhkE,CAAAA,QAAQ,CAAC5pI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAGslE,KAAKpoD,GAAG,CAAChE,IAAM,CAAM,CAAA,CAAC,CAAI,CAAA,EAClD,CACA,OAAO0wH,QACT,CAEA,CAAMmkE,MAAAA,QAAAA,CACJvB,kBAAmB,CACjB,IAAI,CAAC7iE,OAAO,CAAG6iE,gBAAiB,CAAA,IAAI,CAACvvJ,SAAS,CAAE,IAAI,CAACstD,OAAO,EAC9D,CACAyiG,mBAAoB,CAClB,IAAI,CAACpjE,QAAQ,CAAGojE,kBAAkB,IAAI,CAAC/vJ,SAAS,CAAE,IAAI,CAAC0sF,OAAO,CAAE,IAAI,CAACG,GAAG,CAAE,IAAI,CAACv/B,OAAO,EACxF,CACF,CAEA,MAAMyjG,sBAAwB,CAAM,CAAA,EAAA,CACpC,MAAMC,0BAA6B,CAAA,CAAA,CAAMD,qBAAwB,CAAA,CACjE,OAAME,WAAoBH,SAAAA,QAAAA,CACxBhmM,YAAYnG,IAAO,CAAA,EAAE,CAAC,CACpB,KAAK,EAAA,CACL,MAAMusM,EAAKvsM,CAAAA,IAAAA,CAAK4pB,WAAW,EAAI,IAAIvP,KAAK,EAAK,CAAA,EAAA,CAAK,EAClD,CAAA,CAAA,MAAMmyL,GAAKxsM,IAAKysM,CAAAA,aAAa,EAAI,CACjC,CAAA,MAAMC,GAAK1sM,IAAK2sM,CAAAA,cAAc,EAAI,CAClC,CAAA,MAAMC,GAAK5sM,IAAK6sM,CAAAA,cAAc,EAAI,CAClC,CAAA,MAAMC,QAAU9sM,IAAK8sM,CAAAA,OAAO,EAAI,CAAA,CAChC,MAAMC,IAAO,CAAA,CAACR,GAAGpyL,CAAC,CAAG2yL,QACrB,MAAME,IAAAA,CAAOT,EAAGpyL,CAAAA,CAAC,CAAG2yL,OACpB,CAAA,MAAMG,QAAU,CACd,IAAI5yL,KAAK,CAACkyL,EAAAA,CAAG95L,CAAC,CAAEs6L,KAAMR,EAAGjyL,CAAAA,CAAC,EAC1B,IAAID,IAAAA,CAAKkyL,GAAG95L,CAAC,CAAEs6L,KAAMR,EAAGjyL,CAAAA,CAAC,EACzB,IAAID,IAAAA,CAAKkyL,GAAG95L,CAAC,CAAEu6L,KAAMT,EAAGjyL,CAAAA,CAAC,CACzB,CAAA,IAAID,KAAK,CAACkyL,EAAAA,CAAG95L,CAAC,CAAEu6L,IAAAA,CAAMT,GAAGjyL,CAAC,CAAA,CAC1B,IAAID,IAAAA,CAAKkyL,GAAG95L,CAAC,CAAEs6L,KAAM,CAACR,EAAAA,CAAGjyL,CAAC,CAC1B,CAAA,IAAID,IAAK,CAAA,CAACkyL,GAAG95L,CAAC,CAAEs6L,KAAM,CAACR,EAAAA,CAAGjyL,CAAC,CAC3B,CAAA,IAAID,IAAK,CAAA,CAACkyL,GAAG95L,CAAC,CAAEu6L,KAAM,CAACT,EAAAA,CAAGjyL,CAAC,CAC3B,CAAA,IAAID,IAAKkyL,CAAAA,EAAAA,CAAG95L,CAAC,CAAEu6L,IAAAA,CAAM,CAACT,EAAGjyL,CAAAA,CAAC,EAC3B,CACD,MAAM4yL,QAAW,CAAA,CACf,CACE,CACA,CAAA,CAAA,CACA,EACD,CACD,CACE,EACA,CACA,CAAA,CAAA,CACD,CACD,CACE,EACA,CACA,CAAA,CAAA,CACD,CACD,CACE,CAAA,CACA,EACA,CACD,CAAA,CACD,CACE,CACA,CAAA,CAAA,CACA,EACD,CACD,CACE,EACA,CACA,CAAA,CAAA,CACD,CACF,CACD,MAAMC,WAAc,CAAA,CAClB,CACE,CACA,CAAA,CAAA,CACA,EACD,CACD,CACE,EACA,CACA,CAAA,CAAC,CACF,CAAA,CACD,CACE,CACA,CAAA,CAAA,CACA,EACD,CACD,CACE,EACA,CAAC,CAAA,CACD,CACD,CAAA,CACD,CACE,CACA,CAAA,CAAA,CACA,EACD,CACD,CACE,CAAC,CACD,CAAA,CAAA,CACA,EACD,CACF,CACD,MAAMC,KAAQ,CAAA,CACZxuG,MAAO,CACPjiF,CAAAA,IAAAA,CAAM,EACN0wL,GAAK,CAAA,CAAA,CACLC,MAAQ,CAAA,CAAA,CACR9wL,MAAO,CACPC,CAAAA,IAAAA,CAAM,CACR,CACA,CAAA,MAAM4+B,UAAY,EAAE,CACpB,MAAM0sF,OAAAA,CAAU,EAAE,CAClB,MAAMG,IAAM,EAAE,CACd,MAAMv/B,OAAU,CAAA,EAAE,CAClB,IAAI4kG,SAAW,CACf,CAAA,MAAMC,aAAe,CAACC,IAAAA,CAAMC,UAAWC,SACrC,GAAA,CAAA,MAAM3qL,MAAQ,IAAI3I,IAAAA,CAClB,MAAM4I,KAAQ,CAAA,IAAI5I,KAClB,MAAM6I,KAAAA,CAAQ,IAAI7I,IAClB,CAAA,MAAM3c,CAAI,CAAA,IAAI2c,KACd,IAAI,IAAIjc,EAAI,CAAGA,CAAAA,CAAAA,EAAKsvM,UAAWtvM,CAAI,EAAA,CAAA,CACjC,IAAI,IAAIumF,EAAI,CAAGA,CAAAA,CAAAA,EAAKgpH,UAAWhpH,CAAI,EAAA,CAAA,CACjC3hE,MAAM3Q,IAAI,CAAC46L,OAAO,CAACC,QAAQ,CAACO,IAAAA,CAAK,CAAC,CAAE,CAAA,CAAC,CAAER,OAAO,CAACC,QAAQ,CAACO,KAAK,CAAC,CAAA,CAAE,CAAC,CAAErvM,CAAAA,CAAIsvM,WACvEzqL,KAAM5Q,CAAAA,IAAI,CAAC46L,OAAO,CAACC,QAAQ,CAACO,KAAK,CAAC,CAAA,CAAE,CAAC,CAAER,OAAO,CAACC,QAAQ,CAACO,IAAK,CAAA,CAAC,EAAE,CAAC,CAAE9oH,EAAIgpH,SACvEzqL,CAAAA,CAAAA,KAAAA,CAAMjH,IAAI,CAACgH,MAAOgqL,OAAO,CAACC,QAAQ,CAACO,IAAAA,CAAK,CAAC,CAAE,CAAA,CAAC,EAC5C/vM,CAAE6c,CAAAA,IAAI,CAACyI,KAAOE,CAAAA,KAAAA,CAAAA,CACd,IAAImP,CAAIj0B,CAAAA,CAAAA,CAAIsvM,UACZ,IAAI7vM,CAAAA,CAAI8mF,CAAIgpH,CAAAA,SAAAA,CACZtyJ,UAAUn8C,IAAI,CAACxB,EAAE+U,CAAC,CAAE/U,EAAEyc,CAAC,CAAEzc,CAAE4c,CAAAA,CAAC,EAC5BytH,OAAQ7oI,CAAAA,IAAI,CAACiuM,WAAW,CAACM,KAAK,CAAC,CAAA,CAAE,CAAEN,WAAW,CAACM,IAAK,CAAA,CAAC,EAAE,CAAEN,WAAW,CAACM,IAAK,CAAA,CAAC,CAAE,CAAA,CAAA,CAC7EvlE,IAAIhpI,IAAI,CAACmzB,EAAG,CAAIx0B,CAAAA,CAAAA,CAAAA,CAChBw0B,EAAIA,CAAIg6K,CAAAA,0BAAAA,CAA6BD,qBACrCvuM,CAAAA,CAAAA,CAAIA,EAAIwuM,0BAA6BD,CAAAA,qBAAAA,CACrC/5K,GAAK,CACLx0B,CAAAA,CAAAA,EAAK,EACLw0B,CAAKo7K,EAAAA,IAAAA,CAAO,CAAI,CAAA,CAAA,CAChB5vM,GAAKF,IAAKmQ,CAAAA,KAAK,CAAC2/L,IAAO,CAAA,CAAA,CAAA,CAAK,EAC5B,GAAIrvM,CAAAA,CAAIsvM,SAAa/oH,EAAAA,CAAAA,CAAIgpH,UAAW,CAClChlG,OAAAA,CAAQzpG,IAAI,CAACquM,QAAAA,CAAWI,UAAY,CAAGJ,CAAAA,QAAAA,CAAW,EAAGA,QACrD5kG,CAAAA,CAAAA,OAAAA,CAAQzpG,IAAI,CAACquM,QAAAA,CAAWI,UAAY,CAAGJ,CAAAA,QAAAA,CAAWI,UAAY,CAAGJ,CAAAA,QAAAA,CAAW,CAC9E,EAAA,CACAA,WACF,CACF,CACF,EACAC,YAAaJ,CAAAA,KAAAA,CAAMxuG,KAAK,CAAE4tG,EAAAA,CAAII,EAC9BY,CAAAA,CAAAA,YAAAA,CAAaJ,MAAMzwL,IAAI,CAAE6vL,GAAII,EAC7BY,CAAAA,CAAAA,YAAAA,CAAaJ,MAAMC,GAAG,CAAEb,EAAIE,CAAAA,EAAAA,CAAAA,CAC5Bc,aAAaJ,KAAME,CAAAA,MAAM,CAAEd,EAAIE,CAAAA,EAAAA,CAAAA,CAC/Bc,aAAaJ,KAAM5wL,CAAAA,KAAK,CAAEkwL,EAAAA,CAAIE,IAC9BY,YAAaJ,CAAAA,KAAAA,CAAM3wL,IAAI,CAAEiwL,EAAAA,CAAIE,GAC7B,CAAA,IAAI,CAACvxJ,SAAS,CAAGA,SACjB,CAAA,IAAI,CAAC0sF,OAAO,CAAGA,OACf,CAAA,IAAI,CAACG,GAAG,CAAGA,GACX,CAAA,IAAI,CAACC,IAAI,CAAGD,GACZ,CAAA,IAAI,CAACv/B,OAAO,CAAGA,QACf,GAAI3oG,IAAAA,CAAKorM,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,iBAAkB/vJ,CAAAA,SAAAA,CAAW0sF,QAASG,GAAKv/B,CAAAA,OAAAA,EAC7D,CACF,CACF,CAEA,MAAMilG,cAAAA,SAAuBzB,SAC3BhmM,WAAYnG,CAAAA,IAAAA,CAAO,EAAE,CAAC,CACpB,KAAK,EAAA,CACL,MAAM4Z,MAAAA,CAAS5Z,KAAK4Z,MAAM,EAAI,GAC9B,MAAMi0L,aAAAA,CAAgB7tM,KAAK6tM,aAAa,EAAI,EAC5C,CAAA,MAAMC,eAAiB9tM,IAAK8tM,CAAAA,cAAc,EAAI,EAC9C,CAAA,MAAMzyJ,UAAY,EAAE,CACpB,MAAM0sF,OAAU,CAAA,EAAE,CAClB,MAAMG,GAAAA,CAAM,EAAE,CACd,MAAMv/B,QAAU,EAAE,CAClB,IAAI,IAAIolG,IAAM,CAAGA,CAAAA,GAAAA,EAAOF,cAAeE,GAAM,EAAA,CAAA,CAC3C,MAAMC,KAAQD,CAAAA,GAAAA,CAAMpwM,IAAKgU,CAAAA,EAAE,CAAGk8L,aAC9B,CAAA,MAAMI,SAAWtwM,IAAKyc,CAAAA,GAAG,CAAC4zL,KAC1B,CAAA,CAAA,MAAME,QAAWvwM,CAAAA,IAAAA,CAAKuc,GAAG,CAAC8zL,KAAAA,CAAAA,CAC1B,IAAI,IAAIG,GAAAA,CAAM,EAAGA,GAAOL,EAAAA,cAAAA,CAAgBK,MAAM,CAC5C,MAAMC,IAAMD,GAAM,CAAA,CAAA,CAAIxwM,KAAKgU,EAAE,CAAGm8L,eAAiBnwM,IAAKgU,CAAAA,EAAE,CAAG,CAAA,CAC3D,MAAM08L,MAAS1wM,CAAAA,IAAAA,CAAKyc,GAAG,CAACg0L,GAAAA,CAAAA,CACxB,MAAME,MAAS3wM,CAAAA,IAAAA,CAAKuc,GAAG,CAACk0L,KACxB,MAAM37L,CAAAA,CAAI67L,OAASL,QACnB,CAAA,MAAM9zL,EAAI+zL,QACV,CAAA,MAAM5zL,CAAI+zL,CAAAA,MAAAA,CAASJ,SACnB,MAAM57K,CAAAA,CAAI,EAAI87K,GAAML,CAAAA,cAAAA,CACpB,MAAMjwM,CAAI,CAAA,CAAA,CAAIkwM,GAAMF,CAAAA,aAAAA,CACpBxyJ,UAAUn8C,IAAI,CAACuT,EAAImH,MAAQO,CAAAA,CAAAA,CAAIP,OAAQU,CAAIV,CAAAA,MAAAA,CAAAA,CAC3CmuH,OAAQ7oI,CAAAA,IAAI,CAACuT,CAAG0H,CAAAA,CAAAA,CAAGG,GACnB4tH,GAAIhpI,CAAAA,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAIx0B,CAClB,EAAA,CACF,CACA,IAAI,IAAIkwM,IAAM,CAAGA,CAAAA,GAAAA,CAAMF,cAAe,EAAEE,GAAAA,CAAI,CAC1C,IAAI,IAAII,GAAM,CAAA,CAAA,CAAGA,IAAML,cAAgB,CAAA,EAAEK,IAAI,CAC3C,MAAM5qM,MAAQwqM,GAAOD,EAAAA,eAAiB,CAAA,CAAA,CAAKK,IAC3C,MAAM1qM,MAAAA,CAASF,MAAQuqM,cAAiB,CAAA,CAAA,CACxCnlG,OAAQzpG,CAAAA,IAAI,CAACqE,KAAQ,CAAA,CAAA,CAAGE,OAAQF,KAChColG,CAAAA,CAAAA,OAAAA,CAAQzpG,IAAI,CAACqE,KAAAA,CAAQ,CAAGE,CAAAA,MAAAA,CAAS,EAAGA,MACtC,EAAA,CACF,CACA,IAAI,CAAC43C,SAAS,CAAGA,SACjB,CAAA,IAAI,CAAC0sF,OAAO,CAAGA,OACf,CAAA,IAAI,CAACG,GAAG,CAAGA,GACX,CAAA,IAAI,CAACC,IAAI,CAAGD,GACZ,CAAA,IAAI,CAACv/B,OAAO,CAAGA,OACf,CAAA,GAAI3oG,KAAKorM,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,iBAAAA,CAAkB/vJ,SAAW0sF,CAAAA,OAAAA,CAASG,IAAKv/B,OAC7D,EAAA,CACF,CACF,CAEA,MAAM4lG,qBAAqBX,cACzBznM,CAAAA,WAAAA,CAAYnG,IAAO,CAAA,EAAE,CAAC,CACpB,MAAM4Z,MAAS,CAAA,EAAA,CACf,MAAMi0L,aAAgB7tM,CAAAA,IAAAA,CAAK6tM,aAAa,EAAI,EAAA,CAC5C,MAAMC,cAAiB9tM,CAAAA,IAAAA,CAAK8tM,cAAc,EAAI,EAAA,CAC9C,KAAK,CAAC,CACJl0L,MACAi0L,CAAAA,aAAAA,CACAC,cACF,CACA,CAAA,CAAA,MAAMU,YAAc,EACpB,CAAA,MAAMC,gBAAkB,GACxB,CAAA,MAAMC,iBAAoBD,CAAAA,eAAAA,CAAkBA,gBAC5C,MAAMpzJ,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIj9C,CAAI,CAAA,CAAA,CAAGA,EAAIi9C,SAAUh9C,CAAAA,MAAM,CAAED,CAAK,EAAA,CAAA,CAAE,CAC1C,MAAMqU,CAAAA,CAAI4oC,SAAS,CAACj9C,EAAE,CAAGwb,MAAAA,CACzB,IAAIO,CAAIkhC,CAAAA,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAE,CAAGwb,MAAAA,CAC3B,MAAMU,CAAI+gC,CAAAA,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAE,CAAGwb,MAC7B,CAAA,GAAIO,CAAI,CAAA,CAAA,CAAG,CACTA,CAAK,EAAA,EAAA,CACL,GAAI1H,CAAIA,CAAAA,CAAAA,CAAI6H,EAAIA,CAAIo0L,CAAAA,iBAAAA,CAAmB,CACrCv0L,CAAAA,CAAI,CAACq0L,YACP,CACF,CACAr0L,CAAKq0L,EAAAA,WAAAA,CACLr0L,GAAKP,MACLyhC,CAAAA,SAAS,CAACj9C,CAAAA,CAAI,EAAE,CAAG+b,EACrB,CACF,CACF,CAEA,MAAMw0L,WACJ,CAAA,OAAOpxM,MAAO8qC,CAAAA,MAAM,CAAExyB,IAAI,CAAE,CAC1B,OAAOA,IAAAA,EACL,KAAKknH,WACH,CAAA,OAAO4xE,WAAY5nB,CAAAA,GAAG,CAAC1+I,MACzB,CAAA,CAAA,KAAK20F,aACH,OAAO2xE,WAAAA,CAAYC,IAAI,CAACvmK,MAAAA,CAC5B,CACA,OAAOsmK,YAAYE,QAAQ,CAACxmK,OAC9B,CACA,OAAOwmK,SAASxmK,MAAM,CAAE,CACtB,OAAOs/F,IAAAA,CAAKC,YAAY,CAACv/F,MAAAA,CAAQ,IAAIikK,WAAYjkK,CAAAA,MAAAA,CAAAA,CACnD,CACA,OAAO0+I,GAAAA,CAAI1+I,MAAM,CAAE,CACjB,OAAOs/F,IAAAA,CAAKC,YAAY,CAACv/F,MAAAA,CAAQ,IAAIikK,WAAY,CAAA,CAC/CQ,OAAS,CAAA,EACX,GACF,CACA,OAAO8B,KAAKvmK,MAAM,CAAE,CAClB,MAAMymK,IAAAA,CAAO,IAAIP,YAAAA,CAAa,CAC5BV,aAAe,CAAA,EAAA,CACfC,eAAgB,EAClB,CAAA,CACAgB,CAAAA,IAAK/mE,CAAAA,OAAO,CAAG7hI,SACf4oM,CAAAA,KAAK5mE,GAAG,CAAGhiI,UACX,OAAOyhI,IAAAA,CAAKC,YAAY,CAACv/F,MAAAA,CAAQymK,IACnC,CAAA,CACF,CAEA,MAAMC,OAAAA,CAuCJxnK,SAAU,CACR,GAAI,IAAI,CAACy7F,YAAY,CAAE,CACrB,GAAI,IAAI,CAACgsE,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAAC1rE,mBAAmB,CAAC,CAChC,IAAI,CAACN,YAAY,CAClB,EACH,CACA,IAAI,CAACA,YAAY,CAACz7F,OAAO,EACzB,CAAA,IAAI,CAACy7F,YAAY,CAAG,KACtB,CACF,CACA,IAAIw2B,UAAWzzJ,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACkpM,WAAW,CAAGlpM,KACnB,CAAA,GAAI,IAAI,CAACi9H,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAC/B,QAAQ,CAACu4B,UAAU,CAAGzzJ,MAC1C,CACF,CACA,IAAIyzJ,YAAa,CACf,OAAO,IAAI,CAACy1C,WAAW,CAxDzB9oM,WAAAA,CAAYkiC,MAAM,CAAEy6F,KAAK,CAAE0L,IAAI,CAAEt+F,OAAO,CAAEr6B,IAAI,CAAC,CAC7C,IAAI,CAACmtH,YAAY,CAAG,IACpB,CAAA,IAAI,CAACisE,WAAW,CAAG,KAAA,CACnB,MAAMhuE,QAAW,CAAA,IAAImpE,eAAe,CAClC7pE,UAAAA,CAAY,aACZM,CAAAA,UAAAA,CAAYjB,aAAaz/H,GAAG,CAACkoC,OAAQhI,mBAAqBlgC,CAAAA,CAAAA,GAAG,CAAC,UAC9D2gI,CAAAA,CAAAA,YAAAA,CAAclB,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqBlgC,GAAG,CAAC,UAAA,CAAA,CAChEqgI,WAAYZ,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQ/H,qBAAqBngC,GAAG,CAAC,YAC9DugI,YAAcd,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAAA,CAAQ/H,mBAAqBngC,CAAAA,CAAAA,GAAG,CAAC,UAChEupD,CAAAA,CAAAA,UAAAA,CAAY,CACVwlJ,SAAWhzK,CAAAA,iBACb,CACF,CACA+kG,CAAAA,CAAAA,QAAAA,CAAS44B,SAAS,CAAC,sBAAuB4wC,UAAWC,CAAAA,UAAU,CAACx6J,OAAQ7B,CAAAA,QAAQ,GAChF,GAAIx4B,IAAAA,GAASinH,iBAAkBmE,QAAS44B,CAAAA,SAAS,CAAC,SAAW,CAAA,EAAA,CAAA,CAC7D,GAAI3pH,OAAQrG,CAAAA,OAAO,CAAEo3F,QAAS44B,CAAAA,SAAS,CAAC,aAAA,CAAe,IACvD54B,QAASn5B,CAAAA,YAAY,CAAC,2BAA6Bg7B,CAAAA,KAAAA,CAAMqsE,yBAAyB,CAClF,CAAA,GAAIj/J,OAAQrG,CAAAA,OAAO,CAAE,CACnBo3F,QAAAA,CAASn5B,YAAY,CAAC,iBAAA,CAAmB53D,SAC3C,CAAO,KAAA,CACL+wF,QAASn5B,CAAAA,YAAY,CAAC,kBAAoB53D,CAAAA,OAAAA,CAAAA,CAC1C+wF,SAASn5B,YAAY,CAAC,WAAYg7B,KAAMssE,CAAAA,SAAS,EACnD,CACAnuE,SAAS0Q,IAAI,CAAGx8G,cAChB8rG,CAAAA,QAAAA,CAASu4B,UAAU,CAAG,IAAI,CAACy1C,WAAW,CACtC,MAAMD,QAAAA,CAAWlsE,MAAMC,MAAM,CAACK,YAAY,CAAC3P,cAAAA,CAAAA,CAC3C,GAAIu7E,QAAAA,CAAU,CACZ,MAAMlnE,IAAAA,CAAO6mE,YAAYpxM,MAAM,CAAC8qC,OAAQxyB,IACxC,CAAA,CAAA,MAAMmtH,YAAe,CAAA,IAAI0K,aAAa5F,IAAM7G,CAAAA,QAAAA,CAAUuN,KACtD,CAAA,IAAI,CAACxL,YAAY,CAAGA,YACpBA,CAAAA,YAAAA,CAAa2O,IAAI,CAAG,KACpB3O,CAAAA,YAAauQ,CAAAA,IAAI,CAAG,KACpBy7D,CAAAA,QAAAA,CAAS3rE,gBAAgB,CAAC,CACxBL,YACD,CAAA,CACD,CAAA,IAAI,CAACgsE,QAAQ,CAAGA,SAClB,CACF,CAqBF,CAEA,MAAMK,GAAAA,CAaJvnB,cAAc19E,MAAM,CAAE,CACpB,IAAI,CAACv0F,IAAI,CAAGu0F,OAAOklG,OAAO,EAAIxyE,iBAC9B,IAAI,CAAC0R,IAAI,CAACuY,gBAAgB,CAAC,IAAI1sI,IAAAA,CAAK+vF,OAAOmlG,eAAe,EAAI,CAC5D,CACA,CAAA,CAAA,CACA,EACD,CACD,CAAA,CAAA,IAAI,CAAC/gE,IAAI,CAACqY,mBAAmB,CAAC,IAAIxsI,IAAK+vF,CAAAA,MAAAA,CAAOolG,eAAe,EAAI,CAC/D,CACA,CAAA,CAAA,CACA,EACD,CACD,CAAA,CAAA,IAAI,CAAChhE,IAAI,CAACyY,aAAa,CAAC,IAAI5sI,IAAK+vF,CAAAA,MAAAA,CAAOqlG,YAAY,EAAI,CACtD,EACA,CACA,CAAA,CAAA,CACD,GACD,GAAIrlG,MAAAA,CAAOslG,SAAS,CAAE,CACpB,IAAI,CAACC,OAAO,CAAG,IAAIt1L,IAAAA,CAAK+vF,OAAOslG,SAAS,EAC1C,CACF,CACA,IAAI75L,IAAK9P,CAAAA,KAAK,CAAE,CACd,GAAI,IAAI,CAACwS,KAAK,GAAKxS,KAAAA,CAAO,CACxB,IAAI,CAACwS,KAAK,CAAGxS,KACb,CAAA,IAAI,CAAC+8H,KAAK,CAACurC,aAAa,CAAG,IAAA,CAC3B,IAAI,CAACuhC,aAAa,GACpB,CACF,CACA,IAAI/5L,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC0C,KACd,CACA,IAAIgR,MAAAA,CAAOxjB,KAAK,CAAE,CAChB,IAAI,CAAC4pM,OAAO,CAACxyM,IAAI,CAAC4I,KACpB,EAAA,CACA,IAAIwjB,MAAAA,EAAS,CACX,OAAO,IAAI,CAAComL,OACd,CACA,IAAIn2C,UAAAA,CAAWzzJ,KAAK,CAAE,CACpB,GAAI,IAAI,CAACkpM,WAAW,GAAKlpM,MAAO,CAC9B,IAAI,CAACkpM,WAAW,CAAGlpM,MACnB,GAAI,IAAI,CAAC8pM,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAACr2C,UAAU,CAAGzzJ,MAC5B,CACF,CACF,CACA,IAAIyzJ,UAAa,EAAA,CACf,OAAO,IAAI,CAACy1C,WACd,CACAW,aAAgB,EAAA,CACd,MAAM1/J,OAAU,CAAA,IAAI,CAAC4yF,KAAK,CAACgtE,aAAa,EAAA,CACxC,GAAI5/J,OAAS,CAAA,CACX,IAAI,CAAC6/J,YAAY,EACjB,CAAA,IAAI,CAACF,OAAO,CAAG,IAAId,OAAQ,CAAA,IAAI,CAAC1mK,MAAM,CAAE,IAAI,CAACy6F,KAAK,CAAE,IAAI,CAAC0L,IAAI,CAAEt+F,QAAS,IAAI,CAACr6B,IAAI,CACjF,CAAA,IAAI,CAACg6L,OAAO,CAACr2C,UAAU,CAAG,IAAI,CAACy1C,WAAW,CAC1C,IAAI,CAACnsE,KAAK,CAACx7H,IAAI,CAAC,aAAc4oC,OAChC,EAAA,CACF,CACA6/J,YAAe,EAAA,CACb,IAAI,CAACF,OAAO,EAAEtoK,OACd,EAAA,CAAA,IAAI,CAACsoK,OAAO,CAAG,KACjB,CACAr+J,MAAS,EAAA,CACP,GAAI,IAAI,CAAC37B,IAAI,GAAKinH,gBAAAA,CAAkB,CAClC,KAAM,CAAEvzG,MAAM,CAAEymL,WAAW,CAAE,CAAG,IAAI,CACpC,MAAMtsI,IAAO,CAAA,IAAIrpD,KACjB,IAAI,CAACm0H,IAAI,CAACzI,iBAAiB,GAAGxjH,cAAc,CAACgH,MAAQm6C,CAAAA,IAAAA,CACrDssI,CAAAA,WAAW,CAAC,EAAE,CAAGtsI,IAAAA,CAAKjxD,CAAC,CACvBu9L,WAAW,CAAC,EAAE,CAAGtsI,IAAAA,CAAKvpD,CAAC,CACvB61L,WAAW,CAAC,CAAA,CAAE,CAAGtsI,IAAAA,CAAKppD,CAAC,CACvB,IAAI,CAAC21L,wBAAwB,CAACl6J,QAAQ,CAACi6J,WAAAA,EACzC,CACF,CAnFA7pM,YAAY28H,KAAK,CAAC,CAChB,IAAI,CAACvqH,KAAK,CAAGukH,gBACb,CAAA,IAAI,CAAC6yE,OAAO,CAAG,IAAIt1L,KAAK,CAAG,CAAA,CAAA,CAAG,EAC9B,CAAA,IAAI,CAACw1L,OAAO,CAAG,IACf,CAAA,IAAI,CAACZ,WAAW,CAAG,KACnB,CAAA,IAAI,CAACzgE,IAAI,CAAG,IAAImV,UAAU,aAC1B,CAAA,CAAA,IAAI,CAACt7G,MAAM,CAAGy6F,KAAAA,CAAMz6F,MAAM,CAC1B,IAAI,CAACy6F,KAAK,CAAGA,KACb,CAAA,IAAI,CAACv5G,MAAM,CAAG,IAAIlP,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAC7B,CAAA,IAAI,CAAC21L,WAAW,CAAG,IAAI/3L,YAAa,CAAA,CAAA,CACpC,CAAA,IAAI,CAACg4L,wBAAwB,CAAG,IAAI,CAAC5nK,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,wBAAA,EAC5D,CAyEF,CAEA,MAAMynK,iBAAoB,CAAA,IAAIvsD,SAC9BusD,CAAAA,iBAAAA,CAAkB3+K,cAAc,CAAG5Q,IAAAA,CAAKX,QAAQ,CAChDkwL,kBAAkB/qD,WAAW,CAAG+qD,kBAAkBhsD,YAAY,CAAG,KACjE,CAAMisD,MAAAA,cAAAA,CASJC,SAAS/0J,SAAS,CAAEgH,KAAK,CAAE,CACzB,MAAMguJ,OAAAA,CAAU,IAAI,CAACh1J,SAAS,CAC9B,MAAM+C,KAAAA,CAAQ/C,SAAUh9C,CAAAA,MAAM,CAC9B,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAMquJ,GAAAA,CAAMpxG,SAAS,CAACj9C,CAAAA,CAAE,CACxBiyM,OAAQnxM,CAAAA,IAAI,CAACutJ,GAAIh6I,CAAAA,CAAC,CAAEg6I,GAAAA,CAAItyI,CAAC,CAAEsyI,GAAAA,CAAInyI,CAAC,EAClC,CACA,MAAMg2L,OAAU,CAAA,IAAI,CAACroE,MAAM,CAC3B,GAAI5lF,KAAAA,CAAMhkD,MAAM,CAAE,CAChB,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAOhgD,CAAI,EAAA,CAAA,CAC5B,MAAMmyM,GAAMluJ,CAAAA,KAAK,CAACjkD,CAAE,CAAA,CACpBkyM,OAAQpxM,CAAAA,IAAI,CAACqxM,GAAI7yM,CAAAA,CAAC,CAAE6yM,GAAIt+L,CAAAA,CAAC,CAAEs+L,GAAItiM,CAAAA,CAAC,CAAEsiM,GAAIviM,CAAAA,CAAC,EACzC,CACF,CAAA,KAAO,CACL,IAAI,IAAI5P,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BkyM,OAAQpxM,CAAAA,IAAI,CAACmjD,KAAM3kD,CAAAA,CAAC,CAAE2kD,KAAMpwC,CAAAA,CAAC,CAAEowC,KAAAA,CAAMp0C,CAAC,CAAEo0C,KAAAA,CAAMr0C,CAAC,EACjD,CACF,CACF,CACAwiM,cAAAA,CAAen1J,SAAS,CAAEgH,KAAK,CAAE,CAC/B,MAAMguJ,OAAU,CAAA,IAAI,CAACh1J,SAAS,CAC9B,IAAI,IAAIj9C,EAAI,CAAGA,CAAAA,CAAAA,CAAIi9C,UAAUh9C,MAAM,CAAED,GAAK,CAAE,CAAA,CAC1CiyM,OAAQnxM,CAAAA,IAAI,CAACm8C,SAAS,CAACj9C,EAAE,CAAEi9C,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAE,CAAEi9C,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAE,EAC/D,CACA,MAAMkyM,QAAU,IAAI,CAACroE,MAAM,CAC3B,GAAI5lF,KAAMhkD,CAAAA,MAAM,CAAE,CAChB,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIikD,KAAMhkD,CAAAA,MAAM,CAAED,CAAK,EAAA,CAAA,CAAE,CACtCkyM,OAAQpxM,CAAAA,IAAI,CAACmjD,KAAK,CAACjkD,CAAE,CAAA,CAAEikD,KAAK,CAACjkD,CAAAA,CAAI,EAAE,CAAEikD,KAAK,CAACjkD,CAAI,CAAA,CAAA,CAAE,CAAEikD,KAAK,CAACjkD,CAAI,CAAA,CAAA,CAAE,EACjE,CACF,CAAA,KAAO,CACL,MAAMggD,KAAAA,CAAQ/C,SAAUh9C,CAAAA,MAAM,CAAG,CACjC,CAAA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BkyM,OAAAA,CAAQpxM,IAAI,CAACmjD,KAAAA,CAAM3kD,CAAC,CAAE2kD,KAAAA,CAAMpwC,CAAC,CAAEowC,KAAAA,CAAMp0C,CAAC,CAAEo0C,MAAMr0C,CAAC,EACjD,CACF,CACF,CACAyiM,YAAYC,WAAW,CAAE9gE,WAAW,CAAE,CACpC,GAAI,IAAI,CAACv0F,SAAS,CAACh9C,MAAM,CAAG,CAAA,EAAK,IAAI,CAAC4iI,QAAQ,CAAC2O,WAAW,GAAKA,WAAa,CAAA,CAC1E,IAAI,CAAC9H,IAAI,CAACQ,YAAY,CAAC,IAAI,CAACjtF,SAAS,EACrC,IAAI,CAACysF,IAAI,CAAC6C,SAAS,CAAC,IAAI,CAAC1C,MAAM,CAAA,CAC/B,IAAI,CAACH,IAAI,CAACt2F,MAAM,CAAC5V,eAAiB,CAAA,KAAA,CAAA,CAClC,GAAI,CAAC,IAAI,CAAConG,YAAY,CAAE,CACtB,IAAI,CAACA,YAAY,CAAG,IAAI0K,YAAa,CAAA,IAAI,CAAC5F,IAAI,CAAE,IAAI,CAAC7G,QAAQ,CAAEivE,iBACjE,EAAA,CACAQ,YAAYxxM,IAAI,CAAC,IAAI,CAAC8jI,YAAY,EACpC,CACF,CACAh8H,KAAQ,EAAA,CACN,IAAI,CAACq0C,SAAS,CAACh9C,MAAM,CAAG,CACxB,CAAA,IAAI,CAAC4pI,MAAM,CAAC5pI,MAAM,CAAG,EACvB,CA1DA8H,WAAAA,CAAYkiC,MAAM,CAAE44F,QAAQ,CAAEkC,KAAK,CAAC,CAClC,IAAI,CAAClC,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACkC,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC9nF,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC4sF,MAAM,CAAG,EAAE,CAChB,IAAI,CAACH,IAAI,CAAG,IAAIH,IAAAA,CAAKt/F,OACrB,CAAA,IAAI,CAAC26F,YAAY,CAAG,KACtB,CAoDF,CAEA,MAAM2tE,gBAAAA,CAKJC,SAAS3vE,QAAQ,CAAEkC,KAAK,CAAE,CACxB,IAAIgS,KAAQ,CAAA,IAAI,CAAClwI,GAAG,CAAC9E,GAAG,CAAC8gI,UACzB,GAAI,CAACkU,MAAO,CACVA,KAAAA,CAAQ,IAAIg7D,cAAAA,CAAe,IAAI,CAAC9nK,MAAM,CAAE44F,QAAUkC,CAAAA,KAAAA,CAAAA,CAClD,IAAI,CAACl+H,GAAG,CAAC0B,GAAG,CAACs6H,QAAUkU,CAAAA,KAAAA,EACzB,CACA,OAAOA,KACT,CACAs7D,WAAYC,CAAAA,WAAW,CAAE9gE,WAAW,CAAE,CACpC,IAAI,CAAC3qI,GAAG,CAAC8F,OAAO,CAAEoqI,QAChBA,KAAMs7D,CAAAA,WAAW,CAACC,WAAa9gE,CAAAA,WAAAA,EACjC,GACF,CACA5oI,KAAAA,EAAQ,CACN,IAAI,CAAC/B,GAAG,CAAC8F,OAAO,CAAEoqI,OAAQA,KAAMnuI,CAAAA,KAAK,IACvC,CAnBAb,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAACpjC,GAAG,CAAG,IAAIuB,IACjB,CAiBF,CAEA,MAAMqqM,UAAAA,CAAa,EAAE,CACrB,MAAM/wL,IAAM,IAAIzF,IAChB,OAAMy2L,SAgBJC,CAAAA,cAAAA,CAAex3C,SAAS,CAAE,CACxB,MAAMt4B,QAAW,CAAA,IAAImpE,cAAe,CAAA,CAClC7pE,WAAY,eACZM,CAAAA,UAAAA,CAAYjB,aAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,mBAAAA,CAAAA,CAAqBlgC,GAAG,CAAC,iBAAA,CAAA,CACnE2gI,aAAclB,YAAaz/H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,qBAAqBlgC,GAAG,CAAC,mBACrEqgI,UAAYZ,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,qBAAqBngC,GAAG,CAAC,mBACnEugI,YAAcd,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,mBAAqBngC,CAAAA,CAAAA,GAAG,CAAC,iBACrEupD,CAAAA,CAAAA,UAAAA,CAAY,CACVigB,eAAiBztC,CAAAA,iBAAAA,CACjBouC,YAAc/tC,CAAAA,cAChB,CACF,CACA0kG,CAAAA,CAAAA,SAASk4B,SAAS,CAAGhnC,YACrB8O,CAAAA,QAAAA,CAASs4B,SAAS,CAAGA,UACrBt4B,QAASzvF,CAAAA,MAAM,GACf,OAAOyvF,QACT,CACA,IAAI+vE,aAAAA,EAAgB,CAClB,GAAI,CAAC,IAAI,CAACC,cAAc,CAAE,CACxB,IAAI,CAACA,cAAc,CAAG,IAAI,CAACF,cAAc,CAAC,MAC5C,CACA,OAAO,IAAI,CAACE,cAAc,CAE5B,IAAIC,eAAkB,EAAA,CACpB,GAAI,CAAC,IAAI,CAACC,gBAAgB,CAAE,CAC1B,IAAI,CAACA,gBAAgB,CAAG,IAAI,CAACJ,cAAc,CAAC,KAC9C,EAAA,CACA,OAAO,IAAI,CAACI,gBAAgB,CAE9BP,SAASztE,KAAK,CAAEo2B,SAAS,CAAE,CACzB,IAAI63C,OAAAA,CAAU,IAAI,CAACC,UAAU,CAAClxM,GAAG,CAACgjI,OAClC,GAAI,CAACiuE,OAAS,CAAA,CACZA,QAAU,IAAIT,gBAAAA,CAAiB,IAAI,CAACtoK,MAAM,EAC1C,IAAI,CAACgpK,UAAU,CAAC1qM,GAAG,CAACw8H,KAAAA,CAAOiuE,SAC7B,CACA,IAAI,CAACE,UAAU,CAAC5iM,GAAG,CAAC0iM,OAAAA,CAAAA,CACpB,MAAMnwE,QAAWs4B,CAAAA,SAAAA,CAAY,IAAI,CAACy3C,aAAa,CAAG,IAAI,CAACE,eAAe,CACtE,OAAOE,OAAQR,CAAAA,QAAQ,CAAC3vE,QAAUkC,CAAAA,KAAAA,CACpC,CACAouE,aAAcnpK,CAAAA,EAAE,CAAE04F,YAAY,CAAEJ,YAAY,CAAE,CAC5C,GAAI,CAAC,IAAI,CAAC8wE,WAAW,CAAC9qM,GAAG,CAAC0hC,EAAK,CAAA,CAAA,CAC7B,IAAI,CAACopK,WAAW,CAAC7qM,GAAG,CAACyhC,GAAI,CACvBm4F,UAAAA,CAAY,CAAC,YAAY,EAAEn4F,GAAG,CAAC,CAC/By4F,WAAY,CAAC;;;;;;;;IAQjB,CAAC,CACGL,WAAY,CAAC;;;;;;;;;;AAUjB,IAAA,CAAC,CACGM,YAAcA,CAAAA,YAAAA,CACdJ,aAAcA,YACdh3E,CAAAA,UAAAA,CAAY,CACVigB,eAAiBztC,CAAAA,iBACnB,CACF,CACF,EAAA,CACA,OAAO,IAAI,CAACs1K,WAAW,CAACrxM,GAAG,CAACioC,EAC9B,CAAA,CACAqpK,oBAAqBpjK,CAAAA,QAAQ,CAAE,CAC7B,MAAMq8J,WAAaD,UAAWC,CAAAA,UAAU,CAACr8J,QACzC,CAAA,CAAA,OAAO,IAAI,CAACkjK,aAAa,CAAC,CAAC,cAAc,EAAEljK,QAAS,CAAA,CAAC,CAAE,CAAC;;;;;AAKrC,uBAAA,EAAEq8J,UAAW,CAAA;;;AAGlC,EAAA,CAAC,CAAE,CAAC;;;;;;;;AAQuB,6BAAA,EAAEA,UAAW,CAAA;;;;EAIxC,CAAC,CACD,CACAgH,gCAAAA,EAAmC,CACjC,OAAO,IAAI,CAACH,aAAa,CAAC,2BAAA,CAA6B,CAAC;;;;;;;AAO1D,EAAA,CAAC,CAAE,CAAC;;;;;;;;;;EAUJ,CAAC,CACD,CACAI,yBAAAA,EAA4B,CAC1B,OAAO,IAAI,CAACJ,aAAa,CAAC,oBAAA,CAAsB,CAAC;;;;;;;;AAQnD,EAAA,CAAC,CAAE,CAAC;;;;;;;;;;EAUJ,CAAC,CACD,CACAK,WAAAA,EAAc,CACZ,GAAI,CAAC,IAAI,CAACC,QAAQ,CAAE,CAClB,IAAI,CAACA,QAAQ,CAAG,IAAIlqE,IAAK,CAAA,IAAI,CAACt/F,MAAM,CACpC,CAAA,IAAI,CAACwpK,QAAQ,CAACvpE,YAAY,CAAC,CACzB,CAAC,EACD,CAAA,CAAC,EACD,CAAA,CAAA,CACA,EACA,CAAA,CAAC,EACD,CAAA,CAAA,CACA,CAAC,EAAA,CACD,EACA,CAAA,CAAA,CACA,EACA,CAAA,EAAA,CACA,CACD,CAAA,CAAA,CACD,IAAI,CAACupE,QAAQ,CAACrgK,MAAM,CAACxV,kBACvB,EAAA,CACA,OAAO,IAAI,CAAC61K,QAAQ,CAEtBC,SAAS7wE,QAAQ,CAAE1wG,MAAM,CAAEu3G,IAAI,CAAE9E,YAAY,CAAEG,KAAK,CAAE,CACpD,GAAI,CAACH,YAAAA,CAAc,CACjB,MAAM+uE,SAAY,CAAA,IAAI,CAACC,YAAY,CAACzhL,MAAAA,CAAAA,CACpCyyG,YAAe,CAAA,IAAI0K,YAAa5F,CAAAA,IAAAA,CAAM7G,QAAU8wE,CAAAA,SAAAA,EAClD,CACA,IAAIE,mBAAqB,IAAI,CAACA,kBAAkB,CAAC9xM,GAAG,CAACgjI,KACrD,CAAA,CAAA,GAAI,CAAC8uE,kBAAAA,CAAoB,CACvBA,kBAAAA,CAAqB,EAAE,CACvB,IAAI,CAACA,kBAAkB,CAACtrM,GAAG,CAACw8H,KAAO8uE,CAAAA,kBAAAA,EACrC,CACAA,kBAAAA,CAAmB/yM,IAAI,CAAC8jI,YAC1B,EAAA,CACAkvE,kBAAmBpgM,CAAAA,GAAG,CAAEC,GAAG,CAAEswC,KAAK,CAAEk3G,SAAS,CAAEp2B,KAAK,CAAEiM,GAAG,CAAE,CACzD,GAAIA,GAAK,CAAA,CACP,MAAM+iE,QAAAA,CAAW,CAAC1/L,CAAAA,CAAG0H,CAAGG,CAAAA,CAAAA,GAAAA,CACtBwF,GAAInZ,CAAAA,GAAG,CAAC8L,CAAAA,CAAG0H,CAAGG,CAAAA,CAAAA,CAAAA,CACd80H,GAAI7sH,CAAAA,cAAc,CAACzC,GAAAA,CAAKA,KACxB+wL,UAAW3xM,CAAAA,IAAI,CAAC4gB,GAAAA,CAAIrN,CAAC,CAAEqN,GAAI3F,CAAAA,CAAC,CAAE2F,GAAAA,CAAIxF,CAAC,EACrC,CACA63L,CAAAA,QAAAA,CAASrgM,GAAIW,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASrgM,GAAIW,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAErI,IAAIwI,CAAC,CAAA,CAC5B63L,QAASrgM,CAAAA,GAAAA,CAAIW,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAA,CAC5B63L,QAASpgM,CAAAA,GAAAA,CAAIU,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAA,CAC5B63L,QAASpgM,CAAAA,GAAAA,CAAIU,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAC5B63L,CAAAA,QAAAA,CAASpgM,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASpgM,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASrgM,GAAIW,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,EAC5B63L,QAASrgM,CAAAA,GAAAA,CAAIW,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAA,CAC5B63L,QAASrgM,CAAAA,GAAAA,CAAIW,CAAC,CAAEV,IAAIoI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASrgM,GAAIW,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,EAC5B63L,QAASpgM,CAAAA,GAAAA,CAAIU,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAA,CAC5B63L,QAASpgM,CAAAA,GAAAA,CAAIU,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAA,CAC5B63L,QAASpgM,CAAAA,GAAAA,CAAIU,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAA,CAC5B63L,SAASpgM,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASrgM,GAAIW,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASrgM,GAAIW,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASrgM,IAAIW,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAA,CAC5B63L,QAASrgM,CAAAA,GAAAA,CAAIW,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAA,CAC5B63L,QAASrgM,CAAAA,GAAAA,CAAIW,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAA,CAC5B63L,QAASpgM,CAAAA,GAAAA,CAAIU,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASpgM,GAAIU,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASpgM,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAC5B63L,CAAAA,QAAAA,CAASpgM,GAAIU,CAAAA,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,EAC9B,CAAO,KAAA,CACLu2L,UAAW3xM,CAAAA,IAAI,CAAC4S,GAAAA,CAAIW,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAExI,GAAIW,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAAExI,GAAAA,CAAIW,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAAEvI,GAAAA,CAAIU,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAEvI,GAAIU,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAAEvI,GAAAA,CAAIU,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAAEvI,GAAAA,CAAIU,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAExI,GAAIW,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAAExI,GAAAA,CAAIW,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAExI,IAAIW,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAExI,GAAIW,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAEpI,IAAIuI,CAAC,CAAEvI,GAAIU,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAAEvI,GAAAA,CAAIU,CAAC,CAAEV,IAAIoI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAAEvI,GAAAA,CAAIU,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAEvI,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAAExI,GAAAA,CAAIW,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAExI,GAAAA,CAAIW,CAAC,CAAEX,GAAIqI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAExI,GAAIW,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,CAAExI,GAAAA,CAAIW,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAErI,GAAAA,CAAIwI,CAAC,CAAExI,GAAIW,CAAAA,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAEvI,GAAIU,CAAAA,CAAC,CAAEV,GAAAA,CAAIoI,CAAC,CAAErI,GAAIwI,CAAAA,CAAC,CAAEvI,GAAAA,CAAIU,CAAC,CAAEV,GAAIoI,CAAAA,CAAC,CAAEpI,GAAAA,CAAIuI,CAAC,CAAEvI,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAErI,IAAIwI,CAAC,CAAEvI,GAAIU,CAAAA,CAAC,CAAEX,GAAAA,CAAIqI,CAAC,CAAEpI,GAAIuI,CAAAA,CAAC,EACxgB,CACA,MAAM66H,KAAAA,CAAQ,IAAI,CAACy7D,QAAQ,CAACztE,KAAOo2B,CAAAA,SAAAA,CAAAA,CACnCpkB,KAAMq7D,CAAAA,cAAc,CAACK,UAAAA,CAAYxuJ,KACjCwuJ,CAAAA,CAAAA,UAAWxyM,CAAAA,MAAM,CAAG,EACtB,CACA+zM,cAAe7oL,CAAAA,MAAM,CAAE3P,MAAM,CAAEyoC,KAAK,CAAEgwJ,WAAW,CAAE94C,SAAS,CAAEp2B,KAAK,CAAE,CACnE,MAAMjrH,IAAAA,CAAO,CAAIva,CAAAA,IAAAA,CAAKgU,EAAE,CAAG0gM,WAC3B,CAAA,IAAIp4L,KAAQ,CAAA,CAAA,CACZ,IAAI,IAAI7b,CAAI,CAAA,CAAA,CAAGA,CAAIi0M,CAAAA,WAAAA,CAAaj0M,IAAI,CAClC,MAAMk0M,IAAO30M,CAAAA,IAAAA,CAAKyc,GAAG,CAACH,KACtB,CAAA,CAAA,MAAMs4L,IAAO50M,CAAAA,IAAAA,CAAKuc,GAAG,CAACD,KACtBA,CAAAA,CAAAA,KAAAA,EAAS/B,IACT,CAAA,MAAMs6L,IAAO70M,CAAAA,IAAAA,CAAKyc,GAAG,CAACH,KACtB,CAAA,CAAA,MAAMw4L,IAAO90M,CAAAA,IAAAA,CAAKuc,GAAG,CAACD,KACtB42L,CAAAA,CAAAA,UAAAA,CAAW3xM,IAAI,CAACqqB,OAAO9W,CAAC,CAAGmH,MAAS04L,CAAAA,IAAAA,CAAM/oL,MAAOpP,CAAAA,CAAC,CAAEoP,MAAAA,CAAOjP,CAAC,CAAGV,MAAS24L,CAAAA,IAAAA,CAAAA,CACxE1B,UAAW3xM,CAAAA,IAAI,CAACqqB,MAAAA,CAAO9W,CAAC,CAAGmH,MAAS44L,CAAAA,IAAAA,CAAMjpL,MAAOpP,CAAAA,CAAC,CAAEoP,MAAAA,CAAOjP,CAAC,CAAGV,MAAS64L,CAAAA,IAAAA,CAAAA,CACxE5B,UAAW3xM,CAAAA,IAAI,CAACqqB,MAAO9W,CAAAA,CAAC,CAAGmH,MAAAA,CAAS04L,IAAM/oL,CAAAA,MAAAA,CAAOpP,CAAC,CAAGP,MAAS24L,CAAAA,IAAAA,CAAMhpL,MAAOjP,CAAAA,CAAC,CAC5Eu2L,CAAAA,UAAAA,CAAW3xM,IAAI,CAACqqB,MAAO9W,CAAAA,CAAC,CAAGmH,MAAAA,CAAS44L,IAAMjpL,CAAAA,MAAAA,CAAOpP,CAAC,CAAGP,MAAS64L,CAAAA,IAAAA,CAAMlpL,MAAOjP,CAAAA,CAAC,CAC5Eu2L,CAAAA,UAAAA,CAAW3xM,IAAI,CAACqqB,MAAAA,CAAO9W,CAAC,CAAE8W,MAAOpP,CAAAA,CAAC,CAAGP,MAAAA,CAAS04L,IAAM/oL,CAAAA,MAAAA,CAAOjP,CAAC,CAAGV,MAAS24L,CAAAA,IAAAA,CAAAA,CACxE1B,UAAW3xM,CAAAA,IAAI,CAACqqB,MAAAA,CAAO9W,CAAC,CAAE8W,MAAOpP,CAAAA,CAAC,CAAGP,MAAAA,CAAS44L,IAAMjpL,CAAAA,MAAAA,CAAOjP,CAAC,CAAGV,MAAS64L,CAAAA,IAAAA,EAC1E,CACA,MAAMt9D,KAAAA,CAAQ,IAAI,CAACy7D,QAAQ,CAACztE,KAAOo2B,CAAAA,SAAAA,CAAAA,CACnCpkB,KAAMq7D,CAAAA,cAAc,CAACK,UAAAA,CAAYxuJ,KACjCwuJ,CAAAA,CAAAA,UAAWxyM,CAAAA,MAAM,CAAG,EACtB,CACA2zM,YAAAA,CAAazhL,MAAM,CAAE,CACnB,MAAMwhL,SAAY,CAAA,IAAIpuD,SAAU,CAAA,gBAAA,CAChCouD,CAAAA,SAAAA,CAAUxgL,cAAc,CAAGhB,MAC3BwhL,CAAAA,SAAAA,CAAU5sD,WAAW,CAAG4sD,SAAU7tD,CAAAA,YAAY,CAAG,KAAA,CACjD,OAAO6tD,SACT,CACA35B,gBAAAA,CAAiBj1C,KAAK,CAAEutE,WAAW,CAAE9gE,WAAW,CAAE,CAChD,IAAI,CAACyhE,UAAU,CAACtmM,OAAO,CAAC,CAACqmM,OAASsB,CAAAA,UAAAA,GAAAA,CAChC,GAAIA,UAAevvE,GAAAA,KAAAA,CAAO,CACxBiuE,OAAAA,CAAQX,WAAW,CAACC,WAAa9gE,CAAAA,WAAAA,EACnC,CACF,CAAA,CAAA,CACA,GAAI,CAAC,IAAI,CAAC+iE,aAAa,CAACjsM,GAAG,CAACy8H,KAAQ,CAAA,CAAA,CAClC,IAAI,CAACwvE,aAAa,CAACjkM,GAAG,CAACy0H,KACvB,CAAA,CAAA,MAAMQ,aAAgB,CAAA,IAAI,CAACsuE,kBAAkB,CAAC9xM,GAAG,CAACgjI,KAClD,CAAA,CAAA,GAAIQ,aAAe,CAAA,CACjB,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3CsyM,WAAYxxM,CAAAA,IAAI,CAACykI,aAAa,CAACvlI,CAAAA,CAAE,EACnC,CACAulI,aAActlI,CAAAA,MAAM,CAAG,EACzB,CACF,CACF,CACAu0M,YAAe,EAAA,CACb,IAAI,CAACtB,UAAU,CAACvmM,OAAO,CAAC,KAACoqI,EAAQA,KAAMnuI,CAAAA,KAAK,EAC5C,CAAA,CAAA,IAAI,CAACsqM,UAAU,CAACtqM,KAAK,EACrB,CAAA,IAAI,CAAC2rM,aAAa,CAAC3rM,KAAK,GAC1B,CA9QAb,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACmpK,WAAW,CAAG,IAAIhrM,GACvB,CAAA,IAAI,CAAC6hC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACwpK,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACgB,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC3B,UAAU,CAAG,IAAI7qM,GACtB,CAAA,IAAI,CAAC8qM,UAAU,CAAG,IAAIngM,GACtB,CAAA,IAAI,CAACwhM,aAAa,CAAG,IAAIxhM,GACzB,CAAA,IAAI,CAAC8/L,cAAc,CAAG,IACtB,CAAA,IAAI,CAACE,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACc,kBAAkB,CAAG,IAAIzrM,IAChC,CAiQF,CAEA,MAAMysM,YAAAA,CAAe,iBACrB,CAAA,MAAMr1M,MAAS,CAAA,CACbs1M,YAAal5L,KAAK,CAAA,CAChB,MAAMtc,CAAAA,CAAIC,IAAKud,CAAAA,IAAI,CAACvd,IAAAA,CAAKC,MAAM,EAAA,CAAA,CAC/B,MAAMowM,KAAAA,CAAQrwM,IAAKC,CAAAA,MAAM,EAAK,CAAA,CAAA,CAAID,IAAKgU,CAAAA,EAAE,CACzCqI,KAAMvH,CAAAA,CAAC,CAAG/U,CAAAA,CAAIC,IAAKuc,CAAAA,GAAG,CAAC8zL,KAAAA,CACvBh0L,CAAAA,KAAAA,CAAMG,CAAC,CAAGzc,CAAAA,CAAIC,IAAKyc,CAAAA,GAAG,CAAC4zL,KAAAA,EACzB,CACAmF,CAAAA,wBAAAA,CAA0Bn5L,KAAK,CAAE/V,KAAK,CAAEuV,SAAS,CAAA,CAC/C,MAAMw0L,KAAAA,CAAQ/pM,KAAQgvM,CAAAA,YAAAA,CACtB,MAAMv1M,CAAAA,CAAIC,IAAKud,CAAAA,IAAI,CAACjX,KAAAA,CAAAA,CAAStG,IAAKud,CAAAA,IAAI,CAAC1B,SAAAA,CACvCQ,CAAAA,KAAAA,CAAMvH,CAAC,CAAG/U,CAAAA,CAAIC,IAAKuc,CAAAA,GAAG,CAAC8zL,KAAAA,CACvBh0L,CAAAA,KAAAA,CAAMG,CAAC,CAAGzc,CAAIC,CAAAA,IAAAA,CAAKyc,GAAG,CAAC4zL,KACzB,EAAA,CAAA,CACAoF,wBAA0Bp5L,CAAAA,KAAK,CAAE/V,KAAK,CAAEuV,SAAS,CAAEqW,KAAAA,CAAQ,CAAC,CAAE/rB,GAAM,CAAA,CAAC,CACnE+rB,CAAAA,KAAAA,CAAQ,EAAI,CAAIA,CAAAA,KAAAA,CAChB/rB,GAAM,CAAA,CAAA,CAAI,CAAIA,CAAAA,GAAAA,CACd,MAAMqW,CAAAA,CAAI1I,IAAKY,CAAAA,IAAI,CAACwd,KAAAA,CAAO/rB,GAAKG,CAAAA,KAAAA,CAAQuV,SACxC,CAAA,CAAA,MAAMI,MAASjc,CAAAA,IAAAA,CAAKud,IAAI,CAAC,CAAIf,CAAAA,CAAAA,CAAIA,CACjC,CAAA,CAAA,MAAM6zL,KAAQiF,CAAAA,YAAAA,CAAehvM,KAC7B+V,CAAAA,KAAMvH,CAAAA,CAAC,CAAG9U,IAAKuc,CAAAA,GAAG,CAAC8zL,KAAAA,CAAAA,CAASp0L,MAC5BI,CAAAA,KAAMG,CAAAA,CAAC,CAAGA,CACVH,CAAAA,KAAAA,CAAMM,CAAC,CAAG3c,IAAKyc,CAAAA,GAAG,CAAC4zL,KAAAA,CAAAA,CAASp0L,OAC9B,CAAA,CACAy5L,cAAgBj1M,CAAAA,CAAC,CACf,CAAA,IAAI6a,IAAO,CAAC7a,CAAAA,CAAAA,EAAK,EAAKA,CAAAA,CAAAA,GAAM,EAAC,IAAO,CAAA,CACpC6a,IAAO,CAAC,CAACA,CAAAA,IAAAA,CAAO,UAAS,GAAM,CAAI,CAACA,CAAAA,IAAAA,CAAO,UAAS,IAAO,CAAA,IAAO,CAClEA,CAAAA,IAAAA,CAAO,CAAC,CAACA,IAAO,CAAA,SAAS,GAAM,CAAA,CAAI,CAACA,KAAO,UAAS,IAAO,CAAA,IAAO,CAClEA,CAAAA,IAAAA,CAAO,CAAC,CAACA,IAAO,CAAA,SAAS,GAAM,CAAA,CAAI,CAACA,IAAO,CAAA,UAAS,IAAO,CAAA,IAAO,CAAA,CAClEA,IAAO,CAAC,CAACA,CAAAA,IAAAA,CAAO,QAAS,GAAM,EAAI,CAACA,IAAO,CAAA,UAAS,IAAO,CAAA,IAAO,CAAA,CAClE,OAAOA,IAAAA,CAAO,qBAChB,CACF,CAEA,CAAA,MAAMq6L,iBAAoB,CAAC3jK,UACzB,EAAA,CAAA,OAAOA,UACL,EAAA,KAAKzP,sBACH,CAAA,OAAO,SACT,CAAA,KAAKE,4BACH,CAAA,OAAO,YACT,CAAA,QACE,OAAO,UACX,CACF,CACA,CAAA,MAAMmzK,kBAAqB,CAAA,CAACxtM,KAAO0nC,CAAAA,KAAAA,CAAO3hC,MACxC,GAAA,CAAA,GAAI/F,KAAS,EAAA,CAAA,CAAG,CACd0nC,KAAK,CAAC3hC,MAAAA,CAAS,CAAE,CAAA,CAAG,CACpB2hC,CAAAA,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CAAG,CACpB2hC,CAAAA,KAAK,CAAC3hC,MAAAA,CAAS,CAAE,CAAA,CAAG,CACpB2hC,CAAAA,KAAK,CAAC3hC,MAAAA,CAAS,CAAE,CAAA,CAAG,EACtB,CAAA,KAAO,GAAI/F,KAAAA,EAAS,CAAK,CAAA,CACvB0nC,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CAAG,GACpB2hC,CAAAA,KAAK,CAAC3hC,MAAAA,CAAS,CAAE,CAAA,CAAG,CACpB2hC,CAAAA,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CAAG,CACpB2hC,CAAAA,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CAAG,EACtB,CAAO,KAAA,CACL,IAAIykL,IAAAA,CAAO,CAAIxqL,CAAAA,KAAAA,CAAQ,CACvB,CAAA,IAAIyqL,IAAO,CAAA,GAAA,CAAMzqL,KAAQ,CAAA,CAAA,CACzB,IAAI0qL,IAAAA,CAAO,KAAQ1qL,CAAAA,KAAAA,CAAQ,CAC3B,CAAA,MAAM2qL,IAAO,CAAA,QAAA,CAAa3qL,KAAQ,CAAA,CAAA,CAClCwqL,MAAQC,IAAO,CAAA,GAAA,CACfA,IAAQC,EAAAA,IAAAA,CAAO,GACfA,CAAAA,IAAAA,EAAQC,IAAO,CAAA,GACfjjJ,CAAAA,KAAK,CAAC3hC,MAAAA,CAAS,CAAE,CAAA,CAAGnO,IAAKmU,CAAAA,GAAG,CAAC,GAAA,CAAKnU,IAAKmQ,CAAAA,KAAK,CAACyiL,IAAAA,CAAO,GACpD9iJ,CAAAA,CAAAA,CAAAA,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CAAGnO,IAAAA,CAAKmU,GAAG,CAAC,GAAA,CAAKnU,IAAKmQ,CAAAA,KAAK,CAAC0iL,IAAAA,CAAO,GACpD/iJ,CAAAA,CAAAA,CAAAA,KAAK,CAAC3hC,MAAS,CAAA,CAAA,CAAE,CAAGnO,IAAAA,CAAKmU,GAAG,CAAC,GAAKnU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC2iL,IAAO,CAAA,GAAA,CAAA,CACpDhjJ,CAAAA,KAAK,CAAC3hC,MAAAA,CAAS,CAAE,CAAA,CAAGnO,IAAKmU,CAAAA,GAAG,CAAC,GAAKnU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC4iL,IAAO,CAAA,GAAA,CAAA,EACtD,CACF,CAAA,CACA,MAAM8iB,WAAAA,CAAc,OAACvyJ,EAAAA,CACnB,MAAM25F,UAAAA,CAAa35F,OAAQ5iD,CAAAA,MAAM,CACjC,MAAMsf,CAAIhgB,CAAAA,IAAAA,CAAKmU,GAAG,CAAC8oI,UAAY,CAAA,GAAA,CAAA,CAC/B,MAAM/oH,CAAAA,CAAIl0B,IAAK0V,CAAAA,IAAI,CAACunI,UAAAA,CAAaj9H,GACjC,MAAMvF,IAAAA,CAAO,IAAIjN,UAAAA,CAAWwS,CAAIkU,CAAAA,CAAAA,CAAI,CACpC,CAAA,CAAA,IAAIxsB,GAAM,CAAA,CAAA,CACV,IAAI,IAAIjH,CAAI,CAAA,CAAA,CAAGA,EAAIw8I,UAAYx8I,CAAAA,CAAAA,EAAK,CAAE,CAAA,CACpCm1M,kBAAmBtyJ,CAAAA,OAAO,CAAC7iD,CAAAA,CAAI,CAAE,CAAA,CAAG,EAAM,CAAA,EAAA,CAAKga,IAAM/S,CAAAA,GAAAA,CAAM,GAC3DkuM,kBAAmBtyJ,CAAAA,OAAO,CAAC7iD,CAAAA,CAAI,CAAE,CAAA,CAAG,EAAM,CAAA,EAAA,CAAKga,IAAM/S,CAAAA,GAAAA,CAAM,CAC3DkuM,CAAAA,CAAAA,kBAAAA,CAAmBtyJ,OAAO,CAAC7iD,CAAI,CAAA,CAAA,CAAE,CAAG,EAAA,CAAM,EAAKga,CAAAA,IAAAA,CAAM/S,GAAM,CAAA,CAAA,CAAA,CAC3DkuM,kBAAmBtyJ,CAAAA,OAAO,CAAC7iD,CAAAA,CAAI,CAAE,CAAA,CAAG,CAAGga,CAAAA,IAAAA,CAAM/S,IAAM,EACnDA,CAAAA,CAAAA,GAAAA,EAAO,GACT,CACA,OAAO,CACL0e,KAAOpG,CAAAA,CAAAA,CACPqG,MAAQ6N,CAAAA,CAAAA,CACRzZ,IAAMA,CAAAA,IACR,CACF,CAAA,CACA,MAAMq7L,qBAAAA,CAAwB,CAACC,MAAAA,CAAQjhM,CAAG0H,CAAAA,CAAAA,CAAGw5L,aAC3C,GAAA,CAAA,MAAMvF,GAAMj0L,CAAAA,CAAAA,CAAI,CAAIxc,CAAAA,IAAAA,CAAKgU,EAAE,CAC3B,MAAMu8L,QAAAA,CAAWvwM,KAAKkV,GAAG,CAAC,CAAIJ,CAAAA,CAAAA,CAAG,CAAKkhM,EAAAA,aAAgB,CAAA,CAAA,CACtD,CAAA,CAAA,MAAM1F,QAAWtwM,CAAAA,IAAAA,CAAKud,IAAI,CAAC,CAAIgzL,CAAAA,QAAAA,CAAWA,QAC1CwF,CAAAA,CAAAA,MAAAA,CAAO/sM,GAAG,CAAChJ,IAAKuc,CAAAA,GAAG,CAACk0L,GAAAA,CAAAA,CAAOH,QAAUtwM,CAAAA,IAAAA,CAAKyc,GAAG,CAACg0L,GAAOH,CAAAA,CAAAA,QAAAA,CAAUC,UAAU1vM,SAAS,GACpF,CACA,CAAA,MAAMo1M,uBAA0B,CAAA,CAACF,MAAQjhM,CAAAA,CAAAA,CAAG0H,CAC1C,GAAA,CAAA,MAAMi0L,GAAMj0L,CAAAA,CAAAA,CAAI,CAAIxc,CAAAA,IAAAA,CAAKgU,EAAE,CAC3B,MAAMu8L,QAAAA,CAAWvwM,IAAKud,CAAAA,IAAI,CAAC,CAAA,CAAIzI,CAC/B,CAAA,CAAA,MAAMw7L,QAAWtwM,CAAAA,IAAAA,CAAKud,IAAI,CAACzI,CAC3BihM,CAAAA,CAAAA,MAAAA,CAAO/sM,GAAG,CAAChJ,IAAAA,CAAKuc,GAAG,CAACk0L,GAAOH,CAAAA,CAAAA,QAAAA,CAAUtwM,IAAKyc,CAAAA,GAAG,CAACg0L,GAAAA,CAAAA,CAAOH,QAAUC,CAAAA,QAAAA,CAAAA,CAAU1vM,SAAS,GACpF,CACA,CAAA,MAAMq1M,mBAAsB,CAAA,CAACH,MAAQjhM,CAAAA,CAAAA,CAAG0H,CAAGnM,CAAAA,CAAAA,GAAAA,CACzC,MAAMogM,GAAAA,CAAMj0L,CAAI,CAAA,CAAA,CAAIxc,IAAKgU,CAAAA,EAAE,CAC3B,MAAMu8L,SAAWvwM,IAAKud,CAAAA,IAAI,CAAE,CAAA,CAAA,CAAIzI,CAAAA,GAAM,CAAA,CAAI,CAACzE,CAAIA,CAAAA,CAAAA,CAAI,CAAA,EAAKyE,CAAAA,CAAAA,CAAAA,CACxD,MAAMw7L,QAAAA,CAAWtwM,IAAKud,CAAAA,IAAI,CAAC,CAAA,CAAIgzL,QAAWA,CAAAA,QAAAA,CAAAA,CAC1CwF,MAAO/sM,CAAAA,GAAG,CAAChJ,IAAAA,CAAKuc,GAAG,CAACk0L,GAAAA,CAAAA,CAAOH,QAAUtwM,CAAAA,IAAAA,CAAKyc,GAAG,CAACg0L,GAAOH,CAAAA,CAAAA,QAAAA,CAAUC,QAAU1vM,CAAAA,CAAAA,SAAS,GACpF,CAAA,CACA,MAAMs1M,KAAAA,CAAQ,CAACC,GAAAA,CAAKC,eAClB,GAAA,CAAA,MAAMhmM,CAAI+lM,CAAAA,GAAAA,CAAMC,eAChB,CAAA,MAAMt0E,CAAIs0E,CAAAA,eAAAA,EAAmB,CAAA,CAAMD,GAAMA,CAAAA,GAAAA,CAAM/lM,CAAIA,CAAAA,CAAAA,EACnD,OAAO0xH,CAAAA,CAAIA,CAAK,EAAA,CAAI/hI,CAAAA,IAAAA,CAAKgU,EAAC,CAC5B,CAAA,CACA,MAAMsiM,oBAAAA,CAAuB,CAACr5D,UAAAA,CAAY+4D,aACxC,GAAA,CAAA,MAAMO,CAAI,CAAA,IAAI75L,IACd,CAAA,MAAMlc,MAAS,CAAA,EAAE,CACjB,IAAI,IAAIC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIw8I,UAAY,CAAA,EAAEx8I,EAAE,CACjCq1M,qBAAAA,CAAsBS,CAAG91M,CAAAA,CAAAA,CAAIw8I,UAAYh9I,CAAAA,MAAAA,CAAOy1M,cAAc,CAACj1M,CAAIu1M,CAAAA,CAAAA,aAAAA,CAAAA,CACnEx1M,MAAOe,CAAAA,IAAI,CAACg1M,CAAAA,CAAEzhM,CAAC,CAAEyhM,CAAE/5L,CAAAA,CAAC,CAAE+5L,CAAAA,CAAE55L,CAAC,CAAE,CAC7B,EAAA,CACA,OAAOnc,MACT,CACA,CAAA,MAAMg2M,sBAAyB,CAAA,CAACv5D,WAAYw5D,iBAC1C,GAAA,CAAA,MAAMC,eAAkBD,CAAAA,iBAAAA,CAAoBx5D,UAC5C,CAAA,MAAMs5D,CAAI,CAAA,IAAI75L,IACd,CAAA,MAAMlc,MAAS,CAAA,EAAE,CACjB,IAAI,IAAIC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIw8I,UAAY,CAAA,EAAEx8I,CAAE,CAAA,CACjCw1M,uBAAwBM,CAAAA,CAAAA,CAAG91M,CAAIw8I,CAAAA,UAAAA,CAAYh9I,MAAOy1M,CAAAA,cAAc,CAACj1M,CAAAA,CAAAA,CAAAA,CACjE,MAAMk2M,GAAMJ,CAAAA,CAAAA,CAAE55L,CAAC,CAAG3c,IAAKgU,CAAAA,EAAE,CACzB,MAAMu3B,QAAW,CAAA,EAAA,CAAMvrC,IAAKoV,CAAAA,IAAI,CAACshM,eAAAA,CAAkBC,GACnDn2M,CAAAA,CAAAA,MAAAA,CAAOe,IAAI,CAACg1M,CAAEzhM,CAAAA,CAAC,CAAEyhM,CAAAA,CAAE/5L,CAAC,CAAE+5L,CAAE55L,CAAAA,CAAC,CAAE4uB,QAAAA,EAC7B,CACA,OAAO/qC,MACT,CACA,CAAA,MAAMo2M,kBAAqB,CAAA,CACzB,IAAM,CAAA,CACJ,GAAK,CAAA,EAAA,CACL,GAAK,CAAA,EAAA,CACL,IAAM,CAAA,EAAA,CACN,KAAO,CAAA,EAAA,CACP,KAAO,CAAA,EACT,CACA,CAAA,IAAA,CAAM,CACJ,GAAA,CAAK,EACL,CAAA,GAAA,CAAK,EACL,CAAA,IAAA,CAAM,EACN,CAAA,KAAA,CAAO,EACP,CAAA,KAAA,CAAO,EACT,CAAA,CACA,MAAO,CACL,GAAA,CAAK,GACL,CAAA,GAAA,CAAK,GACL,CAAA,IAAA,CAAM,GACN,CAAA,KAAA,CAAO,GACP,CAAA,KAAA,CAAO,GACT,CAAA,CACA,MAAQ,CAAA,CACN,GAAK,CAAA,IAAA,CACL,GAAK,CAAA,IAAA,CACL,IAAM,CAAA,IAAA,CACN,KAAO,CAAA,IAAA,CACP,KAAO,CAAA,IACT,CACF,CAAA,CACA,MAAMC,qBAAAA,CAAwB,CAAC55D,UAAAA,CAAY+4D,iBACzC,MAAMc,KAAAA,CAAQF,kBAAkB,CAAC35D,UAAW,CAAA,CAC5C,OAAO65D,KAAAA,EAASA,KAAK,CAACd,aAAc,CAAA,EAAI/4D,UAC1C,CAAA,CACA,MAAM85D,kBAAAA,CAAqB,CAAC95D,UAAAA,CAAY+4D,aAAeS,CAAAA,iBAAAA,GAAAA,CACrD,MAAMC,eAAAA,CAAkBD,iBAAoBx5D,CAAAA,UAAAA,CAC5C,MAAM+5D,SAAAA,CAAY,CAAIh3M,CAAAA,IAAAA,CAAKoV,IAAI,CAAC4gM,eAAiB,EACjD,CAAA,MAAM3lM,CAAI2mM,CAAAA,SAAAA,CAAYA,SACtB,CAAA,MAAMT,CAAI,CAAA,IAAI75L,IACd,CAAA,MAAMu6L,CAAI,CAAA,IAAIv6L,IACd,CAAA,MAAMw6L,CAAI,CAAA,IAAIx6L,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACzB,MAAMlc,MAAAA,CAAS,EAAE,CACjB,MAAM22M,eAAAA,CAAkBN,qBAAsB55D,CAAAA,UAAAA,CAAY+4D,aAC1D,CAAA,CAAA,IAAI,IAAIv1M,CAAI,CAAA,CAAA,CAAGA,CAAI02M,CAAAA,eAAAA,CAAiB,EAAE12M,CAAAA,CAAE,CACtCy1M,mBAAAA,CAAoBK,CAAG91M,CAAAA,CAAAA,CAAI02M,eAAiBl3M,CAAAA,MAAAA,CAAOy1M,cAAc,CAACj1M,GAAI4P,CACtE,CAAA,CAAA,MAAM+lM,GAAMG,CAAAA,CAAAA,CAAE55L,CAAC,CACfs6L,CAAEjuM,CAAAA,GAAG,CAACutM,CAAAA,CAAEzhM,CAAC,CAAEyhM,CAAE/5L,CAAAA,CAAC,CAAE+5L,CAAE55L,CAAAA,CAAC,CAAEpG,CAAAA,SAAS,CAAC,CAAA,CAAI6/L,GAAK/3L,CAAAA,CAAAA,GAAG,CAAC64L,CAAAA,CAAAA,CAC5C,GAAID,CAAAA,CAAEt6L,CAAC,CAAG,CAAG,CAAA,CACX,MAAMg6L,GAAAA,CAAMR,KAAMn2M,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,CAAGiiM,CAAAA,GAAAA,CAAAA,CAAM/lM,CAAK,CAAA,CAAA,CAAA,CAAI,IAC7C,CAAA,MAAMk7B,QAAW,CAAA,EAAA,CAAMvrC,KAAKoV,IAAI,CAACshM,eAAkBC,CAAAA,GAAAA,CAAAA,CACnDn2M,MAAOe,CAAAA,IAAI,CAAC01M,CAAAA,CAAEniM,CAAC,CAAEmiM,CAAEz6L,CAAAA,CAAC,CAAEy6L,CAAAA,CAAEt6L,CAAC,CAAE4uB,QAC7B,EAAA,CACF,CACA,MAAM/qC,MAAOE,CAAAA,MAAM,CAAGu8I,UAAAA,CAAa,CAAE,CAAA,CACnCz8I,MAAOe,CAAAA,IAAI,CAAC,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,EACvB,CACA,OAAOf,MACT,CAAA,CACA,MAAM42M,gBAAAA,CAAmB,CAAC1sK,MAAAA,CAAQ3mC,IAAMu/C,CAAAA,OAAAA,GAAAA,CACtC,MAAM+zJ,aAAAA,CAAgBxB,WAAYvyJ,CAAAA,OAAAA,CAAAA,CAClC,OAAO,IAAIlX,OAAQ1B,CAAAA,MAAAA,CAAQ,CACzB3mC,IAAAA,CAAMA,IACNqiB,CAAAA,KAAAA,CAAOixL,aAAcjxL,CAAAA,KAAK,CAC1BC,MAAAA,CAAQgxL,aAAchxL,CAAAA,MAAM,CAC5B4lB,OAAS,CAAA,KAAA,CACTkC,SAAWzW,CAAAA,cAAAA,CACX4W,SAAW5W,CAAAA,cAAAA,CACXwZ,MAAQ,CAAA,CACNmmK,aAAc58L,CAAAA,IAAI,CAEtB,CACF,CAAA,CACA,CAAM68L,MAAAA,WAAAA,CAKJ1tK,OAAU,EAAA,CACR,GAAI,IAAI,CAAC2tK,cAAc,CAAE,CACvB,IAAI,CAACjwM,GAAG,CAAC8F,OAAO,CAAC,CAAChF,KAAOE,CAAAA,GAAAA,GAAAA,CACvBF,KAAMwhC,CAAAA,OAAO,GACf,CAAA,EACF,CACF,CACApnC,GAAI8F,CAAAA,GAAG,CAAEkvM,QAAQ,CAAE,CACjB,GAAI,CAAC,IAAI,CAAClwM,GAAG,CAACyB,GAAG,CAACT,GAAM,CAAA,CAAA,CACtB,MAAM9H,MAAAA,CAASg3M,QACf,EAAA,CAAA,IAAI,CAAClwM,GAAG,CAAC0B,GAAG,CAACV,GAAK9H,CAAAA,MAAAA,CAAAA,CAClB,OAAOA,MACT,CACA,OAAO,IAAI,CAAC8G,GAAG,CAAC9E,GAAG,CAAC8F,GACtB,CAAA,CAlBAE,WAAY+uM,CAAAA,cAAAA,CAAiB,IAAI,CAAC,CAChC,IAAI,CAACjwM,GAAG,CAAG,IAAIuB,GACf,CAAA,IAAI,CAAC0uM,cAAc,CAAGA,eACxB,CAgBF,CACA,MAAME,YAAAA,CAAe,IAAIH,WAAAA,CAAY,KACrC,CAAA,CAAA,MAAMI,aAAgB,CAAA,IAAIzsK,WAC1B,CAAA,MAAM0sK,gBAAmB,CAAA,CAACjtK,MAAQpiC,CAAAA,GAAAA,CAAKsvM,aACrC,GAAA,CAAA,MAAMllK,KAAQglK,CAAAA,aAAAA,CAAcl1M,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CACtC,OAAO,IAAI4sK,WACb,CAAA,CAAA,CACA,OAAO5kK,KAAMlwC,CAAAA,GAAG,CAAC8F,GAAAA,CAAK,IACpB,CAAA,OAAO8uM,gBAAiB1sK,CAAAA,MAAAA,CAAQpiC,GAAKmvM,CAAAA,YAAAA,CAAaj1M,GAAG,CAAC8F,GAAKsvM,CAAAA,aAAAA,CAAAA,CAC7D,EACF,CACA,CAAA,MAAMC,yBAA4B,CAAA,CAACntK,MAAQuyG,CAAAA,UAAAA,CAAYw5D,iBACrD,GAAA,CAAA,MAAMnuM,GAAM,CAAA,CAAC,gBAAgB,EAAE20I,UAAW,CAAA,CAAC,EAAEw5D,iBAAkB,CAAA,CAAC,CAChE,OAAOkB,gBAAiBjtK,CAAAA,MAAAA,CAAQpiC,GAAK,CAAA,IAAA,CACnC,OAAOkuM,sBAAAA,CAAuBv5D,UAAYw5D,CAAAA,iBAAAA,CAC5C,CACF,CAAA,CAAA,CACA,MAAMqB,uBAAAA,CAA0B,CAACptK,MAAAA,CAAQuyG,UAAY+4D,CAAAA,aAAAA,GAAAA,CACnD,MAAM1tM,GAAAA,CAAM,CAAC,cAAc,EAAE20I,UAAAA,CAAW,CAAC,EAAE+4D,aAAc,CAAA,CAAC,CAC1D,OAAO2B,gBAAAA,CAAiBjtK,MAAQpiC,CAAAA,GAAAA,CAAK,IACnC,CAAA,OAAOguM,oBAAqBr5D,CAAAA,UAAAA,CAAY+4D,aAC1C,CAAA,CAAA,CACF,CACA,CAAA,MAAM+B,qBAAwB,CAAA,CAACrtK,MAAQuyG,CAAAA,UAAAA,CAAY+4D,aAAeS,CAAAA,iBAAAA,GAAAA,CAChE,MAAMnuM,GAAAA,CAAM,CAAC,YAAY,EAAE20I,UAAAA,CAAW,CAAC,EAAE+4D,aAAc,CAAA,CAAC,EAAES,iBAAAA,CAAkB,CAAC,CAC7E,OAAOkB,gBAAiBjtK,CAAAA,MAAAA,CAAQpiC,GAAK,CAAA,IAAA,CACnC,OAAOyuM,kBAAAA,CAAmB95D,UAAY+4D,CAAAA,aAAAA,CAAeS,iBACvD,CAAA,CAAA,CACF,CACA,CAAA,SAASuB,gBAAiB3mK,CAAAA,MAAM,CAAEhyC,MAAM,CAAE6S,OAAAA,CAAU,EAAE,CACpD,CAAA,MAAM+lM,UAAa/lM,CAAAA,OAAAA,CAAQ+lM,UAAU,EAAI,CACzC,CAAA,MAAMC,WAAa,CAAChmM,OAAQgwC,CAAAA,IAAI,EAAEvlC,CAAAA,EAAKtd,MAAO+mB,CAAAA,KAAK,EAAI6xL,UAAa,CAAA,CAAA,CACpE,MAAME,WAAAA,CAAc,CAACjmM,OAAQgwC,CAAAA,IAAI,EAAEliC,CAAAA,EAAK3gB,MAAOgnB,CAAAA,MAAM,EAAI4xL,UAAa,CAAA,CAAA,CACtE,GAAIC,UAAAA,CAAa,CAAKC,EAAAA,WAAAA,CAAc,EAAG,CACrC,OAAO,KACT,CACA,MAAMC,SAAAA,CAAY,CAChB,MAAA,CAAQ,WACR,CAAA,SAAA,CAAW,4BACX,CAAA,OAAA,CAAS,4BACT,CAAA,KAAA,CAAO,kBACT,CAAA,CACA,MAAMpC,aAAAA,CAAgB9jM,OAAQpF,CAAAA,cAAc,CAAC,eAAA,CAAA,CAAmBoF,OAAQ8jM,CAAAA,aAAa,CAAG,CAAA,CACxF,MAAMjlK,IAAAA,CAAO7+B,OAAQpF,CAAAA,cAAc,CAAC,MAAUoF,CAAAA,CAAAA,OAAAA,CAAQ6+B,IAAI,CAAG,IAC7D,CAAA,MAAMsnK,YAAenmM,CAAAA,OAAAA,CAAQpF,cAAc,CAAC,cAAkBoF,CAAAA,CAAAA,OAAAA,CAAQmmM,YAAY,CAAGrC,aAAkB,GAAA,CAAA,CAAI,MAAS,CAAA,OAAA,CACpH,MAAMsC,WAAAA,CAAcF,SAAS,CAACC,YAAa,CAAA,EAAI,WAC/C,CAAA,MAAME,gBAAmBD,CAAAA,WAAAA,CAAYt3M,UAAU,CAAC,oBAChD,MAAM+rM,UAAAA,CAAaD,UAAWC,CAAAA,UAAU,CAAC17J,MAAAA,CAAOX,QAAQ,CAAA,CACxD,MAAMs8J,UAAAA,CAAaF,UAAWE,CAAAA,UAAU,CAAC3tM,MAAAA,CAAOqxC,QAAQ,CAAA,CACxD,MAAM8nK,UAAAA,CAAa,CAAC,MAAM,EAAE7C,iBAAAA,CAAkBtkK,MAAOW,CAAAA,UAAU,CAAE,CAAA,CAAC,CAClE,MAAMymK,UAAa,CAAA,CAAC,YAAY,EAAE9C,iBAAAA,CAAkBt2M,MAAO2yC,CAAAA,UAAU,CAAE,CAAA,CAAC,CACxE,MAAMirG,UAAa/qI,CAAAA,OAAAA,CAAQpF,cAAc,CAAC,YAAgBoF,CAAAA,CAAAA,OAAAA,CAAQ+qI,UAAU,CAAG,IAAA,CAC/E,MAAMy7D,SAAAA,CAAY,CAAC,gBAAgB,EAAEJ,WAAAA,CAAY,CAAC,EAAEvL,UAAW,CAAA,CAAC,EAAEC,UAAAA,CAAW,CAAC,EAAEwL,UAAAA,CAAW,CAAC,EAAEC,UAAW,CAAA,CAAC,EAAEx7D,UAAAA,CAAW,CAAC,CACxH,MAAMvyG,MAAAA,CAAS2G,MAAO3G,CAAAA,MAAM,CAC5B,IAAI2T,MAASmiF,CAAAA,iBAAAA,CAAkB91F,MAAQi4F,CAAAA,CAAAA,eAAe,CAAC+1E,SAAAA,CAAAA,CACvD,GAAI,CAACr6J,MAAQ,CAAA,CACX,MAAMmpB,OAAAA,CAAU,IAAI3+D,GAAAA,CACpB,GAAI0vM,gBAAkB/wI,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,iBAAmB,CAAA,EAAA,CAAA,CACrD,GAAIqoC,MAAAA,CAAOnF,OAAO,CAAEs7B,OAAQx+D,CAAAA,GAAG,CAAC,gBAAA,CAAkB,EAClDw+D,CAAAA,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,gBAAkBsvM,CAAAA,WAAAA,CAAAA,CAC9B9wI,OAAQx+D,CAAAA,GAAG,CAAC,eAAA,CAAiB+jM,UAC7BvlI,CAAAA,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,eAAiBgkM,CAAAA,UAAAA,CAAAA,CAC7BxlI,QAAQx+D,GAAG,CAAC,eAAiBwvM,CAAAA,UAAAA,CAAAA,CAC7BhxI,OAAQx+D,CAAAA,GAAG,CAAC,eAAA,CAAiByvM,UAC7BjxI,CAAAA,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,eAAiBi0I,CAAAA,UAAAA,CAAAA,CAC7Bz1E,OAAQx+D,CAAAA,GAAG,CAAC,oBAAA,CAAsBhJ,IAAKmV,CAAAA,KAAK,CAACnV,IAAAA,CAAKud,IAAI,CAAC0/H,UAAanmI,CAAAA,CAAAA,CAAAA,OAAO,CAAC,CAAA,CAAA,CAAA,CAC5E,MAAMmrD,IAAAA,CAAOv3B,OAAO2E,QAAQ,CAC5B,MAAM2rH,MAAAA,CAAS/4B,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQu3B,IAAOt/B,CAAAA,mBAAAA,CAAsBD,mBACrE,CAAA,CAAA,MAAMr+B,QAAW,CAAA,IAAIwE,GACrBxE,CAAAA,QAAAA,CAAS2E,GAAG,CAAC,UAAYgyJ,CAAAA,MAAAA,CAAOx4J,GAAG,CAAC,UACpC6B,CAAAA,CAAAA,CAAAA,QAAAA,CAAS2E,GAAG,CAAC,UAAYgyJ,CAAAA,MAAAA,CAAOx4J,GAAG,CAAC,aACpC67C,MAASokF,CAAAA,WAAAA,CAAY1+C,YAAY,CAACr5C,MAAQ,CAAA,CACxCk4F,UAAY81E,CAAAA,SAAAA,CACZ3sJ,UAAY,CAAA,CACVigB,eAAiBztC,CAAAA,iBACnB,CACAukG,CAAAA,WAAAA,CAAa,aACbE,CAAAA,aAAAA,CAAe,aACfv0D,CAAAA,gBAAAA,CAAkBpqE,QAClB4pE,CAAAA,eAAAA,CAAiBzG,OACnB,CAAA,EACF,CACA98B,MAAAA,CAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CACvC,CAAA,MAAM+hK,eAAiBjuK,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAACuG,MAAAA,CAAOnF,OAAO,CAAG,YAAe,CAAA,WAAA,CAAA,CAC5EysK,cAAevgK,CAAAA,QAAQ,CAAC/G,MAAAA,CAAAA,CACxB,MAAMunK,cAAAA,CAAiBluK,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,QAAA,CAAA,CAC5C,MAAM+tK,UAAAA,CAAanuK,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,OAAA,CAAA,CACxC,GAAImtK,UAAa,CAAA,CAAA,CAAG,CAClBY,UAAAA,CAAWzgK,QAAQ,CAAC,CACjB8/J,CAAAA,UAAAA,CAAaD,UAAa,CAAA,CAAA,EAAKC,UAAAA,CAChC,CAACC,WAAcF,CAAAA,UAAAA,CAAa,CAAA,EAAKE,WACjC,CAAA,CAACF,UAAaC,CAAAA,UAAAA,CACd,CAACD,UAAAA,CAAaE,WACf,CAAA,EACH,CAAO,KAAA,CACLU,WAAWzgK,QAAQ,CAAC,CAClB,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACD,CAAA,EACH,CACA,MAAMplC,MAAS,CAAA,CACb,CACA3T,CAAAA,MAAAA,CAAO+mB,KAAK,CAAG/mB,MAAOgnB,CAAAA,MAAM,EAAIhnB,MAAO6sC,CAAAA,OAAO,CAAG,CAAA,CAAI,CAAA,CAAA,CACrDmF,MAAOjrB,CAAAA,KAAK,CAAGirB,MAAAA,CAAOhrB,MAAM,EAAIgrB,MAAOnF,CAAAA,OAAO,CAAG,CAAA,CAAI,CAAA,CAAA,CACtD,CACD,GAAIqsK,gBAAkB,CAAA,CACpB,MAAM9B,iBAAAA,CAAoBplK,MAAOjrB,CAAAA,KAAK,CAAGirB,MAAAA,CAAOhrB,MAAM,EAAIgrB,MAAAA,CAAOnF,OAAO,CAAG,CAAI,CAAA,CAAA,CAC/E,CAAA,MAAM4sK,UAAaT,CAAAA,YAAAA,GAAiB,MAAQN,qBAAsBrtK,CAAAA,MAAAA,CAAQuyG,UAAY+4D,CAAAA,aAAAA,CAAeS,iBAAqB4B,CAAAA,CAAAA,YAAAA,GAAiB,SAAYR,CAAAA,yBAAAA,CAA0BntK,MAAQuyG,CAAAA,UAAAA,CAAYw5D,iBAAqBqB,CAAAA,CAAAA,uBAAAA,CAAwBptK,MAAQuyG,CAAAA,UAAAA,CAAY+4D,aACtQtrK,CAAAA,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,YAAcsN,CAAAA,CAAAA,QAAQ,CAAC0gK,UAAAA,CAAAA,CAC5CpuK,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,uBAAA,CAAA,CAAyBsN,QAAQ,CAAC,CACrD,CAAM0gK,CAAAA,UAAAA,CAAW1yL,KAAK,CACtB,CAAM0yL,CAAAA,UAAAA,CAAWzyL,MAAM,CACxB,EACH,CACA,IAAI,IAAIoO,CAAI,CAAA,CAAA,CAAGA,CAAKp1B,EAAAA,MAAO6sC,CAAAA,OAAO,CAAG,CAAA,CAAI,CAAA,CAAA,CAAIzX,CAAI,EAAA,CAAA,CAC/C,GAAIsc,IAAAA,GAAS,IAAQtc,EAAAA,CAAAA,GAAMsc,KAAM,CAC/B,MAAMmO,YAAe,CAAA,IAAI8G,YAAa,CAAA,CACpCM,WAAajnD,CAAAA,MAAAA,CACb0xC,IAAMtc,CAAAA,CAAAA,CACNgX,KAAO,CAAA,KAAA,CACP4E,KAAO3F,CAAAA,MAAAA,CAAO2E,QAChB,CACAr8B,CAAAA,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAGyhB,CACZmkL,CAAAA,cAAAA,CAAexgK,QAAQ,CAACplC,MACxBiyH,CAAAA,CAAAA,kBAAAA,CAAmBv6F,MAAQwU,CAAAA,YAAAA,CAAcb,OAAQnsC,OAASgwC,EAAAA,IAAAA,CAAAA,CAC1DhD,YAAatV,CAAAA,OAAO,GACtB,CACF,CACA,OAAO,IACT,CAEA,MAAMmvK,UAAAA,CAAa,CAAC3yL,KAAAA,CAAOC,MAAS,CAAA,CAAC,GACnC,CAAA,OAAO,CAAIrmB,CAAAA,IAAAA,CAAKmQ,KAAK,CAACnQ,IAAKoV,CAAAA,IAAI,CAACpV,IAAAA,CAAKoU,GAAG,CAACgS,KAAOC,CAAAA,MAAAA,CAAAA,CAAAA,CAClD,EACA,MAAM2yL,eAAAA,CAAkB,MAACtuK,EAAAA,CACvB,OAAOA,MAAAA,CAAO8Y,0BAChB,CACA,CAAA,MAAMy1J,eAAkB,CAACvuK,MACvB,EAAA,CAAA,OAAOA,MAAOqT,CAAAA,sBAAsB,CACtC,CACA,MAAMm7J,yBAAAA,CAA4B,MAACxuK,EAAAA,CACjC,OAAOsuK,eAAAA,CAAgBtuK,MAAUlR,CAAAA,CAAAA,mBAAAA,CAAsBy/K,eAAgBvuK,CAAAA,MAAAA,CAAAA,CAAUhR,mBAAsBP,CAAAA,iBACzG,EACA,MAAMggL,mBAAAA,CAAsB,MAACzuK,EAAAA,CAC3B,OAAOvR,iBACT,CACA,CAAA,MAAM28H,aAAgB,CAAA,CAACprH,MAAQ/kC,CAAAA,IAAAA,CAAMY,MAAQ0lC,CAAAA,OAAAA,GAAAA,CAC3C,OAAO,IAAIG,OAAQ1B,CAAAA,MAAAA,CAAQ,CACzB3mC,IAAAA,CAAM,CAAC,SAAS,EAAE4B,IAAAA,CAAK,CAAC,CACxBumC,OAAS,CAAA,IAAA,CACT9lB,KAAOzgB,CAAAA,IAAAA,CACP0gB,OAAQ1gB,IACRY,CAAAA,MAAAA,CAAQA,MACR2R,CAAAA,IAAAA,CAAMmpB,gBACNmN,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACVqX,CAAAA,OAAAA,CAAS,KACX,CAAA,CACF,CACA,CAAA,MAAMmtK,YACJ,OAAOC,qBAAAA,CAAsBhoK,MAAM,CAAE1rC,IAAI,CAAE,CACzC,MAAM+kC,MAAS2G,CAAAA,MAAAA,CAAO3G,MAAM,CAC5B,MAAMlqC,MAAAA,CAASs1J,cAAcprH,MAAQ/kC,CAAAA,IAAAA,GAAS0rC,MAAAA,CAAOnF,OAAO,CAAGmF,MAAOjrB,CAAAA,KAAK,CAAGirB,MAAAA,CAAOjrB,KAAK,CAAG,CAAA,CAAA,CAAI+S,iBACjG6+K,CAAAA,CAAAA,gBAAAA,CAAiB3mK,MAAQ7wC,CAAAA,MAAAA,CAAQ,CAC/By8I,UAAAA,CAAY,IACd,CAAA,CAAA,CACA,OAAOz8I,MACT,CACA,OAAO84M,sBAAuBjoK,CAAAA,MAAM,CAAEn/B,OAAO,CAAE,CAC7C,MAAMw4B,MAAS2G,CAAAA,MAAAA,CAAO3G,MAAM,CAC5B,MAAMnkC,MAAAA,CAAS2yM,yBAA0BxuK,CAAAA,MAAAA,CAAAA,CACzC,MAAMlqC,MAAAA,CAAS0R,OAAS7S,EAAAA,MAAAA,EAAU,IAAI+sC,OAAAA,CAAQ1B,MAAQ,CAAA,CACpD3mC,IAAM,CAAA,iBAAA,CACNmoC,OAAS,CAAA,IAAA,CACT9lB,KAAOlU,CAAAA,OAAAA,EAASvM,IAAQ,EAAA,GAAA,CACxB0gB,MAAQnU,CAAAA,OAAAA,EAASvM,IAAQ,EAAA,GAAA,CACzBY,OAAQA,MACR2R,CAAAA,IAAAA,CAAM3R,MAAW4yB,GAAAA,iBAAAA,CAAoBkI,gBAAmBH,CAAAA,mBAAAA,CACxDsN,QAAU5Z,CAAAA,qBAAAA,CACV8Z,QAAU9Z,CAAAA,qBAAAA,CACVqX,OAAS,CAAA,IACX,CACA+rK,CAAAA,CAAAA,gBAAAA,CAAiB3mK,MAAQ7wC,CAAAA,MAAAA,CAAQ,CAC/By8I,UAAAA,CAAY5rG,MAAOpF,CAAAA,OAAO,CAAG,CAAA,CAAI,IACnC,CAAA,CAAA,CACA,OAAOzrC,MACT,CACA,OAAO+4M,aAAcloK,CAAAA,MAAM,CAAEn/B,OAAO,CAAE,CACpC,MAAMw4B,MAAS2G,CAAAA,MAAAA,CAAO3G,MAAM,CAC5B,MAAMnkC,MAAAA,CAAS4yM,mBACf,EAAA,CAAA,MAAM34M,MAAS0R,CAAAA,OAAAA,EAAS7S,MAAU,EAAA,IAAI+sC,OAAQ1B,CAAAA,MAAAA,CAAQ,CACpD3mC,IAAAA,CAAM,UACNqiB,CAAAA,KAAAA,CAAOlU,OAASvM,EAAAA,IAAAA,EAAQ,GACxB0gB,CAAAA,MAAAA,CAAQnU,OAASvM,EAAAA,IAAAA,EAAQ,GACzBY,CAAAA,MAAAA,CAAQA,OACR2R,IAAMmpB,CAAAA,gBAAAA,CACN2Q,UAAYxP,CAAAA,0BAAAA,CACZgM,QAAU5Z,CAAAA,qBAAAA,CACV8Z,QAAU9Z,CAAAA,qBAAAA,CACVqX,OAAS,CAAA,KACX,CACA,CAAA,CAAA,MAAMzlC,CAAIhG,CAAAA,MAAAA,CAAO4lB,KAAK,CAAG,GACzB,CAAA,MAAM87B,IAAO,CAAA,IAAIt/B,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,GAAA,CAAMpc,CAAG,CAAA,GAAA,CAAMA,CAC3C,CAAA,CAAA,MAAM0qC,MAAS6nK,CAAAA,UAAAA,CAAW,KAAOA,UAAW,CAAA,CAAA,CAAA,CAC5C,IAAI,IAAIt4M,CAAI,CAAA,CAAA,CAAGA,CAAIywC,CAAAA,MAAAA,CAAQ,EAAEzwC,CAAAA,CAAE,CAC7Bu3M,gBAAAA,CAAiB3mK,MAAQ7wC,CAAAA,MAAAA,CAAQ,CAC/By8I,UAAAA,CAAY,CACZ/6F,CAAAA,IAAAA,CAAMA,IACN+1J,CAAAA,UAAAA,CAAYzxM,CACd,CAAA,CACA07C,CAAAA,IAAAA,CAAKptC,CAAC,EAAIotC,IAAKliC,CAAAA,CAAC,CAChBkiC,KAAK1lC,CAAC,EAAI0lC,IAAKliC,CAAAA,CAAC,CAChBkiC,IAAKvlC,CAAAA,CAAC,CAAG3c,IAAAA,CAAKoU,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC+xC,IAAKvlC,CAAAA,CAAC,CAAG,EAAA,CAAA,CACzCulC,CAAAA,IAAAA,CAAKliC,CAAC,CAAGhgB,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAKliC,CAAAA,CAAC,CAAG,EAAA,CAAA,EAC3C,CACAkiC,IAAAA,CAAKl5C,GAAG,CAAC,CAAG,CAAA,GAAA,CAAMxC,CAAG,CAAA,GAAA,CAAMA,CAAG,CAAA,GAAA,CAAMA,CACpC,CAAA,CAAA,IAAI,IAAI/F,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAG,CAAA,EAAEA,CAAE,CAAA,CACxBu3M,gBAAiB3mK,CAAAA,MAAAA,CAAQ7wC,MAAQ,CAAA,CAC/By8I,UAAY/qI,CAAAA,OAAAA,EAASsnM,sBAAwB,IAC7CnB,CAAAA,YAAAA,CAAcnmM,OAASmmM,EAAAA,YAAAA,EAAgB,KACvCrC,CAAAA,aAAAA,CAAeh2M,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAG,IAAQ3T,EAAAA,CAAAA,CAAI,CACvCyhD,CAAAA,CAAAA,IAAAA,CAAMA,IACN+1J,CAAAA,UAAAA,CAAYzxM,CACd,CAAA,CACA07C,CAAAA,IAAAA,CAAK1lC,CAAC,EAAI0lC,IAAKliC,CAAAA,CAAC,CAChBkiC,IAAKvlC,CAAAA,CAAC,CAAG3c,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGpU,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAAA,CAAKvlC,CAAC,CAAG,EACzCulC,CAAAA,CAAAA,CAAAA,IAAKliC,CAAAA,CAAC,CAAGhgB,IAAAA,CAAKoU,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC+xC,IAAKliC,CAAAA,CAAC,CAAG,EAAA,CAAA,EAC3C,CACAkiC,IAAAA,CAAKl5C,GAAG,CAAC,GAAMxC,CAAAA,CAAAA,CAAG,CAAC,GAAA,CAAM,GAAE,EAAKA,CAAG,CAAA,EAAA,CAAKA,CAAG,CAAA,EAAA,CAAKA,CAChDwxM,CAAAA,CAAAA,gBAAAA,CAAiB3mK,MAAQ7wC,CAAAA,MAAAA,CAAQ,CAC/By8I,UAAAA,CAAY/qI,OAASunM,EAAAA,iBAAAA,EAAqB,IAC1CpB,CAAAA,YAAAA,CAAc,SACdn2J,CAAAA,IAAAA,CAAMA,IACN+1J,CAAAA,UAAAA,CAAYzxM,CACd,CAAA,CAAA,CACA,OAAOhG,MACT,CACA,OAAOk5M,wBAAyBC,CAAAA,OAAO,CAAEznM,OAAO,CAAE,CAChD,MAAMw4B,MAASivK,CAAAA,OAAO,CAAC,CAAA,CAAE,CAACjvK,MAAM,CAChC,MAAMnkC,MAASozM,CAAAA,OAAO,CAAC,CAAA,CAAE,CAACpzM,MAAM,CAChC,MAAM2R,IAAOyhM,CAAAA,OAAO,CAAC,CAAA,CAAE,CAACzhM,IAAI,CAC5B,MAAM1X,MAAS0R,CAAAA,OAAAA,EAAS7S,QAAU,IAAI+sC,OAAAA,CAAQ1B,MAAQ,CAAA,CACpD3mC,IAAM,CAAA,qBAAA,CACNqiB,KAAOlU,CAAAA,OAAAA,EAASvM,IAAQ,EAAA,GAAA,CACxB0gB,MAAQnU,CAAAA,OAAAA,EAASvM,IAAQ,EAAA,GAAA,CACzBY,MAAQA,CAAAA,MAAAA,CACR2R,IAAMA,CAAAA,IAAAA,CACN85B,UAAYxP,CAAAA,0BAAAA,CACZgM,QAAU5Z,CAAAA,qBAAAA,CACV8Z,QAAU9Z,CAAAA,qBAAAA,CACVqX,OAAS,CAAA,KACX,CACA,CAAA,CAAA,MAAMzlC,CAAIhG,CAAAA,MAAAA,CAAO4lB,KAAK,CAAG,GAAA,CACzB,MAAM87B,IAAAA,CAAO,IAAIt/B,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,GAAMpc,CAAAA,CAAAA,CAAG,GAAMA,CAAAA,CAAAA,CAAAA,CAC3C,MAAM0qC,MAAAA,CAAS6nK,UAAW,CAAA,GAAA,CAAA,CAC1B,IAAI,IAAIt4M,CAAI,CAAA,CAAA,CAAGA,CAAIywC,CAAAA,MAAAA,CAAQ,EAAEzwC,CAAAA,CAAE,CAC7Bu3M,gBAAAA,CAAiB2B,OAAO,CAAC,CAAE,CAAA,CAAEn5M,OAAQ,CACnCy8I,UAAAA,CAAY,CACZ/6F,CAAAA,IAAAA,CAAMA,IACN+1J,CAAAA,UAAAA,CAAYzxM,CACd,CAAA,CACA07C,CAAAA,IAAAA,CAAKptC,CAAC,EAAIotC,IAAKliC,CAAAA,CAAC,CAChBkiC,IAAK1lC,CAAAA,CAAC,EAAI0lC,IAAAA,CAAKliC,CACfkiC,CAAAA,IAAAA,CAAKvlC,CAAC,CAAG3c,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,KAAKmQ,KAAK,CAAC+xC,IAAKvlC,CAAAA,CAAC,CAAG,EAAA,CAAA,CACzCulC,CAAAA,IAAAA,CAAKliC,CAAC,CAAGhgB,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,KAAKmQ,KAAK,CAAC+xC,IAAKliC,CAAAA,CAAC,CAAG,EAAA,CAAA,EAC3C,CACAkiC,IAAAA,CAAKl5C,GAAG,CAAC,CAAG,CAAA,GAAA,CAAMxC,CAAG,CAAA,GAAA,CAAMA,EAAG,GAAMA,CAAAA,CAAAA,CAAAA,CACpC,IAAI,IAAI/F,CAAI,CAAA,CAAA,CAAGA,CAAIk5M,CAAAA,OAAAA,CAAQj5M,MAAM,CAAE,EAAED,CAAAA,CAAE,CACrCu3M,gBAAAA,CAAiB2B,OAAO,CAACl5M,CAAE,CAAA,CAAED,MAAQ,CAAA,CACnCy8I,UAAY,CAAA,CAAA,CACZ/6F,IAAMA,CAAAA,IAAAA,CACN+1J,UAAYzxM,CAAAA,CACd,CACA07C,CAAAA,CAAAA,IAAK1lC,CAAAA,CAAC,EAAI0lC,IAAKliC,CAAAA,CAAC,CAChBkiC,IAAKvlC,CAAAA,CAAC,CAAG3c,IAAAA,CAAKoU,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC+xC,IAAKvlC,CAAAA,CAAC,CAAG,EAAA,CAAA,CACzCulC,CAAAA,IAAAA,CAAKliC,CAAC,CAAGhgB,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAAA,CAAKliC,CAAC,CAAG,EAAA,CAAA,EAC3C,CACAkiC,IAAAA,CAAKl5C,GAAG,CAAC,GAAMxC,CAAAA,CAAAA,CAAG,CAAC,GAAM,CAAA,GAAE,EAAKA,CAAAA,CAAG,EAAKA,CAAAA,CAAAA,CAAG,EAAKA,CAAAA,CAAAA,CAAAA,CAChD,GAAI0L,OAAAA,EAAS0nM,aAAe,CAAA,CAC1B5B,gBAAiB2B,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAEn5M,MAAAA,CAAQ,CACnCy8I,UAAAA,CAAY,EACZ/6F,IAAMA,CAAAA,IAAAA,CACN+1J,UAAYzxM,CAAAA,CACd,CACF,EAAA,CAAA,KAAO,CACLwxM,gBAAAA,CAAiB2B,OAAO,CAAC,CAAE,CAAA,CAAEn5M,MAAQ,CAAA,CACnCy8I,UAAY/qI,CAAAA,OAAAA,EAAS+qI,UAAc,EAAA,IAAA,CACnCo7D,YAAc,CAAA,SAAA,CACdn2J,IAAMA,CAAAA,IAAAA,CACN+1J,UAAYzxM,CAAAA,CACd,CACF,EAAA,CACA,OAAOhG,MACT,CACF,CAEA,MAAMq5M,SACJrxM,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC0P,IAAI,CAAGg9G,QACZ,CAAA,IAAI,CAACxwE,KAAK,CAAG,IAAI5uC,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAC7B,CAAA,IAAI,CAACulK,OAAO,CAAG,CACf,CAAA,IAAI,CAACnpJ,KAAK,CAAG,CACb,CAAA,IAAI,CAAC/rB,GAAG,CAAG,IACb,CACF,CAEA,MAAM2zM,KAAcpxM,SAAAA,YAAAA,CA6DlB,IAAIqxM,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAAC30E,MAAM,CAACK,YAAY,CAAC1P,iBAClC,CAAA,CACA,IAAIikF,qBAAAA,CAAsB5xM,KAAK,CAAE,CAC/B,IAAI,CAAC6xM,sBAAsB,CAAGnmM,IAAKI,CAAAA,KAAK,CAAClU,IAAAA,CAAKmQ,KAAK,CAAC/H,KAAQ,CAAA,CAAA,CAAA,CAAG,GACjE,EAAA,CACA,IAAI4xM,qBAAAA,EAAwB,CAC1B,OAAO,IAAI,CAACC,sBACd,CACA,IAAIC,qBAAsB9xM,CAAAA,KAAK,CAAE,CAC/B,IAAI,CAAC+xM,sBAAsB,CAAGrmM,IAAKI,CAAAA,KAAK,CAAC9L,KAAO,CAAA,IAAA,CAAO,CACzD,EAAA,CACA,IAAI8xM,qBAAAA,EAAwB,CAC1B,OAAO,IAAI,CAACC,sBACd,CACA,IAAI38C,wBAAyBp1J,CAAAA,KAAK,CAAE,CAClC,GAAI,IAAI,CAACsiC,MAAM,CAAC2E,QAAQ,EAAI,CAACjnC,KAAO,CAAA,CAClC,MACF,CACA,GAAI,CAAC,IAAI,CAACgyM,yBAAyB,EAAIhyM,KAAAA,CAAO,CAC5C8E,OAAAA,CAAQC,KAAK,CAAC,mEACd,CAAA,CAAA,MACF,CACA,IAAI,CAACitM,yBAAyB,CAAGhyM,MACnC,CACA,IAAIo1J,wBAA2B,EAAA,CAC7B,OAAO,IAAI,CAAC48C,yBAAyB,CAEvC,IAAIC,QAAAA,CAASjyM,KAAK,CAAE,CAClB,GAAIA,KAAAA,GAAU,IAAI,CAACkyM,SAAS,CAAE,CAC5B,IAAI,CAACA,SAAS,CAAGlyM,KAAAA,CACjB,GAAIA,KAAAA,CAAO,CACTA,KAAAA,CAAMomC,QAAQ,CAAG5Z,qBACjBxsB,CAAAA,KAAMsmC,CAAAA,QAAQ,CAAG9Z,qBACjBxsB,CAAAA,KAAAA,CAAM+lC,SAAS,CAAGxW,aAClBvvB,CAAAA,KAAAA,CAAMkmC,SAAS,CAAG3W,aAClBvvB,CAAAA,KAAM6jC,CAAAA,OAAO,CAAG,MAClB,CACA,IAAI,CAACsuK,oBAAoB,CAAG,EAAE,CAC9B,GAAI,IAAI,CAACC,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAAC5wK,OAAO,EAC9B,CAAA,IAAI,CAAC4wK,iBAAiB,CAAG,KAC3B,CACA,IAAI,CAACC,aAAa,GACpB,CACF,CACA,IAAIJ,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIl1E,MAAAA,CAAOA,MAAM,CAAE,CACjB,MAAMs1E,IAAO,CAAA,IAAI,CAACn5D,OAAO,CACzB,IAAI,CAACA,OAAO,CAAGnc,MAAAA,CACf,IAAI,CAACz7H,IAAI,CAAC,YAAc+wM,CAAAA,IAAAA,CAAMt1E,MAChC,EAAA,CACA,IAAIA,MAAAA,EAAS,CACX,OAAO,IAAI,CAACmc,OACd,CACA,IAAIo5D,GAAM,EAAA,CACR,OAAO,IAAI,CAACC,IAAI,CAElB,IAAI3zC,QAAW,EAAA,CACb,OAAO,IAAI,CAAC4zC,eAAe,CAE7B,IAAIC,MAAAA,EAAS,CACX,OAAO,IAAI,CAACC,aACd,CACA,IAAIz9D,GAAM,EAAA,CACR,OAAO,IAAI,CAAC09D,UAAU,CAExB,IAAIC,mBAAAA,CAAoB7yM,KAAK,CAAE,CAC7B,IAAI,CAAC8yM,oBAAoB,CAAGl7M,IAAKoU,CAAAA,GAAG,CAAChM,KAAAA,CAAO,IAC9C,EAAA,CACA,IAAI6yM,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACC,oBACd,CACA,IAAIC,wBAAyB/yM,CAAAA,KAAK,CAAE,CAClC,IAAI,CAACgzM,yBAAyB,CAAGp7M,KAAKoU,GAAG,CAAChM,KAAO,CAAA,IAAA,EACnD,CACA,IAAI+yM,wBAA2B,EAAA,CAC7B,OAAO,IAAI,CAACC,yBAAyB,CAEvC,IAAIC,mBAAoBjzM,CAAAA,KAAK,CAAE,CAC7BA,KAAQA,CAAAA,KAAAA,EAAS,EAAE,CACnB,MAAMkzM,QAAAA,CAAW,IAAI,CAACf,oBAAoB,CAC1C,MAAMvpM,OAAUsqM,CAAAA,QAAAA,CAAS56M,MAAM,GAAK0H,KAAM1H,CAAAA,MAAM,EAAI46M,QAAAA,CAASjzI,IAAI,CAAC,CAACvoE,CAAAA,CAAGW,CAAIX,GAAAA,CAAAA,GAAMsI,KAAK,CAAC3H,CAAE,CAAA,CAAA,CACxF,GAAIuQ,OAAAA,CAAS,CACX,MAAMuqM,QAAWnzM,CAAAA,KAAAA,CAAM1H,MAAM,GAAK,CAAK0H,EAAAA,KAAAA,CAAMowJ,KAAK,CAAC,CAAK,EAAA,CAAC,CAAC14J,CAAAA,CAAAA,CAC1D,GAAIy7M,QAAAA,CAAU,CACZ,IAAI,CAACf,iBAAiB,CAAGpB,WAAAA,CAAYM,wBAAwB,CAACtxM,KAAO,CAAA,CACnE/I,MAAQ,CAAA,IAAI,CAACm7M,iBAAiB,CAChC,CACA,CAAA,IAAI,CAACF,SAAS,CAAG,IAAI,CAACE,kBAAiB,CAClC,KAAA,CACL,GAAI,IAAI,CAACA,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAAC5wK,OAAO,EAC9B,CAAA,IAAI,CAAC4wK,iBAAiB,CAAG,KAC3B,CACA,IAAI,CAACF,SAAS,CAAG,KACnB,CACA,IAAI,CAACC,oBAAoB,CAAGnyM,KAAM9G,CAAAA,KAAK,EACvC,CAAA,IAAI,CAACm5M,aAAa,GACpB,CACF,CACA,IAAIY,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACd,oBAAoB,CAElC,IAAIiB,MAAAA,CAAOpzM,KAAK,CAAE,CAChB,GAAIA,KAAU,GAAA,IAAI,CAACqzM,cAAc,CAAE,CACjC,IAAI,CAACA,cAAc,CAAGrzM,KAAAA,CACtB,IAAI,CAACqyM,aAAa,GACpB,CACF,CACA,IAAIe,MAAAA,EAAS,CACX,OAAO,IAAI,CAACC,cACd,CACA,IAAIlmC,eAAgBntK,CAAAA,KAAK,CAAE,CACzB,GAAIA,KAAAA,GAAU,IAAI,CAACszM,gBAAgB,CAAE,CACnC,IAAI,CAACA,gBAAgB,CAAGtzM,KACxB,CAAA,IAAI,CAACqyM,aAAa,GACpB,CACF,CACA,IAAIllC,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACmmC,gBAAgB,CAE9B,IAAIpmC,eAAAA,CAAgBltK,KAAK,CAAE,CACzB,GAAIA,KAAU,GAAA,IAAI,CAACuzM,gBAAgB,CAAE,CACnC,IAAI,CAACA,gBAAgB,CAAGvzM,KAAAA,CACxB,IAAI,CAACqyM,aAAa,GACpB,CACF,CACA,IAAInlC,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACqmC,gBACd,CACA,IAAIlK,SAAUrpM,CAAAA,KAAK,CAAE,CACnB,GAAIA,KAAAA,GAAU,IAAI,CAACwzM,UAAU,CAAE,CAC7B,IAAI,CAACA,UAAU,CAAGxzM,KAClB,CAAA,IAAI,CAACqyM,aAAa,GACpB,CACF,CACA,IAAIhJ,WAAY,CACd,OAAO,IAAI,CAACmK,UACd,CACA,IAAIpK,yBAA0BppM,CAAAA,KAAK,CAAE,CACnC,GAAIA,KAAAA,GAAU,IAAI,CAACyzM,0BAA0B,CAAE,CAC7C,IAAI,CAACA,0BAA0B,CAAGzzM,KAClC,CAAA,IAAI,CAACqyM,aAAa,GACpB,CACF,CACA,IAAIjJ,yBAA4B,EAAA,CAC9B,OAAO,IAAI,CAACqK,0BAA0B,CAExC,IAAIC,cAAAA,CAAe1zM,KAAK,CAAE,CACxB,GAAI,CAAC,IAAI,CAAC2zM,eAAe,CAAC7lM,MAAM,CAAC9N,KAAQ,CAAA,CAAA,CACvC,MAAMmX,UAAAA,CAAanX,KAAM8N,CAAAA,MAAM,CAACoS,IAAAA,CAAKjG,QAAQ,CAAA,CAC7C,IAAI,CAAC05L,eAAe,CAACv8M,IAAI,CAAC4I,KAC1B,CAAA,CAAA,GAAImX,UAAY,CAAA,CACd,IAAI,CAACk2J,mBAAmB,CAACj2J,WAAW,GACtC,CAAA,KAAO,CACL,IAAI,CAACw8L,mBAAmB,CAAC50L,MAAM,CAAC1K,IAAAA,CAAK8B,IAAI,CAAEpW,KAAOsU,CAAAA,IAAAA,CAAKgC,GAAG,CAAA,CAC1D,IAAI,CAAC+2J,mBAAmB,CAAC50J,UAAU,CAAC,IAAI,CAACm7L,mBAAmB,EAC9D,CACA,GAAI,CAAC,IAAI,CAACC,4BAA4B,EAAI,CAAC18L,UAAAA,CAAY,CACrD,IAAI,CAAC08L,4BAA4B,CAAG,IAAA,CACpC,IAAI,CAACxB,aAAa,GACpB,CACF,CACF,CACA,IAAIqB,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7BnyK,OAAU,EAAA,CACR,IAAI,CAAC6wK,aAAa,EAClB,CAAA,IAAI,CAAC1+D,IAAI,CAAG,IACZ,CAAA,IAAI,CAACr0I,GAAG,GACV,CACAw0M,QAAShqL,CAAAA,KAAK,CAAE/rB,GAAG,CAAEu+C,KAAAA,CAAQ5uC,KAAM2B,CAAAA,KAAK,CAAEmkJ,SAAAA,CAAY,IAAI,CAAEp2B,KAAQ,CAAA,IAAI,CAACu0E,gBAAgB,CAAE,CACzF,MAAMviE,KAAQ,CAAA,IAAI,CAAC3sF,SAAS,CAACooJ,QAAQ,CAACztE,KAAAA,CAAOo2B,SAC7CpkB,CAAAA,CAAAA,KAAAA,CAAMi7D,QAAQ,CAAC,CACbvgL,KAAAA,CACA/rB,GACD,CAAA,CAAE,CACDu+C,KAAAA,CACAA,KACD,CAAA,EACH,CACAy3J,SAAAA,CAAUz+J,SAAS,CAAE4sF,MAAM,CAAEsxB,SAAY,CAAA,IAAI,CAAEp2B,KAAAA,CAAQ,IAAI,CAACu0E,gBAAgB,CAAE,CAC5E,MAAMviE,KAAAA,CAAQ,IAAI,CAAC3sF,SAAS,CAACooJ,QAAQ,CAACztE,KAAOo2B,CAAAA,SAAAA,CAAAA,CAC7CpkB,KAAMi7D,CAAAA,QAAQ,CAAC/0J,SAAAA,CAAW4sF,MAC5B,EAAA,CACA8xE,cAAe1+J,CAAAA,SAAS,CAAE4sF,MAAM,CAAEsxB,SAAAA,CAAY,IAAI,CAAEp2B,KAAQ,CAAA,IAAI,CAACu0E,gBAAgB,CAAE,CACjF,MAAMviE,KAAQ,CAAA,IAAI,CAAC3sF,SAAS,CAACooJ,QAAQ,CAACztE,KAAAA,CAAOo2B,SAC7CpkB,CAAAA,CAAAA,KAAAA,CAAMq7D,cAAc,CAACn1J,SAAAA,CAAW4sF,MAClC,EAAA,CACA6/C,aAAckyB,CAAAA,QAAQ,CAAE,CACtB,MAAMC,OAAAA,CAAUD,QAASC,CAAAA,OAAO,CAChC,MAAM7vG,OAAS4vG,QAAS5vG,CAAAA,MAAM,CAC9B,IAAI,CAAC8vG,QAAQ,CAACvzM,GAAG,CAACszM,OAAAA,CAAQE,OAAO,CAAC,CAAE,CAAA,CAAEF,OAAQE,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAEF,OAAAA,CAAQE,OAAO,CAAC,CAAE,CAAA,CAAA,CAC5E,IAAI,CAACtnD,YAAY,CAAClsJ,GAAG,CAACyjG,OAAOgwG,cAAc,CAAC,CAAE,CAAA,CAAEhwG,MAAOgwG,CAAAA,cAAc,CAAC,CAAA,CAAE,CAAEhwG,MAAAA,CAAOgwG,cAAc,CAAC,CAAE,CAAA,CAClG,CAAA,IAAI,CAACtnC,gBAAgB,CAAG1oE,MAAAA,CAAO0oE,gBAC/B,CAAA,IAAI,CAAC73B,GAAG,CAACplI,IAAI,CAAGu0F,MAAAA,CAAO6wC,GAAG,CAC1B,IAAI,CAACA,GAAG,CAAC54F,KAAK,CAAC17C,GAAG,CAACyjG,MAAAA,CAAOiwG,SAAS,CAAC,CAAE,CAAA,CAAEjwG,MAAOiwG,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAEjwG,MAAAA,CAAOiwG,SAAS,CAAC,CAAE,CAAA,CAChF,CAAA,IAAI,CAACp/D,GAAG,CAACprH,KAAK,CAAGu6E,MAAOkwG,CAAAA,SAAS,CACjC,IAAI,CAACr/D,GAAG,CAACn3I,GAAG,CAAGsmG,MAAOmwG,CAAAA,OAAO,CAC7B,IAAI,CAACt/D,GAAG,CAAC+9B,OAAO,CAAG5uE,MAAOowG,CAAAA,WAAW,CACrC,IAAI,CAACC,sBAAsB,CAAGrwG,MAAOqwG,CAAAA,sBAAsB,CAC3D,IAAI,CAACC,qBAAqB,CAAGtwG,MAAAA,CAAOswG,qBACpC,CAAA,IAAI,CAACC,YAAY,CAAGvwG,MAAAA,CAAOuwG,YAC3B,CAAA,IAAI,CAAC9wC,QAAQ,CAAGz/D,MAAAA,CAAOy/D,QACvB,CAAA,IAAI,CAACwvC,gBAAgB,CAAGjvG,MAAAA,CAAO8oE,eAAe,EAAI,CAClD,CAAA,IAAI,CAAComC,gBAAgB,CAAGlvG,MAAAA,CAAO6oE,eAAe,EAAI,GAClD,CAAA,IAAI,CAACsmC,UAAU,CAAGnvG,MAAOglG,CAAAA,SAAS,EAAI,CAAA,CACtC,GAAIhlG,MAAAA,CAAOqvG,cAAc,CAAE,CACzB,IAAI,CAACA,cAAc,CAAG,IAAIxzL,OAAOX,kBAAkB,CAAC8kF,MAAOqvG,CAAAA,cAAc,CAAC,CAAA,CAAE,CAAErvG,MAAAA,CAAOqvG,cAAc,CAAC,CAAE,CAAA,CAAErvG,MAAOqvG,CAAAA,cAAc,CAAC,CAAA,CAAE,EAClI,CACA,IAAI,CAACnB,GAAG,CAACxwB,aAAa,CAAC19E,MACvB,CAAA,CAAA,IAAI,CAAC+wD,wBAAwB,CAAG/wD,OAAO+wD,wBAAwB,EAAI,KACnE,CAAA,IAAI,CAACyJ,QAAQ,CAACkjB,aAAa,CAAC19E,MAAAA,CAAAA,CAC5B,CACE,uBAAA,CACA,qBACA,CAAA,0BAAA,CACA,aACA,CAAA,uBAAA,CACA,uBACA,CAAA,gCAAA,CACA,8BACD,CAAA,CAACr/F,OAAO,CAAC,OAAC6vM,EAAAA,CACT,GAAIxwG,MAAAA,CAAO3/F,cAAc,CAACmwM,OAAU,CAAA,CAAA,CAClC,IAAI,CAACA,OAAAA,CAAQ,CAAGxwG,MAAM,CAACwwG,OAAAA,EAAQ,CAEnC,CACA,CAAA,CAAA,IAAI,CAACxC,aAAa,GACpB,CACAtI,aAAgB,EAAA,CACd,MAAMmJ,QAAAA,CAAW,IAAI,CAACf,oBAAoB,CAC1C,GAAI,IAAI,CAACqB,UAAU,CAAE,CACnB,MAAMsB,aAAAA,CAAgB,CACpB,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACD,OAAO5B,QAAQ,CAAC4B,aAAa,CAAC,IAAI,CAACtB,UAAU,CAAC,CAAC,EAAI,IAAI,CAACtB,SAAS,EAAIgB,QAAQ,CAAC,CAAE,CAAA,EAAI,IAAI,CAACG,cAC3F,CACA,OAAO,IAAI,CAACA,cAAc,EAAIH,QAAQ,CAAC,CAAA,CAAE,EAAI,IAAI,CAAChB,SAAS,CAE7D19B,cAAiB,EAAA,CACf,GAAI,CAAC,IAAI,CAAC+9B,GAAG,CAACzI,OAAO,CAAE,CACrB,IAAI,CAACyI,GAAG,CAAC1I,aAAa,GACxB,CACA,IAAI,CAAC0I,GAAG,CAAC9mK,MAAM,GACjB,CACA4mK,aAAgB,EAAA,CACd,IAAI,CAACE,GAAG,CAACvI,YAAY,EACrB,CAAA,IAAI,CAAC1hC,aAAa,CAAG,KACvB,CACAysC,SAAAA,CAAU7B,QAAQ,CAAE,CAClB,GAAI,CAACA,QAAAA,CAAU,CACb,IAAI,CAACE,MAAM,CAAG,IACd,CAAA,IAAI,CAACnB,QAAQ,CAAG,KAClB,CAAA,KAAO,CACL,IAAI,CAACmB,MAAM,CAAGF,QAAQ,CAAC,CAAA,CAAE,EAAI,IAAA,CAC7B,GAAIA,QAAQ,CAAC,CAAA,CAAE,EAAI,CAACA,QAAQ,CAAC,EAAE,CAACpvK,OAAO,CAAE,CACvC,IAAI,CAACmuK,QAAQ,CAAGiB,QAAQ,CAAC,CAAE,EAC7B,CAAO,KAAA,CACL,IAAI,CAACD,mBAAmB,CAAGC,QAASh6M,CAAAA,KAAK,CAAC,CAAA,EAC5C,CACF,CACF,CACA,IAAI87M,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACC,WAAW,EAAI,IAAI,CAAC3yK,MAAM,CAAC0Y,sBAAsB,EAAA,EAAMjqB,iBACrE,CArTA3wB,WAAY6hC,CAAAA,cAAc,CAAC,CACzB,KAAK,EAAA,CAAI,IAAI,CAACizK,WAAW,CAAG,KAAO,CAAA,IAAI,CAACC,8BAA8B,CAAG,CAAA,CAAG,IAAI,CAACC,4BAA4B,CAAG,EAAG,IAAI,CAACtoD,YAAY,CAAG,IAAIp/I,KAAAA,CAAM,CAAG,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,IAAI,CAACq/J,gBAAgB,CAAG,CAAA,CAAG,IAAI,CAACjJ,QAAQ,CAAG,CAAA,CAAG,IAAI,CAAC4wC,sBAAsB,CAAG,CAAG,CAAA,IAAI,CAACC,qBAAqB,CAAG,IAAA,CAAM,IAAI,CAACC,YAAY,CAAG3+E,aAAAA,CAAe,IAAI,CAACo/E,qBAAqB,CAAG,KAAO,CAAA,IAAI,CAACJ,WAAW,CAAG,KAAA,CAAO,IAAI,CAACthE,IAAI,CAAG,IAAM,CAAA,IAAI,CAACkwB,aAAa,CAAG,KAAA,CAAO,IAAI,CAACquC,SAAS,CAAG,IAAM,CAAA,IAAI,CAACmB,cAAc,CAAG,IAAM,CAAA,IAAI,CAACT,UAAU,CAAG,IAAInB,SAAa,CAAA,IAAI,CAAC6D,wBAAwB,CAAG,KAClhB,CAAA,IAAI,CAAChzK,MAAM,CAAGL,cACd,CAAA,IAAI,CAACkyK,QAAQ,CAAG,IAAI7/L,IAAK,CAAA,CAAA,CAAG,CAAC,GAAA,CAAK,EAClC,CAAA,IAAI,CAAC6kI,OAAO,CAAG,IACf,CAAA,IAAI,CAACg5D,oBAAoB,CAAG,EAAE,CAC9B,IAAI,CAACC,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACkB,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,0BAA0B,CAAG,CAClC,CAAA,IAAI,CAACI,4BAA4B,CAAG,KACpC,CAAA,IAAI,CAACF,eAAe,CAAG,IAAIzzL,IAC3B,CAAA,IAAI,CAACmtJ,mBAAmB,CAAG,IAAIx2J,IAC/B,CAAA,IAAI,CAAC+8L,mBAAmB,CAAG,IAAIh5L,IAC/B,CAAA,IAAI,CAACi3L,sBAAsB,CAAG,CAC9B,CAAA,IAAI,CAACE,sBAAsB,CAAG,EAC9B,CAAA,IAAI,CAACe,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACE,yBAAyB,CAAG,EACjC,CAAA,IAAI,CAAChB,yBAAyB,CAAG,IACjC,CAAA,IAAI,CAACS,eAAe,CAAG,IAAI3wB,cAAAA,CAAe,IAAI,CAACx/I,MAAM,CAACouC,kBAAkB,CAAE,IAAI,CAACpuC,MAAM,CAAC4tC,cAAc,CAAE,IACpG,CAAA,IAAI,CAACo4F,aAAa,CAAG,KACvB,CAAA,CACA,CAAA,IAAI,CAACqqC,aAAa,CAAG,IAAIzQ,YACzB,CAAA,IAAI,CAACsQ,IAAI,CAAG,IAAIlJ,GAAAA,CAAI,IAAI,CACxB,CAAA,IAAI,CAACpiC,MAAM,CAAG,CACZtpC,aAAe,CAAA,CAAA,CACfitB,MAAQ,CAAA,CAAA,CACR0qD,aAAe,CAAA,CAAA,CACfC,YAAa,CACbC,CAAAA,iBAAAA,CAAmB,CACrB,CACA,CAAA,IAAI,CAACntC,aAAa,CAAG,IACrB,CAAA,IAAI,CAACnU,cAAc,CAAG,CACtB,CAAA,IAAI,CAAC1xG,SAAS,CAAG,IAAIsoJ,SAAU,CAAA,IAAI,CAACzoK,MAAM,EAC5C,CAmRF,CA/UMovK,MAEGgE,eAAe,CAAG,YAGvB,CALEhE,KAKGiE,CAAAA,eAAe,CAAG,YAGvB,CAREjE,KAAAA,CAQGn6E,eAAe,CAAG,WAGvB,CAXEm6E,KAWGl6E,CAAAA,gBAAgB,CAAG,YAGxB,CAdEk6E,KAAAA,CAcGj6E,qBAAqB,CAAG,iBAG7B,CAjBEi6E,KAiBGh6E,CAAAA,sBAAsB,CAAG,kBAG9B,CApBEg6E,KAAAA,CAoBG/5E,aAAa,CAAG,SAGrB,CAvBE+5E,KAAAA,CAuBG95E,cAAc,CAAG,UA0T1B,CAAA,MAAMg+E,IACJx1M,CAAAA,WAAAA,CAAY6hC,cAAc,CAAE4zK,GAAG,CAAEz2E,SAAS,CAAC,CACzC,IAAI,CAAC98F,MAAM,CAAGL,cACd,CAAA,IAAI,CAACw9F,eAAe,CAAGo2E,GACvB,CAAA,IAAI,CAACz2E,SAAS,CAAGA,UACnB,CACF,CAEA,MAAM02E,aAAgB,CAAA,CACpB,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACD,MAAMC,aAAgB,CAAA,CACpB,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACKC,MAAAA,MAAAA,SAAe11M,YAenB,CAAA,IAAI21M,SAAUj2M,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACk2M,UAAU,CAAGl2M,KAClB,CAAA,GAAI,IAAI,CAACm2M,MAAM,EAAI,IAAI,CAACD,UAAU,CAAE,CAClC,GAAI,IAAI,CAACE,mBAAmB,CAAE,CAC5B,IAAI,CAACC,YAAY,CAAG,KACtB,CAAA,KAAO,CACL,IAAI,CAACC,aAAa,GACpB,CACF,CACA,IAAI,CAAC/0M,IAAI,CAAC,eAAA,CAAiBvB,KAC7B,EAAA,CACA,IAAIi2M,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAIK,KAAMv2M,CAAAA,KAAK,CAAE,CACf,GAAIA,KAAU,GAAA,IAAI,CAACm2M,MAAM,CAAE,OAC3B,GAAI,IAAI,CAACA,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAC72M,GAAG,CAAC,YAAc,CAAA,IAAI,CAACk3M,YAAY,CAAE,IAAI,CACrD,CAAA,IAAI,CAACL,MAAM,CAAC72M,GAAG,CAAC,WAAa,CAAA,IAAI,CAACm3M,eAAe,CAAE,IAAI,CACvD,CAAA,IAAI,CAACN,MAAM,CAAC72M,GAAG,CAAC,cAAA,CAAgB,IAAI,CAACo3M,eAAe,CAAE,IAAI,EAC5D,CACA,IAAI,CAACP,MAAM,CAAGn2M,KAAAA,CACd,GAAI,IAAI,CAACm2M,MAAM,EAAI,IAAI,CAACD,UAAU,CAAE,CAClC,IAAI,CAACC,MAAM,CAACz2M,EAAE,CAAC,YAAA,CAAc,IAAI,CAAC82M,YAAY,CAAE,IAAI,CACpD,CAAA,IAAI,CAACL,MAAM,CAACz2M,EAAE,CAAC,WAAA,CAAa,IAAI,CAAC+2M,eAAe,CAAE,IAAI,CACtD,CAAA,IAAI,CAACN,MAAM,CAACz2M,EAAE,CAAC,cAAA,CAAgB,IAAI,CAACg3M,eAAe,CAAE,IAAI,CAAA,CACzD,GAAI,IAAI,CAACN,mBAAmB,CAAE,CAC5B,IAAI,CAACC,YAAY,CAAG,KACtB,CAAA,KAAO,CACL,IAAI,CAACC,aAAa,GACpB,CACF,CACA,IAAI,CAAC/0M,IAAI,CAAC,WAAavB,CAAAA,KAAAA,EACzB,CACA,IAAIu2M,KAAQ,EAAA,CACV,OAAO,IAAI,CAACJ,MAAM,CAEpB,IAAIQ,aAAAA,CAAc32M,KAAK,CAAE,CACvB,GAAI,IAAI,CAAC42M,cAAc,GAAK52M,MAAO,OACnC,IAAI,CAAC42M,cAAc,CAAG52M,KACtB,CAAA,IAAI,CAACuB,IAAI,CAAC,mBAAA,CAAqBvB,KAC/B,CAAA,CAAA,GAAI,IAAI,CAACm2M,MAAM,EAAI,IAAI,CAACD,UAAU,EAAI,IAAI,CAACW,UAAU,GAAKjhF,wBAA0B,CAAA,CAClF,GAAI,IAAI,CAACwgF,mBAAmB,CAAE,CAC5B,IAAI,CAACC,YAAY,CAAG,KACtB,CAAO,KAAA,CACL,IAAI,CAACC,aAAa,GACpB,CACF,CACF,CACA,IAAIK,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIC,UAAAA,CAAW72M,KAAK,CAAE,CACpB,GAAI,IAAI,CAACuwI,WAAW,GAAKvwI,KAAAA,CAAO,CAC9B,MACF,CACA,MAAMsyM,IAAO,CAAA,IAAI,CAAC/hE,WAAW,CAC7B,IAAI,CAACA,WAAW,CAAGvwI,KACnB,CAAA,IAAI,CAACuB,IAAI,CAAC,gBAAA,CAAkBvB,KAC5B,CAAA,CAAA,GAAIsyM,IAAS18E,GAAAA,wBAAAA,EAA4B51H,QAAU41H,wBAA0B,CAAA,CAC3E,GAAI,IAAI,CAACugF,MAAM,EAAI,IAAI,CAACD,UAAU,CAAE,CAClC,GAAI,IAAI,CAACE,mBAAmB,CAAE,CAC5B,IAAI,CAACC,YAAY,CAAG,KACtB,CAAA,KAAO,CACL,IAAI,CAACC,aAAa,GACpB,CACF,CACF,CACF,CACA,IAAIO,UAAAA,EAAa,CACf,OAAO,IAAI,CAACtmE,WACd,CACA,IAAIumE,MAAS,EAAA,CACX,OAAO,IAAI,CAACC,OAAO,CAErBT,aAAgB,EAAA,CACd,MAAM/lM,GAAAA,CAAM,IAAI,CAACwmM,OAAO,CAACz+M,MAAM,CAC/B,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAM0pI,IAAO,CAAA,IAAI,CAACg1E,OAAO,CAAC1+M,CAAAA,CAAE,CAC5B,GAAI0pI,IAAM,CAAA,CACRA,IAAKvgG,CAAAA,OAAO,GACd,CACF,CACA,MAAM6W,KAAQ,CAAA,IAAI,CAAC69J,UAAU,CAAC59M,MAAM,CACpC,IAAI,CAACy+M,OAAO,CAAG,IAAI1/M,KAAMghD,CAAAA,KAAAA,CAAAA,CACzB,MAAM2+J,cAAAA,CAAiB,IAAI,CAACH,UAAU,GAAKhhF,wBAA4B,EAAA,IAAI,CAAC0a,WAAW,GAAKza,uBAAAA,CAA0B,IAAI,CAACmhF,iBAAiB,CAAG,IAAI,CAACC,iBAAiB,CACrK,IAAI,IAAI7+M,EAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAM8+M,KAAQ,CAAA,IAAI,CAAChB,MAAM,CAACiB,MAAM,CAAC,IAAI,CAAClB,UAAU,CAAC79M,CAAAA,CAAE,CACnD,CAAA,IAAI,CAAC0+M,OAAO,CAAC1+M,CAAAA,CAAE,CAAG8+M,KAAAA,CAAQH,cAAe/0M,CAAAA,IAAI,CAAC,IAAI,CAAEk1M,KAAS,CAAA,CAAA,KAC/D,CACA,IAAI,CAAC51M,IAAI,CAAC,YAAA,EACZ,CACA21M,iBAAAA,CAAkBC,KAAK,CAAE,CACvB,MAAMr9J,IAAOq9J,CAAAA,KAAAA,CAAMr9J,IAAI,CACvB,MAAMu9J,QAAAA,CAAW,IAAI,CAAClB,MAAM,CAAChsK,OAAO,CAACnsB,KAAK,CAC1C,MAAMs5L,SAAY,CAAA,IAAI,CAACnB,MAAM,CAAChsK,OAAO,CAAClsB,MAAM,CAC5C,MAAMrG,CAAIkiC,CAAAA,IAAAA,CAAKvlC,CAAC,CAAG,IAAI,CAACqiM,cAAc,CACtC,MAAM9qL,CAAAA,CAAIguB,IAAKliC,CAAAA,CAAC,CAAG,IAAI,CAACg/L,cAAc,CACtC,MAAMW,EAAKJ,CAAAA,KAAAA,CAAMK,KAAK,CAAC9qM,CAAC,CACxB,MAAMk5J,EAAKuxC,CAAAA,KAAAA,CAAMK,KAAK,CAACpjM,CAAC,CACxB,MAAMkhC,SAAAA,CAAY,CAChB,CAACiiK,EAAK3/L,CAAAA,CAAAA,CACN,CAACguJ,EAAAA,CAAK95I,CACN,CAAA,CAAA,CACA,CAAC,CAAIyrL,CAAAA,EAAC,EAAK3/L,CAAAA,CACX,CAACguJ,EAAAA,CAAK95I,CACN,CAAA,CAAA,CACA,CAAC,CAAA,CAAIyrL,EAAC,EAAK3/L,CACX,CAAC,CAAA,CAAA,CAAIguJ,EAAC,EAAK95I,CACX,CAAA,CAAA,CACA,CAACyrL,EAAAA,CAAK3/L,CACN,CAAC,CAAA,CAAA,CAAIguJ,EAAC,EAAK95I,CACX,CAAA,CAAA,CACD,CACD,MAAM2rL,EAAK39J,CAAAA,IAAAA,CAAKptC,CAAC,CAAG2qM,QACpB,CAAA,MAAMK,GAAK,CAAM59J,CAAAA,IAAAA,CAAK1lC,CAAC,CAAGkjM,SAC1B,CAAA,MAAMK,EAAK,CAAC79J,CAAAA,IAAAA,CAAKptC,CAAC,CAAGotC,IAAKvlC,CAAAA,CAAC,EAAI8iM,QAC/B,CAAA,MAAMO,EAAK,CAAA,CAAA,CAAM,CAAC99J,IAAK1lC,CAAAA,CAAC,CAAG0lC,IAAAA,CAAKliC,CAAAA,EAAK0/L,SAAAA,CACrC,MAAMn1E,GAAM,CAAA,CACVs1E,EACAC,CAAAA,EAAAA,CACAC,EACAD,CAAAA,EAAAA,CACAC,EACAC,CAAAA,EAAAA,CACAH,EACAG,CAAAA,EAAAA,CACD,CACD,MAAM7O,IAAO,CAAA,IAAI3C,QACjB2C,CAAAA,IAAAA,CAAKzzJ,SAAS,CAAGA,SACjByzJ,CAAAA,IAAK/mE,CAAAA,OAAO,CAAG8zE,aACf/M,CAAAA,IAAAA,CAAK5mE,GAAG,CAAGA,GACX4mE,CAAAA,IAAAA,CAAKnmG,OAAO,CAAGmzG,aACf,CAAA,OAAOn0E,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAAChkF,OAAO,CAAEkrJ,IAAAA,CACzC,CACAkO,iBAAAA,EAAoB,CAClB,MAAMzQ,EAAKtsL,CAAAA,IAAAA,CAAK5D,GAAG,CACnB,MAAMmwL,EAAAA,CAAK,CACX,CAAA,MAAME,EAAK,CAAA,CAAA,CACX,MAAMrxJ,SAAAA,CAAY,EAAE,CACpB,MAAM0sF,OAAU,CAAA,EAAE,CAClB,MAAMG,GAAM,CAAA,EAAE,CACd,MAAMv/B,OAAU,CAAA,EAAE,CAClB,IAAI4kG,QAAW,CAAA,CAAA,CACf,IAAI,IAAInvM,CAAI,CAAA,CAAA,CAAGA,CAAKouM,EAAAA,EAAAA,CAAIpuM,CAAI,EAAA,CAAA,CAC1B,MAAMi0B,CAAAA,CAAIj0B,CAAM,GAAA,CAAA,EAAKA,CAAMouM,GAAAA,EAAAA,CAAK,EAAI,CACpC,CAAA,IAAI,IAAI7nH,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAK+nH,EAAI/nH,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAMlyE,CAAI,CAAA,CAAC85L,EAAG95L,CAAAA,CAAC,CAAG,CAAA,CAAM85L,EAAG95L,CAAAA,CAAC,EAAIrU,CAAK,EAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAKouM,CAAAA,EAAAA,CAClD,MAAMryL,CAAAA,CAAI,CACV,CAAA,MAAMG,EAAI,EAAE,CAACiyL,EAAAA,CAAGpyL,CAAC,CAAG,CAAMoyL,CAAAA,EAAAA,CAAGpyL,CAAC,EAAIwqE,CAAAA,EAAK,CAAI,CAAA,CAAA,CAAI,CAAA,CAAA,CAAK+nH,EAAC,CAAA,CACrD,MAAM7uM,CAAAA,CAAI8mF,CAAM,GAAA,CAAA,EAAKA,CAAM+nH,GAAAA,EAAAA,CAAK,CAAI,CAAA,CAAA,CACpCrxJ,SAAUn8C,CAAAA,IAAI,CAAC,CAACuT,EAAG0H,CAAGG,CAAAA,CAAAA,CAAAA,CACtBytH,OAAQ7oI,CAAAA,IAAI,CAAC,CAAA,CAAK,CAAK,CAAA,CAAA,CAAA,CACvBgpI,GAAIhpI,CAAAA,IAAI,CAACmzB,CAAAA,CAAGx0B,CACZ,CAAA,CAAA,GAAIO,CAAIouM,CAAAA,EAAAA,EAAM7nH,CAAI+nH,CAAAA,EAAAA,CAAI,CACpB/jG,OAAAA,CAAQzpG,IAAI,CAACquM,QAAWb,CAAAA,EAAAA,CAAK,CAAGa,CAAAA,QAAAA,CAAW,CAAGA,CAAAA,QAAAA,CAAAA,CAC9C5kG,OAAQzpG,CAAAA,IAAI,CAACquM,QAAWb,CAAAA,EAAAA,CAAK,CAAGa,CAAAA,QAAAA,CAAWb,EAAK,CAAA,CAAA,CAAGa,QAAW,CAAA,CAAA,EAChE,CACAA,QAAAA,GACF,CACF,CACA,MAAMuB,IAAAA,CAAO,IAAI3C,QACjB2C,CAAAA,IAAAA,CAAKzzJ,SAAS,CAAGA,SACjByzJ,CAAAA,IAAK/mE,CAAAA,OAAO,CAAGA,OACf+mE,CAAAA,IAAAA,CAAK5mE,GAAG,CAAGA,GACX4mE,CAAAA,IAAAA,CAAKnmG,OAAO,CAAGA,OACf,CAAA,OAAOg/B,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAAChkF,OAAO,CAAEkrJ,IAAAA,CACzC,CACAyN,YAAAA,CAAaY,MAAM,CAAE,CACnB,GAAI,IAAI,CAAChB,mBAAmB,CAAE,CAC5B,IAAI,CAACC,YAAY,CAAG,KACtB,MAAO,CACL,IAAI,CAACC,aAAa,GACpB,CACF,CACAG,eAAAA,CAAgBoB,QAAQ,CAAEV,KAAK,CAAE,CAC/B,MAAMx0M,IAAM,IAAI,CAACuzM,UAAU,CAAC50M,OAAO,CAACu2M,QACpC,CAAA,CAAA,GAAIl1M,GAAM,CAAA,CAAA,CAAG,OACb,GAAIw0M,KAAO,CAAA,CACT,GAAI,IAAI,CAACN,UAAU,GAAKjhF,wBAA0B,CAAA,CAChD,IAAI,CAACmhF,OAAO,CAACp0M,GAAI,CAAA,CAAG,IAAI,CAACu0M,iBAAiB,CAACC,KAC7C,EAAA,CACF,CAAO,KAAA,CACL,IAAI,CAACJ,OAAO,CAACp0M,GAAI,CAAA,CAAG,KACtB,CACA,IAAI,CAACpB,IAAI,CAAC,YAAA,EACZ,CACAm1M,eAAAA,CAAgBmB,QAAQ,CAAE,CACxB,MAAMl1M,GAAM,CAAA,IAAI,CAACuzM,UAAU,CAAC50M,OAAO,CAACu2M,QAAAA,CAAAA,CACpC,GAAIl1M,GAAAA,CAAM,CAAG,CAAA,OACb,IAAI,CAACo0M,OAAO,CAACp0M,GAAAA,CAAI,CAAG,IAAA,CACpB,IAAI,CAACpB,IAAI,CAAC,YAAA,EACZ,CACAsnE,WAAAA,EAAc,CACZ,IAAI,CAACutI,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,YAAY,CAAG,MACtB,CACAptI,SAAAA,EAAY,CACV,IAAI,CAACmtI,mBAAmB,CAAG,KAAA,CAC3B,GAAI,IAAI,CAACC,YAAY,EAAI,IAAI,CAACF,MAAM,EAAI,IAAI,CAACD,UAAU,CAAE,CACvD,IAAI,CAACI,aAAa,GACpB,CACA,IAAI,CAACD,YAAY,CAAG,MACtB,CACA70K,OAAU,EAAA,CACR,IAAK,MAAMugG,IAAQ,IAAA,IAAI,CAACg1E,OAAO,CAAC,CAC9B,GAAIh1E,IAAAA,CAAM,CACRA,IAAKvgG,CAAAA,OAAO,GACd,CACF,CACA,IAAI,CAACu1K,OAAO,CAACz+M,MAAM,CAAG,EACxB,CAjOA8H,WAAAA,CAAYkiC,MAAM,CAAEx4B,OAAO,CAAC,CAC1B,KAAK,EACL,CAAA,IAAI,CAAC+zC,OAAO,CAAGvb,MACf,CAAA,IAAI,CAACs0K,cAAc,CAAG9sM,OAAAA,EAAWA,OAAQ6sM,CAAAA,aAAa,GAAKx2M,SAAAA,CAAY2J,OAAQ6sM,CAAAA,aAAa,CAAG,CAC/F,CAAA,IAAI,CAACpmE,WAAW,CAAGzmI,OAAAA,EAAWA,OAAQ+sM,CAAAA,UAAU,GAAK12M,SAAAA,CAAY2J,OAAQ+sM,CAAAA,UAAU,CAAGjhF,wBACtF,CAAA,IAAI,CAACugF,MAAM,CAAGrsM,OAAAA,EAAWA,QAAQysM,KAAK,GAAKp2M,SAAY2J,CAAAA,OAAAA,CAAQysM,KAAK,CAAG,IACvE,CAAA,IAAI,CAACL,UAAU,CAAGpsM,OAAWA,EAAAA,OAAAA,CAAQmsM,SAAS,GAAK91M,SAAY2J,CAAAA,OAAAA,CAAQmsM,SAAS,CAAG,IACnF,CAAA,IAAI,CAACc,OAAO,CAAG,EACf,CAAA,IAAI,CAACX,mBAAmB,CAAG,KAC3B,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,GAAI,IAAI,CAACF,MAAM,EAAI,IAAI,CAACD,UAAU,CAAE,CAClC,IAAI,CAACI,aAAa,GACpB,CACF,CAqNF,CAEA,MAAMwB,YAAqBx3M,SAAAA,YAAAA,CAMzB,IAAI6pC,OAAQnqC,CAAAA,KAAK,CAAE,CACjB,IAAI,CAAC+3M,QAAQ,CAAG/3M,KAChB,CAAA,IAAI,CAACuB,IAAI,CAAC,aAAA,CAAevB,KAC3B,EAAA,CACA,IAAImqC,OAAAA,EAAU,CACZ,OAAO,IAAI,CAAC4tK,QACd,CACA,IAAIX,MAAOp3M,CAAAA,KAAK,CAAE,CAChB,IAAI,CAACg4M,OAAO,CAAGh4M,KAAAA,CACf,IAAI,CAACuB,IAAI,CAAC,YAAcvB,CAAAA,KAAAA,EAC1B,CACA,IAAIo3M,MAAS,EAAA,CACX,OAAO,IAAI,CAACY,OAAO,CAErBC,QAAS/3M,CAAAA,GAAG,CAAEmS,IAAI,CAAE,CAClB,IAAI8kM,KAAAA,CAAQ,IAAI,CAACa,OAAO,CAAC93M,GAAAA,CAAI,CAC7B,GAAI,CAACi3M,KAAAA,CAAO,CACVA,KAAAA,CAAQ,CACNr9J,IAAAA,CAAMznC,IAAKynC,CAAAA,IAAI,CAACnsC,KAAK,EACrB6pM,CAAAA,KAAAA,CAAOnlM,IAAKmlM,CAAAA,KAAK,CAAC7pM,KAAK,EACvBuqM,CAAAA,MAAAA,CAAQ7lM,IAAK6lM,CAAAA,MAAM,CAACvqM,KAAK,EAC3B,CACA,CAAA,IAAI,CAACqqM,OAAO,CAAC93M,GAAI,CAAA,CAAGi3M,MACtB,CAAA,KAAO,CACLA,KAAAA,CAAMr9J,IAAI,CAAC1iD,IAAI,CAACib,IAAKynC,CAAAA,IAAI,CACzBq9J,CAAAA,KAAAA,CAAMK,KAAK,CAACpgN,IAAI,CAACib,IAAKmlM,CAAAA,KAAK,CAC3BL,CAAAA,KAAAA,CAAMe,MAAM,CAAC9gN,IAAI,CAACib,IAAK6lM,CAAAA,MAAM,EAC/B,CACA,IAAI,CAAC32M,IAAI,CAAC,WAAA,CAAarB,GAAInI,CAAAA,QAAQ,EAAIo/M,CAAAA,KAAAA,EACzC,CACAgB,WAAAA,CAAYj4M,GAAG,CAAE,CACf,MAAMi3M,KAAQ,CAAA,IAAI,CAACa,OAAO,CAAC93M,GAAAA,CAAI,CAC/B,GAAIi3M,KAAO,CAAA,CACT,OAAO,IAAI,CAACa,OAAO,CAAC93M,GAAI,CAAA,CACxB,IAAI,CAACqB,IAAI,CAAC,cAAgBrB,CAAAA,GAAAA,CAAInI,QAAQ,EAAA,CAAIo/M,KAC5C,EAAA,CACF,CACA31K,OAAAA,EAAU,CACR,GAAI,IAAI,CAACu2K,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACv2K,OAAO,GACvB,CACF,CA9CAphC,WAAAA,EAAa,CACX,KAAK,EACL,CAAA,IAAI,CAAC23M,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,OAAO,CAAG,KACjB,CA2CF,CAEA,MAAMI,YAAAA,CACJh4M,WAAYqP,CAAAA,IAAI,CAAEkN,QAAQ,CAAEqiI,QAAQ,CAAErkI,KAAK,CAAC,CAC1C,IAAI,CAAClL,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACkN,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACqiI,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACrkI,KAAK,CAAGA,MACf,CACF,CACA,MAAM09L,aAAAA,CACJj4M,WAAa,EAAA,CACX,IAAI,CAAC8iG,KAAK,CAAG,EACb,CAAA,IAAI,CAACo1G,KAAK,CAAG,GAAE,CAEnB,CACA,MAAMC,SAOJC,CAAAA,OAAAA,CAAQ78M,IAAI,CAAE,CACZ,OAAO,IAAI,CAAC88M,SAAS,CAAC98M,IAAK,CAC7B,CACA+8M,OAAAA,CAAQjwE,IAAI,CAAE,CACZ,IAAI,CAACkwE,MAAM,CAACx/M,IAAI,CAACsvI,IACjB,CAAA,CAAA,IAAI,CAACgwE,SAAS,CAAChwE,IAAKvlC,CAAAA,KAAK,CAAC,CAAGulC,KAC/B,CACA,IAAIlI,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACo4E,MACd,CAfAv4M,WAAAA,EAAa,CACX,IAAI,CAACzE,IAAI,CAAG,EACZ,CAAA,IAAI,CAACovF,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAC4tH,MAAM,CAAG,EACd,CAAA,IAAI,CAACF,SAAS,CAAG,GACnB,CAWF,CAEA,MAAMG,eAUJC,CAAAA,SAAAA,EAAY,CACV,OAAO,IAAI,CAACC,WACd,CACAC,SAAUtwE,CAAAA,IAAI,CAAE,CACd,IAAI,CAACqwE,WAAW,CAAGrwE,KACrB,CAdAroI,WAAa,EAAA,CACX,IAAI,CAAC44M,QAAQ,CAAG,KAChB,CAAA,IAAI,CAAC91G,KAAK,CAAG,EACb,CAAA,IAAI,CAAC+1G,UAAU,CAAG,EAClB,CAAA,IAAI,CAACC,KAAK,CAAG,IAAIh5L,IACjB,CAAA,IAAI,CAACi5L,IAAI,CAAG,IAAI7kM,IAChB,CAAA,IAAI,CAACgsI,MAAM,CAAG,IAAIhsI,IAClB,CAAA,IAAI,CAACwkM,WAAW,CAAG,KACrB,CAOF,CACA,MAAMM,QAAAA,CAqBJ,IAAIC,SAAUr5M,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACs5M,UAAU,CAAGt5M,KAClB,CAAA,IAAI,CAAC6lH,WAAW,CAAG,EACrB,CACA,IAAIwzF,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAIzzF,WAAY7lH,CAAAA,KAAK,CAAE,CACrB,IAAI,CAACu5M,KAAK,CAAGv5M,KAAAA,CACb,MAAMw5M,QAAAA,CAAW,IAAI,CAACC,iBAAiB,CAACnhN,MAAM,CAC9C,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAImhN,CAAAA,QAAAA,CAAUnhN,CAAI,EAAA,CAAA,CAC/B,MAAMowI,IAAAA,CAAO,IAAI,CAACgxE,iBAAiB,CAACphN,CAAE,CAAA,CACtC,MAAMqhN,QAAAA,CAAWjxE,KAAKvlC,KACtB,CAAA,IAAI,CAACy2G,eAAe,CAACD,QAAAA,CAAS,CAAG,EACnC,CACA,IAAI,CAACrc,OAAO,CAAC,CACb,CAAA,CAAA,IAAI,CAACuc,WAAW,GAClB,CACA,IAAI/zF,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC0zF,KACd,CACA,IAAIC,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,iBAAiB,CAACnhN,MAChC,CACA+kM,OAAAA,CAAQl4C,KAAK,CAAE,CACb,GAAI,IAAI,CAACm0D,UAAU,GAAK,IAAM,CAAA,CAC5B,MAAM/4E,KAAAA,CAAQ,IAAI,CAAC+4E,UAAU,CAACX,MAAM,CACpC,MAAM5tH,QAAW,CAAA,IAAI,CAACuuH,UAAU,CAACvuH,QAAQ,CACzC,GAAI,IAAI,CAACwuH,KAAK,GAAKxuH,QAAY,EAAA,CAAC,IAAI,CAAC8uH,OAAO,CAAE,CAC5C,MACF,CACA,IAAI,CAACN,KAAK,EAAIp0D,KAAAA,CACd,GAAI,IAAI,CAACo0D,KAAK,CAAGxuH,QAAU,CAAA,CACzB,IAAI,CAACwuH,KAAK,CAAG,IAAI,CAACM,OAAO,CAAG,CAAM9uH,CAAAA,QAAAA,CAClC,IAAI,IAAI1yF,CAAI,CAAA,CAAA,CAAGA,CAAIkoI,CAAAA,KAAAA,CAAMjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,MAAMowI,IAAAA,CAAOlI,KAAK,CAACloI,CAAE,CAAA,CACrB,MAAMqhN,QAAAA,CAAWjxE,KAAKvlC,KACtB,CAAA,IAAI,CAACy2G,eAAe,CAACD,QAAAA,CAAS,CAAG,EACnC,CACF,CAAA,KAAO,GAAI,IAAI,CAACH,KAAK,CAAG,CAAA,CAAG,CACzB,IAAI,CAACA,KAAK,CAAG,IAAI,CAACM,OAAO,CAAG9uH,QAAAA,CAAW,CACvC,CAAA,IAAI,IAAI1yF,CAAI,CAAA,CAAA,CAAGA,CAAIkoI,CAAAA,KAAAA,CAAMjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,MAAMowI,IAAAA,CAAOlI,KAAK,CAACloI,CAAE,CAAA,CACrB,MAAMqhN,QAAAA,CAAWjxE,IAAKvlC,CAAAA,KAAK,CAC3B,IAAI,CAACy2G,eAAe,CAACD,QAAS,CAAA,CAAGjxE,IAAK6vE,CAAAA,KAAK,CAAChgN,MAAM,CAAG,EACvD,CACF,CACA,MAAMyN,MAASo/I,CAAAA,KAAAA,EAAS,CAAI,CAAA,CAAA,CAAI,CAAC,CAAA,CACjC,IAAI,IAAI9sJ,CAAI,CAAA,CAAA,CAAGA,CAAIkoI,CAAAA,KAAAA,CAAMjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,MAAMowI,IAAAA,CAAOlI,KAAK,CAACloI,CAAE,CAAA,CACrB,MAAMqhN,QAAAA,CAAWjxE,IAAKvlC,CAAAA,KAAK,CAC3B,MAAM5yF,IAAAA,CAAOm4H,IAAK6vE,CAAAA,KAAK,CACvB,MAAMwB,SAAY,CAAA,IAAI,CAACC,oBAAoB,CAACL,QAAAA,CAAS,CACrD,GAAII,SAAc35M,GAAAA,SAAAA,CAAW,CAC3B,QACF,CACA,IAAI65M,QAAW,CAAA,KAAA,CACf,GAAI1pM,IAAAA,CAAKhY,MAAM,GAAK,CAAG,CAAA,CACrB,IAAI,IAAI2hN,aAAe,IAAI,CAACN,eAAe,CAACD,QAAS,CAAA,CAAEO,YAAe3pM,CAAAA,IAAAA,CAAKhY,MAAM,CAAG,CAAK2hN,EAAAA,YAAAA,EAAgB,CAAGA,CAAAA,YAAAA,EAAgBl0M,MAAO,CAAA,CACjI,MAAMm0M,EAAAA,CAAK5pM,IAAI,CAAC2pM,YAAa,CAAA,CAC7B,MAAME,EAAAA,CAAK7pM,IAAI,CAAC2pM,YAAe,CAAA,CAAA,CAAE,CACjC,GAAIC,GAAGzqM,IAAI,EAAI,IAAI,CAAC8pM,KAAK,EAAIY,EAAG1qM,CAAAA,IAAI,EAAI,IAAI,CAAC8pM,KAAK,CAAE,CAClD,MAAMhtM,KAAAA,CAAQ,CAAC,IAAI,CAACgtM,KAAK,CAAGW,EAAGzqM,CAAAA,IAAI,GAAK0qM,EAAAA,CAAG1qM,IAAI,CAAGyqM,GAAGzqM,IAAG,CACxDqqM,CAAAA,SAAAA,CAAUX,IAAI,CAAC7sM,IAAI,CAAC4tM,EAAGv9L,CAAAA,QAAQ,CAAEw9L,EAAAA,CAAGx9L,QAAQ,CAAEpQ,KAC9CutM,CAAAA,CAAAA,SAAAA,CAAUZ,KAAK,CAAC72L,KAAK,CAAC63L,EAAGl7D,CAAAA,QAAQ,CAAEm7D,EAAAA,CAAGn7D,QAAQ,CAAEzyI,KAChDutM,CAAAA,CAAAA,SAAAA,CAAUx5D,MAAM,CAACh0I,IAAI,CAAC4tM,EAAAA,CAAGv/L,KAAK,CAAEw/L,EAAGx/L,CAAAA,KAAK,CAAEpO,KAAAA,CAC1CutM,CAAAA,SAAAA,CAAUd,QAAQ,CAAG,IACrB,CAAA,IAAI,CAACW,eAAe,CAACD,QAAS,CAAA,CAAGO,YACjCD,CAAAA,QAAAA,CAAW,IACX,CAAA,KACF,CACF,CACF,CACA,GAAI1pM,IAAKhY,CAAAA,MAAM,GAAK,CAAK,EAAA,CAAC0hN,QAAY,EAAA,IAAI,CAACT,KAAK,GAAK,CAAA,EAAO,IAAI,CAACM,OAAO,CAAE,CACxEC,SAAAA,CAAUX,IAAI,CAAC/hN,IAAI,CAACkZ,IAAI,CAAC,CAAE,CAAA,CAACqM,QAAQ,CAAA,CACpCm9L,SAAUZ,CAAAA,KAAK,CAAC9hN,IAAI,CAACkZ,IAAI,CAAC,CAAE,CAAA,CAAC0uI,QAAQ,CAAA,CACrC86D,SAAUx5D,CAAAA,MAAM,CAAClpJ,IAAI,CAACkZ,IAAI,CAAC,CAAA,CAAE,CAACqK,KAAK,CACnCm/L,CAAAA,SAAUd,CAAAA,QAAQ,CAAG,KACvB,CACF,CACF,CACF,CACA3rK,KAAM+sK,CAAAA,KAAK,CAAEC,KAAK,CAAE9tM,KAAK,CAAE,CACzB,MAAMitM,QAAW,CAAA,IAAI,CAACC,iBAAiB,CAACnhN,MAAM,CAC9C,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAImhN,QAAUnhN,CAAAA,CAAAA,EAAAA,CAAI,CAC/B,MAAMiiN,IAAOF,CAAAA,KAAAA,CAAMX,iBAAiB,CAACphN,CAAE,CAAA,CACvC,MAAMkiN,IAAAA,CAAOF,KAAMZ,CAAAA,iBAAiB,CAACphN,CAAAA,CAAE,CACvC,MAAMmiN,MAAAA,CAAS,IAAI,CAACf,iBAAiB,CAACphN,CAAE,CAAA,CACxC,GAAIiiN,IAAAA,CAAKtB,QAAQ,EAAIuB,IAAKvB,CAAAA,QAAQ,CAAE,CAClCwB,MAAOtB,CAAAA,KAAK,CAAC72L,KAAK,CAACi4L,IAAAA,CAAKpB,KAAK,CAAEmB,KAAMZ,CAAAA,iBAAiB,CAACphN,CAAAA,CAAE,CAAC6gN,KAAK,CAAE3sM,KACjEiuM,CAAAA,CAAAA,MAAAA,CAAOrB,IAAI,CAAC7sM,IAAI,CAACguM,IAAKnB,CAAAA,IAAI,CAAEkB,KAAAA,CAAMZ,iBAAiB,CAACphN,CAAE,CAAA,CAAC8gN,IAAI,CAAE5sM,KAAAA,CAAAA,CAC7DiuM,MAAOl6D,CAAAA,MAAM,CAACh0I,IAAI,CAACguM,IAAAA,CAAKh6D,MAAM,CAAEi6D,IAAKj6D,CAAAA,MAAM,CAAE/zI,KAAAA,CAC7CiuM,CAAAA,MAAOxB,CAAAA,QAAQ,CAAG,KACpB,CAAO,KAAA,GAAIsB,IAAKtB,CAAAA,QAAQ,CAAE,CACxBwB,MAAOtB,CAAAA,KAAK,CAAC9hN,IAAI,CAACkjN,IAAAA,CAAKpB,KAAK,CAAA,CAC5BsB,MAAOrB,CAAAA,IAAI,CAAC/hN,IAAI,CAACkjN,IAAAA,CAAKnB,IAAI,CAAA,CAC1BqB,MAAOl6D,CAAAA,MAAM,CAAClpJ,IAAI,CAACkjN,IAAKh6D,CAAAA,MAAM,CAC9Bk6D,CAAAA,MAAOxB,CAAAA,QAAQ,CAAG,KACpB,CAAO,KAAA,GAAIuB,IAAKvB,CAAAA,QAAQ,CAAE,CACxBwB,MAAOtB,CAAAA,KAAK,CAAC9hN,IAAI,CAACmjN,IAAAA,CAAKrB,KAAK,CAAA,CAC5BsB,MAAOrB,CAAAA,IAAI,CAAC/hN,IAAI,CAACmjN,IAAAA,CAAKpB,IAAI,CAAA,CAC1BqB,OAAOl6D,MAAM,CAAClpJ,IAAI,CAACmjN,IAAKj6D,CAAAA,MAAM,CAC9Bk6D,CAAAA,MAAOxB,CAAAA,QAAQ,CAAG,KACpB,CACF,CACF,CACApzB,QAAAA,CAASD,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAGA,KAAAA,CACb,GAAIA,KAAAA,CAAO,CACT,IAAI,IAAIttL,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACohN,iBAAiB,CAACnhN,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpD,MAAMyhN,SAAY,CAAA,IAAI,CAACL,iBAAiB,CAACphN,CAAAA,CAAE,CAC3C,MAAM2zM,SAAYrmB,CAAAA,KAAAA,CAAMpmD,UAAU,CAACu6E,SAAU52G,CAAAA,KAAK,CAClD,CAAA,IAAI,CAACu2G,iBAAiB,CAACphN,CAAAA,CAAE,CAAC0gN,SAAS,CAAC/M,SACtC,EAAA,CACF,CAAO,KAAA,CACL,IAAI,IAAI3zM,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACohN,iBAAiB,CAACnhN,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpD,IAAI,CAACohN,iBAAiB,CAACphN,CAAAA,CAAE,CAAC0gN,SAAS,CAAC,IAAA,EACtC,CACF,CACF,CACAa,WAAc,EAAA,CACZ,GAAI,IAAI,CAACj0B,KAAK,CAAE,CACd,IAAI,IAAIttL,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACohN,iBAAiB,CAACnhN,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpD,MAAMyhN,SAAY,CAAA,IAAI,CAACL,iBAAiB,CAACphN,CAAAA,CAAE,CAC3C,GAAIyhN,UAAUd,QAAQ,CAAE,CACtB,MAAMxmE,SAAYsnE,CAAAA,SAAAA,CAAUjB,SAAS,EAAA,CACrCrmE,SAAUoM,CAAAA,aAAa,CAACxnJ,IAAI,CAAC0iN,SAAAA,CAAUX,IAAI,CAAA,CAC3C3mE,SAAUqM,CAAAA,aAAa,CAACznJ,IAAI,CAAC0iN,SAAAA,CAAUZ,KAAK,CAAA,CAC5C1mE,SAAUsM,CAAAA,UAAU,CAAC1nJ,IAAI,CAAC0iN,SAAAA,CAAUx5D,MAAM,CAC1C,CAAA,GAAI,CAAC9N,SAAAA,CAAU2M,WAAW,CAAE,CAC1B3M,SAAAA,CAAUuO,aAAa,GACzB,CACA+4D,SAAAA,CAAUd,QAAQ,CAAG,MACvB,CACF,CACF,CACF,CA5JA54M,WAAAA,CAAYulL,KAAK,CAAC,CAChB,IAAI,CAACk0B,OAAO,CAAG,IACf,CAAA,IAAI,CAACP,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,KAAK,CAAG,CACb,CAAA,IAAI,CAACE,iBAAiB,CAAG,EACzB,CAAA,IAAI,CAACM,oBAAoB,CAAG,EAC5B,CAAA,IAAI,CAACJ,eAAe,CAAG,EACvB,CAAA,IAAI,CAACh0B,KAAK,CAAG,IACb,CAAA,MAAM80B,mBAAsB,CAAChyE,IAC3B,EAAA,CAAA,MAAMqxE,SAAY,CAAA,IAAIlB,eACtBkB,CAAAA,SAAU52G,CAAAA,KAAK,CAAGulC,IAAAA,CAAK9sI,IAAI,CAC3B,IAAI,CAAC89M,iBAAiB,CAACtgN,IAAI,CAAC2gN,SAC5B,CAAA,CAAA,IAAI,CAACC,oBAAoB,CAACtxE,IAAAA,CAAK9sI,IAAI,CAAC,CAAGm+M,SACvC,CAAA,IAAI,CAACH,eAAe,CAAClxE,IAAAA,CAAK9sI,IAAI,CAAC,CAAG,CAAA,CAClC,IAAI,IAAItD,CAAI,CAAA,CAAA,CAAGA,CAAIowI,CAAAA,IAAAA,CAAK4G,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5CoiN,mBAAoBhyE,CAAAA,IAAAA,CAAK4G,SAAS,CAACh3I,CAAAA,CAAE,EACvC,CACF,CACAoiN,CAAAA,mBAAAA,CAAoB90B,KACtB,EAAA,CA0IF,CAEA,MAAM+0B,WAAc,CAAA,IAAIlgM,IACxB,CAAA,MAAMmgM,UAgBJt2G,CAAAA,MAAAA,CAAOu2G,WAAW,CAAEC,YAAY,CAAE/gK,IAAI,CAAE,EACxCghK,QAAS7jN,CAAAA,MAAM,CAAEg/C,MAAM,CAAE6D,IAAI,CAAE,CAC7B,IAAI24C,QACJ,CAAA,GAAI34C,IAAM,CAAA,CACR,MAAMliC,CAAAA,CAAI3gB,MAASA,CAAAA,MAAAA,CAAO+mB,KAAK,CAAG,IAAI,CAACskB,MAAM,CAACtkB,KAAK,CACnD,MAAM8N,CAAAA,CAAI70B,MAASA,CAAAA,MAAAA,CAAOgnB,MAAM,CAAG,IAAI,CAACqkB,MAAM,CAACrkB,MAAM,CACrDw0E,SAAWioH,WAAY95M,CAAAA,GAAG,CAACk5C,IAAAA,CAAKptC,CAAC,CAAGkL,CAAGkiC,CAAAA,IAAAA,CAAK1lC,CAAC,CAAG0X,CAAGguB,CAAAA,IAAAA,CAAKvlC,CAAC,CAAGqD,CAAGkiC,CAAAA,IAAAA,CAAKliC,CAAC,CAAGkU,CAC1E,EAAA,CACA,IAAI,CAACwW,MAAM,CAACsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CAC5CquF,CAAAA,kBAAAA,CAAmB,IAAI,CAACv6F,MAAM,CAAErrC,MAAAA,CAAQg/C,MAAQw8C,CAAAA,QAAAA,EAClD,CAzBAryF,WAAAA,CAAY6hC,cAAc,CAAC,CACzB,IAAI,CAACK,MAAM,CAAGL,cACd,CAAA,IAAI,CAAC84K,gBAAgB,CAAG,MAC1B,CAuBF,CArBI,UANEJ,CAMGK,gBAAgB,CAAG,CAAC;;;;;;;;EAQ3B,CAeF,CAAMC,MAAAA,oBAAAA,SAA6Bh4G,UACjC,CAAA,IAAIhtD,MAAOA,CAAAA,MAAM,CAAE,CACjB,IAAI,CAACilK,UAAU,EAAE15K,OACjB,EAAA,CAAA,IAAI,CAAC05K,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,OAAO,CAAGllK,MACf,CAAA,GAAIA,MAAQ,CAAA,CACV,IAAI,CAACilK,UAAU,CAAG,IAAI1+E,UAAWvmF,CAAAA,MAAAA,EACnC,CACF,CACA,IAAIA,MAAAA,EAAS,CACX,OAAO,IAAI,CAACklK,OACd,CACAv3G,OAAAA,EAAU,CACR,MAAMthE,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1BA,MAAAA,CAAOsV,aAAa,CAAC,IAAI,CAACb,UAAU,CACpCzU,CAAAA,MAAAA,CAAOyV,WAAW,CAAC,IAAI,CAACd,QAAQ,CAAA,CAChC3U,MAAOwV,CAAAA,aAAa,CAAC,IAAI,CAACd,UAAU,CACpC1U,CAAAA,MAAAA,CAAOmV,eAAe,CAAC,IAAI,CAACC,YAAY,CAAE,IAAI,CAACC,WAAW,CAAA,CAC1D,IAAI,CAACujK,UAAU,CAAC72G,MAAM,GACxB,CACAjkG,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAAC88M,OAAO,CAAG,IAAM,CAAA,IAAI,CAACD,UAAU,CAAG,IAAA,CAAM,IAAI,CAACjkK,QAAQ,CAAG/nB,aAAe,CAAA,IAAI,CAAC6nB,UAAU,CAAG3J,UAAAA,CAAWoB,OAAO,CAAE,IAAI,CAACwI,UAAU,CAAG/H,UAAAA,CAAWO,OAAO,CAAE,IAAI,CAACkI,YAAY,CAAG,IAAM,CAAA,IAAI,CAACC,WAAW,CAAG,KACvN,CACF,CAEA,MAAMyjK,gBAAAA,CACJh7M,WAAa,EAAA,CACX,IAAI,CAACszC,WAAW,CAAG,KACnB,CAAA,IAAI,CAACg/G,YAAY,CAAG,IACpB,CAAA,IAAI,CAACr3B,IAAI,CAAG,CACZ,CAAA,IAAI,CAACqQ,SAAS,CAAG,KACjB,CAAA,IAAI,CAAC0nB,SAAS,CAAG/mC,UACjB,CAAA,IAAI,CAACgvF,eAAe,CAAG,KACvB,CAAA,IAAI,CAAC3wE,WAAW,CAAG,KACnB,CAAA,IAAI,CAACxL,IAAI,CAAG,KACZ,CAAA,IAAI,CAACkQ,KAAK,CAAG,KACb,CAAA,IAAI,CAACq0D,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACC,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,uBAAuB,CAAG,KAC/B,CAAA,IAAI,CAAC0X,cAAc,CAAG,CACtB,CAAA,IAAI,CAAClmD,wBAAwB,CAAG,IAChC,CAAA,IAAI,CAACmmD,+BAA+B,CAAG,KACvC,CAAA,IAAI,CAACC,+BAA+B,CAAG,KACvC,CAAA,IAAI,CAACC,2BAA2B,CAAG,CACnC,CAAA,IAAI,CAACC,kCAAkC,CAAG,KAC1C,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,IAAI,CAACC,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACC,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,mBAAmB,CAAG,KAC3B,CAAA,IAAI,CAACC,KAAK,CAAG,KACb,CAAA,IAAI,CAACC,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACC,SAAS,CAAG,KACjB,CAAA,IAAI,CAACC,SAAS,CAAG,KACjB,CAAA,IAAI,CAACC,IAAI,CAAG,KACZ,CAAA,IAAI,CAACC,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACC,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,OAAO,CAAG,KACf,CAAA,IAAI,CAACC,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAAC1rH,eAAe,CAAG,KACvB,CAAA,IAAI,CAAC2rH,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,aAAa,CAAG3lF,WACrB,CAAA,IAAI,CAAC4lF,mBAAmB,CAAG5lF,WAC3B,CAAA,IAAI,CAAC6lF,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,WAAW,CAAG,KACnB,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACC,YAAY,CAAG,CACpB,CAAA,IAAI,CAACC,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,IAAI,CAACC,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,UAAU,CAAG,KAClB,CAAA,IAAI,CAACxoE,GAAG,CAAGpoB,QACX,CAAA,IAAI,CAAC5+G,KAAK,CAAG6jH,UACb,CAAA,IAAI,CAACklE,OAAO,CAAG,CAAC,CAChB,CAAA,IAAI,CAAC0mB,gBAAgB,CAAG7qF,kBACxB,CAAA,IAAI,CAAC8qF,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,yBAAyB,CAAG,IACjC,CAAA,IAAI,CAACC,aAAa,CAAG,UACrB,CAAA,IAAI,CAACC,eAAe,CAAG,IACvB,CAAA,IAAI,CAAC5wC,eAAe,CAAG,CACvB,CAAA,IAAI,CAAC6wC,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACC,sBAAsB,CAAG,KAC9B,CAAA,IAAI,CAACpzD,MAAM,CAAG,EACd,CAAA,IAAI,CAACqzD,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,cAAc,CAAG,EACtB,CAAA,IAAI,CAACC,WAAW,CAAG,KACnB,CAAA,IAAI,CAACC,aAAa,CAAG,MACvB,CACF,CAEA,MAAMC,kBAAAA,CACJn+M,WAAa,EAAA,CACX,IAAI,CAACo+M,UAAU,CAAG,IAAIpD,iBACxB,CACF,CAEA,MAAMqD,yBAAAA,CACJ,OAAOhzK,MAAAA,CAAO+yK,UAAU,CAAEtjF,QAAQ,CAAE6B,KAAK,CAAE2hF,YAAY,CAAEj1E,OAAO,CAAEpO,IAAI,CAAE6N,YAAY,CAAE,CACpFu1E,yBAA0BE,CAAAA,mBAAmB,CAACH,UAAAA,CAAYtjF,QAAU6B,CAAAA,KAAAA,CAAO0M,OAASpO,CAAAA,IAAAA,CAAAA,CACpFojF,yBAA0BG,CAAAA,qBAAqB,CAACJ,UAAAA,CAAYtjF,QAC5DujF,CAAAA,CAAAA,yBAAAA,CAA0BI,gBAAgB,CAACL,UAAYtjF,CAAAA,QAAAA,CAAU6B,KAAO2hF,CAAAA,YAAAA,CAAAA,CACxED,yBAA0BK,CAAAA,qBAAqB,CAACN,UAAAA,CAAYtjF,SAAU6B,KAAO0M,CAAAA,OAAAA,CAASP,YACxF,EAAA,CACA,OAAOy1E,mBAAAA,CAAoBH,UAAU,CAAEtjF,QAAQ,CAAE6B,KAAK,CAAE0M,OAAO,CAAEpO,IAAI,CAAE,CACrEmjF,UAAAA,CAAW9rD,YAAY,CAAGx3B,QAASw3B,CAAAA,YAAY,CAC/C8rD,UAAWnjF,CAAAA,IAAI,CAAGA,IAClBmjF,CAAAA,UAAAA,CAAW9yE,SAAS,CAAGxQ,QAAAA,CAASwQ,SAAS,CAAG,CAC5C8yE,CAAAA,UAAWprD,CAAAA,SAAS,CAAGl4B,QAAAA,CAASk4B,SAChCorD,CAAAA,UAAAA,CAAW9zE,WAAW,CAAGjB,OAAW,EAACA,CAAAA,OAAAA,CAAUzV,qBAAoB,IAAO,CAC1EwqF,CAAAA,UAAWt/E,CAAAA,IAAI,CAAGuK,OAAAA,EAAW,CAACA,QAAUhW,cAAa,IAAO,CAC5D+qF,CAAAA,UAAW/a,CAAAA,aAAa,CAAGh6D,OAAAA,EAAW,CAACA,OAAU5V,CAAAA,oBAAmB,IAAO,CAC3E2qF,CAAAA,UAAAA,CAAW9a,gBAAgB,CAAGj6D,OAAW,EAACA,CAAAA,OAAAA,CAAUvV,wBAAuB,IAAO,CAClFsqF,CAAAA,UAAW7a,CAAAA,cAAc,CAAGl6D,OAAAA,EAAW,CAACA,OAAUtV,CAAAA,sBAAqB,IAAO,CAC9EqqF,CAAAA,UAAAA,CAAW5a,uBAAuB,CAAGn6D,OAAW,EAACA,CAAAA,OAAAA,CAAUpV,iCAAgC,IAAO,CAClGmqF,CAAAA,UAAW9qK,CAAAA,WAAW,CAAG+1F,OAAAA,EAAW,CAACA,OAAUxV,CAAAA,kBAAiB,IAAO,CACvEuqF,CAAAA,UAAAA,CAAWlD,cAAc,CAAGpgF,SAASogF,cAAc,EAAI1lF,wBACvD,CAAA,GAAIsF,QAASstC,CAAAA,WAAW,EAAIzrC,KAAAA,CAAMq4B,wBAAwB,CAAE,CAC1DopD,UAAAA,CAAWppD,wBAAwB,CAAG,IACtCopD,CAAAA,UAAWjD,CAAAA,+BAA+B,CAAGx+E,KAAAA,CAAM8hC,QAAQ,CAAC1Y,cAC5Dq4D,CAAAA,UAAAA,CAAWhD,+BAA+B,CAAGz+E,KAAM8hC,CAAAA,QAAQ,CAACpY,cAC5D+3D,CAAAA,UAAAA,CAAW/C,2BAA2B,CAAG1+E,KAAM8hC,CAAAA,QAAQ,CAAC7Q,UAAU,CAClEwwD,UAAW9C,CAAAA,kCAAkC,CAAG3+E,KAAAA,CAAM8hC,QAAQ,CAACvY,kBACjE,CAAO,KAAA,CACLk4D,UAAWppD,CAAAA,wBAAwB,CAAG,KACtCopD,CAAAA,UAAAA,CAAWjD,+BAA+B,CAAG,KAC7CiD,CAAAA,UAAAA,CAAWhD,+BAA+B,CAAG,KAC7CgD,CAAAA,UAAW9C,CAAAA,kCAAkC,CAAG,MAClD,CACF,CACA,OAAOkD,qBAAAA,CAAsBJ,UAAU,CAAEtjF,QAAQ,CAAE,CACjDsjF,UAAAA,CAAWnD,eAAe,CAAG,KAC7BmD,CAAAA,UAAWrC,CAAAA,SAAS,CAAGjhF,QAAAA,CAASihF,SAChCqC,CAAAA,UAAAA,CAAWpC,SAAS,CAAGlhF,QAASkhF,CAAAA,SAAS,CACzCoC,UAAWlC,CAAAA,gBAAgB,CAAGphF,QAAAA,CAASohF,gBACvCkC,CAAAA,UAAAA,CAAWjC,aAAa,CAAGrhF,QAASqhF,CAAAA,aAAa,CACjDiC,UAAWhC,CAAAA,eAAe,CAAGthF,QAAAA,CAASshF,eACtCgC,CAAAA,UAAAA,CAAW/B,oBAAoB,CAAGvhF,SAAS6jF,wBAAwB,GAAK,CACxEP,CAAAA,UAAW9B,CAAAA,OAAO,CAAG,KACrB8B,CAAAA,UAAAA,CAAW7B,iBAAiB,CAAG,KAC/B6B,CAAAA,UAAWvtH,CAAAA,eAAe,CAAGiqC,QAAAA,CAASjqC,eACtCutH,CAAAA,UAAAA,CAAW5B,oBAAoB,CAAG1hF,QAAS0hF,CAAAA,oBAAoB,CAC/D4B,UAAW3B,CAAAA,aAAa,CAAG3hF,QAAS2hF,CAAAA,aAAa,CACjD2B,UAAWzB,CAAAA,iBAAiB,CAAGzrF,aAC/BktF,CAAAA,UAAAA,CAAWxB,WAAW,CAAG9hF,QAAS8jF,CAAAA,WAAW,CAC7CR,UAAWvB,CAAAA,oBAAoB,CAAG/hF,QAAAA,CAAS+jF,oBAC3CT,CAAAA,UAAAA,CAAWtB,iBAAiB,CAAGhiF,QAASgkF,CAAAA,WAAW,CACnDV,WAAWrB,YAAY,CAAGjiF,QAASiiF,CAAAA,YAAY,CAC/CqB,UAAWpB,CAAAA,aAAa,CAAGliF,QAAAA,CAASikF,aACpCX,CAAAA,UAAAA,CAAWnB,YAAY,CAAGniF,QAASkkF,CAAAA,YAAY,CAC/CZ,UAAWlB,CAAAA,QAAQ,CAAGpiF,QAAAA,CAASmkF,QAC/Bb,CAAAA,UAAAA,CAAWjB,cAAc,CAAGriF,QAASokF,CAAAA,eAAe,CACpDd,UAAWhB,CAAAA,YAAY,CAAGtiF,QAAAA,CAASqkF,YACnCf,CAAAA,UAAAA,CAAWf,oBAAoB,CAAGviF,QAASskF,CAAAA,iBAAiB,CAC5DhB,UAAWd,CAAAA,UAAU,CAAGxiF,QAAAA,CAASwiF,UAAU,CAAG,CAC9Cc,CAAAA,UAAW7C,CAAAA,YAAY,CAAG,KAC1B6C,CAAAA,UAAAA,CAAW5C,eAAe,CAAG1gF,QAAAA,CAASukF,WACtCjB,CAAAA,UAAAA,CAAW3C,kBAAkB,CAAG3gF,QAASwkF,CAAAA,WAAW,CACpDlB,UAAW1C,CAAAA,UAAU,CAAG5gF,QAAAA,CAASykF,UACjCnB,CAAAA,UAAAA,CAAWzC,UAAU,CAAG7gF,QAAS0kF,CAAAA,UAAU,CAC3CpB,UAAWxC,CAAAA,mBAAmB,CAAG9gF,QAAAA,CAAS2kF,mBAAmB,CAC7DrB,UAAWvC,CAAAA,KAAK,CAAG/gF,QAAAA,CAAS4kF,KAC5BtB,CAAAA,UAAAA,CAAWtC,iBAAiB,CAAGhhF,QAAS6kF,CAAAA,cAAa,CAEvD,OAAOlB,gBAAAA,CAAiBL,UAAU,CAAEtjF,QAAQ,CAAE6B,KAAK,CAAE2hF,YAAY,CAAE,CACjEF,UAAAA,CAAWtpE,GAAG,CAAGha,SAAS8kF,MAAM,CAAGtB,YAAaxpE,CAAAA,GAAG,CAAGpoB,QACtD0xF,CAAAA,UAAAA,CAAWtwM,KAAK,CAAGwwM,YAAajpE,CAAAA,iBAAiB,CACjD+oE,UAAWvnB,CAAAA,OAAO,CAAG/7D,QAAAA,CAAS+kF,UAAU,CAAGvB,YAAa5qI,CAAAA,WAAW,CAAG0+C,YAAAA,CACtE,GAAI0I,QAAAA,CAASglF,SAAS,EAAInjF,KAAMk1E,CAAAA,QAAQ,EAAIl1E,KAAMq2E,CAAAA,MAAM,CAAE,CACxDoL,UAAWb,CAAAA,gBAAgB,CAAG3qF,wBAC9BwrF,CAAAA,UAAAA,CAAWZ,kBAAkB,CAAG7gF,KAAMk1E,CAAAA,QAAQ,CAAC3pK,QAAQ,CACvDk2K,UAAWX,CAAAA,yBAAyB,CAAG9gF,KAAAA,CAAMq2E,MAAM,CAAC9qK,SACtD,CAAO,KAAA,GAAI4yF,QAASglF,CAAAA,SAAS,EAAInjF,KAAMk1E,CAAAA,QAAQ,CAAE,CAC/CuM,UAAWb,CAAAA,gBAAgB,CAAG5qF,sBAC9ByrF,CAAAA,UAAAA,CAAWZ,kBAAkB,CAAG7gF,KAAMk1E,CAAAA,QAAQ,CAAC3pK,SAAQ,CACzD,KAAO,GAAI4yF,QAAAA,CAASglF,SAAS,EAAInjF,KAAMq2E,CAAAA,MAAM,CAAE,CAC7CoL,UAAWb,CAAAA,gBAAgB,CAAG1qF,qBAC9BurF,CAAAA,UAAWZ,CAAAA,kBAAkB,CAAG7gF,KAAAA,CAAMq2E,MAAM,CAAC9qK,SAC/C,CAAO,KAAA,CACLk2K,UAAWb,CAAAA,gBAAgB,CAAG7qF,kBAC9B0rF,CAAAA,UAAAA,CAAWZ,kBAAkB,CAAG,KAClC,CACA,GAAI1iF,QAAAA,CAASkhF,SAAS,CAAE,CACtBoC,UAAAA,CAAWV,aAAa,CAAG1qF,oBAC3BorF,CAAAA,WAAWT,eAAe,CAAG,KAC/B,CAAA,KAAO,GAAIS,UAAAA,CAAWb,gBAAgB,GAAK7qF,kBAAsBiK,EAAAA,KAAAA,CAAMk1E,QAAQ,CAAE,CAC/EuM,UAAAA,CAAWV,aAAa,CAAGzqF,qBAC3BmrF,CAAAA,UAAWT,CAAAA,eAAe,CAAGhhF,KAAAA,CAAMk1E,QAAQ,CAAC3pK,SAC9C,CAAO,KAAA,CACLk2K,UAAWV,CAAAA,aAAa,CAAGxqF,mBAC3BkrF,CAAAA,UAAAA,CAAWT,eAAe,CAAG,KAC/B,CACA,MAAMoC,SAAAA,CAAY3B,UAAWb,CAAAA,gBAAgB,GAAK7qF,kBAClD0rF,CAAAA,UAAAA,CAAWrxC,eAAe,CAAGgzC,SAC7B3B,CAAAA,UAAWR,CAAAA,kBAAkB,CAAGmC,SAAAA,EAAapjF,KAAM82E,CAAAA,6BAA4B,CAEjF,OAAOiL,qBAAAA,CAAsBN,UAAU,CAAEtjF,QAAQ,CAAE6B,KAAK,CAAE0M,OAAO,CAAEP,YAAY,CAAE,CAC/Es1E,UAAWP,CAAAA,sBAAsB,CAAG,KAAA,CACpC,GAAI/iF,QAAAA,CAASstC,WAAW,CAAE,CACxB,MAAM43C,cAAiB,CAAA,EAAE,CACzB,MAAMn0K,IAAOw9F,CAAAA,OAAAA,CAAUA,OAAW,EAAA,EAAA,CAAK/U,mBACvC8pF,CAAAA,UAAWL,CAAAA,gBAAgB,CAAG,CAAC,EAAElyK,IAAAA,CAAOyoF,mBAAkB,CAC1D8pF,CAAAA,UAAAA,CAAWP,sBAAsB,CAAG,KACpC,CAAA,GAAI/0E,YAAc,CAAA,CAChBu1E,yBAA0B7zD,CAAAA,aAAa,CAAC/8B,qBAAAA,CAAuBqb,YAAY,CAACrb,qBAAsB,CAAA,CAAEuyF,cAAgBn0K,CAAAA,IAAAA,CAAAA,CACpH,GAAI,CAAC8wF,KAAMq4B,CAAAA,wBAAwB,CAAE,CACnCqpD,0BAA0B7zD,aAAa,CAAC98B,cAAgBob,CAAAA,YAAY,CAACpb,cAAAA,CAAe,CAAEsyF,cAAAA,CAAgBn0K,IACtGwyK,CAAAA,CAAAA,yBAAAA,CAA0B7zD,aAAa,CAAC58B,cAAgBkb,CAAAA,YAAY,CAAClb,cAAAA,CAAe,CAAEoyF,cAAAA,CAAgBn0K,IACxG,EAAA,CACF,CACAuyK,UAAAA,CAAW3zD,MAAM,CAAGu1D,eACtB,CAAA,KAAO,CACL5B,UAAAA,CAAW3zD,MAAM,CAAG,GACtB,CACA,GAAI2zD,UAAW3zD,CAAAA,MAAM,CAACvyJ,MAAM,GAAK,CAAA,EAAK,CAACykI,KAAAA,CAAMq4B,wBAAwB,EAAI,CAAC3rB,OAAUjW,CAAAA,kBAAiB,IAAO,CAAA,CAAG,CAC7GgrF,UAAAA,CAAWN,QAAQ,CAAG,KACxB,CACF,CACA,OAAOtzD,aAAcy1D,CAAAA,KAAK,CAAEx1D,MAAM,CAAEu1D,cAAc,CAAEn0K,IAAI,CAAE,CACxD,IAAI,IAAI5zC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIwyJ,MAAOvyJ,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAMgrJ,KAAQwH,CAAAA,MAAM,CAACxyJ,CAAAA,CAAE,CACvB,GAAIgrJ,KAAMn4I,CAAAA,OAAO,CAAE,CACjB,GAAIm4I,KAAAA,CAAMp3G,IAAI,CAAGA,KAAM,CACrBm0K,cAAAA,CAAejnN,IAAI,CAACkqJ,KACtB,EAAA,CACF,CACF,CACF,CACF,CAEA,MAAMi9D,iBAAAA,CAAoB,CACxBz8I,aAAAA,CAAeztC,eACf0tC,CAAAA,cAAAA,CAAgBztC,gBAChB0tC,CAAAA,gBAAAA,CAAkBrtC,kBAClBstC,CAAAA,gBAAAA,CAAkBrtC,kBAClB4tC,CAAAA,YAAAA,CAAc/tC,cACdiuC,CAAAA,kBAAAA,CAAoBnuC,oBACpBkuC,CAAAA,kBAAAA,CAAoBjuC,qBACtB,CACA,CAAMgqL,MAAAA,SAAAA,CA4CJC,WAAWC,SAAS,CAAE9kN,IAAI,CAAEqE,KAAQ,CAAA,EAAE,CAAE,CACtC,GAAIygN,SAAAA,CAAW,CACb,IAAI,CAACjqB,QAAQ,CAAC51L,GAAG,CAACjF,IAAAA,CAAMqE,KAC1B,EAAA,CACF,CACA0gN,oBAAAA,CAAqBC,KAAK,CAAEC,eAAe,CAAEC,aAAa,CAAE,CAC1D,KAAM,CAAE/2M,OAAO,CAAE4rL,QAAQ,CAAE/xI,UAAU,CAAE,CAAG,IAAI,CAC9C,MAAM+M,QAAAA,CAAW,IAAIjwD,GAAAA,CACrBiwD,QAAS9vD,CAAAA,GAAG,CAAC,YAAA,CAAc,MAC3B,CAAA,CAAA,GAAIkJ,OAAQwxM,CAAAA,cAAc,GAAKzlF,wBAAAA,EAA4B/rH,OAAQwxM,CAAAA,cAAc,GAAKxlF,uBAAAA,CAAyB,CAC7G4/D,QAAAA,CAAS90L,GAAG,CAAC,aAAc,IAC7B,EAAA,CACA,GAAI,IAAI,CAACkJ,OAAO,CAACu0M,WAAW,CAAE,CAC5B3oB,QAAS90L,CAAAA,GAAG,CAAC,cAAA,CAAgB,IAC7B8vD,CAAAA,CAAAA,QAAAA,CAAS9vD,GAAG,CAAC,cAAgB,CAAA,OAAA,EAC/B,CACA,GAAI,IAAI,CAACkgN,WAAW,CAAEprB,QAAS90L,CAAAA,GAAG,CAAC,SAAA,CAAW,MAC9C,GAAI,IAAI,CAACkJ,OAAO,CAAC25L,aAAa,CAAE,CAC9B,MAAMsd,cAAAA,CAAiBlnF,YAAaz/H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE,IAAI,CAAC43B,cAAc,CACxE,CAAA,GAAI,IAAI,CAAC04F,MAAM,CAACx4J,GAAG,CAAC,uBAA6B2mN,CAAAA,GAAAA,cAAAA,CAAe3mN,GAAG,CAAC,uBAAA,CAAA,CAA0B,CAC5FupD,UAAAA,CAAWq9J,cAAc,CAAGnpL,eAC5B8rB,CAAAA,UAAWs9J,CAAAA,cAAc,CAAGnpL,eAC5B6rB,CAAAA,UAAAA,CAAWu9J,cAAc,CAAGlpL,eAC5B2rB,CAAAA,UAAWw9J,CAAAA,cAAc,CAAGlpL,gBAC9B,CACF,CACA,GAAI,IAAI,CAAC6oL,WAAW,CAAE,CACpBn9J,WAAWkgB,aAAa,CAAGztC,eAC3Bs6B,CAAAA,QAAAA,CAAS9vD,GAAG,CAAC,UAAY,CAAA,MAAA,CAAA,CACzB,GAAIkJ,OAAAA,CAAQ4pC,WAAW,GAAK5pC,OAAAA,CAAQgyM,UAAU,EAAIhyM,OAAQiyM,CAAAA,UAAU,EAAIjyM,OAAAA,CAAQkyM,mBAAmB,EAAIlyM,OAAQozM,CAAAA,iBAAiB,CAAD,CAAI,CACjIxnB,QAAAA,CAAS90L,GAAG,CAAC,WAAY,IACzB+iD,CAAAA,CAAAA,UAAWmgB,CAAAA,cAAc,CAAGztC,gBAAAA,CAC5Bq6B,QAAS9vD,CAAAA,GAAG,CAAC,WAAA,CAAa,MAC1B8vD,CAAAA,CAAAA,QAAAA,CAAS9vD,GAAG,CAAC,YAAc,CAAA,MAAA,EAC7B,CAAO,KAAA,GAAIkJ,OAAQozM,CAAAA,iBAAiB,CAAE,CACpCxnB,QAAS90L,CAAAA,GAAG,CAAC,cAAA,CAAgB,IAC7B8vD,CAAAA,CAAAA,QAAAA,CAAS9vD,GAAG,CAAC,kBAAmB,MAClC,EAAA,CACF,CACA,MAAMwgN,SAAY,CAAA,CAAA,CAClB,IAAI,IAAI/oN,CAAI,CAAA,CAAA,CAAGA,CAAI+oN,CAAAA,SAAAA,CAAW/oN,CAAI,EAAA,CAAA,CAChC,GAAIsoN,KAAK,CAACtoN,CAAAA,CAAE,CAAE,CACZq9L,QAAS90L,CAAAA,GAAG,CAAC,CAAC,EAAE,EAAEvI,CAAE,CAAA,CAAC,CAAE,IAAA,CACvBsrD,CAAAA,UAAU,CAAC,CAAC,eAAe,EAAEtrD,CAAAA,CAAE,CAAC,CAAC,CAAG,CAAC,QAAQ,EAAEA,CAAE,CAAA,EAAC,CAEpD,GAAIuoN,eAAe,CAACvoN,CAAAA,CAAE,CAAE,CACtBq9L,QAAS90L,CAAAA,GAAG,CAAC,CAAC,EAAE,EAAEvI,CAAE,CAAA,WAAW,CAAC,CAAE,IAClCq4D,CAAAA,CAAAA,QAAAA,CAAS9vD,GAAG,CAAC,CAAC,GAAG,EAAEvI,CAAAA,CAAE,CAAC,CAAE,MAC1B,EAAA,CACF,CACA,IAAIgpN,aAAgB,CAAA,CAAA,CACpB,MAAMC,aAAAA,CAAgB,IAAIl2M,GAAAA,CAC1By1M,aAAc77M,CAAAA,OAAO,CAAEu8M,YACrB,EAAA,CAAA,KAAM,CAAEl/K,EAAE,CAAEm/K,EAAE,CAAE7lN,IAAI,CAAE,CAAG4lN,YAAAA,CACzB,MAAME,OAAAA,CAAUp/K,EAAKm/K,CAAAA,EAAAA,CAAK,GAC1B,CAAA,GAAI,CAACF,aAAAA,CAAc3gN,GAAG,CAAC8gN,OAAU,CAAA,CAAA,CAC/BH,aAAc34M,CAAAA,GAAG,CAAC84M,OAAAA,CAAAA,CAClB/wJ,QAAS9vD,CAAAA,GAAG,CAAC,CAAC,GAAG,EAAE4gN,EAAG,CAAA,CAAC,EAAEn/K,EAAAA,CAAG,CAAC,CAAE,MAAA,CAAA,CAC/B,MAAMq/K,OAAAA,CAAU,CAAC,QAAQ,EAAE/lN,IAAAA,CAAK,YAAY,CAAC,CAC7C+5L,QAAAA,CAAS90L,GAAG,CAAC,CAAC,gBAAgB,EAAEygN,aAAAA,CAAc,CAAC,CAAC,CAAEK,OAAAA,CAAAA,CAClDhsB,QAAS90L,CAAAA,GAAG,CAAC,CAAC,cAAc,EAAEygN,aAAc,CAAA,CAAC,CAAC,CAAEG,EAAAA,CAAAA,CAChD9rB,QAAS90L,CAAAA,GAAG,CAAC,CAAC,cAAc,EAAEygN,aAAc,CAAA,CAAC,CAAC,CAAEh/K,EAChDg/K,CAAAA,CAAAA,aACF,GAAA,CACF,CACA3rB,CAAAA,CAAAA,QAAAA,CAAS90L,GAAG,CAAC,qBAAuBygN,CAAAA,aAAAA,CAAAA,CACpC,GAAIv3M,OAAAA,CAAQ6xM,YAAY,CAAE,CACxBh4J,UAAAA,CAAW4gB,YAAY,CAAG/tC,cAC1Bk/J,CAAAA,QAAAA,CAAS90L,GAAG,CAAC,cAAgB,CAAA,IAAA,CAAA,CAC7B8vD,QAAS9vD,CAAAA,GAAG,CAAC,cAAA,CAAgB,MAC/B,EAAA,CACA,GAAIkJ,OAAAA,CAAQ4yM,OAAO,EAAI5yM,OAAQ6yM,CAAAA,iBAAiB,CAAE,CAChDh5J,UAAWg+J,CAAAA,wBAAwB,CAAGjqL,cACtCisB,CAAAA,UAAAA,CAAWi+J,uBAAuB,CAAGjqL,cACrC+9J,CAAAA,QAAAA,CAAS90L,GAAG,CAAC,OAAQ,IACvB,EAAA,CACA,GAAIkJ,OAAAA,CAAQ45L,gBAAgB,EAAI55L,OAAQ65L,CAAAA,cAAc,CAAE,CACtDjO,QAAS90L,CAAAA,GAAG,CAAC,UAAA,CAAY,IACzB,CAAA,CAAA,GAAIkJ,OAAQ85L,CAAAA,uBAAuB,CAAElO,QAAAA,CAAS90L,GAAG,CAAC,cAAgB,CAAA,IAAA,CAAA,CAClE,GAAIkJ,OAAAA,CAAQ45L,gBAAgB,CAAEhO,QAAS90L,CAAAA,GAAG,CAAC,mBAAqB,CAAA,IAAA,CAAA,CAChE,GAAIkJ,OAAAA,CAAQ65L,cAAc,CAAEjO,QAAS90L,CAAAA,GAAG,CAAC,iBAAA,CAAmB,IAC5D+iD,CAAAA,CAAAA,UAAWqgJ,CAAAA,eAAe,CAAG/rK,gBAC/B,CACA,GAAInuB,OAAQo1H,CAAAA,IAAI,CAAE,CAChBv7E,UAAW6gB,CAAAA,kBAAkB,CAAGjuC,qBAAAA,CAChC,GAAIzsB,OAAAA,CAAQslI,KAAK,CAAE,CACjBsmD,QAAS90L,CAAAA,GAAG,CAAC,OAAA,CAAS,IACxB,EAAA,CAAA,KAAO,CACL+iD,UAAAA,CAAW8gB,kBAAkB,CAAGnuC,oBAChCo/J,CAAAA,QAAAA,CAAS90L,GAAG,CAAC,MAAQ,CAAA,IAAA,EACvB,CACF,CACA,GAAIkJ,OAAAA,CAAQ25L,aAAa,CAAE/N,QAAS90L,CAAAA,GAAG,CAAC,YAAA,CAAc,IACtD,CAAA,CAAA,GAAIkJ,OAAQ4gI,CAAAA,WAAW,CAAEgrD,QAAAA,CAAS90L,GAAG,CAAC,aAAe,CAAA,IAAA,CAAA,CACrD,GAAIkJ,OAAAA,CAAQqyM,SAAS,CAAEzmB,QAAS90L,CAAAA,GAAG,CAAC,WAAA,CAAa,IACjD8vD,CAAAA,CAAAA,QAAAA,CAAS1rD,OAAO,CAAC,CAAC8K,IAAAA,CAAMnU,IACtB,GAAA,CAAA,IAAI,CAACkmN,YAAY,EAAI,CAAC,gBAAgB,EAAElmN,IAAK+0G,CAAAA,WAAW,EAAG,CAAA;AAAE,CAC7D,CAAA,IAAI,CAACmxG,YAAY,EAAI,IAAI,CAAC3nJ,cAAc,GAAK3/B,oBAAsB,CAAC,QAAQ,EAAE5+B,IAAK,CAAA,EAAE,EAAE0kC,0BAA2BjmC,CAAAA,GAAG,CAAC0V,IAAM,CAAA,CAAA;AAAG,CAAC,CAAG,CAAC,QAAQ,EAAEA,IAAK,CAAA,CAAC,EAAEnU,IAAK,CAAA;AAAG,EAAC,CACjK,CAAA,CACA,IAAI,CAACM,QAAQ,CAAC2E,GAAG,CAAC,YAAc,CAAA,IAAI,CAACihN,YAAY,CACjD,CAAA,IAAI,CAAC5lN,QAAQ,CAAC2E,GAAG,CAAC,YAAA,CAAc,IAAI,CAACihN,YAAY,CACjD,CAAA,IAAI,CAAC5xJ,OAAO,CAAG,CAAC;;AAEhB,IAAA,EAAC,CAEH6xJ,qBAAsBC,CAAAA,aAAa,CAAE3sD,wBAAwB,CAAE,CAC7D,MAAMohC,SAAW,IAAI,CAACA,QAAQ,CAC9B,MAAM1sL,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,IAAI,CAAC0sL,QAAQ,CAAC51L,GAAG,CAAC,aAAekJ,CAAAA,OAAAA,CAAQ+gJ,MAAM,CAACvyJ,MAAM,CACtD,CAAA,GAAIypN,cAAevrB,QAAS51L,CAAAA,GAAG,CAAC,aAAA,CAAe,IAC/C,CAAA,CAAA,GAAIw0J,wBAA4B,EAAA,IAAI,CAACyJ,QAAQ,CAAE,CAC7C23B,QAAAA,CAAS51L,GAAG,CAAC,sBAAA,CAAwB,IACrC,CAAA,CAAA,GAAIkJ,QAAQyxM,+BAA+B,CAAE/kB,QAAS51L,CAAAA,GAAG,CAAC,iBAAmB,CAAA,IAAA,CAAA,CAC7E,GAAIkJ,OAAAA,CAAQ4xM,kCAAkC,CAAEllB,QAAAA,CAAS51L,GAAG,CAAC,qBAAsB,IACnF,CAAA,CAAA,GAAIkJ,OAAQq0M,CAAAA,gBAAgB,CAAE3nB,QAAS51L,CAAAA,GAAG,CAAC,6BAAA,CAA+B,IAC1E,CAAA,CAAA,GAAIkJ,OAAQ0xM,CAAAA,+BAA+B,EAAI,CAAC1xM,OAAAA,CAAQo0M,QAAQ,CAAE,CAChE,MAAM8D,mBAAAA,CAAsBtyF,cAAet1H,CAAAA,GAAG,CAAC0P,OAAQ2xM,CAAAA,2BAA2B,CAClFjlB,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,iBAAA,CAAmB,IAChC41L,CAAAA,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,CAAC,YAAY,EAAEohN,oBAAoBryF,IAAI,CAAC,CAAC,CAAE,MACxD6mE,QAAS51L,CAAAA,GAAG,CAAC,CAAC,oBAAoB,EAAEohN,mBAAoBryF,CAAAA,IAAI,CAAC,CAAC,CAAE,IAClE,EAAA,CACF,CACA,IAAI,IAAIt3H,CAAI,CAAA,CAAA,CAAGA,EAAIyR,OAAQ+gJ,CAAAA,MAAM,CAACvyJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAMgrJ,KAAAA,CAAQv5I,QAAQ+gJ,MAAM,CAACxyJ,CAAE,CAAA,CAC/B,MAAM6qJ,SAAYG,CAAAA,KAAAA,CAAM7wI,KAAK,CAC7B,GAAI4iJ,wBAA4BlS,EAAAA,SAAAA,GAAcr1B,qBAAuB,CAAA,CACnE,QACF,CACA,MAAMo0F,UAAAA,CAAaF,eAAiB1+D,KAAMw6B,CAAAA,MAAM,CAAGx6B,KAAAA,CAAMw6B,MAAM,CAAGzvD,mBAAAA,CAClE,MAAM4/B,UAAAA,CAAa3K,MAAMuK,WAAW,CACpC,MAAM3gB,UAAAA,CAAaoW,MAAMmD,WAAW,EAAI,CAAC18I,OAAAA,CAAQo0M,QAAQ,CACzD,MAAMjwD,UAAav+B,CAAAA,cAAAA,CAAet1H,GAAG,CAAC4zJ,UAAAA,CAAAA,CACtCwoC,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,CAAC,CAAE,IAC1Bm+L,CAAAA,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,CAAC,KAAK,EAAEvI,EAAE,IAAI,CAAC,CAAE,CAAC,EAAE61H,cAAc,CAACg1B,SAAU,CAAA,CAAC,CAAC,CAC5DszC,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAE,CAAA,UAAU,CAAC,CAAE,CAAC,EAAE41J,UAAAA,CAAWtyJ,IAAI,CAAC,CAAC,CACxD66L,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAE,CAAA,KAAK,CAAC,CAAE,CAAC,EAAEm2H,eAAe,CAACyzF,UAAAA,CAAW,CAAC,CAAC,CAAA,CAC/DzrB,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,OAAO,CAAC,CAAE,CAAC,EAAEs2H,iBAAiB,CAAC00B,KAAAA,CAAMo7B,YAAY,CAAC,CAAC,CAAC,CAAA,CAC3E,GAAIp7B,KAAAA,CAAM87B,iBAAiB,CAAEqX,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,kBAAkB,CAAC,CAAE,IACzE,CAAA,CAAA,GAAIgrJ,MAAM+C,OAAO,CAAE,CACjB,GAAIlD,YAAcl1B,cAAkB,EAAA,CAACq1B,KAAM+C,CAAAA,OAAO,CAACxhH,QAAQ,EAAIs+G,SAAcp1B,GAAAA,cAAAA,EAAkBu1B,MAAM+C,OAAO,CAACxhH,QAAQ,CAAE,CACrH4xJ,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAE,CAAA,MAAM,CAAC,CAAE,IAAA,CAAA,CAChCm+L,QAAS51L,CAAAA,GAAG,CAAC,CAAC,MAAM,EAAEvI,CAAAA,CAAE,eAAe,CAAC,CAAEgrJ,KAAMu8B,CAAAA,cAAc,CAC9D,CAAA,GAAI18B,SAAcl1B,GAAAA,cAAAA,CAAgB,CAChC,GAAIq1B,KAAAA,CAAMqtB,gBAAgB,CAAE8lB,SAAS51L,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAE,CAAA,gBAAgB,CAAC,CAAE,IACtE,CAAA,CAAA,GAAIgrJ,KAAMq8B,CAAAA,cAAc,CAAE8W,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,cAAc,CAAC,CAAE,IACpE,EAAA,CACF,CACF,CACA,GAAI40I,UAAY,CAAA,CACdupD,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,UAAU,CAAC,CAAE,IACpC,CAAA,CAAA,GAAI41J,WAAWr+B,GAAG,CAAE4mE,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,EAAE,UAAU,CAAC,CAAE,IAAA,CAAA,CACxD,GAAIgrJ,KAAMk7B,CAAAA,iBAAiB,EAAI,CAACl7B,MAAMyZ,MAAM,CAAE05B,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,4BAA4B,CAAC,CAAE,IACpG,CAAA,CAAA,GAAI6qJ,YAAcr1B,qBAAuB,CAAA,CACvC2oE,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,oBAAoB,CAAC,CAAE,IAAA,CAAA,CAC9C,GAAIgrJ,KAAMqsB,CAAAA,YAAY,CAAG,CAAA,CAAG8mB,SAAS51L,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAE,CAAA,qBAAqB,CAAC,CAAE,MAC3E,GAAIgrJ,KAAAA,CAAMiU,WAAW,CAAG,EAAGk/B,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,gBAAgB,CAAC,CAAE,IACvE,EAAA,CACA,GAAI41J,UAAAA,CAAWr+B,GAAG,EAAIq+B,UAAWn+B,CAAAA,IAAI,EAAI,IAAI,CAACxtF,MAAM,CAAC2E,QAAQ,CAAEuvJ,QAAAA,CAAS51L,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAE,CAAA,6BAA6B,CAAC,CAAE,IAAA,CAAA,CACtH,GAAI6qJ,SAAAA,GAAcp1B,eAAgB0oE,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEvI,CAAAA,CAAE,oBAAoB,CAAC,CAAE,IAClF,EAAA,CACA,GAAI40I,UAAAA,CAAY,CACdupD,QAAAA,CAAS51L,GAAG,CAAC,CAAC,YAAY,EAAEqtJ,UAAWt+B,CAAAA,IAAI,CAAC,CAAC,CAAE,IAC/C,CAAA,CAAA,GAAIuzB,YAAcr1B,qBAAuB2oE,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,qBAAsB,IAC9E,EAAA,CACF,CACF,CACAshN,mBAAmBC,UAAU,CAAE,CAC7B,KAAM,CAAEr4M,OAAO,CAAE,CAAG,IAAI,CACxB,MAAMs4M,mBAAAA,CAAsBt4M,OAAQsrJ,CAAAA,wBAAwB,EAAItrJ,OAAAA,CAAQ4xM,kCAAkC,CAC1G,MAAMqG,aAAgBK,CAAAA,mBAAAA,EAAuBt4M,OAAQ+gJ,CAAAA,MAAM,CAAC5qF,IAAI,CAAC,KAACojF,EAAAA,CAChE,OAAOA,KAAMw6B,CAAAA,MAAM,EAAIx6B,KAAAA,CAAMw6B,MAAM,GAAKzvD,mBAC1C,CACA,CAAA,CAAA,MAAMi0F,WAAa,CAACv4M,OAAAA,CAAQ8xM,eAAe,EAAI9xM,QAAQm0M,sBAAsB,CAC7E,MAAMqE,MAAAA,CAAS,IAAI,CAACxB,WAAW,GAAKh3M,OAAQiyM,CAAAA,UAAU,EAAIjyM,OAAAA,CAAQkyM,mBAAmB,EAAIlyM,OAAAA,CAAQozM,iBAAiB,EAAI,CAACpzM,OAAQgyM,CAAAA,UAAU,CAAD,CACxI,GAAIhyM,OAAQkzM,CAAAA,WAAW,CAAE,CACvB,IAAI,CAACwD,UAAU,CAAC,IAAA,CAAM,gBACtB,IAAI,CAACA,UAAU,CAAC,IAAI,CAAC+B,WAAW,CAAE,iBAAA,CAAA,CAClC,IAAI,CAAC/B,UAAU,CAAC12M,OAAAA,CAAQuzM,YAAY,CAAE,eACtC,CAAA,CAAA,IAAI,CAACmD,UAAU,CAAC12M,OAAQqzM,CAAAA,YAAY,CAAG,CAAG,CAAA,sBAAA,CAAA,CAC1C,IAAI,CAACqD,UAAU,CAAC12M,OAAAA,CAAQwzM,QAAQ,CAAE,WAClC,CAAA,CAAA,IAAI,CAACkD,UAAU,CAAC12M,OAAQyzM,CAAAA,cAAc,CAAE,iBAAA,EAC1C,CACA,IAAI,CAACiD,UAAU,CAAC,IAAI,CAAC3hD,QAAQ,EAAI/0J,OAAAA,CAAQkzM,WAAW,EAAI,IAAI,CAACuF,WAAW,CAAE,4BAAA,CAAA,CAC1E,IAAI,CAAC/B,UAAU,CAAC,IAAI,CAACgC,eAAe,CAAE,iBACtC,CAAA,CAAA,IAAI,CAAChC,UAAU,CAAC,IAAI,CAACiC,eAAe,CAAE,mBACtC,IAAI,CAACjC,UAAU,CAAC,IAAI,CAACkC,eAAe,CAAE,gBAAA,CAAA,CACtC,IAAI,CAAClC,UAAU,CAAC,IAAI,CAACM,WAAW,CAAE,kBAAA,CAAA,CAClC,IAAI,CAACN,UAAU,CAAC,IAAI,CAAC3hD,QAAQ,CAAE,cAC/B,CAAA,CAAA,IAAI,CAAC2hD,UAAU,CAAC12M,OAAQ0zM,CAAAA,YAAY,CAAE,eACtC,CAAA,CAAA,IAAI,CAACgD,UAAU,CAAC12M,OAAQozM,CAAAA,iBAAiB,CAAE,kBAAA,CAAA,CAC3C,IAAI,CAACsD,UAAU,CAAC12M,OAAAA,CAAQmzM,oBAAoB,CAAE,wBAAA,CAAA,CAC9C,IAAI,CAACuD,UAAU,CAAC12M,OAAQk0M,CAAAA,kBAAkB,CAAE,kBAC5C,CAAA,CAAA,IAAI,CAACwC,UAAU,CAAC12M,OAAQ2yM,CAAAA,oBAAoB,CAAE,4BAAA,CAAA,CAC9C,IAAI,CAAC+D,UAAU,CAAC12M,OAAAA,CAAQuxM,eAAe,CAAE,sBAAA,CAAA,CACzC,IAAI,CAACmF,UAAU,CAAC12M,OAAAA,CAAQwyM,gBAAgB,CAAE,0BAC1C,IAAI,CAACkE,UAAU,CAAC12M,QAAQ8xM,eAAe,CAAE,cACzC,CAAA,CAAA,IAAI,CAAC4E,UAAU,CAAC12M,OAAAA,CAAQ+xM,kBAAkB,CAAE,kBAAA,CAAA,CAC5C,IAAI,CAAC2E,UAAU,CAAC12M,OAAAA,CAAQqjK,eAAe,CAAG,EAAG,sBAC7C,CAAA,CAAA,IAAI,CAACqzC,UAAU,CAAC12M,OAAQ0xM,CAAAA,+BAA+B,CAAE,uBAAA,CAAA,CACzD,IAAI,CAACgF,UAAU,CAAC12M,OAAAA,CAAQ4xM,kCAAkC,CAAE,2BAAA,CAAA,CAC5D,IAAI,CAAC8E,UAAU,CAAC8B,MAAAA,CAAQ,SACxB,CAAA,CAAA,IAAI,CAAC9B,UAAU,CAAC6B,UAAAA,CAAY,mBAC5B,IAAI,CAAC7B,UAAU,CAAC12M,QAAQ4pC,WAAW,CAAE,cACrC,CAAA,CAAA,IAAI,CAAC8sK,UAAU,CAAC12M,OAAQiyM,CAAAA,UAAU,CAAE,iBACpC,CAAA,CAAA,IAAI,CAACyE,UAAU,CAAC12M,OAAQkyM,CAAAA,mBAAmB,CAAE,2BAAA,CAAA,CAC7C,IAAI,CAACwE,UAAU,CAAC12M,OAAAA,CAAQszM,aAAa,CAAE,gBAAA,CAAA,CACvC,IAAI,CAACoD,UAAU,CAAC12M,OAAQ2zM,CAAAA,oBAAoB,CAAE,wBAC9C,CAAA,CAAA,IAAI,CAAC+C,UAAU,CAAC12M,OAAQ4zM,CAAAA,UAAU,CAAE,gBAAA,CAAA,CACpC,IAAI,CAAC8C,UAAU,CAAC12M,OAAAA,CAAQgyM,UAAU,CAAE,aAAA,CAAA,CACpC,IAAI,CAAC0E,UAAU,CAAC12M,OAAAA,CAAQ8yM,oBAAoB,CAAE,8BAC9C,IAAI,CAAC4D,UAAU,CAAC12M,QAAQmnF,eAAe,CAAE,uBACzC,CAAA,CAAA,IAAI,CAACuvH,UAAU,CAAC12M,OAAAA,CAAQ4hI,SAAS,CAAE,gBAAA,CAAA,CACnC,IAAI,CAAC80E,UAAU,CAAC12M,OAAAA,CAAQ4yM,OAAO,CAAE,YACjC,IAAI,CAAC8D,UAAU,CAAC12M,QAAQuyM,IAAI,CAAE,UAC9B,CAAA,CAAA,IAAI,CAACmE,UAAU,CAAC12M,OAAQmyM,CAAAA,KAAK,CAAE,QAC/B,CAAA,CAAA,IAAI,CAACuE,UAAU,CAAC12M,OAAQyyM,CAAAA,aAAa,CAAE,oBAAA,CAAA,CACvC,IAAI,CAACiE,UAAU,CAAC12M,QAAQ6yM,iBAAiB,CAAE,yBAC3C,CAAA,CAAA,IAAI,CAAC6D,UAAU,CAAC12M,OAAQoyM,CAAAA,iBAAiB,CAAE,iBAC3C,CAAA,CAAA,IAAI,CAACsE,UAAU,CAAC12M,OAAAA,CAAQw0M,aAAa,CAAE,sBACvC,IAAI,CAACkC,UAAU,CAAC,KAAM,mBAAqBpzF,CAAAA,YAAY,CAACtjH,OAAAA,CAAQqzM,YAAY,CAAC,CAAA,CAC7E,IAAI,CAACqD,UAAU,CAAC,IAAM,CAAA,qBAAA,CAAuBzqF,qBAAqB,CAACjsH,OAAAA,CAAQwxM,cAAc,CAAC,EAC1F,IAAI,CAACkF,UAAU,CAAC,KAAM,gBAAkB3zF,CAAAA,UAAU,CAAC/iH,OAAAA,CAAQspJ,SAAS,CAAC,CAAA,CACrE,IAAI,CAACotD,UAAU,CAAC,IAAA,CAAM,wBAA0BhvF,CAAAA,qBAAqB,CAAC1nH,OAAQizM,CAAAA,iBAAiB,CAAC,CAAA,CAChG,IAAI,CAACyD,UAAU,CAAC,IAAA,CAAM,sBAAwB3tF,CAAAA,sBAAsB,CAAC/oH,OAAAA,CAAQ0yM,eAAe,CAAC,CAAA,CAC7F,IAAI,CAACgE,UAAU,CAAC,IAAA,CAAM,uBAAyBrtF,CAAAA,kBAAkB,CAACrpH,OAAQ6zM,CAAAA,gBAAgB,CAAC,CAAA,CAC3F,IAAI,CAAC6C,UAAU,CAAC,IAAA,CAAM,qBAAsBjtF,eAAe,CAACzpH,OAAQg0M,CAAAA,aAAa,CAAC,CAClF,CAAA,IAAI,CAAC0C,UAAU,CAAC,IAAM,CAAA,cAAA,CAAgB2B,UAAc,EAAA,EAAA,CAAA,CACpD,IAAI,CAAC3B,UAAU,CAAC,KAAM,oBAAsB9b,CAAAA,UAAAA,CAAWC,UAAU,CAAC76L,QAAQ8zM,kBAAkB,CAAA,CAAA,CAC5F,IAAI,CAAC4C,UAAU,CAAC,IAAA,CAAM,2BAA6B9b,CAAAA,UAAAA,CAAWC,UAAU,CAAC76L,OAAAA,CAAQ+zM,yBAAyB,CAAA,CAAA,CAC1G,IAAI,CAAC2C,UAAU,CAAC,IAAA,CAAM,kBAAmB9b,UAAWC,CAAAA,UAAU,CAAC76L,OAAAA,CAAQi0M,eAAe,CACtF,CAAA,CAAA,IAAI,CAAC+D,qBAAqB,CAACC,aAAAA,CAAej4M,OAAQsrJ,CAAAA,wBAAwB,EAC5E,CACAutD,iBAAAA,EAAoB,CAClB,KAAM,CAAE74M,OAAO,CAAE,CAAG,IAAI,CACxB,MAAMo5I,SAAAA,CAAY,IAAI,CAAC9nB,cAAc,CAAC8nB,SAAS,CAC/C,MAAM8K,WAAa,IAAI,CAAC5yB,cAAc,CAAC4yB,UAAU,CACjD,MAAMC,UAAav+B,CAAAA,cAAAA,CAAet1H,GAAG,CAAC4zJ,UAAAA,CAAAA,CACtC,MAAM40D,mBAAAA,CAAsB1/D,SAAcr1B,GAAAA,qBAAAA,EAAyB,CAACogC,UAAAA,CAAWp+B,GAAG,EAAIqzB,SAAAA,GAAcl1B,cACpG,CAAA,IAAI,CAACwyF,UAAU,CAACoC,mBAAqB,CAAA,mBAAA,CAAA,CACrC,IAAI,CAACpC,UAAU,CAAC,IAAA,CAAM,aAAc,CAAC,EAAEtyF,cAAc,CAACg1B,UAAU,CAAC,CAAC,CAClE,CAAA,IAAI,CAACs9D,UAAU,CAAC,IAAM,CAAA,aAAA,CAAe,CAAC,EAAEvyD,UAAAA,CAAWtyJ,IAAI,CAAC,CAAC,CAAA,CACzD,IAAI,CAAC6kN,UAAU,CAAC12M,OAAAA,CAAQ4hI,SAAS,CAAE,kBACrC,CACAm3E,sBAAAA,CAAuBC,YAAY,CAAEC,YAAY,CAAEZ,UAAU,CAAE,CAC7D,MAAMr4M,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,IAAI,CAAC7N,QAAQ,CAAC2E,GAAG,CAAC,gBAAA,CAAkBkiN,YAAgB,EAAA,EAAA,CAAA,CACpD,IAAI,CAAC7mN,QAAQ,CAAC2E,GAAG,CAAC,gBAAA,CAAkBmiN,YAAgB,EAAA,EAAA,CAAA,CACpD,GAAIj5M,OAAQuxH,CAAAA,IAAI,GAAKrG,WAAAA,EAAelrH,QAAQuxH,IAAI,GAAKvG,cAAuB,CAAA,CAAA,KAAA,GAAI,IAAI,CAACwmC,UAAU,CAAE,CAC/F,IAAI,CAACqnD,iBAAiB,GACxB,CAAA,KAAO,CACL,IAAI,CAACT,kBAAkB,CAACC,YAC1B,CACA,IAAI,CAAChyJ,OAAO,CAAG,CAAC;;AAEhB,IAAA,EAAC,CAzSH/vD,WAAYkiC,CAAAA,MAAM,CAAEx4B,OAAO,CAAEk5M,SAAY,CAAA,IAAI,CAAC,CAC5C,IAAI,CAACnB,YAAY,CAAG,EACpB,CAAA,IAAI,CAACnsB,QAAQ,CAAG,IAAIj1L,GACpB,CAAA,IAAI,CAAC+1L,QAAQ,CAAG,IAAI/1L,GACpB,CAAA,IAAI,CAACxE,QAAQ,CAAG,IAAIwE,GACpB,CAAA,IAAI,CAACmyJ,MAAM,CAAG,IACd,CAAA,IAAI,CAACtwH,MAAM,CAAGA,MACd,CAAA,IAAI,CAACx4B,OAAO,CAAGA,OACf,CAAA,MAAMm5M,UAAan5M,CAAAA,OAAAA,CAAQ4oJ,YAAY,CACvC,IAAI,CAACx4F,cAAc,CAAG53B,MAAAA,CAAO2E,QAAQ,EAAI+7K,WAAaC,UAAYlpF,EAAAA,OAAAA,CAAUx/F,mBAAsBD,CAAAA,mBAClG,CAAA,IAAI,CAACqpB,UAAU,CAAG,CAChBigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACA,GAAIrsB,OAAAA,CAAQs0M,cAAc,CAAE,CAC1B,IAAK,KAAM,CAAClsK,QAAAA,CAAUv2C,IAAK,CAAA,GAAIzB,MAAOqlD,CAAAA,OAAO,CAACz1C,OAAQs0M,CAAAA,cAAc,CAAE,CAAA,CACpE,IAAI,CAACz6J,UAAU,CAAChoD,IAAAA,CAAK,CAAGu2C,SAC1B,CACF,CACA,MAAMwkJ,YAAe78D,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,OAAQ,IAAI,CAAC43B,cAAc,CACjE,CAAA,IAAI,CAAC04F,MAAM,CAAG,IAAInyJ,GAAAA,CAAIi2L,YACtB,CAAA,CAAA,GAAIusB,UAAY,CAAA,CACd,MAAMC,YAAAA,CAAe,IAAI,CAAChpJ,cAAc,GAAK5/B,mBAAAA,CAAsB2oL,WAAWnpF,IAAI,CAAGmpF,UAAWppJ,CAAAA,IAAI,CACpGqpJ,YAAal+M,CAAAA,OAAO,CAAC,CAACm+M,KAAOC,CAAAA,SAAAA,GAAAA,CAC3B,IAAI,MAAMn7M,KAAKq4M,iBAAkB,CAAA,CAC/B,GAAIA,iBAAAA,CAAkB57M,cAAc,CAACuD,CAAMk7M,CAAAA,EAAAA,KAAAA,CAAM7hN,OAAO,CAAC2G,CAAAA,CAAAA,EAAM,CAAG,CAAA,CAChE,IAAI,CAAC07C,UAAU,CAAC17C,EAAE,CAAGq4M,iBAAiB,CAACr4M,CAAAA,EAAE,CAE7C,CACA,IAAI,CAAC2qJ,MAAM,CAAChyJ,GAAG,CAACwiN,SAAAA,CAAWD,KAC7B,EAAA,CAAA,EACF,CACA,IAAI,CAAC/nF,cAAc,CAAGrC,UAAW3+H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,EAAE42F,UAAU,CAACpvH,OAAQuxH,CAAAA,IAAI,CACzE,CAAA,IAAI,CAACigC,UAAU,CAAG,IAAI,CAAClgC,cAAc,CAACvC,QACtC,CAAA,IAAI,CAACgmC,QAAQ,CAAG/0J,OAAQ+gJ,CAAAA,MAAM,CAACvyJ,MAAM,CAAG,CAAA,EAAKwR,QAAQ+xM,kBAAkB,EAAI/xM,OAAQsrJ,CAAAA,wBAAwB,CAC3G,IAAI,CAACmtD,WAAW,CAAGz4M,OAAAA,CAAQ6zM,gBAAgB,GAAK7qF,kBAChD,CAAA,IAAI,CAACguF,WAAW,CAAG,IAAI,CAACjiD,QAAQ,EAAI,IAAI,CAAC0jD,WAAW,EAAIz4M,QAAQkzM,WAAW,EAAIlzM,OAAQsyM,CAAAA,SAAS,EAAItyM,OAAAA,CAAQgyM,UAAU,EAAIhyM,QAAQozM,iBAAiB,EAAIpzM,OAAQsrJ,CAAAA,wBAAwB,EAAI,CAAC,IAAI,CAACkG,UAAU,EAAIxxJ,OAAAA,CAAQkyM,mBACvN,CAAA,IAAI,CAAC8E,WAAW,CAAG,IAAI,CAACA,WAAW,EAAI,CAAC,IAAI,CAACxlD,UAC7C,CAAA,IAAI,CAACknD,eAAe,CAAG14M,OAAQ2zM,CAAAA,oBAAoB,CACnD,IAAI,CAACgF,eAAe,CAAG34M,OAAAA,CAAQ2zM,oBAC/B,CAAA,IAAI,CAACiF,eAAe,CAAG54M,OAAQ2zM,CAAAA,oBAAoB,CACnD,IAAI,CAACxtJ,OAAO,CAAG,IACf,CAAA,IAAI,CAACE,OAAO,CAAG,KACjB,CAiQF,CAEA,MAAMkzJ,eAAkB,CAAA,CACtBrrF,WAAaluH,CAAAA,OAAO,CAClB,CAAA,OAAO,CAAC,GAAG,EAAE5P,MAAOoW,CAAAA,IAAI,CAACxG,OAAAA,CAAAA,CAASvB,IAAI,EAAA,CAAGrJ,GAAG,CAAEgB,GAC5C,EAAA,CAAA,GAAIA,GAAQ,GAAA,cAAA,CAAgB,CAC1B,OAAO4J,QAAQ4oJ,YAAY,EAAExyJ,GAAO,EAAA,EACtC,MAAO,GAAIA,GAAAA,GAAQ,QAAU,CAAA,CAC3B,OAAOmjN,eAAgBC,CAAAA,iBAAiB,CAACx5M,OAAAA,CAC3C,CACA,OAAO5J,GAAM4J,CAAAA,OAAO,CAAC5J,GAAI,CAC3B,CAAGhI,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAM,CAChB,EACAorN,iBAAmBx5M,CAAAA,OAAO,CACxB,CAAA,OAAO,CAAC,OAAO,EAAEA,OAAAA,CAAQ+gJ,MAAM,CAAC3rJ,GAAG,CAAEmkJ,QACnC,OAAO,CAACv5I,OAAQsrJ,CAAAA,wBAAwB,EAAI/R,KAAM7wI,CAAAA,KAAK,GAAKq7G,qBAAAA,CAAwB,CAAC,EAAEw1B,KAAMnjJ,CAAAA,GAAG,CAAC,CAAC,CAAC,CAAG,EACxG,CAAGhI,CAAAA,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAI,CAAC,CAEjB,CAEA,CAAA,MAAMqrN,QAAW,CAAA,CACf,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACD,CACD,MAAMC,kBAA2BjrF,SAAAA,eAAAA,CAC/BP,YAAYluH,OAAO,CAAE,CACnB,MAAM0uH,WAAcD,CAAAA,eAAAA,CAAgBC,WAAW,CAAC1uH,QAAQs1D,OAAO,CAAA,CAC/D,MAAMqkJ,QAAAA,CAAWnyK,QAASxnC,CAAAA,OAAAA,CAAQ45M,eAAe,EAAI,IACrD,MAAMC,QAAAA,CAAWryK,QAASxnC,CAAAA,OAAAA,CAAQ85M,eAAe,EAAI,EACrD,CAAA,CAAA,MAAMC,OAASR,eAAgBrrF,CAAAA,WAAW,CAACluH,OAAAA,CAAQ00M,UAAU,CAC7D,CAAA,MAAMsF,SAAY,CAAA,CAAC,EAAEP,QAASrkN,CAAAA,GAAG,CAAC,CAAC6kN,KAAO7lN,CAAAA,KAAAA,GAAAA,CACxC,OAAO4L,OAAAA,CAAQk6M,OAAO,CAAC9lN,KAAAA,CAAM,CAAG,GAAA,CAAM,GACxC,CAAA,CAAA,CAAGhG,IAAI,CAAC,IAAI,CAAC,CACb,OAAO,CAAC,IAAI,EAAEsgI,WAAY,CAAA,CAAC,EAAEsrF,SAAU,CAAA,CAAC,EAAEL,QAAAA,CAAS,CAAC,EAAEE,QAAAA,CAAS,CAAC,EAAEE,OAAO,CAC3E,CACAzpF,sBAAAA,CAAuB93F,MAAM,CAAEx4B,OAAO,CAAE,CACtC,MAAMk5M,SAAAA,CAAY,CAAC,CAACl5M,OAAQ85M,CAAAA,eAAe,CAC3C,MAAMK,UAAY,IAAI1D,SAAAA,CAAUj+K,MAAQx4B,CAAAA,OAAAA,CAAQ00M,UAAU,CAAEwE,SAC5D,CAAA,CAAA,MAAMlf,kBAAoB,CACxBnoM,IAAAA,CAAM,WACNu+D,CAAAA,cAAAA,CAAgB+pJ,UAAU/pJ,cAAc,CACxCgqJ,GAAKD,CAAAA,SAAAA,CAAU7oF,cAAc,CAACtC,SAAS,CAAG5gG,kBAAAA,CAAqB/3B,SACjE,CAAA,CACA,MAAMgkN,UAAAA,CAAar6M,QAAQk6M,OAAO,EAAI,CACpC,IAAA,CACD,CACD,MAAMnD,aAAgB,CAAA,EAAE,CACxBoD,SAAUvD,CAAAA,oBAAoB,CAACyD,UAAAA,CAAYA,UAAYtD,CAAAA,aAAAA,CAAAA,CACvDoD,SAAUpB,CAAAA,sBAAsB,CAAC,EAAIoB,CAAAA,SAAAA,CAAU/pJ,cAAc,GAAK3/B,oBAAsBzwB,OAAQ85M,CAAAA,eAAe,CAAG95M,OAAAA,CAAQ45M,eAAe,CAAE,MAAA,CAAA,CAC3I,MAAMznN,QAAAA,CAAW+9H,QAASC,CAAAA,KAAK,CAACgqF,SAAAA,CAAUrxD,MAAM,CAAEqxD,SAAAA,CAAUhoN,QAAQ,CAAA,CACpE,MAAMy5L,QAAAA,CAAWuuB,SAAUvuB,CAAAA,QAAQ,CACnC5rL,OAAQs1D,CAAAA,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAOE,CAAAA,GAAAA,GAAMw1L,SAAS90L,GAAG,CAACV,GAAKF,CAAAA,KAAAA,CAAAA,CAAAA,CACxD,MAAMw2L,QAAAA,CAAWytB,SAAUztB,CAAAA,QAAQ,CACnC1sL,OAAQs1D,CAAAA,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAOE,CAAAA,GAAAA,GAAMs2L,SAAS51L,GAAG,CAACV,GAAKF,CAAAA,KAAAA,CAAAA,CACxD8jM,CAAAA,iBAAAA,CAAkBngJ,UAAU,CAAGsgK,UAAUtgK,UACzCmgJ,CAAAA,iBAAAA,CAAkB9pI,UAAU,CAAGiqJ,SAAUh0J,CAAAA,OAAO,CAChD6zI,iBAAAA,CAAkB39H,cAAc,CAAGlqE,QACnC6nM,CAAAA,iBAAAA,CAAkBn+H,aAAa,CAAG+vH,QAClCoO,CAAAA,iBAAAA,CAAkB7pI,YAAY,CAAGgqJ,SAAU9zJ,CAAAA,OAAO,CAClD2zI,kBAAkBz9H,gBAAgB,CAAGpqE,QACrC6nM,CAAAA,iBAAkBj+H,CAAAA,eAAe,CAAG2wH,QAAAA,CACpC,OAAO9xH,qBAAsBC,CAAAA,gBAAgB,CAACriC,MAAAA,CAAQwhK,iBACxD,CAAA,CACF,CACA,MAAMsgB,IAAM,IAAIZ,kBAAAA,CAEhB,MAAM15M,OAAAA,CAAU,IAAIy0M,kBACpB,CAAA,MAAM8F,WAAoB9xD,SAAAA,QAAAA,CACxB/oB,iBAAiB5+H,MAAM,CAAE,CACvBd,OAAAA,CAAQk6M,OAAO,CAAG,IAAI,CAACA,OAAO,CAAC9qN,KAAK,EACpC4Q,CAAAA,OAAQ45M,CAAAA,eAAe,CAAG,IAAI,CAACA,eAC/B55M,CAAAA,OAAAA,CAAQ85M,eAAe,CAAG,IAAI,CAACA,eAAe,CAC9C95M,OAAQs1D,CAAAA,OAAO,CAAGi7D,WAAYY,CAAAA,cAAc,CAAC,IAAI,CAAErwH,MACnD6zM,CAAAA,CAAAA,yBAAAA,CAA0BhzK,MAAM,CAAC3hC,OAAQ00M,CAAAA,UAAU,CAAE,IAAI,CAAE5zM,MAAOmyH,CAAAA,KAAK,CAAEnyH,MAAAA,CAAOuwH,kBAAkB,CAAEvwH,MAAO6+H,CAAAA,OAAO,CAAE7+H,MAAOywH,CAAAA,IAAI,CAAEzwH,MAAAA,CAAOs+H,YAAY,CAAA,CACpJ,MAAM34E,iBAAAA,CAAoB,IAAIunE,sBAAuBltH,CAAAA,MAAAA,CAAOqtH,iBAAiB,CAAErtH,OAAOstH,mBAAmB,CAAEttH,MAAOyqC,CAAAA,YAAY,EAC9H,MAAMgjF,OAAAA,CAAUD,iBAAkBxtH,CAAAA,MAAAA,CAAO03B,MAAM,CAAA,CAC/C+1F,OAAQoD,CAAAA,QAAQ,CAAC,KAAO2oF,CAAAA,GAAAA,CAAAA,CACxB,MAAMnuK,MAAAA,CAASoiF,OAAQsD,CAAAA,UAAU,CAAC,KAAA,CAAO7xH,QAASymD,iBAAmB,CAAA,IAAI,CAAC2jG,MAAM,CAChF,CAAA,OAAOj+G,MACT,CACA71C,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAAC2lN,OAAO,CAAG,CAC7B,IACD,CAAA,CAAE,IAAI,CAACN,eAAe,CAAG,KAAM,IAAI,CAACE,eAAe,CAAG,IAAM,CAAA,IAAI,CAACp7C,WAAW,CAAG,IAAM,CAAA,IAAI,CAACw3C,MAAM,CAAG,IAAA,CAAM,IAAI,CAACC,UAAU,CAAG,IAAA,CAAM,IAAI,CAACC,SAAS,CAAG,IAAA,CAAM,IAAI,CAAC9D,SAAS,CAAG,IAAA,CAAM,IAAI,CAACD,SAAS,CAAG,KAAO,CAAA,IAAI,CAACb,cAAc,CAAG,IAAM,CAAA,IAAI,CAACgB,gBAAgB,CAAG,KAAA,CAAO,IAAI,CAACC,aAAa,CAAG,KAAA,CAAO,IAAI,CAACC,eAAe,CAAG7pF,WAAY,IAAI,CAACosF,wBAAwB,CAAG,EAAG,IAAI,CAACnC,oBAAoB,CAAG,KAAM,IAAI,CAACC,aAAa,CAAG3lF,WAAa,CAAA,IAAI,CAAC4lF,mBAAmB,CAAG5lF,WAAa,CAAA,IAAI,CAAConF,aAAa,CAAG,KAAA,CAAO,IAAI,CAACY,WAAW,CAAG,KAAA,CAAO,IAAI,CAAC/B,YAAY,CAAGhwF,eAAiB,CAAA,IAAI,CAACqyF,iBAAiB,CAAG,KAAO,CAAA,IAAI,CAACM,KAAK,CAAG,KAAO,CAAA,IAAI,CAACd,WAAW,CAAG,KAAO,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAAA,CAAO,IAAI,CAACQ,WAAW,CAAG,KAAA,CAAO,IAAI,CAACE,UAAU,CAAG,MAAO,IAAI,CAACC,UAAU,CAAG,KAAO,CAAA,IAAI,CAACP,QAAQ,CAAG,KAAO,CAAA,IAAI,CAACF,aAAa,CAAG,KAAO,CAAA,IAAI,CAACG,eAAe,CAAG,KAAO,CAAA,IAAI,CAACC,YAAY,CAAG,KAAA,CAAO,IAAI,CAACH,YAAY,CAAG,KAAA,CAAO,IAAI,CAACS,mBAAmB,CAAG,MAC74B,CACF,CAEA,MAAMyE,uBAAAA,CACJ,IAAIjpF,IAAAA,EAAO,CACT,OAAO,IAAI,CAACmjF,UAAU,CAACnjF,IAAI,CAE7Bj7H,aAAa,CACX,IAAI,CAACg/D,OAAO,CAAG,IAAI3+D,GACnB,CAAA,IAAI,CAAC8jN,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,IAAI,CAACC,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,SAAS,CAAG,KACjB,CAAA,IAAI,CAACC,gBAAgB,CAAG,QACxB,CAAA,IAAI,CAACC,gBAAgB,CAAG,QACxB,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,IAAI,CAACC,wBAAwB,CAAG,KAChC,CAAA,IAAI,CAACC,qBAAqB,CAAG,KAC7B,CAAA,IAAI,CAACC,WAAW,CAAG,KACnB,CAAA,IAAI,CAACC,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACC,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,KAAK,CAAG,KACb,CAAA,IAAI,CAAC3G,UAAU,CAAG,IAAIpD,iBACxB,CACF,CAEA,MAAMgK,SAAAA,CAAY,EAAE,CACpB,MAAMC,mBAAsB,CAACv7M,OAC3B,EAAA,CAAA,OAAO5P,MAAOoW,CAAAA,IAAI,CAACxG,OAASkqF,CAAAA,CAAAA,MAAM,CAAE9zF,KAAMA,GAAQ,GAAA,YAAA,CAAA,CAAcqI,IAAI,EACtE,CACA,CAAM+8M,MAAAA,uBAAAA,SAAgC/sF,eACpCP,CAAAA,WAAAA,CAAYluH,OAAO,CAAE,CACnB,IAAIy7M,MACJ,GAAIz7M,OAAAA,GAAY,IAAI,CAAC07M,iBAAiB,CAAE,CACtC,GAAI,CAAC,IAAI,CAACC,QAAQ,CAAE,IAAI,CAACA,QAAQ,CAAGJ,oBAAoBv7M,OACxDy7M,CAAAA,CAAAA,KAAAA,CAAQ,IAAI,CAACE,SAAQ,CACvB,KAAO,GAAI37M,OAAAA,GAAY,IAAI,CAAC47M,cAAc,CAAE,CAC1C,GAAI,CAAC,IAAI,CAACH,KAAK,CAAE,IAAI,CAACA,KAAK,CAAGF,mBAAAA,CAAoBv7M,OAClDy7M,CAAAA,CAAAA,KAAAA,CAAQ,IAAI,CAACA,MAAK,CACpB,KAAO,CACLA,KAAAA,CAAQF,mBAAoBv7M,CAAAA,OAAAA,EAC9B,CACA,MAAM0uH,WAAAA,CAAcD,eAAgBC,CAAAA,WAAW,CAAC1uH,OAAQs1D,CAAAA,OAAO,CAC/D,CAAA,MAAMl/D,IAAM,CAAC;AAAW,EAAEs4H,WAAY,CAAA;AAAE,EAAE+sF,KAAMrmN,CAAAA,GAAG,CAAE/H,MAAOA,IAAO2S,CAAAA,OAAO,CAAC3S,IAAAA,CAAK,CAAEe,CAAAA,IAAI,CAAC,IAAA,CAAA,CAAM,EAAEmrN,eAAgBrrF,CAAAA,WAAW,CAACluH,OAAAA,CAAQ00M,UAAU,CAAA,CAAE,CAAC,CAChJ,OAAOt+M,GACT,CACAylN,sBAAuBC,CAAAA,iBAAiB,CAAEC,UAAU,CAAE/7M,OAAO,CAAE,CAC7D,MAAMg8M,WAAch8M,CAAAA,OAAO,CAAC87M,iBAAAA,CAAkB,CAC9C,MAAMG,UAAYj8M,OAAO,CAAC+7M,UAAW,CAAA,CACrC,MAAMG,UAAAA,CAAal8M,OAAQ00M,CAAAA,UAAU,CAACnjF,IAAI,GAAKxG,cAC/C,CAAA,IAAIv0D,UACJ,CAAA,GAAI0lJ,UAAcl8M,EAAAA,OAAAA,CAAQ00M,UAAU,CAAClD,cAAc,GAAKzlF,wBAAAA,CAA0B,CAChFv1D,UAAAA,CAAa,eACf,CAAA,KAAO,GAAI0lJ,UAAcl8M,EAAAA,OAAAA,CAAQ00M,UAAU,CAAClD,cAAc,GAAKxlF,uBAAyB,CAAA,CACtFx1D,WAAa,eACf,CAAA,KAAO,CACL,GAAIwlJ,WAAgB,GAAA,CAAA,CAAG,CACrBxlJ,UAAAA,CAAa,CAAC,GAAG,EAAEylJ,SAAU,CAAA,EAAC,CAChC,KAAO,CACLzlJ,UAAAA,CAAa,CAAC,GAAG,EAAEylJ,SAAU,CAAA,CAAC,EAAED,WAAAA,CAAY,EAC9C,CACA,GAAIh8M,OAAAA,CAAQm8M,SAAS,EAAIL,iBAAsB,GAAA,oBAAA,CAAsB,CACnEtlJ,UAAAA,EAAc,eAChB,CACF,CACA,OAAOA,UACT,CACA4lJ,iBAAAA,CAAkBC,QAAQ,CAAE/C,SAAS,CAAExwD,MAAM,CAAE,EAC/CwzD,cAAAA,CAAe5vB,QAAQ,CAAE2vB,QAAQ,CAAE/C,SAAS,CAAEt5M,OAAO,CAAE8oJ,MAAM,CAAE96C,OAAO,CAAExvE,QAAW,CAAA,IAAI,CAAE,CACvF,MAAM+9K,WAAAA,CAAc,CAAC,EAAEF,SAAS,GAAG,CAAC,CACpC,MAAMG,YAAeH,CAAAA,QAAAA,CAASz1G,WAAW,EAAA,CACzC,MAAMm1G,UAAa,CAAA,CAAC,EAAEQ,WAAAA,CAAY,EAAE,CAAC,CACrC,MAAME,mBAAqB,CAAC,EAAEF,WAAY,CAAA,UAAU,CAAC,CACrD,MAAMT,iBAAAA,CAAoB,CAAC,EAAES,WAAAA,CAAY,SAAS,CAAC,CACnD,MAAMG,eAAkB,CAAA,CAAC,EAAEH,WAAY,CAAA,OAAO,CAAC,CAC/C,MAAMI,0BAAAA,CAA6B,CAAC,EAAEN,SAAS,kBAAkB,CAAC,CAClE,MAAMO,YAAe,CAAA,CAAC,EAAEP,QAAAA,CAAS,IAAI,CAAC,CACtC,MAAMQ,mBAAAA,CAAsB,CAAC,EAAER,QAAS,CAAA,WAAW,CAAC,CACpD,MAAMS,kBAAqB,CAAA,CAAC,EAAET,QAAAA,CAAS,IAAI,CAAC,CAC5C,MAAMU,UAAAA,CAAa,CAAC,EAAEV,QAAS,CAAA,MAAM,CAAC,CACtC,MAAMW,UAAah9M,CAAAA,OAAO,CAAC48M,YAAAA,CAAa,CACxC,MAAMK,iBAAoBj9M,CAAAA,OAAO,CAAC68M,mBAAoB,CAAA,CACtD,MAAMK,aAAAA,CAAgBl9M,OAAO,CAACu8M,WAAY,CAAA,CAC1C,MAAMY,iBAAoBn9M,CAAAA,OAAO,CAACy8M,kBAAAA,CAAmB,CACrD,MAAMW,gBAAmBp9M,CAAAA,OAAO,CAAC88M,kBAAmB,CAAA,CACpD,MAAMO,SAAAA,CAAYv0D,MAAOx4J,CAAAA,GAAG,CAACgpN,SAAAA,CAAAA,CAC7B,GAAI4D,aAAe,CAAA,CACjBxwB,QAAS51L,CAAAA,GAAG,CAAC,CAAC,IAAI,EAAE0lN,aAAa,QAAQ,CAAC,CAAE,EAAA,CAAA,CAC5C,MAAM9E,EAAAA,CAAK,IAAI,CAACmE,sBAAsB,CAACC,iBAAAA,CAAmBC,UAAY/7M,CAAAA,OAAAA,CAAAA,CACtE0sL,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAE0lN,YAAAA,CAAa,YAAY,CAAC,CAAE9E,EAAAA,CAAAA,CACjDhrB,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAE0lN,YAAAA,CAAa,iBAAiB,CAAC,CAAEx8M,OAAO,CAAC08M,eAAgB,CAAA,CAAA,CAC9E,MAAMY,SAAAA,CAAY,CAAC,KAAK,EAAEd,YAAAA,CAAa,cAAc,CAAC,CACtD,GAAIa,SAAAA,CAAUlrN,QAAQ,CAACmrN,SAAY,CAAA,CAAA,CACjC,IAAIjmL,WAAc,CAAA,CAAC,QAAQ,EAAEklL,WAAY,CAAA,CAAC,CAC1C,MAAMgB,MAAQvvG,OAAO,CAACmvG,iBAAkB,CAAA,CACxC,GAAII,KAAAA,CAAO,CACTlmL,WAAAA,CAAckmL,MAChB,CAAO,KAAA,CACLvvG,OAAO,CAACmvG,iBAAkB,CAAA,CAAG9lL,WAC7Bq1J,CAAAA,QAAAA,CAAS51L,GAAG,CAAC,CAAC,IAAI,EAAE0lN,YAAa,CAAA,iBAAiB,CAAC,CAAE,IACvD,CACA9vB,QAAAA,CAAS51L,GAAG,CAACwmN,SAAWjmL,CAAAA,WAAAA,EAC1B,CACA,GAAImH,SAAU,CACZ,MAAMg/K,aAAgBx9M,CAAAA,OAAO,CAAC08M,eAAAA,CAAgB,GAAK,KAAA,CAAQ,cAAgB9hB,UAAWC,CAAAA,UAAU,CAACr8J,QAAAA,CAAAA,CACjGkuJ,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAE0lN,YAAAA,CAAa,gBAAgB,CAAC,CAAEgB,aAAAA,EACvD,CACF,CACA,GAAIP,iBAAmB,CAAA,CACrBvwB,QAAS51L,CAAAA,GAAG,CAAC,CAAC,IAAI,EAAE0lN,aAAa,OAAO,CAAC,CAAE,EAAA,CAAA,CAC3C9vB,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAE0lN,YAAAA,CAAa,gBAAgB,CAAC,CAAEx8M,OAAO,CAAC28M,0BAAAA,CAA2B,EAC1F,CACA,GAAIS,gBAAkB,CAAA,CACpB1wB,QAAS51L,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAE0lN,YAAAA,CAAa,YAAY,CAAC,CAAEY,gBAAAA,EACnD,CACA,GAAIJ,WAAY,CACdtwB,QAAAA,CAAS51L,GAAG,CAAC,CAAC,IAAI,EAAE0lN,YAAAA,CAAa,SAAS,CAAC,CAAE,EAC/C,EAAA,CACA,GAAI,CAAC,CAACx8M,OAAO,CAAC+8M,UAAW,CAAA,CAAE,CACzBrwB,QAAAA,CAAS51L,GAAG,CAAC,CAAC,IAAI,EAAE0lN,YAAa,CAAA,OAAO,CAAC,CAAE,EAC7C,EAAA,CACF,CACAiB,eAAAA,CAAgBv8L,CAAC,CAAEw8L,IAAI,CAAEpC,SAAS,CAAE,CAClC,GAAIA,SAAS,CAACp6L,CAAE,CAAA,CAAG,CAAG,CAAA,CACpB,GAAIo6L,SAAS,CAACp6L,CAAAA,CAAE,CAAGw8L,IAAKlvN,CAAAA,MAAM,CAAE,CAC9B,OAAOkvN,IAAAA,CAAKluN,SAAS,CAAC,EAAG8rN,SAAS,CAACp6L,CAAE,CAAA,CACvC,CAAO,KAAA,GAAIo6L,SAAS,CAACp6L,EAAE,CAAGw8L,IAAAA,CAAKlvN,MAAM,CAAE,CACrC,IAAIi5C,GAAMi2K,CAAAA,IAAAA,CACV,MAAM3nC,GAAMtuI,CAAAA,GAAAA,CAAI13C,MAAM,CAAC03C,GAAIj5C,CAAAA,MAAM,CAAG,CAAA,CAAA,CACpC,MAAMwnL,MAASslC,CAAAA,SAAS,CAACp6L,CAAAA,CAAE,CAAGumB,GAAAA,CAAIj5C,MAAM,CACxC,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIynL,MAAQznL,CAAAA,CAAAA,EAAAA,CAAIk5C,GAAOsuI,EAAAA,GAAAA,CACtC,OAAOtuI,GACT,CACA,OAAOi2K,IACT,CACF,CACAC,kBAAmBxD,CAAAA,SAAS,CAAEn6M,OAAO,CAAE,CACrC,MAAM62M,KAAQ,CAAA,EAAE,CAChB,MAAMC,gBAAkB,EAAE,CAC1B,MAAMC,aAAAA,CAAgB,EAAE,CACxB,MAAMO,SAAAA,CAAY,EAClB,IAAI,MAAMp2L,CAAKo6L,IAAAA,SAAAA,CAAU,CACvB,MAAMsC,OAAU,CAAA,CAAC,EAAE18L,CAAE,CAAA,GAAG,CAAC,CACzB,GAAIlhB,OAAO,CAAC,CAAC,EAAEkhB,CAAE,CAAA,WAAW,CAAC,CAAC,CAAE,CAC9B,MAAM28L,gBAAAA,CAAmB,CAAC,EAAE38L,CAAAA,CAAE,kBAAkB,CAAC,CACjDlhB,OAAO,CAAC69M,iBAAiB,CAAG,IAAI,CAACJ,eAAe,CAACv8L,CAAAA,CAAGlhB,OAAO,CAAC69M,iBAAiB,CAAEvC,SAAAA,EACjF,CACA,GAAIt7M,OAAO,CAAC49M,OAAQ,CAAA,CAAE,CACpB,MAAME,WAAAA,CAAc,CAAC,EAAEF,OAAQ,CAAA,OAAO,CAAC,CACvC,MAAMG,aAAgB,CAAA,CAAC,EAAEH,OAAAA,CAAQ,SAAS,CAAC,CAC3C,MAAMI,OAAS,CAAC,EAAEJ,OAAQ,CAAA,EAAE,CAC5B59M,CAAAA,OAAO,CAACg+M,MAAO,CAAA,CAAGlwN,IAAKmU,CAAAA,GAAG,CAACjC,OAAO,CAACg+M,MAAAA,CAAO,CAAE1G,SAAY,CAAA,CAAA,CACxDt3M,CAAAA,OAAO,CAAC89M,WAAAA,CAAY,CAAG,IAAI,CAACL,eAAe,CAACv8L,CAAGlhB,CAAAA,OAAO,CAAC89M,WAAAA,CAAY,CAAExC,SAAAA,CAAAA,CACrE,MAAM2C,KAAQj+M,CAAAA,OAAO,CAACg+M,MAAAA,CAAO,CAC7BnH,KAAK,CAACoH,MAAM,CAAG,IACfnH,CAAAA,eAAe,CAACmH,KAAAA,CAAM,CAAGnH,eAAe,CAACmH,KAAM,CAAA,EAAIj+M,OAAO,CAAC49M,OAAQ,CAAA,EAAI,CAAC59M,OAAO,CAAC+9M,aAAc,CAAA,CAC9F,GAAI/9M,OAAO,CAAC+9M,aAAAA,CAAc,CAAE,CAC1BhH,cAAc1nN,IAAI,CAAC,CACjBwC,IAAAA,CAAMqvB,CACNqX,CAAAA,EAAAA,CAAIv4B,OAAO,CAAC+9M,cAAc,CAC1BrG,EAAAA,CAAI13M,OAAO,CAACg+M,MAAO,CACrB,CACF,EAAA,CACF,CACF,CACA,GAAIh+M,OAAQy6M,CAAAA,QAAQ,CAAE,CACpB5D,KAAK,CAAC,EAAE,CAAG,IACXC,CAAAA,eAAe,CAAC,CAAA,CAAE,CAAGA,eAAe,CAAC,CAAE,CAAA,GAAKzgN,SAAYygN,CAAAA,eAAe,CAAC,CAAA,CAAE,CAAG,KAC/E,CACAqD,SAAUvD,CAAAA,oBAAoB,CAACC,KAAAA,CAAOC,eAAiBC,CAAAA,aAAAA,EACzD,CACAmH,sBAAAA,CAAuBl+M,OAAO,CAAE0sL,QAAQ,CAAEp7D,cAAc,CAAE,CACxD,MAAMolF,UAAAA,CAAa,CAACC,SAAW9kN,CAAAA,IAAAA,CAAMqE,KAAQ,CAAA,EAAE,GAC7C,CAAA,GAAIygN,SAAW,CAAA,CACbjqB,SAAS51L,GAAG,CAACjF,IAAMqE,CAAAA,KAAAA,EACrB,CACF,CAAA,CACAwgN,UAAW12M,CAAAA,OAAAA,CAAQm+M,QAAQ,CAAE,cAAA,CAAgB,EAC7CzH,CAAAA,CAAAA,UAAAA,CAAW12M,OAAQo+M,CAAAA,gBAAgB,CAAE,wBAAA,CAA0B,IAC/D1H,UAAW12M,CAAAA,OAAAA,CAAQ41M,WAAW,EAAI51M,OAAQ00M,CAAAA,UAAU,CAACxB,WAAW,CAAE,kBAAoB,CAAA,EAAA,CAAA,CACtFwD,UAAW12M,CAAAA,OAAAA,CAAQm8M,SAAS,CAAE,gBAAkB,CAAA,EAAA,CAAA,CAChDzF,WAAW12M,OAAQq+M,CAAAA,gBAAgB,CAAE,oBAAA,CAAsB,EAC3D3H,CAAAA,CAAAA,UAAAA,CAAW12M,OAAQs+M,CAAAA,KAAK,EAAIt+M,OAAQu+M,CAAAA,aAAa,EAAIv+M,OAAAA,CAAQq7M,KAAK,CAAE,QAAU,CAAA,EAAA,CAAA,CAC9E3E,WAAW,IAAM,CAAA,oBAAA,CAAsBlpF,WAAW,CAAC8D,cAAetC,CAAAA,SAAS,CAAGhvH,OAAAA,CAAQ00M,UAAU,CAAC3B,aAAa,CAAG/yM,OAAAA,CAAQ00M,UAAU,CAAC1B,mBAAmB,CAAC,EAC1J,CACA1iF,sBAAAA,CAAuB93F,MAAM,CAAEx4B,OAAO,CAAE,CACtC,MAAMsxH,eAAiBrC,UAAW3+H,CAAAA,GAAG,CAACkoC,MAAAA,CAAAA,CAAQ42F,UAAU,CAACpvH,OAAQ00M,CAAAA,UAAU,CAACnjF,IAAI,CAAA,CAChF,MAAMitF,aAAAA,CAAgBltF,cAAetC,CAAAA,SAAS,CAC9C,MAAMmrF,UAAY,IAAI1D,SAAAA,CAAUj+K,MAAQx4B,CAAAA,OAAAA,CAAQ00M,UAAU,CAAA,CAC1D,IAAI,CAACiJ,kBAAkB,CAACxD,SAAAA,CAAWn6M,OACnC,CAAA,CAAA,MAAMy+M,cAAiB,CAAA,EACvBz+M,CAAAA,QAAQ00M,UAAU,CAACrB,YAAY,CAAGrzM,OAAQ00M,CAAAA,UAAU,CAACrB,YAAY,GAAK,CAAIhwF,CAAAA,eAAAA,CAAkBrjH,OAAQ00M,CAAAA,UAAU,CAACrB,YAAY,CAC3H,MAAM3mB,SAAWytB,SAAUztB,CAAAA,QAAQ,CACnC,IAAI,CAACwxB,sBAAsB,CAACl+M,OAAAA,CAAS0sL,SAAUp7D,cAC/C,CAAA,CAAA,IAAI+mF,UAAa,CAAA,EAAA,CACjB,GAAImG,aAAAA,CAAe,CACjB,GAAIx+M,QAAQm8M,SAAS,CAAE,CACrB,IAAI,CAACG,cAAc,CAAC5vB,QAAAA,CAAU,SAAU,YAAc1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EACnF,CACA,GAAIz+M,QAAQ00M,UAAU,CAACprD,SAAS,GAAK/mC,UAAcviH,EAAAA,OAAAA,CAAQ00M,UAAU,CAAC9yE,SAAS,EAAI5hI,OAAAA,CAAQ00M,UAAU,CAACvtH,eAAe,EAAInnF,OAAQ00M,CAAAA,UAAU,CAAC3B,aAAa,GAAK3lF,WAAa,CAAA,CACzK,IAAI,CAACkvF,cAAc,CAAC5vB,SAAU,SAAW,CAAA,WAAA,CAAa1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cACnF,EAAA,CACA,GAAItE,SAAUnD,CAAAA,WAAW,CAAE,CACzB,GAAIh3M,OAAAA,CAAQgtL,SAAS,EAAIhtL,QAAQ0+M,kBAAkB,CAAE,CACnD,GAAI,CAAC1+M,OAAAA,CAAQ00M,UAAU,CAAC9qK,WAAW,CAAE,CACnC,MAAM+0K,QAAAA,CAAW3+M,OAAQgtL,CAAAA,SAAS,CAAG,WAAA,CAAc,qBACnDqrB,UAAa,CAAA,IAAI,CAACwD,sBAAsB,CAAC,CAAC,EAAE8C,QAAAA,CAAS,SAAS,CAAC,CAAE,CAAC,EAAEA,QAAS,CAAA,EAAE,CAAC,CAAE3+M,SACpF,CACF,CACA,IAAI,CAACs8M,cAAc,CAAC5vB,QAAU,CAAA,cAAA,CAAgB,cAAe1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cAAgBz+M,CAAAA,OAAAA,CAAQg7M,wBAAwB,CAAG,KAAO,KAClJ,CAAA,CAAA,IAAI,CAACsB,cAAc,CAAC5vB,QAAAA,CAAU,QAAU,CAAA,aAAA,CAAe1sL,QAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,CAAgBz+M,OAAQ+6M,CAAAA,YAAY,CAAG,IAAA,CAAO,OAClI,CACA,GAAI/6M,OAAQ4+M,CAAAA,aAAa,CAAE,CACzB,IAAI,CAACtC,cAAc,CAAC5vB,QAAAA,CAAU,eAAiB,CAAA,WAAA,CAAa1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,eAAgBz+M,OAAQ6+M,CAAAA,qBAAqB,EACtI,CACA,IAAI,CAACvC,cAAc,CAAC5vB,SAAU,SAAW,CAAA,WAAA,CAAa1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cAAgBz+M,CAAAA,OAAAA,CAAQ8+M,eAAe,CACxH,CAAA,GAAI9+M,OAAQ00M,CAAAA,UAAU,CAACpB,aAAa,CAAE,CACpC,IAAI,CAACgJ,cAAc,CAAC5vB,QAAAA,CAAU,YAAc,CAAA,gBAAA,CAAkB1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cAAAA,CAAAA,CACzF,IAAI,CAACnC,cAAc,CAAC5vB,QAAAA,CAAU,WAAa,CAAA,aAAA,CAAe1sL,QAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EACvF,CACA,GAAIz+M,OAAQ00M,CAAAA,UAAU,CAACjB,cAAc,CAAE,CACrC,IAAI,CAAC6I,cAAc,CAAC5vB,QAAAA,CAAU,cAAe,eAAiB1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,CAAAA,CACzF,IAAI,CAACnC,cAAc,CAAC5vB,QAAAA,CAAU,sBAAwB,CAAA,wBAAA,CAA0B1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,gBAC7G,CACA,GAAItE,SAAUplD,CAAAA,QAAQ,EAAI/0J,OAAAA,CAAQ00M,UAAU,CAACxB,WAAW,EAAIiH,SAAAA,CAAU1B,WAAW,CAAE,CACjF,GAAIz4M,OAAQ00M,CAAAA,UAAU,CAAClB,QAAQ,CAAE,CAC/B,IAAI,CAAC8I,cAAc,CAAC5vB,QAAAA,CAAU,QAAS,SAAW1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,CAAgBz+M,OAAQ++M,CAAAA,aAAa,EAClH,IAAI,CAACzC,cAAc,CAAC5vB,QAAU,CAAA,YAAA,CAAc,cAAgB1sL,CAAAA,OAAAA,CAASm6M,UAAUrxD,MAAM,CAAE21D,cACzF,EAAA,CACA,GAAIz+M,OAAAA,CAAQ00M,UAAU,CAAChB,YAAY,CAAE,CACnC,IAAI,CAAC4I,cAAc,CAAC5vB,QAAU,CAAA,WAAA,CAAa,cAAe1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cACrF,CAAA,CAAA,IAAI,CAACnC,cAAc,CAAC5vB,QAAU,CAAA,KAAA,CAAO,OAAS1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EAC3E,CACA,GAAIz+M,OAAAA,CAAQ00M,UAAU,CAACvB,oBAAoB,CAAE,CAC3C,IAAI,CAACmJ,cAAc,CAAC5vB,QAAU,CAAA,mBAAA,CAAqB,qBAAuB1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cACvG,EAAA,CACA,GAAIz+M,OAAAA,CAAQq+M,gBAAgB,CAAE,CAC5B,IAAI,CAAC/B,cAAc,CAAC5vB,QAAU,CAAA,UAAA,CAAY,YAAc1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAgBz+M,CAAAA,OAAAA,CAAQg/M,gBAAgB,EAC7H,CACA,IAAI,CAAC1C,cAAc,CAAC5vB,QAAU,CAAA,OAAA,CAAS,SAAW1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EAC/E,CACA,GAAIz+M,OAAAA,CAAQi/M,QAAQ,CAAE,CACpB,IAAI,CAAC3C,cAAc,CAAC5vB,QAAU,CAAA,UAAA,CAAY,MAAQ1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EAC/E,CACA,GAAIz+M,OAAAA,CAAQs+M,KAAK,EAAIt+M,OAAQu+M,CAAAA,aAAa,EAAIv+M,OAAAA,CAAQq7M,KAAK,CAAE,CAC3D,IAAI,CAACiB,cAAc,CAAC5vB,QAAU,CAAA,IAAA,CAAM,OAAQ1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cACzE,EAAA,CACA,IAAI,CAACnC,cAAc,CAAC5vB,QAAAA,CAAU,UAAY,CAAA,YAAA,CAAc1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,eAAgBz+M,OAAQ66M,CAAAA,gBAAgB,CAC3H,CAAA,GAAI76M,OAAQ00M,CAAAA,UAAU,CAACnB,YAAY,CAAE,CACnC,IAAI,CAAC+I,cAAc,CAAC5vB,QAAAA,CAAU,WAAa,CAAA,aAAA,CAAe1sL,QAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,CAAAA,CACrF,IAAI,CAACnC,cAAc,CAAC5vB,SAAU,gBAAkB,CAAA,kBAAA,CAAoB1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cAC/F,CAAA,CAAA,IAAI,CAACnC,cAAc,CAAC5vB,QAAU,CAAA,iBAAA,CAAmB,mBAAqB1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAgBz+M,CAAAA,OAAAA,CAAQi7M,qBAAqB,CAAG,IAAO,CAAA,KAAA,EAC1J,CACA,GAAIj7M,QAAQ00M,UAAU,CAACtB,iBAAiB,CAAE,CACxC,IAAI,CAACkJ,cAAc,CAAC5vB,QAAU,CAAA,YAAA,CAAc,cAAgB1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EACzF,CACA,GAAIz+M,OAAAA,CAAQm+M,QAAQ,EAAIn+M,OAAQo+M,CAAAA,gBAAgB,CAAE,CAChD,IAAI,CAAC9B,cAAc,CAAC5vB,QAAAA,CAAU,OAAS,CAAA,YAAA,CAAc1sL,OAASm6M,CAAAA,SAAAA,CAAUrxD,MAAM,CAAE21D,cAAAA,CAAgBz+M,OAAQ86M,CAAAA,gBAAgB,EAC1H,CACF,CAAO,KAAA,CACL,MAAM9H,mBAAsBhzM,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC1B,mBAAmB,CAClE,GAAIhzM,OAAAA,CAAQ00M,UAAU,CAAC9yE,SAAS,EAAIoxE,mBAAAA,CAAqB,CACvD,IAAI,CAACsJ,cAAc,CAAC5vB,QAAU,CAAA,SAAA,CAAW,WAAa1sL,CAAAA,OAAAA,CAASm6M,SAAUrxD,CAAAA,MAAM,CAAE21D,cAAAA,EACnF,CACF,CACAtE,SAAAA,CAAUpB,sBAAsB,CAACoB,SAAUrxD,CAAAA,MAAM,CAACx4J,GAAG,CAAC,kBAAqB6pN,CAAAA,CAAAA,SAAAA,CAAUrxD,MAAM,CAACx4J,GAAG,CAAC,eAAkB+nN,CAAAA,CAAAA,UAAAA,CAAAA,CAClH,MAAMlmN,QAAW+9H,CAAAA,QAAAA,CAASC,KAAK,CAACgqF,SAAUrxD,CAAAA,MAAM,CAAEqxD,SAAAA,CAAUhoN,QAAQ,CACpE,CAAA,MAAMy5L,QAAWuuB,CAAAA,SAAAA,CAAUvuB,QAAQ,CACnC5rL,OAAQs1D,CAAAA,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAAA,CAAOE,GAAMw1L,GAAAA,QAAAA,CAAS90L,GAAG,CAACV,IAAKF,KACxD8J,CAAAA,CAAAA,CAAAA,OAAAA,CAAQs1D,OAAO,CAACp6D,OAAO,CAAC,CAAChF,KAAAA,CAAOE,MAAMs2L,QAAS51L,CAAAA,GAAG,CAACV,GAAAA,CAAKF,KACxD,CAAA,CAAA,CAAA,MAAMm5D,UAAauL,CAAAA,qBAAAA,CAAsBC,gBAAgB,CAACriC,MAAAA,CAAQ,CAChE3mC,IAAAA,CAAM,gBACNgoD,CAAAA,UAAAA,CAAYsgK,SAAUtgK,CAAAA,UAAU,CAChCuW,cAAgB+pJ,CAAAA,SAAAA,CAAU/pJ,cAAc,CACxCF,UAAYiqJ,CAAAA,SAAAA,CAAUh0J,OAAO,CAC7BgK,aAAcgqJ,SAAU9zJ,CAAAA,OAAO,CAC/BgW,cAAAA,CAAgBlqE,QAChBoqE,CAAAA,gBAAAA,CAAkBpqE,QAClB4pE,CAAAA,eAAAA,CAAiB2wH,SACjB7wH,aAAe+vH,CAAAA,QACjB,CACA,CAAA,CAAA,GAAIuuB,SAAU7oF,CAAAA,cAAc,CAACtC,SAAS,CAAE,CACtC3/D,UAAAA,CAAW+qJ,GAAG,CAAGhsL,mBACnB,CACA,OAAOihC,UACT,CACA/4D,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACqnN,cAAc,CAAG,IAAIpB,uBAA2B,CAAA,IAAI,CAACkB,iBAAiB,CAAG,IAAIlB,wBACpG,CACF,CACA,MAAM0E,QAAAA,CAAW,IAAI1D,uBAAAA,CAErB,MAAMn1D,WAAc,CAAA,CAACloJ,CAAGC,CAAAA,CAAAA,GAAAA,CACtB,GAAID,CAAAA,CAAE3P,MAAM,GAAK4P,EAAE5P,MAAM,CAAE,CACzB,OAAO,KACT,CACA,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAI4P,CAAE3P,CAAAA,MAAM,CAAE,EAAED,CAAE,CAAA,CAC/B,GAAI4P,CAAC,CAAC5P,CAAE,CAAA,GAAK6P,CAAC,CAAC7P,CAAE,CAAA,CAAE,CACjB,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,CAAA,MAAM4wN,SAAW,KAAC3sK,EAAAA,CAChB,OAAOA,KAAAA,CAAM3kD,CAAC,GAAK,CAAK2kD,EAAAA,KAAAA,CAAMpwC,CAAC,GAAK,CAAA,EAAKowC,KAAMp0C,CAAAA,CAAC,GAAK,CACvD,CACA,CAAA,MAAMghN,SAAW,KAAC5sK,EAAAA,CAChB,OAAOA,KAAAA,CAAM3kD,CAAC,GAAK,CAAK2kD,EAAAA,KAAAA,CAAMpwC,CAAC,GAAK,CAAA,EAAKowC,KAAMp0C,CAAAA,CAAC,GAAK,CACvD,CACA,CAAA,MAAMihN,+BAIJC,YAAat/M,CAAAA,OAAO,CAAEizH,KAAK,CAAEssF,MAAM,CAAE5/E,OAAO,CAAEpO,IAAI,CAAE6N,YAAY,CAAE,CAChE,IAAI,CAACogF,oBAAoB,CAACx/M,OAASizH,CAAAA,KAAAA,CAAOssF,MAAQ5/E,CAAAA,OAAAA,CAASpO,IAC3D,CAAA,CAAA,IAAI,CAACkuF,iBAAiB,CAACz/M,OAASu/M,CAAAA,MAAAA,CAAQhuF,IACxC,CAAA,CAAA,IAAI,CAACmuF,gBAAgB,CAAC1/M,OAAAA,CAASu/M,OAAQ5/E,OAAS,CAAA,IAAA,EAClD,CACAggF,SAAAA,CAAU3/M,OAAO,CAAEizH,KAAK,CAAE5B,kBAAkB,CAAEkuF,MAAM,CAAE5/E,OAAO,CAAEpO,IAAI,CAAE6N,YAAY,CAAE,CACjF,IAAI,CAACogF,oBAAoB,CAACx/M,OAAAA,CAASizH,KAAOssF,CAAAA,MAAAA,CAAQ5/E,QAASpO,IAC3D,CAAA,CAAA,IAAI,CAACquF,iBAAiB,CAAC5/M,OAAAA,CAASu/M,MAAQtsF,CAAAA,KAAAA,CAAO5B,oBAC/C,IAAI,CAACwuF,sBAAsB,CAAC7/M,OAASu/M,CAAAA,MAAAA,CAAQtsF,KAC7CjzH,CAAAA,CAAAA,QAAQ00M,UAAU,CAAC9qK,WAAW,CAAG+1F,OAAW,EAACA,CAAAA,OAAAA,CAAUxV,kBAAiB,IAAO,CAAA,CAC/E,IAAI,CAAC21F,mBAAmB,CAAC9/M,OAASizH,CAAAA,KAAAA,CAAOssF,OAAQ5/E,OAASP,CAAAA,YAAAA,CAAAA,CAC1D,IAAI,CAACsgF,gBAAgB,CAAC1/M,OAASu/M,CAAAA,MAAAA,CAAQ5/E,QAAS,KAAOtO,CAAAA,kBAAAA,EACzD,CACAmuF,oBAAAA,CAAqBx/M,OAAO,CAAEizH,KAAK,CAAEssF,MAAM,CAAE5/E,OAAO,CAAEpO,IAAI,CAAE,CAC1DvxH,OAAQy6M,CAAAA,QAAQ,CAAG8E,MAAO9E,CAAAA,QAAQ,CAClC,GAAI8E,MAAOjL,CAAAA,cAAc,CAAE,CACzBt0M,QAAQ00M,UAAU,CAACJ,cAAc,CAAGlkN,MAAO64J,CAAAA,WAAW,CAACs2D,MAAAA,CAAOjL,cAAc,CAAC7+J,OAAO,EACtF,EAAA,CACAz1C,OAAQ00M,CAAAA,UAAU,CAAC9rD,YAAY,CAAG22D,MAAO32D,CAAAA,YAAY,CACrD5oJ,OAAQ00M,CAAAA,UAAU,CAACnjF,IAAI,CAAGA,IAC1BvxH,CAAAA,OAAQ00M,CAAAA,UAAU,CAAC9yE,SAAS,CAAG29E,MAAAA,CAAO39E,SAAS,CAAG,CAClD5hI,CAAAA,OAAAA,CAAQ00M,UAAU,CAACprD,SAAS,CAAGi2D,OAAOj2D,SACtCtpJ,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC9zE,WAAW,CAAGjB,SAAW,CAACA,OAAUzV,CAAAA,qBAAoB,IAAO,CAClFlqH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACt/E,IAAI,CAAGuK,OAAAA,EAAW,CAACA,OAAUhW,CAAAA,cAAa,IAAO,CACpE3pH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACpvE,KAAK,CAAG3F,OAAAA,EAAW,CAACA,OAAAA,CAAUnV,eAAc,IAAO,CACtExqH,CAAAA,OAAQ00M,CAAAA,UAAU,CAAC/a,aAAa,CAAGh6D,OAAW,EAACA,CAAAA,OAAAA,CAAU5V,oBAAmB,IAAO,CACnF/pH,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC9a,gBAAgB,CAAGj6D,OAAW,EAACA,CAAAA,OAAUvV,CAAAA,wBAAuB,IAAO,CAC1FpqH,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC7a,cAAc,CAAGl6D,OAAAA,EAAW,CAACA,OAAUtV,CAAAA,sBAAqB,IAAO,CACtFrqH,CAAAA,OAAQ00M,CAAAA,UAAU,CAAC5a,uBAAuB,CAAGn6D,OAAAA,EAAW,CAACA,QAAUpV,iCAAgC,IAAO,CAC1GvqH,CAAAA,OAAQ00M,CAAAA,UAAU,CAAClD,cAAc,CAAG+N,MAAO/N,CAAAA,cAAc,EAAI,CAAA,CAC7D,GAAIv+E,KAAAA,CAAMq4B,wBAAwB,EAAIi0D,OAAO7gD,WAAW,CAAE,CACxD1+J,OAAAA,CAAQ00M,UAAU,CAACppD,wBAAwB,CAAG,IAC9CtrJ,CAAAA,OAAAA,CAAQ00M,UAAU,CAACjD,+BAA+B,CAAGx+E,KAAM8hC,CAAAA,QAAQ,CAAC1Y,cACpEr8I,CAAAA,OAAAA,CAAQ00M,UAAU,CAAChD,+BAA+B,CAAGz+E,MAAM8hC,QAAQ,CAACpY,cACpE38I,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC/C,2BAA2B,CAAG1+E,KAAAA,CAAM8hC,QAAQ,CAAC7Q,UAChElkJ,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC9C,kCAAkC,CAAG3+E,KAAAA,CAAM8hC,QAAQ,CAACvY,kBACzE,MAAO,CACLx8I,OAAAA,CAAQ00M,UAAU,CAACppD,wBAAwB,CAAG,KAC9CtrJ,CAAAA,QAAQ00M,UAAU,CAACjD,+BAA+B,CAAG,KACrDzxM,CAAAA,OAAQ00M,CAAAA,UAAU,CAAChD,+BAA+B,CAAG,KACrD1xM,CAAAA,OAAQ00M,CAAAA,UAAU,CAAC9C,kCAAkC,CAAG,MAC1D,CACF,CACA8N,gBAAAA,CAAiB1/M,OAAO,CAAEu/M,MAAM,CAAE5/E,OAAO,CAAEogF,cAAc,CAAE1uF,kBAAkB,CAAE,CAC7E,IAAI5nF,MAAAA,CAAS,MACb,IAAIC,MAAAA,CAAS,KACb,CAAA,IAAIs2K,SAAY,CAAA,KAAA,CAChB,GAAIrgF,OAAAA,CAAS,CACXl2F,MAAS,CAACk2F,CAAAA,OAAAA,CAAU/V,aAAY,IAAO,CACvClgF,CAAAA,MAAAA,CAAS,CAACi2F,OAAAA,CAAU9V,aAAY,IAAO,CACvCm2F,CAAAA,SAAAA,CAAY,CAACrgF,QAAU7V,gBAAe,IAAO,EAC/C,CACA9pH,OAAQ00M,CAAAA,UAAU,CAAC7C,YAAY,CAAG,KAClC,CAAA,IAAI,CAACoO,UAAU,CAAG,EAAE,CACpB,MAAMC,gBAAmB,CAAA,EACzB,CAAA,IAAI,MAAMh/L,CAAAA,IAAKo6L,SAAU,CAAA,CACvB,IAAI,CAAC6E,iBAAiB,CAACngN,OAAAA,CAASu/M,MAAQr+L,CAAAA,CAAAA,CAAGuoB,MAAQC,CAAAA,MAAAA,CAAQs2K,UAAWD,cAAgBG,CAAAA,gBAAAA,EACxF,CACA,IAAI,CAACD,UAAU,CAAG,IAClBjgN,CAAAA,OAAQ00M,CAAAA,UAAU,CAACnC,IAAI,CAAGlhF,kBAAAA,EAAoBga,WAC9CrrI,CAAAA,QAAQq7M,KAAK,CAAGr7M,OAAQ00M,CAAAA,UAAU,CAACnC,IAAI,CACvCvyM,QAAQ00M,UAAU,CAAC5C,eAAe,CAAG9xM,OAAQm+M,CAAAA,QAAQ,CACrDn+M,QAAQ00M,UAAU,CAAC3C,kBAAkB,CAAG/xM,OAAQ41M,CAAAA,WAAW,CAC3D51M,QAAQ00M,UAAU,CAAC1C,UAAU,CAAGhyM,OAAQm8M,CAAAA,SAAS,CACjDn8M,QAAQ00M,UAAU,CAACzC,UAAU,CAAGjyM,OAAQgtL,CAAAA,SAAS,CACjDhtL,QAAQ00M,UAAU,CAACxC,mBAAmB,CAAGlyM,OAAQ0+M,CAAAA,kBAAkB,CACnE1+M,QAAQ00M,UAAU,CAACvC,KAAK,CAAGnyM,OAAQs+M,CAAAA,KAAK,EAAIt+M,OAAAA,CAAQu+M,aAAa,EAAIv+M,OAAAA,CAAQ00M,UAAU,CAACnC,IACxFvyM,CAAAA,OAAAA,CAAQ00M,UAAU,CAACtC,iBAAiB,CAAGpyM,OAAAA,CAAQogN,WACjD,CACAD,iBAAAA,CAAkBngN,OAAO,CAAEu/M,MAAM,CAAEr+L,CAAC,CAAEuoB,MAAM,CAAEC,MAAM,CAAEs2K,SAAS,CAAED,cAAc,CAAEG,gBAAgB,CAAE,CACjG,MAAMG,UAAYn/L,CAAM,GAAA,SAAA,CACxB,GAAI,CAAC6+L,cAAkBM,EAAAA,SAAAA,CAAW,CAChC,MAAMC,MAAQ,CAAC,EAAEp/L,CAAE,CAAA,GAAG,CAAC,CACvB,MAAMq/L,KAAQ,CAAA,CAAC,EAAEr/L,CAAE,CAAA,WAAW,CAAC,CAC/B,MAAMs/L,MAAAA,CAAS,CAAC,EAAEt/L,EAAE,kBAAkB,CAAC,CACvC,MAAMu/L,KAAQ,CAAA,CAAC,EAAEH,KAAAA,CAAM,OAAO,CAAC,CAC/B,MAAMI,KAAAA,CAAQ,CAAC,EAAEJ,KAAM,CAAA,SAAS,CAAC,CACjC,MAAMK,KAAQ,CAAA,CAAC,EAAEL,KAAAA,CAAM,EAAE,CAAC,CAC1B,MAAMM,KAAAA,CAAQ,CAAC,EAAEN,KAAM,CAAA,UAAU,CAAC,CAClC,GAAIp/L,CAAM,GAAA,OAAA,CAAS,CACjBlhB,OAAO,CAACsgN,KAAAA,CAAM,CAAG,KACjBtgN,CAAAA,OAAO,CAAC4gN,KAAM,CAAA,CAAGvqN,SACjB2J,CAAAA,OAAO,CAACygN,MAAM,CAAG,EACjBzgN,CAAAA,OAAO,CAAC0gN,KAAAA,CAAM,CAAG,CACjB1gN,CAAAA,OAAO,CAAC2gN,KAAM,CAAA,CAAG,EACnB,CACA3gN,OAAO,CAACugN,MAAM,CAAG,KACjBvgN,CAAAA,OAAO,CAACwgN,MAAAA,CAAO,CAAG,EAAA,CAClB,GAAIH,SAAad,EAAAA,MAAAA,CAAOj2D,SAAS,GAAK/mC,UAAcg9F,EAAAA,MAAAA,CAAO39E,SAAS,GAAK,GAAO,CAAC29E,MAAAA,CAAOp4H,eAAe,EAAIo4H,MAAOxM,CAAAA,aAAa,GAAK3lF,WAAAA,CAAa,CAC/I,MACF,CACA,GAAIlsG,CAAAA,GAAM,QAAYq+L,EAAAA,MAAM,CAACgB,KAAAA,CAAM,CAAE,CACnC,GAAIP,SAAW,CAAA,CACbhgN,OAAO,CAACugN,KAAM,CAAA,CAAGhB,MAAM,CAACgB,KAAAA,CAAM,CAC9BvgN,OAAO,CAACwgN,MAAO,CAAA,CAAGjB,MAAM,CAACiB,MAAAA,CAAO,CAChCxgN,OAAQ00M,CAAAA,UAAU,CAAC7C,YAAY,CAAG,KACpC,CACF,CACA,GAAI0N,MAAM,CAACe,KAAM,CAAA,CAAE,CACjB,IAAIO,KAAAA,CAAQ,IACZ,CAAA,GAAItB,MAAM,CAACoB,KAAM,CAAA,GAAK,GAAK,CAACl3K,MAAAA,CAAQo3K,KAAQ,CAAA,KAAA,CAC5C,GAAItB,MAAM,CAACoB,KAAAA,CAAM,GAAK,CAAK,EAAA,CAACj3K,MAAQm3K,CAAAA,KAAAA,CAAQ,KAC5C,CAAA,GAAIA,KAAO,CAAA,CACT,MAAMC,KAAQvB,CAAAA,MAAM,CAACe,KAAAA,CAAM,CAAC/nL,EAAE,CAC9B,IAAIm+B,WAAawpJ,gBAAgB,CAACY,KAAM,CAAA,CACxC,GAAIpqJ,UAAAA,GAAergE,SAAW,CAAA,CAC5B6pN,gBAAgB,CAACY,KAAAA,CAAM,CAAG5/L,CAAAA,CAC1Bw1C,UAAax1C,CAAAA,EACf,CACAlhB,OAAO,CAACsgN,KAAM,CAAA,CAAG,CAAC,CAACf,MAAM,CAACe,KAAM,CAChCtgN,CAAAA,OAAO,CAAC4gN,KAAM,CAAA,CAAGlqJ,UACjB12D,CAAAA,OAAO,CAAC0gN,MAAM,CAAG,IAAI,CAACK,kBAAkB,CAACxB,MAAAA,CAAOyB,UAAU,CAACN,OAAQnB,MAAM,CAACoB,KAAM,CAAA,CAChF3gN,CAAAA,OAAO,CAACygN,KAAAA,CAAM,CAAGlB,MAAM,CAACkB,KAAM,CAC9BzgN,CAAAA,OAAO,CAAC2gN,KAAAA,CAAM,CAAGpB,MAAM,CAACoB,KAAM,EAChC,CACF,CACF,CACF,CACAlB,kBAAkBz/M,OAAO,CAAEu/M,MAAM,CAAEhuF,IAAI,CAAE,CACvC,MAAM0vF,UAAY1vF,IAASvG,GAAAA,cAC3BhrH,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC1B,mBAAmB,CAAGiO,UAAY1B,MAAOxM,CAAAA,aAAa,CAAGwM,MAAAA,CAAOvM,mBACnFhzM,CAAAA,OAAAA,CAAQ00M,UAAU,CAACH,WAAW,CAAG0M,SACjCjhN,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC3zD,MAAM,CAAG,GAAE,CAEhC8+D,sBAAuB7/M,CAAAA,OAAO,CAAEu/M,MAAM,CAAEtsF,KAAK,CAAE,CAC7C,MAAMigF,WAAc,CAAA,CAAC,EAAEqM,OAAO7L,YAAY,EAAI6L,MAAO2B,CAAAA,WAAW,EAAI3B,MAAAA,CAAO4B,SAAS,EAAI5B,OAAO6B,OAAO,EAAIhC,QAASG,CAAAA,MAAAA,CAAO8B,QAAQ,CAAA,EAAK9B,MAAO+B,CAAAA,iBAAiB,CAAG,CAAK/B,EAAAA,MAAAA,CAAO7L,YAAY,EAAI6L,MAAOnM,CAAAA,iBAAiB,EAAImM,MAAAA,CAAOgC,SAAS,CAAG,CAAA,CAC7O,CAAA,MAAMlD,gBAAmB,CAAA,CAACkB,MAAO7L,CAAAA,YAAY,EAAI6L,MAAOiC,CAAAA,yBAAyB,CACjF,MAAM9G,YAAexH,CAAAA,WAAAA,GAAgBqM,MAAAA,CAAO7E,YAAY,EAAI,CAAC6E,MAAO2B,CAAAA,WAAW,EAAI,CAAC3B,MAAOkC,CAAAA,mBAAmB,CAAKtC,EAAAA,QAAAA,CAASI,MAAO8B,CAAAA,QAAQ,CAC3I,CAAA,MAAMK,qBAAwBxO,CAAAA,WAAAA,EAAeqM,OAAOiC,yBAAyB,GAAKjC,MAAAA,CAAOmC,qBAAqB,EAAInC,MAAO+B,CAAAA,iBAAiB,CAAG,CAAK,EAAA,CAAC/B,MAAOoC,CAAAA,oBAAoB,CAAD,CAC7K,MAAMC,iBAAAA,CAAoB,OAAWvhL,EAAAA,OAAAA,CAAUA,OAAQhsC,CAAAA,MAAM,GAAK+yB,gBAAAA,EAAoBiZ,OAAQr6B,CAAAA,IAAI,GAAKopB,uBAA0B,CAAA,KAAA,CACjI,MAAMyyL,QAAAA,CAAW,CAAC1jN,CAAAA,CAAGC,CAAItQ,GAAAA,IAAAA,CAAKma,GAAG,CAAC9J,CAAAA,CAAIC,CAAK,CAAA,CAAA,IAC3C4B,CAAAA,OAAAA,CAAQ06M,YAAY,CAAGA,YACvB16M,CAAAA,OAAAA,CAAQ0hN,qBAAqB,CAAGA,qBAChC1hN,CAAAA,OAAQ26M,CAAAA,aAAa,CAAG4E,MAAO7L,CAAAA,YAAY,EAAI6L,MAAAA,CAAOuC,SAAS,CAAG,CAClE9hN,CAAAA,QAAQ46M,SAAS,CAAG,IACpB56M,CAAAA,OAAQ8+M,CAAAA,eAAe,CAAGS,MAAAA,CAAOa,UAAU,EAAE5hL,QAC7Cx+B,CAAAA,OAAAA,CAAQ6+M,qBAAqB,CAAGU,MAAOwC,CAAAA,gBAAgB,EAAEvjL,QACzDx+B,CAAAA,OAAQ66M,CAAAA,gBAAgB,CAAG0E,MAAAA,CAAOyC,WAAW,EAAExjL,QAC/Cx+B,CAAAA,OAAAA,CAAQ86M,gBAAgB,CAAGyE,MAAOpB,CAAAA,QAAQ,EAAE3/K,QAC5Cx+B,CAAAA,OAAQ+6M,CAAAA,YAAY,CAAG6G,iBAAAA,CAAkBrC,MAAOvyB,CAAAA,SAAS,CACzDhtL,CAAAA,QAAQiiN,cAAc,CAAGJ,QAAStC,CAAAA,MAAAA,CAAO2C,UAAU,CAAE,CACrDliN,CAAAA,CAAAA,QAAQmiN,mBAAmB,CAAGN,QAAStC,CAAAA,MAAAA,CAAO6C,eAAe,CAAE,CAAM,CAAA,GAAA,CACrEpiN,CAAAA,OAAQqiN,CAAAA,aAAa,CAAG9C,MAAAA,CAAO5L,oBAAoB,EAAI4L,MAAO+C,CAAAA,SAAS,GAAK,CAC5EtiN,CAAAA,OAAQg/M,CAAAA,gBAAgB,CAAGO,MAAAA,CAAO2B,WAAW,EAAE1iL,QAC/Cx+B,CAAAA,OAAAA,CAAQ++M,aAAa,CAAGQ,MAAOgD,CAAAA,QAAQ,EAAE/jL,QACzCx+B,CAAAA,OAAQwiN,CAAAA,OAAO,CAAGjD,MAAAA,CAAOkD,OACzBziN,CAAAA,OAAAA,CAAQi/M,QAAQ,CAAG,CAAC,CAACM,MAAAA,CAAOmD,WAC5B1iN,CAAAA,OAAAA,CAAQ4+M,aAAa,CAAG,CAAC,CAACW,MAAAA,CAAOwC,gBACjC/hN,CAAAA,OAAAA,CAAQ2iN,YAAY,CAAG,CAAC,CAACpD,MAAAA,CAAOvyB,SAChChtL,CAAAA,OAAAA,CAAQg7M,wBAAwB,CAAG4G,iBAAAA,CAAkBrC,MAAOqD,CAAAA,eAAe,CAC3E5iN,CAAAA,OAAQ6iN,CAAAA,iBAAiB,CAAGtD,MAAOsD,CAAAA,iBAAiB,CACpD7iN,OAAQ8iN,CAAAA,YAAY,CAAGvD,MAAAA,CAAOuD,YAAY,CAC1C9iN,OAAQ+iN,CAAAA,cAAc,CAAG,CAAC,CAACxD,MAAAA,CAAOwD,cAAc,CAChD/iN,OAAQi7M,CAAAA,qBAAqB,CAAG2G,iBAAAA,CAAkBrC,MAAOb,CAAAA,kBAAkB,CAC3E1+M,CAAAA,OAAAA,CAAQgjN,OAAO,CAAGnB,QAAStC,CAAAA,MAAAA,CAAO6C,eAAe,CAAE,EAAM,GACzD,CAAA,CAAA,GAAInvF,KAAMu4E,CAAAA,wBAAwB,CAAE,CAClCxrM,OAAQg/M,CAAAA,gBAAgB,CAAG,QAC3Bh/M,CAAAA,OAAQ++M,CAAAA,aAAa,CAAG,SAC1B,CACA/+M,OAAAA,CAAQijN,eAAe,CAAG1D,MAAAA,CAAO2D,WAAW,GAAK,CACjDljN,CAAAA,OAAQk7M,CAAAA,WAAW,CAAGqE,MAAOrE,CAAAA,WAAW,CACxCl7M,OAAQm7M,CAAAA,gBAAgB,CAAGoE,MAAAA,CAAOpE,gBAAgB,CAClDn7M,OAAQo7M,CAAAA,oBAAoB,CAAGmE,MAAAA,CAAOnE,oBACtCp7M,CAAAA,OAAQq+M,CAAAA,gBAAgB,CAAGA,gBAC3Br+M,CAAAA,OAAAA,CAAQ00M,UAAU,CAACnD,eAAe,CAAG,KACrCvxM,CAAAA,OAAAA,CAAQ00M,UAAU,CAACrC,SAAS,CAAGkN,OAAOlN,SACtCryM,CAAAA,OAAAA,CAAQ00M,UAAU,CAACpC,SAAS,CAAG,CAAC,CAACiN,MAAAA,CAAOjN,SACxCtyM,CAAAA,OAAAA,CAAQ00M,UAAU,CAAClC,gBAAgB,CAAG+M,MAAAA,CAAO/M,gBAC7CxyM,CAAAA,OAAAA,CAAQ00M,UAAU,CAAChC,eAAe,CAAG6M,MAAAA,CAAO7M,eAC5C1yM,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC/B,oBAAoB,CAAG4M,MAAAA,CAAOtK,wBAAwB,GAAK,CAC9Ej1M,CAAAA,OAAQ00M,CAAAA,UAAU,CAAC9B,OAAO,CAAG,CAAC,CAAC2M,MAAO4D,CAAAA,OAAO,CAC7CnjN,QAAQ00M,UAAU,CAAC7B,iBAAiB,CAAG,CAAC,CAAC0M,MAAO1M,CAAAA,iBAAiB,CACjE7yM,OAAAA,CAAQ00M,UAAU,CAACvtH,eAAe,CAAGo4H,MAAOp4H,CAAAA,eAAe,CAC3DnnF,OAAAA,CAAQ00M,UAAU,CAAC5B,oBAAoB,CAAGyM,MAAOzM,CAAAA,oBAAoB,CACrE9yM,OAAAA,CAAQ00M,UAAU,CAAC3B,aAAa,CAAGwM,MAAOxM,CAAAA,aAAa,CACvD/yM,OAAAA,CAAQ00M,UAAU,CAACzB,iBAAiB,CAAGsM,MAAOtM,CAAAA,iBAAiB,CAC/DjzM,OAAAA,CAAQ00M,UAAU,CAACjC,aAAa,CAAG8M,MAAO9M,CAAAA,aAAa,CACvDzyM,OAAAA,CAAQ00M,UAAU,CAACxB,WAAW,CAAGA,WACjClzM,CAAAA,QAAQ00M,UAAU,CAACvB,oBAAoB,CAAG,CAACuO,qBAAyB,EAAA,CAAC,CAACnC,MAAOoC,CAAAA,oBAAoB,GAAKpC,MAAOiC,CAAAA,yBAAyB,CACtIxhN,QAAQ00M,UAAU,CAACtB,iBAAiB,CAAGmM,MAAOnM,CAAAA,iBAAiB,CAC/DpzM,QAAQ00M,UAAU,CAACrB,YAAY,CAAGkM,MAAOlM,CAAAA,YAAY,CACrDrzM,QAAQ00M,UAAU,CAACpB,aAAa,CAAG,CAACiM,MAAO2C,CAAAA,UAAU,EAAI,CAAC,CAAC3C,MAAO6D,CAAAA,aAAa,IAAM7D,MAAAA,CAAO5L,oBAAoB,EAAI3zM,OAAAA,CAAQ00M,UAAU,CAACb,gBAAgB,GAAK7qF,kBAAiB,CAC7KhpH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACnB,YAAY,CAAG,CAAC,CAACgM,MAAAA,CAAOgC,SAAS,CACpDvhN,OAAQ00M,CAAAA,UAAU,CAAClB,QAAQ,CAAG+L,MAAAA,CAAO/L,QAAQ,CAC7CxzM,OAAQ00M,CAAAA,UAAU,CAACjB,cAAc,CAAG8L,MAAAA,CAAO9L,cAAc,EAAI8L,MAAAA,CAAO2D,WAAW,GAAK,CACpFljN,CAAAA,OAAQ00M,CAAAA,UAAU,CAAChB,YAAY,CAAG6L,MAAO7L,CAAAA,YAAY,CACrD1zM,OAAQ00M,CAAAA,UAAU,CAACf,oBAAoB,CAAG4L,MAAO5L,CAAAA,oBAAoB,CACrE3zM,OAAQ00M,CAAAA,UAAU,CAACd,UAAU,CAAG2L,MAAO3L,CAAAA,UAAU,CAAG,CACpD5zM,CAAAA,OAAAA,CAAQ00M,UAAU,CAACF,aAAa,CAAG+K,MAAAA,CAAO/K,cAC5C,CACAoL,iBAAAA,CAAkB5/M,OAAO,CAAEu/M,MAAM,CAAEtsF,KAAK,CAAE5B,kBAAkB,CAAE,CAC5DrxH,QAAQ00M,UAAU,CAACtpE,GAAG,CAAGm0E,MAAOrJ,CAAAA,MAAM,CAAG7kF,kBAAAA,CAAmB+Z,GAAG,CAAGpoB,QAClEhjH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACtwM,KAAK,CAAGitH,mBAAmBsa,iBAC9C3rI,CAAAA,OAAAA,CAAQ00M,UAAU,CAACvnB,OAAO,CAAGoyB,OAAOpJ,UAAU,CAAG9kF,kBAAmBrnD,CAAAA,WAAW,CAAG0+C,YAAAA,CAClF,IAAI26F,aAAAA,CAAgB,MACpB,GAAI9D,MAAAA,CAAOpX,QAAQ,EAAIoX,MAAO6B,CAAAA,OAAO,CAAE,CACrCphN,QAAQ00M,UAAU,CAACb,gBAAgB,CAAG3qF,wBACtClpH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACZ,kBAAkB,CAAGyL,MAAOpX,CAAAA,QAAQ,CAAC3pK,QAAQ,CAChEx+B,QAAQ00M,UAAU,CAACX,yBAAyB,CAAGwL,MAAO6B,CAAAA,OAAO,CAAC5iL,SAAQ,CACjE,KAAA,GAAI+gL,MAAOpX,CAAAA,QAAQ,CAAE,CAC1BnoM,OAAQ00M,CAAAA,UAAU,CAACb,gBAAgB,CAAG5qF,sBACtCjpH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACZ,kBAAkB,CAAGyL,MAAOpX,CAAAA,QAAQ,CAAC3pK,SAAQ,CAClE,KAAO,GAAI+gL,MAAAA,CAAO6B,OAAO,CAAE,CACzBphN,OAAQ00M,CAAAA,UAAU,CAACb,gBAAgB,CAAG1qF,qBACtCnpH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACZ,kBAAkB,CAAGyL,MAAAA,CAAO6B,OAAO,CAAC5iL,SAAQ,CACjE,KAAO,GAAI+gL,MAAAA,CAAO4B,SAAS,CAAE,CAC3BnhN,OAAAA,CAAQ00M,UAAU,CAACb,gBAAgB,CAAGzqF,uBACtCppH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACZ,kBAAkB,CAAGyL,MAAAA,CAAO4B,SAAS,CAAC3iL,SAC3D,CAAO,KAAA,GAAI+gL,OAAOnJ,SAAS,EAAInjF,KAAMk1E,CAAAA,QAAQ,EAAIl1E,KAAAA,CAAMq2E,MAAM,CAAE,CAC7DtpM,OAAQ00M,CAAAA,UAAU,CAACb,gBAAgB,CAAG3qF,wBACtClpH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACZ,kBAAkB,CAAG7gF,KAAAA,CAAMk1E,QAAQ,CAAC3pK,QACvDx+B,CAAAA,OAAQ00M,CAAAA,UAAU,CAACX,yBAAyB,CAAG9gF,KAAAA,CAAMq2E,MAAM,CAAC9qK,QAAQ,CACpE6kL,aAAAA,CAAgB,KAClB,CAAA,KAAO,GAAI9D,MAAAA,CAAOnJ,SAAS,EAAInjF,MAAMk1E,QAAQ,CAAE,CAC7CnoM,OAAAA,CAAQ00M,UAAU,CAACb,gBAAgB,CAAG5qF,sBACtCjpH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACZ,kBAAkB,CAAG7gF,KAAMk1E,CAAAA,QAAQ,CAAC3pK,QAAQ,CAC/D6kL,aAAgB,CAAA,KAClB,MAAO,GAAI9D,MAAAA,CAAOnJ,SAAS,EAAInjF,MAAMq2E,MAAM,CAAE,CAC3CtpM,OAAAA,CAAQ00M,UAAU,CAACb,gBAAgB,CAAG1qF,qBACtCnpH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACZ,kBAAkB,CAAG7gF,KAAMq2E,CAAAA,MAAM,CAAC9qK,QAAQ,CAC7D6kL,aAAgB,CAAA,KAClB,CAAO,KAAA,CACLrjN,OAAQ00M,CAAAA,UAAU,CAACb,gBAAgB,CAAG7qF,kBACtChpH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACZ,kBAAkB,CAAG,KAC1C,CACA,GAAIyL,MAAAA,CAAOjN,SAAS,CAAE,CACpBtyM,OAAAA,CAAQ00M,UAAU,CAACV,aAAa,CAAG1qF,oBACnCtpH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACT,eAAe,CAAG,KACvC,CAAO,KAAA,CACL,MAAM9L,QAAAA,CAAWoX,MAAOpX,CAAAA,QAAQ,GAAKoX,MAAAA,CAAOnJ,SAAS,EAAInjF,KAAMk1E,CAAAA,QAAQ,CAAGl1E,KAAAA,CAAMk1E,QAAQ,CAAG,IAAG,CAC9F,CAAA,GAAIA,QAAY,EAAA,CAACoX,MAAO4B,CAAAA,SAAS,CAAE,CACjCnhN,OAAAA,CAAQ00M,UAAU,CAACV,aAAa,CAAGzqF,qBACnCvpH,CAAAA,QAAQ00M,UAAU,CAACT,eAAe,CAAG9L,QAAS3pK,CAAAA,SAAQ,CACxD,KAAO,CACLx+B,OAAQ00M,CAAAA,UAAU,CAACV,aAAa,CAAGxqF,mBACnCxpH,CAAAA,OAAAA,CAAQ00M,UAAU,CAACT,eAAe,CAAG,KACvC,CACF,CACAj0M,OAAQ00M,CAAAA,UAAU,CAACrxC,eAAe,CAAGggD,aACrCrjN,CAAAA,OAAQ00M,CAAAA,UAAU,CAACR,kBAAkB,CAAGmP,aAAiBpwF,EAAAA,KAAAA,CAAM82E,6BACjE,CACA+V,mBAAAA,CAAoB9/M,OAAO,CAAEizH,KAAK,CAAEssF,MAAM,CAAE5/E,OAAO,CAAEP,YAAY,CAAE,CACjEp/H,QAAQm+M,QAAQ,CAAG,KACnBn+M,CAAAA,OAAQsjN,CAAAA,eAAe,CAAG,EAC1BtjN,CAAAA,OAAQujN,CAAAA,UAAU,CAAG,CACrBvjN,CAAAA,OAAAA,CAAQwjN,iBAAiB,CAAG,CAC5BxjN,CAAAA,OAAAA,CAAQ00M,UAAU,CAACP,sBAAsB,CAAG,KAC5Cn0M,CAAAA,QAAQ41M,WAAW,CAAG,KACtB,CAAA,GAAIj2E,OAAS,CAAA,CACX3/H,OAAQ00M,CAAAA,UAAU,CAACN,QAAQ,CAAG,CAACz0E,OAAUjW,CAAAA,kBAAiB,IAAO,CAAA,CACjE,GAAI,CAACiW,OAAU3V,CAAAA,YAAW,IAAO,CAAA,CAAG,CAClChqH,OAAAA,CAAQ86M,gBAAgB,CAAG7nF,KAAAA,CAAMi4E,mBAAmB,GAAKjkL,iBAAoB,CAAA,MAAA,CAAS,QACtFjnB,CAAAA,QAAQm+M,QAAQ,CAAG,IACnBn+M,CAAAA,OAAQsjN,CAAAA,eAAe,CAAG,KAC1BtjN,CAAAA,OAAQujN,CAAAA,UAAU,CAAG,CACrBvjN,CAAAA,OAAAA,CAAQwjN,iBAAiB,CAAG,CAC5BxjN,CAAAA,OAAAA,CAAQ00M,UAAU,CAACP,sBAAsB,CAAG,CAACoL,MAAAA,CAAOpB,QAAQ,CAC5D,GAAI,CAACx+E,OAAU1V,CAAAA,eAAc,IAAO,CAAA,CAAG,CACrCjqH,OAAQ41M,CAAAA,WAAW,CAAG,KACxB,CACA,GAAI,CAACj2E,QAAUrV,mBAAkB,IAAO,CAAG,CAAA,CACzCtqH,OAAQ00M,CAAAA,UAAU,CAACP,sBAAsB,CAAG,MAC9C,CACF,CACF,CACA,GAAIoL,MAAAA,CAAO7gD,WAAW,CAAE,CACtB,MAAM43C,cAAAA,CAAiB,EAAE,CACzB,MAAMn0K,IAAAA,CAAOw9F,OAAUA,CAAAA,OAAAA,EAAW,GAAK/U,mBACvC5qH,CAAAA,OAAQ00M,CAAAA,UAAU,CAACL,gBAAgB,CAAG,CAAC,EAAElyK,IAAAA,CAAOyoF,mBAAkB,CAAA,CAClE,GAAIwU,YAAAA,CAAc,CAChBu1E,yBAAAA,CAA0B7zD,aAAa,CAAC/8B,qBAAAA,CAAuBqb,YAAY,CAACrb,qBAAsB,CAAA,CAAEuyF,cAAgBn0K,CAAAA,IAAAA,CAAAA,CACpH,GAAI,CAAC8wF,KAAAA,CAAMq4B,wBAAwB,CAAE,CACnCqpD,yBAAAA,CAA0B7zD,aAAa,CAAC98B,eAAgBob,YAAY,CAACpb,cAAe,CAAA,CAAEsyF,cAAgBn0K,CAAAA,IAAAA,CAAAA,CACtGwyK,yBAA0B7zD,CAAAA,aAAa,CAAC58B,cAAgBkb,CAAAA,YAAY,CAAClb,cAAAA,CAAe,CAAEoyF,cAAAA,CAAgBn0K,IACxG,EAAA,CACF,CACAniC,OAAQ00M,CAAAA,UAAU,CAAC3zD,MAAM,CAAGu1D,eAC9B,CAAO,KAAA,CACLt2M,QAAQ00M,UAAU,CAAC3zD,MAAM,CAAG,GAC9B,CACA,GAAI/gJ,QAAQ00M,UAAU,CAAC3zD,MAAM,CAACvyJ,MAAM,GAAK,CAAK,EAAA,CAACykI,MAAMq4B,wBAAwB,CAAE,CAC7EtrJ,OAAAA,CAAQ00M,UAAU,CAACN,QAAQ,CAAG,KAChC,CACF,CACA2M,kBAAmB0C,CAAAA,KAAK,CAAE/L,EAAE,CAAE,CAC5B,GAAI,CAAC+L,KAAAA,CAAO,OAAO,CAAA,CACnB,IAAIC,MAAAA,CAAS,IAAI,CAACzD,UAAU,CAACvI,EAAAA,CAAG,CAChC,GAAI,CAACgM,MAAAA,CAAQ,CACXA,MAAAA,CAAS,EAAE,CACX,IAAI,CAACzD,UAAU,CAACvI,EAAG,CAAA,CAAGgM,OACxB,CACA,IAAI,IAAIn1N,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIm1N,MAAOl1N,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,GAAI83J,WAAAA,CAAYq9D,MAAM,CAACn1N,CAAE,CAAA,CAAC,EAAE,CAAC2H,KAAK,CAAEutN,KAAK,CAAC,CAAA,CAAE,CAACvtN,KAAK,GAAKmwJ,WAAYq9D,CAAAA,MAAM,CAACn1N,CAAAA,CAAE,CAAC,CAAA,CAAE,CAAC2H,KAAK,CAAEutN,KAAK,CAAC,CAAE,CAAA,CAACvtN,KAAK,CAAA,CAAG,CACtG,OAAO3H,EAAI,CACb,CACF,CACA,OAAOm1N,MAAOr0N,CAAAA,IAAI,CAACo0N,KAAAA,CACrB,CA5SAntN,WAAa,EAAA,CACX,IAAI,CAAC2pN,UAAU,CAAG,KACpB,CA2SF,CAEA,SAAS0D,iBAAAA,CAAkB9xN,IAAI,CAAEsP,OAAU,CAAA,IAAI,CAAEyiN,WAAAA,CAAc,IAAI,CACjE,CAAA,MAAMt1N,MAAS,CAAA,EACfA,CAAAA,MAAM,CAAC,CAAC,EAAEuD,IAAAA,CAAK,GAAG,CAAC,CAAC,CAAG,SACvBvD,CAAAA,MAAM,CAAC,CAAC,EAAEuD,IAAAA,CAAK,SAAS,CAAC,CAAC,CAAG,MAC7BvD,CAAAA,MAAM,CAAC,CAAC,EAAEuD,IAAAA,CAAK,SAAS,CAAC,CAAC,CAAG,MAC7BvD,CAAAA,MAAM,CAAC,CAAC,EAAEuD,IAAAA,CAAK,WAAW,CAAC,CAAC,CAAG,QAC/BvD,CAAAA,MAAM,CAAC,CAAC,EAAEuD,IAAK,CAAA,KAAK,CAAC,CAAC,CAAG,QAAA,CACzB,GAAIsP,OAAAA,CAAS,CACX7S,MAAM,CAAC,CAAC,EAAEuD,IAAK,CAAA,UAAU,CAAC,CAAC,CAAG,QAC9B,CAAA,GAAI+xN,WAAa,CAAA,CACft1N,MAAM,CAAC,CAAC,EAAEuD,KAAK,WAAW,CAAC,CAAC,CAAG,SAC/BvD,CAAAA,MAAM,CAAC,CAAC,EAAEuD,IAAAA,CAAK,kBAAkB,CAAC,CAAC,CAAG,SACxC,CACF,CACA,OAAOvD,MACT,CACA,MAAMu1N,8BAAAA,CAAiC,CACrChyN,IAAAA,CAAM,QACNi3J,CAAAA,MAAAA,CAAQ,SACRg7D,aAAe,CAAA,QAAA,CACfC,OAAS,CAAA,SAAA,CACTC,OAAS,CAAA,KAAA,CACT,GAAGL,iBAAAA,CAAkB,KAAK,CAC1B,GAAGA,iBAAkB,CAAA,UAAA,CAAY,IAAM,CAAA,KAAA,CAAM,CAC7Cb,YAAAA,CAAc,SACdmB,WAAa,CAAA,QAAA,CACbC,OAAS,CAAA,KAAA,CACT,GAAGP,iBAAAA,CAAkB,SAAU,CAAA,CAC/B,GAAGA,iBAAkB,CAAA,eAAA,CAAiB,IAAM,CAAA,KAAA,CAAM,CAClDd,iBAAAA,CAAmB,QACnBxB,CAAAA,QAAAA,CAAU,MACV3G,YAAc,CAAA,SAAA,CACd,GAAGiJ,iBAAAA,CAAkB,UAAW,CAAA,CAChCjR,eAAiB,CAAA,sBAAA,CACjB4O,kBAAmB,QACnBI,CAAAA,qBAAAA,CAAuB,SACvB,CAAA,GAAGiC,iBAAkB,CAAA,mBAAA,CAAoB,CACzCjQ,YAAAA,CAAc,UACdoO,SAAW,CAAA,QAAA,CACX1O,iBAAmB,CAAA,SAAA,CACnBuH,aAAe,CAAA,SAAA,CACf,GAAGgJ,iBAAAA,CAAkB,YAAY,CACjCnC,yBAAAA,CAA2B,SAC3B2C,CAAAA,mBAAAA,CAAqB,QACrBC,CAAAA,kBAAAA,CAAoB,QACpB,CAAA,GAAGT,kBAAkB,YAAa,CAAA,CAClCU,SAAW,CAAA,QAAA,CACXC,KAAO,CAAA,QAAA,CACPpJ,WAAa,CAAA,SAAA,CACb,GAAGyI,iBAAkB,CAAA,OAAA,CAAQ,CAC7BpC,SAAAA,CAAW,QACX,CAAA,GAAGoC,iBAAkB,CAAA,WAAA,CAAY,CACjCZ,cAAgB,CAAA,QAAA,CAChB3H,oBAAsB,CAAA,SAAA,CACtB,GAAGuI,iBAAAA,CAAkB,gBAAiB,CAAA,CACtCY,mBAAoB,QACpB,CAAA,GAAGZ,iBAAkB,CAAA,iBAAA,CAAmB,KAAM,CAAA,CAC9CnQ,QAAU,CAAA,SAAA,CACVgR,MAAO,KACP,CAAA,GAAGb,iBAAkB,CAAA,OAAA,CAAQ,CAC7Bc,UAAAA,CAAY,QACZtJ,CAAAA,gBAAAA,CAAkB,UAClB,GAAGwI,iBAAAA,CAAkB,YAAa,CAAA,CAClCtQ,YAAc,CAAA,QAAA,CACdqR,QAAU,CAAA,KAAA,CACV,GAAGf,iBAAkB,CAAA,UAAA,CAAW,CAChCgB,iBAAAA,CAAmB,QACnB,CAAA,GAAGhB,iBAAkB,CAAA,QAAA,CAAU,MAAM,CACrCiB,SAAAA,CAAW,QACX,CAAA,GAAGjB,iBAAkB,CAAA,cAAA,CAAgB,KAAM,CAAA,CAC3CkB,yBAA0B,QAC1B,CAAA,GAAGlB,iBAAkB,CAAA,QAAA,CAAU,IAAM,CAAA,KAAA,CAAM,CAC3CmB,eAAAA,CAAiB,SACjB39H,eAAiB,CAAA,SAAA,CACjBy6C,SAAW,CAAA,QAAA,CACXmjF,SAAW,CAAA,QAAA,CACXC,OAAS,CAAA,QAAA,CACT,GAAGrB,iBAAkB,CAAA,SAAA,CAAU,CAC/B7Q,oBAAAA,CAAsB,SACtBC,CAAAA,aAAAA,CAAe,QACfC,CAAAA,mBAAAA,CAAqB,SACrBiS,YAAc,CAAA,QAAA,CACd/C,UAAY,CAAA,QAAA,CACZD,cAAgB,CAAA,SAAA,CAChB,GAAG0B,iBAAAA,CAAkB,aAAa,CAClCvB,eAAAA,CAAiB,QACjBxO,CAAAA,UAAAA,CAAY,QACZ0O,CAAAA,SAAAA,CAAW,QACXD,CAAAA,aAAAA,CAAe,UACf,GAAGsB,iBAAAA,CAAkB,WAAY,CAAA,CACjCuB,WAAa,CAAA,KAAA,CACbC,mBAAqB,CAAA,QAAA,CACrBxR,qBAAsB,SACtBwN,CAAAA,SAAAA,CAAW,SACXC,CAAAA,OAAAA,CAAS,SACTnO,CAAAA,iBAAAA,CAAmB,QACnBmS,CAAAA,oBAAAA,CAAsB,cACtB3R,cAAgB,CAAA,SAAA,CAChByP,WAAa,CAAA,QAAA,CACbD,eAAiB,CAAA,SAAA,CACjB,GAAGU,iBAAAA,CAAkB,cAAc,CACnC0B,wBAAAA,CAA0B,SAC1BC,CAAAA,uBAAAA,CAAyB,QACzBC,CAAAA,uBAAAA,CAAyB,QACzBC,CAAAA,0BAAAA,CAA4B,SAC5B,GAAG7B,iBAAAA,CAAkB,sBAAuB,CAAA,CAC5C,GAAGA,iBAAAA,CAAkB,OAAQ,CAAA,CAC7Bj6D,UAAW,SACX9jE,CAAAA,SAAAA,CAAW,gBACX+jE,CAAAA,UAAAA,CAAY,SACZtkH,CAAAA,SAAAA,CAAW,QACX8jH,CAAAA,cAAAA,CAAgB,SAChBrnB,IAAM,CAAA,WAAA,CACNwnB,SAAW,CAAA,gBAAA,CACX4sD,MAAQ,CAAA,SAAA,CACRx3C,WAAa,CAAA,SAAA,CACb03C,UAAW,SACXD,CAAAA,UAAAA,CAAY,SACZhO,CAAAA,QAAAA,CAAU,SACVqK,CAAAA,gBAAAA,CAAkB,SAClBgC,CAAAA,aAAAA,CAAe,SACjB,CACA,CAAA,MAAMiR,iCAAoC,CAAA,EAAE,CAC5C,IAAI,MAAMrvN,GAAAA,IAAOytN,+BAA+B,CAC9C,MAAM79M,IAAO69M,CAAAA,8BAA8B,CAACztN,GAAAA,CAAI,CAChD,GAAI4P,OAAS,SAAW,CAAA,CACtBy/M,iCAAkCp2N,CAAAA,IAAI,CAAC+G,GAAAA,EACzC,CACF,CACA,MAAMsvN,iCAAoC,CAAA,EAAE,CAC5C,IAAI,MAAMtvN,GAAAA,IAAOytN,8BAA+B,CAAA,CAC9C,MAAM79M,IAAO69M,CAAAA,8BAA8B,CAACztN,GAAAA,CAAI,CAChD,GAAI4P,IAAS,GAAA,SAAA,CAAW,CACtB0/M,iCAAkCr2N,CAAAA,IAAI,CAAC+G,GAAAA,EACzC,CACF,CACA,MAAMuvN,iCAAAA,CAAoC,CACxCC,gBAAkB,CAAA,SAAA,CAClBC,cAAgB,CAAA,SAAA,CAChBC,qBAAuB,CAAA,SAAA,CACvBC,eAAiB,CAAA,SAAA,CACjBC,uBAAwB,SACxBC,CAAAA,mBAAAA,CAAqB,SACrBC,CAAAA,uBAAAA,CAAyB,SACzBC,CAAAA,qBAAAA,CAAuB,SACvBC,CAAAA,iBAAAA,CAAmB,UACnBC,eAAiB,CAAA,SAAA,CACjBC,sBAAwB,CAAA,SAAA,CACxBC,WAAa,CAAA,SAAA,CACbC,YAAc,CAAA,SAAA,CACdC,YAAa,SACbC,CAAAA,SAAAA,CAAW,SACXC,CAAAA,cAAAA,CAAgB,SAChBC,CAAAA,QAAAA,CAAU,SACVC,CAAAA,eAAAA,CAAiB,UACjBC,cAAgB,CAAA,SAAA,CAChB7pL,UAAY,CAAA,SACd,CAEA,CAAA,MAAM8pL,MAAS,CAAA,GACf,MAAMC,SAAAA,CAAY,EAAC,CACnB,IAAIC,OAAAA,CAAU,IAAI3lN,GAAAA,CAClB,MAAM4lN,YAAe,CAAA,IAAItjN,KACzB,CAAA,MAAMujN,gBAAyB1+D,SAAAA,QAAAA,CAe7BvsJ,KAAQ,EAAA,CACN9L,OAAOoW,IAAI,CAACugN,MAAQ7rN,CAAAA,CAAAA,OAAO,CAAErJ,IAC3B,EAAA,CAAA,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAAA,CAAK,CAAC,CAAC,CAAGk1N,MAAM,CAACl1N,IAAK,CAAA,CAACqE,KAAK,GACvC,CACA,CAAA,CAAA,IAAI,CAACkxN,aAAa,CAAG,GACvB,CACA95N,IAAK6xC,CAAAA,MAAM,CAAE,CACX,KAAK,CAAC7xC,IAAAA,CAAK6xC,MACX/uC,CAAAA,CAAAA,MAAAA,CAAOoW,IAAI,CAACugN,MAAQ7rN,CAAAA,CAAAA,OAAO,CAAC,CAAC20H,EAAAA,CAC3B,IAAI,CAACA,CAAE,CAAA,CAAG1wF,MAAM,CAAC0wF,GAAE,CACrB,CACA,CAAA,IAAI,CAACykF,cAAc,CAAG,IAAI39M,IAAIwoC,MAAOm1K,CAAAA,cAAc,CACnD,CAAA,OAAO,IACT,CACA/6M,YAAAA,CAAa1H,IAAI,CAAEu2C,QAAQ,CAAE,CAC3B,IAAI,CAACksK,cAAc,CAACx9M,GAAG,CAACsxC,QAAAA,CAAUv2C,IACpC,EAAA,CACAw1N,aAAcx1N,CAAAA,IAAI,CAAEqE,KAAK,CAAE,CACzB+wN,OAAAA,CAAQpoN,GAAG,CAAChN,IACZ,CAAA,CAAA,IAAI,CAAComG,YAAY,CAACpmG,IAAMqE,CAAAA,KAAAA,EAC1B,CACAoxN,cAAAA,CAAenvH,UAAU,CAAE,CACzBA,UAAAA,CAAWj9F,OAAO,CAAElN,CAClB,EAAA,CAAA,IAAI,CAACq5N,aAAa,CAACr5N,CAAAA,CAAE6D,IAAI,CAAE7D,CAAAA,CAAEkI,KAAK,EACpC,CACF,EAAA,CACAqxN,kBAAmBC,CAAAA,UAAU,CAAE,CAC7B,MAAMC,UAAa,CAAA,IAAI,CAACD,UAAAA,CAAW,CACnCC,UAAAA,CAAWvsN,OAAO,CAAEg9F,KAClB,EAAA,CAAA,GAAI,CAAC+uH,OAAAA,CAAQpwN,GAAG,CAACqhG,OAAQ,CACvB,OAAO,IAAI,CAACC,UAAU,CAACD,KAAM,EAC/B,CACF,CACA,CAAA,CAAA,IAAI,CAACsvH,UAAW,CAAA,CAAGP,OACnBA,CAAAA,OAAAA,CAAUQ,WACVR,OAAQ9vN,CAAAA,KAAK,GACf,CACAuwN,UAAWxmM,CAAAA,CAAC,CAAE,CACZ,MAAMo/L,KAAQ,CAAA,CAAC,EAAEp/L,CAAAA,CAAE,GAAG,CAAC,CACvB,MAAM9rB,IAAM,IAAI,CAACkrN,KAAM,CAAA,CACvB,GAAIlrN,GAAK,CAAA,CACP,IAAI,CAACiyN,aAAa,CAAC,CAAC,QAAQ,EAAE/G,KAAM,CAAA,CAAC,CAAElrN,GAAAA,CAAAA,CACvC,MAAMsrN,KAAQ,CAAA,CAAC,EAAEJ,KAAAA,CAAM,SAAS,CAAC,CACjC,MAAM95K,QAAU,IAAI,CAACw6K,UAAU,CAACN,KAChC,CAAA,CAAA,GAAIl6K,OAAS,CAAA,CACX,IAAI,CAAC8gL,cAAc,CAAC9gL,OAAAA,EACtB,CACF,CACF,CACAmhL,aAAAA,CAAc91N,IAAI,CAAE+1N,SAAS,CAAE,CAC7B,IAAIphL,OAAAA,CAAU,IAAI,CAAC4gL,aAAa,CAACv1N,IAAAA,CAAK,CACtC,GAAI,CAAC20C,OAAAA,CAAS,CACZA,OAAAA,CAAUohL,WACV,CAAA,IAAI,CAACR,aAAa,CAACv1N,IAAAA,CAAK,CAAG20C,QAC7B,CACA,OAAOA,OACT,CACAw6K,UAAAA,CAAWnvN,IAAI,CAAE2mC,MAAM,CAAEy6F,KAAK,CAAE,CAC9B,OAAO+zF,SAAS,CAACn1N,IAAAA,CAAK,CAAC,IAAI,CAAE2mC,MAAQy6F,CAAAA,KAAAA,CACvC,CACAyoB,cAAAA,CAAeljH,MAAM,CAAEy6F,KAAK,CAAE,CAC5B,MAAM+tF,UAAAA,CAAa,IAACnvN,EAAAA,CAClB,OAAO,IAAI,CAACmvN,UAAU,CAACnvN,IAAM2mC,CAAAA,MAAAA,CAAQy6F,KACvC,CAAA,CAAA,CACA,IAAI,CAACo0F,aAAa,CAAC,mBAAoBrG,UAAW,CAAA,SAAA,CAAA,CAAA,CAClD,IAAI,CAACqG,aAAa,CAAC,kBAAoBrG,CAAAA,UAAAA,CAAW,YAClD,IAAI,CAACqG,aAAa,CAAC,sBAAwB,CAAA,IAAI,CAACpD,WAAW,EAC3D,GAAI,IAAI,CAACvQ,YAAY,CAAE,CACrB,GAAI,CAAC,IAAI,CAACmU,YAAY,EAAI,IAAI,CAAC/F,SAAS,CAAG,CAAA,CAAG,CAC5C,IAAI,CAACuF,aAAa,CAAC,oBAAsB,CAAA,IAAI,CAACvF,SAAS,EACzD,CACA,GAAI,CAAC,IAAI,CAACZ,WAAW,EAAI,IAAI,CAACxG,YAAY,CAAE,CAC1C,IAAI,CAAC2M,aAAa,CAAC,mBAAA,CAAqBrG,WAAW,UACrD,CAAA,EAAA,CACA,GAAI,CAAC,IAAI,CAACW,oBAAoB,EAAI,IAAI,CAACD,qBAAqB,CAAE,CAC5D,IAAI,CAAC2F,aAAa,CAAC,6BAA8B,IAAI,CAAC/F,iBAAiB,EACzE,CACA,IAAI,CAAC+F,aAAa,CAAC,gBAAkBrG,CAAAA,UAAAA,CAAW,OAChD,CAAA,CAAA,CAAA,IAAI,CAACqG,aAAa,CAAC,qBAAA,CAAuB,IAAI,CAAC5C,UAAU,CACzD,CAAA,IAAI,CAAC4C,aAAa,CAAC,0BAAA,CAA4B,IAAI,CAACjF,eAAe,EACrE,CAAA,KAAO,CACL,GAAI,CAAC,IAAI,CAAClB,WAAW,EAAI,IAAI,CAACxG,YAAY,CAAE,CAC1C,IAAI,CAAC2M,aAAa,CAAC,mBAAqBrG,CAAAA,UAAAA,CAAW,UACrD,CAAA,EAAA,CACF,CACA,GAAI,IAAI,CAAC5N,iBAAiB,CAAE,CAC1B,IAAI,CAACiU,aAAa,CAAC,+BAAgC,IAAI,CAAClD,mBAAmB,CAAA,CAC3E,IAAI,CAACkD,aAAa,CAAC,8BAA+B,CAChDv5N,IAAAA,CAAKuc,GAAG,CAAC,IAAI,CAAC+5M,kBAAkB,CAAGxiN,KAAKC,UAAU,CAAA,CAClD/T,IAAKyc,CAAAA,GAAG,CAAC,IAAI,CAAC65M,kBAAkB,CAAGxiN,IAAKC,CAAAA,UAAU,CACnD,CAAA,EACH,CACA,GAAI,IAAI,CAAC0/M,SAAS,CAAG,CAAA,CAAG,CACtB,IAAI,CAAC8F,aAAa,CAAC,oBAAA,CAAsB,IAAI,CAAC9F,SAAS,CACvD,CAAA,IAAI,CAAC8F,aAAa,CAAC,yBAAA,CAA2B,IAAI,CAACtE,cAAc,CACjE,CAAA,IAAI,CAACsE,aAAa,CAAC,6BAAA,CAA+B,IAAI,CAAC9C,kBAAkB,EAC3E,CACA,IAAI,CAAC8C,aAAa,CAAC,iBAAkB,IAAI,CAAC/C,KAAK,CAAA,CAC/C,IAAI,CAAC+C,aAAa,CAAC,oBAAqBrG,UAAW,CAAA,UAAA,CAAA,CAAA,CACnD,IAAI,CAACqG,aAAa,CAAC,4BAA8B,CAAA,IAAI,CAAC1C,iBAAiB,CAAA,CACvE,GAAI,IAAI,CAACzC,UAAU,CAAG,CAAA,CAAG,CACvB,IAAI,CAACmF,aAAa,CAAC,qBAAuB,CAAA,IAAI,CAACnF,UAAU,EAC3D,CACA,GAAI,IAAI,CAACtO,UAAU,CAAG,CAAG,CAAA,CACvB,IAAI,CAACyT,aAAa,CAAC,qBAAA,CAAuB,IAAI,CAACzT,UAAU,EAC3D,CACA,GAAI,IAAI,CAACD,oBAAoB,CAAE,CAC7B,IAAI,CAAC0T,aAAa,CAAC,oBAAA,CAAsB,IAAI,CAAC/E,SAAS,CAAA,CACvD,IAAI,CAAC+E,aAAa,CAAC,sBAAA,CAAwBrG,UAAW,CAAA,aAAA,CAAA,CAAA,CACtD,IAAI,CAACqG,aAAa,CAAC,kCAAmC,IAAI,CAAClC,mBAAmB,GAAK,CAAI,CAAA,CAAA,CAAI,CAAM,CAAA,IAAI,CAACA,mBAAmB,EAC3H,CACA,GAAI,IAAI,CAAC1R,cAAc,CAAE,CACvB,IAAI,CAAC4T,aAAa,CAAC,sBAAwB,CAAA,IAAI,CAACnE,WAAW,EAC3D,IAAI,CAACmE,aAAa,CAAC,qCAAuC,CAAA,IAAI,CAAC7B,0BAA0B,EACzF,IAAI,CAAC6B,aAAa,CAAC,kCAAoC,CAAA,IAAI,CAAC/B,uBAAuB,EACnF,IAAI,CAAC+B,aAAa,CAAC,kCAAoC,CAAA,IAAI,CAAC9B,uBAAuB,EACrF,CACA,IAAI,CAAC8B,aAAa,CAAC,kBAAA,CAAoB,IAAI,CAACrC,OAAO,CACnD,CAAA,GAAI,IAAI,CAAClS,oBAAoB,GAAK,KAAO,CAAA,CACvC,IAAI,CAACuU,aAAa,CAAC,oBAAA,CAAsB,IAAI,CAACtC,SAAS,EACzD,CACA,GAAI,IAAI,CAACrS,eAAe,CAAE,CACxB,IAAI,CAAC2U,aAAa,CAAC,mCAAA,CAAqC,IAAI,CAACpS,wBAAwB,EACvF,CACA,GAAI,IAAI,CAAChC,iBAAiB,GAAKxrF,YAAAA,CAAc,CAC3C,IAAI,CAAC4/F,aAAa,CAACrG,UAAW,CAAA,sBAAA,CAAA,EAChC,CACA,IAAI,MAAM9/L,CAAAA,IAAKo6L,SAAU,CAAA,CACvB,IAAI,CAACoM,UAAU,CAACxmM,CAAAA,EAClB,CACA,GAAI,IAAI,CAACoxL,SAAS,CAAE,CAClB,IAAI,CAAC+U,aAAa,CAAC,cAAgB,CAAA,IAAI,CAAC/U,SAAS,EACnD,CACA,GAAI,IAAI,CAACtlB,SAAS,CAAE,CAClB,IAAI,CAACq6B,aAAa,CAAC,oBAAsB,CAAA,IAAI,CAACzC,SAAS,EACzD,CACA,GAAI,IAAI,CAAC53B,SAAS,EAAI,IAAI,CAAC41B,eAAe,CAAE,CAC1C,IAAI,CAACyE,aAAa,CAAC,mCAAqC,CAAA,IAAI,CAACxC,wBAAwB,EACvF,CACA,GAAI,IAAI,CAAC1I,SAAS,CAAE,CAClB,IAAI,CAACkL,aAAa,CAAC,0BAA4BrG,CAAAA,UAAAA,CAAW,iBAC5D,CAAA,EAAA,CACA,GAAI,IAAI,CAAC7Y,QAAQ,EAAI,IAAI,CAACiZ,OAAO,CAAE,CACjC,IAAI,CAACiG,aAAa,CAAC,kBAAoB,CAAA,IAAI,CAAClf,QAAQ,EACpD,IAAI,CAACkf,aAAa,CAAC,iBAAmB,CAAA,IAAI,CAACjG,OAAO,EACpD,CAAO,KAAA,GAAI,IAAI,CAACjZ,QAAQ,CAAE,CACxB,IAAI,CAACkf,aAAa,CAAC,kBAAoB,CAAA,IAAI,CAAClf,QAAQ,EACtD,CAAA,KAAO,GAAI,IAAI,CAACiZ,OAAO,CAAE,CACvB,IAAI,CAACiG,aAAa,CAAC,iBAAmB,CAAA,IAAI,CAACjG,OAAO,EACpD,CAAA,KAAO,GAAI,IAAI,CAACD,SAAS,CAAE,CACzB,IAAI,CAACkG,aAAa,CAAC,mBAAA,CAAqB,IAAI,CAAClG,SAAS,EACxD,CACA,IAAI,CAACkG,aAAa,CAAC,wBAAyB,IAAI,CAACpC,YAAY,CAAA,CAC7D,IAAI,CAACsC,kBAAkB,CAAC,iBACxB,KAAK,CAAC7rE,cAAeljH,CAAAA,MAAAA,CAAQy6F,KAC/B,EAAA,CACA60F,iBAAkBtvL,CAAAA,MAAM,CAAEy6F,KAAK,CAAE,CAC/B,MAAM80F,mBAAsB,CAAA,IAAI,CAAC5f,QAAQ,EAAI,IAAI,CAACiZ,OAAO,EAAI,IAAI,CAACD,SAAS,CAC3E,GAAI,CAAC4G,mBAAAA,EAAuB,IAAI,CAAC3R,SAAS,CAAE,CAC1C,GAAInjF,MAAMk1E,QAAQ,EAAIl1E,KAAMq2E,CAAAA,MAAM,CAAE,CAClC,IAAI,CAAC+d,aAAa,CAAC,kBAAA,CAAoBp0F,KAAMk1E,CAAAA,QAAQ,CACrD,CAAA,IAAI,CAACkf,aAAa,CAAC,iBAAmBp0F,CAAAA,KAAAA,CAAMq2E,MAAM,EACpD,CAAO,KAAA,GAAIr2E,KAAMk1E,CAAAA,QAAQ,CAAE,CACzB,IAAI,CAACkf,aAAa,CAAC,kBAAA,CAAoBp0F,KAAMk1E,CAAAA,QAAQ,EACvD,CAAO,KAAA,GAAIl1E,KAAMq2E,CAAAA,MAAM,CAAE,CACvB,IAAI,CAAC+d,aAAa,CAAC,iBAAA,CAAmBp0F,KAAMq2E,CAAAA,MAAM,EACpD,CACF,CACA,IAAI,CAACie,kBAAkB,CAAC,uBAC1B,EAAA,CACA7nF,gBAAiB5+H,CAAAA,MAAM,CAAE,CACvB,KAAM,CAAE03B,MAAM,CAAEy6F,KAAK,CAAE1B,IAAI,CAAEoO,OAAO,CAAEP,YAAY,CAAE/N,kBAAkB,CAAE,CAAGvwH,MAAAA,CAC3E,IAAI,CAACgnN,iBAAiB,CAACtvL,MAAAA,CAAQy6F,KAC/B,CAAA,CAAA,MAAM3B,cAAiBrC,CAAAA,UAAAA,CAAW3+H,GAAG,CAACkoC,QAAQ42F,UAAU,CAACmC,IACzD,CAAA,CAAA,MAAMwuF,cAAiBxuF,CAAAA,IAAAA,GAASrG,WAAeqG,EAAAA,IAAAA,GAASvG,gBAAkBsG,cAAevC,CAAAA,QAAQ,CACjG,IAAI/uH,OAAU+/M,CAAAA,cAAAA,CAAiBb,QAASxD,CAAAA,iBAAiB,CAAGwD,QAAStD,CAAAA,cAAc,CACnF57M,OAAQs1D,CAAAA,OAAO,CAAGi7D,WAAAA,CAAYY,cAAc,CAAC,IAAI,CAAErwH,MAAAA,CAAAA,CACnD,GAAIi/M,cAAAA,CAAgB,CAClB,IAAI,CAACiI,gBAAgB,CAAC1I,YAAY,CAACt/M,OAASizH,CAAAA,KAAAA,CAAO,IAAI,CAAE0M,QAASpO,IAAM6N,CAAAA,YAAAA,EAC1E,CAAO,KAAA,CACL,IAAI,CAAC4oF,gBAAgB,CAACrI,SAAS,CAAC3/M,OAAAA,CAASizH,KAAO5B,CAAAA,kBAAAA,CAAoB,IAAI,CAAEsO,OAASpO,CAAAA,IAAAA,CAAM6N,cAC3F,CACA,GAAI,CAAC,IAAI,CAAC82E,MAAM,CAAEl2M,OAAAA,CAAQs1D,OAAO,CAACx+D,GAAG,CAAC,KAAA,CAAO,MAC7CkJ,CAAAA,CAAAA,OAAAA,CAAQs1D,OAAO,CAACx+D,GAAG,CAAC,SAAA,CAAW6xH,YAAY,CAAC3oH,OAAQ00M,CAAAA,UAAU,CAACvnB,OAAO,CAAC,CACvE,CAAA,GAAI,IAAI,CAAC86B,cAAc,CAAE,CACvBjoN,OAAAA,CAAU,IAAI,CAACioN,cAAc,CAACjoN,OAAAA,EAChC,CACA,MAAMymD,iBAAoB,CAAA,IAAIunE,uBAAuBltH,MAAOqtH,CAAAA,iBAAiB,CAAErtH,MAAAA,CAAOstH,mBAAmB,CAAEttH,MAAOyqC,CAAAA,YAAY,EAC9H,MAAMgjF,OAAAA,CAAUD,iBAAkB91F,CAAAA,MAAAA,CAAAA,CAClC+1F,OAAQoD,CAAAA,QAAQ,CAAC,UAAA,CAAYutF,UAC7B,MAAM/yK,MAAAA,CAASoiF,OAAQsD,CAAAA,UAAU,CAAC,UAAA,CAAY7xH,OAASymD,CAAAA,iBAAAA,CAAmB,IAAI,CAAC2jG,MAAM,CACrF,CAAA,IAAI,CAACP,YAAY,CAAG,MACpB,OAAO19G,MACT,CACAzU,OAAAA,EAAU,CACR,IAAI,MAAMwwL,KAAAA,IAAS,IAAI,CAACC,gBAAgB,CAAC,CACvC,IAAI,CAACA,gBAAgB,CAACD,MAAM,CAACE,OAAO,GACtC,CACA,IAAI,CAACD,gBAAgB,CAAG,KACxB,KAAK,CAACzwL,OACR,GAAA,CAhNAphC,WAAa,EAAA,CACX,KAAK,EAAA,CAAI,IAAI,CAACg+M,cAAc,CAAG,IAAI39M,GACnC,CAAA,IAAI,CAACwxN,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACE,aAAa,CAAG,IAAI/mN,GACzB,CAAA,IAAI,CAACgnN,qBAAqB,CAAG,IAAIhnN,GACjC,CAAA,IAAI,CAAC0mN,gBAAgB,CAAG,IAAI3I,8BAAAA,CAC5B,IAAI,CAACnjN,KAAK,GACZ,CA0MF,CAxNMirN,gBAEGoB,CAAAA,kBAAkB,CAAG9C,iCAG1B,CALE0B,gBAKGqB,CAAAA,kBAAkB,CAAG9C,iCAAAA,CAoN9B,MAAM+C,aAAAA,CAAgB,CAAC52N,IAAAA,CAAM62N,kBAC3B1B,SAAS,CAACn1N,IAAK,CAAA,CAAG62N,eACpB,CAAA,CACA,MAAMC,kBAAAA,CAAqB,CAAC92N,IAAM+2N,CAAAA,eAAAA,CAAiBC,UAAYC,CAAAA,UAAAA,GAAAA,CAC7D14N,MAAOC,CAAAA,cAAc,CAAC82N,gBAAAA,CAAiBvmG,SAAS,CAAE/uH,IAAAA,CAAM,CACtDvB,GAAAA,CAAKw4N,UAAc,EAAA,UAAA,CACjB,OAAO,IAAI,CAAC,CAAC,CAAC,EAAEj3N,IAAAA,CAAK,CAAC,CAAC,CACzB,CACAiF,IAAK+xN,UACP,CAAA,CACA9B,CAAAA,MAAM,CAACl1N,IAAAA,CAAK,CAAG,CACbqE,MAAO0yN,eACT,EACF,CACA,CAAA,MAAMG,eAAkB,CAAC17N,IACvB,EAAA,CAAA,MAAM27N,aAAe,CAAC,CAAC,EAAE37N,IAAAA,CAAKwE,IAAI,CAAC,CAAC,CACpC,MAAMo3N,eAAkB57N,CAAAA,IAAAA,CAAK47N,eAAe,GAAK,IAAI,IAAG,CAAA,CACxD,MAAMJ,UAAa,CAAA,SAAS3yN,KAAK,CAAA,CAC/B,MAAMgzN,QAAAA,CAAW,IAAI,CAACF,aAAa,CACnC,GAAIE,QAAahzN,GAAAA,KAAAA,CAAO,CACtB,IAAI,CAAC2zJ,YAAY,CAAG,IAAI,CAACA,YAAY,EAAIo/D,eAAgBC,CAAAA,QAAAA,CAAUhzN,KACnE,CAAA,CAAA,IAAI,CAAC8yN,YAAAA,CAAa,CAAG9yN,MACvB,CACF,CACAyyN,CAAAA,kBAAAA,CAAmBt7N,IAAKwE,CAAAA,IAAI,CAAE,IAAIxE,IAAAA,CAAK87N,YAAY,CAAEN,UAAYx7N,CAAAA,IAAAA,CAAKy7N,UAAU,EAClF,EACA,MAAMM,aAAAA,CAAgB,IAAC/7N,EAAAA,CACrB,MAAM27N,YAAAA,CAAe,CAAC,CAAC,EAAE37N,IAAKwE,CAAAA,IAAI,CAAC,CAAC,CACpC,MAAMo3N,eAAkB57N,CAAAA,IAAAA,CAAK47N,eAAe,GAAK,IAAI,IAAG,CACxD,CAAA,MAAMJ,UAAa,CAAA,SAAS3yN,KAAK,CAC/B,CAAA,MAAMgzN,QAAW,CAAA,IAAI,CAACF,YAAAA,CAAa,CACnC,GAAI,CAACE,QAASllN,CAAAA,MAAM,CAAC9N,KAAAA,CAAAA,CAAQ,CAC3B,IAAI,CAAC2zJ,YAAY,CAAG,IAAI,CAACA,YAAY,EAAIo/D,eAAgBC,CAAAA,QAAAA,CAAUhzN,KACnE,CAAA,CAAA,IAAI,CAAC8yN,YAAAA,CAAa,CAAGE,QAAAA,CAAS57N,IAAI,CAAC4I,KACrC,EAAA,CACF,EACAyyN,kBAAmBt7N,CAAAA,IAAAA,CAAKwE,IAAI,CAAE,IAAIxE,IAAAA,CAAK87N,YAAY,CAACtlN,KAAK,EAAIglN,CAAAA,UAAAA,CAAYx7N,IAAKy7N,CAAAA,UAAU,EAC1F,CAAA,CACA,MAAMO,UAAAA,CAAa,IACjB,EAAA,CAAA,OAAOh8N,IAAK87N,CAAAA,YAAY,EAAI97N,IAAAA,CAAK87N,YAAY,CAACtlN,KAAK,CAAGulN,aAAAA,CAAc/7N,IAAQ07N,CAAAA,CAAAA,eAAAA,CAAgB17N,IAC9F,CAAA,CAAA,CACA,SAASi8N,YAAAA,CAAaz3N,IAAI,CAAEsP,OAAAA,CAAU,KAAK,CAAEyiN,WAAc,CAAA,IAAI,CAAElM,EAAAA,CAAK,CAAC,CACrE4D,CAAAA,SAAS,CAACzpN,IAAAA,CAAK,CAAGsP,OAAAA,CAAQ3S,MAAM,EAAI,CAAC,CACrC66N,CAAAA,UAAAA,CAAW,CACTx3N,IAAAA,CAAM,CAAC,EAAEA,IAAK,CAAA,GAAG,CAAC,CAClBs3N,YAAAA,CAAc,IACdF,CAAAA,eAAAA,CAAiB,CAACC,QAAAA,CAAU57E,QAC1B,GAAA,CAAA,OAAO,CAAC,CAAC47E,QAAAA,GAAa,CAAC,CAAC57E,QAAY47E,EAAAA,QAAAA,GAAaA,QAAAA,CAASljN,IAAI,GAAKsnI,QAAAA,CAAStnI,IAAI,EAAIkjN,QAAS70N,CAAAA,MAAM,GAAKi5I,QAAAA,CAASj5I,MAAM,CACzH,CACF,CAAA,CAAA,CACAg1N,UAAW,CAAA,CACTx3N,IAAM,CAAA,CAAC,EAAEA,IAAK,CAAA,SAAS,CAAC,CACxBs3N,YAAc,CAAA,IAAI/4M,IAAK,CAAA,CAAA,CAAG,EAC5B,CACAi5M,CAAAA,CAAAA,UAAAA,CAAW,CACTx3N,IAAAA,CAAM,CAAC,EAAEA,IAAK,CAAA,SAAS,CAAC,CACxBs3N,YAAAA,CAAc,IAAI/4M,IAAAA,CAAK,CAAG,CAAA,CAAA,CAC5B,CACAi5M,CAAAA,CAAAA,UAAAA,CAAW,CACTx3N,IAAM,CAAA,CAAC,EAAEA,IAAAA,CAAK,WAAW,CAAC,CAC1Bs3N,YAAAA,CAAc,CAChB,CACAE,CAAAA,CAAAA,UAAAA,CAAW,CACTx3N,IAAAA,CAAM,CAAC,EAAEA,IAAK,CAAA,KAAK,CAAC,CACpBs3N,YAAAA,CAAczR,EAChB,CAAA,CAAA,CACA,GAAIv2M,OAAAA,CAAS,CACXkoN,UAAAA,CAAW,CACTx3N,IAAM,CAAA,CAAC,EAAEA,IAAAA,CAAK,UAAU,CAAC,CACzBs3N,YAAAA,CAAchoN,OAChB,CACA,CAAA,CAAA,GAAIyiN,WAAa,CAAA,CACfyF,UAAW,CAAA,CACTx3N,IAAM,CAAA,CAAC,EAAEA,IAAK,CAAA,WAAW,CAAC,CAC1Bs3N,YAAc,CAAA,KAChB,CACAE,CAAAA,CAAAA,UAAAA,CAAW,CACTx3N,IAAM,CAAA,CAAC,EAAEA,IAAAA,CAAK,kBAAkB,CAAC,CACjCs3N,YAAAA,CAAchoN,OAChB,CACF,EAAA,CACF,CACA,MAAMooN,SAAY,CAAA,CAAC,EAAE13N,IAAAA,CAAK,SAAS,CAAC,CACpC,MAAM23N,SAAAA,CAAY,CAAC,EAAE33N,IAAK,CAAA,SAAS,CAAC,CACpC,MAAM43N,WAAc,CAAA,CAAC,EAAE53N,IAAAA,CAAK,WAAW,CAAC,CACxC,MAAM4lN,YAAAA,CAAe,CAAC,EAAE5lN,IAAK,CAAA,YAAY,CAAC,CAC1C42N,cAAchR,YAAc,CAAA,CAACrmF,QAAU54F,CAAAA,MAAAA,CAAQy6F,KAC7C,GAAA,CAAA,MAAMy2F,MAASt4F,CAAAA,QAAQ,CAACm4F,SAAU,CAAA,CAClC,MAAMttN,MAAAA,CAASm1H,QAAQ,CAACo4F,SAAU,CAAA,CAClC,MAAMt0E,QAAW9jB,CAAAA,QAAQ,CAACq4F,WAAAA,CAAY,CACtC,GAAIC,MAAO9mN,CAAAA,CAAC,GAAK,CAAK8mN,EAAAA,MAAAA,CAAOp/M,CAAC,GAAK,CAAKrO,EAAAA,MAAAA,CAAO2G,CAAC,GAAK,GAAK3G,MAAOqO,CAAAA,CAAC,GAAK,CAAA,EAAK4qI,QAAa,GAAA,CAAA,CAAG,CAC1F,OAAO,IACT,CACA,MAAM1uG,OAAU4qF,CAAAA,QAAAA,CAASu2F,aAAa,CAAClQ,YAAc,CAAA,IAAA,CACnD,OAAO,CACL,CACE5lN,IAAM,CAAA,CAAC,QAAQ,EAAE4lN,YAAa,CAAA,CAAC,CAAC,CAChCvhN,KAAAA,CAAO,IAAIkS,YAAAA,CAAa,CAC1B,CAAA,CAAA,CACA,CACEvW,IAAAA,CAAM,CAAC,QAAQ,EAAE4lN,YAAa,CAAA,CAAC,CAAC,CAChCvhN,KAAO,CAAA,IAAIkS,aAAa,CAC1B,CAAA,CAAA,CACD,CACH,CAAA,CACA,MAAMuhN,EAAAA,CAAK77N,IAAKuc,CAAAA,GAAG,CAAC6qI,QAAWtzI,CAAAA,IAAAA,CAAKC,UAAU,CAAA,CAC9C,MAAM+nN,EAAAA,CAAK97N,IAAKyc,CAAAA,GAAG,CAAC2qI,QAAWtzI,CAAAA,IAAAA,CAAKC,UAAU,CAAA,CAC9C,MAAMgoN,QAAAA,CAAWrjL,OAAO,CAAC,EAAE,CAACtwC,KAAK,CACjC2zN,QAAQ,CAAC,CAAE,CAAA,CAAGF,GAAKD,MAAO9mN,CAAAA,CAAC,CAC3BinN,QAAQ,CAAC,CAAE,CAAA,CAAG,CAACD,EAAKF,CAAAA,MAAAA,CAAOp/M,CAC3Bu/M,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAG5tN,MAAO2G,CAAAA,CAAC,CACtB,MAAMknN,QAAWtjL,CAAAA,OAAO,CAAC,CAAA,CAAE,CAACtwC,KAC5B4zN,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAGF,EAAAA,CAAKF,OAAO9mN,CAC1BknN,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAGH,EAAAA,CAAKD,OAAOp/M,CAC1Bw/M,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAG,CAAA,CAAMJ,OAAOp/M,CAAC,CAAGrO,MAAOqO,CAAAA,CAAC,CACvC,OAAOk8B,OACT,CAAA,EACF,CACA,SAASujL,YAAAA,CAAal4N,IAAI,CAAEs3N,YAAY,CAAA,CACtCE,UAAW,CAAA,CACTx3N,KAAMA,IACNs3N,CAAAA,YAAAA,CAAcA,YACdL,CAAAA,UAAAA,CAAY,UACV,CAAA,IAAI,CAACj/D,YAAY,CAAG,IACpB,CAAA,OAAO,IAAI,CAAC,CAAC,CAAC,EAAEh4J,IAAAA,CAAK,CAAC,CACxB,CACF,CAAA,CAAA,CACA42N,aAAc52N,CAAAA,IAAAA,CAAM,CAACu/H,QAAAA,CAAU54F,OAAQy6F,KACrC,GAAA,CAAA,MAAMzsF,OAAU4qF,CAAAA,QAAAA,CAASu2F,aAAa,CAAC91N,IAAM,CAAA,IAAI,IAAIuW,YAAa,CAAA,CAAA,CAAA,CAAA,CAClE,MAAMoqC,KAAAA,CAAQ4+E,QAAQ,CAACv/H,IAAK,CAAA,CAC5Bq1N,aAAahjN,MAAM,CAACsuC,KACpBhM,CAAAA,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAG0gL,aAAar5N,CAC1B24C,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAG0gL,YAAAA,CAAa9kN,CAAC,CAC3BokC,OAAO,CAAC,CAAE,CAAA,CAAG0gL,YAAa9oN,CAAAA,CAAC,CAC3B,OAAOooC,OACT,CACF,EAAA,CACA,SAASwjL,YAAAA,CAAan4N,IAAI,CAAEs3N,YAAY,CAAET,cAAc,CACtDW,CAAAA,UAAAA,CAAW,CACTx3N,IAAMA,CAAAA,IAAAA,CACNs3N,YAAcA,CAAAA,YAAAA,CACdF,gBAAiB,CAACC,QAAAA,CAAU57E,QAC1B,GAAA,CAAA,OAAO,CAAC47E,QAAa,GAAA,CAAA,EAAKA,WAAa,CAAA,KAAQ57E,QAAAA,GAAa,CAAKA,EAAAA,QAAAA,GAAa,CAAA,CAChF,CACF,CACAm7E,CAAAA,CAAAA,aAAAA,CAAc52N,IAAM62N,CAAAA,cAAAA,EACtB,CACA,SAASuB,aAAcp4N,CAAAA,IAAI,CAAE62N,cAAc,CAAA,CACzCW,UAAW,CAAA,CACTx3N,IAAMA,CAAAA,IAAAA,CACNs3N,YAAc,CAAA,IAAA,CACdF,gBAAiB,CAACC,QAAAA,CAAU57E,QAC1B,GAAA,CAAA,OAAO,CAAC,CAAC47E,QAAa,GAAA,CAAC,CAAC57E,QAC1B,CACF,CACAm7E,CAAAA,CAAAA,aAAAA,CAAc52N,IAAM62N,CAAAA,cAAAA,EACtB,CACA,SAASwB,YAAYr4N,IAAI,CAAEs3N,YAAY,CAAA,CACrCE,UAAW,CAAA,CACTx3N,IAAMA,CAAAA,IAAAA,CACNs3N,aAAcA,YAChB,CAAA,EACF,CACA,SAASgB,oBACPJ,EAAAA,CAAAA,YAAAA,CAAa,SAAW,CAAA,IAAInmN,MAAM,CAAG,CAAA,CAAA,CAAG,CACxCmmN,CAAAA,CAAAA,CAAAA,YAAAA,CAAa,SAAW,CAAA,IAAInmN,KAAM,CAAA,CAAA,CAAG,EAAG,CACxCmmN,CAAAA,CAAAA,CAAAA,YAAAA,CAAa,UAAY,CAAA,IAAInmN,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CACzCmmN,aAAa,UAAY,CAAA,IAAInmN,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CACzCmmN,YAAa,CAAA,OAAA,CAAS,IAAInmN,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CACtCmmN,YAAa,CAAA,aAAA,CAAe,IAAInmN,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAAA,CAAA,CAC5ComN,YAAa,CAAA,mBAAA,CAAqB,CAClCA,CAAAA,CAAAA,YAAAA,CAAa,mBAAqB,CAAA,CAAA,CAAA,CAClCA,aAAa,YAAc,CAAA,CAAA,CAAA,CAC3BA,YAAa,CAAA,OAAA,CAAS,GACtBA,CAAAA,CAAAA,YAAAA,CAAa,aAAe,CAAA,CAAA,CAAA,CAC5BA,aAAa,iBAAmB,CAAA,CAAA,CAAG,CAAC54F,QAAAA,CAAU54F,MAAQy6F,CAAAA,KAAAA,GAAAA,CACpD,OAAO7B,QAAAA,CAAS0zF,eAAe,CAAG,IACpC,CACAkF,CAAAA,CAAAA,YAAAA,CAAa,SAAW,CAAA,CAAA,CAAA,CACxBA,YAAa,CAAA,WAAA,CAAa,GAC1BA,YAAa,CAAA,WAAA,CAAa,CAC1BA,CAAAA,CAAAA,YAAAA,CAAa,WAAa,CAAA,CAAA,CAAA,CAC1BA,YAAa,CAAA,0BAAA,CAA4B,GACzCA,YAAa,CAAA,cAAA,CAAgB,CAC7BA,CAAAA,CAAAA,YAAAA,CAAa,0BAA4B,CAAA,CAAA,CAAA,CACzCA,YAAa,CAAA,YAAA,CAAc,GAC3BA,YAAa,CAAA,iBAAA,CAAmB,CAAM,CAAA,GAAA,CAAA,CACtCA,YAAa,CAAA,YAAA,CAAc,CAC3BA,CAAAA,CAAAA,YAAAA,CAAa,YAAa,CAC1BA,CAAAA,CAAAA,YAAAA,CAAa,qBAAuB,CAAA,CAAA,CAAA,CACpCA,YAAa,CAAA,WAAA,CAAa,CAC1BA,CAAAA,CAAAA,YAAAA,CAAa,sBAAuB,CACpCA,CAAAA,CAAAA,YAAAA,CAAa,oBAAsB,CAAA,CAAA,CAAA,CACnCA,YAAa,CAAA,WAAA,CAAa,CAC1BA,CAAAA,CAAAA,YAAAA,CAAa,iBAAkB,CAC/BA,CAAAA,CAAAA,YAAAA,CAAa,oBAAsB,CAAA,CAAA,CAAA,CACnCA,YAAa,CAAA,SAAA,CAAW,CAAG,CAAA,IAAA,CAAA,CAC3BA,aAAa,aAAe,CAAA,CAAA,CAAA,CAC5BA,YAAa,CAAA,4BAAA,CAA8B,CAAM,CAAA,GAAA,CAAA,CACjDA,YAAa,CAAA,yBAAA,CAA2B,GACxCA,YAAa,CAAA,yBAAA,CAA2B,CACxCC,CAAAA,CAAAA,aAAAA,CAAc,WACdA,CAAAA,CAAAA,aAAAA,CAAc,sBAAwB,CAAA,CAAC74F,SAAU54F,MAAQy6F,CAAAA,KAAAA,GAAAA,CACvD,MAAMzsF,OAAAA,CAAU4qF,QAASu2F,CAAAA,aAAa,CAAC,sBAAA,CAAwB,KAC7D,OAAO,CACL,CACE91N,IAAAA,CAAM,WACNqE,CAAAA,KAAAA,CAAO,IAAIkS,YAAAA,CAAa,EAC1B,CACA,CAAA,CACEvW,IAAM,CAAA,WAAA,CACNqE,KAAO,CAAA,IAAIkS,YAAa,CAAA,CAAA,CAC1B,EACD,CACH,CAAA,CACA,MAAMgiN,OAAAA,CAAUh5F,QAASg0F,CAAAA,oBAAoB,CAACzpM,MAAM,GACpD,MAAM0uM,UAAAA,CAAa7jL,OAAO,CAAC,CAAE,CAAA,CAACtwC,KAC9Bm0N,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAGD,OAAQxnN,CAAAA,CAAC,CACzBynN,UAAU,CAAC,CAAA,CAAE,CAAGD,OAAAA,CAAQ9/M,CACxB+/M,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAGD,OAAQ3/M,CAAAA,CAAC,CACzB,MAAM6/M,OAAUl5F,CAAAA,QAAAA,CAASg0F,oBAAoB,CAAC3pM,MAAM,EACpD,CAAA,MAAM8uM,UAAa/jL,CAAAA,OAAO,CAAC,CAAA,CAAE,CAACtwC,KAC9Bq0N,CAAAA,UAAU,CAAC,CAAA,CAAE,CAAGD,OAAAA,CAAQ1nN,CAAC,CACzB2nN,UAAU,CAAC,CAAE,CAAA,CAAGD,OAAQhgN,CAAAA,CAAC,CACzBigN,UAAU,CAAC,CAAA,CAAE,CAAGD,OAAAA,CAAQ7/M,CAAC,CACzB,OAAO+7B,OACT,CAAA,CAAA,CACA0jL,WAAY,CAAA,cAAA,CAAgB,KAC5BA,CAAAA,CAAAA,WAAAA,CAAY,uBAAyB,CAAA,KAAA,CAAA,CACrCA,YAAY,cAAgB,CAAA,KAAA,CAAA,CAC5BA,WAAY,CAAA,2BAAA,CAA6B,KACzCA,CAAAA,CAAAA,WAAAA,CAAY,UAAY,CAAA,KAAA,CAAA,CACxBA,YAAY,mBAAqB,CAAA,KAAA,CAAA,CACjCA,WAAY,CAAA,eAAA,CAAiB,KAC7BA,CAAAA,CAAAA,WAAAA,CAAY,sBAAwB,CAAA,IAAA,CAAA,CACpCA,YAAY,iBAAmBrhG,CAAAA,UAAAA,CAAAA,CAC/BqhG,WAAY,CAAA,cAAA,CAAgB7mG,eAC5B6mG,CAAAA,CAAAA,WAAAA,CAAY,sBAAwB,CAAA,KAAA,CAAA,CACpCA,YAAY,mBAAqB1iG,CAAAA,aAAAA,CAAAA,CACjC0iG,WAAY,CAAA,QAAA,CAAU,IACtBA,CAAAA,CAAAA,WAAAA,CAAY,aAAe,CAAA,IAAA,CAAA,CAC3BA,YAAY,YAAc,CAAA,IAAA,CAAA,CAC1BA,WAAY,CAAA,WAAA,CAAa,IACzBA,CAAAA,CAAAA,WAAAA,CAAY,UAAY,CAAA,KAAA,CAAA,CACxBA,YAAY,WAAa,CAAA,KAAA,CAAA,CACzBA,WAAY,CAAA,kBAAA,CAAoB,KAChCA,CAAAA,CAAAA,WAAAA,CAAY,gBAAkB7zN,CAAAA,SAAAA,CAAAA,CAC9B6zN,YAAY,mBAAqB,CAAA,KAAA,CAAA,CACjCA,WAAY,CAAA,gBAAA,CAAkB,KAC9BA,CAAAA,CAAAA,WAAAA,CAAY,aAAe,CAAA,KAAA,CAAA,CAC3BA,YAAY,kBAAoB,CAAA,KAAA,CAAA,CAChCA,WAAY,CAAA,sBAAA,CAAwB,KACpCA,CAAAA,CAAAA,WAAAA,CAAY,eAAiB98F,CAAAA,WAAAA,CAAAA,CAC7B88F,YAAY,qBAAuB98F,CAAAA,WAAAA,CAAAA,CACnC88F,WAAY,CAAA,eAAA,CAAiB,KAC7BZ,CAAAA,CAAAA,YAAAA,CAAa,SACbA,CAAAA,CAAAA,YAAAA,CAAa,YACbA,YAAa,CAAA,UAAA,CAAA,CACbA,YAAa,CAAA,WAAA,CAAa,GAC1BA,CAAAA,CAAAA,YAAAA,CAAa,mBAAqB,CAAA,GAAA,CAAA,CAClCA,aAAa,QAAU,CAAA,EAAA,CAAA,CACvBA,YAAa,CAAA,WAAA,CAAa,GAC1BA,CAAAA,CAAAA,YAAAA,CAAa,OAAS,CAAA,GAAA,CAAA,CACtBA,aAAa,SAAW,CAAA,GAAA,CAAA,CACxBA,YAAa,CAAA,YAAA,CAAc,GAC3BA,CAAAA,CAAAA,YAAAA,CAAa,QAAU,CAAA,GAAA,CAAK,OAC5BA,YAAa,CAAA,IAAA,CAAM,GACnBA,CAAAA,CAAAA,YAAAA,CAAa,OAAS,CAAA,KAAA,CAAO,IAAM,CAAA,CAAA,CAAA,CACnCA,aAAa,MAAQ,CAAA,EAAA,CAAA,CACrBA,YAAa,CAAA,eAAA,CAAiB,KAAO,CAAA,KAAA,CAAA,CACrCA,YAAa,CAAA,cAAA,CAAgB,IAC7BA,YAAa,CAAA,UAAA,CAAY,GAAK,CAAA,KAAA,CAAA,CAC9BA,YAAa,CAAA,WAAA,CAAa,GAC1BA,CAAAA,CAAAA,YAAAA,CAAa,iBAAkB,GAC/BA,CAAAA,CAAAA,YAAAA,CAAa,iBAAmB,CAAA,EAAA,CAAA,CAChCA,YAAa,CAAA,OAAA,CAAS,KACtBA,CAAAA,CAAAA,YAAAA,CAAa,aAAc,GAC3BA,CAAAA,CAAAA,YAAAA,CAAa,aAAe,CAAA,GAAA,CAAA,CAC5BA,YAAa,CAAA,sBAAA,CAAwB,GACrCA,CAAAA,CAAAA,YAAAA,CAAa,aAAc,EAC3BY,CAAAA,CAAAA,WAAAA,CAAY,mBAAqBviG,CAAAA,cAAAA,CAAAA,CACjCuiG,WAAY,CAAA,cAAA,CAAgBviG,cAC5BsiG,CAAAA,CAAAA,aAAAA,CAAc,WACdA,aAAc,CAAA,WAAA,CAAA,CACdA,aAAc,CAAA,UAAA,CAAA,CACd,MAAMnB,UAAAA,CAAa,UACjB,CAAA,OAAO,IAAI,CAACzgB,oBAAoB,CAClC,CACA,MAAMwgB,UAAAA,CAAa,SAAS3yN,KAAK,EAC/B,MAAMkzM,QAAAA,CAAW,IAAI,CAACf,oBAAoB,CAC1CnyM,KAAQA,CAAAA,KAAAA,EAAS,EAAE,CACnB,IAAI4I,OAAU,CAAA,KAAA,CACd,IAAIuqM,QAAAA,CAAW,IACf,CAAA,IAAI,IAAI96M,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAAA,CAAE,CACxB,MAAMP,EAAIkI,KAAK,CAAC3H,CAAE,CAAA,EAAI,IACtB,CAAA,GAAI66M,QAAQ,CAAC76M,EAAE,GAAKP,CAAAA,CAAG,CACrBo7M,QAAQ,CAAC76M,CAAAA,CAAE,CAAGP,CAAAA,CACd8Q,QAAU,KACZ,CACAuqM,QAAWA,CAAAA,QAAAA,EAAY,CAAC,CAACD,QAAQ,CAAC76M,GAAE,CAEtC,GAAIuQ,OAAAA,CAAS,CACX,GAAIuqM,QAAAA,CAAU,CACZ,IAAI,CAAClB,QAAQ,CAAGjB,WAAYM,CAAAA,wBAAwB,CAAC4B,QAAAA,CAAU,CAC7Dj8M,MAAAA,CAAQ,IAAI,CAACg7M,QAAQ,CACvB,EACF,CAAO,KAAA,CACL,GAAI,IAAI,CAACA,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACzwK,OAAO,EACrB,CAAA,IAAI,CAACywK,QAAQ,CAAG,KAClB,CACF,CACA,IAAI,CAACt+C,YAAY,CAAG,KACtB,CACF,CAAA,CACA,MAAMyK,KAAAA,CAAQ,CACZ,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACD,CACDq0D,kBAAAA,CAAmB,sBAAuB,IAAIr0D,KAAAA,CAAMllK,KAAK,EAAA,CAAIy5N,UAAYC,CAAAA,UAAAA,EAC3E,CACAqB,oBAAAA,EAAAA,CAEA,MAAMK,mBAAsB,CAAA,CAAA,CAAM,EAClC,CAAA,MAAMC,wBAA2B,CAAA,CAAA,CAAMD,mBAAsB,CAAA,CAC7D,OAAME,gBAAyBpuB,SAAAA,QAAAA,CAC7BhmM,WAAYq0N,CAAAA,UAAU,CAAEC,UAAU,CAAEz2M,MAAM,CAAE6oL,cAAc,CAAE6tB,WAAW,CAAEC,WAAW,CAAC,CACnF,KAAK,GACL,MAAMluE,GAAAA,CAAM,IAAIpyI,IAAAA,CAChB,MAAMugN,WAAAA,CAAc,IAAIvgN,IAAAA,CACxB,MAAMwgN,IAAO,CAAA,IAAIxgN,IACjB,CAAA,MAAMyI,GAAM,CAAA,IAAIzI,IAChB,CAAA,MAAMwI,OAAS,IAAIxI,IAAAA,CACnB,MAAM8rL,OAAAA,CAAU,IAAI9rL,IAAAA,CACpB,MAAMghC,SAAAA,CAAY,EAAE,CACpB,MAAM0sF,OAAU,CAAA,EAAE,CAClB,MAAMG,GAAM,CAAA,EAAE,CACd,MAAMC,IAAAA,CAAO,EAAE,CACf,MAAMx/B,OAAAA,CAAU,EAAE,CAClB,IAAI78F,MACJ,CAAA,GAAIkY,MAAS,CAAA,CAAA,CAAG,CACd,IAAI,IAAI5lB,CAAAA,CAAI,EAAGA,CAAKyuM,EAAAA,cAAAA,CAAgBzuM,CAAI,EAAA,CAAA,CACtC,IAAI,IAAIumF,CAAI,CAAA,CAAA,CAAGA,GAAK+1I,WAAa/1I,CAAAA,CAAAA,EAAAA,CAAI,CACnC,MAAMqpH,KAAQrpH,CAAAA,CAAAA,CAAI+1I,WAAc,CAAA,CAAA,CAAI/8N,KAAKgU,EAAE,CAAGhU,IAAKgU,CAAAA,EAAE,CACrD,MAAMs8L,QAAWtwM,CAAAA,IAAAA,CAAKyc,GAAG,CAAC4zL,KAAAA,CAAAA,CAC1B,MAAME,QAAAA,CAAWvwM,IAAKuc,CAAAA,GAAG,CAAC8zL,KAAAA,CAAAA,CAC1BnrL,OAAOlc,GAAG,CAACsnM,QAAWusB,CAAAA,UAAAA,CAAY,CAACx2M,MAAAA,CAAS,CAAGkqL,CAAAA,QAAAA,CAAWssB,YAC1D13M,GAAInc,CAAAA,GAAG,CAACsnM,QAAAA,CAAWwsB,UAAYz2M,CAAAA,MAAAA,CAAS,CAAGkqL,CAAAA,QAAAA,CAAWusB,YACtDhuE,GAAIp6I,CAAAA,IAAI,CAACwQ,MAAAA,CAAQC,GAAK1kB,CAAAA,CAAAA,CAAIyuM,cAC1B+tB,CAAAA,CAAAA,WAAAA,CAAY3+M,IAAI,CAAC6G,GAAAA,CAAKD,MAAQrkB,CAAAA,CAAAA,SAAS,EACvC2nM,CAAAA,OAAAA,CAAQx/L,GAAG,CAACunM,SAAU,CAAG,CAAA,CAACD,QAC1B4sB,CAAAA,CAAAA,IAAAA,CAAKngN,KAAK,CAACyrL,OAASy0B,CAAAA,WAAAA,CAAAA,CAAap8N,SAAS,EAC1C68C,CAAAA,SAAAA,CAAUn8C,IAAI,CAACutJ,GAAIh6I,CAAAA,CAAC,CAAEg6I,GAAAA,CAAItyI,CAAC,CAAEsyI,GAAAA,CAAInyI,CAAC,CAAA,CAClCytH,OAAQ7oI,CAAAA,IAAI,CAAC27N,IAAAA,CAAKpoN,CAAC,CAAEooN,IAAAA,CAAK1gN,CAAC,CAAE0gN,IAAKvgN,CAAAA,CAAC,CACnC,CAAA,IAAI+X,EAAIsyD,CAAI+1I,CAAAA,WAAAA,CACZ,IAAI78N,CAAAA,CAAIO,CAAIyuM,CAAAA,cAAAA,CACZ3kE,GAAIhpI,CAAAA,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAIx0B,CAChB,CAAA,CAAA,MAAMi9N,EAAKj9N,CAAAA,CAAAA,CACXA,CAAIw0B,CAAAA,CAAAA,CACJA,EAAIyoM,EACJzoM,CAAAA,CAAAA,CAAIA,CAAIioM,CAAAA,wBAAAA,CAA2BD,mBACnCx8N,CAAAA,CAAAA,CAAIA,CAAIy8N,CAAAA,wBAAAA,CAA2BD,oBACnChoM,CAAK,EAAA,CAAA,CACL81G,IAAKjpI,CAAAA,IAAI,CAACmzB,CAAAA,CAAG,CAAIx0B,CAAAA,CAAAA,CAAAA,CACjB,GAAIO,CAAIyuM,CAAAA,cAAAA,EAAkBloH,CAAI+1I,CAAAA,WAAAA,CAAa,CACzC,MAAMn3N,KAAQnF,CAAAA,CAAAA,EAAKs8N,WAAc,CAAA,CAAA,CAAK/1I,CAAAA,CAAAA,CACtC,MAAMlhF,MAAAA,CAASrF,CAAKs8N,EAAAA,YAAc,CAAA,CAAA,EAAM/1I,CAAAA,CAAI,CAAA,CAAA,CAC5C,MAAMo2I,KAAAA,CAAQ,CAAC38N,CAAAA,CAAI,CAAA,GAAMs8N,WAAAA,CAAc,CAAA,CAAA,CAAK/1I,EAC5C,MAAMq2I,MAAAA,CAAS,CAAC58N,CAAI,CAAA,CAAA,GAAMs8N,YAAc,CAAA,CAAA,EAAM/1I,CAAAA,CAAI,CAAA,CAAA,CAClDgkB,OAAQzpG,CAAAA,IAAI,CAACqE,KAAOE,CAAAA,MAAAA,CAAQs3N,KAC5BpyH,CAAAA,CAAAA,OAAAA,CAAQzpG,IAAI,CAACuE,MAAQu3N,CAAAA,MAAAA,CAAQD,OAC/B,CACF,CACF,CACF,CACA,GAAIJ,WAAAA,CAAa,CACf,MAAM9sB,cAAgBlwM,IAAKmQ,CAAAA,KAAK,CAAC4sN,WAAAA,CAAc,CAC/C,CAAA,CAAA,MAAM5sB,cAAiB4sB,CAAAA,WAAAA,CACvB,MAAMO,SAAYj3M,CAAAA,MAAAA,CAAS,CAC3B,CAAA,IAAI,IAAI+pL,GAAAA,CAAM,CAAGA,CAAAA,GAAAA,EAAOF,cAAeE,GAAM,EAAA,CAAA,CAC3C,MAAMC,KAAAA,CAAQD,GAAMpwM,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,GAAMk8L,aACpC,CAAA,MAAMI,QAAWtwM,CAAAA,IAAAA,CAAKyc,GAAG,CAAC4zL,KAC1B,CAAA,CAAA,MAAME,SAAWvwM,IAAKuc,CAAAA,GAAG,CAAC8zL,KAAAA,CAAAA,CAC1B,IAAI,IAAIG,GAAM,CAAA,CAAA,CAAGA,KAAOL,cAAgBK,CAAAA,GAAAA,EAAAA,CAAM,CAC5C,MAAMC,GAAMD,CAAAA,GAAAA,CAAM,CAAIxwM,CAAAA,IAAAA,CAAKgU,EAAE,CAAGm8L,cAAAA,CAAiBnwM,IAAKgU,CAAAA,EAAE,CAAG,CAAA,CAC3D,MAAM08L,MAAAA,CAAS1wM,KAAKyc,GAAG,CAACg0L,GACxB,CAAA,CAAA,MAAME,MAAS3wM,CAAAA,IAAAA,CAAKuc,GAAG,CAACk0L,KACxB,MAAM37L,CAAAA,CAAI67L,MAASL,CAAAA,QAAAA,CACnB,MAAM9zL,CAAAA,CAAI+zL,QACV,CAAA,MAAM5zL,EAAI+zL,MAASJ,CAAAA,QAAAA,CACnB,IAAI57K,CAAAA,CAAI,CAAI87K,CAAAA,GAAAA,CAAML,cAClB,CAAA,IAAIjwM,EAAI,CAAIkwM,CAAAA,GAAAA,CAAMF,aAClBxyJ,CAAAA,SAAAA,CAAUn8C,IAAI,CAACuT,CAAIgoN,CAAAA,UAAAA,CAAYtgN,EAAIsgN,UAAaQ,CAAAA,SAAAA,CAAW3gN,CAAImgN,CAAAA,UAAAA,CAAAA,CAC/D1yF,OAAQ7oI,CAAAA,IAAI,CAACuT,CAAAA,CAAG0H,EAAGG,CACnB4tH,CAAAA,CAAAA,GAAAA,CAAIhpI,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAIx0B,CAChBw0B,CAAAA,CAAAA,CAAAA,CAAIA,EAAIioM,wBAA2BD,CAAAA,mBAAAA,CACnCx8N,CAAIA,CAAAA,CAAAA,CAAIy8N,wBAA2BD,CAAAA,mBAAAA,CACnChoM,CAAK,EAAA,CAAA,CACLx0B,GAAK,CACLw0B,CAAAA,CAAAA,EAAK,CAAM,CAAA,CAAA,CACX81G,IAAKjpI,CAAAA,IAAI,CAACmzB,CAAAA,CAAG,EAAIx0B,CACnB,EAAA,CACF,CACAiO,MAAAA,CAAS,CAAC+gM,cAAiB,CAAA,CAAA,GAAM6tB,WAAAA,CAAc,CAAA,CAAA,CAC/C,IAAI,IAAI3sB,GAAM,CAAA,CAAA,CAAGA,IAAMF,aAAe,CAAA,EAAEE,GAAI,CAAA,CAC1C,IAAI,IAAII,GAAM,CAAA,CAAA,CAAGA,IAAML,cAAgB,CAAA,EAAEK,GAAI,CAAA,CAC3C,MAAM5qM,KAAAA,CAAQwqM,GAAOD,EAAAA,eAAiB,CAAA,CAAA,CAAKK,GAC3C,CAAA,MAAM1qM,MAASF,CAAAA,KAAAA,CAAQuqM,cAAiB,CAAA,CAAA,CACxCnlG,QAAQzpG,IAAI,CAAC4M,MAASvI,CAAAA,KAAAA,CAAQ,CAAGuI,CAAAA,MAAAA,CAASrI,MAAQqI,CAAAA,MAAAA,CAASvI,OAC3DolG,OAAQzpG,CAAAA,IAAI,CAAC4M,MAAAA,CAASvI,KAAQ,CAAA,CAAA,CAAGuI,MAASrI,CAAAA,MAAAA,CAAS,EAAGqI,MAASrI,CAAAA,MAAAA,EACjE,CACF,CACA,IAAI,IAAIsqM,GAAM,CAAA,CAAA,CAAGA,KAAOF,aAAeE,CAAAA,GAAAA,EAAAA,CAAM,CAC3C,MAAMC,KAAQrwM,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,GAAMo8L,GAAMpwM,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,EAAMk8L,CAAAA,aAAAA,CACpD,MAAMI,QAAAA,CAAWtwM,KAAKyc,GAAG,CAAC4zL,KAC1B,CAAA,CAAA,MAAME,QAAWvwM,CAAAA,IAAAA,CAAKuc,GAAG,CAAC8zL,OAC1B,IAAI,IAAIG,GAAM,CAAA,CAAA,CAAGA,GAAOL,EAAAA,cAAAA,CAAgBK,GAAM,EAAA,CAAA,CAC5C,MAAMC,GAAMD,CAAAA,GAAAA,CAAM,CAAIxwM,CAAAA,IAAAA,CAAKgU,EAAE,CAAGm8L,cAAiBnwM,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,CAAA,CAC3D,MAAM08L,MAAAA,CAAS1wM,IAAKyc,CAAAA,GAAG,CAACg0L,GAAAA,CAAAA,CACxB,MAAME,MAAS3wM,CAAAA,IAAAA,CAAKuc,GAAG,CAACk0L,GACxB,CAAA,CAAA,MAAM37L,CAAI67L,CAAAA,MAAAA,CAASL,SACnB,MAAM9zL,CAAAA,CAAI+zL,QACV,CAAA,MAAM5zL,CAAI+zL,CAAAA,MAAAA,CAASJ,QACnB,CAAA,IAAI57K,EAAI,CAAI87K,CAAAA,GAAAA,CAAML,cAClB,CAAA,IAAIjwM,CAAI,CAAA,CAAA,CAAIkwM,GAAMF,CAAAA,aAAAA,CAClBxyJ,UAAUn8C,IAAI,CAACuT,CAAIgoN,CAAAA,UAAAA,CAAYtgN,CAAIsgN,CAAAA,UAAAA,CAAaQ,SAAW3gN,CAAAA,CAAAA,CAAImgN,YAC/D1yF,OAAQ7oI,CAAAA,IAAI,CAACuT,CAAAA,CAAG0H,CAAGG,CAAAA,CAAAA,CAAAA,CACnB4tH,GAAIhpI,CAAAA,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAIx0B,CAChBw0B,CAAAA,CAAAA,CAAAA,CAAIA,CAAIioM,CAAAA,wBAAAA,CAA2BD,mBACnCx8N,CAAAA,CAAAA,CAAIA,EAAIy8N,wBAA2BD,CAAAA,mBAAAA,CACnChoM,CAAK,EAAA,CAAA,CACLx0B,CAAK,EAAA,CAAA,CACLw0B,CAAK,EAAA,CAAA,CAAM,EACX81G,IAAKjpI,CAAAA,IAAI,CAACmzB,CAAAA,CAAG,CAAIx0B,CAAAA,CAAAA,EACnB,CACF,CACAiO,OAAS,CAAC+gM,cAAiB,CAAA,CAAA,GAAM6tB,WAAc,CAAA,CAAA,EAAK,CAAC5sB,cAAiB,CAAA,CAAA,GAAMD,aAAgB,CAAA,CAAA,EAC5F,IAAI,IAAIE,GAAM,CAAA,CAAA,CAAGA,GAAMF,CAAAA,aAAAA,CAAe,EAAEE,GAAAA,CAAI,CAC1C,IAAI,IAAII,GAAM,CAAA,CAAA,CAAGA,GAAML,CAAAA,cAAAA,CAAgB,EAAEK,GAAAA,CAAI,CAC3C,MAAM5qM,KAAAA,CAAQwqM,GAAOD,EAAAA,cAAiB,CAAA,CAAA,CAAKK,CAAAA,GAAAA,CAC3C,MAAM1qM,MAASF,CAAAA,KAAAA,CAAQuqM,cAAiB,CAAA,CAAA,CACxCnlG,OAAQzpG,CAAAA,IAAI,CAAC4M,MAAAA,CAASvI,MAAQ,CAAGuI,CAAAA,MAAAA,CAASrI,MAAQqI,CAAAA,MAAAA,CAASvI,KAC3DolG,CAAAA,CAAAA,OAAAA,CAAQzpG,IAAI,CAAC4M,OAASvI,KAAQ,CAAA,CAAA,CAAGuI,MAASrI,CAAAA,MAAAA,CAAS,CAAGqI,CAAAA,MAAAA,CAASrI,MACjE,EAAA,CACF,CACF,CAAO,KAAA,CACLqI,MAAS,CAAC+gM,CAAAA,cAAAA,CAAiB,CAAA,GAAM6tB,WAAc,CAAA,CAAA,CAC/C,CAAA,GAAIF,UAAa,CAAA,CAAA,CAAG,CAClB,IAAI,IAAIp8N,CAAI,CAAA,CAAA,CAAGA,CAAIs8N,CAAAA,WAAAA,CAAat8N,CAAI,EAAA,CAAA,CAClC,MAAM4vM,KAAAA,CAAQ5vM,EAAIs8N,WAAc,CAAA,CAAA,CAAI/8N,IAAKgU,CAAAA,EAAE,CAC3C,MAAMc,CAAI9U,CAAAA,IAAAA,CAAKyc,GAAG,CAAC4zL,KAAAA,CAAAA,CACnB,MAAM7zL,CAAAA,CAAI,CAAC6J,MAAAA,CAAS,CACpB,CAAA,MAAM1J,EAAI3c,IAAKuc,CAAAA,GAAG,CAAC8zL,KAAAA,CAAAA,CACnB,IAAI37K,CAAAA,CAAI,CAAI,CAAC5f,CAAAA,CAAI,CAAA,CAAA,EAAK,CAAA,CACtB,IAAI5U,CAAAA,CAAI,CAACyc,EAAI,CAAA,EAAK,CAClB+gC,CAAAA,SAAAA,CAAUn8C,IAAI,CAACuT,CAAI+nN,CAAAA,UAAAA,CAAYrgN,EAAGG,CAAIkgN,CAAAA,UAAAA,CAAAA,CACtCzyF,OAAQ7oI,CAAAA,IAAI,CAAC,CAAA,CAAG,CAAC,CAAA,CAAG,GACpBgpI,GAAIhpI,CAAAA,IAAI,CAACmzB,CAAAA,CAAG,CAAIx0B,CAAAA,CAAAA,CAAAA,CAChBw0B,CAAIA,CAAAA,CAAAA,CAAIioM,yBAA2BD,mBACnCx8N,CAAAA,CAAAA,CAAIA,CAAIy8N,CAAAA,wBAAAA,CAA2BD,mBACnChoM,CAAAA,CAAAA,EAAK,CACLx0B,CAAAA,CAAAA,EAAK,EACLw0B,CAAK,EAAA,CAAA,CAAI,CACT81G,CAAAA,IAAAA,CAAKjpI,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAIx0B,GACjB,GAAIO,CAAAA,CAAI,CAAG,CAAA,CACTuqG,OAAQzpG,CAAAA,IAAI,CAAC4M,MAAAA,CAAQA,OAAS1N,CAAG0N,CAAAA,MAAAA,CAAS1N,CAAI,CAAA,CAAA,EAChD,CACF,CACF,CACA0N,MAAAA,EAAU4uN,YACV,GAAID,UAAAA,CAAa,CAAG,CAAA,CAClB,IAAI,IAAIr8N,CAAI,CAAA,CAAA,CAAGA,EAAIs8N,WAAat8N,CAAAA,CAAAA,EAAAA,CAAI,CAClC,MAAM4vM,KAAQ5vM,CAAAA,CAAAA,CAAIs8N,WAAc,CAAA,CAAA,CAAI/8N,KAAKgU,EAAE,CAC3C,MAAMc,CAAAA,CAAI9U,IAAKyc,CAAAA,GAAG,CAAC4zL,KAAAA,CAAAA,CACnB,MAAM7zL,CAAI6J,CAAAA,MAAAA,CAAS,CACnB,CAAA,MAAM1J,CAAI3c,CAAAA,IAAAA,CAAKuc,GAAG,CAAC8zL,OACnB,IAAI37K,CAAAA,CAAI,CAAI,CAAC5f,CAAAA,CAAAA,CAAI,CAAA,EAAK,EACtB,IAAI5U,CAAAA,CAAI,CAACyc,CAAI,CAAA,CAAA,EAAK,CAAA,CAClB+gC,UAAUn8C,IAAI,CAACuT,CAAIgoN,CAAAA,UAAAA,CAAYtgN,CAAGG,CAAAA,CAAAA,CAAImgN,UACtC1yF,CAAAA,CAAAA,OAAAA,CAAQ7oI,IAAI,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACnBgpI,GAAIhpI,CAAAA,IAAI,CAACmzB,CAAAA,CAAG,EAAIx0B,CAChBw0B,CAAAA,CAAAA,CAAAA,CAAIA,CAAIioM,CAAAA,wBAAAA,CAA2BD,mBACnCx8N,CAAAA,CAAAA,CAAIA,CAAIy8N,CAAAA,wBAAAA,CAA2BD,oBACnChoM,CAAK,EAAA,CAAA,CACLx0B,CAAK,EAAA,CAAA,CACLw0B,CAAK,EAAA,CAAA,CAAI,CACT81G,CAAAA,IAAAA,CAAKjpI,IAAI,CAACmzB,CAAAA,CAAG,CAAIx0B,CAAAA,CAAAA,CAAAA,CACjB,GAAIO,CAAAA,CAAI,CAAG,CAAA,CACTuqG,QAAQzpG,IAAI,CAAC4M,MAAQA,CAAAA,MAAAA,CAAS1N,CAAI,CAAA,CAAA,CAAG0N,MAAS1N,CAAAA,CAAAA,EAChD,CACF,CACF,CACF,CACA,IAAI,CAACi9C,SAAS,CAAGA,SACjB,CAAA,IAAI,CAAC0sF,OAAO,CAAGA,OACf,CAAA,IAAI,CAACG,GAAG,CAAGA,GACX,CAAA,IAAI,CAACC,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACx/B,OAAO,CAAGA,QACjB,CACF,CAEA,MAAMuyH,wBAAwBX,gBAC5Bp0N,CAAAA,WAAAA,CAAYnG,IAAO,CAAA,EAAE,CAAC,CACpB,MAAM4Z,OAAS5Z,IAAK4Z,CAAAA,MAAM,EAAI,EAAA,CAC9B,MAAMoK,MAAAA,CAAShkB,IAAKgkB,CAAAA,MAAM,EAAI,CAC9B,CAAA,MAAM6oL,cAAiB7sM,CAAAA,IAAAA,CAAK6sM,cAAc,EAAI,CAC9C,CAAA,MAAMO,MAAQptM,IAAKotM,CAAAA,KAAK,EAAI,EAAA,CAC5B,KAAK,CAACxzL,MAAQA,CAAAA,MAAAA,CAAQoK,OAAS,CAAIpK,CAAAA,MAAAA,CAAQizL,cAAgBO,CAAAA,KAAAA,CAAO,IAClE,CAAA,CAAA,GAAIptM,IAAKorM,CAAAA,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,iBAAAA,CAAkB,IAAI,CAAC/vJ,SAAS,CAAE,IAAI,CAAC0sF,OAAO,CAAE,IAAI,CAACG,GAAG,CAAE,IAAI,CAACv/B,OAAO,EACxF,CACF,CACF,CAEA,MAAMwyH,qBAAqBZ,gBACzBp0N,CAAAA,WAAAA,CAAYnG,IAAO,CAAA,EAAE,CAAC,CACpB,MAAMw6N,WAAax6N,IAAKw6N,CAAAA,UAAU,EAAI,EAAA,CACtC,MAAMC,UAAAA,CAAaz6N,IAAKy6N,CAAAA,UAAU,EAAI,CACtC,CAAA,MAAMz2M,MAAShkB,CAAAA,IAAAA,CAAKgkB,MAAM,EAAI,CAC9B,CAAA,MAAM6oL,eAAiB7sM,IAAK6sM,CAAAA,cAAc,EAAI,CAAA,CAC9C,MAAM6tB,WAAAA,CAAc16N,IAAK06N,CAAAA,WAAW,EAAI,EACxC,CAAA,KAAK,CAACF,UAAAA,CAAYC,WAAYz2M,MAAQ6oL,CAAAA,cAAAA,CAAgB6tB,WAAa,CAAA,KAAA,CAAA,CACnE,GAAI16N,IAAKorM,CAAAA,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,kBAAkB,IAAI,CAAC/vJ,SAAS,CAAE,IAAI,CAAC0sF,OAAO,CAAE,IAAI,CAACG,GAAG,CAAE,IAAI,CAACv/B,OAAO,EACxF,CACF,CACF,CAEA,MAAMyyH,gBAAyBb,SAAAA,gBAAAA,CAC7Bp0N,WAAYnG,CAAAA,IAAAA,CAAO,EAAE,CAAC,CACpB,MAAM4Z,MAAS5Z,CAAAA,IAAAA,CAAK4Z,MAAM,EAAI,EAC9B,CAAA,MAAMoK,OAAShkB,IAAKgkB,CAAAA,MAAM,EAAI,CAAA,CAC9B,MAAM6oL,cAAAA,CAAiB7sM,IAAK6sM,CAAAA,cAAc,EAAI,CAC9C,CAAA,MAAM6tB,WAAc16N,CAAAA,IAAAA,CAAK06N,WAAW,EAAI,EACxC,CAAA,KAAK,CAAC9gN,MAAQA,CAAAA,MAAAA,CAAQoK,MAAQ6oL,CAAAA,cAAAA,CAAgB6tB,WAAa,CAAA,KAAA,CAAA,CAC3D,GAAI16N,IAAAA,CAAKorM,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,iBAAkB,CAAA,IAAI,CAAC/vJ,SAAS,CAAE,IAAI,CAAC0sF,OAAO,CAAE,IAAI,CAACG,GAAG,CAAE,IAAI,CAACv/B,OAAO,EACxF,CACF,CACF,CAEA,MAAM0yH,aAAsBlvB,SAAAA,QAAAA,CAC1BhmM,WAAYnG,CAAAA,IAAAA,CAAO,EAAE,CAAC,CACpB,KAAK,EACL,CAAA,MAAMusM,EAAKvsM,CAAAA,IAAAA,CAAK4pB,WAAW,EAAI,IAAI3J,IAAAA,CAAK,GAAK,EAC7C,CAAA,CAAA,MAAMusL,EAAKxsM,CAAAA,IAAAA,CAAKysM,aAAa,EAAI,CACjC,CAAA,MAAMC,GAAK1sM,IAAK2sM,CAAAA,cAAc,EAAI,CAAA,CAClC,MAAMtxJ,SAAAA,CAAY,EAAE,CACpB,MAAM0sF,OAAU,CAAA,EAAE,CAClB,MAAMG,GAAM,CAAA,EAAE,CACd,MAAMv/B,QAAU,EAAE,CAClB,IAAI4kG,QAAAA,CAAW,CACf,CAAA,IAAI,IAAInvM,CAAAA,CAAI,EAAGA,CAAKouM,EAAAA,EAAAA,CAAIpuM,CAAI,EAAA,CAAA,CAC1B,IAAI,IAAIumF,CAAI,CAAA,CAAA,CAAGA,GAAK+nH,EAAI/nH,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAMlyE,CAAI,CAAA,CAAC85L,EAAG95L,CAAAA,CAAC,CAAG,CAAI85L,CAAAA,EAAAA,CAAG95L,CAAC,CAAGrU,CAAIouM,CAAAA,EAAAA,CACjC,MAAMryL,CAAAA,CAAI,EACV,MAAMG,CAAAA,CAAI,EAAE,CAACiyL,EAAAA,CAAGpyL,CAAC,CAAG,EAAIoyL,EAAGpyL,CAAAA,CAAC,CAAGwqE,CAAAA,CAAI+nH,EAAC,CAAA,CACpC,MAAMr6K,CAAAA,CAAIj0B,EAAIouM,EACd,CAAA,MAAM3uM,CAAI8mF,CAAAA,CAAAA,CAAI+nH,EACdrxJ,CAAAA,SAAAA,CAAUn8C,IAAI,CAACuT,EAAG0H,CAAGG,CAAAA,CAAAA,CAAAA,CACrBytH,OAAQ7oI,CAAAA,IAAI,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACnBgpI,IAAIhpI,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAIx0B,CAChB,CAAA,CAAA,GAAIO,CAAIouM,CAAAA,EAAAA,EAAM7nH,EAAI+nH,EAAI,CAAA,CACpB/jG,OAAQzpG,CAAAA,IAAI,CAACquM,QAAAA,CAAWb,EAAK,CAAA,CAAA,CAAGa,SAAW,CAAGA,CAAAA,QAAAA,CAAAA,CAC9C5kG,OAAQzpG,CAAAA,IAAI,CAACquM,QAAAA,CAAWb,EAAK,CAAA,CAAA,CAAGa,SAAWb,EAAK,CAAA,CAAA,CAAGa,QAAW,CAAA,CAAA,EAChE,CACAA,QAAAA,GACF,CACF,CACA,IAAI,CAAClyJ,SAAS,CAAGA,SACjB,CAAA,IAAI,CAAC0sF,OAAO,CAAGA,OACf,CAAA,IAAI,CAACG,GAAG,CAAGA,GACX,CAAA,IAAI,CAACC,IAAI,CAAGD,GACZ,CAAA,IAAI,CAACv/B,OAAO,CAAGA,OACf,CAAA,GAAI3oG,IAAKorM,CAAAA,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,iBAAAA,CAAkB/vJ,SAAW0sF,CAAAA,OAAAA,CAASG,GAAKv/B,CAAAA,OAAAA,EAC7D,CACF,CACF,CAEA,MAAM2yH,aAAAA,SAAsBnvB,QAC1BhmM,CAAAA,WAAAA,CAAYnG,IAAO,CAAA,EAAE,CAAC,CACpB,KAAK,EAAA,CACL,MAAMu7N,EAAAA,CAAKv7N,IAAKw7N,CAAAA,UAAU,EAAI,EAAA,CAC9B,MAAMnsK,EAAKrvD,CAAAA,IAAAA,CAAKy7N,UAAU,EAAI,EAC9B,CAAA,MAAMC,WAAc,CAAC17N,CAAAA,IAAK07N,CAAAA,WAAW,EAAI,GAAE,EAAKjqN,IAAAA,CAAKC,UAAU,CAC/D,MAAMiqN,QAAW37N,CAAAA,IAAAA,CAAK27N,QAAQ,EAAI,EAClC,CAAA,MAAMvuB,KAAQptM,CAAAA,IAAAA,CAAKotM,KAAK,EAAI,EAAA,CAC5B,MAAM/xJ,SAAAA,CAAY,EAAE,CACpB,MAAM0sF,OAAAA,CAAU,EAAE,CAClB,MAAMG,GAAM,CAAA,EAAE,CACd,MAAMv/B,OAAU,CAAA,EAAE,CAClB,IAAI,IAAIvqG,CAAI,CAAA,CAAA,CAAGA,CAAKgvM,EAAAA,KAAAA,CAAOhvM,CAAI,EAAA,CAAA,CAC7B,IAAI,IAAIumF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAKg3I,QAAUh3I,CAAAA,CAAAA,EAAAA,CAAI,CAChC,MAAMlyE,EAAI9U,IAAKuc,CAAAA,GAAG,CAACwhN,WAAAA,CAAc/2I,CAAIg3I,CAAAA,QAAAA,CAAAA,EAAatsK,EAAAA,CAAKksK,GAAK59N,IAAKuc,CAAAA,GAAG,CAAC,CAAA,CAAIvc,IAAKgU,CAAAA,EAAE,CAAGvT,CAAAA,CAAIgvM,MAAK,CAC5F,CAAA,MAAMjzL,CAAIxc,CAAAA,IAAAA,CAAKyc,GAAG,CAAC,CAAIzc,CAAAA,IAAAA,CAAKgU,EAAE,CAAGvT,CAAAA,CAAIgvM,KAASmuB,CAAAA,CAAAA,EAAAA,CAC9C,MAAMjhN,CAAAA,CAAI3c,IAAKyc,CAAAA,GAAG,CAACshN,WAAc/2I,CAAAA,CAAAA,CAAIg3I,QAAatsK,CAAAA,EAAAA,EAAKksK,CAAAA,EAAAA,CAAK59N,IAAKuc,CAAAA,GAAG,CAAC,CAAIvc,CAAAA,IAAAA,CAAKgU,EAAE,CAAGvT,CAAIgvM,CAAAA,KAAAA,CAAK,CAC5F,CAAA,MAAMn9K,GAAKtyB,IAAKuc,CAAAA,GAAG,CAACwhN,WAAAA,CAAc/2I,CAAIg3I,CAAAA,QAAAA,CAAAA,CAAYh+N,IAAKuc,CAAAA,GAAG,CAAC,CAAIvc,CAAAA,IAAAA,CAAKgU,EAAE,CAAGvT,CAAIgvM,CAAAA,KAAAA,CAAAA,CAC7E,MAAMl9K,EAAAA,CAAKvyB,KAAKyc,GAAG,CAAC,CAAIzc,CAAAA,IAAAA,CAAKgU,EAAE,CAAGvT,CAAIgvM,CAAAA,KAAAA,CAAAA,CACtC,MAAMj9K,EAAKxyB,CAAAA,IAAAA,CAAKyc,GAAG,CAACshN,WAAc/2I,CAAAA,CAAAA,CAAIg3I,QAAYh+N,CAAAA,CAAAA,IAAAA,CAAKuc,GAAG,CAAC,CAAA,CAAIvc,IAAKgU,CAAAA,EAAE,CAAGvT,CAAAA,CAAIgvM,KAC7E,CAAA,CAAA,MAAM/6K,EAAIj0B,CAAIgvM,CAAAA,KAAAA,CACd,MAAMvvM,CAAAA,CAAI,CAAI8mF,CAAAA,CAAAA,CAAIg3I,QAClBtgL,CAAAA,SAAAA,CAAUn8C,IAAI,CAACuT,CAAAA,CAAG0H,CAAGG,CAAAA,CAAAA,CAAAA,CACrBytH,OAAQ7oI,CAAAA,IAAI,CAAC+wB,EAAAA,CAAIC,GAAIC,EACrB+3G,CAAAA,CAAAA,GAAAA,CAAIhpI,IAAI,CAACmzB,CAAG,CAAA,CAAA,CAAMx0B,CAClB,CAAA,CAAA,GAAIO,EAAIgvM,KAASzoH,EAAAA,CAAAA,CAAIg3I,QAAU,CAAA,CAC7B,MAAMp4N,KAAAA,CAAQnF,CAAKu9N,EAAAA,SAAW,CAAA,CAAA,CAAKh3I,CACnC,CAAA,MAAMlhF,MAAS,CAACrF,CAAAA,CAAAA,CAAI,CAAA,GAAMu9N,QAAW,CAAA,CAAA,CAAKh3I,CAAAA,CAAAA,CAC1C,MAAMo2I,KAAAA,CAAQ38N,GAAKu9N,QAAAA,CAAW,CAAA,CAAA,EAAMh3I,CAAAA,CAAI,CAAA,CAAA,CACxC,MAAMq2I,MAAS,CAAC58N,CAAAA,CAAAA,CAAI,CAAA,GAAMu9N,QAAAA,CAAW,CAAA,CAAMh3I,EAAAA,CAAI,CAAA,CAAA,CAC/CgkB,CAAAA,OAAAA,CAAQzpG,IAAI,CAACqE,MAAOE,MAAQs3N,CAAAA,KAAAA,CAAAA,CAC5BpyH,OAAQzpG,CAAAA,IAAI,CAACuE,MAAAA,CAAQu3N,MAAQD,CAAAA,KAAAA,EAC/B,CACF,CACF,CACA,IAAI,CAAC1/K,SAAS,CAAGA,SACjB,CAAA,IAAI,CAAC0sF,OAAO,CAAGA,OACf,CAAA,IAAI,CAACG,GAAG,CAAGA,GACX,CAAA,IAAI,CAACC,IAAI,CAAGD,GACZ,CAAA,IAAI,CAACv/B,OAAO,CAAGA,OACf,CAAA,GAAI3oG,IAAKorM,CAAAA,iBAAiB,CAAE,CAC1B,IAAI,CAACpjE,QAAQ,CAAGojE,iBAAAA,CAAkB/vJ,SAAW0sF,CAAAA,OAAAA,CAASG,GAAKv/B,CAAAA,OAAAA,EAC7D,CACF,CACF,CAEA,MAAMizH,cAAAA,CAkBJr0L,OAAU,EAAA,CACR,IAAI,CAACs0L,UAAU,GACjB,CACAr6F,QAAS9/H,CAAAA,IAAI,CAAEo6N,SAAS,CAAE,CACxB,GAAI,CAAC,IAAI,CAACC,WAAW,CAACr1N,GAAG,CAAChF,IAAAA,CAAAA,CAAO,CAC/B,IAAI,CAACq6N,WAAW,CAACp1N,GAAG,CAACjF,IAAMo6N,CAAAA,SAAAA,EAC7B,CACF,CACAn6F,UAAAA,CAAWjgI,IAAI,CAAE,CACf,GAAI,IAAI,CAACq6N,WAAW,CAACr1N,GAAG,CAAChF,IAAAA,CAAAA,CAAO,CAC9B,IAAI,CAACq6N,WAAW,CAAC90N,MAAM,CAACvF,IAC1B,EAAA,CACF,CACAs6N,YAAAA,CAAat6N,IAAI,CAAE,CACjB,OAAO,IAAI,CAACq6N,WAAW,CAACr1N,GAAG,CAAChF,IAAAA,CAC9B,CACAu6N,wBAAyBH,CAAAA,SAAS,CAAEp6N,IAAI,CAAEuE,GAAG,CAAE4J,OAAO,CAAE,CACtD,IAAIqsN,GAAM,CAAA,IAAI,CAACC,gBAAgB,CAACh8N,GAAG,CAAC8F,GACpC,CAAA,CAAA,GAAI,CAACi2N,GAAAA,CAAK,CACR,IAAItrE,MACJ,CAAA,GAAI/gJ,QAAQ00M,UAAU,EAAE3zD,MAAQ,CAAA,CAC9BA,MAAS/gJ,CAAAA,OAAAA,CAAQ00M,UAAU,CAAC3zD,MAAM,CAClC/gJ,OAAQ00M,CAAAA,UAAU,CAAC3zD,MAAM,CAAGA,MAAAA,CAAO3rJ,GAAG,CAAEgY,CACtC,EAAA,CAAA,MAAMm/M,KAAQn/M,CAAAA,CAAAA,CAAEvJ,KAAK,CAAGuJ,EAAEvJ,KAAK,EAAA,CAAKuJ,CACpCm/M,CAAAA,KAAMn2N,CAAAA,GAAG,CAAGgX,CAAAA,CAAEhX,GAAG,CACjB,OAAOm2N,KACT,CAAA,EACF,CACA,IAAI,CAACC,eAAe,CAAC36N,IAAMmO,CAAAA,OAAAA,CAAAA,CAC3B,GAAIA,OAAAA,CAAQ00M,UAAU,EAAE3zD,MAAQ,CAAA,CAC9B/gJ,QAAQ00M,UAAU,CAAC3zD,MAAM,CAAGA,OAC9B,CACA,GAAI,IAAI,CAAC0rE,UAAU,CAAA,CACnB,MAAMj0L,MAAAA,CAAS,IAAI,CAACub,OAAO,CAC3Bs4K,IAAMJ,SAAU37F,CAAAA,sBAAsB,CAAC93F,MAAAA,CAAQx4B,OAC/CqsN,CAAAA,CAAAA,GAAIx6N,CAAAA,IAAI,CAAGw6N,GAAIx6N,CAAAA,IAAI,GAAKmO,OAAQuxH,CAAAA,IAAI,CAAG,CAAC,EAAE1/H,IAAK,CAAA,MAAM,EAAEmO,OAAAA,CAAQuxH,IAAI,CAAC,CAAC,CAAG1/H,IAAG,CAC3E,CAAA,IAAI,CAACy6N,gBAAgB,CAACx1N,GAAG,CAACV,GAAAA,CAAKi2N,KACjC,CACA,OAAOA,GACT,CACA57F,eAAgBr6H,CAAAA,GAAG,CAAE,CACnB,OAAO,IAAI,CAACs2N,cAAc,CAACp8N,GAAG,CAAC8F,GACjC,CAAA,CACA86H,gBAAgB96H,GAAG,CAAE+1C,MAAM,CAAE,CAC3B,IAAI,CAACugL,cAAc,CAAC51N,GAAG,CAACV,GAAK+1C,CAAAA,MAAAA,EAC/B,CACA0lF,UAAAA,CAAWhgI,IAAI,CAAEmO,OAAO,CAAEymD,iBAAiB,CAAEkmK,cAAc,CAAE,CAC3D,MAAMV,SAAAA,CAAY,IAAI,CAACC,WAAW,CAAC57N,GAAG,CAACuB,IAAAA,CAAAA,CACvC,GAAI,CAACo6N,UAAW,CACd,OAAO,IACT,CACA,MAAMW,mBAAAA,CAAsBX,SAAU/9F,CAAAA,WAAW,CAACluH,OAClD,CAAA,CAAA,MAAM6sN,aAAgBrlL,CAAAA,QAAAA,CAASolL,mBAC/B,CAAA,CAAA,MAAME,mBAAsBrmK,CAAAA,iBAAAA,CAAkBynE,WAAW,CAAC,IAAI,CAACn6E,OAAO,CACtE,CAAA,MAAMg5K,aAAgBvlL,CAAAA,QAAAA,CAASslL,qBAC/B,MAAME,QAAAA,CAAW,CAAC,EAAEH,aAAc,CAAA,CAAC,EAAEE,aAAAA,CAAc,CAAC,CACpD,IAAIE,eAAkB,CAAA,IAAI,CAACx8F,eAAe,CAACu8F,QAAAA,CAAAA,CAC3C,GAAI,CAACC,eAAAA,CAAiB,CACpB,MAAMC,kBAAqB,CAAA,IAAI,CAACd,wBAAwB,CAACH,SAAWp6N,CAAAA,IAAAA,CAAMg7N,aAAe7sN,CAAAA,OAAAA,CAAAA,CACzF,IAAImtN,QAAAA,CAAW,EACf,CAAA,IAAI77F,eACJ,GAAItxH,OAAAA,CAAQuxH,IAAI,GAAKl7H,SAAW,CAAA,CAC9Bi7H,cAAiBrC,CAAAA,UAAAA,CAAW3+H,GAAG,CAAC,IAAI,CAACyjD,OAAO,CAAEq7E,CAAAA,UAAU,CAACpvH,OAAAA,CAAQuxH,IAAI,CACrE47F,CAAAA,QAAAA,CAAW,CAAC,CAAC,EAAE77F,cAAAA,CAAez/H,IAAI,CAAC,EAAC,CAEtC,IAAI,CAACkiD,OAAO,CAACt8C,IAAI,CAAC,kBAAmB,CACnCk1N,cAAAA,CACAr7F,cACAjiE,CAAAA,UAAAA,CAAY69J,kBACd,CAAA,CAAA,CACA,MAAMnnK,gBAAAA,CAAmB,CACvBl0D,IAAM,CAAA,CAAC,EAAEq7N,kBAAAA,CAAmBr7N,IAAI,CAAC,EAAEs7N,QAAAA,CAAS,KAAK,CAAC,CAClDtzK,UAAYqzK,CAAAA,kBAAAA,CAAmBrzK,UAAU,CACzCsM,OAAS+mK,CAAAA,kBAAAA,CAAmB/mK,OAAO,CACnCiW,SAAAA,CAAW8wJ,kBAAmB9wJ,CAAAA,SAAS,CACvCE,SAAAA,CAAW4wJ,kBAAmB5wJ,CAAAA,SAAS,CACvCjW,OAAS6mK,CAAAA,kBAAAA,CAAmB7mK,OAAO,CACnCI,iBAAmBA,CAAAA,iBAAAA,CACnB2J,cAAgB88J,CAAAA,kBAAAA,CAAmB98J,cAAc,CACjD5I,uBAAAA,CAAyB0lK,kBAAmB1lK,CAAAA,uBAAuB,CACnEC,mBAAAA,CAAqBylK,kBAAmBzlK,CAAAA,mBAAmB,CAE7DwlK,CAAAA,eAAAA,CAAkB,IAAIzvJ,MAAAA,CAAO,IAAI,CAACzpB,OAAO,CAAEgS,kBAC3C,IAAI,CAACmrE,eAAe,CAAC87F,QAAUC,CAAAA,eAAAA,EACjC,CACA,OAAOA,eACT,CACAT,eAAAA,CAAgB36N,IAAI,CAAEmO,OAAO,CAAE,CAC7B,IAAIotN,IAAM,EAAC,CACX,GAAIv7N,IAAAA,GAAS,UAAY,CAAA,CACvB,MAAMw7N,UAAAA,CAAa,IAAI,CAACC,wBAAwB,CAACttN,OAAAA,CAAQuxH,IAAI,CAAA,CAC7D,IAAI,MAAMrwG,KAAKlhB,OAAQ,CAAA,CACrB,GAAIA,OAAAA,CAAQpF,cAAc,CAACsmB,CAAMmsM,CAAAA,EAAAA,UAAU,CAACnsM,CAAE,CAAA,GAAKlhB,OAAO,CAACkhB,CAAE,CAAA,EAAIA,CAAM,GAAA,MAAA,CAAQ,CAC7EksM,GAAG,CAAClsM,CAAE,CAAA,CAAGlhB,OAAO,CAACkhB,CAAE,EACrB,CACF,CACA,IAAI,MAAMA,CAAAA,IAAKlhB,OAAQ00M,CAAAA,UAAU,CAAC,CAChC0Y,GAAG,CAAClsM,CAAAA,CAAE,CAAGlhB,OAAAA,CAAQ00M,UAAU,CAACxzL,CAAE,EAChC,CACF,CAAO,KAAA,CACLksM,GAAMptN,CAAAA,QACR,CACA,IAAI,CAACutN,mBAAmB,CAACl+N,IAAI,CAACkmH,IAAKC,CAAAA,SAAS,CAAC,CAC3C3jH,IAAMA,CAAAA,IAAAA,CACNmO,QAASotN,GACX,CAAA,CAAA,EACF,CACAI,YAAAA,EAAe,CACb,IAAIC,IAAO,CAAA,iGAAA,CACXA,MAAQ,iBACR,CAAA,GAAI,IAAI,CAACF,mBAAmB,CAAC,CAAA,CAAE,CAAE,CAC/BE,MAAQ,CAAC;CAAI,EAAE,IAAI,CAACF,mBAAmB,CAAC,CAAA,CAAE,CAAC,EAC7C,CACA,IAAI,IAAIh/N,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACg/N,mBAAmB,CAAC/+N,MAAM,CAAE,EAAED,CAAAA,CAAE,CACtDk/N,IAAAA,EAAQ,CAAC;CAAK,EAAE,IAAI,CAACF,mBAAmB,CAACh/N,EAAE,CAAC,EAAC,CAE/Ck/N,IAAAA,EAAQ,SACRA,IAAQ,EAAA,qDAAA,CACRA,MAAQ,CAAC,mBAAoB,EAAEzgO,OAAQ,CAAA,qBAAuB,EAAEC,QAAS,CAAA;AAAK,CAAC,CAC/EwgO,IAAAA,EAAQ,2GACR,CAAA,MAAMvjL,OAAU7wC,CAAAA,QAAAA,CAASC,aAAa,CAAC,GACvC4wC,CAAAA,CAAAA,OAAAA,CAAQ3wC,YAAY,CAAC,MAAQ,CAAA,CAAC,8BAA8B,EAAEyH,kBAAmBysN,CAAAA,IAAAA,CAAAA,CAAM,CAAC,CAAA,CACxFvjL,OAAQ3wC,CAAAA,YAAY,CAAC,UAAA,CAAY,uBACjC2wC,CAAAA,CAAAA,OAAQgoH,CAAAA,KAAK,CAACw7D,OAAO,CAAG,MAAA,CACxBr0N,QAASK,CAAAA,IAAI,CAACC,WAAW,CAACuwC,OAAAA,CAAAA,CAC1BA,OAAQyjL,CAAAA,KAAK,EACbt0N,CAAAA,QAAAA,CAASK,IAAI,CAACk9I,WAAW,CAAC1sG,OAC5B,EAAA,CACA8hL,UAAa,EAAA,CACX,IAAI,CAAC4B,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAAClB,cAAc,CAACxxN,OAAO,CAAC,MAACixC,EAAAA,CAC3BA,MAAOzU,CAAAA,OAAO,GAChB,CAAA,CAAA,CACA,IAAI,CAACg1L,cAAc,CAACv1N,KAAK,EACzB,CAAA,IAAI,CAACy2N,gBAAgB,CAAG,MAC1B,CACAC,eAAAA,CAAgB1hL,MAAM,CAAE,CACtB,GAAI,IAAI,CAACyhL,gBAAgB,CAAE,CACzB,MACF,CACA,IAAI,CAAClB,cAAc,CAACxxN,OAAO,CAAC,CAAC4yN,YAAAA,CAAc13N,GACzC,GAAA,CAAA,GAAI+1C,MAAW2hL,GAAAA,YAAAA,CAAc,CAC3B,IAAI,CAACpB,cAAc,CAACt1N,MAAM,CAAChB,GAAAA,EAC7B,CACF,CAAA,EACF,CACAk3N,wBAAAA,CAAyB/7F,IAAI,CAAE,CAC7B,MAAMD,cAAiBrC,CAAAA,UAAAA,CAAW3+H,GAAG,CAAC,IAAI,CAACyjD,OAAO,CAAEq7E,CAAAA,UAAU,CAACmC,IAAAA,CAAAA,CAC/D,OAAOA,IAAAA,GAASrG,WAAeqG,EAAAA,IAAAA,GAASvG,cAAkBsG,EAAAA,cAAAA,CAAevC,QAAQ,CAAG,IAAI,CAACg/F,uBAAuB,CAAG,IAAI,CAACC,oBAC1H,CACAC,UAAAA,CAAWztL,KAAK,CAAE,CAChB,GAAIA,KAAO,CAAA,CACT,MAAM4L,OAAAA,CAAU,IAAI7+C,KAAAA,CAAMizC,MAAMhyC,MAAM,CAAA,CACtC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIiyC,CAAAA,KAAAA,CAAMhyC,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,GAAIiyC,KAAK,CAACjyC,CAAAA,CAAE,CAACsD,IAAI,GAAK,UAAA,CAAY,CAChC,MAAMu7N,GAAM5sL,CAAAA,KAAK,CAACjyC,CAAAA,CAAE,CAACyR,OAAO,CAC5B,MAAMqtN,UAAa,CAAA,IAAI,CAACC,wBAAwB,CAACF,GAAI77F,CAAAA,IAAI,CACzD,CAAA,IAAI,MAAMrwG,CAAAA,IAAKmsM,UAAW,CAAA,CACxB,GAAIA,UAAAA,CAAWzyN,cAAc,CAACsmB,CAAMksM,CAAAA,EAAAA,GAAG,CAAClsM,CAAAA,CAAE,GAAK7qB,SAAAA,CAAW,CACxD+2N,GAAG,CAAClsM,CAAAA,CAAE,CAAGmsM,UAAU,CAACnsM,CAAAA,EAAE,CAE1B,CACF,CACAkrB,OAAO,CAAC79C,CAAAA,CAAE,CAAG,IAAI,CAACsjI,UAAU,CAACrxF,KAAK,CAACjyC,CAAAA,CAAE,CAACsD,IAAI,CAAE2uC,KAAK,CAACjyC,CAAAA,CAAE,CAACyR,OAAO,EAC9D,CACF,CACA,IAAI,CAACysN,UAAU,CAAG,KACpB,CAxLAn2N,WAAAA,CAAYkiC,MAAM,CAAE01L,gBAAgB,CAAC,CACnC,IAAI,CAACxB,cAAc,CAAG,IAAI/1N,GAC1B,CAAA,IAAI,CAAC21N,gBAAgB,CAAG,IAAI31N,GAC5B,CAAA,IAAI,CAACu1N,WAAW,CAAG,IAAIv1N,GACvB,CAAA,IAAI,CAACo9C,OAAO,CAAGvb,MACf,CAAA,IAAI,CAACo1L,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACnB,UAAU,CAAG,KAClB,CAAA,IAAI,CAACc,mBAAmB,CAAG,EAC3B,CAAA,IAAI,CAACS,oBAAoB,CAAG,IAAIxT,uBAChC,CAAA,IAAI,CAACuT,uBAAuB,CAAG,IAAIvT,uBAAAA,CACnC,MAAM2T,yBAAAA,CAA4B,IAAInjF,kBAAAA,CACtCkjF,gBAAiBlG,CAAAA,gBAAgB,CAACrI,SAAS,CAAC,IAAI,CAACqO,oBAAoB,CAAE,EAAC,CAAGG,yBAA2BD,CAAAA,gBAAAA,CAAkB,IAAM,CAAA,EAAE,CAAEnjG,cAAAA,CAAgB,IAClJmjG,CAAAA,CAAAA,gBAAAA,CAAiBlG,gBAAgB,CAAC1I,YAAY,CAAC,IAAI,CAACyO,uBAAuB,CAAE,EAAC,CAAGG,gBAAkB,CAAA,IAAA,CAAMjjG,aAAe,CAAA,IAAA,CAAA,CACxHzyF,MAAO5iC,CAAAA,EAAE,CAAC,gBAAkB,CAACu2C,MAC3B,EAAA,CAAA,IAAI,CAAC0hL,eAAe,CAAC1hL,MAAAA,EACvB,CACF,EAAA,CAyKF,CAEA,MAAMiiL,MAAS,CAAA,IAAIt9M,IACnB,CAAA,MAAMu9M,MAAS,CAAA,IAAIj4M,IACnB,CAAA,MAAMiH,IAAO,CAAA,IAAI7D,WACjB,CAAA,MAAM80M,KAAQ,CAAA,IAAI90M,WAClB,CAAA,MAAM+0M,UAAa,CAAA,IAAI3qN,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,EAAA,CAAA,CACtC,MAAM4qN,OAAAA,CAAU,kBAChB,CAAA,MAAMC,aACJn4N,CAAAA,WAAAA,CAAYo4N,UAAU,CAAExtM,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE1G,CAAC,CAAC,CACjC,MAAMgV,CAAI8rN,CAAAA,UAAAA,CAAWC,OAAO,CAAC,GAC7B,CAAA,CAAA,MAAMrkN,CAAIokN,CAAAA,UAAAA,CAAWC,OAAO,CAAC,GAC7B,CAAA,CAAA,MAAMlkN,EAAIikN,UAAWC,CAAAA,OAAO,CAAC,GAAA,CAAA,CAC7B,MAAM1jN,EAAAA,CAAKyjN,UAAWC,CAAAA,OAAO,CAAC,OAAA,CAAA,CAC9B,MAAMzjN,EAAAA,CAAKwjN,UAAWC,CAAAA,OAAO,CAAC,OAAA,CAAA,CAC9B,MAAMxjN,EAAAA,CAAKujN,UAAWC,CAAAA,OAAO,CAAC,OAAA,CAAA,CAC9B,MAAMl2M,EAAAA,CAAKi2M,UAAWC,CAAAA,OAAO,CAAC,OAAA,CAAA,CAC9B,MAAMx5M,EAAAA,CAAKu5M,UAAWC,CAAAA,OAAO,CAAC,SAC9B,CAAA,CAAA,MAAMv5M,EAAKs5M,CAAAA,UAAAA,CAAWC,OAAO,CAAC,SAC9B,CAAA,CAAA,MAAMt5M,EAAKq5M,CAAAA,UAAAA,CAAWC,OAAO,CAAC,SAC9B,CAAA,CAAA,MAAMhF,EAAK+E,CAAAA,UAAAA,CAAWC,OAAO,CAAC,QAC9B,CAAA,CAAA,MAAMC,EAAKF,CAAAA,UAAAA,CAAWC,OAAO,CAAC,QAC9B,CAAA,CAAA,MAAMntJ,EAAKktJ,CAAAA,UAAAA,CAAWC,OAAO,CAAC,QAC9B,CAAA,CAAA,MAAMx3M,GAAKu3M,UAAWC,CAAAA,OAAO,CAAC,SAAA,CAAA,CAC9B,MAAME,OAAAA,CAAU,CAAC7gO,EAAAA,CACf,GAAIA,CAAAA,CAAI,CAAG,CAAA,CACT,OAAO,CAAA,EAAK,CAAA,CAAIF,IAAK0hK,CAAAA,GAAG,CAAC,CAACxhK,CAAC,CAAA,CAC7B,CACA,MAAMqR,CAAIvR,CAAAA,IAAAA,CAAK0hK,GAAG,CAACxhK,CACnB,CAAA,CAAA,OAAOqR,CAAK,EAAA,EAAIA,CAAAA,CAClB,CACA,CAAA,IAAI,CAACm4B,IAAI,CAAG,CAACjpC,EAAAA,CACX,GAAI2yB,CAAAA,CAAG,CACLA,CAAAA,CAAEte,CAAC,CAAGA,CAAC,CAACrU,CAAE,CACV2yB,CAAAA,CAAAA,CAAE5W,CAAC,CAAGA,CAAC,CAAC/b,CAAE,CACV2yB,CAAAA,CAAAA,CAAEzW,CAAC,CAAGA,CAAC,CAAClc,CAAAA,EAAE,CAEZ,GAAIV,CAAAA,CAAG,CACLA,CAAAA,CAAEiJ,GAAG,CAACmU,EAAE,CAAC1c,CAAE,CAAA,CAAE2c,EAAE,CAAC3c,CAAE,CAAA,CAAE4c,EAAE,CAAC5c,CAAE,CAAA,CAAEkqB,EAAE,CAAClqB,CAAE,CAAA,EAClC,CACA,GAAI+F,CAAG,CAAA,CACLA,CAAEwC,CAAAA,GAAG,CAAChJ,IAAK0hK,CAAAA,GAAG,CAACr6I,EAAE,CAAC5mB,CAAAA,CAAE,CAAGT,CAAAA,IAAAA,CAAK0hK,GAAG,CAACp6I,EAAE,CAAC7mB,CAAE,CAAA,CAAA,CAAGT,IAAK0hK,CAAAA,GAAG,CAACn6I,EAAE,CAAC9mB,CAAAA,CAAE,CACxD,EAAA,CACA,GAAIX,CAAAA,CAAG,CACLA,CAAAA,CAAEkJ,GAAG,CAAC,EAAM6yN,CAAAA,EAAE,CAACp7N,CAAAA,CAAE,CAAGigO,OAAS,CAAA,EAAA,CAAMI,EAAE,CAACrgO,CAAE,CAAA,CAAGigO,OAAS,CAAA,EAAA,CAAMhtJ,EAAE,CAACjzE,CAAE,CAAA,CAAGigO,OAASK,CAAAA,OAAAA,CAAQ13M,EAAE,CAAC5oB,CAAE,CAAA,CAAA,EAC1F,CACF,EACF,CACF,CACA,MAAMugO,YAAAA,CAAe,CAACxgO,MAAAA,CAAQ4yB,CAAGrzB,CAAAA,CAAAA,GAAAA,CAC/BwgO,MAAOv3N,CAAAA,GAAG,CAACjJ,CAAAA,CAAE+U,CAAC,CAAE/U,CAAAA,CAAEyc,CAAC,CAAEzc,CAAE4c,CAAAA,CAAC,CAAE5c,CAAAA,CAAEigB,CAAC,CAAA,CAAEnf,SAAS,EAAA,CACxCL,MAAO4mB,CAAAA,MAAM,CAACgM,CAAAA,CAAGmtM,MAAQ7jN,CAAAA,IAAAA,CAAKgC,GAAG,EACnC,CACA,CAAA,MAAMuiN,UAMJ,CAAA,OAAOC,aAAc1gO,CAAAA,MAAM,CAAE4yB,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE,CACpCw6N,YAAAA,CAAaV,MAAQltM,CAAAA,CAAAA,CAAGrzB,CACxBwvB,CAAAA,CAAAA,IAAAA,CAAK3D,MAAM,CAAC5iB,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CACtBumB,CAAAA,CAAAA,IAAAA,CAAKtD,WAAW,CAACjjB,GAAG,CAACxC,CAAEsO,CAAAA,CAAC,CAAG,CAAA,CAAGtO,CAAEgW,CAAAA,CAAC,CAAG,CAAA,CAAGhW,CAAEmW,CAAAA,CAAC,CAAG,CAAA,CAAA,CAC7Cnc,MAAO8uB,CAAAA,sBAAsB,CAACC,IAAM+wM,CAAAA,MAAAA,EACtC,CACAO,OAAAA,CAAQ98N,IAAI,CAAEo9N,WAAc,CAAA,QAAQ,CAAE,CACpC,OAAO,IAAI,CAACC,UAAU,CAACD,WAAAA,CAAAA,EAAcv8E,UAAWrlF,CAAAA,IAAAA,CAAK,CAACnsC,EAAIA,CAAErvB,CAAAA,IAAI,GAAKA,IAAAA,CAAAA,EAAOyrC,OAC9E,CACA4xL,UAAWr9N,CAAAA,IAAI,CAAE,CACf,OAAO,IAAI,CAACo2C,QAAQ,CAAColB,IAAI,CAAC,CAAC38D,EAAIA,CAAEmB,CAAAA,IAAI,GAAKA,IAAAA,CAC5C,CACAs9N,OAAAA,CAAQt9N,IAAI,CAAEyrC,OAAO,CAAE,CACrB,IAAI,CAAC4xL,UAAU,CAAC,QAAA,CAAA,CAAUx8E,UAAU,CAACrjJ,IAAI,CAAC,CACxC2W,IAAAA,CAAM,OACNnU,CAAAA,IAAAA,CACAyrC,OACAyY,CAAAA,QAAAA,CAAU,CACZ,CACF,EAAA,CACAq5K,UAAWluM,CAAAA,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE1G,CAAC,CAAE,CACrB,OAAO,IAAI6gO,aAAc,CAAA,IAAI,CAAEvtM,CAAAA,CAAGrzB,CAAGyG,CAAAA,CAAAA,CAAG1G,CAC1C,CAAA,CACAyhO,QAAS/gO,CAAAA,MAAM,CAAEghO,IAAI,CAAE,CACrB,IAAIC,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CAAIC,GAAIC,EAAIC,CAAAA,EAAAA,CACxB,IAAIl8N,KAAAA,CAAQ,IACZ,CAAA,MAAMkP,CAAI,CAAA,IAAI,CAAC+rN,OAAO,CAAC,GAAA,CAAA,CACvB,MAAMrkN,CAAAA,CAAI,IAAI,CAACqkN,OAAO,CAAC,GACvB,CAAA,CAAA,MAAMlkN,CAAI,CAAA,IAAI,CAACkkN,OAAO,CAAC,GAAA,CAAA,CACvB,MAAMx5M,EAAAA,CAAK,IAAI,CAACw5M,OAAO,CAAC,WACxB,MAAMv5M,EAAAA,CAAK,IAAI,CAACu5M,OAAO,CAAC,SACxB,CAAA,CAAA,MAAMt5M,EAAK,CAAA,IAAI,CAACs5M,OAAO,CAAC,SAAA,CAAA,CACxB,IAAI,IAAIpgO,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAE,CAAA,CACrC,GAAI+gO,IAAAA,EAAQ,CAACA,IAAAA,CAAK/gO,CAAI,CAAA,CAAA,CACpB,QACF,CACA,MAAM2/K,EAAKtrK,CAAAA,CAAC,CAACrU,CAAAA,CAAE,CACf,MAAM4/K,EAAK7jK,CAAAA,CAAC,CAAC/b,CAAAA,CAAE,CACf,MAAM6/K,EAAK3jK,CAAAA,CAAC,CAAClc,CAAAA,CAAE,CACf,MAAMsiB,KAAQ/iB,CAAAA,IAAAA,CAAKoU,GAAG,CAACiT,EAAE,CAAC5mB,CAAE,CAAA,CAAE6mB,EAAE,CAAC7mB,CAAE,CAAA,CAAE8mB,EAAE,CAAC9mB,CAAAA,CAAE,CAC1C,CAAA,GAAI,CAACoY,QAAAA,CAASunK,EAAO,CAAA,EAAA,CAACvnK,QAASwnK,CAAAA,EAAAA,CAAAA,EAAO,CAACxnK,QAAAA,CAASynK,EAAO,CAAA,EAAA,CAACznK,QAASkK,CAAAA,KAAAA,CAAAA,CAAQ,CACvE,QACF,CACA,MAAMi/M,QAAW,CAAA,CAAA,CAAMhiO,IAAK0hK,CAAAA,GAAG,CAAC3+I,KAAAA,CAAAA,CAChC,GAAInd,KAAAA,CAAO,CACTA,KAAAA,CAAQ,KACR67N,CAAAA,EAAAA,CAAKrhD,GAAK4hD,QACVN,CAAAA,EAAAA,CAAKrhD,EAAK2hD,CAAAA,QAAAA,CACVL,EAAKrhD,CAAAA,EAAAA,CAAK0hD,QACVJ,CAAAA,EAAAA,CAAKxhD,EAAK4hD,CAAAA,QAAAA,CACVH,EAAKxhD,CAAAA,EAAAA,CAAK2hD,QACVF,CAAAA,EAAAA,CAAKxhD,EAAK0hD,CAAAA,SACZ,CAAO,KAAA,CACLP,EAAKzhO,CAAAA,IAAAA,CAAKmU,GAAG,CAACstN,EAAIrhD,CAAAA,EAAAA,CAAK4hD,QACvBN,CAAAA,CAAAA,EAAAA,CAAK1hO,IAAKmU,CAAAA,GAAG,CAACutN,EAAAA,CAAIrhD,EAAK2hD,CAAAA,QAAAA,CAAAA,CACvBL,GAAK3hO,IAAKmU,CAAAA,GAAG,CAACwtN,EAAAA,CAAIrhD,EAAK0hD,CAAAA,QAAAA,CAAAA,CACvBJ,EAAK5hO,CAAAA,IAAAA,CAAKoU,GAAG,CAACwtN,EAAIxhD,CAAAA,EAAAA,CAAK4hD,QACvBH,CAAAA,CAAAA,EAAAA,CAAK7hO,IAAKoU,CAAAA,GAAG,CAACytN,EAAAA,CAAIxhD,EAAK2hD,CAAAA,QAAAA,CAAAA,CACvBF,EAAK9hO,CAAAA,IAAAA,CAAKoU,GAAG,CAAC0tN,EAAIxhD,CAAAA,EAAAA,CAAK0hD,QACzB,EAAA,CACF,CACA,GAAI,CAACp8N,KAAAA,CAAO,CACVpF,MAAOorB,CAAAA,MAAM,CAAC5iB,GAAG,CAAEy4N,CAAAA,EAAAA,CAAKG,EAAC,EAAK,EAAK,CAACF,CAAAA,EAAAA,CAAKG,EAAC,EAAK,EAAK,CAACF,CAAAA,EAAAA,CAAKG,EAAC,EAAK,EAChEthO,CAAAA,CAAAA,MAAAA,CAAOyrB,WAAW,CAACjjB,GAAG,CAAC,CAAC44N,EAAKH,CAAAA,EAAC,EAAK,EAAK,CAACI,CAAAA,EAAAA,CAAKH,EAAC,EAAK,EAAK,CAACI,CAAAA,EAAAA,CAAKH,EAAC,EAAK,EACvE,EAAA,CACA,OAAO,CAAC/7N,KACV,CACAq8N,aAAczhO,CAAAA,MAAM,CAAEghO,IAAI,CAAE,CAC1B,MAAMpuM,CAAAA,CAAI,IAAI1W,IAAAA,CACd,MAAM3c,CAAAA,CAAI,IAAIuoB,IAAAA,CACd,MAAM9hB,CAAI,CAAA,IAAIkW,IACd,CAAA,MAAMwlN,IAAO,CAAA,IAAI,CAACZ,UAAU,CAACluM,CAAAA,CAAGrzB,CAAGyG,CAAAA,CAAAA,CAAAA,CACnC,IAAIZ,KAAAA,CAAQ,IACZ,CAAA,IAAI,IAAInF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAAA,CAAE,CACrC,GAAI+gO,IAAQ,EAAA,CAACA,IAAK/gO,CAAAA,CAAAA,CAAAA,CAAI,CACpB,QACF,CACAyhO,IAAKx4L,CAAAA,IAAI,CAACjpC,CAAAA,CAAAA,CACV,GAAImF,KAAAA,CAAO,CACTA,KAAAA,CAAQ,KACRq7N,CAAAA,UAAAA,CAAWC,aAAa,CAAC1gO,MAAQ4yB,CAAAA,CAAAA,CAAGrzB,CAAGyG,CAAAA,CAAAA,EACzC,CAAO,KAAA,CACLy6N,UAAWC,CAAAA,aAAa,CAACV,KAAAA,CAAOptM,CAAGrzB,CAAAA,CAAAA,CAAGyG,CACtChG,CAAAA,CAAAA,MAAAA,CAAOuQ,GAAG,CAACyvN,KACb,EAAA,CACF,CACA,OAAO,CAAC56N,KACV,CACAu8N,UAAa,EAAA,CACX,MAAMrtN,CAAAA,CAAI,IAAI,CAAC+rN,OAAO,CAAC,GACvB,CAAA,CAAA,MAAMrkN,CAAI,CAAA,IAAI,CAACqkN,OAAO,CAAC,GAAA,CAAA,CACvB,MAAMlkN,CAAAA,CAAI,IAAI,CAACkkN,OAAO,CAAC,GACvB,CAAA,CAAA,MAAMrgO,MAAS,CAAA,IAAI8Z,YAAa,CAAA,IAAI,CAACynN,SAAS,CAAG,CACjD,CAAA,CAAA,IAAI,IAAIthO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAAA,CAAE,CACrCD,MAAM,CAACC,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGqU,CAAC,CAACrU,CAAAA,CAAE,CACxBD,MAAM,CAACC,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG+b,CAAC,CAAC/b,CAAAA,CAAE,CACxBD,MAAM,CAACC,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGkc,CAAC,CAAClc,CAAE,EAC1B,CACA,OAAOD,MACT,CACA4hO,cAAe5hO,CAAAA,MAAM,CAAEghO,IAAI,CAAE,CAC3B,MAAM1sN,CAAAA,CAAI,IAAI,CAAC+rN,OAAO,CAAC,GACvB,CAAA,CAAA,MAAMrkN,EAAI,IAAI,CAACqkN,OAAO,CAAC,GACvB,CAAA,CAAA,MAAMlkN,CAAI,CAAA,IAAI,CAACkkN,OAAO,CAAC,GAAA,CAAA,CACvB,MAAMx5M,EAAAA,CAAK,IAAI,CAACw5M,OAAO,CAAC,SACxB,CAAA,CAAA,MAAMv5M,EAAK,CAAA,IAAI,CAACu5M,OAAO,CAAC,SAAA,CAAA,CACxB,MAAMt5M,EAAAA,CAAK,IAAI,CAACs5M,OAAO,CAAC,UACxBrgO,CAAAA,MAAAA,CAAOsU,CAAC,CAAG,CACXtU,CAAAA,MAAOgc,CAAAA,CAAC,CAAG,CACXhc,CAAAA,MAAAA,CAAOmc,CAAC,CAAG,CACX,CAAA,IAAIk4D,GAAM,CAAA,CAAA,CACV,IAAI,IAAIp0E,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAE,CAAA,CACrC,GAAI+gO,IAAAA,EAAQ,CAACA,IAAK/gO,CAAAA,CAAAA,CAAAA,CAAI,CACpB,QACF,CACA,MAAM2/K,EAAKtrK,CAAAA,CAAC,CAACrU,CAAAA,CAAE,CACf,MAAM4/K,EAAK7jK,CAAAA,CAAC,CAAC/b,CAAAA,CAAE,CACf,MAAM6/K,EAAK3jK,CAAAA,CAAC,CAAClc,CAAAA,CAAE,CACf,GAAI,CAACoY,QAAAA,CAASunK,EAAO,CAAA,EAAA,CAACvnK,QAASwnK,CAAAA,EAAAA,CAAAA,EAAO,CAACxnK,QAAAA,CAASynK,IAAK,CACnD,QACF,CACA,MAAMnrB,MAAS,CAAA,CAAA,EAAO,CAAA,CAAMn1J,IAAK0hK,CAAAA,GAAG,CAAC1hK,IAAAA,CAAKoU,GAAG,CAACiT,EAAE,CAAC5mB,CAAE,CAAA,CAAE6mB,EAAE,CAAC7mB,CAAE,CAAA,CAAE8mB,EAAE,CAAC9mB,CAAE,CAAA,CAAA,CAAC,CAClED,CAAAA,MAAOsU,CAAAA,CAAC,EAAIsrK,EAAAA,CAAKjrB,MACjB30J,CAAAA,MAAAA,CAAOgc,CAAC,EAAI6jK,EAAKlrB,CAAAA,MACjB30J,CAAAA,MAAAA,CAAOmc,CAAC,EAAI2jK,EAAKnrB,CAAAA,MAAAA,CACjBtgF,GAAOsgF,EAAAA,OACT,CACA30J,MAAAA,CAAO+V,SAAS,CAAC,CAAIs+D,CAAAA,GAAAA,EACvB,CACAwtJ,qBAAAA,CAAsBl9F,KAAK,CAAEm9F,QAAQ,CAAE,CACrC,MAAMlvM,CAAI,CAAA,IAAI1W,IACd,CAAA,MAAM3c,EAAI,IAAIuoB,IAAAA,CACd,MAAM9hB,CAAAA,CAAI,IAAIkW,IAAAA,CACd,MAAMvI,GAAAA,CAAM,IAAIuI,IAAAA,CAChB,MAAMtI,GAAAA,CAAM,IAAIsI,IAAAA,CAChB,MAAMwlN,IAAAA,CAAO,IAAI,CAACZ,UAAU,CAACluM,CAAGrzB,CAAAA,CAAAA,CAAGyG,CACnC,CAAA,CAAA,IAAI,IAAI/F,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAE,CAAA,CACrCyhO,IAAKx4L,CAAAA,IAAI,CAACjpC,CAAAA,CAAAA,CACVugO,YAAaV,CAAAA,MAAAA,CAAQltM,CAAGrzB,CAAAA,CAAAA,CAAAA,CACxBugO,MAAOtiN,CAAAA,IAAI,CAACskN,QAAAA,CAAUhC,MACtBnsN,CAAAA,CAAAA,GAAAA,CAAInL,GAAG,CAACxC,CAAEsO,CAAAA,CAAC,CAAG,CAAC,CAAGtO,CAAAA,CAAAA,CAAEgW,CAAC,CAAG,CAAC,CAAA,CAAGhW,CAAEmW,CAAAA,CAAC,CAAG,CAAC,GACnCvI,GAAIpL,CAAAA,GAAG,CAACxC,CAAAA,CAAEsO,CAAC,CAAG,CAAKtO,CAAAA,CAAAA,CAAEgW,CAAC,CAAG,CAAKhW,CAAAA,CAAAA,CAAEmW,CAAC,CAAG,CACpCwoH,CAAAA,CAAAA,KAAAA,CAAMt6E,SAAS,CAAC0pJ,kBAAkB,CAACpgM,GAAKC,CAAAA,GAAAA,CAAKqsN,UAAY,CAAA,IAAA,CAAMt7F,KAAM40E,CAAAA,gBAAgB,CAAEumB,MAAAA,EACzF,CACF,CACA,IAAIiC,YAAAA,EAAe,CACjB,OAAO,KACT,CACA,IAAIC,OAAU,EAAA,CACZ,MAAMC,QAAAA,CAAW,IACf,CAAA,IAAI,IAAIhiO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAI,CAAA,EAAEA,CAAE,CAAA,CACzB,GAAI,CAAC,IAAI,CAACogO,OAAO,CAAC,CAAC,OAAO,EAAEpgO,CAAAA,CAAE,CAAC,CAAA,CAAG,CAChC,OAAOA,CACT,CACF,CACA,OAAO,EACT,CACA,CAAA,MAAMiiO,KAAQ,CAAA,CACZ,CAAG,CAAA,CAAA,CACH,EAAI,CAAA,CAAA,CACJ,EAAI,CAAA,CACN,CACA,CAAA,OAAOA,KAAK,CAACD,QAAW,EAAA,CAAA,EAAI,CAC9B,CACAE,eAAkB,EAAA,CAChB,MAAMC,UAAAA,CAAa,GAAC97N,EAAAA,CAClB,IAAIqN,GAAAA,CAAMrN,GAAG,CAAC,EAAE,CAChB,IAAIsN,GAAMtN,CAAAA,GAAG,CAAC,CAAA,CAAE,CAChB,IAAI,IAAIrG,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIqG,GAAIpG,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjC,GAAIqG,GAAG,CAACrG,CAAE,CAAA,CAAG0T,GAAKA,CAAAA,GAAAA,CAAMrN,GAAG,CAACrG,CAAE,CAAA,CAC9B,GAAIqG,GAAG,CAACrG,CAAAA,CAAE,CAAG2T,GAAKA,CAAAA,GAAAA,CAAMtN,GAAG,CAACrG,CAAE,EAChC,CACA,OAAO,CACL0T,GAAAA,CACAC,GACF,CACF,CACA,CAAA,MAAMyuN,aAAgB,CAAA,CAAC/tN,CAAG0H,CAAAA,CAAAA,CAAGG,CAC3B,GAAA,CAAA,MAAMmmN,QAAW,CAAChuN,CAChBA,EAAAA,CAAAA,CAAAA,EAAK,IACLA,CAAAA,CAAAA,CAAI,CAACA,CAAIA,CAAAA,CAAAA,EAAK,EAAC,EAAK,WACpBA,CAAI,CAACA,CAAAA,CAAAA,CAAIA,CAAK,EAAA,CAAA,EAAK,QAAA,CACnBA,CAAI,CAACA,CAAAA,CAAAA,CAAIA,CAAK,EAAA,CAAA,EAAK,QAAA,CACnBA,CAAI,CAACA,CAAAA,CAAAA,CAAIA,CAAK,EAAA,CAAA,EAAK,SAAA,CACnB,OAAOA,CACT,CACA,CAAA,OAAO,CAACguN,QAASnmN,CAAAA,CAAAA,CAAAA,EAAM,CAAA,GAAMmmN,QAAStmN,CAAAA,CAAAA,CAAAA,EAAM,CAAA,CAAA,CAAKsmN,QAAShuN,CAAAA,CAAAA,CAC5D,CACA,CAAA,MAAMA,CAAI,CAAA,IAAI,CAAC+rN,OAAO,CAAC,GAAA,CAAA,CACvB,MAAMrkN,CAAAA,CAAI,IAAI,CAACqkN,OAAO,CAAC,GACvB,CAAA,CAAA,MAAMlkN,CAAI,CAAA,IAAI,CAACkkN,OAAO,CAAC,GAAA,CAAA,CACvB,KAAM,CAAE1sN,IAAK4uN,IAAI,CAAE3uN,GAAK4uN,CAAAA,IAAI,CAAE,CAAGJ,UAAW9tN,CAAAA,CAAAA,CAAAA,CAC5C,KAAM,CAAEX,GAAKi7L,CAAAA,IAAI,CAAEh7L,GAAAA,CAAKi7L,IAAI,CAAE,CAAGuzB,UAAAA,CAAWpmN,CAC5C,CAAA,CAAA,KAAM,CAAErI,GAAAA,CAAK8uN,IAAI,CAAE7uN,GAAK8uN,CAAAA,IAAI,CAAE,CAAGN,UAAWjmN,CAAAA,CAAAA,CAAAA,CAC5C,MAAMwmN,KAAAA,CAAQJ,OAASC,IAAO,CAAA,CAAA,CAAI,IAAQA,EAAAA,IAAOD,CAAAA,IAAG,CACpD,CAAA,MAAMK,KAAQh0B,CAAAA,IAAAA,GAASC,IAAO,CAAA,CAAA,CAAI,IAAQA,EAAAA,IAAOD,CAAAA,IAAG,CACpD,CAAA,MAAMi0B,KAAQJ,CAAAA,IAAAA,GAASC,IAAO,CAAA,CAAA,CAAI,IAAQA,EAAAA,IAAOD,CAAAA,IAAG,CACpD,CAAA,MAAMK,KAAQ,CAAA,IAAIz6N,GAClB,CAAA,IAAI,IAAIpI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACshO,SAAS,CAAEthO,CAAAA,EAAAA,CAAI,CACrC,MAAMwqB,EAAKjrB,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,IAAMnU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC,CAAC2E,CAAC,CAACrU,CAAE,CAAA,CAAGsiO,IAAG,EAAKI,KACrD,CAAA,CAAA,CAAA,MAAMj4M,EAAKlrB,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,KAAMnU,IAAKmQ,CAAAA,KAAK,CAAEqM,CAAAA,CAAC,CAAC/b,CAAAA,CAAE,CAAG2uM,IAAG,EAAKg0B,KAAAA,CAAAA,CAAAA,CACrD,MAAMj4M,EAAAA,CAAKnrB,IAAKmU,CAAAA,GAAG,CAAC,IAAA,CAAMnU,IAAKmQ,CAAAA,KAAK,CAAEwM,CAAAA,CAAC,CAAClc,CAAAA,CAAE,CAAGwiO,IAAG,EAAKI,KAAAA,CAAAA,CAAAA,CACrD,MAAMt9N,IAAAA,CAAO88N,cAAc53M,EAAIC,CAAAA,EAAAA,CAAIC,EACnC,CAAA,CAAA,MAAMnW,GAAMsuN,CAAAA,KAAAA,CAAM9gO,GAAG,CAACuD,IACtB,CAAA,CAAA,GAAIiP,GAAK,CAAA,CACPA,GAAIzT,CAAAA,IAAI,CAACd,CAAAA,EACX,CAAO,KAAA,CACL6iO,KAAMt6N,CAAAA,GAAG,CAACjD,IAAAA,CAAM,CACdtF,CAAAA,CACD,EACH,CACF,CACA,MAAMiY,IAAOjZ,CAAAA,KAAAA,CAAM2qB,IAAI,CAACk5M,MAAM5qN,IAAI,EAAA,CAAA,CAAI/H,IAAI,CAAC,CAACN,CAAAA,CAAGC,CAAID,GAAAA,CAAAA,CAAIC,CACvD,CAAA,CAAA,MAAM06F,OAAU,CAAA,IAAIptE,WAAY,CAAA,IAAI,CAACmkM,SAAS,CAC9C,CAAA,IAAIh3N,GAAM,CAAA,CAAA,CACV,IAAI,IAAItK,CAAI,CAAA,CAAA,CAAGA,CAAIiY,CAAAA,IAAAA,CAAKhY,MAAM,CAAE,EAAED,CAAAA,CAAE,CAClC,MAAMuU,IAAMsuN,KAAM9gO,CAAAA,GAAG,CAACkW,IAAI,CAACjY,CAAAA,CAAE,CAC7B,CAAA,IAAI,IAAIumF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIhyE,GAAItU,CAAAA,MAAM,CAAE,EAAEsmF,CAAE,CAAA,CACjCgkB,OAAO,CAACjgG,GAAM,EAAA,CAAA,CAAGiK,GAAG,CAACgyE,CAAE,EACzB,CACF,CACA,OAAOgkB,OACT,CACAu4H,OAAAA,CAAQj/C,KAAK,CAAE,CACb,MAAM5xI,KAAAA,CAAQ,IAAI7pC,GAAAA,CAClB,MAAM26N,UAAAA,CAAa,IAAC79N,EAAAA,CAClB,GAAI+sC,KAAAA,CAAM3pC,GAAG,CAACpD,IAAO,CAAA,CAAA,CACnB,MAAMwV,MAAAA,CAASu3B,KAAMlwC,CAAAA,GAAG,CAACmD,IAAAA,CAAAA,CACzB+sC,KAAMppC,CAAAA,MAAM,CAAC3D,IAAAA,CAAAA,CACb,OAAOwV,MACT,CACA,OAAO,IAAIg2B,WAAAA,CAAYxrC,KACzB,CACA,CAAA,MAAM89N,aAAgB,CAACtoN,MACrBu3B,EAAAA,CAAAA,KAAAA,CAAM1pC,GAAG,CAACmS,MAAOjN,CAAAA,UAAU,CAAEiN,MAAAA,EAC/B,CACA,CAAA,MAAMooN,OAAU,CAAC9oN,IACf,EAAA,CAAA,MAAMja,MAAS,CAAA,IAAIia,IAAKjS,CAAAA,WAAW,CAACg7N,UAAAA,CAAW/oN,IAAKvM,CAAAA,UAAU,CAC9D,CAAA,CAAA,IAAI,IAAIzN,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI6jL,MAAM5jL,MAAM,CAAED,CAAI,EAAA,CAAA,CACnCD,MAAM,CAACC,CAAE,CAAA,CAAGga,IAAI,CAAC6pK,KAAK,CAAC7jL,CAAE,CAAA,EAAC,CAE5BgjO,aAAchpN,CAAAA,IAAAA,CAAKU,MAAM,CAAA,CACzB,OAAO3a,MACT,CACA,CAAA,IAAI,CAAC25C,QAAQ,CAAC/sC,OAAO,CAAEgvC,OACrBA,EAAAA,CAAAA,OAAAA,CAAQwoG,UAAU,CAACx3I,OAAO,CAAEs2N,QAC1B,EAAA,CAAA,GAAIA,QAASl0L,CAAAA,OAAO,CAAE,CACpBk0L,QAASl0L,CAAAA,OAAO,CAAG+zL,OAAAA,CAAQG,QAASl0L,CAAAA,OAAO,EAC7C,CACF,CACF,EAAA,CAAA,EACF,CACAm0L,WAAAA,EAAc,CACZ,IAAI,CAACJ,OAAO,CAAC,IAAI,CAACZ,eAAe,EACnC,EAAA,CAnQAn6N,YAAY2xC,QAAQ,CAAEypL,QAAW,CAAA,EAAE,CAAC,CAClC,IAAI,CAACzpL,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC4nL,SAAS,CAAG,IAAI,CAACX,UAAU,CAAC,QAAU3gL,CAAAA,CAAAA,KAAK,CAChD,IAAI,CAACmjL,QAAQ,CAAGA,SAClB,CAgQF,CAEA,IAAIC,6BAA+B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEpC,CAAC,CAED,IAAIC,4BAAAA,CAA+B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+EpC,CAAC,CAED,IAAIC,IAAAA,CAAO,CACX,CAAA,MAAMC,OAAU,CAAA,IAAIn7N,GACpB,CAAA,MAAMo7N,oBAkBJr6L,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC05F,QAAQ,EAAE15F,OAAAA,EACf,CAAA,IAAI,CAAC05K,UAAU,EAAE15K,OAAAA,GACnB,CApBAphC,WAAAA,CAAYkiC,MAAM,CAAEpiC,GAAG,CAAEg7H,QAAQ,CAAC,CAChC,IAAI,CAAC54F,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC44F,QAAQ,CAAGA,QAChB,CAAA,MAAM4gG,aAAgB,CAAA,IAAIr7N,GAAIy6H,CAAAA,QAAAA,CAAS97D,OAAO,CAAA,CAC9C,MAAMnpB,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CACnDk4F,WAAY,CAAC,sBAAsB,EAAEt6H,GAAAA,CAAI,CAAC,CAC1CyjD,UAAY,CAAA,CACVigB,eAAiBztC,CAAAA,iBACnB,CACAwvC,CAAAA,aAAAA,CAAem2J,aACfj2J,CAAAA,eAAAA,CAAiBi2J,aACjBphG,CAAAA,WAAAA,CAAa,kBACbK,CAAAA,YAAAA,CAAc0gG,4BACd9gG,CAAAA,YAAAA,CAAc+gG,4BAChB,CAAA,CACA,CAAA,IAAI,CAACxgB,UAAU,CAAG,IAAI1+E,UAAWvmF,CAAAA,MAAAA,EACnC,CAKF,CACA,MAAM8lL,kBAcJv6L,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACugG,IAAI,EAAEvgG,OAAAA,EACX,CAAA,IAAI,CAACw6L,eAAe,EAAEx6L,OAAAA,EAAAA,CACtB,IAAI,CAACy6L,qBAAqB,CAACj3N,OAAO,CAAC,IAACswB,EAAOA,IAAKkM,CAAAA,OAAO,EACvD,CAAA,CAAA,IAAI,CAACy6L,qBAAqB,CAACh7N,KAAK,GAClC,CACAi7N,uBAAAA,CAAwBC,YAAY,CAAE,CACpC,IAAI,CAACC,wBAAwB,CAACR,OAAAA,CAAAA,CAC9B,GAAIO,YAAAA,CAAcP,OAAQh7N,CAAAA,GAAG,CAAC,YAAA,CAAc,EAC5C,CAAA,CAAA,MAAMV,GAAM7I,CAAAA,KAAAA,CAAM2qB,IAAI,CAAC45M,OAAQr8K,CAAAA,OAAO,EAAIrgD,CAAAA,CAAAA,GAAG,CAAC,CAAC,CAACy6H,CAAG7hI,CAAAA,CAAAA,CAAE,GAAG,CAAC,EAAE6hI,CAAAA,CAAE,CAAC,EAAE7hI,CAAE,CAAA,CAAC,CAAEI,CAAAA,IAAI,CAAC,GAAA,CAAA,CAC1E,IAAIo9B,IAAAA,CAAO,IAAI,CAAC2mM,qBAAqB,CAAC7hO,GAAG,CAAC8F,GAC1C,CAAA,CAAA,GAAI,CAACo1B,IAAAA,CAAM,CACT,MAAM4lG,QAAW,CAAA,IAAImpE,eACrB,IAAI,CAACg4B,iBAAiB,CAACnhG,QACvB0gG,CAAAA,CAAAA,OAAAA,CAAQ52N,OAAO,CAAC,CAAClN,CAAAA,CAAG6hI,CAAIuB,GAAAA,QAAAA,CAAS44B,SAAS,CAACn6B,CAAG7hI,CAAAA,CAAAA,CAAAA,CAAAA,CAC9Cw9B,IAAO,CAAA,IAAIumM,oBAAqB,CAAA,IAAI,CAACv5L,MAAM,CAAEpiC,GAAAA,CAAKg7H,QAClD,CAAA,CAAA,IAAI,CAAC+gG,qBAAqB,CAACr7N,GAAG,CAACV,GAAAA,CAAKo1B,IACtC,EAAA,CACAsmM,OAAQ36N,CAAAA,KAAK,EACb,CAAA,OAAOq0B,IACT,CACA,OAAOgnM,UAAAA,CAAWh6L,MAAM,CAAE,CACxB,MAAMi6L,iBAAoBR,CAAAA,kBAAAA,CAAmBS,YAAY,CACzD,MAAMC,aAAAA,CAAgB,IAAIvqN,YAAAA,CAAa,EAAKqqN,CAAAA,iBAAAA,CAAAA,CAC5C,MAAMG,WAAAA,CAAc,IAAIlnM,WAAAA,CAAY,CAAI+mM,CAAAA,iBAAAA,CAAAA,CACxC,IAAI,IAAIlkO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkkO,iBAAmB,CAAA,EAAElkO,CAAE,CAAA,CACxCokO,aAAc77N,CAAAA,GAAG,CAAC,CAChB,CAAC,CAAA,CACD,CAAC,CAAA,CACDvI,CACA,CAAA,CAAA,CACA,CAAC,CAAA,CACDA,CACA,CAAA,CAAA,CACA,CACAA,CAAAA,CAAAA,CACA,CAAC,CAAA,CACD,CACAA,CAAAA,CAAAA,CACD,CAAEA,CAAAA,CAAI,IACP,MAAM6P,CAAAA,CAAI7P,CAAI,CAAA,CAAA,CACdqkO,WAAY97N,CAAAA,GAAG,CAAC,CACd,CAAIsH,CAAAA,CAAAA,CACJ,CAAIA,CAAAA,CAAAA,CACJ,CAAIA,CAAAA,CAAAA,CACJ,CAAIA,CAAAA,CAAAA,CACJ,CAAIA,CAAAA,CAAAA,CACJ,CAAIA,CAAAA,CAAAA,CACL,CAAE7P,CAAAA,CAAI,CACT,EAAA,CACA,MAAM0pI,IAAAA,CAAO,IAAIH,IAAAA,CAAKt/F,MACtBy/F,CAAAA,CAAAA,IAAAA,CAAKQ,YAAY,CAACk6F,aAAAA,CAAe,CACjC16F,CAAAA,CAAAA,IAAAA,CAAKa,UAAU,CAAC85F,WAChB36F,CAAAA,CAAAA,IAAAA,CAAKt2F,MAAM,EAAA,CACX,OAAOs2F,IACT,CACA,OAAO46F,qBAAsBr6L,CAAAA,MAAM,CAAEs6L,UAAU,CAAE,CAC/C,MAAML,iBAAAA,CAAoBR,kBAAmBS,CAAAA,YAAY,CACzD,MAAM7C,SAAY/hO,CAAAA,IAAAA,CAAK0V,IAAI,CAACsvN,WAAaL,iBAAqBA,CAAAA,CAAAA,iBAAAA,CAC9D,MAAMM,iBAAAA,CAAoBlD,SAAY4C,CAAAA,iBAAAA,CACtC,MAAMlqF,SAAAA,CAAY,IAAI78G,WAAAA,CAAYqnM,iBAClC,CAAA,CAAA,IAAI,IAAIxkO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIwkO,iBAAmB,CAAA,EAAExkO,CAAE,CAAA,CACxCg6I,SAAS,CAACh6I,CAAE,CAAA,CAAGA,CAAIkkO,CAAAA,kBACrB,CACA,MAAMlnL,YAAe,CAAA,IAAIvD,aAAaxP,MAAQ,CAAA,CAC5C,CACE4P,QAAAA,CAAUna,eACVoa,CAAAA,UAAAA,CAAY,CACZriC,CAAAA,IAAAA,CAAM+qB,WACNgY,CAAAA,KAAAA,CAAO,IACT,CAAA,CACD,CACD,CAAA,MAAMmpL,eAAkB,CAAA,IAAIxrL,YAAalO,CAAAA,MAAAA,CAAQ+S,YAAcwnL,CAAAA,iBAAAA,CAAmB,CAChF/rL,KAAAA,CAAOziB,aACPhc,CAAAA,IAAAA,CAAMggI,SAAUt/H,CAAAA,MAAM,CACxB,CAAA,CACA,OAAOipN,eACT,CACA,WAAWQ,YAAAA,EAAe,CACxB,OAAO,GACT,CACA,IAAI7C,SAAAA,EAAY,CACd,OAAO,IAAI,CAACnB,UAAU,CAACmB,SACzB,CACA0C,iBAAAA,CAAkBnhG,QAAQ,CAAE,EAC5BkhG,wBAAyBh9J,CAAAA,OAAO,CAAE,EAClC09J,eAAAA,CAAgBzkL,KAAK,CAAE,CACrB,OAAOn+B,IAAAA,CAAK9D,IACd,CACAq0C,aAAAA,CAAc9uD,IAAI,CAAEwC,MAAM,CAAEZ,IAAI,CAAE8U,IAAI,CAAE,CACtC,OAAO,IAAI2xB,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CAC9B3mC,IAAAA,CAAMA,IACNqiB,CAAAA,KAAAA,CAAOzgB,IAAKmP,CAAAA,CAAC,CACbuR,MAAAA,CAAQ1gB,IAAK6W,CAAAA,CAAC,CACdjW,MAAAA,CAAQA,MACR2lC,CAAAA,OAAAA,CAAS,KACTD,CAAAA,OAAAA,CAAS,KACTkC,CAAAA,SAAAA,CAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,cACX8W,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACV,CAAA,GAAGna,IAAO,CAAA,CACRy2B,MAAQ,CAAA,CACNz2B,IACD,CACH,CAAI,CAAA,EACN,CACF,CAAA,CACAnN,WAAc,EAAA,EAzHd9E,WAAYkiC,CAAAA,MAAM,CAAEk2L,UAAU,CAAC,CAC7B,IAAI,CAACn2L,EAAE,CAAGs5L,IACV,EAAA,CAAA,IAAI,CAACM,qBAAqB,CAAG,IAAIx7N,GACjC,CAAA,IAAI,CAAC6hC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACk2L,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACuE,OAAO,CAAGvE,UAAWuB,CAAAA,UAAU,EACpC,CAAA,IAAI,CAAC5yM,IAAI,CAAG,IAAI7D,WAAAA,CAChBk1M,UAAWW,CAAAA,QAAQ,CAAC,IAAI,CAAChyM,IAAI,CAC7B,CAAA,IAAI,CAAC46G,IAAI,CAAGg6F,kBAAmBO,CAAAA,UAAU,CAACh6L,MAAAA,CAC1C,CAAA,IAAI,CAAC05L,eAAe,CAAGD,kBAAmBY,CAAAA,qBAAqB,CAACr6L,MAAAA,CAAQk2L,UAAWmB,CAAAA,SAAS,CAC5F,CAAA,IAAI,CAAC53F,IAAI,CAACl6E,WAAW,EACrB,CAAA,IAAI,CAACk6E,IAAI,CAAC56G,IAAI,CAAC/vB,IAAI,CAAC,IAAI,CAAC+vB,IAAI,EAC/B,CA8GF,CAEA,MAAM61M,SAAAA,CAAY,CAACxE,UAAAA,CAAYyE,SAC7B,GAAA,CAAA,MAAM7kO,MAAS,CAAA,EAAE,CACjB,IAAI,IAAIC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI4kO,SAAW,CAAA,EAAE5kO,CAAE,CAAA,CAChCD,MAAOe,CAAAA,IAAI,CAACq/N,UAAAA,CAAWC,OAAO,CAAC,CAAC,OAAO,EAAEpgO,CAAAA,CAAE,CAAC,CAAA,EAC9C,CACA,OAAOD,MACT,CACA,CAAA,MAAM8kO,cAAuBnB,SAAAA,kBAAAA,CAyB3Bv6L,OAAU,EAAA,CACR,IAAI,CAAC27L,YAAY,EAAE37L,OACnB,EAAA,CAAA,IAAI,CAAC47L,iBAAiB,EAAE57L,OACxB,EAAA,CAAA,IAAI,CAAC67L,iBAAiB,EAAE77L,OACxB,EAAA,CAAA,IAAI,CAAC87L,aAAa,EAAE97L,SACpB,CAAA,IAAI,CAAC+7L,aAAa,EAAE/7L,OAAAA,EACpB,CAAA,IAAI,CAACg8L,cAAc,EAAEh8L,OAAAA,EACrB,CAAA,IAAI,CAACi8L,eAAe,EAAEj8L,OAAAA,EAAAA,CACtB,KAAK,CAACA,OACR,GAAA,CACA46L,wBAAyBh9J,CAAAA,OAAO,CAAE,CAChCA,OAAQx+D,CAAAA,GAAG,CAAC,UAAA,CAAY,IAAI,CAACw5N,OAAO,EACtC,CACAiC,iBAAkBnhG,CAAAA,QAAQ,CAAE,CAC1B,IAAI,CAACkhG,wBAAwB,CAAClhG,QAAS97D,CAAAA,OAAO,CAC9C87D,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,YAAc,CAAA,IAAI,CAACo7H,YAAY,CACrDjiG,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,YAAc,CAAA,IAAI,CAACq7H,iBAAiB,CAC1DliG,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,YAAc,CAAA,IAAI,CAACs7H,iBAAiB,CAC1D,CAAA,GAAI,IAAI,CAACC,aAAa,CAAEpiG,QAASn5B,CAAAA,YAAY,CAAC,cAAA,CAAgB,IAAI,CAACu7H,aAAa,CAAA,CAChF,GAAI,IAAI,CAACC,aAAa,CAAEriG,QAAAA,CAASn5B,YAAY,CAAC,cAAgB,CAAA,IAAI,CAACw7H,aAAa,CAAA,CAChF,GAAI,IAAI,CAACC,cAAc,CAAEtiG,QAAAA,CAASn5B,YAAY,CAAC,eAAiB,CAAA,IAAI,CAACy7H,cAAc,CACnF,CAAA,GAAI,IAAI,CAACC,eAAe,CAAEviG,QAASn5B,CAAAA,YAAY,CAAC,gBAAA,CAAkB,IAAI,CAAC07H,eAAe,EACxF,CACAX,eAAAA,CAAgBzkL,KAAK,CAAE,CACrB,MAAMr6B,KAAAA,CAAQpmB,IAAK0V,CAAAA,IAAI,CAAC1V,IAAAA,CAAKud,IAAI,CAACkjC,KAClC,CAAA,CAAA,CAAA,MAAMp6B,MAASrmB,CAAAA,IAAAA,CAAK0V,IAAI,CAAC+qC,KAAQr6B,CAAAA,KAAAA,CAAAA,CACjC,OAAO,IAAI9D,IAAK8D,CAAAA,KAAAA,CAAOC,MACzB,CAAA,CACAy/M,eAAgBlF,CAAAA,UAAU,CAAE,CAC1B,MAAMruL,OAAAA,CAAU,IAAI,CAACgzL,YAAY,CACjC,GAAI,CAAChzL,OAAAA,CAAS,CACZ,MACF,CACA,MAAMl3B,UAAaD,CAAAA,YAAAA,CAAaC,UAAU,CAC1C,MAAMZ,IAAAA,CAAO83B,OAAQ1B,CAAAA,IAAI,EACzB,CAAA,MAAMgrL,EAAK+E,CAAAA,UAAAA,CAAWC,OAAO,CAAC,QAC9B,CAAA,CAAA,MAAMC,EAAKF,CAAAA,UAAAA,CAAWC,OAAO,CAAC,QAC9B,CAAA,CAAA,MAAMntJ,EAAKktJ,CAAAA,UAAAA,CAAWC,OAAO,CAAC,QAC9B,CAAA,CAAA,MAAMx3M,EAAKu3M,CAAAA,UAAAA,CAAWC,OAAO,CAAC,SAC9B,CAAA,CAAA,MAAMkF,KAAQ,CAAA,kBAAA,CACd,IAAI,IAAItlO,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAE,CAAA,CACrC,MAAMV,CAAAA,CAAI87N,EAAE,CAACp7N,EAAE,CAAGslO,KAAAA,CAAQ,EAC1B,CAAA,MAAMzxN,CAAIwsN,CAAAA,EAAE,CAACrgO,CAAAA,CAAE,CAAGslO,KAAAA,CAAQ,EAC1B,CAAA,MAAMz1N,CAAIojE,CAAAA,EAAE,CAACjzE,CAAAA,CAAE,CAAGslO,KAAAA,CAAQ,EAC1B,CAAA,MAAM11N,CAAI,CAAA,CAAA,EAAK,CAAA,CAAIrQ,IAAK0hK,CAAAA,GAAG,CAAC,CAACr4I,EAAE,CAAC5oB,EAAE,CAAA,CAClCga,CAAAA,IAAI,CAACha,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG4a,UAAAA,CAAWtb,CAC7B0a,CAAAA,CAAAA,IAAI,CAACha,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG4a,UAAW/G,CAAAA,CAAAA,CAC7BmG,CAAAA,IAAI,CAACha,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG4a,UAAAA,CAAW/K,CAC7BmK,CAAAA,CAAAA,IAAI,CAACha,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG4a,UAAAA,CAAWhL,CAC/B,EAAA,CACAkiC,OAAQV,CAAAA,MAAM,GAChB,CACAm0L,mBAAoBpF,CAAAA,UAAU,CAAE,CAC9B,MAAMvlN,UAAAA,CAAaD,YAAaC,CAAAA,UAAU,CAC1C,GAAI,CAAC,IAAI,CAACmqN,iBAAiB,CAAE,CAC3B,MACF,CACA,MAAMS,KAAAA,CAAQ,IAAI,CAACT,iBAAiB,CAAC30L,IAAI,EAAA,CACzC,MAAMq1L,YAAAA,CAAe,IAAI5rN,YAAAA,CAAa2rN,KAAM9qN,CAAAA,MAAM,CAClD,CAAA,MAAMgrN,KAAQ,CAAA,IAAI,CAACV,iBAAiB,CAAC50L,IAAI,EACzC,CAAA,MAAMzd,CAAI,CAAA,IAAI1W,IACd,CAAA,MAAM3c,CAAI,CAAA,IAAIuoB,IACd,CAAA,MAAM9hB,EAAI,IAAIkW,IAAAA,CACd,MAAMwlN,IAAAA,CAAOtB,UAAWU,CAAAA,UAAU,CAACluM,CAAAA,CAAGrzB,CAAGyG,CAAAA,CAAAA,CAAAA,CACzC,IAAI,IAAI/F,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACshO,SAAS,CAAEthO,CAAAA,EAAAA,CAAI,CACrCyhO,IAAAA,CAAKx4L,IAAI,CAACjpC,CACVV,CAAAA,CAAAA,CAAAA,CAAEc,SAAS,EAAA,CACX,GAAId,CAAAA,CAAEigB,CAAC,CAAG,CAAA,CAAG,CACXjgB,CAAAA,CAAEwW,SAAS,CAAC,CAAC,CAAA,EACf,CACA2vN,YAAY,CAACzlO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG2yB,CAAAA,CAAEte,CAC5BoxN,CAAAA,YAAY,CAACzlO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG2yB,CAAAA,CAAE5W,CAC5B0pN,CAAAA,YAAY,CAACzlO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG2yB,CAAEzW,CAAAA,CAAC,CAC7BspN,KAAK,CAACxlO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG4a,UAAWtb,CAAAA,CAAAA,CAAE+U,CAAC,CAAA,CAAIuG,UAAWtb,CAAAA,CAAAA,CAAEyc,CAAC,CAAA,EAAK,EACxD2pN,CAAAA,KAAK,CAAC1lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG4a,WAAW7U,CAAEsO,CAAAA,CAAC,CACjCqxN,CAAAA,KAAK,CAAC1lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG4a,UAAW7U,CAAAA,CAAAA,CAAEgW,CAAC,CACjC2pN,CAAAA,KAAK,CAAC1lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG4a,UAAAA,CAAW7U,CAAEmW,CAAAA,CAAC,CACjCwpN,CAAAA,KAAK,CAAC1lO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG4a,UAAAA,CAAWtb,CAAE4c,CAAAA,CAAC,EACnC,CACA,IAAI,CAAC6oN,iBAAiB,CAAC3zL,MAAM,EAAA,CAC7B,IAAI,CAAC4zL,iBAAiB,CAAC5zL,MAAM,GAC/B,CACAu0L,YAAAA,CAAaxF,UAAU,CAAE,CACvB,MAAMyF,UAAa,CAAA,IAAI,CAACX,aAAa,CAAC70L,IAAI,GAC1C,MAAMy1L,UAAAA,CAAa,IAAI,CAACX,aAAa,EAAE90L,IACvC,EAAA,CAAA,MAAM01L,WAAc,CAAA,IAAI,CAACX,cAAc,EAAE/0L,IAAAA,EAAAA,CACzC,MAAM21L,YAAAA,CAAe,IAAI,CAACX,eAAe,EAAEh1L,IAC3C,EAAA,CAAA,MAAMw0L,SAAY,CAAA,CAChB,CAAG,CAAA,CAAA,CACH,CAAG,CAAA,CAAA,CACH,CAAG,CAAA,EACL,CAAC,CAAC,IAAI,CAAC7C,OAAO,CAAC,CACf,MAAMnsN,GAAAA,CAAM+uN,SAAUxE,CAAAA,UAAAA,CAAYyE,SAAY,CAAA,CAAA,CAAA,CAC9C,MAAMoB,GAAAA,CAAM,CAAC,CAAK,EAAA,EAAC,EAAK,CAAA,CACxB,MAAMC,GAAAA,CAAM,CAAC,CAAK,EAAA,EAAC,EAAK,CAAA,CACxB,MAAMC,OAAAA,CAAU,IAAIrsN,YAAAA,CAAa,CACjC,CAAA,CAAA,MAAMssN,MAAS,CAAA,IAAIhpM,WAAY+oM,CAAAA,OAAAA,CAAQxrN,MAAM,CAAA,CAC7C,MAAMrb,CAAAA,CAAI,IAAIL,KAAAA,CAAM4lO,SAAY,CAAA,CAAA,CAAA,CAAG5xE,IAAI,CAAC,CACxC,CAAA,CAAA,IAAI,IAAIhzJ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAImgO,UAAWmB,CAAAA,SAAS,CAAE,EAAEthO,CAAE,CAAA,CAC3C,IAAI,IAAIumF,EAAI,CAAGA,CAAAA,CAAAA,CAAIq+I,SAAW,CAAA,EAAEr+I,CAAE,CAAA,CAChClnF,CAAC,CAACknF,CAAI,CAAA,CAAA,CAAE,CAAG3wE,GAAG,CAAC2wE,CAAAA,CAAE,CAACvmF,CAAAA,CAAE,CACpBX,CAAC,CAACknF,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG3wE,GAAG,CAAC2wE,CAAIq+I,CAAAA,SAAAA,CAAU,CAAC5kO,CAAAA,CAAE,CACpCX,CAAC,CAACknF,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG3wE,GAAG,CAAC2wE,CAAAA,CAAIq+I,SAAY,CAAA,CAAA,CAAE,CAAC5kO,CAAAA,EAAE,CAE1C,IAAI2T,GAAAA,CAAMtU,CAAC,CAAC,CAAE,CAAA,CACd,IAAI,IAAIknF,CAAI,CAAA,CAAA,CAAGA,CAAIq+I,CAAAA,SAAAA,CAAY,CAAG,CAAA,EAAEr+I,EAAE,CACpC5yE,GAAAA,CAAMpU,IAAKoU,CAAAA,GAAG,CAACA,GAAAA,CAAKpU,IAAKma,CAAAA,GAAG,CAACra,CAAC,CAACknF,CAAAA,CAAE,CACnC,EAAA,CACA,GAAI5yE,GAAAA,GAAQ,CAAG,CAAA,CACb,QACF,CACA,IAAI,IAAI4yE,CAAI,CAAA,CAAA,CAAGA,CAAIq+I,CAAAA,SAAAA,CAAW,EAAEr+I,CAAAA,CAAE,CAChClnF,CAAC,CAACknF,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGhnF,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,IAAKmU,CAAAA,GAAG,CAACsyN,GAAAA,CAAKzmO,IAAKmQ,CAAAA,KAAK,CAAErQ,CAAAA,CAAC,CAACknF,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG5yE,GAAAA,CAAM,EAAM,CAAA,EAAE,EAAKqyN,GAAAA,CAAM,EAC7F3mO,CAAAA,CAAAA,CAAAA,CAAAA,CAAC,CAACknF,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGhnF,IAAAA,CAAKoU,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmU,GAAG,CAACuyN,GAAK1mO,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC,CAACrQ,CAAC,CAACknF,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG5yE,GAAM,CAAA,EAAA,CAAM,EAAE,EAAKsyN,GAAM,CAAA,EAAA,CAAA,CAAA,CAC7F5mO,CAAAA,CAAC,CAACknF,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGhnF,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,IAAKmU,CAAAA,GAAG,CAACsyN,GAAAA,CAAKzmO,IAAKmQ,CAAAA,KAAK,CAAErQ,CAAAA,CAAC,CAACknF,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG5yE,GAAAA,CAAM,EAAM,CAAA,EAAE,EAAKqyN,GAAAA,CAAM,MAC/F,CACAE,OAAO,CAAC,CAAA,CAAE,CAAGvyN,GACbiyN,CAAAA,UAAU,CAAC5lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGmmO,MAAM,CAAC,CAAA,CAAE,CACjCP,UAAU,CAAC5lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,CAAE,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,CAAA,CAAE,EAAI,EAAA,CAAKA,CAAC,CAAC,CAAE,CACtDumO,CAAAA,UAAU,CAAC5lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,CAAA,CAAE,EAAI,EAAA,CAAKA,CAAC,CAAC,CAAE,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,CAAA,CAAE,CACtDumO,UAAU,CAAC5lO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,CAAA,CAAE,EAAI,EAAA,CAAKA,CAAC,CAAC,CAAE,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,CAAA,CAAE,CACtD,GAAI,IAAI,CAAC0iO,OAAO,CAAG,CAAG,CAAA,CACpB8D,UAAU,CAAC7lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,CAAA,CAAE,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,CACxDwmO,UAAU,CAAC7lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAA,CAAG,CACzDwmO,UAAU,CAAC7lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CACzDwmO,CAAAA,UAAU,CAAC7lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,CACzD,GAAI,IAAI,CAAC0iO,OAAO,CAAG,CAAA,CAAG,CACpB+D,WAAW,CAAC9lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,EAAA,CAAG,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAC1DymO,CAAAA,WAAW,CAAC9lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,CAC1DymO,WAAW,CAAC9lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,CAC1DymO,WAAW,CAAC9lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,GAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,CAC1D0mO,YAAY,CAAC/lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAC3D0mO,CAAAA,YAAY,CAAC/lO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGX,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,CAC3D0mO,YAAY,CAAC/lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,GAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,CAC3D0mO,YAAY,CAAC/lO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGX,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,IAAG,CAC7D,KAAO,CACLymO,WAAW,CAAC9lO,CAAAA,CAAE,CAAGX,CAAC,CAAC,EAAA,CAAG,EAAI,EAAA,CAAKA,CAAC,CAAC,EAAG,CAAA,EAAI,EAAKA,CAAAA,CAAC,CAAC,EAAA,EAAG,CAEtD,CACF,CACA,IAAI,CAAC4lO,aAAa,CAAC7zL,MAAM,EACzB,CAAA,IAAI,CAAC8zL,aAAa,EAAE9zL,MACpB,EAAA,CAAA,IAAI,CAAC+zL,cAAc,EAAE/zL,MACrB,EAAA,CAAA,IAAI,CAACg0L,eAAe,EAAEh0L,MACxB,GAAA,CAxKArpC,WAAYkiC,CAAAA,MAAM,CAAEk2L,UAAU,CAAC,CAC7B,KAAK,CAACl2L,MAAQk2L,CAAAA,UAAAA,CAAAA,CACd,MAAMmB,SAAAA,CAAYnB,UAAWmB,CAAAA,SAAS,CACtC,MAAMp8N,IAAO,CAAA,IAAI,CAACu/N,eAAe,CAACnD,SAAAA,CAClC,CAAA,IAAI,CAACwD,YAAY,CAAG,IAAI,CAAC1yK,aAAa,CAAC,YAAA,CAAcr5B,mBAAqB7zB,CAAAA,IAAAA,CAC1E,CAAA,IAAI,CAAC6/N,iBAAiB,CAAG,IAAI,CAAC3yK,aAAa,CAAC,YAAA,CAAch3B,oBAAqBl2B,IAC/E,CAAA,CAAA,IAAI,CAAC8/N,iBAAiB,CAAG,IAAI,CAAC5yK,aAAa,CAAC,YAAcr5B,CAAAA,mBAAAA,CAAqB7zB,IAC/E,CAAA,CAAA,IAAI,CAACmgO,eAAe,CAAClF,UAAAA,CAAAA,CACrB,IAAI,CAACoF,mBAAmB,CAACpF,UACzB,CAAA,CAAA,IAAI,CAAC4B,OAAO,CAAG5B,UAAW4B,CAAAA,OAAO,CACjC,GAAI,IAAI,CAACA,OAAO,CAAG,CAAA,CAAG,CACpB,IAAI,CAACkD,aAAa,CAAG,IAAI,CAAC7yK,aAAa,CAAC,cAAA,CAAgBh3B,mBAAqBl2B,CAAAA,IAAAA,CAAAA,CAC7E,GAAI,IAAI,CAAC68N,OAAO,CAAG,CAAA,CAAG,CACpB,IAAI,CAACmD,aAAa,CAAG,IAAI,CAAC9yK,aAAa,CAAC,cAAgBh3B,CAAAA,mBAAAA,CAAqBl2B,IAC7E,CAAA,CAAA,GAAI,IAAI,CAAC68N,OAAO,CAAG,CAAG,CAAA,CACpB,IAAI,CAACoD,cAAc,CAAG,IAAI,CAAC/yK,aAAa,CAAC,eAAiBh3B,CAAAA,mBAAAA,CAAqBl2B,IAC/E,CAAA,CAAA,IAAI,CAACkgO,eAAe,CAAG,IAAI,CAAChzK,aAAa,CAAC,gBAAkBh3B,CAAAA,mBAAAA,CAAqBl2B,IACnF,EAAA,CAAA,KAAO,CACL,IAAI,CAACigO,cAAc,CAAG,IAAI,CAAC/yK,aAAa,CAAC,eAAA,CAAiB53B,gBAAkBt1B,CAAAA,IAAAA,EAC9E,CACF,CACA,IAAI,CAACygO,YAAY,CAACxF,UACpB,EAAA,CACF,CAkJF,CAEA,MAAM19F,UAAAA,CAAa,CAAC;;;;;AAKpB,CAAC,CACD,MAAMC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;AAoBtB,CAAC,CACD,MAAMN,UAAAA,CAAa,CAAC;;;;;;;;AAQpB,CAAC,CACD,MAAME,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBtB,CAAC,CACD,MAAM8jG,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsB7B,CAAC,CACD,MAAMC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;AAqB7B,CAAC,CACD,MAAMC,SAAY,CAAA,CAAC/+N,MAAOoB,MACxB,GAAA,CAAA,IAAI,MAAMd,GAAAA,IAAOc,OAAO,CACtBpB,KAAAA,CAAM8iC,OAAO,CAACxiC,KAAK8vC,QAAQ,CAAChvC,MAAM,CAACd,GAAI,CAAA,EACzC,CACF,CACA,OAAM0+N,gBAAyB37H,SAAAA,UAAAA,CAC7BW,OAAU,EAAA,CACR,IAAI,CAACi7H,eAAe,KACtB,CACAz+N,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,IAAO,CAAA,CAAA,IAAI,CAACwgO,eAAe,CAAG,KACzC,CACF,CACA,MAAMC,aAAAA,CAAgB,IAAIlkN,IAAAA,CAC1B,MAAMmkN,KAAQ,CAAA,IAAIzqN,IAClB,CAAA,MAAM0qN,eA2CJx9L,CAAAA,OAAAA,EAAU,CACR,KAAM,CAAE8rG,cAAc,CAAE,CAAG,IAAI,CAC/B,KAAM,CAAEpS,QAAQ,CAAE,CAAGoS,cACrBpS,CAAAA,QAAAA,CAAS44B,SAAS,CAAC,UAAYxmB,CAAAA,cAAAA,CAAe1tF,QAAQ,CAAC44K,UAAU,CAAC4B,OAAO,CAACriO,QAAQ,IAClF,KAAM,CAAE26J,YAAY,CAAE,CAAGx3B,QACzBw3B,CAAAA,YAAAA,CAAa54B,IAAI,CAAC54H,MAAM,CAAC,mBACzBwxJ,CAAAA,CAAAA,YAAAA,CAAa74F,IAAI,CAAC34D,MAAM,CAAC,mBAAA,CAAA,CACzBg6H,SAASzvF,MAAM,EAAA,CACf,IAAI,CAACyvK,UAAU,CAAC15K,OAAO,EACvB,CAAA,IAAI,CAAC8Y,UAAU,CAAC9Y,OAAO,GACvB,IAAI,CAACsV,YAAY,CAACtV,OAAO,EACzB,CAAA,IAAI,CAAC2I,OAAO,CAAC3I,OAAO,EAAA,CACpB,IAAI,CAACyU,MAAM,CAACzU,OAAO,GACrB,CACA6iE,MAAOinC,CAAAA,MAAM,CAAE2zF,QAAQ,CAAE,CACvB,KAAM,CAAEC,OAAO,CAAEC,UAAU,CAAE,CAAG,IAAI,CACpC,GAAIA,UAAe,GAAA,SAAA,CAAW,CAC5B,MACF,CACAL,aAAc1gN,CAAAA,MAAM,CAAC6gN,QACrBH,CAAAA,CAAAA,aAAAA,CAAchlN,eAAe,CAACwxH,OAAOwS,OAAO,CAAEihF,KAC9CA,CAAAA,CAAAA,KAAAA,CAAMtmO,SAAS,EAAA,CACf,GAAI0mO,UAAAA,GAAe,UAAYJ,KAAMvpN,CAAAA,YAAY,CAAC0pN,OAAAA,CAAS,MAAO,CAChE,MACF,CACAA,OAAAA,CAAQ9nO,IAAI,CAAC2nO,KAAAA,CAAAA,CACb,MAAMn7H,OAAAA,CAAU,IACd,CAAA,KAAM,CAAEthE,MAAM,CAAE,CAAG,IAAI,CACvB,KAAM,CAAE88L,YAAY,CAAEC,IAAI,CAAE,CAAG,IAAI,CAAC/xF,cAAc,CAAC1tF,QAAQ,CAAC44K,UAAU,CACtEmG,UAAUr8L,MAAO1iC,CAAAA,KAAK,CAAE,CACtBqmB,IAAK84M,KAAMnwN,CAAAA,OAAO,EAClB0wN,CAAAA,SAAAA,CAAWF,aACXG,QAAUF,CAAAA,IAAAA,CAAKG,GAAG,CAACC,IAAI,CACvBC,QAAUL,CAAAA,IAAAA,CAAKG,GAAG,CAACG,IAAI,CACzB,CAAA,CACAr9L,OAAOyV,WAAW,CAAC7oB,aACnBoT,CAAAA,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAAA,CAAWO,OAAO,CAAA,CACvClN,MAAOmV,CAAAA,eAAe,CAAC,IAAA,CAAM,MAC7BnV,MAAOsV,CAAAA,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,CACvC,CAAA,IAAI,CAAC0sK,UAAU,CAAC72G,MAAM,GACxB,CACA,CAAA,IAAI,CAAC/pD,UAAU,CAACukL,eAAe,CAAGj7H,OAAAA,CAClC,IAAI,CAACtpD,UAAU,CAAC+pD,MAAM,GACxB,CArFAjkG,YAAYkiC,MAAM,CAAEgrG,cAAc,CAAC,CACjC,IAAI,CAAC4xF,OAAO,CAAG,IAAI5qN,IACnB,CAAA,IAAI,CAAC6qN,UAAU,CAAG,QAClB,CAAA,IAAI,CAAC78L,MAAM,CAAGA,MACd,CAAA,IAAI,CAACgrG,cAAc,CAAGA,cACtB,CAAA,KAAM,CAAE1tF,QAAQ,CAAE,CAAG0tF,cAAAA,CACrB,MAAMrxI,QAAAA,CAAW,IAAIwE,GAAIo5H,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAQA,CAAAA,MAAAA,CAAO2E,QAAQ,CAAG,OAAS,MAC7E,CAAA,CAAA,CAAA,IAAI,CAACgP,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAACr5C,OAAQ,CAC7Ck4F,UAAAA,CAAY,iBACZM,CAAAA,UAAAA,CACAC,YACAN,CAAAA,UAAAA,CACAE,YACAx0D,CAAAA,cAAAA,CAAgBlqE,SAChBoqE,gBAAkBpqE,CAAAA,QAAAA,CAClB4pE,eAAiB,CAAA,IAAIplE,IAAI,CACvB,CACE,UACAm/C,CAAAA,QAAAA,CAAS44K,UAAU,CAAC4B,OAAO,CAACriO,QAAQ,EACrC,CAAA,CACF,CACD4rD,CAAAA,UAAAA,CAAY,CACVigB,eAAiBztC,CAAAA,iBACnB,CACF,CAAA,CACA,CAAA,IAAI,CAACgU,OAAO,CAAGyV,SAAS6K,aAAa,CAAC,WAAa15B,CAAAA,iBAAAA,CAAmB,IAAI7W,IAAAA,CAAK,EAAI,CAAA,IAAA,CAAA,CACnF,CAAA,IAAI,CAAC48B,YAAY,CAAG,IAAI8G,YAAa,CAAA,CACnCM,WAAa,CAAA,IAAI,CAAC/T,OAAO,CACzB9G,KAAO,CAAA,KACT,CACA,CAAA,CAAA,IAAI,CAACiX,UAAU,CAAG,IAAIskL,gBAAiBt8L,CAAAA,MAAAA,CAAAA,CACvC,IAAI,CAACgY,UAAU,CAAC7B,IAAI,CAAC,IAAI,CAAC3B,YAAY,CAAE,EAAC,CACzC,CAAA,IAAI,CAACwD,UAAU,CAACiR,QAAQ,CAACtqD,KAAK,CAAG,IACjC,CAAA,IAAI,CAACi6M,UAAU,CAAG,IAAI1+E,UAAAA,CAAW,IAAI,CAACvmF,MAAM,CAAA,CAC5C,KAAM,CAAEilF,QAAQ,CAAE,CAAGoS,eACrBpS,QAAS44B,CAAAA,SAAS,CAAC,UAAA,CAAY,KAC/B,KAAM,CAAEpB,YAAY,CAAE,CAAGx3B,QAAAA,CACzBw3B,YAAa54B,CAAAA,IAAI,CAACl5H,GAAG,CAAC,mBAAqB69N,CAAAA,mBAAAA,CAAAA,CAC3C/rE,aAAa74F,IAAI,CAACj5D,GAAG,CAAC,oBAAqB89N,mBAC3CxjG,CAAAA,CAAAA,QAAAA,CAASzvF,MAAM,EAAA,CACfnJ,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,WAAasN,CAAAA,CAAAA,QAAQ,CAAC,IAAI,CAAC7F,OAAO,EACzD,CA6CF,CAEA,SAASy1L,UACP,EAAA,CAAA,MAAMC,MAAS,CAAA,OAAOhkO,IAAS,GAAA,WAAA,EAAeA,IAAQikO,EAAAA,OAAAA,CAAQ,uBAAuBC,UAAU,CAC/F,IAAI7jD,KAAAA,CACJ,IAAI6gD,OACJ,CAAA,IAAInqE,MACJ,CAAA,IAAI96C,QACJ,IAAIkoH,cAAAA,CACJ,IAAIC,eAAAA,CACJ,IAAIC,WAAAA,CAAc,KAClB,CAAA,MAAMC,mBAAqB,CACzBzzN,CAAAA,CAAG,CACH0H,CAAAA,CAAAA,CAAG,EACHG,CAAG,CAAA,CACL,CACA,CAAA,MAAM6rN,oBAAsB,CAC1B1zN,CAAAA,CAAG,CACH0H,CAAAA,CAAAA,CAAG,CACHG,CAAAA,CAAAA,CAAG,CACL,CAAA,CACA,MAAM8rN,QAAW,CAAA,CACf3zN,CAAG,CAAA,CAAA,CACH0H,EAAG,CACHG,CAAAA,CAAAA,CAAG,CACL,CAAA,CACA,MAAM+rN,QAAW,CAAA,CACf5zN,CAAG,CAAA,CAAA,CACH0H,CAAG,CAAA,CAAA,CACHG,CAAG,CAAA,CACL,EACA,IAAIgsN,SAAAA,CACJ,IAAIC,WAAAA,CACJ,MAAMC,OAAU,CAAA,EAAA,CAChB,MAAMC,QAAAA,CAAW,IAAIrpO,KAAMopO,CAAAA,OAAAA,CAAAA,CAASp1E,IAAI,CAAC,CACzC,CAAA,CAAA,MAAMs1E,OAAU,CAAA,IAAItpO,MAAMopO,OAASp1E,CAAAA,CAAAA,IAAI,CAAC,CAAA,CAAA,CACxC,MAAMu1E,UAAa,CAAA,IAAIvpO,KAAMopO,CAAAA,OAAAA,CAAAA,CAASp1E,IAAI,CAAC,CAAA,CAAA,CAC3C,MAAMw1E,YAAAA,CAAe,CAAC1tN,CAAAA,CAAGsV,CAAGq4M,CAAAA,UAAAA,GAAAA,CAC1B,MAAM3tN,CAAKsV,EAAAA,CAAAA,CAAE,CACX,MAAMkxG,EAAIlxG,CAAItV,CAAAA,CAAAA,EAAK,CACnB,CAAA,MAAM4tN,IAAMD,UAAWnnG,CAAAA,CAAAA,CAAAA,CACvB,GAAIonG,GAAAA,CAAM,CAAG,CAAA,CACX5tN,CAAIwmH,CAAAA,CAAAA,CAAI,EACV,CAAO,KAAA,GAAIonG,GAAM,CAAA,CAAA,CAAG,CAClBt4M,CAAIkxG,CAAAA,CAAAA,CAAI,EACV,CAAA,KAAO,CACL,OAAOA,CACT,CACF,CACA,OAAO,CAACxmH,CACV,CAAA,CACA,MAAMs4B,MAAS,CAAA,IAAA,CACb,GAAI,CAACywI,OAAS,CAAC6gD,OAAAA,EAAWA,OAAQzkO,CAAAA,MAAM,GAAK,CAAK,EAAA,CAAC0nO,cAAkB,EAAA,CAACC,eAAiB,CAAA,OACvF,MAAMjoD,EAAAA,CAAKgoD,eAAetzN,CAAC,CAC3B,MAAMurK,EAAAA,CAAK+nD,eAAe5rN,CAAC,CAC3B,MAAM8jK,EAAAA,CAAK8nD,eAAezrN,CAAC,CAC3B,MAAMo+F,EAAAA,CAAKstH,eAAgBvzN,CAAAA,CAAC,CAC5B,MAAMkmG,GAAKqtH,eAAgB7rN,CAAAA,CAAC,CAC5B,MAAMgwH,GAAK67F,eAAgB1rN,CAAAA,CAAC,CAC5B,MAAMkB,QAAU,IAChB,CAAA,GAAI,CAACyqN,WAAAA,EAAetoO,IAAKma,CAAAA,GAAG,CAACimK,EAAAA,CAAKmoD,mBAAmBzzN,CAAC,CAAA,CAAI+I,OAAW7d,EAAAA,IAAAA,CAAKma,GAAG,CAACkmK,EAAAA,CAAKkoD,kBAAmB/rN,CAAAA,CAAC,EAAIqB,OAAW7d,EAAAA,IAAAA,CAAKma,GAAG,CAACmmK,EAAKioD,CAAAA,kBAAAA,CAAmB5rN,CAAC,CAAA,CAAIkB,SAAW7d,IAAKma,CAAAA,GAAG,CAAC4gG,EAAAA,CAAKytH,oBAAoB1zN,CAAC,CAAA,CAAI+I,OAAW7d,EAAAA,IAAAA,CAAKma,GAAG,CAAC6gG,EAAAA,CAAKwtH,mBAAoBhsN,CAAAA,CAAC,CAAIqB,CAAAA,OAAAA,EAAW7d,IAAKma,CAAAA,GAAG,CAACqyH,EAAKg8F,CAAAA,mBAAAA,CAAoB7rN,CAAC,CAAA,CAAIkB,QAAS,CACzT,MACF,CACAyqN,WAAAA,CAAc,KACdC,CAAAA,kBAAAA,CAAmBzzN,CAAC,CAAGsrK,EACvBmoD,CAAAA,kBAAmB/rN,CAAAA,CAAC,CAAG6jK,EACvBkoD,CAAAA,kBAAmB5rN,CAAAA,CAAC,CAAG2jK,EACvBkoD,CAAAA,mBAAoB1zN,CAAAA,CAAC,CAAGimG,EACxBytH,CAAAA,mBAAoBhsN,CAAAA,CAAC,CAAGw+F,EACxBwtH,CAAAA,mBAAAA,CAAoB7rN,CAAC,CAAG6vH,EAAAA,CACxB,IAAI48F,OAAAA,CACJ,IAAIC,OACJ,CAAA,IAAI,IAAI5oO,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAAA,CAAE,CACxB,MAAMqU,CAAIrU,CAAAA,CAAAA,CAAI,EAAIgoO,QAAS3zN,CAAAA,CAAC,CAAG4zN,QAAAA,CAAS5zN,CAAC,CACzC,MAAM0H,CAAI/b,CAAAA,CAAAA,CAAI,EAAIgoO,QAASjsN,CAAAA,CAAC,CAAGksN,QAAAA,CAASlsN,CAAC,CACzC,MAAMG,CAAAA,CAAIlc,EAAI,CAAIgoO,CAAAA,QAAAA,CAAS9rN,CAAC,CAAG+rN,SAAS/rN,CAAC,CACzC,MAAM5D,CAAAA,CAAIjE,EAAIimG,EAAKv+F,CAAAA,CAAAA,CAAIw+F,EAAKr+F,CAAAA,CAAAA,CAAI6vH,EAChC,CAAA,GAAI/rI,CAAM,GAAA,CAAA,CAAG,CACX2oO,OAAUC,CAAAA,OAAAA,CAAUtwN,EACtB,CAAA,KAAO,CACLqwN,OAAUppO,CAAAA,IAAAA,CAAKmU,GAAG,CAACi1N,QAASrwN,CAC5BswN,CAAAA,CAAAA,OAAAA,CAAUrpO,IAAKoU,CAAAA,GAAG,CAACi1N,OAAAA,CAAStwN,CAC9B,EAAA,CACF,CACA,MAAMqgC,WAAAA,CAAc+rL,OAAQzkO,CAAAA,MAAM,CAAG,CACrC,CAAA,MAAM4oO,WAActpO,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,EAAA,CAAIpU,IAAKmU,CAAAA,GAAG,CAAC,EAAA,CAAInU,IAAKmV,CAAAA,KAAK,CAACnV,IAAKoV,CAAAA,IAAI,CAACgkC,WAAAA,CAAc,MACjF,MAAMmwL,WAAAA,CAAc,CAAKD,EAAAA,WAAAA,CAAc,EACvC,GAAIX,SAAAA,EAAWjoO,MAAW04C,GAAAA,WAAAA,CAAa,CACrCuvL,SAAAA,CAAY,IAAI/qM,WAAAA,CAAYwb,aAC9B,CACA,GAAI,CAACwvL,WAAAA,EAAeA,YAAYloO,MAAM,GAAK6oO,WAAa,CAAA,CACtDX,YAAc,IAAIhrM,WAAAA,CAAY2rM,WAChC,EAAA,CAAA,KAAO,CACLX,WAAAA,CAAYn1E,IAAI,CAAC,GACnB,CACA,MAAM3P,KAAQulF,CAAAA,OAAAA,CAAUD,QACxB,GAAItlF,KAAAA,CAAQ,IAAM,CAAA,CAChB,IAAI,IAAIrjJ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI24C,WAAa,CAAA,EAAE34C,CAAE,CAAA,CAClCkoO,SAAS,CAACloO,CAAAA,CAAE,CAAG,CACfmoO,CAAAA,WAAW,CAAC,CAAE,CAAA,GAChB,CACF,CAAO,KAAA,CACL,MAAMY,SAAAA,CAAYxuE,MAAOt6J,CAAAA,MAAM,CAAG,CAAA,CAClCooO,SAASr1E,IAAI,CAAC,CACd,CAAA,CAAA,IAAI,IAAIhzJ,CAAI,CAAA,CAAA,CAAGA,CAAI+oO,CAAAA,SAAAA,CAAW,EAAE/oO,CAAE,CAAA,CAChC,MAAMqU,CAAAA,CAAIkmJ,MAAM,CAACv6J,CAAI,CAAA,CAAA,CAAI,EAAE,CAC3B,MAAM+b,CAAIw+I,CAAAA,MAAM,CAACv6J,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAC3B,MAAMkc,CAAIq+I,CAAAA,MAAM,CAACv6J,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAC3B,MAAMV,EAAIi7J,MAAM,CAACv6J,CAAI,CAAA,CAAA,CAAI,EAAE,CAC3B,MAAMsY,CAAIjE,CAAAA,CAAAA,CAAIimG,GAAKv+F,CAAIw+F,CAAAA,EAAAA,CAAKr+F,CAAI6vH,CAAAA,EAAAA,CAAK48F,OACrC,CAAA,MAAMK,MAASzpO,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGpU,IAAKmQ,CAAAA,KAAK,CAAC,CAAC4I,CAAIhZ,CAAAA,CAAAA,EAAK8oO,OAAU/kF,CAAAA,KAAAA,CAAAA,CAAAA,CAC1D,MAAM4lF,MAAAA,CAAS1pO,IAAKmU,CAAAA,GAAG,CAAC00N,OAAAA,CAAS7oO,KAAK0V,IAAI,CAAC,CAACqD,EAAIhZ,CAAAA,EAAK8oO,OAAU/kF,CAAAA,KAAAA,CAAAA,CAAAA,CAC/D,IAAI,IAAI98D,CAAAA,CAAIyiJ,MAAQziJ,CAAAA,CAAAA,CAAI0iJ,MAAQ,CAAA,EAAE1iJ,CAAE,CAAA,CAClC8hJ,QAAQ,CAAC9hJ,CAAAA,CAAE,GACb,CACF,CACA,MAAM2iJ,QAAAA,CAAWb,QAAS7sL,CAAAA,MAAM,CAAC,CAAC5rC,CAAAA,CAAGC,CAAID,GAAAA,CAAAA,CAAIC,CAAG,CAAA,CAAA,CAAA,CAChD,IAAI,IAAI7P,EAAI,CAAGA,CAAAA,CAAAA,CAAIooO,OAAS,CAAA,EAAEpoO,EAAE,CAC9BuoO,UAAU,CAACvoO,CAAAA,CAAE,CAAGqoO,QAAQ,CAACroO,CAAE,CAAA,CAAGkpO,QAAWJ,CAAAA,WAAAA,GAAgB,EAC3D,CACA,IAAI,IAAI9oO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIooO,QAAS,EAAEpoO,CAAAA,CAAE,CAC9BsoO,OAAO,CAACtoO,CAAE,CAAA,CAAGA,CAAM,GAAA,CAAA,CAAI,CAAIsoO,CAAAA,OAAO,CAACtoO,CAAAA,CAAI,EAAE,CAAGuoO,UAAU,CAACvoO,CAAAA,CAAI,GAAE,CAE/D,MAAMmpO,QAAAA,CAAW9lF,MAAQ+kF,OACzB,CAAA,IAAIgB,EAAK,CAAA,CAAA,CACT,IAAI,IAAIppO,CAAI,CAAA,CAAA,CAAGA,EAAI24C,WAAa,CAAA,EAAE34C,CAAE,CAAA,CAClC,MAAMqU,CAAIqwN,CAAAA,OAAO,CAAC0E,EAAAA,EAAAA,CAAK,CACvB,MAAMrtN,CAAAA,CAAI2oN,OAAO,CAAC0E,EAAK,EAAA,CAAA,CACvB,MAAMltN,CAAAA,CAAIwoN,OAAO,CAAC0E,EAAAA,EAAAA,CAAK,CACvB,MAAM9wN,EAAI,CAACjE,CAAIimG,CAAAA,EAAAA,CAAKv+F,EAAIw+F,EAAKr+F,CAAAA,CAAAA,CAAI6vH,EAAK48F,CAAAA,OAAM,EAAKQ,QAAAA,CACjD,MAAME,GAAAA,CAAM/wN,IAAM,CAClB,CAAA,MAAMgxN,OAAUhB,CAAAA,OAAO,CAACe,GAAI,CAAA,CAAGd,UAAU,CAACc,IAAI,EAAI/wN,CAAI+wN,CAAAA,GAAE,CAAO,GAAA,CAC/DnB,CAAAA,SAAS,CAACloO,CAAE,CAAA,CAAGspO,OACfnB,CAAAA,WAAW,CAACmB,OAAAA,CAAQ,GACtB,CACF,CACA,IAAI,IAAItpO,CAAI,CAAA,CAAA,CAAGA,CAAI8oO,CAAAA,WAAAA,CAAa9oO,CAAI,EAAA,CAAA,CAClCmoO,WAAW,CAACnoO,CAAAA,CAAE,EAAImoO,WAAW,CAACnoO,CAAI,CAAA,CAAA,EAAE,CAEtC,IAAI,IAAIA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI24C,WAAa34C,CAAAA,CAAAA,EAAAA,CAAI,CAClC,MAAM6c,SAAWqrN,SAAS,CAACloO,CAAE,CAAA,CAC7B,MAAMupO,SAAY,CAAA,EAAEpB,WAAW,CAACtrN,SAAS,CACzCgnK,KAAK,CAAC0lD,SAAU,CAAA,CAAGvpO,EACrB,CACA,MAAMwpO,UAAa7pD,CAAAA,EAAAA,CAAKrlE,EAAKslE,CAAAA,EAAAA,CAAKrlE,GAAKslE,EAAK9zC,CAAAA,EAAAA,CAC5C,MAAMyzB,IAAAA,CAAO,CACX,EAAA,CAAA,IAAIroF,CAAI0sG,CAAAA,KAAK,CAAC7jL,CAAAA,CAAE,CAAG,CAAA,CACnB,OAAO0kO,OAAO,CAACvtJ,CAAI,EAAA,CAAA,CAAGmjC,GAAKoqH,OAAO,CAACvtJ,CAAI,EAAA,CAAA,CAAGojC,GAAKmqH,OAAO,CAACvtJ,CAAE,CAAA,CAAG40D,EAAKy9F,CAAAA,UACnE,CACA,CAAA,MAAMC,SAAW,IACf,CAAA,MAAM1pO,MAASyoO,CAAAA,YAAAA,CAAa,EAAG7vL,WAAc,CAAA,CAAA,CAAG,CAAC34C,EAAI,CAACw/J,IAAKx/J,CAAAA,CAAAA,CAAAA,CAAAA,CAC3D,OAAOT,IAAAA,CAAKmU,GAAG,CAACilC,WAAap5C,CAAAA,IAAAA,CAAKma,GAAG,CAAC3Z,MAAAA,CAAAA,CACxC,CACA,CAAA,MAAMigD,MAAQw/G,IAAK7mH,CAAAA,WAAAA,CAAc,CAAM,CAAA,EAAA,CAAA,CAAI8wL,WAAa9wL,WACxD,CAAA,GAAI8mE,OAAS,CAAA,CACX,IAAI,IAAIz/G,CAAI,CAAA,CAAA,CAAGA,EAAI24C,WAAa,CAAA,EAAE34C,CAAE,CAAA,CAClC6jL,KAAK,CAAC7jL,CAAAA,CAAE,CAAGy/G,OAAO,CAACokE,KAAK,CAAC7jL,CAAE,CAAA,EAAC,CAEhC,CACAwnO,MAAAA,CAAOkC,WAAW,CAAC,CACjB7lD,KAAOA,CAAAA,KAAAA,CAAMnpK,MAAM,CACnBslC,KACF,CAAG,CAAA,CACD6jI,MAAMnpK,MAAM,CACb,CACDmpK,CAAAA,KAAAA,CAAQ,KACV,CAAA,CACA2jD,MAAOvlO,CAAAA,gBAAgB,CAAC,SAAW,CAAC+hF,OAClC,EAAA,CAAA,MAAM2lJ,QAAU3lJ,OAAQhqE,CAAAA,IAAI,EAAIgqE,OAAAA,CAChC,GAAI2lJ,OAAQ9lD,CAAAA,KAAK,CAAE,CACjBA,KAAQ,CAAA,IAAI1mJ,WAAYwsM,CAAAA,OAAAA,CAAQ9lD,KAAK,EACvC,CACA,GAAI8lD,OAAAA,CAAQjF,OAAO,CAAE,CACnBA,OAAU,CAAA,IAAI7qN,aAAa8vN,OAAQjF,CAAAA,OAAO,CAC1CmD,CAAAA,WAAAA,CAAc,IACd,CAAA,GAAI8B,OAAQpvE,CAAAA,MAAM,CAAE,CAClB,MAAMqvE,SAAY,CAAA,IAAI/vN,aAAa8vN,OAAQpvE,CAAAA,MAAM,CACjDA,CAAAA,MAAAA,CAAS,IAAI1gJ,YAAa8vN,CAAAA,OAAAA,CAAQpvE,MAAM,CAAE,CAAGqvE,CAAAA,SAAAA,CAAU3pO,MAAM,CAAG,EAAI,CACpE+nO,CAAAA,CAAAA,QAAS3zN,CAAAA,CAAC,CAAGu1N,SAAS,CAAC,CAAE,CACzB5B,CAAAA,QAASjsN,CAAAA,CAAC,CAAG6tN,SAAS,CAAC,CAAA,CAAE,CACzB5B,SAAS9rN,CAAC,CAAG0tN,SAAS,CAAC,EAAE,CACzB3B,QAAS5zN,CAAAA,CAAC,CAAGu1N,SAAS,CAAC,CAAE,CACzB3B,CAAAA,QAAAA,CAASlsN,CAAC,CAAG6tN,SAAS,CAAC,CAAA,CAAE,CACzB3B,SAAS/rN,CAAC,CAAG0tN,SAAS,CAAC,EAAE,CACzB,IAAI,IAAI5pO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI4pO,SAAU3pO,CAAAA,MAAM,CAAG,CAAG,CAAA,EAAED,CAAE,CAAA,CAC3C,MAAMghO,EAAK4I,CAAAA,SAAS,CAAC5pO,CAAAA,CAAI,EAAI,CAAE,CAAA,CAC/B,MAAMihO,EAAAA,CAAK2I,SAAS,CAAC5pO,CAAI,CAAA,CAAA,CAAI,EAAE,CAC/B,MAAMkhO,EAAK0I,CAAAA,SAAS,CAAC5pO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAC/B,MAAMmhO,EAAKyI,CAAAA,SAAS,CAAC5pO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAC/B,MAAMohO,GAAKwI,SAAS,CAAC5pO,CAAI,CAAA,CAAA,CAAI,EAAE,CAC/B,MAAMqhO,EAAKuI,CAAAA,SAAS,CAAC5pO,CAAI,CAAA,CAAA,CAAI,CAAE,CAC/Bu6J,CAAAA,MAAM,CAACv6J,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CAACghO,GAAKG,EAAC,EAAK,EAChC5mE,CAAAA,MAAM,CAACv6J,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAIihO,CAAAA,EAAAA,CAAKG,EAAC,EAAK,EAChC7mE,CAAAA,MAAM,CAACv6J,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAACkhO,EAAAA,CAAKG,EAAC,EAAK,EAChC9mE,CAAAA,MAAM,CAACv6J,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGT,IAAAA,CAAKud,IAAI,CAAEqkN,CAAAA,EAAAA,CAAKH,EAAC,GAAM,CAAA,CAAI,CAACI,EAAKH,CAAAA,EAAC,GAAM,CAAA,CAAI,CAACI,EAAAA,CAAKH,EAAC,GAAM,GAAK,EAClF,CAAA,GAAIF,EAAKgH,CAAAA,QAAAA,CAAS3zN,CAAC,CAAE2zN,QAAAA,CAAS3zN,CAAC,CAAG2sN,EAClC,CAAA,GAAIC,EAAK+G,CAAAA,QAAAA,CAASjsN,CAAC,CAAEisN,QAAAA,CAASjsN,CAAC,CAAGklN,GAClC,GAAIC,EAAAA,CAAK8G,QAAS9rN,CAAAA,CAAC,CAAE8rN,QAAS9rN,CAAAA,CAAC,CAAGglN,EAAAA,CAClC,GAAIC,EAAAA,CAAK8G,QAAS5zN,CAAAA,CAAC,CAAE4zN,QAAS5zN,CAAAA,CAAC,CAAG8sN,EAAAA,CAClC,GAAIC,EAAK6G,CAAAA,QAAAA,CAASlsN,CAAC,CAAEksN,SAASlsN,CAAC,CAAGqlN,EAClC,CAAA,GAAIC,EAAK4G,CAAAA,QAAAA,CAAS/rN,CAAC,CAAE+rN,SAAS/rN,CAAC,CAAGmlN,GACpC,CACF,MAAO,CACL,MAAM1oL,WAAc+rL,CAAAA,OAAAA,CAAQzkO,MAAM,CAAG,CAAA,CACrC,MAAM8oO,SAAAA,CAAYxpO,IAAK0V,CAAAA,IAAI,CAAC0jC,WAAAA,CAAc,KAC1C4hH,MAAS,CAAA,IAAI1gJ,YAAakvN,CAAAA,SAAAA,CAAY,EACtCf,CAAAA,QAAAA,CAAS3zN,CAAC,CAAG2zN,SAASjsN,CAAC,CAAGisN,QAAS9rN,CAAAA,CAAC,CAAG/D,QACvC8vN,CAAAA,QAAAA,CAAS5zN,CAAC,CAAG4zN,QAAAA,CAASlsN,CAAC,CAAGksN,SAAS/rN,CAAC,CAAG,CAAC/D,QAAAA,CACxC,IAAI6oN,EAAIC,CAAAA,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CACxB,IAAI,IAAIhiO,EAAI,CAAGA,CAAAA,CAAAA,CAAI0pO,SAAW,CAAA,EAAE1pO,EAAE,CAChC2hO,EAAAA,CAAKC,EAAKC,CAAAA,EAAAA,CAAK/oN,SACfgpN,EAAKC,CAAAA,EAAAA,CAAKC,EAAK,CAAA,CAAClpN,QAChB,CAAA,MAAMsZ,KAAQpyB,CAAAA,CAAAA,CAAI,IAClB,MAAMqG,GAAAA,CAAMnG,IAAKmU,CAAAA,GAAG,CAACilC,WAAa,CAACt5C,CAAAA,CAAAA,CAAI,CAAA,EAAK,GAAA,CAAA,CAC5C,IAAI,IAAIW,CAAIyxB,CAAAA,KAAAA,CAAOzxB,CAAI0F,CAAAA,GAAAA,CAAK,EAAE1F,CAAE,CAAA,CAC9B,MAAMqU,CAAAA,CAAIqwN,OAAO,CAAC1kO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAC5B,MAAM+b,CAAAA,CAAI2oN,OAAO,CAAC1kO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAC5B,MAAMkc,CAAIwoN,CAAAA,OAAO,CAAC1kO,CAAAA,CAAI,EAAI,CAAE,CAAA,CAC5B,MAAM6pO,MAAAA,CAAS//M,OAAO1R,QAAQ,CAAC/D,CAC/B,CAAA,CAAA,MAAMy1N,MAAShgN,CAAAA,MAAAA,CAAO1R,QAAQ,CAAC2D,GAC/B,MAAMguN,MAAAA,CAASjgN,MAAO1R,CAAAA,QAAQ,CAAC8D,CAC/B,CAAA,CAAA,GAAI,CAAC2tN,MAAAA,CAAQnF,OAAO,CAAC1kO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAA,CAClC,GAAI,CAAC8pO,OAAQpF,OAAO,CAAC1kO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG,CAAA,CAClC,GAAI,CAAC+pO,OAAQrF,OAAO,CAAC1kO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAClC,CAAA,GAAI,CAAC6pO,MAAU,EAAA,CAACC,MAAU,EAAA,CAACC,OAAQ,CACjC,QACF,CACA,GAAI11N,EAAI2sN,EAAIA,CAAAA,EAAAA,CAAK3sN,CACZ,CAAA,KAAA,GAAIA,CAAI8sN,CAAAA,EAAAA,CAAIA,EAAK9sN,CAAAA,CAAAA,CACtB,GAAI0H,CAAIklN,CAAAA,EAAAA,CAAIA,EAAKllN,CAAAA,CAAAA,CAAAA,KACZ,GAAIA,CAAIqlN,CAAAA,EAAAA,CAAIA,EAAKrlN,CAAAA,CAAAA,CACtB,GAAIG,CAAIglN,CAAAA,EAAAA,CAAIA,EAAKhlN,CAAAA,CAAAA,CAAAA,KACZ,GAAIA,CAAAA,CAAImlN,EAAIA,CAAAA,EAAAA,CAAKnlN,EACtB,GAAI7H,CAAAA,CAAI2zN,QAAS3zN,CAAAA,CAAC,CAAE2zN,QAAS3zN,CAAAA,CAAC,CAAGA,CAAAA,CAAAA,KAC5B,GAAIA,CAAI4zN,CAAAA,QAAAA,CAAS5zN,CAAC,CAAE4zN,QAAS5zN,CAAAA,CAAC,CAAGA,CAAAA,CACtC,GAAI0H,CAAIisN,CAAAA,QAAAA,CAASjsN,CAAC,CAAEisN,SAASjsN,CAAC,CAAGA,CAC5B,CAAA,KAAA,GAAIA,EAAIksN,QAASlsN,CAAAA,CAAC,CAAEksN,QAAAA,CAASlsN,CAAC,CAAGA,CACtC,CAAA,GAAIG,EAAI8rN,QAAS9rN,CAAAA,CAAC,CAAE8rN,QAAAA,CAAS9rN,CAAC,CAAGA,CAAAA,CAAAA,KAC5B,GAAIA,CAAAA,CAAI+rN,SAAS/rN,CAAC,CAAE+rN,QAAS/rN,CAAAA,CAAC,CAAGA,EACxC,CACAq+I,MAAM,CAACl7J,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAAC2hO,EAAAA,CAAKG,EAAC,EAAK,EAChC5mE,CAAAA,MAAM,CAACl7J,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAI4hO,CAAAA,EAAKG,CAAAA,EAAC,EAAK,EAChC7mE,CAAAA,MAAM,CAACl7J,CAAI,CAAA,CAAA,CAAI,EAAE,CAAI6hO,CAAAA,EAAAA,CAAKG,EAAC,EAAK,EAChC9mE,CAAAA,MAAM,CAACl7J,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGE,IAAKud,CAAAA,IAAI,CAAEqkN,CAAAA,EAAKH,CAAAA,EAAC,GAAM,CAAA,CAAI,CAACI,EAAKH,CAAAA,EAAC,GAAM,CAAI,CAACI,CAAAA,EAAAA,CAAKH,EAAC,GAAM,CAAA,CAAA,CAAK,GACpF,CACF,CACF,CACA,GAAIyI,OAAQt9N,CAAAA,cAAc,CAAC,SAAA,CAAA,CAAY,CACrCozG,OAAAA,CAAUkqH,QAAQlqH,OAAO,CAAG,IAAItiF,WAAAA,CAAYwsM,QAAQlqH,OAAO,CAAA,CAAI,IAC/DooH,CAAAA,WAAAA,CAAc,KAChB,CACA,GAAI8B,OAAQhC,CAAAA,cAAc,CAAEA,cAAAA,CAAiBgC,OAAQhC,CAAAA,cAAc,CACnE,GAAIgC,OAAAA,CAAQ/B,eAAe,CAAEA,gBAAkB+B,OAAQ/B,CAAAA,eAAe,CACtEx0L,MAAAA,GACF,GACF,CAEA,MAAM42L,YAAqB/hO,SAAAA,YAAAA,CA+BzBkhC,OAAU,EAAA,CACR,IAAI,CAACzlC,MAAM,CAACumO,SAAS,EACrB,CAAA,IAAI,CAACvmO,MAAM,CAAG,KAChB,CACA08C,IAAK8pL,CAAAA,YAAY,CAAExF,OAAO,CAAEnqE,MAAM,CAAE,CAClC,IAAI,CAAC2vE,YAAY,CAAGA,YACpB,CAAA,IAAI,CAACxF,OAAO,CAAGA,QAAQ7jO,KAAK,EAAA,CAC5B,MAAMspO,WAAAA,CAAc,IAAI,CAACD,YAAY,CAAC95L,IAAI,CAAC,CACzCG,IAAMhQ,CAAAA,gBACR,GAAG1/B,KAAK,EAAA,CACR,IAAI,CAACqpO,YAAY,CAAC94L,MAAM,EACxB,CAAA,IAAI,IAAIpxC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAImqO,YAAYlqO,MAAM,CAAE,EAAED,CAAAA,CAAE,CACzCmqO,WAAW,CAACnqO,CAAE,CAAA,CAAGA,EACnB,CACA,MAAM6vD,GAAM,CAAA,CACVg0H,KAAOsmD,CAAAA,WAAAA,CAAYzvN,MAAM,CACzBgqN,QAASA,OAAQhqN,CAAAA,MAAM,CACvB6/I,MAAAA,CAAQA,QAAQ7/I,MAClB,CAAA,CACA,MAAM0vN,QAAAA,CAAW,CACfD,WAAYzvN,CAAAA,MAAM,CAClBgqN,OAAAA,CAAQhqN,MAAM,CACf,CAACi+C,MAAM,CAAC4hG,MAAS,CAAA,CAChBA,MAAO7/I,CAAAA,MAAM,CACd,CAAG,EAAE,CACN,CAAA,IAAI,CAAChX,MAAM,CAACgmO,WAAW,CAAC75K,GAAKu6K,CAAAA,QAAAA,EAC/B,CACAC,UAAAA,CAAW5qH,OAAO,CAAE,CAClB,GAAIA,OAAAA,CAAS,CACX,MAAMilH,OAAAA,CAAU,IAAI7qN,YAAAA,CAAa4lG,QAAQx/G,MAAM,CAAG,CAClD,CAAA,CAAA,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIy/G,QAAQx/G,MAAM,CAAE,EAAED,CAAAA,CAAE,CACrC,MAAM4V,GAAAA,CAAM6pG,OAAO,CAACz/G,EAAE,CAAG,CAAA,CACzB,MAAMye,GAAAA,CAAMze,CAAI,CAAA,CAChB0kO,CAAAA,OAAO,CAACjmN,GAAM,CAAA,CAAA,CAAE,CAAG,IAAI,CAACimN,OAAO,CAAC9uN,GAAM,CAAA,CAAA,CAAE,CACxC8uN,OAAO,CAACjmN,GAAAA,CAAM,CAAE,CAAA,CAAG,IAAI,CAACimN,OAAO,CAAC9uN,GAAAA,CAAM,CAAE,CACxC8uN,CAAAA,OAAO,CAACjmN,GAAM,CAAA,CAAA,CAAE,CAAG,IAAI,CAACimN,OAAO,CAAC9uN,GAAM,CAAA,CAAA,EAAE,CAE1C,IAAI,CAAClS,MAAM,CAACgmO,WAAW,CAAC,CACtBhF,OAAAA,CAASA,OAAQhqN,CAAAA,MAAM,CACvB+kG,OAASA,CAAAA,OAAAA,CAAQ/kG,MACnB,CAAG,CAAA,CACDgqN,OAAQhqN,CAAAA,MAAM,CACd+kG,OAAQ/kG,CAAAA,MAAM,CACf,EACH,MAAO,CACL,MAAMgqN,OAAU,CAAA,IAAI,CAACA,OAAO,CAAC7jO,KAAK,EAAA,CAClC,IAAI,CAAC6C,MAAM,CAACgmO,WAAW,CAAC,CACtBhF,OAASA,CAAAA,OAAAA,CAAQhqN,MAAM,CACvB+kG,OAAAA,CAAS,IACX,CAAA,CAAG,CACDilH,OAAQhqN,CAAAA,MAAM,CACf,EACH,CACF,CACAgxJ,SAAUrd,CAAAA,GAAG,CAAEzgI,GAAG,CAAE,CAClB,IAAI,CAAClqB,MAAM,CAACgmO,WAAW,CAAC,CACtB/B,cAAgB,CAAA,CACdtzN,CAAGg6I,CAAAA,GAAAA,CAAIh6I,CAAC,CACR0H,CAAGsyI,CAAAA,GAAAA,CAAItyI,CAAC,CACRG,CAAAA,CAAGmyI,GAAInyI,CAAAA,CAAC,CAEV0rN,CAAAA,eAAAA,CAAiB,CACfvzN,CAAAA,CAAGuZ,IAAIvZ,CAAC,CACR0H,CAAG6R,CAAAA,GAAAA,CAAI7R,CAAC,CACRG,CAAG0R,CAAAA,GAAAA,CAAI1R,CAAC,CAEZ,CACF,EAAA,CAjGAnU,aAAa,CACX,KAAK,EACL,CAAA,MAAMuiO,eAAiB,OAACtmJ,EAAAA,CACtB,MAAM2lJ,OAAAA,CAAU3lJ,OAAQhqE,CAAAA,IAAI,EAAIgqE,OAAAA,CAChC,MAAMumJ,QAAWZ,CAAAA,OAAAA,CAAQ9lD,KAAK,CAC9B,MAAM2mD,QAAW,CAAA,IAAI,CAACN,YAAY,CAACj+L,OAAO,CAAC,CAAE,CAAA,CAACvxB,MAAM,CACpD,IAAI,CAAChX,MAAM,CAACgmO,WAAW,CAAC,CACtB7lD,MAAO2mD,QACT,CAAA,CAAG,CACDA,QAAAA,CACD,CACD,CAAA,IAAI,CAACN,YAAY,CAACj+L,OAAO,CAAC,CAAA,CAAE,CAAG,IAAI9O,WAAAA,CAAYotM,QAC/C,CAAA,CAAA,IAAI,CAACL,YAAY,CAAC/9L,MAAM,EAAA,CACxB,IAAI,CAACjjC,IAAI,CAAC,SAAA,CAAWygO,OAAQ3pL,CAAAA,KAAK,EACpC,CAAA,CACA,MAAMyqL,YAAe,CAAA,CAAC,CAAC,EAAElD,WAAW7nO,QAAQ,EAAA,CAAG,GAAG,CAAC,CACnD,GAAI2D,QAAAA,CAASd,WAAW,GAAK,MAAQ,CAAA,CACnC,IAAI,CAACmB,MAAM,CAAG,IAAIP,MAAOsnO,CAAAA,YAAAA,CAAc,CACrCC,IAAM,CAAA,IACR,CACA,CAAA,CAAA,IAAI,CAAChnO,MAAM,CAAC2D,EAAE,CAAC,SAAWijO,CAAAA,cAAAA,EAC5B,CAAO,KAAA,CACL,IAAI,CAAC5mO,MAAM,CAAG,IAAIP,OAAO41E,GAAI4xJ,CAAAA,eAAe,CAAC,IAAIC,KAAK,CACpDH,YAAAA,CACD,CAAE,CACDhzN,KAAM,wBACR,CAAA,CAAA,CAAA,CAAA,CACA,IAAI,CAAC/T,MAAM,CAACzB,gBAAgB,CAAC,SAAA,CAAWqoO,gBAC1C,CACF,CAqEF,CAEA,IAAIO,wBAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqD/B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwD/B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;AAa/B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BzB,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;AAgB/B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BvB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;AAoBzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBzB,CAAC,CAED,MAAMC,OAAAA,CAAU,kBAChB,CAAA,MAAMC,kBAAqB,CAACx5L,OAC1B,EAAA,CAAA,OAAOA,OAAQ7I,CAAAA,IAAI,CAAC,CAAA,CAAG,EAAG6I,OAAQnsB,CAAAA,KAAK,CAAEmsB,OAAAA,CAAQlsB,MAAM,CAAE,CACvDklB,QAAAA,CAAU,CACVwF,CAAAA,IAAAA,CAAM,CACN8Z,CAAAA,SAAAA,CAAW,IACb,CAAA,CACF,EACA,MAAM/f,OAAAA,CAAU,CAAC9iC,KAAAA,CAAOoB,MACtB,GAAA,CAAA,IAAI,MAAMd,GAAAA,IAAOc,MAAO,CAAA,CACtBpB,KAAM8iC,CAAAA,OAAO,CAACxiC,GAAAA,CAAAA,CAAK8vC,QAAQ,CAAChvC,MAAM,CAACd,GAAI,CAAA,EACzC,CACF,CACA,CAAM0jO,MAAAA,kBAAAA,CACJxjO,WAAYiS,CAAAA,IAAI,CAAE2Y,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE1G,CAAC,CAAE6/C,EAAE,CAAC,CAC/B,MAAMjrC,IAAO,CAAA,CAACrE,CAAGC,CAAAA,CAAAA,CAAGiB,CAAIlB,GAAAA,CAAAA,EAAK,CAAIkB,CAAAA,CAAAA,CAAKjB,CAAAA,CAAAA,CAAIiB,CAC1C,CAAA,KAAM,CAAEk2N,IAAI,CAAEjF,OAAO,CAAE,CAAG/nN,IAC1B,CAAA,KAAM,CAAEwxN,KAAK,CAAEC,MAAM,CAAEC,GAAG,CAAEvE,GAAG,CAAE,CAAGH,IAAAA,CACpC,MAAM2E,YAAAA,CAAeh5M,CAAK3Y,EAAAA,IAAAA,CAAK4xN,OAAO,CAAC3/L,OAAO,CAAC,CAAE,CAAA,CACjD,MAAM4/L,YAAAA,CAAel5M,CAAK3Y,EAAAA,IAAAA,CAAK8xN,OAAO,CAAC7/L,OAAO,CAAC,CAAE,CAAA,CACjD,MAAM8/L,UAAazsO,CAAAA,CAAAA,EAAK0a,IAAKgyN,CAAAA,KAAK,CAAC//L,OAAO,CAAC,CAAA,CAAE,CAC7C,MAAMggM,WAAclmO,CAAAA,CAAAA,EAAKiU,IAAKyxN,CAAAA,MAAM,CAACx/L,OAAO,CAAC,CAAE,CAAA,CAC/C,MAAMigM,QAAAA,CAAW7sO,CAAK2a,EAAAA,IAAAA,CAAK0xN,GAAG,CAACz/L,OAAO,CAAC,CAAE,CAAA,CACzC,MAAMkgM,cAAiBjtL,CAAAA,EAAAA,EAAMllC,IAAKoyN,CAAAA,SAAS,CAACngM,OAAO,CAAC,CAAA,CAAE,CACtD,MAAMogM,iBAAoBntL,CAAAA,EAAAA,EAAMllC,IAAK+sN,CAAAA,YAAY,CAAC96L,OAAO,CAAC,CAAA,CAAE,CAC5D,MAAMwwL,IAAO,CAAA,CAAA,CAAMl9N,IAAKud,CAAAA,IAAI,CAAC,CAAA,CAAA,CAC7B,MAAMwvN,MAAAA,CAAS,CACb,CAAA,CAAG,EACH,CAAG,CAAA,CAAA,CACH,CAAG,CAAA,EACL,CAAC,CAACvK,OAAQ,CAAA,EAAI,CACd,CAAA,IAAI,CAAC94L,IAAI,CAAG,CACV,EAAA,CAAA,GAAItW,CAAG,CAAA,CACL,MAAMd,EAAAA,CAAK5d,IAAKu3N,CAAAA,KAAAA,CAAMpE,IAAI,CAAC,CAAE,CAAA,CAAEoE,KAAMlE,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAE,CAAC,CAACuE,YAAY,CAAC7rO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAI,CAAA,EAAK2rO,YAAY,CAAC3rO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAD,EAAK,KAAA,CAAA,CAC3G,MAAM8xB,EAAAA,CAAK7d,IAAKu3N,CAAAA,KAAAA,CAAMpE,IAAI,CAAC,CAAE,CAAA,CAAEoE,MAAMlE,IAAI,CAAC,CAAE,CAAA,CAAE,CAAC,CAACuE,YAAY,CAAC7rO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAI,CAAA,EAAK2rO,YAAY,CAAC3rO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EAAI,KAC3G,CAAA,CAAA,MAAM+xB,EAAK9d,CAAAA,IAAAA,CAAKu3N,KAAMpE,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAEoE,KAAMlE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAG,CAACuE,CAAAA,YAAY,CAAC7rO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EAAI,CAAA,EAAK2rO,YAAY,CAAC3rO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EAAI,KAC3G2yB,CAAAA,CAAAA,CAAEte,CAAAA,CAAC,CAAG9U,IAAKk0L,CAAAA,IAAI,CAAC5hK,EAAAA,CAAAA,EAAOtyB,IAAAA,CAAK0hK,GAAG,CAAC1hK,IAAKma,CAAAA,GAAG,CAACmY,EAAAA,CAAAA,CAAAA,CAAO,CAAA,CAChDc,CAAAA,CAAE5W,CAAAA,CAAC,CAAGxc,IAAAA,CAAKk0L,IAAI,CAAC3hK,EAAOvyB,CAAAA,EAAAA,IAAK0hK,CAAAA,GAAG,CAAC1hK,IAAAA,CAAKma,GAAG,CAACoY,KAAO,CAAA,CAChDa,CAAAA,CAAAA,CAAEzW,CAAC,CAAG3c,IAAKk0L,CAAAA,IAAI,CAAC1hK,EAAAA,CAAAA,EAAOxyB,IAAAA,CAAK0hK,GAAG,CAAC1hK,IAAKma,CAAAA,GAAG,CAACqY,EAAAA,CAAAA,CAAAA,CAAO,CAAA,EAClD,CACA,GAAIzyB,CAAG,CAAA,CACL,MAAMsQ,CAAAA,CAAI,CAACm8N,UAAU,CAAC/rO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GAAA,CAAM,EAAE,EAAKy8N,IAChD,CAAA,MAAM5sN,CAAI,CAACk8N,CAAAA,UAAU,CAAC/rO,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG,GAAM,CAAA,EAAE,EAAKy8N,IAAAA,CAChD,MAAMp9N,CAAAA,CAAI,CAAC0sO,UAAU,CAAC/rO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG,GAAA,CAAM,EAAE,EAAKy8N,IAChD,CAAA,MAAMnkN,CAAI/Y,CAAAA,IAAAA,CAAKud,IAAI,CAACvd,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAG,CAAK/D,EAAAA,CAAIA,CAAAA,CAAAA,CAAIC,CAAIA,CAAAA,CAAAA,CAAIxQ,CAAIA,CAAAA,CAAAA,CACzD,CAAA,CAAA,CAAA,MAAMkxC,IAAOw7L,CAAAA,UAAU,CAAC/rO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GACrC,CAAA,OAAOuwC,IACL,EAAA,KAAK,CACHjxC,CAAAA,CAAAA,CAAEiJ,GAAG,CAACqH,CAAGC,CAAAA,CAAAA,CAAGxQ,CAAGiZ,CAAAA,CAAAA,CAAAA,CACf,MACF,KAAK,EACHhZ,CAAEiJ,CAAAA,GAAG,CAAC+P,CAAAA,CAAGzI,CAAGxQ,CAAAA,CAAAA,CAAGuQ,CACf,CAAA,CAAA,MACG,KAAA,CAAA,CACHtQ,CAAEiJ,CAAAA,GAAG,CAACsH,CAAAA,CAAGyI,EAAGjZ,CAAGuQ,CAAAA,CAAAA,CAAAA,CACf,MACF,KAAK,CACHtQ,CAAAA,CAAAA,CAAEiJ,GAAG,CAACsH,CAAGxQ,CAAAA,CAAAA,CAAGiZ,CAAG1I,CAAAA,CAAAA,CAAAA,CACf,KACJ,CACF,CACA,GAAI7J,CAAG,CAAA,CACL,GAAIihO,IAAAA,CAAKvoO,OAAO,GAAK,CAAG,CAAA,CACtB,MAAMmoB,EAAAA,CAAK6kN,MAAOc,CAAAA,QAAQ,CAACN,WAAW,CAACjsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAC,CAClD,MAAM6mB,EAAK4kN,CAAAA,MAAAA,CAAOc,QAAQ,CAACN,WAAW,CAACjsO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAC,CAClD,MAAM8mB,EAAAA,CAAK2kN,MAAOc,CAAAA,QAAQ,CAACN,WAAW,CAACjsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAC,CAClD+F,EAAEwC,GAAG,CAACqe,EAAIC,CAAAA,EAAAA,CAAIC,EAChB,EAAA,CAAA,KAAO,CACL,MAAMF,EAAK3S,CAAAA,IAAAA,CAAKw3N,MAAOrE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAEqE,MAAAA,CAAOnE,IAAI,CAAC,CAAE,CAAA,CAAE2E,WAAW,CAACjsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,GACzE,CAAA,CAAA,MAAM6mB,EAAK5S,CAAAA,IAAAA,CAAKw3N,OAAOrE,IAAI,CAAC,CAAE,CAAA,CAAEqE,MAAOnE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAE2E,WAAW,CAACjsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GACzE,CAAA,CAAA,MAAM8mB,EAAK7S,CAAAA,IAAAA,CAAKw3N,MAAOrE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAEqE,MAAAA,CAAOnE,IAAI,CAAC,CAAE,CAAA,CAAE2E,WAAW,CAACjsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GAAA,CAAA,CACzE+F,CAAEwC,CAAAA,GAAG,CAACqe,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,EAChB,CACF,CACA,GAAIznB,CAAAA,CAAG,CACL,GAAI2nO,IAAKvoO,CAAAA,OAAO,GAAK,CAAA,CAAG,CACtB,MAAMa,CAAIosO,CAAAA,GAAAA,CAAIa,QAAQ,CAACL,QAAQ,CAAClsO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAC,CAC3C,MAAM6T,CAAAA,CAAI63N,GAAIa,CAAAA,QAAQ,CAACL,QAAQ,CAAClsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAC,CAC3C,MAAM6P,CAAI67N,CAAAA,GAAAA,CAAIa,QAAQ,CAACL,QAAQ,CAAClsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAC,CAC3C,MAAM4P,EAAIs8N,QAAQ,CAAClsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,GAChCX,CAAAA,CAAAA,CAAEkJ,GAAG,CAAC,EAAMjJ,CAAAA,CAAAA,CAAI+rO,OAAS,CAAA,EAAA,CAAMx3N,CAAIw3N,CAAAA,OAAAA,CAAS,EAAMx7N,CAAAA,CAAAA,CAAIw7N,OAASz7N,CAAAA,CAAAA,EACjE,CAAO,KAAA,CACL,MAAMtQ,CAAAA,CAAI2U,IAAKy3N,CAAAA,GAAAA,CAAItE,IAAI,CAAC,CAAE,CAAA,CAAEsE,IAAIpE,IAAI,CAAC,CAAE,CAAA,CAAE4E,QAAQ,CAAClsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,GAC/D,CAAA,CAAA,MAAM6T,CAAII,CAAAA,IAAAA,CAAKy3N,IAAItE,IAAI,CAAC,CAAE,CAAA,CAAEsE,GAAIpE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAE4E,QAAQ,CAAClsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GAC/D,CAAA,CAAA,MAAM6P,CAAIoE,CAAAA,IAAAA,CAAKy3N,GAAItE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAEsE,GAAAA,CAAIpE,IAAI,CAAC,CAAE,CAAA,CAAE4E,QAAQ,CAAClsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,GAC/D,CAAA,CAAA,MAAM4P,CAAIqE,CAAAA,IAAAA,CAAKy3N,GAAItE,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAEsE,GAAAA,CAAIpE,IAAI,CAAC,CAAA,CAAE,CAAE4E,QAAQ,CAAClsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GAAA,CAAA,CAC/DX,CAAEkJ,CAAAA,GAAG,CAAC,EAAA,CAAMjJ,EAAI+rO,OAAS,CAAA,EAAA,CAAMx3N,CAAIw3N,CAAAA,OAAAA,CAAS,EAAMx7N,CAAAA,CAAAA,CAAIw7N,OAAS,CAAA,CAAA,EAAO,CAAA,CAAM9rO,IAAK0hK,CAAAA,GAAG,CAAC,CAACrxJ,EAAC,CACzF,EAAA,CACF,CACA,GAAIsvC,EAAI,CAAA,CACN,MAAM9uB,CAAAA,CAAI+7M,cAAc,CAACnsO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAImsO,cAAc,CAACnsO,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EAAI,CAAA,CACpE,CAAA,MAAMi0B,CAAI7D,CAAAA,CAAAA,CAAI,EAAKk8M,CAAAA,MAAAA,CACnB,MAAM7sO,CAAAA,CAAIF,KAAKmQ,KAAK,CAAC0gB,CAAI,CAAA,EAAA,CAAA,CACzB,GAAI42M,IAAAA,CAAKvoO,OAAO,GAAK,CAAG,CAAA,CACtB,IAAI,IAAI8nF,CAAI,CAAA,CAAA,CAAGA,EAAI,CAAG,CAAA,EAAEA,CAAE,CAAA,CACxB,IAAI,IAAI+6C,CAAI,CAAA,CAAA,CAAGA,CAAIgrG,CAAAA,MAAAA,CAAQ,EAAEhrG,CAAAA,CAAE,CAC7BpiF,EAAE,CAACqnC,CAAI,CAAA,EAAA,CAAK+6C,CAAE,CAAA,CAAG6lG,GAAIoF,CAAAA,QAAQ,CAACF,iBAAiB,CAAEp4M,CAAAA,CAAAA,CAAIqtG,CAAAA,EAAK,CAAI/6C,CAAAA,CAAAA,CAAI9mF,CAAIua,CAAAA,IAAAA,CAAK+sN,YAAY,CAACphN,KAAK,CAAG,CAAE,CAAA,EAAC,CAEvG,CACF,CAAA,KAAO,CACL,IAAI,IAAI4gE,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAAA,CAAE,CACxB,IAAI,IAAI+6C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIgrG,MAAQ,CAAA,EAAEhrG,EAAE,CAC7BpiF,EAAE,CAACqnC,CAAAA,CAAI,EAAK+6C,CAAAA,CAAAA,CAAE,CAAGrtH,IAAAA,CAAKkzN,GAAIC,CAAAA,IAAI,CAAED,GAAAA,CAAIG,IAAI,CAAE+E,iBAAiB,CAAEp4M,CAAAA,CAAAA,CAAIqtG,CAAAA,EAAK,CAAI/6C,CAAAA,CAAAA,CAAI9mF,CAAIua,CAAAA,IAAAA,CAAK+sN,YAAY,CAACphN,KAAK,CAAG,CAAE,CAAA,CAAG,GACnH,EAAA,CACF,CACF,CACF,CACF,EACF,CACF,CACA,MAAM6mN,cAAAA,CACJC,oBAAuB,EAAA,CACrB,IAAI,CAACb,OAAO,EAAEziM,OAAAA,EACd,CAAA,IAAI,CAAC2iM,OAAO,EAAE3iM,OAAAA,EACd,CAAA,IAAI,CAAC6iM,KAAK,EAAE7iM,OAAAA,EACZ,CAAA,IAAI,CAACsiM,MAAM,EAAEtiM,OACb,EAAA,CAAA,IAAI,CAACuiM,GAAG,EAAEviM,OACV,EAAA,CAAA,IAAI,CAAC49L,YAAY,EAAE59L,OAAAA,EACnB,CAAA,IAAI,CAACijM,SAAS,EAAEjjM,OAAAA,EAChB,CAAA,IAAI,CAACujM,aAAa,EAAEvjM,OAAAA,EACpB,CAAA,IAAI,CAACwjM,SAAS,EAAExjM,OAAAA,EAChB,CAAA,IAAI,CAACyjM,SAAS,EAAEzjM,OAAAA,GAClB,CACAA,OAAAA,EAAU,CACR,IAAI,CAAC0jM,SAAS,CAAG,IACjB,CAAA,IAAI,CAACJ,oBAAoB,GAC3B,CACA5L,UAAWluM,CAAAA,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE1G,CAAC,CAAE6/C,EAAE,CAAE,CACzB,OAAO,IAAIqsL,kBAAAA,CAAmB,IAAI,CAAE54M,CAAGrzB,CAAAA,CAAAA,CAAGyG,CAAG1G,CAAAA,CAAAA,CAAG6/C,GAClD,CACA4hL,QAAAA,CAAS/gO,MAAM,CAAE,CACf,KAAM,CAAEqnO,IAAI,CAAEE,IAAI,CAAE,CAAG,IAAI,CAACN,IAAI,CAACwE,KAAK,CACtC,MAAM3kO,GAAAA,CAAM,CAACpH,EAAIF,IAAKk0L,CAAAA,IAAI,CAACh0L,CAAAA,CAAAA,EAAMF,IAAAA,CAAK0hK,GAAG,CAAC1hK,KAAKma,GAAG,CAACja,CAAM,CAAA,CAAA,CAAA,CAAA,CACzDM,CAAAA,MAAAA,CAAOorB,MAAM,CAAC5iB,GAAG,CAAC,CAAC1B,GAAIugO,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAIvgO,GAAIygO,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAA,EAAK,EAAK,CAACzgO,CAAAA,GAAAA,CAAIugO,IAAI,CAAC,EAAE,CAAIvgO,CAAAA,GAAAA,CAAIygO,IAAI,CAAC,CAAE,CAAA,CAAA,EAAK,EAAA,CAAK,CAACzgO,GAAIugO,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAIvgO,CAAAA,GAAAA,CAAIygO,IAAI,CAAC,CAAE,CAAA,CAAA,EAAK,EAAA,CAAA,CAC5HvnO,MAAOyrB,CAAAA,WAAW,CAACjjB,GAAG,CAAE1B,CAAAA,GAAAA,CAAIygO,IAAI,CAAC,CAAA,CAAE,CAAIzgO,CAAAA,GAAAA,CAAIugO,IAAI,CAAC,CAAE,CAAA,CAAA,EAAK,EAAA,CAAK,CAACvgO,GAAIygO,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAA,CAAIzgO,GAAIugO,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAA,EAAK,EAAK,CAACvgO,CAAAA,GAAAA,CAAIygO,IAAI,CAAC,EAAE,CAAIzgO,CAAAA,GAAAA,CAAIugO,IAAI,CAAC,CAAE,CAAA,CAAA,EAAK,EAAA,EACnI,CACA1F,UAAAA,EAAa,CACX,MAAMgD,OAAU,CAAA,IAAI,CAACoI,QAAQ,CAC7B,IAAI,CAACA,QAAQ,CAAG,IAChB,CAAA,OAAOpI,OACT,CACA/C,cAAe5hO,CAAAA,MAAM,CAAEghO,IAAI,CAAE,CAC3B,KAAM,CAAEqG,IAAI,CAAEE,IAAI,CAAE,CAAG,IAAI,CAACN,IAAI,CAACwE,KAAK,CACtC,MAAM3kO,GAAM,CAACpH,CAAIF,EAAAA,IAAAA,CAAKk0L,IAAI,CAACh0L,CAAMF,CAAAA,EAAAA,IAAK0hK,CAAAA,GAAG,CAAC1hK,IAAAA,CAAKma,GAAG,CAACja,IAAM,CAAA,CAAA,CACzDM,MAAOwI,CAAAA,GAAG,CAAE1B,CAAAA,GAAAA,CAAIugO,IAAI,CAAC,CAAE,CAAA,CAAA,CAAIvgO,GAAIygO,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAA,EAAK,EAAK,CAACzgO,CAAAA,GAAAA,CAAIugO,IAAI,CAAC,CAAE,CAAA,CAAA,CAAIvgO,GAAIygO,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAA,EAAK,EAAA,CAAK,CAACzgO,GAAIugO,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAIvgO,CAAAA,GAAAA,CAAIygO,IAAI,CAAC,CAAE,CAAA,CAAA,EAAK,EACvH,EAAA,CACA,IAAIyF,MAAAA,EAAS,CACX,OAAO,IACT,CACA,IAAIhL,OAAAA,EAAU,CACZ,MAAMiL,MAAS,CAAA,CACb,IAAK,CACL,CAAA,GAAA,CAAK,CACL,CAAA,GAAA,CAAK,CACP,CAAA,CACA,OAAOA,MAAM,CAAC,IAAI,CAACjG,YAAY,EAAEphN,KAAAA,CAAM,EAAI,CAC7C,CACA,MAAMsnN,UAAa,EAAA,CACjB,MAAMC,OAAAA,CAAU,CACd,GAAA,CACA,GACA,CAAA,GAAA,CACA,QACA,CAAA,QAAA,CACA,QACA,CAAA,SAAA,CACA,UACA,SACA,CAAA,SAAA,CACA,OACA,CAAA,OAAA,CACA,OACA,CAAA,OAAA,CACD,CACD,KAAM,CAAEnL,OAAO,CAAE,CAAG,IAAI,CACxB,KAAM,CAAE6J,OAAO,CAAEE,OAAO,CAAEE,KAAK,CAAEP,MAAM,CAAEC,GAAG,CAAEU,SAAS,CAAErF,YAAY,CAAE,CAAG,IAAI,CAC9E6E,OAAQ3/L,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAG,MAAMq/L,kBAAmBM,CAAAA,OAAAA,CAC9CE,CAAAA,OAAAA,CAAQ7/L,OAAO,CAAC,CAAE,CAAA,CAAG,MAAMq/L,kBAAAA,CAAmBQ,OAC9CE,CAAAA,CAAAA,KAAM//L,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAG,MAAMq/L,kBAAmBU,CAAAA,KAAAA,CAC5CP,CAAAA,MAAOx/L,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAG,MAAMq/L,kBAAmBG,CAAAA,MAAAA,CAC7CC,CAAAA,GAAAA,CAAIz/L,OAAO,CAAC,CAAE,CAAA,CAAG,MAAMq/L,kBAAmBI,CAAAA,GAAAA,CAAAA,CAC1C,GAAI3J,OAAAA,CAAU,CAAG,CAAA,CACfqK,SAAUngM,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAG,MAAMq/L,kBAAmBc,CAAAA,SAAAA,CAChDrF,CAAAA,YAAa96L,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAG,MAAMq/L,kBAAmBvE,CAAAA,YAAAA,CAAAA,CACnD,MAAMoG,SAAAA,CAAY,EAAE,CACpB,IAAI,IAAIntO,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,EAAA,CAAI,EAAEA,CAAAA,CAAE,CACzBmtO,SAAAA,CAAUrsO,IAAI,CAAC,CAAC,OAAO,EAAEd,CAAAA,CAAE,CAAC,EAC9B,CACAktO,OAAQpkO,CAAAA,MAAM,CAACokO,OAAAA,CAAQjkO,OAAO,CAAC,QAAY,CAAA,CAAA,CAAA,CAAG,CAAMkkO,CAAAA,GAAAA,SAAAA,EACtD,CACA,MAAMnzN,IAAO,CAAA,GACbkzN,OAAQvgO,CAAAA,OAAO,CAAErJ,IACf0W,EAAAA,CAAAA,IAAI,CAAC1W,IAAAA,CAAK,CAAG,IAAIuW,YAAa,CAAA,IAAI,CAACynN,SAAS,EAC9C,CACA,CAAA,CAAA,MAAM3uM,CAAI,CAAA,IAAI1W,IACd,CAAA,MAAM3c,CAAI,CAAA,IAAIuoB,IACd,CAAA,MAAM9hB,CAAI,CAAA,IAAIkW,IACd,CAAA,MAAM5c,CAAI,CAAA,IAAI8iB,IACd,CAAA,MAAM+8B,EAAK6iL,CAAAA,OAAAA,CAAU,CAAI,CAAA,IAAIloN,YAAa,CAAA,EAAA,CAAA,CAAM,IAChD,CAAA,MAAM4nN,IAAO,CAAA,IAAI,CAACZ,UAAU,CAACluM,CAAGrzB,CAAAA,CAAAA,CAAGyG,CAAG1G,CAAAA,CAAAA,CAAG6/C,EACzC,CAAA,CAAA,IAAI,IAAIl/C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAE,CAAA,CACrCyhO,IAAKx4L,CAAAA,IAAI,CAACjpC,CAAAA,CACVga,CAAAA,IAAAA,CAAK3F,CAAC,CAACrU,CAAE,CAAA,CAAG2yB,CAAEte,CAAAA,CAAC,CACf2F,IAAAA,CAAK+B,CAAC,CAAC/b,CAAE,CAAA,CAAG2yB,CAAE5W,CAAAA,CAAC,CACf/B,IAAKkC,CAAAA,CAAC,CAAClc,CAAAA,CAAE,CAAG2yB,CAAAA,CAAEzW,CACdlC,CAAAA,IAAAA,CAAKozN,KAAK,CAACptO,CAAE,CAAA,CAAGV,CAAE+U,CAAAA,CAAC,CACnB2F,IAAKqzN,CAAAA,KAAK,CAACrtO,CAAE,CAAA,CAAGV,CAAEyc,CAAAA,CAAC,CACnB/B,IAAKszN,CAAAA,KAAK,CAACttO,CAAAA,CAAE,CAAGV,CAAAA,CAAE4c,CAClBlC,CAAAA,IAAKuzN,CAAAA,KAAK,CAACvtO,CAAAA,CAAE,CAAGV,CAAAA,CAAEigB,CAClBvF,CAAAA,IAAAA,CAAKwzN,OAAO,CAACxtO,CAAE,CAAA,CAAG+F,EAAEsO,CACpB2F,CAAAA,IAAAA,CAAKyzN,OAAO,CAACztO,CAAE,CAAA,CAAG+F,CAAEgW,CAAAA,CAAC,CACrB/B,IAAK0zN,CAAAA,OAAO,CAAC1tO,CAAAA,CAAE,CAAG+F,CAAAA,CAAEmW,CACpBlC,CAAAA,IAAAA,CAAK2zN,MAAM,CAAC3tO,CAAE,CAAA,CAAG,CAACX,CAAEgV,CAAAA,CAAC,CAAG,EAAE,EAAKg3N,OAC/BrxN,CAAAA,IAAK4zN,CAAAA,MAAM,CAAC5tO,CAAAA,CAAE,CAAIX,CAAAA,CAAAA,CAAE0c,CAAC,CAAG,EAAE,EAAKsvN,OAC/BrxN,CAAAA,IAAAA,CAAK6zN,MAAM,CAAC7tO,CAAE,CAAA,CAAG,CAACX,CAAE6c,CAAAA,CAAC,CAAG,EAAE,EAAKmvN,OAC/BrxN,CAAAA,IAAKy8M,CAAAA,OAAO,CAACz2N,CAAAA,CAAE,CAAGX,CAAAA,CAAEkgB,CAAC,EAAI,CAAI,CAAA,CAAC,EAAKlgB,CAAAA,CAAAA,CAAEkgB,CAAC,EAAI,CAAI,CAAA,EAAA,CAAK,CAAChgB,IAAAA,CAAKgqG,GAAG,CAAC,CAAIlqG,CAAAA,CAAAA,CAAEkgB,CAAC,CAAG,CACvE,CAAA,CAAA,GAAI2/B,EAAI,CAAA,CACN,IAAI,IAAI7/C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAI,CAAA,EAAEA,CAAE,CAAA,CACzB2a,IAAI,CAAC,CAAC,OAAO,EAAE3a,CAAAA,CAAE,CAAC,CAAC,CAACW,CAAE,CAAA,CAAGk/C,EAAE,CAAC7/C,CAAE,EAChC,CACF,CACF,CACA,OAAO,IAAImhO,UAAAA,CAAW,CACpB,CACEl9N,IAAAA,CAAM,QACN08C,CAAAA,KAAAA,CAAO,IAAI,CAACshL,SAAS,CACrBn9E,UAAY+oF,CAAAA,OAAAA,CAAQrmO,GAAG,CAAC,IAACvD,EAAAA,CACvB,OAAO,CACLA,IAAMA,CAAAA,IAAAA,CACNmU,IAAM,CAAA,OAAA,CACN+vC,QAAU,CAAA,CAAA,CACVzY,OAAS/0B,CAAAA,IAAI,CAAC1W,IAAAA,CAAK,CAEvB,CACF,CAAA,CAAA,CACD,CACH,CACA,MAAMwqO,eAAkB,EAAA,CACtB,KAAM,CAAE7jM,MAAM,CAAEtkB,KAAK,CAAEC,MAAM,CAAE,CAAG,IAAI,CAACgmN,OAAO,CAC9C,KAAM,CAAErkO,KAAK,CAAE,CAAG0iC,MAAAA,CAClB,MAAM8jM,cAAAA,CAAiB,IAAIpiM,OAAAA,CAAQ1B,MAAQ,CAAA,CACzC3mC,KAAM,oBACNqiB,CAAAA,KAAAA,CACAC,MACA9f,CAAAA,MAAAA,CAAQs1B,mBACRoQ,CAAAA,OAAAA,CAAS,KACX,CAAA,CAAA,CACA,MAAMoS,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAACr5C,MAAAA,CAAQ,CAC9Ck4F,UAAAA,CAAY,yBACZ72E,CAAAA,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,WAAa,CAAA,kBAAA,CACbK,YAAcyoG,CAAAA,iBAAAA,CACd7oG,YAAc8oG,CAAAA,iBAAAA,CACd5+J,mBAAqB,CAAA,CACnB,QACD,CACDwB,gBAAAA,CAAkB,IAAI5lE,GAAAA,CAAI,CACxB,CACE,iBACA6hC,CAAAA,MAAAA,CAAO2E,QAAQ,CAAGs8L,eAAkBF,CAAAA,iBAAAA,CACrC,CACF,CACH,GACA,MAAMvsL,YAAAA,CAAe,IAAI8G,YAAAA,CAAa,CACpCM,WAAAA,CAAakoL,cACb/iM,CAAAA,KAAAA,CAAO,KACPF,CAAAA,QAAAA,CAAU,CACZ,CAAA,CAAA,CACAb,MAAOyV,CAAAA,WAAW,CAAC7oB,aACnBoT,CAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CACvClM,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,CACvC9M,CAAAA,OAAAA,CAAQ9iC,KAAO,CAAA,CACbqkO,OAAS,CAAA,IAAI,CAACA,OAAO,CACrBE,OAAAA,CAAS,IAAI,CAACA,OAAO,CACrBxK,SAAW,CAAA,IAAI,CAACA,SAAS,CACzB0M,UAAY,CAAA,IAAI,CAAChH,IAAI,CAACwE,KAAK,CAACpE,IAAI,CAChC6G,UAAAA,CAAY,IAAI,CAACjH,IAAI,CAACwE,KAAK,CAAClE,IAAI,CAClC,CAAA,CACA9iG,kBAAmBv6F,CAAAA,MAAAA,CAAQwU,YAAcb,CAAAA,MAAAA,CAAAA,CACzCa,YAAatV,CAAAA,OAAO,EACpB,CAAA,MAAM+kM,GAAM,CAAA,MAAM5C,mBAAmByC,cACrC,CAAA,CAAA,GAAI,IAAI,CAAClB,SAAS,EAAI5iM,MAAOyT,CAAAA,UAAU,CAAE,CACvCqwL,cAAe5kM,CAAAA,OAAO,EACtB,CAAA,MACF,CACA,MAAMglM,OAAU,CAAA,IAAIt0N,YAAaq0N,CAAAA,GAAAA,CAAIxzN,MAAM,CAAA,CAC3C,MAAM3a,MAAAA,CAAS,IAAI8Z,YAAAA,CAAa,IAAI,CAACynN,SAAS,CAAG,GACjD,IAAI,IAAIthO,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACshO,SAAS,CAAEthO,CAAAA,EAAAA,CAAI,CACrC,MAAM8wE,IAAO9wE,CAAAA,CAAAA,CAAI,CACjBD,CAAAA,MAAM,CAACC,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGmuO,OAAO,CAACr9J,IAAO,CAAA,CAAA,CAAE,CACrC/wE,MAAM,CAACC,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGmuO,OAAO,CAACr9J,IAAAA,CAAO,CAAE,CACrC/wE,CAAAA,MAAM,CAACC,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGmuO,OAAO,CAACr9J,IAAAA,CAAO,CAAE,EACvC,CACA,IAAI,CAACg8J,QAAQ,CAAG/sO,MAAAA,CAChBguO,cAAe5kM,CAAAA,OAAO,GACxB,CACAilM,eAAgB,CACd,KAAM,CAAEpH,IAAI,CAAE4E,OAAO,CAAEE,OAAO,CAAEE,KAAK,CAAEP,MAAM,CAAEC,GAAG,CAAEU,SAAS,CAAE9K,SAAS,CAAE,CAAG,IAAI,CACjF,KAAM,CAAEr3L,MAAM,CAAE,CAAG2hM,OACnB,CAAA,KAAM,CAAErkO,KAAK,CAAE,CAAG0iC,MAAAA,CAClB,MAAMguK,SAAAA,CAAY+uB,IAAKvoO,CAAAA,OAAO,GAAK,CAAA,CAAI,IAAO,CAAA,IAAA,CAC9C,MAAMm/C,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAACr5C,MAAAA,CAAQ,CAC9Ck4F,UAAAA,CAAY,CAAC,wBAAwB,EAAE81E,SAAAA,CAAU,CAAC,CAClD3sJ,UAAY,CAAA,CACVigB,eAAiBztC,CAAAA,iBACnB,EACAukG,WAAa,CAAA,kBAAA,CACbK,YAAcmoG,CAAAA,uBAAAA,CACdvoG,YAAcwoG,CAAAA,uBAAAA,CACdt+J,mBAAqB,CAAA,CACnB,OACA,CAAA,MAAA,CACD,CACDwB,gBAAAA,CAAkB,IAAI5lE,GAAAA,CAAI,CACxB,CACE,iBAAA,CACA6hC,MAAO2E,CAAAA,QAAQ,CAAGs8L,eAAAA,CAAkBF,iBACrC,CAAA,CACF,CACDx9J,CAAAA,eAAAA,CAAiBw5J,IAAKvoO,CAAAA,OAAO,GAAK,CAAA,CAAIqJ,UAAY,IAAIM,GAAAA,CAAI,CACxD,CACE,YACA,CAAA,GAAA,CACD,CACF,CACH,CACA,CAAA,CAAA,MAAMq2C,YAAe,CAAA,IAAI8G,YAAa,CAAA,CACpCoB,YAAc,CAAA,CACZ,IAAI,CAAC+lL,aAAa,CAClB,IAAI,CAACC,SAAS,CACf,CACD3hM,KAAAA,CAAO,KACPF,CAAAA,QAAAA,CAAU,CACZ,CAAA,CAAA,CACAb,OAAOyV,WAAW,CAAC7oB,aACnBoT,CAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,CACvClM,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,EACvC9M,OAAQ9iC,CAAAA,KAAAA,CAAO,CACbqkO,OAAAA,CACAE,OACAE,CAAAA,KAAAA,CACAP,MACAC,CAAAA,GAAAA,CACAU,SAAWA,CAAAA,SAAAA,EAAaR,OACxBtK,CAAAA,SAAAA,CACA,oBAAsB,CAAA,IAAI,CAAC0F,IAAI,CAACyE,MAAM,CAACc,QAAQ,CAC/C,iBAAmB,CAAA,IAAI,CAACvF,IAAI,CAAC0E,GAAG,CAACa,QAAQ,CACzC8B,UAAAA,CAAYrH,IAAKyE,CAAAA,MAAM,CAACrE,IAAI,CAC5BkH,UAAAA,CAAYtH,IAAKyE,CAAAA,MAAM,CAACnE,IAAI,CAC5BiH,OAAAA,CAASvH,IAAK0E,CAAAA,GAAG,CAACtE,IAAI,CACtBoH,OAASxH,CAAAA,IAAAA,CAAK0E,GAAG,CAACpE,IACpB,CACA9iG,CAAAA,CAAAA,kBAAAA,CAAmBv6F,MAAQwU,CAAAA,YAAAA,CAAcb,MACzCa,CAAAA,CAAAA,YAAAA,CAAatV,OAAO,GACtB,CACAslM,YAAe,EAAA,CACb,KAAM,CAAEzH,IAAI,CAAED,YAAY,CAAE,CAAG,IAAI,CACnC,KAAM,CAAE98L,MAAM,CAAE,CAAG88L,YAAAA,CACnB,KAAM,CAAEx/N,KAAK,CAAE,CAAG0iC,MAAAA,CAClB,MAAMguK,SAAAA,CAAY+uB,IAAKvoO,CAAAA,OAAO,GAAK,CAAA,CAAI,IAAO,CAAA,IAAA,CAC9C,MAAMm/C,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAACr5C,MAAAA,CAAQ,CAC9Ck4F,UAAAA,CAAY,CAAC,0BAA0B,EAAE81E,SAAAA,CAAU,CAAC,CACpD3sJ,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,WAAa,CAAA,kBAAA,CACbK,YAAcqoG,CAAAA,uBAAAA,CACdzoG,YAAc2oG,CAAAA,uBAAAA,CACdj9J,gBAAkB,CAAA,IAAI5lE,IAAI,CACxB,CACE,iBACA6hC,CAAAA,MAAAA,CAAO2E,QAAQ,CAAGs8L,eAAkBF,CAAAA,iBAAAA,CACrC,CACF,CAAA,CACDx9J,eAAiBw5J,CAAAA,IAAAA,CAAKvoO,OAAO,GAAK,EAAIqJ,SAAY,CAAA,IAAIM,GAAI,CAAA,CACxD,CACE,YAAA,CACA,GACD,CAAA,CACF,CACH,CAAA,CAAA,CACA,MAAMq2C,YAAAA,CAAe,IAAI8G,YAAAA,CAAa,CACpCM,WAAAA,CAAa,IAAI,CAAC+mL,SAAS,CAC3B5hM,KAAO,CAAA,KAAA,CACPF,QAAU,CAAA,CACZ,CACAb,CAAAA,CAAAA,MAAAA,CAAOyV,WAAW,CAAC7oB,aACnBoT,CAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,CAAA,CACvClM,MAAOwV,CAAAA,aAAa,CAAC7I,UAAAA,CAAWO,OAAO,CAAA,CACvC9M,OAAQ9iC,CAAAA,KAAAA,CAAO,CACbw/N,YAAAA,CACA,kBAAmB,IAAI,CAACC,IAAI,CAACG,GAAG,CAACoF,QACnC,CACA/nG,CAAAA,CAAAA,kBAAAA,CAAmBv6F,MAAQwU,CAAAA,YAAAA,CAAcb,MACzCa,CAAAA,CAAAA,YAAAA,CAAatV,OAAO,GACtB,CACA,MAAMulM,cAAAA,EAAiB,CACrB,KAAM,CAAEzkM,MAAM,CAAErkB,MAAM,CAAED,KAAK,CAAE,CAAG,IAAI,CAACimN,OAAO,CAC9C,GAAI,IAAI,CAACiB,SAAS,EAAI5iM,MAAAA,CAAOyT,UAAU,CAAE,OACzC,IAAI,CAACgvL,aAAa,CAAG,IAAI/gM,OAAQ1B,CAAAA,MAAAA,CAAQ,CACvC3mC,IAAAA,CAAM,mBACNqiB,CAAAA,KAAAA,CACAC,MACA9f,CAAAA,MAAAA,CAAQs1B,mBACRoQ,CAAAA,OAAAA,CAAS,KACX,CAAA,CACA,CAAA,IAAI,CAACmhM,SAAS,CAAG,IAAIhhM,OAAAA,CAAQ1B,MAAQ,CAAA,CACnC3mC,IAAM,CAAA,eAAA,CACNqiB,KACAC,CAAAA,MAAAA,CACA9f,MAAQ4yB,CAAAA,iBAAAA,CACR8S,QAAS,KACX,CAAA,CACA,CAAA,IAAI,CAACohM,SAAS,CAAG,IAAI,CAAC7F,YAAY,EAAI,IAAIp7L,OAAQ1B,CAAAA,MAAAA,CAAQ,CACxD3mC,IAAAA,CAAM,eACNqiB,CAAAA,KAAAA,CAAO,IAAI,CAACohN,YAAY,CAACphN,KAAK,CAC9BC,MAAQ,CAAA,IAAI,CAACmhN,YAAY,CAACnhN,MAAM,CAChC9f,MAAQ4yB,CAAAA,iBAAAA,CACR8S,OAAS,CAAA,KACX,CACAvB,CAAAA,CAAAA,MAAAA,CAAO5iC,EAAE,CAAC,gBAAkB,CAAA,IAAA,CAC1B,IAAI,CAAC+mO,aAAa,EAAA,CAClB,GAAI,IAAI,CAACxB,SAAS,CAAE,CAClB,IAAI,CAAC6B,YAAY,GACnB,CACF,CACA,CAAA,CAAA,CACE,QACA,CAAA,KAAA,CACA,MACD,CAAC9hO,OAAO,CAAErJ,IACT,EAAA,CAAA,MAAMipO,QAAW,CAAA,IAAI,CAACvF,IAAI,CAAC1jO,IAAAA,CAAK,EAAEipO,QAAAA,CAClC,GAAIA,QAAAA,GAAW,CAAA,CAAE,GAAK,IAAA,CAAM,CAC1BA,QAAQ,CAAC,CAAA,CAAE,CAAGA,QAAQ,CAAC,CAAA,CAAE,CAAIA,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAGA,QAAQ,CAAC,GAAI,CAAD,EAAK,IAC9D,CACF,CAAA,CAAA,CACA,GAAI,IAAI,CAACM,SAAS,EAAI5iM,MAAOyT,CAAAA,UAAU,CAAE,OACnC,MAAA,IAAI,CAACowL,eAAe,EAC1B,CAAA,GAAI,IAAI,CAACjB,SAAS,EAAI5iM,MAAAA,CAAOyT,UAAU,CAAE,OACzC,IAAI,CAAC0wL,aAAa,EAClB,CAAA,GAAI,IAAI,CAACxB,SAAS,CAAE,CAClB,GAAI,IAAI,CAACC,SAAS,EAAI5iM,MAAOyT,CAAAA,UAAU,CAAE,OACzC,IAAI,CAAC+wL,YAAY,GACnB,CACF,CACAvL,aAAc,CACZ,OAAO,IAAI,CAACwL,cAAc,EAC5B,CACA3mO,WAAAA,EAAa,CACX,IAAI,CAAC+kO,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACD,SAAS,CAAG,MACnB,CACF,CAEA,MAAM77F,GAAM,CAAA,IAAIzuH,IAChB,CAAA,MAAMosN,gBAAmB,CAAA,IAAI1yN,KAC7B,MAAM2yN,iBAAAA,CAAoB,IAAI3yN,IAAAA,CAC9B,MAAMm+E,QAAAA,CAAW,CACf,CAAA,CACA,CACD,CACD,CAAMy0I,MAAAA,cAAAA,CA0CJ1lM,OAAU,EAAA,CACR,IAAI,CAAC+gM,YAAY,EAAE/gM,OACnB,EAAA,CAAA,IAAI,CAAC2lM,SAAS,EAAE3lM,OAChB,EAAA,CAAA,IAAI,CAAC05F,QAAQ,EAAE15F,SACf,CAAA,IAAI,CAACy7F,YAAY,EAAEz7F,OAAAA,EACnB,CAAA,IAAI,CAAC4lM,MAAM,EAAE5lM,OAAAA,GACf,CACA,IAAI05F,SAASl7H,KAAK,CAAE,CAClB,GAAI,IAAI,CAACspI,SAAS,GAAKtpI,KAAO,CAAA,CAC5B,IAAI,CAACspI,SAAS,CAAGtpI,MACjB,IAAI,CAACspI,SAAS,CAACvnC,YAAY,CAAC,YAAc,CAAA,IAAI,CAACwgI,YAAY,CAC3D,CAAA,GAAI,IAAI,CAACtlG,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAC/B,QAAQ,CAAGl7H,MAC/B,CACF,CACF,CACA,IAAIk7H,QAAW,EAAA,CACb,OAAO,IAAI,CAACoO,SACd,CACA+yF,iBAAAA,CAAkBnhG,QAAQ,CAAEpxH,OAAU,CAAA,EAAE,CAAE,CACxC,IAAI,CAAC81C,QAAQ,CAACy8K,iBAAiB,CAACnhG,QAChCA,CAAAA,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,WAAa,CAAA,CAAA,CAAA,CACnCm5B,QAASn5B,CAAAA,YAAY,CAAC,YAAA,CAAc,IAAI,CAACwgI,YAAY,CACrDrnG,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,WAAa,CAAA,EAAA,CAAA,CACnCm5B,QAAS44B,CAAAA,SAAS,CAAC,CAAC,OAAO,EAAEhqJ,OAAQu9N,CAAAA,MAAM,CAAG,WAAA,CAAc,MAAO,CAAA,CAAC,CAAE,EAAA,CACtEnsG,CAAAA,QAAAA,CAAS0Q,IAAI,CAAG18G,aAChBgsG,CAAAA,QAASk4B,CAAAA,SAAS,CAAGtpJ,OAAQu9N,CAAAA,MAAM,CAAGh7G,UAAAA,CAAaC,mBACnD4O,CAAAA,QAASu4B,CAAAA,UAAU,CAAG,CAAC,CAAC3pJ,OAAAA,CAAQu9N,OAClC,CACAC,cAAezuD,CAAAA,UAAU,CAAE,CACzB,MAAMvtC,MAAAA,CAASutC,UAAYvtC,EAAAA,MAAAA,CAC3B,MAAMx0F,YAAAA,CAAew0F,MAAQx0F,EAAAA,YAAAA,CAC7B,KAAM,CAAE94B,KAAK,CAAEC,MAAM,CAAE,CAAG64B,YAAgB,EAAA,IAAI,CAAC8I,QAAQ,CAACtd,MAAM,CAC9DmwD,QAAQ,CAAC,CAAE,CAAA,CAAGz0E,KACdy0E,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAGx0E,MACd,CAAA,MAAMujF,EAAK8pC,CAAAA,MAAAA,EAAQA,MAAQ9pC,EAAAA,EAAAA,CAC3B,GAAIA,EAAAA,EAAI+1C,QAAU/1C,EAAG4gE,CAAAA,KAAK,CAACx/J,IAAI,CAACtK,MAAM,GAAK,CAAA,CAAG,CAC5Cm6F,QAAQ,CAAC,CAAA,CAAE,EAAI,GACjB,CACA,IAAI,CAACyoC,QAAQ,CAACn5B,YAAY,CAAC,UAAYtP,CAAAA,QAAAA,EACzC,CACAlqF,IAAAA,CAAKswK,UAAU,CAAE,CACf,GAAI,IAAI,CAACuuD,MAAM,CAAE,CACf,MAAMG,SAAAA,CAAY1uD,UAAW74C,CAAAA,iBAAiB,EAC9CunG,CAAAA,SAAAA,CAAUnoN,cAAc,CAAC4nN,gBACzBO,CAAAA,CAAAA,SAAAA,CAAUtwN,IAAI,CAACgwN,iBACf,CAAA,CAAA,MAAMhI,QAAW,CAAA,IAAI,CAAChiG,YAAY,CAACwL,IAAI,CAACzI,iBAAiB,EACzD,CAAA,MAAMwnG,WAAcn+F,CAAAA,GAAAA,CAAIjrH,MAAM,CAAC6gN,QAAAA,CAAAA,CAC/BuI,WAAYhrN,CAAAA,cAAc,CAACwqN,gBAAAA,CAAkBA,gBAC7CQ,CAAAA,CAAAA,WAAAA,CAAY1tN,eAAe,CAACmtN,iBAAmBA,CAAAA,iBAAAA,CAAAA,CAC/C,GAAI,CAACD,iBAAiBxxN,YAAY,CAAC,IAAI,CAAC2qN,kBAAkB,CAAA,EAAK,CAAC8G,iBAAAA,CAAkBzxN,YAAY,CAAC,IAAI,CAAC4qN,mBAAmB,CAAA,CAAG,CACxH,IAAI,CAACD,kBAAkB,CAAC/oO,IAAI,CAAC4vO,gBAC7B,CAAA,CAAA,IAAI,CAAC5G,mBAAmB,CAAChpO,IAAI,CAAC6vO,iBAAAA,CAAAA,CAC9B,IAAI,CAACG,MAAM,CAACrjE,SAAS,CAACijE,gBAAkBC,CAAAA,iBAAAA,EAC1C,CACF,CACA,IAAI,CAACK,cAAc,CAACzuD,UACtB,EAAA,CACAptI,QAAS,CACP,GAAI,IAAI,CAACu7H,OAAO,CAAC1uK,MAAM,CAAG,CAAG,CAAA,CAC3B,MAAMgzI,MAAAA,CAAS,IAAI,CAAC07B,OAAO,CAAC,CAAE,CAAA,CAC9B,IAAI,CAACz+J,IAAI,CAAC+iI,MAAOkO,CAAAA,KAAK,CACtB,CAAA,IAAI,CAAC2tF,SAAS,EAAE9iI,OAAOinC,MAAOkO,CAAAA,KAAK,CAAE,IAAI,CAACvc,YAAY,CAACwL,IAAI,CAACzI,iBAAiB,EAC7E,CAAA,CAAA,IAAI,CAACgnC,OAAO,CAAC1uK,MAAM,CAAG,EACxB,CACF,CACAmvO,gBAAAA,CAAiBznO,KAAK,CAAE,CACtB,KAAM,CAAE4/C,QAAQ,CAAE,CAAG,IAAI,CACzB,KAAM,CAAE44K,UAAU,CAAE,CAAG54K,QACvB,CAAA,GAAI44K,UAAsBqM,YAAAA,cAAAA,EAAkBrM,UAAW4B,CAAAA,OAAO,CAAG,CAAA,EAAKp6N,QAAU,CAAC,CAAC,IAAI,CAACmnO,SAAS,CAAE,CAChG,GAAI,IAAI,CAACA,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC3lM,OAAO,EACtB,CAAA,IAAI,CAAC2lM,SAAS,CAAG,KACnB,CAAO,KAAA,CACL,IAAI,CAACA,SAAS,CAAG,IAAInI,eAAAA,CAAgBp/K,QAAStd,CAAAA,MAAM,CAAE,IAAI,EAC5D,CACF,CACF,CAtHAliC,WAAYw/C,CAAAA,QAAQ,CAAE91C,OAAAA,CAAU,EAAE,CAAC,CACjC,IAAI,CAACA,OAAO,CAAG,EACf,CAAA,IAAI,CAACs9N,MAAM,CAAG,IACd,CAAA,IAAI,CAACjH,kBAAkB,CAAG,IAAI7rN,IAC9B,CAAA,IAAI,CAAC8rN,mBAAmB,CAAG,IAAI9rN,IAC/B,CAAA,IAAI,CAAC6yN,SAAS,CAAG,IACjB,CAAA,IAAI,CAACngE,OAAO,CAAG,EACf,CAAA,IAAI,CAACpnH,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC2iL,YAAY,CAAG3iL,QAAAA,CAAS6K,aAAa,CAAC,YAAc53B,CAAAA,gBAAAA,CAAkB+sB,QAASk9K,CAAAA,eAAe,CAACl9K,QAAS+5K,CAAAA,SAAS,CACtH,CAAA,CAAA,GAAI7vN,OAAQoxH,CAAAA,QAAQ,CAAE,CACpB,IAAI,CAACoO,SAAS,CAAGx/H,OAAQoxH,CAAAA,QAAQ,CACjC,IAAI,CAACoO,SAAS,CAACvnC,YAAY,CAAC,YAAc,CAAA,IAAI,CAACwgI,YAAY,EAC7D,CAAA,KAAO,CACL,IAAI,CAACj5F,SAAS,CAAG,IAAI+6D,cAAAA,CAAe,CAClC7pE,UAAAA,CAAY,eACZM,CAAAA,UAAAA,CAAY,qBACZC,CAAAA,YAAAA,CAAc,qBACdN,CAAAA,UAAAA,CAAY,qBACZE,CAAAA,YAAAA,CAAc,qBACdh3E,CAAAA,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,iBACjBuxM,CAAAA,gBAAAA,CAAkB3vM,eACpB,CACF,CACA,CAAA,CAAA,IAAI,CAACskM,iBAAiB,CAAC,IAAI,CAAC/yF,SAAS,EACrC,IAAI,CAACA,SAAS,CAAC79F,MAAM,GACvB,CACA,IAAI,CAACwxF,YAAY,CAAG,IAAI0K,YAAa/nF,CAAAA,QAAAA,CAASmiF,IAAI,CAAE,IAAI,CAACuH,SAAS,CAClE,CAAA,IAAI,CAACrM,YAAY,CAAC0O,aAAa,CAAC/rF,QAAAA,CAASo8K,eAAe,CAAE,KAC1D,CAAA,IAAI,CAAC/+F,YAAY,CAACqQ,cAAc,CAAG,IAAI,CACvC,IAAI,CAACrQ,YAAY,CAAC6N,eAAe,CAAG,CACpC,CAAA,MAAMiyF,OAAUn9K,CAAAA,QAAAA,CAASm9K,OAAO,CAAC7jO,KAAK,EAAA,CACtC,MAAM05J,MAAAA,CAAShzG,QAASgzG,CAAAA,MAAM,EAAE15J,KAAAA,EAChC,CAAA,IAAI,CAACkuO,MAAM,CAAG,IAAI/E,YAAAA,CAClB,IAAI,CAAC+E,MAAM,CAAC3uL,IAAI,CAAC,IAAI,CAAC8pL,YAAY,CAAExF,OAAAA,CAASnqE,MAC7C,CAAA,CAAA,IAAI,CAACw0E,MAAM,CAAC1nO,EAAE,CAAC,SAAA,CAAW,KAAC24C,EAAAA,CACzB,IAAI,CAAC4kF,YAAY,CAAC6N,eAAe,CAAGlzI,IAAAA,CAAK0V,IAAI,CAAC+qC,KAAQ0jL,CAAAA,kBAAAA,CAAmBS,YAAY,CAAA,CACrF,IAAI,CAACthG,QAAQ,CAACn5B,YAAY,CAAC,WAAa1pD,CAAAA,KAAAA,EAC1C,CACA,CAAA,CAAA,IAAI,CAACovL,gBAAgB,CAAC39N,OAAAA,CAAQ69N,aAAa,EAAI,KACjD,EAAA,CA+EF,CAEA,MAAMC,2BAA2B7L,kBAC/Bv6L,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACg3L,UAAU,CAACh3L,OAAO,EACvB,CAAA,KAAK,CAACA,OAAAA,GACR,CACA46L,wBAAAA,CAAyBh9J,OAAO,CAAE,CAChCA,OAAQx+D,CAAAA,GAAG,CAAC,kBAAA,CAAoB,IAChCw+D,CAAAA,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,UAAY,CAAA,IAAI,CAAC43N,UAAU,CAAC4B,OAAO,EACjD,CACAiC,iBAAAA,CAAkBnhG,QAAQ,CAAE,CAC1B,KAAM,CAAEs9F,UAAU,CAAE,CAAG,IAAI,CAC3B,KAAM,CAAE6G,IAAI,CAAE,CAAG7G,UAAAA,CACjB,IAAI,CAAC4D,wBAAwB,CAAClhG,QAAS97D,CAAAA,OAAO,CAC9C,CAAA,CACE,eACA,CAAA,WAAA,CACA,YACD,CAACp6D,OAAO,CAAErJ,IACT,EAAA,CAAA,GAAI68N,UAAU,CAAC78N,IAAK,CAAA,CAAE,CACpBu/H,QAAAA,CAASn5B,YAAY,CAACpmG,KAAM68N,UAAU,CAAC78N,IAAK,CAAA,EAC9C,CACF,CAAA,CAAA,CACA,CACE,OAAA,CACD,CAACqJ,OAAO,CAAErJ,IACT,EAAA,CAAA,MAAM7D,EAAIunO,IAAI,CAAC1jO,IAAK,CAAA,CACpB,GAAI7D,CAAAA,CAAG,CACLojI,QAAAA,CAASn5B,YAAY,CAAC,CAAC,EAAEpmG,IAAK,CAAA,KAAK,CAAC,CAAE7D,CAAE2nO,CAAAA,IAAI,CAC5CvkG,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,CAAC,EAAEpmG,IAAK,CAAA,KAAK,CAAC,CAAE7D,CAAE6nO,CAAAA,IAAI,EAC9C,CACF,CAAA,CAAA,CACA,GAAIN,IAAAA,CAAKvoO,OAAO,GAAK,CAAG,CAAA,CACtB,CACE,QAAA,CACA,KACA,CAAA,KAAA,CACD,CAACkO,OAAO,CAAC,IAACrJ,EAAAA,CACT,MAAM7D,CAAAA,CAAIunO,IAAI,CAAC1jO,IAAK,CAAA,CACpB,GAAI7D,CAAAA,CAAG,CACLojI,QAAAA,CAASn5B,YAAY,CAAC,CAAC,EAAEpmG,IAAAA,CAAK,KAAK,CAAC,CAAE7D,CAAAA,CAAE8sO,QAAQ,CAAC,CAAE,CAAA,CAAA,CACnD1pG,QAASn5B,CAAAA,YAAY,CAAC,CAAC,EAAEpmG,IAAAA,CAAK,KAAK,CAAC,CAAE7D,CAAAA,CAAE8sO,QAAQ,CAAC,GAAI,CAAA,EACvD,CACF,CAAA,EACF,CAAO,KAAA,CACL,CACE,QAAA,CACA,MACD,CAAC5/N,OAAO,CAAErJ,IACT,EAAA,CAAA,MAAM7D,CAAIunO,CAAAA,IAAI,CAAC1jO,IAAAA,CAAK,CACpB,GAAI7D,CAAG,CAAA,CACLojI,SAASn5B,YAAY,CAAC,CAAC,EAAEpmG,IAAK,CAAA,KAAK,CAAC,CAAE/D,IAAKmU,CAAAA,GAAG,CAAIjU,GAAAA,CAAAA,CAAE2nO,IAAI,CAACvmO,KAAK,CAAC,CAAA,CAAG,CAClEgiI,CAAAA,CAAAA,CAAAA,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,CAAC,EAAEpmG,IAAK,CAAA,KAAK,CAAC,CAAE/D,IAAKoU,CAAAA,GAAG,CAAIlU,GAAAA,CAAAA,CAAE6nO,IAAI,CAACzmO,KAAK,CAAC,CAAG,CAAA,CAAA,CAAA,CAAA,EACpE,CACF,CAAA,CAAA,CACA,CACE,KAAA,CACD,CAAC8L,OAAO,CAAErJ,OACT,MAAM7D,CAAAA,CAAIunO,IAAI,CAAC1jO,IAAK,CAAA,CACpB,GAAI7D,CAAAA,CAAG,CACLojI,QAAAA,CAASn5B,YAAY,CAAC,CAAC,EAAEpmG,KAAK,KAAK,CAAC,CAAE7D,CAAAA,CAAE2nO,IAAI,CAAA,CAC5CvkG,QAASn5B,CAAAA,YAAY,CAAC,CAAC,EAAEpmG,IAAAA,CAAK,KAAK,CAAC,CAAE7D,CAAE6nO,CAAAA,IAAI,EAC9C,CACF,CACF,EAAA,CACF,CACA7C,eAAAA,CAAgBzkL,KAAK,CAAE,CACrB,OAAO,IAAIn+B,IAAAA,CAAK,IAAI,CAACs+M,UAAU,CAACyL,OAAO,CAACjmN,KAAK,CAAE,IAAI,CAACw6M,UAAU,CAACyL,OAAO,CAAChmN,MAAM,CAC/E,CACF,CAEA,MAAM4pN,aAAgB,CAAA,MAAA,CACtB,MAAMC,oBAAAA,CAAuB,aAC7B,CAAA,MAAMC,oBAAuB,CAAA,aAAA,CAC7B,MAAMC,eAAAA,CAAkB,MACxB,CAAA,MAAMC,iBAAmB,OAEzB,CAAA,IAAIC,kBACJ,CAAA,SAASC,cACP,EAAA,CAAA,OAAOD,kBACT,CACA,SAASE,cAAAA,CAAeC,GAAG,CAAA,CACzBH,kBAAqBG,CAAAA,IACvB,CAEA,IAAIC,qBAAAA,CAAwB,KAC5B,CAAA,MAAMC,MAAS,CAAA,CACbF,GAAK,CAAA,IAAA,CACLG,mBAAqB7oO,CAAAA,QAAQ,CAC3B,CAAA,GAAI2oO,qBAAuB,CAAA,CACzB,MACF,CACAA,qBAAwB,CAAA,IAAA,CACxB,MAAMD,GAAAA,CAAMF,cACZxoO,EAAAA,CAAAA,QAAAA,CAAS0oO,GACX,EAAA,CACF,CAEA,CAAA,MAAMI,UACJpyE,CAAAA,aAAAA,CAAc/7G,UAAU,CAAE,CACxBA,UAAWmpD,CAAAA,WAAW,EACtB,CAAA,MAAMkB,YAAerqD,CAAAA,UAAAA,CAAWqqD,YAAY,CAC5C,IAAI,IAAItsG,CAAI,CAAA,CAAA,CAAGA,CAAIssG,CAAAA,YAAAA,CAAarsG,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,MAAMgjI,IAAO12B,CAAAA,YAAY,CAACtsG,CAAAA,CAAE,CAC5B,GAAIgjI,IAAKnwH,CAAAA,OAAO,CAAE,CAChB,IAAI,CAACmrJ,aAAa,CAACh7B,IAAAA,EACrB,CACF,CACA,GAAI/gF,UAAAA,CAAWpvC,OAAO,CAAE,CACtB,IAAI,CAACqrI,YAAY,CAACp9I,IAAI,CAACmhD,UAAAA,EACzB,CACA,MAAMsqD,WAActqD,CAAAA,UAAAA,CAAWsqD,WAAW,CAC1C,IAAI,IAAIvsG,CAAI,CAAA,CAAA,CAAGA,CAAIusG,CAAAA,WAAAA,CAAYtsG,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,MAAMgjI,IAAOz2B,CAAAA,WAAW,CAACvsG,CAAAA,CAAE,CAC3B,GAAIgjI,IAAKnwH,CAAAA,OAAO,CAAE,CAChB,IAAI,CAACmrJ,aAAa,CAACh7B,IAAAA,EACrB,CACF,CACF,CACAr1H,KAAAA,EAAQ,CACN,IAAI,CAACuwI,YAAY,CAACj+I,MAAM,CAAG,EAC7B,CACAoiF,OAAU,EAAA,CACR,MAAMguJ,eAAAA,CAAkB,IAAI,CAACA,eAAe,CAC5C,MAAMnyF,YAAAA,CAAe,IAAI,CAACA,YAAY,CACtC,IAAI,IAAIl+I,CAAI,CAAA,CAAA,CAAGA,CAAIk+I,CAAAA,YAAAA,CAAaj+I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAMiiD,UAAAA,CAAai8F,YAAY,CAACl+I,EAAE,CAClC,MAAMy+C,YAAewD,CAAAA,UAAAA,CAAWxD,YAAY,CAC5C,GAAIA,YAAAA,GAAiB32C,SAAW,CAAA,CAC9B,MAAMwoO,QAAAA,CAAWD,eAAgBtuO,CAAAA,GAAG,CAAC08C,YACrC,CAAA,CAAA,GAAI6xL,QAAU,CAAA,CACZ,MAAMtwL,KAAAA,CAAQiC,UAAWkR,CAAAA,aAAa,CAAClzD,MAAM,CAC7C,IAAI,IAAIsmF,CAAAA,CAAI,EAAGA,CAAIvmC,CAAAA,KAAAA,CAAOumC,CAAI,EAAA,CAAA,CAC5B,MAAMrzB,QAAAA,CAAWjR,UAAWkR,CAAAA,aAAa,CAACozB,CAAAA,CAAE,CAC5C,GAAI,CAACrzB,QAAAA,CAAStqD,KAAK,CAAE,CACnB0nO,QAAAA,CAASn9K,aAAa,CAACozB,CAAE,CAAA,CAAC/yB,KAAK,CAAG,KACpC,CACF,CACA,GAAI,CAACvR,UAAAA,CAAWyR,eAAe,CAACG,UAAU,CAAE,CAC1Cy8K,QAAS58K,CAAAA,eAAe,CAACK,UAAU,CAAG,KACxC,CACA,GAAI,CAAC9R,UAAAA,CAAWyR,eAAe,CAACU,YAAY,CAAE,CAC5Ck8K,QAAS58K,CAAAA,eAAe,CAACY,YAAY,CAAG,KAC1C,CACF,CACA+7K,eAAgB9nO,CAAAA,GAAG,CAACk2C,YAAcwD,CAAAA,UAAAA,EACpC,CACF,CACA,IAAI,IAAIjiD,CAAI,CAAA,CAAA,CAAGA,CAAIk+I,CAAAA,YAAAA,CAAaj+I,MAAM,CAAG,CAAGD,CAAAA,CAAAA,EAAAA,CAAI,CAC9C,MAAMuwO,SAAYryF,CAAAA,YAAY,CAACl+I,CAAAA,CAAE,CACjC,MAAMwwO,OAAUD,CAAAA,SAAAA,CAAU9xL,YAAY,CACtC,MAAMgyL,UAAAA,CAAavyF,YAAY,CAACl+I,EAAI,CAAE,CAAA,CACtC,MAAM0wO,QAAAA,CAAWD,UAAWhyL,CAAAA,YAAY,CACxC,GAAI+xL,OAAYE,GAAAA,QAAAA,EAAYF,OAAY1oO,GAAAA,SAAAA,CAAW,CACjD,QACF,CACA,GAAI2oO,UAAW/8K,CAAAA,eAAe,CAACG,UAAU,EAAI48K,UAAAA,CAAW/8K,eAAe,CAACU,YAAY,EAAIq8K,UAAWt9K,CAAAA,aAAa,CAACyU,IAAI,CAAC,QAAC1U,EAAWA,QAAStqD,CAAAA,KAAK,CAAG,CAAA,CACjJ,QACF,CACA,GAAI2nO,SAAAA,CAAUhkI,WAAW,CAACtsG,MAAM,CAAG,CAAG,CAAA,CACpC,QACF,CACA,GAAIwwO,UAAAA,CAAWnkI,YAAY,CAACrsG,MAAM,CAAG,CAAG,CAAA,CACtC,QACF,CACAswO,SAAUnkI,CAAAA,QAAQ,CAAG,IACrBqkI,CAAAA,UAAWtkI,CAAAA,UAAU,CAAG,KAC1B,CACA,IAAIwkI,eAAkB,CAAA,IAAA,CACtB,IAAIC,kBAAAA,CAAqB,IACzB,CAAA,IAAI,IAAI5wO,CAAI,CAAA,CAAA,CAAGA,CAAIk+I,CAAAA,YAAAA,CAAaj+I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAMiiD,UAAAA,CAAai8F,YAAY,CAACl+I,CAAE,CAAA,CAClC,MAAMy+C,YAAewD,CAAAA,UAAAA,CAAWxD,YAAY,CAC5C,MAAMoyL,WAAAA,CAAcpyL,YAAcoH,EAAAA,WAAAA,CAClC,GAAIgrL,WAAAA,EAAaplM,OAAS,CAAA,CACxB,GAAIklM,eAAAA,GAAoBE,WAAa,CAAA,CACnC,MAAM7wL,KAAAA,CAAQ4wL,kBAAmBz9K,CAAAA,aAAa,CAAClzD,MAAM,CACrD,IAAI,IAAIsmF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIvmC,KAAOumC,CAAAA,CAAAA,EAAAA,CAAI,CAC5BqqJ,kBAAmBz9K,CAAAA,aAAa,CAACozB,CAAAA,CAAE,CAAC/6C,OAAO,CAAG,MAChD,CACF,CACAmlM,eAAkBlyL,CAAAA,YAAAA,CAAaoH,WAAW,CAC1C+qL,mBAAqB3uL,WACvB,CAAA,KAAO,GAAIA,UAAAA,CAAWoqD,gBAAgB,CAAE,CACtCskI,eAAAA,CAAkB,IAClBC,CAAAA,kBAAAA,CAAqB,KACvB,CACF,CACAP,eAAAA,CAAgBznO,KAAK,GACvB,CACAojG,MAAO/hE,CAAAA,MAAM,CAAE,CACb,IAAI,CAACo4C,OAAO,EAAA,CACZ,MAAM67D,YAAAA,CAAe,IAAI,CAACA,YAAY,CACtC,IAAI,IAAIl+I,CAAI,CAAA,CAAA,CAAGA,CAAIk+I,CAAAA,YAAAA,CAAaj+I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1Ck+I,YAAY,CAACl+I,CAAE,CAAA,CAACgsG,MAAM,GACxB,CACF,CACAjkG,WAAAA,EAAa,CACX,IAAI,CAACm2I,YAAY,CAAG,EAAE,CACtB,IAAI,CAACmyF,eAAe,CAAG,IAAIjoO,IAC7B,CACF,CAEA,MAAM0oO,mBAKJ3nM,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC4nM,QAAQ,EAAE5nM,OAAAA,EACf,CAAA,IAAI,CAAC6nM,QAAQ,EAAE7nM,OACjB,GAAA,CAPAphC,WAAYgpO,CAAAA,QAAQ,CAAEC,QAAQ,CAAC,CAC7B,IAAI,CAACD,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACC,QAAQ,CAAGA,SAClB,CAKF,CACA,MAAMC,WAAc,CAAA,IAAIzmM,WACxB,CAAA,MAAM0mM,cACJ,OAAO9+K,aAAAA,CAAcnoB,MAAM,CAAEnkC,MAAM,CAAEZ,IAAI,CAAEisO,OAAU,CAAA,EAAE,CAAE,CACvD,MAAMrkM,GAAAA,CAAM,IAAInB,OAAQ1B,CAAAA,MAAAA,CAAQ,CAC9B3mC,IAAAA,CAAM,CAAC,YAAY,EAAE6tO,OAAAA,CAAQ,CAAC,CAC9BxrN,KAAOzgB,CAAAA,IAAAA,CACP0gB,MAAQ1gB,CAAAA,IAAAA,CACRY,OAAQA,MACRioC,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACV1c,CAAAA,IAAAA,CAAMgpB,mBACNoN,CAAAA,SAAAA,CAAW3W,aACXwW,CAAAA,SAAAA,CAAWzW,cACXyX,CAAAA,UAAAA,CAAY,CACZlD,CAAAA,OAAAA,CAAS,KACX,CAAA,CAAA,CACA,OAAOsB,GACT,CACA,OAAOskM,aAAcnnM,CAAAA,MAAM,CAAE+mM,QAAQ,CAAEK,QAAQ,CAAE,CAC/CJ,WAAY5mO,CAAAA,MAAM,CAAC4/B,MACnBgnM,CAAAA,CAAAA,WAAAA,CAAYlvO,GAAG,CAACkoC,MAAQ,CAAA,IAAA,CACtB,OAAO,IAAI6mM,mBAAoBE,CAAAA,QAAAA,CAAUA,QAAaK,GAAAA,QAAAA,CAAW,IAAOA,CAAAA,QAAAA,CAC1E,GACApnM,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,mBAAA,CAAA,CAAqBsN,QAAQ,CAACq5L,QACnD/mM,CAAAA,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,qBAAqBsN,QAAQ,CAAC05L,QACrD,EAAA,CACA,OAAOC,iBAAAA,CAAkBrnM,MAAM,CAAE,CAC/B,MAAM6H,OAAUo/L,CAAAA,aAAAA,CAAc9+K,aAAa,CAACnoB,MAAQlR,CAAAA,mBAAAA,CAAqB,CAAG,CAAA,aAAA,CAAA,CAC5E,MAAMmZ,MAAAA,CAASJ,OAAQ1B,CAAAA,IAAI,EAC3B8B,CAAAA,MAAAA,CAAO8gH,IAAI,CAAC,CACZlhH,CAAAA,CAAAA,OAAAA,CAAQV,MAAM,EAAA,CACd8/L,cAAcE,aAAa,CAACnnM,MAAQ6H,CAAAA,OAAAA,CAASA,OAC/C,EAAA,CACA,OAAOvpC,GAAAA,CAAI0hC,MAAM,CAAEsnM,OAAO,CAAEC,OAAO,CAAE,CACnC,SAASC,YAAAA,CAAaxnM,MAAM,CAAEjwB,IAAI,CAAElU,MAAM,CAAA,CACxC,MAAMgsC,OAAAA,CAAUo/L,aAAc9+K,CAAAA,aAAa,CAACnoB,MAAAA,CAAQnkC,OAAQ,EAC5DgsC,CAAAA,CAAAA,OAAAA,CAAQ1B,IAAI,EAAA,CAAG7nC,GAAG,CAACyR,IACnB83B,CAAAA,CAAAA,OAAAA,CAAQV,MAAM,EAAA,CACd,OAAOU,OACT,CACA,SAAS4/L,kBAAmB13N,CAAAA,IAAI,CAC9B,CAAA,MAAMgmC,KAAQhmC,CAAAA,IAAAA,CAAK/Z,MAAM,CACzB,MAAMooD,GAAAA,CAAM,IAAIhrB,WAAAA,CAAY2iB,KAC5B,CAAA,CAAA,MAAMplC,UAAaD,CAAAA,YAAAA,CAAaC,UAAU,CAC1C,IAAI,IAAI5a,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5BqoD,GAAG,CAACroD,CAAAA,CAAE,CAAG4a,UAAAA,CAAWZ,IAAI,CAACha,CAAAA,CAAE,EAC7B,CACA,OAAOqoD,GACT,CACA,MAAMspL,QAAWJ,CAAAA,OAAAA,CACjB,MAAMK,QAAAA,CAAWJ,OACjB,CAAA,MAAMK,MAAQH,kBAAmBC,CAAAA,QAAAA,CAAAA,CACjC,MAAMG,KAAAA,CAAQJ,kBAAmBE,CAAAA,QAAAA,CAAAA,CACjC,MAAMG,IAAAA,CAAON,YAAaxnM,CAAAA,MAAAA,CAAQ4nM,KAAO94M,CAAAA,mBAAAA,CAAAA,CACzC,MAAMi5M,IAAAA,CAAOP,YAAaxnM,CAAAA,MAAAA,CAAQ6nM,KAAO/4M,CAAAA,mBAAAA,CAAAA,CACzCm4M,aAAcE,CAAAA,aAAa,CAACnnM,MAAAA,CAAQ8nM,IAAMC,CAAAA,IAAAA,EAC5C,CACF,CAEA,MAAMC,cAAAA,CAAiB,OACvB,CAAA,MAAMC,yBAA2B,CAC/B,IAAA,CAAM,OACN,CAAA,IAAA,CAAM,OACN,CAAA,IAAA,CAAM,OACN,CAAA,OAAA,CAAS,OACT,CAAA,OAAA,CAAS,OACT,CAAA,OAAA,CAAS,OACT,CAAA,IAAA,CAAM,QACN,IAAM,CAAA,OAAA,CACN,IAAM,CAAA,OAAA,CACN,IAAM,CAAA,OAAA,CACN,IAAM,CAAA,OACR,CAEA,CAAA,MAAMC,OAAU,CAAA,EAChB,CAAA,SAASC,eAAeC,OAAO,CAAEC,EAAE,CAAA,CACjC,IAAI,IAAItyO,CAAI,CAAA,CAAA,CAAGkY,GAAMm6N,CAAAA,OAAAA,CAAQpyO,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAChDmyO,OAAO,CAACE,OAAO,CAACryO,CAAE,CAAA,CAAC,CAAGsyO,GACxB,CACF,CACA,SAASC,OAAAA,CAAQC,MAAM,CAAA,CACrB,MAAMloO,GAAMkoO,CAAAA,MAAAA,CAAOvpO,OAAO,CAAC,GAC3B,CAAA,CAAA,GAAIqB,GAAQ,GAAA,CAAC,CAAG,CAAA,CACd,OAAOkoO,MAAAA,CAAOvxO,SAAS,CAAC,EAAGqJ,GAC7B,CAAA,CACA,OAAOkoO,MACT,CACA,SAASC,WAAYD,CAAAA,MAAM,CAAEE,WAAW,CACtC,CAAA,MAAMpoO,GAAMkoO,CAAAA,MAAAA,CAAOvpO,OAAO,CAAC,GAAA,CAAA,CAC3B,GAAIqB,GAAAA,GAAQ,CAAC,CAAA,CAAG,CACd,OAAOooO,WAAcF,CAAAA,MAAAA,CAAOvxO,SAAS,CAACqJ,GACxC,CAAA,CACA,OAAOooO,WACT,CACA,SAASC,mBAAoBC,CAAAA,aAAa,CAAEC,gBAAgB,CAC1D,CAAA,GAAIA,gBAAgB,CAACD,aAAc,CAAA,CAAE,CACnC,OAAOA,aACT,CACA,IAAIE,QAAWZ,CAAAA,wBAAwB,CAACU,aAAAA,CAAc,CACtD,GAAIE,QAAYD,EAAAA,gBAAgB,CAACC,QAAAA,CAAS,CAAE,CAC1C,OAAOA,QACT,CACA,MAAMC,IAAAA,CAAOR,OAAQK,CAAAA,aAAAA,CAAAA,CACrBE,QAAWZ,CAAAA,wBAAwB,CAACa,IAAAA,CAAK,CACzC,GAAIF,gBAAgB,CAACC,SAAS,CAAE,CAC9B,OAAOA,QACT,CACA,GAAID,gBAAgB,CAACE,IAAK,CAAA,CAAE,CAC1B,OAAOA,IACT,CACA,OAAOd,cACT,CACAG,cAAAA,CAAe,CACb,IAAA,CACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,IACD,CAAA,CAAE,CAAChiN,EAAAA,CACF,OAAO,CACT,GACAgiN,cAAe,CAAA,CACb,IACA,CAAA,IAAA,CACD,CAAGhiN,CACF,EAAA,CAAA,GAAIA,CAAK,EAAA,CAAA,EAAKA,CAAK,EAAA,CAAA,CAAG,CACpB,OAAO,CACT,CACA,OAAO,CACT,CAAA,CAAA,CACAgiN,cAAe,CAAA,CACb,IACA,CAAA,IAAA,CACD,CAAGhiN,CACF,EAAA,CAAA,GAAIA,CAAK,EAAA,CAAA,EAAKA,EAAI,CAAG,CAAA,CACnB,OAAO,CACT,CACA,OAAO,CACT,CAAA,CAAA,CACAgiN,cAAe,CAAA,CACb,IACD,CAAA,CAAE,CAAChiN,EAAAA,CACF,GAAIA,CAAAA,GAAM,CAAK,EAAA,CAACtG,MAAOs9C,CAAAA,SAAS,CAACh3C,CAAAA,CAAAA,EAAMA,CAAK,EAAA,CAAA,EAAKA,CAAK,EAAA,CAAA,CAAG,CACvD,OAAO,CACT,CACA,OAAO,CACT,CAAA,CAAA,CACAgiN,cAAe,CAAA,CACb,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACD,CAAGhiN,CACF,EAAA,CAAA,GAAIA,CAAM,GAAA,CAAA,CAAG,CACX,OAAO,CACT,CACA,OAAO,CACT,CACAgiN,CAAAA,CAAAA,cAAAA,CAAe,CACb,IACA,CAAA,IAAA,CACD,CAAGhiN,CACF,EAAA,CAAA,GAAItG,MAAOs9C,CAAAA,SAAS,CAACh3C,CAAAA,CAAAA,CAAI,CACvB,MAAM4iN,KAAQ5iN,CAAAA,CAAAA,CAAI,EAClB,CAAA,MAAM6iN,MAAS7iN,CAAAA,CAAAA,CAAI,GACnB,CAAA,GAAI4iN,KAAU,GAAA,CAAA,EAAKC,MAAW,GAAA,EAAA,CAAI,CAChC,OAAO,CACT,CAAA,KAAO,GAAID,KAAAA,EAAS,GAAKA,KAAS,EAAA,CAAA,GAAMC,MAAAA,CAAS,EAAMA,EAAAA,MAAAA,CAAS,EAAC,CAAA,CAAI,CACnE,OAAO,CACT,CAAA,KAAO,GAAID,KAAAA,GAAU,GAAKA,KAAS,EAAA,CAAA,EAAKA,KAAS,EAAA,CAAA,EAAKC,MAAU,EAAA,EAAA,EAAMA,MAAU,EAAA,EAAA,CAAI,CAClF,OAAO,CACT,CACF,CACA,OAAO,CACT,CACAb,CAAAA,CAAAA,cAAAA,CAAe,CACb,IAAA,CACD,CAAGhiN,CACF,EAAA,CAAA,GAAItG,MAAOs9C,CAAAA,SAAS,CAACh3C,CAAAA,CAAAA,CAAI,CACvB,GAAIA,CAAM,GAAA,CAAA,CAAG,CACX,OAAO,CACT,CACA,MAAM4iN,KAAAA,CAAQ5iN,CAAI,CAAA,EAAA,CAClB,MAAM6iN,MAAAA,CAAS7iN,CAAI,CAAA,GAAA,CACnB,GAAI4iN,KAAAA,EAAS,GAAKA,KAAS,EAAA,CAAA,GAAMC,MAAAA,CAAS,EAAMA,EAAAA,MAAAA,CAAS,EAAC,CAAA,CAAI,CAC5D,OAAO,CACT,CAAA,KAAO,GAAID,KAAAA,EAAS,GAAKA,KAAS,EAAA,CAAA,EAAKA,KAAS,EAAA,CAAA,EAAKA,KAAS,EAAA,CAAA,EAAKC,MAAU,EAAA,EAAA,EAAMA,MAAU,EAAA,EAAA,CAAI,CAC/F,OAAO,CACT,CACF,CACA,OAAO,CACT,CACAb,CAAAA,CAAAA,cAAAA,CAAe,CACb,IAAA,CACD,CAAGhiN,CACF,EAAA,CAAA,GAAIA,CAAM,GAAA,CAAA,CAAG,CACX,OAAO,CACT,CAAA,KAAO,GAAIA,CAAAA,GAAM,CAAG,CAAA,CAClB,OAAO,CACT,CAAO,KAAA,GAAIA,CAAM,GAAA,CAAA,CAAG,CAClB,OAAO,CACT,CACA,GAAItG,MAAOs9C,CAAAA,SAAS,CAACh3C,CAAAA,CAAAA,CAAI,CACvB,MAAM6iN,MAAS7iN,CAAAA,CAAAA,CAAI,GACnB,CAAA,GAAI6iN,MAAU,EAAA,CAAA,EAAKA,MAAU,EAAA,EAAA,CAAI,CAC/B,OAAO,CACT,CAAO,KAAA,GAAIA,MAAU,EAAA,EAAA,EAAMA,MAAU,EAAA,EAAA,CAAI,CACvC,OAAO,CACT,CACF,CACA,OAAO,CACT,CACA,CAAA,CAAA,MAAMC,iBAAoBf,CAAAA,OAAO,CAACI,OAAAA,CAAQN,cAAgB,CAAA,CAAA,CAC1D,SAASkB,WAAAA,CAAYJ,IAAI,CAAA,CACvB,OAAOZ,OAAO,CAACY,IAAAA,CAAK,EAAIG,iBAC1B,CAEA,MAAME,YAAe,CAAA,IAAI10K,MAAO,CAAA,GAAA,CAAM,MAAS,CAAA,KAAA,CAAQ,KAAQ,CAAA,sBAAA,CAAyB,GAAM,CAAA,IAAA,CAAO,KAAO,GAAM,CAAA,OAAA,CAAU,QAAW,CAAA,GAAA,CAAK,GAC5I,CAAA,CAAA,MAAM20K,eAAkB,CAAA,WAAA,CACxB,MAAMC,WAAAA,CAAc,OACpB,CAAA,MAAMC,WAAc,CAAA,OAAA,CACpB,MAAMC,UAAAA,CAAa,MACnB,CAAA,MAAMC,WAAc,CAAA,OAAA,CACpB,MAAMC,cAAAA,CAAiB,UACvB,CAAA,MAAMC,UAAa,CAAA,MAAA,CACnB,MAAMC,aAAAA,CAAgB,SACtB,CAAA,MAAMC,mBAAqB,cAC3B,CAAA,MAAMC,aAAgB,CAAA,SAAA,CACtB,MAAMC,YAAAA,CAAe,QACrB,CAAA,MAAMC,SAAY,CAAA,KAAA,CAClB,MAAMC,UAAAA,CAAa,MACnB,CAAA,MAAMC,YAAe,CAAA,QAAA,CACrB,MAAMC,eAAAA,CAAkB,WAExB,CAAA,MAAMC,SASJ3+N,CAAAA,MAAAA,CAAOsS,KAAK,CAAE,CACZ,OAAO,IAAI,CAACld,GAAG,GAAKkd,MAAMld,GAAG,EAAI,IAAI,CAACwpO,QAAQ,GAAKtsN,KAAMssN,CAAAA,QAAQ,EAAI,IAAI,CAACl7L,IAAI,GAAKpxB,KAAAA,CAAMoxB,IAAI,EAAI,IAAI,CAACj0C,IAAI,GAAK6iB,KAAAA,CAAM7iB,IAAI,EAAI,IAAI,CAAC25N,GAAG,GAAK92M,KAAM82M,CAAAA,GAAG,EAAI,IAAI,CAACyV,QAAQ,GAAKvsN,KAAMusN,CAAAA,QAAQ,CATzLvsO,WAAY8C,CAAAA,GAAAA,CAAM,EAAE,CAAEwpO,QAAW,CAAA,EAAE,CAAEl7L,IAAAA,CAAO,IAAI,CAAEj0C,IAAO,CAAA,IAAI,CAAE25N,GAAAA,CAAM,IAAI,CAAEyV,QAAW,CAAA,IAAI,CAAC,CACzF,IAAI,CAACzpO,GAAG,CAAGA,GACX,CAAA,IAAI,CAACwpO,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACl7L,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACj0C,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC25N,GAAG,CAAGA,GACX,CAAA,IAAI,CAACyV,QAAQ,CAAGA,SAClB,CAIF,CAEA,IAAIC,cAAAA,CAAiB,CAAC,CAAA,CACtB,MAAMC,eAAAA,CAAkB,CACtBC,GAAAA,CAAK,2BACLC,CAAAA,GAAAA,CAAK,0BACLC,CAAAA,IAAAA,CAAM,yBACNC,CAAAA,IAAAA,CAAM,0BACNC,CAAAA,KAAAA,CAAO,QACT,CAAA,CACA,MAAMC,wBAAAA,CAA2B,CAC/B,KAAA,CACA,KACA,CAAA,MAAA,CACA,MACA,CAAA,OAAA,CACD,CACKC,MAAAA,KAAAA,SAAc9sO,YAiClB,CAAA,IAAI3E,IAAKqE,CAAAA,KAAK,CAAE,CACd,GAAI,IAAI,CAACkjG,KAAK,GAAKljG,KAAAA,CAAO,CACxB,MACF,CACA,MAAM0sI,GAAAA,CAAM,IAAI,CAACxpC,KACjB,CAAA,IAAI,CAACA,KAAK,CAAGljG,KAAAA,CACb,IAAI,CAACuB,IAAI,CAAC,MAAA,CAAQ,IAAI,CAAE,IAAI,CAAC2hG,KAAK,CAAEwpC,GACtC,EAAA,CACA,IAAI/wI,IAAAA,EAAO,CACT,OAAO,IAAI,CAACunG,KACd,CACA,IAAImqI,IAAKrtO,CAAAA,KAAK,CAAE,CACd,GAAIA,KAAAA,EAASA,KAAMupI,CAAAA,QAAQ,EAAI,CAC7B,SAAA,CACA,cACA,CAAA,QAAA,CACD,CAACjoI,OAAO,CAAC,IAAI,CAACwO,IAAI,CAAM,GAAA,CAAC,CAAG,CAAA,CAC3B,MAAMu4N,GAAM,CAAA,IAAI,CAACiF,QAAQ,EAAEC,OAAAA,EAASC,IAAQrF,EAAAA,cAAAA,EAAAA,CAC5C,MAAM7lM,MAAAA,CAAS+lM,GAAKpmM,EAAAA,cAAAA,CACpB,GAAIK,MAAAA,CAAQ,CACV,IAAI,IAAIjqC,CAAI,CAAA,CAAA,CAAGkY,GAAM48N,CAAAA,wBAAAA,CAAyB70O,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACjE,MAAMqjI,OAAAA,CAAUyxG,wBAAwB,CAAC90O,CAAE,CAAA,CAC3C,GAAI2H,KAAAA,CAAMupI,QAAQ,CAAC7N,OAAQ,CAAA,EAAIp5F,MAAM,CAACuqM,eAAe,CAACnxG,OAAQ,CAAA,CAAC,CAAE,CAC/D17H,KAAAA,CAAQA,KAAMupI,CAAAA,QAAQ,CAAC7N,OAAAA,CAAQ,CAC/B,KACF,CACA,GAAI2sG,GAAIoF,CAAAA,aAAa,CAAE,CACrB,MAAMC,OAAUrF,CAAAA,GAAAA,CAAIqF,OAAO,CAACC,mBAAmB,CAAC,IAAI,CAAA,CACpD,GAAID,OAAAA,EAAWA,OAAQv2K,CAAAA,IAAI,CAAEjvD,IAC3B,OAAOA,CAAAA,EAAGmlO,IAAM9jG,EAAAA,QAAQ,CAAC7N,OAAAA,CAAQ,CACnC,CAAA,CAAI,CACF,KACF,CACF,CACF,CACF,CACF,CACA,MAAMkyG,OAAU,CAAA,IAAI,CAACC,KAAK,CAC1B,MAAMC,OAAU9tO,CAAAA,KAAAA,CAAQ,IAAIysO,SAAAA,CAAUzsO,KAAMkD,CAAAA,GAAG,CAAElD,KAAAA,CAAM0sO,QAAQ,CAAE1sO,KAAAA,CAAMwxC,IAAI,CAAExxC,KAAMzC,CAAAA,IAAI,CAAEyC,KAAAA,CAAMk3N,GAAG,CAAEl3N,KAAM2sO,CAAAA,QAAQ,CAAI,CAAA,IAAA,CACtH,GAAI,CAAC,CAACmB,OAAY,GAAA,CAAC,CAACF,OAAAA,EAAWE,OAAW,EAAA,CAACA,OAAQhgO,CAAAA,MAAM,CAAC8/N,OAAAA,CAAAA,CAAU,CAClE,IAAI,CAACC,KAAK,CAAGC,OACb,CAAA,IAAI,CAACvsO,IAAI,CAAC,QAAA,CAAU,IAAI,CAAE,MAAQusO,CAAAA,OAAAA,CAASF,OAC3C,CAAA,CAAA,IAAI,CAACG,MAAM,GACb,CACF,CACA,IAAIV,IAAO,EAAA,CACT,OAAO,IAAI,CAACQ,KAAK,CAEnB,IAAIx7N,IAAAA,CAAKrS,KAAK,CAAE,CACd,MAAM0sI,GAAAA,CAAM,IAAI,CAACshG,KACjB,CAAA,IAAI,CAACA,KAAK,CAAGhuO,KAAAA,CACb,GAAIA,KAAU0sI,GAAAA,GAAAA,CAAK,CACjB,IAAI,CAACnrI,IAAI,CAAC,QAAA,CAAU,IAAI,CAAE,MAAQvB,CAAAA,KAAAA,CAAO0sI,GACzC,CAAA,CAAA,GAAI,IAAI,CAAC3uB,MAAM,CAAE,CACf,IAAI,CAACuvH,QAAQ,CAACC,OAAO,CAACU,KAAK,CAAC,IAAI,CAAE,IAAI,CAACX,QAAQ,EACjD,CACF,CACF,CACA,IAAIj7N,IAAO,EAAA,CACT,OAAO,IAAI,CAAC27N,KAAK,CAEnB,IAAIpuL,QAAS5/C,CAAAA,KAAK,CAAE,CAClB,MAAMkuO,IAAAA,CAAO,IAAI,CAACC,UAAU,CAAC,CAAE,CAC/B,CAAA,IAAI,CAACA,UAAU,CAAC,CAAE,CAAA,CAAGnuO,KACrB,CAAA,IAAI,CAACuB,IAAI,CAAC,QAAA,CAAU,IAAI,CAAE,UAAYvB,CAAAA,KAAAA,CAAOkuO,MAC/C,CACA,IAAItuL,QAAW,EAAA,CACb,OAAO,IAAI,CAACuuL,UAAU,CAAC,CAAA,CAAE,CAE3B,IAAI73K,SAAAA,CAAUt2D,KAAK,CAAE,CACnB,MAAMkuO,IAAO,CAAA,IAAI,CAACC,UAAU,CAC5B,IAAI,CAACA,UAAU,CAAGnuO,KAClB,CAAA,IAAI,CAACuB,IAAI,CAAC,QAAU,CAAA,IAAI,CAAE,WAAA,CAAavB,KAAOkuO,CAAAA,IAAAA,EAChD,CACA,IAAI53K,SAAY,EAAA,CACd,OAAO,IAAI,CAAC63K,UACd,CACA,IAAIC,OAAQpuO,CAAAA,KAAK,CAAE,CACjBA,KAAQ,CAAA,CAAC,CAACA,KAAAA,CACV,GAAI,IAAI,CAACquO,QAAQ,GAAKruO,KAAO,CAAA,CAC3B,MACF,CACA,IAAI,CAACquO,QAAQ,CAAGruO,KAChB,CAAA,GAAI,IAAI,CAACquO,QAAQ,EAAI,CAAC,IAAI,CAACtwH,MAAM,EAAI,CAAC,IAAI,CAACuwH,OAAO,EAAI,IAAI,CAAChB,QAAQ,CAAE,CACnE,IAAI,CAACA,QAAQ,CAACiB,IAAI,CAAC,IAAI,EACzB,CACF,CACA,IAAIH,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QAAQ,CAEtB,IAAIG,SAAAA,CAAUxuO,KAAK,CAAE,CACnBA,KAAAA,CAAQ,CAAC,CAACA,KACV,CAAA,GAAI,CAAC,IAAI,CAAC0E,cAAc,CAAC,YAAiB1E,CAAAA,EAAAA,KAAAA,GAAU,IAAI,CAACyuO,UAAU,CAAE,CACnE,IAAI,CAACA,UAAU,CAAGzuO,KAAAA,CAClB,GAAI,IAAI,CAAC+9G,MAAM,CAAE,CACf,IAAI,CAACuvH,QAAQ,CAACC,OAAO,CAACU,KAAK,CAAC,IAAI,CAAE,IAAI,CAACX,QAAQ,EACjD,CACF,CACF,CACA,IAAIkB,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExBC,UAAa,EAAA,CACX,MAAMrB,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,GAAI,CAACA,IAAQ,EAAA,CAACA,KAAKnqO,GAAG,CAAE,CACtB,OAAO,IACT,CACA,IAAIA,GAAAA,CAAMmqO,IAAKnqO,CAAAA,GAAG,CAClB,GAAI,IAAI,CAACoqO,QAAQ,EAAI,IAAI,CAACA,QAAQ,CAACxoF,MAAM,EAAI,CAAC2mF,YAAAA,CAAa1wO,IAAI,CAACmI,GAAM,CAAA,CAAA,CACpEA,GAAM,CAAA,IAAI,CAACoqO,QAAQ,CAACxoF,MAAM,CAAG5hJ,IAC/B,CACA,GAAI,IAAI,CAAC4M,IAAI,GAAK,QAAA,EAAYu9N,IAAK77L,CAAAA,IAAI,CAAE,CACvC,MAAMm9L,SAAYzrO,CAAAA,GAAAA,CAAI5B,OAAO,CAAC,GAAS,CAAA,GAAA,CAAC,CAAI,CAAA,GAAA,CAAM,GAClD4B,CAAAA,GAAAA,EAAO,CAAC,EAAEyrO,UAAU,EAAE,EAAEtB,IAAK77L,CAAAA,IAAI,CAAC,EAAC,CAErC,OAAOtuC,GACT,CACA0rO,cAAAA,CAAeC,YAAY,CAAE,CAC3B,GAAIA,YAAaj2O,CAAAA,UAAU,CAAC,OAAA,CAAA,EAAYi2O,YAAaj2O,CAAAA,UAAU,CAAC,OAAA,CAAA,CAAU,CACxE,OAAOi2O,YACT,CACA,MAAM1lK,IAAAA,CAAOnxE,KAAKwB,YAAY,CAAC,IAAI,CAAC6zO,IAAI,CAACnqO,GAAG,CAAA,CAC5C,OAAOlL,IAAAA,CAAKE,IAAI,CAACixE,IAAM0lK,CAAAA,YAAAA,CACzB,CACAC,mBAAoBjE,CAAAA,MAAM,CAAE,CAC1BA,MAASG,CAAAA,mBAAAA,CAAoBH,MAAQ,CAAA,IAAI,CAACkE,KAAK,CAC/C,CAAA,OAAO,IAAI,CAACA,KAAK,CAAClE,MAAAA,CAAO,EAAI,IAC/B,CACAmE,mBAAAA,CAAoBnE,MAAM,CAAEoE,OAAO,CAAE,CACnC,IAAI,CAACF,KAAK,CAAClE,MAAAA,CAAO,CAAGoE,OAAAA,CACrB,IAAI,CAAC1tO,IAAI,CAAC,eAAiBspO,CAAAA,MAAAA,CAAQoE,OACrC,EAAA,CACAC,sBAAuBrE,CAAAA,MAAM,CAAE,CAC7B,MAAMoE,OAAU,CAAA,IAAI,CAACF,KAAK,CAAClE,MAAAA,CAAO,CAClC,GAAIoE,OAAS,CAAA,CACX,OAAO,IAAI,CAACF,KAAK,CAAClE,MAAO,CAAA,CACzB,IAAI,CAACtpO,IAAI,CAAC,kBAAoBspO,CAAAA,MAAAA,CAAQoE,OACxC,EAAA,CACF,CACA51K,KAAAA,CAAM15D,QAAQ,CAAEC,KAAK,CAAE,CACrBA,KAAQA,CAAAA,KAAAA,EAAS,IAAI,CACrB,GAAI,IAAI,CAACm+G,MAAM,CAAE,CACfp+G,QAASsC,CAAAA,IAAI,CAACrC,KAAAA,CAAO,IAAI,EAC3B,CAAO,KAAA,CACL,IAAI,CAACE,IAAI,CAAC,MAAQ,CAACkyN,KACjBryN,EAAAA,CAAAA,QAAAA,CAASsC,IAAI,CAACrC,MAAOoyN,KACvB,EAAA,CAAA,EACF,CACF,CACA+b,MAAS,EAAA,CACP,GAAI,IAAI,CAAChwH,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAG,KAAA,CACd,IAAI,CAACuvH,QAAQ,CAACiB,IAAI,CAAC,IAAI,EACzB,CACF,CACAY,MAAS,EAAA,CACP,GAAI,CAAC,IAAI,CAACpxH,MAAM,EAAI,IAAI,CAACowH,UAAU,CAAC71O,MAAM,GAAK,CAAA,CAAG,CAChD,MACF,CACA,IAAI,CAACiJ,IAAI,CAAC,QAAA,CAAU,IAAI,CAAA,CACxB,IAAI,CAAC+rO,QAAQ,CAAC/rO,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC8gC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAA,CAC5C,MAAMqqG,GAAAA,CAAM,IAAI,CAACyhG,UAAU,CAC3B,GAAI,IAAI,CAACiB,SAAS,CAAE,CAClBh+J,GAAIi+J,CAAAA,eAAe,CAAC,IAAI,CAACD,SAAS,CAClC,CAAA,IAAI,CAACA,SAAS,CAAG,KACnB,CACA,IAAI,CAAC94K,SAAS,CAAG,EAAE,CACnB,IAAI,CAACynD,MAAM,CAAG,KACd,CAAA,GAAI,IAAI,CAACsvH,IAAI,CAAE,CACb,IAAI,CAACC,QAAQ,CAACC,OAAO,CAACzX,UAAU,CAAC,IAAI,CAAC4Y,UAAU,EAAA,CAAI,IAAI,CAAC5+N,IAAI,EAC/D,CACA,IAAI,IAAIzX,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIq0I,GAAIp0I,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CACjCq0I,GAAG,CAACr0I,CAAAA,CAAE,EAAEmpC,OAAAA,KACV,CACF,CACA,OAAO8tM,gBAAAA,CAAiBzrO,OAAO,CAAElE,QAAQ,CAAEqyN,KAAK,CAAEtzG,UAAAA,CAAa,CAAC,CAAE,CAChE,GAAIszG,KAAOqb,EAAAA,IAAAA,EAAMV,QAAU,CAAA,CACzBv0J,UAAW,CAAA,IAAA,CACTz4E,QAAS,CAAA,IAAA,CAAMqyN,KAAMqb,CAAAA,IAAI,CAACV,QAAQ,EACpC,CAAA,EACF,CAAO,KAAA,CACLrqH,IAAKloH,CAAAA,GAAG,CAACyJ,OAAAA,CAAS,CAChBymC,KAAAA,CAAO,KACPs1E,YAAc,CAAA,aAAA,CACdrB,KAAOG,CAAAA,UAAAA,CAAa,CACpBA,CAAAA,UAAAA,CAAYA,UACZb,CAAAA,QAAAA,CAAUm0G,KACZ,CAAA,CAAGryN,QACL,EAAA,CACF,CArMAS,WAAAA,CAAYzE,IAAI,CAAEmU,IAAI,CAAEu9N,IAAI,CAAEh7N,IAAAA,CAAO,EAAE,CAAEvI,OAAAA,CAAU,EAAE,CAAC,CACpD,KAAK,EAAI,CAAA,IAAI,CAAC+jO,KAAK,CAAG,IAAA,CAAM,IAAI,CAACkB,KAAK,CAAG,EAAC,CAAG,IAAI,CAACV,QAAQ,CAAG,KAAO,CAAA,IAAI,CAACF,UAAU,CAAG,EAAE,CAAE,IAAI,CAAC9rM,EAAE,CAAGuqM,cAAAA,EAAAA,CAAkB,IAAI,CAAC7uH,MAAM,CAAG,KAAA,CAAO,IAAI,CAACuwH,OAAO,CAAG,KAAO,CAAA,IAAI,CAACxkO,OAAO,CAAG,EAAI,CAAA,IAAI,CAACwjO,QAAQ,CAAG,IAAM,CAAA,IAAI,CAACzkO,IAAI,CAAG,IAAIH,IAAK,CAAA,IAAI,CAAG,CAAA,IAAI,CAAC0mO,SAAS,CAAG,IACvP,CAAA,IAAI,CAAClsI,KAAK,CAAGvnG,IAAQ,EAAA,EACrB,CAAA,IAAI,CAACmU,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACk+N,KAAK,CAAG37N,IAAAA,EAAQ,EACrB,CAAA,IAAI,CAACvI,OAAO,CAAGA,OAAAA,EAAW,EAAC,CAC3B,GAAIujO,IAAM,CAAA,IAAI,CAACA,IAAI,CAAGA,KACxB,CA+LF,CA7NI,KAFED,CAEGmC,UAAU,CAAG,MAGlB,CALEnC,MAKGoC,YAAY,CAAG,QAGpB,CAREpC,KAQG5jO,CAAAA,YAAY,CAAG,QAGpB,CAXE4jO,KAAAA,CAWGqC,WAAW,CAAG,OAGnB,CAdErC,MAcG3jO,YAAY,CAAG,QAGpB,CAjBE2jO,KAiBGsC,CAAAA,cAAc,CAAG,UAGtB,CApBEtC,KAAAA,CAoBGuC,kBAAkB,CAAG,eAG1B,CAvBEvC,KAuBGwC,CAAAA,qBAAqB,CAAG,kBA0MjC,CAAMC,MAAAA,SAAAA,CAKJC,OAAQztO,CAAAA,IAAI,CAAE,CACZ,MAAMwG,IAAAA,CAAOxG,IAAKwG,CAAAA,IAAI,CAACpG,KAAK,CAC5B,IAAK,MAAMyhN,GAAOr7M,IAAAA,IAAAA,CAAK,CACrB,IAAI,CAACF,GAAG,CAACu7M,GAAAA,CAAK7hN,IAChB,EAAA,CACF,CACA0tO,UAAAA,CAAW1tO,IAAI,CAAE,CACf,MAAMwG,IAAAA,CAAOxG,IAAKwG,CAAAA,IAAI,CAACpG,KAAK,CAC5B,IAAK,MAAMyhN,GAAAA,IAAOr7M,IAAK,CAAA,CACrB,IAAI,CAACnG,MAAM,CAACwhN,GAAAA,CAAK7hN,IACnB,EAAA,CACF,CACAsG,GAAAA,CAAIu7M,GAAG,CAAE7hN,IAAI,CAAE,CACb,GAAI,IAAI,CAACC,MAAM,CAAC4hN,GAAI,CAAA,EAAI,IAAI,CAAC5hN,MAAM,CAAC4hN,GAAI,CAAA,CAACthN,IAAI,CAACtB,OAAO,CAACe,QAAU,CAAC,CAAA,CAAG,CAClE,MACF,CACA,GAAI,CAAC,IAAI,CAACC,MAAM,CAAC4hN,GAAAA,CAAI,CAAE,CACrB,IAAI,CAAC5hN,MAAM,CAAC4hN,GAAAA,CAAI,CAAG,CACjBthN,IAAM,CAAA,EAAE,CACV,CACA,GAAI,IAAI,CAACsyC,IAAI,CAAE,CACb,IAAI,CAAC5yC,MAAM,CAAC4hN,GAAAA,CAAI,CAAC5zM,IAAI,CAAG,GAC1B,CACF,CACA,IAAI,CAAChO,MAAM,CAAC4hN,GAAAA,CAAI,CAACthN,IAAI,CAACzJ,IAAI,CAACkJ,IAAAA,CAAAA,CAC3B,GAAI,IAAI,CAAC6yC,IAAI,CAAE,CACb,IAAI,CAAC5yC,MAAM,CAAC4hN,GAAAA,CAAI,CAAC5zM,IAAI,CAACjO,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,CAAC,CAAG7yC,KAC3C,CACF,CACAK,MAAAA,CAAOwhN,GAAG,CAAE7hN,IAAI,CAAE,CAChB,GAAI,CAAC,IAAI,CAACC,MAAM,CAAC4hN,GAAI,CAAA,CAAE,CACrB,MACF,CACA,GAAI,IAAI,CAAChvK,IAAI,CAAE,CACb,GAAI,CAAC,IAAI,CAAC5yC,MAAM,CAAC4hN,GAAAA,CAAI,CAAC5zM,IAAI,CAACjO,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,CAAC,CAAE,CAC3C,MACF,CACF,CACA,MAAM7zC,GAAAA,CAAM,IAAI,CAACiB,MAAM,CAAC4hN,GAAI,CAAA,CAACthN,IAAI,CAACtB,OAAO,CAACe,MAC1C,GAAIhB,GAAAA,GAAQ,CAAC,CAAA,CAAG,CACd,MACF,CACA,IAAI,CAACiB,MAAM,CAAC4hN,GAAAA,CAAI,CAACthN,IAAI,CAACzB,MAAM,CAACE,GAAK,CAAA,CAAA,CAAA,CAClC,GAAI,IAAI,CAAC6zC,IAAI,CAAE,CACb,OAAO,IAAI,CAAC5yC,MAAM,CAAC4hN,GAAAA,CAAI,CAAC5zM,IAAI,CAACjO,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,EAAC,CAE/C,GAAI,IAAI,CAAC5yC,MAAM,CAAC4hN,GAAI,CAAA,CAACthN,IAAI,CAACtK,MAAM,GAAK,CAAG,CAAA,CACtC,OAAO,IAAI,CAACgK,MAAM,CAAC4hN,GAAI,EACzB,CACF,CACA/sJ,IAAK94D,CAAAA,IAAI,CAAE,CACT,MAAMH,KAAAA,CAAQ,EAAC,CACf,MAAMwJ,KAAAA,CAAQ,EAAE,CAChB,IAAIrF,IAAM6hN,CAAAA,GAAAA,CAAKr7M,IAAMmnO,CAAAA,QAAAA,CAAUC,YAC/B,CAAA,MAAM1nO,IAAO,CAAA,CAACN,CAAGC,CAAAA,CAAAA,GAAAA,CACf,OAAO,IAAI,CAAC5F,MAAM,CAAC2F,CAAAA,CAAE,CAACrF,IAAI,CAACtK,MAAM,CAAG,IAAI,CAACgK,MAAM,CAAC4F,CAAAA,CAAE,CAACtF,IAAI,CAACtK,MAC1D,CACA,CAAA,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIgG,IAAK/F,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClC6rN,GAAAA,CAAM7lN,IAAI,CAAChG,CAAAA,CAAE,CACb,GAAI6rN,GAAe7sN,YAAAA,KAAAA,CAAO,CACxB,GAAI6sN,GAAI5rN,CAAAA,MAAM,GAAK,CAAA,CAAG,CACpB,QACF,CACA,GAAI4rN,GAAAA,CAAI5rN,MAAM,GAAK,CAAG,CAAA,CACpB4rN,GAAMA,CAAAA,GAAG,CAAC,CAAA,EAAE,CACd,KAAO,CACL+rB,YAAAA,CAAe,KACf,CAAA,IAAI,IAAI9mO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+6M,GAAI5rN,CAAAA,MAAM,CAAE6Q,CAAAA,EAAAA,CAAI,CACjC,GAAI,CAAC,IAAI,CAAC7G,MAAM,CAAC4hN,GAAG,CAAC/6M,CAAE,CAAA,CAAC,CAAE,CACxB8mO,YAAe,CAAA,IAAA,CACf,KACF,CACF,CACA,GAAIA,YAAc,CAAA,CAChB,QACF,CACApnO,IAAAA,CAAOq7M,GAAIhrN,CAAAA,KAAK,CAAC,CAAA,CAAA,CAAGqP,IAAI,CAACA,IACzBynO,CAAAA,CAAAA,QAAAA,CAAWnnO,IAAK3P,CAAAA,KAAK,CAAC,CAAA,CAAA,CACtB,GAAI82O,QAAS13O,CAAAA,MAAM,GAAK,CAAA,CAAG,CACzB03O,QAAAA,CAAWA,QAAQ,CAAC,CAAE,EACxB,CACA,IAAI,IAAIvnN,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACnmB,MAAM,CAACuG,IAAI,CAAC,CAAE,CAAA,CAAC,CAACjG,IAAI,CAACtK,MAAM,CAAEmwB,CAAAA,EAAAA,CAAI,CACvDpmB,IAAO,CAAA,IAAI,CAACC,MAAM,CAACuG,IAAI,CAAC,CAAA,CAAE,CAAC,CAACjG,IAAI,CAAC6lB,CAAE,CAAA,CACnC,GAAI,CAAC,IAAI,CAACysB,IAAI,CAAG,CAACh3C,KAAK,CAACmE,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,CAAC,CAAGxtC,KAAMpG,CAAAA,OAAO,CAACe,IAAAA,CAAAA,GAAU,CAAC,CAAA,GAAMA,IAAAA,CAAKwG,IAAI,CAAClI,GAAG,CAACqvO,QAAW,CAAA,CAAA,CACjG,GAAI,IAAI,CAAC96L,IAAI,CAAE,CACbh3C,KAAK,CAACmE,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,CAAC,CAAG,KAC3B,CACAxtC,KAAAA,CAAMvO,IAAI,CAACkJ,IACb,EAAA,CACF,CACA,QACF,CACF,CACA,GAAI6hN,GAAAA,EAAO,OAAOA,GAAQ,GAAA,QAAA,EAAY,IAAI,CAAC5hN,MAAM,CAAC4hN,GAAI,CAAA,CAAE,CACtD,IAAI,IAAIz7L,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACnmB,MAAM,CAAC4hN,GAAAA,CAAI,CAACthN,IAAI,CAACtK,MAAM,CAAEmwB,CAAAA,EAAAA,CAAI,CACnDpmB,IAAAA,CAAO,IAAI,CAACC,MAAM,CAAC4hN,GAAI,CAAA,CAACthN,IAAI,CAAC6lB,CAAE,CAAA,CAC/B,GAAI,IAAI,CAACysB,IAAI,CAAE,CACb,GAAI,CAACh3C,KAAK,CAACmE,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,CAAC,CAAE,CAC3Bh3C,KAAK,CAACmE,IAAI,CAAC,IAAI,CAAC6yC,IAAI,CAAC,CAAC,CAAG,IAAA,CACzBxtC,KAAMvO,CAAAA,IAAI,CAACkJ,IAAAA,EACb,CACF,CAAA,KAAO,GAAIqF,KAAAA,CAAMpG,OAAO,CAACe,IAAAA,CAAAA,GAAU,CAAC,CAAA,CAAG,CACrCqF,KAAAA,CAAMvO,IAAI,CAACkJ,IACb,EAAA,CACF,CACF,CACF,CACA,OAAOqF,KACT,CAhHAtH,WAAYF,CAAAA,GAAAA,CAAM,IAAI,CAAC,CACrB,IAAI,CAACoC,MAAM,CAAG,EACd,CAAA,IAAI,CAAC4yC,IAAI,CAAGh1C,IACd,CA8GF,CAEA,MAAMgwO,aAAAA,SAAsB5vO,YAiB1BsC,CAAAA,IAAAA,CAAKutO,OAAU,CAAA,EAAE,CAAE,CACjB,MAAMC,OAAS/4O,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAACquN,OAAO,CACtC,CAAA,GAAIF,OAAQ/B,CAAAA,OAAO,GAAKjuO,SAAAA,CAAW,CACjC,OAAOiwO,OAAOp8I,MAAM,CAAC,KAACg+H,EAAQA,KAAMoc,CAAAA,OAAO,GAAK+B,OAAAA,CAAQ/B,OAAO,CACjE,CACA,OAAOgC,MACT,CACAznO,GAAIqpN,CAAAA,KAAK,CAAE,CACT,GAAI,IAAI,CAACqe,OAAO,CAAC1vO,GAAG,CAACqxN,KAAAA,CAAAA,CAAQ,OAC7B,IAAI,CAACqe,OAAO,CAAC1nO,GAAG,CAACqpN,KACjB,CAAA,CAAA,IAAI,CAACse,UAAU,CAAC1vO,GAAG,CAACoxN,KAAAA,CAAM3vL,EAAE,CAAE2vL,KAC9B,CAAA,CAAA,GAAIA,KAAMqb,CAAAA,IAAI,EAAEnqO,GAAAA,CAAK,CACnB,IAAI,CAACqtO,WAAW,CAAC3vO,GAAG,CAACoxN,KAAAA,CAAMqb,IAAI,CAACnqO,GAAG,CAAE8uN,OACvC,CACA,GAAI,CAAC,IAAI,CAACwe,YAAY,CAAC7vO,GAAG,CAACqxN,KAAAA,CAAMr2N,IAAI,CAAA,CAAG,CACtC,IAAI,CAAC60O,YAAY,CAAC5vO,GAAG,CAACoxN,KAAAA,CAAMr2N,IAAI,CAAE,IAAIyP,GAAAA,EACxC,CACA,IAAI,CAAColO,YAAY,CAACp2O,GAAG,CAAC43N,KAAMr2N,CAAAA,IAAI,CAAEgN,CAAAA,GAAG,CAACqpN,KAAAA,CAAAA,CACtCA,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAAC+wO,aAAa,CAAE,IAAI,CACzCze,CAAAA,KAAMsb,CAAAA,QAAQ,CAAG,IAAI,CACrB,IAAI,CAACoD,KAAK,CAACZ,OAAO,CAAC9d,KAAAA,CAAAA,CACnBA,MAAMnpN,IAAI,CAACnJ,EAAE,CAAC,KAAO,CAAA,IAAI,CAACixO,SAAS,CAAE,IAAI,CACzC3e,CAAAA,KAAAA,CAAMnpN,IAAI,CAACnJ,EAAE,CAAC,QAAU,CAAA,IAAI,CAACkxO,YAAY,CAAE,IAAI,CAC/C,CAAA,IAAI,CAACrvO,IAAI,CAAC,KAAA,CAAOywN,KACjB,CAAA,CAAA,IAAI,CAACzwN,IAAI,CAAC,CAAC,IAAI,EAAEywN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE2vL,KAC7B,CAAA,CAAA,GAAIA,KAAMqb,CAAAA,IAAI,EAAEnqO,GAAK,CAAA,CACnB,IAAI,CAAC3B,IAAI,CAAC,CAAC,QAAQ,EAAEywN,KAAAA,CAAMqb,IAAI,CAACnqO,GAAG,CAAC,CAAC,CAAE8uN,KAAAA,EACzC,CACA,GAAIA,KAAMoc,CAAAA,OAAO,CAAE,CACjB,IAAI,CAACG,IAAI,CAACvc,KACZ,EAAA,CACF,CACAtvN,MAAAA,CAAOsvN,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAACqe,OAAO,CAAC1vO,GAAG,CAACqxN,KAAAA,CAAAA,CAAQ,OAAO,KAAA,CACrC,IAAI,CAACqe,OAAO,CAACnvO,MAAM,CAAC8wN,KAAAA,CAAAA,CACpB,IAAI,CAACse,UAAU,CAACpvO,MAAM,CAAC8wN,KAAM3vL,CAAAA,EAAE,EAC/B,GAAI2vL,KAAAA,CAAMqb,IAAI,EAAEnqO,GAAK,CAAA,CACnB,IAAI,CAACqtO,WAAW,CAACrvO,MAAM,CAAC8wN,KAAMqb,CAAAA,IAAI,CAACnqO,GAAG,EACxC,CACA8uN,KAAAA,CAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACmxO,aAAa,CAAE,IAAI,CAC1C,CAAA,GAAI,IAAI,CAACD,YAAY,CAAC7vO,GAAG,CAACqxN,KAAMr2N,CAAAA,IAAI,CAAG,CAAA,CACrC,MAAM+L,KAAAA,CAAQ,IAAI,CAAC8oO,YAAY,CAACp2O,GAAG,CAAC43N,KAAAA,CAAMr2N,IAAI,CAAA,CAC9C+L,KAAMxG,CAAAA,MAAM,CAAC8wN,KAAAA,CAAAA,CACb,GAAItqN,KAAAA,CAAMnK,IAAI,GAAK,CAAG,CAAA,CACpB,IAAI,CAACizO,YAAY,CAACtvO,MAAM,CAAC8wN,KAAAA,CAAMr2N,IAAI,EACrC,CACF,CACA,IAAI,CAAC+0O,KAAK,CAACX,UAAU,CAAC/d,KAAAA,CAAAA,CACtBA,KAAMnpN,CAAAA,IAAI,CAACvJ,GAAG,CAAC,KAAA,CAAO,IAAI,CAACqxO,SAAS,CAAE,IAAI,CAAA,CAC1C3e,KAAMnpN,CAAAA,IAAI,CAACvJ,GAAG,CAAC,QAAA,CAAU,IAAI,CAACsxO,YAAY,CAAE,IAAI,CAAA,CAChD5e,KAAMzwN,CAAAA,IAAI,CAAC,QAAA,CAAUywN,OACrB,IAAI,CAACzwN,IAAI,CAAC,QAAUywN,CAAAA,KAAAA,CAAAA,CACpB,IAAI,CAACzwN,IAAI,CAAC,CAAC,OAAO,EAAEywN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE2vL,KAAAA,CAAAA,CAChC,GAAIA,KAAAA,CAAMqb,IAAI,EAAEnqO,GAAK,CAAA,CACnB,IAAI,CAAC3B,IAAI,CAAC,CAAC,WAAW,EAAEywN,KAAMqb,CAAAA,IAAI,CAACnqO,GAAG,CAAC,CAAC,CAAE8uN,KAAAA,EAC5C,CACA,OAAO,IACT,CACA53N,GAAIioC,CAAAA,EAAE,CAAE,CACN,OAAO,IAAI,CAACiuM,UAAU,CAACl2O,GAAG,CAAC+nB,MAAAA,CAAOkgB,EACpC,CAAA,CAAA,CACAwuM,QAAS3tO,CAAAA,GAAG,CAAE,CACZ,OAAO,IAAI,CAACqtO,WAAW,CAACn2O,GAAG,CAAC8I,GAC9B,CAAA,CACAqrO,IAAKvc,CAAAA,KAAK,CAAEloN,OAAO,CAAE,CACnB,GAAI,CAACkoN,KAAMsc,CAAAA,OAAO,EAAItc,KAAAA,CAAMj0G,MAAK,GAAM,CAACj0G,OAASgnO,EAAAA,KAAAA,CAAO,CACtD,MACF,CACA,MAAMzD,IAAAA,CAAOrb,KAAMqb,CAAAA,IAAI,CACvB,MAAM0D,SAAY,CAAA,IAAA,CAChB,IAAI,CAACxvO,IAAI,CAAC,MAAQywN,CAAAA,KAAAA,CAAAA,CAClB,IAAI,CAACzwN,IAAI,CAAC,CAAC,KAAK,EAAEywN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE2vL,KAC9B,CAAA,CAAA,GAAIqb,MAAQA,IAAKnqO,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC3B,IAAI,CAAC,CAAC,SAAS,EAAE8rO,IAAAA,CAAKnqO,GAAG,CAAC,CAAC,CAAE8uN,KAAAA,EACpC,CACAA,KAAAA,CAAMzwN,IAAI,CAAC,MAAQywN,CAAAA,KAAAA,EACrB,CACA,CAAA,MAAMgf,OAAU,CAACpxL,QACf,EAAA,CAAA,GAAIA,oBAAoBvoD,KAAO,CAAA,CAC7B26N,KAAM17J,CAAAA,SAAS,CAAG1W,SACpB,CAAO,KAAA,CACLoyK,KAAMpyK,CAAAA,QAAQ,CAAGA,SACnB,CACA,IAAI,CAAC2tL,OAAO,CAACU,KAAK,CAACjc,KAAAA,CAAO,IAAI,CAAA,CAC9B,GAAIA,KAAAA,CAAMliN,IAAI,GAAK,QAAU,CAAA,CAC3B,MAAMmhO,QAAAA,CAAWjf,MAAM3/M,IAAI,CAAC+9N,MAAM,CAClC,IAAI,IAAI/3O,CAAI,CAAA,CAAA,CAAGA,CAAI44O,CAAAA,QAAAA,CAAS34O,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAM64O,aAAgB,CAAA,IAAI,CAACZ,UAAU,CAACl2O,GAAG,CAAC62O,QAAQ,CAAC54O,CAAAA,CAAE,CACrD,CAAA,GAAI64O,aAAiB,EAAA,CAACA,cAAcnzH,MAAM,CAAE,CAC1C,IAAI,CAACwwH,IAAI,CAAC2C,aAAAA,CAAe,CACvBJ,KAAAA,CAAO,IACT,CAAA,EACF,CACF,CACA,GAAI9e,KAAAA,CAAMpyK,QAAQ,CAACm+D,MAAM,CAAE,CACzBgzH,SAAAA,GACF,CAAO,KAAA,CACL,IAAI,CAACxvO,IAAI,CAAC,YAAcywN,CAAAA,KAAAA,CAAAA,CACxB,IAAI,CAACzwN,IAAI,CAAC,CAAC,WAAW,EAAEywN,KAAM3vL,CAAAA,EAAE,CAAC,CAAC,CAAE2vL,KAAAA,CAAAA,CACpC,GAAIqb,IAAAA,EAAQA,KAAKnqO,GAAG,CAAE,CACpB,IAAI,CAAC3B,IAAI,CAAC,CAAC,eAAe,EAAE8rO,IAAKnqO,CAAAA,GAAG,CAAC,CAAC,CAAE8uN,KAC1C,EAAA,CACAA,KAAMzwN,CAAAA,IAAI,CAAC,YAAA,CAAcywN,KACzBA,CAAAA,CAAAA,KAAAA,CAAMpyK,QAAQ,CAAClgD,EAAE,CAAC,MAAQqxO,CAAAA,SAAAA,EAC5B,CACF,CAAA,KAAO,CACLA,SAAAA,GACF,CACF,CAAA,CACA,MAAMI,OAAAA,CAAU,CAACjtO,GAAAA,CAAK07C,QAAUwxL,CAAAA,KAAAA,GAAAA,CAC9Bpf,KAAMj0G,CAAAA,MAAM,CAAG,IACfi0G,CAAAA,KAAMsc,CAAAA,OAAO,CAAG,KAAA,CAChB,GAAIpqO,GAAAA,CAAK,CACP,IAAI,CAAC3C,IAAI,CAAC,OAAA,CAAS2C,GAAK8tN,CAAAA,KAAAA,CAAAA,CACxB,IAAI,CAACzwN,IAAI,CAAC,CAAC,MAAM,EAAEywN,KAAM3vL,CAAAA,EAAE,CAAC,CAAC,CAAEn+B,GAAAA,CAAK8tN,KACpCA,CAAAA,CAAAA,KAAAA,CAAMzwN,IAAI,CAAC,OAAA,CAAS2C,GAAK8tN,CAAAA,KAAAA,EAC3B,CAAO,KAAA,CACL,GAAIA,KAAAA,CAAMliN,IAAI,GAAK,QAAU,CAAA,CAC3B,MAAMtQ,OAAAA,CAAU,IAAI,CAAC+tO,OAAO,CAAC8D,UAAU,CAAC,QACxC,CAAA,CAAA,GAAI7xO,OAAQujC,CAAAA,MAAM,CAACivL,KAAAA,CAAM3vL,EAAE,CAAC,EAAI7iC,OAAAA,CAAQujC,MAAM,CAACivL,KAAAA,CAAM3vL,EAAE,CAAC,CAAC85E,UAAU,GAAKh5G,QAAAA,CAASmuO,IAAI,CAAE,CACrFnuO,QAAAA,CAASmuO,IAAI,CAAC5wF,WAAW,CAAClhJ,OAAAA,CAAQujC,MAAM,CAACivL,KAAM3vL,CAAAA,EAAE,CAAC,EACpD,CACA7iC,OAAAA,CAAQujC,MAAM,CAACivL,KAAM3vL,CAAAA,EAAE,CAAC,CAAG+uM,MAC7B,CACAJ,OAAAA,CAAQpxL,QACV,EAAA,CACF,CACA,CAAA,GAAIytL,IAAQrb,EAAAA,KAAAA,CAAMliN,IAAI,GAAK,SAAW,CAAA,CACpC,IAAI,CAACvO,IAAI,CAAC,YAAcywN,CAAAA,KAAAA,CAAAA,CACxB,IAAI,CAACzwN,IAAI,CAAC,CAAC,KAAK,EAAEywN,KAAAA,CAAM3vL,EAAE,CAAC,MAAM,CAAC,CAAE2vL,KACpCA,CAAAA,CAAAA,KAAMsc,CAAAA,OAAO,CAAG,IAAA,CAChB,MAAMiD,OAAAA,CAAUvf,KAAM0c,CAAAA,UAAU,EAChC,CAAA,GAAI1c,MAAMliN,IAAI,GAAK,QAAU,CAAA,CAC3B,MAAMmhO,QAAAA,CAAWjf,KAAM3/M,CAAAA,IAAI,CAAC+9N,MAAM,CAClC,IAAI,IAAI/3O,CAAAA,CAAI,EAAGA,CAAI44O,CAAAA,QAAAA,CAAS34O,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAM64O,aAAAA,CAAgB,IAAI,CAACZ,UAAU,CAACl2O,GAAG,CAAC62O,QAAQ,CAAC54O,CAAE,CAAA,CAAA,CACrD,GAAI,CAAC64O,aAAe,CAAA,CAClB,QACF,CACA,GAAIA,aAAAA,CAAcnzH,MAAM,EAAImzH,aAActxL,CAAAA,QAAQ,EAAIsxL,aAAc5C,CAAAA,OAAO,CAAE,CAC3E,QACF,CACA4C,aAAc5C,CAAAA,OAAO,CAAG,KAC1B,CACF,CACA,IAAI,CAACf,OAAO,CAACgB,IAAI,CAACgD,OAAAA,CAASvf,KAAMliN,CAAAA,IAAI,CAAEqhO,OAAAA,CAASnf,KAAOloN,CAAAA,OAAAA,EACzD,CAAO,KAAA,CACL,MAAM81C,QAAAA,CAAW,IAAI,CAAC2tL,OAAO,CAAC7tH,IAAI,CAACsyG,KAAAA,CAAMliN,IAAI,CAAEkiN,KAAM3/M,CAAAA,IAAI,CACzD2/M,CAAAA,KAAMj0G,CAAAA,MAAM,CAAG,IAAA,CACfizH,OAAQpxL,CAAAA,QAAAA,EACV,CACF,CACA4xL,WAAYtuO,CAAAA,GAAG,CAAE4M,IAAI,CAAEnQ,QAAQ,CAAE,CAC/B,IAAI,CAAC8xO,sBAAsB,CAACvuO,GAAAA,CAAK,IAAM4M,CAAAA,IAAAA,CAAMnQ,QAC/C,EAAA,CACA8xO,sBAAuBvuO,CAAAA,GAAG,CAAEwpO,QAAQ,CAAE58N,IAAI,CAAEnQ,QAAQ,CAAE,CACpD,MAAMhE,IAAO3D,CAAAA,IAAAA,CAAKuB,WAAW,CAACmzO,QAAYxpO,EAAAA,GAAAA,CAAAA,CAC1C,MAAMmqO,IAAAA,CAAO,CACXX,QAAAA,CAAUA,QAAY/wO,EAAAA,IAAAA,CACtBuH,IAAKA,GACP,CAAA,CACA,IAAI8uN,KAAAA,CAAQ,IAAI,CAAC6e,QAAQ,CAAC3tO,GAC1B,CAAA,CAAA,GAAI,CAAC8uN,KAAAA,CAAO,CACVA,KAAAA,CAAQ,IAAIob,KAAAA,CAAMzxO,IAAMmU,CAAAA,IAAAA,CAAMu9N,IAC9B,CAAA,CAAA,IAAI,CAAC1kO,GAAG,CAACqpN,KAAAA,EACX,CAAO,KAAA,GAAIA,KAAMj0G,CAAAA,MAAM,CAAE,CACvBp+G,SAASqyN,KAAM0f,CAAAA,gBAAgB,EAAI,IAAA,CAAM1f,KACzC,CAAA,CAAA,MACF,CACA,MAAM2f,SAAY,CAAC3f,KACjBA,EAAAA,CAAAA,KAAAA,CAAMlyN,IAAI,CAAC,OAAQ,WAAC8xO,EAAAA,CAClB,GAAI9hO,IAAAA,GAAS,UAAY,CAAA,CACvB,IAAI,CAAC+hO,aAAa,CAACD,WAAa,CAAA,CAAC1tO,GAAK+/B,CAAAA,QAAAA,GAAAA,CACpCtkC,SAASuE,GAAK0tO,CAAAA,WAAAA,EAChB,CACF,EAAA,CAAA,KAAO,CACLjyO,QAAAA,CAAS,IAAMiyO,CAAAA,WAAAA,EACjB,CACF,CAAA,CAAA,CACA5f,KAAMlyN,CAAAA,IAAI,CAAC,OAAA,CAAS,GAACoE,EAAAA,CACnB,GAAIA,GAAAA,CAAK,CACP,IAAI,CAACwtO,gBAAgB,CAAGxtO,IAC1B,CACAvE,QAAAA,CAASuE,GAAK8tN,CAAAA,KAAAA,EAChB,CACA,CAAA,CAAA,IAAI,CAACuc,IAAI,CAACvc,KACZ,EAAA,CAAA,CACA,GAAIA,KAAAA,CAAMpyK,QAAQ,CAAE,CAClBjgD,QAAAA,CAAS,IAAMqyN,CAAAA,KAAAA,EACjB,CAAO,KAAA,GAAIliN,IAAS,GAAA,OAAA,CAAS,CAC3B,IAAI,CAACgiO,UAAU,CAAC9f,KAAAA,CAAO2f,SACzB,EAAA,CAAA,KAAO,CACLA,SAAAA,CAAU3f,KACZ,EAAA,CACF,CACA8f,UAAAA,CAAWC,UAAU,CAAEC,YAAY,CAAE,CACnC,MAAM9uO,GAAAA,CAAM6uO,UAAWrD,CAAAA,UAAU,EACjC,CAAA,MAAMh1O,GAAM1B,CAAAA,IAAAA,CAAKyB,YAAY,CAACyJ,GAC9B,CAAA,CAAA,GAAIxJ,GAAQ,GAAA,OAAA,EAAWA,GAAQ,GAAA,MAAA,CAAQ,CACrC,MAAMusB,GAAMjuB,CAAAA,IAAAA,CAAKwB,YAAY,CAAC0J,GAC9B,CAAA,CAAA,MAAM+uO,QAAWj6O,CAAAA,IAAAA,CAAKuB,WAAW,CAAC2J,GAAAA,CAAAA,CAClC,MAAMgvO,UAAAA,CAAal6O,IAAKE,CAAAA,IAAI,CAAC+tB,GAAAA,CAAKgsN,QAASx6O,CAAAA,OAAO,CAACiC,GAAAA,CAAK,eACxD,CAAA,CAAA,CAAA,IAAI,CAAC6zO,OAAO,CAACgB,IAAI,CAAC2D,UAAY,CAAA,MAAA,CAAQ,CAAChuO,GAAAA,CAAKmO,IAC1C,GAAA,CAAA,GAAInO,GAAK,CAAA,CACP6tO,UAAW1/N,CAAAA,IAAI,CAAG,CAChBylG,OAAAA,CAAS,EACX,CACAk6H,CAAAA,YAAAA,CAAaD,UACf,EAAA,CAAA,KAAO,CACL,IAAI,CAACI,cAAc,CAACJ,UAAAA,CAAY1/N,IAAM,CAAA,CAAC7X,CAAG0rL,CAAAA,SAAAA,GAAAA,CACxC6rD,UAAW1/N,CAAAA,IAAI,CAAGA,IAAAA,CAClB2/N,YAAaD,CAAAA,UAAAA,EACf,CACF,EAAA,CACF,CACF,EAAA,CAAA,KAAO,CACLC,YAAAA,CAAaD,YACf,CACF,CACAI,cAAeJ,CAAAA,UAAU,CAAEj6H,OAAO,CAAEn4G,QAAQ,CAAE,CAC5C,MAAMumL,SAAAA,CAAY,EAAE,CACpB,IAAI7tI,KAAQ,CAAA,CAAA,CACZ,MAAM+5L,gBAAAA,CAAmB,CAACluO,GAAAA,CAAKmuO,aAC7B,GAAA,CAAA,IAAI,CAACR,aAAa,CAACQ,aAAAA,CAAe,CAACnuO,GAAAA,CAAK+/B,YACtCiiJ,SAAU/sL,CAAAA,IAAI,CAACk5O,aAAAA,CAAAA,CACf,GAAInsD,SAAAA,CAAU5tL,MAAM,GAAK+/C,KAAO,CAAA,CAC9B14C,QAAS,CAAA,IAAA,CAAMumL,SACjB,EAAA,CACF,CACF,EAAA,CAAA,CACA,IAAI,IAAI7tL,CAAI,CAAA,CAAA,CAAGA,CAAIy/G,CAAAA,OAAAA,CAAQA,OAAO,CAACx/G,MAAM,CAAED,CAAI,EAAA,CAAA,CAC7C,MAAML,IAAAA,CAAO8/G,QAAQA,OAAO,CAACz/G,CAAE,CAAA,CAACL,IAAI,CACpC,GAAIA,IAAAA,CAAM,CACRqgD,KAAAA,EAAAA,CACA,MAAMn1C,GAAAA,CAAM6uO,UAAWnD,CAAAA,cAAc,CAAC52O,IACtC,CAAA,CAAA,IAAI,CAACw5O,WAAW,CAACtuO,GAAAA,CAAK,UAAYkvO,CAAAA,gBAAAA,EACpC,CACF,CACA,GAAI/5L,KAAAA,GAAU,CAAG,CAAA,CACf14C,SAAS,IAAMumL,CAAAA,SAAAA,EACjB,CACF,CACA2rD,aAAcQ,CAAAA,aAAa,CAAE1yO,QAAQ,CAAE,CACrC,MAAMskC,QAAAA,CAAW,EAAE,CACnB,IAAIoU,KAAAA,CAAQ,CACZ,CAAA,MAAMhmC,IAAOggO,CAAAA,aAAAA,CAAchgO,IAAI,CAC/B,GAAIA,IAAAA,CAAKu7M,aAAa,GAAK,MAAQ,CAAA,CACjCjuN,QAAS,CAAA,IAAA,CAAMskC,UACf,MACF,CACA,MAAMquM,eAAAA,CAAkB,CAACpuO,GAAAA,CAAKimC,OAC5B,GAAA,CAAA,GAAIjmC,GAAKY,CAAAA,OAAAA,CAAQC,KAAK,CAACb,GACvB+/B,CAAAA,CAAAA,QAAAA,CAAS9qC,IAAI,CAACgxC,OAAAA,CAAAA,CACd,GAAIlG,QAAAA,CAAS3rC,MAAM,GAAK+/C,KAAO,CAAA,CAC7B14C,QAAS,CAAA,IAAA,CAAMskC,QACjB,EAAA,CACF,CACA,CAAA,MAAMsuM,UAAYhjB,iCAClB,CAAA,IAAI,IAAIl3N,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIk6O,SAAUj6O,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC,MAAML,IAAOqa,CAAAA,IAAI,CAACkgO,SAAS,CAACl6O,CAAAA,CAAE,CAAC,CAC/B,GAAIL,IAAAA,EAAQ,OAAOA,IAAAA,GAAS,QAAU,CAAA,CACpCqgD,KACA,EAAA,CAAA,MAAMn1C,GAAMmvO,CAAAA,aAAAA,CAAczD,cAAc,CAAC52O,IAAAA,CAAAA,CACzC,IAAI,CAACw5O,WAAW,CAACtuO,GAAK,CAAA,SAAA,CAAWovO,eACnC,EAAA,CACF,CACA,GAAIj6L,KAAU,GAAA,CAAA,CAAG,CACf14C,QAAS,CAAA,IAAA,CAAMskC,QACjB,EAAA,CACF,CACA0sM,SAAAA,CAAUzsB,GAAG,CAAE8N,KAAK,CAAE,CACpB,IAAI,CAAC0e,KAAK,CAAC/nO,GAAG,CAACu7M,GAAK8N,CAAAA,KAAAA,EACtB,CACA4e,YAAAA,CAAa1sB,GAAG,CAAE8N,KAAK,CAAE,CACvB,IAAI,CAAC0e,KAAK,CAAChuO,MAAM,CAACwhN,GAAAA,CAAK8N,KACzB,EAAA,CACAye,aAAcze,CAAAA,KAAK,CAAEr2N,IAAI,CAAE62O,OAAO,CAAE,CAClC,GAAI,IAAI,CAAChC,YAAY,CAAC7vO,GAAG,CAAC6xO,OAAU,CAAA,CAAA,CAClC,MAAM9qO,KAAAA,CAAQ,IAAI,CAAC8oO,YAAY,CAACp2O,GAAG,CAACo4O,SACpC9qO,KAAMxG,CAAAA,MAAM,CAAC8wN,KAAAA,CAAAA,CACb,GAAItqN,KAAAA,CAAMnK,IAAI,GAAK,CAAG,CAAA,CACpB,IAAI,CAACizO,YAAY,CAACtvO,MAAM,CAACsxO,OAAAA,EAC3B,CACF,CACA,GAAI,CAAC,IAAI,CAAChC,YAAY,CAAC7vO,GAAG,CAACqxN,KAAMr2N,CAAAA,IAAI,CAAG,CAAA,CACtC,IAAI,CAAC60O,YAAY,CAAC5vO,GAAG,CAACoxN,KAAMr2N,CAAAA,IAAI,CAAE,IAAIyP,GACxC,EAAA,CACA,IAAI,CAAColO,YAAY,CAACp2O,GAAG,CAAC43N,KAAAA,CAAMr2N,IAAI,CAAA,CAAEgN,GAAG,CAACqpN,KACxC,EAAA,CACAxyE,SAAU,CAAA,GAAGx2I,KAAK,CAAE,CAClB,OAAO,IAAI,CAAC0nO,KAAK,CAACv5K,IAAI,CAACnuD,KAAAA,CACzB,CACAgrF,MAAAA,CAAOr0F,QAAQ,CAAE,CACf,OAAOtI,MAAM2qB,IAAI,CAAC,IAAI,CAACquN,OAAO,CAAA,CAAEr8I,MAAM,CAAC,KAACg+H,EAAQryN,QAASqyN,CAAAA,KAAAA,CAAAA,CAC3D,CACA76J,IAAAA,CAAKx7D,IAAI,CAAEmU,IAAI,CAAE,CACf,MAAMpI,KAAQ,CAAA,IAAI,CAAC8oO,YAAY,CAACp2O,GAAG,CAACuB,IAAAA,CAAAA,CACpC,GAAI,CAAC+L,MAAO,OAAO,IAAA,CACnB,IAAK,MAAMsqN,KAAStqN,IAAAA,KAAAA,CAAM,CACxB,GAAI,CAACoI,IAAAA,EAAQkiN,KAAMliN,CAAAA,IAAI,GAAKA,IAAAA,CAAM,CAChC,OAAOkiN,KACT,CACF,CACA,OAAO,IACT,CACAygB,OAAAA,CAAQ92O,IAAI,CAAEmU,IAAI,CAAE,CAClB,MAAMpI,MAAQ,IAAI,CAAC8oO,YAAY,CAACp2O,GAAG,CAACuB,IACpC,CAAA,CAAA,GAAI,CAAC+L,KAAAA,CAAO,OAAO,EAAE,CACrB,MAAMqmE,OAAU12E,CAAAA,KAAAA,CAAM2qB,IAAI,CAACta,KAC3B,CAAA,CAAA,GAAI,CAACoI,IAAAA,CAAM,OAAOi+D,OAAAA,CAClB,OAAOA,OAAAA,CAAQimB,MAAM,CAAC,KAACg+H,EAAQA,MAAMliN,IAAI,GAAKA,IAChD,CAAA,CA3TA1P,WAAYsyO,CAAAA,MAAM,CAAC,CACjB,KAAK,EAAA,CAAI,IAAI,CAACrC,OAAO,CAAG,IAAIjlO,GAAO,CAAA,IAAI,CAACklO,UAAU,CAAG,IAAI7vO,GAAO,CAAA,IAAI,CAAC8vO,WAAW,CAAG,IAAI9vO,GAAO,CAAA,IAAI,CAAC+vO,YAAY,CAAG,IAAI/vO,GAAAA,CAAO,IAAI,CAACiwO,KAAK,CAAG,IAAIb,SAAAA,CAAU,IAAO,CAAA,CAAA,IAAI,CAAC/qF,MAAM,CAAG,IAAA,CAAM,IAAI,CAAC4oF,OAAO,CAAG,IAClM,CAAA,IAAI,CAACH,OAAO,CAAGmF,OACjB,CAyTF,CAzUMxC,cAEGX,UAAU,CAAG,MAGlB,CALEW,aAKG3mO,CAAAA,SAAS,CAAG,KAGjB,CARE2mO,aAAAA,CAQG1mO,YAAY,CAAG,QAGpB,CAXE0mO,cAWGT,WAAW,CAAG,OAgUvB,CAAA,MAAMkD,cAWJC,CAAAA,WAAAA,CAAY5gB,KAAK,CAAE,CACjB,GAAIA,KAAMliN,CAAAA,IAAI,GAAK,QAAA,CAAU,CAC3B,IAAI,CAAC+iO,WAAW,CAACjyO,GAAG,CAACoxN,KAAM3vL,CAAAA,EAAE,CAAE2vL,KAAAA,CAAAA,CAC/B,IAAI,CAACqe,OAAO,CAAC3wO,EAAE,CAAC,CAAC,WAAW,EAAEsyN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAACywM,kBAAkB,CAAE,IAAI,CAAA,CACvE,IAAI,CAACzC,OAAO,CAAC3wO,EAAE,CAAC,CAAC,KAAK,EAAEsyN,KAAM3vL,CAAAA,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC0wM,aAAa,CAAE,IAAI,CAAA,CAC5D,IAAI,CAAC1C,OAAO,CAAC3wO,EAAE,CAAC,CAAC,MAAM,EAAEsyN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC2wM,cAAc,CAAE,IAAI,CAC9D,CAAA,MAAM/B,QAAWjf,CAAAA,KAAAA,CAAM3/M,IAAI,CAAC+9N,MAAM,CAClC,IAAI,IAAI/3O,CAAI,CAAA,CAAA,CAAGA,CAAI44O,CAAAA,QAAAA,CAAS34O,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,IAAI,CAAC46O,mBAAmB,CAAChC,QAAQ,CAAC54O,CAAAA,CAAE,CAAE25N,KAAAA,EACxC,CACF,CAAA,KAAO,CACL,GAAI,IAAI,CAACkhB,eAAe,CAACvyO,GAAG,CAACqxN,MAAM3vL,EAAE,CAAA,CAAG,CACtC,IAAI,CAAC8wM,mBAAmB,CAACnhB,KAAAA,EAC3B,CACF,CACF,CACAohB,kBAAAA,CAAmB/wM,EAAE,CAAE,CACrB,IAAI,CAACguM,OAAO,CAAC/wO,GAAG,CAAC,CAAC,WAAW,EAAE+iC,EAAAA,CAAG,CAAC,CAAE,IAAI,CAACywM,kBAAkB,CAAE,IAAI,CAAA,CAClE,IAAI,CAACzC,OAAO,CAAC/wO,GAAG,CAAC,CAAC,KAAK,EAAE+iC,EAAAA,CAAG,CAAC,CAAE,IAAI,CAAC0wM,aAAa,CAAE,IAAI,CACvD,CAAA,IAAI,CAAC1C,OAAO,CAAC/wO,GAAG,CAAC,CAAC,MAAM,EAAE+iC,GAAG,CAAC,CAAE,IAAI,CAAC2wM,cAAc,CAAE,IAAI,EAC3D,CACAC,mBAAAA,CAAoB5wM,EAAE,CAAEgxM,MAAM,CAAE,CAC9B,IAAI3F,OAAAA,CAAU,IAAI,CAACwF,eAAe,CAAC94O,GAAG,CAACioC,EACvC,CAAA,CAAA,GAAI,CAACqrM,OAAAA,CAAS,CACZA,OAAAA,CAAU,IAAItiO,GAAAA,CACd,IAAI,CAAC8nO,eAAe,CAACtyO,GAAG,CAACyhC,EAAIqrM,CAAAA,OAAAA,EAC/B,CACAA,OAAAA,CAAQ/kO,GAAG,CAAC0qO,MACZ,CAAA,CAAA,MAAMrhB,MAAQ,IAAI,CAACqe,OAAO,CAACj2O,GAAG,CAACioC,EAC/B,CAAA,CAAA,GAAI2vL,KAAO,CAAA,IAAI,CAACmhB,mBAAmB,CAACnhB,KAAAA,EACtC,CACAmhB,mBAAoBnhB,CAAAA,KAAK,CAAE,CACzB,MAAMshB,IAAAA,CAAO,IAAI,CAACC,iBAAiB,CAACvhB,KACpC,CAAA,CAAA,GAAI,CAACshB,IAAAA,CAAM,OACX,IAAI,IAAIj7O,CAAI,CAAA,CAAA,CAAGA,CAAIi7O,CAAAA,IAAAA,CAAKh7O,MAAM,CAAED,CAAI,EAAA,CAAA,CAClC,MAAMq1O,OAAAA,CAAU,IAAI,CAACwF,eAAe,CAAC94O,GAAG,CAAC43N,KAAM3vL,CAAAA,EAAE,CACjD,CAAA,GAAI,CAACqrM,OAAAA,CAAS,SACd,IAAI,CAAC8F,cAAc,CAAC5yO,GAAG,CAAC0yO,IAAI,CAACj7O,CAAE,CAAA,CAAEq1O,OACnC,EAAA,CACF,CACA6F,iBAAAA,CAAkBvhB,KAAK,CAAE,CACvB,IAAI9uN,GAAM8uN,CAAAA,KAAAA,CAAM0c,UAAU,EAC1B,CAAA,GAAI,CAACxrO,GAAAA,CAAK,OAAO,IAAA,CACjBA,GAAMA,CAAAA,GAAAA,CAAIlK,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CACvB,MAAMs6O,IAAO,CAAA,CACXpwO,GACD,CAAA,CACD,GAAI8uN,KAAAA,CAAMliN,IAAI,GAAK,MAAQ,CAAA,CACzB,MAAM2jO,QAAAA,CAAWzhB,KAAM3/M,CAAAA,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC5hI,MAAM,CAC5C,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIo7O,QAAUp7O,CAAAA,CAAAA,EAAAA,CAAI,CAC/Bi7O,IAAAA,CAAKn6O,IAAI,CAAC+J,GAAAA,CAAIzL,OAAO,CAAC,MAAQ,CAAA,CAAC,EAAEY,CAAAA,CAAE,IAAI,CAAC,CAC1C,EAAA,CACF,CACA,OAAOi7O,IACT,CACAI,cAAe1hB,CAAAA,KAAK,CAAE,CACpB,GAAIA,KAAAA,CAAMliN,IAAI,GAAK,QAAU,CAAA,CAC3B,IAAI,CAAC+iO,WAAW,CAAC3xO,MAAM,CAAC8wN,KAAAA,CAAM3vL,EAAE,CAAA,CAChC,IAAI,CAAC+wM,kBAAkB,CAACphB,KAAM3vL,CAAAA,EAAE,CAChC,CAAA,MAAM4uM,QAAWjf,CAAAA,KAAAA,CAAM3/M,IAAI,CAAC+9N,MAAM,CAClC,IAAI,IAAI/3O,CAAI,CAAA,CAAA,CAAGA,CAAI44O,CAAAA,QAAAA,CAAS34O,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAMq1O,OAAAA,CAAU,IAAI,CAACwF,eAAe,CAAC94O,GAAG,CAAC62O,QAAQ,CAAC54O,CAAAA,CAAE,CACpD,CAAA,GAAI,CAACq1O,OAAAA,CAAS,SACdA,OAAAA,CAAQxsO,MAAM,CAAC8wN,KAAAA,CAAAA,CACf,GAAI0b,OAAAA,CAAQnwO,IAAI,GAAK,CAAG,CAAA,CACtB,IAAI,CAAC21O,eAAe,CAAChyO,MAAM,CAAC+vO,QAAQ,CAAC54O,CAAAA,CAAE,CACvC,CAAA,IAAK,KAAM,CAAC6K,GAAKywO,CAAAA,YAAAA,CAAa,GAAI,IAAI,CAACH,cAAc,CAAC,CACpD,GAAIG,YAAAA,GAAiBjG,OAAS,CAAA,CAC5B,QACF,CACA,IAAI,CAAC8F,cAAc,CAACtyO,MAAM,CAACgC,GAC7B,EAAA,CACF,CACF,CACA,IAAI,CAAC8vO,cAAc,CAAC,CAAC,OAAO,EAAEhhB,KAAM3vL,CAAAA,EAAE,CAAC,YAAY,CAAC,EACtD,CAAO,KAAA,CACL,MAAMqrM,OAAU,CAAA,IAAI,CAACwF,eAAe,CAAC94O,GAAG,CAAC43N,KAAAA,CAAM3vL,EAAE,CAAA,CACjD,GAAI,CAACqrM,OAAS,CAAA,OACd,IAAI,CAACwF,eAAe,CAAChyO,MAAM,CAAC8wN,KAAAA,CAAM3vL,EAAE,CAAA,CACpC,MAAMixM,IAAAA,CAAO,IAAI,CAACC,iBAAiB,CAACvhB,KACpC,CAAA,CAAA,GAAI,CAACshB,IAAAA,CAAM,OACX,IAAI,IAAIj7O,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIi7O,IAAKh7O,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClC,IAAI,CAACm7O,cAAc,CAACtyO,MAAM,CAACoyO,IAAI,CAACj7O,CAAE,CAAA,EACpC,CACF,CACF,CACAy6O,kBAAAA,CAAmB9gB,KAAK,CAAE,CACxBA,KAAMpyK,CAAAA,QAAQ,CAAClgD,EAAE,CAAC,KAAA,CAAO,CAACwD,GAAAA,CAAKmP,IAC7B,GAAA,CAAA,MAAMtR,SAAY,CAAA,IAAI,CAAC6yO,aAAa,CAACx5O,GAAG,CAAC8I,GACzC,CAAA,CAAA,GAAI,CAACnC,SAAAA,CAAW,OAChB,IAAI,IAAI1I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI0I,SAAUzI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC0I,SAAS,CAAC1I,CAAAA,CAAE,CAAC,IAAA,CAAMga,IACrB,EAAA,CACA,IAAI,CAACuhO,aAAa,CAAC1yO,MAAM,CAACgC,KAC5B,CACF,EAAA,CACA6vO,aAAc/gB,CAAAA,KAAK,CAAE,CACnB,GAAI,CAACA,KAAMpyK,CAAAA,QAAQ,CAAE,CACnB,IAAI,CAACozL,cAAc,CAAC,CAAC,OAAO,EAAEhhB,KAAM3vL,CAAAA,EAAE,CAAC,eAAe,CAAC,CAAA,CACvD,MACF,CACA,GAAI,CAAC,IAAI,CAACuxM,aAAa,CAAE,CACvB,MACF,CACA,IAAK,KAAM,CAAC1wO,GAAAA,CAAK2wO,QAAS,CAAA,GAAI,IAAI,CAACD,aAAa,CAAC,CAC/C,MAAMlG,OAAU,CAAA,IAAI,CAAC8F,cAAc,CAACp5O,GAAG,CAAC8I,GAAAA,CAAAA,CACxC,GAAI,CAACwqO,OAAW,EAAA,CAACA,QAAQ/sO,GAAG,CAACqxN,KAAQ,CAAA,CAAA,SACrC,MAAM8hB,UAAAA,CAAatpO,kBAAmBtH,CAAAA,GAAAA,CAAAA,CACtC,IAAIgB,GAAAA,CAAKmO,IACT,CAAA,GAAI2/M,KAAMpyK,CAAAA,QAAQ,CAACj/C,GAAG,CAACmzO,UAAa,CAAA,CAAA,CAClCzhO,IAAO2/M,CAAAA,KAAAA,CAAMpyK,QAAQ,CAACxlD,GAAG,CAAC05O,UAC5B,EAAA,CAAA,KAAO,GAAI9hB,KAAAA,CAAMpyK,QAAQ,CAACm+D,MAAM,CAAE,CAChC75G,GAAM,CAAA,CAAC,OAAO,EAAE8tN,KAAM3vL,CAAAA,EAAE,CAAC,sBAAsB,EAAEn/B,GAAAA,CAAI,EACvD,CAAO,KAAA,CACL,QACF,CACA,IAAI,IAAI7K,CAAI,CAAA,CAAA,CAAGA,CAAIw7O,CAAAA,QAAAA,CAASv7O,MAAM,CAAED,CAAI,EAAA,CAAA,CACtCw7O,QAAQ,CAACx7O,CAAAA,CAAE,CAAC6L,GAAAA,CAAKA,GAAOmO,EAAAA,IAAAA,EAC1B,CACA,IAAI,CAACuhO,aAAa,CAAC1yO,MAAM,CAACgC,GAAAA,EAC5B,CACF,CACA8vO,cAAAA,CAAe9uO,GAAG,CAAE,CAClB,IAAK,KAAM,CAAChB,GAAK2wO,CAAAA,QAAAA,CAAS,GAAI,IAAI,CAACD,aAAa,CAAC,CAC/C,MAAMP,MAAS,CAAA,IAAI,CAACU,gCAAgC,CAAC7wO,GAAAA,CAAAA,CACrD,GAAI,CAACmwO,MAAQ,CAAA,CACX,IAAI,IAAIh7O,CAAI,CAAA,CAAA,CAAGA,CAAIw7O,CAAAA,QAAAA,CAASv7O,MAAM,CAAED,CAAI,EAAA,CAAA,CACtCw7O,QAAQ,CAACx7O,CAAE,CAAA,CAAC6L,GACd,EAAA,CACA,IAAI,CAAC0vO,aAAa,CAAC1yO,MAAM,CAACgC,GAAAA,EAC5B,CACF,CACF,CACA6wO,gCAAAA,CAAiC7wO,GAAG,CAAE,CACpC,MAAMwqO,OAAU,CAAA,IAAI,CAAC8F,cAAc,CAACp5O,GAAG,CAAC8I,GACxC,CAAA,CAAA,GAAI,CAACwqO,OAAAA,CAAS,OAAO,IAAA,CACrB,IAAIsG,SAAAA,CAAY,IAChB,CAAA,IAAK,MAAMX,MAAU3F,IAAAA,OAAAA,CAAQ,CAC3B,GAAI2F,MAAOt1H,CAAAA,MAAM,EAAIs1H,MAAAA,CAAOzzL,QAAQ,CAAE,CACpC,OAAOyzL,MACT,CAAA,KAAO,GAAIA,MAAAA,CAAO/E,OAAO,CAAE,CACzB0F,SAAAA,CAAYX,OACd,CACF,CACA,OAAOW,SACT,CACArG,mBAAoB3b,CAAAA,KAAK,CAAE,CACzB,MAAM0b,OAAU,CAAA,IAAI,CAACwF,eAAe,CAAC94O,GAAG,CAAC43N,KAAAA,CAAM3vL,EAAE,CAAA,CACjD,GAAIqrM,OAAAA,CAAS,OAAOr2O,KAAAA,CAAM2qB,IAAI,CAAC0rN,OAAAA,CAAAA,CAC/B,OAAO,IACT,CACA9qO,IAAAA,EAAO,CACL,OAAOvL,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAAC6wN,WAAW,CAAC7xO,MAAM,EAAA,CAC3C,CACAizO,MAAAA,CAAO/wO,GAAG,CAAE,CACV,OAAO,IAAI,CAACswO,cAAc,CAAC7yO,GAAG,CAACuC,GACjC,CAAA,CACAgxO,oBAAqBhxO,CAAAA,GAAG,CAAE,CACxB,OAAO,CAAC,CAAC,IAAI,CAAC6wO,gCAAgC,CAAC7wO,GAAAA,CACjD,CACAW,OAAAA,CAAQX,GAAG,CAAEvD,QAAQ,CAAE,CACrB,MAAM0zO,MAAAA,CAAS,IAAI,CAACU,gCAAgC,CAAC7wO,GACrD,CAAA,CAAA,GAAI,CAACmwO,MAAAA,CAAQ,CACX1zO,QAAS,CAAA,CAAC,IAAI,EAAEuD,GAAI,CAAA,yBAAyB,CAAC,CAAA,CAC9C,MACF,CACA,GAAImwO,MAAAA,CAAOt1H,MAAM,CAAE,CACjB,MAAM+1H,UAAAA,CAAatpO,kBAAmBtH,CAAAA,GAAAA,CAAAA,CACtC,GAAImwO,MAAAA,CAAOzzL,QAAQ,CAACj/C,GAAG,CAACmzO,UAAa,CAAA,CAAA,CACnCn0O,QAAS,CAAA,IAAA,CAAM0zO,MAAOzzL,CAAAA,QAAQ,CAACxlD,GAAG,CAAC05O,UAAAA,CAAAA,CAAAA,CACnC,MACF,CAAA,KAAO,GAAIT,MAAAA,CAAOzzL,QAAQ,CAACm+D,MAAM,CAAE,CACjCp+G,QAAAA,CAAS,CAAC,OAAO,EAAE0zO,MAAOhxM,CAAAA,EAAE,CAAC,sBAAsB,EAAEn/B,GAAAA,CAAI,CAAC,CAAA,CAC1D,MACF,CACF,CACA,IAAInC,UAAY,IAAI,CAAC6yO,aAAa,CAACx5O,GAAG,CAAC8I,GACvC,CAAA,CAAA,GAAI,CAACnC,SAAAA,CAAW,CACdA,SAAAA,CAAY,EAAE,CACd,IAAI,CAAC6yO,aAAa,CAAChzO,GAAG,CAACsC,GAAAA,CAAKnC,SAC9B,EAAA,CACAA,SAAU5H,CAAAA,IAAI,CAACwG,QAAAA,EACjB,CACA6hC,OAAAA,EAAU,CACR,IAAI,CAAC6uM,OAAO,CAAC/wO,GAAG,CAAC,KAAA,CAAO,IAAI,CAACszO,WAAW,CAAE,IAAI,CAAA,CAC9C,IAAI,CAACvC,OAAO,CAAC/wO,GAAG,CAAC,QAAA,CAAU,IAAI,CAACo0O,cAAc,CAAE,IAAI,CAAA,CACpD,IAAK,MAAMrxM,EAAM,IAAA,IAAI,CAACwwM,WAAW,CAACviO,IAAI,EAAA,CAAG,CACvC,IAAI,CAAC8iO,kBAAkB,CAAC/wM,EAAAA,EAC1B,CACA,IAAI,CAACguM,OAAO,CAAG,IACf,CAAA,IAAI,CAACwC,WAAW,CAAC5xO,KAAK,EACtB,CAAA,IAAI,CAAC4xO,WAAW,CAAG,IACnB,CAAA,IAAI,CAACK,eAAe,CAACjyO,KAAK,EAC1B,CAAA,IAAI,CAACiyO,eAAe,CAAG,IACvB,CAAA,IAAI,CAACM,cAAc,CAACvyO,KAAK,EACzB,CAAA,IAAI,CAACuyO,cAAc,CAAG,IAAA,CACtB,IAAI,CAACI,aAAa,CAAC3yO,KAAK,EACxB,CAAA,IAAI,CAAC2yO,aAAa,CAAG,KACvB,CAhNAxzO,WAAYgwO,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACyC,WAAW,CAAG,IAAIpyO,GACvB,CAAA,IAAI,CAACyyO,eAAe,CAAG,IAAIzyO,GAC3B,CAAA,IAAI,CAAC+yO,cAAc,CAAG,IAAI/yO,GAC1B,CAAA,IAAI,CAACmzO,aAAa,CAAG,IAAInzO,GACzB,CAAA,IAAI,CAAC4vO,OAAO,CAAGD,MACf,CAAA,IAAI,CAACC,OAAO,CAAC3C,OAAO,CAAG,IAAI,CAC3B,IAAI,CAAC2C,OAAO,CAAC3wO,EAAE,CAAC,KAAO,CAAA,IAAI,CAACkzO,WAAW,CAAE,IAAI,CAAA,CAC7C,IAAI,CAACvC,OAAO,CAAC3wO,EAAE,CAAC,QAAU,CAAA,IAAI,CAACg0O,cAAc,CAAE,IAAI,EACrD,CAwMF,CAEA,MAAMS,uBAAAA,SAAgC7zO,YAKpCqI,CAAAA,GAAAA,CAAIyrO,MAAM,CAAE,CACV,MAAM/xM,EAAK+xM,CAAAA,MAAAA,CAAO/xM,EAAE,CACpB,GAAI,IAAI,CAACA,EAAAA,CAAG,CAAE,CACZ,MAAM,IAAI9/B,KAAM,CAAA,CAAC,sBAAsB,EAAE8/B,EAAG,CAAA,mCAAmC,CAAC,CAClF,CACA,IAAI,CAACA,EAAG,CAAA,CAAG+xM,MACX,CAAA,IAAI,CAACxxO,IAAI,CAACzJ,IAAI,CAACi7O,MAAAA,EACjB,CACA1xO,MAAAA,CAAO0xO,MAAM,CAAE,CACb,MAAM/xM,EAAAA,CAAK+xM,MAAO/xM,CAAAA,EAAE,CACpB,GAAI,CAAC,IAAI,CAACA,EAAAA,CAAG,CAAE,CACb,MAAM,IAAI9/B,KAAAA,CAAM,CAAC,0BAA0B,EAAE8/B,EAAAA,CAAG,YAAY,CAAC,CAC/D,CACA,OAAO,IAAI,CAACA,EAAAA,CAAG,CACf,MAAMnkC,KAAQ,CAAA,IAAI,CAAC0E,IAAI,CAACtB,OAAO,CAAC,IAAI,CAAC+gC,EAAAA,CAAG,CACxC,CAAA,GAAInkC,KAAU,GAAA,CAAC,EAAG,CAChB,IAAI,CAAC0E,IAAI,CAACzB,MAAM,CAACjD,KAAAA,CAAO,CAC1B,EAAA,CACF,CACAsjC,OAAAA,EAAU,CACR,IAAI,CAACliC,GAAG,EAAA,CACR,IAAI,IAAIjH,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACuK,IAAI,CAACtK,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC,IAAI,CAACuK,IAAI,CAACvK,CAAE,CAAA,CAACmpC,OAAO,GACtB,CACF,CA5BAphC,WAAa,EAAA,CACX,KAAK,EACL,CAAA,IAAI,CAACwC,IAAI,CAAG,GAAE,CA2BlB,CAEA,MAAMyxO,MAAe/zO,SAAAA,YAAAA,CAOnBg0O,OAAQpxO,CAAAA,GAAG,CAAEmP,IAAI,CAAE,CACjB,GAAI,IAAI,CAAC/P,MAAM,CAAC3B,GAAG,CAACuC,GAAM,CAAA,CAAA,CACxB,MACF,CACA,IAAI,CAACZ,MAAM,CAAC1B,GAAG,CAACsC,GAAKmP,CAAAA,IAAAA,CAAAA,CACrB,IAAI,CAAC9Q,IAAI,CAAC,KAAO2B,CAAAA,GAAAA,CAAKmP,IACxB,EAAA,CACA1R,GAAIuC,CAAAA,GAAG,CAAE,CACP,OAAO,IAAI,CAACZ,MAAM,CAAC3B,GAAG,CAACuC,GACzB,CAAA,CACA9I,GAAI8I,CAAAA,GAAG,CAAE,CACP,OAAO,IAAI,CAACZ,MAAM,CAAClI,GAAG,CAAC8I,GAAAA,CAAAA,EAAQ,IACjC,CACAs+B,OAAU,EAAA,CACR,IAAI,CAACl/B,MAAM,CAACrB,KAAK,GACnB,CACA,IAAI88G,MAAAA,CAAO/9G,KAAK,CAAE,CAChB,GAAI,CAACA,KAAAA,EAAS,IAAI,CAACmxO,OAAO,CAAE,CAC1B,MACF,CACA,IAAI,CAACA,OAAO,CAAG,IACf,CAAA,IAAI,CAAC5vO,IAAI,CAAC,MAAA,EACZ,CACA,IAAIw8G,QAAS,CACX,OAAO,IAAI,CAACozH,OACd,CACA/wO,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,IAAO,CAAA,CAAA,IAAI,CAACiE,MAAM,CAAG,IAAI7B,GAAO,CAAA,IAAI,CAAC0wO,OAAO,CAAG,MAC1D,CACF,CAlCI,MAFEkD,CAEG9qO,SAAS,CAAG,KAGjB,CALE8qO,MAAAA,CAKG9E,UAAU,CAAG,MAiCtB,CAAA,MAAMgF,KAAcj0O,SAAAA,YAAAA,CAWlBk0O,IAAK9vG,CAAAA,IAAI,CAAE1kI,KAAK,CAAE,CAChB,GAAI0kI,IAAM,CAAA,CACR,IAAI,CAACnjI,IAAI,CAAC,MACV,CAAA,CAAA,OAAO,IACT,CACA,IAAI,CAACkzO,aAAa,EAAIz0O,KAAAA,CAAM8F,UAAU,CACtC,MAAMuM,IAAAA,CAAO,IAAIjN,UAAAA,CAAW,IAAI,CAACiN,IAAI,CAAC/Z,MAAM,CAAG0H,KAAM1H,CAAAA,MAAM,CAC3D+Z,CAAAA,IAAAA,CAAKzR,GAAG,CAAC,IAAI,CAACyR,IAAI,CAAA,CAClBA,IAAKzR,CAAAA,GAAG,CAACZ,KAAAA,CAAO,IAAI,CAACqS,IAAI,CAAC/Z,MAAM,CAChC,CAAA,IAAI,CAAC+Z,IAAI,CAAGA,IACZ,CAAA,MAAM,IAAI,CAACqiO,QAAQ,EAAA,CAAA,CACnB,OAAO,IAAI,CAACC,MAAM,CAACrzM,IAAI,EAAA,CAAGh9B,IAAI,CAAC,GAAC0V,EAAAA,CAC9B,IAAI,CAACw6N,IAAI,CAACx6N,IAAI0qH,IAAI,CAAE1qH,GAAIha,CAAAA,KAAK,EAC/B,CAAA,CAAA,CAAGk4F,KAAK,CAAC,GAACh0F,EAAAA,CACR,IAAI,CAAC3C,IAAI,CAAC,OAAS2C,CAAAA,GAAAA,EACrB,CACF,CAAA,CACAwwO,QAAW,EAAA,CACT,GAAI,CAAC,IAAI,CAACE,UAAU,EAAI,IAAI,CAACH,aAAa,CAAG,IAAI,CAACI,SAAS,CAAG,IAAI,CAACC,UAAU,CAAE,CAC7E,IAAI,CAACF,UAAU,CAAG,IAClB,CAAA,MAAMztO,KAAO,IAAIE,QAAAA,CAAS,IAAI,CAACgL,IAAI,CAACU,MAAM,CAAE,IAAI,CAAC8hO,SAAS,CAAE,IAAI,CAACC,UAAU,CAC3E,CAAA,IAAI,CAACC,OAAL,GAAA,IAAI,CAACA,OAAAA,CAAY,IAAIC,WAAAA,CAAY,cACjC,CAAA,CAAA,CAAA,MAAMp2H,OAAU,CAAA,IAAI,CAACm2H,OAAO,CAACE,MAAM,CAAC9tO,IAAAA,CACpC,CAAA,IAAI,CAAC+tO,QAAQ,CAAGt2H,OAAAA,CAAQtlH,SAAS,CAAC,CAAG,CAAA,GAAA,CAAA,CAAK7B,OAAO,CAAC,KAAA,CAAO,EACzD,CAAA,CAAA,IAAI,CAAC09O,QAAQ,CAAG5mO,QAASqwG,CAAAA,OAAAA,CAAQtlH,SAAS,CAAC,GAAK,CAAA,GAAA,CAAA,CAAM,EACtD,CAAA,IAAI,CAAC87O,QAAQ,CAAGx2H,OAAAA,CAAQtlH,SAAS,CAAC,GAAK,CAAA,GAAA,CACvC,CAAA,IAAI,CAAC+7O,WAAW,CAAGz2H,OAAQtlH,CAAAA,SAAS,CAAC,GAAA,CAAK,GAC1C,CAAA,CAAA,GAAI,IAAI,CAAC+7O,WAAW,CAAC/zO,OAAO,CAAC,OAAa,CAAA,GAAA,CAAC,CAAG,CAAA,CAC5C,MAAMwjJ,MAAAA,CAASlmC,OAAQtlH,CAAAA,SAAS,CAAC,GAAA,CAAK,GAAK7B,CAAAA,CAAAA,OAAO,CAAC,KAAA,CAAO,EAC1D,CAAA,CAAA,GAAIqtJ,MAAOxsJ,CAAAA,MAAM,CAAG,CAAG,CAAA,CACrB,IAAI,CAAC48O,QAAQ,CAAGpwF,MAAO51F,CAAAA,IAAI,EAAK,CAAA,IAAI,CAACgmL,QAAQ,CAAChmL,IAAI,GACpD,CACF,CACA,IAAI,CAAC2lL,SAAS,EAAI,IACpB,CACA,GAAI,IAAI,CAACD,UAAU,CAAE,CACnB,GAAI,IAAI,CAACH,aAAa,CAAG,IAAI,CAACI,SAAS,CAAG,IAAI,CAACM,QAAQ,CAAE,CACvD,OAAO,KACT,CACA,GAAI,IAAI,CAACC,QAAQ,GAAK,EAAA,EAAM,IAAI,CAACA,QAAQ,GAAK,GAAK,CAAA,CACjD,MAAMvvO,QAAAA,CAAW,IAAIwB,QAAS,CAAA,IAAI,CAACgL,IAAI,CAACU,MAAM,CAAE,IAAI,CAAC8hO,SAAS,CAAE,IAAI,CAACM,QAAQ,EAC7E,MAAM9H,IAAAA,CAAO,CACX1xO,IAAAA,CAAM,IAAI,CAACmpJ,MAAM,CAAG,IAAI,CAACowF,QAAQ,CACjC33O,IAAM,CAAA,IAAI,CAAC43O,QAAQ,CACnB9iO,IAAMxM,CAAAA,QACR,CACA,CAAA,IAAI,CAACtE,IAAI,CAAC,MAAA,CAAQ8rO,IACpB,EAAA,CACA,IAAI,CAACwH,SAAS,EAAI,IAAI,CAACM,QACvB,CAAA,IAAI,CAACP,UAAU,CAAG,KAAA,CAClB,MAAMU,aAAAA,CAAgB,IAAI,CAACT,SAAS,CAAG,IAAI,CAACU,WAAW,CACvD,GAAID,aAAkB,GAAA,CAAA,CAAG,CACvB,IAAI,CAACT,SAAS,EAAI,IAAI,CAACU,WAAW,CAAGD,cACvC,CACA,OAAO,IACT,CACA,OAAO,KACT,CAnEAl1O,WAAYo1O,CAAAA,YAAY,CAAEC,YAAAA,CAAe,EAAE,CAAC,CAC1C,KAAK,EAAA,CAAI,IAAI,CAACX,UAAU,CAAG,GAAK,CAAA,IAAI,CAACS,WAAW,CAAG,GAAA,CAAK,IAAI,CAACV,SAAS,CAAG,CAAG,CAAA,IAAI,CAACJ,aAAa,CAAG,CAAA,CAAG,IAAI,CAACG,UAAU,CAAG,KAAO,CAAA,IAAI,CAACD,MAAM,CAAG,IAAM,CAAA,IAAI,CAACtiO,IAAI,CAAG,IAAIjN,UAAW,CAAA,CAAA,CAAA,CAAI,IAAI,CAAC2vO,OAAO,CAAG,KAAM,IAAI,CAACjwF,MAAM,CAAG,EAAI,CAAA,IAAI,CAACowF,QAAQ,CAAG,EAAA,CAAI,IAAI,CAACC,QAAQ,CAAG,EAAG,IAAI,CAACC,QAAQ,CAAG,EAAI,CAAA,IAAI,CAACC,WAAW,CAAG,EACrS,CAAA,IAAI,CAACvwF,MAAM,CAAG2wF,YAAAA,EAAgB,EAC9B,CAAA,IAAI,CAACd,MAAM,CAAGa,YAAahyO,CAAAA,IAAI,CAACkyO,SAAS,EACzC,CAAA,IAAI,CAACf,MAAM,CAACrzM,IAAI,EAAA,CAAGh9B,IAAI,CAAC,GAAC0V,EAAAA,CACvB,IAAI,CAACw6N,IAAI,CAACx6N,GAAI0qH,CAAAA,IAAI,CAAE1qH,GAAAA,CAAIha,KAAK,EAC/B,CAAA,CAAA,CAAGk4F,KAAK,CAAC,GAACh0F,EAAAA,CACR,IAAI,CAAC3C,IAAI,CAAC,OAAS2C,CAAAA,GAAAA,EACrB,CACF,EAAA,CA2DF,CAEA,MAAMyxO,eAAAA,CAOJ,IAAIj3H,UAAAA,CAAW1+G,KAAK,CAAE,CACpB,IAAI,CAAC41O,WAAW,CAAG51O,MACrB,CACA,IAAI0+G,UAAa,EAAA,CACf,OAAO,IAAI,CAACk3H,WAAW,CAEzBrH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,EAC3BtyG,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,OAAO3/M,IACT,CACA47N,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,EAhBrBhwO,WAAAA,CAAYioO,GAAG,CAAEwN,WAAW,CAAC,CAC3B,IAAI,CAACA,WAAW,CAAG,EACnB,CAAA,IAAI,CAACD,WAAW,CAAG,CACnB,CAAA,IAAI,CAACpI,IAAI,CAAGnF,GACZ,CAAA,IAAI,CAACwN,WAAW,CAAGA,YACrB,CAYF,CAEA,MAAMC,aAAsBH,SAAAA,eAAAA,CAK1BI,aAAc7yO,CAAAA,GAAG,CAAE4G,OAAO,CAAE20G,OAAAA,CAAU,CAAC,CAAE,CACvC,OAAO,IAAIntC,OAAQ,CAAA,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC3B,MAAM+9J,QAAAA,CAAW,IACfC,CAAAA,KAAAA,CAAM/yO,GAAK4G,CAAAA,OAAAA,CAAAA,CAASxF,IAAI,CAACo+B,SAASw1D,KAAK,CAAC,GAACh0F,EAAAA,CACvCu6G,OACA,EAAA,CAAA,GAAIA,OAAU,CAAA,IAAI,CAACC,UAAU,CAAE,CAC7Bs3H,QACF,GAAA,CAAA,KAAO,CACL/9J,MAAO/zE,CAAAA,GAAAA,EACT,CACF,CAAA,EACF,CACA8xO,CAAAA,QAAAA,GACF,CACF,CAAA,CACAzH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,IAAI,CAAC6yO,aAAa,CAAC7yO,GAAIqrO,CAAAA,IAAI,CAAE,CAC3B3lM,IAAM,CAAA,MACR,CAAG,CAAA,IAAI,CAAC81E,UAAU,CAAEp6G,CAAAA,IAAI,CAAE0V,MACxB,MAAMq5N,MAAAA,CAAS,IAAIgB,MAAAA,CACnB10O,QAAS,CAAA,IAAA,CAAM0zO,MACf,CAAA,CAAA,MAAM6C,KAAQ,CAAA,IAAI3B,KAAMv6N,CAAAA,GAAAA,CAAK,IAAI,CAACq2N,OAAO,CAACvrF,MAAM,CAChDoxF,CAAAA,KAAAA,CAAMx2O,EAAE,CAAC,MAAQ,CAAC2tO,IAChBgG,EAAAA,CAAAA,MAAAA,CAAOiB,OAAO,CAACjH,IAAK1xO,CAAAA,IAAI,CAAE0xO,IAAAA,CAAKh7N,IAAI,EACrC,CACA6jO,CAAAA,CAAAA,KAAAA,CAAMx2O,EAAE,CAAC,MAAQ,CAAA,IAAA,CACf2zO,MAAOt1H,CAAAA,MAAM,CAAG,KAClB,CACAm4H,CAAAA,CAAAA,KAAAA,CAAMx2O,EAAE,CAAC,OAAA,CAAS,GAACwE,EAAAA,CACjBvE,QAASuE,CAAAA,GAAAA,EACX,CACF,EAAA,CAAA,CAAA,CAAGg0F,KAAK,CAAC,GAACh0F,EAAAA,CACRvE,QAASuE,CAAAA,GAAAA,EACX,GACF,CACAw7G,IAAAA,CAAKx8G,GAAG,CAAEmwO,MAAM,CAAE,CAChB,OAAOA,MACT,CA/CAjzO,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,QACX,CAAA,CAAA,IAAI,CAACgI,OAAO,CAAGhI,GAAI+H,CAAAA,OAAM,CA8C7B,CAEA,MAAM+F,cAOJC,CAAAA,UAAAA,CAAWtmO,IAAI,CAAEtQ,OAAO,CAAE,CACxB,IAAI,CAAC62O,SAAS,CAACvmO,IAAAA,CAAK,CAAGtQ,OACvBA,CAAAA,OAAAA,CAAQ+tO,OAAO,CAAG,KAAI,CAExB+I,aAAcxmO,CAAAA,IAAI,CAAE,CAClB,OAAO,IAAI,CAACumO,SAAS,CAACvmO,IAAAA,EAAK,CAE7BuhO,UAAAA,CAAWvhO,IAAI,CAAE,CACf,OAAO,IAAI,CAACumO,SAAS,CAACvmO,IAAK,CAC7B,CACA,OAAOymO,QAAQrzO,GAAG,CAAE4M,IAAI,CAAE,CACxB,OAAO,CAAC,EAAE5M,GAAI,CAAA,CAAC,EAAE4M,IAAAA,CAAK,CACxB,CACAy+N,IAAAA,CAAKrrO,GAAG,CAAE4M,IAAI,CAAEnQ,QAAQ,CAAEqyN,KAAK,CAAEloN,OAAO,CAAE,CACxC,MAAMtK,OAAU,CAAA,IAAI,CAAC62O,SAAS,CAACvmO,IAAK,CAAA,CACpC,GAAI,CAACtQ,OAAS,CAAA,CACZ,MAAM0E,GAAAA,CAAM,CAAC,qCAAqC,EAAE4L,IAAAA,CAAK,gBAAgB,EAAE5M,GAAI,CAAA,CAAC,CAAC,CACjFvD,QAASuE,CAAAA,GAAAA,CAAAA,CACT,MACF,CACA,GAAI,CAAChB,GAAK,CAAA,CACR,IAAI,CAACszO,SAAS,CAACh3O,OAAAA,CAASG,QAAUqyN,CAAAA,KAAAA,CAAAA,CAClC,MACF,CACA,MAAM9xN,GAAAA,CAAMi2O,cAAeI,CAAAA,OAAO,CAACrzO,GAAAA,CAAK4M,IACxC,CAAA,CAAA,GAAI,IAAI,CAACizB,MAAM,CAAC7iC,GAAI,CAAA,GAAKC,SAAW,CAAA,CAClCR,QAAS,CAAA,IAAA,CAAM,IAAI,CAACojC,MAAM,CAAC7iC,GAAI,CAAA,EACjC,MAAO,GAAI,IAAI,CAACu2O,SAAS,CAACv2O,GAAAA,CAAI,CAAE,CAC9B,IAAI,CAACu2O,SAAS,CAACv2O,GAAI,CAAA,CAAC/G,IAAI,CAACwG,QAAAA,EAC3B,CAAO,KAAA,CACL,IAAI,CAAC82O,SAAS,CAACv2O,GAAI,CAAA,CAAG,CACpBP,QAAAA,CACD,CACD,MAAM9D,MAAO,IAAI,CACjB,MAAM66O,UAAAA,CAAa,SAASxyO,GAAG,CAAEyyO,MAAM,CACrC,CAAA,GAAIzyO,GAAK,CAAA,CACPrI,KAAK+6O,CAAAA,UAAU,CAAC12O,GAAAA,CAAKgE,GACrB,CAAA,CAAA,MACF,CACA,GAAIyyO,MAAOpI,CAAAA,IAAI,YAAYlnO,QAAAA,CAAU,CACnC,GAAI7H,OAAQq3O,CAAAA,UAAU,CAAE,CACtB,GAAI,CAACh7O,KAAAA,CAAK46O,SAAS,CAACv2O,GAAI,CAAA,CAAE,CACxB,MACF,CACA,GAAI,CACF,MAAMmS,IAAO7S,CAAAA,OAAAA,CAAQq3O,UAAU,CAACF,MAAAA,CAAOpI,IAAI,CAAA,CAC3C1yO,KAAK2lH,CAAAA,UAAU,CAACthH,GAAAA,CAAKmS,IACvB,EAAA,CAAE,MAAOnO,GAAAA,CAAK,CACZrI,KAAAA,CAAK+6O,UAAU,CAAC12O,GAAAA,CAAKgE,GACvB,EAAA,CACA,MACF,CACAyyO,MAAOpI,CAAAA,IAAI,CAAGn9J,GAAAA,CAAI4xJ,eAAe,CAAC,IAAIC,IAAAA,CAAK,CACzC0T,MAAAA,CAAOpI,IAAI,CACZ,CACD,CAAA,CAAA,GAAIvc,KAAO,CAAA,CACT,GAAIA,KAAAA,CAAMod,SAAS,CAAE,CACnBh+J,GAAAA,CAAIi+J,eAAe,CAACrd,MAAMod,SAAS,EACrC,CACApd,KAAAA,CAAMod,SAAS,CAAGuH,MAAOpI,CAAAA,KAAI,CAEjC,CACA/uO,OAAAA,CAAQ+uO,IAAI,CAACoI,OAAQ,CAACzyO,GAAAA,CAAKmO,IAAM++N,CAAAA,KAAAA,GAAAA,CAC/B,GAAI,CAACv1O,KAAK46O,CAAAA,SAAS,CAACv2O,GAAAA,CAAI,CAAE,CACxB,MACF,CACA,GAAIgE,GAAK,CAAA,CACPrI,KAAK+6O,CAAAA,UAAU,CAAC12O,GAAAA,CAAKgE,GACrB,CAAA,CAAA,MACF,CACA,GAAI,CACFrI,KAAAA,CAAK2lH,UAAU,CAACthH,GAAKV,CAAAA,OAAAA,CAAQkgH,IAAI,CAACi3H,MAAO58K,CAAAA,QAAQ,CAAE1nD,IAAAA,CAAM2/M,KAAQof,CAAAA,CAAAA,KAAAA,EACnE,CAAE,MAAO52O,CAAG,CAAA,CACVqB,KAAK+6O,CAAAA,UAAU,CAAC12O,GAAK1F,CAAAA,CAAAA,EACvB,CACF,CAAA,CAAGw3N,KACL,EAAA,CAAA,CACA,MAAM8kB,aAAAA,CAAgB5zO,GAAIlK,CAAAA,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CACvC,GAAI,IAAI,CAACw0O,IAAI,CAACC,aAAa,EAAI,IAAI,CAACD,IAAI,CAACE,OAAO,CAACuG,MAAM,CAAC6C,aAAkB,CAAA,EAAA,EAAEhtO,OAAAA,EAAWA,OAAQitO,CAAAA,aAAa,CAAD,CAAI,CAC7G,GAAI,CAAC,IAAI,CAACvJ,IAAI,CAACE,OAAO,CAACwG,oBAAoB,CAAC4C,aAAAA,CAAAA,CAAgB,CAC1D,MAAMpJ,OAAU,CAAA,IAAI,CAACF,IAAI,CAACE,OAAO,CAACC,mBAAmB,CAAC3b,KACtD,CAAA,CAAA,IAAIqhB,MACJ,CAAA,GAAIvpO,OAAWA,EAAAA,OAAAA,CAAQktO,aAAa,CAAE,CACpC3D,MAAAA,CAASvpO,OAAQktO,CAAAA,aAAa,CAACtJ,OAAAA,EACjC,CACA,GAAI,CAAC2F,MAAQ,CAAA,CACX3F,OAASnlO,EAAAA,IAAAA,CAAK,CAACN,CAAAA,CAAGC,CAChB,GAAA,CAAA,OAAOD,CAAEolO,CAAAA,IAAI,CAAC9vO,IAAI,CAAG2K,CAAEmlO,CAAAA,IAAI,CAAC9vO,IAAI,CAClC,CAAA,CACA81O,MAAS3F,CAAAA,OAAAA,GAAU,CAAA,EAAE,CAEvB,GAAI2F,MAAAA,CAAQ,IAAI,CAAC7F,IAAI,CAAC4C,MAAM,EAAE7B,IAAK8E,CAAAA,MAAAA,EACrC,CACA,IAAI,CAAC7F,IAAI,CAACE,OAAO,CAAC7pO,OAAO,CAACizO,aAAe,CAAA,CAAC5yO,GAAK+yO,CAAAA,iBAAAA,GAAAA,CAC7CP,UAAWxyO,CAAAA,GAAAA,CAAK,CACdqqO,IAAAA,CAAM0I,iBACNl9K,CAAAA,QAAAA,CAAU+8K,aACZ,CAAA,EACF,CACF,EAAA,CAAA,KAAO,CACLJ,UAAW,CAAA,IAAA,CAAM,CACfnI,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAUi4J,KAASA,EAAAA,KAAAA,CAAMqb,IAAI,CAACX,QAAQ,EAAIxpO,GAC5C,CAAA,EACF,CACF,CACF,CACAszO,SAAUh3O,CAAAA,OAAO,CAAEG,QAAQ,CAAEqyN,KAAK,CAAE,CAClC,MAAMklB,MAAAA,CAAS,SAAShzO,GAAG,CAAEmO,IAAI,CAAE++N,KAAK,CACtC,CAAA,GAAIltO,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,EACX,CAAO,KAAA,CACL,GAAI,CACFvE,QAAS,CAAA,IAAA,CAAMH,QAAQkgH,IAAI,CAAC,IAAMrtG,CAAAA,IAAAA,CAAM2/M,KAAQof,CAAAA,CAAAA,KAAAA,EAClD,CAAE,MAAO52O,CAAG,CAAA,CACVmF,QAASnF,CAAAA,CAAAA,EACX,CACF,CACF,EACAgF,OAAQ+uO,CAAAA,IAAI,CAAC,IAAA,CAAM2I,MAAQllB,CAAAA,KAAAA,EAC7B,CACAxwG,UAAAA,CAAWthH,GAAG,CAAE9H,MAAM,CAAEg5O,KAAK,CAAE,CAC7B,GAAIh5O,MAAAA,GAAW,IAAM,CAAA,CACnB,IAAI,CAAC2qC,MAAM,CAAC7iC,GAAI,CAAA,CAAG9H,OACrB,CAAA,KAAO,CACL,OAAO,IAAI,CAAC2qC,MAAM,CAAC7iC,GAAI,EACzB,CACA,IAAI,IAAI7H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACo+O,SAAS,CAACv2O,IAAI,CAAC5H,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,IAAI,CAACo+O,SAAS,CAACv2O,GAAAA,CAAI,CAAC7H,CAAAA,CAAE,CAAC,IAAA,CAAMD,OAAQg5O,KACvC,EAAA,CACA,OAAO,IAAI,CAACqF,SAAS,CAACv2O,GAAAA,EAAI,CAE5B02O,UAAW12O,CAAAA,GAAG,CAAEgE,GAAG,CAAE,CACnBY,OAAAA,CAAQC,KAAK,CAACb,GACd,CAAA,CAAA,GAAI,IAAI,CAACuyO,SAAS,CAACv2O,GAAI,CAAA,CAAE,CACvB,IAAI,IAAI7H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACo+O,SAAS,CAACv2O,GAAI,CAAA,CAAC5H,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,IAAI,CAACo+O,SAAS,CAACv2O,GAAAA,CAAI,CAAC7H,CAAAA,CAAE,CAAC6L,GAAAA,EACzB,CACA,OAAO,IAAI,CAACuyO,SAAS,CAACv2O,GAAI,EAC5B,CACF,CACAw/G,IAAAA,CAAK5vG,IAAI,CAAEuC,IAAI,CAAE,CACf,MAAM7S,OAAU,CAAA,IAAI,CAAC62O,SAAS,CAACvmO,IAAAA,CAAK,CACpC,GAAI,CAACtQ,OAAS,CAAA,CACZsF,OAAQqyO,CAAAA,IAAI,CAAC,CAAC,+BAA+B,EAAErnO,IAAK,CAAA,CAAC,CACrD,CAAA,OAAOuC,IACT,CACA,OAAO7S,OAAAA,CAAQkgH,IAAI,CAAC,IAAMrtG,CAAAA,IAAAA,CAC5B,CACA47N,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,CACnB,MAAM5wO,QAAU,IAAI,CAAC62O,SAAS,CAACrkB,KAAMliN,CAAAA,IAAI,CAAC,CAC1C,GAAI,CAACtQ,OAAS,CAAA,CACZsF,OAAQqyO,CAAAA,IAAI,CAAC,CAAC,+BAA+B,EAAEnlB,KAAAA,CAAMliN,IAAI,CAAC,CAAC,CAAA,CAC3D,MACF,CACA,GAAItQ,OAAAA,CAAQyuO,KAAK,CAAE,CACjBzuO,OAAQyuO,CAAAA,KAAK,CAACjc,KAAAA,CAAOoe,MACvB,EAAA,CACF,CACAta,UAAAA,CAAW5yN,GAAG,CAAE4M,IAAI,CAAE,CACpB,MAAM5P,GAAMi2O,CAAAA,cAAAA,CAAeI,OAAO,CAACrzO,GAAK4M,CAAAA,IAAAA,CACxC,CAAO,OAAA,IAAI,CAACizB,MAAM,CAAC7iC,GAAAA,EAAI,CAEzBk3O,YAAal0O,CAAAA,GAAG,CAAE4M,IAAI,CAAE,CACtB,MAAM5P,GAAMi2O,CAAAA,cAAAA,CAAeI,OAAO,CAACrzO,GAAK4M,CAAAA,IAAAA,CAAAA,CACxC,GAAI,IAAI,CAACizB,MAAM,CAAC7iC,GAAI,CAAA,CAAE,CACpB,OAAO,IAAI,CAAC6iC,MAAM,CAAC7iC,GAAI,CACzB,CACA,OAAOC,SACT,CACAk3O,YAAY34H,UAAa,CAAA,CAAC,CAAE,CAC1BA,UAAa9mH,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAG0yG,CAAAA,UAAAA,CAAAA,EAAe,CACxC,CAAA,IAAI,MAAMx+G,GAAAA,IAAO,IAAI,CAACm2O,SAAS,CAAC,CAC9B,IAAI,CAACA,SAAS,CAACn2O,GAAAA,CAAI,CAACw+G,UAAU,CAAGA,WACnC,CACF,CACA44H,cAAe,CACb,IAAI,MAAMp3O,GAAAA,IAAO,IAAI,CAACm2O,SAAS,CAAC,CAC9B,IAAI,CAACA,SAAS,CAACn2O,GAAAA,CAAI,CAACw+G,UAAU,CAAG,EACnC,CACF,CACAl9E,OAAAA,EAAU,CACR,IAAI,CAAC60M,SAAS,CAAG,EACjB,CAAA,IAAI,CAACI,SAAS,CAAG,EACjB,CAAA,IAAI,CAAC1zM,MAAM,CAAG,GAChB,CA/LA3iC,WAAAA,CAAYioO,GAAG,CAAC,CACd,IAAI,CAACgO,SAAS,CAAG,EACjB,CAAA,IAAI,CAACI,SAAS,CAAG,EACjB,CAAA,IAAI,CAAC1zM,MAAM,CAAG,EACd,CAAA,IAAI,CAACyqM,IAAI,CAAGnF,IACd,CA2LF,CAEA,MAAMkP,UACJC,CAAAA,SAAAA,CAAUnlO,IAAI,CAAE,CACd,GAAI,CAACA,IAAAA,CAAKytG,MAAM,CAAE,CAChB,MAAM,IAAIv9G,KAAAA,CAAM,0CAClB,CACA,GAAI,CAAC8P,IAAAA,CAAKytG,MAAM,CAAChpH,OAAO,CAAE,CACxB,MAAM,IAAIyL,KAAAA,CAAM,iDAClB,CAAA,CACA,GAAI8P,IAAAA,CAAKytG,MAAM,CAAChpH,OAAO,GAAK,CAAG,CAAA,CAC7B,MAAM,IAAIyL,KAAM,CAAA,iDAAA,CAClB,CACA,GAAI,CAAC8P,IAAAA,CAAKA,IAAI,CAAE,CACd,MAAM,IAAI9P,KAAM,CAAA,uCAAA,CAClB,CAAO,KAAA,GAAI,CAAClL,KAAAA,CAAMC,OAAO,CAAC+a,IAAKA,CAAAA,IAAI,EAAG,CACpC,MAAM,IAAI9P,KAAAA,CAAM,gDAClB,CAAA,CACA,IAAI,IAAIlK,CAAI,CAAA,CAAA,CAAGkY,GAAM8B,CAAAA,IAAAA,CAAKA,IAAI,CAAC/Z,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClD,MAAM8sD,KAAQ9yC,CAAAA,IAAAA,CAAKA,IAAI,CAACha,CAAE,CAAA,CAC1B,GAAI,CAAC8sD,KAAM7vB,CAAAA,IAAI,CAAE,CACf,MAAM,IAAI/yB,KAAM,CAAA,CAAC,+BAA+B,EAAElK,CAAE,CAAA,aAAa,CAAC,CACpE,CACA,GAAI,CAAC8sD,KAAM7vB,CAAAA,IAAI,CAACu1M,MAAM,CAAE,CACtB,MAAM,IAAItoO,KAAM,CAAA,CAAC,+BAA+B,EAAElK,CAAE,CAAA,oBAAoB,CAAC,CAC3E,CACA,GAAI,OAAO8sD,KAAM7vB,CAAAA,IAAI,CAACu1M,MAAM,GAAK,QAAA,CAAU,CACzC,MAAM,IAAItoO,KAAAA,CAAM,CAAC,uBAAuB,EAAElK,CAAE,CAAA,+BAA+B,CAAC,CAC9E,CACA,GAAI,CAAC8sD,KAAAA,CAAMsyL,QAAQ,CAAE,CACnB,MAAM,IAAIl1O,KAAAA,CAAM,CAAC,+BAA+B,EAAElK,CAAAA,CAAE,iBAAiB,CAAC,CACxE,CACF,CACF,CACAspH,KAAMtvG,CAAAA,IAAI,CAAE,CACV,OAAOA,IAAKA,CAAAA,IAAI,CAEpB,CAEA,MAAMqlO,IAAap3O,SAAAA,YAAAA,CAajB,IAAI8vO,MAAAA,CAAOpwO,KAAK,CAAE,CAChB,MAAM9B,KAAQ,CAAA,EACd,CAAA,IAAI,IAAI7F,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMvQ,KAAM1H,CAAAA,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC9C,MAAMgqC,GAAKriC,KAAK,CAAC3H,CAAE,CAAA,WAAY+0O,KAAQptO,CAAAA,KAAK,CAAC3H,CAAAA,CAAE,CAACgqC,EAAE,CAAGriC,KAAK,CAAC3H,CAAAA,CAAE,CAC7D6F,KAAK,CAACmkC,EAAG,CAAA,CAAG,KACd,CACA,IAAIhqC,CAAAA,CAAI,IAAI,CAACg4O,OAAO,CAAC/3O,MAAM,CAC3B,MAAMD,CAAI,EAAA,CAAA,CACR,MAAMgqC,EAAAA,CAAK,IAAI,CAACguM,OAAO,CAACh4O,CAAE,CAAA,CAC1B,GAAI,CAAC6F,KAAK,CAACmkC,GAAG,CAAE,CACd,IAAI,CAACmrM,IAAI,CAAC4C,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE+iC,EAAAA,CAAG,CAAC,CAAE,IAAI,CAACuwM,WAAW,CAAE,IAAI,CACxD,CAAA,MAAM5gB,KAAQ,CAAA,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAACioC,EAAAA,CAAAA,CACnC,GAAI2vL,KAAAA,CAAO,CACT,IAAI,CAAC0hB,cAAc,CAAC1hB,KAAAA,EACtB,CACA,IAAI,CAACqe,OAAO,CAAClvO,MAAM,CAAC9I,CAAG,CAAA,CAAA,EACzB,CACF,CACA,IAAI,MAAMgqC,EAAMnkC,IAAAA,KAAAA,CAAM,CACpB,MAAMy5O,KAAQppO,CAAAA,QAAAA,CAAS8zB,GAAI,EAC3B,CAAA,CAAA,GAAI,IAAI,CAACguM,OAAO,CAAC/uO,OAAO,CAACq2O,KAAW,CAAA,GAAA,CAAC,CAAG,CAAA,SACxC,IAAI,CAACtH,OAAO,CAACl3O,IAAI,CAACw+O,KAAAA,CAAAA,CAClB,MAAM3lB,KAAAA,CAAQ,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAACu9O,KACnC,CAAA,CAAA,GAAI,CAAC3lB,KAAAA,CAAO,CACV,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACtwO,IAAI,CAAC,CAAC,IAAI,EAAE63O,MAAM,CAAC,CAAE,IAAI,CAAC/E,WAAW,CAAE,IAAI,EAC9D,CAAO,KAAA,CACL,IAAI,CAACA,WAAW,CAAC5gB,OACnB,CACF,CACF,CACA,IAAIoe,MAAS,EAAA,CACX,OAAO,IAAI,CAACC,OAAO,CAErB,IAAIxF,MAAAA,CAAO7qO,KAAK,CAAE,CAChB,GAAI,IAAI,CAAC43O,OAAO,GAAK53O,KAAAA,CAAO,CAC1B,MACF,CACA,IAAIorO,IAAOR,CAAAA,OAAAA,CAAQ5qO,KACnB,CAAA,CAAA,GAAIorO,IAAS,GAAA,IAAA,CAAM,CACjBA,IAAAA,CAAO,IACPprO,CAAAA,KAAAA,CAAQ8qO,WAAY9qO,CAAAA,KAAAA,CAAOorO,IAC3B,CAAA,CAAA,GAAI,IAAI,CAACwM,OAAO,GAAK53O,MAAO,CAC1B,MACF,CACF,CACA,MAAM0sI,GAAAA,CAAM,IAAI,CAACkrG,OACjB,CAAA,IAAI,CAACA,OAAO,CAAG53O,KACf,CAAA,IAAI,CAAC63O,KAAK,CAAGzM,IACb,CAAA,IAAI,CAAC0M,SAAS,CAAGtM,WAAY,CAAA,IAAI,CAACqM,KAAK,CAAA,CACvC,IAAI,CAACt2O,IAAI,CAACm2O,IAAKjuO,CAAAA,YAAY,CAAEzJ,KAAAA,CAAO0sI,GACtC,EAAA,CACA,IAAIm+F,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC+M,OACd,CACA,OAAO5M,mBAAoBC,CAAAA,aAAa,CAAEC,gBAAgB,CAAE,CAC1D,OAAOF,mBAAAA,CAAoBC,cAAeC,gBAC5C,CAAA,CACAF,mBAAoBC,CAAAA,aAAa,CAAE,CACjC,GAAI,IAAI,CAAC8M,aAAa,CAAC9M,aAAAA,CAAc,CAAE,CACrC,OAAOA,aACT,CACA,MAAMG,IAAAA,CAAOR,OAAQK,CAAAA,aAAAA,CAAAA,CACrB,OAAO,IAAI,CAAC+M,mBAAmB,CAAC/M,aAAAA,CAAeG,IACjD,CAAA,CACA6M,QAAQ/3O,GAAG,CAAE2qO,MAAM,CAAE,CACnB,IAAIzyO,MAAS8H,CAAAA,GAAAA,CACb,IAAIkrO,IAAAA,CACJ,GAAI,CAACP,MAAQ,CAAA,CACXA,MAAS,CAAA,IAAI,CAAC+M,OAAO,CACrBxM,IAAAA,CAAO,IAAI,CAACyM,MACd,CACA,IAAIK,YAAe,CAAA,IAAI,CAACH,aAAa,CAAClN,MAAO,CAAA,CAC7C,GAAI,CAACqN,YAAc,CAAA,CACjB,GAAI,CAAC9M,IAAM,CAAA,CACTA,IAAOR,CAAAA,OAAAA,CAAQC,MACjB,EAAA,CACAA,OAAS,IAAI,CAACmN,mBAAmB,CAACnN,MAAQO,CAAAA,IAAAA,CAAAA,CAC1C8M,YAAe,CAAA,IAAI,CAACH,aAAa,CAAClN,MAAAA,EAAO,CAE3C,GAAIqN,YAAgBA,EAAAA,YAAAA,CAAaxzO,cAAc,CAACxE,GAAM,CAAA,CAAA,CACpD9H,MAAS8/O,CAAAA,YAAY,CAACh4O,GAAAA,CAAI,CAC1B,GAAI7I,KAAMC,CAAAA,OAAO,CAACc,MAAAA,CAAAA,CAAS,CACzBA,MAAAA,CAASA,MAAM,CAAC,CAAE,EACpB,CACA,GAAIA,MAAW,GAAA,IAAA,EAAQA,MAAW+H,GAAAA,SAAAA,CAAW,CAC3C/H,MAAAA,CAAS8H,IACX,CACF,CACA,OAAO9H,MACT,CACA+/O,aAAAA,CAAcj4O,GAAG,CAAEuoB,CAAC,CAAEoiN,MAAM,CAAE,CAC5B,IAAIzyO,OAAS8H,GACb,CAAA,IAAIkrO,IACJ,CAAA,IAAIgN,QACJ,CAAA,GAAI,CAACvN,MAAAA,CAAQ,CACXA,MAAAA,CAAS,IAAI,CAAC+M,OAAO,CACrBxM,KAAO,IAAI,CAACyM,KAAK,CACjBO,QAAW,CAAA,IAAI,CAACN,UAAS,CAC3B,KAAO,CACL1M,IAAAA,CAAOR,OAAQC,CAAAA,MAAAA,CAAAA,CACfuN,QAAW5M,CAAAA,WAAAA,CAAYJ,IACzB,EAAA,CACA,IAAI8M,YAAAA,CAAe,IAAI,CAACH,aAAa,CAAClN,MAAO,CAAA,CAC7C,GAAI,CAACqN,YAAc,CAAA,CACjBrN,OAAS,IAAI,CAACmN,mBAAmB,CAACnN,MAAQO,CAAAA,IAAAA,CAAAA,CAC1CA,IAAOR,CAAAA,OAAAA,CAAQC,MACfuN,CAAAA,CAAAA,QAAAA,CAAW5M,WAAYJ,CAAAA,IAAAA,CAAAA,CACvB8M,YAAe,CAAA,IAAI,CAACH,aAAa,CAAClN,MAAO,EAC3C,CACA,GAAIqN,YAAgBA,EAAAA,YAAY,CAACh4O,GAAAA,CAAI,EAAIk4O,QAAAA,CAAU,CACjD,MAAMl6O,MAAQk6O,QAAS3vN,CAAAA,CAAAA,CAAAA,CACvBrwB,MAAS8/O,CAAAA,YAAY,CAACh4O,GAAAA,CAAI,CAAChC,KAAAA,CAAM,CACjC,GAAI9F,MAAW,GAAA,IAAA,EAAQA,MAAW+H,GAAAA,SAAAA,CAAW,CAC3C/H,MAAAA,CAAS8H,IACX,CACF,CACA,OAAO9H,MACT,CACAigP,OAAQhmO,CAAAA,IAAI,CAAE,CACZ,IAAIimO,MAAAA,CACJ,GAAI,CACFA,OAAS,IAAI,CAACC,OAAO,CAAC52H,KAAK,CAACtvG,IAC9B,EAAA,CAAE,MAAOnO,GAAAA,CAAK,CACZY,OAAAA,CAAQC,KAAK,CAACb,KACd,MACF,CACA,IAAI,IAAI7L,CAAI,CAAA,CAAA,CAAGkY,GAAM+nO,CAAAA,MAAAA,CAAOhgP,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC/C,MAAM8sD,KAAQmzL,CAAAA,MAAM,CAACjgP,CAAAA,CAAE,CACvB,MAAMwyO,MAAS1lL,CAAAA,KAAAA,CAAM7vB,IAAI,CAACu1M,MAAM,CAChC,MAAM4M,QAAAA,CAAWtyL,KAAMsyL,CAAAA,QAAQ,CAC/B,GAAI,CAAC,IAAI,CAACM,aAAa,CAAClN,MAAAA,CAAO,CAAE,CAC/B,IAAI,CAACkN,aAAa,CAAClN,OAAO,CAAG,EAC7B,CAAA,MAAMO,IAAOR,CAAAA,OAAAA,CAAQC,MACrB,CAAA,CAAA,GAAI,CAAC,IAAI,CAAC2N,eAAe,CAACpN,IAAAA,CAAK,CAAE,CAC/B,IAAI,CAACoN,eAAe,CAACpN,IAAAA,CAAK,CAAGP,OAC/B,CACF,CACA3wO,MAAOskH,CAAAA,MAAM,CAAC,IAAI,CAACu5H,aAAa,CAAClN,MAAO,CAAA,CAAE4M,QAC1C,CAAA,CAAA,IAAI,CAACl2O,IAAI,CAAC,UAAA,CAAYspO,MAAQ4M,CAAAA,QAAAA,EAChC,CACF,CACAgB,UAAWpmO,CAAAA,IAAI,CAAE,CACf,IAAIimO,MAAAA,CACJ,GAAI,CACFA,MAAS,CAAA,IAAI,CAACC,OAAO,CAAC52H,KAAK,CAACtvG,IAAAA,EAC9B,CAAE,MAAOnO,GAAAA,CAAK,CACZY,OAAAA,CAAQC,KAAK,CAACb,GACd,CAAA,CAAA,MACF,CACA,IAAI,IAAI7L,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM+nO,OAAOhgP,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC/C,MAAM8sD,KAAAA,CAAQmzL,MAAM,CAACjgP,CAAE,CAAA,CACvB,MAAMwyO,MAAAA,CAAS1lL,MAAM7vB,IAAI,CAACu1M,MAAM,CAChC,MAAMqN,YAAAA,CAAe,IAAI,CAACH,aAAa,CAAClN,MAAO,CAAA,CAC/C,GAAI,CAACqN,YAAc,CAAA,SACnB,MAAMT,QAAAA,CAAWtyL,KAAMsyL,CAAAA,QAAQ,CAC/B,IAAI,MAAMv3O,GAAAA,IAAOu3O,QAAS,CAAA,CACxB,OAAOS,YAAY,CAACh4O,GAAAA,EAAI,CAE1B,GAAIhG,MAAOoW,CAAAA,IAAI,CAAC4nO,YAAAA,CAAAA,CAAc5/O,MAAM,GAAK,CAAG,CAAA,CAC1C,OAAO,IAAI,CAACy/O,aAAa,CAAClN,MAAO,CACjC,CAAO,OAAA,IAAI,CAAC2N,eAAe,CAAC5N,OAAAA,CAAQC,MAAQ,CAAA,EAC9C,CACA,IAAI,CAACtpO,IAAI,CAAC,aAAespO,CAAAA,MAAAA,CAAQ4M,QACnC,EAAA,CACF,CACAj2M,OAAAA,EAAU,CACR,IAAI,CAACu2M,aAAa,CAAG,IACrB,CAAA,IAAI,CAACS,eAAe,CAAG,IACvB,CAAA,IAAI,CAACnI,OAAO,CAAG,IACf,CAAA,IAAI,CAACkI,OAAO,CAAG,IAAA,CACf,IAAI,CAACj5O,GAAG,GACV,CACA04O,mBAAoBnN,CAAAA,MAAM,CAAEO,IAAI,CAAE,CAChC,IAAIhzO,MAAAA,CAASmyO,wBAAwB,CAACM,OAAO,CAC7C,GAAIzyO,MAAU,EAAA,IAAI,CAAC2/O,aAAa,CAAC3/O,MAAAA,CAAO,CAAE,CACxC,OAAOA,MACT,CACAA,MAAAA,CAASmyO,wBAAwB,CAACa,IAAAA,CAAK,CACvC,GAAIhzO,MAAU,EAAA,IAAI,CAAC2/O,aAAa,CAAC3/O,MAAAA,CAAO,CAAE,CACxC,OAAOA,MACT,CACAA,MAAAA,CAAS,IAAI,CAACogP,eAAe,CAACpN,IAAK,CAAA,CACnC,GAAIhzO,MAAAA,EAAU,IAAI,CAAC2/O,aAAa,CAAC3/O,MAAO,CAAA,CAAE,CACxC,OAAOA,MACT,CACA,OAAOkyO,cACT,CACAsI,WAAY5gB,CAAAA,KAAK,CAAE,CACjBA,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACg5O,YAAY,CAAE,IAAI,CACxC1mB,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAACi5O,cAAc,CAAE,IAAI,EAC5C3mB,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACg0O,cAAc,CAAE,IAAI,CAAA,CAC5C1hB,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACk5O,cAAc,CAAE,IAAI,CAAA,CAC5C,GAAI5mB,KAAAA,CAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAAC84L,YAAY,CAAC1mB,KAAAA,EACpB,CACF,CACA0mB,YAAAA,CAAa1mB,KAAK,CAAE,CAClB,IAAI,CAACqmB,OAAO,CAACrmB,KAAAA,CAAMpyK,QAAQ,EAC7B,CACA+4L,cAAAA,CAAe3mB,KAAK,CAAE,CACpB,GAAIA,KAAAA,CAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAACy4L,OAAO,CAACrmB,KAAAA,CAAMpyK,QAAQ,EAC7B,CACF,CACA8zL,cAAAA,CAAe1hB,KAAK,CAAE,CACpBA,KAAAA,CAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACo5O,YAAY,CAAE,IAAI,CACzC1mB,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACq5O,cAAc,CAAE,IAAI,CAC7C3mB,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACo0O,cAAc,CAAE,IAAI,CAAA,CAC7C1hB,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACs5O,cAAc,CAAE,IAAI,CAAA,CAC7C,GAAI5mB,KAAAA,CAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAAC64L,UAAU,CAACzmB,KAAAA,CAAMpyK,QAAQ,EAChC,CACA,IAAI,CAAC4tL,IAAI,CAAC4C,MAAM,CAACtwO,IAAI,CAAC,CAAC,IAAI,EAAEkyN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAACuwM,WAAW,CAAE,IAAI,EACjE,CACAgG,cAAAA,CAAe5mB,KAAK,CAAE,CACpB,GAAIA,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAAC64L,UAAU,CAACzmB,KAAAA,CAAMpyK,QAAQ,EAChC,CACF,CAnOAx/C,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,EACL,CAAA,IAAI,CAACwC,MAAM,CAAGP,cACd,CAAA,IAAI,CAACyN,aAAa,CAAG,EACrB,CAAA,IAAI,CAACS,eAAe,CAAG,EACvB,CAAA,IAAI,CAAChL,IAAI,CAAGnF,GACZ,CAAA,IAAI,CAACgI,OAAO,CAAG,EAAE,CACjB,IAAI,CAACkI,OAAO,CAAG,IAAIhB,WACrB,CA4NF,CAtOI,IAFEG,CAEGjuO,YAAY,CAAG,QAwOxB,CAAA,MAAMovO,uBAAuBv4O,YAK3BkhC,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC6mM,GAAG,CAAG,IAAA,CACX,IAAI,CAAC/oO,GAAG,GACV,CACAw5O,SAAAA,CAAUz2M,EAAE,CAAE02M,MAAM,CAAE,CACpB,GAAI,CAACA,MAAQ,CAAA,OACb,IAAI,CAACC,cAAc,CAACp4O,GAAG,CAACyhC,GAAI02M,MAC9B,EAAA,CACAE,SAAU52M,CAAAA,EAAE,CAAE,CACZ,OAAO,IAAI,CAAC22M,cAAc,CAAC5+O,GAAG,CAACioC,EAAAA,CACjC,CACA15B,GAAAA,CAAI4/N,MAAM,CAAE,CACV,MAAM2Q,UAAa3Q,CAAAA,MAAAA,CAAO4Q,MAAM,CAChC,GAAI,IAAI,CAACC,QAAQ,CAAC10O,cAAc,CAACw0O,UAAa,CAAA,CAAA,CAC5C9gK,UAAW,CAAA,IAAA,CACT,GAAImwJ,MAAAA,CAAO79G,SAAS,CAACzlB,IAAI,CAAE,CACzB,MAAMynC,GAAM,CAAA,IAAI,CAAC0sG,QAAQ,CAACF,UAAW,CAAA,CACrC,MAAM73O,GAAAA,CAAM,IAAI,CAACoB,KAAK,CAACnB,OAAO,CAACorI,GAC/B,CAAA,CAAA,IAAI,CAACjqI,KAAK,CAACpB,GAAAA,CAAI,CAAGknO,MAClB,CAAA,IAAI,CAAC6Q,QAAQ,CAACF,UAAAA,CAAW,CAAG3Q,MAAAA,CAC5B,IAAI,CAAChnO,IAAI,CAAC,MAAQ23O,CAAAA,UAAAA,CAAY3Q,MAC9B,CAAA,CAAA,IAAI,CAAChnO,IAAI,CAAC,CAAC,KAAK,EAAE23O,UAAW,CAAA,CAAC,CAAE3Q,MAClC,EAAA,CAAA,KAAO,CACLzjO,OAAAA,CAAQqyO,IAAI,CAAC,CAAC,6BAA6B,EAAE+B,UAAAA,CAAW,8EAA8E,CAAC,EACzI,CACF,GACA,OAAO,KACT,CACA,IAAI,CAACE,QAAQ,CAACF,UAAAA,CAAW,CAAG3Q,MAAAA,CAC5B,IAAI,CAAC9lO,KAAK,CAACtJ,IAAI,CAACovO,MAAAA,CAAAA,CAChB,IAAI,CAAChnO,IAAI,CAAC,KAAO23O,CAAAA,UAAAA,CAAY3Q,MAC7B,CAAA,CAAA,IAAI,CAAChnO,IAAI,CAAC,CAAC,IAAI,EAAE23O,UAAW,CAAA,CAAC,CAAE3Q,MAAAA,CAAAA,CAC/BnwJ,UAAW,CAAA,IAAA,CACT,GAAI,CAAC,IAAI,CAACghK,QAAQ,CAAC10O,cAAc,CAACw0O,YAAa,CAC7C,MACF,CACA,GAAI,CAAC,IAAI,CAAC7Q,GAAG,EAAI,CAAC,IAAI,CAACA,GAAG,CAACgR,OAAO,EAAI,CAAC,IAAI,CAAChR,GAAG,CAACgR,OAAO,CAAC9Q,MAAM,CAAE,CAC9D,MACF,CACA,MAAMp2L,WAAa,IAAI,CAACk2L,GAAG,CAACgR,OAAO,CAAC9Q,MAAM,CAAC+Q,WAAW,CACtD,IAAI31L,UAAAA,CACJ,MAAM41L,eAAAA,CAAkB,EAAE,CAC1B,MAAMC,0BAAAA,CAA6B,EAAE,CACrC,IAAIrnM,UAAAA,CAAW9pC,SAAS,CAAG,CAAG8pC,CAAAA,UAAAA,CAAW9pC,SAAS,CAAG8pC,UAAW75C,CAAAA,MAAM,CAAE65C,UAAW9pC,CAAAA,SAAS,EAAG,CAAA,CAC7F,MAAMoxO,SAAAA,CAAYtnM,UAAWzqC,CAAAA,KAAK,CAACyqC,UAAAA,CAAW9pC,SAAS,CAAC,CACxD,GAAIoxO,UAAUC,aAAa,CAACR,UAAW,CAAA,EAAIO,SAAUC,CAAAA,aAAa,CAACR,UAAAA,CAAW,CAACS,QAAQ,CAAE,CACvF,GAAIF,SAAAA,CAAUG,YAAY,EAAIH,SAAAA,CAAUG,YAAY,CAACV,UAAW,CAAA,CAAE,CAChEv1L,UAAAA,CAAa81L,SAAUG,CAAAA,YAAY,CAACV,UAAAA,CAAW,CAACv1L,WAAU,CAE5D,MAAMk2L,cAAAA,CAAiBJ,SAAUjiP,CAAAA,MAAM,CAAC0hP,UAAAA,CAAY,CAClDY,UAAAA,CAAY,IACZz4O,CAAAA,GAAAA,CAAKo4O,SAAUC,CAAAA,aAAa,CAACR,UAAAA,CAAW,CAAC73O,GAAG,CAC5CsiD,UAAYA,CAAAA,UACd,CACA,CAAA,CAAA,GAAIk2L,cAAgB,CAAA,CAClBN,eAAgBpgP,CAAAA,IAAI,CAAC0gP,cAAAA,EACvB,CACA,IAAK,MAAMtR,MAAUkR,IAAAA,SAAAA,CAAUM,OAAO,CAAC,CACrCN,SAAAA,CAAUO,oBAAoB,CAACzR,MACjC,EAAA,CACF,CACF,CACA,IAAI,IAAIlwO,EAAI,CAAGA,CAAAA,CAAAA,CAAIkhP,eAAgBjhP,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC7C,GAAIkhP,eAAe,CAAClhP,CAAE,CAAA,CAAC6S,OAAO,CAAE,CAC9BquO,eAAe,CAAClhP,CAAAA,CAAE,CAAC4hP,YAAY,CAAG,IAAA,CAClCT,0BAA2BrgP,CAAAA,IAAI,CAACogP,eAAe,CAAClhP,CAAAA,CAAE,CAClD,CAAA,GAAIkhP,eAAe,CAAClhP,CAAAA,CAAE,CAACuM,UAAU,CAAE,CACjC20O,eAAe,CAAClhP,CAAE,CAAA,CAACuM,UAAU,GAC/B,CACF,CACF,CACA,IAAI,IAAIvM,CAAI,CAAA,CAAA,CAAGA,CAAImhP,CAAAA,0BAAAA,CAA2BlhP,MAAM,CAAED,CAAI,EAAA,CAAA,CACxD,GAAI,CAACmhP,0BAA0B,CAACnhP,EAAE,CAAC6S,OAAO,EAAIsuO,0BAA0B,CAACnhP,CAAAA,CAAE,CAAC6hP,gBAAgB,CAAE,CAC5F,QACF,CACAV,0BAA0B,CAACnhP,CAAE,CAAA,CAAC6hP,gBAAgB,CAAG,IACjD,CAAA,GAAIV,0BAA0B,CAACnhP,CAAE,CAAA,CAAC8hP,cAAc,CAAE,CAChDX,0BAA0B,CAACnhP,CAAAA,CAAE,CAAC8hP,cAAc,GAC9C,CACF,CACF,CACA,CAAA,CAAA,OAAO,IACT,CACAz3O,MAAO03O,CAAAA,UAAU,CAAE,CACjB,IAAIC,UAAAA,CAAaD,WACjB,IAAIlB,UAAAA,CAAakB,UACjB,CAAA,GAAI,OAAOlB,UAAAA,GAAe,QAAU,CAAA,CAClCA,UAAamB,CAAAA,UAAAA,CAAWlB,OAC1B,CAAO,KAAA,CACLkB,WAAa,IAAI,CAACjgP,GAAG,CAAC8+O,UACxB,EAAA,CACA,GAAI,IAAI,CAAC9+O,GAAG,CAAC8+O,UAAAA,CAAAA,GAAgBmB,UAAY,CAAA,CACvC,OAAO,KACT,CACA,OAAO,IAAI,CAACjB,QAAQ,CAACF,UAAW,CAAA,CAChC,MAAM73O,GAAAA,CAAM,IAAI,CAACoB,KAAK,CAACnB,OAAO,CAAC+4O,UAAAA,CAAAA,CAC/B,IAAI,CAAC53O,KAAK,CAACtB,MAAM,CAACE,GAAK,CAAA,CAAA,CAAA,CACvB,IAAI,CAACE,IAAI,CAAC,SAAU23O,UAAYmB,CAAAA,UAAAA,CAAAA,CAChC,IAAI,CAAC94O,IAAI,CAAC,CAAC,OAAO,EAAE23O,UAAAA,CAAW,CAAC,CAAEmB,UAClC,CAAA,CAAA,OAAO,IACT,CACAjgP,GAAAA,CAAIuB,IAAI,CAAE,CACR,OAAO,IAAI,CAACy9O,QAAQ,CAACz9O,IAAK,CAAA,EAAI,IAChC,CACAgF,GAAIy5O,CAAAA,UAAU,CAAE,CACd,GAAI,OAAOA,UAAe,GAAA,QAAA,CAAU,CAClC,OAAO,IAAI,CAAChB,QAAQ,CAAC10O,cAAc,CAAC01O,WACtC,CACA,GAAI,CAACA,UAAAA,CAAY,OAAO,KAAA,CACxB,MAAMlB,UAAAA,CAAakB,UAAWjB,CAAAA,MAAM,CACpC,OAAO,IAAI,CAACC,QAAQ,CAACF,UAAAA,CAAW,GAAKkB,UACvC,CACAx3O,IAAAA,EAAO,CACL,OAAO,IAAI,CAACH,KACd,CAtHArC,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,EAAA,CAAI,IAAI,CAAC+Q,QAAQ,CAAG,EAAC,CAAG,IAAI,CAAC32O,KAAK,CAAG,EAAE,CAAE,IAAI,CAACu2O,cAAc,CAAG,IAAIv4O,GACxE,CAAA,IAAI,CAAC4nO,GAAG,CAAGA,IACb,CAoHF,CAEA,MAAMiS,cAAiB,CAAA,CAACryO,CAAGC,CAAAA,CAAAA,GAAID,CAAE7H,CAAAA,WAAW,CAAC87K,KAAK,CAAGh0K,CAAAA,CAAE9H,WAAW,CAAC87K,KAAK,CACxE,MAAMq+D,eAAkB,CAAC77O,GAAMA,EAAAA,GAAAA,CAAI6J,IAAI,CAAC+xO,cACxC,CAAA,CAAA,MAAME,WAAc,CAAA,EAAE,CACtB,MAAMC,OAAU,CAAA,EAAE,CAClB,MAAMC,YAAAA,CAAe,IACnB,CAAA,OAAOD,OAAQ9gP,CAAAA,GAAG,EAAM,EAAA,EAAE,CAC5B,CACA,MAAMghP,gBAAAA,CAAmB,CAAC1yO,EAAAA,CACxBA,CAAE3P,CAAAA,MAAM,CAAG,CAAA,CACXmiP,OAAQthP,CAAAA,IAAI,CAAC8O,CAAAA,EACf,CACA,CAAA,MAAM2yO,MAAeh9F,SAAAA,SAAAA,CAQnBi9F,YAAa/qO,CAAAA,IAAI,CAAEuC,IAAI,CAAE,CACvB,MAAM+hO,MAAS,CAAA,IAAI,CAAC5G,IAAI,CAAC6L,OAAO,CAACvpO,IAAAA,CAAK,CACtC,GAAI,CAACskO,MAAAA,CAAQ,CACX,OAAO,IACT,CACA,GAAI,IAAI,CAAC18O,CAAC,CAACoY,IAAK,CAAA,CAAE,CAChB,OAAO,IACT,CACA,OAAOskO,MAAOyG,CAAAA,YAAY,CAAC,IAAI,CAAExoO,IAAAA,CACnC,CACAyoO,eAAAA,CAAgBhrO,IAAI,CAAE,CACpB,MAAMskO,MAAS,CAAA,IAAI,CAAC5G,IAAI,CAAC6L,OAAO,CAACvpO,IAAAA,CAAK,CACtC,GAAI,CAACskO,MAAAA,CAAQ,CACX,MACF,CACA,GAAI,CAAC,IAAI,CAAC18O,CAAC,CAACoY,IAAK,CAAA,CAAE,CACjB,MACF,CACAskO,MAAAA,CAAO0G,eAAe,CAAC,IAAI,EAC7B,CACAC,aAAAA,CAAcjrO,IAAI,CAAE,CAClB,MAAMmvH,MAAAA,CAAS,IAAI,CAACsgB,OAAO,CAAC,MAACtgB,EAASA,MAAOvnI,CAAAA,CAAC,GAAGoY,KAAK,CACtD,CAAA,OAAOmvH,MAAUA,EAAAA,MAAAA,CAAOvnI,CAAC,CAACoY,IAAK,CACjC,CACAkrO,cAAAA,CAAelrO,IAAI,CAAE,CACnB,OAAO,IAAI,CAACqnD,IAAI,CAAC,MAAC8nE,EAASA,MAAOvnI,CAAAA,CAAC,GAAGoY,IAAK,CAAA,CAAA,CAAE5Q,GAAG,CAAC,MAAC+/H,EAASA,OAAOvnI,CAAC,CAACoY,IAAK,CAAA,CAC3E,CACAmrO,UAAAA,CAAWb,UAAU,CAAE,CACrB,MAAMn7G,MAAS,CAAA,IAAI,CAACsgB,OAAO,CAAC,IAAC9W,EAAOA,IAAK/wI,CAAAA,CAAC,EAAE6wO,MAAAA,EAAQ5nO,GAAIy5O,CAAAA,UAAAA,CAAAA,CAAAA,CACxD,OAAOn7G,MAAAA,EAAQvnI,CAAE6wO,CAAAA,MAAAA,CAAOnuO,GAAIggP,CAAAA,UAAAA,CAC9B,CACAc,WAAYd,CAAAA,UAAU,CAAE,CACtB,MAAMe,QAAAA,CAAW,IAAI,CAAChkL,IAAI,CAAC,IAACsxE,EAAOA,IAAK/wI,CAAAA,CAAC,EAAE6wO,MAAAA,EAAQ5nO,GAAIy5O,CAAAA,UAAAA,CAAAA,CAAAA,CACvD,OAAOe,QAAAA,CAASj8O,GAAG,CAAC,MAAC+/H,EAASA,MAAOvnI,CAAAA,CAAC,CAAC6wO,MAAM,CAACnuO,GAAG,CAACggP,UACpD,CAAA,CAAA,CACAgB,OAAU,EAAA,CACR,GAAI,CAAC,IAAI,CAACC,KAAK,CAAE,CACf,IAAI,CAACC,OAAO,CAAC/jP,IAAAA,CAAKC,MAAM,EAAA,EAC1B,CACA,OAAO,IAAI,CAAC6jP,KACd,CACAC,OAAAA,CAAQ/jP,IAAI,CAAE,CACZ,MAAM2G,MAAQ,IAAI,CAACsvO,IAAI,CAAC+N,YAAY,CACpC,GAAI,IAAI,CAACF,KAAK,CAAE,CACd,OAAOn9O,KAAK,CAAC,IAAI,CAACm9O,KAAK,EACzB,CACA,IAAI,CAACA,KAAK,CAAG9jP,IACb2G,CAAAA,KAAK,CAAC,IAAI,CAACm9O,KAAK,CAAC,CAAG,KAAI,CAE1Bj9F,4BAA6B3V,CAAAA,IAAI,CAAEv9H,OAAO,CAAE,CAC1C,IAAIswO,WAAAA,CAAc,MAClB,GAAI/yG,IAAAA,GAAS,IAAI,EAAI+xG,WAAYliP,CAAAA,MAAM,GAAK,CAAA,CAAG,CAC7CkjP,WAAAA,CAAc,KAChB,CACA/yG,IAAKgzG,CAAAA,aAAa,CAAG,IACrBhzG,CAAAA,IAAAA,CAAK+V,wBAAwB,CAACtzI,OAC9B,CAAA,CAAA,GAAIu9H,IAAKizG,CAAAA,4BAA4B,CAAE,CACrClB,WAAYrhP,CAAAA,IAAI,CAACsvI,IAAAA,EACnB,CACA,MAAM/wI,CAAI+wI,CAAAA,IAAAA,CAAK4G,SAAS,CACxB,IAAI,IAAIh3I,CAAI,CAAA,CAAA,CAAGkY,GAAM7Y,CAAAA,CAAAA,CAAEY,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAC1C,GAAIX,CAAC,CAACW,CAAE,CAAA,CAAC6zE,QAAQ,CAAE,CACjB,IAAI,CAACkyE,4BAA4B,CAAC1mJ,CAAC,CAACW,CAAE,CAAA,CAAE6S,OAC1C,EAAA,CACF,CACAu9H,IAAAA,CAAKgzG,aAAa,CAAG,KACrB,CAAA,GAAID,WAAa,CAAA,CACf,IAAI,IAAInjP,EAAI,CAAGA,CAAAA,CAAAA,CAAImiP,WAAYliP,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzCmiP,WAAW,CAACniP,CAAAA,CAAE,CAACqjP,4BAA4B,GAC7C,CACAlB,WAAYliP,CAAAA,MAAM,CAAG,EACvB,CACF,CACAkmJ,wBAAyBtzI,CAAAA,OAAO,CAAE,CAChC,KAAK,CAACszI,wBAAyBtzI,CAAAA,OAAAA,CAAAA,CAC/B,MAAMinC,UAAAA,CAAa,IAAI,CAACwpM,oBAAoB,EAC5C,CAAA,IAAI,IAAItjP,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI85C,UAAW75C,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMohP,UAAYtnM,UAAU,CAAC95C,CAAE,CAAA,CAC/B,GAAIohP,SAAAA,CAAUvuO,OAAO,CAAE,CACrB,GAAIA,OAAS,CAAA,CACXuuO,SAAU31I,CAAAA,QAAQ,GACpB,CAAO,KAAA,CACL21I,SAAU11I,CAAAA,SAAS,GACrB,CACF,CACF,CACA42I,gBAAiBxoM,CAAAA,UAAAA,EACnB,CACAupM,4BAAAA,EAA+B,CAC7B,MAAMvpM,UAAa,CAAA,IAAI,CAACwpM,oBAAoB,EAC5C,CAAA,IAAI,IAAItjP,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI85C,UAAW75C,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC85C,UAAU,CAAC95C,CAAE,CAAA,CAACujP,iBAAiB,GACjC,CACAjB,gBAAAA,CAAiBxoM,UACnB,EAAA,CACA0pM,UAAWtkP,CAAAA,IAAI,CAAE,CACf,GAAI,IAAI,CAAC8jP,KAAK,GAAK9jP,IAAM,CAAA,OAAO,IAAI,CACpC,MAAMiD,CAAAA,CAAI,IAAI,CAACgzO,IAAI,CAAC+N,YAAY,CAAChkP,KAAK,CACtC,GAAIiD,CAAMA,GAAAA,CAAM,GAAA,IAAI,EAAIA,CAAAA,CAAEslJ,cAAc,CAAC,IAAI,CAAA,CAAI,CAAA,CAC/C,OAAOtlJ,CACT,CACA,OAAO,IACT,CACAgnC,OAAU,EAAA,CACR,IAAI,CAACs6M,WAAW,CAAG,IACnB,CAAA,IAAI,MAAMngP,IAAAA,IAAQ,IAAI,CAACjE,CAAC,CAAC,CACvB,IAAI,CAACA,CAAC,CAACiE,IAAK,CAAA,CAACuP,OAAO,CAAG,MACzB,CACA,IAAI,MAAMvP,IAAAA,IAAQ,IAAI,CAACjE,CAAC,CAAC,CACvB,IAAI,CAACA,CAAC,CAACiE,IAAAA,CAAK,CAACy4O,MAAM,CAAC0G,eAAe,CAAC,IAAI,EAC1C,CACA,KAAK,CAACt5M,OAAAA,EAAAA,CACN,GAAI,IAAI,CAAC65M,KAAK,CAAE,CACd,OAAO,IAAI,CAAC7N,IAAI,CAAC+N,YAAY,CAAC,IAAI,CAACF,KAAK,EAC1C,CACA,IAAI,CAACS,WAAW,CAAG,MACrB,CACAnuO,KAAQ,EAAA,CACN,MAAMouO,gBAAAA,CAAmB,EAAC,CAC1B,MAAMpuO,KAAAA,CAAQ,IAAI,CAACquO,iBAAiB,CAACD,iBACrCA,CAAAA,gBAAgB,CAAC,IAAI,CAACX,OAAO,EAAG,CAAA,CAAGztO,KACnCsuO,CAAAA,0CAAAA,CAA2C,IAAI,CAAE,IAAI,CAAEtuO,MAAOouO,gBAC9D,CAAA,CAAA,OAAOpuO,KACT,CACAguO,oBAAuB,EAAA,CACrB,MAAMxpM,UAAAA,CAAa,IAAI,CAACz6C,CAAC,CACzB,MAAM+gI,WAAAA,CAAciiH,YACpB,EAAA,CAAA,IAAIwB,QAAW,CAAA,CAAA,CACf,IAAI,MAAMpsO,IAAQqiC,IAAAA,UAAAA,CAAW,CAC3B,GAAIA,UAAWztC,CAAAA,cAAc,CAACoL,IAAAA,CAAAA,CAAO,CACnC,MAAM2pO,UAAYtnM,UAAU,CAACriC,IAAK,CAAA,CAClCosO,QAAYzC,EAAAA,SAAAA,CAAUr5O,WAAW,CAAC87K,KAAK,GAAK,CAC5CzjD,CAAAA,WAAAA,CAAYt/H,IAAI,CAACsgP,WACnB,CACF,CACA,GAAIyC,QAAAA,EAAYzjH,WAAYngI,CAAAA,MAAM,CAAG,CAAA,CAAG,CACtCiiP,eAAAA,CAAgB9hH,WAClB,EAAA,CACA,OAAOA,WACT,CACAujH,iBAAkBD,CAAAA,gBAAgB,CAAE,CAClC,MAAMpuO,KAAAA,CAAQ,IAAI,IAAI,CAACvN,WAAW,CAACD,SAAAA,CAAW,IAAI,CAACqtO,IAAI,CAAA,CACvD,KAAK,CAAC7uF,cAAehxI,CAAAA,KAAAA,CAAAA,CACrB,IAAI,MAAMmC,IAAQ,IAAA,IAAI,CAACpY,CAAC,CAAC,CACvB,MAAM+hP,SAAAA,CAAY,IAAI,CAAC/hP,CAAC,CAACoY,IAAAA,CAAK,CAC9B2pO,SAAAA,CAAUrF,MAAM,CAAC+H,cAAc,CAAC,IAAI,CAAExuO,KACxC,EAAA,CACA,IAAI,IAAItV,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAM+jP,QAAAA,CAAW,IAAI,CAAC/sG,SAAS,CAACh3I,CAAAA,CAAE,CAClC,GAAI+jP,QAAoBxB,YAAAA,MAAAA,CAAQ,CAC9B,MAAMyB,QAAWD,CAAAA,QAAAA,CAASJ,iBAAiB,CAACD,gBAC5CpuO,CAAAA,CAAAA,KAAAA,CAAMkzI,QAAQ,CAACw7F,QACfN,CAAAA,CAAAA,gBAAgB,CAACK,QAAShB,CAAAA,OAAO,EAAG,CAAA,CAAGiB,SACzC,CACF,CACA,OAAO1uO,KACT,CAhKAvN,WAAAA,CAAYzE,IAAI,CAAE0sO,GAAMF,CAAAA,cAAAA,EAAgB,CAAC,CACvC,KAAK,CAACxsO,IAAO,CAAA,CAAA,IAAI,CAACjE,CAAC,CAAG,EAAC,CAAG,IAAI,CAACokP,WAAW,CAAG,KAAO,CAAA,IAAI,CAACT,KAAK,CAAG,IAAA,CAAM,IAAI,CAACiB,SAAS,CAAG,KACxF,CAAA,IAAI,CAAC9O,IAAI,CAAGnF,IACd,CA8JF,CAnKI,MAFEuS,CAEG2B,aAAa,CAAG,SAoKzB,CAAA,SAASN,0CAA2CO,CAAAA,cAAc,CAAEC,SAAS,CAAEC,SAAS,CAAEX,gBAAgB,CACxG,CAAA,GAAIU,SAAqB7B,YAAAA,MAAAA,CAAQ,CAC/B,MAAMzoM,WAAasqM,SAAU/kP,CAAAA,CAAC,CAC9B,IAAI,MAAMilP,aAAAA,IAAiBxqM,UAAW,CAAA,CACpC,MAAMsnM,SAAAA,CAAYtnM,UAAU,CAACwqM,aAAc,CAAA,CAC3C,MAAMC,gBAAmBnD,CAAAA,SAAAA,CAAUrF,MAAM,CAACyI,mBAAmB,CAAC,QAC9D,CAAA,CAAA,IAAI,IAAIxkP,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMqsO,gBAAiBtkP,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACzD,MAAMykP,kBAAAA,CAAqBF,gBAAgB,CAACvkP,CAAE,CAAA,CAC9C,MAAM0kP,YAAAA,CAAeD,kBAAmBnhP,CAAAA,IAAI,CAC5C,MAAMqhP,oBAAuBvD,CAAAA,SAAS,CAACsD,YAAAA,CAAa,CACpD,MAAME,wBAA2B,CAAA,CAAC,CAACT,cAAAA,CAAeX,UAAU,CAACmB,oBAC7D,CAAA,CAAA,GAAIC,yBAA0B,CAC5B,MAAMC,oBAAuBnB,CAAAA,gBAAgB,CAACiB,oBAAAA,CAAqB,CAAC5B,OAAO,EAC3E,CAAA,GAAI8B,oBAAsB,CAAA,CACxBR,SAAUhlP,CAAAA,CAAC,CAACilP,aAAc,CAAA,CAACI,YAAa,CAAA,CAAGG,qBAC7C,CACF,CACF,CACF,CACA,GAAI/qM,UAAWo2L,CAAAA,MAAM,CAAE,CACrBmU,UAAUnU,MAAM,CAAC0T,0CAA0C,CAAC9pM,UAAWo2L,CAAAA,MAAM,CAAEwT,gBAAAA,EACjF,CACA,GAAI5pM,UAAWkyD,CAAAA,MAAM,CAAE,CACrBq4I,SAAUr4I,CAAAA,MAAM,CAAC43I,0CAA0C,CAAC9pM,UAAAA,CAAWkyD,MAAM,CAAE03I,gBACjF,EAAA,CACA,GAAI5pM,UAAAA,CAAW0gE,MAAM,CAAE,CACrB6pI,SAAAA,CAAU7pI,MAAM,CAACopI,0CAA0C,CAAC9pM,UAAAA,CAAW0gE,MAAM,CAAEkpI,gBACjF,EAAA,CACA,GAAI5pM,UAAAA,CAAWgrM,UAAU,CAAE,CACzBT,SAAAA,CAAUS,UAAU,CAAClB,0CAA0C,CAAC9pM,UAAAA,CAAWgrM,UAAU,CAAEpB,gBACzF,EAAA,CACA,GAAI5pM,UAAAA,CAAWirM,SAAS,CAAE,CACxBV,SAAAA,CAAUU,SAAS,CAACnB,0CAA0C,CAAC9pM,UAAAA,CAAWirM,SAAS,CAAErB,gBACvF,EAAA,CACA,GAAI5pM,UAAAA,CAAWkrM,IAAI,CAAE,CACnBX,SAAAA,CAAUW,IAAI,CAACpB,0CAA0C,CAAC9pM,UAAWkrM,CAAAA,IAAI,CAAEtB,gBAAAA,EAC7E,CACA,MAAM7N,IAAOuO,CAAAA,SAAAA,CAAU9+F,QAAQ,CAAC3pD,MAAM,CAAC,CAAKx5F,EAAAA,CAAAA,YAAaogP,MACzD,CAAA,CAAA,MAAM0C,IAAOZ,CAAAA,SAAAA,CAAU/+F,QAAQ,CAAC3pD,MAAM,CAAC,CAACx5F,EAAIA,CAAaogP,YAAAA,MAAAA,CAAAA,CACzD,IAAI,IAAIviP,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM29N,IAAK51O,CAAAA,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC7C4jP,0CAAAA,CAA2CO,cAAgBtO,CAAAA,IAAI,CAAC71O,CAAE,CAAA,CAAEilP,IAAI,CAACjlP,CAAE,CAAA,CAAE0jP,gBAC/E,EAAA,CACF,CACF,CAEA,MAAMwB,iBAAAA,CAQJ,IAAIx/H,MAAAA,EAAS,CACX,OAAO,CAAC,CAAC,IAAI,CAAC1rG,IAChB,CACA,IAAIi8N,OAAU,EAAA,CACZ,OAAO,IAAI,CAACkP,QAAQ,CAXtBp9O,WAAAA,CAAYzE,IAAI,CAAEuH,GAAG,CAAC,CACpB,IAAI,CAACmP,IAAI,CAAG,IACZ,CAAA,IAAI,CAACmrO,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACC,kBAAkB,CAAG,EAC1B,CAAA,IAAI,CAAC9hP,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACuH,GAAG,CAAGA,IACb,CAOF,CAEA,MAAMw6O,aAOJl8M,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACgsM,IAAI,CAAG,KACd,CACA5qO,IAAAA,EAAO,CACL,OAAO,IAAI,CAACH,KACd,CACAkG,GAAAA,CAAIhN,IAAI,CAAEuH,GAAG,CAAE,CACb,GAAI,IAAI,CAACZ,MAAM,CAACoC,cAAc,CAAC/I,IAAAA,CAAAA,CAAO,CACpC,OAAO,KACT,CACA,MAAM0G,IAAO,CAAA,IAAIk7O,iBAAkB5hP,CAAAA,IAAAA,CAAMuH,GACzC,CAAA,CAAA,MAAM7K,CAAI,CAAA,IAAI,CAACoK,KAAK,CAACtJ,IAAI,CAACkJ,IAAAA,CAC1B,CAAA,IAAI,CAACC,MAAM,CAACD,IAAK1G,CAAAA,IAAI,CAAC,CAAGtD,CAAI,CAAA,CAC7B,CAAA,IAAI,CAACslP,SAAS,CAACt7O,IAAAA,CAAKa,GAAG,CAAC,CAAG7K,CAAAA,CAAI,CAC/B,CAAA,OAAO,IACT,CACA8+D,IAAKx7D,CAAAA,IAAI,CAAE,CACT,GAAI,IAAI,CAAC2G,MAAM,CAACoC,cAAc,CAAC/I,IAAO,CAAA,CAAA,CACpC,OAAO,IAAI,CAAC8G,KAAK,CAAC,IAAI,CAACH,MAAM,CAAC3G,IAAAA,CAAK,CACrC,CACA,OAAO,IACT,CACAiiP,SAAU16O,CAAAA,GAAG,CAAE,CACb,GAAI,IAAI,CAACy6O,SAAS,CAACj5O,cAAc,CAACxB,GAAM,CAAA,CAAA,CACtC,OAAO,IAAI,CAACT,KAAK,CAAC,IAAI,CAACk7O,SAAS,CAACz6O,GAAAA,CAAI,CACvC,CACA,OAAO,IACT,CACAR,MAAO/G,CAAAA,IAAI,CAAE,CACX,GAAI,IAAI,CAAC2G,MAAM,CAACoC,cAAc,CAAC/I,IAAO,CAAA,CAAA,CACpC,MAAMgH,GAAAA,CAAM,IAAI,CAACL,MAAM,CAAC3G,IAAK,CAAA,CAC7B,IAAI0G,IAAAA,CAAO,IAAI,CAACI,KAAK,CAACE,GAAAA,CAAI,CAC1B,OAAO,IAAI,CAACg7O,SAAS,CAACt7O,IAAKa,CAAAA,GAAG,CAC9B,CAAO,OAAA,IAAI,CAACZ,MAAM,CAAC3G,IAAK,CAAA,CACxB,IAAI,CAAC8G,KAAK,CAACtB,MAAM,CAACwB,GAAK,CAAA,CAAA,CAAA,CACvB,IAAI,IAAItK,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACoK,KAAK,CAACnK,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxCgK,IAAAA,CAAO,IAAI,CAACI,KAAK,CAACpK,EAAE,CACpB,IAAI,CAACiK,MAAM,CAACD,IAAK1G,CAAAA,IAAI,CAAC,CAAGtD,CACzB,CAAA,IAAI,CAACslP,SAAS,CAACt7O,IAAAA,CAAKa,GAAG,CAAC,CAAG7K,EAC7B,CACF,CACF,CACAwlP,cAAAA,CAAeC,SAAS,CAAEC,YAAY,CAAEp+O,QAAQ,CAAE,CAChD,MAAM0oO,GAAAA,CAAM,IAAI,CAACmF,IAAI,CACrB,IAAItqO,GAAAA,CAAM46O,SACV,CAAA,GAAI,OAAOA,SAAAA,GAAc,QAAU,CAAA,CACjCA,SAAY,CAAA,IAAI,CAACF,SAAS,CAAC16O,GAAAA,CAAAA,EAAQ,IAAI,CAACi0D,IAAI,CAACj0D,GAAQ,CAAA,EAAA,IAAIq6O,iBAAkB,CAAA,UAAA,CAAYr6O,KACzF,CACAA,GAAAA,CAAM46O,SAAU56O,CAAAA,GAAG,CACnB,GAAI,CAACA,GAAAA,CAAK,CACRvD,QAAAA,CAAS,2BACT,CAAA,CAAA,MACF,CACA,GAAIm+O,UAAU//H,MAAM,CAAE,CACpBp+G,QAAAA,CAAS,IAAMm+O,CAAAA,SAAAA,CAAAA,CACf,MACF,CACA,GAAIzV,GAAAA,CAAI+H,MAAM,EAAI/H,GAAI+H,CAAAA,MAAM,CAACtrF,MAAM,EAAI,CAAC2mF,YAAAA,CAAa1wO,IAAI,CAACmI,GAAM,CAAA,CAAA,CAC9DA,GAAMlL,CAAAA,IAAAA,CAAKE,IAAI,CAACmwO,GAAI+H,CAAAA,MAAM,CAACtrF,MAAM,CAAE5hJ,GAAAA,EACrC,CACA46O,SAAAA,CAAUL,kBAAkB,CAACtkP,IAAI,CAACwG,QAClC,CAAA,CAAA,GAAI,CAACm+O,SAAAA,CAAUN,QAAQ,CAAE,CACvB,MAAMh+O,OAAAA,CAAU6oO,GAAIqK,CAAAA,MAAM,CAACrB,UAAU,CAAC,WAAA,CAAA,CACtC7xO,OAAQ+uO,CAAAA,IAAI,CAACrrO,GAAAA,CAAK,CAACgB,GAAAA,CAAKmO,QACtByrO,SAAUzrO,CAAAA,IAAI,CAAGA,IACjByrO,CAAAA,SAAAA,CAAUN,QAAQ,CAAG,KACrB,CAAA,IAAI,IAAInlP,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIylP,UAAUL,kBAAkB,CAACnlP,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1DylP,SAAUL,CAAAA,kBAAkB,CAACplP,CAAAA,CAAE,CAAC6L,GAAAA,CAAK45O,SACvC,EAAA,CACA,GAAI,CAACC,YAAc,CAAA,CACjBD,SAAUzrO,CAAAA,IAAI,CAAG,KACnB,CACAyrO,SAAAA,CAAUL,kBAAkB,CAACnlP,MAAM,CAAG,EACxC,CAAA,EACF,CACAwlP,SAAUN,CAAAA,QAAQ,CAAG,KACvB,CACAQ,aAAAA,CAAcF,SAAS,CAAEn+O,QAAQ,CAAE,CACjC,IAAI,CAACk+O,cAAc,CAACC,SAAW,CAAA,IAAA,CAAMn+O,QACvC,EAAA,CACAs+O,eAAgBH,CAAAA,SAAS,CAAE,CACzB,GAAI,OAAOA,SAAc,GAAA,QAAA,CAAU,CACjCA,SAAAA,CAAY,IAAI,CAACF,SAAS,CAACE,SAAAA,EAC7B,CACA,GAAIA,SAAW,CAAA,CACbA,SAAUzrO,CAAAA,IAAI,CAAG,KACnB,CACF,CACA6rO,mBAAoBJ,CAAAA,SAAS,CAAEK,oBAAoB,CAAEx+O,QAAQ,CAAE,CAC7D,IAAI,CAACk+O,cAAc,CAACC,SAAW,CAAA,KAAA,CAAO,CAAC55O,GAAAA,CAAK45O,aAC1C,GAAI55O,GAAAA,CAAK,CACP,GAAIvE,QAAU,CAAA,CACZA,QAASuE,CAAAA,GAAAA,EACX,CACA,MACF,CACA,GAAIi6O,oBAAsB,CAAA,CACxBA,qBAAqBL,SACvB,EAAA,CACA,MAAMzV,GAAAA,CAAM,IAAI,CAACmF,IAAI,CACrB,MAAM2D,OAAAA,CAAU,IACd,CAAA,MAAM3xO,OAAU6oO,CAAAA,GAAAA,CAAIqK,MAAM,CAACrB,UAAU,CAAC,WAAA,CACtChJ,CAAAA,GAAAA,CAAIgR,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,IAChC,CAAA,MAAM76G,MAASz/H,CAAAA,OAAAA,CAAQkgH,IAAI,CAACo+H,SAAU56O,CAAAA,GAAG,CAAE46O,SAAAA,CAAUzrO,IAAI,CACzDg2N,CAAAA,GAAAA,CAAIgR,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,KAAA,CAChCzR,GAAIqK,CAAAA,MAAM,CAAC5c,UAAU,CAACgoB,SAAAA,CAAU56O,GAAG,CAAE,WACrCmlO,CAAAA,CAAAA,GAAAA,CAAI10F,IAAI,CAACkN,QAAQ,CAAC5hB,MAAAA,CAAAA,CAClBopG,GAAIgR,CAAAA,OAAO,CAAC93O,IAAI,CAAC,YAAA,CAAc09H,MAC/BopG,CAAAA,CAAAA,GAAAA,CAAIgR,OAAO,CAAC93O,IAAI,CAAC,iBAAkB09H,MACnCopG,CAAAA,CAAAA,GAAAA,CAAIgR,OAAO,CAAC93O,IAAI,CAAC,oBAAsB09H,CAAAA,MAAAA,CAAAA,CACvC,GAAIt/H,QAAAA,CAAUA,QAAS,CAAA,IAAA,CAAMs/H,MAC/B,EAAA,CAAA,CACAopG,GAAI+V,CAAAA,eAAe,CAACN,SAAAA,CAAUzrO,IAAI,CAAE8+N,OACtC,EAAA,CAAA,EACF,CACAkN,kBAAAA,CAAmBP,SAAS,CAAEn+O,QAAQ,CAAE,CACtC,IAAI,CAACu+O,mBAAmB,CAACJ,SAAW,CAAA,IAAA,CAAMn+O,QAC5C,EAAA,CACA2+O,iBAAkBR,CAAAA,SAAS,CAAEn+O,QAAQ,CAAE,CACrC,IAAI,CAACk+O,cAAc,CAACC,SAAAA,CAAW,KAAO,CAAA,CAAC55O,GAAK45O,CAAAA,SAAAA,GAAAA,CAC1C,GAAI,CAAC55O,GAAK,CAAA,CACR,IAAI,CAACspO,IAAI,CAAC+Q,kBAAkB,CAACT,SAAAA,CAAUzrO,IAAI,CAAC4hM,QAAQ,CAAA,CACpD,GAAIt0M,QAAAA,CAAU,CACZA,QAAAA,CAAS,IACX,EAAA,CACF,CAAO,KAAA,CACL,GAAIA,QAAAA,CAAU,CACZA,QAAAA,CAASuE,GACX,EAAA,CACF,CACF,CAAA,EACF,CACAs6O,WAAAA,CAAYV,SAAS,CAAEn+O,QAAQ,CAAE,CAC/B,MAAM0oO,IAAM,IAAI,CAACmF,IAAI,CACrB,MAAM2Q,oBAAAA,CAAuB,SAACL,EAAAA,CAC5B,KAAM,CAAEngG,QAAQ,CAAE,CAAG0qF,GAAAA,CAAI10F,IAAI,CAC7B,MAAMgK,QAASrlJ,CAAAA,MAAM,CAAC,CACpBqlJ,QAAQ,CAAC,CAAE,CAAA,CAACn8G,OAAO,GACrB,CACA6mM,GAAAA,CAAIkW,kBAAkB,CAACT,SAAAA,CAAUzrO,IAAI,CAAC4hM,QAAQ,EAChD,CACA,CAAA,IAAI,CAACiqC,mBAAmB,CAACJ,SAAAA,CAAWK,oBAAsBx+O,CAAAA,QAAAA,EAC5D,CACA8+O,SAAAA,CAAUv7O,GAAG,CAAEvD,QAAQ,CAAE,CACvB,MAAM0oO,GAAM,CAAA,IAAI,CAACmF,IAAI,CACrB,MAAMhuO,OAAU6oO,CAAAA,GAAAA,CAAIqK,MAAM,CAACrB,UAAU,CAAC,OAAA,CAAA,CACtC,GAAIhJ,GAAAA,CAAI+H,MAAM,EAAI/H,GAAI+H,CAAAA,MAAM,CAACtrF,MAAM,EAAI,CAAC2mF,aAAa1wO,IAAI,CAACmI,GAAM,CAAA,CAAA,CAC9DA,GAAMlL,CAAAA,IAAAA,CAAKE,IAAI,CAACmwO,GAAI+H,CAAAA,MAAM,CAACtrF,MAAM,CAAE5hJ,GAAAA,EACrC,CACA1D,OAAQ+uO,CAAAA,IAAI,CAACrrO,GAAAA,CAAK,CAACgB,GAAAA,CAAKmO,IACtB,GAAA,CAAA,GAAI,CAACnO,GAAAA,CAAK,CACR,MAAMitO,OAAU,CAAA,IAAA,CACd9I,GAAIgR,CAAAA,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,IAAA,CAChC,MAAM/8G,KAAAA,CAAQv9H,OAAQkgH,CAAAA,IAAI,CAACx8G,GAAAA,CAAKmP,IAChC,CAAA,CAAA,MAAMyrO,UAAY,IAAI,CAACF,SAAS,CAAC16O,GACjC,CAAA,CAAA,GAAI46O,SAAa,EAAA,CAACA,SAAU//H,CAAAA,MAAM,CAAE,CAClC+/H,SAAUzrO,CAAAA,IAAI,CAAGA,KACnB,CACAg2N,GAAIgR,CAAAA,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,KAAA,CAChCzR,GAAIqK,CAAAA,MAAM,CAAC5c,UAAU,CAAC5yN,GAAK,CAAA,OAAA,CAAA,CAC3BmlO,GAAIqK,CAAAA,MAAM,CAACzE,KAAK,CAAC,CACfruL,QAAUm9E,CAAAA,KAAAA,CACVjtH,IAAM,CAAA,OACR,CAAGu4N,CAAAA,GAAAA,CAAI+H,MAAM,CAAA,CACb/H,GAAI10F,CAAAA,IAAI,CAACkN,QAAQ,CAAC9jB,KAAAA,CAAM4W,IAAI,CAAA,CAC5B,GAAI00F,GAAAA,CAAIgR,OAAO,CAACqF,SAAS,EAAI,OAAOC,IAAS,GAAA,WAAA,CAAa,CACxDtW,GAAAA,CAAIgR,OAAO,CAACqF,SAAS,CAACtqC,OAAO,CAACxzM,GAAG,CAACm8H,KAAMo3E,CAAAA,QAAQ,CAACznM,CAAC,CAAEqwH,KAAMo3E,CAAAA,QAAQ,CAAC//L,CAAC,CAAE2oH,KAAAA,CAAMo3E,QAAQ,CAAC5/L,CAAC,EACxF,CACA,GAAI5U,SAAU,CACZA,QAAAA,CAAS,IAAMo9H,CAAAA,KAAAA,EACjB,CACF,CAAA,CACAsrG,GAAI+V,CAAAA,eAAe,CAAC/rO,IAAAA,CAAM8+N,OAC5B,EAAA,CAAA,KAAO,CACL,GAAIxxO,QAAU,CAAA,CACZA,QAASuE,CAAAA,GAAAA,EACX,CACF,CACF,CACF,EAAA,CAzLA9D,WAAYioO,CAAAA,GAAG,CAAC,CACd,IAAI,CAAC5lO,KAAK,CAAG,EAAE,CACf,IAAI,CAACH,MAAM,CAAG,EACd,CAAA,IAAI,CAACq7O,SAAS,CAAG,EACjB,CAAA,IAAI,CAACnQ,IAAI,CAAGnF,IACd,CAqLF,CAEA,MAAMuW,gBAAAA,CAiEJ,IAAI7hH,KAAAA,EAAQ,CACV,OAAOorG,iBAAiBprG,KAAK,CAACmqC,MAChC,CACA,IAAI23E,WAAc,EAAA,CAChB,OAAO1W,cAAAA,EAAAA,CAAiB0W,WAAW,EAAE53E,KACvC,CACA,IAAI63E,OAAAA,EAAU,CACZ,MAAMA,OAAU3W,CAAAA,cAAAA,EAAAA,CAAiB4W,QAAQ,CACzC,OAAOD,OAAAA,CAAUA,OAAQ53E,CAAAA,MAAM,CAAG,IACpC,CAzEA9mK,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,IAAI,CAAC60K,KAAK,CAAG,CACX6nC,GAAAA,CAAK,CACLvmI,CAAAA,EAAAA,CAAI,CACJvC,CAAAA,EAAAA,CAAI,CACJ+oI,CAAAA,WAAAA,CAAa,EACbC,UAAY,CAAA,CAAA,CACZC,WAAa,CAAA,CAAA,CACbC,UAAY,CAAA,CAAA,CACZC,YAAc,CAAA,CAAA,CACdC,WAAa,CAAA,CAAA,CACbC,QAAU,CAAA,CAAA,CACVC,QAAU,CAAA,CAAA,CACVC,SAAU,CACVC,CAAAA,SAAAA,CAAW,CACXC,CAAAA,cAAAA,CAAgB,CAChBC,CAAAA,SAAAA,CAAW,CACXC,CAAAA,OAAAA,CAAS,CACTC,CAAAA,eAAAA,CAAiB,CACjB5pM,CAAAA,OAAAA,CAAS,CACTgwI,CAAAA,SAAAA,CAAW,CACXlf,CAAAA,OAAAA,CAAS,CACT+4E,CAAAA,gBAAAA,CAAkB,CAClBC,CAAAA,aAAAA,CAAe,CACfC,CAAAA,YAAAA,CAAc,CACdC,CAAAA,WAAAA,CAAa,CACbC,CAAAA,iBAAAA,CAAmB,CACnB1hF,CAAAA,aAAAA,CAAe,CACf2hF,CAAAA,kBAAAA,CAAoB,EACpBC,SAAW,CAAA,CACb,CACA,CAAA,IAAI,CAAC37E,SAAS,CAAG,CACf5mB,OAAAA,CAAS,CACTz6G,CAAAA,KAAAA,CAAO,CACPi9M,CAAAA,MAAAA,CAAQ,EACR79L,SAAW,CAAA,CAAA,CACX89L,IAAM,CAAA,CAAA,CACNzsM,KAAO,CAAA,CAAA,CACP0sM,OAAS,CAAA,CAAA,CACTC,SAAW,CAAA,CAAA,CACXC,mBAAqB,CAAA,CACvB,CACA,CAAA,IAAI,CAACH,IAAI,CAAG,CACVI,wBAA0B,CAAA,CAC5B,CACA,CAAA,IAAI,CAACC,SAAS,CAAG,CACfC,eAAAA,CAAiB,CACjBC,CAAAA,gBAAAA,CAAkB,CAClBC,CAAAA,SAAAA,CAAW,CACX50K,CAAAA,UAAAA,CAAY,CACd,CACA,CAAA,IAAI,CAACj2B,OAAO,CAAG5T,MAAAA,CAAO0a,YACtB,CAAA,IAAI,CAAC9X,IAAI,CAAG5C,MAAO8B,CAAAA,KAAK,CACxBlqC,MAAAA,CAAOC,cAAc,CAAC,IAAI,CAAC+qC,IAAI,CAAE,WAAa,CAAA,CAC5C9qC,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC+qC,GAAG,CAAG,IAAI,CAACwL,EAAE,CAAG,IAAI,CAACkM,EAAE,CAEvC,CAAA,CAAA,CACA3iD,MAAOC,CAAAA,cAAc,CAAC,IAAI,CAAC+qC,IAAI,CAAE,MAAA,CAAQ,CACvC9qC,GAAAA,CAAK,UACH,CAAA,OAAO,IAAI,CAACu2C,EAAE,CAAG,IAAI,CAACkM,EACxB,CACF,CAAA,EACF,CAWF,CAEA,IAAImkM,aAAAA,CAAgB,CAAC;;;;;AAKrB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCnB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBtB,CAAC,CAED,IAAIC,MAAAA,CAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBd,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;AAIxB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BrB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;AAgBxB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;AAiBrB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;AAYhB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;AAQ1B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;AAS/B,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;AAejB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBnB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;AAWrB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;AAe1B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;AAa3B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwC/B,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;;;;;;;;;;;;;AAcjC,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDjC,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoZ1B,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBnB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;AAMxB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;AAS1B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;AAUtB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BhB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;AAoB1B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;AAWzB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BvB,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;;;;;AAWhC,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2ClB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBvB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;AAmBnB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;AAYpB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgClB,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;AAMf,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;AAkBpB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;AAWnB,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;AAc7B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;AAKzB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BvB,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Bf,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuB1B,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;AAQ1B,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BjB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;AAoBjB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BxB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;AAKvB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;AAcxB,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEhC,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0C9B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DxB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;AAmB5B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;AAU3B,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoC1B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;AAcxB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;AAqB9B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBzB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDxB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBtB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;AAexB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDlB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CpB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;AAiBxB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkDlB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;AAe5B,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;AAQhB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;AAMzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;AAUzB,CAAC,CAED,IAAIC,0BAAAA,CAA6B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgFlC,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;AAcvB,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;;;;;;;;AAchC,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;AAWf,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoF5B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;AAI/B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;AAIzB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;AAQ3B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmK9B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiI/B,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DpB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CvB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;AAmBpB,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiCjC,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;AAU9B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;AAmBtB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;AAiB1B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyL7B,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CjC,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkC1B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiF9B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;AAkB7B,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBnB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFnB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;AAkBxB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;AAOzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CzB,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2Sf,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;AAiBrB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDhB,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;AAQ7B,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BjB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;AAOjB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;AAmBhB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;AAOlB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCtB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BrB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;AAWnB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBzB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;AAClB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;AASvB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;AAMvB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;AAYjB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;AAetB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;AAUpB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;AAQhB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;AAInB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;AAexB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;AAMxB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;AAW1B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;AAqB3B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCzB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;AAgB5B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;AAS3B,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6B1B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiE7B,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwMrB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;AAQrB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DvB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8B1B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0DtB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;AAatB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDtB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDtB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwHpB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuFtB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;AAkBrB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiChB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDlB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgClB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;AAiBpB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;AASrB,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;AAiB7B,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;AAKhB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;AAE3B,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;;;AAShC,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4I1B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmJvB,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDf,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;AAgBrB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;AAgBvB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;AAW3B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyB5B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;AAkB7B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;AAS3B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;AAK7B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;AAiB9B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;AAI3B,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDrB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDzB,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;AAQ/B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;AAiBxB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;AAK5B,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;AAiBf,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;AAIf,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;AAKvB,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;AAG/B,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;AAInB,CAAC,CAED,MAAMC,gBAAAA,CAAmB,CACvBC,WAAaxK,CAAAA,aAAAA,CACbyK,UAAWxK,WACXyK,CAAAA,YAAAA,CAAcxK,eACdyK,IAAMxK,CAAAA,MAAAA,CACNyK,eAAgBxK,gBAChByK,CAAAA,WAAAA,CAAaxK,cACbyK,cAAgBxK,CAAAA,gBAAAA,CAChByK,YAAaxK,aACbyK,CAAAA,MAAAA,CAAQxK,QACRyK,CAAAA,gBAAAA,CAAkBxK,mBAClByK,qBAAuBxK,CAAAA,uBAAAA,CACvByK,QAASxK,SACTyK,CAAAA,SAAAA,CAAWxK,YACXyK,WAAaxK,CAAAA,aAAAA,CACbyK,iBAAkBxK,kBAClByK,CAAAA,iBAAAA,CAAmBxK,oBACnByK,uBAAyBvK,CAAAA,yBAAAA,CACzBwK,wBAAyBvK,yBACzBwK,CAAAA,qBAAAA,CAAuB1K,wBACvB2K,gBAAkBxK,CAAAA,kBAAAA,CAClByK,SAAWxK,CAAAA,WAAAA,CACXyK,eAAgBxK,gBAChByK,CAAAA,gBAAAA,CAAkBxK,mBAClByK,YAAcxK,CAAAA,cAAAA,CACdC,SACAwK,gBAAkBvK,CAAAA,kBAAAA,CAClBwK,gBAAiBvK,iBACjBwK,CAAAA,aAAAA,CAAevK,gBACfwK,sBAAwBvK,CAAAA,wBAAAA,CACxBwK,cAAetK,eACfuK,CAAAA,SAAAA,CAAWtK,YACXuK,QAAUzK,CAAAA,UAAAA,CACV0K,UAAYvK,CAAAA,YAAAA,CACZwK,SAAUvK,UACVwK,CAAAA,KAAAA,CAAOvK,QACPwK,UAAYvK,CAAAA,YAAAA,CACZwK,UAAWvK,WACXwK,CAAAA,mBAAAA,CAAqBvK,sBACrBwK,eAAiBvK,CAAAA,iBAAAA,CACjBwK,cAAevK,eACfwK,CAAAA,KAAAA,CAAOvK,QACPwK,gBAAkBvK,CAAAA,kBAAAA,CAClBwK,eAAgB,EAChBC,CAAAA,cAAAA,CAAgB,EAChBC,CAAAA,gBAAAA,CAAkBzK,mBAClB0K,OAASzK,CAAAA,SAAAA,CACTxgL,QACAC,OACAirL,CAAAA,OAAAA,CAASzK,UACT0K,cAAgBzK,CAAAA,gBAAAA,CAChB0K,eAAgB9J,gBAChB+J,CAAAA,aAAAA,CAAe1K,gBACf2K,cAAgB1K,CAAAA,gBAAAA,CAChB2K,uBAAwB1K,wBACxB2K,CAAAA,oBAAAA,CAAsB1K,uBACtB2K,cAAgB1K,CAAAA,gBAAAA,CAChB2K,kBAAoB1K,CAAAA,oBAAAA,CACpB2K,kBAAmB1K,mBACnB2K,CAAAA,gBAAAA,CAAkB1K,mBAClB2K,cAAgB1K,CAAAA,gBAAAA,CAChB2K,qBAAsB1K,sBACtB2K,CAAAA,eAAAA,CAAiB1K,kBACjB2K,YAAczK,CAAAA,cAAAA,CACd0K,eAAgBzK,gBAChB0K,CAAAA,QAAAA,CAAUzK,WACV0K,UAAYzK,CAAAA,YAAAA,CACZ0K,eAAgBzK,gBAChB0K,CAAAA,QAAAA,CAAUzK,UACV0K,CAAAA,kBAAAA,CAAoBzK,qBACpBzhB,eAAiBF,CAAAA,iBAAAA,CACjBqsB,OAAQzK,QACR0K,CAAAA,eAAAA,CAAiBzK,kBACjB0K,eAAiBzK,CAAAA,iBAAAA,CACjB0K,yBAA0BzK,0BAC1B0K,CAAAA,aAAAA,CAAezK,gBACf0K,sBAAwBzK,CAAAA,wBAAAA,CACxB0K,MAAOzK,OACP0K,CAAAA,kBAAAA,CAAoBzK,qBACpB0K,qBAAuBzK,CAAAA,uBAAAA,CACvB0K,gBAAiBzK,iBACjB0K,CAAAA,iBAAAA,CAAmBzK,oBACnB0K,oBAAsBzK,CAAAA,sBAAAA,CACtB0K,sBAAuBzK,uBACvB0K,CAAAA,UAAAA,CAAYzK,aACZ0K,aAAezK,CAAAA,eAAAA,CACf0K,WAAYzK,YACZ0K,CAAAA,uBAAAA,CAAyBzK,0BACzB0K,oBAAsBzK,CAAAA,sBAAAA,CACtB0K,aAAczK,cACd0K,CAAAA,gBAAAA,CAAkBzK,mBAClB0K,mBAAqBzK,CAAAA,qBAAAA,CACrB0K,uBAAyBzK,CAAAA,yBAAAA,CACzB0K,iBAAkBzK,kBAClB0K,CAAAA,oBAAAA,CAAsBzK,uBACtB0K,mBAAqBzK,CAAAA,qBAAAA,CACrB0K,UAAWzK,WACX0K,CAAAA,SAAAA,CAAWzK,YACX0K,cAAgBzK,CAAAA,gBAAAA,CAChB0K,gBAAiBzK,iBACjB0K,CAAAA,eAAAA,CAAiBzK,kBACjB0K,eAAiBzK,CAAAA,iBAAAA,CACjB0K,qBAAsB,EACtBC,CAAAA,oBAAAA,CAAsB,EACtBC,CAAAA,aAAAA,CAAe,GACfC,aAAe,CAAA,EAAA,CACfC,mBAAoB,EACpBC,CAAAA,kBAAAA,CAAoB,GACpBC,gBAAkB,CAAA,EAAA,CAClBC,iBAAkB,EAClBC,CAAAA,KAAAA,CAAOjL,QACPkL,WAAajL,CAAAA,aAAAA,CACbkL,oBAAqBhL,qBACrBiL,CAAAA,OAAAA,CAAShL,UACTiL,OAAShL,CAAAA,SAAAA,CACTiL,MAAQpL,CAAAA,QAAAA,CACRqL,OAAQjL,QACRkL,CAAAA,QAAAA,CAAUjL,WACVkL,YAAcjL,CAAAA,cAAAA,CACdkL,YAAajL,aACbkL,CAAAA,SAAAA,CAAWjL,YACXkL,eAAiBjL,CAAAA,iBAAAA,CACjBkL,SAAUjL,UACVkL,CAAAA,aAAAA,CAAejL,gBACfkL,aAAejL,CAAAA,eAAAA,CACfkL,QAASjL,SACTkL,CAAAA,YAAAA,CAAcjL,eACdkL,UAAYjL,CAAAA,YAAAA,CACZkL,OAAQjL,QACRkL,CAAAA,SAAAA,CAAWjL,YACXkL,cAAgBjL,CAAAA,gBAAAA,CAChBkL,eAAgBjL,gBAChBkL,CAAAA,gBAAAA,CAAkBjL,mBAClBkL,iBAAmBjL,CAAAA,mBAAAA,CACnBkL,gBAAiBjL,iBACjBkL,CAAAA,kBAAAA,CAAoBjL,qBACpBkL,iBAAmBjL,CAAAA,mBAAAA,CACnBkL,iBAAkBjL,kBAClBkL,CAAAA,mBAAAA,CAAqBjL,qBACrBkL,CAAAA,WAAAA,CAAajL,cACbkL,WAAajL,CAAAA,aAAAA,CACbkL,cAAejL,eACfkL,CAAAA,gBAAAA,CAAkBjL,mBAClBkL,YAAcjL,CAAAA,cAAAA,CACdkL,aAAcjL,cACdkL,CAAAA,YAAAA,CAAcjL,eACdkL,YAAcjL,CAAAA,cAAAA,CACdC,aACAiL,YAAchL,CAAAA,cAAAA,CACdiL,YAAahL,aACbiL,CAAAA,MAAAA,CAAQhL,QACRiL,CAAAA,QAAAA,CAAUhL,WACViL,QAAUhL,CAAAA,UAAAA,CACViL,WAAYhL,YACZiL,CAAAA,WAAAA,CAAahL,cACbiL,mBAAqBhL,CAAAA,qBAAAA,CACrBiL,OAAQhL,QACRiL,CAAAA,iBAAAA,CAAmBhL,oBACnBiL,sBAAwBhL,CAAAA,wBAAAA,CACxBiL,iBAAkBhL,kBAClBiL,CAAAA,aAAAA,CAAehL,gBACfiL,KAAOhL,CAAAA,OAAAA,CACPiL,WAAahL,CAAAA,aAAAA,CACbiL,cAAehL,eACfiL,CAAAA,iBAAAA,CAAmBhL,oBACnBiL,kBAAoBhL,CAAAA,oBAAAA,CACpBiL,oBAAqBhL,qBACrBiL,CAAAA,iBAAAA,CAAmBhL,oBACnBiL,mBAAqBhL,CAAAA,qBAAAA,CACrBiL,qBAAsBhL,sBACtBiL,CAAAA,iBAAAA,CAAmBhL,oBACnBiL,WAAahL,CAAAA,aAAAA,CACbiL,gBAAiBhL,iBACjBiL,CAAAA,qBAAAA,CAAuBhL,wBACvBiL,cAAgBhL,CAAAA,gBAAAA,CAChBiL,mBAAoBhL,oBACpBiL,CAAAA,KAAAA,CAAOhL,QACPiL,KAAOhL,CAAAA,OAAAA,CACPiL,cAAehL,eACfiL,CAAAA,qBAAAA,CAAuBhL,wBACvBiL,SAAWhL,CAAAA,WAAAA,CACX/nL,SAAUF,UACVG,CAAAA,QAAAA,CAAUF,UACZ,CAEA,CAAA,IAAIkoL,YAAc,CAAC;;;;;;;AAOnB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCjB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBpB,CAAC,CAED,IAAIC,IAAAA,CAAO,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBZ,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;AAItB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BnB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;AAkBtB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;AAoBnB,CAAC,CAED,IAAIC,MAAAA,CAAS,CAAC;;;;;;;;;;;;AAYd,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;AAQxB,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;AAS7B,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;AAef,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BjB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;AAWnB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;AAexB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;AAazB,CAAC,CAED,IAAIG,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+C7B,CAAC,CAED,IAAIF,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;AAc/B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwD/B,CAAC,CAED,IAAIE,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqZvB,CAAC,CAEF,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBjB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;AAUtB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;AAaxB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;AAWpB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;AAoBxB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;AAWvB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BrB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;AAW9B,CAAC,CAED,IAAIG,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqChB,CAAC,CAED,IAAIF,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBrB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;AAmBjB,CAAC,CAED,IAAIE,UAAAA,CAAa,CAAC;;;;;;;;;;;;AAYlB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BhB,CAAC,CAED,IAAIC,KAAAA,CAAQ,CAAC;;;;;;;AAOb,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;AAkBlB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;AAWjB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;AAc3B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;AAKvB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BrB,CAAC,CAED,IAAIC,KAAAA,CAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+Bb,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;CAsBvB,CAAC,CAEF,IAAIG,gBAAAA,CAAmB,CAAC;;;;;;;;;;AAUxB,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Bf,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;;;;AAoBf,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBtB,CAAC,CAED,IAAIE,aAAAA,CAAgB,CAAC;;;;;AAKrB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;AActB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkE9B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2C5B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8DtB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;AAa1B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;AAUzB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CxB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;AActB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;AAqB5B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;AAoBvB,CAAC,CAED,IAAIX,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDtB,CAAC,CAED,IAAIY,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBpB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;AAetB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDf,CAAC,CAEF,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2FlB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;AAiBtB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDhB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;AAe1B,CAAC,CAED,IAAIC,MAAAA,CAAS,CAAC;;;;;;;;;AASd,CAAC,CAED,IAAI6G,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;AAetB,CAAC,CAED,IAAI5G,eAAAA,CAAkB,CAAC;;;;;;;;;AASvB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;AAavB,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EhC,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;AAcrB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;AAc9B,CAAC,CAED,IAAIC,KAAAA,CAAQ,CAAC;;;;;;;;;;;AAWb,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuE1B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;AAI7B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;AAIvB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;AAQzB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkK5B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmI7B,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DlB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2CrB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;AAoBlB,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiC/B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;AAU5B,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;CAkBnB,CAAC,CAEF,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;AAkBxB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8L3B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgD/B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCxB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiF5B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;AAkB3B,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBjB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6FjB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBtB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBvB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;AAOvB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CvB,CAAC,CAED,IAAIS,KAAAA,CAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqRb,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;AAiBnB,CAAC,CAED,IAAII,MAAAA,CAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8Dd,CAAC,CAED,IAAIH,mBAAAA,CAAsB,CAAC;;;;;;;;AAQ3B,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBf,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;AAUf,CAAC,CAED,IAAIE,MAAAA,CAAS,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBd,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;CAMf,CAAC,CAEF,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCpB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BnB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;AAWjB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BvB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;AAChB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;AAQrB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;AASrB,CAAC,CAED,IAAIC,OAAAA,CAAU,CAAC;;;;;;;;;;;;AAYf,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;AAepB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;AAUlB,CAAC,CAED,IAAIC,MAAAA,CAAS,CAAC;;;;;;;CAOb,CAAC,CAEF,IAAIC,SAAAA,CAAY,CAAC;;;;AAIjB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;CAcrB,CAAC,CAEF,IAAIC,cAAAA,CAAiB,CAAC;;;;;;AAMtB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;AAYxB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBzB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4CvB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;AAkB1B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;CAqBxB,CAAC,CAEF,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BxB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiE3B,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+MnB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;AAWnB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDrB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+BxB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DpB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;AAOpB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmCpB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CpB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0FpB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;AAkBnB,CAAC,CAED,IAAIC,MAAAA,CAAS,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCd,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDhB,CAAC,CAED,IAAIC,QAAAA,CAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqChB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;AAiBlB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;AAUnB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;AAiB3B,CAAC,CAED,IAAIC,MAAAA,CAAS,CAAC;;;;CAIb,CAAC,CAEF,IAAIC,iBAAAA,CAAoB,CAAC;;AAEzB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;AAQ9B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoKxB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmJrB,CAAC,CAED,IAAIC,KAAAA,CAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDZ,CAAC,CAEF,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;AAgBnB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;AAgBrB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;AAWzB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwB1B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;AAkB3B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;AAgBzB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;AAK3B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;AAmB5B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;AAIzB,CAAC,CAED,IAAIC,WAAAA,CAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDnB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDvB,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;AAQ7B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;AAiBtB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;AAK1B,CAAC,CAED,IAAIC,KAAAA,CAAQ,CAAC;;;;;;;;;;;;;;;;;AAiBb,CAAC,CAED,IAAIC,KAAAA,CAAQ,CAAC;;;;AAIb,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;AAKrB,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;AAG7B,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;AAIjB,CAAC,CAED,MAAME,gBAAAA,CAAmB,CACvBhL,WAAAA,CACAC,UACAC,YACAC,CAAAA,IAAAA,CACAC,cACAC,CAAAA,WAAAA,CACAC,eACAC,WACAC,CAAAA,MAAAA,CACAC,iBACAC,qBACAC,CAAAA,OAAAA,CACAC,UACAC,WACAC,CAAAA,gBAAAA,CACAC,iBACAC,CAAAA,uBAAAA,CACAC,wBACAC,qBACAC,CAAAA,gBAAAA,CACAC,SACAC,CAAAA,cAAAA,CACAC,iBACAC,YACAC,CAAAA,gBAAAA,CACAC,eACAC,CAAAA,aAAAA,CACAC,uBACAC,aACAC,CAAAA,SAAAA,CACAC,SACAC,UACAC,CAAAA,QAAAA,CACAC,MACAC,UACAC,CAAAA,SAAAA,CACAC,mBACAC,CAAAA,eAAAA,CACAC,cACAC,KACAC,CAAAA,gBAAAA,CACAC,cAAgB,CAAA,EAAA,CAChBC,eAAgB,EAChBC,CAAAA,gBAAAA,CACAC,OACAC,CAAAA,OAAAA,CACAC,eACAC,cACAC,CAAAA,aAAAA,CACAC,eACAC,sBACAC,CAAAA,oBAAAA,CACAC,eACAK,oBACAC,CAAAA,eAAAA,CACAL,kBACAC,CAAAA,iBAAAA,CACAC,iBACAC,cACAG,CAAAA,YAAAA,CACAC,eACAC,QACAC,CAAAA,UAAAA,CACAC,eACAC,QACAC,CAAAA,kBAAAA,CACAlsB,eACAmsB,CAAAA,MAAAA,CACA6G,eACA5G,eACAC,CAAAA,eAAAA,CACAC,yBACAC,aACAC,CAAAA,sBAAAA,CACAC,MACAC,kBACAC,CAAAA,qBAAAA,CACAC,eACAC,CAAAA,iBAAAA,CACAC,qBACAC,qBACAC,CAAAA,UAAAA,CACAC,aACAC,CAAAA,UAAAA,CACAC,wBACAC,oBACAC,CAAAA,YAAAA,CACAC,gBACAC,CAAAA,mBAAAA,CACAC,wBACAC,gBACAC,CAAAA,oBAAAA,CACAC,oBACAC,SACAC,CAAAA,SAAAA,CACAC,eACAC,eACAC,CAAAA,eAAAA,CACAC,eACAC,CAAAA,oBAAAA,CAAsB,GACtBC,oBAAsB,CAAA,EAAA,CACtBC,cAAe,EACfC,CAAAA,aAAAA,CAAe,GACfC,kBAAoB,CAAA,EAAA,CACpBC,kBAAoB,CAAA,EAAA,CACpBC,iBAAkB,EAClBC,CAAAA,gBAAAA,CAAkB,GAClBC,KACAC,CAAAA,WAAAA,CACAC,oBACAC,OACAC,CAAAA,OAAAA,CACAC,MACAC,CAAAA,MAAAA,CACAC,SACAC,YACAC,CAAAA,WAAAA,CACAC,SACAC,CAAAA,eAAAA,CACAC,SACAC,aACAC,CAAAA,aAAAA,CACAC,OACAC,CAAAA,YAAAA,CACAC,WACAC,MACAC,CAAAA,SAAAA,CACAC,eACAC,cACAC,CAAAA,gBAAAA,CACAC,kBACAC,eACAC,CAAAA,kBAAAA,CACAC,iBACAC,CAAAA,gBAAAA,CACAC,oBACAC,WACAC,CAAAA,WAAAA,CACAC,cACAC,gBACAC,CAAAA,YAAAA,CACAC,aACAC,YACAC,CAAAA,YAAAA,CACAC,YACAC,CAAAA,WAAAA,CACAC,OACAC,QACAC,CAAAA,QAAAA,CACAC,WACAC,WACAC,CAAAA,mBAAAA,CACAC,OACAC,iBACAC,CAAAA,sBAAAA,CACAC,gBACAC,CAAAA,aAAAA,CACAC,MACAC,WACAC,CAAAA,aAAAA,CACAC,iBACAC,CAAAA,kBAAAA,CACAC,oBACAC,iBACAC,CAAAA,mBAAAA,CACAC,oBACAC,CAAAA,iBAAAA,CACAC,YACAC,eACAC,CAAAA,qBAAAA,CACAC,eACAC,kBACAC,CAAAA,KAAAA,CACAC,MACAC,aACAC,CAAAA,qBAAAA,CACAC,SACA/yL,CAAAA,QAAAA,CACAC,QACF,CAEA,CAAA,IAAI6kK,KAAM,CAAA,IACV,OAAMouB,OAAgBn2P,SAAAA,YAAAA,CASpBm4C,IAAKi+M,CAAAA,UAAU,CAAE,CACf,KAAM,CAAEC,WAAW,CAAEC,YAAY,CAAEC,gBAAgB,CAAEC,YAAY,CAAE17P,QAAQ,CAAE6mC,cAAc,CAAEouE,QAAQ,CAAEwuI,WAAW,CAAEnsI,KAAK,CAAEqkJ,gBAAgB,CAAEC,YAAY,CAAEC,YAAY,CAAEC,YAAY,CAAEh8P,KAAK,CAAEsmG,EAAE,CAAE,CAAGk1J,UACrM,CAAA,IAAI,CAACz0N,cAAc,CAAGA,cACtB43F,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC6nC,cAAAA,CAAgB3H,qBAAqB3xB,GAAG,CAAC4iP,kBAC1D1xH,YAAaz/H,CAAAA,GAAG,CAAC6nC,cAAAA,CAAgB1H,qBAAqB5xB,GAAG,CAAC6tP,gBAC1D,CAAA,CAAA,IAAI,CAACW,oBAAoB,EAAA,CACzB,IAAI,CAACC,mBAAmB,EACxB,CAAA,IAAI,CAACnwF,KAAK,CAAG,IAAI23E,gBAAAA,CAAiB38M,cAClC,CAAA,CAAA,IAAI,CAACo1N,aAAa,CAAGH,YACrB,CAAA,IAAI,CAACn6H,KAAK,CAAG,IAAI20E,MAAMzvK,cACvB,CAAA,CAAA,IAAI,CAACq1N,uBAAuB,CAAC,IAAI,CAACv6H,KAAK,CACvC,CAAA,IAAI,CAACqzG,MAAM,CAAG,IAAIF,cAAc,IAAI,CAACwC,MAAM,CAAA,CAC3C,GAAIikB,WAAa,CAAA,IAAI,CAACvmB,MAAM,CAACtrF,MAAM,CAAG6xG,WACtC,CAAA,IAAI,CAACjpB,OAAO,CAAG,IAAIiF,cAAe,CAAA,IAAI,CAACvC,MAAM,CAC7C,CAAA,IAAI,CAAC4mB,YAAY,CAAGA,cAAgB,EACpC,CAAA,IAAI,CAACO,iBAAiB,CAAG,IAAIliF,KAAM,CAAA,CACjC15K,IAAM,CAAA,OAAA,CACN0mC,GAAImrF,aACN,CAAA,CACA,CAAA,IAAI,CAACgqI,iBAAiB,CAAG,IAAIniF,KAAM,CAAA,CACjC15K,KAAM,OACN0mC,CAAAA,EAAAA,CAAIorF,aACJviH,CAAAA,OAAAA,CAAS,MACT0tK,cAAgBviD,CAAAA,aAClB,CACA,CAAA,CAAA,IAAI,CAACohI,kBAAkB,CAAG,IAAIpiF,MAAM,CAClC15K,IAAAA,CAAM,SACN0mC,EAAIqrF,CAAAA,cAAAA,CACJkrD,eAAgBviD,aAClB,CAAA,CACA,CAAA,IAAI,CAACqhI,cAAc,CAAG,IAAIriF,KAAAA,CAAM,CAC9B15K,IAAM,CAAA,IAAA,CACN0mC,EAAIurF,CAAAA,UAAAA,CACJ+qD,oBAAqBriD,eACvB,CAAA,CACA,CAAA,IAAI,CAACqhI,qBAAqB,CAAG,IAAItiF,KAAM,CAAA,CACrC15K,KAAM,WACN0mC,CAAAA,EAAAA,CAAIsrF,kBACJirD,cAAgBviD,CAAAA,aAClB,GACA,MAAMuhI,uBAAAA,CAA0B,IAAIt+E,gBAAAA,CAAiB,WACrDs+E,uBAAwBx8E,CAAAA,UAAU,CAAC,IAAI,CAACm8E,iBAAiB,CACzDK,CAAAA,uBAAAA,CAAwBx8E,UAAU,CAAC,IAAI,CAACo8E,iBAAiB,CACzDI,CAAAA,uBAAAA,CAAwBx8E,UAAU,CAAC,IAAI,CAACq8E,kBAAkB,EAC1DG,uBAAwBr8E,CAAAA,eAAe,CAAC,IAAI,CAACg8E,iBAAiB,CAC9DK,CAAAA,uBAAAA,CAAwBx8E,UAAU,CAAC,IAAI,CAACu8E,qBAAqB,EAC7DC,uBAAwBr8E,CAAAA,eAAe,CAAC,IAAI,CAACo8E,qBAAqB,CAAA,CAClEC,wBAAwBr8E,eAAe,CAAC,IAAI,CAACm8E,cAAc,CAC3D,CAAA,IAAI,CAAC36H,KAAK,CAACC,MAAM,CAAG46H,uBACpBruB,CAAAA,aAAAA,CAAcI,iBAAiB,CAAC1nM,cAAAA,CAChC,CAAA,IAAI,CAAC84G,QAAQ,CAAG,IAAI4xB,eAAgB1qI,CAAAA,cAAAA,CAAgB,IAAI,CAAC86F,KAAK,CAC9D,CAAA,GAAI8hH,YAAa,CACf,IAAI,CAACA,WAAW,CAAG,IAAIA,WAAY58M,CAAAA,cAAAA,CAAgB,IAAI,CAAC0xG,IAAI,CAAE,IAAI,CAAC5W,KAAK,CAAE,IAAI,CAACge,QAAQ,CAAE,IAAI,CAACq1F,MAAM,CAAA,CACpG,IAAI,CAACtwO,IAAI,CAAC,WAAA,CAAa,IAAI,CAAC+3P,UAAU,CAAE,IAAI,EAC9C,CACA,GAAIjB,aAAc,CAChB,IAAI,CAAC7X,QAAQ,CAAG,IAAI6X,YAAAA,CAAa30N,cAAgB,CAAA,IAAI,CAAC0xG,IAAI,CAAE,IAAI,CAAC5W,KAAK,CACtE,CAAA,IAAI,CAACj9H,IAAI,CAAC,YAAa,IAAI,CAACg4P,WAAW,CAAE,IAAI,EAC/C,CACA,IAAI,CAACznJ,QAAQ,CAAGA,QAAAA,EAAY,IAC5B,CAAA,IAAI,CAACqC,KAAK,CAAGA,KAAS,EAAA,IACtB,CAAA,IAAI,CAACx3G,KAAK,CAAGA,OAAS,IACtB,CAAA,IAAI,CAACE,QAAQ,CAAGA,QAAY,EAAA,IAAA,CAC5B,GAAI07P,YAAAA,CAAc,CAChB,IAAI,CAACA,YAAY,CAAGA,YACpB,CAAA,IAAI,CAACA,YAAY,CAACzuB,GAAG,CAAG,KAAI,CAE9B,IAAI,CAAC7mI,EAAE,CAAGA,EAAAA,CAAK,IAAIA,EAAG,CAAA,IAAI,EAAI,IAC9B,CAAA,GAAI,IAAI,CAACs1J,YAAY,CAAE,IAAI,CAACA,YAAY,CAACiB,kBAAkB,EAC3D,CAAA,IAAI,CAACC,aAAa,CAAGf,YAAAA,EAAgB,GACrC,GAAI,IAAI,CAACxpB,aAAa,CAAE,CACtB,IAAI,CAACiF,MAAM,CAAC0D,UAAU,CAAC,QAAA,CAAU,IAAIN,aAAAA,CAAc,IAAI,CACzD,EAAA,CACAihB,gBAAiB/xP,CAAAA,OAAO,CAAC,eAACizP,EAAAA,CACxB,MAAMz4P,OAAU,CAAA,IAAIy4P,gBAAgB,IAAI,CAAA,CACxC,IAAI,CAACvlB,MAAM,CAAC0D,UAAU,CAAC52O,OAAQq2O,CAAAA,WAAW,CAAEr2O,OAC9C,EAAA,CAAA,CAAA,CACAq3P,gBAAiB7xP,CAAAA,OAAO,CAAC,eAACkzP,EAAAA,CACxB,IAAI,CAAC7e,OAAO,CAAC1wO,GAAG,CAAC,IAAIuvP,eAAAA,CAAgB,IAAI,CAC3C,EAAA,CAAA,CACA,CAAA,IAAI,CAAC/mJ,wBAAwB,CAAG,IAAI,CAACgnJ,kBAAkB,CAAC1vP,IAAI,CAAC,IAAI,CAAA,CACjE,GAAI,OAAOtF,QAAAA,GAAa,WAAa,CAAA,CACnC,GAAIA,QAASi1P,CAAAA,MAAM,GAAKj4P,SAAAA,CAAW,CACjC,IAAI,CAACk4P,WAAW,CAAG,SACnBl1P,QAAS7I,CAAAA,gBAAgB,CAAC,kBAAoB,CAAA,IAAI,CAAC62G,wBAAwB,CAAE,KAC/E,EAAA,CAAA,KAAO,GAAIhuG,QAASm1P,CAAAA,SAAS,GAAKn4P,SAAAA,CAAW,CAC3C,IAAI,CAACk4P,WAAW,CAAG,YACnBl1P,QAAS7I,CAAAA,gBAAgB,CAAC,qBAAuB,CAAA,IAAI,CAAC62G,wBAAwB,CAAE,KAClF,EAAA,CAAA,KAAO,GAAIhuG,QAASo1P,CAAAA,QAAQ,GAAKp4P,SAAW,CAAA,CAC1C,IAAI,CAACk4P,WAAW,CAAG,UAAA,CACnBl1P,SAAS7I,gBAAgB,CAAC,qBAAsB,IAAI,CAAC62G,wBAAwB,CAAE,KAAA,EACjF,CAAO,KAAA,GAAIhuG,SAASq1P,YAAY,GAAKr4P,SAAW,CAAA,CAC9C,IAAI,CAACk4P,WAAW,CAAG,cAAA,CACnBl1P,SAAS7I,gBAAgB,CAAC,yBAA0B,IAAI,CAAC62G,wBAAwB,CAAE,KAAA,EACrF,CACF,CACA,IAAI,CAACsnJ,IAAI,CAAGC,QAAS,CAAA,IAAI,EAC3B,CAIA,OAAOvwB,cAAe9lM,CAAAA,EAAE,CAAE,CACxB,OAAOA,GAAKo0N,OAAQkC,CAAAA,aAAa,CAACt2N,EAAG,CAAA,CAAG8lM,cAC1C,EAAA,CACAgvB,sBAAuB,CACrB,MAAMj8H,QAAW,CAAA,IAAI+1F,gBACrB/1F,CAAAA,QAAAA,CAASv/H,IAAI,CAAG,mBAChBirI,kBAAmB,CAAA,IAAI,CAAC3kG,cAAc,CAAEi5F,UAC1C,CACAk8H,mBAAAA,EAAsB,CACpB,MAAM/+H,QAAU,IAAIw9F,cAAAA,CAAe,IAAI,CAAC5zL,cAAc,CAAE,IAAIgvL,gBAAAA,CAAAA,CAC5D34F,iBAAkB,CAAA,IAAI,CAACr2F,cAAc,CAAEo2F,SACzC,CACA,IAAI6+H,cAAe,CACjB,OAAO,IAAI,CAACG,aAAa,CAE3B,IAAIvY,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QAAQ,CAEtB,IAAI6Z,UAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eACd,CACA/kL,SAAAA,CAAU9wE,GAAG,CAAEvD,QAAQ,CAAE,CACvB2iH,IAAAA,CAAKloH,GAAG,CAAC8I,GAAAA,CAAK,CAACgB,GAAAA,CAAKu9G,YAClB,GAAIv9G,GAAAA,CAAK,CACPvE,QAAAA,CAASuE,KACT,MACF,CACA,MAAMqhN,KAAAA,CAAQ9jG,SAASu3I,sBAAsB,CAC7C,MAAMC,MAASx3I,CAAAA,QAAAA,CAASw3I,MAAM,CAC9B,MAAM7oB,MAAS3uH,CAAAA,QAAAA,CAAS2uH,MAAM,CAC9B,IAAI,CAAC8oB,2BAA2B,CAAC3zC,MAAO,GAACrhN,EAAAA,CACvC,IAAI,CAACi1P,YAAY,CAACF,MAAAA,CAAAA,CAClB,IAAI,CAACG,YAAY,CAAChpB,MAClB,CAAA,CAAA,GAAI,CAAClsO,GAAAA,CAAK,CACRvE,QAAS,CAAA,IAAA,EACX,CAAO,KAAA,CACLA,SAASuE,GACX,EAAA,CACF,CACF,EAAA,CAAA,EACF,CACAkqO,OAAQzuO,CAAAA,QAAQ,CAAE,CAChB,IAAI,CAAC4B,IAAI,CAAC,eACV,CAAA,CAAA,MAAM6uO,OAAS,IAAI,CAACA,MAAM,CAACxtO,IAAI,CAAC,CAC9BwrO,OAAAA,CAAS,IACX,CAAA,CAAA,CACA,GAAIgC,MAAO93O,CAAAA,MAAM,GAAK,CAAG,CAAA,CACvB,IAAI,CAACiJ,IAAI,CAAC,aAAA,CAAA,CACV5B,WACA,MACF,CACA,IAAI05P,WAAAA,CAAc,EAClB,MAAMC,kBAAAA,CAAqB,IACzBD,CAAAA,WAAAA,EAAAA,CACA,IAAI,CAAC93P,IAAI,CAAC,kBAAoB83P,CAAAA,WAAAA,CAAcjpB,OAAO93O,MAAM,CAAA,CACzD,GAAI+gQ,WAAAA,GAAgBjpB,OAAO93O,MAAM,CAAE,CACjC,IAAI,CAACiJ,IAAI,CAAC,aAAA,CAAA,CACV5B,QACF,GAAA,CACF,EACAywO,MAAOprO,CAAAA,OAAO,CAAC,KAACgtN,EAAAA,CACd,GAAI,CAACA,KAAAA,CAAMj0G,MAAM,CAAE,CACjBi0G,KAAMlyN,CAAAA,IAAI,CAAC,MAAA,CAAQw5P,oBACnBtnC,KAAMlyN,CAAAA,IAAI,CAAC,OAAA,CAASw5P,oBACpB,IAAI,CAAClpB,MAAM,CAAC7B,IAAI,CAACvc,KACnB,EAAA,CAAA,KAAO,CACLsnC,kBAAAA,GACF,CACF,CACF,EAAA,CACAlb,eAAgBmb,CAAAA,SAAS,CAAE55P,QAAQ,CAAE,CACnCA,QAAAA,GACF,CACAu5P,2BAA4B3zC,CAAAA,KAAK,CAAE5lN,QAAQ,CAAE,CAC3C,GAAI,OAAO4lN,KAAMi0C,CAAAA,eAAe,GAAK,QAAYj0C,EAAAA,KAAAA,CAAMi0C,eAAe,CAAG,EAAG,CAC1E,IAAI,CAAC9mB,MAAM,CAAC2E,WAAW,CAAC9xB,MAAMi0C,eAAe,EAC/C,CACA,GAAI,CAACj0C,KAAMk0C,CAAAA,mBAAmB,CAAE,CAC9Bl0C,KAAAA,CAAMk0C,mBAAmB,CAAGl0C,KAAAA,CAAMm0C,uBAAsB,CAE1D,GAAI,CAACn0C,MAAMuzC,cAAc,CAAE,CACzBvzC,KAAMuzC,CAAAA,cAAc,CAAGvzC,KAAMo0C,CAAAA,gBAAe,CAE9C,GAAI,CAACp0C,KAAAA,CAAMqzC,QAAQ,CAAE,CACnBrzC,KAAMqzC,CAAAA,QAAQ,CAAGrzC,KAAAA,CAAMq0C,UAAS,CAElC,IAAI,CAAC90N,MAAM,CAAGygL,KAAMvnM,CAAAA,KAAK,CACzB,IAAI,CAAC+mB,OAAO,CAAGwgL,KAAMtnM,CAAAA,MAAM,CAC3B,GAAIsnM,KAAAA,CAAMk0C,mBAAmB,CAAE,CAC7B,IAAI,CAACx3N,cAAc,CAACgY,aAAa,CAAG5/C,MAAOo/C,CAAAA,iBAAgB,CAE7D,IAAI,CAACogN,mBAAmB,CAACt0C,KAAAA,CAAMuzC,cAAc,CAAE,IAAI,CAACh0N,MAAM,CAAE,IAAI,CAACC,OAAO,CACxE,CAAA,IAAI,CAAC+0N,iBAAiB,CAACv0C,KAAMqzC,CAAAA,QAAQ,CAAE,IAAI,CAAC9zN,MAAM,CAAE,IAAI,CAACC,OAAO,CAAA,CAChE,GAAIwgL,KAAAA,CAAMvoF,MAAM,EAAIuoF,KAAAA,CAAMw0C,UAAU,CAAE,CACpC,MAAMlvF,WAAc,CAAA,IAAIyO,gBAAiB,CAAA,aAAA,CAAA,CACzC,MAAMt8C,MAAS,CAAA,EACf,CAAA,IAAI,MAAM98H,GAAOqlN,IAAAA,KAAAA,CAAMvoF,MAAM,CAAC,CAC5B,MAAM3qH,IAAAA,CAAOkzM,MAAMvoF,MAAM,CAAC98H,IAAI,CAC9BmS,IAAKgwB,CAAAA,EAAE,CAAG9zB,QAASrO,CAAAA,GAAAA,CAAK,EACxBmS,CAAAA,CAAAA,KAAKnH,OAAO,CAAGmH,IAAKgwB,CAAAA,EAAE,GAAKorF,aAC3BuP,CAAAA,MAAM,CAAC98H,GAAAA,CAAI,CAAG,IAAIm1K,KAAAA,CAAMhjK,IAC1B,EAAA,CACA,IAAI,IAAIha,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMg1M,MAAMw0C,UAAU,CAACzhQ,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACzD,MAAM2hQ,QAAAA,CAAWz0C,MAAMw0C,UAAU,CAAC1hQ,CAAE,CAAA,CACpC,MAAM+kI,KAAQJ,CAAAA,MAAM,CAACg9H,QAAS58H,CAAAA,KAAK,CAAC,CACpC,GAAI,CAACA,KAAAA,CAAO,SACZ,GAAI48H,QAAAA,CAASnwH,WAAW,CAAE,CACxBghC,YAAY0Q,eAAe,CAACn+C,KAC9B,EAAA,CAAA,KAAO,CACLytC,WAAYuQ,CAAAA,UAAU,CAACh+C,KAAAA,EACzB,CACAytC,WAAYkP,CAAAA,eAAe,CAAC1hL,CAAAA,CAAE,CAAG2hQ,QAAS9uP,CAAAA,QAAO,CAEnD,IAAI,CAAC6xH,KAAK,CAACC,MAAM,CAAG6tC,YACtB,CACA,GAAI06C,MAAM00C,WAAW,CAAE,CACrB,MAAMnb,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,GAAIA,QAAS,CACX,IAAI,IAAIzmP,CAAI,CAAA,CAAA,CAAGkY,GAAMg1M,CAAAA,KAAAA,CAAM00C,WAAW,CAAC3hQ,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1D,MAAM6hQ,GAAAA,CAAM30C,MAAM00C,WAAW,CAAC5hQ,EAAE,CAChCymP,OAAAA,CAAQrwG,QAAQ,CAACyrH,GAAAA,CAAIv+P,IAAI,CAAEu+P,IAAIr8H,OAAO,CAAEq8H,IAAIl8H,WAAW,CAAEk8H,IAAI73N,EAAE,CAAE63N,GAAIl9H,CAAAA,MAAM,EAC7E,CACF,CACF,CACA,GAAIuoF,KAAAA,CAAM40C,UAAU,CAAE,CACpB,IAAI,CAACC,IAAI,CAAChqB,MAAM,CAAG7qB,KAAAA,CAAM40C,WAAU,CAErC,IAAI,CAACE,cAAc,CAAC90C,KAAAA,CAAM+0C,SAAS,CAAE36P,QAAAA,EACvC,CACA06P,cAAe/mB,CAAAA,IAAI,CAAE3zO,QAAQ,CAAE,CAC7B,MAAM4Q,GAAM+iO,CAAAA,IAAAA,CAAKh7O,MAAM,CACvB,IAAI+/C,KAAQ9nC,CAAAA,GAAAA,CACZ,MAAMumD,KAAQ,CAAA,cAAA,CACd,GAAIvmD,GAAK,CAAA,CACP,MAAM2mO,MAAS,CAAA,CAAChzO,GAAKqkO,CAAAA,MAAAA,GAAAA,CACnBlwL,QACA,GAAIn0C,GAAAA,CAAK,CACPvE,QAAAA,CAASuE,KACX,CAAO,KAAA,GAAIm0C,KAAU,GAAA,CAAA,CAAG,CACtB,IAAI,CAACkiN,iBAAiB,EACtB56P,CAAAA,QAAAA,CAAS,MACX,CACF,CAAA,CACA,IAAI,IAAItH,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAK,EAAElY,CAAAA,CAAE,CAC1B,IAAI6K,GAAAA,CAAMowO,IAAI,CAACj7O,EAAE,CACjB,GAAI,CAACy+D,KAAM/7D,CAAAA,IAAI,CAACmI,GAAIk9G,CAAAA,WAAW,EAAO,CAAA,EAAA,IAAI,CAAC43I,aAAa,CAAE,CACxD90P,GAAAA,CAAMlL,KAAKE,IAAI,CAAC,IAAI,CAAC8/P,aAAa,CAAE90P,GAAAA,EACtC,CACA,IAAI,CAACwvO,MAAM,CAACnE,IAAI,CAACrrO,GAAAA,CAAK,SAAUg0O,MAClC,EAAA,CACF,MAAO,CACL,IAAI,CAACqjB,iBAAiB,EAAA,CACtB56P,QAAS,CAAA,IAAA,EACX,CACF,CACAw5P,YAAAA,CAAaF,MAAM,CAAE,CACnB,GAAI,CAACA,MAAAA,CAAQ,OACb,IAAI,IAAI5gQ,CAAI,CAAA,CAAA,CAAGA,CAAI4gQ,CAAAA,MAAAA,CAAO3gQ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,IAAI,CAAC4gQ,MAAM,CAACtwP,GAAG,CAACswP,MAAM,CAAC5gQ,CAAE,CAAA,CAACsD,IAAI,CAAEs9P,MAAM,CAAC5gQ,CAAAA,CAAE,CAAC6K,GAAG,EAC/C,CACF,CACAk2P,YAAAA,CAAahpB,MAAM,CAAE,CACnB,MAAMxtO,IAAAA,CAAO,EAAE,CACf,MAAM43P,aAAe,EAAC,CACtB,MAAMC,YAAAA,CAAe,EACrB,CAAA,IAAI,IAAIpiQ,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC2+P,YAAY,CAAC1+P,MAAM,CAAED,IAAI,CAC/C,MAAMgqC,GAAK,IAAI,CAAC20N,YAAY,CAAC3+P,EAAE,CAC/B,GAAI,CAAC+3O,MAAM,CAAC/tM,EAAG,CAAA,CAAE,CACf,QACF,CACAm4N,YAAY,CAACn4N,GAAG,CAAG,IAAA,CACnBz/B,KAAKzJ,IAAI,CAACi3O,MAAM,CAAC/tM,GAAG,EACtB,CACA,GAAI,IAAI,CAACorM,aAAa,CAAE,CACtB,IAAI,MAAMprM,EAAM+tM,IAAAA,MAAAA,CAAO,CACrB,GAAIA,MAAM,CAAC/tM,EAAG,CAAA,CAACvyB,IAAI,GAAK,SAAU,CAChC2qP,YAAY,CAACp4N,EAAG,CAAA,CAAG,KACnBz/B,IAAKzJ,CAAAA,IAAI,CAACi3O,MAAM,CAAC/tM,EAAG,CAAA,EACtB,CACF,CACF,CACA,IAAI,MAAMA,EAAAA,IAAM+tM,MAAO,CAAA,CACrB,GAAIoqB,YAAY,CAACn4N,EAAG,CAAA,EAAIo4N,YAAY,CAACp4N,EAAAA,CAAG,CAAE,CACxC,QACF,CACAz/B,IAAAA,CAAKzJ,IAAI,CAACi3O,MAAM,CAAC/tM,EAAG,CAAA,EACtB,CACA,IAAI,IAAIhqC,CAAI,CAAA,CAAA,CAAGA,EAAIuK,IAAKtK,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAClC,MAAMga,IAAAA,CAAOzP,IAAI,CAACvK,CAAAA,CAAE,CACpB,MAAM25N,KAAAA,CAAQ,IAAIob,KAAM/6N,CAAAA,IAAAA,CAAK1W,IAAI,CAAE0W,KAAKvC,IAAI,CAAEuC,IAAKg7N,CAAAA,IAAI,CAAEh7N,IAAKA,CAAAA,IAAI,CAClE2/M,CAAAA,MAAM3vL,EAAE,CAAG9zB,SAAS8D,IAAKgwB,CAAAA,EAAE,CAAE,EAC7B2vL,CAAAA,CAAAA,KAAMoc,CAAAA,OAAO,CAAG/7N,IAAK+7N,CAAAA,OAAO,CAAG/7N,IAAK+7N,CAAAA,OAAO,CAAG,KAC9Cpc,CAAAA,KAAMj0G,CAAAA,MAAM,CAAG1rG,IAAKvC,CAAAA,IAAI,GAAK,QAAYuC,EAAAA,IAAAA,CAAKA,IAAI,EAAIA,IAAAA,CAAKA,IAAI,CAACqoP,WAAW,CAAG,CAAA,CAC9E1oC,KAAMnpN,CAAAA,IAAI,CAACF,GAAG,CAAC0J,IAAKxJ,CAAAA,IAAI,EACxB,GAAIwJ,IAAAA,CAAK+nP,IAAI,CAAE,CACb,IAAI,MAAMvvB,MAAAA,IAAUx4N,IAAK+nP,CAAAA,IAAI,CAAC,CAC5BpoC,KAAAA,CAAMgd,mBAAmB,CAACnE,OAAQx4N,IAAK+nP,CAAAA,IAAI,CAACvvB,MAAAA,CAAO,EACrD,CACF,CACA,IAAI,CAACuF,MAAM,CAACznO,GAAG,CAACqpN,KAClB,EAAA,CACF,CACAloM,KAAQ,EAAA,CACN,IAAI,CAACqtL,KAAK,CAAG,CAAA,CACb,IAAI,CAAC51M,IAAI,CAAC,OAAA,CAAS,CACjBg+G,SAAW71G,CAAAA,GAAAA,EAAAA,CACXzS,OAAQ,IACV,CACA,CAAA,CAAA,GAAI,CAAC,IAAI,CAAC0jQ,gBAAgB,CAAE,CAC1B,IAAI,CAACJ,iBAAiB,GACxB,CACA,IAAI,CAAClhB,OAAO,CAAC93O,IAAI,CAAC,aAAc,IAAI,CAACoyI,IAAI,CAAA,CACzC,IAAI,CAACpyI,IAAI,CAAC,YAAA,CAAA,CACV,IAAI,CAAC83O,OAAO,CAAC93O,IAAI,CAAC,gBAAkB,CAAA,IAAI,CAACoyI,IAAI,CAAA,CAC7C,IAAI,CAAC0lG,OAAO,CAAC93O,IAAI,CAAC,oBAAsB,CAAA,IAAI,CAACoyI,IAAI,CAAA,CACjD,IAAI,CAACpyI,IAAI,CAAC,gBAAA,CAAA,CACV,IAAI,CAACk3P,IAAI,GACX,CACAmC,WAAAA,CAAY1kJ,EAAE,CAAE,CACd,GAAI,IAAI,CAACc,UAAU,CAAE,CACnB,IAAI,CAACA,UAAU,CAACvrE,MAAM,CAACyqE,IACzB,CACA,GAAI,IAAI,CAACxD,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACjnE,MAAM,GACnB,CACA,GAAI,IAAI,CAAC4kE,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAAC5kE,MAAM,GACtB,CACA,GAAI,IAAI,CAACrwC,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACqwC,MAAM,GACtB,CACF,CACAA,MAAAA,CAAOyqE,EAAE,CAAE,CACT,IAAI,CAACihG,KAAK,GACV,IAAI,CAACl1K,cAAc,CAACwJ,MAAM,EAC1B,CAAA,IAAI,CAAC4tM,OAAO,CAAC93O,IAAI,CAAC,IAAI,CAACs5P,QAAQ,CAAG,aAAA,CAAgB,SAAU3kJ,EAC5D,CAAA,CAAA,IAAI,CAACmjI,OAAO,CAAC93O,IAAI,CAAC,kBAAmB20G,EACrC,CAAA,CAAA,IAAI,CAACmjI,OAAO,CAAC93O,IAAI,CAAC,YAAc20G,CAAAA,EAAAA,CAAAA,CAChC,IAAI,CAAC30G,IAAI,CAAC,QAAU20G,CAAAA,EAAAA,CAAAA,CACpB,IAAI,CAAC0kJ,WAAW,CAAC1kJ,EAAAA,EACnB,CACA7R,MAAS,EAAA,CACP,IAAI,CAACy2J,gBAAgB,GACrB,IAAI,CAAC74N,cAAc,CAACyY,UAAU,EAC9B,CAAA,IAAI,CAACn5C,IAAI,CAAC,aACV,IAAI,CAACoyI,IAAI,CAAC2O,aAAa,EACvB,CAAA,GAAI,IAAI,CAACy8F,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvrG,SAAS,GACzB,CACA,IAAI,CAACunH,iBAAiB,CAAC,IAAI,CAACh+H,KAAK,CAACC,MAAM,EACxC,IAAI,CAACz7H,IAAI,CAAC,YAAA,CAAA,CACV,IAAI,CAAC0gC,cAAc,CAAC2Y,QAAQ,GAC9B,CACAmgN,iBAAAA,CAAkBrvF,gBAAgB,CAAE,CAClC,IAAI,CAAC3wB,QAAQ,CAACtvG,MAAM,CAACigI,gBAAAA,CAAAA,CACrB,IAAI,CAAC3wB,QAAQ,CAAC04B,eAAe,CAAC,IAAI,CAACrd,UAAU,CAAEsV,gBAAAA,CAAAA,CAC/C,IAAI,CAACtV,UAAU,CAAC/xD,MAAM,CAAC,IAAI,CAACpiE,cAAc,EAC5C,CACA+4N,qBAAqBtxP,GAAG,CAAEwsG,EAAE,CAAEuC,EAAE,CAAE,CAChC,MAAMwuD,KAAQ,CAAA,IAAI,CAACA,KAAK,CAACkwC,KACzBlwC,CAAAA,KAAM/wD,CAAAA,EAAE,CAAGA,EACX+wD,CAAAA,KAAMxuD,CAAAA,EAAE,CAAGA,EAAAA,CACX,GAAI/uG,GAAMu9J,CAAAA,KAAAA,CAAMm5E,kBAAkB,CAAE,CAClCn5E,MAAM+3E,GAAG,CAAG/3E,KAAMo5E,CAAAA,SAAS,CAC3Bp5E,KAAAA,CAAMo5E,SAAS,CAAG,CAClBp5E,CAAAA,KAAAA,CAAMm5E,kBAAkB,CAAG12O,IAAM,IACnC,CAAA,KAAO,CACLu9J,KAAMo5E,CAAAA,SAAS,GACjB,CACA,IAAI,CAACp5E,KAAK,CAACvC,SAAS,CAAC5wH,KAAK,CAAG,IAAI,CAAC7R,cAAc,CAACqb,kBAAkB,CACnE,IAAI,CAACrb,cAAc,CAACqb,kBAAkB,CAAG,CACzC2pH,CAAAA,KAAAA,CAAM44E,OAAO,CAAG,IAAI,CAAC9kG,QAAQ,CAAC8uB,aAAY,CAE5CoxF,eAAkB,EAAA,CAChB,IAAIh0F,KAAQ,CAAA,IAAI,CAACA,KAAK,CAACkwC,KAAK,CAC5BlwC,KAAMD,CAAAA,OAAO,CAAG,IAAI,CAACjsB,QAAQ,CAACmtB,gBAAgB,CAC9CjB,KAAMif,CAAAA,SAAS,CAAG,IAAI,CAACnrC,QAAQ,CAAC42B,iBAAiB,CACjD1K,KAAAA,CAAM/wH,OAAO,CAAG,IAAI,CAACjU,cAAc,CAACsb,uBACpC0pH,CAAAA,KAAM84E,CAAAA,gBAAgB,CAAG,IAAI,CAAChlG,QAAQ,CAACshB,iBAAiB,CACxD4K,MAAM+4E,aAAa,CAAG,IAAI,CAACjlG,QAAQ,CAACyuB,cAAc,CAClDvC,MAAMg5E,YAAY,CAAG,IAAI,CAACllG,QAAQ,CAAC05B,aAAa,CAChDxN,KAAAA,CAAMi5E,WAAW,CAAG,IAAI,CAACnlG,QAAQ,CAAC25B,YAAY,CAC9C,MAAMwmF,KAAQ,CAAA,IAAI,CAACj5N,cAAc,CAACub,cAClCypH,CAAAA,KAAM24E,CAAAA,SAAS,CAAGsb,KAAK,CAACllO,oBAAoB,CAAG,CAAA,CAAIp+B,IAAKoU,CAAAA,GAAG,CAACkvP,KAAK,CAACjlO,kBAAmB,CAAA,CAAG,EAAG,CAAKr+B,CAAAA,CAAAA,IAAAA,CAAKoU,GAAG,CAACkvP,KAAK,CAAChlO,gBAAAA,CAAiB,CAAG,CAAG,CAAA,CAAA,CACtI+wI,CAAAA,KAAMs4E,CAAAA,QAAQ,CAAG,IAAI,CAACxkG,QAAQ,CAACwuB,SAC/BtC,CAAAA,KAAMu4E,CAAAA,QAAQ,CAAG,IAAI,CAACzkG,QAAQ,CAAC45B,SAAS,CACxC1N,MAAMw4E,QAAQ,CAAG,IAAI,CAAC1kG,QAAQ,CAACsuB,SAAS,CACxCpC,MAAMy4E,SAAS,CAAG,IAAI,CAAC3kG,QAAQ,CAACuuB,UAAU,CAC1CrC,KAAAA,CAAMxI,aAAa,CAAG,IAAI,CAAC1jB,QAAQ,CAAC6uB,cACpC3C,CAAAA,KAAMk5E,CAAAA,iBAAiB,CAAG,IAAI,CAACplG,QAAQ,CAAC0uB,kBAAkB,CAC1DxC,MAAM64E,eAAe,CAAG,EACxB,IAAI,IAAIznP,CAAI,CAAA,CAAA,CAAGA,EAAI6iQ,KAAM5iQ,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnC,GAAIA,CAAAA,CAAI29B,mBAAqB,CAAA,CAC3BixI,MAAM64E,eAAe,EAAIob,KAAK,CAAC7iQ,CAAAA,EAAE,CAEnC6iQ,KAAK,CAAC7iQ,CAAAA,CAAE,CAAG,EACb,CACA,IAAI,CAAC0iJ,QAAQ,CAACmtB,gBAAgB,CAAG,CACjC,CAAA,IAAI,CAACntB,QAAQ,CAAC42B,iBAAiB,CAAG,CAClC,CAAA,IAAI,CAAC52B,QAAQ,CAACshB,iBAAiB,CAAG,CAClC,CAAA,IAAI,CAACp6H,cAAc,CAACsb,uBAAuB,CAAG,CAC9C,CAAA,IAAI,CAACw9F,QAAQ,CAACwuB,SAAS,CAAG,CAC1B,CAAA,IAAI,CAACxuB,QAAQ,CAAC2uB,2BAA2B,CAAG,CAC5C,CAAA,IAAI,CAAC3uB,QAAQ,CAAC0uB,kBAAkB,CAAG,CACnC,CAAA,IAAI,CAAC1uB,QAAQ,CAAC45B,SAAS,CAAG,CAC1B,CAAA,IAAI,CAAC55B,QAAQ,CAACsuB,SAAS,CAAG,CAC1B,CAAA,IAAI,CAACtuB,QAAQ,CAACuuB,UAAU,CAAG,CAC3B,CAAA,IAAI,CAACvuB,QAAQ,CAACyuB,cAAc,CAAG,CAC/B,CAAA,IAAI,CAACzuB,QAAQ,CAAC05B,aAAa,CAAG,CAC9B,CAAA,IAAI,CAAC15B,QAAQ,CAAC25B,YAAY,CAAG,CAC7BzN,CAAAA,KAAAA,CAAQ,IAAI,CAACA,KAAK,CAACvC,SAAS,CAC5BuC,KAAAA,CAAMnpB,OAAO,CAAG,IAAI,CAAC/C,QAAQ,CAACk3B,iBAC9BhL,CAAAA,KAAMk0F,CAAAA,MAAM,CAAG,IAAI,CAACpgH,QAAQ,CAAC4uB,mBAAmB,CAChD1C,MAAM5jI,KAAK,CAAG,CACd4jI,CAAAA,MAAMq5E,MAAM,CAAG,IAAI,CAACvlG,QAAQ,CAACkhB,gBAC7BgL,CAAAA,KAAAA,CAAMu5E,OAAO,CAAG,IAAI,CAACzlG,QAAQ,CAAC2qB,cAC9BuB,CAAAA,KAAAA,CAAMxkH,SAAS,CAAG,CAClBwkH,CAAAA,KAAMw5E,CAAAA,SAAS,CAAG,CAClBx5E,CAAAA,KAAMy5E,CAAAA,mBAAmB,CAAG,CAC5Bz5E,CAAAA,MAAMs5E,IAAI,CAAGt5E,MAAMnzH,KAAK,EAAImzH,KAAAA,CAAMnpB,OAAO,CAAGmpB,KAAAA,CAAMq5E,MAAM,CACxD,CAAA,IAAI,CAACvlG,QAAQ,CAACqgH,eAAe,CAAG,CAChC,CAAA,IAAI,CAACrgH,QAAQ,CAACkhB,gBAAgB,CAAG,CACjC,CAAA,IAAI,CAAClhB,QAAQ,CAACk3B,iBAAiB,CAAG,CAClC,CAAA,IAAI,CAACl3B,QAAQ,CAAC4uB,mBAAmB,CAAG,CACpC,CAAA,IAAI,CAAC5uB,QAAQ,CAAC2qB,cAAc,CAAG,CAC/B,CAAA,IAAI,CAAC3qB,QAAQ,CAACsgH,kBAAkB,CAAG,CACnC,CAAA,IAAI,CAACtgH,QAAQ,CAACmhB,mBAAmB,CAAG,CACpC,CAAA,IAAI,CAAC+K,KAAK,CAACs5E,IAAI,CAACI,wBAAwB,CAAG,IAAI,CAAC1+M,cAAc,CAAC0+M,wBAAwB,CACvF15E,KAAAA,CAAQ,IAAI,CAACA,KAAK,CAAC25E,SACnB35E,CAAAA,KAAAA,CAAM45E,eAAe,CAAG55E,KAAAA,CAAM65E,gBAAgB,CAC9C75E,MAAM85E,SAAS,CAAG95E,KAAM96F,CAAAA,UAAU,CAClC86F,KAAAA,CAAM65E,gBAAgB,CAAG,CACzB75E,CAAAA,KAAAA,CAAM96F,UAAU,CAAG,EACrB,CACA2tL,iBAAAA,CAAkBlxN,IAAI,CAAE5qB,KAAK,CAAEC,MAAM,CAAE,CACrC,IAAI,CAAC46O,SAAS,CAAGjwN,KACjB,IAAI,CAAC0Q,YAAY,CAACt7B,KAAAA,CAAOC,MAC3B,EAAA,CACA47O,oBAAoBjxN,IAAI,CAAE5qB,KAAK,CAAEC,MAAM,CAAE,CACvC,IAAI,CAAC86O,eAAe,CAAGnwN,IACvB,CAAA,GAAIA,IAASo/L,GAAAA,eAAAA,EAAmBhqN,QAAU7d,SAAW,CAAA,CACnD6d,KAAQ,CAAA,IAAI,CAACikB,cAAc,CAACmU,MAAM,CAACm/D,WAAW,CAC9Ct3F,MAAS,CAAA,IAAI,CAACgkB,cAAc,CAACmU,MAAM,CAACq/D,aAAY,CAElD,IAAI,CAACxzE,cAAc,CAACqX,YAAY,CAACt7B,KAAOC,CAAAA,MAAAA,EAC1C,CACAq9O,QAAW,EAAA,CACT,OAAOn4P,QAAQ,CAAC,IAAI,CAACk1P,WAAW,CAClC,CACAF,kBAAAA,EAAqB,CACnB,GAAI,IAAI,CAACmD,QAAQ,GAAI,CACnB,GAAI,IAAI,CAACjE,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACjzI,OAAO,GAC5B,CACF,CAAO,KAAA,CACL,GAAI,IAAI,CAACizI,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAAC/yI,MAAM,GAC3B,CACF,CACF,CACAhrE,YAAAA,CAAat7B,KAAK,CAAEC,MAAM,CAAE,CAC1B,GAAI,CAAC,IAAI,CAACs9O,YAAY,CAAE,OAAOp7P,SAAAA,CAC/B,GAAI,IAAI,CAACqhG,EAAE,EAAI,IAAI,CAACA,EAAE,CAAC2gE,OAAO,CAAE,CAC9B,OAAOhiK,SACT,CACA,MAAMq7P,WAAcnhQ,CAAAA,MAAAA,CAAOy1M,UAAU,CACrC,MAAM2rD,aAAephQ,MAAO01M,CAAAA,WAAW,CACvC,GAAI,IAAI,CAAC8oD,SAAS,GAAK9wB,oBAAsB,CAAA,CAC3C,MAAMpwO,CAAAA,CAAI,IAAI,CAACsqC,cAAc,CAACmU,MAAM,CAACp4B,KAAK,CAAG,IAAI,CAACikB,cAAc,CAACmU,MAAM,CAACn4B,MAAM,CAC9E,MAAMy9O,IAAOF,CAAAA,WAAAA,CAAcC,aAC3B,GAAI9jQ,CAAAA,CAAI+jQ,KAAM,CACZ19O,KAAAA,CAAQw9O,WACRv9O,CAAAA,MAAAA,CAASD,MAAQrmB,EACnB,CAAA,KAAO,CACLsmB,MAASw9O,CAAAA,YAAAA,CACTz9O,MAAQC,MAAStmB,CAAAA,EACnB,CACF,CAAA,KAAO,GAAI,IAAI,CAACkhQ,SAAS,GAAK/wB,qBAAsB,CAClD9pN,KAAAA,CAAQw9O,WACRv9O,CAAAA,MAAAA,CAASw9O,aACX,CACA,IAAI,CAACx5N,cAAc,CAACmU,MAAM,CAAC4lH,KAAK,CAACh+I,KAAK,CAAG,CAAC,EAAEA,MAAM,EAAE,CAAC,CACrD,IAAI,CAACikB,cAAc,CAACmU,MAAM,CAAC4lH,KAAK,CAAC/9I,MAAM,CAAG,CAAC,EAAEA,MAAO,CAAA,EAAE,CAAC,CACvD,IAAI,CAAC68O,gBAAgB,GACrB,OAAO,CACL98O,KAAOA,CAAAA,KAAAA,CACPC,OAAQA,MACV,CACF,CACA68O,gBAAmB,EAAA,CACjB,GAAI,CAAC,IAAI,CAACS,YAAY,EAAI,IAAI,CAAC/5J,EAAE,EAAE+1C,MAAAA,CAAQ,CACzC,MACF,CACA,GAAI,IAAI,CAACwhH,eAAe,GAAK/wB,gBAAiB,CAC5C,MAAM5xL,OAAS,IAAI,CAACnU,cAAc,CAACmU,MAAM,CACzC,IAAI,CAACnU,cAAc,CAACqX,YAAY,CAAClD,MAAOm/D,CAAAA,WAAW,CAAEn/D,MAAOq/D,CAAAA,YAAY,EAC1E,CACF,CACA8kJ,mBAAoB,CAClB,IAAI,CAACI,gBAAgB,CAAG,IACxB,CAAA,GAAI,IAAI,CAACthB,OAAO,CAACqF,SAAS,CAAE,CAC1B,IAAI,CAACrF,OAAO,CAACqF,SAAS,CAACid,eAAe,GACxC,CACF,CACApd,kBAAAA,CAAmBtqC,QAAQ,CAAE,CAC3B,IAAI+d,KAAAA,CACJ,GAAI,IAAI,CAACqnB,OAAO,CAACqF,SAAS,EAAI,OAAOC,OAAS,WAAa,CAAA,CACzD,KAAM,CAACjyO,CAAAA,CAAG0H,CAAGG,CAAAA,CAAAA,CAAE,CAAG0/L,QAASC,CAAAA,OAAO,CAACE,OAAO,CAC1C,IAAI,CAACilC,OAAO,CAACqF,SAAS,CAACtqC,OAAO,CAACxzM,GAAG,CAAC8L,CAAAA,CAAG0H,EAAGG,CAC3C,EAAA,CACA,IAAI,CAACwoH,KAAK,CAACglD,aAAa,CAACkyB,QAAAA,CAAAA,CACzB,GAAIA,QAAS5vG,CAAAA,MAAM,CAAC3/F,cAAc,CAAC,QAAW,CAAA,CAAA,CAC5C,GAAIuvM,QAAS5vG,CAAAA,MAAM,CAAC+uG,MAAM,CAAE,CAC1B4e,KAAAA,CAAQ,IAAI,CAACoe,MAAM,CAACh2O,GAAG,CAAC65M,SAAS5vG,MAAM,CAAC+uG,MAAM,CAAA,CAC9C,GAAI4e,KAAO,CAAA,CACT,IAAI,CAACjd,SAAS,CAACid,KACjB,EAAA,CAAA,KAAO,CACL,IAAI,CAACoe,MAAM,CAACtwO,IAAI,CAAC,CAAC,IAAI,EAAEm0M,QAAS5vG,CAAAA,MAAM,CAAC+uG,MAAM,CAAC,CAAC,CAAE,IAAI,CAAC2B,SAAS,CAAE,IAAI,EACxE,CACF,CAAO,KAAA,CACL,IAAI,CAACA,SAAS,CAAC,IACjB,EAAA,CACF,CACF,CACA6mD,iBAAiBhyB,OAAO,CAAEC,OAAO,CAAE,CACjC,GAAID,OAAWC,EAAAA,OAAAA,CAAS,CACtBN,aAAAA,CAAc3oO,GAAG,CAAC,IAAI,CAACqhC,cAAc,CAAE2nM,OAASC,CAAAA,OAAAA,EAClD,CACF,CACA90B,UAAUid,KAAK,CAAE,CACf,GAAIA,KAAAA,GAAU,IAAI,CAAC6pC,YAAY,CAAE,CAC/B,MAAMC,eAAkB,CAAA,IAAA,CACtB,IAAI,CAAC/mD,SAAS,CAAC,IAAA,EACjB,CACA,CAAA,MAAMgnD,gBAAkB,IACtB,CAAA,IAAI,CAACh/H,KAAK,CAACg4E,SAAS,CAAC,IAAI,CAAC8mD,YAAY,CAAG,IAAI,CAACA,YAAY,CAACvlM,SAAS,CAAG,IAAA,EACzE,CACA,CAAA,GAAI,IAAI,CAACulM,YAAY,CAAE,CACrB,IAAI,CAACzrB,MAAM,CAAC9wO,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAACu8P,YAAY,CAACx5N,EAAE,CAAC,CAAC,CAAE05N,gBAAiB,IAAI,CAAA,CACrE,IAAI,CAAC3rB,MAAM,CAAC9wO,GAAG,CAAC,CAAC,OAAO,EAAE,IAAI,CAACu8P,YAAY,CAACx5N,EAAE,CAAC,CAAC,CAAEy5N,eAAAA,CAAiB,IAAI,CACvE,CAAA,IAAI,CAACD,YAAY,CAACv8P,GAAG,CAAC,QAAA,CAAUy8P,eAAiB,CAAA,IAAI,EACvD,CACA,IAAI,CAACF,YAAY,CAAG7pC,MACpB,GAAI,IAAI,CAAC6pC,YAAY,CAAE,CACrB,IAAI,CAACzrB,MAAM,CAAC1wO,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAACm8P,YAAY,CAACx5N,EAAE,CAAC,CAAC,CAAE05N,eAAiB,CAAA,IAAI,EACpE,IAAI,CAAC3rB,MAAM,CAACtwO,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC+7P,YAAY,CAACx5N,EAAE,CAAC,CAAC,CAAEy5N,eAAiB,CAAA,IAAI,CACxE,CAAA,IAAI,CAACD,YAAY,CAACn8P,EAAE,CAAC,QAAA,CAAUq8P,gBAAiB,IAAI,CAAA,CACpD,GAAI,IAAI,CAACh/H,KAAK,CAACssE,SAAS,GAAK,GAAK,CAAC,IAAI,CAACwyD,YAAY,CAACrtB,SAAS,CAAE,CAC9D,IAAI,CAACqtB,YAAY,CAACrtB,SAAS,CAAG,KAChC,CACA,IAAI,CAAC4B,MAAM,CAAC7B,IAAI,CAAC,IAAI,CAACstB,YAAY,EACpC,CACAE,eAAAA,GACF,CACF,CACAlE,UAAAA,EAAa,CACX,IAAI,CAAChZ,WAAW,EAAEmd,KAAK,IAAM,CAAA,IAAI,CAACj/H,KAAK,CAAC63E,YAAY,EACtD,CACAkjD,WAAAA,EAAc,CACZ,IAAI,CAAChZ,OAAO,EAAEviL,QAAAA,GAChB,CACA0/L,iBAAkB18I,CAAAA,SAAS,CAAE,CAC3B,OAAOA,SACT,CACAu0F,SAAShqL,KAAK,CAAE/rB,GAAG,CAAEu+C,KAAK,CAAEk3G,SAAS,CAAEp2B,KAAK,CAAE,CAC5C,IAAI,CAACL,KAAK,CAAC+2E,QAAQ,CAAChqL,KAAAA,CAAO/rB,IAAKu+C,KAAOk3G,CAAAA,SAAAA,CAAWp2B,KACpD,EAAA,CACA22E,UAAUz+J,SAAS,CAAE4sF,MAAM,CAAEsxB,UAAY,IAAI,CAAEp2B,MAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CAClF,IAAI,CAAC50E,KAAK,CAACg3E,SAAS,CAACz+J,UAAW4sF,MAAQsxB,CAAAA,SAAAA,CAAWp2B,KACrD,EAAA,CACA42E,eAAe1+J,SAAS,CAAE4sF,MAAM,CAAEsxB,SAAAA,CAAY,IAAI,CAAEp2B,KAAAA,CAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CACvF,IAAI,CAAC50E,KAAK,CAACi3E,cAAc,CAAC1+J,SAAW4sF,CAAAA,MAAAA,CAAQsxB,UAAWp2B,KAC1D,EAAA,CACAivE,eAAe7oL,MAAM,CAAE3P,MAAM,CAAEyoC,MAAQ5uC,KAAM2B,CAAAA,KAAK,CAAEumN,QAAW,CAAA,EAAE,CAAEpiE,SAAY,CAAA,IAAI,CAAEp2B,KAAAA,CAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CACxH,IAAI,CAAC50E,KAAK,CAACt6E,SAAS,CAAC4pJ,cAAc,CAAC7oL,MAAAA,CAAQ3P,OAAQyoC,KAAOs5K,CAAAA,QAAAA,CAAUpiE,SAAWp2B,CAAAA,KAAAA,EAClF,CACA+uE,kBAAmB+vD,CAAAA,QAAQ,CAAEC,QAAQ,CAAE7/M,MAAQ5uC,KAAM2B,CAAAA,KAAK,CAAEmkJ,SAAAA,CAAY,IAAI,CAAEp2B,KAAAA,CAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAEtoE,GAAG,CAAE,CACtH,IAAI,CAACtM,KAAK,CAACt6E,SAAS,CAAC0pJ,kBAAkB,CAAC+vD,QAAAA,CAAUC,SAAU7/M,KAAOk3G,CAAAA,SAAAA,CAAWp2B,KAAOiM,CAAAA,GAAAA,EACvF,CACA+yH,gBAAiBn/H,CAAAA,YAAY,CAAEG,KAAAA,CAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CAClE,IAAI,CAAC50E,KAAK,CAACt6E,SAAS,CAACspJ,QAAQ,CAAC,IAAM,CAAA,IAAA,CAAM,KAAM9uE,YAAcG,CAAAA,KAAAA,EAChE,CACA2uE,QAAAA,CAAShqE,IAAI,CAAE7G,QAAQ,CAAE1wG,MAAM,CAAE4yG,MAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CACpE,IAAI,CAAC50E,KAAK,CAACt6E,SAAS,CAACspJ,QAAQ,CAAC7wE,QAAU1wG,CAAAA,MAAAA,CAAQu3G,KAAM,IAAM3E,CAAAA,KAAAA,EAC9D,CACA09E,QAAStwL,CAAAA,MAAM,CAAE0wG,QAAQ,CAAEkC,KAAQ,CAAA,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CAC9D,IAAI,CAAC50E,KAAK,CAACt6E,SAAS,CAACspJ,QAAQ,CAAC7wE,SAAU1wG,MAAQ,CAAA,IAAI,CAACuyG,KAAK,CAACt6E,SAAS,CAACopJ,WAAW,EAAA,CAAI,KAAMzuE,KAC5F,EAAA,CACAi/H,WAAY3vP,CAAAA,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAEksB,OAAO,CAAE+wF,QAAQ,CAAEkC,MAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE12J,UAAa,CAAA,IAAI,CAAE,CAC1G,GAAIA,UAAe,GAAA,KAAA,EAAS,CAAC,IAAI,CAAChZ,cAAc,CAACgF,QAAQ,CAAE,CACzD,MACF,CACA,MAAMzc,MAAS,CAAA,IAAI5P,KACnB4P,MAAOxL,CAAAA,MAAM,CAAC,IAAI1K,KAAK5H,CAAG0H,CAAAA,CAAAA,CAAG,GAAM8L,IAAKjG,CAAAA,QAAQ,CAAE,IAAI3F,IAAAA,CAAK0J,KAAO,CAAA,CAACC,OAAQ,CAC3E,CAAA,CAAA,CAAA,GAAI,CAACi9G,QAAAA,CAAU,CACbA,QAAW,CAAA,IAAImpE,cACfnpE,CAAAA,SAAS0Q,IAAI,CAAG18G,cAChBgsG,QAASn5B,CAAAA,YAAY,CAAC,UAAY53D,CAAAA,OAAAA,CAClC+wF,CAAAA,QAAAA,CAASioE,UAAU,CAAGloJ,UAAAA,CAAa,IAAI,CAAC8hF,KAAK,CAACt6E,SAAS,CAACipJ,oBAAoB,CAACvhK,OAAQ7B,CAAAA,QAAQ,EAAI,IAAI,CAACy0F,KAAK,CAACt6E,SAAS,CAACkpJ,gCAAgC,GACtJzwE,QAASzvF,CAAAA,MAAM,GACjB,CACA,IAAI,CAACqvK,QAAQ,CAACtwL,MAAQ0wG,CAAAA,QAAAA,CAAUkC,OAClC,CACAk/H,gBAAAA,CAAiB5vP,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAEm/G,MAAQ,IAAI,CAACL,KAAK,CAAC40E,gBAAgB,CAAE,CACzE,MAAMz2E,QAAAA,CAAW,IAAImpE,cACrBnpE,CAAAA,SAAS0Q,IAAI,CAAG18G,aAChBgsG,CAAAA,QAAAA,CAASioE,UAAU,CAAG,IAAI,CAACpmE,KAAK,CAACt6E,SAAS,CAACmpJ,yBAAyB,EACpE1wE,CAAAA,QAAAA,CAASzvF,MAAM,EAAA,CACf,IAAI,CAAC4wN,WAAW,CAAC3vP,CAAG0H,CAAAA,CAAAA,CAAG4J,MAAOC,MAAQ,CAAA,IAAA,CAAMi9G,QAAUkC,CAAAA,KAAAA,EACxD,CACA57F,OAAU,EAAA,CACR,GAAI,IAAI,CAAC+6N,cAAc,CAAE,CACvB,IAAI,CAACC,iBAAiB,CAAG,KACzB,MACF,CACA,MAAMC,QAAW,CAAA,IAAI,CAACx6N,cAAc,CAACmU,MAAM,CAAC/T,EAAE,CAC9C,IAAI,CAAC9gC,IAAI,CAAC,SAAW,CAAA,IAAI,EACzB,IAAI,CAACjC,GAAG,CAAC,iBAAA,CAAA,CACT,GAAI,OAAO6D,QAAAA,GAAa,WAAa,CAAA,CACnCA,SAAS5I,mBAAmB,CAAC,kBAAoB,CAAA,IAAI,CAAC42G,wBAAwB,CAAE,KAChFhuG,CAAAA,CAAAA,QAAAA,CAAS5I,mBAAmB,CAAC,qBAAA,CAAuB,IAAI,CAAC42G,wBAAwB,CAAE,KACnFhuG,CAAAA,CAAAA,QAAAA,CAAS5I,mBAAmB,CAAC,qBAAsB,IAAI,CAAC42G,wBAAwB,CAAE,OAClFhuG,QAAS5I,CAAAA,mBAAmB,CAAC,wBAAA,CAA0B,IAAI,CAAC42G,wBAAwB,CAAE,KACxF,EAAA,CACA,IAAI,CAACA,wBAAwB,CAAG,IAAA,CAChC,IAAI,CAACwiC,IAAI,CAACnyG,OAAO,EACjB,CAAA,IAAI,CAACmyG,IAAI,CAAG,IACZ,CAAA,GAAI,IAAI,CAACjhC,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACpzG,GAAG,EAAA,CACd,IAAI,CAACozG,KAAK,CAAC3B,MAAM,EACjB,CAAA,IAAI,CAAC2B,KAAK,CAAG,KACf,CACA,GAAI,IAAI,CAACrC,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAAC/wG,GAAG,GACjB,IAAI,CAAC+wG,QAAQ,CAACU,MAAM,EACpB,CAAA,IAAI,CAACV,QAAQ,CAAG,KAClB,CACA,GAAI,IAAI,CAACn1G,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACoE,GAAG,EACd,CAAA,IAAI,CAACpE,KAAK,CAAC61G,MAAM,EACjB,CAAA,IAAI,CAAC71G,KAAK,CAAG,KACf,CACA,GAAI,IAAI,CAAC47P,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAC/lJ,MAAM,EACxB,CAAA,IAAI,CAAC+lJ,YAAY,CAAG,KACtB,CACA,GAAI,IAAI,CAAC17P,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAAComC,OAAO,EACrB,CAAA,IAAI,CAACpmC,QAAQ,CAAG,KAClB,CACA,GAAI,IAAI,CAAC47G,UAAU,CAAE,CACnB,IAAI,CAACA,UAAU,CAAG,KACpB,CACA,IAAI,CAACqiI,OAAO,CAAC73M,OAAO,GACpB,GAAI,IAAI,CAACu7F,KAAK,CAACC,MAAM,CAAE,CACrB,IAAI,CAACD,KAAK,CAACC,MAAM,CAACx7F,OAAO,GAC3B,CACA,MAAM4uM,MAAS,CAAA,IAAI,CAACA,MAAM,CAACxtO,IAAI,EAC/B,CAAA,IAAI,IAAIvK,CAAAA,CAAI,EAAGA,CAAI+3O,CAAAA,MAAAA,CAAO93O,MAAM,CAAED,IAAI,CACpC+3O,MAAM,CAAC/3O,CAAAA,CAAE,CAAC82O,MAAM,EAAA,CAChBiB,MAAM,CAAC/3O,CAAAA,CAAE,CAACiH,GAAG,GACf,CACA,IAAI,CAAC8wO,MAAM,CAAC9wO,GAAG,EACf,CAAA,IAAI,CAACouO,OAAO,CAAClsM,OAAO,EACpB,CAAA,IAAI,CAACksM,OAAO,CAAG,IAAA,CACf,IAAI,CAAC0sB,IAAI,CAAC54N,OAAO,EACjB,CAAA,IAAI,CAAC44N,IAAI,CAAG,IACZ,CAAA,MAAMsC,aAAgB,CAAA,IAAI,CAAChqB,MAAM,CAACrB,UAAU,CAAC,QAAA,CAAA,CAC7CqrB,eAAe5mC,UACf,EAAA,CAAA,IAAI,CAAC4c,MAAM,CAAClxM,OAAO,EACnB,CAAA,IAAI,CAACkxM,MAAM,CAAG,IAAA,CACd,IAAI,CAAC31G,KAAK,CAACv7F,OAAO,EAClB,CAAA,IAAI,CAACu7F,KAAK,CAAG,IACb,CAAA,IAAI,CAACs8G,OAAO,CAAG,IACf,CAAA,IAAI,CAAC/6J,OAAO,CAAG,KACf,IAAI,CAACy7J,OAAO,CAACv4M,OAAO,EACpB,CAAA,IAAI,CAACu4M,OAAO,CAAG,IACf,CAAA,IAAI,CAACkf,MAAM,CAACz3N,OAAO,EACnB,CAAA,IAAI,CAACy3N,MAAM,CAAG,IACd,CAAA,IAAI,CAACpa,WAAW,EAAEr9M,OAAAA,EAClB,CAAA,IAAI,CAACq9M,WAAW,CAAG,IACnB,CAAA,GAAI,IAAI,CAACE,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACv9M,OAAO,EACrB,CAAA,IAAI,CAACu9M,QAAQ,CAAG,KAClB,CACA,IAAI,CAACxD,YAAY,CAAG,EACpB,CAAA,IAAI,CAACic,iBAAiB,CAACzzJ,SAAS,CAAG,IACnC,CAAA,IAAI,CAACyzJ,iBAAiB,CAAC1zJ,QAAQ,CAAG,IAClC,CAAA,IAAI,CAAC0zJ,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACD,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAAC/1J,EAAE,EAAEzjG,GAAAA,EACT,CAAA,IAAI,CAACyjG,EAAE,EAAEhgE,OAAAA,EAAAA,CACT,IAAI,CAACu5G,QAAQ,CAACv5G,OAAO,EACrB,CAAA,IAAI,CAACu5G,QAAQ,CAAG,KAChB,IAAI,CAAC94G,cAAc,CAACT,OAAO,EAC3B,CAAA,IAAI,CAACS,cAAc,CAAG,IACtB,CAAA,IAAI,CAACw2N,IAAI,CAAG,KACZ,IAAI,CAACn5P,GAAG,EACR,CAAA,IAAI,CAAC+3P,aAAa,EAAE71N,OAAAA,EACpB,CAAA,IAAI,CAAC61N,aAAa,CAAG,IACrB9uB,CAAAA,MAAAA,CAAOF,GAAG,CAAG,IACbouB,CAAAA,OAAQkC,CAAAA,aAAa,CAAC8D,QAAS,CAAA,CAAG,IAClC,CAAA,GAAIt0B,mBAAqB,IAAI,CAAE,CAC7BC,cAAAA,CAAe,MACjB,CACAquB,OAAAA,CAAQkG,UAAU,CAAC,IAAI,EACzB,CACA,OAAOA,UAAWt0B,CAAAA,GAAG,CAAE,CACrB,GAAIA,GAAIu0B,CAAAA,cAAc,CAAE,CACtBviQ,MAAAA,CAAOwiQ,oBAAoB,CAACx0B,GAAAA,CAAIu0B,cAAc,CAC9Cv0B,CAAAA,GAAIu0B,CAAAA,cAAc,CAAGz8P,UACvB,CACF,CACA28P,kBAAmBvlQ,CAAAA,IAAI,CAAE,CACvB,OAAO,IAAI,CAACgkP,YAAY,CAAChkP,IAAAA,CAAK,CAEhC+/P,wBAAwBv6H,KAAK,CAAE,CAC7B,IAAI,CAACr9H,EAAE,CAAC,aAAcq9H,KAAMt6E,CAAAA,SAAS,CAACoqJ,YAAY,CAAE9vE,KAAMt6E,CAAAA,SAAS,EACrE,CA1tBAriD,WAAAA,CAAYg2C,MAAM,CAAC,CACjB,KAAK,EAAA,CAAI,IAAI,CAAC2oM,QAAQ,CAAG,IAAA,CAAM,IAAI,CAACyd,iBAAiB,CAAG,KAAO,CAAA,IAAI,CAACD,cAAc,CAAG,KAAO,CAAA,IAAI,CAAC5B,gBAAgB,CAAG,KAAO,CAAA,IAAI,CAAC9B,SAAS,CAAG9wB,oBAAsB,CAAA,IAAI,CAACgxB,eAAe,CAAG9wB,iBAAkB,IAAI,CAACszB,YAAY,CAAG,KAAM,IAAI,CAACM,YAAY,CAAG,IAAA,CAAM,IAAI,CAACtgB,YAAY,CAAG,GAAI,IAAI,CAACsf,QAAQ,CAAG,KAAA,CAAO,IAAI,CAAC7C,aAAa,CAAG,EAAA,CAAI,IAAI,CAACz+C,KAAK,CAAG,CAAA,CAAG,IAAI,CAACk0B,aAAa,CAAG,OAAOuH,cAAgB,WAAa,CAAA,IAAI,CAAC+nB,SAAS,CAAG,EAAG,IAAI,CAACC,YAAY,CAAG,GAAK,IAAI,CAAC7lD,KAAK,CAAG,CAAA,CAAG,IAAI,CAAC/gD,UAAU,CAAG,IAAIqyE,WAAc,IAAI,CAACuuB,YAAY,CAAG,EAAE,CAAE,IAAI,CAACiG,UAAU,CAAG,KAAM,IAAI,CAACC,eAAe,CAAG,MAAO,IAAI,CAACre,WAAW,CAAG,KAAM,IAAI,CAACnM,MAAM,CAAG,IAAIyD,eAAe,IAAI,CAAA,CAAG,IAAI,CAAC8iB,MAAM,CAAG,IAAIvb,cAAc,IAAI,CAAA,CAAG,IAAI,CAAC3D,OAAO,CAAG,IAAIlB,eAAe,IAAI,CAAA,CAAG,IAAI,CAACQ,OAAO,CAAG,IAAIlF,uBAAAA,CAA2B,IAAI,CAACimB,IAAI,CAAG,IAAI1iB,IAAK,CAAA,IAAI,EAAG,IAAI,CAACrnI,QAAQ,CAAG,KAAM,IAAI,CAACqC,KAAK,CAAG,IAAA,CAAM,IAAI,CAACx3G,KAAK,CAAG,IAAA,CAAM,IAAI,CAACE,QAAQ,CAAG,IAAA,CAAM,IAAI,CAAC07P,YAAY,CAAG,IAAA,CAAM,IAAI,CAACt1J,EAAE,CAAG,IACh5Bi1J,CAAAA,QAAQkC,aAAa,CAACviN,MAAO/T,CAAAA,EAAE,CAAC,CAAG,IAAI,CACvC+lM,cAAAA,CAAe,IAAI,CACnBC,CAAAA,KAAAA,CAAM,IACN,CAAA,IAAI,CAAC10F,IAAI,CAAG,IAAIinG,MAChB,CAAA,IAAI,CAACjnG,IAAI,CAAC0K,mBAAmB,CAAG,KAClC,CAotBF,CAhnBI,OAAKs6G,CAAAA,aAAa,CAAG,GAinBzB,MAAMD,QAAAA,CAAW,SAASlrB,IAAI,CAAA,CAC5B,MAAM2vB,WAAc3vB,CAAAA,IAAAA,CACpB,OAAO,SAASjuH,SAAS,CAAE69I,OAAO,CAChC,CAAA,GAAI,CAACD,WAAYl7N,CAAAA,cAAc,CAAE,CAC/B,MACF,CACA,GAAIk7N,YAAYP,cAAc,CAAE,CAC9BO,WAAY37J,CAAAA,EAAE,EAAE2gE,OAAAA,EAAS06F,qBAAqBM,WAAYP,CAAAA,cAAc,EACxEC,oBAAqBM,CAAAA,WAAAA,CAAYP,cAAc,CAC/CO,CAAAA,WAAYP,CAAAA,cAAc,CAAG,KAC/B,CACAO,YAAYZ,cAAc,CAAG,KAC7Bn0B,cAAe+0B,CAAAA,WAAAA,CAAAA,CACf90B,KAAM80B,CAAAA,WAAAA,CACN,MAAMt3I,WAAcs3I,CAAAA,WAAAA,CAAYlB,iBAAiB,CAAC18I,YAAc71G,GAChE,EAAA,CAAA,MAAM+uG,EAAKoN,CAAAA,WAAAA,EAAes3I,WAAY5jD,CAAAA,KAAK,EAAI1zF,WAAU,CAAA,CACzD,IAAI3P,EAAKuC,CAAAA,EAAAA,CAAK,GACdvC,CAAAA,EAAAA,CAAKxqG,KAAKI,KAAK,CAACoqG,GAAI,CAAGinJ,CAAAA,WAAAA,CAAYH,YAAY,CAC/C9mJ,CAAAA,EAAAA,EAAMinJ,WAAYJ,CAAAA,SAAS,CAC3BI,WAAAA,CAAY5jD,KAAK,CAAG1zF,WAAAA,CACpB,GAAIs3I,WAAY37J,CAAAA,EAAE,EAAE2gE,OAAAA,CAAS,CAC3Bg7F,WAAYP,CAAAA,cAAc,CAAGO,WAAAA,CAAY37J,EAAE,CAAC2gE,OAAO,CAACk7F,qBAAqB,CAACF,WAAY1E,CAAAA,IAAI,EAC5F,CAAO,KAAA,CACL0E,YAAYP,cAAc,CAAGlhQ,QAASI,CAAAA,OAAO,EAAIJ,QAASK,CAAAA,MAAM,CAAGshQ,qBAAAA,CAAsBF,YAAY1E,IAAI,CAAA,CAAI,KAC/G,CACA,GAAI0E,WAAYl7N,CAAAA,cAAc,CAACoU,WAAW,CAAE,CAC1C,MACF,CACA8mN,WAAYnC,CAAAA,oBAAoB,CAACn1I,WAAa3P,CAAAA,EAAAA,CAAIuC,EAClD0kJ,CAAAA,CAAAA,WAAAA,CAAY57P,IAAI,CAAC,aAAA,CAAek3G,EAChC,CAAA,CAAA,IAAI6kJ,WAAa,KACjB,CAAA,GAAIF,QAAS,CACXE,UAAAA,CAAa,CAACH,WAAY37J,CAAAA,EAAE,EAAE/1D,MAAAA,CAAO2xN,QACrCD,CAAAA,WAAAA,CAAYl7N,cAAc,CAACoxD,kBAAkB,CAAG+pK,OAAQj7F,CAAAA,OAAO,CAACo7F,WAAW,CAACC,SAAS,CAAC12K,YAAW,CACnG,KAAO,CACLq2K,WAAYl7N,CAAAA,cAAc,CAACoxD,kBAAkB,CAAG,KAClD,CACA,GAAI,CAACiqK,WAAY,CACfH,WAAAA,CAAY1xN,MAAM,CAACyqE,IACnBinJ,WAAY57P,CAAAA,IAAI,CAAC,aACjB,CAAA,CAAA,GAAI47P,YAAYF,UAAU,EAAIE,WAAYD,CAAAA,eAAe,CAAE,CACzDC,WAAAA,CAAY94J,MAAM,EAClB84J,CAAAA,YAAYD,eAAe,CAAG,MAChC,CACAC,YAAY57P,IAAI,CAAC,YACnB,CACA47P,WAAAA,CAAYZ,cAAc,CAAG,KAAA,CAC7B,GAAIY,WAAAA,CAAYX,iBAAiB,CAAE,CACjCW,WAAY37N,CAAAA,OAAO,GACrB,CACF,CACF,CAEA,CAAA,MAAMi8N,WACJr9P,WAAa,EAAA,CACX,IAAI,CAACy2P,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACE,gBAAgB,CAAG,GAAE,CAE9B,CAEA,MAAM2G,UAAAA,CAAa,IAAIl0O,cACvB,OAAMm0O,SAiBJ9xM,CAAAA,KAAAA,EAAQ,CACN,IAAI,CAAC5f,IAAI,CAAG,IAAI,CAACo3G,KAAK,CAACp3G,IACvB,CAAA,IAAI,CAACmwH,gBAAgB,CAAG,IAAI,CAAC/Y,KAAK,CAAC+Y,gBAAgB,CACnD,IAAI,CAAClxJ,OAAO,CAAG,IAAI,CAACm4I,KAAK,CAACn4I,OAAO,CACjC,IAAI,CAAC6uG,SAAS,CAAG,IAAI,CAACspC,KAAK,CAACtpC,SAAS,CACrC,IAAI,CAACilC,QAAQ,CAAG,IAAI,CAACqE,KAAK,CAAC7J,KAAK,CAAC0G,gBAAgB,EAAGvyI,CAAAA,KAAK,EACzD,CAAA,IAAI,CAAC2pJ,WAAW,CAAG,IAAI,CAACjU,KAAK,CAACiU,WAAW,CACzC,IAAI,CAAC9Q,WAAW,CAAG,IAAI,CAACnD,KAAK,CAAC46B,aAAY,CAE5C2/E,SAAU,CACR,MAAMv6G,MAAQ,IAAI,CAACA,KAAK,CACxBA,KAAMp3G,CAAAA,IAAI,CAAG,IAAI,CAACA,IAClBo3G,CAAAA,KAAM+Y,CAAAA,gBAAgB,CAAG,IAAI,CAACA,gBAC9B/Y,CAAAA,KAAMn4I,CAAAA,OAAO,CAAG,IAAI,CAACA,OACrBm4I,CAAAA,KAAMtpC,CAAAA,SAAS,CAAG,IAAI,CAACA,SAAS,CAChCspC,KAAAA,CAAM7J,KAAK,CAACyH,gBAAgB,CAAC,IAAI,CAACjC,QAAQ,CAC1CqE,CAAAA,KAAMiU,CAAAA,WAAW,CAAG,IAAI,CAACA,WACzBjU,CAAAA,KAAAA,CAAM46B,YAAY,CAAG,IAAI,CAACz3B,YAAW,CAEvCq3G,SAAAA,EAAY,CACV,IAAI,CAACx6G,KAAK,CAACn4I,OAAO,CAAG,IAAA,CACrB,IAAI,CAACm4I,KAAK,CAAC45B,iBAAiB,EAAA,CAC5B,IAAI,CAAC55B,KAAK,CAACulB,UAAU,GACvB,CACAk1F,OAAAA,CAAQtgG,cAAc,CAAE,CACtB,MAAMna,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxBA,KAAAA,CAAMn4I,OAAO,CAAG,MAChB,GAAIm4I,KAAAA,CAAMoK,SAAS,CAAE,CACnB,GAAIpK,KAAAA,CAAMoK,SAAS,CAACW,MAAM,CAAE,CAC1BoP,cAAAA,CAAe70J,GAAG,CAAC06I,MAAOA,KAAMoK,CAAAA,SAAS,EAC3C,CACApK,MAAMoK,SAAS,CAAG,KACpB,CACF,CAjDArtJ,WAAY28H,CAAAA,KAAK,CAAEsmB,KAAK,CAAE6G,cAAc,CAAC,CACvC,IAAI,CAACntB,KAAK,CAAGA,KACb,CAAA,IAAI,CAACsmB,KAAK,CAAGA,KACb,CAAA,IAAI,CAACx3F,KAAK,EACVw3F,CAAAA,KAAMiU,CAAAA,WAAW,CAAG,CACpB,CAAA,GAAI,IAAI,CAACv6B,KAAK,CAACq4B,wBAAwB,EAAI,CAAClL,cAAAA,CAAezD,cAAc,CAAE,CACzEpD,KAAMmD,CAAAA,WAAW,CAAG,MACtB,CACA,GAAInD,KAAMvzI,CAAAA,IAAI,GAAK+9G,qBAAuB,CAAA,CACxCw1B,KAAM7J,CAAAA,KAAK,CAACxZ,iBAAiB,EAAA,CAC7BqjB,KAAMgkB,CAAAA,iBAAiB,CAACq2F,UACxB,CAAA,CAAA,IAAI,CAACK,WAAW,CAAG,IAAIz6O,YACvB,IAAI,CAACy6O,WAAW,CAACv6O,MAAM,CAACpsB,IAAI,CAACsmQ,UAAWl6O,CAAAA,MAAM,EAC9C,IAAI,CAACu6O,WAAW,CAACl6O,WAAW,CAACjjB,GAAG,CAAC88P,UAAW7pP,CAAAA,MAAM,CAAE6pP,UAAW7pP,CAAAA,MAAM,CAAE6pP,UAAW7pP,CAAAA,MAAM,EAC1F,CACF,CAmCF,CAEA,MAAMmqP,YAAe,CAAA,IAAI9jP,IACzB,CAAM+jP,MAAAA,eAAAA,SAAwBN,SAI5B,CAAA,IAAIO,kBAAmB,CACrB,GAAI,IAAI,CAAC76G,KAAK,CAACvzI,IAAI,GAAK+9G,qBAAuB,CAAA,CAC7C,OAAO,IAAI,CAACw1B,KAAK,CAACu+B,cAAc,CAElC,OAAO,CACT,CACAu8E,oBAAoBjgQ,KAAK,CAAEggQ,gBAAgB,CAAE,CAC3C,MAAM76G,KAAQ,CAAA,IAAI,CAACA,KAAK,CACxBA,KAAM7J,CAAAA,KAAK,CAACyH,gBAAgB,CAAC,IAAI,CAACjC,QAAQ,CAAA,CAC1C,GAAI9gJ,KAAQ,CAAA,CAAA,CAAG,CACb,MAAMkgQ,sBAAAA,CAAyB/6G,MAAMw+B,QAAQ,CAC7ChqL,MAAOu1M,CAAAA,wBAAwB,CAAC4wD,YAAc9/P,CAAAA,KAAAA,CAAOggQ,gBACrDF,CAAAA,CAAAA,YAAAA,CAAa7vP,SAAS,CAACiwP,sBAAAA,CAAyB,EAChD/6G,CAAAA,CAAAA,KAAAA,CAAM7J,KAAK,CAACsJ,WAAW,CAACk7G,YAAatxP,CAAAA,CAAC,CAAE,CAAGsxP,CAAAA,YAAAA,CAAa5pP,CAAC,EAC3D,CACAivI,KAAM7J,CAAAA,KAAK,CAACxZ,iBAAiB,GAC7B,MAAM9xH,KAAAA,CAAQ,GACd,CAAA,MAAMmwP,gBAAkBzmQ,IAAKkV,CAAAA,GAAG,CAAC,IAAI,CAACitG,SAAS,CAAE7rG,KAAAA,CACjDm1I,CAAAA,KAAAA,CAAMtpC,SAAS,CAAGniH,IAAAA,CAAKkV,GAAG,CAACuxP,eAAAA,CAAkBH,iBAAkB,CAAIhwP,CAAAA,KAAAA,EACrE,CAtBA9N,WAAAA,CAAYy+O,WAAW,CAAEx7F,KAAK,CAAC,CAC7B,KAAK,CAACw7F,WAAY9hH,CAAAA,KAAK,CAAEsmB,KAAAA,CAAOw7F,YAAY30F,cAAc,EAC5D,CAqBF,CAEA,MAAMo0G,UAAa,CAAA,IAAIhqP,IACvB,CAAA,MAAMiqP,yBAAyBZ,SAsB7B,CAAA,IAAIO,kBAAmB,CACrB,OAAO,IAAI,CAAC76G,KAAK,CAACu+B,cAAc,CAElCu8E,mBAAAA,CAAoBjgQ,KAAK,CAAEggQ,gBAAgB,CAAE,CAC3CrmQ,MAAAA,CAAOw1M,wBAAwB,CAACixD,WAAYpgQ,KAAOggQ,CAAAA,gBAAAA,CAAkB,EAAG,IAAI,CAACnhI,KAAK,CAAC+0E,qBAAqB,CACxG,CAAA,IAAI,CAACzuD,KAAK,CAAC7J,KAAK,CAAC+I,MAAM,CAAC+7G,UAAAA,CAAWnwP,SAAS,CAAC,CAAC,CAC9C,CAAA,CAAA,CAAA,IAAI,CAACk1I,KAAK,CAAC7J,KAAK,CAACsJ,WAAW,CAAC,EAAA,CAAI,EAAG,CACpC,CAAA,CAAA,MAAM50I,MAAQ,GACd,CAAA,MAAMswP,cAAgB,CAAI5mQ,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,IAAI,CAACmxH,KAAK,CAAC+0E,qBAAqB,CACpE,MAAMusD,eAAkBzmQ,CAAAA,IAAAA,CAAKkV,GAAG,CAAC0xP,cAAetwP,KAChD,CAAA,CAAA,IAAI,CAACm1I,KAAK,CAACtpC,SAAS,CAAGniH,IAAAA,CAAKkV,GAAG,CAACuxP,eAAAA,CAAkBH,iBAAkB,CAAIhwP,CAAAA,KAAAA,EAC1E,CAhCA9N,WAAYy+O,CAAAA,WAAW,CAAC,CACtB,MAAM9hH,KAAQ8hH,CAAAA,WAAAA,CAAY9hH,KAAK,CAC/B,MAAM0hI,YAAc,IAAI7jB,MAAAA,CAAO,cAC/B6jB,CAAAA,CAAAA,WAAAA,CAAY5jB,YAAY,CAAC,OAAA,CAAS,CAChC/qO,IAAM,CAAA,aAAA,CACN4uP,cAAe,IACfC,CAAAA,iBAAAA,CAAmB,KACnB3C,CAAAA,IAAAA,CAAM,KACNp6E,cAAgB7kD,CAAAA,KAAAA,CAAM60E,qBAAqB,CAC3CprD,YAAa,IACb83B,CAAAA,gBAAAA,CAAkB,GAClBhB,CAAAA,UAAAA,CAAY,GACZlmB,cAAgB,CAAA,CAAA,CAChBgnB,iBAAkB,IAClBpwB,CAAAA,UAAAA,CAAYp/B,gBACZtyE,KAAO5uC,CAAAA,KAAAA,CAAM2B,KAAK,CAClB0qG,UAAW,CACX4nE,CAAAA,OAAAA,CAAS,KACX,CACA,CAAA,CAAA,KAAK,CAAC5kD,KAAO0hI,CAAAA,WAAAA,CAAYp7G,KAAK,CAACA,KAAK,CAAEw7F,WAAAA,CAAY30F,cAAc,EAClE,CAaF,CAEA,MAAM00G,YAAAA,CAUJ/yM,KAAQ,EAAA,CACN,IAAI,CAAC26F,WAAW,CAAG,IAAI,CAACizF,SAAS,CAACjzF,YACpC,CACAo3G,OAAU,EAAA,CACR,IAAI,CAACnkB,SAAS,CAACjzF,WAAW,CAAG,IAAI,CAACA,YAAW,CAb/CpmJ,YAAYqoI,IAAI,CAAE7K,cAAgB,IAAI,CAAC,CACrC,IAAI,CAAC6K,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACgxG,SAAS,CAAGhxG,IAAKpkC,CAAAA,MAAM,EAAIokC,IAAK9K,CAAAA,KAAK,CAC1CC,aAAAA,CAAgBA,eAAiB,IAAI,CAAC67G,SAAS,CAAC77G,aAAa,CAC7D,IAAI,CAAC/xE,KAAK,EACV,CAAA,IAAI,CAAC+xE,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACihI,MAAM,CAAG,IACd,CAAA,IAAI,CAACrxG,aAAa,CAAG,GACvB,CAOF,CAEA,IAAIsxG,uBAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0E9B,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBpB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8E9B,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2BpB,CAAC,CAED,MAAMC,mBAAsB,CAAA,EAAA,CAC5B,MAAMC,yBAA4B,CAAA,CAChCL,sBACAC,CAAAA,YACF,CACA,CAAA,MAAMK,yBAA4B,CAAA,CAChCJ,uBACAC,YACF,CACA,CAAMI,MAAAA,eAAAA,CAcJC,gBAAiBn1N,CAAAA,OAAO,CAAE,CACxB,IAAI,CAACy2D,iBAAiB,CAAC5wD,QAAQ,CAAC7F,OAClC,EAAA,CACAymG,OAAQ2uH,CAAAA,YAAY,CAAEC,aAAa,CAAE,CACnC,IAAI,CAACvmG,WAAW,CAAC,CAAA,CAAE,CAAG,CAAIsmG,CAAAA,YAC1B,CAAA,IAAI,CAACtmG,WAAW,CAAC,CAAE,CAAA,CAAG,EAAIumG,aAC1B,CAAA,IAAI,CAACC,mBAAmB,CAACzvN,QAAQ,CAAC,IAAI,CAACipH,WAAW,EACpD,CACAymG,cAAAA,CAAeC,WAAW,CAAEC,gBAAgB,CAAEC,OAAO,CAAE,CACrD,MAAM3hQ,KAAQ2hQ,CAAAA,OAAAA,CAAU,CAAI,CAAA,CAAA,CAC5B,GAAI,CAAC,IAAI,CAACC,aAAa,CAAC5hQ,KAAAA,CAAM,CAAE,CAC9B,MAAMkhE,OAAAA,CAAU,IAAI3+D,GACpB2+D,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,SAAW,CAAA,EAAA,CAAA,CACvB,GAAIi/P,OAAAA,CAASzgM,QAAQx+D,GAAG,CAAC,KAAO,CAAA,EAAA,CAChC,CAAA,IAAI,CAACk/P,aAAa,CAAC5hQ,MAAM,CAAGm8H,WAAAA,CAAY1+C,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CAChEk4F,UAAY,CAAA,CAAC,mBAAmB,EAAEqlI,QAAU,KAAQ,CAAA,MAAA,CAAO,CAAC,CAC5Dl8M,WAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACA2kG,UAAYjB,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,mBAAAA,CAAAA,CAAqBlgC,GAAG,CAAC,kBAAA,CAAA,CACnEqgI,UAAYZ,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,mBAAAA,CAAAA,CAAqBngC,GAAG,CAAC,oBACnE2gI,YAAclB,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,qBAAqBlgC,GAAG,CAAC,wBACrEugI,CAAAA,CAAAA,YAAAA,CAAcd,YAAaz/H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,mBAAqBngC,CAAAA,CAAAA,GAAG,CAAC,wBACrEyrE,CAAAA,CAAAA,eAAAA,CAAiBzG,OACnB,CAAA,CACA,CAAA,IAAI,CAAC2gM,MAAM,CAAG,IAAI7tP,YAAAA,CAAa,CAC/B,CAAA,CAAA,IAAI,CAAC8tP,cAAc,CAAG,IAAI,CAAC19N,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,QAAA,CAChD,CAAA,IAAI,CAACu9N,cAAc,CAAG,IAAI,CAAC39N,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,WAAA,CAChD,CAAA,IAAI,CAACw9N,MAAM,CAAG,IAAI,CAAC59N,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,QAAA,EAC1C,CACA,IAAI,CAACq9N,MAAM,CAAC,CAAE,CAAA,CAAGJ,WACjB,CAAA,IAAI,CAACI,MAAM,CAAC,CAAA,CAAE,CAAGH,gBAAAA,CACjB,IAAI,CAACI,cAAc,CAAChwN,QAAQ,CAAC,IAAI,CAAC+vN,MAAM,CAAA,CACxC,IAAI,CAACI,uBAAuB,CAACR,WAAAA,CAAaC,gBAC5C,EAAA,CACAQ,UAAWP,CAAAA,OAAO,CAAE,CAClB,MAAM3hQ,KAAQ2hQ,CAAAA,OAAAA,CAAU,EAAI,CAC5B,CAAA,OAAO,IAAI,CAACC,aAAa,CAAC5hQ,KAAAA,CAAM,CAElCmiQ,SAAU/9N,CAAAA,MAAM,CAAEu9N,OAAO,CAAE,CACzB,MAAM3hQ,KAAQ2hQ,CAAAA,OAAAA,CAAU,EAAI,CAC5B,CAAA,GAAI,CAAC,IAAI,CAACS,YAAY,CAACpiQ,KAAM,CAAA,CAAE,CAC7B,MAAMmiE,MAASw/L,CAAAA,OAAAA,CAAU,gBAAkB,EAC3C,CAAA,IAAI,CAACS,YAAY,CAACpiQ,KAAM,CAAA,CAAGm8H,YAAY1+C,YAAY,CAACr5C,MAAQ,CAAA,CAC1Dk4F,UAAY,CAAA,CAAC,SAAS,EAAEqlI,QAAU,KAAQ,CAAA,MAAA,CAAO,CAAC,CAClDl8M,WAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACA2kG,WAAYjB,YAAaz/H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,mBAAAA,CAAAA,CAAqBlgC,GAAG,CAAC,kBAAA,CAAA,CACnEqgI,UAAYZ,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,mBAAqBngC,CAAAA,CAAAA,GAAG,CAAC,kBAAA,CAAA,CACnE2gI,YAAc16D,CAAAA,MAAAA,CAASw5D,YAAaz/H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,qBAAqBlgC,GAAG,CAAC,cAC9EugI,CAAAA,CAAAA,YAAAA,CAAct6D,OAASw5D,YAAaz/H,CAAAA,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,mBAAAA,CAAAA,CAAqBngC,GAAG,CAAC,cAAA,CAChF,CACF,EAAA,CACA,OAAO,IAAI,CAACkmQ,YAAY,CAACpiQ,MAAM,CAEjCiiQ,uBAAwBR,CAAAA,WAAW,CAAEC,gBAAgB,CAAE,CACrD,SAASW,OAAQ7zP,CAAAA,CAAC,CAAE2sJ,KAAK,EACvB,OAAO,MAAA,CAAUzhK,IAAK0hK,CAAAA,GAAG,CAAC,CAAC,EAAA,CAAM5sJ,CAAIA,CAAAA,CAAAA,EAAK2sJ,KAAAA,CAAQA,KAAI,CAAA,CAAA,CAAMA,KAC9D,CACA,IAAI,CAAC3lJ,MAAM,CAAG,IAAI,CAACA,MAAM,EAAI,IAAIxB,YAAagtP,CAAAA,mBAAAA,CAAAA,CAC9C,MAAMxrP,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAM8sP,KAAQ5oQ,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC,CAACm3P,mBAAAA,CAAsB,CAAA,EAAK,GACrD,IAAI,IAAItgL,CAAI,CAAA,CAAA,CAAGA,CAAK4hL,EAAAA,KAAAA,CAAO,EAAE5hL,CAAAA,CAAE,CAC7B,MAAM5+E,KAAAA,CAAQugQ,OAAQ3hL,CAAAA,CAAAA,CAAG+gL,WACzBjsP,CAAAA,CAAAA,MAAM,CAAC8sP,MAAQ5hL,CAAE,CAAA,CAAG5+E,KACpB0T,CAAAA,MAAM,CAAC8sP,KAAQ5hL,CAAAA,CAAAA,CAAE,CAAG5+E,MACtB,CACA,IAAI,CAACigQ,cAAc,CAACjwN,QAAQ,CAAC,IAAI,CAACt8B,MAAM,CAAA,CACxC,MAAMwsP,MAAAA,CAAS,CAAIK,CAAAA,OAAAA,CAAQ,CAAKX,CAAAA,gBAAAA,CAAAA,CAChC,IAAI,CAACM,MAAM,CAAClwN,QAAQ,CAACkwN,MACvB,EAAA,CApFA9/P,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACg+N,YAAY,CAAG,EAAE,CACtB,IAAI,CAACR,aAAa,CAAG,EAAE,CACvB,IAAI,CAACx9N,MAAM,CAAGA,MACdu3F,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAEhI,qBAAqB3xB,GAAG,CAACw2P,yBACvDtlI,CAAAA,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE/H,mBAAqB5xB,CAAAA,CAAAA,GAAG,CAACy2P,yBAAAA,CACvD,CAAA,IAAI,CAACx+J,iBAAiB,CAAGt+D,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,QAC9C,CAAA,CAAA,IAAI,CAAC+8N,mBAAmB,CAAGn9N,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,aAChD,CAAA,CAAA,IAAI,CAACu2H,WAAW,CAAG,IAAI/mJ,aAAa,CACpC,CAAA,CAAA,IAAI,CAAC6tP,MAAM,CAAG,IACd,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACtsP,MAAM,CAAG,KAChB,CAyEF,CAEA,MAAM+sP,qBAAAA,SAA8Bx9J,WASlCzhE,OAAU,EAAA,CACR,IAAI,CAACm7H,cAAc,CAAC33J,OAAO,CAAC,EAC1BohK,EAAAA,CAAAA,EAAAA,CAAGx7H,oBAAoB,CAACpJ,OAAO,EAAA,CAC/B4kI,EAAG5kI,CAAAA,OAAO,GACZ,CACA,CAAA,CAAA,IAAI,CAACm7H,cAAc,CAACrkK,MAAM,CAAG,EAC/B,CACAsrG,OAAAA,EAAU,CACR,IAAI,CAACthE,MAAM,CACX,KAAM,CAAEy4G,QAAQ,CAAEzP,MAAM,CAAEo1H,SAAS,CAAE5pN,YAAY,CAAE6pN,aAAa,CAAEC,UAAU,CAAE,CAAG,IAAI,CACrF7lH,QAASixB,CAAAA,kBAAkB,CAAC1gC,MAAAA,CAAQx0F,aAAc,IAAM32C,CAAAA,SAAAA,CAAW00H,cAAgB,CAAA,IAAI,CAAC8nC,cAAc,CAAE,CACtG/+B,cAAe8iI,SACf34F,CAAAA,WAAAA,CAAa64F,UACbniG,CAAAA,aAAAA,CAAekiG,aACjB,CACF,EAAA,CAvBAvgQ,WAAYkiC,CAAAA,MAAM,CAAEy4G,QAAQ,CAAEzP,MAAM,CAAEq1H,aAAa,CAAED,SAAS,CAAEE,UAAU,CAAC,CACzE,KAAK,CAACt+N,MAAS,CAAA,CAAA,IAAI,CAACq6H,cAAc,CAAG,EACrC,CAAA,IAAI,CAAC5hB,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACzP,MAAM,CAAGA,MACd,CAAA,IAAI,CAACq1H,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACD,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACE,UAAU,CAAGA,WACpB,CAiBF,CAEA,MAAMC,iBAAoB,CAAA,IAAA,CAC1B,MAAMC,UAAa,CAAA,CAAA,CACnB,MAAMC,QAAAA,CAAW,CACjB,CAAA,MAAMC,SAAY,CAAA,IAAI1sP,IACtB,CAAM2sP,MAAAA,WAAAA,CA0BJz/N,OAAU,EAAA,CACRwlG,cAAcD,MAAM,CAAC,IAAI,CAACm6H,QAAQ,CAClC,CAAA,IAAI,CAACA,QAAQ,CAAG,IAChBl6H,CAAAA,aAAAA,CAAcxlG,OAAO,EACrB,CAAA,IAAI,CAACc,MAAM,CAAG,IACd,CAAA,IAAI,CAACqxG,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC5W,KAAK,CAAG,IACb,CAAA,IAAI,CAACge,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACq1F,MAAM,CAAG,IACd,CAAA,IAAI,CAAC9kG,MAAM,EAAE9pG,SACb,CAAA,IAAI,CAAC8pG,MAAM,CAAG,KAChB,CACA61H,QAAS7+N,CAAAA,MAAM,CAAE,CACf,IAAI,CAACu9N,OAAO,CAAG,IAAI,CAAC9iI,KAAK,CAACi4E,mBAAmB,GAAKjkL,iBAClD,CAAA,GAAI,CAAC,IAAI,CAACqwO,WAAW,CAAE,CACrB,IAAI,CAACA,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,eAAe,CAAG,IAAIhC,eAAgB/8N,CAAAA,MAAAA,CAC3C,CAAA,IAAI,CAACg/N,eAAe,CAAGh/N,OAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,SAC5C,CAAA,CAAA,IAAI,CAACwjJ,SAAS,CAAG,EAAE,CACnB,IAAI,CAACg7E,QAAQ,CAAG,IAAIl9N,QAAQ,IAAI,CAAC1B,MAAM,CAAE,CACvCtkB,KAAAA,CAAO,CACPC,CAAAA,MAAAA,CAAQ,EACR9f,MAAQ4yB,CAAAA,iBAAAA,CACRjhB,IAAMipB,CAAAA,gBAAAA,CACNp9B,KAAM,eACR,CAAA,CAAA,CACAqrI,aAAcF,CAAAA,MAAM,CAAC,IAAI,CAACo6H,QAAQ,CAAA,CAClC,MAAM51H,MAAAA,CAAS,IAAI8K,MAAAA,CACnB9K,OAAO/5C,UAAU,CAAC3wF,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,CAC/B0qI,CAAAA,CAAAA,OAAO0M,gBAAgB,CAAG,IAC1B1M,CAAAA,MAAO6M,CAAAA,gBAAgB,CAAG,KAC1B7M,CAAAA,MAAOgN,CAAAA,kBAAkB,CAAG,KAC5BhN,CAAAA,MAAAA,CAAOyN,cAAc,CAAG,KACxBzN,CAAAA,MAAAA,CAAO1hG,UAAU,CAAGsnF,uBACpBoa,CAAAA,MAAO6L,CAAAA,WAAW,CAAG,CACrB7L,CAAAA,MAAO7C,CAAAA,IAAI,CAAG,IAAImV,SAClB,CAAA,IAAI,CAACtS,MAAM,CAAGA,MACd,CAAA,IAAI,CAACA,MAAM,CAACoR,YAAY,CAAC1H,eAAe,CAAGjjB,UAC3C,CAAA,IAAI,CAACuZ,MAAM,CAACoR,YAAY,CAAC5oE,WAAW,CAAGo+C,eACzC,CACA,GAAI,IAAI,CAAC6K,KAAK,CAACq4B,wBAAwB,CAAE,CACvC,MAAMlL,cAAiB,CAAA,IAAI43B,cAAex/I,CAAAA,MAAAA,CAAOouC,kBAAkB,CAAEpuC,MAAAA,CAAO4tC,cAAc,CAAE,IAAK,EAAA,CACjG,CAAA,IAAI,CAACg6E,cAAc,CAAGA,cACtB,CAAA,MAAMq3G,UAAY,IAAI,CAACxkI,KAAK,CAAC8hC,QAAQ,CACrC3U,cAAezD,CAAAA,cAAc,CAAG86G,SAAAA,CAAU96G,cAC1CyD,CAAAA,cAAemF,CAAAA,qBAAqB,CAAGkyG,SAAAA,CAAUlyG,qBAAqB,CACtEnF,cAAe/D,CAAAA,cAAc,CAAGo7G,SAAUp7G,CAAAA,cAAc,CACxD+D,cAAeiH,CAAAA,qBAAqB,CAAGowG,SAAAA,CAAUpwG,qBAAqB,CACtEjH,cAAe5D,CAAAA,iBAAiB,CAAGi7G,SAAUj7G,CAAAA,iBAAiB,CAC9D4D,eAAevB,KAAK,CAAG,IAAIr0I,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,CACtC41I,CAAAA,CAAAA,eAAeC,gBAAgB,CAAG,CAClC,CAAA,IAAI,CAACw2G,aAAa,CAAG,IAAIp4G,cAAcjmH,MACvC,CAAA,CAAA,IAAI,CAACq+N,aAAa,CAAChlQ,IAAI,CAAG,qBAC5B,CACF,CACA6lQ,UAAWC,CAAAA,SAAS,CAAE,CACpB,IAAI,CAACv7E,SAAS,CAAG,EAAE,CACnB,SAASw7E,SAAUp4M,CAAAA,EAAE,CACnB09E,CAAAA,aAAAA,CAAcD,MAAM,CAACz9E,EAAAA,CAAGpL,WAAW,CAAA,CACnCoL,GAAG9nB,OAAO,GACZ,CACA,IAAI,CAACgsH,aAAa,CAACxoJ,OAAO,CAAC,EAACskD,EAAAA,CAC1Bo4M,SAAUp4M,CAAAA,EAAAA,EACZ,GACA,IAAI,CAACkkG,aAAa,CAACvsJ,KAAK,EACxBwgQ,CAAAA,SAAAA,CAAUz8P,OAAO,CAAC,IAChByjI,EAAAA,CAAAA,IAAAA,CAAK+kB,aAAa,CAACxoJ,OAAO,CAAC,EAACskD,EAAAA,CAC1Bo4M,UAAUp4M,EACZ,EAAA,CAAA,CACAm/E,CAAAA,IAAAA,CAAK+kB,aAAa,CAACl1J,MAAM,CAAG,EAC9B,EACA,CAAA,IAAI,CAACqpQ,iBAAiB,CAAG,IAAA,CACzB,GAAI,IAAI,CAAChB,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACn/N,OAAO,EAC1B,CAAA,IAAI,CAACm/N,aAAa,CAAG,KACvB,CACF,CACAiB,qBAAAA,CAAsB7kI,KAAK,CAAE1B,IAAI,CAAEgnF,UAAU,CAAE,CAC7C,MAAMnnF,QAAW,CAAA,IAAI+1F,gBACrB/1F,CAAAA,QAAAA,CAASv/H,IAAI,CAAG,CAAC,gBAAgB,EAAE0/H,IAAAA,CAAK,SAAS,EAAEgnF,UAAAA,CAAW,CAAC,CAC/DnnF,SAAS44B,SAAS,CAAC,WAAa,CAAA,EAAA,CAAA,CAChC54B,SAAS44B,SAAS,CAAC,qBAAuB,CAAA,EAAA,CAAA,CAC1C,GAAIz4B,IAAAA,GAASylI,UAAY,CAAA,CACvB5lI,SAAS44B,SAAS,CAAC,2BAA6B,CAAA,EAAA,CAAA,CAChD,GAAIuuD,UAAY,CAAA,CACdnnF,QAAS44B,CAAAA,SAAS,CAAC,iCAAmC,CAAA,EAAA,EACxD,CAAO,KAAA,CACL54B,QAAS4yF,CAAAA,OAAO,CAAG,IAAIpgN,MAAM,CAAG,CAAA,CAAA,CAAG,CACrC,EAAA,CACA,GAAI,CAAC,IAAI,CAACmyP,OAAO,CAAE3kI,QAAAA,CAAS44B,SAAS,CAAC,eAAiB,CAAA,EAAA,CACvD54B,CAAAA,QAAAA,CAAS+sF,QAAQ,CAAG,IAAI,CAACi5C,SAAQ,CAC5B,KAAA,CACLhmI,QAAS44B,CAAAA,SAAS,CAAC,yBAA2B,CAAA,EAAA,CAAA,CAC9C54B,QAAS44B,CAAAA,SAAS,CAAC,kBAAA,CAAoB,EACzC,EAAA,CACA54B,SAAS0Q,IAAI,CAAG18G,aAChBgsG,CAAAA,SAASqpF,QAAQ,CAAG,IACpBrpF,CAAAA,QAAAA,CAASzvF,MAAM,EACf,CAAA,OAAOyvF,QACT,CACA2mI,eAAgBv/N,CAAAA,MAAM,CAAEy6F,KAAK,CAAEuhC,SAAS,CAAE,CACxC,IAAI,IAAIjjC,IAAO,CAAA,CAAA,CAAGA,IAAOijC,CAAAA,SAAAA,CAAWjjC,OAAO,CACzC,GAAI,CAAC,IAAI,CAACymI,aAAa,CAACzmI,IAAAA,CAAK,CAAE,CAC7B,IAAI,CAACymI,aAAa,CAACzmI,IAAAA,CAAK,CAAG,IAAI,CAACumI,qBAAqB,CAAC7kI,KAAO1B,CAAAA,IAAAA,CAAM,KACrE,EAAA,CACF,CACA,GAAI,CAAC,IAAI,CAACsmI,iBAAiB,CAAE,CAC3B,IAAI,CAACA,iBAAiB,CAAG,IAAI,CAACC,qBAAqB,CAAC7kI,KAAAA,CAAO,CAAG,CAAA,IAAA,CAC9D,CAAA,IAAI,CAAC4kI,iBAAiB,CAAC5vC,cAAc,CAAG,SAASjoN,OAAO,CAAA,CACtDA,OAAQ00M,CAAAA,UAAU,CAACP,sBAAsB,CAAG,IAC5Cn0M,CAAAA,OAAQ00M,CAAAA,UAAU,CAACnD,eAAe,CAAG,IACrC,CAAA,OAAOvxM,OACT,EACF,CACF,CACA2gD,aAAAA,CAAcltD,IAAI,CAAE5B,IAAI,CAAE,CACxB,OAAO,IAAIqoC,OAAQ,CAAA,IAAI,CAAC1B,MAAM,CAAE,CAC9BtkB,KAAAA,CAAOzgB,IACP0gB,CAAAA,MAAAA,CAAQ1gB,IACRY,CAAAA,MAAAA,CAAQ,IAAI,CAAC4+H,KAAK,CAACi4E,mBAAmB,CACtCnxK,OAAAA,CAAS,KACT/zB,CAAAA,IAAAA,CAAM,IAAI,CAAC+vP,OAAO,CAAG/mO,mBAAAA,CAAsBC,gBAC3CgN,CAAAA,SAAAA,CAAWzW,eACX4W,SAAW5W,CAAAA,cAAAA,CACX8W,QAAU5Z,CAAAA,qBAAAA,CACV8Z,SAAU9Z,qBACV7wB,CAAAA,IAAAA,CAAMA,IACR,CAAA,CACF,CACAomQ,aAAAA,CAAct5H,IAAI,CAAEg5H,SAAS,CAAEO,QAAQ,CAAE,CACvC,GAAI,CAACv5H,IAAAA,CAAKv9H,OAAO,CAAE,OACnB,IAAI0yH,aAAAA,CACJ,GAAI6K,IAAAA,CAAK9K,KAAK,EAAEA,KAAS8K,EAAAA,IAAAA,CAAK9K,KAAK,EAAEzyH,OAAAA,CAAS,CAC5C,GAAI82P,SAAUA,QAAS7oQ,CAAAA,IAAI,CAAC,IAAIylQ,aAAan2H,IAC7C,CAAA,CAAA,CAAA,GAAIA,IAAK9K,CAAAA,KAAK,CAACskI,WAAW,CAAE,CAC1B,GAAIR,SAAW,CAAA,CACb7jI,aAAgB6K,CAAAA,IAAAA,CAAK9K,KAAK,CAACA,KAAK,CAACC,cAAa,CAElD,CACF,CACA,GAAI6K,IAAKpkC,CAAAA,MAAM,EAAEn5F,OAAAA,CAAS,CACxB,GAAI82P,QAAAA,CAAUA,QAAS7oQ,CAAAA,IAAI,CAAC,IAAIylQ,YAAAA,CAAan2H,IAC7C,CAAA,CAAA,CAAA,GAAIA,KAAKpkC,MAAM,CAAC49J,WAAW,CAAE,CAC3B,GAAIR,SAAW,CAAA,CACb7jI,cAAgB6K,IAAKpkC,CAAAA,MAAM,CAACu5B,cAAa,CAE7C,CACF,CACA,GAAIA,cAAe,CACjB,IAAIpqF,MAAS,CAAA,IAAA,CACb,IAAI,IAAIn7C,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,GAAI,CAACulI,aAAa,CAACvlI,EAAE,CAAC0pI,IAAI,CAAC7pF,YAAY,CAAC/5C,MAAM,CAACq1C,MAAM,CAAE,CACrDA,MAAAA,CAAS,KACT,CAAA,KACF,CACF,CACA,GAAIA,MAAAA,CAAQ,CACV,MAAM0uN,yBAAAA,CAA4B,EAAE,CACpC,IAAI,IAAI7pQ,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAM0pI,IAAAA,CAAOnE,aAAa,CAACvlI,EAAE,CAAC0pI,IAAI,CAClC,GAAI,IAAI,CAACy/B,QAAQ,CAAC7gK,GAAG,CAACohI,IAAAA,CAAAA,CAAO,CAC3B0/H,SAAAA,CAAUtoQ,IAAI,CAAC,IAAIylQ,YAAan2H,CAAAA,IAAAA,CAAM,CACpC7K,aAAa,CAACvlI,CAAE,CAAA,CACjB,CACH,EAAA,CAAA,KAAO,CACL6pQ,yBAAAA,CAA0B/oQ,IAAI,CAACykI,aAAa,CAACvlI,CAAAA,CAAE,EACjD,CACA,IAAI,CAACmpK,QAAQ,CAAC74J,GAAG,CAACo5H,IACpB,EAAA,CACA,IAAI,CAACy/B,QAAQ,CAACvgK,KAAK,EACnB,CAAA,GAAIihQ,yBAA0B5pQ,CAAAA,MAAM,CAAG,CAAG,CAAA,CACxCmpQ,SAAUtoQ,CAAAA,IAAI,CAAC,IAAIylQ,YAAAA,CAAan2H,IAAMy5H,CAAAA,yBAAAA,CAAAA,EACxC,CACF,CACF,CACA,IAAI,IAAI7pQ,CAAI,CAAA,CAAA,CAAGA,CAAIowI,CAAAA,IAAAA,CAAK4G,SAAS,CAAC/2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,IAAI,CAAC0pQ,aAAa,CAACt5H,IAAK4G,CAAAA,SAAS,CAACh3I,CAAAA,CAAE,CAAEopQ,SAAWO,CAAAA,QAAAA,EACnD,CACF,CACAG,qBAAqB5hI,KAAK,CAAE,CAC1B,MAAM20B,QAAU,EAAE,CAClB,IAAI,IAAIzsI,CAAI,CAAA,CAAA,CAAGA,CAAI83G,CAAAA,KAAAA,CAAMjoI,MAAM,CAAEmwB,CAAAA,EAAAA,CAAI,CACnC,MAAMgxN,UAAYl5G,KAAK,CAAC93G,CAAE,CAAA,CAACgxN,SAAS,CACpCA,SAAUjzF,CAAAA,WAAW,CAAGizF,SAAAA,CAAU2oB,mBAAmB,CACrD,GAAI3oB,SAAU2oB,CAAAA,mBAAmB,CAAE,CACjC,MAAMtrD,MAAAA,CAASv2E,KAAK,CAAC93G,EAAE,CAACm1G,aAAa,CACrC,IAAI,IAAIvlI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIy+M,OAAOx+M,MAAM,CAAED,CAAI,EAAA,CAAA,CACpCy+M,MAAM,CAACz+M,CAAAA,CAAE,CAAC+0I,gBAAgB,CAAG,IAC7B8nB,CAAAA,OAAAA,CAAQ/7J,IAAI,CAAC29M,MAAM,CAACz+M,CAAE,CAAA,EACxB,CACF,CACF,CACA,OAAO68J,OACT,CACAmN,gBAAiB9hC,CAAAA,KAAK,CAAE,CACtB,IAAI,IAAIloI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkoI,KAAMjoI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnC,MAAMulI,aAAAA,CAAgB2C,KAAK,CAACloI,EAAE,CAACulI,aAAa,CAC5C,IAAI,IAAIh/C,CAAI,CAAA,CAAA,CAAGA,CAAIg/C,CAAAA,aAAAA,CAActlI,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC3Cg/C,aAAa,CAACh/C,CAAAA,CAAE,CAAC6pD,IAAI,CAACzI,iBAAiB,GACzC,CACF,CACF,CACAqiI,qBAAsB55H,CAAAA,IAAI,CAAE,CAC1B,IAAIp2H,IAAAA,CACJ,MAAMiwP,QAAAA,CAAW,IAAI,CAACvlI,KAAK,CAAC23E,sBAAsB,EAAI,EACtD,CAAA,MAAM/5L,KAAQqmP,CAAAA,SAAAA,CACd,IAAIuB,OAAS7tD,CAAAA,sBAAAA,CACb,GAAIjsE,IAAAA,CAAK9K,KAAK,CAAE,CACd+2E,sBAAAA,CAAyBjsE,KAAK9K,KAAK,CAAC+2E,sBAAsB,CAC1D,GAAIjsE,IAAK9K,CAAAA,KAAK,CAACq0F,KAAK,CAAE,CACpB3/M,IAAAA,CAAO,IAAI,CAAC+9N,MAAM,CAACh2O,GAAG,CAACquI,KAAK9K,KAAK,CAACq0F,KAAK,CAAA,CAAE3/M,IAAI,CAC7C,GAAIA,IAAK6zL,CAAAA,IAAI,CAAE,CACbq8D,OAAAA,CAAUlwP,IAAK6zL,CAAAA,KAAI,CAEvB,CAAO,KAAA,GAAIz9D,KAAK9K,KAAK,CAAC6kI,KAAK,CAAE,CAC3BnwP,IAAAA,CAAOo2H,IAAK9K,CAAAA,KAAK,CACjB,GAAItrH,IAAAA,CAAKmwP,KAAK,CAAE,CACdD,OAAAA,CAAUlwP,IAAKmwP,CAAAA,MAAK,CAExB,CACF,CAAO,KAAA,GAAI/5H,KAAKpkC,MAAM,CAAE,CACtBqwG,sBAAAA,CAAyBjsE,KAAKpkC,MAAM,CAACqwG,sBAAsB,CAC3D,GAAIjsE,IAAAA,CAAKpkC,MAAM,CAACv0F,IAAI,GAAK,OAAA,CAAS,CAChC,GAAI24H,KAAKpkC,MAAM,CAACm+J,KAAK,CAAE,CACrBnwP,IAAOo2H,CAAAA,IAAAA,CAAKpkC,MAAM,CAClB,GAAIhyF,IAAAA,CAAKmwP,KAAK,CAAE,CACdD,OAAUlwP,CAAAA,IAAAA,CAAKmwP,MACjB,CACF,CACF,CACF,CACA,MAAMt8D,KAAO,CACXx5L,CAAAA,CAAG,CACH0H,CAAAA,CAAAA,CAAG,CACHG,CAAAA,CAAAA,CAAG,CACHitM,CAAAA,EAAAA,CAAI,CACN,CACA,CAAA,GAAI+gD,OAAS,CAAA,CACXr8D,KAAKx5L,CAAC,CAAG61P,OAAQ71P,CAAAA,CAAC,CAClBw5L,IAAAA,CAAK9xL,CAAC,CAAGmuP,OAAQnuP,CAAAA,CAAC,CAClB8xL,KAAK3xL,CAAC,CAAGguP,OAAQhuP,CAAAA,CAAC,CAClB2xL,IAAAA,CAAKsb,EAAE,CAAG+gD,QAAQ/gD,GACpB,CACA,MAAMihD,QAAW/tD,CAAAA,sBAAAA,EAA0B,CAC3CxO,CAAAA,KAAKx5L,CAAC,EAAI+1P,QACVv8D,CAAAA,KAAK9xL,CAAC,EAAIquP,QACVv8D,CAAAA,KAAK3xL,CAAC,EAAIkuP,QACV,CAAA,MAAMhpB,SAAYhxG,CAAAA,IAAAA,CAAKpkC,MAAM,EAAIokC,KAAK9K,KAAK,CAC3C,MAAMkhI,MAAAA,CAAS,IAAI,CAAC6D,iBAAiB,CAACjpB,SAAAA,CAAU77G,aAAa,CAC7DjjH,CAAAA,KAAAA,CAAMvjB,IAAI,CAACynQ,MAAOh7O,CAAAA,WAAW,CAC7B,CAAA,IAAI8+O,UAAYz8D,IAAKx5L,CAAAA,CAAC,CAAGiO,KAAAA,CAAMvG,CAAC,CAAGuG,KAAMpG,CAAAA,CAAC,CAAG2xL,IAAK9xL,CAAAA,CAAC,CAAGuG,KAAAA,CAAMjO,CAAC,CAAGiO,KAAMpG,CAAAA,CAAC,CAAG2xL,IAAK3xL,CAAAA,CAAC,CAAGoG,KAAAA,CAAMjO,CAAC,CAAGiO,KAAAA,CAAMvG,CAAC,CACpGuuP,WAAaz8D,IAAKsb,CAAAA,EAAE,CACpBmhD,SAAAA,CAAY/qQ,IAAKud,CAAAA,IAAI,CAACwtP,SAAAA,CAAAA,CACtB,MAAMC,YAAehrQ,CAAAA,IAAAA,CAAKmU,GAAG,CAACL,KAAKiB,cAAc,CAACg2P,SAAYL,CAAAA,QAAAA,CAAAA,CAAW,IAAI,CAACvlI,KAAK,CAAC43E,qBAAqB,EAAIksD,iBAAAA,CAAAA,CAC7G,OAAO+B,YACT,CACAC,eAAgBtiI,CAAAA,KAAK,CAAEvgI,KAAK,CAAEs+J,SAAS,CAAEn1B,UAAU,CAAE,CACnD,IAAI,IAAI9wI,CAAI,CAAA,CAAA,CAAGA,CAAIkoI,CAAAA,KAAAA,CAAMjoI,MAAM,CAAED,IAAI,CACnC,MAAMowI,IAAOlI,CAAAA,KAAK,CAACloI,CAAE,CAAA,CACrB,MAAMulI,aAAAA,CAAgB6K,KAAK7K,aAAa,CACxC,IAAI,IAAIh/C,CAAI,CAAA,CAAA,CAAGA,CAAIg/C,CAAAA,aAAAA,CAActlI,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC3C,MAAMq+C,aAAeW,aAAa,CAACh/C,CAAE,CAAA,CACrCq+C,aAAa8P,cAAc,CAAC/sI,KAC5B,CAAA,CAAA,GAAIA,KAAO,CAAA,CACT,GAAImpI,UAAAA,CAAY,CACdlM,YAAamM,CAAAA,WAAW,EAAID,WAC9B,CACAlM,YAAahxF,CAAAA,IAAI,CAAG0oF,uBAAAA,CACpB,IAAI,IAAI0G,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAOijC,SAAWjjC,CAAAA,IAAAA,EAAAA,CAAO,CACzC,MAAMl2F,IAAMsjG,IAAK+kB,CAAAA,aAAa,CAACnyB,IAAAA,CAAK,CAACn9E,WACrC/Y,CAAAA,GAAAA,CAAIY,SAAS,CAAGxW,aAChB4V,CAAAA,GAAAA,CAAIe,SAAS,CAAG3W,aAChB0tG,CAAAA,YAAAA,CAAa+N,mBAAmB,CAACrD,YAAAA,CAAasD,kBAAkB,CAAC5P,IAAK,CAAA,CAAEl2F,GAC1E,EAAA,CACF,CACF,CACF,CACF,CACA62N,IAAAA,CAAKz7H,KAAK,CAAE33F,IAAOqtF,CAAAA,aAAa,CAAE,CAChC,MAAM3zF,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM+kF,SAAAA,CAAY39G,MAClB,IAAI,CAACqzH,KAAK,CAACy3C,cAAc,EACzB,CAAA,IAAI,CAACvN,KAAK,CAAC1wB,YAAY,CAAG,CAC1B,CAAA,IAAI,CAAC0wB,KAAK,CAAC+4E,aAAa,CAAG,CAC3B,CAAA,IAAI,CAAC/4E,KAAK,CAACi5E,WAAW,CAAG,CAAA,CACzB,MAAM4iB,YAAAA,CAAexgO,OAAO0a,YAAY,CAACG,MAAM,CAC/C,MAAM4lN,YAAezgO,CAAAA,MAAAA,CAAOmb,yBAAyB,CACrD,MAAMulN,gBAAAA,CAAmB1gO,MAAO0a,CAAAA,YAAY,CAACK,WAAW,CACxD,MAAMokN,SAAAA,CAAY,EAAE,CACpB,MAAMO,QAAW,CAAA,EAAE,CACnB,GAAIzhI,KAAAA,CAAO,CACT,IAAI,IAAIloI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkoI,MAAMjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,IAAI,CAAC0pQ,aAAa,CAACxhI,KAAK,CAACloI,CAAE,CAAA,CAAEopQ,SAAW,CAAA,IAAA,EAC1C,CACA,IAAI,CAACM,aAAa,CAAC,IAAI,CAACpuH,IAAI,CAAE,KAAMquH,QACtC,EAAA,CAAA,KAAO,CACL,IAAI,CAACD,aAAa,CAAC,IAAI,CAACpuH,IAAI,CAAE8tH,SAAWO,CAAAA,QAAAA,EAC3C,CACA,GAAIP,SAAAA,CAAUnpQ,MAAM,CAAG,EAAG,CACxB,IAAI,CAACyiJ,QAAQ,CAAC0Z,cAAc,CAAChxD,WAAW,EAAA,CACxC,MAAM66D,SAAAA,CAAY11H,IAASqtF,GAAAA,aAAAA,CAAgB,EAAI,CAC/C,CAAA,IAAI,CAAC4sI,eAAe,CAACpB,SAAAA,CAAW,KAAOnjG,CAAAA,SAAAA,CAAAA,CACvC,IAAI,CAAC6iG,QAAQ,CAAC7+N,MAAAA,CAAAA,CACd,IAAI,CAAC2gO,YAAY,CAAC3kG,UAAWmjG,SAAWO,CAAAA,QAAAA,CAAAA,CACxC,IAAI74H,UAAAA,CAAarV,aACjB,GAAIlrF,IAAAA,GAASqtF,aAAe,CAAA,CAC1BkT,YAAcpV,gBAChB,CACA,GAAI,IAAI,CAACgJ,KAAK,CAACm4E,WAAW,CAAE,CAC1B/rE,UAAAA,EAAc/U,oBAChB,CACA,IAAI,CAACyuI,eAAe,CAACpB,SAAAA,CAAW,KAAMnjG,SAAWn1B,CAAAA,UAAAA,CAAAA,CACjD,IAAI,CAACq4H,UAAU,CAACC,SAClB,EAAA,CACA,MAAMyB,OAAUx5P,CAAAA,GAAAA,EAChB,CAAA,IAAI,CAACu9J,KAAK,CAACk8F,eAAe,CAAGD,QAAU77I,SACvC,CAAA,IAAI,CAAC4/C,KAAK,CAACm8F,aAAa,CAAG9gO,OAAO0a,YAAY,CAACG,MAAM,CAAG2lN,YACxD,CAAA,IAAI,CAAC77F,KAAK,CAAC5pH,WAAW,CAAG/a,MAAO0a,CAAAA,YAAY,CAACK,WAAW,CAAG2lN,gBAC3D,CAAA,IAAI,CAAC/7F,KAAK,CAACo8F,OAAO,CAAG/gO,MAAAA,CAAOmb,yBAAyB,CAAGslN,YACxD,CAAA,IAAI,CAAC97F,KAAK,CAACq8F,aAAa,CAAG7B,SAAAA,CAAUnpQ,OAAM,CAE7CirQ,gBAAiB9B,CAAAA,SAAS,CAAEnjG,SAAS,CAAE,CACrC,IAAI,IAAIjmK,CAAI,CAAA,CAAA,CAAGA,CAAIopQ,CAAAA,SAAAA,CAAUnpQ,MAAM,CAAED,CAAI,EAAA,CAAA,CACvC,MAAMmrQ,QAAW/B,CAAAA,SAAS,CAACppQ,CAAAA,CAAE,CAC7B,MAAMkF,IAAAA,CAAO,IAAI,CAAC8kQ,qBAAqB,CAACmB,QAAAA,CAAS/6H,IAAI,CAAA,CACrD,IAAI,IAAIpN,IAAO,CAAA,CAAA,CAAGA,KAAOijC,SAAWjjC,CAAAA,IAAAA,EAAAA,CAAO,CACzC,MAAMl2F,GAAM,CAAA,IAAI,CAACslB,aAAa,CAACltD,IAAM,CAAA,CAAC,qBAAqB,EAAElF,CAAE,CAAA,CAAC,CAChE2uI,CAAAA,aAAAA,CAAcF,MAAM,CAAC3hG,GAAAA,CACrBq+N,CAAAA,QAAAA,CAASh2G,aAAa,CAACnyB,IAAAA,CAAK,CAAG,IAAIz9E,aAAa,CAC9CM,WAAAA,CAAa/Y,GACb9B,CAAAA,KAAAA,CAAO,KACT,CAAA,EACF,CACA,GAAI,CAAC,IAAI,CAACmqH,aAAa,CAAC7sJ,GAAG,CAACpD,IAAAA,CAAAA,CAAO,CACjC,MAAM4nC,IAAM,IAAI,CAACslB,aAAa,CAACltD,IAAM,CAAA,CAAC,0BAA0B,EAAEA,KAAK,CAAC,CAAA,CACxEypI,aAAcF,CAAAA,MAAM,CAAC3hG,GACrB,CAAA,CAAA,IAAI,CAACqoH,aAAa,CAAC5sJ,GAAG,CAACrD,IAAM,CAAA,IAAIqgD,YAAa,CAAA,CAC5CM,WAAa/Y,CAAAA,GAAAA,CACb9B,MAAO,KACT,CAAA,CAAA,EACF,CACF,CACF,CACAogO,mBAAAA,CAAoBC,SAAS,CAAEC,UAAU,CAAE,CACzC,GAAI,IAAI,CAAC5mI,KAAK,CAACm4E,WAAW,CAAE,CAC1B,MAAMpoD,YAAe,CAAA,IAAIyxG,iBAAiB,IAAI,CAAA,CAC9CoF,UAAWxqQ,CAAAA,IAAI,CAAC2zJ,YAClB,EAAA,CACA,MAAM82G,WAAAA,CAAc,IAAI,CAAC7oH,QAAQ,CAAC8P,MAAM,CACxC,IAAI,IAAIxyJ,CAAAA,CAAI,EAAGA,CAAIurQ,CAAAA,WAAAA,CAAYtrQ,MAAM,CAAED,IAAI,CACzC,MAAMgrJ,KAAQugH,CAAAA,WAAW,CAACvrQ,CAAAA,CAAE,CAC5B,MAAMwrQ,UAAY,IAAI5F,eAAAA,CAAgB,IAAI,CAAE56G,OAC5CqgH,SAAUvqQ,CAAAA,IAAI,CAAC0qQ,SAAAA,CAAAA,CACf,GAAIxgH,KAAMn4I,CAAAA,OAAO,EAAKm4I,CAAAA,KAAAA,CAAMp3G,IAAI,CAAG2oF,SAAQ,IAAO,CAAA,CAAG,CACnDyuB,KAAAA,CAAMp3G,IAAI,CAAG2oF,SAAYD,CAAAA,uBAAAA,CAA0BD,mBACnD2uB,CAAAA,KAAAA,CAAM+Y,gBAAgB,CAAG/Y,KAAMvzI,CAAAA,IAAI,GAAK+9G,qBAAAA,CAAwB4G,sBAAwBD,sBACxFmvI,CAAAA,UAAAA,CAAWxqQ,IAAI,CAAC0qQ,WAClB,CACF,CACAF,UAAWp7P,CAAAA,IAAI,GACjB,CACAu7P,aAAAA,CAAcJ,SAAS,CAAE,CACvB,IAAI,IAAIrrQ,CAAAA,CAAI,EAAGA,CAAIqrQ,CAAAA,SAAAA,CAAUprQ,MAAM,CAAED,IAAI,CACvCqrQ,SAAS,CAACrrQ,CAAAA,CAAE,CAACulQ,OAAO,GACtB,CACF,CACAmG,UAAa,EAAA,CACX,IAAI,CAACj3G,YAAY,CAAC11J,IAAI,CAAC,IAAI,CAAC2lI,KAAK,CAAC+vB,YAAY,CAAA,CAC9C,GAAI,CAAC,IAAI,CAAC/vB,KAAK,CAACm4E,WAAW,CAAE,CAC3B,IAAI,CAACn4E,KAAK,CAAC+vB,YAAY,CAAClsJ,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,GACpC,CACA,IAAI,CAACm6I,QAAQ,CAACm4B,iBAAiB,EAC/B,CAAA,IAAI,CAAC5wI,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,8BAAA,CAAA,CAAgCsN,QAAQ,CAAC,IAAI,CAAC+sF,KAAK,CAACq4E,4BAA4B,CAC1G,CAAA,IAAI,CAAC9yK,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC,kCAAkCsN,QAAQ,CAAC,IAAI,CAAC+sF,KAAK,CAACo4E,8BAA8B,EAChH,CACA6uD,YAAe,EAAA,CACb,IAAI,CAACjnI,KAAK,CAAC+vB,YAAY,CAAC11J,IAAI,CAAC,IAAI,CAAC01J,YAAY,EAChD,CACA41G,iBAAkB9kI,CAAAA,aAAa,CAAE,CAC/B,MAAMihI,MAAAA,CAAS,IAAIv7O,WAAAA,CACnB,GAAIs6G,aAActlI,CAAAA,MAAM,CAAG,CAAA,CAAG,CAC5BumQ,MAAAA,CAAOznQ,IAAI,CAACwmI,aAAa,CAAC,CAAA,CAAE,CAACz2G,IAAI,CACjC,CAAA,IAAI,IAAIhU,CAAAA,CAAI,EAAGA,CAAIyqH,CAAAA,aAAAA,CAActlI,MAAM,CAAE6a,IAAI,CAC3C0rP,MAAAA,CAAOl2P,GAAG,CAACi1H,aAAa,CAACzqH,CAAAA,CAAE,CAACgU,IAAI,EAClC,CACF,CACA,OAAO03O,MACT,CACAoF,kBAAAA,CAAmB1jI,KAAK,CAAE,CACxB,IAAI,IAAIloI,CAAI,CAAA,CAAA,CAAGA,EAAIkoI,KAAMjoI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnC,MAAMulI,aAAgB2C,CAAAA,KAAK,CAACloI,CAAE,CAAA,CAACulI,aAC/B2C,CAAAA,KAAK,CAACloI,CAAE,CAAA,CAACwmQ,MAAM,CAAG,IAAI,CAAC6D,iBAAiB,CAAC9kI,aAAAA,EAC3C,CACF,CACAsmI,cAActmI,aAAa,CAAE,CAC3B,MAAMihI,OAAS,IAAIv7O,WAAAA,CACnB,IAAI,IAAIjrB,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3CwmQ,MAAAA,CAAOznQ,IAAI,CAACwmI,aAAa,CAAC,CAAA,CAAE,CAACz2G,IAAI,CAAA,CACjC,IAAI,IAAIhU,EAAI,CAAGA,CAAAA,CAAAA,CAAIyqH,aAActlI,CAAAA,MAAM,CAAE6a,CAAAA,EAAAA,CAAI,CAC3C0rP,MAAAA,CAAOl2P,GAAG,CAACi1H,aAAa,CAACzqH,CAAAA,CAAE,CAACgU,IAAI,EAClC,CACF,CACA,OAAO03O,MACT,CACAsF,eAAgBvmI,CAAAA,aAAa,CAAE,CAC7B,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,IAAI,CAAC6tL,SAAS,CAAC7tL,CAAAA,CAAE,CAAGulI,aAAa,CAACvlI,CAAAA,CAAE,CAAC6iI,SAAQ,CAEjD,CACAkpI,gBAAiBxmI,CAAAA,aAAa,CAAE,CAC9B,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3CulI,aAAa,CAACvlI,CAAE,CAAA,CAAC6iI,QAAQ,CAAG,IAAI,CAACgrD,SAAS,CAAC7tL,CAAAA,EAAE,CAEjD,CACAgsQ,kBAAmB/hO,CAAAA,MAAM,CAAEuhO,SAAS,CAAE,CACpC,MAAMxgH,KAAQwgH,CAAAA,SAAAA,CAAUxgH,KAAK,CAC7B,IAAIgS,SACJ,CAAA,GAAIhS,KAAMvzI,CAAAA,IAAI,GAAKk+G,cAAgB,CAAA,CACjC,MAAM44B,eAAAA,CAAkBvD,KAAMwD,CAAAA,aAAa,CAAC,IAAA,CAAM,GAClDwO,SAAYzO,CAAAA,eAAAA,CAAgBiO,YAAY,CACxCQ,UAAU7b,KAAK,CAAC52B,WAAW,CAACygC,MAAM7J,KAAK,CAAC72B,WAAW,EAAA,CAAA,CACnD0yC,SAAU7b,CAAAA,KAAK,CAAC6H,WAAW,CAACgC,KAAM7J,CAAAA,KAAK,CAAC6G,WAAW,IACnDgV,SAAU7b,CAAAA,KAAK,CAACsJ,WAAW,CAAC,CAAC,EAAA,CAAI,CAAG,CAAA,CAAA,CACpCuS,CAAAA,SAAAA,CAAUzrH,UAAU,CAAGqnF,sBACvBokC,CAAAA,SAAAA,CAAU/b,QAAQ,CAAG+J,MAAM8D,cAAc,CAAG,GAC5CkO,CAAAA,UAAU3c,OAAO,CAAG2K,KAAM8D,CAAAA,cAAc,CACxCkO,SAAUle,CAAAA,WAAW,CAAG,CACxBke,CAAAA,SAAUt6I,CAAAA,GAAG,CAAGsoI,KAAMG,CAAAA,eAAe,CAAG,CAAA,CACxC,IAAI,CAACzI,QAAQ,CAAC8a,mBAAmB,CAACR,SAAAA,EACpC,CACA,OAAOA,SACT,CACAivG,yBAAAA,CAA0BT,SAAS,CAAEL,QAAQ,CAAEnuG,SAAS,CAAEkvG,YAAY,CAAE,CACtE,MAAMlhH,KAAQwgH,CAAAA,SAAAA,CAAUxgH,KAAK,CAC7B,IAAImhH,gBAAAA,CAAmB,KACvB,GAAInhH,KAAAA,CAAMvzI,IAAI,GAAK+9G,qBAAuB,CAAA,CACxCmzI,SAAU5pQ,CAAAA,IAAI,CAACmtQ,YAAa/gP,CAAAA,MAAM,CAClCw9O,CAAAA,SAAU5sP,CAAAA,CAAC,EAAImwP,YAAAA,CAAa1gP,WAAW,CAACzP,CAAC,CACzC,IAAI,CAACk3H,MAAM,CAAC7C,IAAI,CAAC7lB,WAAW,CAACo+I,SAAAA,CAAAA,CAC7B,IAAI,CAAC11H,MAAM,CAAC7C,IAAI,CAACgZ,cAAc,CAAC,CAAC,EAAI,CAAA,CAAA,CAAG,EACxC,CAAA,IAAI,CAACnW,MAAM,CAACgO,QAAQ,CAAG,CACvB,CAAA,IAAI,CAAChO,MAAM,CAACoN,OAAO,CAAG6rH,YAAAA,CAAa1gP,WAAW,CAACzP,CAAC,CAAG,CAAA,CACnD,MAAMqwP,WAAAA,CAAc7sQ,KAAKoU,GAAG,CAACu4P,YAAa1gP,CAAAA,WAAW,CAACnX,CAAC,CAAE63P,YAAAA,CAAa1gP,WAAW,CAACtP,CAAC,CACnF,CAAA,IAAI,CAAC+2H,MAAM,CAACmO,WAAW,CAAGgrH,YAC5B,CAAA,KAAO,CACL,GAAI,CAACZ,SAAAA,CAAU9F,WAAW,CAAC14O,UAAU,CAACm+O,QAAAA,CAAS3E,MAAM,CAAA,CAAG,CACtD2F,gBAAmB,CAAA,MACrB,CACF,CACA,GAAInhH,KAAMvzI,CAAAA,IAAI,GAAKk+G,cAAAA,CAAgB,CACjC,IAAI02I,WAAc,CAAA,KAAA,CAClB,MAAM9mI,aAAgB4lI,CAAAA,QAAAA,CAAS5lI,aAAa,CAC5C,IAAI,IAAIvlI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIulI,cAActlI,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3C,GAAIulI,aAAa,CAACvlI,CAAAA,CAAE,CAACgzI,UAAU,CAACgqB,SAAY,CAAA,CAAA,CAC1CqvG,YAAc,IACd,CAAA,KACF,CACF,CACA,GAAI,CAACA,WAAAA,CAAa,CAChBF,gBAAAA,CAAmB,MACrB,CACF,CACA,OAAOA,gBACT,CACAG,eAAAA,CAAgB/D,UAAU,CAAEv9G,KAAK,CAAE,CACjCu9G,UAAU,CAAC/yI,qBAAsB,CAAA,CAACv1H,MAAM,CAAG,CAC3CsoQ,CAAAA,UAAU,CAAC9yI,eAAe,CAACx1H,MAAM,CAAG,CACpCsoQ,CAAAA,UAAU,CAAC5yI,cAAe,CAAA,CAAC11H,MAAM,CAAG,CACpCsoQ,CAAAA,UAAU,CAACv9G,KAAAA,CAAMvzI,IAAI,CAAC,CAAC,CAAE,CAAA,CAAGuzI,KAC5BA,CAAAA,MAAMjW,gBAAgB,CAAG,KAC3B,CACAw3H,gBAAgB3vG,IAAI,CAAE4vG,iBAAiB,CAAE3vG,OAAO,CAAE2uG,SAAS,CAAE,CAC3D,MAAMxgH,KAAAA,CAAQwgH,SAAUxgH,CAAAA,KAAK,CAC7B,MAAM8R,WAAAA,CAAc,IAAI,CAACp4B,KAAK,CAACq4B,wBAAwB,CACvD,MAAMnoB,UAAaoW,CAAAA,KAAAA,CAAMmD,WAAW,GAAK,CAAC2O,WAAAA,EAAe,IAAI,CAACp4B,KAAK,CAAC8hC,QAAQ,CAACpY,cAAc,CAC3F,CAAA,GAAI,CAACo+G,iBAAAA,EAAqB53H,UAAY,CAAA,CACpC,GAAI,CAACoW,MAAMoK,SAAS,EAAI,CAAC0H,WAAAA,CAAa,CACpC9R,KAAMoK,CAAAA,SAAS,CAAG,IAAI,CAAC+P,cAAc,CAACpjK,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE+gH,OACzD,CACA,GAAIA,KAAMvzI,CAAAA,IAAI,GAAK+9G,qBAAuB,CAAA,CACxC,IAAI,CAACktB,QAAQ,CAAC8mB,0BAA0B,CAACj2B,IAAI,CAACyX,KAAAA,CAAO4R,IAAM,CAAA,IAAI,CAAC3pB,MAAM,CAAE4pB,OACxE,CAAA,CAAA,MAAMoG,WAAa,IAAI,CAACvgB,QAAQ,CAAC8mB,0BAA0B,CAAChJ,kBAAkB,CAACxV,KAAAA,CAAO,IAAI,CAAC/X,MAAM,CAAA,CACjGgwB,YAAYj3D,MACd,GAAA,CAAA,KAAO,CACL,GAAI,IAAI,CAAC/hE,MAAM,CAAC2E,QAAQ,CAAE,CACxB,OAAO,IACT,CACA,IAAI,CAAC8zG,QAAQ,CAAC6mB,oBAAoB,CAACh2B,IAAI,CAACyX,MAAO4R,IAAMC,CAAAA,OAAAA,CAAAA,CACrD,MAAMj5G,gBAAAA,CAAmB,MACzB,IAAI,CAAC8+F,QAAQ,CAAC0Z,cAAc,CAACpwD,MAAM,CAACg/C,MAAO,IAAI,CAAC/X,MAAM,CAAErvF,kBAC1D,CACF,CACA,OAAO,IACT,CACA6oN,mBAAoBxiO,CAAAA,MAAM,CAAEm/N,SAAS,CAAEnjG,SAAS,CAAE,CAChD,MAAMymG,YAAe,CAAA,CAAA,CACrB,MAAMC,YAAAA,CAAe,IAAI,CAAC3D,eAAe,CAAChB,SAAS,CAAC/9N,MAAQ,CAAA,IAAI,CAACu9N,OAAO,CACxE,CAAA,IAAIoF,aACJ,CAAA,MAAMC,eAAiB,IAAI,CAACnoI,KAAK,CAACs4E,qBAAqB,CACvD,GAAI6vD,cAAgB,CAAA,CAClB,IAAI,CAAC7D,eAAe,CAAC3B,cAAc,CAAC,IAAI,CAAC3iI,KAAK,CAAC81E,mBAAmB,CAAE,IAAI,CAAC91E,KAAK,CAACg2E,wBAAwB,CAAE,IAAI,CAAC8sD,OAAO,CAAA,CACrHoF,aAAgB,CAAA,IAAI,CAAC5D,eAAe,CAACjB,UAAU,CAAC,IAAI,CAACP,OAAO,EAC9D,CACAv9N,MAAOsV,CAAAA,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,CACvClM,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,CACvClN,CAAAA,MAAAA,CAAOmV,eAAe,CAAC,IAAA,CAAM,IAC7B,CAAA,CAAA,IAAI,IAAIgxF,IAAO,CAAA,CAAA,CAAGA,IAAOg5H,CAAAA,SAAAA,CAAUnpQ,MAAM,CAAEmwI,IAAAA,EAAAA,CAAO,CAChD,MAAM+6H,QAAW/B,CAAAA,SAAS,CAACh5H,IAAAA,CAAK,CAChC,IAAI,IAAIpN,IAAO,CAAA,CAAA,CAAGA,IAAOijC,CAAAA,SAAAA,CAAWjjC,IAAO,EAAA,CAAA,CACzC,MAAM8pI,MAAS3B,CAAAA,QAAAA,CAASh2G,aAAa,CAACnyB,IAAK,CAAA,CAC3C,MAAM+pI,QAAAA,CAAWD,OAAOjnN,WAAW,CACnC,MAAMmnN,MAAAA,CAAS,IAAI,CAAC73G,aAAa,CAACpzJ,GAAG,CAACgrQ,QAASpnP,CAAAA,KAAK,CACpD,CAAA,MAAMsnP,OAAUD,CAAAA,MAAAA,CAAOnnN,WAAW,CAClC,IAAI,CAACmjN,eAAe,CAACzwH,OAAO,CAACw0H,QAASpnP,CAAAA,KAAK,CAAEonP,QAAAA,CAASnnP,MAAM,CAC5D,CAAA,IAAI,IAAI5lB,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI0sQ,YAAc1sQ,CAAAA,CAAAA,EAAAA,CAAI,CACnC,IAAI,CAACgpQ,eAAe,CAAC/B,gBAAgB,CAAC8F,QAAAA,CAAAA,CACtC,MAAMG,sBAAAA,CAAyBL,gBAAkB7pI,IAAS,GAAA,CAAA,EAAKhjI,CAAM,GAAA,CAAA,CACrEwkI,kBAAmBv6F,CAAAA,MAAAA,CAAQ+iO,MAAQE,CAAAA,sBAAAA,CAAyBN,cAAgBD,YAC5E,CAAA,CAAA,IAAI,CAAC3D,eAAe,CAAC/B,gBAAgB,CAACgG,OACtCzoI,CAAAA,CAAAA,kBAAAA,CAAmBv6F,OAAQ6iO,MAAQH,CAAAA,YAAAA,EACrC,CACF,CACF,CACF,CACA/B,YAAa3kG,CAAAA,SAAS,CAAEmjG,SAAS,CAAEO,QAAQ,CAAE,CAC3C,MAAMjlI,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,MAAMk4B,IAAOl4B,CAAAA,KAAAA,CAAMC,MAAM,CACzB,MAAM16F,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAM8yH,yBAA2Br4B,KAAMq4B,CAAAA,wBAAwB,CAC/D,IAAI,CAACysG,eAAe,CAACv/N,MAAQy6F,CAAAA,KAAAA,CAAOuhC,SACpC,CAAA,CAAA,IAAI,CAACylG,UAAU,GACf9uG,IAAKiU,CAAAA,OAAO,EACZ,CAAA,IAAI,CAAC+6F,kBAAkB,CAACxC,SACxB,CAAA,CAAA,IAAI,CAAC8B,gBAAgB,CAAC9B,SAAWnjG,CAAAA,SAAAA,CAAAA,CACjC,IAAI,CAACvjB,QAAQ,CAAC6P,aAAa,CAACqK,IAAAA,CAAAA,CAC5B,MAAMyuG,SAAAA,CAAY,EAAE,CAAEC,UAAa,CAAA,EAAE,CACrC,IAAI,CAACF,mBAAmB,CAACC,SAAWC,CAAAA,UAAAA,CAAAA,CACpC,IAAI,CAACthG,gBAAgB,CAAC2/F,QAAAA,CAAAA,CACtB,MAAM9sG,OAAAA,CAAU,IAAI,CAACitG,oBAAoB,CAACH,QAAAA,CAAAA,CAC1C,IAAI,CAACjnH,QAAQ,CAAC0pB,qBAAqB,CAACvP,OAAAA,CAAAA,CACpC,IAAI,CAACna,QAAQ,CAACkqB,SAAS,CAAC/P,OAAAA,CAAAA,CACxB,MAAMqvG,YAAe,CAAA,IAAI,CAACL,aAAa,CAAChvG,OACxC,CAAA,CAAA,IAAI78J,CAAGumF,CAAAA,CAAAA,CAAG4mL,GAAKryP,CAAAA,CAAAA,CACf,IAAI9a,CAAAA,CAAI,EAAGA,CAAIopQ,CAAAA,SAAAA,CAAUnpQ,MAAM,CAAED,IAAI,CACnC,MAAMmrQ,QAAW/B,CAAAA,SAAS,CAACppQ,CAAE,CAAA,CAC7BmtQ,GAAMhC,CAAAA,QAAAA,CAAS5lI,aAAa,CAC5B,IAAIh/C,CAAAA,CAAI,EAAGA,CAAI4mL,CAAAA,GAAAA,CAAIltQ,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC7BzrE,CAAIqyP,CAAAA,GAAG,CAAC5mL,CAAE,CAAA,CACVzrE,CAAE45H,CAAAA,cAAc,CAAC,KAAA,CACjB55H,CAAAA,CAAAA,CAAE84B,IAAI,CAAG2oF,SAAAA,CACTzhH,CAAE63H,CAAAA,mBAAmB,CAACrD,YAAasD,CAAAA,kBAAkB,CAAC,CAAA,CAAE,CAAE,IAAI,CAACi2H,QAAQ,CAAA,CACvE/tP,CAAE63H,CAAAA,mBAAmB,CAACrD,YAAAA,CAAasD,kBAAkB,CAAC,CAAA,CAAE,CAAE,IAAI,CAACi2H,QAAQ,EACzE,CACF,CACA,IAAItiL,CAAI,CAAA,CAAA,CAAGA,CAAI+kL,CAAAA,UAAAA,CAAWrrQ,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACpC+kL,UAAU,CAAC/kL,CAAAA,CAAE,CAACykE,KAAK,CAACn4I,OAAO,CAAG,MAChC,CACA,MAAM01P,UAAa,CAAA,CACjB,EAAE,CACF,EAAE,CACF,EAAE,CACH,CACD,IAAIvlI,IAAAA,CAAMoN,IACV,CAAA,IAAIg9H,uBAA0B,CAAA,KAAA,CAC9B,IAAIptQ,CAAAA,CAAI,EAAGA,CAAIsrQ,CAAAA,UAAAA,CAAWrrQ,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAMwrQ,SAAAA,CAAYF,UAAU,CAACtrQ,CAAAA,CAAE,CAC/B,MAAMqtQ,eAAiB7B,SAAqBtF,YAAAA,gBAAAA,CAC5C,MAAMoH,aAAAA,CAAgB9B,UAAUxgH,KAAK,CAACvzI,IAAI,GAAK+9G,qBAC/C,CAAA,IAAIqwI,gBAAmB2F,CAAAA,SAAAA,CAAU3F,gBAAgB,CACjD,GAAI5/F,SAAY,CAAA,CAAA,EAAK4/F,iBAAmB,CAAK2F,EAAAA,SAAAA,CAAUxgH,KAAK,CAACs+B,OAAO,CAAE,CACpEu8E,gBAAmB,CAAA,EACrB,CACA,IAAI,IAAI0H,iBAAAA,CAAoB,EAAGA,iBAAoB1H,CAAAA,gBAAAA,CAAkB0H,iBAAoB,EAAA,CAAA,CACvF,GAAI1H,gBAAmB,CAAA,CAAA,CAAG,CACxB2F,SAAAA,CAAU1F,mBAAmB,CAACyH,iBAAAA,CAAmB1H,gBACnD,EAAA,CACA2F,SAAUhG,CAAAA,SAAS,EACnB,CAAA,IAAIgH,kBAAoB,KACxB,CAAA,MAAMxvG,SAAY,CAAA,IAAI,CAACgvG,kBAAkB,CAAC/hO,MAAQuhO,CAAAA,SAAAA,CAAAA,CAClD,IAAIp7H,IAAO,CAAA,CAAA,CAAGA,IAAOg5H,CAAAA,SAAAA,CAAUnpQ,MAAM,CAAEmwI,IAAO,EAAA,CAAA,CAC5C,MAAM+6H,QAAW/B,CAAAA,SAAS,CAACh5H,IAAAA,CAAK,CAChC+8H,GAAMhC,CAAAA,QAAAA,CAAS5lI,aAAa,CAC5B,MAAM4mI,gBAAmB,CAAA,IAAI,CAACF,yBAAyB,CAACT,SAAAA,CAAWL,QAAUnuG,CAAAA,SAAAA,CAAWkvG,cACxF,GAAI,CAACC,gBAAkB,CAAA,CACrB,QACF,CACA,IAAI,CAACG,eAAe,CAAC/D,UAAYiD,CAAAA,SAAAA,CAAUxgH,KAAK,CAAA,CAChD,MAAMwiH,aAAAA,CAAgBF,aAAgB,CAAA,EAAE,CAAG,CACzC9B,SAAAA,CAAUxgH,KAAK,CAChB,CACD,GAAI+R,wBAAAA,CAA0B,CAC5B,IAAI,CAACra,QAAQ,CAAC0a,iBAAiB,CAAChqH,MAAM,CAACo6N,aAAe,CAAA,IAAI,CAAC37G,cAAc,EAC3E,CACA26G,iBAAAA,CAAoB,IAAI,CAACD,eAAe,CAAC3vG,KAAM4vG,iBAAmB3vG,CAAAA,OAAAA,CAAS2uG,SAC3E,CAAA,CAAA,GAAIzuG,wBAA0B,CAAA,CAC5B,IAAI,CAACurG,aAAa,CAACl1N,MAAM,CAACo6N,aAAAA,CAAe,IAAI,CAAC37G,cAAc,EAC9D,CACA,IAAI,CAACi6G,eAAe,CAACqB,GAAAA,CAAAA,CACrB,IAAInqI,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAOijC,UAAWjjC,IAAO,EAAA,CAAA,CACrC,GAAIA,IAAAA,CAAO,GAAKuqI,iBAAoB,CAAA,CAAA,CAAG,CACrC,KACF,CACA,GAAIF,cAAAA,EAAkBrqI,IAAO,CAAA,CAAA,CAAG,CAC9B,KACF,CACA,MAAM8pI,OAAS3B,QAASh2G,CAAAA,aAAa,CAACnyB,IAAAA,CAAK,CAC3C,MAAMunI,YAAAA,CAAeY,QAASh2G,CAAAA,aAAa,CAACnyB,IAAK,CAAA,CAACn9E,WAAW,CAAClgC,KAAK,CACnE,MAAMqnP,MAAAA,CAAS,IAAI,CAAC73G,aAAa,CAACpzJ,GAAG,CAACwoQ,YACtC,CAAA,CAAA,MAAM0C,OAAUD,CAAAA,MAAAA,CAAOnnN,WAAW,CAClC,GAAIm9E,IAAS,GAAA,CAAA,CAAG,CACdoqI,uBAAAA,CAA0B1oI,KAAMurC,CAAAA,cAAa,CACxC,KAAA,GAAIm9F,uBAAyB,CAAA,CAClC1oI,MAAMurC,aAAa,CAAG,KACxB,CACA,IAAIw9F,YAAe,CAAA,IAAI,CAAChE,aAAa,CAACzmI,IAAAA,CAAK,CAC3C,GAAIqqI,eAAgB,CAClB,MAAMK,uBAA0BH,CAAAA,iBAAAA,CAAoB,IAAM1H,gBAC1D,CAAA,GAAI6H,uBAA2B1qI,EAAAA,IAAAA,GAAS,EAAG,CACzCyqI,YAAAA,CAAe,IAAI,CAACnE,kBACtB,CACF,CACA,IAAI/iL,CAAI,CAAA,CAAA,CAAGA,CAAI4mL,CAAAA,GAAAA,CAAIltQ,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC7B4mL,GAAG,CAAC5mL,CAAE,CAAA,CAACs8C,QAAQ,CAAG4qI,aACpB,CACA,IAAI,CAAC/qH,QAAQ,CAACutB,aAAa,CAACk9F,GAAAA,CAAAA,CAC5B,GAAInqI,IAAAA,GAAS0lI,QAAU,CAAA,CACrB,IAAI,CAACO,eAAe,CAACtxN,QAAQ,CAAC6zN,SAAAA,CAAUxgH,KAAK,CAACs+B,OAAO,CAAG,CAAA,CAAI,CAC9D,EAAA,CACA,GAAIr/I,MAAO2E,CAAAA,QAAQ,CAAE,CACnB,MAAMqT,UAAa,CAAA,IAAImmN,qBAAsBn+N,CAAAA,MAAAA,CAAQ,IAAI,CAACy4G,QAAQ,CAAE,IAAI,CAACzP,MAAM,CAAE8pB,wBAAAA,CAA2B,IAAI,CAACurG,aAAa,CAAG,IAAA,CAAM6E,IAAK5E,UAC5ItmN,CAAAA,CAAAA,UAAAA,CAAW7B,IAAI,CAAC4sN,MAChB/qN,CAAAA,CAAAA,UAAAA,CAAW+pD,MAAM,EAAA,CACjB/pD,WAAW9Y,OAAO,GACpB,CAAO,KAAA,CACL,IAAI,CAACu5G,QAAQ,CAACgpB,SAAS,CAAC,IAAI,CAACz4B,MAAM,CAAE+5H,MAAQ,CAAA,IAAA,CAAA,CAC7C,GAAIjwG,wBAAAA,CAA0B,CAC5B,IAAI,CAACurG,aAAa,CAAC10G,QAAQ,GAC7B,CACA,IAAI,CAAClR,QAAQ,CAAC25B,YAAY,CAAG,CAC7B,CAAA,IAAI,CAAC35B,QAAQ,CAACyuB,cAAc,CAAG,CAC/B,CAAA,IAAI,CAACzuB,QAAQ,CAACm3B,aAAa,CAAC,IAAI,CAAC5mC,MAAM,CAAE+5H,MAAAA,CAAQG,GAAK5E,CAAAA,UAAAA,CAAY/rI,cAClEvyF,CAAAA,CAAAA,MAAAA,CAAOmxD,SAAS,GAClB,CACA+vK,QAASh2G,CAAAA,aAAa,CAACnyB,IAAK,CAAA,CAAGgqI,MAC/B,CAAA,IAAI,CAAC73G,aAAa,CAAC5sJ,GAAG,CAACgiQ,YAAcuC,CAAAA,MAAAA,CAAAA,CACrC,IAAIvmL,CAAAA,CAAI,EAAGA,CAAI4mL,CAAAA,GAAAA,CAAIltQ,MAAM,CAAEsmF,IAAI,CAC7BzrE,CAAAA,CAAIqyP,GAAG,CAAC5mL,EAAE,CACVzrE,CAAAA,CAAE63H,mBAAmB,CAACrD,YAAasD,CAAAA,kBAAkB,CAAC5P,IAAAA,CAAK,CAAEiqI,OAC7DnyP,CAAAA,CAAAA,CAAEi2H,CAAAA,WAAW,EAAItV,aACnB,CACF,CACA,IAAI,CAACswI,gBAAgB,CAACoB,GAAAA,EACxB,CACA3B,SAAAA,CAAU/F,OAAO,CAAC,IAAI,CAACtgG,cAAc,EACvC,CACF,CACA,IAAI,CAACsnG,mBAAmB,CAACxiO,OAAQm/N,SAAWnjG,CAAAA,SAAAA,CAAAA,CAC5C,IAAI71B,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAOu5H,QAAS1pQ,CAAAA,MAAM,CAAEmwI,IAAO,EAAA,CAAA,CAC3Cu5H,QAAQ,CAACv5H,KAAK,CAACm1H,OAAO,GACxB,CACA,IAAI,CAACkG,aAAa,CAACJ,SAAAA,CAAAA,CACnB,IAAI,CAACM,YAAY,EAAA,CACjB,GAAI,CAAC5uG,wBAAAA,CAA0B,CAC7B,IAAI,CAACoI,cAAc,CAACv8J,KAAK,GAC3B,CACF,CAlrBAb,WAAAA,CAAYkiC,MAAM,CAAEqxG,IAAI,CAAE5W,KAAK,CAAEge,QAAQ,CAAEq1F,MAAM,CAAC,CAChD,IAAI,CAAC9tM,MAAM,CAAGA,MACd,CAAA,IAAI,CAACqxG,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC5W,KAAK,CAAGA,KACb,CAAA,IAAI,CAACge,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACq1F,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC5yE,cAAc,CAAGziB,QAASyiB,CAAAA,cAAc,CAC7C,IAAI,CAACgE,QAAQ,CAAG,IAAIp2J,GACpB,CAAA,IAAI,CAACg2P,WAAW,CAAG,KACnB,CAAA,IAAI,CAACU,aAAa,CAAG,EACrB,CAAA,IAAI,CAACH,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACzsH,GAAG,CAAG,EACX,CAAA,IAAI,CAAC4X,YAAY,CAAG,IAAIp/I,KACxB,CAAA,IAAI,CAAC8/I,aAAa,CAAG,IAAI/sJ,GACzB,CAAA,IAAI,CAACwmK,KAAK,CAAG,CACX1wB,aAAc,CACd+sH,CAAAA,aAAAA,CAAe,CACfH,CAAAA,eAAAA,CAAiB,EACjBjjB,WAAa,CAAA,CAAA,CACbmjB,OAAS,CAAA,CAAA,CACTrjB,cAAe,CACf3iM,CAAAA,WAAAA,CAAa,CACb+lN,CAAAA,aAAAA,CAAe,CACjB,EACF,CA2pBF,CAEA,MAAM4C,SAAkB1lQ,SAAAA,YAAAA,CAgBtB,OAAO2lQ,eAAAA,CAAgB/9M,GAAG,CAAE6wL,MAAM,CAAE,CAClCA,OAAO/zO,OAAO,CAAC,UAACkhQ,EAAAA,CACd,MAAMvqQ,IAAAA,CAAO,OAAOuqQ,UAAAA,GAAe,SAAWA,UAAWvqQ,CAAAA,IAAI,CAAGuqQ,UAAAA,CAChEhsQ,OAAOC,cAAc,CAAC+tD,GAAKvsD,CAAAA,IAAAA,CAAM,CAC/BvB,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAACiY,IAAI,CAAC1W,IAAAA,CAAK,CAExBiF,CAAAA,GAAAA,CAAK,SAASZ,KAAK,EACjB,MAAMqS,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAW3gN,CAAAA,IAAI,CAAC1W,IAAAA,CAAK,CAC3B0W,IAAI,CAAC1W,IAAAA,CAAK,CAAGqE,KAAAA,CACb,IAAI,CAACuB,IAAI,CAAC,KAAA,CAAO5F,KAAMq3N,QAAUhzN,CAAAA,KAAAA,EACnC,CACAmmQ,CAAAA,YAAAA,CAAc,IAChB,CAAA,EACF,CACAj+M,CAAAA,CAAAA,IAAIk+M,eAAe,CAAG,KACxB,CACAC,eAAettB,MAAM,CAAE,CACrBitB,SAAAA,CAAUC,eAAe,CAAC,IAAI,CAAEltB,MAAAA,EAClC,CACAutB,YAAAA,CAAa3qQ,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACrC,GAAI47E,QAAa57E,GAAAA,QAAAA,CAAU,CACzB,GAAI,IAAI,CAACnY,MAAM,CAAC/zH,OAAO,CAAE,CACvB,GAAIksI,QAAAA,CAAU,CACZ,IAAI,CAACtzC,QAAQ,GACf,CAAO,KAAA,CACL,IAAI,CAACC,SAAS,GAChB,CACF,CACF,CACF,CACAD,QAAAA,EAAW,EACXC,WAAY,EACZ63I,iBAAoB,EAAA,EACpB,IAAIvpO,IAAAA,EAAO,CACT,MAAMk0P,OAAS,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAG,CAAA,CACvD,OAAOmrB,MAASA,CAAAA,MAAAA,CAAOl0P,IAAI,CAAG,IAChC,CACA,IAAInH,OAAQyH,CAAAA,GAAG,CAAE,EACjB,IAAIzH,SAAU,CACZ,OAAO,IACT,CAtDA9K,YAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,EACL,CAAA,IAAI,CAACm1G,MAAM,CAAGA,MACd,CAAA,IAAI,CAACn1G,MAAM,CAAGA,OACd,GAAI,IAAI,CAACm1G,MAAM,CAAC2E,MAAM,EAAI,CAAC,IAAI,CAACqtB,eAAe,CAAE,CAC/C,IAAI,CAACC,cAAc,CAAC,IAAI,CAACjyB,MAAM,CAAC2E,MAAM,EACxC,CACA,IAAI,CAACr5O,EAAE,CAAC,KAAO,CAAA,SAAS/D,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAC9C,CAAA,IAAI,CAAC71I,IAAI,CAAC,CAAC,IAAI,EAAE5F,IAAK,CAAA,CAAC,CAAEA,IAAAA,CAAMq3N,QAAU57E,CAAAA,QAAAA,EAC3C,CACA,CAAA,CAAA,IAAI,CAAC13I,EAAE,CAAC,aAAe,CAAA,IAAI,CAAC4mQ,YAAY,CAAE,IAAI,EAChD,CA4CF,CA3DMN,SAEG9pF,CAAAA,KAAK,CAAG,CA2DjB,CAAMsqF,MAAAA,eAAAA,SAAwBlmQ,aAO5Bu6O,YAAa57G,CAAAA,MAAM,CAAE5sH,IAAAA,CAAO,EAAE,CAAE,CAC9B,MAAMonO,SAAY,CAAA,IAAI,IAAI,CAACgtB,aAAa,CAAC,IAAI,CAAExnI,QAC/C,MAAMynI,aAAAA,CAAgB,IAAI,IAAI,CAACC,QAC/B,CAAA,IAAI,CAAC96M,KAAK,CAACozE,MAAOm8G,CAAAA,OAAO,EAAG,CAAA,CAAG,CAC7Bn8G,MAAAA,CAAQA,OACR5sH,IAAMq0P,CAAAA,aACR,CACAznI,CAAAA,MAAM,CAAC,IAAI,CAAC58F,EAAE,CAAC,CAAGo3M,SAClBx6G,CAAAA,MAAAA,CAAOvnI,CAAC,CAAC,IAAI,CAAC2qC,EAAE,CAAC,CAAGo3M,SACpB,CAAA,IAAI,CAACmtB,uBAAuB,CAACntB,SAAWpnO,CAAAA,IAAAA,CAAM,EAAE,CAChD,CAAA,IAAI,CAAC9Q,IAAI,CAAC,KAAA,CAAO09H,MAAQw6G,CAAAA,SAAAA,CAAAA,CACzB,OAAOA,SACT,CACAqB,eAAgB77G,CAAAA,MAAM,CAAE,CACtB,MAAM58F,EAAK,CAAA,IAAI,CAACA,EAAE,CAClB,MAAMkkO,MAAAA,CAAS,IAAI,CAAC16M,KAAK,CAACozE,OAAOm8G,OAAO,EAAA,CAAG,CAC3C,MAAM3B,UAAYx6G,MAAOvnI,CAAAA,CAAC,CAAC2qC,EAAAA,CAAG,CAC9Bo3M,SAAUl4O,CAAAA,IAAI,CAAC,cAAA,CAAA,CACf,IAAI,CAACA,IAAI,CAAC,eAAgB09H,MAAQw6G,CAAAA,SAAAA,CAClC,CAAO,OAAA,IAAI,CAAC5tL,KAAK,CAACozE,MAAOm8G,CAAAA,OAAO,GAAG,CACnCn8G,MAAM,CAAC58F,EAAG,CAAA,CAAGliC,SACb,CAAA,OAAO8+H,OAAOvnI,CAAC,CAAC2qC,EAAG,CAAA,CACnB,IAAI,CAAC9gC,IAAI,CAAC,QAAA,CAAU09H,OAAQsnI,MAAOl0P,CAAAA,IAAI,EACzC,CACA8pO,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMM,GAAM,CAAA,IAAI,CAAC49C,KAAK,CAACozE,MAAAA,CAAOm8G,OAAO,EAAG,CAAA,CACxC,OAAO,IAAI,CAACP,YAAY,CAACltO,KAAAA,CAAOM,IAAIoE,IAAI,CAC1C,CACAu0P,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAAA,CAAO,EAAE,CAAEmqI,UAAU,CAAE,CACxD,IAAI,IAAInkJ,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMisI,WAAWlkJ,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CACnD,MAAM6tQ,UAAa1pH,CAAAA,UAAU,CAACnkJ,CAAE,CAAA,CAChC,IAAIsD,IAAAA,CAAMmU,IACV,CAAA,GAAI,OAAOo2P,UAAAA,GAAe,SAAU,CAClCvqQ,IAAAA,CAAOuqQ,UAAWvqQ,CAAAA,IAAI,CACtBmU,IAAOo2P,CAAAA,UAAAA,CAAWp2P,KACpB,MAAO,CACLnU,IAAAA,CAAOuqQ,UACPp2P,CAAAA,IAAAA,CAAO3P,UACT,CACA,IAAIH,KAAAA,CAAQqS,IAAI,CAAC1W,IAAAA,CAAK,CACtB,GAAIqE,KAAUG,GAAAA,SAAAA,CAAW,CACvB,GAAI2P,OAAS3P,SAAW,CAAA,CACtBH,KAAQ6mQ,CAAAA,YAAAA,CAAa7mQ,KAAO8P,CAAAA,IAAAA,EAC9B,CACA2pO,SAAS,CAAC99O,IAAK,CAAA,CAAGqE,MACpB,CAAA,KAAO,CACLy5O,SAAS,CAAC99O,IAAK,CAAA,CAAG89O,UAAUpnO,IAAI,CAAC1W,IAAK,EACxC,CACF,CACA,GAAI89O,SAAAA,CAAUvuO,OAAO,EAAIuuO,SAAAA,CAAUx6G,MAAM,CAAC/zH,OAAO,CAAE,CACjDuuO,SAAU31I,CAAAA,QAAQ,GACpB,CACF,CACA+4I,mBAAoB/sO,CAAAA,IAAI,CAAE,CACxB,MAAMg3P,kBAAAA,CAAqB,EAAE,CAC7B,MAAM/tB,MAAS,CAAA,IAAI,CAACA,MAAM,EAAI,EAAE,CAChCA,OAAO/zO,OAAO,CAAC,UAACkhQ,EAAAA,CACd,GAAIA,UAAAA,EAAc,OAAOA,UAAAA,GAAe,UAAYA,UAAWp2P,CAAAA,IAAI,GAAKA,IAAAA,CAAM,CAC5Eg3P,kBAAAA,CAAmB3tQ,IAAI,CAAC+sQ,YAC1B,CACF,CAAA,CAAA,CACA,OAAOY,kBACT,CACAtlO,OAAAA,EAAU,CACR,IAAI,CAACliC,GAAG,GACV,CAvEAc,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,EACL,CAAA,IAAI,CAACA,GAAG,CAAGA,GACX,CAAA,IAAI,CAACx8K,KAAK,CAAG,EACb,CAAA,IAAI,CAACktL,MAAM,CAAG,GAAE,CAoEpB,CACA,SAAS8tB,YAAAA,CAAa7mQ,KAAK,CAAE8P,IAAI,CAAA,CAC/B,GAAI,CAAC9P,KAAAA,CAAO,CACV,OAAOA,KACT,CACA,OAAO8P,IACL,EAAA,IAAK,MACH,GAAI9P,KAAAA,YAAiB0N,KAAO,CAAA,CAC1B,OAAO1N,KAAAA,CAAM2N,KAAK,EACpB,CACA,OAAO,IAAID,KAAM1N,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CAC/C,CAAA,IAAK,MACH,CAAA,GAAIA,iBAAiB0N,KAAO,CAAA,CAC1B,OAAO1N,KAAAA,CAAM2N,KAAK,EACpB,CACA,OAAO,IAAID,MAAM1N,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CACzD,CAAK,IAAA,MAAA,CACH,GAAIA,KAAiBka,YAAAA,IAAAA,CAAM,CACzB,OAAOla,KAAM2N,CAAAA,KAAK,EACpB,CACA,OAAO,IAAIuM,IAAAA,CAAKla,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CACpC,CAAK,IAAA,MAAA,CACH,GAAIA,KAAAA,YAAiBsU,IAAM,CAAA,CACzB,OAAOtU,KAAAA,CAAM2N,KAAK,EACpB,CACA,OAAO,IAAI2G,IAAKtU,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAE,CAAA,CAC9C,KAAK,MACH,CAAA,GAAIA,KAAiBwa,YAAAA,IAAAA,CAAM,CACzB,OAAOxa,KAAAA,CAAM2N,KAAK,EACpB,CACA,OAAO,IAAI6M,IAAKxa,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CACxD,CAAK,IAAA,SAAA,CACL,IAAK,QAAA,CACL,IAAK,QAAA,CACH,OAAOA,KACT,KAAK,QACH,CAAA,OAAOA,KACT,CAAA,QACE,MAAM,IAAIuC,KAAAA,CAAM,CAAC,kCAAkC,EAAEuN,IAAK,CAAA,CAAC,CAC/D,CACF,CAEA,MAAMi3P,kBAAqB,CAAA,CAAA,CAC3B,MAAMC,oBAAuB,CAAA,CAAA,CAC7B,MAAMC,mBAAAA,CAAsB,CAE5B,CAAMC,MAAAA,SAAAA,CAiBJz7N,MAAOh8B,CAAAA,IAAI,CAAE03P,KAAK,CAAE,CAClB,GAAI13P,IAAO,CAAA,IAAI,CAACE,KAAK,EAAIF,IAAQ,EAAA,IAAI,CAACG,MAAM,CAAE,CAC5C,MAAMW,GAAM42P,CAAAA,KAAAA,CAAM7uQ,MAAM,CACxB,GAAI,CAACiY,GAAAA,CAAK,CACR,IAAI,CAACZ,KAAK,CAAG,CAACa,QACd,CAAA,IAAI,CAACZ,MAAM,CAAGY,QACd,CAAA,IAAI,CAAC42P,IAAI,CAAG,CACZ,CAAA,IAAI,CAACn3P,MAAM,CAAG,CACd,CAAA,IAAI,CAACD,GAAG,CAAG,IAAI,CAACE,GAAG,CAAG,EACxB,CAAA,KAAO,CACL,GAAIT,IAAO03P,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAE,CACnB,IAAI,CAACx3P,KAAK,CAAG,CAACa,QACd,CAAA,IAAI,CAACZ,MAAM,CAAGu3P,KAAK,CAAC,CAAA,CAAE,CACtB,IAAI,CAACC,IAAI,CAAG,CACZ,CAAA,IAAI,CAACn3P,MAAM,CAAG,CACd,CAAA,IAAI,CAACD,GAAG,CAAG,IAAI,CAACE,GAAG,CAAG,EACxB,CAAA,KAAO,GAAIT,IAAAA,EAAQ03P,KAAK,CAAC52P,GAAAA,CAAM,CAAE,CAAA,CAAE,CACjC,IAAI,CAACZ,KAAK,CAAGw3P,KAAK,CAAC52P,GAAM,CAAA,CAAA,CAAE,CAC3B,IAAI,CAACX,MAAM,CAAGY,QACd,CAAA,IAAI,CAAC42P,IAAI,CAAG,CACZ,CAAA,IAAI,CAACn3P,MAAM,CAAG,CACd,CAAA,IAAI,CAACD,GAAG,CAAG,IAAI,CAACE,GAAG,CAAGK,GAAAA,CAAM,EAC9B,CAAO,KAAA,CACL,MAAMrS,KAAAA,CAAQ,IAAI,CAACmpQ,QAAQ,CAAC53P,KAAM03P,KAClC,CAAA,CAAA,IAAI,CAACx3P,KAAK,CAAGw3P,KAAK,CAACjpQ,KAAAA,CAAM,CACzB,IAAI,CAAC0R,MAAM,CAAGu3P,KAAK,CAACjpQ,KAAAA,CAAQ,EAAE,CAC9B,IAAI,CAACkpQ,IAAI,CAAG,IAAI,CAACx3P,MAAM,CAAG,IAAI,CAACD,KAAK,CACpC,MAAM1C,IAAAA,CAAO,CAAM,CAAA,IAAI,CAACm6P,IACxB,CAAA,IAAI,CAACn3P,MAAM,CAAGQ,QAASxD,CAAAA,IAAAA,CAAAA,CAAQA,KAAO,CACtC,CAAA,IAAI,CAAC+C,GAAG,CAAG9R,KACX,CAAA,IAAI,CAACgS,GAAG,CAAGhS,KAAAA,CAAQ,EACrB,CACF,CACF,CACA,IAAI,CAACopQ,EAAE,CAAG,IAAI,CAACr3P,MAAM,GAAK,CAAA,CAAI,EAAI,CAACR,IAAO,CAAA,IAAI,CAACE,KAAI,EAAK,IAAI,CAACM,MAC7D,CAAA,IAAI,CAACs3P,QAAQ,CAAC33H,KAAK,CAAG,MACxB,CACAy3H,QAAS53P,CAAAA,IAAI,CAAE03P,KAAK,CAAE,CACpB,IAAIjpQ,MAAQ,CACZ,CAAA,MAAMuR,IAAQ03P,EAAAA,KAAK,CAACjpQ,KAAAA,CAAQ,CAAE,CAAA,CAAC,CAC7BA,KACF,GAAA,CACA,OAAOA,KACT,CACA6kO,IAAK3qO,CAAAA,MAAM,CAAEovQ,aAAa,CAAE3oQ,MAAM,CAAE,CAClC,MAAMwT,IAAOxT,CAAAA,MAAAA,CAAOmvO,KAAK,CACzB,MAAM/4E,IAAOp2J,CAAAA,MAAAA,CAAOy6O,WAAW,CAC/B,MAAMmuB,IAAAA,CAAO,IAAI,CAACz3P,GAAG,CAAGilJ,IAAAA,CACxB,GAAIuyG,aAAAA,GAAkBT,kBAAoB,CAAA,CACxC,IAAI,IAAI1uQ,EAAI,CAAGA,CAAAA,CAAAA,CAAI48J,IAAM,CAAA,EAAE58J,EAAE,CAC3BD,MAAM,CAACC,CAAAA,CAAE,CAAGga,IAAI,CAACo1P,IAAOpvQ,CAAAA,CAAAA,EAAE,CAE9B,CAAO,KAAA,CACL,MAAM8Q,CAAI,CAAA,IAAI,CAACm+P,EAAE,CACjB,MAAMI,IAAAA,CAAO,IAAI,CAACx3P,GAAG,CAAG+kJ,IAAAA,CACxB,OAAOuyG,aAAAA,EACL,KAAKR,oBAAAA,CACH,IAAI,IAAI3uQ,EAAI,CAAGA,CAAAA,CAAAA,CAAI48J,IAAM,CAAA,EAAE58J,EAAE,CAC3BD,MAAM,CAACC,CAAAA,CAAE,CAAGqT,IAAKY,CAAAA,IAAI,CAAC+F,IAAI,CAACo1P,IAAAA,CAAOpvQ,CAAE,CAAA,CAAEga,IAAI,CAACq1P,IAAAA,CAAOrvQ,CAAE,CAAA,CAAE8Q,CACxD,EAAA,CACA,MACF,KAAK89P,oBACH,CACE,MAAMU,OAAU,CAAA,IAAI,CAACJ,QAAQ,CAC7B,GAAI,CAACI,OAAQ/3H,CAAAA,KAAK,CAAE,CAClB,MAAMr+H,EAAKpI,CAAAA,CAAAA,CAAIA,CACf,CAAA,MAAMqI,KAAOrI,CAAIA,CAAAA,CAAAA,CACjB,MAAMsI,GAAAA,CAAM,CAAItI,CAAAA,CAAAA,CAChB,MAAMuI,IAAAA,CAAOD,IAAMA,GACnBk2P,CAAAA,OAAQ/3H,CAAAA,KAAK,CAAG,IAChB+3H,CAAAA,OAAQx2P,CAAAA,EAAE,CAAG,CAAC,CAAIK,CAAAA,IAAG,EAAKE,IAC1Bi2P,CAAAA,OAAAA,CAAQt2P,EAAE,CAAGlI,CAAAA,CAAIuI,IACjBi2P,CAAAA,QAAQv2P,EAAE,CAAGG,EAAM,EAAA,EAAIC,IAAG,CAC1Bm2P,CAAAA,OAAAA,CAAQr2P,EAAE,CAAGC,EAAMpI,EAAAA,EAAI,CAAA,EACzB,CACA,MAAMgI,GAAK,CAAC,IAAI,CAACnB,GAAG,CAAG,CAAA,CAAI,CAAA,EAAKilJ,IAChC,CAAA,MAAM5jJ,EAAK,CAAC,CAAA,IAAI,CAACrB,GAAG,CAAG,EAAI,CAAA,EAAKilJ,IAChC,CAAA,MAAM7jJ,GAAK,CAAC,IAAI,CAAClB,GAAG,CAAG,CAAI,CAAA,CAAA,EAAK+kJ,IAChC,CAAA,MAAM3jJ,EAAK,CAAC,CAAA,IAAI,CAACpB,GAAG,CAAG,EAAI,CAAA,EAAK+kJ,IAChC,CAAA,IAAI,IAAI58J,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI48J,KAAM,EAAE58J,CAAAA,CAAE,CAC3BD,MAAM,CAACC,CAAE,CAAA,CAAGsvQ,OAAQx2P,CAAAA,EAAE,CAAGkB,IAAI,CAAClB,EAAK9Y,CAAAA,CAAAA,CAAE,CAAGsvQ,OAAAA,CAAQt2P,EAAE,CAAGgB,IAAI,CAAChB,EAAAA,CAAKhZ,CAAE,CAAA,CAAG,IAAI,CAAC+uQ,IAAI,CAAGO,QAAQv2P,EAAE,CAAGiB,IAAI,CAACjB,EAAK/Y,CAAAA,CAAAA,CAAE,CAAGsvQ,OAAAA,CAAQr2P,EAAE,CAAGe,IAAI,CAACf,EAAAA,CAAKjZ,EAAE,CAAG,IAAI,CAAC+uQ,KAAI,CAEnJ,KACF,CACJ,CACF,CACF,CAtGAhnQ,WAAa,EAAA,CACX,IAAI,CAACuP,KAAK,CAAGa,QACb,CAAA,IAAI,CAACZ,MAAM,CAAG,CAACY,QACf,CAAA,IAAI,CAAC42P,IAAI,CAAG,CACZ,CAAA,IAAI,CAACn3P,MAAM,CAAG,CACd,CAAA,IAAI,CAACD,GAAG,CAAG,CACX,CAAA,IAAI,CAACE,GAAG,CAAG,CACX,CAAA,IAAI,CAACo3P,EAAE,CAAG,CACV,CAAA,IAAI,CAACC,QAAQ,CAAG,CACd33H,MAAO,KACPz+H,CAAAA,EAAAA,CAAI,CACJE,CAAAA,EAAAA,CAAI,CACJD,CAAAA,EAAAA,CAAI,CACJE,CAAAA,EAAAA,CAAI,CACN,EACF,CAwFF,CAEA,MAAMs2P,aACJxnQ,WAAYynQ,CAAAA,SAAS,CAAC,CACpB,IAAI,CAAC3kK,KAAK,CAAG,CAAC,EAAE2kK,SAAAA,CAAUlsQ,IAAI,CAAC,QAAQ,CACvC,CAAA,IAAI,CAAC49M,KAAK,CAAG,CAAC,CACd,CAAA,IAAI,CAACx2K,MAAM,CAAG,EACd,CAAA,IAAI,CAAC+kO,QAAQ,CAAG,EAAE,CAClB,IAAI,IAAIzvQ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIwvQ,UAAUE,OAAO,CAACzvQ,MAAM,CAAE,EAAED,CAAAA,CAAE,CAC/C,IAAI,CAAC0qC,MAAM,CAAC1qC,CAAE,CAAA,CAAG,IAAI6uQ,UACvB,CACA,MAAM30P,OAASs1P,SAAUG,CAAAA,OAAO,CAChC,MAAMC,OAAUJ,CAAAA,SAAAA,CAAUK,QAAQ,CAClC,IAAI,IAAI7vQ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIka,OAAOja,MAAM,CAAE,EAAED,CAAAA,CAAE,CACpC,MAAMsZ,KAAAA,CAAQY,MAAM,CAACla,CAAE,CAAA,CACvB,MAAMwG,MAAAA,CAASopQ,OAAO,CAACt2P,KAAAA,CAAMw2P,OAAO,CAAC,CACrC,MAAM/gO,OAAAA,CAAU,EAAE,CAClB,IAAI,IAAIw3C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI//E,MAAOy6O,CAAAA,WAAW,CAAE,EAAE16J,EAAE,CACzCx3C,OAAO,CAACw3C,CAAAA,CAAE,CAAG,EACf,CACA,IAAI,CAACkpL,QAAQ,CAACzvQ,CAAAA,CAAE,CAAG+uC,QACrB,CACF,CACF,CAEA,MAAMghO,SAqBJ,IAAIzsQ,IAAAA,CAAKA,IAAI,CAAE,CACb,IAAI,CAACunG,KAAK,CAAGvnG,KACf,CACA,IAAIA,IAAO,EAAA,CACT,OAAO,IAAI,CAACunG,KAAK,CAEnB,IAAImlK,KAAMA,CAAAA,KAAK,CAAE,CACf,IAAI,CAACC,MAAM,CAAGD,KACd,CAAA,IAAI,CAACE,SAAS,CAAG,IAAIX,YAAAA,CAAaS,OACpC,CACA,IAAIA,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAIE,QAAAA,EAAW,CACb,OAAO,IAAI,CAACD,SACd,CACA,IAAI94P,IAAAA,CAAKA,IAAI,CAAE,CACb,IAAI,CAAC8pM,KAAK,CAAG9pM,KACb,IAAI,CAACg5P,wBAAwB,GAC/B,CACA,IAAIh5P,IAAO,EAAA,CACT,OAAO,IAAI,CAAC8pM,KACd,CACA,IAAImvD,KAAMA,CAAAA,KAAK,CAAE,CACf,MAAMC,WAAc/wQ,CAAAA,IAAAA,CAAKk0L,IAAI,CAAC48E,KAAW9wQ,CAAAA,GAAAA,IAAAA,CAAKk0L,IAAI,CAAC,IAAI,CAAC88E,MAAM,CAC9D,CAAA,IAAI,CAACA,MAAM,CAAGF,KACd,CAAA,GAAIC,WAAa,CAAA,CACf,IAAI,CAACF,wBAAwB,GAC/B,CACF,CACA,IAAIC,KAAQ,EAAA,CACV,OAAO,IAAI,CAACE,MACd,CACA,IAAIhiJ,IAAAA,CAAKA,IAAI,CAAE,CACb,IAAI,CAACC,KAAK,CAAGD,KACf,CACA,IAAIA,IAAAA,EAAO,CACT,OAAO,IAAI,CAACC,KAAK,CAEnB,IAAIgiJ,WAAYA,CAAAA,WAAW,CAAE,CAC3B,IAAI,CAACC,YAAY,CAAGD,YACtB,CACA,IAAIA,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIC,UAAWA,CAAAA,UAAU,CAAE,CACzB,IAAI,CAACC,WAAW,CAAGD,WACrB,CACA,IAAIA,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIC,WAAAA,CAAYjpQ,KAAK,CAAE,CACrB,IAAI,CAACkpQ,YAAY,CAAGlpQ,MACtB,CACA,IAAIipQ,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIC,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,SAAS,CAAG,EAAI,IAAI,CAACd,MAAM,CAACe,MAAM,CAAC/wQ,MAAM,CAAG,CAC1D,CACA,IAAIgxQ,SAAY,EAAA,CACd,OAAO,IAAI,CAAChB,MAAM,CAACe,MAAM,CAAC,IAAI,CAACH,YAAY,CAC7C,CACA,IAAIE,SAAY,EAAA,CACd,OAAO,IAAI,CAACR,MAAM,CAAG,CACvB,CACAW,qBAAqB95P,IAAI,CAAE,CACzB,GAAI,CAAC,IAAI,CAAC65P,SAAS,CAAE,OAAO,KAAA,CAC5B,OAAO,IAAI,CAACF,SAAS,CAAG,IAAI,CAACE,SAAS,CAAC75P,IAAI,EAAIA,IAAAA,CAAO,IAAI,CAAC65P,SAAS,CAAC75P,IAAI,EAAIA,IAC/E,CACA+5P,mBAAAA,CAAoB/5P,IAAI,CAAE,CACxB,GAAI,CAAC,IAAI,CAAC65P,SAAS,CAAE,OAAO,MAC5B,GAAI75P,IAAAA,GAAS,IAAI,CAAC44P,KAAK,CAACt9K,QAAQ,CAAE,CAChC,OAAO,IAAI,CAACq+K,SAAS,CAAG,IAAI,CAACE,SAAS,CAAC75P,IAAI,EAAIA,IAAAA,CAAO,IAAI,CAAC65P,SAAS,CAAC75P,IAAI,EAAIA,IAC/E,CACA,OAAO,IAAI,CAAC25P,SAAS,CAAG,IAAI,CAACE,SAAS,CAAC75P,IAAI,CAAGA,IAAO,CAAA,IAAI,CAAC65P,SAAS,CAAC75P,IAAI,CAAGA,IAC7E,CACAg6P,gBAAmB,EAAA,CACjB,IAAI,CAACP,YAAY,CAAG,IAAI,CAACE,SAAS,CAAG,IAAI,CAACd,MAAM,CAACe,MAAM,CAAC/wQ,MAAM,CAAG,CAAA,CAAI,EACvE,CACAoxQ,iBAAkB,CAChB,IAAI,CAACR,YAAY,EAAI,IAAI,CAACE,SAAS,CAAG,CAAC,CAAA,CAAI,CAC3C,CAAA,GAAI,IAAI,CAACF,YAAY,EAAI,IAAI,CAACb,KAAK,CAACgB,MAAM,CAAC/wQ,MAAM,CAAE,CACjD,IAAI,CAAC4wQ,YAAY,CAAG,EACtB,MAAO,GAAI,IAAI,CAACA,YAAY,CAAG,CAAG,CAAA,CAChC,IAAI,CAACA,YAAY,CAAG,IAAI,CAACb,KAAK,CAACgB,MAAM,CAAC/wQ,MAAM,CAAG,EACjD,CACF,CACAqxQ,aAAAA,CAAcC,YAAY,CAAE,CAC1B,MAAMC,UAAAA,CAAazB,SAASyB,UAC5BA,CAAAA,UAAAA,CAAW//O,KAAK,CAAG,CACnB+/O,CAAAA,WAAW9rQ,GAAG,CAAG6rQ,YACjBC,CAAAA,WAAWC,QAAQ,CAAG,CACtB,CAAA,GAAI,IAAI,CAACV,SAAS,CAAE,CAClB,GAAIQ,YAAAA,CAAe,CAAG,CAAA,CACpBC,WAAW//O,KAAK,CAAG,IAAI,CAACu+O,KAAK,CAACt9K,QAAQ,CACtC8+K,WAAW9rQ,GAAG,CAAG,CACjB8rQ,CAAAA,UAAWC,CAAAA,QAAQ,CAAGF,YAAAA,CAAe,IAAI,CAACvB,KAAK,CAACt9K,SAAQ,CAE5D,CAAA,KAAO,CACL,GAAI6+K,aAAe,IAAI,CAACvB,KAAK,CAACt9K,QAAQ,CAAE,CACtC8+K,UAAAA,CAAW//O,KAAK,CAAG,CACnB+/O,CAAAA,UAAAA,CAAW9rQ,GAAG,CAAG,IAAI,CAACsqQ,KAAK,CAACt9K,QAC5B8+K,CAAAA,UAAAA,CAAWC,QAAQ,CAAGF,YAAe,CAAA,IAAI,CAACvB,KAAK,CAACt9K,SAClD,CACF,CACF,CACA09K,wBAA2B,EAAA,CACzB,IAAI,CAACgB,gBAAgB,EACrB,CAAA,MAAM,IAAI,CAACD,mBAAmB,CAAC,IAAI,CAACjwD,KAAK,CAAK,EAAA,IAAI,CAAC2vD,YAAY,GAAK,IAAI,CAACC,cAAc,CAAC,CACtF,IAAI,CAACO,eAAe,GACtB,CACF,CACAK,aAAgB,EAAA,CACd,IAAI,CAACC,aAAa,CAACzoQ,IAAI,CAAC,IAAI,CAAC+nQ,SAAS,CAAC3tQ,IAAI,CAAE,CAC3C0sQ,KAAAA,CAAO,IAAI,CAACA,KAAK,CACjB,GAAG,IAAI,CAACiB,SAAS,CACnB,CAAA,CACA,IAAI,CAACI,eAAe,GACtB,CACAO,oBAAqBC,CAAAA,cAAc,CAAEN,YAAY,CAAE,CACjD,GAAI,IAAI,CAACL,oBAAoB,CAACW,iBAAmB,IAAI,CAACV,mBAAmB,CAACI,cAAe,CACvF,IAAI,CAACG,aAAa,EAClB,CAAA,OAAO,IACT,CACA,OAAO,KACT,CACAI,oBAAqBD,CAAAA,cAAc,CAAEN,YAAY,CAAE,CACjD,MAAMC,WAAazB,QAASyB,CAAAA,UAAU,CACtC,IAAI,CAACF,aAAa,CAACC,YAAAA,CAAAA,CACnB,MAAMQ,aAAgB,CAAA,IAAI,CAACnB,WAAW,CACtC,MAAM,IAAI,CAACgB,oBAAoB,CAACC,cAAgBL,CAAAA,UAAAA,CAAW9rQ,GAAG,CAAA,CAAE,CAC9D,GAAIqsQ,aAAkB,GAAA,IAAI,CAACnB,WAAW,CAAE,CACtC,KACF,CACF,CACA,GAAI,IAAI,CAACriJ,IAAI,EAAIhvH,IAAAA,CAAKma,GAAG,CAAC83P,UAAWC,CAAAA,QAAQ,CAAI,CAAA,CAAA,CAAG,CAClD,IAAI,CAACK,oBAAoB,CAACN,WAAW//O,KAAK,CAAE+/O,UAAWC,CAAAA,QAAQ,EACjE,CACF,CACAO,eAAgB56P,CAAAA,IAAI,CAAE,CACpB,OAAOA,IAAAA,CAAO,IAAI,CAACm5P,MAAM,CAAG,IAAI,CAACN,MAAM,CAACv9K,QAAQ,CAElDm+E,OAAAA,CAAQohG,SAAS,CAAE,CACjB,GAAI,IAAI,CAACC,QAAQ,CAAE,CACjB,IAAI96P,IAAAA,CAAO,IAAI,CAAC8pM,KAAK,CACrB,MAAMxuH,SAAW,IAAI,CAACu9K,MAAM,CAACv9K,QAAQ,CACrC,MAAM29K,KAAAA,CAAQ,IAAI,CAACE,MAAM,CACzB,MAAMhiJ,KAAO,IAAI,CAACC,KAAK,CACvB,GAAI,IAAI,CAACyhJ,MAAM,CAACe,MAAM,CAAC/wQ,MAAM,CAAG,GAAKyyF,QAAW,CAAA,CAAA,CAAG,CACjD,IAAI,CAACo/K,oBAAoB,CAAC16P,IAAMA,CAAAA,IAAAA,CAAOi5P,MAAQ4B,SACjD,EAAA,CACA76P,IAAQi5P,EAAAA,KAAAA,CAAQ4B,SAChB,CAAA,GAAI5B,KAAS,EAAA,CAAA,CAAG,CACd,GAAIj5P,IAAAA,CAAOs7E,QAAU,CAAA,CACnB,GAAI67B,IAAM,CAAA,CACRn3G,IAAOA,CAAAA,IAAAA,CAAOs7E,UAAY,EAC5B,CAAA,KAAO,CACLt7E,IAAAA,CAAO,IAAI,CAAC64P,MAAM,CAACv9K,QAAQ,CAC3B,IAAI,CAACs9B,KAAK,GACZ,CACF,CACF,CAAO,KAAA,CACL,GAAI54G,IAAO,CAAA,CAAA,CAAG,CACZ,GAAIm3G,IAAM,CAAA,CACRn3G,IAAOs7E,CAAAA,QAAAA,EAAYt7E,IAAOs7E,CAAAA,QAAAA,EAAY,CAAA,EACxC,MAAO,CACLt7E,IAAAA,CAAO,CACP,CAAA,IAAI,CAAC44G,KAAK,GACZ,CACF,CACF,CACA,IAAI,CAACkxF,KAAK,CAAG9pM,KACf,CACA,GAAI,IAAI,CAAC8pM,KAAK,GAAK,IAAI,CAACgvD,SAAS,CAAChvD,KAAK,CAAE,CACvC,IAAI,CAAC+uD,MAAM,CAACvlC,IAAI,CAAC,IAAI,CAACxpB,KAAK,CAAE,IAAI,CAACgvD,SAAS,EAC7C,CACF,CACAriJ,IAAO,EAAA,CACL,IAAI,CAACqkJ,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAChxD,KAAK,CAAG,EACf,CACAvzF,IAAO,EAAA,CACL,IAAI,CAACukJ,QAAQ,CAAG,KAChB,CAAA,IAAI,CAAChxD,KAAK,CAAG,EACf,CACAlxF,KAAQ,EAAA,CACN,IAAI,CAACkiJ,QAAQ,CAAG,MAClB,CACAjmJ,MAAS,EAAA,CACP,IAAI,CAACimJ,QAAQ,CAAG,KAClB,CACAvkQ,OAAQ,CACN,IAAI,CAACuzM,KAAK,CAAG,EACf,CA/MAn5M,WAAYioQ,CAAAA,KAAK,CAAE54P,IAAI,CAAEi5P,KAAK,CAAE8B,OAAO,CAAE5jJ,IAAI,CAAE6jJ,YAAY,CAAC,CAC1D,IAAI,CAACvnK,KAAK,CAAGmlK,KAAAA,CAAM1sQ,IACnB,CAAA,IAAI,CAAC2sQ,MAAM,CAAGD,KACd,CAAA,IAAI,CAACE,SAAS,CAAG,IAAIX,YAAaS,CAAAA,KAAAA,CAClC,CAAA,IAAI,CAACkC,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAACjxD,KAAK,CAAG9pM,IACb,CAAA,IAAI,CAACm5P,MAAM,CAAGF,KACd,CAAA,IAAI,CAAC7hJ,KAAK,CAAGD,IACb,CAAA,IAAI,CAACkiJ,YAAY,CAAG,CACpB,CAAA,IAAI,CAACE,WAAW,CAAG,CACnB,CAAA,IAAI,CAACgB,aAAa,CAAGS,YACrB,CAAA,IAAI,CAAChC,wBAAwB,GAC/B,CAoMF,CAtNI,QAFEL,CAEGyB,UAAU,CAAG,CAChB//O,KAAO,CAAA,CAAA,CACP/rB,GAAK,CAAA,CAAA,CACL+rQ,QAAU,CAAA,CACZ,CAoNJ,CAAA,MAAMY,uBAAyB,MAC/B,CAAA,MAAMC,sBAAyB,CAAA,YAAA,CAC/B,MAAMC,sBAAAA,CAAyB,YAC/B,CAAA,MAAMC,4BAA8B,uBACpC,CAAA,MAAMC,2BAA8B,CAAA,uBAAA,CACpC,MAAMC,iBAAoB,CAAA,cAAA,CAC1B,MAAMC,cAAAA,CAAiB,YACvB,MAAMC,0BAAAA,CAA6B,uBACnC,CAAA,MAAMC,uBAA0B,CAAA,oBAAA,CAChC,MAAMC,aAAAA,CAAgB,WACtB,MAAMC,iBAAAA,CAAoB,cAC1B,CAAA,MAAMC,uBAAyB,SAC/B,CAAA,MAAMC,oBAAuB,CAAA,OAAA,CAC7B,MAAMC,sBAAyB,CAAA,SAAA,CAC/B,MAAMC,sBAAAA,CAAyB,SAC/B,CAAA,MAAMC,aAAgB,CAAA,IAAA,CACtB,MAAMC,yBAA4B,CAAA,gBAAA,CAClC,MAAMC,uBAAAA,CAA0B,eAChC,MAAMC,iBAAAA,CAAoB,QAC1B,CAAA,MAAMC,iBAAmB,OACzB,CAAA,MAAMC,cAAiB,CAAA,KAAA,CACvB,MAAMC,cAAAA,CAAiB,KACvB,CAAA,MAAMC,oBAAsB,CAC1BH,gBAAAA,CACAC,cACAC,CAAAA,cAAAA,CACD,CACD,MAAME,oBAAAA,CAAuB,WAC7B,CAAA,MAAMC,oBAAsB,UAE5B,CAAA,MAAMC,SACJ,CAAA,OAAO52P,GAAItN,CAAAA,CAAC,CAAEC,CAAC,CAAE,CACf,MAAMqI,GAAMtI,CAAAA,CAAAA,CAAE3P,MAAM,CACpB,IAAIF,MAAS,CAAA,CAAA,CACb,IAAI,IAAIC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAK,CAAA,EAAElY,CAAE,CAAA,CAC1BD,QAAU6P,CAAC,CAAC5P,CAAE,CAAA,CAAG6P,CAAC,CAAC7P,CAAAA,EAAE,CAEvB,OAAOD,MACT,CACA,OAAOK,SAAAA,CAAUwP,CAAC,CAAE,CAClB,IAAIiP,EAAIi1P,SAAU52P,CAAAA,GAAG,CAACtN,CAAAA,CAAGA,GACzB,GAAIiP,CAAAA,CAAI,CAAG,CAAA,CACTA,EAAI,CAAMtf,CAAAA,IAAAA,CAAKud,IAAI,CAAC+B,CACpB,CAAA,CAAA,MAAM3G,GAAMtI,CAAAA,CAAAA,CAAE3P,MAAM,CACpB,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAK,CAAA,EAAElY,EAAE,CAC1B4P,CAAC,CAAC5P,CAAAA,CAAE,EAAI6e,EACV,CACF,CACF,CACA,OAAOtW,GAAAA,CAAIqH,CAAC,CAAEC,CAAC,CAAE4H,IAAI,CAAE,CACrB,MAAMS,GAAMtI,CAAAA,CAAAA,CAAE3P,MAAM,CACpB,GAAIwX,IAAAA,GAAS,YAAc,CAAA,CACzB,IAAIoH,CAAIi1P,CAAAA,SAAAA,CAAU52P,GAAG,CAACrN,EAAGA,CACzB,CAAA,CAAA,GAAIgP,CAAI,CAAA,CAAA,CAAG,CACTA,CAAI,CAAA,CAAA,CAAMtf,IAAKud,CAAAA,IAAI,CAAC+B,CAAAA,EACtB,CACA,IAAI,IAAI7e,CAAI,CAAA,CAAA,CAAGA,CAAIkY,CAAAA,GAAAA,CAAK,EAAElY,CAAE,CAAA,CAC1B4P,CAAC,CAAC5P,EAAE,CAAG6P,CAAC,CAAC7P,CAAAA,CAAE,CAAG6e,EAChB,CACF,CAAA,KAAO,CACL,IAAI,IAAI7e,CAAI,CAAA,CAAA,CAAGA,EAAIkY,GAAK,CAAA,EAAElY,CAAE,CAAA,CAC1B4P,CAAC,CAAC5P,CAAAA,CAAE,CAAG6P,CAAC,CAAC7P,CAAAA,EAAE,CAEf,CACF,CACA,OAAO+zQ,QAASnkQ,CAAAA,CAAC,CAAEC,CAAC,CAAEiB,CAAC,CAAEkjQ,QAAQ,CAAE,CACjC,MAAMC,EAAAA,CAAKD,QAAW,CAAA,CAAA,CAAM,CAAMljQ,CAAAA,CAAAA,CAClC,MAAMoH,GAAMtI,CAAAA,CAAAA,CAAE3P,MAAM,CACpB,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAK,EAAElY,CAAAA,CAAE,CAC1B4P,CAAC,CAAC5P,CAAAA,CAAE,CAAG4P,CAAC,CAAC5P,CAAE,CAAA,CAAGi0Q,EAAKpkQ,CAAAA,CAAC,CAAC7P,CAAE,CAAA,CAAG8Q,EAC5B,CACF,CACA,OAAOojQ,SAAAA,CAAUtkQ,CAAC,CAAEC,CAAC,CAAEiB,CAAC,CAAEkjQ,QAAQ,CAAE,CAClC,MAAM97P,GAAAA,CAAMtI,CAAE3P,CAAAA,MAAM,CACpB,MAAMg0Q,GAAKD,QAAW,CAAA,CAAA,CAAM,CAAMljQ,CAAAA,CAAAA,CAClC,GAAIgjQ,SAAAA,CAAU52P,GAAG,CAACtN,EAAGC,CAAK,CAAA,CAAA,CAAA,CAAG,CAC3BiB,CAAAA,CAAI,CAACA,EACP,CACA,IAAI,IAAI9Q,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAK,CAAA,EAAElY,CAAE,CAAA,CAC1B4P,CAAC,CAAC5P,EAAE,CAAG4P,CAAC,CAAC5P,CAAAA,CAAE,CAAGi0Q,EAAKpkQ,CAAAA,CAAC,CAAC7P,CAAAA,CAAE,CAAG8Q,EAC5B,CACA,GAAI,CAACkjQ,QAAU,CAAA,CACbF,SAAU1zQ,CAAAA,SAAS,CAACwP,CACtB,EAAA,CACF,CACA,OAAOolC,MAAMplC,CAAC,CAAEC,CAAC,CAAEiB,CAAC,CAAE2G,IAAI,CAAEu8P,QAAQ,CAAE,CACpC,GAAIv8P,IAAAA,GAAS,aAAc,CACzBq8P,SAAAA,CAAUI,SAAS,CAACtkQ,CAAGC,CAAAA,CAAAA,CAAGiB,CAAGkjQ,CAAAA,QAAAA,EAC/B,MAAO,CACLF,SAAAA,CAAUC,QAAQ,CAACnkQ,CAAGC,CAAAA,CAAAA,CAAGiB,CAAGkjQ,CAAAA,QAAAA,EAC9B,CACF,CACA,OAAOG,UAAWvkQ,CAAAA,CAAC,CAAEwkQ,QAAQ,CAAE,CAC7B,MAAMl8P,IAAMtI,CAAE3P,CAAAA,MAAM,CACpB,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAM,CAAG,CAAA,EAAElY,CAAE,CAAA,CAC9B,IAAI,IAAIumF,CAAAA,CAAIvmF,CAAI,CAAA,CAAA,CAAGumF,EAAIruE,GAAK,CAAA,EAAEquE,CAAE,CAAA,CAC9B,GAAI6tL,QAAAA,CAASxkQ,CAAC,CAAC22E,EAAE,CAAE32E,CAAC,CAAC5P,CAAAA,CAAE,EAAG,CACxB,MAAMgR,GAAMpB,CAAAA,CAAC,CAAC5P,CAAE,CAChB4P,CAAAA,CAAC,CAAC5P,CAAAA,CAAE,CAAG4P,CAAC,CAAC22E,CAAE,CACX32E,CAAAA,CAAC,CAAC22E,CAAAA,CAAE,CAAGv1E,IACT,CACF,CACF,CACF,CACF,CAEA,MAAMqjQ,eAAAA,CA6DJ,IAAIC,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACC,UAAU,CAACC,gBACzB,CACAtpF,SAAAA,CAAUrlL,KAAK,CAAE,CACf,GAAI,IAAI,CAAC8sC,KAAK,CAAE,IAAI,CAAC8hO,aAAa,EAAA,CAClC,GAAI,IAAI,CAACH,iBAAiB,EAAI,IAAI,CAACI,WAAW,GAAK,CAAA,EAAK,CAAC,IAAI,CAAC9gO,IAAI,CAAC/tC,KAAAA,CAAM,CAAE,CACzE,OAAO,CACT,CAAA,KAAO,GAAI,IAAI,CAACyuQ,iBAAiB,CAAE,CACjC,OAAO,IAAI,CAAC3nF,OAAO,CAAC9mL,KAAAA,CAAM,CAAG,IAAI,CAAC6uQ,WACpC,CACA,OAAOrhQ,KAAKI,KAAK,CAAC,IAAI,CAACk5K,OAAO,CAAC9mL,KAAAA,CAAM,CAAE,CAAA,CAAG,CAC5C,CAAA,CACA8uQ,eAAgB9uQ,CAAAA,KAAK,CAAE,CACrB,OAAO,IAAI,CAAC0uQ,UAAU,CAAC5vI,MAAM,CAAC9+H,KAAAA,CAAM,CAACk1J,SACvC,CACA65G,OAAAA,CAAQ/uQ,KAAK,CAAE8B,KAAK,CAAE,CACpB,IAAI,CAACisC,IAAI,CAAC/tC,MAAM,CAAG8B,KAAAA,CACnB,GAAI,IAAI,CAAC2sQ,iBAAiB,CAAE,CAC1B,GAAI,IAAI,CAACC,UAAU,CAAC5vI,MAAM,CAAC9+H,KAAAA,CAAM,CAACk1J,SAAS,GAAK64G,oBAAsB,CAAA,CACpE,IAAI,CAAChgO,IAAI,CAAG,IAAI,CAACA,IAAI,CAACo/G,IAAI,CAAC,CAAA,CAAG,EAAGntJ,KACnC,EAAA,CACA,IAAI,CAAC8sC,KAAK,CAAG,KACf,CACF,CACA8hO,aAAgB,EAAA,CACd,IAAI,CAACC,WAAW,CAAG,CACnB,CAAA,IAAI,IAAI10Q,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC2sL,OAAO,CAAC1sL,MAAM,CAAED,IAAI,CAC1C,IAAI,CAAC2sL,OAAO,CAAC3sL,CAAAA,CAAE,CAAG,IAAI,CAACu0Q,UAAU,CAAC5vI,MAAM,CAAC3kI,EAAE,CAAC00J,MAAM,CAClD,IAAI,CAACggH,WAAW,EAAI,IAAI,CAAC9gO,IAAI,CAAC5zC,CAAAA,CAAE,CAAG,IAAI,CAAC2sL,OAAO,CAAC3sL,GAAE,CAEpD,IAAI,CAAC2yC,KAAK,CAAG,MACf,CACAkiO,WAAAA,CAAYhvQ,KAAK,CAAE8B,KAAK,CAAE,CACxB,GAAI,IAAI,CAACmtQ,OAAO,GAAK,CAAG,CAAA,CACtBhB,SAAUvrQ,CAAAA,GAAG,CAAC,IAAI,CAACZ,KAAK,CAAE0sQ,eAAgBU,CAAAA,iBAAiB,CAAE,IAAI,CAACC,SAAS,CAAA,CAC3E,GAAI,CAAC,IAAI,CAACV,iBAAiB,CAAE,CAC3BR,UAAU9+N,KAAK,CAAC,IAAI,CAACrtC,KAAK,CAAE,IAAI,CAACstQ,SAAS,CAAE,CAAA,CAAG,IAAI,CAACD,SAAS,EAC/D,CACF,CACA,GAAI,CAAC,IAAI,CAACphO,IAAI,CAAC/tC,KAAM,CAAA,EAAI,IAAI,CAACqlL,SAAS,CAACrlL,KAAAA,CAAAA,GAAW,CAAG,CAAA,OACtD,GAAI,IAAI,CAAC8uQ,eAAe,CAAC9uQ,SAAWguQ,mBAAuB,EAAA,CAAC,IAAI,CAACS,iBAAiB,CAAE,CAClF,GAAI,IAAI,CAACU,SAAS,GAAKX,eAAAA,CAAgBa,SAAS,CAAE,CAChD,MAAMz1Q,EAAI40Q,eAAgBc,CAAAA,EAAE,CAAC5sQ,GAAG,CAAC,IAAI,CAACZ,KAAK,CAAC,CAAE,CAAA,CAAE,IAAI,CAACA,KAAK,CAAC,CAAA,CAAE,CAAE,IAAI,CAACA,KAAK,CAAC,CAAE,CAAA,CAAE,IAAI,CAACA,KAAK,CAAC,EAAE,CAC3F,CAAA,MAAMytQ,GAAMf,CAAAA,eAAAA,CAAgBgB,EAAE,CAAC9sQ,GAAG,CAAC,IAAI,CAAC0sQ,SAAS,CAAC,CAAE,CAAA,CAAE,IAAI,CAACA,SAAS,CAAC,EAAE,CAAE,IAAI,CAACA,SAAS,CAAC,CAAE,CAAA,CAAE,IAAI,CAACA,SAAS,CAAC,CAAA,CAAE,CAC7G,CAAA,MAAMK,GAAMjB,CAAAA,eAAAA,CAAgBkB,EAAE,CAAChtQ,GAAG,CAACZ,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CACzE,CAAA,MAAM6tQ,GAAKJ,GAAIrvP,CAAAA,MAAM,EAAGzI,CAAAA,GAAG,CAACg4P,GAC5BE,CAAAA,CAAAA,EAAAA,CAAGxrP,KAAK,CAACnC,KAAKjG,QAAQ,CAAE4zP,EAAI,CAAA,IAAI,CAACtqF,SAAS,CAACrlL,KAAAA,CAAAA,CAAAA,CAC3CpG,EAAE6d,GAAG,CAACk4P,EACNnB,CAAAA,CAAAA,gBAAgBoB,OAAO,CAAC,CAAE,CAAA,CAAGh2Q,EAAE4U,CAC/BggQ,CAAAA,eAAAA,CAAgBoB,OAAO,CAAC,CAAE,CAAA,CAAGh2Q,EAAEsc,CAC/Bs4P,CAAAA,eAAAA,CAAgBoB,OAAO,CAAC,CAAA,CAAE,CAAGh2Q,CAAAA,CAAEyc,CAAC,CAChCm4P,eAAgBoB,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAGh2Q,CAAAA,CAAE8f,CAAC,CAChCu0P,SAAAA,CAAUvrQ,GAAG,CAAC,IAAI,CAACZ,KAAK,CAAE0sQ,gBAAgBoB,OAAO,CAAE,IAAI,CAACT,SAAS,EACnE,CAAO,KAAA,CACLX,gBAAgBqB,MAAM,CAAC,CAAE,CAAA,CAAG/tQ,KAAK,CAAC,CAAA,CAAE,CAAG,IAAI,CAACstQ,SAAS,CAAC,CAAE,CACxDZ,CAAAA,eAAAA,CAAgBqB,MAAM,CAAC,EAAE,CAAG/tQ,KAAK,CAAC,CAAA,CAAE,CAAG,IAAI,CAACstQ,SAAS,CAAC,EAAE,CACxDZ,eAAgBqB,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAG/tQ,KAAK,CAAC,CAAE,CAAA,CAAG,IAAI,CAACstQ,SAAS,CAAC,CAAA,CAAE,CACxDnB,SAAAA,CAAU9+N,KAAK,CAAC,IAAI,CAACrtC,KAAK,CAAE0sQ,eAAAA,CAAgBqB,MAAM,CAAE,IAAI,CAACxqF,SAAS,CAACrlL,KAAAA,CAAAA,CAAQ,IAAI,CAACmvQ,SAAS,CAAE,IAAA,EAC7F,CACF,CAAO,KAAA,CACLlB,SAAU9+N,CAAAA,KAAK,CAAC,IAAI,CAACrtC,KAAK,CAAEA,KAAO,CAAA,IAAI,CAACujL,SAAS,CAACrlL,KAAQ,CAAA,CAAA,IAAI,CAACmvQ,SAAS,EAC1E,CACA,GAAI,IAAI,CAACW,MAAM,CAAE,IAAI,CAACA,MAAM,CAAC,IAAI,CAAChuQ,KAAK,EACzC,CACAiuQ,MAAAA,EAAS,CACP,GAAI,IAAI,CAACD,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAC,IAAI,CAACV,SAAS,EAC5B,CACF,CA1FAltQ,WAAYq5O,CAAAA,SAAS,CAAE3pO,IAAI,CAAC,CAC1B,IAAI,CAAC88P,UAAU,CAAGnzB,SAClB,CAAA,IAAI,CAACxtM,IAAI,CAAG,IAAItW,SAAAA,CAAU8jN,SAAUz8G,CAAAA,MAAM,CAAC1kI,MAAM,CACjD,CAAA,IAAI,CAAC0sL,OAAO,CAAG,IAAI9yK,YAAaunO,CAAAA,SAAAA,CAAUz8G,MAAM,CAAC1kI,MAAM,CACvD,CAAA,IAAI,CAACy0Q,WAAW,CAAG,CACnB,CAAA,IAAI,CAACI,OAAO,CAAG,CACf,CAAA,IAAI,CAACv4F,YAAY,CAAG,CACpB,CAAA,IAAI,CAACy4F,SAAS,CAAGv9P,IACjB,CAAA,IAAI,CAACk7B,KAAK,CAAG,IACb,CAAA,IAAI,CAAChrC,KAAK,CAAG8P,IAAS48P,GAAAA,eAAAA,CAAgBa,SAAS,CAAG,CAChD,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CAAG,CACF,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACD,IAAI,CAACD,SAAS,CAAG,IACjB,CAAA,IAAI,CAACU,MAAM,CAAG,KAChB,CAsEF,CAhII,eAFEtB,CAEGa,SAAS,CAAG,YAGjB,CALEb,eAKGwB,CAAAA,SAAS,CAAG,SAGjB,CARExB,eAQGc,CAAAA,EAAE,CAAG,IAAIttP,IAGd,CAXEwsP,eAAAA,CAWGgB,EAAE,CAAG,IAAIxtP,IAGd,CAdEwsP,eAcGkB,CAAAA,EAAE,CAAG,IAAI1tP,IAGd,CAjBEwsP,eAAAA,CAiBGoB,OAAO,CAAG,CACb,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CAtBCpB,eAAAA,CAyBGqB,MAAM,CAAG,CACZ,CAAA,CACA,CACA,CAAA,CAAA,CACD,CA7BCrB,eAAAA,CAgCGU,iBAAiB,CAAG,CACvB,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACD,CA+FCe,MAAAA,aAAAA,CAQJ,IAAIC,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MAAM,CAEpBC,OAAQC,CAAAA,IAAI,CAAE,CACZ,MAAMh4N,OAAAA,CAAU,IAAI,CAACiyF,QAAQ,CAC7B,MAAMgmI,MAAS,CAAA,IAAI,CAACC,OAAO,CAC3B,MAAMl8P,MAAAA,CAASg8P,IAAKlG,CAAAA,KAAK,CAAC91P,MAAM,CAChC,MAAMi2P,QAAAA,CAAW+F,KAAK/F,QAAQ,CAC9B,MAAMkG,MAAAA,CAAS,EAAE,CACjB,MAAMzG,OAAAA,CAAU,EAAE,CAClB,IAAI,IAAI5vQ,CAAAA,CAAI,EAAGA,CAAIka,CAAAA,MAAAA,CAAOja,MAAM,CAAE,EAAED,CAAE,CAAA,CACpC,MAAMsZ,KAAAA,CAAQY,MAAM,CAACla,CAAE,CAAA,CACvB,MAAMs2Q,KAAQh9P,CAAAA,KAAAA,CAAMg9P,KAAK,CACzB,IAAI,IAAI/vL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+vL,MAAMr2Q,MAAM,CAAE,EAAEsmF,CAAAA,CAAE,CACnC,MAAM5mF,IAAO22Q,CAAAA,KAAK,CAAC/vL,CAAE,CAAA,CACrB,MAAMgwL,QAAAA,CAAWJ,OAAO9rO,OAAO,CAAC1qC,IAChC,CAAA,CAAA,IAAIf,OAASs/C,OAAO,CAACq4N,QAAYA,EAAAA,QAAAA,CAASC,UAAU,EAAI,IAAK,CAAA,CAC7D,GAAI,CAAC53Q,MAAAA,EAAU23Q,QAAU,CAAA,CACvB33Q,OAAS,CACPA,MAAAA,CAAQ23Q,QACR5uQ,CAAAA,KAAAA,CAAO,EAAE,CACTuS,MAAAA,CAAQ,CACRu8P,CAAAA,YAAAA,CAAc,CAChB,CAAA,CACA,IAAI,IAAIn1I,EAAI,CAAGA,CAAAA,CAAAA,CAAI1iI,MAAOA,CAAAA,MAAM,CAACk7C,UAAU,CAAE,EAAEwnF,CAAAA,CAAE,CAC/C1iI,MAAO+I,CAAAA,KAAK,CAAC7G,IAAI,CAAC,CAAA,EACpB,CACAo9C,OAAO,CAACq4N,QAASC,CAAAA,UAAU,CAAC,CAAG53Q,OAC/B,GAAIu3Q,MAAAA,CAAOO,aAAa,CAAE,CACxB,GAAI,CAACP,MAAOO,CAAAA,aAAa,CAACx4N,OAAO,CAACq4N,QAAAA,CAASC,UAAU,CAAC,CAAE,CACtD,IAAI/+P,IACJ,CAAA,GAAI8+P,QAASC,CAAAA,UAAU,CAACv1Q,SAAS,CAACs1Q,QAASC,CAAAA,UAAU,CAACv2Q,MAAM,CAAG,EAAA,CAAA,GAAQ,gBAAiB,CACtFwX,IAAAA,CAAO48P,eAAgBa,CAAAA,UAAS,CAC3B,KAAA,CACLz9P,IAAO48P,CAAAA,eAAAA,CAAgBwB,UAAS,CAElCM,MAAOO,CAAAA,aAAa,CAACx4N,OAAO,CAACq4N,QAAAA,CAASC,UAAU,CAAC,CAAG,IAAInC,eAAAA,CAAgB8B,OAAOO,aAAa,CAAEj/P,IAChG,EAAA,CACA0+P,OAAOO,aAAa,CAACx4N,OAAO,CAACq4N,QAASC,CAAAA,UAAU,CAAC,CAACj6F,YAAY,EAC9D45F,CAAAA,MAAAA,CAAOO,aAAa,CAACx4N,OAAO,CAACq4N,QAAAA,CAASC,UAAU,CAAC,CAAC5B,OAAO,CAACuB,MAAOQ,CAAAA,UAAU,CAAE,CAAA,EAC/E,CACF,CACA,GAAI/3Q,MAAQ,CAAA,CACVA,MAAOsb,CAAAA,MAAM,GACbm8P,MAAOv1Q,CAAAA,IAAI,CAACqvQ,QAAAA,CAASV,QAAQ,CAACzvQ,CAAAA,CAAE,CAChC4vQ,CAAAA,OAAAA,CAAQ9uQ,IAAI,CAAClC,MACf,EAAA,CACF,CACF,CACA,IAAI,CAACo3Q,MAAM,CAACl1Q,IAAI,CAACo1Q,IACjB,CAAA,CAAA,IAAI,CAACxG,OAAO,CAAC5uQ,IAAI,CAACu1Q,MAClB,CAAA,CAAA,IAAI,CAACxG,QAAQ,CAAC/uQ,IAAI,CAAC8uQ,OACrB,EAAA,CACAgH,WAAW/wQ,KAAK,CAAE,CAChB,MAAMq4C,QAAU,IAAI,CAACiyF,QAAQ,CAC7B,MAAMgmI,MAAAA,CAAS,IAAI,CAACC,OAAO,CAC3B,MAAML,KAAQ,CAAA,IAAI,CAACC,MAAM,CACzB,MAAME,IAAAA,CAAOH,KAAK,CAAClwQ,KAAAA,CAAM,CACzB,MAAMqU,MAASg8P,CAAAA,IAAAA,CAAKlG,KAAK,CAAC91P,MAAM,CAChC,IAAI,IAAIla,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIka,MAAOja,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CACpC,MAAMsZ,KAAQY,CAAAA,MAAM,CAACla,CAAAA,CAAE,CACvB,MAAMs2Q,KAAAA,CAAQh9P,KAAMg9P,CAAAA,KAAK,CACzB,IAAI,IAAI/vL,CAAI,CAAA,CAAA,CAAGA,EAAI+vL,KAAMr2Q,CAAAA,MAAM,CAAE,EAAEsmF,CAAE,CAAA,CACnC,MAAM5mF,IAAAA,CAAO22Q,KAAK,CAAC/vL,CAAAA,CAAE,CACrB,MAAM3nF,OAAS,IAAI,CAACw3Q,OAAO,CAAC/rO,OAAO,CAAC1qC,IAAAA,CAAAA,CACpC,GAAIf,MAAAA,CAAQ,CACVA,MAAAA,CAAOsb,MAAM,EAAA,CACb,GAAItb,MAAOsb,CAAAA,MAAM,GAAK,CAAA,CAAG,CACvBi8P,MAAOU,CAAAA,SAAS,CAACl3Q,IAAAA,CACjB,QAAOu+C,OAAO,CAACt/C,MAAO43Q,CAAAA,UAAU,CAAC,CACjC,GAAIL,MAAAA,CAAOO,aAAa,CAAE,CACxBP,MAAOO,CAAAA,aAAa,CAACx4N,OAAO,CAACt/C,MAAAA,CAAO43Q,UAAU,CAAC,CAACj6F,YAAY,GAC9D,CACF,CACF,CACF,CACF,CACAw5F,KAAMjtQ,CAAAA,MAAM,CAACjD,KAAAA,CAAO,GACpB,IAAI,CAAC6pQ,OAAO,CAAC5mQ,MAAM,CAACjD,KAAAA,CAAO,CAC3B,CAAA,CAAA,IAAI,CAACgqQ,QAAQ,CAAC/mQ,MAAM,CAACjD,KAAO,CAAA,CAAA,EAC9B,CACAixQ,WAAAA,EAAc,CACZ,MAAM,IAAI,CAACd,MAAM,CAAC/1Q,MAAM,CAAG,CAAE,CAAA,CAC3B,IAAI,CAAC22Q,UAAU,CAAC,GAClB,CACF,CACAG,eAAgBzzQ,CAAAA,IAAI,CAAEksQ,SAAS,CAAE,CAC/B,IAAI,CAACwG,MAAM,CAACrpQ,OAAO,CAAC,IAACupQ,EAAAA,CACnB,GAAIA,IAAAA,CAAK5yQ,IAAI,CAACM,QAAQ,CAACN,IAAAA,CAAAA,CAAO,CAC5B4yQ,IAAAA,CAAKlG,KAAK,CAAGR,UACf,CACF,CAAA,CAAA,CACA,IAAI,CAACwH,MAAM,GACb,CACAC,QAAAA,CAAS3zQ,IAAI,CAAE,CACb,MAAMyyQ,KAAAA,CAAQ,IAAI,CAACC,MAAM,CACzB,IAAI,IAAIh2Q,CAAI,CAAA,CAAA,CAAGA,CAAI+1Q,CAAAA,KAAAA,CAAM91Q,MAAM,CAAE,EAAED,CAAAA,CAAE,CACnC,MAAMk2Q,IAAAA,CAAOH,KAAK,CAAC/1Q,EAAE,CACrB,GAAIk2Q,IAAK5yQ,CAAAA,IAAI,GAAKA,IAAM,CAAA,CACtB,OAAO4yQ,IACT,CACF,CACA,OAAO,IACT,CACAc,MAAS,EAAA,CACP,IAAI,CAACZ,OAAO,CAACY,MAAM,EACnB,CAAA,IAAI,CAAC7mI,QAAQ,CAAG,EAChB,CAAA,MAAM4lI,KAAQ,CAAA,CAAA,GACT,IAAI,CAACA,KAAK,CACd,CACD,IAAI,CAACe,WAAW,EAChBf,CAAAA,KAAAA,CAAMppQ,OAAO,CAAEupQ,IACb,EAAA,CAAA,IAAI,CAACD,OAAO,CAACC,IAAAA,EACf,GACF,CACAgB,UAAAA,CAAWtjO,IAAI,CAAE,CACf,OAAO,IAAI,CAACwiO,OAAO,CAACc,UAAU,CAACtjO,IACjC,CAAA,CACAR,MAAO6+N,CAAAA,SAAS,CAAEkF,eAAAA,CAAkB,IAAI,CAAE,CACxC,MAAMpB,KAAAA,CAAQ,IAAI,CAACC,MAAM,CACzB,MAAMnyF,MAAQkyF,KAAMlvQ,CAAAA,GAAG,CAAC,CAACxH,CAAGW,CAAAA,CAAAA,GAAAA,CAC1B,OAAOA,CACT,GACA8zQ,SAAUK,CAAAA,UAAU,CAACtwF,KAAAA,CAAO,CAACj0K,CAAGC,CAAAA,CAAAA,GAAAA,CAC9B,OAAOkmQ,KAAK,CAACnmQ,CAAE,CAAA,CAAC8gQ,UAAU,CAAGqF,KAAK,CAAClmQ,CAAE,CAAA,CAAC6gQ,UAAU,CAClD,CAAA,CACA,IAAI,IAAI1wQ,CAAI,CAAA,CAAA,CAAGA,CAAI6jL,CAAAA,KAAAA,CAAM5jL,MAAM,CAAE,EAAED,CAAE,CAAA,CACnC,MAAM6F,KAAAA,CAAQg+K,KAAK,CAAC7jL,EAAE,CACtB,MAAMk2Q,IAAOH,CAAAA,KAAK,CAAClwQ,KAAM,CAAA,CACzB,MAAMwwQ,MAAAA,CAAS,IAAI,CAAC3G,OAAO,CAAC7pQ,KAAAA,CAAM,CAClC,MAAM+pQ,OAAU,CAAA,IAAI,CAACC,QAAQ,CAAChqQ,KAAM,CAAA,CACpC,MAAM2qQ,WAAc0F,CAAAA,IAAAA,CAAK1F,WAAW,CACpC,GAAIA,WAAc,CAAA,CAAA,CAAK,CACrB0F,IAAAA,CAAKrlG,OAAO,CAACohG,SACf,EAAA,CACA,GAAI,CAACkF,eAAAA,CAAiB,MACtB,IAAIrI,MACJ,IAAItoQ,MAAAA,CACJ,IAAImB,KAAAA,CACJ,GAAI6oQ,WAAe,EAAA,CAAA,CAAK,CACtB,IAAI,IAAIjqL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI8vL,OAAOp2Q,MAAM,CAAE,EAAEsmF,CAAAA,CAAE,CACpCuoL,KAAQuH,CAAAA,MAAM,CAAC9vL,CAAAA,CAAE,CACjB//E,MAASopQ,CAAAA,OAAO,CAACrpL,CAAAA,CAAE,CACnB5+E,KAAAA,CAAQnB,MAAOmB,CAAAA,KAAK,CACpBmsQ,SAAUvrQ,CAAAA,GAAG,CAACZ,KAAAA,CAAOmnQ,MAAOtoQ,MAAO5H,CAAAA,MAAM,CAAC6Y,IAAI,CAC9CjR,CAAAA,MAAAA,CAAOiwQ,YAAY,GACrB,CACF,CAAA,KAAO,GAAIjG,WAAAA,CAAc,EAAK,CAC5B,IAAI,IAAIjqL,CAAAA,CAAI,EAAGA,CAAI8vL,CAAAA,MAAAA,CAAOp2Q,MAAM,CAAE,EAAEsmF,CAAE,CAAA,CACpCuoL,KAAQuH,CAAAA,MAAM,CAAC9vL,CAAAA,CAAE,CACjB//E,MAAAA,CAASopQ,OAAO,CAACrpL,CAAAA,CAAE,CACnB5+E,KAAAA,CAAQnB,OAAOmB,KAAK,CACpB,GAAInB,MAAAA,CAAOiwQ,YAAY,GAAK,CAAA,CAAG,CAC7B3C,SAAAA,CAAUvrQ,GAAG,CAACZ,KAAOmnQ,CAAAA,KAAAA,CAAOtoQ,OAAO5H,MAAM,CAAC6Y,IAAI,EAChD,CAAO,KAAA,CACLq8P,SAAU9+N,CAAAA,KAAK,CAACrtC,KAAOmnQ,CAAAA,KAAAA,CAAO0B,WAAahqQ,CAAAA,MAAAA,CAAO5H,MAAM,CAAC6Y,IAAI,EAC/D,CACAjR,MAAOiwQ,CAAAA,YAAY,GACrB,CACF,CACF,CACA,MAAMv4N,OAAU,CAAA,IAAI,CAACiyF,QAAQ,CAC7B,MAAMgmI,MAAAA,CAAS,IAAI,CAACC,OAAO,CAC3B,IAAI,MAAMz2Q,IAAAA,IAAQu+C,OAAQ,CAAA,CACxB,GAAIA,OAAQ7xC,CAAAA,cAAc,CAAC1M,IAAAA,CAAAA,CAAO,CAChC,MAAMf,MAAAA,CAASs/C,OAAO,CAACv+C,IAAK,CAAA,CAC5B,GAAIw2Q,MAAAA,CAAOO,aAAa,EAAI93Q,MAAAA,CAAOA,MAAM,CAACw4Q,iBAAiB,CAAE,CAC3D,MAAMC,UAAAA,CAAalB,OAAOO,aAAa,CAACx4N,OAAO,CAACv+C,IAAK,CAAA,CACrD,GAAI03Q,UAAAA,CAAWvC,OAAO,GAAKuC,UAAAA,CAAW96F,YAAY,CAAE,CAClD86F,UAAWvC,CAAAA,OAAO,CAAG,EACvB,CACA,GAAI,CAACuC,UAAW13Q,CAAAA,IAAI,CAAE,CACpB03Q,UAAW13Q,CAAAA,IAAI,CAAGA,IAClB03Q,CAAAA,UAAWpC,CAAAA,SAAS,CAAGr2Q,MAAOA,CAAAA,MAAM,CAACmD,GAAG,EACxCs1Q,CAAAA,UAAAA,CAAW1B,MAAM,CAAG/2Q,MAAOA,CAAAA,MAAM,CAAC2J,IAAG,CAEvC8uQ,UAAAA,CAAWxC,WAAW,CAACsB,OAAOQ,UAAU,CAAE/3Q,MAAO+I,CAAAA,KAAK,CACtD0vQ,CAAAA,UAAAA,CAAWvC,OAAO,GACpB,CAAO,KAAA,CACLl2Q,MAAOA,CAAAA,MAAM,CAAC2J,GAAG,CAAC3J,MAAO+I,CAAAA,KAAK,EAChC,CACA/I,MAAAA,CAAO63Q,YAAY,CAAG,EACxB,CACF,CACA,IAAI,CAACL,OAAO,CAAChjO,MAAM,CAAC6+N,WACtB,CAhMAlqQ,WAAAA,CAAYouQ,MAAM,CAAC,CACjB,IAAI,CAACC,OAAO,CAAGD,MACf,CAAA,IAAI,CAACH,MAAM,CAAG,EACd,CAAA,IAAI,CAACtG,OAAO,CAAG,EAAE,CACjB,IAAI,CAACG,QAAQ,CAAG,EAAE,CAClB,IAAI,CAAC1/H,QAAQ,CAAG,GAClB,CA2LF,CAEA,MAAMmnI,WAOJ,IAAItG,MAAAA,EAAS,CACX,OAAO,IAAI,CAACuG,OAAO,CAPrBxvQ,WAAYipQ,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACuG,OAAO,CAAG,CAAA,GACVvG,OACJ,CACD,IAAI,CAACuG,OAAO,CAACrnQ,IAAI,CAAC,CAACN,CAAAA,CAAGC,CAAID,GAAAA,CAAAA,CAAEwH,IAAI,CAAGvH,EAAEuH,IAAI,EAC3C,CAIF,CAEA,MAAMogQ,SAYJ,CAAA,IAAIl0Q,IAAO,EAAA,CACT,OAAO,IAAI,CAACunG,KACd,CACA,IAAInY,QAAW,EAAA,CACb,OAAO,IAAI,CAACs7B,SACd,CACA,IAAIqoJ,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC3G,OAAO,CAErB,IAAIE,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QAAQ,CAEtB,IAAI31P,MAAS,EAAA,CACX,OAAO,IAAI,CAACy1P,OACd,CACA,IAAIqB,MAAOyG,CAAAA,UAAU,CAAE,CACrB,IAAI,CAACC,WAAW,CAAGD,WACrB,CACA,IAAIzG,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC0G,WAAW,CAAC1G,MAAM,CAEhCtmC,IAAKtzN,CAAAA,IAAI,CAAE+4P,QAAQ,CAAE,CACnBA,QAAAA,CAASjvD,KAAK,CAAG9pM,IACjB,CAAA,MAAMi/P,OAAS,IAAI,CAAC3G,OAAO,CAC3B,MAAME,OAAAA,CAAU,IAAI,CAACC,QAAQ,CAC7B,MAAM31P,MAAS,CAAA,IAAI,CAACy1P,OAAO,CAC3B,MAAM19N,KAAAA,CAAQk+N,SAASzlO,MAAM,CAC7B,MAAMgrC,OAAAA,CAAUy6L,QAASV,CAAAA,QAAQ,CACjC,IAAI,IAAIzvQ,CAAI,CAAA,CAAA,CAAGA,CAAIq2Q,CAAAA,MAAAA,CAAOp2Q,MAAM,CAAE,EAAED,CAAE,CAAA,CACpCiyC,KAAK,CAACjyC,CAAAA,CAAE,CAACozC,MAAM,CAACh8B,IAAAA,CAAMi/P,MAAM,CAACr2Q,EAAE,CAAC21O,KAAK,EACvC,CACA,IAAI,IAAI31O,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIka,OAAOja,MAAM,CAAE,EAAED,CAAAA,CAAE,CACpC,MAAMsZ,KAAQY,CAAAA,MAAM,CAACla,CAAE,CAAA,CACvB,MAAMwG,MAAAA,CAASopQ,OAAO,CAACt2P,KAAAA,CAAMw2P,OAAO,CAAC,CACrC,MAAM/vQ,MAAAA,CAAS21E,OAAO,CAAC11E,CAAE,CAAA,CACzBiyC,KAAK,CAAC34B,MAAMq+P,MAAM,CAAC,CAACjtC,IAAI,CAAC3qO,MAAQuZ,CAAAA,KAAAA,CAAMs+P,cAAc,CAAEpxQ,QACzD,CACF,CA7CAuB,WAAYzE,CAAAA,IAAI,CAAEovF,QAAQ,CAAE2jL,MAAM,CAAEzG,OAAO,CAAE11P,MAAM,CAAEu9P,WAAa,IAAIH,UAAAA,CAAW,EAAE,CAAC,CAAC,CACnF,IAAI,CAACzsK,KAAK,CAAGvnG,IACb,CAAA,IAAI,CAAC0qH,SAAS,CAAGt7B,QACjB,CAAA,IAAI,CAACg9K,OAAO,CAAG2G,MACf,CAAA,IAAI,CAACxG,QAAQ,CAAGD,OAChB,CAAA,IAAI,CAACD,OAAO,CAAGz1P,MACf,CAAA,IAAI,CAACw9P,WAAW,CAAGD,WACrB,CAuCF,CAlDMD,SAEGK,CAAAA,KAAK,CAAGh2Q,MAAAA,CAAO4U,MAAM,CAAC,IAAI+gQ,SAAU,CAAA,OAAA,CAAS1tP,MAAOgE,CAAAA,SAAS,CAAE,EAAE,CAAE,EAAE,CAAE,EAAE,CAkDlF,CAAA,CAAA,MAAMgqP,UACJ,CAAA,OAAOC,QAASC,CAAAA,YAAY,CAAEC,SAAS,CAAE,CACvCA,SAAAA,CAAYA,SAAa,EAAA,GAAA,CACzB,MAAMC,OAAS,CAAA,SAASjzQ,MAAM,CAAA,CAC5B,OAAOA,MAAO7F,CAAAA,OAAO,CAAC,KAAA,CAAO,MAAQA,CAAAA,CAAAA,OAAO,CAAC,IAAIs/D,OAAO,CAAC,EAAE,EAAEu5M,SAAAA,CAAU,CAAC,CAAE,GAAA,CAAA,CAAM,CAAC,EAAE,EAAEA,SAAU,CAAA,CAAC,CAClG,CAAA,CACA,OAAOD,YAAAA,CAAanxQ,GAAG,CAACqxQ,SAAQr4Q,IAAI,CAACo4Q,SACvC,CAAA,CACA,OAAOE,SAAUx4Q,CAAAA,IAAI,CAAEs4Q,SAAS,CAAE,CAChCA,SAAAA,CAAYA,SAAa,EAAA,GAAA,CACzB,MAAMl4Q,MAAAA,CAAS,EAAE,CACjB,IAAIq4Q,IAAO,CAAA,EAAA,CACX,IAAIp4Q,CAAAA,CAAI,EACR,MAAMA,CAAAA,CAAIL,IAAKM,CAAAA,MAAM,CAAC,CACpB,IAAIZ,CAAIM,CAAAA,IAAI,CAACK,CAAAA,EAAAA,CAAI,CACjB,GAAIX,IAAM,IAAQW,EAAAA,CAAAA,CAAIL,IAAKM,CAAAA,MAAM,CAAE,CACjCZ,CAAAA,CAAIM,IAAI,CAACK,IAAI,CACb,GAAIX,CAAM,GAAA,IAAA,EAAQA,CAAM44Q,GAAAA,SAAAA,CAAW,CACjCG,IAAAA,EAAQ/4Q,EACV,CAAO,KAAA,CACL+4Q,IAAQ,EAAA,CAAC,EAAE,EAAE/4Q,CAAAA,CAAE,EACjB,CACF,CAAO,KAAA,GAAIA,CAAM44Q,GAAAA,SAAAA,CAAW,CAC1Bl4Q,MAAAA,CAAOe,IAAI,CAACs3Q,MACZA,IAAO,CAAA,GACT,CAAO,KAAA,CACLA,IAAQ/4Q,EAAAA,EACV,CACF,CACA,GAAI+4Q,IAAKn4Q,CAAAA,MAAM,CAAG,CAAA,CAAG,CACnBF,MAAAA,CAAOe,IAAI,CAACs3Q,MACd,CACA,OAAOr4Q,MACT,CACA,OAAOs4Q,MAAOC,CAAAA,UAAU,CAAEl3B,SAAS,CAAEm3B,YAAY,CAAE,CACjD,OAAO,CAAC,EAAEv5Q,KAAMC,CAAAA,OAAO,CAACq5Q,UAAcA,CAAAA,CAAAA,UAAAA,CAAWz4Q,IAAI,CAAC,KAAOy4Q,UAAW,CAAA,CAAC,EAAEl3B,SAAAA,CAAU,CAAC,EAAEpiP,KAAAA,CAAMC,OAAO,CAACs5Q,YAAgBA,CAAAA,CAAAA,YAAAA,CAAa14Q,IAAI,CAAC,KAAO04Q,YAAa,CAAA,CAAC,CAE/JluO,QAAQ1qC,IAAI,CAAE,CACZ,OAAO,IACT,CACAk3Q,SAAAA,CAAUl3Q,IAAI,CAAE,EAChByzC,MAAO6+N,CAAAA,SAAS,CAAE,EACpB,CAEA,MAAMuG,WAcJ,IAAIjwQ,GAAAA,EAAM,CACR,OAAO,IAAI,CAACkwQ,IAAI,CAElB,IAAI12Q,GAAAA,EAAM,CACR,OAAO,IAAI,CAAC22Q,IAAI,CAElB,IAAIjhQ,IAAO,EAAA,CACT,OAAO,IAAI,CAAC0C,KACd,CACA,IAAI2/B,UAAa,EAAA,CACf,OAAO,IAAI,CAACmnM,WACd,CACA,IAAIu1B,YAAa,CACf,OAAO,IAAI,CAACmC,WAAW,CAEzB,IAAIC,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAI3B,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACyB,YAAY,EAAI,IAAI,CAACE,SACnC,CApCAhxQ,WAAAA,CAAY0C,IAAI,CAAEgN,IAAI,CAAEqiC,UAAU,CAAE08N,UAAU,CAAC,CAC7C,GAAI/rQ,IAAAA,CAAKlC,GAAG,CAAE,CACZ,IAAI,CAACkwQ,IAAI,CAAGhuQ,IAAAA,CAAKlC,GACjB,CAAA,IAAI,CAACmwQ,IAAI,CAAGjuQ,IAAK1I,CAAAA,IAAG,CACtB,KAAO,CACL,IAAI,CAAC02Q,IAAI,CAAGhuQ,KACd,CACA,IAAI,CAAC0P,KAAK,CAAG1C,IACb,CAAA,IAAI,CAACwpO,WAAW,CAAGnnM,UACnB,CAAA,IAAI,CAAC6+N,WAAW,CAAGnC,UACnB,CAAA,IAAI,CAACqC,YAAY,CAAG,IAAI,CAACF,WAAW,CAAC13Q,SAAS,CAAC,IAAI,CAAC03Q,WAAW,CAAC14Q,MAAM,CAAG,EAAQ,CAAA,GAAA,eAAA,EAAmB,IAAI,CAAC04Q,WAAW,CAAC13Q,SAAS,CAAC,IAAI,CAAC03Q,WAAW,CAAC14Q,MAAM,CAAG,EAAA,CAAA,GAAQ,iBAAmB,IAAI,CAAC04Q,WAAW,CAAC13Q,SAAS,CAAC,IAAI,CAAC03Q,WAAW,CAAC14Q,MAAM,CAAG,EAAQ,CAAA,GAAA,YACjP,CAAA,IAAI,CAAC84Q,SAAS,CAAG,IAAI,CAACJ,WAAW,CAAC1vQ,OAAO,CAAC,SAAA,CAAA,GAAe,CAAC,EAC5D,CAyBF,CAEA,MAAM+vQ,iBAqHJC,CAAAA,aAAAA,CAAct5Q,IAAI,CAAE,CAClB,GAAI,CAAC,IAAI,CAAC0lL,KAAK,CAAE,OAAO,IACxB,CAAA,MAAM6zF,aAAgB,CAAA,CACpBv5Q,KAAK24Q,UAAU,CAAC,CAAE,CAAA,CAClB,IAAI,CAAChrF,KAAK,CAAChqL,IAAI,CAChB,CACD,IAAI,IAAIijF,CAAI,CAAA,CAAA,CAAGA,CAAI2yL,CAAAA,aAAAA,CAAcj5Q,MAAM,CAAE,EAAEsmF,CAAE,CAAA,CAC3C,IAAI4yL,cAAAA,CAAiBD,aAAa,CAAC3yL,EAAE,CACrC,GAAI,IAAI,CAAC6yL,aAAa,CAACD,cAAAA,CAAgBx5Q,IAAK24Q,CAAAA,UAAU,CAACr4Q,MAAM,GAAK,CAAI,CAAA,CAAA,OAAO,IAC7E,CAAA,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIL,CAAAA,IAAAA,CAAK24Q,UAAU,CAACr4Q,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC7Cm5Q,cAAAA,EAAkB,CAAC,CAAC,EAAEx5Q,IAAK24Q,CAAAA,UAAU,CAACt4Q,CAAAA,CAAE,CAAC,CAAC,CAC1C,GAAI,IAAI,CAACo5Q,aAAa,CAACD,cAAgBn5Q,CAAAA,CAAAA,GAAML,IAAK24Q,CAAAA,UAAU,CAACr4Q,MAAM,CAAG,CAAI,CAAA,CAAA,OAAO,IACnF,CACF,CACA,OAAO,KACT,CACAolJ,QAAAA,CAAS1lJ,IAAI,CAAE,CACb,GAAI,CAAC,IAAI,CAACs5Q,aAAa,CAACt5Q,IAAAA,CAAAA,CAAO,CAC7B,OAAO,IACT,CACA,IAAIywI,IAAAA,CACJ,GAAI,IAAI,CAACk9C,KAAK,CAAE,CACdl9C,IAAO,CAAA,IAAI,CAACk9C,KAAK,CAAChmC,UAAU,CAAC3nJ,IAAK24Q,CAAAA,UAAU,CAC5C,CAAA,GAAI,CAACloI,IAAAA,CAAM,CACTA,IAAO,CAAA,IAAI,CAACk9C,KAAK,CAAChmC,UAAU,CAAC3nJ,IAAK24Q,CAAAA,UAAU,CAACz3Q,KAAK,CAAC,CACrD,CAAA,EAAA,CACF,CACA,GAAI,CAACuvI,IAAAA,CAAM,CACTA,IAAO,CAAA,IAAI,CAAClI,KAAK,CAACvoI,IAAK24Q,CAAAA,UAAU,CAAC34Q,IAAAA,CAAK24Q,UAAU,CAACr4Q,MAAM,CAAG,CAAA,CAAE,EAAI,EAAA,EAAG,CAEtE,OAAOmwI,IACT,CACA,OAAOipI,gBAAAA,CAAiB5uQ,IAAI,CAAEgN,IAAI,CAAE6hQ,UAAU,CAAElpI,IAAI,CAAEmoI,YAAY,CAAEt8M,aAAa,CAAE,CACjF,MAAMu6M,UAAasB,CAAAA,UAAAA,CAAWO,MAAM,CAACjoI,KAAKzwI,IAAI,CAAEs8D,aAAgBA,CAAAA,aAAAA,CAAgB,SAAUs8M,YAC1F,CAAA,CAAA,OAAO,IAAIC,UAAAA,CAAW/tQ,IAAMgN,CAAAA,IAAAA,CAAM6hQ,UAAY9C,CAAAA,UAAAA,CAChD,CACAnsO,OAAQ1qC,CAAAA,IAAI,CAAE,CACZ,MAAM45Q,WAAczB,CAAAA,UAAAA,CAAWO,MAAM,CAAC14Q,KAAK24Q,UAAU,CAAE34Q,IAAKyhP,CAAAA,SAAS,CAAEzhP,IAAAA,CAAK44Q,YAAY,CAAA,CACxF,IAAI35Q,MAAS,CAAA,IAAI,CAAC46Q,WAAW,CAACD,WAAY,CAAA,CAC1C,GAAI36Q,MAAAA,CAAQ,OAAOA,MACnB,CAAA,MAAMwxI,IAAO,CAAA,IAAI,CAACiV,QAAQ,CAAC1lJ,IAAAA,CAAAA,CAC3B,GAAI,CAACywI,IAAAA,CAAM,CACT,OAAO,IACT,CACA,MAAMjpI,OAAU,CAAA,IAAI,CAACsyQ,QAAQ,CAAC95Q,IAAK44Q,CAAAA,YAAY,CAAC,CAChD,GAAI,CAACpxQ,QAAS,CACZ,OAAO,IACT,CACAvI,OAASuI,OAAQipI,CAAAA,IAAAA,CAAAA,CACjB,GAAI,CAACxxI,OAAQ,CACX,OAAO,IACT,CACA,IAAI,CAAC46Q,WAAW,CAACD,YAAY,CAAG36Q,MAAAA,CAChC,GAAI,CAAC,IAAI,CAAC86Q,UAAU,CAACtpI,IAAAA,CAAKzwI,IAAI,CAAC,CAAE,CAC/B,IAAI,CAACg6Q,WAAW,CAAC74Q,IAAI,CAACsvI,IACtB,CAAA,CAAA,IAAI,CAACspI,UAAU,CAACtpI,IAAAA,CAAKzwI,IAAI,CAAC,CAAG,EAC/B,CAAA,KAAO,CACL,IAAI,CAAC+5Q,UAAU,CAACtpI,IAAAA,CAAKzwI,IAAI,CAAC,GAC5B,CACA,OAAOf,MACT,CACAi4Q,SAAUl3Q,CAAAA,IAAI,CAAE,CACd,GAAIA,IAAKyhP,CAAAA,SAAS,GAAK,OAAA,CAAS,CAC9B,MACF,CACA,MAAMhxG,IAAAA,CAAO,IAAI,CAAClI,KAAK,CAACvoI,IAAAA,CAAK24Q,UAAU,CAAC34Q,KAAK24Q,UAAU,CAACr4Q,MAAM,CAAG,CAAE,CAAA,EAAI,EAAG,CAC1E,CAAA,IAAI,CAACy5Q,UAAU,CAACtpI,KAAKzwI,IAAI,CAAC,EAC1B,CAAA,GAAI,IAAI,CAAC+5Q,UAAU,CAACtpI,IAAAA,CAAKzwI,IAAI,CAAC,GAAK,CAAA,CAAG,CACpC,MAAMg6Q,WAAAA,CAAc,IAAI,CAACA,WAAW,CACpC,MAAM35Q,CAAI25Q,CAAAA,WAAAA,CAAY1wQ,OAAO,CAACmnI,IAAAA,CAAKA,IAAI,CAAA,CACvC,MAAMl4H,GAAAA,CAAMyhQ,WAAY15Q,CAAAA,MAAM,CAC9B,GAAID,CAAAA,CAAIkY,GAAM,CAAA,CAAA,CAAG,CACfyhQ,WAAW,CAAC35Q,CAAE,CAAA,CAAG25Q,WAAW,CAACzhQ,GAAAA,CAAM,CAAE,EACvC,CACAyhQ,WAAAA,CAAYr4Q,GAAG,GACjB,CACF,CACA8xC,MAAAA,CAAO6+N,SAAS,CAAE,CAChB,MAAM0H,WAAAA,CAAc,IAAI,CAACA,WAAW,CACpC,IAAI,IAAI35Q,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI25Q,WAAY15Q,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CACzC25Q,WAAW,CAAC35Q,CAAE,CAAA,CAAC0oJ,aAAa,GAC9B,CACF,CACAwuH,UAAAA,CAAWtjO,IAAI,CAAE,CACf,GAAIA,IAAS,GAAA,IAAI,CAACyxI,KAAK,CAAE,CACvB,IAAI,CAACA,KAAK,CAAGzxI,IACb,CAAA,OAAO,IACT,CACA,OAAO,KACT,CA7MA7rC,WAAYulL,CAAAA,KAAK,CAAC,CAChB,IAAI,CAAC8rF,aAAa,CAAG,CAACz5Q,IAAMi6Q,CAAAA,cAAAA,GAAAA,CAC1B,MAAMC,QAAAA,CAAW,IAAI,CAACx0F,KAAK,CAAC1lL,IAAAA,CAAK,CACjC,GAAI,CAACk6Q,QAAAA,CAAU,OAAO,KACjB,CAAA,KAAA,GAAIA,QAASv0H,CAAAA,QAAQ,EAAIs0H,cAAkBC,EAAAA,QAAAA,CAASlyQ,KAAK,GAAK,MAAO,OAAO,IAAA,CACjF,OAAO,KACT,CACA,CAAA,IAAI,CAAC2lL,KAAK,CAAGA,KAAAA,CACb,GAAI,CAACA,MAAO,OACZ,IAAI,CAACjI,KAAK,CAAG,IAAA,CACb,MAAMn9C,KAAAA,CAAQ,EAAC,CACf,MAAM4xI,OAAAA,CAAU,SAAS1pI,IAAI,CAAA,CAC3BlI,KAAK,CAACkI,KAAK9sI,IAAI,CAAC,CAAG8sI,IAAAA,CACnB,IAAI,IAAIpwI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIowI,IAAKkV,CAAAA,QAAQ,CAACrlJ,MAAM,CAAE,EAAED,CAAAA,CAAE,CAC3C85Q,OAAAA,CAAQ1pI,IAAKkV,CAAAA,QAAQ,CAACtlJ,CAAAA,CAAE,EAC1B,CACF,CAAA,CACA85Q,OAAQxsF,CAAAA,KAAAA,CACR,CAAA,IAAI,CAACplD,KAAK,CAAGA,KACb,CAAA,IAAI,CAACsxI,WAAW,CAAG,EACnB,CAAA,MAAMO,kBAAoB,SAAS3pI,IAAI,CACrC,CAAA,IAAItgF,MAASsgF,CAAAA,IAAAA,CACb,MAAMtgF,MAAAA,EAAU,EAAEA,MAAAA,YAAkByyL,MAAK,CAAA,CAAG,CAC1CzyL,MAASA,CAAAA,MAAAA,CAAO7+C,OAClB,CACA,IAAIs0H,aAAAA,CACJ,GAAIz1E,MAAAA,CAAQ,CACV,GAAIA,MAAOk8C,CAAAA,MAAM,CAAE,CACjBu5B,aAAAA,CAAgBz1E,MAAOk8C,CAAAA,MAAM,CAACu5B,cAChC,CAAO,KAAA,GAAIz1E,OAAOw1E,KAAK,CAAE,CACvBC,aAAAA,CAAgBz1E,MAAOw1E,CAAAA,KAAK,CAACC,cAAa,CAE9C,CACA,OAAOA,aACT,CACA,CAAA,IAAI,CAACm0I,UAAU,CAAG,EAClB,CAAA,IAAI,CAACC,WAAW,CAAG,EAAE,CACrB,IAAI,CAACF,QAAQ,CAAG,CACd,eAAiB,CAAA,SAASrpI,IAAI,CAC5B,CAAA,MAAMtgF,MAASsgF,CAAAA,IAAAA,CAAKmW,aAAa,CACjC,MAAM97I,IAAAA,CAAO,SAAS9C,KAAK,CAAA,CACzBmoD,MAAOvnD,CAAAA,GAAG,IAAIZ,KAChB,EAAA,CAAA,CACA,OAAOqxQ,iBAAAA,CAAkBK,gBAAgB,CAAC5uQ,IAAAA,CAAM,QAAU,CAAA,CAAA,CAAG2lI,IAAM,CAAA,eAAA,CACrE,CACA,CAAA,eAAA,CAAiB,SAASA,IAAI,CAAA,CAC5B,MAAMtgF,MAAAA,CAASsgF,KAAKoW,aAAa,CACjC,MAAM/7I,IAAAA,CAAO,SAAS9C,KAAK,CAAA,CACzBmoD,MAAOvnD,CAAAA,GAAG,CAAIZ,GAAAA,KAAAA,EAChB,CACA,CAAA,OAAOqxQ,kBAAkBK,gBAAgB,CAAC5uQ,IAAM,CAAA,YAAA,CAAc,EAAG2lI,IAAM,CAAA,eAAA,CACzE,CACA,CAAA,YAAA,CAAc,SAASA,IAAI,CAAA,CACzB,MAAMtgF,MAAAA,CAASsgF,IAAKqW,CAAAA,UAAU,CAC9B,MAAMh8I,KAAO,SAAS9C,KAAK,CACzBmoD,CAAAA,MAAAA,CAAOvnD,GAAG,CAAIZ,GAAAA,KAAAA,EAChB,CACA,CAAA,OAAOqxQ,kBAAkBK,gBAAgB,CAAC5uQ,IAAM,CAAA,QAAA,CAAU,CAAG2lI,CAAAA,IAAAA,CAAM,YACrE,CAAA,CAAA,CACA,SAAU,SAASA,IAAI,CAAE4pI,UAAU,EACjC,GAAIA,UAAAA,CAAW/wQ,OAAO,CAAC,WAAa,CAAG,CAAA,CACrC+wQ,UAAaA,CAAAA,UAAAA,CAAW56Q,OAAO,CAAC,OAAS,CAAA,EAAA,EAC3C,MAAO,CACL46Q,UAAAA,CAAalwP,MAAOkwP,CAAAA,UAAAA,EACtB,CACA,MAAMz0I,aAAAA,CAAgBw0I,iBAAkB3pI,CAAAA,IAAAA,CAAAA,CACxC,MAAM+vC,SAAY,CAAA,EAAE,CACpB,GAAI56C,aAAe,CAAA,CACjB,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAE,EAAED,CAAE,CAAA,CAC3C,GAAIulI,aAAa,CAACvlI,CAAE,CAAA,CAACowI,IAAI,CAAC9sI,IAAI,GAAK8sI,KAAK9sI,IAAI,EAAIiiI,aAAa,CAACvlI,EAAE,CAACiyI,aAAa,CAAE,CAC9EkuC,UAAUr/K,IAAI,CAACykI,aAAa,CAACvlI,CAAE,CAAA,CAACiyI,aAAa,EAC/C,CACF,CACF,CACA,GAAIkuC,SAAAA,CAAUlgL,MAAM,CAAG,CAAA,CAAG,CACxB,MAAMwK,KAAO,CACXlC,GAAAA,CAAK,KAACZ,EAAAA,CACJ,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,EAAImgL,SAAUlgL,CAAAA,MAAM,CAAE,EAAED,EAAE,CACvCmgL,SAAS,CAACngL,CAAAA,CAAE,CAACorL,SAAS,CAAC4uF,UAAYryQ,CAAAA,KAAK,CAAC,CAAA,CAAE,EAC7C,CACF,EACA5F,GAAK,CAAA,IAAA,CACH,OAAO,CACLo+K,SAAS,CAAC,CAAA,CAAE,CAAC+K,SAAS,CAAC8uF,UACxB,CAAA,CACH,CACF,CAAA,CACA,OAAOhB,iBAAAA,CAAkBK,gBAAgB,CAAC5uQ,KAAM,QAAU,CAAA,CAAA,CAAG2lI,IAAM,CAAA,CAAC,OAAO,EAAE4pI,UAAAA,CAAW,CAAC,CAC3F,CACA,OAAO,IACT,CACA,CAAA,iBAAA,CAAmB,CAAC5pI,IAAAA,CAAM6pI,WACxB,GAAA,CAAA,MAAM10I,cAAgBw0I,iBAAkB3pI,CAAAA,IAAAA,CAAAA,CACxC,GAAI7K,aAAAA,CAAe,CACjB,IAAIX,YAAAA,CACJ,IAAI,IAAI5kI,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAE,EAAED,CAAE,CAAA,CAC3C,GAAIulI,aAAa,CAACvlI,CAAE,CAAA,CAACowI,IAAI,CAAC9sI,IAAI,GAAK8sI,IAAAA,CAAK9sI,IAAI,CAAE,CAC5CshI,YAAeW,CAAAA,aAAa,CAACvlI,CAAAA,CAAE,CAC/B,KACF,CACF,CACA,GAAI4kI,YAAc,CAAA,CAChB,MAAMn6H,IAAAA,CAAO,KAAC9C,EAAAA,CACZ,MAAMuyQ,YAAe,CAAA,IAAI,CAACxD,aAAa,CAAC36B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC4F,KAAK,CAAC,CAAA,CAAE,CACtE,CAAA,GAAIuyQ,cAAgBA,YAAa3yN,CAAAA,QAAQ,EAAI2yN,YAAAA,CAAaziQ,IAAI,GAAK,SAAW,CAAA,CAC5EmtH,aAAa/B,QAAQ,CAACo3I,WAAY,CAAA,CAAGC,aAAa3yN,QAAQ,CAC1Dq9E,YAAa/B,CAAAA,QAAQ,CAACzvF,MAAM,GAC9B,CACF,CAAA,CACA,OAAO4lO,iBAAAA,CAAkBK,gBAAgB,CAAC5uQ,KAAM,QAAU,CAAA,CAAA,CAAG2lI,IAAM,CAAA,iBAAA,CAAmB,WACxF,CACF,CACA,OAAO,IACT,CACF,EACF,CA2FF,CAEA,MAAM+pI,kBAA2BxM,SAAAA,SAAAA,CAC/B,IAAIyM,UAAAA,CAAWzyQ,KAAK,CAAE,CACpB,IAAI,CAAC0yQ,WAAW,CAAG1yQ,KAAAA,CACnB,IAAI,CAAC2yQ,eAAe,GACtB,CACA,IAAIF,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAItiC,MAAAA,CAAOpwO,KAAK,CAAE,CAChB,MAAMowO,MAAAA,CAAS,IAAI,CAACC,OAAO,CAC3B,GAAID,MAAUA,EAAAA,MAAAA,CAAO93O,MAAM,CAAE,CAC3B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAI+3O,MAAO93O,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,GAAI+3O,MAAM,CAAC/3O,CAAAA,CAAE,CAAE,CACb,MAAM25N,KAAAA,CAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACg2O,MAAM,CAAC/3O,CAAAA,CAAE,CAClD,CAAA,GAAI25N,KAAO,CAAA,CACTA,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACszQ,cAAc,CAAE,IAAI,CAC7C5gD,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAA,CAAU,IAAI,CAACuzQ,cAAc,CAAE,IAAI,CAAA,CAC7C,MAAMC,QAAW,CAAA,IAAI,CAACC,eAAe,CAAC/gD,KAAM3vL,CAAAA,EAAE,CAAC,CAC/C,GAAI,IAAI,CAAC2wO,QAAQ,GAAKF,QAAU,CAAA,CAC9B,IAAI,CAACG,qBAAqB,GAC5B,CACA,OAAO,IAAI,CAACR,UAAU,CAACK,QAAS,CAChC,QAAO,IAAI,CAACC,eAAe,CAAC/gD,KAAM3vL,CAAAA,EAAE,EACtC,CACF,CACF,CACF,CACA,IAAI,CAACguM,OAAO,CAAGrwO,KACf,CAAA,MAAMixO,SAAWjxO,KAAMd,CAAAA,GAAG,CAAEc,KAC1B,EAAA,CAAA,OAAOA,KAAiBotO,YAAAA,KAAAA,CAAQptO,MAAMqiC,EAAE,CAAGriC,KAC7C,CAAA,CAAA,CACA,IAAI,CAACkzQ,mBAAmB,CAACjiC,UAC3B,CACA,IAAIb,MAAS,EAAA,CACX,OAAO,IAAI,CAACC,OAAO,CAErB,IAAIxqH,WAAYA,CAAAA,WAAW,CAAE,CAC3B,GAAI,IAAI,CAACstJ,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACttJ,WAAW,CAAGA,YAC5B,IAAI,CAACstJ,QAAQ,CAAC91E,OAAO,CAAC,CAAA,CAAA,CACtB,IAAI,CAAC81E,QAAQ,CAACv5D,WAAW,GAC3B,CACA,GAAI,IAAI,CAACw5D,aAAa,CAAE,CACtB,MAAMhF,KAAQ,CAAA,IAAI,CAACgF,aAAa,CAAChF,KAAK,CACtC,IAAI,IAAI/1Q,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+1Q,KAAM91Q,CAAAA,MAAM,CAAE,EAAED,EAAE,CACnC+1Q,KAAK,CAAC/1Q,CAAAA,CAAE,CAACoX,IAAI,CAAGo2G,YAClB,CACF,CACF,CACA,IAAIA,WAAAA,EAAc,CAChB,GAAI,IAAI,CAACstJ,QAAQ,CAAE,CACjB,OAAO,IAAI,CAACA,QAAQ,CAAC55D,KACvB,CACA,GAAI,IAAI,CAAC65D,aAAa,CAAE,CACtB,MAAMhF,KAAAA,CAAQ,IAAI,CAACgF,aAAa,CAAChF,KAAK,CACtC,GAAIA,KAAAA,CAAM91Q,MAAM,CAAG,EAAG,CACpB,OAAO81Q,KAAK,CAACA,KAAM91Q,CAAAA,MAAM,CAAG,CAAA,CAAE,CAACmX,IACjC,CACF,CACA,OAAO,CACT,CACA,IAAIs7E,QAAAA,EAAW,CACb,GAAI,IAAI,CAACioL,QAAQ,CAAE,CACjB,OAAO,IAAI,CAACP,UAAU,CAAC,IAAI,CAACO,QAAQ,CAAC,CAACjoL,QACxC,CACA,OAAO,CACT,CACA,IAAI67B,IAAK5mH,CAAAA,KAAK,CAAE,CACd,IAAI,CAAC6mH,KAAK,CAAG7mH,KAAAA,CACb,GAAI,IAAI,CAACmzQ,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACt5D,OAAO,CAAG75M,MAC1B,CACA,GAAI,IAAI,CAACozQ,aAAa,CAAE,CACtB,IAAI,IAAI/6Q,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC+6Q,aAAa,CAAChF,KAAK,CAAC91Q,MAAM,CAAE,EAAED,CAAE,CAAA,CACtD,IAAI,CAAC+6Q,aAAa,CAAChF,KAAK,CAAC/1Q,CAAAA,CAAE,CAACuuH,IAAI,CAAG5mH,MACrC,CACF,CACF,CACA,IAAI4mH,IAAAA,EAAO,CACT,OAAO,IAAI,CAACC,KAAK,CAEnBX,IAAKvqH,CAAAA,IAAI,CAAE03Q,SAAY,CAAA,CAAC,CAAE,CACxB,GAAI,CAAC,IAAI,CAACnoQ,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACzC,MACF,CACA,GAAI,CAAC,IAAI,CAACunQ,UAAU,CAAC92Q,IAAAA,CAAK,CAAE,CAC1B,MACF,CACA,IAAI,CAAC23Q,QAAQ,CAAG,IAAI,CAACN,QAAQ,CAC7B,IAAI,CAACA,QAAQ,CAAGr3Q,IAChB,CAAA,GAAI,IAAI,CAACgiI,KAAK,CAAE,CACd,GAAI,CAAC,IAAI,CAACw1I,QAAQ,EAAI,CAAC,IAAI,CAACC,aAAa,CAAE,CACzC,IAAI,CAACG,0BAA0B,GACjC,CACA,MAAMD,QAAAA,CAAW,IAAI,CAACb,UAAU,CAAC,IAAI,CAACa,QAAQ,CAAC,CAC/C,MAAMN,QAAW,CAAA,IAAI,CAACP,UAAU,CAAC,IAAI,CAACO,QAAQ,CAAC,CAC/C,IAAI,CAACQ,QAAQ,CAAGH,SAAY,CAAA,CAAA,EAAK,CAAC,CAAC,IAAI,CAACC,QAAQ,CAChD,GAAI,IAAI,CAACE,QAAQ,CAAE,CACjB,IAAI,CAACnmO,KAAK,CAAG,CACb,CAAA,IAAI,CAAComO,UAAU,CAAG,CAAA,CAAIJ,UACxB,CACA,GAAI,IAAI,CAACF,QAAQ,CAAE,CACjB,GAAI,IAAI,CAACK,QAAQ,CAAE,CACjB,IAAI,CAACE,QAAQ,CAACr6D,SAAS,CAAGi6D,QAAAA,CAC1B,IAAI,CAACI,QAAQ,CAACr2E,OAAO,CAAC,IAAI,CAAC81E,QAAQ,CAAC55D,KAAK,CACzC,CAAA,IAAI,CAACo6D,MAAM,CAACt6D,SAAS,CAAG25D,SAC1B,CAAA,KAAO,CACL,IAAI,CAACG,QAAQ,CAAC95D,SAAS,CAAG25D,SAC5B,CACF,CACA,GAAI,IAAI,CAACI,aAAa,CAAE,CACtB,MAAMA,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,GAAI,IAAI,CAACI,QAAQ,CAAE,CACjB,MAAMJ,aAAchF,CAAAA,KAAK,CAAC91Q,MAAM,CAAG,CAAA,CAAE,CACnC86Q,aAAcnE,CAAAA,UAAU,CAAC,CAAA,EAC3B,CACF,CAAO,KAAA,CACL,IAAI,CAACmE,aAAa,CAACjE,WAAW,GAChC,CACA,MAAMZ,IAAAA,CAAO,IAAInG,QAAAA,CAAS,IAAI,CAACqK,UAAU,CAAC,IAAI,CAACO,QAAQ,CAAC,CAAE,CAAA,CAAG,EAAK,IAAM,CAAA,IAAI,CAACpsJ,IAAI,CACjF2nJ,CAAAA,IAAK5yQ,CAAAA,IAAI,CAAG,IAAI,CAACq3Q,QACjBzE,CAAAA,IAAK1F,CAAAA,WAAW,CAAG,IAAI,CAAC2K,QAAQ,CAAG,CAAI,CAAA,CAAA,CACvCjF,IAAKvoQ,CAAAA,KAAK,EACV,CAAA,IAAI,CAACotQ,aAAa,CAAC9E,OAAO,CAACC,MAC7B,CACF,CACA,IAAI,CAAC/D,OAAO,CAAG,KACjB,CACAoJ,YAAAA,CAAaj4Q,IAAI,CAAE,CACjB,OAAO,IAAI,CAAC82Q,UAAU,CAAC92Q,IAAAA,CAAK,CAE9Bk4Q,QAAAA,CAASl2I,KAAK,CAAE,CACd,GAAIA,KAAAA,GAAU,IAAI,CAACA,KAAK,CAAE,CACxB,IAAI,CAACm2I,yBAAyB,EAC9B,CAAA,IAAI,CAACn2I,KAAK,CAAGA,KAAAA,CACb,GAAI,IAAI,CAAC80I,UAAU,EAAI,IAAI,CAACO,QAAQ,EAAI,IAAI,CAACP,UAAU,CAAC,IAAI,CAACO,QAAQ,CAAC,CAAE,CACtE,IAAI,CAAC9sJ,IAAI,CAAC,IAAI,CAAC8sJ,QAAQ,EACzB,CACF,CACF,CACAL,eAAAA,EAAkB,CAChB,MAAMoB,eAAiB,IAAI,CAAC90I,MAAM,CAACtB,KAAK,CACxC,GAAIo2I,cAAgB,CAAA,CAClB,MAAM5gQ,CAAAA,CAAI4gQ,cAAep2I,CAAAA,KAAK,CAC9B,GAAIxqH,CAAAA,EAAKA,CAAM,GAAA,IAAI,CAACwqH,KAAK,CAAE,CACzB,IAAI,CAACk2I,QAAQ,CAAC1gQ,CAChB,EAAA,CACF,CACA,GAAI,CAAC,IAAI,CAAC6/P,QAAQ,EAAI,IAAI,CAAC/mH,QAAQ,EAAI,IAAI,CAAC/gJ,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC1E,MAAM8oQ,eAAiB95Q,MAAOoW,CAAAA,IAAI,CAAC,IAAI,CAACoiQ,WAAW,CAAA,CACnD,GAAIsB,cAAAA,CAAe17Q,MAAM,CAAG,CAAA,CAAG,CAC7B,IAAI,CAAC4tH,IAAI,CAAC8tJ,cAAc,CAAC,CAAE,CAAA,EAC7B,CACF,CACF,CACAF,yBAA4B,EAAA,CAC1B,IAAI,CAACX,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACO,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,MAAM,CAAG,IACd,CAAA,IAAI,CAACP,aAAa,CAAG,KACvB,CACAG,0BAA6B,EAAA,CAC3B,MAAM51I,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,MAAM80I,UAAa,CAAA,IAAI,CAACA,UAAU,CAClC,IAAIwB,QAAU,KACd,CAAA,IAAIC,MAAS,CAAA,KAAA,CACb,IAAI,MAAM76D,SAAao5D,IAAAA,UAAAA,CAAW,CAChC,GAAIA,UAAAA,CAAW/tQ,cAAc,CAAC20M,WAAY,CACxC,MAAMgkC,IAAOo1B,CAAAA,UAAU,CAACp5D,SAAU,CAAA,CAClC,GAAIgkC,IAAAA,CAAKj9O,WAAW,GAAKyvQ,SAAW,CAAA,CAClCqE,OAAS,KACX,CAAA,KAAO,CACLD,OAAAA,CAAU,KACZ,CACF,CACF,CACA,MAAMtuF,MAAQhoD,KAAM+nD,CAAAA,QAAQ,EAC5B,CAAA,GAAIuuF,OAAS,CAAA,CACX,IAAI,CAACP,QAAQ,CAAG,IAAIt6D,QAASzzB,CAAAA,KAAAA,CAC7B,CAAA,IAAI,CAACguF,MAAM,CAAG,IAAIv6D,QAASzzB,CAAAA,KAAAA,CAC3B,CAAA,IAAI,CAACwtF,QAAQ,CAAG,IAAI/5D,SAASzzB,KAC7B,CAAA,CAAA,IAAI,CAACwtF,QAAQ,CAACt5D,OAAO,CAAG,IAAI,CAACjzF,IAAI,CACjC,IAAI,CAACusJ,QAAQ,CAACvtF,QAAQ,CAACD,OACzB,CAAO,KAAA,GAAIuuF,MAAQ,CAAA,CACjB,IAAI,CAACd,aAAa,CAAG,IAAIjF,cAAc,IAAIkD,iBAAAA,CAAkB,IAAI,CAACpyI,MAAM,CAAA,EAC1E,CACF,CACAi0I,oBAAoBrrF,GAAG,CAAE,CACvB,GAAI,CAACA,GAAO,EAAA,CAACA,GAAIvvL,CAAAA,MAAM,CAAE,CACvB,MACF,CACA,MAAM83O,MAAS,CAAA,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,MAAM+jC,YAAe,CAACniD,KACpB,EAAA,CAAA,GAAIA,MAAM17J,SAAS,CAACh+D,MAAM,CAAG,CAAG,CAAA,CAC9B,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAI25N,KAAM17J,CAAAA,SAAS,CAACh+D,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC7C,IAAI,CAACo6Q,UAAU,CAACzgD,KAAM17J,CAAAA,SAAS,CAACj+D,CAAAA,CAAE,CAACsD,IAAI,CAAC,CAAGq2N,KAAAA,CAAM17J,SAAS,CAACj+D,CAAAA,CAAE,CAC7D,IAAI,CAAC06Q,eAAe,CAAC/gD,KAAAA,CAAM3vL,EAAE,CAAC,CAAG2vL,KAAAA,CAAM17J,SAAS,CAACj+D,CAAAA,CAAE,CAACsD,KAAI,CAE5D,CAAA,KAAO,CACL,IAAI,CAAC82Q,UAAU,CAACzgD,KAAMr2N,CAAAA,IAAI,CAAC,CAAGq2N,KAAMpyK,CAAAA,QAAQ,CAC5C,IAAI,CAACmzN,eAAe,CAAC/gD,KAAM3vL,CAAAA,EAAE,CAAC,CAAG2vL,MAAMr2N,KACzC,CACA,IAAI,CAAC82Q,UAAU,CAAG,IAAI,CAACA,WACzB,CACA,CAAA,MAAM2B,WAAa,KAACpiD,EAAAA,CAClBA,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACszQ,cAAc,CAAE,IAAI,CAC7C5gD,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAA,CAAU,IAAI,CAACkzQ,cAAc,CAAE,IAAI,CAC5C5gD,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAA,CAAU,IAAI,CAACuzQ,cAAc,CAAE,IAAI,CAAA,CAC7C7gD,MAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAACmzQ,cAAc,CAAE,IAAI,CAAA,CAC5C,GAAI7gD,KAAMpyK,CAAAA,QAAQ,CAAE,CAClBu0N,YAAaniD,CAAAA,KAAAA,EACf,CAAO,KAAA,CACLA,MAAMlyN,IAAI,CAAC,MAAQq0Q,CAAAA,YAAAA,CAAc,IAAI,CACrC,CAAA,GAAI,IAAI,CAACjpQ,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvCklO,OAAO7B,IAAI,CAACvc,KACd,EAAA,CACF,CACF,CAAA,CACA,IAAI,IAAI35N,EAAI,CAAG6e,CAAAA,CAAAA,CAAI2wK,GAAIvvL,CAAAA,MAAM,CAAED,CAAAA,CAAI6e,CAAG7e,CAAAA,CAAAA,EAAAA,CAAI,CACxC,MAAM25N,KAAAA,CAAQoe,MAAOh2O,CAAAA,GAAG,CAACytL,GAAG,CAACxvL,CAAE,CAAA,CAAA,CAC/B,GAAI25N,KAAO,CAAA,CACToiD,UAAWpiD,CAAAA,KAAAA,EACb,CAAO,KAAA,CACLoe,MAAO1wO,CAAAA,EAAE,CAAC,CAAC,IAAI,EAAEmoL,GAAG,CAACxvL,CAAE,CAAA,CAAC,CAAC,CAAE+7Q,YAC7B,CACF,CACF,CACAxB,cAAAA,CAAe5gD,KAAK,CAAEqiD,SAAS,CAAEj9H,QAAQ,CAAE47E,QAAQ,CAAE,CACnD,GAAIqhD,SAAc,GAAA,UAAA,EAAcA,SAAc,GAAA,WAAA,CAAa,CACzD,GAAIA,SAAAA,GAAc,WAAej9H,EAAAA,QAAAA,EAAYA,QAAS9+I,CAAAA,MAAM,GAAK,CAAA,CAAG,CAClE8+I,QAAW,CAAA,KACb,CACA,GAAIA,SAAU,CACZ,IAAIk9H,SAAY,CAAA,KAAA,CAChB,GAAIl9H,QAAS9+I,CAAAA,MAAM,CAAG,CAAA,CAAG,CACvB,GAAI06N,QAAYA,EAAAA,QAAAA,CAAS16N,MAAM,CAAG,CAAA,CAAG,CACnC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI26N,CAAAA,QAAAA,CAAS16N,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACtC,OAAO,IAAI,CAACo6Q,UAAU,CAACz/C,QAAQ,CAAC36N,CAAAA,CAAE,CAACsD,IAAI,EAAC,CAE5C,CAAO,KAAA,CACL,OAAO,IAAI,CAAC82Q,UAAU,CAACzgD,KAAMr2N,CAAAA,IAAI,EACnC,CACA24Q,SAAY,CAAA,KAAA,CACZ,IAAI,IAAIj8Q,EAAI,CAAGA,CAAAA,CAAAA,CAAI++I,QAAS9+I,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,IAAI,CAACo6Q,UAAU,CAACr7H,QAAQ,CAAC/+I,EAAE,CAACsD,IAAI,CAAC,CAAGy7I,QAAQ,CAAC/+I,CAAE,CAAA,CAC/C,GAAI,CAACi8Q,SAAAA,EAAa,IAAI,CAACtB,QAAQ,GAAK57H,QAAQ,CAAC/+I,EAAE,CAACsD,IAAI,CAAE,CACpD,GAAI,IAAI,CAAC6uQ,OAAO,EAAI,IAAI,CAACt/P,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvDopQ,SAAAA,CAAY,IACZ,CAAA,IAAI,CAACpuJ,IAAI,CAACkxB,QAAQ,CAAC/+I,EAAE,CAACsD,IAAI,EAC5B,CACF,CACF,CACA,GAAI,CAAC24Q,UAAW,CACd,IAAI,CAACrB,qBAAqB,GAC1B,IAAI,CAACN,eAAe,GACtB,CACF,CAAO,KAAA,CACL,GAAI3/C,QAAAA,EAAYA,QAAS16N,CAAAA,MAAM,CAAG,CAAA,CAAG,CACnC,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI26N,CAAAA,QAAAA,CAAS16N,MAAM,CAAED,IAAI,CACtC,OAAO,IAAI,CAACo6Q,UAAU,CAACz/C,QAAQ,CAAC36N,EAAE,CAACsD,IAAI,EACzC,CACF,CACA,IAAI,CAAC82Q,UAAU,CAACzgD,KAAMr2N,CAAAA,IAAI,CAAC,CAAGy7I,QAAQ,CAAC,CAAE,CAAA,EAAIA,SAC7Ck9H,SAAY,CAAA,KAAA,CACZ,GAAI,IAAI,CAACtB,QAAQ,GAAKhhD,KAAMr2N,CAAAA,IAAI,CAAE,CAChC,GAAI,IAAI,CAAC6uQ,OAAO,EAAI,IAAI,CAACt/P,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvDopQ,SAAAA,CAAY,KACZ,IAAI,CAACpuJ,IAAI,CAAC8rG,KAAMr2N,CAAAA,IAAI,EACtB,CACF,CACA,GAAI,CAAC24Q,SAAW,CAAA,CACd,IAAI,CAACrB,qBAAqB,EAAA,CAC1B,IAAI,CAACN,eAAe,GACtB,CACF,CACA,IAAI,CAACI,eAAe,CAAC/gD,KAAM3vL,CAAAA,EAAE,CAAC,CAAG2vL,MAAMr2N,KACzC,CAAO,KAAA,CACL,GAAIq3N,QAAS16N,CAAAA,MAAM,CAAG,CAAA,CAAG,CACvB,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAI26N,CAAAA,QAAAA,CAAS16N,MAAM,CAAED,IAAI,CACtC,OAAO,IAAI,CAACo6Q,UAAU,CAACz/C,QAAQ,CAAC36N,CAAAA,CAAE,CAACsD,IAAI,CAAC,CACxC,GAAI,IAAI,CAACq3Q,QAAQ,GAAKhgD,QAAQ,CAAC36N,CAAAA,CAAE,CAACsD,IAAI,CAAE,CACtC,IAAI,CAACs3Q,qBAAqB,GAC5B,CACF,CACF,CAAA,KAAO,CACL,OAAO,IAAI,CAACR,UAAU,CAACzgD,KAAMr2N,CAAAA,IAAI,CAAC,CAClC,GAAI,IAAI,CAACq3Q,QAAQ,GAAKhhD,KAAMr2N,CAAAA,IAAI,CAAE,CAChC,IAAI,CAACs3Q,qBAAqB,GAC5B,CACF,CACA,OAAO,IAAI,CAACF,eAAe,CAAC/gD,KAAM3vL,CAAAA,EAAE,EACtC,CACF,CACF,CACAwwO,cAAAA,CAAe7gD,KAAK,CAAE,CACpBA,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACuzQ,cAAc,CAAE,IAAI,CAAA,CAC7C,GAAI,IAAI,CAACJ,UAAU,CAAE,CACnB,GAAIzgD,KAAM17J,CAAAA,SAAS,CAACh+D,MAAM,CAAG,CAAG,CAAA,CAC9B,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAI25N,KAAM17J,CAAAA,SAAS,CAACh+D,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC7C,OAAO,IAAI,CAACo6Q,UAAU,CAACzgD,KAAAA,CAAM17J,SAAS,CAACj+D,EAAE,CAACsD,IAAI,CAAC,CAC/C,GAAI,IAAI,CAACq3Q,QAAQ,GAAKhhD,KAAM17J,CAAAA,SAAS,CAACj+D,CAAAA,CAAE,CAACsD,IAAI,CAAE,CAC7C,IAAI,CAACs3Q,qBAAqB,GAC5B,CACF,CACF,CAAO,KAAA,CACL,OAAO,IAAI,CAACR,UAAU,CAACzgD,KAAMr2N,CAAAA,IAAI,CAAC,CAClC,GAAI,IAAI,CAACq3Q,QAAQ,GAAKhhD,KAAAA,CAAMr2N,IAAI,CAAE,CAChC,IAAI,CAACs3Q,qBAAqB,GAC5B,CACF,CACA,OAAO,IAAI,CAACF,eAAe,CAAC/gD,KAAM3vL,CAAAA,EAAE,EAAC,CAEzC,CACA4wO,qBAAAA,EAAwB,CACtB,IAAI,CAACD,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACxI,OAAO,CAAG,KAAA,CACf,GAAI,IAAI,CAAC2I,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACttJ,WAAW,CAAG,CAC5B,CAAA,IAAI,CAACstJ,QAAQ,CAAC95D,SAAS,CAAG,KAC5B,CACA,GAAI,IAAI,CAAC+5D,aAAa,CAAE,CACtB,IAAI,IAAI/6Q,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC+6Q,aAAa,CAAChF,KAAK,CAAC91Q,MAAM,CAAE,EAAED,CAAAA,CAAE,CACtD,IAAI,CAAC+6Q,aAAa,CAAChF,KAAK,CAAC/1Q,CAAE,CAAA,CAAC2tH,IAAI,GAClC,CACA,IAAI,CAACotJ,aAAa,CAAC3nO,MAAM,CAAC,CAAA,CAAA,CAC1B,IAAI,CAAC2nO,aAAa,CAACjE,WAAW,GAChC,CACF,CACArrK,QAAAA,EAAW,CACT,KAAK,CAACA,QAAAA,EAAAA,CACN,MAAMssI,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAM9C,QAAW,CAAA,IAAI,CAAC8G,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACvC,GAAIA,MAAQ,CAAA,CACV,IAAI,IAAI/3O,EAAI,CAAGkY,CAAAA,GAAAA,CAAM6/N,MAAO93O,CAAAA,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC/C,IAAI25N,KAAAA,CAAQoe,MAAM,CAAC/3O,EAAE,CACrB,GAAI,EAAE25N,iBAAiBob,KAAI,CAAA,CAAI,CAC7Bpb,KAAAA,CAAQsb,QAASlzO,CAAAA,GAAG,CAAC43N,KAAAA,EACvB,CACA,GAAIA,KAAAA,EAAS,CAACA,KAAAA,CAAMpyK,QAAQ,CAAE,CAC5B0tL,QAASiB,CAAAA,IAAI,CAACvc,KAChB,EAAA,CACF,CACF,CACA,GAAI,IAAI,CAAC/lE,QAAQ,EAAI,CAAC,IAAI,CAAC+mH,QAAQ,CAAE,CACnC,MAAMgB,cAAiB95Q,CAAAA,MAAAA,CAAOoW,IAAI,CAAC,IAAI,CAACmiQ,UAAU,CAClD,CAAA,GAAIuB,cAAe17Q,CAAAA,MAAM,CAAG,CAAG,CAAA,CAC7B,IAAI,CAAC4tH,IAAI,CAAC8tJ,cAAc,CAAC,CAAA,CAAE,EAC7B,CACF,CACF,CACAO,cAAAA,EAAiB,CACf,IAAI,IAAIl8Q,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC+3O,MAAM,CAAC93O,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,IAAI25N,KAAQ,CAAA,IAAI,CAACoe,MAAM,CAAC/3O,CAAAA,CAAE,CAC1B,GAAI,OAAO25N,KAAU,GAAA,QAAA,CAAU,CAC7BA,KAAAA,CAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC43N,KACrC,EAAA,CACA,GAAI,CAACA,MAAO,SACZA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACszQ,cAAc,CAAE,IAAI,CAAA,CAC7C5gD,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACuzQ,cAAc,CAAE,IAAI,EAC/C,CACA,IAAI,CAACM,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACO,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,MAAM,CAAG,IACd,CAAA,IAAI,CAACP,aAAa,CAAG,KACvB,CACA3nO,OAAOyqE,EAAE,CAAE,CACT,GAAI,IAAI,CAACs9J,QAAQ,CAAE,CACjB,IAAI,CAACnmO,KAAK,EAAI6oE,GAAK,IAAI,CAACu9J,UAAU,CAClC,GAAI,IAAI,CAACpmO,KAAK,EAAI,CAAG,CAAA,CACnB,IAAI,CAACA,KAAK,CAAG,EACf,CACF,CACA,GAAI,IAAI,CAACm9N,OAAO,CAAE,CAChB,MAAM2I,QAAAA,CAAW,IAAI,CAACA,QAAQ,CAC9B,GAAIA,QAAAA,GAAa,MAAQ,IAAI,CAACx1I,KAAK,GAAK,KAAM,CAC5C,GAAI,IAAI,CAAC61I,QAAQ,CAAE,CACjBL,QAAS9lO,CAAAA,KAAK,CAAC,IAAI,CAACqmO,QAAQ,CAAE,IAAI,CAACC,MAAM,CAAE,IAAI,CAACtmO,KAAK,EACvD,CAAA,KAAO,CACL,MAAM83G,KAAAA,CAAQjvC,EAAK,CAAA,IAAI,CAACwyJ,KAAK,CAC7ByK,QAAAA,CAAS91E,OAAO,CAACl4C,KAAAA,CAAAA,CACjB,GAAI,IAAI,CAACujH,KAAK,CAAG,CAAKyK,EAAAA,QAAAA,CAAS55D,KAAK,GAAK45D,QAAAA,CAAS95D,SAAS,CAACtuH,QAAQ,EAAI,CAAC,IAAI,CAAC67B,IAAI,CAAE,CAClF,IAAI,CAAC4jJ,OAAO,CAAG,MACjB,MAAO,GAAI,IAAI,CAAC9B,KAAK,CAAG,CAAA,EAAKyK,QAAS55D,CAAAA,KAAK,GAAK,CAAK,EAAA,CAAC,IAAI,CAAC3yF,IAAI,CAAE,CAC/D,IAAI,CAAC4jJ,OAAO,CAAG,MACjB,CACF,CACA,GAAI,IAAI,CAACgJ,QAAQ,EAAI,IAAI,CAACnmO,KAAK,GAAK,EAAG,CACrC8lO,QAAAA,CAAS95D,SAAS,CAAG,IAAI,CAACs6D,MAAM,CAACt6D,UAAS,CAE5C85D,QAASv5D,CAAAA,WAAW,GACtB,CACF,CACA,MAAMw5D,aAAAA,CAAgB,IAAI,CAACA,aAAa,CACxC,GAAIA,cAAe,CACjB,IAAI,IAAI/6Q,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+6Q,aAAchF,CAAAA,KAAK,CAAC91Q,MAAM,CAAE,EAAED,CAAAA,CAAE,CACjD,MAAMk2Q,IAAAA,CAAO6E,aAAchF,CAAAA,KAAK,CAAC/1Q,CAAE,CACnCk2Q,CAAAA,IAAAA,CAAK7F,KAAK,CAAG,IAAI,CAACA,KAAK,CACvB,GAAI,CAAC,IAAI,CAAC8B,OAAO,CAAE,CACjB+D,IAAAA,CAAKlmJ,KAAK,GACZ,CAAA,KAAO,CACLkmJ,IAAAA,CAAKjqJ,MAAM,GACb,CACF,CACA,GAAI,IAAI,CAACkvJ,QAAQ,EAAIJ,cAAchF,KAAK,CAAC91Q,MAAM,CAAG,EAAG,CACnD86Q,aAAAA,CAAchF,KAAK,CAAC,CAAE,CAAA,CAACvF,WAAW,CAAG,IAAI,CAACx7N,MAAK,CAEjD+lO,cAAc3nO,MAAM,CAACyqE,EACvB,EAAA,CACA,GAAI,IAAI,CAACs9J,QAAQ,EAAI,IAAI,CAACnmO,KAAK,GAAK,EAAG,CACrC,IAAI,CAACmmO,QAAQ,CAAG,MAClB,CACF,CACApzQ,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,IAAO,CAAA,CAAA,IAAI,CAACq0Q,WAAW,CAAG,EAAC,CAAG,IAAI,CAACriC,OAAO,CAAG,EAAE,CAAE,IAAI,CAACxpH,KAAK,CAAG,IAAM,CAAA,IAAI,CAACusJ,aAAa,CAAG,IAAM,CAAA,IAAI,CAACz1I,KAAK,CAAG,IAAM,CAAA,IAAI,CAACw1I,QAAQ,CAAG,IAAM,CAAA,IAAI,CAACO,QAAQ,CAAG,IAAA,CAAM,IAAI,CAACC,MAAM,CAAG,IAAA,CAAM,IAAI,CAACZ,eAAe,CAAG,EAAI,CAAA,IAAI,CAACO,QAAQ,CAAG,IAAM,CAAA,IAAI,CAACN,QAAQ,CAAG,IAAA,CAAM,IAAI,CAAC3lO,KAAK,CAAG,CAAA,CAAG,IAAI,CAACmmO,QAAQ,CAAG,KAAA,CAAO,IAAI,CAACC,UAAU,CAAG,CAAA,CAAG,IAAI,CAACxnH,QAAQ,CAAG,KAAM,IAAI,CAACy8G,KAAK,CAAG,EACnW,CACF,CAEA,MAAM8L,sBAAAA,CACJp0Q,aAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMupQ,SAAY,CAAA,CAChB,SACD,CACD,OAAMC,wBAAiClO,SAAAA,eAAAA,CAUrCI,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDA,UAAAA,CAAa,CACX,UAAA,CACA,UACA,MACA,CAAA,OAAA,CACA,QACD,CAAA,CACD,IAAK,MAAM8+E,QAAAA,IAAY9+E,UAAW,CAAA,CAChC,GAAInqI,IAAK3N,CAAAA,cAAc,CAAC42N,QAAAA,CAAAA,CAAW,CACjCme,SAAS,CAACne,QAAAA,CAAS,CAAGjpN,IAAI,CAACipN,QAAS,EACtC,CACF,CACA,KAAK,CAACsrC,wBAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAMoiQ,SACjD,EAAA,CACAt4B,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,IAAI,CAACktO,YAAY,CAACltO,KAAO,CAAA,EACzBA,CAAAA,CAAAA,MAAM0rM,SAAS,CAAC+2B,MAAM,CAAGnxG,MAAOo6E,CAAAA,SAAS,CAAC+2B,MAAM,CAACl3O,KAAK,EACtDyU,CAAAA,KAAAA,CAAM0rM,SAAS,CAACqvD,KAAK,CAAGzpI,MAAAA,CAAOo6E,SAAS,CAACqvD,KAAK,CAC9C/6P,KAAM0rM,CAAAA,SAAS,CAACzyF,IAAI,CAAGqY,MAAOo6E,CAAAA,SAAS,CAACzyF,IAAI,CAC5Cj5G,KAAAA,CAAM0rM,SAAS,CAACptD,QAAQ,CAAGhtB,MAAAA,CAAOo6E,SAAS,CAACptD,QAC5Ct+I,CAAAA,KAAAA,CAAM0rM,SAAS,CAACnuM,OAAO,CAAG+zH,MAAAA,CAAOo6E,SAAS,CAACnuM,OAAO,CAClD,MAAMypQ,iBAAmB,EAAC,CAC1B,MAAMlC,UAAAA,CAAaxzI,MAAOo6E,CAAAA,SAAS,CAACo5D,UAAU,CAC9C,IAAI,MAAMvyQ,GAAOuyQ,IAAAA,UAAAA,CAAW,CAC1B,GAAIA,UAAAA,CAAW/tQ,cAAc,CAACxE,KAAM,CAClCy0Q,gBAAgB,CAACz0Q,GAAAA,CAAI,CAAGuyQ,UAAU,CAACvyQ,GAAAA,EAAI,CAE3C,CACAyN,KAAM0rM,CAAAA,SAAS,CAACo5D,UAAU,CAAGkC,gBAC7B,CAAA,MAAMC,sBAAwB,EAAC,CAC/B,MAAM7B,eAAAA,CAAkB9zI,MAAOo6E,CAAAA,SAAS,CAAC05D,eAAe,CACxD,IAAI,MAAM7yQ,GAAO6yQ,IAAAA,eAAAA,CAAgB,CAC/B,GAAIA,eAAAA,CAAgBruQ,cAAc,CAACxE,KAAM,CACvC00Q,qBAAqB,CAAC10Q,GAAAA,CAAI,CAAG6yQ,eAAe,CAAC7yQ,GAAAA,EAAI,CAErD,CACAyN,KAAM0rM,CAAAA,SAAS,CAAC05D,eAAe,CAAG6B,qBAAAA,CAClC,OAAOjnQ,KAAM0rM,CAAAA,SAAS,CAExBk7D,cAAet1I,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAChCA,SAAAA,CAAU86B,cAAc,GAC1B,CACAM,QAAS3+J,CAAAA,EAAE,CAAE,CACX,MAAM/jE,UAAa,CAAA,IAAI,CAAC0Z,KAAK,CAC7B,IAAI,MAAMxpB,EAAAA,IAAM8P,WAAW,CACzB,GAAIA,UAAWztC,CAAAA,cAAc,CAAC29B,EAAK,CAAA,CAAA,CACjC,MAAMo3M,SAAAA,CAAYtnM,UAAU,CAAC9P,EAAAA,CAAG,CAChC,GAAIo3M,SAAUpnO,CAAAA,IAAI,CAACnH,OAAO,EAAIuuO,SAAUx6G,CAAAA,MAAM,CAAC/zH,OAAO,CAAE,CACtDuuO,SAAAA,CAAUx6G,MAAM,CAACo6E,SAAS,CAAC5tK,MAAM,CAACyqE,EAAAA,EACpC,CACF,CACF,CACF,CACA10E,SAAU,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAA,CAAU,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CAlEAz0Q,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,WACV,CAAA,IAAI,CAACokO,aAAa,CAAG+L,kBACrB,CAAA,IAAI,CAAC7L,QAAQ,CAAG6N,sBAChB,CAAA,IAAI,CAACz7B,MAAM,CAAG07B,SAAAA,CACd,IAAI,CAAC/0Q,EAAE,CAAC,eAAgB,IAAI,CAAC60Q,cAAc,CAAE,IAAI,CACjD,CAAA,IAAI,CAAClsC,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAU,CAAA,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,EACnD,CA2DF,CACA7O,SAAUC,CAAAA,eAAe,CAACuM,kBAAAA,CAAmB9nJ,SAAS,CAAE+pJ,SAAAA,CAExD,CAAMK,MAAAA,QAAAA,CAiBJ,IAAIxrQ,MAAAA,EAAS,CACX,OAAO,IAAI,CAACP,OAAO,CAErB,IAAIpN,IAAO,EAAA,CACT,OAAO,IAAI,CAACunG,KACd,CACA,IAAIlrG,IAAO,EAAA,CACT,OAAO,IAAI,CAAC+Q,OAAO,CAAG,CAAC,EAAE,IAAI,CAACA,OAAO,CAAC/Q,IAAI,CAAC,CAAC,EAAE,IAAI,CAACkrG,KAAK,CAAC,CAAC,CAAG,IAAI,CAACA,KAAK,CAEzE,IAAIjvF,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC8gQ,MACd,CACA,IAAIC,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIloH,OAAO/sJ,KAAK,CAAE,CAChB,IAAI,CAACk1Q,OAAO,CAAGl1Q,MACjB,CACA,IAAI+sJ,MAAAA,EAAS,CACX,OAAO,IAAI,CAAChkJ,OAAO,CAAG,IAAI,CAACA,OAAO,CAACgkJ,MAAM,CAAG,IAAI,CAACmoH,OAAO,CAAG,IAAI,CAACA,OAAO,CAEzE,IAAIC,gBAAmB,EAAA,CACrB,MAAMpI,WAAAA,CAAc,IAAI,CAACjnJ,MAAM,CAACinJ,WAAW,CAC3C,GAAIA,WAAAA,GAAgB,CAAK,CAAA,OAAO,CAChC,CAAA,OAAO,IAAI,CAAChgH,MAAM,CAAGggH,WACvB,CACA,IAAIrE,OAAQ,CACV,OAAO,IAAI,CAAC0M,cAAc,CAAG,IAAI,CAACxM,MAAM,CAE1C,IAAIyM,aAAAA,EAAgB,CAClB,OAAOz9Q,IAAAA,CAAKma,GAAG,CAAC,IAAI,CAAC62P,MAAM,CAC7B,CACA,IAAI0M,aAAAA,CAAcA,aAAa,CAAE,CAC/B,IAAI,CAACF,cAAc,CAAGE,cACxB,CACA,IAAIA,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACF,cAAc,CAE5B,IAAIvN,SAAU7nQ,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACu1Q,UAAU,CAAGv1Q,MACpB,CACA,IAAI6nQ,WAAY,CACd,OAAO,IAAI,CAAC0N,UAAU,CA1DxBn1Q,WAAYm2E,CAAAA,KAAK,CAAEjtE,MAAM,CAAE3N,IAAI,CAAEsY,KAAK,CAAEy0P,KAAQ,CAAA,CAAC,CAAC,CAChD,IAAI,CAAC5iJ,MAAM,CAAGvvC,KACd,CAAA,IAAI,CAACxtE,OAAO,CAAGO,MACf,CAAA,IAAI,CAAC45F,KAAK,CAAGvnG,IAAAA,CACb,GAAItE,KAAMC,CAAAA,OAAO,CAAC2c,KAAAA,CAAAA,CAAQ,CACxB,IAAI,CAAC8gQ,MAAM,CAAG,IAAI76P,IAAAA,CAAKjG,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CACzC,CAAA,IAAI,CAACghQ,YAAY,CAAG,IAAI,CAACF,MAAM,CAACz8Q,MAAM,GACxC,CAAO,KAAA,CACL,IAAI,CAACy8Q,MAAM,CAAG9gQ,KACd,CAAA,IAAI,CAACghQ,YAAY,CAAGhhQ,MACtB,CACA,IAAI,CAAC20P,MAAM,CAAGF,KACd,CAAA,IAAI,CAAC0M,cAAc,CAAG,CACtB,CAAA,IAAI,CAACF,OAAO,CAAG,CACf,CAAA,IAAI,CAACK,UAAU,CAAG,KACpB,CA6CF,CAEA,MAAMC,sBAAsBV,QAoB1B,CAAA,IAAI/nH,MAAS,EAAA,CACX,IAAI,CAAC0oH,gBAAgB,EAAA,CACrB,OAAO,IAAI,CAAC1sQ,OAAO,CAAG,IAAI,CAACA,OAAO,CAACgkJ,MAAM,CAAG,IAAI,CAACmoH,OAAO,CAAG,IAAI,CAACA,OAClE,CACA,IAAIQ,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eACd,CACAC,QAASj6Q,CAAAA,IAAI,CAAE,CACb,IAAI,IAAItD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,GAAI,IAAI,CAACg3I,SAAS,CAACh3I,CAAAA,CAAE,CAACsD,IAAI,GAAKA,IAAM,CAAA,OAAO,IAAI,CAAC0zI,SAAS,CAACh3I,CAAAA,CAAE,CAE/D,OAAO,IACT,CACAw9Q,qBAAwB,EAAA,CACtB,IAAIC,WAAAA,CAAc,KAClB,IAAI,IAAIz9Q,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC09Q,gBAAgB,CAACz9Q,MAAM,CAAED,CAAI,EAAA,CAAA,CACnD,MAAM29Q,gBAAmB,CAAA,IAAI,CAACC,cAAc,CAAC,IAAI,CAACC,WAAW,CAAC79Q,EAAE,CAAE2H,CAAAA,KAAK,CACvE,GAAI,IAAI,CAAC+1Q,gBAAgB,CAAC19Q,EAAE,GAAK29Q,gBAAAA,CAAkB,CACjD,IAAI,CAACD,gBAAgB,CAAC19Q,CAAE,CAAA,CAAG29Q,iBAC3BF,WAAc,CAAA,MAChB,CACF,CACA,OAAOA,WACT,CACAK,uBAAAA,CAAwB99Q,CAAC,CAAE,CACzB,OAAO,IAAI,CAACg3I,SAAS,CAACh3I,CAAE,CAAA,CAACwvQ,SAAS,CAAC98K,QAAQ,CAAG,IAAI,CAACskD,SAAS,CAACh3I,CAAAA,CAAE,CAAC+9Q,eAAe,CAAG,IAAI,CAAC/mI,SAAS,CAACh3I,CAAE,CAAA,CAAC00J,MAAM,CAE5GspH,YAAe,EAAA,CACb,IAAIh+N,KAAAA,CAAQ,CACZ,CAAA,IAAI,IAAIhgD,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,IAAI,CAC5C,MAAMinJ,KAAQ,CAAA,IAAI,CAACjQ,SAAS,CAACh3I,CAAAA,CAAE,CAC/B,GAAIinJ,KAAAA,CAAMl/I,WAAW,GAAKo1Q,cAAe,CACvCn9N,KAAAA,EAAS,IAAI,CAACg3F,SAAS,CAACh3I,CAAAA,CAAE,CAACg+Q,YAAY,GACzC,CAAA,KAAO,CACLh+N,KAAAA,GACF,CACF,CACA,OAAOA,KACT,CAzDAj4C,YAAYm2E,KAAK,CAAEjtE,MAAM,CAAE3N,IAAI,CAAEsY,KAAK,CAAEguF,UAAU,CAAE07C,QAAQ,CAAE+3H,cAAc,CAAEY,UAAU,CAAEC,aAAa,CAAC,CACtG,KAAK,CAAChgM,KAAOjtE,CAAAA,MAAAA,CAAQ3N,KAAMsY,KAC3B,CAAA,CAAA,IAAI,CAACiiQ,WAAW,CAAGj0K,UACnB,CAAA,IAAI,CAAC8zK,gBAAgB,CAAG,IAAI1+Q,MAAM4qG,UAAW3pG,CAAAA,MAAM,CACnD,CAAA,IAAI,CAAC+2I,SAAS,CAAG,EAAE,CACnB,IAAI,CAAC4mI,cAAc,CAAGM,aACtB,CAAA,IAAI,CAACZ,eAAe,CAAGD,cAAmB,GAAA,KAC1C,CAAA,IAAI,CAACc,WAAW,CAAG,EAAC,CACpB,IAAI,IAAIn+Q,EAAI,CAAGA,CAAAA,CAAAA,CAAIslJ,QAASrlJ,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAMinJ,KAAAA,CAAQ3B,QAAQ,CAACtlJ,CAAAA,CAAE,CACzB,GAAIinJ,KAAM3B,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAACtO,SAAS,CAACl2I,IAAI,CAACm9Q,UAAAA,CAAWh3H,KAAMxvI,CAAAA,IAAI,CAAEymE,KAAO,CAAA,IAAI,CAAE+oE,KAAAA,CAAM3jJ,IAAI,CAAE,CAAK2jJ,CAAAA,KAAAA,CAAMxS,SAAS,CAAG,CACzFwS,KAAMxS,CAAAA,SAAS,CAChB,CAAGwS,KAAAA,CAAMr9C,UAAU,CAAEq9C,MAAM3B,QAAQ,CAAE2B,KAAMo2H,CAAAA,cAAc,CAAEY,UAAAA,CAAYC,aAC1E,CAAA,EAAA,CAAA,KAAO,CACL,IAAI,CAAClnI,SAAS,CAACl2I,IAAI,CAAC,IAAI27Q,QAASv+L,CAAAA,KAAAA,CAAO,IAAI,CAAE+oE,KAAAA,CAAM3jJ,IAAI,CAAE2jJ,KAAMrrI,CAAAA,KAAK,CAAEqrI,KAAAA,CAAMopH,KAAK,CACpF,EAAA,CACF,CACF,CAwCF,CAEA,MAAM+N,eAAAA,SAAwBjB,aAK5BC,CAAAA,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAACI,qBAAqB,EAAI,CAAA,OAClC,IAAIa,mBAAAA,CAAsB,CAC1B,CAAA,IAAI,CAACrnI,SAAS,CAAC,CAAE,CAAA,CAAC0d,MAAM,CAAG,EAC3B,IAAI,IAAI10J,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAMqnB,EAAK,CAAA,IAAI,CAAC2vH,SAAS,CAACh3I,CAAE,CAAA,CAC5B,GAAIA,CAAAA,GAAM,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAG,CAAA,CAAG,CACnC,MAAMqnB,GAAK,IAAI,CAAC0vH,SAAS,CAACh3I,EAAI,CAAE,CAAA,CAChC,GAAIqnB,EAAAA,CAAGzL,KAAK,GAAK0L,EAAG1L,CAAAA,KAAK,CAAE,CACzByL,EAAAA,CAAGqtI,MAAM,CAAG,EACZptI,CAAAA,EAAAA,CAAGotI,MAAM,CAAG,GACd,CAAO,KAAA,GAAIrhJ,IAAK6B,CAAAA,OAAO,CAAC,IAAI,CAACwoQ,gBAAgB,CAAC,CAAE,CAAA,CAAEr2P,EAAGzL,CAAAA,KAAK,CAAE0L,EAAAA,CAAG1L,KAAK,CAAE,MAAO,CAC3E,MAAM0iQ,cAAiB/+Q,CAAAA,IAAAA,CAAKma,GAAG,CAAC2N,EAAGzL,CAAAA,KAAK,CAAG0L,EAAG1L,CAAAA,KAAK,CACnD,CAAA,MAAM2iQ,kBAAoBh/Q,IAAKma,CAAAA,GAAG,CAAC2N,EAAAA,CAAGzL,KAAK,CAAG,IAAI,CAAC8hQ,gBAAgB,CAAC,CAAA,CAAE,CACtE,CAAA,MAAMhpH,OAAS,CAAC4pH,cAAiBC,CAAAA,iBAAgB,EAAKD,cACtDj3P,CAAAA,EAAGqtI,CAAAA,MAAM,CAAGA,MACZptI,CAAAA,EAAGotI,CAAAA,MAAM,CAAG,CAAA,CAAMA,OACpB,CAAA,KAAO,CACLptI,EAAGotI,CAAAA,MAAM,CAAG,EACd,CACF,CACA,GAAI,IAAI,CAAC4oH,eAAe,CAAE,CACxBe,mBAAuBh3P,EAAAA,EAAAA,CAAGmoP,SAAS,CAAC98K,QAAQ,CAAGrrE,GAAG21P,aAAa,CAAG31P,EAAGqtI,CAAAA,OAAM,CAE/E,CACA,GAAI,IAAI,CAAC4oH,eAAe,CAAE,CACxB,IAAI,IAAIt9Q,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAMinJ,KAAAA,CAAQ,IAAI,CAACjQ,SAAS,CAACh3I,CAAAA,CAAE,CAC/BinJ,KAAMg2H,CAAAA,aAAa,CAAGh2H,KAAMuoH,CAAAA,SAAS,CAAC98K,QAAQ,CAAGu0D,KAAM+1H,CAAAA,aAAa,CAAGqB,oBACzE,CACF,CACF,CAnCAt2Q,WAAYm2E,CAAAA,KAAK,CAAEjtE,MAAM,CAAE3N,IAAI,CAAEsY,KAAK,CAAEguF,UAAU,CAAE07C,QAAQ,CAAE+3H,cAAc,CAAEY,UAAU,CAAEC,aAAa,CAAC,CACtG54H,QAAAA,CAASp1I,IAAI,CAAC,CAACN,CAAAA,CAAGC,IAAID,CAAEgM,CAAAA,KAAK,CAAG/L,CAAAA,CAAE+L,KAAK,CAAA,CACvC,KAAK,CAACsiE,MAAOjtE,MAAQ3N,CAAAA,IAAAA,CAAMsY,KAAOguF,CAAAA,UAAAA,CAAY07C,QAAU+3H,CAAAA,cAAAA,CAAgBY,UAAYC,CAAAA,aAAAA,EACtF,CAiCF,CAEA,MAAMM,wBAAiCrB,SAAAA,aAAAA,CAOrCsB,mBAAmBz+Q,CAAC,CAAEumF,CAAC,CAAE,CACvB,MAAMm4L,QAAAA,CAAW,CAAC,EAAE1+Q,CAAE,CAAA,EAAEumF,CAAE,CAAA,CAAC,CAC3B,GAAI,CAAC,IAAI,CAAC43L,WAAW,CAACO,QAAAA,CAAS,CAAE,CAC/B,IAAI,CAACP,WAAW,CAACO,QAAAA,CAAS,CAAG,IAAI,CAAC1nI,SAAS,CAACzwD,CAAE,CAAA,CAAC3qE,KAAK,CAACtG,KAAK,EAAGsI,CAAAA,GAAG,CAAC,IAAI,CAACo5H,SAAS,CAACh3I,CAAE,CAAA,CAAC4b,KAAK,EAC1F,CACA,OAAO,IAAI,CAACuiQ,WAAW,CAACO,QAAAA,CAAS,CAEnCtB,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAACI,qBAAqB,EAAI,CAAA,OAClC,IAAImB,SAAAA,CAAWN,mBACfG,CAAAA,wBAAAA,CAAyBI,EAAE,CAACr2Q,GAAG,CAAI,GAAA,IAAI,CAACm1Q,gBAAgB,CAAA,CACxDiB,SAAY,CAAA,CAAA,CACZN,oBAAsB,CACtB,CAAA,IAAI,IAAIr+Q,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,MAAMinJ,KAAAA,CAAQ,IAAI,CAACjQ,SAAS,CAACh3I,CAAAA,CAAE,CAC/B,MAAM6+Q,EAAK53H,CAAAA,KAAAA,CAAMrrI,KAAK,CACtB4iQ,yBAAyBM,IAAI,CAACv2Q,GAAG,CAACi2Q,yBAAyBI,EAAE,CAACvqQ,CAAC,CAAEmqQ,yBAAyBI,EAAE,CAAC7iQ,CAAC,CAAA,CAAE6B,GAAG,CAACihQ,EACpG,CAAA,CAAA,IAAIE,KAAOj1P,MAAOgE,CAAAA,SAAS,CAC3B,IAAI,IAAIy4D,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACywD,SAAS,CAAC/2I,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC5C,GAAIvmF,IAAMumF,CAAG,CAAA,SACb,MAAMy4L,IAAAA,CAAO,IAAI,CAACP,kBAAkB,CAACz+Q,CAAAA,CAAGumF,GACxC,MAAMxmF,MAAAA,CAASsT,IAAKI,CAAAA,KAAK,CAAC,CAAA,CAAM+qQ,wBAAyBM,CAAAA,IAAI,CAAC5hQ,GAAG,CAAC8hQ,IAAQA,CAAAA,CAAAA,IAAAA,CAAK3hQ,QAAQ,EAAI,CAAA,CAAA,CAAK,CAChG,CAAA,CAAA,GAAItd,OAASg/Q,IAAMA,CAAAA,IAAAA,CAAOh/Q,OAC5B,CACAknJ,KAAMyN,CAAAA,MAAM,CAAGqqH,IAAAA,CACfJ,WAAaI,IACb,CAAA,GAAI,IAAI,CAACzB,eAAe,CAAE,CACxBe,mBAAuBp3H,EAAAA,KAAAA,CAAMuoH,SAAS,CAAC98K,QAAQ,CAAGu0D,KAAAA,CAAM+1H,aAAa,CAAG/1H,KAAMyN,CAAAA,OAAM,CAExF,CACA,IAAI,IAAI10J,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAMinJ,KAAAA,CAAQ,IAAI,CAACjQ,SAAS,CAACh3I,CAAAA,CAAE,CAC/BinJ,KAAAA,CAAMyN,MAAM,CAAGzN,MAAM41H,OAAO,CAAG8B,SAC/B,CAAA,GAAI,IAAI,CAACrB,eAAe,CAAE,CACxBr2H,KAAMg2H,CAAAA,aAAa,CAAGh2H,KAAAA,CAAMuoH,SAAS,CAAC98K,QAAQ,CAAGu0D,KAAAA,CAAM+1H,aAAa,CAAGqB,oBACzE,CACF,CACF,CACF,CA3CI,wBAFEG,CAEGI,EAAE,CAAG,IAAI/8P,IAGd,CALE28P,yBAKGM,IAAI,CAAG,IAAIj9P,IA0CpB,OAAMo9P,0BAAmC9B,SAAAA,aAAAA,CAOvC+B,UAAWl/Q,CAAAA,CAAC,CAAEumF,CAAC,CAAE,CACf,MAAMm4L,QAAW,CAAA,CAAC,EAAE1+Q,CAAAA,CAAE,EAAEumF,CAAAA,CAAE,CAAC,CAC3B,GAAI,CAAC,IAAI,CAAC43L,WAAW,CAACO,QAAAA,CAAS,CAAE,CAC/B,IAAI,CAACP,WAAW,CAACO,QAAAA,CAAS,CAAG,IAAI78P,IAAAA,CAAK,CAAC,IAAI,CAACm1H,SAAS,CAACzwD,CAAAA,CAAE,CAACo2L,WAAW,CAAG,IAAI,CAAC3lI,SAAS,CAACh3I,CAAE,CAAA,CAAC28Q,WAAW,GAAM,CAAA,IAAI,CAAC3lI,SAAS,CAACzwD,CAAE,CAAA,CAACo2L,WAAW,CAAG,IAAI,CAAC3lI,SAAS,CAACh3I,CAAAA,CAAE,CAAC28Q,WAAU,EAAK,CAAA,EAAI96P,IAAKK,CAAAA,QAAQ,CAAC,IAAI,CAAC80H,SAAS,CAACh3I,CAAAA,CAAE,CAAC4b,KAAK,CAAE,IAAI,CAACo7H,SAAS,CAACzwD,CAAAA,CAAE,CAAC3qE,KAAK,EAAI,CACnP,EAAA,CACA,OAAO,IAAI,CAACuiQ,WAAW,CAACO,QAAAA,CAAS,CAEnCtB,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAACI,qBAAqB,EAAI,CAAA,OAClC,IAAImB,SAAWN,CAAAA,mBAAAA,CACfY,0BAA2BL,CAAAA,EAAE,CAACr2Q,GAAG,CAAI,GAAA,IAAI,CAACm1Q,gBAAgB,CAAA,CAC1D,MAAMyB,OAAAA,CAAUF,2BAA2BL,EAAE,CAAC3+Q,MAAM,EAAA,CACpD0+Q,UAAY,CACZN,CAAAA,mBAAAA,CAAsB,CACtB,CAAA,IAAI,IAAIr+Q,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAMinJ,KAAAA,CAAQ,IAAI,CAACjQ,SAAS,CAACh3I,CAAAA,CAAE,CAC/B,MAAM6+Q,EAAK53H,CAAAA,KAAAA,CAAMrrI,KAAK,CACtB,MAAMwjQ,QAAWn4H,CAAAA,KAAAA,CAAM01H,WAAW,CAClC,IAAIoC,IAAAA,CAAOj1P,OAAOgE,SAAS,CAC3B,IAAI,IAAIy4D,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACywD,SAAS,CAAC/2I,MAAM,CAAEsmF,IAAI,CAC5C,GAAIvmF,CAAMumF,GAAAA,CAAAA,CAAG,SACb,MAAMy4L,IAAAA,CAAO,IAAI,CAACE,UAAU,CAACl/Q,CAAGumF,CAAAA,CAAAA,CAAAA,CAChC,MAAM84L,QAAW,CAAA,IAAI,CAACroI,SAAS,CAACzwD,CAAE,CAAA,CAACo2L,WAAW,CAC9CsC,2BAA2BH,IAAI,CAACv2Q,GAAG,CAAC,CAAC42Q,OAAUC,CAAAA,QAAO,GAAOC,CAAAA,QAAAA,CAAWD,QAAO,EAAK,CAAA,CAAIv9P,CAAAA,IAAAA,CAAKK,QAAQ,CAAC28P,EAAAA,CAAII,0BAA2BL,CAAAA,EAAE,CAAI,CAAA,CAAA,CAAA,CAC3I,MAAM7+Q,MAAAA,CAASsT,KAAKI,KAAK,CAAC,CAAMlU,CAAAA,IAAAA,CAAKma,GAAG,CAACulQ,0BAAAA,CAA2BH,IAAI,CAAC5hQ,GAAG,CAAC8hQ,IAAAA,CAAAA,CAAQA,IAAK3hQ,CAAAA,QAAQ,EAAK,CAAA,CAAA,CAAA,CAAK,CAC5G,CAAA,CAAA,GAAItd,OAASg/Q,IAAMA,CAAAA,IAAAA,CAAOh/Q,OAC5B,CACAknJ,MAAMyN,MAAM,CAAGqqH,IACfJ,CAAAA,SAAAA,EAAaI,KACb,GAAI,IAAI,CAACzB,eAAe,CAAE,CACxBe,mBAAuBp3H,EAAAA,KAAAA,CAAMuoH,SAAS,CAAC98K,QAAQ,CAAGu0D,KAAAA,CAAM+1H,aAAa,CAAG/1H,KAAAA,CAAMyN,OAChF,CACF,CACA,IAAI,IAAI10J,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,MAAMinJ,KAAAA,CAAQ,IAAI,CAACjQ,SAAS,CAACh3I,CAAAA,CAAE,CAC/BinJ,KAAMyN,CAAAA,MAAM,CAAGzN,KAAAA,CAAM41H,OAAO,CAAG8B,SAAAA,CAC/B,GAAI,IAAI,CAACrB,eAAe,CAAE,CACxB,MAAMgC,qBAAwBr4H,CAAAA,KAAAA,CAAMuoH,SAAS,CAAC98K,QAAQ,CAAG2rL,mBAAsBM,CAAAA,SAC/E13H,CAAAA,KAAMg2H,CAAAA,aAAa,CAAGh2H,KAAAA,CAAM+1H,aAAa,CAAGsC,sBAC9C,CACF,CACF,CACF,CAjDML,0BAEGL,CAAAA,EAAE,CAAG,IAAI/8P,IAGd,CALEo9P,2BAKGH,IAAI,CAAG,IAAIj9P,IA8CpB,OAAM09P,mBAA4BpC,SAAAA,aAAAA,CAChCC,gBAAmB,EAAA,CACjB,GAAI,IAAI,CAACI,qBAAqB,EAAA,CAAI,OAClC,IAAImB,SAAY,CAAA,CAAA,CAChB,IAAIN,mBAAsB,CAAA,CAAA,CAC1B,IAAI,IAAIr+Q,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C2+Q,SAAAA,EAAap/Q,IAAKoU,CAAAA,GAAG,CAAC,IAAI,CAAC+pQ,gBAAgB,CAAC19Q,EAAE,CAAE,CAAA,CAAA,CAChD,GAAI,IAAI,CAACs9Q,eAAe,CAAE,CACxB,MAAMr2H,KAAQ,CAAA,IAAI,CAACjQ,SAAS,CAACh3I,CAAE,CAAA,CAC/Bq+Q,mBAAuBp3H,EAAAA,KAAAA,CAAMuoH,SAAS,CAAC98K,QAAQ,CAAGu0D,KAAAA,CAAM+1H,aAAa,CAAG/1H,KAAAA,CAAMyN,OAChF,CACF,CACA,IAAI,IAAI10J,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg3I,SAAS,CAAC/2I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,MAAMinJ,KAAAA,CAAQ,IAAI,CAACjQ,SAAS,CAACh3I,CAAE,CAAA,CAC/B,MAAM00J,MAASn1J,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAAC+pQ,gBAAgB,CAAC19Q,CAAAA,CAAE,CAAE,CAClD,CAAA,CAAA,GAAI2+Q,SAAW,CAAA,CACb13H,KAAMyN,CAAAA,MAAM,CAAGA,MAAAA,CAASiqH,UACxB,GAAI,IAAI,CAACrB,eAAe,CAAE,CACxBr2H,KAAMg2H,CAAAA,aAAa,CAAGh2H,KAAMuoH,CAAAA,SAAS,CAAC98K,QAAQ,CAAGu0D,KAAAA,CAAM+1H,aAAa,CAAGqB,oBACzE,CACF,CAAA,KAAO,CACLp3H,KAAAA,CAAMyN,MAAM,CAAG,CAAA,CACf,GAAI,IAAI,CAAC4oH,eAAe,CAAE,CACxBr2H,KAAAA,CAAMg2H,aAAa,CAAG,EACxB,CACF,CACF,CACF,CACF,CAEA,MAAMuC,UAiBJC,WAAYhoQ,CAAAA,IAAI,CAAEymE,KAAK,CAAEjtE,MAAM,CAAE3N,IAAI,CAAEsY,KAAK,CAAEguF,UAAU,CAAE07C,QAAQ,CAAE+3H,cAAc,CAAEY,UAAU,CAAEC,aAAa,CAAE,CAC7G,OAAOzmQ,MACL,KAAK27P,aAAAA,CACH,OAAO,IAAIgL,eAAgBlgM,CAAAA,KAAAA,CAAOjtE,MAAQ3N,CAAAA,IAAAA,CAAMsY,MAAOguF,UAAY07C,CAAAA,QAAAA,CAAU+3H,cAAgBY,CAAAA,UAAAA,CAAYC,aAC3G,CAAA,CAAA,KAAK5K,uBACH,CAAA,OAAO,IAAIkL,wBAAyBtgM,CAAAA,KAAAA,CAAOjtE,MAAQ3N,CAAAA,IAAAA,CAAMsY,KAAOguF,CAAAA,UAAAA,CAAY07C,QAAU+3H,CAAAA,cAAAA,CAAgBY,WAAYC,aACpH,CAAA,CAAA,KAAK7K,yBACH,CAAA,OAAO,IAAI4L,0BAA2B/gM,CAAAA,KAAAA,CAAOjtE,MAAQ3N,CAAAA,IAAAA,CAAMsY,MAAOguF,UAAY07C,CAAAA,QAAAA,CAAU+3H,cAAgBY,CAAAA,UAAAA,CAAYC,aACtH,CAAA,CAAA,KAAK3K,iBACH,CAAA,OAAO,IAAIgM,mBAAoBrhM,CAAAA,KAAAA,CAAOjtE,MAAQ3N,CAAAA,IAAAA,CAAMsY,MAAOguF,UAAY07C,CAAAA,QAAAA,CAAU+3H,cAAgBY,CAAAA,UAAAA,CAAYC,cACjH,CACA,OAAOp2Q,SACT,CACA43Q,gBAAiB//Q,CAAAA,IAAI,CAAE,CACrB,IAAIggR,QAAW,CAAA,IAAI,CAACC,UAAU,CAC9B,IAAI,IAAI5/Q,CAAI,CAAA,CAAA,CAAGA,EAAIL,IAAKM,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClC2/Q,QAAAA,CAAWA,QAASpC,CAAAA,QAAQ,CAAC59Q,IAAI,CAACK,CAAE,CAAA,EACtC,CACA,OAAO2/Q,QACT,CACAE,aAAalgR,IAAI,CAAE6vQ,SAAS,CAAE,CAC5B,MAAMsQ,UAAangR,CAAAA,IAAAA,CAAKE,IAAI,CAAC,GAAA,CAAA,CAC7B,MAAMkgR,gBAAAA,CAAmB,IAAI,CAACC,cAAc,CAACt9J,SAAS,CAAC,SAACs+F,EAAAA,CACtD,OAAOA,SAAAA,CAAUrhN,IAAI,GAAKmgR,UAC5B,CAAA,CAAA,CACA,GAAIC,gBAAoB,EAAA,CAAA,CAAG,CACzB,IAAI,CAACC,cAAc,CAACD,gBAAiB,CAAA,CAACvQ,SAAS,CAAGA,UACpD,CAAO,KAAA,CACL,MAAMp/H,IAAAA,CAAO,IAAI,CAACsvI,gBAAgB,CAAC//Q,IAAAA,CACnCywI,CAAAA,IAAAA,CAAKo/H,SAAS,CAAGA,SAAAA,CACjB,IAAI,CAACwQ,cAAc,CAACl/Q,IAAI,CAACsvI,IAAAA,EAC3B,CACA,IAAI,CAAC6vI,oBAAoB,GAC3B,CACAA,oBAAAA,EAAuB,CACrB,IAAI,CAACC,cAAc,CAAG,IAAI,CAACF,cAAc,CAAC//Q,MAAM,CAAG,CAAA,EAAK,IAAI,CAAC+/Q,cAAc,CAACjoH,KAAK,CAAEipD,SAAYA,EAAAA,SAAAA,CAAUwuD,SAAS,EAAIxuD,SAAAA,CAAUwuD,SAAS,GAAKgI,UAAUK,KAAK,EAC/J,CACA,IAAIv0Q,IAAO,EAAA,CACT,OAAO,IAAI,CAACunG,KACd,CACA,IAAIuvK,WAAWzyQ,KAAK,CAAE,CACpB,IAAI,CAACq4Q,cAAc,CAAGr4Q,KACtB,CAAA,IAAI,CAACs4Q,oBAAoB,GAC3B,CACA,IAAI7F,UAAa,EAAA,CACf,OAAO,IAAI,CAAC4F,cACd,CACA,IAAIG,eAAgB,CAClB,OAAO,IAAI,CAACD,cACd,CACA,IAAI7P,MAAM1oQ,KAAK,CAAE,CACf,IAAI,CAAC4oQ,MAAM,CAAG5oQ,MAChB,CACA,IAAI0oQ,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACE,MACd,CACA,IAAIhiJ,IAAAA,CAAK5mH,KAAK,CAAE,CACd,IAAI,CAAC6mH,KAAK,CAAG7mH,MACf,CACA,IAAI4mH,IAAO,EAAA,CACT,OAAO,IAAI,CAACC,KAAK,CAEnB,IAAI4xJ,SAAY,EAAA,CACd,GAAI,CAAC,IAAI,CAACR,UAAU,EAAI,IAAI,CAACA,UAAU,CAAC73Q,WAAW,GAAK00Q,QAAU,CAAA,OAAO,EACzE,OAAO,IAAI,CAACmD,UAAU,CAAC5B,YAAY,EACrC,CACA,IAAIqC,UAAW,CACb,OAAO1M,mBAAoB1qQ,CAAAA,OAAO,CAAC,IAAI,CAAC3F,IAAI,IAAM,CAAC,CAAA,EAAK,IAAI,CAAC82Q,UAAU,CAACn6Q,MAAM,GAAK,IAAI,CAACmgR,SAC1F,CACA,IAAI5+D,OAAU,EAAA,CACZ,GAAI,IAAI,CAAC44D,UAAU,CAACn6Q,MAAM,CAAG,EAAG,CAC9B,MAAMqgR,aAAgB,CAAA,CAAC,EAAE,IAAI,CAACh9Q,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC82Q,UAAU,CAAC,CAAA,CAAE,CAAC5K,SAAS,CAAClsQ,IAAI,CAAC,CAAC,CACzE,MAAMi9Q,SAAY,CAAA,IAAI,CAACC,WAAW,CAACzF,aAAa,CAAC9D,QAAQ,CAACqJ,aAC1D,CAAA,CAAA,GAAIC,SAAW,CAAA,CACb,OAAOA,SAAUhyJ,CAAAA,IAAI,CAEzB,CACA,OAAO,KACT,CACA,IAAImmJ,WAAc,EAAA,CAChB,IAAItgM,GAAAA,CAAM,EACV,IAAI,IAAIp0E,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACo6Q,UAAU,CAACn6Q,MAAM,CAAED,CAAI,EAAA,CAAA,CAC7Co0E,GAAO,EAAA,IAAI,CAACgmM,UAAU,CAACp6Q,CAAE,CAAA,CAAC00J,OAC5B,CACA,OAAOtgF,GACT,CACA,IAAIqsM,kBAAmB,CACrB,IAAI/tL,QAAW,CAAA,CAAA,CACf,IAAI,IAAI1yF,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACo6Q,UAAU,CAACn6Q,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC7C,MAAMghN,UAAY,IAAI,CAACo5D,UAAU,CAACp6Q,CAAE,CAAA,CACpC,GAAIghN,SAAAA,CAAUwuD,SAAS,CAAC98K,QAAQ,CAAGA,QAAAA,CAAU,CAC3CA,QAAWsuH,CAAAA,SAAAA,CAAUwuD,SAAS,CAAC98K,SAAQ,CAE3C,CACA,OAAOA,QACT,CA/GA3qF,WAAY42G,CAAAA,UAAU,CAAEr7G,IAAI,CAAE+sQ,KAAQ,CAAA,CAAC,CAAE9hJ,IAAO,CAAA,IAAI,CAAEmyJ,SAAS,CAAC,CAC9D,IAAI,CAACrG,WAAW,CAAG,EACnB,CAAA,IAAI,CAAC2F,cAAc,CAAG,EAAE,CACxB,IAAI,CAACQ,WAAW,CAAG7hK,UACnB,CAAA,IAAI,CAAC9T,KAAK,CAAGvnG,IACb,CAAA,IAAI,CAACitQ,MAAM,CAAGF,KACd,CAAA,IAAI,CAAC7hJ,KAAK,CAAGD,IACb,CAAA,IAAI,CAAC2xJ,cAAc,CAAG,KAAA,CACtB,GAAIQ,SAAAA,CAAW,CACb,IAAI,CAACd,UAAU,CAAG,IAAI,CAACH,WAAW,CAACiB,SAAAA,CAAUjpQ,IAAI,CAAE,IAAI,CAAE,IAAA,CAAMnU,IAAM,CAAA,CAAA,CAAKo9Q,SAAUjsI,CAAAA,SAAS,CAAG,CAC9FisI,SAAAA,CAAUjsI,SAAS,CACpB,CAAGisI,SAAAA,CAAU92K,UAAU,CAAE82K,UAAUp7H,QAAQ,CAAEo7H,SAAUrD,CAAAA,cAAc,CAAE,IAAI,CAACoC,WAAW,CAAE,IAAI,CAACe,WAAW,CAACtC,aAAa,EAC1H,CAAA,KAAO,CACL,IAAI,CAAC0B,UAAU,CAAG,IAAInD,QAAAA,CAAS,IAAI,CAAE,IAAMn5Q,CAAAA,IAAAA,CAAM,EAAK+sQ,KACxD,EAAA,CACF,CAiGF,CAEA,MAAMsQ,cAWJ,CAAA,IAAIh3P,IAAO,EAAA,CACT,OAAO,IAAI,CAACi3P,KACd,CACA,IAAIh3P,EAAGjiB,CAAAA,KAAK,CAAE,CACZ,IAAI,CAACk5Q,GAAG,CAAGl5Q,MACb,CACA,IAAIiiB,EAAAA,EAAK,CACP,OAAO,IAAI,CAACi3P,GAAG,CAEjB,IAAIzpQ,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC8pM,KAAK,CAEnB,IAAIngC,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC+/F,SAAS,CAEvB,IAAIC,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIC,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SACd,CACA,IAAIC,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACC,iBACd,CACA,IAAIC,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACC,mBAAmB,CAEjC,IAAIC,WAAAA,EAAc,CAChB,OAAO,CAAC,CAAC,IAAI,CAACN,QAAQ,CAtCxBl5Q,WAAAA,CAAY,CAAE4hB,IAAI,CAAEC,EAAE,CAAExS,IAAO,CAAA,CAAC,CAAE2pK,QAAAA,CAAW,CAAC,CAAEggG,WAAa,EAAE,CAAEE,QAAW,CAAA,IAAI,CAAEE,gBAAAA,CAAmB,IAAI,CAAEE,mBAAqBhP,sBAAsB,CAAE,CAAC,CACvJ,IAAI,CAACuO,KAAK,CAAGj3P,IACb,CAAA,IAAI,CAACk3P,GAAG,CAAGj3P,EACX,CAAA,IAAI,CAACs3L,KAAK,CAAG9pM,IACb,CAAA,IAAI,CAAC0pQ,SAAS,CAAG//F,QACjB,CAAA,IAAI,CAACigG,WAAW,CAAGD,UACnB,CAAA,IAAI,CAACG,SAAS,CAAGD,QACjB,CAAA,IAAI,CAACG,iBAAiB,CAAGD,gBACzB,CAAA,IAAI,CAACG,mBAAmB,CAAGD,mBAC7B,CA+BF,CAEA,MAAMG,cAoCJ,CAAA,IAAIzG,eAAgB,CAClB,OAAO,IAAI,CAAC0G,cACd,CACA,IAAIC,YAAYC,SAAS,CAAE,CACzB,IAAI,CAACC,gBAAgB,CAAGD,UAC1B,CACA,IAAID,WAAc,EAAA,CAChB,OAAO,IAAI,CAACG,UAAU,CAAC,IAAI,CAACD,gBAAgB,CAC9C,CACA,IAAIE,iBAAkB,CACpB,OAAO,IAAI,CAACF,gBAAgB,CAE9B,IAAIG,qBAAAA,EAAwB,CAC1B,OAAO,IAAI,CAACL,WAAW,CAACtH,UAAU,CAEpC,IAAI4H,aAAcL,CAAAA,SAAS,CAAE,CAC3B,IAAI,CAACM,kBAAkB,CAAGN,UAC5B,CACA,IAAIK,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACH,UAAU,CAAC,IAAI,CAACI,kBAAkB,CAChD,CACA,IAAIC,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACD,kBAAkB,CAEhC,IAAI5B,QAAW,EAAA,CACb,IAAIA,QAAAA,CAAW,IACf,CAAA,IAAI,IAAIrgR,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACmiR,WAAW,CAACliR,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC9C,GAAI,CAAC,IAAI,CAACoiR,OAAO,CAAC,IAAI,CAACD,WAAW,CAACniR,CAAE,CAAA,CAAC,CAACqgR,QAAQ,CAAE,CAC/CA,QAAW,CAAA,MACb,CACF,CACA,OAAOA,QACT,CACA,IAAIlO,OAAQxqQ,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACuqQ,QAAQ,CAAGvqQ,MAClB,CACA,IAAIwqQ,OAAU,EAAA,CACZ,OAAO,IAAI,CAACD,QACd,CACA,IAAImQ,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACC,8BAA8B,CAAC,IAAI,CAACC,YAAY,CAC9D,CACA,IAAIC,mBAAsB,EAAA,CACxB,GAAI,IAAI,CAACC,yBAAyB,CAAE,CAClC,IAAIC,YAAc,CAClB,CAAA,IAAI,IAAI1iR,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC+hR,qBAAqB,CAAC9hR,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxD,MAAM2iR,UAAAA,CAAa,IAAI,CAAClB,cAAc,CAACxK,QAAQ,CAAC,IAAI,CAAC8K,qBAAqB,CAAC/hR,CAAAA,CAAE,CAACsD,IAAI,CAAA,CAClF,GAAIq/Q,UAAAA,CAAY,CACdD,WAAcnjR,CAAAA,IAAAA,CAAKoU,GAAG,CAAC+uQ,YAAaC,UAAW3S,CAAAA,KAAK,CAACt9K,QAAQ,EAC/D,CACF,CACA,IAAI,CAACkwL,oBAAoB,CAAGF,WAC5B,CAAA,IAAI,CAACD,yBAAyB,CAAG,MACnC,CACA,OAAO,IAAI,CAACG,oBAAoB,CAElC,IAAIC,sBAAAA,CAAuBzrQ,IAAI,CAAE,CAC/B,IAAI,CAAC0rQ,kBAAkB,CAAG1rQ,IAC1B,CAAA,IAAI,CAACmrQ,YAAY,CAAGnrQ,IAAAA,CACpB,IAAI,IAAIpX,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC+hR,qBAAqB,CAAC9hR,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxD,MAAMk2Q,KAAO,IAAI,CAAC6E,aAAa,CAAC9D,QAAQ,CAAC,IAAI,CAAC8K,qBAAqB,CAAC/hR,CAAAA,CAAE,CAACsD,IAAI,EAC3E,GAAI4yQ,IAAAA,CAAM,CACRA,IAAAA,CAAK9+P,IAAI,CAAGA,KACd,CACF,CACF,CACA,IAAIyrQ,sBAAyB,EAAA,CAC3B,OAAO,IAAI,CAACN,YACd,CACA,IAAIQ,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,gBAAgB,CAE9B,IAAIC,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACC,mBAAmB,CAAG,IAAI,CAACC,oBACzC,CACA,IAAIC,QAAS,CACX,OAAO,IAAI,CAACjB,WACd,CACAjL,UAAAA,CAAWtjO,IAAI,CAAE,CACf,OAAO,IAAI,CAAC6tO,cAAc,CAACvK,UAAU,CAACtjO,KACxC,CACAiuO,UAAAA,CAAWF,SAAS,CAAE,CACpB,OAAO,IAAI,CAACS,OAAO,CAACT,SAAAA,CAAU,CAEhCW,+BAA+BlrQ,IAAI,CAAE,CACnC,GAAI,IAAI,CAAC0qQ,eAAe,GAAKtO,gBAAAA,EAAoB,IAAI,CAACsO,eAAe,GAAKrO,gBAAkB,IAAI,CAACqO,eAAe,GAAKpO,eAAgB,CACnI,OAAO,CACT,CACA,MAAMiP,UAAa,CAAA,IAAI,CAAClB,cAAc,CAACxK,QAAQ,CAAC,IAAI,CAAC8K,qBAAqB,CAAC,CAAE,CAAA,CAACz+Q,IAAI,CAAA,CAClF,GAAIq/Q,UAAAA,CAAY,CACd,OAAOA,UAAAA,CAAW3Q,eAAe,CAAC56P,IACpC,CAAA,CACA,OAAO,IACT,CACAisQ,yBAA0B1B,CAAAA,SAAS,CAAE,CACnC,IAAI2B,WAAc,CAAA,IAAI,CAACC,8BAA8B,CAAC5B,SAAU,CAAA,CAChE,GAAI,CAAC2B,WAAa,CAAA,CAChBA,WAAc,CAAA,IAAI,CAACE,YAAY,CAAC7nL,MAAM,CAAC,UACrC,EAAA,CAAA,OAAO8nL,UAAW95P,CAAAA,IAAI,GAAKg4P,SAC7B,CAAA,CAAA,CACA3gG,YAAasiG,CAAAA,WAAAA,CACb,CAAA,IAAI,CAACC,8BAA8B,CAAC5B,SAAU,CAAA,CAAG2B,YACnD,CACA,OAAOA,WACT,CACAI,6BAA8BC,CAAAA,eAAe,CAAEC,oBAAoB,CAAE,CACnE,IAAIN,WAAc,CAAA,IAAI,CAACO,kCAAkC,CAAC,CAAC,EAAEF,eAAgB,CAAA,EAAE,EAAEC,oBAAqB,CAAA,CAAC,CAAC,CACxG,GAAI,CAACN,WAAAA,CAAa,CAChBA,WAAAA,CAAc,IAAI,CAACE,YAAY,CAAC7nL,MAAM,CAAE8nL,UACtC,EAAA,CAAA,OAAOA,WAAW95P,IAAI,GAAKg6P,eAAmBF,EAAAA,UAAAA,CAAW75P,EAAE,GAAKg6P,oBAClE,CACA5iG,CAAAA,CAAAA,YAAAA,CAAasiG,WACb,CAAA,CAAA,IAAI,CAACO,kCAAkC,CAAC,CAAC,EAAEF,eAAAA,CAAgB,EAAE,EAAEC,oBAAAA,CAAqB,CAAC,CAAC,CAAGN,YAC3F,CACA,OAAOA,WACT,CACAQ,2BAAAA,CAA4BL,UAAU,CAAE,CACtC,MAAM1C,UAAAA,CAAa0C,UAAW1C,CAAAA,UAAU,CACxC,IAAI,IAAI/gR,CAAI,CAAA,CAAA,CAAGA,EAAI+gR,UAAW9gR,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMooN,SAAY24D,CAAAA,UAAU,CAAC/gR,CAAE,CAAA,CAC/B,MAAMy0I,SAAAA,CAAY,IAAI,CAACmpI,cAAc,CAACx1D,UAAU27D,aAAa,CAAA,CAC7D,OAAO37D,SAAAA,CAAU47D,SAAS,EACxB,KAAKtR,iBAAAA,CACH,GAAI,EAAEj+H,SAAU9sI,CAAAA,KAAK,CAAGygN,SAAUzgN,CAAAA,KAAK,CAAD,CAAI,OAAO,KACjD,CAAA,MACGgrQ,KAAAA,cAAAA,CACH,GAAI,EAAEl+H,SAAAA,CAAU9sI,KAAK,CAAGygN,SAAAA,CAAUzgN,KAAI,EAAI,OAAO,KAAA,CACjD,MACF,KAAKirQ,2BACH,GAAI,EAAEn+H,SAAAA,CAAU9sI,KAAK,EAAIygN,SAAUzgN,CAAAA,KAAK,CAAG,CAAA,OAAO,KAClD,CAAA,WACGkrQ,uBACH,CAAA,GAAI,EAAEp+H,UAAU9sI,KAAK,EAAIygN,SAAUzgN,CAAAA,KAAK,CAAD,CAAI,OAAO,KAAA,CAClD,MACGmrQ,KAAAA,aAAAA,CACH,GAAI,EAAEr+H,SAAU9sI,CAAAA,KAAK,GAAKygN,SAAAA,CAAUzgN,KAAK,CAAD,CAAI,OAAO,KAAA,CACnD,MACF,KAAKorQ,iBACH,CAAA,GAAI,EAAEt+H,SAAAA,CAAU9sI,KAAK,GAAKygN,UAAUzgN,KAAI,CAAI,CAAA,OAAO,MACnD,KACJ,CACF,CACA,OAAO,IACT,CACAs8Q,eAAgBt6P,CAAAA,IAAI,CAAEC,EAAE,CAAE,CACxB,IAAI05P,YAAc,EAAE,CACpB,GAAI35P,IAAAA,EAAQC,GAAI,CACd05P,WAAAA,CAAcA,WAAY3qN,CAAAA,MAAM,CAAC,IAAI,CAAC+qN,6BAA6B,CAAC/5P,IAAMC,CAAAA,EAAAA,CAAAA,EAC5E,CAAO,KAAA,CACL,GAAI,CAAC,IAAI,CAACo5P,gBAAgB,CAAE,CAC1BM,WAAAA,CAAcA,WAAY3qN,CAAAA,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACzB,gBAAgB,CAAA,CAAA,CACrF0B,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC3P,cAAAA,CAAAA,EAClE,CAAO,KAAA,CACL,OAAO,IAAI,CAACwQ,6BAA6B,EACvC,KAAK5R,sBAAAA,CACHgR,YAAcA,WAAY3qN,CAAAA,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACpB,kBAAkB,CAAA,CAAA,CACvFqB,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC3P,cAChE,CAAA,CAAA,CAAA,MACGnB,KAAAA,sBAAAA,CACH+Q,YAAcA,WAAY3qN,CAAAA,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACzB,gBAAgB,CAAA,CAAA,CACrF0B,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC3P,cAChE,CAAA,CAAA,CAAA,MACGlB,KAAAA,2BAAAA,CACH8Q,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACpB,kBAAkB,CAAA,CAAA,CACvFqB,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACzB,gBAAgB,GACrF0B,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC3P,cAAAA,CAAAA,CAAAA,CAChE,MACGjB,KAAAA,2BAAAA,CACH6Q,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACzB,gBAAgB,GACrF0B,WAAcA,CAAAA,WAAAA,CAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC,IAAI,CAACpB,kBAAkB,CACvFqB,CAAAA,CAAAA,WAAAA,CAAcA,YAAY3qN,MAAM,CAAC,IAAI,CAAC0qN,yBAAyB,CAAC3P,cAAAA,CAAAA,CAAAA,CAChE,KACJ,CACF,CACF,CACA4P,WAAAA,CAAcA,WAAY3nL,CAAAA,MAAM,CAAE8nL,UAChC,EAAA,CAAA,GAAIA,WAAW75P,EAAE,GAAK,IAAI,CAACk4P,eAAe,CAAE,CAC1C,OAAO,KACT,CACA,GAAI2B,UAAWlC,CAAAA,WAAW,CAAE,CAC1B,IAAI4C,cAAAA,CAAiB,IAAI,CAAC7B,8BAA8B,CAAC,IAAI,CAACQ,kBAAkB,CAAA,CAChF,IAAIt9J,QAAAA,CAAW,IAAI,CAAC88J,8BAA8B,CAAC,IAAI,CAACC,YAAY,CACpE,CAAA,GAAIkB,WAAWxC,QAAQ,CAAG,CAAO,EAAA,IAAI,CAACS,WAAW,CAACnzJ,IAAI,CAAE,CACtD41J,cAAkB5kR,EAAAA,IAAAA,CAAKmQ,KAAK,CAACy0Q,cAC7B3+J,CAAAA,CAAAA,QAAAA,EAAYjmH,IAAKmQ,CAAAA,KAAK,CAAC81G,QACzB,EAAA,CACA,GAAIA,QAAAA,GAAa2+J,eAAgB,CAC/B,GAAI3+J,QAAai+J,GAAAA,UAAAA,CAAWxC,QAAQ,CAAE,CACpC,OAAO,IACT,CACF,CAAA,KAAO,GAAI,EAAEwC,UAAWxC,CAAAA,QAAQ,CAAGkD,cAAAA,EAAkBV,WAAWxC,QAAQ,EAAIz7J,QAAO,CAAA,CAAI,CACrF,OAAO,IACT,CACF,CACA,OAAO,IAAI,CAACs+J,2BAA2B,CAACL,UAC1C,CAAA,CAAA,CAAA,CACA,GAAIH,WAAAA,CAAYrjR,MAAM,CAAG,CAAA,CAAG,CAC1B,MAAMwjR,WAAaH,WAAW,CAAC,CAAE,CAAA,CACjC,GAAIG,UAAAA,CAAW75P,EAAE,GAAK6pP,eAAgB,CACpC,MAAM2Q,eAAkB,CAAA,IAAI,CAACf,yBAAyB,CAAC7P,gBAAiB,CAAA,CAAC,EAAE,CAC3EiQ,UAAW75P,CAAAA,EAAE,CAAGw6P,eAAAA,CAAgBx6P,GAClC,CACA,OAAO65P,UACT,CACA,OAAO,IACT,CACAY,yBAAAA,CAA0BZ,UAAU,CAAE,CACpC,IAAIvlM,KAAAA,CACJ,IAAI8iI,SAAAA,CACJ,IAAIk1D,IACJ,CAAA,IAAI,CAAC8L,aAAa,CAAGyB,UAAW95P,CAAAA,IAAI,CAAG,IAAI,CAACm4P,eAAe,CAAG,IAC9D,CAAA,IAAI,CAACJ,WAAW,CAAG+B,UAAW75P,CAAAA,EAAE,CAChC,IAAI,CAAC64P,yBAAyB,CAAG,IACjC,CAAA,IAAI,IAAIziR,CAAAA,CAAI,EAAGA,CAAIyjR,CAAAA,UAAAA,CAAW1C,UAAU,CAAC9gR,MAAM,CAAED,CAAI,EAAA,CAAA,CACnD,MAAMooN,SAAYq7D,CAAAA,UAAAA,CAAW1C,UAAU,CAAC/gR,EAAE,CAC1C,MAAMy0I,SAAY,CAAA,IAAI,CAACmpI,cAAc,CAACx1D,SAAU27D,CAAAA,aAAa,CAC7D,CAAA,GAAItvI,SAAUh9H,CAAAA,IAAI,GAAK07P,sBAAwB,CAAA,CAC7C,IAAI,CAACmR,eAAe,CAACl8D,SAAAA,CAAU27D,aAAa,EAC9C,CACF,CACA,GAAI,IAAI,CAAC/B,aAAa,CAAE,CACtB,GAAI,CAAC,IAAI,CAACgB,gBAAgB,CAAE,CAC1B,IAAI,CAACuB,yBAAyB,CAAG,GACnC,CACA,IAAI,CAACA,yBAAyB,CAACzjR,IAAI,CAAC,CAClCwC,IAAAA,CAAM,IAAI,CAAC2+Q,kBAAkB,CAC7BvtH,MAAAA,CAAQ,CACV,CAAA,CAAA,CACA,MAAM8vH,gBAAmBjlR,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,IAAI,CAACyvQ,oBAAoB,GAAK,EAAI,IAAI,CAACD,mBAAmB,CAAG,IAAI,CAACC,oBAAoB,CAAG,CAAA,CAAG,GAC9H,IAAI,IAAInjR,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACukR,yBAAyB,CAACtkR,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5D,GAAI,CAAC,IAAI,CAACgjR,gBAAgB,CAAE,CAC1B,IAAI,CAACuB,yBAAyB,CAACvkR,CAAAA,CAAE,CAAC00J,MAAM,CAAG,EAC7C,CAAA,KAAO,GAAI10J,CAAAA,GAAM,IAAI,CAACukR,yBAAyB,CAACtkR,MAAM,CAAG,CAAA,CAAG,CAC1D,IAAI,CAACskR,yBAAyB,CAACvkR,CAAAA,CAAE,CAAC00J,MAAM,EAAI,CAAM8vH,CAAAA,iBACpD,MAAO,CACL,IAAI,CAACD,yBAAyB,CAACvkR,CAAE,CAAA,CAAC00J,MAAM,CAAG8vH,iBAC7C,CACAtmM,KAAQ,CAAA,IAAI,CAAC2jM,UAAU,CAAC,IAAI,CAAC0C,yBAAyB,CAACvkR,CAAAA,CAAE,CAACsD,IAAI,EAC9D,IAAI,IAAIijF,CAAI,CAAA,CAAA,CAAGA,CAAIrI,CAAAA,KAAAA,CAAMk8L,UAAU,CAACn6Q,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC9Cy6H,SAAAA,CAAY9iI,MAAMk8L,UAAU,CAAC7zL,CAAE,CAAA,CAC/B2vL,KAAO,IAAI,CAACuL,cAAc,CAACxK,QAAQ,CAAC,CAAC,EAAEj2D,UAAU19M,IAAI,CAAC,UAAU,EAAEtD,EAAE,CAAC,CAAA,CACrE,GAAI,CAACk2Q,KAAM,CACTA,IAAAA,CAAO,IAAI,CAACuL,cAAc,CAACxK,QAAQ,CAACj2D,UAAU19M,IAAI,CAClD4yQ,CAAAA,IAAAA,CAAK5yQ,IAAI,CAAG,CAAC,EAAE09M,SAAAA,CAAU19M,IAAI,CAAC,UAAU,EAAEtD,CAAAA,CAAE,EAC9C,CACA,GAAIA,IAAM,IAAI,CAACukR,yBAAyB,CAACtkR,MAAM,CAAG,CAAA,CAAG,CACnDi2Q,IAAAA,CAAKlmJ,KAAK,GACZ,CACF,CACF,CACF,CACA,IAAI,CAACgzJ,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACG,oBAAoB,CAAGM,UAAAA,CAAWrsQ,IACvC,CAAA,IAAI,CAAC8rQ,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACgB,6BAA6B,CAAGT,UAAAA,CAAWpC,kBAAkB,CAClE,MAAMK,WAAAA,CAAc,IAAI,CAACA,WAAW,CACpC,MAAM+C,mBAAsBhB,CAAAA,UAAAA,CAAWtC,gBAAgB,EAAIsC,UAAWtC,CAAAA,gBAAgB,CAAG,CAAOsC,EAAAA,UAAAA,CAAWtC,gBAAgB,CAAG,EAC9H,IAAIuD,WAAAA,CAAc,CAClB,CAAA,IAAIC,kBAAoB,CACxB,CAAA,GAAIF,mBAAqB,CAAA,CACvB,MAAMG,UAAAA,CAAalD,WAAYjB,CAAAA,gBAAgB,CAAGgD,UAAWtC,CAAAA,gBAAgB,CAC7EuD,WAAAA,CAAcE,WACdD,iBAAoBC,CAAAA,WACtB,CACA,IAAI,CAACrC,YAAY,CAAGmC,WACpB,CAAA,IAAI,CAAC5B,kBAAkB,CAAG6B,kBAC1B,IAAI,IAAI3kR,CAAI,CAAA,CAAA,CAAGA,EAAI0hR,WAAYtH,CAAAA,UAAU,CAACn6Q,MAAM,CAAED,CAAI,EAAA,CAAA,CACpDk2Q,IAAO,CAAA,IAAI,CAACuL,cAAc,CAACxK,QAAQ,CAACyK,WAAYtH,CAAAA,UAAU,CAACp6Q,CAAAA,CAAE,CAACsD,IAAI,CAAA,CAClE,GAAI,CAAC4yQ,KAAM,CACT,MAAM7F,KAAQvmP,CAAAA,MAAAA,CAAO1R,QAAQ,CAACspQ,WAAYtH,CAAAA,UAAU,CAACp6Q,CAAE,CAAA,CAACqwQ,KAAK,CAAA,CAAIqR,YAAYtH,UAAU,CAACp6Q,CAAE,CAAA,CAACqwQ,KAAK,CAAGqR,WAAAA,CAAYrR,KAAK,CACpH6F,IAAO,CAAA,IAAInG,QAAS2R,CAAAA,WAAAA,CAAYtH,UAAU,CAACp6Q,CAAAA,CAAE,CAACwvQ,SAAS,CAAE,IAAI,CAAC+S,YAAY,CAAElS,MAAO,IAAMqR,CAAAA,WAAAA,CAAYnzJ,IAAI,CAAE,IAAI,CAACojJ,aAAa,CAC7HuE,CAAAA,IAAK5yQ,CAAAA,IAAI,CAAGo+Q,WAAAA,CAAYtH,UAAU,CAACp6Q,CAAAA,CAAE,CAACsD,IAAI,CAC1C,IAAI,CAACm+Q,cAAc,CAACxL,OAAO,CAACC,IAC9B,EAAA,CAAA,KAAO,CACLA,IAAKvoQ,CAAAA,KAAK,GACZ,CACA,GAAI81Q,UAAAA,CAAWrsQ,IAAI,CAAG,EAAG,CACvB8+P,IAAAA,CAAK1F,WAAW,CAAG,EACrB,CAAA,KAAO,CACL0F,IAAAA,CAAK1F,WAAW,CAAGkR,WAAAA,CAAYtH,UAAU,CAACp6Q,EAAE,CAAC88Q,iBAAgB,CAE/D5G,KAAKroJ,IAAI,EAAA,CACT,GAAI42J,mBAAAA,CAAqB,CACvBvO,IAAAA,CAAK9+P,IAAI,CAAGsqQ,YAAYjB,gBAAgB,CAAGgD,UAAWtC,CAAAA,iBAAgB,CACjE,KAAA,CACL,MAAMnyJ,SAAAA,CAAY0yJ,YAAYrR,KAAK,EAAI,CAAI,CAAA,CAAA,CAAI,IAAI,CAACmS,mBACpDtM,CAAAA,IAAK9+P,CAAAA,IAAI,CAAG43G,UACd,CACF,CACF,CACA61J,kBAAmBC,CAAAA,YAAY,CAAE,CAC/B,GAAI,CAAC,IAAI,CAACjD,UAAU,CAACiD,YAAAA,CAAAA,CAAe,CAClC,MACF,CACA,IAAIrB,UAAAA,CAAa,IAAI,CAACQ,eAAe,CAAC,IAAI,CAACrC,gBAAgB,CAAEkD,YAC7D,CAAA,CAAA,GAAI,CAACrB,UAAAA,CAAY,CACf,IAAI,CAAChC,cAAc,CAAC3K,WAAW,EAAA,CAC/B2M,WAAa,IAAI9C,cAAAA,CAAe,CAC9Bh3P,IAAAA,CAAM,KACNC,EAAIk7P,CAAAA,YACN,CACF,EAAA,CACA,IAAI,CAACT,yBAAyB,CAACZ,YACjC,CACAsB,eAAAA,CAAgBjF,UAAU,CAAEtQ,SAAS,CAAEa,KAAK,CAAE9hJ,IAAI,CAAE,CAClD,MAAM5uH,IAAOmgR,CAAAA,UAAAA,CAAWn/Q,KAAK,CAAC,GAC9B,CAAA,CAAA,IAAIu9E,MAAQ,IAAI,CAAC2jM,UAAU,CAACliR,IAAI,CAAC,CAAA,CAAE,CACnC,CAAA,GAAI,CAACu+E,KAAO,CAAA,CACVA,KAAQ,CAAA,IAAIshM,SAAU,CAAA,IAAI,CAAE7/Q,IAAI,CAAC,CAAE,CAAA,CAAE0wQ,KACrC,CAAA,CAAA,IAAI,CAAC+R,OAAO,CAACziR,IAAI,CAAC,CAAA,CAAE,CAAC,CAAGu+E,KACxB,CAAA,IAAI,CAACikM,WAAW,CAACrhR,IAAI,CAACnB,IAAI,CAAC,EAAE,EAC/B,CACAu+E,KAAM2hM,CAAAA,YAAY,CAAClgR,IAAM6vQ,CAAAA,SAAAA,CAAAA,CACzB,IAAI,CAACiS,cAAc,CAAC1K,eAAe,CAAC74L,MAAM56E,IAAI,CAAEksQ,SAChD,CAAA,CAAA,GAAIa,QAAUvoQ,SAAW,CAAA,CACvBo2E,KAAMmyL,CAAAA,KAAK,CAAGA,MAChB,CACA,GAAI9hJ,IAAAA,GAASzmH,SAAW,CAAA,CACtBo2E,KAAMqwC,CAAAA,IAAI,CAAGA,KACf,CACA,GAAI,CAAC,IAAI,CAAC2jJ,QAAQ,EAAI,IAAI,CAAC8S,SAAS,EAAI,IAAI,CAAC3E,QAAQ,CAAE,CACrD,IAAI,CAACxyJ,IAAI,GACX,CACA,IAAI,CAAC40J,yBAAyB,CAAG,KACnC,CACAwC,qBAAqB5jE,QAAQ,CAAE,CAC7B,GAAIsyD,mBAAoB1qQ,CAAAA,OAAO,CAACo4M,QAAAA,CAAAA,GAAc,CAAC,CAAG,CAAA,CAChD,OAAO,KACT,CACA,MAAMnjI,KAAAA,CAAQ,IAAI,CAAC2jM,UAAU,CAACxgE,QAAAA,CAAAA,CAC9B,GAAI,CAACnjI,KAAO,CAAA,CACV,OAAO,KACT,CACAA,KAAMk8L,CAAAA,UAAU,CAAG,EAAE,CACrB,OAAO,IACT,CACAvsJ,IAAAA,CAAK8zJ,SAAS,CAAE,CACd,GAAIA,SAAAA,CAAW,CACb,IAAI,CAACkD,kBAAkB,CAAClD,SAC1B,EAAA,CACA,IAAI,CAACzP,QAAQ,CAAG,KAClB,CACAliJ,KAAAA,EAAQ,CACN,IAAI,CAACkiJ,QAAQ,CAAG,MAClB,CACAvkQ,KAAQ,EAAA,CACN,IAAI,CAACs0Q,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACL,gBAAgB,CAAGpO,gBACxB,CAAA,IAAI,CAACtB,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACgR,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACC,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAACH,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACT,YAAY,CAAG,CACpB,CAAA,IAAI,CAACO,kBAAkB,CAAG,CAAA,CAC1B,IAAI,CAACrB,cAAc,CAAC3K,WAAW,GACjC,CACAE,MAAS,EAAA,CACP,IAAI,CAACyK,cAAc,CAACzK,MAAM,GAC5B,CACA5jO,MAAAA,CAAOyqE,EAAE,CAAE,CACT,GAAI,CAAC,IAAI,CAACq0J,QAAQ,CAAE,CAClB,MACF,CACA,IAAIh0L,KAAAA,CACJ,IAAI8iI,SAAAA,CACJ,IAAIk1D,IACJ,CAAA,GAAI,IAAI,CAACwL,WAAW,CAACnzJ,IAAI,EAAI,IAAI,CAACg0J,YAAY,CAAG,IAAI,CAACC,mBAAmB,CAAE,CACzE,IAAI,CAACM,kBAAkB,CAAG,IAAI,CAACP,YAAY,CAC3C,IAAI,CAACA,YAAY,EAAI1kK,EAAK,CAAA,IAAI,CAAC6jK,WAAW,CAACrR,KAAK,CAChD,GAAI,CAAC,IAAI,CAACqR,WAAW,CAACnzJ,IAAI,EAAI,IAAI,CAACg0J,YAAY,CAAG,IAAI,CAACC,mBAAmB,CAAE,CAC1E,IAAI,CAACD,YAAY,CAAG,IAAI,CAACC,mBAAmB,CAC5C3kK,EAAK,CAAA,IAAI,CAAC2kK,mBAAmB,CAAG,IAAI,CAACM,mBAAkB,CAE3D,CACA,MAAMW,UAAAA,CAAa,IAAI,CAACQ,eAAe,CAAC,IAAI,CAACrC,gBAAgB,CAC7D,CAAA,GAAI6B,UAAY,CAAA,CACd,IAAI,CAACY,yBAAyB,CAACZ,UAAAA,EACjC,CACA,GAAI,IAAI,CAACT,gBAAgB,CAAE,CACzB,IAAI,CAACE,mBAAmB,EAAIrlK,EAAAA,CAC5B,GAAI,IAAI,CAACqlK,mBAAmB,EAAI,IAAI,CAACC,oBAAoB,CAAE,CACzD,MAAMqB,gBAAAA,CAAmB,IAAI,CAACrB,oBAAoB,GAAK,CAAA,CAAI,IAAI,CAACD,mBAAmB,CAAG,IAAI,CAACC,oBAAoB,CAAG,CAAA,CAClH,IAAI,IAAInjR,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACukR,yBAAyB,CAACtkR,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5Dk+E,KAAAA,CAAQ,IAAI,CAAC2jM,UAAU,CAAC,IAAI,CAAC0C,yBAAyB,CAACvkR,CAAE,CAAA,CAACsD,IAAI,CAAA,CAC9D,MAAM4hR,WAAc,CAAA,IAAI,CAACX,yBAAyB,CAACvkR,CAAAA,CAAE,CAAC00J,MAAM,CAC5D,IAAI,IAAInuE,CAAI,CAAA,CAAA,CAAGA,EAAIrI,KAAMk8L,CAAAA,UAAU,CAACn6Q,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC9Cy6H,SAAY9iI,CAAAA,KAAAA,CAAMk8L,UAAU,CAAC7zL,CAAE,CAAA,CAC/B2vL,KAAO,IAAI,CAACuL,cAAc,CAACxK,QAAQ,CAAC,CAAC,EAAEj2D,SAAAA,CAAU19M,IAAI,CAAC,UAAU,EAAEtD,CAAAA,CAAE,CAAC,CAAA,CACrE,GAAIk2Q,IAAAA,CAAM,CACRA,IAAK1F,CAAAA,WAAW,CAAI,CAAA,CAAMgU,CAAAA,gBAAe,EAAKxjE,SAAAA,CAAU87D,gBAAgB,CAAGoI,YAC7E,CACF,CACF,CACAhnM,KAAAA,CAAQ,IAAI,CAACwjM,WAAW,CACxB,IAAI,IAAI1hR,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIk+E,KAAMk8L,CAAAA,UAAU,CAACn6Q,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9CghN,SAAY9iI,CAAAA,KAAAA,CAAMk8L,UAAU,CAACp6Q,EAAE,CAC/B,IAAI,CAACyhR,cAAc,CAACxK,QAAQ,CAACj2D,SAAAA,CAAU19M,IAAI,CAAEktQ,CAAAA,WAAW,CAAGgU,gBAAAA,CAAmBxjE,SAAU87D,CAAAA,iBAAgB,CAE5G,MAAO,CACL,IAAI,CAACkG,gBAAgB,CAAG,KACxB,CAAA,MAAMmC,WAAc,CAAA,IAAI,CAACpD,qBAAqB,CAAC9hR,MAAM,CACrD,MAAMmlR,UAAAA,CAAa,IAAI,CAAC3D,cAAc,CAAC1L,KAAK,CAAC91Q,MAAM,CACnD,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIolR,UAAaD,CAAAA,WAAAA,CAAanlR,CAAI,EAAA,CAAA,CAC/C,IAAI,CAACyhR,cAAc,CAAC7K,UAAU,CAAC,CAAA,EACjC,CACA,IAAI,CAAC2N,yBAAyB,CAAG,EAAE,CACnCrmM,MAAQ,IAAI,CAACwjM,WAAW,CACxB,IAAI,IAAI1hR,CAAI,CAAA,CAAA,CAAGA,EAAIk+E,KAAMk8L,CAAAA,UAAU,CAACn6Q,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9CghN,SAAY9iI,CAAAA,KAAAA,CAAMk8L,UAAU,CAACp6Q,CAAAA,CAAE,CAC/Bk2Q,IAAAA,CAAO,IAAI,CAACuL,cAAc,CAACxK,QAAQ,CAACj2D,SAAAA,CAAU19M,IAAI,CAAA,CAClD,GAAI4yQ,IAAM,CAAA,CACRA,IAAK1F,CAAAA,WAAW,CAAGxvD,SAAU87D,CAAAA,iBAAgB,CAEjD,CACF,CACF,CAAO,KAAA,CACL,GAAI,IAAI,CAAC4E,WAAW,CAAC9B,UAAU,CAAC73Q,WAAW,GAAK00Q,QAAAA,CAAU,CACxDv+L,KAAQ,CAAA,IAAI,CAACwjM,WAAW,CACxB,IAAI,IAAI1hR,CAAAA,CAAI,EAAGA,CAAIk+E,CAAAA,KAAAA,CAAMk8L,UAAU,CAACn6Q,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9CghN,UAAY9iI,KAAMk8L,CAAAA,UAAU,CAACp6Q,CAAAA,CAAE,CAC/Bk2Q,IAAAA,CAAO,IAAI,CAACuL,cAAc,CAACxK,QAAQ,CAACj2D,SAAAA,CAAU19M,IAAI,CAClD,CAAA,GAAI4yQ,IAAM,CAAA,CACRA,KAAK1F,WAAW,CAAGxvD,SAAU87D,CAAAA,gBAAgB,CAC7C,GAAI97D,SAAU/vM,CAAAA,MAAM,CAACosQ,cAAc,CAAE,CACnCnH,IAAAA,CAAK7F,KAAK,CAAGrvD,SAAAA,CAAUqvD,MACzB,CACF,CACF,CACF,CACF,CACA,IAAI,CAACoR,cAAc,CAACruO,MAAM,CAACyqE,EAAAA,CAAI,IAAI,CAAC6jK,WAAW,CAACvB,aAAa,EAC/D,CAldAp4Q,YAAYgzQ,aAAa,CAAEqI,MAAM,CAAEE,WAAW,CAAE1vH,QAAQ,CAAEw+G,YAAY,CAAE8L,aAAa,CAAEmH,cAAc,CAAC,CACpG,IAAI,CAACjD,OAAO,CAAG,EACf,CAAA,IAAI,CAACD,WAAW,CAAG,EAAE,CACrB,IAAI,CAACoB,8BAA8B,CAAG,EACtC,CAAA,IAAI,CAACM,kCAAkC,CAAG,EAC1C,CAAA,IAAI,CAAC5B,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACL,gBAAgB,CAAGpO,gBACxB,CAAA,IAAI,CAACoP,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAACH,yBAAyB,CAAG,IACjC,CAAA,IAAI,CAACvQ,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACgR,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACC,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAACH,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACkB,6BAA6B,CAAG7R,sBACrC,CAAA,IAAI,CAACkS,yBAAyB,CAAG,EAAE,CACnC,IAAI,CAAChC,YAAY,CAAG,CACpB,CAAA,IAAI,CAACO,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAAC5E,aAAa,CAAG,IACnB,EAAA,CAAA,OAAO,IAAI,CAACN,cAAc,CAACt6Q,IAAAA,CAC7B,CACA,CAAA,IAAI,CAACm+Q,cAAc,CAAG1G,aACtB,CAAA,IAAI,CAACpJ,aAAa,CAAGS,YACrB,CAAA,IAAI,CAACwL,cAAc,CAAGM,aACtB,CAAA,IAAI,CAACoG,eAAe,CAAGe,cACvB,CAAA,IAAI,IAAIrlR,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIojR,OAAOnjR,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,IAAI,CAACoiR,OAAO,CAACgB,MAAM,CAACpjR,CAAE,CAAA,CAACsD,IAAI,CAAC,CAAG,IAAIk8Q,SAAU,CAAA,IAAI,CAAE4D,MAAM,CAACpjR,CAAE,CAAA,CAACsD,IAAI,CAAE8/Q,MAAM,CAACpjR,CAAAA,CAAE,CAACqwQ,KAAK,CAAE+S,MAAM,CAACpjR,CAAE,CAAA,CAACuuH,IAAI,CAAE60J,MAAM,CAACpjR,CAAAA,CAAE,CAAC0gR,SAAS,EACvH,IAAI,CAACyB,WAAW,CAACrhR,IAAI,CAACsiR,MAAM,CAACpjR,CAAAA,CAAE,CAACsD,IAAI,EACtC,CACA,IAAI,CAACkgR,YAAY,CAAGF,WAAAA,CAAYz8Q,GAAG,CAAE48Q,UACnC,EAAA,CAAA,OAAO,IAAI9C,cAAe,CAAA,CACxB,GAAG8C,UAAU,CACf,CACF,CACA,CAAA,CAAA,IAAI,CAACuB,SAAS,CAAGpxH,SACnB,CAibF,CAEA,MAAM0xH,IAAAA,CAAO,IAAIzjQ,IACjB,CAAA,MAAM0jQ,IAAO,CAAA,IAAItpQ,IACjB,CAAA,MAAMupQ,EAAK,CAAA,IAAIrjQ,KACf,MAAM9iB,CAAAA,CAAI,IAAIgW,KAAAA,CACd,MAAMowQ,GAAM,CAAA,IAAI59P,IAChB,CAAA,MAAM69P,4BAA4B1M,iBAQhC,CAAA,OAAO2M,UAAWh9Q,CAAAA,MAAM,CAAE,CACxB,OAAOA,MAAM,CAAC,CAAE,CAClB,CACA,OAAOi9Q,aAAaj9Q,MAAM,CAAE,CAC1B,OAAO,CAAC,CAACA,MAAM,CAAC,CAAA,CAAE,CAEpB,OAAOk9Q,SAAAA,CAAUl9Q,MAAM,CAAE,CACvB28Q,IAAKjxQ,CAAAA,CAAC,CAAG1L,MAAM,CAAC,CAAE,CAClB28Q,CAAAA,IAAKvpQ,CAAAA,CAAC,CAAGpT,MAAM,CAAC,CAAA,CAAE,CAClB,OAAO28Q,IACT,CACA,OAAOQ,SAAUn9Q,CAAAA,MAAM,CAAE,CACvB48Q,IAAAA,CAAKlxQ,CAAC,CAAG1L,MAAM,CAAC,CAAA,CAAE,CAClB48Q,IAAKxpQ,CAAAA,CAAC,CAAGpT,MAAM,CAAC,CAAE,CAClB48Q,CAAAA,IAAAA,CAAKrpQ,CAAC,CAAGvT,MAAM,CAAC,CAAA,CAAE,CAClB,OAAO48Q,IACT,CACA,OAAOQ,SAAUp9Q,CAAAA,MAAM,CAAE,CACvB68Q,GAAGnxQ,CAAC,CAAG1L,MAAM,CAAC,EAAE,CAChB68Q,EAAGzpQ,CAAAA,CAAC,CAAGpT,MAAM,CAAC,CAAE,CAChB68Q,CAAAA,EAAAA,CAAGtpQ,CAAC,CAAGvT,MAAM,CAAC,CAAA,CAAE,CAChB68Q,GAAGjmQ,CAAC,CAAG5W,MAAM,CAAC,EAAE,CAChB,OAAO68Q,EACT,CACA,OAAOQ,UAAAA,CAAWr9Q,MAAM,CAAE,CACxBtJ,CAAEC,CAAAA,CAAC,CAAGqJ,MAAM,CAAC,CAAA,CAAE,CACftJ,EAAEwU,CAAC,CAAGlL,MAAM,CAAC,CAAE,CACftJ,CAAAA,CAAAA,CAAEwQ,CAAC,CAAGlH,MAAM,CAAC,CAAA,CAAE,CACftJ,CAAAA,CAAEuQ,CAAC,CAAGjH,MAAM,CAAC,CAAA,CAAE,CACf,OAAOtJ,CACT,CACA,OAAO4mR,SAAAA,CAAUt9Q,MAAM,CAAE,CACvB88Q,GAAIpxQ,CAAAA,CAAC,CAAG1L,MAAM,CAAC,CAAE,CACjB88Q,CAAAA,GAAI1pQ,CAAAA,CAAC,CAAGpT,MAAM,CAAC,CAAA,CAAE,CACjB88Q,IAAIvpQ,CAAC,CAAGvT,MAAM,CAAC,EAAE,CACjB88Q,GAAIlmQ,CAAAA,CAAC,CAAG5W,MAAM,CAAC,CAAE,CAAA,CACjB,OAAO88Q,GACT,CACAp7O,OAAAA,CAAQ1qC,IAAI,CAAE,CACZ,MAAM45Q,WAAAA,CAAczB,WAAWO,MAAM,CAAC14Q,IAAK24Q,CAAAA,UAAU,CAAE34Q,IAAKyhP,CAAAA,SAAS,CAAEzhP,IAAAA,CAAK44Q,YAAY,CAAA,CACxF,IAAI35Q,MAAAA,CAAS,IAAI,CAAC46Q,WAAW,CAACD,WAAAA,CAAY,CAC1C,GAAI36Q,MAAAA,CAAQ,OAAOA,MAAAA,CACnB,IAAIgoI,MACJ,CAAA,IAAIs/I,iBACJ,CAAA,IAAI1P,UACJ,CAAA,OAAO72Q,IAAKyhP,CAAAA,SAAS,EACnB,IAAK,QAAA,CACHx6G,MAAS,CAAA,IAAI,CAACu/I,uBAAuB,CAACxmR,IAAK24Q,CAAAA,UAAU,EACrD9B,UAAasB,CAAAA,UAAAA,CAAWO,MAAM,CAACzxI,MAAOjnI,CAAAA,IAAI,CAAE,QAAA,CAAUA,KAAK44Q,YAAY,CAAA,CACvE2N,iBAAoBt/I,CAAAA,MAAAA,CACpB,MACG,IAAA,OAAA,CACHs/I,iBAAoB,CAAA,IAAI,CAAC7gI,QAAQ,CAAC1lJ,IAClC,CAAA,CAAA,GAAI,CAACumR,iBAAAA,CAAmB,OAAO,IAAA,CAC/B1P,WAAasB,UAAWO,CAAAA,MAAM,CAAC6N,iBAAAA,CAAkBvmR,IAAI,CAAE,OAASA,CAAAA,IAAAA,CAAK44Q,YAAY,CACjF,CAAA,MAEA3xI,QAAAA,MAAAA,CAAS,IAAI,CAACu/I,uBAAuB,CAACxmR,KAAK24Q,UAAU,CAAA,CACrD4N,iBAAoBt/I,CAAAA,MAAAA,CAAO87G,aAAa,CAAC/iP,IAAAA,CAAKyhP,SAAS,CAAA,CACvD,GAAI,CAAC8kC,iBAAAA,CAAmB,CACtB,OAAO,IACT,CACA1P,UAAasB,CAAAA,UAAAA,CAAWO,MAAM,CAACzxI,MAAAA,CAAOjnI,IAAI,CAAEA,KAAKyhP,SAAS,CAAEzhP,IAAK44Q,CAAAA,YAAY,EAC7E,KACJ,CACA35Q,MAAS,CAAA,IAAI,CAACwnR,4BAA4B,CAACF,iBAAAA,CAAmBvmR,KAAK44Q,YAAY,CAAE/B,UACjF,CAAA,CAAA,IAAI,CAACgD,WAAW,CAACD,WAAAA,CAAY,CAAG36Q,MAChC,CAAA,OAAOA,MACT,CACAw0C,MAAO6+N,CAAAA,SAAS,CAAE,CAChB,MAAM0H,WAAc,CAAA,IAAI,CAACA,WAAW,CACpC,GAAIA,WAAAA,CAAa,CACf,IAAI,IAAI35Q,CAAI,CAAA,CAAA,CAAGA,CAAI25Q,CAAAA,WAAAA,CAAY15Q,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC25Q,WAAW,CAAC35Q,CAAAA,CAAE,CAAC0oJ,aAAa,GAC9B,CACF,CACF,CACAy9H,uBAAAA,CAAwBE,eAAe,CAAE,CACvC,GAAI,CAAC,IAAI,CAAC3P,aAAa,CAAC9vI,MAAM,CAACtjI,IAAI,GAAK+iR,eAAe,CAAC,CAAE,CAAA,CAAE,CAC1D,OAAO,IACT,CACA,MAAMC,UAAa,CAAA,IAAI,CAAC5P,aAAa,CAAC9vI,MAAM,CAC5C,GAAIy/I,eAAAA,CAAgBpmR,MAAM,GAAK,EAAG,CAChC,OAAOqmR,UACT,CACA,OAAOA,UAAW51Q,CAAAA,OAAO,CAAC42I,UAAU,CAAC++H,eAAAA,CACvC,CACAE,YAAAA,CAAaz2N,MAAM,CAAEnwD,IAAI,CAAE6mR,WAAW,CAAE,CACtC,MAAMC,KAAAA,CAAQ9mR,KAAKM,MAAM,EAAIumR,WAAAA,CAAc,CAAI,CAAA,CAAA,CAC/C,CAAA,IAAI,IAAIxmR,CAAI,CAAA,CAAA,CAAGA,CAAIymR,CAAAA,KAAAA,CAAOzmR,IAAI,CAC5B8vD,MAAAA,CAASA,MAAM,CAACnwD,IAAI,CAACK,CAAAA,CAAE,EACzB,CACA,OAAO8vD,MACT,CACA42N,QAAQ52N,MAAM,CAAEnwD,IAAI,CAAEgnR,QAAQ,CAAE,CAC9B,MAAM92N,GAAAA,CAAM,IAAI,CAAC02N,YAAY,CAACz2N,MAAAA,CAAQnwD,IACtC,CAAA,CAAA,MAAMkI,GAAMlI,CAAAA,IAAI,CAACA,IAAKM,CAAAA,MAAM,CAAG,CAAA,CAAE,CACjC,MAAM2mR,cAAAA,CAAiB,CAAC,GAAG,EAAE/+Q,GAAI5G,CAAAA,SAAS,CAAC,CAAA,CAAG,CAAGo3G,CAAAA,CAAAA,WAAW,EAAG,CAAA,EAAExwG,IAAI5G,SAAS,CAAC,CAAG,CAAA,CAAA,CAAC,CACnF,GAAI4uD,GAAG,CAAC+2N,cAAAA,CAAe,CAAE,CACvB,MAAMrsD,UAAa1qK,CAAAA,GAAG,CAAC,CAAC,GAAG,EAAEhoD,IAAI5G,SAAS,CAAC,CAAG,CAAA,CAAA,CAAA,CAAGo3G,WAAW,EAAG,CAAA,EAAExwG,GAAI5G,CAAAA,SAAS,CAAC,CAAG,CAAA,CAAA,CAAC,CAAC,CAACmP,IAAI,CAACy/C,GAC1F,CAAA,CAAA,IAAIg3N,WAAatsD,UACjBssD,EAAAA,CAAAA,UAAAA,CAAa,CACXA,UAAAA,CAAWxyQ,CAAC,CACZwyQ,UAAAA,CAAW9qQ,CAAC,CACZ8qQ,WAAW3qQ,CAAC,CACZ2qQ,UAAWtnQ,CAAAA,CAAC,CACb,CACD,MAAM+6M,UAAAA,CAAazqK,GAAG,CAAC+2N,cAAAA,CAAe,CAACx2Q,IAAI,CAACy/C,GAC5C,CAAA,CAAA,OAAO,CACLtnD,GAAAA,CAAK,MACH+xN,EAAAA,CAAAA,UAAAA,CAAWqsD,QAASh+Q,CAAAA,MAAAA,CAAAA,EACtB,CACA5G,CAAAA,GAAAA,CAAK,IAAI8kR,UACX,CACF,CACA,MAAM/nR,IAAO+wD,CAAAA,GAAG,CAAChoD,GAAAA,CAAI,CACrB,GAAI,OAAO/I,IAAS,GAAA,QAAA,EAAYA,IAAKuN,CAAAA,cAAc,CAAC,MAAA,CAAA,CAAS,CAC3D,OAAO,SAAS1D,MAAM,CAAA,CACpB7J,IAAKC,CAAAA,IAAI,CAAC4nR,QAASh+Q,CAAAA,MAAAA,CAAAA,EACrB,CACF,CACA,GAAI,CACFkZ,IAAAA,CACA5F,IACAkG,CAAAA,IAAAA,CACA9M,KACAwS,CAAAA,IAAAA,CACD,CAAC5e,OAAO,CAAC4mD,GAAI9nD,CAAAA,WAAW,CAAM,GAAA,CAAC,GAAKpI,IAAKM,CAAAA,MAAM,CAAG,CAAA,CAAG,CACpD,MAAMgR,MAAAA,CAAStR,IAAKM,CAAAA,MAAM,CAAG,CAAA,CAAI,IAAI,CAACsmR,YAAY,CAACz2N,MAAAA,CAAQnwD,IAAKkB,CAAAA,KAAK,CAAC,CAAG,CAAA,CAAC,CAAMivD,CAAAA,CAAAA,CAAAA,MAAAA,CAChF,MAAMg3N,MAASnnR,CAAAA,IAAI,CAACA,IAAAA,CAAKM,MAAM,CAAG,CAAE,CAAA,CACpC,OAAO,SAAS0I,MAAM,CACpBknD,CAAAA,GAAG,CAAChoD,GAAI,CAAA,CAAG8+Q,QAASh+Q,CAAAA,MAAAA,CACpBsI,CAAAA,MAAM,CAAC61Q,MAAO,CAAA,CAAGj3N,IACnB,CACF,CACA,OAAO,SAASlnD,MAAM,CAAA,CACpBknD,GAAG,CAAChoD,IAAI,CAAG8+Q,QAAAA,CAASh+Q,MACtB,EAAA,CACF,CACAy9Q,4BAA6BF,CAAAA,iBAAiB,CAAEa,iBAAiB,CAAEvQ,UAAU,CAAE,CAC7E,GAAI,IAAI,CAACiD,QAAQ,EAAIsN,iBAAiB,CAAC,CAAA,CAAE,CAACxmR,UAAU,CAAC,SAAY,CAAA,CAAA,CAC/D,OAAO,IAAI,CAACk5Q,QAAQ,CAAC/kH,MAAM,CAACwxH,iBAAmBa,CAAAA,iBAAiB,CAAC,CAAA,CAAE,CAAC3nR,OAAO,CAAC,SAAW,CAAA,EAAA,CAAA,CACzF,MAAO,GAAI,IAAI,CAACq6Q,QAAQ,EAAIsN,iBAAiB,CAAC,CAAA,CAAE,GAAK,UAAcA,EAAAA,iBAAAA,CAAkB9mR,MAAM,GAAK,CAAG,CAAA,CACjG,MAAM+mR,oBAAAA,CAAuBD,iBAAiB,CAAC,CAAA,CAAE,CACjD,GAAIC,oBAAqBvmR,CAAAA,QAAQ,CAAC,KAAA,CAAA,CAAQ,CACxC,OAAO,IAAI,CAACg5Q,QAAQ,CAACwN,eAAe,CAACf,iBAAmBc,CAAAA,oBAAAA,CAC1D,CACF,CACA,MAAM/jD,QAAW,CAAA,IAAI,CAACsjD,YAAY,CAACL,iBAAAA,CAAmBa,kBAAmB,IACzE,CAAA,CAAA,GAAI,OAAO9jD,QAAAA,GAAa,YAAa,CACnC,OAAO,IACT,CACA,IAAI0yC,MACJ,CAAA,IAAIuR,YACJ,CAAA,IAAIC,kBACJ,CAAA,GAAI,OAAOlkD,QAAAA,GAAa,SAAU,CAChC0yC,MAAAA,CAAS,IAAI,CAAC+Q,OAAO,CAACR,iBAAAA,CAAmBa,iBAAmBrB,CAAAA,mBAAAA,CAAoBC,UAAU,CAC1FuB,CAAAA,YAAAA,CAAe,QACfC,CAAAA,kBAAAA,CAAqB,EACvB,CAAA,KAAO,GAAI,OAAOlkD,WAAa,SAAW,CAAA,CACxC0yC,MAAS,CAAA,IAAI,CAAC+Q,OAAO,CAACR,iBAAmBa,CAAAA,iBAAAA,CAAmBrB,oBAAoBE,YAAY,CAAA,CAC5FsB,YAAe,CAAA,QAAA,CACfC,kBAAqB,CAAA,EACvB,CAAO,KAAA,GAAI,OAAOlkD,QAAa,GAAA,QAAA,CAAU,CACvC,OAAOA,SAASl7N,WAAW,EACzB,KAAK8Z,IAAAA,CACH8zP,OAAS,IAAI,CAAC+Q,OAAO,CAACR,iBAAmBa,CAAAA,iBAAAA,CAAmBrB,mBAAoBG,CAAAA,SAAS,EACzFqB,YAAe,CAAA,QAAA,CACfC,kBAAqB,CAAA,CAAA,CACrB,MACGlrQ,KAAAA,IAAAA,CACH05P,MAAS,CAAA,IAAI,CAAC+Q,OAAO,CAACR,iBAAmBa,CAAAA,iBAAAA,CAAmBrB,mBAAoBI,CAAAA,SAAS,CACzFoB,CAAAA,YAAAA,CAAe,SACfC,kBAAqB,CAAA,CAAA,CACrB,MACF,KAAKhlQ,KACHwzP,MAAS,CAAA,IAAI,CAAC+Q,OAAO,CAACR,iBAAmBa,CAAAA,iBAAAA,CAAmBrB,mBAAoBK,CAAAA,SAAS,CACzFmB,CAAAA,YAAAA,CAAe,QACfC,CAAAA,kBAAAA,CAAqB,EACrB,MACF,KAAK9xQ,KACHsgQ,CAAAA,MAAAA,CAAS,IAAI,CAAC+Q,OAAO,CAACR,kBAAmBa,iBAAmBrB,CAAAA,mBAAAA,CAAoBM,UAAU,CAAA,CAC1FkB,YAAe,CAAA,QAAA,CACfC,kBAAqB,CAAA,CAAA,CACrB,MACGt/P,KAAAA,IAAAA,CACH8tP,MAAS,CAAA,IAAI,CAAC+Q,OAAO,CAACR,iBAAmBa,CAAAA,iBAAAA,CAAmBrB,oBAAoBO,SAAS,CAAA,CACzFiB,YAAe,CAAA,YAAA,CACfC,kBAAqB,CAAA,CAAA,CACrB,MACF,QACE,OAAO,IACX,CACF,CACA,GAAIJ,kBAAkB99Q,OAAO,CAAC,UAAgB,CAAA,GAAA,CAAC,EAAG,CAChD,OAAO,IAAIuvQ,UAAAA,CAAW,MAAC7vQ,EAAAA,CACrBgtQ,MAAOhtQ,CAAAA,MAAAA,CAAAA,CACPu9Q,kBAAkBrjJ,QAAQ,CAACzvF,MAAM,GACnC,EAAG8zO,YAAcC,CAAAA,kBAAAA,CAAoB3Q,UACvC,CAAA,CACA,OAAO,IAAIgC,UAAAA,CAAW7C,MAAQuR,CAAAA,YAAAA,CAAcC,kBAAoB3Q,CAAAA,UAAAA,CAClE,CACAQ,MAAAA,EAAS,CACP,IAAI,CAACwC,WAAW,CAAG,EAAC,CACpB,GAAI,IAAI,CAAC9C,aAAa,CAACpwI,QAAQ,CAAE,CAC/B,IAAI,CAACgnD,KAAK,CAAG,IAAI,CAACopF,aAAa,CAACpwI,SAAQ,CAC1C,KAAO,CACL,IAAI,CAACgnD,KAAK,CAAG,IAAI,CAACopF,aAAa,CAAC9vI,OAClC,CACA,MAAMsB,KAAAA,CAAQ,EAAC,CACf,MAAM4xI,OAAU,CAAA,SAAS1pI,IAAI,CAAA,CAC3BlI,KAAK,CAACkI,IAAAA,CAAK9sI,IAAI,CAAC,CAAG8sI,IAAAA,CACnB,IAAI,IAAIpwI,EAAI,CAAGA,CAAAA,CAAAA,CAAIowI,IAAKkV,CAAAA,QAAQ,CAACrlJ,MAAM,CAAE,EAAED,CAAAA,CAAE,CAC3C85Q,OAAQ1pI,CAAAA,IAAAA,CAAKkV,QAAQ,CAACtlJ,CAAE,CAAA,EAC1B,CACF,CAAA,CACA85Q,QAAQ,IAAI,CAACxsF,KAAK,CAClB,CAAA,IAAI,CAACplD,KAAK,CAAGA,MACf,CAjOAngI,WAAY2uQ,CAAAA,aAAa,CAAEppF,KAAK,CAAE85F,SAAS,CAAExzO,IAAI,CAAE+iO,UAAU,CAAC,CAC5D,KAAK,CAACrpF,KACN,CAAA,CAAA,IAAI,CAACopF,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACrxF,KAAK,CAAGzxI,IACb,CAAA,IAAI,CAACwzO,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACzQ,UAAU,CAAGA,WACpB,CA4NF,CAEA,MAAM0Q,kBAaJ,CAAA,IAAI/jR,MAAO,CACT,OAAO,IAAI,CAACunG,KAAK,CAEnB,IAAIsnK,OAAAA,CAAQxqQ,KAAK,CAAE,CACjB,IAAI,CAAC64Q,WAAW,CAACrO,OAAO,CAAGxqQ,MAC7B,CACA,IAAIwqQ,OAAU,EAAA,CACZ,OAAO,IAAI,CAACqO,WAAW,CAACrO,OAAO,CAEjC,IAAIkO,QAAAA,EAAW,CACb,OAAO,IAAI,CAACG,WAAW,CAACH,QAAQ,CAElC,IAAIqB,WAAc,EAAA,CAChB,OAAO,IAAI,CAAClB,WAAW,CAACsB,eAC1B,CACA,IAAIE,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACxB,WAAW,CAAC0B,iBAAiB,CAE3C,IAAIG,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAAC7B,WAAW,CAAC6B,mBAAmB,CAE7C,IAAIG,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAAChC,WAAW,CAACgC,mBAC1B,CACA,IAAIK,sBAAAA,CAAuBzrQ,IAAI,CAAE,CAC/B,MAAMunG,UAAa,CAAA,IAAI,CAAC6hK,WAAW,CACnC,MAAM8G,YAAAA,CAAe3oK,UAAWwzJ,CAAAA,OAAO,CACvCxzJ,WAAWwzJ,OAAO,CAAG,IACrBxzJ,CAAAA,UAAWkkK,CAAAA,sBAAsB,CAAGzrQ,IAAAA,CACpC,GAAI,CAACkwQ,YAAAA,CAAc,CACjB3oK,UAAAA,CAAWvrE,MAAM,CAAC,CAAA,EACpB,CACAurE,UAAAA,CAAWwzJ,OAAO,CAAGmV,aACvB,CACA,IAAIzE,sBAAyB,EAAA,CAC3B,OAAO,IAAI,CAACrC,WAAW,CAACqC,sBAC1B,CACA,IAAIE,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACvC,WAAW,CAACuC,aAAa,CAEvC,IAAIE,kBAAAA,EAAqB,CACvB,GAAI,IAAI,CAACF,aAAa,CAAE,CACtB,OAAO,IAAI,CAACvC,WAAW,CAACyC,kBAAkB,CAE5C,OAAO,IACT,CACA,IAAIG,QAAS,CACX,OAAO,IAAI,CAAC5C,WAAW,CAAC4C,MAAM,CAEhC,IAAI1uH,MAAO/sJ,CAAAA,KAAK,CAAE,CAChB,IAAI,CAACk1Q,OAAO,CAAGl1Q,MACf,IAAI,CAAC4sQ,UAAU,CAACgT,cAAc,GAChC,CACA,IAAI7yH,MAAAA,EAAS,CACX,OAAO,IAAI,CAACmoH,OAAO,CAErB,IAAI9hH,SAAAA,CAAUpzJ,KAAK,CAAE,CACnB,GAAIA,KAAAA,GAAU,IAAI,CAAC6/Q,UAAU,CAAE,CAC7B,IAAI,CAACA,UAAU,CAAG7/Q,KAAAA,CAClB,GAAI,IAAI,CAAC64Q,WAAW,CAAChM,gBAAgB,CAAE,CACrC,IAAI,CAACD,UAAU,CAACyC,MAAM,GACxB,CACF,CACF,CACA,IAAIj8G,SAAAA,EAAY,CACd,OAAO,IAAI,CAACysH,UAAU,CAExB,IAAI5zO,IAAAA,CAAKjsC,KAAK,CAAE,CACd,GAAI,IAAI,CAAC64Q,WAAW,CAACtJ,UAAU,CAACvvQ,KAAAA,CAAAA,CAAQ,CACtC,IAAI,CAAC4sQ,UAAU,CAACyC,MAAM,GACxB,CACA,IAAI,CAAC3xF,KAAK,CAAG19K,MACf,CACA,IAAIisC,IAAO,EAAA,CACT,OAAO,IAAI,CAACyxI,KAAK,CAEnBx3D,IAAAA,CAAKvqH,IAAI,CAAE,CACT,IAAI,CAACk9Q,WAAW,CAAC3yJ,IAAI,CAACvqH,IAAAA,EACxB,CACA0sH,KAAAA,EAAQ,CACN,IAAI,CAACwwJ,WAAW,CAACxwJ,KAAK,GACxB,CACAriH,KAAAA,EAAQ,CACN,IAAI,CAAC6yQ,WAAW,CAAC7yQ,KAAK,GACxB,CACAqpQ,MAAS,EAAA,CACP,IAAI,CAACwJ,WAAW,CAACxJ,MAAM,GACzB,CACA5jO,MAAOyqE,CAAAA,EAAE,CAAE,CACT,GAAI,IAAI,CAAC4pK,UAAU,CAAE,CACnB,GAAI,IAAI,CAACC,iBAAiB,CAAG,IAAI,CAACD,UAAU,CAAE,CAC5C,IAAI,CAAC/yH,MAAM,CAAGrhJ,IAAKY,CAAAA,IAAI,CAAC,IAAI,CAAC0zQ,eAAe,CAAE,IAAI,CAACC,aAAa,CAAE,IAAI,CAACF,iBAAiB,CAAG,IAAI,CAACD,UAAU,CAC1G,CAAA,IAAI,CAACC,iBAAiB,EAAI7pK,GAC5B,CAAA,KAAO,CACL,IAAI,CAAC62C,MAAM,CAAG,IAAI,CAACkzH,aACnB,CAAA,IAAI,CAACH,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,aAAa,CAAG,EACvB,CACF,CACA,IAAI,CAACpH,WAAW,CAACptO,MAAM,CAACyqE,IAC1B,CACAgqK,aAAAA,CAAcnzH,MAAM,CAAEt9I,IAAI,CAAE,CAC1B,IAAI,CAACuwQ,eAAe,CAAG,IAAI,CAACjzH,MAAM,CAClC,IAAI,CAACkzH,aAAa,CAAGlzH,MACrB,CAAA,IAAI,CAAC+yH,UAAU,CAAGloR,IAAKoU,CAAAA,GAAG,CAAC,CAAGyD,CAAAA,IAAAA,CAC9B,CAAA,IAAI,CAACswQ,iBAAiB,CAAG,EAC3B,CACA3C,eAAgB+C,CAAAA,QAAQ,CAAEtY,SAAS,CAAEa,KAAK,CAAE9hJ,IAAI,CAAE,CAChD,GAAI,EAAEihJ,SAAAA,YAAqBgI,SAAQ,CAAA,CAAI,CACrC,MACF,CACA,IAAI,CAACgJ,WAAW,CAACuE,eAAe,CAAC+C,QAAUtY,CAAAA,SAAAA,CAAWa,MAAO9hJ,IAC7D,CAAA,CAAA,GAAI,IAAI,CAACiyJ,WAAW,CAACgD,YAAY,CAACvjR,MAAM,GAAK,CAAA,CAAG,CAC9C,IAAI,CAACugR,WAAW,CAACgD,YAAY,CAAC1iR,IAAI,CAAC,IAAI6/Q,cAAe,CAAA,CACpDh3P,IAAM,CAAA,OAAA,CACNC,EAAIk+P,CAAAA,QACN,IACF,CACA,GAAI,IAAI,CAACvT,UAAU,CAAC3gH,QAAQ,EAAI,IAAI,CAAC2gH,UAAU,CAAC8L,QAAQ,CAAE,CACxD,IAAI,CAAC9L,UAAU,CAACpC,OAAO,CAAG,KAC5B,CACF,CACA8S,oBAAqB5jE,CAAAA,QAAQ,CAAE,CAC7B,GAAI,IAAI,CAACm/D,WAAW,CAACyE,oBAAoB,CAAC5jE,QAAW,CAAA,CAAA,CACnD,IAAI,CAACkzD,UAAU,CAACpC,OAAO,CAAG,MAC5B,CACF,CACA4V,kBAAkBpG,SAAS,CAAE,CAC3B,OAAO,IAAI,CAACpN,UAAU,CAACyT,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC1kR,IAAI,CAAC,CAAC,EAAEq+Q,UAAU,CAAC,CAAC,CAErE8B,UAAW75P,CAAAA,EAAE,CAAExS,IAAAA,CAAO,CAAC,CAAE+pQ,gBAAAA,CAAmB,IAAI,CAAE,CAChD,IAAI,CAACX,WAAW,CAAC6D,yBAAyB,CAAC,IAAI1D,cAAe,CAAA,CAC5Dh3P,IAAM,CAAA,IAAI,CAAC62P,WAAW,CAACsB,eAAe,CACtCl4P,EACAxS,CAAAA,IAAAA,CACA+pQ,gBACF,CACF,CAAA,EAAA,CAvJAp5Q,WAAYzE,CAAAA,IAAI,CAAEq7G,UAAU,CAAEyiI,SAAS,CAAE1sF,MAAS,CAAA,CAAC,CAAEqG,SAAAA,CAAY64G,oBAAoB,CAAC,CACpF,IAAI,CAACvuF,KAAK,CAAG,IACb,CAAA,IAAI,CAACoiG,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,aAAa,CAAG,CACrB,CAAA,IAAI,CAAC/8K,KAAK,CAAGvnG,IACb,CAAA,IAAI,CAACk9Q,WAAW,CAAG7hK,UACnB,CAAA,IAAI,CAAC41J,UAAU,CAAGnzB,SAClB,CAAA,IAAI,CAACy7B,OAAO,CAAGnoH,MACf,CAAA,IAAI,CAAC8yH,UAAU,CAAGzsH,UACpB,CA6IF,CAEA,MAAMktH,cAmDJ,CAAA,IAAIr+K,YAAa,CACf,OAAO/nG,MAAOskH,CAAAA,MAAM,CAAC,EAAI,CAAA,IAAI,CAAC03J,WAAW,CAC3C,CACA,IAAIl5I,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OACd,CAvDA/4I,WAAAA,CAAYiS,IAAI,CAAC,CACf,IAAI,CAAC8mI,OAAO,CAAG,EACf,CAAA,IAAI,CAAC+8H,WAAW,CAAG,EACnB,CAAA,GAAI,CAAC7+Q,KAAAA,CAAMC,OAAO,CAAC+a,IAAK2qH,CAAAA,MAAM,EAAG,CAC/B,IAAI,MAAMujJ,OAAAA,IAAWluQ,KAAK2qH,MAAM,CAAC,CAC/B,MAAMwjJ,UAAYnuQ,IAAK2qH,CAAAA,MAAM,CAACujJ,OAAAA,CAAQ,CACtC,MAAMnjJ,KAAQ,CAAA,CACZzhI,KAAM6kR,SAAU7kR,CAAAA,IAAI,CACpBy3J,SAAAA,CAAWotH,UAAUptH,SAAS,CAC9BrG,MAAQyzH,CAAAA,SAAAA,CAAUzzH,MAAM,CACxB0uH,MAAAA,CAAQ,EAAE,CACVE,WAAa,CAAA,EAAE,CACjB,CACA,IAAI,IAAItjR,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAImoR,UAAU/E,MAAM,CAACnjR,MAAM,CAAED,IAAI,CAC9C+kI,KAAAA,CAAMq+I,MAAM,CAACtiR,IAAI,CAACkZ,IAAKopQ,CAAAA,MAAM,CAAC+E,SAAU/E,CAAAA,MAAM,CAACpjR,CAAAA,CAAE,CAAC,EACpD,CACA,IAAI,IAAIA,EAAI,CAAGA,CAAAA,CAAAA,CAAImoR,SAAU7E,CAAAA,WAAW,CAACrjR,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnD,MAAMooR,mBAAAA,CAAsBpuQ,IAAKspQ,CAAAA,WAAW,CAAC6E,SAAU7E,CAAAA,WAAW,CAACtjR,CAAAA,CAAE,CAAC,CACtE,GAAIooR,mBAAoBrH,CAAAA,UAAU,EAAI,CAAC/hR,KAAMC,CAAAA,OAAO,CAACmpR,mBAAoBrH,CAAAA,UAAU,CAAG,CAAA,CACpF,MAAMsH,aAAgBxmR,CAAAA,MAAAA,CAAOoW,IAAI,CAACmwQ,oBAAoBrH,UAAU,CAAA,CAChE,MAAMA,UAAAA,CAAa,EAAE,CACrB,IAAI,IAAIx6L,EAAI,CAAGA,CAAAA,CAAAA,CAAI8hM,aAAcpoR,CAAAA,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC3C,MAAM6hI,UAAYggE,mBAAoBrH,CAAAA,UAAU,CAACsH,aAAa,CAAC9hM,CAAAA,CAAE,CAAC,CAClE,GAAI6hI,SAAU27D,CAAAA,aAAa,CAAE,CAC3BhD,WAAWjgR,IAAI,CAACsnN,SAClB,EAAA,CACF,CACAggE,mBAAoBrH,CAAAA,UAAU,CAAGA,WACnC,CACA,GAAIj3P,MAAOs9C,CAAAA,SAAS,CAACghN,mBAAoBz+P,CAAAA,IAAI,CAAG,CAAA,CAC9Cy+P,oBAAoBz+P,IAAI,CAAG3P,IAAKopQ,CAAAA,MAAM,CAACgF,mBAAoBz+P,CAAAA,IAAI,CAAC,CAACrmB,KACnE,CACA,GAAIwmB,OAAOs9C,SAAS,CAACghN,mBAAoBx+P,CAAAA,EAAE,EAAG,CAC5Cw+P,mBAAAA,CAAoBx+P,EAAE,CAAG5P,KAAKopQ,MAAM,CAACgF,mBAAoBx+P,CAAAA,EAAE,CAAC,CAACtmB,KAC/D,CACAyhI,KAAMu+I,CAAAA,WAAW,CAACxiR,IAAI,CAACsnR,mBACzB,EAAA,CACA,IAAI,CAACtnI,OAAO,CAAChgJ,IAAI,CAACikI,KAAAA,EACpB,CACF,CAAA,KAAO,CACL,IAAI,CAAC+b,OAAO,CAAG9mI,IAAK2qH,CAAAA,OAAM,CAE5B,IAAI,MAAM2jJ,OAAAA,IAAWtuQ,KAAK4vF,UAAU,CAAC,CACnC,MAAMD,KAAQ3vF,CAAAA,IAAAA,CAAK4vF,UAAU,CAAC0+K,QAAQ,CACtC,IAAI,CAACzK,WAAW,CAACl0K,KAAAA,CAAMrmG,IAAI,CAAC,CAAG,CAC7BmU,IAAAA,CAAMkyF,KAAMlyF,CAAAA,IAAI,CAChB9P,KAAAA,CAAOgiG,KAAMhiG,CAAAA,KAAK,EAEtB,CACF,CAOF,CAEA,MAAM4gR,aAAsB5a,SAAAA,SAAAA,CAC1B,IAAI6a,eAAAA,CAAgB7gR,KAAK,CAAE,CACzB,GAAIA,KAAAA,GAAU,IAAM,CAAA,CAClB,IAAI,CAAC8gR,gBAAgB,EACrB,CAAA,MACF,CACA,GAAI,IAAI,CAACC,gBAAgB,CAAE,CACzB,MAAMF,eAAAA,CAAkB,IAAI,CAACzsC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC2mR,gBAAgB,CAAA,CACxEF,eAAgBvhR,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC0hR,6BAA6B,CAAE,IAAI,EACxE,CACA,IAAIC,GACJ,CAAA,IAAIC,MACJ,CAAA,GAAIlhR,iBAAiBotO,KAAO,CAAA,CAC1B6zC,GAAMjhR,CAAAA,KAAAA,CAAMqiC,EAAE,CACd6+O,MAAAA,CAAS,IAAI,CAAC9sC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC6mR,GAAAA,CAAAA,CACpC,GAAI,CAACC,MAAAA,CAAQ,CACX,IAAI,CAAC9sC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACznO,GAAG,CAAC3I,OAC3BkhR,MAAS,CAAA,IAAI,CAAC9sC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC6mR,GACtC,EAAA,CACF,CAAO,KAAA,CACLA,GAAMjhR,CAAAA,KAAAA,CACNkhR,OAAS,IAAI,CAAC9sC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC6mR,GACtC,EAAA,CACA,GAAI,CAACC,MAAU,EAAA,IAAI,CAACH,gBAAgB,GAAKE,GAAK,CAAA,CAC5C,MACF,CACA,GAAIC,MAAOthO,CAAAA,QAAQ,CAAE,CACnB,IAAI,CAACuhO,WAAW,CAAGD,MAAAA,CAAOthO,QAAQ,CAClC,IAAI,CAACwhO,cAAc,CAAC,IAAI,CAACD,WAAW,EACpCD,MAAOxhR,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACshR,6BAA6B,CAAE,IAAI,EAC9D,CAAA,KAAO,CACLE,MAAAA,CAAOphR,IAAI,CAAC,MAAA,CAAQ,KAACkyN,EAAAA,CACnB,IAAI,CAACmvD,WAAW,CAAGnvD,MAAMpyK,QAAQ,CACjC,IAAI,CAACwhO,cAAc,CAAC,IAAI,CAACD,WAAW,EACtC,CAAA,CAAA,CACAD,MAAOxhR,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACshR,6BAA6B,CAAE,IAAI,CAAA,CAC5D,IAAI,CAAC5sC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAAC2yC,MAAAA,EAC9B,CACA,IAAI,CAACH,gBAAgB,CAAGE,IAC1B,CACA,IAAIJ,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACE,gBAAgB,CAE9B,IAAIlU,gBAAiB7sQ,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAAC2sQ,iBAAiB,CAAG3sQ,KACzB,CAAA,IAAI,CAACiuQ,MAAM,GACb,CACA,IAAIpB,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACF,iBAAiB,CAE/B,IAAI0T,eAAgBrgR,CAAAA,KAAK,CAAE,CACzB,IAAI,CAACqhR,gBAAgB,CAAGrhR,KAAAA,CACxB,IAAI,CAACkzQ,mBAAmB,GAC1B,CACA,IAAImN,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACgB,gBAAgB,CAE9B,IAAI3Y,KAAM1oQ,CAAAA,KAAK,CAAE,CACf,IAAI,CAAC4oQ,MAAM,CAAG5oQ,MAChB,CACA,IAAI0oQ,OAAQ,CACV,OAAO,IAAI,CAACE,MAAM,CAEpB,IAAI38G,QAAAA,CAASjsJ,KAAK,CAAE,CAClB,IAAI,CAACq9Q,SAAS,CAAGr9Q,MACnB,CACA,IAAIisJ,QAAW,EAAA,CACb,OAAO,IAAI,CAACoxH,SACd,CACA,IAAI7S,OAAQxqQ,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACuqQ,QAAQ,CAAGvqQ,MAClB,CACA,IAAIwqQ,OAAU,EAAA,CACZ,OAAO,IAAI,CAACD,QACd,CACA,IAAI5rI,QAAS3+H,CAAAA,KAAK,CAAE,CAClB,GAAI,OAAOA,KAAAA,GAAU,SAAU,CAC7B,MAAMi/H,MAAS,CAAA,IAAI,CAACA,MAAM,CAAC0U,IAAI,CAACkoG,UAAU,CAAC77O,KAC3C,CAAA,CAAA,IAAI,CAAC4+H,SAAS,CAAGK,OACnB,MAAO,GAAIj/H,KAAAA,YAAiB46O,MAAQ,CAAA,CAClC,IAAI,CAACh8G,SAAS,CAAG5+H,MACnB,CAAO,KAAA,CACL,IAAI,CAAC4+H,SAAS,CAAG,KACnB,CACA,IAAI,CAACywI,MAAM,GACb,CACA,IAAI1wI,UAAW,CACb,OAAO,IAAI,CAACC,SACd,CACA,IAAI0iJ,WAAWthR,KAAK,CAAE,CACpB,IAAI,CAACmhR,WAAW,CAAGnhR,MACrB,CACA,IAAIshR,UAAa,EAAA,CACf,OAAO,IAAI,CAACH,WAAW,CAEzB,IAAInkJ,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OACd,CACA,IAAIooI,aAAavhR,KAAK,CAAE,CACtB,IAAI,CAACwhR,aAAa,CAAGxhR,MACvB,CACA,IAAIuhR,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACC,aAAa,CAE3B,IAAIv/K,UAAWjiG,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACk2Q,WAAW,CAAGl2Q,MACrB,CACA,IAAIiiG,UAAa,EAAA,CACf,OAAO,IAAI,CAACi0K,WACd,CACA,IAAI3/N,OAAAA,CAAQv2C,KAAK,CAAE,CACjB,IAAI,CAACwoI,QAAQ,CAAGxoI,MAClB,CACA,IAAIu2C,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACiyF,QAAQ,CAEtB,IAAIkwI,QAAAA,EAAW,CACb,IAAI,IAAIrgR,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,GAAI,CAAC,IAAI,CAAC8gJ,OAAO,CAAC9gJ,CAAAA,CAAE,CAACqgR,QAAQ,CAAE,CAC7B,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,IAAIlb,WAAY,CACd,GAAI,IAAI,CAACrkH,OAAO,CAAC7gJ,MAAM,CAAG,EAAG,CAC3B,OAAO,IAAI,CAAC6gJ,OAAO,CAAC,CAAA,CAAE,CAExB,OAAO,IACT,CACA6nI,6BAA8BhvD,CAAAA,KAAK,CAAE,CACnC,MAAMyvD,mBAAAA,CAAsB,IAAI,CAACpB,eAAe,CAChD,MAAMqB,UAAY,IAAI,CAAC1kJ,MAAM,CAAC99H,GAAG,CAAEk+H,KAAQA,EAAAA,KAAAA,CAAMnxF,IAAI,CAAA,CACrD,IAAI,CAAC60O,gBAAgB,EACrB,CAAA,IAAI,CAACK,WAAW,CAAG,IAAIb,cAAetuD,CAAAA,KAAAA,CAAMgc,KAAK,CACjD,CAAA,IAAI,CAACozC,cAAc,CAAC,IAAI,CAACD,WAAW,CACpC,CAAA,IAAI,CAACd,eAAe,CAAGoB,mBACvB,CAAA,IAAI,CAACvO,mBAAmB,GACxB,IAAI,CAACl2I,MAAM,CAACh4H,OAAO,CAAC,CAACo4H,KAAAA,CAAO/kI,KAC1B+kI,KAAMnxF,CAAAA,IAAI,CAAGy1O,SAAS,CAACrpR,CAAE,EAC3B,CACA,CAAA,CAAA,IAAI,CAACg3Q,MAAM,GACb,CACAuQ,cAAAA,EAAiB,CACf,MAAMrpO,OAAUr8C,CAAAA,MAAAA,CAAO8G,MAAM,CAAC,IAAI,CAACwnI,QAAQ,CAC3C,CAAA,IAAI,IAAInwI,CAAAA,CAAI,EAAGA,CAAIk+C,CAAAA,OAAAA,CAAQj+C,MAAM,CAAED,CAAI,EAAA,CAAA,CACrCk+C,OAAO,CAACl+C,EAAE,CAAC2yC,KAAK,CAAG,KACrB,CACF,CACA22O,SAAAA,CAAU,CAAEhmR,IAAI,CAAE8/Q,MAAM,CAAEE,WAAW,CAAE5uH,MAAM,CAAE9gH,IAAI,CAAEmnH,SAAS,CAAE,CAAE,CAChE,IAAIuyB,MACJ,GAAI,IAAI,CAAChnD,QAAQ,CAAE,CACjBgnD,KAAAA,CAAQ,IAAI,CAAChnD,SACf,CAAO,KAAA,CACLgnD,MAAQ,IAAI,CAAC1mD,OACf,CACA,MAAM+vI,UAAAA,CAAa,IAAI,CAAC71H,OAAO,CAAC7gJ,MAAM,CACtC,MAAMspR,UAAa,CAAA,IAAI7D,mBAAoB,CAAA,IAAI,CAAEp4F,KAAOhqL,CAAAA,IAAAA,CAAMswC,IAAM+iO,CAAAA,UAAAA,CAAAA,CACpE,MAAMoE,aAAgB,CAAA,IAAIjF,aAAcyT,CAAAA,UAAAA,CAAAA,CACxC,MAAM5qK,UAAa,CAAA,IAAI6iK,cAAezG,CAAAA,aAAAA,CAAeqI,MAAQE,CAAAA,WAAAA,CAAa,IAAI,CAAC0B,SAAS,CAAE,IAAI,CAAE,IAAI,CAAC9G,aAAa,CAAE,IAAI,CAACmH,cAAc,CACvI,CAAA,IAAI,CAACvkI,OAAO,CAAChgJ,IAAI,CAAC,IAAIumR,mBAAmB/jR,IAAMq7G,CAAAA,UAAAA,CAAY,IAAI,CAAE+1C,OAAQqG,SACzE,CAAA,CAAA,CAAA,IAAI,CAACouH,aAAa,CAAC7lR,IAAAA,CAAK,CAAGqzQ,UAAAA,CAC3B,OAAO,IAAI,CAAC71H,OAAO,CAAC61H,UAAW,CACjC,CACAvkG,QAAAA,CAAS9uK,IAAI,CAAEoxJ,MAAM,CAAE9gH,IAAI,CAAEmnH,SAAS,CAAE,CACtC,MAAMh2B,KAAQ,CAAA,IAAI,CAACykJ,kBAAkB,CAAClmR,IACtC,CAAA,CAAA,GAAIyhI,KAAO,CAAA,OAAOA,KAClB,CAAA,MAAMq+I,MAAS,CAAA,CACb,CACE,MAAQ,CAAA,OAAA,CACR,OAAS,CAAA,CACX,CACD,CAAA,CACD,MAAME,WAAAA,CAAc,EAAE,CACtB,OAAO,IAAI,CAACgG,SAAS,CAAC,CACpBhmR,IACA8/Q,CAAAA,MAAAA,CACAE,YACA5uH,MACA9gH,CAAAA,IAAAA,CACAmnH,SACF,CAAA,CACF,CACA0uH,iBAAAA,CAAkBR,UAAU,CAAE,CAC5B,IAAI,CAACpL,WAAW,CAAG,EACnB,CAAA,MAAM6L,SAAY7nR,CAAAA,MAAAA,CAAOoW,IAAI,CAACgxQ,UAAAA,CAAWr/K,UAAU,CAAA,CACnD,IAAI,IAAI5pG,CAAI,CAAA,CAAA,CAAGA,EAAI0pR,SAAUzpR,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC,MAAM2pR,QAAAA,CAAWD,SAAS,CAAC1pR,EAAE,CAC7B,IAAI,CAAC69Q,WAAW,CAAC8L,QAAS,CAAA,CAAG,CAC3BlyQ,IAAMwxQ,CAAAA,UAAAA,CAAWr/K,UAAU,CAAC+/K,SAAS,CAAClyQ,IAAI,CAC1C9P,KAAAA,CAAOshR,WAAWr/K,UAAU,CAAC+/K,QAAS,CAAA,CAAChiR,KACzC,EACF,CACF,CACAohR,cAAeE,CAAAA,UAAU,CAAE,CACzB,IAAI,CAACH,WAAW,CAAGG,UAAAA,CACnB,IAAI,CAACQ,iBAAiB,CAACR,UAAAA,CACvB,CAAA,IAAI,CAACnoI,OAAO,CAAG,EAAE,CACjB,IAAI8oI,iBAAAA,CAAoB,MACxB,IAAI,IAAI5pR,CAAI,CAAA,CAAA,CAAGA,EAAIipR,UAAWtkJ,CAAAA,MAAM,CAAC1kI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC/C,MAAM+kI,MAAQkkJ,UAAWtkJ,CAAAA,MAAM,CAAC3kI,CAAAA,CAAE,CAClC,IAAI,CAACspR,SAAS,CAAC,CACb,GAAGvkJ,KAAK,CACV,CAAA,CACA,GAAIA,KAAAA,CAAMq+I,MAAM,CAACx7M,IAAI,CAAEsW,KAAQA,EAAAA,KAAAA,CAAMwiM,SAAS,CAAA,CAAG,CAC/CkJ,iBAAAA,CAAoB,KACtB,CACF,CACA,GAAI,CAACA,iBAAmB,CAAA,CACtB,IAAI,CAACC,oBAAoB,GAC3B,CACF,CACAA,oBAAAA,EAAuB,CACrB,IAAI,IAAI7pR,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM+kI,KAAQ,CAAA,IAAI,CAAC+b,OAAO,CAAC9gJ,CAAE,CAAA,CAC7B,MAAMonR,SAAAA,CAAYriJ,MAAMzhI,IAAI,CAC5B,IAAI,IAAIijF,CAAI,CAAA,CAAA,CAAGA,CAAIw+C,CAAAA,KAAAA,CAAMq+I,MAAM,CAACnjR,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC1C,MAAMo7L,SAAAA,CAAY58I,KAAMq+I,CAAAA,MAAM,CAAC78L,CAAE,CAAA,CACjC,GAAIotL,mBAAAA,CAAoB1qQ,OAAO,CAAC04Q,SAAe,CAAA,GAAA,CAAC,EAAG,CACjD,MAAMmI,QAAW,CAAA,CAAC,EAAE1C,SAAU,CAAA,CAAC,EAAEzF,SAAAA,CAAU,CAAC,CAC5C,GAAI,CAAC,IAAI,CAACqH,gBAAgB,CAACc,QAAAA,CAAS,CAAE,CACpC,IAAI,CAACd,gBAAgB,CAACc,QAAS,CAAA,CAAG,CAChCnwD,KAAAA,CAAO,IACT,EACF,CACF,CACF,CACF,CACA,IAAI,CAACkhD,mBAAmB,GAC1B,CACAA,mBAAAA,EAAsB,CACpB,IAAI,IAAI76Q,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM+kI,KAAAA,CAAQ,IAAI,CAAC+b,OAAO,CAAC9gJ,CAAAA,CAAE,CAC7B,IAAI,IAAIumF,CAAI,CAAA,CAAA,CAAGA,EAAIw+C,KAAMq+I,CAAAA,MAAM,CAACnjR,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC1C,MAAMo7L,UAAY58I,KAAMq+I,CAAAA,MAAM,CAAC78L,CAAAA,CAAE,CACjC,GAAIotL,mBAAoB1qQ,CAAAA,OAAO,CAAC04Q,SAAe,CAAA,GAAA,CAAC,CAAG,CAAA,SACnD,MAAMoI,cAAAA,CAAiB,IAAI,CAACf,gBAAgB,CAAC,CAAC,EAAEjkJ,KAAAA,CAAMzhI,IAAI,CAAC,CAAC,EAAEq+Q,SAAAA,CAAU,CAAC,CAAC,CAC1E,GAAI,CAACoI,cAAkB,EAAA,CAACA,cAAepwD,CAAAA,KAAK,CAAE,CAC5C,IAAI,CAAC6vD,kBAAkB,CAACzkJ,KAAMzhI,CAAAA,IAAI,CAAEyhR,CAAAA,eAAe,CAACpD,SAAWnK,CAAAA,SAAAA,CAAUK,KAAK,CAAA,CAC9E,QACF,CACA,MAAMjhC,OAAAA,CAAUmzC,eAAepwD,KAAK,CACpC,MAAMA,KAAAA,CAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC60O,OACzC,CAAA,CAAA,GAAIjd,KAAO,CAAA,CACT,GAAIA,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAACyiO,sBAAsB,CAACjlJ,KAAAA,CAAMzhI,IAAI,CAAEq+Q,SAAAA,CAAWhoD,KACrD,EAAA,CAAA,KAAO,CACLA,KAAAA,CAAMlyN,IAAI,CAAC,OAAQ,CAAC,SAAS2/Q,SAAS,CAAEzF,SAAS,CAAA,CAC/C,OAAQ,CAAA,SAAShoD,KAAK,CACpB,CAAA,IAAI,CAACqwD,sBAAsB,CAAC5C,SAAAA,CAAWzF,UAAWhoD,KACpD,EAAA,CAAA,EAAGvpN,IAAI,CAAC,IAAI,CACd,CAAA,EAAGA,IAAI,CAAC,IAAI,CAAE20H,CAAAA,KAAAA,CAAMzhI,IAAI,CAAEq+Q,SAC1B,CAAA,CAAA,CAAA,IAAI,CAAC5lC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACF,CACF,CACF,CACAqwD,sBAAuB5C,CAAAA,SAAS,CAAEzF,SAAS,CAAEhoD,KAAK,CAAE,CAClD,IAAI,CAAC6vD,kBAAkB,CAACpC,SAAAA,CAAAA,CAAWrC,eAAe,CAACpD,SAAAA,CAAWhoD,KAAMpyK,CAAAA,QAAQ,EAC9E,CACAkhO,gBAAmB,EAAA,CACjB,IAAI,CAACK,WAAW,CAAG,IACnB,CAAA,IAAI,CAACJ,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACM,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACloI,OAAO,CAAG,EAAE,CACjB,IAAI,CAACqoI,aAAa,CAAG,EACrB,CAAA,IAAI,CAACtL,WAAW,CAAG,EACnB,CAAA,IAAI,CAAC3L,QAAQ,CAAG,KAChB,CAAA,IAAI,CAAC0D,MAAM,EACX,CAAA,IAAI,CAACzlI,QAAQ,CAAG,GAClB,CACAxiI,OAAQ,CACN,IAAI,CAAC87Q,iBAAiB,CAAC,IAAI,CAACX,WAAW,EACvC,IAAI,IAAI9oR,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAMsnR,YAAe,CAAA,IAAI,CAACxmI,OAAO,CAAC9gJ,CAAE,CAAA,CAACmyQ,OAAO,CAC5C,IAAI,CAACrxH,OAAO,CAAC9gJ,EAAE,CAAC2N,KAAK,EACrB,CAAA,IAAI,CAACmzI,OAAO,CAAC9gJ,CAAAA,CAAE,CAACmyQ,OAAO,CAAGmV,aAC5B,CACF,CACA1R,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACtB,iBAAiB,CAAE,CAC3BzyQ,MAAOoW,CAAAA,IAAI,CAAC,IAAI,CAACk4H,QAAQ,CAAA,CAAExjI,OAAO,CAAC,SAACs9Q,EAAAA,CAClC,IAAI,CAAC95I,QAAQ,CAAC85I,SAAAA,CAAU,CAACrU,MAAM,GACjC,CAAA,EACF,CACF,CACAoB,QAAS,CACP,IAAI,CAAC7mI,QAAQ,CAAG,EAChB,CAAA,IAAI,IAAInwI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,IAAI,CAC1C,IAAI,CAAC8gJ,OAAO,CAAC9gJ,CAAAA,CAAE,CAACg3Q,MAAM,GACxB,CACF,CACAwS,kBAAmBlmR,CAAAA,IAAI,CAAE,CACvB,MAAMqzQ,UAAa,CAAA,IAAI,CAACwS,aAAa,CAAC7lR,IAAK,CAAA,CAC3C,OAAO,IAAI,CAACw9I,OAAO,CAAC61H,UAAW,CAAA,EAAI,IACrC,CACAuT,kBAAkB7oE,QAAQ,CAAEmuD,SAAS,CAAEa,MAAQ,CAAC,CAAE9hJ,IAAO,CAAA,IAAI,CAAE64J,SAAAA,CAAY,MAAM,CAAE,CACjF,GAAI,CAAC,IAAI,CAAC0B,WAAW,CAAE,CACrB,IAAI,CAACC,cAAc,CAAC,IAAId,cAAe,CAAA,CACrC,QAAU,CAAA,CACR,CACE,MAAA,CAAQb,UACR,QAAU,CAAA,CACR,CACE,MAAA,CAAQ,QACR,OAAS,CAAA,CACX,CACA,CAAA,CACE,OAAQ/lE,QACR,CAAA,OAAA,CAASgvD,KACT,CAAA,MAAA,CAAQ9hJ,IACR,CAAA,cAAA,CAAgB,IAClB,CAAA,CACD,CACD,aAAe,CAAA,CACb,CACE,MAAA,CAAQ,QACR,IAAM8yF,CAAAA,QACR,CACD,CACH,EACD,CACD,YAAA,CAAc,EAChB,CACF,CAAA,EAAA,CACA,MAAMt8E,KAAAA,CAAQ,IAAI,CAACykJ,kBAAkB,CAACpC,SAAAA,CAAAA,CACtC,GAAIriJ,KAAO,CAAA,CACTA,KAAMggJ,CAAAA,eAAe,CAAC1jE,QAAUmuD,CAAAA,SAAAA,CAAWa,KAAO9hJ,CAAAA,IAAAA,EACpD,CAAO,KAAA,CACL,IAAI,CAAC6jD,QAAQ,CAACg1G,SAAAA,CAAAA,EAAYrC,eAAgB1jE,CAAAA,QAAAA,CAAUmuD,SAAWa,CAAAA,KAAAA,CAAO9hJ,IACxE,EAAA,CACF,CACAw2J,eAAgB+C,CAAAA,QAAQ,CAAEtY,SAAS,CAAE4X,SAAS,CAAE/W,KAAAA,CAAQ,CAAC,CAAE9hJ,IAAAA,CAAO,IAAI,CAAE,CACtE,GAAI,CAAC,IAAI,CAACu6J,WAAW,EAAIhB,QAAAA,CAAS7+Q,OAAO,CAAC,GAAS,CAAA,GAAA,CAAC,CAAG,CAAA,CACrD,IAAI,CAAC8/Q,cAAc,CAAC,IAAId,eAAe,CACrC,QAAA,CAAU,CACR,CACE,OAAQ,MACR,CAAA,QAAA,CAAU,CACR,CACE,MAAQ,CAAA,OAAA,CACR,OAAS,CAAA,CACX,EACA,CACE,MAAA,CAAQH,QACR,CAAA,OAAA,CAASzX,MACT,MAAQ9hJ,CAAAA,IAAAA,CACR,cAAgB,CAAA,IAClB,EACD,CACD,aAAA,CAAe,CACb,CACE,MAAQ,CAAA,OAAA,CACR,IAAMu5J,CAAAA,QACR,EACD,CACH,CACD,CACD,YAAA,CAAc,EAChB,CAAA,CAAA,CAAA,CACA,IAAI,CAAC3iB,SAAS,CAAC4f,eAAe,CAAC+C,QAAAA,CAAUtY,SACzC,CAAA,CAAA,MACF,CACA,MAAMzqI,MAAQqiJ,SAAY,CAAA,IAAI,CAACoC,kBAAkB,CAACpC,SAAa,CAAA,CAAA,IAAI,CAACjiB,SAAS,CAC7E,GAAI,CAACpgI,KAAO,CAAA,CACV,MACF,CACAA,KAAMggJ,CAAAA,eAAe,CAAC+C,QAAUtY,CAAAA,SAAAA,CAAWa,KAAO9hJ,CAAAA,IAAAA,EACpD,CACA02J,oBAAqB5jE,CAAAA,QAAQ,CAAE+lE,SAAS,CAAE,CACxC,MAAMriJ,KAAQqiJ,CAAAA,SAAAA,CAAY,IAAI,CAACoC,kBAAkB,CAACpC,WAAa,IAAI,CAACjiB,SAAS,CAC7E,GAAI,CAACpgI,KAAAA,CAAO,CACV,MACF,CACAA,KAAMkgJ,CAAAA,oBAAoB,CAAC5jE,QAAAA,EAC7B,CACA8oE,iBAAAA,CAAkB7mR,IAAI,CAAEmU,IAAI,CAAE,CAC5B,MAAMkyF,KAAAA,CAAQ,IAAI,CAACk0K,WAAW,CAACv6Q,KAAK,CACpC,GAAIqmG,KAASA,EAAAA,KAAAA,CAAMlyF,IAAI,GAAKA,IAAM,CAAA,CAChC,OAAOkyF,KAAMhiG,CAAAA,KAAK,CAEpB,OAAOG,SACT,CACAsiR,iBAAkB9mR,CAAAA,IAAI,CAAEmU,IAAI,CAAE9P,KAAK,CAAE,CACnC,MAAMgiG,KAAQ,CAAA,IAAI,CAACk0K,WAAW,CAACv6Q,IAAK,CAAA,CACpC,GAAIqmG,KAASA,EAAAA,KAAAA,CAAMlyF,IAAI,GAAKA,KAAM,CAChCkyF,KAAAA,CAAMhiG,KAAK,CAAGA,KACd,CAAA,MACF,CACF,CACA0iR,SAAS/mR,IAAI,CAAE,CACb,OAAO,IAAI,CAAC6mR,iBAAiB,CAAC7mR,IAAAA,CAAM2vQ,qBACtC,CACAqX,QAAAA,CAAShnR,IAAI,CAAEqE,KAAK,CAAE,CACpB,IAAI,CAACyiR,iBAAiB,CAAC9mR,IAAM2vQ,CAAAA,oBAAAA,CAAsBtrQ,OACrD,CACA4iR,UAAAA,CAAWjnR,IAAI,CAAE,CACf,OAAO,IAAI,CAAC6mR,iBAAiB,CAAC7mR,IAAAA,CAAM0vQ,sBACtC,CAAA,CACAwX,WAAWlnR,IAAI,CAAEqE,KAAK,CAAE,CACtB,GAAI,OAAOA,KAAU,GAAA,QAAA,EAAYA,MAAQ,CAAM,GAAA,CAAA,CAAG,CAChD,IAAI,CAACyiR,iBAAiB,CAAC9mR,IAAAA,CAAM0vQ,uBAAwBrrQ,KACvD,EAAA,CACF,CACA8iR,UAAAA,CAAWnnR,IAAI,CAAE,CACf,OAAO,IAAI,CAAC6mR,iBAAiB,CAAC7mR,IAAM4vQ,CAAAA,sBAAAA,CACtC,CACAwX,UAAAA,CAAWpnR,IAAI,CAAEqE,KAAK,CAAE,CACtB,IAAI,CAACyiR,iBAAiB,CAAC9mR,IAAAA,CAAM4vQ,sBAAwB,CAAA,CAAC,CAACvrQ,KACzD,EAAA,CACAgjR,UAAWrnR,CAAAA,IAAI,CAAE,CACf,OAAO,IAAI,CAAC6mR,iBAAiB,CAAC7mR,IAAM6vQ,CAAAA,sBAAAA,CACtC,CACAyX,UAAAA,CAAWtnR,IAAI,CAAEunR,YAAc,KAAK,CAAE,CACpC,IAAI,CAACT,iBAAiB,CAAC9mR,IAAAA,CAAM6vQ,uBAAwB,IACrD,CAAA,CAAA,GAAI0X,WAAa,CAAA,CACf,IAAI,CAACC,iBAAiB,CAACx6Q,GAAG,CAAChN,IAC7B,EAAA,CACF,CACAynR,YAAAA,CAAaznR,IAAI,CAAE,CACjB,IAAI,CAAC8mR,iBAAiB,CAAC9mR,IAAM6vQ,CAAAA,sBAAAA,CAAwB,OACvD,CACA+I,cAAAA,EAAiB,CACf,GAAIpyP,OAAO1R,QAAQ,CAAC,IAAI,CAACswQ,gBAAgB,CAAA,CAAG,CAC1C,MAAMF,gBAAkB,IAAI,CAACzsC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC2mR,gBAAgB,CAAA,CACxEF,eAAgBvhR,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC0hR,6BAA6B,CAAE,IAAI,EACxE,CACF,CACAv1O,MAAOyqE,CAAAA,EAAE,CAAE,CACT,IAAI,IAAI79G,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,IAAI,CAAC2kI,MAAM,CAAC3kI,EAAE,CAACozC,MAAM,CAACyqE,EAAAA,CAAK,IAAI,CAACwyJ,KAAK,EACvC,CACA,IAAI,CAACya,iBAAiB,CAACn+Q,OAAO,CAAEq+Q,OAC9B,EAAA,CAAA,IAAI,CAACphL,UAAU,CAACohL,OAAQ,CAAA,CAACrjR,KAAK,CAAG,MACnC,CAAA,CAAA,CACA,IAAI,CAACmjR,iBAAiB,CAACliR,KAAK,GAC9B,CACAg7O,0CAAAA,CAA2CqnC,OAAO,CAAEvnC,gBAAgB,CAAE,CACpE,GAAIunC,OAAAA,CAAQ3kJ,QAAQ,EAAIo9G,gBAAgB,CAACunC,QAAQ3kJ,QAAQ,CAACy8G,OAAO,EAAA,CAAG,CAAE,CACpE,IAAI,CAACz8G,QAAQ,CAAGo9G,gBAAgB,CAACunC,OAAAA,CAAQ3kJ,QAAQ,CAACy8G,OAAO,EAAA,EAAG,CACvD,KAAA,CACL,IAAI,CAACi0B,MAAM,GACb,CACF,CACAjvQ,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAAC0iR,gBAAgB,CAAG,IAAA,CAAM,IAAI,CAACM,gBAAgB,CAAG,EAAI,CAAA,IAAI,CAACzY,MAAM,CAAG,CAAG,CAAA,IAAI,CAACyU,SAAS,CAAG,IAAA,CAAM,IAAI,CAAC9S,QAAQ,CAAG,KAAA,CAAO,IAAI,CAAC3rI,SAAS,CAAG,IAAA,CAAM,IAAI,CAACuiJ,WAAW,CAAG,IAAA,CAAM,IAAI,CAAChoI,OAAO,CAAG,EAAE,CAAE,IAAI,CAACqoI,aAAa,CAAG,EAAC,CAAG,IAAI,CAACtL,WAAW,CAAG,EAAI,CAAA,IAAI,CAAC1tI,QAAQ,CAAG,GAAI,IAAI,CAAC26I,iBAAiB,CAAG,IAAI/3Q,GAAO,CAAA,IAAI,CAACuhQ,iBAAiB,CAAG,KAAO,CAAA,IAAI,CAAC4J,aAAa,CAAI56Q,IACxW,EAAA,CAAA,OAAO,IAAI,CAACu6Q,WAAW,CAACv6Q,IAAAA,CAAK,CAC5B,CAAA,IAAI,CAAC+hR,cAAc,CAAG,IAAC/hR,EAAAA,CACxB,IAAI,CAACwnR,iBAAiB,CAACx6Q,GAAG,CAAChN,MAC7B,EACF,CACF,CAEA,MAAM4nR,kBACJnjR,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMs4Q,SAAAA,CAAY,CAChB,SAAA,CACD,CACKC,MAAAA,mBAAAA,SAA4Bjd,eAUhCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,KAAK,CAACoqH,uBAAwBntB,CAAAA,SAAAA,CAAWpnO,IAAMmxQ,CAAAA,SAAAA,CAAAA,CAC/C,MAAME,iBAAoB,CAAA,CACxB,iBACA,CAAA,YAAA,CACA,SACA,OACD,CAAA,CACDxpR,MAAOoW,CAAAA,IAAI,CAAC+B,IAAMrN,CAAAA,CAAAA,OAAO,CAAE9E,GACzB,EAAA,CAAA,GAAIwjR,iBAAkBznR,CAAAA,QAAQ,CAACiE,GAAM,CAAA,CAAA,OACrCu5O,SAAS,CAACv5O,GAAI,CAAA,CAAGmS,IAAI,CAACnS,KAAI,CAC5B,CAAA,CACA,GAAImS,IAAAA,CAAKivQ,UAAU,CAAE,CACnB7nC,SAAAA,CAAU6nC,UAAU,CAAGjvQ,IAAAA,CAAKivQ,UAAU,CACtC7nC,UAAU2nC,cAAc,CAAC3nC,SAAU6nC,CAAAA,UAAU,EAC/C,CACA,GAAIjvQ,IAAK2qH,CAAAA,MAAM,CAAE,CACf3qH,IAAK2qH,CAAAA,MAAM,CAACh4H,OAAO,CAAC,CAACo4H,KAAAA,CAAO/kI,KAC1B+kI,KAAMy7I,CAAAA,WAAW,CAAC4C,MAAM,CAACz2Q,OAAO,CAAC,QAACm9Q,EAAAA,CAChC/kJ,KAAMy7I,CAAAA,WAAW,CAAC4B,OAAO,CAAC0H,QAAS,CAAA,CAAC9J,cAAc,CAACrzQ,OAAO,CAAEyjI,IAC1D,EAAA,CAAA,GAAI,CAACA,IAAKo/H,CAAAA,SAAS,EAAIp/H,IAAAA,CAAKo/H,SAAS,GAAKgI,SAAUK,CAAAA,KAAK,CAAE,CACzD,MAAMkS,cAAiB,CAAA,IAAI,CAAC/5C,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACgjI,KAAAA,CAAMwvI,UAAU,CAACyU,gBAAgB,CAAC,CAAC,EAAEjkJ,MAAMzhI,IAAI,CAAC,CAAC,EAAE8sI,KAAK9sI,IAAI,CAAC,CAAC,CAAC,CAACq2N,KAAK,CAAA,CAChH,GAAIowD,cAAAA,EAAkB,CAACA,cAAAA,CAAerkK,MAAM,CAAE,CAC5CqkK,cAAetiR,CAAAA,IAAI,CAAC,MAAA,CAAQ,IAC1B25O,CAAAA,SAAAA,CAAUz8G,MAAM,CAAC3kI,EAAE,CAAC+kR,eAAe,CAAC30I,IAAAA,CAAK9sI,IAAI,CAAEymR,cAAexiO,CAAAA,QAAQ,EACxE,CACF,EAAA,CACF,CAAO,KAAA,CACL65L,UAAUz8G,MAAM,CAAC3kI,CAAE,CAAA,CAAC+kR,eAAe,CAAC30I,IAAAA,CAAK9sI,IAAI,CAAE8sI,IAAKo/H,CAAAA,SAAS,EAC/D,CACF,GACF,CACF,EAAA,CAAA,EACF,CACA,GAAIx1P,KAAKguQ,eAAe,CAAE,CACxB5mC,SAAAA,CAAU4mC,eAAe,CAAGnmR,MAAAA,CAAOskH,MAAM,CAACi7H,SAAU4mC,CAAAA,eAAe,CAAEhuQ,IAAAA,CAAKguQ,eAAe,EAC3F,CACA,GAAIhuQ,IAAAA,CAAKsxQ,KAAK,CAAE,CACdzpR,MAAOoW,CAAAA,IAAI,CAAC+B,IAAKsxQ,CAAAA,KAAK,CAAE3+Q,CAAAA,OAAO,CAAE9E,GAC/B,EAAA,CAAA,GAAIu5O,UAAUz8G,MAAM,CAAC98H,GAAI,CAAA,CAAE,CACzB,MAAM0jR,QAAAA,CAAWvxQ,IAAKsxQ,CAAAA,KAAK,CAACzjR,GAAI,CAAA,CAAC+rC,IAAI,CACrC,MAAMA,IAAAA,CAAO,EAAC,CACd/xC,OAAOoW,IAAI,CAACszQ,QAAU5+Q,CAAAA,CAAAA,OAAO,CAAC,OAAC6+Q,EAAAA,CAC7B53O,IAAI,CAAC63O,UAAUD,OAAS,CAAA,CAAA,CAAGD,QAAQ,CAACC,OAAQ,EAC9C,CACApqC,CAAAA,CAAAA,UAAUz8G,MAAM,CAAC98H,GAAI,CAAA,CAAC+rC,IAAI,CAAGA,KAC/B,CACF,CAAA,EACF,CACF,CACA83O,iBAAAA,CAAkB7tK,EAAE,CAAE,CACpB,MAAM/jE,UAAa,CAAA,IAAI,CAAC0Z,KAAK,CAC7B,IAAI,MAAMxpB,MAAM8P,UAAW,CAAA,CACzB,GAAIA,UAAAA,CAAWztC,cAAc,CAAC29B,EAAAA,CAAAA,CAAK,CACjC,MAAMo3M,SAAYtnM,CAAAA,UAAU,CAAC9P,EAAAA,CAAG,CAAC48F,MAAM,CAACo+G,IAAI,CAC5C,MAAMqpB,aAAAA,CAAgBjtB,SAAUpnO,CAAAA,IAAI,CACpC,GAAIq0P,aAAAA,CAAcx7P,OAAO,EAAIuuO,SAAUx6G,CAAAA,MAAM,CAAC/zH,OAAO,EAAIuuO,SAAU+wB,CAAAA,OAAO,CAAE,CAC1E/wB,UAAUhuM,MAAM,CAACyqE,EACnB,EAAA,CACF,CACF,CACF,CACAimI,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,IAAIg2Q,KACJ,CAAA,GAAI,CAAC1kJ,MAAAA,CAAOo+G,IAAI,CAAC1+G,QAAQ,EAAIM,MAAAA,CAAOo+G,IAAI,CAAC1+G,QAAQ,GAAKM,MAAAA,CAAQ,CAC5D0kJ,KAAAA,CAAQ,EAAC,CACT1kJ,OAAOo+G,IAAI,CAACrgH,MAAM,CAACh4H,OAAO,CAAC,CAACo4H,KAAO/kI,CAAAA,CAAAA,GAAAA,CACjC,GAAI+kI,KAAMnxF,CAAAA,IAAI,CAAE,CACd,MAAMA,IAAAA,CAAO,EAAC,CACd/xC,OAAOoW,IAAI,CAAC8sH,KAAMnxF,CAAAA,IAAI,CAAEjnC,CAAAA,OAAO,CAAEhN,OAC/B,MAAMgsR,OAAAA,CAAUhsR,IAAKgB,CAAAA,KAAK,CAAC,GAAA,CAAA,CAC3BgrR,OAAQh4O,CAAAA,KAAK,GACb,MAAMi4O,SAAAA,CAAY,CAChBt2Q,KAAAA,CAAMhS,IAAI,CACPqoR,GAAAA,OAAAA,CACJ,CAAC9rR,IAAI,CAAC,GACP+zC,CAAAA,CAAAA,IAAI,CAACg4O,SAAU,CAAA,CAAG7mJ,KAAMnxF,CAAAA,IAAI,CAACj0C,IAAK,EACpC,CACA2rR,CAAAA,CAAAA,KAAK,CAACtrR,CAAAA,CAAE,CAAG,CACT4zC,IACF,EACF,CACF,CACF,EAAA,CACA,MAAM55B,IAAAA,CAAO,CACXnH,OAAAA,CAAS+zH,OAAOo+G,IAAI,CAACnyO,OAAO,CAC5B21Q,gBAAiB5hJ,MAAOo+G,CAAAA,IAAI,CAACwjC,eAAe,CAC5CR,eAAiBphJ,CAAAA,MAAAA,CAAOo+G,IAAI,CAACgjC,eAAe,CAC5C3X,KAAOzpI,CAAAA,MAAAA,CAAOo+G,IAAI,CAACqrB,KAAK,CACxBz8G,QAAAA,CAAUhtB,MAAOo+G,CAAAA,IAAI,CAACpxF,QAAQ,CAC9Bu+G,OAASvrI,CAAAA,MAAAA,CAAOo+G,IAAI,CAACmtB,OAAO,CAC5B7rI,QAAUM,CAAAA,MAAAA,CAAOo+G,IAAI,CAAC1+G,QAAQ,CAC9B2iJ,UAAAA,CAAYriJ,OAAOo+G,IAAI,CAACikC,UAAU,CAClCtkJ,OAAQiC,MAAOo+G,CAAAA,IAAI,CAACrgH,MAAM,CAC1BukJ,YAAAA,CAActiJ,MAAOo+G,CAAAA,IAAI,CAACkkC,YAAY,CACtCt/K,UAAYg9B,CAAAA,MAAAA,CAAOo+G,IAAI,CAACp7I,UAAU,CAClC4qK,gBAAAA,CAAkB5tI,OAAOo+G,IAAI,CAACwvB,gBAAgB,CAC9C8W,KACF,CAAA,CACA,OAAO,IAAI,CAAC9oC,YAAY,CAACltO,KAAO0E,CAAAA,IAAAA,CAClC,CACAkiQ,cAAet1I,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAChCA,SAAAA,CAAU86B,cAAc,GAC1B,CACA/yO,OAAAA,EAAU,CACR,KAAK,CAACA,OACN,EAAA,CAAA,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,kBAAmB,IAAI,CAACykR,iBAAiB,CAAE,IAAI,EACtE,CApHA3jR,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,IACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,MACV,CAAA,IAAI,CAACokO,aAAa,CAAGma,aACrB,CAAA,IAAI,CAACja,QAAQ,CAAG4c,iBAChB,CAAA,IAAI,CAACxqC,MAAM,CAAGyqC,UACd,IAAI,CAAC9jR,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC60Q,cAAc,CAAE,IAAI,CAAA,CACjD,IAAI,CAAClsC,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,iBAAmB,CAAA,IAAI,CAACqkR,iBAAiB,CAAE,IAAI,EACrE,CA6GF,CACA/d,SAAUC,CAAAA,eAAe,CAAC2a,aAAAA,CAAcl2J,SAAS,CAAE84J,SAEnD,CAAA,CAAA,MAAMU,+BAA+Ble,SACnCme,CAAAA,kBAAAA,EAAqB,CACnB,GAAI,IAAI,CAACj5Q,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAACmlJ,aAAa,EAAI,IAAI,CAACnlJ,MAAM,CAAC/zH,OAAO,CAAE,CACpE,IAAI,CAACkpO,MAAM,CAACtsO,OAAO,CAAG,IAAI,CAACm3H,MAAM,CACjC,MAAMtiH,SAAW,IAAI,CAACy3N,MAAM,CAACtsO,OAAO,CAAC66G,WAAW,EAChD,CAAA,IAAI,CAACyxH,MAAM,CAACzwH,OAAO,CAACd,QAAQ,CAACD,WAAW,CAACjmG,UAC3C,CACF,CACAmnF,QAAW,EAAA,CACT,IAAI,CAACqgL,kBAAkB,GACzB,CACApgL,SAAY,EAAA,CACV,GAAI,IAAI,CAACqwI,MAAM,CAACtsO,OAAO,GAAK,IAAI,CAACm3H,MAAM,CAAE,CACvC,IAAI,CAACm1G,MAAM,CAACtsO,OAAO,CAAG,KACxB,CACF,CACF,CAEA,MAAMu8Q,0BAAAA,CACJjkR,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMo5Q,SAAY,CAAA,CAChB,SACD,CACD,CAAMC,MAAAA,4BAAAA,SAAqC/d,gBAWzCI,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDA,UAAAA,CAAa,CACX,SACD,CAAA,CACD,KAAK,CAACoqH,uBAAwBntB,CAAAA,SAAAA,CAAWpnO,IAAMmqI,CAAAA,UAAAA,EACjD,CACAq4H,QAAS3+J,CAAAA,EAAE,CAAE,CACX,GAAI,IAAI,CAACpuG,OAAO,CAAE,CAChB,MAAM6U,QAAAA,CAAW,IAAI,CAAC7U,OAAO,CAAC66G,WAAW,EAAA,CACzC,IAAI,CAACgB,OAAO,CAACd,QAAQ,CAACD,WAAW,CAACjmG,QAAAA,CAAAA,CAClC,MAAMw9H,GAAM,CAAA,IAAI,CAACryI,OAAO,CAACk4H,iBAAiB,EAC1C,CAAA,IAAI,CAACrc,OAAO,CAACd,QAAQ,CAACI,cAAc,CAACk3B,GAAAA,EACvC,CACF,CACA34G,SAAU,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAA,CAAU,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CA3BAz0Q,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,eACV,CAAA,IAAI,CAACokO,aAAa,CAAGyd,sBACrB,CAAA,IAAI,CAACvd,QAAQ,CAAG0d,0BAChB,CAAA,IAAI,CAACtrC,MAAM,CAAGurC,SACd,CAAA,IAAI,CAAC3gK,OAAO,CAAG0kH,IAAI6uB,YACnB,CAAA,IAAI,CAACpvP,OAAO,CAAG,IAAA,CACf,IAAI,CAACugO,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAU,CAAA,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,EACnD,CAmBF,CACA7O,SAAUC,CAAAA,eAAe,CAACie,sBAAuBx5J,CAAAA,SAAS,CAAE45J,SAAAA,CAAAA,CAE5D,MAAME,2BAA8B,CAAA,CAAA,CACpC,MAAMC,oCAAAA,CAAuC,EAE7C,MAAMC,iBAAAA,CAAoB,OAC1B,CAAA,MAAMC,iBAAoB,CAAA,OAAA,CAC1B,MAAMC,gBAAAA,CAAmB,OACzB,MAAMC,eAAAA,CAAkB,SACxB,CAAA,MAAMC,gBAAkB,SACxB,CAAA,MAAMC,aAAgB,CAAA,OAAA,CAEtB,MAAMC,WAAc,CAAA,CAClBz1O,OAAS,CAAA,SAAA,CACT01O,KAAO,CAAA,OAAA,CACPC,OAAS,CAAA,SAAA,CACTC,SAAU,UACZ,CAAA,CACA,MAAMC,oBAAAA,CAAuB,EAC7BA,CAAAA,oBAAoB,CAACJ,WAAYz1O,CAAAA,OAAO,CAAC,CAAG,cAC5C61O,CAAAA,oBAAoB,CAACJ,YAAYC,KAAK,CAAC,CAAG,WAC1CG,CAAAA,oBAAoB,CAACJ,WAAYE,CAAAA,OAAO,CAAC,CAAG,aAC5CE,CAAAA,oBAAoB,CAACJ,WAAAA,CAAYG,QAAQ,CAAC,CAAG,cAC7C,CAAA,MAAME,4BAA+B,CAAA,EACrCA,CAAAA,4BAA4B,CAACL,WAAAA,CAAYz1O,OAAO,CAAC,CAAG,qBACpD81O,CAAAA,4BAA4B,CAACL,WAAYC,CAAAA,KAAK,CAAC,CAAG,kBAClDI,CAAAA,4BAA4B,CAACL,WAAYE,CAAAA,OAAO,CAAC,CAAG,oBACpDG,CAAAA,4BAA4B,CAACL,WAAAA,CAAYG,QAAQ,CAAC,CAAG,qBAAA,CACrD,MAAMG,4BAA+B,CAAA,EACrCA,CAAAA,4BAA4B,CAACN,WAAAA,CAAYz1O,OAAO,CAAC,CAAG,qBACpD+1O,CAAAA,4BAA4B,CAACN,WAAYC,CAAAA,KAAK,CAAC,CAAG,kBAClDK,CAAAA,4BAA4B,CAACN,WAAAA,CAAYE,OAAO,CAAC,CAAG,oBACpDI,CAAAA,4BAA4B,CAACN,WAAAA,CAAYG,QAAQ,CAAC,CAAG,qBACrD,CAAMI,MAAAA,eAAAA,SAAwBvf,UA+D5B,IAAI3zP,IAAAA,EAAO,CACT,MAAMk0P,OAAS,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAG,CAAA,CACvD,OAAOmrB,MAASA,CAAAA,MAAAA,CAAOl0P,IAAI,CAAG,IAChC,CACA,IAAInH,OAAQyH,CAAAA,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,GAC5B,EAAA,CACA,IAAIzH,OAAU,EAAA,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OAAO,CAE1B,IAAIqsI,MAAO5kI,CAAAA,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAA,CAAU7yQ,GAC3B,EAAA,CACA,IAAI4kI,MAAS,EAAA,CACX,OAAO,IAAI,CAACllI,IAAI,CAACklI,MACnB,CACA,IAAIkuI,WAAY9yQ,CAAAA,GAAG,CAAE,CACnB,GAAI,IAAI,CAAC+yQ,YAAY,GAAK/yQ,GAAAA,CAAK,CAC7B,MAAMgzQ,SAAW,OAAOhzQ,GAAAA,GAAQ,QAChC,CAAA,GAAI,IAAI,CAAC+yQ,YAAY,EAAIC,UAAY,IAAI,CAACD,YAAY,CAACtqC,OAAO,EAAOzoO,GAAAA,GAAAA,CAAK,CACxE,MACF,CACA,GAAI,IAAI,CAAC+yQ,YAAY,CAAE,CACrB,IAAI,CAACE,uBAAuB,GAC9B,CACA,GAAIjzQ,GAAAA,YAAeirI,UAAW,CAC5B,IAAI,CAAC8nI,YAAY,CAAG/yQ,IACtB,CAAA,KAAO,GAAIgzQ,QAAAA,CAAU,CACnB,IAAI,CAACD,YAAY,CAAG,IAAI,CAACtxC,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAACnqP,GAAAA,CAAAA,EAAQ,KACjE,CAAO,KAAA,CACL,IAAI,CAAC+yQ,YAAY,CAAG,KACtB,CACA,GAAI,IAAI,CAACA,YAAY,CAAE,CACrB,IAAI,CAACG,qBAAqB,GAC5B,CACA,GAAI,IAAI,CAACH,YAAY,CAAE,CACrB,IAAI,CAACrzQ,IAAI,CAACozQ,WAAW,CAAG,IAAI,CAACC,YAAY,CAACtqC,OAAO,GACnD,MAAO,GAAIuqC,QAAAA,EAAYhzQ,GAAK,CAAA,CAC1B,IAAI,CAACN,IAAI,CAACozQ,WAAW,CAAG9yQ,IAC1B,CACF,CACF,CACA,IAAI8yQ,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAII,UAAWnzQ,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAImzQ,YAAa,CACf,OAAO,IAAI,CAACzzQ,IAAI,CAACyzQ,UACnB,CACA,IAAIC,cAAAA,CAAepzQ,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,iBAAkB7yQ,GACnC,EAAA,CACA,IAAIozQ,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAAC1zQ,IAAI,CAAC0zQ,cAAc,CAEjC,IAAIC,SAAUrzQ,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAA,CAAa7yQ,GAC9B,EAAA,CACA,IAAIqzQ,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC3zQ,IAAI,CAAC2zQ,SACnB,CACA,IAAIC,YAAYtzQ,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,KAChC,CACA,IAAIszQ,WAAc,EAAA,CAChB,OAAO,IAAI,CAAC5zQ,IAAI,CAAC4zQ,WAAW,CAE9B,IAAIC,YAAAA,CAAavzQ,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAgB7yQ,CAAAA,GAAAA,EACjC,CACA,IAAIuzQ,YAAAA,EAAe,CACjB,OAAO,IAAI,CAAC7zQ,IAAI,CAAC6zQ,YAAY,CAE/B,IAAIC,YAAAA,CAAaxzQ,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAA,CAAgB7yQ,GACjC,EAAA,CACA,IAAIwzQ,YAAe,EAAA,CACjB,OAAO,IAAI,CAAC9zQ,IAAI,CAAC8zQ,YAAY,CAE/B,IAAIC,gBAAiBzzQ,CAAAA,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAA,CAAoB7yQ,GACrC,EAAA,CACA,IAAIyzQ,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAAC/zQ,IAAI,CAAC+zQ,gBAAgB,CAEnC,IAAIC,gBAAiB1zQ,CAAAA,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAA,CAAoB7yQ,GACrC,EAAA,CACA,IAAI0zQ,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACh0Q,IAAI,CAACg0Q,gBACnB,CACA,IAAIC,kBAAAA,CAAmB3zQ,GAAG,CAAE,CAC1B,IAAI,CAAC6yQ,SAAS,CAAC,oBAAsB7yQ,CAAAA,GAAAA,EACvC,CACA,IAAI2zQ,oBAAqB,CACvB,OAAO,IAAI,CAACj0Q,IAAI,CAACi0Q,kBAAkB,CAErC,IAAIC,kBAAAA,CAAmB5zQ,GAAG,CAAE,CAC1B,IAAI,CAAC6yQ,SAAS,CAAC,qBAAsB7yQ,GACvC,EAAA,CACA,IAAI4zQ,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACl0Q,IAAI,CAACk0Q,kBAAkB,CAErC,IAAIC,mBAAoB7zQ,CAAAA,GAAG,CAAE,CAC3B,IAAI,CAAC6yQ,SAAS,CAAC,qBAAA,CAAuB7yQ,KACxC,CACA,IAAI6zQ,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACn0Q,IAAI,CAACm0Q,mBACnB,CACA,IAAIC,oBAAoB9zQ,GAAG,CAAE,CAC3B,IAAI,CAAC6yQ,SAAS,CAAC,qBAAuB7yQ,CAAAA,GAAAA,EACxC,CACA,IAAI8zQ,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACp0Q,IAAI,CAACo0Q,mBAAmB,CAEtCjB,SAAU7pR,CAAAA,IAAI,CAAEqE,KAAK,CAAE,CACrB,MAAMqS,IAAO,CAAA,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAAA,CAAW3gN,IAAI,CAAC1W,IAAK,CAC3B0W,CAAAA,IAAI,CAAC1W,IAAK,CAAA,CAAGqE,KACb,CAAA,IAAI,CAACuB,IAAI,CAAC,KAAA,CAAO5F,KAAMq3N,QAAUhzN,CAAAA,KAAAA,EACnC,CACA0mR,yBAAAA,CAA0BC,OAAO,CAAEvyC,MAAM,CAAE,CACzC,IAAI,CAACuyC,OAAAA,CAAQ,CAAC,YAAA,CAAc,IAAI,CAACC,YAAY,CAAE,IAAI,CACnD,CAAA,IAAI,CAACD,OAAAA,CAAQ,CAAC,oBAAsB,CAAA,IAAI,CAACE,oBAAoB,CAAE,IAAI,CAAA,CACnE,IAAI,CAACF,OAAQ,CAAA,CAAC,eAAiB,CAAA,IAAI,CAACG,qBAAqB,CAAE,IAAI,CAAA,CAC/D,IAAI,CAACH,OAAAA,CAAQ,CAAC,iBAAA,CAAmB,IAAI,CAACG,qBAAqB,CAAE,IAAI,CACjE,CAAA,IAAI,CAACH,OAAAA,CAAQ,CAAC,kBAAoB,CAAA,IAAI,CAACG,qBAAqB,CAAE,IAAI,CAClE,CAAA,IAAI,CAACH,OAAQ,CAAA,CAAC,sBAAwB,CAAA,IAAI,CAACG,qBAAqB,CAAE,IAAI,EACtE,IAAI,CAACH,OAAQ,CAAA,CAAC,uBAAwB,IAAI,CAACG,qBAAqB,CAAE,IAAI,CACtE,CAAA,IAAI,CAACH,OAAAA,CAAQ,CAAC,wBAAA,CAA0B,IAAI,CAACG,qBAAqB,CAAE,IAAI,CACxE,CAAA,IAAI,CAACH,OAAQ,CAAA,CAAC,wBAA0B,CAAA,IAAI,CAACG,qBAAqB,CAAE,IAAI,CAAA,CACxE,IAAI,CAACH,OAAQ,CAAA,CAAC,0BAA2B,IAAI,CAACG,qBAAqB,CAAE,IAAI,CACzE,CAAA,IAAI,CAACH,OAAAA,CAAQ,CAAC,yBAA2B,CAAA,IAAI,CAACG,qBAAqB,CAAE,IAAI,CACzE,CAAA,GAAIH,UAAY,IAAM,CAAA,CACpB,IAAI,CAACI,cAAc,CAAG,IAAI,CAAC9nJ,MAAM,CAACv/H,EAAE,CAAC,aAAA,CAAe,IAAI,CAACsnR,sBAAsB,CAAE,IAAI,EACvF,CAAA,KAAO,CACL,IAAI,CAACD,cAAc,EAAEznR,GACrB,EAAA,CAAA,IAAI,CAACynR,cAAc,CAAG,KACxB,CACF,CACAH,YAAajrR,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACrC,GAAI47E,QAAAA,GAAa57E,QAAU,CAAA,CACzB,IAAI,CAAC6vI,kBAAkB,GACzB,CACF,CACAJ,oBAAAA,CAAqBlrR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC7C,GAAI47E,QAAa57E,GAAAA,QAAAA,CAAU,CACzB,IAAI,CAAC8vI,YAAY,EAAA,CACjB,IAAI,CAACC,0BAA0B,CAACn0D,QAChC,CAAA,CAAA,IAAI,CAACo0D,wBAAwB,GAC/B,CACF,CACAN,sBAAsBnrR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC9C,GAAI47E,QAAAA,GAAa57E,QAAU,CAAA,CACzB,IAAI,CAACgwI,wBAAwB,GAC/B,CACF,CACAvB,qBAAAA,EAAwB,CACtB,IAAI,CAACwB,yBAAyB,CAAG,IAAI,CAAC3B,YAAY,CAAChmR,EAAE,CAAC,aAAA,CAAe,IAAI,CAAC4nR,mBAAmB,CAAE,IAAI,CACnG,CAAA,GAAI,IAAI,CAAC5B,YAAY,CAAC1xO,OAAO,CAAE,CAC7B,IAAI,CAACszO,mBAAmB,GAC1B,CACF,CACA1B,uBAAAA,EAA0B,CACxB,IAAI,CAACyB,yBAAyB,EAAE/nR,KAChC,CAAA,IAAI,CAAC+nR,yBAAyB,CAAG,IACjC,CAAA,GAAI,IAAI,CAAC3B,YAAY,EAAE1xO,OAAS,CAAA,CAC9B,IAAI,CAACuzO,mBAAmB,GAC1B,CACF,CACAC,4BAAAA,EAA+B,CAC7B,MAAMxzO,QAAU,IAAI,CAAC0xO,YAAY,CAAC1xO,OAClC,CAAA,IAAI,CAACyzO,4BAA4B,CAAGzzO,OAAQl0C,CAAAA,IAAI,CAAC,cAAgB,CAAA,IAAI,CAACynR,mBAAmB,CAAE,IAAI,CAC/F,CAAA,IAAI,CAACG,2BAA2B,CAAG1zO,OAAAA,CAAQt0C,EAAE,CAAC,WAAA,CAAa,IAAI,CAACioR,WAAW,CAAE,IAAI,CACjF,CAAA,IAAI,CAACC,6BAA6B,CAAG5zO,OAAAA,CAAQt0C,EAAE,CAAC,aAAe,CAAA,IAAI,CAACmoR,aAAa,CAAE,IAAI,CACvF,CAAA,IAAI,CAACC,iCAAiC,CAAG9zO,QAAQt0C,EAAE,CAAC,iBAAmB,CAAA,IAAI,CAACqoR,iBAAiB,CAAE,IAAI,CACnG,CAAA,IAAI,CAACC,iCAAiC,CAAGh0O,OAAQt0C,CAAAA,EAAE,CAAC,iBAAA,CAAmB,IAAI,CAACuoR,iBAAiB,CAAE,IAAI,EACrG,CACAC,8BAAiC,EAAA,CAC/B,IAAI,CAACT,4BAA4B,EAAEnoR,GAAAA,EACnC,CAAA,IAAI,CAACmoR,4BAA4B,CAAG,IACpC,CAAA,IAAI,CAACC,2BAA2B,EAAEpoR,GAAAA,EAClC,CAAA,IAAI,CAACooR,2BAA2B,CAAG,IACnC,CAAA,IAAI,CAACE,6BAA6B,EAAEtoR,GAAAA,EACpC,CAAA,IAAI,CAACsoR,6BAA6B,CAAG,IACrC,CAAA,IAAI,CAACE,iCAAiC,EAAExoR,GAAAA,EACxC,CAAA,IAAI,CAACwoR,iCAAiC,CAAG,IACzC,CAAA,IAAI,CAACE,iCAAiC,EAAE1oR,GAAAA,EACxC,CAAA,IAAI,CAAC0oR,iCAAiC,CAAG,KAC3C,CACAG,yBAA4B,EAAA,CAC1B,IAAI,CAACC,0BAA0B,CAAC,OAClC,CACApB,sBAAAA,EAAyB,CACvB,IAAI,CAACoB,0BAA0B,CAAC,IAAA,EAClC,CACAb,mBAAsB,EAAA,CACpB,IAAI,CAACW,8BAA8B,EACnC,CAAA,IAAI,CAAChB,YAAY,GACjB,IAAI,CAACC,0BAA0B,CAAC,IAAI,CAACpB,cAAc,EACrD,CACAuB,mBAAsB,EAAA,CACpB,IAAI,CAACE,4BAA4B,EACjC,CAAA,IAAI,CAACa,wBAAwB,GAC7B,IAAI,CAACjB,wBAAwB,GAC/B,CACAgB,0BAAAA,CAA2BzB,OAAO,CAAE,CAClC,GAAI,IAAI,CAAC1nJ,MAAM,CAACjrF,OAAO,CAAE,CACvB,MAAMs0O,SAAW3B,OAAY,GAAA,IAAA,CAC7B,GAAI2B,QAAAA,EAAY,IAAI,CAACC,uBAAuB,CAAE,CAC5C,MACF,CACA,IAAI,CAACtpJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,cAAgB,CAAA,IAAI,CAACwB,yBAAyB,CAAE,IAAI,CACjF,CAAA,IAAI,CAAClpJ,MAAM,CAACjrF,OAAO,CAAC2yO,QAAQ,CAAC,YAAA,CAAc,IAAI,CAAC6B,aAAa,CAAE,IAAI,CACnE,CAAA,IAAI,CAACvpJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAQ,CAAA,CAAC,YAAc,CAAA,IAAI,CAAC8B,aAAa,CAAE,IAAI,CAAA,CACnE,IAAI,CAACxpJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,WAAA,CAAa,IAAI,CAAC+B,YAAY,CAAE,IAAI,EACjE,IAAI,CAACzpJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,SAAA,CAAW,IAAI,CAACgC,UAAU,CAAE,IAAI,CAC7D,CAAA,IAAI,CAAC1pJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,YAAc,CAAA,IAAI,CAACiC,aAAa,CAAE,IAAI,CACnE,CAAA,IAAI,CAAC3pJ,MAAM,CAACjrF,OAAO,CAAC2yO,QAAQ,CAAC,UAAA,CAAY,IAAI,CAACkC,WAAW,CAAE,IAAI,CAC/D,CAAA,IAAI,CAAC5pJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAQ,CAAA,CAAC,YAAc,CAAA,IAAI,CAACmC,aAAa,CAAE,IAAI,CAAA,CACnE,IAAI,CAAC7pJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,aAAA,CAAe,IAAI,CAACoC,cAAc,CAAE,IAAI,EACrE,IAAI,CAAC9pJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,aAAA,CAAe,IAAI,CAACqC,cAAc,CAAE,IAAI,CACrE,CAAA,IAAI,CAAC/pJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,WAAa,CAAA,IAAI,CAACsC,YAAY,CAAE,IAAI,CACjE,CAAA,IAAI,CAAChqJ,MAAM,CAACjrF,OAAO,CAAC2yO,QAAQ,CAAC,aAAA,CAAe,IAAI,CAACuC,cAAc,CAAE,IAAI,CACrE,CAAA,IAAI,CAACjqJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAQ,CAAA,CAAC,aAAe,CAAA,IAAI,CAACwC,cAAc,CAAE,IAAI,CAAA,CACrE,IAAI,CAAClqJ,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,OAAA,CAAS,IAAI,CAACyC,QAAQ,CAAE,IAAI,CACzD,CAAA,IAAI,CAACb,uBAAuB,CAAGD,SACjC,CACF,CACAD,wBAAAA,EAA2B,CACzB,MAAMr0O,OAAU,CAAA,IAAI,CAAC0xO,YAAY,EAAE1xO,OACnC,CAAA,GAAI,CAACA,OAAAA,EAAWA,OAAQlkC,CAAAA,IAAI,GAAK40Q,iBAAmB,CAAA,CAClD,MACF,CACA,IAAI,CAAC2E,kBAAkB,CAACr1O,QAAQsI,KAAK,CAAA,CACrC,IAAI,CAACgtO,oBAAoB,CAACt1O,OAAAA,CAAQ86K,OAAO,CAAA,CACzC,IAAI,CAACy6D,wBAAwB,CAACv1O,OAAAA,CAAQw1O,WAAW,CAAA,CACjD,IAAI,CAACC,wBAAwB,CAACz1O,OAAAA,CAAQ01O,WAAW,EACnD,CACAL,kBAAmB/sO,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACqtO,YAAY,CAAChyR,CAAC,CAAG2kD,KAAAA,CAAM3kD,CAC5B,CAAA,IAAI,CAACgyR,YAAY,CAACz9Q,CAAC,CAAGowC,KAAAA,CAAMpwC,CAC5B,CAAA,IAAI,CAACy9Q,YAAY,CAACzhR,CAAC,CAAGo0C,KAAMp0C,CAAAA,EAAC,CAE/BohR,oBAAAA,CAAqBx6D,OAAO,CAAE,CAC5B,IAAI,CAAC66D,YAAY,CAAC1hR,CAAC,CAAG6mN,QACxB,CACAy6D,wBAAAA,CAAyBC,WAAW,CAAE,CACpC,IAAI,CAACI,mBAAmB,CAAGJ,YAC7B,CACAC,yBAAyBC,WAAW,CAAE,CACpC,IAAI,CAACG,mBAAmB,CAAGH,YAC7B,CACA/B,WAAYrrO,CAAAA,KAAK,CAAE,CACjB,GAAI,CAAC,IAAI,CAACwtO,eAAe,CAAE,CACzB,IAAI,CAACT,kBAAkB,CAAC/sO,KACxB,CAAA,CAAA,IAAI,CAAC8qO,wBAAwB,GAC/B,CACF,CACAS,aAAAA,CAAc/4D,OAAO,CAAE,CACrB,GAAI,CAAC,IAAI,CAACg7D,eAAe,CAAE,CACzB,IAAI,CAACR,oBAAoB,CAACx6D,OAAAA,CAAAA,CAC1B,IAAI,CAACs4D,wBAAwB,GAC/B,CACF,CACAW,iBAAAA,CAAkByB,WAAW,CAAE,CAC7B,GAAI,CAAC,IAAI,CAACO,iBAAiB,CAAE,CAC3B,IAAI,CAACR,wBAAwB,CAACC,WAAAA,CAAAA,CAC9B,IAAI,CAACpC,wBAAwB,GAC/B,CACF,CACAa,iBAAkByB,CAAAA,WAAW,CAAE,CAC7B,GAAI,CAAC,IAAI,CAACK,iBAAiB,CAAE,CAC3B,IAAI,CAACN,wBAAwB,CAACC,WAAAA,CAAAA,CAC9B,IAAI,CAACtC,wBAAwB,GAC/B,CACF,CACAoB,aAAAA,CAAcpuL,KAAK,CAAE,CACnB,IAAI,CAAC4vL,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC/C,kBAAkB,EAAA,CACvB,IAAI,CAACgD,aAAa,CAAC,YAAA,CAAc7vL,KACnC,EAAA,CACAquL,cAAcruL,KAAK,CAAE,CACnB,IAAI,CAAC4vL,WAAW,CAAG,KACnB,CAAA,IAAI,CAACE,UAAU,CAAG,MAClB,IAAI,CAACjD,kBAAkB,EAAA,CACvB,IAAI,CAACgD,aAAa,CAAC,YAAA,CAAc7vL,KACnC,EAAA,CACAsuL,YAAatuL,CAAAA,KAAK,CAAE,CAClB,IAAI,CAAC8vL,UAAU,CAAG,IAClB,CAAA,IAAI,CAACjD,kBAAkB,GACvB,IAAI,CAACgD,aAAa,CAAC,WAAa7vL,CAAAA,KAAAA,EAClC,CACAuuL,UAAAA,CAAWvuL,KAAK,CAAE,CAChB,IAAI,CAAC8vL,UAAU,CAAG,KAAA,CAClB,IAAI,CAACjD,kBAAkB,EACvB,CAAA,IAAI,CAACgD,aAAa,CAAC,SAAA,CAAW7vL,KAChC,EAAA,CACAwuL,cAAcxuL,KAAK,CAAE,CACnB,IAAI,CAAC8vL,UAAU,CAAG,IAClB,CAAA,IAAI,CAACjD,kBAAkB,EAAA,CACvB,IAAI,CAACgD,aAAa,CAAC,YAAc7vL,CAAAA,KAAAA,EACnC,CACAyuL,WAAYzuL,CAAAA,KAAK,CAAE,CACjBA,KAAMA,CAAAA,KAAK,CAACC,cAAc,EAC1B,CAAA,IAAI,CAAC6vL,UAAU,CAAG,KAAA,CAClB,IAAI,CAACjD,kBAAkB,EACvB,CAAA,IAAI,CAACgD,aAAa,CAAC,UAAY7vL,CAAAA,KAAAA,EACjC,CACA0uL,aAAAA,CAAc1uL,KAAK,CAAE,CACnB,IAAI,CAAC8vL,UAAU,CAAG,KAClB,CAAA,IAAI,CAACjD,kBAAkB,EAAA,CACvB,IAAI,CAACgD,aAAa,CAAC,YAAA,CAAc7vL,KACnC,EAAA,CACA2uL,eAAe3uL,KAAK,CAAE,CACpB,IAAI,CAAC8vL,UAAU,CAAG,KAAA,CAClB,IAAI,CAACjD,kBAAkB,EACvB,CAAA,IAAI,CAACgD,aAAa,CAAC,aAAe7vL,CAAAA,KAAAA,EACpC,CACA4uL,cAAe5uL,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC8vL,UAAU,CAAG,KAClB,IAAI,CAACjD,kBAAkB,EAAA,CACvB,IAAI,CAACgD,aAAa,CAAC,aAAA,CAAe7vL,OACpC,CACA6uL,YAAAA,CAAa7uL,KAAK,CAAE,CAClB,IAAI,CAAC8vL,UAAU,CAAG,KAClB,CAAA,IAAI,CAACjD,kBAAkB,GACvB,IAAI,CAACgD,aAAa,CAAC,YAAa7vL,KAClC,EAAA,CACA8uL,cAAe9uL,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC+vL,gBAAgB,EACrB,CAAA,GAAI,IAAI,CAACA,gBAAgB,GAAK,CAAA,CAAG,CAC/B,IAAI,CAACH,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC/C,kBAAkB,GACzB,CACA,IAAI,CAACgD,aAAa,CAAC,aAAA,CAAe7vL,OACpC,CACA+uL,cAAAA,CAAe/uL,KAAK,CAAE,CACpB,IAAI,CAAC+vL,gBAAgB,EAAA,CACrB,GAAI,IAAI,CAACA,gBAAgB,GAAK,CAAG,CAAA,CAC/B,IAAI,CAACH,WAAW,CAAG,KACnB,CAAA,IAAI,CAACE,UAAU,CAAG,KAAA,CAClB,IAAI,CAACjD,kBAAkB,GACzB,CACA,IAAI,CAACgD,aAAa,CAAC,cAAe7vL,KACpC,EAAA,CACAgvL,QAAShvL,CAAAA,KAAK,CAAE,CACd,IAAI,CAAC6vL,aAAa,CAAC,OAAA,CAAS7vL,KAC9B,EAAA,CACA6vL,cAActuR,IAAI,CAAEy+F,KAAK,CAAE,CACzB,GAAI,IAAI,CAAC/nF,IAAI,CAACklI,MAAM,CAAE,CACpB,IAAI,CAACh2I,IAAI,CAAC5F,IAAAA,CAAMy+F,OAClB,CACF,CACA6sL,kBAAmBn2C,CAAAA,KAAK,CAAE,CACxB,MAAMs5C,cAAiB,CAAA,IAAI,CAACC,YAAY,CACxC,MAAMC,cAAAA,CAAiB,IAAI,CAACC,qBAAqB,EAAA,CACjD,GAAI,CAACH,cAAmBE,GAAAA,cAAAA,EAAkBx5C,KAAI,GAAM,IAAI,CAAC5lO,OAAO,CAAE,CAChE,IAAI,CAACm/Q,YAAY,CAAGC,cACpB,CAAA,GAAIF,iBAAmBpF,WAAYC,CAAAA,KAAK,CAAE,CACxC,IAAI,CAACgF,aAAa,CAAC,UAAA,EACrB,CACA,GAAIG,cAAAA,GAAmBpF,WAAYE,CAAAA,OAAO,CAAE,CAC1C,IAAI,CAAC+E,aAAa,CAAC,YAAA,EACrB,CACA,GAAIK,iBAAmBtF,WAAYC,CAAAA,KAAK,CAAE,CACxC,IAAI,CAACgF,aAAa,CAAC,YAAA,EACrB,CACA,GAAIK,cAAmBtF,GAAAA,WAAAA,CAAYE,OAAO,CAAE,CAC1C,IAAI,CAAC+E,aAAa,CAAC,cAAA,EACrB,CACA,OAAO,IAAI,CAAClE,cAAc,EACxB,KAAKvB,2BACH,CAAA,CACE,MAAMgG,QAAAA,CAAWpF,oBAAoB,CAAC,IAAI,CAACiF,YAAY,CAAC,CACxD,MAAMI,SAAAA,CAAY,IAAI,CAACD,QAAAA,CAAS,CAChC,IAAI,CAACE,UAAU,CAACD,SAAAA,CAAAA,CAChB,KACF,CACF,KAAKhG,oCACH,CAAA,CACE,MAAMkG,eAAkBtF,CAAAA,4BAA4B,CAAC,IAAI,CAACgF,YAAY,CAAC,CACvE,MAAMO,eAAkBtF,CAAAA,4BAA4B,CAAC,IAAI,CAAC+E,YAAY,CAAC,CACvE,MAAMb,YAAc,IAAI,CAACmB,eAAgB,CAAA,CACzC,MAAMjB,WAAc,CAAA,IAAI,CAACkB,eAAAA,CAAgB,CACzC,IAAI,CAACC,YAAY,CAACrB,WAAaE,CAAAA,WAAAA,CAAAA,CAC/B,KACF,CACJ,CACF,CACF,CACAtC,wBAA2B,EAAA,CACzB,IAAI,CAACH,kBAAkB,CAAC,IAAA,EAC1B,CACAE,0BAAAA,CAA2BpB,cAAc,CAAE,CACzC,GAAI,CAAC,IAAI,CAACL,YAAY,EAAE1xO,OAAAA,CAAS,CAC/B,MACF,CACA,OAAO+xO,cAAAA,EACL,KAAKvB,2BAAAA,CACH,IAAI,CAAC0C,YAAY,EAAA,CACjB,IAAI,CAAC4D,qBAAqB,CAAC,IAAI,CAACnB,YAAY,CAAA,CAC5C,MACF,KAAKlF,qCACH,IAAI,CAACoG,YAAY,CAAC,IAAI,CAACjB,mBAAmB,CAAE,IAAI,CAACC,mBAAmB,CACpE,CAAA,KACJ,CACF,CACAU,qBAAAA,EAAwB,CACtB,GAAI,CAAC,IAAI,CAAChzI,MAAM,CAAE,CAChB,OAAOytI,WAAYG,CAAAA,QAAQ,CACtB,KAAA,GAAI,IAAI,CAAC+E,UAAU,CAAE,CAC1B,OAAOlF,WAAAA,CAAYE,OAAO,CAC5B,KAAO,GAAI,IAAI,CAAC8E,WAAW,CAAE,CAC3B,OAAOhF,WAAYC,CAAAA,KAAK,CAE1B,OAAOD,WAAAA,CAAYz1O,OACrB,CACAs7O,YAAarB,CAAAA,WAAW,CAAEE,WAAW,CAAE,CACrC,MAAM11O,OAAAA,CAAU,IAAI,CAAC0xO,YAAY,EAAE1xO,OAAAA,CACnC,GAAI,CAACA,OAAAA,CAAS,CACZ,MACF,CACA01O,WAAcA,CAAAA,WAAAA,EAAe,CAC7B,CAAA,IAAI,CAACK,iBAAiB,CAAG,KACzB,GAAI/1O,OAAAA,CAAQw1O,WAAW,GAAKA,YAAa,CACvCx1O,OAAAA,CAAQw1O,WAAW,CAAGA,YACxB,CACA,GAAIx1O,OAAQ01O,CAAAA,WAAW,GAAKA,WAAAA,CAAa,CACvC11O,OAAAA,CAAQ01O,WAAW,CAAGA,YACxB,CACA,IAAI,CAACK,iBAAiB,CAAG,MAC3B,CACAW,WAAWD,SAAS,CAAE,CACpB,IAAI,CAACvD,YAAY,EACjB,CAAA,GAAI,IAAI,CAACf,YAAY,GAAK,CAAA,CAAG,CAC3B,IAAI,CAAC2E,qBAAqB,CAACL,WAC7B,CAAO,KAAA,CACL,IAAI,CAACM,mBAAmB,CAACN,SAC3B,EAAA,CACF,CACAK,qBAAsBL,CAAAA,SAAS,CAAE,CAC/B,MAAMz2O,OAAU,CAAA,IAAI,CAAC0xO,YAAY,EAAE1xO,OACnC,CAAA,GAAI,CAACy2O,SAAAA,EAAa,CAACz2O,OAAAA,EAAWA,OAAQlkC,CAAAA,IAAI,GAAK40Q,iBAAmB,CAAA,CAChE,MACF,CACA,MAAMsG,MAASC,CAAAA,QAAAA,CAASR,SACxB,CAAA,CAAA,IAAI,CAACX,eAAe,CAAG,IAAA,CACvB,GAAI,CAACkB,MAAOl9Q,CAAAA,MAAM,CAACkmC,OAAQsI,CAAAA,KAAK,CAAG,CAAA,CACjCtI,QAAQsI,KAAK,CAAG0uO,OAClB,CACA,GAAIh3O,OAAQ86K,CAAAA,OAAO,GAAK27D,SAAAA,CAAUxiR,CAAC,CAAE,CACnC+rC,OAAAA,CAAQ86K,OAAO,CAAG27D,SAAAA,CAAUxiR,EAC9B,CACA,IAAI,CAAC6hR,eAAe,CAAG,MACzB,CACAiB,mBAAoBN,CAAAA,SAAS,CAAE,CAC7B,MAAMz2O,OAAAA,CAAU,IAAI,CAAC0xO,YAAY,EAAE1xO,OAAAA,CACnC,GAAI,CAACy2O,SAAAA,EAAa,CAACz2O,OAAAA,EAAWA,QAAQlkC,IAAI,GAAK40Q,iBAAmB,CAAA,CAChE,MACF,CACA,MAAMsG,MAAAA,CAASC,SAASR,SACxB,CAAA,CAAA,MAAMnuO,KAAQtI,CAAAA,OAAAA,CAAQsI,KAAK,CAC3B,MAAMwyK,OAAU96K,CAAAA,OAAAA,CAAQ86K,OAAO,CAC/B,GAAIk8D,MAAOl9Q,CAAAA,MAAM,CAACwuC,KAAAA,CAAAA,EAAUmuO,SAAUxiR,CAAAA,CAAC,GAAK6mN,OAAS,CAAA,OACrD,IAAI,CAACo8D,UAAU,CAAG,CAChB7jK,SAAAA,CAAW39G,MACXsY,IAAM,CAAA,IAAItU,KAAM4uC,CAAAA,KAAAA,CAAM3kD,CAAC,CAAE2kD,KAAMpwC,CAAAA,CAAC,CAAEowC,KAAMp0C,CAAAA,CAAC,CAAE4mN,OAAAA,CAAAA,CAC3C7sM,GAAIwoQ,SAAU98Q,CAAAA,KAAK,EACnBw9Q,CAAAA,SAAAA,CAAW,IAAIz9Q,KACjB,EACF,CACA09Q,gBAAAA,EAAmB,CACjB,MAAMC,WAAc3hR,CAAAA,GAAAA,EAAAA,CAAQ,IAAI,CAACwhR,UAAU,CAAC7jK,SAAS,CACrD,IAAIikK,iBAAAA,CAAoB,IAAI,CAACnF,YAAY,GAAK,CAAA,CAAI,CAAIkF,CAAAA,WAAAA,CAAc,IAAI,CAAClF,YAAY,CACrFmF,kBAAoB5/Q,IAAKI,CAAAA,KAAK,CAACw/Q,iBAAAA,CAAmB,EAAG,CACrD,CAAA,CAAA,GAAI1zR,IAAKma,CAAAA,GAAG,CAACu5Q,iBAAoB,CAAA,CAAA,CAAA,CAAK,IAAM,CAAA,CAC1C,MAAMH,SAAAA,CAAY,IAAI,CAACD,UAAU,CAACC,SAAS,CAC3CA,SAAAA,CAAU7+Q,IAAI,CAAC,IAAI,CAAC4+Q,UAAU,CAAClpQ,IAAI,CAAE,IAAI,CAACkpQ,UAAU,CAACjpQ,EAAE,CAAEqpQ,mBACzD,IAAI,CAACR,qBAAqB,CAAC,IAAIp9Q,KAAAA,CAAMy9Q,SAAUxzR,CAAAA,CAAC,CAAEwzR,SAAUj/Q,CAAAA,CAAC,CAAEi/Q,SAAAA,CAAUjjR,CAAC,CAAEijR,SAAUljR,CAAAA,CAAC,GACzF,CAAO,KAAA,CACL,IAAI,CAAC6iR,qBAAqB,CAAC,IAAI,CAACI,UAAU,CAACjpQ,EAAE,CAAA,CAC7C,IAAI,CAACilQ,YAAY,GACnB,CACF,CACAA,cAAe,CACb,OAAO,IAAI,CAACgE,WAAU,CAExBrW,QAAW,EAAA,CACT,GAAI,IAAI,CAACqW,UAAU,CAAE,CACnB,IAAI,CAACE,gBAAgB,GACvB,CACF,CACAtnL,QAAW,EAAA,CACT,IAAI,CAACkmL,WAAW,CAAG,KACnB,CAAA,IAAI,CAACG,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACD,UAAU,CAAG,KAAA,CAClB,IAAI,CAAC9B,0BAA0B,CAAC,IAAA,CAAA,CAChC,IAAI,CAAChB,wBAAwB,GAC/B,CACArjL,SAAY,EAAA,CACV,IAAI,CAACqkL,0BAA0B,CAAC,OAChC,IAAI,CAACjB,0BAA0B,CAAC,IAAI,CAACpB,cAAc,EACrD,CACAwF,UAAW,CACT,IAAI,CAAC3F,uBAAuB,EAC5B,CAAA,IAAI,CAACc,yBAAyB,CAAC,KAAO,CAAA,IAAI,CAACtyC,MAAM,EACjD,IAAI,CAACrwI,SAAS,GAChB,CACAk4I,0CAA2CuvC,CAAAA,SAAS,CAAEzvC,gBAAgB,CAAE,CACtE,GAAIyvC,SAAAA,CAAU/F,WAAW,CAAE,CACzB,IAAI,CAACA,WAAW,CAAG1pC,gBAAgB,CAACyvC,SAAAA,CAAU/F,WAAW,CAACrqC,OAAO,EAAG,EACtE,CACF,CA9gBAh7O,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,MAAS,CAAA,CAAA,IAAI,CAACorJ,YAAY,CAAGrF,WAAYz1O,CAAAA,OAAO,CAAE,IAAI,CAACy6O,WAAW,CAAG,KAAO,CAAA,IAAI,CAACG,gBAAgB,CAAG,CAAG,CAAA,IAAI,CAACD,UAAU,CAAG,KAAO,CAAA,IAAI,CAACP,YAAY,CAAG,IAAIj8Q,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CAAI,IAAI,CAACk8Q,mBAAmB,CAAG,IAAA,CAAM,IAAI,CAACC,mBAAmB,CAAG,CAAA,CAAG,IAAI,CAACnE,YAAY,CAAG,IAAM,CAAA,IAAI,CAACqB,cAAc,CAAG,IAAM,CAAA,IAAI,CAACM,yBAAyB,CAAG,IAAM,CAAA,IAAI,CAACI,4BAA4B,CAAG,IAAM,CAAA,IAAI,CAACC,2BAA2B,CAAG,IAAA,CAAM,IAAI,CAACE,6BAA6B,CAAG,IAAA,CAAM,IAAI,CAACE,iCAAiC,CAAG,IAAA,CAAM,IAAI,CAACE,iCAAiC,CAAG,IAC3iB,CAAA,IAAI,CAACqC,YAAY,CAAGrF,WAAYz1O,CAAAA,OAAO,CACvC,IAAI,CAACy6O,WAAW,CAAG,KACnB,CAAA,IAAI,CAACG,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACD,UAAU,CAAG,KAClB,CAAA,IAAI,CAACP,YAAY,CAAG,IAAIj8Q,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAAG,CACvC,CAAA,CAAA,IAAI,CAACk8Q,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACnD,yBAAyB,CAAC,IAAMtyC,CAAAA,MAAAA,EACvC,CAqgBF,CAjkBI,eAFEmxC,CAEG5vK,eAAe,CAAG,WAGvB,CALE4vK,eAAAA,CAKG3vK,aAAa,CAAG,SAGrB,CARE2vK,eAQGkG,CAAAA,gBAAgB,CAAG,YAGxB,CAXElG,eAWGmG,CAAAA,gBAAgB,CAAG,YAGxB,CAdEnG,eAAAA,CAcGoG,WAAW,CAAG,OAGnB,CAjBEpG,eAAAA,CAiBG/nK,gBAAgB,CAAG,YAGxB,CApBE+nK,eAAAA,CAoBG9nK,cAAc,CAAG,UAGtB,CAvBE8nK,eAAAA,CAuBG5nK,iBAAiB,CAAG,aAGzB,CA1BE4nK,gBA0BGqG,gBAAgB,CAAG,YAGxB,CA7BErG,gBA6BGsG,iBAAiB,CAAG,aAGzB,CAhCEtG,gBAgCGuG,eAAe,CAAG,WAGvB,CAnCEvG,eAmCGwG,CAAAA,iBAAiB,CAAG,aAGzB,CAtCExG,eAsCGyG,CAAAA,iBAAiB,CAAG,aAGzB,CAzCEzG,eAyCG0G,CAAAA,gBAAgB,CAAG,YAGxB,CA5CE1G,eA4CG2G,CAAAA,cAAc,CAAG,UAGtB,CA/CE3G,eAAAA,CA+CG4G,kBAAkB,CAAG,cAG1B,CAlDE5G,eAAAA,CAkDG6G,gBAAgB,CAAG,aAkhB5B,SAASnB,QAAAA,CAASoB,MAAM,CAAA,CACtB,OAAO,IAAI3+Q,KAAAA,CAAM2+Q,MAAO10R,CAAAA,CAAC,CAAE00R,MAAAA,CAAOngR,CAAC,CAAEmgR,OAAOnkR,CAAC,CAC/C,CAEA,MAAMokR,oBACJlsR,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,IACf,CAAA,IAAI,CAACqsI,MAAM,CAAG,IACd,CAAA,IAAI,CAACkuI,WAAW,CAAG,IACnB,CAAA,IAAI,CAACK,UAAU,CAAG,IAAItrQ,IACtB,CAAA,IAAI,CAACurQ,cAAc,CAAGvB,2BACtB,CAAA,IAAI,CAACwB,SAAS,CAAG,IAAIt4Q,KAAM,CAAA,GAAA,CAAM,GAAM,CAAA,GAAA,CACvC,CAAA,IAAI,CAACu4Q,WAAW,CAAG,IAAIv4Q,KAAAA,CAAM,EAAK,CAAA,EAAA,CAAK,GACvC,CAAA,IAAI,CAACw4Q,YAAY,CAAG,IAAIx4Q,KAAM,CAAA,GAAA,CAAM,IAAM,GAC1C,CAAA,CAAA,IAAI,CAACy4Q,YAAY,CAAG,CACpB,CAAA,IAAI,CAACC,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACC,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACC,mBAAmB,CAAG,EAC7B,CACF,CAEA,MAAM8F,UAAY,CAChB,SAAA,CACA,QACA,CAAA,CACE5wR,KAAM,YACNmU,CAAAA,IAAAA,CAAM,MACR,CAAA,CACA,iBACA,CACEnU,IAAAA,CAAM,WACNmU,CAAAA,IAAAA,CAAM,MACR,CAAA,CACA,CACEnU,IAAAA,CAAM,cACNmU,IAAM,CAAA,MACR,CACA,CAAA,CACEnU,KAAM,cACNmU,CAAAA,IAAAA,CAAM,MACR,CAAA,CACA,eACA,kBACA,CAAA,kBAAA,CACA,oBACA,CAAA,oBAAA,CACA,qBACA,CAAA,qBAAA,CACD,CACD,MAAM08Q,8BAA8BhmB,eAUlCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDi9F,UAAUgsC,WAAW,CAAGpzQ,IAAKozQ,CAAAA,WAAW,CACxC,KAAK,CAAC7e,uBAAAA,CAAwBntB,UAAWpnO,IAAMk6Q,CAAAA,SAAAA,EACjD,CACA1X,QAAAA,CAAS3+J,EAAE,CAAE,CACX,MAAM/jE,UAAAA,CAAa,IAAI,CAAC0Z,KAAK,CAC7B,IAAI,MAAMxpB,EAAAA,IAAM8P,UAAW,CAAA,CACzB,MAAM8sF,MAAS9sF,CAAAA,UAAU,CAAC9P,EAAAA,CAAG,CAAC48F,MAAM,CACpC,MAAMw6G,SAAAA,CAAYx6G,OAAOpsB,MAAM,CAC/B,GAAI4mI,SAAAA,CAAUvuO,OAAO,EAAI+zH,MAAO/zH,CAAAA,OAAO,CAAE,CACvCuuO,SAAAA,CAAUo7B,QAAQ,GACpB,CACF,CACF,CACA4X,kBAAAA,CAAmBxtJ,MAAM,CAAEw6G,SAAS,CAAE,CACpCA,SAAU8xC,CAAAA,QAAQ,GACpB,CACA/pP,SAAU,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAU,CAAA,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CA7BAz0Q,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GACN,CAAA,CAAA,IAAI,CAAChmM,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAG8e,eACrB,CAAA,IAAI,CAAC5e,QAAQ,CAAG2lB,mBAChB,CAAA,IAAI,CAACvzC,MAAM,CAAGwzC,SACd,CAAA,IAAI,CAAC7sR,EAAE,CAAC,cAAA,CAAgB,IAAI,CAAC+sR,kBAAkB,CAAE,IAAI,CACrD,CAAA,IAAI,CAACpkD,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAU,CAAA,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,EACnD,CAsBF,CAEA,MAAM6X,OAAU,CAAA,IAAIp4Q,IACpB,CAAA,MAAM4kM,MAAQ,IAAIh5L,IAClB,CAAMysQ,MAAAA,kBAAAA,SAA2B3mB,SAgC/B,CAAA,IAAI3zP,IAAO,EAAA,CACT,MAAMk0P,MAAS,CAAA,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAG,CAAA,CACvD,OAAOmrB,MAAAA,CAASA,MAAOl0P,CAAAA,IAAI,CAAG,IAChC,CACA,IAAInH,OAAAA,CAAQyH,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,GAC5B,EAAA,CACA,IAAIzH,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OAAO,CAE1B,IAAI4E,IAAAA,CAAK6C,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,EACzB,CACA,IAAI7C,IAAAA,EAAO,CACT,OAAO,IAAI,CAACuC,IAAI,CAACvC,IAAI,CAEvB,IAAI+T,WAAYlR,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,GAChC,EAAA,CACA,IAAIkR,WAAc,EAAA,CAChB,OAAO,IAAI,CAACxR,IAAI,CAACwR,WACnB,CACA,IAAI+oQ,YAAaj6Q,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAgB7yQ,CAAAA,GAAAA,EACjC,CACA,IAAIi6Q,cAAe,CACjB,OAAO,IAAI,CAACv6Q,IAAI,CAACu6Q,YACnB,CACA,IAAIC,aAAAA,CAAcl6Q,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAiB7yQ,GAClC,EAAA,CACA,IAAIk6Q,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACx6Q,IAAI,CAACw6Q,aAAa,CAEhC,IAAIh5Q,MAAOlB,CAAAA,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAA,CAAU7yQ,GAC3B,EAAA,CACA,IAAIkB,MAAAA,EAAS,CACX,OAAO,IAAI,CAACxB,IAAI,CAACwB,MACnB,CACA,IAAI6J,KAAK/K,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAA,CAAQ7yQ,KACzB,CACA,IAAI+K,IAAO,EAAA,CACT,OAAO,IAAI,CAACrL,IAAI,CAACqL,IAAI,CAEvB,IAAIO,MAAAA,CAAOtL,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAU7yQ,CAAAA,GAAAA,EAC3B,CACA,IAAIsL,MAAS,EAAA,CACX,OAAO,IAAI,CAAC5L,IAAI,CAAC4L,MACnB,CACA,IAAI+zM,MAAMr/M,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,EAC1B,CACA,IAAIq/M,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC3/M,IAAI,CAAC2/M,KAAK,CAExB,IAAI86D,WAAAA,CAAYn6Q,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,GAChC,EAAA,CACA,IAAIm6Q,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACz6Q,IAAI,CAACy6Q,WAAW,CAE9B,IAAIC,UAAWp6Q,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAIo6Q,UAAa,EAAA,CACf,OAAO,IAAI,CAAC16Q,IAAI,CAAC06Q,UACnB,CACA,IAAIxmI,KAAAA,CAAM5zI,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,EAC1B,CACA,IAAI4zI,OAAQ,CACV,OAAO,IAAI,CAACl0I,IAAI,CAACk0I,KAAK,CAExB,IAAI5oB,KAAAA,CAAMhrH,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,QAAS7yQ,GAC1B,EAAA,CACA,IAAIgrH,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACtrH,IAAI,CAACsrH,KAAK,CAExB,IAAIt5B,MAAO1xF,CAAAA,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAA,CAAU7yQ,KAC3B,CACA,IAAI0xF,MAAS,EAAA,CACX,OAAO,IAAI,CAAChyF,IAAI,CAACgyF,MACnB,CACA,IAAI2oL,qBAAsBr6Q,CAAAA,GAAG,CAAE,CAC7B,IAAI,CAAC6yQ,SAAS,CAAC,uBAAA,CAAyB7yQ,GAC1C,EAAA,CACA,IAAIq6Q,qBAAAA,EAAwB,CAC1B,OAAO,IAAI,CAAC36Q,IAAI,CAAC26Q,qBACnB,CACAxH,SAAAA,CAAU7pR,IAAI,CAAEqE,KAAK,CAAE,CACrB,MAAMqS,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAW3gN,CAAAA,IAAI,CAAC1W,IAAK,CAC3B0W,CAAAA,IAAI,CAAC1W,IAAK,CAAA,CAAGqE,KACb,CAAA,IAAI,CAACuB,IAAI,CAAC,KAAA,CAAO5F,KAAMq3N,QAAUhzN,CAAAA,KAAAA,EACnC,CACAitR,SAAAA,CAAUtxR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAClC,GAAI47E,QAAa57E,GAAAA,QAAAA,CAAU,CACzB,IAAI,CAACg9F,MAAM,CAAC84C,UAAU,CAAC,IAAI,CAAEl6D,SAAU57E,QACzC,EAAA,CACF,CACA+1I,gBAAAA,CAAiBxxR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACzC,MAAMjuI,CAAAA,CAAI,IAAI,CAACkJ,IAAI,CAACvC,IAAI,CACxB,GAAI,IAAI,CAACuC,IAAI,CAACq+B,WAAW,EAAIvnC,CAAM,GAAA,KAAA,CAAO,CACxC,IAAI,CAACirO,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAC,WAAAA,CAAY1xR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACpC,IAAI,CAACk2I,UAAU,CAAG,CAAC,IAAI,CAACj7Q,IAAI,CAACu6Q,YAAY,CAAC9+Q,MAAM,CAACwG,IAAAA,CAAK8B,IAAI,CAAK,EAAA,CAAC,IAAI,CAAC/D,IAAI,CAACw6Q,aAAa,CAAC/+Q,MAAM,CAACoS,IAAAA,CAAKjG,QAAQ,CAAA,CAC5G,GAAI,IAAI,CAAC5H,IAAI,CAACq+B,WAAW,CAAE,CACzB,IAAI,CAAC0jM,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAG,YAAY5xR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACpC,MAAMjuI,CAAAA,CAAI,IAAI,CAACkJ,IAAI,CAACvC,IAAI,CACxB,GAAI,IAAI,CAACuC,IAAI,CAACq+B,WAAW,GAAKvnC,IAAM,QAAYA,EAAAA,CAAAA,GAAM,SAAaA,EAAAA,CAAAA,GAAM,UAAcA,EAAAA,CAAAA,GAAM,MAAK,CAAA,CAAI,CACpG,IAAI,CAACirO,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAI,WAAY7xR,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACpC,MAAMjuI,CAAI,CAAA,IAAI,CAACkJ,IAAI,CAACvC,IAAI,CACxB,GAAI,IAAI,CAACuC,IAAI,CAACq+B,WAAW,GAAKvnC,CAAAA,GAAM,SAAaA,EAAAA,CAAAA,GAAM,YAAcA,CAAM,GAAA,MAAK,CAAI,CAAA,CAClF,IAAI,CAACirO,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAK,SAAU9xR,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAClC,MAAMjuI,EAAI,IAAI,CAACkJ,IAAI,CAACvC,IAAI,CACxB,GAAI,IAAI,CAACuC,IAAI,CAACq+B,WAAW,GAAKvnC,CAAM,GAAA,SAAA,EAAaA,CAAM,GAAA,UAAA,EAAcA,IAAM,MAAK,CAAA,CAAI,CAClF,IAAI,CAACirO,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAM,WAAW/xR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACnC,MAAMg5F,OAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAIpd,QAAU,CAAA,CACZ,MAAMhB,KAAAA,CAAQoe,OAAOh2O,GAAG,CAAC44N,QACzB,CAAA,CAAA,GAAIhB,MAAO,CACTA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACuzQ,cAAc,CAAE,IAAI,EAC/C,CACF,CACA,GAAIz7H,QAAU,CAAA,CACZ,GAAIA,QAAAA,YAAoBg2F,MAAO,CAC7B,IAAI,CAAC/6N,IAAI,CAAC2/M,KAAK,CAAG56E,QAAAA,CAAS/0G,GAAE,CAE/B,MAAM2vL,KAAAA,CAAQoe,OAAOh2O,GAAG,CAAC,IAAI,CAACiY,IAAI,CAAC2/M,KAAK,CACxC,CAAA,GAAIA,KAAO,CAAA,CACTA,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACuzQ,cAAc,CAAE,IAAI,CAAA,CAC7C7gD,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACmzQ,cAAc,CAAE,IAAI,EAC9C,CACF,CACA,GAAI,IAAI,CAACxgQ,IAAI,CAACq+B,WAAW,EAAI,IAAI,CAACr+B,IAAI,CAACvC,IAAI,GAAK,MAAA,CAAQ,CACtD,GAAI,CAACsnI,QAAAA,CAAU,CACb,IAAI,CAAC/kI,IAAI,CAACsrH,KAAK,CAAG,KACpB,CACA,IAAI,CAACy2G,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAO,iBAAiBhyR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACzC,MAAMg5F,MAAAA,CAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAIpd,SAAU,CACZ,MAAMhB,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC44N,QACzB,CAAA,CAAA,GAAIhB,MAAO,CACTA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACsuR,oBAAoB,CAAE,IAAI,EACrD,CACF,CACA,GAAIx2I,QAAU,CAAA,CACZ,GAAIA,QAAAA,YAAoBg2F,MAAO,CAC7B,IAAI,CAAC/6N,IAAI,CAACy6Q,WAAW,CAAG11I,QAAAA,CAAS/0G,GAAE,CAErC,MAAM2vL,KAAAA,CAAQoe,OAAOh2O,GAAG,CAAC,IAAI,CAACiY,IAAI,CAACy6Q,WAAW,CAC9C,CAAA,GAAI96D,KAAO,CAAA,CACTA,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACsuR,oBAAoB,CAAE,IAAI,CAAA,CACnD57D,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACkuR,oBAAoB,CAAE,IAAI,EACpD,CACF,CACA,GAAI,IAAI,CAACv7Q,IAAI,CAACq+B,WAAW,EAAI,IAAI,CAACr+B,IAAI,CAACvC,IAAI,GAAK,MAAA,CAAQ,CACtD,GAAI,CAACsnI,QAAAA,CAAU,CACb,IAAI,CAAC/kI,IAAI,CAACgyF,MAAM,CAAG,KACrB,CACA,IAAI,CAAC+vI,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACF,CACAS,WAAWlyR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACnC,GAAI,IAAI,CAAC/kI,IAAI,CAACq+B,WAAW,EAAI,IAAI,CAACr+B,IAAI,CAACvC,IAAI,GAAK,MAAA,CAAQ,CACtD,IAAI,CAACskO,MAAM,CAAC05C,eAAe,CAAC/rJ,IAAI,CAACgsJ,uBAAuB,CAAC,IAAI,EAC/D,CACF,CACAC,WAAAA,CAAYryR,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACpC,IAAI,CAACy2I,UAAU,CAAClyR,IAAAA,CAAMq3N,QAAU57E,CAAAA,QAAAA,EAClC,CACAy7H,cAAAA,CAAe7gD,KAAK,CAAE,CACpBA,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACuzQ,cAAc,CAAE,IAAI,EAC7C,GAAI,IAAI,CAACxgQ,IAAI,CAAC2/M,KAAK,GAAKA,KAAAA,CAAM3vL,EAAE,CAAE,CAChC,IAAI,CAAC2vL,KAAK,CAAG,KACf,CACF,CACA47D,qBAAqB57D,KAAK,CAAE,CAC1BA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACsuR,oBAAoB,CAAE,IAAI,CAAA,CACnD,GAAI,IAAI,CAACv7Q,IAAI,CAACy6Q,WAAW,GAAK96D,KAAAA,CAAM3vL,EAAE,CAAE,CACtC,IAAI,CAACyqP,WAAW,CAAG,KACrB,CACF,CACAmB,0BAAAA,CAA2B1nI,KAAK,CAAE,CAChC,MAAM2nI,QAAAA,CAAW,IAAI,CAAC77Q,IAAI,CAACk0I,KAAK,CAChC,MAAM4nI,MAASD,CAAAA,QAAAA,CAASE,iBAAiB,EACzC,CAAA,IAAI,IAAI/1R,CAAAA,CAAI,EAAGA,CAAI81R,CAAAA,MAAAA,CAAQ91R,CAAI,EAAA,CAAA,CAC7B,MAAMg2R,UAAaH,CAAAA,QAAAA,CAASI,aAAa,CAACj2R,CAC1C,CAAA,CAAA,GAAIsmP,IAAK4vC,CAAAA,UAAU,CAACF,UAAgB1vC,CAAAA,GAAAA,IAAAA,CAAK4vC,UAAU,CAAChoI,OAAQ,CAC1D,OAAOluJ,CACT,CACF,CACA,OAAO,IACT,CACAm2R,SAAAA,CAAUllR,MAAM,CAAE,CAChB,GAAI,OAAOq1O,IAAS,GAAA,WAAA,CAAa,CAC/B,MACF,CACA,GAAI,IAAI,CAAC8vC,eAAe,CAAE,CACxB,IAAI,CAACr6C,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CAAO,KAAA,GAAI,CAAC,IAAI,CAACnuJ,MAAM,CAACy/G,SAAS,CAAE,CACjC,IAAIgwC,QAAW,CAAA,IAAI,CAACzvJ,MAAM,CAAC31H,MAAM,CACjC,MAAMolR,QAAAA,CAAS,CACb,GAAIA,SAASC,SAAS,EAAID,QAASC,CAAAA,SAAS,CAAC7+Q,IAAI,GAAK,UAAY,CAAA,CAChE,GAAI4+Q,QAAAA,CAASC,SAAS,CAACpoI,KAAK,CAAC6nI,iBAAiB,EAAO,GAAA,CAAA,CAAG,CACtD,IAAI,CAACh6C,MAAM,CAACg5C,sBAAsB,CAACsB,QAAAA,CAASC,SAAS,EACvD,CAAO,KAAA,CACL,IAAI,CAACv6C,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,EACzC,CACA,KACF,CACAsB,QAAAA,CAAWA,SAASplR,OACtB,CACF,CACF,CACAslR,eAAAA,EAAkB,CAChB,MAAM3vJ,OAAS,IAAI,CAACA,MAAM,CAC1B,GAAIA,MAAAA,CAAOmgB,WAAW,CAAE,CACtB,IAAIp0G,KAAAA,CAAQi0F,MAAOkgB,CAAAA,WAAW,CAC9B,IAAI71I,MAAS21H,CAAAA,MAAAA,CACb,MAAM31H,MAAU,EAAA,CAAC0hC,KAAM,CAAA,CACrB,GAAI1hC,MAAOqlR,CAAAA,SAAS,EAAIrlR,MAAAA,CAAOqlR,SAAS,GAAK,IAAI,CAACF,eAAe,CAAE,CACjE,KACF,CACA,GAAInlR,MAAO61I,CAAAA,WAAW,CAAE,CACtBn0G,MAAQ,KACV,CACA1hC,MAASA,CAAAA,MAAAA,CAAOA,OAAM,CAExB,GAAI0hC,KAAAA,CAAO,CACTi0F,MAAAA,CAAOj6H,OAAO,CAAC,IAAI,CAACovO,MAAM,CAAC05C,eAAe,CAACI,QAAQ,CAACW,8BAA8B,CAAE5vJ,QACpF,MAAM6vJ,aAAAA,CAAgB,IAAI,CAACL,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAC3D,GAAIowC,aAAe,CAAA,CACjBA,aAAc7iI,CAAAA,QAAQ,GACxB,CACF,CACF,CACF,CACA8iI,gBAAmB,EAAA,CACjB,MAAMroI,GAAAA,CAAM,IAAI,CAACznB,MAAM,CAACtc,WAAW,EACnC,CAAA,GAAI,IAAI,CAAC2qK,UAAU,CAAE,CACnB,MAAMzqI,GAAM,CAAA,IAAI,CAAC5jB,MAAM,CAACohB,WAAW,EACnC,CAAA,MAAM2uI,GAAK,IAAI,CAAC38Q,IAAI,CAACu6Q,YAAY,CACjC1zE,KAAAA,CAAM9hN,IAAI,CAACyrJ,KAAK/oI,eAAe,CAACk1Q,EAAItC,CAAAA,OAAAA,CAAAA,CACpC,OAAOA,OAAAA,CAAQ/jR,GAAG,CAAC+9I,IACrB,CACA,OAAOA,GACT,CACAuoI,kBAAmB,CACjB,MAAMpsI,GAAM,CAAA,IAAI,CAAC5jB,MAAM,CAACohB,WAAW,EAAA,CACnC,GAAI,IAAI,CAACitI,UAAU,CAAE,CACnB,OAAOp0E,KAAM9hN,CAAAA,IAAI,CAACyrJ,GAAKltI,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAACtD,IAAI,CAACw6Q,aAAa,CACpD,CACA,OAAOhqI,GACT,CACA/+C,UAAW,CACT,GAAI,IAAI,CAACzxF,IAAI,CAACvC,IAAI,GAAK,MAAA,GAAW,IAAI,CAACuC,IAAI,CAAC2/M,KAAK,EAAI,IAAI,CAAC3/M,IAAI,CAACy6Q,WAAW,CAAD,EAAM,IAAI,CAACz6Q,IAAI,CAACq+B,WAAW,CAAE,CACpG,MAAMshL,KAAQ,CAAA,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACiY,IAAI,CAAC2/M,KAAK,EAAI,IAAI,CAAC3/M,IAAI,CAACy6Q,WAAW,CAAA,CACjF,GAAI96D,KAAAA,GAAU,CAACA,KAAAA,CAAMpyK,QAAQ,EAAI,CAAC,IAAI,CAACvtC,IAAI,CAACk0I,KAAI,CAAI,CAAA,CAClD,IAAI,CAAC6tF,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,CACvC,CAAA,MACF,CACF,CACA,GAAI,IAAI,CAACnuJ,MAAM,CAACy/G,SAAS,CAAE,CACzB,GAAI,IAAI,CAACz/G,MAAM,CAACy/G,SAAS,CAACxzO,OAAO,CAAE,CACjC,IAAI,CAAC+zH,MAAM,CAACy/G,SAAS,CAACwwC,gBAAgB,GACxC,CACF,CAAO,KAAA,GAAI,IAAI,CAACT,eAAe,EAAI,IAAI,GAAK,IAAI,CAACA,eAAe,CAAE,CAChE,GAAI,IAAI,CAACA,eAAe,CAACloI,KAAK,CAAC6nI,iBAAiB,EAAO,GAAA,CAAA,CAAG,CACxD,IAAI,CAACh6C,MAAM,CAACg5C,sBAAsB,CAAC,IAAI,CAACqB,eAAe,EACzD,CAAO,KAAA,CACL,MAAMj8I,SAAAA,CAAY,IAAI,CAAC4hG,MAAM,CAAC+6C,iBAAiB,CAAC,IAAI,CAAClwJ,MAAM,CAAE,IAAI,CAACwvJ,eAAe,CAACxvJ,MAAM,CACxF,CAAA,IAAI,CAACwvJ,eAAe,CAACloI,KAAK,CAAC6oI,aAAa,CAAC58I,SAAW,CAAA,IAAI,CAACngI,IAAI,CAACk0I,KAAK,CAAA,CACnEo4F,IAAKn9M,CAAAA,OAAO,CAACgxG,SACb,CAAA,CAAA,GAAI,IAAI,CAACi8I,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAAE,CACzC,IAAI,CAAC+vC,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAACzyF,QAAQ,GAChD,CACF,CACF,CAAO,KAAA,GAAI,IAAI,CAAChtB,MAAM,CAACokJ,OAAO,CAAE,CAC9B,IAAI,CAACpkJ,MAAM,CAACokJ,OAAO,CAAC/zL,MAAM,GAC5B,CACF,CACAyU,SAAAA,EAAY,CACV,GAAI,IAAI,CAACk7B,MAAM,CAACy/G,SAAS,CAAE,CACzB,IAAI,CAACz/G,MAAM,CAACy/G,SAAS,CAAC2wC,iBAAiB,GACzC,CAAO,KAAA,GAAI,IAAI,CAACZ,eAAe,EAAI,IAAI,GAAK,IAAI,CAACA,eAAe,CAAE,CAChE,GAAI,CAAC,IAAI,CAACA,eAAe,CAACxvJ,MAAM,CAAC68G,WAAW,CAAE,CAC5C,IAAI,CAAC1H,MAAM,CAACk7C,oBAAoB,CAAC,IAAI,CAACb,eAAe,CAAE,IAAI,CAACp8Q,IAAI,CAACk0I,KAAK,CAAA,CACtE,GAAI,IAAI,CAACkoI,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAAE,CACzC,IAAI,CAAC+vC,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAACzyF,QAAQ,GAChD,CACF,CACF,CAAO,KAAA,GAAI,IAAI,CAAChtB,MAAM,CAACokJ,OAAO,CAAE,CAC9B,IAAI,CAACpkJ,MAAM,CAACokJ,OAAO,CAACr0L,OAAO,GAC7B,CACF,CACAulL,cAAiB,EAAA,CACf,GAAI,IAAI,CAACviD,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAG,KACf,CACA,GAAI,IAAI,CAAC86D,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAG,KACrB,CACA,IAAI,CAAC7tJ,MAAM,CAAC3/H,GAAG,CAAC,QAAA,CAAU,IAAI,CAACkvR,SAAS,CAAE,IAAI,CAC9C,CAAA,IAAI,CAAClvR,GAAG,GACV,CAvVAc,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,MAAS,CAAA,CAAA,IAAI,CAACwvJ,eAAe,CAAG,IAAM,CAAA,IAAI,CAACnB,UAAU,CAAG,KACtE,CAAA,IAAI,CAACruJ,MAAM,CAACv/H,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC8uR,SAAS,CAAE,IAAI,CAAA,CAC7C,IAAI,CAAC9uR,EAAE,CAAC,UAAA,CAAY,IAAI,CAACutR,SAAS,CAAE,IAAI,CACxC,CAAA,IAAI,CAACvtR,EAAE,CAAC,gBAAA,CAAkB,IAAI,CAACmuR,UAAU,CAAE,IAAI,EAC/C,IAAI,CAACnuR,EAAE,CAAC,kBAAmB,IAAI,CAACytR,gBAAgB,CAAE,IAAI,CAAA,CACtD,IAAI,CAACztR,EAAE,CAAC,kBAAA,CAAoB,IAAI,CAAC2tR,WAAW,CAAE,IAAI,CAClD,CAAA,IAAI,CAAC3tR,EAAE,CAAC,mBAAqB,CAAA,IAAI,CAAC2tR,WAAW,CAAE,IAAI,EACnD,IAAI,CAAC3tR,EAAE,CAAC,aAAc,IAAI,CAAC6tR,WAAW,CAAE,IAAI,CAC5C,CAAA,IAAI,CAAC7tR,EAAE,CAAC,YAAA,CAAc,IAAI,CAAC8tR,WAAW,CAAE,IAAI,CAC5C,CAAA,IAAI,CAAC9tR,EAAE,CAAC,UAAY,CAAA,IAAI,CAAC+tR,SAAS,CAAE,IAAI,CAAA,CACxC,IAAI,CAAC/tR,EAAE,CAAC,YAAa,IAAI,CAACguR,UAAU,CAAE,IAAI,CAC1C,CAAA,IAAI,CAAChuR,EAAE,CAAC,iBAAmB,CAAA,IAAI,CAACiuR,gBAAgB,CAAE,IAAI,CACtD,CAAA,IAAI,CAACjuR,EAAE,CAAC,WAAa,CAAA,IAAI,CAACmuR,UAAU,CAAE,IAAI,EAC1C,IAAI,CAACnuR,EAAE,CAAC,YAAc,CAAA,IAAI,CAACsuR,WAAW,CAAE,IAAI,EAC9C,CAyUF,CAtWI,kBAAKuB,CAAAA,aAAa,CAAG,SAGrB,CALE5C,kBAKG6C,CAAAA,oBAAoB,CAAG,gBAG5B,CARE7C,kBAAAA,CAQG8C,kBAAkB,CAAG,cAG1B,CAXE9C,kBAAAA,CAWG+C,kBAAkB,CAAG,cAG1B,CAdE/C,kBAAAA,CAcGgD,kBAAkB,CAAG,cA4V9B,CAAMC,MAAAA,sBAAAA,CACJxvR,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,IACf,CAAA,IAAI,CAAC4E,IAAI,CAAG,KACZ,CAAA,IAAI,CAAC+T,WAAW,CAAG,IAAIvP,IAAK,CAAA,EAAA,CAAK,EAAK,CAAA,EAAA,CACtC,CAAA,IAAI,CAACs4Q,YAAY,CAAG,IAAIt4Q,IACxB,CAAA,IAAI,CAACu4Q,aAAa,CAAG,IAAI3sQ,IACzB,CAAA,IAAI,CAACrM,MAAM,CAAG,EACd,CAAA,IAAI,CAAC6J,IAAI,CAAG,CACZ,CAAA,IAAI,CAACO,MAAM,CAAG,CACd,CAAA,IAAI,CAAC8uQ,UAAU,CAAG,KAClB,CAAA,IAAI,CAAC/6D,KAAK,CAAG,IACb,CAAA,IAAI,CAAC86D,WAAW,CAAG,IACnB,CAAA,IAAI,CAACE,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACzmI,KAAK,CAAG,IACb,CAAA,IAAI,CAAC5oB,KAAK,CAAG,IACb,CAAA,IAAI,CAACt5B,MAAM,CAAG,IACd,CAAA,IAAI,CAAC3zD,WAAW,CAAG,MACrB,CACF,CAEA,MAAMm/O,eAAkB,CAAA,QAAA,CACxB,MAAMC,gBAAAA,CAAmB,UACzB,MAAMC,kBAAAA,CAAqB,WAC3B,CAAA,MAAMC,sBAAyB,CAAA,CAAA,CAC/B,MAAMC,yBAAAA,CAA4B,EAClC,MAAMC,0BAAAA,CAA6B,CACnC,CAAA,MAAMC,qBAAuB,CAC7B,CAAA,MAAMC,yBAA4B,CAAA,CAAA,CAClC,MAAMC,4BAA+B,CAAA,CAAA,CACrC,MAAMC,8BAAAA,CAAiC,CACvC,CAAA,MAAMC,4BAA+B,CAAA,CAAA,CACrC,MAAMC,cAAiB,CAAA,CAAA,CACvB,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,iBAAAA,CAAoB,CAC1B,CAAA,MAAMC,iBAAmB,CACzB,CAAA,MAAMC,mBAAsB,CAAA,CAAA,CAC5B,MAAMC,kBAAAA,CAAqB,CAC3B,CAAA,MAAMC,kBAAoB,EAC1B,CAAA,MAAMC,kBAAqB,CAAA,EAAA,CAC3B,MAAMC,kBAAqB,CAAA,EAAA,CAC3B,MAAMC,gBAAAA,CAAmB,IACzB,MAAMC,gBAAAA,CAAmB,GACzB,CAAA,MAAMC,gBAAmB,CAAA,GAAA,CACzB,MAAMC,gBAAAA,CAAmB,KACzB,MAAMC,gBAAAA,CAAmB,IACzB,CAAA,MAAMC,iBAAmB,IACzB,CAAA,MAAMC,gBAAmB,CAAA,IAAA,CACzB,MAAMC,gBAAmB,CAAA,KAAA,CACzB,MAAMC,aAAAA,CAAgB,CACtB,CAAA,MAAMC,YAAe,CAAA,KAAA,CACrB,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,mBAAAA,CAAsB,MAAQ,CACpC,CAAA,MAAMC,6BAAgC,CAAA,KAAA,EAAS,CAAI,CAAA,CAAA,CAEnD,CAAA,IAAIC,WAAaC,CAAAA,WAAAA,CAAaC,gBAC9B,CAAA,MAAMC,QAYJrtR,UAAWyN,CAAAA,IAAI,CAAE,CACf,MAAM4sH,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMsnB,KAAAA,CAAQl0I,IAAKk0I,CAAAA,KAAK,CACxB,GAAIA,KAAS,EAAA,OAAOo4F,OAAS,WAAa,CAAA,CACxC,GAAI1/G,MAAAA,CAAOokJ,OAAO,CAAE,CAClBpkJ,MAAOokJ,CAAAA,OAAO,CAAC7hP,OAAO,GACxB,CACA,MAAM0wP,IAAO,CAAA,CAAA,CACb,MAAMz4C,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,GAAIA,SAAW,CAAA,CACb,MAAM04C,OAAAA,CAAU14C,UAAUs1C,gBAAgB,EAAA,CAC1C,MAAMqD,OAAAA,CAAU34C,SAAUw1C,CAAAA,gBAAgB,EAC1C6C,CAAAA,WAAAA,CAAY9hP,QAAQ,CAACmiP,OAAAA,CAAQzlR,CAAC,CAAEylR,QAAQ/9Q,CAAC,CAAE+9Q,OAAQ59Q,CAAAA,CAAC,EACpDw9Q,WAAY/hP,CAAAA,QAAQ,CAACoiP,OAAAA,CAAQ1lR,CAAC,CAAE0lR,OAAQh+Q,CAAAA,CAAC,CAAEg+Q,OAAQ79Q,CAAAA,CAAC,CAAE69Q,OAAAA,CAAQx6Q,CAAC,EACjE,CAAA,KAAO,CACL,MAAM8uI,IAAMznB,MAAOtc,CAAAA,WAAW,EAC9B,CAAA,MAAMkgC,GAAM5jB,CAAAA,MAAAA,CAAOohB,WAAW,EAAA,CAC9ByxI,YAAY9hP,QAAQ,CAAC02G,GAAIh6I,CAAAA,CAAC,CAAEg6I,GAAItyI,CAAAA,CAAC,CAAEsyI,GAAAA,CAAInyI,CAAC,CACxCw9Q,CAAAA,WAAAA,CAAY/hP,QAAQ,CAAC6yG,GAAIn2I,CAAAA,CAAC,CAAEm2I,GAAAA,CAAIzuI,CAAC,CAAEyuI,GAAAA,CAAItuI,CAAC,CAAEsuI,IAAIjrI,CAAC,EACjD,CACAo6Q,gBAAAA,CAAiBK,SAAS,CAACP,WAAAA,CAAAA,CAC3BE,gBAAiB3wI,CAAAA,WAAW,CAAC0wI,WAAAA,CAAAA,CAC7B,MAAMvuR,IAAAA,CAAO,IAAI,CAAC6kO,GAAG,CAACgR,OAAO,CAACqF,SAAS,CAAC4zC,UAAU,CAACJ,KAAM3rI,KAAOyrI,CAAAA,gBAAAA,CAAAA,CAChExuR,IAAK+uR,CAAAA,cAAc,CAAC,CAAA,CAAA,CACpB/uR,IAAKgvR,CAAAA,WAAW,CAAC,CACjBhvR,CAAAA,CAAAA,IAAAA,CAAKivR,UAAU,CAAC,EAAG,CACnBX,CAAAA,CAAAA,WAAAA,CAAY9hP,QAAQ,CAAC,EAAG,CAAG,CAAA,CAAA,CAAA,CAC3BxsC,IAAKkvR,CAAAA,eAAe,CAACZ,WAAAA,CAAAA,CACrBtuR,IAAKmvR,CAAAA,gBAAgB,CAACb,WACtBtuR,CAAAA,CAAAA,IAAAA,CAAKovR,iBAAiB,CAACpvR,KAAKqvR,iBAAiB,EAAA,CAAK3C,0BAClD1sR,CAAAA,CAAAA,KAAKy7H,MAAM,CAAGA,MACd,CAAA,IAAI,CAACz7H,IAAI,CAAGA,KACZ,GAAI,IAAI,CAACi2O,SAAS,CAACvuO,OAAO,EAAI+zH,MAAAA,CAAO/zH,OAAO,CAAE,CAC5C,IAAI,CAACokF,MAAM,GACb,CACF,CACF,CACA9tD,OAAU,EAAA,CACR,GAAI,CAAC,IAAI,CAACh+B,IAAI,CAAE,OAChB,IAAI,CAACwrF,OAAO,EACZ,CAAA,IAAI,CAACq5I,GAAG,CAACgR,OAAO,CAACqF,SAAS,CAACo0C,WAAW,CAAC,IAAI,CAACtvR,IAAI,CAChD,CAAA,IAAI,CAACA,IAAI,CAAG,KACd,CACAuvR,mBAAAA,CAAoBvgJ,SAAS,CAAE,CAC7B,MAAMinG,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,GAAIA,SAAW,CAAA,CACb,MAAM04C,OAAU14C,CAAAA,SAAAA,CAAUs1C,gBAAgB,EAAA,CAC1C,MAAMqD,OAAAA,CAAU34C,SAAUw1C,CAAAA,gBAAgB,GAC1C6C,WAAY9hP,CAAAA,QAAQ,CAACmiP,OAAAA,CAAQzlR,CAAC,CAAEylR,OAAQ/9Q,CAAAA,CAAC,CAAE+9Q,OAAQ59Q,CAAAA,CAAC,CACpDw9Q,CAAAA,WAAAA,CAAY/hP,QAAQ,CAACoiP,OAAQ1lR,CAAAA,CAAC,CAAE0lR,OAAQh+Q,CAAAA,CAAC,CAAEg+Q,OAAAA,CAAQ79Q,CAAC,CAAE69Q,OAAAA,CAAQx6Q,CAAC,EACjE,MAAO,CACL,MAAM8uI,GAAM,CAAA,IAAI,CAACznB,MAAM,CAACtc,WAAW,GACnC,MAAMkgC,GAAAA,CAAM,IAAI,CAAC5jB,MAAM,CAACohB,WAAW,EACnCyxI,CAAAA,WAAAA,CAAY9hP,QAAQ,CAAC02G,GAAAA,CAAIh6I,CAAC,CAAEg6I,GAAItyI,CAAAA,CAAC,CAAEsyI,GAAAA,CAAInyI,CAAC,CACxCw9Q,CAAAA,WAAAA,CAAY/hP,QAAQ,CAAC6yG,IAAIn2I,CAAC,CAAEm2I,GAAIzuI,CAAAA,CAAC,CAAEyuI,GAAItuI,CAAAA,CAAC,CAAEsuI,GAAAA,CAAIjrI,CAAC,EACjD,CACA46H,SAAAA,CAAU6/I,SAAS,CAACP,WAAAA,CAAAA,CACpBt/I,SAAU6O,CAAAA,WAAW,CAAC0wI,WAAAA,EACxB,CACAiB,eAAAA,EAAkB,CAChB,IAAI,CAACD,mBAAmB,CAACf,gBACzB,CAAA,CAAA,MAAMxuR,IAAO,CAAA,IAAI,CAACA,IAAI,CACtBA,IAAKyvR,CAAAA,iBAAiB,CAACjB,gBACvBxuR,CAAAA,CAAAA,IAAAA,CAAKyoJ,QAAQ,GACf,CACA38D,MAAS,EAAA,CACP,MAAM9rF,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,GAAI,CAACA,IAAAA,CAAM,OACX,MAAM4wO,OAAS,IAAI,CAAC/L,GAAG,CAACgR,OAAO,CAACqF,SAAS,CACzC,MAAM/7O,GAAMyxO,CAAAA,MAAAA,CAAO8+C,SAAS,CAAC5xR,OAAO,CAAC,IAAI,CACzC,CAAA,GAAIqB,IAAM,CAAG,CAAA,CACXyxO,MAAO++C,CAAAA,OAAO,CAAC3vR,IAAMstR,CAAAA,iBAAAA,CAAmBc,mBAAsBd,CAAAA,iBAAAA,CAAAA,CAC9D18C,MAAO8+C,CAAAA,SAAS,CAAC/5R,IAAI,CAAC,IAAI,EAC5B,CACAqK,IAAAA,CAAK4vR,oBAAoB,CAACjD,oBAAAA,CAAAA,CAC1B,IAAI,CAAC6C,eAAe,GACtB,CACAhkM,OAAU,EAAA,CACR,MAAMxrF,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,GAAI,CAACA,IAAAA,CAAM,OACX,MAAM4wO,MAAAA,CAAS,IAAI,CAAC/L,GAAG,CAACgR,OAAO,CAACqF,SAAS,CACzC,MAAM/7O,GAAMyxO,CAAAA,MAAAA,CAAO8+C,SAAS,CAAC5xR,OAAO,CAAC,IAAI,EACzC,GAAIqB,GAAAA,CAAM,CAAC,CAAA,CAAG,CACZyxO,MAAOi/C,CAAAA,UAAU,CAAC7vR,IAAAA,CAAAA,CAClB4wO,MAAO8+C,CAAAA,SAAS,CAAC/xR,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC/B,CACAa,IAAAA,CAAK4vR,oBAAoB,CAAC7C,4BAAAA,EAC5B,CAlGAnwR,WAAAA,CAAYioO,GAAG,CAAEoR,SAAS,CAAEpnO,IAAI,CAAC,CAC/B,IAAI,CAAC4sH,MAAM,CAAGw6G,SAAAA,CAAUx6G,MACxB,CAAA,IAAI,CAACw6G,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACpR,GAAG,CAAGA,GACX,CAAA,GAAI,OAAOsW,IAAS,GAAA,WAAA,EAAe,CAACmzC,WAAAA,CAAa,CAC/CA,WAAc,CAAA,IAAInzC,IAAK20C,CAAAA,SAAS,CAChCvB,WAAc,CAAA,IAAIpzC,IAAK40C,CAAAA,YAAY,CACnCvB,gBAAAA,CAAmB,IAAIrzC,IAAAA,CAAK60C,YAAW,CAEzC,IAAI,CAAC5uR,UAAU,CAACyN,IAAAA,EAClB,CAyFF,CAEA,MAAMohR,IAAO,CAAA,IAAI74Q,IACjB,CAAA,MAAMxJ,EAAK,CAAA,IAAIkD,IACf,CAAA,MAAMk8K,GAAK,IAAIl8K,IAAAA,CACf,MAAMo/Q,MAAAA,CAAS,IAAIxzQ,IACnB,CAAA,MAAMyzQ,aAAgB,CAAA,IAAI/1I,UAC1B,MAAMg2I,SAAAA,CAAY,CAChB,SAAA,CACA,MACA,CAAA,aAAA,CACA,cACA,CAAA,eAAA,CACA,SACA,MACA,CAAA,QAAA,CACA,YACA,CAAA,OAAA,CACA,cACA,OACA,CAAA,OAAA,CACA,QACA,CAAA,uBAAA,CACD,CACKC,MAAAA,mBAAAA,CAIJC,gBAAiBr6C,CAAAA,SAAS,CAAEpnO,IAAI,CAAE,CAChCA,KAAKk0I,KAAK,CAAG,IACbl0I,CAAAA,KAAKsrH,KAAK,CAAG,IAAI8nD,KACjBpzK,CAAAA,IAAKsrH,CAAAA,KAAK,CAACgoD,KAAK,CAAG,IAAI/nC,UACzB,CACAm2I,gBAAgBt6C,SAAS,CAAEpnO,IAAI,CAAE,CAC/B,IAAI,CAAC+6Q,sBAAsB,CAAC3zC,UAC5BA,CAAAA,SAAAA,CAAUpnO,IAAI,CAACq+B,WAAW,CAAG,KAC/B,CACA1qC,MAAMyzO,SAAS,CAAEpnO,IAAI,CAAE,CACrB,IAAI,CAACyhR,gBAAgB,CAACr6C,UAAWpnO,IACjC,CAAA,CAAA,IAAI,CAAC0hR,eAAe,CAACt6C,SAAAA,CAAWpnO,IAClC,EAAA,CACA+6Q,uBAAuB3zC,SAAS,CAAE,CAChC,MAAMx6G,MAASw6G,CAAAA,SAAAA,CAAUx6G,MAAM,CAC/B,MAAM5sH,IAAOonO,CAAAA,SAAAA,CAAUpnO,IAAI,CAC3B,GAAI,OAAOssO,IAAS,GAAA,WAAA,CAAa,CAC/B,GAAI1/G,MAAAA,CAAOokJ,OAAO,CAAE,CAClBpkJ,MAAOokJ,CAAAA,OAAO,CAAC7hP,OAAO,EACtB,CAAOy9F,OAAAA,MAAAA,CAAOokJ,QAChB,CACA,GAAIhxQ,IAAKk0I,CAAAA,KAAK,CAAE,CACd,GAAIkzF,SAAUg1C,CAAAA,eAAe,CAAE,CAC7B,GAAIh1C,SAAcA,GAAAA,SAAAA,CAAUg1C,eAAe,CAAE,CAC3C,IAAI,CAACr6C,MAAM,CAACk7C,oBAAoB,CAAC71C,UAAUg1C,eAAe,CAAEp8Q,IAAKk0I,CAAAA,KAAK,EACxE,CACA,GAAIkzF,SAAUg1C,CAAAA,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAAE,CAC9CjF,SAAAA,CAAUg1C,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAACzyF,QAAQ,GACrD,CACF,CACA,IAAI,CAAC+nI,YAAY,CAAC3hR,IAAAA,EACpB,CACAA,IAAAA,CAAKk0I,KAAK,CAAG,IAAI,CAAC0tI,mBAAmB,CAACx6C,SAAAA,CAAUx6G,MAAM,CAAE5sH,MACxD,MAAM6hR,kBAAAA,CAAqB,CAACz6C,SAAAA,CAAUg1C,eAAe,CACrD,GAAIp8Q,IAAKvC,CAAAA,IAAI,GAAK,UAAA,GAAe,CAAC2pO,UAAUg1C,eAAe,EAAIh1C,SAAcA,GAAAA,SAAAA,CAAUg1C,eAAe,CAAD,CAAI,CACvGh1C,SAAAA,CAAUg1C,eAAe,CAAGh1C,SAAAA,CAC5Bx6G,MAAOj6H,CAAAA,OAAO,CAAC,IAAI,CAACmvR,kBAAkB,CAAE16C,SAC1C,EAAA,CAAA,KAAO,GAAIpnO,IAAAA,CAAKvC,IAAI,GAAK,UAAA,CAAY,CACnC,GAAI,CAAC2pO,SAAUiF,CAAAA,SAAS,CAAE,CACxBjF,SAAUg1C,CAAAA,eAAe,CAAG,IAAA,CAC5B,IAAInlR,MAAS21H,CAAAA,MAAAA,CAAO31H,MAAM,CAC1B,MAAMA,MAAAA,CAAO,CACX,GAAIA,OAAOqlR,SAAS,EAAIrlR,MAAOqlR,CAAAA,SAAS,CAAC7+Q,IAAI,GAAK,UAAA,CAAY,CAC5D2pO,SAAUg1C,CAAAA,eAAe,CAAGnlR,MAAAA,CAAOqlR,SAAS,CAC5C,KACF,CACArlR,MAAAA,CAASA,OAAOA,OAClB,CACF,CACF,CACA,GAAImwO,SAAUg1C,CAAAA,eAAe,CAAE,CAC7B,GAAIh1C,SAAcA,GAAAA,SAAAA,CAAUg1C,eAAe,CAAE,CAC3C,GAAIyF,kBAAAA,EAAsBz6C,UAAUg1C,eAAe,CAACloI,KAAK,CAAC6nI,iBAAiB,EAAA,GAAO,CAAG,CAAA,CACnF,IAAI,CAACh6C,MAAM,CAACg5C,sBAAsB,CAAC3zC,SAAUg1C,CAAAA,eAAe,EAC9D,CAAA,KAAO,CACL,IAAI,CAACr6C,MAAM,CAACggD,4BAA4B,CAACn1J,MAAQ,CAAA,IAAA,CAAA,CACjD,GAAIw6G,SAAUg1C,CAAAA,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAAE,CAC9CjF,UAAUg1C,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAACzyF,QAAQ,GACrD,CACF,CACF,CACF,CACA,GAAIhtB,OAAOy/G,SAAS,CAAE,CACpBz/G,MAAAA,CAAOy/G,SAAS,CAAC2wC,iBAAiB,EAClCpwJ,CAAAA,MAAAA,CAAOy/G,SAAS,CAAC4zC,UAAU,EAAA,CAC3B,GAAIrzJ,MAAO/zH,CAAAA,OAAO,EAAI+zH,MAAAA,CAAOy/G,SAAS,CAACxzO,OAAO,CAAE,CAC9C+zH,OAAOy/G,SAAS,CAACwwC,gBAAgB,GACnC,CACF,CAAA,KAAO,GAAI,CAACz1C,UAAUg1C,eAAe,CAAE,CACrC,GAAI,CAACxvJ,MAAOokJ,CAAAA,OAAO,CAAE,CACnBpkJ,OAAOokJ,OAAO,CAAG,IAAI4O,OAAAA,CAAQ,IAAI,CAAC79C,MAAM,CAAC/L,GAAG,CAAEoR,SAAAA,CAAWpnO,IAC3D,EAAA,CAAA,KAAO,CACL4sH,MAAAA,CAAOokJ,OAAO,CAACz+Q,UAAU,CAACyN,IAAAA,EAC5B,CACF,CACF,CACF,CACA4hR,mBAAoBh1J,CAAAA,MAAM,CAAE5sH,IAAI,CAAE,CAChC,OAAOlS,SACT,CACA6yR,eAAAA,CAAgBv5C,SAAS,CAAE98N,QAAQ,CAAEqiI,QAAQ,CAAErkI,KAAK,CAAE,CACpD,GAAI8+N,SAAAA,CAAUx6G,MAAM,CAACokJ,OAAO,CAAE,CAC5B5pC,UAAUx6G,MAAM,CAACokJ,OAAO,CAAC2P,eAAe,GAC1C,CACF,CACAgB,YAAAA,CAAa3hR,IAAI,CAAE,CACjB,GAAIA,KAAKk0I,KAAK,CAAE,CACdo4F,IAAAA,CAAKn9M,OAAO,CAACnvB,IAAAA,CAAKk0I,KAAK,CACvBl0I,CAAAA,IAAKk0I,CAAAA,KAAK,CAAG,KACf,CACF,CACA8tI,YAAap1J,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAC9B,GAAIA,UAAUpnO,IAAI,CAACk0I,KAAK,CAAE,CACxB,GAAIkzF,SAAAA,CAAUg1C,eAAe,EAAI,CAACh1C,SAAAA,CAAUg1C,eAAe,CAACxvJ,MAAM,CAAC68G,WAAW,CAAE,CAC9E,IAAI,CAAC1H,MAAM,CAACk7C,oBAAoB,CAAC71C,SAAUg1C,CAAAA,eAAe,CAAEh1C,SAAAA,CAAUpnO,IAAI,CAACk0I,KAAK,CAAA,CAChF,GAAIkzF,SAAUg1C,CAAAA,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAAE,CAC9CjF,SAAAA,CAAUg1C,eAAe,CAACxvJ,MAAM,CAACy/G,SAAS,CAACzyF,QAAQ,GACrD,CACF,CACAwtF,SAAUg1C,CAAAA,eAAe,CAAG,IAAA,CAC5B,IAAI,CAACuF,YAAY,CAACv6C,SAAAA,CAAUpnO,IAAI,EAClC,CACF,CACA3P,MAAAA,CAAOu8H,MAAM,CAAE5sH,IAAI,CAAE,CACnB,GAAI4sH,MAAAA,CAAOy/G,SAAS,EAAIz/G,MAAOy/G,CAAAA,SAAS,CAACl7O,IAAI,CAAE,CAC7Cy7H,MAAAA,CAAOy/G,SAAS,CAAC2wC,iBAAiB,GACpC,CACA,GAAIpwJ,OAAOokJ,OAAO,CAAE,CAClBpkJ,MAAAA,CAAOokJ,OAAO,CAAC7hP,OAAO,EACtB,CAAA,OAAOy9F,OAAOokJ,QAChB,CACF,CACA11Q,KAAMsxH,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CACnB,MAAMM,GAAM,CAAA,IAAI,CAACmmO,MAAM,CAACvoL,KAAK,CAACozE,OAAOm8G,OAAO,EAAA,CAAG,CAC/C,MAAM/oO,IAAO,CAAA,CACXnH,OAAS+C,CAAAA,GAAAA,CAAIoE,IAAI,CAACnH,OAAO,CACzB4E,IAAAA,CAAM7B,IAAIoE,IAAI,CAACvC,IAAI,CACnB+T,YAAa,CACX5V,GAAAA,CAAIoE,IAAI,CAACwR,WAAW,CAACnX,CAAC,CACtBuB,IAAIoE,IAAI,CAACwR,WAAW,CAACzP,CAAC,CACtBnG,GAAAA,CAAIoE,IAAI,CAACwR,WAAW,CAACtP,CAAC,CACvB,CACDq4Q,YAAc,CAAA,CACZ3+Q,GAAIoE,CAAAA,IAAI,CAACu6Q,YAAY,CAAClgR,CAAC,CACvBuB,IAAIoE,IAAI,CAACu6Q,YAAY,CAACx4Q,CAAC,CACvBnG,GAAAA,CAAIoE,IAAI,CAACu6Q,YAAY,CAACr4Q,CAAC,CACxB,CACDs4Q,aAAe,CAAA,CACb5+Q,GAAIoE,CAAAA,IAAI,CAACw6Q,aAAa,CAACngR,CAAC,CACxBuB,IAAIoE,IAAI,CAACw6Q,aAAa,CAACz4Q,CAAC,CACxBnG,GAAIoE,CAAAA,IAAI,CAACw6Q,aAAa,CAACt4Q,CAAC,CACxBtG,IAAIoE,IAAI,CAACw6Q,aAAa,CAACj1Q,CAAC,CACzB,CACD/D,MAAQ5F,CAAAA,GAAAA,CAAIoE,IAAI,CAACwB,MAAM,CACvB6J,KAAMzP,GAAIoE,CAAAA,IAAI,CAACqL,IAAI,CACnBO,MAAAA,CAAQhQ,GAAIoE,CAAAA,IAAI,CAAC4L,MAAM,CACvB8uQ,UAAY9+Q,CAAAA,GAAAA,CAAIoE,IAAI,CAAC06Q,UAAU,CAC/B/6D,MAAO/jN,GAAIoE,CAAAA,IAAI,CAAC2/M,KAAK,CACrB86D,WAAa7+Q,CAAAA,GAAAA,CAAIoE,IAAI,CAACy6Q,WAAW,CACjCnvJ,KAAAA,CAAO1vH,GAAIoE,CAAAA,IAAI,CAACsrH,KAAK,CACrBt5B,MAAAA,CAAQp2F,IAAIoE,IAAI,CAACgyF,MAAM,CACvB2oL,sBAAuB/+Q,GAAIoE,CAAAA,IAAI,CAAC26Q,qBAAqB,CAEvD,CAAA,OAAO,IAAI,CAAC54C,MAAM,CAACyG,YAAY,CAACltO,MAAO0E,IACzC,CAAA,CAnJAjS,WAAYg0O,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,OAChB,CAkJF,CACA,MAAMkgD,sBAA+BT,SAAAA,mBAAAA,CACnCI,mBAAoBh1J,CAAAA,MAAM,CAAE5sH,IAAI,CAAE,CAChC,GAAI,OAAOssO,IAAS,GAAA,WAAA,CAAa,CAC/B,MAAMn4C,GAAKn0L,IAAKwR,CAAAA,WAAW,CAC3B,MAAM0wQ,MAAS,CAAA,IAAI51C,IAAK20C,CAAAA,SAAS,CAAC9sF,EAAKA,CAAAA,EAAAA,CAAG95L,CAAC,CAAG,GAAK85L,EAAKA,CAAAA,EAAAA,CAAGpyL,CAAC,CAAG,GAAKoyL,EAAKA,CAAAA,EAAAA,CAAGjyL,CAAC,CAAG,EAChF,CAAA,CAAA,MAAMgyI,KAAQ,CAAA,IAAIo4F,KAAK61C,UAAU,CAACD,MAClC51C,CAAAA,CAAAA,IAAAA,CAAKn9M,OAAO,CAAC+yP,MAAAA,CAAAA,CACb,OAAOhuI,KACT,CACA,OAAOpmJ,SACT,CACF,CACA,MAAMs0R,yBAAAA,SAAkCZ,mBACtCI,CAAAA,mBAAAA,CAAoBh1J,MAAM,CAAE5sH,IAAI,CAAE,CAChC,GAAI,OAAOssO,IAAAA,GAAS,WAAa,CAAA,CAC/B,OAAO,IAAIA,IAAAA,CAAK+1C,aAAa,CAACriR,IAAKwB,CAAAA,MAAM,CAC3C,CACA,OAAO1T,SACT,CACF,CACA,MAAMw0R,0BAAmCd,SAAAA,mBAAAA,CACvCI,mBAAoBh1J,CAAAA,MAAM,CAAE5sH,IAAI,CAAE,CAChC,MAAMqL,IAAOrL,CAAAA,IAAAA,CAAKqL,IAAI,EAAI,EAC1B,MAAM7J,MAAAA,CAASxB,IAAKwB,CAAAA,MAAM,EAAI,EAC9B,CAAA,MAAMoK,MAASrmB,CAAAA,IAAAA,CAAKoU,GAAG,CAAEqG,CAAAA,IAAAA,CAAK4L,MAAM,EAAI,CAAA,EAAK,EAAIpK,MAAQ,CAAA,CAAA,CAAA,CACzD,IAAI0yI,KAAAA,CAAQ,KACZ,GAAI,OAAOo4F,IAAS,GAAA,WAAA,CAAa,CAC/B,OAAOjhO,IAAAA,EACL,KAAK,CAAA,CACH6oI,KAAQ,CAAA,IAAIo4F,IAAKi2C,CAAAA,eAAe,CAAC/gR,MAAQoK,CAAAA,MAAAA,CAAAA,CACzC,MACF,KAAK,EACHsoI,KAAQ,CAAA,IAAIo4F,IAAKk2C,CAAAA,cAAc,CAAChhR,MAAQoK,CAAAA,MAAAA,CAAAA,CACxC,MACF,KAAK,CACHsoI,CAAAA,KAAAA,CAAQ,IAAIo4F,IAAAA,CAAKm2C,eAAe,CAACjhR,MAAAA,CAAQoK,MACzC,CAAA,CAAA,KACJ,CACF,CACA,OAAOsoI,KACT,CACF,CACA,MAAMwuI,2BAAoClB,SAAAA,mBAAAA,CACxCI,mBAAoBh1J,CAAAA,MAAM,CAAE5sH,IAAI,CAAE,CAChC,MAAMqL,IAAOrL,CAAAA,IAAAA,CAAKqL,IAAI,EAAI,CAAA,CAC1B,MAAM7J,MAAAA,CAASxB,KAAKwB,MAAM,EAAI,EAC9B,CAAA,MAAMoK,MAAS5L,CAAAA,IAAAA,CAAK4L,MAAM,EAAI,EAC9B,IAAI4F,WAAAA,CAAc,IAClB,CAAA,IAAI0iI,MAAQ,IACZ,CAAA,GAAI,OAAOo4F,IAAAA,GAAS,YAAa,CAC/B,OAAOjhO,IACL,EAAA,KAAK,CACHmG,CAAAA,WAAAA,CAAc,IAAI86N,IAAAA,CAAK20C,SAAS,CAACr1Q,MAAAA,CAAS,EAAKpK,CAAAA,MAAAA,CAAQA,QACvD0yI,KAAQ,CAAA,IAAIo4F,IAAKq2C,CAAAA,gBAAgB,CAACnxQ,WAClC,CAAA,CAAA,MACG,KAAA,CAAA,CACHA,WAAc,CAAA,IAAI86N,IAAK20C,CAAAA,SAAS,CAACz/Q,MAAQoK,CAAAA,MAAAA,CAAS,EAAKpK,CAAAA,MAAAA,CAAAA,CACvD0yI,KAAQ,CAAA,IAAIo4F,IAAKs2C,CAAAA,eAAe,CAACpxQ,WACjC,CAAA,CAAA,MACG,KAAA,CAAA,CACHA,WAAc,CAAA,IAAI86N,IAAK20C,CAAAA,SAAS,CAACz/Q,MAAQA,CAAAA,MAAAA,CAAQoK,MAAS,CAAA,EAAA,CAAA,CAC1DsoI,MAAQ,IAAIo4F,IAAAA,CAAKu2C,gBAAgB,CAACrxQ,aAClC,KACJ,CACF,CACA,GAAIA,WAAa,CAAA,CACf86N,IAAKn9M,CAAAA,OAAO,CAAC3d,WACf,EAAA,CACA,OAAO0iI,KACT,CACF,CACA,MAAM4uI,uBAAgCtB,SAAAA,mBAAAA,CACpCI,oBAAoBh1J,MAAM,CAAE5sH,IAAI,CAAE,CAChC,MAAMqL,IAAOrL,CAAAA,IAAAA,CAAKqL,IAAI,EAAI,CAAA,CAC1B,MAAM7J,MAAAA,CAASxB,KAAKwB,MAAM,EAAI,EAC9B,CAAA,MAAMoK,OAAS5L,IAAK4L,CAAAA,MAAM,EAAI,CAAA,CAC9B,IAAIsoI,KAAAA,CAAQ,IACZ,CAAA,GAAI,OAAOo4F,IAAS,GAAA,WAAA,CAAa,CAC/B,OAAOjhO,MACL,KAAK,CAAA,CACH6oI,KAAQ,CAAA,IAAIo4F,KAAKy2C,YAAY,CAACvhR,MAAQoK,CAAAA,MAAAA,CAAAA,CACtC,MACF,KAAK,CACHsoI,CAAAA,KAAAA,CAAQ,IAAIo4F,IAAK02C,CAAAA,WAAW,CAACxhR,MAAAA,CAAQoK,QACrC,MACF,KAAK,CACHsoI,CAAAA,KAAAA,CAAQ,IAAIo4F,IAAK22C,CAAAA,YAAY,CAACzhR,MAAAA,CAAQoK,MACtC,CAAA,CAAA,KACJ,CACF,CACA,OAAOsoI,KACT,CACF,CACA,MAAMgvI,gCAAgC1B,mBACpCC,CAAAA,gBAAAA,CAAiBr6C,SAAS,CAAEpnO,IAAI,CAAE,EAClCmjR,cAAAA,CAAezzJ,IAAI,CAAE0G,IAAI,CAAE8d,KAAK,CAAE5rI,KAAK,CAAE,CACvC,MAAM86Q,IAAO,CAAA,IAAI92C,IAAK+2C,CAAAA,iBAAiB,CACvC,MAAMzhR,KAAAA,CAAQ,IAAI0qO,IAAAA,CAAK20C,SAAS,CAChC,MAAMh+O,SAAAA,CAAY,EAAE,CACpBysF,IAAAA,CAAK8C,YAAY,CAACvvF,SAClB,CAAA,CAAA,IAAI,IAAIj9C,CAAAA,CAAI,EAAGA,CAAIi9C,CAAAA,SAAAA,CAAUh9C,MAAM,CAAED,CAAK,EAAA,CAAA,CAAE,CAC1C4b,KAAAA,CAAM+7B,QAAQ,CAACsF,SAAS,CAACj9C,CAAAA,CAAE,CAAGsiB,KAAMjO,CAAAA,CAAC,CAAE4oC,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAE,CAAGsiB,KAAAA,CAAMvG,CAAC,CAAEkhC,SAAS,CAACj9C,EAAI,CAAE,CAAA,CAAGsiB,KAAMpG,CAAAA,CAAC,EAC7FkhR,IAAKE,CAAAA,QAAQ,CAAC1hR,KAAAA,CAAO,OACvB,CACA0qO,IAAAA,CAAKn9M,OAAO,CAACvtB,KACbwhR,CAAAA,CAAAA,IAAAA,CAAKG,eAAe,EAAA,CACpBH,KAAKI,SAAS,CAAC,GACf,CAAA,CAAA,MAAMrjJ,UAAY,IAAI,CAAC4hG,MAAM,CAAC+6C,iBAAiB,CAAC1mJ,IAAAA,CAAAA,CAChD8d,KAAM6oI,CAAAA,aAAa,CAAC58I,SAAAA,CAAWijJ,IAC/B92C,CAAAA,CAAAA,IAAAA,CAAKn9M,OAAO,CAACgxG,SAAAA,EACf,CACAsjJ,cAAAA,CAAe/zJ,IAAI,CAAE0G,IAAI,CAAE8d,KAAK,CAAE5rI,KAAK,CAAEo7Q,UAAa,CAAA,IAAI,CAAE,CAC1D,MAAM3hD,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,IAAI4hD,QACJ,GAAI5hD,MAAAA,CAAO6hD,aAAa,CAACl0J,KAAK1/F,EAAE,CAAC,CAAE,CACjC2zP,OAAU5hD,CAAAA,MAAAA,CAAO6hD,aAAa,CAACl0J,KAAK1/F,EAAE,EAAC,CACzC,KAAO,CACL,MAAMsO,EAAAA,CAAKoxF,IAAK7pF,CAAAA,YAAY,CAC5B,MAAM/5C,MAAAA,CAASwyC,EAAGC,CAAAA,SAAS,EAC3B,CAAA,IAAIgC,MAAQ0C,CAAAA,SAAAA,CACZ,IAAI,IAAIj9C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI8F,OAAO4zC,QAAQ,CAACz5C,MAAM,CAAED,IAAI,CAC7C,MAAM27C,OAAU71C,CAAAA,MAAAA,CAAO4zC,QAAQ,CAAC15C,CAAE,CAAA,CAClC,GAAI27C,OAAQr4C,CAAAA,IAAI,GAAKw6B,iBAAAA,CAAmB,CACtCmf,SAAAA,CAAY,IAAIpjC,YAAAA,CAAay+B,GAAGlI,IAAI,EAAA,CAAIuL,OAAQjuC,CAAAA,MAAM,CACtD6sC,CAAAA,MAAAA,CAASoB,OAAQpB,CAAAA,MAAM,CAAG,CAC1B,CAAA,KACF,CACF,CACA,MAAMgwD,OAAU,CAAA,EAAE,CAClBm/B,IAAAA,CAAKkD,UAAU,CAACriC,OAAAA,CAAAA,CAChB,MAAMszL,YAAAA,CAAen0J,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAG,CAC/C,CAAA,MAAMlsB,GAAK,IAAIwyN,IAAAA,CAAK20C,SAAS,CAC7B,IAAIltJ,EAAIC,CAAAA,EAAAA,CAAI8+D,EACZ,CAAA,MAAMh8H,IAAO44D,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,EAAE,CAACwwB,IAAI,CACnC6sN,OAAAA,CAAU,IAAIr3C,IAAKw3C,CAAAA,cAAc,CACjC/hD,OAAO6hD,aAAa,CAACl0J,IAAK1/F,CAAAA,EAAE,CAAC,CAAG2zP,OAChC,CAAA,MAAMI,YAAc,IAAI31R,GAAAA,CACxB,MAAM41R,YAAAA,CAAeL,QAAQM,mBAAmB,EAChDD,CAAAA,YAAAA,CAAaE,EAAE,CAAC,CAAA,CAAA,CAAGC,cAAc,CAAGN,YACpC,CAAA,MAAMj3Q,EAAKtE,CAAAA,KAAAA,CAAQA,MAAMjO,CAAC,CAAG,CAC7B,CAAA,MAAMwS,GAAKvE,KAAQA,CAAAA,KAAAA,CAAMvG,CAAC,CAAG,EAC7B,MAAM+K,EAAAA,CAAKxE,KAAQA,CAAAA,KAAAA,CAAMpG,CAAC,CAAG,CAC7B,CAAA,MAAMkiR,UAAY,KAACv4R,EAAAA,CACjB,MAAMwO,CAAAA,CAAI4oC,SAAS,CAACp3C,KAAAA,CAAQ00C,MAAO,CAAA,CAAG3zB,GACtC,MAAM7K,CAAAA,CAAIkhC,SAAS,CAACp3C,KAAQ00C,CAAAA,MAAAA,CAAS,CAAE,CAAA,CAAG1zB,GAC1C,MAAM3K,CAAAA,CAAI+gC,SAAS,CAACp3C,MAAQ00C,MAAS,CAAA,CAAA,CAAE,CAAGzzB,EAAAA,CAC1C,IAAIxc,GACJ,CAAA,GAAIozR,UAAY,CAAA,CACd,MAAMxkP,GAAAA,CAAM,CAAC,EAAE7kC,EAAE,CAAC,EAAE0H,CAAE,CAAA,CAAC,EAAEG,CAAAA,CAAE,CAAC,CAC5B5R,IAAMyzR,WAAYh8R,CAAAA,GAAG,CAACm3C,GAAAA,CAAAA,CACtB,GAAI5uC,GAAAA,GAAQxC,SAAW,CAAA,CACrB,OAAOwC,GACT,CACAwpB,EAAG6jB,CAAAA,QAAQ,CAACtjC,CAAG0H,CAAAA,CAAAA,CAAGG,CAClB5R,CAAAA,CAAAA,GAAAA,CAAMqzR,QAAQU,eAAe,CAACvqQ,EAAI,CAAA,KAAA,CAAA,CAClCiqQ,WAAYx1R,CAAAA,GAAG,CAAC2wC,GAAAA,CAAK5uC,KACvB,CAAO,KAAA,CACLwpB,EAAG6jB,CAAAA,QAAQ,CAACtjC,CAAG0H,CAAAA,CAAAA,CAAGG,CAClB5R,CAAAA,CAAAA,GAAAA,CAAMqzR,QAAQU,eAAe,CAACvqQ,EAAI,CAAA,KAAA,EACpC,CACA,OAAOxpB,GACT,CAAA,CACA,IAAI,IAAItK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI69R,aAAc79R,CAAI,EAAA,CAAA,CACnC+tI,EAAKqwJ,CAAAA,SAAAA,CAAU7zL,OAAO,CAACz5B,IAAAA,CAAO9wE,CAAI,CAAA,CAAA,CAAE,CACpCguI,CAAAA,EAAAA,CAAKowJ,SAAU7zL,CAAAA,OAAO,CAACz5B,IAAO9wE,CAAAA,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EACxC8sM,EAAKsxF,CAAAA,SAAAA,CAAU7zL,OAAO,CAACz5B,KAAO9wE,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CACxC29R,OAAQW,CAAAA,QAAQ,CAACvwJ,EAAAA,CAAAA,CACjB4vJ,QAAQW,QAAQ,CAACtwJ,EACjB2vJ,CAAAA,CAAAA,OAAAA,CAAQW,QAAQ,CAACxxF,EAAAA,EACnB,CACAw5C,IAAAA,CAAKn9M,OAAO,CAACrV,EAAAA,EACf,CACA,MAAMyqQ,YAAe,CAAA,IAAIj4C,IAAKk4C,CAAAA,sBAAsB,CAACb,OAAS,CAAA,IAAA,CAAA,CAC9D,GAAI,CAACr7Q,MAAO,CACV,MAAMm8Q,OAAU1iD,CAAAA,MAAAA,CAAO2iD,eAAe,CAACtuJ,IAAAA,CAAAA,CACvCmuJ,YAAaI,CAAAA,eAAe,CAACF,OAAAA,CAAAA,CAC7Bn4C,IAAKn9M,CAAAA,OAAO,CAACs1P,OACf,EAAA,CACA,MAAMtkJ,SAAAA,CAAY4hG,OAAO+6C,iBAAiB,CAAC1mJ,IAC3C8d,CAAAA,CAAAA,KAAAA,CAAM6oI,aAAa,CAAC58I,SAAAA,CAAWokJ,YAC/Bj4C,CAAAA,CAAAA,IAAAA,CAAKn9M,OAAO,CAACgxG,SACf,EAAA,CACAyhJ,oBAAoBh1J,MAAM,CAAE5sH,IAAI,CAAE,CAChC,GAAI,OAAOssO,IAAAA,GAAS,YAAa,OAAOx+O,SAAAA,CACxC,GAAIkS,IAAAA,CAAKsrH,KAAK,EAAItrH,IAAKgyF,CAAAA,MAAM,CAAE,CAC7B,MAAMkiD,KAAQ,CAAA,IAAIo4F,KAAKs4C,eAAe,CACtC,MAAMC,eAAAA,CAAkBj4J,OAAOe,iBAAiB,EAAA,CAChD,MAAMrlH,KAAAA,CAAQu8Q,eAAgB73Q,CAAAA,QAAQ,EACtC,CAAA,GAAIhN,KAAKgyF,MAAM,CAAE,CACf,MAAMyyG,OAASzkM,IAAKgyF,CAAAA,MAAM,CAACyyG,MAAM,CACjC,IAAI,IAAIz+M,CAAI,CAAA,CAAA,CAAGA,CAAIy+M,CAAAA,MAAAA,CAAOx+M,MAAM,CAAED,IAAI,CACpC,GAAIga,IAAK06Q,CAAAA,UAAU,CAAE,CACnB,IAAI,CAACyI,cAAc,CAAC1+E,MAAM,CAACz+M,CAAE,CAAA,CAAEs7R,aAAeptI,CAAAA,KAAAA,CAAO5rI,KACvD,EAAA,CAAA,KAAO,CACL,IAAI,CAACm7Q,cAAc,CAACh/E,MAAM,CAACz+M,CAAAA,CAAE,CAAEs7R,aAAAA,CAAeptI,MAAO5rI,KAAOtI,CAAAA,IAAAA,CAAK26Q,qBAAqB,EACxF,CACF,CACF,CAAO,KAAA,GAAI36Q,KAAKsrH,KAAK,CAAE,CACrB,MAAMC,cAAgBvrH,IAAKsrH,CAAAA,KAAK,CAACC,aAAa,CAC9C,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,IAAI,CAC3C,IAAI,CAACy9R,cAAc,CAACl4J,aAAa,CAACvlI,CAAE,CAAA,CAAC0pI,IAAI,CAAEnE,aAAa,CAACvlI,CAAAA,CAAE,CAACowI,IAAI,CAAE8d,KAAAA,CAAO,KAAMl0I,IAAK26Q,CAAAA,qBAAqB,EAC3G,CACA,MAAMjzQ,GAAM,CAAA,IAAI4kO,IAAK20C,CAAAA,SAAS,CAAC34Q,KAAMjO,CAAAA,CAAC,CAAEiO,KAAAA,CAAMvG,CAAC,CAAEuG,KAAMpG,CAAAA,CAAC,EACxDgyI,KAAMywI,CAAAA,eAAe,CAACj9Q,GAAAA,CAAAA,CACtB4kO,IAAKn9M,CAAAA,OAAO,CAACznB,GAAAA,EACf,CACA,OAAOwsI,KACT,CACA,OAAOpmJ,SACT,CACAitR,sBAAuB3zC,CAAAA,SAAS,CAAE,CAChC,MAAMpnO,IAAOonO,CAAAA,SAAAA,CAAUpnO,IAAI,CAC3B,GAAIA,IAAKy6Q,CAAAA,WAAW,EAAIz6Q,IAAK2/M,CAAAA,KAAK,CAAE,CAClC,GAAIynB,SAAAA,CAAUvuO,OAAO,EAAIuuO,UAAUx6G,MAAM,CAAC/zH,OAAO,CAAE,CACjD,IAAI,CAACisR,SAAS,CAAC19C,UAAWpnO,IAAKy6Q,CAAAA,WAAW,EAAIz6Q,IAAAA,CAAK2/M,KAAK,CAAE3/M,IAAKy6Q,CAAAA,WAAW,CAAG,QAAW,CAAA,OAAA,CAAA,CACxF,MACF,CACF,CACA,IAAI,CAACiB,uBAAuB,CAACt0C,WAC/B,CACA09C,SAAAA,CAAU19C,SAAS,CAAEp3M,EAAE,CAAEi5L,QAAQ,CAAE,CACjC,MAAMjpN,IAAAA,CAAOonO,SAAUpnO,CAAAA,IAAI,CAC3B,MAAM+9N,MAAAA,CAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,MAAMgnD,qBAAwB/kR,CAAAA,IAAI,CAACipN,QAAS,CAAA,CAC5C,MAAM+7D,iBAAAA,CAAoB,KACxB,EAAA,CAAA,GAAIhlR,IAAI,CAACipN,SAAS,GAAK87D,qBAAAA,CAAuB,CAC5C,MACF,CACA/kR,IAAI,CAACipN,QAAAA,CAAS,CAAGtJ,KAAMpyK,CAAAA,QAAQ,CAC/B,IAAI,CAACmuO,uBAAuB,CAACt0C,SAC/B,EAAA,CAAA,CACA,MAAM69C,kBAAqB,CAACtlE,KAC1BA,EAAAA,CAAAA,KAAAA,CAAM34J,KAAK,CAAC,KAAC24J,EAAAA,CACX,GAAIA,KAAM3/M,CAAAA,IAAI,CAACklR,cAAc,CAAE,CAC7B,MAAMA,cAAiBnnD,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC43N,KAAAA,CAAM3/M,IAAI,CAACklR,cAAc,CAAA,CAC3D,GAAIA,cAAAA,CAAex5K,MAAM,CAAE,CACzBs5K,iBAAkBrlE,CAAAA,KAAAA,EACpB,CAAO,KAAA,CACLulE,cAAel+N,CAAAA,KAAK,CAAC,IACnBg+N,CAAAA,iBAAAA,CAAkBrlE,KACpB,EAAA,CAAA,CAAA,CACAoe,MAAO7B,CAAAA,IAAI,CAACgpD,cAAAA,EACd,CACF,CAAO,KAAA,CACLF,iBAAkBrlE,CAAAA,KAAAA,EACpB,CACF,CACAoe,CAAAA,CAAAA,MAAAA,CAAO7B,IAAI,CAACvc,OACd,CACA,CAAA,MAAMA,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAACioC,EACzB,CAAA,CAAA,GAAI2vL,MAAO,CACTslE,kBAAAA,CAAmBtlE,KACrB,EAAA,CAAA,KAAO,CACLoe,MAAOtwO,CAAAA,IAAI,CAAC,CAAC,IAAI,EAAEuiC,EAAAA,CAAG,CAAC,CAAEi1P,kBAC3B,EAAA,CACF,CACAvJ,uBAAAA,CAAwBt0C,SAAS,CAAE,CACjC,MAAMx6G,MAAAA,CAASw6G,UAAUx6G,MAAM,CAC/B,MAAM5sH,IAAAA,CAAOonO,UAAUpnO,IAAI,CAC3B,GAAIA,IAAAA,CAAKsrH,KAAK,EAAItrH,IAAKgyF,CAAAA,MAAM,CAAE,CAC7B,IAAI,CAAC2vL,YAAY,CAAC3hR,IAClBA,CAAAA,CAAAA,IAAKk0I,CAAAA,KAAK,CAAG,IAAI,CAAC0tI,mBAAmB,CAACh1J,MAAQ5sH,CAAAA,IAAAA,CAAAA,CAC9C,GAAI4sH,MAAAA,CAAOy/G,SAAS,CAAE,CACpBz/G,MAAOy/G,CAAAA,SAAS,CAAC2wC,iBAAiB,EAAA,CAClCpwJ,MAAOy/G,CAAAA,SAAS,CAAC4zC,UAAU,EAAA,CAC3B,GAAIrzJ,MAAAA,CAAO/zH,OAAO,EAAI+zH,MAAOy/G,CAAAA,SAAS,CAACxzO,OAAO,CAAE,CAC9C+zH,MAAAA,CAAOy/G,SAAS,CAACwwC,gBAAgB,GACnC,CACF,MAAO,CACL,GAAI,CAACjwJ,MAAAA,CAAOokJ,OAAO,CAAE,CACnBpkJ,MAAAA,CAAOokJ,OAAO,CAAG,IAAI4O,OAAQ,CAAA,IAAI,CAAC79C,MAAM,CAAC/L,GAAG,CAAEoR,UAAWpnO,IAC3D,EAAA,CAAA,KAAO,CACL4sH,MAAAA,CAAOokJ,OAAO,CAACz+Q,UAAU,CAACyN,MAC5B,CACF,CACF,CAAO,KAAA,CACL,IAAI,CAACgiR,YAAY,CAACp1J,OAAQw6G,SAC1B,CAAA,CAAA,IAAI,CAAC/2O,MAAM,CAACu8H,MAAAA,CAAQ5sH,IACtB,EAAA,CACF,CACA2gR,eAAgBv5C,CAAAA,SAAS,CAAE98N,QAAQ,CAAEqiI,QAAQ,CAAErkI,KAAK,CAAE,CACpD,GAAI8+N,SAAAA,CAAUlzF,KAAK,CAAE,CACnB,MAAM2wI,eAAkBz9C,CAAAA,SAAAA,CAAUx6G,MAAM,CAACe,iBAAiB,EAC1D,CAAA,MAAMw3J,WAAaN,eAAgB73Q,CAAAA,QAAQ,EAC3C,CAAA,MAAMo4Q,cAAgBh+C,SAAUlzF,CAAAA,KAAK,CAACmxI,eAAe,EACrD,CAAA,GAAIF,UAAW9qR,CAAAA,CAAC,GAAK+qR,aAAc/qR,CAAAA,CAAC,EAAM8qR,EAAAA,UAAAA,CAAWpjR,CAAC,GAAKqjR,aAAAA,CAAcrjR,CAAC,EAAA,EAAMojR,WAAWjjR,CAAC,GAAKkjR,aAAcljR,CAAAA,CAAC,EAAI,CAAA,CAClH,IAAI,CAACw5Q,uBAAuB,CAACt0C,SAAAA,EAC/B,CACF,CACA,KAAK,CAACu5C,eAAgBv5C,CAAAA,SAAAA,CAAW98N,SAAUqiI,QAAUrkI,CAAAA,KAAAA,EACvD,CACAq5Q,YAAAA,CAAa3hR,IAAI,CAAE,CACjB,GAAI,CAACA,IAAKk0I,CAAAA,KAAK,CAAE,CACf,MACF,CACA,MAAMoxI,SAAYtlR,CAAAA,IAAAA,CAAKk0I,KAAK,CAAC6nI,iBAAiB,EAC9C,CAAA,IAAI,IAAI/1R,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIs/R,UAAWt/R,CAAI,EAAA,CAAA,CAChC,MAAMkuJ,KAAAA,CAAQl0I,KAAKk0I,KAAK,CAAC+nI,aAAa,CAACj2R,GACvCsmP,IAAKn9M,CAAAA,OAAO,CAAC+kH,KAAAA,EACf,CACAo4F,IAAAA,CAAKn9M,OAAO,CAACnvB,KAAKk0I,KAAK,CACvBl0I,CAAAA,IAAAA,CAAKk0I,KAAK,CAAG,KACf,CACF,CACA,MAAMqxI,2BAAoC/D,SAAAA,mBAAAA,CACxCI,mBAAoBh1J,CAAAA,MAAM,CAAE5sH,IAAI,CAAE,CAChC,GAAI,OAAOssO,IAAAA,GAAS,WAAa,CAAA,CAC/B,OAAO,IAAIA,IAAKs4C,CAAAA,eAAe,CAEjC,OAAO92R,SACT,CACAg0R,kBAAmBl1J,CAAAA,MAAM,CAAE,CACzB,GAAI,CAACA,MAAAA,CAAO0vJ,SAAS,EAAI1vJ,OAAOy/G,SAAS,CAAE,CACzC,MACF,CACAz/G,MAAO0vJ,CAAAA,SAAS,CAACF,eAAe,CAAG,IAAI,CACvC,GAAIxvJ,SAAW,IAAI,CAACA,MAAM,CAAE,CAC1BA,MAAO0vJ,CAAAA,SAAS,CAACv6C,MAAM,CAACg5C,sBAAsB,CAACnuJ,MAAO0vJ,CAAAA,SAAS,EACjE,CACF,CACAkJ,qBAAAA,CAAsB54J,MAAM,CAAE,CAC5B,GAAI,CAACA,OAAO0vJ,SAAS,CAAE,CACrB,MACF,CACA,GAAI1vJ,MAAAA,CAAO0vJ,SAAS,CAACF,eAAe,GAAK,IAAI,CAAE,CAC7C,MACF,CACAxvJ,MAAO0vJ,CAAAA,SAAS,CAACF,eAAe,CAAG,IACnC,CAAA,GAAIxvJ,SAAW,IAAI,CAACA,MAAM,EAAI,CAACA,MAAAA,CAAOy/G,SAAS,CAAE,CAC/Cz/G,MAAO0vJ,CAAAA,SAAS,CAACv6C,MAAM,CAACg5C,sBAAsB,CAACnuJ,MAAO0vJ,CAAAA,SAAS,EACjE,CACF,CACAE,8BAA+B5vJ,CAAAA,MAAM,CAAE,CACrC,GAAI,CAACA,OAAO0vJ,SAAS,EAAI1vJ,MAAO0vJ,CAAAA,SAAS,CAACF,eAAe,GAAK,IAAI,CAACE,SAAS,CAACF,eAAe,CAAE,CAC5F,MACF,CACA,IAAI,CAACE,SAAS,CAACv6C,MAAM,CAACggD,4BAA4B,CAACn1J,MAAQ,CAAA,KAAA,EAC7D,CACF,CACA,MAAM64J,wBAAiCtxB,SAAAA,eAAAA,CAYrCI,uBAAwBntB,CAAAA,SAAS,CAAEzL,KAAK,CAAExxF,UAAU,CAAE,CACpDA,UAAAA,CAAa,CACX,MAAA,CACA,aACA,CAAA,QAAA,CACA,MACA,CAAA,QAAA,CACA,aACA,OACA,CAAA,OAAA,CACA,OACA,CAAA,QAAA,CACA,aACA,CAAA,SAAA,CACA,cACA,CAAA,eAAA,CACA,wBACD,CACD,MAAMnqI,IAAO,CAAA,GACb,IAAI,IAAIha,CAAI,CAAA,CAAA,CAAGkY,IAAMisI,UAAWlkJ,CAAAA,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACnD,MAAMijO,SAAW9+E,UAAU,CAACnkJ,CAAE,CAC9Bga,CAAAA,IAAI,CAACipN,QAAS,CAAA,CAAG0S,KAAK,CAAC1S,QAAAA,EAAS,CAElC,IAAI34N,GAAAA,CACJ,GAAIqrO,KAAAA,CAAMtpO,cAAc,CAAC,OAAA,CAAA,CAAU,CACjC/B,GAAAA,CAAM65I,WAAWl7I,OAAO,CAAC,OACzB,CAAA,CAAA,GAAIqB,MAAQ,CAAC,CAAA,CAAG,CACd65I,UAAAA,CAAWr7I,MAAM,CAACwB,GAAK,CAAA,CAAA,EACzB,CACAA,GAAM65I,CAAAA,UAAAA,CAAWl7I,OAAO,CAAC,UACzB,GAAIqB,GAAAA,GAAQ,CAAC,CAAA,CAAG,CACd65I,UAAWr7I,CAAAA,MAAM,CAACwB,GAAAA,CAAK,CACzB,EAAA,CACF,CAAO,KAAA,GAAIqrO,MAAMtpO,cAAc,CAAC,OAAU,CAAA,CAAA,CACxC/B,IAAM65I,UAAWl7I,CAAAA,OAAO,CAAC,OAAA,CAAA,CACzB,GAAIqB,GAAQ,GAAA,CAAC,CAAG,CAAA,CACd65I,UAAWr7I,CAAAA,MAAM,CAACwB,GAAAA,CAAK,GACzB,CACF,CACA,GAAI,CAAC0P,KAAKvC,IAAI,CAAE,CACduC,IAAAA,CAAKvC,IAAI,CAAG2pO,SAAAA,CAAUpnO,IAAI,CAACvC,KAC7B,CACA2pO,SAAAA,CAAUpnO,IAAI,CAACvC,IAAI,CAAGuC,IAAAA,CAAKvC,IAAI,CAC/B,GAAIzY,KAAMC,CAAAA,OAAO,CAAC+a,IAAKwR,CAAAA,WAAW,CAAG,CAAA,CACnCxR,IAAKwR,CAAAA,WAAW,CAAG,IAAIvP,KAAKjC,IAAKwR,CAAAA,WAAW,EAC9C,CACA,GAAIxsB,KAAAA,CAAMC,OAAO,CAAC+a,KAAKu6Q,YAAY,CAAA,CAAG,CACpCv6Q,IAAAA,CAAKu6Q,YAAY,CAAG,IAAIt4Q,IAAAA,CAAKjC,KAAKu6Q,YAAY,EAChD,CACA,GAAIv1R,MAAMC,OAAO,CAAC+a,IAAKw6Q,CAAAA,aAAa,EAAG,CACrC,MAAM7rR,MAASqR,CAAAA,IAAAA,CAAKw6Q,aAAa,CACjC,GAAI7rR,MAAAA,CAAO1I,MAAM,GAAK,CAAA,CAAG,CACvB+Z,IAAAA,CAAKw6Q,aAAa,CAAG,IAAI3sQ,IAAOX,EAAAA,CAAAA,kBAAkB,CAACve,MAAM,CAAC,CAAE,CAAA,CAAEA,MAAM,CAAC,CAAE,CAAA,CAAEA,MAAM,CAAC,CAAA,CAAE,EACpF,CAAA,KAAO,CACLqR,IAAKw6Q,CAAAA,aAAa,CAAG,IAAI3sQ,KAAK7N,IAAKw6Q,CAAAA,aAAa,EAClD,CACF,CACA,MAAMprP,IAAO,CAAA,IAAI,CAACs2P,qBAAqB,CAAC1lR,IAAKvC,CAAAA,IAAI,EACjD2xB,IAAKqyP,CAAAA,gBAAgB,CAACr6C,SAAAA,CAAWpnO,MACjC,KAAK,CAACu0P,uBAAwBntB,CAAAA,SAAAA,CAAWpnO,IAAMmqI,CAAAA,UAAAA,CAAAA,CAC/C/6G,IAAKsyP,CAAAA,eAAe,CAACt6C,SAAWpnO,CAAAA,IAAAA,EAClC,CACA0lR,qBAAAA,CAAsBjoR,IAAI,CAAE,CAC1B,GAAI,IAAI,CAACg+Q,eAAe,CAACh+Q,IAAK,CAAA,GAAK3P,SAAW,CAAA,CAC5C,IAAIshC,IAAAA,CACJ,OAAO3xB,IACL,EAAA,IAAK,KACH2xB,CAAAA,IAAAA,CAAO,IAAI6yP,sBAAuB,CAAA,IAAI,CACtC,CAAA,UACG,QACH7yP,CAAAA,IAAAA,CAAO,IAAIgzP,yBAAAA,CAA0B,IAAI,CAAA,CACzC,MACF,IAAK,UACHhzP,IAAO,CAAA,IAAIkzP,0BAA2B,CAAA,IAAI,EAC1C,MACF,IAAK,UACHlzP,CAAAA,IAAAA,CAAO,IAAIszP,2BAA4B,CAAA,IAAI,CAC3C,CAAA,MACG,IAAA,MAAA,CACHtzP,IAAO,CAAA,IAAI0zP,wBAAwB,IAAI,CAAA,CACvC,MACF,IAAK,MACH1zP,CAAAA,IAAAA,CAAO,IAAI8zP,uBAAAA,CAAwB,IAAI,CACvC,CAAA,MACG,IAAA,UAAA,CACH9zP,IAAO,CAAA,IAAIm2P,2BAA4B,CAAA,IAAI,EAC3C,KACJ,CACA,IAAI,CAAC9J,eAAe,CAACh+Q,IAAAA,CAAK,CAAG2xB,KAC/B,CACA,OAAO,IAAI,CAACqsP,eAAe,CAACh+Q,IAAAA,CAAK,CAEnCkoR,mBAAmB/4J,MAAM,CAAE,CACzB,OAAO,IAAI,CAAC6uJ,eAAe,CAAC7uJ,MAAAA,CAAO0vJ,SAAS,CAACt8Q,IAAI,CAACvC,IAAI,CACxD,CACAqsO,cAAAA,CAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,OAAO,IAAI,CAACqqR,kBAAkB,CAAC/4J,QAAQtxH,KAAK,CAACsxH,MAAQtxH,CAAAA,KAAAA,CACvD,CACA4mQ,cAAAA,CAAet1I,MAAM,CAAEw6G,SAAS,CAAE,CAChC,IAAI,CAACq0C,eAAe,CAACr0C,SAAAA,CAAUpnO,IAAI,CAACvC,IAAI,CAAC,CAACukR,YAAY,CAACp1J,MAAQw6G,CAAAA,SAAAA,CAAAA,CAC/DA,SAAU86B,CAAAA,cAAc,GAC1B,CACAgX,QAAAA,CAAStsJ,MAAM,CAAE5sH,IAAI,CAAE,CACrB,IAAI,CAACy7Q,eAAe,CAACz7Q,IAAAA,CAAKvC,IAAI,CAAC,CAACpN,MAAM,CAACu8H,MAAAA,CAAQ5sH,MACjD,CACA+hR,4BAAAA,CAA6Bn1J,MAAM,CAAEihG,WAAW,CAAE,CAChD,MAAM+3D,eAAAA,CAAkBh5J,OAAO0vJ,SAAS,CAACF,eAAe,CACxD,GAAIwJ,eAAAA,GAAoBh5J,MAAO0vJ,CAAAA,SAAS,CAAE,OAC1C,GAAI1vJ,MAAO/zH,CAAAA,OAAO,EAAI+zH,MAAO0vJ,CAAAA,SAAS,CAACzjR,OAAO,GAAK+zH,MAAAA,CAAOkgB,WAAW,EAAI+gF,WAAU,CAAA,CAAI,CACrF,MAAM1tF,UAAY,IAAI,CAAC28I,iBAAiB,CAAClwJ,MAAQg5J,CAAAA,eAAAA,CAAgBh5J,MAAM,CAAA,CACvE,MAAMt8H,GAAMs1R,CAAAA,eAAAA,CAAgBhK,0BAA0B,CAAChvJ,MAAO0vJ,CAAAA,SAAS,CAACpoI,KAAK,EAC7E,GAAI5jJ,GAAAA,GAAQ,IAAM,CAAA,CAChBs1R,gBAAgB1xI,KAAK,CAAC6oI,aAAa,CAAC58I,UAAWvT,MAAO0vJ,CAAAA,SAAS,CAACt8Q,IAAI,CAACk0I,KAAK,EAC5E,CAAA,KAAO,CACL0xI,eAAgB1xI,CAAAA,KAAK,CAAC2xI,oBAAoB,CAACv1R,GAAK6vI,CAAAA,SAAAA,CAAW,IAC7D,EAAA,CACAmsG,KAAKn9M,OAAO,CAACgxG,SACf,EAAA,CACF,CACA88I,oBAAAA,CAAqBX,SAAS,CAAEpoI,KAAK,CAAE,CACrC,GAAIooI,SAAAA,CAAUpoI,KAAK,CAAC6nI,iBAAiB,EAAO,GAAA,CAAA,CAAG,CAC7C,MACF,CACA,GAAIO,SAAAA,CAAUpoI,KAAK,CAAC4xI,gBAAgB,CAAE,CACpCxJ,SAAUpoI,CAAAA,KAAK,CAAC4xI,gBAAgB,CAAC5xI,KACnC,EAAA,CAAA,KAAO,CACL,MAAMllJ,IAAMstR,SAAUV,CAAAA,0BAA0B,CAAC1nI,KAAAA,CAAAA,CACjD,GAAIllJ,GAAAA,GAAQ,IAAM,CAAA,CAChBstR,UAAUpoI,KAAK,CAAC6xI,uBAAuB,CAAC/2R,KAC1C,CACF,CACF,CACAg3R,kBAAAA,CAAmB5+C,SAAS,CAAE98N,QAAQ,CAAEqiI,QAAQ,CAAErkI,KAAK,CAAE,CACvD,IAAI,CAACmzQ,eAAe,CAACr0C,SAAAA,CAAUpnO,IAAI,CAACvC,IAAI,CAAC,CAACkjR,eAAe,CAACv5C,SAAAA,CAAW98N,QAAUqiI,CAAAA,QAAAA,CAAUrkI,KAC3F,EAAA,CACAuyQ,UAAWzzC,CAAAA,SAAS,CAAE6+C,YAAY,CAAEC,OAAO,CAAE,CAC3C,IAAI,CAACzK,eAAe,CAACwK,aAAa,CAACjE,YAAY,CAAC56C,SAAAA,CAAUx6G,MAAM,CAAEw6G,SAClE,CAAA,CAAA,IAAI,CAACq0C,eAAe,CAACwK,YAAa,CAAA,CAAC51R,MAAM,CAAC+2O,SAAUx6G,CAAAA,MAAM,CAAEw6G,SAAUpnO,CAAAA,IAAI,CAC1E,CAAA,IAAI,CAAC0lR,qBAAqB,CAACQ,OAAAA,CAAAA,CAASvyR,KAAK,CAACyzO,SAAAA,CAAWA,SAAUpnO,CAAAA,IAAI,EACrE,CACA+6Q,sBAAAA,CAAuB3zC,SAAS,CAAE,CAChC,IAAI,CAACq0C,eAAe,CAACr0C,SAAUpnO,CAAAA,IAAI,CAACvC,IAAI,CAAC,CAACs9Q,sBAAsB,CAAC3zC,SAAAA,EACnE,CACA++C,+BAAgC/vJ,CAAAA,IAAI,CAAEgwJ,QAAQ,CAAE,CAC9C,GAAIhwJ,IAASgwJ,GAAAA,QAAAA,CAAU,CACrB,MAAM99Q,KAAQ8tH,CAAAA,IAAAA,CAAKzI,iBAAiB,EAAG3gH,CAAAA,QAAQ,EAC/Co0Q,CAAAA,IAAAA,CAAK31Q,QAAQ,CAACnD,KAAAA,CAAMjO,CAAC,CAAEiO,MAAMvG,CAAC,CAAEuG,KAAMpG,CAAAA,CAAC,EACzC,CAAA,KAAO,CACL,IAAI,CAACikR,+BAA+B,CAAC/vJ,IAAKn/H,CAAAA,MAAM,CAAEmvR,QAClDhF,CAAAA,CAAAA,IAAAA,CAAK99Q,GAAG,CAAC8yH,KAAK2X,iBAAiB,EAAA,EACjC,CACF,CACA22I,eAAgBtuJ,CAAAA,IAAI,CAAE,CACpB,MAAM0R,GAAM1R,CAAAA,IAAAA,CAAKzI,iBAAiB,EAAA,CAClC,MAAMihD,GAAM9mC,CAAAA,GAAAA,CAAI96H,QAAQ,EAAA,CACxB,OAAO,IAAIs/N,IAAAA,CAAK20C,SAAS,CAACryG,GAAIv0K,CAAAA,CAAC,CAAEu0K,GAAAA,CAAI7sK,CAAC,CAAE6sK,GAAAA,CAAI1sK,CAAC,CAC/C,CACA46Q,iBAAkB1mJ,CAAAA,IAAI,CAAEgwJ,QAAQ,CAAE,CAChC,IAAI/xI,GAAK7D,CAAAA,GAAAA,CACT,GAAI41I,QAAAA,CAAU,CACZ,IAAI,CAACD,+BAA+B,CAAC/vJ,IAAMgwJ,CAAAA,QAAAA,CAAAA,CAC3C/xI,IAAMt1I,EACNyxI,CAAAA,GAAAA,CAAM6wI,MACND,CAAAA,IAAAA,CAAKr0Q,cAAc,CAACsnI,GAAAA,CAAAA,CACpB7D,GAAIvrI,CAAAA,WAAW,CAACm8Q,IAAAA,EAClB,CAAO,KAAA,CACL/sI,IAAMje,IAAK9lB,CAAAA,WAAW,EACtBkgC,CAAAA,GAAAA,CAAMpa,IAAK4X,CAAAA,WAAW,GACxB,CACA,MAAMq4I,QAAW,CAAA,IAAI/5C,IAAK40C,CAAAA,YAAY,CACtC,MAAM/gJ,SAAY,CAAA,IAAImsG,KAAK60C,WAAW,CACtChhJ,SAAUp7H,CAAAA,WAAW,GACrB,MAAM2O,MAAAA,CAASysH,SAAUmmJ,CAAAA,SAAS,GAClC,MAAMl/C,SAAAA,CAAYhxG,IAAKkmJ,CAAAA,SAAS,CAChC,GAAIl1C,SAAaA,EAAAA,SAAAA,CAAU6zC,UAAU,CAAE,CACrC,MAAM0B,EAAAA,CAAKv1C,UAAUpnO,IAAI,CAACu6Q,YAAY,CACtC,MAAMgM,EAAKn/C,CAAAA,SAAAA,CAAUpnO,IAAI,CAACw6Q,aAAa,CACvC,MAAMgM,SAAAA,CAAYroG,GAClBkjG,MAAOt8R,CAAAA,IAAI,CAACyrJ,GAAAA,CAAAA,CAAK/oI,eAAe,CAACk1Q,EAAAA,CAAI6J,SACrCA,CAAAA,CAAAA,SAAAA,CAAUlwR,GAAG,CAAC+9I,GAAAA,CAAAA,CACdgtI,MAAOt8R,CAAAA,IAAI,CAACyrJ,GAAAA,CAAAA,CAAKltI,GAAG,CAACijR,IACrB7yQ,MAAOiqB,CAAAA,QAAQ,CAAC6oP,SAAAA,CAAUnsR,CAAC,CAAEmsR,SAAAA,CAAUzkR,CAAC,CAAEykR,UAAUtkR,CAAC,CAAA,CACrDmkR,QAAS1oP,CAAAA,QAAQ,CAAC0jP,MAAAA,CAAOhnR,CAAC,CAAEgnR,OAAOt/Q,CAAC,CAAEs/Q,MAAOn/Q,CAAAA,CAAC,CAAEm/Q,MAAO97Q,CAAAA,CAAC,EAC1D,CAAA,KAAO,CACLmO,MAAOiqB,CAAAA,QAAQ,CAAC02G,GAAAA,CAAIh6I,CAAC,CAAEg6I,GAAItyI,CAAAA,CAAC,CAAEsyI,GAAInyI,CAAAA,CAAC,CACnCmkR,CAAAA,QAAAA,CAAS1oP,QAAQ,CAAC6yG,GAAAA,CAAIn2I,CAAC,CAAEm2I,IAAIzuI,CAAC,CAAEyuI,GAAItuI,CAAAA,CAAC,CAAEsuI,GAAAA,CAAIjrI,CAAC,EAC9C,CACA46H,SAAU6O,CAAAA,WAAW,CAACq3I,QAAAA,CAAAA,CACtB/5C,KAAKn9M,OAAO,CAACk3P,QACb,CAAA,CAAA,OAAOlmJ,SACT,CACAhxG,OAAAA,EAAU,CACR,IAAI,MAAMthC,GAAAA,IAAO,IAAI,CAAC+1R,aAAa,CAAC,CAClCt3C,IAAKn9M,CAAAA,OAAO,CAAC,IAAI,CAACy0P,aAAa,CAAC/1R,GAAI,CAAA,EACtC,CACA,IAAI,CAAC+1R,aAAa,CAAG,IAAA,CACrB,KAAK,CAACz0P,OAAAA,GACR,CAhNAphC,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,IACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,WACV,CAAA,IAAI,CAACokO,aAAa,CAAGkmB,kBACrB,CAAA,IAAI,CAAChmB,QAAQ,CAAGipB,sBAChB,CAAA,IAAI,CAAC72C,MAAM,CAAG66C,SACd,CAAA,IAAI,CAAC9F,eAAe,CAAG,EACvB,CAAA,IAAI,CAACmI,aAAa,CAAG,GACrB,IAAI,CAACv2R,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC60Q,cAAc,CAAE,IAAI,CAAA,CACjD,IAAI,CAAC70Q,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC6rR,QAAQ,CAAE,IAAI,EACvC,CAuMF,CAEA,MAAMuN,YAAAA,CAAe,IAAIprR,KACzB,CAAA,MAAMqrR,wBAA2B,CAAA,IAAIl2P,WACrC,CAAMm2P,MAAAA,eAAAA,CAkBJx3P,OAAU,EAAA,CACR,IAAI,CAACy3P,WAAW,CAAC,IAAA,CAAA,CACjB,IAAI,CAACnoL,QAAQ,CAAC4+B,qBAAqB,CAAC,IAAI,CAAC/R,KAAK,EAC9C,IAAI,CAACA,KAAK,CAACn8F,OAAO,EAClB,CAAA,IAAI,CAACm8F,KAAK,CAAG,IACb,CAAA,IAAI,CAAC8K,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC1G,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC9E,YAAY,EAAEz7F,OAAAA,EACnB,CAAA,IAAI,CAACy7F,YAAY,CAAG,IACpB,CAAA,IAAI,CAACgT,kBAAkB,EAAEzuG,SACzB,CAAA,IAAI,CAACyuG,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACipJ,OAAO,CAAG,IACf,CAAA,IAAI,CAACpoL,QAAQ,CAAG,KAClB,CACAqoL,OAAQp3J,CAAAA,IAAI,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC9E,YAAY,CAAE,OACxB,IAAI,CAAC8E,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC9E,YAAY,CAAC8E,IAAI,CAAGA,IACzB,CAAA,IAAI,CAAC9E,YAAY,CAACsO,OAAO,CAAG,CAAC,CAACxJ,IAAAA,CAC9B,GAAI,IAAI,CAACkO,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAClO,IAAI,CAAGA,KACjC,CACA,IAAI,CAACq3J,eAAe,GACtB,CACAnsB,OAAQhhO,CAAAA,IAAI,CAAE,CACZ,GAAI,CAAC,IAAI,CAACgxF,YAAY,CAAE,OACxB,GAAI,IAAI,CAACi8J,OAAO,CAAChuR,OAAO,EAAI,IAAI,CAAC4lG,QAAQ,CAAC5lG,OAAO,CAAE,CACjD,IAAI,CAAC4lG,QAAQ,CAAC4+B,qBAAqB,CAAC,IAAI,CAAC/R,KAAK,EAChD,CACA,GAAI1xF,IAAAA,CAAM,CACR,IAAI,CAACgkG,kBAAkB,CAAG,IAAItI,YAAAA,CAAa,IAAI,CAAC5F,IAAI,CAAE,IAAI,CAAC9E,YAAY,CAAC/B,QAAQ,CAAE,IAAI,CAACuN,IAAI,CAC3F,CAAA,IAAI,CAACwH,kBAAkB,CAACt0I,IAAI,CAAG,CAAC,QAAQ,EAAE,IAAI,CAACu9R,OAAO,CAACv9R,IAAI,CAAC,CAC5D,CAAA,IAAI,CAACs0I,kBAAkB,CAAChD,UAAU,CAAG,KACrC,CAAA,IAAI,CAACgD,kBAAkB,CAAChG,aAAa,CAAG,KACxC,CAAA,IAAI,CAACgG,kBAAkB,CAACzC,IAAI,CAAG,KAAA,CAC/B,IAAI,CAAC7P,KAAK,CAACC,aAAa,CAACzkI,IAAI,CAAC,IAAI,CAAC82I,kBAAkB,CAAA,CACrD,IAAI,MAAMt0I,QAAQ,IAAI,CAACshI,YAAY,CAACh7B,UAAU,CAAC,CAC7C,IAAI,CAACguC,kBAAkB,CAACluC,YAAY,CAACpmG,KAAM,IAAI,CAACshI,YAAY,CAACh7B,UAAU,CAACtmG,IAAAA,CAAK,CAAC0W,IAAI,EACpF,CACF,CAAO,KAAA,CACL,MAAM1P,GAAM,CAAA,IAAI,CAACg7H,KAAK,CAACC,aAAa,CAACt8H,OAAO,CAAC,IAAI,CAAC2uI,kBAAkB,CACpE,CAAA,GAAIttI,GAAO,EAAA,CAAA,CAAG,CACZ,IAAI,CAACg7H,KAAK,CAACC,aAAa,CAACz8H,MAAM,CAACwB,GAAAA,CAAK,CACvC,EAAA,CACF,CACA,GAAI,IAAI,CAACu2R,OAAO,CAAChuR,OAAO,EAAI,IAAI,CAAC4lG,QAAQ,CAAC5lG,OAAO,CAAE,CACjD,IAAI,CAAC4lG,QAAQ,CAACuoL,gBAAgB,CAAC,IAAI,CAAC17J,KAAK,EAC3C,CACA,GAAI,CAAC1xF,KAAM,CACT,IAAI,CAACgkG,kBAAkB,EAAEzuG,OACzB,EAAA,CAAA,IAAI,CAACyuG,kBAAkB,CAAG,KAC5B,CACF,CACAgpJ,WAAY/9J,CAAAA,QAAQ,CAAE,CACpB,GAAI,CAAC,IAAI,CAAC+B,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAAC/B,QAAQ,CAAGA,QAC7B,CAAA,GAAI,IAAI,CAAC+U,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAC/U,QAAQ,CAAGA,SACrC,CACF,CACAn5B,YAAAA,CAAapmG,IAAI,CAAEqE,KAAK,CAAE,CACxB,GAAI,CAAC,IAAI,CAACi9H,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAACl7B,YAAY,CAACpmG,IAAAA,CAAMqE,KACrC,CAAA,CAAA,GAAI,IAAI,CAACiwI,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAACluC,YAAY,CAACpmG,IAAAA,CAAMqE,KAC7C,EAAA,CACF,CACAkiG,eAAgBvmG,CAAAA,IAAI,CAAE,CACpB,GAAI,CAAC,IAAI,CAACshI,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAAC/6B,eAAe,CAACvmG,IAAAA,CAAAA,CAClC,GAAI,IAAI,CAACs0I,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAC/tC,eAAe,CAACvmG,IAC1C,EAAA,CACF,CACA29R,kBAAqB,EAAA,CACnB,GAAI,CAAC,IAAI,CAACr8J,YAAY,CAAE,OACxB,MAAMs8J,YAAAA,CAAe,SAAS/+R,CAAC,EAC7B,IAAIu+C,IAAAA,CACJ,MAAMrhD,CAAAA,CAAI8C,EAAEmjJ,QAAQ,CACpB,MAAMzmI,CAAAA,CAAIxf,EAAEY,MAAM,CAClB,GAAI4e,CAAAA,CAAG,CACL,IAAI,IAAI7e,CAAAA,CAAI,EAAGA,CAAI6e,CAAAA,CAAAA,CAAG7e,CAAI,EAAA,CAAA,CACxB,GAAIX,CAAC,CAACW,CAAE,CAAA,CAAC27C,OAAO,CAAE,CAChB+E,IAAOrhD,CAAAA,CAAC,CAACW,CAAAA,EAAE,CAEf,CACA,GAAI,CAAC0gD,IAAM,CAAA,OAAO,IAClB,CAAA,MAAMumG,KAAQi6I,CAAAA,YAAAA,CAAaxgP,MAC3B,GAAIumG,KAAAA,CAAO,CACT,OAAOA,KACT,CACA,OAAOvmG,IACT,CACA,OAAO,IACT,CACA,CAAA,GAAI,IAAI,CAACk3F,kBAAkB,CAAE,CAC3B,MAAMupJ,SAAYD,CAAAA,YAAAA,CAAa,IAAI,CAACL,OAAO,CAAA,CAC3C,GAAIM,SAAAA,EAAaA,UAAUxlP,OAAO,CAAE,CAClC,IAAI,CAACi8F,kBAAkB,CAAC9C,SAAS,CAAGqsJ,UAAUxlP,OAAO,CAACm5F,SAAS,CAAGqsJ,SAAUxlP,CAAAA,OAAO,CAACylP,aAAa,GACnG,CAAO,KAAA,CACL,IAAI,CAACxpJ,kBAAkB,CAAC9C,SAAS,CAAG,IAAI,CAAClQ,YAAY,CAACkQ,SAAS,CAAG,IAAI,CAACr8B,QAAQ,CAAC2oL,aAAa,GAC/F,CACF,CACF,CACAC,aAAavsJ,SAAS,CAAE,CACtB,GAAI,CAAC,IAAI,CAAClQ,YAAY,CAAE,CACtB,MACF,CACA,IAAI,CAACA,YAAY,CAACkQ,SAAS,CAAGA,UAChC,CACAwsJ,OAAAA,CAAQ/tJ,IAAI,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC3O,YAAY,CAAE,OACxB,MAAMjpF,QAAU,IAAI,CAAC88D,QAAQ,CAC7B,IAAI8oL,SAAY,CAAA,IAAA,CAChB,GAAIhuJ,IAAAA,EAAQ53F,QAAQ6lP,cAAc,EAAA,CAAI,CACpCD,SAAAA,CAAY,SAAStuJ,MAAM,CACzB,CAAA,OAAOt3F,QAAQ8lP,kBAAkB,CAACxuJ,MACpC,CAAA,EACF,CACA,IAAI,CAACrO,YAAY,CAAC2O,IAAI,CAAGA,IACzB,CAAA,IAAI,CAAC3O,YAAY,CAACuO,aAAa,CAAGouJ,SAClC,CAAA,GAAI,IAAI,CAAC3pJ,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAACrE,IAAI,CAAGA,IAC/B,CAAA,IAAI,CAACqE,kBAAkB,CAACzE,aAAa,CAAGouJ,UAC1C,CACF,CACAG,cAAAA,CAAervJ,WAAW,CAAE,CAC1B,GAAI,CAAC,IAAI,CAACzN,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAACyN,WAAW,CAAGA,WAChC,CAAA,GAAI,IAAI,CAACuF,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAACvF,WAAW,CAAGA,YACxC,CACF,CACAsvJ,QAAS58J,CAAAA,KAAK,CAAE,CACd,GAAI,CAAC,IAAI,CAACH,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAACG,KAAK,CAAGA,KAAAA,CAC1B,GAAI,IAAI,CAAC6S,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAC7S,KAAK,CAAGA,MAClC,CACF,CACAg8J,eAAAA,CAAgBntP,IAAI,CAAE,CACpB,GAAI,CAAC,IAAI,CAACgxF,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAACS,QAAQ,CAAG,CAAC,CAAA,CAC9B,GAAI,IAAI,CAACuS,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAACvS,QAAQ,CAAG,CAAC,EACtC,CACF,CACAu8J,WAAAA,CAAYtvD,EAAE,CAAE,CACd,GAAI,CAAC,IAAI,CAAC1tG,YAAY,CAAE,OACxB,IAAI,CAACA,YAAY,CAACiL,eAAe,CAAGyiG,EACpC,CAAA,GAAI,IAAI,CAAC16F,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAC/H,eAAe,CAAGyiG,GAC5C,CACF,CA1KAvqO,WAAY6+H,CAAAA,MAAM,CAAE8C,IAAI,CAAE7G,QAAQ,CAAC,CACjC,IAAI,CAACg+J,OAAO,CAAGj6J,MACf,CAAA,IAAI,CAACnuB,QAAQ,CAAGmuB,MAAAA,CAAOjrF,OACvB,CAAA,IAAI,CAAC2pF,KAAK,CAAG,IAAI8nD,KACjB,CAAA,IAAI,CAACh9C,IAAI,CAAG,IAAImV,SAChB,CAAA,IAAI,CAACjgB,KAAK,CAACgoD,KAAK,CAAG,IAAI,CAACl9C,IAAI,CAC5B,IAAI,CAAC1G,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC9E,YAAY,CAAG,IAAI0K,YAAAA,CAAa,IAAI,CAAC5F,IAAI,CAAE7G,SAAU,IAAI,CAACuN,IAAI,CACnE,CAAA,IAAI,CAACxL,YAAY,CAACthI,IAAI,CAAG,CAAC,cAAc,EAAEsjI,MAAOtjI,CAAAA,IAAI,CAAC,CAAC,CACvD,IAAI,CAACshI,YAAY,CAACgQ,UAAU,CAAG,KAC/B,CAAA,IAAI,CAAChQ,YAAY,CAACgN,aAAa,CAAG,KAClC,CAAA,IAAI,CAACiwJ,UAAU,CAAG,KAClB,CAAA,IAAI,CAACv8J,KAAK,CAACC,aAAa,CAACzkI,IAAI,CAAC,IAAI,CAAC8jI,YAAY,CAC/C,CAAA,IAAI,CAACi8J,OAAO,CAACr4I,QAAQ,CAAC,IAAI,CAACljB,KAAK,CAACgoD,KAAK,CACtC,CAAA,IAAI,CAAChoD,KAAK,CAACu7J,OAAO,CAAG,IAAI,CAACA,OAAO,CACjC,IAAI,CAACjpJ,kBAAkB,CAAG,KAC5B,CA2JF,CACA,MAAMkqJ,YA2CJ34P,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC+wO,YAAY,CAAG,IACpB,CAAA,IAAI,CAACiX,WAAW,CAAG,IACnB,CAAA,IAAI,CAACn3C,aAAa,CAAG,IACrB,CAAA,IAAI,CAACriG,WAAW,CAACmpJ,OAAO,CAAC,IAAI,CAACiB,YAAY,CAAA,CAC1C,IAAI,CAACpqJ,WAAW,CAACxuG,OAAO,EACxB,CAAA,IAAI,CAAC44P,YAAY,CAAG,IAAA,CACpB,IAAI,CAACtpL,QAAQ,CAACxxG,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC+6R,4BAA4B,CAAE,IAAI,CACnE,CAAA,IAAI,CAACvpL,QAAQ,CAACxxG,GAAG,CAAC,WAAa,CAAA,IAAI,CAAC+6R,4BAA4B,CAAE,IAAI,CAAA,CACtE,IAAI,CAACvpL,QAAQ,CAACxxG,GAAG,CAAC,wBAAA,CAA0B,IAAI,CAACg7R,oBAAoB,CAAE,IAAI,CAC3E,CAAA,IAAI,CAACxpL,QAAQ,CAACxxG,GAAG,CAAC,YAAc,CAAA,IAAI,CAACi7R,eAAe,CAAE,IAAI,CAAA,CAC1D,IAAI,CAACzpL,QAAQ,CAACxxG,GAAG,CAAC,eAAA,CAAiB,IAAI,CAACk7R,kBAAkB,CAAE,IAAI,CAChE,CAAA,IAAI,CAAC1pL,QAAQ,CAACxxG,GAAG,CAAC,wBAAyB,IAAI,CAACm7R,mBAAmB,CAAE,IAAI,EAC3E,CACAA,mBAAAA,CAAoBzgR,GAAG,CAAE,EACzBqgR,4BAAAA,EAA+B,CAC7B,GAAI,IAAI,CAACrqJ,WAAW,CAACjO,IAAI,CAAE,CACzB,IAAI,CAAC24J,WAAW,CAAC,IAAI,CAAC1qJ,WAAW,CAACjO,IAAI,EACxC,CACF,CACAu4J,oBAAqBt6R,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAAC26R,eAAe,CAAC36R,KAAAA,EACvB,CACAu6R,eAAAA,CAAgBK,MAAM,CAAE9hL,QAAQ,CAAE,CAChC,GAAI8hL,MAAQ,CAAA,CACV,IAAI,CAACD,eAAe,CAACC,MAAAA,CAAOA,MAAM,CAAClwJ,WAAW,EAChD,CAAO,KAAA,CACL,IAAI,CAACiwJ,eAAe,CAAC,KAAA,EACvB,CACF,CACAH,kBAAAA,CAAmBt+G,KAAK,CAAE,CACxB,IAAI,CAAClsC,WAAW,CAAC0pJ,YAAY,CAACx9G,KAC9B,CAAA,CAAA,GAAI,IAAI,CAACjwI,IAAI,EAAI,IAAI,CAAC6kE,QAAQ,CAAC8pL,MAAM,CAAE,CACrC,IAAI,CAAC9pL,QAAQ,CAAC8pL,MAAM,CAACA,MAAM,CAAC96R,IAAI,CAAC,eAAA,CAAiB,UAChD,CAAA,IAAI,CAACkwI,WAAW,CAACspJ,kBAAkB,GACrC,CAAG,CAAA,IAAI,EACT,CACF,CACAuB,gBAAAA,EAAmB,CACjB,OAAO,CAAC,CAAC,IAAI,CAACC,cAAc,EAAI,CAAC,CAAC,IAAI,CAACxxJ,SAAS,EAAI,IAAI,CAACyxJ,OAAO,CAACC,qBAAqB,CAAC15R,OAAO,CAAC,IAAI,CAACgoI,SAAS,CAAA,GAAM,CAAC,CACtH,CACA2xJ,YAAe,EAAA,CACb,OAAO,IAAI,CAAC78J,MAAM,GAAK,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAKhhF,wBAA4B,EAAA,IAAI,CAACuI,MAAM,CAACy4E,UAAU,GAAK/gF,uBAAsB,CACjI,CACA6kK,eAAgBjwJ,CAAAA,WAAW,CAAE,CAC3B,MAAMz+F,IAAAA,CAAO,CAAC,CAAC,IAAI,CAACyxI,KAAK,CACzB,MAAMw9G,UAAa,CAAA,CAAC,EAAE,IAAI,CAAC98J,MAAM,EAAI,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAKhhF,wBAAuB,CAAA,CACvF,MAAMslK,SAAY,CAAA,CAAC,EAAE,IAAI,CAAC/8J,MAAM,EAAI,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAK/gF,uBAAsB,CAAA,CACrF,GAAI,CAAC,IAAI,CAAC+kK,gBAAgB,EAAI,CAAA,CAC5B,IAAI,CAACvxJ,SAAS,CAAG,IAAI,CAACyxJ,OAAO,CAACK,uBAAuB,CAAC1wJ,WAAaz+F,CAAAA,IAAAA,CAAMivP,UAAYC,CAAAA,SAAAA,EACvF,CACA,GAAI,IAAI,CAACnrJ,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAC2pJ,OAAO,CAAC,CAAC,IAAI,CAAC7oL,QAAQ,CAAC+oL,cAAc,IAAM,IAAI,CAAC/oL,QAAQ,CAACuqL,eAAe,EACzF,CAAA,CAAA,IAAI,CAACrrJ,WAAW,CAACipJ,WAAW,CAAC,IAAI,CAAC3vJ,SAAS,CAAA,CAC3C,IAAI,CAAC0G,WAAW,CAAC+pJ,cAAc,CAACrvJ,WAAAA,CAAAA,CAChC,IAAI,CAACsF,WAAW,CAACgqJ,QAAQ,CAACtvJ,WAAAA,CAAcrd,SAAYE,CAAAA,WAAAA,EACtD,CACF,CACA+tK,WAAAA,EAAc,CACZ,MAAMtnP,QAAU,IAAI,CAAC88D,QAAQ,CAC7B,MAAMl5F,CAAIo8B,CAAAA,OAAAA,CAAQunP,eAAe,CACjC,MAAMzvQ,CAAAA,CAAIkoB,OAAQwnP,CAAAA,gBAAgB,CAClC,MAAM7jS,CAAAA,CAAI,IAAI,CAACu/I,KAAK,CACpB,MAAM50G,MAAS,CAAA,IAAI,CAACy4P,OAAO,CAAC1yD,GAAG,CAACpmM,cAAc,CAC9C,MAAMw5P,UAAAA,CAAa,IAAIvpR,YAAa,CAAA,CAClC0F,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACAjgB,EAAE+U,CAAC,CAAG/U,CAAE4c,CAAAA,CAAC,CACT,CAAA,CAAM5c,CAAEyc,CAAAA,CAAC,CACTwD,CACAkU,CAAAA,CAAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACAn0B,CAAAA,CAAAA,CAAE+U,CAAC,CAAG/U,EAAE4c,CAAC,CACT,CAAO5c,EAAAA,CAAEyc,CAAAA,CAAC,CAAGzc,CAAAA,CAAEigB,CAAC,CAADA,CACf,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACAjgB,CAAAA,CAAAA,CAAE+U,CAAC,CACH,CAAA,CAAM/U,CAAEyc,CAAAA,CAAC,CACT,CAAA,CACA0X,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACAn0B,CAAE+U,CAAAA,CAAC,CACH,CAAO/U,EAAAA,CAAEyc,CAAAA,CAAC,CAAGzc,CAAEigB,CAAAA,CAAC,CAADA,CAChB,CACD,CAAA,MAAMy9B,YAAe0jP,CAAAA,wBAAAA,CAAyB3+R,GAAG,CAACkoC,MAAAA,CAAQ,IACxD,CAAA,OAAO,IAAIwP,YAAaxP,CAAAA,MAAAA,CAAQ,CAC9B,CACE4P,SAAU/b,iBACVgc,CAAAA,UAAAA,CAAY,CACZriC,CAAAA,IAAAA,CAAMgrB,YACR,CAAA,CACA,CACEoX,QAAAA,CAAU9b,gBACV+b,UAAY,CAAA,CAAA,CACZriC,IAAMgrB,CAAAA,YACR,EACA,CACEoX,QAAAA,CAAUxb,kBACVyb,CAAAA,UAAAA,CAAY,EACZriC,IAAMgrB,CAAAA,YACR,CACD,CAAA,CACH,CACA,CAAA,CAAA,MAAMod,YAAe,CAAA,IAAI1H,aAAalO,MAAQ+S,CAAAA,YAAAA,CAAc,CAAG,CAAA,CAC7DhjC,KAAMopR,UAAW1oR,CAAAA,MAAM,CACzB,CAAA,CACA,MAAMgvH,IAAO,CAAA,IAAIH,IAAKt/F,CAAAA,MAAAA,CACtBy/F,CAAAA,IAAAA,CAAK7pF,YAAY,CAAGA,YACpB6pF,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,EAAE,CAAC7oC,IAAI,CAAGmmB,kBACzB8rG,CAAAA,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAACwwB,IAAI,CAAG,CACzB44D,CAAAA,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAG,CAC1B0pF,CAAAA,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC0wB,OAAO,CAAG,KAAA,CAC5B04D,KAAK56G,IAAI,CAACL,SAAS,CAACxS,KAAK8B,IAAI,CAAE,IAAI9B,IAAAA,CAAKsD,EAAGkU,CAAG,CAAA,CAAA,CAAA,CAAA,CAC9C,IAAI,CAAC4uQ,WAAW,CAAC34J,IACjB,CAAA,CAAA,OAAOA,IACT,CACA24J,WAAAA,CAAY34J,IAAI,CAAE,CAChB,MAAM/tF,OAAAA,CAAU,IAAI,CAAC88D,QAAQ,CAC7B,IAAIl5F,CAAIo8B,CAAAA,OAAAA,CAAQunP,eAAe,CAC/B,IAAIzvQ,CAAAA,CAAIkoB,QAAQwnP,gBAAgB,CAChC,GAAIxnP,OAAAA,CAAQ0nP,OAAO,GAAK7W,eAAAA,EAAmB,IAAI,CAAC8W,kBAAkB,CAAG,CAAA,CAAG,CACtE,MAAMC,WAAc5nP,CAAAA,OAAAA,CAAQunP,eAAe,CAAGvnP,QAAQwnP,gBAAgB,CACtE,GAAIxnP,OAAAA,CAAQ0nP,OAAO,GAAK5W,eAAAA,EAAmB8W,WAAc,CAAA,IAAI,CAACD,kBAAkB,EAAI3nP,OAAQ0nP,CAAAA,OAAO,GAAK3W,aAAAA,EAAiB6W,WAAc,CAAA,IAAI,CAACD,kBAAkB,CAAE,CAC9J/jR,CAAAA,CAAIo8B,QAAQwnP,gBAAgB,CAAG,IAAI,CAACG,mBAAkB,CACxD,KAAO,CACL7vQ,CAAAA,CAAIkoB,OAAQunP,CAAAA,eAAe,CAAG,IAAI,CAACI,mBACrC,CACF,CACA,MAAMjxJ,WAAc12F,CAAAA,OAAAA,CAAQ6lP,cAAc,EAAA,CAC1C,IAAI,CAACc,eAAe,CAACjwJ,WAAAA,CAAAA,CACrB,GAAI,IAAI,CAACsF,WAAW,CAAE,IAAI,CAACA,WAAW,CAACopJ,eAAe,EACtD,CAAA,GAAI,IAAI,CAACh7J,MAAM,GAAK,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAKhhF,0BAA4B,IAAI,CAACuI,MAAM,CAACy4E,UAAU,GAAK/gF,uBAAsB,CAAA,CAAI,CAC9H,MAAM+lK,SAAAA,CAAY,IAAI,CAAC39J,OAAO,CAACq4E,KAAK,CAACa,MAAM,CAAC,IAAI,CAACl5E,OAAO,CAAC+3E,SAAS,CAAC,IAAI,CAAC6lF,YAAY,CAAC,CAAC,CACtF,MAAMC,gBAAmB,CAAA,CAAA,CAAIF,SAAU/hP,CAAAA,IAAI,CAACvlC,CAAC,CAC7C,MAAMynR,iBAAAA,CAAoB,EAAIH,SAAU/hP,CAAAA,IAAI,CAACliC,CAAC,CAC9C,IAAI,CAACqkR,YAAY,CAACr7R,GAAG,CAACi7R,SAAU3jF,CAAAA,MAAM,CAACxrM,CAAC,CAAGqvR,gBAAkBF,CAAAA,SAAAA,CAAU3jF,MAAM,CAAC9jM,CAAC,CAAG4nR,iBAAAA,CAAmBH,UAAU3jF,MAAM,CAAC3jM,CAAC,CAAGwnR,gBAAkBF,CAAAA,SAAAA,CAAU3jF,MAAM,CAACtgM,CAAC,CAAGokR,iBAAAA,CAAAA,CACjK,MAAM72P,GAAAA,CAAM,IAAI,CAACi5F,MAAM,CAACm4E,KAAK,CAACpsK,OAAO,CACrC,IAAI,CAAC+xP,UAAU,CAACt7R,GAAG,CAACi7R,SAAU/hP,CAAAA,IAAI,CAACptC,CAAC,CAAGy4B,GAAInnB,CAAAA,KAAK,CAAE69Q,SAAAA,CAAU/hP,IAAI,CAAC1lC,CAAC,CAAG+wB,GAAAA,CAAIlnB,MAAM,CAAE49Q,SAAU/hP,CAAAA,IAAI,CAACvlC,CAAC,CAAG4wB,GAAInnB,CAAAA,KAAK,CAAE69Q,SAAU/hP,CAAAA,IAAI,CAACliC,CAAC,CAAGutB,GAAIlnB,CAAAA,MAAM,CAC5I,CAAA,MAAMk+Q,GAAM,CAAA,IAAI,CAACvlF,cAAc,GAAK,IAAO,CAAA,IAAI,CAACA,cAAc,CAAG,IAAI,CAACx4E,MAAM,CAACu4E,aAAa,CAC1F,MAAMylF,SAAYP,CAAAA,SAAAA,CAAU/hP,IAAI,CAACvlC,CAAC,CAAG4nR,IACrC,MAAME,SAAAA,CAAYR,SAAU/hP,CAAAA,IAAI,CAACliC,CAAC,CAAGukR,GAAAA,CACrC,IAAI,CAACG,WAAW,CAAC17R,GAAG,CAAChJ,IAAAA,CAAKoU,GAAG,CAAC4L,EAAG,IAAI,CAACqkR,YAAY,CAACvvR,CAAC,CAAG0vR,SAAAA,CAAAA,CAAYxkS,IAAKoU,CAAAA,GAAG,CAAC8f,CAAG,CAAA,IAAI,CAACmwQ,YAAY,CAAC7nR,CAAC,CAAGioR,SAAAA,CAAAA,CAAAA,CACrG,IAAIl5L,MAASi5L,CAAAA,SAAAA,CACb,IAAI/4L,MAAAA,CAASg5L,SACb,CAAA,IAAI,CAACC,WAAW,CAAC5vR,CAAC,EAAI0vR,SACtB,CAAA,IAAI,CAACE,WAAW,CAACloR,CAAC,EAAIioR,SAAAA,CACtBl5L,MAAUz3F,EAAAA,IAAAA,CAAKI,KAAK,CAAC8L,CAAAA,EAAK,IAAI,CAACqkR,YAAY,CAACvvR,CAAC,CAAG0vR,SAAQ,CAAA,CAAI,IAAQ,CAAA,CAAA,CAAA,CACpE/4L,QAAU33F,IAAKI,CAAAA,KAAK,CAACggB,CAAAA,EAAK,IAAI,CAACmwQ,YAAY,CAAC7nR,CAAC,CAAGioR,SAAQ,CAAI,CAAA,IAAA,CAAQ,CACpE,CAAA,CAAA,GAAI,IAAI,CAACrsJ,WAAW,CAAE,CACpB,IAAI,CAACusJ,mBAAmB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,YAAY,CAACvvR,CAChD,CAAA,IAAI,CAAC6vR,mBAAmB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,YAAY,CAAC7nR,CAAC,CACjD,IAAI,CAACmoR,mBAAmB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,YAAY,CAAC1nR,CAChD,CAAA,IAAI,CAACgoR,mBAAmB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,YAAY,CAACrkR,CAAC,CACjD,IAAI,CAACo4H,WAAW,CAACjuC,YAAY,CAAC,aAAe,CAAA,IAAI,CAACw6L,mBAAmB,CACrE,CAAA,IAAI,CAACC,iBAAiB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,UAAU,CAACxvR,CAC5C,CAAA,IAAI,CAAC8vR,iBAAiB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,UAAU,CAAC9nR,CAAC,CAC7C,IAAI,CAACooR,iBAAiB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,UAAU,CAAC3nR,CAC5C,CAAA,IAAI,CAACioR,iBAAiB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,UAAU,CAACtkR,CAAC,CAC7C,IAAI,CAACo4H,WAAW,CAACjuC,YAAY,CAAC,YAAa,IAAI,CAACy6L,iBAAiB,CACjE,CAAA,IAAI,CAACC,kBAAkB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACH,WAAW,CAAC5vR,CAAC,CAC/C,IAAI,CAAC+vR,kBAAkB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACH,WAAW,CAACloR,CAAC,CAC/C,IAAI,CAAC47H,WAAW,CAACjuC,YAAY,CAAC,YAAA,CAAc,IAAI,CAAC06L,kBAAkB,CACnE,CAAA,IAAI,CAACzsJ,WAAW,CAACiqJ,WAAW,CAAC,IAAI,CAAC/xJ,eAAe,CAAA,CACjD,IAAI,CAAC8H,WAAW,CAACvH,IAAI,CAACyY,aAAa,CAAC/9C,MAAQE,CAAAA,MAAAA,CAAQ,CACpD,CAAA,CAAA,IAAI,CAAC2sC,WAAW,CAACvH,IAAI,CAACuY,gBAAgB,CAAC,CAAC,EAAA,CAAMhtG,OAAQwjK,CAAAA,KAAK,CAAC9qM,CAAAA,EAAKkL,CAAAA,CAAG,CAAC,EAAMo8B,CAAAA,OAAAA,CAAQwjK,KAAK,CAACpjM,CAAC,EAAI0X,CAAG,CAAA,CAAA,EACnG,CACF,CAAA,KAAO,CACL,MAAM6kB,EAAAA,CAAKoxF,IAAK7pF,CAAAA,YAAY,CAC5B,MAAMwkP,aAAgB,CAAA,IAAIxqR,aAAay+B,EAAGlI,CAAAA,IAAI,EAC9C,CAAA,CAAA,MAAM8uK,GAAKvjK,OAAQwjK,CAAAA,KAAK,CAAC9qM,CAAC,CAC1B,MAAMk5J,EAAAA,CAAK5xH,OAAQwjK,CAAAA,KAAK,CAACpjM,CAAC,CAC1BsoR,aAAa,CAAC,CAAA,CAAE,CAAG9kR,CAAAA,CAAI2/L,GAAK3/L,CAC5B8kR,CAAAA,aAAa,CAAC,EAAE,CAAG,CAAA,CAAI92H,EAAK95I,CAAAA,CAC5B4wQ,CAAAA,aAAa,CAAC,CAAA,CAAE,CAAG9kR,CAAI2/L,CAAAA,EAAAA,CAAK3/L,CAC5B8kR,CAAAA,aAAa,CAAC,CAAA,CAAE,CAAG5wQ,CAAAA,CAAI85I,GAAK95I,CAC5B4wQ,CAAAA,aAAa,CAAC,EAAG,CAAA,CAAG,CAAInlF,CAAAA,EAAAA,CAAK3/L,CAC7B8kR,CAAAA,aAAa,CAAC,EAAA,CAAG,CAAG,CAAI92H,CAAAA,EAAAA,CAAK95I,CAC7B4wQ,CAAAA,aAAa,CAAC,EAAA,CAAG,CAAG,CAAA,CAAInlF,EAAK3/L,CAAAA,CAC7B8kR,CAAAA,aAAa,CAAC,EAAG,CAAA,CAAG5wQ,CAAI85I,CAAAA,EAAAA,CAAK95I,EAC7B,IAAI6wQ,iBAAAA,CAAoB,CACxB,CAAA,IAAIC,mBAAqB,CACzB,CAAA,IAAI9iP,IAAO,CAAA,IAAI,CAACo9F,KAAK,CACrB,GAAI,IAAI,CAAChZ,OAAO,EAAI,IAAI,CAACA,OAAO,CAAC+3E,SAAS,CAAC,IAAI,CAAC6lF,YAAY,CAAC,EAAI,IAAI,CAAC59J,OAAO,CAACq4E,KAAK,CAAE,CACnF,MAAMY,KAAAA,CAAQ,IAAI,CAACj5E,OAAO,CAACq4E,KAAK,CAACa,MAAM,CAAC,IAAI,CAACl5E,OAAO,CAAC+3E,SAAS,CAAC,IAAI,CAAC6lF,YAAY,CAAC,CAAC,CAClF,GAAI3kF,KAAO,CAAA,CACTr9J,KAAOq9J,KAAMr9J,CAAAA,IAAI,CACjB6iP,iBAAAA,CAAoB,IAAI,CAACz+J,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,CAACnsB,KAAK,CACpD4+Q,kBAAqB,CAAA,IAAI,CAAC1+J,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,CAAClsB,OAClD,CACF,CACAy+Q,aAAa,CAAC,CAAA,CAAE,CAAI5iP,CAAAA,IAAKptC,CAAAA,CAAC,CAAGotC,IAAAA,CAAKvlC,CAAC,EAAIooR,iBACvCD,CAAAA,aAAa,CAAC,CAAE,CAAA,CAAG,EAAM5iP,IAAK1lC,CAAAA,CAAC,CAAGwoR,kBAClCF,CAAAA,aAAa,CAAC,EAAG,CAAA,CAAG,CAAC5iP,IAAAA,CAAKptC,CAAC,CAAGotC,IAAKvlC,CAAAA,CAAC,EAAIooR,iBACxCD,CAAAA,aAAa,CAAC,EAAA,CAAG,CAAG,CAAA,CAAM,CAAC5iP,KAAK1lC,CAAC,CAAG0lC,IAAKliC,CAAAA,CAAC,EAAIglR,kBAC9CF,CAAAA,aAAa,CAAC,EAAA,CAAG,CAAG5iP,IAAAA,CAAKptC,CAAC,CAAGiwR,iBAC7BD,CAAAA,aAAa,CAAC,EAAG,CAAA,CAAG,CAAM5iP,CAAAA,IAAAA,CAAK1lC,CAAC,CAAGwoR,kBACnCF,CAAAA,aAAa,CAAC,EAAA,CAAG,CAAG5iP,IAAAA,CAAKptC,CAAC,CAAGiwR,iBAC7BD,CAAAA,aAAa,CAAC,EAAG,CAAA,CAAG,CAAM,CAAC5iP,CAAAA,IAAAA,CAAK1lC,CAAC,CAAG0lC,KAAKliC,CAAAA,EAAKglR,kBAAAA,CAC9CjsP,GAAGlH,MAAM,EAAA,CACT,MAAM19B,GAAAA,CAAM,IAAIuI,IAAK,CAAA,CAAA,CAAIijM,EAAK3/L,CAAAA,CAAAA,CAAG,CAAIguJ,CAAAA,EAAAA,CAAK95I,CAAG,CAAA,CAAA,CAAA,CAC7C,MAAM9f,GAAM,CAAA,IAAIsI,IAAKsD,CAAAA,CAAAA,CAAI2/L,EAAK3/L,CAAAA,CAAAA,CAAGkU,CAAI85I,CAAAA,EAAAA,CAAK95I,EAAG,CAC7Ci2G,CAAAA,CAAAA,IAAAA,CAAK56G,IAAI,CAACL,SAAS,CAAC/a,GAAKC,CAAAA,GAAAA,CAAAA,CACzB,GAAI,IAAI,CAACgkI,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAACvH,IAAI,CAACyY,aAAa,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAC1C,IAAI,CAAClR,WAAW,CAACvH,IAAI,CAACuY,gBAAgB,CAAC,CAAG,CAAA,CAAA,CAAG,CAC7C,CAAA,CAAA,IAAI,CAAChR,WAAW,CAACiqJ,WAAW,CAAC,IAC/B,EAAA,CACF,CACA,IAAI,CAACC,UAAU,CAAG,MACpB,CACA2C,eAAgB,CACd,IAAIC,SAAY,CAAA,KAAA,CAChB,IAAI/6J,IAAO,CAAA,IACX,CAAA,IAAI,CAAC45J,kBAAkB,CAAG,CAAC,EAC3B,GAAI,IAAI,CAACz9J,OAAO,EAAI,IAAI,CAACA,OAAO,CAACq4E,KAAK,CAAE,CACtCx0E,IAAO,CAAA,IAAI,CAAC7D,OAAO,CAAC44E,MAAM,CAAC,IAAI,CAAC4yE,WAAW,CAAC,CAC5CoT,SAAY,CAAA,IAAI,CAAC5+J,OAAO,CAAC24E,UAAU,GAAKhhF,wBAA4B,EAAA,IAAI,CAACqI,OAAO,CAAC24E,UAAU,GAAK/gF,uBAChG,CAAA,MAAM+lK,SAAY,CAAA,IAAI,CAAC39J,OAAO,CAACq4E,KAAK,CAACa,MAAM,CAAC,IAAI,CAACl5E,OAAO,CAAC+3E,SAAS,CAAC,IAAI,CAAC6lF,YAAY,CAAC,CAAC,CACtF,GAAID,SAAW/hP,EAAAA,IAAAA,CAAKliC,CAAI,CAAA,CAAA,CAAG,CACzB,IAAI,CAAC+jR,kBAAkB,CAAGE,SAAU/hP,CAAAA,IAAI,CAACvlC,CAAC,CAAGsnR,SAAU/hP,CAAAA,IAAI,CAACliC,EAAC,CAEjE,CACA,IAAI,CAACmqH,IAAI,CAAG+6J,SAAY/6J,CAAAA,IAAAA,CAAO,IAAI,CAACq4J,YAAY,CAChD,IAAI,CAAC2C,WAAW,GAClB,CACAA,aAAc,CACZ,GAAI,IAAI,CAACh7J,IAAI,CAAE,CACb,GAAI,CAAC,IAAI,CAACjxB,QAAQ,CAACksL,iBAAiB,CAAE,CACpC,IAAI,CAACtC,WAAW,CAAC,IAAI,CAAC34J,IAAI,EAC5B,CAAO,KAAA,CACL,IAAI,CAACm4J,UAAU,CAAG,KACpB,CACF,CACF,CACAjyJ,WAAAA,CAAY9gH,IAAI,CAAE,CAChBA,IAAK3D,CAAAA,MAAM,CAAC5iB,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CACtBumB,CAAAA,CAAAA,IAAAA,CAAKtD,WAAW,CAACjjB,GAAG,CAAC,IAAI,CAAC07R,WAAW,CAAC5vR,CAAC,CAAG,EAAK,CAAA,IAAI,CAAC4vR,WAAW,CAACloR,CAAC,CAAG,EAAK,CAAA,IAAA,CAAA,CACzE+S,IAAKD,CAAAA,sBAAsB,CAACC,IAAAA,CAAM,IAAI,CAAC6oH,WAAW,CAACvH,IAAI,CAACzI,iBAAiB,EAAA,CAAA,CACzE,OAAO74G,IACT,CACA81Q,WAAc,EAAA,CACZ,IAAI,CAACnsL,QAAQ,CAACo/B,YAAY,EAAA,CAC1B,MAAMxF,WAAc,CAAA,IAAI,CAAC55B,QAAQ,CAAC+oL,cAAc,EAAA,CAChD,IAAI,CAACc,eAAe,CAACjwJ,WAAAA,CAAAA,CACrB,IAAI,CAACsF,WAAW,CAACi9H,OAAO,CAAC,CAAC,CAAC,IAAI,CAACvvF,KAAK,EACvC,CACAw/G,eAAAA,CAAgBlrE,KAAK,CAAE,CACrB,IAAI,CAAC92F,QAAQ,CAAG82F,KAAMpyK,CAAAA,SAAQ,CAEhCu9O,iBAAiBnrE,KAAK,CAAE,CACtB,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC86P,gBAAgB,CAAE,IAAI,CAAA,CAC1E,GAAI,IAAI,CAACrC,cAAc,GAAK9oE,KAAM3vL,CAAAA,EAAE,CAAE,CACpC,IAAI,CAAC+6P,kBAAkB,CAACprE,KAAAA,EAC1B,CACF,CACAorE,kBAAAA,CAAmBprE,KAAK,CAAE,CACxB,GAAI,CAAC,IAAI,CAACknE,OAAO,CAAChuR,OAAO,CAAE,OAC3B8mN,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACw9R,eAAe,CAAE,IAAI,EAC3ClrE,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAAC29R,iBAAiB,CAAE,IAAI,CAC/CrrE,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,SAAU,IAAI,CAAC49R,iBAAiB,CAAE,IAAI,CAC/C,CAAA,GAAItrE,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAACs9O,eAAe,CAAClrE,KAAAA,EACvB,CAAO,KAAA,CACL,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAC/B,EAAA,CACF,CACAurE,oBAAAA,CAAqBvrE,KAAK,CAAE,CAC1BA,KAAM1yN,CAAAA,GAAG,CAAC,MAAQ,CAAA,IAAI,CAAC49R,eAAe,CAAE,IAAI,CAAA,CAC5ClrE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC+9R,iBAAiB,CAAE,IAAI,CAChDrrE,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAA,CAAU,IAAI,CAACg+R,iBAAiB,CAAE,IAAI,EAClD,CACAD,iBAAoB,EAAA,EACpBC,iBAAAA,EAAoB,EACpBE,eAAAA,CAAgBxrE,KAAK,CAAE,CACrB,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAM3vL,CAAAA,EAAE,CAAC,CAAC,CAAE,IAAI,CAACm7P,eAAe,CAAE,IAAI,CACzE,CAAA,GAAI,IAAI,CAACC,aAAa,GAAKzrE,KAAM3vL,CAAAA,EAAE,CAAE,CACnC,IAAI,CAACq7P,iBAAiB,CAAC1rE,KACzB,EAAA,CACF,CACA0rE,iBAAAA,CAAkB1rE,KAAK,CAAE,CACvB,GAAI,CAAC,IAAI,CAACknE,OAAO,CAAChuR,OAAO,CAAE,OAC3B8mN,KAAMtyN,CAAAA,EAAE,CAAC,MAAQ,CAAA,IAAI,CAACi+R,cAAc,CAAE,IAAI,CAAA,CAC1C3rE,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACk+R,gBAAgB,CAAE,IAAI,CAC9C5rE,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAA,CAAU,IAAI,CAACm+R,gBAAgB,CAAE,IAAI,CAC9C,CAAA,GAAI7rE,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAAC+9O,cAAc,CAAC3rE,KAAAA,EACtB,MAAO,CACL,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAC/B,EAAA,CACF,CACA8rE,mBAAoB9rE,CAAAA,KAAK,CAAE,CACzBA,MAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACq+R,cAAc,CAAE,IAAI,CAAA,CAC3C3rE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACs+R,gBAAgB,CAAE,IAAI,EAC/C5rE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACu+R,gBAAgB,CAAE,IAAI,EACjD,CACAF,cAAe3rE,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC7nL,OAAO,CAAG6nL,KAAAA,CAAMpyK,SACvB,CACAg+O,gBAAiB5rE,CAAAA,KAAK,CAAE,EACxB6rE,gBAAAA,CAAiB7rE,KAAK,CAAE,EACxB+rE,mBAAAA,CAAoB/rE,KAAK,CAAE,CACzB,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,MAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC07P,mBAAmB,CAAE,IAAI,EAC7E,GAAI,IAAI,CAACC,YAAY,GAAKhsE,KAAAA,CAAM3vL,EAAE,CAAE,CAClC,IAAI,CAAC47P,gBAAgB,CAACjsE,OACxB,CACF,CACAisE,gBAAiBjsE,CAAAA,KAAK,CAAE,CACtB,GAAI,CAAC,IAAI,CAACknE,OAAO,CAAChuR,OAAO,CAAE,OAC3B8mN,KAAAA,CAAMtyN,EAAE,CAAC,OAAQ,IAAI,CAACw+R,kBAAkB,CAAE,IAAI,CAC9ClsE,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAACy+R,oBAAoB,CAAE,IAAI,CAAA,CAClDnsE,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC0+R,oBAAoB,CAAE,IAAI,CAAA,CAClD,GAAIpsE,KAAAA,CAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAACs+O,kBAAkB,CAAClsE,KAC1B,EAAA,CAAA,KAAO,CACL,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC/B,CACF,CACAqsE,mBAAmBrsE,KAAK,CAAE,CACxBA,KAAAA,CAAM1yN,GAAG,CAAC,MAAA,CAAQ,IAAI,CAAC4+R,kBAAkB,CAAE,IAAI,CAC/ClsE,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC6+R,oBAAoB,CAAE,IAAI,CAAA,CACnDnsE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC8+R,oBAAoB,CAAE,IAAI,CACnD,CAAA,GAAIpsE,KAAM3/M,CAAAA,IAAI,CAACisR,iBAAiB,CAAE,CAChC,IAAI,CAACvD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,KAAK,EAAE0yN,KAAM3/M,CAAAA,IAAI,CAACisR,iBAAiB,CAAC,CAAC,CAAE,IAAI,CAACC,mBAAmB,CAAE,IAAI,EACpG,CACF,CACAL,kBAAmBlsE,CAAAA,KAAK,CAAE,CACxB,GAAI,CAACA,OAAS,CAACA,KAAAA,CAAMpyK,QAAQ,CAAE,CAC7B,IAAI,CAACw+E,MAAM,CAAG,KAChB,CAAO,KAAA,CACL,GAAI,CAAC4zF,KAAMpyK,CAAAA,QAAQ,CAAC22J,KAAK,CAAE,CACzB,MAAMioF,YAAexsE,CAAAA,KAAAA,CAAM3/M,IAAI,CAACisR,iBAAiB,CACjD,GAAIE,aAAc,CAChB,MAAMpuD,MAAS,CAAA,IAAI,CAAC2qD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CACtCA,MAAO9wO,CAAAA,GAAG,CAAC,CAAC,KAAK,EAAEk/R,YAAAA,CAAa,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,CACjEnuD,CAAAA,MAAAA,CAAOtwO,IAAI,CAAC,CAAC,KAAK,EAAE0+R,aAAa,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,EACpE,CACF,CAAO,KAAA,CACL,IAAI,CAACngK,MAAM,CAAG4zF,KAAAA,CAAMpyK,SACtB,CACF,CACF,CACAu+O,oBAAqBnsE,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAACksE,kBAAkB,CAAClsE,KAAAA,EAC1B,CACAosE,oBAAAA,CAAqBpsE,KAAK,CAAE,EAC5BysE,WAAAA,CAAYrgK,MAAM,CAAE,CAClB,IAAI,CAACsgK,aAAa,CAAGtgK,MAAO1+H,CAAAA,EAAE,CAAC,YAAA,CAAc,IAAI,CAACi/R,qBAAqB,CAAE,IAAI,CAC7EvgK,CAAAA,MAAAA,CAAO1+H,EAAE,CAAC,mBAAA,CAAqB,IAAI,CAACk/R,kBAAkB,CAAE,IAAI,CAC5DxgK,CAAAA,MAAAA,CAAO1+H,EAAE,CAAC,WAAa,CAAA,IAAI,CAACm/R,qBAAqB,CAAE,IAAI,CAAA,CACvD,GAAIzgK,MAAOm4E,CAAAA,KAAK,CAAE,CAChBn4E,OAAOm4E,KAAK,CAAC72M,EAAE,CAAC,aAAe,CAAA,IAAI,CAACm/R,qBAAqB,CAAE,IAAI,EACjE,CACF,CACAC,cAAc1gK,MAAM,CAAE,CACpB,IAAI,CAACsgK,aAAa,EAAEp/R,GACpB,EAAA,CAAA,IAAI,CAACo/R,aAAa,CAAG,KACrBtgK,MAAO9+H,CAAAA,GAAG,CAAC,mBAAA,CAAqB,IAAI,CAACs/R,kBAAkB,CAAE,IAAI,EAC7DxgK,MAAO9+H,CAAAA,GAAG,CAAC,WAAA,CAAa,IAAI,CAACu/R,qBAAqB,CAAE,IAAI,CACxD,CAAA,GAAIzgK,MAAOm4E,CAAAA,KAAK,CAAE,CAChBn4E,MAAAA,CAAOm4E,KAAK,CAACj3M,GAAG,CAAC,aAAA,CAAe,IAAI,CAACu/R,qBAAqB,CAAE,IAAI,EAClE,CACF,CACAF,qBAAAA,EAAwB,CACtB,GAAI,IAAI,CAACzgK,OAAO,CAAE,CAChB,IAAI,CAAC49J,YAAY,CAAGpwR,IAAAA,CAAKI,KAAK,CAAC,IAAI,CAACgwR,YAAY,CAAE,CAAA,CAAG,IAAI,CAAC59J,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAG,CACvF,EAAA,CACA,IAAI,CAACukS,aAAa,GACpB,CACA+B,kBAAAA,EAAqB,CACnB,GAAI,IAAI,CAACxgK,MAAM,CAACy4E,UAAU,GAAKjhF,wBAAAA,EAA4B,IAAI,CAACghF,cAAc,GAAK,IAAA,CAAM,CACvF,IAAI,CAACimF,aAAa,GACpB,CACF,CACAgC,qBAAwB,EAAA,CACtB,GAAI,IAAI,CAACzgK,MAAM,EAAI,IAAI,CAACA,MAAM,CAACm4E,KAAK,EAAI,IAAI,CAACn4E,MAAM,CAACm4E,KAAK,CAACpsK,OAAO,CAAE,CACjE,IAAI,CAAC6lG,WAAW,CAACjuC,YAAY,CAAC,qBAAA,CAAuB,IAAI,CAACm8B,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,CAC/E,CAAA,IAAI,CAAC6lG,WAAW,CAACjuC,YAAY,CAAC,oBAAsB,CAAA,IAAI,CAACm8B,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,EAChF,CAAO,KAAA,CACL,IAAI,CAAC6lG,WAAW,CAAC9tC,eAAe,CAAC,qBAAA,CAAA,CACjC,IAAI,CAAC8tC,WAAW,CAAC9tC,eAAe,CAAC,oBAAA,EACnC,CACF,CACAq8L,mBAAoBQ,CAAAA,UAAU,CAAE,CAC9B,MAAMvV,WAAc,CAAA,IAAI,CAACwU,YAAY,CACrC,GAAIxU,WAAAA,YAAuBp8C,MAAO,CAChC,IAAI,CAAC8wD,kBAAkB,CAAC1U,WAAAA,EAC1B,CAAO,KAAA,CACL,IAAI,CAAC0U,kBAAkB,CAAC,IAAI,CAACnD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACovR,WAAAA,CAAAA,EACtD,CACF,CACA1lL,QAAW,EAAA,CACT,GAAI,IAAI,CAACg3L,cAAc,CAAE,CACvB,MAAM9oE,KAAAA,CAAQ,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC0gS,cAAc,CAAA,CAC7D,GAAI9oE,KAAAA,EAASA,KAAMpyK,CAAAA,QAAQ,GAAK,IAAI,CAAC0pF,SAAS,CAAE,CAC9C,IAAI,CAAC8zJ,kBAAkB,CAACprE,KAAAA,EAC1B,CACF,CACA,GAAI,IAAI,CAACyrE,aAAa,CAAE,CACtB,MAAMzrE,KAAAA,CAAQ,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACqjS,aAAa,CAAA,CAC5D,GAAIzrE,KAASA,EAAAA,KAAAA,CAAMpyK,QAAQ,GAAK,IAAI,CAACm4J,QAAQ,CAAE,CAC7C,IAAI,CAAC2lF,iBAAiB,CAAC1rE,OACzB,CACF,CACA,GAAI,IAAI,CAACgsE,YAAY,CAAE,CACrB,MAAMhsE,MAAQ,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC4jS,YAAY,EAC3D,GAAIhsE,KAAAA,EAASA,KAAMpyK,CAAAA,QAAQ,GAAK,IAAI,CAACs+E,OAAO,CAAE,CAC5C,IAAI,CAAC+/J,gBAAgB,CAACjsE,KACxB,EAAA,CACF,CACA,IAAI,CAAClhH,QAAQ,CAACuoL,gBAAgB,CAAC,IAAI,CAACrpJ,WAAW,CAACrS,KAAK,EACvD,CACA55B,SAAY,EAAA,CACV,IAAI,CAAC+M,QAAQ,CAAC4+B,qBAAqB,CAAC,IAAI,CAACM,WAAW,CAACrS,KAAK,EAC5D,CACAqhK,WAAYC,CAAAA,aAAa,CAAE,CACzB,IAAI,CAACjvJ,WAAW,CAAC/S,YAAY,CAACvlF,YAAY,CAAGunP,aAC7C,CAAA,IAAI,CAACjvJ,WAAW,CAAC/S,YAAY,CAACtlF,WAAW,CAAGsnP,aAAAA,CAC5C,IAAI5qP,GAAAA,CAAM,EACV,GAAI,IAAI,CAACy8D,QAAQ,CAACouL,QAAQ,CAAE,CAC1B7qP,IAAM,IAAI,CAACy8D,QAAQ,CAACouL,QAAQ,CAAClrP,OAAO,CAAC+7F,MAAM,CAACovJ,SAAQ,CAEtD,GAAI,IAAI,CAACnvJ,WAAW,CAACC,kBAAkB,CAAE,CACvC,MAAMmvJ,EAAAA,CAAK,IAAIlrP,iBAAAA,CAAkB,CAC/BG,GAAAA,CAAKA,IAAM,CACXvxC,CAAAA,IAAAA,CAAMgtB,UACN6kB,CAAAA,KAAAA,CAAOnc,mBACT,CACA,CAAA,CAAA,IAAI,CAACw3G,WAAW,CAACC,kBAAkB,CAACv4F,YAAY,CAAG0nP,EACnD,CAAA,IAAI,CAACpvJ,WAAW,CAACC,kBAAkB,CAACt4F,WAAW,CAAGynP,GACpD,CACF,CACAC,2BAA4B,CAC1BvG,YAAAA,CAAa9qR,MAAM,CAAC,IAAI,CAACm/I,MAAM,CAC/B,CAAA,IAAI,CAACmyI,aAAa,CAAC,EAAE,CAAGxG,YAAAA,CAAanhS,CACrC,CAAA,IAAI,CAAC2nS,aAAa,CAAC,CAAE,CAAA,CAAGxG,YAAa5sR,CAAAA,CAAC,CACtC,IAAI,CAACozR,aAAa,CAAC,CAAE,CAAA,CAAGxG,YAAa5wR,CAAAA,CAAC,CACtC,IAAI,CAAC8nI,WAAW,CAACjuC,YAAY,CAAC,mBAAqB,CAAA,IAAI,CAACu9L,aAAa,EACvE,CACA,IAAIhjP,MAAMt8C,KAAK,CAAE,CACf,KAAM,CAAErI,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAE,CAAGlI,KAAAA,CACpB,GAAI,IAAI,CAACmtJ,MAAM,CAACx1J,CAAC,GAAKA,CAAAA,EAAK,IAAI,CAACw1J,MAAM,CAACjhJ,CAAC,GAAKA,CAAAA,EAAK,IAAI,CAACihJ,MAAM,CAACjlJ,CAAC,GAAKA,CAAAA,CAAG,CACrE,IAAI,CAACilJ,MAAM,CAACx1J,CAAC,CAAGA,CAChB,CAAA,IAAI,CAACw1J,MAAM,CAACjhJ,CAAC,CAAGA,CAChB,CAAA,IAAI,CAACihJ,MAAM,CAACjlJ,CAAC,CAAGA,CAChB,CAAA,IAAI,CAACm3R,yBAAyB,GAChC,CACA,GAAI,IAAI,CAACvuL,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,WAAA,CAAa,IAAI,CAAC4rJ,MAAM,EAC7C,CACF,CACA,IAAI7wG,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC6wG,MACd,CACA,IAAI2hE,QAAQ9uN,KAAK,CAAE,CACjB,GAAIA,QAAU,IAAI,CAACmtJ,MAAM,CAACllJ,CAAC,CAAE,CAC3B,IAAI,CAACklJ,MAAM,CAACllJ,CAAC,CAAGjI,MAChB,IAAI,CAACgwI,WAAW,CAACjuC,YAAY,CAAC,kBAAA,CAAoB/hG,KACpD,EAAA,CACA,GAAI,IAAI,CAAC8wG,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,aAAevB,CAAAA,KAAAA,EACpC,CACF,CACA,IAAI8uN,OAAU,EAAA,CACZ,OAAO,IAAI,CAAC3hE,MAAM,CAACllJ,CACrB,CACA,IAAI6xC,KAAK95C,KAAK,CAAE,CACd,IAAI0M,EAAG0H,CAAGG,CAAAA,CAAAA,CAAGqD,CACb,CAAA,GAAI5X,KAAiBwa,YAAAA,IAAAA,CAAM,CACzB9N,CAAAA,CAAI1M,MAAM0M,CAAC,CACX0H,CAAIpU,CAAAA,KAAAA,CAAMoU,CAAC,CACXG,CAAAA,CAAIvU,KAAMuU,CAAAA,CAAC,CACXqD,CAAI5X,CAAAA,KAAAA,CAAM4X,EACZ,CAAO,KAAA,CACLlL,CAAI1M,CAAAA,KAAK,CAAC,CAAE,CAAA,CACZoU,CAAIpU,CAAAA,KAAK,CAAC,CAAA,CAAE,CACZuU,CAAAA,CAAIvU,KAAK,CAAC,CAAA,CAAE,CACZ4X,CAAAA,CAAI5X,KAAK,CAAC,CAAE,EACd,CACA,GAAI0M,CAAAA,GAAM,IAAI,CAACwqI,KAAK,CAACxqI,CAAC,EAAI0H,CAAAA,GAAM,IAAI,CAAC8iI,KAAK,CAAC9iI,CAAC,EAAIG,CAAAA,GAAM,IAAI,CAAC2iI,KAAK,CAAC3iI,CAAC,EAAIqD,CAAAA,GAAM,IAAI,CAACs/H,KAAK,CAACt/H,CAAC,CAAE,CACxF,MACF,CACA,IAAI,CAACs/H,KAAK,CAACt2I,GAAG,CAAC8L,CAAG0H,CAAAA,CAAAA,CAAGG,CAAGqD,CAAAA,CAAAA,CAAAA,CACxB,GAAI,IAAI,CAACo4H,WAAW,CAACjO,IAAI,CAAE,CACzB,GAAI,CAAC,IAAI,CAACjxB,QAAQ,CAACksL,iBAAiB,CAAE,CACpC,IAAI,CAACtC,WAAW,CAAC,IAAI,CAAC1qJ,WAAW,CAACjO,IAAI,EACxC,CAAO,KAAA,CACL,IAAI,CAACm4J,UAAU,CAAG,KACpB,CACF,CACF,CACA,IAAIpgP,MAAO,CACT,OAAO,IAAI,CAACo9F,KAAK,CAEnBqoJ,0BAA6B,EAAA,CAC3B,GAAI,IAAI,CAACzE,cAAc,CAAE,CACvB,MAAM1qD,MAAS,CAAA,IAAI,CAAC2qD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CACtCA,MAAAA,CAAO9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAACw7R,cAAc,CAAC,CAAC,CAAE,IAAI,CAACqC,gBAAgB,CAAE,IAAI,EACpE,MAAMnrE,KAAAA,CAAQoe,MAAOh2O,CAAAA,GAAG,CAAC,IAAI,CAAC0gS,cAAc,EAC5C,GAAI9oE,KAAAA,CAAO,CACTA,KAAAA,CAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAAC49R,eAAe,CAAE,IAAI,CAAA,CAC5ClrE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC+9R,iBAAiB,CAAE,IAAI,EAChDrrE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACg+R,iBAAiB,CAAE,IAAI,EAClD,CACF,CACF,CACA,IAAIpiK,QAASl7H,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAACspI,SAAS,GAAKtpI,MAAO,OAC9B,GAAI,CAACA,KAAAA,CAAO,CACV,MAAM0qI,WAAc,CAAA,IAAI,CAAC55B,QAAQ,CAAC+oL,cAAc,EAAA,CAChD,GAAI,IAAI,CAAC5tP,IAAI,CAAE,CACbjsC,KAAQ0qI,CAAAA,WAAAA,CAAc,IAAI,CAACqwJ,OAAO,CAACyE,mCAAmC,CAAG,IAAI,CAACzE,OAAO,CAAC0E,yBAAwB,CACzG,KAAA,CACLz/R,KAAQ0qI,CAAAA,WAAAA,CAAc,IAAI,CAACqwJ,OAAO,CAAC2E,+BAA+B,CAAG,IAAI,CAAC3E,OAAO,CAAC4E,qBACpF,CACF,CACA,IAAI,CAACr2J,SAAS,CAAGtpI,KAAAA,CACjB,GAAI,IAAI,CAAC86R,cAAc,CAAE,CACvB,MAAM9oE,KAAQ,CAAA,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC0gS,cAAc,CAAA,CAC7D,GAAI,CAAC9oE,KAASA,EAAAA,KAAAA,CAAMpyK,QAAQ,GAAK5/C,MAAO,CACtC,IAAI,CAACu/R,0BAA0B,EAC/B,CAAA,IAAI,CAACzE,cAAc,CAAG,KACxB,CACF,CACA,GAAI96R,KAAO,CAAA,CACT,IAAI,CAACgwI,WAAW,CAACipJ,WAAW,CAACj5R,KAAAA,CAAAA,CAC7B,GAAI,IAAI,CAAC66R,gBAAgB,GAAI,CAC3B,IAAI,CAAC7qJ,WAAW,CAAC9tC,eAAe,CAAC,kBAAA,CAAA,CACjC,IAAI,CAAC8tC,WAAW,CAAC9tC,eAAe,CAAC,mBACnC,EAAA,CAAA,KAAO,CACL,IAAI,CAACm9L,yBAAyB,EAAA,CAC9B,IAAI,CAACrvJ,WAAW,CAACjuC,YAAY,CAAC,mBAAoB,IAAI,CAACorD,MAAM,CAACllJ,CAAC,EACjE,CACF,CACF,CACA,IAAIizH,QAAW,EAAA,CACb,OAAO,IAAI,CAACoO,SAAS,CAEvB,IAAI+oG,aAAcryO,CAAAA,KAAK,CAAE,CACvB,MAAMowO,MAAS,CAAA,IAAI,CAAC2qD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CACtC,IAAI6wC,GAAAA,CAAMjhR,KACV,CAAA,GAAIA,iBAAiBotO,KAAO,CAAA,CAC1B6zC,GAAMjhR,CAAAA,KAAAA,CAAMqiC,GAAE,CAEhB,GAAI,IAAI,CAACy4P,cAAc,GAAK7Z,GAAK,CAAA,CAC/B,IAAI,CAACse,0BAA0B,EAC/B,CAAA,IAAI,CAACzE,cAAc,CAAG7Z,IACtB,GAAI,IAAI,CAAC6Z,cAAc,CAAE,CACvB,MAAM9oE,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAAC0gS,cAAc,CAC5C,CAAA,GAAI,CAAC9oE,KAAAA,CAAO,CACV,IAAI,CAAC8oE,cAAc,CAAG,IACtB,CAAA,IAAI,CAAC5/J,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC4/J,cAAc,CAAG7Z,GACtB7wC,CAAAA,MAAAA,CAAO1wO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAACo7R,cAAc,CAAC,CAAC,CAAE,IAAI,CAACqC,gBAAgB,CAAE,IAAI,EACrE,CAAO,KAAA,CACL,IAAI,CAACC,kBAAkB,CAACprE,OAC1B,CACF,CAAA,KAAO,CACL,IAAI,CAAC8oE,cAAc,CAAG,IACtB,CAAA,IAAI,CAAC5/J,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC4/J,cAAc,CAAG7Z,IACxB,CACF,CACF,CACA,IAAI5uC,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACyoD,cAAc,CAE5B,IAAI3wP,OAAQnqC,CAAAA,KAAK,CAAE,CACjB,GAAI,IAAI,CAAC+3M,QAAQ,GAAK/3M,KAAO,CAAA,OAC7B,GAAI,IAAI,CAACy9R,aAAa,CAAE,CACtB,MAAMlrB,aAAe,IAAI,CAACwoB,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACqjS,aAAa,EACnE,GAAIlrB,YAAAA,EAAgBA,YAAa3yN,CAAAA,QAAQ,GAAK5/C,KAAO,CAAA,CACnD,IAAI,CAACuyQ,YAAY,CAAG,KACtB,CACF,CACA,IAAI,CAACx6D,QAAQ,CAAG/3M,MAChB,GAAIA,KAAAA,CAAO,CACT,GAAI,IAAI,CAACg+R,YAAY,CAAE,CACrB,IAAI,CAACxU,WAAW,CAAG,KACrB,CACA,IAAI,CAACx5I,WAAW,CAACjuC,YAAY,CAAC,qBAAuB,CAAA,IAAI,CAACg2G,QAAQ,CAAA,CAClE,IAAI,CAAC/nE,WAAW,CAACjuC,YAAY,CAAC,oBAAA,CAAsB,IAAI,CAACg2G,QAAQ,CAAA,CACjE,IAAI,CAACsnF,yBAAyB,EAC9B,CAAA,IAAI,CAACrvJ,WAAW,CAACjuC,YAAY,CAAC,mBAAoB,IAAI,CAACorD,MAAM,CAACllJ,CAAC,CAAA,CAC/D,MAAM23R,cAAAA,CAAiB,IAAI,CAAC7nF,QAAQ,CAAC/5L,KAAK,CAAG,IAAI,CAAC+5L,QAAQ,CAAC95L,MAAM,CACjE,GAAI2hR,cAAAA,GAAmB,IAAI,CAACjE,kBAAkB,CAAE,CAC9C,IAAI,CAACA,kBAAkB,CAAGiE,eAC1B,GAAI,IAAI,CAAC9uL,QAAQ,CAAC4qL,OAAO,GAAK7W,eAAiB,CAAA,CAC7C,IAAI,CAACkY,WAAW,GAClB,CACF,CACF,CAAA,KAAO,CACL,IAAI,CAAC/sJ,WAAW,CAAC9tC,eAAe,CAAC,uBACjC,IAAI,CAAC8tC,WAAW,CAAC9tC,eAAe,CAAC,oBACjC,CAAA,CAAA,IAAI,CAACy5L,kBAAkB,CAAG,CAAC,EAC3B,GAAI,IAAI,CAAC7qL,QAAQ,CAAC4qL,OAAO,GAAK7W,eAAiB,CAAA,CAC7C,IAAI,CAACkY,WAAW,GAClB,CACF,CACF,CACA,IAAI5yP,OAAAA,EAAU,CACZ,OAAO,IAAI,CAAC4tK,QAAQ,CAEtB,IAAIw6D,YAAAA,CAAavyQ,KAAK,CAAE,CACtB,MAAMowO,OAAS,IAAI,CAAC2qD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CACtC,IAAI6wC,IAAMjhR,KACV,CAAA,GAAIA,KAAiBotO,YAAAA,KAAAA,CAAO,CAC1B6zC,GAAAA,CAAMjhR,KAAMqiC,CAAAA,GAAE,CAEhB,GAAI,IAAI,CAACo7P,aAAa,GAAKxc,GAAAA,CAAK,CAC9B,GAAI,IAAI,CAACwc,aAAa,CAAE,CACtBrtD,MAAO9wO,CAAAA,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAACm+R,aAAa,CAAC,CAAC,CAAE,IAAI,CAACD,eAAe,CAAE,IAAI,CAClE,CAAA,MAAMqC,KAAQzvD,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAACqjS,aAAa,CAC3C,CAAA,GAAIoC,KAAO,CAAA,CACTA,KAAMvgS,CAAAA,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACq+R,cAAc,CAAE,IAAI,CAC3CkC,CAAAA,KAAAA,CAAMvgS,GAAG,CAAC,QAAA,CAAU,IAAI,CAACs+R,gBAAgB,CAAE,IAAI,CAC/CiC,CAAAA,KAAAA,CAAMvgS,GAAG,CAAC,QAAA,CAAU,IAAI,CAACu+R,gBAAgB,CAAE,IAAI,EACjD,CACF,CACA,IAAI,CAACJ,aAAa,CAAGxc,GACrB,CAAA,GAAI,IAAI,CAACwc,aAAa,CAAE,CACtB,MAAMzrE,KAAAA,CAAQoe,MAAOh2O,CAAAA,GAAG,CAAC,IAAI,CAACqjS,aAAa,CAAA,CAC3C,GAAI,CAACzrE,MAAO,CACV,IAAI,CAAC7nL,OAAO,CAAG,IACfimM,CAAAA,MAAAA,CAAO1wO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC+9R,aAAa,CAAC,CAAC,CAAE,IAAI,CAACD,eAAe,CAAE,IAAI,EACnE,CAAO,KAAA,CACL,IAAI,CAACE,iBAAiB,CAAC1rE,KACzB,EAAA,CACF,MAAO,CACL,IAAI,CAAC7nL,OAAO,CAAG,KACjB,CACF,CACF,CACA,IAAIooO,YAAe,EAAA,CACjB,OAAO,IAAI,CAACkrB,aAAa,CAE3B,IAAIjU,WAAYxpR,CAAAA,KAAK,CAAE,CACrB,MAAMowO,MAAS,CAAA,IAAI,CAAC2qD,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CACtC,IAAI6wC,GAAAA,CAAMjhR,KACV,CAAA,GAAIA,iBAAiBotO,KAAO,CAAA,CAC1B6zC,GAAMjhR,CAAAA,KAAAA,CAAMqiC,GAAE,CAEhB,GAAI,IAAI,CAAC27P,YAAY,GAAK/c,GAAK,CAAA,CAC7B,GAAI,IAAI,CAAC+c,YAAY,CAAE,CACrB5tD,MAAAA,CAAO9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC0+R,YAAY,CAAC,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,CACrE,CAAA,MAAM8B,KAAQzvD,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAAC4jS,YAAY,EAC1C,GAAI6B,KAAAA,CAAO,CACT,IAAI,CAACxB,kBAAkB,CAACwB,KAAAA,EAC1B,CACF,CACA,IAAI,CAAC7B,YAAY,CAAG/c,GACpB,CAAA,GAAI,IAAI,CAAC+c,YAAY,CAAE,CACrB,MAAMhsE,KAAAA,CAAQoe,MAAOh2O,CAAAA,GAAG,CAAC,IAAI,CAAC4jS,YAAY,CAAA,CAC1C,GAAI,CAAChsE,MAAO,CACV,IAAI,CAAC5zF,MAAM,CAAG,IACdgyG,CAAAA,MAAAA,CAAO1wO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAACs+R,YAAY,CAAC,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,EACtE,CAAO,KAAA,CACL,IAAI,CAACE,gBAAgB,CAACjsE,KACxB,EAAA,CACF,MAAO,CACL,IAAI,CAAC5zF,MAAM,CAAG,KAChB,CACF,CACA,GAAI,IAAI,CAACttB,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,iBAAA,CAAmB0/Q,GACxC,EAAA,CACF,CACA,IAAIuI,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACwU,YAAY,CAE1B,IAAI5/J,MAAAA,CAAOp+H,KAAK,CAAE,CAChB,GAAI,IAAI,CAACk+H,OAAO,GAAKl+H,KAAO,CAAA,OAC5B,GAAI,IAAI,CAACk+H,OAAO,CAAE,CAChB,IAAI,CAAC4gK,aAAa,CAAC,IAAI,CAAC5gK,OAAO,EACjC,CACA,GAAI,IAAI,CAAC8/J,YAAY,CAAE,CACrB,MAAMxU,WAAAA,CAAc,IAAI,CAACuR,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC4jS,YAAY,CAAA,CACjE,GAAIxU,WAAAA,EAAeA,YAAY5pO,QAAQ,GAAK5/C,KAAO,CAAA,CACjD,IAAI,CAACwpR,WAAW,CAAG,KACrB,CACF,CACA,IAAI,CAACtrJ,OAAO,CAAGl+H,KAAAA,CACf,GAAI,IAAI,CAACk+H,OAAO,CAAE,CAChB,IAAI,CAACugK,WAAW,CAAC,IAAI,CAACvgK,OAAO,CAAA,CAC7B,GAAI,IAAI,CAACu/J,aAAa,CAAE,CACtB,IAAI,CAAClrB,YAAY,CAAG,KACtB,CACF,CACA,GAAI,IAAI,CAACr0I,OAAO,EAAI,IAAI,CAACA,OAAO,CAACq4E,KAAK,EAAI,IAAI,CAACr4E,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,CAAE,CACpE,IAAI,CAAC6lG,WAAW,CAACjuC,YAAY,CAAC,qBAAA,CAAuB,IAAI,CAACm8B,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,CAAA,CAC/E,IAAI,CAAC6lG,WAAW,CAACjuC,YAAY,CAAC,qBAAsB,IAAI,CAACm8B,OAAO,CAACq4E,KAAK,CAACpsK,OAAO,EAChF,CAAA,KAAO,CACL,IAAI,CAAC6lG,WAAW,CAAC9tC,eAAe,CAAC,qBACjC,CAAA,CAAA,IAAI,CAAC8tC,WAAW,CAAC9tC,eAAe,CAAC,sBACnC,CACA,GAAI,IAAI,CAACg8B,OAAO,CAAE,CAChB,IAAI,CAAC49J,YAAY,CAAGpwR,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAACgwR,YAAY,CAAE,CAAG,CAAA,IAAI,CAAC59J,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAG,CACvF,EAAA,CACA,IAAI,CAACukS,aAAa,GACpB,CACA,IAAIz+J,MAAAA,EAAS,CACX,OAAO,IAAI,CAACF,OAAO,CAErB,IAAIwrJ,WAAY1pR,CAAAA,KAAK,CAAE,CACrB,MAAMgzN,QAAAA,CAAW,IAAI,CAAC8oE,YAAY,CAClC,GAAI,IAAI,CAAC59J,OAAO,CAAE,CAChB,IAAI,CAAC49J,YAAY,CAAGpwR,IAAAA,CAAKI,KAAK,CAAC9L,KAAO,CAAA,CAAA,CAAG,IAAI,CAACk+H,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAG,CAC3E,EAAA,CAAA,KAAO,CACL,IAAI,CAACwjS,YAAY,CAAG97R,MACtB,CACA,GAAI,IAAI,CAAC87R,YAAY,GAAK9oE,QAAU,CAAA,CAClC,IAAI,CAAC6pE,aAAa,GACpB,CACA,GAAI,IAAI,CAAC/rL,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,iBAAmBvB,CAAAA,KAAAA,EACxC,CACF,CACA,IAAI0pR,WAAc,EAAA,CAChB,OAAO,IAAI,CAACoS,YACd,CACA,IAAI/5J,IAAK/hI,CAAAA,KAAK,CAAE,CACd,IAAI,CAACgwI,WAAW,CAACmpJ,OAAO,CAACn5R,KACzB,CAAA,CAAA,GAAI,IAAI,CAACo6R,YAAY,GAAKp6R,KAAAA,CAAO,CAC/B,IAAI,CAACgwI,WAAW,CAACiqJ,WAAW,CAAC,IAC/B,EAAA,CAAA,KAAO,CACL,IAAI,CAACjqJ,WAAW,CAACiqJ,WAAW,CAAC,IAAI,CAAC/xJ,eAAe,EACnD,CACF,CACA,IAAInG,MAAO,CACT,OAAO,IAAI,CAACiO,WAAW,CAACjO,IAC1B,CACA,IAAI91F,IAAAA,CAAKjsC,KAAK,CAAE,CACd,GAAI,IAAI,CAAC09K,KAAK,GAAK19K,KAAAA,CAAO,CACxB,IAAI,CAAC09K,KAAK,CAAG19K,KACb,CAAA,IAAI,CAACi9R,WAAW,GAClB,CACF,CACA,IAAIhxP,IAAAA,EAAO,CACT,OAAO,IAAI,CAACyxI,KAAK,CAEnB,IAAIi5B,aAAc32M,CAAAA,KAAK,CAAE,CACvB,GAAI,IAAI,CAAC42M,cAAc,GAAK52M,KAAO,CAAA,OACnC,IAAI,CAAC42M,cAAc,CAAG52M,KACtB,CAAA,GAAI,IAAI,CAACk+H,OAAO,GAAK,IAAI,CAACA,OAAO,CAAC24E,UAAU,GAAKhhF,wBAAAA,EAA4B,IAAI,CAACqI,OAAO,CAAC24E,UAAU,GAAK/gF,uBAAsB,EAAI,CACjI,IAAI,CAAC+mK,aAAa,GACpB,CACF,CACA,IAAIlmF,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIzvL,IAAAA,EAAO,CACT,GAAI,IAAI,CAAC6oH,WAAW,CAAC/S,YAAY,CAAE,CACjC,OAAO,IAAI,CAAC+S,WAAW,CAAC/S,YAAY,CAAC91G,IAAI,CAE3C,OAAO,IACT,CA1yBA/mB,WAAY4zC,CAAAA,OAAO,CAAC,CAClB,IAAI,CAAC0qP,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC5tL,QAAQ,CAAG98D,OAChB,CAAA,IAAI,CAACklP,OAAO,CAAGllP,OAAAA,CAAQirF,MAAM,CAC7B,IAAI,CAAC87J,OAAO,CAAG/mP,OAAQogM,CAAAA,MAAM,CAC7B,IAAI,CAACqpD,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC1lF,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC+iF,cAAc,CAAG,IACtB,CAAA,IAAI,CAACxxJ,SAAS,CAAG,IACjB,CAAA,IAAI,CAAC00J,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC9/J,OAAO,CAAG,IACf,CAAA,IAAI,CAAC49J,YAAY,CAAG,CACpB,CAAA,IAAI,CAACllF,cAAc,CAAG,IACtB,CAAA,IAAI,CAAC+kF,kBAAkB,CAAG,CAAC,CAC3B,CAAA,IAAI,CAACzkJ,KAAK,CAAG,IAAI18H,IAAK,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,EAC/B,CAAA,IAAI,CAACkjK,KAAK,CAAG,KACb,CAAA,IAAI,CAACyhH,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAC7C,WAAW,CAAG,IAAIpiR,IACvB,CAAA,IAAI,CAACuiR,kBAAkB,CAAG,IAAIvqR,YAAa,CAAA,CAAA,CAC3C,CAAA,IAAI,CAAC+pR,YAAY,CAAG,IAAIzhR,IACxB,CAAA,IAAI,CAAC+hR,mBAAmB,CAAG,IAAIrqR,YAAa,CAAA,CAAA,CAC5C,CAAA,IAAI,CAACgqR,UAAU,CAAG,IAAI1hR,IACtB,CAAA,IAAI,CAACgiR,iBAAiB,CAAG,IAAItqR,YAAAA,CAAa,EAC1C,CAAA,IAAI,CAACkoR,YAAY,CAAG,IAAI,CAACkB,WAAW,EACpC,CAAA,IAAI,CAACtrJ,WAAW,CAAG,IAAIgpJ,eAAAA,CAAgB,IAAI,CAACE,OAAO,CAAE,IAAI,CAACkB,YAAY,CAAE,IAAI,CAAC9wJ,SAAS,CACtF,CAAA,IAAI,CAAC6jB,MAAM,CAAG,IAAIz/I,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CACjC,CAAA,IAAI,CAAC4xR,aAAa,CAAG,IAAIptR,aAAa,CACpC,CAAA,CACA,CACA,CAAA,CAAA,CACD,EACD,IAAI,CAACmtR,yBAAyB,EAAA,CAC9B,IAAI,CAACrvJ,WAAW,CAACjuC,YAAY,CAAC,kBAAA,CAAoB,CAClD,CAAA,CAAA,IAAI,CAACmmC,eAAe,CAAG,IAAI,CAACD,WAAW,CAACx/H,IAAI,CAAC,IAAI,CACjD,CAAA,IAAI,CAAC8xR,eAAe,CAAC,IAAI,CAACzpL,QAAQ,CAAC8pL,MAAM,CAAA,CACzC,IAAI,CAAC9pL,QAAQ,CAACpxG,EAAE,CAAC,QAAA,CAAU,IAAI,CAAC26R,4BAA4B,CAAE,IAAI,CAClE,CAAA,IAAI,CAACvpL,QAAQ,CAACpxG,EAAE,CAAC,WAAa,CAAA,IAAI,CAAC26R,4BAA4B,CAAE,IAAI,CAAA,CACrE,IAAI,CAACvpL,QAAQ,CAACpxG,EAAE,CAAC,wBAAA,CAA0B,IAAI,CAAC46R,oBAAoB,CAAE,IAAI,CAC1E,CAAA,IAAI,CAACxpL,QAAQ,CAACpxG,EAAE,CAAC,aAAc,IAAI,CAAC66R,eAAe,CAAE,IAAI,CAAA,CACzD,IAAI,CAACzpL,QAAQ,CAACpxG,EAAE,CAAC,eAAA,CAAiB,IAAI,CAAC86R,kBAAkB,CAAE,IAAI,EAC/D,IAAI,CAAC1pL,QAAQ,CAACpxG,EAAE,CAAC,uBAAyB,CAAA,IAAI,CAAC+6R,mBAAmB,CAAE,IAAI,EAC1E,CAkwBF,CAEA,MAAMqF,cAAuBx/R,SAAAA,YAAAA,CAU3B,IAAIy/R,YAAa//R,CAAAA,KAAK,CAAE,CACtB,MAAMqiC,EAAAA,CAAKriC,KAAiBotO,YAAAA,KAAAA,CAAQptO,MAAMqiC,EAAE,CAAGriC,KAC/C,CAAA,GAAI,IAAI,CAACggS,aAAa,GAAK39P,GAAI,OAC/B,GAAI,IAAI,CAAC29P,aAAa,CAAE,CACtB,IAAI,CAACC,mBAAmB,GAC1B,CACA,IAAI,CAACD,aAAa,CAAG39P,EACrB,CAAA,GAAI,IAAI,CAAC29P,aAAa,CAAE,CACtB,IAAI,CAACE,iBAAiB,GACxB,CACA,IAAI,CAACC,YAAY,CAAC,IAAI,CAAC3yD,IAAI,CAAC4sB,IAAI,CAACvvB,MAAM,EACzC,CACA,IAAIk1D,YAAe,EAAA,CACjB,OAAO,IAAI,CAACC,aACd,CACA,IAAII,eAAepgS,KAAK,CAAE,CACxB,MAAMqiC,GAAKriC,KAAiBotO,YAAAA,KAAAA,CAAQptO,KAAMqiC,CAAAA,EAAE,CAAGriC,KAAAA,CAC/C,GAAI,IAAI,CAACqgS,eAAe,GAAKh+P,EAAI,CAAA,CAC/B,MACF,CACA,GAAI,IAAI,CAACg+P,eAAe,CAAE,CACxB,IAAI,CAAC7yD,IAAI,CAAC4C,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC+gS,eAAe,CAAC,CAAC,CAAE,IAAI,CAACC,oBAAoB,CAAE,IAAI,CACnF,CAAA,IAAI,CAACC,qBAAqB,GAC5B,CACA,IAAI,CAACF,eAAe,CAAGh+P,EACvB,CAAA,GAAI,IAAI,CAACg+P,eAAe,CAAE,CACxB,MAAMruE,KAAAA,CAAQ,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACimS,eAAe,CAAA,CACvD,GAAI,CAACruE,KAAAA,CAAO,CACV,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACtwO,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAACugS,eAAe,CAAC,CAAC,CAAE,IAAI,CAACC,oBAAoB,CAAE,IAAI,EACtF,MAAO,CACL,IAAI,CAACE,mBAAmB,GAC1B,CACF,CACF,CACA,IAAIJ,gBAAiB,CACnB,OAAO,IAAI,CAACC,eACd,CACA,IAAII,SAASzgS,KAAK,CAAE,CAClB,GAAI,IAAI,CAAC0gS,SAAS,GAAK1gS,KAAAA,CAAO,OAC9B,IAAI,CAAC0gS,SAAS,CAAG1gS,KAAAA,CACjB,GAAI,IAAI,CAAC0gS,SAAS,EAAI,IAAI,CAACL,eAAe,CAAE,CAC1C,IAAI,CAACE,qBAAqB,EAC1B,CAAA,IAAI,CAACC,mBAAmB,GAC1B,CACF,CACA,IAAIC,UAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,mBAAAA,CAAoB3gS,KAAK,CAAE,CAC7B,GAAI,IAAI,CAAC4gS,oBAAoB,GAAK5gS,KAAAA,CAAO,OACzC,IAAI,CAAC4gS,oBAAoB,CAAG5gS,KAC5B,CAAA,IAAI,CAACmgS,YAAY,CAAC,IAAI,CAAC3yD,IAAI,CAAC4sB,IAAI,CAACvvB,MAAM,EACzC,CACA,IAAI81D,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACC,oBAAoB,CAElCV,mBAAoB,CAClB,MAAMluE,KAAQ,CAAA,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC4lS,aAAa,CACrD,CAAA,GAAI,CAAChuE,KAAAA,CAAO,CACV,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACtwO,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAACkgS,aAAa,CAAC,CAAC,CAAE,IAAI,CAACa,kBAAkB,CAAE,IAAI,EAClF,CAAA,KAAO,CACL,IAAI,CAACA,kBAAkB,CAAC7uE,KAC1B,EAAA,CACF,CACAiuE,mBAAsB,EAAA,CACpB,GAAI,CAAC,IAAI,CAACD,aAAa,CAAE,OACzB,IAAI,CAACxyD,IAAI,CAAC4C,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC0gS,aAAa,CAAC,CAAC,CAAE,IAAI,CAACa,kBAAkB,CAAE,IAAI,CAAA,CAC/E,MAAM7uE,KAAQ,CAAA,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC4lS,aAAa,CACrD,CAAA,GAAI,CAAChuE,KAAAA,CAAO,OACZA,KAAAA,CAAM1yN,GAAG,CAAC,eAAA,CAAiB,IAAI,CAACwhS,YAAY,CAAE,IAAI,CAClD9uE,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,kBAAA,CAAoB,IAAI,CAACyhS,eAAe,CAAE,IAAI,CAAA,CACxD/uE,MAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC0hS,qBAAqB,CAAE,IAAI,EACtD,CACAH,kBAAmB7uE,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAACguE,aAAa,GAAKhuE,KAAM3vL,CAAAA,EAAE,CAAE,OACrC2vL,MAAMtyN,EAAE,CAAC,eAAiB,CAAA,IAAI,CAACohS,YAAY,CAAE,IAAI,CAAA,CACjD9uE,KAAMtyN,CAAAA,EAAE,CAAC,kBAAA,CAAoB,IAAI,CAACqhS,eAAe,CAAE,IAAI,EACvD/uE,KAAMlyN,CAAAA,IAAI,CAAC,QAAA,CAAU,IAAI,CAACkhS,qBAAqB,CAAE,IAAI,EACvD,CACAA,qBAAsBhvE,CAAAA,KAAK,CAAE,CAC3B,GAAI,IAAI,CAACguE,aAAa,GAAKhuE,KAAM3vL,CAAAA,EAAE,CAAE,OACrC2vL,KAAAA,CAAM1yN,GAAG,CAAC,eAAiB,CAAA,IAAI,CAACwhS,YAAY,CAAE,IAAI,CAAA,CAClD9uE,KAAM1yN,CAAAA,GAAG,CAAC,kBAAoB,CAAA,IAAI,CAACwhS,YAAY,CAAE,IAAI,CAAA,CACrD,IAAI,CAACtzD,IAAI,CAAC4C,MAAM,CAACtwO,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAACkgS,aAAa,CAAC,CAAC,CAAE,IAAI,CAACa,kBAAkB,CAAE,IAAI,EAClF,CACAL,mBAAAA,EAAsB,CACpB,GAAI,CAAC,IAAI,CAACE,SAAS,CAAE,OACrB,MAAM1uE,KAAAA,CAAQ,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACimS,eAAe,CAAA,CACvD,GAAI,CAACruE,MAAO,OACZA,KAAAA,CAAMtyN,EAAE,CAAC,OAAQ,IAAI,CAACuhS,qBAAqB,CAAE,IAAI,CAAA,CACjDjvE,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACwhS,uBAAuB,CAAE,IAAI,CAAA,CACrDlvE,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACyhS,uBAAuB,CAAE,IAAI,CACrD,CAAA,GAAInvE,MAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAACqhP,qBAAqB,CAACjvE,KAC7B,EAAA,CAAA,KAAO,CACL,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAAC7B,IAAI,CAACvc,OACxB,CACF,CACAuuE,qBAAwB,EAAA,CACtB,MAAMvuE,KAAQ,CAAA,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACimS,eAAe,CAAA,CACvD,GAAI,CAACruE,KAAAA,CAAO,OACZA,KAAAA,CAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAAC2hS,qBAAqB,CAAE,IAAI,CAAA,CAClDjvE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC4hS,uBAAuB,CAAE,IAAI,EACtDlvE,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC6hS,uBAAuB,CAAE,IAAI,EACxD,CACAb,oBAAqBtuE,CAAAA,KAAK,CAAE,CAC1B,GAAI,IAAI,CAACquE,eAAe,GAAKruE,KAAAA,CAAM3vL,EAAE,CAAE,OACvC,IAAI,CAACm+P,mBAAmB,GAC1B,CACAS,qBAAAA,CAAsBjvE,KAAK,CAAE,CAC3B,IAAI,CAACzwN,IAAI,CAAC,OAAQywN,KACpB,EAAA,CACAkvE,uBAAwBlvE,CAAAA,KAAK,CAAEr2N,IAAI,CAAEy7I,QAAQ,CAAE47E,QAAQ,CAAE,CACvD,IAAI,CAACzxN,IAAI,CAAC,QAAUywN,CAAAA,KAAAA,CAAOr2N,IAAMy7I,CAAAA,QAAAA,CAAU47E,QAC7C,EAAA,CACAmuE,wBAAwBnvE,KAAK,CAAE,CAC7B,GAAI,IAAI,CAACquE,eAAe,GAAKruE,MAAM3vL,EAAE,CAAE,CACrC,IAAI,CAAC+9P,cAAc,CAAG,IAAI,CAACJ,cAAa,CAE1C,IAAI,CAACz+R,IAAI,CAAC,QAAUywN,CAAAA,KAAAA,EACtB,CACA8uE,YAAaj2D,CAAAA,MAAM,CAAEoE,OAAO,CAAE,CAC5B,GAAI,IAAI,CAACzB,IAAI,CAAC4sB,IAAI,CAACvvB,MAAM,GAAKA,MAAAA,CAAQ,OACtC,IAAI,CAACs1D,YAAY,CAACt1D,MACpB,EAAA,CACAk2D,gBAAgBl2D,MAAM,CAAEoE,OAAO,CAAE,CAC/B,GAAI,IAAI,CAACzB,IAAI,CAAC4sB,IAAI,CAACvvB,MAAM,GAAKA,MAAQ,CAAA,OACtC,IAAI,CAACs1D,YAAY,CAACt1D,MACpB,EAAA,CACAs1D,aAAat1D,MAAM,CAAE,CACnB,GAAI,CAAC,IAAI,CAACm1D,aAAa,CAAE,CACvB,IAAI,CAACI,cAAc,CAAG,IACtB,CAAA,MACF,CACA,MAAMpuE,MAAQ,IAAI,CAACwb,IAAI,CAAC4C,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC4lS,aAAa,CACrD,CAAA,GAAI,CAAChuE,KAAS,EAAA,IAAI,CAAC4uE,oBAAoB,CAAE,CACvC,IAAI,CAACR,cAAc,CAAG,IAAI,CAACJ,aAAa,CACxC,MACF,CACA,MAAMoB,gBAAAA,CAAmBpvE,MAAM8c,mBAAmB,CAACjE,MACnD,CAAA,CAAA,GAAI,CAACu2D,gBAAkB,CAAA,CACrB,IAAI,CAAChB,cAAc,CAAG,IAAI,CAACJ,aAAa,CACxC,MACF,CACA,IAAI,CAACI,cAAc,CAAGgB,iBACxB,CACA5/P,SAAU,CACR,IAAI,CAACu+P,YAAY,CAAG,IAAA,CACpB,IAAI,CAACvyD,IAAI,CAAC4sB,IAAI,CAAC96P,GAAG,CAACo4O,IAAKjuO,CAAAA,YAAY,CAAE,IAAI,CAAC02R,YAAY,CAAE,IAAI,CAAA,CAC7D,IAAI,CAAC7gS,GAAG,GACV,CA/JAc,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,EACL,CAAA,IAAI,CAACmF,IAAI,CAAGnF,GAAAA,CACZA,GAAI+xB,CAAAA,IAAI,CAAC16P,EAAE,CAACg4O,IAAAA,CAAKjuO,YAAY,CAAE,IAAI,CAAC02R,YAAY,CAAE,IAAI,CACtD,CAAA,IAAI,CAACO,SAAS,CAAG,KACjB,CAAA,IAAI,CAACE,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACZ,aAAa,CAAG,IACrB,CAAA,IAAI,CAACK,eAAe,CAAG,KACzB,CAwJF,CAEA,MAAMgB,SAAY,CAAA,MAAA,CAClB,MAAMC,WAAc,CAAA,QAAA,CAEpB,MAAMC,SAAAA,CAAY,EAClB,MAAMC,WAAAA,CAAc,CACpB,CAAA,MAAMC,WAAa,CACnB,CAAA,MAAMC,kBAAqB,CAAA,CAAA,CAC3B,MAAMC,mBAAAA,CAAsB,CAC5B,CAAA,MAAMC,aAAe,CACrB,CAAA,MAAMC,YAAe,CAAA,CAAA,CACrB,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMC,gBAAAA,CAAmB,EACzB,MAAMC,gBAAAA,CAAmB,YACzB,CAAA,MAAMC,gBAAmB,CAAA,QACzB,CAAMC,MAAAA,OAAAA,CAUJ5gQ,MAAO,CACL,IAAI6gQ,KAAQ,CAAA,IAAI,CAACC,KAAK,EAAA,CACtB,MAAMD,KAAAA,GAAUJ,iBAAiB,CAC/BI,KAAAA,CAAQ,IAAI,CAACC,KAAK,GACpB,CACA,GAAID,QAAUZ,SAAaY,EAAAA,KAAAA,GAAUX,WAAa,CAAA,CAChD,IAAI,CAACa,KAAK,CAAG,IAAI,CAAC//R,OACpB,CACA,OAAO6/R,KACT,CACArqM,GAAM,EAAA,CACJ,OAAO,IAAI,CAACwqM,IACd,CACAvpP,IAAO,EAAA,CACL,OAAO,IAAI,CAACspP,KACd,CACAt9R,KAAAA,EAAQ,CACN,OAAO,IAAI,CAACw9R,MAAM,CAEpBC,UAAa,EAAA,CACX,MAAMC,YAAe,CAAA,CACnB,KACA,CAAA,OAAA,CACA,OACA,cACA,CAAA,eAAA,CACA,QACA,CAAA,QAAA,CACA,YACA,CAAA,YAAA,CACD,CACD,IAAIN,MAAQ,IAAI,CAAC7gQ,IAAI,EAAA,CACrB,IAAIlpC,MAAS,CAAA,EAAA,CACb,MAAM,IAAA,CAAK,CACTA,MAAU,EAAA,CAAC,EAAGA,CAAAA,MAAAA,CAAOE,MAAM,CAAG,EAAI,IAAO,CAAA,EAAC,EAAKmqS,YAAY,CAACN,KAAAA,CAAM,CAAC,EAAE,EAAE,IAAI,CAACrqM,GAAG,EAAA,CAAG5/F,IAAI,CAAC,EAAI,CAAA,CAAA,CAAC,CAAC,CAC7F,GAAIiqS,KAAUZ,GAAAA,SAAAA,EAAaY,QAAUX,WAAa,CAAA,CAChD,KACF,CACAW,MAAQ,IAAI,CAAC7gQ,IAAI,GACnB,CACA,OAAOlpC,MACT,CACAgqS,OAAQ,CACN,IAAI,CAACE,IAAI,CAAG,EAAE,CACd,GAAI,IAAI,CAACI,IAAI,EAAA,CAAI,CACf,OAAOnB,SACT,CACA,OAAO,IAAI,CAACoB,KAAK,GAAK,MAAS,CAAA,IAAI,CAAC9yJ,KAAK,EAAA,CAAK,IAAI,CAAC+yJ,IAAI,EACzD,CACA/yJ,KAAQ,EAAA,CACN,MAAM,IAAA,CAAK,CACT,OAAO,IAAI,CAACgzJ,IAAI,EACd,KAAK,KACH,OAAO,IAAI,CAACP,IAAI,CAAChqS,MAAM,CAAG,CAAImpS,CAAAA,UAAAA,CAAaF,SAC7C,CAAA,IAAK,GACH,CAAA,IAAI,CAACoB,KAAK,CAAG,KACb,CAAA,OAAO,IAAI,CAACL,IAAI,CAAChqS,MAAM,CAAG,CAAImpS,CAAAA,UAAAA,CAAa,IAAI,CAACmB,IAAI,EACtD,CAAK,IAAA,IAAA,CACH,IAAI,CAACn2I,KAAK,EACV,CAAA,OAAO,IAAI,CAACo2I,IAAI,EACd,IAAK,IACH,IAAI,CAACC,MAAM,EAAA,CACX,MACF,QACE,IAAI,CAAC36B,OAAO,CAAC,IAAA,CAAA,CACb,KACJ,CACA,MAEA,QAAA,IAAI,CAAC26B,MAAM,GACX,KACJ,CACF,CACF,CACAF,IAAO,EAAA,CACL,OAAO,IAAI,CAACC,IAAI,EACd,KAAK,IAAA,CACH,IAAI,CAACN,MAAM,CAAG,sCACd,OAAOf,WACT,CAAK,IAAA,GAAA,CACH,IAAI,CAACsB,MAAM,EAAA,CACX,OAAOpB,kBACT,CAAA,IAAK,GACH,CAAA,IAAI,CAACoB,MAAM,EACX,CAAA,IAAI,CAACH,KAAK,CAAG,MACb,CAAA,OAAOhB,mBACT,CAAA,IAAK,GACH,CAAA,IAAI,CAACmB,MAAM,EAAA,CACX,OAAOlB,YACT,KAAK,GACL,CAAA,IAAK,GACL,CAAA,IAAK,KACL,IAAK,IAAA,CACL,IAAK,IAAA,CACL,IAAK,IAAA,CACH,OAAO,IAAI,CAACmB,WAAW,EACzB,CAAK,IAAA,GAAA,CACH,OAAO,IAAI,CAACC,OAAO,EACrB,SACE,GAAI,CAAC,IAAI,CAACC,mBAAmB,CAAC,IAAI,CAACJ,IAAI,CAAG,CAAA,CACxC,IAAI,CAACN,MAAM,CAAG,wBACd,CAAA,OAAOf,WACT,CACA,OAAO,IAAI,CAAC0B,WAAW,EAC3B,CACF,CACAH,aAAc,CACZ,IAAI,CAACD,MAAM,GACX,MAAMd,gBAAAA,CAAiB1gS,OAAO,CAAC,IAAI,CAACuhS,IAAI,CAAM,GAAA,CAAC,CAAE,CAAA,CAC/C,IAAI,CAACC,MAAM,GACb,CACA,OAAOf,gBACT,CACAiB,OAAU,EAAA,CACR,IAAI,CAACv2I,KAAK,EACV,CAAA,MAAM,IAAK,CAAA,CACT,OAAO,IAAI,CAACo2I,IAAI,EACd,KAAK,IAAA,CACH,IAAI,CAACN,MAAM,CAAG,wCAAA,CACd,OAAOf,WACT,KAAK,GACH,CAAA,IAAI,CAAC/0I,KAAK,EACV,CAAA,OAAOo1I,YACT,CAAA,QACE,IAAI,CAACiB,MAAM,EACX,CAAA,KACJ,CACF,CACF,CACAI,WAAAA,EAAc,CACZ,IAAI,CAACJ,MAAM,EAAA,CACX,MAAM,IAAI,CAACD,IAAI,GAAK,IAAQ,EAAA,IAAI,CAACI,mBAAmB,CAAC,IAAI,CAACJ,IAAI,CAAA,CAAE,CAC9D,IAAI,CAACC,MAAM,GACb,CACA,OAAOhB,gBACT,CACAmB,oBAAoB7kS,CAAC,CAAE,CACrB,OAAOA,EAAE9F,MAAM,GAAK,CAAK8F,EAAAA,CAAAA,CAAEtE,KAAK,CAACmoS,gBAAAA,CAAAA,GAAsB,IACzD,CACAS,IAAO,EAAA,CACL,OAAO,IAAI,CAACG,IAAI,GAAK,IACvB,CACAp2I,OAAQ,CACN,GAAI,CAAC,IAAI,CAACi2I,IAAI,EAAA,CAAI,CAChB,IAAI,CAACpgS,MAAM,EACX,CAAA,IAAI,CAACugS,IAAI,CAAG,IAAI,CAACvgS,MAAM,CAAG,IAAI,CAAC6gS,QAAQ,CAAC7qS,MAAM,CAAG,IAAI,CAAC6qS,QAAQ,CAAC,IAAI,CAAC7gS,MAAM,CAAC,CAAG,KAChF,CACA,OAAO,IAAI,CAACugS,IAAI,CAElBC,MAAAA,EAAS,CACP,IAAI,CAACR,IAAI,CAACnpS,IAAI,CAAC,IAAI,CAAC0pS,IAAI,CAAA,CACxB,OAAO,IAAI,CAACp2I,KAAK,EACnB,CACA07G,OAAQzwQ,CAAAA,CAAC,CAAE,CACT,IAAI,CAAC4qS,IAAI,CAACnpS,IAAI,CAACzB,CAAAA,EACjB,CApKA0I,WAAAA,CAAYgjS,OAAO,CAAC,CAClB,IAAI,CAACD,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAAC9gS,MAAM,CAAG,CACd,CAAA,IAAI,CAAC+/R,KAAK,CAAG,CACb,CAAA,IAAI,CAACQ,IAAI,CAAG,IAAI,CAACM,QAAQ,CAAC7qS,MAAM,CAAG,CAAA,CAAI,IAAI,CAAC6qS,QAAQ,CAAC,CAAA,CAAE,CAAG,IAC1D,CAAA,IAAI,CAACb,IAAI,CAAG,EAAE,CACd,IAAI,CAACK,KAAK,CAAG,MACb,CAAA,IAAI,CAACJ,MAAM,CAAG,KAChB,CA6JF,CACA,MAAMc,OAKJ1hL,KAAMyhL,CAAAA,OAAO,CAAEv6R,IAAI,CAAE,CACnB,MAAM,IAAA,CAAK,CACT,MAAMs5R,KAAAA,CAAQ,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,EAChC,CAAA,OAAO6gQ,OACL,KAAKZ,SAAAA,CACH,OAAO,IACT,CAAKC,KAAAA,WAAAA,CACH,OAAO,KACT,MAAKC,UACHpqS,CAAAA,KAAAA,CAAMqzH,SAAS,CAACvxH,IAAI,CAACoqS,KAAK,CAACH,OAAAA,CAAS,IAAI,CAACE,QAAQ,CAACxrM,GAAG,EACrD,CAAA,CAAA,MACG4pM,KAAAA,kBAAAA,CACH,GAAI,CAAC,IAAI,CAAC8B,SAAS,CAACJ,OAASv6R,CAAAA,IAAAA,CAAAA,CAAO,CAClC,OAAO,KACT,CACA,MAEA,QAAA,OAAO,KACX,CACF,CACF,CACA9D,OAAQ,CACN,OAAO,CAAC,4BAA4B,EAAE,IAAI,CAACu+R,QAAQ,CAACvqP,IAAI,EAAGhhD,CAAAA,QAAQ,EAAG,CAAA,EAAE,EAAE,IAAI,CAACurS,QAAQ,CAACv+R,KAAK,EAAA,EAAM,IAAI,CAACw9R,MAAM,CAAC,CAAC,CAClH,CACAiB,SAAUJ,CAAAA,OAAO,CAAEv6R,IAAI,CAAE,CACvB,IAAIs5R,KAAAA,CAAQ,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,EAC9B,CAAA,GAAI6gQ,KAAUL,GAAAA,gBAAAA,CAAkB,CAC9B,IAAI,CAACS,MAAM,CAAG,qBACd,CAAA,OAAO,KACT,CACA,MAAM5mS,IAAO,CAAA,IAAI,CAAC2nS,QAAQ,CAACxrM,GAAG,EAAA,CAAG5/F,IAAI,CAAC,IACtC,GAAIyD,IAAI,CAAC,CAAA,CAAE,GAAK,GAAA,CAAK,CACnB,IAAI,IAAIuC,KAAQ2K,CAAAA,IAAAA,CAAKvQ,MAAM,CAAG,EAAG4F,KAAS,EAAA,CAAA,CAAG,EAAEA,KAAAA,CAAM,CACnD,GAAIvC,IAAAA,GAAS,CAAC,CAAC,EAAEkN,IAAI,CAAC3K,KAAAA,CAAM,CAACvC,IAAI,CAAC,CAAC,EAAIkN,IAAI,CAAC3K,KAAAA,CAAM,CAACH,GAAG,GAAK,IAAM,CAAA,CAC/D8K,IAAI,CAAC3K,KAAM,CAAA,CAACH,GAAG,CAAGqlS,QAAQ9qS,MAAM,CAChC6pS,KAAQ,CAAA,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,EAAA,CAC1B,GAAI6gQ,KAAUR,GAAAA,mBAAAA,CAAqB,CACjC,IAAI,CAACY,MAAM,CAAG,wBAAA,CACd,OAAO,KACT,CACA,OAAO,IACT,CACF,CACA,IAAI,CAACA,MAAM,CAAG,6BACd,CAAA,OAAO,KACT,CACA,MAAMr+E,GAAAA,CAAM,CACVvoN,IAAAA,CAAMA,KACNqE,KAAO,CAAA,IAAA,CACP2jD,UAAY,CAAA,GACZ75B,KAAOs5Q,CAAAA,OAAAA,CAAQ9qS,MAAM,CACrByF,IAAK,IACP,CAAA,CACAokS,KAAQ,CAAA,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,GAC1B,GAAI6gQ,KAAAA,GAAUP,YAAc,CAAA,CAC1BO,MAAQ,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,EAC1B,CAAA,GAAI6gQ,KAAUN,GAAAA,YAAAA,CAAc,CAC1B,IAAI,CAACU,MAAM,CAAG,iBACd,CAAA,OAAO,KACT,CACAr+E,GAAIlkN,CAAAA,KAAK,CAAG,IAAI,CAACsjS,QAAQ,CAACxrM,GAAG,EAAA,CAAG5/F,IAAI,CAAC,EACrCiqS,CAAAA,CAAAA,KAAAA,CAAQ,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,GAC5B,CACA,MAAM,IAAK,CAAA,CACT,OAAO6gQ,KACL,EAAA,KAAKR,mBACH94R,CAAAA,IAAAA,CAAK1P,IAAI,CAAC+qN,GACV,CAAA,CAAA,OAAO,IACT,CAAK49E,KAAAA,gBAAAA,CACH,CACE,MAAMthO,WAAa,IAAI,CAAC8iO,QAAQ,CAACxrM,GAAG,EAAG5/F,CAAAA,IAAI,CAAC,EAAA,CAAA,CAC5CiqS,KAAQ,CAAA,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,EAAA,CAC1B,GAAI6gQ,KAAAA,GAAUP,aAAc,CAC1B,IAAI,CAACW,MAAM,CAAG,iBACd,CAAA,OAAO,KACT,CACAJ,KAAQ,CAAA,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,EAAA,CAC1B,GAAI6gQ,KAAAA,GAAUN,aAAc,CAC1B,IAAI,CAACU,MAAM,CAAG,iBACd,CAAA,OAAO,KACT,CACA,MAAMviS,KAAAA,CAAQ,IAAI,CAACsjS,QAAQ,CAACxrM,GAAG,EAAG5/F,CAAAA,IAAI,CAAC,EACvCgsN,CAAAA,CAAAA,GAAIvgK,CAAAA,UAAU,CAAC6c,UAAW,CAAA,CAAGxgE,KAC7B,CAAA,KACF,CACF,QACE,IAAI,CAACuiS,MAAM,CAAG,sCAAA,CACd,OAAO,KACX,CACAJ,KAAQ,CAAA,IAAI,CAACmB,QAAQ,CAAChiQ,IAAI,GAC5B,CACF,CA/FAlhC,WAAYgjS,CAAAA,OAAO,CAAC,CAClB,IAAI,CAACE,QAAQ,CAAG,IAAIpB,QAAQkB,OAC5B,CAAA,CAAA,IAAI,CAACb,MAAM,CAAG,KAChB,CA6FF,CACA,SAAStoK,KAAAA,CAAMhjI,MAAM,CAAEgyC,MAAM,CAC3B,CAAA,IAAI,MAAM/oC,GAAAA,IAAO+oC,MAAO,CAAA,CACtB,GAAI,CAACA,OAAOvkC,cAAc,CAACxE,GAAM,CAAA,CAAA,CAC/B,QACF,CACA,MAAMF,KAAAA,CAAQipC,MAAM,CAAC/oC,GAAAA,CAAI,CACzB,GAAIF,iBAAiB9F,MAAQ,CAAA,CAC3B,GAAI,CAACjD,OAAOyN,cAAc,CAACxE,GAAM,CAAA,CAAA,CAC/BjJ,MAAM,CAACiJ,GAAI,CAAA,CAAG,GAChB,CACA+5H,KAAMhjI,CAAAA,MAAM,CAACiJ,GAAI,CAAA,CAAE+oC,MAAM,CAAC/oC,IAAI,EAChC,CAAA,KAAO,CACLjJ,MAAM,CAACiJ,GAAAA,CAAI,CAAGF,MAChB,CACF,CACF,CACA,SAASyjS,WAAAA,CAAY56R,IAAI,CACvB,CAAA,GAAIA,IAAKvQ,CAAAA,MAAM,GAAK,CAAG,CAAA,CACrB,OAAO,IACT,CACA,MAAMF,MAAS,CAAA,GACf,IAAI,IAAI8F,KAAQ,CAAA,CAAA,CAAGA,MAAQ2K,IAAKvQ,CAAAA,MAAM,CAAE,EAAE4F,MAAM,CAC9C,MAAMgmN,GAAMr7M,CAAAA,IAAI,CAAC3K,KAAAA,CAAM,CACvB,MAAMmL,IAAM,EACZA,CAAAA,GAAG,CAAC66M,GAAIvoN,CAAAA,IAAI,CAAC,CAAG,CACdqE,KAAOkkN,CAAAA,GAAAA,CAAIlkN,KAAK,CAChB2jD,UAAYugK,CAAAA,GAAAA,CAAIvgK,UAClB,EACAs2E,KAAM7hI,CAAAA,MAAAA,CAAQiR,GAChB,EAAA,CACA,OAAOjR,MACT,CACA,SAASsrS,iBAAAA,CAAkB76R,IAAI,CAAE86R,UAAU,CACzC,CAAA,GAAI96R,IAAKvQ,CAAAA,MAAM,GAAK,CAAA,CAAG,CACrB,OAAO,IACT,CACA,MAAMsrS,MAAQ,EAAC,CACf,IAAI,IAAI1lS,MAAQ,CAAGA,CAAAA,KAAAA,CAAQ2K,IAAKvQ,CAAAA,MAAM,CAAE,EAAE4F,KAAM,CAAA,CAC9C,MAAMgmN,GAAMr7M,CAAAA,IAAI,CAAC3K,KAAAA,CAAM,CACvB,GAAI,CAAC0lS,KAAAA,CAAMl/R,cAAc,CAACw/M,GAAAA,CAAIp6L,KAAK,CAAA,CAAG,CACpC85Q,KAAK,CAAC1/E,GAAAA,CAAIp6L,KAAK,CAAC,CAAG,CACjB41F,IAAAA,CAAM,CACJwkG,GACD,CAAA,CACDz/F,KAAO,CAAA,IACT,EACF,CAAO,KAAA,CACL,GAAIm/K,KAAK,CAAC1/E,GAAAA,CAAIp6L,KAAK,CAAC,CAAC41F,IAAI,GAAK,IAAM,CAAA,CAClCkkL,KAAK,CAAC1/E,GAAAA,CAAIp6L,KAAK,CAAC,CAAC41F,IAAI,CAAG,CACtBwkG,GAAAA,EACD,CACH,KAAO,CACL0/E,KAAK,CAAC1/E,GAAIp6L,CAAAA,KAAK,CAAC,CAAC41F,IAAI,CAACvmH,IAAI,CAAC+qN,GAAAA,EAC7B,CACF,CACA,GAAI,CAAC0/E,KAAAA,CAAMl/R,cAAc,CAACw/M,GAAInmN,CAAAA,GAAG,EAAG,CAClC6lS,KAAK,CAAC1/E,GAAAA,CAAInmN,GAAG,CAAC,CAAG,CACf2hH,IAAAA,CAAM,KACN+E,KAAO,CAAA,CACLy/F,GACD,CACH,EACF,CAAA,KAAO,CACL,GAAI0/E,KAAK,CAAC1/E,GAAAA,CAAInmN,GAAG,CAAC,CAAC0mH,KAAK,GAAK,IAAM,CAAA,CACjCm/K,KAAK,CAAC1/E,GAAAA,CAAInmN,GAAG,CAAC,CAAC0mH,KAAK,CAAG,CACrBy/F,KACD,CACH,KAAO,CACL0/E,KAAK,CAAC1/E,GAAInmN,CAAAA,GAAG,CAAC,CAAC0mH,KAAK,CAACtrH,IAAI,CAAC+qN,GAAAA,EAC5B,CACF,CACF,CACA,IAAI2/E,SAAW,EAAE,CACjB,SAASC,UAAAA,CAAWj7R,IAAI,CACtBg7R,CAAAA,QAAAA,CAAWA,QAAS7vM,CAAAA,MAAM,CAAC,GAACkwH,EAAAA,CAC1B,OAAOr7M,IAAAA,CAAKsuD,IAAI,CAAC,CAAChuD,EAAAA,CAChB,OAAOA,CAAM+6M,GAAAA,GACf,CAAO/jN,CAAAA,GAAAA,SACT,CACF,EAAA,CACA,SAAS4jS,OAAAA,CAAQl7R,IAAI,CACnB,CAAA,IAAI,IAAI3K,KAAAA,CAAQ,CAAGA,CAAAA,KAAAA,CAAQ2K,IAAKvQ,CAAAA,MAAM,CAAE,EAAE4F,KAAAA,CAAM,CAC9C2lS,QAAAA,CAAS1qS,IAAI,CAAC0P,IAAI,CAAC3K,KAAAA,CAAM,EAC3B,CACF,CACA,MAAM8lS,QAAAA,CAAW9pS,MAAOoW,CAAAA,IAAI,CAACszR,KAAAA,CAAAA,CAAOr7R,IAAI,CAAC,CAACN,CAAGC,CAAAA,CAAAA,GAAAA,CAC3C,OAAOD,CAAIC,CAAAA,CACb,CACA,CAAA,CAAA,MAAM+7R,aAAe,EAAE,CACvB,IAAI,IAAI/lS,KAAQ,CAAA,CAAA,CAAGA,KAAQ8lS,CAAAA,QAAAA,CAAS1rS,MAAM,CAAE,EAAE4F,KAAM,CAAA,CAClD,MAAMgmS,IAAON,CAAAA,KAAK,CAACI,QAAQ,CAAC9lS,KAAM,CAAA,CAAC,CACnC,GAAIgmS,IAAKz/K,CAAAA,KAAK,GAAK,IAAA,CAAM,CACvBq/K,UAAWI,CAAAA,IAAAA,CAAKz/K,KAAK,EACvB,CACA,GAAIy/K,IAAAA,CAAKxkL,IAAI,GAAK,KAAM,CACtBqkL,OAAAA,CAAQG,IAAKxkL,CAAAA,IAAI,EACnB,CACAukL,YAAa9qS,CAAAA,IAAI,CAAC,CAChB2wB,KAAAA,CAAOk6Q,QAAQ,CAAC9lS,MAAM,CACtB2K,IAAAA,CAAM46R,WAAYI,CAAAA,QAAAA,CACpB,GACF,CACA,MAAMzrS,MAAS,CAAA,EAAE,CACjB,IAAI+rS,OAAU,CAAA,IAAA,CACd,IAAI,IAAIjmS,KAAAA,CAAQ,CAAGA,CAAAA,KAAAA,CAAQ+lS,aAAa3rS,MAAM,CAAE,EAAE4F,KAAAA,CAAM,CACtD,MAAMkmS,WAAAA,CAAcH,YAAY,CAAC/lS,KAAM,CAAA,CACvC,MAAM9F,MAAAA,CAAOE,MAAM,CAAG8rS,WAAAA,CAAYt6Q,KAAK,CAAC,CACtC1xB,MAAOe,CAAAA,IAAI,CAACgrS,OAAAA,CAAUA,QAAQt7R,IAAI,CAAG,IACvC,EAAA,CACAs7R,OAAUC,CAAAA,YACZ,CACA,MAAMhsS,OAAOE,MAAM,CAAGqrS,UAAW,CAAA,CAC/BvrS,MAAOe,CAAAA,IAAI,CAAC,IAAA,EACd,CACA,OAAOf,MACT,CACA,SAASisS,cAAejB,CAAAA,OAAO,CAC7B,CAAA,MAAMkB,OAAS,IAAIjB,MAAAA,CAAOD,OAC1B,CAAA,CAAA,MAAMmB,iBAAmB,EAAE,CAC3B,MAAM17R,IAAAA,CAAO,EAAE,CACf,GAAI,CAACy7R,MAAAA,CAAO3iL,KAAK,CAAC4iL,gBAAkB17R,CAAAA,IAAAA,CAAAA,CAAO,CACzC/D,OAAQqyO,CAAAA,IAAI,CAACmtD,MAAAA,CAAOv/R,KAAK,EACzB,CAAA,CAAA,OAAO,CACLq+R,OAAAA,CAASA,QACTv6R,IAAM,CAAA,IACR,CACF,CACA,MAAM27R,UAAAA,CAAa37R,IAAKsuD,CAAAA,IAAI,CAAC,CAAChuD,EAAAA,CAC5B,OAAOA,CAAAA,CAAEpL,GAAG,GAAK,IACnB,CACA,CAAA,CAAA,GAAIymS,WAAY,CACd1/R,OAAAA,CAAQqyO,IAAI,CAAC,CAAC,kCAAkC,EAAEqtD,UAAAA,CAAW7oS,IAAI,CAAC,CAAC,CAAC,CAAA,CACpE,OAAO,CACLynS,OAASA,CAAAA,OAAAA,CACTv6R,KAAM,IACR,CACF,CACA,MAAM47R,aAAgBf,CAAAA,iBAAAA,CAAkB76R,IAAM07R,CAAAA,gBAAAA,CAAiBjsS,MAAM,CACrE,CAAA,OAAO,CACL8qS,OAAAA,CAASmB,iBACT17R,IAAM47R,CAAAA,aACR,CACF,CACA,MAAMC,MACJ,CAAA,OAAOl1R,QAAS4zR,CAAAA,OAAO,CAAE,CACvB,OAAOiB,cAAAA,CAAejB,QACxB,CACF,CAEA,MAAMuB,QAAAA,CACJvkS,aAAa,CACX,IAAI,CAACi4C,KAAK,CAAG,CACb,CAAA,IAAI,CAACqkF,IAAI,CAAG,CACZ,CAAA,IAAI,CAACx8D,KAAK,CAAG,EACb,CAAA,IAAI,CAAC5qB,SAAS,CAAG,EACjB,CAAA,IAAI,CAAC0sF,OAAO,CAAG,EAAE,CACjB,IAAI,CAACG,GAAG,CAAG,EAAE,CACb,IAAI,CAACD,MAAM,CAAG,EAAE,CAChB,IAAI,CAACt/B,OAAO,CAAG,EAAE,CACjB,IAAI,CAACgiM,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACC,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC5nK,YAAY,CAAG,KACtB,CACF,CACA,SAAS6nK,cAAexiQ,CAAAA,MAAM,CAAEyiQ,QAAQ,CAAA,CACtC,MAAMhjK,IAAAA,CAAO,IAAIH,IAAAA,CAAKt/F,MACtBy/F,CAAAA,CAAAA,IAAAA,CAAKQ,YAAY,CAACwiK,QAAAA,CAASzvP,SAAS,CAAA,CACpCysF,KAAKS,UAAU,CAACuiK,QAAS/iK,CAAAA,OAAO,EAChCD,IAAKW,CAAAA,WAAW,CAACqiK,QAAAA,CAAS7iK,MAAM,CAAA,CAChCH,IAAKY,CAAAA,MAAM,CAAC,CAAGoiK,CAAAA,QAAAA,CAAS5iK,GAAG,CAAA,CAC3BJ,KAAKa,UAAU,CAACmiK,QAASniM,CAAAA,OAAO,EAChCm/B,IAAKU,CAAAA,eAAe,CAAC/qG,cAAAA,CAAgBqtQ,QAASH,CAAAA,QAAQ,CAAE,CAAA,CAAGzkS,UAAW26B,YAAc,CAAA,KAAA,CAAA,CACpFinG,IAAKU,CAAAA,eAAe,CAAC9qG,cAAgBotQ,CAAAA,QAAAA,CAASF,OAAO,CAAE,EAAG1kS,SAAW26B,CAAAA,YAAAA,CAAc,KACnFinG,CAAAA,CAAAA,IAAAA,CAAKt2F,MAAM,EAAA,CACX,OAAOs2F,IACT,CACA,MAAMijK,eAAAA,CAAkB,UACxB,CAAA,MAAMC,gBAAkB,SACxB,CAAA,MAAMC,kBAAqB,CAAA,kBAAA,CAC3B,MAAMC,iBAAoB,CAAA,aAAA,CAC1B,MAAMC,QAAAA,CAAW,gEACjB,CAAA,MAAMC,sBAAyB,CAAA,4DAAA,CAC/B,MAAMC,aAAgB,CAAA,CACpB,GACA,CAAA,GAAA,CACA,IACA,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,IACA,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,GACD,CAAA,CACD,MAAMC,kBAAAA,CAAqB,CACzBvnR,KAAO,CAAA,CAAA,CACPC,MAAQ,CAAA,CAAA,CACRunR,QAAU,CAAA,CAAA,CACVC,OAAS,CAAA,CAAA,CACTC,QAAS,CACX,CAAA,CACA,MAAMC,QAAAA,CAAW,IAAIj4R,KAAAA,CACrB,MAAMk4R,OAAAA,CAAU,IAAI1rR,IACpB,CAAA,MAAM2rR,YAAe,CAAA,IAAIn4R,KACzB,CAAMo4R,MAAAA,WAAAA,CA6EJtkQ,OAAU,EAAA,CACR,IAAI,CAACukQ,YAAY,CAAC,IAAA,CAAA,CAClB,GAAI,IAAI,CAACj2J,MAAM,CAAE,CACf,IAAI,CAACh/B,QAAQ,CAAC4+B,qBAAqB,CAAC,IAAI,CAACI,MAAM,CAC/C,CAAA,IAAI,CAACA,MAAM,CAACtuG,OAAO,EACnB,CAAA,IAAI,CAACsuG,MAAM,CAAG,KAChB,CACA,IAAI,CAACk2J,UAAU,CAACxkQ,OAAO,EACvB,CAAA,IAAI,CAACykQ,IAAI,CAAG,IACZ,CAAA,IAAI,CAACn1L,QAAQ,CAACxxG,GAAG,CAAC,SAAU,IAAI,CAAC4mS,eAAe,CAAE,IAAI,CACtD,CAAA,IAAI,CAACp1L,QAAQ,CAACxxG,GAAG,CAAC,YAAA,CAAc,IAAI,CAACi7R,eAAe,CAAE,IAAI,EAC1D,IAAI,CAACzpL,QAAQ,CAACxxG,GAAG,CAAC,wBAAA,CAA0B,IAAI,CAACg7R,oBAAoB,CAAE,IAAI,CAAA,CAC3E,IAAI,CAACxpL,QAAQ,CAACxxG,GAAG,CAAC,eAAiB,CAAA,IAAI,CAACk7R,kBAAkB,CAAE,IAAI,CAAA,CAChE,IAAI,CAAC1pL,QAAQ,CAACxxG,GAAG,CAAC,YAAa,IAAI,CAAC6mS,cAAc,CAAE,IAAI,CACxD,CAAA,IAAI,CAACpL,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAAC96P,GAAG,CAACo4O,IAAKjuO,CAAAA,YAAY,CAAE,IAAI,CAAC28R,YAAY,CAAE,IAAI,CAAA,CACpE,IAAI,CAACrL,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAAC96P,GAAG,CAAC,UAAA,CAAY,IAAI,CAAC+mS,mBAAmB,CAAE,IAAI,EACpE,IAAI,CAACtL,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAAC96P,GAAG,CAAC,aAAA,CAAe,IAAI,CAAC+mS,mBAAmB,CAAE,IAAI,EACzE,CACAH,gBAAgBloR,KAAK,CAAEC,MAAM,CAAE,CAC7B,GAAI,IAAI,CAACqoR,SAAS,CAAE,OACpB,GAAI,IAAI,CAACC,KAAK,CAAE,IAAI,CAACC,WAAW,GAClC,CACAjM,eAAgBK,CAAAA,MAAM,CAAE,CACtB,GAAIA,MAAQ,CAAA,CACV,IAAI,CAACD,eAAe,CAACC,OAAOA,MAAM,CAAClwJ,WAAW,EAChD,MAAO,CACL,IAAI,CAACiwJ,eAAe,CAAC,KACvB,EAAA,CACF,CACAL,oBAAAA,CAAqBt6R,KAAK,CAAE,CAC1B,IAAI,CAAC26R,eAAe,CAAC36R,KACvB,EAAA,CACAw6R,mBAAmBt+G,KAAK,CAAE,CACxB,IAAI,CAACuqH,UAAU,CAAGvqH,KAClB,CAAA,GAAI,IAAI,CAACpsC,MAAM,CAAE,CACf,IAAI,IAAIz3I,CAAI,CAAA,CAAA,CAAGkY,IAAM,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClE,IAAI,CAACy3I,MAAM,CAAClS,aAAa,CAACvlI,EAAE,CAAC80I,SAAS,CAAG+uC,MAC3C,CACF,CACF,CACAiqH,cAAe3uF,CAAAA,KAAK,CAAE,CACpB,GAAI,IAAI,CAAC+uF,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CACAJ,YAAav7D,CAAAA,MAAM,CAAE,CACnB,GAAI,CAAC,IAAI,CAAC67D,QAAQ,CAAE,OACpB,GAAI,IAAI,CAACC,SAAS,CAAE,CAClB,MAAM30E,MAAQ,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAACusS,SAAS,EACxD,GAAI,CAAC30E,KAAS,EAAA,CAACA,MAAMpyK,QAAQ,EAAIoyK,KAAMpyK,CAAAA,QAAQ,GAAK,IAAI,CAAC2mP,KAAK,CAAE,CAC9D,IAAI,CAACN,IAAI,CAAG,KACd,CACF,CACA,IAAI,CAACW,mBAAmB,GAC1B,CACAP,mBAAAA,CAAoBx7D,MAAM,CAAE4M,QAAQ,CAAE,CACpC,GAAI,IAAI,CAACivD,QAAQ,EAAIjvD,QAAQ,CAAC,IAAI,CAACivD,QAAQ,CAAC,CAAE,CAC5C,IAAI,CAACE,mBAAmB,GAC1B,CACF,CACAA,mBAAsB,EAAA,CACpB,IAAI,CAACC,QAAQ,CAAC,IAAI,CAAC9L,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAACniB,OAAO,CAAC,IAAI,CAACyuD,QAAQ,CAC3D,EAAA,CACAG,QAAStvE,CAAAA,IAAI,CAAE,CACb,GAAI,IAAI,CAACuvE,gBAAgB,CAAE,CACzB,MAAMC,oBAAAA,CAAuB,IAAI,CAAChM,OAAO,CAACiM,mBAAmB,EAC7D,CAAA,GAAID,oBAAsB,CAAA,CACxBxvE,KAAOwvE,oBAAqBxvE,CAAAA,IAAAA,EAC9B,CAAO,KAAA,CACLzyN,QAAQqyO,IAAI,CAAC,0FACf,EAAA,CACF,CACA,GAAI,IAAI,CAACtnG,KAAK,GAAK0nF,IAAAA,CAAM,CACvB,GAAI,IAAI,CAACgvE,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,CAACjvE,IACnB,EAAA,CACA,IAAI,CAAC1nF,KAAK,CAAG0nF,KACf,CACF,CACAivE,YAAYjvE,IAAI,CAAE,CAChB,IAAI1uN,KACJ,GAAI0uN,IAAAA,GAASp3N,SAAWo3N,CAAAA,IAAAA,CAAO,IAAI,CAAC1nF,KACpC,CAAA,IAAI,CAACszJ,QAAQ,CAAG7lS,OAAOsB,UAAU,CAAC24N,IAAK9+N,CAAAA,SAAS,CAAG8+N,IAAK9+N,CAAAA,SAAS,CAAC,KAAA,CAAA,CAAS8+N,IAC3E,CAAA,CAAA,GAAI,IAAI,CAAC4rE,QAAQ,CAAC7qS,MAAM,GAAK,CAAA,CAAG,CAC9B,IAAI,CAAC6qS,QAAQ,CAAG,CACd,GACD,EACH,CACA,GAAI,IAAI,CAAC8D,aAAa,CAAE,CACtB,MAAMl5N,OAAAA,CAAU22N,MAAOl1R,CAAAA,QAAQ,CAAC,IAAI,CAAC2zR,QAAQ,CAC7C,CAAA,IAAI,CAACA,QAAQ,CAAGp1N,OAAQq1N,CAAAA,OAAO,CAC/Bv6R,IAAAA,CAAOklE,QAAQllE,IAAI,EAAI,GACzB,CACA,GAAI,IAAI,CAACq+R,WAAW,CAAE,CACpB,MAAMC,cAAiB,CAAA,IAAI,CAACpM,OAAO,CAAC1yD,GAAG,CAACgR,OAAO,CAACrlM,OAAO,CAACozP,aAAa,EACrE,CAAA,GAAID,cAAgB,CAAA,CAClB,MAAMp5N,OAAUo5N,CAAAA,cAAAA,CAAe,IAAI,CAAChE,QAAQ,CAC5C,CAAA,IAAI,CAACkE,IAAI,CAAGt5N,OAAQu5N,CAAAA,GAAG,CACvB,IAAI,CAACnE,QAAQ,CAAGp1N,OAAQ+pC,CAAAA,OAAO,CAAC54G,GAAG,CAAC,SAASpH,CAAC,CAAA,CAC5C,OAAO,IAAI,CAACqrS,QAAQ,CAACrrS,CAAE,CACzB,CAAG,CAAA,IAAI,EACP,GAAI+Q,IAAAA,CAAM,CACRA,IAAAA,CAAOklE,OAAQ+pC,CAAAA,OAAO,CAAC54G,GAAG,CAAC,CAACpH,EAAAA,CAC1B,OAAO+Q,IAAI,CAAC/Q,CAAE,CAChB,CACF,EAAA,CACF,MAAO,CACLgN,OAAAA,CAAQqyO,IAAI,CAAC,8EACf,EAAA,CACF,CAAO,KAAA,CACL,IAAI,CAACkwD,IAAI,CAAG,MACd,CACA,MAAME,qBAAAA,CAAwB,CAACjrP,KAAAA,CAAO8vK,aACpC,OAAO,CAAC,EAAE9vK,KAAAA,CAAMvkD,QAAQ,CAAC,IAAMqoH,CAAAA,CAAAA,WAAW,GAAG,CAAC,EAAEgsG,SAAU19M,CAAAA,OAAO,CAAC,CAAG,CAAA,CAAA,CAAC,CACxE,CACA,MAAM84R,kBAAqB,CAAA,CAAClrP,KAAOv2C,CAAAA,MAAAA,GAAAA,CACjC,OAAO,CAAC,EAAEu2C,KAAAA,CAAMvkD,QAAQ,CAAC,IAAA,CAAA,CAAMqoH,WAAW,EAAA,CAAG,CAAC,EAAEr6G,MAAAA,CAAO2G,CAAC,CAACgC,OAAO,CAAC,CAAA,CAAA,CAAG,CAAC,EAAE3I,MAAOqO,CAAAA,CAAC,CAAC1F,OAAO,CAAC,CAAG,CAAA,CAAA,CAAC,CAC9F,CACA,GAAI7F,IAAM,CAAA,CACR,MAAM4+R,UAAAA,CAAa,EACnB,CAAA,MAAMC,iBAAoB,CAAA,EAC1B,CAAA,MAAMC,gBAAmB,CAAA,EACzB,CAAA,IAAI,CAACC,aAAa,CAAG,CACnBhwS,IAAAA,CAAKmV,KAAK,CAAC,IAAI,CAACogJ,MAAM,CAACx1J,CAAC,CAAG,GAAA,CAAA,CAC3BC,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAACogJ,MAAM,CAACjhJ,CAAC,CAAG,GAAA,CAAA,CAC3BtU,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAACogJ,MAAM,CAACjlJ,CAAC,CAAG,GAC5B,CAAA,CACD,CAAA,IAAI,CAAC2/R,eAAe,CAAG,CACrBjwS,IAAAA,CAAKmV,KAAK,CAAC,IAAI,CAAC+6R,aAAa,CAACnwS,CAAC,CAAG,GAAA,CAAA,CAClCC,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAAC+6R,aAAa,CAAC57R,CAAC,CAAG,GAAA,CAAA,CAClCtU,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAAC+6R,aAAa,CAAC5/R,CAAC,CAAG,GAClCtQ,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAAC,IAAI,CAAC+6R,aAAa,CAAC7/R,CAAC,CAAG,GAClCrQ,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAAC,IAAI,CAACg7R,iBAAiB,CAAG,GAAA,CAAA,CACrC,CACD,IAAI,CAACC,cAAc,CAAG,CACpBpwS,KAAKmV,KAAK,CAAC,IAAI,CAACk7R,YAAY,CAACtwS,CAAC,CAAG,GAAA,CAAA,CACjCC,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAACk7R,YAAY,CAAC/7R,CAAC,CAAG,KACjCtU,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAACk7R,YAAY,CAAC//R,CAAC,CAAG,GACjCtQ,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAAC,IAAI,CAACk7R,YAAY,CAAChgS,CAAC,CAAG,GACjCrQ,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAAC,IAAI,CAACm7R,aAAa,CAACx7R,CAAC,CAAG,GAAA,CAAA,CAClC9U,IAAKmV,CAAAA,KAAK,CAAC,IAAI,CAACm7R,aAAa,CAAC9zR,CAAC,CAAG,GAAA,CAAA,CACnC,CACD,IAAI,CAAC+zR,aAAa,CAAG,EAAE,CACvB,IAAI,CAACC,oBAAoB,CAAG,EAAE,CAC9B,IAAI,CAACC,mBAAmB,CAAG,EAAE,CAC7BZ,UAAU,CAAC,IAAI,CAACt6I,MAAM,CAACp1J,QAAQ,CAAC,KAAOqoH,CAAAA,CAAAA,WAAW,EAAG,CAAA,CAAG,CACxDsnL,CAAAA,iBAAiB,CAACH,sBAAsB,IAAI,CAACO,aAAa,CAAE,IAAI,CAACC,iBAAiB,CAAA,CAAE,CAAG,CACvFJ,CAAAA,gBAAgB,CAACH,mBAAmB,IAAI,CAACS,YAAY,CAAE,IAAI,CAACC,aAAa,CAAE,CAAA,CAAG,CAC9E,CAAA,IAAI,IAAI7vS,CAAAA,CAAI,EAAGkY,GAAM,CAAA,IAAI,CAAC4yR,QAAQ,CAAC7qS,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAK,EAAElY,CAAE,CAAA,CACtD,MAAM6rN,GAAAA,CAAMr7M,IAAI,CAACxQ,CAAE,CAAA,CACnB,IAAIikD,KAAQ,CAAA,CAAA,CACZ,GAAI4nK,GAAAA,EAAOA,IAAI5nK,KAAK,EAAI4nK,GAAI5nK,CAAAA,KAAK,CAACt8C,KAAK,CAAE,CACvC,MAAMtI,CAAIwsN,CAAAA,GAAAA,CAAI5nK,KAAK,CAACt8C,KAAK,CACzB,GAAItI,CAAEY,CAAAA,MAAM,GAAK,CAAA,EAAKZ,CAAC,CAAC,EAAE,GAAK,GAAA,CAAK,CAClC,MAAM4W,GAAM5W,CAAAA,CAAAA,CAAE4B,SAAS,CAAC,GAAG8mH,WAAW,EAAA,CACtC,GAAIqnL,UAAAA,CAAW/iS,cAAc,CAAC4J,GAAAA,CAAAA,CAAM,CAClCguC,KAAAA,CAAQmrP,UAAU,CAACn5R,GAAAA,EAAI,CACzB,KAAO,CACL,GAAI,eAAgBvT,CAAAA,IAAI,CAACuT,GAAM,CAAA,CAAA,CAC7BguC,KAAQ,CAAA,IAAI,CAACsrP,aAAa,CAACtvS,MAAM,CAAG,CACpCmvS,CAAAA,UAAU,CAACn5R,GAAAA,CAAI,CAAGguC,KAAAA,CAClB,IAAI,CAACsrP,aAAa,CAACzuS,IAAI,CAACoV,QAAAA,CAASD,IAAIhV,SAAS,CAAC,CAAG,CAAA,CAAA,CAAA,CAAI,KACtD,IAAI,CAACsuS,aAAa,CAACzuS,IAAI,CAACoV,QAASD,CAAAA,GAAAA,CAAIhV,SAAS,CAAC,CAAA,CAAG,CAAI,CAAA,CAAA,EAAA,CAAA,CAAA,CACtD,IAAI,CAACsuS,aAAa,CAACzuS,IAAI,CAACoV,QAAAA,CAASD,GAAIhV,CAAAA,SAAS,CAAC,CAAA,CAAG,CAAI,CAAA,CAAA,EAAA,CAAA,EACxD,CACF,CACF,CACF,CACA,IAAI,CAAC6uS,aAAa,CAAChvS,IAAI,CAACmjD,OACxB,IAAIgsP,OAAAA,CAAU,CACd,CAAA,GAAIpkF,GAAOA,EAAAA,GAAAA,CAAIokF,OAAO,GAAKpkF,GAAIokF,CAAAA,OAAO,CAAC3kP,UAAU,CAACrH,KAAK,EAAI4nK,GAAIokF,CAAAA,OAAO,CAAC3kP,UAAU,CAACyoK,SAAQ,CAAI,CAAA,CAC5F,IAAI9vK,KAAAA,CAAQ4nK,IAAIokF,OAAO,CAAC3kP,UAAU,CAACrH,KAAK,CAAGqpP,QAAAA,CAASt3R,UAAU,CAAC61M,IAAIokF,OAAO,CAAC3kP,UAAU,CAACrH,KAAK,CAAA,CAAI,IAAI,CAACwrP,aAAa,CACjH,IAAI17E,SAAYjqM,CAAAA,MAAAA,CAAO+hM,IAAIokF,OAAO,CAAC3kP,UAAU,CAACyoK,SAAS,CACvD,CAAA,GAAIjqM,MAAOmtC,CAAAA,KAAK,CAAChT,KAAAA,CAAM3kD,CAAC,CAAA,EAAKwqB,OAAOmtC,KAAK,CAAChT,KAAMpwC,CAAAA,CAAC,GAAKiW,MAAOmtC,CAAAA,KAAK,CAAChT,KAAAA,CAAMp0C,CAAC,CAAKia,EAAAA,MAAAA,CAAOmtC,KAAK,CAAChT,KAAMr0C,CAAAA,CAAC,CAAG,CAAA,CACpGq0C,MAAQ,IAAI,CAACwrP,cACf,CACA,GAAI3lR,MAAAA,CAAOmtC,KAAK,CAAC88J,WAAY,CAC3BA,SAAAA,CAAY,IAAI,CAAC27E,kBACnB,CACA,MAAMQ,YAAchB,qBAAsBjrP,CAAAA,KAAAA,CAAO8vK,SACjD,CAAA,CAAA,GAAIs7E,kBAAkBhjS,cAAc,CAAC6jS,WAAc,CAAA,CAAA,CACjDD,QAAUZ,iBAAiB,CAACa,WAAY,EAC1C,CAAO,KAAA,CACLD,OAAU,CAAA,IAAI,CAACT,eAAe,CAACvvS,MAAM,CAAG,CACxCovS,CAAAA,iBAAiB,CAACa,YAAY,CAAGD,OAAAA,CACjC,IAAI,CAACT,eAAe,CAAC1uS,IAAI,CAACvB,KAAKmV,KAAK,CAACuvC,KAAM3kD,CAAAA,CAAC,CAAG,GAAMC,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAACuvC,MAAMpwC,CAAC,CAAG,GAAMtU,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAACuvC,KAAMp0C,CAAAA,CAAC,CAAG,GAAMtQ,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAACuvC,MAAMr0C,CAAC,CAAG,GAAMrQ,CAAAA,CAAAA,IAAAA,CAAKmV,KAAK,CAACq/M,SAAAA,CAAY,GAC/J,CAAA,EAAA,CACF,CACA,IAAI,CAACg8E,oBAAoB,CAACjvS,IAAI,CAACmvS,OAC/B,CAAA,CAAA,IAAIhoD,OAAS,CACb,CAAA,GAAIp8B,GAAOA,EAAAA,GAAAA,CAAIo8B,MAAM,GAAKp8B,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAACrH,KAAK,EAAI4nK,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAAC59C,MAAM,EAAIm+M,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAAC6kP,OAAO,EAAItkF,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAAC8kP,OAAM,CAAI,CAAA,CACxJ,IAAInsP,KAAQ4nK,CAAAA,GAAAA,CAAIo8B,MAAM,CAAC38L,UAAU,CAACrH,KAAK,CAAGqpP,QAAAA,CAASt3R,UAAU,CAAC61M,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAACrH,KAAK,CAAA,CAAI,IAAI,CAAC2rP,YAAY,CAC9G,MAAM3oS,IAAM6iB,MAAO+hM,CAAAA,GAAAA,CAAIo8B,MAAM,CAAC38L,UAAU,CAAC59C,MAAM,CAAA,CAC/C,MAAM2iS,IAAOvmR,CAAAA,MAAAA,CAAO+hM,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAAC6kP,OAAO,CAAA,CACjD,MAAMG,IAAOxmR,CAAAA,MAAAA,CAAO+hM,GAAIo8B,CAAAA,MAAM,CAAC38L,UAAU,CAAC8kP,OAAO,EACjD,GAAItmR,MAAAA,CAAOmtC,KAAK,CAAChT,KAAM3kD,CAAAA,CAAC,CAAKwqB,EAAAA,MAAAA,CAAOmtC,KAAK,CAAChT,KAAAA,CAAMpwC,CAAC,CAAA,EAAKiW,MAAOmtC,CAAAA,KAAK,CAAChT,KAAAA,CAAMp0C,CAAC,CAAKia,EAAAA,MAAAA,CAAOmtC,KAAK,CAAChT,MAAMr0C,CAAC,CAAA,CAAG,CACpGq0C,KAAAA,CAAQ,IAAI,CAAC2rP,aAAY,CAE3B,MAAMliS,MAAAA,CAAS6/R,OAAQhlS,CAAAA,GAAG,CAAC,CAACuhB,MAAAA,CAAOmtC,KAAK,CAACo5O,MAAQA,IAAO,CAAA,CAACvmR,MAAOmtC,CAAAA,KAAK,CAAChwD,GAAOA,CAAAA,CAAAA,GAAAA,CAAM,IAAI,CAAC4oS,aAAa,CAACx7R,CAAC,CAAE,CAACyV,MAAOmtC,CAAAA,KAAK,CAACq5O,IAAAA,CAAAA,CAAQA,KAAO,CAACxmR,MAAAA,CAAOmtC,KAAK,CAAChwD,KAAOA,GAAM,CAAA,IAAI,CAAC4oS,aAAa,CAAC9zR,CAAC,CACrL,CAAA,MAAMw0R,WAAapB,kBAAmBlrP,CAAAA,KAAAA,CAAOv2C,MAC7C,CAAA,CAAA,GAAI4hS,iBAAiBjjS,cAAc,CAACkkS,UAAa,CAAA,CAAA,CAC/CtoD,OAASqnD,gBAAgB,CAACiB,UAAW,EACvC,CAAO,KAAA,CACLtoD,MAAS,CAAA,IAAI,CAAC0nD,cAAc,CAAC1vS,MAAM,CAAG,CACtCqvS,CAAAA,gBAAgB,CAACiB,UAAAA,CAAW,CAAGtoD,MAC/B,CAAA,IAAI,CAAC0nD,cAAc,CAAC7uS,IAAI,CAACvB,IAAAA,CAAKmV,KAAK,CAACuvC,KAAAA,CAAM3kD,CAAC,CAAG,KAAMC,IAAKmV,CAAAA,KAAK,CAACuvC,KAAAA,CAAMpwC,CAAC,CAAG,GAAA,CAAA,CAAMtU,IAAKmV,CAAAA,KAAK,CAACuvC,KAAAA,CAAMp0C,CAAC,CAAG,KAAMtQ,IAAKmV,CAAAA,KAAK,CAACuvC,KAAAA,CAAMr0C,CAAC,CAAG,GAAA,CAAA,CAAMrQ,IAAKmV,CAAAA,KAAK,CAAChH,MAAO2G,CAAAA,CAAC,CAAG,GAAA,CAAA,CAAM9U,IAAKmV,CAAAA,KAAK,CAAChH,MAAAA,CAAOqO,CAAC,CAAG,GAAA,CAAA,EACzL,CACF,CACA,IAAI,CAACi0R,mBAAmB,CAAClvS,IAAI,CAACmnP,MAAAA,EAChC,CACF,CAAA,KAAO,CACL,IAAI,CAACsnD,aAAa,CAAG,EACrB,CAAA,IAAI,CAACO,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACC,mBAAmB,CAAG,KAC7B,CACA,IAAI,CAACQ,uBAAuB,EAC5B,CAAA,IAAI,CAACC,sBAAsB,GAC3B,IAAI,CAACC,qBAAqB,EAAA,CAC1B,MAAMC,oBAAAA,CAAuB,IAAI,CAACC,yBAAyB,EAC3D,CAAA,IAAIC,YAAe,CAAA,KAAA,CACnB,MAAMl1P,OAAU,CAAA,IAAI,CAAC88D,QAAQ,CAC7B,MAAM45B,WAAAA,CAAc12F,OAAQ6lP,CAAAA,cAAc,EAC1C,CAAA,MAAMsP,YAAen1P,CAAAA,OAAAA,CAAQqnP,eAAe,EAC5C,CAAA,MAAMzB,SAAY,CAAA,SAAStuJ,MAAM,CAC/B,CAAA,OAAOt3F,OAAQ8lP,CAAAA,kBAAkB,CAACxuJ,MACpC,CAAA,CAAA,CACA,IAAI,IAAIjzI,CAAI,CAAA,CAAA,CAAGkY,GAAM,CAAA,IAAI,CAAC64R,SAAS,CAAC9wS,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACvD,MAAM6e,EAAI8xR,oBAAoB,CAAC3wS,CAAE,CAAA,EAAI,CACrC,CAAA,MAAM0sS,QAAW,CAAA,IAAI,CAACqE,SAAS,CAAC/wS,CAAE,CAAA,CAClC,GAAI0sS,QAAS1sP,CAAAA,KAAK,GAAKnhC,CAAAA,CAAG,CACxB,GAAI,CAACgyR,YAAc,CAAA,CACjBl1P,OAAQ07F,CAAAA,qBAAqB,CAAC,IAAI,CAACI,MAAM,CAAA,CACzCo5J,YAAe,CAAA,KACjB,CACAnE,QAAS1sP,CAAAA,KAAK,CAAGnhC,CACjB6tR,CAAAA,QAASzvP,CAAAA,SAAS,CAACh9C,MAAM,CAAGysS,QAAAA,CAAS/iK,OAAO,CAAC1pI,MAAM,CAAG4e,CAAAA,CAAI,CAAI,CAAA,CAC9D6tR,CAAAA,QAAAA,CAASniM,OAAO,CAACtqG,MAAM,CAAG4e,CAAAA,CAAI,CAAI,CAAA,CAClC6tR,CAAAA,QAAAA,CAAS5iK,GAAG,CAAC7pI,MAAM,CAAG4e,CAAAA,CAAI,CAAI,CAAA,CAC9B6tR,CAAAA,QAAS7iK,CAAAA,MAAM,CAAC5pI,MAAM,CAAG4e,CAAI,CAAA,CAAA,CAAI,CACjC6tR,CAAAA,QAASH,CAAAA,QAAQ,CAACtsS,MAAM,CAAG4e,CAAI,CAAA,CAAA,CAAI,CACnC6tR,CAAAA,SAASF,OAAO,CAACvsS,MAAM,CAAG4e,EAAI,CAAI,CAAA,CAAA,CAClC,GAAI6tR,QAAAA,CAAS9nK,YAAY,CAAE,CACzB,IAAI,CAACosK,mBAAmB,CAACtE,QAAS9nK,CAAAA,YAAY,EAChD,CACA,GAAI/lH,CAAM,GAAA,CAAA,CAAG,CACX6tR,QAAS9nK,CAAAA,YAAY,CAAG,IAAA,CACxB,QACF,CACA,IAAI,IAAInlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIof,CAAGpf,CAAAA,CAAAA,EAAAA,CAAI,CACxBitS,QAASniM,CAAAA,OAAO,CAAC9qG,CAAAA,CAAI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAAA,CAAI,CACtCitS,CAAAA,QAASniM,CAAAA,OAAO,CAAC9qG,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAI,CAAA,CAAA,CAAI,CAC1CitS,CAAAA,SAASniM,OAAO,CAAC9qG,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAAA,CAAI,EAAI,CAC1CitS,CAAAA,QAASniM,CAAAA,OAAO,CAAC9qG,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAI,CAAA,CAAA,CAAI,CAC1CitS,CAAAA,QAASniM,CAAAA,OAAO,CAAC9qG,CAAAA,CAAI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAAA,CAAI,EAAI,CAC1CitS,CAAAA,QAASniM,CAAAA,OAAO,CAAC9qG,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAAA,CAAI,CAAI,CAAA,CAC1CitS,CAAAA,QAAS/iK,CAAAA,OAAO,CAAClqI,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAClCitS,CAAAA,QAAAA,CAAS/iK,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAClCitS,CAAAA,QAAS/iK,CAAAA,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAC,CACnCitS,CAAAA,QAAAA,CAAS/iK,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CAClCitS,CAAAA,SAAS/iK,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CAClCitS,CAAAA,QAAS/iK,CAAAA,OAAO,CAAClqI,CAAAA,CAAI,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAC,CACnCitS,CAAAA,QAAAA,CAAS/iK,OAAO,CAAClqI,EAAI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAClCitS,CAAAA,QAAS/iK,CAAAA,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAClCitS,CAAAA,QAAS/iK,CAAAA,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAC,CACnCitS,CAAAA,SAAS/iK,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG,CAClCitS,CAAAA,SAAS/iK,OAAO,CAAClqI,CAAI,CAAA,CAAA,CAAI,CAAI,CAAA,EAAA,CAAG,CAAG,CACnCitS,CAAAA,QAAS/iK,CAAAA,OAAO,CAAClqI,CAAAA,CAAI,EAAI,CAAI,CAAA,EAAA,CAAG,CAAG,CAAC,EACtC,CACA,MAAMiqI,IAAO+iK,CAAAA,cAAAA,CAAe,IAAI,CAAC/J,OAAO,CAAC1yD,GAAG,CAACpmM,cAAc,CAAE8iQ,QAAAA,CAAAA,CAC7D,MAAM32J,EAAK,CAAA,IAAIzG,YAAa5F,CAAAA,IAAAA,CAAM,IAAI,CAACuH,SAAS,CAAE,IAAI,CAACkQ,KAAK,CAC5DpL,CAAAA,GAAGzyI,IAAI,CAAG,CAAC,cAAc,EAAE,IAAI,CAACu9R,OAAO,CAACv9R,IAAI,CAAC,CAC7CyyI,CAAAA,EAAAA,CAAGnB,UAAU,CAAG,KAChBmB,CAAAA,EAAAA,CAAGnE,aAAa,CAAG,KACnBmE,CAAAA,EAAAA,CAAGxC,IAAI,CAAG,CAAClB,WACX0D,CAAAA,EAAG1D,CAAAA,WAAW,CAAGA,WACjB0D,CAAAA,EAAAA,CAAGjB,SAAS,CAAG,IAAI,CAACs5J,UAAU,CAC9B,GAAI0C,YAAAA,CAAc,CAChB/6J,EAAAA,CAAGxC,IAAI,CAAG,IACVwC,CAAAA,EAAAA,CAAG5C,aAAa,CAAGouJ,UACrB,CACA,IAAI,CAAC0P,iBAAiB,CAACl7J,EAAAA,CAAI,IAAI,CAACm4J,KAAK,CAACtiQ,QAAQ,CAAC5rC,CAAE,CAAA,CAAA,CACjD+1I,EAAGrsC,CAAAA,YAAY,CAAC,mBAAA,CAAqB,IAAI,CAACu9L,aAAa,CACvDlxJ,CAAAA,EAAAA,CAAGrsC,YAAY,CAAC,mBAAoB,IAAI,CAACorD,MAAM,CAACllJ,CAAC,CACjDmmI,CAAAA,EAAAA,CAAGrsC,YAAY,CAAC,mBAAqB,CAAA,IAAI,CAACwkM,KAAK,CAACxsL,SAAS,CAAA,CACzDq0B,EAAGrsC,CAAAA,YAAY,CAAC,cAAgB,CAAA,IAAI,CAACwnM,WAAW,CAAC,IAAI,CAAChD,KAAK,CAAA,CAAA,CAC3Dn4J,EAAGrsC,CAAAA,YAAY,CAAC,mBAAA,CAAqB,IAAI,CAACwkM,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,EAAE,CAAC2lB,KAAK,CACvEowH,CAAAA,EAAAA,CAAGrsC,YAAY,CAAC,eAAiB,CAAA,IAAI,CAACynM,oBAAoB,CAAA,CAC1Dp7J,EAAGrsC,CAAAA,YAAY,CAAC,mBAAqB,CAAA,IAAI,CAAC0nM,sBAAsB,CAAG,IAAI,CAAC1B,iBAAiB,CAAA,CACzF35J,EAAGrsC,CAAAA,YAAY,CAAC,cAAA,CAAgB,IAAI,CAAC2nM,mBAAmB,CACxD,CAAA,GAAI,IAAI,CAACrB,mBAAmB,CAAE,CAC5B,IAAI,CAACsB,oBAAoB,CAAC,CAAE,CAAA,CAAG,CAC/B,CAAA,IAAI,CAACA,oBAAoB,CAAC,CAAA,CAAE,CAAG,EACjC,CAAA,KAAO,CACL,MAAMzvP,MAAQ,CAAC,IAAI,CAACqsP,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,CAAE,CAAA,CAAC2lB,KAAK,CAAG,IAAI,CAACuoR,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,CAAE,CAAA,CAAC4lB,MAAM,CACvF,IAAI,CAAC0rR,oBAAoB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACC,kBAAkB,CAAG,IAAI,CAAC1B,aAAa,CAACx7R,CAC5E,CAAA,IAAI,CAACi9R,oBAAoB,CAAC,CAAE,CAAA,CAAGzvP,KAAQ,CAAA,IAAI,CAAC0vP,kBAAkB,CAAG,IAAI,CAAC1B,aAAa,CAAC9zR,EACtF,CACAg6H,EAAGrsC,CAAAA,YAAY,CAAC,eAAA,CAAiB,IAAI,CAAC4nM,oBAAoB,CAC1D5E,CAAAA,SAAS9nK,YAAY,CAAGmR,EACxB,CAAA,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACzkI,IAAI,CAACi1I,EACjC,EAAA,CACF,CACA,GAAI,IAAI,CAACt9B,QAAQ,CAACouL,QAAQ,CAAE,CAC1B,IAAI,CAACpuL,QAAQ,CAAC+4L,YAAY,CAAC,IAAI,CAAC/4L,QAAQ,CAACouL,QAAQ,EACnD,CACA,GAAIgK,YAAAA,EAAgB,IAAI,CAACp4L,QAAQ,CAAC5lG,OAAO,EAAI,IAAI,CAACguR,OAAO,CAAChuR,OAAO,CAAE,CACjE,IAAI,CAAC4lG,QAAQ,CAACuoL,gBAAgB,CAAC,IAAI,CAACvpJ,MAAM,EAC5C,CACA,IAAI,CAACg6J,aAAa,EAClB,CAAA,IAAI,CAACC,WAAW,CAAG,CACnB,CAAA,IAAI,CAACC,SAAS,CAAG,IAAI,CAAC7G,QAAQ,CAAC7qS,MAAM,CACrC,IAAI,CAAC2xS,kBAAkB,GACzB,CACAZ,mBAAAA,CAAoBpsK,YAAY,CAAE,CAChCA,YAAaz7F,CAAAA,OAAO,GACpB,MAAM7+B,GAAAA,CAAM,IAAI,CAACmtI,MAAM,CAAClS,aAAa,CAACt8H,OAAO,CAAC27H,YAAAA,CAAAA,CAC9C,GAAIt6H,GAAAA,GAAQ,CAAC,CAAG,CAAA,CACd,IAAI,CAACmtI,MAAM,CAAClS,aAAa,CAACz8H,MAAM,CAACwB,GAAAA,CAAK,CACxC,EAAA,CACF,CACAojS,YAAa7qK,CAAAA,QAAQ,CAAE,CACrB,IAAI,CAACoO,SAAS,CAAGpO,QAAAA,CACjB,GAAI,IAAI,CAAC4U,MAAM,CAAE,CACf,IAAI,IAAIz3I,CAAAA,CAAI,EAAGkY,GAAM,CAAA,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClE,MAAM+1I,EAAK,CAAA,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,CAAE,CACvC+1I,CAAAA,EAAGlT,CAAAA,QAAQ,CAAGA,SAChB,CACF,CACF,CACAy/J,eAAgBjwJ,CAAAA,WAAW,CAAE,CAC3B,MAAM12F,OAAAA,CAAU,IAAI,CAAC88D,QAAQ,CAC7B,MAAMq4L,aAAen1P,OAAQqnP,CAAAA,eAAe,EAC5C,CAAA,MAAMzB,UAAY,SAAStuJ,MAAM,CAC/B,CAAA,OAAOt3F,OAAQ8lP,CAAAA,kBAAkB,CAACxuJ,MAAAA,CACpC,EACA,MAAM4+J,IAAAA,CAAO,IAAI,CAAC3D,KAAK,EAAI,IAAI,CAACA,KAAK,CAACz2R,IAAI,GAAKuxR,SAC/C,CAAA,IAAI,CAAC/3J,SAAS,CAAG,IAAI,CAACyxJ,OAAO,CAACoP,sBAAsB,CAACz/J,WAAAA,CAAaw/J,IAAM,CAAA,IAAI,CAACjD,aAAa,CAAA,CAC1F,GAAI,IAAI,CAACn3J,MAAM,CAAE,CACf,IAAI,IAAIz3I,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClE,MAAM+1I,EAAAA,CAAK,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,CAAE,CACvC+1I,CAAAA,EAAAA,CAAGxC,IAAI,CAAG,CAAClB,WACX0D,CAAAA,EAAGlT,CAAAA,QAAQ,CAAG,IAAI,CAACoO,SACnB8E,CAAAA,EAAAA,CAAG1D,WAAW,CAAGA,WAAAA,CACjB,GAAIy+J,YAAAA,CAAc,CAChB/6J,EAAGxC,CAAAA,IAAI,CAAG,IACVwC,CAAAA,EAAAA,CAAG5C,aAAa,CAAGouJ,UACrB,CAAO,KAAA,CACLxrJ,EAAG5C,CAAAA,aAAa,CAAG,KACrB,CACF,CACF,CACF,CACAq9J,uBAA0B,EAAA,CACxB,GAAI,IAAI,CAACV,aAAa,CAAE,CACtB,IAAI,CAAC7I,aAAa,CAAC,CAAA,CAAE,CAAG,CACxB,CAAA,IAAI,CAACA,aAAa,CAAC,CAAA,CAAE,CAAG,CACxB,CAAA,IAAI,CAACA,aAAa,CAAC,CAAE,CAAA,CAAG,EAC1B,CAAA,KAAO,CACLuG,YAAa73R,CAAAA,MAAM,CAAC,IAAI,CAACm/I,MAAM,CAC/B,CAAA,IAAI,CAACmyI,aAAa,CAAC,CAAA,CAAE,CAAGuG,YAAaluS,CAAAA,CAAC,CACtC,IAAI,CAAC2nS,aAAa,CAAC,EAAE,CAAGuG,YAAAA,CAAa35R,CACrC,CAAA,IAAI,CAACozR,aAAa,CAAC,CAAE,CAAA,CAAGuG,YAAa39R,CAAAA,EAAC,CAE1C,CACA4gS,sBAAyB,EAAA,CACvB,GAAI,IAAI,CAACV,oBAAoB,CAAE,CAC7B,IAAI,CAACoB,oBAAoB,CAAC,CAAE,CAAA,CAAG,CAC/B,CAAA,IAAI,CAACA,oBAAoB,CAAC,CAAA,CAAE,CAAG,CAC/B,CAAA,IAAI,CAACA,oBAAoB,CAAC,CAAE,CAAA,CAAG,CAC/B,CAAA,IAAI,CAACA,oBAAoB,CAAC,CAAE,CAAA,CAAG,EACjC,CAAA,KAAO,CACL3D,YAAa73R,CAAAA,MAAM,CAAC,IAAI,CAAC85R,aAAa,CACtC,CAAA,IAAI,CAAC0B,oBAAoB,CAAC,CAAA,CAAE,CAAG3D,YAAaluS,CAAAA,CAAC,CAC7C,IAAI,CAAC6xS,oBAAoB,CAAC,CAAA,CAAE,CAAG3D,YAAAA,CAAa35R,CAC5C,CAAA,IAAI,CAACs9R,oBAAoB,CAAC,EAAE,CAAG3D,YAAAA,CAAa39R,CAC5C,CAAA,IAAI,CAACshS,oBAAoB,CAAC,CAAE,CAAA,CAAG3D,YAAa59R,CAAAA,EAAC,CAEjD,CACA8gS,qBAAwB,EAAA,CACtB,GAAI,IAAI,CAACX,oBAAoB,CAAE,CAC7B,IAAI,CAACsB,mBAAmB,CAAC,CAAE,CAAA,CAAG,CAC9B,CAAA,IAAI,CAACA,mBAAmB,CAAC,CAAA,CAAE,CAAG,CAC9B,CAAA,IAAI,CAACA,mBAAmB,CAAC,CAAA,CAAE,CAAG,CAC9B,CAAA,IAAI,CAACA,mBAAmB,CAAC,CAAE,CAAA,CAAG,EAChC,CAAA,KAAO,CACL7D,YAAAA,CAAa73R,MAAM,CAAC,IAAI,CAACi6R,YAAY,CACrC,CAAA,IAAI,CAACyB,mBAAmB,CAAC,EAAE,CAAG7D,YAAAA,CAAaluS,CAC3C,CAAA,IAAI,CAAC+xS,mBAAmB,CAAC,EAAE,CAAG7D,YAAAA,CAAa35R,CAC3C,CAAA,IAAI,CAACw9R,mBAAmB,CAAC,CAAE,CAAA,CAAG7D,YAAa39R,CAAAA,CAAC,CAC5C,IAAI,CAACwhS,mBAAmB,CAAC,CAAE,CAAA,CAAG7D,YAAa59R,CAAAA,EAAC,CAEhD,CACAmiS,eAAAA,CAAgBprS,IAAI,CAAE,CACpB,OAAOkmS,kBAAAA,CAAmBnqS,IAAI,CAACiE,IAAAA,CACjC,CACAqrS,gBAAAA,CAAiBC,QAAQ,CAAE,CACzB,OAAOA,QAAAA,GAAa,IAAQ,EAAA,CAACjF,sBAAuBtqS,CAAAA,IAAI,CAACuvS,QAC3D,CAAA,CACAC,kBAAmBvrS,CAAAA,IAAI,CAAEsrS,QAAQ,CAAE,CACjC,OAAOlF,QAASrqS,CAAAA,IAAI,CAACiE,IAAAA,CAAAA,GAAUkmS,kBAAAA,CAAmBnqS,IAAI,CAACuvS,WAAanF,iBAAkBpqS,CAAAA,IAAI,CAACuvS,QAAAA,CAAQ,CACrG,CACAE,mBAAAA,CAAoBF,QAAQ,CAAE,CAC5B,OAAOlF,QAAAA,CAASrqS,IAAI,CAACuvS,QACvB,CAAA,CACAR,aAAgB,EAAA,CACd,MAAMW,IAAO,CAAA,IAAI,CAAClE,KAAK,CAACl0R,IAAI,CAC5B,MAAMxW,KAAAA,CAAO,IAAI,CACjB,MAAM6uS,OAAU9yS,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,IAAI,CAAC4+R,YAAY,CAAE,IAAI,CAACC,YAAY,EAC7D,MAAMC,OAAAA,CAAU,IAAI,CAACD,YAAY,CACjC,MAAME,OAAU,CAAA,IAAI,CAACC,cAAc,EACnC,CAAA,GAAID,QAAS,CACX,IAAI,CAACE,SAAS,CAAG,IAAI,CAACJ,aAAY,CAEpC,MAAMK,KAAQ,CAAA,EAAA,CACd,MAAM/zR,CAAAA,CAAI,IAAI,CAACisR,QAAQ,CAAC7qS,MAAM,CAC9B,IAAI4yS,GAAK,CACT,CAAA,IAAIC,EAAK,CAAA,CAAA,CACT,IAAIC,EAAK,CAAA,CAAA,CACT,IAAIC,yBAAAA,CAA4B,CAChC,CAAA,IAAInrO,KAAQ,CAAA,CAAA,CACZ,IAAIorO,UAAa,CAAA,CAAA,CACjB,IAAIC,cAAAA,CAAiB,EACrB,IAAIC,cAAAA,CAAiB,CACrB,CAAA,IAAIC,iBAAmB,CACvB,CAAA,IAAIC,gBAAmB,CAAA,CAAA,CACvB,IAAIC,iBAAAA,CAAoB,CACxB,CAAA,MAAMC,uBAAyBh0S,IAAKma,CAAAA,GAAG,CAAC,IAAI,CAAC++F,QAAQ,CAAC+6L,MAAM,CAACn/R,CAAC,CAAG,IAAI,CAACokG,QAAQ,CAAC+6L,MAAM,CAACt3R,CAAC,GAAK,IAC5F,CAAA,IAAIu3R,YAAe,CAAA,IAAI,CAACh7L,QAAQ,CAACyqL,eAAe,CAChD,GAAI,IAAI,CAACwQ,SAAS,EAAI,CAACH,sBAAAA,EAA0B,CAAC,IAAI,CAACI,UAAU,CAAE,CACjEF,YAAAA,CAAe3pR,OAAO0uH,kBACxB,CACA,IAAIo7J,SAAW,CACf,CAAA,IAAIC,QAAW,CAAA,CAAA,CACf,IAAIltS,IAAAA,CAAMqT,IAAMqqH,CAAAA,IAAAA,CAAM4tK,SACtB,SAAS6B,SAAAA,CAAU/I,OAAO,CAAEgJ,cAAc,CAAEC,UAAU,CACpDxwS,CAAAA,KAAAA,CAAKywS,WAAW,CAACnzS,IAAI,CAACvB,IAAAA,CAAKma,GAAG,CAACs6R,UAC/B,CAAA,CAAA,CAAA,MAAME,WAAaf,cAAiBY,CAAAA,cAAAA,CAAiBA,cAAiB,CAAA,CAAA,CAAIZ,eAC1E,MAAMgB,QAAAA,CAAWhB,cAAiBY,CAAAA,cAAAA,CAAiBZ,eAAiB,CAAIY,CAAAA,cAAAA,CACxE,MAAMK,KAAAA,CAAQrJ,OAAQlqS,CAAAA,KAAK,CAACqzS,UAAAA,CAAYC,UACxC,GAAIb,iBAAAA,CAAmB,CACrB,IAAItzS,CAAIo0S,CAAAA,KAAAA,CAAMn0S,MAAM,CACpB,MAAMD,CAAOszS,EAAAA,EAAAA,iBAAAA,CAAoB,CAAE,CAAA,CACjC,GAAI3G,eAAAA,CAAgBjqS,IAAI,CAAC0xS,KAAK,CAACp0S,CAAAA,CAAE,CAAG,CAAA,CAClCo0S,MAAMtrS,MAAM,CAAC9I,CAAG,CAAA,CAAA,CAChBszS,CAAAA,iBACF,GAAA,CACF,CACF,CACA9vS,KAAK6wS,CAAAA,aAAa,CAACvzS,IAAI,CAACszS,KAAMv0S,CAAAA,IAAI,CAAC,EAAA,CAAA,CAAA,CACnCgzS,GAAK,CACLC,CAAAA,EAAAA,EAAMtvS,KAAK8wS,CAAAA,iBAAiB,CAC5BzsO,KAAAA,EAAAA,CACAurO,gBAAmB,CAAA,CAAA,CACnBC,gBAAmB,CAAA,CAAA,CACnBC,iBAAoB,CAAA,CAAA,CACpBL,WAAa,CACbE,CAAAA,cAAAA,CAAiBY,eACnB,CACA,IAAIQ,iBAAoB,CAAA,IAAA,CACxB,MAAMA,iBAAAA,CAAkB,CACtBA,iBAAoB,CAAA,KAAA,CACpB,GAAI9B,OAAAA,CAAS,CACX,IAAI,CAAC6B,iBAAiB,CAAG,IAAI,CAACE,WAAW,CAAG,IAAI,CAAC7B,SAAS,EAAI,IAAI,CAACJ,YAAY,EAAI,IAAK,EAC1F,CAAA,KAAO,CACL,IAAI,CAAC+B,iBAAiB,CAAG,IAAI,CAACE,YAAW,CAE3C,IAAI,CAAC7uR,KAAK,CAAG,CACb,CAAA,IAAI,CAACC,MAAM,CAAG,CACd,CAAA,IAAI,CAACquR,WAAW,CAAG,EAAE,CACrB,IAAI,CAACI,aAAa,CAAG,EAAE,CACvBxB,EAAAA,CAAK,CACLC,CAAAA,EAAAA,CAAK,CACLC,CAAAA,EAAAA,CAAK,EACLC,yBAA4B,CAAA,CAAA,CAC5BnrO,KAAQ,CAAA,CAAA,CACRorO,WAAa,CACbC,CAAAA,cAAAA,CAAiB,CACjBC,CAAAA,cAAAA,CAAiB,EACjBC,gBAAmB,CAAA,CAAA,CACnBC,gBAAmB,CAAA,CAAA,CACnBC,iBAAoB,CAAA,CAAA,CACpB,MAAMhxR,KAAAA,CAAQ,IAAI,CAACqwR,SAAS,CAAGC,KAAAA,CAC/BgB,QAAW,CAAA,IAAI,CAACa,SAAS,CAAGnyR,KAC5BuxR,CAAAA,QAAAA,CAAW,IAAI,CAACa,SAAS,CAAGpyR,KAC5B,CAAA,IAAI,IAAItiB,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC+wS,SAAS,CAAC9wS,MAAM,CAAED,IAAI,CAC5C,IAAI,CAAC+wS,SAAS,CAAC/wS,CAAAA,CAAE,CAACqkI,IAAI,CAAG,CACzB,CAAA,IAAI,CAAC0sK,SAAS,CAAC/wS,CAAAA,CAAE,CAAC6nE,KAAK,CAAG,GAC5B,CACA,IAAI8sO,OAAU,CAAA,GAAA,CACd,IAAIC,OAAAA,CAAU,IACd,IAAIC,OAAAA,CAAU,GACd,CAAA,IAAIC,iBAAmB,GAAM,CAAA,GAAA,CAAM,GACnC,CAAA,IAAIC,iBAAmB,GAAM,CAAA,GAAA,CAAM,GACnC,CAAA,IAAIC,iBAAoB,CAAA,CAAA,CACxB,IAAIC,eAAAA,CAAkB,IAAM,GAAM,CAAA,GAAA,CAClC,IAAIC,eAAAA,CAAkB,IAAM,GAAM,CAAA,GAAA,CAClC,IAAIC,gBAAAA,CAAmB,IAAM,GAAM,CAAA,GAAA,CACnC,IAAI,IAAIn1S,CAAI,CAAA,CAAA,CAAGA,CAAI6e,CAAAA,CAAAA,CAAG7e,IAAI,CACxB2G,IAAAA,CAAO,IAAI,CAACmkS,QAAQ,CAAC9qS,CAAAA,CAAE,CACvBiyS,QAAAA,CAAWjyS,EAAI,CAAK6e,EAAAA,CAAAA,CAAI,IAAO,CAAA,IAAI,CAACisR,QAAQ,CAAC9qS,CAAAA,CAAI,EAAE,CACnD,MAAMo1S,WAAczI,CAAAA,eAAAA,CAAgBjqS,IAAI,CAACiE,IAAAA,CAAAA,CACzC,GAAIyuS,WAAAA,CAAa,CACf9B,iBACA,EAAA,CAAA,GAAI,CAAC,IAAI,CAACK,UAAU,EAAI,IAAI,CAAC0B,SAAS,CAAG,CAAKxtO,EAAAA,KAAAA,CAAQ,IAAI,CAACwtO,SAAS,CAAE,CACpEvB,UAAU,IAAI,CAAChJ,QAAQ,CAAE9qS,CAAGgzS,CAAAA,yBAAAA,CAAAA,CAC5BE,cAAiBlzS,CAAAA,CAAAA,CAAI,EACrBmzS,cAAiBnzS,CAAAA,CAAAA,CAAI,EACvB,CACA,QACF,CACA,IAAIqU,CAAAA,CAAI,EACR,IAAI0H,CAAAA,CAAI,CACR,CAAA,IAAIu5R,OAAU,CAAA,CAAA,CACd,IAAIC,QAAAA,CAAW,EACf,IAAIC,SAAAA,CAAWtwS,IACf8U,CAAAA,IAAAA,CAAOo4R,KAAKgC,KAAK,CAACztS,IAAK,CAAA,CACvB,GAAI,CAACqT,IAAAA,CAAM,CACT,GAAIizR,aAAchkS,CAAAA,OAAO,CAACtC,IAAAA,CAAAA,GAAU,CAAC,CAAG,CAAA,CACtCqT,IAAOkzR,CAAAA,mBACT,MAAO,CACL,GAAIkF,IAAKgC,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAE,CACnBp6R,IAAAA,CAAOo4R,IAAKgC,CAAAA,KAAK,CAAC,GAAA,EAAI,CACjB,KAAA,CACL,IAAI,MAAMvsS,OAAOuqS,IAAKgC,CAAAA,KAAK,CAAC,CAC1Bp6R,KAAOo4R,IAAKgC,CAAAA,KAAK,CAACvsS,GAAAA,CAAI,CACtB,KACF,CACF,CACF,CACF,CACA,GAAImS,IAAM,CAAA,CACR,IAAIy7R,OAAAA,CAAU,CACd,CAAA,GAAIpC,iBAAmB,CAAG,CAAA,CACxB,MAAMqC,SAAAA,CAAY,IAAI,CAACxH,KAAK,CAACl0R,IAAI,CAACy7R,OAAO,CACzC,GAAIC,UAAW,CACb,MAAMC,QAAWD,CAAAA,SAAS,CAACzwS,MAAOgB,CAAAA,YAAY,CAAC,IAAI,CAAC6kS,QAAQ,CAAC9qS,CAAAA,CAAI,EAAE,CAAK,EAAA,CAAA,CAAE,CAC1E,GAAI21S,SAAU,CACZF,OAAAA,CAAUE,QAAQ,CAAC1wS,OAAOgB,YAAY,CAAC,IAAI,CAAC6kS,QAAQ,CAAC9qS,CAAE,CAAA,CAAA,EAAK,EAAE,EAAI,EACpE,CACF,CACF,CACAw1S,SAAYx7R,CAAAA,IAAAA,CAAKsI,KAAK,EAAI,EAC1Bpd,IAAO,CAAC8U,CAAAA,IAAAA,CAAK2L,KAAK,CAAG3L,IAAK4L,CAAAA,MAAM,EAAI,CAAA,CACpC2vR,QAAWjzR,CAAAA,KAAAA,CAAQpd,IAAOswS,CAAAA,SAAAA,CAC1BF,OAAU,CAACt7R,CAAAA,IAAKmzR,CAAAA,QAAQ,CAAGsI,OAAM,EAAKnzR,KAAAA,CACtCjO,CAAI,CAAC2F,CAAAA,IAAKozR,CAAAA,OAAO,CAAGqI,OAAM,EAAKnzR,KAC/BvG,CAAAA,CAAAA,CAAI/B,IAAKqzR,CAAAA,OAAO,CAAG/qR,MACrB,CAAA,KAAO,CACL7V,OAAAA,CAAQC,KAAK,CAAC,CAAC,wCAAwC,EAAE/F,IAAK,CAAA,CAAC,CAAC,EAClE,CACA,MAAMivS,YAAAA,CAAehJ,eAAgBlqS,CAAAA,IAAI,CAACiE,IAC1C,CAAA,CAAA,MAAMkvS,UAAa77R,CAAAA,IAAAA,EAAQA,IAAKnT,CAAAA,GAAG,EAAI,CAAA,CACvC,MAAMg7C,KAAQ,CAAA,CAAC,IAAI,CAACqsP,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAACg0K,UAAW,CAAA,CAAClwR,KAAK,CAAG,IAAI,CAACuoR,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAACg0K,UAAW,CAAA,CAACjwR,MAAM,CACzG,MAAM8mR,QAAW,CAAA,IAAI,CAACqE,SAAS,CAAC8E,UAAAA,CAAW,CAC3C,MAAMC,kBAAAA,CAAqBjD,EAAK,CAAA,IAAI,CAACkD,QAAQ,CAAGT,OAChD,CAAA,GAAIQ,mBAAqBrC,YAAgBJ,EAAAA,gBAAAA,CAAmB,CAAK,EAAA,CAACuC,YAAc,CAAA,CAC9E,GAAI,IAAI,CAACP,SAAS,CAAG,CAAKxtO,EAAAA,KAAAA,CAAQ,IAAI,CAACwtO,SAAS,CAAE,CAChD,GAAIjC,gBAAqB,GAAA,CAAA,CAAG,CAC1BF,cAAAA,CAAiBlzS,CACjB8zS,CAAAA,SAAAA,CAAU,IAAI,CAAChJ,QAAQ,CAAE9qS,CAAAA,CAAGgzS,yBAC9B,EAAA,CAAA,KAAO,CACL,MAAMgD,SAAAA,CAAYz2S,IAAKoU,CAAAA,GAAG,CAAC3T,CAAIkzS,CAAAA,cAAAA,CAAgB,CAC/C,CAAA,CAAA,GAAI,IAAI,CAACnC,SAAS,CAAC9wS,MAAM,EAAI,CAAA,CAAG,CAC9BysS,QAAAA,CAAS7kO,KAAK,CAACA,KAAQ,CAAA,CAAA,CAAE,EAAImuO,SAC7BtJ,CAAAA,QAASroK,CAAAA,IAAI,EAAI2xK,UACnB,CAAO,KAAA,CACL,MAAMC,cAAiB/C,CAAAA,cAAAA,CACvB,MAAMgD,YAAAA,CAAel2S,EACrB,IAAI,IAAIumF,CAAI0vN,CAAAA,cAAAA,CAAgB1vN,EAAI2vN,YAAc3vN,CAAAA,CAAAA,EAAAA,CAAI,CAChD,MAAM4vN,QAAW,CAAA,IAAI,CAACrL,QAAQ,CAACvkN,CAAE,CAAA,CACjC,MAAM6vN,YAAAA,CAAehE,KAAKgC,KAAK,CAAC+B,QAAS,CAAA,CACzC,MAAME,YAAe,CAAA,IAAI,CAACtF,SAAS,CAACqF,YAAAA,EAAgBA,YAAavvS,CAAAA,GAAG,EAAI,CAAE,CAC1EwvS,CAAAA,YAAAA,CAAaxuO,KAAK,CAACA,KAAAA,CAAQ,CAAE,CAAA,EAAI,CACjCwuO,CAAAA,YAAAA,CAAahyK,IAAI,EAAI,EACvB,CACF,CACArkI,CAAAA,EAAKg2S,UAAY,CACjBlC,CAAAA,SAAAA,CAAU,IAAI,CAAChJ,QAAQ,CAAEoI,cAAAA,CAAgBD,UACzC,CAAA,CAAA,QACF,CACF,CACF,CACA5uK,IAAOqoK,CAAAA,QAAAA,CAASroK,IAChBqoK,CAAAA,QAAAA,CAAS7kO,KAAK,CAACA,KAAAA,CAAQ,CAAE,CAAA,CAAGw8D,KAC5B,IAAIl1H,IAAAA,CAAO0jS,EAAKx+R,CAAAA,CAAAA,CAChB,IAAIjF,KAAQD,CAAAA,IAAAA,CAAOomS,QACnB,CAAA,MAAM9wR,MAASquR,CAAAA,EAAAA,CAAK/2R,CACpB,CAAA,MAAM2I,IAAMD,MAAS8wR,CAAAA,QAAAA,CACrB,GAAI,IAAI,CAACvG,IAAI,CAAE,CACb,MAAMr7P,MAAQ4hQ,QAAWlhS,CAAAA,CAAAA,CAAI,IAAI,CAAC0hS,QAAQ,CAAGT,OAAUjhS,CAAAA,CAAAA,CACvDlF,MAAQwkC,KACRvkC,CAAAA,KAAAA,EAASukC,MACX,CACA+4P,SAASzvP,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAGl1H,IACvCu9R,CAAAA,QAASzvP,CAAAA,SAAS,CAAConF,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG5/G,MACvCioR,CAAAA,QAAAA,CAASzvP,SAAS,CAAConF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG0uK,EACvCrG,CAAAA,QAASzvP,CAAAA,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGj1H,KACvCs9R,CAAAA,QAASzvP,CAAAA,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG5/G,MACvCioR,CAAAA,QAAAA,CAASzvP,SAAS,CAAConF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG0uK,EACvCrG,CAAAA,QAAAA,CAASzvP,SAAS,CAAConF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGj1H,KACvCs9R,CAAAA,SAASzvP,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG3/G,GACvCgoR,CAAAA,SAASzvP,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG0uK,EACvCrG,CAAAA,QAASzvP,CAAAA,SAAS,CAAConF,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGl1H,IACvCu9R,CAAAA,QAASzvP,CAAAA,SAAS,CAAConF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAG,CAAA,CAAG3/G,GACxCgoR,CAAAA,QAAAA,CAASzvP,SAAS,CAAConF,KAAO,CAAI,CAAA,CAAA,CAAI,EAAG,CAAA,CAAG0uK,EACxC,CAAA,IAAI,CAACptR,KAAK,CAAGpmB,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAACgS,KAAK,CAAEmwR,kBAAAA,CAAAA,CAClC,IAAIQ,QACJ,CAAA,GAAI,IAAI,CAACC,mBAAmB,EAAM,EAAA,IAAI,CAAC5wR,KAAK,CAAG,IAAI,CAAC8yF,QAAQ,CAACyqL,eAAe,CAAE,CAC5EoT,QAAAA,CAAW/2S,KAAKmQ,KAAK,CAAC,IAAI,CAAC+oG,QAAQ,CAAC69L,QAAQ,CAAG,IAAI,CAAC79L,QAAQ,CAACyqL,eAAe,EAAI,IAAI,CAACv9Q,KAAK,EAAI,IAAK,CACnG2wR,CAAAA,CAAAA,QAAAA,CAAWjjS,KAAKI,KAAK,CAAC6iS,QAAUjE,CAAAA,OAAAA,CAASG,OACzC,CAAA,CAAA,GAAI8D,QAAa,GAAA,IAAI,CAAC79L,QAAQ,CAAC69L,QAAQ,CAAE,CACvC,IAAI,CAAC3D,SAAS,CAAG2D,SACjB/B,iBAAoB,CAAA,IAAA,CACpB,KACF,CACF,CACA,IAAI,CAAC3uR,MAAM,CAAGrmB,IAAKoU,CAAAA,GAAG,CAAC,IAAI,CAACiS,MAAM,CAAEiuR,QAAYf,EAAAA,GAAKc,QAAO,CAAA,CAAA,CAC5D,GAAI,IAAI,CAAC4C,oBAAoB,EAAM,EAAA,IAAI,CAAC5wR,MAAM,CAAG,IAAI,CAAC6yF,QAAQ,CAAC0qL,gBAAgB,CAAE,CAC/EmT,SAAWjjS,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAACk/R,SAAS,CAAG,CAAA,CAAGN,QAASG,OACnD,CAAA,CAAA,GAAI8D,QAAa,GAAA,IAAI,CAAC79L,QAAQ,CAAC69L,QAAQ,CAAE,CACvC,IAAI,CAAC3D,SAAS,CAAG2D,QACjB/B,CAAAA,iBAAAA,CAAoB,IACpB,CAAA,KACF,CACF,CACA1B,EAAAA,EAAM,IAAI,CAACkD,QAAQ,CAAGT,OAAAA,CACtB,GAAI,CAACM,aAAc,CACjB5C,yBAAAA,CAA4BH,GAC9B,CACA,GAAI,IAAI,CAACd,eAAe,CAACprS,IAAS,CAAA,EAAA,IAAI,CAACqrS,gBAAgB,CAACC,QAAc,CAAA,GAAA,IAAI,CAACC,kBAAkB,CAACvrS,IAAAA,CAAMsrS,QAAa,CAAA,EAAA,IAAI,CAACE,mBAAmB,CAACF,QAAAA,CAAQ,EAAI,CACpJmB,gBAAAA,EAAAA,CACAH,UAAaD,CAAAA,yBAAAA,CACbE,eAAiBlzS,CAAI,CAAA,EACvB,CACAqzS,gBAAAA,EAAAA,CACA,MAAMlqF,EAAK,CAAA,IAAI,CAACstF,MAAM,CAAC9vS,IAAAA,CACvB+lS,CAAAA,QAAAA,CAAS5iK,GAAG,CAACzF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG8kF,EAAE,CAAC,EAAE,CACtCujF,QAAS5iK,CAAAA,GAAG,CAACzF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG,CAAA,CAAM8kF,EAAE,CAAC,EAAE,CAC5CujF,QAAS5iK,CAAAA,GAAG,CAACzF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG8kF,EAAE,CAAC,CAAA,CAAE,CACtCujF,QAAAA,CAAS5iK,GAAG,CAACzF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,EAAM8kF,EAAE,CAAC,CAAE,CAC5CujF,CAAAA,QAAAA,CAAS5iK,GAAG,CAACzF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG8kF,EAAE,CAAC,CAAA,CAAE,CACtCujF,SAAS5iK,GAAG,CAACzF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAA,CAAM8kF,EAAE,CAAC,CAAA,CAAE,CAC5CujF,SAAS5iK,GAAG,CAACzF,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG8kF,EAAE,CAAC,CAAE,CACtCujF,CAAAA,QAAAA,CAAS5iK,GAAG,CAACzF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG,CAAA,CAAM8kF,EAAE,CAAC,EAAE,CAC5C,GAAI,IAAI,CAAC2mF,aAAa,CAAE,CACtB,MAAM4G,SAAW,IAAI,CAAC5G,aAAa,CAAC9vS,EAAE,CAAG,CAAA,CACzC20S,OAAU,CAAA,IAAI,CAACpF,aAAa,CAACmH,QAAS,CAAA,CACtC9B,OAAU,CAAA,IAAI,CAACrF,aAAa,CAACmH,QAAW,CAAA,CAAA,CAAE,CAC1C7B,OAAAA,CAAU,IAAI,CAACtF,aAAa,CAACmH,QAAAA,CAAW,GAAE,CAE5ChK,QAAS7iK,CAAAA,MAAM,CAACxF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGswK,OACpCjI,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAGuwK,OACpClI,CAAAA,QAAS7iK,CAAAA,MAAM,CAACxF,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGwwK,OACpCnI,CAAAA,QAAS7iK,CAAAA,MAAM,CAACxF,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GACpCqoK,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGswK,OACpCjI,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGuwK,OACpClI,CAAAA,QAAS7iK,CAAAA,MAAM,CAACxF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGwwK,OACpCnI,CAAAA,QAAS7iK,CAAAA,MAAM,CAACxF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG,GACpCqoK,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGswK,OACpCjI,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGuwK,OACpClI,CAAAA,SAAS7iK,MAAM,CAACxF,IAAO,CAAA,CAAA,CAAI,EAAI,EAAG,CAAA,CAAGwwK,OACrCnI,CAAAA,SAAS7iK,MAAM,CAACxF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,EAAA,CAAG,CAAG,GACrCqoK,CAAAA,QAAS7iK,CAAAA,MAAM,CAACxF,IAAAA,CAAO,EAAI,CAAI,CAAA,EAAA,CAAG,CAAGswK,OACrCjI,CAAAA,QAAS7iK,CAAAA,MAAM,CAACxF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAG,CAAA,CAAGuwK,OACrClI,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,KAAO,CAAI,CAAA,CAAA,CAAI,EAAG,CAAA,CAAGwwK,OACrCnI,CAAAA,QAAAA,CAAS7iK,MAAM,CAACxF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,EAAA,CAAG,CAAG,GACrC,CAAA,GAAI,IAAI,CAAC0rK,oBAAoB,CAAE,CAC7B,MAAM4G,WAAa,IAAI,CAAC5G,oBAAoB,CAAC/vS,CAAE,CAAA,CAAG,CAClD80S,CAAAA,gBAAAA,CAAmB,IAAI,CAACtF,eAAe,CAACmH,UAAAA,CAAW,CAAG,IAAI,CAACnH,eAAe,CAACmH,WAAa,CAAE,CAAA,CAAG,GAC7F5B,CAAAA,gBAAAA,CAAmB,IAAI,CAACvF,eAAe,CAACmH,WAAa,CAAE,CAAA,CAAG,IAAI,CAACnH,eAAe,CAACmH,UAAAA,CAAa,CAAE,CAAA,CAAG,IACjG3B,iBAAoB,CAAA,IAAI,CAACxF,eAAe,CAACmH,UAAAA,CAAa,CAAE,EAC1D,CACAjK,QAASH,CAAAA,QAAQ,CAACloK,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGywK,gBACtCpI,CAAAA,QAASH,CAAAA,QAAQ,CAACloK,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG0wK,gBACtCrI,CAAAA,QAAAA,CAASH,QAAQ,CAACloK,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG2wK,iBACtCtI,CAAAA,QAAAA,CAASH,QAAQ,CAACloK,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGywK,gBACtCpI,CAAAA,QAASH,CAAAA,QAAQ,CAACloK,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG0wK,gBACtCrI,CAAAA,QAASH,CAAAA,QAAQ,CAACloK,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG2wK,iBACtCtI,CAAAA,QAAAA,CAASH,QAAQ,CAACloK,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGywK,gBACtCpI,CAAAA,QAAAA,CAASH,QAAQ,CAACloK,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG0wK,gBACtCrI,CAAAA,SAASH,QAAQ,CAACloK,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG2wK,iBACtCtI,CAAAA,QAASH,CAAAA,QAAQ,CAACloK,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGywK,gBACtCpI,CAAAA,QAAAA,CAASH,QAAQ,CAACloK,KAAO,CAAI,CAAA,CAAA,CAAI,EAAG,CAAA,CAAG0wK,gBACvCrI,CAAAA,QAASH,CAAAA,QAAQ,CAACloK,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,EAAA,CAAG,CAAG2wK,iBACvC,CAAA,GAAI,IAAI,CAAChF,mBAAmB,CAAE,CAC5B,MAAM4G,SAAAA,CAAY,IAAI,CAAC5G,mBAAmB,CAAChwS,EAAE,CAAG,CAAA,CAChDi1S,eAAkB,CAAA,IAAI,CAACtF,cAAc,CAACiH,SAAU,CAAA,CAAG,IAAI,CAACjH,cAAc,CAACiH,SAAAA,CAAY,CAAE,CAAA,CAAG,GACxF1B,CAAAA,eAAAA,CAAkB,IAAI,CAACvF,cAAc,CAACiH,SAAAA,CAAY,EAAE,CAAG,IAAI,CAACjH,cAAc,CAACiH,SAAY,CAAA,CAAA,CAAE,CAAG,GAAA,CAC5FzB,gBAAmB,CAAA,IAAI,CAACxF,cAAc,CAACiH,SAAY,CAAA,CAAA,CAAE,CAAG,GAAA,CAAMr3S,IAAKmV,CAAAA,KAAK,CAACmtC,KAAAA,CAAQ,IAAI,CAAC8tP,cAAc,CAACiH,SAAAA,CAAY,CAAE,CAAA,CAAG,GAAO,CAAA,CAAA,IAC/H,CACAlK,QAASF,CAAAA,OAAO,CAACnoK,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG4wK,eACrCvI,CAAAA,QAASF,CAAAA,OAAO,CAACnoK,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG6wK,eACrCxI,CAAAA,QAAAA,CAASF,OAAO,CAACnoK,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG8wK,gBACrCzI,CAAAA,QAAAA,CAASF,OAAO,CAACnoK,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG4wK,eACrCvI,CAAAA,QAASF,CAAAA,OAAO,CAACnoK,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAG6wK,eACrCxI,CAAAA,QAASF,CAAAA,OAAO,CAACnoK,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG8wK,gBACrCzI,CAAAA,QAAAA,CAASF,OAAO,CAACnoK,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,CAAG4wK,eACrCvI,CAAAA,QAASF,CAAAA,OAAO,CAACnoK,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG6wK,eACrCxI,CAAAA,QAASF,CAAAA,OAAO,CAACnoK,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG8wK,gBACrCzI,CAAAA,QAAAA,CAASF,OAAO,CAACnoK,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG4wK,eACrCvI,CAAAA,QAAAA,CAASF,OAAO,CAACnoK,KAAO,CAAI,CAAA,CAAA,CAAI,EAAG,CAAA,CAAG6wK,eACtCxI,CAAAA,QAASF,CAAAA,OAAO,CAACnoK,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,EAAA,CAAG,CAAG8wK,gBACtCzI,CAAAA,QAASroK,CAAAA,IAAI,GACf,CACA,GAAIkwK,iBAAmB,CAAA,CACrB,QACF,CACA,GAAIpB,cAAAA,CAAiBt0R,EAAG,CACtBi1R,SAAAA,CAAU,IAAI,CAAChJ,QAAQ,CAAEjsR,CAAAA,CAAGg0R,EAC9B,EAAA,CACF,CACA,IAAI,CAAC5E,SAAS,CAAG,IACjB,CAAA,IAAI,CAACyF,SAAS,CAAG,IAAI,CAACmD,UAAU,CAChC,IAAI,CAACC,UAAU,CAAG,IAAI,CAACC,WACvB,CAAA,IAAI,CAAC9I,SAAS,CAAG,KACjB,CAAA,MAAM/uF,EAAK,CAAA,IAAI,CAACzmG,QAAQ,CAAC0mG,KAAK,CAAC9qM,CAAC,CAChC,MAAMk5J,EAAK,CAAA,IAAI,CAAC90D,QAAQ,CAAC0mG,KAAK,CAACpjM,CAAC,CAChC,MAAMi7R,EAAAA,CAAK,IAAI,CAACC,UAAU,CAAC5iS,CAAC,CAC5B,MAAM6iS,EAAAA,CAAK,IAAI,CAACD,UAAU,CAACl7R,CAAC,CAC5B,IAAI,IAAI/b,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC+wS,SAAS,CAAC9wS,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,GAAI,IAAI,CAAC+wS,SAAS,CAAC/wS,EAAE,CAACggD,KAAK,GAAK,CAAA,CAAG,SACnC,IAAIm3P,QAAAA,CAAW,CACf,CAAA,IAAI,MAAMxgP,IAAQ,IAAA,IAAI,CAACo6O,SAAS,CAAC/wS,CAAAA,CAAE,CAAC6nE,KAAK,CAAC,CACxC,MAAMhiE,KAAQ,CAAA,IAAI,CAACkrS,SAAS,CAAC/wS,CAAE,CAAA,CAAC6nE,KAAK,CAAClR,IAAAA,CAAK,CAC3C,MAAM1sC,EAAK,CAAA,IAAI,CAACgqR,WAAW,CAAC/9R,QAASygD,CAAAA,IAAAA,CAAM,EAAI,CAAA,CAAA,CAC/C,MAAMygP,OAAU,CAAA,CAACl4F,EAAK,CAAA,IAAI,CAACzmG,QAAQ,CAACyqL,eAAe,CAAG8T,EAAM,EAAA,IAAI,CAACv+L,QAAQ,CAACyqL,eAAe,CAAGj5Q,EAAC,GAAM,IAAI,CAAC+kR,IAAI,CAAG,CAAC,CAAA,CAAI,CAAA,CAAA,CACpH,MAAMqI,OAAAA,CAAU,CAAC,EAAI9pI,EAAC,EAAK,IAAI,CAAC90D,QAAQ,CAAC0qL,gBAAgB,CAAG0Q,QAAAA,CAAW,CAAC,CAAA,CAAIqD,EAAC,GAAM,IAAI,CAACz+L,QAAQ,CAAC0qL,gBAAgB,CAAG,IAAI,CAACv9Q,MAAM,CAAD,CAC9H,IAAI,IAAIy+G,KAAO8yK,QAAU9yK,CAAAA,IAAAA,EAAQx+H,KAAOw+H,CAAAA,IAAAA,EAAAA,CAAO,CAC7C,IAAI,CAAC0sK,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAConF,KAAO,CAAI,CAAA,CAAA,CAAE,EAAI+yK,OAC7C,CAAA,IAAI,CAACrG,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAConF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAI+yK,OACjD,CAAA,IAAI,CAACrG,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAConF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,EAAE,EAAI+yK,OACjD,CAAA,IAAI,CAACrG,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAConF,IAAAA,CAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAI+yK,OACjD,CAAA,IAAI,CAACrG,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,EAAI,CAAE,CAAA,EAAIgzK,OACjD,CAAA,IAAI,CAACtG,SAAS,CAAC/wS,EAAE,CAACi9C,SAAS,CAAConF,IAAAA,CAAO,EAAI,CAAI,CAAA,CAAA,CAAE,EAAIgzK,OACjD,CAAA,IAAI,CAACtG,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAConF,KAAO,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EAAIgzK,OACjD,CAAA,IAAI,CAACtG,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAConF,IAAO,CAAA,CAAA,CAAI,CAAI,CAAA,EAAA,CAAG,EAAIgzK,QACpD,CACA,GAAI,IAAI,CAACrI,IAAI,CAAE,CACb,IAAI,IAAI3qK,IAAO8yK,CAAAA,QAAAA,CAAU9yK,IAAQx+H,EAAAA,KAAAA,CAAOw+H,IAAO,EAAA,CAAA,CAC7C,MAAM/5H,GAAAA,CAAM+5H,KAAO,CAAI,CAAA,CAAA,CACvB,IAAI,IAAIqkE,KAAO,CAAGA,CAAAA,IAAAA,CAAO,CAAG,CAAA,EAAEA,KAAK,CACjC,IAAI,CAACqoG,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAC3yC,GAAMo+L,CAAAA,IAAAA,CAAO,CAAE,CAAA,CAAG,IAAI,CAACjwF,QAAQ,CAACyqL,eAAe,CAAG,IAAI,CAAC6N,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAC3yC,IAAMo+L,IAAO,CAAA,CAAA,CAAE,CAAG0uG,OAAAA,CAAU,EACxI,CACA,MAAME,IAAAA,CAAO,IAAI,CAACvG,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAC3yC,GAAAA,CAAM,EAAE,CACjD,MAAMitS,IAAO,CAAA,IAAI,CAACxG,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAC3yC,GAAAA,CAAM,CAAE,CACjD,CAAA,IAAI,CAACymS,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAC3yC,IAAM,CAAE,CAAA,CAAG,IAAI,CAACymS,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAC3yC,GAAAA,CAAM,CAAE,CAC3E,CAAA,IAAI,CAACymS,SAAS,CAAC/wS,EAAE,CAACi9C,SAAS,CAAC3yC,GAAAA,CAAM,EAAE,CAAG,IAAI,CAACymS,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAC3yC,GAAM,CAAA,CAAA,CAAE,CAC3E,IAAI,CAACymS,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAAC3yC,GAAM,CAAA,CAAA,CAAE,CAAGgtS,IACvC,CAAA,IAAI,CAACvG,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAAC3yC,GAAAA,CAAM,CAAE,CAAA,CAAGitS,KACzC,CACF,CACAJ,QAAWtxS,CAAAA,KAAAA,CAAQ,EACrB,CACA,MAAM8yC,WAAAA,CAAc,IAAI,CAACo4P,SAAS,CAAC/wS,CAAAA,CAAE,CAACggD,KAAK,CAAG,CAC9C,CAAA,MAAMw3P,QAAU,IAAI,CAACzG,SAAS,CAAC/wS,CAAE,CAAA,CAACqkI,IAAI,CAAG,EACzC,MAAM4vI,EAAAA,CAAK,IAAI1lK,cAAAA,CAAe,IAAI,CAACwiM,SAAS,CAAC/wS,CAAAA,CAAE,CAAC4kI,YAAY,CAAC8E,IAAI,CAAC7pF,YAAY,CAAA,CAC9E,IAAI,IAAIpgD,EAAI,CAAGA,CAAAA,CAAAA,CAAIk5C,WAAal5C,CAAAA,CAAAA,EAAAA,CAAI,CAClC,GAAIA,CAAK+3S,EAAAA,OAAAA,CAAS,CAChBvjC,EAAGt4N,CAAAA,OAAO,CAAC7d,iBAAAA,CAAkB,CAACv1B,GAAG,CAAC,CAAA,CAAG,EAAG,CACxC0rQ,CAAAA,CAAAA,EAAAA,CAAGt4N,OAAO,CAACtd,mBAAmB,CAAC91B,GAAG,CAAC,CAAA,CAAG,GACtC0rQ,EAAGt4N,CAAAA,OAAO,CAACxd,cAAAA,CAAe,CAAC51B,GAAG,CAAC,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CACxC0rQ,EAAGt4N,CAAAA,OAAO,CAACtc,cAAe,CAAA,CAAC92B,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,CACxC0rQ,CAAAA,CAAAA,EAAAA,CAAGt4N,OAAO,CAACrc,cAAe,CAAA,CAAC/2B,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,GAC1C,CAAO,KAAA,CACL0rQ,EAAGt4N,CAAAA,OAAO,CAAC7d,iBAAkB,CAAA,CAACv1B,GAAG,CAAC,IAAI,CAACwoS,SAAS,CAAC/wS,EAAE,CAACi9C,SAAS,CAACx9C,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAACi9C,SAAS,CAACx9C,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,EAAE,CAACi9C,SAAS,CAACx9C,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAA,CACxJw0Q,EAAGt4N,CAAAA,OAAO,CAACtd,kBAAAA,CAAmB,CAAC91B,GAAG,CAAC,IAAI,CAACwoS,SAAS,CAAC/wS,EAAE,CAAC8pI,GAAG,CAACrqI,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAE,CAAA,CAAC8pI,GAAG,CAACrqI,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EACrGw0Q,EAAGt4N,CAAAA,OAAO,CAACxd,cAAAA,CAAe,CAAC51B,GAAG,CAAC,IAAI,CAACwoS,SAAS,CAAC/wS,CAAE,CAAA,CAAC6pI,MAAM,CAACpqI,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAE,CAAA,CAAC6pI,MAAM,CAACpqI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAAC6pI,MAAM,CAACpqI,CAAI,CAAA,CAAA,CAAI,EAAE,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAAC6pI,MAAM,CAACpqI,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CACjLw0Q,GAAGt4N,OAAO,CAACtc,cAAe,CAAA,CAAC92B,GAAG,CAAC,IAAI,CAACwoS,SAAS,CAAC/wS,CAAAA,CAAE,CAACusS,QAAQ,CAAC9sS,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAACusS,QAAQ,CAAC9sS,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAACusS,QAAQ,CAAC9sS,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAClJw0Q,GAAGt4N,OAAO,CAACrc,cAAe,CAAA,CAAC/2B,GAAG,CAAC,IAAI,CAACwoS,SAAS,CAAC/wS,CAAAA,CAAE,CAACwsS,OAAO,CAAC/sS,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAACwsS,OAAO,CAAC/sS,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAE,IAAI,CAACsxS,SAAS,CAAC/wS,CAAAA,CAAE,CAACwsS,OAAO,CAAC/sS,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,EACjJ,CACAw0Q,EAAAA,CAAG3qK,IAAI,GACT,CACA2qK,EAAGvuQ,CAAAA,GAAG,EACN,CAAA,IAAI,CAACqrS,SAAS,CAAC/wS,CAAE,CAAA,CAAC4kI,YAAY,CAAC8E,IAAI,CAAC56G,IAAI,CAACuB,OAAO,CAAC,IAAI,CAAC0gR,SAAS,CAAC/wS,CAAE,CAAA,CAACi9C,SAAS,CAC5E,CAAA,IAAI,CAAC8zP,SAAS,CAAC/wS,CAAE,CAAA,CAAC4kI,YAAY,CAACS,QAAQ,CAAG,CAAC,EAC7C,CACA,IAAI,CAACoyK,UAAU,CAAG,KACpB,CACAC,aAAAA,EAAgB,CACd,IAAI,CAAC9J,IAAI,CAAG,IAAI,CAACM,MACnB,CACAyJ,WAAYh+E,CAAAA,KAAK,CAAE,CACjB,GAAI,IAAI,CAACi0E,IAAI,GAAKj0E,MAAMpyK,QAAQ,CAAE,CAChC,IAAI,CAACqmP,IAAI,CAAGj0E,KAAAA,CAAMpyK,SAAQ,CAE9B,CACAqwP,aAAAA,CAAcj+E,KAAK,CAAEr2N,IAAI,CAAE2hP,IAAI,CAAEpP,IAAI,CAAE,CACrC,GAAIvyO,IAAS,GAAA,MAAA,CAAQ,CACnB,IAAI,CAAC4qS,KAAK,CAACl0R,IAAI,CAAGirO,KAClB,MAAMpjH,IAAAA,CAAO,IAAI,CAACqsK,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC5hI,MAAM,CAC7C,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAI6hI,IAAM7hI,CAAAA,CAAAA,EAAAA,CAAI,CAC3B,GAAI,CAAC,IAAI,CAAC+wS,SAAS,CAAC/wS,CAAE,CAAA,CAAE,SACxB,MAAM+1I,GAAK,IAAI,CAACg7J,SAAS,CAAC/wS,EAAE,CAAC4kI,YAAY,CACzC,GAAImR,GAAI,CACNA,EAAAA,CAAGrsC,YAAY,CAAC,mBAAqB,CAAA,IAAI,CAACwkM,KAAK,CAACxsL,SAAS,CAAA,CACzDq0B,EAAGrsC,CAAAA,YAAY,CAAC,cAAgB,CAAA,IAAI,CAACwnM,WAAW,CAAC,IAAI,CAAChD,KAAK,CAAA,CAAA,CAC3Dn4J,EAAGrsC,CAAAA,YAAY,CAAC,mBAAA,CAAqB,IAAI,CAACwkM,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,CAAE,CAAA,CAAC2lB,KAAK,EACzE,CACF,CACF,CACF,CACAkyR,cAAcl+E,KAAK,CAAE,EACrBs3E,kBAAkBl7J,EAAE,CAAEjkG,OAAO,CAAE,CAC7B,GAAI,IAAI,CAACo8P,KAAK,CAAE,CACd,GAAI,IAAI,CAACA,KAAK,CAACz2R,IAAI,GAAKuxR,UAAW,CACjCjzJ,EAAAA,CAAGlsC,eAAe,CAAC,uBACnBksC,EAAGlsC,CAAAA,eAAe,CAAC,oBAAA,CAAA,CACnBksC,EAAGrsC,CAAAA,YAAY,CAAC,iBAAA,CAAmB53D,SACrC,CAAO,KAAA,GAAI,IAAI,CAACo8P,KAAK,CAACz2R,IAAI,GAAKwxR,WAAAA,CAAa,CAC1ClzJ,EAAGlsC,CAAAA,eAAe,CAAC,iBAAA,CAAA,CACnBksC,EAAGrsC,CAAAA,YAAY,CAAC,qBAAA,CAAuB53D,SACvCikG,EAAGrsC,CAAAA,YAAY,CAAC,oBAAA,CAAsB53D,OACxC,EAAA,CACF,CACF,CACAo/P,YAAYtD,IAAI,CAAE,CAChB,MAAM31R,IAAOpW,CAAAA,MAAAA,CAAOoW,IAAI,CAAC,IAAI,CAACi2R,KAAK,CAACl0R,IAAI,CAACo6R,KAAK,CAAA,CAC9C,IAAI,IAAIp0S,EAAI,CAAGA,CAAAA,CAAAA,CAAIiY,IAAKhY,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAClC,MAAM2G,KAAO,IAAI,CAACunS,KAAK,CAACl0R,IAAI,CAACo6R,KAAK,CAACn8R,IAAI,CAACjY,CAAE,CAAA,CAAC,CAC3C,GAAI2G,IAAK08I,CAAAA,KAAK,CAAE,CACd,OAAO,CAAC18I,IAAK2b,CAAAA,KAAK,EAAI,CAAA,EAAK3b,IAAK08I,CAAAA,KAAK,CAEzC,CACA,OAAO,CACT,CACAozJ,MAAAA,CAAO9vS,IAAI,CAAE,CACX,MAAMqT,IAAAA,CAAO,IAAI,CAACk0R,KAAK,CAACl0R,IAAI,CAC5B,GAAI,CAACA,IAAAA,CAAKo6R,KAAK,CAACztS,IAAK,CAAA,CAAE,CACrB,MAAMmpE,MAAQ,GACd,CAAA,GAAI91D,IAAKo6R,CAAAA,KAAK,CAACtkO,KAAM,CAAA,CAAE,CACrB,OAAO,IAAI,CAAC2mO,MAAM,CAAC3mO,KAAAA,CACrB,CACA,OAAO,CACL,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACD,CAEH,MAAMjpE,GAAMmT,CAAAA,IAAAA,CAAKo6R,KAAK,CAACztS,KAAK,CAACE,GAAG,CAChC,MAAM8e,KAAQ3L,CAAAA,IAAAA,CAAKijB,IAAI,CAAC4kG,IAAI,CAACh7H,GAAAA,CAAI,CAAC8e,KAAK,CACvC,MAAMC,MAAAA,CAAS5L,IAAKijB,CAAAA,IAAI,CAAC4kG,IAAI,CAACh7H,GAAI,CAAA,CAAC+e,MAAM,CACzC,MAAMvR,CAAAA,CAAI2F,KAAKo6R,KAAK,CAACztS,IAAK,CAAA,CAAC0N,CAAC,CAC5B,MAAM0H,CAAI/B,CAAAA,IAAAA,CAAKo6R,KAAK,CAACztS,IAAAA,CAAK,CAACoV,CAAC,CAC5B,MAAM0xL,EAAKp5L,CAAAA,CAAAA,CACX,MAAMq5L,EAAK3xL,CAAAA,CAAAA,CACX,MAAMyD,EAAAA,CAAKnL,EAAI2F,IAAKo6R,CAAAA,KAAK,CAACztS,IAAAA,CAAK,CAACgf,KAAK,CACrC,MAAMlG,EAAAA,CAAK1D,CAAI/B,CAAAA,IAAAA,CAAKo6R,KAAK,CAACztS,KAAK,CAACif,MAAM,CACtC,MAAMimR,KAAO,CAAI7xR,CAAAA,IAAAA,CAAKo6R,KAAK,CAACztS,KAAK,CAACif,MAAM,CAAGA,MAAAA,CAC3C,OAAO,CACL6nL,EAAK9nL,CAAAA,KAAAA,CACLkmR,KAAOn+F,EAAK9nL,CAAAA,MAAAA,CACZpG,EAAKmG,CAAAA,KAAAA,CACLkmR,KAAOpsR,EAAKmG,CAAAA,MAAAA,CACb,CAEH6lF,UAAW,CACT,IAAI,CAACkiM,UAAU,CAACvF,QAAQ,CAAG,IAAA,CAC3B,GAAI,IAAI,CAAC3wJ,MAAM,CAAE,CACf,IAAI,CAACh/B,QAAQ,CAACuoL,gBAAgB,CAAC,IAAI,CAACvpJ,MAAM,EAC5C,CACF,CACA/rC,WAAY,CACV,IAAI,CAACiiM,UAAU,CAACvF,QAAQ,CAAG,KAC3B,CAAA,GAAI,IAAI,CAAC3wJ,MAAM,CAAE,CACf,IAAI,CAACh/B,QAAQ,CAAC4+B,qBAAqB,CAAC,IAAI,CAACI,MAAM,EACjD,CACF,CACAkvJ,WAAYC,CAAAA,aAAa,CAAE,CACzB,GAAI,IAAI,CAACnvJ,MAAM,CAAE,CACf,MAAM0oC,UAAY,IAAI,CAAC1oC,MAAM,CAAClS,aAAa,CAC3C,IAAI,IAAIvlI,CAAAA,CAAI,EAAGA,CAAImgL,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,CAAI,EAAA,CAAA,CACvCmgL,SAAS,CAACngL,EAAE,CAACq/C,YAAY,CAAGunP,aAC5BzmH,CAAAA,SAAS,CAACngL,CAAE,CAAA,CAACs/C,WAAW,CAAGsnP,cAC7B,CACF,CACF,CACA2P,mBAAAA,EAAsB,CACpB,OAAO,IAAI,CAACuB,aAAa,EAAI,CAAC,IAAI,CAACjB,UAAU,CAE/CL,sBAAuB,CACrB,OAAO,IAAI,CAACuB,cAAc,EAAI,CAAC,IAAI,CAAChB,WACtC,CACArE,cAAAA,EAAiB,CACf,OAAO,IAAI,CAACoF,aAAa,EAAI,CAAC,IAAI,CAACjB,UAAU,EAAI,IAAI,CAACkB,cAAc,EAAI,CAAC,IAAI,CAAChB,WAAW,CAE3FnG,yBAAAA,CAA0BoH,WAAW,CAAE,CACrC,MAAMrH,oBAAAA,CAAuB,EAAC,CAC9B,GAAIqH,WAAAA,GAAgBlwS,SAAW,CAAA,CAC7BkwS,YAAc,IAAI,CAAClN,QAAQ,CAAC7qS,OAC9B,CACA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGkY,GAAM8/R,CAAAA,WAAAA,CAAah4S,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC7C,MAAM2G,IAAO,CAAA,IAAI,CAACmkS,QAAQ,CAAC9qS,CAAE,CAAA,CAC7B,IAAIi9B,IAAAA,CAAO,IAAI,CAACixQ,KAAK,CAACl0R,IAAI,CAACo6R,KAAK,CAACztS,IAAAA,CAAK,CACtC,GAAI,CAACs2B,IAAM,CAAA,CACTA,KAAO,IAAI,CAACixQ,KAAK,CAACl0R,IAAI,CAACo6R,KAAK,CAAC,GAAA,CAAI,CACjC,GAAI,CAACn3Q,IAAAA,CAAM,CACTA,IAAO,CAAA,IAAI,CAACixQ,KAAK,CAACl0R,IAAI,CAACo6R,KAAK,CAACvyS,OAAOoW,IAAI,CAAC,IAAI,CAACi2R,KAAK,CAACl0R,IAAI,CAACo6R,KAAK,CAAC,CAAC,CAAE,CAAA,EAAC,CAEvE,CACA,MAAMvtS,GAAAA,CAAMo2B,KAAKp2B,GAAG,CACpB,GAAI,CAAC8pS,oBAAoB,CAAC9pS,GAAI,CAAA,CAAE,CAC9B8pS,oBAAoB,CAAC9pS,GAAI,CAAA,CAAG,EAC9B,CAAO,KAAA,CACL8pS,oBAAoB,CAAC9pS,IAAI,GAC3B,CACF,CACA,OAAO8pS,oBACT,CACAiB,kBAAqB,EAAA,CACnB,MAAMqG,UAAa,CAAA,IAAI,CAACvG,WAAW,GAAK,CAAI,CAAA,CAAA,CAAI,IAAI,CAACd,yBAAyB,CAAC,IAAI,CAACc,WAAW,CAC/F,CAAA,MAAMwG,QAAW,CAAA,IAAI,CAACvG,SAAS,GAAK,CAAI,CAAA,CAAA,CAAI,IAAI,CAACf,yBAAyB,CAAC,IAAI,CAACe,SAAS,CAAA,CACzF,IAAI,IAAI3xS,CAAI,CAAA,CAAA,CAAGkY,GAAM,CAAA,IAAI,CAAC64R,SAAS,CAAC9wS,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACvD,MAAMyxB,KAAQwmR,CAAAA,UAAU,CAACj4S,CAAAA,CAAE,EAAI,CAAA,CAC/B,MAAM0F,GAAAA,CAAMwyS,QAAQ,CAACl4S,CAAAA,CAAE,EAAI,CAAA,CAC3B,MAAMkM,QAAW,CAAA,IAAI,CAAC6kS,SAAS,CAAC/wS,CAAE,CAAA,CAAC4kI,YAAY,CAC/C,GAAI14H,QAAAA,CAAU,CACZ,MAAMw9H,KAAOx9H,QAASw9H,CAAAA,IAAI,CAC1B,GAAIA,KAAM,CACRA,IAAAA,CAAKppF,SAAS,CAAC,EAAE,CAACwwB,IAAI,CAAGr/C,KAAAA,CAAQ,CAAI,CAAA,CACrCi4G,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAG,CAACt6C,GAAM+rB,CAAAA,KAAI,EAAK,CAAI,CAAA,EAChD,CACF,CACF,CACF,CACA,IAAIytM,IAAAA,CAAKv3N,KAAK,CAAE,CACd,IAAI,CAAC0mS,QAAQ,CAAG,IAAA,CAChB,MAAMn1P,GAAAA,CAAMvxC,OAAS,IAAQA,EAAAA,KAAAA,CAAMjI,QAAQ,EAAA,EAAM,EACjD,CAAA,IAAI,CAAC8uS,QAAQ,CAACt1P,GAChB,EAAA,CACA,IAAIgmL,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC1nF,KAAK,CAEnB,IAAI3vI,GAAIF,CAAAA,KAAK,CAAE,CACb,MAAMuxC,GAAAA,CAAMvxC,QAAU,IAAOA,CAAAA,KAAAA,CAAMjI,QAAQ,EAAA,CAAK,KAChD,GAAI,IAAI,CAAC2uS,QAAQ,GAAKn1P,GAAK,CAAA,CACzB,MACF,CACA,IAAI,CAACm1P,QAAQ,CAAGn1P,IAChB,GAAIA,GAAAA,CAAK,CACP,IAAI,CAACy0P,UAAU,CAACrF,mBAAmB,CAAG,MACtC,IAAI,CAACiG,mBAAmB,GAC1B,CAAO,KAAA,CACL,IAAI,CAACZ,UAAU,CAACrF,mBAAmB,CAAG,KACxC,CACF,CACA,IAAIzgS,GAAAA,EAAM,CACR,OAAO,IAAI,CAACwmS,QAAQ,CAEtB,IAAIpqP,KAAAA,CAAMt8C,KAAK,CAAE,CACf,MAAMrI,CAAAA,CAAIqI,MAAMrI,CAAC,CACjB,MAAMuU,CAAAA,CAAIlM,MAAMkM,CAAC,CACjB,MAAMhE,CAAAA,CAAIlI,KAAMkI,CAAAA,CAAC,CACjB,GAAI,IAAI,CAACilJ,MAAM,CAACx1J,CAAC,GAAKA,CAAK,EAAA,IAAI,CAACw1J,MAAM,CAACjhJ,CAAC,GAAKA,CAAK,EAAA,IAAI,CAACihJ,MAAM,CAACjlJ,CAAC,GAAKA,CAAG,CAAA,CACrE,MACF,CACA,IAAI,CAACilJ,MAAM,CAACx1J,CAAC,CAAGA,CAChB,CAAA,IAAI,CAACw1J,MAAM,CAACjhJ,CAAC,CAAGA,CAChB,CAAA,IAAI,CAACihJ,MAAM,CAACjlJ,CAAC,CAAGA,CAChB,CAAA,GAAI,CAAC,IAAI,CAAC4nI,MAAM,CAAE,CAChB,MACF,CACA,GAAI,IAAI,CAACq4J,aAAa,CAAE,CACtB,GAAI,IAAI,CAAC5B,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CAAA,KAAO,CACLX,YAAAA,CAAa73R,MAAM,CAAC,IAAI,CAACm/I,MAAM,CAC/B,CAAA,IAAI,CAACmyI,aAAa,CAAC,CAAE,CAAA,CAAGuG,YAAaluS,CAAAA,CAAC,CACtC,IAAI,CAAC2nS,aAAa,CAAC,CAAA,CAAE,CAAGuG,YAAAA,CAAa35R,CAAC,CACtC,IAAI,CAACozR,aAAa,CAAC,CAAA,CAAE,CAAGuG,YAAAA,CAAa39R,CAAC,CACtC,IAAI,IAAI7P,EAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClE,MAAM+1I,EAAK,CAAA,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,EAAE,CACvC+1I,EAAAA,CAAGrsC,YAAY,CAAC,oBAAqB,IAAI,CAACu9L,aAAa,EACzD,CACF,CACA,GAAI,IAAI,CAACxuL,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,YAAa,IAAI,CAAC4rJ,MAAM,EAC7C,CACF,CACA,IAAI7wG,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC6wG,MAAM,CAEpB,IAAI2hE,OAAQ9uN,CAAAA,KAAK,CAAE,CACjB,GAAI,IAAI,CAACmtJ,MAAM,CAACllJ,CAAC,GAAKjI,MAAO,CAC3B,IAAI,CAACmtJ,MAAM,CAACllJ,CAAC,CAAGjI,KAChB,CAAA,GAAI,IAAI,CAAC8vI,MAAM,CAAE,CACf,IAAI,IAAIz3I,CAAI,CAAA,CAAA,CAAGkY,IAAM,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAClE,MAAM+1I,EAAAA,CAAK,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,CAAAA,CAAE,CACvC+1I,EAAAA,CAAGrsC,YAAY,CAAC,kBAAA,CAAoB/hG,KACtC,EAAA,CACF,CACF,CACA,GAAI,IAAI,CAAC8wG,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,cAAevB,KACpC,EAAA,CACF,CACA,IAAI8uN,SAAU,CACZ,OAAO,IAAI,CAAC3hE,MAAM,CAACllJ,CACrB,CACA,IAAIuoS,UAAAA,CAAWxwS,KAAK,CAAE,CACpB,MAAM6/R,KAAQ,CAAA,IAAI,CAACgN,WACnB,CAAA,IAAI,CAACA,WAAW,CAAG7sS,KACnB,CAAA,IAAI,CAAC2sS,iBAAiB,CAAG3sS,MACzB,GAAI6/R,KAAAA,GAAU7/R,KAAS,EAAA,IAAI,CAACumS,KAAK,CAAE,CACjC,IAAI,CAACC,WAAW,GAClB,CACF,CACA,IAAIgK,UAAAA,EAAa,CACf,OAAO,IAAI,CAAC3D,WAAW,CAEzB,IAAI4D,SAAUzwS,CAAAA,KAAK,CAAE,CACnB,MAAM6/R,KAAAA,CAAQ,IAAI,CAACmM,UAAU,CAC7B,IAAI,CAACA,UAAU,CAAGhsS,KAAAA,CAClB,GAAI6/R,KAAAA,GAAU7/R,OAAS,IAAI,CAACumS,KAAK,CAAE,CACjC,IAAI,CAACC,WAAW,GAClB,CACF,CACA,IAAIiK,SAAAA,EAAY,CACd,OAAO,IAAI,CAACzE,UAAU,CAExB,IAAI9rO,KAAQ,EAAA,CACV,OAAO,IAAI,CAACwsO,aAAa,CAE3B,IAAI/4R,OAAQ3T,CAAAA,KAAK,CAAE,CACjB,MAAM6/R,KAAQ,CAAA,IAAI,CAACuO,QACnB,CAAA,IAAI,CAACA,QAAQ,CAAGpuS,KAAAA,CAChB,GAAI6/R,KAAU7/R,GAAAA,KAAAA,EAAS,IAAI,CAACumS,KAAK,CAAE,CACjC,IAAI,CAACC,WAAW,GAClB,CACF,CACA,IAAI7yR,OAAU,EAAA,CACZ,OAAO,IAAI,CAACy6R,QACd,CACA,IAAIO,SAAS3uS,KAAK,CAAE,CAClB,MAAM6/R,MAAQ,IAAI,CAACmL,SACnB,CAAA,IAAI,CAACA,SAAS,CAAGhrS,KACjB,CAAA,IAAI,CAAC0wS,iBAAiB,CAAG1wS,KACzB,CAAA,GAAI6/R,QAAU7/R,KAAS,EAAA,IAAI,CAACumS,KAAK,CAAE,CACjC,IAAI,CAACC,WAAW,GAClB,CACF,CACA,IAAImI,UAAW,CACb,OAAO,IAAI,CAAC3D,SAAS,CAEvB,IAAIrE,SAAAA,CAAU3mS,KAAK,CAAE,CACnB,IAAI,CAACgmS,UAAU,CAACjG,YAAY,CAAG//R,MACjC,CACA,IAAI2mS,SAAY,EAAA,CACd,OAAO,IAAI,CAACX,UAAU,CAAC5F,cACzB,CACA,IAAI6F,KAAKjmS,KAAK,CAAE,CACd,IAAI2wS,iBACJ,GAAI,IAAI,CAACpK,KAAK,CAAE,CACdoK,gBAAAA,CAAmB,IAAI,CAACpK,KAAK,CAACz2R,IAAI,CAClC,GAAI,IAAI,CAACy2R,KAAK,CAACjnS,GAAG,CAAE,IAAI,CAACinS,KAAK,CAACjnS,GAAG,CAAC,QAAA,CAAU,IAAI,CAACywS,aAAa,CAAE,IAAI,EACvE,CACA,IAAI,CAACxJ,KAAK,CAAGvmS,KACb,CAAA,IAAI,CAAC8sS,SAAS,CAAG,CACjB,CAAA,IAAI,CAACC,SAAS,CAAG,EACjB,GAAI,CAAC/sS,KAAO,CAAA,OACZ,MAAMyqS,IAAO,CAAA,IAAI,CAAClE,KAAK,CAACl0R,IAAI,CAC5B,IAAI,MAAMu+R,MAAUnG,IAAAA,IAAAA,CAAKgC,KAAK,CAAC,CAC7B,MAAMp6R,IAAAA,CAAOo4R,IAAKgC,CAAAA,KAAK,CAACmE,MAAO,CAAA,CAC/B,GAAIv+R,IAAAA,CAAKwsP,MAAM,CAAE,CACf,IAAI,CAACiuC,SAAS,CAAGl1S,IAAKmU,CAAAA,GAAG,CAAC,IAAI,CAAC+gS,SAAS,CAAEz6R,IAAKwsP,CAAAA,MAAM,CAAC,CAAA,CAAE,CACxD,CAAA,IAAI,CAACkuC,SAAS,CAAGn1S,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAAC+gS,SAAS,CAAE16R,IAAAA,CAAKwsP,MAAM,CAAC,CAAA,CAAE,EAC1D,CACF,CACA,GAAI,IAAI,CAAC0nC,KAAK,CAAC7mS,EAAE,CAAE,IAAI,CAAC6mS,KAAK,CAAC7mS,EAAE,CAAC,SAAU,IAAI,CAACqwS,aAAa,CAAE,IAAI,CACnE,CAAA,GAAI,IAAI,CAAC/J,UAAU,CAAC5F,cAAc,CAAE,CAClC,MAAMpuE,KAAAA,CAAQ,IAAI,CAAC+oE,OAAO,CAAC1yD,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC4rS,UAAU,CAAC5F,cAAc,CAAA,CACxE,GAAIpuE,KAAMpyK,CAAAA,QAAQ,GAAK,IAAI,CAAC2mP,KAAK,CAAE,CACjC,IAAI,CAACP,UAAU,CAACjG,YAAY,CAAG,KACjC,CACF,CACA,GAAI//R,MAAM8P,IAAI,GAAK6gS,gBAAkB,CAAA,CACnC,MAAMjmK,WAAc,CAAA,IAAI,CAAC55B,QAAQ,CAAC+oL,cAAc,EAAA,CAChD,IAAI,CAACc,eAAe,CAACjwJ,WACvB,EAAA,CACA,IAAI,IAAIryI,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACg2R,KAAK,CAACtiQ,QAAQ,CAAC3rC,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC5D,GAAI,CAAC,IAAI,CAAC+wS,SAAS,CAAC/wS,CAAAA,CAAE,CAAE,CACtB,IAAI,CAAC+wS,SAAS,CAAC/wS,CAAE,CAAA,CAAG,IAAIssS,SAC1B,CAAO,KAAA,CACL,MAAMv2J,EAAAA,CAAK,IAAI,CAACg7J,SAAS,CAAC/wS,CAAAA,CAAE,CAAC4kI,YAAY,CACzC,GAAImR,GAAI,CACNA,EAAAA,CAAGrsC,YAAY,CAAC,mBAAqB,CAAA,IAAI,CAACwkM,KAAK,CAACxsL,SAAS,CAAA,CACzDq0B,EAAGrsC,CAAAA,YAAY,CAAC,cAAgB,CAAA,IAAI,CAACwnM,WAAW,CAAC,IAAI,CAAChD,KAAK,CAAA,CAAA,CAC3Dn4J,EAAGrsC,CAAAA,YAAY,CAAC,mBAAA,CAAqB,IAAI,CAACwkM,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,EAAE,CAAC2lB,KAAK,CACvE,CAAA,IAAI,CAACsrR,iBAAiB,CAACl7J,EAAAA,CAAI,IAAI,CAACm4J,KAAK,CAACtiQ,QAAQ,CAAC5rC,CAAE,CAAA,EACnD,CACF,CACF,CACA,IAAI6wS,YAAAA,CAAe,KACnB,CAAA,IAAI,IAAI7wS,CAAAA,CAAI,IAAI,CAACkuS,KAAK,CAACtiQ,QAAQ,CAAC3rC,MAAM,CAAED,CAAI,CAAA,IAAI,CAAC+wS,SAAS,CAAC9wS,MAAM,CAAED,CAAI,EAAA,CAAA,CACrE,GAAI,IAAI,CAAC+wS,SAAS,CAAC/wS,CAAE,CAAA,CAAC4kI,YAAY,CAAE,CAClC,GAAI,CAACisK,YAAc,CAAA,CACjB,IAAI,CAACp4L,QAAQ,CAAC4+B,qBAAqB,CAAC,IAAI,CAACI,MAAM,EAC/Co5J,YAAe,CAAA,KACjB,CACA,IAAI,CAACG,mBAAmB,CAAC,IAAI,CAACD,SAAS,CAAC/wS,CAAAA,CAAE,CAAC4kI,YAAY,EACzD,CACF,CACA,GAAI,IAAI,CAACmsK,SAAS,CAAC9wS,MAAM,CAAG,IAAI,CAACiuS,KAAK,CAACtiQ,QAAQ,CAAC3rC,MAAM,CAAE,CACtD,IAAI,CAAC8wS,SAAS,CAAC9wS,MAAM,CAAG,IAAI,CAACiuS,KAAK,CAACtiQ,QAAQ,CAAC3rC,OAAM,CAEpD,IAAI,CAACkuS,WAAW,GAClB,CACA,IAAIP,IAAAA,EAAO,CACT,OAAO,IAAI,CAACM,KAAK,CAEnB,IAAIt5O,SAAUjtD,CAAAA,KAAK,CAAE,CACnB,GAAIA,KAAiBka,YAAAA,IAAAA,CAAM,CACzB,IAAI,CAACo1R,UAAU,CAAC1uS,GAAG,CAACZ,KAAM0M,CAAAA,CAAC,CAAE1M,KAAMoU,CAAAA,CAAC,EACtC,CAAA,KAAO,CACL,IAAI,CAACk7R,UAAU,CAAC1uS,GAAG,CAACZ,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,EACxC,CACA,GAAI,IAAI,CAACumS,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CACA,IAAIv5O,SAAY,EAAA,CACd,OAAO,IAAI,CAACqiP,UACd,CACA,IAAIvD,UAAU/rS,KAAK,CAAE,CACnB,MAAM0sI,GAAM,CAAA,IAAI,CAACwiK,UAAU,CAC3B,IAAI,CAACA,UAAU,CAAGlvS,KAClB,CAAA,GAAIA,KAASpI,EAAAA,IAAAA,CAAKma,GAAG,CAAC,IAAI,CAAC++F,QAAQ,CAAC+6L,MAAM,CAACn/R,CAAC,CAAG,IAAI,CAACokG,QAAQ,CAAC+6L,MAAM,CAACt3R,CAAC,CAAI,CAAA,IAAA,CAAQ,CAC/E,IAAI,CAACu8F,QAAQ,CAAC9yF,KAAK,CAAG,IAAI,CAACA,MAAK,CAElC,GAAI0uH,GAAAA,GAAQ1sI,MAAO,CACjB,MAAM6wS,WAAc,CAAA,IAAI,CAAC9F,cAAc,EAAA,CAAK,IAAI,CAACH,YAAY,CAAG,IAAI,CAAC8F,iBAAiB,CACtF,GAAIG,WAAgB,GAAA,IAAI,CAAC7F,SAAS,CAAE,CAClC,IAAI,CAACA,SAAS,CAAG6F,WAAAA,CACjB,GAAI,IAAI,CAACtK,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CACF,CACF,CACA,IAAIuF,SAAY,EAAA,CACd,OAAO,IAAI,CAACmD,UAAU,CAExB,IAAIC,UAAWnvS,CAAAA,KAAK,CAAE,CACpB,MAAM0sI,GAAM,CAAA,IAAI,CAAC0iK,WAAW,CAC5B,IAAI,CAACA,WAAW,CAAGpvS,KAAAA,CACnB,GAAIA,KAAAA,EAASpI,KAAKma,GAAG,CAAC,IAAI,CAAC++F,QAAQ,CAAC+6L,MAAM,CAACz3R,CAAC,CAAG,IAAI,CAAC08F,QAAQ,CAAC+6L,MAAM,CAACj0R,CAAC,CAAA,CAAI,KAAQ,CAC/E,IAAI,CAACk5F,QAAQ,CAAC7yF,MAAM,CAAG,IAAI,CAACA,OAC9B,CACA,GAAIyuH,GAAQ1sI,GAAAA,KAAAA,CAAO,CACjB,MAAM6wS,YAAc,IAAI,CAAC9F,cAAc,EAAA,CAAK,IAAI,CAACH,YAAY,CAAG,IAAI,CAAC8F,iBAAiB,CACtF,GAAIG,WAAAA,GAAgB,IAAI,CAAC7F,SAAS,CAAE,CAClC,IAAI,CAACA,SAAS,CAAG6F,YACjB,GAAI,IAAI,CAACtK,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CACF,CACF,CACA,IAAI2I,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAI0B,UAAW9wS,CAAAA,KAAK,CAAE,CACpB,GAAI,IAAI,CAACknS,WAAW,GAAKlnS,KAAO,CAAA,CAC9B,IAAI,CAACknS,WAAW,CAAGlnS,KACnB,CAAA,GAAI,IAAI,CAACumS,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CACF,CACA,IAAIsK,UAAAA,EAAa,CACf,OAAO,IAAI,CAAC5J,WAAW,CAEzB,IAAIJ,gBAAiB9mS,CAAAA,KAAK,CAAE,CAC1B,GAAI,IAAI,CAAC+wS,iBAAiB,GAAK/wS,KAAO,CAAA,CACpC,IAAI,CAAC+wS,iBAAiB,CAAG/wS,KAAAA,CACzB,IAAI,CAAC6mS,QAAQ,CAAC,IAAI,CAACh3J,KAAK,EAC1B,CACF,CACA,IAAIi3J,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACiK,iBAAiB,CAE/B,IAAI5pR,IAAO,EAAA,CACT,GAAI,IAAI,CAAC2oR,UAAU,CAAE,CACnB,IAAIp/P,WAAc,CAAA,KAAA,CAClB,IAAI,IAAIr4C,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC+wS,SAAS,CAAC9wS,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,GAAI,CAAC,IAAI,CAAC+wS,SAAS,CAAC/wS,CAAE,CAAA,CAAC4kI,YAAY,CAAE,SACrC,GAAI,CAACvsF,YAAa,CAChB,IAAI,CAAC/kB,KAAK,CAACv0B,IAAI,CAAC,IAAI,CAACgyS,SAAS,CAAC/wS,CAAE,CAAA,CAAC4kI,YAAY,CAAC91G,IAAI,CACnDupB,CAAAA,WAAAA,CAAc,KAChB,CAAO,KAAA,CACL,IAAI,CAAC/kB,KAAK,CAAChjB,GAAG,CAAC,IAAI,CAACygS,SAAS,CAAC/wS,CAAAA,CAAE,CAAC4kI,YAAY,CAAC91G,IAAI,EACpD,CACF,CACA,IAAI,CAAC2oR,UAAU,CAAG,MACpB,CACA,OAAO,IAAI,CAACnkR,KAAK,CAEnB,IAAIqlR,YAAAA,CAAahxS,KAAK,CAAE,CACtB,MAAMrI,CAAAA,CAAIqI,KAAiB0N,YAAAA,KAAAA,CAAQ1N,KAAMrI,CAAAA,CAAC,CAAGqI,KAAK,CAAC,CAAE,CAAA,CACrD,MAAMkM,CAAAA,CAAIlM,iBAAiB0N,KAAQ1N,CAAAA,KAAAA,CAAMkM,CAAC,CAAGlM,KAAK,CAAC,CAAA,CAAE,CACrD,MAAMkI,CAAIlI,CAAAA,KAAAA,YAAiB0N,KAAQ1N,CAAAA,KAAAA,CAAMkI,CAAC,CAAGlI,KAAK,CAAC,CAAA,CAAE,CACrD,MAAMiI,CAAAA,CAAIjI,KAAiB0N,YAAAA,KAAAA,CAAQ1N,MAAMiI,CAAC,CAAGjI,KAAK,CAAC,CAAE,CAAA,CACrD,GAAI,IAAI,CAAC8nS,aAAa,CAACnwS,CAAC,GAAKA,GAAK,IAAI,CAACmwS,aAAa,CAAC57R,CAAC,GAAKA,CAAAA,EAAK,IAAI,CAAC47R,aAAa,CAAC5/R,CAAC,GAAKA,GAAK,IAAI,CAAC4/R,aAAa,CAAC7/R,CAAC,GAAKA,CAAAA,CAAG,CACxH,MACF,CACA,IAAI,CAAC6/R,aAAa,CAACnwS,CAAC,CAAGA,CACvB,CAAA,IAAI,CAACmwS,aAAa,CAAC57R,CAAC,CAAGA,CACvB,CAAA,IAAI,CAAC47R,aAAa,CAAC5/R,CAAC,CAAGA,CACvB,CAAA,IAAI,CAAC4/R,aAAa,CAAC7/R,CAAC,CAAGA,CACvB,CAAA,GAAI,CAAC,IAAI,CAAC6nI,MAAM,CAAE,CAChB,MACF,CACA,GAAI,IAAI,CAACs4J,oBAAoB,CAAE,CAC7B,GAAI,IAAI,CAAC7B,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CAAO,KAAA,CACLX,YAAa73R,CAAAA,MAAM,CAAC,IAAI,CAAC85R,aAAa,CACtC,CAAA,IAAI,CAAC0B,oBAAoB,CAAC,CAAA,CAAE,CAAG3D,YAAAA,CAAaluS,CAAC,CAC7C,IAAI,CAAC6xS,oBAAoB,CAAC,CAAE,CAAA,CAAG3D,aAAa35R,CAC5C,CAAA,IAAI,CAACs9R,oBAAoB,CAAC,CAAE,CAAA,CAAG3D,aAAa39R,CAC5C,CAAA,IAAI,CAACshS,oBAAoB,CAAC,CAAA,CAAE,CAAG3D,YAAa59R,CAAAA,CAAC,CAC7C,IAAI,IAAI5P,CAAI,CAAA,CAAA,CAAGkY,GAAM,CAAA,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAClE,MAAM+1I,EAAK,CAAA,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,EAAE,CACvC+1I,EAAAA,CAAGrsC,YAAY,CAAC,eAAiB,CAAA,IAAI,CAACynM,oBAAoB,EAC5D,CACF,CACA,GAAI,IAAI,CAAC14L,QAAQ,CAAE,CACjB,IAAI,CAACA,QAAQ,CAACvvG,IAAI,CAAC,aAAe,CAAA,IAAI,CAAC4rJ,MAAM,EAC/C,CACF,CACA,IAAI6jJ,YAAAA,EAAe,CACjB,OAAO,IAAI,CAAClJ,aAAa,CAE3B,IAAImJ,gBAAiBjxS,CAAAA,KAAK,CAAE,CAC1B,MAAM6/R,KAAAA,CAAQ,IAAI,CAACkI,iBAAiB,CACpC,IAAI,CAACA,iBAAiB,CAAG/nS,KAAAA,CACzB,GAAI6/R,KAAU7/R,GAAAA,KAAAA,EAAS,IAAI,CAACumS,KAAK,CAAE,CACjC,GAAI,CAAC,IAAI,CAACz2J,MAAM,CAAE,CAChB,MACF,CACA,GAAI,IAAI,CAACs4J,oBAAoB,CAAE,CAC7B,GAAI,IAAI,CAAC7B,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CAAA,KAAO,CACL,IAAI,IAAInuS,CAAI,CAAA,CAAA,CAAGkY,GAAM,CAAA,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAClE,MAAM+1I,EAAK,CAAA,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,CAAE,CAAA,CACvC+1I,EAAGrsC,CAAAA,YAAY,CAAC,mBAAqB,CAAA,IAAI,CAAC0nM,sBAAsB,CAAG,IAAI,CAAC1B,iBAAiB,EAC3F,CACF,CACF,CACF,CACA,IAAIkJ,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAAClJ,iBACd,CACA,IAAImJ,YAAYlxS,KAAK,CAAE,CACrB,MAAMrI,EAAIqI,KAAiB0N,YAAAA,KAAAA,CAAQ1N,KAAMrI,CAAAA,CAAC,CAAGqI,KAAK,CAAC,CAAA,CAAE,CACrD,MAAMkM,CAAAA,CAAIlM,KAAiB0N,YAAAA,KAAAA,CAAQ1N,KAAMkM,CAAAA,CAAC,CAAGlM,KAAK,CAAC,CAAE,CAAA,CACrD,MAAMkI,CAAAA,CAAIlI,KAAiB0N,YAAAA,KAAAA,CAAQ1N,KAAMkI,CAAAA,CAAC,CAAGlI,KAAK,CAAC,CAAE,CAAA,CACrD,MAAMiI,CAAIjI,CAAAA,KAAAA,YAAiB0N,KAAQ1N,CAAAA,KAAAA,CAAMiI,CAAC,CAAGjI,KAAK,CAAC,CAAA,CAAE,CACrD,GAAI,IAAI,CAACioS,YAAY,CAACtwS,CAAC,GAAKA,CAAAA,EAAK,IAAI,CAACswS,YAAY,CAAC/7R,CAAC,GAAKA,CAAK,EAAA,IAAI,CAAC+7R,YAAY,CAAC//R,CAAC,GAAKA,CAAAA,EAAK,IAAI,CAAC+/R,YAAY,CAAChgS,CAAC,GAAKA,CAAG,CAAA,CACpH,MACF,CACA,IAAI,CAACggS,YAAY,CAACtwS,CAAC,CAAGA,CACtB,CAAA,IAAI,CAACswS,YAAY,CAAC/7R,CAAC,CAAGA,CACtB,CAAA,IAAI,CAAC+7R,YAAY,CAAC//R,CAAC,CAAGA,CACtB,CAAA,IAAI,CAAC+/R,YAAY,CAAChgS,CAAC,CAAGA,CACtB,CAAA,GAAI,CAAC,IAAI,CAAC6nI,MAAM,CAAE,CAChB,MACF,CACA,GAAI,IAAI,CAACu4J,mBAAmB,CAAE,CAC5B,GAAI,IAAI,CAAC9B,KAAK,CAAE,CACd,IAAI,CAACC,WAAW,GAClB,CACF,CAAO,KAAA,CACLX,YAAa73R,CAAAA,MAAM,CAAC,IAAI,CAACi6R,YAAY,CACrC,CAAA,IAAI,CAACyB,mBAAmB,CAAC,CAAE,CAAA,CAAG7D,YAAaluS,CAAAA,CAAC,CAC5C,IAAI,CAAC+xS,mBAAmB,CAAC,CAAA,CAAE,CAAG7D,YAAAA,CAAa35R,CAAC,CAC5C,IAAI,CAACw9R,mBAAmB,CAAC,CAAA,CAAE,CAAG7D,YAAAA,CAAa39R,CAAC,CAC5C,IAAI,CAACwhS,mBAAmB,CAAC,CAAE,CAAA,CAAG7D,aAAa59R,CAAC,CAC5C,IAAI,IAAI5P,EAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClE,MAAM+1I,EAAAA,CAAK,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,CAAAA,CAAE,CACvC+1I,EAAGrsC,CAAAA,YAAY,CAAC,cAAA,CAAgB,IAAI,CAAC2nM,mBAAmB,EAC1D,CACF,CACF,CACA,IAAIwH,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACjJ,YAAY,CAE1B,IAAIkJ,YAAanxS,CAAAA,KAAK,CAAE,CACtB,MAAM0M,CAAAA,CAAI1M,iBAAiBka,IAAOla,CAAAA,KAAAA,CAAM0M,CAAC,CAAG1M,KAAK,CAAC,CAAE,CAAA,CAAEoU,EAAIpU,KAAiBka,YAAAA,IAAAA,CAAOla,KAAMoU,CAAAA,CAAC,CAAGpU,KAAK,CAAC,CAAA,CAAE,CACpG,GAAI,IAAI,CAACkoS,aAAa,CAACx7R,CAAC,GAAKA,CAAK,EAAA,IAAI,CAACw7R,aAAa,CAAC9zR,CAAC,GAAKA,CAAG,CAAA,CAC5D,MACF,CACA,IAAI,CAAC8zR,aAAa,CAACtnS,GAAG,CAAC8L,CAAG0H,CAAAA,CAAAA,CAAAA,CAC1B,GAAI,IAAI,CAACmyR,KAAK,EAAI,IAAI,CAACz2J,MAAM,CAAE,CAC7B,GAAI,IAAI,CAACu4J,mBAAmB,CAAE,CAC5B,IAAI,CAAC7B,WAAW,GAClB,CAAA,KAAO,CACL,IAAI,IAAInuS,CAAI,CAAA,CAAA,CAAGkY,GAAM,CAAA,IAAI,CAACu/H,MAAM,CAAClS,aAAa,CAACtlI,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClE,MAAM6hD,MAAQ,CAAC,IAAI,CAACqsP,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,CAAE,CAAA,CAAC2lB,KAAK,CAAG,IAAI,CAACuoR,KAAK,CAACl0R,IAAI,CAACijB,IAAI,CAAC4kG,IAAI,CAAC7hI,CAAE,CAAA,CAAC4lB,MAAM,CACvF,IAAI,CAAC0rR,oBAAoB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACC,kBAAkB,CAAG,IAAI,CAAC1B,aAAa,CAACx7R,CAC5E,CAAA,IAAI,CAACi9R,oBAAoB,CAAC,EAAE,CAAGzvP,KAAAA,CAAQ,IAAI,CAAC0vP,kBAAkB,CAAG,IAAI,CAAC1B,aAAa,CAAC9zR,CAAC,CACrF,MAAMg6H,GAAK,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CAACvlI,CAAE,CAAA,CACvC+1I,GAAGrsC,YAAY,CAAC,eAAiB,CAAA,IAAI,CAAC4nM,oBAAoB,EAC5D,CACF,CACF,CACF,CACA,IAAIwH,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACjJ,aAAa,CAE3B,IAAIkJ,WAAYpxS,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC2qS,YAAY,GAAK3qS,KAAO,CAAA,OACjC,IAAI,CAAC2qS,YAAY,CAAG3qS,MACpB,GAAI,IAAI,CAACimS,IAAI,EAAI,IAAI,CAAC8E,cAAc,GAAI,CACtC,IAAI,CAACvE,WAAW,GAClB,CACF,CACA,IAAI4K,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACzG,YAAY,CAE1B,IAAI0G,WAAAA,CAAYrxS,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC4qS,YAAY,GAAK5qS,KAAO,CAAA,OACjC,IAAI,CAAC4qS,YAAY,CAAG5qS,KACpB,CAAA,GAAI,IAAI,CAACimS,IAAI,EAAI,IAAI,CAAC8E,cAAc,GAAI,CACtC,IAAI,CAACvE,WAAW,GAClB,CACF,CACA,IAAI6K,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACzG,YAAY,CAE1B,IAAI0G,YAAAA,CAAatxS,KAAK,CAAE,CACtB,GAAI,IAAI,CAACmwS,aAAa,GAAKnwS,KAAO,CAAA,OAClC,IAAI,CAACmwS,aAAa,CAAGnwS,KACrB,CAAA,IAAI,CAACgrS,SAAS,CAAG,IAAI,CAACD,cAAc,GAAK,IAAI,CAACH,YAAY,CAAG,IAAI,CAAC8F,iBAAiB,CACnF,GAAI,IAAI,CAACzK,IAAI,CAAE,CACb,IAAI,CAACO,WAAW,GAClB,CACF,CACA,IAAI8K,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACnB,aAAa,CAE3B,IAAIoB,aAAAA,CAAcvxS,KAAK,CAAE,CACvB,GAAI,IAAI,CAACowS,cAAc,GAAKpwS,KAAO,CAAA,OACnC,IAAI,CAACowS,cAAc,CAAGpwS,KACtB,CAAA,IAAI,CAACgrS,SAAS,CAAG,IAAI,CAACD,cAAc,GAAK,IAAI,CAACH,YAAY,CAAG,IAAI,CAAC8F,iBAAiB,CACnF,GAAI,IAAI,CAACzK,IAAI,CAAE,CACb,IAAI,CAACO,WAAW,GAClB,CACF,CACA,IAAI+K,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACnB,cAAc,CAE5B,IAAIoB,QAASxxS,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAAC0tS,SAAS,GAAK1tS,KAAAA,CAAO,OAC9B,GAAIA,KAAU,GAAA,IAAA,EAAQ,IAAI,CAAC0tS,SAAS,GAAK,CAAC,CAAG,CAAA,OAC7C,IAAI,CAACA,SAAS,CAAG1tS,QAAU,IAAO,CAAA,CAAC,CAAIA,CAAAA,KAAAA,CACvC,GAAI,IAAI,CAACimS,IAAI,EAAI,IAAI,CAAC+F,UAAU,CAAE,CAChC,IAAI,CAACxF,WAAW,GAClB,CACF,CACA,IAAIgL,QAAW,EAAA,CACb,OAAO,IAAI,CAAC9D,SAAS,CAEvB,IAAI+D,YAAazxS,CAAAA,KAAK,CAAE,CACtBA,KAAAA,CAAQ,CAAC,CAACA,MACV,GAAI,IAAI,CAACinS,aAAa,GAAKjnS,KAAAA,CAAO,OAClC,IAAI,CAACinS,aAAa,CAAGjnS,KAAAA,CACrB,GAAI,IAAI,CAACimS,IAAI,CAAE,CACb,IAAI,CAACO,WAAW,GAClB,CACA,MAAM97J,WAAAA,CAAc,IAAI,CAAC55B,QAAQ,CAAC+oL,cAAc,GAChD,IAAI,CAACc,eAAe,CAACjwJ,aACvB,CACA,IAAI+mK,YAAe,EAAA,CACjB,OAAO,IAAI,CAACxK,aAAa,CAE3B,IAAI7D,OAAU,EAAA,CACZ,OAAO,IAAI,CAACD,QACd,CACA,IAAIuO,YAAAA,EAAe,CACjB,GAAI,IAAI,CAACvJ,aAAa,GAAK,KAAM,CAC/B,OAAO,IACT,CACA,OAAO,IAAI,CAACA,aAAa,CAACjpS,GAAG,CAAC,SAASxH,CAAC,CAAA,CACtC,OAAO,IAAI,CAACkwS,aAAa,CAAC1uS,KAAK,CAACxB,CAAI,CAAA,CAAA,CAAGA,EAAI,CAAI,CAAA,CAAA,CACjD,CAAG,CAAA,IAAI,CACT,CACA,IAAIi6S,mBAAsB,EAAA,CACxB,GAAI,IAAI,CAACvJ,oBAAoB,GAAK,IAAM,CAAA,CACtC,OAAO,IACT,CACA,OAAO,IAAI,CAACA,oBAAoB,CAAClpS,GAAG,CAAC,SAASyhR,OAAO,CACnD,CAAA,OAAO,IAAI,CAACknB,eAAe,CAAC3uS,KAAK,CAACynR,OAAAA,CAAU,EAAGA,OAAU,CAAA,CAAA,CAAI,CAC/D,CAAA,CAAA,CAAG,IAAI,CACT,CACA,IAAIixB,kBAAAA,EAAqB,CACvB,GAAI,IAAI,CAACvJ,mBAAmB,GAAK,IAAA,CAAM,CACrC,OAAO,IACT,CACA,OAAO,IAAI,CAACA,mBAAmB,CAACnpS,GAAG,CAAC,SAASyhR,OAAO,CAAA,CAClD,OAAO,IAAI,CAACqnB,cAAc,CAAC9uS,KAAK,CAACynR,OAAU,CAAA,CAAA,CAAGA,OAAU,CAAA,CAAA,CAAI,EAC9D,CAAG,CAAA,IAAI,CACT,CACA,IAAI2mB,GAAAA,EAAM,CACR,OAAO,IAAI,CAACD,IAAI,CAElB,IAAIwK,UAAWA,CAAAA,UAAU,CAAE,CACzBA,WAAaj6S,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,IAAKmU,CAAAA,GAAG,CAAC8lS,UAAAA,CAAY,IAAI,CAAC1O,QAAQ,CAAC7qS,MAAM,GAClE,GAAIu5S,UAAAA,GAAe,IAAI,CAAC9H,WAAW,CAAE,CACnC,IAAI,CAACA,WAAW,CAAG8H,UACnB,CAAA,IAAI,CAAC5H,kBAAkB,GACzB,CACF,CACA,IAAI4H,UAAa,EAAA,CACf,OAAO,IAAI,CAAC9H,WACd,CACA,IAAI+H,QAASA,CAAAA,QAAQ,CAAE,CACrBA,SAAWl6S,IAAKoU,CAAAA,GAAG,CAAC,IAAI,CAAC+9R,WAAW,CAAEnyS,IAAKmU,CAAAA,GAAG,CAAC+lS,QAAU,CAAA,IAAI,CAAC3O,QAAQ,CAAC7qS,MAAM,CAC7E,CAAA,CAAA,GAAIw5S,WAAa,IAAI,CAAC9H,SAAS,CAAE,CAC/B,IAAI,CAACA,SAAS,CAAG8H,SACjB,IAAI,CAAC7H,kBAAkB,GACzB,CACF,CACA,IAAI6H,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC9H,SAAS,CAj+CvB5pS,WAAAA,CAAY4zC,OAAO,CAAC,CAClB,IAAI,CAAC88D,QAAQ,CAAG98D,OAChB,CAAA,IAAI,CAAC+mP,OAAO,CAAG/mP,OAAAA,CAAQogM,MACvB,CAAA,IAAI,CAAC8kD,OAAO,CAAGllP,QAAQirF,MACvB,CAAA,IAAI,CAAC4Q,KAAK,CAAG,EACb,CAAA,IAAI,CAACszJ,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACyE,aAAa,CAAG,EACrB,CAAA,IAAI,CAACC,eAAe,CAAG,EACvB,CAAA,IAAI,CAACG,cAAc,CAAG,EACtB,CAAA,IAAI,CAACG,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACC,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAAC3B,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACV,UAAU,CAAG,IAAIlG,cAAAA,CAAe,IAAI,CAAC/E,OAAO,CAAC1yD,GAAG,CACrD,CAAA,IAAI,CAAC29D,UAAU,CAACrF,mBAAmB,CAAG,IAAA,CACtC,IAAI,CAACqF,UAAU,CAACtmS,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACswS,WAAW,CAAE,IAAI,EACjD,IAAI,CAAChK,UAAU,CAACtmS,EAAE,CAAC,QAAU,CAAA,IAAI,CAACuwS,aAAa,CAAE,IAAI,CAAA,CACrD,IAAI,CAACjK,UAAU,CAACtmS,EAAE,CAAC,QAAU,CAAA,IAAI,CAACwwS,aAAa,CAAE,IAAI,CACrD,CAAA,IAAI,CAAC3J,KAAK,CAAG,IACb,CAAA,IAAI,CAACp5I,MAAM,CAAG,IAAIz/I,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CACjC,CAAA,CAAA,IAAI,CAAC4xR,aAAa,CAAG,IAAIptR,YAAa,CAAA,CAAA,CACtC,CAAA,IAAI,CAACk8R,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACpD,SAAS,CAAG,EACjB,CAAA,IAAI,CAAC8B,SAAS,CAAG,CACjB,CAAA,IAAI,CAACC,SAAS,CAAG,CACjB,CAAA,IAAI,CAAC2D,iBAAiB,CAAG,EACzB,CAAA,IAAI,CAAC9F,YAAY,CAAG,EACpB,CAAA,IAAI,CAACD,YAAY,CAAG,CACpB,CAAA,IAAI,CAACwF,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,cAAc,CAAG,KACtB,CAAA,IAAI,CAAC1C,SAAS,CAAG,CAAC,CAClB,CAAA,IAAI,CAACb,WAAW,CAAG,EACnB,CAAA,IAAI,CAACF,iBAAiB,CAAG,EACzB,CAAA,IAAI,CAACX,UAAU,CAAG,KAClB,CAAA,IAAI,CAACvF,UAAU,CAAG,CAClB,CAAA,IAAI,CAAC6I,UAAU,CAAG,IAAIp1R,IAAAA,CAAK,EAAK,CAAA,EAAA,CAChC,CAAA,IAAI,CAACg1R,UAAU,CAAG,IAClB,CAAA,IAAI,CAACE,WAAW,CAAG,IACnB,CAAA,IAAI,CAACpxR,KAAK,CAAG,CACb,CAAA,IAAI,CAACC,MAAM,CAAG,CACd,CAAA,IAAI,CAACu7H,KAAK,CAAG,IAAIoE,SACjB,CAAA,IAAI,CAAC9N,MAAM,CAAG,IAAI21C,KAClB,CAAA,IAAI,CAAC31C,MAAM,CAAC61C,KAAK,CAAG,IAAI,CAACnsC,KAAK,CAC9B,IAAI,CAAC0/I,OAAO,CAACr4I,QAAQ,CAAC,IAAI,CAACrH,KAAK,CAChC,CAAA,IAAI,CAAC4vJ,SAAS,CAAG,EACjB,CAAA,IAAI,CAAC9/J,SAAS,CAAG,IACjB,CAAA,IAAI,CAACwmK,UAAU,CAAG,IAClB,CAAA,IAAI,CAACnkR,KAAK,CAAG,IAAIrI,WACjB,CAAA,IAAI,CAACgjR,SAAS,CAAG,KACjB,CAAA,IAAI,CAACyL,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAAC9K,WAAW,CAAG,KACnB,CAAA,IAAI,CAAC6J,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAAC1J,IAAI,CAAG,KACZ,CAAA,IAAI,CAACS,aAAa,CAAG,IAAIp6R,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,EACxC,CAAA,IAAI,CAAC87R,oBAAoB,CAAG,IAAIt3R,YAAAA,CAAa,CAC7C,CAAA,CAAA,IAAI,CAACu3R,sBAAsB,CAAG,EAC9B,CAAA,IAAI,CAAC1B,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACE,YAAY,CAAG,IAAIv6R,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,CACvC,CAAA,CAAA,IAAI,CAACg8R,mBAAmB,CAAG,IAAIx3R,aAAa,CAC5C,CAAA,CAAA,IAAI,CAAC03R,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAAC1B,aAAa,CAAG,IAAIhuR,KAAK,CAAG,CAAA,CAAA,CACjC,CAAA,IAAI,CAACyvR,oBAAoB,CAAG,IAAIz3R,YAAAA,CAAa,EAC7C,CAAA,IAAI,CAAC+0R,aAAa,CAAG,KAAA,CACrB,IAAI,CAAC1M,eAAe,CAAC,IAAI,CAACzpL,QAAQ,CAAC8pL,MAAM,CAAA,CACzC5mP,OAAQt0C,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACwmS,eAAe,CAAE,IAAI,CAC/ClyP,CAAAA,OAAAA,CAAQt0C,EAAE,CAAC,YAAA,CAAc,IAAI,CAAC66R,eAAe,CAAE,IAAI,CAAA,CACnDvmP,QAAQt0C,EAAE,CAAC,wBAA0B,CAAA,IAAI,CAAC46R,oBAAoB,CAAE,IAAI,EACpEtmP,OAAQt0C,CAAAA,EAAE,CAAC,eAAA,CAAiB,IAAI,CAAC86R,kBAAkB,CAAE,IAAI,EACzDxmP,OAAQt0C,CAAAA,EAAE,CAAC,WAAA,CAAa,IAAI,CAACymS,cAAc,CAAE,IAAI,CACjD,CAAA,IAAI,CAACpL,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAAC16P,EAAE,CAACg4O,IAAAA,CAAKjuO,YAAY,CAAE,IAAI,CAAC28R,YAAY,CAAE,IAAI,CACnE,CAAA,IAAI,CAACrL,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAAC16P,EAAE,CAAC,UAAA,CAAY,IAAI,CAAC2mS,mBAAmB,CAAE,IAAI,CAAA,CACnE,IAAI,CAACtL,OAAO,CAAC1yD,GAAG,CAAC+xB,IAAI,CAAC16P,EAAE,CAAC,cAAe,IAAI,CAAC2mS,mBAAmB,CAAE,IAAI,CACtE,CAAA,IAAI,CAAC0D,WAAW,CAAG,CACnB,CAAA,IAAI,CAACC,SAAS,CAAG,EACnB,CAw5CF,CAEA,MAAMiI,UAAa,CAAA,IAAI39R,IACvB,CAAA,MAAM49R,YAAe,CAAA,IAAIt3R,KACzB,MAAMu3R,MAAAA,CAAS,IAAI79R,IAAAA,CACnB,MAAM89R,MAAS,CAAA,IAAI99R,IACnB,CAAA,MAAM+9R,KAAO,IAAIz3R,IAAAA,CACjB,MAAM03R,IAAAA,CAAO,IAAI13R,IAAAA,CACjB,MAAM23R,IAAAA,CAAO,IAAI33R,IACjB,CAAA,MAAM43R,IAAO,CAAA,IAAI53R,IACjB,CAAM63R,MAAAA,gBAAAA,SAAyBzsC,SAyF7B,CAAA,IAAI3zP,MAAO,CACT,MAAMk0P,MAAS,CAAA,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAA,CAAG,CACvD,OAAOmrB,OAASA,MAAOl0P,CAAAA,IAAI,CAAG,IAChC,CACA,IAAInH,OAAQlL,CAAAA,KAAK,CAAE,CACjB,MAAMqS,IAAO,CAAA,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAAA,CAAW3gN,KAAKnH,OACtBmH,CAAAA,IAAAA,CAAKnH,OAAO,CAAGlL,KACf,CAAA,IAAI,CAACuB,IAAI,CAAC,KAAO,CAAA,SAAA,CAAWyxN,SAAUhzN,KACxC,EAAA,CACA,IAAIkL,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OAAO,CAE1B,IAAIwnS,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,YAAY,CAACjmS,CAAC,CAAG,IAAI,CAACkmS,OAAO,CAAClmS,CAAC,CAE7C,IAAImmS,SAAAA,EAAY,CACd,OAAO,IAAI,CAACF,YAAY,CAACp+R,CAAC,CAAG,IAAI,CAACq+R,OAAO,CAACr+R,CAAC,CAE7C,IAAIu+R,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACH,YAAY,CAAC/6R,CAAC,CAAG,IAAI,CAACg7R,OAAO,CAACh7R,CAAC,CAE7C,IAAIm7R,UAAAA,EAAa,CACf,OAAO,IAAI,CAACJ,YAAY,CAACv+R,CAAC,CAAG,IAAI,CAACw+R,OAAO,CAACx+R,CAC5C,CACA,IAAI4+R,iBAAAA,EAAoB,CACtB,OAAOp7S,IAAKma,CAAAA,GAAG,CAAC,IAAI,CAACkhS,OAAO,CAACvmS,CAAC,CAAG,IAAI,CAACumS,OAAO,CAAC1+R,CAAC,EAAI,IACrD,CACA,IAAI2+R,iBAAAA,EAAoB,CACtB,OAAOt7S,IAAKma,CAAAA,GAAG,CAAC,IAAI,CAACkhS,OAAO,CAAC7+R,CAAC,CAAG,IAAI,CAAC6+R,OAAO,CAACr7R,CAAC,CAAI,CAAA,IACrD,CACA,IAAIuP,IAAO,EAAA,CACT,GAAI,IAAI,CAAC4oH,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC5oH,IACrB,CACA,GAAI,IAAI,CAAC0oH,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC1oH,IACpB,CACA,OAAO,IACT,CACA,IAAI0kR,MAAO7rS,CAAAA,KAAK,CAAE,CAChB,GAAIA,KAAAA,YAAiBwa,KAAM,CACzB,IAAI,CAACy4R,OAAO,CAAC77S,IAAI,CAAC4I,KACpB,EAAA,CAAA,KAAO,CACL,IAAI,CAACizS,OAAO,CAACryS,GAAG,CAAA,GAAIZ,KACtB,EAAA,CACA,GAAI,CAAC,IAAI,CAACi/H,MAAM,CAACl2H,OAAO,EAAI,CAAC,IAAI,CAAC6xR,MAAM,CAAE,CACxC,IAAI,CAACuY,sBAAsB,GAC7B,CAAA,KAAO,CACL,IAAI,CAACC,cAAc,CAAC,IAAI,CAACJ,iBAAiB,CAAE,IAAI,CAACE,iBAAiB,EACpE,CACA,IAAI,CAACG,YAAY,CAAG,IAAA,CACpB,GAAI,CAAC,IAAI,CAACp0K,MAAM,CAACkgB,WAAW,CAAE,CAC5B,IAAI,CAAClgB,MAAM,CAAC8hB,aAAa,GAC3B,CACA,IAAI,CAACx/I,IAAI,CAAC,YAAc,CAAA,IAAI,CAAC0xS,OAAO,EACtC,CACA,IAAIpH,MAAS,EAAA,CACX,OAAO,IAAI,CAACoH,OACd,CACA,IAAIn1K,YAAa99H,CAAAA,KAAK,CAAE,CACtB,GAAI,IAAI,CAACszS,aAAa,GAAKtzS,KAAO,CAAA,CAChC,MACF,CACA,GAAI,IAAI,CAACi/H,MAAM,CAAC/zH,OAAO,EAAI,IAAI,CAACooS,aAAa,EAAI,CAAA,CAAG,CAClD,IAAI,CAACl/D,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAEp8O,MAAAA,CAAOq7H,UAAWO,CAAAA,OAAO,CAAE,IAAI,CAACR,YAAY,CAAE,IAAI,CAACmB,MAAM,EACpF,CACA,GAAI,IAAI,CAACA,MAAM,CAAC/zH,OAAO,EAAIlL,KAAS,EAAA,CAAA,CAAG,CACrC,IAAI,CAACo0O,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE12O,MAAAA,CAAO21H,UAAWO,CAAAA,OAAO,CAAEt+H,KAAO,CAAA,IAAI,CAACi/H,MAAM,EACxE,CACA,GAAIj/H,KAAAA,CAAQ,GAAK,IAAI,CAACszS,aAAa,EAAI,GAAK,IAAI,CAACpoS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC/E,GAAI,IAAI,CAAC6kI,MAAM,EAAI,IAAI,CAACA,MAAM,CAACC,WAAW,CAACrS,KAAK,CAAE,CAChD,IAAI,CAAC07J,gBAAgB,CAAC,IAAI,CAACtpJ,MAAM,CAACC,WAAW,CAACrS,KAAK,EACrD,MAAO,GAAI,IAAI,CAACkS,KAAK,EAAI,IAAI,CAACA,KAAK,CAACC,MAAM,CAAE,CAC1C,IAAI,CAACupJ,gBAAgB,CAAC,IAAI,CAACxpJ,KAAK,CAACC,MAAM,EACzC,CACF,CACA,IAAI,CAACwjK,aAAa,CAAGtzS,MACvB,CACA,IAAI89H,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACw1K,aAAa,CAE3B,IAAIx2R,MAAAA,CAAO9c,KAAK,CAAE,CAChB,IAAI,CAAC4yS,OAAO,CAACx+R,CAAC,CAAGpU,MACjB,MAAMgrB,CAAAA,CAAI,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EACtC,CAAA,MAAMszJ,GAAK,IAAI,CAACT,OAAO,CACvB,MAAMU,EAAAA,CAAK,IAAI,CAACb,YAAY,CAACv+R,CAAC,CAAGpU,KAAAA,CACjC,IAAI,CAACyzS,UAAU,CAACF,EAAAA,CAAKC,GACrBxoR,CAAAA,CAAAA,CAAE5W,CAAC,CAAGpU,KAAQ,CAAA,IAAI,CAAC0zS,iBAAiB,CAAG,IAAI,CAACC,MAAM,CAACv/R,CAAC,CACpD,IAAI,CAAC6qH,MAAM,CAAC+hB,gBAAgB,CAACh2H,CAC/B,EAAA,CACA,IAAIlO,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC81R,OAAO,CAACx+R,CAAC,CAEvB,IAAImnR,eAAgBv7R,CAAAA,KAAK,CAAE,CACzB,IAAI,CAAC4zS,mBAAmB,CAAC5zS,KAAAA,CAAO,IAClC,EAAA,CACA,IAAIu7R,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACsY,gBACd,CACA,IAAIrY,iBAAiBx7R,KAAK,CAAE,CAC1B,IAAI,CAAC8zS,oBAAoB,CAAC9zS,KAAAA,CAAO,MACnC,CACA,IAAIw7R,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACkY,iBACd,CACA,IAAIK,aAAAA,EAAgB,CAClB,GAAI,CAAC,IAAI,CAACC,mBAAmB,EAAI,CAAC,IAAI,CAACpZ,MAAM,EAAI,CAAC,IAAI,CAACA,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAAE,CAChF,OAAO,IAAI,CAACupK,cAAc,CAE5B,MAAM3xQ,MAAAA,CAAS,IAAI,CAAC8xM,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAC7C,MAAMiyQ,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,MAAMj1R,EAAAA,CAAKqjB,MAAO8T,CAAAA,MAAM,CAACm/D,WAAW,CAAGjzE,MAAOtkB,CAAAA,KAAK,CACnD,MAAMkB,EAAAA,CAAKojB,MAAO8T,CAAAA,MAAM,CAACq/D,YAAY,CAAGnzE,MAAAA,CAAOrkB,MAAM,CACrD,IAAI,IAAI5lB,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxB,IAAI,CAAC47S,cAAc,CAAC57S,CAAAA,CAAE,CAACuI,GAAG,CAACszS,aAAa,CAAC77S,CAAE,CAAA,CAACqU,CAAC,CAAGuS,GAAI,CAACqjB,MAAOrkB,CAAAA,MAAM,CAAGi2R,aAAa,CAAC77S,CAAE,CAAA,CAAC+b,CAAAA,EAAK8K,EAAAA,EAC7F,CACA,IAAI,CAAC80R,mBAAmB,CAAG,MAC3B,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAI9mK,SAAUntI,CAAAA,KAAK,CAAE,CACnB,IAAIo5K,QAAAA,CAAW,EACf,GAAI,IAAI,CAACwhH,MAAM,CAAE,CACfxhH,QAAAA,CAAW,IAAI,CAACwhH,MAAM,CAACA,MAAM,CAACxhH,SAAQ,CAExC,GAAIp5K,KAAAA,CAAQ,SAAU,CACpBA,KAAAA,CAAQ,SACV,CACA,IAAI,CAACymS,UAAU,CAAIrtH,CAAAA,QAAY,EAAA,EAAC,EAAKp5K,KAAAA,CACrC,IAAI,CAACuB,IAAI,CAAC,gBAAiB,IAAI,CAACklS,UAAU,EAC5C,CACA,IAAIt5J,SAAAA,EAAY,CACd,OAAO,IAAI,CAACs5J,UAAU,CAExB,IAAIxoR,MAAAA,CAAOje,KAAK,CAAE,CAChB,IAAI,CAAC+kC,OAAO,CAAG/kC,KACf,CAAA,GAAI,CAAC,IAAI,CAACkzS,iBAAiB,CAAE,CAC3B,IAAI,CAACY,oBAAoB,CAAC9zS,KAAAA,CAAO,MACnC,CACA,IAAI,CAACuB,IAAI,CAAC,YAAc,CAAA,IAAI,CAACwjC,OAAO,EACtC,CACA,IAAI9mB,MAAS,EAAA,CACX,OAAO,IAAI,CAAC8mB,OAAO,CAErB,IAAIi4F,MAAOh9H,CAAAA,KAAK,CAAE,CAChB,GAAI,IAAI,CAACm0S,YAAY,CAAC77S,MAAM,CAAE,CAC5B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,MAAM+kI,MAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,EACvE,GAAI+kI,KAAAA,CAAO,CACT,IAAI,IAAIx+C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACu1N,YAAY,CAAC77S,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC/Cw+C,KAAMG,CAAAA,mBAAmB,CAAC,IAAI,CAAC42K,YAAY,CAACv1N,CAAE,CAAA,CAACg/C,aAAa,EAC9D,CACF,CACF,CACF,CACA,IAAI,CAACub,OAAO,CAAGn5I,KACf,CAAA,GAAI,CAAC,IAAI,CAACkL,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,EAAI,CAAC,IAAI,CAACipS,YAAY,CAAC77S,MAAM,CAAE,CACtE,MACF,CACA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM+kI,KAAAA,CAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,CACvE,CAAA,GAAI+kI,MAAO,CACT,IAAI,IAAIx+C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACu1N,YAAY,CAAC77S,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC/Cw+C,KAAME,CAAAA,gBAAgB,CAAC,IAAI,CAAC62K,YAAY,CAACv1N,CAAE,CAAA,CAACg/C,aAAa,EAC3D,CACF,CACF,CACF,CACA,IAAIZ,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OACd,CACA,IAAI3xI,IAAAA,CAAKxH,KAAK,CAAE,CACd,IAAI,CAAC4yS,OAAO,CAAClmS,CAAC,CAAG1M,KACjB,CAAA,MAAMgrB,EAAI,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EACtC,CAAA,MAAMm0J,EAAK,CAAA,IAAI,CAACvB,SAAS,CACzB,MAAMwB,GAAK,IAAI,CAAC1B,YAAY,CAACjmS,CAAC,CAAG1M,KAAAA,CACjC,IAAI,CAACs0S,SAAS,CAACF,EAAAA,CAAKC,EACpBrpR,CAAAA,CAAAA,CAAEte,CAAAA,CAAC,CAAG1M,KAAAA,CAAQ,IAAI,CAAC6zS,gBAAgB,CAAG,IAAI,CAACF,MAAM,CAACjnS,CAAC,CACnD,IAAI,CAACuyH,MAAM,CAAC+hB,gBAAgB,CAACh2H,CAAAA,EAC/B,CACA,IAAIxjB,MAAO,CACT,OAAO,IAAI,CAACorS,OAAO,CAAClmS,CAAC,CAEvB,IAAI6nS,MAAOv0S,CAAAA,KAAK,CAAE,CAChB,IAAI,CAAC4yS,OAAO,CAACx7S,IAAI,CAAC4I,KAAAA,CAAAA,CAClB,IAAI,CAACozS,cAAc,CAAC,IAAM,CAAA,IAAA,CAAA,CAC1B,IAAI,CAAC7xS,IAAI,CAAC,YAAA,CAAc,IAAI,CAACqxS,OAAO,EACtC,CACA,IAAI2B,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC3B,OAAO,CAErB,IAAI1T,QAAW,EAAA,CACb,OAAO,IAAI,CAACsV,SAAS,CAEvB,IAAIh9F,KAAMx3M,CAAAA,KAAK,CAAE,CACf,KAAM,CAAEw3M,KAAK,CAAE+8F,MAAM,CAAE,CAAG,IAAI,CAC9B,MAAME,KAAQj9F,CAAAA,KAAAA,CAAM9qM,CAAC,CACrB,MAAMgoS,KAAQl9F,CAAAA,KAAAA,CAAMpjM,CAAC,CACrB,GAAIpU,KAAiBka,YAAAA,IAAAA,CAAM,CACzBs9L,KAAAA,CAAMpgN,IAAI,CAAC4I,KAAAA,EACb,CAAO,KAAA,CACLw3M,KAAM52M,CAAAA,GAAG,CAAIZ,GAAAA,KAAAA,EACf,CACA,MAAMq5N,EAAAA,CAAKk7E,MAAO7nS,CAAAA,CAAC,CAAG6nS,MAAOhgS,CAAAA,CAAC,CAC9B,MAAMo+F,GAAK6kG,KAAM9qM,CAAAA,CAAC,CAAG+nS,KACrBF,CAAAA,MAAAA,CAAO7nS,CAAC,EAAI2sN,GAAK1mH,EACjB4hM,CAAAA,MAAOhgS,CAAAA,CAAC,EAAI8kN,EAAK1mH,CAAAA,EAAAA,CACjB,MAAM2mH,EAAAA,CAAKi7E,OAAOngS,CAAC,CAAGmgS,MAAO38R,CAAAA,CAAC,CAC9B,MAAMg7F,EAAK4kG,CAAAA,KAAAA,CAAMpjM,CAAC,CAAGsgS,KACrBH,CAAAA,MAAAA,CAAOngS,CAAC,EAAIklN,EAAAA,CAAK1mH,EACjB2hM,CAAAA,OAAO38R,CAAC,EAAI0hN,EAAK1mH,CAAAA,EACjB,CAAA,IAAI,CAACygM,YAAY,CAAG,IACpB,CAAA,IAAI,CAACsB,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACxB,cAAc,CAAC,KAAA,CAAO,OAC3B,IAAI,CAACyB,oBAAoB,EAAA,CACzB,IAAI,CAACtzS,IAAI,CAAC,YAAai2M,KACzB,EAAA,CACA,IAAIA,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACm8F,MAAM,CAEpB,IAAIlsS,KAAAA,CAAMzH,KAAK,CAAE,CACf,IAAI,CAAC4yS,OAAO,CAACr+R,CAAC,CAAGvU,KAAAA,CACjB,MAAMgrB,CAAAA,CAAI,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EACtC,CAAA,MAAMo0J,GAAK,IAAI,CAAC3B,QAAQ,CACxB,MAAM0B,EAAK,CAAA,IAAI,CAACzB,YAAY,CAACp+R,CAAC,CAAGvU,KAAAA,CACjC,IAAI,CAACs0S,SAAS,CAACF,EAAAA,CAAKC,GACpBrpR,CAAAA,CAAAA,CAAEte,CAAC,CAAG,IAAI,CAACimS,YAAY,CAACp+R,CAAC,CAAG,IAAI,CAACo+R,YAAY,CAACjmS,CAAC,CAAG1M,KAAQ,CAAA,IAAI,CAAC6zS,gBAAgB,EAAI,CAAA,CAAI,IAAI,CAACF,MAAM,CAACjnS,CAAC,CAADA,CACnG,IAAI,CAACuyH,MAAM,CAAC+hB,gBAAgB,CAACh2H,CAAAA,EAC/B,CACA,IAAIvjB,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACmrS,OAAO,CAACr+R,CAAC,CAEvB,IAAI2/R,aAAAA,EAAgB,CAClB,GAAI,CAAC,IAAI,CAACS,aAAa,EAAI,CAAC,IAAI,CAAC/Z,MAAM,CAAE,CACvC,OAAO,IAAI,CAACka,cAAc,CAE5B,MAAMC,gBAAmB,CAAA,IAAI,CAAC91K,MAAM,CAAC31H,MAAM,EAAI,IAAI,CAAC21H,MAAM,CAAC31H,MAAM,CAAC0qC,OAAO,EAAI,IAAI,CAACirF,MAAM,CAAC31H,MAAM,CAAC0qC,OAAO,CAACkgQ,aAAa,CAAC,CAAE,CAAA,CACxH,IAAI,CAACY,cAAc,CAAC,CAAA,CAAE,CAACl0S,GAAG,CAAC,IAAI,CAAC8xS,QAAQ,CAAE,IAAI,CAACK,UAAU,CAAE,CAAA,CAAA,CAC3D,IAAI,CAAC+B,cAAc,CAAC,CAAA,CAAE,CAACl0S,GAAG,CAAC,IAAI,CAACiyS,SAAS,CAAE,IAAI,CAACE,UAAU,CAAE,GAC5D,IAAI,CAAC+B,cAAc,CAAC,EAAE,CAACl0S,GAAG,CAAC,IAAI,CAACiyS,SAAS,CAAE,IAAI,CAACC,OAAO,CAAE,CACzD,CAAA,CAAA,IAAI,CAACgC,cAAc,CAAC,CAAE,CAAA,CAACl0S,GAAG,CAAC,IAAI,CAAC8xS,QAAQ,CAAE,IAAI,CAACI,OAAO,CAAE,CACxD,CAAA,CAAA,MAAMpoK,WAAc,CAAA,IAAI,CAACkwJ,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAClD,IAAI,IAAIryI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CACxB,IAAI,CAAC28S,gBAAgB,CAACx4R,cAAc,CAAC,IAAI,CAACs4R,cAAc,CAACz8S,CAAE,CAAA,CAAE,IAAI,CAACy8S,cAAc,CAACz8S,CAAE,CAAA,CAAA,CACnF,GAAIqyI,WAAa,CAAA,CACf,IAAI,CAACoqK,cAAc,CAACz8S,CAAAA,CAAE,CAAC8V,SAAS,CAAC,IAAI,CAACysR,MAAM,CAACA,MAAM,CAACjgR,KAAK,EAC3D,CACA,GAAIo6R,gBAAAA,CAAkB,CACpB,IAAI,CAACD,cAAc,CAACz8S,CAAE,CAAA,CAACsQ,GAAG,CAACosS,gBAAAA,EAC7B,CACF,CACA,IAAI,CAACJ,aAAa,CAAG,KACrB,CAAA,IAAI,CAACX,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACY,kBAAkB,CAAG,IAC1B,CAAA,OAAO,IAAI,CAACE,cACd,CACA,IAAIG,SAAAA,EAAY,CACd,OAAO,IAAI,CAACplK,KAAK,CAAG,IAAI,CAACA,KAAK,CAAC7xH,KAAK,CAAG,CACzC,CACA,IAAIk3R,UAAAA,EAAa,CACf,OAAO,IAAI,CAACrlK,KAAK,CAAG,IAAI,CAACA,KAAK,CAAC5xH,MAAM,CAAG,CAC1C,CACA,IAAIlB,GAAI/c,CAAAA,KAAK,CAAE,CACb,IAAI,CAAC4yS,OAAO,CAACh7R,CAAC,CAAG5X,KACjB,CAAA,MAAMgrB,CAAI,CAAA,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EAAA,CACtC,MAAMuzJ,EAAAA,CAAK,IAAI,CAACT,UAAU,CAC1B,MAAMQ,EAAK,CAAA,IAAI,CAACZ,YAAY,CAAC/6R,CAAC,CAAG5X,MACjC,IAAI,CAACyzS,UAAU,CAACF,EAAKC,CAAAA,EAAAA,CACrBxoR,CAAAA,CAAAA,CAAE5W,CAAC,CAAG,IAAI,CAACu+R,YAAY,CAAC/6R,CAAC,CAAG,IAAI,CAAC+6R,YAAY,CAACv+R,CAAC,CAAGpU,KAAAA,CAAQ,IAAI,CAAC0zS,iBAAiB,EAAI,CAAI,CAAA,IAAI,CAACC,MAAM,CAACv/R,CAAAA,CACpG,CAAA,IAAI,CAAC6qH,MAAM,CAAC+hB,gBAAgB,CAACh2H,CAC/B,EAAA,CACA,IAAIjO,GAAAA,EAAM,CACR,OAAO,IAAI,CAAC61R,OAAO,CAACh7R,CACtB,CACA,IAAI9H,KAAK9P,KAAK,CAAE,CACd,GAAIA,KAAU,GAAA,IAAI,CAACwS,KAAK,CAAE,CACxB,IAAI,CAACA,KAAK,CAAGxS,KAAAA,CACb,GAAI,IAAI,CAAC+vI,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACvuG,OAAO,EACnB,CAAA,IAAI,CAACuuG,MAAM,CAAG,KAChB,CACA,GAAI,IAAI,CAACF,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACruG,OAAO,EAClB,CAAA,IAAI,CAACquG,KAAK,CAAG,KACf,CACA,GAAI7vI,KAAAA,GAAU2kR,kBAAmB,CAC/B,IAAI,CAAC50I,MAAM,CAAG,IAAIoqJ,YAAa,CAAA,IAAI,EACrC,CAAO,KAAA,GAAIn6R,KAAU4kR,GAAAA,gBAAAA,CAAkB,CACrC,IAAI,CAAC/0I,KAAK,CAAG,IAAIi2J,WAAY,CAAA,IAAI,EACnC,CACF,CACF,CACA,IAAIh2R,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC0C,KAAK,CAEnB,IAAI2iS,QAASn1S,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAACo1S,SAAS,GAAKp1S,KAAO,CAAA,CAC5B,MACF,CACA,IAAI,CAACo1S,SAAS,CAAGp1S,KACjB,CAAA,GAAI,IAAI,CAACo0O,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAAE,CAChC,GAAI92P,KAAAA,CAAO,CACT,GAAI,IAAI,CAACkL,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAACu+C,UAAU,CAAC,IAAI,EAC9C,CACF,CAAA,KAAO,CACL,IAAI,CAACjhE,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAACw+C,aAAa,CAAC,IAAI,EACjD,CACF,CAAO,KAAA,CACL,GAAI,IAAI,CAACF,SAAS,GAAK,IACzB,CAAA,CAAA,CACA,IAAI,CAAC7zS,IAAI,CAAC,cAAgBvB,CAAAA,KAAAA,EAC5B,CACA,IAAIm1S,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAI1Z,OAAQ17R,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACu1S,QAAQ,CAAGv1S,MAChB,IAAI,CAACozS,cAAc,CAAC,KAAM,IAC1B,CAAA,CAAA,GAAI,IAAI,CAACrjK,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACgtJ,WAAW,GACzB,CACF,CACA,IAAIrB,OAAU,EAAA,CACZ,OAAO,IAAI,CAAC6Z,QACd,CACA,IAAIv3R,KAAAA,CAAMhe,KAAK,CAAE,CACf,IAAI,CAAC8kC,MAAM,CAAG9kC,KACd,CAAA,GAAI,CAAC,IAAI,CAACgzS,iBAAiB,CAAE,CAC3B,IAAI,CAACY,mBAAmB,CAAC5zS,KAAO,CAAA,IAAA,EAClC,CACA,IAAI,CAACuB,IAAI,CAAC,WAAa,CAAA,IAAI,CAACujC,MAAM,EACpC,CACA,IAAI9mB,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC8mB,MACd,CACA,IAAI0wQ,YAAe,EAAA,CACjB,GAAI,CAAC,IAAI,CAACZ,kBAAkB,CAAE,CAC5B,OAAO,IAAI,CAACa,aAAa,CAE3B,GAAI,IAAI,CAAC7a,MAAM,CAAE,CACf,MAAMsZ,aAAgB,CAAA,IAAI,CAACA,aAAa,CACxC,GAAI,CAAC,IAAI,CAACtZ,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAAE,CACnC2nK,IAAKj7S,CAAAA,IAAI,CAAC,IAAI,CAACwjS,MAAM,CAACA,MAAM,CAAC8a,aAAa,CAC1CrD,CAAAA,IAAKhgS,CAAAA,IAAI,CAAC,EAAA,CAAG,CAAG,CAACggS,IAAKhgS,CAAAA,IAAI,CAAC,EAAG,CAAA,CAC9BggS,IAAKz8R,CAAAA,IAAI,CAAC,IAAI,CAACglR,MAAM,CAAC56J,iBAAiB,EAAIqyK,CAAAA,IAAAA,CAAAA,CAC3C,IAAI,IAAIh6S,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAGA,IAAI,CACxBg6S,IAAAA,CAAK71R,cAAc,CAAC03R,aAAa,CAAC77S,CAAAA,CAAE,CAAE,IAAI,CAACo9S,aAAa,CAACp9S,CAAE,CAAA,EAC7D,CACF,CACF,CAAO,KAAA,CACL,MAAMs9S,QAAW,CAAA,IAAI,CAAC12K,MAAM,CAACghB,gBAAgB,EAAA,CAC7CoyJ,IAAKx0R,CAAAA,YAAY,CAAC,CAAC83R,QAAAA,CAASjpS,CAAC,CAAE,CAACipS,QAAAA,CAASvhS,CAAC,CAAE,CAACuhS,QAASphS,CAAAA,CAAC,CACvD+9R,CAAAA,IAAAA,CAAKtzR,MAAM,CAAC1K,IAAK8B,CAAAA,IAAI,CAAE,IAAI,CAAC6oH,MAAM,CAACihB,gBAAgB,EAAA,CAAI,IAAI,CAACjhB,MAAM,CAACkhB,aAAa,EAChFoyJ,CAAAA,CAAAA,IAAAA,CAAK10R,YAAY,CAAC83R,QAAAA,CAASjpS,CAAC,CAAEipS,SAASvhS,CAAC,CAAEuhS,QAASphS,CAAAA,CAAC,CACpD,CAAA,MAAM0qH,MAAS,CAAA,IAAI,CAACA,MAAM,CAAC31H,MAAM,CAAG,IAAI,CAAC21H,MAAM,CAAC31H,MAAM,CAAG,IAAI,CAAC21H,MAAM,CACpEuzK,IAAKp7S,CAAAA,IAAI,CAAC6nI,MAAAA,CAAOe,iBAAiB,EAClCwyK,CAAAA,CAAAA,IAAAA,CAAK78R,GAAG,CAAC48R,MAAM58R,GAAG,CAAC28R,IAAM38R,CAAAA,CAAAA,GAAG,CAAC08R,IAC7BF,CAAAA,CAAAA,MAAAA,CAAOvxS,GAAG,CAAC+0S,QAASjpS,CAAAA,CAAC,CAAG,IAAI,CAAC8qM,KAAK,CAAC9qM,CAAC,CAAG,IAAI,CAAC6uR,eAAe,CAAEoa,SAASvhS,CAAC,CAAG,IAAI,CAACojM,KAAK,CAACpjM,CAAC,CAAG,IAAI,CAAConR,gBAAgB,CAAEma,QAAAA,CAASphS,CAAC,CAC1Hi+R,CAAAA,IAAAA,CAAKh2R,cAAc,CAAC21R,OAAQ,IAAI,CAACsD,aAAa,CAAC,CAAE,CAAA,CAAA,CACjDtD,MAAOvxS,CAAAA,GAAG,CAAC+0S,QAASjpS,CAAAA,CAAC,CAAI,CAAA,CAAI,CAAA,IAAI,CAAC8qM,KAAK,CAAC9qM,CAAAA,EAAK,IAAI,CAAC6uR,eAAe,CAAEoa,QAAAA,CAASvhS,CAAC,CAAG,IAAI,CAACojM,KAAK,CAACpjM,CAAC,CAAG,IAAI,CAAConR,gBAAgB,CAAEma,QAAAA,CAASphS,CAAC,CAAA,CAChIi+R,IAAKh2R,CAAAA,cAAc,CAAC21R,MAAAA,CAAQ,IAAI,CAACsD,aAAa,CAAC,CAAA,CAAE,EACjDtD,MAAOvxS,CAAAA,GAAG,CAAC+0S,QAAAA,CAASjpS,CAAC,CAAI,CAAA,CAAA,CAAI,IAAI,CAAC8qM,KAAK,CAAC9qM,CAAC,EAAI,IAAI,CAAC6uR,eAAe,CAAEoa,QAAAA,CAASvhS,CAAC,CAAG,CAAC,CAAA,CAAI,IAAI,CAACojM,KAAK,CAACpjM,CAAAA,EAAK,IAAI,CAAConR,gBAAgB,CAAEma,SAASphS,CAAC,CAAA,CACtIi+R,IAAKh2R,CAAAA,cAAc,CAAC21R,MAAQ,CAAA,IAAI,CAACsD,aAAa,CAAC,CAAA,CAAE,CACjDtD,CAAAA,MAAAA,CAAOvxS,GAAG,CAAC+0S,QAAAA,CAASjpS,CAAC,CAAG,IAAI,CAAC8qM,KAAK,CAAC9qM,CAAC,CAAG,IAAI,CAAC6uR,eAAe,CAAEoa,QAASvhS,CAAAA,CAAC,CAAI,CAAA,CAAI,CAAA,IAAI,CAACojM,KAAK,CAACpjM,CAAC,EAAI,IAAI,CAAConR,gBAAgB,CAAEma,QAAAA,CAASphS,CAAC,CAAA,CAChIi+R,IAAKh2R,CAAAA,cAAc,CAAC21R,MAAQ,CAAA,IAAI,CAACsD,aAAa,CAAC,CAAE,CAAA,EACnD,CACA,IAAI,CAACb,kBAAkB,CAAG,KAC1B,CAAA,OAAO,IAAI,CAACa,aACd,CACA,IAAI9G,QAAAA,CAASh8R,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,WAAY7yQ,GAC7B,EAAA,CACA,IAAIg8R,QAAAA,EAAW,CACb,GAAI,IAAI,CAAC9+J,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC8+J,QACpB,CACA,OAAO,IACT,CACA,IAAIyC,WAAYz+R,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,KAChC,CACA,IAAIy+R,WAAc,EAAA,CAChB,GAAI,IAAI,CAACvhK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACuhK,WAAW,CAE/B,OAAO,IACT,CACA,IAAIC,WAAAA,CAAY1+R,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,EAChC,CACA,IAAI0+R,WAAAA,EAAc,CAChB,GAAI,IAAI,CAACxhK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACwhK,WACpB,CACA,OAAO,IACT,CACA,IAAIG,QAAS7+R,CAAAA,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAY7yQ,CAAAA,GAAAA,EAC7B,CACA,IAAI6+R,QAAW,EAAA,CACb,GAAI,IAAI,CAAC3hK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC2hK,QAAQ,CAE5B,OAAO,IACT,CACA,IAAIF,YAAa3+R,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAgB7yQ,CAAAA,GAAAA,EACjC,CACA,IAAI2+R,cAAe,CACjB,GAAI,IAAI,CAACzhK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACyhK,YAAY,CAEhC,OAAO,IACT,CACA,IAAIC,aAAc5+R,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAiB7yQ,GAClC,EAAA,CACA,IAAI4+R,aAAAA,EAAgB,CAClB,GAAI,IAAI,CAAC1hK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC0hK,aACpB,CACA,OAAO,IACT,CACA,IAAIj1P,MAAM3pC,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,EAC1B,CACA,IAAI2pC,KAAQ,EAAA,CACV,GAAI,IAAI,CAACuzF,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACvzF,KACpB,CACA,GAAI,IAAI,CAACyzF,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAACzzF,KACrB,CACA,OAAO,IACT,CACA,IAAI2pP,IAAKtzR,CAAAA,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAA,CAAQ7yQ,GACzB,EAAA,CACA,IAAIszR,IAAO,EAAA,CACT,GAAI,IAAI,CAACp2J,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACo2J,IAAI,CAExB,OAAO,IACT,CACA,IAAIU,SAAUh0R,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAA,CAAa7yQ,GAC9B,EAAA,CACA,IAAIg0R,SAAY,EAAA,CACd,GAAI,IAAI,CAAC92J,KAAK,EAAI,OAAO,IAAI,CAACA,KAAK,CAAC82J,SAAS,GAAK,QAAU,CAAA,CAC1D,OAAO,IAAI,CAAC92J,KAAK,CAAC82J,SACpB,CACA,OAAO,IACT,CACA,IAAIhzR,QAAQhB,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,KAC5B,CACA,IAAIgB,OAAU,EAAA,CACZ,GAAI,IAAI,CAACk8H,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACl8H,OAAO,CAE3B,OAAO,IACT,CACA,IAAI68R,UAAAA,CAAW79R,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAI69R,UAAa,EAAA,CACf,GAAI,IAAI,CAAC3gK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC2gK,UACpB,CACA,OAAO,IACT,CACA,IAAIC,SAAAA,CAAU99R,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAA,CAAa7yQ,GAC9B,EAAA,CACA,IAAI89R,SAAY,EAAA,CACd,GAAI,IAAI,CAAC5gK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC4gK,SAAS,CAE7B,OAAO,IACT,CACA,IAAIvwO,KAAAA,CAAMvtD,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,EAC1B,CACA,IAAIutD,KAAQ,EAAA,CACV,GAAI,IAAI,CAAC2vE,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC3vE,KAAK,CAEzB,OAAO,IACT,CACA,IAAIjT,SAAAA,CAAUt6C,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAa7yQ,CAAAA,GAAAA,EAC9B,CACA,IAAIs6C,WAAY,CACd,GAAI,IAAI,CAAC4iF,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC5iF,SACpB,CACA,OAAO,IACT,CACA,IAAI8+O,SAAUp5R,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAA,CAAa7yQ,KAC9B,CACA,IAAIo5R,SAAY,EAAA,CACd,GAAI,IAAI,CAACl8J,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACk8J,SAAS,CAE7B,OAAO,IACT,CACA,IAAIoD,UAAAA,CAAWx8R,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAIw8R,UAAAA,EAAa,CACf,GAAI,IAAI,CAACt/J,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACs/J,UACpB,CACA,OAAO,IACT,CACA,IAAI2B,UAAWn+R,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAIm+R,UAAa,EAAA,CACf,GAAI,IAAI,CAACjhK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACihK,UAAU,CAE9B,OAAO,IACT,CACA,IAAIhK,gBAAAA,CAAiBn0R,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAoB7yQ,CAAAA,GAAAA,EACrC,CACA,IAAIm0R,gBAAmB,EAAA,CACrB,GAAI,IAAI,CAACj3J,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACi3J,gBAAgB,CAEpC,OAAO,IACT,CACA,IAAIvvE,IAAAA,CAAK5kN,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,OAAQ7yQ,GACzB,EAAA,CACA,IAAI4kN,IAAAA,EAAO,CACT,GAAI,IAAI,CAAC1nF,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC0nF,IACpB,CACA,OAAO,IACT,CACA,IAAIr3N,IAAIyS,GAAG,CAAE,CACX,IAAI,CAAC6yQ,SAAS,CAAC,KAAA,CAAO7yQ,KACxB,CACA,IAAIzS,GAAM,EAAA,CACR,GAAI,IAAI,CAAC2vI,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC3vI,GAAG,CAEvB,OAAO,IACT,CACA,IAAIiqC,OAAAA,CAAQx3B,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,GAC5B,EAAA,CACA,IAAIw3B,OAAAA,EAAU,CACZ,GAAI,IAAI,CAAC4lG,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC5lG,OAAO,CAE5B,OAAO,IACT,CACA,IAAIooO,YAAa5/P,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAgB7yQ,CAAAA,GAAAA,EACjC,CACA,IAAI4/P,cAAe,CACjB,GAAI,IAAI,CAACxiI,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAACwiI,YAAY,CAEjC,OAAO,IACT,CACA,IAAIr3I,QAAAA,CAASvoH,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAY7yQ,CAAAA,GAAAA,EAC7B,CACA,IAAIuoH,UAAW,CACb,GAAI,IAAI,CAAC6U,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC7U,QAAQ,CAE7B,OAAO,IACT,CACA,IAAIm3G,aAAc1/N,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAA,CAAiB7yQ,GAClC,EAAA,CACA,IAAI0/N,aAAAA,EAAgB,CAClB,GAAI,IAAI,CAACtiG,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAACsiG,aAAa,CAElC,OAAO,IACT,CACA,IAAIj0G,OAAOzrH,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAU7yQ,CAAAA,GAAAA,EAC3B,CACA,IAAIyrH,MAAAA,EAAS,CACX,GAAI,IAAI,CAAC2R,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC3R,MACrB,CACA,OAAO,IACT,CACA,IAAIorJ,WAAY72Q,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,GAChC,EAAA,CACA,IAAI62Q,WAAc,EAAA,CAChB,GAAI,IAAI,CAACz5I,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAACy5I,WAAW,CAEhC,OAAO,IACT,CACA,IAAIE,WAAAA,CAAY/2Q,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,EAChC,CACA,IAAI+2Q,aAAc,CAChB,GAAI,IAAI,CAAC35I,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC25I,WAAW,CAEhC,OAAO,IACT,CACA,IAAI/yE,aAAAA,CAAchkM,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAiB7yQ,GAClC,EAAA,CACA,IAAIgkM,aAAAA,EAAgB,CAClB,GAAI,IAAI,CAAC5mE,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC4mE,aACrB,CACA,OAAO,IACT,CACA,IAAImY,OAAQn8M,CAAAA,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,KAC5B,CACA,IAAIm8M,OAAU,EAAA,CACZ,GAAI,IAAI,CAACj/E,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACi/E,OAAO,CAE3B,GAAI,IAAI,CAAC/+E,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC++E,OACrB,CACA,OAAO,IACT,CACA,IAAIh1K,KAAKnnC,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,EACzB,CACA,IAAImnC,IAAO,EAAA,CACT,GAAI,IAAI,CAACi2F,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAACj2F,IACrB,CACA,OAAO,IACT,CACA,IAAI7N,IAAAA,CAAKt5B,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAA,CAAQ7yQ,GACzB,EAAA,CACA,IAAIs5B,IAAO,EAAA,CACT,GAAI,IAAI,CAAC8jG,MAAM,CAAE,CACf,OAAO,IAAI,CAACA,MAAM,CAAC9jG,IACrB,CACA,OAAO,IACT,CACA,IAAI+kQ,YAAar+R,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAA,CAAgB7yQ,GACjC,EAAA,CACA,IAAIq+R,YAAe,EAAA,CACjB,GAAI,IAAI,CAACnhK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACmhK,YAAY,CAEhC,OAAO,IACT,CACA,IAAIC,gBAAAA,CAAiBt+R,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAoB7yQ,CAAAA,GAAAA,EACrC,CACA,IAAIs+R,kBAAmB,CACrB,GAAI,IAAI,CAACphK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACohK,gBACpB,CACA,OAAO,IACT,CACA,IAAIC,WAAYv+R,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,KAChC,CACA,IAAIu+R,WAAc,EAAA,CAChB,GAAI,IAAI,CAACrhK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACqhK,WAAW,CAE/B,OAAO,IACT,CACA,IAAIC,YAAAA,CAAax+R,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAgB7yQ,CAAAA,GAAAA,EACjC,CACA,IAAIw+R,YAAAA,EAAe,CACjB,GAAI,IAAI,CAACthK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACshK,YACpB,CACA,OAAO,IACT,CACA,IAAIM,YAAa9+R,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAA,CAAgB7yQ,GACjC,EAAA,CACA,IAAI8+R,YAAe,EAAA,CACjB,GAAI,IAAI,CAAC5hK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAAC4hK,YACpB,CACA,OAAO,IACT,CACA,IAAII,UAAWl/R,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAIk/R,UAAa,EAAA,CACf,GAAI,IAAI,CAAChiK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACgiK,UAAU,CAE9B,OAAO,IACT,CACA,IAAIC,QAAAA,CAASn/R,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,WAAY7yQ,GAC7B,EAAA,CACA,IAAIm/R,QAAAA,EAAW,CACb,GAAI,IAAI,CAACjiK,KAAK,CAAE,CACd,OAAO,IAAI,CAACA,KAAK,CAACiiK,QACpB,CACA,OAAO,IACT,CACAtsB,SAAAA,CAAU7pR,IAAI,CAAEqE,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC6vI,KAAK,CAAE,CACd,GAAI,IAAI,CAACA,KAAK,CAACl0I,IAAAA,CAAK,GAAKqE,KAAAA,CAAO,CAC9B,IAAI,CAAC41S,WAAW,GAClB,CACA,IAAI,CAAC/lK,KAAK,CAACl0I,IAAK,CAAA,CAAGqE,MACrB,CAAA,KAAO,GAAI,IAAI,CAAC+vI,MAAM,CAAE,CACtB,GAAI,IAAI,CAACA,MAAM,CAACp0I,IAAAA,CAAK,GAAKqE,KAAAA,CAAO,CAC/B,IAAI,CAAC41S,WAAW,GAClB,CACA,IAAI,CAAC7lK,MAAM,CAACp0I,KAAK,CAAGqE,MACtB,CACF,CACA61S,MAAS,EAAA,CACP,IAAI,CAAC52K,MAAM,CAACshB,KAAK,CAAG,IAAI,CAACA,KAAK,CAC9B,IAAI,CAACthB,MAAM,CAACrc,WAAW,CAAG,IAAI,CAACkzL,YAAY,CAC3C,IAAI,CAAC72K,MAAM,CAAC+hB,gBAAgB,CAAG,IAAI,CAAC+0J,kBAAiB,CAEvDC,QAAW,EAAA,CACT,IAAI,CAAC/2K,MAAM,CAACshB,KAAK,CAAGq6F,MAAAA,CAAOlwH,SAAS,CAAC61B,KAAK,CAC1C,IAAI,CAACthB,MAAM,CAACrc,WAAW,CAAGg4H,MAAAA,CAAOlwH,SAAS,CAAC9H,WAC3C,CAAA,IAAI,CAACqc,MAAM,CAAC+hB,gBAAgB,CAAG45F,MAAAA,CAAOlwH,SAAS,CAACs2B,iBAAgB,CAElE80J,YAAappS,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACpB,GAAI,CAAC,IAAI,CAACy/B,OAAO,CAAC4mP,MAAM,CAAE,CACxBhgD,MAAOlwH,CAAAA,SAAS,CAAC9H,WAAW,CAAC3gH,IAAI,CAAC,IAAI,CAAEyK,CAAG0H,CAAAA,CAAAA,CAAGG,CAC9C,CAAA,CAAA,MACF,CACA,GAAI7H,CAAAA,YAAa4H,IAAM,CAAA,CACrB29R,WAAW76S,IAAI,CAACsV,CAClB,EAAA,CAAA,KAAO,CACLulS,UAAAA,CAAWrxS,GAAG,CAAC8L,EAAG0H,CAAGG,CAAAA,CAAAA,EACvB,CACA,IAAI,CAACyrH,iBAAiB,EAAA,CACtBkyK,YAAa96S,CAAAA,IAAI,CAAC,IAAI,CAAC48C,OAAO,CAACiiQ,cAAc,CAAA,CAAE73R,MAAM,EAAA,CACrD8zR,aAAa11R,cAAc,CAACy1R,UAAY,CAAA,IAAI,CAACrzJ,aAAa,CAAA,CAC1D,GAAI,CAAC,IAAI,CAACO,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAg1J,iBAAAA,CAAkBrpS,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACzB,GAAI7H,CAAAA,YAAa4H,IAAM,CAAA,CACrB,IAAI,CAACsqI,aAAa,CAACxnJ,IAAI,CAACsV,CAAAA,EAC1B,CAAO,KAAA,CACL,IAAI,CAACkyI,aAAa,CAACh+I,GAAG,CAAC8L,CAAG0H,CAAAA,CAAAA,CAAGG,CAC/B,EAAA,CACA,MAAMy/B,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,MAAMhpB,CAAI,CAAA,IAAI,CAAC4zH,aAAa,CAC5B,MAAMs3J,GAAAA,CAAMliQ,QAAQ2/P,MACpB3/P,CAAAA,OAAAA,CAAQ4+P,OAAO,CAAClmS,CAAC,CAAGse,EAAEte,CAAC,CAAGsnC,OAAQ6/P,CAAAA,gBAAgB,CAAGqC,GAAIxpS,CAAAA,CAAC,CAC1DsnC,QAAQ4+P,OAAO,CAACr+R,CAAC,CAAGy/B,OAAQ2+P,CAAAA,YAAY,CAACp+R,CAAC,CAAGy/B,OAAQ2+P,CAAAA,YAAY,CAACjmS,CAAC,CAAGsnC,OAAQ6/P,CAAAA,gBAAgB,CAAG7/P,OAAAA,CAAQ4+P,OAAO,CAAClmS,CAAC,CAClHsnC,OAAQ4+P,CAAAA,OAAO,CAACx+R,CAAC,CAAG4W,CAAE5W,CAAAA,CAAC,CAAG4/B,OAAAA,CAAQ0/P,iBAAiB,CAAGwC,GAAAA,CAAI9hS,CAC1D4/B,CAAAA,OAAQ4+P,CAAAA,OAAO,CAACh7R,CAAC,CAAGo8B,OAAAA,CAAQ2+P,YAAY,CAAC/6R,CAAC,CAAGo8B,OAAAA,CAAQ2+P,YAAY,CAACv+R,CAAC,CAAG4/B,OAAAA,CAAQ0/P,iBAAiB,CAAG1/P,QAAQ4+P,OAAO,CAACx+R,CAAC,CACnH,GAAI,CAAC,IAAI,CAAC+qI,WAAW,CAAE,CACrB,IAAI,CAAC4B,aAAa,GACpB,CACF,CACAR,KAAAA,EAAQ,CACN,MAAMvsG,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,MAAM4mP,MAAAA,CAAS5mP,QAAQ4mP,MAAM,CAC7B,GAAIA,MAAAA,CAAQ,CACV,GAAI5mP,OAAQq/P,CAAAA,YAAY,CAAE,CACxB,IAAI8C,IAAO,CAAA,CAAA,CACX,IAAIC,IAAAA,CAAO,CACX,CAAA,IAAIp+H,GAAK,CACT,CAAA,IAAIC,EAAK,CAAA,CAAA,CACT,GAAI,IAAI,CAAClvK,OAAO,EAAI,IAAI,CAACA,OAAO,CAACirC,OAAO,CAAE,CACxCmiQ,IAAO,CAAA,IAAI,CAACptS,OAAO,CAACirC,OAAO,CAACunP,eAAe,CAC3C6a,IAAAA,CAAO,IAAI,CAACrtS,OAAO,CAACirC,OAAO,CAACwnP,gBAAgB,CAC5CxjH,EAAAA,CAAK,IAAI,CAACjvK,OAAO,CAACirC,OAAO,CAACwjK,KAAK,CAAC9qM,CAAC,CACjCurK,EAAK,CAAA,IAAI,CAAClvK,OAAO,CAACirC,OAAO,CAACwjK,KAAK,CAACpjM,EAClC,MAAO,CACL,MAAM25I,UAAa6sI,CAAAA,MAAAA,CAAOA,MAAM,CAAC7sI,UAAU,CAC3CooJ,IAAAA,CAAOpoJ,WAAWrhJ,CAAC,CAAGkuR,MAAOA,CAAAA,MAAM,CAACjgR,KAAK,CACzCy7R,IAAAA,CAAOroJ,WAAW35I,CAAC,CAAGwmR,MAAOA,CAAAA,MAAM,CAACjgR,MACtC,CACAq5B,OAAAA,CAAQqiQ,gBAAgB,CAACx4R,YAAY,CAACs4R,IAAAA,EAAQniQ,OAAAA,CAAQ63P,MAAM,CAACn/R,CAAC,CAAGsrK,EAAC,CAAI,CAAA,EAAEo+H,IAAQn+H,EAAAA,EAAKjkI,CAAAA,OAAAA,CAAQ63P,MAAM,CAACz3R,CAAC,CAAA,CAAI,CAAA,CAAA,CACzG4/B,CAAAA,OAAAA,CAAQq/P,YAAY,CAAG,KAAA,CACvBr/P,OAAQm/P,CAAAA,sBAAsB,GAChC,CACA,GAAIn/P,OAAQsiQ,CAAAA,UAAU,CAAE,CACtBtiQ,OAAAA,CAAQo/P,cAAc,CAAC,KAAO,CAAA,KAAA,EAChC,CACF,CACA,GAAI,IAAI,CAACj0J,WAAW,CAAE,CACpB,IAAI,CAACD,cAAc,CAAClgI,MAAM,CAAC,IAAI,CAAC4/H,aAAa,CAAE,IAAI,CAACC,aAAa,CAAE,IAAI,CAACC,UAAU,EAClF,MAAM9zH,CAAAA,CAAI,IAAI,CAAC4zH,aAAa,CAC5B,MAAMs3J,GAAMliQ,CAAAA,OAAAA,CAAQ2/P,MACpB3/P,CAAAA,OAAAA,CAAQ4+P,OAAO,CAAClmS,CAAC,CAAGse,CAAAA,CAAEte,CAAC,CAAGsnC,OAAAA,CAAQ6/P,gBAAgB,CAAGqC,IAAIxpS,CACzDsnC,CAAAA,OAAAA,CAAQ4+P,OAAO,CAACr+R,CAAC,CAAGy/B,QAAQ2+P,YAAY,CAACp+R,CAAC,CAAGy/B,QAAQ2+P,YAAY,CAACjmS,CAAC,CAAGsnC,QAAQ6/P,gBAAgB,CAAG7/P,OAAQ4+P,CAAAA,OAAO,CAAClmS,CAAC,CAClHsnC,QAAQ4+P,OAAO,CAACx+R,CAAC,CAAG4W,EAAE5W,CAAC,CAAG4/B,OAAQ0/P,CAAAA,iBAAiB,CAAGwC,GAAI9hS,CAAAA,CAAC,CAC3D4/B,OAAQ4+P,CAAAA,OAAO,CAACh7R,CAAC,CAAGo8B,OAAQ2+P,CAAAA,YAAY,CAAC/6R,CAAC,CAAGo8B,OAAQ2+P,CAAAA,YAAY,CAACv+R,CAAC,CAAG4/B,OAAQ0/P,CAAAA,iBAAiB,CAAG1/P,OAAAA,CAAQ4+P,OAAO,CAACx+R,CAClH,CAAA,IAAI,CAAC+qI,WAAW,CAAG,MACrB,CACA,GAAI,CAACy7I,MAAAA,CAAQ,CACX,GAAI,IAAI,CAACx7I,WAAW,CAAE,CACpBprG,OAAQ2gQ,CAAAA,aAAa,CAAG,IACxB3gQ,CAAAA,OAAQggQ,CAAAA,mBAAmB,CAAG,IAC9BhgQ,CAAAA,OAAQ4gQ,CAAAA,kBAAkB,CAAG,KAC/B,CACAh6D,MAAOlwH,CAAAA,SAAS,CAAC61B,KAAK,CAACt+I,IAAI,CAAC,IAAI,CAAA,CAChC,MACF,CACA,GAAI,IAAI,CAACm9I,WAAW,CAAE,CACpB,GAAI,IAAI,CAACr2I,OAAO,GAAK,IAAM,CAAA,CACzB,IAAI,CAACyiB,cAAc,CAACp0B,IAAI,CAAC,IAAI,CAAC8nJ,cAAc,EAC9C,MAAO,CACL,GAAI,IAAI,CAACn2I,OAAO,CAACirC,OAAO,CAAE,CACxBA,OAAQiiQ,CAAAA,cAAc,CAACrgS,IAAI,CAAC,IAAI,CAAC7M,OAAO,CAACirC,OAAO,CAACtoB,eAAe,CAAEsoB,OAAAA,CAAQqiQ,gBAAgB,EAC5F,CAAO,KAAA,CACLriQ,QAAQiiQ,cAAc,CAAC7+S,IAAI,CAAC48C,QAAQqiQ,gBAAgB,EACtD,CACAriQ,OAAAA,CAAQtoB,eAAe,CAAC9V,IAAI,CAACo+B,OAAAA,CAAQiiQ,cAAc,CAAE,IAAI,CAAC/2J,cAAc,CACxE,CAAA,GAAI07I,MAAQ,CAAA,CACV5mP,QAAQiiQ,cAAc,CAACrgS,IAAI,CAACglR,OAAOA,MAAM,CAAC8a,aAAa,CAAE1hQ,OAAQiiQ,CAAAA,cAAc,CAC/E,CAAA,GAAI,CAACrb,MAAOA,CAAAA,MAAM,CAAClwJ,WAAW,CAAE,CAC9B12F,OAAAA,CAAQiiQ,cAAc,CAACrgS,IAAI,CAACglR,MAAAA,CAAOpvQ,cAAc,CAAEwoB,OAAQiiQ,CAAAA,cAAc,EAC3E,CACA,IAAI,CAACzqR,cAAc,CAAC5V,IAAI,CAACo+B,OAAQiiQ,CAAAA,cAAc,CAAE,IAAI,CAAC/2J,cAAc,CAAA,CACpE,MAAMq3J,oBAAAA,CAAuBviQ,OAAQwiQ,CAAAA,qBAAqB,CAC1DD,oBAAAA,CAAqBn/R,WAAW,EAChC,CAAA,MAAM9N,MAAS,CAAA,IAAI,CAACP,OAAO,CAC3B,GAAIO,MAAAA,EAAUA,OAAO0qC,OAAO,EAAI1qC,MAAWsxR,GAAAA,MAAAA,CAAQ,CACjDyX,IAAAA,CAAKrzR,MAAM,CAAC1K,KAAK8B,IAAI,CAAE9M,MAAO42I,CAAAA,gBAAgB,EAAI52I,CAAAA,MAAAA,CAAO62I,aAAa,EAAA,CAAA,CACtEo2J,qBAAqB3gS,IAAI,CAACtM,MAAO0qC,CAAAA,OAAO,CAACwiQ,qBAAqB,CAAEnE,IAAAA,EAClE,CACA,MAAMoE,WAAAA,CAActE,MACpBsE,CAAAA,WAAAA,CAAY71S,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,IAAI,CAACg+I,aAAa,CAACrqI,CAAC,CAAA,CAC1C,MAAMmiS,WAAAA,CAActE,MACpBsE,CAAAA,WAAAA,CAAY91S,GAAG,CAACozC,OAAAA,CAAQ0+P,QAAQ,CAAG1+P,QAAQ2/P,MAAM,CAACjnS,CAAC,CAAGsnC,QAAQunP,eAAe,CAAEvnP,OAAQ++P,CAAAA,UAAU,CAAG/+P,OAAAA,CAAQ2/P,MAAM,CAACv/R,CAAC,CAAG4/B,OAAAA,CAAQwnP,gBAAgB,CAAE,GACjJ6W,IAAKx0R,CAAAA,YAAY,CAAC,CAAC64R,YAAYhqS,CAAC,CAAE,CAACgqS,WAAAA,CAAYtiS,CAAC,CAAE,CAACsiS,WAAAA,CAAYniS,CAAC,CAChE+9R,CAAAA,IAAAA,CAAKtzR,MAAM,CAACy3R,WAAa,CAAA,IAAI,CAACv2J,gBAAgB,GAAI,IAAI,CAACC,aAAa,EAAA,CAAA,CACpEoyJ,IAAK10R,CAAAA,YAAY,CAAC64R,WAAAA,CAAYhqS,CAAC,CAAEgqS,WAAAA,CAAYtiS,CAAC,CAAEsiS,YAAYniS,CAAC,CAAA,CAC7Dy/B,OAAQghQ,CAAAA,gBAAgB,CAACp/R,IAAI,CAACo+B,OAAQwiQ,CAAAA,qBAAqB,CAAEjE,IAAAA,CAAAA,CAAM58R,GAAG,CAAC28R,MAAM38R,GAAG,CAAC08R,IACjFr+P,CAAAA,CAAAA,QAAQ2gQ,aAAa,CAAG,IACxB3gQ,CAAAA,QAAQggQ,mBAAmB,CAAG,IAC9BhgQ,CAAAA,OAAQ4gQ,CAAAA,kBAAkB,CAAG,KAC/B,MAAO,CACL,IAAI,CAACppR,cAAc,CAACp0B,IAAI,CAAC48C,OAAQtoB,CAAAA,eAAe,EAClD,CACF,CACA,IAAI,CAAC0zH,WAAW,CAAG,MACrB,CACF,CACAovI,SAAUllR,CAAAA,MAAM,CAAE,CAChB,MAAMlR,MAAAA,CAAS,IAAI,CAACu+S,gBAAgB,EACpC,CAAA,IAAI,CAAC13K,MAAM,CAACkiB,aAAa,EACzB,CAAA,IAAI,CAACy1J,aAAa,CAACx+S,MAAOwiS,CAAAA,MAAM,EAChC,IAAI,CAAC1qJ,YAAY,GACnB,CACAA,YAAe,EAAA,CACb,IAAIpoI,OAAAA,CAAU,IAAI,CAACm3H,MAAM,CACzB,MAAMn3H,OAAQ,CAAA,CACZ,MAAM65F,IAAAA,CAAO75F,QAAQwB,MAAM,CAC3B,GAAKq4F,CAAAA,IAAS,GAAA,IAAA,EAAQA,IAAKi5L,CAAAA,MAAM,GAAK9yR,OAAQksC,CAAAA,OAAO,CAAE,CACrD,GAAI,CAAC,IAAI,CAACogM,MAAM,CAACyiE,UAAU,EAAI,CAAC,IAAI,CAACziE,MAAM,CAACyiE,UAAU,CAACv+S,MAAM,CAAE,CAC7D,IAAI,CAAC87O,MAAM,CAACyiE,UAAU,CAAG,EAAE,CAC3B,IAAI,CAACziE,MAAM,CAAC/L,GAAG,CAACvoO,IAAI,CAAC,WAAa,CAAA,IAAI,CAACqwI,YAAY,CAAE,IAAI,EAC3D,CACA,MAAM93I,CAAAA,CAAI,IAAI,CAAC+7O,MAAM,CAACyiE,UAAU,CAACv1S,OAAO,CAAC,IAAI,CAAC29H,MAAM,EACpD,GAAI5mI,CAAAA,EAAK,CAAG,CAAA,CACV,IAAI,CAAC+7O,MAAM,CAACyiE,UAAU,CAAC11S,MAAM,CAAC9I,CAAG,CAAA,CAAA,EACnC,CACA,MAAMumF,CAAI,CAAA,IAAI,CAACw1J,MAAM,CAACyiE,UAAU,CAACv1S,OAAO,CAACwG,OAAAA,CAAAA,CACzC,GAAI82E,CAAAA,CAAI,EAAG,CACT,IAAI,CAACw1J,MAAM,CAACyiE,UAAU,CAAC19S,IAAI,CAAC2O,OAC9B,EAAA,CACF,CACAA,OAAAA,CAAU65F,KACZ,CACF,CACAwuC,YAAAA,EAAe,CACb,IAAI,IAAI93I,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC+7O,MAAM,CAACyiE,UAAU,CAACv+S,MAAM,CAAED,IAAI,CACpD,MAAM4zC,IAAO,CAAA,IAAI,CAACmoM,MAAM,CAACyiE,UAAU,CAACx+S,CAAE,CAAA,CACtC,GAAI4zC,IAAAA,CAAK+H,OAAO,CAAE,CAChB,MAAM3Q,KAAAA,CAAQ,EACd4I,IAAK+H,CAAAA,OAAO,CAAC8iQ,QAAQ,CAACzzQ,KACxB,EAAA,CACF,CACA,IAAI,CAAC+wM,MAAM,CAACyiE,UAAU,CAACv+S,MAAM,CAAG,EAClC,CACAy+S,YAAYnc,MAAM,CAAE,CAClBA,MAAAA,CAAOoc,YAAY,CAAC,IAAI,EAC1B,CACAC,aAAcrc,CAAAA,MAAM,CAAE,CACpBA,OAAOsc,cAAc,CAAC,IAAI,EAC5B,CACAN,aAAchc,CAAAA,MAAM,CAAE,CACpB,GAAI,IAAI,CAACA,MAAM,EAAI,IAAI,CAACA,MAAM,GAAKA,OAAQ,CACzC,IAAI,CAACqc,aAAa,CAAC,IAAI,CAACrc,MAAM,CAACA,MAAM,EACvC,CACA,MAAMuc,cAAAA,CAAiB,IAAI,CAACvc,MAC5B,CAAA,IAAI,CAACA,MAAM,CAAGA,OACd,GAAI,IAAI,CAACA,MAAM,CAAE,CACf,IAAI,CAACmc,WAAW,CAAC,IAAI,CAACnc,MAAM,CAACA,MAAM,EACrC,CACA,IAAI,CAACwY,cAAc,CAAC,IAAI,CAACJ,iBAAiB,CAAE,IAAI,CAACE,iBAAiB,CAClE,CAAA,IAAI,CAAC3xS,IAAI,CAAC,YAAc,CAAA,IAAI,CAACq5R,MAAM,CAAEuc,cAAAA,CACrC,CAAA,IAAI,CAAC9D,YAAY,CAAG,IACpB,CAAA,MAAM11J,QAAW,CAAA,IAAI,CAAC1e,MAAM,CAAC0e,QAAQ,CACrC,IAAI,IAAItlJ,EAAI,CAAG6e,CAAAA,CAAAA,CAAIymI,QAASrlJ,CAAAA,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,CAAI,EAAA,CAAA,CAC7C,GAAIslJ,QAAQ,CAACtlJ,CAAAA,CAAE,CAAC27C,OAAO,CAAE,CACvB2pG,QAAQ,CAACtlJ,CAAE,CAAA,CAAC27C,OAAO,CAAC4iQ,aAAa,CAAChc,MAAAA,EACpC,CACF,CACA,GAAI,IAAI,CAACA,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACA,MAAM,CAACwc,aAAa,GAClC,CACF,CACAN,QAAAA,CAASzzQ,KAAK,CAAE,CACd,MAAMjrC,MAAS,CAAA,IAAI,CAACu+S,gBAAgB,EAAA,CACpC,IAAI,CAACU,WAAW,CAACj/S,MAAAA,CAAO6zC,IAAI,CAAE5I,OAChC,CACAwmQ,YAAAA,CAAa59P,IAAI,CAAE,CACjB,MAAMqrQ,iBAAoB,CAAA,IAAI,CAACvnK,MAAM,EAAI,IAAI,CAACF,KAAK,CACnD,GAAI5jG,IAAM,CAAA,CACR,MAAMoI,GAAMpI,CAAAA,IAAAA,CAAK+H,OAAO,CAAC+7F,MAAM,CAACovJ,QAAQ,CACxCmY,mBAAmBtY,WAAY,CAAA,IAAI9qP,iBAAkB,CAAA,CACnDG,IAAKA,GACLvxC,CAAAA,IAAAA,CAAMgtB,UACR,CAAA,CAAA,CACA,CAAA,IAAI,CAAC0kR,SAAS,CAAGvoQ,KACnB,CAAA,KAAO,CACLqrQ,iBAAAA,EAAmBtY,YAAY,IAC/B,CAAA,CAAA,IAAI,CAACwV,SAAS,CAAG,KACnB,CACF,CACA6C,YAAYE,WAAW,CAAEl0Q,KAAK,CAAE,CAC9B,GAAIk0Q,WAAa,CAAA,CACf,IAAI,CAAC1N,YAAY,CAAC0N,WAAAA,CAAAA,CAClB,GAAI,IAAI,CAACtrQ,IAAI,CAAE,CACb,MAAMoI,GAAMkjQ,CAAAA,WAAAA,CAAYvjQ,OAAO,CAAC+7F,MAAM,CAACovJ,QAAQ,CAC/C,MAAMC,EAAK,CAAA,IAAIlrP,kBAAkB,CAC/BG,GAAAA,CAAKA,GACLvxC,CAAAA,IAAAA,CAAMgtB,WACN6kB,KAAOrc,CAAAA,mBACT,CACA,CAAA,CAAA,IAAI,CAACy3G,MAAM,CAACivJ,WAAW,CAACI,EACxB,CAAA,CAAA,IAAI,CAACrvJ,MAAM,CAACovJ,QAAQ,CAAG97P,KACvBA,CAAAA,KACAk0Q,EAAAA,CAAAA,WAAAA,CAAc,IAAI,CAACt4K,OACrB,CACA,MAAM0e,SAAW,IAAI,CAAC1e,MAAM,CAAC0e,QAAQ,CACrC,IAAI,IAAItlJ,CAAAA,CAAI,EAAG6e,CAAIymI,CAAAA,QAAAA,CAASrlJ,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,CAAI,EAAA,CAAA,CAC7CslJ,QAAQ,CAACtlJ,CAAAA,CAAE,CAAC27C,OAAO,EAAEqjQ,WAAYE,CAAAA,WAAAA,CAAal0Q,KAChD,EAAA,CACA,GAAI,IAAI,CAAC4I,IAAI,CAAE5I,KACjB,GAAA,CAAA,KAAO,CACL,IAAI,CAACwmQ,YAAY,CAAC,IAClB,CAAA,CAAA,GAAI,IAAI,CAAC59P,IAAI,CAAE,CACb,MAAMmzP,EAAK,CAAA,IAAIlrP,iBAAkB,CAAA,CAC/BG,GAAKhR,CAAAA,KAAAA,CACLvgC,IAAMqtB,CAAAA,WAAAA,CACNwkB,MAAOtc,iBACT,CAAA,CAAA,CACA,IAAI,CAAC03G,MAAM,CAACivJ,WAAW,CAACI,EAAAA,CACxB,CAAA,IAAI,CAACrvJ,MAAM,CAACovJ,QAAQ,CAAG97P,KACvBA,CAAAA,QACAk0Q,WAAc,CAAA,IAAI,CAACt4K,OAAM,CAE3B,MAAM0e,QAAW,CAAA,IAAI,CAAC1e,MAAM,CAAC0e,QAAQ,CACrC,IAAI,IAAItlJ,CAAI,CAAA,CAAA,CAAG6e,EAAIymI,QAASrlJ,CAAAA,MAAM,CAAED,CAAAA,CAAI6e,CAAG7e,CAAAA,CAAAA,EAAAA,CAAI,CAC7CslJ,QAAQ,CAACtlJ,CAAE,CAAA,CAAC27C,OAAO,EAAEqjQ,WAAYE,CAAAA,WAAAA,CAAal0Q,KAChD,EAAA,CACA,GAAI,IAAI,CAAC4I,IAAI,CAAE,CACb5I,KACF,GAAA,CACF,CACF,CACAszQ,kBAAmB,CACjB,MAAMv+S,MAAS,CAAA,CACbwiS,MAAQ,CAAA,IAAA,CACR3uP,IAAM,CAAA,IACR,EACA,IAAI3iC,MAAAA,CAAS,IAAI,CAAC21H,MAAM,CAACl2H,OAAO,CAChC,MAAMO,QAAU,CAACA,MAAAA,CAAOsxR,MAAM,CAAC,CAC7B,GAAItxR,MAAO0qC,CAAAA,OAAO,EAAI1qC,MAAO0qC,CAAAA,OAAO,CAAC/H,IAAI,CAAE,CACzC,GAAI,CAAC7zC,MAAAA,CAAO6zC,IAAI,CAAE7zC,MAAAA,CAAO6zC,IAAI,CAAG3iC,OAClC,CACAA,MAASA,CAAAA,MAAAA,CAAOA,OAAM,CAExB,GAAIA,MAAAA,EAAUA,OAAOsxR,MAAM,CAAE,CAC3BxiS,MAAAA,CAAOwiS,MAAM,CAAGtxR,OAClB,CACA,OAAOlR,MACT,CACAo/S,eAAgBx9R,CAAAA,GAAG,CAAE,CACnB,IAAI,CAACq5R,YAAY,CAAG,IACpB,CAAA,IAAI,CAACsB,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAAA,CAC1B,IAAI,CAACxB,cAAc,CAAC,IAAI,CAACJ,iBAAiB,CAAE,IAAI,CAACE,iBAAiB,CAClE,CAAA,IAAI,CAAC3xS,IAAI,CAAC,uBAAA,CAAyByY,GACrC,EAAA,CACAsgR,sBAAuB,CACrB,IAAI,CAAC/4R,IAAI,CAAC,wBAA0B,CAAA,IAAI,CAACq5R,MAAM,CAACA,MAAM,CAAClwJ,WAAW,EACpE,CACA+sK,eAAAA,EAAkB,CAChB,GAAI,IAAI,CAAC7c,MAAM,CAAE,CACf,GAAI,IAAI,CAACA,MAAM,CAAC9+C,WAAW,CAAE,CAC3B,IAAI,CAAC8+C,MAAM,CAAG,KAChB,MAAO,CACL,IAAI,CAACgc,aAAa,CAAC,IACrB,EAAA,CACF,CACF,CACAzD,wBAAyB,CACvB,IAAIgD,IAAO,CAAA,GAAA,CACX,IAAIC,IAAAA,CAAO,GACX,CAAA,MAAM9sS,OAAS,IAAI,CAAC21H,MAAM,CAACl2H,OAAO,CAClC,GAAIO,MAAUA,EAAAA,MAAAA,CAAO0qC,OAAO,CAAE,CAC5BmiQ,IAAO7sS,CAAAA,MAAAA,CAAO0qC,OAAO,CAACunP,eAAe,CACrC6a,KAAO9sS,MAAO0qC,CAAAA,OAAO,CAACwnP,iBAAgB,CACjC,KAAA,GAAI,IAAI,CAACZ,MAAM,CAAE,CACtB,MAAM5gR,GAAAA,CAAM,IAAI,CAAC4gR,MAAM,CAACA,MAAM,CAAC7sI,UAAU,CACzC,MAAMpzI,MAAQ,IAAI,CAACigR,MAAM,CAACA,MAAM,CAACjgR,KAAK,CACtCw7R,IAAAA,CAAOn8R,GAAItN,CAAAA,CAAC,CAAGiO,KAAAA,CACfy7R,KAAOp8R,GAAI5F,CAAAA,CAAC,CAAGuG,MACjB,CACA,IAAI,CAACg4R,YAAY,CAAC/xS,GAAG,CAAC,IAAI,CAACqyS,OAAO,CAACvmS,CAAC,CAAGypS,IAAAA,CAAM,IAAI,CAAClD,OAAO,CAAC7+R,CAAC,CAAGgiS,IAAM,CAAA,IAAI,CAACnD,OAAO,CAAC1+R,CAAC,CAAG4hS,IAAM,CAAA,IAAI,CAAClD,OAAO,CAACr7R,CAAC,CAAGw+R,IAC9G,EAAA,CACAsB,iBAAkBhrS,CAAAA,CAAC,CAAE0H,CAAC,CAAE,CACtB,MAAM4W,EAAI,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EAAA,CAAGtyI,KAAK,EAC9Cqd,CAAAA,CAAEte,CAAAA,CAAC,EAAIA,CACPse,CAAAA,CAAAA,CAAE5W,CAAC,EAAIA,EACP,IAAI,CAAC6hS,cAAc,CAACz5R,cAAc,CAACwO,CAAGA,CAAAA,CAAAA,CAAAA,CACtC,OAAOA,CACT,CACA2sR,eAAgBC,CAAAA,OAAO,CAAEC,OAAO,CAAE,CAChC,IAAI,CAACxe,gBAAgB,CAAC,IAAI,CAACtpJ,MAAM,CAAG,IAAI,CAACA,MAAM,CAACC,WAAW,CAACrS,KAAK,CAAG,IAAI,CAACkS,KAAK,CAACC,MAAM,CACrF8nK,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,KAAO,CAAA,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAAA,CAC1CF,OAAQt4S,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAAA,CAC/CF,OAAQn4S,CAAAA,EAAE,CAAC,KAAA,CAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CACzCD,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,YAAa16K,CAAAA,KAAK,CAAE,CAClB,MAAMl/H,KAAQ,CAAA,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAM/6F,CAAAA,EAAE,EAC1C,GAAInkC,KAAAA,CAAQ,CAAG,CAAA,OACf,GAAI,IAAI,CAAC6xI,MAAM,CAAE,CACf3S,KAAAA,CAAME,gBAAgB,CAAC,IAAI,CAACyS,MAAM,CAACC,WAAW,CAACrS,KAAK,CAACC,aAAa,EACpE,CAAO,KAAA,GAAI,IAAI,CAACiS,KAAK,CAAE,CACrBzS,KAAME,CAAAA,gBAAgB,CAAC,IAAI,CAACuS,KAAK,CAACC,MAAM,CAAClS,aAAa,EACxD,CACF,CACAm6K,cAAAA,CAAe36K,KAAK,CAAE,CACpB,MAAMl/H,KAAAA,CAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,MAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAAA,CAAQ,CAAG,CAAA,OACf,GAAI,IAAI,CAAC6xI,MAAM,CAAE,CACf3S,KAAAA,CAAMG,mBAAmB,CAAC,IAAI,CAACwS,MAAM,CAACC,WAAW,CAACrS,KAAK,CAACC,aAAa,EACvE,CAAO,KAAA,GAAI,IAAI,CAACiS,KAAK,CAAE,CACrBzS,MAAMG,mBAAmB,CAAC,IAAI,CAACsS,KAAK,CAACC,MAAM,CAAClS,aAAa,EAC3D,CACF,CACA95B,QAAAA,EAAW,CACT,MAAMi5B,KAAAA,CAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,KAAMC,CAAAA,MAAM,CAC3B,GAAI,IAAI,CAAC+S,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACjsC,QAAQ,GACtB,CACA,GAAI,IAAI,CAAC+rC,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAC/rC,QAAQ,GACrB,CACA,GAAI,IAAI,CAACk0M,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACl0M,QAAQ,GACtB,CACA,GAAI,IAAI,CAACqxM,QAAQ,EAAI,IAAI,CAAC/gE,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAAE,CACjD,IAAI,CAAC1iB,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAACu+C,UAAU,CAAC,IAAI,EAC9C,CACA,IAAI,CAAC4C,iBAAiB,CAAGl7K,KAAMr9H,CAAAA,EAAE,CAAC,YAAA,CAAc,IAAI,CAACi4S,eAAe,CAAE,IAAI,CAC1E,CAAA,GAAI36K,MAAQ,CAAA,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,OAAOt9H,EAAE,CAAC,KAAO,CAAA,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,CAAGn7K,MAAOt9H,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,GAAI,IAAI,CAACzE,aAAa,EAAI,CAAG,CAAA,CAC3B,IAAI,CAACl/D,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE12O,MAAO21H,CAAAA,UAAAA,CAAWO,OAAO,CAAE,IAAI,CAACR,YAAY,CAAE,IAAI,CAACmB,MAAM,EACpF,CACA,IAAI,CAAC19H,IAAI,CAAC,eACZ,EAAA,CACAwiG,SAAY,EAAA,CACV,MAAMg5B,KAAAA,CAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,KAAMC,CAAAA,MAAM,CAC3B,IAAI,CAACi7K,iBAAiB,EAAE34S,GAAAA,EACxB,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,IACzB,CAAA,GAAIj7K,OAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,GAAAA,EACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,GAAI,IAAI,CAACpoK,MAAM,CAAE,IAAI,CAACA,MAAM,CAAChsC,SAAS,EACtC,CAAA,GAAI,IAAI,CAAC8rC,KAAK,CAAE,IAAI,CAACA,KAAK,CAAC9rC,SAAS,EAAA,CACpC,GAAI,IAAI,CAACi0M,MAAM,CAAE,IAAI,CAACA,MAAM,CAACj0M,SAAS,EAAA,CACtC,GAAI,IAAI,CAACqwI,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,EAAI,IAAI,CAACq+C,QAAQ,CAAE,CACjD,IAAI,CAAC/gE,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAACw+C,aAAa,CAAC,IAAI,EACjD,CACA,GAAI,IAAI,CAAChC,aAAa,EAAI,CAAA,CAAG,CAC3B,IAAI,CAACl/D,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAEp8O,MAAAA,CAAOq7H,UAAWO,CAAAA,OAAO,CAAE,IAAI,CAACR,YAAY,CAAE,IAAI,CAACmB,MAAM,EACpF,CACA,IAAI,CAAC19H,IAAI,CAAC,kBACZ,CACAgqR,QAAAA,EAAW,CACT,IAAI,CAACtsJ,MAAM,CAAC3/H,GAAG,CAAC,QAAU,CAAA,IAAI,CAACkvR,SAAS,CAAE,IAAI,CAAA,CAC9C,IAAI,CAACwnB,QAAQ,EACb,CAAA,GAAI,IAAI,CAACjmK,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACvuG,OAAO,GACrB,CACA,GAAI,IAAI,CAACquG,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACruG,OAAO,GACpB,CACA,GAAI,IAAI,CAAC4yM,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,EAAI,IAAI,CAACq+C,QAAQ,CAAE,CACjD,IAAI,CAAC/gE,MAAM,CAAC/L,GAAG,CAACyuB,YAAY,CAACw+C,aAAa,CAAC,IAAI,EACjD,CACA,GAAI,IAAI,CAAC1a,MAAM,EAAI,IAAI,CAACA,MAAM,CAACA,MAAM,CAAE,CACrC,IAAI,CAACqc,aAAa,CAAC,IAAI,CAACrc,MAAM,CAACA,MAAM,CACrC,CAAA,IAAI,CAACA,MAAM,CAACA,MAAM,CAACwc,aAAa,GAClC,CACA,IAAI,CAAC93S,GAAG,GACV,CACA8zS,cAAAA,CAAegF,wBAAwB,CAAEC,yBAAyB,CAAE,CAClE,GAAI,CAAC,IAAI,CAACp5K,MAAM,CAACl2H,OAAO,EAAI,CAAC,IAAI,CAAC6xR,MAAM,CAAE,CACxC,MACF,CACA,IAAI,CAACuY,sBAAsB,EAC3B,CAAA,MAAMmF,QAAW,CAAA,IAAI,CAACzF,SAAS,CAAG,IAAI,CAACH,QAAQ,CAC/C,MAAM6F,SAAY,CAAA,IAAI,CAACzF,OAAO,CAAG,IAAI,CAACC,UAAU,CAChD,GAAIqF,wBAAAA,CAA0B,CAC5B,IAAI,CAAC9D,SAAS,CAACgE,QACjB,EAAA,CAAA,KAAO,CACL,IAAI,CAAC1E,mBAAmB,CAAC0E,SAAU,KACrC,EAAA,CACA,GAAID,yBAAAA,CAA2B,CAC7B,IAAI,CAAC5E,UAAU,CAAC8E,SAClB,EAAA,CAAA,KAAO,CACL,IAAI,CAACzE,oBAAoB,CAACyE,SAAW,CAAA,KAAA,EACvC,CACA,MAAMvtR,CAAAA,CAAI,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EACtCj1H,CAAAA,CAAEte,CAAAA,CAAC,CAAG,IAAI,CAACkmS,OAAO,CAAClmS,CAAC,CAAG,IAAI,CAACmnS,gBAAgB,CAAG,IAAI,CAACF,MAAM,CAACjnS,CAAC,CAC5Dse,CAAAA,CAAE5W,CAAC,CAAG,IAAI,CAACw+R,OAAO,CAACx+R,CAAC,CAAG,IAAI,CAACs/R,iBAAiB,CAAG,IAAI,CAACC,MAAM,CAACv/R,CAAC,CAC7D,IAAI,CAAC6qH,MAAM,CAAC+hB,gBAAgB,CAACh2H,CAAAA,CAC7B,CAAA,IAAI,CAACsrR,UAAU,CAAG,MACpB,CACAhC,SAAU18R,CAAAA,CAAC,CAAE,CACX,IAAI,CAACktB,MAAM,CAAGltB,CACd,CAAA,IAAI,CAACg8R,mBAAmB,CAACh8R,CAAG,CAAA,KAAA,CAAA,CAC5B,IAAI,CAACrW,IAAI,CAAC,WAAa,CAAA,IAAI,CAACujC,MAAM,EACpC,CACA2uQ,UAAAA,CAAW3nR,CAAC,CAAE,CACZ,IAAI,CAACiZ,OAAO,CAAGjZ,CAAAA,CACf,IAAI,CAACgoR,oBAAoB,CAAChoR,CAAG,CAAA,KAAA,CAAA,CAC7B,IAAI,CAACvqB,IAAI,CAAC,YAAA,CAAc,IAAI,CAACwjC,OAAO,EACtC,CACA6uQ,oBAAoB5zS,KAAK,CAAEw4S,aAAa,CAAE,CACxC,GAAI5gT,IAAKma,CAAAA,GAAG,CAAC/R,KAAQ,CAAA,IAAI,CAAC6zS,gBAAgB,GAAK,IAAM,CAAA,CACnD,MACF,CACA,IAAI,CAACA,gBAAgB,CAAG7zS,KAAAA,CACxB,IAAI,CAACi/H,MAAM,CAAC8hB,aAAa,EACzB,CAAA,GAAIy3J,aAAe,CAAA,CACjB,MAAMxtR,CAAI,CAAA,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EAAA,CACtC,MAAMi2J,GAAAA,CAAM,IAAI,CAACvC,MACjB,CAAA,IAAI,CAACf,OAAO,CAAClmS,CAAC,CAAGse,CAAAA,CAAEte,CAAC,CAAG,IAAI,CAACmnS,gBAAgB,CAAGqC,GAAAA,CAAIxpS,CACnD,CAAA,IAAI,CAACkmS,OAAO,CAACr+R,CAAC,CAAG,IAAI,CAACo+R,YAAY,CAACp+R,CAAC,CAAG,IAAI,CAACo+R,YAAY,CAACjmS,CAAC,CAAG,IAAI,CAACmnS,gBAAgB,CAAG,IAAI,CAACjB,OAAO,CAAClmS,EAAC,CAErG,IAAI,CAACmoS,oBAAoB,EACzB,CAAA,IAAI,CAACtzS,IAAI,CAAC,qBAAA,CAAuB,IAAI,CAACsyS,gBAAgB,CACtD,CAAA,IAAI,CAACtyS,IAAI,CAAC,QAAU,CAAA,IAAI,CAACsyS,gBAAgB,CAAE,IAAI,CAACH,iBAAiB,EACnE,CACAI,oBAAAA,CAAqB9zS,KAAK,CAAEw4S,aAAa,CAAE,CACzC,GAAI5gT,IAAKma,CAAAA,GAAG,CAAC/R,KAAAA,CAAQ,IAAI,CAAC0zS,iBAAiB,CAAK,EAAA,IAAA,CAAM,CACpD,MACF,CACA,IAAI,CAACA,iBAAiB,CAAG1zS,KACzB,CAAA,IAAI,CAACi/H,MAAM,CAAC8hB,aAAa,EAAA,CACzB,GAAIy3J,aAAe,CAAA,CACjB,MAAMxtR,CAAAA,CAAI,IAAI,CAACi0G,MAAM,CAACghB,gBAAgB,EACtC,CAAA,MAAMi2J,GAAM,CAAA,IAAI,CAACvC,MACjB,CAAA,IAAI,CAACf,OAAO,CAACx+R,CAAC,CAAG4W,CAAE5W,CAAAA,CAAC,CAAG,IAAI,CAACs/R,iBAAiB,CAAGwC,GAAI9hS,CAAAA,CAAC,CACrD,IAAI,CAACw+R,OAAO,CAACh7R,CAAC,CAAG,IAAI,CAAC+6R,YAAY,CAAC/6R,CAAC,CAAG,IAAI,CAAC+6R,YAAY,CAACv+R,CAAC,CAAG,IAAI,CAACs/R,iBAAiB,CAAG,IAAI,CAACd,OAAO,CAACx+R,EAAC,CAEtG,IAAI,CAACygS,oBAAoB,EACzB,CAAA,IAAI,CAACtzS,IAAI,CAAC,sBAAwB,CAAA,IAAI,CAACmyS,iBAAiB,EACxD,IAAI,CAACnyS,IAAI,CAAC,QAAU,CAAA,IAAI,CAACsyS,gBAAgB,CAAE,IAAI,CAACH,iBAAiB,EACnE,CACAmB,oBAAAA,EAAuB,CACrB,MAAMn9S,EAAI,IAAI,CAACunI,MAAM,CAACoQ,SAAS,CAC/B,IAAI,IAAIh3I,EAAI,CAAG6e,CAAAA,CAAAA,CAAIxf,CAAEY,CAAAA,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,CAAI,EAAA,CAAA,CACtC,GAAIX,CAAC,CAACW,CAAE,CAAA,CAAC27C,OAAO,CAAE,CAChBt8C,CAAC,CAACW,CAAE,CAAA,CAAC27C,OAAO,CAACq/P,YAAY,CAAG,IAC5B37S,CAAAA,CAAC,CAACW,CAAE,CAAA,CAAC27C,OAAO,CAACsiQ,UAAU,CAAG,KAC5B,CACF,CACF,CACAjd,gBAAAA,CAAiB17J,KAAK,CAAE,CACtB,IAAI,CAACw2K,YAAY,CAACh7S,IAAI,CAACwkI,KAAAA,CAAAA,CACvB,IAAI,IAAItlI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,IAAI,CACzC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACtE,GAAI,CAAC+kI,MAAO,SACZA,KAAAA,CAAME,gBAAgB,CAACK,KAAMC,CAAAA,aAAa,EAC5C,CACF,CACA8R,qBAAsB/R,CAAAA,KAAK,CAAE,CAC3B,MAAMh7H,GAAM,CAAA,IAAI,CAACwxS,YAAY,CAAC7yS,OAAO,CAACq8H,KACtC,CAAA,CAAA,GAAIh7H,GAAO,EAAA,CAAA,CAAG,CACZ,IAAI,CAACwxS,YAAY,CAAChzS,MAAM,CAACwB,IAAK,CAChC,EAAA,CACA,IAAI,IAAItK,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,IAAI,CACzC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,CACtE,CAAA,GAAI,CAAC+kI,KAAO,CAAA,CACV,QACF,CACAA,MAAMG,mBAAmB,CAACI,KAAMC,CAAAA,aAAa,EAC/C,CACF,CACA67J,aAAAA,EAAgB,CACd,MAAMtiF,KAAAA,CAAQ,IAAI,CAACi9B,MAAM,CAAC/L,GAAG,CAAClxB,KAAK,CACnC,GAAI,IAAI,CAACshG,aAAa,GAAKthG,KAAAA,CAAO,CAChC,IAAI,CAACuhG,WAAW,CAAG,EACnB,CAAA,IAAI,CAACD,aAAa,CAAGthG,MACvB,CACA,MAAMwhG,EAAAA,CAAK,IAAI,CAACD,WAChB,CAAA,IAAI,CAACA,WAAW,EAAI,IACpB,CAAA,OAAOC,EACT,CACA7e,kBAAAA,CAAmBxuJ,MAAM,CAAE,CACzB,IAAIstK,KAAAA,CAAOC,KAAOC,CAAAA,KAAAA,CAAOC,KACzB,CAAA,GAAI,IAAI,CAAC7Z,QAAQ,CAAE,CACjB,MAAMh4F,OAAAA,CAAU,IAAI,CAACg4F,QAAQ,CAAClrP,OAAO,CAACkgQ,aAAa,CACnD0E,KAAQhhT,CAAAA,IAAAA,CAAKmU,GAAG,CAACnU,IAAKmU,CAAAA,GAAG,CAACm7L,OAAO,CAAC,CAAE,CAAA,CAACx6L,CAAC,CAAEw6L,OAAO,CAAC,CAAA,CAAE,CAACx6L,CAAC,CAAA,CAAG9U,IAAKmU,CAAAA,GAAG,CAACm7L,OAAO,CAAC,CAAA,CAAE,CAACx6L,CAAC,CAAEw6L,OAAO,CAAC,EAAE,CAACx6L,CAAC,CAC1FmsS,CAAAA,CAAAA,KAAAA,CAAQjhT,KAAKoU,GAAG,CAACpU,IAAKoU,CAAAA,GAAG,CAACk7L,OAAO,CAAC,CAAA,CAAE,CAACx6L,CAAC,CAAEw6L,OAAO,CAAC,CAAE,CAAA,CAACx6L,CAAC,CAAA,CAAG9U,KAAKoU,GAAG,CAACk7L,OAAO,CAAC,CAAE,CAAA,CAACx6L,CAAC,CAAEw6L,OAAO,CAAC,CAAA,CAAE,CAACx6L,CAAC,GAC1FqsS,KAAQnhT,CAAAA,IAAAA,CAAKmU,GAAG,CAACnU,KAAKmU,GAAG,CAACm7L,OAAO,CAAC,CAAE,CAAA,CAAC9yL,CAAC,CAAE8yL,OAAO,CAAC,CAAA,CAAE,CAAC9yL,CAAC,EAAGxc,IAAKmU,CAAAA,GAAG,CAACm7L,OAAO,CAAC,CAAE,CAAA,CAAC9yL,CAAC,CAAE8yL,OAAO,CAAC,CAAE,CAAA,CAAC9yL,CAAC,CAC1F0kS,CAAAA,CAAAA,KAAAA,CAAQlhT,IAAKoU,CAAAA,GAAG,CAACpU,IAAKoU,CAAAA,GAAG,CAACk7L,OAAO,CAAC,CAAE,CAAA,CAAC9yL,CAAC,CAAE8yL,OAAO,CAAC,CAAE,CAAA,CAAC9yL,CAAC,CAAGxc,CAAAA,IAAAA,CAAKoU,GAAG,CAACk7L,OAAO,CAAC,CAAE,CAAA,CAAC9yL,CAAC,CAAE8yL,OAAO,CAAC,CAAA,CAAE,CAAC9yL,CAAC,CAC5F,EAAA,CAAA,KAAO,CACL,MAAMkjC,EAAAA,CAAK,IAAI,CAAC88L,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAACjkB,KAAK,CAC/C,MAAMu5B,EAAAA,CAAK,IAAI,CAAC68L,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAChkB,MAAM,CAChD,MAAM+6R,WAAAA,CAAc1tK,MAAO4L,CAAAA,KAAK,CAAC3iI,CAAC,CAAG+iC,EACrC,CAAA,MAAM2hQ,YAAe3tK,CAAAA,MAAAA,CAAO4L,KAAK,CAACt/H,CAAC,CAAG2/B,EAAAA,CACtCqhQ,KAAQttK,CAAAA,MAAAA,CAAO4L,KAAK,CAACxqI,CAAC,CAAG4qC,EAAAA,CACzBuhQ,MAAQD,KAAQI,CAAAA,WAAAA,CAChBF,KAAQ,CAAC,CAAA,CAAA,CAAIxtK,MAAO4L,CAAAA,KAAK,CAAC9iI,CAAAA,EAAKmjC,EAAAA,CAC/BwhQ,KAAQD,CAAAA,KAAAA,CAAQG,aAClB,CACA,MAAMC,UAAa,CAAA,IAAI,CAAChF,aAAa,CACrC,MAAM1sS,IAAO5P,CAAAA,IAAAA,CAAKmU,GAAG,CAACnU,IAAAA,CAAKmU,GAAG,CAACmtS,UAAU,CAAC,CAAA,CAAE,CAACxsS,CAAC,CAAEwsS,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAAA,CAAG9U,IAAKmU,CAAAA,GAAG,CAACmtS,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAAEwsS,UAAU,CAAC,CAAA,CAAE,CAACxsS,CAAC,CAAA,CAAA,CAC3G,MAAMjF,KAAAA,CAAQ7P,IAAKoU,CAAAA,GAAG,CAACpU,IAAAA,CAAKoU,GAAG,CAACktS,UAAU,CAAC,CAAA,CAAE,CAACxsS,CAAC,CAAEwsS,UAAU,CAAC,EAAE,CAACxsS,CAAC,CAAG9U,CAAAA,IAAAA,CAAKoU,GAAG,CAACktS,UAAU,CAAC,EAAE,CAACxsS,CAAC,CAAEwsS,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAAA,CAAA,CAC5G,MAAMoQ,MAASllB,CAAAA,IAAAA,CAAKmU,GAAG,CAACnU,IAAKmU,CAAAA,GAAG,CAACmtS,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAAE8kS,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,EAAGxc,IAAKmU,CAAAA,GAAG,CAACmtS,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAAE8kS,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAC7G,CAAA,CAAA,MAAM2I,GAAMnlB,CAAAA,IAAAA,CAAKoU,GAAG,CAACpU,IAAAA,CAAKoU,GAAG,CAACktS,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAAE8kS,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAAA,CAAGxc,IAAKoU,CAAAA,GAAG,CAACktS,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAAE8kS,UAAU,CAAC,EAAE,CAAC9kS,CAAC,CAC1G,CAAA,CAAA,GAAI3M,KAAQmxS,CAAAA,KAAAA,EAASpxS,IAAOqxS,CAAAA,KAAAA,EAAS/7R,OAASg8R,KAAS/7R,EAAAA,GAAAA,CAAMg8R,KAAO,CAAA,CAClE,OAAO,KACT,CACA,OAAO,IACT,CACAlf,cAAAA,EAAiB,CACf,GAAI,IAAI,CAACe,MAAM,EAAI,IAAI,CAACA,MAAM,CAACA,MAAM,CAAE,CACrC,OAAO,IAAI,CAACA,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAEvC,OAAO,KACT,CACA2wJ,iBAAkB,CAChB,GAAI,IAAI,CAACT,MAAM,EAAI,IAAI,CAACA,MAAM,CAACA,MAAM,CAAE,CACrC,OAAO,IAAI,CAACA,MAAM,CAACA,MAAM,CAAChvJ,IAAI,CAEhC,OAAO,KACT,CACAgqK,WAAAA,EAAc,CACZ,GAAI,IAAI,CAAC93K,YAAY,GAAK,CAAC,CAAA,CAAG,CAC5B,IAAI,CAACs2G,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE9vG,cAAe,CAAA,IAAI,CAAClR,YAAY,EAC3D,CACF,CA5zCA19H,YAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAQn1G,CAAAA,MAAAA,CAAAA,CAAS,IAAI,CAACg5K,iBAAiB,CAAG,KAAM,IAAI,CAACC,cAAc,CAAG,KAAM,IAAI,CAACC,gBAAgB,CAAG,IAC1G,CAAA,IAAI,CAACnb,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACiW,OAAO,CAAG,IAAIz4R,IACnB,CAAA,IAAI,CAACm4R,YAAY,CAAG,IAAIn4R,IACxB,CAAA,IAAI,CAACm5R,MAAM,CAAG,IAAIz5R,IAClB,CAAA,IAAI,CAAC4qB,MAAM,CAAG,IAAI,CAAC+uQ,gBAAgB,CAAG,EACtC,CAAA,IAAI,CAAC9uQ,OAAO,CAAG,IAAI,CAAC2uQ,iBAAiB,CAAG,EACxC,CAAA,IAAI,CAACd,OAAO,CAAG,IAAIp4R,IAAK,CAAA,CAAA,CAAG,EAAG,CAAC,EAAA,CAAI,CAAC,EAAA,CACpC,CAAA,IAAI,CAACkR,eAAe,CAAG,IAAI9Q,IAC3B,CAAA,IAAI,CAACq7R,cAAc,CAAG,IAAIr7R,IAC1B,CAAA,IAAI,CAACy7R,gBAAgB,CAAG,IAAIz7R,IAC5B,CAAA,IAAI,CAACy4R,YAAY,CAAG,IACpB,CAAA,IAAI,CAACmD,qBAAqB,CAAG,IAAI57R,IACjC,CAAA,IAAI,CAACo6R,gBAAgB,CAAG,IAAIp6R,IAC5B,CAAA,IAAI,CAACk6R,cAAc,CAAG,CACpB,IAAIxgS,IACJ,CAAA,IAAIA,IACJ,CAAA,IAAIA,KACJ,IAAIA,IAAAA,CACL,CACD,IAAI,CAAC2/R,cAAc,CAAG,CACpB,IAAI/5R,IAAAA,CACJ,IAAIA,IAAAA,CACJ,IAAIA,IACJ,CAAA,IAAIA,IACL,CACD,CAAA,IAAI,CAACu7R,aAAa,CAAG,CACnB,IAAInhS,IACJ,CAAA,IAAIA,KACJ,IAAIA,IAAAA,CACJ,IAAIA,IAAAA,CACL,CACD,IAAI,CAACqgS,aAAa,CAAG,IACrB,CAAA,IAAI,CAACX,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACY,kBAAkB,CAAG,IAAA,CAC1B,IAAI,CAAC31K,MAAM,CAACv/H,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC8uR,SAAS,CAAE,IAAI,CAC7C,CAAA,IAAI,CAACqnB,MAAM,EACX,CAAA,IAAI,CAACjb,MAAM,CAAG,IACd,CAAA,IAAI,CAACpoR,KAAK,CAAGkyQ,iBACb,CAAA,IAAI,CAAC30I,MAAM,CAAG,IACd,CAAA,IAAI,CAACF,KAAK,CAAG,IACb,CAAA,IAAI,CAACmoK,MAAM,CAAG,IACd,CAAA,IAAI,CAACvR,UAAU,CAAG,CAClB,CAAA,IAAI,CAAC8O,QAAQ,CAAG1wB,eAChB,CAAA,IAAI,CAACuwB,SAAS,CAAG,KACjB,CAAA,IAAI,CAACj8J,OAAO,CAAG,CACbvrB,UACD,CACD,CAAA,IAAI,CAACumL,YAAY,CAAG,EACpB,CAAA,IAAI,CAACb,aAAa,CAAG,CAAC,CACtB,CAAA,IAAI,CAACmF,aAAa,CAAG,CACrB,CAAA,IAAI,CAACC,WAAW,CAAG,EACnB,CAAA,IAAI,CAAClE,SAAS,CAAG,KACnB,CAuwCF,CA71CI,gBAAK7+L,CAAAA,eAAe,CAAG,WAGvB,CALE88L,gBAKG78L,CAAAA,aAAa,CAAG,SAGrB,CARE68L,gBAQGhnB,CAAAA,gBAAgB,CAAG,YAGxB,CAXEgnB,gBAAAA,CAWG/mB,gBAAgB,CAAG,YAGxB,CAdE+mB,gBAAAA,CAcG/8L,eAAe,CAAG,WAGvB,CAjBE+8L,gBAAAA,CAiBG58L,gBAAgB,CAAG,YAGxB,CApBE48L,gBAAAA,CAoBG9mB,WAAW,CAAG,OAGnB,CAvBE8mB,gBAuBGj1L,CAAAA,gBAAgB,CAAG,YAGxB,CA1BEi1L,gBA0BGh1L,CAAAA,cAAc,CAAG,UAGtB,CA7BEg1L,gBA6BG/0L,CAAAA,eAAe,CAAG,WAGvB,CAhCE+0L,gBAgCG90L,CAAAA,iBAAiB,CAAG,aAi0C7B,CAAMw7L,MAAAA,oBAAAA,CACJ/4S,aAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMkuS,SAAY,CAAA,CAChB,SACD,CACD,CAAMC,MAAAA,sBAAAA,SAA+B7yC,eAwCnChlO,CAAAA,OAAAA,EAAU,CACR,KAAK,CAACA,OACN,EAAA,CAAA,IAAI,CAAC83Q,eAAe,CAAC93Q,OAAO,GAC9B,CACAolO,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDi9F,UAAUujD,iBAAiB,CAAG,IAC9B,CAAA,GAAI3qR,KAAKw5R,MAAM,GAAK1rS,SAAW,CAAA,CAC7B,GAAIkS,IAAKw5R,CAAAA,MAAM,YAAYrxR,IAAAA,CAAM,CAC/Bi/N,SAAAA,CAAUoyD,MAAM,CAACz0S,IAAI,CAACib,IAAAA,CAAKw5R,MAAM,EACnC,MAAO,CACLpyD,SAAAA,CAAUoyD,MAAM,CAACjrS,GAAG,CAACyR,IAAAA,CAAKw5R,MAAM,CAAC,CAAE,CAAA,CAAEx5R,IAAKw5R,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAEx5R,IAAKw5R,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAEx5R,IAAKw5R,CAAAA,MAAM,CAAC,CAAE,CAAA,EACrF,CACF,CACA,GAAIx5R,IAAAA,CAAKmlM,KAAK,GAAKr3M,UAAW,CAC5B,GAAIkS,IAAKmlM,CAAAA,KAAK,YAAYt9L,IAAM,CAAA,CAC9Bu/N,SAAUjiC,CAAAA,KAAK,CAACpgN,IAAI,CAACib,IAAKmlM,CAAAA,KAAK,EACjC,CAAA,KAAO,CACLiiC,SAAAA,CAAUjiC,KAAK,CAAC52M,GAAG,CAACyR,IAAAA,CAAKmlM,KAAK,CAAC,CAAA,CAAE,CAAEnlM,IAAAA,CAAKmlM,KAAK,CAAC,CAAA,CAAE,EAClD,CACF,CACA,MAAM+hG,eAAkB3hT,CAAAA,IAAAA,CAAKma,GAAG,CAAC0nO,SAAAA,CAAUoyD,MAAM,CAACn/R,CAAC,CAAG+sO,SAAAA,CAAUoyD,MAAM,CAACt3R,CAAC,CAAI,CAAA,IAAA,CAC5E,MAAMilS,eAAAA,CAAkB5hT,IAAKma,CAAAA,GAAG,CAAC0nO,SAAAA,CAAUoyD,MAAM,CAACz3R,CAAC,CAAGqlO,SAAAA,CAAUoyD,MAAM,CAACj0R,CAAC,CAAA,CAAI,KAC5E,IAAI6hS,aAAAA,CAAgB,KACpB,CAAA,IAAIn9P,KACJ,CAAA,GAAIjqC,IAAKkiS,CAAAA,MAAM,GAAKp0S,SAAW,CAAA,CAC7B,GAAIkS,IAAAA,CAAKkiS,MAAM,YAAY/5R,IAAAA,CAAM,CAC/Bi/N,SAAAA,CAAU86D,MAAM,CAACn9S,IAAI,CAACib,IAAAA,CAAKkiS,MAAM,EACnC,CAAO,KAAA,CACL96D,UAAUm5D,OAAO,CAAChyS,GAAG,CAACyR,KAAKkiS,MAAM,CAAC,CAAE,CAAA,CAAEliS,KAAKkiS,MAAM,CAAC,CAAE,CAAA,CAAEliS,IAAKkiS,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAEliS,IAAKkiS,CAAAA,MAAM,CAAC,CAAA,CAAE,EACtF,CACAkF,aAAAA,CAAgB,KAClB,CACA,GAAIpnS,IAAK7K,CAAAA,IAAI,GAAKrH,SAAAA,CAAW,CAC3Bs5O,SAAAA,CAAUm5D,OAAO,CAAClmS,CAAC,CAAG2F,IAAAA,CAAK7K,IAAI,CAC/BiyS,cAAgB,KAClB,CACA,GAAIpnS,IAAAA,CAAKyK,MAAM,GAAK3c,SAAAA,CAAW,CAC7Bs5O,SAAAA,CAAUm5D,OAAO,CAACx+R,CAAC,CAAG/B,KAAKyK,MAAM,CACjC28R,aAAgB,CAAA,KAClB,CACA,GAAIpnS,IAAAA,CAAK5K,KAAK,GAAKtH,UAAW,CAC5Bs5O,SAAAA,CAAUm5D,OAAO,CAACr+R,CAAC,CAAGlC,IAAK5K,CAAAA,KAAK,CAChCgyS,aAAgB,CAAA,KAClB,CACA,GAAIpnS,KAAK0K,GAAG,GAAK5c,SAAW,CAAA,CAC1Bs5O,UAAUm5D,OAAO,CAACh7R,CAAC,CAAGvF,IAAK0K,CAAAA,GAAG,CAC9B08R,aAAAA,CAAgB,KAClB,CACA,GAAIA,aAAe,CAAA,CACjBhgE,UAAU86D,MAAM,CAAG96D,SAAUm5D,CAAAA,QAAO,CAEtC,IAAI8G,oBAAuB,CAAA,KAAA,CAC3B,GAAIrnS,IAAAA,CAAK2L,KAAK,GAAK7d,WAAa,CAACo5S,eAAAA,CAAiB,CAChD9/D,SAAAA,CAAUz7N,KAAK,CAAG3L,IAAK2L,CAAAA,MAAK,CACvB,KAAA,GAAIu7R,eAAiB,CAAA,CAC1BG,oBAAuB,CAAA,KACzB,CACA,GAAIrnS,KAAK4L,MAAM,GAAK9d,SAAa,EAAA,CAACq5S,gBAAiB,CACjD//D,SAAAA,CAAUx7N,MAAM,CAAG5L,KAAK4L,OAC1B,CAAO,KAAA,GAAIu7R,eAAiB,CAAA,CAC1BE,oBAAuB,CAAA,KACzB,CACA,GAAIA,oBAAAA,CAAsB,CACxBjgE,SAAAA,CAAUoyD,MAAM,CAAGpyD,SAAAA,CAAUoyD,OAC/B,CACA,GAAIx5R,IAAAA,CAAKnH,OAAO,GAAK/K,SAAW,CAAA,CAC9Bs5O,SAAUvuO,CAAAA,OAAO,CAAGmH,IAAKnH,CAAAA,QAAO,CAElC,GAAImH,IAAK8iS,CAAAA,QAAQ,GAAKh1S,SAAAA,CAAW,CAC/Bs5O,SAAU07D,CAAAA,QAAQ,CAAG9iS,IAAAA,CAAK8iS,SAC5B,CACA,GAAI9iS,KAAKqpR,OAAO,GAAKv7R,SAAW,CAAA,CAC9Bs5O,UAAUiiD,OAAO,CAAGrpR,IAAKqpR,CAAAA,QAAO,CAElCjiD,SAAAA,CAAU37G,YAAY,CAAGzrH,IAAKyrH,CAAAA,YAAY,GAAK39H,SAAAA,EAAakS,KAAKyrH,YAAY,GAAK,IAAO,CAAA,CAAC,EAAIzrH,IAAKyrH,CAAAA,YAAY,CAC/G,GAAIzrH,KAAK2qH,MAAM,EAAI3lI,KAAMC,CAAAA,OAAO,CAAC+a,IAAAA,CAAK2qH,MAAM,CAAA,CAAG,CAC7Cy8G,SAAUz8G,CAAAA,MAAM,CAAG3qH,IAAAA,CAAK2qH,MAAM,CAAC9jI,KAAK,CAAC,CAAA,EACvC,CACA,GAAImZ,IAAAA,CAAKvC,IAAI,GAAK3P,SAAW,CAAA,CAC3Bs5O,SAAU3pO,CAAAA,IAAI,CAAGuC,IAAKvC,CAAAA,KAAI,CAE5B,GAAI2pO,SAAU3pO,CAAAA,IAAI,GAAK60Q,iBAAAA,CAAmB,CACxC,GAAItyQ,IAAAA,CAAKynC,IAAI,GAAK35C,SAAW,CAAA,CAC3Bs5O,SAAU3/L,CAAAA,IAAI,CAAGznC,IAAKynC,CAAAA,KAAI,CAE5B,GAAIznC,IAAAA,CAAKiqC,KAAK,GAAKn8C,UAAW,CAC5Bm8C,KAAAA,CAAQjqC,IAAKiqC,CAAAA,KAAK,CAClB,GAAI,EAAEA,iBAAiB5uC,KAAI,CAAA,CAAI,CAC7B4uC,KAAAA,CAAQ,IAAI5uC,KAAM2E,CAAAA,IAAAA,CAAKiqC,KAAK,CAAC,EAAE,CAAEjqC,IAAAA,CAAKiqC,KAAK,CAAC,CAAE,CAAA,CAAEjqC,IAAKiqC,CAAAA,KAAK,CAAC,CAAE,CAAA,EAC/D,CACAm9L,SAAAA,CAAUn9L,KAAK,CAAGA,MACpB,CACA,GAAIjqC,KAAKy8M,OAAO,GAAK3uN,SAAWs5O,CAAAA,SAAAA,CAAU3qB,OAAO,CAAGz8M,IAAKy8M,CAAAA,OAAO,CAChE,GAAIz8M,IAAAA,CAAKkgQ,YAAY,GAAKpyQ,UAAWs5O,SAAU84B,CAAAA,YAAY,CAAGlgQ,IAAAA,CAAKkgQ,YAAY,CAC/E,GAAIlgQ,IAAK83B,CAAAA,OAAO,CAAEsvM,SAAAA,CAAUtvM,OAAO,CAAG93B,KAAK83B,OAAO,CAClD,GAAI93B,IAAAA,CAAKm3Q,WAAW,GAAKrpR,SAAWs5O,CAAAA,SAAAA,CAAU+vC,WAAW,CAAGn3Q,IAAAA,CAAKm3Q,WAAW,CAC5E,GAAIn3Q,IAAAA,CAAK+rH,MAAM,CAAEq7G,UAAUr7G,MAAM,CAAG/rH,IAAK+rH,CAAAA,MAAM,CAC/C,GAAI/rH,IAAAA,CAAKq3Q,WAAW,GAAKvpR,UAAWs5O,SAAUiwC,CAAAA,WAAW,CAAGr3Q,IAAAA,CAAKq3Q,WAAW,CAC5E,GAAIr3Q,IAAAA,CAAKskM,aAAa,GAAKx2M,SAAAA,EAAakS,IAAKskM,CAAAA,aAAa,GAAK,IAAM8iC,CAAAA,SAAAA,CAAU9iC,aAAa,CAAGtkM,KAAKskM,aAAa,CACjH,GAAItkM,IAAAA,CAAKggO,aAAa,GAAKlyO,SAAWs5O,CAAAA,SAAAA,CAAUpH,aAAa,CAAGhgO,IAAAA,CAAKggO,aAAa,CAClF,GAAIhgO,IAAK6oH,CAAAA,QAAQ,CAAEu+G,SAAAA,CAAUv+G,QAAQ,CAAG7oH,IAAAA,CAAK6oH,QAAQ,CACrD,GAAI7oH,IAAAA,CAAK45B,IAAI,GAAK9rC,UAAW,CAC3Bs5O,SAAAA,CAAUxtM,IAAI,CAAG55B,IAAK45B,CAAAA,KAAI,CAE9B,MAAO,GAAIwtM,SAAAA,CAAU3pO,IAAI,GAAK80Q,gBAAkB,CAAA,CAC9C,GAAIvyQ,IAAAA,CAAK05R,SAAS,GAAK5rS,SAAAA,CAAWs5O,SAAUsyD,CAAAA,SAAS,CAAG15R,IAAK05R,CAAAA,SAAS,CACtE,GAAI15R,KAAK88R,UAAU,GAAKhvS,SAAWs5O,CAAAA,SAAAA,CAAU01D,UAAU,CAAG98R,IAAK88R,CAAAA,UAAU,CACzE,GAAI98R,IAAAA,CAAKy+R,UAAU,GAAK3wS,UAAWs5O,SAAUq3D,CAAAA,UAAU,CAAGz+R,IAAAA,CAAKy+R,UAAU,CACzE,GAAIz+R,IAAKy0R,CAAAA,gBAAgB,GAAK3mS,SAAAA,CAAWs5O,SAAUqtD,CAAAA,gBAAgB,CAAGz0R,IAAKy0R,CAAAA,gBAAgB,CAC3F,GAAIz0R,KAAKklN,IAAI,GAAK,IAAQllN,EAAAA,IAAAA,CAAKklN,IAAI,GAAKp3N,SAAAA,CAAW,CACjDs5O,SAAAA,CAAUliB,IAAI,CAAGllN,IAAKklN,CAAAA,KAAI,CACrB,KAAA,GAAIllN,IAAKnS,CAAAA,GAAG,GAAK,IAAQmS,EAAAA,IAAAA,CAAKnS,GAAG,GAAKC,UAAW,CACtDs5O,SAAAA,CAAUv5O,GAAG,CAAGmS,IAAKnS,CAAAA,IAAG,CAE1B,GAAImS,IAAKiqC,CAAAA,KAAK,GAAKn8C,SAAAA,CAAW,CAC5Bm8C,KAAQjqC,CAAAA,IAAAA,CAAKiqC,KAAK,CAClB,GAAI,EAAEA,KAAiB5uC,YAAAA,KAAI,CAAI,CAAA,CAC7B4uC,KAAQ,CAAA,IAAI5uC,MAAM4uC,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,EAChD,CACAm9L,SAAAA,CAAUn9L,KAAK,CAAGA,MACpB,CACA,GAAIjqC,IAAKy8M,CAAAA,OAAO,GAAK3uN,SAAAA,CAAW,CAC9Bs5O,SAAU3qB,CAAAA,OAAO,CAAGz8M,IAAAA,CAAKy8M,QAAO,CAElC,GAAIz8M,IAAAA,CAAKsB,OAAO,GAAKxT,SAAWs5O,CAAAA,SAAAA,CAAU9lO,OAAO,CAAGtB,IAAAA,CAAKsB,OAAO,CAChE,GAAItB,IAAAA,CAAKs8R,QAAQ,GAAKxuS,UAAW,CAC/Bs5O,SAAAA,CAAUk1D,QAAQ,CAAGt8R,IAAKs8R,CAAAA,QAAQ,CAClC,GAAI,CAACt8R,IAAKm+R,CAAAA,UAAU,CAAE/2D,SAAAA,CAAU+2D,UAAU,CAAGn+R,IAAAA,CAAKs8R,SACpD,CACA,GAAIt8R,IAAAA,CAAKm+R,UAAU,GAAKrwS,SAAWs5O,CAAAA,SAAAA,CAAU+2D,UAAU,CAAGn+R,KAAKm+R,UAAU,CACzE,GAAIn+R,IAAAA,CAAKm/R,QAAQ,GAAKrxS,SAAAA,CAAWs5O,SAAU+3D,CAAAA,QAAQ,CAAGn/R,IAAKm/R,CAAAA,QAAQ,CACnE,GAAIn/R,IAAKo+R,CAAAA,SAAS,GAAKtwS,SAAAA,CAAWs5O,UAAUg3D,SAAS,CAAGp+R,IAAKo+R,CAAAA,SAAS,CACtE,GAAIp+R,IAAAA,CAAK++R,WAAW,GAAKjxS,UAAWs5O,SAAU23D,CAAAA,WAAW,CAAG/+R,IAAAA,CAAK++R,WAAW,CAC5E,GAAI/+R,IAAAA,CAAKg/R,WAAW,GAAKlxS,SAAAA,CAAWs5O,SAAU43D,CAAAA,WAAW,CAAGh/R,IAAKg/R,CAAAA,WAAW,CAC5E,GAAIh/R,KAAKi/R,YAAY,CAAE73D,SAAU63D,CAAAA,YAAY,CAAGj/R,IAAAA,CAAKi/R,YAAY,CACjE,GAAIj/R,IAAKk/R,CAAAA,aAAa,CAAE93D,SAAAA,CAAU83D,aAAa,CAAGl/R,IAAAA,CAAKk/R,aAAa,CACpE,GAAIl/R,IAAKs0R,CAAAA,SAAS,GAAKxmS,SAAAA,CAAWs5O,SAAUktD,CAAAA,SAAS,CAAGt0R,IAAAA,CAAKs0R,SAAS,CACtE,GAAIt0R,IAAK4zR,CAAAA,IAAI,GAAK9lS,SAAWs5O,CAAAA,SAAAA,CAAUwsD,IAAI,CAAG5zR,KAAK4zR,IAAI,CACvD,GAAI5zR,IAAAA,CAAK46C,SAAS,GAAK9sD,SAAWs5O,CAAAA,SAAAA,CAAUxsL,SAAS,CAAG56C,IAAAA,CAAK46C,SAAS,CACtE,GAAI56C,IAAK2+R,CAAAA,YAAY,GAAK7wS,SAAAA,CAAWs5O,UAAUu3D,YAAY,CAAG3+R,IAAK2+R,CAAAA,YAAY,CAC/E,GAAI3+R,IAAK4+R,CAAAA,gBAAgB,GAAK9wS,SAAWs5O,CAAAA,SAAAA,CAAUw3D,gBAAgB,CAAG5+R,IAAK4+R,CAAAA,gBAAgB,CAC3F,GAAI5+R,KAAK6+R,WAAW,GAAK/wS,SAAWs5O,CAAAA,SAAAA,CAAUy3D,WAAW,CAAG7+R,IAAK6+R,CAAAA,WAAW,CAC5E,GAAI7+R,IAAAA,CAAK8+R,YAAY,GAAKhxS,UAAWs5O,SAAU03D,CAAAA,YAAY,CAAG9+R,IAAAA,CAAK8+R,YAAY,CAC/E,GAAI9+R,IAAKo/R,CAAAA,YAAY,GAAKtxS,SAAAA,CAAWs5O,SAAUg4D,CAAAA,YAAY,CAAGp/R,IAAKo/R,CAAAA,aAAY,CAEjF,MAAMr5S,MAASqhP,CAAAA,SAAAA,CAAUk9D,gBAAgB,EAAA,CACzC,GAAIv+S,MAAOwiS,CAAAA,MAAM,CAAE,CACjBnhD,SAAUm9D,CAAAA,aAAa,CAACx+S,MAAAA,CAAOwiS,MAAM,EACvC,CACA,KAAK,CAACh0B,wBAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAMmqI,UAC/Ci9F,CAAAA,CAAAA,UAAUujD,iBAAiB,CAAG,KAC9B,CAAA,GAAIvjD,SAAU3pO,CAAAA,IAAI,GAAK60Q,iBAAAA,EAAqBlrC,UAAU1pG,MAAM,CAACmqJ,UAAU,CAAE,CACvEzgD,SAAU1pG,CAAAA,MAAM,CAAC2qJ,WAAW,CAACjhD,SAAU1pG,CAAAA,MAAM,CAAChO,IAAI,EACpD,CACF,CACA43K,cAAAA,CAAe16K,MAAM,CAAEw6G,SAAS,CAAE,CAChCx6G,OAAO19H,IAAI,CAAC,aACd,EAAA,CACAq4S,kBAAkB36K,MAAM,CAAEw6G,SAAS,CAAE,CACnCA,SAAAA,CAAU8xC,QAAQ,GACpB,CACApvC,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMs7B,MAASg2F,CAAAA,MAAAA,CAAOjrF,OAAO,CAC7B,MAAM3hC,IAAO,CAAA,CACXnH,OAAS+9B,CAAAA,MAAAA,CAAO/9B,OAAO,CACvB8S,MAAOirB,MAAOjrB,CAAAA,KAAK,CACnBC,MAAAA,CAAQgrB,OAAOhrB,MAAM,CACrB4tR,MAAQ5iQ,CAAAA,MAAAA,CAAO4iQ,MAAM,CAACl+R,KAAK,EAC3B6pM,CAAAA,KAAAA,CAAOvuK,MAAOuuK,CAAAA,KAAK,CAAC7pM,KAAK,GACzB4mS,MAAQtrQ,CAAAA,MAAAA,CAAOsrQ,MAAM,CAAC5mS,KAAK,EAAA,CAC3Bs/C,SAAWhkB,CAAAA,MAAAA,CAAOgkB,SAAS,EAAIhkB,MAAAA,CAAOgkB,SAAS,CAACt/C,KAAK,EAAA,EAAMs7B,MAAOgkB,CAAAA,SAAS,CAC3E8+O,SAAW9iQ,CAAAA,MAAAA,CAAO8iQ,SAAS,CAC3BoD,WAAYlmQ,MAAOkmQ,CAAAA,UAAU,CAC7Br/R,IAAAA,CAAMm5B,OAAOn5B,IAAI,CACjBgqC,IAAM7Q,CAAAA,MAAAA,CAAO6Q,IAAI,EAAI7Q,MAAO6Q,CAAAA,IAAI,CAACnsC,KAAK,EAAA,EAAMs7B,MAAO6Q,CAAAA,IAAI,CACvDg3P,UAAY7nQ,CAAAA,MAAAA,CAAO6nQ,UAAU,CAC7BhK,iBAAkB79P,MAAO69P,CAAAA,gBAAgB,CACzCz0D,aAAAA,CAAeppM,MAAOopM,CAAAA,aAAa,CACnCn3G,QAAAA,CAAUjyF,OAAOiyF,QAAQ,CACzB5+E,KAAOrT,CAAAA,MAAAA,CAAOqT,KAAK,EAAIrT,MAAAA,CAAOqT,KAAK,CAAC3uC,KAAK,EAAMs7B,EAAAA,MAAAA,CAAOqT,KAAK,CAC3DwyK,OAAS7lL,CAAAA,MAAAA,CAAO6lL,OAAO,CACvByjD,aAActpO,MAAOspO,CAAAA,YAAY,CACjCpoO,OAAAA,CAASlB,OAAOkB,OAAO,CACvBq/O,WAAavgP,CAAAA,MAAAA,CAAOugP,WAAW,CAC/BprJ,MAAAA,CAAQn1F,MAAOm1F,CAAAA,MAAM,CACrBsrJ,WAAAA,CAAazgP,MAAOygP,CAAAA,WAAW,CAC/B/yE,aAAe1tK,CAAAA,MAAAA,CAAO0tK,aAAa,CACnChjM,QAASs1B,MAAOt1B,CAAAA,OAAO,CACvB68R,UAAAA,CAAYvnQ,OAAOunQ,UAAU,CAC7BC,SAAWxnQ,CAAAA,MAAAA,CAAOwnQ,SAAS,CAC3BzzK,MAAQ/zF,CAAAA,MAAAA,CAAO+zF,MAAM,CACrB2xK,QAAAA,CAAU1lQ,MAAO0lQ,CAAAA,QAAQ,CACzByC,WAAanoQ,CAAAA,MAAAA,CAAOmoQ,WAAW,CAC/BC,YAAapoQ,MAAOooQ,CAAAA,WAAW,CAC/BC,YAAAA,CAAcroQ,MAAOqoQ,CAAAA,YAAY,CACjCC,aAAAA,CAAetoQ,OAAOsoQ,aAAa,CACnCC,QAAUvoQ,CAAAA,MAAAA,CAAOuoQ,QAAQ,CACzB7K,SAAAA,CAAW19P,MAAO09P,CAAAA,SAAS,CAC3BV,IAAMh9P,CAAAA,MAAAA,CAAOg9P,IAAI,CACjBkP,QAAUlsQ,CAAAA,MAAAA,CAAOksQ,QAAQ,CACzBzZ,QAASzyP,MAAOyyP,CAAAA,OAAO,CACvB59J,YAAAA,CAAc70F,MAAO60F,CAAAA,YAAY,CACjC7xF,IAAAA,CAAMhD,OAAOgD,IAAI,CACjB+kQ,YAAc/nQ,CAAAA,MAAAA,CAAO+nQ,YAAY,EAAI/nQ,MAAO+nQ,CAAAA,YAAY,CAACrjS,KAAK,EAAA,EAAMs7B,MAAO+nQ,CAAAA,YAAY,CACvFC,gBAAkBhoQ,CAAAA,MAAAA,CAAOgoQ,gBAAgB,CACzCC,YAAajoQ,MAAOioQ,CAAAA,WAAW,EAAIjoQ,MAAAA,CAAOioQ,WAAW,CAACvjS,KAAK,EAAA,EAAMs7B,OAAOioQ,WAAW,CACnFC,YAAcloQ,CAAAA,MAAAA,CAAOkoQ,YAAY,EAAIloQ,MAAAA,CAAOkoQ,YAAY,CAACxjS,KAAK,EAAMs7B,EAAAA,MAAAA,CAAOkoQ,YAAY,CACvFM,YAAcxoQ,CAAAA,MAAAA,CAAOwoQ,YACvB,EACA,GAAIxoQ,MAAAA,CAAO/oC,GAAG,GAAKC,WAAa8oC,MAAO/oC,CAAAA,GAAG,GAAK,IAAA,CAAM,CACnDmS,IAAKnS,CAAAA,GAAG,CAAG+oC,MAAAA,CAAO/oC,IACpB,CAAO,KAAA,CACLmS,KAAKklN,IAAI,CAAGtuL,MAAOsuL,CAAAA,KAAI,CAEzB,OAAO,IAAI,CAACsjB,YAAY,CAACltO,KAAAA,CAAO0E,IAClC,CAAA,CACA83R,sBAAuBz/J,CAAAA,WAAW,CAAEw/J,IAAI,CAAE2P,aAAa,CAAE,CACvD,MAAMroQ,KAAO,CAACk5F,WAAe,EAAA,CAAA,EAAK,CAAA,GAAMw/J,IAAQ,EAAA,CAAA,EAAK,CAAA,CAAA,EAAM2P,aAAAA,EAAiB,GAAK,CAAA,CAAA,CACjF,IAAI3+K,QAAAA,CAAW,IAAI,CAAC4+K,qBAAqB,CAACtoQ,IAAAA,CAAK,CAC/C,GAAI0pF,QAAAA,CAAU,CACZ,OAAOA,QACT,CACA,IAAIv/H,IAAAA,CAAO,eACXu/H,QAAW,CAAA,IAAI+1F,gBACf,CAAA,GAAIi5E,KAAM,CACRhvK,QAAAA,CAAS+xF,OAAO,CAAG,IAAI,CAACqsF,eAAe,CACvCp+K,QAASyhF,CAAAA,iBAAiB,CAAGk9F,aAAAA,CAC7B3+K,SAASszF,QAAQ,CAAC5tN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAC9B,EAAA,CAAA,KAAO,CACLjF,IAAO,CAAA,CAAC,MAAM,EAAEA,IAAK,CAAA,CAAC,CACtBu/H,QAAAA,CAASszF,QAAQ,CAAC5tN,GAAG,CAAC,CAAA,CAAG,EAAG,CAC5Bs6H,CAAAA,CAAAA,QAAS4wF,CAAAA,WAAW,CAAG,IAAI,CAACwtF,eAC5Bp+K,CAAAA,QAAAA,CAASopC,UAAU,CAAG,IAAI,CAACg1I,eAAe,CAC1Cp+K,SAAS6+K,iBAAiB,CAAG,IAC/B,CACA,GAAIrvK,WAAa,CAAA,CACf/uI,IAAO,CAAA,CAAC,WAAW,EAAEA,IAAK,CAAA,CAAC,CAC3Bu/H,QAAAA,CAASs4B,SAAS,CAAG,MACvB,CACAt4B,QAAAA,CAASv/H,IAAI,CAAG,CAAC,OAAO,EAAEA,IAAK,CAAA,CAAC,CAChCu/H,QAASstC,CAAAA,WAAW,CAAG,KACvBttC,CAAAA,QAAS+kF,CAAAA,UAAU,CAAG,KACtB/kF,CAAAA,QAAS8kF,CAAAA,MAAM,CAAG,KAClB9kF,CAAAA,QAASglF,CAAAA,SAAS,CAAG,KAAA,CACrBhlF,QAAS8yF,CAAAA,OAAO,CAACptN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,EAC3Bs6H,CAAAA,QAAAA,CAAS4zF,OAAO,CAAG,EACnB5zF,CAAAA,QAAAA,CAASk4B,SAAS,CAAG9mC,mBACrB4O,CAAAA,QAASu4B,CAAAA,UAAU,CAAG,KACtBv4B,CAAAA,QAAS8+K,CAAAA,mBAAmB,CAAG,IAC/B9+K,CAAAA,QAAAA,CAASzvF,MAAM,EACf,CAAA,IAAI,CAACquQ,qBAAqB,CAACtoQ,IAAK,CAAA,CAAG0pF,QACnC,CAAA,OAAOA,QACT,CACA++K,wBAAAA,EAA2B,CACzB,MAAM/+K,SAAW,IAAI+1F,gBAAAA,CACrB/1F,QAAS8yF,CAAAA,OAAO,CAACptN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAC3Bs6H,CAAAA,CAAAA,QAAAA,CAASszF,QAAQ,CAAC5tN,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAC5Bs6H,CAAAA,QAAAA,CAAS4wF,WAAW,CAAG,IAAI,CAACwtF,eAAe,CAC3Cp+K,QAASopC,CAAAA,UAAU,CAAG,IAAI,CAACg1I,eAC3Bp+K,CAAAA,QAAAA,CAAS6+K,iBAAiB,CAAG,GAC7B7+K,CAAAA,QAAAA,CAASstC,WAAW,CAAG,KACvBttC,CAAAA,QAAAA,CAAS+kF,UAAU,CAAG,KACtB/kF,CAAAA,SAAS8kF,MAAM,CAAG,KAClB9kF,CAAAA,SAASglF,SAAS,CAAG,KACrBhlF,CAAAA,SAASk4B,SAAS,CAAG9mC,mBACrB4O,CAAAA,QAASu4B,CAAAA,UAAU,CAAG,KAAA,CACtB,OAAOv4B,QACT,CACAkgK,uBAAwB1wJ,CAAAA,WAAW,CAAEz+F,IAAI,CAAEivP,UAAU,CAAEgf,cAAc,CAAE,CACrE,GAAIxvK,WAAAA,CAAa,CACf,GAAIz+F,IAAM,CAAA,CACR,GAAIivP,UAAY,CAAA,CACd,GAAI,CAAC,IAAI,CAACif,0CAA0C,CAAE,CACpD,IAAI,CAACA,0CAA0C,CAAG,IAAI,CAACF,wBAAwB,EAC/E,CAAA,IAAI,CAACE,0CAA0C,CAACx+S,IAAI,CAAG,4CACvD,CAAA,IAAI,CAACw+S,0CAA0C,CAAC7+F,cAAc,CAAGzlF,wBACjE,CAAA,IAAI,CAACskL,0CAA0C,CAAC3mJ,SAAS,CAAG,KAC5D,CAAA,IAAI,CAAC2mJ,0CAA0C,CAACzuK,SAAS,CAAG,CAC5D,CAAA,IAAI,CAACyuK,0CAA0C,CAACtsQ,QAAQ,CAAG,KAC3D,CAAA,IAAI,CAACssQ,0CAA0C,CAACrsQ,UAAU,CAAG,KAC7D,CAAA,IAAI,CAACqsQ,0CAA0C,CAACpsQ,SAAS,CAAG,KAC5D,CAAA,IAAI,CAACosQ,0CAA0C,CAACnsQ,UAAU,CAAG,KAC7D,CAAA,IAAI,CAACmsQ,0CAA0C,CAAC1uQ,MAAM,EAAA,CACtD,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACghT,0CAA0C,EACjF,CACA,OAAO,IAAI,CAACA,0CACd,MAAO,GAAID,cAAAA,CAAgB,CACzB,GAAI,CAAC,IAAI,CAACE,yCAAyC,CAAE,CACnD,IAAI,CAACA,yCAAyC,CAAG,IAAI,CAACC,qCAAqC,CAAC1sS,KAAK,EACjG,CAAA,IAAI,CAACysS,yCAAyC,CAACz+S,IAAI,CAAG,2CACtD,CAAA,IAAI,CAACy+S,yCAAyC,CAAC9+F,cAAc,CAAGxlF,uBAChE,CAAA,IAAI,CAACskL,yCAAyC,CAAC5mJ,SAAS,CAAG,KAC3D,CAAA,IAAI,CAAC4mJ,yCAAyC,CAAC1uK,SAAS,CAAG,CAC3D,CAAA,IAAI,CAAC0uK,yCAAyC,CAACvsQ,QAAQ,CAAG,KAC1D,CAAA,IAAI,CAACusQ,yCAAyC,CAACtsQ,UAAU,CAAG,KAC5D,CAAA,IAAI,CAACssQ,yCAAyC,CAACrsQ,SAAS,CAAG,KAC3D,CAAA,IAAI,CAACqsQ,yCAAyC,CAACpsQ,UAAU,CAAG,MAC5D,IAAI,CAACosQ,yCAAyC,CAAC3uQ,MAAM,EACrD,CAAA,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACihT,yCAAyC,EAChF,CACA,OAAO,IAAI,CAACA,yCAAyC,CACvD,KAAO,CACL,GAAI,CAAC,IAAI,CAAC5a,mCAAmC,CAAE,CAC7C,IAAI,CAACA,mCAAmC,CAAG,IAAI,CAACya,wBAAwB,EACxE,CAAA,IAAI,CAACza,mCAAmC,CAAC7jS,IAAI,CAAG,qCAChD,CAAA,IAAI,CAAC6jS,mCAAmC,CAAChsI,SAAS,CAAG,KACrD,CAAA,IAAI,CAACgsI,mCAAmC,CAAC9zJ,SAAS,CAAG,CACrD,CAAA,IAAI,CAAC8zJ,mCAAmC,CAAC3xP,QAAQ,CAAG,KACpD,CAAA,IAAI,CAAC2xP,mCAAmC,CAAC1xP,UAAU,CAAG,KACtD,CAAA,IAAI,CAAC0xP,mCAAmC,CAACzxP,SAAS,CAAG,KACrD,CAAA,IAAI,CAACyxP,mCAAmC,CAACxxP,UAAU,CAAG,KACtD,CAAA,IAAI,CAACwxP,mCAAmC,CAAC/zP,MAAM,EAAA,CAC/C,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACqmS,mCAAmC,EAC1E,CACA,OAAO,IAAI,CAACA,mCACd,CACF,CAAO,KAAA,CACL,GAAItE,UAAAA,CAAY,CACd,GAAI,CAAC,IAAI,CAACof,sCAAsC,CAAE,CAChD,IAAI,CAACA,sCAAsC,CAAG,IAAI,CAACL,wBAAwB,EAC3E,CAAA,IAAI,CAACK,sCAAsC,CAAC3+S,IAAI,CAAG,wCACnD,CAAA,IAAI,CAAC2+S,sCAAsC,CAACh/F,cAAc,CAAGzlF,wBAC7D,CAAA,IAAI,CAACykL,sCAAsC,CAAC9mJ,SAAS,CAAG,KACxD,CAAA,IAAI,CAAC8mJ,sCAAsC,CAAC7uQ,MAAM,EAClD,CAAA,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACmhT,sCAAsC,EAC7E,CACA,OAAO,IAAI,CAACA,sCACd,CAAO,KAAA,GAAIJ,cAAgB,CAAA,CACzB,GAAI,CAAC,IAAI,CAACG,qCAAqC,CAAE,CAC/C,IAAI,CAACA,qCAAqC,CAAG,IAAI,CAACJ,wBAAwB,EAC1E,CAAA,IAAI,CAACI,qCAAqC,CAAC1+S,IAAI,CAAG,uCAClD,CAAA,IAAI,CAAC0+S,qCAAqC,CAAC/+F,cAAc,CAAGxlF,uBAC5D,CAAA,IAAI,CAACukL,qCAAqC,CAAC7mJ,SAAS,CAAG,KACvD,CAAA,IAAI,CAAC6mJ,qCAAqC,CAAC5uQ,MAAM,EAAA,CACjD,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACkhT,qCAAqC,EAC5E,CACA,OAAO,IAAI,CAACA,qCACd,MAAO,CACL,GAAI,CAAC,IAAI,CAAC3a,+BAA+B,CAAE,CACzC,IAAI,CAACA,+BAA+B,CAAG,IAAI,CAACua,wBAAwB,EACpE,CAAA,IAAI,CAACva,+BAA+B,CAAC/jS,IAAI,CAAG,iCAC5C,CAAA,IAAI,CAAC+jS,+BAA+B,CAAClsI,SAAS,CAAG,KAAA,CACjD,IAAI,CAACksI,+BAA+B,CAACj0P,MAAM,GAC3C,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACumS,+BAA+B,EACtE,CACA,OAAO,IAAI,CAACA,+BACd,CACF,CACF,MAAO,CACL,GAAIzzP,IAAM,CAAA,CACR,GAAIivP,UAAY,CAAA,CACd,GAAI,CAAC,IAAI,CAACqf,+BAA+B,CAAE,CACzC,IAAI,CAACA,+BAA+B,CAAG,IAAI,CAACN,wBAAwB,EACpE,CAAA,IAAI,CAACM,+BAA+B,CAAC5+S,IAAI,CAAG,iCAC5C,CAAA,IAAI,CAAC4+S,+BAA+B,CAACj/F,cAAc,CAAGzlF,wBACtD,CAAA,IAAI,CAAC0kL,+BAA+B,CAAC7uK,SAAS,CAAG,CACjD,CAAA,IAAI,CAAC6uK,+BAA+B,CAAC1sQ,QAAQ,CAAG,KAChD,CAAA,IAAI,CAAC0sQ,+BAA+B,CAACzsQ,UAAU,CAAG,KAClD,CAAA,IAAI,CAACysQ,+BAA+B,CAACxsQ,SAAS,CAAG,KACjD,CAAA,IAAI,CAACwsQ,+BAA+B,CAACvsQ,UAAU,CAAG,KAClD,CAAA,IAAI,CAACusQ,+BAA+B,CAAC9uQ,MAAM,EAAA,CAC3C,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACohT,+BAA+B,EACtE,CACA,OAAO,IAAI,CAACA,+BAA+B,CAC7C,KAAO,GAAIL,cAAAA,CAAgB,CACzB,GAAI,CAAC,IAAI,CAACM,8BAA8B,CAAE,CACxC,IAAI,CAACA,8BAA8B,CAAG,IAAI,CAACP,wBAAwB,EACnE,CAAA,IAAI,CAACO,8BAA8B,CAAC7+S,IAAI,CAAG,gCAC3C,CAAA,IAAI,CAAC6+S,8BAA8B,CAACl/F,cAAc,CAAGxlF,uBACrD,CAAA,IAAI,CAAC0kL,8BAA8B,CAAC9uK,SAAS,CAAG,CAChD,CAAA,IAAI,CAAC8uK,8BAA8B,CAAC3sQ,QAAQ,CAAG,KAC/C,CAAA,IAAI,CAAC2sQ,8BAA8B,CAAC1sQ,UAAU,CAAG,KACjD,CAAA,IAAI,CAAC0sQ,8BAA8B,CAACzsQ,SAAS,CAAG,KAChD,CAAA,IAAI,CAACysQ,8BAA8B,CAACxsQ,UAAU,CAAG,MACjD,IAAI,CAACwsQ,8BAA8B,CAAC/uQ,MAAM,EAAA,CAC1C,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACqhT,8BAA8B,EACrE,CACA,OAAO,IAAI,CAACA,8BACd,CAAO,KAAA,CACL,GAAI,CAAC,IAAI,CAAC/a,wBAAwB,CAAE,CAClC,IAAI,CAACA,wBAAwB,CAAG,IAAI,CAACwa,wBAAwB,EAC7D,CAAA,IAAI,CAACxa,wBAAwB,CAAC9jS,IAAI,CAAG,0BACrC,CAAA,IAAI,CAAC8jS,wBAAwB,CAAC/zJ,SAAS,CAAG,CAC1C,CAAA,IAAI,CAAC+zJ,wBAAwB,CAAC5xP,QAAQ,CAAG,KACzC,CAAA,IAAI,CAAC4xP,wBAAwB,CAAC3xP,UAAU,CAAG,KAC3C,CAAA,IAAI,CAAC2xP,wBAAwB,CAAC1xP,SAAS,CAAG,KAC1C,CAAA,IAAI,CAAC0xP,wBAAwB,CAACzxP,UAAU,CAAG,KAC3C,CAAA,IAAI,CAACyxP,wBAAwB,CAACh0P,MAAM,EAAA,CACpC,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACsmS,wBAAwB,EAC/D,CACA,OAAO,IAAI,CAACA,wBAAwB,CAExC,CAAO,KAAA,CACL,GAAIvE,UAAY,CAAA,CACd,GAAI,CAAC,IAAI,CAACuf,2BAA2B,CAAE,CACrC,IAAI,CAACA,2BAA2B,CAAG,IAAI,CAACR,wBAAwB,EAChE,CAAA,IAAI,CAACQ,2BAA2B,CAAC9+S,IAAI,CAAG,6BACxC,CAAA,IAAI,CAAC8+S,2BAA2B,CAACn/F,cAAc,CAAGzlF,yBAClD,IAAI,CAAC4kL,2BAA2B,CAAChvQ,MAAM,EACvC,CAAA,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACshT,2BAA2B,EAClE,CACA,OAAO,IAAI,CAACA,2BACd,MAAO,GAAIP,cAAAA,CAAgB,CACzB,GAAI,CAAC,IAAI,CAACQ,0BAA0B,CAAE,CACpC,IAAI,CAACA,0BAA0B,CAAG,IAAI,CAACT,wBAAwB,EAC/D,CAAA,IAAI,CAACS,0BAA0B,CAAC/+S,IAAI,CAAG,4BACvC,CAAA,IAAI,CAAC++S,0BAA0B,CAACp/F,cAAc,CAAGxlF,uBACjD,CAAA,IAAI,CAAC4kL,0BAA0B,CAACjvQ,MAAM,EAAA,CACtC,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACuhT,0BAA0B,EACjE,CACA,OAAO,IAAI,CAACA,0BACd,MAAO,CACL,GAAI,CAAC,IAAI,CAAC/a,oBAAoB,CAAE,CAC9B,IAAI,CAACA,oBAAoB,CAAG,IAAI,CAACsa,wBAAwB,EACzD,CAAA,IAAI,CAACta,oBAAoB,CAAChkS,IAAI,CAAG,sBACjC,CAAA,IAAI,CAACgkS,oBAAoB,CAACl0P,MAAM,EAAA,CAChC,IAAI,CAACuvP,qBAAqB,CAAC7hS,IAAI,CAAC,IAAI,CAACwmS,oBAAoB,EAC3D,CACA,OAAO,IAAI,CAACA,oBACd,CACF,CACF,CACF,CACAgb,wBAAAA,CAAyB73S,IAAI,CAAE,CAC7B,IAAI,CAACiuS,iBAAiB,CAAGjuS,KAC3B,CACA83S,kBAAAA,CAAmB93S,IAAI,CAAE,CACvB,IAAI,CAACokS,WAAW,CAAGpkS,KACrB,CACAkkS,qBAAsB,CACpB,OAAO,IAAI,CAAC+J,iBAAiB,CAE/B3J,aAAgB,EAAA,CACd,OAAO,IAAI,CAACF,WAAW,CAxdzB9mS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,SACV,CAAA,IAAI,CAACokO,aAAa,CAAGgsC,gBACrB,CAAA,IAAI,CAAC9rC,QAAQ,CAAGwyC,oBAChB,CAAA,IAAI,CAACpgE,MAAM,CAAGqgE,SACd,CAAA,IAAI,CAACrI,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAAC7J,WAAW,CAAG,IACnB,CAAA,IAAI,CAACoS,eAAe,CAAG,IAAIt1Q,OAAAA,CAAQqkM,GAAIpmM,CAAAA,cAAc,CAAE,CACrDjkB,MAAO,CACPC,CAAAA,MAAAA,CAAQ,CACR9f,CAAAA,MAAAA,CAAQyzB,mBACRj2B,IAAM,CAAA,gBACR,CACA,CAAA,CAAA,MAAM4uC,OAAS,IAAI,CAAC+uQ,eAAe,CAAC7wQ,IAAI,EAAA,CACxC,MAAM8uJ,SAAAA,CAAY,IAAInyL,UAAW,CAAA,CAAA,CACjCmyL,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAG,GACfA,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAG,GACfA,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAG,GACfA,CAAAA,SAAS,CAAC,EAAE,CAAG,GAAA,CACfhtJ,MAAO3pC,CAAAA,GAAG,CAAC22L,SACX,CAAA,CAAA,IAAI,CAAC+hH,eAAe,CAAC7vQ,MAAM,EAC3B,CAAA,IAAI,CAACk2P,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAAC8a,2BAA2B,CAAG,IACnC,CAAA,IAAI,CAACC,0BAA0B,CAAG,IAClC,CAAA,IAAI,CAACjb,wBAAwB,CAAG,IAChC,CAAA,IAAI,CAAC8a,+BAA+B,CAAG,IACvC,CAAA,IAAI,CAACC,8BAA8B,CAAG,IACtC,CAAA,IAAI,CAAC9a,+BAA+B,CAAG,IACvC,CAAA,IAAI,CAAC4a,sCAAsC,CAAG,IAC9C,CAAA,IAAI,CAACD,qCAAqC,CAAG,IAC7C,CAAA,IAAI,CAACF,0CAA0C,CAAG,IAClD,CAAA,IAAI,CAACC,yCAAyC,CAAG,IACjD,CAAA,IAAI,CAAC5a,mCAAmC,CAAG,IAC3C,CAAA,IAAI,CAACsa,qBAAqB,CAAG,EAC7B,CAAA,IAAI,CAAC9e,qBAAqB,CAAG,EAAE,CAC/B,IAAI,CAACt7R,EAAE,CAAC,KAAA,CAAO,IAAI,CAACi6S,cAAc,CAAE,IAAI,CACxC,CAAA,IAAI,CAACj6S,EAAE,CAAC,cAAgB,CAAA,IAAI,CAACk6S,iBAAiB,CAAE,IAAI,EACtD,CAobF,CAEA,MAAMiB,WAAAA,CAAc,MACpB,CAAA,MAAMC,eAAiB,SACvB,CAAA,MAAMC,aAAgB,CAAA,QAAA,CAEtB,MAAMC,YAAe,CAAA,CACnB,iBACA,CAAA,iBAAA,CACA,kBACA,qBACA,CAAA,qBAAA,CACA,qBACA,CAAA,gBAAA,CACA,gBACA,CAAA,gBAAA,CACA,gBACA,CAAA,gBAAA,CACA,iBACA,gBACA,CAAA,gBAAA,CACA,gBACA,CAAA,mBAAA,CACA,oBACA,mBACA,CAAA,YAAA,CACA,iBACA,CAAA,SAAA,CACA,UACA,SACA,CAAA,gBAAA,CACA,gBACA,CAAA,gBAAA,CACA,oBACA,CAAA,oBAAA,CACA,oBACA,CAAA,eAAA,CACA,gBACA,eACA,CAAA,eAAA,CACA,eACA,CAAA,eAAA,CACA,gBACA,eACA,CAAA,eAAA,CACA,kBACA,CAAA,kBAAA,CACA,mBACD,CACD,MAAMC,cAAuBj1C,SAAAA,SAAAA,CA8C3B,IAAIk1C,OAAAA,CAAQ13S,IAAI,CAAE,CAChB,IAAI,CAAC23S,kBAAkB,EACvB,CAAA,IAAI,CAACC,QAAQ,CAAG53S,KAChB,IAAI,CAAC63S,iBAAiB,GACxB,CACA,IAAIH,OAAU,EAAA,CACZ,OAAO,IAAI,CAACE,QACd,CACA,IAAIE,OAAQ93S,CAAAA,IAAI,CAAE,CAChB,IAAI,CAAC23S,kBAAkB,EACvB,CAAA,IAAI,CAACI,QAAQ,CAAG/3S,IAAAA,CAChB,IAAI,CAAC63S,iBAAiB,GACxB,CACA,IAAIC,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QAAQ,CAEtB,IAAIC,UAAAA,CAAW1qE,KAAK,CAAE,CACpB,GAAI,IAAI,CAAC2qE,WAAW,EAAI,IAAI,CAACC,WAAW,GAAK5qE,KAAAA,CAAO,CAClD,IAAI,CAAC2qE,WAAW,CAACE,2BAA2B,CAAC7qE,KAC7C,CAAA,CAAA,IAAI,CAAC4qE,WAAW,CAAG5qE,MACrB,CACF,CACA,IAAI0qE,UAAa,EAAA,CACf,OAAO,IAAI,CAACE,WAAW,CAEzB,IAAIE,eAAgBA,CAAAA,eAAe,CAAE,CACnC,IAAI,CAACT,kBAAkB,EACvB,CAAA,IAAI,CAACU,gBAAgB,CAAGD,eACxB,CAAA,IAAI,CAACP,iBAAiB,GACxB,CACA,IAAIO,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACC,gBACd,CACA,IAAIC,cAAAA,CAAe9rO,MAAM,CAAE,CACzB,GAAI,CAAC,IAAI,CAAC+rO,eAAe,CAACjuS,MAAM,CAACkiE,QAAS,CACxC,IAAI,CAAC+rO,eAAe,CAAC3kT,IAAI,CAAC44E,MAC1B,CAAA,CAAA,IAAI,CAACgsO,oBAAoB,GAC3B,CACF,CACA,IAAIF,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7B,IAAIE,cAAej8S,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAACk8S,eAAe,GAAKl8S,KAAO,CAAA,CAClC,IAAI,CAACk8S,eAAe,CAAGl8S,KACvB,CAAA,IAAI,CAACg8S,oBAAoB,GAC3B,CACF,CACA,IAAIC,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7B,IAAIC,cAAensO,CAAAA,MAAM,CAAE,CACzB,GAAI,CAAC,IAAI,CAACosO,eAAe,CAACtuS,MAAM,CAACkiE,MAAAA,CAAAA,CAAS,CACxC,IAAI,CAACosO,eAAe,CAAChlT,IAAI,CAAC44E,MAAAA,CAAAA,CAC1B,IAAI,CAACgsO,oBAAoB,GAC3B,CACF,CACA,IAAIG,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eACd,CACA,IAAIC,eAAer8S,KAAK,CAAE,CACxB,GAAI,IAAI,CAACs8S,eAAe,GAAKt8S,KAAAA,CAAO,CAClC,IAAI,CAACs8S,eAAe,CAAGt8S,KACvB,CAAA,IAAI,CAACg8S,oBAAoB,GAC3B,CACF,CACA,IAAIK,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7B,IAAIC,cAAAA,CAAevsO,MAAM,CAAE,CACzB,GAAI,CAAC,IAAI,CAACwsO,eAAe,CAAC1uS,MAAM,CAACkiE,MAAS,CAAA,CAAA,CACxC,IAAI,CAACwsO,eAAe,CAACplT,IAAI,CAAC44E,QAC1B,IAAI,CAACgsO,oBAAoB,GAC3B,CACF,CACA,IAAIO,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eACd,CACA,IAAIC,cAAez8S,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAAC08S,eAAe,GAAK18S,KAAAA,CAAO,CAClC,IAAI,CAAC08S,eAAe,CAAG18S,KACvB,CAAA,IAAI,CAACg8S,oBAAoB,GAC3B,CACF,CACA,IAAIS,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eACd,CACA,IAAIC,aAAAA,CAAc3sO,MAAM,CAAE,CACxB,GAAI,CAAC,IAAI,CAAC4sO,cAAc,CAAC9uS,MAAM,CAACkiE,QAAS,CACvC,IAAI,CAAC4sO,cAAc,CAACxlT,IAAI,CAAC44E,MACzB,CAAA,CAAA,IAAI,CAAC6sO,mBAAmB,GAC1B,CACF,CACA,IAAIF,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIE,aAAc98S,CAAAA,KAAK,CAAE,CACvB,GAAI,IAAI,CAAC+8S,cAAc,GAAK/8S,KAAO,CAAA,CACjC,IAAI,CAAC+8S,cAAc,CAAG/8S,KAAAA,CACtB,IAAI,CAAC68S,mBAAmB,GAC1B,CACF,CACA,IAAIC,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIC,cAAchtO,MAAM,CAAE,CACxB,GAAI,CAAC,IAAI,CAACitO,cAAc,CAACnvS,MAAM,CAACkiE,MAAS,CAAA,CAAA,CACvC,IAAI,CAACitO,cAAc,CAAC7lT,IAAI,CAAC44E,MACzB,CAAA,CAAA,IAAI,CAAC6sO,mBAAmB,GAC1B,CACF,CACA,IAAIG,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIC,aAAAA,CAAcl9S,KAAK,CAAE,CACvB,GAAI,IAAI,CAACm9S,cAAc,GAAKn9S,KAAO,CAAA,CACjC,IAAI,CAACm9S,cAAc,CAAGn9S,MACtB,IAAI,CAAC68S,mBAAmB,GAC1B,CACF,CACA,IAAIK,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIC,aAAcptO,CAAAA,MAAM,CAAE,CACxB,GAAI,CAAC,IAAI,CAACqtO,cAAc,CAACvvS,MAAM,CAACkiE,MAAS,CAAA,CAAA,CACvC,IAAI,CAACqtO,cAAc,CAACjmT,IAAI,CAAC44E,QACzB,IAAI,CAAC6sO,mBAAmB,GAC1B,CACF,CACA,IAAIO,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIC,aAAct9S,CAAAA,KAAK,CAAE,CACvB,GAAI,IAAI,CAACu9S,cAAc,GAAKv9S,KAAAA,CAAO,CACjC,IAAI,CAACu9S,cAAc,CAAGv9S,KACtB,CAAA,IAAI,CAAC68S,mBAAmB,GAC1B,CACF,CACA,IAAIS,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5BC,kBAAkBC,WAAW,CAAEC,aAAa,CAAE,CAC5C,MAAMh3J,GAAM+2J,CAAAA,WAAAA,CAAYr+R,cAAc,EACtC,CAAA,MAAMyjI,GAAM,CAAA,IAAI3iI,KAChB2iI,GAAIvrI,CAAAA,WAAW,CAACmmS,WAAAA,CAAAA,CAChB,MAAME,OAAU,CAAA,IAAIh/D,IAAK20C,CAAAA,SAAS,CAAC5sI,GAAAA,CAAIh6I,CAAC,CAAEg6I,IAAItyI,CAAC,CAAEsyI,GAAInyI,CAAAA,CAAC,EACtD,MAAMmkR,QAAAA,CAAW,IAAI/5C,IAAAA,CAAK40C,YAAY,CAAC1wI,GAAAA,CAAIn2I,CAAC,CAAEm2I,GAAIzuI,CAAAA,CAAC,CAAEyuI,GAAAA,CAAItuI,CAAC,CAAEsuI,GAAAA,CAAIjrI,CAAC,CAAA,CACjE8lS,cAAcrrB,SAAS,CAACsrB,OACxBD,CAAAA,CAAAA,aAAAA,CAAcr8J,WAAW,CAACq3I,QAAAA,CAAAA,CAC1B/5C,IAAKn9M,CAAAA,OAAO,CAACm8Q,OAAAA,CAAAA,CACbh/D,IAAKn9M,CAAAA,OAAO,CAACk3P,QACf,EAAA,CACAsjB,oBAAuB,EAAA,CACrB,MAAM4B,UAAa,CAAA,IAAI,CAACnC,WAAW,CACnC,GAAImC,UAAAA,CAAY,CACd,IAAIhpS,EAAIC,CAAAA,EAAAA,CAAIC,EAAI0tI,CAAAA,EAAAA,CAAIC,GAAIC,EACxB,CAAA,GAAI,IAAI,CAACw5J,eAAe,GAAKpB,cAAgB,CAAA,CAC3ClmS,GAAK,IAAI,CAACmnS,eAAe,CAACrvS,CAAC,CAAGhB,IAAKC,CAAAA,UAAU,CAC7C62I,EAAK,CAAA,IAAI,CAACu5J,eAAe,CAAC3nS,CAAC,CAAG1I,IAAKC,CAAAA,WAAU,CACxC,KAAA,GAAI,IAAI,CAACuwS,eAAe,GAAKrB,WAAa,CAAA,CAC/CjmS,GAAK,CACL4tI,CAAAA,EAAAA,CAAK,EACP,CAAA,KAAO,CACL5tI,EAAK4tI,CAAAA,EAAAA,CAAK,EACZ,CACA,GAAI,IAAI,CAAC85J,eAAe,GAAKxB,cAAgB,CAAA,CAC3CjmS,EAAK,CAAA,IAAI,CAACunS,eAAe,CAAC1vS,CAAC,CAAGhB,KAAKC,UAAU,CAC7C82I,EAAK,CAAA,IAAI,CAAC25J,eAAe,CAAChoS,CAAC,CAAG1I,IAAKC,CAAAA,WAAU,CAC/C,KAAO,GAAI,IAAI,CAAC2wS,eAAe,GAAKzB,YAAa,CAC/ChmS,EAAAA,CAAK,CACL4tI,CAAAA,EAAAA,CAAK,EACP,CAAO,KAAA,CACL5tI,EAAK4tI,CAAAA,EAAAA,CAAK,EACZ,CACA,GAAI,IAAI,CAACi6J,eAAe,GAAK5B,cAAgB,CAAA,CAC3ChmS,GAAK,IAAI,CAAC0nS,eAAe,CAAC9vS,CAAC,CAAGhB,IAAAA,CAAKC,UAAU,CAC7C+2I,EAAK,CAAA,IAAI,CAAC85J,eAAe,CAACpoS,CAAC,CAAG1I,IAAKC,CAAAA,WAAU,CACxC,KAAA,GAAI,IAAI,CAAC+wS,eAAe,GAAK7B,WAAAA,CAAa,CAC/C/lS,EAAAA,CAAK,CACL4tI,CAAAA,EAAAA,CAAK,EACP,CAAA,KAAO,CACL5tI,EAAK4tI,CAAAA,EAAAA,CAAK,EACZ,CACA,MAAM1yE,MAAS,CAAA,IAAI2uK,IAAK20C,CAAAA,SAAS,CAAC1+Q,EAAIC,CAAAA,EAAAA,CAAIC,EAC1C8oS,CAAAA,CAAAA,UAAAA,CAAWC,oBAAoB,CAAC7tO,MAChCA,CAAAA,CAAAA,MAAAA,CAAOhgC,QAAQ,CAACwyG,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CAAAA,CACxBk7J,UAAWE,CAAAA,oBAAoB,CAAC9tO,MAAAA,CAAAA,CAChC2uK,KAAKn9M,OAAO,CAACwuC,MACf,EAAA,CACF,CACA6sO,mBAAAA,EAAsB,CACpB,MAAMe,WAAa,IAAI,CAACnC,WAAW,CACnC,GAAImC,UAAY,CAAA,CACd,IAAIhpS,EAAAA,CAAIC,GAAIC,EAAI0tI,CAAAA,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CACxB,GAAI,IAAI,CAACq6J,cAAc,GAAKjC,cAAgB,CAAA,CAC1ClmS,EAAK,CAAA,IAAI,CAACgoS,cAAc,CAAClwS,CAAC,CAC1B81I,GAAK,IAAI,CAACo6J,cAAc,CAACxoS,EAC3B,CAAO,KAAA,GAAI,IAAI,CAAC2oS,cAAc,GAAKlC,WAAAA,CAAa,CAC9CjmS,EAAK,CAAA,CAAA,CACL4tI,EAAK,CAAA,EACP,MAAO,CACL5tI,EAAAA,CAAK4tI,EAAK,CAAA,EACZ,CACA,GAAI,IAAI,CAAC26J,cAAc,GAAKrC,cAAAA,CAAgB,CAC1CjmS,EAAAA,CAAK,IAAI,CAACooS,cAAc,CAACvwS,CAAC,CAC1B+1I,EAAK,CAAA,IAAI,CAACw6J,cAAc,CAAC7oS,EAAC,CAC5B,KAAO,GAAI,IAAI,CAAC+oS,cAAc,GAAKtC,YAAa,CAC9ChmS,EAAAA,CAAK,CACL4tI,CAAAA,EAAAA,CAAK,EACP,CAAO,KAAA,CACL5tI,EAAK4tI,CAAAA,EAAAA,CAAK,EACZ,CACA,GAAI,IAAI,CAAC86J,cAAc,GAAKzC,cAAgB,CAAA,CAC1ChmS,GAAK,IAAI,CAACuoS,cAAc,CAAC3wS,CAAC,CAC1Bg2I,EAAAA,CAAK,IAAI,CAAC26J,cAAc,CAACjpS,EAC3B,MAAO,GAAI,IAAI,CAACmpS,cAAc,GAAK1C,WAAa,CAAA,CAC9C/lS,EAAK,CAAA,CAAA,CACL4tI,GAAK,EACP,CAAA,KAAO,CACL5tI,EAAAA,CAAK4tI,EAAK,CAAA,EACZ,CACA,MAAM1yE,OAAS,IAAI2uK,IAAAA,CAAK20C,SAAS,CAAC1+Q,EAAIC,CAAAA,EAAAA,CAAIC,EAC1C8oS,CAAAA,CAAAA,UAAAA,CAAWG,mBAAmB,CAAC/tO,MAAAA,CAAAA,CAC/BA,MAAOhgC,CAAAA,QAAQ,CAACwyG,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CAAAA,CACxBk7J,WAAWI,mBAAmB,CAAChuO,MAC/B2uK,CAAAA,CAAAA,IAAAA,CAAKn9M,OAAO,CAACwuC,MAAAA,EACf,CACF,CACAqrO,mBAAoB,CAClB,GAAI,IAAI,CAACD,QAAQ,EAAI,IAAI,CAACA,QAAQ,CAAC18D,SAAS,CAAE,CAC5C,IAAI,CAACy8D,kBAAkB,EACvB,CAAA,MAAM9xK,IAAM,IAAIzuH,IAAAA,CAChB,MAAMqjS,KAAAA,CAAQ,IAAI,CAAC7C,QAAQ,CAAC18D,SAAS,CAACl7O,IAAI,CAC1Cy6S,KAAAA,CAAMhyJ,QAAQ,EACd,CAAA,MAAMiyJ,QAAW,CAAA,IAAI,CAACj/K,MAAM,CAACe,iBAAiB,EAAA,CAC9C,MAAMm+K,UAAAA,CAAa,IAAI,CAAC/C,QAAQ,CAACp7K,iBAAiB,EAClD,CAAA,MAAMo+K,cAAgBD,UAAWxwS,CAAAA,KAAK,EAAGyQ,CAAAA,MAAM,GAC/CirH,GAAIzzH,CAAAA,IAAI,CAACwoS,aAAAA,CAAeF,QACxB,CAAA,CAAA,MAAMG,MAAS,CAAA,IAAI1/D,KAAK60C,WAAW,CACnC,IAAI,CAACgqB,iBAAiB,CAACn0K,GAAAA,CAAKg1K,MAC5B,CAAA,CAAA,GAAI,IAAI,CAAC9C,QAAQ,EAAI,IAAI,CAACA,QAAQ,CAAC78D,SAAS,CAAE,CAC5C,MAAM4/D,KAAQ,CAAA,IAAI,CAAC/C,QAAQ,CAAC78D,SAAS,CAACl7O,IAAI,CAC1C86S,KAAAA,CAAMryJ,QAAQ,EAAA,CACd,MAAMsyJ,UAAAA,CAAa,IAAI,CAAChD,QAAQ,CAACv7K,iBAAiB,EAClD,CAAA,MAAMw+K,cAAgBD,UAAW5wS,CAAAA,KAAK,EAAGyQ,CAAAA,MAAM,GAC/CirH,GAAIzzH,CAAAA,IAAI,CAAC4oS,aAAAA,CAAeN,QACxB,CAAA,CAAA,MAAMO,MAAS,CAAA,IAAI9/D,KAAK60C,WAAW,CACnC,IAAI,CAACgqB,iBAAiB,CAACn0K,GAAKo1K,CAAAA,MAAAA,CAC5B,CAAA,IAAI,CAAChD,WAAW,CAAG,IAAI98D,IAAAA,CAAK+/D,6BAA6B,CAACT,MAAOK,KAAOD,CAAAA,MAAAA,CAAQI,MAAQ,CAAA,CAAC,IAAI,CAAC5C,gBAAgB,CAC9Gl9D,CAAAA,IAAAA,CAAKn9M,OAAO,CAACi9Q,MAAAA,EACf,CAAO,KAAA,CACL,IAAI,CAAChD,WAAW,CAAG,IAAI98D,IAAK+/D,CAAAA,6BAA6B,CAACT,KAAAA,CAAOI,OAAQ,CAAC,IAAI,CAACxC,gBAAgB,EACjG,CACAl9D,IAAAA,CAAKn9M,OAAO,CAAC68Q,MACb,CAAA,CAAA,MAAM3gS,IAAO,CAAA,CACX,IACA,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,IACD,CACD,IAAI,IAAIrlB,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACxB,MAAMyX,IAAAA,CAAOzX,CAAI,CAAA,CAAA,CAAI,UAAY,UACjC,CAAA,IAAI,CAACojT,WAAW,CAACkD,YAAY,CAACtmT,CAAG,CAAA,IAAI,CAAC,CAAC,EAAEyX,IAAK,CAAA,MAAM,EAAE4N,IAAI,CAACrlB,CAAAA,CAAE,CAAC,CAAC,CAAC,CAChE,CAAA,IAAI,CAACojT,WAAW,CAAChpB,UAAU,CAACp6R,EAAG,IAAI,CAAC,CAAC,EAAEyX,IAAK,CAAA,OAAO,EAAE4N,IAAI,CAACrlB,CAAE,CAAA,CAAC,CAAC,CAAC,EAC/D,IAAI,CAACojT,WAAW,CAACmD,mBAAmB,CAACvmT,CAAAA,CAAG,IAAI,CAAC,CAAC,EAAEyX,IAAK,CAAA,WAAW,EAAE4N,IAAI,CAACrlB,CAAE,CAAA,CAAC,CAAC,CAAC,CAAA,CAC5E,IAAI,CAACojT,WAAW,CAACoD,YAAY,CAACxmT,CAAAA,CAAG,IAAI,CAAC,CAAC,EAAEyX,KAAK,SAAS,EAAE4N,IAAI,CAACrlB,CAAE,CAAA,CAAC,CAAC,CAAC,EACrE,CACA,IAAI,CAACojT,WAAW,CAACE,2BAA2B,CAAC,IAAI,CAACD,WAAW,CAAA,CAC7D,IAAI,CAACmB,mBAAmB,EACxB,CAAA,IAAI,CAACb,oBAAoB,GACzB,MAAM3zE,GAAAA,CAAM,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMy2E,aAAgBz2E,CAAAA,GAAAA,CAAIgR,OAAO,CAACqF,SAAS,CAACogE,aAAa,CACzDA,aAAAA,CAAcC,aAAa,CAAC,IAAI,CAACtD,WAAW,CAAE,CAAC,IAAI,CAACI,gBAAgB,EACtE,CACF,CACAV,kBAAAA,EAAqB,CACnB,GAAI,IAAI,CAACM,WAAW,CAAE,CACpB,MAAMpzE,GAAM,CAAA,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMy2E,aAAAA,CAAgBz2E,GAAIgR,CAAAA,OAAO,CAACqF,SAAS,CAACogE,aAAa,CACzDA,aAAcE,CAAAA,gBAAgB,CAAC,IAAI,CAACvD,WAAW,CAC/C98D,CAAAA,IAAAA,CAAKn9M,OAAO,CAAC,IAAI,CAACi6Q,WAAW,CAC7B,CAAA,IAAI,CAACA,WAAW,CAAG,KACrB,CACF,CACAwD,YAAAA,CAAa5sS,IAAI,CAAE,CACjB,IAAK,MAAMlb,IAAQ6jT,IAAAA,YAAAA,CAAa,CAC9B,GAAI3oS,KAAK3N,cAAc,CAACvN,IAAO,CAAA,CAAA,CAC7B,GAAIkb,IAAI,CAAClb,IAAK,CAAA,WAAY+iB,IAAM,CAAA,CAC9B,IAAI,CAAC,CAAC,CAAC,EAAE/iB,IAAK,CAAA,CAAC,CAAC,CAACC,IAAI,CAACib,IAAI,CAAClb,IAAK,CAAA,EAClC,CAAO,KAAA,CACL,IAAI,CAAC,CAAC,CAAC,EAAEA,IAAK,CAAA,CAAC,CAAC,CAAGkb,IAAI,CAAClb,IAAK,EAC/B,CACF,CACF,CACA,IAAI,CAACkkT,iBAAiB,GACxB,CACAv3M,QAAAA,EAAW,CACT,IAAI,CAACu3M,iBAAiB,GACxB,CACAt3M,SAAY,EAAA,CACV,IAAI,CAACo3M,kBAAkB,GACzB,CACA+D,aAAc/nT,CAAAA,IAAI,CAAEu1I,GAAG,CAAE1sI,KAAK,CAAE,EAChCm/S,eAAkB,EAAA,CAChB,IAAI,CAAC59S,IAAI,CAAC,QAAA,EACZ,CAhWAnB,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,OAAQn1G,MACd,CAAA,CAAA,IAAI,CAACw8K,WAAW,CAAG,IACnB,CAAA,IAAI,CAACL,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACG,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACG,WAAW,CAAG,KACnB,CAAA,IAAI,CAACG,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACkB,cAAc,CAAGhC,aACtB,CAAA,IAAI,CAAC6B,cAAc,CAAG,IAAI1iS,IAAK,CAAA,CAAA,CAAG,CAClC,CAAA,CAAA,IAAI,CAACklS,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACpC,cAAc,CAAGpC,aACtB,CAAA,IAAI,CAACkC,cAAc,CAAG,IAAI/iS,IAAAA,CAAK,CAAG,CAAA,CAAA,CAClC,CAAA,IAAI,CAACslS,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAACpC,cAAc,CAAGxC,aACtB,CAAA,IAAI,CAACsC,cAAc,CAAG,IAAInjS,IAAAA,CAAK,EAAG,CAClC,CAAA,CAAA,IAAI,CAAC0lS,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,mBAAmB,CAAG,CAC3B,CAAA,IAAI,CAAC7D,eAAe,CAAGnB,aACvB,CAAA,IAAI,CAACgB,eAAe,CAAG,IAAI7hS,KAAK,CAAG,CAAA,CAAA,CACnC,CAAA,IAAI,CAAC8lS,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAAC7D,eAAe,CAAGvB,aACvB,CAAA,IAAI,CAACqB,eAAe,CAAG,IAAIliS,IAAK,CAAA,CAAA,CAAG,CACnC,CAAA,CAAA,IAAI,CAACkmS,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAAC7D,eAAe,CAAG3B,aACvB,CAAA,IAAI,CAACyB,eAAe,CAAG,IAAItiS,IAAAA,CAAK,CAAG,CAAA,CAAA,CACnC,CAAA,IAAI,CAACsmS,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAACC,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAACC,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACjhT,EAAE,CAAC,aAAe,CAAA,IAAI,CAACw/S,aAAa,CAAE,IAAI,EACjD,CAqTF,CACA,MAAM0B,WAAAA,CAAc,CAClBC,OAAAA,CAAS,aACTC,WAAa,CAAA,qBAAA,CACbC,MAAQ,CAAA,cAAA,CACRC,UAAW,cACb,CAAA,CACA,CACE,QAAA,CACA,UACD,CAACh8S,OAAO,CAAE8K,IACT,EAAA,CAAA,CACE,SACA,CAAA,aAAA,CACA,SACA,WACD,CAAA,CAAC9K,OAAO,CAAC,IACR,EAAA,CAAA,CACE,GACA,CAAA,GAAA,CACA,IACD,CAACA,OAAO,CAAE0Y,IACT,EAAA,CAAA,MAAMvmB,IAAO2Y,CAAAA,IAAAA,CAAOnU,KAAO+hB,IAC3B,CAAA,MAAMujS,YAAe,CAAA,CAAC,CAAC,EAAE9pT,IAAAA,CAAK,CAAC,CAC/B,IAAI+G,KAAQ4R,CAAAA,IAAAA,GAAS,QAAW,CAAA,CAAA,CAAI,CACpC,CAAA,GAAI4N,IAAS,GAAA,GAAA,CAAKxf,OAAS,CAC3B,CAAA,GAAIwf,IAAS,GAAA,GAAA,CAAKxf,OAAS,CAC3BhE,CAAAA,MAAAA,CAAOC,cAAc,CAAC8gT,eAAevwL,SAAS,CAAEvzH,IAAM,CAAA,CACpDiD,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC6mT,YAAa,CAC3B,CACArgT,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CAAA,CACjB,GAAI,IAAI,CAACihT,YAAa,CAAA,GAAKjhT,KAAO,CAAA,CAChC,IAAI,CAACihT,YAAa,CAAA,CAAGjhT,MACrB,IAAI,CAACy7S,WAAW,CAACmF,WAAW,CAACjlT,IAAAA,CAAK,CAAC,CAACuC,MAAO8B,KAC7C,EAAA,CACF,CACF,CAAA,EACF,CACF,EAAA,CAAA,EACF,CAEA,CAAA,CAAA,MAAMkhT,mBACJ9gT,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMi2S,SAAAA,CAAY,CAChB,SAAA,CACD,CACD,MAAMC,oBAA6B56C,SAAAA,eAAAA,CASjCI,wBAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDi9F,SAAUwlE,CAAAA,YAAY,CAAC5sS,IACvB,CAAA,CAAA,KAAK,CAACu0P,uBAAAA,CAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAM8uS,SACjD,EAAA,CAXA/gT,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GACN,CAAA,CAAA,IAAI,CAAChmM,EAAE,CAAG,OACV,CAAA,IAAI,CAACgmM,GAAG,CAAGA,GACX,CAAA,IAAI,CAACo+B,aAAa,CAAGw0C,cACrB,CAAA,IAAI,CAACt0C,QAAQ,CAAGu6C,kBAChB,CAAA,IAAI,CAACnoE,MAAM,CAAGooE,UAChB,CAKF,CACAn7C,SAAUC,CAAAA,eAAe,CAACg1C,cAAAA,CAAevwL,SAAS,CAAEy2L,SAEpD,CAAA,CAAA,MAAME,6BAA6Br7C,SACjC,CAAA,IAAIs7C,QAASthT,CAAAA,KAAK,CAAE,CAClB,GAAIA,KAAAA,GAAU,IAAI,CAACuhT,SAAS,CAAE,CAC5B,IAAI,CAACA,SAAS,CAAGvhT,KAAAA,CACjB,IAAI,CAACuB,IAAI,CAAC,QAAA,EACZ,CACF,CACA,IAAI+/S,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,SAAUxhT,CAAAA,KAAK,CAAE,CACnB,GAAIA,KAAU,GAAA,IAAI,CAACyhT,UAAU,CAAE,CAC7B,IAAI,CAACA,UAAU,CAAGzhT,KAAAA,CAClB,IAAI,CAACuB,IAAI,CAAC,QAAA,EACZ,CACF,CACA,IAAIigT,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,QAAS1hT,CAAAA,KAAK,CAAE,CAClB,GAAIA,KAAAA,GAAU,IAAI,CAAC2hT,SAAS,CAAE,CAC5B,IAAI,CAACA,SAAS,CAAG3hT,MACjB,IAAI,CAACuB,IAAI,CAAC,UACZ,CACF,CACA,IAAImgT,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,SAAAA,CAAU5hT,KAAK,CAAE,CACnB,GAAIA,KAAAA,GAAU,IAAI,CAAC6hT,UAAU,CAAE,CAC7B,IAAI,CAACA,UAAU,CAAG7hT,KAAAA,CAClB,IAAI,CAACuB,IAAI,CAAC,UACZ,CACF,CACA,IAAIqgT,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,kBAAmB9hT,CAAAA,KAAK,CAAE,CAC5B,GAAIA,KAAAA,GAAU,IAAI,CAAC+hT,mBAAmB,CAAE,CACtC,IAAI,CAACA,mBAAmB,CAAG/hT,KAAAA,CAC3B,IAAI,CAACuB,IAAI,CAAC,QAAA,EACZ,CACF,CACA,IAAIugT,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACC,mBAAmB,CAEjC,IAAIC,mBAAoBhiT,CAAAA,KAAK,CAAE,CAC7B,GAAIA,KAAU,GAAA,IAAI,CAACiiT,oBAAoB,CAAE,CACvC,IAAI,CAACA,oBAAoB,CAAGjiT,KAAAA,CAC5B,IAAI,CAACuB,IAAI,CAAC,QAAA,EACZ,CACF,CACA,IAAIygT,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACC,oBAAoB,CAElC,IAAIC,iBAAkBliT,CAAAA,KAAK,CAAE,CAC3B,GAAIA,KAAU,GAAA,IAAI,CAACmiT,kBAAkB,CAAE,CACrC,IAAI,CAACA,kBAAkB,CAAGniT,KAAAA,CAC1B,IAAI,CAACuB,IAAI,CAAC,QAAA,EACZ,CACF,CACA,IAAI2gT,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACC,kBAAkB,CAEhC/hT,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,MAAO,IAAI,CAACkjT,SAAS,CAAG,EAAG,IAAI,CAACE,UAAU,CAAG,CAAG,CAAA,IAAI,CAACE,SAAS,CAAG,IAAM,CAAA,IAAI,CAACE,UAAU,CAAG,IAAM,CAAA,IAAI,CAACE,mBAAmB,CAAG,CAAG,CAAA,IAAI,CAACE,oBAAoB,CAAG,CAAA,CAAG,IAAI,CAACE,kBAAkB,CAAG,MACjM,CACF,CAEA,MAAMC,wBACJhiT,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMm3S,SAAY,CAAA,CAChB,UACD,CACD,MAAMC,0BAAmC97C,SAAAA,eAAAA,CAQvCI,wBAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,GAAInqI,IAAAA,CAAKnH,OAAO,GAAK/K,SAAWs5O,CAAAA,SAAAA,CAAUvuO,OAAO,CAAGmH,IAAAA,CAAKnH,OAAO,CAChE,GAAImH,IAAKivS,CAAAA,QAAQ,GAAKnhT,SAAAA,CAAWs5O,UAAU6nE,QAAQ,CAAGjvS,IAAKivS,CAAAA,QAAQ,CACnE,GAAIjvS,IAAKmvS,CAAAA,SAAS,GAAKrhT,SAAWs5O,CAAAA,SAAAA,CAAU+nE,SAAS,CAAGnvS,KAAKmvS,SAAS,CACtE,GAAInvS,IAAAA,CAAKqvS,QAAQ,GAAKvhT,SAAAA,CAAWs5O,SAAUioE,CAAAA,QAAQ,CAAGrvS,IAAAA,CAAKqvS,QAAQ,CACnE,GAAIrvS,IAAKuvS,CAAAA,SAAS,GAAKzhT,SAAAA,CAAWs5O,UAAUmoE,SAAS,CAAGvvS,IAAKuvS,CAAAA,SAAS,CACtE,GAAIvvS,IAAAA,CAAKyvS,kBAAkB,GAAK3hT,SAAWs5O,CAAAA,SAAAA,CAAUqoE,kBAAkB,CAAGzvS,KAAKyvS,kBAAkB,CACjG,GAAIzvS,IAAAA,CAAK2vS,mBAAmB,GAAK7hT,SAAWs5O,CAAAA,SAAAA,CAAUuoE,mBAAmB,CAAG3vS,IAAAA,CAAK2vS,mBAAmB,CACpG,GAAI3vS,IAAAA,CAAK6vS,iBAAiB,GAAK/hT,UAAWs5O,SAAUyoE,CAAAA,iBAAiB,CAAG7vS,IAAAA,CAAK6vS,iBAAiB,CAC9F,KAAK,CAACt7C,uBAAAA,CAAwBntB,UAAWpnO,IAAMmqI,CAAAA,UAAAA,EACjD,CACA2/F,cAAAA,CAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAM40S,WAAAA,CAActjL,MAAOujL,CAAAA,WAAW,CACtC,OAAO,IAAI,CAAC3nE,YAAY,CAACltO,KAAO,CAAA,CAC9BzC,OAASq3S,CAAAA,WAAAA,CAAYr3S,OAAO,CAC5Bo2S,QAAUiB,CAAAA,WAAAA,CAAYjB,QAAQ,CAC9BE,SAAAA,CAAWe,WAAYf,CAAAA,SAAS,CAChCE,QAAUa,CAAAA,WAAAA,CAAYb,QAAQ,CAC9BE,UAAWW,WAAYX,CAAAA,SAAS,CAChCE,kBAAAA,CAAoBS,WAAYT,CAAAA,kBAAkB,CAClDE,mBAAAA,CAAqBO,YAAYP,mBAAmB,CACpDE,iBAAmBK,CAAAA,WAAAA,CAAYL,iBAAiB,CAClD,CACF,CA9BA9hT,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GACN,CAAA,CAAA,IAAI,CAAChmM,EAAE,CAAG,aACV,CAAA,IAAI,CAACokO,aAAa,CAAG46C,oBACrB,CAAA,IAAI,CAAC16C,QAAQ,CAAGy7C,wBAChB,CAAA,IAAI,CAACrpE,MAAM,CAAGspE,UAChB,CAyBF,CACAr8C,SAAAA,CAAUC,eAAe,CAACo7C,oBAAAA,CAAqB32L,SAAS,CAAE23L,WAE1D,MAAMI,YAAAA,CAAe,CACrB,CAAA,MAAMC,eAAkB,CAAA,CAAA,CACxB,MAAMC,cAAAA,CAAiB,EACvB,MAAMC,YAAAA,CAAe,CAErB,CAAA,MAAMC,cAAgB,EACtBA,CAAAA,aAAa,CAAChsL,sBAAuB,CAAA,CAAG,CACtCn5G,IAAAA,CAAM,GACNngB,CAAAA,IAAAA,CAAM,OACNulT,CAAAA,cAAAA,CAAgB,kBAChBC,OAAS,CAAA,UAAA,CACTC,OAAS,CAAA,UAAA,CACTC,OAAS,CAAA,cAAA,CACTC,iBAAmB,CAAA,oBACrB,CACAL,CAAAA,aAAa,CAAC/rL,oBAAAA,CAAqB,CAAG,CACpCp5G,IAAM,CAAA,GAAA,CACNngB,KAAM,QACNulT,CAAAA,cAAAA,CAAgB,kBAChBC,CAAAA,OAAAA,CAAS,YACTC,OAAS,CAAA,WAAA,CACTC,OAAS,CAAA,eAAA,CACTC,kBAAmB,qBACrB,CAAA,CACA,MAAMC,oBAAAA,CAAuB,EAC7BA,CAAAA,oBAAoB,CAACtsL,sBAAuB,CAAA,CAAGC,oBAC/CqsL,CAAAA,oBAAoB,CAACrsL,oBAAAA,CAAqB,CAAGD,sBAAAA,CAC7C,MAAMusL,iBAAoB,CAAA,CACxB9B,QAAU,CAAA,CAAA,CACVE,SAAW,CAAA,CAAA,CACXE,QAAUv/R,CAAAA,MAAAA,CAAO0uH,iBAAiB,CAClC+wK,SAAAA,CAAWz/R,MAAO0uH,CAAAA,iBAAiB,CACnC7yH,KAAO,CAAA,IAAA,CACPC,MAAQ,CAAA,IAAA,CACR6jS,mBAAoB,CACpBE,CAAAA,mBAAAA,CAAqB,CACvB,CAAA,CACA,MAAMqB,cAAAA,CAAiB,CACrBvxN,IAAAA,CAAM,OACNwxN,gBAAkB,CAAA,kBAAA,CAClBC,eAAiB,CAAA,iBACnB,CACA,CAAA,MAAMC,cAAiB,CAAA,IAAItpS,KAC3B,SAASupS,gBAAAA,CAAiBvgM,WAAW,CAAA,CACnC,IAAIp5G,OAAAA,CACJ,MAAM7B,CAAAA,CAAI46S,aAAa,CAAC3/L,WAAAA,CAAY,CACpC,MAAMh7G,EAAI26S,aAAa,CAACM,oBAAoB,CAACjgM,YAAY,CAAC,CAC1D,SAASwgM,UAAAA,CAAW1vQ,OAAO,CAAEz2C,IAAI,CAAA,CAC/B,OAAO,CAACA,IAAI,CAAC0K,CAAAA,CAAE1K,IAAI,CAAC,CAAGy2C,OAAQwjK,CAAAA,KAAK,CAACvvM,CAAEyV,CAAAA,IAAI,CAC7C,CACA,SAASimS,UAAW3vQ,CAAAA,OAAO,CAAEz2C,IAAI,CAAA,CAC/B,OAAO,CAACA,IAAI,CAAC2K,CAAAA,CAAE3K,IAAI,CAAC,CAAGy2C,OAAQwjK,CAAAA,KAAK,CAACtvM,CAAAA,CAAEwV,IAAI,CAAC,CAE9C,SAASkmS,UAAW5vQ,CAAAA,OAAO,CAAEz2C,IAAI,CAC/B,CAAA,OAAOA,IAAI,CAAC0K,EAAE1K,IAAI,CAAC,EAAI,CAAIy2C,CAAAA,OAAAA,CAAQwjK,KAAK,CAACvvM,EAAEyV,IAAI,CAAC,CAClD,CACA,SAASmmS,YAAAA,CAAaC,WAAW,CAAEC,aAAa,CAC9CD,CAAAA,WAAAA,CAAcA,WAAY9vN,CAAAA,MAAM,CAACgwN,qBAAAA,CAAAA,CACjCl6S,OAAUi6S,CAAAA,aACVP,CAAAA,cAAe92S,CAAAA,CAAC,CAAG5C,OAAAA,CAAQm6S,aAAa,CAACv3S,CAAC,CAAG5C,OAAAA,CAAQo6S,OAAO,CAACx3S,CAAC,CAAG5C,OAAAA,CAAQo6S,OAAO,CAAC3vS,CACjFivS,CAAAA,cAAepvS,CAAAA,CAAC,CAAGtK,OAAAA,CAAQm6S,aAAa,CAAC7vS,CAAC,CAAGtK,OAAAA,CAAQo6S,OAAO,CAAC9vS,CAAC,CAAGtK,OAAAA,CAAQo6S,OAAO,CAACtsS,CAAC,CAClFusS,aAAaL,WACb,CAAA,CAAA,MAAM5jP,KAAQkkP,CAAAA,sBAAAA,CAAuBC,WAAWP,WAChD,CAAA,CAAA,CAAA,MAAMxpF,KAAQgqF,CAAAA,qBAAAA,CAAsBpkP,MAAOqkP,qBAAsBrkP,CAAAA,KAAAA,CAAAA,CAAAA,CACjE,MAAM5qB,SAAAA,CAAYkvQ,sBAAuBtkP,CAAAA,KAAAA,CAAOo6J,KAChDmqF,CAAAA,CAAAA,wBAAAA,CAAyBvkP,MAAOo6J,KAAOhlL,CAAAA,SAAAA,CAAAA,CACvCovQ,sBAAuBxkP,CAAAA,KAAAA,CAAOo6J,MAAOhlL,SACrC,CAAA,CAAA,OAAOqvQ,gBAAiBzkP,CAAAA,KAAAA,CAC1B,CACA,SAAS8jP,qBAAAA,CAAsBhwQ,OAAO,CAAA,CACpC,MAAM4wQ,oBAAAA,CAAuB5wQ,OAAQirF,CAAAA,MAAM,CAACujL,WAAW,CACvD,OAAO,CAACoC,sBAAwB,CAACA,oBAAAA,CAAqB15S,OAAO,EAAI,CAAC05S,oBAAqB1C,CAAAA,iBAAiB,CAE1G,SAASiC,YAAAA,CAAaL,WAAW,CAAA,CAC/B,IAAI,IAAIzrT,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIyrT,YAAYxrT,MAAM,CAAE,EAAED,CAAAA,CAAE,CACzC,MAAM27C,OAAAA,CAAU8vQ,WAAW,CAACzrT,CAAE,CAAA,CAC9B,MAAMwzS,MAAAA,CAAS73P,QAAQ63P,MAAM,CAC7B,GAAIA,MAAAA,CAAOn/R,CAAC,GAAK,CAAKm/R,EAAAA,MAAAA,CAAOz3R,CAAC,GAAK,CAAA,EAAKy3R,MAAOt3R,CAAAA,CAAC,GAAK,CAAA,EAAKs3R,MAAOj0R,CAAAA,CAAC,GAAK,CAAG,CAAA,CACxEo8B,OAAQ63P,CAAAA,MAAM,CAAGrxR,IAAKpE,CAAAA,KAAI,CAE9B,CACF,CACA,SAASiuS,UAAWP,CAAAA,WAAW,CAC7B,CAAA,GAAI,CAACh6S,OAAAA,CAAQgmL,IAAI,CAAE,CACjB,OAAO,CACLg0H,YACD,CAEH,MAAM5jP,KAAAA,CAAQ,CACZ,EAAE,CACH,CACD,MAAMo6J,KAAQuqF,CAAAA,wBAAAA,CAAyBf,WACvC,CAAA,CAAA,IAAIgB,YAAc,CAClB,CAAA,MAAMC,YAAej7S,CAAAA,OAAO,CAAC7B,CAAEg7S,CAAAA,OAAO,CAAC,GAAKN,eAC5C,IAAI,IAAItqT,CAAI,CAAA,CAAA,CAAGA,CAAIyrT,CAAAA,WAAAA,CAAYxrT,MAAM,CAAE,EAAED,CAAE,CAAA,CACzC,GAAI6nE,KAAK,CAACA,KAAM5nE,CAAAA,MAAM,CAAG,CAAA,CAAE,CAACA,MAAM,CAAG,CAAG,CAAA,CACtCwsT,WAAeh7S,EAAAA,OAAAA,CAAQ6J,OAAO,CAAC1L,EAAEyV,IAAI,EAAC,CAExC,MAAMsnS,gBAAmB1qF,CAAAA,KAAK,CAACjiO,CAAAA,CAAE,CAAC4P,CAAE1K,CAAAA,IAAI,CAAC,CACzCunT,WAAeE,EAAAA,gBAAAA,CACf,GAAI,CAACD,cAAgBD,WAActB,CAAAA,cAAc,CAACv7S,CAAAA,CAAEyV,IAAI,CAAC,EAAIwiD,KAAK,CAACA,MAAM5nE,MAAM,CAAG,CAAE,CAAA,CAACA,MAAM,GAAK,CAAG,CAAA,CACjGwsT,YAAcE,gBACd9kP,CAAAA,KAAAA,CAAM/mE,IAAI,CAAC,EAAE,EACf,CACA+mE,KAAK,CAACA,MAAM5nE,MAAM,CAAG,CAAE,CAAA,CAACa,IAAI,CAAC2qT,WAAW,CAACzrT,EAAE,CAC3C,CAAA,GAAI0sT,YAAgBD,EAAAA,WAAAA,CAActB,cAAc,CAACv7S,CAAEyV,CAAAA,IAAI,CAAC,EAAIrlB,CAAAA,GAAMyrT,WAAYxrT,CAAAA,MAAM,CAAG,CAAA,CAAG,CACxFwsT,WAAAA,CAAc,EACd5kP,KAAM/mE,CAAAA,IAAI,CAAC,EAAE,EACf,CACF,CACA,OAAO+mE,KACT,CACA,SAASkkP,sBAAAA,CAAuBlkP,KAAK,CAAA,CACnC,MAAM+kP,YAAAA,CAAen7S,OAAQo5G,CAAAA,WAAW,GAAK2T,sBAA0B/sH,EAAAA,OAAAA,CAAQo7S,QAAQ,EAAIp7S,QAAQo5G,WAAW,GAAK4T,oBAAwBhtH,EAAAA,OAAAA,CAAQq7S,QAAQ,CAC3J,MAAMC,YAAet7S,CAAAA,OAAAA,CAAQo5G,WAAW,GAAK2T,sBAA0B/sH,EAAAA,OAAAA,CAAQq7S,QAAQ,EAAIr7S,OAAAA,CAAQo5G,WAAW,GAAK4T,sBAAwBhtH,OAAQo7S,CAAAA,QAAQ,CAC3J,GAAID,aAAc,CAChB,IAAI,IAAII,SAAAA,CAAY,CAAGA,CAAAA,SAAAA,CAAYnlP,KAAM5nE,CAAAA,MAAM,CAAE,EAAE+sT,SAAAA,CAAU,CAC3D,GAAIJ,aAAc,CAChB/kP,KAAK,CAACmlP,SAAAA,CAAU,CAACC,OAAO,GAC1B,CACF,CACF,CACA,GAAIF,YAAc,CAAA,CAChBllP,MAAMolP,OAAO,GACf,CACA,OAAOplP,KACT,CACA,SAASqkP,qBAAsBrkP,CAAAA,KAAK,EAClC,MAAMqlP,aAAAA,CAAgB,EAAE,CACxB,IAAI,IAAIF,SAAY,CAAA,CAAA,CAAGA,UAAYnlP,KAAM5nE,CAAAA,MAAM,CAAE,EAAE+sT,UAAU,CAC3D,MAAMr2P,IAAOkR,CAAAA,KAAK,CAACmlP,SAAU,CAAA,CAC7B,MAAMG,aAAAA,CAAgBX,wBAAyB71P,CAAAA,IAAAA,CAAAA,CAC/C,MAAMy2P,kBAAAA,CAAqBC,oBAAoBF,aAAev9S,CAAAA,CAAAA,CAAAA,CAC9D,MAAM09S,aAAAA,CAAgBC,uBAAuB97S,OAAO,CAAC7B,CAAEg7S,CAAAA,OAAO,CAAC,CAAEwC,kBAAAA,CAAoBjC,cAAc,CAACv7S,CAAEyV,CAAAA,IAAI,CAAC,CAAA,CAC3G,GAAIioS,aAAkBtC,GAAAA,cAAAA,CAAeC,gBAAgB,CAAE,CACrDuC,0BAAAA,CAA2BL,aAAeC,CAAAA,kBAAAA,CAAoBx9S,GAChE,CAAO,KAAA,GAAI09S,aAAkBtC,GAAAA,cAAAA,CAAeE,eAAe,CAAE,CAC3DuC,yBAAAA,CAA0BN,cAAeC,kBAAoBx9S,CAAAA,CAAAA,EAC/D,CACAs9S,aAAAA,CAAcpsT,IAAI,CAACqsT,aAAAA,EACrB,CACA,OAAOD,aACT,CACA,SAASjB,qBAAsBpkP,CAAAA,KAAK,CAAEqlP,aAAa,CACjD,CAAA,MAAMQ,2BAA6B,EAAE,CACrC,MAAMC,uBAAAA,CAA0B,EAAE,CAClC,IAAI,IAAIX,SAAAA,CAAY,EAAGA,SAAYnlP,CAAAA,KAAAA,CAAM5nE,MAAM,CAAE,EAAE+sT,SAAAA,CAAU,CAC3D,MAAMr2P,KAAOkR,KAAK,CAACmlP,SAAU,CAC7Br2P,CAAAA,IAAKi3P,CAAAA,cAAc,CAAG,IACtBj3P,CAAAA,IAAKk3P,CAAAA,WAAW,CAAG,CACjBloS,KAAOmE,CAAAA,MAAAA,CAAOgkS,iBAAiB,CAC/BloS,OAAQkE,MAAOgkS,CAAAA,iBAAiB,CAClC,CACA,IAAI,IAAIC,YAAAA,CAAe,CAAGA,CAAAA,YAAAA,CAAep3P,KAAK12D,MAAM,CAAE,EAAE8tT,YAAAA,CAAa,CACnE,MAAMC,gBAAmBd,CAAAA,aAAa,CAACF,SAAU,CAAA,CAACe,YAAa,CAAA,CAC/D,GAAIC,gBAAgB,CAACn+S,CAAE3K,CAAAA,IAAI,CAAC,CAAGyxD,IAAAA,CAAKk3P,WAAW,CAACh+S,CAAE3K,CAAAA,IAAI,CAAC,CAAE,CACvDyxD,IAAKi3P,CAAAA,cAAc,CAAGj3P,IAAI,CAACo3P,YAAa,CACxCp3P,CAAAA,IAAAA,CAAKk3P,WAAW,CAAGG,iBACrB,CACF,CACAN,0BAA2B5sT,CAAAA,IAAI,CAAC61D,IAAAA,CAAKi3P,cAAc,CACnDD,CAAAA,uBAAAA,CAAwB7sT,IAAI,CAAC61D,KAAKk3P,WAAW,EAC/C,CACA,MAAMT,mBAAqBC,mBAAoBM,CAAAA,uBAAAA,CAAyB99S,CACxE,CAAA,CAAA,MAAMy9S,aAAgBC,CAAAA,sBAAAA,CAAuB97S,OAAO,CAAC5B,EAAE+6S,OAAO,CAAC,CAAEwC,kBAAAA,CAAoBjC,cAAc,CAACt7S,CAAEwV,CAAAA,IAAI,CAAC,CAC3G,CAAA,GAAIioS,aAAkBtC,GAAAA,cAAAA,CAAeC,gBAAgB,CAAE,CACrDuC,0BAAAA,CAA2BG,wBAAyBP,kBAAoBv9S,CAAAA,CAAAA,EAC1E,CAAO,KAAA,GAAIy9S,gBAAkBtC,cAAeE,CAAAA,eAAe,CAAE,CAC3DuC,0BAA0BE,uBAAyBP,CAAAA,kBAAAA,CAAoBv9S,CACzE,EAAA,CACA,IAAI,IAAIm9S,SAAY,CAAA,CAAA,CAAGA,UAAYnlP,KAAM5nE,CAAAA,MAAM,CAAE,EAAE+sT,UAAU,CAC3D,MAAMr2P,IAAOkR,CAAAA,KAAK,CAACmlP,SAAU,CAAA,CAC7B,IAAI,IAAIe,YAAe,CAAA,CAAA,CAAGA,YAAep3P,CAAAA,IAAAA,CAAK12D,MAAM,CAAE,EAAE8tT,YAAa,CAAA,CACnE,MAAME,mBAAsBf,CAAAA,aAAa,CAACF,SAAAA,CAAU,CAACe,YAAa,CAAA,CAClE,MAAMG,WAAAA,CAAcD,mBAAmB,CAACp+S,CAAE3K,CAAAA,IAAI,CAAC,CAC/C,MAAMipT,aAAgBtmP,CAAAA,KAAAA,CAAM5nE,MAAM,GAAK,CAAA,CAAIkrT,cAAc,CAACt7S,EAAEwV,IAAI,CAAC,CAAGsxC,IAAAA,CAAKk3P,WAAW,CAACh+S,CAAE3K,CAAAA,IAAI,CAAC,CAC5F,MAAMkpT,oBAAuBb,CAAAA,sBAAAA,CAAuB97S,OAAO,CAAC5B,CAAAA,CAAE+6S,OAAO,CAAC,CAAEsD,WAAaC,CAAAA,aAAAA,CAAAA,CACrF,GAAIC,oBAAAA,GAAyBpD,cAAeC,CAAAA,gBAAgB,CAAE,CAC5DgD,mBAAmB,CAACp+S,CAAAA,CAAE3K,IAAI,CAAC,CAAG3F,IAAKmU,CAAAA,GAAG,CAACy6S,aAAAA,CAAeF,mBAAmB,CAACp+S,CAAAA,CAAE86S,OAAO,CAAC,EACtF,CAAA,KAAO,GAAIyD,oBAAAA,GAAyBpD,eAAeE,eAAe,CAAE,CAClE+C,mBAAmB,CAACp+S,CAAE3K,CAAAA,IAAI,CAAC,CAAG3F,KAAKoU,GAAG,CAACw6S,aAAeF,CAAAA,mBAAmB,CAACp+S,CAAAA,CAAE66S,OAAO,CAAC,EACtF,CACF,CACF,CACA,OAAOwC,aACT,CACA,SAASK,sBAAAA,CAAuBc,WAAW,CAAEH,WAAW,CAAEC,aAAa,CACrE,CAAA,OAAOE,WACL,EAAA,KAAKjE,aACH,OAAOY,cAAAA,CAAevxN,IACxB,MAAK4wN,eACH,CAAA,GAAI6D,WAAcC,CAAAA,aAAAA,CAAe,CAC/B,OAAOnD,cAAAA,CAAeC,gBACxB,CACA,OAAOD,cAAevxN,CAAAA,IAAI,CACvB6wN,KAAAA,cAAAA,CACH,GAAI4D,WAAAA,EAAeC,cAAe,CAChC,OAAOnD,cAAeE,CAAAA,eAAe,CAEvC,OAAOF,cAAevxN,CAAAA,IAAI,CAC5B,KAAK8wN,YACH,CAAA,GAAI2D,YAAcC,aAAe,CAAA,CAC/B,OAAOnD,cAAAA,CAAeC,gBAAgB,CAExC,OAAOD,cAAAA,CAAeE,eAAe,CACvC,QACE,MAAM,IAAIhhT,KAAM,CAAA,CAAC,2BAA2B,EAAEmkT,YAAY,CAAC,CAC/D,CACF,CACA,SAAShB,mBAAoBprF,CAAAA,KAAK,CAAE58M,IAAI,EACtC,MAAMipS,UAAAA,CAAaC,SAAUtsF,CAAAA,KAAAA,CAAO58M,IAAKngB,CAAAA,IAAI,CAC7C,CAAA,MAAMspT,aAAe,CAACvsF,KAAMhiO,CAAAA,MAAM,CAAG,CAAA,EAAKwR,OAAQ6J,CAAAA,OAAO,CAAC+J,IAAKA,CAAAA,IAAI,CAAC,CACpE,OAAOipS,UAAAA,CAAaE,YACtB,CACA,SAAShB,0BAA2BL,CAAAA,aAAa,CAAEC,kBAAkB,CAAE/nS,IAAI,CAAA,CACzE,MAAMopS,qBAAAA,CAAwBC,kBAAkBvB,aAAe9nS,CAAAA,IAAAA,CAAKslS,OAAO,CAAA,CAC3E,MAAMgE,kBAAAA,CAAqBC,mBAAoBzB,CAAAA,aAAAA,CAAe9nS,KAAKwlS,iBAAiB,CAAA,CACpF,MAAMgE,qBAAAA,CAAwBC,eAAeH,kBAAoBF,CAAAA,qBAAAA,CAAAA,CACjE,IAAIM,mBAAAA,CAAsB5D,cAAc,CAAC9lS,IAAAA,CAAKA,IAAI,CAAC,CAAG+nS,kBAAAA,CACtD,IAAI,IAAIptT,EAAI,CAAGA,CAAAA,CAAAA,CAAImtT,aAAcltT,CAAAA,MAAM,CAAE,EAAED,CAAE,CAAA,CAC3C,MAAM6F,KAAQ4oT,CAAAA,qBAAqB,CAACzuT,CAAAA,CAAE,CACtC,MAAMgvT,cAAiBC,CAAAA,mBAAAA,CAAoBppT,MAAOkpT,mBAAqBJ,CAAAA,kBAAAA,CAAoBE,qBAC3F,CAAA,CAAA,MAAMK,WAAa/B,aAAa,CAACtnT,KAAM,CAAA,CAACwf,KAAKngB,IAAI,CAAC,CAAG8pT,cAAAA,CACrD,MAAMrE,OAAAA,CAAUwC,aAAa,CAACtnT,MAAM,CAACwf,IAAAA,CAAKslS,OAAO,CAAC,CAClD,MAAMwE,UAAAA,CAAa5vT,IAAKmU,CAAAA,GAAG,CAACw7S,UAAYvE,CAAAA,OAAAA,CACxCwC,CAAAA,aAAa,CAACtnT,KAAAA,CAAM,CAACwf,IAAAA,CAAKngB,IAAI,CAAC,CAAGiqT,UAClC,CAAA,MAAMC,eAAiB7vT,IAAKoU,CAAAA,GAAG,CAACu7S,UAAAA,CAAaC,WAAY,CACzD,CAAA,CAAA,MAAME,eAAkBL,CAAAA,cAAAA,CAAiBI,cACzCL,CAAAA,mBAAAA,EAAuBM,gBACzB,CACF,CACA,SAAS5B,yBAAAA,CAA0BN,aAAa,CAAEC,kBAAkB,CAAE/nS,IAAI,CACxE,CAAA,MAAMiqS,uBAAyBZ,iBAAkBvB,CAAAA,aAAAA,CAAe9nS,IAAKqlS,CAAAA,OAAO,CAAE,IAAA,CAAA,CAC9E,MAAMiE,kBAAAA,CAAqBC,oBAAoBzB,aAAe9nS,CAAAA,IAAAA,CAAKwlS,iBAAiB,CAAA,CACpF,MAAM0E,yBAA4BC,CAAAA,sBAAAA,CAAuBb,kBACzD,CAAA,CAAA,MAAMc,6BAA+BX,cAAeS,CAAAA,yBAAAA,CAA2BD,sBAC/E,CAAA,CAAA,IAAII,kBAAqBtC,CAAAA,kBAAAA,CAAqBjC,cAAc,CAAC9lS,KAAKA,IAAI,CAAC,CACvE,IAAI,IAAIrlB,CAAI,CAAA,CAAA,CAAGA,CAAImtT,CAAAA,aAAAA,CAAcltT,MAAM,CAAE,EAAED,CAAE,CAAA,CAC3C,MAAM6F,KAAAA,CAAQypT,sBAAsB,CAACtvT,EAAE,CACvC,MAAM2vT,eAAkBV,CAAAA,mBAAAA,CAAoBppT,MAAO6pT,kBAAoBH,CAAAA,yBAAAA,CAA2BE,4BAClG,CAAA,CAAA,MAAMP,WAAa/B,aAAa,CAACtnT,KAAM,CAAA,CAACwf,IAAKngB,CAAAA,IAAI,CAAC,CAAGyqT,gBACrD,MAAMjF,OAAAA,CAAUyC,aAAa,CAACtnT,KAAM,CAAA,CAACwf,IAAKqlS,CAAAA,OAAO,CAAC,CAClD,MAAMyE,UAAa5vT,CAAAA,IAAAA,CAAKoU,GAAG,CAACu7S,UAAYxE,CAAAA,OAAAA,CACxCyC,CAAAA,aAAa,CAACtnT,KAAM,CAAA,CAACwf,KAAKngB,IAAI,CAAC,CAAGiqT,UAAAA,CAClC,MAAMS,eAAkBrwT,CAAAA,IAAAA,CAAKoU,GAAG,CAACw7S,UAAaD,CAAAA,UAAAA,CAAY,CAC1D,CAAA,CAAA,MAAMW,iBAAmBF,eAAkBC,CAAAA,eAAAA,CAC3CF,kBAAsBG,EAAAA,iBACxB,CACF,CACA,SAASZ,mBAAoBppT,CAAAA,KAAK,CAAEiqT,mBAAmB,CAAEnB,kBAAkB,CAAEE,qBAAqB,CAAA,CAChG,MAAMkB,UAAAA,CAAapB,kBAAkB,CAAC9oT,KAAAA,CAAM,CAC5C,MAAMmqT,0BAA4BnB,qBAAqB,CAAChpT,KAAM,CAAA,CAC9D,GAAItG,IAAKma,CAAAA,GAAG,CAACq2S,UAAAA,CAAAA,CAAc,IAAQxwT,EAAAA,IAAAA,CAAKma,GAAG,CAACs2S,2BAA6B,IAAM,CAAA,CAC7E,OAAOF,mBACT,CACA,OAAOA,mBAAsBC,CAAAA,UAAAA,CAAaC,yBAC5C,CACA,SAAS7D,sBAAuBtkP,CAAAA,KAAK,CAAEo6J,KAAK,CAC1C,CAAA,MAAMguF,OAAS,EACfA,CAAAA,MAAM,CAACrgT,CAAEyV,CAAAA,IAAI,CAAC,CAAG,CACjB4qS,CAAAA,MAAM,CAACpgT,CAAAA,CAAEwV,IAAI,CAAC,CAAG,CACjBwiD,CAAAA,KAAK,CAACj4D,CAAE1K,CAAAA,IAAI,CAAC,CAAG4kB,MAAAA,CAAOgkS,iBAAiB,CACxC,MAAMoC,iBAAoB,CAAA,EAAE,CAC5B,IAAI,IAAIlD,SAAAA,CAAY,CAAGA,CAAAA,SAAAA,CAAYnlP,MAAM5nE,MAAM,CAAE,EAAE+sT,SAAAA,CAAU,CAC3D,MAAMr2P,IAAAA,CAAOkR,KAAK,CAACmlP,UAAU,CAC7B,GAAIr2P,IAAK12D,CAAAA,MAAM,GAAK,CAAA,CAAG,CACrBiwT,iBAAAA,CAAkBpvT,IAAI,CAAC,EAAE,CACzB,CAAA,QACF,CACA,MAAMqvT,iBAAoB,CAAA,EAAE,CAC5B,MAAMhD,aAAAA,CAAgBlrF,KAAK,CAAC+qF,SAAU,CAAA,CACtC,IAAI,IAAIe,aAAe,CAAGA,CAAAA,YAAAA,CAAep3P,IAAK12D,CAAAA,MAAM,CAAE,EAAE8tT,YAAAA,CAAa,CACnE,MAAMpyQ,QAAUgb,IAAI,CAACo3P,YAAa,CAAA,CAClC,MAAMC,gBAAAA,CAAmBb,aAAa,CAACY,aAAa,CACpDkC,MAAM,CAACpgT,EAAEwV,IAAI,CAAC,EAAIimS,UAAAA,CAAW3vQ,QAASqyQ,gBACtCiC,CAAAA,CAAAA,MAAM,CAACrgT,CAAEyV,CAAAA,IAAI,CAAC,EAAIgmS,WAAW1vQ,OAASqyQ,CAAAA,gBAAAA,CACtCmC,CAAAA,iBAAiB,CAACpC,YAAa,CAAA,CAAG,EAClCoC,CAAAA,iBAAiB,CAACpC,YAAa,CAAA,CAACn+S,CAAEyV,CAAAA,IAAI,CAAC,CAAG4qS,MAAM,CAACrgT,CAAAA,CAAEyV,IAAI,CAAC,CACxD8qS,iBAAiB,CAACpC,YAAAA,CAAa,CAACl+S,CAAEwV,CAAAA,IAAI,CAAC,CAAG4qS,MAAM,CAACpgT,CAAEwV,CAAAA,IAAI,CAAC,CACxD4qS,MAAM,CAACpgT,EAAEwV,IAAI,CAAC,EAAIimS,UAAAA,CAAW3vQ,QAASqyQ,gBACtCiC,CAAAA,CAAAA,MAAM,CAACrgT,CAAEyV,CAAAA,IAAI,CAAC,EAAIkmS,WAAW5vQ,OAASqyQ,CAAAA,gBAAAA,CAAAA,CAAoBv8S,OAAQ6J,CAAAA,OAAO,CAAC1L,CAAEyV,CAAAA,IAAI,EAClF,CACAsxC,IAAI,CAAC/mD,CAAE1K,CAAAA,IAAI,CAAC,CAAG+qT,MAAM,CAACrgT,EAAEyV,IAAI,CAAC,CAAG5T,OAAAA,CAAQ6J,OAAO,CAAC1L,CAAAA,CAAEyV,IAAI,CAAC,CACvDsxC,IAAI,CAAC9mD,CAAAA,CAAE3K,IAAI,CAAC,CAAGyxD,IAAAA,CAAKk3P,WAAW,CAACh+S,CAAAA,CAAE3K,IAAI,CAAC,CACvC2iE,KAAK,CAACj4D,EAAE1K,IAAI,CAAC,CAAG3F,IAAAA,CAAKoU,GAAG,CAACk0D,KAAK,CAACj4D,EAAE1K,IAAI,CAAC,CAAEyxD,IAAI,CAAC/mD,CAAE1K,CAAAA,IAAI,CAAC,CACpD+qT,CAAAA,MAAM,CAACrgT,CAAEyV,CAAAA,IAAI,CAAC,CAAG,CACjB4qS,CAAAA,MAAM,CAACpgT,CAAAA,CAAEwV,IAAI,CAAC,EAAIsxC,IAAI,CAAC9mD,CAAE3K,CAAAA,IAAI,CAAC,CAAGuM,OAAAA,CAAQ6J,OAAO,CAACzL,CAAEwV,CAAAA,IAAI,CAAC,CACxD6qS,kBAAkBpvT,IAAI,CAACqvT,iBACzB,EAAA,CACAtoP,KAAK,CAACh4D,CAAAA,CAAE3K,IAAI,CAAC,CAAG+qT,MAAM,CAACpgT,CAAEwV,CAAAA,IAAI,CAAC,CAAG5T,OAAQ6J,CAAAA,OAAO,CAACzL,CAAEwV,CAAAA,IAAI,CAAC,CACxD,OAAO6qS,iBACT,CACA,SAAS9D,wBAAAA,CAAyBvkP,KAAK,CAAEo6J,KAAK,CAAEhlL,SAAS,CACvD,CAAA,MAAMmzQ,UAAa3+S,CAAAA,OAAAA,CAAQmjD,SAAS,CAAChlD,CAAAA,CAAEyV,IAAI,CAAC,CAC5C,MAAMgrS,UAAAA,CAAa5+S,OAAQmjD,CAAAA,SAAS,CAAC/kD,CAAEwV,CAAAA,IAAI,CAAC,CAC5C,MAAMirS,QAAAA,CAAW7+S,OAAQo6S,CAAAA,OAAO,CAACj8S,CAAEyV,CAAAA,IAAI,CAAC,CACxC,MAAMkrS,QAAW9+S,CAAAA,OAAAA,CAAQo6S,OAAO,CAACh8S,EAAEwV,IAAI,CAAC,CACxC,IAAI,IAAI2nS,SAAAA,CAAY,CAAGA,CAAAA,SAAAA,CAAYnlP,MAAM5nE,MAAM,CAAE,EAAE+sT,SAAAA,CAAU,CAC3D,MAAMr2P,IAAAA,CAAOkR,KAAK,CAACmlP,UAAU,CAC7B,MAAMG,aAAgBlrF,CAAAA,KAAK,CAAC+qF,SAAAA,CAAU,CACtC,MAAMmD,kBAAoBlzQ,SAAS,CAAC+vQ,SAAU,CAAA,CAC9C,MAAMwD,WAAAA,CAAc,CAACrF,cAAc,CAACv7S,CAAAA,CAAEyV,IAAI,CAAC,CAAGsxC,IAAI,CAAC/mD,CAAAA,CAAE1K,IAAI,CAAA,EAAKkrT,UAAAA,CAAaE,SAC3E,MAAMG,WAAAA,CAAc,CAACtF,cAAc,CAACt7S,CAAAA,CAAEwV,IAAI,CAAC,CAAGwiD,KAAK,CAACh4D,CAAAA,CAAE3K,IAAI,CAAA,EAAKmrT,UAAAA,CAAaE,SAC5E,IAAI,IAAIxC,YAAe,CAAA,CAAA,CAAGA,aAAep3P,IAAK12D,CAAAA,MAAM,CAAE,EAAE8tT,YAAa,CAAA,CACnE,MAAM2C,qBAAAA,CAAwB,CAAC/5P,IAAI,CAAC9mD,CAAAA,CAAE3K,IAAI,CAAC,CAAGioT,aAAa,CAACY,aAAa,CAACl+S,CAAAA,CAAE3K,IAAI,CAAC,EAAIuM,OAAQmjD,CAAAA,SAAS,CAAC/kD,CAAEwV,CAAAA,IAAI,CAC7G8qS,CAAAA,iBAAiB,CAACpC,YAAa,CAAA,CAACn+S,EAAEyV,IAAI,CAAC,EAAImrS,WAC3CL,CAAAA,iBAAiB,CAACpC,YAAAA,CAAa,CAACl+S,CAAEwV,CAAAA,IAAI,CAAC,EAAIorS,YAAcC,sBAC3D,CACF,CACF,CACA,SAASrE,sBAAuBxkP,CAAAA,KAAK,CAAEo6J,KAAK,CAAEhlL,SAAS,CACrD,CAAA,IAAI,IAAI+vQ,SAAY,CAAA,CAAA,CAAGA,SAAYnlP,CAAAA,KAAAA,CAAM5nE,MAAM,CAAE,EAAE+sT,SAAU,CAAA,CAC3D,MAAMr2P,IAAOkR,CAAAA,KAAK,CAACmlP,SAAAA,CAAU,CAC7B,MAAMG,aAAgBlrF,CAAAA,KAAK,CAAC+qF,SAAU,CAAA,CACtC,MAAMmD,iBAAAA,CAAoBlzQ,SAAS,CAAC+vQ,SAAAA,CAAU,CAC9C,IAAI,IAAIe,YAAe,CAAA,CAAA,CAAGA,YAAep3P,CAAAA,IAAAA,CAAK12D,MAAM,CAAE,EAAE8tT,YAAAA,CAAa,CACnE,MAAMpyQ,OAAAA,CAAUgb,IAAI,CAACo3P,YAAa,CAClCpyQ,CAAAA,OAAO,CAAC/rC,CAAE66S,CAAAA,cAAc,CAAC,CAAG0C,aAAa,CAACY,YAAa,CAAA,CAACn+S,EAAE1K,IAAI,CAAC,CAC/Dy2C,OAAO,CAAC9rC,CAAAA,CAAE46S,cAAc,CAAC,CAAG0C,aAAa,CAACY,YAAa,CAAA,CAACl+S,CAAE3K,CAAAA,IAAI,CAAC,CAC/D,GAAIuM,OAAQo5G,CAAAA,WAAW,GAAK2T,sBAAAA,CAAwB,CAClD7iF,OAAQirF,CAAAA,MAAM,CAAC+hB,gBAAgB,CAACwnK,iBAAiB,CAACpC,YAAa,CAAA,CAACn+S,CAAEyV,CAAAA,IAAI,CAAC,CAAE8qS,iBAAiB,CAACpC,YAAAA,CAAa,CAACl+S,CAAAA,CAAEwV,IAAI,CAAC,CAAEs2B,OAAQirF,CAAAA,MAAM,CAACghB,gBAAgB,EAAA,CAAG1rI,CAAC,EACvJ,CAAO,KAAA,CACLy/B,OAAQirF,CAAAA,MAAM,CAAC+hB,gBAAgB,CAACwnK,iBAAiB,CAACpC,aAAa,CAACl+S,CAAAA,CAAEwV,IAAI,CAAC,CAAE8qS,iBAAiB,CAACpC,YAAa,CAAA,CAACn+S,CAAEyV,CAAAA,IAAI,CAAC,CAAEs2B,QAAQirF,MAAM,CAACghB,gBAAgB,EAAA,CAAG1rI,CAAC,EACvJ,CACF,CACF,CACF,CACA,SAASowS,gBAAAA,CAAiBzkP,KAAK,CAAA,CAC7B,MAAM8oP,WAAAA,CAAc9oP,KAAMliD,CAAAA,KAAK,CAC/B,MAAMirS,YAAAA,CAAe/oP,KAAMjiD,CAAAA,MAAM,CACjC,MAAMirS,OAAAA,CAAU,CAAC1F,eAAe92S,CAAC,CAAGs8S,WAAU,EAAKl/S,OAAQmjD,CAAAA,SAAS,CAACvgD,CAAC,CAAG5C,OAAQo6S,CAAAA,OAAO,CAACx3S,CAAC,CAC1F,MAAMq6L,OAAAA,CAAU,CAACy8G,eAAepvS,CAAC,CAAG60S,YAAW,EAAKn/S,OAAQmjD,CAAAA,SAAS,CAAC74C,CAAC,CAAGtK,OAAQo6S,CAAAA,OAAO,CAAC9vS,CAAC,CAC3F,OAAO,CACLyqP,MAAAA,CAAQ,IAAIrkP,IAAK0uS,CAAAA,OAAAA,CAASniH,OAASiiH,CAAAA,WAAAA,CAAaC,YAClD,CAAA,CACF,CACA,SAASpE,yBAAyB9yQ,QAAQ,CAAA,CACxC,MAAMo3Q,cAAAA,CAAiB,EAAE,CACzB,IAAI,IAAI9wT,CAAAA,CAAI,EAAGA,CAAI05C,CAAAA,QAAAA,CAASz5C,MAAM,CAAE,EAAED,CAAAA,CAAE,CACtC,MAAM27C,QAAUjC,QAAQ,CAAC15C,CAAE,CAAA,CAC3B,MAAMipT,QAAW1pT,CAAAA,IAAAA,CAAKoU,GAAG,CAACo9S,YAAYp1Q,OAAS,CAAA,UAAA,CAAA,CAAa,CAC5D,CAAA,CAAA,MAAMwtQ,SAAY5pT,CAAAA,IAAAA,CAAKoU,GAAG,CAACo9S,YAAYp1Q,OAAS,CAAA,WAAA,CAAA,CAAc,CAC9D,CAAA,CAAA,MAAM0tQ,SAAW9pT,IAAKoU,CAAAA,GAAG,CAACo9S,WAAAA,CAAYp1Q,QAAS,UAAastQ,CAAAA,CAAAA,QAAAA,CAAAA,CAC5D,MAAMM,SAAAA,CAAYhqT,IAAKoU,CAAAA,GAAG,CAACo9S,WAAAA,CAAYp1Q,QAAS,WAAcwtQ,CAAAA,CAAAA,SAAAA,CAAAA,CAC9D,MAAMxjS,KAAAA,CAAQlS,MAAMs9S,WAAYp1Q,CAAAA,OAAAA,CAAS,OAAUstQ,CAAAA,CAAAA,QAAAA,CAAUI,UAC7D,MAAMzjS,MAAAA,CAASnS,KAAMs9S,CAAAA,WAAAA,CAAYp1Q,OAAS,CAAA,QAAA,CAAA,CAAWwtQ,SAAWI,CAAAA,SAAAA,CAAAA,CAChE,MAAME,kBAAqBsH,CAAAA,WAAAA,CAAYp1Q,OAAS,CAAA,oBAAA,CAAA,CAChD,MAAMguQ,mBAAsBoH,CAAAA,WAAAA,CAAYp1Q,OAAS,CAAA,qBAAA,CAAA,CACjDm1Q,eAAehwT,IAAI,CAAC,CAClBmoT,QAAAA,CAAUA,QACVE,CAAAA,SAAAA,CAAWA,SACXE,CAAAA,QAAAA,CAAUA,SACVE,SAAWA,CAAAA,SAAAA,CACX5jS,KAAOA,CAAAA,KAAAA,CACPC,OAAQA,MACR6jS,CAAAA,kBAAAA,CAAoBA,kBACpBE,CAAAA,mBAAAA,CAAqBA,mBACvB,CACF,EAAA,CACA,OAAOmH,cACT,CACA,SAASC,WAAYp1Q,CAAAA,OAAO,CAAE+oM,YAAY,CAAA,CACxC,MAAM6nE,oBAAAA,CAAuB5wQ,QAAQirF,MAAM,CAACujL,WAAW,CACvD,GAAIoC,oBAAwBA,EAAAA,oBAAAA,CAAqB15S,OAAO,EAAI05S,oBAAoB,CAAC7nE,YAAa,CAAA,GAAK58O,WAAaykT,oBAAoB,CAAC7nE,YAAa,CAAA,GAAK,IAAM,CAAA,CAC3J,OAAO6nE,oBAAoB,CAAC7nE,YAAa,CAC3C,CAAO,KAAA,GAAI/oM,OAAO,CAAC+oM,YAAa,CAAA,GAAK58O,UAAW,CAC9C,OAAO6zC,OAAO,CAAC+oM,aAAa,CAE9B,OAAOqmE,iBAAiB,CAACrmE,YAAa,CACxC,CACA,SAASjxO,KAAM9L,CAAAA,KAAK,CAAE+L,GAAG,CAAEC,GAAG,CAAA,CAC5B,OAAOpU,IAAAA,CAAKmU,GAAG,CAACnU,IAAAA,CAAKoU,GAAG,CAAChM,MAAO+L,GAAMC,CAAAA,CAAAA,GAAAA,CACxC,CACA,SAAS46S,SAAUl/S,CAAAA,KAAK,CAAEq1O,YAAY,EACpC,OAAOr1O,KAAAA,CAAMmsC,MAAM,CAAC,CAACw1Q,WAAavhT,CAAAA,OAAAA,GAAAA,CAChC,OAAOuhT,WAAAA,CAAcvhT,OAAO,CAACi1O,YAAAA,CAAa,CAC5C,CAAG,CACL,CAAA,CACA,SAASkqE,mBAAAA,CAAoBv/S,KAAK,CAAEq1O,YAAY,CAC9C,CAAA,MAAMtwK,IAAMm6O,SAAUl/S,CAAAA,KAAAA,CAAOq1O,YAC7B,CAAA,CAAA,MAAMusE,iBAAmB,EAAE,CAC3B,MAAMC,QAAAA,CAAW7hT,KAAMpP,CAAAA,MAAM,CAC7B,GAAIm0E,MAAQ,CAAG,CAAA,CACb,IAAI,IAAIp0E,EAAI,CAAGA,CAAAA,CAAAA,CAAIkxT,QAAU,CAAA,EAAElxT,EAAE,CAC/BixT,gBAAAA,CAAiBnwT,IAAI,CAAC,CAAIowT,CAAAA,QAAAA,EAC5B,CACF,CAAA,KAAO,CACL,IAAI,IAAIlxT,CAAI,CAAA,CAAA,CAAGA,EAAIkxT,QAAU,CAAA,EAAElxT,CAAE,CAAA,CAC/BixT,iBAAiBnwT,IAAI,CAACuO,KAAK,CAACrP,CAAE,CAAA,CAAC0kP,YAAa,CAAA,CAAGtwK,KACjD,CACF,CACA,OAAO68O,gBACT,CACA,SAASzB,sBAAAA,CAAuB7mT,MAAM,CAAA,CACpC,GAAIA,MAAO1I,CAAAA,MAAM,GAAK,CAAA,CAAG,CACvB,OAAO,CACL,CAAA,CACD,CAEH,MAAMkxT,cAAiB,CAAA,EAAE,CACzB,MAAMC,SAAYzoT,CAAAA,MAAAA,CAAO1I,MAAM,CAC/B,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIoxT,SAAW,CAAA,EAAEpxT,EAAE,CAChCmxT,cAAAA,CAAerwT,IAAI,CAAC,CAAC,CAAA,CAAI6H,MAAM,CAAC3I,EAAE,GAAKoxT,SAAAA,CAAY,CAAA,CAAA,EACrD,CACA,OAAOD,cACT,CACA,SAASzC,iBAAkBr/S,CAAAA,KAAK,CAAEgiT,OAAO,CAAEC,UAAU,CAAA,CACnDjiT,MAAM1C,OAAO,CAAC4kT,WACd,CAAA,CAAA,OAAOliT,KAAMxO,CAAAA,KAAK,EAAGqP,CAAAA,IAAI,CAAC,CAACshT,KAAAA,CAAOC,KAChC,GAAA,CAAA,OAAOH,WAAaG,KAAK,CAACJ,OAAQ,CAAA,CAAGG,KAAK,CAACH,OAAAA,CAAQ,CAAGG,KAAK,CAACH,OAAAA,CAAQ,CAAGI,KAAK,CAACJ,OAAQ,CACvF,CAAGxqT,CAAAA,CAAAA,GAAG,CAAC6qT,QACT,CAAA,CACA,SAASH,WAAAA,CAAYvnT,IAAI,CAAEnE,KAAK,CAC9BmE,CAAAA,IAAAA,CAAKnE,KAAK,CAAGA,MACf,CACA,SAAS6rT,QAAS1nT,CAAAA,IAAI,CACpB,CAAA,OAAOA,KAAKnE,KACd,CACA,SAASipT,eAAenmT,MAAM,CAAEk7K,KAAK,CAAA,CACnC,MAAM8tI,QAAAA,CAAW,EACjBA,CAAAA,QAAQ,CAAC9tI,KAAK,CAACl7K,OAAO1I,MAAM,CAAG,CAAE,CAAA,CAAC,CAAG0I,MAAM,CAACk7K,KAAK,CAACl7K,MAAO1I,CAAAA,MAAM,CAAG,CAAA,CAAE,CAAC,CACrE,IAAI,IAAID,CAAAA,CAAI2I,OAAO1I,MAAM,CAAG,CAAGD,CAAAA,CAAAA,EAAK,EAAG,EAAEA,CAAAA,CAAE,CACzC2xT,QAAQ,CAAC9tI,KAAK,CAAC7jL,CAAAA,CAAE,CAAC,CAAG2xT,QAAQ,CAAC9tI,KAAK,CAAC7jL,CAAAA,CAAI,CAAE,CAAA,CAAC,CAAG2I,MAAM,CAACk7K,KAAK,CAAC7jL,CAAE,CAAA,EAAC,CAEhE,OAAO2xT,QACT,CACA,OAAOnG,YACT,CACA,MAAMoG,aAAAA,CAAgB,EACtBA,CAAAA,aAAa,CAACpzL,sBAAuB,CAAA,CAAG4sL,gBAAiB5sL,CAAAA,sBAAAA,CACzDozL,CAAAA,aAAa,CAACnzL,oBAAqB,CAAA,CAAG2sL,gBAAiB3sL,CAAAA,oBAAAA,CACvD,OAAMozL,gBACJC,CAAAA,eAAAA,CAAgBp4Q,QAAQ,CAAEjoC,OAAO,CAAE,CACjC,MAAMsgT,WAAAA,CAAcH,aAAa,CAACngT,OAAQo5G,CAAAA,WAAW,CAAC,CACtD,GAAI,CAACknM,WAAAA,CAAa,CAChB,MAAM,IAAI7nT,KAAM,CAAA,CAAC,gCAAgC,EAAEuH,OAAAA,CAAQo5G,WAAW,CAAC,CAAC,CAC1E,CAAO,KAAA,CACL,OAAOknM,WAAYr4Q,CAAAA,QAAAA,CAAUjoC,OAC/B,CAAA,CACF,CACF,CAEA,SAASkvN,UAAAA,CAAW/5F,MAAM,CACxB,CAAA,OAAOA,MAAOjrF,CAAAA,OAAO,CAEvB,SAASq2Q,6BAAAA,CAA8BprL,MAAM,CAC3C,CAAA,OAAOA,MAAO/zH,CAAAA,OAAO,EAAI+zH,MAAOjrF,CAAAA,OAAO,EAAIirF,MAAAA,CAAOjrF,OAAO,CAAC9oC,OAAO,CAEnE,MAAMo/S,oBAAAA,SAA6BtkD,SAcjC,CAAA,IAAI9iJ,YAAYljH,KAAK,CAAE,CACrB,GAAIA,QAAU,IAAI,CAACuqT,YAAY,CAAE,CAC/B,IAAI,CAACA,YAAY,CAAGvqT,KACpB,CAAA,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAItnM,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACqnM,YAAY,CAE1B,IAAIrF,QAASllT,CAAAA,KAAK,CAAE,CAClB,GAAIA,KAAAA,GAAU,IAAI,CAACyqT,SAAS,CAAE,CAC5B,IAAI,CAACA,SAAS,CAAGzqT,MACjB,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAItF,QAAAA,EAAW,CACb,OAAO,IAAI,CAACuF,SAAS,CAEvB,IAAItF,QAASnlT,CAAAA,KAAK,CAAE,CAClB,GAAIA,KAAU,GAAA,IAAI,CAAC0qT,SAAS,CAAE,CAC5B,IAAI,CAACA,SAAS,CAAG1qT,KAAAA,CACjB,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAIrF,QAAAA,EAAW,CACb,OAAO,IAAI,CAACuF,SACd,CACA,IAAIz9P,SAAAA,CAAUjtD,KAAK,CAAE,CACnB,GAAI,CAACA,KAAM8N,CAAAA,MAAM,CAAC,IAAI,CAACwhS,UAAU,CAAA,CAAG,CAClC,IAAI,CAACA,UAAU,CAACl4S,IAAI,CAAC4I,KACrB,CAAA,CAAA,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAIv9P,SAAY,EAAA,CACd,OAAO,IAAI,CAACqiP,UAAU,CAExB,IAAI4U,OAAQlkT,CAAAA,KAAK,CAAE,CACjB,GAAI,CAACA,KAAAA,CAAM8N,MAAM,CAAC,IAAI,CAAC68S,QAAQ,CAAG,CAAA,CAChC,IAAI,CAACA,QAAQ,CAACvzT,IAAI,CAAC4I,KAAAA,CAAAA,CACnB,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAItG,SAAU,CACZ,OAAO,IAAI,CAACyG,QACd,CACA,IAAIh3S,QAAQ3T,KAAK,CAAE,CACjB,GAAI,CAACA,KAAM8N,CAAAA,MAAM,CAAC,IAAI,CAACsgS,QAAQ,CAAA,CAAG,CAChC,IAAI,CAACA,QAAQ,CAACh3S,IAAI,CAAC4I,KACnB,CAAA,CAAA,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAI72S,SAAU,CACZ,OAAO,IAAI,CAACy6R,QACd,CACA,IAAIwc,aAAa5qT,KAAK,CAAE,CACtB,GAAIA,QAAU,IAAI,CAAC6qT,aAAa,CAAE,CAChC,IAAI,CAACA,aAAa,CAAG7qT,KACrB,CAAA,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAII,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACC,aAAa,CAE3B,IAAIC,aAAc9qT,CAAAA,KAAK,CAAE,CACvB,GAAIA,KAAAA,GAAU,IAAI,CAAC+qT,cAAc,CAAE,CACjC,IAAI,CAACA,cAAc,CAAG/qT,KAAAA,CACtB,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAIM,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIj7H,IAAAA,CAAK9vL,KAAK,CAAE,CACd,GAAIA,KAAAA,GAAU,IAAI,CAACgrT,KAAK,CAAE,CACxB,IAAI,CAACA,KAAK,CAAGhrT,KACb,CAAA,IAAI,CAACwqT,eAAe,GACtB,CACF,CACA,IAAI16H,IAAO,EAAA,CACT,OAAO,IAAI,CAACk7H,KAAK,CAEnBC,eAAehsL,MAAM,CAAE,CACrB,OAAOA,SAAW,IAAI,CAACA,MAAM,EAAI,IAAI,CAACA,MAAM,CAAC0e,QAAQ,CAACr8I,OAAO,CAAC29H,MAAAA,CAAAA,GAAY,CAAC,CAC7E,CACAisL,sBAAuBj0T,CAAAA,MAAM,CAAEk0T,KAAK,CAAE,CACpC,GAAIl0T,OAAO+8C,OAAO,CAAE,CAClB/8C,MAAAA,CAAO+8C,OAAO,CAACm3Q,KAAM,CAAA,CAAC,gBAAiB,IAAI,CAACX,eAAe,CAAE,IAAI,CAAA,CACjEvzT,MAAO+8C,CAAAA,OAAO,CAACm3Q,KAAM,CAAA,CAAC,gBAAkB,CAAA,IAAI,CAACX,eAAe,CAAE,IAAI,EAClEvzT,MAAO+8C,CAAAA,OAAO,CAACm3Q,KAAAA,CAAM,CAAC,QAAU,CAAA,IAAI,CAACX,eAAe,CAAE,IAAI,CAAA,CAC1DvzT,MAAO+8C,CAAAA,OAAO,CAACm3Q,KAAAA,CAAM,CAAC,WAAA,CAAa,IAAI,CAACX,eAAe,CAAE,IAAI,EAC/D,CACA,GAAIvzT,MAAOurT,CAAAA,WAAW,CAAE,CACtBvrT,MAAAA,CAAOurT,WAAW,CAAC2I,KAAM,CAAA,CAAC,aAAe,CAAA,IAAI,CAACX,eAAe,CAAE,IAAI,CAAA,CACnEvzT,OAAOurT,WAAW,CAAC2I,KAAM,CAAA,CAAC,SAAU,IAAI,CAACX,eAAe,CAAE,IAAI,EAChE,CACF,CACAY,+BAA+BnsL,MAAM,CAAE,CACrC,GAAI,IAAI,CAACgsL,cAAc,CAAChsL,MAAAA,CAAAA,CAAS,CAC/B,IAAI,CAACisL,sBAAsB,CAACjsL,MAAQ,CAAA,IAAA,CAAA,CACpC,IAAI,CAACurL,eAAe,GACtB,CACF,CACAa,iCAAAA,CAAkCpsL,MAAM,CAAE,CACxC,GAAI,IAAI,CAACgsL,cAAc,CAAChsL,MAAS,CAAA,CAAA,CAC/B,IAAI,CAACisL,sBAAsB,CAACjsL,OAAQ,KACpC,CAAA,CAAA,IAAI,CAACurL,eAAe,GACtB,CACF,CACAc,cAAehsK,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC4rK,sBAAsB,CAAC5rK,KAAAA,CAAO,IACnC,CAAA,CAAA,IAAI,CAACkrK,eAAe,GACtB,CACAe,cAAAA,CAAejsK,KAAK,CAAE,CACpB,IAAI,CAAC4rK,sBAAsB,CAAC5rK,KAAAA,CAAO,KACnC,CAAA,CAAA,IAAI,CAACkrK,eAAe,GACtB,CACAA,iBAAkB,CAChB,GAAI,IAAI,CAACt/S,OAAO,EAAI,IAAI,CAAC+zH,MAAM,EAAI,IAAI,CAACA,MAAM,CAAC/zH,OAAO,EAAI,CAAC,IAAI,CAACsgT,mBAAmB,CAAE,CACnF,IAAI,CAACp3E,MAAM,CAACq3E,cAAc,CAAC,IAAI,EACjC,CACF,CACAC,MAAS,EAAA,CACP,MAAMC,SAAAA,CAAY3yF,WAAW,IAAI,CAAC/5F,MAAM,CAAA,CACxC,MAAMltF,QAAW,CAAA,IAAI,CAACktF,MAAM,CAAC0e,QAAQ,CAAC3pD,MAAM,CAACq2N,6BAA+BnrT,CAAAA,CAAAA,GAAG,CAAC85N,UAAAA,CAAAA,CAChF,GAAI,CAAC2yF,SAAAA,EAAa55Q,QAASz5C,CAAAA,MAAM,GAAK,CAAG,CAAA,CACvC,MACF,CACA,MAAMszT,cAAiBh0T,CAAAA,IAAAA,CAAKoU,GAAG,CAAC2/S,SAAUpwB,CAAAA,eAAe,CAAE,CAAA,CAAA,CAC3D,MAAMswB,eAAkBj0T,CAAAA,IAAAA,CAAKoU,GAAG,CAAC2/S,UAAUnwB,gBAAgB,CAAE,CAC7D,CAAA,CAAA,MAAM1xR,QAAU,CACdo5G,WAAAA,CAAa,IAAI,CAACqnM,YAAY,CAC9BrF,QAAU,CAAA,IAAI,CAACuF,SAAS,CACxBtF,QAAU,CAAA,IAAI,CAACuF,SAAS,CACxBz9P,SAAW,CAAA,IAAI,CAACqiP,UAAU,CAC1B4U,OAAS,CAAA,IAAI,CAACyG,QAAQ,CACtBh3S,OAAAA,CAAS,IAAI,CAACy6R,QAAQ,CACtBwc,YAAAA,CAAc,IAAI,CAACC,aAAa,CAChCC,aAAAA,CAAe,IAAI,CAACC,cAAc,CAClCj7H,IAAAA,CAAM,IAAI,CAACk7H,KAAK,CAChB/G,cAAe,IAAI/pS,IAAAA,CAAK0xS,cAAgBC,CAAAA,eAAAA,CAC1C,CACA,CAAA,IAAI,CAACL,mBAAmB,CAAG,IAC3B,CAAA,MAAMM,UAAa,CAAA,IAAI,CAACC,iBAAiB,CAAC5B,eAAe,CAACp4Q,QAAUjoC,CAAAA,OAAAA,CACpE,CAAA,IAAI,CAAC0hT,mBAAmB,CAAG,KAAA,CAC3B,IAAI,CAACjqT,IAAI,CAAC,QAAA,CAAUuqT,UACtB,EAAA,CACAhoN,QAAW,EAAA,CACT,IAAI,CAAC0mN,eAAe,GACtB,CACAj/B,UAAW,CACT,IAAI,CAACtsJ,MAAM,CAAC3/H,GAAG,CAAC,aAAe,CAAA,IAAI,CAACgsT,cAAc,CAAE,IAAI,EACxD,IAAI,CAACrsL,MAAM,CAAC3/H,GAAG,CAAC,aAAA,CAAe,IAAI,CAACisT,cAAc,CAAE,IAAI,CACxD,CAAA,IAAI,CAACL,sBAAsB,CAAC,IAAI,CAACjsL,MAAM,CAAE,KACzC,CAAA,CAAA,IAAI,CAACA,MAAM,CAAC0e,QAAQ,CAAC34I,OAAO,CAAEs6I,KAC5B,EAAA,CAAA,IAAI,CAAC4rK,sBAAsB,CAAC5rK,KAAAA,CAAO,OACrC,CACA,CAAA,CAAA,IAAI,CAAC80F,MAAM,CAAC/L,GAAG,CAACgR,OAAO,CAACrlM,OAAO,CAAC10C,GAAG,CAAC,KAAA,CAAO,IAAI,CAAC8rT,8BAA8B,CAAE,IAAI,CACpF,CAAA,IAAI,CAACh3E,MAAM,CAAC/L,GAAG,CAACgR,OAAO,CAACrlM,OAAO,CAAC10C,GAAG,CAAC,cAAA,CAAgB,IAAI,CAAC+rT,iCAAiC,CAAE,IAAI,CAChG,CAAA,IAAI,CAACj3E,MAAM,CAAC/L,GAAG,CAACgR,OAAO,CAACmpE,WAAW,CAACljT,GAAG,CAAC,KAAA,CAAO,IAAI,CAAC8rT,8BAA8B,CAAE,IAAI,CACxF,CAAA,IAAI,CAACh3E,MAAM,CAAC/L,GAAG,CAACgR,OAAO,CAACmpE,WAAW,CAACljT,GAAG,CAAC,cAAA,CAAgB,IAAI,CAAC+rT,iCAAiC,CAAE,IAAI,EACtG,CA7KAjrT,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,MAAS,CAAA,CAAA,IAAI,CAACsrL,YAAY,CAAG1zL,sBAAAA,CAAwB,IAAI,CAAC4zL,SAAS,CAAG,KAAA,CAAO,IAAI,CAACC,SAAS,CAAG,IAAA,CAAM,IAAI,CAACpb,UAAU,CAAG,IAAIp1R,IAAK,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,IAAI,CAACywS,QAAQ,CAAG,IAAInwS,IAAAA,CAAQ,IAAI,CAAC4zR,QAAQ,CAAG,IAAIl0R,KAAQ,IAAI,CAAC2wS,aAAa,CAAGpI,YAAc,CAAA,IAAI,CAACsI,cAAc,CAAGtI,YAAc,CAAA,IAAI,CAACuI,KAAK,CAAG,KAAO,CAAA,IAAI,CAACe,iBAAiB,CAAG,IAAI7B,gBAAAA,CACpU,IAAI,CAACgB,sBAAsB,CAAC,IAAI,CAACjsL,MAAM,CAAE,IAAA,CAAA,CACzC,IAAI,CAACA,MAAM,CAAC0e,QAAQ,CAAC34I,OAAO,CAAC,KAACs6I,EAAAA,CAC5B,IAAI,CAAC4rK,sBAAsB,CAAC5rK,KAAO,CAAA,IAAA,EACrC,GACA,IAAI,CAACrgB,MAAM,CAACv/H,EAAE,CAAC,aAAA,CAAe,IAAI,CAAC4rT,cAAc,CAAE,IAAI,CACvD,CAAA,IAAI,CAACrsL,MAAM,CAACv/H,EAAE,CAAC,aAAe,CAAA,IAAI,CAAC6rT,cAAc,CAAE,IAAI,CAAA,CACvDn3E,MAAO/L,CAAAA,GAAG,CAACgR,OAAO,CAACrlM,OAAO,CAACt0C,EAAE,CAAC,KAAO,CAAA,IAAI,CAAC0rT,8BAA8B,CAAE,IAAI,CAAA,CAC9Eh3E,OAAO/L,GAAG,CAACgR,OAAO,CAACrlM,OAAO,CAACt0C,EAAE,CAAC,cAAA,CAAgB,IAAI,CAAC2rT,iCAAiC,CAAE,IAAI,CAC1Fj3E,CAAAA,MAAAA,CAAO/L,GAAG,CAACgR,OAAO,CAACmpE,WAAW,CAAC9iT,EAAE,CAAC,KAAA,CAAO,IAAI,CAAC0rT,8BAA8B,CAAE,IAAI,CAAA,CAClFh3E,OAAO/L,GAAG,CAACgR,OAAO,CAACmpE,WAAW,CAAC9iT,EAAE,CAAC,cAAA,CAAgB,IAAI,CAAC2rT,iCAAiC,CAAE,IAAI,EAChG,CAkKF,CAEA,MAAMW,yBACJ5rT,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAM+gT,SAAY,CAAA,CAChB,SACD,CAAA,CACD,MAAMC,cAAAA,CAAiB,GACvB,CAAA,MAAMC,mCAAmC3lD,eAWvCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,GAAInqI,IAAKnH,CAAAA,OAAO,GAAK/K,SAAAA,CAAWs5O,SAAUvuO,CAAAA,OAAO,CAAGmH,IAAAA,CAAKnH,OAAO,CAChE,GAAImH,IAAK6wG,CAAAA,WAAW,GAAK/iH,SAAWs5O,CAAAA,SAAAA,CAAUv2H,WAAW,CAAG7wG,KAAK6wG,WAAW,CAC5E,GAAI7wG,IAAAA,CAAK6yS,QAAQ,GAAK/kT,SAAWs5O,CAAAA,SAAAA,CAAUyrE,QAAQ,CAAG7yS,IAAAA,CAAK6yS,QAAQ,CACnE,GAAI7yS,IAAK8yS,CAAAA,QAAQ,GAAKhlT,SAAAA,CAAWs5O,UAAU0rE,QAAQ,CAAG9yS,IAAK8yS,CAAAA,QAAQ,CACnE,GAAI9yS,IAAK46C,CAAAA,SAAS,GAAK9sD,SAAW,CAAA,CAChCs5O,SAAUxsL,CAAAA,SAAS,CAAG51D,KAAMC,CAAAA,OAAO,CAAC+a,IAAAA,CAAK46C,SAAS,CAAI,CAAA,IAAI/yC,IAAK7H,CAAAA,IAAAA,CAAK46C,SAAS,CAAA,CAAI56C,IAAK46C,CAAAA,UAAS,CAEjG,GAAI56C,IAAK6xS,CAAAA,OAAO,GAAK/jT,SAAW,CAAA,CAC9Bs5O,SAAUyqE,CAAAA,OAAO,CAAG7sT,KAAMC,CAAAA,OAAO,CAAC+a,IAAAA,CAAK6xS,OAAO,CAAA,CAAI,IAAI1pS,IAAAA,CAAKnI,KAAK6xS,OAAO,CAAA,CAAI7xS,IAAK6xS,CAAAA,QAAO,CAEzF,GAAI7xS,IAAAA,CAAKsB,OAAO,GAAKxT,SAAAA,CAAW,CAC9Bs5O,SAAAA,CAAU9lO,OAAO,CAAGtc,KAAMC,CAAAA,OAAO,CAAC+a,IAAKsB,CAAAA,OAAO,CAAI,CAAA,IAAIuG,KAAK7H,IAAKsB,CAAAA,OAAO,CAAItB,CAAAA,IAAAA,CAAKsB,QAAO,CAEzF,GAAItB,IAAAA,CAAKu4S,YAAY,GAAKzqT,SAAWs5O,CAAAA,SAAAA,CAAUmxE,YAAY,CAAGv4S,IAAAA,CAAKu4S,YAAY,CAC/E,GAAIv4S,IAAKy4S,CAAAA,aAAa,GAAK3qT,SAAAA,CAAWs5O,UAAUqxE,aAAa,CAAGz4S,IAAKy4S,CAAAA,aAAa,CAClF,GAAIz4S,IAAKy9K,CAAAA,IAAI,GAAK3vL,SAAWs5O,CAAAA,SAAAA,CAAU3pD,IAAI,CAAGz9K,KAAKy9K,IAAI,CACvD,KAAK,CAAC82E,wBAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAMmqI,UACjD,EAAA,CACA2/F,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMy+S,WAAcntL,CAAAA,MAAAA,CAAOotL,WAAW,CACtC,OAAO,IAAI,CAACxxE,YAAY,CAACltO,KAAO,CAAA,CAC9BzC,OAASkhT,CAAAA,WAAAA,CAAYlhT,OAAO,CAC5Bg4G,YAAakpM,WAAYlpM,CAAAA,WAAW,CACpCgiM,QAAAA,CAAUkH,YAAYlH,QAAQ,CAC9BC,QAAUiH,CAAAA,WAAAA,CAAYjH,QAAQ,CAC9Bl4P,SAAAA,CAAWm/P,WAAYn/P,CAAAA,SAAS,CAChCi3P,OAAAA,CAASkI,WAAYlI,CAAAA,OAAO,CAC5BvwS,OAASy4S,CAAAA,WAAAA,CAAYz4S,OAAO,CAC5Bi3S,aAAcwB,WAAYxB,CAAAA,YAAY,CACtCE,aAAAA,CAAesB,YAAYtB,aAAa,CACxCh7H,IAAMs8H,CAAAA,WAAAA,CAAYt8H,IACpB,CACF,CAAA,CACA27H,eAAehyE,SAAS,CAAE,CACxB,GAAI,IAAI,CAAC6yE,YAAY,CAAChrT,OAAO,CAACm4O,SAAe,CAAA,GAAA,CAAC,CAAG,CAAA,CAC/C,IAAI,CAAC6yE,YAAY,CAACnzT,IAAI,CAACsgP,SAAAA,EACzB,CACF,CACA8yE,aAAgB,EAAA,CACd,IAAI,CAACC,mBAAmB,GAC1B,CACAA,mBAAsB,EAAA,CACpB,GAAI,IAAI,CAACF,YAAY,CAACh0T,MAAM,GAAK,CAAG,CAAA,CAClC,MACF,CACA,IAAIm0T,cAAiB,CAAA,CAAA,CACrB,MAAM,IAAI,CAACH,YAAY,CAACh0T,MAAM,CAAG,CAAE,CAAA,CACjC,MAAMiqD,KAAQ,CAAA,IAAI,CAAC+pQ,YAAY,CAACpzT,KAAK,EACrC,CAAA,IAAI,CAACozT,YAAY,CAACh0T,MAAM,CAAG,CAC3BiqD,CAAAA,KAAAA,CAAMh6C,IAAI,CAAC,CAACmkT,UAAYC,CAAAA,UAAAA,GAAAA,CACtB,OAAOD,UAAAA,CAAWztL,MAAM,CAACqf,UAAU,CAAGquK,UAAAA,CAAW1tL,MAAM,CAACqf,UAAU,CACpE,CAAA,CACA,IAAI,IAAIjmJ,CAAI,CAAA,CAAA,CAAGA,EAAIkqD,KAAMjqD,CAAAA,MAAM,CAAE,EAAED,EAAE,CACnCkqD,KAAK,CAAClqD,CAAAA,CAAE,CAACqzT,MAAM,GACjB,CACA,GAAI,EAAEe,cAAAA,EAAkBP,cAAgB,CAAA,CACtCpnT,QAAQqyO,IAAI,CAAC,+CACb,CAAA,CAAA,KACF,CACF,CACF,CACAs1C,kBAAmBxtJ,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CACpCA,SAAAA,CAAU8xC,QAAQ,GACpB,CACA/pP,OAAAA,EAAU,CACR,KAAK,CAACA,OACN,EAAA,CAAA,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,YAAA,CAAc,IAAI,CAACitT,aAAa,CAAE,IAAI,EAC7D,CA9EAnsT,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,aACV,CAAA,IAAI,CAACokO,aAAa,CAAG6jD,oBACrB,CAAA,IAAI,CAAC3jD,QAAQ,CAAGqlD,wBAChB,CAAA,IAAI,CAACjzE,MAAM,CAAGkzE,SACd,CAAA,IAAI,CAACK,YAAY,CAAG,EAAE,CACtB,IAAI,CAAC5sT,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC+sR,kBAAkB,CAAE,IAAI,CAAA,CACrD,IAAI,CAACpkD,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,YAAA,CAAc,IAAI,CAAC6sT,aAAa,CAAE,IAAI,EAC5D,CAsEF,CACAvmD,SAAUC,CAAAA,eAAe,CAACqkD,oBAAAA,CAAqB5/L,SAAS,CAAEuhM,SAE1D,CAAA,CAAA,MAAMW,gBACJprR,OAAQc,CAAAA,MAAM,CAAE,CACd,IAAI,CAACpjC,GAAG,CAAC8F,OAAO,CAAC,QAAC6nT,EAAWA,QAAS9qL,CAAAA,IAAI,CAACvgG,OAAO,EACpD,EAAA,CACAphC,aAAa,CACX,IAAI,CAAClB,GAAG,CAAG,IAAIuB,IACjB,CACF,CACA,MAAMqsT,gBAAmB,CAAA,IAAIjqR,WAC7B,CAAA,MAAMkqR,iBAAoB,CAAA,CAACzqR,MAAQxyB,CAAAA,IAAAA,GAAAA,CACjC,MAAMw6B,KAAQwiR,CAAAA,gBAAAA,CAAiB1yT,GAAG,CAACkoC,OAAQ,IACzC,CAAA,OAAO,IAAIsqR,eACb,GACA,IAAIC,QAAAA,CAAWviR,KAAMprC,CAAAA,GAAG,CAAC9E,GAAG,CAAC0V,IAAAA,CAAAA,CAC7B,GAAI,CAAC+8S,QAAAA,CAAU,CACb,IAAI9qL,KAAMmkE,IACV,CAAA,OAAOp2L,IACL,EAAA,IAAK,MACHiyH,IAAOH,CAAAA,IAAAA,CAAKC,YAAY,CAACv/F,MAAQ,CAAA,IAAIikK,WACrCL,CAAAA,CAAAA,IAAAA,CAAO,CACLx5L,CAAG,CAAA,CAAA,CACH0H,CAAG,CAAA,CAAA,CACHG,EAAG,CACHitM,CAAAA,EAAAA,CAAI,CAAM,CAAA,CACZ,EACA,MACF,IAAK,SACHz/E,CAAAA,IAAAA,CAAOH,IAAKC,CAAAA,YAAY,CAACv/F,MAAAA,CAAQ,IAAI6yL,eAAgB,CAAA,CACnDthN,MAAQ,CAAA,EAAA,CACRoK,MAAQ,CAAA,CACV,CACAioL,CAAAA,CAAAA,CAAAA,IAAAA,CAAO,CACLx5L,CAAG9U,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,CACbwI,CAAAA,CAAAA,CAAGxc,IAAKgU,CAAAA,EAAE,CACV2I,CAAG3c,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,EACb41M,EAAI,CAAA,CAAA,CAAM,CAAI,CAAA,CAAA,CAAM,EAAI,CAAI,CAAA,CAC9B,CACA,CAAA,MACG,IAAA,MAAA,CACHz/E,IAAOH,CAAAA,IAAAA,CAAKC,YAAY,CAACv/F,MAAAA,CAAQ,IAAI8yL,YAAAA,CAAa,CAChDX,UAAY,CAAA,EAAA,CACZC,UAAY,CAAA,CAAA,CACZz2M,OAAQ,CACV,CAAA,CAAA,CAAA,CACAioL,IAAO,CAAA,CACLx5L,CAAG,CAAA,IAAA,CACH0H,CAAG,CAAA,IAAA,CACHG,EAAG,IACHitM,CAAAA,EAAAA,CAAI,CAAM,CAAA,CAAA,CAAI,EAAM,CAAI,CAAA,CAC1B,CACA,CAAA,UACG,UACHz/E,CAAAA,IAAAA,CAAOH,IAAKC,CAAAA,YAAY,CAACv/F,MAAAA,CAAQ,IAAI+yL,gBAAAA,CAAiB,CACpDxhN,MAAQ,CAAA,EAAA,CACRoK,MAAQ,CAAA,CACV,IACAioL,IAAO,CAAA,CACLx5L,CAAG9U,CAAAA,IAAAA,CAAKgU,EAAE,CACVwI,CAAAA,CAAG,GAAO,CAAA,CAAA,CACVG,CAAG3c,CAAAA,IAAAA,CAAKgU,EAAE,CACV41M,GAAI,CAAM,CAAA,CAAA,CAAI,CAAM,CAAA,CAAA,CAAI,EAAI,CAC9B,CAAA,CACA,MACF,IAAK,QACHz/E,IAAOH,CAAAA,IAAAA,CAAKC,YAAY,CAACv/F,MAAQ,CAAA,IAAIgzL,aAAc,CAAA,CACjDzxM,YAAa,IAAI3J,IAAAA,CAAK,EAAK,CAAA,EAAA,CAAA,CAC3BwsL,cAAe,CACfE,CAAAA,cAAAA,CAAgB,CAClB,CAAA,CAAA,CAAA,CACAV,KAAO,CACLx5L,CAAAA,CAAG,CACH0H,CAAAA,CAAAA,CAAG,CACHG,CAAAA,CAAAA,CAAG,CACHitM,CAAAA,EAAAA,CAAI,CACN,CACA,CAAA,MACG,IAAA,QAAA,CACHz/E,KAAOH,IAAKC,CAAAA,YAAY,CAACv/F,MAAAA,CAAQ,IAAIulK,cAAe,CAAA,CAClDh0L,MAAQ,CAAA,EACV,CACAqyL,CAAAA,CAAAA,CAAAA,IAAAA,CAAO,CACLx5L,CAAAA,CAAG9U,KAAKgU,EAAE,CACVwI,CAAGxc,CAAAA,IAAAA,CAAKgU,EAAE,CACV2I,CAAG3c,CAAAA,IAAAA,CAAKgU,EAAE,CACV41M,EAAAA,CAAI,CACN,CAAA,CACA,MACF,IAAK,OACHz/E,CAAAA,IAAAA,CAAOH,KAAKC,YAAY,CAACv/F,MAAQ,CAAA,IAAIizL,cAAc,CACjDE,UAAAA,CAAY,EACZC,CAAAA,UAAAA,CAAY,EACd,CACAxvB,CAAAA,CAAAA,CAAAA,IAAAA,CAAO,CACLx5L,CAAAA,CAAG9U,IAAKgU,CAAAA,EAAE,CAAG,EAAA,CAAM,GAAMhU,IAAKgU,CAAAA,EAAE,CAAG,EAAA,CAAM,GACzCwI,CAAG,CAAA,EAAA,CACHG,CAAG,CAAA,EAAA,CACHitM,GAAI,CACN,CAAA,CACA,MACF,QACE,MAAM,IAAIj/M,KAAM,CAAA,CAAC,wBAAwB,EAAEuN,IAAAA,CAAK,CAAC,CACrD,CACAiyH,IAAKl6E,CAAAA,WAAW,EAChBglQ,CAAAA,QAAAA,CAAW,CACT9qL,IAAMA,CAAAA,IAAAA,CACNmkE,IAAMA,CAAAA,IACR,CACA57J,CAAAA,KAAAA,CAAMprC,GAAG,CAAC0B,GAAG,CAACkP,IAAAA,CAAM+8S,QACtB,EAAA,CACA,OAAOA,QACT,CAEA,CAAA,MAAMG,uBAAuBhnD,SAW3B,CAAA,IAAIpoI,aAAc59H,CAAAA,KAAK,CAAE,CACvB,GAAI,CAAC,IAAI,CAAC8vI,MAAM,CAAE,CAChB,MACF,CACA,IAAI,CAACA,MAAM,CAAClS,aAAa,CAAG59H,MAC9B,CACA,IAAI49H,aAAAA,EAAgB,CAClB,GAAI,CAAC,IAAI,CAACkS,MAAM,CAAE,CAChB,OAAO,IACT,CACA,OAAO,IAAI,CAACA,MAAM,CAAClS,aAAa,CAElC,IAAIqvL,UAAAA,CAAWjtT,KAAK,CAAE,CACpB,IAAI,CAACooI,WAAW,CAAGpoI,KAAAA,CACnB,GAAI,IAAI,CAAC8vI,MAAM,CAAE,CACf,MAAM1B,EAAK,CAAA,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CACpC,GAAIwQ,EAAAA,CAAI,CACN,IAAI,IAAI/1I,CAAAA,CAAI,EAAGA,CAAI+1I,CAAAA,EAAAA,CAAG91I,MAAM,CAAED,CAAI,EAAA,CAAA,CAChC+1I,EAAE,CAAC/1I,EAAE,CAAC20I,aAAa,CAAC,IAAI,CAAC5E,WAAW,EACtC,CACF,CACF,CACF,CACA,IAAI6kL,UAAa,EAAA,CACf,OAAO,IAAI,CAAC7kL,WAAW,CAEzB,IAAIt4H,IAAK9P,CAAAA,KAAK,CAAE,CACd,GAAI,IAAI,CAACwS,KAAK,GAAKxS,KAAAA,CAAO,OAC1B,IAAI,CAACwiQ,KAAK,CAAG,IACb,CAAA,IAAI,CAAChwP,KAAK,CAAGxS,KACb,CAAA,GAAIA,KAAU,GAAA,OAAA,CAAS,CACrB,GAAI,IAAI,CAACkhR,MAAM,GAAK,IAAA,CAAM,CACxB,IAAI,CAACgsC,eAAe,CAAC,IAAI,CAAChsC,MAAM,EAClC,CAAA,KAAO,CACL,IAAI,CAACvjJ,KAAK,CAAG,KACf,CACF,CAAO,KAAA,CACL,MAAMkvL,QAAAA,CAAWE,kBAAkB,IAAI,CAAC34E,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAEjiC,KAAAA,CACnE,CAAA,IAAI,CAACwiQ,KAAK,CAAGqqD,QAAS3mH,CAAAA,IAAI,CAC1B,MAAMnkE,KAAO8qL,QAAS9qL,CAAAA,IAAI,CAC1B,MAAM0G,KAAO,IAAImV,SAAAA,CACjB,MAAMjgB,KAAAA,CAAQ,IAAI8nD,KAClB9nD,CAAAA,KAAMgoD,CAAAA,KAAK,CAAGl9C,IACd9K,CAAAA,KAAAA,CAAMC,aAAa,CAAG,CACpB,IAAI+J,YAAAA,CAAa5F,KAAM,IAAI,CAACuH,SAAS,CAAEb,MACxC,CACD,IAAI,CAAC9K,KAAK,CAAGA,KACb,CAAA,IAAI,CAACujJ,MAAM,CAAG,KAChB,CACF,CACA,IAAIpxQ,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC0C,KAAK,CAEnB,IAAIw/M,KAAAA,CAAMhyN,KAAK,CAAE,CACf,MAAMowO,MAAAA,CAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,IAAI6wC,GAAAA,CAAMjhR,KACV,CAAA,GAAIA,KAAiBotO,YAAAA,KAAAA,CAAO,CAC1B6zC,GAAMjhR,CAAAA,KAAAA,CAAMqiC,GACd,CACA,GAAI,IAAI,CAAC6+O,MAAM,GAAKD,GAAK,CAAA,CACvB,GAAI,IAAI,CAACC,MAAM,CAAE,CACf9wC,OAAO9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC4hR,MAAM,CAAC,CAAC,CAAE,IAAI,CAACisC,kBAAkB,CAAE,IAAI,CAC9D,CAAA,MAAMttB,MAAQzvD,MAAOh2O,CAAAA,GAAG,CAAC,IAAI,CAAC8mR,MAAM,CAAA,CACpC,GAAI2e,KAAAA,CAAO,CACT,IAAI,CAACutB,iBAAiB,CAACvtB,KACzB,EAAA,CACF,CACA,IAAI,CAAC3e,MAAM,CAAGD,GACd,CAAA,GAAI,IAAI,CAACC,MAAM,CAAE,CACf,MAAMlvD,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAAC8mR,MAAM,CAAA,CACpC,GAAI,CAAClvD,KAAAA,CAAO,CACV,IAAI,CAACr0F,KAAK,CAAG,IACbyyG,CAAAA,MAAAA,CAAO1wO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAACwhR,MAAM,CAAC,CAAC,CAAE,IAAI,CAACisC,kBAAkB,CAAE,IAAI,EAC/D,CAAO,KAAA,CACL,IAAI,CAACD,eAAe,CAACl7F,KAAAA,EACvB,CACF,CAAA,KAAO,CACL,IAAI,CAACr0F,KAAK,CAAG,KACf,CACF,CACF,CACA,IAAIq0F,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACkvD,MAAM,CAEpB,IAAIvjJ,KAAAA,CAAM39H,KAAK,CAAE,CACf,GAAI,IAAI,CAAC8vI,MAAM,GAAK9vI,KAAO,CAAA,CACzB,MACF,CACA,GAAIA,KAASA,EAAAA,KAAAA,CAAMonL,UAAU,CAAE,CAC7B,MACF,CACA,GAAI,IAAI,CAACt3C,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACs3C,UAAU,CAAG,KACzB,CAAA,IAAI,CAAC13C,qBAAqB,EAC1B,CAAA,IAAI,CAACI,MAAM,CAAC41C,QAAQ,EAAA,CAAGlkJ,OAAO,EAC9B,CAAA,OAAO,IAAI,CAACsuG,MAAM,CAACopJ,OAAO,CAC1B,GAAI,IAAI,CAACm0B,YAAY,CAAE,CACrB,IAAI,CAACv9K,MAAM,CAACtuG,OAAO,EACnB,CAAA,IAAI,CAAC6rR,YAAY,CAAG,MACtB,CACF,CACA,IAAI,CAACv9K,MAAM,CAAG9vI,MACd,GAAI,IAAI,CAAC8vI,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAACs3C,UAAU,CAAG,IACzB,CAAA,MAAMxpD,aAAgB,CAAA,IAAI,CAACkS,MAAM,CAAClS,aAAa,CAC/C,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3CulI,aAAa,CAACvlI,CAAE,CAAA,CAAC40I,UAAU,CAAG,IAAI,CAACgxC,YAAY,CAC/CrgD,aAAa,CAACvlI,CAAAA,CAAE,CAAC4xI,aAAa,CAAG,IAAI,CAACqjL,eAAe,CACrD1vL,aAAa,CAACvlI,CAAE,CAAA,CAAC20I,aAAa,CAAC,IAAI,CAAC5E,WAAW,EACjD,CACA,IAAI,CAAC65H,WAAW,CAAG,IAAI,CAACsrD,YAAY,CACpC,IAAI,CAACtuL,MAAM,CAAC4hB,QAAQ,CAAC,IAAI,CAAC/Q,MAAM,CAAC61C,KAAK,CACtC,CAAA,GAAI,IAAI,CAACz6K,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACmuR,gBAAgB,GACvB,CACA,IAAI,CAACvpJ,MAAM,CAACopJ,OAAO,CAAG,IAAI,CAACj6J,MAAM,CACjC,GAAI,IAAI,CAACA,MAAM,CAACo6E,SAAS,CAAE,CACzB,IAAI,CAACp6E,MAAM,CAACo6E,SAAS,CAACw6D,QAAQ,CAAC,IAAI,CAAC/jI,MAAM,EAC5C,CACA,GAAI,IAAI,CAAC7Q,MAAM,CAACo+G,IAAI,CAAE,CACpB,IAAI,CAACp+G,MAAM,CAACo+G,IAAI,CAACgyB,MAAM,GACzB,CACA,GAAI,IAAI,CAACv/P,IAAI,GAAK,OAAA,CAAS,CACzB,IAAI,CAACgoG,OAAO,CAAG,IAAI,CAAC01M,SAAQ,CAC9B,KAAO,CACL,IAAI,CAACC,oBAAoB,GAC3B,CACF,CACF,CACA,IAAI9vL,OAAQ,CACV,OAAO,IAAI,CAACmS,MAAM,CAEpB,IAAImyH,WAAAA,CAAYjiQ,KAAK,CAAE,CACrB,GAAIA,QAAU,IAAI,CAACutT,YAAY,CAAE,CAC/B,IAAI,CAACA,YAAY,CAAGvtT,MACpB,GAAI,IAAI,CAAC8vI,MAAM,CAAE,CACf,MAAM1B,EAAAA,CAAK,IAAI,CAAC0B,MAAM,CAAClS,aAAa,CACpC,IAAI,IAAIvlI,CAAAA,CAAI,EAAGA,CAAI+1I,CAAAA,EAAAA,CAAG91I,MAAM,CAAED,CAAI,EAAA,CAAA,CAChC+1I,EAAE,CAAC/1I,EAAE,CAAC00I,cAAc,CAAC/sI,KAAAA,EACvB,CACF,CACF,CACF,CACA,IAAIiiQ,aAAc,CAChB,OAAO,IAAI,CAACsrD,YACd,CACA,IAAI/mK,YAAYxmJ,KAAK,CAAE,CACrB,GAAI,IAAI,CAACi+K,YAAY,GAAKj+K,KAAAA,CAAO,OACjC,MAAM29H,KAAAA,CAAQ,IAAI,CAACmS,MAAM,CACzB,GAAInS,KAAAA,CAAO,CACT,MAAMX,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMD,KAAQ,CAAA,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,GAAI,IAAI,CAACkhD,YAAY,EAAI,CAACj+K,KAAAA,CAAO,CAC/B,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,EAAI2kI,MAAO1kI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACtE,GAAI,CAAC+kI,MAAO,SACZA,KAAAA,CAAMk5C,mBAAmB,CAAC34C,MAAMC,aAAa,EAC/C,CACF,CACA,MAAMA,aAAgBD,CAAAA,KAAAA,CAAMC,aAAa,CACzC,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,EAAIulI,aAActlI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3CulI,aAAa,CAACvlI,CAAE,CAAA,CAAC40I,UAAU,CAAGjtI,MAChC,CACA,GAAI,CAAC,IAAI,CAACi+K,YAAY,EAAIj+K,KAAO,CAAA,CAC/B,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,CAAI2kI,CAAAA,MAAAA,CAAO1kI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAM+kI,KAAQL,CAAAA,KAAAA,CAAMC,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,EACjD,GAAI,CAAC+kI,KAAO,CAAA,SACZA,MAAMg5C,gBAAgB,CAACz4C,KAAMC,CAAAA,aAAa,EAC5C,CACF,CACF,CACA,IAAI,CAACqgD,YAAY,CAAGj+K,MACtB,CACA,IAAIwmJ,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACy3B,YAAY,CAE1B,IAAIyvI,cAAAA,CAAe1tT,KAAK,CAAE,CACxB,GAAI,IAAI,CAACstT,eAAe,GAAKttT,KAAO,CAAA,OACpC,IAAI,CAACstT,eAAe,CAAGttT,KACvB,CAAA,GAAI,IAAI,CAAC8vI,MAAM,CAAE,CACf,MAAMlS,aAAAA,CAAgB,IAAI,CAACkS,MAAM,CAAClS,aAAa,CAC/C,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGkY,GAAMqtH,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CACtDulI,aAAa,CAACvlI,CAAAA,CAAE,CAAC4xI,aAAa,CAAGjqI,MACnC,CACF,CACF,CACA,IAAI0tT,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACJ,eAAe,CAE7B,IAAIlrD,mBAAoBpiQ,CAAAA,KAAK,CAAE,CAC7B,IAAI,CAAC2tT,oBAAoB,CAAG3tT,MAC9B,CACA,IAAIoiQ,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACurD,oBAAoB,CAElC,IAAIj5G,sBAAAA,CAAuB10M,KAAK,CAAE,CAChC,IAAI,CAAC4tT,uBAAuB,CAAG5tT,MACjC,CACA,IAAI00M,sBAAyB,EAAA,CAC3B,OAAO,IAAI,CAACk5G,uBACd,CACA,IAAI5wL,MAAOh9H,CAAAA,KAAK,CAAE,CAChB,MAAMg9H,MAAS,CAAA,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,GAAI,IAAI,CAACY,aAAa,CAAE,CACtB,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM+kI,KAAAA,CAAQJ,OAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,CACjD,CAAA,GAAI,CAAC+kI,KAAAA,CAAO,SACZA,KAAAA,CAAMG,mBAAmB,CAAC,IAAI,CAACK,aAAa,EAC9C,CACF,CACA,IAAI,CAACub,OAAO,CAAC7gJ,MAAM,CAAG,CAAA,CACtB,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAI2H,KAAM1H,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnC,IAAI,CAAC8gJ,OAAO,CAAC9gJ,EAAE,CAAG2H,KAAK,CAAC3H,CAAAA,EAAE,CAE5B,GAAI,CAAC,IAAI,CAAC6S,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,EAAI,CAAC,IAAI,CAAC0yH,aAAa,CAAE,OAClE,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,MAAM+kI,KAAAA,CAAQJ,MAAOK,CAAAA,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,CACjD,GAAI,CAAC+kI,MAAO,SACZA,KAAAA,CAAME,gBAAgB,CAAC,IAAI,CAACM,aAAa,EAC3C,CACF,CACA,IAAIZ,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OACd,CACA,IAAIrb,YAAa99H,CAAAA,KAAK,CAAE,CACtB,GAAI,IAAI,CAACszS,aAAa,GAAKtzS,KAAO,CAAA,OAClC,GAAI,IAAI,CAACi/H,MAAM,CAAC/zH,OAAO,EAAI,IAAI,CAACooS,aAAa,EAAI,CAAG,CAAA,CAClD,IAAI,CAACl/D,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAEp8O,MAAAA,CAAOq7H,UAAWM,CAAAA,KAAK,CAAE,IAAI,CAACP,YAAY,CAAE,IAAI,CAACmB,MAAM,EAClF,CACA,GAAI,IAAI,CAACA,MAAM,CAAC/zH,OAAO,EAAIlL,KAAS,EAAA,CAAA,CAAG,CACrC,IAAI,CAACo0O,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE12O,MAAAA,CAAO21H,UAAWM,CAAAA,KAAK,CAAEr+H,KAAAA,CAAO,IAAI,CAACi/H,MAAM,EACtE,CACA,GAAIj/H,KAAQ,CAAA,CAAA,EAAK,IAAI,CAACszS,aAAa,EAAI,CAAA,EAAK,IAAI,CAACpoS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC/E,IAAI,CAACmuR,gBAAgB,GACvB,CACA,IAAI,CAACia,aAAa,CAAGtzS,MACvB,CACA,IAAI89H,YAAe,EAAA,CACjB,OAAO,IAAI,CAACw1K,aACd,CACA,IAAIjhE,aAAAA,CAAcryO,KAAK,CAAE,CACvB,IAAIihR,GAAAA,CAAMjhR,KACV,CAAA,GAAIA,KAAiBotO,YAAAA,KAAAA,CAAO,CAC1B6zC,GAAAA,CAAMjhR,MAAMqiC,GACd,CACA,MAAM+tM,OAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAI6wC,GAAQ,GAAA,IAAI,CAAC6Z,cAAc,CAAE,CAC/B,GAAI,IAAI,CAACA,cAAc,CAAE,CACvB1qD,MAAAA,CAAO9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAACw7R,cAAc,CAAC,CAAC,CAAE,IAAI,CAAC+yB,mBAAmB,CAAE,IAAI,CAAA,CACvE,MAAMhuB,KAAAA,CAAQzvD,OAAOh2O,GAAG,CAAC,IAAI,CAAC0gS,cAAc,CAAA,CAC5C,GAAI+E,KAAAA,CAAO,CACT,IAAI,CAACtC,oBAAoB,CAACsC,OAC5B,CACF,CACA,IAAI,CAAC/E,cAAc,CAAG7Z,GAAAA,CACtB,GAAI,IAAI,CAAC6Z,cAAc,CAAE,CACvB,MAAM9oE,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAAC0gS,cAAc,CAC5C,CAAA,GAAI,CAAC9oE,KAAO,CAAA,CACV,IAAI,CAAC+zE,YAAY,CAAC,IAAI,CAAC3xD,MAAM,CAACngF,eAAe,CAC7Cm8E,CAAAA,MAAAA,CAAO1wO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAACo7R,cAAc,CAAC,CAAC,CAAE,IAAI,CAAC+yB,mBAAmB,CAAE,IAAI,EACxE,CAAO,KAAA,CACL,IAAI,CAACzwB,kBAAkB,CAACprE,KAAAA,EAC1B,CACF,CAAO,KAAA,CACL,IAAI,CAAC+zE,YAAY,CAAC,IAAI,CAAC3xD,MAAM,CAACngF,eAAe,EAC/C,CACF,CACF,CACA,IAAIo+E,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACyoD,cACd,CACA,IAAI5/J,QAASl7H,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAACspI,SAAS,GAAKtpI,KAAAA,CAAO,CAC5B,MACF,CACA,IAAI,CAACqyO,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC0zD,YAAY,CAAC/lS,KACpB,EAAA,CACA,IAAIk7H,QAAAA,EAAW,CACb,OAAO,IAAI,CAACoO,SAAS,CAEvB,IAAIxxB,OAAAA,CAAQ93G,KAAK,CAAE,CACjB,GAAI,IAAI,CAACwS,KAAK,GAAK,OAAA,CAAS,CAC1B,MACF,CACA,IAAI,CAACi7S,oBAAoB,EACzB,CAAA,GAAI,CAACztT,KAAAA,CAAO,CACVA,KAAAA,CAAQ,GACV,CACA,IAAI,CAACwtT,QAAQ,CAAGxtT,MAChB,GAAI,CAAC,IAAI,CAAC8vI,MAAM,CAAE,OAClB,MAAMlS,aAAAA,CAAgB,IAAI,CAACkS,MAAM,CAAClS,aAAa,CAC/C,MAAMm0G,UAAa,CAAA,IAAI,CAAC/f,KAAK,CAAG,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC43N,KAAK,CAAA,CAAI,IACzE,CAAA,MAAM87F,aAAe/7E,UAAaA,CAAAA,UAAAA,CAAW1/N,IAAI,CAACylG,OAAO,CAAG,IAAA,CAC5D,IAAIk6G,KAAAA,CAAQ,IACZ,CAAA,IAAI,IAAI35N,CAAAA,CAAI,EAAGkY,GAAMqtH,CAAAA,aAAAA,CAActlI,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACtD,GAAI2H,KAAK,CAAC3H,CAAAA,CAAE,GAAK8H,SAAAA,CAAW,CAC1B,GAAIH,KAAK,CAAC3H,EAAE,CAAE,CACZ25N,KAAQ,CAAA,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC4F,KAAK,CAAC3H,CAAAA,CAAE,CAC3C,CAAA,IAAI,CAAC01T,+BAA+B,CAAC/7F,KAAOp0F,CAAAA,aAAa,CAACvlI,CAAE,CAAA,CAAEA,CAChE,EAAA,CAAA,KAAO,CACLulI,aAAa,CAACvlI,CAAE,CAAA,CAAC6iI,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBAAe,CAE3D,CAAO,KAAA,GAAI65J,YAAc,CAAA,CACvB,GAAIA,YAAY,CAACz1T,CAAE,CAAA,GAAKy1T,YAAY,CAACz1T,CAAAA,CAAE,CAAC6iI,QAAQ,EAAI4yL,YAAY,CAACz1T,EAAE,CAACL,IAAI,CAAD,CAAI,CACzE,GAAI81T,YAAY,CAACz1T,CAAAA,CAAE,CAAC6iI,QAAQ,GAAK/6H,SAAAA,CAAW,CAC1C6xN,KAAQ,CAAA,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC0zT,YAAY,CAACz1T,CAAAA,CAAE,CAAC6iI,QAAQ,EAC7D,CAAA,KAAO,GAAI4yL,YAAY,CAACz1T,CAAE,CAAA,CAACL,IAAI,GAAKmI,SAAAA,CAAW,CAC7C,MAAM+C,IAAM,IAAI,CAAC8qT,oBAAoB,CAACF,YAAY,CAACz1T,CAAE,CAAA,CAACL,IAAI,CAC1D,CAAA,GAAIkL,GAAK,CAAA,CACP8uN,MAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACS,QAAQ,CAAC3tO,GAAAA,EAC1C,CACF,CACA,IAAI,CAAC6qT,+BAA+B,CAAC/7F,KAAAA,CAAOp0F,aAAa,CAACvlI,CAAAA,CAAE,CAAEA,CAAAA,EAChE,MAAO,CACLulI,aAAa,CAACvlI,CAAAA,CAAE,CAAC6iI,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBAC1C,CACF,CACF,CACF,CACA,IAAIn8C,SAAU,CACZ,OAAO,IAAI,CAAC01M,QACd,CACAn0B,gBAAAA,EAAmB,CACjB,MAAMr8J,MAAAA,CAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM+kI,KAAAA,CAAQJ,OAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,CACjD,GAAI+kI,KAAO,CAAA,CACTA,KAAME,CAAAA,gBAAgB,CAAC,IAAI,CAACM,aAAa,EAC3C,CACF,CACF,CACA8R,qBAAwB,EAAA,CACtB,MAAM1S,MAAAA,CAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,IAAI,CAC1C,MAAM+kI,KAAQJ,CAAAA,MAAAA,CAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,CACjD,GAAI,CAAC+kI,KAAO,CAAA,SACZA,KAAMG,CAAAA,mBAAmB,CAAC,IAAI,CAACK,aAAa,EAC9C,CACF,CACAqwL,aAAgB,EAAA,CACd,GAAI,IAAI,CAACn+K,MAAM,CAAE,CACf,IAAI,CAACJ,qBAAqB,GAC5B,CACF,CACAw+K,aAAgB,EAAA,CACd,GAAI,IAAI,CAACp+K,MAAM,EAAI,IAAI,CAAC5kI,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACtD,IAAI,CAACmuR,gBAAgB,GACvB,CACF,CACA9N,QAAW,EAAA,CACT,IAAI,CAACv5D,KAAK,CAAG,IACb,CAAA,IAAI,CAACr0F,KAAK,CAAG,IACb,CAAA,IAAI,CAAC00G,aAAa,CAAG,IAAA,CACrB,IAAI,CAACo7E,oBAAoB,EACzB,CAAA,IAAI,CAACxuL,MAAM,CAAC3/H,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC2uT,aAAa,CAAE,IAAI,CAClD,CAAA,IAAI,CAAChvL,MAAM,CAAC3/H,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC4uT,aAAa,CAAE,IAAI,EACpD,CACAvW,eAAAA,CAAgBC,OAAO,CAAEC,OAAO,CAAE,CAChC,IAAI,CAACxe,gBAAgB,EACrBue,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,KAAO,CAAA,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAAA,CAC1CF,OAAQt4S,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAAA,CAC/CF,OAAQn4S,CAAAA,EAAE,CAAC,KAAA,CAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CACzCD,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,YAAa16K,CAAAA,KAAK,CAAE,CAClB,MAAMl/H,KAAQ,CAAA,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAM/6F,CAAAA,EAAE,EAC1C,GAAInkC,KAAAA,CAAQ,CAAG,CAAA,OACfk/H,KAAME,CAAAA,gBAAgB,CAAC,IAAI,CAACM,aAAa,EAC3C,CACAm6K,cAAAA,CAAe36K,KAAK,CAAE,CACpB,MAAMl/H,KAAAA,CAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACfk/H,KAAAA,CAAMG,mBAAmB,CAAC,IAAI,CAACK,aAAa,EAC9C,CACAuwL,iBAAAA,CAAkBjwT,KAAK,CAAEk8F,KAAK,CAAE/3D,EAAE,CAAE7iC,OAAO,CAAE,CAC3C,MAAMsB,GAAAA,CAAM,CAAC,EAAEs5F,KAAAA,CAAM,CAAC,EAAE/3D,GAAG,CAAC,CAC5B,IAAI,CAAC+xM,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC1wO,EAAE,CAACoB,GAAAA,CAAKtB,OAAS,CAAA,IAAI,CAC5C,CAAA,GAAI,CAAC,IAAI,CAAC4uT,eAAe,CAAE,CACzB,IAAI,CAACA,eAAe,CAAG,GACzB,CACA,GAAI,CAAC,IAAI,CAACA,eAAe,CAAClwT,MAAM,CAAE,CAChC,IAAI,CAACkwT,eAAe,CAAClwT,KAAM,CAAA,CAAG,GAChC,CACA,IAAI,CAACkwT,eAAe,CAAClwT,KAAAA,CAAM,CAAC4C,GAAAA,CAAI,CAAG,CACjCuhC,EAAAA,CAAIA,EACJ7iC,CAAAA,OAAAA,CAASA,OACX,EACF,CACAiuT,oBAAAA,EAAuB,CACrB,MAAMr9E,MAAAA,CAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,MAAMi5B,MAAAA,CAAS,IAAI,CAAC+kD,eAAe,CACnC,GAAI,CAAC/kD,OAAQ,CACX,MACF,CACA,IAAI,IAAIhxQ,CAAI,CAAA,CAAA,CAAGkY,GAAM84P,CAAAA,MAAAA,CAAO/wQ,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC/C,GAAI,CAACgxQ,MAAM,CAAChxQ,CAAE,CAAA,CAAE,SAChB,MAAMyI,IAAMuoQ,MAAM,CAAChxQ,CAAE,CAAA,CACrB,IAAI,MAAM6H,GAAAA,IAAOY,GAAI,CAAA,CACnBsvO,MAAO9wO,CAAAA,GAAG,CAACY,GAAAA,CAAKY,GAAG,CAACZ,GAAAA,CAAI,CAACV,OAAO,CAAE,IAAI,EACxC,CACF,CACA,IAAI,CAAC4uT,eAAe,CAAG,KACzB,CACAC,mBAAAA,CAAoBC,QAAQ,CAAE,CAC5B,IAAIt8F,KAAAA,CAAQ,IACZ,CAAA,MAAMu8F,OAASj/P,KAAM/gD,CAAAA,QAAAA,CAAS+/S,QAAU,CAAA,EAAA,CAAA,CAAA,CACxC,GAAI,CAACC,MAAAA,CAAQ,CACXv8F,KAAAA,CAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACk0T,QAAAA,EACrC,CAAO,KAAA,GAAI,IAAI,CAACt8F,KAAK,CAAE,CACrB,MAAM9uN,GAAAA,CAAM,IAAI,CAAC8qT,oBAAoB,CAACM,QAAAA,CAAAA,CACtC,GAAIprT,GAAAA,CAAK,CACP8uN,KAAQ,CAAA,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACS,QAAQ,CAAC3tO,GAC1C,EAAA,CACF,CACA,OAAO8uN,KACT,CACAg8F,oBAAAA,CAAqBh2T,IAAI,CAAE,CACzB,GAAI,CAAC,IAAI,CAACg6N,KAAK,CAAE,OAAO,IACxB,CAAA,MAAM+f,UAAa,CAAA,IAAI,CAACqC,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC43N,KAAK,CAAA,CACxD,OAAO+f,UAAAA,CAAaA,UAAWnD,CAAAA,cAAc,CAAC52O,IAAAA,CAAAA,CAAQ,IACxD,CACA+1T,+BAAAA,CAAgC17E,aAAa,CAAEp1G,YAAY,CAAE/+H,KAAK,CAAE,CAClE,MAAMkyO,MAAS,CAAA,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAI,CAACiC,aAAe,CAAA,CAClB,MACF,CACA,GAAIA,aAAczyL,CAAAA,QAAQ,CAAE,CAC1Bq9E,YAAAA,CAAa/B,QAAQ,CAAGm3G,aAAczyL,CAAAA,QAAQ,CAC9C,IAAI,CAACuuQ,iBAAiB,CAACjwT,KAAO,CAAA,QAAA,CAAUm0O,cAAchwM,EAAE,CAAE,UACxD46F,CAAAA,YAAAA,CAAa/B,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBAAe,CACrD,EACF,MAAO,CACL,IAAI,CAACk6J,iBAAiB,CAACjwT,KAAO,CAAA,MAAA,CAAQm0O,aAAchwM,CAAAA,EAAE,CAAE,SAAS2vL,KAAK,CACpE/0F,CAAAA,YAAAA,CAAa/B,QAAQ,CAAG82F,KAAMpyK,CAAAA,QAAQ,CACtC,IAAI,CAACuuQ,iBAAiB,CAACjwT,KAAO,CAAA,QAAA,CAAUm0O,aAAchwM,CAAAA,EAAE,CAAE,UACxD46F,CAAAA,YAAAA,CAAa/B,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBAAe,CACrD,EACF,CACA,CAAA,CAAA,GAAI,IAAI,CAAC/oJ,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvCklO,MAAAA,CAAO7B,IAAI,CAAC8D,eACd,CACF,CACF,CACAvuI,QAAAA,EAAW,CACT,MAAMukI,GAAAA,CAAM,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMtrG,KAAQsrG,CAAAA,GAAAA,CAAItrG,KAAK,CACvB,MAAMC,MAASD,CAAAA,KAAAA,EAAOC,MACtB,CAAA,IAAI,CAACi7K,iBAAiB,CAAGl7K,KAAAA,CAAMr9H,EAAE,CAAC,YAAA,CAAc,IAAI,CAACi4S,eAAe,CAAE,IAAI,CAAA,CAC1E,GAAI36K,MAAQ,CAAA,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,MAAAA,CAAOt9H,EAAE,CAAC,MAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,CAAGn7K,MAAOt9H,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,MAAMyW,OAAU,CAAA,IAAI,CAACh8S,KAAK,GAAK,OAC/B,CAAA,IAAIw/M,KACJ,CAAA,GAAI,IAAI,CAACliF,MAAM,CAAE,CACf,IAAI,CAACupJ,gBAAgB,GACvB,CAAA,KAAO,GAAIm1B,OAAAA,EAAW,IAAI,CAACttC,MAAM,CAAE,CACjClvD,KAAQqW,CAAAA,GAAAA,CAAI+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC8mR,MAAM,CAAA,CAClC,GAAIlvD,KAAAA,EAASA,KAAMpyK,CAAAA,QAAQ,GAAK,IAAI,CAACkwF,MAAM,CAAE,CAC3C,IAAI,CAACo9K,eAAe,CAACl7F,KAAAA,EACvB,CACF,CACA,GAAI,IAAI,CAAC8oE,cAAc,CAAE,CACvB9oE,KAAAA,CAAQqW,IAAI+H,MAAM,CAACh2O,GAAG,CAAC,IAAI,CAAC0gS,cAAc,CAC1C,CAAA,GAAI9oE,OAASA,KAAMpyK,CAAAA,QAAQ,GAAK,IAAI,CAAC0pF,SAAS,CAAE,CAC9C,IAAI,CAAC8zJ,kBAAkB,CAACprE,KAAAA,EAC1B,CACF,CACA,GAAIw8F,OAAS,CAAA,CACX,GAAI,IAAI,CAAChB,QAAQ,CAAE,CACjB,IAAI,MAAMtvT,KAAAA,IAAS,IAAI,CAACsvT,QAAQ,CAAC,CAC/B,GAAI,IAAI,CAACA,QAAQ,CAACtvT,MAAM,CAAE,CACxB8zN,KAAQ,CAAA,IAAI,CAACq8F,mBAAmB,CAAC,IAAI,CAACb,QAAQ,CAACtvT,KAAM,CAAA,CAAA,CACrD,GAAI8zN,KAAS,EAAA,CAACA,KAAMpyK,CAAAA,QAAQ,CAAE,CAC5ByoL,GAAAA,CAAI+H,MAAM,CAAC7B,IAAI,CAACvc,KAClB,EAAA,CACF,CACF,CACF,CACF,CACA,GAAI,IAAI,CAACshF,aAAa,EAAI,CAAA,CAAG,CAC3BjrE,GAAIyW,CAAAA,OAAO,EAAE12O,MAAAA,CAAO21H,UAAWM,CAAAA,KAAK,CAAE,IAAI,CAACP,YAAY,CAAE,IAAI,CAACmB,MAAM,EACtE,CACF,CACAl7B,SAAAA,EAAY,CACV,MAAMskI,GAAAA,CAAM,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMtrG,KAAQsrG,CAAAA,GAAAA,CAAItrG,KAAK,CACvB,MAAMC,MAASD,CAAAA,KAAAA,CAAMC,MACrB,CAAA,IAAI,CAACi7K,iBAAiB,EAAE34S,GACxB,EAAA,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,IAAA,CACzB,GAAIj7K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,GAAAA,EACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,GAAI,IAAI,CAAC7E,aAAa,EAAI,CAAG,CAAA,CAC3BjrE,IAAIyW,OAAO,EAAEp8O,MAAOq7H,CAAAA,UAAAA,CAAWM,KAAK,CAAE,IAAI,CAACP,YAAY,CAAE,IAAI,CAACmB,MAAM,EACtE,CACA,GAAI,IAAI,CAAC6Q,MAAM,CAAE,CACf,IAAI,CAACJ,qBAAqB,GAC5B,CACF,CACA++K,IAAAA,EAAO,CACL,GAAI,IAAI,CAAC3+K,MAAM,CAAE,CACf,MAAM0oC,SAAAA,CAAY,IAAI,CAAC1oC,MAAM,CAAClS,aAAa,CAC3C,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAG6e,EAAIshK,SAAUlgL,CAAAA,MAAM,CAAED,CAAAA,CAAI6e,CAAG7e,CAAAA,CAAAA,EAAAA,CAAI,CAC9CmgL,SAAS,CAACngL,CAAE,CAAA,CAACkzI,OAAO,CAAG,MACzB,CACF,CACF,CACAmjL,IAAAA,EAAO,CACL,GAAI,IAAI,CAAC5+K,MAAM,CAAE,CACf,MAAM0oC,SAAAA,CAAY,IAAI,CAAC1oC,MAAM,CAAClS,aAAa,CAC3C,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAG6e,EAAIshK,SAAUlgL,CAAAA,MAAM,CAAED,CAAAA,CAAI6e,CAAG7e,CAAAA,CAAAA,EAAAA,CAAI,CAC9CmgL,SAAS,CAACngL,CAAE,CAAA,CAACkzI,OAAO,CAAG,KACzB,CACF,CACF,CACA6xJ,kBAAAA,CAAmBprE,KAAK,CAAE,CACxBA,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACivT,oBAAoB,CAAE,IAAI,CAChD38F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAACkvT,sBAAsB,CAAE,IAAI,CAAA,CACpD58F,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACmvT,sBAAsB,CAAE,IAAI,EACpD78F,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACovT,sBAAsB,CAAE,IAAI,CACpD,CAAA,GAAI98F,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAAC+uQ,oBAAoB,CAAC38F,KAC5B,EAAA,CAAA,KAAO,CACL,GAAI,CAAC,IAAI,CAAC9mN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACAurE,oBAAqBvrE,CAAAA,KAAK,CAAE,CAC1BA,KAAAA,CAAM1yN,GAAG,CAAC,OAAQ,IAAI,CAACqvT,oBAAoB,CAAE,IAAI,CACjD38F,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACsvT,sBAAsB,CAAE,IAAI,CAAA,CACrD58F,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACuvT,sBAAsB,CAAE,IAAI,CAAA,CACrD78F,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACwvT,sBAAsB,CAAE,IAAI,EACvD,CACAjB,oBAAoB77F,KAAK,CAAE,CACzB,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAM3vL,CAAAA,EAAE,CAAC,CAAC,CAAE,IAAI,CAACwrR,mBAAmB,CAAE,IAAI,CAC5E,CAAA,GAAI,IAAI,CAAC/yB,cAAc,GAAK9oE,MAAM3vL,EAAE,CAAE,CACpC,IAAI,CAAC+6P,kBAAkB,CAACprE,KAAAA,EAC1B,CACF,CACA28F,oBAAAA,CAAqB38F,KAAK,CAAE,CAC1B,IAAI,CAAC+zE,YAAY,CAAC/zE,KAAMpyK,CAAAA,QAAQ,EAClC,CACAgvQ,uBAAuB58F,KAAK,CAAE,CAC5B,IAAI,CAAC+zE,YAAY,CAAC,IAAI,CAAC3xD,MAAM,CAACngF,eAAe,EAC/C,CACA46J,sBAAuB78F,CAAAA,KAAK,CAAE,CAC5B,IAAI,CAAC48F,sBAAsB,CAAC58F,KAAAA,EAC9B,CACA88F,sBAAuB98F,CAAAA,KAAK,CAAE,EAC9Bk7F,eAAAA,CAAgBl7F,KAAK,CAAE,CACrB,IAAI,CAACo7F,iBAAiB,CAACp7F,OACvBA,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACqvT,iBAAiB,CAAE,IAAI,CAC7C/8F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,SAAU,IAAI,CAACsvT,mBAAmB,CAAE,IAAI,CAAA,CACjDh9F,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACuvT,mBAAmB,CAAE,IAAI,CACjDj9F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAA,CAAU,IAAI,CAACwvT,mBAAmB,CAAE,IAAI,CACjD,CAAA,GAAIl9F,MAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAACmvQ,iBAAiB,CAAC/8F,KAAAA,EACzB,MAAO,CACL,GAAI,CAAC,IAAI,CAAC9mN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACAo7F,kBAAkBp7F,KAAK,CAAE,CACvBA,KAAAA,CAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACyvT,iBAAiB,CAAE,IAAI,CAAA,CAC9C/8F,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC0vT,mBAAmB,CAAE,IAAI,CAClDh9F,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,SAAU,IAAI,CAAC2vT,mBAAmB,CAAE,IAAI,CAClDj9F,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,SAAU,IAAI,CAAC4vT,mBAAmB,CAAE,IAAI,EACpD,CACA/B,kBAAAA,CAAmBn7F,KAAK,CAAE,CACxB,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC8qR,kBAAkB,CAAE,IAAI,CAAA,CAC3E,GAAIn7F,KAAAA,CAAM3vL,EAAE,GAAK,IAAI,CAAC6+O,MAAM,CAAE,CAC5B,IAAI,CAACgsC,eAAe,CAACl7F,KAAAA,EACvB,CACF,CACA+8F,kBAAkB/8F,KAAK,CAAE,CACvB,IAAI,CAACr0F,KAAK,CAAGq0F,KAAMpyK,CAAAA,QAAQ,CAACjyC,KAAK,EACjC,CAAA,IAAI,CAAC0/S,YAAY,CAAG,KACtB,CACA2B,mBAAoBh9F,CAAAA,KAAK,CAAE,CACzB,IAAI,CAACr0F,KAAK,CAAG,KACf,CACAsxL,mBAAAA,CAAoBj9F,KAAK,CAAE/2I,IAAI,CAAEqiK,IAAI,CAAEpP,IAAI,CAAE,CAC3C,GAAIjzJ,IAAS,GAAA,MAAA,CAAQ,CACnB,IAAI,CAAC68B,OAAO,CAAG,IAAI,CAAC01M,SACtB,CACF,CACA0B,mBAAAA,CAAoBl9F,KAAK,CAAE,CACzB,IAAI,CAACr0F,KAAK,CAAG,KACf,CACAooK,YAAAA,CAAa7qK,QAAQ,CAAE,CACrB,GAAI,IAAI,CAACoO,SAAS,GAAKpO,QAAAA,CAAU,CAC/B,MACF,CACA,IAAI,CAACoO,SAAS,CAAGpO,QACjB,CAAA,MAAMyC,KAAQ,CAAA,IAAI,CAACmS,MAAM,CACzB,GAAInS,OAAS,IAAI,CAACnrH,KAAK,GAAK,QAAS,CACnC,MAAMorH,aAAgBD,CAAAA,KAAAA,CAAMC,aAAa,CACzC,IAAI,IAAIvlI,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMqtH,aAActlI,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACtDulI,aAAa,CAACvlI,CAAAA,CAAE,CAAC6iI,QAAQ,CAAGA,SAC9B,CACF,CACF,CAxmBA96H,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,QAAS,IAAI,CAACzsH,KAAK,CAAG,QAAS,IAAI,CAAC0uQ,MAAM,CAAG,IAAM,CAAA,IAAI,CAACpxI,MAAM,CAAG,IAAM,CAAA,IAAI,CAAC09K,QAAQ,CAAG,EAAC,CAAG,IAAI,CAACvvI,YAAY,CAAG,IAAA,CAAM,IAAI,CAACqvI,eAAe,CAAG,IAAM,CAAA,IAAI,CAACxyB,cAAc,CAAG,IAAM,CAAA,IAAI,CAAC6yB,oBAAoB,CAAG,IAAM,CAAA,IAAI,CAACJ,YAAY,CAAG,KAAO,CAAA,IAAI,CAACK,uBAAuB,CAAG,CAAA,CAAG,IAAI,CAAClsI,QAAQ,CAAG,KAAA,CAAO,IAAI,CAACvoC,OAAO,CAAG,CAC/T3rB,cACD,CAAE,IAAI,CAAC8lL,aAAa,CAAG,CAAC,CAAG,CAAA,IAAI,CAAClrK,WAAW,CAAG,IAAM,CAAA,IAAI,CAACo6H,KAAK,CAAG,IAAM,CAAA,IAAI,CAAC4rD,eAAe,CAAG,IAAM,CAAA,IAAI,CAACf,YAAY,CAAG,KAAA,CAAO,IAAI,CAACpV,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAACC,cAAc,CAAG,KAAM,IAAI,CAACC,gBAAgB,CAAG,IACnN,CAAA,IAAI,CAAC7uK,SAAS,CAAG8qG,MAAAA,CAAOngF,eAAe,CACvCh1B,OAAOv/H,EAAE,CAAC,QAAU,CAAA,IAAI,CAACuuT,aAAa,CAAE,IAAI,CAAA,CAC5ChvL,MAAOv/H,CAAAA,EAAE,CAAC,iBAAA,CAAmB,IAAI,CAACuuT,aAAa,CAAE,IAAI,EACrDhvL,MAAOv/H,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACwuT,aAAa,CAAE,IAAI,CAC5CjvL,CAAAA,MAAAA,CAAOv/H,EAAE,CAAC,kBAAmB,IAAI,CAACwuT,aAAa,CAAE,IAAI,EACvD,CAgmBF,CAEA,MAAMiB,mBACJ/uT,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMkkT,SAAAA,CAAY,CAChB,SAAA,CACD,CACKC,MAAAA,oBAAAA,SAA6B7oD,eAUjCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEzL,KAAK,CAAExxF,UAAU,CAAE,CACpDA,UAAa,CAAA,CACX,WACA,eACA,CAAA,OAAA,CACA,aACA,CAAA,gBAAA,CACA,sBACA,aACA,CAAA,wBAAA,CACA,MACA,CAAA,SAAA,CACA,SACA,UACA,CAAA,cAAA,CACD,CACD,GAAIwxF,KAAMlwG,CAAAA,YAAY,GAAK,IAAA,EAAQkwG,MAAMlwG,YAAY,GAAK39H,SAAW,CAAA,CACnE6tO,MAAMlwG,YAAY,CAAG,CAAC,EACxB,CACA,GAAIkwG,KAAAA,CAAMhxG,MAAM,EAAIgxG,KAAMhxG,CAAAA,MAAM,CAAC1kI,MAAM,CAAE,CACvC01O,KAAAA,CAAMhxG,MAAM,CAAGgxG,MAAMhxG,MAAM,CAAC9jI,KAAK,CAAC,GACpC,CACA,IAAI,IAAIb,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAImkJ,UAAWlkJ,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACxC,GAAI21O,KAAAA,CAAMtpO,cAAc,CAAC83I,UAAU,CAACnkJ,EAAE,CAAG,CAAA,CACvCohP,SAAS,CAACj9F,UAAU,CAACnkJ,CAAE,CAAA,CAAC,CAAG21O,KAAK,CAACxxF,UAAU,CAACnkJ,EAAE,EAChD,CACF,CACA,GAAI21O,KAAMshF,CAAAA,UAAU,EAAIthF,KAAAA,CAAMuhF,eAAe,CAAE,CAC7C91E,SAAAA,CAAUwzE,UAAU,CAAG,IAAI3pS,WAAY,CAAA,IAAIhP,KAAK05N,KAAMshF,CAAAA,UAAU,CAAG,CAAA,IAAIh7S,KAAK05N,KAAMuhF,CAAAA,eAAe,CACnG,EAAA,CACA,KAAK,CAAC3oD,uBAAwBntB,CAAAA,SAAAA,CAAWzL,MAAO,CAC9C,SAAA,CACD,EACH,CACAmO,eAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAM0E,IAAAA,CAAO,CACXvC,IAAAA,CAAMmvH,MAAOtB,CAAAA,KAAK,CAAC7tH,IAAI,CACvBkiN,KAAO/yF,CAAAA,MAAAA,CAAOtB,KAAK,CAACq0F,KAAK,CACzBxrE,WAAAA,CAAavnB,MAAOtB,CAAAA,KAAK,CAAC6oB,WAAW,CACrCknK,cAAgBzuL,CAAAA,MAAAA,CAAOtB,KAAK,CAAC+vL,cAAc,CAC3CtrD,oBAAqBnjI,MAAOtB,CAAAA,KAAK,CAACykI,mBAAmB,CACrDH,WAAahjI,CAAAA,MAAAA,CAAOtB,KAAK,CAACskI,WAAW,CACrCvtD,sBAAAA,CAAwBz1E,MAAOtB,CAAAA,KAAK,CAAC+2E,sBAAsB,CAC3DhzB,QAAAA,CAAUziD,OAAOtB,KAAK,CAAC+jD,QAAQ,CAC/Bx2K,QAAS+zH,MAAOtB,CAAAA,KAAK,CAACzyH,OAAO,CAC7B8xH,MAAQiC,CAAAA,MAAAA,CAAOtB,KAAK,CAACX,MAAM,CAC3Bc,YAAcmB,CAAAA,MAAAA,CAAOtB,KAAK,CAACG,YAAY,CACvChmB,OAAAA,CAAS9gH,OAAO,EAAC,CAAGioI,MAAOtB,CAAAA,KAAK,CAAC7lB,OAAO,CAC1C,CACA,CAAA,IAAIu6H,aAAgBpzG,CAAAA,MAAAA,CAAOtB,KAAK,CAAC00G,aAAa,CAC9C,GAAI,EAAEA,aAAyBjF,YAAAA,KAAI,CAAMiF,EAAAA,aAAAA,EAAiB,KAAM,CAC9DA,aAAAA,CAAgB,IAAI,CAAChK,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACi4O,aAAAA,EACtC,CACA,MAAMn3G,SAAW+D,MAAOtB,CAAAA,KAAK,CAACzC,QAAQ,CACtC,GAAI,CAACA,QAAYA,EAAAA,QAAAA,GAAa,IAAI,CAAC+4B,eAAe,EAAI,CAACo+E,aAAiBn3G,EAAAA,QAAAA,GAAam3G,aAAczyL,CAAAA,QAAQ,CAAE,CAC3GvtC,IAAAA,CAAKggO,aAAa,CAAGA,cACvB,CACA,MAAMoH,SAAY,CAAA,IAAI,CAACoB,YAAY,CAACltO,KAAAA,CAAO0E,MAC3C,GAAI4sH,MAAAA,CAAOtB,KAAK,CAACA,KAAK,EAAIsB,MAAAA,CAAOtB,KAAK,CAAC7tH,IAAI,GAAK,OAAA,EAAW,CAACmvH,MAAAA,CAAOtB,KAAK,CAACq0F,KAAK,CAAE,CAC9EynB,SAAU97G,CAAAA,KAAK,CAAGsB,MAAAA,CAAOtB,KAAK,CAACA,KAAK,CAAChwH,KAAK,EAC1C8rO,CAAAA,SAAAA,CAAU4zE,YAAY,CAAG,KAC3B,CACA,GAAI,CAACh7S,KAAKggO,aAAa,CAAE,CACvBoH,SAAAA,CAAUv+G,QAAQ,CAAGA,SACvB,CACA,GAAI+D,OAAOtB,KAAK,CAACA,KAAK,CAAE,CACtB,MAAMC,aAAgBqB,CAAAA,MAAAA,CAAOtB,KAAK,CAACA,KAAK,CAACC,aAAa,CACtD,MAAM4xL,kBAAAA,CAAqB/1E,SAAU97G,CAAAA,KAAK,CAACC,aAAa,CACxD,IAAI,IAAIvlI,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3Cm3T,kBAAkB,CAACn3T,CAAE,CAAA,CAAC4zC,IAAI,CAAG2xF,aAAa,CAACvlI,CAAAA,CAAE,CAAC4zC,IAAI,CAClDujR,kBAAkB,CAACn3T,EAAE,CAAC6iI,QAAQ,CAAG0C,aAAa,CAACvlI,CAAAA,CAAE,CAAC6iI,QAAQ,CAC1Ds0L,kBAAkB,CAACn3T,CAAAA,CAAE,CAAC+kI,KAAK,CAAGQ,aAAa,CAACvlI,CAAE,CAAA,CAAC+kI,KAC/CoyL,CAAAA,kBAAkB,CAACn3T,CAAE,CAAA,CAAC4xI,aAAa,CAAGrM,aAAa,CAACvlI,CAAAA,CAAE,CAAC4xI,cAAa,CAExE,CACA,GAAIhL,MAAAA,CAAOtB,KAAK,CAACsvL,UAAU,CAAE,CAC3BxzE,SAAUwzE,CAAAA,UAAU,CAAGhuL,MAAOtB,CAAAA,KAAK,CAACsvL,UAAU,CAACt/S,KAAK,GACtD,CACA,OAAO8rO,SACT,CACA8xC,QAAStsJ,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAC1BA,SAAAA,CAAU8xC,QAAQ,GACpB,CA3FAnrR,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,IACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,OACV,CAAA,IAAI,CAACokO,aAAa,CAAGumD,cACrB,CAAA,IAAI,CAACrmD,QAAQ,CAAGwoD,kBAChB,CAAA,IAAI,CAACp2E,MAAM,CAAGq2E,SACd,CAAA,IAAI,CAACn7J,eAAe,CAAGttB,kBAAmB0hG,CAAAA,GAAAA,CAAIpmM,cAAc,CAAA,CAC5D,IAAI,CAACviC,EAAE,CAAC,eAAgB,IAAI,CAAC6rR,QAAQ,CAAE,IAAI,EAC7C,CAoFF,CACAvlB,SAAAA,CAAUC,eAAe,CAAC+mD,cAAAA,CAAetiM,SAAS,CAAE0kM,SAEpD,CAAA,CAAA,MAAMK,iBAAoB,CAAA,CACxB,iBACA,eACA,CAAA,qBAAA,CACA,oBACA,CAAA,MAAA,CACA,kBACA,WACA,CAAA,WAAA,CACA,gBACD,CAAA,CACD,MAAMC,kBAAqB,CAAA,CACzB,cACA,CAAA,UAAA,CACA,MACA,CAAA,OAAA,CACA,YACA,CAAA,aAAA,CACA,WACA,aACA,CAAA,WAAA,CACA,MACA,CAAA,YAAA,CACA,YACA,CAAA,OAAA,CACA,MACA,CAAA,SAAA,CACA,gBACA,SACA,CAAA,cAAA,CACA,YACA,CAAA,YAAA,CACA,gBACA,CAAA,eAAA,CACA,mBACA,CAAA,WAAA,CACA,qBACA,UACA,CAAA,UAAA,CACA,YACA,CAAA,aAAA,CACA,cACD,CACD,MAAMC,gBAAmB,CAAA,CACvB,aACA,aACA,CAAA,YAAA,CACA,aACA,CAAA,YAAA,CACA,aACA,CAAA,eAAA,CACA,gBACA,CAAA,oBAAA,CACA,sBACA,oBACA,CAAA,qBAAA,CACA,kBACA,CAAA,mBAAA,CACD,CACD,MAAMC,gBAAAA,CAAmB,CACvB,eAAA,CACA,iBACA,WACA,CAAA,aAAA,CACD,CACD,IAAIC,UACJ,CAAA,MAAMC,uBAAgC9pD,SAAAA,SAAAA,CAsBpC,IAAI3zP,IAAO,EAAA,CACT,MAAMk0P,MAAAA,CAAS,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAA,CAAG,CACvD,OAAOmrB,OAASA,MAAOl0P,CAAAA,IAAI,CAAG,IAChC,CACA,IAAInH,OAAAA,CAAQyH,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAW7yQ,CAAAA,GAAAA,EAC5B,CACA,IAAIzH,SAAU,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OAAO,CAE1B,IAAI6kT,QAASp9S,CAAAA,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,WAAY7yQ,GAC7B,EAAA,CACA,IAAIo9S,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC19S,IAAI,CAAC09S,QACnB,CACA,IAAIziI,YAAa36K,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAA,CAAgB7yQ,KACjC,CACA,IAAI26K,YAAe,EAAA,CACjB,OAAO,IAAI,CAACj7K,IAAI,CAACi7K,YACnB,CACA,IAAID,SAAS16K,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAA,CAAY7yQ,KAC7B,CACA,IAAI06K,QAAW,EAAA,CACb,OAAO,IAAI,CAACh7K,IAAI,CAACg7K,QACnB,CACA,IAAIjB,KAAKz5K,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,EACzB,CACA,IAAIy5K,IAAO,EAAA,CACT,OAAO,IAAI,CAAC/5K,IAAI,CAAC+5K,IAAI,CAEvB,IAAIC,KAAAA,CAAM15K,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,EAC1B,CACA,IAAI05K,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACh6K,IAAI,CAACg6K,KAAK,CAExB,IAAIS,UAAWn6K,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAIm6K,UAAAA,EAAa,CACf,OAAO,IAAI,CAACz6K,IAAI,CAACy6K,UAAU,CAE7B,IAAIC,WAAAA,CAAYp6K,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,GAChC,EAAA,CACA,IAAIo6K,WAAc,EAAA,CAChB,OAAO,IAAI,CAAC16K,IAAI,CAAC06K,WAAW,CAE9B,IAAInmE,IAAKj0G,CAAAA,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,EACzB,CACA,IAAIi0G,IAAO,EAAA,CACT,OAAO,IAAI,CAACv0G,IAAI,CAACu0G,IACnB,CACA,IAAI02E,OAAAA,CAAQ3qL,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAW7yQ,CAAAA,GAAAA,EAC5B,CACA,IAAI2qL,SAAU,CACZ,OAAO,IAAI,CAACjrL,IAAI,CAACirL,OACnB,CACA,IAAIz+B,QAAAA,CAASlsJ,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAY7yQ,CAAAA,GAAAA,EAC7B,CACA,IAAIksJ,UAAW,CACb,OAAO,IAAI,CAACxsJ,IAAI,CAACwsJ,QAAQ,CAE3B,IAAIk4B,WAAAA,CAAYpkL,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,cAAe7yQ,GAChC,EAAA,CACA,IAAIokL,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC1kL,IAAI,CAAC0kL,WAAW,CAE9B,IAAIh9E,SAAUpnG,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAA,CAAa7yQ,KAC9B,CACA,IAAIonG,SAAY,EAAA,CACd,OAAO,IAAI,CAAC1nG,IAAI,CAAC0nG,SACnB,CACA,IAAI05C,WAAW9gJ,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAI8gJ,UAAa,EAAA,CACf,OAAO,IAAI,CAACphJ,IAAI,CAACohJ,UAAU,CAE7B,IAAIyjC,KAAAA,CAAMvkL,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,EAC1B,CACA,IAAIukL,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC7kL,IAAI,CAAC6kL,KAAK,CAExB,IAAIF,cAAerkL,CAAAA,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAA,CAAkB7yQ,GACnC,EAAA,CACA,IAAIqkL,cAAiB,EAAA,CACnB,OAAO,IAAI,CAAC3kL,IAAI,CAAC2kL,cACnB,CACA,IAAIzuL,IAAKoK,CAAAA,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAA,CAAQ7yQ,GACzB,EAAA,CACA,IAAIpK,IAAO,EAAA,CACT,OAAO,IAAI,CAAC8J,IAAI,CAAC9J,IAAI,CAEvB,IAAI6qJ,SAAUzgJ,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAa7yQ,CAAAA,GAAAA,EAC9B,CACA,IAAIygJ,SAAY,EAAA,CACd,OAAO,IAAI,CAAC/gJ,IAAI,CAAC+gJ,SACnB,CACA,IAAI0iC,OAAAA,CAAQnjL,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAW7yQ,CAAAA,GAAAA,EAC5B,CACA,IAAImjL,SAAU,CACZ,OAAO,IAAI,CAACzjL,IAAI,CAACyjL,OAAO,CAE1B,IAAIzF,aAAc19K,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAiB7yQ,GAClC,EAAA,CACA,IAAI09K,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACh+K,IAAI,CAACg+K,aACnB,CACA,IAAI3E,YAAa/4K,CAAAA,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAA,CAAgB7yQ,KACjC,CACA,IAAI+4K,YAAe,EAAA,CACjB,OAAO,IAAI,CAACr5K,IAAI,CAACq5K,YACnB,CACA,IAAIoP,eAAenoL,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAkB7yQ,CAAAA,GAAAA,EACnC,CACA,IAAImoL,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACzoL,IAAI,CAACyoL,cAAc,CAEjC,IAAI8B,mBAAAA,CAAoBjqL,GAAG,CAAE,CAC3B,IAAI,CAAC6yQ,SAAS,CAAC,qBAAA,CAAuB7yQ,GACxC,EAAA,CACA,IAAIiqL,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACvqL,IAAI,CAACuqL,mBAAmB,CAEtC,IAAI3Q,aAAAA,CAAct5K,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAiB7yQ,CAAAA,GAAAA,EAClC,CACA,IAAIs5K,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC55K,IAAI,CAAC45K,aAAa,CAEhC,IAAIC,kBAAmBv5K,CAAAA,GAAG,CAAE,CAC1B,IAAI,CAAC6yQ,SAAS,CAAC,oBAAA,CAAsB7yQ,GACvC,EAAA,CACA,IAAIu5K,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAAC75K,IAAI,CAAC65K,kBACnB,CACA,IAAI2D,eAAgBl9K,CAAAA,GAAG,CAAE,CACvB,IAAI,CAAC6yQ,SAAS,CAAC,iBAAmB7yQ,CAAAA,GAAAA,EACpC,CACA,IAAIk9K,iBAAkB,CACpB,OAAO,IAAI,CAACx9K,IAAI,CAACw9K,eACnB,CACA,IAAIC,IAAAA,CAAKn9K,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,OAAQ7yQ,GACzB,EAAA,CACA,IAAIm9K,IAAAA,EAAO,CACT,OAAO,IAAI,CAACz9K,IAAI,CAACy9K,IAAI,CAEvB,IAAIC,UAAWp9K,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAIo9K,UAAAA,EAAa,CACf,OAAO,IAAI,CAAC19K,IAAI,CAAC09K,UACnB,CACA,IAAIhE,WAAWp5K,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,KAC/B,CACA,IAAIo5K,UAAa,EAAA,CACf,OAAO,IAAI,CAAC15K,IAAI,CAAC05K,UAAU,CAE7B,IAAIrhD,WAAAA,CAAY/3H,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,EAChC,CACA,IAAI+3H,WAAc,EAAA,CAChB,OAAO,IAAI,CAACr4H,IAAI,CAACq4H,WACnB,CACA,IAAIslL,cAAcr9S,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAiB7yQ,CAAAA,GAAAA,EAClC,CACA,IAAIq9S,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC39S,IAAI,CAAC29S,aAAa,CAEhC,IAAIC,cAAAA,CAAet9S,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAA,CAAkB7yQ,GACnC,EAAA,CACA,IAAIs9S,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAAC59S,IAAI,CAAC49S,cAAc,CAEjC,IAAIluL,IAAKpvH,CAAAA,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAA,CAAQ7yQ,GACzB,EAAA,CACA,IAAIovH,IAAO,EAAA,CACT,OAAO,IAAI,CAAC1vH,IAAI,CAAC0vH,IACnB,CACA,IAAImuL,SAAAA,CAAUv9S,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAa7yQ,CAAAA,GAAAA,EAC9B,CACA,IAAIu9S,WAAY,CACd,OAAO,IAAI,CAAC79S,IAAI,CAAC69S,SAAS,CAE5B,IAAIpjC,WAAAA,CAAYn6Q,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,cAAe7yQ,GAChC,EAAA,CACA,IAAIm6Q,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACz6Q,IAAI,CAACy6Q,WAAW,CAE9B,IAAI5pK,WAAYvwG,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,KAChC,CACA,IAAIuwG,WAAc,EAAA,CAChB,OAAO,IAAI,CAAC7wG,IAAI,CAAC6wG,WACnB,CACA,IAAIo9E,cAAe3tL,CAAAA,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAA,CAAkB7yQ,GACnC,EAAA,CACA,IAAI2tL,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACjuL,IAAI,CAACiuL,cACnB,CACA,IAAI3C,mBAAmBhrL,GAAG,CAAE,CAC1B,IAAI,CAAC6yQ,SAAS,CAAC,oBAAA,CAAsB7yQ,KACvC,CACA,IAAIgrL,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAACtrL,IAAI,CAACsrL,kBAAkB,CAErC,IAAIQ,mBAAAA,CAAoBxrL,GAAG,CAAE,CAC3B,IAAI,CAAC6yQ,SAAS,CAAC,qBAAuB7yQ,CAAAA,GAAAA,EACxC,CACA,IAAIwrL,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAAC9rL,IAAI,CAAC8rL,mBAAmB,CAEtC,IAAIP,aAAAA,CAAcjrL,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAA,CAAiB7yQ,GAClC,EAAA,CACA,IAAIirL,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACvrL,IAAI,CAACurL,aAAa,CAEhC,IAAIQ,cAAezrL,CAAAA,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAkB7yQ,CAAAA,GAAAA,EACnC,CACA,IAAIyrL,cAAiB,EAAA,CACnB,OAAO,IAAI,CAAC/rL,IAAI,CAAC+rL,cACnB,CACA,IAAIL,kBAAAA,CAAmBprL,GAAG,CAAE,CAC1B,IAAI,CAAC6yQ,SAAS,CAAC,oBAAsB7yQ,CAAAA,GAAAA,EACvC,CACA,IAAIorL,oBAAqB,CACvB,OAAO,IAAI,CAAC1rL,IAAI,CAAC0rL,kBAAkB,CAErC,IAAIQ,mBAAoB5rL,CAAAA,GAAG,CAAE,CAC3B,IAAI,CAAC6yQ,SAAS,CAAC,sBAAuB7yQ,GACxC,EAAA,CACA,IAAI4rL,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAAClsL,IAAI,CAACksL,mBAAmB,CAEtC,IAAIL,gBAAAA,CAAiBvrL,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,mBAAoB7yQ,GACrC,EAAA,CACA,IAAIurL,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAAC7rL,IAAI,CAAC6rL,gBAAgB,CAEnC,IAAIQ,iBAAkB/rL,CAAAA,GAAG,CAAE,CACzB,IAAI,CAAC6yQ,SAAS,CAAC,mBAAA,CAAqB7yQ,KACtC,CACA,IAAI+rL,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACrsL,IAAI,CAACqsL,iBACnB,CACA,IAAIV,WAAWrrL,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAIqrL,UAAa,EAAA,CACf,OAAO,IAAI,CAAC3rL,IAAI,CAAC2rL,UAAU,CAE7B,IAAIQ,WAAAA,CAAY7rL,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,EAChC,CACA,IAAI6rL,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACnsL,IAAI,CAACmsL,WAAW,CAE9B,IAAIV,UAAWnrL,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAImrL,UAAa,EAAA,CACf,OAAO,IAAI,CAACzrL,IAAI,CAACyrL,UACnB,CACA,IAAIQ,WAAY3rL,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,EAChC,CACA,IAAI2rL,aAAc,CAChB,OAAO,IAAI,CAACjsL,IAAI,CAACisL,WACnB,CACA,IAAIL,UAAAA,CAAWtrL,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAIsrL,UAAa,EAAA,CACf,OAAO,IAAI,CAAC5rL,IAAI,CAAC4rL,UACnB,CACA,IAAIQ,WAAAA,CAAY9rL,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,EAChC,CACA,IAAI8rL,aAAc,CAChB,OAAO,IAAI,CAACpsL,IAAI,CAACosL,WAAW,CAE9B,IAAIrC,QAASzpL,CAAAA,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,WAAY7yQ,GAC7B,EAAA,CACA,IAAIypL,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC/pL,IAAI,CAAC+pL,QACnB,CACA,IAAItF,SAAUnkL,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAA,CAAa7yQ,KAC9B,CACA,IAAImkL,SAAY,EAAA,CACd,OAAO,IAAI,CAACzkL,IAAI,CAACykL,SACnB,CACA,IAAI2G,WAAW9qL,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAI8qL,UAAAA,EAAa,CACf,OAAO,IAAI,CAACprL,IAAI,CAACorL,UAAU,CAE7B,IAAIC,UAAAA,CAAW/qL,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAI+qL,UAAAA,EAAa,CACf,OAAO,IAAI,CAACrrL,IAAI,CAACqrL,UAAU,CAE7B,IAAI8D,cAAe7uL,CAAAA,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAA,CAAkB7yQ,GACnC,EAAA,CACA,IAAI6uL,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACnvL,IAAI,CAACmvL,cAAc,CAEjC,IAAIhE,aAAc7qL,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAA,CAAiB7yQ,GAClC,EAAA,CACA,IAAI6qL,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACnrL,IAAI,CAACmrL,aACnB,CACA,IAAIkE,iBAAkB/uL,CAAAA,GAAG,CAAE,CACzB,IAAI,CAAC6yQ,SAAS,CAAC,mBAAqB7yQ,CAAAA,GAAAA,EACtC,CACA,IAAI+uL,mBAAoB,CACtB,OAAO,IAAI,CAACrvL,IAAI,CAACqvL,iBACnB,CACA,IAAIC,SAAAA,CAAUhvL,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,YAAa7yQ,GAC9B,EAAA,CACA,IAAIgvL,SAAAA,EAAY,CACd,OAAO,IAAI,CAACtvL,IAAI,CAACsvL,SAAS,CAE5B,IAAIC,kBAAAA,CAAmBjvL,GAAG,CAAE,CAC1B,IAAI,CAAC6yQ,SAAS,CAAC,oBAAsB7yQ,CAAAA,GAAAA,EACvC,CACA,IAAIivL,oBAAqB,CACvB,OAAO,IAAI,CAACvvL,IAAI,CAACuvL,kBAAkB,CAErC,IAAIH,SAAU9uL,CAAAA,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,YAAa7yQ,GAC9B,EAAA,CACA,IAAI8uL,SAAAA,EAAY,CACd,OAAO,IAAI,CAACpvL,IAAI,CAACovL,SACnB,CACA,IAAIpK,QAAS1kL,CAAAA,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAA,CAAY7yQ,KAC7B,CACA,IAAI0kL,QAAW,EAAA,CACb,OAAO,IAAI,CAAChlL,IAAI,CAACglL,QACnB,CACA,IAAIr6D,OAAOrqH,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAA,CAAU7yQ,KAC3B,CACA,IAAIqqH,MAAS,EAAA,CACX,OAAO,IAAI,CAAC3qH,IAAI,CAAC2qH,MACnB,CACA,IAAImQ,UAAUA,SAAS,CAAE,CACvB,IAAI,CAACs5J,UAAU,CAAGt5J,SAClB,CAAA,GAAI,IAAI,CAACs7B,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAACt7B,SAAS,CAAGA,UAC3B,CACF,CACA,IAAIA,SAAY,EAAA,CACd,OAAO,IAAI,CAACs5J,UAAU,CAExBjhB,UAAU7pR,IAAI,CAAEqE,KAAK,CAAE,CACrB,MAAMqS,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAW3gN,CAAAA,IAAI,CAAC1W,IAAAA,CAAK,CAC3B0W,IAAI,CAAC1W,IAAAA,CAAK,CAAGqE,KAAAA,CACb,IAAI,CAACuB,IAAI,CAAC,KAAA,CAAO5F,KAAMq3N,QAAUhzN,CAAAA,KAAAA,EACnC,CACAmwT,uBAAAA,EAA0B,CACxB,GAAI,CAAC,IAAI,CAAC1nJ,OAAO,CAAE,OACnB,IAAI,IAAIpwK,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,MAAM+kI,KAAAA,CAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,CACtE,CAAA,GAAI,CAAC+kI,KAAO,CAAA,SACZA,KAAME,CAAAA,gBAAgB,CAAC,CACrB,IAAI,CAACmrC,OAAO,CAACxrC,YAAY,CAC1B,CACD,CAAA,IAAI,CAACwrC,OAAO,CAAC96B,MAAM,CAAGvQ,MACxB,CACF,CACAgzL,4BAA+B,EAAA,CAC7B,GAAI,CAAC,IAAI,CAAC3nJ,OAAO,CAAE,OACnB,IAAI,IAAIpwK,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,MAAM+kI,MAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACtE,GAAI,CAAC+kI,KAAAA,CAAO,SACZA,KAAAA,CAAMG,mBAAmB,CAAC,CACxB,IAAI,CAACkrC,OAAO,CAACxrC,YAAY,CAC1B,EACH,CACF,CACAozL,WAAY10T,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACpC,GAAI,CAAC,IAAI,CAACqxB,OAAO,CAAE,OACnB,IAAI,IAAIpwK,CAAI,CAAA,CAAA,CAAGA,CAAI26N,CAAAA,QAAAA,CAAS16N,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACtC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC21F,QAAQ,CAAC36N,CAAE,CAAA,CAAA,CACnE,GAAI,CAAC+kI,KAAO,CAAA,SACZA,KAAMG,CAAAA,mBAAmB,CAAC,CACxB,IAAI,CAACkrC,OAAO,CAACxrC,YAAY,CAC1B,EACH,CACA,GAAI,CAAC,IAAI,CAAC/xH,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,IAAI7S,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI++I,SAAS9+I,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAM+kI,KAAAA,CAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC+Z,QAAQ,CAAC/+I,CAAE,CAAA,CAAA,CACnE,GAAI,CAAC+kI,KAAO,CAAA,SACZA,MAAME,gBAAgB,CAAC,CACrB,IAAI,CAACmrC,OAAO,CAACxrC,YAAY,CAC1B,EACH,CACF,CACA06K,eAAgBC,CAAAA,OAAO,CAAEC,OAAO,CAAE,CAChC,IAAI,CAACsY,uBAAuB,EAC5BvY,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,KAAA,CAAO,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAC1CF,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,QAAU,CAAA,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAAA,CAC/CF,QAAQn4S,EAAE,CAAC,KAAO,CAAA,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAAA,CACzCD,OAAQn4S,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,YAAAA,CAAa16K,KAAK,CAAE,CAClB,GAAI,CAAC,IAAI,CAACqrC,OAAO,CAAE,OACnB,MAAMvqK,MAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACfk/H,KAAAA,CAAME,gBAAgB,CAAC,CACrB,IAAI,CAACmrC,OAAO,CAACxrC,YAAY,CAC1B,EACH,CACA86K,cAAAA,CAAe36K,KAAK,CAAE,CACpB,GAAI,CAAC,IAAI,CAACqrC,OAAO,CAAE,OACnB,MAAMvqK,MAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACfk/H,KAAAA,CAAMG,mBAAmB,CAAC,CACxB,IAAI,CAACkrC,OAAO,CAACxrC,YAAY,CAC1B,EACH,CACAqzL,kBAAmBt+F,CAAAA,KAAK,CAAE,CACxBA,KAAAA,CAAMtyN,EAAE,CAAC,MAAQ,CAAA,IAAI,CAAC6wT,oBAAoB,CAAE,IAAI,CAAA,CAChDv+F,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC8wT,sBAAsB,CAAE,IAAI,CAAA,CACpDx+F,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAAC+wT,sBAAsB,CAAE,IAAI,CACpDz+F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAA,CAAU,IAAI,CAACgxT,sBAAsB,CAAE,IAAI,CACpD,CAAA,GAAI1+F,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAAC2wQ,oBAAoB,CAACv+F,KAAAA,EAC5B,MAAO,CACL,GAAI,CAAC,IAAI,CAAC9mN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACA2+F,oBAAqB3+F,CAAAA,KAAK,CAAE,CAC1BA,MAAM1yN,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACixT,oBAAoB,CAAE,IAAI,CAAA,CACjDv+F,MAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACkxT,sBAAsB,CAAE,IAAI,EACrDx+F,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACmxT,sBAAsB,CAAE,IAAI,EACrDz+F,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACoxT,sBAAsB,CAAE,IAAI,EACvD,CACAH,oBAAqBv+F,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAAC51B,QAAQ,CAAG41B,KAAMpyK,CAAAA,SAAQ,CAEhC4wQ,sBAAuBx+F,CAAAA,KAAK,CAAE,CAC5B,IAAI,CAAC51B,QAAQ,CAAG,KAClB,CACAq0H,sBAAAA,CAAuBz+F,KAAK,CAAE,CAC5B,IAAI,CAACw+F,sBAAsB,CAACx+F,KAC9B,EAAA,CACA0+F,sBAAuB1+F,CAAAA,KAAK,CAAE,EAC9B4+F,kBAAmBj1T,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC3C,MAAMg5F,MAAAA,CAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAIpd,QAAU,CAAA,CACZ,MAAMhB,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC44N,UACzB,GAAIhB,KAAAA,CAAO,CACT,IAAI,CAAC2+F,oBAAoB,CAAC3+F,KAAAA,EAC5B,CACF,CACA,GAAI56E,QAAU,CAAA,CACZ,GAAIA,QAAoBg2F,YAAAA,KAAAA,CAAO,CAC7B,IAAI,CAAC/6N,IAAI,CAAC29S,aAAa,CAAG54K,QAAS/0G,CAAAA,EAAE,CACrC+0G,QAAAA,CAAWA,SAAS/0G,GACtB,CACA,MAAM2vL,MAAQoe,MAAOh2O,CAAAA,GAAG,CAACg9I,QAAAA,CAAAA,CACzB,GAAI46E,KAAO,CAAA,CACT,IAAI,CAACs+F,kBAAkB,CAACt+F,KAC1B,EAAA,CAAA,KAAO,CACLoe,MAAOtwO,CAAAA,IAAI,CAAC,CAAC,IAAI,EAAEs3I,QAAAA,CAAS,CAAC,CAAE,KAC7B,EAAA,CAAA,IAAI,CAACk5K,kBAAkB,CAACt+F,KAAAA,EAC1B,CACF,EAAA,CACF,MAAO,CACL,IAAI,CAAC51B,QAAQ,CAAG,KAClB,CACF,CACAy0H,mBAAAA,CAAoB7+F,KAAK,CAAE,CACzBA,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACoxT,qBAAqB,CAAE,IAAI,CACjD9+F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAA,CAAU,IAAI,CAACqxT,uBAAuB,CAAE,IAAI,CACrD/+F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAACsxT,uBAAuB,CAAE,IAAI,CAAA,CACrDh/F,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACuxT,uBAAuB,CAAE,IAAI,CACrD,CAAA,GAAIj/F,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAACkxQ,qBAAqB,CAAC9+F,KAC7B,EAAA,CAAA,KAAO,CACL,GAAI,CAAC,IAAI,CAAC9mN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACAk/F,qBAAsBl/F,CAAAA,KAAK,CAAE,CAC3BA,KAAAA,CAAM1yN,GAAG,CAAC,OAAQ,IAAI,CAACwxT,qBAAqB,CAAE,IAAI,CAClD9+F,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACyxT,uBAAuB,CAAE,IAAI,CAAA,CACtD/+F,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC0xT,uBAAuB,CAAE,IAAI,CAAA,CACtDh/F,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC2xT,uBAAuB,CAAE,IAAI,EACxD,CACAH,sBAAsB9+F,KAAK,CAAE,CAC3B,IAAI,CAACl7B,SAAS,CAAGk7B,KAAMpyK,CAAAA,SAAQ,CAEjCmxQ,uBAAwB/+F,CAAAA,KAAK,CAAE,CAC7B,IAAI,CAACl7B,SAAS,CAAG,KACnB,CACAk6H,uBAAwBh/F,CAAAA,KAAK,CAAE,CAC7B,IAAI,CAAC++F,uBAAuB,CAAC/+F,KAAAA,EAC/B,CACAi/F,uBAAAA,CAAwBj/F,KAAK,CAAE,EAC/Bm/F,mBAAAA,CAAoBx1T,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC5C,MAAMg5F,MAAS,CAAA,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAIpd,QAAAA,CAAU,CACZ,MAAMhB,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC44N,QAAAA,CAAAA,CACzB,GAAIhB,KAAAA,CAAO,CACT,IAAI,CAACk/F,qBAAqB,CAACl/F,KAC7B,EAAA,CACF,CACA,GAAI56E,SAAU,CACZ,GAAIA,QAAoBg2F,YAAAA,KAAAA,CAAO,CAC7B,IAAI,CAAC/6N,IAAI,CAAC49S,cAAc,CAAG74K,QAAS/0G,CAAAA,EAAE,CACtC+0G,QAAWA,CAAAA,QAAAA,CAAS/0G,GACtB,CACA,MAAM2vL,KAAAA,CAAQoe,MAAOh2O,CAAAA,GAAG,CAACg9I,QACzB,CAAA,CAAA,GAAI46E,KAAO,CAAA,CACT,IAAI,CAAC6+F,mBAAmB,CAAC7+F,OAC3B,CAAO,KAAA,CACLoe,MAAOtwO,CAAAA,IAAI,CAAC,CAAC,IAAI,EAAEs3I,QAAAA,CAAS,CAAC,CAAG46E,KAC9B,EAAA,CAAA,IAAI,CAAC6+F,mBAAmB,CAAC7+F,KAAAA,EAC3B,GACF,CACF,CAAA,KAAO,CACL,IAAI,CAACl7B,SAAS,CAAG,KACnB,CACF,CACAs6H,cAAep/F,CAAAA,KAAK,CAAE,CACpBA,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQ,IAAI,CAAC2xT,gBAAgB,CAAE,IAAI,EAC5Cr/F,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAAC4xT,kBAAkB,CAAE,IAAI,CAChDt/F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,SAAU,IAAI,CAAC6xT,kBAAkB,CAAE,IAAI,CAChDv/F,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,SAAU,IAAI,CAAC8xT,kBAAkB,CAAE,IAAI,CAAA,CAChD,GAAIx/F,KAAAA,CAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAACyxQ,gBAAgB,CAACr/F,KAAAA,EACxB,CAAO,KAAA,CACL,GAAI,CAAC,IAAI,CAAC9mN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACAy/F,iBAAiBz/F,KAAK,CAAE,CACtBA,KAAAA,CAAM1yN,GAAG,CAAC,MAAA,CAAQ,IAAI,CAAC+xT,gBAAgB,CAAE,IAAI,CAC7Cr/F,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACgyT,kBAAkB,CAAE,IAAI,CAAA,CACjDt/F,MAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACiyT,kBAAkB,CAAE,IAAI,CAAA,CACjDv/F,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAACkyT,kBAAkB,CAAE,IAAI,EACnD,CACAH,gBAAAA,CAAiBr/F,KAAK,CAAE,CACtB,IAAI,CAAC0/F,cAAc,CAAC1/F,KAAMpyK,CAAAA,QAAQ,EACpC,CACA0xQ,mBAAmBt/F,KAAK,CAAE,CACxB,IAAI,CAACjwF,IAAI,CAAG,KACd,CACAwvL,kBAAmBv/F,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACs/F,kBAAkB,CAACt/F,OAC1B,CACAw/F,kBAAAA,CAAmBx/F,KAAK,CAAE,EAC1B2/F,cAAAA,CAAeh2T,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACvC,MAAMg5F,MAAAA,CAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAIpd,QAAAA,CAAU,CACZ,MAAMhB,MAAQoe,MAAOh2O,CAAAA,GAAG,CAAC44N,QAAAA,CAAAA,CACzB,GAAIhB,KAAAA,CAAO,CACT,IAAI,CAACy/F,gBAAgB,CAACz/F,KACxB,EAAA,CACF,CACA,GAAI56E,QAAAA,CAAU,CACZ,GAAIA,oBAAoBg2F,KAAO,CAAA,CAC7B,IAAI,CAAC/6N,IAAI,CAAC69S,SAAS,CAAG94K,SAAS/0G,EAAE,CACjC+0G,QAAWA,CAAAA,QAAAA,CAAS/0G,GACtB,CACA,MAAM2vL,MAAQoe,MAAOh2O,CAAAA,GAAG,CAACg9I,QAAAA,CAAAA,CACzB,GAAI46E,KAAAA,CAAO,CACT,IAAI,CAACo/F,cAAc,CAACp/F,KACtB,EAAA,CACF,MAAO,CACL,IAAI,CAAC0/F,cAAc,CAAC,IACtB,EAAA,CACF,CACAE,SAAAA,CAAUj2T,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAClC,GAAI,CAACA,UAAYA,QAAoBg2F,YAAAA,KAAAA,EAAS,OAAOh2F,QAAAA,GAAa,SAAU,CAC1E,IAAI,CAAC84K,SAAS,CAAG94K,SACnB,CAAO,KAAA,CACL,IAAI,CAACs6K,cAAc,CAACt6K,QAAAA,EACtB,CACF,CACAs6K,cAAAA,CAAe3vL,IAAI,CAAE,CACnB,GAAIA,IAAAA,EAAQ,EAAEA,IAAgBH,YAAAA,IAAG,CAAI,CAAA,CACnC,GAAIG,IAAKnE,CAAAA,aAAa,CAAC,CAAA,CAAE,CAAE,CACzBmE,IAAAA,CAAOA,IAAKnE,CAAAA,aAAa,CAAC,CAAE,CAAA,CAACmE,KAC/B,CAAO,KAAA,CACLA,IAAO,CAAA,KACT,CACF,CACA,IAAI,CAAC1vH,IAAI,CAAC0vH,IAAI,CAAGA,IACjB,CAAA,GAAI,IAAI,CAAC0mC,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC1mC,IAAI,CAAGA,IAAAA,CACpB,IAAI,CAAC0mC,OAAO,CAACiyB,aAAa,EAC1B,CAAA,IAAI,CAACyB,OAAO,GACd,CACF,CACAwxF,gBAAiBhyR,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACzC,MAAMg5F,OAAS,IAAI,CAACgE,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CACrC,GAAIpd,QAAU,CAAA,CACZ,MAAMhB,KAAAA,CAAQoe,OAAOh2O,GAAG,CAAC44N,QACzB,CAAA,CAAA,GAAIhB,KAAO,CAAA,CACT,IAAI,CAAC6/F,kBAAkB,CAAC7/F,KAAAA,EAC1B,CACF,CACA,GAAI56E,QAAAA,CAAU,CACZ,GAAIA,oBAAoBg2F,KAAO,CAAA,CAC7B,IAAI,CAAC/6N,IAAI,CAACy6Q,WAAW,CAAG11I,QAAAA,CAAS/0G,EAAE,CACnC+0G,QAAAA,CAAWA,QAAS/0G,CAAAA,GAAE,CAExB,MAAM2vL,KAAAA,CAAQoe,OAAOh2O,GAAG,CAACg9I,QACzB,CAAA,CAAA,GAAI46E,MAAO,CACT,IAAI,CAAC8/F,gBAAgB,CAAC9/F,KACxB,EAAA,CACF,CAAO,KAAA,CACL,IAAI,CAAC+/F,gBAAgB,CAAC,MACxB,CACF,CACAD,gBAAiB9/F,CAAAA,KAAK,CAAE,CACtBA,KAAAA,CAAMtyN,EAAE,CAAC,OAAQ,IAAI,CAACsyT,kBAAkB,CAAE,IAAI,CAAA,CAC9ChgG,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACuyT,oBAAoB,CAAE,IAAI,CAAA,CAClDjgG,KAAMtyN,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACwyT,oBAAoB,CAAE,IAAI,CAClD,CAAA,GAAIlgG,MAAMpyK,QAAQ,CAAE,CAClB,IAAI,CAACoyQ,kBAAkB,CAAChgG,KAC1B,EAAA,CAAA,KAAO,CACL,GAAI,CAAC,IAAI,CAAC9mN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,OAC3C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EAC9B,CACF,CACA6/F,mBAAmB7/F,KAAK,CAAE,CACxBA,KAAAA,CAAM1yN,GAAG,CAAC,MAAA,CAAQ,IAAI,CAAC0yT,kBAAkB,CAAE,IAAI,CAC/ChgG,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC2yT,oBAAoB,CAAE,IAAI,CAAA,CACnDjgG,KAAM1yN,CAAAA,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC4yT,oBAAoB,CAAE,IAAI,CACnD,CAAA,IAAI,CAACxzB,aAAa,EAAEp/R,GAAAA,EACpB,CAAA,IAAI,CAACo/R,aAAa,CAAG,KACvB,CACAszB,mBAAmBhgG,KAAK,CAAE,CACxB,IAAI,CAAC+/F,gBAAgB,CAAC//F,KAAAA,CAAMpyK,QAAQ,EACtC,CACAqyQ,oBAAqBjgG,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAAC+/F,gBAAgB,CAAC,IACxB,EAAA,CACAG,oBAAqBlgG,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAACigG,oBAAoB,CAACjgG,KAAAA,EAC5B,CACA+/F,gBAAAA,CAAiB1tN,MAAM,CAAE,CACvB,GAAI,CAACA,OAAQ,CACX,IAAI,CAACqtN,cAAc,CAAC,IAAA,CAAA,CACpB,MACF,CACA,IAAI,CAAChzB,aAAa,EAAEp/R,GAAAA,EACpB,CAAA,IAAI,CAACo/R,aAAa,CAAGr6L,OAAO3kG,EAAE,CAAC,YAAc,CAAA,IAAI,CAACyyT,kBAAkB,CAAE,IAAI,EAC1E,GAAI9tN,MAAAA,CAAOyyG,MAAM,CAAE,CACjB,IAAI,CAACq7G,kBAAkB,CAAC9tN,OAAOyyG,MAAM,EACvC,CACF,CACAq7G,kBAAmBr7G,CAAAA,MAAM,CAAE,CACzB,IAAI,CAAC46G,cAAc,CAAC56G,MAAAA,EAAUA,MAAM,CAAC,CAAA,CAAE,EACzC,CACAs7G,UAAUz2T,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAClC,GAAI,IAAI,CAACqxB,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC9sK,IAAAA,CAAK,CAAGy7I,QACrB,CAAA,IAAI,CAACqxB,OAAO,CAAC20B,SAAS,GACxB,CACF,CACAi1H,cAAe12T,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACvC,GAAI,IAAI,CAACqxB,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC9sK,IAAK,CAAA,CAAGy7I,QACrB,CAAA,IAAI,CAACqxB,OAAO,CAACvtC,QAAQ,CAACk4B,SAAS,CAAGhc,QAClC,CAAA,IAAI,CAACqxB,OAAO,CAACiyB,aAAa,GAC1B,IAAI,CAACyB,OAAO,GACd,CACF,CACAm2H,aAAAA,EAAgB,CACd,GAAI,IAAI,CAACC,eAAe,CAAE,OAC1B,GAAI,CAAC1C,UAAYA,CAAAA,UAAAA,CAAa,IAAI,CAACz7E,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC5P,aAAAA,CAAAA,CACxE,GAAIoiM,UAAAA,CAAY,CACdA,UAAAA,CAAWr6I,gBAAgB,EAC3B,CAAA,IAAI,CAAC+8I,eAAe,CAAG,KACzB,CACF,CACAC,aAAgB,EAAA,CACd,GAAI,CAAC,IAAI,CAACD,eAAe,CAAE,OAC3B,GAAI1C,UAAAA,CAAY,CACdA,UAAWp6I,CAAAA,gBAAgB,EAC3B,CAAA,IAAI,CAAC88I,eAAe,CAAG,MACzB,CACF,CACAE,mBAAAA,CAAoB92T,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC5C,GAAI47E,QAAAA,GAAa57E,QAAU,CAAA,CACzB,GAAIA,QAAU,CAAA,CACZ,GAAI,IAAI,CAAClsI,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,IAAI,CAAConT,aAAa,EAC3D,CAAA,GAAI,IAAI,CAAC7pJ,OAAO,CAAE,IAAI,CAACA,OAAO,CAAC9sK,IAAK,CAAA,CAAGy7I,SACzC,CAAA,KAAO,CACL,GAAI,IAAI,CAAClsI,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,IAAI,CAACsnT,aAAa,EAAA,CAC3D,GAAI,IAAI,CAAC/pJ,OAAO,CAAE,IAAI,CAACA,OAAO,CAAC9sK,KAAK,CAAGy7I,SACzC,CACA,GAAI,IAAI,CAACqxB,OAAO,CAAE,CAChB,IAAI,CAACziK,KAAK,EAAA,CACV,IAAI,CAACyiK,OAAO,CAACiyB,aAAa,GAC1B,IAAI,CAACyB,OAAO,GACd,CACF,CACF,CACAu2H,mBAAoB/2T,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC5C,GAAI,IAAI,CAACqxB,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC9sK,IAAAA,CAAK,CAAGy7I,QAAAA,CACrB,IAAI,CAACqxB,OAAO,CAACiyB,aAAa,GAC5B,CACF,CACAi4H,oBAAAA,CAAqBh3T,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC7C,GAAI,IAAI,CAACqxB,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC9sK,IAAK,CAAA,CAAGy7I,SACrB,IAAI,CAACqxB,OAAO,CAACiyB,aAAa,EAC1B,CAAA,IAAI,CAACyB,OAAO,EACZ,CAAA,IAAI,CAACn2L,KAAK,GACZ,CACF,CACA4sT,kBAAmBj3T,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC3C,GAAI,IAAI,CAACqxB,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC9sK,IAAAA,CAAK,CAAGy7I,QAAAA,CACrB,IAAI,CAACqxB,OAAO,CAACg0B,aAAa,GAC1B,IAAI,CAACh0B,OAAO,CAACiyB,aAAa,GAC5B,CACF,CACA52F,UAAW,CACT,MAAMi5B,KAAQ,CAAA,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,KAAMC,CAAAA,MAAM,CAC3B,MAAM3qH,KAAO,IAAI,CAACA,IAAI,CACtB,IAAI,IAAIha,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMq/S,iBAAiBt3T,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACzD,IAAI25N,KAAAA,CAAQ3/M,IAAI,CAACu9S,gBAAgB,CAACv3T,CAAAA,CAAE,CAAC,CACrC,GAAI25N,KAAO,CAAA,CACT,GAAI,EAAEA,KAAiBob,YAAAA,KAAI,CAAI,CAAA,CAC7B,MAAM/qM,EAAAA,CAAK9zB,SAASyjN,KAAO,CAAA,EAAA,CAAA,CAC3B,GAAI3vL,EAAAA,EAAM,EAAG,CACX2vL,KAAAA,CAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAAC43N,KAAAA,EACrC,MAAO,CACL,QACF,CACF,CACA,GAAIA,KAAS,EAAA,CAACA,KAAMpyK,CAAAA,QAAQ,CAAE,CAC5B,IAAI,CAACw0L,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAC9B,EAAA,CACF,CACF,CACA,GAAI,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAACm/D,qBAAqB,CAAE,CACxD,MACF,CACA,GAAI,CAAC,IAAI,CAACqnE,OAAO,CAAE,CACjB,IAAI1mC,KAAO1vH,IAAK0vH,CAAAA,IAAI,CACpB,GAAI,EAAEA,IAAgBH,YAAAA,IAAG,EAAI,CAC3BG,IAAAA,CAAO,KACT,CACA,IAAI,CAAC0mC,OAAO,CAAG,IAAI0xB,gBAAgB,IAAI,CAACi6C,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAE,CACjEqrJ,YAAcj7K,CAAAA,IAAAA,CAAKi7K,YAAY,CAC/BwN,cAAgBzoL,CAAAA,IAAAA,CAAKyoL,cAAc,CACnC8B,oBAAqBvqL,IAAKuqL,CAAAA,mBAAmB,CAC7C3Q,aAAAA,CAAe55K,IAAK45K,CAAAA,aAAa,CACjCC,kBAAAA,CAAoB75K,KAAK65K,kBAAkB,CAC3CR,YAAcr5K,CAAAA,IAAAA,CAAKq5K,YAAY,CAC/BmE,eAAAA,CAAiBx9K,IAAKw9K,CAAAA,eAAe,CACrCC,IAAMz9K,CAAAA,IAAAA,CAAKy9K,IAAI,CACf/D,UAAY15K,CAAAA,IAAAA,CAAK05K,UAAU,CAC3BrhD,YAAar4H,IAAKq4H,CAAAA,WAAW,CAC7BqlD,UAAAA,CAAY19K,KAAK09K,UAAU,CAC3B1C,QAAUh7K,CAAAA,IAAAA,CAAKg7K,QAAQ,CACvBjB,IAAAA,CAAM/5K,IAAK+5K,CAAAA,IAAI,CACfC,KAAAA,CAAOh6K,IAAKg6K,CAAAA,KAAK,CACjBnpE,WAAa7wG,CAAAA,IAAAA,CAAK6wG,WAAW,CAC7Bo9E,eAAgBjuL,IAAKiuL,CAAAA,cAAc,CACnC7C,UAAAA,CAAYprL,KAAKorL,UAAU,CAC3BC,UAAYrrL,CAAAA,IAAAA,CAAKqrL,UAAU,CAC3B8D,cAAgBnvL,CAAAA,IAAAA,CAAKmvL,cAAc,CACnChE,aAAAA,CAAenrL,IAAKmrL,CAAAA,aAAa,CACjCkE,iBAAmBrvL,CAAAA,IAAAA,CAAKqvL,iBAAiB,CACzCC,UAAWtvL,IAAKsvL,CAAAA,SAAS,CACzBC,kBAAAA,CAAoBvvL,IAAKuvL,CAAAA,kBAAkB,CAC3CH,SAAAA,CAAWpvL,KAAKovL,SAAS,CACzBpK,QAAUhlL,CAAAA,IAAAA,CAAKglL,QAAQ,CACvBvK,UAAAA,CAAYz6K,IAAKy6K,CAAAA,UAAU,CAC3BC,WAAa16K,CAAAA,IAAAA,CAAK06K,WAAW,CAC7BiR,UAAY3rL,CAAAA,IAAAA,CAAK2rL,UAAU,CAC3BQ,YAAansL,IAAKmsL,CAAAA,WAAW,CAC7BV,UAAAA,CAAYzrL,KAAKyrL,UAAU,CAC3BQ,WAAajsL,CAAAA,IAAAA,CAAKisL,WAAW,CAC7BL,UAAAA,CAAY5rL,IAAK4rL,CAAAA,UAAU,CAC3BQ,WAAAA,CAAapsL,IAAKosL,CAAAA,WAAW,CAC7Bd,kBAAoBtrL,CAAAA,IAAAA,CAAKsrL,kBAAkB,CAC3CQ,oBAAqB9rL,IAAK8rL,CAAAA,mBAAmB,CAC7CP,aAAAA,CAAevrL,KAAKurL,aAAa,CACjCQ,cAAgB/rL,CAAAA,IAAAA,CAAK+rL,cAAc,CACnCL,kBAAoB1rL,CAAAA,IAAAA,CAAK0rL,kBAAkB,CAC3CQ,mBAAAA,CAAqBlsL,IAAKksL,CAAAA,mBAAmB,CAC7CL,gBAAAA,CAAkB7rL,IAAK6rL,CAAAA,gBAAgB,CACvCQ,iBAAmBrsL,CAAAA,IAAAA,CAAKqsL,iBAAiB,CACzCtC,QAAU/pL,CAAAA,IAAAA,CAAK+pL,QAAQ,CACvBtF,UAAWzkL,IAAKykL,CAAAA,SAAS,CACzBlwE,IAAAA,CAAMv0G,KAAKu0G,IAAI,CACf02E,OAASjrL,CAAAA,IAAAA,CAAKirL,OAAO,CACrB/0L,IAAAA,CAAM8J,IAAK9J,CAAAA,IAAI,CACfutL,OAAAA,CAASzjL,IAAKyjL,CAAAA,OAAO,CACrBzF,aAAeh+K,CAAAA,IAAAA,CAAKg+K,aAAa,CACjCxxB,SAAUxsJ,IAAKwsJ,CAAAA,QAAQ,CACvBk4B,WAAAA,CAAa1kL,KAAK0kL,WAAW,CAC7Bh9E,SAAW1nG,CAAAA,IAAAA,CAAK0nG,SAAS,CACzBi9E,cAAgB3kL,CAAAA,IAAAA,CAAK2kL,cAAc,CACnCj6D,KAAAA,CAAO,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAC5BgF,IAAMA,CAAAA,IAAAA,CACN0xB,UAAYphJ,CAAAA,IAAAA,CAAKohJ,UAAU,CAC3ByjC,KAAO7kL,CAAAA,IAAAA,CAAK6kL,KAAK,CACjBzuD,IAAAA,CAAM,IAAI,CAACxJ,MAAM,CACjBm0B,SAAW/gJ,CAAAA,IAAAA,CAAK+gJ,SAAS,CAC3B,CACA,CAAA,IAAI,CAACqV,OAAO,CAACxrC,YAAY,CAACwL,IAAI,CAAG,IAAI,CAACxJ,MAAM,CAC5C,IAAI,CAACwpC,OAAO,CAACt7B,SAAS,CAAG,IAAI,CAACA,SAAS,CACvC,GAAI,CAAC96H,IAAK09S,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAAC1nM,KAAK,EACV,CAAA,IAAI,CAACogD,OAAO,CAACxrC,YAAY,CAACsO,OAAO,CAAG,MACtC,CACF,CACA,GAAI,IAAI,CAACk9B,OAAO,CAAC2zB,QAAQ,CAAE,CACzB,IAAI,CAAC+zH,uBAAuB,GAC9B,CACA,IAAI,CAAClY,iBAAiB,CAAGl7K,MAAMr9H,EAAE,CAAC,YAAc,CAAA,IAAI,CAACi4S,eAAe,CAAE,IAAI,EAC1E,GAAI36K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,MAAAA,CAAOt9H,EAAE,CAAC,KAAA,CAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,CAAGn7K,MAAAA,CAAOt9H,EAAE,CAAC,QAAU,CAAA,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,GAAI,IAAI,CAAC7sS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,EAAImH,IAAK2kL,CAAAA,cAAc,CAAE,CAC9D,IAAI,CAACs7H,aAAa,GACpB,CACF,CACAvuN,SAAY,EAAA,CACV,MAAMg5B,KAAQ,CAAA,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,KAAMC,CAAAA,MAAM,CAC3B,IAAI,CAACi7K,iBAAiB,EAAE34S,GACxB,EAAA,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,IACzB,CAAA,GAAIj7K,OAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,GAAAA,EACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,GAAI,IAAI,CAAC1vI,OAAO,CAAE,CAChB,IAAI,CAAC2nJ,4BAA4B,EAAA,CACjC,GAAI,IAAI,CAAC/9S,IAAI,CAAC2kL,cAAc,CAAE,IAAI,CAACw7H,aAAa,EAChD,CAAA,IAAI,CAAC/pJ,OAAO,CAACn9B,MAAM,CAAG,KACxB,CACF,CACAipI,gBAAiB,CACf,GAAI,IAAI,CAACrpQ,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAG,MACjB,CACA,GAAI,IAAI,CAACu9J,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAACjnI,OAAO,EACpB,CAAA,IAAI,CAACinI,OAAO,CAAG,KACjB,CACA,IAAI,IAAIpwK,CAAI,CAAA,CAAA,CAAGA,EAAIu3T,gBAAiBt3T,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC9C,MAAMlB,IAAAA,CAAOy4T,gBAAgB,CAACv3T,EAAE,CAChC,GAAI,IAAI,CAACga,IAAI,CAAClb,IAAK,CAAA,CAAE,CACnB,IAAI,CAACA,IAAK,CAAA,CAAG,KACf,CACF,CACA,IAAI,CAACmI,GAAG,GACV,CACA0G,KAAQ,EAAA,CACN,GAAI,IAAI,CAACyiK,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAACziK,KAAK,GACpB,CACF,CACAggH,MAAO,CACL,GAAI,IAAI,CAACyiD,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC7hD,IAAI,CAAG,MACpB,IAAI,CAAC6hD,OAAO,CAAC20B,SAAS,EACtB,CAAA,IAAI,CAAC30B,OAAO,CAAC40B,OAAO,CAAC,CAAA,CAAG,MAC1B,CACF,CACAh1E,KAAQ,EAAA,CACN,IAAI,CAACh2G,IAAI,CAACs4G,MAAM,CAAG,KACrB,CACAkoM,OAAU,EAAA,CACR,IAAI,CAACxgT,IAAI,CAACs4G,MAAM,CAAG,MACrB,CACAzE,IAAAA,EAAO,CACL,IAAI,CAAC7zG,IAAI,CAACs4G,MAAM,CAAG,KAAA,CACnB,GAAI,IAAI,CAAC89C,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAACxrC,YAAY,CAACsO,OAAO,CAAG,IACpC,CAAA,IAAI,CAACk9B,OAAO,CAAC7hD,IAAI,CAAG,IAAI,CAACv0G,IAAI,CAACu0G,IAAI,CAClC,IAAI,CAAC6hD,OAAO,CAAC20B,SAAS,GACxB,CACF,CACA92E,SAAAA,EAAY,CACV,GAAI,IAAI,CAACj0G,IAAI,CAACs4G,MAAM,CAAE,CACpB,OAAO,KACT,CACA,GAAI,IAAI,CAAC89C,OAAO,EAAI,IAAI,CAACA,OAAO,CAAC7hD,IAAI,CAAE,CACrC,OAAO,IACT,CACA,OAAOh9G,IAAKF,CAAAA,GAAG,IAAM,IAAI,CAAC++J,OAAO,CAAC44B,OAAO,CAE3CyxH,UAAa,EAAA,CACX,KAAM,CAAErqJ,OAAO,CAAE,CAAG,IAAI,CACxB,GAAIA,OAAAA,EAAW,CAACA,OAAQ0uB,CAAAA,OAAO,CAAE,CAC/B1uB,QAAQ0uB,OAAO,CAAG,IAClB,CAAA,IAAI,CAACgF,OAAO,GACd,CACF,CACAA,OAAU,EAAA,CACR,MAAMjxL,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,IAAI,CAACA,OAAO,CAAG,KAAA,CACf,GAAI,IAAI,CAACu9J,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC0zB,OAAO,GACtB,CACA,IAAI,CAACjxL,OAAO,CAAGA,QACjB,CA98BA9K,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,QAAS,IAAI,CAACszL,eAAe,CAAG,MAAO,IAAI,CAAC9rB,UAAU,CAAG,CAAG,CAAA,IAAI,CAACwR,iBAAiB,CAAG,IAAM,CAAA,IAAI,CAACC,cAAc,CAAG,IAAA,CAAM,IAAI,CAACC,gBAAgB,CAAG,IAAA,CAAM,IAAI,CAACzZ,aAAa,CAAG,IACxL,CAAA,IAAI,CAACh/R,EAAE,CAAC,mBAAqB,CAAA,IAAI,CAACkxT,kBAAkB,CAAE,IAAI,CAAA,CAC1D,IAAI,CAAClxT,EAAE,CAAC,oBAAA,CAAsB,IAAI,CAACyxT,mBAAmB,CAAE,IAAI,CAC5D,CAAA,IAAI,CAACzxT,EAAE,CAAC,eAAiB,CAAA,IAAI,CAACiyT,cAAc,CAAE,IAAI,CAAA,CAClD,IAAI,CAACjyT,EAAE,CAAC,UAAY,CAAA,IAAI,CAACkyT,SAAS,CAAE,IAAI,CAAA,CACxC,IAAI,CAAClyT,EAAE,CAAC,iBAAA,CAAmB,IAAI,CAACiuR,gBAAgB,CAAE,IAAI,CACtD,CAAA,IAAI,CAACjuR,EAAE,CAAC,UAAY,CAAA,IAAI,CAAC0yT,SAAS,CAAE,IAAI,CAAA,CACxC,IAAI,CAAC1yT,EAAE,CAAC,eAAA,CAAiB,IAAI,CAAC2yT,cAAc,CAAE,IAAI,CAAA,CAClD,IAAI,CAAC3yT,EAAE,CAAC,oBAAA,CAAsB,IAAI,CAAC+yT,mBAAmB,CAAE,IAAI,EAC5D,IAAI,CAAC/yT,EAAE,CAAC,YAAc,CAAA,IAAI,CAAC2wT,WAAW,CAAE,IAAI,CAAA,CAC5CZ,iBAAkBzqT,CAAAA,OAAO,CAAC,IAAC7N,EAAAA,CACzB,IAAI,CAACuI,EAAE,CAAC,CAAC,IAAI,EAAEvI,IAAK,CAAA,CAAC,CAAE,IAAI,CAACu7T,mBAAmB,CAAE,IAAI,EACvD,GACAhD,kBAAmB1qT,CAAAA,OAAO,CAAE7N,OAC1B,IAAI,CAACuI,EAAE,CAAC,CAAC,IAAI,EAAEvI,IAAAA,CAAK,CAAC,CAAE,IAAI,CAACw7T,oBAAoB,CAAE,IAAI,EACxD,CAAA,CAAA,CACAhD,iBAAiB3qT,OAAO,CAAC,IAAC7N,EAAAA,CACxB,IAAI,CAACuI,EAAE,CAAC,CAAC,IAAI,EAAEvI,IAAK,CAAA,CAAC,CAAE,IAAI,CAACy7T,kBAAkB,CAAE,IAAI,EACtD,CAAA,EACF,CA27BF,CAEA,MAAMG,2BAAAA,CACJ3yT,WAAa,EAAA,CACX,IAAI,CAACktL,YAAY,CAAG,CACpB,CAAA,IAAI,CAAClB,IAAI,CAAG,CACZ,CAAA,IAAI,CAACC,KAAK,CAAG,IACb,CAAA,IAAI,CAACS,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACM,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACyN,cAAc,CAAG,IAAIxmL,IAC1B,CAAA,IAAI,CAACsoL,mBAAmB,CAAG,IAAItoL,IAC/B,CAAA,IAAI,CAAC23K,aAAa,CAAG,CACrB,CAAA,IAAI,CAACC,kBAAkB,CAAG,CAC1B,CAAA,IAAI,CAACR,YAAY,CAAG96D,gBACpB,CAAA,IAAI,CAACi/D,eAAe,CAAG,CACvB,CAAA,IAAI,CAACC,IAAI,CAAG,KACZ,CAAA,IAAI,CAACC,UAAU,CAAG,IAAIz7K,IACtB,CAAA,IAAI,CAACy3K,UAAU,CAAG,KAClB,CAAA,IAAI,CAACrhD,WAAW,CAAG,KACnB,CAAA,IAAI,CAAC0xD,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC4zH,aAAa,CAAG,IACrB,CAAA,IAAI,CAACl5H,SAAS,CAAG,IACjB,CAAA,IAAI,CAACm5H,cAAc,CAAG,IACtB,CAAA,IAAI,CAACrpM,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC02E,OAAO,CAAG,KACf,CAAA,IAAI,CAAC/0L,IAAI,CAAG,CACZ,CAAA,IAAI,CAACqgC,IAAI,CAAG8nF,gBACZ,CAAA,IAAI,CAACqM,KAAK,CAAG,IACb,CAAA,IAAI,CAAC8hC,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACk4B,WAAW,CAAG,KACnB,CAAA,IAAI,CAACh9E,SAAS,CAAG,CACjB,CAAA,IAAI,CAAC+7E,OAAO,CAAG,CACf,CAAA,IAAI,CAACzF,aAAa,CAAG,KACrB,CAAA,IAAI,CAAC2G,cAAc,CAAG,CACtB,CAAA,IAAI,CAAC81F,WAAW,CAAG,IACnB,CAAA,IAAI,CAACojC,SAAS,CAAG,IACjB,CAAA,IAAI,CAACnuL,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC0xB,UAAU,CAAG,KAClB,CAAA,IAAI,CAACyjC,KAAK,CAAG,KACb,CAAA,IAAI,CAACh0E,WAAW,CAAG4N,0BACnB,CAAA,IAAI,CAACwvE,cAAc,CAAG,IAAIhsL,IAAK,CAAA,CAAA,CAAG,EAAG,CACrC,CAAA,CAAA,IAAI,CAACmpL,UAAU,CAAG,CAClB,CAAA,IAAI,CAACC,UAAU,CAAG,CAClB,CAAA,IAAI,CAAC8D,cAAc,CAAG,CACtB,CAAA,IAAI,CAAChE,aAAa,CAAG,CACrB,CAAA,IAAI,CAACkE,iBAAiB,CAAG,CACzB,CAAA,IAAI,CAACC,SAAS,CAAG,CACjB,CAAA,IAAI,CAACC,kBAAkB,CAAG,KAC1B,CAAA,IAAI,CAACH,SAAS,CAAG,CACjB,CAAA,IAAI,CAACpK,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC2G,UAAU,CAAG,IAClB,CAAA,IAAI,CAACQ,WAAW,CAAG,IACnB,CAAA,IAAI,CAACV,UAAU,CAAG,IAClB,CAAA,IAAI,CAACQ,WAAW,CAAG,IACnB,CAAA,IAAI,CAACL,UAAU,CAAG,IAClB,CAAA,IAAI,CAACQ,WAAW,CAAG,IACnB,CAAA,IAAI,CAACd,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACQ,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACP,aAAa,CAAG,IACrB,CAAA,IAAI,CAACQ,cAAc,CAAG,IACtB,CAAA,IAAI,CAACL,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACQ,mBAAmB,CAAG,IAC3B,CAAA,IAAI,CAACL,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACQ,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACtrC,SAAS,CAAGhnC,YACjB,CAAA,IAAI,CAAClhH,OAAO,CAAG,IACf,CAAA,IAAI,CAACy/G,MAAM,CAAG,KACd,CAAA,IAAI,CAAColM,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC/yL,MAAM,CAAG,CACZxP,eACD,CAEL,CAEA,IAAIwlM,aAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwBpB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2EpB,CAAC,CAED,IAAIC,0BAAAA,CAA6B,CAAC;;AAElC,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;AAEjC,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;AAY3B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;AAU9B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2B9B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;AAQ/B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgC/B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;AAoB/B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;AAG9B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsC/B,CAAC,CAED,IAAIC,4BAAAA,CAA+B,CAAC;;;;;AAKpC,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;AAEjC,CAAC,CAED,IAAIC,0BAAAA,CAA6B,CAAC;;;;;;AAMlC,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;;;;;;;;;;;;;;;AAgBjC,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiEhC,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;AAG9B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;AAI7B,CAAC,CAED,IAAIC,0BAAAA,CAA6B,CAAC;;;AAGlC,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;AAEhC,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8ExB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;AAI5B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;AAG/B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;AAMxB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;AAQxB,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;AAKhC,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDzB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;AAG5B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;AAK7B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;AAE/B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;AAKzB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;AAE3B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;AAG9B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;AAE/B,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyB/B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8C3B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8E3B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;AAKzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;AAEzB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;AAO5B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;AAGxB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;AAMzB,CAAC,CAED,MAAMC,kBAAqB,CAAA,CACzBC,WAAY5C,YACZ6C,CAAAA,UAAAA,CAAY5C,aACZ6C,wBAA0B5C,CAAAA,0BAAAA,CAC1B6C,wBAAyB5C,yBACzB6C,CAAAA,iBAAAA,CAAmB5C,oBACnB6C,oBAAsB5C,CAAAA,sBAAAA,CACtB6C,qBAAsB5C,sBACtB6C,CAAAA,qBAAAA,CAAuB5C,wBACvB6C,qBAAuB5C,CAAAA,uBAAAA,CACvB6C,sBAAuB5C,uBACvB6C,CAAAA,oBAAAA,CAAsB5C,uBACtB6C,qBAAuB5C,CAAAA,uBAAAA,CACvB6C,2BAA4B5C,4BAC5B6C,CAAAA,uBAAAA,CAAyB5C,0BACzB6C,wBAA0B5C,CAAAA,0BAAAA,CAC1B6C,wBAAyB5C,yBACzB6C,CAAAA,sBAAAA,CAAwB5C,yBACxB6C,oBAAsB5C,CAAAA,sBAAAA,CACtB6C,oBAAqB5C,qBACrB6C,CAAAA,wBAAAA,CAA0B5C,2BAC1B6C,sBAAwB5C,CAAAA,wBAAAA,CACxB6C,eAAgB5C,gBAChB6C,CAAAA,kBAAAA,CAAoB5C,qBACpB6C,qBAAuB5C,CAAAA,uBAAAA,CACvB6C,eAAgB5C,gBAChB6C,CAAAA,cAAAA,CAAgB5C,iBAChB6C,sBAAwB5C,CAAAA,wBAAAA,CACxB6C,gBAAiB5C,iBACjB6C,CAAAA,kBAAAA,CAAoB5C,qBACpB6C,mBAAqB5C,CAAAA,qBAAAA,CACrB6C,sBAAuB5C,uBACvB6C,CAAAA,eAAAA,CAAiB5C,kBACjB6C,iBAAmB5C,CAAAA,mBAAAA,CACnB6C,qBAAsB5C,sBACtB6C,CAAAA,qBAAAA,CAAuB5C,wBACvB6C,qBAAuB5C,CAAAA,uBAAAA,CACvB6C,kBAAmB5C,mBACnB6C,CAAAA,iBAAAA,CAAmB5C,oBACnB6C,eAAiB5C,CAAAA,iBAAAA,CACjB6C,gBAAiB5C,iBACjB6C,CAAAA,kBAAAA,CAAoB5C,qBACpB6C,cAAgB5C,CAAAA,gBAAAA,CAChB6C,gBAAiB5C,iBACnB,CAAA,CAEA,IAAIE,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BlB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiGlB,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;AAEhC,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;AAE/B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;AAczB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;AAa5B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B3B,CAAC,CAEF,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;AAQ7B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiC7B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;AAqB7B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;AAI5B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsC7B,CAAC,CAED,IAAIC,0BAAAA,CAA6B,CAAC;;;;;AAKlC,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;AAE/B,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;;;AAOhC,CAAC,CAED,IAAIC,uBAAAA,CAA0B,CAAC;;;;;;;;;;;;;;;;;AAiB/B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmF9B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;AAK5B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;AAM3B,CAAC,CAED,IAAIC,wBAAAA,CAA2B,CAAC;;;;;AAKhC,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;AAI9B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoFtB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;AAI1B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;AAK7B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;AAOtB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;AAQtB,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;AAK9B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuDvB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;AAG1B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;AAK3B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;AAE7B,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;AASvB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;AAEzB,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;AAK5B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;AAE7B,CAAC,CAED,IAAIC,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyB7B,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiDzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiFzB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;AAKvB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;AAEvB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;AAQ1B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;AAetB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;AAMvB,CAAC,CAED,MAAMC,kBAAqB,CAAA,CACzB3C,WACAC,UACAC,CAAAA,wBAAAA,CACAC,uBACAC,CAAAA,iBAAAA,CACAC,qBACAC,oBACAC,CAAAA,qBAAAA,CACAC,qBACAC,CAAAA,qBAAAA,CACAC,qBACAC,qBACAC,CAAAA,0BAAAA,CACAC,uBACAC,CAAAA,wBAAAA,CACAC,wBACAC,sBACAC,CAAAA,oBAAAA,CACAC,mBACAC,CAAAA,wBAAAA,CACAC,uBACAC,cACAC,CAAAA,kBAAAA,CACAC,qBACAC,CAAAA,cAAAA,CACAC,eACAC,sBACAC,CAAAA,eAAAA,CACAC,kBACAC,CAAAA,mBAAAA,CACAC,sBACAC,eACAC,CAAAA,iBAAAA,CACAC,oBACAC,CAAAA,qBAAAA,CACAC,sBACAC,iBACAC,CAAAA,iBAAAA,CACAC,eACAC,CAAAA,eAAAA,CACAC,mBACAC,cACAC,CAAAA,eACF,CAEA,CAAA,MAAME,UAAY,CAChB,SAAA,CACA,UACA,CAAA,cAAA,CACA,WACA,MACA,CAAA,OAAA,CACA,YACA,CAAA,aAAA,CACA,OACA,SACA,CAAA,UAAA,CACA,aACA,CAAA,WAAA,CACA,aACA,OACA,CAAA,gBAAA,CACA,MACA,CAAA,WAAA,CACA,UACA,eACA,CAAA,cAAA,CACA,gBACA,CAAA,qBAAA,CACA,gBACA,oBACA,CAAA,iBAAA,CACA,MACA,CAAA,YAAA,CACA,YACA,CAAA,aAAA,CACA,eACA,CAAA,gBAAA,CACA,OACA,WACA,CAAA,aAAA,CACA,aACA,CAAA,gBAAA,CACA,qBACA,qBACA,CAAA,eAAA,CACA,gBACA,CAAA,oBAAA,CACA,sBACA,kBACA,CAAA,mBAAA,CACA,YACA,CAAA,aAAA,CACA,aACA,aACA,CAAA,YAAA,CACA,aACA,CAAA,UAAA,CACA,YACA,YACA,CAAA,YAAA,CACA,gBACA,CAAA,eAAA,CACA,oBACA,WACA,CAAA,oBAAA,CACA,WACA,CAAA,UAAA,CACA,SACD,CACD,MAAMC,6BAAsCjyD,SAAAA,eAAAA,CAgC1CI,wBAAwBntB,SAAS,CAAEzL,KAAK,CAAExxF,UAAU,CAAE,CACpD,MAAMnqI,IAAAA,CAAO,EACbmqI,CAAAA,UAAAA,CAAa,EAAE,CACf,MAAMk8K,KAAQ,CAAA,IAAI,CAACC,aAAa,CAChC,GAAI3qF,KAAAA,CAAMjsG,IAAI,YAAYqrG,OAAS,OAAOY,KAAAA,CAAMjsG,IAAI,GAAK,SAAU,CACjEisG,KAAAA,CAAMkiF,SAAS,CAAGliF,MAAMjsG,IACxB,CAAOisG,OAAAA,KAAAA,CAAMjsG,KACf,CACA,IAAI,MAAM5qI,IAAQ62O,IAAAA,KAAAA,CAAM,CACtB,GAAIA,MAAMtpO,cAAc,CAACvN,IAAO,CAAA,CAAA,CAC9BqlJ,WAAWrjJ,IAAI,CAAChC,IAChBkb,CAAAA,CAAAA,IAAI,CAAClb,IAAAA,CAAK,CAAG62O,KAAK,CAAC72O,IAAK,EAC1B,CACA,GAAIuhU,KAAK,CAACvhU,IAAAA,CAAK,GAAK,MAAA,CAAQ,CAC1B,GAAIE,KAAAA,CAAMC,OAAO,CAAC+a,IAAI,CAAClb,IAAAA,CAAK,CAAG,CAAA,CAC7Bkb,IAAI,CAAClb,IAAAA,CAAK,CAAG,IAAImd,KAAKjC,IAAI,CAAClb,IAAK,CAAA,CAAC,EAAE,CAAEkb,IAAI,CAAClb,IAAAA,CAAK,CAAC,CAAE,CAAA,CAAEkb,IAAI,CAAClb,KAAK,CAAC,CAAA,CAAE,EACnE,CACF,MAAO,GAAIuhU,KAAK,CAACvhU,IAAAA,CAAK,GAAK,OAAS,CAAA,CAClC,GAAI,EAAEkb,IAAI,CAAClb,IAAK,CAAA,WAAYya,KAAI,CAAI,CAAA,CAClC,MAAMzI,CAAAA,CAAIkJ,IAAI,CAAClb,IAAAA,CAAK,CAAC2Y,IAAI,CACzBuC,IAAI,CAAClb,IAAAA,CAAK,CAAG,IAAIya,KAAAA,CAAMS,IAAI,CAAClb,KAAK,CAACmZ,IAAI,CACtC+B,CAAAA,IAAI,CAAClb,IAAAA,CAAK,CAAC2Y,IAAI,CAAG3G,EACpB,CACF,CAAO,KAAA,GAAIuvT,KAAK,CAACvhU,IAAAA,CAAK,GAAK,UAAA,CAAY,CACrC,GAAI,EAAEkb,IAAI,CAAClb,IAAK,CAAA,WAAYmb,QAAO,CAAA,CAAI,CACrC,MAAMnJ,CAAAA,CAAIkJ,IAAI,CAAClb,KAAK,CAAC2Y,IAAI,CACzBuC,IAAI,CAAClb,IAAAA,CAAK,CAAG,IAAImb,SAASD,IAAI,CAAClb,IAAK,CAAA,CAACmZ,IAAI,CACzC+B,CAAAA,IAAI,CAAClb,IAAK,CAAA,CAAC2Y,IAAI,CAAG3G,EACpB,CACF,CACA,GAAIkJ,IAAAA,CAAK2qH,MAAM,EAAI3lI,KAAAA,CAAMC,OAAO,CAAC+a,KAAK2qH,MAAM,CAAA,CAAG,CAC7C3qH,IAAAA,CAAK2qH,MAAM,CAAG3qH,IAAAA,CAAK2qH,MAAM,CAAC9jI,KAAK,CAAC,CAAA,EAClC,CACF,CACA,KAAK,CAAC0tQ,uBAAAA,CAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAMmqI,YACjD,CACA2/F,cAAAA,CAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMs7B,MAAAA,CAASg2F,OAAO25L,cAAc,CAACvmT,IAAI,CACzC,MAAM0mO,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAM1mO,IAAAA,CAAO,EAAC,CACd,IAAI,IAAIha,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMwoO,OAAOzgP,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAC/C,MAAMlB,IAAO4hP,CAAAA,MAAM,CAAC1gP,CAAE,CAAA,CACtB,IAAIwgU,UAAAA,CAAa5vR,MAAM,CAAC9xC,IAAK,CAAA,CAC7B,GAAI0hU,UAAsBvkT,YAAAA,IAAAA,EAAQukT,UAAsBjnT,YAAAA,KAAAA,EAASinT,sBAAsBvmT,QAAU,CAAA,CAC/FumT,UAAaA,CAAAA,UAAAA,CAAWlrT,KAAK,EAC7B0E,CAAAA,IAAI,CAAClb,KAAK,CAAG0hU,WACf,CAAO,KAAA,GAAI1hU,OAAS,QAAU,CAAA,CAC5Bkb,IAAK2qH,CAAAA,MAAM,CAAG/zF,MAAO+zF,CAAAA,MAAM,CAAC9jI,KAAK,CAAC,CACpC,EAAA,CAAA,KAAO,CACL,GAAI2/T,aAAe,IAAQA,EAAAA,UAAAA,GAAe14T,SAAW,CAAA,CACnDkS,IAAI,CAAClb,IAAAA,CAAK,CAAG0hU,WACf,CACF,CACF,CACA,OAAO,IAAI,CAACh+E,YAAY,CAACltO,KAAO0E,CAAAA,IAAAA,CAClC,CACAwiQ,QAAS3+J,CAAAA,EAAE,CAAE,CACX,MAAM/jE,UAAa,CAAA,IAAI,CAAC0Z,KAAK,CAC7B,MAAMo7G,KAAAA,CAAQ,IAAI,CAACohE,GAAG,CAACphE,KAAK,CAAC25E,SAAS,CACtC,MAAM/1E,WAAc,CAAA,IAAI,CAACw9D,GAAG,CAACtrG,KAAK,CAACC,MAAM,CACzC,IAAI,IAAI3kI,CAAAA,CAAI,EAAGA,CAAIwyK,CAAAA,WAAAA,CAAY9Q,SAAS,CAACzhK,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnDwyK,WAAAA,CAAY9Q,SAAS,CAAC1hK,CAAAA,CAAE,CAACi6K,iBAAiB,CAAG,MAC/C,CACA,IAAI,MAAMjwI,MAAM8P,UAAW,CAAA,CACzB,GAAIA,UAAAA,CAAWztC,cAAc,CAAC29B,EAAAA,CAAAA,CAAK,CACjC,MAAMo3M,UAAYtnM,UAAU,CAAC9P,EAAG,CAAA,CAChC,MAAM48F,MAASw6G,CAAAA,SAAAA,CAAUx6G,MAAM,CAC/B,MAAM5sH,IAAOonO,CAAAA,SAAAA,CAAUpnO,IAAI,CAC3B,GAAIA,IAAKnH,CAAAA,OAAO,EAAI+zH,MAAAA,CAAO/zH,OAAO,CAAE,CAClC,MAAMu9J,OAAAA,CAAUxpC,OAAO25L,cAAc,CAACnwJ,OAAO,CAC7C,GAAI,CAACA,OAAAA,EAASxrC,YAAasO,CAAAA,OAAAA,CAAS,SACpC,GAAIk9B,OAAAA,CAAQ5J,QAAQ,CAAE,CACpB,MAAM7hC,MAAAA,CAAS3qH,IAAK2qH,CAAAA,MAAM,CAC1B,IAAI,IAAI3kI,CAAI,CAAA,CAAA,CAAGA,EAAI2kI,MAAO1kI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAM+kI,KAAAA,CAAQytC,WAAYxtC,CAAAA,YAAY,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CAChD,GAAI+kI,KAAO,CAAA,CACTA,KAAMk1C,CAAAA,iBAAiB,CAAG,KAC5B,CACF,CACF,CACA,GAAI,CAACjgK,IAAAA,CAAKs4G,MAAM,CAAE,CAChB,IAAImuM,QAAAA,CAAW,CACfrwJ,CAAAA,QAAQw5B,OAAO,EAAI/rF,EACnB,CAAA,GAAIuyD,QAAQw5B,OAAO,EAAIx5B,OAAQs5B,CAAAA,aAAa,CAAE,CAC5C+2H,QAAAA,CAAWlhU,IAAKmQ,CAAAA,KAAK,CAAC0gK,OAAQw5B,CAAAA,OAAO,CAAGx5B,OAAAA,CAAQs5B,aAAa,CAC7Dt5B,CAAAA,OAAQw5B,CAAAA,OAAO,EAAI62H,QAAWrwJ,CAAAA,OAAAA,CAAQs5B,cACxC,CACA,GAAI+2H,QAAU,CAAA,CACZA,SAAWlhU,IAAKmU,CAAAA,GAAG,CAAC+sT,QAAAA,CAAUrwJ,QAAQu5B,WAAW,CAAA,CACjD,IAAI,IAAI3pM,EAAI,CAAGA,CAAAA,CAAAA,CAAIygU,QAAUzgU,CAAAA,CAAAA,EAAAA,CAAI,CAC/BowK,OAAQ40B,CAAAA,OAAO,CAAC50B,OAAAA,CAAQs5B,aAAa,CAAE,KAAA,EACzC,CACA96B,KAAAA,CAAM65E,gBAAgB,EAAIg4E,QAC1B7xJ,CAAAA,KAAAA,CAAM96F,UAAU,EAAIs8F,OAAAA,CAAQq5B,YAC5Br5B,CAAAA,OAAQq5B,CAAAA,YAAY,CAAG,EACzB,CACAr5B,OAAQ64B,CAAAA,WAAW,GACrB,CACF,CACF,CACF,CACF,CACAizE,cAAAA,CAAet1I,MAAM,CAAEw6G,SAAS,CAAE,CAChCA,UAAU86B,cAAc,GAC1B,CACA/yO,OAAAA,EAAU,CACR,KAAK,CAACA,OACN,EAAA,CAAA,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAA,CAAU,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CA3IAz0Q,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,gBACV,CAAA,IAAI,CAACokO,aAAa,CAAGqpD,uBACrB,CAAA,IAAI,CAACnpD,QAAQ,CAAGosD,2BAChB,CAAA,IAAI,CAACh6E,MAAM,CAAGy/E,SACd,CAAA,IAAI,CAACG,aAAa,CAAG,CACnB79H,cAAgB,CAAA,MAAA,CAChB8B,oBAAqB,MACrB0D,CAAAA,cAAAA,CAAgB,MAChBvQ,CAAAA,UAAAA,CAAY,OACZ4N,kBAAoB,CAAA,UAAA,CACpBQ,mBAAqB,CAAA,UAAA,CACrBP,cAAe,UACfQ,CAAAA,cAAAA,CAAgB,UAChBN,CAAAA,UAAAA,CAAY,WACZQ,WAAa,CAAA,UAAA,CACbL,UAAY,CAAA,OAAA,CACZQ,YAAa,OACbV,CAAAA,kBAAAA,CAAoB,OACpBQ,CAAAA,mBAAAA,CAAqB,QACrBL,gBAAkB,CAAA,OAAA,CAClBQ,iBAAmB,CAAA,OAAA,CACnBV,WAAY,OACZQ,CAAAA,WAAAA,CAAa,OACf,CAAA,CACA,IAAI,CAAC9+L,EAAE,CAAC,eAAgB,IAAI,CAAC60Q,cAAc,CAAE,IAAI,CACjD,CAAA,IAAI,CAAClsC,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,SAAU,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,CACjDh7I,CAAAA,YAAAA,CAAaz/H,GAAG,CAACiuO,IAAIpmM,cAAc,CAAE3H,mBAAqB3xB,CAAAA,CAAAA,GAAG,CAACgtT,kBAC9D97L,CAAAA,CAAAA,YAAAA,CAAaz/H,GAAG,CAACiuO,IAAIpmM,cAAc,CAAE1H,mBAAqB5xB,CAAAA,CAAAA,GAAG,CAAC4vT,kBAChE,EAAA,CA8GF,CAEA,MAAMQ,iCAAiCnxQ,gBACrCxnD,CAAAA,WAAAA,CAAY8+H,IAAI,CAAEoJ,YAAY,CAAC,CAC7B,KAAK,EACL,CAAA,IAAI,CAACpJ,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACoJ,YAAY,CAAGA,aACtB,CACF,CACA,MAAM0wL,kBAIJ,OAAOC,wBAAAA,CAAyB/5L,IAAI,CAAEP,QAAQ,CAAEM,MAAM,CAAE,CACtD,IAAIi6L,QAAWF,CAAAA,iBAAAA,CAAkBG,qBAAqB,CAACj6L,KAAMP,QAC7D,CAAA,CAAA,GAAI,CAACu6L,QAAAA,CAAU,CACbA,QAAW,CAAA,IAAIx6L,YAAaQ,CAAAA,IAAAA,CAAAA,CAC5Bg6L,SAASx2R,OAAO,CAACi8F,QAAUM,CAAAA,MAAAA,CAAAA,CAC3B+5L,kBAAkBI,qBAAqB,CAACl6L,IAAMP,CAAAA,QAAAA,CAAUu6L,UAC1D,CACA,OAAOA,QACT,CACA,OAAOC,qBAAsBj6L,CAAAA,IAAI,CAAEP,QAAQ,CAAE,CAC3C,IAAI2J,YAAe,CAAA,IAAA,CACnB,MAAM+wL,cAAiBL,CAAAA,iBAAAA,CAAkBM,kBAAkB,CAACl/T,GAAG,CAACukI,QAAAA,CAAAA,CAChE,GAAI06L,cAAAA,CAAgB,CAClB,MAAME,SAAAA,CAAYF,cAAeliQ,CAAAA,IAAI,CAAC,OAACnjB,EAAUA,OAAQkrF,CAAAA,IAAI,GAAKA,IAClE,CAAA,CAAA,GAAIq6L,SAAW,CAAA,CACbA,UAAU1xQ,WAAW,EAAA,CACrBygF,YAAeixL,CAAAA,SAAAA,CAAUjxL,aAAY,CAEzC,CACA,OAAOA,YACT,CACA,OAAO8wL,qBAAAA,CAAsBl6L,IAAI,CAAEP,QAAQ,CAAE2J,YAAY,CAAE,CACzD,IAAI+wL,cAAiBL,CAAAA,iBAAAA,CAAkBM,kBAAkB,CAACl/T,GAAG,CAACukI,QAAAA,CAAAA,CAC9D,GAAI,CAAC06L,cAAAA,CAAgB,CACnBA,cAAAA,CAAiB,EAAE,CACnBL,iBAAAA,CAAkBM,kBAAkB,CAAC14T,GAAG,CAAC+9H,QAAAA,CAAU06L,cACrD,EAAA,CACA,IAAIE,SAAYF,CAAAA,cAAAA,CAAeliQ,IAAI,CAAC,OAAWnjB,EAAAA,OAAAA,CAAQkrF,IAAI,GAAKA,MAChE,GAAI,CAACq6L,SAAW,CAAA,CACdA,UAAY,IAAIR,wBAAAA,CAAyB75L,IAAMoJ,CAAAA,YAAAA,CAAAA,CAC/C+wL,eAAelgU,IAAI,CAACogU,SACtB,EAAA,CACAA,UAAU1xQ,WAAW,GACvB,CACA,OAAO2xQ,yBAAyBlxL,YAAY,CAAE,CAC5C,GAAIA,aAAc,CAChB,MAAM3J,QAAW2J,CAAAA,YAAAA,CAAa3J,QAAQ,CACtC,GAAIA,QAAU,CAAA,CACZ,MAAM06L,cAAiBL,CAAAA,iBAAAA,CAAkBM,kBAAkB,CAACl/T,GAAG,CAACukI,QAAAA,CAAAA,CAChE,GAAI06L,cAAAA,CAAgB,CAClB,MAAMI,cAAAA,CAAiBJ,cAAet+M,CAAAA,SAAS,CAAC,OAAC/mE,EAAUA,OAAQs0F,CAAAA,YAAY,GAAKA,YACpF,CAAA,CAAA,GAAImxL,cAAkB,EAAA,CAAA,CAAG,CACvB,MAAMF,SAAAA,CAAYF,cAAc,CAACI,eAAe,CAChDF,SAAAA,CAAUxxQ,WAAW,EAAA,CACrB,GAAIwxQ,SAAUvxQ,CAAAA,QAAQ,GAAK,CAAA,CAAG,CAC5BqxQ,cAAel4T,CAAAA,MAAM,CAACs4T,cAAAA,CAAgB,GACtC,GAAI,CAACJ,cAAe/gU,CAAAA,MAAM,CAAE,CAC1B0gU,iBAAAA,CAAkBM,kBAAkB,CAACp4T,MAAM,CAACy9H,QAAAA,EAC9C,CACA,GAAI2J,aAAc,CAChBA,YAAAA,CAAa9mG,OAAO,EACpB+3R,CAAAA,SAAUjxL,CAAAA,YAAY,CAAG,KAC3B,CACF,CACF,CACF,CACF,CACF,CACF,CACF,CA7DI,iBAFE0wL,CAEGM,kBAAkB,CAAG,IAAI74T,GA+DlC,OAAMi5T,cAqBJ,CAAA,IAAIr3R,EAAGriC,CAAAA,KAAK,CAAE,CACZ,GAAI,IAAI,CAACkD,GAAG,CAAE,MAAMX,KAAM,CAAA,sBAAA,CAAA,CAC1B,IAAI,CAAC2vN,OAAO,EACZ,CAAA,IAAI,CAAC+uD,GAAG,CAAGjhR,KACX,CAAA,IAAI,CAACgyN,KAAK,CAAG,IAAI,CAAC2nG,SAAS,CAACv/T,GAAG,CAAC,IAAI,CAAC6mR,GAAG,CAAA,CACxC,IAAI,CAAC24C,KAAK,GACZ,CACA,IAAIv3R,EAAK,EAAA,CACP,OAAO,IAAI,CAAC4+O,GACd,CACA,IAAI/9Q,IAAIlD,KAAK,CAAE,CACb,GAAI,IAAI,CAACqiC,EAAE,CAAE,MAAM9/B,MAAM,sBACzB,CAAA,CAAA,IAAI,CAAC2vN,OAAO,EACZ,CAAA,IAAI,CAAC2nG,IAAI,CAAG75T,KACZ,CAAA,IAAI,CAACgyN,KAAK,CAAG,IAAI,CAAC2nG,SAAS,CAAC9oF,QAAQ,CAAC,IAAI,CAACgpF,IAAI,CAC9C,CAAA,IAAI,CAACD,KAAK,GACZ,CACA,IAAI12T,GAAM,EAAA,CACR,OAAO,IAAI,CAAC22T,IACd,CACAD,KAAQ,EAAA,CACN,GAAI,IAAI,CAACv3R,EAAE,CAAE,CACX,GAAI,IAAI,CAACq2M,YAAY,CAAE,IAAI,CAACohF,YAAY,CAAG,IAAI,CAACH,SAAS,CAACj6T,EAAE,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC2iC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC03R,OAAO,CAAE,IAAI,CAClG,CAAA,GAAI,IAAI,CAACnnF,WAAW,CAAE,IAAI,CAAConF,WAAW,CAAG,IAAI,CAACL,SAAS,CAAC75T,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAACuiC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC43R,MAAM,CAAE,IAAI,CAAA,CAChG,GAAI,IAAI,CAACvmF,cAAc,CAAE,IAAI,CAACwmF,cAAc,CAAG,IAAI,CAACP,SAAS,CAACj6T,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC2iC,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC83R,SAAS,CAAE,IAAI,CAAA,CAC1G,GAAI,IAAI,CAACvhF,cAAc,CAAE,IAAI,CAACwhF,cAAc,CAAG,IAAI,CAACT,SAAS,CAACj6T,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC2iC,EAAE,CAAC,CAAC,CAAE,IAAI,CAACg4R,SAAS,CAAE,IAAI,EAC5G,CACA,GAAI,IAAI,CAACn3T,GAAG,CAAE,CACZ,GAAI,IAAI,CAACw1O,YAAY,CAAE,IAAI,CAAC4hF,aAAa,CAAG,IAAI,CAACX,SAAS,CAACj6T,EAAE,CAAC,CAAC,SAAS,EAAE,IAAI,CAACwD,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC62T,OAAO,CAAE,IAAI,CAAA,CACxG,GAAI,IAAI,CAACnnF,WAAW,CAAE,IAAI,CAAC2nF,YAAY,CAAG,IAAI,CAACZ,SAAS,CAAC75T,IAAI,CAAC,CAAC,QAAQ,EAAE,IAAI,CAACoD,GAAG,CAAC,CAAC,CAAE,IAAI,CAAC+2T,MAAM,CAAE,IAAI,CAAA,CACtG,GAAI,IAAI,CAACvmF,cAAc,CAAE,IAAI,CAAC8mF,eAAe,CAAG,IAAI,CAACb,SAAS,CAACj6T,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,CAACwD,GAAG,CAAC,CAAC,CAAE,IAAI,CAACi3T,SAAS,CAAE,IAAI,EAClH,CACF,CACAjoG,OAAU,EAAA,CACR,GAAI,IAAI,CAAC7vL,EAAE,CAAE,CACX,IAAI,CAACy3R,YAAY,EAAEx6T,GACnB,EAAA,CAAA,IAAI,CAACw6T,YAAY,CAAG,IACpB,CAAA,IAAI,CAACE,WAAW,EAAE16T,KAClB,CAAA,IAAI,CAAC06T,WAAW,CAAG,IACnB,CAAA,IAAI,CAACE,cAAc,EAAE56T,GAAAA,EACrB,CAAA,IAAI,CAAC46T,cAAc,CAAG,IACtB,CAAA,IAAI,CAACE,cAAc,EAAE96T,GAAAA,EACrB,CAAA,IAAI,CAAC86T,cAAc,CAAG,KACxB,CACA,GAAI,IAAI,CAACl3T,GAAG,CAAE,CACZ,IAAI,CAACo3T,aAAa,EAAEh7T,GAAAA,EACpB,CAAA,IAAI,CAACg7T,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,YAAY,EAAEj7T,GAAAA,EACnB,CAAA,IAAI,CAACi7T,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,eAAe,EAAEl7T,GACtB,EAAA,CAAA,IAAI,CAACk7T,eAAe,CAAG,KACzB,CACF,CACAT,QAAQ/nG,KAAK,CAAE,CACb,IAAI,CAAC0mB,YAAY,CAACz2O,IAAI,CAAC,IAAI,CAACw4T,MAAM,CAAE,IAAI,CAAC19E,YAAY,CAAE,IAAI,CAACzzO,MAAM,CAAE0oN,KAAAA,EACtE,CACAioG,MAAAA,CAAOjoG,KAAK,CAAE,CACZ,IAAI,CAACA,KAAK,CAAGA,KAAAA,CACb,IAAI,CAAC4gB,WAAW,CAAC3wO,IAAI,CAAC,IAAI,CAACw4T,MAAM,CAAE,IAAI,CAAC19E,YAAY,CAAE,IAAI,CAACzzO,MAAM,CAAE0oN,KAAAA,EACrE,CACAmoG,SAAAA,CAAUnoG,KAAK,CAAE,CACf,IAAI,CAAC0hB,cAAc,CAACzxO,IAAI,CAAC,IAAI,CAACw4T,MAAM,CAAE,IAAI,CAAC19E,YAAY,CAAE,IAAI,CAACzzO,MAAM,CAAE0oN,KACtE,CAAA,CAAA,IAAI,CAACA,KAAK,CAAG,KACf,CACAqoG,SAAAA,CAAUroG,KAAK,CAAE,CACf,IAAI,CAAC4mB,cAAc,CAAC32O,IAAI,CAAC,IAAI,CAACw4T,MAAM,CAAE,IAAI,CAAC19E,YAAY,CAAE,IAAI,CAACzzO,MAAM,CAAE0oN,KACxE,EAAA,CAtFA5xN,WAAY28O,CAAAA,YAAY,CAAEzzO,MAAM,CAAEgkO,QAAQ,CAAEvsO,SAAS,CAAEnB,KAAK,CAAC,CAC3D,IAAI,CAACk6T,YAAY,CAAG,IACpB,CAAA,IAAI,CAACM,cAAc,CAAG,IACtB,CAAA,IAAI,CAACJ,WAAW,CAAG,IACnB,CAAA,IAAI,CAACE,cAAc,CAAG,IACtB,CAAA,IAAI,CAACI,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACC,eAAe,CAAG,IACvB,CAAA,IAAI,CAACz9E,YAAY,CAAGA,YACpB,CAAA,IAAI,CAACzzO,MAAM,CAAGA,MACd,CAAA,IAAI,CAACmxT,MAAM,CAAG76T,KACd,CAAA,IAAI,CAAC+5T,SAAS,CAAGrsF,QACjB,CAAA,IAAI,CAACjrM,EAAE,CAAG,IACV,CAAA,IAAI,CAACn/B,GAAG,CAAG,IACX,CAAA,IAAI,CAAC8uN,KAAK,CAAG,IACb,CAAA,IAAI,CAAC0mB,YAAY,CAAG33O,UAAUwtO,IAC9B,CAAA,IAAI,CAACqE,WAAW,CAAG7xO,SAAU4H,CAAAA,GAAG,CAChC,IAAI,CAAC+qO,cAAc,CAAG3yO,SAAU2B,CAAAA,MAAM,CACtC,IAAI,CAACk2O,cAAc,CAAG73O,SAAAA,CAAUouO,OAAM,CAqE1C,CAEA,MAAMurF,wBAAwB10D,SAiB5B,CAAA,IAAI//H,WAAYA,CAAAA,WAAW,CAAE,CAC3B,GAAI,IAAI,CAAC8B,YAAY,GAAK9B,WAAAA,CAAa,CACrC,IAAI,CAAC8B,YAAY,CAAG9B,WACpB0B,CAAAA,YAAAA,CAAayD,2BAA2B,CAAC,IAAI,CAACuvL,cAAc,CAAE10L,WAChE,EAAA,CACF,CACA,IAAIA,aAAc,CAChB,OAAO,IAAI,CAAC8B,YAAY,CAE1B,IAAIklL,UAAAA,CAAWjtT,KAAK,CAAE,CACpB,IAAI,CAACooI,WAAW,CAAGpoI,KAAAA,CACnB,MAAMouI,EAAAA,CAAK,IAAI,CAACusL,cAAc,CAC9B,GAAIvsL,GAAI,CACN,IAAI,IAAI/1I,CAAAA,CAAI,EAAGA,CAAI+1I,CAAAA,EAAAA,CAAG91I,MAAM,CAAED,IAAI,CAChC+1I,EAAE,CAAC/1I,CAAAA,CAAE,CAAC20I,aAAa,CAAC,IAAI,CAAC5E,WAAW,EACtC,CACF,CACF,CACA,IAAI6kL,UAAa,EAAA,CACf,OAAO,IAAI,CAAC7kL,WACd,CACA,IAAIt4H,KAAK9P,KAAK,CAAE,CACd,GAAI,IAAI,CAACwS,KAAK,GAAKxS,KAAAA,CAAO,CACxB,IAAI,CAACwiQ,KAAK,CAAG,IACb,CAAA,IAAI,CAAChwP,KAAK,CAAGxS,KACb,CAAA,IAAI,CAAC46T,oBAAoB,GACzB,GAAI56T,KAAAA,GAAU,OAAS,CAAA,CACrB,IAAIk7H,QAAAA,CAAW,IAAI,CAACoO,SAAS,CAC7B,GAAI,CAACpO,QAAAA,EAAYA,WAAa,IAAI,CAACk5G,MAAM,CAACngF,eAAe,CAAE,CACzD/4B,QAAW,CAAA,IAAI,CAAC2/L,mBAAmB,CAAC,CAAE,CAAA,EAAI,IAAI,CAACA,mBAAmB,CAAC,CAAA,CAAE,CAAC7oG,KAAK,EAAI,IAAI,CAAC6oG,mBAAmB,CAAC,CAAA,CAAE,CAAC7oG,KAAK,CAACpyK,SACnH,CACA,MAAMitQ,SAAWE,iBAAkB,CAAA,IAAI,CAAC34E,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAEjiC,MACnE,CAAA,IAAI,CAACwiQ,KAAK,CAAGqqD,QAAS3mH,CAAAA,IAAI,CAC1B,IAAI,CAACtoE,aAAa,CAAG,CACnB,IAAI+J,YAAaklL,CAAAA,QAAAA,CAAS9qL,IAAI,CAAE7G,UAAY,IAAI,CAACk5G,MAAM,CAACngF,eAAe,CAAE,IAAI,CAACh1B,MAAM,CACrF,EACH,CACF,CACF,CACA,IAAInvH,IAAAA,EAAO,CACT,OAAO,IAAI,CAAC0C,KAAK,CAEnB,IAAIorH,aAAc59H,CAAAA,KAAK,CAAE,CACvB,IAAI,CAAC46T,oBAAoB,EACzB,CAAA,IAAI,CAACD,cAAc,CAAG36T,KAAAA,CACtB,GAAI,IAAI,CAAC26T,cAAc,CAAE,CACvB,MAAMvsL,EAAAA,CAAK,IAAI,CAACusL,cAAc,CAC9B,IAAI,IAAItiU,CAAAA,CAAI,EAAGA,CAAI+1I,CAAAA,EAAAA,CAAG91I,MAAM,CAAED,IAAI,CAChC,GAAI,CAAC+1I,EAAE,CAAC/1I,CAAE,CAAA,CAACowI,IAAI,CAAE,CACf2F,EAAE,CAAC/1I,CAAE,CAAA,CAACowI,IAAI,CAAG,IAAI,CAACxJ,OAAM,CAE1BmP,EAAE,CAAC/1I,CAAAA,CAAE,CAAC40I,UAAU,CAAG,IAAI,CAACgxC,YACxB7vC,CAAAA,EAAE,CAAC/1I,CAAE,CAAA,CAAC4xI,aAAa,CAAG,IAAI,CAACqjL,eAAe,CAC1Cl/K,EAAE,CAAC/1I,CAAAA,CAAE,CAAC4tI,WAAW,CAAG,IAAI,CAAC8B,YAAY,CACrCqG,EAAE,CAAC/1I,CAAAA,CAAE,CAAC00I,cAAc,CAAC,IAAI,CAACwgL,YAAY,CAAA,CACtCn/K,EAAE,CAAC/1I,CAAAA,CAAE,CAAC20I,aAAa,CAAC,IAAI,CAAC5E,WAAW,EACtC,CACA,GAAI,IAAI,CAACl9H,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACiyH,WAAW,GAClB,CACF,CACF,CACA,IAAIS,aAAgB,EAAA,CAClB,OAAO,IAAI,CAAC+8L,cACd,CACA,IAAI14D,YAAYjiQ,KAAK,CAAE,CACrB,GAAIA,QAAU,IAAI,CAACutT,YAAY,CAAE,CAC/B,IAAI,CAACA,YAAY,CAAGvtT,MACpB,MAAMouI,EAAAA,CAAK,IAAI,CAACusL,cAAc,CAC9B,GAAIvsL,EAAI,CAAA,CACN,IAAI,IAAI/1I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+1I,GAAG91I,MAAM,CAAED,CAAI,EAAA,CAAA,CAChC+1I,EAAE,CAAC/1I,CAAAA,CAAE,CAAC00I,cAAc,CAAC/sI,KACvB,EAAA,CACF,CACF,CACF,CACA,IAAIiiQ,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACsrD,YAAY,CAE1B,IAAI/mK,WAAYxmJ,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAACi+K,YAAY,GAAKj+K,MAAO,CAC/B,MAAMouI,EAAK,CAAA,IAAI,CAACusL,cAAc,CAC9B,GAAIvsL,EAAAA,CAAI,CACN,MAAMpR,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,MAAMD,KAAAA,CAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,GAAI,IAAI,CAACkhD,YAAY,EAAI,CAACj+K,KAAAA,CAAO,CAC/B,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,EAAI2kI,MAAO1kI,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAM+kI,KAAAA,CAAQL,KAAMC,CAAAA,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,CACtD,CAAA,GAAI+kI,MAAO,CACTA,KAAAA,CAAMk5C,mBAAmB,CAACloC,IAC5B,CACF,CACF,CACA,IAAI,IAAI/1I,CAAI,CAAA,CAAA,CAAGA,CAAI+1I,CAAAA,EAAAA,CAAG91I,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAChC+1I,EAAE,CAAC/1I,CAAE,CAAA,CAAC40I,UAAU,CAAGjtI,MACrB,CACA,GAAI,CAAC,IAAI,CAACi+K,YAAY,EAAIj+K,KAAO,CAAA,CAC/B,IAAI,IAAI3H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2kI,OAAO1kI,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAM+kI,KAAQL,CAAAA,KAAAA,CAAMC,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAAA,CAAE,EACjD,GAAI+kI,KAAAA,CAAO,CACTA,KAAAA,CAAMg5C,gBAAgB,CAAChoC,EAAAA,EACzB,CACF,CACF,CACF,CACA,IAAI,CAAC6vC,YAAY,CAAGj+K,MACtB,CACF,CACA,IAAIwmJ,aAAc,CAChB,OAAO,IAAI,CAACy3B,YAAY,CAE1B,IAAIyvI,cAAAA,CAAe1tT,KAAK,CAAE,CACxB,GAAI,IAAI,CAACstT,eAAe,GAAKttT,KAAO,CAAA,CAClC,IAAI,CAACstT,eAAe,CAAGttT,KAAAA,CACvB,MAAMouI,EAAK,CAAA,IAAI,CAACusL,cAAc,CAC9B,GAAIvsL,EAAAA,CAAI,CACN,IAAI,IAAI/1I,CAAI,CAAA,CAAA,CAAGA,CAAI+1I,CAAAA,EAAAA,CAAG91I,MAAM,CAAED,CAAI,EAAA,CAAA,CAChC+1I,EAAE,CAAC/1I,CAAAA,CAAE,CAAC4xI,aAAa,CAAGjqI,MACxB,CACF,CACF,CACF,CACA,IAAI0tT,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACJ,eAAe,CAE7B,IAAIlrD,mBAAoBpiQ,CAAAA,KAAK,CAAE,CAC7B,IAAI,CAAC2tT,oBAAoB,CAAG3tT,MAC9B,CACA,IAAIoiQ,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACurD,oBAAoB,CAElC,IAAIj5G,sBAAuB10M,CAAAA,KAAK,CAAE,CAChC,IAAI,CAAC4tT,uBAAuB,CAAG5tT,MACjC,CACA,IAAI00M,sBAAAA,EAAyB,CAC3B,OAAO,IAAI,CAACk5G,uBAAuB,CAErC,IAAI5wL,MAAOh9H,CAAAA,KAAK,CAAE,CAChB,MAAMg9H,MAAS,CAAA,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAII,KACJ,CAAA,GAAI,IAAI,CAACu9L,cAAc,CAAE,CACvB,IAAI,IAAItiU,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C+kI,KAAQJ,CAAAA,MAAAA,CAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,CAC3C,GAAI+kI,KAAAA,CAAO,CACTA,KAAMG,CAAAA,mBAAmB,CAAC,IAAI,CAACo9L,cAAc,EAC/C,CACF,CACF,CACA,IAAI,CAACxhL,OAAO,CAAC7gJ,MAAM,CAAG,CAAA,CACtB,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAI2H,KAAM1H,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,IAAI,CAAC8gJ,OAAO,CAAC9gJ,CAAAA,CAAE,CAAG2H,KAAK,CAAC3H,CAAE,EAC5B,CACA,GAAI,CAAC,IAAI,CAAC6S,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,EAAI,CAAC,IAAI,CAACyvT,cAAc,CAAE,OACnE,IAAI,IAAItiU,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,IAAI,CAC1C+kI,KAAAA,CAAQJ,MAAOK,CAAAA,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,EAAE,CAC3C,CAAA,GAAI+kI,KAAO,CAAA,CACTA,MAAME,gBAAgB,CAAC,IAAI,CAACq9L,cAAc,EAC5C,CACF,CACF,CACA,IAAI39L,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OACd,CACA,IAAIrb,aAAa99H,KAAK,CAAE,CACtB,GAAI,IAAI,CAACszS,aAAa,GAAKtzS,KAAAA,CAAO,CAChC,GAAI,IAAI,CAACi/H,MAAM,CAAC/zH,OAAO,EAAI,IAAI,CAACooS,aAAa,EAAI,CAAG,CAAA,CAClD,IAAI,CAACl/D,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAEp8O,MAAOq7H,CAAAA,UAAAA,CAAWS,MAAM,CAAE,IAAI,CAACV,YAAY,CAAE,IAAI,CAACmB,MAAM,EACnF,CACA,GAAI,IAAI,CAACA,MAAM,CAAC/zH,OAAO,EAAIlL,KAAS,EAAA,CAAA,CAAG,CACrC,IAAI,CAACo0O,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE12O,MAAAA,CAAO21H,WAAWS,MAAM,CAAEx+H,KAAO,CAAA,IAAI,CAACi/H,MAAM,EACvE,CACA,GAAIj/H,MAAQ,CAAK,EAAA,IAAI,CAACszS,aAAa,EAAI,CAAK,EAAA,IAAI,CAACpoS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC/E,IAAI,CAACiyH,WAAW,GAClB,CACA,IAAI,CAACm2K,aAAa,CAAGtzS,MACvB,CACF,CACA,IAAI89H,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACw1K,aAAa,CAE3B,IAAIp4K,QAASl7H,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAACspI,SAAS,GAAKtpI,MAAO,CAC5B,IAAI,CAACspI,SAAS,CAAGtpI,KACjB,CAAA,GAAI,IAAI,CAAC26T,cAAc,EAAI,IAAI,CAACnoT,KAAK,GAAK,OAAS,CAAA,CACjD,IAAI,IAAIna,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACsiU,cAAc,CAACriU,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,IAAI,CAACsiU,cAAc,CAACtiU,EAAE,CAAC6iI,QAAQ,CAAGl7H,MACpC,CACF,CACF,CACF,CACA,IAAIk7H,UAAW,CACb,OAAO,IAAI,CAACoO,SAAS,CAEvB,IAAIwxL,cAAAA,CAAe96T,MAAQ,EAAE,CAAE,CAC7B,GAAI,IAAI,CAAC66T,mBAAmB,CAACviU,MAAM,CAAG0H,KAAM1H,CAAAA,MAAM,CAAE,CAClD,IAAI,IAAID,CAAAA,CAAI2H,KAAM1H,CAAAA,MAAM,CAAED,CAAI,CAAA,IAAI,CAACwiU,mBAAmB,CAACviU,MAAM,CAAED,CAAI,EAAA,CAAA,CACjE,IAAI,CAACwiU,mBAAmB,CAACxiU,CAAAA,CAAE,CAACgqC,EAAE,CAAG,KACnC,CACA,IAAI,CAACw4R,mBAAmB,CAACviU,MAAM,CAAG0H,KAAM1H,CAAAA,OAAM,CAEhD,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2H,MAAM1H,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,GAAI,CAAC,IAAI,CAACwiU,mBAAmB,CAACxiU,CAAE,CAAA,CAAE,CAChC,IAAI,CAACwiU,mBAAmB,CAAC1hU,IAAI,CAAC,IAAIugU,cAAerhU,CAAAA,CAAAA,CAAG,IAAI,CAAE,IAAI,CAAC+7O,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAE,CAChFznO,IAAK,IAAI,CAACw0R,gBAAgB,CAC1B5uD,KAAM,IAAI,CAAC2uD,eAAe,CAC1Bx6R,OAAQ,IAAI,CAAC46R,iBAAiB,CAC9BnuD,OAAQ,IAAI,CAAC4rF,iBACf,EAAG,IAAI,CAAA,EACT,CACA,GAAI/6T,KAAK,CAAC3H,CAAAA,CAAE,CAAE,CACZ,MAAMgqC,EAAKriC,CAAAA,KAAK,CAAC3H,CAAAA,CAAE,WAAY+0O,KAAQptO,CAAAA,KAAK,CAAC3H,CAAAA,CAAE,CAACgqC,EAAE,CAAGriC,KAAK,CAAC3H,EAAE,CAC7D,GAAI,IAAI,CAACwiU,mBAAmB,CAACxiU,CAAAA,CAAE,CAACgqC,EAAE,GAAKA,EAAI,CAAA,CACzC,IAAI,CAACw4R,mBAAmB,CAACxiU,CAAAA,CAAE,CAACgqC,EAAE,CAAGA,GACnC,CACA,GAAI,IAAI,CAACw4R,mBAAmB,CAACxiU,CAAAA,CAAE,CAAC25N,KAAK,CAAE,CACrC,IAAI,CAACmrE,gBAAgB,CAAC9kS,CAAG,CAAA,IAAI,CAAE,IAAI,CAACwiU,mBAAmB,CAACxiU,EAAE,CAAC25N,KAAK,EAClE,CACF,MAAO,CACL,IAAI,CAAC6oG,mBAAmB,CAACxiU,CAAE,CAAA,CAACgqC,EAAE,CAAG,KACjC,GAAI,IAAI,CAACs4R,cAAc,CAACtiU,CAAE,CAAA,CAAE,CAC1B,IAAI,CAACsiU,cAAc,CAACtiU,CAAE,CAAA,CAAC6iI,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBAChD,CACF,CACF,CACF,CACA,IAAI6mK,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACD,mBAAmB,CAAC37T,GAAG,CAAEm1C,GACnC,EAAA,CAAA,OAAOA,IAAIhS,EACb,CACF,CAAA,CACA,IAAI2vL,KAAAA,CAAMhyN,KAAK,CAAE,CACf,MAAMqiC,EAAAA,CAAKriC,KAAiBotO,YAAAA,KAAAA,CAAQptO,MAAMqiC,EAAE,CAAGriC,KAC/C,CAAA,GAAI,IAAI,CAACg7T,eAAe,CAAC34R,EAAE,GAAKA,EAAI,CAAA,OACpC,GAAI,IAAI,CAAC24R,eAAe,CAAChpG,KAAK,EAAI,IAAI,CAACgpG,eAAe,CAAChpG,KAAK,CAACpyK,QAAQ,CAAE,CACrE,IAAI,CAACsyQ,oBAAoB,GAC3B,CACA,IAAI,CAAC8I,eAAe,CAAC34R,EAAE,CAAGA,GAC1B,GAAI,IAAI,CAAC24R,eAAe,CAAChpG,KAAK,CAAE,CAC9B,IAAI,CAACipG,mBAAmB,GAC1B,CACF,CACA,IAAIjpG,KAAQ,EAAA,CACV,OAAO,IAAI,CAACgpG,eAAe,CAAC34R,EAC9B,CACA64R,WAAYlpG,CAAAA,KAAK,CAAE,CACjB,MAAM3vL,EAAK2vL,CAAAA,KAAAA,YAAiBob,KAAQpb,CAAAA,KAAAA,CAAM3vL,EAAE,CAAG2vL,KAC/C,CAAA,IAAI,CAACgpG,eAAe,CAAC34R,EAAE,CAAGA,GAC5B,CACA,IAAIs8F,QAAS3+H,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAAC4+H,SAAS,GAAK5+H,KAAAA,CAAO,CAC5B,MAAM2lR,SAAW,OAAO3lR,KAAAA,GAAU,QAClC,CAAA,GAAI,IAAI,CAAC4+H,SAAS,EAAI+mJ,QAAAA,EAAY,IAAI,CAAC/mJ,SAAS,CAACw8G,OAAO,KAAOp7O,KAAO,CAAA,CACpE,MACF,CACA,GAAI,IAAI,CAAC4+H,SAAS,CAAE,CAClB,IAAI,CAACu8L,mBAAmB,GAC1B,CACA,GAAIn7T,KAAAA,YAAiB49I,SAAW,CAAA,CAC9B,IAAI,CAAChf,SAAS,CAAG5+H,MACnB,MAAO,GAAI2lR,QAAAA,CAAU,CACnB,IAAI,CAAC/mJ,SAAS,CAAG,IAAI,CAACw1G,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAAC98P,KAAAA,CAAAA,EAAU,IAC9D,CAAA,GAAI,CAAC,IAAI,CAAC4+H,SAAS,CAAA,CACrB,MAAO,CACL,IAAI,CAACA,SAAS,CAAG,KACnB,CACA,GAAI,IAAI,CAACA,SAAS,CAAE,CAClB,IAAI,CAACw8L,mBAAmB,GAC1B,CACF,CACF,CACA,IAAIz8L,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvBg8L,sBAAuB,CACrB,MAAMh9L,aAAgB,CAAA,IAAI,CAAC+8L,cAAc,CACzC,GAAI/8L,aAAAA,CAAe,CACjB,IAAI,CAACV,gBAAgB,EAAA,CACrB,IAAI,CAACi+L,mBAAmB,EACxB,CAAA,IAAI,IAAI9iU,CAAI,CAAA,CAAA,CAAGA,CAAIulI,CAAAA,aAAAA,CAActlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3CulI,aAAa,CAACvlI,CAAE,CAAA,CAACmpC,OAAO,GAC1B,CACA,IAAI,CAACm5R,cAAc,CAACriU,MAAM,CAAG,EAC/B,CACF,CACA6kI,WAAc,EAAA,CACZ,MAAMH,MAAAA,CAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAM+kI,KAAAA,CAAQJ,OAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,CACjD,CAAA,GAAI+kI,MAAO,CACTA,KAAAA,CAAME,gBAAgB,CAAC,IAAI,CAACq9L,cAAc,EAC5C,CACF,CACF,CACAz9L,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAACy9L,cAAc,EAAI,IAAI,CAACA,cAAc,CAACriU,MAAM,CAAE,CACrD,MAAM0kI,MAAAA,CAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,IAAI,CAC1C,MAAM+kI,KAAQJ,CAAAA,MAAAA,CAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,CACjD,GAAI+kI,KAAAA,CAAO,CACTA,KAAMG,CAAAA,mBAAmB,CAAC,IAAI,CAACo9L,cAAc,EAC/C,CACF,CACF,CACF,CACA1M,aAAAA,EAAgB,CACd,IAAI,CAAC/wL,gBAAgB,GACvB,CACAgxL,aAAAA,EAAgB,CACd,GAAI,IAAI,CAACyM,cAAc,EAAI,IAAI,CAACzvT,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC9D,IAAI,CAACiyH,WAAW,GAClB,CACF,CACAouJ,QAAW,EAAA,CACT,IAAI,CAACqvC,oBAAoB,EACzB,CAAA,IAAI,CAAC5oG,KAAK,CAAG,IACb,CAAA,IAAI,CAACqgB,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC2oF,eAAe,CAAC34R,EAAE,CAAG,IAC1B,CAAA,IAAI,IAAIhqC,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACwiU,mBAAmB,CAACviU,MAAM,CAAED,IAAI,CACtD,IAAI,CAACwiU,mBAAmB,CAACxiU,CAAE,CAAA,CAACgqC,EAAE,CAAG,KACnC,CACA,IAAI,CAAC48F,MAAM,CAAC3/H,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC2uT,aAAa,CAAE,IAAI,CAAA,CAClD,IAAI,CAAChvL,MAAM,CAAC3/H,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC4uT,aAAa,CAAE,IAAI,EACpD,CACAvW,eAAAA,CAAgBC,OAAO,CAAEC,OAAO,CAAE,CAChC,IAAI,CAAC16K,WAAW,EAAA,CAChBy6K,QAAQt4S,GAAG,CAAC,KAAO,CAAA,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAAA,CAC1CF,QAAQt4S,GAAG,CAAC,QAAU,CAAA,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAAA,CAC/CF,QAAQn4S,EAAE,CAAC,KAAO,CAAA,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAAA,CACzCD,QAAQn4S,EAAE,CAAC,QAAU,CAAA,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,YAAa16K,CAAAA,KAAK,CAAE,CAClB,MAAMl/H,KAAQ,CAAA,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAM/6F,CAAAA,EAAE,EAC1C,GAAInkC,KAAAA,CAAQ,CAAG,CAAA,OACfk/H,MAAME,gBAAgB,CAAC,IAAI,CAACq9L,cAAc,EAC5C,CACA5iB,cAAe36K,CAAAA,KAAK,CAAE,CACpB,MAAMl/H,KAAQ,CAAA,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,MAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAAA,CAAQ,EAAG,OACfk/H,KAAAA,CAAMG,mBAAmB,CAAC,IAAI,CAACo9L,cAAc,EAC/C,CACA72N,UAAW,CACT,MAAMukI,GAAM,CAAA,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMtrG,KAAQsrG,CAAAA,GAAAA,CAAItrG,KAAK,CACvB,MAAMC,MAASD,CAAAA,KAAAA,CAAMC,MAAM,CAC3B,GAAI,IAAI,CAAC4B,SAAS,CAAE,CAClB,IAAI,CAACw8L,mBAAmB,GAC1B,CACA,IAAI,CAACnjB,iBAAiB,CAAGl7K,MAAMr9H,EAAE,CAAC,YAAc,CAAA,IAAI,CAACi4S,eAAe,CAAE,IAAI,CAAA,CAC1E,GAAI36K,MAAQ,CAAA,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,MAAAA,CAAOt9H,EAAE,CAAC,MAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,CAAGn7K,MAAOt9H,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,MAAMyW,QAAU,IAAI,CAACh8S,KAAK,GAAK,QAC/B,GAAI,IAAI,CAACmoT,cAAc,EAAI,IAAI,CAACA,cAAc,CAACriU,MAAM,CAAE,CACrD,IAAI,CAAC6kI,WAAW,GAClB,CAAA,KAAO,GAAIqxL,OAAAA,EAAW,IAAI,CAACx8F,KAAK,CAAE,CAChC,IAAI,CAACipG,mBAAmB,GAC1B,CACA,IAAI,IAAI5iU,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACwiU,mBAAmB,CAACviU,MAAM,CAAED,CAAI,EAAA,CAAA,CACtD,GAAI,IAAI,CAACwiU,mBAAmB,CAACxiU,CAAE,CAAA,CAAC25N,KAAK,CAAE,CACrC,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAAC,IAAI,CAACssF,mBAAmB,CAACxiU,CAAAA,CAAE,CAAC25N,KAAK,EAC/D,CACF,CACA,GAAI,IAAI,CAACshF,aAAa,EAAI,CAAG,CAAA,CAC3BjrE,IAAIyW,OAAO,EAAE12O,MAAO21H,CAAAA,UAAAA,CAAWS,MAAM,CAAE,IAAI,CAACV,YAAY,CAAE,IAAI,CAACmB,MAAM,EACvE,CACF,CACAl7B,SAAAA,EAAY,CACV,MAAMskI,IAAM,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMtrG,KAAQsrG,CAAAA,GAAAA,CAAItrG,KAAK,CACvB,MAAMC,MAASD,CAAAA,KAAAA,CAAMC,MAAM,CAC3B,IAAI,CAACi7K,iBAAiB,EAAE34S,GAAAA,EACxB,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,IACzB,CAAA,GAAI,IAAI,CAACr5K,SAAS,CAAE,CAClB,IAAI,CAACu8L,mBAAmB,GAC1B,CACA,GAAIn+L,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,KACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,GAAI,IAAI,CAAC7E,aAAa,EAAI,CAAG,CAAA,CAC3BjrE,IAAIyW,OAAO,EAAEp8O,MAAOq7H,CAAAA,UAAAA,CAAWS,MAAM,CAAE,IAAI,CAACV,YAAY,CAAE,IAAI,CAACmB,MAAM,EACvE,CACA,IAAI,CAAC/B,gBAAgB,GACvB,CACAuxL,IAAO,EAAA,CACL,GAAI,IAAI,CAACkM,cAAc,CAAE,CACvB,IAAI,IAAItiU,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACsiU,cAAc,CAACriU,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,IAAI,CAACsiU,cAAc,CAACtiU,CAAAA,CAAE,CAACkzI,OAAO,CAAG,MACnC,CACF,CACF,CACAmjL,MAAO,CACL,GAAI,IAAI,CAACiM,cAAc,CAAE,CACvB,IAAI,IAAItiU,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACsiU,cAAc,CAACriU,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,IAAI,CAACsiU,cAAc,CAACtiU,EAAE,CAACkzI,OAAO,CAAG,KACnC,CACF,CACF,CACA0vL,mBAAsB,EAAA,CACpB,GAAI,CAAC,IAAI,CAACD,eAAe,CAAChpG,KAAK,CAAE,OACjC,GAAI,IAAI,CAACgpG,eAAe,CAAChpG,KAAK,CAACpyK,QAAQ,CAAE,CACvC,IAAI,CAACoyQ,kBAAkB,GACzB,CAAO,KAAA,GAAI,IAAI,CAAC9mT,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC9C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAAC,IAAI,CAACysF,eAAe,CAAChpG,KAAK,EACxD,CACF,CACAggG,oBAAqB,CACnB,IAAI,CAAC4I,oBAAoB,GACzB,GAAI,IAAI,CAACI,eAAe,CAAChpG,KAAK,CAAE,CAC9B,MAAM3tH,OAAS,IAAI,CAAC22N,eAAe,CAAChpG,KAAK,CAACpyK,QAAQ,CAClD,IAAI,CAAC8+O,aAAa,EAAEp/R,GAAAA,EACpB,CAAA,IAAI,CAACo/R,aAAa,CAAGr6L,OAAO3kG,EAAE,CAAC,YAAc,CAAA,IAAI,CAAC27T,YAAY,CAAE,IAAI,CAAA,CACpE,GAAIh3N,MAAOyyG,CAAAA,MAAM,CAAE,CACjB,IAAI,CAACukH,YAAY,CAACh3N,MAAAA,CAAOyyG,MAAM,EACjC,CACF,CACF,CACAukH,aAAavkH,MAAM,CAAE,CACnB,IAAI,CAACwkH,YAAY,CAACxkH,MACpB,EAAA,CACAqkH,qBAAsB,CACpB,IAAI,IAAI9iU,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACsiU,cAAc,CAACriU,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,MAAM4kI,YAAe,CAAA,IAAI,CAAC09L,cAAc,CAACtiU,CAAE,CAAA,CAC3C2gU,iBAAkBQ,CAAAA,wBAAwB,CAACv8L,YAAaqL,CAAAA,YAAY,CACpErL,CAAAA,aAAaqL,YAAY,CAAG,KAC9B,CACF,CACA8yL,mBAAsB,EAAA,CACpB,GAAI,IAAI,CAACT,cAAc,CAACriU,MAAM,EAAI,IAAI,CAACsmI,SAAS,YAAYgf,SAAAA,CAAW,CACrE,IAAI,IAAIvlJ,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACsiU,cAAc,CAACriU,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,MAAM4kI,YAAe,CAAA,IAAI,CAAC09L,cAAc,CAACtiU,CAAE,CAAA,CAC3C,MAAM0pI,IAAAA,CAAO9E,aAAa8E,IAAI,CAC9B,GAAIA,IAAAA,CAAK7C,IAAI,EAAI,CAACjC,YAAaqL,CAAAA,YAAY,CAAE,CAC3CrL,YAAAA,CAAaqL,YAAY,CAAG0wL,kBAAkBC,wBAAwB,CAACl3L,IAAK7C,CAAAA,IAAI,CAAE,IAAI,CAACN,SAAS,CAAE,IAAI,CAACK,MAAM,EAC/G,CACF,CACF,CACF,CACAq8L,YAAaxkH,CAAAA,MAAM,CAAE,CACnB,GAAIA,MAAUA,EAAAA,MAAAA,CAAOx+M,MAAM,CAAE,CAC3B,MAAMslI,aAAAA,CAAgB,EAAE,CACxB,IAAI,IAAIvlI,CAAAA,CAAI,EAAGA,CAAIy+M,CAAAA,MAAAA,CAAOx+M,MAAM,CAAED,IAAI,CACpC,MAAM0pI,IAAO+0E,CAAAA,MAAM,CAACz+M,CAAE,CAAA,CACtB,MAAM6iI,QAAAA,CAAW,IAAI,CAAC2/L,mBAAmB,CAACxiU,CAAAA,CAAE,EAAI,IAAI,CAACwiU,mBAAmB,CAACxiU,EAAE,CAAC25N,KAAK,EAAI,IAAI,CAAC6oG,mBAAmB,CAACxiU,CAAE,CAAA,CAAC25N,KAAK,CAACpyK,QAAQ,CAC/H,MAAMkpH,SAAW,IAAInhC,YAAAA,CAAa5F,IAAM7G,CAAAA,QAAAA,EAAY,IAAI,CAACk5G,MAAM,CAACngF,eAAe,CAAE,IAAI,CAACh1B,MAAM,CAAA,CAC5FrB,cAAczkI,IAAI,CAAC2vK,QACnB,CAAA,CAAA,GAAI/mC,KAAKc,KAAK,CAAE,CACdimC,QAAAA,CAASx+B,aAAa,CAAG,IAAI44C,aAAcnhD,CAAAA,IAAAA,CAAKc,KAAK,EACvD,CACF,CACA,IAAI,CAACjF,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACw9L,mBAAmB,GAC1B,CACF,CACAnJ,sBAAuB,CACrB,GAAI,IAAI,CAACz/S,KAAK,GAAK,OAAA,CAAS,CAC1B,IAAI,CAACooT,oBAAoB,GAC3B,CACF,CACA1I,oBAAuB,EAAA,CACrB,IAAI,CAACxzB,aAAa,EAAEp/R,GAAAA,EACpB,CAAA,IAAI,CAACo/R,aAAa,CAAG,IACrB,CAAA,IAAI,CAACuzB,oBAAoB,GAC3B,CACA90B,gBAAAA,CAAiBj/R,KAAK,CAAEu7O,SAAS,CAAEznB,KAAK,CAAE,CACxC,GAAIA,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAACs9O,eAAe,CAACh/R,KAAOu7O,CAAAA,SAAAA,CAAWznB,KACzC,EAAA,CAAA,KAAO,CACL,GAAI,IAAI,CAAC9mN,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAC9B,EAAA,CACF,CACF,CACAupG,mBAAAA,CAAoBr9T,KAAK,CAAEg9H,QAAQ,CAAE,CACnC,GAAIh9H,KAAAA,GAAU,EAAG,CACf,IAAI,CAACg9H,QAAQ,CAAGA,SAClB,CACF,CACAgiK,eAAAA,CAAgBh/R,KAAK,CAAEu7O,SAAS,CAAEznB,KAAK,CAAE,CACvC,GAAI,IAAI,CAAC2oG,cAAc,CAACz8T,KAAAA,CAAM,CAAE,CAC9B,IAAI,CAACy8T,cAAc,CAACz8T,KAAAA,CAAM,CAACg9H,QAAQ,CAAG82F,KAAMpyK,CAAAA,SAAQ,CAEtD,IAAI,CAAC27Q,mBAAmB,CAACr9T,KAAO8zN,CAAAA,KAAAA,CAAMpyK,QAAQ,EAChD,CACA09O,iBAAkBp/R,CAAAA,KAAK,CAAEu7O,SAAS,CAAEznB,KAAK,CAAE,CACzC,GAAI,IAAI,CAAC2oG,cAAc,CAACz8T,KAAAA,CAAM,CAAE,CAC9B,IAAI,CAACy8T,cAAc,CAACz8T,KAAM,CAAA,CAACg9H,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBAAe,CAEnE,IAAI,CAACsnK,mBAAmB,CAACr9T,KAAO,CAAA,IAAI,CAACk2O,MAAM,CAACngF,eAAe,EAC7D,CACA8mK,kBAAkB78T,KAAK,CAAEu7O,SAAS,CAAEznB,KAAK,CAAE,CACzC,GAAI,IAAI,CAAC2oG,cAAc,CAACz8T,KAAM,CAAA,CAAE,CAC9B,IAAI,CAACy8T,cAAc,CAACz8T,MAAM,CAACg9H,QAAQ,CAAG,IAAI,CAACk5G,MAAM,CAACngF,gBACpD,CACA,IAAI,CAACsnK,mBAAmB,CAACr9T,MAAO,IAAI,CAACk2O,MAAM,CAACngF,eAAe,EAC7D,CACAgoF,0CAA2Cu/E,CAAAA,SAAS,CAAEz/E,gBAAgB,CAAE,CACtE,GAAIy/E,UAAU78L,QAAQ,CAAE,CACtB,IAAI,CAACA,QAAQ,CAAGo9G,gBAAgB,CAACy/E,UAAU78L,QAAQ,CAACy8G,OAAO,EAAA,EAAG,CAElE,CAvgBAh7O,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,MAAS,CAAA,CAAA,IAAI,CAACzsH,KAAK,CAAG,OAAS,CAAA,IAAI,CAACyrK,YAAY,CAAG,IAAM,CAAA,IAAI,CAACqvI,eAAe,CAAG,IAAM,CAAA,IAAI,CAACK,oBAAoB,CAAG,IAAM,CAAA,IAAI,CAACJ,YAAY,CAAG,KAAO,CAAA,IAAI,CAACK,uBAAuB,CAAG,CAAG,CAAA,IAAI,CAAClsI,QAAQ,CAAG,KAAO,CAAA,IAAI,CAAC4xH,aAAa,CAAG,CAAC,CAAA,CAAG,IAAI,CAACn6J,OAAO,CAAG,CAChQ3rB,cACD,CAAE,IAAI,CAACua,YAAY,CAAG5W,iBAAmB,CAAA,IAAI,CAACwpM,cAAc,CAAG,EAAE,CAAE,IAAI,CAACvyL,WAAW,CAAG,IAAA,CAAM,IAAI,CAACo6H,KAAK,CAAG,IAAA,CAAM,IAAI,CAACq4D,mBAAmB,CAAG,EAAE,CAAE,IAAI,CAACj8L,SAAS,CAAG,IAAA,CAAM,IAAI,CAACq5K,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAACC,cAAc,CAAG,IAAA,CAAM,IAAI,CAACC,gBAAgB,CAAG,IAAA,CAAM,IAAI,CAACzZ,aAAa,CAAG,IACpR,CAAA,IAAI,CAACs8B,eAAe,CAAG,IAAItB,cAAe,CAAA,OAAA,CAAS,IAAI,CAAEtlF,OAAO/L,GAAG,CAAC+H,MAAM,CAAE,CAC1EznO,GAAK,CAAA,IAAI,CAACsyT,mBAAmB,CAC7B1sF,IAAM,CAAA,IAAI,CAACyjF,kBAAkB,CAC7BtvT,MAAQ,CAAA,IAAI,CAACwvT,oBAAoB,CACjC/iF,MAAQ,CAAA,IAAI,CAAC8iF,oBAAoB,CAChC,CAAA,IAAI,CACP,CAAA,IAAI,CAAC3oL,SAAS,CAAG8qG,MAAAA,CAAOngF,eAAe,CACvCh1B,MAAAA,CAAOv/H,EAAE,CAAC,SAAU,IAAI,CAACuuT,aAAa,CAAE,IAAI,CAC5ChvL,CAAAA,MAAAA,CAAOv/H,EAAE,CAAC,kBAAmB,IAAI,CAACuuT,aAAa,CAAE,IAAI,CACrDhvL,CAAAA,MAAAA,CAAOv/H,EAAE,CAAC,SAAU,IAAI,CAACwuT,aAAa,CAAE,IAAI,CAC5CjvL,CAAAA,MAAAA,CAAOv/H,EAAE,CAAC,kBAAmB,IAAI,CAACwuT,aAAa,CAAE,IAAI,EACvD,CAyfF,CAEA,MAAMuN,oBACJr7T,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMwwT,SAAY,CAAA,CAChB,SACD,CAAA,CACD,MAAMC,aAAgB,CAAA,CACpB,UACA,CAAA,eAAA,CACA,QACA,gBACA,CAAA,aAAA,CACA,gBACA,CAAA,qBAAA,CACA,cACA,wBACA,CAAA,aAAA,CACA,MACA,CAAA,QAAA,CACA,WACA,cACA,CAAA,UAAA,CACD,CACD,MAAMC,8BAA8Bp1D,eAUlCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEzL,KAAK,CAAExxF,UAAU,CAAE,CACpD,GAAIwxF,KAAAA,CAAMlwG,YAAY,GAAK,MAAQkwG,KAAMlwG,CAAAA,YAAY,GAAK39H,SAAAA,CAAW,CACnE6tO,KAAMlwG,CAAAA,YAAY,CAAG,CAAC,EACxB,CACA,GAAIkwG,KAAMhxG,CAAAA,MAAM,EAAIgxG,KAAMhxG,CAAAA,MAAM,CAAC1kI,MAAM,CAAE,CACvC01O,KAAAA,CAAMhxG,MAAM,CAAGgxG,MAAMhxG,MAAM,CAAC9jI,KAAK,CAAC,GACpC,CACA,IAAI,IAAIb,CAAAA,CAAI,EAAGA,CAAIsjU,CAAAA,aAAAA,CAAcrjU,MAAM,CAAED,IAAI,CAC3C,GAAI21O,KAAMtpO,CAAAA,cAAc,CAACi3T,aAAa,CAACtjU,CAAE,CAAA,CAAA,CAAG,CAC1CohP,SAAS,CAACkiF,aAAa,CAACtjU,EAAE,CAAC,CAAG21O,KAAK,CAAC2tF,aAAa,CAACtjU,CAAAA,CAAE,EACtD,CACF,CACA,GAAI21O,KAAMshF,CAAAA,UAAU,EAAIthF,KAAMuhF,CAAAA,eAAe,CAAE,CAC7C91E,UAAUwzE,UAAU,CAAG,IAAI3pS,WAAAA,CAAY,IAAIhP,IAAK05N,CAAAA,KAAAA,CAAMshF,UAAU,CAAA,CAAG,IAAIh7S,IAAK05N,CAAAA,KAAAA,CAAMuhF,eAAe,CAAA,EACnG,CACA,KAAK,CAAC3oD,uBAAwBntB,CAAAA,SAAAA,CAAWzL,MAAO0tF,SAClD,EAAA,CACAv/E,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAM0E,KAAO,EAAC,CACd,IAAI,IAAIha,EAAI,CAAGA,CAAAA,CAAAA,CAAIsjU,aAAcrjU,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC3Cga,IAAI,CAACspT,aAAa,CAACtjU,CAAAA,CAAE,CAAC,CAAG4mI,OAAO56B,MAAM,CAACs3N,aAAa,CAACtjU,EAAE,EACzD,CACAga,IAAAA,CAAKnH,OAAO,CAAG+zH,MAAAA,CAAO56B,MAAM,CAACn5F,OAAO,CACpC,OAAOmH,IAAKurH,CAAAA,aAAa,CACzB,MAAM67G,SAAAA,CAAY,IAAI,CAACoB,YAAY,CAACltO,KAAAA,CAAO0E,IAC3C,CAAA,CAAA,MAAMwpT,gBAAmB58L,CAAAA,MAAAA,CAAO56B,MAAM,CAACu5B,aAAa,CACpD,MAAMk5E,MAAS+kH,CAAAA,gBAAAA,CAAiB38T,GAAG,CAAEkvI,EAAKA,EAAAA,EAAAA,CAAGrM,IAAI,CACjD03G,CAAAA,SAAAA,CAAU4hF,YAAY,CAACvkH,QACvB,IAAI,IAAI3jM,CAAI,CAAA,CAAA,CAAGA,EAAI0oT,gBAAiBvjU,CAAAA,MAAM,CAAE6a,CAAAA,EAAAA,CAAI,CAC9CsmO,SAAU77G,CAAAA,aAAa,CAACzqH,CAAAA,CAAE,CAAC+nH,QAAQ,CAAG2gM,gBAAgB,CAAC1oT,EAAE,CAAC+nH,SAAQ,CAEpE,GAAI+D,MAAO56B,CAAAA,MAAM,CAAC4oN,UAAU,CAAE,CAC5BxzE,SAAAA,CAAUwzE,UAAU,CAAGhuL,OAAO56B,MAAM,CAAC4oN,UAAU,CAACt/S,KAAK,GACvD,CACA,OAAO8rO,SACT,CACA8xC,QAAStsJ,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAC1BA,SAAAA,CAAU8xC,QAAQ,GACpB,CA/CAnrR,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAGi0D,eACrB,CAAA,IAAI,CAAC/zD,QAAQ,CAAG80D,mBAChB,CAAA,IAAI,CAAC1iF,MAAM,CAAG2iF,SACd,CAAA,IAAI,CAACznK,eAAe,CAAGttB,kBAAAA,CAAmB0hG,GAAIpmM,CAAAA,cAAc,EAC5D,IAAI,CAACviC,EAAE,CAAC,eAAgB,IAAI,CAAC6rR,QAAQ,CAAE,IAAI,EAC7C,CAwCF,CACAvlB,SAAAA,CAAUC,eAAe,CAACy0D,eAAAA,CAAgBhwM,SAAS,CAAEgxM,UAErD,CAAMI,MAAAA,UAAAA,CAOJC,OAAQx+T,CAAAA,IAAI,CAAE,CACZ,GAAIA,IAAO,CAAA,IAAI,CAACy+T,KAAK,CAAC1jU,MAAM,CAAE,CAC5B,IAAI,IAAID,CAAI,CAAA,IAAI,CAAC2jU,KAAK,CAAC1jU,MAAM,CAAED,CAAIkF,CAAAA,IAAAA,CAAMlF,CAAI,EAAA,CAAA,CAC3C,IAAI,CAAC2jU,KAAK,CAAC3jU,CAAAA,CAAE,CAAG,IAAI,IAAI,CAAC4jU,aAAY,CAEzC,CACF,CACAl6Q,QAAAA,EAAW,CACT,GAAI,IAAI,CAACugD,MAAM,EAAI,IAAI,CAAC05N,KAAK,CAAC1jU,MAAM,CAAE,CACpC,IAAI,CAACyjU,OAAO,CAAC,IAAI,CAACC,KAAK,CAAC1jU,MAAM,CAAG,CACnC,EAAA,CACA,OAAO,IAAI,CAAC0jU,KAAK,CAAC,IAAI,CAAC15N,MAAM,EAAG,CAClC,CACA45N,OAAU,EAAA,CACR,IAAI,CAAC55N,MAAM,CAAG,EAChB,CArBAliG,WAAAA,CAAYsyN,eAAe,CAAEn1N,IAAI,CAAC,CAChC,IAAI,CAACy+T,KAAK,CAAG,EAAE,CACf,IAAI,CAAC15N,MAAM,CAAG,CACd,CAAA,IAAI,CAAC25N,YAAY,CAAGvpG,eACpB,CAAA,IAAI,CAACqpG,OAAO,CAACx+T,IACf,EAAA,CAiBF,CAEA,IAAI4+T,cAAAA,CACJ,IAAIC,SAAAA,CAAWC,UAAWC,SAC1B,CAAA,MAAMC,MAAS,CAAA,IAAIr8S,KACnB,MAAMs8S,MAAAA,CAAS,IAAIt8S,IAAAA,CACnB,MAAMu8S,KAAQ,CAAA,IAAInoT,IAClB,CAAA,MAAMooT,2BAA2B12D,SAmB/B,CAAA,OAAOrK,eAAkB,EAAA,CACvB,GAAI,OAAOhd,IAAAA,GAAS,WAAa,CAAA,CAC/Bw9E,eAAiB,IAAIx9E,IAAAA,CAAK60C,WAAW,CACrC4oC,UAAY,IAAIz9E,IAAAA,CAAK20C,SAAS,CAC9B+oC,UAAY,IAAI19E,IAAAA,CAAK20C,SAAS,CAC9BgpC,UAAY,IAAI39E,IAAAA,CAAK40C,aACvB,CACF,CACA,OAAOopC,YAAe,EAAA,CACpBh+E,KAAKn9M,OAAO,CAAC26R,cACbx9E,CAAAA,CAAAA,IAAAA,CAAKn9M,OAAO,CAAC46R,SAAAA,CAAAA,CACbz9E,IAAKn9M,CAAAA,OAAO,CAAC66R,SAAAA,CAAAA,CACb19E,IAAKn9M,CAAAA,OAAO,CAAC86R,SACbH,CAAAA,CAAAA,cAAAA,CAAiB,IACjBC,CAAAA,SAAAA,CAAY,KACZC,SAAY,CAAA,IAAA,CACZC,SAAY,CAAA,KACd,CACA,IAAIM,cAAAA,CAAeC,OAAO,CAAE,CAC1B,GAAI,IAAI,CAACC,eAAe,GAAKD,OAAS,CAAA,CACpC,IAAI,CAACC,eAAe,CAAGD,OAAAA,CACvB,GAAI,IAAI,CAACE,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACtqC,UAAU,CAAC,IAAI,CAACuqC,cAAc,CAAEH,OAAAA,EAC7C,CACF,CACF,CACA,IAAID,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACE,eAAe,CAE7B,IAAIG,aAAcpxM,CAAAA,MAAM,CAAE,CACxB,GAAI,CAAC,IAAI,CAACqxM,cAAc,CAACpvT,MAAM,CAAC+9G,QAAS,CACvC,IAAI,CAACqxM,cAAc,CAAC9lU,IAAI,CAACy0H,MACzB,CAAA,CAAA,GAAI,IAAI,CAACkxM,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,gBAAkB,CAAA,CACjDssC,UAAUpsR,QAAQ,CAAC67E,MAAOn/G,CAAAA,CAAC,CAAEm/G,MAAOz3G,CAAAA,CAAC,CAAEy3G,MAAAA,CAAOt3G,CAAC,CAC/C,CAAA,IAAI,CAACwoT,KAAK,CAACpqC,gBAAgB,CAACypC,SAC9B,EAAA,CACF,CACF,CACA,IAAIa,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIC,eAAAA,CAAgBjyM,QAAQ,CAAE,CAC5B,GAAI,IAAI,CAAC6xM,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,iBAAkB,CACjD,IAAI,CAACitC,KAAK,CAAC9wK,QAAQ,EAAA,CACnBmwK,SAAUpsR,CAAAA,QAAQ,CAACk7E,QAASx+G,CAAAA,CAAC,CAAEw+G,QAAAA,CAAS92G,CAAC,CAAE82G,QAAAA,CAAS32G,CAAC,CAAA,CACrD,IAAI,CAACwoT,KAAK,CAACK,kBAAkB,CAAChB,SAAAA,CAAAA,CAC9B,IAAI,CAACiB,gBAAgB,CAACjmU,IAAI,CAAC8zH,QAAAA,EAC7B,CACF,CACA,IAAIiyM,eAAkB,EAAA,CACpB,GAAI,IAAI,CAACJ,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,gBAAAA,CAAkB,CACjD,MAAM5kK,QAAAA,CAAW,IAAI,CAAC6xM,KAAK,CAACO,kBAAkB,EAC9C,CAAA,IAAI,CAACD,gBAAgB,CAACz8T,GAAG,CAACsqH,SAASx+G,CAAC,EAAA,CAAIw+G,QAAS92G,CAAAA,CAAC,GAAI82G,QAAS32G,CAAAA,CAAC,EAClE,EAAA,CACA,OAAO,IAAI,CAAC8oT,gBACd,CACA,IAAI75T,IAAAA,CAAKA,IAAI,CAAE,CACb,GAAI,IAAI,CAACu5T,KAAK,GAAKv5T,IAAM,CAAA,CACvB,IAAI,CAACu5T,KAAK,CAAGv5T,IAAAA,CACb,GAAIA,IAAAA,EAAQ,IAAI,CAAC+5T,kBAAkB,CAAE,CACnC/5T,IAAKyoJ,CAAAA,QAAQ,GACf,CACF,CACF,CACA,IAAIzoJ,IAAO,EAAA,CACT,OAAO,IAAI,CAACu5T,KACd,CACA,IAAIS,QAAAA,CAASA,QAAQ,CAAE,CACrB,GAAI,IAAI,CAACC,SAAS,GAAKD,QAAU,CAAA,CAC/B,IAAI,CAACC,SAAS,CAAGD,QAAAA,CACjB,GAAI,IAAI,CAACT,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACvqC,WAAW,CAACgrC,UACzB,CACF,CACF,CACA,IAAIA,UAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAI9uL,KAAAA,CAAMA,KAAK,CAAE,CACf,GAAI,IAAI,CAACqpK,MAAM,GAAKrpK,KAAO,CAAA,CACzB,IAAI,CAACqpK,MAAM,CAAGrpK,KAAAA,CACd,GAAI,IAAI,CAACzjI,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACmkR,iBAAiB,EACtB,CAAA,IAAI,CAACH,gBAAgB,GACvB,CACF,CACF,CACA,IAAIvgJ,OAAQ,CACV,OAAO,IAAI,CAACqpK,MAAM,CAEpB,IAAI0lB,aAAAA,CAAcb,OAAO,CAAE,CACzB,GAAI,IAAI,CAACG,cAAc,GAAKH,OAAS,CAAA,CACnC,IAAI,CAACG,cAAc,CAAGH,OAAAA,CACtB,GAAI,IAAI,CAACE,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACtqC,UAAU,CAACoqC,OAAAA,CAAS,IAAI,CAACC,eAAe,EACrD,CACF,CACF,CACA,IAAIY,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACV,cACd,CACA,IAAIW,aAAa9xM,MAAM,CAAE,CACvB,GAAI,CAAC,IAAI,CAAC+xM,aAAa,CAAC9vT,MAAM,CAAC+9G,MAAAA,CAAAA,CAAS,CACtC,IAAI,CAAC+xM,aAAa,CAACxmU,IAAI,CAACy0H,QACxB,GAAI,IAAI,CAACkxM,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,iBAAkB,CACjDssC,SAAAA,CAAUpsR,QAAQ,CAAC67E,OAAOn/G,CAAC,CAAEm/G,MAAOz3G,CAAAA,CAAC,CAAEy3G,MAAOt3G,CAAAA,CAAC,CAC/C,CAAA,IAAI,CAACwoT,KAAK,CAACrqC,eAAe,CAAC0pC,WAC7B,CACF,CACF,CACA,IAAIuB,cAAe,CACjB,OAAO,IAAI,CAACC,aAAa,CAE3B,IAAIC,cAAAA,CAAe3yM,QAAQ,CAAE,CAC3B,GAAI,IAAI,CAAC6xM,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,gBAAAA,CAAkB,CACjD,IAAI,CAACitC,KAAK,CAAC9wK,QAAQ,GACnBmwK,SAAUpsR,CAAAA,QAAQ,CAACk7E,QAAAA,CAASx+G,CAAC,CAAEw+G,QAAAA,CAAS92G,CAAC,CAAE82G,SAAS32G,CAAC,CAAA,CACrD,IAAI,CAACwoT,KAAK,CAACe,iBAAiB,CAAC1B,SAAAA,CAAAA,CAC7B,IAAI,CAAC2B,eAAe,CAAC3mU,IAAI,CAAC8zH,QAC5B,EAAA,CACF,CACA,IAAI2yM,gBAAiB,CACnB,GAAI,IAAI,CAACd,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,gBAAkB,CAAA,CACjD,MAAM5kK,QAAAA,CAAW,IAAI,CAAC6xM,KAAK,CAACiB,iBAAiB,GAC7C,IAAI,CAACD,eAAe,CAACn9T,GAAG,CAACsqH,QAAAA,CAASx+G,CAAC,EAAA,CAAIw+G,SAAS92G,CAAC,EAAA,CAAI82G,QAAS32G,CAAAA,CAAC,IACjE,CACA,OAAO,IAAI,CAACwpT,eAAe,CAE7B,IAAI9xR,IAAAA,CAAKA,IAAI,CAAE,CACb,GAAI,IAAI,CAACyxI,KAAK,GAAKzxI,IAAAA,CAAM,CACvB,IAAI,CAACyxI,KAAK,CAAGzxI,KACb,GAAI,IAAI,CAAC/gC,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACmkR,iBAAiB,EACtB,CAAA,IAAI,CAACH,gBAAgB,GACvB,CACF,CACF,CACA,IAAIjjP,MAAO,CACT,OAAO,IAAI,CAACyxI,KAAK,CAEnB,IAAIw0G,IAAAA,CAAKA,IAAI,CAAE,CACb,GAAI,IAAI,CAAC+rC,KAAK,GAAK/rC,IAAM,CAAA,CACvB,IAAI,CAAC+rC,KAAK,CAAG/rC,IAAAA,CACb,GAAI,IAAI,CAAC6qC,KAAK,EAAI,IAAI,CAACvqT,KAAK,GAAKs9Q,gBAAAA,CAAkB,CACjD,MAAM5kR,OAAAA,CAAU,IAAI,CAACA,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CACnD,GAAIA,QAAS,CACX,IAAI,CAACmkR,iBAAiB,GACxB,CACA,IAAI,CAAC0tC,KAAK,CAACmB,iBAAiB,EAAA,CAAGC,qBAAqB,CAACjsC,KAAMkqC,SAC3D,CAAA,CAAA,IAAI,CAACW,KAAK,CAACqB,YAAY,CAAClsC,IAAMkqC,CAAAA,SAAAA,CAAAA,CAC9B,IAAI,CAACW,KAAK,CAACsB,mBAAmB,GAC9B,GAAInzT,OAAAA,CAAS,CACX,IAAI,CAACgkR,gBAAgB,GACvB,CACF,CACF,CACF,CACA,IAAIgD,IAAO,EAAA,CACT,OAAO,IAAI,CAAC+rC,KACd,CACA,IAAIK,WAAAA,CAAYA,WAAW,CAAE,CAC3B,GAAI,IAAI,CAACC,YAAY,GAAKD,WAAa,CAAA,CACrC,IAAI,CAACC,YAAY,CAAGD,WAAAA,CACpB,GAAI,IAAI,CAACvB,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACxqC,cAAc,CAAC+rC,aAC5B,CACF,CACF,CACA,IAAIA,aAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,eAAAA,CAAgBhB,QAAQ,CAAE,CAC5B,GAAI,IAAI,CAACiB,gBAAgB,GAAKjB,QAAU,CAAA,CACtC,IAAI,CAACiB,gBAAgB,CAAGjB,QAAAA,CACxB,GAAI,IAAI,CAACT,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAC2B,kBAAkB,CAAClB,QAAAA,EAChC,CACF,CACF,CACA,IAAIgB,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACC,gBAAgB,CAE9B,IAAI3uT,IAAKA,CAAAA,IAAI,CAAE,CACb,GAAI,IAAI,CAAC0C,KAAK,GAAK1C,KAAM,CACvB,IAAI,CAAC0C,KAAK,CAAG1C,IAAAA,CACb,IAAI,CAACu/Q,iBAAiB,EACtB,CAAA,OAAOv/Q,IACL,EAAA,KAAKggR,iBACH,IAAI,CAACkoB,MAAM,CAAGtnB,iBACd,CAAA,IAAI,CAAChzG,KAAK,CAAGg0G,YACb,CAAA,MACG3B,KAAAA,kBAAAA,CACH,IAAI,CAACioB,MAAM,CAAGpnB,mBACd,CAAA,IAAI,CAAClzG,KAAK,CAAGg0G,aACb,MACF,KAAK7B,eACL,CAAA,QACE,IAAI,CAACmoB,MAAM,CAAGrnB,gBACd,CAAA,IAAI,CAACjzG,KAAK,CAAGk0G,oBACb,KACJ,CACA,IAAI,CAACU,UAAU,GACjB,CACF,CACA,IAAIxiR,MAAO,CACT,OAAO,IAAI,CAAC0C,KAAK,CAEnB8/Q,UAAa,EAAA,CACX,MAAMrzJ,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,IAAIsnB,KAAAA,CACJ,GAAItnB,MAAAA,CAAO0vJ,SAAS,CAAE,CACpBpoI,KAAQtnB,CAAAA,MAAAA,CAAO0vJ,SAAS,CAACpoI,KAAK,CAC9B,GAAItnB,OAAOokJ,OAAO,CAAE,CAClBpkJ,MAAAA,CAAOokJ,OAAO,CAAC7hP,OAAO,EACtB,CAAA,OAAOy9F,OAAOokJ,QAChB,CACF,CACA,GAAI98H,KAAO,CAAA,CACT,GAAI,IAAI,CAACw2K,KAAK,CAAE,CACd,IAAI,CAAC3oF,MAAM,CAACi/C,UAAU,CAAC,IAAI,CAAC0pC,KAAK,CACjC,CAAA,IAAI,CAAC3oF,MAAM,CAAC0+C,WAAW,CAAC,IAAI,CAACiqC,KAAK,CAClC,CAAA,IAAI,CAACA,KAAK,CAAG,KACf,CACA,MAAM7qC,IAAAA,CAAO,IAAI,CAAC1/Q,KAAK,GAAKs9Q,gBAAAA,CAAmB,IAAI,CAACmuC,KAAK,CAAG,CAAA,CAC5D,IAAI,CAAClrC,mBAAmB,CAACopC,cAAAA,CAAAA,CACzB,MAAM34T,IAAAA,CAAO,IAAI,CAAC4wO,MAAM,CAACk+C,UAAU,CAACJ,IAAAA,CAAM3rI,KAAO41K,CAAAA,cAAAA,CAAAA,CACjD34T,KAAK+uR,cAAc,CAAC,IAAI,CAACgsC,YAAY,CACrC/6T,CAAAA,IAAAA,CAAKgvR,WAAW,CAAC,IAAI,CAACirC,SAAS,CAC/Bj6T,CAAAA,IAAAA,CAAKk7T,kBAAkB,CAAC,IAAI,CAACD,gBAAgB,EAC7Cj7T,IAAKivR,CAAAA,UAAU,CAAC,IAAI,CAACuqC,cAAc,CAAE,IAAI,CAACF,eAAe,CACzD,CAAA,GAAI,IAAI,CAACtqT,KAAK,GAAKs9Q,gBAAAA,CAAkB,CACnC,MAAM6tC,aAAe,IAAI,CAACC,aAAa,CACvCxB,UAAUpsR,QAAQ,CAAC2tR,YAAajxT,CAAAA,CAAC,CAAEixT,YAAavpT,CAAAA,CAAC,CAAEupT,YAAAA,CAAappT,CAAC,CACjE/Q,CAAAA,IAAAA,CAAKkvR,eAAe,CAAC0pC,WACrB,MAAMa,aAAAA,CAAgB,IAAI,CAACC,cAAc,CACzCd,SAAAA,CAAUpsR,QAAQ,CAACitR,cAAcvwT,CAAC,CAAEuwT,aAAc7oT,CAAAA,CAAC,CAAE6oT,aAAc1oT,CAAAA,CAAC,CACpE/Q,CAAAA,IAAAA,CAAKmvR,gBAAgB,CAACypC,SAAAA,EACxB,CAAO,KAAA,GAAI,IAAI,CAAC5pT,KAAK,GAAKu9Q,kBAAAA,CAAoB,CAC5CvsR,IAAKovR,CAAAA,iBAAiB,CAACpvR,IAAAA,CAAKqvR,iBAAiB,EAAK5C,CAAAA,yBAAAA,CAAAA,CAClDzsR,IAAKm7T,CAAAA,kBAAkB,CAACruC,8BAC1B,EAAA,CACA9sR,IAAKy7H,CAAAA,MAAM,CAAGA,MACd,CAAA,IAAI,CAACz7H,IAAI,CAAGA,IAAAA,CACZ,GAAI,IAAI,CAAC0H,OAAO,EAAI+zH,MAAO/zH,CAAAA,OAAO,CAAE,CAClC,IAAI,CAACgkR,gBAAgB,GACvB,CACF,CACF,CACA0vC,QAAAA,EAAW,CACT,OAAO,IAAI,CAAC7B,KAAK,CAAG,IAAI,CAACA,KAAK,CAAC6B,QAAQ,EAAK,CAAA,KAC9C,CACA3yK,QAAAA,EAAW,CACT,GAAI,IAAI,CAAC8wK,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAC9wK,QAAQ,GACrB,CACF,CACAijI,gBAAmB,EAAA,CACjB,MAAMjwJ,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,GAAIA,OAAO0vJ,SAAS,EAAI1vJ,MAAO0vJ,CAAAA,SAAS,CAACzjR,OAAO,EAAI,CAAC,IAAI,CAACqyT,kBAAkB,CAAE,CAC5E,MAAM/5T,KAAO,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,IAAM,CAAA,CACR,IAAI,CAAC4wO,MAAM,CAAC++C,OAAO,CAAC3vR,IAAAA,CAAM,IAAI,CAACw0S,MAAM,CAAE,IAAI,CAACt6H,KAAK,CAAA,CACjD,OAAO,IAAI,CAAClrK,KAAK,EACf,KAAKs9Q,gBAAAA,CACH,IAAI,CAAC17C,MAAM,CAACyqF,QAAQ,CAAC1lU,IAAI,CAAC,IAAI,CAAA,CAC9BqK,KAAK4vR,oBAAoB,CAACjD,oBAC1B,CAAA,CAAA,IAAI,CAAC2uC,gBAAgB,EACrB,CAAA,WACG/uC,kBACH,CAAA,IAAI,CAAC37C,MAAM,CAAC2qF,UAAU,CAAC5lU,IAAI,CAAC,IAAI,CAChCqK,CAAAA,IAAAA,CAAK4vR,oBAAoB,CAAC9C,gCAC1B,MACF,KAAKT,eACHrsR,CAAAA,IAAAA,CAAK4vR,oBAAoB,CAACjD,oBAAAA,CAAAA,CAC1B,IAAI,CAAC2uC,gBAAgB,EACrB,CAAA,KACJ,CACA,GAAI7/L,OAAO0vJ,SAAS,CAAC7+Q,IAAI,GAAK,WAAY,CACxC,IAAI,CAACskO,MAAM,CAAC4qF,UAAU,CAAC7lU,IAAI,CAAC8lI,OAAO0vJ,SAAS,EAC9C,CACAnrR,IAAAA,CAAKyoJ,QAAQ,EACb,CAAA,IAAI,CAACsxK,kBAAkB,CAAG,KAC5B,CACF,CACF,CACAluC,iBAAoB,EAAA,CAClB,MAAM7rR,IAAAA,CAAO,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,MAAQ,IAAI,CAAC+5T,kBAAkB,CAAE,CACnC,MAAMnpF,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,IAAIzxO,GAAAA,CAAMyxO,OAAO4qF,UAAU,CAAC19T,OAAO,CAAC,IAAI,CAAC29H,MAAM,CAAC0vJ,SAAS,EACzD,GAAIhsR,GAAAA,CAAM,CAAC,CAAA,CAAG,CACZyxO,MAAO4qF,CAAAA,UAAU,CAAC79T,MAAM,CAACwB,GAAK,CAAA,CAAA,EAChC,CACAA,GAAAA,CAAMyxO,OAAOyqF,QAAQ,CAACv9T,OAAO,CAAC,IAAI,CAClC,CAAA,GAAIqB,GAAM,CAAA,CAAC,EAAG,CACZyxO,MAAAA,CAAOyqF,QAAQ,CAAC19T,MAAM,CAACwB,GAAAA,CAAK,CAC9B,EAAA,CACAA,IAAMyxO,MAAO2qF,CAAAA,UAAU,CAACz9T,OAAO,CAAC,IAAI,CAAA,CACpC,GAAIqB,GAAAA,CAAM,CAAC,CAAG,CAAA,CACZyxO,MAAO2qF,CAAAA,UAAU,CAAC59T,MAAM,CAACwB,GAAK,CAAA,CAAA,EAChC,CACAyxO,MAAOi/C,CAAAA,UAAU,CAAC7vR,IAAAA,CAAAA,CAClBA,KAAK4vR,oBAAoB,CAAC7C,4BAC1B,CAAA,CAAA,IAAI,CAACgtC,kBAAkB,CAAG,MAC5B,CACF,CACA0B,UAAAA,CAAWvyT,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAEyjK,EAAE,CAAEC,EAAE,CAAEC,EAAE,CAAE,CAC9B,MAAM10K,IAAAA,CAAO,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,IAAM,CAAA,CACRA,KAAKyoJ,QAAQ,EAAA,CACb,GAAIv/I,CAAAA,YAAa4H,KAAM,CACrB8nT,SAAAA,CAAUpsR,QAAQ,CAACtjC,EAAEA,CAAC,CAAEA,CAAE0H,CAAAA,CAAC,CAAE1H,CAAE6H,CAAAA,CAAC,EAClC,CAAA,KAAO,CACL6nT,SAAUpsR,CAAAA,QAAQ,CAACtjC,CAAAA,CAAG0H,EAAGG,CAC3B,EAAA,CACA,GAAIH,CAAAA,YAAaE,KAAM,CACrB+nT,SAAAA,CAAUrsR,QAAQ,CAAC57B,EAAE1H,CAAC,CAAE0H,CAAEA,CAAAA,CAAC,CAAEA,CAAEG,CAAAA,CAAC,EAClC,CAAA,KAAO,GAAIyjK,EAAAA,GAAO73K,SAAW,CAAA,CAC3Bk8T,UAAUrsR,QAAQ,CAACgoI,EAAIC,CAAAA,EAAAA,CAAIC,IAC7B,CAAO,KAAA,CACLmkJ,SAAUrsR,CAAAA,QAAQ,CAAC,CAAG,CAAA,CAAA,CAAG,CAC3B,EAAA,CACAxsC,KAAKy7T,UAAU,CAAC7C,SAAWC,CAAAA,SAAAA,EAC7B,CACF,CACA6C,WAAAA,CAAYxyT,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CACnB,MAAM/Q,IAAO,CAAA,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,IAAAA,CAAM,CACRA,IAAAA,CAAKyoJ,QAAQ,EACb,CAAA,GAAIv/I,CAAa4H,YAAAA,IAAAA,CAAM,CACrB8nT,SAAUpsR,CAAAA,QAAQ,CAACtjC,CAAAA,CAAEA,CAAC,CAAEA,CAAAA,CAAE0H,CAAC,CAAE1H,EAAE6H,CAAC,EAClC,CAAO,KAAA,CACL6nT,UAAUpsR,QAAQ,CAACtjC,CAAG0H,CAAAA,CAAAA,CAAGG,GAC3B,CACA/Q,IAAAA,CAAK07T,WAAW,CAAC9C,WACnB,CACF,CACA+C,YAAazyT,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAEyjK,EAAE,CAAEC,EAAE,CAAEC,EAAE,CAAE,CAChC,MAAM10K,IAAO,CAAA,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,IAAAA,CAAM,CACRA,IAAKyoJ,CAAAA,QAAQ,EACb,CAAA,GAAIv/I,aAAa4H,IAAM,CAAA,CACrB8nT,SAAUpsR,CAAAA,QAAQ,CAACtjC,CAAEA,CAAAA,CAAC,CAAEA,CAAAA,CAAE0H,CAAC,CAAE1H,CAAAA,CAAE6H,CAAC,EAClC,MAAO,CACL6nT,SAAAA,CAAUpsR,QAAQ,CAACtjC,EAAG0H,CAAGG,CAAAA,CAAAA,EAC3B,CACA,GAAIH,aAAaE,IAAM,CAAA,CACrB+nT,SAAUrsR,CAAAA,QAAQ,CAAC57B,CAAE1H,CAAAA,CAAC,CAAE0H,CAAAA,CAAEA,CAAC,CAAEA,CAAAA,CAAEG,CAAC,EAClC,MAAO,GAAIyjK,EAAAA,GAAO73K,SAAW,CAAA,CAC3Bk8T,UAAUrsR,QAAQ,CAACgoI,EAAIC,CAAAA,EAAAA,CAAIC,IAC7B,CAAO,KAAA,CACLmkJ,SAAUrsR,CAAAA,QAAQ,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,EAC3B,CACAxsC,IAAK27T,CAAAA,YAAY,CAAC/C,SAAAA,CAAWC,WAC/B,CACF,CACA+C,kBAAmB1yT,CAAAA,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAE,CAC1B,MAAM/Q,IAAAA,CAAO,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,IAAM,CAAA,CACRA,KAAKyoJ,QAAQ,EAAA,CACb,GAAIv/I,CAAAA,YAAa4H,KAAM,CACrB8nT,SAAAA,CAAUpsR,QAAQ,CAACtjC,EAAEA,CAAC,CAAEA,CAAE0H,CAAAA,CAAC,CAAE1H,CAAE6H,CAAAA,CAAC,EAClC,CAAA,KAAO,CACL6nT,SAAUpsR,CAAAA,QAAQ,CAACtjC,CAAAA,CAAG0H,EAAGG,CAC3B,EAAA,CACA/Q,IAAK47T,CAAAA,kBAAkB,CAAChD,SAC1B,EAAA,CACF,CACA16I,QAAAA,EAAW,CACT,OAAO,IAAI,CAAClvK,KAAK,GAAKq9Q,eACxB,CACAwvC,mBAAsB,EAAA,CACpB,OAAO,IAAI,CAAC7sT,KAAK,GAAKq9Q,iBAAmB,IAAI,CAACr9Q,KAAK,GAAKu9Q,kBAC1D,CACAuvC,WAAAA,EAAc,CACZ,OAAO,IAAI,CAAC9sT,KAAK,GAAKu9Q,kBACxB,CACAgD,mBAAoBvgJ,CAAAA,SAAS,CAAE,CAC7B,MAAMvT,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMw6G,SAAAA,CAAYx6G,MAAO0vJ,CAAAA,SAAS,CAClC,GAAIl1C,SAAAA,CAAW,CACb,MAAM04C,QAAU14C,SAAUs1C,CAAAA,gBAAgB,EAC1C,CAAA,MAAMqD,QAAU34C,SAAUw1C,CAAAA,gBAAgB,EAC1CmtC,CAAAA,SAAAA,CAAUpsR,QAAQ,CAACmiP,OAAAA,CAAQzlR,CAAC,CAAEylR,QAAQ/9Q,CAAC,CAAE+9Q,OAAQ59Q,CAAAA,CAAC,EAClD+nT,SAAUtsR,CAAAA,QAAQ,CAACoiP,OAAAA,CAAQ1lR,CAAC,CAAE0lR,OAAAA,CAAQh+Q,CAAC,CAAEg+Q,QAAQ79Q,CAAC,CAAE69Q,OAAQx6Q,CAAAA,CAAC,EAC/D,CAAO,KAAA,CACL,MAAM8uI,GAAAA,CAAMznB,OAAOtc,WAAW,EAAA,CAC9B,MAAMkgC,GAAAA,CAAM5jB,MAAOohB,CAAAA,WAAW,EAC9B+7K,CAAAA,SAAAA,CAAUpsR,QAAQ,CAAC02G,GAAAA,CAAIh6I,CAAC,CAAEg6I,IAAItyI,CAAC,CAAEsyI,GAAInyI,CAAAA,CAAC,EACtC+nT,SAAUtsR,CAAAA,QAAQ,CAAC6yG,GAAAA,CAAIn2I,CAAC,CAAEm2I,GAAAA,CAAIzuI,CAAC,CAAEyuI,IAAItuI,CAAC,CAAEsuI,GAAIjrI,CAAAA,CAAC,EAC/C,CACA46H,SAAAA,CAAU6/I,SAAS,CAAC+pC,WACpB5pL,SAAU6O,CAAAA,WAAW,CAACi7K,SAAAA,EACxB,CACAwC,gBAAmB,EAAA,CACjB,MAAMt7T,IAAAA,CAAO,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,KAAM,CACR,IAAI,CAACuvR,mBAAmB,CAACopC,cACzB34T,CAAAA,CAAAA,IAAAA,CAAKyvR,iBAAiB,CAACkpC,gBACvB,GAAI,IAAI,CAAC3pT,KAAK,GAAKu9Q,kBAAoB,CAAA,CACrC,MAAMwvC,WAAAA,CAAc/7T,KAAKg8T,cAAc,EAAA,CACvC,GAAID,WAAAA,CAAa,CACfA,WAAYtsC,CAAAA,iBAAiB,CAACkpC,cAAAA,EAChC,CACF,CACA34T,IAAKyoJ,CAAAA,QAAQ,GACf,CACF,CACAwzK,cAAiB,EAAA,CACf,MAAMj8T,IAAO,CAAA,IAAI,CAACu5T,KAAK,CACvB,GAAIv5T,IAAAA,CAAKo7T,QAAQ,EAAA,CAAI,CACnB,MAAMW,WAAAA,CAAc/7T,IAAKg8T,CAAAA,cAAc,GACvC,GAAID,WAAAA,CAAa,CACf,MAAMtgM,OAAS,IAAI,CAACA,MAAM,CAC1BsgM,YAAYv/L,iBAAiB,CAACm8L,cAC9B,CAAA,CAAA,MAAMnxS,EAAImxS,cAAexjC,CAAAA,SAAS,EAClC,CAAA,MAAM9tR,EAAIsxT,cAAe97K,CAAAA,WAAW,EACpC,CAAA,MAAMo5F,UAAYx6G,MAAO0vJ,CAAAA,SAAS,CAClC,GAAIl1C,WAAaA,SAAU6zC,CAAAA,UAAU,CAAE,CACrC,MAAM0B,EAAKv1C,CAAAA,SAAAA,CAAUpnO,IAAI,CAACu6Q,YAAY,CACtC,MAAMgM,EAAKn/C,CAAAA,SAAAA,CAAUpnO,IAAI,CAACw6Q,aAAa,CACvC,MAAM6yC,WAAalD,MAAOplU,CAAAA,IAAI,CAACwhS,EAAAA,CAAAA,CAAIx6Q,MAAM,EAAA,CACzC,MAAMuhT,SAAAA,CAAYpD,OAAO37T,GAAG,CAACiK,CAAE6B,CAAAA,CAAC,GAAI7B,CAAEuJ,CAAAA,CAAC,EAAIvJ,CAAAA,CAAAA,CAAE0J,CAAC,EAAI1J,CAAAA,CAAAA,CAAE+M,CAAC,EAAA,CAAA,CAAIjC,GAAG,CAAC+pT,UAAAA,CAAAA,CAC7DC,SAAU7lT,CAAAA,eAAe,CAACk1Q,EAAIytC,CAAAA,KAAAA,CAAAA,CAC9Bx9L,MAAOrc,CAAAA,WAAW,CAAC53F,CAAEte,CAAAA,CAAC,EAAK+vT,CAAAA,KAAAA,CAAM/vT,CAAC,CAAEse,CAAAA,CAAE5W,CAAC,EAAA,CAAKqoT,MAAMroT,CAAC,CAAE4W,CAAEzW,CAAAA,CAAC,GAAKkoT,KAAMloT,CAAAA,CAAC,CACpE0qH,CAAAA,MAAAA,CAAOoiB,WAAW,CAACs+K,SAAAA,EACrB,CAAO,KAAA,CACL1gM,OAAOrc,WAAW,CAAC53F,CAAEte,CAAAA,CAAC,GAAIse,CAAE5W,CAAAA,CAAC,EAAI4W,CAAAA,CAAAA,CAAEzW,CAAC,EACpC0qH,CAAAA,CAAAA,MAAAA,CAAOoiB,WAAW,CAACx2I,EAAE6B,CAAC,EAAA,CAAI7B,CAAEuJ,CAAAA,CAAC,GAAIvJ,CAAE0J,CAAAA,CAAC,EAAI1J,CAAAA,CAAAA,CAAE+M,CAAC,EAC7C,EAAA,CACF,CACF,CACF,CACAgoT,gBAAmB,EAAA,CACjB,MAAML,WAAAA,CAAc,IAAI,CAACxC,KAAK,CAACyC,cAAc,GAC7C,GAAID,WAAAA,CAAa,CACf,IAAI,CAACxsC,mBAAmB,CAACopC,cACzBoD,CAAAA,CAAAA,WAAAA,CAAYtsC,iBAAiB,CAACkpC,cAAAA,EAChC,CACF,CACA0D,SAASnzT,CAAC,CAAE0H,CAAC,CAAEG,CAAC,CAAEQ,EAAE,CAAEC,EAAE,CAAEC,EAAE,CAAE,CAC5B,GAAIvI,aAAa4H,IAAM,CAAA,CACrB,IAAI,CAAC2qH,MAAM,CAACrc,WAAW,CAACl2G,CAAAA,EAC1B,MAAO,CACL,IAAI,CAACuyH,MAAM,CAACrc,WAAW,CAACl2G,CAAG0H,CAAAA,CAAAA,CAAGG,GAChC,CACA,GAAIH,CAAa8L,YAAAA,IAAAA,CAAM,CACrB,IAAI,CAAC++G,MAAM,CAACoiB,WAAW,CAACjtI,CAAAA,EAC1B,CAAO,KAAA,GAAIA,CAAaE,YAAAA,IAAAA,CAAM,CAC5B,IAAI,CAAC2qH,MAAM,CAACwiB,cAAc,CAACrtI,GAC7B,CAAO,KAAA,GAAIW,EAAO5U,GAAAA,SAAAA,CAAW,CAC3B,IAAI,CAAC8+H,MAAM,CAACwiB,cAAc,CAAC1sI,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,EACrC,CACA,IAAI,CAAC6pT,gBAAgB,GACvB,CACAh7N,QAAW,EAAA,CACT,GAAI,CAAC,IAAI,CAACi5N,KAAK,CAAE,CACf,IAAI,CAACzqC,UAAU,GACjB,CACA,IAAI,CAACpD,gBAAgB,GACvB,CACAnrL,WAAY,CACV,IAAI,CAACsrL,iBAAiB,GACxB,CACAjvR,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACy+T,eAAe,CAAG,CAAA,CAAG,IAAI,CAACI,cAAc,CAAG,IAAI5oT,KAAK,CAAG,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,IAAI,CAAC+oT,gBAAgB,CAAG,IAAI/oT,IAAAA,CAAQ,IAAI,CAACyoT,KAAK,CAAG,IAAA,CAAM,IAAI,CAACU,SAAS,CAAG,EAAA,CAAK,IAAI,CAACzlB,MAAM,CAAGrnB,gBAAAA,CAAkB,IAAI,CAACqsC,cAAc,CAAG,CAAA,CAAG,IAAI,CAACY,aAAa,CAAG,IAAItpT,KAAK,CAAG,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,IAAI,CAACypT,eAAe,CAAG,IAAIzpT,IAAAA,CAAQ,IAAI,CAACopK,KAAK,CAAGk0G,mBAAAA,CAAqB,IAAI,CAACqsC,KAAK,CAAG,CAAA,CAAG,IAAI,CAACM,YAAY,CAAG,CAAA,CAAG,IAAI,CAACE,gBAAgB,CAAG,CAAA,CAAG,IAAI,CAAClB,kBAAkB,CAAG,KAAA,CAAO,IAAI,CAAC/qT,KAAK,CAAGq9Q,gBACxb,CACF,CAteM6sC,kBAEGntC,CAAAA,aAAa,CAAG,SAGrB,CALEmtC,kBAKGltC,CAAAA,oBAAoB,CAAG,gBAG5B,CAREktC,kBAAAA,CAQGjtC,kBAAkB,CAAG,cAG1B,CAXEitC,kBAAAA,CAWGhtC,kBAAkB,CAAG,cAG1B,CAdEgtC,kBAAAA,CAcG/sC,kBAAkB,CAAG,cAG1B,CAjBE+sC,kBAAAA,CAiBGxgJ,KAAK,CAAG,CAAC,CAudlB,CAAA,MAAM4jJ,uBACJ1/T,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,IAAI60T,YAAcC,CAAAA,UAClB,CAAMC,MAAAA,aAAAA,CACJ7/T,YAAY6+H,MAAM,CAAEhrH,KAAK,CAAEkK,MAAM,CAAE+hT,WAAW,CAAC,CAC7C,IAAI,CAACjhM,MAAM,CAAGA,MACd,CAAA,IAAI,CAAChrH,KAAK,CAAGA,KACb,CAAA,IAAI,CAACkK,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC+hT,WAAW,CAAGA,YACrB,CACF,CACA,MAAMC,mBACJ//T,CAAAA,WAAAA,CAAY6H,CAAC,CAAEC,CAAC,CAAEk4T,YAAY,CAAC,CAC7B,GAAI1zO,SAAUp0F,CAAAA,MAAM,GAAK,CAAA,CAAG,CAC1B,IAAI,CAAC2P,CAAC,CAAGA,CACT,CAAA,IAAI,CAACC,CAAC,CAAGA,CACT,CAAA,IAAI,CAACm4T,OAAO,CAAGD,YAAAA,CAAaC,OAC5B,CAAA,IAAI,CAACC,WAAW,CAAGF,aAAaG,UAChC,CAAA,IAAI,CAACC,WAAW,CAAGJ,YAAaK,CAAAA,eAAe,CAC/C,IAAI,CAACC,MAAM,CAAGN,YAAansT,CAAAA,KAAK,CAChC,IAAI,CAAC0sT,MAAM,CAAGP,YAAAA,CAAaQ,UAAU,CACrC,IAAI,CAACziT,MAAM,CAAGiiT,YAAAA,CAAajiT,OAC7B,MAAO,CACL,IAAI,CAAClW,CAAC,CAAG,IACT,CAAA,IAAI,CAACC,CAAC,CAAG,IACT,CAAA,IAAI,CAACm4T,OAAO,CAAG,CACf,CAAA,IAAI,CAACC,WAAW,CAAG,IAAIhsT,IACvB,CAAA,IAAI,CAACksT,WAAW,CAAG,IAAIlsT,IACvB,CAAA,IAAI,CAACosT,MAAM,CAAG,IAAIpsT,IAClB,CAAA,IAAI,CAACqsT,MAAM,CAAG,IAAIrsT,IAClB,CAAA,IAAI,CAAC6J,MAAM,CAAG,IAAI7J,KACpB,CACF,CACF,CACA,MAAMusT,YAAAA,CACJzgU,YAAYmgU,UAAa,CAAA,IAAIjsT,IAAM,CAAEmsT,gBAAkB,IAAInsT,IAAM,CAAEL,KAAAA,CAAQ,IAAIK,IAAM,CAAEssT,UAAa,CAAA,IAAItsT,IAAM,CAAE6J,MAAAA,CAAS,IAAI7J,IAAM,CAAE+rT,OAAU,CAAA,CAAC,CAAC,CAC/I,IAAI,CAACE,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACE,eAAe,CAAGA,eACvB,CAAA,IAAI,CAACxsT,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC2sT,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACziT,MAAM,CAAGA,MACd,CAAA,IAAI,CAACkiT,OAAO,CAAGA,QACjB,CACF,CACA,MAAMS,aAAAA,CACJ1gU,YAAYggB,KAAK,CAAE2gT,QAAQ,CAAC,CAC1B,IAAI,CAAC3gT,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC2gT,QAAQ,CAAGA,SAClB,CACF,CACA,MAAMC,UAAY,CAChB,SAAA,CACD,CACD,MAAMC,iCAAiCz6D,eAkBrC7K,CAAAA,eAAAA,EAAkB,CAChB,GAAI,OAAOhd,IAAS,GAAA,WAAA,CAAa,CAC/B,IAAI,CAACuiF,sBAAsB,CAAG,IAAIviF,IAAAA,CAAKwiF,+BAA+B,CACtE,IAAI,CAACC,UAAU,CAAG,IAAIziF,IAAAA,CAAK0iF,qBAAqB,CAAC,IAAI,CAACH,sBAAsB,CAC5E,CAAA,IAAI,CAACI,oBAAoB,CAAG,IAAI3iF,IAAAA,CAAK4iF,gBACrC,CAAA,IAAI,CAACC,MAAM,CAAG,IAAI7iF,IAAK8iF,CAAAA,mCAAmC,CAC1D,IAAI,CAAC3iB,aAAa,CAAG,IAAIngE,KAAK+iF,uBAAuB,CAAC,IAAI,CAACN,UAAU,CAAE,IAAI,CAACE,oBAAoB,CAAE,IAAI,CAACE,MAAM,CAAE,IAAI,CAACN,sBAAsB,CAC1I,CAAA,GAAI,IAAI,CAACpiB,aAAa,CAAC6iB,uBAAuB,CAAE,CAC9C,MAAMC,yBAA4BjjF,CAAAA,IAAAA,CAAKkjF,WAAW,CAAC,IAAI,CAACC,mBAAmB,CAACr5T,IAAI,CAAC,IAAI,CAAA,CAAG,OACxF,IAAI,CAACq2S,aAAa,CAAC6iB,uBAAuB,CAACC,yBAAAA,EAC7C,CACA7B,YAAAA,CAAe,IAAIphF,IAAK20C,CAAAA,SAAS,CACjC0sC,UAAAA,CAAa,IAAIrhF,IAAK20C,CAAAA,SAAS,CAC/BopC,kBAAAA,CAAmB/gE,eAAe,EAClC,CAAA,IAAI,CAAComE,gBAAgB,CAAG,IAAIjG,UAAW+E,CAAAA,YAAAA,CAAc,EACrD,CAAA,IAAI,CAACmB,iBAAiB,CAAG,IAAIlG,UAAAA,CAAWgF,aAAe,CAAA,CAAA,CACvD,CAAA,IAAI,CAACmB,uBAAuB,CAAG,IAAInG,UAAWqE,CAAAA,mBAAAA,CAAqB,CACnE,CAAA,CAAA,IAAI,CAAC93F,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAA,CAAU,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,EACnD,CAAA,KAAO,CACL,IAAI,CAACxsC,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAA,CAAU,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CACF,CACAjO,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,MAAM+oE,KAAQ,CAAA,CACZ,OACA,eACA,CAAA,gBAAA,CACA,cACA,CAAA,eAAA,CACA,WACA,iBACA,CAAA,aAAA,CACA,MACA,CAAA,OAAA,CACA,OACD,CACD,IAAK,MAAM+V,QAAAA,IAAY/V,MAAM,CAC3B,GAAIlzM,IAAK3N,CAAAA,cAAc,CAAC42N,QAAW,CAAA,CAAA,CACjC,MAAMt7N,KAAAA,CAAQqS,IAAI,CAACipN,QAAAA,CAAS,CAC5B,GAAIjkO,MAAMC,OAAO,CAAC0I,KAAQ,CAAA,CAAA,CACxBy5O,SAAS,CAACne,QAAAA,CAAS,CAAG,IAAIhnN,KAAKtU,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,EAC7D,CAAO,KAAA,CACLy5O,SAAS,CAACne,QAAAA,CAAS,CAAGt7N,MACxB,CACF,CACF,CACA,KAAK,CAAC4mQ,wBAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAM,CAC7C,SAAA,CACD,EACH,CACA8pO,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAM+wO,UAAYz/G,MAAOy/G,CAAAA,SAAS,CAClC,MAAMrsO,KAAO,CACXnH,OAAAA,CAASwzO,SAAUxzO,CAAAA,OAAO,CAC1BgnR,IAAMxzC,CAAAA,SAAAA,CAAUwzC,IAAI,CACpBwrC,cAAeh/E,SAAUg/E,CAAAA,aAAa,CACtCd,cAAAA,CAAgBl+E,UAAUk+E,cAAc,CACxCe,YAAc,CAAA,CACZj/E,UAAUi/E,YAAY,CAACjxT,CAAC,CACxBgyO,UAAUi/E,YAAY,CAACvpT,CAAC,CACxBsqO,UAAUi/E,YAAY,CAACppT,CAAC,CACzB,CACD0oT,aAAe,CAAA,CACbv+E,SAAUu+E,CAAAA,aAAa,CAACvwT,CAAC,CACzBgyO,SAAUu+E,CAAAA,aAAa,CAAC7oT,CAAC,CACzBsqO,SAAUu+E,CAAAA,aAAa,CAAC1oT,CAAC,CAC1B,CACDipT,QAAAA,CAAU9+E,UAAU8+E,QAAQ,CAC5BgB,eAAiB9/E,CAAAA,SAAAA,CAAU8/E,eAAe,CAC1CF,WAAAA,CAAa5/E,SAAU4/E,CAAAA,WAAW,CAClCxuT,IAAAA,CAAM4uO,SAAU5uO,CAAAA,IAAI,CACpB6+H,KAAO+vG,CAAAA,SAAAA,CAAU/vG,KAAK,CACtB1iG,KAAMyyM,SAAUzyM,CAAAA,IAAI,CACtB,CACA,OAAO,IAAI,CAAC4uM,YAAY,CAACltO,MAAO0E,IAClC,CAAA,CACAkiQ,cAAet1I,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAChC,GAAIA,UAAUvuO,OAAO,CAAE,CACrBuuO,SAAAA,CAAUvuO,OAAO,CAAG,MACtB,CACA,GAAIuuO,UAAUj2O,IAAI,CAAE,CAClB,IAAI,CAACsvR,WAAW,CAACr5C,SAAUj2O,CAAAA,IAAI,CAC/Bi2O,CAAAA,SAAAA,CAAUj2O,IAAI,CAAG,KACnB,CACF,CACA2vR,OAAQ3vR,CAAAA,IAAI,CAAEmrI,KAAK,CAAE1iG,IAAI,CAAE,CACzB,GAAI0iG,KAAAA,GAAUxuI,SAAa8rC,EAAAA,IAAAA,GAAS9rC,UAAW,CAC7C,IAAI,CAAC2+S,aAAa,CAACojB,YAAY,CAAC1+T,IAAMmrI,CAAAA,KAAAA,CAAO1iG,MAC/C,CAAO,KAAA,CACL,IAAI,CAAC6yQ,aAAa,CAACojB,YAAY,CAAC1+T,IAAAA,EAClC,CACF,CACA6vR,UAAAA,CAAW7vR,IAAI,CAAE,CACf,IAAI,CAACs7S,aAAa,CAACqjB,eAAe,CAAC3+T,IAAAA,EACrC,CACA8uR,UAAAA,CAAWJ,IAAI,CAAE3rI,KAAK,CAAE/T,SAAS,CAAE,CACjC,MAAM4vL,YAAe,CAAA,IAAIzjF,KAAK20C,SAAS,CAAC,CAAG,CAAA,CAAA,CAAG,GAC9C,GAAIpB,IAAAA,GAAS,CAAG,CAAA,CACd3rI,MAAM43K,qBAAqB,CAACjsC,IAAMkwC,CAAAA,YAAAA,EACpC,CACA,MAAM7C,WAAAA,CAAc,IAAI5gF,IAAAA,CAAK0jF,oBAAoB,CAAC7vL,SAAAA,CAAAA,CAClD,MAAM8vL,QAAAA,CAAW,IAAI3jF,IAAK4jF,CAAAA,2BAA2B,CAACrwC,IAAAA,CAAMqtC,YAAah5K,KAAO67K,CAAAA,YAAAA,CAAAA,CAChF,MAAM5+T,IAAAA,CAAO,IAAIm7O,IAAK6jF,CAAAA,WAAW,CAACF,QAAAA,CAAAA,CAClC3jF,KAAKn9M,OAAO,CAAC8gS,QACb3jF,CAAAA,CAAAA,IAAAA,CAAKn9M,OAAO,CAAC4gS,YACb,CAAA,CAAA,OAAO5+T,IACT,CACAsvR,WAAAA,CAAYtvR,IAAI,CAAE,CAChB,MAAM+7T,WAAAA,CAAc/7T,IAAKg8T,CAAAA,cAAc,GACvC,GAAID,WAAAA,CAAa,CACf5gF,IAAAA,CAAKn9M,OAAO,CAAC+9R,WAAAA,EACf,CACA5gF,IAAAA,CAAKn9M,OAAO,CAACh+B,IAAAA,EACf,CACAi/T,YAAAA,CAAa34S,KAAK,CAAE/rB,GAAG,CAAE+L,OAAAA,CAAU,EAAE,CAAE,CACrC,GAAIA,QAAQ44T,UAAU,EAAI54T,OAAQ64T,CAAAA,cAAc,CAAE,CAChD74T,OAAAA,CAAQvB,IAAI,CAAG,KACf,OAAO,IAAI,CAACq6T,UAAU,CAAC94S,KAAO/rB,CAAAA,GAAAA,CAAK+L,OAAQ,CAAA,CAAC,EAAE,EAAI,IACpD,CACA,IAAI1R,OAAS,IACb2nU,CAAAA,YAAAA,CAAa/vR,QAAQ,CAAClmB,MAAMpd,CAAC,CAAEod,KAAM1V,CAAAA,CAAC,CAAE0V,KAAMvV,CAAAA,CAAC,CAC/CyrT,CAAAA,UAAAA,CAAWhwR,QAAQ,CAACjyC,GAAI2O,CAAAA,CAAC,CAAE3O,GAAIqW,CAAAA,CAAC,CAAErW,GAAAA,CAAIwW,CAAC,CACvC,CAAA,MAAMsuT,WAAc,CAAA,IAAIlkF,KAAKmkF,wBAAwB,CAAC/C,YAAcC,CAAAA,UAAAA,CAAAA,CACpE,GAAI,OAAOl2T,OAAAA,CAAQi5T,oBAAoB,GAAK,SAAU,CACpDF,WAAAA,CAAYG,0BAA0B,CAACl5T,QAAQi5T,oBAAoB,EACrE,CACA,GAAI,OAAOj5T,OAAQm5T,CAAAA,mBAAmB,GAAK,QAAA,CAAU,CACnDJ,WAAYK,CAAAA,yBAAyB,CAACp5T,OAAAA,CAAQm5T,mBAAmB,EACnE,CACA,IAAI,CAACnkB,aAAa,CAACqkB,OAAO,CAACpD,YAAAA,CAAcC,WAAY6C,WACrD,CAAA,CAAA,GAAIA,WAAYO,CAAAA,MAAM,GAAI,CACxB,MAAMC,YAAeR,CAAAA,WAAAA,CAAYS,qBAAqB,EACtD,CAAA,MAAM9/T,IAAOm7O,CAAAA,IAAAA,CAAK4kF,UAAU,CAACF,YAAAA,CAAc1kF,IAAK6jF,CAAAA,WAAW,EAC3D,GAAIh/T,IAAAA,CAAM,CACR,MAAMyQ,KAAQ4uT,CAAAA,WAAAA,CAAYW,mBAAmB,EAAA,CAC7C,MAAMrlT,MAAS0kT,CAAAA,WAAAA,CAAYY,oBAAoB,EAAA,CAC/CrrU,OAAS,IAAI6nU,aAAAA,CAAcz8T,IAAKy7H,CAAAA,MAAM,CAAE,IAAI3qH,IAAAA,CAAKL,KAAMvH,CAAAA,CAAC,GAAIuH,KAAMG,CAAAA,CAAC,EAAIH,CAAAA,KAAAA,CAAMM,CAAC,EAAK,CAAA,CAAA,IAAID,IAAK6J,CAAAA,MAAAA,CAAOzR,CAAC,EAAIyR,CAAAA,MAAAA,CAAO/J,CAAC,EAAA,CAAI+J,OAAO5J,CAAC,EAAA,CAAA,CAAKsuT,WAAYa,CAAAA,wBAAwB,IACvK,CACF,CACA/kF,IAAKn9M,CAAAA,OAAO,CAACqhS,WACb,CAAA,CAAA,OAAOzqU,MACT,CACAwqU,WAAW94S,KAAK,CAAE/rB,GAAG,CAAE+L,QAAU,EAAE,CAAE,CACnC,MAAMikE,OAAU,CAAA,EAAE,CAClBgyP,YAAAA,CAAa/vR,QAAQ,CAAClmB,KAAAA,CAAMpd,CAAC,CAAEod,MAAM1V,CAAC,CAAE0V,KAAMvV,CAAAA,CAAC,EAC/CyrT,UAAWhwR,CAAAA,QAAQ,CAACjyC,GAAAA,CAAI2O,CAAC,CAAE3O,GAAAA,CAAIqW,CAAC,CAAErW,IAAIwW,CAAC,CAAA,CACvC,MAAMsuT,WAAAA,CAAc,IAAIlkF,IAAKglF,CAAAA,wBAAwB,CAAC5D,YAAAA,CAAcC,YACpE,GAAI,OAAOl2T,OAAQi5T,CAAAA,oBAAoB,GAAK,QAAU,CAAA,CACpDF,WAAYG,CAAAA,0BAA0B,CAACl5T,OAAQi5T,CAAAA,oBAAoB,EACrE,CACA,GAAI,OAAOj5T,OAAAA,CAAQm5T,mBAAmB,GAAK,SAAU,CACnDJ,WAAAA,CAAYK,yBAAyB,CAACp5T,QAAQm5T,mBAAmB,EACnE,CACA,IAAI,CAACnkB,aAAa,CAACqkB,OAAO,CAACpD,aAAcC,UAAY6C,CAAAA,WAAAA,CAAAA,CACrD,GAAIA,WAAAA,CAAYO,MAAM,EAAI,CAAA,CACxB,MAAMQ,aAAAA,CAAgBf,YAAYgB,sBAAsB,EAAA,CACxD,MAAMvnL,MAAAA,CAASumL,YAAYW,mBAAmB,EAAA,CAC9C,MAAMxhM,OAAAA,CAAU6gM,YAAYY,oBAAoB,EAAA,CAChD,MAAMK,YAAAA,CAAejB,YAAYkB,kBAAkB,EAAA,CACnD,MAAMC,OAAAA,CAAUJ,aAAcrmU,CAAAA,IAAI,EAClC,CAAA,IAAI,IAAIlF,CAAI,CAAA,CAAA,CAAGA,CAAI2rU,CAAAA,OAAAA,CAAS3rU,IAAI,CAC9B,MAAMmL,IAAOm7O,CAAAA,IAAAA,CAAK4kF,UAAU,CAACK,aAAAA,CAAcrtC,EAAE,CAACl+R,GAAIsmP,IAAK6jF,CAAAA,WAAW,CAClE,CAAA,GAAIh/T,MAAQA,IAAKy7H,CAAAA,MAAM,CAAE,CACvB,GAAIn1H,OAAQ44T,CAAAA,UAAU,EAAI,CAACl/T,KAAKy7H,MAAM,CAACp2H,IAAI,CAAClI,GAAG,CAAImJ,GAAAA,OAAAA,CAAQ44T,UAAU,CAAA,EAAK54T,QAAQ64T,cAAc,EAAI,CAAC74T,OAAAA,CAAQ64T,cAAc,CAACn/T,IAAAA,CAAKy7H,MAAM,CAAA,CAAG,CACxI,QACF,CACA,MAAMhrH,KAAAA,CAAQqoI,OAAOi6I,EAAE,CAACl+R,CACxB,CAAA,CAAA,MAAM8lB,OAAS6jH,OAAQu0J,CAAAA,EAAE,CAACl+R,CAAAA,CAAAA,CAC1B,MAAMD,MAAS,CAAA,IAAI6nU,aAAcz8T,CAAAA,IAAAA,CAAKy7H,MAAM,CAAE,IAAI3qH,IAAKL,CAAAA,KAAAA,CAAMvH,CAAC,EAAIuH,CAAAA,KAAAA,CAAMG,CAAC,EAAA,CAAIH,MAAMM,CAAC,EAAA,CAAA,CAAK,IAAID,IAAAA,CAAK6J,OAAOzR,CAAC,EAAA,CAAIyR,MAAO/J,CAAAA,CAAC,GAAI+J,MAAO5J,CAAAA,CAAC,EAAKuvT,CAAAA,CAAAA,YAAAA,CAAavtC,EAAE,CAACl+R,CAAAA,CAAAA,CAAAA,CACvJ01E,OAAQ50E,CAAAA,IAAI,CAACf,MACf,EAAA,CACF,CACA,GAAI0R,QAAQvB,IAAI,CAAE,CAChBwlE,OAAAA,CAAQxlE,IAAI,CAAC,CAACN,CAAGC,CAAAA,CAAAA,GAAID,EAAEi4T,WAAW,CAAGh4T,CAAEg4T,CAAAA,WAAW,EACpD,CACF,CACAvhF,IAAKn9M,CAAAA,OAAO,CAACqhS,WACb,CAAA,CAAA,OAAO90P,OACT,CACAk2P,gBAAgBhlM,MAAM,CAAE7+G,KAAK,CAAE,CAC7B,IAAI8jT,cAAAA,CAAiB,KACrB,CAAA,MAAM3sU,KAAO0nI,MAAOm8G,CAAAA,OAAO,EAC3B,CAAA,IAAI,CAAC+oF,UAAU,CAAC5sU,IAAAA,CAAK,CAAG,IAAI,CAAC4sU,UAAU,CAAC5sU,IAAK,CAAA,EAAI,CAC/C6sU,MAAAA,CAAQ,EAAE,CACVnlM,MAAAA,CAAQA,MACV,CAAA,CACA,GAAI,IAAI,CAACklM,UAAU,CAAC5sU,KAAK,CAAC6sU,MAAM,CAAC9iU,OAAO,CAAC8e,KAAS,CAAA,CAAA,CAAA,CAAG,CACnD,IAAI,CAAC+jT,UAAU,CAAC5sU,IAAK,CAAA,CAAC6sU,MAAM,CAACjrU,IAAI,CAACinB,KAAAA,CAAAA,CAClC8jT,eAAiB,KACnB,CACA,IAAI,CAACG,eAAe,CAAC9sU,IAAAA,CAAK,CAAG,IAAI,CAAC8sU,eAAe,CAAC9sU,IAAK,CAAA,EAAI,CACzD6sU,MAAQ,CAAA,EAAE,CACVnlM,MAAAA,CAAQA,MACV,CACA,CAAA,IAAI,CAAColM,eAAe,CAAC9sU,IAAK,CAAA,CAAC6sU,MAAM,CAACjrU,IAAI,CAACinB,KAAAA,CAAAA,CACvC,OAAO8jT,cACT,CACAI,2BAA4BlE,CAAAA,YAAY,CAAE,CACxC,MAAME,WAAcF,CAAAA,YAAAA,CAAamE,iBAAiB,EAAA,CAClD,MAAM/D,WAAcJ,CAAAA,YAAAA,CAAaoE,iBAAiB,EAAA,CAClD,MAAMC,gBAAmBrE,CAAAA,YAAAA,CAAasE,mBAAmB,EAAA,CACzD,MAAMC,gBAAmBvE,CAAAA,YAAAA,CAAawE,mBAAmB,EAAA,CACzD,MAAMC,cAAiBzE,CAAAA,YAAAA,CAAa0E,oBAAoB,EAAA,CACxD,MAAMC,OAAU,CAAA,IAAI,CAAChD,gBAAgB,CAAChgR,QAAQ,EAAA,CAC9CgjR,OAAQxE,CAAAA,UAAU,CAAC3/T,GAAG,CAAC0/T,WAAY5zT,CAAAA,CAAC,GAAI4zT,WAAYlsT,CAAAA,CAAC,EAAIksT,CAAAA,WAAAA,CAAY/rT,CAAC,EACtEwwT,CAAAA,CAAAA,OAAAA,CAAQtE,eAAe,CAAC7/T,GAAG,CAAC4/T,WAAAA,CAAY9zT,CAAC,EAAA,CAAI8zT,YAAYpsT,CAAC,EAAA,CAAIosT,WAAYjsT,CAAAA,CAAC,IAC3EwwT,OAAQ9wT,CAAAA,KAAK,CAACrT,GAAG,CAAC6jU,gBAAiB/3T,CAAAA,CAAC,EAAI+3T,CAAAA,gBAAAA,CAAiBrwT,CAAC,EAAIqwT,CAAAA,gBAAAA,CAAiBlwT,CAAC,EAAA,CAAA,CAChFwwT,QAAQnE,UAAU,CAAChgU,GAAG,CAAC+jU,iBAAiBj4T,CAAC,EAAA,CAAIi4T,gBAAiBvwT,CAAAA,CAAC,EAAIuwT,CAAAA,gBAAAA,CAAiBpwT,CAAC,EAAA,CAAA,CACrFwwT,QAAQ5mT,MAAM,CAACvd,GAAG,CAACikU,eAAen4T,CAAC,EAAA,CAAIm4T,cAAezwT,CAAAA,CAAC,GAAIywT,cAAetwT,CAAAA,CAAC,EAC3EwwT,CAAAA,CAAAA,QAAQ1E,OAAO,CAAGD,YAAa4E,CAAAA,iBAAiB,GAChD,OAAOD,OACT,CACAE,kCAAAA,CAAmC7E,YAAY,CAAE,CAC/C,MAAME,WAAAA,CAAcF,aAAamE,iBAAiB,EAAA,CAClD,MAAM/D,WAAAA,CAAcJ,aAAaoE,iBAAiB,EAAA,CAClD,MAAMC,gBAAAA,CAAmBrE,aAAasE,mBAAmB,EAAA,CACzD,MAAMC,gBAAAA,CAAmBvE,aAAawE,mBAAmB,EAAA,CACzD,MAAMC,cAAAA,CAAiBzE,aAAa0E,oBAAoB,EAAA,CACxD,MAAMC,OAAAA,CAAU,IAAI,CAAChD,gBAAgB,CAAChgR,QAAQ,GAC9CgjR,OAAQtE,CAAAA,eAAe,CAAC7/T,GAAG,CAAC0/T,WAAY5zT,CAAAA,CAAC,EAAI4zT,CAAAA,WAAAA,CAAYlsT,CAAC,EAAIksT,CAAAA,WAAAA,CAAY/rT,CAAC,EAAA,CAAA,CAC3EwwT,OAAQxE,CAAAA,UAAU,CAAC3/T,GAAG,CAAC4/T,WAAY9zT,CAAAA,CAAC,EAAI8zT,CAAAA,WAAAA,CAAYpsT,CAAC,EAAIosT,CAAAA,WAAAA,CAAYjsT,CAAC,EAAA,CAAA,CACtEwwT,QAAQnE,UAAU,CAAChgU,GAAG,CAAC6jU,iBAAiB/3T,CAAC,EAAA,CAAI+3T,gBAAiBrwT,CAAAA,CAAC,GAAIqwT,gBAAiBlwT,CAAAA,CAAC,EACrFwwT,CAAAA,CAAAA,OAAAA,CAAQ9wT,KAAK,CAACrT,GAAG,CAAC+jU,gBAAAA,CAAiBj4T,CAAC,EAAIi4T,CAAAA,gBAAAA,CAAiBvwT,CAAC,EAAA,CAAIuwT,iBAAiBpwT,CAAC,EAAA,CAAA,CAChFwwT,OAAQ5mT,CAAAA,MAAM,CAACvd,GAAG,CAACikU,cAAen4T,CAAAA,CAAC,GAAIm4T,cAAezwT,CAAAA,CAAC,EAAIywT,CAAAA,cAAAA,CAAetwT,CAAC,EAC3EwwT,CAAAA,CAAAA,OAAQ1E,CAAAA,OAAO,CAAGD,YAAa4E,CAAAA,iBAAiB,EAChD,CAAA,OAAOD,OACT,CACAG,0BAAAA,CAA2Bj9T,CAAC,CAAEC,CAAC,CAAEk4T,YAAY,CAAE,CAC7C,MAAMhoU,MAAS,CAAA,IAAI,CAAC6pU,uBAAuB,CAAClgR,QAAQ,EACpD3pD,CAAAA,OAAO6P,CAAC,CAAGA,CACX7P,CAAAA,OAAO8P,CAAC,CAAGA,CACX9P,CAAAA,OAAOkoU,WAAW,CAAGF,YAAaG,CAAAA,UAAU,CAC5CnoU,MAAAA,CAAOooU,WAAW,CAAGJ,aAAaK,eAClCroU,CAAAA,MAAAA,CAAOsoU,MAAM,CAAGN,YAAAA,CAAansT,KAC7B7b,CAAAA,MAAOuoU,CAAAA,MAAM,CAAGP,YAAAA,CAAaQ,UAAU,CACvCxoU,MAAO+lB,CAAAA,MAAM,CAAGiiT,YAAajiT,CAAAA,MAAM,CACnC/lB,OAAOioU,OAAO,CAAGD,YAAaC,CAAAA,OAAO,CACrC,OAAOjoU,MACT,CACA+sU,oBAAAA,CAAqB/kT,KAAK,CAAE2gT,QAAQ,CAAE,CACpC,MAAM3oU,MAAS,CAAA,IAAI,CAAC4pU,iBAAiB,CAACjgR,QAAQ,EAC9C3pD,CAAAA,MAAAA,CAAOgoB,KAAK,CAAGA,KACfhoB,CAAAA,MAAAA,CAAO2oU,QAAQ,CAAGA,QAAAA,CAClB,OAAO3oU,MACT,CACAgtU,mBAAsB,EAAA,CACpB,IAAI,MAAM7tU,QAAQ,IAAI,CAAC4sU,UAAU,CAAC,CAChC,GAAI,IAAI,CAACA,UAAU,CAACz/T,cAAc,CAACnN,IAAO,CAAA,CAAA,CACxC,MAAM8tU,cAAiB,CAAA,IAAI,CAAChB,eAAe,CAAC9sU,IAAK,CAAA,CACjD,MAAMo3R,SAAAA,CAAY,IAAI,CAACw1C,UAAU,CAAC5sU,IAAAA,CAAK,CACvC,MAAM0nI,MAAAA,CAAS0vJ,SAAU1vJ,CAAAA,MAAM,CAC/B,MAAMqmM,eAAAA,CAAkBrmM,MAAO0vJ,CAAAA,SAAS,CACxC,MAAM42C,eAAAA,CAAkBtmM,MAAOy/G,CAAAA,SAAS,CACxC,MAAM0lF,MAAAA,CAASz1C,SAAUy1C,CAAAA,MAAM,CAC/B,MAAM9rU,MAAAA,CAAS8rU,MAAO9rU,CAAAA,MAAM,CAC5B,IAAID,CAAAA,CAAIC,MACR,CAAA,MAAMD,IAAI,CACR,MAAM+nB,KAAQgkT,CAAAA,MAAM,CAAC/rU,CAAE,CAAA,CACvB,GAAI,CAACgtU,cAAkBA,EAAAA,cAAAA,CAAejB,MAAM,CAAC9iU,OAAO,CAAC8e,KAAAA,CAAAA,CAAS,CAAG,CAAA,CAC/DgkT,OAAOjjU,MAAM,CAAC9I,CAAG,CAAA,CAAA,CAAA,CACjB,GAAI4mI,MAAOokJ,CAAAA,OAAO,CAAE,CAClB,GAAIiiD,eAAiB,CAAA,CACnBA,eAAgB/jU,CAAAA,IAAI,CAAC,cAAgB6e,CAAAA,KAAAA,EACvC,CACA,GAAIA,MAAMs+N,SAAS,CAAE,CACnBt+N,KAAAA,CAAMs+N,SAAS,CAACn9O,IAAI,CAAC,cAAA,CAAgB09H,QACvC,CACF,CAAA,KAAO,GAAI,CAAC7+G,MAAMijQ,OAAO,CAAE,CACzB,GAAIkiD,gBAAiB,CACnBA,eAAAA,CAAgBhkU,IAAI,CAAC,eAAgB6e,KACvC,EAAA,CACA,GAAIklT,eAAAA,CAAiB,CACnBA,eAAgB/jU,CAAAA,IAAI,CAAC,cAAA,CAAgB6e,OACvC,CACF,CACF,CACF,CACA,GAAIgkT,MAAO9rU,CAAAA,MAAM,GAAK,CAAA,CAAG,CACvB,OAAO,IAAI,CAAC6rU,UAAU,CAAC5sU,IAAK,EAC9B,CACF,CACF,CACF,CACAiuU,gBAAAA,CAAiBvmM,MAAM,CAAE,CACvB,MAAMvnI,CAAAA,CAAIunI,MAAO0vJ,CAAAA,SAAS,CAC1B,GAAIj3R,CAAAA,GAAMA,CAAAA,CAAEyK,QAAQ,CAAC,gBAAA,CAAA,EAAqBzK,CAAEyK,CAAAA,QAAQ,CAAC,cAAmBzK,CAAAA,EAAAA,CAAAA,CAAEyK,QAAQ,CAAC,UAAS,CAAI,CAAA,CAC9F,OAAO,IACT,CACA,MAAMxK,CAAAA,CAAIsnI,MAAOy/G,CAAAA,SAAS,CAC1B,OAAO/mP,CAAAA,GAAMA,CAAAA,CAAEwK,QAAQ,CAAC,gBAAA,CAAA,EAAqBxK,CAAEwK,CAAAA,QAAQ,CAAC,cAAmBxK,CAAAA,EAAAA,CAAAA,CAAEwK,QAAQ,CAAC,UAAS,CACjG,CACA2/T,mBAAoB2D,CAAAA,KAAK,CAAEC,QAAQ,CAAE,CACnC,MAAM5mB,cAAgBngE,IAAKgnF,CAAAA,WAAW,CAACF,KAAAA,CAAO9mF,KAAKinF,eAAe,CAAA,CAClE,MAAMxE,UAAAA,CAAatiB,cAAc+mB,aAAa,EAAA,CAC9C,MAAMC,YAAAA,CAAe1E,UAAW2E,CAAAA,eAAe,EAC/C,CAAA,IAAI,CAAC1B,eAAe,CAAG,GACvB,IAAI,IAAIhsU,CAAI,CAAA,CAAA,CAAGA,EAAIytU,YAAcztU,CAAAA,CAAAA,EAAAA,CAAI,CACnC,MAAM2tU,SAAW5E,UAAW6E,CAAAA,0BAA0B,CAAC5tU,CAAAA,CAAAA,CACvD,MAAM6tU,KAAQF,CAAAA,QAAAA,CAASG,QAAQ,EAAA,CAC/B,MAAMC,KAAQJ,CAAAA,QAAAA,CAASK,QAAQ,EAAA,CAC/B,MAAMC,GAAM3nF,CAAAA,IAAAA,CAAK4kF,UAAU,CAAC2C,MAAOvnF,IAAK6jF,CAAAA,WAAW,CACnD,CAAA,MAAM+D,IAAM5nF,IAAK4kF,CAAAA,UAAU,CAAC6C,KAAAA,CAAOznF,KAAK6jF,WAAW,CAAA,CACnD,MAAMgE,EAAAA,CAAKF,IAAIrnM,MAAM,CACrB,MAAMrzG,EAAAA,CAAK26S,IAAItnM,MAAM,CACrB,GAAI,CAACunM,IAAM,CAAC56S,EAAAA,CAAI,CACd,QACF,CACA,MAAM66S,MAAAA,CAASH,GAAIzzC,CAAAA,iBAAiB,GACpC,MAAM6zC,MAAAA,CAASH,GAAI1zC,CAAAA,iBAAiB,GACpC,MAAM8zC,WAAAA,CAAcX,QAASY,CAAAA,cAAc,GAC3C,MAAMC,eAAAA,CAAkB,EAAE,CAC1B,MAAMC,eAAkB,CAAA,EAAE,CAC1B,IAAIC,aACJ,GAAIJ,WAAAA,CAAc,CAAG,CAAA,CACnB,GAAIF,MAASv2C,CAAAA,0BAAAA,EAA8Bw2C,MAASx2C,CAAAA,0BAAAA,CAA4B,CAC9E,MAAM82C,QAAAA,CAAWR,EAAG73C,CAAAA,SAAS,GAAK63C,EAAAA,CAAG73C,SAAS,CAACxsR,QAAQ,CAAC,cAAA,CAAA,EAAmBqkU,EAAG73C,CAAAA,SAAS,CAACxsR,QAAQ,CAAC,cAAc,CAAA,CAAA,CAC/G,MAAM8kU,QAAWr7S,CAAAA,EAAAA,CAAG+iQ,SAAS,GAAK/iQ,EAAG+iQ,CAAAA,SAAS,CAACxsR,QAAQ,CAAC,cAAmBypB,CAAAA,EAAAA,EAAAA,CAAG+iQ,SAAS,CAACxsR,QAAQ,CAAC,cAAA,CAAc,CAC/G,CAAA,MAAM+kU,aAAeV,EAAG9nF,CAAAA,SAAS,GAAK8nF,GAAG9nF,SAAS,CAACv8O,QAAQ,CAAC,iBAAmBqkU,EAAG9nF,CAAAA,SAAS,CAACv8O,QAAQ,CAAC,cAAA,CAAc,CACnH,CAAA,MAAMglU,aAAev7S,EAAG8yN,CAAAA,SAAS,GAAK9yN,GAAG8yN,SAAS,CAACv8O,QAAQ,CAAC,iBAAmBypB,EAAG8yN,CAAAA,SAAS,CAACv8O,QAAQ,CAAC,cAAc,CAAA,CAAA,CACnH,GAAI6kU,QAAAA,CAAU,CACZD,YAAe,CAAA,IAAI,CAAC9C,eAAe,CAACuC,EAAI56S,CAAAA,EAAAA,CAAAA,CACxC,GAAIm7S,YAAAA,EAAgB,EAAEL,MAAAA,CAASx2C,0BAAyB,CAAA,CAAI,CAC1Ds2C,EAAG73C,CAAAA,SAAS,CAACptR,IAAI,CAAC,cAAgBqqB,CAAAA,EAAAA,EACpC,CACF,CACA,GAAIq7S,QAAU,CAAA,CACZF,YAAe,CAAA,IAAI,CAAC9C,eAAe,CAACr4S,EAAI46S,CAAAA,EAAAA,CAAAA,CACxC,GAAIO,YAAgB,EAAA,EAAEN,MAAAA,CAASv2C,0BAAyB,CAAI,CAAA,CAC1DtkQ,EAAG+iQ,CAAAA,SAAS,CAACptR,IAAI,CAAC,cAAgBilU,CAAAA,EAAAA,EACpC,CACF,CACA,GAAIU,YAAc,CAAA,CAChB,GAAI,CAACH,YAAc,CAAA,CACjBA,aAAe,IAAI,CAAC9C,eAAe,CAACr4S,GAAI46S,EAC1C,EAAA,CACA,GAAIO,YAAAA,CAAc,CAChBP,EAAG9nF,CAAAA,SAAS,CAACn9O,IAAI,CAAC,cAAgBqqB,CAAAA,EAAAA,EACpC,CACF,CACA,GAAIu7S,YAAc,CAAA,CAChB,GAAI,CAACJ,aAAc,CACjBA,YAAAA,CAAe,IAAI,CAAC9C,eAAe,CAACuC,EAAAA,CAAI56S,EAC1C,EAAA,CACA,GAAIm7S,YAAc,CAAA,CAChBn7S,EAAG8yN,CAAAA,SAAS,CAACn9O,IAAI,CAAC,cAAgBilU,CAAAA,EAAAA,EACpC,CACF,CACF,CAAA,KAAO,CACL,MAAMQ,SAAW,IAAI,CAACxB,gBAAgB,CAACgB,IACvC,MAAMS,QAAAA,CAAW,IAAI,CAACzB,gBAAgB,CAAC55S,EAAAA,CAAAA,CACvC,MAAMw7S,YAAAA,CAAe,IAAI,CAACjlU,QAAQ,CAAC,SAAA,CAAA,CACnC,GAAIilU,YAAgBJ,EAAAA,QAAAA,EAAYC,QAAU,CAAA,CACxC,IAAI,IAAIroP,CAAI,CAAA,CAAA,CAAGA,EAAI+nP,WAAa/nP,CAAAA,CAAAA,EAAAA,CAAI,CAClC,MAAMyoP,eAAiBrB,QAASsB,CAAAA,eAAe,CAAC1oP,CAAAA,CAAAA,CAChD,MAAMwhP,YAAe,CAAA,IAAI,CAACkE,2BAA2B,CAAC+C,cACtD,CAAA,CAAA,GAAIL,QAAYC,EAAAA,QAAAA,CAAU,CACxBJ,eAAgB1tU,CAAAA,IAAI,CAACinU,YAAAA,CAAAA,CACrB,MAAMmH,mBAAsB,CAAA,IAAI,CAACtC,kCAAkC,CAACoC,cACpEP,CAAAA,CAAAA,eAAAA,CAAgB3tU,IAAI,CAACouU,qBACvB,CACA,GAAIH,YAAc,CAAA,CAChB,MAAMhvU,MAAS,CAAA,IAAI,CAAC8sU,0BAA0B,CAACsB,EAAI56S,CAAAA,EAAAA,CAAIw0S,YACvD,CAAA,CAAA,IAAI,CAAC7+T,IAAI,CAAC,SAAWnJ,CAAAA,MAAAA,EACvB,CACF,CACA,GAAI4uU,QAAU,CAAA,CACZ,MAAMQ,aAAgB,CAAA,IAAI,CAACrC,oBAAoB,CAACv5S,EAAIi7S,CAAAA,eAAAA,CAAAA,CACpDE,YAAe,CAAA,IAAI,CAAC9C,eAAe,CAACuC,EAAI56S,CAAAA,EAAAA,CAAAA,CACxC,GAAI46S,EAAG73C,CAAAA,SAAS,CAAE,CAChB63C,GAAG73C,SAAS,CAACptR,IAAI,CAAC,UAAWimU,aAC7B,CAAA,CAAA,GAAIT,YAAc,CAAA,CAChBP,GAAG73C,SAAS,CAACptR,IAAI,CAAC,iBAAkBimU,aACtC,EAAA,CACF,CACA,GAAIhB,GAAG9nF,SAAS,CAAE,CAChB8nF,EAAAA,CAAG9nF,SAAS,CAACn9O,IAAI,CAAC,SAAA,CAAWimU,eAC7B,GAAIT,YAAAA,CAAc,CAChBP,EAAAA,CAAG9nF,SAAS,CAACn9O,IAAI,CAAC,gBAAA,CAAkBimU,eACtC,CACF,CACF,CACA,GAAIP,SAAU,CACZ,MAAMQ,aAAgB,CAAA,IAAI,CAACtC,oBAAoB,CAACqB,EAAIM,CAAAA,eAAAA,CAAAA,CACpDC,aAAe,IAAI,CAAC9C,eAAe,CAACr4S,GAAI46S,EACxC,CAAA,CAAA,GAAI56S,EAAG+iQ,CAAAA,SAAS,CAAE,CAChB/iQ,EAAAA,CAAG+iQ,SAAS,CAACptR,IAAI,CAAC,SAAA,CAAWkmU,aAC7B,CAAA,CAAA,GAAIV,YAAc,CAAA,CAChBn7S,EAAG+iQ,CAAAA,SAAS,CAACptR,IAAI,CAAC,gBAAkBkmU,CAAAA,aAAAA,EACtC,CACF,CACA,GAAI77S,EAAG8yN,CAAAA,SAAS,CAAE,CAChB9yN,EAAAA,CAAG8yN,SAAS,CAACn9O,IAAI,CAAC,SAAA,CAAWkmU,aAC7B,CAAA,CAAA,GAAIV,aAAc,CAChBn7S,EAAAA,CAAG8yN,SAAS,CAACn9O,IAAI,CAAC,gBAAA,CAAkBkmU,aACtC,EAAA,CACF,CACF,CACF,CACF,CACF,CACF,CACA,IAAI,CAACrC,mBAAmB,EAAA,CACxB,IAAI,CAACrD,gBAAgB,CAAC7F,OAAO,GAC7B,IAAI,CAAC8F,iBAAiB,CAAC9F,OAAO,EAC9B,CAAA,IAAI,CAAC+F,uBAAuB,CAAC/F,OAAO,GACtC,CACArnD,QAAAA,CAAS3+J,EAAE,CAAE,CACX,IAAI79G,CAAAA,CAAGkY,GACP,CAAA,IAAI,CAACm3T,eAAe,CAAC,CAAE,CAAA,CAAG,IAAI,CAACtzH,OAAO,CAAC1nM,CAAC,CACxC,IAAI,CAACg7T,eAAe,CAAC,CAAA,CAAE,CAAG,IAAI,CAACtzH,OAAO,CAAChgM,CAAC,CACxC,IAAI,CAACszT,eAAe,CAAC,CAAA,CAAE,CAAG,IAAI,CAACtzH,OAAO,CAAC7/L,CAAC,CACxC,MAAM6/L,OAAU,CAAA,IAAI,CAAC0qG,aAAa,CAAC6oB,UAAU,EAAA,CAC7C,GAAIvzH,OAAAA,CAAQ1nM,CAAC,EAAO,GAAA,IAAI,CAACg7T,eAAe,CAAC,CAAE,CAAA,EAAItzH,OAAQhgM,CAAAA,CAAC,KAAO,IAAI,CAACszT,eAAe,CAAC,EAAE,EAAItzH,OAAAA,CAAQ7/L,CAAC,EAAA,GAAO,IAAI,CAACmzT,eAAe,CAAC,CAAA,CAAE,CAAE,CACjItzH,OAAAA,CAAQpkK,QAAQ,CAAC,IAAI,CAACokK,OAAO,CAAC1nM,CAAC,CAAE,IAAI,CAAC0nM,OAAO,CAAChgM,CAAC,CAAE,IAAI,CAACggM,OAAO,CAAC7/L,CAAC,CAC/D,CAAA,IAAI,CAACuqS,aAAa,CAAC8oB,UAAU,CAACxzH,SAChC,CACA,MAAMyzH,QAAW,CAAA,IAAI,CAAC30C,SAAS,CAC/B,IAAI76R,CAAAA,CAAI,EAAGkY,GAAMs3T,CAAAA,QAAAA,CAASvvU,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC7CwvU,QAAQ,CAACxvU,CAAE,CAAA,CAAC26R,eAAe,GAC7B,CACA,MAAM80C,SAAAA,CAAY,IAAI,CAAC9I,UAAU,CACjC,IAAI3mU,CAAI,CAAA,CAAA,CAAGkY,IAAMu3T,SAAUxvU,CAAAA,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC9CyvU,SAAS,CAACzvU,EAAE,CAACu2R,eAAe,GAC9B,CACA,MAAMm5C,SAAY,CAAA,IAAI,CAAChJ,UAAU,CACjC,IAAI1mU,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMw3T,UAAUzvU,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAC9C0vU,SAAS,CAAC1vU,CAAAA,CAAE,CAACunU,gBAAgB,GAC/B,CACA,IAAI,CAAC9gB,aAAa,CAACkpB,cAAc,CAAC9xN,GAAI,IAAI,CAAC8rF,WAAW,CAAE,IAAI,CAACD,aAAa,CAC1E,CAAA,MAAMlkE,QAAU,IAAI,CAACghM,QAAQ,CAC7B,IAAIxmU,CAAI,CAAA,CAAA,CAAGkY,GAAMstH,CAAAA,OAAAA,CAAQvlI,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC5CwlI,OAAO,CAACxlI,CAAE,CAAA,CAAConU,cAAc,GAC3B,CACA,GAAI,CAAC,IAAI,CAAC3gB,aAAa,CAAC6iB,uBAAuB,CAAE,CAC/C,IAAI,CAACG,mBAAmB,CAACnjF,IAAK4vC,CAAAA,UAAU,CAAC,IAAI,CAACuwB,aAAa,CAAA,CAAG5oM,EAChE,EAAA,CACF,CACA10E,OAAU,EAAA,CACR,KAAK,CAACA,UACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,SAAU,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,CAClD,CAAA,GAAI,OAAOl2B,IAAAA,GAAS,YAAa,CAC/BA,IAAAA,CAAKn9M,OAAO,CAAC,IAAI,CAACs9Q,aAAa,CAC/BngE,CAAAA,IAAAA,CAAKn9M,OAAO,CAAC,IAAI,CAACggS,MAAM,EACxB7iF,IAAKn9M,CAAAA,OAAO,CAAC,IAAI,CAAC8/R,oBAAoB,CAAA,CACtC3iF,IAAKn9M,CAAAA,OAAO,CAAC,IAAI,CAAC4/R,UAAU,CAAA,CAC5BziF,KAAKn9M,OAAO,CAAC,IAAI,CAAC0/R,sBAAsB,CACxCviF,CAAAA,IAAAA,CAAKn9M,OAAO,CAACu+R,cACbphF,IAAKn9M,CAAAA,OAAO,CAACw+R,UAAAA,CACb,CAAA,IAAI,CAAClhB,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC0iB,MAAM,CAAG,IACd,CAAA,IAAI,CAACF,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACF,UAAU,CAAG,IAClB,CAAA,IAAI,CAACF,sBAAsB,CAAG,KAC9BnB,YAAe,CAAA,IAAA,CACfC,UAAa,CAAA,IAAA,CACbtD,mBAAmBC,YAAY,GACjC,CACF,CAvdAv8T,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAM,CAAA,CAAA,IAAI,CAACrmC,WAAW,CAAG,EAAI,CAAA,IAAI,CAACD,aAAa,CAAG,CAAI,CAAA,EAAA,CAAI,IAAI,CAACqS,OAAO,CAAG,IAAI9/L,IAAK,CAAA,CAAA,CAAG,CAAC,IAAM,CAAA,CAAA,CAAA,CAAI,IAAI,CAACozT,eAAe,CAAG,IAAIx1T,YAAa,CAAA,CAAA,CAAA,CAAI,IAAI,CAAC2sT,QAAQ,CAAG,EAAE,CAAE,IAAI,CAACE,UAAU,CAAG,EAAE,CAAE,IAAI,CAAC7rC,SAAS,CAAG,EAAE,CAAE,IAAI,CAAC8rC,UAAU,CAAG,EAAE,CACrO,IAAI,CAAC38R,EAAE,CAAG,WACV,CAAA,IAAI,CAAC6kI,MAAM,CAAGmhE,GAAIphE,CAAAA,KAAK,CAACkwC,KAAK,CAC7B,IAAI,CAACsvD,aAAa,CAAGi2D,kBACrB,CAAA,IAAI,CAAC/1D,QAAQ,CAAGm5D,sBAChB,CAAA,IAAI,CAACiC,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACC,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACC,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAAClpF,MAAM,CAAGioF,SACd,CAAA,IAAI,CAACmD,UAAU,CAAG,EAClB,CAAA,IAAI,CAACE,eAAe,CAAG,GACvB,IAAI,CAAC3kU,EAAE,CAAC,eAAgB,IAAI,CAAC60Q,cAAc,CAAE,IAAI,EACnD,CA2cF,CA5dM0sD,yBAEG1xC,aAAa,CAAG,SA2dzBvpB,CAAAA,SAAAA,CAAUC,eAAe,CAACy2D,kBAAAA,CAAmBhyM,SAAS,CAAEs2M,WAExD,MAAMiH,cAAAA,CAAiB,MACvB,CAAA,MAAMC,gBAAkB,OAExB,CAAA,MAAMC,UAAa,CAAA,IAAIvtT,IACvB,CAAMwtT,MAAAA,eAAAA,SAAwBpiE,SAe5BoxC,CAAAA,aAAAA,EAAgB,CACd,IAAI,CAAChjE,MAAM,CAACi0F,kBAAkB,CAAC,IAAI,CAACppM,MAAM,CAACm8G,OAAO,EAAA,CAAI,IAAI,CAACktF,qBAAqB,CAAE,IAAI,EACxF,CACAC,sBAAsB/tU,CAAC,CAAEnC,CAAC,CAAE,CAC1B,GAAI,EAAEmC,CAAAA,YAAaogP,MAAK,CAAI,CAAA,CAC1B,OAAOviP,CACT,CACA,GAAImC,CAAAA,CAAEw5C,OAAO,CAAE,CACb,MAAMw0R,aAAAA,CAAgBhuU,CAAEw5C,CAAAA,OAAO,CAACm5F,SAChC3yI,CAAAA,CAAAA,CAAEw5C,OAAO,CAACm5F,SAAS,CAAG90I,CAAAA,EAAAA,CACtB,GAAImC,CAAAA,CAAEw5C,OAAO,CAACs/P,aAAa,EAAI,CAAA,EAAKk1B,aAAkBhuU,GAAAA,CAAAA,CAAEw5C,OAAO,CAACm5F,SAAS,CAAE,CACzE,IAAI,CAACinG,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE9vG,cAAex0I,CAAAA,CAAAA,CAAEw5C,OAAO,CAACs/P,aAAa,EACjE,CACF,CACA,GAAI94S,CAAAA,CAAEo+T,cAAc,CAAE,CACpBp+T,CAAEo+T,CAAAA,cAAc,CAACzrL,SAAS,CAAG90I,CAC/B,GAAA,CACA,MAAMslJ,QAAAA,CAAWnjJ,EAAEmjJ,QAAQ,CAC3B,IAAI,IAAI/+D,EAAI,CAAGA,CAAAA,CAAAA,CAAI++D,QAASrlJ,CAAAA,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACtCvmF,CAAI,CAAA,IAAI,CAACkwU,qBAAqB,CAAC5qL,QAAQ,CAAC/+D,EAAE,CAAEvmF,CAAAA,EAC9C,CACA,OAAOA,CACT,CACAiwU,qBAAAA,EAAwB,CACtB,MAAMjwU,EAAI,CACV,CAAA,IAAI,CAACkwU,qBAAqB,CAAC,IAAI,CAACtpM,MAAM,CAAE5mI,CACxC,CAAA,CAAA,IAAI,CAACkJ,IAAI,CAAC,eACZ,EAAA,CACAknU,qBAAwB,EAAA,CACtB,MAAM7wT,CAAI,CAAA,IAAI,CAAC8wT,WAAW,CAACh8T,CAAC,CAAG,IAAI,CAACiO,KAAK,CACzC,MAAMmR,CAAI,CAAA,IAAI,CAAC48S,WAAW,CAACt0T,CAAC,CAAG,IAAI,CAACuG,KAAK,CACzC,MAAMnT,KAAO,CACb,CAAA,MAAMC,KAAQmQ,CAAAA,CAAAA,CACd,MAAMkF,MAAS,CAAA,CAACgP,CAChB,CAAA,MAAM/O,IAAM,CACZ,CAAA,MAAMQ,IAAO,CAAA,CAAA,CACb,MAAMC,GAAM,CAAA,CAAC,CACb,CAAA,IAAI,CAACk4R,aAAa,CAACp4R,QAAQ,CAAC9V,KAAMC,KAAOqV,CAAAA,MAAAA,CAAQC,GAAKQ,CAAAA,IAAAA,CAAMC,KAC5D,GAAI,CAAC,IAAI,CAACmtH,YAAY,CAAE,CACtBw9L,UAAWrqT,CAAAA,QAAQ,CAAC,EAAA,CAAMlG,CAAG,CAAA,EAAA,CAAMkU,EAAG,CACtC,CAAA,CAAA,IAAI,CAAC4pR,aAAa,CAAC9/R,IAAI,CAACuyT,UAAY,CAAA,IAAI,CAACzyB,aAAa,EACxD,CACF,CACAizB,cAAe,CACb,IAAI,CAAChuT,KAAK,CAAG,IAAI,CAACiuT,UAAU,CAAC,IAAI,CAACF,WAAW,CAAE,IAAI,CAACG,mBAAmB,EACzE,CACAD,UAAAA,CAAW76K,UAAU,CAAE86K,mBAAmB,CAAE,CAC1C,MAAMj0T,EAAKhd,CAAAA,IAAAA,CAAKoV,IAAI,CAAC,CAAC+gJ,UAAAA,CAAWrhJ,CAAC,EAAI,CAAA,EAAKm8T,mBAAAA,CAAoBn8T,CAAC,CAAA,CAChE,MAAMmI,EAAKjd,CAAAA,IAAAA,CAAKoV,IAAI,CAAC,CAAC+gJ,UAAAA,CAAW35I,CAAC,EAAI,CAAA,EAAKy0T,mBAAAA,CAAoBz0T,CAAC,CAAA,CAChE,OAAOxc,IAAKkV,CAAAA,GAAG,CAAC,CAAA,CAAG8H,IAAM,CAAA,CAAI,IAAI,CAACk0T,WAAW,CAAD,CAAKj0T,EAAK,CAAA,IAAI,CAACi0T,WAAW,CACxE,CACAC,SAAAA,CAAU/qT,KAAK,CAAEC,MAAM,CAAE,CACvB,GAAI,IAAI,CAAC0sH,YAAY,CAAE,CACrB,IAAI,CAAC+9L,WAAW,CAAC9nU,GAAG,CAACod,KAAAA,CAAOC,MAC5B,CAAA,CAAA,IAAI,CAAC8vI,UAAU,CAAG,IAAI,CAAC26K,YACzB,CACF,CACA1xB,aAAahjQ,OAAO,CAAE,CACpB,IAAI,CAAChC,SAAS,CAACrpC,GAAG,CAACqrC,SACrB,CACAkjQ,cAAAA,CAAeljQ,OAAO,CAAE,CACtB,IAAI,CAAChC,SAAS,CAAC9wC,MAAM,CAAC8yC,OAAAA,EACxB,CACAu3O,QAAAA,EAAW,CACT,IAAI,CAACn3C,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAC3iC,GAAG,CAAC,cAAA,CAAgB,IAAI,CAACypU,SAAS,CAAE,IAAI,CACvE,CAAA,IAAI,CAACxnU,IAAI,CAAC,QACV,CAAA,CAAA,IAAI,CAACywC,SAAS,CAAChtC,OAAO,CAAC,OAAWgvC,EAAAA,OAAAA,CAAQyjQ,eAAe,EAAA,CAAA,CACzD,IAAI,CAACzlQ,SAAS,CAAC/wC,KAAK,GACpB,IAAI,CAAC3B,GAAG,GACV,CACA,IAAIyuJ,UAAAA,CAAW/tJ,KAAK,CAAE,CACpB,GAAI,CAAC,IAAI,CAAC2qI,YAAY,CAAE,CACtB,IAAI,CAAC+9L,WAAW,CAAC9nU,GAAG,CAACZ,KAAAA,CAAM0M,CAAC,CAAE1M,KAAAA,CAAMoU,CAAC,EACvC,MAAO,CACL,IAAI,CAACs0T,WAAW,CAAC9nU,GAAG,CAAC,IAAI,CAACwzO,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAACjkB,KAAK,CAAE,IAAI,CAACo2N,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAChkB,MAAM,EAClG,CACA,IAAI,CAAC0qT,YAAY,EACjB,CAAA,IAAI,CAACF,qBAAqB,EAAA,CAC1B,GAAI,CAAC,IAAI,CAACxpM,MAAM,CAACkgB,WAAW,CAAE,CAC5B,IAAI,CAAClgB,MAAM,CAAC8hB,aAAa,GAC3B,CACA,IAAI,CAACx/I,IAAI,CAAC,gBAAkB,CAAA,IAAI,CAACmnU,WAAW,CAAA,CAC5C,IAAI,CAAC12R,SAAS,CAAChtC,OAAO,CAAEgvC,SAAUA,OAAQwjQ,CAAAA,eAAe,CAAC,IAAI,CAACkxB,WAAW,CAAA,EAC5E,CACA,IAAI36K,YAAa,CACf,OAAO,IAAI,CAAC26K,WAAW,CAEzB,IAAIG,mBAAAA,CAAoB7oU,KAAK,CAAE,CAC7B,IAAI,CAACgpU,oBAAoB,CAACpoU,GAAG,CAACZ,KAAAA,CAAM0M,CAAC,CAAE1M,KAAMoU,CAAAA,CAAC,EAC9C,IAAI,CAACu0T,YAAY,EAAA,CACjB,IAAI,CAACF,qBAAqB,EAC1B,CAAA,GAAI,CAAC,IAAI,CAACxpM,MAAM,CAACkgB,WAAW,CAAE,CAC5B,IAAI,CAAClgB,MAAM,CAAC8hB,aAAa,GAC3B,CACA,IAAI,CAACx/I,IAAI,CAAC,yBAAA,CAA2B,IAAI,CAACmnU,WAAW,CACrD,CAAA,IAAI,CAAC12R,SAAS,CAAChtC,OAAO,CAAC,OAAWgvC,EAAAA,OAAAA,CAAQwjQ,eAAe,CAAC,IAAI,CAACkxB,WAAW,CAC5E,EAAA,CACA,IAAIG,mBAAsB,EAAA,CACxB,GAAI,IAAI,CAACI,UAAU,GAAKhB,cAAgB,CAAA,CACtC,OAAO,IAAI,CAACS,WACd,CACA,OAAO,IAAI,CAACM,oBAAoB,CAElC,IAAIt+L,WAAY1qI,CAAAA,KAAK,CAAE,CACrB,IAAI,CAAC2qI,YAAY,CAAG3qI,KACpB,CAAA,GAAI,IAAI,CAAC2qI,YAAY,CAAE,CACrB,IAAI,CAAC+9L,WAAW,CAAC9nU,GAAG,CAAC,IAAI,CAACwzO,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAACjkB,KAAK,CAAE,IAAI,CAACo2N,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAChkB,MAAM,EAClG,CACA,IAAI,CAAC8vI,UAAU,CAAG,IAAI,CAAC26K,WAAW,CAClC,GAAI,CAAC,IAAI,CAACzpM,MAAM,CAACkgB,WAAW,CAAE,CAC5B,IAAI,CAAClgB,MAAM,CAAC8hB,aAAa,GAC3B,CACA,IAAI,CAACx/I,IAAI,CAAC,iBAAmB,CAAA,IAAI,CAACopI,YAAY,CAAA,CAC9C,IAAI,CAAC34F,SAAS,CAAChtC,OAAO,CAAEgvC,OAAUA,EAAAA,OAAAA,CAAQsmP,oBAAoB,EAAA,EAChE,CACA,IAAI5vJ,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIu+L,SAAUlpU,CAAAA,KAAK,CAAE,CACnB,GAAIA,KAAUioU,GAAAA,cAAAA,EAAkBjoU,KAAUkoU,GAAAA,eAAAA,CAAiB,CACzDloU,KAAQioU,CAAAA,eACV,CACA,GAAI,CAAC,IAAI,CAACt9L,YAAY,EAAI3qI,QAAUioU,cAAgB,CAAA,CAClDjoU,KAAQioU,CAAAA,eACV,CACA,IAAI,CAACgB,UAAU,CAAGjpU,KAClB,CAAA,IAAI,CAAC+tJ,UAAU,CAAG,IAAI,CAAC26K,WAAW,CAClC,IAAI,CAACnnU,IAAI,CAAC,eAAA,CAAiB,IAAI,CAAC0nU,UAAU,EAC5C,CACA,IAAIC,SAAY,EAAA,CACd,OAAO,IAAI,CAACD,UACd,CACA,IAAIE,WAAWnpU,KAAK,CAAE,CACpB,IAAI,CAAC8oU,WAAW,CAAG9oU,KACnB,CAAA,IAAI,CAAC2oU,YAAY,EAAA,CACjB,IAAI,CAACF,qBAAqB,EAC1B,CAAA,GAAI,CAAC,IAAI,CAACxpM,MAAM,CAACkgB,WAAW,CAAE,CAC5B,IAAI,CAAClgB,MAAM,CAAC8hB,aAAa,GAC3B,CACA,IAAI,CAACx/I,IAAI,CAAC,gBAAA,CAAkB,IAAI,CAACunU,WAAW,CAC5C,CAAA,IAAI,CAAC92R,SAAS,CAAChtC,OAAO,CAAC,OAACgvC,EAAUA,QAAQwjQ,eAAe,CAAC,IAAI,CAACkxB,WAAW,CAC5E,EAAA,CACA,IAAIS,UAAAA,EAAa,CACf,OAAO,IAAI,CAACL,WAAW,CAEzB,IAAI1vJ,QAASp5K,CAAAA,KAAK,CAAE,CAClB,GAAIA,KAAQ,CAAA,GAAA,CAAM,CAChBA,KAAQ,CAAA,IACV,CACA,GAAI,IAAI,CAACm5Q,SAAS,GAAKn5Q,KAAAA,CAAO,CAC5B,MACF,CACA,IAAI,CAACm5Q,SAAS,CAAGn5Q,KACjB,CAAA,IAAI,CAACo3S,aAAa,GACpB,CACA,IAAIh+H,UAAW,CACb,OAAO,IAAI,CAAC+/F,SAAS,CA1KvB/4Q,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAQn1G,CAAAA,MAAAA,CACd,CAAA,IAAI,CAACypM,WAAW,CAAG,IAAIxuT,IAAAA,CAAK,IAAK,GACjC,CAAA,CAAA,IAAI,CAAC8uT,oBAAoB,CAAG,IAAI9uT,IAAK,CAAA,GAAA,CAAK,IAC1C,CAAA,IAAI,CAAC+uT,UAAU,CAAGhB,cAClB,CAAA,IAAI,CAACttT,KAAK,CAAG,CACb,CAAA,IAAI,CAACmuT,WAAW,CAAG,EACnB,CAAA,IAAI,CAAC3vD,SAAS,CAAG,CACjB,CAAA,IAAI,CAACxuI,YAAY,CAAG,KACpB,CAAA,IAAI,CAACiB,IAAI,CAAG,IAAI,CAACjB,YACjB,CAAA,IAAI,CAAC+qK,aAAa,CAAG,IAAI96R,IACzB,CAAA,IAAI,CAACo3B,SAAS,CAAG,IAAI5mC,GACrBgpO,CAAAA,MAAAA,CAAO/L,GAAG,CAACpmM,cAAc,CAACviC,EAAE,CAAC,cAAgB,CAAA,IAAI,CAACqpU,SAAS,CAAE,IAAI,EACnE,CA+JF,CAEA,MAAMK,mBACJhpU,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMm+T,SAAAA,CAAY,CAChB,SAAA,CACD,CACKC,MAAAA,qBAAAA,SAA8B9iE,eAalCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,GAAInqI,IAAK+mK,CAAAA,QAAQ,GAAKj5K,SAAWs5O,CAAAA,SAAAA,CAAUrgE,QAAQ,CAAG/mK,KAAK+mK,QAAQ,CACnE,GAAI/mK,IAAAA,CAAKq4H,WAAW,GAAKvqI,SAAWs5O,CAAAA,SAAAA,CAAU/uG,WAAW,CAAGr4H,IAAAA,CAAKq4H,WACjE+uG,CAAAA,SAAU7tG,CAAAA,IAAI,CAAG6tG,SAAAA,CAAU/uG,WAAW,CACtC,GAAIr4H,IAAK62T,CAAAA,SAAS,GAAK/oU,SAAWs5O,CAAAA,SAAAA,CAAUyvF,SAAS,CAAG72T,KAAK62T,SAAS,CACtE,GAAI72T,IAAAA,CAAK82T,UAAU,GAAKhpU,SAAAA,CAAWs5O,SAAU0vF,CAAAA,UAAU,CAAG92T,IAAK82T,CAAAA,UAAU,CACzE,GAAI92T,KAAK07I,UAAU,GAAK5tJ,SAAW,CAAA,CACjC,GAAIkS,IAAK07I,CAAAA,UAAU,YAAY7zI,IAAAA,CAAM,CACnCu/N,SAAUivF,CAAAA,WAAW,CAACtxU,IAAI,CAACib,IAAK07I,CAAAA,UAAU,EAC5C,CAAA,KAAO,CACL0rF,SAAUivF,CAAAA,WAAW,CAAC9nU,GAAG,CAACyR,IAAK07I,CAAAA,UAAU,CAAC,CAAA,CAAE,CAAE17I,IAAK07I,CAAAA,UAAU,CAAC,CAAA,CAAE,EAClE,CACA0rF,SAAAA,CAAU1rF,UAAU,CAAG0rF,SAAUivF,CAAAA,YAAW,CAE9C,GAAIr2T,IAAKw2T,CAAAA,mBAAmB,GAAK1oU,SAAAA,CAAW,CAC1C,GAAIkS,IAAAA,CAAKw2T,mBAAmB,YAAY3uT,KAAM,CAC5Cu/N,SAAAA,CAAUuvF,oBAAoB,CAAC5xU,IAAI,CAACib,IAAAA,CAAKw2T,mBAAmB,EAC9D,MAAO,CACLpvF,SAAAA,CAAUuvF,oBAAoB,CAACpoU,GAAG,CAACyR,IAAAA,CAAKw2T,mBAAmB,CAAC,EAAE,CAAEx2T,IAAAA,CAAKw2T,mBAAmB,CAAC,EAAE,EAC7F,CACApvF,SAAUovF,CAAAA,mBAAmB,CAAGpvF,SAAUuvF,CAAAA,qBAAoB,CAEhEvvF,UAAU29D,aAAa,EAAA,CACvB,KAAK,CAACxwC,wBAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAMg3T,SACjD,EAAA,CACA7nS,SAAU,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAAC6mM,GAAG,CAACpmM,cAAc,CAAC3iC,GAAG,CAAC,cAAgB,CAAA,IAAI,CAACypU,SAAS,CAAE,IAAI,CAAA,CAChE,IAAI,CAAC1gG,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAA,CAAU,IAAI,CAACiqU,SAAS,CAAE,IAAI,EACrD,CACAA,SAAAA,CAAUrzN,EAAE,CAAE,CACZ,MAAM/jE,UAAAA,CAAa,IAAI,CAAC0Z,KAAK,CAC7B,IAAI,MAAMxpB,EAAAA,IAAM8P,WAAW,CACzB,GAAIA,UAAU,CAAC9P,GAAG,CAAC48F,MAAM,CAAC27J,MAAM,CAACnvP,MAAM,CAAE0G,UAAU,CAAC9P,GAAG,CAAC48F,MAAM,CAAC27J,MAAM,CAACnvP,MAAM,CAACyqE,EAC/E,EAAA,CACF,CACA6yN,SAAU/qT,CAAAA,KAAK,CAAEC,MAAM,CAAE,CACvB,IAAI,CAACurT,gBAAgB,CAAC98T,CAAC,CAAGsR,KAC1B,CAAA,IAAI,CAACwrT,gBAAgB,CAACp1T,CAAC,CAAG6J,OAC5B,CACAk+N,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMitR,OAAS37J,MAAO27J,CAAAA,MAAM,CAC5B,OAAO,IAAI,CAAC//C,YAAY,CAACltO,KAAAA,CAAO,CAC9BzC,OAAS0vR,CAAAA,MAAAA,CAAO1vR,OAAO,CACvBw/H,YAAakwJ,MAAOlwJ,CAAAA,WAAW,CAC/Bw+L,SAAAA,CAAWtuC,OAAOsuC,SAAS,CAC3BC,UAAYvuC,CAAAA,MAAAA,CAAOuuC,UAAU,CAC7B/vJ,QAAAA,CAAUwhH,MAAOxhH,CAAAA,QAAQ,CACzBrrB,UAAY6sI,CAAAA,MAAAA,CAAO7sI,UAAU,CAACpgJ,KAAK,EACnCk7T,CAAAA,mBAAAA,CAAqBjuC,MAAOiuC,CAAAA,mBAAmB,CAACl7T,KAAK,EACvD,CACF,CAAA,CACAisS,kBAAkB36K,MAAM,CAAEw6G,SAAS,CAAE,CACnCA,SAAU8xC,CAAAA,QAAQ,GACpB,CACAk+C,2BAA4B,CAC1B,MAAM7mU,IAAO,CAAA,IAAI,CAAC8mU,mBAAmB,CAAC9mU,IAAI,EAAA,CAC1C,IAAI,IAAIvK,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIuK,KAAKtK,MAAM,CAAED,CAAI,EAAA,CAAA,CAClC,MAAMgK,IAAAA,CAAOO,IAAI,CAACvK,EAAE,CACpBgK,IAAAA,CAAK1C,QAAQ,CAACsC,IAAI,CAACI,IAAAA,CAAKzC,KAAK,EAC/B,CACA,IAAI,CAAC8pU,mBAAmB,CAACzoU,KAAK,GAChC,CACAonU,kBAAmBhmS,CAAAA,EAAE,CAAEsoM,EAAE,CAAE/qO,KAAK,CAAE,CAChC,GAAI,CAAC,IAAI,CAAC8pU,mBAAmB,CAAC9mU,IAAI,EAAGtK,CAAAA,MAAM,CAAE,CAC3C,IAAI,CAAC+vO,GAAG,CAACvoO,IAAI,CAAC,WAAa,CAAA,IAAI,CAAC2pU,yBAAyB,CAAE,IAAI,EACjE,CACA,GAAI,CAAC,IAAI,CAACC,mBAAmB,CAAC/oU,GAAG,CAAC0hC,EAAAA,CAAAA,CAAK,CACrC,IAAI,CAACqnS,mBAAmB,CAACvwU,IAAI,CAACkpC,EAAAA,CAAI,CAChC1iC,QAAAA,CAAUgrO,GACV/qO,KAAOA,CAAAA,KACT,CACF,EAAA,CACF,CArFAQ,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAG2hE,eACrB,CAAA,IAAI,CAACzhE,QAAQ,CAAGyiE,mBAChB,CAAA,IAAI,CAACrwF,MAAM,CAAGswF,SACd,CAAA,IAAI,CAACG,gBAAgB,CAAG,IAAItvT,IAC5B,CAAA,IAAI,CAACwvT,mBAAmB,CAAG,IAAItnU,YAC/B,IAAI,CAACimO,GAAG,CAACpmM,cAAc,CAACviC,EAAE,CAAC,cAAA,CAAgB,IAAI,CAACqpU,SAAS,CAAE,IAAI,EAC/D,IAAI,CAAC1gG,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAA,CAAU,IAAI,CAAC6pU,SAAS,CAAE,IAAI,EAClD,IAAI,CAAC7pU,EAAE,CAAC,cAAgB,CAAA,IAAI,CAACk6S,iBAAiB,CAAE,IAAI,EACtD,CA2EF,CACA5zC,UAAUC,eAAe,CAACmiE,eAAgB19M,CAAAA,SAAS,CAAE2+M,SAErD,CAAA,CAAA,MAAMM,oBAAuB,CAAA,IAAIzvT,KACjC,MAAM0vT,mBAAAA,CAAsB,IAAIt1T,IAAAA,CAChC,MAAMu1T,IAAO,CAAA,IAAI3+S,GACjB,CAAA,MAAM4+S,OAAS,IAAIlgT,KAAAA,CACnB,MAAMmgT,OAAAA,CAAU,IAAIz1T,IACpB,CAAA,MAAMygQ,MAAS,CAAA,IAAIzgQ,KACnB,MAAM01T,eAAAA,CAAkB,IAAI9pT,IAAAA,CAC5B,MAAM+pT,aAAgB,CAAA,CACpBv9T,CAAG,CAAA,GAAA,CACH0H,EAAG,GACL,CACA,CAAM81T,MAAAA,iBAAAA,SAA0B5pU,aA8B9BomR,yBAA0BC,CAAAA,OAAO,CAAE,CACjC,IAAI,CAAC71K,QAAQ,CAAC61K,OAAAA,CAAQ,CAAC,WAAa,CAAA,IAAI,CAACwjD,wBAAwB,CAAE,IAAI,CAAA,CACvE,IAAI,CAACr5N,QAAQ,CAAC61K,OAAAA,CAAQ,CAAC,YAAA,CAAc,IAAI,CAACwjD,wBAAwB,CAAE,IAAI,EACxE,IAAI,CAACr5N,QAAQ,CAAC61K,QAAQ,CAAC,aAAA,CAAe,IAAI,CAACwjD,wBAAwB,CAAE,IAAI,EAC3E,CACAC,qBAAqBzjD,OAAO,CAAE,CAC5B,MAAM0jD,KAAO1jD,OAAY,GAAA,IAAA,CACzB,GAAI,IAAI,CAAC2jD,iBAAiB,EAAID,IAAM,CAAA,CAClC,MACF,CACA,GAAI,IAAI,CAAC78F,IAAI,CAAC96H,KAAK,CAAE,CACnB,IAAI,CAAC5B,QAAQ,CAAC61K,OAAAA,CAAQ,CAAC,WAAa,CAAA,IAAI,CAAC4jD,OAAO,CAAE,IAAI,CAAA,CACtD,IAAI,CAACz5N,QAAQ,CAAC61K,OAAAA,CAAQ,CAAC,SAAA,CAAW,IAAI,CAAC6jD,oBAAoB,CAAE,IAAI,EACnE,CACA,GAAI9uU,QAASR,CAAAA,KAAK,CAAE,CAClB,IAAI,CAAC41G,QAAQ,CAAC61K,OAAAA,CAAQ,CAAC,WAAA,CAAa,IAAI,CAAC4jD,OAAO,CAAE,IAAI,EACtD,IAAI,CAACz5N,QAAQ,CAAC61K,QAAQ,CAAC,UAAA,CAAY,IAAI,CAAC6jD,oBAAoB,CAAE,IAAI,CAClE,CAAA,IAAI,CAAC15N,QAAQ,CAAC61K,OAAQ,CAAA,CAAC,cAAe,IAAI,CAAC6jD,oBAAoB,CAAE,IAAI,EACvE,CACA,IAAI,CAAC15N,QAAQ,CAAC61K,OAAAA,CAAQ,CAAC,YAAA,CAAc,IAAI,CAAC4jD,OAAO,CAAE,IAAI,EACvD,IAAI,CAACz5N,QAAQ,CAAC61K,QAAQ,CAAC,WAAA,CAAa,IAAI,CAAC6jD,oBAAoB,CAAE,IAAI,CACnE,CAAA,IAAI,CAACF,iBAAiB,CAAGD,KAC3B,CACAF,wBAAyB/vO,CAAAA,KAAK,CAAE,CAC9B,GAAI,IAAI,CAAC0W,QAAQ,EAAI,CAAC,IAAI,CAAC25N,WAAW,EAAI,IAAI,CAACv/T,OAAO,CAAE,CACtD,IAAI,CAACw/T,WAAW,CAAGtwO,MAAMkxC,MAAM,CAC/B,IAAI,CAACq/L,mBAAmB,EACxB,CAAA,MAAMC,oBAAuB,CAAA,IAAI,CAACC,cAAc,CAACzwO,KACjD,CAAA,CAAA,GAAIwwO,qBAAsB,CACxB,IAAI,CAACR,oBAAoB,CAAC,IAC1B,CAAA,CAAA,IAAI,CAACK,WAAW,CAAG,IAAA,CACnB,IAAI,CAACK,uBAAuB,CAAC1zU,IAAI,CAACwzU,oBAAAA,CAAAA,CAClC,IAAI,CAACG,wBAAwB,CAAC3zU,IAAI,CAAC,IAAI,CAAC05G,QAAQ,CAACmuB,MAAM,CAACghB,gBAAgB,EACxE,CAAA,CAAA,IAAI,CAAC1+I,IAAI,CAAC,YACZ,EAAA,CACF,CACF,CACAipU,oBAAAA,EAAuB,CACrB,GAAI,IAAI,CAACC,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAG,MACnB,IAAI,CAACL,oBAAoB,CAAC,OAC1B,IAAI,CAAC7oU,IAAI,CAAC,YACZ,CACF,CACAspU,cAAezwO,CAAAA,KAAK,CAAE,CACpB,GAAIA,KAAM4wO,CAAAA,WAAW,CAAE,CACrBnB,IAAAA,CAAKjpU,GAAG,CAACw5F,MAAM4wO,WAAW,CAACryC,SAAS,EAAA,CAAIv+L,MAAM4wO,WAAW,CAACC,YAAY,EAAA,EACxE,MAAO,CACL,IAAI,CAACC,uBAAuB,CAAC9wO,KAC7B,CAAA,CAAA,IAAI,CAAC+wO,4BAA4B,GACnC,CACApB,OAAAA,CAAQ3yU,IAAI,CAAC,IAAI,CAAC05G,QAAQ,CAACmuB,MAAM,CAAC6e,OAAO,CAAA,CAAE3vI,SAAS,CAAC,CAAC,CACtD27T,CAAAA,CAAAA,MAAAA,CAAOz/S,kBAAkB,CAAC,IAAI,CAACymF,QAAQ,CAACmuB,MAAM,CAACtc,WAAW,EAAA,CAAIonN,OAC9D,CAAA,CAAA,GAAID,OAAOjjT,aAAa,CAACgjT,IAAM90D,CAAAA,MAAAA,CAAAA,CAAS,CACtCi1D,eAAgB5yU,CAAAA,IAAI,CAAC,IAAI,CAAC05G,QAAQ,CAACmuB,MAAM,CAACohB,WAAW,EAAIjiI,CAAAA,CAAAA,MAAM,EAAGtE,CAAAA,eAAe,CAACi7P,MAAQA,CAAAA,MAAAA,CAAAA,CAC1FA,MAAOp/P,CAAAA,GAAG,CAAC,IAAI,CAACy1T,UAAU,CAAA,CAC1B,OAAOr2D,MACT,CACA,OAAO,IACT,CACAm2D,uBAAwB9wO,CAAAA,KAAK,CAAE,CAC7B,MAAM3gD,gBAAmB,CAAA,IAAI,CAAC+zL,IAAI,CAACvrM,cAAc,CAACgY,aAAa,CAC/D,GAAI,OAAOmgD,KAAAA,CAAM1tF,CAAC,GAAK,aAAe,OAAO0tF,KAAAA,CAAMhmF,CAAC,GAAK,YAAa,CACpEu1T,oBAAAA,CAAqBj9T,CAAC,CAAG0tF,MAAM1tF,CAAC,CAAG+sC,gBACnCkwR,CAAAA,qBAAqBv1T,CAAC,CAAGgmF,KAAMhmF,CAAAA,CAAC,CAAGqlC,iBACrC,CAAA,KAAO,GAAI2gD,KAAAA,CAAM2iB,cAAc,CAAE,CAC/B4sN,oBAAAA,CAAqBj9T,CAAC,CAAG0tF,KAAAA,CAAM2iB,cAAc,CAAC,EAAE,CAACrwG,CAAC,CAAG+sC,gBACrDkwR,CAAAA,oBAAqBv1T,CAAAA,CAAC,CAAGgmF,KAAAA,CAAM2iB,cAAc,CAAC,CAAA,CAAE,CAAC3oG,CAAC,CAAGqlC,iBACvD,CAAA,KAAO,CACL30C,OAAAA,CAAQqyO,IAAI,CAAC,+CAAA,EACf,CACF,CACAg0F,8BAA+B,CAC7B,GAAI,IAAI,CAACr6N,QAAQ,CAAC8pL,MAAM,EAAI,IAAI,CAAC9pL,QAAQ,CAAC8pL,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAAE,CACnEm/L,KAAK9jT,MAAM,CAACnlB,GAAG,CAAC+oU,qBAAqBj9T,CAAC,CAAE,CAACi9T,oBAAAA,CAAqBv1T,CAAC,CAAE,CAAA,CAAA,CACjEy1T,IAAK3jT,CAAAA,SAAS,CAAC9uB,IAAI,CAACkd,IAAKqC,CAAAA,OAAO,EAClC,CAAO,KAAA,CACLizT,mBAAoBxyU,CAAAA,IAAI,CAAC,IAAI,CAACszU,WAAW,CAACjvL,aAAa,CAACkuL,oBAAAA,CAAqBj9T,CAAC,CAAEi9T,qBAAqBv1T,CAAC,CAAE,CACxGy1T,CAAAA,CAAAA,CAAAA,IAAAA,CAAK9jT,MAAM,CAAC3uB,IAAI,CAAC,IAAI,CAACszU,WAAW,CAACzrM,MAAM,CAACtc,WAAW,EACpDknN,CAAAA,CAAAA,IAAAA,CAAK3jT,SAAS,CAAC9uB,IAAI,CAACwyU,mBAAAA,CAAAA,CAAqB3zT,GAAG,CAAC4zT,KAAK9jT,MAAM,CAAA,CAAEttB,SAAS,GACrE,CACF,CACAkyU,mBAAAA,EAAsB,CACpB,IAAI7iU,QAAU,IAAI,CAACgpG,QAAQ,CAACmuB,MAAM,CAAC31H,MAAM,CACzC,MAAMsxR,OAAS,IAAI,CAAC9pL,QAAQ,CAAC8pL,MAAM,EAAI,IAAI,CAAC9pL,QAAQ,CAAC8pL,MAAM,CAACA,MAAM,CAClE,MAAMywC,gBAAmBzwC,CAAAA,MAAAA,EAAUA,MAAOlwJ,CAAAA,WAAW,CACrD,MAAM4gM,WAAAA,CAAcD,gBAAmBzwC,CAAAA,MAAAA,CAAOjgR,KAAK,CAAG,CACtD,CAAA,MAAM4wT,UAAY,IAAI,CAACH,UAAU,CACjCG,UAAU3qU,GAAG,CAAC0qU,WAAaA,CAAAA,WAAAA,CAAaA,aACxC,MAAMxjU,OAAAA,CAAQ,CACZyjU,SAAAA,CAAU51T,GAAG,CAAC7N,OAAAA,CAAQq4I,aAAa,EAAA,CAAA,CACnCr4I,QAAUA,OAAQwB,CAAAA,MAAM,CACxB,GAAI+hU,kBAAoBvjU,OAAQ8yR,CAAAA,MAAM,CAAE,CACtC,KACF,CACF,CACA2wC,SAAU7+T,CAAAA,CAAC,CAAG,CAAI6+T,CAAAA,SAAAA,CAAU7+T,CAC5B6+T,CAAAA,SAAUn3T,CAAAA,CAAC,CAAG,CAAA,CAAIm3T,UAAUn3T,CAC5Bm3T,CAAAA,SAAAA,CAAUh3T,CAAC,CAAG,EAChB,CACAg2T,OAAAA,CAAQnwO,KAAK,CAAE,CACb,KAAM,CAAE0W,SAAU98D,OAAO,CAAEw3R,mBAAqBC,CAAAA,kBAAkB,CAAEC,oBAAsBC,CAAAA,mBAAmB,CAAEC,KAAAA,CAAOluT,IAAI,CAAE,CAAG,IAAI,CACnI,GAAIs2B,OAAW,EAAA,IAAI,CAACy2R,WAAW,EAAI,IAAI,CAACv/T,OAAO,EAAI8oC,QAAQ9oC,OAAO,EAAI8oC,OAAQirF,CAAAA,MAAM,CAAC/zH,OAAO,CAAE,CAC5F,MAAM0/T,qBAAuB,IAAI,CAACC,cAAc,CAACzwO,OACjD,GAAIwwO,oBAAAA,CAAsB,CACxBa,kBAAAA,CAAmBv1T,IAAI,CAAC00T,oBAAAA,CAAsB,IAAI,CAACE,uBAAuB,CAC1Ea,CAAAA,mBAAAA,CAAoBn3T,IAAI,CAAC,IAAI,CAACu2T,wBAAwB,CAAEU,kBAAAA,CAAAA,CACxD,GAAI/tT,IAAM,CAAA,CACR,MAAMmuT,eAAAA,CAAkB73R,QAAQirF,MAAM,CAACghB,gBAAgB,EAAA,CACvD,MAAM6rL,eAAkB7B,CAAAA,aAAa,CAACvsT,IAAAA,CAAK,CAC3CiuT,mBAAmB,CAACG,eAAAA,CAAgB,CAAGD,eAAe,CAACC,eAAgB,EACzE,CACA93R,OAAQirF,CAAAA,MAAM,CAAC+hB,gBAAgB,CAAC2qL,mBAChC,CAAA,CAAA,IAAI,CAACpqU,IAAI,CAAC,WAAA,CAAaoqU,mBACzB,EAAA,CACF,CACF,CACAnqS,OAAAA,EAAU,CACR,IAAI,CAACklP,yBAAyB,CAAC,KAC/B,CAAA,CAAA,IAAI,CAAC0jD,oBAAoB,CAAC,KAC5B,EAAA,CACA,IAAIl/T,OAAQlL,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACksE,QAAQ,CAAGlsE,MAClB,CACA,IAAIkL,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,CAEtB,IAAI6/P,UAAa,EAAA,CACf,OAAO,IAAI,CAACtB,WACd,CArJArqU,WAAAA,CAAY4zC,OAAO,CAAEt2B,IAAI,CAAC,CACxB,KAAK,EACL,CAAA,GAAI,CAACs2B,OAAAA,EAAW,EAAEA,OAAAA,YAAmBy+P,gBAAe,CAAA,CAAI,CACtD,MAAM,IAAIlwS,KAAM,CAAA,6CAAA,CAClB,CACA,GAAImb,IAAAA,EAAQA,IAAS,GAAA,GAAA,EAAOA,OAAS,GAAK,CAAA,CACxC,MAAM,IAAInb,KAAM,CAAA,CAAC,mBAAmB,EAAEmb,KAAK,CAAC,CAC9C,CACA,IAAI,CAACozF,QAAQ,CAAG98D,OAChB,CAAA,IAAI,CAACw5L,IAAI,CAAGx5L,OAAAA,CAAQogM,MAAM,CAAC/L,GAAG,CAC9B,IAAI,CAACujG,KAAK,CAAGluT,IAAAA,EAAQ,IACrB,CAAA,IAAI,CAACwuD,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACk/P,UAAU,CAAG,IAAI92T,IACtB,CAAA,IAAI,CAACw2T,uBAAuB,CAAG,IAAIx2T,IACnC,CAAA,IAAI,CAACy2T,wBAAwB,CAAG,IAAIz2T,IACpC,CAAA,IAAI,CAACk3T,mBAAmB,CAAG,IAAIl3T,IAC/B,CAAA,IAAI,CAACo3T,oBAAoB,CAAG,IAAIp3T,IAChC,CAAA,IAAI,CAACm2T,WAAW,CAAG,KAAA,CACnB,IAAI,CAAC/jD,yBAAyB,CAAC,IACjC,EAAA,CAmIF,CA9JI,iBAFEwjD,CAEG8B,eAAe,CAAG,YAGvB,CALE9B,iBAAAA,CAKG+B,aAAa,CAAG,UAGrB,CARE/B,iBAAAA,CAQGgC,cAAc,CAAG,YA0J1B,MAAMC,iBAAAA,CAAoB,CAC1B,CAAA,MAAMC,mBAAqB,CAC3B,CAAA,MAAMC,oBAAuB,CAAA,CAAA,CAC7B,MAAMC,gCAAmC,CAAA,CAAA,CACzC,MAAMC,uCAAAA,CAA0C,EAEhD,MAAMC,gBAAAA,CAAmB,IAAItyT,IAC7B,OAAMuyT,mBAA4BzmE,SAAAA,SAAAA,CAmBhC,IAAI3zP,IAAAA,EAAO,CACT,MAAMk0P,MAAAA,CAAS,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAA,CAAG,CACvD,OAAOmrB,MAAAA,CAASA,MAAOl0P,CAAAA,IAAI,CAAG,IAChC,CACA,IAAInH,OAAAA,CAAQyH,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,GAC5B,EAAA,CACA,IAAIzH,OAAU,EAAA,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OACnB,CACA,IAAIwhU,UAAAA,CAAW/5T,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,aAAc7yQ,GAC/B,EAAA,CACA,IAAI+5T,UAAAA,EAAa,CACf,OAAO,IAAI,CAACr6T,IAAI,CAACq6T,UACnB,CACA,IAAIC,SAASh6T,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAY7yQ,CAAAA,GAAAA,EAC7B,CACA,IAAIg6T,QAAAA,EAAW,CACb,OAAO,IAAI,CAACt6T,IAAI,CAACs6T,QAAQ,CAE3B,IAAIC,UAAWj6T,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAc7yQ,CAAAA,GAAAA,EAC/B,CACA,IAAIi6T,YAAa,CACf,OAAO,IAAI,CAACv6T,IAAI,CAACu6T,UAAU,CAE7B,IAAIC,YAAAA,CAAal6T,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,eAAgB7yQ,GACjC,EAAA,CACA,IAAIk6T,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACx6T,IAAI,CAACw6T,YACnB,CACA,IAAIrP,SAAS7qT,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAY7yQ,CAAAA,GAAAA,EAC7B,CACA,IAAI6qT,QAAAA,EAAW,CACb,OAAO,IAAI,CAACnrT,IAAI,CAACmrT,QAAQ,CAE3B,IAAIsP,aAAcn6T,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAiB7yQ,CAAAA,GAAAA,EAClC,CACA,IAAIm6T,eAAgB,CAClB,OAAO,IAAI,CAACz6T,IAAI,CAACy6T,aAAa,CAEhC,IAAIC,aAAcp6T,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAA,CAAiB7yQ,GAClC,EAAA,CACA,IAAIo6T,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC16T,IAAI,CAAC06T,aACnB,CACA,IAAIC,sBAAsBr6T,GAAG,CAAE,CAC7B,IAAI,CAAC6yQ,SAAS,CAAC,uBAAyB7yQ,CAAAA,GAAAA,EAC1C,CACA,IAAIq6T,qBAAAA,EAAwB,CAC1B,OAAO,IAAI,CAAC36T,IAAI,CAAC26T,qBAAqB,CAExC,IAAIC,6BAA8Bt6T,CAAAA,GAAG,CAAE,CACrC,IAAI,CAAC6yQ,SAAS,CAAC,+BAAiC7yQ,CAAAA,GAAAA,EAClD,CACA,IAAIs6T,+BAAgC,CAClC,OAAO,IAAI,CAAC56T,IAAI,CAAC46T,6BAA6B,CAEhD,IAAIC,2BAA4Bv6T,CAAAA,GAAG,CAAE,CACnC,IAAI,CAAC6yQ,SAAS,CAAC,6BAAA,CAA+B7yQ,KAChD,CACA,IAAIu6T,2BAA8B,EAAA,CAChC,OAAO,IAAI,CAAC76T,IAAI,CAAC66T,2BACnB,CACA,IAAIC,eAAex6T,GAAG,CAAE,CACtB,GAAI,IAAI,CAACy6T,eAAe,GAAKz6T,GAAAA,CAAK,CAChC,MACF,CACA,MAAMgzQ,QAAAA,CAAW,OAAOhzQ,GAAQ,GAAA,QAAA,CAChC,GAAI,IAAI,CAACy6T,eAAe,EAAIznD,QAAY,EAAA,IAAI,CAACynD,eAAe,CAAChyF,OAAO,EAAA,GAAOzoO,IAAK,CAC9E,MACF,CACA,GAAI,IAAI,CAACy6T,eAAe,CAAE,CACxB,IAAI,CAACC,0BAA0B,GACjC,CACA,GAAI16T,GAAeirI,YAAAA,SAAAA,CAAW,CAC5B,IAAI,CAACwvL,eAAe,CAAGz6T,IACzB,CAAA,KAAO,GAAIgzQ,QAAU,CAAA,CACnB,IAAI,CAACynD,eAAe,CAAG,IAAI,CAACh5F,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAACnqP,MAAQ,KACpE,CAAA,KAAO,CACL,IAAI,CAACy6T,eAAe,CAAG,KACzB,CACA,GAAI,IAAI,CAACA,eAAe,CAAE,CACxB,IAAI,CAACE,wBAAwB,GAC/B,CACA,GAAI,IAAI,CAACF,eAAe,CAAE,CACxB,IAAI,CAAC/6T,IAAI,CAAC86T,cAAc,CAAG,IAAI,CAACC,eAAe,CAAChyF,OAAO,GACzD,CAAA,KAAO,GAAIuqC,QAAYhzQ,EAAAA,GAAAA,CAAK,CAC1B,IAAI,CAACN,IAAI,CAAC86T,cAAc,CAAGx6T,IAC7B,CACF,CACA,IAAIw6T,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7B,IAAIG,aAAc56T,CAAAA,GAAG,CAAE,CACrB,GAAI,IAAI,CAAC66T,cAAc,GAAK76T,GAAAA,CAAK,CAC/B,MACF,CACA,MAAMgzQ,QAAAA,CAAW,OAAOhzQ,GAAAA,GAAQ,SAChC,GAAI,IAAI,CAAC66T,cAAc,EAAI7nD,QAAAA,EAAY,IAAI,CAAC6nD,cAAc,CAACpyF,OAAO,EAAOzoO,GAAAA,GAAAA,CAAK,CAC5E,MACF,CACA,GAAI,IAAI,CAAC66T,cAAc,CAAE,CACvB,IAAI,CAACC,yBAAyB,GAChC,CACA,GAAI96T,eAAeirI,SAAW,CAAA,CAC5B,IAAI,CAAC4vL,cAAc,CAAG76T,IACxB,CAAO,KAAA,GAAIgzQ,SAAU,CACnB,IAAI,CAAC6nD,cAAc,CAAG,IAAI,CAACp5F,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAACnqP,GAAAA,CAAAA,EAAQ,KACnE,CAAO,KAAA,CACL,IAAI,CAAC66T,cAAc,CAAG,KACxB,CACA,GAAI,IAAI,CAACA,cAAc,CAAE,CACvB,IAAI,CAACE,uBAAuB,GAC9B,CACA,GAAI,IAAI,CAACF,cAAc,CAAE,CACvB,IAAI,CAACn7T,IAAI,CAACk7T,aAAa,CAAG,IAAI,CAACC,cAAc,CAACpyF,OAAO,GACvD,CAAA,KAAO,GAAIuqC,QAAYhzQ,EAAAA,GAAAA,CAAK,CAC1B,IAAI,CAACN,IAAI,CAACk7T,aAAa,CAAG56T,IAC5B,CACF,CACA,IAAI46T,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIG,yBAA0Bh7T,CAAAA,GAAG,CAAE,CACjC,GAAI,IAAI,CAACi7T,0BAA0B,GAAKj7T,GAAAA,CAAK,CAC3C,MACF,CACA,MAAMgzQ,QAAAA,CAAW,OAAOhzQ,GAAAA,GAAQ,SAChC,GAAI,IAAI,CAACi7T,0BAA0B,EAAIjoD,QAAY,EAAA,IAAI,CAACioD,0BAA0B,CAACxyF,OAAO,EAAA,GAAOzoO,GAAK,CAAA,CACpG,MACF,CACA,GAAI,IAAI,CAACi7T,0BAA0B,CAAE,CACnC,IAAI,CAACC,qCAAqC,GAC5C,CACA,GAAIl7T,GAAAA,YAAeirI,SAAW,CAAA,CAC5B,IAAI,CAACgwL,0BAA0B,CAAGj7T,IACpC,CAAO,KAAA,GAAIgzQ,SAAU,CACnB,IAAI,CAACioD,0BAA0B,CAAG,IAAI,CAACx5F,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAACnqP,GAAAA,CAAAA,EAAQ,KAC/E,CAAO,KAAA,CACL,IAAI,CAACi7T,0BAA0B,CAAG,KACpC,CACA,IAAI,CAACE,kBAAkB,CAACj3M,sBAAuB,CAAA,CAAG,IAAI,CAAC+2M,0BAA0B,CACjF,GAAI,IAAI,CAACA,0BAA0B,CAAE,CACnC,IAAI,CAACG,mCAAmC,GAC1C,CACA,GAAI,IAAI,CAACH,0BAA0B,CAAE,CACnC,IAAI,CAACv7T,IAAI,CAACs7T,yBAAyB,CAAG,IAAI,CAACC,0BAA0B,CAACxyF,OAAO,GAC/E,CAAO,KAAA,GAAIuqC,UAAYhzQ,GAAK,CAAA,CAC1B,IAAI,CAACN,IAAI,CAACs7T,yBAAyB,CAAGh7T,IACxC,CACF,CACA,IAAIg7T,yBAA4B,EAAA,CAC9B,OAAO,IAAI,CAACC,0BACd,CACA,IAAII,uBAAAA,CAAwBr7T,GAAG,CAAE,CAC/B,GAAI,IAAI,CAACs7T,wBAAwB,GAAKt7T,GAAK,CAAA,CACzC,MACF,CACA,MAAMgzQ,QAAW,CAAA,OAAOhzQ,GAAQ,GAAA,QAAA,CAChC,GAAI,IAAI,CAACs7T,wBAAwB,EAAItoD,UAAY,IAAI,CAACsoD,wBAAwB,CAAC7yF,OAAO,EAAOzoO,GAAAA,GAAAA,CAAK,CAChG,MACF,CACA,GAAI,IAAI,CAACs7T,wBAAwB,CAAE,CACjC,IAAI,CAACC,mCAAmC,GAC1C,CACA,GAAIv7T,GAAeirI,YAAAA,SAAAA,CAAW,CAC5B,IAAI,CAACqwL,wBAAwB,CAAGt7T,IAClC,CAAO,KAAA,GAAIgzQ,QAAU,CAAA,CACnB,IAAI,CAACsoD,wBAAwB,CAAG,IAAI,CAAC75F,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAACnqP,GAAQ,CAAA,EAAA,KAC7E,MAAO,CACL,IAAI,CAACs7T,wBAAwB,CAAG,KAClC,CACA,IAAI,CAACH,kBAAkB,CAACh3M,oBAAAA,CAAqB,CAAG,IAAI,CAACm3M,wBAAwB,CAC7E,GAAI,IAAI,CAACA,wBAAwB,CAAE,CACjC,IAAI,CAACE,iCAAiC,GACxC,CACA,GAAI,IAAI,CAACF,wBAAwB,CAAE,CACjC,IAAI,CAAC57T,IAAI,CAAC27T,uBAAuB,CAAG,IAAI,CAACC,wBAAwB,CAAC7yF,OAAO,GAC3E,CAAA,KAAO,GAAIuqC,QAAAA,EAAYhzQ,IAAK,CAC1B,IAAI,CAACN,IAAI,CAAC27T,uBAAuB,CAAGr7T,IACtC,CACF,CACA,IAAIq7T,uBAAAA,EAA0B,CAC5B,OAAO,IAAI,CAACC,wBAAwB,CAEtC,IAAIG,MAAOpuU,CAAAA,KAAK,CAAE,CAChB,IAAI,CAACquU,YAAY,CAACruU,KAAAA,CAAM0M,CAAC,CAAE1M,KAAAA,CAAMoU,CAAC,EACpC,CACA,IAAIg6T,MAAAA,EAAS,CACX,OAAO,IAAI,CAACE,OAAO,CAErB9oD,UAAU7pR,IAAI,CAAEqE,KAAK,CAAE,CACrB,MAAMqS,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAW3gN,CAAAA,IAAI,CAAC1W,IAAK,CAC3B0W,CAAAA,IAAI,CAAC1W,IAAK,CAAA,CAAGqE,KACb,CAAA,IAAI,CAACuB,IAAI,CAAC,KAAO5F,CAAAA,IAAAA,CAAMq3N,SAAUhzN,KACnC,EAAA,CACA0mR,yBAA0BC,CAAAA,OAAO,CAAE,CACjC,IAAI,CAACA,OAAAA,CAAQ,CAAC,gBAAkB,CAAA,IAAI,CAAC4nD,gCAAgC,CAAE,IAAI,CAAA,CAC3E,IAAI,CAAC5nD,QAAQ,CAAC,cAAA,CAAgB,IAAI,CAAC6nD,8BAA8B,CAAE,IAAI,CAAA,CACvE,IAAI,CAACvvM,MAAM,CAAC0nJ,OAAAA,CAAQ,CAAC,aAAe,CAAA,IAAI,CAACK,sBAAsB,CAAE,IAAI,EACvE,CACAynD,uBAAAA,CAAwB9nD,OAAO,CAAE,CAC/B,GAAI,IAAI,CAAC1nJ,MAAM,CAACjrF,OAAO,CAAE,CACvB,GAAI2yO,OAAAA,GAAY,IAAQ,EAAA,IAAI,CAAC+nD,oBAAoB,CAAE,CACjD,MACF,CACA,IAAI,CAACzvM,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,QAAA,CAAU,IAAI,CAACgoD,QAAQ,CAAE,IAAI,EAC1D,IAAI,CAAC1vM,MAAM,CAACjrF,OAAO,CAAC2yO,OAAAA,CAAQ,CAAC,YAAA,CAAc,IAAI,CAACioD,aAAa,CAAE,IAAI,CACnE,CAAA,IAAI,CAACF,oBAAoB,CAAG/nD,OAAY,GAAA,KAC1C,CACF,CACAK,uBAAuB/nJ,MAAM,CAAE,CAC7B,IAAI,CAAC4vM,iBAAiB,CAAG,IAAI,CAAC5vM,MAAM,CAACjrF,OAAO,CAACl0C,IAAI,CAAC,cAAgB,CAAA,IAAI,CAACqoR,yBAAyB,CAAE,IAAI,CAAA,CACtG,IAAI,CAACsmD,uBAAuB,CAAC,IAAA,EAC/B,CACAtmD,yBAAAA,CAA0BlpJ,MAAM,CAAE,CAChC,IAAI,CAAC4vM,iBAAiB,EAAEvvU,GAAAA,EACxB,CAAA,IAAI,CAACuvU,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAACJ,uBAAuB,CAAC,KAC/B,EAAA,CACAnB,0BAA2B,CACzB,IAAI,CAACwB,4BAA4B,CAAG,IAAI,CAAC1B,eAAe,CAAC1tU,EAAE,CAAC,aAAA,CAAe,IAAI,CAACqvU,sBAAsB,CAAE,IAAI,CAC5G,CAAA,GAAI,IAAI,CAAC3B,eAAe,CAACp5R,OAAO,CAAE,CAChC,IAAI,CAAC+6R,sBAAsB,GAC7B,CACF,CACA1B,0BAAAA,EAA6B,CAC3B,IAAI,CAACyB,4BAA4B,EAAExvU,KACnC,CAAA,IAAI,CAACwvU,4BAA4B,CAAG,IACpC,CAAA,GAAI,IAAI,CAAC1B,eAAe,EAAEp5R,OAAAA,CAAS,CACjC,IAAI,CAACg7R,sBAAsB,GAC7B,CACF,CACAC,iCAAkC,CAChC,MAAMj7R,OAAU,CAAA,IAAI,CAACo5R,eAAe,CAACp5R,OACrC,CAAA,IAAI,CAACk7R,yBAAyB,CAAGl7R,QAAQl0C,IAAI,CAAC,cAAgB,CAAA,IAAI,CAACkvU,sBAAsB,CAAE,IAAI,CAC/F,CAAA,IAAI,CAACG,kBAAkB,CAAGn7R,QAAQt0C,EAAE,CAAC,QAAU,CAAA,IAAI,CAACivU,QAAQ,CAAE,IAAI,EACpE,CACAS,iCAAoC,EAAA,CAClC,IAAI,CAACF,yBAAyB,EAAE5vU,GAAAA,EAChC,CAAA,IAAI,CAAC4vU,yBAAyB,CAAG,IACjC,CAAA,IAAI,CAACC,kBAAkB,EAAE7vU,KACzB,CAAA,IAAI,CAAC6vU,kBAAkB,CAAG,KAC5B,CACAJ,sBAAyB,EAAA,CACvB,IAAI,CAACE,+BAA+B,EACpC,CAAA,IAAI,CAACN,QAAQ,GACf,CACAK,sBAAAA,EAAyB,CACvB,IAAI,CAACI,iCAAiC,GACxC,CACA1B,uBAA0B,EAAA,CACxB,IAAI,CAAC2B,2BAA2B,CAAG,IAAI,CAAC7B,cAAc,CAAC9tU,EAAE,CAAC,aAAe,CAAA,IAAI,CAAC4vU,qBAAqB,CAAE,IAAI,CAAA,CACzG,GAAI,IAAI,CAAC9B,cAAc,CAACx5R,OAAO,CAAE,CAC/B,IAAI,CAACs7R,qBAAqB,GAC5B,CACF,CACA7B,yBAAAA,EAA4B,CAC1B,IAAI,CAAC4B,2BAA2B,EAAE/vU,KAClC,CAAA,IAAI,CAAC+vU,2BAA2B,CAAG,IAAA,CACnC,GAAI,IAAI,CAAC7B,cAAc,EAAEx5R,OAAS,CAAA,CAChC,IAAI,CAACu7R,qBAAqB,GAC5B,CACF,CACAC,8BAAiC,EAAA,CAC/B,MAAMx7R,OAAAA,CAAU,IAAI,CAACw5R,cAAc,CAACx5R,OAAO,CAC3C,IAAI,CAACy7R,wBAAwB,CAAGz7R,OAAQl0C,CAAAA,IAAI,CAAC,cAAA,CAAgB,IAAI,CAACyvU,qBAAqB,CAAE,IAAI,CAC7F,CAAA,IAAI,CAACG,iBAAiB,CAAG17R,OAAQt0C,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACivU,QAAQ,CAAE,IAAI,EACnE,CACAgB,gCAAAA,EAAmC,CACjC,IAAI,CAACF,wBAAwB,EAAEnwU,GAC/B,EAAA,CAAA,IAAI,CAACmwU,wBAAwB,CAAG,IAChC,CAAA,IAAI,CAACC,iBAAiB,EAAEpwU,KACxB,CAAA,IAAI,CAACowU,iBAAiB,CAAG,KAC3B,CACAJ,qBAAwB,EAAA,CACtB,IAAI,CAACE,8BAA8B,EACnC,CAAA,IAAI,CAACI,kBAAkB,EACvB,CAAA,IAAI,CAACC,kBAAkB,CAAG,IAAI3F,iBAAAA,CAAkB,IAAI,CAACsD,cAAc,CAACx5R,OAAO,EAC3E,IAAI,CAAC67R,kBAAkB,CAACnwU,EAAE,CAAC,YAAA,CAAc,IAAI,CAACowU,mBAAmB,CAAE,IAAI,CACvE,CAAA,IAAI,CAACD,kBAAkB,CAACnwU,EAAE,CAAC,WAAY,IAAI,CAACqwU,iBAAiB,CAAE,IAAI,CACnE,CAAA,IAAI,CAACF,kBAAkB,CAACnwU,EAAE,CAAC,WAAa,CAAA,IAAI,CAACswU,kBAAkB,CAAE,IAAI,CACrE,CAAA,IAAI,CAACC,iBAAiB,CAACp5M,uBAAuB,CAAG,IACjD,CAAA,IAAI,CAACo5M,iBAAiB,CAACn5M,oBAAqB,CAAA,CAAG,IAC/C,CAAA,IAAI,CAAC63M,QAAQ,GACf,CACAY,qBAAAA,EAAwB,CACtB,IAAI,CAACI,gCAAgC,EAAA,CACrC,IAAI,CAACC,kBAAkB,GACzB,CACAE,mBAAsB,EAAA,CACpB,GAAI,IAAI,CAACtC,cAAc,EAAI,IAAI,CAACtiU,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC9D,IAAI,CAACglU,kBAAkB,CAAC94U,IAAI,CAAC,IAAI,CAACo2U,cAAc,CAACvtL,gBAAgB,EAAA,EACnE,CACF,CACA8vL,mBAAoB,CAClB,IAAI,CAACI,wBAAwB,CAAG,IAChC,CAAA,IAAI,CAACC,mBAAmB,GAC1B,CACAJ,kBAAAA,CAAmBrzT,QAAQ,CAAE,CAC3B,GAAI,IAAI,CAAC6wT,cAAc,EAAI,IAAI,CAACtiU,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC9D,IAAI,CAACmlU,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,6BAA6B,CAAC3zT,QACnC,CAAA,CAAA,IAAI,CAAC4zT,oCAAoC,CAAC5zT,QAC1C,CAAA,CAAA,GAAI,CAAC,IAAI,CAAC6zT,qBAAqB,CAAE,CAC/B,MAAM79N,GAAKh2F,QAASjQ,CAAAA,CAAC,CAAG,IAAI,CAACwjU,kBAAkB,CAACxjU,CAAC,CACjD,MAAMkmG,EAAKj2F,CAAAA,QAAAA,CAASvI,CAAC,CAAG,IAAI,CAAC87T,kBAAkB,CAAC97T,CAAC,CACjD,GAAIxc,IAAAA,CAAKma,GAAG,CAAC4gG,IAAM,IAAI,CAACm6N,aAAa,EAAIl1U,KAAKma,GAAG,CAAC6gG,EAAM,CAAA,CAAA,IAAI,CAACk6N,aAAa,CAAE,CAC1E,IAAI,CAAC2D,oBAAoB,GAC3B,CACF,CACF,CACF,CACA1C,mCAAAA,EAAsC,CACpC,IAAI,CAAC2C,0BAA0B,CAAG,IAAI,CAAC9C,0BAA0B,CAACluU,EAAE,CAAC,gBAAiB,IAAI,CAACixU,0BAA0B,CAAE,IAAI,CAC3H,CAAA,GAAI,IAAI,CAAC/C,0BAA0B,CAACxwF,SAAS,CAAE,CAC7C,IAAI,CAACuzF,0BAA0B,GACjC,CACF,CACAxC,iCAAoC,EAAA,CAClC,IAAI,CAACyC,wBAAwB,CAAG,IAAI,CAAC3C,wBAAwB,CAACvuU,EAAE,CAAC,eAAiB,CAAA,IAAI,CAACmxU,wBAAwB,CAAE,IAAI,CAAA,CACrH,GAAI,IAAI,CAAC5C,wBAAwB,CAAC7wF,SAAS,CAAE,CAC3C,IAAI,CAACyzF,wBAAwB,GAC/B,CACF,CACAhD,qCAAAA,EAAwC,CACtC,IAAI,CAAC6C,0BAA0B,EAAEpxU,KACjC,CAAA,IAAI,CAACoxU,0BAA0B,CAAG,IAClC,CAAA,GAAI,IAAI,CAAC9C,0BAA0B,CAACxwF,SAAS,CAAE,CAC7C,IAAI,CAAC0zF,0BAA0B,GACjC,CACF,CACA5C,mCAAsC,EAAA,CACpC,IAAI,CAAC0C,wBAAwB,EAAEtxU,GAAAA,EAC/B,CAAA,IAAI,CAACsxU,wBAAwB,CAAG,IAChC,CAAA,GAAI,IAAI,CAAC3C,wBAAwB,CAAC7wF,SAAS,CAAE,CAC3C,IAAI,CAAC2zF,wBAAwB,GAC/B,CACF,CACAC,8BAA+BC,CAAAA,YAAY,CAAE,CAC3C,GAAI,CAAC,IAAI,CAACC,qBAAqB,CAACr6M,sBAAuB,CAAA,EAAI,IAAI,CAAC3rH,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC9F,IAAI,CAACmjU,YAAY,CAAC4C,aAAc,IAClC,EAAA,CACF,CACAE,4BAAAA,CAA6BC,YAAY,CAAE,CACzC,GAAI,CAAC,IAAI,CAACF,qBAAqB,CAACp6M,oBAAAA,CAAqB,EAAI,IAAI,CAAC5rH,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC5F,IAAI,CAACmjU,YAAY,CAAC,IAAA,CAAM+C,YAC1B,EAAA,CACF,CACAT,0BAA6B,EAAA,CAC3B,MAAMvzF,SAAAA,CAAY,IAAI,CAACwwF,0BAA0B,EAAExwF,SACnD,CAAA,IAAI,CAACi0F,6BAA6B,CAAGj0F,UAAU19O,EAAE,CAAC,cAAgB,CAAA,IAAI,CAACoxU,0BAA0B,CAAE,IAAI,CACvG,CAAA,IAAI,CAACQ,4BAA4B,CAAGl0F,UAAU19O,EAAE,CAAC,WAAa,CAAA,IAAI,CAACsxU,8BAA8B,CAAE,IAAI,CAAA,CACvG,IAAI,CAACO,0BAA0B,CAAC16M,sBAAAA,CAAAA,CAChC,IAAI,CAAC26M,sBAAsB,CAAC36M,sBAAAA,EAC9B,CACAg6M,wBAA2B,EAAA,CACzB,MAAMzzF,SAAAA,CAAY,IAAI,CAAC6wF,wBAAwB,EAAE7wF,SACjD,CAAA,IAAI,CAACq0F,2BAA2B,CAAGr0F,SAAU19O,CAAAA,EAAE,CAAC,cAAA,CAAgB,IAAI,CAACqxU,wBAAwB,CAAE,IAAI,CACnG,CAAA,IAAI,CAACW,0BAA0B,CAAGt0F,SAAU19O,CAAAA,EAAE,CAAC,WAAA,CAAa,IAAI,CAACyxU,4BAA4B,CAAE,IAAI,EACnG,IAAI,CAACI,0BAA0B,CAACz6M,sBAChC,IAAI,CAAC06M,sBAAsB,CAAC16M,sBAC9B,CACAg6M,0BAAAA,EAA6B,CAC3B,IAAI,CAACO,6BAA6B,EAAE/xU,GACpC,EAAA,CAAA,IAAI,CAAC+xU,6BAA6B,CAAG,IACrC,CAAA,IAAI,CAACC,4BAA4B,EAAEhyU,KACnC,CAAA,IAAI,CAACgyU,4BAA4B,CAAG,KACtC,CACAP,wBAA2B,EAAA,CACzB,IAAI,CAACU,2BAA2B,EAAEnyU,GAAAA,EAClC,CAAA,IAAI,CAACmyU,2BAA2B,CAAG,IACnC,CAAA,IAAI,CAACC,0BAA0B,EAAEpyU,GAAAA,EACjC,CAAA,IAAI,CAACoyU,0BAA0B,CAAG,KACpC,CACAnD,kCAAmC,CACjC,IAAI,CAACgD,0BAA0B,CAAC16M,sBAClC,EAAA,CACA23M,8BAAiC,EAAA,CAC/B,IAAI,CAAC+C,0BAA0B,CAACz6M,oBAAAA,EAClC,CACAu3M,YAAa3hU,CAAAA,CAAC,CAAE0H,CAAC,CAAEu9T,aAAa,CAAE,CAChC,GAAIA,gBAAkB,KAAO,CAAA,CAC3B,IAAI,CAACxmN,SAAS,CAACvqH,GAAG,CAAC,CAAA,CAAG,EAAG,CAC3B,EAAA,CACA,MAAMgxU,QAAAA,CAAW,IAAI,CAACC,WAAW,CAACnlU,CAAAA,CAAG,IAAKmqH,sBAC1C,CAAA,CAAA,MAAMi7M,QAAW,CAAA,IAAI,CAACD,WAAW,CAACz9T,CAAG,CAAA,GAAA,CAAK0iH,sBAC1C,GAAI86M,QAAAA,EAAYE,QAAU,CAAA,CACxB,IAAI,CAACvwU,IAAI,CAAC,YAAA,CAAc,IAAI,CAAC+sU,OAAO,EACtC,CACF,CACAuD,WAAYE,CAAAA,WAAW,CAAEr0T,IAAI,CAAEwlG,WAAW,CAAE,CAC1C,MAAM8uN,WAAaD,WAAgB,GAAA,IAAA,EAAQn6U,IAAKma,CAAAA,GAAG,CAACggU,WAAc,CAAA,IAAI,CAACzD,OAAO,CAAC5wT,IAAK,CAAA,CAAA,CAAI,IACxF,CAAA,GAAIs0T,YAAc,IAAI,CAACvH,WAAW,EAAA,EAAMsH,cAAgB,CAAG,CAAA,CACzD,IAAI,CAACzD,OAAO,CAAC5wT,IAAAA,CAAK,CAAG,IAAI,CAACu0T,wBAAwB,CAACF,WAAar0T,CAAAA,IAAAA,CAAMwlG,aACtE,IAAI,CAACgvN,oBAAoB,CAAChvN,aAC1B,IAAI,CAACsuN,sBAAsB,CAACtuN,aAC9B,CACA,OAAO8uN,UACT,CACAC,yBAAyBF,WAAW,CAAEr0T,IAAI,CAAEwlG,WAAW,CAAE,CACvD,GAAI,CAAC,IAAI,CAACivN,oBAAoB,CAACjvN,WAAAA,CAAAA,CAAc,CAC3C,OAAO,IAAI,CAACorN,OAAO,CAAC5wT,IAAAA,CAAK,CAE3B,OAAO,IAAI,CAACkvT,UAAU,EACpB,KAAKT,iBACH,CAAA,OAAOzgU,IAAKI,CAAAA,KAAK,CAACimU,WAAa,CAAA,CAAA,CAAG,IAAI,CAACK,kBAAkB,CAAClvN,WAAAA,CAAAA,CAC5D,CAAKkpN,KAAAA,kBAAAA,CACH,IAAI,CAACiG,yBAAyB,CAACN,WAAAA,CAAar0T,KAAMwlG,WAClD,CAAA,CAAA,OAAO6uN,WACT,CAAA,KAAK1F,qBACH,OAAO0F,WACT,CACEjtU,QAAAA,OAAAA,CAAQqyO,IAAI,CAAC,CAAC,sBAAsB,EAAE,IAAI,CAACy1F,UAAU,CAAC,CAAC,EACvD,OAAOmF,WACX,CACF,CACApD,UAAW,CACT,IAAI,CAACuD,oBAAoB,CAACr7M,sBAC1B,CAAA,CAAA,IAAI,CAACq7M,oBAAoB,CAACp7M,oBAC1B,CAAA,CAAA,IAAI,CAAC06M,sBAAsB,CAAC36M,sBAC5B,CAAA,CAAA,IAAI,CAAC26M,sBAAsB,CAAC16M,oBAC5B,CAAA,CAAA,IAAI,CAACy6M,0BAA0B,CAAC16M,sBAChC,CAAA,CAAA,IAAI,CAAC06M,0BAA0B,CAACz6M,oBAClC,EAAA,CACAo7M,oBAAqBhvN,CAAAA,WAAW,CAAE,CAChC,GAAI,CAAC,IAAI,CAACsqN,cAAc,CAAE,CACxB,MACF,CACA,MAAM9vT,IAAAA,CAAO,IAAI,CAAC40T,QAAQ,CAACpvN,WAAAA,CAAAA,CAC3B,MAAM4oE,IAAAA,CAAO,IAAI,CAACymJ,QAAQ,CAACrvN,WAAAA,CAAAA,CAC3B,MAAMsvN,eAAkB,CAAA,IAAI,CAACvC,iBAAiB,CAAC/sN,WAAY,CAAA,CAC3D,MAAMuvN,eAAAA,CAAkB,IAAI,CAACC,eAAe,CAACxvN,WAAAA,CAAAA,CAC7C,GAAIsvN,eAAoB,GAAA,IAAA,EAAQ56U,IAAKma,CAAAA,GAAG,CAACygU,eAAkBC,CAAAA,eAAAA,CAAAA,CAAmB,IAAM,CAAA,CAClF,MAAME,aAAgB,CAAA,IAAI,CAACC,aAAa,CAAC1vN,WAAasvN,CAAAA,eAAAA,CAAAA,CACtD,MAAMK,aAAAA,CAAgB,IAAI,CAACD,aAAa,CAAC1vN,WAAAA,CAAauvN,iBACtD,GAAII,aAAAA,GAAkB,CAAG,CAAA,CACvB,IAAI,CAACvE,OAAO,CAAC5wT,KAAK,CAAG,EACvB,CAAO,KAAA,CACL,IAAI,CAAC4wT,OAAO,CAAC5wT,IAAAA,CAAK,CAAGhS,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAACwiU,OAAO,CAAC5wT,IAAK,CAAA,CAAGi1T,cAAgBE,aAAe,CAAA,CAAA,CAAG,CACzF,EAAA,CACF,CACA,MAAM9sU,MAAAA,CAAS,IAAI,CAACuoU,OAAO,CAAC5wT,IAAAA,CAAK,CAAG,IAAI,CAACk1T,aAAa,CAAC1vN,WACvD,CAAA,CAAA,MAAM4vN,gBAAkB,IAAI,CAACtF,cAAc,CAACvtL,gBAAgB,EAC5D6yL,CAAAA,eAAe,CAACp1T,KAAK,CAAG3X,MAAAA,CAAS+lL,IACjC,CAAA,IAAI,CAAC0hJ,cAAc,CAACxsL,gBAAgB,CAAC8xL,gBACrC,CAAA,IAAI,CAAC7C,iBAAiB,CAAC/sN,WAAY,CAAA,CAAGuvN,gBACxC,CACAjB,uBAAuBtuN,WAAW,CAAE,CAClC,MAAM6vN,gBAAkB,IAAI,CAACjF,kBAAkB,CAAC5qN,YAAY,CAC5D,GAAI,CAAC6vN,eAAAA,EAAiB31F,UAAW,CAC/B,MACF,CACA,MAAM1/N,KAAO,IAAI,CAAC40T,QAAQ,CAACpvN,YAC3B,CAAA,IAAI,CAACguN,qBAAqB,CAAChuN,WAAY,CAAA,CAAG,IAC1C6vN,CAAAA,gBAAgB31F,SAAS,CAACp9O,KAAK,CAAG,IAAI,CAACsuU,OAAO,CAAC5wT,IAAAA,CAAK,CACpDq1T,eAAAA,CAAgB31F,SAAS,CAAC41F,UAAU,CAAG,IAAI,CAACC,uBAAuB,CAACv1T,IAAMwlG,CAAAA,WAAAA,CAC1E,CAAA,IAAI,CAACguN,qBAAqB,CAAChuN,WAAY,CAAA,CAAG,MAC5C,CACAquN,0BAAAA,CAA2BruN,WAAW,CAAE,CACtC,MAAM+b,MAAAA,CAAS,IAAI,CAAC6uM,kBAAkB,CAAC5qN,WAAAA,CAAY,CACnD,GAAI,CAAC+b,MAAQ,CAAA,CACX,MACF,CACA,MAAMi0M,kBAAAA,CAAqB,IAAI,CAACf,oBAAoB,CAACjvN,WAAAA,CAAAA,CACrD,MAAMiwN,mBAAAA,CAAsB,IAAI,CAACC,uBAAuB,CAAClwN,WAAAA,CAAAA,CACzD,OAAOiwN,mBACL,EAAA,KAAK7G,gCACHrtM,CAAAA,MAAAA,CAAO/zH,OAAO,CAAGgoU,kBAAAA,CACjB,OACF,KAAK3G,wCACHttM,MAAO/zH,CAAAA,OAAO,CAAGgoU,kBAAAA,EAAsB,IAAI,CAACG,4BAA4B,CAACnwN,WAAAA,CAAAA,CACzE,OAEAp+G,QAAAA,OAAAA,CAAQqyO,IAAI,CAAC,CAAC,+BAA+B,EAAEg8F,mBAAoB,CAAA,CAAC,CACpEl0M,CAAAA,MAAAA,CAAO/zH,OAAO,CAAGgoU,mBACrB,CACF,CACAG,4BAA6BnwN,CAAAA,WAAW,CAAE,CACxC,OAAO,IAAI,CAACwvN,eAAe,CAACxvN,WAAAA,CAAAA,CAAe,IAAI,CAACowN,gBAAgB,CAACpwN,WAAAA,CACnE,CACAqwN,6BAAAA,CAA8BT,eAAe,CAAE,CAC7C,MAAMU,UAAAA,CAAa,IAAI,CAACZ,aAAa,CAAC/7M,sBAAAA,CAAAA,CACtC,MAAM48M,UAAAA,CAAa,IAAI,CAACb,aAAa,CAAC97M,oBAAAA,CAAAA,CACtC,GAAI08M,UAAAA,GAAe,EAAG,CACpBhH,gBAAAA,CAAiB9/T,CAAC,CAAG,EACvB,CAAO,KAAA,CACL8/T,gBAAiB9/T,CAAAA,CAAC,CAAGomU,eAAgBpmU,CAAAA,CAAC,CAAG8mU,WAC3C,CACA,GAAIC,UAAAA,GAAe,CAAG,CAAA,CACpBjH,iBAAiBp4T,CAAC,CAAG,EACvB,CAAA,KAAO,CACLo4T,gBAAiBp4T,CAAAA,CAAC,CAAG0+T,eAAAA,CAAgB1+T,CAAC,CAAG,CAACq/T,WAC5C,CACA,OAAOjH,gBACT,CACAoG,aAAc1vN,CAAAA,WAAW,CAAEwwN,WAAW,CAAE,CACtCA,WAAAA,CAAcA,cAAgBvzU,SAAY,CAAA,IAAI,CAACuyU,eAAe,CAACxvN,WAAewwN,CAAAA,CAAAA,WAAAA,CAC9E,MAAMC,YAAAA,CAAe,IAAI,CAACL,gBAAgB,CAACpwN,WAAAA,CAAAA,CAC3C,GAAIwwN,WAAcC,CAAAA,YAAAA,CAAc,CAC9B,OAAO,CAAC,IAAI,CAACL,gBAAgB,CAACpwN,WAChC,CAAA,CACA,OAAOywN,YAAAA,CAAeD,WACxB,CACAtB,kBAAAA,CAAmBlvN,WAAW,CAAE,CAC9B,OAAO,IAAI,CAACmwN,4BAA4B,CAACnwN,WAAe,CAAA,CAAA,CAAA,CAAI,CAC9D,CACA+vN,wBAAwBv1T,IAAI,CAAEwlG,WAAW,CAAE,CACzC,MAAMywN,YAAAA,CAAe,IAAI,CAACL,gBAAgB,CAACpwN,WAAAA,CAAAA,CAC3C,MAAMwwN,WAAAA,CAAc,IAAI,CAAChB,eAAe,CAACxvN,WAAAA,CAAAA,CACzC,GAAItrH,IAAKma,CAAAA,GAAG,CAAC2hU,WAAAA,CAAAA,CAAe,KAAO,CACjC,OAAO,CACT,CACA,MAAMV,UAAap7U,CAAAA,IAAAA,CAAKmU,GAAG,CAAC4nU,aAAeD,WAAa,CAAA,CAAA,CAAA,CACxD,MAAME,SAAAA,CAAY,IAAI,CAACC,YAAY,CAAC,IAAI,CAACvF,OAAO,CAAC5wT,IAAK,CAAA,CAAEwlG,aACxD,GAAI0wN,SAAAA,GAAc,CAAG,CAAA,CACnB,OAAOZ,UACT,CACA,OAAOA,UAAAA,EAAc,CAAIp7U,CAAAA,IAAAA,CAAKma,GAAG,CAAC6hU,UAAS,CAC7C,CACAN,gBAAiBpwN,CAAAA,WAAW,CAAE,CAC5B,OAAO,IAAI,CAAC4wN,QAAQ,CAAC5wN,WAAAA,CAAa,IAAI,CAACkqN,eAAe,CACxD,CACAsF,eAAgBxvN,CAAAA,WAAW,CAAE,CAC3B,OAAO,IAAI,CAAC4wN,QAAQ,CAAC5wN,WAAAA,CAAa,IAAI,CAACsqN,cAAc,CACvD,CACAsG,QAAS5wN,CAAAA,WAAW,CAAE+b,MAAM,CAAE,CAC5B,GAAIA,QAAQjrF,OAAS,CAAA,CACnB,OAAOirF,MAAAA,CAAOjrF,OAAO,CAAC,IAAI,CAAC+/R,uBAAuB,CAAC7wN,WAAa,CAAA,CAClE,CACA,OAAO,CACT,CACAivN,oBAAAA,CAAqBjvN,WAAW,CAAE,CAChC,GAAIA,WAAAA,GAAgB2T,sBAAwB,CAAA,CAC1C,OAAO,IAAI,CAAC61M,UACd,MAAO,GAAIxpN,WAAAA,GAAgB4T,oBAAsB,CAAA,CAC/C,OAAO,IAAI,CAAC61M,QAAQ,CAEtB,OAAOxsU,SACT,CACAizU,wBAAwBlwN,WAAW,CAAE,CACnC,GAAIA,cAAgB2T,sBAAwB,CAAA,CAC1C,OAAO,IAAI,CAACo2M,6BACd,CAAO,KAAA,GAAI/pN,cAAgB4T,oBAAsB,CAAA,CAC/C,OAAO,IAAI,CAACo2M,2BACd,CACA,OAAO/sU,SACT,CACAoyU,QAAAA,CAASrvN,WAAW,CAAE,CACpB,OAAOA,WAAAA,GAAgB2T,sBAAyB,CAAA,CAAA,CAAI,CAAC,CACvD,CACAy7M,QAASpvN,CAAAA,WAAW,CAAE,CACpB,OAAOA,WAAgB2T,GAAAA,sBAAAA,CAAyB,IAAM,GACxD,CACAk9M,uBAAwB7wN,CAAAA,WAAW,CAAE,CACnC,OAAOA,WAAgB2T,GAAAA,sBAAAA,CAAyB,kBAAoB,kBACtE,CACA+4M,kBAAqB,EAAA,CACnB,GAAI,IAAI,CAACC,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAACruS,OAAO,GACjC,CACF,CACAqzO,UAAW,CACT,GAAI,IAAI,CAAC24D,cAAc,CAAE,CACvB,IAAI,CAACwG,eAAe,EACpB,CAAA,IAAI,CAACzC,0BAA0B,CAAC16M,sBAChC,CAAA,CAAA,IAAI,CAAC06M,0BAA0B,CAACz6M,oBAClC,EAAA,CACF,CACAk9M,eAAAA,EAAkB,CAChB,GAAI,CAAC,IAAI,CAACvJ,WAAW,EAAI,CAAA,CACvB,GAAI,IAAI,CAACmC,UAAU,GAAKR,kBAAoB,CAAA,CAC1C,GAAI,IAAI,CAAC6H,aAAa,CAAC,IAAKp9M,sBAAyB,CAAA,CAAA,CACnD,IAAI,CAACw7M,yBAAyB,CAAC,IAAI,CAACjE,MAAM,CAAC1hU,CAAC,CAAE,GAAKmqH,CAAAA,sBAAAA,EACrD,CACA,GAAI,IAAI,CAACo9M,aAAa,CAAC,GAAKn9M,CAAAA,oBAAAA,CAAAA,CAAuB,CACjD,IAAI,CAACu7M,yBAAyB,CAAC,IAAI,CAACjE,MAAM,CAACh6T,CAAC,CAAE,IAAK0iH,oBACrD,EAAA,CACF,CACA,GAAIl/H,KAAKma,GAAG,CAAC,IAAI,CAACo5G,SAAS,CAACz+G,CAAC,CAAI,CAAA,IAAA,EAAQ9U,KAAKma,GAAG,CAAC,IAAI,CAACo5G,SAAS,CAAC/2G,CAAC,CAAI,CAAA,IAAA,CAAM,CAC1E,MAAMuI,QAAAA,CAAW,IAAI,CAAC6wT,cAAc,CAACvtL,gBAAgB,EACrDtjI,CAAAA,SAASjQ,CAAC,EAAI,IAAI,CAACy+G,SAAS,CAACz+G,CAAC,CAC9BiQ,SAASvI,CAAC,EAAI,IAAI,CAAC+2G,SAAS,CAAC/2G,CAAC,CAC9B,IAAI,CAACo5T,cAAc,CAACxsL,gBAAgB,CAACrkI,UACrC,IAAI,CAAC2zT,6BAA6B,CAAC3zT,UACrC,CACA,IAAI,CAACwuG,SAAS,CAACz+G,CAAC,EAAI,CAAI,CAAA,IAAI,CAAC8wT,QAC7B,CAAA,IAAI,CAACryM,SAAS,CAAC/2G,CAAC,EAAI,EAAI,IAAI,CAACopT,SAC/B,CACF,CACAyW,aAAAA,CAAcv2T,IAAI,CAAEwlG,WAAW,CAAE,CAC/B,OAAOtrH,IAAAA,CAAKma,GAAG,CAAC,IAAI,CAAC8hU,YAAY,CAAC,IAAI,CAACzF,MAAM,CAAC1wT,KAAK,CAAEwlG,WAAAA,CAAAA,CAAAA,CAAgB,IACvE,CACA2wN,aAAa9B,WAAW,CAAE7uN,WAAW,CAAE,CACrC,MAAMgxN,cAAAA,CAAiB,IAAI,CAAC9B,kBAAkB,CAAClvN,WAAAA,CAAAA,CAC/C,GAAI6uN,WAAAA,CAAc,EAAG,CACnB,OAAOA,WACT,CAAA,KAAO,GAAIA,WAAcmC,CAAAA,cAAAA,CAAgB,CACvC,OAAOnC,YAAcmC,cACvB,CACA,OAAO,CACT,CACA7B,yBAA0BN,CAAAA,WAAW,CAAEr0T,IAAI,CAAEwlG,WAAW,CAAE,CACxD,MAAMixN,cAAiB,CAAA,IAAI,CAACN,YAAY,CAAC9B,WAAa7uN,CAAAA,WAAAA,CAAAA,CACtD,MAAMkxN,eAAAA,CAAkBD,eAAiB,IAAI,CAACvB,aAAa,CAAC1vN,aAAe,IAAI,CAACqvN,QAAQ,CAACrvN,aACzF,GAAItrH,IAAAA,CAAKma,GAAG,CAACqiU,iBAAmB,CAAG,CAAA,CACjC,IAAI,CAACjpN,SAAS,CAACztG,IAAAA,CAAK,CAAG,CAAC02T,iBAAmB,IAAI,CAACvH,YAAY,CAAG,EAAK,CAAA,CAAA,EACtE,CACF,CACA0D,oCAAqC5zT,CAAAA,QAAQ,CAAE,CAC7C,GAAI,IAAI,CAACwzT,wBAAwB,CAAE,CACjC,IAAI,CAAChlN,SAAS,CAACj1G,IAAI,CAACyG,QAAAA,CAAU,IAAI,CAACwzT,wBAAwB,CAC3D,CAAA,IAAI,CAACA,wBAAwB,CAAC/4U,IAAI,CAACulB,QACrC,EAAA,CAAA,KAAO,CACL,IAAI,CAACwuG,SAAS,CAACvqH,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,EACzB,CAAA,IAAI,CAACuvU,wBAAwB,CAAGxzT,QAAShP,CAAAA,KAAK,GAChD,CACF,CACA2iU,6BAA8B3zT,CAAAA,QAAQ,CAAE,CACtC,IAAIo1T,WAAc,CAAA,IAAI,CAACwB,6BAA6B,CAAC52T,QACrD,CAAA,CAAA,GAAI,IAAI,CAAC8tT,WAAW,EAAI,CAAA,CACtBsH,WAAc,CAAA,IAAI,CAACsC,wBAAwB,CAACtC,WAC9C,EAAA,CACA,IAAI,CAAC1D,YAAY,CAAC0D,WAAAA,CAAYrlU,CAAC,CAAEqlU,WAAAA,CAAY39T,CAAC,CAAE,OAClD,CACAigU,wBAAAA,CAAyBtC,WAAW,CAAE,CACpC,MAAMlmN,MAAAA,CAAS,CACf,CAAA,IAAI7/G,IAAM,IAAI,CAAComU,kBAAkB,CAACv7M,wBAClC,IAAI+8M,SAAAA,CAAY,IAAI,CAACC,YAAY,CAAC9B,WAAAA,CAAYrlU,CAAC,CAAEmqH,wBACjD,GAAI+8M,SAAAA,CAAY,CAAG,CAAA,CACjB7B,WAAYrlU,CAAAA,CAAC,CAAGV,GAAAA,CAAM6/G,OAASj0H,IAAK08U,CAAAA,KAAK,CAAC,CAAA,CAAIV,WAChD,CAAO,KAAA,GAAIA,SAAY,CAAA,CAAA,CAAG,CACxB7B,WAAYrlU,CAAAA,CAAC,CAAG,CAACm/G,OAASj0H,IAAK08U,CAAAA,KAAK,CAAC,CAAA,CAAIV,WAC3C,CACA5nU,GAAAA,CAAM,IAAI,CAAComU,kBAAkB,CAACt7M,oBAAAA,CAAAA,CAC9B88M,SAAY,CAAA,IAAI,CAACC,YAAY,CAAC9B,WAAY39T,CAAAA,CAAC,CAAE0iH,oBAC7C,CAAA,CAAA,GAAI88M,SAAY,CAAA,CAAA,CAAG,CACjB7B,WAAY39T,CAAAA,CAAC,CAAGpI,GAAAA,CAAM6/G,OAASj0H,IAAK08U,CAAAA,KAAK,CAAC,CAAA,CAAIV,WAChD,CAAO,KAAA,GAAIA,SAAY,CAAA,CAAA,CAAG,CACxB7B,WAAY39T,CAAAA,CAAC,CAAG,CAACy3G,OAASj0H,IAAK08U,CAAAA,KAAK,CAAC,CAAA,CAAIV,WAC3C,CACA,OAAO7B,WACT,CACAtH,aAAc,CACZ,OAAO,IAAI,CAACoF,kBAAkB,EAAI,IAAI,CAACA,kBAAkB,CAAC9D,UAC5D,CACAwI,8BAAAA,CAA+BrpU,OAAO,CAAE,CACtC,GAAI,IAAI,CAAC0iU,0BAA0B,EAAExwF,SAAW,CAAA,CAC9C,IAAI,CAACwwF,0BAA0B,CAACxwF,SAAS,CAAClyO,OAAO,CAAGA,QACtD,CACA,GAAI,IAAI,CAAC+iU,wBAAwB,EAAE7wF,UAAW,CAC5C,IAAI,CAAC6wF,wBAAwB,CAAC7wF,SAAS,CAAClyO,OAAO,CAAGA,QACpD,CACF,CACAspU,0BAA2BtpU,CAAAA,OAAO,CAAE,CAClC,GAAI,IAAI,CAAC2kU,kBAAkB,CAAE,CAC3B,IAAI,CAACA,kBAAkB,CAAC3kU,OAAO,CAAGA,QACpC,CACF,CACA0jU,aAAAA,CAAcx0O,KAAK,CAAE,CACnB,GAAI,CAAC,IAAI,CAAC2yO,aAAa,EAAI,CAAC,IAAI,CAACS,cAAc,EAAEx5R,OAAS,CAAA,CACxD,MACF,CACA,MAAMygS,UAAar6O,CAAAA,KAAAA,CAAMA,KAAK,CAC9B,MAAMs6O,gBAAmBD,CAAAA,UAAAA,CAAWE,MAAM,CAAG,IAAI,CAACnH,cAAc,CAACx5R,OAAO,CAACunP,eAAe,CAAG,IAAI,CAACyxC,qBAAqB,CAACtgU,CAAC,CACvH,MAAMkoU,gBAAAA,CAAmBH,UAAWphO,CAAAA,MAAM,CAAG,IAAI,CAACm6N,cAAc,CAACx5R,OAAO,CAACwnP,gBAAgB,CAAG,IAAI,CAACwxC,qBAAqB,CAAC54T,CAAC,CACxH,MAAMygU,OAAUnpU,CAAAA,IAAAA,CAAKI,KAAK,CAAC,IAAI,CAACwiU,OAAO,CAAC5hU,CAAC,CAAGgoU,gBAAkB,CAAA,CAAA,CAAG,IAAI,CAACtC,kBAAkB,CAACv7M,sBAAAA,CAAAA,CAAAA,CACzF,MAAMi+M,OAAAA,CAAUppU,KAAKI,KAAK,CAAC,IAAI,CAACwiU,OAAO,CAACl6T,CAAC,CAAGwgU,gBAAAA,CAAkB,EAAG,IAAI,CAACxC,kBAAkB,CAACt7M,sBACzF,CAAA,IAAI,CAACs3M,MAAM,CAAG,IAAIl0T,IAAAA,CAAK26T,OAASC,CAAAA,OAAAA,EAClC,CACA1E,mBAAsB,EAAA,CACpB,MAAM,IAAI,CAAC2E,6BAA6B,CAACz8U,MAAM,CAAC,CAC9C,MAAMkC,CAAAA,CAAI,IAAI,CAACu6U,6BAA6B,CAACp7U,GAAG,EAChD,CAAA,GAAIa,EAAEw5C,OAAO,CAAE,CACbx5C,CAAAA,CAAEw5C,OAAO,CAACmhQ,QAAQ,CAAG,KACvB,CACF,CACA,IAAI,CAACq7B,qBAAqB,CAAG,MAC/B,CACAC,oBAAuB,EAAA,CACrB,MAAMuE,aAAgB,CAACx6U,CACrB,EAAA,CAAA,GAAIA,EAAEw5C,OAAO,EAAIx5C,CAAEw5C,CAAAA,OAAO,CAACmhQ,QAAQ,CAAE,CACnC,IAAI,CAAC4/B,6BAA6B,CAAC57U,IAAI,CAACqB,EACxCA,CAAAA,CAAAA,CAAEw5C,OAAO,CAACmhQ,QAAQ,CAAG,MACvB,CACA,MAAMx3J,QAAWnjJ,CAAAA,CAAAA,CAAEmjJ,QAAQ,CAC3B,IAAI,IAAItlJ,CAAAA,CAAI,CAAG6e,CAAAA,CAAAA,CAAIymI,SAASrlJ,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,IAAI,CAC7C28U,aAAAA,CAAcr3L,QAAQ,CAACtlJ,EAAE,EAC3B,CACF,CACA,CAAA,GAAI,IAAI,CAACm1U,cAAc,CAAE,CACvB,MAAM7vL,QAAW,CAAA,IAAI,CAAC6vL,cAAc,CAAC7vL,QAAQ,CAC7C,IAAI,IAAItlJ,EAAI,CAAG6e,CAAAA,CAAAA,CAAIymI,QAASrlJ,CAAAA,MAAM,CAAED,CAAI6e,CAAAA,CAAAA,CAAG7e,CAAI,EAAA,CAAA,CAC7C28U,cAAcr3L,QAAQ,CAACtlJ,CAAE,CAAA,EAC3B,CACF,CACA,IAAI,CAACm4U,qBAAqB,CAAG,KAC/B,CACA1sO,QAAW,EAAA,CACT,IAAI,CAACywO,8BAA8B,CAAC,IAAA,CAAA,CACpC,IAAI,CAACC,0BAA0B,CAAC,IAAA,CAAA,CAChC,IAAI,CAAC7F,QAAQ,GACf,CACA5qO,WAAY,CACV,IAAI,CAACwwO,8BAA8B,CAAC,KACpC,CAAA,CAAA,IAAI,CAACC,0BAA0B,CAAC,KAClC,EAAA,CACAjpD,QAAW,EAAA,CACT,IAAI,CAAC7E,yBAAyB,CAAC,KAAA,CAAA,CAC/B,IAAI,CAAC+nD,uBAAuB,CAAC,KAAA,CAAA,CAC7B,IAAI,CAACmB,kBAAkB,GACzB,CACA3zF,2CAA2Cg5F,aAAa,CAAEl5F,gBAAgB,CAAE,CAC1E,GAAIk5F,aAAAA,CAAc9H,cAAc,CAAE,CAChC,IAAI,CAACA,cAAc,CAAGpxF,gBAAgB,CAACk5F,aAAAA,CAAc9H,cAAc,CAAC/xF,OAAO,EAAG,EAChF,CACA,GAAI65F,cAAc1H,aAAa,CAAE,CAC/B,IAAI,CAACA,aAAa,CAAGxxF,gBAAgB,CAACk5F,cAAc1H,aAAa,CAACnyF,OAAO,EAAA,EAAG,CAE9E,GAAI65F,aAActH,CAAAA,yBAAyB,CAAE,CAC3C,IAAI,CAACA,yBAAyB,CAAG5xF,gBAAgB,CAACk5F,aAAAA,CAActH,yBAAyB,CAACvyF,OAAO,EAAG,EACtG,CACA,GAAI65F,aAAAA,CAAcjH,uBAAuB,CAAE,CACzC,IAAI,CAACA,uBAAuB,CAAGjyF,gBAAgB,CAACk5F,aAAAA,CAAcjH,uBAAuB,CAAC5yF,OAAO,EAAG,EAClG,CACF,CA5uBAh7O,YAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAQn1G,CAAAA,MAAAA,CAAAA,CAAS,IAAI,CAACmuM,eAAe,CAAG,IAAA,CAAM,IAAI,CAACI,cAAc,CAAG,IAAA,CAAM,IAAI,CAACI,0BAA0B,CAAG,IAAA,CAAM,IAAI,CAACK,wBAAwB,CAAG,IAAA,CAAM,IAAI,CAACY,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAACK,yBAAyB,CAAG,IAAA,CAAM,IAAI,CAACC,kBAAkB,CAAG,IAAA,CAAM,IAAI,CAACE,2BAA2B,CAAG,KAAM,IAAI,CAACI,wBAAwB,CAAG,KAAM,IAAI,CAACC,iBAAiB,CAAG,KAAM,IAAI,CAACgB,0BAA0B,CAAG,KAAM,IAAI,CAACW,6BAA6B,CAAG,KAAM,IAAI,CAACC,4BAA4B,CAAG,KAAM,IAAI,CAACV,wBAAwB,CAAG,KAAM,IAAI,CAACa,2BAA2B,CAAG,KAAM,IAAI,CAACC,0BAA0B,CAAG,IAChmB,CAAA,IAAI,CAACR,qBAAqB,CAAG,EAC7B,CAAA,IAAI,CAACpD,kBAAkB,CAAG,EAC1B,CAAA,IAAI,CAACmC,iBAAiB,CAAG,EACzB,CAAA,IAAI,CAACA,iBAAiB,CAACp5M,sBAAAA,CAAuB,CAAG,IACjD,CAAA,IAAI,CAACo5M,iBAAiB,CAACn5M,oBAAqB,CAAA,CAAG,IAC/C,CAAA,IAAI,CAACw3M,OAAO,CAAG,IAAIp0T,IACnB,CAAA,IAAI,CAACixG,SAAS,CAAG,IAAI72G,IACrB,CAAA,IAAI,CAAC47T,kBAAkB,CAAG,IAAI57T,IAC9B,CAAA,IAAI,CAACk8T,qBAAqB,CAAG,KAC7B,CAAA,IAAI,CAACuE,6BAA6B,CAAG,EAAE,CACvC,IAAI,CAACruD,yBAAyB,CAAC,IAAA,CAAA,CAC/B,IAAI,CAAC+nD,uBAAuB,CAAC,IAAA,EAC/B,CA+tBF,CA/uBI,mBAAKyG,CAAAA,eAAe,CAAG,YAAA,CAivB3B,MAAMC,wBAA2B,CAAA,EACjC,CAAMC,MAAAA,uBAAAA,CACJh1U,aAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,IACf,CAAA,IAAI,CAAC4hU,aAAa,CAAGqI,wBACrB,CAAA,IAAI,CAACpI,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,qBAAqB,CAAG,IAAI9yT,KAAK,CAAG,CAAA,CAAA,CACzC,CAAA,IAAI,CAAC+yT,6BAA6B,CAAG,CACrC,CAAA,IAAI,CAACC,2BAA2B,CAAG,CACnC,CAAA,IAAI,CAACC,cAAc,CAAG,IACtB,CAAA,IAAI,CAACI,aAAa,CAAG,IACrB,CAAA,IAAI,CAACI,yBAAyB,CAAG,IACjC,CAAA,IAAI,CAACK,uBAAuB,CAAG,KACjC,CACF,CAEA,MAAMqH,SAAAA,CAAY,CAChB,CACE15U,KAAM,SACNmU,CAAAA,IAAAA,CAAM,SACR,CAAA,CACA,CACEnU,IAAM,CAAA,YAAA,CACNmU,IAAM,CAAA,SACR,EACA,CACEnU,IAAAA,CAAM,UACNmU,CAAAA,IAAAA,CAAM,SACR,CACA,CAAA,CACEnU,IAAM,CAAA,YAAA,CACNmU,KAAM,QACR,CAAA,CACA,CACEnU,IAAAA,CAAM,eACNmU,IAAM,CAAA,QACR,CACA,CAAA,CACEnU,IAAM,CAAA,UAAA,CACNmU,IAAM,CAAA,QACR,EACA,CACEnU,IAAAA,CAAM,eACNmU,CAAAA,IAAAA,CAAM,QACR,CACA,CAAA,CACEnU,IAAM,CAAA,eAAA,CACNmU,KAAM,SACR,CAAA,CACA,CACEnU,IAAAA,CAAM,wBACNmU,IAAM,CAAA,MACR,CACA,CAAA,CACEnU,KAAM,+BACNmU,CAAAA,IAAAA,CAAM,QACR,CAAA,CACA,CACEnU,IAAM,CAAA,6BAAA,CACNmU,IAAM,CAAA,QACR,EACD,CACD,MAAMwlU,sBAAyB,CAAA,EAC/B,OAAMC,yBAAkC/uE,SAAAA,eAAAA,CAUtCI,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,GAAInqI,IAAAA,CAAKy6T,aAAa,GAAK3sU,UAAW,CACpCkS,IAAAA,CAAKy6T,aAAa,CAAGwI,uBACvB,CACA,GAAIjjU,IAAK06T,CAAAA,aAAa,GAAK5sU,SAAW,CAAA,CACpCkS,IAAK06T,CAAAA,aAAa,CAAG,KACvB,CACA,GAAI16T,IAAAA,CAAK26T,qBAAqB,GAAK7sU,SAAAA,CAAW,CAC5CkS,IAAAA,CAAK26T,qBAAqB,CAAG,IAAI9yT,IAAK,CAAA,CAAA,CAAG,GAC3C,CACA,KAAK,CAAC0sP,uBAAAA,CAAwBntB,UAAWpnO,IAAMgjU,CAAAA,SAAAA,CAC/C57F,CAAAA,SAAAA,CAAU0zF,cAAc,CAAG96T,IAAAA,CAAK86T,cAChC1zF,CAAAA,SAAU8zF,CAAAA,aAAa,CAAGl7T,IAAAA,CAAKk7T,aAAa,CAC5C9zF,SAAUk0F,CAAAA,yBAAyB,CAAGt7T,IAAKs7T,CAAAA,yBAAyB,CACpEl0F,UAAUu0F,uBAAuB,CAAG37T,IAAK27T,CAAAA,wBAAuB,CAElEn5D,QAAAA,CAAS3+J,EAAE,CAAE,CACX,MAAM/jE,UAAAA,CAAa,IAAI,CAAC0Z,KAAK,CAC7B,IAAI,MAAMxpB,EAAAA,IAAM8P,WAAW,CACzB,MAAM8sF,MAAS9sF,CAAAA,UAAU,CAAC9P,EAAG,CAAA,CAAC48F,MAAM,CACpC,MAAMw6G,SAAYx6G,CAAAA,MAAAA,CAAOk+G,UAAU,CACnC,GAAI1D,SAAUvuO,CAAAA,OAAO,EAAI+zH,MAAAA,CAAO/zH,OAAO,CAAE,CACvCuuO,SAAUo7B,CAAAA,QAAQ,GACpB,CACF,CACF,CACA4X,mBAAmBxtJ,MAAM,CAAEw6G,SAAS,CAAE,CACpCA,SAAU8xC,CAAAA,QAAQ,GACpB,CACA/pP,SAAU,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAU,CAAA,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CAzCAz0Q,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,YACV,CAAA,IAAI,CAACokO,aAAa,CAAGgmE,mBACrB,CAAA,IAAI,CAAC9lE,QAAQ,CAAGyuE,uBAChB,CAAA,IAAI,CAACr8F,MAAM,CAAGs8F,SACd,CAAA,IAAI,CAAC31U,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC+sR,kBAAkB,CAAE,IAAI,CAAA,CACrD,IAAI,CAACpkD,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAU,CAAA,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,EACnD,CAkCF,CAEA,MAAM2gE,kBAA2BxvE,SAAAA,SAAAA,CAQ/B,IAAI3zP,IAAAA,EAAO,CACT,MAAMk0P,MAAAA,CAAS,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAA,CAAG,CACvD,OAAOmrB,MAAAA,CAASA,MAAOl0P,CAAAA,IAAI,CAAG,IAChC,CACA,IAAInH,OAAAA,CAAQyH,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,GAC5B,EAAA,CACA,IAAIzH,OAAU,EAAA,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OACnB,CACA,IAAIg4G,WAAAA,CAAYvwG,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,cAAe7yQ,GAChC,EAAA,CACA,IAAIuwG,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC7wG,IAAI,CAAC6wG,WAAW,CAE9B,IAAIljH,KAAM2S,CAAAA,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAA,CAAS7yQ,KAC1B,CACA,IAAI3S,KAAQ,EAAA,CACV,OAAO,IAAI,CAACqS,IAAI,CAACrS,KAAK,CAExB,IAAIgzU,UAAAA,CAAWrgU,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAC/B,EAAA,CACA,IAAIqgU,UAAa,EAAA,CACf,OAAO,IAAI,CAAC3gU,IAAI,CAAC2gU,UACnB,CACA,IAAIyC,YAAAA,CAAa9iU,GAAG,CAAE,CACpB,GAAI,IAAI,CAAC+iU,aAAa,GAAK/iU,GAAK,CAAA,CAC9B,MACF,CACA,MAAMgzQ,QAAW,CAAA,OAAOhzQ,GAAQ,GAAA,QAAA,CAChC,GAAI,IAAI,CAAC+iU,aAAa,EAAI/vD,QAAY,EAAA,IAAI,CAAC+vD,aAAa,CAACt6F,OAAO,EAAA,GAAOzoO,GAAK,CAAA,CAC1E,MACF,CACA,GAAI,IAAI,CAAC+iU,aAAa,CAAE,CACtB,IAAI,CAACC,wBAAwB,GAC/B,CACA,GAAIhjU,GAAAA,YAAeirI,UAAW,CAC5B,IAAI,CAAC83L,aAAa,CAAG/iU,IACvB,CAAA,KAAO,GAAIgzQ,QAAAA,CAAU,CACnB,IAAI,CAAC+vD,aAAa,CAAG,IAAI,CAACthG,MAAM,CAAC/L,GAAG,CAACy0B,kBAAkB,CAACnqP,GAAQ,CAAA,EAAA,KAClE,MAAO,CACL,IAAI,CAAC+iU,aAAa,CAAG,KACvB,CACA,GAAI,IAAI,CAACA,aAAa,CAAE,CACtB,IAAI,CAACE,sBAAsB,GAC7B,CACA,GAAI,IAAI,CAACF,aAAa,CAAE,CACtB,IAAI,CAACrjU,IAAI,CAACojU,YAAY,CAAG,IAAI,CAACC,aAAa,CAACt6F,OAAO,GACrD,CAAO,KAAA,GAAIuqC,UAAYhzQ,GAAK,CAAA,CAC1B,IAAI,CAACN,IAAI,CAACojU,YAAY,CAAG9iU,IAC3B,CACF,CACA,IAAI8iU,YAAe,EAAA,CACjB,OAAO,IAAI,CAACC,aACd,CACAlwD,SAAU7pR,CAAAA,IAAI,CAAEqE,KAAK,CAAE,CACrB,MAAMqS,IAAO,CAAA,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAAA,CAAW3gN,IAAI,CAAC1W,IAAAA,CAAK,CAC3B0W,IAAI,CAAC1W,IAAAA,CAAK,CAAGqE,KAAAA,CACb,IAAI,CAACuB,IAAI,CAAC,KAAA,CAAO5F,KAAMq3N,QAAUhzN,CAAAA,KAAAA,EACnC,CACA0mR,yBAAAA,CAA0BC,OAAO,CAAE,CACjC,IAAI,CAACA,QAAQ,CAAC,WAAA,CAAa,IAAI,CAACkvD,WAAW,CAAE,IAAI,CACjD,CAAA,IAAI,CAAClvD,OAAQ,CAAA,CAAC,gBAAkB,CAAA,IAAI,CAACmvD,gBAAgB,CAAE,IAAI,CAAA,CAC3D,IAAI,CAACnvD,OAAAA,CAAQ,CAAC,iBAAA,CAAmB,IAAI,CAACovD,iBAAiB,CAAE,IAAI,EAC/D,CACAH,sBAAAA,EAAyB,CACvB,IAAI,CAACI,0BAA0B,CAAG,IAAI,CAACN,aAAa,CAACh2U,EAAE,CAAC,aAAA,CAAe,IAAI,CAACu2U,oBAAoB,CAAE,IAAI,EACtG,GAAI,IAAI,CAACP,aAAa,CAAC1hS,OAAO,CAAE,CAC9B,IAAI,CAACiiS,oBAAoB,GAC3B,CACF,CACAN,0BAA2B,CACzB,IAAI,CAACK,0BAA0B,EAAE12U,GACjC,EAAA,CAAA,IAAI,CAAC02U,0BAA0B,CAAG,IAAA,CAClC,GAAI,IAAI,CAACN,aAAa,EAAE1hS,OAAS,CAAA,CAC/B,IAAI,CAACkiS,oBAAoB,GAC3B,CACF,CACAC,6BAAAA,EAAgC,CAC9B,MAAMniS,QAAU,IAAI,CAAC0hS,aAAa,CAAC1hS,OAAO,CAC1C,MAAMoiS,OAAU,CAAA,IAAI,CAACC,uBAAuB,CAC5CD,OAAQj9U,CAAAA,IAAI,CAAC66C,OAAQl0C,CAAAA,IAAI,CAAC,cAAA,CAAgB,IAAI,CAACo2U,oBAAoB,CAAE,IAAI,GACzEE,OAAQj9U,CAAAA,IAAI,CAAC66C,OAAAA,CAAQt0C,EAAE,CAAC,YAAA,CAAc,IAAI,CAAC42U,qBAAqB,CAAE,IAAI,CACtEF,CAAAA,CAAAA,OAAAA,CAAQj9U,IAAI,CAAC66C,OAAAA,CAAQt0C,EAAE,CAAC,aAAc,IAAI,CAAC42U,qBAAqB,CAAE,IAAI,CACtEF,CAAAA,CAAAA,OAAAA,CAAQj9U,IAAI,CAAC66C,QAAQt0C,EAAE,CAAC,WAAa,CAAA,IAAI,CAAC42U,qBAAqB,CAAE,IAAI,CAAA,EACvE,CACAC,+BAAkC,EAAA,CAChC,IAAI,IAAIl+U,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACg+U,uBAAuB,CAAC/9U,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1D,IAAI,CAACg+U,uBAAuB,CAACh+U,EAAE,CAACiH,GAAG,GACrC,CACA,IAAI,CAAC+2U,uBAAuB,CAAC/9U,MAAM,CAAG,EACxC,CACA29U,oBAAuB,EAAA,CACrB,IAAI,CAACE,6BAA6B,EAClC,CAAA,IAAI,CAACvG,kBAAkB,EACvB,CAAA,IAAI,CAAC4G,iBAAiB,CAAG,IAAItM,iBAAAA,CAAkB,IAAI,CAACwL,aAAa,CAAC1hS,OAAO,CAAE,IAAI,CAACs+R,QAAQ,EAAA,CAAA,CACxF,IAAI,CAACkE,iBAAiB,CAAC92U,EAAE,CAAC,WAAa,CAAA,IAAI,CAAC+2U,aAAa,CAAE,IAAI,CAAA,CAC/D,IAAI,CAACC,4BAA4B,GACnC,CACAR,oBAAuB,EAAA,CACrB,IAAI,CAACK,+BAA+B,EACpC,CAAA,IAAI,CAAC3G,kBAAkB,GACzB,CACA6G,aAAAA,CAAc95T,QAAQ,CAAE,CACtB,GAAI,IAAI,CAAC+4T,aAAa,EAAI,IAAI,CAACxqU,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC7D,IAAI,CAAClL,KAAK,CAAG,IAAI,CAAC22U,4BAA4B,CAACh6T,QAAQ,CAAC,IAAI,CAAC21T,QAAQ,EAAG,CAAA,EAC1E,CACF,CACAuD,WAAAA,CAAYl6U,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACpC,GAAIx/I,IAAKma,CAAAA,GAAG,CAACqlI,QAAAA,CAAW47E,UAAY,IAAM,CAAA,CACxC,IAAI,CAAC3gN,IAAI,CAACrS,KAAK,CAAG0L,IAAAA,CAAKI,KAAK,CAACsrI,QAAAA,CAAU,CAAG,CAAA,CAAA,CAAA,CAC1C,IAAI,CAACs/L,4BAA4B,EACjC,CAAA,IAAI,CAACn1U,IAAI,CAAC,WAAa,CAAA,IAAI,CAAC8Q,IAAI,CAACrS,KAAK,EACxC,CACF,CACA81U,gBAAAA,CAAiBn6U,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CACzC,GAAIx/I,IAAKma,CAAAA,GAAG,CAACqlI,QAAAA,CAAW47E,UAAY,IAAM,CAAA,CACxC,IAAI,CAAC3gN,IAAI,CAAC2gU,UAAU,CAAGtnU,IAAAA,CAAKI,KAAK,CAACsrI,QAAAA,CAAU,CAAG,CAAA,CAAA,CAAA,CAC/C,IAAI,CAACs/L,4BAA4B,GACnC,CACF,CACAJ,qBAAwB,EAAA,CACtB,IAAI,CAACI,4BAA4B,GACnC,CACAX,iBAAkBp6U,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC1C,GAAIA,QAAAA,GAAa47E,QAAY,EAAA,IAAI,CAAC0iH,aAAa,EAAE1hS,OAAS,CAAA,CACxD,IAAI,CAAC0hS,aAAa,CAAC1hS,OAAO,CAAC,IAAI,CAAC4iS,qBAAqB,EAAA,CAAG,CAAG,EAC7D,CACF,CACAF,4BAAAA,EAA+B,CAC7B,MAAMjB,YAAAA,CAAe,IAAI,CAACC,aAAa,CACvC,MAAMmB,aAAAA,CAAgBpB,cAAczhS,OACpC,CAAA,GAAIyhS,YAAc,CAAA,CAChB,MAAM94T,QAAW84T,CAAAA,YAAAA,CAAax1L,gBAAgB,EAC9CtjI,CAAAA,QAAQ,CAAC,IAAI,CAAC21T,QAAQ,EAAG,CAAA,CAAG,IAAI,CAACwE,kBAAkB,EACnDrB,CAAAA,YAAAA,CAAaz0L,gBAAgB,CAACrkI,UAChC,CACA,GAAIk6T,aAAe,CAAA,CACjBA,aAAa,CAAC,IAAI,CAACE,aAAa,GAAG,CAAG,IAAI,CAACC,gBAAgB,GAC7D,CACF,CACAL,4BAA6BM,CAAAA,cAAc,CAAE,CAC3C,OAAOA,cAAiB,CAAA,IAAI,CAAC1E,QAAQ,EAAA,CAAK,IAAI,CAAC2E,qBAAqB,EACtE,CACAC,4BAA6Bn3U,CAAAA,KAAK,CAAE,CAClC,OAAOA,KAAQ,CAAA,IAAI,CAACuyU,QAAQ,EAAA,CAAK,IAAI,CAAC2E,qBAAqB,EAC7D,CACAA,qBAAwB,EAAA,CACtB,OAAOt/U,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAACorU,eAAe,EAAK,CAAA,IAAI,CAACJ,gBAAgB,EAAA,CAAI,IACpE,CAAA,CACAI,iBAAkB,CAChB,GAAI,IAAI,CAACn4M,MAAM,CAACjrF,OAAO,CAAE,CACvB,OAAO,IAAI,CAACkvE,WAAW,GAAK2T,uBAAyB,IAAI,CAACoI,MAAM,CAACjrF,OAAO,CAACunP,eAAe,CAAG,IAAI,CAACt8J,MAAM,CAACjrF,OAAO,CAACwnP,gBAAgB,CAEjI,OAAO,CACT,CACAw7C,gBAAmB,EAAA,CACjB,OAAO,IAAI,CAACI,eAAe,EAAA,CAAK,IAAI,CAACpE,UAAU,CAEjD8D,kBAAqB,EAAA,CACnB,OAAO,IAAI,CAACK,4BAA4B,CAAC,IAAI,CAACn3U,KAAK,CACrD,CACAuyU,UAAW,CACT,OAAO,IAAI,CAACrvN,WAAW,GAAK2T,sBAAyB,CAAA,CAAA,CAAI,CAAC,CAC5D,CACAy7M,QAAW,EAAA,CACT,OAAO,IAAI,CAACpvN,WAAW,GAAK2T,uBAAyB,GAAM,CAAA,GAC7D,CACAkgN,aAAAA,EAAgB,CACd,OAAO,IAAI,CAAC7zN,WAAW,GAAK2T,sBAAyB,CAAA,OAAA,CAAU,QACjE,CACA+/M,uBAAwB,CACtB,OAAO,IAAI,CAAC1zN,WAAW,GAAK2T,sBAAAA,CAAyB,QAAW,CAAA,OAClE,CACA+4M,kBAAqB,EAAA,CACnB,GAAI,IAAI,CAAC4G,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAACh1S,OAAO,GAChC,CACF,CACA61S,yBAAAA,CAA0BnsU,OAAO,CAAE,CACjC,GAAI,IAAI,CAACsrU,iBAAiB,CAAE,CAC1B,IAAI,CAACA,iBAAiB,CAACtrU,OAAO,CAAGA,QACnC,CACF,CACA44F,QAAW,EAAA,CACT,IAAI,CAACuzO,yBAAyB,CAAC,IAAA,EACjC,CACAtzO,SAAAA,EAAY,CACV,IAAI,CAACszO,yBAAyB,CAAC,OACjC,CACA9rD,QAAAA,EAAW,CACT,IAAI,CAACqkD,kBAAkB,EAAA,CACvB,IAAI,CAAClpD,yBAAyB,CAAC,KAAA,EACjC,CACAzqC,0CAAAA,CAA2Cq7F,YAAY,CAAEv7F,gBAAgB,CAAE,CACzE,GAAIu7F,YAAa7B,CAAAA,YAAY,CAAE,CAC7B,IAAI,CAACA,YAAY,CAAG15F,gBAAgB,CAACu7F,YAAa7B,CAAAA,YAAY,CAACr6F,OAAO,IAAG,CAE7E,CA9MAh7O,WAAAA,CAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,MAAS,CAAA,CAAA,IAAI,CAACy2M,aAAa,CAAG,IAAM,CAAA,IAAI,CAACM,0BAA0B,CAAG,IAAM,CAAA,IAAI,CAACK,uBAAuB,CAAG,EAAE,CAC3H,IAAI,CAAC3vD,yBAAyB,CAAC,IAAA,EACjC,CA4MF,CAjNI,kBAFE8uD,CAEG+B,cAAc,CAAG,WAmN1B,CAAMC,MAAAA,sBAAAA,CACJp3U,aAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,IACf,CAAA,IAAI,CAACg4G,WAAW,CAAG2T,sBACnB,CAAA,IAAI,CAAC72H,KAAK,CAAG,CACb,CAAA,IAAI,CAACgzU,UAAU,CAAG,CAClB,CAAA,IAAI,CAACyC,YAAY,CAAG,KACtB,CACF,CAEA,MAAMgC,SAAAA,CAAY,CAChB,CACE97U,IAAAA,CAAM,SACNmU,CAAAA,IAAAA,CAAM,SACR,CACA,CAAA,CACEnU,IAAM,CAAA,aAAA,CACNmU,KAAM,QACR,CAAA,CACA,CACEnU,IAAAA,CAAM,QACNmU,IAAM,CAAA,QACR,CACA,CAAA,CACEnU,KAAM,YACNmU,CAAAA,IAAAA,CAAM,QACR,CAAA,CACD,CACK4nU,MAAAA,wBAAAA,SAAiClxE,eAUrCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,KAAK,CAACoqH,wBAAwBntB,SAAWpnO,CAAAA,IAAAA,CAAMolU,SAC/Ch+F,CAAAA,CAAAA,UAAUg8F,YAAY,CAAGpjU,IAAKojU,CAAAA,aAAY,CAE5CkC,eAAAA,CAAgB14M,MAAM,CAAE,CACtBA,MAAO19H,CAAAA,IAAI,CAAC,eAAA,EACd,CACAkrR,kBAAmBxtJ,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CACpCA,SAAAA,CAAU8xC,QAAQ,GACpB,CAlBAnrR,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,WACV,CAAA,IAAI,CAACokO,aAAa,CAAG+uE,kBACrB,CAAA,IAAI,CAAC7uE,QAAQ,CAAG6wE,sBAChB,CAAA,IAAI,CAACz+F,MAAM,CAAG0+F,SACd,CAAA,IAAI,CAAC/3U,EAAE,CAAC,KAAO,CAAA,IAAI,CAACi4U,eAAe,CAAE,IAAI,CAAA,CACzC,IAAI,CAACj4U,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC+sR,kBAAkB,CAAE,IAAI,EACvD,CAWF,CAEA,MAAMmrD,eAAkB,CAAA,CACtB/vS,OAAQ,CACRi/E,CAAAA,KAAAA,CAAO,CACPF,CAAAA,IAAAA,CAAM,MACNS,SAAW,CAAA,CAAA,CACXt8B,QAAU,CAAA,CAAA,CACVpuE,SAAU,IAAIrI,IAAAA,CACd82G,WAAa,CAAA,CAAA,CACbC,YAAa,CACbC,CAAAA,aAAAA,CAAe,CACfE,CAAAA,aAAAA,CAAe,EACf7B,MAAQ,CAAA,IAAA,CACRC,OAAS,CAAA,IAAA,CACTC,SAAU,IACVC,CAAAA,MAAAA,CAAQ,IACRC,CAAAA,KAAAA,CAAO,IACT,CACA,CAAA,MAAM8tN,SAAkBv3U,SAAAA,YAAAA,CA4CtB4lH,MAAO,CACL,GAAI,CAAC,IAAI,CAAC4xN,OAAO,CAAE,CACjB,IAAI,CAAC9xN,IAAI,GACX,CACA,GAAI,CAAC,IAAI,CAAC+xN,QAAQ,EAAI,CAAC,IAAI,CAACC,SAAS,EAAA,CAAI,CACvC,OAAO73U,SACT,CACA,MAAMoE,SAAW,IAAI,CAAC0zU,eAAe,EAAA,CACrC,IAAI,CAACz/J,SAAS,CAACr/K,IAAI,CAACoL,QACpB,CAAA,CAAA,GAAI,CAAC,IAAI,CAACwzU,QAAQ,CAAE,CAClB,MAAM7gG,OAAS,SAAS/vH,KAAK,CAC3B,CAAA,MAAM+wN,eAAiB3zU,QAASokH,CAAAA,eAAe,CAC/CpkH,SAAS4iH,KAAK,CAAGA,KACjB,CAAA,GAAI+wN,eAAgB,CAClB3zU,QAAAA,CAAS2hH,IAAI,GACf,CACF,CACA,CAAA,IAAI,CAAC5mH,GAAG,CAAC,MAAQ43O,CAAAA,MAAAA,CAAAA,CACjB,IAAI,CAACp3O,IAAI,CAAC,MAAA,CAAQo3O,MAClB,CAAA,CAAA,IAAI,CAAC3I,IAAI,GACX,CAAO,KAAA,CACLhqO,SAAS2hH,IAAI,GACf,CACA,OAAO3hH,QACT,CACA8jH,KAAAA,EAAQ,CACN,IAAIsC,OAAS,KACb,CAAA,MAAM6tD,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,CAAI,CAAA,CAAA,CAAGkY,GAAMioK,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClD,GAAImgL,SAAS,CAACngL,CAAAA,CAAE,CAACgwH,KAAK,EAAA,CAAI,CACxBsC,MAAAA,CAAS,KACX,CACF,CACA,OAAOA,MACT,CACArG,MAAS,EAAA,CACP,IAAI6zN,OAAAA,CAAU,MACd,MAAM3/J,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,CAAAA,CAAI,EAAGkY,GAAMioK,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClD,GAAImgL,SAAS,CAACngL,CAAAA,CAAE,CAACisH,MAAM,GAAI,CACzB6zN,OAAAA,CAAU,KACZ,CACF,CACA,OAAOA,OACT,CACAnyN,IAAAA,EAAO,CACL,IAAIoyN,OAAAA,CAAU,KACd,CAAA,MAAM5/J,UAAY,IAAI,CAACA,SAAS,CAChC,IAAIngL,CAAImgL,CAAAA,SAAAA,CAAUlgL,MAAM,CACxB,MAAMD,CAAAA,EAAAA,CAAI,CACRmgL,SAAS,CAACngL,CAAE,CAAA,CAAC2tH,IAAI,EAAA,CACjBoyN,QAAU,KACZ,CACA5/J,SAAUlgL,CAAAA,MAAM,CAAG,CACnB,CAAA,OAAO8/U,OACT,CACA7pG,MAAO,CACL,GAAI,CAAC,IAAI,CAACypG,SAAS,EAAA,CAAI,CACrB,MACF,CACA,MAAMhmH,KAAAA,CAAQ,IAAI,CAACqe,OAAO,CAACj2O,GAAG,CAAC,IAAI,CAAC8mR,MAAM,CAAA,CAC1C,GAAI,CAAClvD,MAAO,CACV,IAAI,CAACqe,OAAO,CAAC/wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC4hR,MAAM,CAAC,CAAC,CAAE,IAAI,CAACtuC,WAAW,CAAE,IAAI,CAAA,CAC7D,IAAI,CAACvC,OAAO,CAACvwO,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAACohR,MAAM,CAAC,CAAC,CAAE,IAAI,CAACtuC,WAAW,CAAE,IAAI,CAAA,CAC9D,MACF,CACA5gB,KAAAA,CAAM1yN,GAAG,CAAC,SAAU,IAAI,CAAC+4U,eAAe,CAAE,IAAI,CAC9CrmH,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,SAAU,IAAI,CAAC24U,eAAe,CAAE,IAAI,CAC7C,CAAA,GAAI,CAACrmH,KAAAA,CAAMpyK,QAAQ,CAAE,CACnBoyK,KAAM1yN,CAAAA,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACo5O,YAAY,CAAE,IAAI,CAAA,CACzC1mB,KAAMlyN,CAAAA,IAAI,CAAC,MAAQ,CAAA,IAAI,CAAC44O,YAAY,CAAE,IAAI,CAAA,CAC1C,IAAI,CAACrI,OAAO,CAAC9B,IAAI,CAACvc,KAAAA,CAAAA,CAClB,MACF,CACA,IAAI,CAACzwN,IAAI,CAAC,MAAQywN,CAAAA,KAAAA,CAAMpyK,QAAQ,EAClC,CACAopE,gBAAiBC,CAAAA,SAAS,CAAEC,QAAQ,CAAE,CACpC,GAAI,CAACD,SAAAA,CAAW,CACdnkH,OAAQC,CAAAA,KAAK,CAAC,2CAAA,CAAA,CACd,MACF,CACA,GAAI,CAACmkH,QAAAA,CAAU,CACbA,QAAWD,CAAAA,UACb,CACA,IAAI,CAACG,UAAU,CAAGH,SAClB,CAAA,IAAI,CAACI,SAAS,CAAGH,QAAAA,CACjB,GAAI,CAAC,IAAI,CAACovN,QAAQ,CAAE,CAClB,MAAM9/J,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,EAAI,CAAGkY,CAAAA,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClDmgL,SAAS,CAACngL,CAAAA,CAAE,CAAC2wH,gBAAgB,CAACC,SAAWC,CAAAA,QAAAA,EAC3C,CACF,CACF,CACAI,kBAAqB,EAAA,CACnB,IAAI,CAACF,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,SAAS,CAAG,IACjB,CAAA,GAAI,CAAC,IAAI,CAACivN,QAAQ,CAAE,CAClB,MAAM9/J,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,EAAI,CAAGkY,CAAAA,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClDmgL,SAAS,CAACngL,CAAAA,CAAE,CAACixH,kBAAkB,GACjC,CACF,CACF,CACAC,gBAAAA,EAAmB,CACjB,OAAO,CACL,IAAI,CAACH,UAAU,CACf,IAAI,CAACC,SAAS,CACf,CAEH2uN,SAAY,EAAA,CACV,OAAO,IAAI,CAAC92D,MAAM,EAAI,IACxB,CACA+2D,eAAAA,EAAkB,CAChB,IAAI1zU,SAAW,IACf,CAAA,MAAMk1O,SAAY,CAAA,IAAI,CAACmzB,UAAU,CACjC,IAAIzlJ,KAAAA,CAAQ,KACZ,GAAI,IAAI,CAAC6wN,SAAS,GAAI,CACpB,MAAMhmH,KAAQ,CAAA,IAAI,CAACqe,OAAO,CAACj2O,GAAG,CAAC,IAAI,CAAC8mR,MAAM,CAC1C,CAAA,GAAIlvD,MAAO,CACT7qG,KAAAA,CAAQ6qG,KAAMpyK,CAAAA,SAAQ,CAE1B,CACA,MAAMvtC,IAAAA,CAAOulU,eACbvlU,CAAAA,IAAAA,CAAKw1B,MAAM,CAAG,IAAI,CAACpB,OAAO,CAAGgzM,SAAAA,CAAU5xM,MAAM,CAC7Cx1B,IAAKy0G,CAAAA,KAAK,CAAG,IAAI,CAACG,MAAM,CAAGwyH,UAAU3yH,KACrCz0G,CAAAA,IAAAA,CAAKu0G,IAAI,CAAG,IAAI,CAACC,KAAK,CACtBx0G,IAAAA,CAAKg1G,SAAS,CAAG,IAAI,CAACC,UAAU,CAChCj1G,KAAK04E,QAAQ,CAAG,IAAI,CAACs7B,SAAS,CAC9Bh0G,IAAKs3G,CAAAA,MAAM,CAAG,IAAI,CAAC4uN,sBACnBlmU,CAAAA,IAAKu3G,CAAAA,OAAO,CAAG,IAAI,CAAC4uN,uBAAuB,CAC3CnmU,KAAKw3G,QAAQ,CAAG,IAAI,CAAC4uN,wBAAwB,CAC7CpmU,IAAKy3G,CAAAA,MAAM,CAAG,IAAI,CAAC4uN,sBACnBrmU,CAAAA,IAAK03G,CAAAA,KAAK,CAAG,IAAI,CAAC4uN,qBAAqB,CACvC,GAAIl/F,SAAAA,CAAUm/F,UAAU,CAAE,CACxBvmU,IAAKsK,CAAAA,QAAQ,CAACvlB,IAAI,CAACqiP,SAAUx6G,CAAAA,MAAM,CAACtc,WAAW,EAAA,CAC/CtwG,CAAAA,IAAAA,CAAK+4G,WAAW,CAAGquH,SAAAA,CAAUruH,WAC7B/4G,CAAAA,IAAKg5G,CAAAA,WAAW,CAAGouH,SAAAA,CAAUpuH,WAAW,CACxCh5G,IAAKi5G,CAAAA,aAAa,CAAGmuH,SAAUnuH,CAAAA,aAAa,CAC5Cj5G,KAAKm5G,aAAa,CAAGiuH,SAAUjuH,CAAAA,aAAa,CAC5CjnH,QAAW,CAAA,IAAIumH,eAAgB,CAAA,IAAI,CAACpH,QAAQ,CAAEyD,KAAO90G,CAAAA,IAAAA,EACvD,MAAO,CACL9N,QAAAA,CAAW,IAAIqhH,aAAAA,CAAc,IAAI,CAAClC,QAAQ,CAAEyD,KAAAA,CAAO90G,MACrD,CACA,GAAI,IAAI,CAAC+2G,UAAU,CAAE,CACnB7kH,QAASykH,CAAAA,gBAAgB,CAAC,IAAI,CAACI,UAAU,CAAE,IAAI,CAACC,SAAS,EAC3D,CACA,OAAO9kH,QACT,CACAs0U,eAAgBt0U,CAAAA,QAAQ,CAAE,CACxB,IAAI,CAAChD,IAAI,CAAC,MAAQgD,CAAAA,QAAAA,CAAAA,CAClB,IAAI,CAACqoQ,UAAU,CAACrrQ,IAAI,CAAC,MAAA,CAAQ,IAAI,CAAEgD,QAAAA,EACrC,CACAu0U,gBAAAA,CAAiBv0U,QAAQ,CAAE,CACzB,IAAI,CAAChD,IAAI,CAAC,OAAA,CAASgD,QACnB,CAAA,CAAA,IAAI,CAACqoQ,UAAU,CAACrrQ,IAAI,CAAC,QAAS,IAAI,CAAEgD,QACtC,EAAA,CACAw0U,kBAAkBx0U,QAAQ,CAAE,CAC1B,IAAI,CAAChD,IAAI,CAAC,QAAA,CAAUgD,UACpB,IAAI,CAACqoQ,UAAU,CAACrrQ,IAAI,CAAC,QAAA,CAAU,IAAI,CAAEgD,UACvC,CACAy0U,eAAAA,CAAgBz0U,QAAQ,CAAE,CACxB,MAAM5B,GAAAA,CAAM,IAAI,CAAC61K,SAAS,CAACl3K,OAAO,CAACiD,QAAAA,CAAAA,CACnC,GAAI5B,GAAQ,GAAA,CAAC,CAAG,CAAA,CACd,IAAI,CAAC61K,SAAS,CAACr3K,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC7B,CACA,IAAI,CAACpB,IAAI,CAAC,MAAQgD,CAAAA,QAAAA,CAAAA,CAClB,IAAI,CAACqoQ,UAAU,CAACrrQ,IAAI,CAAC,MAAQ,CAAA,IAAI,CAAEgD,QAAAA,EACrC,CACA00U,cAAe10U,CAAAA,QAAQ,CAAE,CACvB,MAAM5B,GAAM,CAAA,IAAI,CAAC61K,SAAS,CAACl3K,OAAO,CAACiD,QACnC,CAAA,CAAA,GAAI5B,MAAQ,CAAC,CAAA,CAAG,CACd,IAAI,CAAC61K,SAAS,CAACr3K,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC7B,CACA,IAAI,CAACpB,IAAI,CAAC,KAAOgD,CAAAA,QAAAA,CAAAA,CACjB,IAAI,CAACqoQ,UAAU,CAACrrQ,IAAI,CAAC,KAAO,CAAA,IAAI,CAAEgD,QAAAA,EACpC,CACAquO,WAAY5gB,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACuc,IAAI,GACX,CACAmK,aAAa1mB,KAAK,CAAE,CAClB,IAAI,CAACuc,IAAI,GACX,CACA8pG,eAAAA,CAAgBrmH,KAAK,CAAE,CACrBA,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC+4U,eAAe,CAAE,IAAI,CAAA,CAC9C,IAAI,CAAChoG,OAAO,CAAC/wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAE,IAAI,CAACuwM,WAAW,CAAE,IAAI,CAAA,CAC1D,IAAI,CAAC5sH,IAAI,GACX,CACAkzN,cAAAA,CAAev8T,QAAQ,CAAE,CACvB,MAAM67J,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,CAAI,CAAA,CAAA,CAAGkY,GAAMioK,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClDmgL,SAAS,CAACngL,CAAE,CAAA,CAACskB,QAAQ,CAAGA,SAC1B,CACF,CACA,IAAIq1M,KAAMhyN,CAAAA,KAAK,CAAE,CACf,MAAM0sI,GAAM,CAAA,IAAI,CAACw0I,MAAM,CACvB,GAAIx0I,GAAAA,CAAK,CACP,IAAI,CAAC2jG,OAAO,CAAC/wO,GAAG,CAAC,CAAC,IAAI,EAAEotI,GAAI,CAAA,CAAC,CAAE,IAAI,CAACkmG,WAAW,CAAE,IAAI,CACrD,CAAA,MAAMumG,QAAW,CAAA,IAAI,CAAC9oG,OAAO,CAACj2O,GAAG,CAACsyI,KAClC,GAAIysM,QAAAA,CAAU,CACZA,QAAAA,CAAS75U,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC+4U,eAAe,CAAE,IAAI,EACnD,CACF,CACA,IAAI,CAACn3D,MAAM,CAAGlhR,MACd,GAAI,IAAI,CAACkhR,MAAM,YAAY9zC,KAAO,CAAA,CAChC,IAAI,CAAC8zC,MAAM,CAAG,IAAI,CAACA,MAAM,CAAC7+O,GAC5B,CACA,GAAI,IAAI,CAAC21S,SAAS,EAAM,EAAA,IAAI,CAACprE,UAAU,CAAC1hQ,OAAO,EAAI,IAAI,CAAC0hQ,UAAU,CAAC3tI,MAAM,CAAC/zH,OAAO,CAAE,CACjF,IAAI,CAACqjO,IAAI,GACX,CACF,CACA,IAAIvc,KAAQ,EAAA,CACV,OAAO,IAAI,CAACkvD,MACd,CACA,IAAI6uC,SAAS/vT,KAAK,CAAE,CAClB,IAAI,CAACo5U,SAAS,CAAG,CAAC,CAACp5U,MACrB,CACA,IAAI+vT,QAAAA,EAAW,CACb,OAAO,IAAI,CAACqpB,SAAS,CAEvB,IAAIruP,QAAS/qF,CAAAA,KAAK,CAAE,CAClB,IAAI,CAACqmH,SAAS,CAAGzuH,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGmW,OAAOniB,KAAU,CAAA,EAAA,CAAA,CAAA,EAAM,IACpD,CAAA,GAAI,CAAC,IAAI,CAACs4U,QAAQ,CAAE,CAClB,MAAM9/J,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,CAAAA,CAAI,EAAGkY,GAAMioK,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClDmgL,SAAS,CAACngL,CAAE,CAAA,CAAC0yF,QAAQ,CAAG,IAAI,CAACs7B,UAAS,CAE1C,CACF,CACA,IAAIt7B,QAAW,EAAA,CACb,IAAIsuP,aAAgB,CAAA,CAAA,CACpB,GAAI,IAAI,CAACrB,SAAS,EAAA,CAAI,CACpB,MAAMhmH,MAAQ,IAAI,CAACqe,OAAO,CAACj2O,GAAG,CAAC,IAAI,CAAC8mR,MAAM,EAC1Cm4D,aAAgBrnH,CAAAA,KAAAA,EAAOpyK,QAAWoyK,CAAAA,KAAAA,CAAMpyK,QAAQ,CAACmrC,QAAQ,CAAG,EAC9D,CACA,GAAI,IAAI,CAACs7B,SAAS,EAAI,IAAM,CAAA,CAC1B,OAAO,IAAI,CAACA,SAAS,EAAIgzN,aAAAA,EAAiB,CAAA,CAC5C,CACA,OAAOA,aACT,CACA,IAAItB,QAAAA,EAAW,CACb,GAAI,IAAI,CAACC,SAAS,EAAI,CAAA,CACpB,MAAMhmH,KAAQ,CAAA,IAAI,CAACqe,OAAO,CAACj2O,GAAG,CAAC,IAAI,CAAC8mR,MAAM,CAC1C,CAAA,GAAIlvD,KAAO,CAAA,CACT,OAAO,CAAC,CAACA,KAAMpyK,CAAAA,QAAQ,CAE3B,CACA,OAAO,KACT,CACA,IAAI4mE,QAAAA,EAAW,CACb,MAAMgyD,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,MAAMjoK,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAC5B,GAAIiY,GAAAA,GAAQ,CAAG,CAAA,CACb,OAAO,KACT,CACA,IAAI,IAAIlY,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,GAAI,CAACmgL,SAAS,CAACngL,EAAE,CAACmuH,QAAQ,CAAE,CAC1B,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,IAAIF,SAAY,EAAA,CACd,MAAMkyD,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,CAAI,CAAA,CAAA,CAAGkY,IAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAClD,GAAImgL,SAAS,CAACngL,CAAE,CAAA,CAACiuH,SAAS,CAAE,CAC1B,OAAO,IACT,CACF,CACA,OAAO,KACT,CACA,IAAIG,SAAAA,EAAY,CACd,MAAM+xD,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,CAAAA,CAAI,EAAGkY,GAAMioK,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClD,GAAI,CAACmgL,SAAS,CAACngL,CAAE,CAAA,CAACouH,SAAS,CAAE,CAC3B,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,IAAIG,IAAK5mH,CAAAA,KAAK,CAAE,CACd,IAAI,CAAC6mH,KAAK,CAAG,CAAC,CAAC7mH,KACf,CAAA,MAAMw4K,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,EAAI,CAAGkY,CAAAA,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClDmgL,SAAS,CAACngL,CAAAA,CAAE,CAACuuH,IAAI,CAAG,IAAI,CAACC,MAC3B,CACF,CACA,IAAID,IAAO,EAAA,CACT,OAAO,IAAI,CAACC,KAAK,CAEnB,IAAIixN,OAAQ93U,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACs4U,QAAQ,CAAG,CAAC,CAACt4U,MACpB,CACA,IAAI83U,OAAU,EAAA,CACZ,OAAO,IAAI,CAACQ,QACd,CACA,IAAIxxN,MAAM9mH,KAAK,CAAE,CACf,IAAI,CAACinH,MAAM,CAAGrvH,IAAKoU,CAAAA,GAAG,CAACmW,MAAOniB,CAAAA,KAAAA,CAAAA,EAAU,CAAG,CAAA,GAAA,CAAA,CAC3C,GAAI,CAAC,IAAI,CAACs4U,QAAQ,CAAE,CAClB,MAAM9/J,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,EAAI,CAAGkY,CAAAA,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClDmgL,SAAS,CAACngL,CAAAA,CAAE,CAACyuH,KAAK,CAAG,IAAI,CAACA,KAAK,CAAG,IAAI,CAAC8lJ,UAAU,CAAC9lJ,MAAK,CAE3D,CACF,CACA,IAAIA,KAAQ,EAAA,CACV,OAAO,IAAI,CAACG,MACd,CACA,IAAII,UAAUrnH,KAAK,CAAE,CACnB,IAAI,CAACsnH,UAAU,CAAG1vH,IAAKoU,CAAAA,GAAG,CAAC,CAAGmW,CAAAA,MAAAA,CAAOniB,KAAU,CAAA,EAAA,CAAA,CAAA,CAC/C,GAAI,CAAC,IAAI,CAACs4U,QAAQ,CAAE,CAClB,MAAM9/J,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,EAAI,CAAGkY,CAAAA,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClDmgL,SAAS,CAACngL,CAAAA,CAAE,CAACgvH,SAAS,CAAG,IAAI,CAACC,WAChC,CACF,CACF,CACA,IAAID,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIz/E,MAAAA,CAAO7nC,KAAK,CAAE,CAChB,IAAI,CAACymC,OAAO,CAAG/6B,IAAAA,CAAKI,KAAK,CAACqW,OAAOniB,KAAU,CAAA,EAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACjD,GAAI,CAAC,IAAI,CAACs4U,QAAQ,CAAE,CAClB,MAAM9/J,SAAY,CAAA,IAAI,CAACA,SAAS,CAChC,IAAI,IAAIngL,EAAI,CAAGkY,CAAAA,GAAAA,CAAMioK,SAAUlgL,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAClDmgL,SAAS,CAACngL,CAAAA,CAAE,CAACwvC,MAAM,CAAG,IAAI,CAACpB,OAAO,CAAG,IAAI,CAACmmO,UAAU,CAAC/kO,OAAM,CAE/D,CACF,CACA,IAAIA,QAAS,CACX,OAAO,IAAI,CAACpB,OAAO,CAlWrBrmC,WAAYq5O,CAAAA,SAAS,CAAE99O,IAAO,CAAA,UAAU,CAAEmO,OAAAA,CAAU,EAAE,CAAC,CACrD,KAAK,GAAI,IAAI,CAAC0uK,SAAS,CAAG,EAAE,CAC5B,IAAI,CAACo0F,UAAU,CAAGnzB,SAClB,CAAA,IAAI,CAACpJ,OAAO,CAAGoJ,SAAUrF,CAAAA,MAAM,CAAC/L,GAAG,CAAC+H,MACpC,CAAA,IAAI,CAAC1sH,QAAQ,CAAG+1H,UAAUrF,MAAM,CAACzwH,OACjC,CAAA,IAAI,CAAChoH,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC8qC,OAAO,CAAG38B,OAAQ+9B,CAAAA,MAAM,GAAK1nC,SAAAA,CAAYuL,KAAKI,KAAK,CAACqW,MAAOrY,CAAAA,OAAAA,CAAQ+9B,MAAM,CAAK,EAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAK,CAC9F,CAAA,IAAI,CAACo/E,MAAM,CAAGn9G,OAAQg9G,CAAAA,KAAK,GAAK3mH,SAAAA,CAAYvI,KAAKoU,GAAG,CAAC,GAAMmW,CAAAA,MAAAA,CAAOrY,OAAQg9G,CAAAA,KAAK,CAAK,EAAA,CAAA,CAAA,CAAK,CACzF,CAAA,IAAI,CAACD,KAAK,CAAG,CAAC,EAAE/8G,OAAAA,CAAQ88G,IAAI,GAAKzmH,SAAAA,CAAY2J,OAAQ88G,CAAAA,IAAI,CAAG,KAAI,CAChE,CAAA,IAAI,CAACP,SAAS,CAAGv8G,OAAQihF,CAAAA,QAAQ,CAAG,CAAIjhF,CAAAA,OAAAA,CAAQihF,QAAQ,CAAG,IAC3D,CAAA,IAAI,CAACu8B,UAAU,CAAG1vH,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGmW,OAAOrY,OAAQu9G,CAAAA,SAAS,CAAK,EAAA,CAAA,CAC3D,CAAA,IAAI,CAACixN,QAAQ,CAAG,CAAC,CAACxuU,OAAAA,CAAQguU,OAC1B,CAAA,IAAI,CAACsB,SAAS,CAAG,CAAC,CAACtvU,OAAAA,CAAQimT,QAC3B,CAAA,IAAI,CAAC3mM,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,SAAS,CAAG,IACjB,CAAA,IAAI,CAAC63J,MAAM,CAAGp3Q,OAAAA,CAAQkoN,KAAK,CAC3B,GAAI,IAAI,CAACkvD,MAAM,YAAY9zC,MAAO,CAChC,IAAI,CAAC8zC,MAAM,CAAG,IAAI,CAACA,MAAM,CAAC7+O,GAAE,CAE9B,IAAI,CAACk2S,sBAAsB,CAAG,IAAI,CAACM,eAAe,CAACpwU,IAAI,CAAC,IAAI,CAC5D,CAAA,IAAI,CAAC+vU,uBAAuB,CAAG,IAAI,CAACM,gBAAgB,CAACrwU,IAAI,CAAC,IAAI,CAC9D,CAAA,IAAI,CAACgwU,wBAAwB,CAAG,IAAI,CAACM,iBAAiB,CAACtwU,IAAI,CAAC,IAAI,CAChE,CAAA,IAAI,CAACiwU,sBAAsB,CAAG,IAAI,CAACM,eAAe,CAACvwU,IAAI,CAAC,IAAI,CAC5D,CAAA,IAAI,CAACkwU,qBAAqB,CAAG,IAAI,CAACM,cAAc,CAACxwU,IAAI,CAAC,IAAI,EAC5D,CA4UF,CArXI,SAAK4hH,CAAAA,UAAU,CAAG,MAGlB,CALEwtN,SAKGvtN,CAAAA,WAAW,CAAG,OAGnB,CAREutN,SAQGttN,CAAAA,YAAY,CAAG,QAGpB,CAXEstN,SAWGrtN,CAAAA,UAAU,CAAG,MAGlB,CAdEqtN,SAcGptN,CAAAA,SAAS,CAAG,KAGjB,CAjBEotN,SAiBGtoG,CAAAA,UAAU,CAAG,MAwWtB,OAAM+pG,cAAuBtzE,SAAAA,SAAAA,CAgB3BuzE,qBAAsBj+G,CAAAA,QAAQ,CAAEt7N,KAAK,CAAEw5U,QAAQ,CAAE,CAC/C,MAAMnpL,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,IAAI,MAAMv5U,GAAAA,IAAOmwJ,MAAM,CACrB,MAAM3vH,IAAO2vH,CAAAA,KAAK,CAACnwJ,GAAI,CAAA,CACvB,GAAI,CAACwgC,KAAKo3S,OAAO,CAAE,CACjB,MAAMt/J,UAAY93I,IAAK83I,CAAAA,SAAS,CAChC,IAAI,IAAIngL,CAAI,CAAA,CAAA,CAAGkY,GAAMioK,CAAAA,SAAAA,CAAUlgL,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAClDmgL,SAAS,CAACngL,CAAE,CAAA,CAACijO,SAAS,CAAGk+G,QAAAA,CAAW94S,IAAI,CAAC46L,SAAS,CAAGt7N,KAAAA,CAAQA,MAC/D,CACF,CACF,CACF,CACA,IAAIwrH,aAAAA,CAAcxrH,KAAK,CAAE,CACvB,IAAI,CAACisH,cAAc,CAAGjsH,KAAAA,CACtB,IAAI,CAACu5U,qBAAqB,CAAC,eAAA,CAAiBv5U,KAAO,CAAA,KAAA,EACrD,CACA,IAAIwrH,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACS,cAAc,CAE5B,IAAIb,WAAYprH,CAAAA,KAAK,CAAE,CACrB,IAAI,CAAC8rH,YAAY,CAAG9rH,KAAAA,CACpB,IAAI,CAACu5U,qBAAqB,CAAC,aAAA,CAAev5U,MAAO,KACnD,EAAA,CACA,IAAIorH,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACU,YAAY,CAE1B,IAAIT,WAAAA,CAAYrrH,KAAK,CAAE,CACrB,IAAI,CAAC+rH,YAAY,CAAG/rH,KAAAA,CACpB,IAAI,CAACu5U,qBAAqB,CAAC,aAAA,CAAev5U,KAAO,CAAA,KAAA,EACnD,CACA,IAAIqrH,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACU,YAAY,CAE1B,IAAIT,aAActrH,CAAAA,KAAK,CAAE,CACvB,IAAI,CAACgsH,cAAc,CAAGhsH,KAAAA,CACtB,IAAI,CAACu5U,qBAAqB,CAAC,eAAA,CAAiBv5U,MAAO,KACrD,EAAA,CACA,IAAIsrH,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACU,cAAc,CAE5B,IAAIlF,KAAM9mH,CAAAA,KAAK,CAAE,CACf,IAAI,CAACinH,MAAM,CAAGjnH,KACd,CAAA,IAAI,CAACu5U,qBAAqB,CAAC,OAASv5U,CAAAA,KAAAA,CAAO,IAC7C,EAAA,CACA,IAAI8mH,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACG,MAAM,CAEpB,IAAIp/E,MAAO7nC,CAAAA,KAAK,CAAE,CAChB,IAAI,CAACymC,OAAO,CAAGzmC,KAAAA,CACf,IAAI,CAACu5U,qBAAqB,CAAC,QAAA,CAAUv5U,MAAO,IAC9C,EAAA,CACA,IAAI6nC,MAAAA,EAAS,CACX,OAAO,IAAI,CAACpB,OAAO,CAErB,IAAImyS,UAAWxhM,CAAAA,QAAQ,CAAE,CACvB,IAAI,CAACsiM,WAAW,CAAGtiM,QACnB,CAAA,MAAMiZ,KAAQ,CAAA,IAAI,CAACopL,MAAM,CACzB,IAAI,MAAMv5U,OAAOmwJ,KAAM,CAAA,CACrB,MAAM3vH,IAAAA,CAAO2vH,KAAK,CAACnwJ,GAAAA,CAAI,CACvB,GAAI,CAACwgC,IAAKo3S,CAAAA,OAAO,CAAE,CACjB,MAAMt/J,SAAY93I,CAAAA,IAAAA,CAAK83I,SAAS,CAChC,MAAMmhK,SAAYnhK,CAAAA,SAAAA,CAAUlgL,MAAM,CAClC,IAAI,IAAID,CAAIshV,CAAAA,SAAAA,CAAY,EAAGthV,CAAK,EAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CACrC,MAAMiuH,SAAYkyD,CAAAA,SAAS,CAACngL,CAAAA,CAAE,CAACiuH,SAAS,EAAIkyD,SAAS,CAACngL,EAAE,CAACquH,WAAW,CACpE,MAAMb,YAAc2yD,SAAS,CAACngL,CAAE,CAAA,CAACwtH,WAAW,CAC5C,GAAIS,SAAW,CAAA,CACbkyD,SAAS,CAACngL,CAAAA,CAAE,CAAC2tH,IAAI,GACnB,CACA,MAAMzhH,QAAWm8B,CAAAA,IAAAA,CAAKu3S,eAAe,EACrC,CAAA,GAAI3xN,SAAW,CAAA,CACb/hH,SAAS2hH,IAAI,EACb3hH,CAAAA,QAAAA,CAASshH,WAAW,CAAGA,YACzB,CACA2yD,SAAAA,CAAUr/K,IAAI,CAACoL,QAAAA,EACjB,CACF,CACF,CACF,CACA,IAAIq0U,UAAa,EAAA,CACf,OAAO,IAAI,CAACc,WACd,CACA,IAAIrpL,KAAAA,CAAMjZ,QAAQ,CAAE,CAClB,MAAM47E,QAAAA,CAAW,IAAI,CAACymH,MAAM,CAC5B,GAAIzmH,QAAU,CAAA,CACZ,IAAI,MAAM9yN,GAAAA,IAAO8yN,QAAS,CAAA,CACxBA,QAAQ,CAAC9yN,GAAAA,CAAI,CAAC8lH,IAAI,GACpB,CACF,CACA,MAAMqqC,KAAAA,CAAQ,EACd,CAAA,IAAI,MAAMnwJ,GAAAA,IAAOk3I,SAAS,CACxB,GAAI,EAAEA,QAAQ,CAACl3I,GAAAA,CAAI,WAAY23U,SAAQ,EAAI,CACzC,GAAIzgM,QAAQ,CAACl3I,IAAI,CAACvE,IAAI,CAAE,CACtB00J,KAAK,CAACjZ,QAAQ,CAACl3I,GAAAA,CAAI,CAACvE,IAAI,CAAC,CAAG,IAAIk8U,UAAU,IAAI,CAAEzgM,QAAQ,CAACl3I,IAAI,CAACvE,IAAI,CAAEy7I,QAAQ,CAACl3I,GAAI,CAAA,EACnF,CACF,CAAA,KAAO,CACLmwJ,KAAK,CAACjZ,QAAQ,CAACl3I,GAAI,CAAA,CAACvE,IAAI,CAAC,CAAGy7I,QAAQ,CAACl3I,GAAI,EAC3C,CACF,CACA,IAAI,CAACu5U,MAAM,CAAGppL,KACd,CAAA,GAAI,IAAI,CAACnlJ,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAAC44F,QAAQ,GACf,CACF,CACA,IAAIusD,KAAQ,EAAA,CACV,OAAO,IAAI,CAACopL,MACd,CACA31O,QAAAA,EAAW,CACT,GAAI,IAAI,CAACswI,MAAM,CAACymB,QAAQ,CAAE,CACxB,MACF,CACA,MAAMxqG,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,MAAMG,oBAAuB,CAAA,IAAI,CAACC,qBAAqB,CACvD,IAAI,MAAM35U,OAAOmwJ,KAAM,CAAA,CACrB,MAAM3vH,IAAAA,CAAO2vH,KAAK,CAACnwJ,GAAAA,CAAI,CACvB,GAAIwgC,IAAKqvR,CAAAA,QAAQ,EAAIrvR,IAAAA,CAAK+lF,SAAS,CAAE,CACnC/lF,IAAKwlF,CAAAA,IAAI,GACX,CAAO,KAAA,GAAI0zN,oBAAoB,CAAC15U,IAAI,CAAE,CACpCwgC,IAAK4jF,CAAAA,MAAM,GACb,CAAO,KAAA,GAAI,CAAC5jF,IAAAA,CAAKq3S,QAAQ,CAAE,CACzBr3S,IAAK6tM,CAAAA,IAAI,GACX,CACF,CACF,CACAxqI,SAAAA,EAAY,CACV,MAAMssD,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,MAAMG,oBAAuB,CAAA,GAC7B,IAAI,MAAM15U,GAAOmwJ,IAAAA,KAAAA,CAAM,CACrB,GAAI,CAACA,KAAK,CAACnwJ,IAAI,CAAC43U,OAAO,CAAE,CACvB,GAAIznL,KAAK,CAACnwJ,GAAI,CAAA,CAAComH,SAAS,CAAE,CACxB+pC,KAAK,CAACnwJ,IAAI,CAACmoH,KAAK,EAChBuxN,CAAAA,oBAAoB,CAAC15U,GAAAA,CAAI,CAAG,KAC9B,CACF,CACF,CACA,IAAI,CAAC25U,qBAAqB,CAAGD,qBAC/B,CACAruD,UAAW,CACT,IAAI,CAACjsR,GAAG,GACV,CACAw6U,OAAAA,CAAQn+U,IAAI,CAAEmO,OAAO,CAAE,CACrB,MAAMumJ,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,GAAIppL,KAAK,CAAC10J,IAAAA,CAAK,CAAE,CACf,OAAO,IACT,CACA,MAAM+kC,IAAAA,CAAO,IAAIm3S,SAAU,CAAA,IAAI,CAAEl8U,IAAAA,CAAMmO,QACvCumJ,CAAAA,KAAK,CAAC10J,IAAAA,CAAK,CAAG+kC,IACd,CAAA,GAAIA,IAAKqvR,CAAAA,QAAQ,EAAI,IAAI,CAAC7kT,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACxDw1B,IAAAA,CAAKwlF,IAAI,GACX,CACA,OAAOxlF,IACT,CACAq5S,UAAAA,CAAWp+U,IAAI,CAAE,CACf,MAAM00J,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,GAAIppL,KAAK,CAAC10J,IAAAA,CAAK,CAAE,CACf00J,KAAK,CAAC10J,IAAAA,CAAK,CAACqqH,IAAI,EAChB,CAAOqqC,OAAAA,KAAK,CAAC10J,IAAAA,EAAK,CAEtB,CACA+kC,IAAK/kC,CAAAA,IAAI,CAAE,CACT,OAAO,IAAI,CAAC89U,MAAM,CAAC99U,IAAAA,CAAK,CAE1Bq+U,iBAAiBr+U,IAAI,CAAE2/N,QAAQ,CAAE,CAC/B,GAAI,CAAC,IAAI,CAACpwN,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACzC,OAAO/K,SACT,CACA,MAAMugC,IAAAA,CAAO,IAAI,CAAC+4S,MAAM,CAAC99U,IAAAA,CAAK,CAC9B,GAAI,CAAC+kC,IAAM,CAAA,CACT,OAAOvgC,SACT,CACA,OAAOugC,IAAI,CAAC46L,QAAS,CACvB,CACAh1G,SAAAA,CAAU3qH,IAAI,CAAE,CACd,OAAO,IAAI,CAACq+U,gBAAgB,CAACr+U,IAAAA,CAAM,cAAgB,KACrD,CACAo8U,QAASp8U,CAAAA,IAAI,CAAE,CACb,OAAO,IAAI,CAACq+U,gBAAgB,CAACr+U,IAAAA,CAAM,UAAe,CAAA,EAAA,KACpD,CACA6qH,QAAS7qH,CAAAA,IAAI,CAAE,CACb,OAAO,IAAI,CAACq+U,gBAAgB,CAACr+U,KAAM,UAAe,CAAA,EAAA,KACpD,CACA8qH,SAAAA,CAAU9qH,IAAI,CAAE,CACd,OAAO,IAAI,CAACq+U,gBAAgB,CAACr+U,IAAM,CAAA,WAAA,CAAA,EAAgB,KACrD,CACAuqH,IAAAA,CAAKvqH,IAAI,CAAE,CACT,GAAI,CAAC,IAAI,CAACuP,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACzC,OAAO,IACT,CACA,MAAMw1B,IAAAA,CAAO,IAAI,CAAC+4S,MAAM,CAAC99U,IAAAA,CAAK,CAC9B,GAAI,CAAC+kC,IAAAA,CAAM,CACT,OAAO,IACT,CACA,OAAOA,KAAKwlF,IAAI,EAClB,CACAmC,KAAAA,CAAM1sH,IAAI,CAAE,CACV,MAAM00J,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,GAAI99U,KAAM,CACR,MAAM+kC,IAAO2vH,CAAAA,KAAK,CAAC10J,IAAK,CAAA,CACxB,GAAI,CAAC+kC,KAAM,CACT,MACF,CACAA,IAAAA,CAAK2nF,KAAK,GACZ,CAAA,KAAO,CACL,IAAI,MAAMnoH,GAAOmwJ,IAAAA,KAAAA,CAAM,CACrBA,KAAK,CAACnwJ,GAAI,CAAA,CAACmoH,KAAK,GAClB,CACF,CACF,CACA/D,MAAO3oH,CAAAA,IAAI,CAAE,CACX,MAAM00J,KAAQ,CAAA,IAAI,CAACopL,MAAM,CACzB,GAAI99U,IAAAA,CAAM,CACR,MAAM+kC,IAAAA,CAAO2vH,KAAK,CAAC10J,KAAK,CACxB,GAAI,CAAC+kC,IAAAA,CAAM,CACT,MACF,CACA,GAAIA,KAAK8lF,QAAQ,CAAE,CACjB9lF,IAAAA,CAAK4jF,MAAM,GACb,CACF,CAAO,KAAA,CACL,IAAI,MAAMpkH,GAAAA,IAAOmwJ,KAAM,CAAA,CACrBA,KAAK,CAACnwJ,GAAAA,CAAI,CAACokH,MAAM,GACnB,CACF,CACF,CACA0B,IAAAA,CAAKrqH,IAAI,CAAE,CACT,MAAM00J,KAAAA,CAAQ,IAAI,CAACopL,MAAM,CACzB,GAAI99U,KAAM,CACR,MAAM+kC,IAAO2vH,CAAAA,KAAK,CAAC10J,IAAK,CAAA,CACxB,GAAI,CAAC+kC,KAAM,CACT,MACF,CACAA,IAAAA,CAAKslF,IAAI,GACX,CAAA,KAAO,CACL,IAAI,MAAM9lH,GAAOmwJ,IAAAA,KAAAA,CAAM,CACrBA,KAAK,CAACnwJ,GAAI,CAAA,CAAC8lH,IAAI,GACjB,CACF,CACF,CACA5lH,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,MAAO,IAAI,CAACooC,OAAO,CAAG,EAAG,IAAI,CAACwgF,MAAM,CAAG,EAAG,IAAI,CAACyyN,WAAW,CAAG,KAAM,IAAI,CAAC3tN,YAAY,CAAG,EAAG,IAAI,CAACD,YAAY,CAAG,IAAO,IAAI,CAACE,cAAc,CAAG,EAAG,IAAI,CAACC,cAAc,CAAG1J,gBAAiB,IAAI,CAACk3N,MAAM,CAAG,EAAI,CAAA,IAAI,CAACI,qBAAqB,CAAG,GAC/O,CACF,CA9PI,cAAKxvN,CAAAA,UAAU,CAAG,MAGlB,CALEivN,cAKGhvN,CAAAA,WAAW,CAAG,OAGnB,CAREgvN,cAQG/uN,CAAAA,YAAY,CAAG,QAGpB,CAXE+uN,cAWG9uN,CAAAA,UAAU,CAAG,MAGlB,CAdE8uN,cAcG7uN,CAAAA,SAAS,CAAG,KAoPrB,OAAMwvN,kBACJ75U,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMgvU,SAAY,CAAA,CAChB,UACD,CACD,MAAMC,oBAA6B3zE,SAAAA,eAAAA,CAWjC,IAAI3+N,MAAOA,CAAAA,MAAM,CAAE,CACjB,IAAI,CAAC87E,OAAO,CAAC97E,MAAM,CAAGA,OACxB,CACA,IAAIA,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC87E,OAAO,CAAC97E,MACtB,CACA,IAAIy2C,SAAU,CACZ,GAAI,CAACinC,eAAAA,EAAAA,CAAmB,CACtB,OAAO,IACT,CACA,OAAO,IAAI,CAAC5B,OAAO,CAACrlC,OAAO,CAE7BsoL,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDA,WAAa,CACX,QAAA,CACA,OACA,CAAA,YAAA,CACA,cACA,aACA,CAAA,eAAA,CACA,eACA,CAAA,OAAA,CACD,CACD,IAAI,IAAInkJ,CAAI,CAAA,CAAA,CAAGA,EAAImkJ,UAAWlkJ,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,GAAIga,IAAAA,CAAK3N,cAAc,CAAC83I,UAAU,CAACnkJ,CAAAA,CAAE,CAAG,CAAA,CACtCohP,SAAS,CAACj9F,UAAU,CAACnkJ,CAAAA,CAAE,CAAC,CAAGga,IAAI,CAACmqI,UAAU,CAACnkJ,CAAE,CAAA,EAAC,CAElD,CACA,KAAK,CAACuuQ,uBAAwBntB,CAAAA,SAAAA,CAAWpnO,KAAM,CAC7C,SAAA,CACD,EACH,CACA8pO,eAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMysU,YAAAA,CAAen7M,MAAO9X,CAAAA,KAAK,CACjC,MAAMkzN,QAAAA,CAAWD,YAAa/pL,CAAAA,KAAK,CACnC,MAAMA,KAAAA,CAAQ,EAAC,CACf,IAAI,MAAMnwJ,GAAAA,IAAOm6U,QAAS,CAAA,CACxB,MAAMC,OAAUD,CAAAA,QAAQ,CAACn6U,GAAAA,CAAI,CAC7BmwJ,KAAK,CAACnwJ,GAAAA,CAAI,CAAG,CACXvE,IAAAA,CAAM2+U,OAAQ3+U,CAAAA,IAAI,CAClBksC,MAAAA,CAAQyyS,OAAQzyS,CAAAA,MAAM,CACtBi/E,KAAOwzN,CAAAA,OAAAA,CAAQxzN,KAAK,CACpBF,KAAM0zN,OAAQ1zN,CAAAA,IAAI,CAClB77B,QAAAA,CAAUuvP,QAAQvvP,QAAQ,CAC1Bs8B,SAAWizN,CAAAA,OAAAA,CAAQjzN,SAAS,CAC5BywN,OAAAA,CAASwC,OAAQxC,CAAAA,OAAO,CACxB/nB,QAAUuqB,CAAAA,OAAAA,CAAQvqB,QAAQ,CAC1B/9F,MAAOsoH,OAAQtoH,CAAAA,KAAK,EAExB,CACA,MAAMuoH,SAAAA,CAAY,CAChB/uN,aAAAA,CAAe4uN,aAAa5uN,aAAa,CACzCtgH,OAASkvU,CAAAA,YAAAA,CAAalvU,OAAO,CAC7BkgH,WAAAA,CAAagvN,YAAahvN,CAAAA,WAAW,CACrCtE,KAAOszN,CAAAA,YAAAA,CAAatzN,KAAK,CACzB8xN,WAAYwB,YAAaxB,CAAAA,UAAU,CACnCvtN,WAAAA,CAAa+uN,aAAa/uN,WAAW,CACrCC,aAAe8uN,CAAAA,YAAAA,CAAa9uN,aAAa,CACzC+kC,KAAAA,CAAOA,KACPxoH,CAAAA,MAAAA,CAAQuyS,aAAavyS,MACvB,CACA,CAAA,OAAO,IAAI,CAACgzM,YAAY,CAACltO,KAAAA,CAAO4sU,UAClC,CACA1lE,QAAAA,CAAS3+J,EAAE,CAAE,CACX,MAAMrqD,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,IAAI,MAAMxpB,EAAAA,IAAMwpB,MAAM,CACpB,GAAIA,KAAMnnD,CAAAA,cAAc,CAAC29B,EAAK,CAAA,CAAA,CAC5B,MAAMhgC,IAAAA,CAAOwpD,KAAK,CAACxpB,EAAAA,CAAG,CACtB,MAAM48F,OAAS58H,IAAK48H,CAAAA,MAAM,CAC1B,GAAIA,OAAO/zH,OAAO,CAAE,CAClB,MAAMuuO,UAAYx6G,MAAO9X,CAAAA,KAAK,CAC9B,GAAIsyH,UAAUvuO,OAAO,EAAIuuO,SAAUm/F,CAAAA,UAAU,CAAE,CAC7C,MAAMj8T,QAAWsiH,CAAAA,MAAAA,CAAOtc,WAAW,EACnC,CAAA,MAAM0tC,KAAQopF,CAAAA,SAAAA,CAAUppF,KAAK,CAC7B,IAAI,MAAMnwJ,GAAAA,IAAOmwJ,MAAM,CACrBA,KAAK,CAACnwJ,GAAAA,CAAI,CAACg5U,cAAc,CAACv8T,QAC5B,EAAA,CACF,CACF,CACF,CACF,CACF,CACA43P,cAAet1I,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CAChC,MAAMppF,KAAQopF,CAAAA,SAAAA,CAAUppF,KAAK,CAC7B,IAAI,MAAMnwJ,GAAAA,IAAOmwJ,MAAM,CACrB,GAAI,CAACA,KAAK,CAACnwJ,GAAI,CAAA,CAAC43U,OAAO,CAAE,CACvBznL,KAAK,CAACnwJ,GAAI,CAAA,CAAC8lH,IAAI,GACjB,CACF,CACAyzH,SAAAA,CAAU8xC,QAAQ,GACpB,CACA/pP,OAAU,EAAA,CACR,KAAK,CAACA,OAAAA,EAAAA,CACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,QAAU,CAAA,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,EACpD,CAxGAz0Q,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,IACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,OACV,CAAA,IAAI,CAACokO,aAAa,CAAG6yE,cACrB,CAAA,IAAI,CAAC3yE,QAAQ,CAAGszE,kBAChB,CAAA,IAAI,CAAClhG,MAAM,CAAGmhG,SACd,CAAA,IAAI,CAACv2N,OAAO,CAAG0kH,GAAI6uB,CAAAA,YAAY,CAC/B,IAAI,CAAC7uB,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAA,CAAU,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,CACjD,CAAA,IAAI,CAACn1Q,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC60Q,cAAc,CAAE,IAAI,EACnD,CAgGF,CACAvO,SAAAA,CAAUC,eAAe,CAACqzE,eAAe5uN,SAAS,CAAEwvN,SAEpD,CAAA,CAAA,MAAMM,kBAAoB,QAC1B,CAAA,MAAMC,mBAAsB,CAAA,UAE5B,OAAMC,mBAA4Bp6U,SAAAA,YAAAA,CAiChC,IAAIyqF,QAAAA,EAAW,CACb,GAAI,IAAI,CAACmzC,OAAO,CAAE,CAChB,MAAM8gH,GAAM,CAAA,IAAI,CAACA,GAAG,EAAI78N,MAAOw4T,CAAAA,SAAS,CACxC,OAAO,IAAI,CAACz8M,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAGV,IAAKma,CAAAA,GAAG,CAACitO,GAAAA,CAClD,CACA,OAAO,CACT,CACA,IAAI7nC,MAAMn3M,KAAK,CAAE,CACf,IAAI,CAAC46U,SAAS,CAAC56U,KACf,CAAA,CAAA,MAAMg/O,IAAM,IAAI,CAACA,GAAG,EAAI78N,OAAOw4T,SAAS,CACxC,IAAI,CAACE,QAAQ,CAAC,IAAI,CAACC,MAAM,CAAG97F,GAC9B,EAAA,CACA,IAAI7nC,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC2jI,MAAM,CAEpB,IAAIt0N,QAAW,EAAA,CACb,OAAO,IAAI,CAACu0N,OACd,CACA,IAAIz0N,SAAAA,EAAY,CACd,OAAO,IAAI,CAACikJ,QAAQ,CAEtB,IAAInsI,MAAOp+H,CAAAA,KAAK,CAAE,CAChB,GAAI,IAAI,CAACk+H,OAAO,CAAE,CAChB,IAAI,CAACwgK,aAAa,EAAEp/R,KACpB,CAAA,IAAI,CAACo/R,aAAa,CAAG,IACrB,CAAA,IAAI,CAACxgK,OAAO,CAAC5+H,GAAG,CAAC,mBAAqB,CAAA,IAAI,CAAC07U,mBAAmB,CAAE,IAAI,CAAA,CACpE,IAAI,CAAC98M,OAAO,CAAC5+H,GAAG,CAAC,WAAa,CAAA,IAAI,CAACq/R,qBAAqB,CAAE,IAAI,CAAA,CAC9D,GAAI,IAAI,CAACzgK,OAAO,CAACq4E,KAAK,CAAE,CACtB,IAAI,CAACr4E,OAAO,CAACq4E,KAAK,CAACj3M,GAAG,CAAC,aAAA,CAAe,IAAI,CAACq/R,qBAAqB,CAAE,IAAI,EACxE,CACF,CACA,IAAI,CAACzgK,OAAO,CAAGl+H,KAAAA,CACf,GAAI,IAAI,CAACk+H,OAAO,CAAE,CAChB,IAAI,CAACwgK,aAAa,CAAG,IAAI,CAACxgK,OAAO,CAACx+H,EAAE,CAAC,aAAc,IAAI,CAACi/R,qBAAqB,CAAE,IAAI,CACnF,CAAA,IAAI,CAACzgK,OAAO,CAACx+H,EAAE,CAAC,mBAAqB,CAAA,IAAI,CAACs7U,mBAAmB,CAAE,IAAI,CAAA,CACnE,IAAI,CAAC98M,OAAO,CAACx+H,EAAE,CAAC,WAAa,CAAA,IAAI,CAACi/R,qBAAqB,CAAE,IAAI,CAAA,CAC7D,GAAI,IAAI,CAACzgK,OAAO,CAACq4E,KAAK,CAAE,CACtB,IAAI,CAACr4E,OAAO,CAACq4E,KAAK,CAAC72M,EAAE,CAAC,aAAA,CAAe,IAAI,CAACi/R,qBAAqB,CAAE,IAAI,EACvE,CACF,CACA,GAAI,IAAI,CAAC/xB,UAAU,CAACquE,WAAW,GAAK,IAAI,CAAE,CACxC,IAAI7sM,EAAAA,CACJ,GAAI,CAACpuI,KAAS,EAAA,CAACA,MAAMu2M,KAAK,CAAE,CAC1BnoE,EAAAA,CAAK,IAAI,CAACw+H,UAAU,CAACt8H,aAAa,CAClC,GAAIlC,EAAAA,CAAI,CACNA,EAAAA,CAAGlsC,eAAe,CAAC,qBAAA,CAAA,CACnBksC,EAAGlsC,CAAAA,eAAe,CAAC,oBACrB,EAAA,CACA,IAAI,CAAC0qK,UAAU,CAACsuE,UAAU,GAC5B,CAAA,KAAO,CACL,GAAIl7U,KAAAA,CAAMu2M,KAAK,CAACpsK,OAAO,CAAE,CACvBikG,EAAK,CAAA,IAAI,CAACw+H,UAAU,CAACt8H,aAAa,CAClC,GAAIlC,EAAI,CAAA,CACNA,EAAGrsC,CAAAA,YAAY,CAAC,qBAAuB/hG,CAAAA,KAAAA,CAAMu2M,KAAK,CAACpsK,OAAO,CAC1DikG,CAAAA,EAAAA,CAAGrsC,YAAY,CAAC,qBAAsB/hG,KAAMu2M,CAAAA,KAAK,CAACpsK,OAAO,EAC3D,CACA,GAAI,IAAI,CAACyiO,UAAU,CAAC1hQ,OAAO,EAAI,IAAI,CAAC0hQ,UAAU,CAAC3tI,MAAM,CAAC/zH,OAAO,CAAE,CAC7D,IAAI,CAAC0hQ,UAAU,CAACuuE,UAAU,GAC5B,CACF,CACA,GAAI,IAAI,CAAC1rU,IAAI,EAAI,IAAI,CAACuvO,GAAG,CAAE,CACzB,IAAI,CAACvvO,IAAI,CAAG,IAAI,CAACA,KACnB,MAAO,CACL,IAAI,CAAC0nM,KAAK,CAAG,IAAI,CAACA,MACpB,CACF,CACF,CACF,CACA,IAAI/4E,QAAS,CACX,OAAO,IAAI,CAACF,OAAO,CAErB,IAAIsrJ,WAAAA,CAAYxpR,KAAK,CAAE,CACrB,MAAMowO,MAAAA,CAAS,IAAI,CAACw8B,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAChD,IAAI/tM,EAAKriC,CAAAA,KAAAA,CACT,GAAIA,KAAAA,YAAiBotO,MAAO,CAC1B/qM,EAAAA,CAAKriC,KAAMqiC,CAAAA,GAAE,CAEf,GAAI,IAAI,CAAC27P,YAAY,GAAK37P,EAAAA,CAAI,CAC5B,GAAI,IAAI,CAAC27P,YAAY,CAAE,CACrB,MAAM1rF,IAAO89B,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAAC4jS,YAAY,CACzC,CAAA,GAAI1rF,KAAM,CACR,IAAI,CAAC+rF,kBAAkB,CAAC/rF,IAC1B,EAAA,CACF,CACA,IAAI,CAAC0rF,YAAY,CAAG37P,EACpB,CAAA,GAAI,IAAI,CAAC27P,YAAY,CAAE,CACrB,MAAMhsE,KAAQoe,CAAAA,MAAAA,CAAOh2O,GAAG,CAAC,IAAI,CAAC4jS,YAAY,CAC1C,CAAA,GAAI,CAAChsE,KAAO,CAAA,CACV,IAAI,CAAC5zF,MAAM,CAAG,IAAA,CACdgyG,MAAO1wO,CAAAA,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAACs+R,YAAY,CAAC,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,EACtE,CAAA,KAAO,CACL,IAAI,CAACE,gBAAgB,CAACjsE,KACxB,EAAA,CACF,MAAO,CACL,IAAI,CAAC5zF,MAAM,CAAG,KAChB,CACF,CACF,CACA,IAAIorJ,WAAc,EAAA,CAChB,OAAO,IAAI,CAACwU,YACd,CACA,IAAIvuR,KAAKzP,KAAK,CAAE,CACd,IAAI,CAAC66U,QAAQ,CAAC76U,KACd,CAAA,CAAA,GAAI,IAAI,CAACk+H,OAAO,CAAE,CAChB,IAAI,CAACi5E,KAAK,CAAGv/M,IAAAA,CAAKmU,GAAG,CAAC,IAAI,CAACmyH,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAG,EAAGV,IAAKmQ,CAAAA,KAAK,CAAC,IAAI,CAACwxM,KAAK,CAAG3hN,IAAKma,CAAAA,GAAG,CAAC,IAAI,CAACitO,GAAG,CAAA,CAAA,EACpG,CAAO,KAAA,CACL,IAAI,CAAC7nC,KAAK,CAAG,EACf,CACF,CACA,IAAI1nM,IAAO,EAAA,CACT,OAAO,IAAI,CAAC8pM,KACd,CACAwkF,mBAAAA,CAAoB/rE,KAAK,CAAE,CACzB,IAAI,CAAC46C,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAM3vL,CAAAA,EAAE,CAAC,CAAC,CAAE,IAAI,CAAC07P,mBAAmB,CAAE,IAAI,CACvF,CAAA,GAAI,IAAI,CAACC,YAAY,GAAKhsE,KAAAA,CAAM3vL,EAAE,CAAE,CAClC,IAAI,CAAC47P,gBAAgB,CAACjsE,KAAAA,EACxB,CACF,CACAisE,iBAAiBjsE,KAAK,CAAE,CACtBA,KAAAA,CAAMtyN,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACw+R,kBAAkB,CAAE,IAAI,CAC9ClsE,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC0+R,oBAAoB,CAAE,IAAI,CAAA,CAClD,GAAIpsE,KAAMpyK,CAAAA,QAAQ,CAAE,CAClB,IAAI,CAACs+O,kBAAkB,CAAClsE,KAAAA,EAC1B,MAAO,CACL,IAAI,CAAC46C,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACvc,KAAAA,EACzC,CACF,CACAqsE,kBAAAA,CAAmBrsE,KAAK,CAAE,CACxB,GAAI,CAACA,KAAO,CAAA,CACV,MACF,CACAA,KAAAA,CAAM1yN,GAAG,CAAC,OAAQ,IAAI,CAAC4+R,kBAAkB,CAAE,IAAI,CAC/ClsE,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,SAAU,IAAI,CAAC8+R,oBAAoB,CAAE,IAAI,CACnD,CAAA,GAAIpsE,KAAMpyK,CAAAA,QAAQ,EAAI,CAACoyK,KAAAA,CAAMpyK,QAAQ,CAAC22J,KAAK,CAAE,CAC3C,IAAI,CAACq2D,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,KAAK,EAAE0yN,KAAM3/M,CAAAA,IAAI,CAACisR,iBAAiB,CAAC,CAAC,CAAE,IAAI,CAACC,mBAAmB,CAAE,IAAI,EAC9G,CACF,CACAL,kBAAmBlsE,CAAAA,KAAK,CAAE,CACxB,GAAI,CAACA,KAAAA,CAAMpyK,QAAQ,CAAE,CACnB,IAAI,CAACw+E,MAAM,CAAG,KAChB,CAAO,KAAA,CACL,GAAI,CAAC4zF,KAAAA,CAAMpyK,QAAQ,CAAC22J,KAAK,CAAE,CACzB,MAAMioF,YAAAA,CAAexsE,MAAM3/M,IAAI,CAACisR,iBAAiB,CACjD,MAAMluD,MAAS,CAAA,IAAI,CAACw8B,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAChDA,MAAAA,CAAO9wO,GAAG,CAAC,CAAC,KAAK,EAAEk/R,YAAa,CAAA,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,CAAA,CACjEnuD,MAAOtwO,CAAAA,IAAI,CAAC,CAAC,KAAK,EAAE0+R,YAAAA,CAAa,CAAC,CAAE,IAAI,CAACD,mBAAmB,CAAE,IAAI,EACpE,CAAO,KAAA,CACL,IAAI,CAACngK,MAAM,CAAG4zF,KAAAA,CAAMpyK,SAAQ,CAEhC,CACF,CACA2+O,oBAAoBQ,UAAU,CAAE,CAC9B,MAAMvV,YAAc,IAAI,CAACwU,YAAY,CACrC,GAAIxU,WAAuBp8C,YAAAA,KAAAA,CAAO,CAChC,IAAI,CAAC8wD,kBAAkB,CAAC1U,WAC1B,EAAA,CAAA,KAAO,CACL,IAAI,CAAC0U,kBAAkB,CAAC,IAAI,CAACtxB,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACovR,WAAAA,CAAAA,EAChE,CACF,CACA4U,qBAAqBpsE,KAAK,CAAE,CAC1B,IAAI,CAAC5zF,MAAM,CAAG,KAChB,CACAugK,uBAAwB,CACtB,GAAI,IAAI,CAAC/xB,UAAU,CAACquE,WAAW,GAAK,IAAI,CAAE,CACxC,IAAI,CAACruE,UAAU,CAACwuE,UAAU,CAAC,IAAI,CAACjkI,KAAK,EACvC,CACF,CACA6jI,mBAAAA,EAAsB,CACpB,GAAI,IAAI,CAACpuE,UAAU,CAACquE,WAAW,GAAK,IAAI,CAAE,CACxC,GAAI,IAAI,CAAC78M,MAAM,CAACy4E,UAAU,GAAKjhF,wBAA0B,CAAA,CACvD,IAAI,CAACg3I,UAAU,CAACwuE,UAAU,CAAC,IAAI,CAACjkI,KAAK,EACvC,CACF,CACF,CACAjuC,OAAQhzD,CAAAA,EAAE,CAAE,CACV,GAAI,IAAI,CAAC8oI,GAAG,GAAK,CAAA,CAAG,OACpB,GAAI,CAAC,IAAI,CAACurB,QAAQ,EAAI,IAAI,CAACwwE,OAAO,EAAI,CAAC,IAAI,CAAC78M,OAAO,CAAE,OACrD,MAAMj4G,GAAAA,CAAM,IAAI,CAAC+4N,GAAG,CAAG,CAAA,CAAI,CAAC,CAAA,CAAI,EAChC,MAAMvvO,IAAAA,CAAO,IAAI,CAAC8pM,KAAK,CAAGrjG,EAAAA,CAAK,IAAI,CAAC02J,UAAU,CAAClE,KAAK,CAAGziP,GAAAA,CACvD,MAAM8kE,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC9B,MAAMhtF,GAAAA,CAAM0R,IAAOs7E,CAAAA,QAAAA,EAAYt7E,KAAO,CACtC,CAAA,IAAI,CAACorU,QAAQ,CAACprU,IACd,CAAA,CAAA,IAAI0nM,KAAQ,CAAA,IAAI,CAACA,KAAK,CACtB,GAAI,IAAI,CAACj5E,OAAO,CAAE,CAChBi5E,KAAAA,CAAQv/M,KAAKmQ,KAAK,CAAC,IAAI,CAACm2H,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAG,IAAI,CAACihN,KAAK,CAAGxuH,UAClE,CAAO,KAAA,CACLosH,KAAQ,CAAA,EACV,CACA,GAAIA,KAAAA,GAAU,IAAI,CAAC2jI,MAAM,CAAE,CACzB,IAAI,CAACF,SAAS,CAACzjI,KAAAA,EACjB,CACA,GAAIp5M,IAAK,CACP,GAAI,IAAI,CAAC6oH,IAAI,CAAE,CACb,IAAI,CAACrlH,IAAI,CAAC,MAAA,CAAA,CACV,IAAI,CAACqrQ,UAAU,CAACrrQ,IAAI,CAAC,MAAA,CAAQ,IAAI,EACnC,CAAA,KAAO,CACL,IAAI,CAACgpQ,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACwwE,OAAO,CAAG,KAAA,CACf,IAAI,CAACx5U,IAAI,CAAC,KAAA,CAAA,CACV,IAAI,CAACqrQ,UAAU,CAACrrQ,IAAI,CAAC,KAAO,CAAA,IAAI,EAClC,CACF,CACF,CACAs5U,QAAAA,CAAS76U,KAAK,CAAE,CACd,IAAI,CAACu5M,KAAK,CAAGv5M,KACb,CAAA,MAAM+qF,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC9B,GAAI,IAAI,CAACwuH,KAAK,CAAG,CAAG,CAAA,CAClB,GAAI,IAAI,CAAC3yF,IAAI,CAAE,CACb,IAAI,CAAC2yF,KAAK,CAAG,IAAI,CAACA,KAAK,CAAGxuH,QAAAA,CAAWA,SACvC,CAAO,KAAA,CACL,IAAI,CAACwuH,KAAK,CAAG,EACf,CACF,CAAA,KAAO,GAAI,IAAI,CAACA,KAAK,CAAGxuH,SAAU,CAChC,GAAI,IAAI,CAAC67B,IAAI,CAAE,CACb,IAAI,CAAC2yF,KAAK,EAAIxuH,SAChB,CAAO,KAAA,CACL,IAAI,CAACwuH,KAAK,CAAGxuH,SACf,CACF,CACF,CACA6vP,SAAU56U,CAAAA,KAAK,CAAE,CACf,GAAI,IAAI,CAACk+H,OAAO,CAAE,CAChB,IAAI,CAAC48M,MAAM,CAAGpvU,IAAKI,CAAAA,KAAK,CAAC9L,KAAO,CAAA,CAAA,CAAG,IAAI,CAACk+H,OAAO,CAAC+3E,SAAS,CAAC39M,MAAM,CAAG,CACrE,EAAA,CAAA,KAAO,CACL,IAAI,CAACwiV,MAAM,CAAG96U,MAChB,CACA,GAAI,IAAI,CAAC4sQ,UAAU,CAACquE,WAAW,GAAK,IAAI,CAAE,CACxC,IAAI,CAACruE,UAAU,CAACwuE,UAAU,CAAC,IAAI,CAACN,MAAM,EACxC,CACF,CACAO,QAAAA,EAAW,CACT,GAAI,IAAI,CAACr9C,YAAY,CAAE,CACrB,MAAM5tD,MAAS,CAAA,IAAI,CAACw8B,UAAU,CAACx4B,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAChD,IAAI,CAACiuD,kBAAkB,CAACjuD,MAAOh2O,CAAAA,GAAG,CAAC,IAAI,CAAC4jS,YAAY,CAAA,EACtD,CACA,GAAI,IAAI,CAAC9/J,OAAO,CAAE,CAChB,IAAI,CAACE,MAAM,CAAG,KAChB,CACA,GAAI,IAAI,CAAC4/J,YAAY,CAAE,CACrB,IAAI,CAACxU,WAAW,CAAG,KACrB,CACF,CACAtjK,MAAO,CACL,GAAI,IAAI,CAACqkJ,QAAQ,CAAE,CACjB,MACF,CACA,IAAI,CAACA,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACwwE,OAAO,CAAG,KACf,CAAA,IAAI,CAAC5jI,KAAK,CAAG,CACb,CAAA,IAAI,CAAC51M,IAAI,CAAC,MACV,CAAA,CAAA,IAAI,CAACqrQ,UAAU,CAACrrQ,IAAI,CAAC,MAAQ,CAAA,IAAI,EACnC,CACA8mH,KAAAA,EAAQ,CACN,GAAI,CAAC,IAAI,CAACkiJ,QAAQ,EAAI,IAAI,CAACwwE,OAAO,CAAE,CAClC,MACF,CACA,IAAI,CAACA,OAAO,CAAG,IACf,CAAA,IAAI,CAACx5U,IAAI,CAAC,OACV,CAAA,CAAA,IAAI,CAACqrQ,UAAU,CAACrrQ,IAAI,CAAC,OAAS,CAAA,IAAI,EACpC,CACA+iH,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACy2N,OAAO,CAAE,OACnB,IAAI,CAACA,OAAO,CAAG,KACf,CAAA,IAAI,CAACx5U,IAAI,CAAC,QACV,CAAA,CAAA,IAAI,CAACqrQ,UAAU,CAACrrQ,IAAI,CAAC,QAAU,CAAA,IAAI,EACrC,CACAykH,IAAAA,EAAO,CACL,GAAI,CAAC,IAAI,CAACukJ,QAAQ,CAAE,OACpB,IAAI,CAACA,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACwwE,OAAO,CAAG,KACf,CAAA,IAAI,CAACxhI,KAAK,CAAG,CACb,CAAA,IAAI,CAACpC,KAAK,CAAG,EACb,IAAI,CAAC51M,IAAI,CAAC,QACV,IAAI,CAACqrQ,UAAU,CAACrrQ,IAAI,CAAC,MAAA,CAAQ,IAAI,EACnC,CAhSAnB,WAAYq5O,CAAAA,SAAS,CAAEpnO,IAAI,CAAC,CAC1B,KAAK,EAAI,CAAA,IAAI,CAACqsR,aAAa,CAAG,IAC9B,CAAA,IAAI,CAAC9xB,UAAU,CAAGnzB,SAClB,CAAA,IAAI,CAACqhG,MAAM,CAAG,CACd,CAAA,IAAI,CAAC58M,OAAO,CAAG,IACf,CAAA,IAAI,CAAC8/J,YAAY,CAAG,IACpB,CAAA,IAAI,CAACxU,WAAW,CAAGn3Q,IAAKm3Q,CAAAA,WAAW,CACnC,IAAI,CAAC7tR,IAAI,CAAG0W,IAAK1W,CAAAA,IAAI,CACrB,IAAI,CAACqjP,GAAG,CAAG3sO,IAAAA,CAAK2sO,GAAG,EAAI,CACvB,CAAA,IAAI,CAACp4H,IAAI,CAAGv0G,IAAAA,CAAKu0G,IAAI,EAAI,KACzB,CAAA,IAAI,CAAC2jJ,QAAQ,CAAG,KAChB,CAAA,IAAI,CAACwwE,OAAO,CAAG,KACf,CAAA,IAAI,CAACxhI,KAAK,CAAG,EACf,CAoRF,CAlTI,mBAFEmhI,CAEGrwN,UAAU,CAAG,MAGlB,CALEqwN,mBAAAA,CAKGpwN,WAAW,CAAG,OAGnB,CAREowN,mBAAAA,CAQGnwN,YAAY,CAAG,QAGpB,CAXEmwN,mBAAAA,CAWGlwN,UAAU,CAAG,MAGlB,CAdEkwN,mBAAAA,CAcGjwN,SAAS,CAAG,KAGjB,CAjBEiwN,mBAAAA,CAiBGY,UAAU,CAAG,MAAA,CAqStB,MAAMC,kBAAAA,CAAqB,sBAC3B,MAAMC,iBAAAA,CAAoB,oBAC1B,CAAA,MAAMC,eAAiB,mBACvB,CAAA,MAAMC,aAAgB,CAAA,kBAAA,CACtB,MAAMC,kBAAqB,CAAA,aAAA,CAC3B,MAAMC,iBAAAA,CAAoB,YAC1B,CAAA,MAAMC,gBAAmB,CAAA,WACzB,OAAMC,eAAwB91E,SAAAA,SAAAA,CA4D5B,IAAIl2P,IAAAA,CAAK9P,KAAK,CAAE,CACd,GAAI,IAAI,CAACwS,KAAK,GAAKxS,KAAO,CAAA,CACxB,MACF,CACA,IAAI,CAACwS,KAAK,CAAGxS,KACb,CAAA,GAAI,IAAI,CAACwS,KAAK,GAAKgoU,iBAAAA,CAAmB,CACpC,IAAI,CAACx0N,IAAI,EACT,CAAA,IAAI,CAAC+1N,YAAY,CAAG,IAAI,CAACC,YAAY,CACrC,GAAI,IAAI,CAAC9wU,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAAC6wU,YAAY,CAAC5kI,KAAK,CAAG,IAAI,CAACA,KAAK,CACpC,GAAI,IAAI,CAAC4kI,YAAY,CAAC39M,MAAM,CAAE,CAC5B,IAAI,CAAC+8M,UAAU,GACjB,CAAO,KAAA,CACL,IAAI,CAACD,UAAU,GACjB,CACF,CACF,CAAA,KAAO,GAAI,IAAI,CAAC1oU,KAAK,GAAKioU,oBAAqB,CAC7C,IAAI,CAACz0N,IAAI,GACT,GAAI,IAAI,CAACi2N,aAAa,CAAE,CACtB,IAAI,CAACC,YAAY,GACnB,CACA,GAAI,IAAI,CAACH,YAAY,EAAI,IAAI,CAACA,YAAY,CAACz1N,SAAS,EAAI,IAAI,CAACp7G,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC3F,IAAI,CAACiwU,UAAU,GACjB,CAAO,KAAA,CACL,IAAI,CAACD,UAAU,GACjB,CACF,CACF,CACA,IAAIprU,IAAO,EAAA,CACT,OAAO,IAAI,CAAC0C,KACd,CACA,IAAI2kM,KAAAA,CAAMn3M,KAAK,CAAE,CACf,IAAI,CAAC+7U,YAAY,CAAC5kI,KAAK,CAAGn3M,MAC5B,CACA,IAAIm3M,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC4kI,YAAY,CAAC5kI,KAC3B,CACA,IAAIqyE,WAAAA,CAAYxpR,KAAK,CAAE,CACrB,IAAI,CAACg8U,YAAY,CAACxyD,WAAW,CAAGxpR,MAClC,CACA,IAAIwpR,aAAc,CAChB,OAAO,IAAI,CAACwyD,YAAY,CAACh+C,YAAY,CAEvC,IAAI5/J,MAAOp+H,CAAAA,KAAK,CAAE,CAChB,IAAI,CAAC+7U,YAAY,CAAC39M,MAAM,CAAGp+H,MAC7B,CACA,IAAIo+H,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC29M,YAAY,CAAC39M,MAC3B,CACA,IAAIlD,SAASl7H,KAAK,CAAE,CAClB,IAAI,CAACspI,SAAS,CAAGtpI,KACjB,CAAA,GAAI,IAAI,CAACswI,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACpV,QAAQ,CAAGl7H,MAChC,CACF,CACA,IAAIk7H,QAAW,EAAA,CACb,OAAO,IAAI,CAACoO,SACd,CACA,IAAIhtF,MAAMt8C,KAAK,CAAE,CACf,IAAI,CAACmtJ,MAAM,CAACx1J,CAAC,CAAGqI,MAAMrI,CACtB,CAAA,IAAI,CAACw1J,MAAM,CAACjhJ,CAAC,CAAGlM,MAAMkM,CACtB,CAAA,IAAI,CAACihJ,MAAM,CAACjlJ,CAAC,CAAGlI,MAAMkI,CAAC,CACvB,GAAI,IAAI,CAACooI,aAAa,CAAE,CACtB,IAAI,CAACgvJ,aAAa,CAAC,CAAE,CAAA,CAAG,IAAI,CAACnyI,MAAM,CAACx1J,CAAC,CACrC,IAAI,CAAC2nS,aAAa,CAAC,CAAA,CAAE,CAAG,IAAI,CAACnyI,MAAM,CAACjhJ,CACpC,CAAA,IAAI,CAACozR,aAAa,CAAC,EAAE,CAAG,IAAI,CAACnyI,MAAM,CAACjlJ,CAAC,CACrC,IAAI,CAACooI,aAAa,CAACvuC,YAAY,CAAC05O,cAAAA,CAAgB,IAAI,CAACn8C,aAAa,EACpE,CACF,CACA,IAAIhjP,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC6wG,MAAM,CAEpB,IAAI2hE,OAAQ9uN,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACmtJ,MAAM,CAACllJ,CAAC,CAAGjI,KAChB,CAAA,GAAI,IAAI,CAACswI,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACvuC,YAAY,CAAC25O,aAAAA,CAAe17U,OACjD,CACF,CACA,IAAI8uN,OAAAA,EAAU,CACZ,OAAO,IAAI,CAAC3hE,MAAM,CAACllJ,CACrB,CACA,IAAImmQ,MAAMpuQ,KAAK,CAAE,CACf,GAAI,CAACA,KAAO,CAAA,CACV,IAAI,MAAMrE,QAAQ,IAAI,CAAC0yQ,MAAM,CAAC,CAC5B,IAAI,CAACY,UAAU,CAACtzQ,MAClB,CACA,MACF,CACA,IAAI,MAAMA,IAAQ,IAAA,IAAI,CAAC0yQ,MAAM,CAAC,CAC5B,IAAIvnM,KAAQ,CAAA,KAAA,CACZ,IAAI,MAAM5mE,GAAAA,IAAOF,KAAM,CAAA,CACrB,GAAIA,KAAK,CAACE,GAAI,CAAA,CAACvE,IAAI,GAAKA,IAAAA,CAAM,CAC5BmrE,KAAAA,CAAQ,IACR,CAAA,IAAI,CAACunM,MAAM,CAAC1yQ,IAAK,CAAA,CAACqjP,GAAG,CAAGh/O,KAAK,CAACE,GAAAA,CAAI,CAAC8+O,GAAG,CACtC,IAAI,CAACqvB,MAAM,CAAC1yQ,IAAK,CAAA,CAACirH,IAAI,CAAG5mH,KAAK,CAACE,GAAI,CAAA,CAAC0mH,IAAI,CACxC,GAAI5mH,KAAK,CAACE,IAAI,CAACwE,cAAc,CAAC,QAAA,CAAA,CAAW,CACvC,IAAI,CAAC2pQ,MAAM,CAAC1yQ,KAAK,CAACyiI,MAAM,CAAGp+H,KAAK,CAACE,GAAI,CAAA,CAACk+H,OACxC,MAAO,GAAIp+H,KAAK,CAACE,GAAAA,CAAI,CAACwE,cAAc,CAAC,aAAgB,CAAA,CAAA,CACnD,IAAI,CAAC2pQ,MAAM,CAAC1yQ,IAAAA,CAAK,CAAC6tR,WAAW,CAAGxpR,KAAK,CAACE,IAAI,CAACspR,YAAW,CAExD,KACF,CACF,CACA,GAAI,CAAC1iN,MAAO,CACV,IAAI,CAACmoM,UAAU,CAACtzQ,IAClB,EAAA,CACF,CACA,IAAI,MAAMuE,GAAOF,IAAAA,KAAAA,CAAM,CACrB,GAAI,IAAI,CAACquQ,MAAM,CAACruQ,KAAK,CAACE,GAAI,CAAA,CAACvE,IAAI,CAAC,CAAE,SAClC,IAAI,CAAC2yQ,OAAO,CAACtuQ,KAAK,CAACE,GAAI,CAAA,EACzB,CACA,GAAI,IAAI,CAAC+7U,aAAa,CAAE,CACtB,IAAI,CAACC,YAAY,GACnB,CACA,GAAI,CAAC,IAAI,CAACH,YAAY,EAAI,CAAC,IAAI,CAACA,YAAY,CAAC39M,MAAM,CAAE,CACnD,IAAI,CAAC88M,UAAU,GACjB,CACF,CACA,IAAI9sE,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAI4sE,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACc,YAAY,CAE1B,IAAIrzE,KAAM1oQ,CAAAA,KAAK,CAAE,CACf,IAAI,CAAC4oQ,MAAM,CAAG5oQ,MAChB,CACA,IAAI0oQ,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACE,MACd,CACA,IAAIuzE,KAAAA,CAAMn8U,KAAK,CAAE,CACf,GAAI,IAAI,CAACo8U,MAAM,GAAKp8U,KAAO,CAAA,OAC3B,IAAI,CAACo8U,MAAM,CAAGp8U,KACd,CAAA,IAAI,CAACq8U,gBAAgB,GACvB,CACA,IAAIF,OAAQ,CACV,OAAO,IAAI,CAACC,MAAM,CAEpB,IAAIn0S,KAAAA,CAAMjoC,KAAK,CAAE,CACf,GAAI,IAAI,CAACkoC,MAAM,GAAKloC,KAAO,CAAA,OAC3B,IAAI,CAACkoC,MAAM,CAAGloC,MACd,IAAI,CAACq8U,gBAAgB,GACvB,CACA,IAAIp0S,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MAAM,CAEpB,IAAIlqB,KAAMhe,CAAAA,KAAK,CAAE,CACf,GAAIA,KAAU,GAAA,IAAI,CAAC8kC,MAAM,CAAE,OAC3B,IAAI,CAACA,MAAM,CAAG9kC,KACd,CAAA,IAAI,CAACs8R,WAAW,CAAC5vR,CAAC,CAAG,IAAI,CAACo4B,MAAM,CAChC,GAAI,IAAI,CAACs5F,MAAM,GAAK,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAK/gF,uBAA2B,EAAA,IAAI,CAACsI,MAAM,CAACy4E,UAAU,GAAKhhF,wBAAuB,CAAA,CAAI,CAC9H,IAAI,CAACwmN,gBAAgB,GACvB,CACF,CACA,IAAIr+T,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC8mB,MACd,CACA,IAAI7mB,MAAAA,CAAOje,KAAK,CAAE,CAChB,GAAIA,KAAAA,GAAU,IAAI,CAAC+kC,OAAO,CAAE,OAC5B,IAAI,CAACA,OAAO,CAAG/kC,KACf,CAAA,IAAI,CAACs8R,WAAW,CAACloR,CAAC,CAAG,IAAI,CAAC6J,MAAM,CAChC,GAAI,IAAI,CAACmgH,MAAM,GAAK,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAK/gF,uBAA2B,EAAA,IAAI,CAACsI,MAAM,CAACy4E,UAAU,GAAKhhF,wBAAuB,CAAI,CAAA,CAC9H,IAAI,CAACwmN,gBAAgB,GACvB,CACF,CACA,IAAIp+T,QAAS,CACX,OAAO,IAAI,CAAC8mB,OAAO,CAErB,IAAI+4F,YAAAA,CAAa99H,KAAK,CAAE,CACtB,GAAI,IAAI,CAACszS,aAAa,GAAKtzS,KAAO,CAAA,CAChC,MACF,CACA,MAAMsyM,IAAO,CAAA,IAAI,CAACghG,aAClB,CAAA,IAAI,CAACA,aAAa,CAAGtzS,KACrB,CAAA,GAAI,IAAI,CAACi/H,MAAM,CAAC/zH,OAAO,EAAIonM,IAAQ,EAAA,CAAA,CAAG,CACpC,IAAI,CAAC8hC,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAEp8O,MAAOq7H,CAAAA,UAAAA,CAAWQ,MAAM,CAAE+zE,IAAAA,CAAM,IAAI,CAACrzE,MAAM,EACtE,CACA,GAAI,IAAI,CAACA,MAAM,CAAC/zH,OAAO,EAAIlL,OAAS,CAAG,CAAA,CACrC,IAAI,CAACo0O,MAAM,CAAC/L,GAAG,CAACyW,OAAO,EAAE12O,MAAO21H,CAAAA,UAAAA,CAAWQ,MAAM,CAAEv+H,MAAO,IAAI,CAACi/H,MAAM,EACvE,MAAO,CACL,GAAIqzE,IAAQ,EAAA,CAAA,CAAG,CACb,GAAI,IAAI,CAACypI,YAAY,EAAI,IAAI,CAACA,YAAY,CAAC39M,MAAM,EAAI,IAAI,CAAClzH,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACxF,IAAI,CAACiwU,UAAU,GACjB,CACF,CACF,CACF,CACA,IAAIr9M,YAAe,EAAA,CACjB,OAAO,IAAI,CAACw1K,aACd,CACA,IAAIgpC,YAAAA,CAAat8U,KAAK,CAAE,CACtB,IAAI,CAACi8U,aAAa,CAAGj8U,iBAAiB06U,mBAAsB16U,CAAAA,KAAAA,CAAMrE,IAAI,CAAGqE,MACzE,IAAI,CAACk8U,YAAY,GACnB,CACA,IAAII,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACL,aAAa,CAE3B,IAAI9uM,SAAUntI,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACymS,UAAU,CAAGzmS,KAAAA,CAClB,GAAI,IAAI,CAACswI,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACnD,SAAS,CAAGntI,MACjC,CACF,CACA,IAAImtI,SAAY,EAAA,CACd,OAAO,IAAI,CAACs5J,UACd,CACA,IAAIzpK,OAAOh9H,KAAK,CAAE,CAChB,GAAI,IAAI,CAACu8U,WAAW,CAAE,CACpB,IAAI,CAACrB,UAAU,GACjB,CACA,IAAI,CAAC/hM,OAAO,CAAGn5I,KAAAA,CACf,GAAI,CAAC,IAAI,CAACswI,aAAa,CAAE,CACvB,MACF,CACA,GAAI,IAAI,CAACplI,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACiwU,UAAU,GACjB,CACF,CACA,IAAIn+M,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OACd,CACA,IAAIhyH,IAAAA,EAAO,CACT,GAAI,IAAI,CAACmpH,aAAa,CAAE,CACtB,OAAO,IAAI,CAACA,aAAa,CAACnpH,IAAI,CAEhC,OAAO,IACT,CACA28E,QAAW,EAAA,CACT,MAAMukI,GAAAA,CAAM,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMtrG,KAAQsrG,CAAAA,GAAAA,CAAItrG,KAAK,CACvB,MAAMC,MAASD,CAAAA,KAAAA,CAAMC,MAAM,CAC3B,IAAI,CAACi7K,iBAAiB,CAAGl7K,KAAAA,CAAMr9H,EAAE,CAAC,aAAc,IAAI,CAAC88U,gBAAgB,CAAE,IAAI,CAC3E,CAAA,GAAIx/M,MAAQ,CAAA,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,MAAAA,CAAOt9H,EAAE,CAAC,KAAA,CAAO,IAAI,CAAC+8U,aAAa,CAAE,IAAI,CAC/D,CAAA,IAAI,CAACtkC,gBAAgB,CAAGn7K,MAAAA,CAAOt9H,EAAE,CAAC,QAAA,CAAU,IAAI,CAACg9U,eAAe,CAAE,IAAI,EACxE,CACA,IAAI,CAACvB,UAAU,EACf,CAAA,GAAI,IAAI,CAACc,aAAa,CAAE,CACtB,IAAI,CAACC,YAAY,GACnB,CACA,GAAI,IAAI,CAAC5oC,aAAa,EAAI,EAAG,CAC3BjrE,GAAAA,CAAIyW,OAAO,EAAE12O,OAAO21H,UAAWQ,CAAAA,MAAM,CAAE,IAAI,CAAC+0K,aAAa,CAAE,IAAI,CAACr0K,MAAM,EACxE,CACF,CACAl7B,SAAAA,EAAY,CACV,MAAMskI,GAAAA,CAAM,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CAC3B,MAAMtrG,MAAQsrG,GAAItrG,CAAAA,KAAK,CACvB,MAAMC,OAASD,KAAMC,CAAAA,MAAM,CAC3B,IAAI,CAACi7K,iBAAiB,EAAE34S,GAAAA,EACxB,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,KACzB,GAAIj7K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,KACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,IAAI,CAACnyL,IAAI,EAAA,CACT,IAAI,CAACk1N,UAAU,EACf,CAAA,GAAI,IAAI,CAAC5nC,aAAa,EAAI,CAAA,CAAG,CAC3BjrE,GAAAA,CAAIyW,OAAO,EAAEp8O,MAAAA,CAAOq7H,UAAWQ,CAAAA,MAAM,CAAE,IAAI,CAAC+0K,aAAa,CAAE,IAAI,CAACr0K,MAAM,EACxE,CACF,CACA09M,SAAY,EAAA,CACV,IAAI,CAACZ,YAAY,CAAG,IAAA,CACpB,GAAI,IAAI,CAACC,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAACX,QAAQ,EAC1B,CAAA,IAAI,CAACW,YAAY,CAAG,KACtB,CACA,IAAI,MAAM97U,GAAAA,IAAO,IAAI,CAACmuQ,MAAM,CAAC,CAC3B,IAAI,CAACA,MAAM,CAACnuQ,GAAAA,CAAI,CAACm7U,QAAQ,GAC3B,CACA,IAAI,CAAChtE,MAAM,CAAG,IACd,CAAA,IAAI,CAAC6sE,UAAU,EACf,CAAA,IAAI,CAACprM,MAAM,CAAG,IACd,CAAA,IAAI,CAAC0J,KAAK,EAAE92I,MAAAA,EACZ,CAAA,IAAI,CAAC82I,KAAK,CAAG,KACb,GAAI,IAAI,CAAClJ,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACpV,QAAQ,CAAG,IAC9B,CAAA,IAAI,CAACoV,aAAa,CAACvO,IAAI,CAAG,IAC1B,CAAA,IAAI,CAACuO,aAAa,CAAG,KACvB,CACF,CACA6qM,YAAa,CACX,GAAI,IAAI,CAACoB,WAAW,CAAE,OACtB,GAAI,CAAC,IAAI,CAACjsM,aAAa,CAAE,OACzB,MAAM1S,aAAgB,CAAA,CACpB,IAAI,CAAC0S,aAAa,CACnB,CACD,IAAI,IAAIj4I,EAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAAC4oI,OAAO,CAAC7gJ,MAAM,CAAED,EAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACrD,MAAM+kI,MAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,CACvE,CAAA,GAAI+kI,MAAO,CACTA,KAAAA,CAAME,gBAAgB,CAACM,eACzB,CACF,CACA,IAAI,CAAC2+M,WAAW,CAAG,KACrB,CACArB,UAAAA,EAAa,CACX,GAAI,CAAC,IAAI,CAACqB,WAAW,EAAI,CAAC,IAAI,CAACjsM,aAAa,CAAE,OAC9C,MAAM1S,aAAAA,CAAgB,CACpB,IAAI,CAAC0S,aAAa,CACnB,CACD,IAAI,IAAIj4I,CAAI,CAAA,CAAA,CAAGkY,IAAM,IAAI,CAAC4oI,OAAO,CAAC7gJ,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACrD,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,EAAE,CACvE,CAAA,GAAI+kI,KAAO,CAAA,CACTA,MAAMG,mBAAmB,CAACK,aAC5B,EAAA,CACF,CACA,IAAI,CAAC2+M,WAAW,CAAG,MACrB,CACAnB,UAAAA,CAAWjkI,KAAK,CAAE,CAChB,GAAI,CAAC,IAAI,CAAC/4E,MAAM,CAAE,OAClB,MAAM2D,IAAAA,CAAO,IAAI,CAAC3D,MAAM,CAAC04E,MAAM,CAACK,KAAM,CAAA,CACtC,GAAI,CAACp1E,KAAM,CACT,GAAI,IAAI,CAACuO,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACvO,IAAI,CAAG,IAC1B,CAAA,IAAI,CAACuO,aAAa,CAAC/E,OAAO,CAAG,MAC/B,CACA,MACF,CACA,IAAIrQ,QACJ,CAAA,GAAI,IAAI,CAACkD,MAAM,CAACy4E,UAAU,GAAKhhF,wBAA0B,CAAA,CACvDqF,QAAW,CAAA,IAAI,CAACk5G,MAAM,CAACwoG,iCACzB,MAAO,GAAI,IAAI,CAACx+M,MAAM,CAACy4E,UAAU,GAAK/gF,uBAAyB,CAAA,CAC7DoF,SAAW,IAAI,CAACk5G,MAAM,CAACyoG,gCAA+B,CACxD,KAAO,CACL3hN,QAAAA,CAAW,IAAI,CAACk5G,MAAM,CAACngF,gBAAe,CAExC,GAAI,CAAC,IAAI,CAAC3jB,aAAa,CAAE,CACvB,IAAI,CAACA,aAAa,CAAG,IAAI3I,YAAAA,CAAa5F,KAAM,IAAI,CAACuH,SAAS,CAAE,IAAI,CAACkQ,KAAK,CACtE,CAAA,IAAI,CAAClJ,aAAa,CAACrD,UAAU,CAAG,KAChC,CAAA,IAAI,CAACqD,aAAa,CAACrG,aAAa,CAAG,KACnC,CAAA,IAAI,CAACqG,aAAa,CAACnD,SAAS,CAAG,IAAI,CAACs5J,UAAU,CAC9C,IAAI,CAAC32J,MAAM,CAAClS,aAAa,CAACzkI,IAAI,CAAC,IAAI,CAACm3I,aAAa,CACjD,CAAA,IAAI,CAACgvJ,aAAa,CAAC,CAAE,CAAA,CAAG,IAAI,CAACnyI,MAAM,CAACx1J,CAAC,CACrC,IAAI,CAAC2nS,aAAa,CAAC,CAAE,CAAA,CAAG,IAAI,CAACnyI,MAAM,CAACjhJ,CAAC,CACrC,IAAI,CAACozR,aAAa,CAAC,CAAA,CAAE,CAAG,IAAI,CAACnyI,MAAM,CAACjlJ,CAAC,CACrC,IAAI,CAACooI,aAAa,CAACvuC,YAAY,CAAC05O,cAAgB,CAAA,IAAI,CAACn8C,aAAa,CAClE,CAAA,IAAI,CAAChvJ,aAAa,CAACvuC,YAAY,CAAC25O,cAAe,IAAI,CAACvuL,MAAM,CAACllJ,CAAC,CAC5D,CAAA,GAAI,IAAI,CAACiD,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACiwU,UAAU,GACjB,CACF,CACA,GAAI,IAAI,CAAC7qM,aAAa,CAACpV,QAAQ,GAAKA,QAAAA,CAAU,CAC5C,IAAI,CAACoV,aAAa,CAACpV,QAAQ,CAAGA,SAChC,CACA,GAAI,IAAI,CAACoV,aAAa,CAACvO,IAAI,GAAKA,IAAAA,CAAM,CACpC,IAAI,CAACuO,aAAa,CAACvO,IAAI,CAAGA,IAC1B,CAAA,IAAI,CAACuO,aAAa,CAAC/E,OAAO,CAAG,IAC7B,CAAA,IAAI,CAAC+E,aAAa,CAAC5S,QAAQ,CAAG,CAAC,EACjC,CACA,GAAI,IAAI,CAACU,MAAM,CAACm4E,KAAK,EAAI,IAAI,CAACn4E,MAAM,CAACm4E,KAAK,CAACpsK,OAAO,CAAE,CAClD,IAAI,CAACmmG,aAAa,CAACvuC,YAAY,CAACw5O,kBAAoB,CAAA,IAAI,CAACn9M,MAAM,CAACm4E,KAAK,CAACpsK,OAAO,CAC7E,CAAA,IAAI,CAACmmG,aAAa,CAACvuC,YAAY,CAACy5O,iBAAmB,CAAA,IAAI,CAACp9M,MAAM,CAACm4E,KAAK,CAACpsK,OAAO,EAC9E,CAAA,KAAO,CACL,IAAI,CAACmmG,aAAa,CAACpuC,eAAe,CAACq5O,oBACnC,IAAI,CAACjrM,aAAa,CAACpuC,eAAe,CAACs5O,iBAAAA,EACrC,CACA,GAAI,IAAI,CAACp9M,MAAM,CAACm4E,KAAK,GAAK,IAAI,CAACn4E,MAAM,CAACy4E,UAAU,GAAKhhF,wBAAAA,EAA4B,IAAI,CAACuI,MAAM,CAACy4E,UAAU,GAAK/gF,uBAAsB,CAAA,CAAI,CACpI,IAAI,CAACwa,aAAa,CAACpI,eAAe,CAAG,IAAI,CAACA,eAAe,CACzD,MAAM2zJ,UAAY,IAAI,CAACz9J,MAAM,CAACm4E,KAAK,CAACa,MAAM,CAAC,IAAI,CAACh5E,MAAM,CAAC63E,SAAS,CAACkB,MAAM,CAAC,CACxE,GAAI0kF,SAAAA,CAAW,CACb,MAAME,gBAAAA,CAAmB,CAAIF,CAAAA,SAAAA,CAAU/hP,IAAI,CAACvlC,CAAC,CAC7C,MAAMynR,kBAAoB,CAAIH,CAAAA,SAAAA,CAAU/hP,IAAI,CAACliC,CAAC,CAC9C,IAAI,CAACqkR,YAAY,CAACr7R,GAAG,CAACi7R,SAAU3jF,CAAAA,MAAM,CAACxrM,CAAC,CAAGqvR,gBAAkBF,CAAAA,SAAAA,CAAU3jF,MAAM,CAAC9jM,CAAC,CAAG4nR,iBAAAA,CAAmBH,UAAU3jF,MAAM,CAAC3jM,CAAC,CAAGwnR,iBAAkBF,SAAU3jF,CAAAA,MAAM,CAACtgM,CAAC,CAAGokR,iBACjK,CAAA,CAAA,MAAM72P,GAAM,CAAA,IAAI,CAACi5F,MAAM,CAACm4E,KAAK,CAACpsK,OAAO,CACrC,IAAI,CAAC+xP,UAAU,CAACt7R,GAAG,CAACi7R,SAAU/hP,CAAAA,IAAI,CAACptC,CAAC,CAAGy4B,GAAInnB,CAAAA,KAAK,CAAE69Q,SAAU/hP,CAAAA,IAAI,CAAC1lC,CAAC,CAAG+wB,GAAIlnB,CAAAA,MAAM,CAAE49Q,SAAAA,CAAU/hP,IAAI,CAACvlC,CAAC,CAAG4wB,GAAAA,CAAInnB,KAAK,CAAE69Q,SAAAA,CAAU/hP,IAAI,CAACliC,CAAC,CAAGutB,GAAAA,CAAIlnB,MAAM,EAC9I,MAAO,CACL,IAAI,CAACg+Q,YAAY,CAACr7R,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,EAAG,CACjC,EAAA,CACA,IAAI,CAAC27R,mBAAmB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,YAAY,CAACvvR,CAAC,CACjD,IAAI,CAAC6vR,mBAAmB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,YAAY,CAAC7nR,CAAC,CACjD,IAAI,CAACmoR,mBAAmB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,YAAY,CAAC1nR,CAAC,CACjD,IAAI,CAACgoR,mBAAmB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,YAAY,CAACrkR,CAAC,CACjD,IAAI,CAAC04H,aAAa,CAACvuC,YAAY,CAAC45O,kBAAoB,CAAA,IAAI,CAACp/C,mBAAmB,CAC5E,CAAA,IAAI,CAACC,iBAAiB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,UAAU,CAACxvR,CAAC,CAC7C,IAAI,CAAC8vR,iBAAiB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACN,UAAU,CAAC9nR,CAC5C,CAAA,IAAI,CAACooR,iBAAiB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,UAAU,CAAC3nR,CAAC,CAC7C,IAAI,CAACioR,iBAAiB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACN,UAAU,CAACtkR,CAAC,CAC7C,IAAI,CAAC04H,aAAa,CAACvuC,YAAY,CAAC85O,iBAAkB,IAAI,CAACr/C,iBAAiB,EAC1E,MAAO,CACL,IAAI,CAAClsJ,aAAa,CAACpI,eAAe,CAAG,KACvC,CACA,IAAI,CAACm0M,gBAAgB,GACvB,CACAA,kBAAmB,CACjB,IAAIl5O,MAAS,CAAA,IAAI,CAACg5O,KAAK,CAAG,CAAC,CAAA,CAAI,EAC/B,IAAI94O,MAAAA,CAAS,IAAI,CAACp7D,KAAK,CAAG,CAAC,CAAI,CAAA,CAAA,CAC/B,IAAI60S,IAAO,CAAA,CAAA,CACX,IAAIC,IAAAA,CAAO,CACX,CAAA,GAAI,IAAI,CAAC3+M,MAAM,GAAK,IAAI,CAACA,MAAM,CAACy4E,UAAU,GAAKhhF,wBAAAA,EAA4B,IAAI,CAACuI,MAAM,CAACy4E,UAAU,GAAK/gF,uBAAsB,CAAA,CAAI,CAC9H,IAAIl+G,EAAI,CACR,CAAA,IAAIkU,CAAI,CAAA,CAAA,CACR,GAAI,IAAI,CAACsyG,MAAM,CAACm4E,KAAK,CAAE,CACrB,MAAMslF,SAAAA,CAAY,IAAI,CAACz9J,MAAM,CAACm4E,KAAK,CAACa,MAAM,CAAC,IAAI,CAACh5E,MAAM,CAAC63E,SAAS,CAAC,IAAI,CAACkB,KAAK,CAAC,CAAC,CAC7E,GAAI0kF,SAAW,CAAA,CACbjkR,CAAIikR,CAAAA,SAAAA,CAAU/hP,IAAI,CAACvlC,CAAC,CACpBuX,CAAAA,CAAI+vQ,UAAU/hP,IAAI,CAACliC,CAAC,CACpBklU,KAAO,CAAC,EAAMjhD,CAAAA,SAAAA,CAAUrkF,KAAK,CAAC9qM,CAAC,EAAI,IAAI,CAACo4B,MAAM,CAC9Ci4S,IAAAA,CAAO,CAAC,EAAA,CAAMlhD,SAAUrkF,CAAAA,KAAK,CAACpjM,CAAAA,EAAK,IAAI,CAAC2wB,QAC1C,CACF,CACA,MAAMq3P,SAAYxkR,CAAAA,CAAAA,CAAI,IAAI,CAACwmH,MAAM,CAACu4E,aAAa,CAC/C,MAAM0lF,UAAYvwQ,CAAI,CAAA,IAAI,CAACsyG,MAAM,CAACu4E,aAAa,CAC/C,IAAI,CAAC2lF,WAAW,CAAC17R,GAAG,CAAChJ,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAAC84B,MAAM,CAAE,IAAI,CAACm3P,YAAY,CAACvvR,CAAC,CAAG0vR,SAAAA,CAAAA,CAAYxkS,IAAKoU,CAAAA,GAAG,CAAC,IAAI,CAAC+4B,OAAO,CAAE,IAAI,CAACk3P,YAAY,CAAC7nR,CAAC,CAAGioR,SAC1Hl5L,CAAAA,CAAAA,CAAAA,MAAAA,EAAUi5L,SACV/4L,CAAAA,MAAAA,EAAUg5L,SACV,CAAA,IAAI,CAACC,WAAW,CAAC5vR,CAAC,EAAI0vR,SACtB,CAAA,IAAI,CAACE,WAAW,CAACloR,CAAC,EAAIioR,SAAAA,CACtBl5L,MAAUz3F,EAAAA,IAAAA,CAAKI,KAAK,CAAC,IAAI,CAACg5B,MAAM,EAAI,IAAI,CAACm3P,YAAY,CAACvvR,CAAC,CAAG0vR,SAAQ,CAAA,CAAI,KAAQ,CAC9E/4L,CAAAA,CAAAA,MAAAA,EAAU33F,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAACi5B,OAAO,EAAI,IAAI,CAACk3P,YAAY,CAAC7nR,CAAC,CAAGioR,SAAQ,CAAI,CAAA,IAAA,CAAQ,GAC/E,GAAI,IAAI,CAAC/rJ,aAAa,CAAE,CACtB,IAAI,CAACmsJ,kBAAkB,CAAC,CAAE,CAAA,CAAG,IAAI,CAACH,WAAW,CAAC5vR,CAAC,CAC/C,IAAI,CAAC+vR,kBAAkB,CAAC,CAAA,CAAE,CAAG,IAAI,CAACH,WAAW,CAACloR,CAAC,CAC/C,IAAI,CAACk8H,aAAa,CAACvuC,YAAY,CAAC65O,iBAAAA,CAAmB,IAAI,CAACn/C,kBAAkB,EAC5E,CACF,CACA,IAAI,CAACjjJ,KAAK,CAAC0H,aAAa,CAAC/9C,MAAAA,CAAQE,MAAQ,CAAA,CAAA,CAAA,CACzC,IAAI,CAACm2C,KAAK,CAACwH,gBAAgB,CAAC87L,IAAMC,CAAAA,IAAAA,CAAM,CAC1C,EAAA,CACA90M,YAAY9gH,IAAI,CAAE,CAChBA,IAAAA,CAAK3D,MAAM,CAAC5iB,GAAG,CAAC,CAAA,CAAG,EAAG,CACtBumB,CAAAA,CAAAA,IAAAA,CAAKtD,WAAW,CAACjjB,GAAG,CAAC,IAAI,CAAC07R,WAAW,CAAC5vR,CAAC,CAAG,EAAK,CAAA,IAAI,CAAC4vR,WAAW,CAACloR,CAAC,CAAG,GAAK,IACzE+S,CAAAA,CAAAA,IAAAA,CAAKD,sBAAsB,CAACC,KAAM,IAAI,CAACqyH,KAAK,CAACxZ,iBAAiB,EAAA,CAAA,CAC9D,OAAO74G,IACT,CACA+0T,YAAe,EAAA,CACb,GAAI,CAAC,IAAI,CAACD,aAAa,CAAE,OACzB,GAAI,IAAI,CAACnsU,IAAI,GAAK2qU,oBAAqB,OACvC,MAAMlsE,IAAO,CAAA,IAAI,CAACF,MAAM,CAAC,IAAI,CAAC4tE,aAAa,CAAC,CAC5C,GAAI1tE,IAAAA,EAAQ,CAACA,IAAKjoJ,CAAAA,SAAS,GAAK,CAAC,IAAI,CAACy1N,YAAY,EAAI,CAAC,IAAI,CAACA,YAAY,CAACz1N,SAAS,CAAD,CAAI,CACnF,GAAI,IAAI,CAACp7G,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACg7G,IAAI,CAACqoJ,KAAK5yQ,IAAI,EACrB,CACF,CACF,CACA6gV,gBAAiB5kC,CAAAA,OAAO,CAAEC,OAAO,CAAE,CACjCD,OAAAA,CAAQt4S,GAAG,CAAC,MAAO,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAC1CF,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,SAAU,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAC/CF,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,MAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CACzCD,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,SAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,CAC9C,CAAA,GAAI,IAAI,CAAC7sS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACiwU,UAAU,GACjB,CACF,CACAsB,cAAcr/M,KAAK,CAAE,CACnB,MAAMl/H,MAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACf,GAAI,IAAI,CAACq+U,WAAW,EAAI,IAAI,CAACrxU,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,EAAI,IAAI,CAAColI,aAAa,CAAE,CACjFlT,MAAME,gBAAgB,CAAC,CACrB,IAAI,CAACgT,aAAa,CACnB,EACH,CACF,CACAosM,eAAgBt/M,CAAAA,KAAK,CAAE,CACrB,GAAI,CAAC,IAAI,CAACkT,aAAa,CAAE,OACzB,MAAMpyI,KAAQ,CAAA,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,MAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAAA,CAAQ,EAAG,OACfk/H,KAAAA,CAAMG,mBAAmB,CAAC,CACxB,IAAI,CAAC+S,aAAa,CACnB,EACH,CACAZ,qBAAAA,EAAwB,CACtB,IAAI,IAAIr3I,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,MAAM+kI,KAAAA,CAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACtE,GAAI,CAAC+kI,MAAO,SACZA,KAAAA,CAAMG,mBAAmB,CAAC,CACxB,IAAI,CAAC+S,aAAa,CACnB,EACH,CACF,CACAg+H,OAAQj8P,CAAAA,IAAI,CAAE,CACZ,MAAMk8P,IAAO,CAAA,IAAImsE,oBAAoB,IAAI,CAAE,CACzC/+U,IAAAA,CAAM0W,KAAK1W,IAAI,CACfqjP,GAAK3sO,CAAAA,IAAAA,CAAK2sO,GAAG,CACbp4H,IAAAA,CAAMv0G,IAAKu0G,CAAAA,IAAI,CACf4iK,WAAan3Q,CAAAA,IAAAA,CAAKm3Q,WACpB,EACA,CAAA,IAAI,CAACnb,MAAM,CAACh8P,IAAK1W,CAAAA,IAAI,CAAC,CAAG4yQ,KACzB,GAAIA,IAAAA,CAAK5yQ,IAAI,EAAI4yQ,IAAK5yQ,CAAAA,IAAI,GAAK,IAAI,CAACsgV,aAAa,CAAE,CACjD,IAAI,CAACC,YAAY,GACnB,CACA,OAAO3tE,IACT,CACAU,UAAAA,CAAWtzQ,IAAI,CAAE,CACf,OAAO,IAAI,CAAC0yQ,MAAM,CAAC1yQ,IAAK,EAC1B,CACA4yQ,IAAAA,CAAK5yQ,IAAI,CAAE,CACT,OAAO,IAAI,CAAC0yQ,MAAM,CAAC1yQ,IAAK,CAC1B,CACAuqH,IAAKvqH,CAAAA,IAAI,CAAE,CACT,MAAM4yQ,IAAO,CAAA,IAAI,CAACF,MAAM,CAAC1yQ,IAAK,CAAA,CAC9B,MAAMmM,OAAAA,CAAU,IAAI,CAACi0U,YAAY,CACjC,GAAIj0U,SAAWA,OAAYymQ,GAAAA,IAAAA,CAAM,CAC/BzmQ,OAAAA,CAAQyiQ,QAAQ,CAAG,MACrB,CACA,IAAI,CAACwxE,YAAY,CAAGxtE,IACpB,CAAA,GAAI,IAAI,CAACwtE,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAGxtE,IAAAA,CACpB,IAAI,CAACwtE,YAAY,CAAC71N,IAAI,GACxB,CACA,OAAOqoJ,IACT,CACAlmJ,OAAQ,CACN,GAAI,IAAI,CAAC0zN,YAAY,GAAK,IAAI,CAACC,YAAY,CAAE,OAC7C,GAAI,IAAI,CAACD,YAAY,CAACz1N,SAAS,CAAE,CAC/B,IAAI,CAACy1N,YAAY,CAAC1zN,KAAK,GACzB,CACF,CACA/D,MAAS,EAAA,CACP,GAAI,IAAI,CAACy3N,YAAY,GAAK,IAAI,CAACC,YAAY,CAAE,OAC7C,GAAI,IAAI,CAACD,YAAY,CAACv1N,QAAQ,CAAE,CAC9B,IAAI,CAACu1N,YAAY,CAACz3N,MAAM,GAC1B,CACF,CACA0B,IAAO,EAAA,CACL,GAAI,IAAI,CAAC+1N,YAAY,GAAK,IAAI,CAACC,YAAY,CAAE,OAC7C,IAAI,CAACD,YAAY,CAAC/1N,IAAI,GACxB,CA9iBA5lH,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,QAAS,IAAI,CAACg5K,iBAAiB,CAAG,KAAM,IAAI,CAACC,cAAc,CAAG,KAAM,IAAI,CAACC,gBAAgB,CAAG,IAC1G,CAAA,IAAI,CAAC3lS,KAAK,CAAGgoU,iBACb,CAAA,IAAI,CAAClxM,SAAS,CAAG8qG,MAAAA,CAAOngF,eACxB,CAAA,IAAI,CAAC9G,MAAM,CAAG,IAAIz/I,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAG,EACjC,CAAA,IAAI,CAAC4xR,aAAa,CAAG,IAAIptR,YAAAA,CAAa,CACtC,CAAA,CAAA,IAAI,CAAC02P,MAAM,CAAG,CACd,CAAA,IAAI,CAACwzE,MAAM,CAAG,KACd,CAAA,IAAI,CAACl0S,MAAM,CAAG,KACd,CAAA,IAAI,CAACpD,MAAM,CAAG,CACd,CAAA,IAAI,CAACC,OAAO,CAAG,CACf,CAAA,IAAI,CAAC0hQ,UAAU,CAAG,CAClB,CAAA,IAAI,CAACttJ,OAAO,CAAG,CACb3rB,aACD,CACD,CAAA,IAAI,CAAC8uK,WAAW,CAAG,IAAIpiR,IAAAA,CAAK,EAAG,CAC/B,CAAA,CAAA,IAAI,CAACuiR,kBAAkB,CAAG,IAAIvqR,YAAa,CAAA,CAAA,CAC3C,CAAA,IAAI,CAAC+pR,YAAY,CAAG,IAAIzhR,IACxB,CAAA,IAAI,CAAC+hR,mBAAmB,CAAG,IAAIrqR,YAAa,CAAA,CAAA,CAC5C,CAAA,IAAI,CAACgqR,UAAU,CAAG,IAAI1hR,IACtB,CAAA,IAAI,CAACgiR,iBAAiB,CAAG,IAAItqR,YAAa,CAAA,CAAA,CAC1C,CAAA,IAAI,CAACohS,aAAa,CAAG,CAAC,CACtB,CAAA,IAAI,CAAC9iK,WAAW,CAAG,IACnB,CAAA,IAAI,CAACgJ,KAAK,CAAG,IAAIoE,SACjB,CAAA,IAAI,CAAC9N,MAAM,CAAG,IAAI21C,KAClB,CAAA,IAAI,CAAC31C,MAAM,CAAC61C,KAAK,CAAG,IAAI,CAACnsC,KAAK,CAC9B,IAAI,CAAClJ,aAAa,CAAG,IAAA,CACrBrR,OAAO4hB,QAAQ,CAAC,IAAI,CAAC/Q,MAAM,CAAC61C,KAAK,CACjC,CAAA,IAAI,CAAC71C,MAAM,CAACopJ,OAAO,CAAGj6J,MACtB,CAAA,IAAI,CAACiJ,eAAe,CAAG,IAAI,CAACD,WAAW,CAACx/H,IAAI,CAAC,IAAI,CACjD,CAAA,IAAI,CAAC8zU,WAAW,CAAG,KACnB,CAAA,IAAI,CAACN,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC5tE,MAAM,CAAG,EACd,CAAA,IAAI,CAAC2tE,YAAY,CAAG,IAAItB,oBAAoB,IAAI,CAAE,CAChD/+U,IAAAA,CAAM,IAAI,CAACsjI,MAAM,CAACtjI,IAAI,CACtBqjP,GAAK,CAAA,CAAA,CACLp4H,IAAM,CAAA,KAAA,CACN4iK,YAAa,IACf,CAAA,CACA,CAAA,IAAI,CAACuyD,YAAY,CAAG,IAAI,CAACC,aAAY,CAwgBzC,CAlkBMF,gBAEGzxN,UAAU,CAAG,MAGlB,CALEyxN,gBAKGxxN,WAAW,CAAG,OAGnB,CAREwxN,gBAQGvxN,YAAY,CAAG,QAGpB,CAXEuxN,gBAWGtxN,UAAU,CAAG,MAGlB,CAdEsxN,gBAcGrxN,SAAS,CAAG,KAGjB,CAjBEqxN,gBAiBGR,UAAU,CAAG,MAmjBtB,CAAA,MAAM0B,mBACJ58U,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAM+xU,SAAAA,CAAY,CAChB,SAAA,CACD,CACKC,MAAAA,qBAAAA,SAA8B12E,eAclC,CAAA,IAAIvyG,gBAAgB/4B,QAAQ,CAAE,CAC5B,IAAI,CAACiiN,gBAAgB,CAAGjiN,SAC1B,CACA,IAAI+4B,eAAkB,EAAA,CACpB,GAAI,CAAC,IAAI,CAACkpL,gBAAgB,CAAE,CAC1B,MAAMhzS,OAAU,CAAA,IAAInG,OAAQ,CAAA,IAAI,CAACqkM,GAAG,CAACpmM,cAAc,CAAE,CACnDjkB,KAAO,CAAA,CAAA,CACPC,MAAQ,CAAA,CAAA,CACR9f,OAAQyzB,kBACRj2B,CAAAA,IAAAA,CAAM,QACR,CAAA,CAAA,CACA,MAAM4uC,MAAS,CAAA,IAAInlC,UAAW+kC,CAAAA,OAAAA,CAAQ1B,IAAI,EAC1C8B,CAAAA,CAAAA,MAAM,CAAC,EAAE,CAAGA,MAAM,CAAC,CAAA,CAAE,CAAGA,MAAM,CAAC,CAAE,CAAA,CAAGA,MAAM,CAAC,CAAE,CAAA,CAAG,IAChDJ,OAAQV,CAAAA,MAAM,EACd,CAAA,MAAMyxF,SAAW,IAAI+1F,gBAAAA,CACrB/1F,QAAS8yF,CAAAA,OAAO,CAACptN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,GAC3Bs6H,QAASszF,CAAAA,QAAQ,CAAC5tN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAC5Bs6H,CAAAA,CAAAA,SAAS4wF,WAAW,CAAG3hL,OACvB+wF,CAAAA,SAASopC,UAAU,CAAGn6H,OACtB+wF,CAAAA,SAAS6+K,iBAAiB,CAAG,GAC7B7+K,CAAAA,SAASstC,WAAW,CAAG,KACvBttC,CAAAA,SAAS+kF,UAAU,CAAG,KACtB/kF,CAAAA,SAAS8kF,MAAM,CAAG,KAClB9kF,CAAAA,SAASglF,SAAS,CAAG,KACrBhlF,CAAAA,SAASk4B,SAAS,CAAG9mC,mBACrB4O,CAAAA,SAASu4B,UAAU,CAAG,KACtBv4B,CAAAA,SAASihF,SAAS,CAAG,KACrBjhF,CAAAA,QAAS0Q,CAAAA,IAAI,CAAG18G,aAAAA,CAChBgsG,SAASzvF,MAAM,EACf,CAAA,IAAI,CAAC6tQ,eAAe,CAAGnvQ,OACvB,CAAA,IAAI,CAACgzS,gBAAgB,CAAGjiN,SAC1B,CACA,OAAO,IAAI,CAACiiN,gBAAgB,CAE9B,IAAIP,gCAAiC1hN,CAAAA,QAAQ,CAAE,CAC7C,IAAI,CAACkiN,iCAAiC,CAAGliN,SAC3C,CACA,IAAI0hN,gCAAAA,EAAmC,CACrC,GAAI,CAAC,IAAI,CAACQ,iCAAiC,CAAE,CAC3C,MAAMliN,QAAAA,CAAW,IAAI,CAAC+4B,eAAe,CAACtmJ,KAAK,EAC3CutH,CAAAA,QAAAA,CAASogF,cAAc,CAAGzlF,yBAC1BqF,QAASzvF,CAAAA,MAAM,EACf,CAAA,IAAI,CAAC2xS,iCAAiC,CAAGliN,SAC3C,CACA,OAAO,IAAI,CAACkiN,iCAAiC,CAE/C,IAAIP,+BAAgC3hN,CAAAA,QAAQ,CAAE,CAC5C,IAAI,CAACmiN,gCAAgC,CAAGniN,SAC1C,CACA,IAAI2hN,+BAAAA,EAAkC,CACpC,GAAI,CAAC,IAAI,CAACQ,gCAAgC,CAAE,CAC1C,MAAMniN,QAAAA,CAAW,IAAI,CAAC+4B,eAAe,CAACtmJ,KAAK,EAC3CutH,CAAAA,QAAAA,CAASogF,cAAc,CAAGxlF,wBAC1BoF,QAASzvF,CAAAA,MAAM,EACf,CAAA,IAAI,CAAC4xS,gCAAgC,CAAGniN,SAC1C,CACA,OAAO,IAAI,CAACmiN,gCAAgC,CAE9C77S,OAAAA,EAAU,CACR,KAAK,CAACA,OACN,EAAA,CAAA,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,SAAU,IAAI,CAACu1Q,QAAQ,CAAE,IAAI,CAClD,CAAA,GAAI,IAAI,CAACykC,eAAe,CAAE,CACxB,IAAI,CAACA,eAAe,CAAC93Q,OAAO,EAC5B,CAAA,IAAI,CAAC83Q,eAAe,CAAG,KACzB,CACF,CACA1yC,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnD,GAAInqI,IAAAA,CAAKnH,OAAO,GAAK/K,UAAW,CAC9Bs5O,SAAAA,CAAUvuO,OAAO,CAAGmH,KAAKnH,QAC3B,CACAuuO,SAAAA,CAAU3pO,IAAI,CAAGuC,IAAAA,CAAKvC,IAAI,CAC1B,GAAIuC,IAAK2qH,CAAAA,MAAM,EAAI3lI,KAAAA,CAAMC,OAAO,CAAC+a,IAAAA,CAAK2qH,MAAM,CAAA,CAAG,CAC7Cy8G,SAAUz8G,CAAAA,MAAM,CAAG3qH,IAAAA,CAAK2qH,MAAM,CAAC9jI,KAAK,CAAC,CAAA,EACvC,CACA,GAAImZ,IAAAA,CAAK86H,SAAS,GAAKhtI,UAAW,CAChCs5O,SAAAA,CAAUtsG,SAAS,CAAG96H,KAAK86H,UAC7B,CACA,GAAI96H,KAAKiqC,KAAK,GAAKn8C,SAAW,CAAA,CAC5B,GAAIkS,IAAKiqC,CAAAA,KAAK,YAAY5uC,KAAAA,CAAO,CAC/B+rO,SAAUn9L,CAAAA,KAAK,CAAC17C,GAAG,CAACyR,IAAKiqC,CAAAA,KAAK,CAAC3kD,CAAC,CAAE0a,IAAKiqC,CAAAA,KAAK,CAACpwC,CAAC,CAAEmG,IAAKiqC,CAAAA,KAAK,CAACp0C,CAAC,CAAEmK,IAAKy8M,CAAAA,OAAO,EAAI,CAAA,EAChF,MAAO,CACL2qB,SAAAA,CAAUn9L,KAAK,CAAC17C,GAAG,CAACyR,IAAAA,CAAKiqC,KAAK,CAAC,EAAE,CAAEjqC,IAAAA,CAAKiqC,KAAK,CAAC,EAAE,CAAEjqC,IAAAA,CAAKiqC,KAAK,CAAC,EAAE,CAAEjqC,IAAAA,CAAKy8M,OAAO,EAAI,GACnF,CACA2qB,SAAAA,CAAUn9L,KAAK,CAAGm9L,UAAUn9L,MAC9B,CACA,GAAIjqC,KAAKy8M,OAAO,GAAK3uN,SAAW,CAAA,CAC9Bs5O,UAAU3qB,OAAO,CAAGz8M,IAAKy8M,CAAAA,QAAO,CAElC,GAAIz8M,IAAK8pU,CAAAA,KAAK,GAAKh8U,SAAW,CAAA,CAC5Bs5O,SAAU0iG,CAAAA,KAAK,CAAG9pU,IAAAA,CAAK8pU,MACzB,CACA,GAAI9pU,IAAAA,CAAK41B,KAAK,GAAK9nC,UAAW,CAC5Bs5O,SAAAA,CAAUxxM,KAAK,CAAG51B,KAAK41B,MACzB,CACA,GAAI51B,KAAK2L,KAAK,GAAK7d,SAAW,CAAA,CAC5Bs5O,UAAUz7N,KAAK,CAAG3L,IAAK2L,CAAAA,MAAK,CAE9B,GAAI3L,IAAK4L,CAAAA,MAAM,GAAK9d,SAAW,CAAA,CAC7Bs5O,SAAUx7N,CAAAA,MAAM,CAAG5L,IAAK4L,CAAAA,OAAM,CAEhC,GAAI5L,IAAKm3Q,CAAAA,WAAW,GAAKrpR,SAAAA,CAAW,CAClCs5O,SAAU+vC,CAAAA,WAAW,CAAGn3Q,IAAAA,CAAKm3Q,YAAW,CAE1C,GAAIn3Q,IAAAA,CAAK+rH,MAAM,CAAE,CACfq7G,SAAUr7G,CAAAA,MAAM,CAAG/rH,IAAK+rH,CAAAA,OAAM,CAEhC,GAAI/rH,IAAK8kM,CAAAA,KAAK,GAAKh3M,SAAAA,CAAW,CAC5Bs5O,SAAUtiC,CAAAA,KAAK,CAAG9kM,IAAAA,CAAK8kM,MAAK,CAE9B,GAAI9kM,IAAAA,CAAK+7P,KAAK,CAAE,CACd,IAAI,MAAMzyQ,QAAQ0W,IAAK+7P,CAAAA,KAAK,CAAC,CAC3B30B,UAAU60B,OAAO,CAACj8P,IAAK+7P,CAAAA,KAAK,CAACzyQ,IAAK,CAAA,EACpC,CACF,CACA,GAAI0W,IAAKq2P,CAAAA,KAAK,GAAKvoQ,SAAAA,CAAW,CAC5Bs5O,SAAUivB,CAAAA,KAAK,CAAGr2P,IAAAA,CAAKq2P,MAAK,CAE9B,GAAIr2P,IAAAA,CAAKiqU,YAAY,CAAE,CACrB7iG,SAAU6iG,CAAAA,YAAY,CAAGjqU,IAAKiqU,CAAAA,aAAY,CAE5C7iG,UAAU37G,YAAY,CAAGzrH,IAAKyrH,CAAAA,YAAY,GAAK39H,SAAakS,EAAAA,IAAAA,CAAKyrH,YAAY,GAAK,KAAO,CAAC,CAAA,CAAIzrH,IAAKyrH,CAAAA,YAAY,CAC/G,KAAK,CAAC8oI,uBAAwBntB,CAAAA,SAAAA,CAAWpnO,KAAMmqI,UACjD,EAAA,CACA2/F,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMs7B,MAASg2F,CAAAA,MAAAA,CAAOb,MAAM,CAC5B,OAAO,IAAI,CAACy8G,YAAY,CAACltO,MAAO,CAC9BzC,OAAAA,CAAS+9B,MAAO/9B,CAAAA,OAAO,CACvB4E,IAAMm5B,CAAAA,MAAAA,CAAOn5B,IAAI,CACjB05Q,YAAavgP,MAAOugP,CAAAA,WAAW,CAC/BprJ,MAAAA,CAAQn1F,OAAOm1F,MAAM,CACrBpgH,KAAOirB,CAAAA,MAAAA,CAAOjrB,KAAK,CACnBC,MAAAA,CAAQgrB,MAAOhrB,CAAAA,MAAM,CACrBk5L,KAAOluK,CAAAA,MAAAA,CAAOkuK,KAAK,CACnB76J,MAAOrT,MAAOqT,CAAAA,KAAK,CAAC3uC,KAAK,GACzBmhN,OAAS7lL,CAAAA,MAAAA,CAAO6lL,OAAO,CACvBqtH,MAAOlzS,MAAOkzS,CAAAA,KAAK,CACnBl0S,KAAAA,CAAOgB,OAAOhB,KAAK,CACnBygO,KAAOz/N,CAAAA,MAAAA,CAAOy/N,KAAK,CACnB0F,KAAAA,CAAOnlO,MAAOmlO,CAAAA,KAAK,CACnBkuE,YAAcrzS,CAAAA,MAAAA,CAAOqzS,YAAY,CACjCx+M,aAAc70F,MAAO60F,CAAAA,YAAY,CACjCqP,SAAAA,CAAWlkG,OAAOkkG,SAAS,CAC3BnQ,MAAQ/zF,CAAAA,MAAAA,CAAO+zF,MAAM,CAAC9jI,KAAK,CAAC,EAC9B,CACF,CAAA,CACA27Q,QAAS3+J,CAAAA,EAAE,CAAE,CACX,MAAM/jE,UAAa,CAAA,IAAI,CAAC0Z,KAAK,CAC7B,IAAI,MAAMxpB,MAAM8P,UAAW,CAAA,CACzB,GAAIA,UAAAA,CAAWztC,cAAc,CAAC29B,EAAAA,CAAAA,CAAK,CACjC,MAAMo3M,UAAYtnM,UAAU,CAAC9P,EAAG,CAAA,CAChC,GAAIo3M,SAAUpnO,CAAAA,IAAI,CAACnH,OAAO,EAAIuuO,SAAUx6G,CAAAA,MAAM,CAAC/zH,OAAO,CAAE,CACtD,MAAMkzH,MAASq7G,CAAAA,SAAAA,CAAUx6G,MAAM,CAACb,MAAM,CACtC,GAAIA,OAAO29M,YAAY,CAAE,CACvB39M,MAAAA,CAAO29M,YAAY,CAAC7yK,OAAO,CAAChzD,EAAAA,EAC9B,CACF,CACF,CACF,CACF,CACAq+J,eAAet1I,MAAM,CAAEw6G,SAAS,CAAE,CAChCA,SAAUkjG,CAAAA,SAAS,GACrB,CA9KAv8U,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAGq1E,eACrB,CAAA,IAAI,CAACn1E,QAAQ,CAAGq2E,mBAChB,CAAA,IAAI,CAACjkG,MAAM,CAAGkkG,SACd,CAAA,IAAI,CAAC3jC,eAAe,CAAG,IACvB,CAAA,IAAI,CAAC6jC,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACC,iCAAiC,CAAG,IACzC,CAAA,IAAI,CAACC,gCAAgC,CAAG,KACxC,IAAI,CAACh1G,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,QAAA,CAAU,IAAI,CAACm1Q,QAAQ,CAAE,IAAI,EACjD,IAAI,CAACn1Q,EAAE,CAAC,eAAgB,IAAI,CAAC60Q,cAAc,CAAE,IAAI,EACnD,CAmKF,CACAvO,SAAAA,CAAUC,eAAe,CAAC61E,eAAAA,CAAgBpxN,SAAS,CAAEuyN,UAErD,CAAMK,MAAAA,aAAAA,SAAsBt3E,SAmB1B,CAAA,IAAIzoQ,KAAK8U,IAAI,CAAE,CACb,GAAIA,gBAAgBiC,IAAM,CAAA,CACxB,IAAI,CAACipU,KAAK,CAACnmV,IAAI,CAACib,IAAAA,EAClB,MAAO,GAAIA,IAAAA,YAAgBhb,KAASgb,EAAAA,IAAAA,CAAK/Z,MAAM,EAAI,CAAA,CAAG,CACpD,IAAI,CAACiF,IAAI,CAACqD,GAAG,CAACyR,IAAI,CAAC,CAAA,CAAE,CAAEA,IAAI,CAAC,CAAE,CAAA,CAAEA,IAAI,CAAC,EAAE,EACzC,CACF,CACA,IAAI9U,MAAO,CACT,OAAO,IAAI,CAACggV,KAAK,CAEnBz5O,QAAW,EAAA,CACT,IAAI,CAAC05O,WAAW,GAClB,CACAz5O,WAAY,CACV,IAAI,CAACy5O,WAAW,GAClB,CACAt+B,aAAc/nT,CAAAA,IAAI,CAAEu1I,GAAG,CAAE1sI,KAAK,CAAE,CAC9B,IAAI,CAACw9U,WAAW,GAClB,CACAA,WAAc,EAAA,CACZ,MAAMjnQ,KAAAA,CAAQ,IAAI,CAACrrE,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CACjD,GAAIqrE,KAAU,GAAA,IAAI,CAACknQ,SAAS,CAAE,CAC5B,MACF,CACA,IAAI,CAACA,SAAS,CAAGlnQ,KACjB,CAAA,IAAI,CAACh1E,IAAI,CAAC,QACV,CAAA,CAAA,IAAI,CAACA,IAAI,CAAC,OAAS,CAAA,IAAI,CAAC2J,OAAO,EACjC,CACAi0S,eAAAA,EAAkB,CAChB,IAAI,CAAC59S,IAAI,CAAC,UACZ,CApCAnB,WAAAA,CAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,OAAQn1G,MACd,CAAA,CAAA,IAAI,CAACw+M,SAAS,CAAG,IACjB,CAAA,IAAI,CAACF,KAAK,CAAG,IAAIjpU,IAAAA,CACjB,IAAI,CAAC5U,EAAE,CAAC,aAAA,CAAe,IAAI,CAACw/S,aAAa,CAAE,IAAI,EACjD,CAgCF,CAhDI,aAFEo+B,CAEGI,YAAY,CAAG,QAGpB,CALEJ,aAAAA,CAKGK,aAAa,CAAG,SAGrB,CAREL,aAAAA,CAQGM,WAAW,CAAG,OAGnB,CAXEN,aAAAA,CAWG9zU,YAAY,CAAG,QAyCxB,CAAMq0U,MAAAA,iBAAAA,CACJz9U,aAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAM4yU,UAAY,CAChB,SAAA,CACD,CACD,MAAMC,4BAA4Bv3E,eAShCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDi9F,UAAUvuO,OAAO,CAAGmH,IAAK3N,CAAAA,cAAc,CAAC,SAAa,CAAA,CAAA,CAAC,CAAC2N,IAAAA,CAAKnH,OAAO,CAAG,IACtE,CAAA,GAAImH,KAAK9U,IAAI,CAAE,CACb,GAAI8U,KAAK9U,IAAI,YAAY+W,IAAM,CAAA,CAC7BmlO,UAAUl8O,IAAI,CAACnG,IAAI,CAACib,KAAK9U,IAAI,EAC/B,CAAO,KAAA,GAAI8U,KAAK9U,IAAI,YAAYlG,KAASgb,EAAAA,IAAAA,CAAK9U,IAAI,CAACjF,MAAM,EAAI,CAAA,CAAG,CAC9DmhP,SAAUl8O,CAAAA,IAAI,CAACqD,GAAG,CAACyR,IAAK9U,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAE8U,IAAK9U,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAE8U,IAAK9U,CAAAA,IAAI,CAAC,CAAA,CAAE,EAC7D,CACF,CACF,CACA4+O,cAAAA,CAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAM0E,IAAO,CAAA,CACXnH,OAAS+zH,CAAAA,MAAAA,CAAO++M,IAAI,CAAC9yU,OAAO,CAC5B3N,IAAAA,CAAM0hI,OAAO++M,IAAI,CAACzgV,IACpB,EACA,OAAO,IAAI,CAACs9O,YAAY,CAACltO,KAAO0E,CAAAA,IAAAA,CAClC,CACA8sS,eAAAA,CAAgBlgL,MAAM,CAAEw6G,SAAS,CAAE,CACjCA,UAAU0lE,eAAe,GAC3B,CA3BA/+S,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,IACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,MACV,CAAA,IAAI,CAACokO,aAAa,CAAG62E,aACrB,CAAA,IAAI,CAAC32E,QAAQ,CAAGk3E,iBAChB,CAAA,IAAI,CAAC9kG,MAAM,CAAG+kG,SAAAA,CACd,IAAI,CAACp+U,EAAE,CAAC,cAAA,CAAgB,IAAI,CAACy/S,eAAe,CAAE,IAAI,EACpD,CAqBF,CACAn5C,SAAUC,CAAAA,eAAe,CAACq3E,aAAc5yN,CAAAA,SAAS,CAAEozN,SAAAA,CAEnD,OAAMG,eACJ79U,CAAAA,WAAAA,CAAY89U,MAAM,CAAEtjI,WAAW,CAAC,CAC9B,IAAI,CAACsjI,MAAM,CAAGA,MACd,CAAA,IAAI,CAACtjI,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACl/M,IAAI,CAAGuiV,MAAO99U,CAAAA,WAAW,CAACzE,KAAI,CAEvC,CACA,MAAMwiV,eAAAA,CAUJC,qBAAqBjgV,MAAM,CAAExC,IAAI,CAAE,CACjC,MAAMm+C,IAAAA,CAAO,IAAI,CAACwxF,MAAM,CAACxxF,IAAI,CAC7B,MAAMhD,aAAe,IAAI,CAACunS,uBAAuB,CACjD,MAAM/7S,MAAS,CAAA,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,MAAMjkB,KAAAA,CAAQpmB,KAAKmQ,KAAK,CAAC+xC,IAAKvlC,CAAAA,CAAC,EAAIuiC,YAAAA,EAAc94B,KAASskB,EAAAA,MAAAA,CAAOtkB,KAAK,CAAD,CAAA,CACrE,MAAMC,MAAAA,CAASrmB,KAAKmQ,KAAK,CAAC+xC,IAAKliC,CAAAA,CAAC,EAAIk/B,YAAc74B,EAAAA,MAAAA,EAAUqkB,OAAOrkB,MAAK,CACxE,CAAA,CAAA,MAAMigC,YAAc,IAAIla,OAAAA,CAAQ1B,MAAQ,CAAA,CACtC3mC,KAAMA,IACNwC,CAAAA,MAAAA,CAAQA,MACR6f,CAAAA,KAAAA,CAAOA,MACPC,MAAQA,CAAAA,MAAAA,CACR4lB,OAAS,CAAA,KAAA,CACTkC,UAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,cACX8W,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBACZ,CACA,CAAA,CAAA,OAAO0xB,WACT,CACAogS,sBAAAA,CAAuBC,QAAQ,CAAEC,GAAG,CAAE,CACpC,MAAMl8S,MAAAA,CAAS,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,MAAMw8S,QAAAA,CAAW,IAAI,CAACJ,uBAAuB,EAAI/7S,MAAAA,CAAOkZ,UAAU,CAClE,MAAM3mB,IAAO4pT,CAAAA,QAAAA,CAAS3/R,iBAAiB,CAAC,GACxC,MAAM3gD,MAAAA,CAAS,CAACqgV,KAAOl8S,MAAO0Y,CAAAA,sBAAsB,CAAC,CACnD5pB,oBACAE,mBACD,CAAA,CAAE,IAAI,CAAA,IAAOuD,IAAAA,CAAOjD,kBAAqBb,CAAAA,iBAAgB,EAC1D,MAAMp1B,IAAAA,CAAO,CAAC,EAAE,IAAI,CAAC2vI,MAAM,CAACrM,MAAM,CAACtjI,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC+iV,OAAO,CAACpmV,MAAM,CAAC,CAAC,CAC3E,MAAM4lD,WAAAA,CAAc,IAAI,CAACkgS,oBAAoB,CAACjgV,MAAAA,CAAQxC,MACtD,OAAO,IAAIiiD,YAAa,CAAA,CACtBM,YAAaA,WACb7a,CAAAA,KAAAA,CAAOk7S,QACPhiS,CAAAA,OAAAA,CAASgiS,UAAY,IAAI,CAACl2G,GAAG,CAACpmM,cAAc,CAACoyC,eAAe,CAC5Dn5B,OAAAA,CAASqjS,SAAWj8S,MAAO4Y,CAAAA,OAAO,CAAG,CACvC,EACF,CACAyjS,sBAAAA,CAAuBr1R,EAAE,CAAE,CACzB,MAAMnrD,MAAAA,CAASmrD,EAAGpL,CAAAA,WAAW,CAAC//C,MAAM,CACpC,MAAMxC,IAAAA,CAAO2tD,GAAGpL,WAAW,CAACviD,IAAI,CAChC2tD,GAAGxL,mBAAmB,EAAA,CACtBwL,EAAGvL,CAAAA,qBAAqB,EACxBuL,CAAAA,EAAAA,CAAGnL,YAAY,CAAG,IAAI,CAACigS,oBAAoB,CAACjgV,MAAAA,CAAQxC,KACpD2tD,CAAAA,EAAAA,CAAGrL,aAAa,CAAG,CACjBqL,EAAGnL,CAAAA,YAAY,EAEnB,CACAygS,uBAAwBt1R,CAAAA,EAAE,CAAE,CAC1BA,GAAGvL,qBAAqB,EAAA,CACxBuL,EAAG9nB,CAAAA,OAAO,GACZ,CACAq9S,SAAAA,CAAUX,MAAM,CAAE,CAChB,MAAMQ,OAAAA,CAAU,IAAI,CAACA,OAAO,CAC5B,MAAMI,aAAgBJ,CAAAA,OAAAA,CAAQpmV,MAAM,GAAK,CAAA,CACzC,MAAMsiN,WAAAA,CAAc,IAAI,CAAC0jI,sBAAsB,CAACQ,aAAAA,CAAeZ,OAAOM,GAAG,CAAA,CACzE,MAAMO,QAAAA,CAAW,IAAId,eAAgBC,CAAAA,MAAAA,CAAQtjI,WAC7C8jI,CAAAA,CAAAA,OAAAA,CAAQvlV,IAAI,CAAC4lV,QAAAA,CACb,CAAA,IAAI,CAACC,aAAa,CAAGD,QAASnkI,CAAAA,WAAW,CACzC,GAAI8jI,OAAQpmV,CAAAA,MAAM,CAAG,CAAG,CAAA,CACtBomV,OAAO,CAACA,QAAQpmV,MAAM,CAAG,CAAE,CAAA,CAACuiN,YAAY,CAAGkkI,QAAAA,CAASnkI,YACtD,CACA,IAAI,CAACqkI,cAAc,CAAGf,OACtB,GAAIA,MAAAA,CAAOnjI,gBAAgB,CAAE,CAC3B,IAAI,CAACmkI,gBAAgB,GACvB,CACA,IAAI,CAAC5vP,MAAM,EACX,CAAA,IAAI,CAAC2vP,cAAc,CAAG9+U,UACxB,CACAg/U,YAAAA,CAAajB,MAAM,CAAE,CACnB,IAAIhgV,KAAAA,CAAQ,CAAC,CAAA,CACb,IAAI,IAAI7F,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACmuU,OAAO,CAACpmV,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACrD,GAAI,IAAI,CAACqmV,OAAO,CAACrmV,EAAE,CAAC6lV,MAAM,GAAKA,MAAAA,CAAQ,CACrChgV,KAAAA,CAAQ7F,CACR,CAAA,KACF,CACF,CACA,GAAI6F,KAAS,EAAA,CAAA,CAAG,CACd,GAAIA,KAAAA,CAAQ,CAAG,CAAA,CACb,IAAI,CAACwgV,OAAO,CAACxgV,KAAAA,CAAQ,EAAE,CAAC28M,YAAY,CAAG38M,KAAAA,CAAQ,EAAI,IAAI,CAACwgV,OAAO,CAACpmV,MAAM,CAAG,IAAI,CAAComV,OAAO,CAACxgV,KAAQ,CAAA,CAAA,CAAE,CAAC08M,WAAW,CAAG,KACjH,CAAA,KAAO,CACL,GAAI,IAAI,CAAC8jI,OAAO,CAACpmV,MAAM,CAAG,CAAG,CAAA,CAC3B,GAAI,CAAC,IAAI,CAAComV,OAAO,CAAC,CAAA,CAAE,CAAC9jI,WAAW,CAAC51K,MAAM,CAAE,CACvC,IAAI,CAAC45S,uBAAuB,CAAC,IAAI,CAACF,OAAO,CAAC,CAAA,CAAE,CAAC9jI,WAAW,CACxD,CAAA,IAAI,CAAC8jI,OAAO,CAAC,CAAA,CAAE,CAAC9jI,WAAW,CAAG,IAAI,CAAC0jI,sBAAsB,CAAC,IAAA,CAAM,IAAI,CAACI,OAAO,CAAC,CAAA,CAAE,CAACF,GAAG,CACnF,CAAA,IAAI,CAACQ,aAAa,CAAG,IAAI,CAACN,OAAO,CAAC,EAAE,CAAC9jI,YAAW,CAElD,IAAI,CAACtvE,MAAM,CAACx0F,YAAY,CAAG,IAAI,CAAC4nS,OAAO,CAAC,EAAE,CAAC9jI,YAAW,CAE1D,CACA,IAAI,CAACgkI,uBAAuB,CAAC,IAAI,CAACF,OAAO,CAACxgV,KAAAA,CAAM,CAAC08M,WAAW,CAAA,CAC5D,IAAI,CAAC8jI,OAAO,CAACv9U,MAAM,CAACjD,KAAAA,CAAO,GAC7B,CACA,GAAI,IAAI,CAACgN,OAAO,CAAE,CAChB,GAAIgzU,MAAAA,CAAOnjI,gBAAgB,CAAE,CAC3B,IAAI,CAACqkI,gBAAgB,GACvB,CACF,CACA,GAAI,IAAI,CAACV,OAAO,CAACpmV,MAAM,GAAK,CAAG,CAAA,CAC7B,IAAI,CAAC02F,OAAO,GACd,CACF,CACAqwP,iBAAAA,EAAoB,CAClB,IAAI,IAAIhnV,CAAI,CAAA,CAAA,CAAGkY,IAAM,IAAI,CAACmuU,OAAO,CAACpmV,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACrD,MAAM6lV,MAAAA,CAAS,IAAI,CAACQ,OAAO,CAACrmV,CAAAA,CAAE,CAAC6lV,MAAM,CACrC,GAAI,IAAI,CAACe,cAAc,GAAKf,MAAQ,CAAA,CAClC,QACF,CACA,GAAIA,MAAOnjI,CAAAA,gBAAgB,CAAE,CAC3B,IAAI,CAACmkI,gBAAgB,GACvB,CACF,CACF,CACAI,iBAAAA,EAAoB,CAClB,IAAI,IAAIjnV,CAAI,CAAA,CAAA,CAAGkY,GAAM,CAAA,IAAI,CAACmuU,OAAO,CAACpmV,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACrD,MAAM6lV,MAAS,CAAA,IAAI,CAACQ,OAAO,CAACrmV,CAAE,CAAA,CAAC6lV,MAAM,CACrC,GAAIA,MAAOnjI,CAAAA,gBAAgB,CAAE,CAC3B,IAAI,CAACqkI,gBAAgB,GACvB,CACF,CACF,CACAF,gBAAAA,EAAmB,CACjB,MAAMrvB,WAAa,IAAI,CAACxnF,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC5P,aACtD,CAAA,CAAA,GAAIoiM,UAAY,CAAA,CACdA,WAAWr6I,gBAAgB,EAAA,CAC3B,IAAI,CAAClqC,MAAM,CAACi0M,oBAAoB,CAAC,IAAA,EACnC,CACF,CACAH,gBAAAA,EAAmB,CACjB,MAAMvvB,WAAa,IAAI,CAACxnF,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC5P,aACtD,CAAA,CAAA,GAAIoiM,UAAY,CAAA,CACdA,UAAWp6I,CAAAA,gBAAgB,EAC3B,CAAA,IAAI,CAACnqC,MAAM,CAACi0M,oBAAoB,CAAC,OACnC,CACF,CACA/9S,OAAU,EAAA,CACR,IAAI,IAAInpC,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACmuU,OAAO,CAACpmV,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACrD,IAAI,CAACqmV,OAAO,CAACrmV,CAAAA,CAAE,CAACuiN,WAAW,CAACp5K,OAAO,GACrC,CACA,IAAI,CAACk9S,OAAO,CAACpmV,MAAM,CAAG,CAAA,CACtB,IAAI,CAAC02F,OAAO,GACd,CACAM,MAAS,EAAA,CACP,GAAI,CAAC,IAAI,CAACpkF,OAAO,EAAI,IAAI,CAACwzU,OAAO,CAACpmV,MAAM,CAAE,CACxC,IAAI,CAAC4S,OAAO,CAAG,IAAA,CACf,IAAI,CAACm0U,iBAAiB,EACtB,CAAA,IAAI,CAACh3G,GAAG,CAACpmM,cAAc,CAACviC,EAAE,CAAC,cAAgB,CAAA,IAAI,CAAC8/U,gBAAgB,CAAE,IAAI,CACtE,CAAA,IAAI,CAACnB,uBAAuB,CAAG,IAAI,CAAC/yM,MAAM,CAACx0F,YAAY,CACvD,IAAI,CAACw0F,MAAM,CAACx0F,YAAY,CAAG,IAAI,CAAC4nS,OAAO,CAAC,EAAE,CAAC9jI,WAAW,CACtD,IAAI,CAACtvE,MAAM,CAAC4gC,gBAAgB,CAAG,IAC7B,CAAA,GAAI,IAAI,CAAChhK,OAAO,CAAE,CAChB,IAAI4uC,IAAAA,CAAO,KACX,MAAMvpC,GAAAA,CAAM,IAAI,CAACmuU,OAAO,CAACpmV,MAAM,CAC/B,GAAIiY,IAAK,CACP,IAAI,IAAIlY,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC1B,MAAM8/K,EAAK,CAAA,IAAI,CAACumK,OAAO,CAACrmV,CAAE,CAAA,CAC1B,IAAIonV,UAAAA,CAAatnK,GAAG0iC,YAAY,CAChC,GAAIxiN,CAAAA,GAAMkY,IAAM,CAAG,CAAA,CACjBupC,IAAO,CAAA,IAAI,CAACwxF,MAAM,CAACxxF,IAAI,CACvB,GAAI,IAAI,CAACukS,uBAAuB,CAAE,CAChCoB,UAAa,CAAA,IAAI,CAACpB,wBAAuB,CAE7C,CACAlmK,EAAG+lK,CAAAA,MAAM,CAAC75O,MAAM,CAAC8zE,EAAGyiC,CAAAA,WAAW,CAAE6kI,UAAY3lS,CAAAA,IAAAA,EAC/C,CACF,CACF,CACF,EACF,CACF,CACAk1C,OAAAA,EAAU,CACR,GAAI,IAAI,CAAC9jF,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAG,KACf,CAAA,IAAI,CAACm9N,GAAG,CAACpmM,cAAc,CAAC3iC,GAAG,CAAC,eAAgB,IAAI,CAACkgV,gBAAgB,CAAE,IAAI,CACvE,CAAA,IAAI,CAACF,iBAAiB,EACtB,CAAA,IAAI,CAACV,uBAAuB,CAAC,IAAI,CAACI,aAAa,CAC/C,CAAA,IAAI,CAAC1zM,MAAM,CAACx0F,YAAY,CAAG,IAAI,CAACunS,uBAAuB,CACvD,IAAI,CAAC/yM,MAAM,CAAC4gC,gBAAgB,CAAG,KACjC,CACF,CACAszK,gBAAiBxhU,CAAAA,KAAK,CAAEC,MAAM,CAAE,CAC9B,MAAM67B,IAAO,CAAA,IAAI,CAACwxF,MAAM,CAACxxF,IAAI,CAC7B,MAAMhD,YAAe,CAAA,IAAI,CAACunS,uBAAuB,CACjDrgU,KAAQ84B,CAAAA,YAAAA,EAAc94B,KAASA,EAAAA,KAAAA,CAC/BC,OAAS64B,YAAc74B,EAAAA,MAAAA,EAAUA,MACjC,CAAA,IAAI,CAACqtH,MAAM,CAACA,MAAM,CAAC6L,WAAW,CAAGn5H,KAAQ87B,CAAAA,IAAAA,CAAKvlC,CAAC,EAAI0J,MAAS67B,CAAAA,IAAAA,CAAKliC,CAAC,CAADA,CACjE,IAAI,CAAC8nU,mBAAmB,GAC1B,CACAA,mBAAsB,EAAA,CACpB,MAAMp9S,MAAS,CAAA,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,MAAM6U,YAAAA,CAAe,IAAI,CAACunS,uBAAuB,CACjD,MAAMrgU,MAAQ84B,YAAc94B,EAAAA,KAAAA,EAASskB,MAAOtkB,CAAAA,KAAK,CACjD,MAAMC,MAAAA,CAAS64B,YAAc74B,EAAAA,MAAAA,EAAUqkB,OAAOrkB,MAAM,CACpD,MAAM67B,IAAAA,CAAO,IAAI,CAACwxF,MAAM,CAACxxF,IAAI,CAC7B,MAAM6lS,YAAAA,CAAe/nV,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAKvlC,CAAAA,CAAC,CAAGyJ,KAAAA,CAAAA,CACzC,MAAM4hU,aAAgBhoV,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC+xC,KAAKliC,CAAC,CAAGqG,MAC1C,CAAA,CAAA,MAAMygU,QAAU,IAAI,CAACA,OAAO,CAC5B,IAAI,IAAIrmV,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAMmuU,QAAQpmV,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAChD,MAAM8/K,EAAKumK,CAAAA,OAAO,CAACrmV,CAAAA,CAAE,CACrB,GAAI8/K,GAAGyiC,WAAW,CAAC58L,KAAK,GAAK2hU,cAAgBxnK,EAAGyiC,CAAAA,WAAW,CAAC38L,MAAM,GAAK2hU,aAAe,CAAA,CACpF,IAAI,CAACjB,sBAAsB,CAACxmK,EAAAA,CAAGyiC,WAAW,EAC5C,CACF,CACF,CACAilI,mBAAoBlkV,CAAAA,IAAI,CAAEq3N,QAAQ,CAAE57E,QAAQ,CAAE,CAC5C,GAAI,IAAI,CAAClsI,OAAO,CAAE,CAChB,IAAI,CAACw0U,mBAAmB,GAC1B,CACF,CAvNAt/U,WAAYioO,CAAAA,GAAG,CAAE/8F,MAAM,CAAC,CACtB,IAAI,CAAC+8F,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC/8F,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC+yM,uBAAuB,CAAG,IAC/B,CAAA,IAAI,CAACK,OAAO,CAAG,EACf,CAAA,IAAI,CAACxzU,OAAO,CAAG,KACf,CAAA,IAAI,CAAC40U,WAAW,CAAG,IAAA,CACnBx0M,OAAO5rI,EAAE,CAAC,UAAY,CAAA,IAAI,CAACmgV,mBAAmB,CAAE,IAAI,EACtD,CAgNF,CAEA,MAAME,eAAwB/5E,SAAAA,SAAAA,CAM5Bg6E,cAAcrkV,IAAI,CAAE,CAClB,MAAMqtI,WAAajQ,UAAW3+H,CAAAA,GAAG,CAAC,IAAI,CAACg6O,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAChE,CAAA,MAAMm5F,cAAiBz/H,CAAAA,IAAAA,CAAOqtI,WAAWjnF,QAAQ,CAACpmD,IAAM,CAAA,CACtDm9H,UAAW,IACb,CAAA,CAAA,CAAK,IACL,CAAA,IAAI,CAACmnN,OAAO,CAAC7kN,cAAc,CAAGA,cAC9B,CAAA,OAAOA,cAAel9H,CAAAA,KAAK,CAE7BgiV,aAAAA,EAAgB,CACd,OAAO,IAAI,CAACD,OAAO,CAAC7kN,cAAc,EAAEz/H,IACtC,CACA,IAAI46I,YAAAA,CAAa4pM,MAAM,CAAE,CACvB,IAAI,CAACF,OAAO,CAAC1pM,YAAY,CAAG4pM,QAAU,EAAE,CACxC,IAAI,CAACC,4BAA4B,EACjC,CAAA,IAAI,CAAChsG,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACurC,aAAa,CAAG,KACxC,CACA,IAAI/xB,YAAe,EAAA,CACjB,OAAO,IAAI,CAAC0pM,OAAO,CAAC1pM,YACtB,CACA,IAAImG,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACujM,OAAO,CAACvjM,YAAY,CAElC,IAAI1H,eAAgBh1I,CAAAA,KAAK,CAAE,CACzB,IAAI,CAACsrI,MAAM,CAACoR,YAAY,CAAC1H,eAAe,CAAGh1I,MAC7C,CACA,IAAIg1I,eAAkB,EAAA,CACpB,OAAO,IAAI,CAAC1J,MAAM,CAACoR,YAAY,CAAC1H,eAAe,CAEjD,IAAIlhE,WAAAA,CAAY9zE,KAAK,CAAE,CACrB,IAAI,CAACsrI,MAAM,CAACoR,YAAY,CAAC5oE,WAAW,CAAG9zE,MACzC,CACA,IAAI8zE,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACw3D,MAAM,CAACoR,YAAY,CAAC5oE,WAClC,CACA,IAAIohE,IAAIl1I,KAAK,CAAE,CACb,IAAI,CAACigV,OAAO,CAACxjM,SAAS,CAAGz8I,MAC3B,CACA,IAAIk1I,GAAM,EAAA,CACR,OAAO,IAAI,CAAC+qM,OAAO,CAACxjM,SAAS,CAE/B,IAAIpC,QAAAA,CAASr6I,KAAK,CAAE,CAClB,IAAI,CAACigV,OAAO,CAAC5lM,QAAQ,CAAGr6I,MAC1B,CACA,IAAIq6I,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC4lM,OAAO,CAAC5lM,QAAQ,CAE9B,IAAIlD,WAAYn3I,CAAAA,KAAK,CAAE,CACrB,IAAI,CAACigV,OAAO,CAAC9oM,WAAW,CAAGn3I,MAC7B,CACA,IAAIm3I,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC8oM,OAAO,CAAC9oM,WAAW,CAEjC,IAAIM,eAAgBz3I,CAAAA,KAAK,CAAE,CACzB,IAAI,CAACigV,OAAO,CAACxoM,eAAe,CAAGz3I,MACjC,CACA,IAAIy3I,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACwoM,OAAO,CAACxoM,eACtB,CACA,IAAIE,mBAAAA,CAAoB33I,KAAK,CAAE,CAC7B,IAAI,CAACigV,OAAO,CAACtoM,mBAAmB,CAAG33I,MACrC,CACA,IAAI23I,qBAAsB,CACxB,OAAO,IAAI,CAACsoM,OAAO,CAACtoM,mBAAmB,CAEzC,IAAIE,kBAAmB73I,CAAAA,KAAK,CAAE,CAC5B,IAAI,CAACigV,OAAO,CAACpoM,kBAAkB,CAAG73I,MACpC,CACA,IAAI63I,kBAAAA,EAAqB,CACvB,OAAO,IAAI,CAACooM,OAAO,CAACpoM,kBACtB,CACA,IAAIvM,QAAS,CACX,OAAO,IAAI,CAAC20M,OAAO,CAErB,IAAI1uP,UAAAA,CAAWvxF,KAAK,CAAE,CACpB,IAAI,CAACigV,OAAO,CAAC1uP,UAAU,CAAGvxF,MAC5B,CACA,IAAIuxF,UAAAA,EAAa,CACf,OAAO,IAAI,CAAC0uP,OAAO,CAAC1uP,UAAU,CAEhC,IAAIymD,gBAAiBh4I,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAACigV,OAAO,CAACjoM,gBAAgB,CAAGh4I,KAChC,CAAA,IAAI,CAACogV,4BAA4B,GACnC,CACA,IAAIpoM,kBAAmB,CACrB,OAAO,IAAI,CAACioM,OAAO,CAACjoM,gBAAgB,CAEtC,IAAI9rF,UAAWlsD,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACigV,OAAO,CAAC/zR,UAAU,CAAGlsD,MAC5B,CACA,IAAIksD,YAAa,CACf,OAAO,IAAI,CAAC+zR,OAAO,CAAC/zR,UAAU,CAEhC,IAAIisF,gBAAiBn4I,CAAAA,KAAK,CAAE,CAC1B,IAAI,CAACigV,OAAO,CAAC9nM,gBAAgB,CAAGn4I,KAChC,CAAA,IAAI,CAACogV,4BAA4B,GACnC,CACA,IAAIjoM,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAAC8nM,OAAO,CAAC9nM,gBAAgB,CAEtC,IAAIG,kBAAAA,CAAmBt4I,KAAK,CAAE,CAC5B,IAAI,CAACigV,OAAO,CAAC3nM,kBAAkB,CAAGt4I,KAAAA,CAClC,IAAI,CAACogV,4BAA4B,GACnC,CACA,IAAI9nM,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAAC2nM,OAAO,CAAC3nM,kBACtB,CACA,IAAIE,SAAAA,CAAUx4I,KAAK,CAAE,CACnB,IAAI,CAACigV,OAAO,CAACznM,SAAS,CAAGx4I,MAC3B,CACA,IAAIw4I,WAAY,CACd,OAAO,IAAI,CAACynM,OAAO,CAACznM,SAAS,CAE/B,IAAIwhC,uBAAwB58C,CAAAA,KAAK,CAAE,CACjC,IAAI,CAACijN,wBAAwB,CAAGjjN,KAAAA,CAChC,IAAI,CAACgjN,4BAA4B,GACnC,CACA,IAAIpmK,uBAA0B,EAAA,CAC5B,OAAO,IAAI,CAACqmK,wBACd,CACA,IAAI3nM,QAAQ14I,KAAK,CAAE,CACjB,IAAI,CAACigV,OAAO,CAACvnM,OAAO,CAAG14I,MACzB,CACA,IAAI04I,OAAU,EAAA,CACZ,OAAO,IAAI,CAACunM,OAAO,CAACvnM,OAAO,CAE7B,IAAIE,SAAAA,CAAU54I,KAAK,CAAE,CACnB,IAAI,CAACigV,OAAO,CAACrnM,SAAS,CAAG54I,MAC3B,CACA,IAAI44I,SAAY,EAAA,CACd,OAAO,IAAI,CAACqnM,OAAO,CAACrnM,SAAS,CAE/B,IAAI79H,GAAAA,CAAI/a,KAAK,CAAE,CACb,IAAI,CAACigV,OAAO,CAACllU,GAAG,CAAG/a,MACrB,CACA,IAAI+a,GAAAA,EAAM,CACR,OAAO,IAAI,CAACklU,OAAO,CAACllU,GAAG,CAEzB,IAAI0wH,OAAU,EAAA,CACZ,OAAO,IAAI,CAACw0M,OAAO,CAACx0M,OAAO,CAE7B,IAAIsN,cAAAA,CAAe/4I,KAAK,CAAE,CACxB,IAAI,CAACigV,OAAO,CAAClnM,cAAc,CAAG/4I,MAChC,CACA,IAAI+4I,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACknM,OAAO,CAAClnM,cAAc,CAEpC,IAAIE,aAAcj5I,CAAAA,KAAK,CAAE,CACvB,IAAI,CAACigV,OAAO,CAAChnM,aAAa,CAAGj5I,MAC/B,CACA,IAAIi5I,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACgnM,OAAO,CAAChnM,aACtB,CACA,IAAIjc,MAAAA,CAAOoa,QAAQ,CAAE,CACnB,MAAMkpM,SAAAA,CAAY,IAAI,CAACL,OAAO,CAACjjN,MAAM,CACrC,MAAMD,MAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnCujN,SAAAA,CAAUt7U,OAAO,CAAEu7Q,OACjB,EAAA,CAAA,MAAMnjJ,MAAQL,KAAMC,CAAAA,MAAM,CAACK,YAAY,CAACkjJ,OACxCnjJ,CAAAA,CAAAA,KAAAA,EAAOu6C,YAAa,CAAA,IAAI,EAC1B,CACA,CAAA,CAAA,IAAI,CAACsoK,OAAO,CAACjjN,MAAM,CAAGoa,QAAAA,CACtB,GAAI,IAAI,CAAClsI,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvCksI,QAAAA,CAASpyI,OAAO,CAAC,OAACu7Q,EAAAA,CAChB,MAAMnjJ,KAAAA,CAAQL,MAAMC,MAAM,CAACK,YAAY,CAACkjJ,SACxCnjJ,KAAOq6C,EAAAA,SAAAA,CAAU,IAAI,EACvB,GACF,CACA,IAAI,CAACl2K,IAAI,CAAC,YACZ,EAAA,CACA,IAAIy7H,MAAAA,EAAS,CACX,OAAO,IAAI,CAACijN,OAAO,CAACjjN,MACtB,CACA,IAAIqc,WAAY,CACd,OAAO,IAAI,CAAC4mM,OAAO,CAAC5mM,SAAS,CAE/B,IAAIuB,MAAO56I,CAAAA,KAAK,CAAE,CAChB,IAAI,CAACigV,OAAO,CAACrlM,MAAM,CAAG56I,MACxB,CACA,IAAI46I,MAAAA,EAAS,CACX,OAAO,IAAI,CAACqlM,OAAO,CAACrlM,MACtB,CACA,IAAItB,SAASt5I,KAAK,CAAE,CAClB,IAAI,CAACigV,OAAO,CAAC3mM,QAAQ,CAAGt5I,MAC1B,CACA,IAAIs5I,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC2mM,OAAO,CAAC3mM,QACtB,CACA,IAAIG,YAAYz5I,KAAK,CAAE,CACrB,IAAI,CAACigV,OAAO,CAACxmM,WAAW,CAAGz5I,MAC7B,CACA,IAAIy5I,WAAc,EAAA,CAChB,OAAO,IAAI,CAACwmM,OAAO,CAACxmM,WAAW,CAEjC,IAAI8mM,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIvmK,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAACumK,YAAY,CAACt1U,OAAO,CAElC,IAAIkuK,QAAAA,CAAShiC,QAAQ,CAAE,CACrB,IAAI,CAAC+hI,SAAS,CAAG/hI,QAAAA,CACjB,IAAI,CAACgpM,4BAA4B,GACnC,CACA,IAAIhnK,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC+/F,SAAS,CAEvB,IAAIvvO,UAAAA,CAAW5pC,KAAK,CAAE,CACpB,IAAI,CAACigV,OAAO,CAACr2S,UAAU,CAAG5pC,MAC5B,CACA,IAAI4pC,UAAAA,EAAa,CACf,OAAO,IAAI,CAACq2S,OAAO,CAACr2S,UAAU,CAEhC,IAAIgwG,gBAAmB,EAAA,CACrB,OAAO,IAAI,CAACqmM,OAAO,CAACrmM,gBAAgB,CAEtC,IAAI9/F,IAAAA,CAAK95C,KAAK,CAAE,CACd,IAAI,CAACigV,OAAO,CAACnmS,IAAI,CAAG95C,KAAAA,CACpB,IAAI,CAACuB,IAAI,CAAC,UAAA,CAAY,IAAI,CAAC0+U,OAAO,CAACnmS,IAAI,EACzC,CACA,IAAIA,IAAO,EAAA,CACT,OAAO,IAAI,CAACmmS,OAAO,CAACnmS,IAAI,CAE1B,IAAIg6H,mBAAAA,CAAoB9zK,KAAK,CAAE,CAC7B,GAAIA,KAAAA,EAAS,CAAC,IAAI,CAACygV,uBAAuB,CAAE,CAC1C,IAAI,CAACC,oBAAoB,CAAC,KAC1B,CAAA,IAAI,CAACD,uBAAuB,CAAG,KACjC,CAAA,KAAO,GAAI,IAAI,CAACA,uBAAuB,CAAE,CACvC,IAAI,CAACC,oBAAoB,CAAC,KAC1B,CAAA,CAAA,IAAI,CAACD,uBAAuB,CAAG,MACjC,CACF,CACA,IAAI3sK,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAAC6sK,oBAAoB,CAAG,CACrC,CACA,IAAI5sK,mBAAoB/zK,CAAAA,KAAK,CAAE,CAC7B,GAAIA,KAAS,EAAA,CAAC,IAAI,CAAC4gV,uBAAuB,CAAE,CAC1C,IAAI,CAACrB,oBAAoB,CAAC,IAAA,CAC1B,CAAA,IAAI,CAACqB,uBAAuB,CAAG,KACjC,CAAO,KAAA,GAAI,IAAI,CAACA,uBAAuB,CAAE,CACvC,IAAI,CAACrB,oBAAoB,CAAC,KAC1B,CAAA,CAAA,IAAI,CAACqB,uBAAuB,CAAG,MACjC,CACF,CACA,IAAI7sK,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAAC8sK,oBAAoB,CAAG,CACrC,CACA,IAAI/pS,YAAa92C,CAAAA,KAAK,CAAE,CACtB,IAAI,CAACigV,OAAO,CAACnpS,YAAY,CAAG92C,KAC5B,CAAA,IAAI,CAACogV,4BAA4B,GACnC,CACA,IAAItpS,cAAe,CACjB,OAAO,IAAI,CAACmpS,OAAO,CAACnpS,YAAY,CAElC,IAAI6lF,WAAY38H,CAAAA,KAAK,CAAE,CACrB,IAAI,CAACigV,OAAO,CAACtjN,WAAW,CAAG38H,MAC7B,CACA,IAAI28H,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACsjN,OAAO,CAACtjN,WACtB,CACA,IAAI4d,YAAYv6I,KAAK,CAAE,CACrB,IAAI,CAACigV,OAAO,CAAC1lM,WAAW,CAAGv6I,MAC7B,CACA,IAAIu6I,WAAc,EAAA,CAChB,OAAO,IAAI,CAAC0lM,OAAO,CAAC1lM,WAAW,CAEjC,IAAIE,OAAAA,CAAQz6I,KAAK,CAAE,CACjB,IAAI,CAACigV,OAAO,CAACxlM,OAAO,CAAGz6I,MACzB,CACA,IAAIy6I,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACwlM,OAAO,CAACxlM,OAAO,CAE7B,IAAIR,UAAa,EAAA,CACf,OAAO,IAAI,CAACgmM,OAAO,CAAChmM,UAAU,CAEhC6mM,iBAAkB9gV,CAAAA,KAAK,CAAE,CACvB,MAAM+gV,aAAgB,CAAA,IAAI,CAAC/jN,MAAM,CAAC7lE,IAAI,CAAC,OAAWopN,EAAAA,OAAAA,GAAY9yJ,aAC9D,CAAA,CAAA,GAAIszN,cAAe,CACjB,MAAMlxB,UAAa,CAAA,IAAI,CAACz7E,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC5P,aAAAA,CAAAA,CAC7D,GAAIztH,KAAAA,CAAO,CACT6vT,UAAYr6I,EAAAA,gBAAAA,GACd,CAAO,KAAA,CACLq6I,YAAYp6I,gBACd,GAAA,CACF,CAAO,KAAA,GAAIz1K,MAAO,CAChB,OAAO,KACT,CACA,OAAO,IACT,CACA0gV,oBAAqBx1U,CAAAA,OAAO,CAAE,CAC5B,IAAI,CAACy1U,oBAAoB,EAAIz1U,OAAU,CAAA,CAAA,CAAI,CAAC,CAAA,CAC5C,IAAI,CAAC41U,iBAAiB,CAAC51U,OAAAA,CAAAA,CACvB,IAAI,CAACogI,MAAM,CAACuP,0BAA0B,CAAC,IAAI,CAACu5F,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAE,IAAI,CAAC6xI,mBAAmB,CAAA,CAC/F,IAAI,CAACsgE,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAAC3D,SAAS,GACxC,CACAkmN,oBAAqBr0U,CAAAA,OAAO,CAAE,CAC5B,IAAI,CAAC21U,oBAAoB,EAAI31U,OAAAA,CAAU,EAAI,CAAC,CAAA,CAC5C,IAAI,CAAC41U,iBAAiB,CAAC51U,OAAAA,CAAAA,CACvB,IAAI,CAACogI,MAAM,CAACwP,0BAA0B,CAAC,IAAI,CAACs5F,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAAE,IAAI,CAACmyM,MAAM,CAAC/L,GAAG,CAACttF,QAAQ,CAAE,IAAI,CAACg5B,mBAAmB,CACzH,CAAA,IAAI,CAACqgE,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAAC3D,SAAS,GACxC,CACA+mN,4BAAAA,EAA+B,CAC7B,MAAMY,UAAY,IAAI,CAAC5sG,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC9CgkN,SAAAA,CAAU5sS,MAAM,CAAG,KACrB,CACAqnG,aAAAA,CAAcwlM,OAAO,CAAEC,OAAO,CAAEC,OAAO,CAAE/lM,UAAU,CAAE,CACnD,MAAM94G,MAAAA,CAAS,IAAI,CAAC8xM,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAC7C,KAAM,CAAEjkB,KAAK,CAAEC,MAAM,CAAE,CAAGqkB,OAAOuX,UAAU,CAC3C,OAAO,IAAI,CAAComS,OAAO,CAACxkM,aAAa,CAACwlM,QAASC,OAASC,CAAAA,OAAAA,CAASnjU,KAAOC,CAAAA,MAAAA,CAAQm9H,WAC9E,CACAD,aAAAA,CAAcC,UAAU,CAAEE,WAAW,CAAE,CACrC,MAAMh5G,MAAAA,CAAS,IAAI,CAAC8xM,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAC7C,KAAM,CAAEjkB,KAAK,CAAEC,MAAM,CAAE,CAAGqkB,OAAOuX,UAAU,CAC3C,OAAO,IAAI,CAAComS,OAAO,CAAC9kM,aAAa,CAACC,WAAYp9H,KAAOC,CAAAA,MAAAA,CAAQq9H,WAC/D,CAAA,CACA8lM,gBAAiB,CACf,IAAI,CAACnB,OAAO,CAAC/lM,aAAa,CAAG,IAC7B,CAAA,IAAI,CAAC+lM,OAAO,CAAChlM,iBAAiB,CAAG,KACnC,CACAomM,iBAAAA,EAAoB,CAClB,MAAMrkN,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,IAAI,IAAI3kI,CAAAA,CAAI,EAAGA,CAAI2kI,CAAAA,MAAAA,CAAO1kI,MAAM,CAAED,IAAI,CACpC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACjE,GAAI+kI,KAAO,CAAA,CACTA,KAAMq6C,CAAAA,SAAS,CAAC,IAAI,EACtB,CACF,CACF,CACA6pK,sBAAyB,EAAA,CACvB,MAAMtkN,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,IAAI,IAAI3kI,CAAI,CAAA,CAAA,CAAGA,CAAI2kI,CAAAA,MAAAA,CAAO1kI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACjE,GAAI+kI,KAAAA,CAAO,CACTA,KAAMu6C,CAAAA,YAAY,CAAC,IAAI,EACzB,CACF,CACF,CACAggI,eAAAA,CAAgBC,OAAO,CAAEC,OAAO,CAAE,CAChC,IAAI,CAACwpC,iBAAiB,EACtBzpC,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,KAAA,CAAO,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAC1CF,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,QAAA,CAAU,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAC/CF,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,KAAA,CAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CACzCD,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,aAAa16K,KAAK,CAAE,CAClB,MAAMl/H,MAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACfk/H,KAAAA,CAAMq6C,SAAS,CAAC,IAAI,EACtB,CACAsgI,eAAe36K,KAAK,CAAE,CACpB,MAAMl/H,MAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACfk/H,KAAAA,CAAMu6C,YAAY,CAAC,IAAI,EACzB,CACA7zE,UAAW,CACT,MAAMi5B,KAAQ,CAAA,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAASD,CAAAA,KAAAA,CAAMC,MAAM,CAC3B,IAAI,CAACo3G,MAAM,CAAC38D,SAAS,CAAC,IAAI,CAC1B,CAAA,IAAI,CAACwgI,iBAAiB,EAAE34S,GACxB,EAAA,CAAA,IAAI,CAAC24S,iBAAiB,CAAGl7K,KAAAA,CAAMr9H,EAAE,CAAC,aAAc,IAAI,CAACi4S,eAAe,CAAE,IAAI,CAC1E,CAAA,GAAI36K,MAAQ,CAAA,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GAAAA,EACrB,CAAA,IAAI,CAAC44S,cAAc,CAAGl7K,OAAOt9H,EAAE,CAAC,KAAO,CAAA,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,EAAE74S,KACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAGn7K,MAAOt9H,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,GAAI,IAAI,CAAC7sS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACm2U,iBAAiB,GACxB,CACA,IAAI,CAACd,WAAW,CAACjxP,MAAM,GACzB,CACAyU,SAAAA,EAAY,CACV,MAAMg5B,MAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,OAASD,KAAMC,CAAAA,MAAM,CAC3B,IAAI,CAACujN,WAAW,CAACvxP,OAAO,EAAA,CACxB,IAAI,CAACsyP,sBAAsB,EAC3B,CAAA,IAAI,CAACrpC,iBAAiB,EAAE34S,GAAAA,EACxB,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,KACzB,GAAIj7K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,KACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,IAAI,CAAC/jE,MAAM,CAACz8D,YAAY,CAAC,IAAI,EAC/B,CACA4zG,QAAW,EAAA,CACT,IAAI,CAACxnL,SAAS,EACd,CAAA,IAAI,CAACzkG,GAAG,EAAA,CACR,IAAI,CAACgsI,MAAM,CAAC9pG,OAAO,GACrB,CACA+/S,qBAAqBj4R,EAAE,CAAE,CACvB,MAAMhnB,OAAS,IAAI,CAAC8xM,MAAM,CAAC/L,GAAG,CAACpmM,cAAc,CAC7C,MAAMjkB,MAAQsrC,EAAKA,CAAAA,EAAAA,CAAGtrC,KAAK,CAAGskB,OAAOtkB,KAAK,CAC1C,MAAMC,MAAAA,CAASqrC,GAAKA,EAAGrrC,CAAAA,MAAM,CAAGqkB,MAAAA,CAAOrkB,MAAM,CAC7C,OAAOD,KAAQ,CAAA,IAAI,CAAC87B,IAAI,CAACvlC,CAAC,EAAI0J,MAAS,CAAA,IAAI,CAAC67B,IAAI,CAACliC,CAAAA,CACnD,CACA6rF,YAAYn6C,EAAE,CAAE,CACd,GAAI,IAAI,CAACmuF,eAAe,GAAK9gB,WAAAA,CAAa,CACxC,IAAI,CAACwgB,WAAW,CAAG,IAAI,CAACoqM,oBAAoB,CAACj4R,EAAAA,EAC/C,CACF,CACAk4R,OAAAA,CAAQ1xU,IAAI,CAAE2xU,SAAS,CAAE33U,OAAO,CAAE,CAChC,IAAI,CAACsqO,MAAM,CAAC/L,GAAG,CAAC7mI,EAAE,CAAC13E,KAAK,CAAC,IAAI,CAAEha,IAAAA,CAAM2xU,SAAW33U,CAAAA,OAAAA,EAClD,CACA43U,KAAM/hV,CAAAA,QAAQ,CAAE,CACd,GAAI,CAAC,IAAI,CAACsgV,OAAO,CAACz+O,EAAE,CAAE,CACpB,GAAI7hG,SAAUA,QAAS,CAAA,IAAI4C,KAAM,CAAA,qBAAA,CAAA,CAAA,CACjC,MACF,CACA,IAAI,CAAC09U,OAAO,CAACz+O,EAAE,CAACzjG,GAAG,CAAC4B,UACtB,CACAvI,IAAAA,CAAK6xC,MAAM,CAAE,CACX,IAAI,CAACoxG,QAAQ,CAAGpxG,OAAOoxG,QACvB,CAAA,IAAI,CAAClD,WAAW,CAAGluG,MAAAA,CAAOkuG,WAAW,CACrC,IAAI,CAACM,eAAe,CAAGxuG,MAAAA,CAAOwuG,eAC9B,CAAA,IAAI,CAACE,mBAAmB,CAAG1uG,OAAO0uG,mBAClC,CAAA,IAAI,CAACE,kBAAkB,CAAG5uG,MAAO4uG,CAAAA,kBAAkB,CACnD,IAAI,CAACtmD,UAAU,CAAGtoD,MAAOsoD,CAAAA,UAAU,CACnC,IAAI,CAACymD,gBAAgB,CAAG/uG,MAAAA,CAAO+uG,gBAAgB,CAC/C,IAAI,CAACG,gBAAgB,CAAGlvG,MAAAA,CAAOkvG,gBAC/B,CAAA,IAAI,CAACG,kBAAkB,CAAGrvG,OAAOqvG,kBACjC,CAAA,IAAI,CAACE,SAAS,CAAGvvG,MAAOuvG,CAAAA,SAAS,CACjC,IAAI,CAACwhC,uBAAuB,CAAG/wI,MAAO+wI,CAAAA,uBAAuB,CAC7D,IAAI,CAACthC,OAAO,CAAGzvG,OAAOyvG,OACtB,CAAA,IAAI,CAACE,SAAS,CAAG3vG,MAAO2vG,CAAAA,SAAS,CACjC,IAAI,CAAC79H,GAAG,CAAGkuB,MAAOluB,CAAAA,GAAG,CACrB,IAAI,CAACg+H,cAAc,CAAG9vG,MAAAA,CAAO8vG,cAAc,CAC3C,IAAI,CAACE,aAAa,CAAGhwG,MAAAA,CAAOgwG,aAC5B,CAAA,IAAI,CAACjc,MAAM,CAAG/zF,OAAO+zF,MACrB,CAAA,IAAI,CAACsc,QAAQ,CAAGrwG,MAAOqwG,CAAAA,QAAQ,CAC/B,IAAI,CAACG,WAAW,CAAGxwG,MAAOwwG,CAAAA,WAAW,CACrC,IAAI,CAAC2/B,QAAQ,CAAGnwI,MAAAA,CAAOmwI,QAAQ,CAC/B,IAAI,CAACxvI,UAAU,CAAGX,MAAAA,CAAOW,UACzB,CAAA,IAAI,CAACkQ,IAAI,CAAG7Q,MAAO6Q,CAAAA,IAAI,CACvB,IAAI,CAAChD,YAAY,CAAG7N,MAAAA,CAAO6N,YAAY,CACvC,IAAI,CAAC6lF,WAAW,CAAG1zF,MAAAA,CAAO0zF,WAC1B,CAAA,IAAI,CAAC4d,WAAW,CAAGtxG,OAAOsxG,WAC1B,CAAA,IAAI,CAACE,OAAO,CAAGxxG,MAAOwxG,CAAAA,QAAO,CAzb/Br6I,WAAAA,CAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,OAAQn1G,MAAS,CAAA,CAAA,IAAI,CAACitC,gBAAgB,CAAG,IAAM,CAAA,IAAI,CAAC20K,oBAAoB,CAAG,CAAG,CAAA,IAAI,CAACF,oBAAoB,CAAG,CAAG,CAAA,IAAI,CAACC,uBAAuB,CAAG,KAAO,CAAA,IAAI,CAACH,uBAAuB,CAAG,KAAO,CAAA,IAAI,CAACtnE,SAAS,CAAG,CAAG,CAAA,IAAI,CAACknE,wBAAwB,CAAGzyN,UAAY,CAAA,IAAI,CAACqyN,OAAO,CAAG,IAAI7pM,MAAAA,CAAU,IAAI,CAAC6hK,iBAAiB,CAAG,IAAA,CAAM,IAAI,CAACC,cAAc,CAAG,IAAA,CAAM,IAAI,CAACC,gBAAgB,CAAG,IAC/W,CAAA,IAAI,CAAC8nC,OAAO,CAACx3M,IAAI,CAAGxJ,MACpB,CAAA,IAAI,CAACuhN,YAAY,CAAG,IAAIrC,eAAAA,CAAgB/pG,MAAO/L,CAAAA,GAAG,CAAE,IAAI,EAC1D,CAubF,CAEA,MAAMs5G,mBACJvhV,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAM02U,SAAAA,CAAY,CAChB,SAAA,CACD,CACKC,MAAAA,qBAAAA,SAA8Br7E,eAUlCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEpnO,IAAI,CAAEmqI,UAAU,CAAE,CACnDA,UAAAA,CAAa,CACX,aAAA,CACA,iBACA,CAAA,qBAAA,CACA,oBACA,CAAA,YAAA,CACA,mBACA,YACA,CAAA,kBAAA,CACA,oBACA,CAAA,qBAAA,CACA,sBACA,WACA,CAAA,SAAA,CACA,WACA,CAAA,KAAA,CACA,MACA,gBACA,CAAA,eAAA,CACA,QACA,CAAA,cAAA,CACA,WACA,aACA,CAAA,YAAA,CACA,UACA,CAAA,MAAA,CACA,cACA,UACA,CAAA,SAAA,CACA,aACA,CAAA,iBAAA,CACA,cACD,CACD,IAAI,IAAInkJ,CAAAA,CAAI,EAAGA,CAAImkJ,CAAAA,UAAAA,CAAWlkJ,MAAM,CAAED,IAAI,CACxC,MAAMijO,QAAW9+E,CAAAA,UAAU,CAACnkJ,CAAE,CAAA,CAC9B,GAAIga,IAAAA,CAAK3N,cAAc,CAAC42N,QAAAA,CAAAA,CAAW,CACjC,MAAMt7N,MAAQqS,IAAI,CAACipN,QAAS,CAAA,CAC5B,OAAOA,QACL,EAAA,IAAK,MACL,CAAA,IAAK,cACH,GAAIjkO,KAAAA,CAAMC,OAAO,CAAC0I,OAAQ,CACxBy5O,SAAS,CAACne,QAAAA,CAAS,CAAG,IAAI9gN,IAAAA,CAAKxa,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAA,CAAE,EACvE,CAAA,KAAO,CACLy5O,SAAS,CAACne,QAAS,CAAA,CAAGt7N,MACxB,CACA,MACG,IAAA,YAAA,CACH,GAAI3I,KAAMC,CAAAA,OAAO,CAAC0I,KAAAA,CAAAA,CAAQ,CACxBy5O,SAAS,CAACne,QAAS,CAAA,CAAG,IAAI5tN,KAAM1N,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,EACxE,CAAO,KAAA,CACLy5O,SAAS,CAACne,QAAAA,CAAS,CAAGt7N,MACxB,CACA,MACF,QACEy5O,SAAS,CAACne,SAAS,CAAGt7N,KAAAA,CACtB,KACJ,CACF,CACF,CACA,KAAK,CAAC4mQ,uBAAAA,CAAwBntB,UAAWpnO,IAAM,CAAA,CAC7C,SACD,CAAA,EACH,CACA8pO,cAAAA,CAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMjW,CAAAA,CAAIunI,OAAOqM,MAAM,CACvB,OAAO,IAAI,CAACuvG,YAAY,CAACltO,KAAO,CAAA,CAC9BwpI,YAAaz/I,CAAEy/I,CAAAA,WAAW,CAC1BM,eAAAA,CAAiB//I,EAAE+/I,eAAe,CAClCE,mBAAqBjgJ,CAAAA,CAAAA,CAAEigJ,mBAAmB,CAC1CE,kBAAAA,CAAoBngJ,CAAEmgJ,CAAAA,kBAAkB,CACxCtmD,UAAY75F,CAAAA,CAAAA,CAAE65F,UAAU,CACxBymD,iBAAkBtgJ,CAAEsgJ,CAAAA,gBAAgB,CACpCG,gBAAAA,CAAkBzgJ,EAAEygJ,gBAAgB,CACpCG,kBAAoB5gJ,CAAAA,CAAAA,CAAE4gJ,kBAAkB,CACxCy7B,mBAAAA,CAAqBr8K,CAAEq8K,CAAAA,mBAAmB,CAC1CD,mBAAqBp8K,CAAAA,CAAAA,CAAEo8K,mBAAmB,CAC1Ct7B,UAAW9gJ,CAAE8gJ,CAAAA,SAAS,CACtBttI,OAAAA,CAASxT,EAAEwT,OAAO,CAClBwtI,OAAShhJ,CAAAA,CAAAA,CAAEghJ,OAAO,CAClBE,SAAAA,CAAWlhJ,CAAEkhJ,CAAAA,SAAS,CACtB79H,GAAKrjB,CAAAA,CAAAA,CAAEqjB,GAAG,CACVg+H,eAAgBrhJ,CAAEqhJ,CAAAA,cAAc,CAChCE,aAAAA,CAAevhJ,EAAEuhJ,aAAa,CAC9Bjc,MAAQtlI,CAAAA,CAAAA,CAAEslI,MAAM,CAChBlmF,YAAAA,CAAcp/C,CAAEo/C,CAAAA,YAAY,CAC5BwiG,QAAU5hJ,CAAAA,CAAAA,CAAE4hJ,QAAQ,CACpBG,YAAa/hJ,CAAE+hJ,CAAAA,WAAW,CAC1B7vG,UAAAA,CAAYlyC,EAAEkyC,UAAU,CACxBwvI,QAAU1hL,CAAAA,CAAAA,CAAE0hL,QAAQ,CACpBt/H,IAAAA,CAAMpiD,CAAEoiD,CAAAA,IAAI,CACZ6iF,WAAajlI,CAAAA,CAAAA,CAAEilI,WAAW,CAC1B0d,SAAU3iJ,CAAE2iJ,CAAAA,QAAQ,CACpBE,WAAAA,CAAa7iJ,EAAE6iJ,WAAW,CAC1BE,OAAS/iJ,CAAAA,CAAAA,CAAE+iJ,OAAO,CAClBzF,eAAAA,CAAiBt9I,CAAEs9I,CAAAA,eAAe,CAClClhE,WAAap8E,CAAAA,CAAAA,CAAEo8E,WACjB,EACF,CACAygM,cAAAA,CAAet1I,MAAM,CAAEw6G,SAAS,CAAE,CAChC,IAAI,CAAC9hE,YAAY,CAAC8hE,SAAAA,CAAAA,CAClBA,SAAU8xC,CAAAA,QAAQ,GACpB,CACA61D,cAAAA,EAAiB,CACf,IAAI,IAAI/oV,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACy2J,OAAO,CAAC1uK,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACrD,IAAI,CAAC2uK,OAAO,CAAC3uK,CAAAA,CAAE,CAAC+oV,cAAc,GAChC,CACF,CACA3pK,UAAUnsC,MAAM,CAAE,CAChB,IAAI,CAAC07B,OAAO,CAAC7tK,IAAI,CAACmyI,QAClB+tC,YAAa,CAAA,IAAI,CAACrS,OAAO,EAC3B,CACA2Q,YAAAA,CAAarsC,MAAM,CAAE,CACnB,MAAMptI,KAAAA,CAAQ,IAAI,CAAC8oK,OAAO,CAAC1lK,OAAO,CAACgqI,MAAAA,CAAAA,CACnC,GAAIptI,KAAS,EAAA,CAAA,CAAG,CACd,IAAI,CAAC8oK,OAAO,CAAC7lK,MAAM,CAACjD,MAAO,CAC3Bm7K,CAAAA,CAAAA,YAAAA,CAAa,IAAI,CAACrS,OAAO,EAC3B,CACF,CACAxlI,OAAAA,EAAU,CACR,IAAI,CAAC6mM,GAAG,CAAC/oO,GAAG,CAAC,WAAa,CAAA,IAAI,CAAC8hV,cAAc,CAAE,IAAI,CAAA,CACnD,KAAK,CAAC5/S,OAAAA,GACR,CAnIAphC,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,KAAM,IAAI,CAACrhE,OAAO,CAAG,EAAE,CAC7B,IAAI,CAAC3kI,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAGs5E,eACrB,CAAA,IAAI,CAACp5E,QAAQ,CAAGg7E,mBAChB,CAAA,IAAI,CAAC5oG,MAAM,CAAG6oG,UACd,IAAI,CAACliV,EAAE,CAAC,eAAgB,IAAI,CAAC60Q,cAAc,CAAE,IAAI,CACjD,CAAA,IAAI,CAAClsC,GAAG,CAAC3oO,EAAE,CAAC,WAAa,CAAA,IAAI,CAAC0hV,cAAc,CAAE,IAAI,EACpD,CA4HF,CACAp7E,SAAAA,CAAUC,eAAe,CAAC85E,eAAgBr1N,CAAAA,SAAS,CAAEk3N,SAAAA,CAErD,OAAME,kBACJ1hV,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,IACf,CAAA,IAAI,CAAC4E,IAAI,CAAG,aACZ,CAAA,IAAI,CAACwsC,KAAK,CAAG,IAAI5uC,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAC7B,CAAA,IAAI,CAACqsG,SAAS,CAAG,CACjB,CAAA,IAAI,CAACslE,SAAS,CAAG,CACjB,CAAA,IAAI,CAAC94B,KAAK,CAAGn4B,mBACb,CAAA,IAAI,CAAC+wD,iBAAiB,CAAG,IACzB,CAAA,IAAI,CAAC34B,WAAW,CAAG,KACnB,CAAA,IAAI,CAAC4Q,cAAc,CAAG,EACtB,CAAA,IAAI,CAACuY,eAAe,CAAG,CACvB,CAAA,IAAI,CAACyO,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACd,UAAU,CAAG,GAClB,CAAA,IAAI,CAAChmB,WAAW,CAAG,CACnB,CAAA,IAAI,CAACoY,YAAY,CAAG,CACpB,CAAA,IAAI,CAACkS,cAAc,CAAG,CACtB,CAAA,IAAI,CAACC,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACjpB,mBAAmB,CAAG,EAC3B,CAAA,IAAI,CAAC0lB,gBAAgB,CAAG,CACxB,CAAA,IAAI,CAAC5iC,KAAK,CAAG,EACb,CAAA,IAAI,CAACgjC,cAAc,CAAG,EACtB,CAAA,IAAI,CAACG,cAAc,CAAG,EACtB,CAAA,IAAI,CAACL,WAAW,CAAG/vD,mBACnB,CAAA,IAAI,CAACu/B,UAAU,CAAGp/B,eAClB,CAAA,IAAI,CAACyvD,WAAW,CAAG,EACnB,CAAA,IAAI,CAAC3gB,WAAW,CAAGrtC,aACnB,CAAA,IAAI,CAACmwD,OAAO,CAAG,GAAO,CAAA,GACtB,CAAA,IAAI,CAACuhK,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC9wL,MAAM,CAAG,IACd,CAAA,IAAI,CAACof,eAAe,CAAG,CACvB,CAAA,IAAI,CAACoP,aAAa,CAAG,IACrB,CAAA,IAAI,CAACE,aAAa,CAAG,KACrB,CAAA,IAAI,CAACqiK,WAAW,CAAG,CACnB,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAAChiK,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC7jB,gBAAgB,CAAG3nC,qBACxB,CAAA,IAAI,CAACxoF,IAAI,CAAG,CACZ,CAAA,IAAI,CAACyyN,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAAC3C,IAAI,CAAG,KACZ,CAAA,IAAI,CAACr6E,OAAO,CAAG,IACf,CAAA,IAAI,CAACD,QAAQ,CAAG,KAChB,CAAA,IAAI,CAAC1kD,MAAM,CAAG,CACZxP,aACD,CACD,CAAA,IAAI,CAACsiD,YAAY,CAAG,CACpB,CAAA,IAAI,CAACkP,eAAe,CAAG,CACvB,CAAA,IAAI,CAAC5B,aAAa,CAAG,EACrB,CAAA,IAAI,CAACC,oBAAoB,CAAG,GAC9B,CACF,CACA,MAAM7gC,WAAatiJ,MAAOoW,CAAAA,IAAI,CAAC,IAAIwxU,mBAEnC,CAAMI,MAAAA,cAAAA,SAAuBl8E,SAC3B,CAAA,IAAI3zP,MAAO,CACT,MAAMk0P,MAAS,CAAA,IAAI,CAACnyB,MAAM,CAACvoL,KAAK,CAAC,IAAI,CAACozE,MAAM,CAACm8G,OAAO,EAAG,CAAA,CACvD,OAAOmrB,MAAAA,CAASA,OAAOl0P,IAAI,CAAG,IAChC,CACA,IAAInH,OAAQyH,CAAAA,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAA,CAAW7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EACxD,IAAI,CAACszC,YAAY,CAAC,KAAMtzC,QAAU57E,CAAAA,QAAAA,EACpC,CACF,EAAA,CACA,IAAIlsI,OAAU,EAAA,CACZ,OAAO,IAAI,CAACmH,IAAI,CAACnH,OACnB,CACA,IAAIm4I,KAAAA,CAAM1wI,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,QAAS7yQ,GAC1B,EAAA,CACA,IAAI0wI,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAChxI,IAAI,CAACgxI,KACnB,CACA,IAAIvzI,KAAK6C,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACrD,IAAI,CAACohB,MAAM,CAAC84C,UAAU,CAAC,IAAI,CAAEl6D,QAAU57E,CAAAA,QAAAA,CAAAA,CACvC,IAAI,CAAC+qM,iBAAiB,GACxB,CAAA,EACF,CACA,IAAIryU,IAAAA,EAAO,CACT,OAAO,IAAI,CAACuC,IAAI,CAACvC,IAAI,CAEvB,IAAIwsC,KAAM3pC,CAAAA,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACtD,IAAI,CAAC3vE,KAAK,CAACi9B,QAAQ,CAAClpC,QAAAA,EACtB,EAAG,IACL,EAAA,CACA,IAAI96F,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACjqC,IAAI,CAACiqC,KACnB,CACA,IAAIy9D,UAAUpnG,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,WAAa7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC1D,IAAI,CAAC3vE,KAAK,CAACtpC,SAAS,CAAGq9B,SACzB,CACF,EAAA,CACA,IAAIr9B,SAAY,EAAA,CACd,OAAO,IAAI,CAAC1nG,IAAI,CAAC0nG,SACnB,CACA,IAAIslE,SAAAA,CAAU1sK,GAAG,CAAE,CACjB,IAAI,CAAC6yQ,SAAS,CAAC,YAAa7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAC1D,CAAA,IAAI,CAAC3vE,KAAK,CAACg8B,SAAS,CAAGjoC,SACzB,CAAA,EACF,CACA,IAAIioC,SAAAA,EAAY,CACd,OAAO,IAAI,CAAChtK,IAAI,CAACgtK,SAAS,CAE5B,IAAI94B,KAAM5zI,CAAAA,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACtD,IAAI,CAAC3vE,KAAK,CAACkD,KAAK,CAAGnP,SACrB,CACF,EAAA,CACA,IAAImP,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACl0I,IAAI,CAACk0I,KACnB,CACA,IAAI44B,kBAAkBxsK,GAAG,CAAE,CACzB,IAAI,CAAC6yQ,SAAS,CAAC,mBAAqB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAClE,IAAI,CAAC3vE,KAAK,CAAC87B,iBAAiB,CAAG/nC,SACjC,CAAA,EACF,CACA,IAAI+nC,mBAAoB,CACtB,OAAO,IAAI,CAAC9sK,IAAI,CAAC8sK,iBAAiB,CAEpC,IAAI34B,WAAY7zI,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC5D,IAAI,CAAC3vE,KAAK,CAACmD,WAAW,CAAGpP,SAC3B,CACF,EAAA,CACA,IAAIoP,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACn0I,IAAI,CAACm0I,WAAW,CAE9B,IAAI4Q,cAAezkJ,CAAAA,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAkB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAC/D,IAAI,CAAC3vE,KAAK,CAAC+T,cAAc,CAAGhgB,SAC9B,GACF,CACA,IAAIggB,cAAiB,EAAA,CACnB,OAAO,IAAI,CAAC/kJ,IAAI,CAAC+kJ,cAAc,CAEjC,IAAIuY,eAAAA,CAAgBh9J,GAAG,CAAE,CACvB,IAAI,CAAC6yQ,SAAS,CAAC,iBAAA,CAAmB7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAChE,CAAA,IAAI,CAAC3vE,KAAK,CAACssB,eAAe,CAAGv4B,SAC/B,CACF,EAAA,CACA,IAAIu4B,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACt9J,IAAI,CAACs9J,eACnB,CACA,IAAIyO,iBAAiBzrK,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAoB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACjE,IAAI,CAAC3vE,KAAK,CAAC+6B,gBAAgB,CAAGhnC,SAChC,CAAA,EACF,CACA,IAAIgnC,kBAAmB,CACrB,OAAO,IAAI,CAAC/rK,IAAI,CAAC+rK,gBAAgB,CAEnC,IAAId,UAAW3qK,CAAAA,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC3D,IAAI,CAAC3vE,KAAK,CAACi6B,UAAU,CAAG,CAAC,GAAO5xK,CAAAA,IAAAA,CAAKI,KAAK,CAACsrI,QAAAA,CAAU,CAAG,CAAA,CAAA,EAC1D,GACF,CACA,IAAIkmC,UAAa,EAAA,CACf,OAAO,IAAI,CAACjrK,IAAI,CAACirK,UACnB,CACA,IAAIhmB,YAAY3kJ,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAC5D,IAAI,CAAC3vE,KAAK,CAACiU,WAAW,CAAG5rJ,IAAKI,CAAAA,KAAK,CAAClU,IAAAA,CAAKmQ,KAAK,CAACqvI,QAAAA,CAAAA,CAAW,CAAG,CAAA,CAAA,EAC/D,GACF,CACA,IAAIkgB,WAAc,EAAA,CAChB,OAAO,IAAI,CAACjlJ,IAAI,CAACilJ,WAAW,CAE9B,IAAIoY,YAAAA,CAAa1vK,KAAK,CAAE,CACtB,IAAI,CAACwlR,SAAS,CAAC,cAAA,CAAgBxlR,KAAO,CAAA,SAASo3I,QAAQ,CAAE47E,QAAQ,CAC/D,CAAA,IAAI,CAAC3vE,KAAK,CAACqsB,YAAY,CAAGhkK,KAAKI,KAAK,CAACsrI,QAAU,CAAA,CAAA,CAAG,GACpD,CACF,EAAA,CACA,IAAIs4B,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACr9J,IAAI,CAACq9J,YACnB,CACA,IAAIkS,eAAejvK,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAkB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAC/D,IAAI,CAAC3vE,KAAK,CAACu+B,cAAc,CAAGl2K,IAAKI,CAAAA,KAAK,CAAClU,IAAAA,CAAKmQ,KAAK,CAACqvI,QAAAA,CAAAA,CAAW,CAAG,CAAA,GAAA,EAClE,GACF,CACA,IAAIwqC,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACvvK,IAAI,CAACuvK,cAAc,CAEjC,IAAIC,QAAAA,CAASlvK,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAA,CAAY7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CACzD,CAAA,IAAI,CAAC3vE,KAAK,CAACw+B,QAAQ,CAAGn2K,KAAKI,KAAK,CAACsrI,QAAU,CAAA,CAAA,CAAG,GAChD,EAAA,CAAA,EACF,CACA,IAAIyqC,UAAW,CACb,OAAO,IAAI,CAACxvK,IAAI,CAACwvK,QAAQ,CAE3B,IAAIjpB,mBAAoBjmJ,CAAAA,GAAG,CAAE,CAC3B,IAAI,CAAC6yQ,SAAS,CAAC,qBAAA,CAAuB7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EACpE,IAAI,CAAC3vE,KAAK,CAACuV,mBAAmB,CAAGltJ,IAAAA,CAAKI,KAAK,CAACsrI,SAAU,CAAG,CAAA,CAAA,EAC3D,CACF,EAAA,CACA,IAAIwhB,mBAAsB,EAAA,CACxB,OAAO,IAAI,CAACvmJ,IAAI,CAACumJ,mBACnB,CACA,IAAI0lB,gBAAAA,CAAiB3rK,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,mBAAoB7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CACjE,CAAA,IAAI,CAAC3vE,KAAK,CAACi7B,gBAAgB,CAAG5yK,IAAKI,CAAAA,KAAK,CAACsrI,QAAU,CAAA,CAAA,CAAG,CACxD,EAAA,CAAA,EACF,CACA,IAAIknC,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACjsK,IAAI,CAACisK,gBAAgB,CAEnC,IAAI5iC,KAAM/oI,CAAAA,GAAG,CAAE,CACb,IAAI,CAAC6yQ,SAAS,CAAC,OAAS7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACtD,IAAI,CAAC3vE,KAAK,CAAC8D,cAAc,CAAG/P,SAC9B,GACF,CACA,IAAIsE,KAAQ,EAAA,CACV,OAAO,IAAI,CAACrpI,IAAI,CAACqpI,KAAK,CAExB,IAAIgjC,cAAAA,CAAe/rK,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAA,CAAkB7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAC/D,CAAA,IAAI,CAAC3vE,KAAK,CAACq7B,cAAc,CAAGtnC,SAC9B,CACF,EAAA,CACA,IAAIsnC,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACrsK,IAAI,CAACqsK,cAAc,CAEjC,IAAIG,cAAelsK,CAAAA,GAAG,CAAE,CACtB,IAAI,CAAC6yQ,SAAS,CAAC,gBAAA,CAAkB7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC/D,IAAI,CAAC3vE,KAAK,CAACw7B,cAAc,CAAGznC,SAC9B,CACF,EAAA,CACA,IAAIynC,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACxsK,IAAI,CAACwsK,cACnB,CACA,IAAIL,WAAAA,CAAY7rK,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,cAAe7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAC5D,CAAA,IAAI,CAAC3vE,KAAK,CAACm7B,WAAW,CAAGpnC,SAC3B,CAAA,EACF,CACA,IAAIonC,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACnsK,IAAI,CAACmsK,WAAW,CAE9B,IAAIxwB,UAAAA,CAAWr7I,GAAG,CAAE,CAClB,IAAI,CAAC6yQ,SAAS,CAAC,YAAA,CAAc7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAC3D,CAAA,IAAI,CAAC3vE,KAAK,CAAC2K,UAAU,CAAG5W,SAC1B,CACF,EAAA,CACA,IAAI4W,UAAAA,EAAa,CACf,OAAO,IAAI,CAAC37I,IAAI,CAAC27I,UACnB,CACA,IAAIqwB,YAAY1rK,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAC5D,IAAI,CAAC3vE,KAAK,CAACg7B,WAAW,CAAGjnC,SAC3B,CAAA,EACF,CACA,IAAIinC,aAAc,CAChB,OAAO,IAAI,CAAChsK,IAAI,CAACgsK,WAAW,CAE9B,IAAI3gB,WAAY/qJ,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,cAAe7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAC5D,CAAA,IAAI,CAAC3vE,KAAK,CAACqa,WAAW,CAAGtmB,SAC3B,CAAA,EACF,CACA,IAAIsmB,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACrrJ,IAAI,CAACqrJ,WAAW,CAE9B,IAAI8iB,OAAQ7tK,CAAAA,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAW7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACxD,IAAI,CAAC3vE,KAAK,CAACm9B,OAAO,CAAG90K,IAAAA,CAAKI,KAAK,CAACsrI,QAAAA,CAAU,CAAG,CAAA,CAAA,EAC/C,GACF,CACA,IAAIopC,OAAU,EAAA,CACZ,OAAO,IAAI,CAACnuK,IAAI,CAACmuK,OAAO,CAE1B,IAAIuhK,WAAAA,CAAYpvU,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAC5D,CAAA,GAAI,IAAI,CAACovH,cAAc,GAAKhrM,oBAAoBg2F,KAASh2F,EAAAA,QAAAA,CAAS/0G,EAAE,GAAK,IAAI,CAAC+/S,cAAc,EAAIhrM,QAAAA,GAAa,IAAI,CAACgrM,cAAc,CAAD,CAAI,CACjI,MACF,CACA,IAAI,CAACC,mBAAmB,EACxB,CAAA,IAAI,CAACD,cAAc,CAAG,IAAA,CACtB,GAAIhrM,QAAAA,YAAoBg2F,MAAO,CAC7B,IAAI,CAAC/6N,IAAI,CAAC0vU,WAAW,CAAG3qM,QAAS/0G,CAAAA,EAAE,CACnC,IAAI,CAAC+/S,cAAc,CAAGhrM,QAAS/0G,CAAAA,EAAE,CACjC,IAAI,CAACigT,gBAAgB,CAAClrM,QACxB,EAAA,CAAA,KAAO,GAAI,OAAOA,QAAAA,GAAa,QAAU,CAAA,CACvC,IAAI,CAACgrM,cAAc,CAAGhrM,QAAAA,CACtB,MAAM46E,KAAAA,CAAQ,IAAI,CAACoiB,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAACh2O,GAAG,CAACg9I,QACzC,CAAA,CAAA,GAAI46E,MAAO,CACT,IAAI,CAACswH,gBAAgB,CAACtwH,KACxB,EAAA,CAAA,KAAO,CACL,IAAI,CAACuwH,eAAe,CAAG,IACvB,CAAA,IAAI,CAACnuG,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC1wO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC0iV,cAAc,CAAC,CAAC,CAAE,IAAI,CAACE,gBAAgB,CAAE,IAAI,EACrF,CACF,CACF,CACF,EAAA,CACA,IAAIP,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC1vU,IAAI,CAAC0vU,WACnB,CACA,IAAI9wL,OAAOt+I,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,QAAU7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EACvD,IAAI,CAAC3vE,KAAK,CAAC4N,MAAM,CAAG7Z,SACtB,CACF,EAAA,CACA,IAAI6Z,MAAS,EAAA,CACX,OAAO,IAAI,CAAC5+I,IAAI,CAAC4+I,MACnB,CACA,IAAIof,eAAAA,CAAgB19J,GAAG,CAAE,CACvB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAmB7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CAChE,CAAA,IAAI,CAAC3vE,KAAK,CAACgtB,eAAe,CAAG3kK,IAAKI,CAAAA,KAAK,CAACsrI,QAAU,CAAA,CAAA,CAAG,CACvD,EAAA,CAAA,EACF,CACA,IAAIi5B,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACh+J,IAAI,CAACg+J,eAAe,CAElC,IAAIoP,aAAc9sK,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAiB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAC9D,CAAA,IAAI,CAAC3vE,KAAK,CAACo8B,aAAa,CAAGroC,SAC7B,CACF,EAAA,CACA,IAAIqoC,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACptK,IAAI,CAACotK,aACnB,CACA,IAAIE,cAAchtK,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAiB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAC9D,IAAI,CAAC3vE,KAAK,CAACs8B,aAAa,CAAGvoC,SAC7B,CAAA,EACF,CACA,IAAIuoC,eAAgB,CAClB,OAAO,IAAI,CAACttK,IAAI,CAACstK,aAAa,CAEhC,IAAIqiK,WAAYrvU,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAA,CAAe7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC5D,GAAI57E,QAAAA,GAAa,CAAK,EAAA,IAAI,CAAC6qM,WAAW,GAAK,IAAM,CAAA,CAC/C,GAAI,CAAC,IAAI,CAAC1iK,aAAa,CAAE,IAAI,CAACA,aAAa,CAAG,IAAI/kK,IAClD,CAAA,IAAIgoU,GAAM,CAAA,CAAA,CACV,IAAIC,GAAM,CAAA,CAAA,CACV,GAAI,IAAI,CAACR,WAAW,CAAE,CACpBO,GAAAA,CAAM,IAAI,CAACP,WAAW,CAACv1U,CAAC,CACxB+1U,GAAM,CAAA,IAAI,CAACR,WAAW,CAAC7tU,EACzB,CACA,MAAM1c,EAAIE,IAAKuc,CAAAA,GAAG,CAACijI,QAAAA,CAAW1rI,KAAKC,UAAU,CAAA,CAC7C,MAAMvN,CAAAA,CAAIxG,KAAKyc,GAAG,CAAC+iI,QAAW1rI,CAAAA,IAAAA,CAAKC,UAAU,CAC7C,CAAA,IAAI,CAAC4zK,aAAa,CAAC3+K,GAAG,CAAClJ,CAAI8qV,CAAAA,GAAAA,CAAK,CAACpkV,CAAIokV,CAAAA,GAAAA,CAAKpkV,CAAIqkV,CAAAA,GAAAA,CAAK/qV,EAAI+qV,GACvD,CAAA,CAAA,IAAI,CAACp/L,KAAK,CAAC08B,eAAe,CAAG,IAAI,CAACR,cAAa,CACjD,KAAO,CACL,IAAI,CAACl8B,KAAK,CAAC08B,eAAe,CAAG,KAC/B,CACF,CAAA,EACF,CACA,IAAIiiK,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC3vU,IAAI,CAAC2vU,WAAW,CAE9B,IAAIC,WAAYtvU,CAAAA,GAAG,CAAE,CACnB,IAAI,CAAC6yQ,SAAS,CAAC,aAAe7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAC5D,GAAI57E,QAAAA,GAAa,MAAQ,IAAI,CAAC4qM,WAAW,GAAK,EAAG,CAC/C,GAAI,CAAC,IAAI,CAACziK,aAAa,CAAE,IAAI,CAACA,aAAa,CAAG,IAAI/kK,IAClD,CAAA,MAAMgoU,IAAMprM,QAAS1qI,CAAAA,CAAC,CACtB,MAAM+1U,IAAMrrM,QAAShjI,CAAAA,CAAC,CACtB,MAAM1c,CAAIE,CAAAA,IAAAA,CAAKuc,GAAG,CAAC,IAAI,CAAC6tU,WAAW,CAAGt2U,IAAAA,CAAKC,UAAU,CACrD,CAAA,MAAMvN,CAAIxG,CAAAA,IAAAA,CAAKyc,GAAG,CAAC,IAAI,CAAC2tU,WAAW,CAAGt2U,IAAKC,CAAAA,UAAU,CACrD,CAAA,IAAI,CAAC4zK,aAAa,CAAC3+K,GAAG,CAAClJ,EAAI8qV,GAAK,CAAA,CAACpkV,CAAIokV,CAAAA,GAAAA,CAAKpkV,EAAIqkV,GAAK/qV,CAAAA,CAAAA,CAAI+qV,GACvD,CAAA,CAAA,IAAI,CAACp/L,KAAK,CAAC08B,eAAe,CAAG,IAAI,CAACR,cACpC,MAAO,CACL,IAAI,CAACl8B,KAAK,CAAC08B,eAAe,CAAG,KAC/B,CACF,EAAG,IACL,EAAA,CACA,IAAIkiK,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC5vU,IAAI,CAAC4vU,WACnB,CACA,IAAIhiK,aAAattK,GAAG,CAAE,CACpB,IAAI,CAAC6yQ,SAAS,CAAC,cAAA,CAAgB7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC7D,IAAI,CAAC3vE,KAAK,CAAC48B,YAAY,CAAG7oC,SAC5B,CAAG,CAAA,IAAA,EACL,CACA,IAAI6oC,YAAAA,EAAe,CACjB,OAAO,IAAI,CAAC5tK,IAAI,CAAC4tK,YAAY,CAE/B,IAAI7jB,gBAAiBzpJ,CAAAA,GAAG,CAAE,CACxB,IAAI,CAAC6yQ,SAAS,CAAC,kBAAoB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACjE,IAAI,CAAC3vE,KAAK,CAAC+Y,gBAAgB,CAAGhlB,SAChC,EAAG,IACL,EAAA,CACA,IAAIglB,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAAC/pJ,IAAI,CAAC+pJ,gBACnB,CACA,IAAInwH,KAAKt5B,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACrD,IAAI,CAAC3vE,KAAK,CAACp3G,IAAI,CAAGmrG,SACpB,CAAA,EACF,CACA,IAAInrG,MAAO,CACT,OAAO,IAAI,CAAC55B,IAAI,CAAC45B,IAAI,CAEvB,IAAIyyN,aAAc/rP,CAAAA,GAAG,CAAE,CACrB,IAAI,CAAC6yQ,SAAS,CAAC,eAAA,CAAiB7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EAC9D,GAAI57E,QAAAA,CAAU,CACZ,IAAI,CAACiM,KAAK,CAACp3G,IAAI,EAAIyoF,oBACrB,CAAO,KAAA,CACL,IAAI,CAAC2uB,KAAK,CAACp3G,IAAI,EAAI,CAACyoF,oBACtB,CACA,IAAI,CAAC2uB,KAAK,CAAC26B,WAAW,GACxB,CACF,EAAA,CACA,IAAI0gF,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACrsP,IAAI,CAACqsP,aACnB,CACA,IAAIC,iBAAkBhsP,CAAAA,GAAG,CAAE,CACzB,IAAI,CAAC6yQ,SAAS,CAAC,mBAAqB7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CAClE,GAAI57E,QAAAA,CAAU,CACZ,IAAI,CAACiM,KAAK,CAACp3G,IAAI,EAAI0oF,uBAAAA,CACnB,GAAI,IAAI,CAACqnI,IAAI,CAAE,IAAI,CAAC34G,KAAK,CAACp3G,IAAI,EAAI,CAAC2oF,UACrC,CAAO,KAAA,CACL,IAAI,CAACyuB,KAAK,CAACp3G,IAAI,EAAI,CAAC0oF,wBACpB,GAAI,IAAI,CAACqnI,IAAI,CAAE,IAAI,CAAC34G,KAAK,CAACp3G,IAAI,EAAI2oF,UACpC,CACF,CAAA,EACF,CACA,IAAI+pI,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACtsP,IAAI,CAACssP,iBAAiB,CAEpC,IAAI3C,IAAKrpP,CAAAA,GAAG,CAAE,CACZ,IAAI,CAAC6yQ,SAAS,CAAC,MAAQ7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACrD,GAAI57E,QAAAA,CAAU,CACZ,IAAI,CAACiM,KAAK,CAACp3G,IAAI,EAAI2oF,SAAAA,CACnB,GAAI,IAAI,CAAC+pI,iBAAiB,CAAE,IAAI,CAACt7G,KAAK,CAACp3G,IAAI,EAAI,CAAC0oF,wBAClD,CAAO,KAAA,CACL,IAAI,CAAC0uB,KAAK,CAACp3G,IAAI,EAAI,CAAC2oF,UACpB,GAAI,IAAI,CAAC+pI,iBAAiB,CAAE,IAAI,CAACt7G,KAAK,CAACp3G,IAAI,EAAI0oF,wBACjD,CACA,IAAI,CAAC0uB,KAAK,CAAC26B,WAAW,GACxB,GACF,CACA,IAAIg+E,IAAO,EAAA,CACT,OAAO,IAAI,CAAC3pP,IAAI,CAAC2pP,IAAI,CAEvB,IAAIr6E,OAAAA,CAAQhvK,GAAG,CAAE,CACf,IAAI,CAAC6yQ,SAAS,CAAC,SAAW7yQ,CAAAA,GAAAA,CAAK,SAASykI,QAAQ,CAAE47E,QAAQ,CAAA,CACxD,IAAI,CAAC3vE,KAAK,CAACs+B,OAAO,CAAGvqC,SACvB,CAAA,EACF,CACA,IAAIuqC,SAAU,CACZ,OAAO,IAAI,CAACtvK,IAAI,CAACsvK,OAAO,CAE1B,IAAID,QAAS/uK,CAAAA,GAAG,CAAE,CAChB,IAAI,CAAC6yQ,SAAS,CAAC,UAAA,CAAY7yQ,IAAK,SAASykI,QAAQ,CAAE47E,QAAQ,EACzD,IAAI,CAAC3vE,KAAK,CAACq+B,QAAQ,CAAGtqC,SACxB,CACF,EAAA,CACA,IAAIsqC,QAAW,EAAA,CACb,OAAO,IAAI,CAACrvK,IAAI,CAACqvK,QACnB,CACA,IAAI1kD,MAAAA,CAAOrqH,GAAG,CAAE,CACd,IAAI,CAAC6yQ,SAAS,CAAC,SAAU7yQ,GAAK,CAAA,SAASykI,QAAQ,CAAE47E,QAAQ,CACvD,CAAA,IAAI,IAAI36N,CAAAA,CAAI,EAAGA,CAAI26N,CAAAA,QAAAA,CAAS16N,MAAM,CAAED,IAAI,CACtC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC21F,QAAQ,CAAC36N,CAAE,CAAA,CAAA,CACnE,GAAI,CAAC+kI,KAAAA,CAAO,SACZA,KAAAA,CAAM25C,WAAW,CAAC,IAAI,CACtB,CAAA,IAAI,CAAC1zB,KAAK,CAAC4zB,WAAW,CAAC75C,OACzB,CACA,IAAI,IAAI/kI,CAAAA,CAAI,EAAGA,CAAI++I,CAAAA,QAAAA,CAAS9+I,MAAM,CAAED,IAAI,CACtC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC+Z,QAAQ,CAAC/+I,CAAE,CAAA,CAAA,CACnE,GAAI,CAAC+kI,KAAO,CAAA,SACZ,GAAI,IAAI,CAAClyH,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvCkyH,KAAAA,CAAM05C,QAAQ,CAAC,IAAI,CACnB,CAAA,IAAI,CAACzzB,KAAK,CAAConB,QAAQ,CAACrtC,KACtB,EAAA,CACF,CACF,CACF,EAAA,CACA,IAAIJ,MAAAA,EAAS,CACX,OAAO,IAAI,CAAC3qH,IAAI,CAAC2qH,MACnB,CACA,IAAIw5B,sBAAsBx1J,MAAM,CAAE,CAChC,IAAI,CAACqiJ,KAAK,CAACmT,qBAAqB,CAAGx1J,OACrC,CACA,IAAIw1J,qBAAwB,EAAA,CAC1B,OAAO,IAAI,CAACnT,KAAK,CAACmT,qBAAqB,CAEzC,IAAI4mB,aAAAA,CAAcp9K,KAAK,CAAE,CACvB,IAAI,CAACqjJ,KAAK,CAAC+5B,aAAa,CAAGp9K,MAC7B,CACA,IAAIo9K,aAAgB,EAAA,CAClB,OAAO,IAAI,CAAC/5B,KAAK,CAAC+5B,aAAa,CAEjC,IAAIC,oBAAAA,CAAqBr9K,KAAK,CAAE,CAC9B,IAAI,CAACqjJ,KAAK,CAACg6B,oBAAoB,CAAGr9K,MACpC,CACA,IAAIq9K,oBAAAA,EAAuB,CACzB,OAAO,IAAI,CAACh6B,KAAK,CAACg6B,oBAAoB,CAExC,IAAIvN,YAAa9vK,CAAAA,KAAK,CAAE,CACtB,IAAI,CAACqjJ,KAAK,CAACysB,YAAY,CAAG9vK,MAC5B,CACA,IAAI8vK,YAAe,EAAA,CACjB,OAAO,IAAI,CAACzsB,KAAK,CAACysB,YACpB,CACA,IAAIkP,eAAAA,CAAgBh/K,KAAK,CAAE,CACzB,IAAI,CAACqjJ,KAAK,CAAC27B,eAAe,CAAGh/K,MAC/B,CACA,IAAIg/K,iBAAkB,CACpB,OAAO,IAAI,CAAC37B,KAAK,CAAC27B,eACpB,CACAwmG,SAAU7pR,CAAAA,IAAI,CAAEqE,KAAK,CAAE0iV,OAAO,CAAEC,eAAe,CAAE,CAC/C,MAAMtwU,IAAAA,CAAO,IAAI,CAACA,IAAI,CACtB,MAAM2gN,QAAW3gN,CAAAA,IAAI,CAAC1W,IAAK,CAAA,CAC3B,GAAI,CAACgnV,iBAAmB3vH,QAAahzN,GAAAA,KAAAA,CAAO,OAC5CqS,IAAI,CAAC1W,IAAAA,CAAK,CAAGqE,KAAAA,CACb,GAAI0iV,OAASA,CAAAA,OAAAA,CAAQzgV,IAAI,CAAC,IAAI,CAAEjC,KAAAA,CAAOgzN,QACzC,EAAA,CACA4vH,kBAAmB,CACjB,IAAI,IAAIvqV,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,MAAM+kI,KAAQ,CAAA,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACtE,GAAI+kI,KAAO,CAAA,CACTA,KAAM05C,CAAAA,QAAQ,CAAC,IAAI,CAAA,CACnB,IAAI,CAACzzB,KAAK,CAAConB,QAAQ,CAACrtC,KAAAA,EACtB,CACF,CACF,CACAylN,qBAAwB,EAAA,CACtB,IAAI,IAAIxqV,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC2kI,MAAM,CAAC1kI,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,MAAM+kI,KAAAA,CAAQ,IAAI,CAACg3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACtE,GAAI+kI,KAAAA,CAAO,CACTA,KAAM25C,CAAAA,WAAW,CAAC,IAAI,EACtB,IAAI,CAAC1zB,KAAK,CAAC4zB,WAAW,CAAC75C,KAAAA,EACzB,CACF,CACF,CACAu6K,eAAgBC,CAAAA,OAAO,CAAEC,OAAO,CAAE,CAChC,GAAI,IAAI,CAAC3sS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAAC03U,gBAAgB,GACvB,CACAhrC,QAAQt4S,GAAG,CAAC,KAAO,CAAA,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAAA,CAC1CF,QAAQt4S,GAAG,CAAC,QAAU,CAAA,IAAI,CAACy4S,cAAc,CAAE,IAAI,CAAA,CAC/CF,QAAQn4S,EAAE,CAAC,KAAO,CAAA,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAAA,CACzCD,QAAQn4S,EAAE,CAAC,QAAU,CAAA,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,YAAa16K,CAAAA,KAAK,CAAE,CAClB,MAAMl/H,KAAQ,CAAA,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAM/6F,CAAAA,EAAE,EAC1C,GAAInkC,KAAAA,EAAS,CAAK,EAAA,IAAI,CAACgN,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACrDkyH,MAAM05C,QAAQ,CAAC,IAAI,CAAA,CACnB,IAAI,CAACzzB,KAAK,CAAConB,QAAQ,CAACrtC,KACtB,EAAA,CACF,CACA26K,cAAAA,CAAe36K,KAAK,CAAE,CACpB,MAAMl/H,KAAAA,CAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAM/6F,CAAAA,EAAE,CAC1C,CAAA,GAAInkC,OAAS,CAAG,CAAA,CACdk/H,KAAM25C,CAAAA,WAAW,CAAC,IAAI,CAAA,CACtB,IAAI,CAAC1zB,KAAK,CAAC4zB,WAAW,CAAC75C,KAAAA,EACzB,CACF,CACA+kN,iBAAAA,EAAoB,CAClB,IAAI,IAAI9pV,CAAI,CAAA,CAAA,CAAGA,CAAImkJ,CAAAA,UAAAA,CAAWlkJ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMsD,KAAO6gJ,UAAU,CAACnkJ,CAAE,CAC1B,CAAA,IAAI,CAACsD,IAAK,CAAA,CAAG,IAAI,CAACA,IAAK,EACzB,CACA,GAAI,IAAI,CAACuP,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAAC44F,QAAQ,GACf,CACF,CACAg/O,gBAAAA,EAAmB,CACjB,IAAIC,SAAAA,CAAY,KAChB,CAAA,GAAI,IAAI,CAACC,YAAY,CAAClzU,IAAI,GAAK,SAAa,EAAA,CAAC,IAAI,CAACkzU,YAAY,CAACx0G,SAAS,CAAE,CACxE,IAAI,CAACw0G,YAAY,CAACx0G,SAAS,CAAG,IAC9Bu0G,CAAAA,SAAAA,CAAY,KACd,CACA,GAAI,CAAC,IAAI,CAACC,YAAY,CAACpjS,QAAQ,EAAImjS,SAAW,CAAA,IAAI,CAAC3uG,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAAC,IAAI,CAACy0G,YAAY,CAAA,CAC3F,GAAI,IAAI,CAACA,YAAY,CAACpjS,QAAQ,CAAE,CAC9B,IAAI,CAACqjS,iBAAiB,GACxB,CACF,CACAX,gBAAAA,CAAiBtwH,KAAK,CAAE,CACtB,GAAI,IAAI,CAACowH,cAAc,GAAKpwH,KAAM3vL,CAAAA,EAAE,CAAE,OACtC,IAAI,CAAC2gT,YAAY,CAAGhxH,MACpB,GAAI,IAAI,CAAC3uE,KAAK,CAACn4I,OAAO,CAAE,CACtB,IAAI,CAAC43U,gBAAgB,GACvB,CACA,IAAI,CAACE,YAAY,CAACtjV,EAAE,CAAC,OAAQ,IAAI,CAACujV,iBAAiB,CAAE,IAAI,CACzD,CAAA,IAAI,CAACD,YAAY,CAACtjV,EAAE,CAAC,QAAU,CAAA,IAAI,CAAC2iV,mBAAmB,CAAE,IAAI,EAC/D,CACAY,iBAAoB,EAAA,CAClB,GAAI,CAAC,IAAI,CAACD,YAAY,EAAI,CAAC,IAAI,CAACA,YAAY,CAACpjS,QAAQ,CAAE,CACrD,MACF,CACA,IAAI,CAACqxG,MAAM,CAAG,IAAI,CAAC+xL,YAAY,CAACpjS,SAClC,CACAyiS,mBAAsB,EAAA,CACpB,GAAI,CAAC,IAAI,CAACD,cAAc,CAAE,CACxB,MACF,CACA,GAAI,IAAI,CAACG,eAAe,CAAE,CACxB,IAAI,CAACnuG,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC9wO,GAAG,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC8iV,cAAc,CAAC,CAAC,CAAE,IAAI,CAACE,gBAAgB,CAAE,IAAI,CACpF,CAAA,IAAI,CAACC,eAAe,CAAG,MACzB,CACA,GAAI,IAAI,CAACS,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAC1jV,GAAG,CAAC,MAAQ,CAAA,IAAI,CAAC2jV,iBAAiB,CAAE,IAAI,CAAA,CAC1D,IAAI,CAACD,YAAY,CAAC1jV,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC+iV,mBAAmB,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACW,YAAY,CAAG,KACtB,CACA,IAAI,CAAC/xL,MAAM,CAAG,KAChB,CACAntD,QAAW,EAAA,CACT,MAAMi5B,KAAAA,CAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,MAAMC,MACrB,CAAA,IAAI,CAACqmB,KAAK,CAACn4I,OAAO,CAAG,IACrB,CAAA,IAAI,CAAC+sS,iBAAiB,CAAGl7K,KAAMr9H,CAAAA,EAAE,CAAC,YAAA,CAAc,IAAI,CAACi4S,eAAe,CAAE,IAAI,EAC1E,GAAI36K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,MAAAA,CAAOt9H,EAAE,CAAC,KAAA,CAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,CAAGn7K,MAAAA,CAAOt9H,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,GAAI,IAAI,CAAC7sS,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAAC03U,gBAAgB,GACvB,CACA,GAAI,IAAI,CAACI,YAAY,EAAI,CAAC,IAAI,CAAC/xL,MAAM,CAAE,CACrC,IAAI,CAAC6xL,gBAAgB,GACvB,CACF,CACA/+O,SAAAA,EAAY,CACV,MAAMg5B,KAAAA,CAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,KAAMC,CAAAA,MAAM,CAC3B,IAAI,CAACqmB,KAAK,CAACn4I,OAAO,CAAG,KACrB,CAAA,IAAI,CAAC+sS,iBAAiB,EAAE34S,GAAAA,EACxB,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,KACzB,GAAIj7K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,KACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,IAAI,CAAC0qC,qBAAqB,GAC5B,CACAt3D,QAAW,EAAA,CACT,IAAI,CAACxnL,SAAS,EACd,CAAA,IAAI,CAACs/C,KAAK,CAAC7hH,OAAO,EAClB,CAAA,IAAI,CAACugT,WAAW,CAAG,KACrB,CACA3hV,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAAC45S,iBAAiB,CAAG,KAAM,IAAI,CAACC,cAAc,CAAG,KAAM,IAAI,CAACC,gBAAgB,CAAG,KAAM,IAAI,CAAC6qC,YAAY,CAAG,KAAM,IAAI,CAACZ,cAAc,CAAG,KAAM,IAAI,CAACG,eAAe,CAAG,MAAO,IAAI,CAAChjK,aAAa,CAAG,KACpN,CACF,CAEA,MAAM2jK,oBAAAA,SAA6B18E,gBAQjCI,uBAAwBntB,CAAAA,SAAS,CAAEzL,KAAK,CAAE,CACxC,MAAM37N,IAAO,CAAA,CACX,GAAG27N,KACL,CACA,CAAA,GAAI,CAAC37N,IAAKvC,CAAAA,IAAI,CAAE,CACduC,KAAKvC,IAAI,CAAG2pO,SAAUpnO,CAAAA,IAAI,CAACvC,KAC7B,CACA2pO,SAAAA,CAAUpnO,IAAI,CAACvC,IAAI,CAAGuC,IAAAA,CAAKvC,IAAI,CAC/B,GAAIuC,IAAK2qH,CAAAA,MAAM,EAAI3lI,KAAMC,CAAAA,OAAO,CAAC+a,IAAAA,CAAK2qH,MAAM,CAAG,CAAA,CAC7C3qH,IAAK2qH,CAAAA,MAAM,CAAG3qH,IAAK2qH,CAAAA,MAAM,CAAC9jI,KAAK,CAAC,CAClC,EAAA,CACA,GAAImZ,IAAAA,CAAKiqC,KAAK,EAAIjlD,KAAAA,CAAMC,OAAO,CAAC+a,KAAKiqC,KAAK,CAAA,CAAG,CAC3CjqC,IAAAA,CAAKiqC,KAAK,CAAG,IAAI5uC,KAAM2E,CAAAA,IAAAA,CAAKiqC,KAAK,CAAC,CAAA,CAAE,CAAEjqC,IAAAA,CAAKiqC,KAAK,CAAC,CAAA,CAAE,CAAEjqC,IAAAA,CAAKiqC,KAAK,CAAC,CAAA,CAAE,EACpE,CACA,GAAIjqC,IAAK4tK,CAAAA,YAAY,EAAI5tK,IAAAA,CAAK4tK,YAAY,YAAY5oL,KAAAA,CAAO,CAC3Dgb,IAAAA,CAAK4tK,YAAY,CAAG,IAAI/lK,IAAK7H,CAAAA,IAAAA,CAAK4tK,YAAY,CAAC,CAAA,CAAE,CAAE5tK,IAAAA,CAAK4tK,YAAY,CAAC,CAAA,CAAE,EACzE,CACA,GAAI5tK,IAAK4vU,CAAAA,WAAW,EAAI5vU,IAAAA,CAAK4vU,WAAW,YAAY5qV,KAAO,CAAA,CACzDgb,KAAK4vU,WAAW,CAAG,IAAI/nU,IAAAA,CAAK7H,KAAK4vU,WAAW,CAAC,CAAE,CAAA,CAAE5vU,KAAK4vU,WAAW,CAAC,CAAE,CAAA,EACtE,CACA,GAAI5vU,IAAAA,CAAKi9E,MAAM,CAAE,CACfxqF,OAAQqyO,CAAAA,IAAI,CAAC,wEAAA,CACb9kO,CAAAA,IAAKnH,CAAAA,OAAO,CAAGmH,IAAAA,CAAKi9E,OAAM,CAE5B,GAAI,CAACj9E,KAAKk0I,KAAK,CAAE,CACfl0I,IAAAA,CAAKk0I,KAAK,CAAGn4B,oBACf,CACA,MAAMi1B,MAAQ,IAAI25B,KAAAA,CAAM,IAAI,CAACqrD,GAAG,CAACpmM,cAAc,CAAE,IAAI,CAAComM,GAAG,CAACtrG,KAAK,CAACq4B,wBAAwB,CACxF/R,CAAAA,KAAMvzI,CAAAA,IAAI,CAAG6sK,UAAU,CAACtqK,IAAKvC,CAAAA,IAAI,CAAC,CAClCuzI,KAAM7J,CAAAA,KAAK,CAAGigG,SAAUx6G,CAAAA,MAAM,CAC9Bw6G,UAAUpnO,IAAI,CAACgxI,KAAK,CAAGA,MACvB,KAAK,CAACujH,uBAAwBntB,CAAAA,SAAAA,CAAWpnO,KAAMmqI,UACjD,EAAA,CACAiwI,kBAAmBxtJ,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CACpCA,SAAAA,CAAU8xC,QAAQ,GACpB,CACApvC,cAAel9G,CAAAA,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAM01I,MAAQpkB,MAAOokB,CAAAA,KAAK,CAC1B,MAAMhxI,KAAO,EAAE,CACf,IAAI1W,IAAAA,CACJ,IAAI,IAAItD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAImkJ,WAAWlkJ,MAAM,CAAED,CAAI,EAAA,CAAA,CACxCsD,KAAO6gJ,UAAU,CAACnkJ,CAAE,CAAA,CACpB,GAAIsD,IAAS,GAAA,OAAA,CAAS,CACpB,QACF,CACA,GAAI0nJ,KAAK,CAAC1nJ,IAAAA,CAAK,EAAI0nJ,KAAK,CAAC1nJ,IAAK,CAAA,CAACgS,KAAK,CAAE,CACpC0E,IAAI,CAAC1W,IAAK,CAAA,CAAG0nJ,KAAK,CAAC1nJ,KAAK,CAACgS,KAAK,GAChC,CAAA,KAAO,CACL0E,IAAI,CAAC1W,IAAK,CAAA,CAAG0nJ,KAAK,CAAC1nJ,IAAAA,EAAK,CAE5B,CACA,OAAO,IAAI,CAACk/O,YAAY,CAACltO,KAAO0E,CAAAA,IAAAA,CAClC,CACA66Q,UAAAA,CAAWzzC,SAAS,CAAEzmB,QAAQ,CAAE57E,QAAQ,CAAE,CACxC,GAAI47E,QAAa57E,GAAAA,QAAAA,CAAU,CACzBqiG,SAAUp2F,CAAAA,KAAK,CAACvzI,IAAI,CAAG6sK,UAAU,CAACvlC,QAAS,EAC7C,CACF,CAhEAh3I,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GACN,CAAA,CAAA,IAAI,CAAChmM,EAAE,CAAG,OACV,CAAA,IAAI,CAACokO,aAAa,CAAGy7E,cACrB,CAAA,IAAI,CAACv7E,QAAQ,CAAGm7E,kBAChB,CAAA,IAAI,CAACpiV,EAAE,CAAC,cAAA,CAAgB,IAAI,CAAC+sR,kBAAkB,CAAE,IAAI,EACvD,CA2DF,CAEA,MAAMt6O,UAAAA,CAAa,CACjB,GAAA,CACA,IACA,GACA,CAAA,GAAA,CACD,CACD,MAAMgxS,UAAY,CAChBhjV,SAAAA,CACAA,SACA+Z,CAAAA,IAAAA,CACA5F,KACAkG,IACD,CAAA,CACD,SAAS4oU,UAAAA,CAAW/6G,GAAG,CAAEhqO,IAAI,CAAE2B,KAAK,CAAE0sI,GAAG,CAAA,CACvC,OAAOruI,IAAAA,CAAKyR,IAAI,EACd,IAAK,SACH,CAAA,OAAO,CAAC,CAAC9P,KACX,CAAK,IAAA,QAAA,CACH,GAAI,OAAOA,KAAAA,GAAU,QAAU,CAAA,CAC7B,OAAOA,KACT,CAAA,KAAO,GAAI,OAAOA,QAAU,QAAU,CAAA,CACpC,MAAMlI,CAAAA,CAAIyW,SAASvO,KAAO,CAAA,EAAA,CAAA,CAC1B,GAAIsvD,KAAAA,CAAMx3D,GAAI,OAAO,IAAA,CACrB,OAAOA,CACT,MAAO,GAAI,OAAOkI,KAAU,GAAA,SAAA,CAAW,CACrC,OAAO,CAAIA,CAAAA,KACb,CACA,OAAO,IACT,CAAK,IAAA,MAAA,CACH,CACE,MAAM5H,MAAAA,CAAS,EAAC,CAChB,GAAIf,KAAMC,CAAAA,OAAO,CAAC+G,IAAAA,CAAK06O,MAAM,CAAG,CAAA,CAC9B,GAAI,CAAC/4O,OAAS,OAAOA,KAAAA,GAAU,QAAU,CAAA,CACvCA,MAAQ,GACV,CACA,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,CAAIgG,CAAAA,IAAAA,CAAK06O,MAAM,CAACzgP,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,MAAMgrV,KAAAA,CAAQhlV,IAAK06O,CAAAA,MAAM,CAAC1gP,CAAE,CAAA,CAC5B,GAAI,CAACgrV,MAAM1nV,IAAI,CAAE,SACjB,GAAI0nV,MAAM37S,KAAK,CAAE,CACftvC,MAAM,CAACirV,KAAM1nV,CAAAA,IAAI,CAAC,CAAG,EAAE,CACvB,MAAM+C,GAAMrH,CAAAA,KAAAA,CAAMC,OAAO,CAAC0I,KAAK,CAACqjV,KAAAA,CAAM1nV,IAAI,CAAC,CAAA,CAAIqE,KAAK,CAACqjV,MAAM1nV,IAAI,CAAC,CAAG,EAAE,CACrE,IAAI,IAAIijF,CAAI,CAAA,CAAA,CAAGA,EAAIlgF,GAAIpG,CAAAA,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACjCxmF,MAAM,CAACirV,KAAM1nV,CAAAA,IAAI,CAAC,CAACxC,IAAI,CAACiqV,UAAAA,CAAW/6G,IAAKg7G,KAAO3kV,CAAAA,GAAG,CAACkgF,CAAAA,CAAE,GACvD,CACF,CAAA,KAAO,CACL,MAAMhyE,IAAM5M,KAAM0E,CAAAA,cAAc,CAAC2+U,KAAAA,CAAM1nV,IAAI,CAAIqE,CAAAA,KAAK,CAACqjV,KAAAA,CAAM1nV,IAAI,CAAC,CAAG0nV,KAAM9xQ,CAAAA,OAAO,CAChFn5E,MAAM,CAACirV,KAAAA,CAAM1nV,IAAI,CAAC,CAAGynV,UAAW/6G,CAAAA,GAAAA,CAAKg7G,MAAOz2U,GAC9C,EAAA,CACF,CACF,CACA,OAAOxU,MACT,CACF,IAAK,OAAA,CACH,GAAI4H,KAAiBotO,YAAAA,KAAAA,CAAO,CAC1B,OAAOptO,KACT,CAAA,KAAO,GAAI,OAAOA,QAAU,QAAU,CAAA,CACpC,OAAOqoO,GAAAA,CAAI+H,MAAM,CAACh2O,GAAG,CAAC4F,KAAAA,CAAAA,EAAU,IAClC,CAAO,KAAA,GAAI,OAAOA,KAAAA,GAAU,SAAU,CACpC,OAAOqoO,GAAI+H,CAAAA,MAAM,CAACh2O,GAAG,CAACmU,QAASvO,CAAAA,KAAAA,CAAO,MAAQ,IAChD,CACA,OAAO,IACT,KAAK,QACH,CAAA,GAAIA,KAAiB49I,YAAAA,SAAAA,CAAW,CAC9B,OAAO59I,KACT,CAAO,KAAA,GAAI,OAAOA,KAAU,GAAA,QAAA,CAAU,CACpC,OAAOqoO,IAAIy0B,kBAAkB,CAAC98P,KAChC,CAAA,CACA,OAAO,IACT,CAAA,IAAK,KACL,CAAA,IAAK,OACH,GAAIA,KAAAA,YAAiB0N,KAAO,CAAA,CAC1B,GAAIg/H,GAAeh/H,YAAAA,KAAAA,CAAO,CACxBg/H,GAAAA,CAAIt1I,IAAI,CAAC4I,KAAAA,CAAAA,CACT,OAAO0sI,GACT,CACA,OAAO1sI,KAAAA,CAAM2N,KAAK,EACpB,CAAO,KAAA,GAAI3N,KAAiB3I,YAAAA,KAAAA,EAAS2I,MAAM1H,MAAM,EAAI,CAAK0H,EAAAA,KAAAA,CAAM1H,MAAM,EAAI,CAAA,CAAG,CAC3E,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI2H,CAAAA,KAAAA,CAAM1H,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnC,GAAI,OAAO2H,KAAK,CAAC3H,CAAE,CAAA,GAAK,SAAU,CAChC,OAAO,IACT,CACF,CACA,GAAI,CAACq0I,GAAKA,CAAAA,GAAAA,CAAM,IAAIh/H,KACpBg/H,CAAAA,GAAI/0I,CAAAA,CAAC,CAAGqI,KAAK,CAAC,CAAE,CAChB0sI,CAAAA,GAAIxgI,CAAAA,CAAC,CAAGlM,KAAK,CAAC,CAAE,CAChB0sI,CAAAA,GAAAA,CAAIxkI,CAAC,CAAGlI,KAAK,CAAC,CAAA,CAAE,CAChB0sI,GAAAA,CAAIzkI,CAAC,CAAGjI,MAAM1H,MAAM,GAAK,CAAI,CAAA,CAAA,CAAI0H,KAAK,CAAC,CAAA,CAAE,CACzC,OAAO0sI,GACT,CAAA,KAAO,GAAI,OAAO1sI,QAAU,QAAY,EAAA,wBAAA,CAAyBjF,IAAI,CAACiF,OAAQ,CAC5E,GAAI,CAAC0sI,GAAAA,CAAK,CACRA,GAAM,CAAA,IAAIh/H,MACZ,CACAg/H,IAAIr+H,UAAU,CAACrO,KACf,CAAA,CAAA,OAAO0sI,GACT,CACA,OAAO,IACT,CAAA,IAAK,OACL,IAAK,MAAA,CACL,IAAK,MAAA,CACH,CACE,MAAMn8H,GAAAA,CAAMhC,QAASlQ,CAAAA,IAAAA,CAAKyR,IAAI,CAAC5W,KAAK,CAAC,CAAA,CAAA,CAAI,IACzC,MAAMoqV,OAAAA,CAAUH,SAAS,CAAC5yU,IAAI,CAC9B,GAAIvQ,KAAiBsjV,YAAAA,OAAAA,CAAS,CAC5B,GAAI52M,GAAAA,YAAe42M,OAAS,CAAA,CAC1B52M,IAAIt1I,IAAI,CAAC4I,KACT,CAAA,CAAA,OAAO0sI,GACT,CACA,OAAO1sI,KAAM2N,CAAAA,KAAK,EACpB,CAAO,KAAA,GAAI3N,KAAiB3I,YAAAA,KAAAA,EAAS2I,MAAM1H,MAAM,GAAKiY,GAAK,CAAA,CACzD,IAAI,IAAIlY,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2H,MAAM1H,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,GAAI,OAAO2H,KAAK,CAAC3H,CAAAA,CAAE,GAAK,QAAU,CAAA,CAChC,OAAO,IACT,CACF,CACA,GAAI,CAACq0I,GAAAA,CAAKA,IAAM,IAAI42M,OAAAA,CACpB,IAAI,IAAIjrV,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1Bq0I,GAAG,CAACv6F,UAAU,CAAC95C,EAAE,CAAC,CAAG2H,KAAK,CAAC3H,GAAE,CAE/B,OAAOq0I,GACT,CACA,OAAO,IACT,CACF,IAAK,QACH,GAAI1sI,KAAAA,CAAO,CACT,IAAI2R,MACJ,GAAI3R,KAAAA,YAAiB4R,KAAS5R,EAAAA,KAAAA,YAAiBsS,SAAU,CACvDX,KAAAA,CAAQ3R,KAAM2N,CAAAA,KAAK,GACrB,CAAO,KAAA,CACL,MAAM41U,SAAAA,CAAYvjV,MAAMsQ,IAAI,CAAC,CAAE,CAAA,WAAYjZ,KAAQib,CAAAA,QAAAA,CAAWV,KAC9DD,CAAAA,KAAAA,CAAQ,IAAI4xU,SAAUvjV,CAAAA,KAAAA,CAAMsQ,IAAI,CAChCqB,CAAAA,KAAM7B,CAAAA,IAAI,CAAG9P,KAAAA,CAAM8P,KAAI,CAEzB,OAAO6B,KACT,CACA,KACJ,CACA,OAAO3R,KACT,CACA,SAASwjV,gBAAAA,CAAiBn7G,GAAG,CAAE0Q,MAAM,CAAE/4O,KAAK,CAAE8H,OAAO,EACnD,GAAIixO,MAAAA,CAAOrxM,KAAK,CAAE,CAChB,OAAO1nC,KAAAA,CAAMd,GAAG,CAAC,CAACmD,IAAMnE,CAAAA,KAAAA,GAAQklV,UAAW/6G,CAAAA,GAAAA,CAAK0Q,OAAQ12O,IAAMyF,CAAAA,OAAAA,CAAUA,OAAO,CAAC5J,MAAM,CAAG,IAAA,CAAA,CAC3F,CACA,OAAOklV,WAAW/6G,GAAK0Q,CAAAA,MAAAA,CAAQ/4O,KAAO8H,CAAAA,OAAAA,CACxC,CACA,SAAS27U,wBAAAA,CAAyBp7G,GAAG,CAAEq7G,kBAAkB,CAAErxU,IAAI,CAAEk2N,MAAM,EACrE,GAAI,CAACl2N,IAAM,CAAA,OACX,IAAI,MAAMsxU,aAAiBD,IAAAA,kBAAAA,CAAmB,CAC5C,MAAME,eAAAA,CAAkBF,kBAAkB,CAACC,cAAc,CACzD,MAAME,YAAexxU,CAAAA,IAAI,CAACsxU,aAAc,CAAA,CACxC,GAAIE,YAAAA,GAAiB1jV,UAAW,SAChCooO,MAAM,CAACo7G,cAAc,CAAGH,gBAAAA,CAAiBn7G,GAAKu7G,CAAAA,eAAAA,CAAiBC,aAAct7G,MAAM,CAACo7G,aAAc,CAAA,EACpG,CACF,CACA,MAAMG,gBAkCJn7U,CAAAA,GAAAA,CAAIhN,IAAI,CAAE0C,IAAI,CAAE,CACd,GAAI,IAAI,CAACH,KAAK,CAACvC,KAAK,CAAE,CACpB,MACF,CAAA,KAAO,GAAImoV,gBAAiBC,CAAAA,aAAa,CAACpjV,GAAG,CAAChF,IAAO,CAAA,CAAA,CACnD,MACF,CACA,IAAI,CAACuC,KAAK,CAACvC,IAAAA,CAAK,CAAG0C,IACnBnE,CAAAA,MAAAA,CAAOC,cAAc,CAAC,IAAI,CAACkgP,UAAU,CAAC3vH,SAAS,CAAE/uH,IAAAA,CAAM,CACrDvB,GAAAA,CAAK,WACH,OAAO,IAAI,CAAC4pV,YAAY,CAACroV,IAAK,CAChC,CACAiF,CAAAA,GAAAA,CAAK,SAASy3G,GAAG,CAAA,CACf,MAAMv3G,GAAAA,CAAM,OACZ,MAAMmjV,OAAAA,CAAU,CAAC,KAAK,EAAEtoV,IAAK,CAAA,CAAC,CAC9B,MAAM+wI,IAAM,IAAI,CAACs3M,YAAY,CAACroV,KAAK,CACnC,IAAIuoV,OAAUx3M,CAAAA,GAAAA,CACd,GAAIA,GAAOruI,EAAAA,IAAAA,CAAKyR,IAAI,GAAK,QAAUzR,IAAKyR,CAAAA,IAAI,GAAK,QAAA,EAAY48H,IAAI/+H,KAAK,CAAE,CACtE,GAAI,IAAI,CAACxL,QAAQ,CAACrB,GAAAA,CAAAA,EAAQ,IAAI,CAACqB,QAAQ,CAAC8hV,OAAAA,CAAAA,CAAU,CAChDC,OAAUx3M,CAAAA,GAAAA,CAAI/+H,KAAK,GACrB,CACF,CACA,GAAItP,IAAKqpC,CAAAA,KAAK,CAAE,CACd,IAAI,CAACs8S,YAAY,CAACroV,IAAK,CAAA,CAAG,EAAE,CAC5B,GAAI08G,GAAK,CAAA,CACP,IAAI,IAAIhgH,EAAI,CAAGkY,CAAAA,GAAAA,CAAM8nG,GAAI//G,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC5C,IAAI,CAAC2rV,YAAY,CAACroV,IAAAA,CAAK,CAACxC,IAAI,CAACiqV,UAAW,CAAA,IAAI,CAAC/6G,GAAG,CAAEhqO,IAAMg6G,CAAAA,GAAG,CAAChgH,CAAE,CAAA,CAAEq0I,GAAMA,CAAAA,GAAG,CAACr0I,CAAE,CAAA,CAAG,IACjF,CAAA,EAAA,CACF,CACF,CAAO,KAAA,CACL,IAAI,CAAC2rV,YAAY,CAACroV,IAAAA,CAAK,CAAGynV,UAAAA,CAAW,IAAI,CAAC/6G,GAAG,CAAEhqO,IAAAA,CAAMg6G,IAAKq0B,GAC5D,EAAA,CACA,IAAI,CAACnrI,IAAI,CAACT,GAAAA,CAAKnF,IAAM,CAAA,IAAI,CAACqoV,YAAY,CAACroV,IAAK,CAAA,CAAEuoV,SAC9C,IAAI,CAAC3iV,IAAI,CAAC0iV,OAAS,CAAA,IAAI,CAACD,YAAY,CAACroV,IAAK,CAAA,CAAEuoV,OAC9C,EAAA,CACF,GACF,CACAxhV,MAAAA,CAAO/G,IAAI,CAAE,CACX,GAAI,CAAC,IAAI,CAACuC,KAAK,CAACvC,IAAAA,CAAK,CAAE,CACrB,OAAO,KACT,CACA,OAAO,IAAI,CAACuC,KAAK,CAACvC,IAAK,CACvB,QAAO,IAAI,CAAC0+O,UAAU,CAAC3vH,SAAS,CAAC/uH,IAAAA,CAAK,CACtC,OAAO,IACT,CACAgF,GAAAA,CAAIhF,IAAI,CAAE,CACR,OAAO,CAAC,CAAC,IAAI,CAACuC,KAAK,CAACvC,IAAK,CAC3B,CACAvB,GAAIuB,CAAAA,IAAI,CAAE,CACR,OAAO,IAAI,CAACuC,KAAK,CAACvC,KAAK,EAAI,IAC7B,CA5EAyE,WAAAA,CAAYi6O,UAAU,CAAC,CACrB,IAAI,CAACA,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACn8O,KAAK,CAAG,GACf,CA0EF,CApFM4lV,gBAEGL,CAAAA,wBAAwB,CAAGA,wBAGhC,CALEK,gBAKGN,CAAAA,gBAAgB,CAAGA,gBAOxB,CAZEM,gBAYGC,CAAAA,aAAa,CAAG,IAAI34U,GAAAA,CAAI,CAC3B,KAAA,CACA,SACA,SACA,CAAA,UAAA,CACA,aACA,CAAA,YAAA,CACA,eACA,iBACA,CAAA,cAAA,CACA,kBACA,CAAA,YAAA,CACA,kBACA,KACA,CAAA,KAAA,CACA,IACA,CAAA,KAAA,CACA,OACA,MACA,CAAA,UAAA,CACD,CAsDL,CAAA,MAAM+4U,kBAAoB,YAC1B,CAAA,MAAMC,sBAAyB,CAAA,gBAAA,CAC/B,MAAMC,aAAgB,CAAA,QAAA,CACtB,MAAMC,kBAAAA,CAAqB,aAC3B,MAAMC,WAAAA,CAAc,MAEpB,CAAA,MAAMC,eAAelkV,YAuBnB,CAAA,IAAI4K,OAAQlL,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACksE,QAAQ,CAAG,CAAC,CAAClsE,KAClB,CAAA,GAAI,IAAI,CAACkL,OAAO,GAAK,IAAI,CAACu5U,WAAW,CAAE,OACvC,IAAI,CAACA,WAAW,CAAG,IAAI,CAACv5U,OAAO,CAC/B,IAAI,CAAC3J,IAAI,CAAC,IAAI,CAAC2J,OAAO,CAAG,QAAA,CAAW,SACpC,CAAA,CAAA,IAAI,CAAC3J,IAAI,CAAC,OAAS,CAAA,IAAI,CAAC2J,OAAO,CAAA,CAC/B,GAAI,CAAC,IAAI,CAAC+uO,YAAY,EAAI,IAAI,CAAC/uO,OAAO,CAAE,CACtC,IAAI,CAAC+uO,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC14O,IAAI,CAAC,eACV,CAAA,CAAA,GAAI,IAAI,CAACqD,UAAU,CAAE,CACnB,IAAI,CAACq6H,MAAM,CAACspG,MAAM,CAACm8G,aAAa,CAAC,IAAI,CAAEP,mBACzC,CACF,CACA,GAAI,IAAI,CAAClqG,YAAY,EAAI,CAAC,IAAI,CAACC,gBAAgB,EAAI,IAAI,CAAChvO,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAACspG,MAAM,CAACkT,aAAa,CAAE,CACpG,IAAI,CAACvB,gBAAgB,CAAG,IACxB,CAAA,GAAI,IAAI,CAACC,cAAc,CAAE,CACvB,IAAI,CAACl7G,MAAM,CAACspG,MAAM,CAACm8G,aAAa,CAAC,IAAI,CAAEN,sBACzC,EAAA,CACF,CACF,CACA,IAAIl5U,OAAU,EAAA,CACZ,OAAO,IAAI,CAACghE,QAAQ,EAAI,CAAC,IAAI,CAACn2B,UAAU,EAAI,IAAI,CAACkpF,MAAM,CAACspG,MAAM,CAACr9N,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAE/Fy5U,WAAWtmV,IAAI,CAAE,CACf,MAAMkqO,MAAS,CAAA,IAAI,CAACnoO,WAAW,CAC/B,IAAI,CAACioO,GAAG,CAAGhqO,IAAKgqO,CAAAA,GAAG,CACnB,IAAI,CAACppG,MAAM,CAAG5gI,IAAAA,CAAK4gI,MAAM,CACzB,IAAI,CAAC/yD,QAAQ,CAAG,OAAO7tE,IAAK6M,CAAAA,OAAO,GAAK,SAAY7M,CAAAA,IAAAA,CAAK6M,OAAO,CAAG,IACnE,CAAA,IAAI,CAACu5U,WAAW,CAAG,IAAI,CAACv5U,OACxB,CAAA,IAAI,CAAC05U,WAAW,CAAG,KACnB,CAAA,IAAI,CAACC,YAAY,CAAGt8G,MACpB,CAAA,IAAI,CAACu8G,gBAAgB,CAAG,CAAC,EAC3B,CAOA,WAAW5rG,UAAa,EAAA,CACtB,OAAO,IAAI,CAACC,MACd,CA7CA/4O,WAAAA,CAAY/B,IAAI,CAAC,CACf,KAAK,EAAA,CACL,IAAI,CAACsmV,UAAU,CAACtmV,MAClB,CA2CF,CA/DI,MAFEmmV,CAEG9G,YAAY,CAAG,QAGpB,CALE8G,MAAAA,CAKG7G,aAAa,CAAG,SAGrB,CARE6G,MAAAA,CAQG5G,WAAW,CAAG,OAGnB,CAXE4G,MAAAA,CAWGjoG,aAAa,CAAG,SAGrB,CAdEioG,MAAAA,CAcGO,UAAU,CAAG,MAGlB,CAjBEP,MAAAA,CAiBG/0G,WAAW,CAAG,OAwCnB,CAzDE+0G,MAAAA,CAyDGrrG,MAAM,CAAG,IAGd,CA5DEqrG,MAAAA,CA4DGQ,eAAe,CAAGC,aAAAA,CAM3B,MAAMC,aAAAA,CAAgB,qDACtB,SAASD,aAAAA,CAAcE,aAAa,CAAA,CAClC,GAAI,OAAOA,aAAAA,GAAkB,UAAY,CAAA,OAAOhlV,UAChD,GAAIglV,aAAAA,CAAcjsG,UAAU,CAAE,OAAOisG,aAAcjsG,CAAAA,UAAU,CAC7D,GAAI,SAAUz7F,QAAS/yB,CAAAA,SAAS,CAAE,OAAOy6N,cAAcxpV,IAAI,CAC3D,GAAIwpV,aAAAA,GAAkB1nM,QAAY0nM,EAAAA,aAAAA,GAAkB1nM,QAAS/yB,CAAAA,SAAS,CAACtqH,WAAW,CAAE,OAAO,UAAA,CAC3F,MAAMtG,KAAQ,CAAA,CAAC,EAAEqrV,aAAAA,CAAc,CAAC,CAACrrV,KAAK,CAACorV,aAAAA,CAAAA,CACvC,OAAOprV,KAAQA,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAGqG,SAC5B,CAEA,MAAMilV,UAAAA,SAAmBZ,OAKvB,WAAW7gS,UAAAA,EAAa,CACtB,GAAI,CAAC,IAAI,CAACj/C,cAAc,CAAC,gBAAiB,IAAI,CAACs/U,YAAY,CAAG,IAAIF,gBAAiB,CAAA,IAAI,CACvF,CAAA,OAAO,IAAI,CAACE,YAAY,CAE1BW,WAAWtmV,IAAI,CAAE,CACfmmV,MAAAA,CAAO95N,SAAS,CAACi6N,UAAU,CAAC1iV,IAAI,CAAC,IAAI,CAAE5D,IACvC,CAAA,CAAA,IAAI,CAAC2lV,YAAY,CAAG,EACpB,CAAA,IAAI,CAACqB,eAAe,CAAGhnV,IAAKslD,CAAAA,UAAU,EAAI,GAC5C,CACA2hS,cAAAA,CAAejnV,IAAI,CAAE,CACnB,IAAI,CAACsmV,UAAU,CAACtmV,MAClB,CACAknV,sBAAAA,CAAuBz0G,KAAK,CAAE,CAC5B,GAAI,CAACA,KAAS,EAAA,CAAC,IAAI,CAACu0G,eAAe,CAAE,CACnC,MACF,CACA,IAAI,MAAMnlV,GAAAA,IAAO,IAAI,CAAC2kV,YAAY,CAAClhS,UAAU,CAACzlD,KAAK,CAAC,CAClD,GAAI,IAAI,CAACmnV,eAAe,EAAI,IAAI,CAACA,eAAe,CAAC3gV,cAAc,CAACxE,KAAM,CACpE,IAAI,CAACA,GAAAA,CAAI,CAAG,IAAI,CAACmlV,eAAe,CAACnlV,KAAI,CACvC,KAAO,GAAI,CAAC,IAAI,CAAC8jV,YAAY,CAACt/U,cAAc,CAACxE,GAAM,CAAA,CAAA,CACjD,GAAI,IAAI,CAAC2kV,YAAY,CAAClhS,UAAU,CAACzlD,KAAK,CAACgC,GAAI,CAAA,CAACwE,cAAc,CAAC,SAAA,CAAA,CAAY,CACrE,IAAI,CAACxE,GAAI,CAAA,CAAG,IAAI,CAAC2kV,YAAY,CAAClhS,UAAU,CAACzlD,KAAK,CAACgC,GAAI,CAAA,CAACqxE,QACtD,MAAO,CACL,IAAI,CAACrxE,GAAAA,CAAI,CAAG,KACd,CACF,CACF,CACA,IAAI,CAACmlV,eAAe,CAAG,KACzB,CACA,OAAOruV,MAAAA,CAAOwuV,OAAO,CAAE,CACrB,IAAI,MAAMtlV,GAAOslV,IAAAA,OAAAA,CAAQ,CACvB,GAAI,CAACA,OAAQ9gV,CAAAA,cAAc,CAACxE,GAAM,CAAA,CAAA,CAChC,QACF,CACA,IAAI,CAACwqH,SAAS,CAACxqH,GAAAA,CAAI,CAAGslV,OAAO,CAACtlV,GAAI,EACpC,CACF,CAxCAE,WAAAA,CAAY/B,IAAI,CAAC,CACf,KAAK,CAACA,IACN,CAAA,CAAA,IAAI,CAACinV,cAAc,CAACjnV,IACtB,EAAA,CAsCF,CAEA,MAAMonV,kBAAAA,CAAqB,GAACl0S,EAAMA,GAAG,CAAC,CAAA,CAAE,CAAC6uE,WAAW,GAAK7uE,GAAIj4C,CAAAA,SAAS,CAAC,CAAA,CACvE,OAAMosV,eAAwB1/E,SAAAA,SAAAA,CA6C5B,IAAIjsB,OAAAA,CAAQ/5O,KAAK,CAAE,CACjB,IAAI,CAAC45O,YAAY,CAAG55O,KAAAA,CACpB,IAAI,MAAME,OAAOF,KAAM,CAAA,CACrB,GAAI,CAACA,MAAM0E,cAAc,CAACxE,GAAM,CAAA,CAAA,CAC9B,QACF,CACA,MAAMqoO,MAAS,CAAA,IAAI,CAACmR,aAAa,CAACx5O,GAAI,CAAA,CACtC,GAAIqoO,MAAQ,CAAA,CACV,GAAI,OAAOvoO,KAAK,CAACE,GAAAA,CAAI,CAACgL,OAAO,GAAK,SAAW,CAAA,CAC3Cq9N,MAAOzoO,CAAAA,IAAI,CAAC,eAAiB,CAAA,IAAA,CAC3B,IAAI,CAACk6O,oBAAoB,CAACzR,MAC5B,EAAA,CAAA,CACAA,CAAAA,MAAOr9N,CAAAA,OAAO,CAAG,CAAC,CAAClL,KAAK,CAACE,GAAI,CAAA,CAACgL,QAAO,CAEvC,GAAI,OAAOlL,KAAK,CAACE,GAAAA,CAAI,CAACyjD,UAAU,GAAK,QAAU,CAAA,CAC7C,IAAI,MAAMs3B,QAAQj7E,KAAK,CAACE,GAAI,CAAA,CAACyjD,UAAU,CAAC,CACtC,GAAImgS,gBAAAA,CAAiBC,aAAa,CAACpjV,GAAG,CAACs6E,IAAAA,CAAAA,CAAO,CAC5C,QACF,CACA,GAAI,CAACstJ,OAAOy7G,YAAY,CAACt/U,cAAc,CAACu2E,MAAO,CAC7C,MAAMo/J,UAAa,CAAA,IAAI,CAACjG,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAAC3/O,GAAG,CAAC8F,GAAAA,CAAAA,CAC/C,GAAIm6O,UAAY,CAAA,CACdA,UAAW12L,CAAAA,UAAU,CAACh7C,GAAG,CAACsyE,IAAM,CAAA,IAClC,CACF,CACAstJ,MAAM,CAACttJ,KAAK,CAAGj7E,KAAK,CAACE,GAAAA,CAAI,CAACyjD,UAAU,CAACs3B,IAAK,EAC5C,CACF,CACF,CAAA,KAAO,CACLn2E,OAAAA,CAAQ88F,GAAG,CAAC,IAAI,CAACs6E,KAAK,EACxB,CACF,CACF,CACA,IAAI69D,SAAU,CACZ,OAAO,IAAI,CAACX,QAAQ,CAEtB,IAAIluO,OAAAA,CAAQlL,KAAK,CAAE,CACjB,MAAMgzN,QAAAA,CAAW,IAAI,CAAC9mJ,QAAQ,CAC9B,IAAI,CAACA,QAAQ,CAAGlsE,KAAAA,CAChB,IAAI,CAACuB,IAAI,CAAC,KAAA,CAAO,UAAWyxN,QAAUhzN,CAAAA,KAAAA,EACxC,CACA,IAAIkL,SAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,CAEtB43B,QAAW,EAAA,CACT,IAAI,CAAC23I,aAAa,CAAG,IAAA,CACrB,IAAI,CAAC+hG,WAAW,EAAA,CAChB,GAAI,CAAC,IAAI,CAACv+M,MAAM,CAACw8G,aAAa,CAAE,CAC9B,IAAI,CAACG,iBAAiB,GACxB,CACA,IAAI,CAACH,aAAa,CAAG,MACvB,CACA13I,WAAY,CACV,IAAI,CAACy5O,WAAW,GAClB,CACA5hG,iBAAAA,EAAoB,CAClB,MAAM+pG,WAAa,IAAI,CAACC,aAAa,EAAA,CACrC,IAAI,IAAIvtV,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACwpO,OAAO,CAACzhP,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CACrD,MAAMkwO,MAAS,CAAA,IAAI,CAACwR,OAAO,CAAC1hP,CAAE,CAAA,CAC9B,GAAIkwO,MAAAA,CAAO0R,YAAY,EAAI,CAAC1R,MAAO2R,CAAAA,gBAAgB,EAAI3R,MAAOr9N,CAAAA,OAAO,CAAE,CACrEq9N,OAAO2R,gBAAgB,CAAG,IAC1B,CAAA,GAAI3R,MAAO4R,CAAAA,cAAc,CAAE,CACzB,IAAI,CAACuqG,aAAa,CAACn8G,MAAAA,CAAQ67G,wBAC7B,CACF,CACF,CACA,IAAI,CAACyB,WAAW,CAACF,UACnB,EAAA,CACAC,eAAgB,CACd,MAAM/rI,OAAU,CAAA,IAAI,CAACisI,wBACrB,CAAA,IAAI,CAACA,wBAAwB,CAAG,IAChC,CAAA,OAAOjsI,OACT,CACAgsI,WAAAA,CAAYE,gBAAgB,CAAE,CAC5B,IAAI,CAACD,wBAAwB,CAAGC,iBAChC,GAAI,CAAC,IAAI,CAACD,wBAAwB,CAAE,CAClC,IAAI,CAACE,uBAAuB,GAC9B,CACF,CACA9mC,aAAAA,CAAc/nT,IAAI,CAAEu1I,GAAG,CAAE1sI,KAAK,CAAE,CAC9B,IAAI,CAACy7O,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC+hG,WAAW,EAChB,CAAA,IAAI,CAAC/hG,aAAa,CAAG,MACvB,CACA+hG,WAAAA,EAAc,CACZ,MAAMjnQ,KAAAA,CAAQ,IAAI,CAACrrE,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CACjD,GAAIqrE,KAAAA,GAAU,IAAI,CAACknQ,SAAS,CAAE,CAC5B,MACF,CACA,IAAI,CAACA,SAAS,CAAGlnQ,KACjB,CAAA,IAAI,CAACh1E,IAAI,CAACg1E,KAAQ,CAAA,QAAA,CAAW,SAC7B,CAAA,CAAA,IAAI,CAACh1E,IAAI,CAAC,OAASg1E,CAAAA,KAAAA,CAAAA,CACnB,GAAIA,KAAO,CAAA,CACT,IAAI,CAAC69J,MAAM,CAAC6xG,sBAAsB,CAAC,IAAI,EACzC,CAAO,KAAA,CACL,IAAI,CAAC7xG,MAAM,CAAC8xG,2BAA2B,CAAC,IAAI,EAC9C,CACA,MAAMP,UAAa,CAAA,IAAI,CAACC,aAAa,EAAA,CACrC,IAAI,IAAIvtV,EAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACwpO,OAAO,CAACzhP,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CACrD,MAAMkwO,MAAAA,CAAS,IAAI,CAACwR,OAAO,CAAC1hP,CAAAA,CAAE,CAC9BkwO,MAAOzoO,CAAAA,IAAI,CAAC,eAAA,CAAiB,KAC3B,IAAI,CAACk6O,oBAAoB,CAACzR,QAC5B,CACAA,CAAAA,CAAAA,MAAOr9N,CAAAA,OAAO,CAAGq9N,MAAOr8J,CAAAA,SAAQ,CAElC,IAAI,CAAC25Q,WAAW,CAACF,UAAAA,EACnB,CACAxmC,eAAkB,EAAA,CAChB,IAAI,CAAC59S,IAAI,CAAC,QAAA,CAAA,CACV,MAAMokV,UAAAA,CAAa,IAAI,CAACC,aAAa,EACrC,CAAA,IAAI,IAAIvtV,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC0hP,OAAO,CAACzhP,MAAM,CAAED,IAAI,CAC1C,MAAMkwO,MAAS,CAAA,IAAI,CAACwR,OAAO,CAAC1hP,CAAE,CAAA,CAC9B,GAAI,CAACkwO,MAAAA,CAAQ,SACb,IAAI,CAAC/mM,OAAO,CAAC+mM,MAAAA,CAAOs8G,YAAY,CAAC1rG,MAAM,EACzC,CACA,IAAI,CAAC0sG,WAAW,CAACF,UAAAA,EACnB,CACAK,uBAA0B,EAAA,CACxB,MAAMz1U,GAAAA,CAAM,IAAI,CAAC41U,iBAAiB,CAAC7tV,MAAM,CACzC,GAAI,CAACiY,GAAK,CAAA,OACV,IAAI,IAAIlY,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,MAAMkwO,MAAAA,CAAS,IAAI,CAAC49G,iBAAiB,CAAC9tV,CAAAA,CAAE,CACxC,IAAI,CAAC+tV,qBAAqB,CAAC79G,QAC7B,CACA,IAAI,CAAC49G,iBAAiB,CAAC7tV,MAAM,CAAG,CAChC,CAAA,IAAI,CAAC+tV,oBAAoB,CAAC,CAAG,CAAA,IAAI,CAACjtG,QAAQ,CAAC9gP,MAAM,EACnD,CACAguV,uBAA0B,EAAA,CACxB,IAAI,IAAIjuV,EAAI,CAAGkY,CAAAA,GAAAA,CAAM,IAAI,CAACwpO,OAAO,CAACzhP,MAAM,CAAED,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CACrD,MAAMkwO,MAAAA,CAAS,IAAI,CAACwR,OAAO,CAAC1hP,CAAAA,CAAE,CAC9B,IAAI,CAAC2hP,oBAAoB,CAACzR,QAC5B,CACF,CACAyR,oBAAqBzR,CAAAA,MAAM,CAAE,CAC3B,GAAIA,MAAkB68G,YAAAA,UAAAA,CAAY,CAChC78G,MAAOg9G,CAAAA,sBAAsB,GAC/B,CAAA,KAAO,CACL,MAAM5pV,IAAAA,CAAO4sO,MAAOs8G,CAAAA,YAAY,CAAC1rG,MAAM,CACvC,MAAM9mO,IAAAA,CAAO,IAAI,CAACk0U,iBAAiB,CAACnsV,GAAG,CAACuB,IACxC,CAAA,CAAA,GAAI,CAAC0W,IAAAA,CAAM,CACT,MACF,CACA,MAAM0mO,MAAAA,CAAS,IAAI,CAAC3E,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,EAAEd,SAAUt9O,CAAAA,IAAAA,CAAAA,CAClD8nV,yBAAyB,IAAI,CAACrvG,MAAM,CAAC/L,GAAG,CAAE0Q,MAAAA,CAAOp1L,UAAU,CAAEtxC,IAAMk2N,CAAAA,MAAAA,EACrE,CACF,CACAm8G,cAAcn8G,MAAM,CAAElqH,MAAM,CAAE1rG,GAAG,CAAE,CACjC41N,MAAM,CAAClqH,OAAO,CAAC1rG,GAAAA,EACjB,CACA6zU,aAAAA,EAAgB,CACd,MAAMzsG,OAAAA,CAAU,IAAI,CAACX,QAAQ,CAC7B,MAAMusG,UAAa,CAAA,IAAI,CAACC,aAAa,EAAA,CACrC,IAAI,IAAIvtV,EAAI,CAAGkY,CAAAA,GAAAA,CAAMwpO,OAAQzhP,CAAAA,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAChD,MAAMkwO,MAASwR,CAAAA,OAAO,CAAC1hP,CAAAA,CAAE,CACzB,GAAI,CAACkwO,MAAO0R,CAAAA,YAAY,EAAI1R,MAAOr9N,CAAAA,OAAO,CAAE,CAC1Cq9N,OAAO0R,YAAY,CAAG,IACtB,CAAA,GAAI1R,OAAO3jO,UAAU,CAAE,CACrB,IAAI,CAAC8/U,aAAa,CAACn8G,MAAQ47G,CAAAA,iBAAAA,EAC7B,CACF,CACF,CACA,IAAI,CAAC0B,WAAW,CAACF,UAAAA,EACnB,CACAc,iBAAAA,EAAoB,CAClB,IAAI,CAAC7qG,iBAAiB,GACxB,CACA2tF,SAAUrzN,CAAAA,EAAE,CAAE,CACZ,MAAMtzG,IAAO,CAAA,IAAI,CAAC8jV,WAAW,CAC7B,GAAI,CAAC9jV,IAAKtK,CAAAA,MAAM,CAAE,OAClB,MAAMqtV,UAAa,CAAA,IAAI,CAACC,aAAa,EAAA,CACrC,IAAIhjV,IAAAA,CAAKyF,SAAS,CAAG,CAAA,CAAGzF,IAAKyF,CAAAA,SAAS,CAAGzF,IAAKtK,CAAAA,MAAM,CAAEsK,IAAAA,CAAKyF,SAAS,EAAG,CAAA,CACrE,MAAMkgO,MAAAA,CAAS3lO,KAAK8E,KAAK,CAAC9E,IAAKyF,CAAAA,SAAS,CAAC,CACzC,GAAIkgO,MAAOr9N,CAAAA,OAAO,CAAE,CAClB,IAAI,CAACw5U,aAAa,CAACn8G,MAAQ87G,CAAAA,aAAAA,CAAenuO,EAC5C,EAAA,CACF,CACA,IAAI,CAAC2vO,WAAW,CAACF,YACnB,CACAp5B,aAAAA,CAAcr2M,EAAE,CAAE,CAChB,MAAMtzG,IAAO,CAAA,IAAI,CAAC+jV,eAAe,CACjC,GAAI,CAAC/jV,KAAKtK,MAAM,CAAE,OAClB,MAAMqtV,WAAa,IAAI,CAACC,aAAa,EAAA,CACrC,IAAIhjV,IAAKyF,CAAAA,SAAS,CAAG,CAAA,CAAGzF,KAAKyF,SAAS,CAAGzF,IAAKtK,CAAAA,MAAM,CAAEsK,IAAKyF,CAAAA,SAAS,EAAG,CAAA,CACrE,MAAMkgO,MAAS3lO,CAAAA,IAAAA,CAAK8E,KAAK,CAAC9E,KAAKyF,SAAS,CAAC,CACzC,GAAIkgO,OAAOr9N,OAAO,CAAE,CAClB,IAAI,CAACw5U,aAAa,CAACn8G,MAAQ+7G,CAAAA,kBAAAA,CAAoBpuO,IACjD,CACF,CACA,IAAI,CAAC2vO,WAAW,CAACF,UAAAA,EACnB,CACAiB,qBAAAA,CAAsB/sG,cAAc,CAAE37O,KAAK,CAAE2oV,aAAa,CAAE,CAC1D,GAAI3oV,KAAU,GAAA,CAAC,EAAG,CAChB,IAAI,CAACk7O,QAAQ,CAACjgP,IAAI,CAAC0gP,cAAAA,CACnBA,CAAAA,cAAeirG,CAAAA,gBAAgB,CAAG+B,aAAAA,CAClC,GAAIhtG,cAAepuM,CAAAA,MAAM,CAAE,CACzB,IAAI,CAACi7S,WAAW,CAACp+U,MAAM,CAACuxO,cAC1B,EAAA,CACA,GAAIA,cAAAA,CAAeitG,UAAU,CAAE,CAC7B,IAAI,CAACH,eAAe,CAACr+U,MAAM,CAACuxO,cAAAA,EAC9B,CACF,CAAO,KAAA,CACL,IAAI,CAACT,QAAQ,CAACj4O,MAAM,CAACjD,KAAAA,CAAO,EAAG27O,cAC/BA,CAAAA,CAAAA,cAAeirG,CAAAA,gBAAgB,CAAG5mV,KAClC,CAAA,IAAI,CAACmoV,oBAAoB,CAACnoV,KAAQ,CAAA,CAAA,CAAG2oV,aAAgB,CAAA,CAAA,CAAA,CACrD,GAAIhtG,cAAepuM,CAAAA,MAAM,CAAE,CACzB,IAAI,CAACi7S,WAAW,CAACt+U,MAAM,CAACyxO,cAC1B,EAAA,CACA,GAAIA,cAAAA,CAAeitG,UAAU,CAAE,CAC7B,IAAI,CAACH,eAAe,CAACv+U,MAAM,CAACyxO,gBAC9B,CACF,CACF,CACAusG,qBAAAA,CAAsBvsG,cAAc,CAAE,CACpC,MAAMl3O,GAAAA,CAAM,IAAI,CAACy2O,QAAQ,CAAC93O,OAAO,CAACu4O,cAClC,CAAA,CAAA,GAAIl3O,GAAQ,GAAA,CAAC,EAAG,OAAOA,GAAAA,CACvB,IAAI,CAACy2O,QAAQ,CAACj4O,MAAM,CAACwB,GAAAA,CAAK,GAC1B,GAAIk3O,cAAAA,CAAepuM,MAAM,CAAE,CACzB,IAAI,CAACi7S,WAAW,CAAChkV,MAAM,CAACm3O,cAAAA,EAC1B,CACA,GAAIA,eAAeitG,UAAU,CAAE,CAC7B,IAAI,CAACH,eAAe,CAACjkV,MAAM,CAACm3O,gBAC9B,CACA,OAAOl3O,GACT,CACA0jV,qBAAqBv7K,UAAU,CAAE+7K,aAAa,CAAE,CAC9C,IAAI,IAAIxuV,CAAIyyK,CAAAA,UAAAA,CAAYzyK,EAAIwuV,aAAexuV,CAAAA,CAAAA,EAAAA,CAAI,CAC7C,IAAI,CAAC+gP,QAAQ,CAAC/gP,CAAE,CAAA,CAACysV,gBAAgB,CAAGzsV,EACtC,CACF,CACA0uV,8BAA8B1yE,SAAS,CAAEsvE,aAAa,CAAE3wH,QAAQ,CAAEg0H,OAAO,CAAEC,aAAa,CAAElrG,gBAAgB,CAAE,CAC1G,GAAIs4B,UAAU3sO,KAAK,CAAE,CACnB,MAAMn3B,IAAMyiN,QAAS16N,CAAAA,MAAM,CAC3B,GAAI,CAACiY,GAAK,CAAA,CACR,MACF,CACA,MAAM22U,YAAel0H,CAAAA,QAAAA,CAAS95N,KAAK,EAAA,CACnC,IAAI,IAAIb,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,MAAMd,IAAAA,CAAO2vV,YAAY,CAAC7uV,CAAAA,CAAE,WAAYuiP,MAAAA,CAASssG,YAAY,CAAC7uV,CAAAA,CAAE,CAAC+iP,OAAO,GAAK8rG,YAAY,CAAC7uV,CAAE,CAAA,CAC5F,GAAI0jP,gBAAgB,CAACxkP,IAAK,CAAA,CAAE,CAC1B2vV,YAAY,CAAC7uV,CAAE,CAAA,CAAG2uV,OAAUjrG,CAAAA,gBAAgB,CAACxkP,IAAAA,CAAK,CAAC6jP,OAAO,EAAA,CAAKW,gBAAgB,CAACxkP,MAAK,CAEzF,CACA0vV,aAAa,CAACtD,aAAc,CAAA,CAAGuD,aACjC,CAAA,KAAO,CACL,GAAIl0H,QAAAA,YAAoB4nB,MAAQ,CAAA,CAC9B5nB,SAAWA,QAASooB,CAAAA,OAAO,GAC7B,CAAA,KAAO,GAAI,OAAOpoB,QAAAA,GAAa,QAAU,CAAA,CACvC,MACF,CACA,GAAI+oB,gBAAgB,CAAC/oB,SAAS,CAAE,CAC9Bi0H,aAAa,CAACtD,cAAc,CAAG5nG,gBAAgB,CAAC/oB,QAAAA,EAAS,CAE7D,CACF,CACAryN,GAAAA,CAAIy5O,UAAU,CAAE,CACd,GAAI,OAAOA,aAAe,QAAU,CAAA,CAClC,OAAO,CAAC,CAAC,IAAI,CAACV,aAAa,CAACU,WAAW,CAEzC,GAAI,CAACA,WAAY,OAAO,KAAA,CACxB,MAAMC,UAAAA,CAAaD,UACnB,CAAA,MAAMlB,UAAamB,CAAAA,UAAAA,CAAWlB,MAAM,CACpC,MAAMguG,UAAa,CAAA,IAAI,CAACztG,aAAa,CAACR,UAAW,CAAA,CACjD,MAAMW,cAAiBstG,CAAAA,UAAAA,EAAcA,UAAW5iV,CAAAA,QAAQ,CACxD,OAAOs1O,cAAAA,YAA0BQ,UACnC,CACAjgP,IAAIggP,UAAU,CAAE,CACd,GAAI,OAAOA,UAAe,GAAA,QAAA,CAAU,CAClC,MAAM/nO,KAAO,IAAI,CAACqnO,aAAa,CAACU,WAAW,CAC3C,OAAO/nO,IAAOA,CAAAA,IAAAA,CAAK9N,QAAQ,CAAG,IAChC,CACA,GAAI,CAAC61O,UAAY,CAAA,OAAO,IACxB,CAAA,MAAMC,WAAaD,UACnB,CAAA,MAAMlB,UAAamB,CAAAA,UAAAA,CAAWlB,MAAM,CACpC,MAAMguG,UAAa,CAAA,IAAI,CAACztG,aAAa,CAACR,UAAW,CAAA,CACjD,MAAMW,cAAiBstG,CAAAA,UAAAA,EAAcA,UAAW5iV,CAAAA,QAAQ,CACxD,OAAOs1O,cAAAA,YAA0BQ,UAAaR,CAAAA,cAAAA,CAAiB,IACjE,CACAriP,MAAO4iP,CAAAA,UAAU,CAAE/7O,IAAO,CAAA,EAAE,CAAE,CAC5B,MAAMxC,KAAAA,CAAO,IAAI,CACjB,IAAIw+O,UAAaD,CAAAA,UAAAA,CACjB,IAAIlB,UAAAA,CAAakB,WACjB,GAAI,OAAOC,UAAe,GAAA,QAAA,CAAU,CAClCA,UAAa,CAAA,IAAI,CAACjG,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAAC3/O,GAAG,CAACigP,UAAAA,EAC3C,CAAO,KAAA,GAAIA,WAAY,CAIrBA,IAAAA,WAAAA,CAHA,MAAM+sG,kBAAAA,CAAqBnC,cAAc5qG,UACzC,CAAA,CAAA,MAAMgtG,uBAA0B5B,CAAAA,kBAAAA,CAAmB2B,oBACnD,GAAI,EAAE/sG,UAAAA,CAAW3vH,SAAS,YAAY06N,UAAS,CAAM,EAAA,CAAC/qG,WAAWnB,UAAU,CAAA,CAC3EmB,CAAAA,WAAAA,CAAAA,YAAWlB,MAAXkB,GAAAA,WAAAA,CAAWlB,MAAWkB,CAAAA,UAAAA,CAAWnB,UAAU,EAAImuG,uBAAAA,CAAAA,CAC/CnuG,UAAamB,CAAAA,UAAAA,CAAWlB,OAAM,CAEhC,GAAIkB,UAAAA,CAAY,CACd,GAAI,CAAC,IAAI,CAACX,aAAa,CAACR,UAAAA,CAAW,EAAI,CAAC,IAAI,CAACQ,aAAa,CAACR,UAAAA,CAAW,CAAC30O,QAAQ,CAAE,CAC/E,MAAMs1O,eAAiB,IAAIQ,UAAAA,CAAW,CACpChS,GAAAA,CAAK,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CACpBppG,MAAQ,CAAA,IAAI,CAACA,MAAM,CACnB/zH,OAAS7M,CAAAA,IAAAA,CAAKqG,cAAc,CAAC,WAAarG,IAAK6M,CAAAA,OAAO,CAAG,IAAA,CACzDy4C,WAAYtlD,IAAKslD,CAAAA,UAAU,EAAI,EACjC,CACA,CAAA,CAAA,GAAItlD,IAAKm+I,CAAAA,UAAU,EAAI,OAAOn+I,IAAAA,CAAKm+I,UAAU,GAAK,SAAU,CAC1DtiJ,MAAAA,CAAOskH,MAAM,CAACq7H,eAAgBx7O,IAAKm+I,CAAAA,UAAU,EAC/C,CACA,GAAI,EAAEq9F,cAA0BurG,YAAAA,UAAS,GAAM/mV,IAAKslD,CAAAA,UAAU,CAAE,CAC9D,IAAI,CAAC4iS,iBAAiB,CAAC3lV,GAAG,CAACs4O,UAAAA,CAAY,CACrC,GAAG76O,KAAKslD,UACV,CACF,EAAA,CACA,MAAMpzC,GAAM,CAAA,IAAI,CAAC6oO,QAAQ,CAAC9gP,MAAM,CAChC,IAAI+I,GAAAA,CAAM,CAAC,CACX,CAAA,GAAI,OAAOhD,IAAAA,CAAKgD,GAAG,GAAK,QAAA,EAAYhD,IAAKgD,CAAAA,GAAG,GAAK,CAAC,CAAA,EAAKkP,GAAMlS,CAAAA,IAAAA,CAAKgD,GAAG,CAAE,CACrEA,GAAMhD,CAAAA,IAAAA,CAAKgD,IAAG,CAEhB,IAAI,CAACulV,qBAAqB,CAAC/sG,cAAAA,CAAgBx4O,GAAKkP,CAAAA,GAAAA,CAChD,CAAA,IAAI,CAACmpO,aAAa,CAACR,WAAW,CAAG,CAC/B30O,QAAUs1O,CAAAA,cAAAA,CACVytG,OAAQ,UACNzrV,CAAAA,KAAAA,CAAKopG,IAAI,CAACi0I,YACZ,CACF,CACA,CAAA,IAAI,CAACA,UAAW,CAAA,CAAGW,cACnB,CAAA,GAAI,CAACx7O,IAAAA,CAAKy7O,UAAU,CAAE,CACpB,IAAI,CAACE,oBAAoB,CAACH,gBAC5B,CACA,IAAI,CAACt4O,IAAI,CAAC,QAAU23O,CAAAA,UAAAA,CAAYW,cAChC,CAAA,CAAA,IAAI,CAACt4O,IAAI,CAAC,CAAC,OAAO,EAAE23O,UAAW,CAAA,CAAC,CAAEW,cAAAA,CAAAA,CAClC,IAAI,CAACzF,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAACr6O,EAAE,CAAC,CAAC,KAAK,EAAEw5O,UAAW,CAAA,CAAC,CAAE,IAAI,CAACQ,aAAa,CAACR,WAAW,CAACouG,MAAM,CACtF,CAAA,GAAI,CAACjpV,IAAKy7O,CAAAA,UAAU,CAAE,CACpB,GAAID,cAAe3uO,CAAAA,OAAO,EAAI,CAAC2uO,eAAeI,YAAY,CAAE,CAC1DJ,cAAAA,CAAeI,YAAY,CAAG,IAAA,CAC9B,GAAIJ,cAAAA,CAAej1O,UAAU,CAAE,CAC7B,IAAI,CAAC8/U,aAAa,CAAC7qG,cAAgBsqG,CAAAA,iBAAAA,EACrC,CACF,CACA,GAAItqG,cAAe3uO,CAAAA,OAAO,EAAI,CAAC2uO,cAAAA,CAAeK,gBAAgB,CAAE,CAC9DL,cAAeK,CAAAA,gBAAgB,CAAG,IAAA,CAClC,GAAIL,cAAeM,CAAAA,cAAc,CAAE,CACjC,IAAI,CAACuqG,aAAa,CAAC7qG,cAAAA,CAAgBuqG,wBACrC,CACF,CACF,CACA,OAAOvqG,cACT,CACF,CAAA,KAAO,CACL,IAAI,CAACH,aAAa,CAACR,UAAW,CAAA,CAAG,CAC/BS,QAAU,CAAA,IAAA,CACVt4O,GAAK,CAAA,IAAI,CAAC+3O,QAAQ,CAAC9gP,MACrB,EACF,CACA,OAAO,IACT,CACAkpC,QAAQ44M,UAAU,CAAE,CAClB,IAAIlB,WAAakB,UACjB,CAAA,IAAIC,UAAaD,CAAAA,UAAAA,CACjB,GAAI,OAAOC,UAAAA,GAAe,QAAU,CAAA,CAClCA,WAAa,IAAI,CAACjG,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAAC3/O,GAAG,CAACigP,UAC3C,EAAA,CAAA,KAAO,GAAIA,UAAAA,CAAY,CACrBnB,UAAamB,CAAAA,UAAAA,CAAWlB,OAC1B,CACA,MAAMguG,UAAAA,CAAa,IAAI,CAACztG,aAAa,CAACR,UAAAA,CAAW,CACjD,OAAO,IAAI,CAACQ,aAAa,CAACR,UAAAA,CAAW,CACrC,GAAI,CAACiuG,UAAY,CAAA,OAAO,MACxB,IAAI,CAACZ,iBAAiB,CAACrlV,MAAM,CAACg4O,UAAAA,CAAAA,CAC9B,MAAMW,cAAAA,CAAiBstG,WAAW5iV,QAAQ,CAC1C,GAAIs1O,cAAAA,EAAkB,CAACA,cAAe9jM,CAAAA,UAAU,CAAE,CAChD8jM,eAAe3uO,OAAO,CAAG,KACzB2uO,CAAAA,eAAe9jM,UAAU,CAAG,IAC5B,CAAA,GAAI,CAAC,IAAI,CAAC+vS,wBAAwB,CAAE,CAClC,MAAMzkV,GAAAA,CAAM,IAAI,CAAC+kV,qBAAqB,CAACvsG,cAAAA,CAAAA,CACvC,GAAIx4O,GAAAA,EAAO,CAAG,CAAA,CACZ,IAAI,CAACglV,oBAAoB,CAAChlV,GAAAA,CAAK,IAAI,CAAC+3O,QAAQ,CAAC9gP,MAAM,EACrD,CACF,MAAO,CACL,IAAI,CAAC6tV,iBAAiB,CAAChtV,IAAI,CAAC0gP,cAC9B,EAAA,CACF,CACA,IAAI,CAACzF,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAACz6O,GAAG,CAAC,CAAC,KAAK,EAAE45O,UAAAA,CAAW,CAAC,CAAEiuG,UAAAA,CAAWG,MAAM,CACnE,QAAO,IAAI,CAACpuG,UAAW,CAAA,CACvB,IAAI,CAAC33O,IAAI,CAAC,SAAA,CAAW23O,WAAYW,cAAkB,EAAA,IAAA,CAAA,CACnD,IAAI,CAACt4O,IAAI,CAAC,CAAC,QAAQ,EAAE23O,WAAW,CAAC,CAAEW,cAAkB,EAAA,IAAA,CAAA,CACrD,GAAIA,cAAgB,CAAA,CAClBA,cAAet4O,CAAAA,IAAI,CAAC,SACtB,EAAA,CACA,OAAO,IACT,CACA0jG,IAAKm1I,CAAAA,UAAU,CAAE,CACf,IAAIlB,UAAakB,CAAAA,UAAAA,CACjB,IAAIC,UAAAA,CAAaD,WACjB,GAAI,OAAOC,UAAe,GAAA,QAAA,CAAU,CAClCA,UAAa,CAAA,IAAI,CAACjG,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAAC3/O,GAAG,CAACigP,UAAAA,EAC3C,CAAO,KAAA,GAAIA,WAAY,CACrBnB,UAAAA,CAAamB,UAAWlB,CAAAA,OAAM,CAEhC,MAAMzsG,GAAM,CAAA,IAAI,CAACgtG,aAAa,CAACR,UAAW,CAAA,CAC1C,GAAI,CAACxsG,GAAAA,EAAO,CAACA,GAAAA,CAAInoI,QAAQ,CAAE,OAAO,KAClC,CAAA,MAAMgjV,kBAAoB76M,GAAInoI,CAAAA,QAAQ,CACtC,MAAMlD,IAAM,IAAI,CAAC+3O,QAAQ,CAAC93O,OAAO,CAACimV,iBAAAA,CAAAA,CAClC,MAAM1tG,cAAAA,CAAiB,IAAIQ,UAAW,CAAA,CACpChS,GAAK,CAAA,IAAI,CAAC+L,MAAM,CAAC/L,GAAG,CACpBppG,MAAQ,CAAA,IAAI,CAACA,MAAM,CACnB/zH,OAASq8U,CAAAA,iBAAAA,CAAkBr8U,OAAO,CAClCy4C,WAAY4jS,iBAAkBvD,CAAAA,YAAY,CAC5C,CAAA,CACA,GAAI,CAACnqG,cAAAA,CAAe50I,IAAI,CAAE,CACxB,OAAO,KACT,CACA,IAAI,CAAC+0I,oBAAoB,CAACH,cAC1B,CAAA,CAAA,IAAI,CAACT,QAAQ,CAAC/3O,GAAAA,CAAI,CAAGw4O,cACrB,CAAA,IAAI,CAACH,aAAa,CAACR,UAAAA,CAAW,CAAC30O,QAAQ,CAAGs1O,cAC1C,CAAA,IAAI,CAACX,WAAW,CAAGW,cACnBA,CAAAA,cAAAA,CAAeirG,gBAAgB,CAAGzjV,GAAAA,CAClC,GAAIkmV,iBAAAA,CAAkB97S,MAAM,CAAE,CAC5B,IAAI,CAACi7S,WAAW,CAAChkV,MAAM,CAAC6kV,iBAAAA,EAC1B,CACA,GAAIA,iBAAAA,CAAkBT,UAAU,CAAE,CAChC,IAAI,CAACH,eAAe,CAACjkV,MAAM,CAAC6kV,iBAAAA,EAC9B,CACA,GAAI1tG,eAAepuM,MAAM,CAAE,CACzB,IAAI,CAACi7S,WAAW,CAACt+U,MAAM,CAACyxO,gBAC1B,CACA,GAAIA,cAAeitG,CAAAA,UAAU,CAAE,CAC7B,IAAI,CAACH,eAAe,CAACv+U,MAAM,CAACyxO,cAC9B,EAAA,CACA,IAAI,CAAC6qG,aAAa,CAAC7qG,cAAAA,CAAgB0qG,YAAagD,iBAChD,CAAA,CAAA,IAAI,CAAChmV,IAAI,CAAC,MAAQ23O,CAAAA,UAAAA,CAAYW,cAC9B,CAAA,CAAA,IAAI,CAACt4O,IAAI,CAAC,CAAC,KAAK,EAAE23O,UAAW,CAAA,CAAC,CAAEW,cAAAA,CAAAA,CAChC,OAAO,IACT,CACAoC,0CAA2CurG,CAAAA,kBAAkB,CAAEzrG,gBAAgB,CAAE,CAC/E,MAAM0rG,mBAAqB,IAAI,CAACxoN,MAAM,CAACspG,MAAM,CAC7C,IAAI,MAAM2Q,UAAAA,IAAcsuG,mBAAmB9tG,aAAa,CAAC,CACvD,MAAMW,UAAa,CAAA,IAAI,CAACjG,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAAC3/O,GAAG,CAAC8+O,UAAAA,CAAAA,CAC/C,GAAI,CAACmB,WAAY,CACf,QACF,CACA,MAAM9R,OAASi/G,kBAAmB9tG,CAAAA,aAAa,CAACR,UAAAA,CAAW,CAC3D,GAAI,CAAC3Q,MAAU,EAAA,CAACA,OAAOhkO,QAAQ,CAAE,CAC/B,QACF,CACA,MAAMmjV,gBAAAA,CAAmBD,kBAAkB,CAACvuG,WAAW,CAACmsG,eAAe,EAAIoC,kBAAAA,CAAmBlB,iBAAiB,CAACnsV,GAAG,CAAC8+O,UAAAA,CAAAA,CACpH,MAAM+tG,aAAgBQ,CAAAA,kBAAkB,CAACvuG,UAAAA,CAAW,CAAC8qG,YAAY,CACjE,GAAI,CAAC0D,kBAAoB,CAACT,aAAAA,CAAe,CACvC,QACF,CACA,MAAMD,OAAAA,CAAU,CAAC,CAACU,iBAClB,MAAMC,aAAAA,CAAgBp/G,MAAOhkO,CAAAA,QAAQ,CAACy/U,YAAY,EAAIyD,kBAAmBlB,CAAAA,iBAAiB,CAACnsV,GAAG,CAAC8+O,UAAAA,CAAAA,CAC/F,IAAI,MAAMyqG,aAAAA,IAAiBgE,aAAc,CAAA,CACvC,GAAI,CAACA,aAAa,CAAChE,aAAAA,CAAc,CAAE,CACjC,QACF,CACA,MAAMtvE,UAAYh6B,UAAW12L,CAAAA,UAAU,EAAEvpD,GAAAA,CAAIupV,gBAAkB,IAAI,CAACvvG,MAAM,CAAC/L,GAAG,CAAC0R,OAAO,CAACd,SAAS,CAACC,UAAav1L,CAAAA,EAAAA,UAAAA,GAAaggS,aAAAA,CAAc,CACzI,GAAI,CAACtvE,SAAW,CAAA,CACd,QACF,CACA,GAAIA,SAAUvkQ,CAAAA,IAAI,GAAK,QAAU,CAAA,CAC/B,IAAI,CAACi3U,6BAA6B,CAAC1yE,SAAAA,CAAWsvE,aAAegE,CAAAA,aAAa,CAAChE,aAAc,CAAA,CAAEqD,OAASU,CAAAA,gBAAAA,EAAoBT,cAAelrG,gBACzI,EAAA,CAAA,KAAO,GAAIs4B,SAAAA,CAAUvkQ,IAAI,GAAK,MAAA,EAAUzY,KAAMC,CAAAA,OAAO,CAAC+8Q,SAAUt7B,CAAAA,MAAM,CAAG,CAAA,CACvE,MAAM/lB,QAAAA,CAAW20H,aAAa,CAAChE,cAAc,CAC7C,MAAMiE,YAAeF,CAAAA,gBAAAA,CAAmBA,gBAAgB,CAAC/D,aAAAA,CAAc,CAAGsD,aAAa,CAACtD,aAAc,CAAA,CACtG,IAAI,IAAItrV,EAAI,CAAGA,CAAAA,CAAAA,CAAIg8Q,SAAUt7B,CAAAA,MAAM,CAACzgP,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9C,MAAMgrV,KAAQhvE,CAAAA,SAAAA,CAAUt7B,MAAM,CAAC1gP,EAAE,CACjC,GAAIgrV,KAAMvzU,CAAAA,IAAI,GAAK,QAAU,CAAA,CAC3B,QACF,CACA,GAAIukQ,SAAU3sO,CAAAA,KAAK,CAAE,CACnB,IAAI,IAAIk3C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIo0I,SAAS16N,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACtC,IAAI,CAACmoQ,6BAA6B,CAAC1D,KAAAA,CAAOA,MAAM1nV,IAAI,CAAEq3N,QAAQ,CAACp0I,EAAE,CAACykQ,KAAAA,CAAM1nV,IAAI,CAAC,CAAEqrV,OAASY,CAAAA,YAAY,CAAChpQ,CAAAA,CAAE,CAAEm9J,gBAC3G,EAAA,CACF,CAAO,KAAA,CACL,IAAI,CAACgrG,6BAA6B,CAAC1D,KAAAA,CAAOA,MAAM1nV,IAAI,CAAEq3N,QAAQ,CAACqwH,MAAM1nV,IAAI,CAAC,CAAEqrV,OAAAA,CAASY,aAAc7rG,gBACrG,EAAA,CACF,CACF,CACF,CACF,CACF,CACA8rG,IAAKztG,CAAAA,UAAU,CAAE/4O,GAAG,CAAE,CACpB,MAAMkP,IAAM,IAAI,CAAC6oO,QAAQ,CAAC9gP,MAAM,CAChC,GAAI+I,GAAOkP,EAAAA,GAAAA,EAAOlP,IAAM,CAAG,CAAA,CACzB,OAAO,KACT,CACA,IAAIg5O,UAAAA,CAAaD,UACjB,CAAA,IAAIlB,WAAakB,UACjB,CAAA,GAAI,OAAOlB,UAAAA,GAAe,SAAU,CAClCA,UAAAA,CAAakB,UAAWjB,CAAAA,OAAM,CACzB,KAAA,CACLkB,UAAa,CAAA,KACf,CACA,MAAM8sG,UAAAA,CAAa,IAAI,CAACztG,aAAa,CAACR,UAAAA,CAAW,CACjD,GAAI,CAACiuG,UAAAA,EAAc,CAACA,UAAAA,CAAW5iV,QAAQ,CAAE,CACvC,OAAO,KACT,CACA,MAAMs1O,cAAAA,CAAiBstG,UAAW5iV,CAAAA,QAAQ,CAC1C,GAAI81O,UAAAA,EAAc,EAAER,0BAA0BQ,UAAS,CAAA,CAAI,CACzD,OAAO,KACT,CACA,MAAMytG,MAAS,CAAA,IAAI,CAAC1uG,QAAQ,CAAC93O,OAAO,CAACu4O,gBACrC,GAAIiuG,MAAAA,GAAW,CAAC,CAAA,EAAKA,SAAWzmV,GAAK,CAAA,CACnC,OAAO,KACT,CACA,IAAI,CAAC+3O,QAAQ,CAACj4O,MAAM,CAACE,GAAAA,CAAK,CAAG,CAAA,IAAI,CAAC+3O,QAAQ,CAACj4O,MAAM,CAAC2mV,OAAQ,CAAE,CAAA,CAAC,CAAE,CAAA,CAAA,CAC/D,IAAI,CAACzB,oBAAoB,CAAC,CAAA,CAAG91U,KAC7B,IAAI,CAACm2U,WAAW,CAACn+U,IAAI,EACrB,CAAA,IAAI,CAACo+U,eAAe,CAACp+U,IAAI,EAAA,CACzB,IAAI,CAAChH,IAAI,CAAC,MAAA,CAAQ23O,UAAYW,CAAAA,cAAAA,CAAgBx4O,IAAKymV,MACnD,CAAA,CAAA,IAAI,CAACvmV,IAAI,CAAC,CAAC,KAAK,EAAE23O,UAAAA,CAAW,CAAC,CAAEW,cAAAA,CAAgBx4O,GAAKymV,CAAAA,MAAAA,CAAAA,CACrD,OAAO,IACT,CA7gBA1nV,WAAYg0O,CAAAA,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAQn1G,CAAAA,MAAAA,CAAAA,CAAS,IAAI,CAACsnN,iBAAiB,CAAG,IAAI9lV,GACpD,CAAA,IAAI,CAAC24O,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACstG,WAAW,CAAG,IAAIp/U,eAAAA,CAAgB,CACrCa,MAAAA,CAAQ,kBACV,CACA,CAAA,CAAA,IAAI,CAACw+U,eAAe,CAAG,IAAIr/U,eAAgB,CAAA,CACzCa,OAAQ,kBACV,CAAA,CACA,CAAA,IAAI,CAACuxO,aAAa,CAAG,EACrB,CAAA,IAAI,CAACysG,iBAAiB,CAAG,EACzB,CAAA,IAAI,CAACpwS,UAAU,CAAG,KAClB,CAAA,IAAI,CAAC6jM,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC6jG,SAAS,CAAG,IACjB,CAAA,IAAI,CAACvxQ,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACuvK,aAAa,CAAG,KACrB,CAAA,IAAI,CAACqqG,wBAAwB,CAAG,KAChC,CAAA,IAAI,CAACiC,eAAe,CAAG,CAAC,EACxB,IAAI,CAACroV,EAAE,CAAC,cAAe,IAAI,CAACw/S,aAAa,CAAE,IAAI,EACjD,CA2fF,CAviBMwmC,gBAEGsC,YAAY,CAAG,QAGpB,CALEtC,gBAKGnpG,aAAa,CAAG,SAGrB,CAREmpG,gBAQGhI,YAAY,CAAG,QAGpB,CAXEgI,gBAWG/H,aAAa,CAAG,SAGrB,CAdE+H,gBAcGl8U,YAAY,CAAG,QAGpB,CAjBEk8U,gBAiBG9H,WAAW,CAAG,OAGnB,CApBE8H,gBAoBGuC,UAAU,CAAG,MAGlB,CAvBEvC,gBAuBGj2G,WAAW,CAAG,OAkhBvB,CAAA,MAAMy4G,oBACJ9nV,WAAa,EAAA,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAMi9U,4BAA+B,CAAA,yBAAA,CACrC,MAAMC,iBAAAA,CAAoB,gBAC1B,MAAMC,sBAAAA,CAAyB,mBAC/B,CAAA,MAAMC,cAAgB,WACtB,CAAA,MAAMC,kBAAqB,CAAA,eAAA,CAC3B,IAAIC,qBAAwB,CAAA,CAC5B,CAAMC,MAAAA,qBAAAA,SAA8BjiF,gBAmBlCI,uBAAwBntB,CAAAA,SAAS,CAAEpnO,IAAI,CAAE,CACvConO,SAAAA,CAAUsuG,eAAe,CAAGS,wBAC5B,IAAI,CAAClvG,WAAW,CAAChxO,MAAM,CAACmxO,SAAAA,CAAAA,CACxB,GAAI+uG,qBAAAA,CAAwBrmU,OAAOumU,gBAAgB,CAAE,CACnD,IAAI,CAACrC,oBAAoB,GAC3B,CACA5sG,UAAUvuO,OAAO,CAAGmH,IAAK3N,CAAAA,cAAc,CAAC,SAAa,CAAA,CAAA,CAAC,CAAC2N,IAAAA,CAAKnH,OAAO,CAAG,IAAA,CACtE,GAAIuuO,SAAAA,CAAUvuO,OAAO,EAAIuuO,SAAAA,CAAUx6G,MAAM,CAAC/zH,OAAO,CAAE,CACjD,IAAI,CAACy9U,kBAAkB,CAACrgV,MAAM,CAACmxO,SAAAA,EACjC,CACA,GAAIpnO,IAAAA,CAAK3N,cAAc,CAAC,UAAY2N,IAAK3N,CAAAA,cAAc,CAAC,SAAA,CAAA,CAAY,CAClE+0O,SAAUG,CAAAA,YAAY,CAAGvnO,IAAAA,CAAK0nO,OAAO,CACrC,IAAI,IAAI1hP,CAAAA,CAAI,EAAGA,CAAIga,CAAAA,IAAAA,CAAK6pK,KAAK,CAAC5jL,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxCohP,SAAAA,CAAUjiP,MAAM,CAAC6a,IAAAA,CAAK6pK,KAAK,CAAC7jL,EAAE,CAAE,CAC9B6S,OAASmH,CAAAA,IAAAA,CAAK0nO,OAAO,CAAC1nO,IAAAA,CAAK6pK,KAAK,CAAC7jL,CAAE,CAAA,CAAC,CAAC6S,OAAO,CAC5Cy4C,UAAYtxC,CAAAA,IAAAA,CAAK0nO,OAAO,CAAC1nO,KAAK6pK,KAAK,CAAC7jL,CAAE,CAAA,CAAC,CAACsrD,UAAU,CAClDm2L,UAAY,CAAA,IAAI,CAACA,UACnB,CACF,EAAA,CACF,CACF,CACAqC,cAAAA,CAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMuuK,KAAAA,CAAQ,EAAE,CAChB,MAAM69D,OAAU,CAAA,GAChB,IAAI,IAAI1hP,CAAI,CAAA,CAAA,CAAGA,EAAI4mI,MAAOspG,CAAAA,MAAM,CAAC6Q,QAAQ,CAAC9gP,MAAM,CAAED,CAAI,EAAA,CAAA,CACpD,MAAMwhP,cAAiB56G,CAAAA,MAAAA,CAAOspG,MAAM,CAAC6Q,QAAQ,CAAC/gP,CAAAA,CAAE,CAChD,MAAM6gP,WAAaW,cAAegrG,CAAAA,YAAY,CAAC1rG,MAAM,CACrDj9D,KAAM/iL,CAAAA,IAAI,CAAC+/O,UAAAA,CAAAA,CACX,MAAMv1L,UAAas7E,CAAAA,MAAAA,CAAOspG,MAAM,CAACg+G,iBAAiB,EAAEnsV,GAAI8+O,CAAAA,UAAAA,CAAAA,EAAe,EACvE,CAAA,IAAI,MAAMh5O,GAAAA,IAAO25O,eAAemqG,YAAY,CAAC,CAC3CrgS,UAAU,CAACzjD,GAAI,CAAA,CAAG25O,cAAemqG,CAAAA,YAAY,CAAC9jV,GAAI,EACpD,CACA65O,OAAO,CAACb,UAAW,CAAA,CAAG,CACpBhuO,OAAAA,CAAS2uO,eAAe3tK,QAAQ,CAChCvoB,UAAYA,CAAAA,UACd,EACF,CACA,IAAI,MAAMzjD,GAAAA,IAAO++H,OAAOspG,MAAM,CAACmR,aAAa,CAAC,CAC3C,GAAIx5O,GAAAA,CAAIy5O,QAAQ,CAAE,CAChBz9D,KAAM/6K,CAAAA,MAAM,CAACjB,GAAAA,CAAImB,GAAG,CAAE,CAAA,CAAGnB,GAC3B,EAAA,CACF,CACA,MAAMmS,IAAAA,CAAO,CACXnH,OAAAA,CAAS+zH,OAAOspG,MAAM,CAACr9N,OAAO,CAC9BgxK,MAAOA,KACP69D,CAAAA,OAAAA,CAASA,OACX,CAAA,CACA,OAAO,IAAI,CAACc,YAAY,CAACltO,MAAO0E,IAClC,CAAA,CACAg0U,oBAAuB,EAAA,CACrBmC,sBAAwB,CACxB,CAAA,IAAI,IAAInwV,CAAAA,CAAI,EAAGkY,GAAM,CAAA,IAAI,CAAC+oO,WAAW,CAAChhP,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CACzD,IAAI,CAACihP,WAAW,CAAC5xO,KAAK,CAACrP,CAAE,CAAA,CAAC0vV,eAAe,CAAGS,qBAAAA,GAC9C,CACF,CACAI,qBAAqBz2S,UAAU,CAAEx2C,IAAI,CAAEu6G,EAAE,CAAE,CACzC,IAAI/jE,UAAAA,CAAW9pC,SAAS,CAAG,CAAA,CAAG8pC,UAAW9pC,CAAAA,SAAS,CAAG8pC,UAAW75C,CAAAA,MAAM,CAAE65C,UAAAA,CAAW9pC,SAAS,EAAG,CAAA,CAC7F8pC,UAAWzqC,CAAAA,KAAK,CAACyqC,UAAW9pC,CAAAA,SAAS,CAAC,CAAC1M,KAAK,CAACu6G,EAAAA,EAC/C,CACF,CACAswO,eAAgB,CACd,IAAI,CAAC1sG,UAAU,CAAG,KAClB,CAAA,IAAI,CAAC8uG,oBAAoB,CAAC,IAAI,CAACtvG,WAAW,CAAE6uG,4BAC5C,CAAA,CAAA,IAAI,CAACS,oBAAoB,CAAC,IAAI,CAACD,kBAAkB,CAAEP,mBACrD,CACA3B,iBAAAA,EAAoB,CAClB,IAAI,CAACmC,oBAAoB,CAAC,IAAI,CAACD,kBAAkB,CAAEN,sBAAAA,EACrD,CACA9e,SAAAA,CAAUrzN,EAAE,CAAE,CACZ,IAAI,CAAC0yO,oBAAoB,CAAC,IAAI,CAACD,kBAAkB,CAAEL,aAAepyO,CAAAA,EAAAA,EACpE,CACAq2M,aAAAA,CAAcr2M,EAAE,CAAE,CAChB,IAAI,CAAC0yO,oBAAoB,CAAC,IAAI,CAACD,kBAAkB,CAAEJ,kBAAoBryO,CAAAA,EAAAA,EACzE,CACA+vO,sBAAAA,CAAuBxsG,SAAS,CAAE,CAChC,IAAI,CAACkvG,kBAAkB,CAACvgV,MAAM,CAACqxO,SAAAA,EACjC,CACAysG,2BAA4BzsG,CAAAA,SAAS,CAAE,CACrC,IAAI,CAACkvG,kBAAkB,CAACjmV,MAAM,CAAC+2O,SACjC,EAAA,CACA0lE,eAAgBlgL,CAAAA,MAAM,CAAEw6G,SAAS,CAAE,CACjC,MAAMp4O,IAAM,IAAI,CAACi4O,WAAW,CAAC5xO,KAAK,CAACpG,OAAO,CAACm4O,SAAAA,CAAAA,CAC3C,GAAIp4O,GAAO,EAAA,CAAA,CAAG,CACZo4O,SAAAA,CAAU0lE,eAAe,GAC3B,CACA,IAAI,CAAC+mC,2BAA2B,CAACzsG,SAAAA,CAAAA,CACjC,IAAI,CAACH,WAAW,CAAC52O,MAAM,CAAC+2O,SAAAA,EAC1B,CACAj4M,OAAU,EAAA,CACR,KAAK,CAACA,UACN,IAAI,CAAC6mM,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,YAAA,CAAc,IAAI,CAACknV,aAAa,CAAE,IAAI,EAC3D,IAAI,CAACn+G,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,gBAAA,CAAkB,IAAI,CAACmnV,iBAAiB,CAAE,IAAI,EACnE,IAAI,CAACp+G,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,SAAU,IAAI,CAACiqU,SAAS,CAAE,IAAI,CACnD,CAAA,IAAI,CAAClhG,GAAG,CAACgR,OAAO,CAAC/5O,GAAG,CAAC,aAAc,IAAI,CAACitT,aAAa,CAAE,IAAI,EAC7D,CAhHAnsT,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAGi/E,eACrB,CAAA,IAAI,CAAC/+E,QAAQ,CAAGuhF,mBAChB,CAAA,IAAI,CAAC5uG,WAAW,CAAG,IAAIhyO,eAAAA,CAAgB,CACrCa,MAAQ,CAAA,iBACV,CACA,CAAA,CAAA,IAAI,CAACwgV,kBAAkB,CAAG,IAAIrhV,gBAAgB,CAC5Ca,MAAAA,CAAQ,iBACV,CAAA,CACA,CAAA,IAAI,CAAC2xO,UAAU,CAAG,KAClB,IAAI,CAACp6O,EAAE,CAAC,eAAgB,IAAI,CAACy/S,eAAe,CAAE,IAAI,CAClD,CAAA,IAAI,CAAC92E,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,aAAc,IAAI,CAAC8mV,aAAa,CAAE,IAAI,CAC1D,CAAA,IAAI,CAACn+G,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,iBAAkB,IAAI,CAAC+mV,iBAAiB,CAAE,IAAI,CAClE,CAAA,IAAI,CAACp+G,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,SAAU,IAAI,CAAC6pU,SAAS,CAAE,IAAI,CAClD,CAAA,IAAI,CAAClhG,GAAG,CAACgR,OAAO,CAAC35O,EAAE,CAAC,aAAc,IAAI,CAAC6sT,aAAa,CAAE,IAAI,EAC5D,CAgGF,CAEA,IAAIs8B,0BAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyDjC,CAAC,CAED,IAAIC,yBAAAA,CAA4B,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4DjC,CAEA,OAAMC,qBAQJvnT,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC2I,OAAO,EAAE3I,OAAAA,EACd,CAAA,IAAI,CAAC2I,OAAO,CAAG,IACf,CAAA,IAAI,CAACmf,EAAE,EAAE9nB,OACT,EAAA,CAAA,IAAI,CAAC8nB,EAAE,CAAG,IACV,CAAA,IAAI,CAAC0/R,oBAAoB,EAAExnT,OAAAA,EAC3B,CAAA,IAAI,CAACwnT,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAAC/yS,MAAM,CAAG,KAChB,CACAgzS,SAAY,EAAA,CACV,GAAI,CAAC,IAAI,CAAChzS,MAAM,CAAE,CAChB,IAAI,CAACA,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CAClDk4F,UAAY,CAAA,uBAAA,CACZ72E,UAAY,CAAA,CACVwlJ,SAAWhzK,CAAAA,iBACb,EACAukG,WAAa,CAAA,QAAA,CACbK,aAAc8tN,yBACdluN,CAAAA,YAAAA,CAAcmuN,0BACdjkR,mBAAqB,CAAA,CACnB,MACD,CACH,CACF,EAAA,CACA,OAAO,IAAI,CAAC5uB,MAAM,CAEpBwU,cAAc9uD,IAAI,CAAEwC,MAAM,CAAE6f,KAAK,CAAEC,MAAM,CAAE,CACzC,OAAO,IAAI+lB,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CAC9B3mC,IAAAA,CAAMA,KACNqiB,KAAOA,CAAAA,KAAAA,CACPC,OAAQA,MACR9f,CAAAA,MAAAA,CAAQA,OACR2lC,OAAS,CAAA,KAAA,CACTD,OAAS,CAAA,KAAA,CACTkC,SAAWzW,CAAAA,cAAAA,CACX4W,UAAW5W,cACX8W,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBACZ,EACF,CACAif,MAAAA,CAAOy9S,SAAS,CAAEC,mBAAmB,CAAE,CACrC,MAAMj5Q,cAAAA,CAAiB,IAAI,CAAC5tC,MAAM,CAAC4tC,cAAc,CACjD,IAAIqvL,YAAAA,CAAe3nQ,IAAK0V,CAAAA,IAAI,CAAC1V,IAAKud,CAAAA,IAAI,CAACg0U,mBACvC5pF,CAAAA,CAAAA,CAAAA,YAAAA,CAAe3nQ,KAAKmU,GAAG,CAACwzP,aAAcrvL,cACtC,CAAA,CAAA,MAAMsvL,cAAgB5nQ,IAAK0V,CAAAA,IAAI,CAAC67U,mBAAsB5pF,CAAAA,YAAAA,CACtD,CAAA,IAAI,CAACp1N,OAAO,CAAG,IAAI,CAACsgB,aAAa,CAAC,kBAAA,CAAoB53B,iBAAkB0sO,YAAcC,CAAAA,aAAAA,CACtF,CAAA,IAAI,CAACl2M,EAAE,CAAG,IAAI1L,YAAAA,CAAa,CACzBM,WAAa,CAAA,IAAI,CAAC/T,OAAO,CACzB9G,MAAO,KACT,CAAA,CAAA,CACA,MAAM+lT,YAAAA,CAAeF,SAAU5wV,CAAAA,MAAM,CAAG,CACxC,CAAA,MAAM+wV,gBAAkBzxV,IAAK0V,CAAAA,IAAI,CAAC1V,IAAKud,CAAAA,IAAI,CAACi0U,YAC5C,CAAA,CAAA,CAAA,IAAI,CAACJ,oBAAoB,CAAG,IAAI,CAACv+R,aAAa,CAAC,eAAA,CAAiBt3B,iBAAmBk2T,CAAAA,eAAAA,CAAiBA,eACpG,CAAA,CAAA,MAAMC,cAAgB,IAAI,CAACN,oBAAoB,CAACvgT,IAAI,GACpD,IAAI8gT,UAAAA,CAAa,CACjB,CAAA,IAAI,IAAIlxV,CAAAA,CAAI,EAAGA,CAAI+wV,CAAAA,YAAAA,CAAc/wV,IAAI,CACnC,MAAMyxB,MAAQo/T,SAAS,CAAC7wV,CAAI,CAAA,CAAA,CAAE,CAC9B,MAAM0F,IAAMmrV,SAAS,CAAC7wV,EAAI,CAAI,CAAA,CAAA,CAAE,CAChC,MAAMmxV,YAAAA,CAAezrV,IAAM+rB,KAC3By/T,CAAAA,UAAAA,EAAcC,YACdF,CAAAA,aAAa,CAACjxV,CAAI,CAAA,CAAA,CAAE,CAAGyxB,KACvBw/T,CAAAA,aAAa,CAACjxV,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGkxV,WAC7B,CACA,IAAI,CAACP,oBAAoB,CAACv/S,MAAM,EAChC,CAAA,MAAM7pC,KAAQ,CAAA,IAAI,CAAC0iC,MAAM,CAAC1iC,KAAK,CAC/BA,KAAAA,CAAM8iC,OAAO,CAAC,mBAAA,CAAA,CAAqBsN,QAAQ,CAAC,IAAI,CAACg5S,oBAAoB,CACrEppV,CAAAA,KAAAA,CAAM8iC,OAAO,CAAC,eAAA,CAAA,CAAiBsN,QAAQ,CAACo5S,YAAAA,CAAAA,CACxCxpV,MAAM8iC,OAAO,CAAC,iBAAiBsN,QAAQ,CAACuvN,cACxC3/P,KAAM8iC,CAAAA,OAAO,CAAC,eAAiBsN,CAAAA,CAAAA,QAAQ,CAACm5S,mBAAAA,CAAAA,CACxC,IAAI,CAAC7mT,MAAM,CAACyV,WAAW,CAAC7oB,aACxB,CAAA,CAAA,IAAI,CAACoT,MAAM,CAACsV,aAAa,CAACxK,UAAWoB,CAAAA,OAAO,EAC5C,IAAI,CAAClM,MAAM,CAACwV,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,CAC5CqtF,CAAAA,kBAAAA,CAAmB,IAAI,CAACv6F,MAAM,CAAE,IAAI,CAACgnB,EAAE,CAAE,IAAI,CAAC2/R,SAAS,IACvD,OAAOE,mBACT,CAjFA/oV,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAAC6H,OAAO,CAAG,IACf,CAAA,IAAI,CAACmf,EAAE,CAAG,IACV,CAAA,IAAI,CAAC0/R,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAAC/yS,MAAM,CAAG,IACd,CAAA,IAAI,CAAC3T,MAAM,CAAGA,OAChB,CA4EF,CAEA,MAAMmnT,IAAO,CAAA,EAAE,CACTC,MAAAA,UAAAA,CAmBJloT,SAAU,CACR,IAAI,CAAC0nT,SAAS,CAAC5wV,MAAM,CAAG,CACxB,CAAA,IAAI,CAACqxV,eAAe,EAAEnoT,OAAAA,GACxB,CACAooT,QAAS9/T,CAAAA,KAAK,CAAEuuB,KAAK,CAAEwxS,WAAW,CAAEC,YAAY,CAAE,CAChD,IAAI,CAACC,SAAS,CAAGjgU,KACjB,CAAA,IAAI,CAACkgU,SAAS,CAAG3xS,KACjB,CAAA,IAAI,CAAC6rQ,OAAO,CAAG2lC,WAAcxxS,CAAAA,KAAAA,CAAQyxS,YACrC,CAAA,IAAI,CAACr3P,QAAQ,CAAC7xF,GAAG,CAAC,EAAGkpB,KAAO+/T,CAAAA,WAAAA,CAAaxxS,OAC3C,CACA4xS,eAAAA,CAAgBf,SAAS,CAAE,CACzB,MAAMtpS,QAAW,CAAA,IAAI,CAACA,QACtB,CAAA,IAAI,CAACspS,SAAS,CAAC5wV,MAAM,CAAG,CACxB,CAAA,IAAI,CAACwxV,YAAY,CAAGlqS,SAAS+5K,SAAS,CACtC,GAAIuvH,SAAAA,CAAU3rV,IAAI,CAAG,EAAG,CACtB,IAAI2sV,WAAa,CACjB,CAAA,IAAIz6Q,KAAO,CACX,CAAA,IAAK,MAAM6pH,QAAAA,IAAY4vJ,SAAUloV,CAAAA,MAAM,GAAG,CACxCkpV,UAAAA,EAAc5wJ,SAASllL,CAAC,CAAGklL,SAAS5sL,CAAC,CAAG,CACxC+8U,CAAAA,IAAI,CAACh6Q,IAAO,EAAA,CAAA,CAAG6pH,SACjB,CACA,GAAI4wJ,aAAe,IAAI,CAACvwH,SAAS,CAAE,CACjC8vH,IAAAA,CAAKnxV,MAAM,CAAGm3E,IAAAA,CACdg6Q,KAAKlhV,IAAI,CAAC,CAACN,CAAGC,CAAAA,CAAAA,GAAID,CAAEyE,CAAAA,CAAC,CAAGxE,CAAAA,CAAEwE,CAAC,CAC3B,CAAA,IAAI,CAACw8U,SAAS,CAAC5wV,MAAM,CAAGm3E,IAAO,CAAA,CAAA,CAC/B,IAAIkqD,CAAAA,CAAI,EACR,IAAIwwN,YAAAA,CAAeV,IAAI,CAAC,CAAA,CAAE,CAAC/8U,CAAC,CAC5B,IAAI09U,UAAaX,CAAAA,IAAI,CAAC,CAAE,CAAA,CAACr1U,CAAC,CAC1B,IAAI,IAAI/b,CAAI,CAAA,CAAA,CAAGA,CAAIo3E,CAAAA,IAAAA,CAAMp3E,CAAI,EAAA,CAAA,CAC3B,MAAM2yB,CAAIy+T,CAAAA,IAAI,CAACpxV,CAAE,CAAA,CACjB,GAAI2yB,CAAEte,CAAAA,CAAC,GAAK09U,UAAAA,CAAa,CAAG,CAAA,CAC1BA,WAAap/T,CAAE5W,CAAAA,EAAC,CACX,KAAA,CACL,IAAI,CAAC80U,SAAS,CAACvvN,CAAAA,EAAAA,CAAI,CAAGwwN,YACtB,CAAA,IAAI,CAACjB,SAAS,CAACvvN,CAAAA,EAAAA,CAAI,CAAGywN,UAAa,CAAA,CAAA,CACnCD,aAAen/T,CAAEte,CAAAA,CAAC,CAClB09U,UAAap/T,CAAAA,CAAAA,CAAE5W,EAAC,CAEpB,CACA,IAAI,CAAC80U,SAAS,CAACvvN,CAAI,EAAA,CAAA,CAAGwwN,YACtB,CAAA,IAAI,CAACjB,SAAS,CAACvvN,IAAI,CAAGywN,UAAAA,CAAa,CACnC,CAAA,IAAI,CAAClB,SAAS,CAAC5wV,MAAM,CAAGqhI,CACxB,CAAA,IAAI,CAACgwN,eAAe,CAAG,IAAIZ,qBAAsB,CAAA,IAAI,CAACzmT,MAAM,CAC5D,CAAA,IAAI,CAACwnT,YAAY,CAAG,IAAI,CAACH,eAAe,CAACl+S,MAAM,CAAC,IAAI,CAACy9S,SAAS,CAAEgB,YAClE,CACAT,IAAAA,CAAKnxV,MAAM,CAAG,EAChB,CACF,CACAmzC,MAAS,EAAA,CACP,MAAM4+S,WAAc,CAAA,IAAI,CAAC5hN,IAAI,CAACzI,iBAAiB,EAAA,CAC/C,MAAMsqN,kBAAAA,CAAqB,CAAC,IAAI,CAACC,sBAAsB,CAACz8U,MAAM,CAACu8U,WAC/D,CAAA,CAAA,GAAIC,kBAAoB,CAAA,CACtB,IAAI,CAACC,sBAAsB,CAACnzV,IAAI,CAACizV,WACnC,EAAA,CACA,OAAOC,kBACT,CAzEAlqV,YAAYkiC,MAAM,CAAEsd,QAAQ,CAAEi2H,SAAS,CAAC,CACtC,IAAI,CAACi0K,YAAY,CAAG,CACpB,CAAA,IAAI,CAACZ,SAAS,CAAG,EAAE,CACnB,IAAI,CAACa,SAAS,CAAG,CACjB,CAAA,IAAI,CAACC,SAAS,CAAG,CACjB,CAAA,IAAI,CAAC9lC,OAAO,CAAG,CACf,CAAA,IAAI,CAACzxN,QAAQ,CAAG,IAAIj4E,IACpB,CAAA,IAAI,CAAC+vU,sBAAsB,CAAG,IAAI3vU,IAClC,CAAA,IAAI,CAACuM,IAAI,CAAG,IAAI7D,WAChB,CAAA,IAAI,CAACqmU,eAAe,CAAG,IACvB,CAAA,IAAI,CAACrnT,MAAM,CAAGA,MACd,CAAA,IAAI,CAACsd,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC6oF,IAAI,CAAGotC,SAAAA,CAAUptC,IAAI,CAC1B,IAAI,CAAC+hN,QAAQ,CAAG30K,SAAAA,CAAU20K,QAC1B,CAAA,IAAI,CAAC7wH,SAAS,CAAG/5K,QAAAA,CAAS+5K,SAAS,CACnC,IAAI,CAACxyM,IAAI,CAAC/vB,IAAI,CAACy+K,SAAAA,CAAU1uJ,IAAI,CAC7B,CAAA,IAAI,CAAC8iU,eAAe,CAACp0K,SAAUqzK,CAAAA,SAAS,EAC1C,CAyDF,CAEA,SAASuB,iBAAAA,EAAAA,CACP,MAAM5qH,MAAS,CAAA,OAAOhkO,OAAS,WAAeA,EAAAA,IAAAA,EAAQikO,OAAQ,CAAA,qBAAA,CAAA,CAAuBC,UAAU,CAC/F,MAAM2qH,UAAa,CAAA,IAAIjqV,IACvB,IAAIkqV,WAAAA,CACJ,IAAIpqH,SACJ,CAAA,IAAIC,WACJ,CAAA,IAAIoqH,WAAc,CAAA,KAAA,CAClB,MAAMnqH,OAAU,CAAA,EAAA,CAChB,MAAME,OAAU,CAAA,IAAItpO,MAAMopO,OAASp1E,CAAAA,CAAAA,IAAI,CAAC,CACxC,CAAA,CAAA,MAAMu1E,WAAa,IAAIvpO,KAAAA,CAAMopO,SAASp1E,IAAI,CAAC,GAC3C,MAAMw/L,WAAAA,CAAc,CAClB,CACEz/N,WAAa,CAAA,CAAA,CACb2hC,OAAQ,EACV,CAAA,CACA,CACE3hC,WAAa,CAAA,CAAA,CACb2hC,OAAQ,EACV,CAAA,CACA,CACE3hC,WAAAA,CAAa,CACb2hC,CAAAA,MAAAA,CAAQ,CACV,CACA,CAAA,CACE3hC,YAAa,EACb2hC,CAAAA,MAAAA,CAAQ,CACV,CACA,CAAA,CACE3hC,WAAa56G,CAAAA,QAAAA,CACbu8I,MAAQ,CAAA,CACV,EACD,CACD,MAAM+9L,iBAAmB,IAAIzzV,KAAAA,CAAMopO,SACnC,IAAI,IAAI5oE,KAAO,CAAGA,CAAAA,IAAAA,CAAO4oE,QAAS,EAAE5oE,IAAAA,CAAK,CACvC,IAAI9K,MAAAA,CAAS,EACb,IAAI,IAAInuE,CAAI,CAAA,CAAA,CAAGA,CAAIisQ,CAAAA,WAAAA,CAAYvyV,MAAM,CAAE,EAAEsmF,EAAE,CACzC,GAAIi5E,MAAQgzL,WAAW,CAACjsQ,CAAE,CAAA,CAACwsC,WAAW,CAAE,CACtC2hC,MAAS89L,CAAAA,WAAW,CAACjsQ,CAAE,CAAA,CAACmuE,MAAM,CAC9B,KACF,CACF,CACA+9L,gBAAgB,CAACjzL,KAAK,CAAG9K,OAC3B,CACA,MAAMg+L,uBAAAA,CAA0B,CAACC,SAAW7pH,CAAAA,WAAAA,GAAAA,CAC1C,MAAM8pH,WAAc9pH,CAAAA,WAAAA,CACpB,MAAM+pH,UAAa,CAAA,EAAE,CACrB,IAAI,IAAI7yV,EAAI,CAAGA,CAAAA,CAAAA,CAAIooO,OAAS,CAAA,EAAEpoO,CAAE,CAAA,CAC9B,MAAM8yV,cAAiBvzV,CAAAA,IAAAA,CAAKma,GAAG,CAAC1Z,CAAAA,CAAI2yV,UACpCE,CAAAA,UAAU,CAAC7yV,CAAAA,CAAE,CAAGyyV,gBAAgB,CAACK,cAAe,EAClD,CACA,MAAMp+E,WAAAA,CAAcm+E,WAAWr3S,MAAM,CAAC,CAAC5rC,CAAAA,CAAGC,CAAID,GAAAA,CAAAA,CAAIC,EAAG,CACrD,CAAA,CAAA,IAAIkjV,YAAc,CAClB,CAAA,IAAI,IAAI/yV,CAAI,CAAA,CAAA,CAAGA,EAAIooO,OAAS,CAAA,EAAEpoO,EAAE,CAC9BuoO,UAAU,CAACvoO,CAAE,CAAA,CAAGT,KAAKoU,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmQ,KAAK,CAACmjV,UAAU,CAAC7yV,CAAAA,CAAE,CAAG00Q,WAAck+E,CAAAA,WAAAA,CAAAA,CACrEtqH,CAAAA,OAAO,CAACtoO,CAAE,CAAA,CAAG+yV,WACbA,CAAAA,WAAAA,EAAexqH,UAAU,CAACvoO,CAAAA,EAAE,CAE9B,GAAI+yV,YAAcjqH,WAAa,CAAA,CAC7B,MAAMkqH,MAAAA,CAASD,WAAcjqH,CAAAA,WAC7BP,CAAAA,UAAU,CAACH,QAAU,CAAE,CAAA,CAAG7oO,KAAKoU,GAAG,CAAC,EAAG40N,UAAU,CAACH,QAAU,CAAE,CAAA,CAAG4qH,QAClE,CACA1qH,OAAO,CAACF,OAAQ,CAAA,CAAGE,OAAO,CAACF,OAAU,CAAA,CAAA,CAAE,CAAGG,UAAU,CAACH,QAAU,CAAE,CACjEG,CAAAA,UAAU,CAACH,OAAQ,CAAA,CAAG,EACxB,CAAA,CACA,MAAM6qH,sBAAyB,CAAA,CAACC,WAAYvqH,OAAStlF,CAAAA,KAAAA,CAAO6kF,UAAWC,WAAamqH,CAAAA,WAAAA,CAAaa,cAC/F,GAAA,CAAA,KAAM,CAAE3jK,GAAG,CAAE4jK,UAAU,CAAEvnC,OAAO,CAAEglC,SAAS,CAAEW,WAAW,CAAE,CAAGc,WAC7D,CAAA,MAAMe,YAAcjrH,OAAU/kF,CAAAA,KAAAA,CAC9B,IAAI,IAAIiwM,QAAAA,CAAW,EAAGA,QAAWJ,CAAAA,UAAAA,CAAWjzV,MAAM,CAAEqzV,QAAW,EAAA,CAAA,CAC7D,MAAM/gV,MAAS2gV,CAAAA,UAAU,CAACI,QAAS,CAAA,CACnC,MAAMtpT,EAAKwlJ,CAAAA,GAAG,CAAC8jK,QAAAA,CAAS,CACxB,MAAM5uH,QAAU2tH,UAAWtwV,CAAAA,GAAG,CAACioC,EAC/B,CAAA,CAAA,GAAI,CAAC06L,OAAS,CAAA,CACZj4N,OAAQC,CAAAA,KAAK,CAAC,4CAAA,CAA8Cs9B,IAC9D,CACA,IAAIupT,YAAcH,UAAU,CAACE,SAAS,CAAG9B,WAAAA,CACzC,MAAMgC,cAAiB3C,CAAAA,SAAS,CAACyC,QAAS,CAAA,CAACrzV,MAAM,CAAG,CAAA,CAAI4wV,SAAS,CAACyC,QAAAA,CAAS,CAAG,CAC5E,CACA5uH,CAAAA,OAAAA,CAAQzkO,MAAM,CAAG,CAAA,CAClB,CACD,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAIwzV,cAAevzV,CAAAA,MAAM,CAAED,CAAAA,EAAK,EAAE,CAC/C,MAAMyzV,cAAgBD,cAAc,CAACxzV,EAAE,CAAG,CAAA,CAC1C,MAAM0zV,WAAAA,CAAcF,cAAc,CAACxzV,EAAI,CAAE,CAAA,CAAG,EAC5CuzV,WAAcJ,CAAAA,cAAAA,CAAezuH,QAASnyN,MAAQkhV,CAAAA,aAAAA,CAAeC,YAAaH,WAAaF,CAAAA,WAAAA,CAAa1qH,QAAStlF,KAAO6kF,CAAAA,SAAAA,CAAWC,aACjI,CACA,MAAM1pH,IAAMotM,OAAO,CAACynC,QAAS,CAC7BnrH,CAAAA,WAAW,CAAC,CAAE,CAAA,EAAI1pH,IAClBypH,SAAUl1E,CAAAA,IAAI,CAAC,CAAGugM,CAAAA,WAAAA,CAAaA,WAAc90O,CAAAA,GAAAA,CAAAA,CAC7C80O,WAAe90O,EAAAA,IACjB,CACF,CACA,CAAA,MAAMk1O,uBAAyB,CAACT,UAAAA,CAAYvqH,QAAStlF,KAAO6kF,CAAAA,SAAAA,CAAWC,WAAamqH,CAAAA,WAAAA,GAAAA,CAClFW,sBAAuBC,CAAAA,UAAAA,CAAYvqH,QAAStlF,KAAO6kF,CAAAA,SAAAA,CAAWC,YAAamqH,WAAa,CAAA,CAAC5tH,QAASnyN,MAAQkhV,CAAAA,aAAAA,CAAeC,YAAaH,WAAaF,CAAAA,WAAAA,CAAa1qH,QAAStlF,KAAO6kF,CAAAA,SAAAA,CAAWC,eACzL,KAAM,CAAEyrH,oBAAoB,CAAElmV,MAAM,CAAE4U,KAAK,CAAE,CAAG/P,OAChD,MAAM+nG,EAAAA,CAAKs5O,qBAAqBv/U,CAAC,CACjC,MAAMkmG,EAAKq5O,CAAAA,oBAAAA,CAAqB73U,CAAC,CACjC,MAAMgwH,EAAAA,CAAK6nN,qBAAqB13U,CAAC,CACjC,MAAM23U,GAAMv5O,CAAAA,EAAAA,CAAKh4F,MACjB,MAAMwxU,GAAAA,CAAMv5O,EAAKj4F,CAAAA,KAAAA,CACjB,MAAMyxU,GAAAA,CAAMhoN,GAAKzpH,KACjB,CAAA,MAAMhS,IAAM5C,MAASi7N,CAAAA,OAAAA,CACrB,IAAI,IAAIqrH,QAAAA,CAAWP,cAAeO,QAAWN,CAAAA,WAAAA,CAAaM,UAAY,CAAE,CAAA,CACtE,MAAM3/U,CAAIqwN,CAAAA,OAAO,CAACsvH,QAAS,CAAA,CAC3B,MAAMj4U,CAAAA,CAAI2oN,OAAO,CAACsvH,SAAW,CAAE,CAAA,CAC/B,MAAM93U,CAAIwoN,CAAAA,OAAO,CAACsvH,QAAW,CAAA,CAAA,CAAE,CAC/B,MAAMx0L,IAAOnrJ,CAAAA,CAAAA,CAAIw/U,IAAM93U,CAAI+3U,CAAAA,GAAAA,CAAM53U,EAAI63U,GAAMzjV,CAAAA,GAAAA,CAC3C,MAAMgI,CAAIknJ,CAAAA,IAAAA,CAAO6zL,WACjB,CAAA,MAAMhqH,GAAM/wN,CAAAA,CAAAA,GAAM,EAClB,MAAMgxN,OAAAA,CAAUhB,OAAO,CAACe,GAAAA,CAAI,CAAGd,UAAU,CAACc,IAAI,EAAI/wN,EAAI+wN,GAAE,CAAA,GAAO,CAC/DnB,CAAAA,SAAS,CAACqrH,WAAc,EAAA,CAAA,CAAGjqH,OAC3BnB,CAAAA,WAAW,CAACmB,QAAQ,GACtB,CACA,OAAOiqH,WACT,CAAA,EACF,EACA,MAAMU,sBAAAA,CAAyB,CAACf,UAAAA,CAAYvqH,OAAStlF,CAAAA,KAAAA,CAAO6kF,UAAWC,WAAamqH,CAAAA,WAAAA,GAAAA,CAClFW,uBAAuBC,UAAYvqH,CAAAA,OAAAA,CAAStlF,MAAO6kF,SAAWC,CAAAA,WAAAA,CAAamqH,WAAa,CAAA,CAAC5tH,OAASnyN,CAAAA,MAAAA,CAAQkhV,cAAeC,WAAaH,CAAAA,WAAAA,CAAaF,YAAa1qH,OAAStlF,CAAAA,KAAAA,CAAO6kF,UAAWC,WACzL,GAAA,CAAA,KAAM,CAAE+rH,mBAAmB,CAAE5xU,KAAK,CAAE,CAAG/P,OACvC,MAAMuW,EAAAA,CAAKorU,oBAAoB7/U,CAAC,CAChC,MAAM0U,EAAAA,CAAKmrU,mBAAoBn4U,CAAAA,CAAC,CAChC,MAAMiN,EAAAA,CAAKkrU,oBAAoBh4U,CAAC,CAChC,IAAI,IAAI83U,QAAAA,CAAWP,aAAeO,CAAAA,QAAAA,CAAWN,WAAaM,CAAAA,QAAAA,EAAY,EAAE,CACtE,MAAM15O,GAAKoqH,OAAO,CAACsvH,SAAS,CAAGlrU,EAAAA,CAC/B,MAAMyxF,EAAAA,CAAKmqH,OAAO,CAACsvH,SAAW,CAAE,CAAA,CAAGjrU,GACnC,MAAMgjH,EAAAA,CAAK24F,OAAO,CAACsvH,QAAAA,CAAW,EAAE,CAAGhrU,EAAAA,CACnC,MAAMmrU,MAAS75O,CAAAA,EAAAA,CAAKA,GAAKC,EAAKA,CAAAA,EAAAA,CAAKwxB,GAAKA,EACxC,CAAA,MAAMyzB,IAAOjgK,CAAAA,IAAAA,CAAKud,IAAI,CAACq3U,QAAU7xU,KACjC,CAAA,MAAM8xU,aAAe/wM,KAAQmc,CAAAA,IAAAA,CAC7B,MAAMlnJ,CAAI87U,CAAAA,YAAAA,CAAef,WACzB,CAAA,MAAMhqH,GAAM/wN,CAAAA,CAAAA,GAAM,EAClB,MAAMgxN,OAAAA,CAAUhB,OAAO,CAACe,GAAAA,CAAI,CAAGd,UAAU,CAACc,GAAI,CAAA,EAAI/wN,CAAAA,CAAI+wN,GAAE,CAAO,GAAA,CAC/DnB,CAAAA,SAAS,CAACqrH,cAAc,CAAGjqH,OAC3BnB,CAAAA,WAAW,CAACmB,QAAQ,GACtB,CACA,OAAOiqH,WACT,CAAA,EACF,EACA,MAAMc,YAAAA,CAAe,CAACvrH,WAAAA,CAAaX,WAAaxvL,CAAAA,WAAAA,CAAauvL,UAAWrkD,KACtE,GAAA,CAAA,IAAI,IAAI7jL,CAAI,CAAA,CAAA,CAAGA,EAAI8oO,WAAa9oO,CAAAA,CAAAA,EAAAA,CAAI,CAClCmoO,WAAW,CAACnoO,CAAAA,CAAE,EAAImoO,WAAW,CAACnoO,EAAI,CAAE,EACtC,CACA,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAGA,CAAI24C,CAAAA,WAAAA,CAAa34C,IAAI,CAClC,MAAM6c,SAAWqrN,SAAS,CAACloO,EAAE,CAC7B,MAAMupO,SAAY,CAAA,EAAEpB,WAAW,CAACtrN,SAAS,CACzCgnK,KAAK,CAAC0lD,SAAAA,CAAU,CAAGvpO,EACrB,CACF,CACA,CAAA,MAAMs0V,mCAAsC,CAACpB,aAC3C,IAAIvqH,OAAAA,CAAUxwN,SACd,IAAIywN,OAAAA,CAAU,CAACzwN,QACf,CAAA,IAAI,IAAIm7U,QAAAA,CAAW,CAAGA,CAAAA,QAAAA,CAAWJ,WAAWjzV,MAAM,CAAEqzV,WAAW,CAC7D,MAAM/gV,OAAS2gV,UAAU,CAACI,QAAS,CAAA,CACnC,KAAM,CAAEM,oBAAoB,CAAElmV,MAAM,CAAE4U,KAAK,CAAEo8I,OAAO,CAAEC,OAAO,CAAE,CAAGpsJ,MAAAA,CAClE,MAAM+nG,EAAKs5O,CAAAA,oBAAAA,CAAqBv/U,CAAC,CACjC,MAAMkmG,GAAKq5O,oBAAqB73U,CAAAA,CAAC,CACjC,MAAMgwH,EAAK6nN,CAAAA,oBAAAA,CAAqB13U,CAAC,CACjC,MAAMq4U,MAAQj6O,EAAM,EAAA,CAAA,CAAIokD,OAAO,CAAC,CAAA,CAAE,CAAGC,OAAO,CAAC,CAAA,CAAE,CAC/C,MAAM61L,KAAAA,CAAQj6O,IAAM,CAAImkD,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAGC,OAAO,CAAC,CAAE,CAAA,CAC/C,MAAM81L,KAAQ1oN,CAAAA,EAAAA,EAAM,EAAI2yB,OAAO,CAAC,EAAE,CAAGC,OAAO,CAAC,CAAE,CAAA,CAC/C,MAAM+1L,KAAQp6O,CAAAA,EAAAA,EAAM,EAAIqkD,OAAO,CAAC,EAAE,CAAGD,OAAO,CAAC,CAAA,CAAE,CAC/C,MAAMi2L,MAAQp6O,EAAM,EAAA,CAAA,CAAIokD,OAAO,CAAC,CAAA,CAAE,CAAGD,OAAO,CAAC,CAAE,CAAA,CAC/C,MAAMk2L,KAAAA,CAAQ7oN,IAAM,CAAI4yB,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAGD,OAAO,CAAC,CAAA,CAAE,CAC/C,MAAMm2L,IAAON,CAAAA,KAAAA,CAAQj6O,GAAKk6O,KAAQj6O,CAAAA,EAAAA,CAAKk6O,MAAQ1oN,EAC/C,CAAA,MAAM+oN,KAAOJ,KAAQp6O,CAAAA,EAAAA,CAAKq6O,MAAQp6O,EAAKq6O,CAAAA,KAAAA,CAAQ7oN,GAC/C,MAAMgpN,IAAAA,CAAOF,KAAOvyU,KAAQ5U,CAAAA,MAAAA,CAC5B,MAAMsnV,IAAOF,CAAAA,IAAAA,CAAOxyU,KAAQ5U,CAAAA,MAAAA,CAC5B,MAAMunV,QAAAA,CAAW11V,KAAKmU,GAAG,CAACqhV,KAAMC,IAChC,CAAA,CAAA,MAAME,SAAW31V,IAAKoU,CAAAA,GAAG,CAACohV,IAAAA,CAAMC,IAChC,CAAA,CAAA,GAAIC,SAAWtsH,OAASA,CAAAA,OAAAA,CAAUssH,SAClC,GAAIC,QAAAA,CAAWtsH,QAASA,OAAUssH,CAAAA,SACpC,CACA,GAAIvsH,OAAYxwN,GAAAA,QAAAA,CAAU,CACxBwwN,OAAU,CAAA,CAAA,CACVC,QAAU,EACZ,CACA,OAAO,CACLD,OAAAA,CACAC,OACF,CACF,CAAA,CACA,MAAMusH,mCAAsC,CAACjC,aAC3C,IAAItqH,OAAAA,CAAU,CAACzwN,QACf,CAAA,IAAI,IAAIm7U,QAAAA,CAAW,CAAGA,CAAAA,QAAAA,CAAWJ,WAAWjzV,MAAM,CAAEqzV,WAAW,CAC7D,MAAM/gV,OAAS2gV,UAAU,CAACI,QAAS,CAAA,CACnC,KAAM,CAAEY,mBAAmB,CAAE5xU,KAAK,CAAEo8I,OAAO,CAAEC,OAAO,CAAE,CAAGpsJ,MACzD,CAAA,MAAMuW,EAAKorU,CAAAA,mBAAAA,CAAoB7/U,CAAC,CAChC,MAAM0U,GAAKmrU,mBAAoBn4U,CAAAA,CAAC,CAChC,MAAMiN,EAAAA,CAAKkrU,oBAAoBh4U,CAAC,CAChC,IAAI,IAAIlc,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAGA,IAAI,CACxB,MAAM2/K,EAAK3/K,CAAAA,CAAAA,CAAI,CAAI2+J,CAAAA,OAAO,CAAC,CAAE,CAAA,CAAGD,OAAO,CAAC,CAAA,CAAE,CAC1C,MAAMkhB,EAAAA,CAAK5/K,CAAI,CAAA,CAAA,CAAI2+J,OAAO,CAAC,EAAE,CAAGD,OAAO,CAAC,CAAE,CAAA,CAC1C,MAAMmhB,EAAK7/K,CAAAA,CAAAA,CAAI,CAAI2+J,CAAAA,OAAO,CAAC,CAAA,CAAE,CAAGD,OAAO,CAAC,EAAE,CAC1C,MAAMpkD,GAAKqlE,EAAK72J,CAAAA,EAAAA,CAChB,MAAMyxF,EAAKqlE,CAAAA,EAAAA,CAAK72J,GAChB,MAAMgjH,EAAAA,CAAK8zC,GAAK72J,EAChB,CAAA,MAAMmrU,OAAS75O,EAAKA,CAAAA,EAAAA,CAAKC,EAAKA,CAAAA,EAAAA,CAAKwxB,EAAKA,CAAAA,EAAAA,CACxC,MAAMyzB,IAAOjgK,CAAAA,IAAAA,CAAKud,IAAI,CAACq3U,MAAAA,CAAAA,CAAU7xU,MACjC,GAAIk9I,IAAAA,CAAOopE,OAASA,CAAAA,OAAAA,CAAUppE,KAChC,CACF,CACA,MAAMmpE,OAAAA,CAAU,EAChB,GAAIC,OAAAA,CAAU,EAAG,CACfA,OAAAA,CAAU,EACZ,CACA,OAAO,CACLD,QACAC,OACF,CACF,EACA,MAAM14N,IAAAA,CAAO,CAACgjV,UAAYrvK,CAAAA,KAAAA,CAAOyuK,eAC/B,KAAM,CAAE3pH,OAAO,CAAEC,OAAO,CAAE,CAAG2pH,WAAAA,CAAc4C,oCAAoCjC,UAAcoB,CAAAA,CAAAA,mCAAAA,CAAoCpB,UACjI,CAAA,CAAA,MAAMv6S,WAAc25S,CAAAA,WAAAA,CAAY8C,eAAe,CAC/C,MAAMvsH,YAActpO,IAAKoU,CAAAA,GAAG,CAAC,EAAIpU,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,EAAInU,CAAAA,IAAAA,CAAKmV,KAAK,CAACnV,IAAAA,CAAKoV,IAAI,CAACgkC,WAAAA,CAAc,MACjF,MAAMmwL,WAAAA,CAAc,CAAKD,EAAAA,WAAAA,CAAc,CACvC,CAAA,GAAIX,WAAWjoO,MAAW04C,GAAAA,WAAAA,CAAa,CACrCuvL,SAAY,CAAA,IAAI/qM,YAAYwb,WAC9B,EAAA,CACA,GAAI,CAACwvL,WAAAA,EAAeA,YAAYloO,MAAM,GAAK6oO,YAAa,CACtDX,WAAAA,CAAc,IAAIhrM,WAAY2rM,CAAAA,WAAAA,EAChC,CAAO,KAAA,CACLX,WAAYn1E,CAAAA,IAAI,CAAC,CACnB,EAAA,CACA,MAAM3P,KAAQulF,CAAAA,OAAAA,CAAUD,QACxB,IAAIgqH,SAAAA,CACJ,GAAIJ,WAAAA,CAAa,CACfI,SAAAA,CAAYvqH,QAAU,EACxB,CAAA,KAAO,CACL,MAAMitH,0BAAAA,CAA6B,EAAI1sH,OACvC,CAAA,MAAM2sH,cAAiBD,CAAAA,0BAAAA,CAA6BhyM,KAAQ+kF,CAAAA,OAAAA,CAC5DuqH,UAAYpzV,IAAKoU,CAAAA,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmU,GAAG,CAAC00N,OAAAA,CAAU,EAAG7oO,IAAKmQ,CAAAA,KAAK,CAAC4lV,cAC3D,CAAA,CAAA,EAAA,CACA5C,wBAAwBC,SAAW7pH,CAAAA,WAAAA,CAAAA,CACnC,GAAIypH,WAAa,CAAA,CACf0B,sBAAuBf,CAAAA,UAAAA,CAAYvqH,OAAStlF,CAAAA,KAAAA,CAAO6kF,UAAWC,WAAamqH,CAAAA,WAAAA,EAC7E,MAAO,CACLqB,sBAAAA,CAAuBT,WAAYvqH,OAAStlF,CAAAA,KAAAA,CAAO6kF,SAAWC,CAAAA,WAAAA,CAAamqH,WAC7E,EAAA,CACA+B,aAAavrH,WAAaX,CAAAA,WAAAA,CAAaxvL,YAAauvL,SAAWrkD,CAAAA,KAAAA,CAAAA,CAC/D,MAAM7jI,KAAQrH,CAAAA,WAAAA,CACd,MAAM48S,YAAAA,CAAe,CACnB1xK,KAAAA,CAAMnpK,MAAM,CACb,CACD,MAAM0uG,QAAW,CAAA,CACfy6D,MAAOA,KAAMnpK,CAAAA,MAAM,CACnBslC,KACAvhD,CAAAA,OAAAA,CAAS6zV,YAAY7zV,OACvB,EACA+oO,MAAOkC,CAAAA,WAAW,CAACtgH,QAAUmsO,CAAAA,YAAAA,EAC/B,CACA/tH,CAAAA,MAAAA,CAAOvlO,gBAAgB,CAAC,UAAW,OAAC+hF,EAAAA,CAClC,MAAM2lJ,OAAU3lJ,CAAAA,OAAAA,CAAQhqE,IAAI,EAAIgqE,OAAAA,CAChC,OAAO2lJ,OAAAA,CAAQ6rH,OAAO,EACpB,IAAK,YACH,CAAA,CACEnD,WAAW9pV,GAAG,CAACohO,QAAQ3/L,EAAE,CAAE,IAAInwB,YAAAA,CAAa8vN,OAAQjF,CAAAA,OAAO,GAC3D,KACF,CACF,IAAK,eACH,CAAA,CACE2tH,WAAWxpV,MAAM,CAAC8gO,QAAQ3/L,EAAE,CAAA,CAC5B,KACF,CACF,IAAK,OACH,CACEuoT,WAAAA,CAAc5oH,QAAQl/B,aAAa,EAAI,KACvC,CAAA,MAAM5mB,KAAQ,CAAA,IAAI1mJ,YAAYwsM,OAAQ9lD,CAAAA,KAAK,EAC3C3zK,IAAKy5N,CAAAA,OAAAA,CAAQupH,UAAU,CAAErvK,KAAAA,CAAOyuK,WAChC,CAAA,CAAA,KACF,CACF,IAAK,YACH,CACEA,WAAAA,CAAc3oH,QACd,KACF,CACJ,CACF,CACF,EAAA,CAEA,MAAM8rH,mBAAAA,SAA4BxtV,YAkBhCytV,CAAAA,QAAAA,CAAS1xQ,OAAO,CAAE,CAChB,GAAI,IAAI,CAACtmC,UAAU,CAAE,CACnB,MACF,CACA,MAAMisL,QAAU3lJ,OAAQhqE,CAAAA,IAAI,EAAIgqE,OAChC,CAAA,MAAM2xQ,UAAY,IAAIx4T,WAAAA,CAAYwsM,OAAQ9lD,CAAAA,KAAK,CAC/C,CAAA,IAAI,CAAC+xK,YAAY,GACjB,IAAI,CAAC1sV,IAAI,CAAC,QAAA,CAAUygO,OAAQ3pL,CAAAA,KAAK,CAAE2pL,OAAAA,CAAQlrO,OAAO,CAAEk3V,SAAAA,CAAAA,CACpD,GAAIA,SAAU11V,CAAAA,MAAM,GAAK,IAAI,CAAC41V,YAAY,CAAE,CAC1C,IAAI,CAACC,kBAAkB,CAACh1V,IAAI,CAAC60V,SAAAA,EAC/B,CACF,CACAxsT,OAAAA,EAAU,CACR,IAAI,CAACuU,UAAU,CAAG,IAAA,CAClB,IAAI,CAACh6C,MAAM,CAACumO,SAAS,EACrB,CAAA,IAAI,CAACvmO,MAAM,CAAG,KAChB,CACAqyV,WAAW/rT,EAAE,CAAE06L,OAAO,CAAE,CACtB,GAAIA,OAAAA,CAAS,CACX,GAAI,CAAC,IAAI,CAACsxH,UAAU,CAAC1tV,GAAG,CAAC0hC,EAAK,CAAA,CAAA,CAC5B,IAAI,CAACgsT,UAAU,CAAC1lV,GAAG,CAAC05B,EAAAA,CAAAA,CACpB,MAAMisT,aAAgBvxH,CAAAA,OAAAA,CAAQhqN,MAAM,CAAC7Z,KAAK,GAC1C,IAAI,CAAC6C,MAAM,CAACgmO,WAAW,CAAC,CACtB8rH,OAAAA,CAAS,aACTxrT,EAAIA,CAAAA,EAAAA,CACJ06L,OAASuxH,CAAAA,aACX,CAAG,CAAA,CACDA,cACD,EACH,CACF,MAAO,CACL,GAAI,IAAI,CAACD,UAAU,CAAC1tV,GAAG,CAAC0hC,EAAAA,CAAAA,CAAK,CAC3B,IAAI,CAACgsT,UAAU,CAACntV,MAAM,CAACmhC,EACvB,CAAA,CAAA,IAAI,CAACtmC,MAAM,CAACgmO,WAAW,CAAC,CACtB8rH,OAAAA,CAAS,gBACTxrT,EAAIA,CAAAA,EACN,GACF,CACF,CACF,CACAksT,iBAAkBC,CAAAA,OAAO,CAAE,CACzB,IAAI,CAACC,aAAa,CAAG,KACrB,KAAM,CAAE5E,WAAW,CAAE,CAAG2E,OAAAA,CACxB,MAAME,SAAY7E,CAAAA,WAAAA,CAAcA,YAChC,GAAI6E,SAAAA,GAAc,IAAI,CAACR,YAAY,CAAE,CACnC,IAAI,CAACA,YAAY,CAAGQ,SACpB,CAAA,IAAI,CAACP,kBAAkB,CAAC71V,MAAM,CAAG,EACnC,CACA,IAAI,CAACyD,MAAM,CAACgmO,WAAW,CAACysH,OAAAA,EAC1B,CACAG,aAAc/jV,CAAAA,MAAM,CAAEk4L,aAAa,CAAE,CACnC,GAAI,IAAI,CAAC2rJ,aAAa,EAAI,IAAI,CAACR,YAAY,GAAK,CAAA,CAAG,CACjD,IAAID,UAAY,IAAI,CAACG,kBAAkB,CAACx0V,GAAG,GAC3C,GAAI,CAACq0V,SAAW,CAAA,CACdA,SAAY,CAAA,IAAIx4T,YAAY,IAAI,CAAC04T,YAAY,EAC/C,CACA,IAAI,CAACD,YAAY,EACjB,CAAA,IAAI,CAACQ,aAAa,CAAG,KAAA,CACrB,IAAI,CAAC1yV,MAAM,CAACgmO,WAAW,CAAC,CACtB8rH,OAAS,CAAA,MAAA,CACTtC,WAAY3gV,MACZk4L,CAAAA,aAAAA,CAAeA,cACf5mB,KAAO8xK,CAAAA,SAAAA,CAAUj7U,MAAM,CACzB,CAAG,CACDi7U,SAAAA,CAAUj7U,MAAM,CACjB,EACH,CACF,CApFA3S,aAAa,CACX,KAAK,GAAI,IAAI,CAAC8tV,YAAY,CAAG,CAAG,CAAA,IAAI,CAACC,kBAAkB,CAAG,EAAE,CAAE,IAAI,CAACF,YAAY,CAAG,CAAG,CAAA,IAAI,CAACQ,aAAa,CAAG,KAAO,CAAA,IAAI,CAACJ,UAAU,CAAG,IAAIjjV,GAAO,CAAA,IAAI,CAAC2qC,UAAU,CAAG,MAChK,MAAM+sL,YAAAA,CAAe,CAAC,CAAC,EAAE2nH,kBAAkB1yV,QAAQ,EAAA,CAAG,GAAG,CAAC,CAC1D,GAAI2D,SAASd,WAAW,GAAK,OAAQ,CACnC,IAAI,CAACmB,MAAM,CAAG,IAAIP,MAAAA,CAAOsnO,YAAc,CAAA,CACrCC,KAAM,IACR,CAAA,CAAA,CACA,IAAI,CAAChnO,MAAM,CAAC2D,EAAE,CAAC,SAAW,CAAA,IAAI,CAACquV,QAAQ,CAACtlV,IAAI,CAAC,IAAI,CACnD,EAAA,CAAA,KAAO,CACL,IAAI,CAAC1M,MAAM,CAAG,IAAIP,OAAO41E,GAAI4xJ,CAAAA,eAAe,CAAC,IAAIC,IAAAA,CAAK,CACpDH,YACD,CAAA,CAAE,CACDhzN,IAAAA,CAAM,wBACR,CAAA,CAAA,CAAA,CAAA,CACA,IAAI,CAAC/T,MAAM,CAACzB,gBAAgB,CAAC,UAAW,IAAI,CAACyzV,QAAQ,CAACtlV,IAAI,CAAC,IAAI,CACjE,EAAA,CACF,CAqEF,CAEA,MAAM2xI,SAAW,IAAIx/H,IAAAA,CACrB,MAAMg0U,WAAAA,CAAc,CAClB,CAAA,CACA,EACA,CACD,CACD,OAAMC,0BAAmC5rP,SAAAA,UAAAA,CACvCxqD,KAAK3B,YAAY,CAAE,CACjB,KAAK,CAAC2B,KAAK3B,YACX,CAAA,CAAA,IAAI,CAACyU,QAAQ,CAACtqD,KAAK,CAAG,KACtB,CAAA,IAAI,CAAC8qD,eAAe,CAACG,UAAU,CAAG,MACpC,CACAzgB,OAAOqjT,MAAM,CAAEj2K,UAAU,CAAEk2K,WAAW,CAAE,CACtC,IAAI,CAACD,MAAM,CAACx2V,MAAM,CAAG,CACrB,CAAA,IAAI,CAACy2V,WAAW,CAAGA,YACnB,IAAI,IAAI12V,EAAI,CAAGA,CAAAA,CAAAA,CAAIy2V,OAAOx2V,MAAM,CAAED,IAAI,CACpC,MAAM22V,UAAYF,MAAM,CAACz2V,EAAE,CAC3B,GAAI22V,UAAUlF,YAAY,CAAG,CAAG,CAAA,CAC9B,IAAI,CAACgF,MAAM,CAAC31V,IAAI,CAAC61V,SACnB,EAAA,CACF,CACA,IAAI,CAACn2K,UAAU,CAAGA,UAClB,CAAA,OAAO,IAAI,CAACi2K,MAAM,CAACx2V,MAAM,CAAG,CAC9B,CACAsrG,OAAAA,EAAU,CACR,KAAM,CAAEthE,MAAM,CAAEwsT,MAAM,CAAEj2K,UAAU,CAAE,CAAG,IAAI,CAC3Cv2I,MAAAA,CAAOsV,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,CACvClM,CAAAA,MAAAA,CAAOyV,WAAW,CAAC7oB,aAAAA,CAAAA,CACnBoT,OAAOwV,aAAa,CAAC7I,UAAWO,CAAAA,OAAO,CACvClN,CAAAA,MAAAA,CAAOmV,eAAe,EACtB,CAAA,MAAMgpH,WAAaoY,UAAW74C,CAAAA,iBAAiB,GAC/C,MAAM4/B,OAAAA,CAAUxlB,QAAShjJ,CAAAA,IAAI,CAACqpK,UAAAA,CAAAA,CAAYriJ,MAAM,EAChDkkB,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,aAAesN,CAAAA,CAAAA,QAAQ,CAAC4vH,OAAAA,CAAQvtJ,IAAI,CAAA,CACzD,IAAI,IAAIha,CAAAA,CAAI,EAAGA,CAAIy2V,CAAAA,MAAAA,CAAOx2V,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,IAAI,CAAC42V,WAAW,CAACH,MAAM,CAACz2V,CAAE,CAAA,EAC5B,CACF,CACA42V,WAAAA,CAAYD,SAAS,CAAE,CACrB,KAAM,CAAE1sT,MAAM,CAAEsd,QAAQ,CAAE,CAAGovS,UAC7B,MAAMpvV,KAAAA,CAAQ0iC,MAAO1iC,CAAAA,KAAK,CAC1B,KAAM,CAAEspV,SAAS,CAAEY,YAAY,CAAEC,SAAS,CAAEt3P,QAAQ,CAAEk3P,eAAe,CAAE,CAAGqF,SAAAA,CAC1E,MAAME,oBAAuBtvS,CAAAA,QAAAA,CAASs8K,uBAAuB,CAACgtH,SAAAA,CAAU5wV,MAAM,CAAG,CAAA,CAAA,CACjF42V,qBAAqBh0N,QAAQ,CAACyR,aAAa,CAACrqG,MAAAA,CAAAA,CAC5C1iC,MAAM8iC,OAAO,CAAC,cAAcsN,QAAQ,CAACg/S,SAAUvmN,CAAAA,IAAI,CAACzI,iBAAiB,GAAG3tH,IAAI,CAAA,CAC5E,GAAIs3U,eAAiB,CAAA,CACnB/pV,MAAM8iC,OAAO,CAAC,mBAAqBsN,CAAAA,CAAAA,QAAQ,CAAC25S,eAAAA,CAAgBx/S,OAAO,EACrE,CACAvqC,MAAM8iC,OAAO,CAAC,iBAAiBsN,QAAQ,CAAC85S,YACxClqV,CAAAA,CAAAA,KAAAA,CAAM8iC,OAAO,CAAC,cAAcsN,QAAQ,CAAC+5S,WACrCnqV,KAAM8iC,CAAAA,OAAO,CAAC,gBAAkBsN,CAAAA,CAAAA,QAAQ,CAACyiD,QAASl+E,CAAAA,CAAC,EACnD,MAAM+nC,KAAAA,CAAQ,IAAI,CAACyyS,WAAW,GAAGC,SAAAA,CAAUxE,QAAQ,CAAC,EAAIoE,WAAAA,CACxDhvV,MAAM8iC,OAAO,CAAC,kBAAkBsN,QAAQ,CAACsM,OACzC18C,KAAM8iC,CAAAA,OAAO,CAAC,cAAA,CAAA,CAAgBsN,QAAQ,CAACg/S,UAAUvmN,IAAI,CAACzI,iBAAiB,EAAG3tH,CAAAA,IAAI,EAC9E68U,oBAAqBh0I,CAAAA,UAAU,CAAC72G,MAAM,CAAC5R,QAAAA,EACzC,CACAjxD,OAAU,EAAA,CACR,IAAI,CAACstT,MAAM,CAACx2V,MAAM,CAAG,EACrB,KAAK,CAACkpC,UACR,CACAphC,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,IAAO,CAAA,CAAA,IAAI,CAACywV,MAAM,CAAG,EAAE,CAAE,IAAI,CAACC,WAAW,CAAG5uV,SAAW,CAAA,IAAI,CAAC04K,UAAU,CAAG,KACpF,CACF,CAEA,IAAIx2I,GAAK,CACT,CAAA,MAAM8sT,iBAuBJ3tT,OAAU,EAAA,CACR,IAAI,CAAC8Y,UAAU,EAAE9Y,SACjB,CAAA,IAAI,CAAC27L,YAAY,EAAE37L,SACnB,CAAA,IAAI,CAAC4tT,WAAW,EAAE5tT,SAClB,CAAA,IAAI,CAAC6tT,WAAW,EAAE7tT,SAClB,CAAA,IAAI,CAAC8tT,aAAa,EAAE9tT,OAAAA,EACpB,CAAA,IAAI,CAAC+gM,YAAY,EAAE/gM,OAAAA,EACnB,CAAA,IAAI,CAACsV,YAAY,EAAEtV,OACrB,GAAA,CACA,IAAIqoT,WAAc,EAAA,CAChB,OAAO,IAAI,CAACtnH,YAAY,CAACvkN,KAAK,CAEhCuxU,YAAal9U,CAAAA,IAAI,CAAE,CACjB,MAAM9B,IAAM,IAAI,CAACgyN,YAAY,CAACvkN,KAAK,CAAG,IAAI,CAACukN,YAAY,CAACtkN,MAAM,CAC9D,GAAI1N,GAAAA,GAAQ8B,KAAK/Z,MAAM,CAAA,CACvB,IAAI,CAACiqO,YAAY,CAACj+L,OAAO,CAAC,CAAA,CAAE,CAAGjyB,IAC/B,CAAA,IAAI,CAACkwN,YAAY,CAAC/9L,MAAM,GAC1B,CACAimB,aAAAA,CAAc9uD,IAAI,CAAEwC,MAAM,CAAEyZ,CAAC,CAAEkU,CAAC,CAAE,CAChC,OAAO,IAAIkY,OAAQ,CAAA,IAAI,CAAC1B,MAAM,CAAE,CAC9B3mC,IAAMA,CAAAA,IAAAA,CACNqiB,MAAOpG,CACPqG,CAAAA,MAAAA,CAAQ6N,EACR3tB,MAAQA,CAAAA,MAAAA,CACR2lC,QAAS,KACTD,CAAAA,OAAAA,CAAS,MACTkC,SAAWzW,CAAAA,cAAAA,CACX4W,UAAW5W,cACX8W,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACZ,CAAA,CACF,CACAqY,MAAOglT,CAAAA,WAAW,CAAE,CAClB,IAAI,CAAC/yS,YAAY,CAACjS,MAAM,CAACglT,WAAaA,CAAAA,WAAAA,CAAAA,CACtC,IAAI,CAACtnH,YAAY,CAAC19L,MAAM,CAACglT,YAAaA,WACxC,EAAA,CACAxlP,MAAOyqP,CAAAA,MAAM,CAAEj2K,UAAU,CAAEk2K,WAAW,CAAE,CACtC,GAAI,IAAI,CAACz0S,UAAU,CAAC7O,MAAM,CAACqjT,MAAAA,CAAQj2K,WAAYk2K,WAAc,CAAA,CAAA,CAC3D,IAAI,CAACz0S,UAAU,CAAC+pD,MAAM,GACxB,CACF,CA9DAjkG,WAAYkiC,CAAAA,MAAM,CAAC,CACjB,IAAI,CAACD,EAAE,CAAGA,IACV,CAAA,IAAI,CAACC,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC66L,YAAY,CAAG,IAAI,CAAC1yK,aAAa,CAAC,YAAcr5B,CAAAA,mBAAAA,CAAqB,CAAG,CAAA,CAAA,CAC7E,CAAA,IAAI,CAACg+T,WAAW,CAAG,IAAI,CAAC3kS,aAAa,CAAC,OAAQr5B,mBAAqB,CAAA,CAAA,CAAG,EACtE,CAAA,IAAI,CAACi+T,WAAW,CAAG,IAAI,CAAC5kS,aAAa,CAAC,MAAA,CAAQr5B,mBAAqB,CAAA,CAAA,CAAG,EACtE,CAAA,IAAI,CAACk+T,aAAa,CAAG,IAAI,CAAC7kS,aAAa,CAAC,QAAA,CAAUr5B,mBAAqB,CAAA,CAAA,CAAG,EAC1E,CAAA,IAAI,CAAC0lB,YAAY,CAAG,IAAI8G,YAAa,CAAA,CACnCjiD,IAAM,CAAA,CAAC,qBAAqB,EAAE,IAAI,CAAC0mC,EAAE,CAAC,CAAC,CACvC2c,aAAc,CACZ,IAAI,CAACm+K,YAAY,CACjB,IAAI,CAACmyH,aAAa,CAClB,IAAI,CAACF,WAAW,CAChB,IAAI,CAACC,WAAW,CACjB,CACDhsT,KAAAA,CAAO,MACP4E,KAAO,CAAA,IACT,EACA,CAAA,IAAI,CAACs6L,YAAY,CAAG,IAAI,CAAC93K,aAAa,CAAC,mBAAoB53B,gBAAkB,CAAA,CAAA,CAAG,EAChF,CAAA,IAAI,CAACynB,UAAU,CAAG,IAAIu0S,0BAAAA,CAA2BvsT,MACjD,CAAA,CAAA,IAAI,CAACgY,UAAU,CAAC7B,IAAI,CAAC,IAAI,CAAC3B,YAAY,EACxC,CA0CF,CAEA,MAAM04S,eA2CJhuT,OAAU,EAAA,CACR,IAAI,CAAC47F,KAAK,CAACG,mBAAmB,CAAC,CAC7B,IAAI,CAACN,YAAY,CAClB,CACD,CAAA,IAAI,CAACqM,SAAS,CAAC9nG,OAAO,EACtB,CAAA,IAAI,CAACy7F,YAAY,CAACz7F,OAAO,GAC3B,CACAiuT,YAAAA,CAAap3S,KAAK,CAAE,CAClB,IAAI,CAAC4kF,YAAY,CAAC6N,eAAe,CAAGlzI,IAAAA,CAAK0V,IAAI,CAAC+qC,KAAAA,CAAQ0jL,mBAAmBS,YAAY,CAAA,CACrF,IAAI,CAAClzF,SAAS,CAACvnC,YAAY,CAAC,YAAa1pD,KACzC,CAAA,CAAA,IAAI,CAAC4kF,YAAY,CAACsO,OAAO,CAAGlzF,KAAQ,CAAA,EACtC,CACAq3S,eAAAA,CAAgB/1H,SAAS,CAAE,CACzB,MAAMg2H,gBAAmBjkV,CAAAA,IAAAA,CAAK0B,OAAO,CAACusN,SAAAA,CAAWoC,kBAAmBS,CAAAA,YAAY,CAChF,CAAA,GAAI,IAAI,CAACozH,oBAAoB,CAAGD,gBAAkB,CAAA,CAChD,IAAI,CAACC,oBAAoB,CAAGD,gBAC5B,CAAA,IAAI,CAAC3zH,eAAe,EAAEx6L,SACtB,CAAA,IAAI,CAACw6L,eAAe,CAAGD,mBAAmBY,qBAAqB,CAAC,IAAI,CAACr6L,MAAM,CAAEq3L,SAC7E,CAAA,CAAA,IAAI,CAAC18F,YAAY,CAAC0O,aAAa,CAAC,IAAI,CAACqwF,eAAe,CAAE,IAAA,EACxD,CACF,CACA6zH,kBAAAA,EAAqB,CACnB,MAAM9tN,IAAAA,CAAOg6F,kBAAmBO,CAAAA,UAAU,CAAC,IAAI,CAACh6L,MAAM,CAAA,CACtD,MAAMunT,WAAc,CAAA,IAAI,CAACiG,UAAU,CAACjG,WAAW,CAC/C,MAAM7tH,eAAAA,CAAkBD,mBAAmBY,qBAAqB,CAAC,IAAI,CAACr6L,MAAM,CAAEunT,WAAcA,CAAAA,WAAAA,CAAAA,CAC5F,MAAM5sN,YAAe,CAAA,IAAI0K,aAAa5F,IAAM,CAAA,IAAI,CAACuH,SAAS,CAC1DrM,CAAAA,YAAawL,CAAAA,IAAI,CAAG,IAAI,CAACA,IAAI,CAC7BxL,YAAa0O,CAAAA,aAAa,CAACqwF,eAAiB,CAAA,IAAA,CAC5C/+F,CAAAA,YAAa6N,CAAAA,eAAe,CAAG,CAAA,CAC/B,MAAM2vC,UAAAA,CAAa,IAAI,CAAC5B,UAAU,CAACvtC,MACnCrO,CAAAA,YAAauO,CAAAA,aAAa,CAAIF,MAC5B,EAAA,CAAA,MAAMykN,IAAMt1K,UAAWnvC,CAAAA,MAAM,GAAKA,MAClC,CAAA,OAAOykN,GACT,CACA,CAAA,OAAO9yN,YACT,CACAqqG,cAAAA,CAAezuD,UAAU,CAAE,CACzB,MAAMvtC,MAASutC,CAAAA,UAAAA,CAAWvtC,MAAM,CAChC,MAAM0kN,UAAa1kN,CAAAA,MAAAA,CAAOxxF,IAAI,CAC9B,MAAMhD,YAAew0F,CAAAA,MAAAA,EAAQx0F,aAC7B,KAAM,CAAE94B,KAAK,CAAEC,MAAM,CAAE,CAAG64B,YAAgB,EAAA,IAAI,CAACxU,MAAM,CACrD,MAAMmwD,QAAW,CAAA,IAAI,CAACw9P,cACtBx9P,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAGz0E,KAAQgyU,CAAAA,UAAAA,CAAWz7U,CAAC,CAClCk+E,QAAQ,CAAC,CAAA,CAAE,CAAGx0E,MAAS+xU,CAAAA,UAAAA,CAAWp4U,CAAC,CACnC,MAAM4pF,GAAK8pC,MAAQA,EAAAA,MAAAA,EAAQ9pC,GAC3B,GAAIA,EAAAA,EAAI+1C,MAAU/1C,EAAAA,EAAAA,CAAG4gE,KAAK,CAACx/J,IAAI,CAACtK,MAAM,GAAK,CAAG,CAAA,CAC5Cm6F,QAAQ,CAAC,CAAA,CAAE,EAAI,GACjB,CACA,IAAI,CAAC62C,SAAS,CAACvnC,YAAY,CAAC,UAAA,CAAYtP,UAC1C,CA3FAryF,WAAAA,CAAYkiC,MAAM,CAAEmmG,IAAI,CAAEowC,UAAU,CAAEz7C,KAAK,CAAE0yN,UAAU,CAAC,CACtD,IAAI,CAAC9zH,eAAe,CAAG,IACvB,CAAA,IAAI,CAAC4zH,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAACK,cAAc,CAAG,CACpB,CAAA,CACA,EACD,CACD,IAAI,CAAC3tT,MAAM,CAAGA,MACd,CAAA,IAAI,CAACmmG,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACowC,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACz7C,KAAK,CAAGA,KACb,CAAA,IAAI,CAAC0yN,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACxmN,SAAS,CAAG,IAAI+6D,eAAe,CAClC7pE,UAAAA,CAAY,uBACZM,UAAY,CAAA,qBAAA,CACZC,aAAc,qBACdN,CAAAA,UAAAA,CAAY,qBACZE,CAAAA,YAAAA,CAAc,qBACdh3E,CAAAA,UAAAA,CAAY,CACVigB,eAAiBztC,CAAAA,iBAAAA,CACjBuxM,iBAAkB3vM,eACpB,CACF,GACA,IAAI,CAACuxG,SAAS,CAACwqB,SAAS,CAAC,yBAA0B,IACnD,CAAA,CAAA,IAAI,CAACxqB,SAAS,CAACvnC,YAAY,CAAC,YAAA,CAAc+tP,UAAW3yH,CAAAA,YAAY,CACjE,CAAA,IAAI,CAAC7zF,SAAS,CAACvnC,YAAY,CAAC,MAAA,CAAQ+tP,WAAWV,WAAW,CAAA,CAC1D,IAAI,CAAC9lN,SAAS,CAACvnC,YAAY,CAAC,OAAQ+tP,UAAWT,CAAAA,WAAW,EAC1D,IAAI,CAAC/lN,SAAS,CAACvnC,YAAY,CAAC,SAAU+tP,UAAWR,CAAAA,aAAa,EAC9D,IAAI,CAAChmN,SAAS,CAACwqB,SAAS,CAAC,UAAA,CAAY,GACrC,CAAA,CAAA,IAAI,CAACxqB,SAAS,CAACvnC,YAAY,CAAC,WAAA,CAAa,GACzC,IAAI,CAACunC,SAAS,CAACvnC,YAAY,CAAC,aAAc+tP,UAAWvtH,CAAAA,YAAY,EACjE,IAAI,CAACj5F,SAAS,CAACvnC,YAAY,CAAC,WAAa,CAAA,EAAA,CAAA,CACzC,IAAI,CAACunC,SAAS,CAACwqB,SAAS,CAAC,CAAC,OAAO,EAAE,MAAO,CAAA,CAAC,CAAE,EAAA,CAC7C,CAAA,IAAI,CAACxqB,SAAS,CAACsC,IAAI,CAAG18G,aACtB,CAAA,IAAI,CAACo6G,SAAS,CAAC8pB,SAAS,CAAG9mC,mBAC3B,CAAA,IAAI,CAACgd,SAAS,CAACmqB,UAAU,CAAG,KAAA,CAC5B,IAAI,CAACnqB,SAAS,CAAC79F,MAAM,EACrB,CAAA,IAAI,CAACwxF,YAAY,CAAG,IAAI,CAAC4yN,kBAAkB,GAC3CzyN,KAAME,CAAAA,gBAAgB,CAAC,CACrB,IAAI,CAACL,YAAY,CAClB,EACH,CAmDF,CAEA,MAAMizN,gBAUJ,IAAI/oU,IAAAA,CAAKA,IAAI,CAAE,CACb,IAAI,CAACwE,KAAK,CAACv0B,IAAI,CAAC+vB,IAAAA,EAClB,CACA,IAAIA,IAAAA,EAAO,CACT,OAAO,IAAI,CAACwE,KACd,CACA,IAAIwkU,YAAa5vH,CAAAA,SAAS,CAAE,CAC1B,MAAM6vH,SAAW,CAAC,EAAE,IAAI,CAACxwS,QAAQ,EAAI,IAAI,CAACA,QAAQ,CAACywS,MAAM,CAAD,CACxD,GAAID,QAAU,CAAA,CACZ,GAAI7vH,SAAAA,CAAW,CACb,IAAI,CAAC3gL,QAAQ,CAACywS,MAAM,EAAEC,SAAAA,EAAa,CACnC,CAAA,IAAI,CAACC,aAAa,CAAGhwH,SAAAA,CAAUrnO,KAAK,GACtC,CAAA,KAAO,CACL,IAAI,CAACq3V,aAAa,CAAG,KACvB,CACF,CACF,CACA,IAAIJ,cAAe,CACjB,OAAO,IAAI,CAACI,aAAa,CAAG,IAAI,CAACA,aAAa,CAACr3V,KAAK,GAAK,IAC3D,CA5BAkH,YAAYw/C,QAAQ,CAAE6oF,IAAI,CAAE+hN,QAAAA,CAAW,CAAC,CAAC,CACvC,IAAI,CAACtB,SAAS,CAAG,IAAIzoV,GACrB,CAAA,IAAI,CAAC+pV,QAAQ,CAAG,CAChB,CAAA,IAAI,CAAC+F,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC5kU,KAAK,CAAG,IAAIrI,WACjB,CAAA,IAAI,CAACs8B,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC6oF,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC+hN,QAAQ,CAAGA,SAClB,CAqBF,CAEA,MAAMgG,YAAe,CAAA,IAAI51U,IACzB,CAAA,MAAM61U,eAAkB,CAAA,IAAIn8U,KAC5B,MAAMo8U,eAAAA,CAAkB,IAAIp8U,IAC5B,CAAA,MAAMq8U,WAAa,IAAIr8U,IAAAA,CACvB,MAAMs8U,kBAAAA,CAAqB,EAAE,CAC7B,IAAIttU,WACJ,CAAA,CACE,IAAI5V,KAAM,CAAA,CAAA,CAAG,EAAG,CAChB,CAAA,CAAA,IAAIA,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAChB,IAAIA,KAAM,CAAA,CAAA,CAAG,EAAG,CAChB,CAAA,CAAA,IAAIA,MAAM,CAAG,CAAA,CAAA,CAAG,GAChB,IAAIA,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAAA,CACjB,CACKmjV,MAAAA,oBAAAA,CAmBJrvT,SAAU,CACR,IAAI,CAACsvT,OAAO,CAAC7vV,KAAK,GAClB,IAAI,CAAC8vV,iBAAiB,CAAC9vV,KAAK,EAC5B,CAAA,IAAI,CAAC+vV,cAAc,CAAC14V,MAAM,CAAG,EAC/B,CACA24V,mBAAoB,CAClB,MAAMC,UAAY,EAAE,CACpB,IAAI,IAAI74V,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC24V,cAAc,CAAC14V,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,GAAI,IAAI,CAAC24V,cAAc,CAAC34V,CAAAA,CAAE,CAAE,CAC1B64V,SAAAA,CAAU/3V,IAAI,CAACd,CAAAA,EACjB,CACF,CACA,OAAO64V,SACT,CACAC,gBAAiBC,CAAAA,mBAAmB,CAAEC,kBAAkB,CAAEtqK,SAAS,CAAEuqK,MAAM,CAAEnB,YAAY,CAAE9tJ,gBAAgB,CAAE,CAC3G,MAAM55D,KAAO,IAAI,CAAC4nN,MAAM,CAAC9vN,KAAK,CAACwmD,SAAAA,CAAU,CACzC4pK,UAAAA,CAAWv5V,IAAI,CAACqxI,IAAAA,CAAKo2H,MAAM,CAACr7O,MAAM,EAAEvN,GAAG,CAACm7U,qBACxC,IAAIl8U,QAAAA,CAAWy7U,WAAWr4V,MAAM,EAAA,CAChC,GAAI+pM,gBAAmB,CAAA,CAAA,EAAKntL,SAAW,GAAM,CAAA,CAC3C,MAAMq8U,eAAAA,CAAkBF,kBAAmB97U,CAAAA,GAAG,CAACo7U,UAAcz7U,CAAAA,CAAAA,QAAAA,CAC7D,GAAIq8U,eAAkB,CAAA,CAAA,CAAG,CACvB,MAAMpoV,CAAAA,CAAI,CAACooV,eAAAA,CACX,MAAM1lO,MAAAA,CAAS,EAAI1iH,CAAKk5L,EAAAA,iBAAmB,CAAA,CAAA,CAC3CntL,UAAY22G,OACd,CACF,CACA,IAAI,IAAI2lO,GAAAA,CAAM,EAAGA,GAAMF,CAAAA,MAAAA,CAAQE,MAAM,CACnC,GAAIt8U,SAAWi7U,YAAY,CAACqB,IAAI,CAAE,CAChC,OAAOA,GACT,CACF,CACA,OAAOF,MACT,CACAG,qBAAsBhpN,CAAAA,IAAI,CAAEipN,eAAe,CAAEJ,MAAM,CAAE3uJ,iBAAiB,CAAE,CACtE,GAAIA,iBAAAA,CAAoB,EAAG,CACzB,MAAMgvJ,mBAAsB/5V,CAAAA,IAAAA,CAAKmU,GAAG,CAACulV,OAAQI,eAAkB/uJ,CAAAA,iBAAAA,CAAAA,CAC/D,IAAI,IAAI6uJ,GAAAA,CAAME,gBAAiBF,GAAOG,EAAAA,mBAAAA,CAAqBH,GAAM,EAAA,CAAA,CAC/D,MAAMI,EAAAA,CAAKnpN,KAAKopN,IAAI,CAACL,IAAI,CAACM,SAAS,CACnC,GAAIF,EAAAA,GAAO,CAAC,CAAK,EAAA,IAAI,CAACvB,MAAM,CAAC0B,eAAe,CAACH,EAAAA,CAAAA,CAAK,CAChD,OAAOJ,GACT,CACF,CACA,IAAI,IAAIA,IAAMG,mBAAqBH,CAAAA,GAAAA,EAAOE,gBAAiBF,GAAM,EAAA,CAAA,CAC/D,MAAMI,EAAKnpN,CAAAA,IAAAA,CAAKopN,IAAI,CAACL,GAAI,CAAA,CAACM,SAAS,CACnC,GAAIF,KAAO,CAAC,CAAA,CAAG,CACb,OAAOJ,GACT,CACF,CACF,CACA,OAAOE,eACT,CACAM,eAAAA,CAAgBvpN,IAAI,CAAEwpN,eAAe,CAAEP,eAAe,CAAE,CACtD,GAAIO,eAAAA,GAAoB,CAAC,CAAKP,EAAAA,eAAAA,GAAoB,CAAC,CAAG,CAAA,OACtD,GAAIO,eAAoBP,GAAAA,eAAAA,CAAiB,CACvC,MAAME,EAAKnpN,CAAAA,IAAAA,CAAKopN,IAAI,CAACH,eAAAA,CAAgB,CAACI,SAAS,CAC/C,GAAIF,EAAO,GAAA,CAAC,CAAG,CAAA,CACb,IAAI,CAACvB,MAAM,CAAC6B,kBAAkB,CAACN,EAAI,CAAA,IAAI,CAACO,WAAW,CAAA,CACnD,GAAI,CAAC,IAAI,CAAC9B,MAAM,CAAC0B,eAAe,CAACH,EAAK,CAAA,CAAA,CACpC,IAAI,CAACQ,eAAe,CAACzpV,GAAG,CAACipV,IAC3B,CACF,CACA,MACF,CACA,MAAMS,UAAYz6V,IAAKoU,CAAAA,GAAG,CAAC0lV,eAAAA,CAAiBO,eAAkB,CAAA,CAAA,CAAA,CAC9D,IAAI,IAAIT,GAAAA,CAAMa,UAAWb,GAAOE,EAAAA,eAAAA,CAAiBF,MAAM,CACrD,MAAMI,EAAKnpN,CAAAA,IAAAA,CAAKopN,IAAI,CAACL,IAAI,CAACM,SAAS,CACnC,GAAIF,EAAAA,GAAO,CAAC,CAAG,CAAA,CACb,IAAI,CAACvB,MAAM,CAAC6B,kBAAkB,CAACN,EAAAA,CAAI,IAAI,CAACO,WAAW,EACnD,GAAI,CAAC,IAAI,CAAC9B,MAAM,CAAC0B,eAAe,CAACH,IAAK,CACpC,IAAI,CAACQ,eAAe,CAACzpV,GAAG,CAACipV,EAC3B,EAAA,CACA,KACF,CACF,CACF,CACAU,SAAUz5K,CAAAA,UAAU,CAAEjuK,MAAM,CAAE,CAC5B,MAAM2nV,mBAAsB15K,CAAAA,UAAAA,CAAWl2D,WAAW,EAClD,CAAA,MAAM6vO,qBAAuB,IAAI,CAAC38K,SAAS,CAACptC,IAAI,CAACzI,iBAAiB,EAClEwwN,CAAAA,YAAAA,CAAap5V,IAAI,CAACo7V,oBAAAA,CAAAA,CAAsBp0U,MAAM,EAC9C,CAAA,MAAMgzU,oBAAsBZ,YAAah0U,CAAAA,cAAc,CAAC+1U,mBAAqB9B,CAAAA,eAAAA,CAAAA,CAC7E,MAAMgC,kBAAqB55K,CAAAA,UAAAA,CAAW/6B,OAAO,CAC7C,MAAMuzM,mBAAqBb,YAAa12U,CAAAA,eAAe,CAAC24U,kBAAAA,CAAoB/B,eAAiBj4V,CAAAA,CAAAA,SAAS,GACtG,MAAM64V,MAAAA,CAAS,IAAI,CAACjB,MAAM,CAACC,SAAS,CAAG,CACvC,CAAA,MAAMH,YAAe,CAAA,IAAI,CAACt6K,SAAS,CAACs6K,YAAY,EAAI,CAClD,EACA,EACA,CAAA,EAAA,CACA,EACA,CAAA,EAAA,CACD,CACD,KAAM,CAAE9tJ,gBAAgB,CAAEE,WAAW,CAAEE,WAAW,CAAEE,iBAAoB,CAAA,CAAC,CAAE,CAAG/3L,MAAAA,CAC9E,MAAM8nV,QAAW96V,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGpU,KAAKmU,GAAG,CAACw2L,WAAe,EAAA,CAAA,CAAG+uJ,MACxD,CAAA,CAAA,CAAA,MAAMqB,SAAW/6V,IAAKoU,CAAAA,GAAG,CAAC0mV,QAAU96V,CAAAA,IAAAA,CAAKmU,GAAG,CAAC02L,WAAAA,EAAe6uJ,MAAQA,CAAAA,MAAAA,CAAAA,CAAAA,CACpE,MAAM/wN,KAAAA,CAAQ,IAAI,CAAC8vN,MAAM,CAAC9vN,KAAK,CAC/B,IAAI,IAAIwmD,SAAAA,CAAY,CAAGA,CAAAA,SAAAA,CAAYxmD,KAAMjoI,CAAAA,MAAM,CAAEyuL,SAAY,EAAA,CAAA,CAC3D,MAAMt+C,IAAOlI,CAAAA,KAAK,CAACwmD,SAAU,CAAA,CAC7B,IAAI2qK,eAAkB,CAAA,IAAI,CAACP,gBAAgB,CAACC,oBAAqBC,kBAAoBtqK,CAAAA,SAAAA,CAAWuqK,OAAQnB,YAAc9tJ,CAAAA,gBAAAA,CAAAA,CACtH,GAAIqvJ,eAAAA,CAAkBgB,QAAUhB,CAAAA,eAAAA,CAAkBgB,SAClD,GAAIhB,eAAAA,CAAkBiB,SAAUjB,eAAkBiB,CAAAA,QAAAA,CAClD,MAAMC,eAAkB,CAAA,IAAI,CAACC,QAAQ,CAAC9rK,SAAAA,CAAU,CAChD,MAAMkrK,eAAAA,CAAkB,IAAI,CAACR,qBAAqB,CAAChpN,IAAMipN,CAAAA,eAAAA,CAAiBJ,MAAQ3uJ,CAAAA,iBAAAA,CAAAA,CAClF,GAAIsvJ,eAAAA,GAAoBW,gBAAiB,CACvC,MAAME,iBAAmBF,eAAmB,EAAA,CAAA,CAAInqN,KAAKopN,IAAI,CAACe,gBAAgB,CAACd,SAAS,CAAG,CAAC,CAAA,CACxF,MAAMiB,gBAAmBd,CAAAA,eAAAA,EAAmB,EAAIxpN,IAAKopN,CAAAA,IAAI,CAACI,eAAAA,CAAgB,CAACH,SAAS,CAAG,CAAC,CAAA,CACxF,MAAMv1J,UAAau2J,CAAAA,gBAAAA,GAAqB,CAAC,CACzC,CAAA,MAAME,aAAgBD,CAAAA,gBAAAA,GAAqB,CAAC,CAAA,CAC5C,MAAME,YAAe,CAAA,IAAI,CAAClC,iBAAiB,CAAC32V,GAAG,CAAC2sL,SAAAA,CAAAA,CAChD,GAAIksK,YAAAA,CAAc,CAChB,GAAIA,aAAaC,YAAY,GAAKH,iBAAkB,CAClD,MAAMI,qBAAuB,IAAI,CAACnC,cAAc,CAACiC,YAAAA,CAAaC,YAAY,CAAC,CAC3E,GAAIC,oBAAsB,CAAA,CACxB,IAAI,CAACC,gBAAgB,CAACH,YAAAA,CAAaC,YAAY,CAAEnsK,WACnD,CACA,GAAIwV,YAAcy2J,aAAe,CAAA,CAC/B,IAAI,CAACjC,iBAAiB,CAACnwV,GAAG,CAACmmL,SAAAA,CAAW,CACpCssK,YAAcJ,CAAAA,YAAAA,CAAaI,YAAY,CACvCH,YAAAA,CAAcH,gBAChB,CACF,EAAA,CAAA,KAAO,CACL,IAAI,CAAChC,iBAAiB,CAAC7vV,MAAM,CAAC6lL,WAChC,CACF,CACF,CACA,GAAI,CAACwV,YAAcy2J,aAAe,CAAA,CAChC,MAAMM,aAAgB,CAAA,IAAI,CAACC,kBAAkB,CAACn5V,GAAG,CAAC2sL,SAAAA,CAAAA,CAClD,GAAIusK,aAAAA,GAAkBnzV,SAAamzV,EAAAA,aAAAA,GAAkBP,iBAAkB,CACrE,IAAI,CAACK,gBAAgB,CAACE,cAAevsK,SACrC,CAAA,CAAA,IAAI,CAACwsK,kBAAkB,CAACryV,MAAM,CAAC6lL,SACjC,EAAA,CACA,IAAI,CAACysK,gBAAgB,CAACT,gBAAkBhsK,CAAAA,SAAAA,CAAWkrK,eACnD,CAAA,CAAA,MAAMwB,YAAe,CAAA,IAAI,CAACzC,cAAc,CAAC+B,iBAAiB,CAC1D,GAAIU,cAAc7zS,QAAU,CAAA,CAC1B,IAAI,CAACizS,QAAQ,CAAC9rK,SAAU,CAAA,CAAGkrK,gBAC3B,IAAI,CAACsB,kBAAkB,CAACryV,MAAM,CAAC6lL,SAAAA,EACjC,CAAO,KAAA,CACL,IAAI,CAACwsK,kBAAkB,CAAC3yV,GAAG,CAACmmL,UAAWgsK,gBACzC,EAAA,CACF,CAAO,KAAA,GAAIx2J,UAAc,EAAA,CAACy2J,cAAe,CACvC,MAAMU,cAAgB,IAAI,CAAC3C,iBAAiB,CAAC32V,GAAG,CAAC2sL,SAAAA,CAAAA,CACjD,GAAI2sK,aAAAA,CAAe,CACjB,IAAI,CAACN,gBAAgB,CAACM,aAAAA,CAAcR,YAAY,CAAEnsK,SAAAA,CAAAA,CAClD,IAAI,CAACgqK,iBAAiB,CAAC7vV,MAAM,CAAC6lL,WAChC,CACA,IAAI,CAACqsK,gBAAgB,CAACN,gBAAkB/rK,CAAAA,SAAAA,CACxC,CAAA,IAAI,CAAC8rK,QAAQ,CAAC9rK,UAAU,CAAG,CAAC,EAC5B,IAAI,CAACwsK,kBAAkB,CAACryV,MAAM,CAAC6lL,WACjC,CAAO,KAAA,GAAIwV,YAAcy2J,aAAe,CAAA,CACtC,IAAI,CAACQ,gBAAgB,CAACT,gBAAAA,CAAkBhsK,SAAWkrK,CAAAA,eAAAA,CAAAA,CACnD,MAAMwB,YAAe,CAAA,IAAI,CAACzC,cAAc,CAAC+B,iBAAiB,CAC1D,GAAIU,cAAc7zS,QAAU,CAAA,CAC1B,IAAI,CAACwzS,gBAAgB,CAACN,gBAAkB/rK,CAAAA,SAAAA,CAAAA,CACxC,IAAI,CAACgqK,iBAAiB,CAAC7vV,MAAM,CAAC6lL,SAAAA,CAC9B,CAAA,IAAI,CAAC8rK,QAAQ,CAAC9rK,SAAAA,CAAU,CAAGkrK,eAC3B,CAAA,IAAI,CAACsB,kBAAkB,CAACryV,MAAM,CAAC6lL,SACjC,EAAA,CAAA,KAAO,CACL,IAAI,CAACgqK,iBAAiB,CAACnwV,GAAG,CAACmmL,SAAAA,CAAW,CACpCssK,YAAAA,CAAcP,iBACdI,YAAcH,CAAAA,gBAChB,GACA,IAAI,CAACQ,kBAAkB,CAACryV,MAAM,CAAC6lL,SAAAA,EACjC,CACF,CACF,CACA,IAAI,CAACirK,eAAe,CAACvpN,IAAAA,CAAMwpN,gBAAiBP,eAC9C,EAAA,CACF,CACA8B,gBAAAA,CAAiB1B,SAAS,CAAE/qK,SAAS,CAAEyjK,QAAQ,CAAE,CAC/C,GAAIsH,YAAc,CAAC,CAAA,CAAG,OACtB,IAAIj8K,SAAY,CAAA,IAAI,CAACm7K,cAAc,CAACc,UAAU,CAC9C,GAAI,CAACj8K,SAAW,CAAA,CACdA,SAAY,CAAA,IAAIq6K,eAAgB,CAAA,IAAA,CAAM,IAAI,CAACr6K,SAAS,CAACptC,IAAI,CAAE+hN,SAC3D,CAAA,IAAI,CAACwG,cAAc,CAACc,UAAU,CAAGj8K,SAAAA,CACjC,MAAM89K,eAAkB,CAAA,IAAI,CAACC,iBAAiB,CAAC1yV,MAAM,CAAC4wV,SACtD,CAAA,CAAA,GAAI,CAAC6B,eAAiB,CAAA,CACpB,IAAI,CAACtD,MAAM,CAACxoS,WAAW,CAACiqS,SAC1B,EAAA,CACA,GAAI,CAAC,IAAI,CAAC+B,gBAAgB,CAAC/B,SAAY,CAAA,CAAA,CACrC,IAAI,CAACzB,MAAM,CAAC6B,kBAAkB,CAACJ,SAAAA,CAAW,IAAI,CAACK,WAAW,EAC1D,IAAI,CAACrB,OAAO,CAACnoV,GAAG,CAACmpV,SACnB,EAAA,CACF,CACA,MAAMvxN,KAAAA,CAAQ,IAAI,CAAC8vN,MAAM,CAAC9vN,KAAK,CAC/B,MAAMkI,IAAAA,CAAOlI,KAAK,CAACwmD,UAAU,CAC7B,MAAMyqK,IAAM/oN,IAAKopN,CAAAA,IAAI,CAACrH,QAAS,CAAA,CAC/B,MAAMlxJ,QAAAA,CAAW,IAAIp/K,IAAAA,CAAKs3U,IAAIzrV,MAAM,CAAEyrV,IAAIzrV,MAAM,CAAGyrV,IAAIn5S,KAAK,CAAG,CAC/Dw9H,CAAAA,CAAAA,SAAAA,CAAUqzK,SAAS,CAACtoV,GAAG,CAACmmL,SAAAA,CAAWuS,SACnC,CAAA,IAAI,CAACw6J,uBAAuB,CAAG,KACjC,CACAV,gBAAAA,CAAiBtB,SAAS,CAAE/qK,SAAS,CAAE,CACrC,GAAI+qK,YAAc,CAAC,CAAA,CAAG,OACtB,MAAMj8K,SAAY,CAAA,IAAI,CAACm7K,cAAc,CAACc,UAAU,CAChD,GAAI,CAACj8K,SAAW,CAAA,CACd,MACF,CACA,GAAIA,SAAAA,CAAW,CACbA,SAAUqzK,CAAAA,SAAS,CAAChoV,MAAM,CAAC6lL,UAC3B,CAAA,IAAI,CAAC+sK,uBAAuB,CAAG,IAAA,CAC/B,GAAIj+K,SAAUqzK,CAAAA,SAAS,CAAC3rV,IAAI,GAAK,EAAG,CAClC,GAAIs4K,UAAUj2H,QAAQ,CAAE,CACtB,IAAI,CAACm0S,gBAAgB,CAAC7yV,MAAM,CAAC20K,SAC/B,EAAA,CACA,IAAI,CAAC+9K,iBAAiB,CAACjrV,GAAG,CAACmpV,SAAAA,CAC3B,CAAA,IAAI,CAACd,cAAc,CAACc,SAAAA,CAAU,CAAG,IAAA,CACjC,IAAI,CAAChB,OAAO,CAAC5vV,MAAM,CAAC4wV,SACtB,EAAA,CACF,CACF,CACA+B,gBAAAA,CAAiB/B,SAAS,CAAE,CAC1B,MAAM93U,IAAM,IAAI,CAACq2U,MAAM,CAAC0B,eAAe,CAACD,SACxC,CAAA,CAAA,GAAI93U,IAAK,CACP,MAAM67J,UAAY,IAAI,CAACm7K,cAAc,CAACc,SAAAA,CAAU,CAChD,GAAIj8K,SAAAA,CAAW,CACbA,SAAAA,CAAUj2H,QAAQ,CAAG5lC,IACrB67J,SAAU1uJ,CAAAA,IAAI,CAAC/vB,IAAI,CAAC4iB,IAAImN,IAAI,CAAA,CAC5B,IAAI,CAAC4sU,gBAAgB,CAACprV,GAAG,CAACktK,SAAAA,CAC1B,CAAA,IAAI,CAACi+K,uBAAuB,CAAG,IAAA,CAC/B,IAAI,CAACF,iBAAiB,CAAC1yV,MAAM,CAAC4wV,SAAAA,CAAAA,CAC9B,OAAO,IACT,CACF,CACA,OAAO,KACT,CACAkC,SAAUC,CAAAA,SAAS,CAAE,CACnB,MAAMt3U,SAAW,IAAI,CAACk5J,SAAS,CAACptC,IAAI,CAAC9lB,WAAW,EAChD,CAAA,MAAMrqH,OAASqkB,QAASzH,CAAAA,QAAQ,CAAC,IAAI,CAACg/U,gBAAgB,CACtD,CAAA,GAAI57V,MAAS27V,CAAAA,SAAAA,CAAW,CACtB,OAAO,IACT,CACA,OAAO,KACT,CACAE,WAAAA,EAAc,CACZ,IAAI,CAACD,gBAAgB,CAAC98V,IAAI,CAAC,IAAI,CAACy+K,SAAS,CAACptC,IAAI,CAAC9lB,WAAW,EAC5D,EAAA,CACAl3E,OAAOsxF,KAAK,CAAE,CACZ,GAAI,IAAI,CAAC+zN,OAAO,CAACvzV,IAAI,CAAE,CACrB,IAAK,MAAMu0V,SAAa,IAAA,IAAI,CAAChB,OAAO,CAAC,CACnC,IAAI,CAACT,MAAM,CAAC6B,kBAAkB,CAACJ,SAAAA,CAAW,IAAI,CAACK,WAAW,CAC1D,CAAA,GAAI,IAAI,CAAC0B,gBAAgB,CAAC/B,SAAY,CAAA,CAAA,CACpClB,kBAAmBz3V,CAAAA,IAAI,CAAC24V,SAAAA,CAAAA,CACxB,IAAK,KAAM,CAAC/qK,UAAW,CAAEssK,YAAY,CAAEH,YAAY,CAAE,CAAC,GAAI,IAAI,CAACnC,iBAAiB,CAAC,CAC/E,GAAImC,YAAAA,GAAiBpB,UAAW,CAC9B,IAAI,CAACsB,gBAAgB,CAACC,YAAAA,CAActsK,WACpC,IAAI,CAACgqK,iBAAiB,CAAC7vV,MAAM,CAAC6lL,SAC9B,CAAA,CAAA,IAAIqtK,WAAc,CAAA,CAAA,CAClB,MAAMvB,QAAAA,CAAW,IAAI,CAACxC,MAAM,CAAC9vN,KAAK,CAACwmD,UAAU,CAAC8qK,IAAI,CAClD,IAAI,IAAIwC,EAAAA,CAAK,EAAGA,EAAKxB,CAAAA,QAAAA,CAASv6V,MAAM,CAAE+7V,EAAAA,EAAAA,CAAK,CACzC,GAAIxB,QAAQ,CAACwB,EAAG,CAAA,CAACvC,SAAS,GAAKoB,YAAAA,CAAc,CAC3CkB,WAAcC,CAAAA,EAAAA,CACd,KACF,CACF,CACA,IAAI,CAACxB,QAAQ,CAAC9rK,UAAU,CAAGqtK,YAC7B,CACF,CACF,CACF,CACA,GAAIxD,kBAAAA,CAAmBt4V,MAAM,CAAG,CAAG,CAAA,CACjC,IAAI,CAACg8V,cAAc,CAAG,KACxB,CACA,IAAK,MAAMxC,SAAAA,IAAalB,kBAAmB,CAAA,CACzC,IAAI,CAACE,OAAO,CAAC5vV,MAAM,CAAC4wV,SACtB,EAAA,CACAlB,mBAAmBt4V,MAAM,CAAG,EAC9B,CACA,IAAI,CAACi8V,uBAAuB,EAAA,CAC5B,MAAMvpT,KAAQ,CAAA,IAAI,CAAC8oT,uBACnB,CAAA,IAAI,CAACA,uBAAuB,CAAG,KAC/B,CAAA,OAAO9oT,KACT,CACAwpT,WAAAA,CAAYz3N,KAAK,CAAE,EACnB03N,qBAAAA,EAAwB,CACtB,MAAM38V,EAAI,IAAI,CAACw8V,cAAc,CAC7B,IAAI,CAACA,cAAc,CAAG,KAAA,CACtB,OAAOx8V,CACT,CACAy8V,uBAA0B,EAAA,CACxB,GAAI,IAAI,CAACnC,eAAe,CAAC70V,IAAI,CAAE,CAC7B,IAAK,MAAMu0V,SAAa,IAAA,IAAI,CAACM,eAAe,CAAC,CAC3C,IAAI,CAAC/B,MAAM,CAAC6B,kBAAkB,CAACJ,UAAW,IAAI,CAACK,WAAW,CAC1D,CAAA,GAAI,IAAI,CAAC9B,MAAM,CAAC0B,eAAe,CAACD,SAAAA,CAAAA,CAAY,CAC1ClB,kBAAmBz3V,CAAAA,IAAI,CAAC24V,SAC1B,EAAA,CACF,CACA,GAAIlB,kBAAAA,CAAmBt4V,MAAM,CAAG,CAAG,CAAA,CACjC,IAAI,CAACg8V,cAAc,CAAG,KACxB,CACA,IAAK,MAAMxC,SAAAA,IAAalB,mBAAmB,CACzC,IAAI,CAACwB,eAAe,CAAClxV,MAAM,CAAC4wV,SAAAA,EAC9B,CACAlB,kBAAmBt4V,CAAAA,MAAM,CAAG,EAC9B,CACF,CArTA8H,YAAYiwV,MAAM,CAAEx6K,SAAS,CAAEs8K,WAAW,CAAC,CACzC,IAAI,CAAC4B,gBAAgB,CAAG,IAAI3oV,GAC5B,CAAA,IAAI,CAAC0oV,uBAAuB,CAAG,KAC/B,CAAA,IAAI,CAAChD,OAAO,CAAG,IAAI1lV,GACnB,CAAA,IAAI,CAAC2lV,iBAAiB,CAAG,IAAItwV,GAC7B,CAAA,IAAI,CAACmzV,iBAAiB,CAAG,IAAIxoV,GAC7B,CAAA,IAAI,CAAC8oV,gBAAgB,CAAG,IAAI5/U,IAC5B,CAAA,IAAI,CAACggV,cAAc,CAAG,KACtB,CAAA,IAAI,CAAClC,eAAe,CAAG,IAAIhnV,GAC3B,CAAA,IAAI,CAACmoV,kBAAkB,CAAG,IAAI9yV,GAC9B,CAAA,IAAI,CAAC4vV,MAAM,CAAGA,MACd,CAAA,IAAI,CAACx6K,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACs8K,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACU,QAAQ,CAAG,IAAI//U,WAAWu9U,MAAO9vN,CAAAA,KAAK,CAACjoI,MAAM,CAAA,CAClD,IAAI,CAACu6V,QAAQ,CAACxnM,IAAI,CAAC,CAAC,GACpB,MAAMooF,QAAAA,CAAW48G,OAAOqE,KAAK,CAACp8V,MAC9B,CAAA,IAAI,CAAC04V,cAAc,CAAG,IAAI35V,KAAMo8O,CAAAA,QAAAA,CAAAA,CAAUpoF,IAAI,CAAC,IAAA,EACjD,CAqSF,CAEA,MAAMspM,MAAAA,CAAS,IAAIrgV,IACnB,CAAA,MAAMsgV,OAAS,IAAItgV,IACnB,OAAMugV,gBACJz0V,CAAAA,WAAAA,CAAYyxV,IAAI,CAAEiD,SAAS,CAAC,CAC1B,IAAI,CAACj2F,MAAM,CAAG,IAAIv7O,WAClB,CAAA,IAAI,CAACuuU,IAAI,CAAGA,KACZ8C,MAAO/zV,CAAAA,GAAG,CAACk0V,SAAU/oV,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAE+oV,SAAU/oV,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE+oV,SAAU/oV,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAA,CAC/D6oV,OAAOh0V,GAAG,CAACk0V,SAAU9oV,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAE8oV,SAAU9oV,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAE8oV,UAAU9oV,GAAG,CAAC,CAAE,CAAA,CAAA,CAC/D,IAAI,CAAC6yP,MAAM,CAAC/3O,SAAS,CAAC6tU,MAAQC,CAAAA,MAAAA,EAChC,CACF,CAEA,MAAMG,SAAY,CAAA,EAAE,CACpB,MAAMC,aAsCJC,eAAkB,EAAA,EAClBC,iBAAkBzsN,CAAAA,IAAI,CAAE0sN,SAAS,CAAE,CACjC,GAAI1sN,IAAKopN,CAAAA,IAAI,CAAE,CACbsD,SAAAA,CAAUh8V,IAAI,CAAC,CACb04V,KAAMppN,IAAKopN,CAAAA,IAAI,CACfuD,KAAAA,CAAO3sN,IAAK2sN,CAAAA,KAAK,CAErB,EAAA,CAAA,KAAO,GAAI3sN,IAAKkV,CAAAA,QAAQ,CAAE,CACxB,IAAK,MAAM2B,KAAS7W,IAAAA,IAAAA,CAAKkV,QAAQ,CAAC,CAChC,IAAI,CAACu3M,iBAAiB,CAAC51M,KAAO61M,CAAAA,SAAAA,EAChC,CACF,CACF,CACApD,eAAAA,CAAgBD,SAAS,CAAE,CACzB,OAAO,IAAI,CAACuD,aAAa,CAACj7V,GAAG,CAAC03V,SAAAA,CAChC,CACAjqS,WAAAA,CAAYiqS,SAAS,CAAE,CACrB,MAAMz5S,KAAQ,CAAA,IAAI,CAACi9S,aAAa,CAACxD,SAAU,CAAA,CAAG,CAC9C,CAAA,IAAI,CAACwD,aAAa,CAACxD,SAAU,CAAA,CAAGz5S,MAChC,IAAI,CAACk9S,SAAS,CAACr0V,MAAM,CAAC4wV,SACxB,EAAA,CACA/pS,YAAY+pS,SAAS,CAAE0D,aAAa,CAAE,CACpC,MAAMn9S,KAAAA,CAAQ,IAAI,CAACi9S,aAAa,CAACxD,SAAAA,CAAU,CAAG,CAC9C,CAAA,IAAI,CAACwD,aAAa,CAACxD,SAAAA,CAAU,CAAGz5S,KAAAA,CAChC,GAAIA,KAAU,GAAA,CAAA,CAAG,CACf,IAAI,CAACk9S,SAAS,CAAC30V,GAAG,CAACkxV,SAAAA,CAAW0D,aAChC,EAAA,CACF,CACAC,cAAe3D,CAAAA,SAAS,CAAEK,WAAW,CAAE,CACrC,GAAI,IAAI,CAACkD,aAAa,CAAC10V,GAAG,CAACmxV,SAAAA,CAAAA,CAAY,CACrC,MAAM4D,OAAAA,CAAU,IAAI,CAAChB,KAAK,CAAC5C,SAAAA,CAAU,CAAC5uV,GAAG,CACzCivV,WAAYhjH,CAAAA,MAAM,CAACumH,OACnB,CAAA,CAAA,IAAI,CAACL,aAAa,CAACn0V,MAAM,CAAC4wV,SAC1B,CAAA,CAAA,IAAI,CAACmD,eAAe,GACtB,CACF,CACAU,kBAAAA,CAAmBxD,WAAW,CAAE,CAC9B,GAAI,IAAI,CAACoD,SAAS,CAACh4V,IAAI,CAAG,EAAG,CAC3B,IAAI,CAACg4V,SAAS,CAACvwV,OAAO,CAAC,CAAC4wV,UAAW9D,SACjC,GAAA,CAAA,GAAI8D,WAAa,CAAG,CAAA,CAClB,GAAI,IAAI,CAACN,aAAa,CAACxD,SAAU,CAAA,GAAK,EAAG,CACvC,IAAI,CAAC2D,cAAc,CAAC3D,UAAWK,WACjC,EAAA,CACA4C,SAAU57V,CAAAA,IAAI,CAAC24V,SAAAA,EACjB,MAAO,CACL,IAAI,CAACyD,SAAS,CAAC30V,GAAG,CAACkxV,SAAAA,CAAW8D,SAAY,CAAA,CAAA,EAC5C,CACF,CAAA,CAAA,CACAb,UAAU/vV,OAAO,CAAC,GAAO,EAAA,IAAI,CAACuwV,SAAS,CAACr0V,MAAM,CAACyB,GAAAA,CAAAA,CAC/CoyV,CAAAA,SAAUz8V,CAAAA,MAAM,CAAG,EACrB,CACF,CACA45V,kBAAmBJ,CAAAA,SAAS,CAAEK,WAAW,CAAE,CACzC,GAAI,IAAI,CAACkD,aAAa,CAAC10V,GAAG,CAACmxV,SAAY,CAAA,CAAA,CACrC,MACF,CACA,MAAM4D,OAAAA,CAAU,IAAI,CAAChB,KAAK,CAAC5C,SAAU,CAAA,CAAC5uV,GAAG,CACzC,MAAM8W,GAAMm4U,CAAAA,WAAAA,CAAY0D,WAAW,CAACH,SACpC,GAAI17U,GAAAA,CAAK,CACP,IAAI,CAACq7U,aAAa,CAACz0V,GAAG,CAACkxV,SAAW93U,CAAAA,GAAAA,CAAAA,CAClC,GAAI,IAAI,CAACs7U,aAAa,CAACxD,SAAAA,CAAU,GAAK,CAAG,CAAA,CACvC,IAAI,CAACyD,SAAS,CAAC30V,GAAG,CAACkxV,SAAAA,CAAWK,YAAYqD,aAAa,EACzD,CACA,IAAI,CAACP,eAAe,EAAA,CACpB,MACF,CACA9C,YAAY5jH,IAAI,CAACmnH,SACnB,CAxGAt1V,WAAAA,CAAY01V,YAAY,CAAEzjV,IAAI,CAAC,CAC7B,IAAI,CAACgjV,aAAa,CAAG,IAAI50V,GACzB,CAAA,IAAI,CAAC80V,SAAS,CAAG,IAAI90V,GACrB,CAAA,IAAI,CAAC6vV,SAAS,CAAGj+U,IAAKi+U,CAAAA,SAAS,CAC/B,IAAI,CAACwF,YAAY,CAAGA,YAAAA,CACpB,MAAMC,OAAU/9V,CAAAA,IAAAA,CAAKwB,YAAY,CAACs8V,YAAAA,CAClC,CAAA,IAAI,CAACpB,KAAK,CAAGriV,IAAK2jV,CAAAA,SAAS,CAAC92V,GAAG,CAAC,GAAQ,GAAA,CACpCgE,GAAKlL,CAAAA,IAAAA,CAAK4B,cAAc,CAACsJ,GAAOlL,CAAAA,CAAAA,IAAAA,CAAKE,IAAI,CAAC69V,OAAAA,CAAS7yV,KAAOA,GAC1D+yV,CAAAA,QAAAA,CAAU,CAAC,CACb,CAAA,EACF,CAAA,IAAI,CAACX,aAAa,CAAG,IAAIxiV,UAAW,CAAA,IAAI,CAAC4hV,KAAK,CAACp8V,MAAM,CAAA,CACrD,MAAM68V,SAAAA,CAAY,EAAE,CACpB,IAAI,CAACD,iBAAiB,CAAC7iV,KAAK6jV,IAAI,CAAEf,SAClC,CAAA,CAAA,IAAI,CAAC50N,KAAK,CAAG40N,SAAAA,CAAUj2V,GAAG,CAAEi3V,WAC1B,MAAMtE,IAAAA,CAAO,EAAE,CACf,IAAI,IAAIx5V,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACi4V,SAAS,CAAEj4V,CAAI,EAAA,CAAA,CACrC,MAAM+9V,OAAUD,CAAAA,QAAAA,CAAStE,IAAI,CAACx5V,CAAAA,CAAEN,QAAQ,EAAG,CAAA,CAC3C,GAAIq+V,OAAS,CAAA,CACXvE,IAAK14V,CAAAA,IAAI,CAAC,CACRk0O,KAAM,IAAI,CAACqnH,KAAK,CAAC0B,OAAAA,CAAQ/oH,IAAI,CAAC,CAACnqO,GAAG,EAAI,EACtC4uV,CAAAA,SAAAA,CAAWsE,QAAQ/oH,IAAI,CACvBtnO,OAAQqwV,OAAQrwV,CAAAA,MAAM,EAAI,CAC1BsyC,CAAAA,KAAAA,CAAO+9S,OAAQ/9S,CAAAA,KAAK,EAAI,CAC1B,EACA,CAAA,IAAI,CAACq8S,KAAK,CAAC0B,QAAQ/oH,IAAI,CAAC,CAAC4oH,QAAQ,CAAG59V,EACtC,CAAO,KAAA,CACLw5V,KAAK14V,IAAI,CAAC,CACRk0O,IAAM,CAAA,EAAA,CACNykH,SAAW,CAAA,CAAC,CACZ/rV,CAAAA,MAAAA,CAAQ,EACRsyC,KAAO,CAAA,CACT,GACF,CACF,CACA,OAAO,IAAIw8S,gBAAAA,CAAiBhD,IAAMsE,CAAAA,QAAAA,CAASf,KAAK,CAClD,GACF,CAqEF,CAEA,MAAMiB,oBACJj2V,CAAAA,WAAAA,CAAY01V,YAAY,CAAEzjV,IAAI,CAAC,CAC7B,IAAI,CAAC8U,IAAI,CAAG,IAAI7D,WAChB,CAAA,IAAI,CAAC+sU,MAAM,CAAG,IAAI2E,YAAac,CAAAA,YAAAA,CAAczjV,MAC7C,IAAI,CAAC8U,IAAI,CAACL,SAAS,CAAC,IAAIxS,IAAAA,CAAKjC,IAAK6jV,CAAAA,IAAI,CAACd,KAAK,CAACrpV,GAAG,CAAA,CAAG,IAAIuI,IAAKjC,CAAAA,IAAAA,CAAK6jV,IAAI,CAACd,KAAK,CAACppV,GAAG,CACjF,EAAA,CACF,CAEA,MAAMsqV,gBAAAA,CAcJC,oBAAoBzH,MAAM,CAAE9rC,OAAO,CAAE,CACnC,MAAMwzC,IAAAA,CAAO,IAACj5V,EAAAA,CACZ,IAAIk5V,IAAO,CAAA,CAAA,CACX,IAAK,MAAMC,KAAAA,IAAS5H,OAAO,CACzB2H,IAAAA,EAAQ7+V,KAAK0V,IAAI,CAACopV,MAAM5M,YAAY,CAAGvsV,MACvC,GAAIk5V,IAAAA,CAAOl5V,KAAM,OAAO,KAC1B,CACA,OAAO,IACT,CAAA,CACA,IAAIo5V,GAAM,CAAA,CAAA,CACV,IAAIC,IAAO5zC,CAAAA,OAAAA,CACX,IAAI6zC,QAAW,CAAA,IAAA,CACf,MAAMF,GAAAA,EAAOC,IAAK,CAAA,CAChB,MAAME,GAAMl/V,CAAAA,IAAAA,CAAKmQ,KAAK,CAAE4uV,CAAAA,GAAMC,CAAAA,IAAG,EAAK,CAAA,CAAA,CACtC,GAAIJ,IAAAA,CAAKM,KAAM,CACbD,QAAAA,CAAWC,IACXF,IAAOE,CAAAA,GAAAA,CAAM,EACf,CAAO,KAAA,CACLH,IAAMG,GAAM,CAAA,EACd,CACF,CACA,GAAID,WAAa,IAAM,CAAA,CACrB,IAAI,CAAChN,WAAW,CAAG,CAAA,CACnB,OAAO,KACT,CACA,IAAI,CAACA,WAAW,CAAGgN,QAAAA,CACnB,OAAO,IACT,CACAr1T,OAAU,EAAA,CACR,IAAI,CAACstT,MAAM,CAAC9pV,OAAO,CAAC,KAAC0xV,EAAQA,MAAMl1T,OAAO,EAAA,CAC1C,CAAA,IAAI,CAACstT,MAAM,CAACx2V,MAAM,CAAG,EACvB,CACAy+V,WAAAA,CAAYjI,MAAM,CAAEvxV,IAAI,CAAE,CACxB,GAAIuxV,OAAOx2V,MAAM,GAAK,EAAG,CACvB,IAAI,CAACm1V,eAAe,CAAG,CACvB,CAAA,MACF,CACA,IAAI3jU,MAAQ,CACZ,CAAA,IAAK,MAAM4sU,KAAS5H,IAAAA,MAAAA,CAAO,CACzB,MAAMhF,YAAAA,CAAe4M,KAAM5M,CAAAA,YAAY,CACvC,MAAMkN,SAAWp/V,IAAK0V,CAAAA,IAAI,CAACw8U,YAAevsV,CAAAA,IAAAA,CAAAA,CAC1Cm5V,MAAM9M,QAAQ,CAAC9/T,KAAOktU,CAAAA,QAAAA,CAAUz5V,IAAMusV,CAAAA,YAAAA,CAAAA,CACtChgU,OAASktU,SACX,CACA,IAAI,CAACvJ,eAAe,CAAG3jU,KAAQvsB,CAAAA,KACjC,CA1DA6C,WAAYkiC,CAAAA,MAAM,CAAExrC,OAAO,CAAEg4V,MAAM,CAAC,CAClC,IAAI,CAACh4V,OAAO,CAAG,CACf,CAAA,IAAI,CAACmgW,iBAAiB,CAAG,KACzB,CAAA,IAAI,CAACC,YAAY,CAAG,KACpB,CAAA,IAAI,CAACpI,MAAM,CAAG,EAAE,CAChB,IAAI,CAACjF,WAAW,CAAG,CACnB,CAAA,IAAI,CAAC4D,eAAe,CAAG,CACvB,CAAA,IAAI,CAAC0J,eAAe,CAAG,EAAE,CACzB,IAAI,CAACrgW,OAAO,CAAGA,OACf,CAAA,IAAI,CAACg4V,MAAM,CAAGA,MAAAA,CACd,IAAI,CAACyH,mBAAmB,CAAC,IAAI,CAACzH,MAAM,CAAExsT,MAAO4tC,CAAAA,cAAc,EAC3D,IAAI,CAAC6mR,WAAW,CAAC,IAAI,CAACjI,MAAM,CAAE,IAAI,CAACjF,WAAW,EAChD,CA+CF,CAEA,MAAM7pH,cAAiB,CAAA,IAAI1rN,IAC3B,CAAA,MAAM2rN,gBAAkB,IAAI3rN,IAAAA,CAC5B,MAAM8iV,WAAc,CAAA,IAAI9iV,KACxB,MAAMkzN,WAAAA,CAAc,IAAI5sN,IACxB,CAAA,MAAMy8U,wBAA0B,IAAIjsV,GAAAA,CACpC,MAAMksV,oBAAuB,CAAA,IAAIlsV,IACjC,MAAMmsV,cAAAA,CAAiB,EAAE,CACzB,MAAMC,iBAAAA,CAAoB,IAAIpsV,GAC9B,CAAA,MAAMqsV,cAAgB,CACpB,CACE,EACA,CACA,CAAA,CAAA,CACD,CACD,CACE,CACA,CAAA,CAAA,CACA,EACD,CACD,CACE,EACA,CACA,CAAA,CAAA,CACD,CACD,CACE,CAAA,CACA,CACA,CAAA,CAAA,CACD,CACD,CACE,EACA,CACA,CAAA,CAAA,CACD,CACF,CACD,CACE,IAAI/pV,KAAM,CAAA,CAAA,CAAG,EAAG,CAChB,CAAA,CAAA,IAAIA,MAAM,CAAG,CAAA,CAAA,CAAG,GAChB,IAAIA,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAAA,CAChB,IAAIA,KAAAA,CAAM,CAAG,CAAA,CAAA,CAAG,GAChB,IAAIA,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAAA,CACjB,CACKgqV,MAAAA,aAAAA,CAsBJl2T,OAAU,EAAA,CACR,IAAI,CAACsuT,UAAU,CAACtuT,OAAO,GACvB,IAAI,CAACu5G,QAAQ,CAACv5G,OAAO,EACrB,CAAA,IAAI,CAAC4lM,MAAM,CAAC5lM,OAAO,GACrB,CACAm2T,YAAe,EAAA,CACb,MAAMvwH,MAAS,CAAA,IAAI0mH,oBACnB1mH,MAAO1nO,CAAAA,EAAE,CAAC,QAAU,CAAA,CAAC24C,MAAOvhD,OAASk3V,CAAAA,SAAAA,GAAAA,CACnC,IAAI,CAACD,QAAQ,CAAC11S,KAAAA,CAAOvhD,OAASk3V,CAAAA,SAAAA,EAChC,GACA,OAAO5mH,MACT,CACAwwH,SAAUC,CAAAA,UAAU,CAAE,CACpBR,uBAAAA,CAAwBp2V,KAAK,EAAA,CAC7B,IAAK,MAAM+pB,KAAK6sU,UAAW,CAAA,CACzB,GAAI7sU,CAAE40B,CAAAA,QAAQ,YAAYy2S,oBAAsB,CAAA,CAC9C,GAAI,CAAC,IAAI,CAACyB,eAAe,CAACn3V,GAAG,CAACqqB,CAAI,CAAA,CAAA,CAChC,IAAI,CAAC8sU,eAAe,CAACl3V,GAAG,CAACoqB,EAAG,IAAI6lU,oBAAAA,CAAqB7lU,EAAE40B,QAAQ,CAACywS,MAAM,CAAErlU,CAAAA,CAAG,IAAI,CAAC+sU,QAAQ,CAAC5F,WAAW,CACtG,EAAA,CACAmF,qBAAqB3uV,GAAG,CAACqiB,GAC3B,CAAO,KAAA,CACLqsU,uBAAwB1uV,CAAAA,GAAG,CAACqiB,CAAAA,EAC9B,CACF,CACA,IAAK,KAAM,CAAC6qJ,SAAAA,CAAWmiL,KAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CACnD,GAAI,CAACR,oBAAAA,CAAqB32V,GAAG,CAACk1K,SAAAA,CAAAA,CAAY,CACxC,IAAI,CAACiiL,eAAe,CAAC52V,MAAM,CAAC20K,SAC5B,CAAA,CAAA,IAAI,CAACoiL,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACC,wBAAwB,CAAC/+V,IAAI,CAAC6+V,IACrC,EAAA,CACF,CACA,IAAI,CAACC,oBAAoB,CAAG,IAAI,CAACE,eAAe,CAAC7/V,MAAM,GAAK++V,uBAAwB95V,CAAAA,IAAI,CACxF,GAAI,CAAC,IAAI,CAAC06V,oBAAoB,CAAE,CAC9B,IAAI,IAAI5/V,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8/V,eAAe,CAAC7/V,MAAM,CAAED,IAAI,CAClD,MAAM6+D,SAAW,IAAI,CAACihS,eAAe,CAAC9/V,CAAAA,CAAE,CACxC,GAAI,CAACg/V,uBAAwB12V,CAAAA,GAAG,CAACu2D,QAAAA,CAAAA,CAAW,CAC1C,IAAI,CAAC+gS,oBAAoB,CAAG,IAAA,CAC5B,KACF,CACF,CACF,CACA,IAAI,CAACE,eAAe,CAAC7/V,MAAM,CAAG,EAC9B,IAAK,MAAM0yB,KAAKqsU,uBAAwB,CAAA,CACtC,IAAI,CAACc,eAAe,CAACh/V,IAAI,CAAC6xB,CAAAA,EAC5B,CACAqsU,uBAAwBp2V,CAAAA,KAAK,GAC7Bq2V,oBAAqBr2V,CAAAA,KAAK,GAC5B,CACAm3V,gBAAAA,EAAmB,CACjB,MAAMC,YAAAA,CAAe,IAAI,CAACJ,oBAAoB,EAAI,IAAI,CAACK,WAAW,CAAC/6V,IAAI,GAAK,EAC5E,GAAI86V,YAAAA,CAAc,CAChB,IAAI,CAACE,qBAAqB,EAC1B,CAAA,MAAMzJ,MAAS,CAAA,EAAE,CACjB,IAAK,MAAM9jU,CAAK,IAAA,IAAI,CAACmtU,eAAe,CAAC,CACnC,MAAMnJ,SAAAA,CAAY,IAAItF,UAAAA,CAAW,IAAI,CAACpnT,MAAM,CAAEtX,CAAAA,CAAE40B,QAAQ,CAAE50B,CAAAA,CAAAA,CAC1D8jU,OAAO31V,IAAI,CAAC61V,WACd,CACA,IAAK,KAAM,EAAGgJ,IAAAA,CAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1CE,IAAKjE,CAAAA,gBAAgB,CAAC/uV,OAAO,CAAC,CAACgmB,EAAAA,CAC7B,GAAIA,CAAE40B,CAAAA,QAAQ,CAAE,CACdkvS,MAAAA,CAAO31V,IAAI,CAAC,IAAIuwV,UAAAA,CAAW,IAAI,CAACpnT,MAAM,CAAEtX,CAAE40B,CAAAA,QAAQ,CAAE50B,CACtD,CAAA,EAAA,CACF,CACF,EAAA,CACA8jU,MAAO9pV,CAAAA,OAAO,CAAC,KAAC0xV,EAAAA,CACd,IAAI,CAACtvH,MAAM,CAACgnH,UAAU,CAACsI,MAAM92S,QAAQ,CAACvd,EAAE,CAAEq0T,KAAAA,CAAM92S,QAAQ,CAACm9K,OAAO,EAClE,CACA,CAAA,CAAA,MAAMy7H,QAAW,CAAA,IAAIlC,gBAAiB,CAAA,IAAI,CAACh0T,MAAM,CAAE,IAAI,CAACi2T,qBAAqB,CAAEzJ,MAC/E,CAAA,CAAA,IAAK,KAAM,EAAGkJ,IAAK,CAAA,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1C,GAAIE,KAAKpE,iBAAiB,EAAIoE,IAAKpE,CAAAA,iBAAiB,CAACr2V,IAAI,CAAE,CACzD,IAAK,MAAMu0V,SAAakG,IAAAA,IAAAA,CAAKpE,iBAAiB,CAAC,CAC7C4E,SAASrB,eAAe,CAACh+V,IAAI,CAAC,CAC5B6+V,KAAK3H,MAAM,CACXyB,UACD,EACH,CACAkG,IAAKpE,CAAAA,iBAAiB,CAAC3yV,KAAK,GAC9B,CACF,CACA,GAAI,IAAI,CAACi3V,wBAAwB,CAAC5/V,MAAM,CAAE,CACxC,IAAK,MAAM0/V,QAAQ,IAAI,CAACE,wBAAwB,CAAC,CAC/C,MAAMhH,SAAY8G,CAAAA,IAAAA,CAAK/G,iBAAiB,EAAA,CACxC,IAAK,MAAMa,aAAaZ,SAAU,CAAA,CAChCsH,SAASrB,eAAe,CAACh+V,IAAI,CAAC,CAC5B6+V,KAAK3H,MAAM,CACXyB,UACD,EACH,CACAkG,KAAKx2T,OAAO,GACd,CACA,IAAI,CAAC02T,wBAAwB,CAAC5/V,MAAM,CAAG,EACzC,CACA,IAAI,CAACggW,WAAW,CAAC13V,GAAG,CAAC,IAAI,CAAC23V,qBAAqB,CAAEC,QAAAA,CACjD,CAAA,IAAI,CAACP,oBAAoB,CAAG,MAC9B,CACF,CACAlK,QAAAA,CAAS11S,KAAK,CAAEvhD,OAAO,CAAEk3V,SAAS,CAAE,CAClC,IAAI,CAACyK,aAAa,CAAG3hW,OACrB,CAAA,MAAM4hW,SAAW,IAAI,CAACJ,WAAW,CAACl+V,GAAG,CAACtD,OAAU,CAAA,CAAA,CAAA,CAChD,GAAI4hW,QAAU,CAAA,CACZ,IAAI,CAACJ,WAAW,CAACp3V,MAAM,CAACpK,OAAAA,CAAU,GAClC4hW,QAASl3T,CAAAA,OAAO,GAClB,CACA,MAAMm3T,UAAa,CAAA,IAAI,CAACL,WAAW,CAACl+V,GAAG,CAACtD,SACxC,GAAI6hW,UAAAA,CAAY,CACd,GAAI,CAACA,UAAWzB,CAAAA,YAAY,CAAE,CAC5ByB,WAAWzB,YAAY,CAAG,KAC1B,MAAMrN,WAAAA,CAAc8O,WAAW9O,WAAW,CAC1C,GAAIA,WAAgB,GAAA,IAAI,CAACiG,UAAU,CAACjG,WAAW,CAAE,CAC/C,IAAI,CAACiG,UAAU,CAACjrT,MAAM,CAACglT,WAAAA,CAAAA,CACvB,IAAI,CAAC9uM,QAAQ,CAAC20M,eAAe,CAAC7F,YAAcA,WAC9C,EAAA,CACA,MAAM+O,QAAAA,CAAW,IAAI,CAAC77N,KAAK,CAAC21E,MAAM,CAACvQ,WAAW,CAC9C,IAAI,CAAC2tJ,UAAU,CAACzrP,MAAM,CAACs0P,UAAAA,CAAW7J,MAAM,CAAE,IAAI,CAACj2K,UAAU,CAAE+/K,SAAWnB,aAAgBt3V,CAAAA,SAAAA,CAAAA,CACtF,GAAIw4V,UAAWxB,CAAAA,eAAe,EAAIwB,UAAWxB,CAAAA,eAAe,CAAC7+V,MAAM,CAAE,CACnE,IAAK,KAAM,CAAC+3V,MAAAA,CAAQyB,SAAU,CAAA,GAAI6G,WAAWxB,eAAe,CAAC,CAC3D9G,MAAOtoS,CAAAA,WAAW,CAAC+pS,SAAW,CAAA,IAAI,CAAC0D,aAAa,EAClD,CACAmD,WAAWxB,eAAe,CAAC7+V,MAAM,CAAG,EACtC,CACA,IAAI,CAACyiJ,QAAQ,CAAC00M,YAAY,CAACp3S,OAC7B,CACA,IAAI,CAACy3S,UAAU,CAACP,YAAY,CAACvB,SAAAA,EAC/B,CACF,CACA6K,eAAAA,EAAkB,CAChB,MAAMC,iBAAAA,CAAoB,IAAI,CAAC/7N,KAAK,CAAC21E,MAAM,CAAC1P,iBAAiB,CAC7D,MAAM+1J,gBAAAA,CAAmB,IAAI,CAAClgL,UAAU,CAACl2D,WAAW,EAAA,CACpD,MAAMq2O,WAAc,CAAA,IAAI,CAACC,aAAa,CAAC/jV,QAAQ,CAAC6jV,gBAAoBD,CAAAA,CAAAA,iBAAAA,CACpE,GAAIE,WAAa,CAAA,CACf,OAAO,IACT,CACA,IAAIE,aAAAA,CAAgB,KACpB,CAAA,MAAMC,kBAAoB,IAAI,CAACp8N,KAAK,CAAC21E,MAAM,CAACzP,cAAc,CAC1D,GAAIk2J,iBAAoB,CAAA,CAAA,CAAG,CACzB,GAAIh3U,MAAAA,CAAO1R,QAAQ,CAAC,IAAI,CAAC2oV,aAAa,CAAC1sV,CAAC,CAAA,CAAG,CACzC,MAAM2sV,iBAAmB,IAAI,CAACxgL,UAAU,CAAC/6B,OAAO,CAChD,MAAMvoI,GAAAA,CAAM3d,IAAKmU,CAAAA,GAAG,CAAC,CAAA,CAAGnU,KAAKoU,GAAG,CAAC,CAAC,CAAG,CAAA,IAAI,CAACotV,aAAa,CAAC7jV,GAAG,CAAC8jV,gBAC5D,CAAA,CAAA,CAAA,CAAA,MAAMnlV,MAAQtc,IAAK2oB,CAAAA,IAAI,CAAChL,GACxB,CAAA,CAAA,MAAM+jV,aAAeH,iBAAoBvhW,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,GAAA,CACnDstV,cAAgBhlV,KAAQolV,CAAAA,aAC1B,MAAO,CACLJ,aAAAA,CAAgB,KAClB,CACF,CACA,OAAOF,WAAAA,EAAeE,aACxB,CACAztT,QAAS,CACP,IAAI8tT,WAAa,KACjB,CAAA,IAAI,CAACC,oBAAoB,EACzB,CAAA,GAAI,IAAI,CAACA,oBAAoB,EAAI,CAAA,CAAG,CAClC,IAAI,CAACA,oBAAoB,CAAG,EAAA,CAC5B,GAAI,IAAI,CAACpyH,MAAM,CAAC6mH,YAAY,CAAG,EAAG,CAChCsL,UAAAA,CAAa,KACf,CACF,CACA,IAAIE,yBAA4B,CAAA,KAAA,CAChC,IAAIC,cAAiB,CAAA,KAAA,CACrB,IAAIC,oBAAuB,CAAA,KAAA,CAC3B,GAAIJ,UAAY,CAAA,CACd,IAAK,KAAM,EAAGvB,IAAAA,CAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1C,MAAMr+N,OAAUu+N,CAAAA,IAAAA,CAAKvsT,MAAM,CAAC,IAAI,CAACsxF,KAAK,CACtC,CAAA,IAAI,CAACk7N,oBAAAA,GAAL,IAAI,CAACA,oBAAAA,CAAyBx+N,OAC9B,CAAA,CAAA,MAAMmgO,SAAY5B,CAAAA,IAAAA,CAAKvD,qBAAqB,EAC5CgF,CAAAA,4BAAAA,yBAA8BG,CAAAA,SAAAA,EAChC,CACA,MAAM3F,SAAAA,CAAY,IAAI,CAACl3N,KAAK,CAAC21E,MAAM,CAAC1P,iBAAiB,CACrD,IAAK,KAAM,EAAGg1J,IAAAA,CAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1C,MAAM+B,MAAQ7B,IAAKhE,CAAAA,SAAS,CAACC,SAC7ByF,CAAAA,CAAAA,cAAAA,GAAAA,cAAAA,CAAmBG,KACrB,EAAA,CACAF,qBAAuB,IAAI,CAACd,eAAe,GAC7C,CACA,GAAI,IAAI,CAAC97N,KAAK,CAAC21E,MAAM,CAAC1nK,KAAK,CAAE,CAC3B,IAAI,CAACitT,oBAAoB,CAAG,KAC9B,CACA,GAAI0B,oBAAwBD,EAAAA,cAAAA,EAAkB,IAAI,CAAC38N,KAAK,CAAC21E,MAAM,CAAC1nK,KAAK,EAAIyuT,yBAAAA,CAA2B,CAClG,IAAK,KAAM,EAAGzB,KAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1CE,IAAK7D,CAAAA,WAAW,GAClB,CACA,IAAI,CAAC8E,aAAa,CAAC7hW,IAAI,CAAC,IAAI,CAACyhL,UAAU,CAACl2D,WAAW,EACnD,CAAA,CAAA,IAAI,CAACy2O,aAAa,CAAChiW,IAAI,CAAC,IAAI,CAACyhL,UAAU,CAAC/6B,OAAO,CAAA,CAC/C,IAAK,KAAM,EAAGk6M,KAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1CE,IAAK1F,CAAAA,SAAS,CAAC,IAAI,CAACz5K,UAAU,CAAE,IAAI,CAAC97C,KAAK,CAAC21E,MAAM,EACnD,CACF,CACA,IAAI,CAAC0lJ,gBAAgB,EAAA,CACrB,MAAM0B,SAAY,CAAA,IAAI,CAACxB,WAAW,CAACl+V,GAAG,CAAC,IAAI,CAACm+V,qBAAqB,CACjE,CAAA,GAAIuB,UAAW,CACb,GAAI,CAACA,SAAU7C,CAAAA,iBAAiB,CAAE,CAChC6C,SAAAA,CAAU7C,iBAAiB,CAAG,IAAA,CAC9B,MAAMzI,OAAU,CAAA,IAAI,CAACuL,qBAAqB,CAACD,WAC3C,IAAI,CAAC1yH,MAAM,CAACmnH,iBAAiB,CAACC,SAChC,CACA,IAAI,CAACjmV,IAAI,CAACuxV,WACZ,CACA,MAAME,WAAc,CAAA,IAAI,CAAC1B,WAAW,CAACl+V,GAAG,CAAC,IAAI,CAACq+V,aAAa,EAC3D,GAAIuB,WAAAA,CAAa,CACfA,WAAAA,CAAYlL,MAAM,CAAC9pV,OAAO,CAAE0xV,QAC1B,GAAIA,KAAAA,CAAMjrT,MAAM,EAAI,CAAA,CAClB8rT,eAAep+V,IAAI,CAACu9V,OACtB,CACF,CAAA,CAAA,CACA,GAAIa,cAAej/V,CAAAA,MAAM,CAAG,CAAG,CAAA,CAC7B,MAAMsgW,QAAAA,CAAW,IAAI,CAAC77N,KAAK,CAAC21E,MAAM,CAACvQ,WAAW,CAC9C,IAAI,CAAC2tJ,UAAU,CAACzrP,MAAM,CAACkzP,cAAAA,CAAgB,IAAI,CAAC1+K,UAAU,CAAE+/K,QAAWnB,CAAAA,aAAAA,CAAgBt3V,UACnFo3V,CAAAA,cAAAA,CAAej/V,MAAM,CAAG,EAC1B,CACF,CACA,GAAI,IAAI,CAACw/V,eAAe,CAACv6V,IAAI,CAAE,CAC7B,IAAK,KAAM,EAAGy6V,KAAK,GAAI,IAAI,CAACF,eAAe,CAAC,CAC1C,MAAMzH,MAAAA,CAAS2H,IAAK3H,CAAAA,MAAM,CAC1B,GAAI,CAACmH,iBAAkB72V,CAAAA,GAAG,CAAC0vV,MAAS,CAAA,CAAA,CAClCmH,kBAAkB7uV,GAAG,CAAC0nV,MACtBA,CAAAA,CAAAA,MAAAA,CAAOsF,kBAAkB,CAAC,IAAI,CAACoC,QAAQ,CAAC5F,WAAW,EACrD,CACF,CACAqF,iBAAAA,CAAkBv2V,KAAK,GACzB,CACA,KAAM,CAAE4oV,WAAW,CAAE,CAAG,IAAI,CAACiG,UAAU,CACvC,OAAOjG,YAAcA,WACvB,CACAthV,KAAKuxV,SAAS,CAAE,CACd,MAAMjhL,UAAAA,CAAa,IAAI,CAACA,UAAU,CAClC,MAAM0uD,SAAY1uD,CAAAA,UAAAA,CAAW74C,iBAAiB,EAC9CunG,CAAAA,SAAAA,CAAUnoN,cAAc,CAAC4gN,cAAAA,CAAAA,CACzBuH,UAAUtwN,IAAI,CAACgpN,eAAiBxnO,CAAAA,CAAAA,SAAS,EACzC,CAAA,MAAMwhW,cAAgB,EAAE,CACxBH,UAAUhL,MAAM,CAAC9pV,OAAO,CAAE0xV,KACxB,EAAA,CAAA,MAAMz3H,QAAWy3H,CAAAA,KAAAA,CAAMjuN,IAAI,CAACzI,iBAAiB,GAC7CwnG,WAAYpwO,CAAAA,IAAI,CAAC6nO,QAAU7gN,CAAAA,CAAAA,MAAM,GACjC,MAAM+qK,YAAAA,CAAe81C,SAAS5/M,QAAQ,EAAA,CAAG3S,CAAC,CAC1C,MAAMu/U,qBAAuBzkH,WAAY1tN,CAAAA,eAAe,CAACmmN,eAAAA,CAAAA,CAAiBxnO,SAAS,EAAA,CACnF,MAAM8zV,mBAAsB/kH,CAAAA,WAAAA,CAAYhrN,cAAc,CAACwjN,cAAAA,CAAAA,CACvDf,SAAS7/M,cAAc,CAACg4U,WACxB,CAAA,CAAA,MAAMrxV,MAASqxV,CAAAA,WAAAA,CAAYnhV,GAAG,CAAC+pN,cAAAA,CAAAA,CAAgBzqN,GAAG,CAAC0qN,eAAAA,CAAAA,CACnD,MAAMlpE,OAAU2/L,CAAAA,KAAAA,CAAMvvU,IAAI,CAAC1B,MAAM,EAAA,CACjC,MAAMuxI,OAAU0/L,CAAAA,KAAAA,CAAMvvU,IAAI,CAAC5B,MAAM,GACjC00U,aAAc9gW,CAAAA,IAAI,CAAC,CACjB8yV,oBAAAA,CACAM,oBACAxmV,MACA4U,CAAAA,KAAAA,CAAOwuK,aACP81C,QAAUA,CAAAA,QAAAA,CAAS5sN,IAAI,CAACnZ,KAAK,EAC7B69J,CAAAA,OAAAA,CAAS,CACPA,OAAAA,CAAQrqJ,CAAC,CACTqqJ,OAAAA,CAAQ3iJ,CAAC,CACT2iJ,OAAAA,CAAQxiJ,CAAC,CACV,CACDyiJ,OAAS,CAAA,CACPA,OAAQtqJ,CAAAA,CAAC,CACTsqJ,OAAQ5iJ,CAAAA,CAAC,CACT4iJ,OAAQziJ,CAAAA,CAAC,CACV,CACH,EACF,CACA,CAAA,CAAA,IAAI,CAAC6yN,MAAM,CAACunH,aAAa,CAACsL,cAAe,IAAI,CAACl9N,KAAK,CAAC21E,MAAM,CAAC5P,aAAa,CAAA,CACxE,IAAI,CAAC/nD,QAAQ,CAACusF,cAAc,CAACzuD,YAC/B,CACAkhL,qBAAAA,CAAsBpB,UAAU,CAAE,CAChC,OAAO,CACL9K,OAAS,CAAA,WAAA,CACThE,YAAa8O,UAAW9O,CAAAA,WAAW,CACnC4D,eAAiBkL,CAAAA,UAAAA,CAAWlL,eAAe,CAC3C32V,OAAS6hW,CAAAA,UAAAA,CAAW7hW,OAAO,CAC3B+wL,GAAAA,CAAK8wK,WAAW7J,MAAM,CAAC5vV,GAAG,CAAEw3V,KAAQA,EAAAA,KAAAA,CAAM92S,QAAQ,CAACvd,EAAE,CACrDopT,CAAAA,UAAAA,CAAYkN,WAAW7J,MAAM,CAAC5vV,GAAG,CAAEw3V,OAAQA,KAAM3M,CAAAA,SAAS,EAC1D7lC,OAASy0C,CAAAA,UAAAA,CAAW7J,MAAM,CAAC5vV,GAAG,CAAC,KAACw3V,EAAQA,KAAMxyC,CAAAA,OAAO,CACrDglC,CAAAA,SAAAA,CAAWyP,WAAW7J,MAAM,CAAC5vV,GAAG,CAAEw3V,OAAQA,KAAMxN,CAAAA,SAAS,CAC3D,CACF,CAnSA9oV,WAAAA,CAAYkiC,MAAM,CAAEy1T,QAAQ,CAAE36N,KAAK,CAAEy7C,UAAU,CAAC,CAC9C,IAAI,CAACpwC,IAAI,CAAG,IAAImV,SAAU,CAAA,eAAA,CAC1B,CAAA,IAAI,CAAC06M,WAAW,CAAG,IAAI73V,GACvB,CAAA,IAAI,CAAC83V,qBAAqB,CAAG,CAC7B,CAAA,IAAI,CAACE,aAAa,CAAG,CACrB,CAAA,IAAI,CAACe,oBAAoB,CAAG,CAC5B,CAAA,IAAI,CAACP,aAAa,CAAG,IAAI3kV,IAAK9D,CAAAA,QAAAA,CAAUA,QAAUA,CAAAA,QAAAA,CAClD,CAAA,IAAI,CAAC4oV,aAAa,CAAG,IAAI9kV,KAAK9D,QAAUA,CAAAA,QAAAA,CAAUA,QAClD,CAAA,CAAA,IAAI,CAAC2nV,eAAe,CAAG,EAAE,CACzB,IAAI,CAACF,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACH,eAAe,CAAG,IAAIr3V,GAC3B,CAAA,IAAI,CAACy3V,wBAAwB,CAAG,EAAE,CAClC,IAAI,CAAC51T,MAAM,CAAGA,MACd,CAAA,IAAI,CAACy6F,KAAK,CAAGg7N,QAAAA,CAASh7N,KACtB,CAAA,IAAI,CAACg7N,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACl/K,UAAU,CAAGA,UAClB,CAAA,IAAI,CAACi3K,UAAU,CAAG,IAAIX,gBAAAA,CAAiB7sT,OACvC,CAAA,IAAI,CAACy4G,QAAQ,CAAG,IAAIy0M,eAAeltT,MAAQ,CAAA,IAAI,CAACmmG,IAAI,CAAE,IAAI,CAACowC,UAAU,CAAEz7C,KAAAA,CAAO,IAAI,CAAC0yN,UAAU,CAC7F,CAAA,IAAI,CAAC1oH,MAAM,CAAG,IAAI,CAACuwH,YAAY,EAC/B,CAAA,IAAI,CAACnC,aAAa,CAAG,IAAI,CAACuC,QAAQ,CAAC5F,WAAW,CAACqD,cACjD,CAgRF,CAEA,MAAM0E,eAIJ14T,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC24T,aAAa,CAAC34T,OAAO,GAC5B,CALAphC,WAAAA,CAAYkiC,MAAM,CAAEy1T,QAAQ,CAAE36N,KAAK,CAAEy7C,UAAU,CAAC,CAC9C,IAAI,CAACshL,aAAa,CAAG,IAAIzC,aAAcp1T,CAAAA,MAAAA,CAAQy1T,SAAU36N,KAAOy7C,CAAAA,UAAAA,EAClE,CAIF,CACA,MAAMuhL,gBACJ54T,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC64T,SAAS,CAACr1V,OAAO,CAAEs1V,WAAYA,SAAU94T,CAAAA,OAAO,EACrD,CAAA,CAAA,IAAI,CAAC64T,SAAS,CAACp5V,KAAK,GACtB,CACAs5V,eAAgBn9N,CAAAA,KAAK,CAAE,CACrB,MAAMk9N,UAAY,IAAI,CAACD,SAAS,CAACjgW,GAAG,CAACgjI,KACrC,CAAA,CAAA,GAAIk9N,UAAW,CACbA,SAAAA,CAAU94T,OAAO,EAAA,CACjB,IAAI,CAAC64T,SAAS,CAACn5V,MAAM,CAACk8H,KACxB,EAAA,CACF,CACAo9N,YAAal4T,CAAAA,MAAM,CAAEy1T,QAAQ,CAAE36N,KAAK,CAAEy7C,UAAU,CAAE,CAChD,IAAIyhL,SAAAA,CAAY,IAAI,CAACD,SAAS,CAACjgW,GAAG,CAACgjI,KAAAA,CAAAA,CACnC,GAAI,CAACk9N,SAAAA,CAAW,CACdA,SAAY,CAAA,IAAIJ,gBAAgB53T,MAAQy1T,CAAAA,QAAAA,CAAU36N,MAAOy7C,UACzD,CAAA,CAAA,IAAI,CAACwhL,SAAS,CAACz5V,GAAG,CAACw8H,KAAAA,CAAOk9N,WAC5B,CACA,OAAOA,SACT,CACAl6V,WAAa,EAAA,CACX,IAAI,CAACi6V,SAAS,CAAG,IAAI55V,IACvB,CACF,CACA,MAAMg6V,cAQJj5T,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACk5T,UAAU,CAAC11V,OAAO,CAAE21V,YAAaA,UAAWn5T,CAAAA,OAAO,EACxD,CAAA,CAAA,IAAI,CAACk5T,UAAU,CAACz5V,KAAK,GACvB,CACA25V,aAActvN,CAAAA,MAAM,CAAE,CACpB,IAAIqvN,WAAa,IAAI,CAACD,UAAU,CAACtgW,GAAG,CAACkxI,MACrC,CAAA,CAAA,GAAI,CAACqvN,UAAY,CAAA,CACfA,UAAa,CAAA,IAAIP,gBACjB,CAAA,IAAI,CAACM,UAAU,CAAC95V,GAAG,CAAC0qI,MAAAA,CAAQqvN,YAC9B,CACA,OAAOA,UACT,CACAlvT,MAAOwpH,CAAAA,IAAI,CAAE,CACX,IAAI,CAACylM,UAAU,CAAC11V,OAAO,CAAC,CAAC21V,UAAYrvN,CAAAA,MAAAA,GAAAA,CACnC,GAAI,CAAC2pB,KAAKyiB,UAAU,CAAC/2K,GAAG,CAAC2qI,MAAAA,CAAAA,CAAS,CAChCqvN,UAAWn5T,CAAAA,OAAO,GAClB,IAAI,CAACk5T,UAAU,CAACx5V,MAAM,CAACoqI,MACzB,EAAA,CAAA,KAAO,CACLqvN,UAAWN,CAAAA,SAAS,CAACr1V,OAAO,CAAC,CAACs1V,UAAWl9N,KACvC,GAAA,CAAA,GAAI,CAACkO,MAAO+N,CAAAA,SAAS,CAAC14I,GAAG,CAACy8H,KAAM/6F,CAAAA,EAAE,CAAK,EAAA,CAAC+6F,MAAMlyH,OAAO,CAAE,CACrDovV,SAAU94T,CAAAA,OAAO,GACjBm5T,UAAWN,CAAAA,SAAS,CAACn5V,MAAM,CAACk8H,KAAAA,EAC9B,CACF,CACF,EAAA,CACF,GACA,IAAIy9N,WAAAA,CAAc,EAClB,MAAMC,iBAAAA,CAAoB7lM,KAAK+R,OAAO,CACtC,IAAI,IAAI3uK,CAAAA,CAAI,EAAGA,CAAIyiW,CAAAA,iBAAAA,CAAkBxiW,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC/C,MAAMizI,MAASwvN,CAAAA,iBAAiB,CAACziW,CAAE,CAAA,CAACizI,MAAM,CAC1C,IAAIqvN,WAAa,IAAI,CAACD,UAAU,CAACtgW,GAAG,CAACkxI,QACrC,MAAM68B,QAAAA,CAAW78B,OAAOtO,MAAM,CAC9B,IAAI,IAAIp+C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIupF,QAAS7vK,CAAAA,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACtC,MAAMw+C,KAAQ63B,CAAAA,IAAAA,CAAK53B,YAAY,CAAC8qC,QAAQ,CAACvpF,CAAE,CAAA,CAAA,CAC3C,GAAIw+C,KAAOlyH,EAAAA,OAAAA,CAAS,CAClB,GAAIkyH,KAAAA,CAAMm4C,qBAAqB,EAAI,CAAColL,UAAY,CAAA,CAC9C,MAAM9C,UAAAA,CAAaz6N,MAAM04C,gBAAgB,CACzC,GAAI+hL,UAAWv/V,CAAAA,MAAM,GAAK,CAAG,CAAA,CAC3B,GAAIqiW,UAAAA,CAAY,CACdA,UAAAA,CAAWJ,eAAe,CAACn9N,KAAAA,EAC7B,CACF,CAAO,KAAA,CACLu9N,aAAAA,UAAe,CAAA,IAAI,CAACC,aAAa,CAACtvN,MAAAA,CAAAA,CAAAA,CAClC,MAAMgvN,SAAYK,CAAAA,UAAAA,CAAWH,YAAY,CAAC,IAAI,CAACl4T,MAAM,CAAE,IAAI,CAAE86F,KAAAA,CAAOkO,OAAO7C,IAAI,CAAA,CAC/E6xN,UAAUH,aAAa,CAACvC,SAAS,CAACC,UAAAA,EACpC,CACF,CACF,CACF,CACA,GAAI8C,UAAY,CAAA,CACd,IAAK,MAAML,SAAAA,IAAaK,WAAWN,SAAS,CAACr5V,MAAM,EAAA,CAAG,CACpD65V,WAAAA,EAAeP,UAAUH,aAAa,CAAC1uT,MAAM,GAC/C,CACF,CACF,CACA,IAAI,CAACsvG,QAAQ,CAAC8uB,YAAY,CAAGgxL,WAC7B,CAAA,IAAI,CAAC99N,KAAK,CAAC21E,MAAM,CAAC1nK,KAAK,CAAG,KAAA,CAC1B,IAAI,IAAI3yC,CAAAA,CAAI,EAAGA,CAAI48J,CAAAA,IAAAA,CAAK8E,SAAS,CAACzhK,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C48J,IAAAA,CAAK8E,SAAS,CAAC1hK,CAAAA,CAAE,CAACk9K,qBAAqB,CAAG,MAC5C,CACF,CAnEAn1K,WAAYkiC,CAAAA,MAAM,CAAEy4G,QAAQ,CAAEhe,KAAK,CAAEo1N,WAAW,CAAC,CAC/C,IAAI,CAACuI,UAAU,CAAG,IAAIj6V,GACtB,CAAA,IAAI,CAAC6hC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACy4G,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACo3M,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACp1N,KAAK,CAAGA,MACf,CA8DF,CAEA,MAAMg+N,eAAwB/0F,SAAAA,SAAAA,CAsB5B,IAAIinD,UAAWjtT,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACooI,WAAW,CAAGpoI,KACnB,CAAA,IAAI,CAACg7V,SAAS,EAAE/9N,YAAAA,EAAc+P,cAAc,IAAI,CAAC5E,WAAW,CAAA,CAC5D,GAAI,IAAI,CAAC6yN,UAAU,EAAI,IAAI,CAAC7yN,WAAW,CAAE,CACvC,IAAI,CAAC6yN,UAAU,CAAC9zU,IAAI,CAAG,IAAI,CAACihH,YAC9B,CACF,CACA,IAAI6kL,UAAa,EAAA,CACf,OAAO,IAAI,CAAC7kL,WACd,CACA,IAAI7jI,QAAAA,CAASvE,KAAK,CAAE,CAClB,IAAI,CAACk7V,eAAe,EACpB,CAAA,IAAI,CAACF,SAAS,CAAGh7V,KAAAA,CACjB,GAAI,IAAI,CAACg7V,SAAS,CAAE,CAClB,MAAM5sN,GAAK,IAAI,CAAC4sN,SAAS,CAAC/9N,YAAY,CACtC,GAAI,CAACmR,GAAG3F,IAAI,CAAE,CACZ2F,EAAG3F,CAAAA,IAAI,CAAG,IAAI,CAACxJ,OAAM,CAEvBmP,EAAGnB,CAAAA,UAAU,CAAG,IAAI,CAACgxC,YAAY,CACjC7vC,GAAGpB,aAAa,CAAC,IAAI,CAAC5E,WAAW,CACjC,CAAA,GAAI,IAAI,CAACl9H,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,IAAI,CAACiyH,WAAW,GAClB,CACF,CACF,CACA,IAAI54H,QAAW,EAAA,CACb,OAAO,IAAI,CAACy2V,SAAS,CAEvB,IAAI9/N,QAASl7H,CAAAA,KAAK,CAAE,CAClB,GAAI,IAAI,CAACg7V,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC9/N,QAAQ,CAAGl7H,MAC5B,CAAA,KAAO,CACL,IAAI,CAACm7V,YAAY,CAAGn7V,MACtB,CACF,CACA,IAAIk7H,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC8/N,SAAS,EAAE9/N,QAAY,EAAA,IAAI,CAACigO,YAAY,EAAI,IAC1D,CACA,IAAIxzH,aAAc3nO,CAAAA,KAAK,CAAE,CACvB,GAAIA,QAAU,IAAI,CAACo7V,cAAc,CAAE,CACjC,IAAI,CAACA,cAAc,CAAGp7V,KACtB,CAAA,IAAI,CAACg7V,SAAS,EAAEvzH,iBAAiBznO,KACnC,EAAA,CACF,CACA,IAAI2nO,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACyzH,cAAc,CAE5B,IAAI50M,WAAYxmJ,CAAAA,KAAK,CAAE,CACrB,GAAI,IAAI,CAACi+K,YAAY,GAAKj+K,KAAAA,CAAO,CAC/B,MAAMouI,GAAK,IAAI,CAAC7pI,QAAQ,EAAE04H,YAAAA,CAC1B,GAAImR,EAAI,CAAA,CACN,MAAMpR,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMD,KAAQ,CAAA,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,GAAI,IAAI,CAACkhD,YAAY,EAAI,CAACj+K,MAAO,CAC/B,IAAI,IAAI3H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2kI,OAAO1kI,MAAM,CAAED,IAAI,CACpC,MAAM+kI,MAAQL,KAAMC,CAAAA,MAAM,CAACK,YAAY,CAAC,IAAI,CAACL,MAAM,CAAC3kI,EAAE,CACtD,CAAA,GAAI+kI,MAAO,CACTA,KAAAA,CAAMk5C,mBAAmB,CAAC,CACxBloC,EAAAA,CACD,EACH,CACF,CACF,CACAA,EAAGnB,CAAAA,UAAU,CAAGjtI,KAChB,CAAA,GAAI,CAAC,IAAI,CAACi+K,YAAY,EAAIj+K,KAAO,CAAA,CAC/B,IAAI,IAAI3H,CAAAA,CAAI,EAAGA,CAAI2kI,CAAAA,MAAAA,CAAO1kI,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAM+kI,KAAQL,CAAAA,KAAAA,CAAMC,MAAM,CAACK,YAAY,CAACL,MAAM,CAAC3kI,CAAE,CAAA,CAAA,CACjD,GAAI+kI,KAAAA,CAAO,CACTA,KAAMg5C,CAAAA,gBAAgB,CAAC,CACrBhoC,EAAAA,CACD,EACH,CACF,CACF,CACF,CACA,IAAI,CAAC6vC,YAAY,CAAGj+K,MACtB,CACF,CACA,IAAIwmJ,WAAc,EAAA,CAChB,OAAO,IAAI,CAACy3B,YAAY,CAE1B,IAAIkyK,aAAanwV,KAAK,CAAE,CACtB,IAAI,CAACuwV,aAAa,CAAGl5V,KAAMC,CAAAA,OAAO,CAAC0I,KAASA,CAAAA,CAAAA,KAAAA,CAAM9G,KAAK,EAAK,CAAA,IAAA,CAC5D,GAAI,IAAI,CAAC+hW,UAAU,CAAE,CACnB,IAAI,CAACA,UAAU,CAAC9K,YAAY,CAAG,IAAI,CAACI,cACtC,CACF,CACA,IAAIJ,cAAe,CACjB,OAAO,IAAI,CAACI,aAAa,CAAG,IAAI,CAACA,aAAa,CAACr3V,KAAK,EAAA,CAAK,IAC3D,CACA,IAAImiW,QAAQr7V,KAAK,CAAE,CACjB,GAAI,IAAI,CAACkL,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,MACF,CACA,IAAI,CAACowV,QAAQ,CAAGt7V,KAAAA,CAChB,IAAI,CAACu7V,mBAAmB,GAC1B,CACA,IAAIF,SAAU,CACZ,OAAO,IAAI,CAACC,QAAQ,CAEtB,IAAIt+N,OAAOh9H,KAAK,CAAE,CAChB,IAAI,CAACk9H,gBAAgB,EACrB,CAAA,IAAI,CAACic,OAAO,CAAC7gJ,MAAM,CAAG,CAAA,CACtB,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2H,KAAM1H,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACnC,IAAI,CAAC8gJ,OAAO,CAAC9gJ,CAAE,CAAA,CAAG2H,KAAK,CAAC3H,CAAE,EAC5B,CACA,GAAI,CAAC,IAAI,CAAC6S,OAAO,EAAI,CAAC,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACzC,MACF,CACA,IAAI,CAACiyH,WAAW,GAClB,CACA,IAAIH,MAAS,EAAA,CACX,OAAO,IAAI,CAACmc,OAAO,CAErB,IAAI64E,KAAMhyN,CAAAA,KAAK,CAAE,CACf,MAAMqiC,EAAAA,CAAKriC,iBAAiBotO,KAAQptO,CAAAA,KAAAA,CAAMqiC,EAAE,CAAGriC,KAAAA,CAC/C,GAAI,IAAI,CAACg7T,eAAe,CAAC34R,EAAE,GAAKA,GAAI,OACpC,GAAI,IAAI,CAAC24R,eAAe,CAAChpG,KAAK,EAAI,IAAI,CAACgpG,eAAe,CAAChpG,KAAK,CAACpyK,QAAQ,CAAE,CACrE,IAAI,CAAC47S,oBAAoB,GAC3B,CACA,IAAI,CAACxgC,eAAe,CAAC34R,EAAE,CAAGA,EAC1B,CAAA,GAAI,IAAI,CAAC24R,eAAe,CAAChpG,KAAK,CAAE,CAC9B,IAAI,CAACupI,mBAAmB,GAC1B,CACF,CACA,IAAIvpI,KAAQ,EAAA,CACV,OAAO,IAAI,CAACgpG,eAAe,CAAC34R,EAC9B,CACA64T,eAAkB,EAAA,CAChB,GAAI,IAAI,CAACD,UAAU,CAAE,CACnB,IAAI,CAAC/9N,gBAAgB,EACrB,CAAA,IAAI,CAAC+9N,UAAU,CAAG,KACpB,CACA,GAAI,IAAI,CAACD,SAAS,CAAE,CAClB,IAAI,CAAC99N,gBAAgB,EACrB,CAAA,IAAI,CAAC89N,SAAS,EAAEx5T,SAChB,CAAA,IAAI,CAACw5T,SAAS,CAAG,KACnB,CACF,CACA79N,WAAc,EAAA,CACZ,GAAI,IAAI,CAAC89N,UAAU,CAAE,CACnB,MAAMj+N,MAAAA,CAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C2kI,MAAOK,CAAAA,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,EAAGu9K,mBAAmB,IAAI,CAACqlL,UAAU,EAC1E,CACA,MACF,CACA,MAAMh+N,YAAe,CAAA,IAAI,CAAC14H,QAAQ,EAAE04H,YACpC,CAAA,GAAIA,aAAc,CAChB,MAAMD,OAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,IAAI,CAC1C2kI,MAAAA,CAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,GAAGilI,gBAAiB,CAAA,CACrDL,aACD,EACH,CACF,CACF,CACAC,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAAC+9N,UAAU,CAAE,CACnB,MAAMj+N,MAAS,CAAA,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C2kI,OAAOK,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAAA,CAAE,CAAG09K,EAAAA,qBAAAA,CAAsB,IAAI,CAACklL,UAAU,EAC7E,CACA,MACF,CACA,MAAMh+N,YAAAA,CAAe,IAAI,CAAC14H,QAAQ,EAAE04H,aACpC,GAAIA,YAAAA,CAAc,CAChB,MAAMD,MAAAA,CAAS,IAAI,CAACo3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAC3C,IAAI,IAAI3kI,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8gJ,OAAO,CAAC7gJ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C2kI,MAAOK,CAAAA,YAAY,CAAC,IAAI,CAAC8b,OAAO,CAAC9gJ,CAAE,CAAA,CAAA,EAAGklI,oBAAoB,CACxDN,YAAAA,CACD,EACH,CACF,CACF,CACAgxL,aAAgB,EAAA,CACd,IAAI,CAAC/wL,gBAAgB,GACvB,CACAgxL,aAAgB,EAAA,CACd,GAAI,IAAI,CAAChjT,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CACvC,GAAI,IAAI,CAAC8vV,SAAS,EAAI,IAAI,CAACC,UAAU,CAAE,CACrC,IAAI,CAAC99N,WAAW,GAClB,CACF,CACF,CACAouJ,QAAW,EAAA,CACT,IAAI,CAAC2vE,eAAe,EACpB,CAAA,IAAI,CAAClpI,KAAK,CAAG,IACb,CAAA,IAAI,CAACgpG,eAAe,CAAC34R,EAAE,CAAG,KAC1B,IAAI,CAAC48F,MAAM,CAAC3/H,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC2uT,aAAa,CAAE,IAAI,CAClD,CAAA,IAAI,CAAChvL,MAAM,CAAC3/H,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC4uT,aAAa,CAAE,IAAI,EACpD,CACAvW,gBAAgBC,OAAO,CAAEC,OAAO,CAAE,CAChC,IAAI,CAAC16K,WAAW,EAAA,CAChBy6K,QAAQt4S,GAAG,CAAC,MAAO,IAAI,CAACw4S,YAAY,CAAE,IAAI,CAC1CF,CAAAA,OAAAA,CAAQt4S,GAAG,CAAC,SAAU,IAAI,CAACy4S,cAAc,CAAE,IAAI,EAC/CF,OAAQn4S,CAAAA,EAAE,CAAC,KAAO,CAAA,IAAI,CAACo4S,YAAY,CAAE,IAAI,CACzCD,CAAAA,OAAAA,CAAQn4S,EAAE,CAAC,QAAA,CAAU,IAAI,CAACq4S,cAAc,CAAE,IAAI,EAChD,CACAD,aAAa16K,KAAK,CAAE,CAClB,MAAMl/H,KAAAA,CAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,KAAAA,CAAM/6F,EAAE,CAC1C,CAAA,GAAInkC,MAAQ,CAAG,CAAA,OACf,GAAI,IAAI,CAAC88V,SAAS,CAAE,CAClB59N,KAAAA,CAAME,gBAAgB,CAAC,IAAI,CAAC09N,SAAS,CAAC/9N,YAAY,EACpD,CACF,CACA86K,cAAe36K,CAAAA,KAAK,CAAE,CACpB,MAAMl/H,MAAQ,IAAI,CAAC8+H,MAAM,CAAC17H,OAAO,CAAC87H,MAAM/6F,EAAE,CAAA,CAC1C,GAAInkC,KAAQ,CAAA,CAAA,CAAG,OACf,GAAI,IAAI,CAAC88V,SAAS,CAAE,CAClB59N,MAAMG,mBAAmB,CAAC,IAAI,CAACy9N,SAAS,CAAC/9N,YAAY,EACvD,CACF,CACAn5B,QAAW,EAAA,CACT,MAAMi5B,KAAQ,CAAA,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,MAAAA,CAASD,MAAMC,MACrB,CAAA,IAAI,CAACi7K,iBAAiB,CAAGl7K,KAAAA,CAAMr9H,EAAE,CAAC,YAAc,CAAA,IAAI,CAACi4S,eAAe,CAAE,IAAI,CAC1E,CAAA,GAAI36K,OAAQ,CACV,IAAI,CAACk7K,cAAc,CAAGl7K,MAAAA,CAAOt9H,EAAE,CAAC,KAAA,CAAO,IAAI,CAACo4S,YAAY,CAAE,IAAI,CAC9D,CAAA,IAAI,CAACK,gBAAgB,CAAGn7K,MAAOt9H,CAAAA,EAAE,CAAC,QAAU,CAAA,IAAI,CAACq4S,cAAc,CAAE,IAAI,EACvE,CACA,GAAI,IAAI,CAACijD,SAAS,EAAI,IAAI,CAACC,UAAU,CAAE,CACrC,IAAI,CAAC99N,WAAW,GAClB,MAAO,GAAI,IAAI,CAAC60F,KAAK,CAAE,CACrB,IAAI,CAACupI,mBAAmB,GAC1B,CACF,CACAx3P,WAAY,CACV,MAAMg5B,MAAQ,IAAI,CAACq3G,MAAM,CAAC/L,GAAG,CAACtrG,KAAK,CACnC,MAAMC,OAASD,KAAMC,CAAAA,MAAM,CAC3B,IAAI,CAACi7K,iBAAiB,EAAE34S,KACxB,CAAA,IAAI,CAAC24S,iBAAiB,CAAG,KACzB,GAAIj7K,MAAAA,CAAQ,CACV,IAAI,CAACk7K,cAAc,EAAE54S,GACrB,EAAA,CAAA,IAAI,CAAC44S,cAAc,CAAG,IACtB,CAAA,IAAI,CAACC,gBAAgB,EAAE74S,GAAAA,EACvB,CAAA,IAAI,CAAC64S,gBAAgB,CAAG,KAC1B,CACA,IAAI,CAACj7K,gBAAgB,GACvB,CACAuxL,IAAAA,EAAO,CACL,GAAI,IAAI,CAACusC,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC/9N,YAAY,CAACsO,OAAO,CAAG,MACxC,CACF,CACAmjL,IAAO,EAAA,CACL,GAAI,IAAI,CAACssC,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC/9N,YAAY,CAACsO,OAAO,CAAG,KACxC,CACF,CACAgwN,mBAAAA,EAAsB,CACpB,GAAI,CAAC,IAAI,CAACvgC,eAAe,CAAChpG,KAAK,CAAE,CAC/B,MACF,CACA,GAAI,IAAI,CAACgpG,eAAe,CAAChpG,KAAK,CAACpyK,QAAQ,CAAE,CACvC,IAAI,CAAC67S,kBAAkB,GACzB,CAAA,KAAO,GAAI,IAAI,CAACvwV,OAAO,EAAI,IAAI,CAAC+zH,MAAM,CAAC/zH,OAAO,CAAE,CAC9C,IAAI,CAACkpO,MAAM,CAAC/L,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAAC,IAAI,CAACysF,eAAe,CAAChpG,KAAK,EACxD,CACF,CACAypI,kBAAqB,EAAA,CACnB,IAAI,CAACP,eAAe,EACpB,CAAA,MAAMlpI,KAAQ,CAAA,IAAI,CAACgpG,eAAe,CAAChpG,KAAK,CACxC,GAAI,IAAI,CAACqpI,OAAO,CAAE,CAChB,IAAI,CAACJ,UAAU,CAAG,KAClB,GAAIjpI,KAAAA,CAAO,CACT,IAAI,CAACipI,UAAU,CAAG,IAAI/K,eAAAA,CAAgBl+H,MAAMpyK,QAAQ,CAAE,IAAI,CAACq/E,MAAM,CACjE,CAAA,IAAI,CAACg8N,UAAU,CAAC9K,YAAY,CAAG,IAAI,CAACI,cAAa,CAErD,MAAO,CACL,GAAIv+H,KAAO,CAAA,CACT,IAAI,CAACztN,QAAQ,CAAG,IAAI2iO,eAAelV,KAAMpyK,CAAAA,QAAQ,CAAE,CACjDs7E,QAAAA,CAAU,IAAI,CAACigO,YAAY,CAC3BxzH,aAAe,CAAA,IAAI,CAACyzH,cACtB,EACA,CAAA,IAAI,CAACD,YAAY,CAAG,KACtB,CACF,CACA,GAAInpI,MAAO,CACT,IAAI,CAACi7F,UAAU,CAAGj7F,KAAMpyK,CAAAA,QAAQ,CAACz4B,IAAI,CAACxZ,KAAK,GAC7C,CACF,CACA+tV,oBAAAA,EAAuB,CACrB,IAAI,CAACR,eAAe,GACtB,CACAM,oBAAAA,EAAuB,CACrB,IAAI,CAACE,oBAAoB,GAC3B,CApTAt7V,YAAYg0O,MAAM,CAAEn1G,MAAM,CAAC,CACzB,KAAK,CAACm1G,MAAAA,CAAQn1G,QAAS,IAAI,CAACka,OAAO,CAAG,CACpC3rB,aACD,CAAA,CAAE,IAAI,CAACwtO,SAAS,CAAG,IAAA,CAAM,IAAI,CAACC,UAAU,CAAG,IAAM,CAAA,IAAI,CAACE,YAAY,CAAG,IAAA,CAAM,IAAI,CAACC,cAAc,CAAG,IAAM,CAAA,IAAI,CAAC7K,aAAa,CAAG,CAC3H,CAAA,CACA,EACA,CAAA,EAAA,CACA,GACA,EACD,CAAA,CAAE,IAAI,CAACnoN,WAAW,CAAG,IAAM,CAAA,IAAI,CAAC6vK,iBAAiB,CAAG,KAAM,IAAI,CAACC,cAAc,CAAG,IAAA,CAAM,IAAI,CAACC,gBAAgB,CAAG,IAAA,CAAM,IAAI,CAACl6H,YAAY,CAAG,KAAA,CAAO,IAAI,CAACq9K,QAAQ,CAAG,KAChK,CAAA,IAAI,CAACtgC,eAAe,CAAG,IAAItB,cAAe,CAAA,OAAA,CAAS,IAAI,CAAEtlF,MAAAA,CAAO/L,GAAG,CAAC+H,MAAM,CAAE,CAC1EznO,GAAK,CAAA,IAAI,CAAC4yV,mBAAmB,CAC7BhtH,KAAM,IAAI,CAACktH,kBAAkB,CAC7B/4V,MAAAA,CAAQ,IAAI,CAAC84V,oBAAoB,CACjCrsH,MAAQ,CAAA,IAAI,CAACusH,oBACf,EAAG,IAAI,CAAA,CACPz8N,MAAOv/H,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACuuT,aAAa,CAAE,IAAI,CAAA,CAC5ChvL,OAAOv/H,EAAE,CAAC,iBAAmB,CAAA,IAAI,CAACuuT,aAAa,CAAE,IAAI,CAAA,CACrDhvL,OAAOv/H,EAAE,CAAC,SAAU,IAAI,CAACwuT,aAAa,CAAE,IAAI,CAAA,CAC5CjvL,OAAOv/H,EAAE,CAAC,kBAAmB,IAAI,CAACwuT,aAAa,CAAE,IAAI,EACvD,CAiSF,CAEA,MAAMytC,mBACJv7V,CAAAA,WAAAA,EAAa,CACX,IAAI,CAAC8K,OAAO,CAAG,KACjB,CACF,CAEA,MAAM0wV,qBAAAA,CACJrtH,KAAKrrO,GAAG,CAAE,EACVisO,MAAAA,CAAOjsO,GAAG,CAAE,EACZ2yV,WAAAA,CAAY3yV,GAAG,CAAE,EACjB9C,WAAAA,EAAa,CACX,IAAI,CAACo1V,aAAa,CAAG,IACvB,CACF,CAEA,MAAMqG,iBAAAA,SAA0BD,sBAK9BrtH,IAAKrrO,CAAAA,GAAG,CAAE,CACR,IAAI8uN,MAAQ,IAAI,CAACue,WAAW,CAACn2O,GAAG,CAAC8I,GACjC,CAAA,CAAA,GAAI,CAAC8uN,KAAO,CAAA,CACVA,MAAQ,IAAI,CAAC2nG,SAAS,CAAC9oF,QAAQ,CAAC3tO,KAChC,GAAI,CAAC8uN,MAAO,CACVA,KAAAA,CAAQ,IAAIob,KAAMlqO,CAAAA,GAAAA,CAAK,QAAU,CAAA,CAC/BA,GACF,CAAA,CAAA,CACA,IAAI,CAACy2T,SAAS,CAAChxT,GAAG,CAACqpN,OACrB,CACA,IAAI,CAACue,WAAW,CAAC3vO,GAAG,CAACsC,GAAK8uN,CAAAA,KAAAA,EAC5B,CACA,GAAI,CAACA,MAAMj0G,MAAM,EAAI,CAACi0G,KAAMsc,CAAAA,OAAO,CAAE,CACnC,IAAI,CAACqrF,SAAS,CAACprF,IAAI,CAACvc,KAAAA,EACtB,CACF,CACAmd,MAAOjsO,CAAAA,GAAG,CAAE,CACV,MAAM8uN,MAAQ,IAAI,CAACue,WAAW,CAACn2O,GAAG,CAAC8I,GAAAA,CAAAA,CACnC,GAAI8uN,KAAAA,CAAO,CACT,IAAI,CAAC2nG,SAAS,CAACj3T,MAAM,CAACsvN,KACtBA,CAAAA,CAAAA,KAAAA,CAAMmd,MAAM,EAAA,CACZ,IAAI,CAACoB,WAAW,CAACrvO,MAAM,CAACgC,GAC1B,EAAA,CACF,CACA2yV,WAAY3yV,CAAAA,GAAG,CAAE,CACf,MAAM8uN,MAAQ,IAAI,CAACue,WAAW,CAACn2O,GAAG,CAAC8I,GACnC,CAAA,CAAA,OAAO8uN,KAAOpyK,EAAAA,QAChB,CA/BAx/C,WAAAA,CAAYktO,QAAQ,CAAC,CACnB,KAAK,EAAI,CAAA,IAAI,CAACiD,WAAW,CAAG,IAAI9vO,GAChC,CAAA,IAAI,CAACk5T,SAAS,CAAGrsF,SACnB,CA6BF,CAEA,MAAMwuH,OAAU,CAAA,CACd,SACD,CAAA,CACD,MAAMC,WAAAA,CAAc,CAClB,SACA,CAAA,aAAA,CACA,WACA,eACA,CAAA,OAAA,CACA,SACD,CACD,MAAMC,8BAA8Bx1F,eAWlCI,CAAAA,uBAAAA,CAAwBntB,SAAS,CAAEzL,KAAK,CAAExxF,UAAU,CAAE,CACpD,GAAIwxF,KAAAA,CAAMhxG,MAAM,EAAIgxG,KAAMhxG,CAAAA,MAAM,CAAC1kI,MAAM,CAAE,CACvC01O,KAAMhxG,CAAAA,MAAM,CAAGgxG,KAAMhxG,CAAAA,MAAM,CAAC9jI,KAAK,CAAC,CAAA,EACpC,CACA,IAAI,IAAIb,EAAI,CAAGA,CAAAA,CAAAA,CAAI0jW,YAAYzjW,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,GAAI21O,KAAAA,CAAMtpO,cAAc,CAACq3V,WAAW,CAAC1jW,CAAE,CAAA,CAAA,CAAG,CACxCohP,SAAS,CAACsiH,WAAW,CAAC1jW,CAAAA,CAAE,CAAC,CAAG21O,KAAK,CAAC+tH,WAAW,CAAC1jW,EAAE,EAClD,CACF,CACA,GAAI21O,KAAAA,CAAMshF,UAAU,EAAIthF,KAAAA,CAAMuhF,eAAe,CAAE,CAC7C91E,UAAUwzE,UAAU,CAAG,IAAI3pS,WAAAA,CAAY,IAAIhP,IAAAA,CAAK05N,MAAMshF,UAAU,CAAA,CAAG,IAAIh7S,IAAK05N,CAAAA,KAAAA,CAAMuhF,eAAe,CACnG,EAAA,CACA,KAAK,CAAC3oD,uBAAwBntB,CAAAA,SAAAA,CAAWzL,MAAO8tH,OAClD,EAAA,CACA3/G,eAAel9G,MAAM,CAAEtxH,KAAK,CAAE,CAC5B,MAAMsuV,eAAkBh9N,CAAAA,MAAAA,CAAOyzE,MAAM,CACrC,MAAMrgM,KAAO,EAAC,CACd0pV,YAAY/2V,OAAO,CAAC,IAAC7N,EAAAA,CACnB,GAAIA,IAAAA,GAAS,WAAY,CACvB,MAAM+kW,YAAcD,eAAe,CAAC9kW,KAAK,CACzC,GAAI+kW,WAAa,CAAA,CACf7pV,IAAI,CAAClb,KAAK,CAAG+kW,WAAAA,CAAYvuV,KAAK,GAChC,CACF,MAAO,CACL0E,IAAI,CAAClb,IAAAA,CAAK,CAAG8kW,eAAe,CAAC9kW,IAAK,EACpC,CACF,CACAkb,CAAAA,CAAAA,KAAKnH,OAAO,CAAG+wV,gBAAgB/wV,OAAO,CACtC,MAAMuuO,SAAY,CAAA,IAAI,CAACoB,YAAY,CAACltO,MAAO0E,IAC3C,CAAA,CAAA,GAAI4pV,eAAgBhvC,CAAAA,UAAU,CAAE,CAC9BxzE,UAAUwzE,UAAU,CAAGgvC,gBAAgBhvC,UAAU,CAACt/S,KAAK,GACzD,CACA,OAAO8rO,SACT,CACA8xC,QAAAA,CAAStsJ,MAAM,CAAEw6G,SAAS,CAAE,CAC1BA,SAAAA,CAAU8xC,QAAQ,GACpB,CA9CAnrR,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CACN,CAAA,IAAI,CAAChmM,EAAE,CAAG,QACV,CAAA,IAAI,CAACokO,aAAa,CAAGs0F,eACrB,CAAA,IAAI,CAACp0F,QAAQ,CAAGg1F,mBAChB,CAAA,IAAI,CAAC5iH,MAAM,CAAG+iH,OACd,CAAA,MAAMK,kBAAoB,IAAIN,iBAAAA,CAAkBxzH,IAAI+H,MAAM,CAC1D/H,CAAAA,GAAAA,CAAIttF,QAAQ,CAACgnB,cAAc,CAAG,IAAI04L,eAAepyH,GAAIpmM,CAAAA,cAAc,CAAEomM,GAAIttF,CAAAA,QAAQ,CAAEstF,GAAAA,CAAItrG,KAAK,CAAEo/N,mBAC9F,IAAI,CAACz8V,EAAE,CAAC,cAAA,CAAgB,IAAI,CAAC6rR,QAAQ,CAAE,IAAI,EAC7C,CAsCF,CACAvlB,SAAAA,CAAUC,eAAe,CAAC80F,eAAAA,CAAgBrwO,SAAS,CAAEoxO,OAAAA,CAErD,CAAMM,MAAAA,MAAAA,SAAe97V,YAInB,CAAA,IAAIw2M,OAAO92M,KAAK,CAAE,CAChB,IAAI,CAACq8V,YAAY,EACjB,CAAA,IAAI,CAACtlJ,OAAO,CAAG/2M,MACf,IAAI,CAACs8V,YAAY,EACjB,CAAA,IAAI,CAAC/6V,IAAI,CAAC,YAAcvB,CAAAA,KAAAA,EAC1B,CACA,IAAI82M,QAAS,CACX,OAAO,IAAI,CAACC,OAAO,CAErBv1K,OAAAA,EAAU,CACR,IAAI,CAACs1K,MAAM,CAAG,KAChB,CACAulJ,YAAe,EAAA,CACb,IAAI,CAACtlJ,OAAO,EAAE/xM,OAAAA,CAAQ,CAAC+8H,IAAAA,CAAM7jI,SAC3B,GAAI6jI,IAAAA,CAAM,CACRA,IAAKh6E,CAAAA,WAAW,GAChB,GAAIg6E,IAAAA,CAAK/5E,QAAQ,CAAG,CAAG,CAAA,CACrB+5E,KAAKvgG,OAAO,EACZ,CAAA,IAAI,CAACu1K,OAAO,CAAC74M,KAAAA,CAAM,CAAG,KACxB,CACF,CACF,GACF,CACAo+V,YAAAA,EAAe,CACb,IAAI,CAACvlJ,OAAO,EAAE/xM,OAAAA,CAAQ,IACpB+8H,EAAAA,CAAAA,IAAAA,EAAMl6E,cACR,CACF,EAAA,CACAznD,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAAC04M,OAAO,CAAG,KACjC,CACF,CAnCMqlJ,OAEGG,eAAe,CAAG,YAmC3B,CAAA,SAASC,sBAAuBjlE,CAAAA,cAAc,EAC5C,MAAMzK,WAAAA,CAAc,IAAI,CACxB,GAAI,CAACA,WAAYltO,CAAAA,QAAQ,CAAE,OAC3B,MAAM68S,iBAAAA,CAAoBllE,eAAe33O,QAAQ,CACjD,MAAMykD,MAASo4P,CAAAA,iBAAAA,CAAkBC,OAAO,EAAID,iBAAAA,CAAkBC,OAAO,CAAC5vE,WAAAA,CAAYz6Q,IAAI,CAACsqV,WAAW,CAAC,CACnG,GAAIt4P,OAAQ,CACVyoL,WAAAA,CAAYltO,QAAQ,CAACk3J,MAAM,CAAGzyG,OAAOzkD,QAAQ,CAACk3J,OAAM,CAExD,CACA,SAAS8lJ,qBAAAA,CAAsBrlE,cAAc,CAAA,CAC3C,MAAMzK,WAAAA,CAAc,IAAI,CACxBA,WAAAA,CAAYx/C,QAAQ,CAAChuO,GAAG,CAAC,CAAC,KAAK,EAAEi4R,cAAAA,CAAel1P,EAAE,CAAC,CAAC,CAAEm6T,sBAAAA,CAAwB1vE,aAC9EA,WAAYx/C,CAAAA,QAAQ,CAAC5tO,EAAE,CAAC,CAAC,KAAK,EAAE63R,eAAel1P,EAAE,CAAC,CAAC,CAAEm6T,sBAAAA,CAAwB1vE,aAC7EA,WAAYx/C,CAAAA,QAAQ,CAAChuO,GAAG,CAAC,CAAC,OAAO,EAAEi4R,cAAAA,CAAel1P,EAAE,CAAC,CAAC,CAAEw6T,uBAAyB/vE,CAAAA,WAAAA,CAAAA,CACjFA,WAAYx/C,CAAAA,QAAQ,CAACxtO,IAAI,CAAC,CAAC,OAAO,EAAEy3R,cAAel1P,CAAAA,EAAE,CAAC,CAAC,CAAEw6T,uBAAyB/vE,CAAAA,WAAAA,CAAAA,CAClF,GAAI,CAACyK,eAAe33O,QAAQ,CAAE,CAC5BktO,WAAYx/C,CAAAA,QAAQ,CAACiB,IAAI,CAACgpD,gBAC5B,CAAO,KAAA,CACLilE,uBAAuBv6V,IAAI,CAAC6qR,YAAayK,cAC3C,EAAA,CACF,CACA,SAASslE,uBAAAA,CAAwBtlE,cAAc,CAAA,CAC7C,MAAMzK,WAAAA,CAAc,IAAI,CACxBA,WAAAA,CAAYx/C,QAAQ,CAAChuO,GAAG,CAAC,CAAC,KAAK,EAAEi4R,cAAAA,CAAel1P,EAAE,CAAC,CAAC,CAAEm6T,sBAAAA,CAAwB1vE,aAC9E,GAAIA,WAAAA,CAAYltO,QAAQ,CAAE,CACxBktO,WAAYltO,CAAAA,QAAQ,CAACpe,OAAO,GAC9B,CACF,CACA,MAAMs7T,aAAsBnnH,SAAAA,eAAAA,CAK1Bj2H,KAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAO,IAAI+pV,MACb,CACAnuH,KAAMjc,CAAAA,KAAK,CAAEsb,QAAQ,CAAE,CACrB,GAAI,CAACtb,KAAAA,CAAM3/M,IAAI,CAACklR,cAAc,CAAE,CAC9B,MACF,CACA,MAAMA,cAAAA,CAAiBjqD,QAASlzO,CAAAA,GAAG,CAAC43N,KAAAA,CAAM3/M,IAAI,CAACklR,cAAc,EAC7D,GAAI,CAACA,eAAgB,CACnBjqD,QAAAA,CAASxtO,IAAI,CAAC,CAAC,IAAI,EAAEkyN,KAAM3/M,CAAAA,IAAI,CAACklR,cAAc,CAAC,CAAC,CAAEqlE,qBAAAA,CAAuB5qI,OACzE,MACF,CACA4qI,sBAAsB36V,IAAI,CAAC+vN,MAAOulE,cACpC,EAAA,CAjBAn3R,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,SACX,CAAA,IAAI,CAACsxF,SAAS,CAAGtxF,IAAI+H,OACvB,CAeF,CAEA,MAAM2sH,SAAAA,CAOJ,IAAIpuF,KAAQ,EAAA,CACV,OAAO,IAAI,CAACquF,MAAM,CAEpB,IAAI71F,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC6I,MAAM,CAEpB,IAAInxQ,QAAS,CACX,OAAO,IAAI,CAACspQ,OAAO,CAErB,IAAIX,eAAgB,CAClB,OAAO,IAAI,CAACyI,cAAc,CAhB5B7vQ,WAAYuuQ,CAAAA,KAAK,CAAExH,KAAK,CAAEtoQ,MAAM,CAAE2oQ,aAAa,CAAC,CAC9C,IAAI,CAACw1F,MAAM,CAAGruF,KACd,CAAA,IAAI,CAACqB,MAAM,CAAG7I,KACd,CAAA,IAAI,CAACgB,OAAO,CAAGtpQ,MACf,CAAA,IAAI,CAACoxQ,cAAc,CAAGzI,cACxB,CAaF,CAEA,MAAMy1F,QAAAA,CAKJ,IAAI9qT,UAAa,EAAA,CACf,OAAO,IAAI,CAACmnM,WAAW,CAEzB,IAAIjnO,IAAO,EAAA,CACT,OAAO,IAAI,CAAC27N,KAAK,CARnB5tO,WAAAA,CAAY+xC,UAAU,CAAE9/B,IAAI,CAAC,CAC3B,IAAI,CAACinO,WAAW,CAAGnnM,UACnB,CAAA,IAAI,CAAC67L,KAAK,CAAG37N,KACf,CAOF,CAEA,SAAS6qV,WAAYC,CAAAA,KAAK,CAAEn5V,OAAO,EACjC,IAAIo5V,KAAAA,CACJ,MAAMC,kBAAqB,CAAA,CAAA,CAC3B,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMxtK,IAAO,CAAA,CAACytK,WAAY7qT,QACxB,GAAA,CAAA,OAAOA,UACL,KAAK0qT,KAAAA,CAAMI,OAAO,CAChB,OAAO,IAAI7nU,SAAAA,CAAU4nU,UAAWxqV,CAAAA,MAAM,CAAEwqV,UAAWl7S,CAAAA,UAAU,CAAEk7S,UAAWz3V,CAAAA,UAAU,CACtF,CAAKs3V,KAAAA,KAAAA,CAAMK,QAAQ,CACjB,OAAO,IAAIhoU,WAAW8nU,UAAWxqV,CAAAA,MAAM,CAAEwqV,UAAWl7S,CAAAA,UAAU,CAAEk7S,UAAWz3V,CAAAA,UAAU,CAAG,CAAA,CAC1F,CAAKs3V,KAAAA,KAAAA,CAAMM,QAAQ,CACjB,OAAO,IAAI5qV,UAAWyqV,CAAAA,UAAAA,CAAWxqV,MAAM,CAAEwqV,UAAAA,CAAWl7S,UAAU,CAAEk7S,UAAAA,CAAWz3V,UAAU,CAAG,CAAA,CAC1F,MAAKs3V,KAAMO,CAAAA,QAAQ,CACjB,OAAO,IAAIv4V,UAAWm4V,CAAAA,UAAAA,CAAWxqV,MAAM,CAAEwqV,WAAWl7S,UAAU,CAAEk7S,WAAWz3V,UAAU,CACvF,MAAKs3V,KAAMQ,CAAAA,SAAS,CAClB,OAAO,IAAIloU,WAAAA,CAAY6nU,WAAWxqV,MAAM,CAAEwqV,WAAWl7S,UAAU,CAAEk7S,WAAWz3V,UAAU,CAAG,CAC3F,CAAA,CAAA,KAAKs3V,KAAMS,CAAAA,SAAS,CAClB,OAAO,IAAIroU,YAAY+nU,UAAWxqV,CAAAA,MAAM,CAAEwqV,UAAWl7S,CAAAA,UAAU,CAAEk7S,UAAWz3V,CAAAA,UAAU,CAAG,CAC3F,CAAA,CAAA,KAAKs3V,MAAMU,UAAU,CACnB,OAAO,IAAI5rV,YAAAA,CAAaqrV,UAAWxqV,CAAAA,MAAM,CAAEwqV,UAAAA,CAAWl7S,UAAU,CAAEk7S,UAAAA,CAAWz3V,UAAU,CAAG,CAAA,CAC9F,CACA,OAAO,IACT,CACA,CAAA,MAAMi4V,oBAAuB,CAACrrT,WAC5B,OAAOA,QAAAA,EACL,KAAK0qT,KAAMI,CAAAA,OAAO,CAChB,OAAO,CACT,CAAKJ,KAAAA,KAAAA,CAAMK,QAAQ,CACjB,OAAO,CACT,CAAA,KAAKL,MAAMM,QAAQ,CACjB,OAAO,CACT,CAAA,KAAKN,MAAMO,QAAQ,CACjB,OAAO,CACT,CAAA,KAAKP,MAAMQ,SAAS,CAClB,OAAO,CACT,CAAA,KAAKR,KAAMS,CAAAA,SAAS,CAClB,OAAO,CACT,CAAKT,KAAAA,KAAAA,CAAMU,UAAU,CACnB,OAAO,CACX,CACA,OAAO,CACT,CAAA,CACA,MAAME,oBAAAA,CAAuB,SAC3B,EAAA,CAAA,OAAO3pF,UAAU4pF,cAAc,EAAA,CAAKF,qBAAqB1pF,SAAU6pF,CAAAA,SAAS,EAC9E,CAAA,CAAA,CACA,MAAMC,cAAAA,CAAiB,CACrB,CAAG,CAAA,CAAA,CACH,EAAG,CACH,CAAA,CAAA,CAAG,EACH,CAAG,CAAA,CAAA,CACH,CAAG,CAAA,CAAA,CACH,CAAG,CAAA,CAAA,CACH,EAAG,CACH,CAAA,CAAA,CAAG,CACL,CACA,CAAA,MAAMC,gBAAkB,CAACn2U,QAAAA,CAAU26E,OACjC,GAAA,CAAA,MAAMy7P,QAAW,CAAA,CAACvnV,IAAK7O,CAAGC,CAAAA,CAAAA,GAAAA,CACxB4O,GAAG,CAAC,CAAA,CAAE,CAAG7O,CAAC,CAAC,CAAE,CAAA,CAAGC,CAAC,CAAC,EAAE,CACpB4O,GAAG,CAAC,CAAA,CAAE,CAAG7O,CAAC,CAAC,CAAE,CAAA,CAAGC,CAAC,CAAC,EAAE,CACpB4O,GAAG,CAAC,CAAA,CAAE,CAAG7O,CAAC,CAAC,EAAE,CAAGC,CAAC,CAAC,CAAE,EACtB,EACA,MAAMyM,KAAAA,CAAQ,CAACmC,GAAK7O,CAAAA,CAAAA,CAAGC,CACrB4O,GAAAA,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAG7O,CAAC,CAAC,EAAE,CAAGC,CAAC,CAAC,CAAE,CAAA,CAAGA,CAAC,CAAC,CAAE,CAAA,CAAGD,CAAC,CAAC,CAAA,CAAE,CAClC6O,GAAG,CAAC,CAAE,CAAA,CAAG7O,CAAC,CAAC,CAAE,CAAA,CAAGC,CAAC,CAAC,CAAA,CAAE,CAAGA,CAAC,CAAC,EAAE,CAAGD,CAAC,CAAC,CAAE,CAClC6O,CAAAA,GAAG,CAAC,EAAE,CAAG7O,CAAC,CAAC,CAAE,CAAA,CAAGC,CAAC,CAAC,CAAE,CAAA,CAAGA,CAAC,CAAC,CAAA,CAAE,CAAGD,CAAC,CAAC,GAAE,CACpC,CACA,MAAMxP,SAAAA,CAAY,CAACqe,GAAAA,CAAK/Q,UACtB,MAAMkC,CAAAA,CAAI6O,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CACzB,MAAMmC,CAAI4O,CAAAA,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,CACzB,MAAMrO,EAAIof,GAAG,CAAC/Q,OAAS,CAAE,CAAA,CACzB,MAAMmR,CAAI,CAAA,CAAA,CAAMtf,KAAKud,IAAI,CAAClN,EAAIA,CAAIC,CAAAA,CAAAA,CAAIA,EAAIxQ,CAAIA,CAAAA,CAAAA,CAC9Cof,CAAAA,GAAG,CAAC/Q,MAAAA,CAAS,EAAE,EAAImR,CACnBJ,CAAAA,GAAG,CAAC/Q,OAAS,CAAE,CAAA,EAAImR,CACnBJ,CAAAA,GAAG,CAAC/Q,OAAS,CAAE,CAAA,EAAImR,EACrB,CACA,CAAA,MAAM9f,KAAO,CAAC0f,GAAAA,CAAK7I,GAAKm0C,CAAAA,SAAAA,GAAAA,CACtB,IAAI,IAAI/pD,EAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAG,EAAEA,CAAAA,CAAE,CACxBye,GAAG,CAACze,EAAE,CAAG4V,GAAG,CAACm0C,SAAY/pD,CAAAA,CAAAA,EAAE,CAE/B,CAAA,CACA,MAAM69R,YAAetzL,CAAAA,OAAAA,CAAQtqG,MAAM,CAAG,CACtC,CAAA,MAAM04C,YAAc/oB,QAAS3vB,CAAAA,MAAM,CAAG,CACtC,CAAA,MAAMF,OAAS,IAAI8Z,YAAAA,CAAa+V,QAAS3vB,CAAAA,MAAM,CAC/C,CAAA,MAAM2P,EAAI,CACR,CAAA,CACA,EACA,CACD,CAAA,CAAEC,EAAI,CACL,CAAA,CACA,CACA,CAAA,CAAA,CACD,CAAExQ,CAAAA,CAAI,CACL,CACA,CAAA,CAAA,CACA,EACD,CAAEuuM,EAAAA,CAAK,CACN,CACA,CAAA,CAAA,CACA,EACD,CAAE10L,EAAAA,CAAK,CACN,CACA,CAAA,CAAA,CACA,EACD,CAAEkX,CAAAA,CAAI,CACL,CACA,CAAA,CAAA,CACA,CACD,CAAA,CACD,IAAI,IAAIpwB,EAAI,CAAGA,CAAAA,CAAAA,CAAI69R,aAAc,EAAE79R,CAAAA,CAAE,CACnC,MAAM6zB,EAAAA,CAAK02E,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG,CAAA,CAChC,MAAM8zB,EAAKy2E,CAAAA,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAChC,CAAA,MAAM+zB,GAAKw2E,OAAO,CAACvqG,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAChCjB,CAAAA,IAAAA,CAAK6Q,EAAGggB,QAAUiE,CAAAA,EAAAA,CAAAA,CAClB90B,KAAK8Q,CAAG+f,CAAAA,QAAAA,CAAUkE,IAClB/0B,IAAKM,CAAAA,CAAAA,CAAGuwB,SAAUmE,EAClBiyU,CAAAA,CAAAA,QAAAA,CAASp4J,EAAI/9L,CAAAA,CAAAA,CAAGD,CAChBo2V,CAAAA,CAAAA,QAAAA,CAAS9sV,GAAI7Z,CAAGuQ,CAAAA,CAAAA,CAAAA,CAChB0M,MAAM8T,CAAGw9K,CAAAA,EAAAA,CAAI10L,IACb9Y,SAAUgwB,CAAAA,CAAAA,CAAG,CACb,CAAA,CAAA,IAAI,IAAIm2D,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAE,CAAA,CACxBxmF,MAAM,CAAC8zB,EAAAA,CAAK0yD,CAAE,CAAA,EAAIn2D,CAAC,CAACm2D,EAAE,CACtBxmF,MAAM,CAAC+zB,EAAAA,CAAKyyD,EAAE,EAAIn2D,CAAC,CAACm2D,CAAE,CACtBxmF,CAAAA,MAAM,CAACg0B,GAAKwyD,CAAE,CAAA,EAAIn2D,CAAC,CAACm2D,CAAAA,EAAE,CAE1B,CACA,IAAI,IAAIvmF,CAAI,CAAA,CAAA,CAAGA,EAAI24C,WAAa,CAAA,EAAE34C,EAAE,CAClCI,SAAAA,CAAUL,MAAQC,CAAAA,CAAAA,CAAI,CACxB,EAAA,CACA,OAAO,IAAI+M,UAAAA,CAAWhN,OAAO2a,MAAM,CACrC,EACA,MAAMurV,UAAAA,CAAa,WAACl5P,EAAAA,CAClB,MAAMhtG,MAAAA,CAAS,EACf,CAAA,MAAM2a,OAAS,IAAIqqV,KAAAA,CAAMmB,aAAa,CACtCxrV,MAAAA,CAAOyrV,IAAI,CAACp5P,WAAAA,CAAaA,YAAY9sG,MAAM,CAAA,CAC3C,MAAMy8O,OAAU,CAAA,IAAIqoH,MAAMqB,OAAO,CACjC,GAAI1pH,OAAAA,CAAQ2pH,sBAAsB,CAAC3rV,UAAYqqV,KAAMuB,CAAAA,eAAe,CAAE,CACpEvmW,MAAAA,CAAO2M,KAAK,CAAG,yCAAA,CACf,OAAO3M,MACT,CACA,MAAM2pI,KAAO,IAAIq7N,KAAAA,CAAMx7N,IAAI,CAC3B,MAAMn5C,OAASssJ,OAAQ6pH,CAAAA,kBAAkB,CAAC7rV,MAAAA,CAAQgvH,IAClD,CAAA,CAAA,GAAI,CAACt5C,MAAU,EAAA,CAACA,OAAOo2Q,EAAE,EAAA,EAAMzB,MAAM7uE,UAAU,CAACxsJ,QAAU,CAAG,CAAA,CAC3D3pI,OAAO2M,KAAK,CAAG,+BACf,OAAO3M,MACT,CACA,MAAMsqG,UAAAA,CAAaq/B,IAAK+8N,CAAAA,SAAS,EAAK,CAAA,CAAA,CACtC,MAAMC,YAAeh9N,CAAAA,IAAAA,CAAKi9N,UAAU,EAAM,EAAA,KAAA,CAC1C,MAAMC,WAAcv8P,CAAAA,UAAAA,EAAcq8P,YAAAA,CAAe,CAAI,CAAA,CAAA,EACrD,MAAMG,UAAAA,CAAa9B,MAAM+B,OAAO,CAACF,aACjC,GAAIF,YAAAA,CAAc,CAChBhqH,OAAAA,CAAQqqH,uBAAuB,CAACr9N,KAAMk9N,WAAaC,CAAAA,UAAAA,CACnD9mW,CAAAA,MAAOwqG,CAAAA,OAAO,CAAG,IAAIltE,WAAAA,CAAY0nU,MAAMiC,OAAO,CAACtsV,MAAM,CAAEmsV,UAAAA,CAAYx8P,YAAYxpG,KAAK,EAAA,CAAG6Z,OAAM,CAC/F,KAAO,CACLgiO,OAAAA,CAAQuqH,uBAAuB,CAACv9N,KAAMk9N,WAAaC,CAAAA,UAAAA,CACnD9mW,CAAAA,MAAOwqG,CAAAA,OAAO,CAAG,IAAIptE,WAAAA,CAAY4nU,KAAMmC,CAAAA,OAAO,CAACxsV,MAAM,CAAEmsV,UAAYx8P,CAAAA,UAAAA,CAAAA,CAAYxpG,KAAK,EAAG6Z,CAAAA,OAAM,CAE/FqqV,KAAAA,CAAMoC,KAAK,CAACN,UACZ,CAAA,CAAA,MAAMv7S,WAAa,EAAE,CACrB,IAAI,IAAItrD,CAAAA,CAAI,EAAGA,CAAI0pI,CAAAA,IAAAA,CAAK09N,cAAc,EAAI,CAAA,EAAEpnW,EAAE,CAC5CsrD,UAAAA,CAAWxqD,IAAI,CAAC47O,OAAAA,CAAQ2qH,YAAY,CAAC39N,IAAAA,CAAM1pI,CAC7C,CAAA,EAAA,CACAsrD,UAAWp7C,CAAAA,IAAI,CAAC,CAACN,CAAAA,CAAGC,KAClB,OAAQi2V,CAAAA,cAAc,CAACl2V,CAAE03V,CAAAA,cAAc,EAAG,CAAA,EAAIxB,eAAe7lW,MAAK,GAAM6lW,cAAc,CAACj2V,CAAEy3V,CAAAA,cAAc,EAAG,CAAA,EAAIxB,cAAe7lW,CAAAA,MAAM,CACrI,CAAA,CACAF,CAAAA,MAAOurD,CAAAA,UAAU,CAAGA,UAAWzkD,CAAAA,GAAG,CAAC,CAAC+I,EAAIA,EAAE23V,SAAS,EAAA,CAAA,CACnD,IAAIC,eAAkB,CAAA,CAAA,CACtB,MAAMn1T,OAAUiZ,CAAAA,UAAAA,CAAWzkD,GAAG,CAAC,CAAC+I,EAAAA,CAC9B,MAAMlC,MAAS85V,CAAAA,eAAAA,CACfA,iBAAmBjoW,IAAK0V,CAAAA,IAAI,CAAC0wV,oBAAqB/1V,CAAAA,CAAAA,CAAAA,CAAK,CAAK,CAAA,CAAA,CAAA,CAC5D,OAAOlC,MACT,GACA,MAAM65M,UAAAA,CAAaj8J,WAAWsc,IAAI,CAAC,CAAKh4D,EAAAA,CAAAA,CAAE03V,cAAc,EAAA,GAAOrC,gBAC/D,CAAA,CAAA,MAAMwC,aAAep1T,OAAO,CAAC,EAAE,CAC/B,GAAI,CAACk1K,UAAY,CAAA,CACf,IAAI,IAAIvnN,CAAAA,CAAI,EAAGA,CAAIqyC,CAAAA,OAAAA,CAAQpyC,MAAM,CAAE,EAAED,EAAE,CACrCqyC,OAAO,CAACryC,CAAAA,CAAE,EAAI,GAChB,CACAwnW,eAAmB,EAAA,GACrB,CACAznW,MAAO6vB,CAAAA,QAAQ,CAAG,IAAI8gB,WAAAA,CAAYg5F,IAAKi9N,CAAAA,UAAU,EAAKa,CAAAA,eAAAA,CAAAA,CACtD,MAAM/oV,GAAM,CAAA,IAAI1R,WAAWhN,MAAO6vB,CAAAA,QAAQ,EAC1C,IAAI,IAAI5vB,CAAI,CAAA,CAAA,CAAGA,CAAI0pI,CAAAA,IAAAA,CAAK09N,cAAc,EAAI,CAAA,EAAEpnW,EAAE,CAC5C,MAAMg8Q,UAAY1wN,UAAU,CAACtrD,EAAE,CAC/B,MAAM0nW,YAAc/B,oBAAqB3pF,CAAAA,SAAAA,CAAAA,CACzC,MAAM2rF,OAAUj+N,CAAAA,IAAAA,CAAKi9N,UAAU,EAAKe,CAAAA,WAAAA,CACpC,MAAME,GAAAA,CAAM7C,KAAM+B,CAAAA,OAAO,CAACa,OAC1BjrH,CAAAA,CAAAA,OAAAA,CAAQmrH,iCAAiC,CAACn+N,IAAAA,CAAMsyI,UAAWA,SAAU6pF,CAAAA,SAAS,EAAI8B,CAAAA,OAAAA,CAASC,GAC3F,CAAA,CAAA,MAAMhyV,IAAM,IAAI7I,UAAAA,CAAWg4V,MAAM+C,MAAM,CAACptV,MAAM,CAAEktV,GAAAA,CAAKD,OACrD,CAAA,CAAA,IAAI,IAAIphR,CAAAA,CAAI,EAAGA,CAAImjD,CAAAA,IAAAA,CAAKi9N,UAAU,EAAI,CAAA,EAAEpgR,EAAE,CACxC,IAAI,IAAIlnF,CAAI,CAAA,CAAA,CAAGA,EAAIqoW,WAAa,CAAA,EAAEroW,EAAE,CAClCof,GAAG,CAAC8nE,CAAIihR,CAAAA,eAAAA,CAAkBn1T,OAAO,CAACryC,CAAE,CAAA,CAAGX,EAAE,CAAGuW,GAAG,CAAC2wE,CAAImhR,CAAAA,WAAAA,CAAcroW,GAAE,CAExE,CACA,GAAI,CAACkoN,UAAAA,EAAcy0D,UAAUsrF,cAAc,EAAA,GAAOtC,mBAAoB,CACpE,MAAMr7N,QAAUo8N,eAAgBtuK,CAAAA,IAAAA,CAAK7hL,GAAKomQ,CAAAA,SAAAA,CAAU6pF,SAAS,EAAA,CAAA,CAAKa,aAAe,IAAIrpU,WAAAA,CAAYt9B,OAAOwqG,OAAO,CAAA,CAAI,IAAIptE,WAAYp9B,CAAAA,MAAAA,CAAOwqG,OAAO,CAAA,CAAA,CACjJ,IAAI,IAAIhkB,EAAI,CAAGA,CAAAA,CAAAA,CAAImjD,KAAKi9N,UAAU,EAAA,CAAI,EAAEpgR,CAAE,CAAA,CACxC,IAAI,IAAIlnF,CAAI,CAAA,CAAA,CAAGA,EAAI,EAAI,CAAA,EAAEA,EAAE,CACzBof,GAAG,CAAC8nE,CAAIihR,CAAAA,eAAAA,CAAkBC,YAAepoW,CAAAA,CAAAA,CAAE,CAAGsqI,OAAO,CAACpjD,CAAI,CAAA,EAAA,CAAKlnF,GAAE,CAErE,CACF,CACA0lW,KAAAA,CAAMoC,KAAK,CAACS,GACd,EAAA,CACA7C,MAAM57T,OAAO,CAACugG,MACdq7N,KAAM57T,CAAAA,OAAO,CAACuzM,OACdqoH,CAAAA,CAAAA,KAAAA,CAAM57T,OAAO,CAACzuB,MAAAA,CAAAA,CACd,OAAO3a,MACT,CAAA,CACA,MAAM68O,MAAS,CAAC5iO,OACd,MAAMja,MAAAA,CAASkmW,UAAW,CAAA,IAAIl5V,UAAWiN,CAAAA,IAAAA,CAAKU,MAAM,CACpDlX,CAAAA,CAAAA,IAAAA,CAAKkmO,WAAW,CAAC,CACfq+H,MAAO/tV,IAAK+tV,CAAAA,KAAK,CACjBr7V,KAAAA,CAAO3M,MAAO2M,CAAAA,KAAK,CACnB69F,OAASxqG,CAAAA,MAAAA,CAAOwqG,OAAO,CACvB36E,QAAAA,CAAU7vB,OAAO6vB,QAAQ,CACzB07B,UAAYvrD,CAAAA,MAAAA,CAAOurD,UACrB,EAAG,CACDvrD,MAAAA,CAAOwqG,OAAO,CACdxqG,MAAAA,CAAO6vB,QAAQ,CAChB,CAAC+rE,MAAM,CAAE7qF,GAAIA,CAAK,EAAA,IAAA,CAAA,EACrB,EACA,MAAMk3V,SAAAA,CAAY,EAAE,CACpBxkW,IAAKykW,CAAAA,SAAS,CAAIjkR,UAChB,MAAMhqE,IAAAA,CAAOgqE,QAAQhqE,IAAI,CACzB,OAAOA,IAAKvC,CAAAA,IAAI,EACd,IAAK,MACHjU,CAAAA,IAAAA,CAAK0kW,kBAAkB,CAAC,CACtBC,gBAAiB,CAACC,OAAAA,CAASC,mBACzBz7V,WAAYC,CAAAA,WAAW,CAACmN,IAAAA,CAAKlO,MAAM,CAAEs8V,SAASn8V,IAAI,CAAC,MAAUo8V,EAAAA,eAAAA,CAAgBtoW,SAAS8/F,KAAK,CAAC,MAAUpzF,EAAAA,OAAAA,CAAQC,KAAK,CAAC,CAAC,qBAAqB,EAAEmvE,MAAAA,CAAO,CAAC,CACpJ,CAAA,CAAA,OAAO,EACT,CACF,CAAA,CAAA,CAAG5vE,IAAI,CAAEC,WACP64V,KAAQ74V,CAAAA,QAAAA,CACR87V,UAAUr7V,OAAO,CAAC,IAACqN,EAAO4iO,MAAO5iO,CAAAA,IAAAA,CAAAA,EACnC,GACA,MACF,IAAK,aACH,GAAI+qV,KAAAA,CAAO,CACTnoH,MAAO5iO,CAAAA,IAAAA,EACT,CAAO,KAAA,CACLguV,SAAUlnW,CAAAA,IAAI,CAACkZ,IACjB,EAAA,CACA,KACJ,CACF,EACF,CAEA,MAAMsuV,kBAAAA,CAAqB,CAC3B,CAAMC,MAAAA,QAAAA,CAoBJnoT,KAAKl9C,OAAO,CAAE,CACZA,OAAQyJ,CAAAA,OAAO,CAAC,MAACjJ,EAAAA,CACfA,MAAOzB,CAAAA,gBAAgB,CAAC,SAAA,CAAW,OACjC,EAAA,CAAA,MAAM+X,KAAOgqE,OAAQhqE,CAAAA,IAAI,CACzB,MAAM1S,QAAAA,CAAW,IAAI,CAACkhW,YAAY,CAACzmW,GAAG,CAACiY,IAAAA,CAAK+tV,KAAK,CACjD,CAAA,GAAIzgW,SAAU,CACZA,QAAAA,CAAS0S,IAAKtN,CAAAA,KAAK,CAAE,CACnB69F,QAASvwF,IAAKuwF,CAAAA,OAAO,CACrB36E,QAAU5V,CAAAA,IAAAA,CAAK4V,QAAQ,CACvB07B,UAAAA,CAAYtxC,KAAKsxC,UACnB,GACF,CACA,IAAI,CAACk9S,YAAY,CAAC3/V,MAAM,CAACmR,IAAAA,CAAK+tV,KAAK,CAAA,CACnC,GAAI,IAAI,CAACU,QAAQ,CAACxoW,MAAM,CAAG,CAAA,CAAG,CAC5B,MAAMyoW,GAAAA,CAAM,IAAI,CAACD,QAAQ,CAAC90T,KAAK,EAC/B,CAAA,IAAI,CAAC4jB,GAAG,CAAC7zD,OAAQglW,GACnB,EAAA,CAAA,KAAO,CACL,MAAMC,MAAS,CAAA,IAAI,CAACzlW,OAAO,CAAC,EAAE,CAAC+F,OAAO,CAACvF,MACvC,CAAA,CAAA,GAAIilW,SAAW,CAAC,CAAA,CAAG,CACjB,IAAI,CAACzlW,OAAO,CAAC,CAAA,CAAE,CAAC4F,MAAM,CAAC6/V,MAAQ,CAAA,CAAA,CAAA,CAC/B,IAAI,CAACzlW,OAAO,CAAC,CAAA,CAAE,CAACpC,IAAI,CAAC4C,QACvB,CAAO,KAAA,CACL,MAAMklW,MAAAA,CAAS,IAAI,CAAC1lW,OAAO,CAAC,CAAA,CAAE,CAAC+F,OAAO,CAACvF,QACvC,GAAIklW,MAAAA,GAAW,CAAC,CAAA,CAAG,CACjB,IAAI,CAAC1lW,OAAO,CAAC,EAAE,CAAC4F,MAAM,CAAC8/V,MAAQ,CAAA,CAAA,CAAA,CAC/B,IAAI,CAAC1lW,OAAO,CAAC,CAAE,CAAA,CAACpC,IAAI,CAAC4C,MAAAA,EACvB,CACF,CACF,CACF,CACF,EAAA,CAAA,CACA,CAAA,IAAI,CAACR,OAAO,CAAC,EAAE,CAAGA,OAAAA,CAClB,MAAM,IAAI,CAACulW,QAAQ,CAACxoW,MAAM,GAAK,IAAI,CAACiD,OAAO,CAAC,CAAA,CAAE,CAACjD,MAAM,EAAI,IAAI,CAACiD,OAAO,CAAC,EAAE,CAACjD,MAAM,CAAE,CAAA,CAC/E,MAAMyoW,GAAM,CAAA,IAAI,CAACD,QAAQ,CAAC90T,KAAK,EAC/B,CAAA,GAAI,IAAI,CAACzwC,OAAO,CAAC,CAAE,CAAA,CAACjD,MAAM,CAAG,CAAG,CAAA,CAC9B,MAAMyD,MAAS,CAAA,IAAI,CAACR,OAAO,CAAC,EAAE,CAACywC,KAAK,EACpC,CAAA,IAAI,CAACzwC,OAAO,CAAC,CAAE,CAAA,CAACpC,IAAI,CAAC4C,MAAAA,CAAAA,CACrB,IAAI,CAAC6zD,GAAG,CAAC7zD,MAAAA,CAAQglW,GACnB,EAAA,CAAA,KAAO,CACL,MAAMhlW,MAAAA,CAAS,IAAI,CAACR,OAAO,CAAC,CAAE,CAAA,CAACywC,KAAK,EACpC,CAAA,IAAI,CAACzwC,OAAO,CAAC,EAAE,CAACpC,IAAI,CAAC4C,MACrB,CAAA,CAAA,IAAI,CAAC6zD,GAAG,CAAC7zD,MAAAA,CAAQglW,KACnB,CACF,CACF,CACAG,UAAWnuV,CAAAA,MAAM,CAAEpT,QAAQ,CAAE,CAC3B,MAAMohW,GAAM,CAAA,CACVX,MAAO,IAAI,CAACA,KAAK,EACjBrtV,CAAAA,MAAAA,CAAQA,MACV,CACA,CAAA,IAAI,CAAC8tV,YAAY,CAACjgW,GAAG,CAACmgW,GAAIX,CAAAA,KAAK,CAAEzgW,QACjC,CAAA,CAAA,GAAI,IAAI,CAACpE,OAAO,CAAC,CAAE,CAAA,CAACjD,MAAM,CAAG,CAAA,CAAG,CAC9B,MAAMyD,MAAAA,CAAS,IAAI,CAACR,OAAO,CAAC,CAAA,CAAE,CAACywC,KAAK,GACpC,IAAI,CAACzwC,OAAO,CAAC,CAAA,CAAE,CAACpC,IAAI,CAAC4C,MACrB,CAAA,CAAA,IAAI,CAAC6zD,GAAG,CAAC7zD,MAAQglW,CAAAA,GAAAA,EACnB,MAAO,GAAI,IAAI,CAACxlW,OAAO,CAAC,CAAE,CAAA,CAACjD,MAAM,CAAG,EAAG,CACrC,MAAMyD,OAAS,IAAI,CAACR,OAAO,CAAC,CAAA,CAAE,CAACywC,KAAK,EAAA,CACpC,IAAI,CAACzwC,OAAO,CAAC,CAAE,CAAA,CAACpC,IAAI,CAAC4C,MAAAA,CAAAA,CACrB,IAAI,CAAC6zD,GAAG,CAAC7zD,OAAQglW,GACnB,EAAA,CAAA,KAAO,CACL,IAAI,CAACD,QAAQ,CAAC3nW,IAAI,CAAC4nW,GAAAA,EACrB,CACF,CAjFA3gW,aAAa,CACX,IAAI,CAAC7E,OAAO,CAAG,CACb,EAAE,CACF,EAAE,CACF,EAAE,CACH,CACD,IAAI,CAAC6kW,KAAK,CAAG,CACb,CAAA,IAAI,CAACU,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACD,YAAY,CAAG,IAAIpgW,GACxB,CAAA,IAAI,CAACmvD,GAAG,CAAG,CAAC7zD,MAAAA,CAAQglW,OAClBhlW,MAAOgmO,CAAAA,WAAW,CAAC,CACjBjyN,IAAAA,CAAM,YACNswV,CAAAA,KAAAA,CAAOW,GAAIX,CAAAA,KAAK,CAChBrtV,MAAQguV,CAAAA,GAAAA,CAAIhuV,MAAM,CACpB,CAAG,CACDguV,GAAIhuV,CAAAA,MAAM,CACX,EACH,EACF,CAgEF,CACA,MAAMouV,cAAAA,CAAiB,GACrB,EAAA,CAAA,OAAO,IAAI7vR,OAAQ,CAAA,CAAC5uC,QAASu1C,MAC3B,GAAA,CAAA,MAAMnuE,QAAU,CACdwgC,KAAAA,CAAO,KACPs1E,YAAc,CAAA,MAAA,CACdrB,MAAOoiP,kBAAqB,CAAA,CAAA,CAC5BjiP,UAAYiiP,CAAAA,kBACd,CACAr+O,CAAAA,IAAAA,CAAKloH,GAAG,CAAC8I,GAAAA,CAAK4G,QAAS,CAAC5F,GAAAA,CAAKu9G,YAC3B,GAAIv9G,GAAAA,CAAK,CACP+zE,MAAAA,CAAO/zE,GACT,EAAA,CAAA,KAAO,CACLw+B,OAAQ++E,CAAAA,QAAAA,EACV,CACF,CACF,EAAA,CAAA,CACF,EACA,MAAM2/O,aAAAA,CAAgB,GAACl+V,EAAAA,CACrB,MAAMm+V,aAAAA,CAAgB,KACpB,OAAOprH,KAAAA,CAAM/yO,KAAKoB,IAAI,CAAC,MAAUlM,EAAAA,MAAAA,CAAOkpW,WAAW,EAAIh9V,CAAAA,CAAAA,IAAI,CAAC,MAACyO,EAAS9N,YAAYy1E,OAAO,CAAC3nE,QAC5F,CACA,CAAA,MAAMwuV,gBAAmB,CAAA,IAAA,CACvB,OAAOt8V,WAAAA,CAAYs8V,gBAAgB,CAACtrH,KAAAA,CAAM/yO,MAAMg1F,KAAK,CAAC,GACpD,EAAA,CAAA,OAAOmpQ,aACT,EAAA,CAAA,CACF,CACA,CAAA,OAAOp8V,YAAYs8V,gBAAgB,CAAGA,mBAAqBF,aAC7D,EAAA,CAAA,CACA,MAAMG,mBAAsB,CAAA,CAAA,CAC5B,IAAIV,QAAAA,CACJ,IAAIW,YAAAA,CACJ,MAAMC,iBAAoB,CAAC99V,SACzB,GAAIk9V,QAAAA,CAAU,CACZ,OAAO,IACT,CACA,GAAI,CAACl9V,OAAQ,CACX,GAAI69V,aAAc,CAChB79V,MAAAA,CAAS69V,aACX,CAAO,KAAA,CACL,MAAME,YAAAA,CAAep8V,UAAWE,CAAAA,SAAS,CAAC,oBAC1C,CAAA,CAAA,GAAIk8V,aAAc,CAChB/9V,MAAAA,CAAS,CACPu5V,KAAOwE,CAAAA,YAAAA,CAAa59V,OAAO,CAC3BC,OAAS29V,CAAAA,YAAAA,CAAa39V,OAAO,CAC7B49V,UAAAA,CAAYD,aAAaC,UAC3B,EACF,CAAO,KAAA,CACLh+V,MAAS,CAAA,CACPu5V,KAAO,CAAA,eAAA,CACPn5V,QAAS,iBACT49V,CAAAA,UAAAA,CAAYJ,mBACd,EACF,CACF,CACF,CACA,GAAI,CAAC59V,MAAAA,CAAOu5V,KAAK,EAAI,CAACv5V,MAAOI,CAAAA,OAAO,CAAE,CACpC,OAAO,KACT,CACA88V,QAAAA,CAAW,IAAIF,QAAAA,CACftvR,OAAQplC,CAAAA,GAAG,CAAC,CACVi1T,cAAAA,CAAev9V,OAAOu5V,KAAK,CAAA,CAC3BiE,cAAcx9V,MAAOI,CAAAA,OAAO,CAC7B,CAAA,CAAA,CAAEM,IAAI,CAAC,CAAC,CAACu9V,WAAAA,CAAaC,YAAY,GACjC,CAAA,MAAMnkW,KAAO,CACX,aAAA,CACAkkW,WACA,CAAA,cAAA,CACA,CAAC;AAAG,EAAE3E,WAAAA,CAAYnlW,QAAQ,EAAG,CAAA;;;AAAS,CAAC,CACxC,CAACG,IAAI,CAAC,IAAA,CAAA,CACP,MAAM6pW,IAAO,CAAA,IAAI9+H,IAAK,CAAA,CACpBtlO,KACD,CAAE,CACDmS,KAAM,wBACR,CAAA,CAAA,CACA,MAAMkyV,SAAY5wR,CAAAA,GAAAA,CAAI4xJ,eAAe,CAAC++H,MACtC,MAAMH,UAAAA,CAAahqW,IAAKoU,CAAAA,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,GAAInI,MAAOg+V,CAAAA,UAAU,EAAIJ,mBACjE,CAAA,CAAA,CAAA,MAAMjmW,QAAU,EAAE,CAClB,IAAI,IAAIlD,EAAI,CAAGA,CAAAA,CAAAA,CAAIupW,UAAY,CAAA,EAAEvpW,EAAE,CACjC,MAAM0D,MAAS,CAAA,IAAIP,OAAOwmW,SAC1BjmW,CAAAA,CAAAA,MAAAA,CAAOgmO,WAAW,CAAC,CACjBjyN,KAAM,MACN3L,CAAAA,MAAAA,CAAQ29V,WACV,CAAA,CAAA,CACAvmW,QAAQpC,IAAI,CAAC4C,QACf,CACA+kW,QAAAA,CAASroT,IAAI,CAACl9C,OAAAA,EAChB,CACA,CAAA,CAAA,OAAO,IACT,CACA,CAAA,MAAM0mW,gBAAkB,MAACr+V,EAAAA,CACvB,GAAIA,MAAQs+V,EAAAA,QAAAA,CAAU,CACpBT,YAAAA,CAAe79V,OACjB,CAAO,KAAA,CACL89V,iBAAkB99V,CAAAA,MAAAA,EACpB,CACF,CACA,CAAA,MAAMu+V,WAAc,CAAA,CAACpvV,OAAQpT,QAC3B,GAAA,CAAA,GAAI,CAAC+hW,iBAAqB,EAAA,CAAA,CACxB,OAAO,KACT,CACAZ,QAASI,CAAAA,UAAU,CAACnuV,MAAQpT,CAAAA,QAAAA,CAAAA,CAC5B,OAAO,IACT,CAEA,CAAMyiW,MAAAA,YAAAA,CACJ5gU,OAAU,EAAA,CACR,GAAI,IAAI,CAACk7T,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC13V,OAAO,CAAC,MAACq/F,EAAAA,CACpBA,MAAOyyG,CAAAA,MAAM,CAAG,KAClB,CAAA,EACF,CACF,CACF,CACA,MAAMurJ,SAAAA,CAAY,GAChB,EAAA,CAAA,OAAO,mCAAmCtnW,IAAI,CAACgQ,GACjD,CAAA,CAAA,CACA,MAAMu3V,kBAAqB,CAACv3V,MAC1B,OAAOA,GAAAA,CAAIzR,SAAS,CAACyR,GAAAA,CAAIzJ,OAAO,CAAC,KAAO,CAAGyJ,CAAAA,GAAAA,CAAIzJ,OAAO,CAAC,GAAA,CAAA,CACzD,EACA,MAAMihW,gBAAAA,CAAmB,YAACC,EAAAA,CACxB,OAAOA,YACL,EAAA,IAAK,QACH,CAAA,OAAO,CACT,CAAK,IAAA,MAAA,CACH,OAAO,CACT,KAAK,MACH,CAAA,OAAO,CACT,CAAK,IAAA,MAAA,CACH,OAAO,CACT,CAAA,IAAK,MACH,CAAA,OAAO,CACT,CAAK,IAAA,MAAA,CACH,OAAO,CACT,KAAK,MACH,CAAA,OAAO,EACT,CAAA,QACE,OAAO,CACX,CACF,EACA,MAAMC,kBAAAA,CAAqB,aACzB,EAAA,CAAA,OAAOnuS,aACL,EAAA,KAAK,KACH,OAAO95B,SACT,CAAK,KAAA,IAAA,CACH,OAAOC,UACT,CAAA,KAAK,IACH,CAAA,OAAOC,UACT,CAAK,KAAA,IAAA,CACH,OAAOC,WACT,CAAA,KAAK,KACH,OAAOC,UACT,CAAK,KAAA,IAAA,CACH,OAAOC,WACT,CAAA,KAAK,KACH,OAAOC,YACT,SACE,OAAO,CACX,CACF,CAAA,CACA,MAAM4nU,uBAA0B,CAACpuS,gBAC/B,OAAOA,aAAAA,EACL,KAAK,IACH,CAAA,OAAO,CACT,CAAA,KAAK,KACH,OAAO,CACT,CAAK,KAAA,IAAA,CACH,OAAO,CACT,CAAA,KAAK,IACH,CAAA,OAAO,CACT,CAAK,KAAA,IAAA,CACH,OAAO,CACT,CAAA,KAAK,KACH,OAAO,CACT,CAAK,KAAA,IAAA,CACH,OAAO,CACT,CAAA,QACE,OAAO,CACX,CACF,CACA,CAAA,MAAMquS,oBAAuB,CAACruS,gBAC5B,OAAOA,aAAAA,EACL,KAAK,IACH,CAAA,OAAO3+B,SACT,CAAK,KAAA,IAAA,CACH,OAAOvwB,UACT,MAAK,IACH,CAAA,OAAOqwB,UACT,CAAA,KAAK,KACH,OAAOC,WACT,CAAK,KAAA,IAAA,CACH,OAAO5iB,UACT,CAAA,KAAK,KACH,OAAO0iB,WACT,MAAK,IACH,CAAA,OAAOtjB,YACT,CAAA,QACE,OAAO,IACX,CACF,EACA,MAAM0wV,uBAAAA,CAA0B,CAC9B,UAAYzsU,CAAAA,iBAAAA,CACZ,QAAUC,CAAAA,eAAAA,CACV,UAAWC,gBACX,CAAA,SAAA,CAAWG,eACX,UAAYD,CAAAA,qBAAAA,CACZ,YAAaD,oBACb,CAAA,YAAA,CAAcI,kBACd,CAAA,YAAA,CAAcC,mBACd,YAAcC,CAAAA,kBAAAA,CACd,YAAcC,CAAAA,kBAAAA,CACd,aAAcC,kBACd,CAAA,YAAA,CAAcC,kBACd,CAAA,YAAA,CAAcC,mBACd,YAAcC,CAAAA,kBAChB,EACA,MAAMknU,cAAAA,CAAiB,CACrB,CAAChoU,iBAAAA,EAAoB,CAAA,CACrB,CAACC,eAAgB,EAAE,CACnB,CAAA,CAACC,kBAAmB,CAAA,CACpB,CAACG,cAAAA,EAAiB,CAClB,CAAA,CAACD,uBAAwB,CAAA,CACzB,CAACD,oBAAqB,EAAE,CACxB,CAAA,CAACI,oBAAqB,CAAA,CACtB,CAACC,kBAAAA,EAAqB,CACtB,CAAA,CAACC,kBAAmB,EAAE,EACtB,CAACC,kBAAAA,EAAqB,CACtB,CAAA,CAACC,oBAAqB,EAAA,CACtB,CAACC,kBAAAA,EAAqB,EACtB,CAAA,CAACC,oBAAqB,EAAA,CACtB,CAACC,kBAAmB,EAAE,EACxB,CAAA,CACA,MAAM4rU,iBAAoB,CAAC1qR,UACzB,OAAOA,OAAAA,EACL,KAAK39C,SACH,CAAA,OAAO,CAAC9tB,EAAI9U,KAAKoU,GAAG,CAACU,CAAI,CAAA,GAAA,CAAO,CAAC,CACnC,CAAA,CAAA,KAAK+tB,UACH,CAAA,OAAO,CAAK/tB,EAAAA,CAAAA,CAAI,GAClB,CAAKguB,KAAAA,UAAAA,CACH,OAAO,CAAChuB,EAAI9U,IAAKoU,CAAAA,GAAG,CAACU,CAAI,CAAA,KAAA,CAAS,CAAC,CAAA,CACrC,MAAKiuB,WACH,CAAA,OAAO,CAACjuB,EAAIA,EAAI,KAClB,CAAA,QACE,OAAO,CAACA,EAAIA,CAChB,CACF,CAAA,CACA,MAAMo2V,eAAAA,CAAkB,CAACC,QAAUC,CAAAA,QAAAA,CAAU7qR,OAC3C,GAAA,CAAA,MAAM8qR,SAAWJ,iBAAkB1qR,CAAAA,OAAAA,CAAAA,CACnC,MAAM5nE,GAAAA,CAAMyyV,SAAS1qW,MAAM,CAC3B,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIkY,CAAAA,GAAAA,CAAK,EAAElY,CAAAA,CAAE,CAC1B0qW,QAAQ,CAAC1qW,EAAE,CAAG4qW,QAAAA,CAASD,QAAQ,CAAC3qW,CAAAA,CAAE,EACpC,CACA,OAAO0qW,QACT,CAAA,CACA,MAAMG,eAAkB,CAAA,CAACC,aAAcC,WAAajxF,CAAAA,OAAAA,CAAU,KAAK,GAAA,CACjE,MAAMx/N,aAAgB4vT,CAAAA,gBAAAA,CAAiBY,YAAarzV,CAAAA,IAAI,EACxD,MAAM4iC,QAAAA,CAAWiwT,oBAAqBQ,CAAAA,YAAAA,CAAa7uS,aAAa,CAChE,CAAA,GAAI,CAAC5hB,QAAU,CAAA,CACb,OAAO,IACT,CACA,IAAIt6C,MAAAA,CACJ,GAAI+qW,YAAaE,CAAAA,MAAM,CAAE,CACvB,MAAMA,MAASF,CAAAA,YAAAA,CAAaE,MAAM,CAClC,MAAMC,eAAkB,CAAA,CACtBjrT,MAAOgrT,MAAOhrT,CAAAA,KAAK,CACnBvoC,IAAM,CAAA,QACR,CACA,CAAA,MAAM8yF,QAAUsgQ,eAAgBhpW,CAAAA,MAAAA,CAAOskH,MAAM,CAAC8kP,gBAAiBD,MAAOzgQ,CAAAA,OAAO,CAAGwgQ,CAAAA,WAAAA,CAAa,MAC7F,MAAMG,cAAAA,CAAiB,CACrBlrT,KAAOgrT,CAAAA,MAAAA,CAAOhrT,KAAK,CACnBvoC,IAAAA,CAAMqzV,YAAarzV,CAAAA,IAAI,CACvBwkD,aAAe6uS,CAAAA,YAAAA,CAAa7uS,aAAa,CAC3C,CACA,MAAMtzD,MAASkiW,CAAAA,eAAAA,CAAgBhpW,MAAOskH,CAAAA,MAAM,CAAC+kP,cAAgBF,CAAAA,MAAAA,CAAOriW,MAAM,CAAGoiW,CAAAA,WAAAA,CAAa,MAC1F,GAAID,YAAAA,CAAaz+V,cAAc,CAAC,cAAe,CAC7C,MAAM8+V,YAAe,CAAA,CACnBC,WAAYN,YAAaM,CAAAA,UAAU,CACnCphT,UAAAA,CAAY8gT,aAAa9gT,UAAU,CACnCiS,cAAe6uS,YAAa7uS,CAAAA,aAAa,CACzCjc,KAAO8qT,CAAAA,YAAAA,CAAa9qT,KAAK,CACzBvoC,KAAMqzV,YAAarzV,CAAAA,IAAI,CACzB,CACA1X,OAAS8qW,eAAgBM,CAAAA,YAAAA,CAAcJ,WAAa,CAAA,IAAA,CAAA,CAAMlqW,KAAK,GACjE,CAAA,KAAO,CACLd,MAAS,CAAA,IAAIs6C,SAASywT,YAAa9qT,CAAAA,KAAK,CAAG1F,aAAAA,EAC7C,CACA,IAAI,IAAIt6C,CAAI,CAAA,CAAA,CAAGA,EAAIgrW,MAAOhrT,CAAAA,KAAK,CAAE,EAAEhgD,EAAE,CACnC,MAAMuzV,YAAchpP,OAAO,CAACvqG,EAAE,CAC9B,IAAI,IAAIumF,CAAAA,CAAI,EAAGA,CAAIjsC,CAAAA,aAAAA,CAAe,EAAEisC,CAAE,CAAA,CACpCxmF,MAAM,CAACwzV,WAAAA,CAAcj5S,aAAgBisC,CAAAA,CAAAA,CAAE,CAAG59E,MAAM,CAAC3I,EAAIs6C,aAAgBisC,CAAAA,CAAAA,EAAE,CAE3E,CACF,CAAO,KAAA,CACL,GAAIukR,YAAaz+V,CAAAA,cAAc,CAAC,YAAA,CAAA,CAAe,CAC7C,MAAM++V,UAAAA,CAAaL,WAAW,CAACD,aAAaM,UAAU,CAAC,CACvD,GAAItxF,OAAAA,EAAWsxF,WAAW/+V,cAAc,CAAC,YAAe,CAAA,CAAA,CACtD,MAAMg/V,eAAkB/wT,CAAAA,aAAAA,CAAgBD,QAASi0D,CAAAA,iBAAiB,CAClE,MAAMv/D,OAAAA,CAAU,IAAI2B,WAAAA,CAAYo6T,aAAa9qT,KAAK,CAAGqrT,iBACrD,MAAMC,QAAAA,CAAW,IAAIv+V,UAAWgiC,CAAAA,OAAAA,CAAAA,CAChC,IAAIw2B,SAAAA,CAAY,EAChB,IAAI,IAAIvlE,CAAI,CAAA,CAAA,CAAGA,EAAI8qW,YAAa9qT,CAAAA,KAAK,CAAE,EAAEhgD,EAAE,CACzC,IAAI+pD,UAAY,CAAC+gT,aAAa9gT,UAAU,EAAI,CAAA,EAAKhqD,EAAIorW,UAAWG,CAAAA,UAAU,CAC1E,IAAI,IAAI17V,EAAI,CAAGA,CAAAA,CAAAA,CAAIw7V,eAAiB,CAAA,EAAEx7V,EAAE,CACtCy7V,QAAQ,CAAC/lS,SAAY,EAAA,CAAA,CAAG6lS,UAAU,CAACrhT,SAAAA,EAAAA,EAAY,CAEnD,CACAhqD,MAAS,CAAA,IAAIs6C,QAAStL,CAAAA,OAAAA,EACxB,MAAO,CACLhvC,MAAAA,CAAS,IAAIs6C,QAAAA,CAAS+wT,WAAW1wV,MAAM,CAAE0wV,WAAWphT,UAAU,EAAI8gT,YAAa9gT,CAAAA,UAAU,EAAI,CAAA,EAAI8gT,YAAa9qT,CAAAA,KAAK,CAAG1F,aAAAA,EACxH,CACF,CAAO,KAAA,CACLv6C,MAAS,CAAA,IAAIs6C,SAASywT,YAAa9qT,CAAAA,KAAK,CAAG1F,aAC7C,EAAA,CACF,CACA,OAAOv6C,MACT,CACA,CAAA,MAAMyrW,uBAAyB,CAACV,YAAAA,CAAcC,WAC5C,GAAA,CAAA,MAAM/wV,KAAO6wV,eAAgBC,CAAAA,YAAAA,CAAcC,WAAa,CAAA,IAAA,CAAA,CACxD,GAAI/wV,IAAgBH,YAAAA,YAAAA,EAAgB,CAACixV,YAAaW,CAAAA,UAAU,CAAE,CAC5D,OAAOzxV,IACT,CACA,MAAM0xV,WAAc,CAAA,IAAI7xV,aAAaG,IAAK/Z,CAAAA,MAAM,EAChDwqW,eAAgBiB,CAAAA,WAAAA,CAAa1xV,IAAMowV,CAAAA,kBAAAA,CAAmBU,aAAa7uS,aAAa,CAAA,CAAA,CAChF,OAAOyvS,WACT,CAAA,CACA,MAAMC,sBAAyB,CAACb,YAC9B,EAAA,CAAA,IAAIp3V,IAAMo3V,YAAap3V,CAAAA,GAAG,CAC1B,IAAIC,IAAMm3V,YAAan3V,CAAAA,GAAG,CAC1B,GAAI,CAACD,GAAO,EAAA,CAACC,IAAK,CAChB,OAAO,IACT,CACA,GAAIm3V,YAAaW,CAAAA,UAAU,CAAE,CAC3B,MAAMG,KAAQxB,CAAAA,kBAAAA,CAAmBU,aAAa7uS,aAAa,CAAA,CAC3DvoD,GAAM+2V,CAAAA,eAAAA,CAAgB,EAAE,CAAE/2V,GAAAA,CAAKk4V,OAC/Bj4V,GAAM82V,CAAAA,eAAAA,CAAgB,EAAE,CAAE92V,GAAAA,CAAKi4V,KACjC,EAAA,CACA,OAAO,IAAI3gV,WAAAA,CAAY,IAAIhP,IAAAA,CAAK,CAACtI,GAAG,CAAC,CAAA,CAAE,CAAGD,GAAG,CAAC,EAAE,EAAI,GAAK,CAACC,GAAG,CAAC,EAAE,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAK,CAACC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAA,CAAE,EAAI,EAAA,CAAA,CAAM,IAAIuI,IAAAA,CAAK,CAACtI,GAAG,CAAC,CAAA,CAAE,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAK,CAACC,CAAAA,GAAG,CAAC,EAAE,CAAGD,GAAG,CAAC,CAAA,CAAE,EAAI,EAAA,CAAK,CAACC,GAAG,CAAC,CAAA,CAAE,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAC7L,CAAA,CAAA,CAAA,CACA,MAAMm4V,gBAAmB,CAACvrT,SACxB,EAAA,CAAA,GAAI,CAACA,SAAUj0C,CAAAA,cAAc,CAAC,MAAA,CAAA,CAAS,CACrC,OAAOsxB,mBACT,CACA,OAAO2iB,UAAU/P,IAAI,EACnB,KAAK,CACH,CAAA,OAAOhT,gBACT,CAAK,KAAA,CAAA,CACH,OAAOC,eACT,MAAK,CACH,CAAA,OAAOC,kBACT,CAAK,KAAA,CAAA,CACH,OAAOC,mBACT,CAAA,KAAK,CACH,CAAA,OAAOC,mBACT,CAAK,KAAA,CAAA,CACH,OAAOC,kBACT,CAAA,KAAK,EACH,OAAOC,gBACT,CACE,QAAA,OAAOF,mBACX,CACF,CAAA,CACA,MAAMmuU,eAAAA,CAAkB,WACtB,EAAA,CAAA,MAAMC,YAAe,CAAA,IAAI1uU,YAAYsb,WACrC,CAAA,CAAA,IAAI,IAAI34C,CAAI,CAAA,CAAA,CAAGA,EAAI24C,WAAa34C,CAAAA,CAAAA,EAAAA,CAAI,CAClC+rW,YAAY,CAAC/rW,CAAE,CAAA,CAAGA,EACpB,CACA,OAAO+rW,YACT,CAAA,CACA,MAAMhG,eAAAA,CAAkB,CAACiG,UAAYzhQ,CAAAA,OAAAA,GAAAA,CACnC,MAAM53E,CAAIq5U,CAAAA,UAAU,CAACluU,iBAAkB,CAAA,CACvC,GAAI,CAACnL,GAAKA,CAAEmnB,CAAAA,UAAU,GAAK,CAAA,CAAG,CAC5B,MACF,CACA,IAAImD,SAAAA,CACJ,GAAItqB,CAAEztB,CAAAA,IAAI,GAAKytB,CAAE4nB,CAAAA,MAAM,CAAE,CACvB,MAAM0xT,SAAYt5U,CAAAA,CAAAA,CAAE4nB,MAAM,CAAG5S,uBAAuB,CAAChV,CAAElb,CAAAA,IAAI,CAAC,CAC5D,MAAM7B,GAAM,CAAA,IAAI8xB,eAAe,CAAC/U,CAAAA,CAAElb,IAAI,CAAC,CAACkb,EAAEjY,MAAM,CAAEiY,CAAEjlB,CAAAA,MAAM,CAAEilB,CAAEqtB,CAAAA,KAAK,CAAGisT,SAAAA,CAAAA,CACtEhvT,UAAY,IAAIvV,eAAe,CAAC/U,CAAAA,CAAElb,IAAI,CAAC,CAACkb,EAAEqtB,KAAK,CAAG,GAClD,IAAI,IAAIhgD,CAAI,CAAA,CAAA,CAAGA,EAAI2yB,CAAEqtB,CAAAA,KAAK,CAAE,EAAEhgD,EAAE,CAC9Bi9C,SAAS,CAACj9C,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAG4V,GAAG,CAAC5V,CAAAA,CAAIisW,UAAY,CAAE,CAC7ChvT,CAAAA,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG4V,GAAG,CAAC5V,CAAAA,CAAIisW,SAAY,CAAA,CAAA,CAAE,CAC7ChvT,SAAS,CAACj9C,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG4V,GAAG,CAAC5V,CAAAA,CAAIisW,UAAY,CAAE,EAC/C,CACF,CAAO,KAAA,CACLhvT,UAAY,IAAIvV,eAAe,CAAC/U,CAAAA,CAAElb,IAAI,CAAC,CAACkb,EAAEjY,MAAM,CAAEiY,EAAEjlB,MAAM,CAAEilB,CAAEqtB,CAAAA,KAAK,CAAG,CACxE,EAAA,CACA,MAAMrH,WAAAA,CAAchmB,EAAEqtB,KAAK,CAC3B,GAAI,CAACuqD,QAAS,CACZA,OAAAA,CAAUuhQ,gBAAgBnzT,WAC5B,EAAA,CACA,MAAMuzT,WAAc1/J,CAAAA,gBAAAA,CAAiBvvJ,SAAWstD,CAAAA,OAAAA,CAAAA,CAChD,MAAMo/B,OAAU,CAAA,IAAI9vH,YAAaqyV,CAAAA,WAAAA,CAAYjsW,MAAM,CACnD0pI,CAAAA,OAAAA,CAAQphI,GAAG,CAAC2jW,YACZF,CAAAA,UAAU,CAACjuU,eAAgB,CAAA,CAAG,CAC5BrjB,MAAQivH,CAAAA,OAAAA,CAAQjvH,MAAM,CACtBxV,KAAM,EACNwI,CAAAA,MAAAA,CAAQ,CACR6sC,CAAAA,MAAAA,CAAQ,GACRyF,KAAOrH,CAAAA,WAAAA,CACPmB,UAAY,CAAA,CAAA,CACZriC,KAAMgrB,YACR,EACF,EACA,MAAM0pU,YAAAA,CAAe,OACnB,EAAA,CAAA,MAAMC,iBAAoB,CAACt6T,UACzB,MAAM/xC,MAAAA,CAAS,EAAE,CACjB,IAAI,IAAIoiE,GAAM,CAAA,CAAA,CAAGA,GAAMrwB,CAAAA,OAAAA,CAAQ7F,OAAO,CAAChsC,MAAM,CAAE,EAAEkiE,GAAAA,CAAI,CACnD,IAAI9xB,KAAAA,CAAQ,EAAE,CACd,GAAIyB,OAAQrG,CAAAA,OAAO,CAAE,CACnB,IAAI,IAAI6E,IAAAA,CAAO,CAAGA,CAAAA,IAAAA,CAAO,EAAG,EAAEA,IAAAA,CAAK,CACjCD,KAAMvvC,CAAAA,IAAI,CAACgxC,OAAQ7F,CAAAA,OAAO,CAACk2B,GAAAA,CAAI,CAAC7xB,IAAK,CAAA,EACvC,CACF,CAAA,KAAO,CACLD,KAAQyB,CAAAA,OAAAA,CAAQ7F,OAAO,CAACk2B,KAAI,CAE9BpiE,OAAOe,IAAI,CAACuvC,OACd,CACA,OAAOtwC,MACT,CAAA,CACA,MAAMA,MAAS,CAAA,IAAI4rC,OAAQmG,CAAAA,OAAAA,CAAQ7H,MAAM,CAAE6H,OAAAA,CAC3C/xC,CAAAA,MAAAA,CAAOksC,OAAO,CAAGmgU,iBAAAA,CAAkBt6T,SACnC,OAAO/xC,MACT,EACA,MAAMssW,iBAAAA,CAAoB,GAACz2V,EAAAA,CACzB,MAAM7V,MAAS,CAAA,IAAIg1O,MAAM,CAAC,EAAEn/N,IAAItS,IAAI,CAAC,MAAM,CAAC,CAAEsS,GAAI6B,CAAAA,IAAI,CAAE7B,GAAIo/N,CAAAA,IAAI,CAAEp/N,GAAIoE,CAAAA,IAAI,CAAEpE,GAAAA,CAAInE,OAAO,CACvF1R,CAAAA,MAAO2lH,CAAAA,MAAM,CAAG,IAChB3lH,CAAAA,MAAOwnD,CAAAA,QAAQ,CAAG4kT,YAAav2V,CAAAA,GAAAA,CAAI2xC,QAAQ,CAC3C3xC,CAAAA,GAAAA,CAAIq/N,QAAQ,CAAC3kO,GAAG,CAACvQ,MAAAA,CAAAA,CACjB,OAAOA,MACT,CAAA,CACA,MAAMusW,0BAAAA,CAA6B,CAACriU,MAAQ+hU,CAAAA,UAAAA,GAAAA,CAC1C,MAAMO,YAAAA,CAAeP,UAAU,CAACluU,iBAAAA,CAAkB,CAClD,GAAI,CAACyuU,aAAc,CACjB,OAAO,IACT,CACA,MAAM5zT,WAAc4zT,CAAAA,YAAAA,CAAavsT,KAAK,CACtC,MAAMqtF,UAAa,CAAA,EAAE,CACrB,IAAI,MAAMxzF,QAAYmyT,IAAAA,UAAAA,CAAW,CAC/B,GAAIA,UAAAA,CAAW3/V,cAAc,CAACwtC,QAAAA,CAAAA,CAAW,CACvC,MAAM8B,QAAU,CACd9B,QAAAA,CAAUA,SACVC,UAAYkyT,CAAAA,UAAU,CAACnyT,QAAS,CAAA,CAACC,UAAU,CAC3CriC,KAAMu0V,UAAU,CAACnyT,SAAS,CAACpiC,IAAI,CAC/BrX,SAAW,CAAA,CAAC,CAAC4rW,UAAU,CAACnyT,QAAS,CAAA,CAACz5C,SACpC,EACA,GAAI,CAACq5C,YAAaM,CAAAA,cAAc,CAAC9P,MAAQ0R,CAAAA,OAAAA,CAAAA,CAAU,CACjDA,OAAQ7B,CAAAA,UAAU,GACpB,CACAuzF,UAAAA,CAAWvsI,IAAI,CAAC66C,SAClB,CACF,CACA0xF,UAAWn9H,CAAAA,IAAI,CAAC,CAACwF,GAAAA,CAAKF,GACpB,GAAA,CAAA,OAAOswV,cAAc,CAACpwV,GAAAA,CAAImkC,QAAQ,CAAC,CAAGisT,cAAc,CAACtwV,GAAAA,CAAIqkC,QAAQ,CAAC,CAEpE,CAAA,CAAA,IAAI75C,CAAGumF,CAAAA,CAAAA,CAAG+6C,EACV,IAAI1wF,MAAAA,CAAQhyC,MAAQ4tW,CAAAA,YAAAA,CACpB,MAAMxvT,YAAe,CAAA,IAAIvD,aAAaxP,MAAQojG,CAAAA,UAAAA,CAAAA,CAC9C,IAAIo/N,sBAAyB,CAAA,IAAA,CAC7B,IAAIzsW,CAAAA,CAAI,EAAGA,CAAIg9C,CAAAA,YAAAA,CAAatD,QAAQ,CAACz5C,MAAM,CAAE,EAAED,CAAAA,CAAE,CAC/CpB,MAAAA,CAASo+C,aAAatD,QAAQ,CAAC15C,EAAE,CACjC4wC,MAAAA,CAASo7T,UAAU,CAACptW,MAAAA,CAAO0E,IAAI,CAAC,CAChCkpW,YAAe57T,CAAAA,MAAAA,CAAOljC,MAAM,CAAG6+V,aAAa7+V,MAAM,CAClD,GAAIkjC,MAAAA,CAAOl2B,MAAM,GAAK6xV,YAAAA,CAAa7xV,MAAM,EAAIk2B,MAAAA,CAAO2J,MAAM,GAAK37C,MAAAA,CAAO27C,MAAM,EAAI3J,OAAO1rC,IAAI,GAAKtG,MAAOsG,CAAAA,IAAI,EAAIsnW,YAAiB5tW,GAAAA,MAAAA,CAAO8O,MAAM,CAAE,CAC7I++V,sBAAyB,CAAA,KAAA,CACzB,KACF,CACF,CACA,MAAM5sT,YAAe,CAAA,IAAI1H,YAAalO,CAAAA,MAAAA,CAAQ+S,aAAcrE,WAC5D,CAAA,CAAA,MAAMyqP,UAAavjP,CAAAA,YAAAA,CAAazP,IAAI,EACpC,CAAA,MAAMs8T,WAAc,CAAA,IAAIvvU,YAAYimQ,UACpC,CAAA,CAAA,IAAIupE,YACJ,GAAIF,sBAAAA,CAAwB,CAC1BE,WAAc,CAAA,IAAIxvU,WAAYovU,CAAAA,YAAAA,CAAa7xV,MAAM,CAAE6xV,YAAAA,CAAa7+V,MAAM,CAAEirC,WAAAA,CAAckH,aAAa/5C,MAAM,CAACZ,IAAI,CAAG,GACjHwnW,WAAYnkW,CAAAA,GAAG,CAACokW,WAClB,EAAA,CAAA,KAAO,CACL,IAAIC,YAAAA,CAAcC,YAClB,CAAA,IAAI7sW,EAAI,CAAGA,CAAAA,CAAAA,CAAI6/C,YAAa/5C,CAAAA,MAAM,CAAC4zC,QAAQ,CAACz5C,MAAM,CAAE,EAAED,CAAE,CAAA,CACtDpB,OAASihD,YAAa/5C,CAAAA,MAAM,CAAC4zC,QAAQ,CAAC15C,CAAE,CAAA,CACxC4sW,aAAehuW,MAAO27C,CAAAA,MAAM,CAAG,CAAA,CAC/B3J,OAASo7T,UAAU,CAACptW,MAAO0E,CAAAA,IAAI,CAAC,CAChCupW,YAAAA,CAAej8T,OAAO2J,MAAM,CAAG,EAC/BoyT,WAAc,CAAA,IAAIxvU,WAAYyT,CAAAA,MAAAA,CAAOl2B,MAAM,CAAEk2B,MAAAA,CAAOljC,MAAM,CAAE,CAACkjC,MAAAA,CAAOoP,KAAK,CAAG,CAAA,EAAK6sT,YAAAA,CAAe,CAACj8T,MAAAA,CAAO1rC,IAAI,CAAG,CAAA,EAAK,CAAA,CAAA,CACpH,IAAI0Q,GAAM,CAAA,CAAA,CACV,IAAI6I,GAAM7f,CAAAA,MAAAA,CAAO8O,MAAM,CAAG,CAAA,CAC1B,MAAMo/V,IAAAA,CAAOvtW,KAAKmQ,KAAK,CAAC,CAACkhC,MAAAA,CAAO1rC,IAAI,CAAG,CAAA,EAAK,CAAA,CAAA,CAC5C,IAAIqhF,CAAI,CAAA,CAAA,CAAGA,CAAI5tC,CAAAA,WAAAA,CAAa,EAAE4tC,CAAE,CAAA,CAC9B,IAAI+6C,CAAAA,CAAI,EAAGA,CAAIwrO,CAAAA,IAAAA,CAAM,EAAExrO,CAAE,CAAA,CACvBorO,WAAW,CAACjuV,GAAAA,CAAM6iH,CAAE,CAAA,CAAGqrO,WAAW,CAAC/2V,GAAAA,CAAM0rH,CAAE,EAC7C,CACA1rH,GAAOi3V,EAAAA,YAAAA,CACPpuV,GAAOmuV,EAAAA,aACT,CACF,CACF,CACA/sT,aAAazO,MAAM,EAAA,CACnB,OAAOyO,YACT,CAAA,CACA,MAAMktT,kBAAAA,CAAqB,CAAC9iU,MAAQqhB,CAAAA,UAAAA,CAAYi/C,OAASiE,CAAAA,SAAAA,CAAWu8P,YAAaiC,gBAC/E,GAAA,CAAA,MAAMC,aAAgB,CAAA,GACtB,MAAMC,SAAAA,CAAY,EAAE,CACpB,IAAI,MAAMC,MAAU7hT,IAAAA,UAAAA,CAAW,CAC7B,GAAIA,WAAWj/C,cAAc,CAAC8gW,SAAW5C,uBAAwBl+V,CAAAA,cAAc,CAAC8gW,MAAS,CAAA,CAAA,CACvFF,aAAa,CAACE,OAAO,CAAG7hT,UAAU,CAAC6hT,MAAO,CAAA,CAC1CD,UAAUpsW,IAAI,CAAC,CAAC,EAAEqsW,OAAO,CAAC,EAAE7hT,UAAU,CAAC6hT,OAAO,CAAC,CAAC,EAClD,CACF,CACAD,SAAUh9V,CAAAA,IAAI,GACd,MAAMk9V,KAAAA,CAAQF,UAAUrtW,IAAI,EAAA,CAC5B,IAAIy4C,EAAAA,CAAK00T,gBAAgB,CAACI,KAAAA,CAAM,CAChC,GAAI,CAAC90T,EAAI,CAAA,CACP,MAAM0zT,UAAAA,CAAa,EACnB,CAAA,IAAI,MAAMmB,MAAUF,IAAAA,aAAAA,CAAc,CAChC,MAAMv+P,QAAAA,CAAWF,SAAS,CAACljD,UAAU,CAAC6hT,MAAAA,CAAO,CAAC,CAC9C,MAAME,YAAexC,CAAAA,eAAAA,CAAgBn8P,QAAUq8P,CAAAA,WAAAA,CAAAA,CAC/C,MAAMK,UAAaL,CAAAA,WAAW,CAACr8P,QAAS08P,CAAAA,UAAU,CAAC,CACnD,MAAMvxT,QAAW0wT,CAAAA,uBAAuB,CAAC4C,MAAO,CAAA,CAChD,MAAMjoW,IAAOglW,CAAAA,gBAAAA,CAAiBx7P,SAASj3F,IAAI,CAAA,CAAI4yV,uBAAwB37P,CAAAA,QAAAA,CAASzyC,aAAa,CAC7F,CAAA,MAAM1hB,OAAS6wT,UAAcA,EAAAA,UAAAA,CAAW/+V,cAAc,CAAC,YAAA,CAAA,CAAgB++V,UAAWG,CAAAA,UAAU,CAAGrmW,IAC/F8mW,CAAAA,UAAU,CAACnyT,SAAS,CAAG,CACrBn/B,MAAQ2yV,CAAAA,YAAAA,CAAa3yV,MAAM,CAC3BxV,IAAAA,CAAMA,KACNwI,MAAQ2/V,CAAAA,YAAAA,CAAarjT,UAAU,CAC/BzP,MAAAA,CAAQA,MACRyF,CAAAA,KAAAA,CAAO0uD,SAAS1uD,KAAK,CACrBlG,UAAYowT,CAAAA,gBAAAA,CAAiBx7P,SAASj3F,IAAI,CAAA,CAC1CA,IAAM2yV,CAAAA,kBAAAA,CAAmB17P,SAASzyC,aAAa,CAAA,CAC/C77D,UAAWsuG,QAAS+8P,CAAAA,UAAU,EAElC,CACA,GAAI,CAACO,WAAW3/V,cAAc,CAAC0xB,eAAkB,CAAA,CAAA,CAC/CgoU,gBAAgBiG,UAAYzhQ,CAAAA,OAAAA,EAC9B,CACAjyD,EAAAA,CAAKg0T,2BAA2BriU,MAAQ+hU,CAAAA,UAAAA,CACxCgB,CAAAA,gBAAgB,CAACI,MAAM,CAAG90T,GAC5B,CACA,OAAOA,EACT,CACA,CAAA,MAAMg1T,WAAa,CAACrjU,MAAAA,CAAQsjU,SAAU/+P,SAAWu8P,CAAAA,WAAAA,CAAa7iO,KAAOslO,CAAAA,QAAAA,GAAAA,CACnE,IAAIxtW,CAAGumF,CAAAA,CAAAA,CAAGknR,WACV,MAAMC,MAAAA,CAASH,SAASG,MAAM,CAC9B,MAAMC,SAAAA,CAAYD,OAAOztW,MAAM,CAC/B,MAAMu9M,GAAAA,CAAM,EAAE,CACd,GAAI+vJ,QAASlhW,CAAAA,cAAc,CAAC,qBAAwB,CAAA,CAAA,CAClD,MAAMuhW,mBAAsBL,CAAAA,QAAAA,CAASK,mBAAmB,CACxD,MAAMC,OAAUhD,CAAAA,eAAAA,CAAgBr8P,SAAS,CAACo/P,mBAAAA,CAAoB,CAAE7C,WAAAA,CAAa,MAC7E,MAAM+C,SAAAA,CAAY,EAAE,CACpB,IAAI9tW,CAAI,CAAA,CAAA,CAAGA,EAAI2tW,SAAW3tW,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,IAAIumF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,GAAIA,CAAI,EAAA,CAAA,CACrBunR,SAAS,CAACvnR,EAAE,CAAGsnR,OAAO,CAAC7tW,CAAAA,CAAI,GAAKumF,CAAE,EACpC,CACAknR,UAAa,CAAA,IAAIlrV,KACjBkrV,UAAWllW,CAAAA,GAAG,CAACulW,SAAAA,CAAAA,CACftwJ,IAAI18M,IAAI,CAAC2sW,YACX,CACF,CAAA,KAAO,CACL,IAAIztW,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI2tW,UAAW3tW,CAAI,EAAA,CAAA,CAC5BytW,WAAa,IAAIlrV,IAAAA,CACjBi7L,IAAI18M,IAAI,CAAC2sW,UACX,EAAA,CACF,CACA,MAAM1mO,SAAAA,CAAY,EAAE,CACpB,IAAI/mI,CAAI,CAAA,CAAA,CAAGA,CAAI2tW,CAAAA,SAAAA,CAAW3tW,IAAI,CAC5B+mI,SAAS,CAAC/mI,CAAE,CAAA,CAAGkoI,KAAK,CAACwlO,MAAM,CAAC1tW,CAAAA,CAAE,CAAC,CAACsD,KAAI,CAEtC,MAAMuE,GAAMk/H,CAAAA,SAAAA,CAAUlnI,IAAI,CAAC,KAC3B,IAAIgnI,IAAAA,CAAO2mO,SAASzrW,GAAG,CAAC8F,KACxB,GAAI,CAACg/H,IAAM,CAAA,CACTA,KAAO,IAAI02E,IAAAA,CAAKtzK,MAAQuzK,CAAAA,GAAAA,CAAKz2E,WAC7BymO,QAASjlW,CAAAA,GAAG,CAACV,GAAAA,CAAKg/H,MACpB,CACA,OAAOA,IACT,CACA,CAAA,MAAMknO,gBAAkB,CAAC9jU,MAAAA,CAAQqW,SAAWkuD,CAAAA,SAAAA,CAAWu8P,YAAaiD,YAAcC,CAAAA,oBAAAA,CAAsBC,YACtG,MAAMnuW,MAAAA,CAAS,IAAIwpI,IAAKt/F,CAAAA,MAAAA,CACxBlqC,CAAAA,MAAAA,CAAO+uB,IAAI,CAAG68U,sBAAAA,CAAuBn9P,SAAS,CAACluD,SAAAA,CAAUgL,UAAU,CAAC6iT,QAAQ,CAAC,CAAA,CAC7E,MAAM9gO,UAAa,CAAA,EAAE,CACrB,IAAK,KAAM,CAAC/pI,IAAAA,CAAMuC,KAAM,CAAA,GAAIhE,OAAOqlD,OAAO,CAAC5G,UAAUgL,UAAU,CAAA,CAAE,CAC/D,MAAMojD,QAAAA,CAAWF,SAAS,CAAC3oG,MAAM,CACjC,MAAMg0C,QAAW0wT,CAAAA,uBAAuB,CAACjnW,IAAK,CAAA,CAC9C,MAAM24D,aAAAA,CAAgBmuS,mBAAmB17P,QAASzyC,CAAAA,aAAa,EAC/DoxE,UAAWvsI,CAAAA,IAAI,CAAC,CACd+4C,QAAAA,CAAUA,QACVC,CAAAA,UAAAA,CAAYowT,iBAAiBx7P,QAASj3F,CAAAA,IAAI,CAC1CA,CAAAA,IAAAA,CAAMwkD,cACN77D,SAAWsuG,CAAAA,QAAAA,CAAS+8P,UAAU,GAAK5xT,QAAa1b,GAAAA,cAAAA,GAAmB89B,aAAkB75B,GAAAA,UAAAA,EAAc65B,gBAAkB35B,WAAU,CAAC,CAClI,CAAA,EACF,CACA4rU,QAASptW,CAAAA,IAAI,CAAC,IAAIm4E,OAAAA,CAAQ,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAClC,MAAMwuR,QAAAA,CAAW9tT,UAAU+tT,UAAU,CAACC,0BAA0B,CAChExE,WAAAA,CAAYiB,WAAW,CAACqD,QAAAA,CAAShD,UAAU,CAAC,CAACvqW,KAAK,EAAA,CAAG6Z,MAAM,CAAE,CAAC7O,GAAK0iW,CAAAA,gBAAAA,GAAAA,CACjE,GAAI1iW,GAAAA,CAAK,CACPY,OAAQ88F,CAAAA,GAAG,CAAC19F,GACZ+zE,CAAAA,CAAAA,MAAAA,CAAO/zE,KACT,CAAO,KAAA,CACL,MAAMg4K,KAAAA,CAAQ,EACd,CAAA,IAAK,KAAM,CAACvgL,KAAMuC,KAAM,CAAA,GAAIhE,MAAOqlD,CAAAA,OAAO,CAACknT,QAAS9iT,CAAAA,UAAU,EAAE,CAC9Du4H,KAAK,CAAC0mL,uBAAuB,CAACjnW,IAAK,CAAA,CAAC,CAAGirW,gBAAiBjjT,CAAAA,UAAU,CAACriD,OAAO,CAACpD,KAC7E,EAAA,CACAwnI,UAAWn9H,CAAAA,IAAI,CAAC,CAACN,CAAAA,CAAGC,KAClB,OAAOg0K,KAAK,CAACj0K,CAAEiqC,CAAAA,QAAQ,CAAC,CAAGgqI,KAAK,CAACh0K,CAAAA,CAAEgqC,QAAQ,CAC7C,GACA,GAAI,CAACyG,SAAUgL,CAAAA,UAAU,EAAEkjT,MAAQ,CAAA,CACjCnhO,WAAWvkI,MAAM,CAAC,EAAG,CAAG,CAAA,CACtB+wC,QAAU,CAAA,QAAA,CACVC,WAAY,CACZriC,CAAAA,IAAAA,CAAMgrB,YACR,CAAA,EACF,CACA,MAAMua,YAAAA,CAAe,IAAIvD,YAAAA,CAAaxP,OAAQojG,UAC9C,CAAA,CAAA,MAAM10F,YAAc41T,gBAAiB3+U,CAAAA,QAAQ,CAACniB,UAAU,CAAGuvC,YAAa93C,CAAAA,IAAI,CAC5E,MAAMyuI,WAAAA,CAAch7F,WAAe,EAAA,KAAA,CAAQ3gB,mBAAqBC,kBAChE,CAAA,MAAMoyE,UAAakkQ,CAAAA,gBAAAA,CAAiBhkQ,OAAO,CAAC98F,UAAU,EAAIkrC,WAAAA,EAAe,MAAQ,CAAI,CAAA,CAAA,CACrF,CAAA,MAAMkH,aAAe,IAAI1H,YAAAA,CAAalO,MAAQ+S,CAAAA,YAAAA,CAAcrE,YAAa,CACvE3+B,IAAAA,CAAMu0V,gBAAiB3+U,CAAAA,QAAQ,CAEjC,CAAA,CAAA,MAAM2wB,YAAc,IAAI4pD,WAAAA,CAAYlgE,OAAQ0pG,WAAatpC,CAAAA,UAAAA,CAAYr0E,aAAeu4U,CAAAA,gBAAAA,CAAiBhkQ,OAAO,CAC5GxqG,CAAAA,OAAO8/C,YAAY,CAAGA,YACtB9/C,CAAAA,MAAAA,CAAOwgD,WAAW,CAAC,EAAE,CAAGA,WACxBxgD,CAAAA,MAAOugD,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAC7oC,IAAI,CAAGo0V,iBAAiBvrT,SAC5CvgD,CAAAA,CAAAA,MAAOugD,CAAAA,SAAS,CAAC,CAAE,CAAA,CAACwwB,IAAI,CAAG,CAC3B/wE,CAAAA,MAAAA,CAAOugD,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAGO,WAAc8pD,CAAAA,UAAAA,CAAa1xD,WACvD54C,CAAAA,MAAAA,CAAOugD,SAAS,CAAC,EAAE,CAAC0wB,OAAO,CAAG,CAAC,CAACzwB,WAChClW,CAAAA,OAAAA,GACF,CACF,CACF,EAAA,CAAA,CAAA,CAAA,CACA,GAAIiW,SAAW+tT,EAAAA,UAAAA,EAAYI,sBAAwB,CAAA,CACjD,MAAMv9N,QAAW5wF,CAAAA,SAAAA,CAAU+tT,UAAU,CAACI,sBAAsB,CAC5D,MAAMC,WAAc,CAAA,GACpBx9N,QAASy9N,CAAAA,QAAQ,CAAChiW,OAAO,CAAC,OACxB8yG,EAAAA,CAAAA,OAAAA,CAAQyxB,QAAQ,CAACvkI,OAAO,CAAE02H,UACxBqrO,WAAW,CAACrrO,QAAQ,CAAG5jB,OAAAA,CAAQojB,SACjC,GACF,CACAmrO,CAAAA,CAAAA,YAAY,CAACjuW,MAAAA,CAAOiqC,EAAE,CAAC,CAAG0kU,YAC5B,CACAT,oBAAoB,CAACluW,MAAAA,CAAOiqC,EAAE,CAAC,CAAGsW,SAAUuiF,CAAAA,QAAQ,CACpD,OAAO9iI,MACT,CACA,CAAA,MAAM6uW,aAAe,CAAC3kU,MAAAA,CAAQ4kU,SAAUrgQ,SAAWu8P,CAAAA,WAAAA,CAAaiC,gBAAkBgB,CAAAA,YAAAA,CAAcC,qBAAsBa,YAAcZ,CAAAA,QAAAA,GAAAA,CAClI,MAAMzvJ,MAAAA,CAAS,EAAE,CACjBowJ,QAAAA,CAASE,UAAU,CAACpiW,OAAO,CAAE2zC,YAC3B,GAAIA,SAAAA,CAAU+tT,UAAU,EAAEC,0BAAAA,CAA4B,CACpD7vJ,MAAAA,CAAO39M,IAAI,CAACitW,eAAAA,CAAgB9jU,MAAQqW,CAAAA,SAAAA,CAAWkuD,UAAWu8P,WAAaiD,CAAAA,YAAAA,CAAcC,oBAAsBC,CAAAA,QAAAA,CAAAA,EAC7G,MAAO,CACL,IAAI3jQ,QAAUjqD,SAAUj0C,CAAAA,cAAc,CAAC,SAAaw+V,CAAAA,CAAAA,eAAAA,CAAgBr8P,SAAS,CAACluD,UAAUiqD,OAAO,CAAC,CAAEwgQ,WAAa,CAAA,IAAA,CAAA,CAAQ,KACvH,MAAMlrT,YAAAA,CAAektT,kBAAmB9iU,CAAAA,MAAAA,CAAQqW,UAAUgL,UAAU,CAAEi/C,QAASiE,SAAWu8P,CAAAA,WAAAA,CAAaiC,kBACvG,MAAMrgT,aAAAA,CAAgBk/S,gBAAiBvrT,CAAAA,SAAAA,CAAAA,CACvC,MAAMopF,IAAO,CAAA,IAAIH,IAAKt/F,CAAAA,MAAAA,CACtBy/F,CAAAA,IAAK7pF,CAAAA,YAAY,CAAGA,YACpB6pF,CAAAA,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAC7oC,IAAI,CAAGk1C,aACzB+8E,CAAAA,IAAAA,CAAKppF,SAAS,CAAC,CAAA,CAAE,CAACwwB,IAAI,CAAG,CACzB44D,CAAAA,IAAKppF,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAC0wB,OAAO,CAAGu5B,OAAAA,GAAY,KACxC,GAAIA,OAAAA,GAAY,IAAM,CAAA,CACpB,IAAIopC,WACJ,CAAA,GAAIppC,OAAmBx9F,YAAAA,UAAAA,CAAY,CACjC4mI,WAAc57G,CAAAA,kBAChB,CAAO,KAAA,GAAIwyE,mBAAmBltE,WAAa,CAAA,CACzCs2G,YAAc37G,mBAChB,CAAA,KAAO,CACL27G,WAAc17G,CAAAA,mBAChB,CACA,GAAI07G,cAAgB57G,iBAAqBkS,EAAAA,MAAAA,CAAO2E,QAAQ,CAAE,CACxD+kG,YAAc37G,kBACduyE,CAAAA,OAAAA,CAAU,IAAIltE,WAAAA,CAAYktE,SAC5B,CACA,MAAMhqD,YAAc,IAAI4pD,WAAAA,CAAYlgE,OAAQ0pG,WAAappC,CAAAA,OAAAA,CAAQtqG,MAAM,CAAE+1B,cAAeu0E,OACxFm/B,CAAAA,CAAAA,IAAKnpF,CAAAA,WAAW,CAAC,CAAE,CAAA,CAAGA,WACtBmpF,CAAAA,KAAKppF,SAAS,CAAC,EAAE,CAACN,KAAK,CAAGuqD,OAAQtqG,CAAAA,OAAM,CAC1C,KAAO,CACLypI,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAGH,YAAalH,CAAAA,YAAW,CAEpD,GAAI2H,UAAUj0C,cAAc,CAAC,eAAiBi0C,SAAU+tT,CAAAA,UAAU,CAAChiW,cAAc,CAAC,wBAA2B,CAAA,CAAA,CAC3G,MAAM6kI,QAAAA,CAAW5wF,UAAU+tT,UAAU,CAACI,sBAAsB,CAC5D,MAAMC,WAAc,CAAA,GACpBx9N,QAASy9N,CAAAA,QAAQ,CAAChiW,OAAO,CAAC,OAAC8yG,EAAAA,CACzBA,QAAQyxB,QAAQ,CAACvkI,OAAO,CAAE02H,UACxBqrO,WAAW,CAACrrO,OAAQ,CAAA,CAAG5jB,QAAQojB,SACjC,GACF,CACAmrO,CAAAA,CAAAA,YAAY,CAACtkO,IAAAA,CAAK1/F,EAAE,CAAC,CAAG0kU,YAC1B,CACAT,oBAAoB,CAACvkO,KAAK1/F,EAAE,CAAC,CAAGsW,SAAAA,CAAUuiF,QAAQ,CAClD,IAAIn0B,SAAWF,SAAS,CAACluD,UAAUgL,UAAU,CAAC6iT,QAAQ,CAAC,CACvDzkO,IAAAA,CAAK56G,IAAI,CAAG68U,uBAAuBj9P,QACnC,CAAA,CAAA,GAAIpuD,SAAUj0C,CAAAA,cAAc,CAAC,SAAY,CAAA,CAAA,CACvC,MAAM6xC,OAAU,CAAA,EAAE,CAClBoC,SAAUpC,CAAAA,OAAO,CAACvxC,OAAO,CAAC,CAAC/N,MAAAA,CAAQiH,KACjC,GAAA,CAAA,MAAM4L,QAAU,EAAC,CACjB,GAAI7S,MAAAA,CAAOyN,cAAc,CAAC,UAAA,CAAA,CAAa,CACrCqiG,QAAWF,CAAAA,SAAS,CAAC5vG,MAAOuvW,CAAAA,QAAQ,CACpC18V,CAAAA,OAAQq6H,CAAAA,cAAc,CAAG0/N,sBAAuB98P,CAAAA,QAAAA,CAAUq8P,YAC1Dt5V,CAAAA,OAAAA,CAAQqd,IAAI,CAAG68U,uBAAuBj9P,QACxC,EAAA,CACA,GAAI9vG,MAAOyN,CAAAA,cAAc,CAAC,QAAW,CAAA,CAAA,CACnCqiG,QAAWF,CAAAA,SAAS,CAAC5vG,MAAO4vW,CAAAA,MAAM,CAClC/8V,CAAAA,OAAQq+K,CAAAA,YAAY,CAAG07K,sBAAAA,CAAuB98P,SAAUq8P,WAC1D,EAAA,CACA,GAAI8D,QAASxiW,CAAAA,cAAc,CAAC,QAAawiW,CAAAA,EAAAA,QAAAA,CAASG,MAAM,CAAC3iW,cAAc,CAAC,aAAA,CAAA,CAAgB,CACtFoF,OAAAA,CAAQnO,IAAI,CAAGurW,QAAAA,CAASG,MAAM,CAACC,WAAW,CAACppW,KAAAA,EAAM,CAC5C,KAAA,CACL4L,QAAQnO,IAAI,CAAGuC,KAAMnG,CAAAA,QAAQ,CAAC,EAChC,EAAA,CACA,GAAImvW,QAAAA,CAASxiW,cAAc,CAAC,SAAA,CAAA,CAAY,CACtCoF,OAAAA,CAAQo7K,aAAa,CAAGgiL,QAAAA,CAASliL,OAAO,CAAC9mL,KAAAA,EAAM,CAEjD4L,OAAAA,CAAQm/K,YAAY,CAAGk+K,aAAaI,iBAAiB,CACrDhxT,QAAQp9C,IAAI,CAAC,IAAI4vL,WAAYj/K,CAAAA,OAAAA,CAAAA,EAC/B,CACAi4H,CAAAA,CAAAA,KAAKc,KAAK,CAAG,IAAIwkD,KAAM9wI,CAAAA,OAAAA,CAASjU,OAAQ,CACtCsmJ,mBAAAA,CAAqBu+K,YAAaK,CAAAA,wBAAwB,CAE9D,EAAA,CACA1wJ,MAAO39M,CAAAA,IAAI,CAAC4oI,IACd,EAAA,CACF,CACA,CAAA,CAAA,OAAO+0E,MACT,CACA,CAAA,MAAM2wJ,wBAA0B,CAACx+T,MAAAA,CAAQiyF,SAAUhB,IACjD,GAAA,CAAA,IAAIh7H,GACJ,CAAA,MAAMwoW,SAAWz+T,MAAOy+T,CAAAA,QAAQ,CAChC,GAAIA,SAAU,CACZ,IAAIxoW,GAAM,CAAA,CAAA,CAAGA,IAAMg7H,IAAK5hI,CAAAA,MAAM,CAAE,EAAE4G,GAAAA,CAAI,CACpCg8H,QAAQ,CAAC,CAAC,EAAEhB,IAAI,CAACh7H,GAAAA,CAAI,CAAC,KAAK,CAAC,CAAC,CAAGwoW,SAClC,CACF,CACA,MAAMC,KAAAA,CAAQ,CACZ,CACA,CAAA,CAAA,CACD,CACD,MAAMC,IAAAA,CAAO,CACX,CAAA,CACA,EACD,CACD,MAAMC,iBAAmB5+T,MAAOy9T,CAAAA,UAAU,EAAEoB,qBAC5C,CAAA,GAAID,gBAAkB,CAAA,CACpB,MAAM9hW,MAAS8hW,CAAAA,gBAAAA,CAAiB9hW,MAAM,EAAI4hW,KAAAA,CAC1C,MAAMhtV,KAAQktV,CAAAA,gBAAAA,CAAiBltV,KAAK,EAAIitV,KACxC,MAAM5oN,QAAAA,CAAW6oN,gBAAiB7oN,CAAAA,QAAQ,CAAG,CAAC6oN,gBAAAA,CAAiB7oN,QAAQ,CAAGtzI,KAAKG,UAAU,CAAG,EAC5F,MAAMk8V,SAAAA,CAAY,IAAI7tV,IAAKS,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,CAAA,CAC7C,MAAMqtV,SAAY,CAAA,IAAI9tV,IAAKnU,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAE,EAAM4U,KAAK,CAAC,EAAE,CAAG5U,MAAM,CAAC,CAAA,CAAE,EAChE,IAAI7G,GAAAA,CAAM,CAAGA,CAAAA,GAAAA,CAAMg7H,KAAK5hI,MAAM,CAAE,EAAE4G,GAAAA,CAAI,CACpCg8H,QAAQ,CAAC,CAAC,EAAEhB,IAAI,CAACh7H,GAAI,CAAA,CAAC,SAAS,CAAC,CAAC,CAAG6oW,SACpC7sO,CAAAA,QAAQ,CAAC,CAAC,EAAEhB,IAAI,CAACh7H,GAAAA,CAAI,CAAC,SAAS,CAAC,CAAC,CAAG8oW,SACpC9sO,CAAAA,QAAQ,CAAC,CAAC,EAAEhB,IAAI,CAACh7H,GAAAA,CAAI,CAAC,WAAW,CAAC,CAAC,CAAG8/I,SACxC,CACF,CACF,CACA,CAAA,MAAMipN,2BAA6B,CAAC51V,IAAAA,CAAM6oH,SAAUj3F,QAClD,GAAA,CAAA,IAAIqY,KAAOnS,CAAAA,OAAAA,CACX,GAAI93B,IAAK3N,CAAAA,cAAc,CAAC,eAAA,CAAA,CAAkB,CACxC43C,KAAQjqC,CAAAA,IAAAA,CAAK61V,aAAa,CAC1BhtO,SAAS8yF,OAAO,CAACptN,GAAG,CAAChJ,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAI,CAAA,GAAA,CAAA,CAAM1kD,IAAKkV,CAAAA,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,EAAI,GAAM1kD,CAAAA,CAAAA,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,CAAI,CAAA,GAAA,CAAA,CACtG4+E,CAAAA,QAAS4zF,CAAAA,OAAO,CAAGxyK,KAAK,CAAC,GAAE,CAC7B,KAAO,CACL4+E,QAAAA,CAAS8yF,OAAO,CAACptN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,EAC3Bs6H,CAAAA,QAAAA,CAAS4zF,OAAO,CAAG,EACrB,CACA,GAAIz8M,IAAK3N,CAAAA,cAAc,CAAC,gBAAmB,CAAA,CAAA,CACzC,MAAMyjW,cAAAA,CAAiB91V,KAAK81V,cAAc,CAC1Ch+T,QAAUlG,QAAQ,CAACkkU,eAAejqW,KAAK,CAAC,CACxCg9H,SAASgvF,UAAU,CAAG//K,OACtB+wF,CAAAA,SAASktO,iBAAiB,CAAG,KAC7BltO,CAAAA,SAASopC,UAAU,CAAGn6H,OACtB+wF,CAAAA,QAAAA,CAAS6+K,iBAAiB,CAAG,GAAA,CAC7B0tD,uBAAwBU,CAAAA,cAAAA,CAAgBjtO,SAAU,CAChD,SAAA,CACA,SACD,CAAA,EACH,CACAA,QAASsiF,CAAAA,YAAY,CAAG,KAAA,CACxB,GAAInrM,IAAK3N,CAAAA,cAAc,CAAC,gBAAmB,CAAA,CAAA,CACzC43C,MAAQjqC,IAAKg2V,CAAAA,cAAc,CAC3BntO,QAAAA,CAASiwF,QAAQ,CAACvqN,GAAG,CAAChJ,IAAKkV,CAAAA,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,EAAI,GAAM1kD,CAAAA,CAAAA,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,CAAI,CAAA,GAAA,CAAA,CAAM1kD,KAAKkV,GAAG,CAACwvC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAI,GACzG,CAAA,EAAA,CAAA,KAAO,CACL4+E,QAASiwF,CAAAA,QAAQ,CAACvqN,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,EAC9B,CACA,GAAIyR,KAAK3N,cAAc,CAAC,kBAAqB,CAAA,CAAA,CAC3Cw2H,SAASkzF,KAAK,CAAG/7M,IAAKi2V,CAAAA,iBAAgB,CACjC,KAAA,CACLptO,SAASkzF,KAAK,CAAG,EACnB,CACA,GAAI/7M,IAAK3N,CAAAA,cAAc,CAAC,2BAA8B,CAAA,CAAA,CACpD,MAAM6jW,yBAAAA,CAA4Bl2V,KAAKk2V,yBACvCrtO,CAAAA,QAAAA,CAAS8vF,WAAW,CAAG9vF,QAAAA,CAASstO,QAAQ,CAAGvkU,QAAQ,CAACskU,yBAA0BrqW,CAAAA,KAAK,CACnFg9H,CAAAA,QAASutO,CAAAA,kBAAkB,CAAG,KAC9BvtO,CAAAA,SAASwtO,eAAe,CAAG,GAC3BjB,CAAAA,uBAAAA,CAAwBc,0BAA2BrtO,QAAU,CAAA,CAC3D,QACA,WACD,CAAA,EACH,CACF,CACA,CAAA,MAAMytO,kBAAqB,CAAA,CAACt2V,KAAM6oH,QAAUj3F,CAAAA,QAAAA,GAAAA,CAC1C,GAAI5xB,IAAAA,CAAK3N,cAAc,CAAC,iBAAA,CAAA,CAAoB,CAC1Cw2H,QAAAA,CAASmwF,SAAS,CAAGh5M,IAAAA,CAAKu2V,eAAe,CAAG,IAC9C,MAAO,CACL1tO,QAAAA,CAASmwF,SAAS,CAAG,EACvB,CACA,GAAIh5M,IAAK3N,CAAAA,cAAc,CAAC,kBAAqB,CAAA,CAAA,CAC3C,MAAMmkW,gBAAAA,CAAmBx2V,KAAKw2V,gBAC9B3tO,CAAAA,QAAS4tO,CAAAA,YAAY,CAAG7kU,QAAQ,CAAC4kU,gBAAiB3qW,CAAAA,KAAK,CAAC,CACxDg9H,QAAS6tO,CAAAA,mBAAmB,CAAG,GAC/BtB,CAAAA,uBAAAA,CAAwBoB,gBAAkB3tO,CAAAA,QAAAA,CAAU,CAClD,WACD,CAAA,EACH,CACA,GAAI7oH,IAAAA,CAAK3N,cAAc,CAAC,0BAAA,CAAA,CAA6B,CACnDw2H,QAAAA,CAAS2xF,cAAc,CAAGx6M,IAAAA,CAAK22V,yBAAwB,CACzD,KAAO,CACL9tO,QAAS2xF,CAAAA,cAAc,CAAG,EAC5B,CACA,GAAIx6M,IAAAA,CAAK3N,cAAc,CAAC,2BAAA,CAAA,CAA8B,CACpD,MAAMukW,yBAAAA,CAA4B52V,IAAK42V,CAAAA,yBAAyB,CAChE/tO,QAAAA,CAASguO,iBAAiB,CAAGjlU,QAAQ,CAACglU,yBAAAA,CAA0B/qW,KAAK,CAAC,CACtEg9H,QAAAA,CAASiuO,wBAAwB,CAAG,GAAA,CACpC1B,wBAAwBwB,yBAA2B/tO,CAAAA,QAAAA,CAAU,CAC3D,gBAAA,CACD,EACH,CACA,GAAI7oH,IAAK3N,CAAAA,cAAc,CAAC,wBAA2B,CAAA,CAAA,CACjD,MAAM0kW,sBAAAA,CAAyB/2V,KAAK+2V,sBACpCluO,CAAAA,QAASstF,CAAAA,kBAAkB,CAAGvkL,QAAQ,CAACmlU,sBAAuBlrW,CAAAA,KAAK,CAAC,CACpEupW,uBAAAA,CAAwB2B,sBAAwBluO,CAAAA,QAAAA,CAAU,CACxD,iBACD,CAAA,CAAA,CACD,GAAIkuO,sBAAAA,CAAuB1kW,cAAc,CAAC,OAAA,CAAA,CAAU,CAClDw2H,QAASmzF,CAAAA,kBAAkB,CAAG+6I,sBAAuBzuV,CAAAA,MAAK,CAC5D,KAAO,CACLugH,QAASmzF,CAAAA,kBAAkB,CAAG,EAChC,CACF,CACAnzF,QAASgqF,CAAAA,oBAAoB,CAAG,KAClC,EACA,MAAMmkJ,cAAAA,CAAiB,CAACh3V,IAAM6oH,CAAAA,QAAAA,CAAUj3F,YACtCi3F,QAASstC,CAAAA,WAAW,CAAG,KAAA,CACvBttC,SAASszF,QAAQ,CAACp3N,IAAI,CAAC8jI,SAAS8yF,OAAO,CACvC9yF,CAAAA,QAAAA,CAAS4wF,WAAW,CAAG5wF,QAAAA,CAASgvF,UAAU,CAC1ChvF,SAASouO,aAAa,CAAGpuO,QAASquO,CAAAA,YAAY,CAC9CruO,QAASsuO,CAAAA,iBAAiB,CAACpyW,IAAI,CAAC8jI,QAASuuO,CAAAA,gBAAgB,CACzDvuO,CAAAA,QAAAA,CAASwuO,iBAAiB,CAACtyW,IAAI,CAAC8jI,QAASyuO,CAAAA,gBAAgB,CACzDzuO,CAAAA,QAAAA,CAAS0uO,mBAAmB,CAAG1uO,SAAS2uO,kBACxC3uO,CAAAA,QAAAA,CAAS4uO,kBAAkB,CAAG5uO,QAAAA,CAASktO,iBACvCltO,CAAAA,QAAS8+K,CAAAA,mBAAmB,CAAG9+K,QAAS6uO,CAAAA,kBAAkB,CAC1D7uO,QAAAA,CAAS8uO,0BAA0B,CAAG9uO,SAAS+uO,yBAC/C/uO,CAAAA,QAASstC,CAAAA,WAAW,CAAG,KACvBttC,CAAAA,QAASglF,CAAAA,SAAS,CAAG,KACrBhlF,CAAAA,QAAAA,CAAS8yF,OAAO,CAACptN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAC3Bs6H,CAAAA,CAAAA,SAASgvF,UAAU,CAAG,IACtBhvF,CAAAA,SAAS6uO,kBAAkB,CAAG,MAChC,CAAA,CACA,MAAMG,iBAAoB,CAAA,CAAC73V,KAAM6oH,QAAUj3F,CAAAA,QAAAA,GAAAA,CACzCi3F,SAASowF,yBAAyB,CAAG,IACrC,CAAA,GAAIj5M,KAAK3N,cAAc,CAAC,sBAAyB,CAAA,CAAA,CAC/Cw2H,SAAS8vF,WAAW,CAAG/mL,QAAQ,CAAC5xB,KAAK83V,oBAAoB,CAACjsW,KAAK,CAC/Dg9H,CAAAA,QAASutO,CAAAA,kBAAkB,CAAG,KAAA,CAC9BhB,wBAAwBp1V,IAAK83V,CAAAA,oBAAoB,CAAEjvO,QAAAA,CAAU,CAC3D,UACD,CAAA,EACH,CACA,GAAI7oH,KAAK3N,cAAc,CAAC,uBAAwB,CAC9C,MAAM43C,MAAQjqC,IAAK+3V,CAAAA,mBAAmB,CACtClvO,QAAAA,CAASiwF,QAAQ,CAACvqN,GAAG,CAAChJ,IAAKkV,CAAAA,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,EAAI,GAAM1kD,CAAAA,CAAAA,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,CAAI,CAAA,GAAA,CAAA,CAAM1kD,KAAKkV,GAAG,CAACwvC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAI,GACzG,CAAA,EAAA,CAAA,KAAO,CACL4+E,QAASiwF,CAAAA,QAAQ,CAACvqN,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,EAC9B,CACA,GAAIyR,KAAK3N,cAAc,CAAC,gBAAmB,CAAA,CAAA,CACzCw2H,SAASkwF,iBAAiB,CAAG/4M,IAAKg2V,CAAAA,eAAc,CAC3C,KAAA,CACLntO,SAASkwF,iBAAiB,CAAG,EAC/B,CACA,GAAI/4M,IAAK3N,CAAAA,cAAc,CAAC,iBAAoB,CAAA,CAAA,CAC1Cw2H,QAASmvO,CAAAA,2BAA2B,CAAG,GACvCnvO,CAAAA,QAASuwF,CAAAA,oBAAoB,CAAGxnL,QAAQ,CAAC5xB,KAAKi4V,eAAe,CAACpsW,KAAK,CAAC,CACpEupW,uBAAwBp1V,CAAAA,IAAAA,CAAKi4V,eAAe,CAAEpvO,QAAAA,CAAU,CACtD,mBACD,CAAA,EACH,CACF,CACA,CAAA,MAAMqvO,YAAe,CAAA,CAACl4V,KAAM6oH,QAAUj3F,CAAAA,QAAAA,GAAAA,CACpC,GAAI5xB,IAAK3N,CAAAA,cAAc,CAAC,KAAQ,CAAA,CAAA,CAC9Bw2H,QAASgxF,CAAAA,eAAe,CAAG,CAAM75M,CAAAA,IAAAA,CAAKm4V,IACxC,CACF,CACA,CAAA,MAAMC,mBAAsB,CAAA,CAACp4V,KAAM6oH,QAAUj3F,CAAAA,QAAAA,GAAAA,CAC3C,GAAI5xB,IAAK3N,CAAAA,cAAc,CAAC,YAAe,CAAA,CAAA,CACrCw2H,QAASwiF,CAAAA,UAAU,CAAGrrM,IAAKqrM,CAAAA,WAAU,CAEzC,EACA,MAAMgtJ,qBAAAA,CAAwB,CAACr4V,IAAAA,CAAM6oH,SAAUj3F,QAC7Ci3F,GAAAA,CAAAA,QAAAA,CAASk4B,SAAS,CAAGhnC,YACrB8O,CAAAA,QAASuiF,CAAAA,oBAAoB,CAAG,IAAA,CAChC,GAAIprM,IAAK3N,CAAAA,cAAc,CAAC,oBAAA,CAAA,CAAuB,CAC7Cw2H,QAAS8wF,CAAAA,UAAU,CAAG35M,IAAAA,CAAKs4V,mBAAkB,CAE/C,GAAIt4V,IAAK3N,CAAAA,cAAc,CAAC,qBAAwB,CAAA,CAAA,CAC9Cw2H,QAAS0vO,CAAAA,oBAAoB,CAAG,GAChC1vO,CAAAA,SAASgyF,aAAa,CAAGjpL,QAAQ,CAAC5xB,IAAAA,CAAKw4V,mBAAmB,CAAC3sW,KAAK,CAAC,CACjEupW,wBAAwBp1V,IAAKw4V,CAAAA,mBAAmB,CAAE3vO,QAAU,CAAA,CAC1D,YACD,CAAA,EACH,CACF,CACA,CAAA,MAAM4vO,cAAiB,CAAA,CAACz4V,KAAM6oH,QAAUj3F,CAAAA,QAAAA,GAAAA,CACtCi3F,QAASoiF,CAAAA,QAAQ,CAAG,IACpB,CAAA,GAAIjrM,KAAK3N,cAAc,CAAC,oBAAqB,CAC3C,MAAM43C,KAAQjqC,CAAAA,IAAAA,CAAK04V,gBAAgB,CACnC7vO,QAAAA,CAASozF,KAAK,CAAC1tN,GAAG,CAAChJ,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAI,CAAA,GAAA,CAAA,CAAM1kD,KAAKkV,GAAG,CAACwvC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAI,GAAM1kD,CAAAA,CAAAA,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAI,CAAA,GAAA,CAAA,EACtG,MAAO,CACL4+E,QAAAA,CAASozF,KAAK,CAAC1tN,GAAG,CAAC,CAAA,CAAG,EAAG,CAC3B,EAAA,CACA,GAAIyR,IAAK3N,CAAAA,cAAc,CAAC,mBAAsB,CAAA,CAAA,CAC5Cw2H,QAASmxF,CAAAA,QAAQ,CAAGpoL,QAAQ,CAAC5xB,KAAK24V,iBAAiB,CAAC9sW,KAAK,CAAC,CAC1DupW,uBAAwBp1V,CAAAA,IAAAA,CAAK24V,iBAAiB,CAAE9vO,QAAAA,CAAU,CACxD,OAAA,CACD,EACH,CACAA,QAAAA,CAASqzF,UAAU,CAAGl8M,KAAK3N,cAAc,CAAC,wBAA0B2N,IAAK44V,CAAAA,oBAAoB,CAAG,CAChG,CAAA,GAAI54V,IAAK3N,CAAAA,cAAc,CAAC,uBAA0B,CAAA,CAAA,CAChDw2H,QAASgwO,CAAAA,aAAa,CAAGjnU,QAAQ,CAAC5xB,IAAK84V,CAAAA,qBAAqB,CAACjtW,KAAK,CAAC,CACnEg9H,QAAAA,CAASkwO,oBAAoB,CAAG,GAAA,CAChC3D,uBAAwBp1V,CAAAA,IAAAA,CAAK84V,qBAAqB,CAAEjwO,QAAAA,CAAU,CAC5D,YAAA,CACD,EACH,CACAA,QAAAA,CAAS+pF,gBAAgB,CAAG,KAC9B,CACA,CAAA,MAAMomJ,gBAAkB,CAACh5V,IAAAA,CAAM6oH,SAAUj3F,QACvCi3F,GAAAA,CAAAA,QAAAA,CAASk4B,SAAS,CAAGhnC,YACrB8O,CAAAA,QAAAA,CAASuiF,oBAAoB,CAAG,IAAA,CAChC,GAAIprM,IAAK3N,CAAAA,cAAc,CAAC,iBAAA,CAAA,CAAoB,CAC1Cw2H,QAASkxF,CAAAA,SAAS,CAAG/5M,IAAKi5V,CAAAA,gBAAe,CAE3C,GAAIj5V,IAAK3N,CAAAA,cAAc,CAAC,kBAAqB,CAAA,CAAA,CAC3Cw2H,QAASqwO,CAAAA,YAAY,CAAGtnU,QAAQ,CAAC5xB,IAAKm5V,CAAAA,gBAAgB,CAACttW,KAAK,CAAC,CAC7Dg9H,QAAAA,CAASuwO,mBAAmB,CAAG,GAAA,CAC/BhE,uBAAwBp1V,CAAAA,IAAAA,CAAKm5V,gBAAgB,CAAEtwO,QAAAA,CAAU,CACvD,WAAA,CACD,EACH,CACA,GAAI7oH,IAAK3N,CAAAA,cAAc,CAAC,qBAAwB,CAAA,CAAA,CAC9Cw2H,SAAS+zF,mBAAmB,CAAG58M,KAAK48M,oBACtC,CACA,GAAI58M,KAAK3N,cAAc,CAAC,kBAAqB,CAAA,CAAA,CAC3C,MAAM43C,KAAQjqC,CAAAA,IAAAA,CAAKq5V,gBAAgB,CACnCxwO,SAAS8zF,WAAW,CAACpuN,GAAG,CAAChJ,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAI,CAAA,GAAA,CAAA,CAAM1kD,KAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAA,CAAI,KAAM1kD,IAAKkV,CAAAA,GAAG,CAACwvC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAI,GAC5G,CAAA,EAAA,CACF,EACA,MAAMqvT,yBAAAA,CAA4B,CAACt5V,IAAAA,CAAM6oH,SAAUj3F,QACjD,GAAA,CAAA,GAAI5xB,IAAK3N,CAAAA,cAAc,CAAC,kBAAqB,CAAA,CAAA,CAC3Cw2H,SAASuzF,iBAAiB,CAAGp8M,KAAKu5V,iBACpC,CACF,CAAA,CACA,MAAMC,oBAAuB,CAAA,CAACx5V,IAAM6oH,CAAAA,QAAAA,CAAUj3F,YAC5Ci3F,QAASqiF,CAAAA,cAAc,CAAG,IAAA,CAC1B,GAAIlrM,IAAK3N,CAAAA,cAAc,CAAC,mBAAsB,CAAA,CAAA,CAC5Cw2H,SAAS8xF,WAAW,CAAG36M,IAAKy5V,CAAAA,kBAAiB,CAE/C,GAAIz5V,IAAK3N,CAAAA,cAAc,CAAC,oBAAuB,CAAA,CAAA,CAC7Cw2H,QAAS6wO,CAAAA,qBAAqB,CAAG,GACjC7wO,CAAAA,SAAS8wO,cAAc,CAAG/nU,QAAQ,CAAC5xB,IAAAA,CAAK45V,kBAAkB,CAAC/tW,KAAK,CAAC,CACjEupW,wBAAwBp1V,IAAK45V,CAAAA,kBAAkB,CAAE/wO,QAAU,CAAA,CACzD,aACD,CAAA,EACH,CACA,GAAI7oH,IAAAA,CAAK3N,cAAc,CAAC,gBAAA,CAAA,CAAmB,CACzCw2H,QAASo0F,CAAAA,0BAA0B,CAAGj9M,IAAAA,CAAK65V,eAAc,CAE3D,GAAI75V,IAAAA,CAAK3N,cAAc,CAAC,6BAAA,CAAA,CAAgC,CACtDw2H,QAAAA,CAASk0F,uBAAuB,CAAG/8M,IAAAA,CAAK85V,4BAA2B,CAErE,GAAI95V,IAAK3N,CAAAA,cAAc,CAAC,6BAAA,CAAA,CAAgC,CACtDw2H,QAASm0F,CAAAA,uBAAuB,CAAGh9M,IAAAA,CAAK+5V,4BAA2B,CAErE,GAAI/5V,IAAAA,CAAK3N,cAAc,CAAC,6BAAA,CAAA,CAAgC,CACtDw2H,QAASmxO,CAAAA,8BAA8B,CAAG,GAC1CnxO,CAAAA,QAASoxO,CAAAA,uBAAuB,CAAGroU,QAAQ,CAAC5xB,IAAKk6V,CAAAA,2BAA2B,CAACruW,KAAK,CAAC,CACnFupW,uBAAAA,CAAwBp1V,KAAKk6V,2BAA2B,CAAErxO,SAAU,CAClE,sBAAA,CACD,EACH,CACF,CAAA,CACA,MAAMsxO,mBAAAA,CAAsB,CAACn6V,IAAM6oH,CAAAA,QAAAA,CAAUj3F,YAC3Ci3F,QAASgiF,CAAAA,iBAAiB,CAAG,IAC7B,CAAA,GAAI7qM,IAAK3N,CAAAA,cAAc,CAAC,oBAAuB,CAAA,CAAA,CAC7Cw2H,SAAS+yF,mBAAmB,CAAG57M,KAAKo6V,mBACtC,CAAO,KAAA,CACLvxO,SAAS+yF,mBAAmB,CAAG,EACjC,CACA,GAAI57M,IAAK3N,CAAAA,cAAc,CAAC,mBAAA,CAAA,CAAsB,CAC5C,MAAMgoW,iBAAAA,CAAoBr6V,KAAKq6V,iBAC/BxxO,CAAAA,QAASyxO,CAAAA,aAAa,CAAG1oU,QAAQ,CAACyoU,iBAAkBxuW,CAAAA,KAAK,CAAC,CAC1DupW,wBAAwBiF,iBAAmBxxO,CAAAA,QAAAA,CAAU,CACnD,YAAA,CACD,EACH,CACA,GAAI7oH,KAAK3N,cAAc,CAAC,sBAAuB,CAC7Cw2H,QAAAA,CAASgzF,kBAAkB,CAAG77M,KAAK67M,kBAAkB,CAAGxiN,IAAKG,CAAAA,WAAU,CAClE,KAAA,CACLqvH,QAASgzF,CAAAA,kBAAkB,CAAG,EAChC,CACF,EACA,MAAMljB,cAAAA,CAAiB,CAAC4hK,YAAc3oU,CAAAA,QAAAA,GAAAA,CACpC,MAAMi3F,QAAAA,CAAW,IAAI+1F,gBACrB,CAAA,GAAI27I,aAAaloW,cAAc,CAAC,QAAS,CACvCw2H,QAAAA,CAASv/H,IAAI,CAAGixW,aAAajxW,KAC/B,CACAu/H,QAASshF,CAAAA,eAAe,CAAG7pF,UAC3BuI,CAAAA,QAAS6uO,CAAAA,kBAAkB,CAAG,IAC9B7uO,CAAAA,QAASspF,CAAAA,YAAY,CAAG,IACxBtpF,CAAAA,QAASqwF,CAAAA,mBAAmB,CAAG,IAC/BrwF,CAAAA,QAAAA,CAASiwF,QAAQ,CAACvqN,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAC5Bs6H,CAAAA,CAAAA,SAASkzF,KAAK,CAAG,CACjBlzF,CAAAA,SAAS8pF,WAAW,CAAG,IACvB9pF,CAAAA,SAASsiF,YAAY,CAAG,KACxB,IAAIlhK,KAAAA,CAAOnS,QACX,GAAIyiU,YAAAA,CAAaloW,cAAc,CAAC,wBAAyB,CACvD,MAAMmoW,OAAUD,CAAAA,YAAAA,CAAaE,oBAAoB,CACjD,GAAID,OAAQnoW,CAAAA,cAAc,CAAC,iBAAoB,CAAA,CAAA,CAC7C43C,MAAQuwT,OAAQE,CAAAA,eAAe,CAC/B7xO,QAAS8yF,CAAAA,OAAO,CAACptN,GAAG,CAAChJ,IAAKkV,CAAAA,GAAG,CAACwvC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAI,GAAM1kD,CAAAA,CAAAA,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,EAAI,GAAM1kD,CAAAA,CAAAA,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAA,CAAI,KACtG4+E,CAAAA,QAAAA,CAAS4zF,OAAO,CAAGxyK,KAAK,CAAC,CAAA,EAAE,CAE7B,GAAIuwT,QAAQnoW,cAAc,CAAC,kBAAqB,CAAA,CAAA,CAC9C,MAAMsoW,gBAAmBH,CAAAA,OAAAA,CAAQG,gBAAgB,CACjD7iU,QAAUlG,QAAQ,CAAC+oU,gBAAiB9uW,CAAAA,KAAK,CAAC,CAC1Cg9H,SAASgvF,UAAU,CAAG//K,OACtB+wF,CAAAA,QAAAA,CAASktO,iBAAiB,CAAG,KAC7BltO,CAAAA,QAAAA,CAASopC,UAAU,CAAGn6H,OACtB+wF,CAAAA,QAAAA,CAAS6+K,iBAAiB,CAAG,IAC7B0tD,uBAAwBuF,CAAAA,gBAAAA,CAAkB9xO,SAAU,CAClD,SAAA,CACA,UACD,EACH,CACA,GAAI2xO,OAAAA,CAAQnoW,cAAc,CAAC,gBAAA,CAAA,CAAmB,CAC5Cw2H,QAAS0wF,CAAAA,SAAS,CAAGihJ,OAAQI,CAAAA,eAAc,CAE7C,GAAIJ,OAAQnoW,CAAAA,cAAc,CAAC,iBAAoB,CAAA,CAAA,CAC7Cw2H,SAASkzF,KAAK,CAAGy+I,OAAQK,CAAAA,gBAAe,CAE1C,GAAIL,OAAQnoW,CAAAA,cAAc,CAAC,0BAA6B,CAAA,CAAA,CACtD,MAAMyoW,wBAAAA,CAA2BN,QAAQM,wBACzCjyO,CAAAA,QAASy2F,CAAAA,YAAY,CAAGz2F,QAASstO,CAAAA,QAAQ,CAAGvkU,QAAQ,CAACkpU,wBAAyBjvW,CAAAA,KAAK,CACnFg9H,CAAAA,QAASkyO,CAAAA,mBAAmB,CAAG,GAC/BlyO,CAAAA,QAASwtO,CAAAA,eAAe,CAAG,GAC3BjB,CAAAA,uBAAAA,CAAwB0F,yBAA0BjyO,QAAU,CAAA,CAC1D,OACA,CAAA,WAAA,CACD,EACH,CACF,CACA,GAAI0xO,YAAAA,CAAaloW,cAAc,CAAC,eAAA,CAAA,CAAkB,CAChD,MAAM2oW,cAAgBT,YAAaS,CAAAA,aAAa,CAChDnyO,QAAAA,CAAS47D,SAAS,CAAG7yJ,QAAQ,CAACopU,aAAAA,CAAcnvW,KAAK,CAAC,CAClDupW,wBAAwB4F,aAAenyO,CAAAA,QAAAA,CAAU,CAC/C,QACD,CAAA,CAAA,CACD,GAAImyO,aAAAA,CAAc3oW,cAAc,CAAC,OAAA,CAAA,CAAU,CACzCw2H,QAASwzF,CAAAA,SAAS,CAAG2+I,aAAc1yV,CAAAA,MAAK,CAE5C,CACA,GAAIiyV,YAAAA,CAAaloW,cAAc,CAAC,oBAAqB,CACnD,MAAM4oW,gBAAmBV,CAAAA,YAAAA,CAAaU,gBAAgB,CACtDpyO,SAASktF,KAAK,CAAGnkL,QAAQ,CAACqpU,gBAAAA,CAAiBpvW,KAAK,CAAC,CACjDg9H,QAAAA,CAASqyO,YAAY,CAAG,IACxB9F,uBAAwB6F,CAAAA,gBAAAA,CAAkBpyO,QAAU,CAAA,CAClD,KACD,EACH,CACA,GAAI0xO,YAAaloW,CAAAA,cAAc,CAAC,gBAAmB,CAAA,CAAA,CACjD43C,KAAQswT,CAAAA,YAAAA,CAAaY,cAAc,CACnCtyO,QAAAA,CAASszF,QAAQ,CAAC5tN,GAAG,CAAChJ,IAAAA,CAAKkV,GAAG,CAACwvC,KAAK,CAAC,CAAA,CAAE,CAAE,CAAI,CAAA,GAAA,CAAA,CAAM1kD,KAAKkV,GAAG,CAACwvC,KAAK,CAAC,EAAE,CAAE,CAAA,CAAI,KAAM1kD,IAAKkV,CAAAA,GAAG,CAACwvC,KAAK,CAAC,CAAE,CAAA,CAAE,EAAI,GACzG,CAAA,EAAA,CACA,GAAIswT,YAAaloW,CAAAA,cAAc,CAAC,iBAAoB,CAAA,CAAA,CAClD,MAAM+oW,eAAAA,CAAkBb,aAAaa,eACrCvyO,CAAAA,QAAAA,CAAS4wF,WAAW,CAAG7nL,QAAQ,CAACwpU,eAAAA,CAAgBvvW,KAAK,CAAC,CACtDupW,wBAAwBgG,eAAiBvyO,CAAAA,QAAAA,CAAU,CACjD,UACD,CAAA,EACH,CACA,GAAI0xO,aAAaloW,cAAc,CAAC,WAAc,CAAA,CAAA,CAC5C,OAAOkoW,YAAa/4R,CAAAA,SAAS,EAC3B,IAAK,OACHqnD,QAASk4B,CAAAA,SAAS,CAAG/mC,UACrB,CAAA,GAAIugP,aAAaloW,cAAc,CAAC,aAAgB,CAAA,CAAA,CAC9Cw2H,SAASwQ,SAAS,CAAGkhO,YAAac,CAAAA,YAAW,CACxC,KAAA,CACLxyO,QAASwQ,CAAAA,SAAS,CAAG,GACvB,CACA,MACG,IAAA,OAAA,CACHxQ,SAASk4B,SAAS,CAAGhnC,YACrB8O,CAAAA,SAASu4B,UAAU,CAAG,MACtB,MACF,QACA,IAAK,QACHv4B,CAAAA,QAAAA,CAASk4B,SAAS,CAAG/mC,WACrB,KACJ,CACF,MAAO,CACL6O,QAAAA,CAASk4B,SAAS,CAAG/mC,WACvB,CACA,GAAIugP,aAAaloW,cAAc,CAAC,aAAgB,CAAA,CAAA,CAC9Cw2H,SAASohF,gBAAgB,CAAGswJ,YAAae,CAAAA,WAAW,CACpDzyO,QAAAA,CAAS0Q,IAAI,CAAGghO,YAAAA,CAAae,WAAW,CAAGz+U,aAAAA,CAAgBC,cAC7D,CAAA,KAAO,CACL+rG,QAASohF,CAAAA,gBAAgB,CAAG,KAC5BphF,CAAAA,QAAS0Q,CAAAA,IAAI,CAAGz8G,cAClB,CACA,MAAMu3U,UAAAA,CAAa,CACjB,yBAA2BiC,CAAAA,kBAAAA,CAC3B,kCAAmCgD,yBACnC,CAAA,mBAAA,CAAqBpB,YACrB,CAAA,0BAAA,CAA4BE,oBAC5B,2BAA6BoB,CAAAA,oBAAAA,CAC7B,qCAAuC5D,CAAAA,0BAAAA,CACvC,sBAAuB6C,cACvB,CAAA,wBAAA,CAA0BZ,iBAC1B,CAAA,4BAAA,CAA8BQ,sBAC9B,qBAAuBrB,CAAAA,cAAAA,CACvB,uBAAwBgC,eACxB,CAAA,0BAAA,CAA4BmB,mBAC9B,CACA,CAAA,GAAII,YAAaloW,CAAAA,cAAc,CAAC,YAAe,CAAA,CAAA,CAC7C,IAAI,MAAMxE,GAAAA,IAAO0sW,aAAalG,UAAU,CAAC,CACvC,MAAMkH,cAAgBlH,UAAU,CAACxmW,IAAI,CACrC,GAAI0tW,gBAAkBztW,SAAW,CAAA,CAC/BytW,aAAchB,CAAAA,YAAAA,CAAalG,UAAU,CAACxmW,GAAAA,CAAI,CAAEg7H,QAAAA,CAAUj3F,UACxD,CACF,CACF,CACAi3F,QAAAA,CAASzvF,MAAM,EACf,CAAA,OAAOyvF,QACT,CACA,CAAA,MAAM2yO,gBAAkB,CAACC,aAAAA,CAAeC,cAAgBC,CAAAA,aAAAA,CAAe5K,YAAa7iO,KAAOu2E,CAAAA,MAAAA,CAAQm3J,SACjG,GAAA,CAAA,MAAMC,eAAiB,YAAC/K,EAAAA,CACtB,OAAO,IAAIlG,SAASsF,gBAAiBY,CAAAA,YAAAA,CAAarzV,IAAI,CAAG+zV,CAAAA,sBAAAA,CAAuBV,aAAcC,WAChG,CAAA,CAAA,CAAA,CACA,MAAM+K,SAAAA,CAAY,CAChB,MAAQpnG,CAAAA,kBAAAA,CACR,QAAUC,CAAAA,oBAAAA,CACV,cAAeC,mBACjB,CAAA,CACA,MAAMmnG,QAAAA,CAAW,EACjB,CAAA,MAAMC,UAAY,EAAC,CACnB,MAAMC,QAAW,CAAA,EACjB,CAAA,IAAIC,cAAgB,CACpB,CAAA,IAAIl2W,EACJ,IAAIA,CAAAA,CAAI,EAAGA,CAAIy1W,CAAAA,aAAAA,CAAc/yS,QAAQ,CAACziE,MAAM,CAAE,EAAED,EAAE,CAChD,MAAM4nD,QAAU6tT,aAAc/yS,CAAAA,QAAQ,CAAC1iE,CAAAA,CAAE,CACzC,GAAI,CAAC+1W,QAAS1pW,CAAAA,cAAc,CAACu7C,OAAQknN,CAAAA,KAAK,CAAG,CAAA,CAC3CinG,QAAQ,CAACnuT,OAAAA,CAAQknN,KAAK,CAAC,CAAG+mG,eAAeF,aAAa,CAAC/tT,OAAQknN,CAAAA,KAAK,CAAC,EACvE,CACA,GAAI,CAACknG,UAAU3pW,cAAc,CAACu7C,OAAQphD,CAAAA,MAAM,EAAG,CAC7CwvW,SAAS,CAACpuT,OAAQphD,CAAAA,MAAM,CAAC,CAAGqvW,cAAAA,CAAeF,aAAa,CAAC/tT,QAAQphD,MAAM,CAAC,EAC1E,CACA,MAAM2oQ,aAAgBvnN,CAAAA,OAAAA,CAAQv7C,cAAc,CAAC,kBAAoBypW,SAAUzpW,CAAAA,cAAc,CAACu7C,OAAQunN,CAAAA,aAAa,EAAI2mG,SAAS,CAACluT,OAAQunN,CAAAA,aAAa,CAAC,CAAGR,oBAAAA,CACtJ,MAAMr1P,KAAQ,CAAA,CACZg9P,MAAO,EAAE,CACTxH,KAAOlnN,CAAAA,OAAAA,CAAQknN,KAAK,CACpBtoQ,MAAAA,CAAQohD,QAAQphD,MAAM,CACtB2oQ,cAAeA,aACjB,CACA8mG,CAAAA,QAAQ,CAACj2W,CAAE,CAAA,CAAGsZ,MAChB,CACA,MAAM68V,UAAa,CAAA,EAAE,CACrB,MAAMC,gBAAkB,CACtB,aAAA,CAAe,gBACf,UAAY,CAAA,eAAA,CACZ,QAAS,YACX,CAAA,CACA,MAAMC,iBAAAA,CAAoB,IACxB,EAAA,CAAA,MAAM12W,IAAO,CAAA,EAAE,CACf,MAAMywI,IAAAA,CAAK,CACTzwI,IAAAA,CAAK6/E,OAAO,CAAC4wD,IAAAA,CAAK9sI,IAAI,CACtB8sI,CAAAA,IAAAA,CAAOA,KAAKn/H,OACd,CACA,OAAOtR,IACT,CACA,CAAA,MAAM22W,uBAA0B,CAAA,CAACh9V,MAAOi9V,QAAUj+F,CAAAA,UAAAA,GAAAA,CAChD,MAAM1nP,GAAAA,CAAMolV,SAAS,CAAC18V,KAAAA,CAAM9S,MAAM,CAAC,CACnC,GAAI,CAACoqB,GAAAA,CAAK,CACR,MACF,CACA,IAAIq+U,WAAAA,CACJ,GAAIxwJ,MAAUA,EAAAA,MAAM,CAAC83J,QAAS7sO,CAAAA,IAAI,CAAC,CAAE,CACnC,MAAMA,IAAAA,CAAO+0E,MAAM,CAAC83J,QAAAA,CAAS7sO,IAAI,CAAC,CAClC,GAAIA,IAAAA,CAAKr9H,cAAc,CAAC,QAAA,CAAA,EAAaq9H,IAAKslO,CAAAA,MAAM,CAAC3iW,cAAc,CAAC,aAAgB,CAAA,CAAA,CAC9E4iW,YAAcvlO,IAAKslO,CAAAA,MAAM,CAACC,YAC5B,CACF,CACA,MAAMuH,OAAU5lV,CAAAA,GAAAA,CAAI5W,IAAI,CACxB,MAAMy8V,gBAAmBD,CAAAA,OAAAA,CAAQv2W,MAAM,CAAG81W,QAAQ,CAACz8V,KAAAA,CAAMw1P,KAAK,CAAC,CAAC90P,IAAI,CAAC/Z,MAAM,CAC3E,MAAMy2W,aAAAA,CAAgBF,OAAQv2W,CAAAA,MAAM,CAAGw2W,gBACvC,CAAA,MAAME,gBAAmBD,CAAAA,aAAAA,CAAgB,EACzC,MAAMh8V,MAAAA,CAAS,IAAIg2B,WAAAA,CAAYimU,iBAAmBF,gBAClD,CAAA,CAAA,IAAI,IAAIlwR,CAAI,CAAA,CAAA,CAAGA,EAAIkwR,gBAAkBlwR,CAAAA,CAAAA,EAAAA,CAAI,CACvC,MAAMqwR,kBAAoB,IAAI/8V,YAAAA,CAAaa,OAAQi8V,gBAAmBpwR,CAAAA,CAAAA,CAAGmwR,eACzE,IAAI,IAAIp1O,CAAI,CAAA,CAAA,CAAGA,EAAIo1O,aAAep1O,CAAAA,CAAAA,EAAAA,CAAI,CACpCs1O,iBAAiB,CAACt1O,EAAE,CAAGk1O,OAAO,CAACl1O,CAAAA,CAAIm1O,iBAAmBlwR,CAAE,EAC1D,CACA,MAAM//E,OAAS,IAAIo+V,QAAAA,CAAS,CAAGgS,CAAAA,iBAAAA,CAAAA,CAC/B,MAAM58F,UAAai1F,CAAAA,WAAAA,GAAc1oR,CAAE,CAAA,CAAG,CAAC,KAAK,EAAE0oR,WAAW,CAAC1oR,EAAE,CAAC,CAAC,CAAGA,CACjEyvR,CAAAA,SAAS,CAAC,CAACE,aAAAA,CAAc,CAAG1vW,MAC5B,CAAA,MAAMqwW,WAAa,CACjBvgG,KAAAA,CAAO,CACL,CACEgC,UAAAA,CAAYA,UACZl3B,CAAAA,SAAAA,CAAW,QACXm3B,YAAc,CAAA,CACZ,CAAC,OAAO,EAAEyB,UAAW,CAAA,CAAC,CAE1B,EACD,CACDlL,KAAAA,CAAOx1P,MAAMw1P,KAAK,CAClBtoQ,OAAQ,CAAC0vW,aAAAA,CACT/mG,aAAe71P,CAAAA,KAAAA,CAAM61P,aAAa,CAEpC+mG,CAAAA,aACAD,EAAAA,CAAAA,QAAQ,CAAC,CAAC,WAAW,EAAEj2W,EAAE,CAAC,EAAEumF,EAAE,CAAC,CAAC,CAAGswR,WACrC,CACF,CACA,CAAA,IAAI72W,EAAI,CAAGA,CAAAA,CAAAA,CAAIy1W,aAAcqB,CAAAA,QAAQ,CAAC72W,MAAM,CAAE,EAAED,CAAAA,CAAE,CAChD,MAAM4S,OAAAA,CAAU6iW,cAAcqB,QAAQ,CAAC92W,EAAE,CACzC,MAAMpB,MAASgU,CAAAA,OAAAA,CAAQhU,MAAM,CAC7B,MAAM0a,KAAQ28V,CAAAA,QAAQ,CAACrjW,OAAQg1C,CAAAA,OAAO,CAAC,CACvC,MAAMwoF,IAAOlI,CAAAA,KAAK,CAACtpI,MAAOwxI,CAAAA,IAAI,CAAC,CAC/B,MAAMmmO,QAAWX,CAAAA,SAAS,CAACh3W,MAAOwxI,CAAAA,IAAI,CAAC,CACvC,MAAMkoI,UAAa+9F,CAAAA,iBAAAA,CAAkBjmO,IACrC,CAAA,CAAA,GAAIxxI,OAAOe,IAAI,CAACY,UAAU,CAAC,SAAA,CAAA,CAAY,CACrC+1W,uBAAwBh9V,CAAAA,KAAAA,CAAOi9V,QAAUj+F,CAAAA,UAAAA,CACzC29F,CAAAA,QAAQ,CAACrjW,QAAQg1C,OAAO,CAAC,CAACivT,UAAU,CAAG,KACzC,CAAA,KAAO,CACLv9V,KAAMg9P,CAAAA,KAAK,CAACx1Q,IAAI,CAAC,CACfw3Q,UAAYA,CAAAA,UAAAA,CACZl3B,SAAW,CAAA,OAAA,CACXm3B,aAAc,CACZ69F,eAAe,CAACx3W,MAAAA,CAAOe,IAAI,CAAC,CAC7B,CACH,EACF,CACF,CACA,MAAM02Q,OAAS,EAAE,CACjB,MAAMzG,OAAU,CAAA,EAAE,CAClB,MAAM11P,OAAS,EAAE,CACjB,IAAI,MAAM68V,QAAAA,IAAYhB,SAAS,CAC7B1/F,MAAAA,CAAOv1Q,IAAI,CAACi1W,QAAQ,CAACgB,QAAAA,CAAS,CAC9BhB,CAAAA,QAAQ,CAACgB,QAAS,CAAA,CAAG1gG,MAAOp2Q,CAAAA,MAAM,CAAG,EACvC,CACA,IAAI,MAAM+2W,aAAahB,SAAU,CAAA,CAC/BpmG,OAAQ9uQ,CAAAA,IAAI,CAACk1W,SAAS,CAACgB,UAAU,CACjChB,CAAAA,SAAS,CAACgB,SAAAA,CAAU,CAAGpnG,OAAAA,CAAQ3vQ,MAAM,CAAG,EAC1C,CACA,IAAI,MAAMg3W,YAAYhB,QAAS,CAAA,CAC7B,MAAMiB,SAAAA,CAAYjB,QAAQ,CAACgB,QAAAA,CAAS,CACpC,GAAIC,SAAAA,CAAUL,UAAU,CAAE,CACxB,QACF,CACA38V,OAAOpZ,IAAI,CAAC,IAAI4jW,SAAAA,CAAUwS,UAAU5gG,KAAK,CAAEy/F,QAAQ,CAACmB,UAAUpoG,KAAK,CAAC,CAAEknG,SAAS,CAACkB,UAAU1wW,MAAM,CAAC,CAAE0wW,SAAAA,CAAU/nG,aAAa,CAC1H,CAAA,CAAA,GAAI+nG,SAAU5gG,CAAAA,KAAK,CAACr2Q,MAAM,CAAG,CAAKi3W,EAAAA,SAAAA,CAAU5gG,KAAK,CAAC,CAAA,CAAE,CAACiC,YAAY,CAAC,EAAE,GAAK,eAAA,EAAmB2+F,SAAU/nG,CAAAA,aAAa,GAAKP,mBAAqB,CAAA,CAC3IunG,UAAWr1W,CAAAA,IAAI,CAACoZ,MAAM,CAACA,MAAOja,CAAAA,MAAM,CAAG,CAAE,CAAA,CAACuG,MAAM,EAClD,CACF,CACA2vW,UAAWjmW,CAAAA,IAAI,EACf,CAAA,IAAIinW,UAAY,IAChB,CAAA,IAAIn9V,KACJ,IAAIha,CAAAA,CAAI,EAAGA,CAAIm2W,CAAAA,UAAAA,CAAWl2W,MAAM,CAAE,EAAED,CAAE,CAAA,CACpC,MAAM6F,KAAQswW,CAAAA,UAAU,CAACn2W,CAAE,CAAA,CAC3B,GAAIA,CAAAA,GAAM,GAAK6F,KAAUsxW,GAAAA,SAAAA,CAAW,CAClCn9V,IAAAA,CAAO41P,OAAO,CAAC/pQ,KAAAA,CAAM,CACrB,GAAImU,KAAK8/B,UAAU,GAAK,EAAG,CACzB,MAAMxhC,EAAI0B,IAAKA,CAAAA,IAAI,CACnB,MAAM9B,IAAMI,CAAErY,CAAAA,MAAM,CAAG,CAAA,CACvB,IAAI,IAAIsmF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIruE,IAAKquE,CAAK,EAAA,CAAA,CAAE,CAC7B,MAAM6wR,EAAAA,CAAK9+V,CAAC,CAACiuE,CAAAA,CAAI,CAAE,CAAA,CAAGjuE,CAAC,CAACiuE,CAAAA,CAAI,CAAE,CAAA,CAAGjuE,CAAC,CAACiuE,CAAAA,CAAI,CAAE,CAAA,CAAGjuE,CAAC,CAACiuE,CAAAA,CAAI,EAAE,CAAGjuE,CAAC,CAACiuE,CAAI,CAAA,CAAA,CAAE,CAAGjuE,CAAC,CAACiuE,CAAI,CAAA,CAAA,CAAE,CAAGjuE,CAAC,CAACiuE,EAAI,CAAE,CAAA,CAAGjuE,CAAC,CAACiuE,EAAI,CAAE,CAAA,CAChG,GAAI6wR,EAAK,CAAA,CAAA,CAAG,CACV9+V,CAAC,CAACiuE,CAAI,CAAA,CAAA,CAAE,EAAI,CAAC,CACbjuE,CAAAA,CAAC,CAACiuE,CAAI,CAAA,CAAA,CAAE,EAAI,CAAC,CACbjuE,CAAAA,CAAC,CAACiuE,CAAI,CAAA,CAAA,CAAE,EAAI,CAAC,CACbjuE,CAAAA,CAAC,CAACiuE,CAAI,CAAA,CAAA,CAAE,EAAI,CAAC,EACf,CACF,CACF,CACA4wR,SAAAA,CAAYtxW,MACd,CACF,CACA,IAAI6sF,QAAW,CAAA,CAAA,CACf,IAAI1yF,CAAI,CAAA,CAAA,CAAGA,CAAIq2Q,CAAAA,MAAAA,CAAOp2Q,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAChCga,IAAAA,CAAOq8P,MAAM,CAACr2Q,CAAAA,CAAE,CAAC21O,KAAK,CACtBjjJ,QAAWnzF,CAAAA,IAAAA,CAAKoU,GAAG,CAAC++E,QAAAA,CAAU14E,KAAK/Z,MAAM,GAAK,CAAI,CAAA,CAAA,CAAI+Z,IAAI,CAACA,IAAAA,CAAK/Z,MAAM,CAAG,CAAA,CAAE,EAC7E,CACA,OAAO,IAAIu3Q,SAAAA,CAAUi+F,cAAcppW,cAAc,CAAC,QAAUopW,aAAcnyW,CAAAA,IAAI,CAAG,CAAC,UAAU,EAAEoyW,cAAAA,CAAe,CAAC,CAAEhjR,QAAAA,CAAU2jL,MAAQzG,CAAAA,OAAAA,CAAS11P,OAC7I,CACA,CAAA,MAAMm9V,OAAU,CAAA,IAAI90V,KACpB,MAAM+0V,OAAAA,CAAU,IAAIr7V,IACpB,CAAA,MAAMs7V,WAAa,CAAChB,QAAAA,CAAU7nL,SAAW8oL,CAAAA,iBAAAA,GAAAA,CACvC,MAAM5wO,MAAS,CAAA,IAAI2e,SACnB,CAAA,GAAIgxN,SAASlqW,cAAc,CAAC,MAAWkqW,CAAAA,EAAAA,QAAAA,CAASjzW,IAAI,CAACrD,MAAM,CAAG,CAAG,CAAA,CAC/D2mI,OAAOtjI,IAAI,CAAGizW,QAASjzW,CAAAA,KAAI,CACtB,KAAA,CACLsjI,MAAOtjI,CAAAA,IAAI,CAAG,CAAC,KAAK,EAAEorL,SAAAA,CAAU,EAAC,CAEnC,GAAI6nL,QAASlqW,CAAAA,cAAc,CAAC,QAAW,CAAA,CAAA,CACrCgrW,OAAQr9V,CAAAA,IAAI,CAACzR,GAAG,CAACguW,SAASpkV,MAAM,CAAA,CAChCklV,QAAQtwV,cAAc,CAACuwV,OACvB1wO,CAAAA,CAAAA,MAAAA,CAAO+hB,gBAAgB,CAAC2uN,OAAAA,CAAAA,CACxBD,QAAQ5vV,cAAc,CAAC6vV,SACvB1wO,MAAO6hB,CAAAA,mBAAmB,CAAC6uN,OAAAA,CAAAA,CAC3BD,QAAQrwV,QAAQ,CAACswV,OACjB1wO,CAAAA,CAAAA,MAAAA,CAAOiiB,aAAa,CAACyuN,OAAAA,EACvB,CACA,GAAIf,SAASlqW,cAAc,CAAC,YAAa,CACvC,MAAM/M,EAAIi3W,QAAS5vN,CAAAA,QAAQ,CAC3B/f,MAAAA,CAAOgiB,gBAAgB,CAACtpJ,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,EAAE,EAChD,CACA,GAAIi3W,QAAAA,CAASlqW,cAAc,CAAC,aAAA,CAAA,CAAgB,CAC1C,MAAMyE,EAAIylW,QAASxX,CAAAA,WAAW,CAC9Bn4N,MAAAA,CAAO+hB,gBAAgB,CAAC73I,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,EAC1C,CACA,GAAIylW,QAAAA,CAASlqW,cAAc,CAAC,OAAA,CAAA,CAAU,CACpC,MAAMtG,EAAIwwW,QAASj0V,CAAAA,KAAK,CACxBskH,MAAOiiB,CAAAA,aAAa,CAAC9iJ,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,EACvC,CACA,GAAIwwW,SAASlqW,cAAc,CAAC,eAAiBkqW,QAASlI,CAAAA,UAAU,CAACoJ,uBAAuB,CAAE,CACxFD,iBAAAA,CAAkBjvW,GAAG,CAACguW,QAAAA,CAAU,CAC9Bl1W,GAAAA,CAAKk1W,SAASlI,UAAU,CAACoJ,uBAC3B,GACF,CACA,OAAO7wO,MACT,CACA,CAAA,MAAM8wO,aAAe,CAACC,UAAAA,CAAYvnO,IAChC,GAAA,CAAA,MAAM7+F,WAAaomU,UAAWlgW,CAAAA,IAAI,GAAK,cAAA,CAAiBohH,wBAA0BD,sBAClF,CAAA,MAAMg/O,cAAiBrmU,CAAAA,UAAAA,GAAesnF,wBAA0B8+O,UAAWE,CAAAA,YAAY,CAAGF,UAAWG,CAAAA,WAAW,CAChH,MAAMzpG,aAAAA,CAAgB,CACpBx7P,OAAAA,CAAS,MACT0+B,UAAYA,CAAAA,UAAAA,CACZ0vG,SAAU22N,cAAeh1V,CAAAA,KAAK,CAC9Bw8H,eAAiB9gB,CAAAA,WACnB,CACA,CAAA,GAAIs5O,eAAejzV,IAAI,CAAE,CACvB0pP,aAAchuH,CAAAA,OAAO,CAAGu3N,cAAejzV,CAAAA,KAAI,CAE7C,GAAI4sB,UAAesnF,GAAAA,uBAAAA,CAAyB,CAC1Cw1I,aAAAA,CAAcjtH,WAAW,CAAG,EAAA,CAAMw2N,cAAeG,CAAAA,IAAI,CACrD,GAAIH,cAAAA,CAAeG,IAAI,CAAE,CACvB1pG,cAAcjvH,eAAe,CAAG7gB,aAChC8vI,CAAAA,cAAcvvH,WAAW,CAAG84N,cAAeI,CAAAA,IAAI,CAAGJ,cAAeG,CAAAA,KAAI,CAEzE,MAAO,CACL1pG,aAAAA,CAAc3rP,GAAG,CAAGk1V,cAAAA,CAAeK,IAAI,CAAG5kW,IAAAA,CAAKG,UAAU,CACzD,GAAIokW,cAAe94N,CAAAA,WAAW,CAAE,CAC9BuvH,cAAcjvH,eAAe,CAAG7gB,aAChC8vI,CAAAA,cAAcvvH,WAAW,CAAG84N,eAAe94N,YAC7C,CACF,CACA,MAAMo5N,YAAe,CAAA,IAAI31H,OAAOo1H,UAAWr0W,CAAAA,IAAI,EAC/C40W,YAAa11H,CAAAA,YAAY,CAAC,QAAU6rB,CAAAA,aAAAA,CAAAA,CACpC,OAAO6pG,YACT,EACA,MAAMC,WAAAA,CAAc,CAACC,SAAWhoO,CAAAA,IAAAA,GAAAA,CAC9B,MAAMioO,UAAa,CAAA,CACjBxlW,OAAS,CAAA,KAAA,CACT4E,KAAM2gW,SAAU3gW,CAAAA,IAAI,GAAK,OAAA,CAAU,OAAS2gW,SAAU3gW,CAAAA,IAAI,CAC1DwsC,KAAAA,CAAOm0T,UAAU/rW,cAAc,CAAC,SAAW,IAAIgJ,KAAAA,CAAM+iW,UAAUn0T,KAAK,CAAA,CAAI5uC,KAAM2B,CAAAA,KAAK,CACnFqsI,KAAO+0N,CAAAA,SAAAA,CAAU/rW,cAAc,CAAC,SAAW+rW,SAAU/0N,CAAAA,KAAK,CAAG,IAAA,CAC7D8iC,YAAa9vD,2BACb3U,CAAAA,SAAAA,CAAW02P,UAAU/rW,cAAc,CAAC,aAAegH,IAAKI,CAAAA,KAAK,CAAC2kW,SAAAA,CAAU12P,SAAS,CAAE,CAAA,CAAG,CAAK,CAAA,CAAA,CAC7F,EACA,GAAI02P,SAAAA,CAAU/rW,cAAc,CAAC,QAAS,CACpCgsW,UAAAA,CAAWhyL,cAAc,CAAG+xL,SAAAA,CAAU9qN,IAAI,CAACjhJ,cAAc,CAAC,gBAAA,CAAA,CAAoB+rW,UAAU9qN,IAAI,CAAC+4B,cAAc,CAAGhzK,IAAAA,CAAKG,UAAU,CAAG,CAChI6kW,CAAAA,UAAAA,CAAW7xL,cAAc,CAAG4xL,SAAAA,CAAU9qN,IAAI,CAACjhJ,cAAc,CAAC,gBAAoB+rW,CAAAA,CAAAA,SAAAA,CAAU9qN,IAAI,CAACk5B,cAAc,CAAGnzK,IAAAA,CAAKG,UAAU,CAAGjU,KAAKgU,EAAE,CAAG,EAC5I,CACA,GAAI6kW,SAAU/rW,CAAAA,cAAc,CAAC,WAAc,CAAA,CAAA,CACzCgsW,WAAWrxL,SAAS,CAAGoxL,SAAU12P,CAAAA,SAAS,CAAGijE,KAAMyD,CAAAA,sBAAsB,CAAC9D,UAAU,CAAC+zL,UAAW5gW,CAAAA,IAAI,CAAC,CAAE4gW,WAAW7xL,cAAc,CAAE6xL,WAAWhyL,cAAc,EAC7J,CACA,MAAM+/E,WAAAA,CAAc,IAAI7jB,MAAAA,CAAOnyG,KAAK9sI,IAAI,CAAA,CACxC8iQ,WAAY37G,CAAAA,WAAW,CAAC,EAAI,CAAA,CAAA,CAAG,CAC/B27G,CAAAA,CAAAA,WAAAA,CAAY5jB,YAAY,CAAC,OAAA,CAAS61H,YAClC,OAAOjyG,WACT,EACA,MAAMkyG,WAAAA,CAAc,CAACruU,MAAAA,CAAQsuU,KAAMrwO,KAAO6iO,CAAAA,WAAAA,GAAAA,CACxC,GAAI,CAACwN,IAAAA,CAAKlsW,cAAc,CAAC,OAAA,CAAA,EAAYksW,IAAKC,CAAAA,KAAK,CAACv4W,MAAM,GAAK,EAAG,CAC5D,OAAO,EAAE,CAEX,MAAMutW,QAAAA,CAAW,IAAIplW,GACrB,CAAA,OAAOmwW,IAAKC,CAAAA,KAAK,CAAC3xW,GAAG,CAAC,QAAC0mW,EAAAA,CACrB,OAAOD,UAAWrjU,CAAAA,MAAAA,CAAQsjU,SAAUgL,IAAK/pQ,CAAAA,SAAS,CAAEu8P,WAAa7iO,CAAAA,KAAAA,CAAOslO,QAC1E,CAAA,CAAA,CACF,EACA,MAAMiL,YAAAA,CAAe,CAACxuU,MAAAA,CAAQsuU,KAAMxN,WAAat5V,CAAAA,OAAAA,GAAAA,CAC/C,MAAMu7V,gBAAAA,CAAmB,EACzB,CAAA,MAAMgB,aAAe,EAAC,CACtB,MAAMC,oBAAuB,CAAA,EAC7B,CAAA,MAAMC,SAAW,EAAE,CACnB,MAAM32N,KAAAA,CAAQ,CAAC9lI,OAAQinW,CAAAA,UAAU,EAAIH,IAAAA,EAAM95J,QAAQx+M,MAAUs4W,EAAAA,IAAAA,EAAM/pQ,WAAWvuG,MAAUs4W,EAAAA,IAAAA,EAAMxN,aAAa9qW,MAC3G,CAAA,MAAMw+M,MAASlnE,CAAAA,KAAAA,CAAQghO,KAAK95J,MAAM,CAAC53M,GAAG,CAAEgoW,WACtC,OAAOD,YAAAA,CAAa3kU,MAAQ4kU,CAAAA,QAAAA,CAAU0J,KAAK/pQ,SAAS,CAAEu8P,YAAaiC,gBAAkBgB,CAAAA,YAAAA,CAAcC,qBAAsBx8V,OAASy8V,CAAAA,QAAAA,CACpI,CAAK,CAAA,CAAA,EAAE,CACP,OAAO,CACLzvJ,MACAuvJ,CAAAA,YAAAA,CACAC,qBACAC,QACF,CACF,CACA,CAAA,MAAM1kG,gBAAkB,CAAC+uG,IAAAA,CAAM3sU,SAAUn6B,OACvC,GAAA,CAAA,GAAI,CAAC8mW,IAAKlsW,CAAAA,cAAc,CAAC,WAAA,CAAA,EAAgBksW,KAAK1qL,SAAS,CAAC5tL,MAAM,GAAK,EAAG,CACpE,OAAO,EACT,CACA,MAAM04W,UAAAA,CAAalnW,SAASoxH,QAAU81O,EAAAA,UAAAA,CACtC,MAAMhsQ,OAAUl7F,CAAAA,OAAAA,EAASoxH,QAAUl2B,EAAAA,OAAAA,EAAWgmG,eAC9C,MAAMimK,WAAAA,CAAcnnW,OAASoxH,EAAAA,QAAAA,EAAU+1O,YACvC,OAAOL,IAAAA,CAAK1qL,SAAS,CAAChnL,GAAG,CAAE0tW,eACzB,GAAIoE,UAAAA,CAAY,CACdA,UAAWpE,CAAAA,YAAAA,EACb,CACA,MAAM1xO,SAAWl2B,OAAQ4nQ,CAAAA,YAAAA,CAAc3oU,UACvC,GAAIgtU,WAAAA,CAAa,CACfA,WAAYrE,CAAAA,YAAAA,CAAc1xO,QAC5B,EAAA,CACA,OAAOA,QACT,CAAA,CACF,EACA,MAAMg2O,cAAAA,CAAiB,IACrB,EAAA,CAAA,GAAI,CAACN,IAAAA,CAAKlsW,cAAc,CAAC,YAAA,CAAA,EAAiB,CAACksW,IAAAA,CAAKlK,UAAU,CAAChiW,cAAc,CAAC,wBAAA,CAAA,CAA2B,CACnG,OAAO,IACT,CACA,MAAM2N,IAAAA,CAAOu+V,KAAKlK,UAAU,CAACI,sBAAsB,CAACv9N,QAAQ,CAC5D,MAAMA,QAAW,CAAA,GACjB,IAAI,IAAIlxI,CAAI,CAAA,CAAA,CAAGA,EAAIga,IAAK/Z,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAClCkxI,QAAQ,CAACl3H,IAAI,CAACha,CAAAA,CAAE,CAACsD,IAAI,CAAC,CAAGtD,EAC3B,CACA,OAAOkxI,QACT,CACA,CAAA,MAAM4nO,iBAAmB,CAACP,IAAAA,CAAMrwO,MAAO6iO,WAAat5V,CAAAA,OAAAA,GAAAA,CAClD,GAAI,CAAC8mW,IAAAA,CAAKlsW,cAAc,CAAC,eAAiBksW,IAAKn+F,CAAAA,UAAU,CAACn6Q,MAAM,GAAK,EAAG,CACtE,OAAO,EACT,CACA,MAAM04W,UAAAA,CAAalnW,SAASuvM,SAAW23J,EAAAA,UAAAA,CACvC,MAAMC,WAAcnnW,CAAAA,OAAAA,EAASuvM,SAAW43J,EAAAA,WAAAA,CACxC,OAAOL,IAAKn+F,CAAAA,UAAU,CAACvzQ,GAAG,CAAC,CAAC4uW,aAAAA,CAAe5vW,KACzC,GAAA,CAAA,GAAI8yW,WAAY,CACdA,UAAAA,CAAWlD,eACb,CACA,MAAMz0J,UAAYw0J,eAAgBC,CAAAA,aAAAA,CAAe5vW,KAAO0yW,CAAAA,IAAAA,CAAK/pQ,SAAS,CAAEu8P,WAAAA,CAAa7iO,KAAOqwO,CAAAA,IAAAA,CAAK95J,MAAM,CAAE85J,IAAAA,CAAKrwO,KAAK,CAAA,CACnH,GAAI0wO,WAAa,CAAA,CACfA,YAAYnD,aAAez0J,CAAAA,SAAAA,EAC7B,CACA,OAAOA,SACT,CACF,CAAA,CAAA,CACA,MAAM+3J,gBAAmB,CAAA,CAAC9uU,MAAQsuU,CAAAA,IAAAA,CAAMf,kBAAmBzM,WACzD,GAAA,CAAA,MAAMv8P,SAAY+pQ,CAAAA,IAAAA,CAAK/pQ,SAAS,CAChCgpQ,iBAAAA,CAAkB7qW,OAAO,CAAC,CAACqN,KAAM4sH,MAC/B,GAAA,CAAA,MAAMt7E,UAAatxC,CAAAA,IAAAA,CAAK3Y,GAAG,CAACiqD,UAAU,CACtC,IAAIu0L,YAAAA,CACJ,GAAIv0L,UAAWj/C,CAAAA,cAAc,CAAC,aAAA,CAAA,CAAgB,CAC5C,MAAMqiG,QAAAA,CAAWF,SAAS,CAACljD,UAAAA,CAAW0tT,WAAW,CAAC,CAClDn5H,YAAe2rH,CAAAA,sBAAAA,CAAuB98P,SAAUq8P,WAClD,EAAA,CACA,IAAIkO,SAAAA,CACJ,GAAI3tT,UAAWj/C,CAAAA,cAAc,CAAC,UAAA,CAAA,CAAa,CACzC,MAAMqiG,QAAAA,CAAWF,SAAS,CAACljD,UAAAA,CAAW4tT,QAAQ,CAAC,CAC/CD,SAAYzN,CAAAA,sBAAAA,CAAuB98P,SAAUq8P,WAC/C,EAAA,CACA,IAAIt/H,MAAAA,CACJ,GAAIngL,UAAWj/C,CAAAA,cAAc,CAAC,OAAA,CAAA,CAAU,CACtC,MAAMqiG,QAAAA,CAAWF,SAAS,CAACljD,UAAAA,CAAW6tT,KAAK,CAAC,CAC5C1tI,MAAS+/H,CAAAA,sBAAAA,CAAuB98P,SAAUq8P,WAC5C,EAAA,CACA,MAAM/zR,aAAAA,CAAgB,CAAC6oK,YAAAA,CAAeA,YAAa5/O,CAAAA,MAAM,CAAG,CAAI,CAAA,CAAA,IAAOg5W,SAAAA,CAAYA,UAAUh5W,MAAM,CAAG,CAAI,CAAA,CAAA,IAAOwrO,MAAAA,CAASA,OAAOxrO,MAAM,CAAG,EAAI,CAAA,CAAA,CAC9I,GAAI+2E,aAAAA,CAAe,CACjB,MAAMqwD,QAAAA,CAAW,IAAIxtH,YAAam9D,CAAAA,aAAAA,CAAgB,IAClD,MAAMq3E,GAAAA,CAAM,IAAIpyI,IAAAA,CAChB,MAAMuuI,GAAM,CAAA,IAAI3iI,IAChB,CAAA,MAAM+gK,IAAM,IAAI3sK,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,GAC3B,MAAMkW,MAAAA,CAAS,IAAI5P,IACnB,CAAA,IAAI62V,YAAc,CAClB,CAAA,IAAI,IAAIp5W,CAAAA,CAAI,EAAGA,CAAIg3E,CAAAA,aAAAA,CAAeh3E,CAAI,EAAA,CAAA,CACpC,MAAM8sM,EAAK9sM,CAAAA,CAAAA,CAAI,CACf,CAAA,GAAI6/O,aAAc,CAChBxxF,GAAAA,CAAI9lJ,GAAG,CAACs3O,YAAY,CAAC/yC,EAAG,CAAA,CAAE+yC,YAAY,CAAC/yC,GAAK,CAAE,CAAA,CAAE+yC,YAAY,CAAC/yC,GAAK,CAAE,CAAA,EACtE,CACA,GAAImsK,UAAW,CACb,MAAMI,GAAKr5W,CAAI,CAAA,CAAA,CACfwqJ,IAAIjiJ,GAAG,CAAC0wW,SAAS,CAACI,GAAG,CAAEJ,SAAS,CAACI,EAAK,CAAA,CAAA,CAAE,CAAEJ,SAAS,CAACI,EAAK,CAAA,CAAA,CAAE,CAAEJ,SAAS,CAACI,GAAK,CAAE,CAAA,EAChF,CACA,GAAI5tI,MAAAA,CAAQ,CACV7iD,GAAAA,CAAIrgL,GAAG,CAACkjO,MAAM,CAAC3+B,EAAAA,CAAG,CAAE2+B,MAAM,CAAC3+B,EAAK,CAAA,CAAA,CAAE,CAAE2+B,MAAM,CAAC3+B,GAAK,CAAE,CAAA,EACpD,CACA36K,MAAOxL,CAAAA,MAAM,CAAC0nI,GAAAA,CAAK7D,IAAKo+B,GACxB,CAAA,CAAA,IAAI,IAAI9tK,CAAAA,CAAI,EAAGA,CAAI,CAAA,EAAA,CAAIA,CAAI,EAAA,CAAA,CACzBusH,QAAQ,CAAC+xO,WAAAA,EAAAA,CAAc,CAAGjnV,MAAOnY,CAAAA,IAAI,CAACc,CAAE,EAC1C,CACF,CACAd,KAAKqtH,QAAQ,CAAGA,SAClB,CACF,GACF,CACA,CAAA,MAAMiyO,WAAc,CAAA,CAACf,KAAM9mW,OAAS+lW,CAAAA,iBAAAA,GAAAA,CAClC,GAAI,CAACe,IAAAA,CAAKlsW,cAAc,CAAC,OAAA,CAAA,EAAYksW,IAAKrwO,CAAAA,KAAK,CAACjoI,MAAM,GAAK,EAAG,CAC5D,OAAO,EAAE,CAEX,MAAM04W,UAAAA,CAAalnW,SAAS2+H,IAAMuoO,EAAAA,UAAAA,CAClC,MAAMhsQ,OAAUl7F,CAAAA,OAAAA,EAAS2+H,MAAMzjC,OAAW4qQ,EAAAA,UAAAA,CAC1C,MAAMqB,WAAAA,CAAcnnW,SAAS2+H,IAAMwoO,EAAAA,WAAAA,CACnC,MAAM1wO,KAAAA,CAAQqwO,KAAKrwO,KAAK,CAACrhI,GAAG,CAAC,CAAC0vW,QAAU1wW,CAAAA,KAAAA,GAAAA,CACtC,GAAI8yW,UAAY,CAAA,CACdA,WAAWpC,QACb,EAAA,CACA,MAAMnmO,IAAAA,CAAOzjC,QAAQ4pQ,QAAU1wW,CAAAA,KAAAA,CAAO2xW,iBACtC,CAAA,CAAA,GAAIoB,YAAa,CACfA,WAAAA,CAAYrC,QAAUnmO,CAAAA,IAAAA,EACxB,CACA,OAAOA,IACT,GACA,IAAI,IAAIpwI,EAAI,CAAGA,CAAAA,CAAAA,CAAIu4W,IAAKrwO,CAAAA,KAAK,CAACjoI,MAAM,CAAE,EAAED,CAAAA,CAAE,CACxC,MAAMu2W,QAAAA,CAAWgC,IAAKrwO,CAAAA,KAAK,CAACloI,CAAE,CAAA,CAC9B,GAAIu2W,QAASlqW,CAAAA,cAAc,CAAC,UAAa,CAAA,CAAA,CACvC,MAAM4E,MAAAA,CAASi3H,KAAK,CAACloI,CAAAA,CAAE,CACvB,MAAMu5W,WAAAA,CAAc,EACpB,CAAA,IAAI,IAAIhzR,CAAAA,CAAI,EAAGA,CAAIgwR,CAAAA,QAAAA,CAASjxN,QAAQ,CAACrlJ,MAAM,CAAE,EAAEsmF,CAAAA,CAAE,CAC/C,MAAM0gE,MAAQ/e,KAAK,CAACquO,QAASjxN,CAAAA,QAAQ,CAAC/+D,CAAE,CAAA,CAAC,CACzC,GAAI,CAAC0gE,KAAMh2I,CAAAA,MAAM,CAAE,CACjB,GAAIsoW,YAAYltW,cAAc,CAAC46I,KAAM3jJ,CAAAA,IAAI,EAAG,CAC1C2jJ,KAAAA,CAAM3jJ,IAAI,EAAIi2W,WAAW,CAACtyN,KAAAA,CAAM3jJ,IAAI,CAAC,GACvC,CAAO,KAAA,CACLi2W,WAAW,CAACtyN,KAAAA,CAAM3jJ,IAAI,CAAC,CAAG,EAC5B,CACA2N,OAAOu3I,QAAQ,CAACvB,KAClB,EAAA,CACF,CACF,CACF,CACA,OAAO/e,KACT,EACA,MAAMsxO,YAAAA,CAAe,CAACjB,IAAMrwO,CAAAA,KAAAA,GAAAA,CAC1B,MAAM04H,MAAS,CAAA,EAAE,CACjB,MAAM5gN,MAAQu4T,IAAK33G,CAAAA,MAAM,CAAC3gQ,MAAM,CAChC,GAAI+/C,KAAU,GAAA,CAAA,EAAKu4T,IAAK33G,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAC14H,KAAK,EAAEjoI,MAAAA,GAAW,EAAG,CACrD,MAAMyuL,SAAY6pL,CAAAA,IAAAA,CAAK33G,MAAM,CAAC,CAAA,CAAE,CAAC14H,KAAK,CAAC,CAAE,CAAA,CACzC04H,MAAO9/P,CAAAA,IAAI,CAAConI,KAAK,CAACwmD,UAAU,EAC9B,CAAA,KAAO,CACL,IAAI,IAAI1uL,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAM0kI,MAAQ6zO,IAAK33G,CAAAA,MAAM,CAAC5gQ,CAAAA,CAAE,CAC5B,GAAI0kI,KAAAA,CAAMwD,KAAK,CAAE,CACf,MAAMuxO,SAAY,CAAA,IAAIl0N,SAAU7gB,CAAAA,KAAAA,CAAMphI,IAAI,CAC1C,CAAA,IAAI,IAAI8sB,CAAAA,CAAI,EAAGA,CAAIs0G,CAAAA,KAAAA,CAAMwD,KAAK,CAACjoI,MAAM,CAAEmwB,CAAAA,EAAAA,CAAI,CACzC,MAAMspV,SAAAA,CAAYxxO,KAAK,CAACxD,KAAAA,CAAMwD,KAAK,CAAC93G,EAAE,CAAC,CACvCqpV,UAAUjxN,QAAQ,CAACkxN,WACrB,CACA94G,MAAAA,CAAO9/P,IAAI,CAAC24W,WACd,CACF,CACF,CACA,OAAO74G,MACT,EACA,MAAM+4G,aAAAA,CAAgB,CAACpB,IAAAA,CAAMrwO,MAAOz2H,OAClC,GAAA,CAAA,IAAIk9J,OAAU,CAAA,IAAA,CACd,GAAI4pM,IAAKlsW,CAAAA,cAAc,CAAC,OAAA,CAAA,EAAYksW,KAAKlsW,cAAc,CAAC,YAAcksW,IAAK5pM,CAAAA,OAAO,CAAC1uK,MAAM,CAAG,CAAG,CAAA,CAC7F,MAAM04W,UAAalnW,CAAAA,OAAAA,EAASwhI,MAAQ0lO,EAAAA,UAAAA,CACpC,MAAMhsQ,OAAUl7F,CAAAA,OAAAA,EAASwhI,MAAQtmC,EAAAA,OAAAA,EAAW+qQ,aAC5C,MAAMkB,WAAAA,CAAcnnW,SAASwhI,MAAQ2lO,EAAAA,WAAAA,CACrCL,KAAKrwO,KAAK,CAACv7H,OAAO,CAAC,CAAC4pW,QAAU7nL,CAAAA,SAAAA,GAAAA,CAC5B,GAAI6nL,QAAAA,CAASlqW,cAAc,CAAC,QAAA,CAAA,CAAW,CACrC,MAAMsrW,WAAaY,IAAK5pM,CAAAA,OAAO,CAAC4nM,QAAStjO,CAAAA,MAAM,CAAC,CAChD,GAAI0kO,UAAY,CAAA,CACd,GAAIgB,UAAY,CAAA,CACdA,WAAWhB,UACb,EAAA,CACA,MAAM1kO,MAAStmC,CAAAA,OAAAA,CAAQgrQ,UAAYzvO,CAAAA,KAAK,CAACwmD,SAAU,CAAA,CAAA,CACnD,GAAIkqL,WAAa,CAAA,CACfA,YAAYjB,UAAY1kO,CAAAA,MAAAA,EAC1B,CACA,GAAIA,OAAQ,CACV,GAAI,CAAC07B,OAAAA,CAASA,QAAU,IAAIvmK,GAAAA,CAC5BumK,OAAQpmK,CAAAA,GAAG,CAACguW,QAAUtjO,CAAAA,MAAAA,EACxB,CACF,CACF,CACF,GACF,CACA,OAAO07B,OACT,CAAA,CACA,MAAMirM,YAAe,CAAA,CAACrB,IAAMrwO,CAAAA,KAAAA,CAAOz2H,WACjC,IAAI+gJ,MAAAA,CAAS,IACb,CAAA,GAAI+lN,KAAKlsW,cAAc,CAAC,UAAYksW,IAAKlsW,CAAAA,cAAc,CAAC,YAAiBksW,CAAAA,EAAAA,IAAAA,CAAKlK,UAAU,CAAChiW,cAAc,CAAC,qBAAA,CAAA,EAA0BksW,IAAKlK,CAAAA,UAAU,CAACwL,mBAAmB,CAACxtW,cAAc,CAAC,UAAW,CAC9L,MAAMytW,WAAavB,IAAKlK,CAAAA,UAAU,CAACwL,mBAAmB,CAACrnN,MAAM,CAC7D,GAAIsnN,UAAW75W,CAAAA,MAAM,CAAE,CACrB,MAAM04W,WAAalnW,OAASu5I,EAAAA,KAAAA,EAAO2tN,UACnC,CAAA,MAAMhsQ,QAAUl7F,OAASu5I,EAAAA,KAAAA,EAAOr+C,SAAWwrQ,WAC3C,CAAA,MAAMS,YAAcnnW,OAASu5I,EAAAA,KAAAA,EAAO4tN,WACpCL,CAAAA,IAAAA,CAAKrwO,KAAK,CAACv7H,OAAO,CAAC,CAAC4pW,SAAU7nL,SAC5B,GAAA,CAAA,GAAI6nL,QAASlqW,CAAAA,cAAc,CAAC,YAAiBkqW,CAAAA,EAAAA,QAAAA,CAASlI,UAAU,CAAChiW,cAAc,CAAC,qBAA0BkqW,CAAAA,EAAAA,QAAAA,CAASlI,UAAU,CAACwL,mBAAmB,CAACxtW,cAAc,CAAC,OAAA,CAAA,CAAU,CACzK,MAAMohJ,UAAAA,CAAa8oN,QAASlI,CAAAA,UAAU,CAACwL,mBAAmB,CAAC7uN,KAAK,CAChE,MAAMotN,UAAY0B,UAAU,CAACrsN,UAAW,CAAA,CACxC,GAAI2qN,SAAW,CAAA,CACb,GAAIO,UAAAA,CAAY,CACdA,UAAWP,CAAAA,SAAAA,EACb,CACA,MAAMptN,MAAQr+C,OAAQyrQ,CAAAA,SAAAA,CAAWlwO,KAAK,CAACwmD,SAAAA,CAAU,EACjD,GAAIkqL,WAAAA,CAAa,CACfA,WAAAA,CAAYR,UAAWptN,KACzB,EAAA,CACA,GAAIA,KAAO,CAAA,CACT,GAAI,CAACwH,MAAAA,CAAQA,MAAS,CAAA,IAAIpqJ,IAC1BoqJ,MAAOjqJ,CAAAA,GAAG,CAACguW,QAAUvrN,CAAAA,KAAAA,EACvB,CACF,CACF,CACF,CACF,EAAA,CACF,CACA,OAAOwH,MACT,CACA,CAAA,MAAMunN,UAAY,CAACxB,IAAAA,CAAMlU,OAASmU,CAAAA,KAAAA,GAAAA,CAChCD,KAAKrwO,KAAK,CAACv7H,OAAO,CAAE4pW,WAClB,GAAIA,QAAAA,CAASlqW,cAAc,CAAC,SAAWkqW,QAASlqW,CAAAA,cAAc,CAAC,MAAA,CAAA,CAAS,CACtE,MAAM2tW,SAAAA,CAAY3V,OAAO,CAACkS,SAAS7sO,IAAI,CAAC,CAAC+0E,MAAM,CAC/Cu7J,UAAUrtW,OAAO,CAAC,IAAC+8H,EAAAA,CACjBA,KAAK7C,IAAI,CAAG2xO,KAAK,CAACjC,SAAS1vO,IAAI,EAAC,CAClC,EACF,CACF,CACF,EAAA,CAAA,CACA,MAAMozO,eAAkB,CAAA,MAAOhwU,OAAQsuU,IAAMxN,CAAAA,WAAAA,CAAan/T,QAAUn6B,CAAAA,OAAAA,GAAAA,CAClE,MAAMknW,UAAalnW,CAAAA,OAAAA,EAASjP,QAAQm2W,UACpC,CAAA,MAAMC,YAAcnnW,OAASjP,EAAAA,MAAAA,EAAQo2W,WACrC,CAAA,GAAID,WAAY,CACdA,UAAAA,CAAWJ,MACb,CACA,GAAIA,KAAK5+I,KAAK,EAAI4+I,IAAK5+I,CAAAA,KAAK,CAAC+D,SAAS,GAAK,YAC3C,CAAA,CAAA,MAAM85I,kBAAoB,IAAIpvW,GAAAA,CAC9B,MAAM8/H,KAAAA,CAAQoxO,YAAYf,IAAM9mW,CAAAA,OAAAA,CAAS+lW,mBACzC,MAAM52G,MAAAA,CAAS44G,aAAajB,IAAMrwO,CAAAA,KAAAA,CAAAA,CAClC,MAAMsqB,MAAAA,CAASonN,aAAarB,IAAMrwO,CAAAA,KAAAA,CAAOz2H,OACzC,CAAA,CAAA,MAAMk9J,QAAUgrM,aAAcpB,CAAAA,IAAAA,CAAMrwO,KAAOz2H,CAAAA,OAAAA,CAAAA,CAC3C,MAAMy/H,QAAW2nO,CAAAA,cAAAA,CAAeN,MAChC,MAAM2B,cAAAA,CAAiB,MAAMjhS,OAAQplC,CAAAA,GAAG,CAACk3T,WAAAA,CAAAA,CACzC,KAAM,CAAEtsJ,MAAM,CAAEuvJ,YAAY,CAAEC,oBAAoB,CAAEC,QAAQ,CAAE,CAAGuK,YAAaxuU,CAAAA,MAAAA,CAAQsuU,KAAM2B,cAAgBzoW,CAAAA,OAAAA,CAAAA,CAC5G,MAAM2oQ,UAAa0+F,CAAAA,gBAAAA,CAAiBP,IAAMrwO,CAAAA,KAAAA,CAAOgyO,eAAgBzoW,OACjEsnW,CAAAA,CAAAA,gBAAAA,CAAiB9uU,OAAQsuU,IAAMf,CAAAA,iBAAAA,CAAmB0C,gBAClD,MAAMC,aAAAA,CAAgB,MAAMlhS,OAAAA,CAAQplC,GAAG,CAACjI,QAAAA,CAAAA,CACxC,MAAMwuU,gBAAmBD,CAAAA,aAAAA,CAActzW,GAAG,CAAEiK,CAAIA,EAAAA,CAAAA,CAAEy2C,QAAQ,CAC1D,CAAA,MAAMsmI,SAAY27E,CAAAA,eAAAA,CAAgB+uG,KAAM6B,gBAAkB3oW,CAAAA,OAAAA,CAAAA,CAC1D,MAAM+mW,KAAAA,CAAQF,YAAYruU,MAAQsuU,CAAAA,IAAAA,CAAMrwO,MAAOgyO,cAC/C,CAAA,CAAA,MAAM7V,QAAU,EAAE,CAClB,IAAI,IAAIrkW,EAAI,CAAGA,CAAAA,CAAAA,CAAIy+M,MAAOx+M,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACpCqkW,OAAO,CAACrkW,EAAE,CAAG,IAAI+jW,MACjBM,CAAAA,OAAO,CAACrkW,CAAE,CAAA,CAACy+M,MAAM,CAAGA,MAAM,CAACz+M,CAAAA,EAAE,CAE/B+5W,UAAUxB,IAAMlU,CAAAA,OAAAA,CAASmU,KACzB,CAAA,CAAA,MAAMz4W,OAAS,IAAIgqW,YACnBhqW,CAAAA,MAAOw4W,CAAAA,IAAI,CAAGA,IACdx4W,CAAAA,MAAOmoI,CAAAA,KAAK,CAAGA,KACfnoI,CAAAA,OAAO6gQ,MAAM,CAAGA,MAChB7gQ,CAAAA,MAAAA,CAAOq6Q,UAAU,CAAGA,UACpBr6Q,CAAAA,MAAAA,CAAO6rC,QAAQ,CAAGuuU,aAClBp6W,CAAAA,MAAO8tL,CAAAA,SAAS,CAAGA,SACnB9tL,CAAAA,MAAOmxI,CAAAA,QAAQ,CAAGA,QAClBnxI,CAAAA,MAAOiuW,CAAAA,YAAY,CAAGA,YACtBjuW,CAAAA,MAAOkuW,CAAAA,oBAAoB,CAAGA,oBAC9BluW,CAAAA,OAAOskW,OAAO,CAAGA,OACjBtkW,CAAAA,OAAOy4W,KAAK,CAAGA,KACfz4W,CAAAA,OAAOyyJ,MAAM,CAAGA,MAChBzyJ,CAAAA,OAAO4uK,OAAO,CAAGA,OACjB5uK,CAAAA,MAAAA,CAAOy3W,iBAAiB,CAAGA,iBAAAA,CAC3B,GAAIoB,WAAAA,CAAa,CACfA,WAAYL,CAAAA,IAAAA,CAAMx4W,MACpB,EAAA,CACA,MAAMk5E,OAAQplC,CAAAA,GAAG,CAACq6T,QAAAA,CAAAA,CAClB,OAAOnuW,MACT,CAAA,CACA,MAAMs6W,YAAe,CAAA,CAACvoU,QAASwoU,WAC7B,GAAA,CAAA,MAAMC,SAAY,CAAA,CAAC5+Q,OAAQi/H,YACzB,GAAA,CAAA,OAAOj/H,QACL,KAAK,IAAA,CACH,OAAO1kE,cACT,CAAA,KAAK,IACH,CAAA,OAAOC,aACT,CAAK,KAAA,IAAA,CACH,OAAOC,6BACT,CAAA,KAAK,KACH,OAAOE,4BACT,CAAK,KAAA,IAAA,CACH,OAAOD,4BACT,CAAA,KAAK,IACH,CAAA,OAAOE,2BACT,CACE,QAAA,OAAOsjM,YACX,CACF,EACA,MAAM4/I,OAAAA,CAAU,CAAC/iL,IAAMmjC,CAAAA,YAAAA,GAAAA,CACrB,OAAOnjC,IACL,EAAA,KAAK,KACH,CAAA,OAAOtjK,qBACT,CAAK,KAAA,KAAA,CACH,OAAOC,uBACT,MAAK,KACH,CAAA,OAAOF,cACT,CAAA,QACE,OAAO0mM,YACX,CACF,EACA,GAAI9oL,OAAAA,CAAS,CACXwoU,WAAcA,CAAAA,WAAAA,EAAe,EAC7BxoU,CAAAA,OAAQpE,CAAAA,SAAS,CAAG6sU,SAAAA,CAAUD,YAAY5sU,SAAS,CAAEpW,2BACrDwa,CAAAA,CAAAA,QAAQjE,SAAS,CAAG0sU,UAAUD,WAAYzsU,CAAAA,SAAS,CAAE3W,aACrD4a,CAAAA,CAAAA,OAAQ/D,CAAAA,QAAQ,CAAGysU,OAAQF,CAAAA,WAAAA,CAAYG,KAAK,CAAEvmV,cAAAA,CAC9C4d,CAAAA,OAAQ7D,CAAAA,QAAQ,CAAGusU,OAAAA,CAAQF,YAAYI,KAAK,CAAExmV,gBAChD,CACF,CAAA,CACA,IAAIymV,mBAAsB,CAAA,CAAA,CAC1B,MAAMC,gBAAAA,CAAmB,WAAeC,EAAAA,WAAAA,CAAYxM,UAAU,EAAEyM,oBAAoBlqU,MAAUiqU,EAAAA,WAAAA,CAAYxM,UAAU,EAAE0M,kBAAkBnqU,MAAUiqU,EAAAA,WAAAA,CAAYjqU,MAAM,CACpK,MAAMoqU,aAAe,CAACzC,IAAAA,CAAMxN,WAAakQ,CAAAA,OAAAA,CAAShmI,SAAUxjO,OAC1D,GAAA,CAAA,GAAI,CAAC8mW,IAAAA,CAAK2C,MAAM,EAAI3C,IAAAA,CAAK2C,MAAM,CAACj7W,MAAM,GAAK,CAAA,CAAG,CAC5C,OAAO,EAAE,CAEX,MAAM04W,UAAalnW,CAAAA,OAAAA,EAAS0yD,OAAOw0S,UACnC,CAAA,MAAMwC,YAAe1pW,CAAAA,OAAAA,EAAS0yD,OAAOg3S,YACrC,CAAA,MAAMvC,WAAcnnW,CAAAA,OAAAA,EAAS0yD,OAAOy0S,WACpC,CAAA,MAAMwC,uBAAyB,CAC7B,WAAA,CAAa,MACb,YAAc,CAAA,KAAA,CACd,aAAe,CAAA,OAAA,CACf,YAAa,KACb,CAAA,YAAA,CAAc,OACd,kBAAoB,CAAA,KACtB,EACA,MAAMC,gBAAAA,CAAmB,IAAC9C,EAAAA,CACxB,MAAMhwW,GAAM,CAAA,IAAIwK,IAChB,GAAIwlW,IAAAA,CAAKlsW,cAAc,CAAC,WAAA,CAAA,CAAc,CACpCksW,IAAAA,CAAK1qL,SAAS,CAAClhL,OAAO,CAAE4nW,eACtB,GAAIA,YAAAA,CAAaloW,cAAc,CAAC,wBAAyB,CACvD,MAAMmoW,QAAUD,YAAaE,CAAAA,oBAAoB,CACjD,GAAID,OAAAA,CAAQnoW,cAAc,CAAC,oBAAqB,CAC9C,MAAMwuW,WAActC,CAAAA,IAAAA,CAAK3sU,QAAQ,CAAC4oU,OAAAA,CAAQG,gBAAgB,CAAC9uW,KAAK,CAAC,CACjE0C,IAAI+H,GAAG,CAACsqW,iBAAiBC,WAC3B,CAAA,EAAA,CACF,CACA,GAAItG,aAAaloW,cAAc,CAAC,iBAAoB,CAAA,CAAA,CAClD,MAAMwuW,WAActC,CAAAA,IAAAA,CAAK3sU,QAAQ,CAAC2oU,aAAaa,eAAe,CAACvvW,KAAK,CAAC,CACrE0C,IAAI+H,GAAG,CAACsqW,gBAAiBC,CAAAA,WAAAA,CAAAA,EAC3B,CACA,GAAItG,YAAAA,CAAaloW,cAAc,CAAC,YAAA,CAAA,CAAe,CAC7C,MAAM4pN,KAAAA,CAAQs+I,YAAalG,CAAAA,UAAU,CAACiN,mBAAmB,CACzD,GAAIrlJ,KAAO,CAAA,CACT,GAAIA,KAAM5pN,CAAAA,cAAc,CAAC,mBAAA,CAAA,CAAsB,CAC7C,MAAMwuW,WAAAA,CAActC,IAAK3sU,CAAAA,QAAQ,CAACqqL,KAAM08I,CAAAA,iBAAiB,CAAC9sW,KAAK,CAAC,CAChE0C,GAAAA,CAAI+H,GAAG,CAACsqW,gBAAAA,CAAiBC,cAC3B,CACF,CACA,MAAMU,kBAAAA,CAAqBhH,aAAalG,UAAU,CAACmN,mCAAmC,CACtF,GAAID,kBAAoB,CAAA,CACtB,GAAIA,kBAAAA,CAAmBlvW,cAAc,CAAC,2BAAA,CAAA,CAA8B,CAClE,MAAMwuW,WAAAA,CAActC,KAAK3sU,QAAQ,CAAC2vU,kBAAmBrL,CAAAA,yBAAyB,CAACrqW,KAAK,CAAC,CACrF0C,GAAAA,CAAI+H,GAAG,CAACsqW,gBAAAA,CAAiBC,WAC3B,CAAA,EAAA,CACF,CACA,MAAM/nJ,QAAAA,CAAWyhJ,aAAalG,UAAU,CAACoN,sBAAsB,CAC/D,GAAI3oJ,QAAU,CAAA,CACZ,GAAIA,QAASzmN,CAAAA,cAAc,CAAC,sBAAyB,CAAA,CAAA,CACnD,MAAMwuW,WAActC,CAAAA,IAAAA,CAAK3sU,QAAQ,CAACknL,SAASg/I,oBAAoB,CAACjsW,KAAK,CAAC,CACtE0C,IAAI+H,GAAG,CAACsqW,gBAAiBC,CAAAA,WAAAA,CAAAA,EAC3B,CACF,CACF,CACF,CACF,EAAA,CACA,OAAOtyW,GACT,CAAA,CACA,MAAMmzW,WAAAA,CAAc,CAACC,SAAW9wW,CAAAA,GAAAA,CAAKugW,WAAYwQ,QAAUnqW,CAAAA,OAAAA,CAAS+qB,QAClE,OAAO,IAAIy8C,OAAQ,CAAA,CAAC5uC,QAASu1C,MAC3B,GAAA,CAAA,MAAM+5J,YAAe,CAACugI,iBACpB,MAAM52W,IAAAA,CAAO,CAAC,EAAEq4W,UAAUr4W,IAAI,EAAI,eAAe,CAAC,EAAEq3W,sBAAsB,CAAC,CAC3E,MAAM3lI,IAAAA,CAAO,CACXnqO,GAAKA,CAAAA,GAAAA,EAAOvH,IACd,CAAA,CACA,GAAI42W,cAAgB,CAAA,CAClBllI,IAAKV,CAAAA,QAAQ,CAAG4lI,cAAer5W,CAAAA,KAAK,CAAC,CAAG6Z,CAAAA,CAAAA,OAAM,CAEhD,GAAIkhW,QAAU,CAAA,CACZ,MAAMnzS,SAAY2yS,CAAAA,sBAAsB,CAACQ,QAAS,CAAA,CAClD,GAAInzS,SAAW,CAAA,CACbusK,IAAKX,CAAAA,QAAQ,CAAG,CAAC,EAAEW,KAAKnqO,GAAG,CAAC,CAAC,EAAE49D,SAAAA,CAAU,EAC3C,CACF,CACA,MAAMzuD,IAAO,CAAA,CACXwiB,IACF,CACA,CAAA,MAAMm9L,KAAQ,CAAA,IAAIob,MAAMzxO,IAAM,CAAA,SAAA,CAAW0xO,KAAMh7N,IAAMvI,CAAAA,OAAAA,CAAAA,CACrDkoN,MAAMtyN,EAAE,CAAC,MAAQ,CAACsyN,OAAQtvL,OAAQsvL,CAAAA,KAAAA,CAAAA,CAAAA,CAClCA,KAAMtyN,CAAAA,EAAE,CAAC,OAAS,CAACwE,GAAM+zE,EAAAA,MAAAA,CAAO/zE,MAChCopO,QAAS3kO,CAAAA,GAAG,CAACqpN,KACbsb,CAAAA,CAAAA,QAAAA,CAASiB,IAAI,CAACvc,KAAAA,EAChB,CACA,CAAA,GAAIyxI,WAAY,CACdA,UAAAA,CAAWn/V,IAAI,CAAC,cAAkB0tO,EAAAA,YAAAA,CAAaugI,cACjD,CAAA,EAAA,CAAA,KAAO,CACLvgI,YAAa,CAAA,IAAA,EACf,CACF,CACF,CAAA,CAAA,CACA,MAAMkiI,aAAgBR,CAAAA,gBAAAA,CAAiB9C,IACvC,CAAA,CAAA,OAAOA,KAAK2C,MAAM,CAACr0W,GAAG,CAAC,CAAC80W,UAAW37W,CACjC,GAAA,CAAA,GAAI24W,UAAY,CAAA,CACdA,WAAWgD,SACb,EAAA,CACA,IAAIG,OACJ,CAAA,GAAIX,aAAc,CAChBW,OAAAA,CAAU,IAAI7iS,OAAAA,CAAQ,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC9Bu7R,YAAaQ,CAAAA,SAAAA,CAAW,CAAC9vW,GAAKquQ,CAAAA,YAAAA,GAAAA,CAC5B,GAAIruQ,GAAAA,CAAK,CACP+zE,MAAO/zE,CAAAA,GAAAA,EACT,MAAO,CACLw+B,OAAAA,CAAQ6vO,cACV,CACF,CAAA,EACF,CACF,EAAA,CAAA,KAAO,CACL4hG,OAAU,CAAA,IAAI7iS,OAAQ,CAAC5uC,UACrBA,OAAQ,CAAA,IAAA,EACV,CACF,EAAA,CACAyxU,QAAUA,OAAQ7vW,CAAAA,IAAI,CAAC,YAACiuQ,EAAAA,CACtB,MAAM19O,IAAOq/U,CAAAA,aAAAA,CAAcvzW,GAAG,CAACtI,GAC/B,GAAIk6Q,YAAAA,CAAc,CAChB,OAAOA,YACT,CAAO,KAAA,GAAIyhG,SAAUtvW,CAAAA,cAAc,CAAC,KAAQ,CAAA,CAAA,CAC1C,GAAI29V,SAAU2R,CAAAA,SAAAA,CAAUjpW,GAAG,CAAG,CAAA,CAC5B,OAAOgpW,WAAAA,CAAYC,UAAWA,SAAUjpW,CAAAA,GAAG,CAAE,IAAMu3V,CAAAA,kBAAAA,CAAmB0R,UAAUjpW,GAAG,CAAA,CAAG,IAAM8pB,CAAAA,IAAAA,CAC9F,CACA,OAAOk/U,WAAAA,CAAYC,UAAWvoI,YAAa1wO,CAAAA,IAAI,CAACi5W,SAAUjpW,CAAAA,GAAG,CAAIipW,CAAAA,SAAAA,CAAUjpW,GAAG,CAAG/S,IAAAA,CAAKE,IAAI,CAACo7W,QAASU,SAAUjpW,CAAAA,GAAG,CAAG,CAAA,IAAA,CAAM,KAAM,CAC9HqpW,WAAAA,CAAa,WACf,CAAGv/U,CAAAA,IAAAA,CACL,MAAO,GAAIm/U,SAAAA,CAAUtvW,cAAc,CAAC,eAAiBsvW,SAAUtvW,CAAAA,cAAc,CAAC,UAAA,CAAA,CAAa,CACzF,OAAOqvW,WAAAA,CAAYC,SAAW,CAAA,IAAA,CAAM5Q,WAAW,CAAC4Q,SAAAA,CAAUvQ,UAAU,CAAC,CAAEuQ,UAAUC,QAAQ,CAAE,IAAMp/U,CAAAA,IAAAA,CACnG,CACA,OAAOy8C,OAAAA,CAAQ2G,MAAM,CAAC,IAAI11E,KAAM,CAAA,CAAC,qEAAqE,EAAElK,EAAE,CAAC,CAAA,CAC7G,GACA,GAAI44W,WAAAA,CAAa,CACfkD,OAAUA,CAAAA,OAAAA,CAAQ7vW,IAAI,CAAC,YACrB2sW,EAAAA,CAAAA,WAAAA,CAAY+C,UAAWzhG,YACvB,CAAA,CAAA,OAAOA,YACT,CACF,EAAA,CACA,OAAO4hG,OACT,EACF,CACA,CAAA,MAAME,eAAiB,CAACzD,IAAAA,CAAM2C,OAAQzpW,OACpC,GAAA,CAAA,GAAI,CAAC8mW,IAAAA,EAAM2C,QAAQj7W,MAAU,EAAA,CAACs4W,IAAM3sU,EAAAA,QAAAA,EAAU3rC,OAAQ,CACpD,OAAO,EACT,CACA,MAAM04W,UAAAA,CAAalnW,SAASqgC,OAAS6mU,EAAAA,UAAAA,CACrC,MAAMwC,YAAe1pW,CAAAA,OAAAA,EAASqgC,OAASqpU,EAAAA,YAAAA,CACvC,MAAMvC,WAAcnnW,CAAAA,OAAAA,EAASqgC,OAAS8mU,EAAAA,WAAAA,CACtC,MAAMqD,UAAa,CAAA,IAAIlpW,GACvB,CAAA,OAAOwlW,KAAK3sU,QAAQ,CAAC/kC,GAAG,CAAEg0W,cACxB,GAAIlC,UAAAA,CAAY,CACdA,UAAAA,CAAWkC,aACb,CACA,IAAIiB,OACJ,CAAA,GAAIX,aAAc,CAChBW,OAAAA,CAAU,IAAI7iS,OAAAA,CAAQ,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC9Bu7R,aAAaN,WAAatC,CAAAA,IAAAA,CAAK2C,MAAM,CAAE,CAACrvW,GAAKqwW,CAAAA,cAAAA,GAAAA,CAC3C,GAAIrwW,GAAK,CAAA,CACP+zE,OAAO/zE,GACT,EAAA,CAAA,KAAO,CACLw+B,OAAQ6xU,CAAAA,cAAAA,EACV,CACF,CAAA,EACF,GACF,CAAO,KAAA,CACLJ,QAAU,IAAI7iS,OAAAA,CAAQ,OACpB5uC,EAAAA,CAAAA,OAAAA,CAAQ,IACV,EAAA,CAAA,EACF,CACAyxU,OAAUA,CAAAA,OAAAA,CAAQ7vW,IAAI,CAAC,cACrBiwW,EAAAA,CAAAA,cAAAA,CAAiBA,cAAkBtB,EAAAA,gBAAAA,CAAiBC,aACpD,MAAMsB,UAAAA,CAAaF,WAAW3zW,GAAG,CAAC4zW,gBAClCD,UAAW3rW,CAAAA,GAAG,CAAC4rW,cAAAA,CAAAA,CACf,OAAOhB,MAAM,CAACgB,cAAe,CAAA,CAACjwW,IAAI,CAAEmwW,UAClC,EAAA,CAAA,MAAMziJ,MAAQwiJ,UAAa9P,CAAAA,iBAAAA,CAAkB+P,YAAcA,UAC3D/B,CAAAA,YAAAA,CAAa1gJ,MAAMpyK,QAAQ,CAAE,CAACgxT,KAAK71S,QAAQ,EAAI,EAAC,EAAGm4S,WAAAA,CAAYjzT,OAAO,CAAC,EACvE,OAAO+xK,KACT,EACF,CACA,CAAA,CAAA,GAAIi/I,YAAa,CACfkD,OAAAA,CAAUA,OAAQ7vW,CAAAA,IAAI,CAAC,YAACiuQ,EAAAA,CACtB0+F,YAAYiC,WAAa3gG,CAAAA,YAAAA,CAAAA,CACzB,OAAOA,YACT,CAAA,EACF,CACA,OAAO4hG,OACT,CACF,CAAA,CAAA,CACA,MAAMO,WAAc,CAAA,CAAC9D,KAAM+D,WAAarB,CAAAA,OAAAA,CAASxpW,OAC/C,GAAA,CAAA,GAAI,CAAC8mW,IAAKngU,CAAAA,OAAO,EAAImgU,IAAAA,CAAKngU,OAAO,CAACn4C,MAAM,GAAK,CAAA,CAAG,CAC9C,OAAO,EAAE,CAEX,MAAM04W,WAAalnW,OAASiJ,EAAAA,MAAAA,EAAQi+V,UACpC,CAAA,MAAMwC,aAAe1pW,OAASiJ,EAAAA,MAAAA,EAAQygW,YACtC,CAAA,MAAMvC,YAAcnnW,OAASiJ,EAAAA,MAAAA,EAAQk+V,WACrC,CAAA,OAAOL,KAAKngU,OAAO,CAACvxC,GAAG,CAAC,CAAC01W,WAAYv8W,CACnC,GAAA,CAAA,GAAI24W,UAAY,CAAA,CACdA,WAAW4D,UACb,EAAA,CACA,IAAIT,OAAAA,CACJ,GAAIX,YAAc,CAAA,CAChBW,OAAU,CAAA,IAAI7iS,QAAQ,CAAC5uC,OAAAA,CAASu1C,UAC9Bu7R,YAAaoB,CAAAA,UAAAA,CAAY,CAAC1wW,GAAKo9V,CAAAA,WAAAA,GAAAA,CAC7B,GAAIp9V,GAAAA,CAAK,CACP+zE,MAAO/zE,CAAAA,GAAAA,EACT,MAAO,CACLw+B,OAAAA,CAAQ4+T,aACV,CACF,CAAA,EACF,CACF,EAAA,CAAA,KAAO,CACL6S,OAAU,CAAA,IAAI7iS,QAAQ,OAAC5uC,EAAAA,CACrBA,QAAQ,IACV,EAAA,CAAA,EACF,CACAyxU,OAAAA,CAAUA,QAAQ7vW,IAAI,CAAC,WAACg9V,EAAAA,CACtB,GAAIA,WAAa,CAAA,CACf,OAAOA,WACT,MAAO,GAAIsT,UAAAA,CAAWlwW,cAAc,CAAC,KAAA,CAAA,CAAQ,CAC3C,GAAI29V,SAAAA,CAAUuS,UAAW7pW,CAAAA,GAAG,EAAG,CAC7B,MAAM8pW,UAAavoN,CAAAA,IAAAA,CAAKsoN,WAAW7pW,GAAG,CAAC/R,KAAK,CAAC,IAAI,CAAC,CAAA,CAAE,EACpD,MAAM87W,WAAAA,CAAc,IAAI1vW,UAAWyvW,CAAAA,UAAAA,CAAWv8W,MAAM,CAAA,CACpD,IAAI,IAAIsmF,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIi2R,WAAWv8W,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACxCk2R,WAAW,CAACl2R,CAAAA,CAAE,CAAGi2R,UAAWp3W,CAAAA,UAAU,CAACmhF,CACzC,EAAA,CACA,OAAOk2R,WACT,CACA,OAAO,IAAIxjS,QAAQ,CAAC5uC,OAAAA,CAASu1C,UAC3BqqC,IAAKloH,CAAAA,GAAG,CAACqxO,YAAAA,CAAa1wO,IAAI,CAAC65W,UAAAA,CAAW7pW,GAAG,CAAI6pW,CAAAA,UAAAA,CAAW7pW,GAAG,CAAG/S,IAAAA,CAAKE,IAAI,CAACo7W,QAASsB,UAAW7pW,CAAAA,GAAG,CAAG,CAAA,CAChGu/B,MAAO,IACPs1E,CAAAA,YAAAA,CAAc,aACdrB,CAAAA,KAAAA,CAAO,KACT,CAAG,CAAA,CAACr6G,IAAK9L,MACP,GAAA,CAAA,GAAI8L,IAAK,CACP+zE,MAAAA,CAAO/zE,GACT,EAAA,CAAA,KAAO,CACLw+B,OAAQ,CAAA,IAAIt9B,UAAWhN,CAAAA,MAAAA,CAAAA,EACzB,CACF,CACF,EAAA,CAAA,CACF,CACA,OAAOu8W,WACT,CACA,CAAA,CAAA,GAAI1D,YAAa,CACfkD,OAAAA,CAAUA,QAAQ7vW,IAAI,CAAC,MAACyO,EAAAA,CACtBk+V,YAAYL,IAAKngU,CAAAA,OAAO,CAACp4C,CAAAA,CAAE,CAAE0a,MAC7B,CAAA,CAAA,OAAOA,MACT,CAAA,EACF,CACA,OAAOohW,OACT,EACF,CACA,CAAA,MAAMY,UAAY,CAACC,SAAAA,CAAWr1W,QAC5B,GAAA,CAAA,MAAMs1W,iBAAmB,KAACvtU,EAAAA,CACxB,GAAI,OAAOstM,WAAAA,GAAgB,YAAa,CACtC,OAAO,IAAIA,WAAAA,EAAAA,CAAcC,MAAM,CAACvtM,KAAAA,CAClC,CACA,IAAI6J,GAAAA,CAAM,GACV,IAAI,IAAIl5C,CAAI,CAAA,CAAA,CAAGA,EAAIqvC,KAAMpvC,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACnCk5C,GAAOpyC,EAAAA,MAAAA,CAAOC,YAAY,CAACsoC,KAAK,CAACrvC,CAAAA,CAAE,EACrC,CACA,OAAOmS,mBAAmB+lQ,MAAOh/N,CAAAA,GAAAA,CAAAA,CACnC,CACA,CAAA,MAAMq/T,KAAOvxP,IAAKsC,CAAAA,KAAK,CAACszP,gBAAAA,CAAiBD,YACzC,GAAIpE,IAAAA,CAAK5+I,KAAK,EAAI4+I,KAAK5+I,KAAK,CAACl7N,OAAO,EAAI4oE,UAAAA,CAAWkxS,KAAK5+I,KAAK,CAACl7N,OAAO,CAAA,CAAI,EAAG,CAC1E6I,QAAAA,CAAS,CAAC,uEAAuE,EAAEixW,IAAK5+I,CAAAA,KAAK,CAACl7N,OAAO,CAAC,EAAE,CAAC,EACzG,MACF,CACA6I,SAAS,IAAMixW,CAAAA,IAAAA,EACjB,CACA,CAAA,MAAMsE,SAAW,CAACC,OAAAA,CAASx1W,YACzB,MAAM0S,IAAAA,CAAO8iW,mBAAmBpsU,WAAc,CAAA,IAAI1hC,QAAS8tW,CAAAA,OAAAA,CAAAA,CAAW,IAAI9tW,QAAS8tW,CAAAA,OAAAA,CAAQpiW,MAAM,CAAEoiW,OAAAA,CAAQ9yT,UAAU,CAAE8yT,OAAAA,CAAQrvW,UAAU,CAAA,CACzI,MAAMsvW,KAAQ/iW,CAAAA,IAAAA,CAAKvL,SAAS,CAAC,EAAG,IAChC,CAAA,CAAA,MAAMhQ,OAAUub,CAAAA,IAAAA,CAAKvL,SAAS,CAAC,CAAA,CAAG,MAClC,MAAMxO,MAAAA,CAAS+Z,KAAKvL,SAAS,CAAC,CAAG,CAAA,IAAA,CAAA,CACjC,GAAIsuW,KAAU,GAAA,UAAA,CAAY,CACxBz1W,QAAAA,CAAS,CAAC,uEAAuE,EAAEy1W,KAAMr9W,CAAAA,QAAQ,CAAC,EAAI,CAAA,CAAA,CAAC,EACvG,MACF,CACA,GAAIjB,OAAY,GAAA,CAAA,CAAG,CACjB6I,QAAAA,CAAS,CAAC,8DAA8D,EAAE7I,OAAQ,CAAA,CAAC,EACnF,MACF,CACA,GAAIwB,MAAAA,EAAU,GAAKA,MAAS+Z,CAAAA,IAAAA,CAAKvM,UAAU,CAAE,CAC3CnG,SAAS,CAAC,0CAA0C,EAAErH,MAAAA,CAAO,CAAC,CAC9D,CAAA,MACF,CACA,MAAMs6J,MAAAA,CAAS,EAAE,CACjB,IAAI7sJ,MAAS,CAAA,EAAA,CACb,MAAMA,MAASzN,CAAAA,MAAAA,CAAO,CACpB,MAAM+8W,WAAAA,CAAchjW,KAAKvL,SAAS,CAACf,MAAQ,CAAA,IAAA,CAAA,CAC3C,GAAIA,MAASsvW,CAAAA,WAAAA,CAAc,CAAIhjW,CAAAA,IAAAA,CAAKvM,UAAU,CAAE,CAC9CnG,QAAS,CAAA,CAAC,yCAAyC,EAAE01W,WAAAA,CAAY,CAAC,EACpE,CACA,MAAMC,SAAYjjW,CAAAA,IAAAA,CAAKvL,SAAS,CAACf,OAAS,CAAG,CAAA,IAAA,CAAA,CAC7C,MAAMwvW,SAAAA,CAAY,IAAInwW,UAAWiN,CAAAA,IAAAA,CAAKU,MAAM,CAAEV,KAAKgwC,UAAU,CAAGt8C,OAAS,CAAGsvW,CAAAA,WAAAA,CAAAA,CAC5EziN,OAAOz5J,IAAI,CAAC,CACVb,MAAAA,CAAQ+8W,YACRvlW,IAAMwlW,CAAAA,SAAAA,CACNjjW,IAAMkjW,CAAAA,SACR,GACAxvW,MAAUsvW,EAAAA,WAAAA,CAAc,EAC1B,CACA,GAAIziN,MAAOt6J,CAAAA,MAAM,GAAK,CAAKs6J,EAAAA,MAAAA,CAAOt6J,MAAM,GAAK,CAAA,CAAG,CAC9CqH,QAAAA,CAAS,+CACT,MACF,CACA,GAAIizJ,MAAM,CAAC,EAAE,CAAC9iJ,IAAI,GAAK,UAAA,CAAY,CACjCnQ,QAAS,CAAA,CAAC,mEAAmE,EAAEizJ,MAAM,CAAC,CAAE,CAAA,CAAC9iJ,IAAI,CAAC/X,QAAQ,CAAC,EAAA,CAAA,CAAI,CAAC,CAAA,CAC5G,MACF,CACA,GAAI66J,MAAOt6J,CAAAA,MAAM,CAAG,CAAKs6J,EAAAA,MAAM,CAAC,CAAE,CAAA,CAAC9iJ,IAAI,GAAK,OAAA,CAAY,CACtDnQ,QAAAA,CAAS,CAAC,mEAAmE,EAAEizJ,MAAM,CAAC,EAAE,CAAC9iJ,IAAI,CAAC/X,QAAQ,CAAC,EAAI,CAAA,CAAA,CAAC,EAC5G,MACF,CACA4H,SAAS,IAAM,CAAA,CACbq1W,SAAWpiN,CAAAA,MAAM,CAAC,CAAE,CAAA,CAACvgJ,IAAI,CACzBsiW,YAAa/hN,MAAOt6J,CAAAA,MAAM,GAAK,CAAA,CAAIs6J,MAAM,CAAC,CAAA,CAAE,CAACvgJ,IAAI,CAAG,IACtD,CACF,EAAA,CAAA,CACA,MAAMmjW,UAAAA,CAAa,CAAC9oI,QAAUr6N,CAAAA,IAAAA,CAAM1S,YAClC,MAAM81W,YAAAA,CAAe,KACnB,MAAMC,EAAAA,CAAK,IAAItwW,UAAAA,CAAWiN,MAC1B,OAAOqjW,EAAE,CAAC,CAAE,CAAA,GAAK,KAAOA,EAAE,CAAC,CAAE,CAAA,GAAK,KAAOA,EAAE,CAAC,CAAE,CAAA,GAAK,IAAMA,EAAE,CAAC,CAAE,CAAA,GAAK,EACrE,CACA,CAAA,GAAIhpI,UAAYA,QAAStsH,CAAAA,WAAW,GAAGtnH,QAAQ,CAAC,MAAW28W,CAAAA,EAAAA,YAAAA,EAAAA,CAAgB,CACzEP,QAAS7iW,CAAAA,IAAAA,CAAM1S,QACjB,EAAA,CAAA,KAAO,CACLA,QAAS,CAAA,IAAA,CAAM,CACbq1W,SAAAA,CAAW3iW,KACXsiW,WAAa,CAAA,IACf,GACF,CACF,CAAA,CACA,MAAMgB,iBAAoB,CAAA,CAAC/E,IAAMngU,CAAAA,OAAAA,CAAS3mC,WACxC,MAAM1R,MAAAA,CAAS,EAAE,CACjB,MAAM44W,UAAalnW,CAAAA,OAAAA,EAAS25V,UAAYuN,EAAAA,UAAAA,CACxC,MAAMwC,YAAe1pW,CAAAA,OAAAA,EAAS25V,YAAY+P,YAC1C,CAAA,MAAMvC,YAAcnnW,OAAS25V,EAAAA,UAAAA,EAAYwN,WACzC,CAAA,GAAI,CAACL,IAAKxN,CAAAA,WAAW,EAAE9qW,MAAQ,CAAA,CAC7B,OAAOF,MACT,CACA,IAAI,IAAIC,EAAI,CAAGA,CAAAA,CAAAA,CAAIu4W,KAAKxN,WAAW,CAAC9qW,MAAM,CAAE,EAAED,CAAE,CAAA,CAC9C,MAAMu9W,cAAiBhF,CAAAA,IAAAA,CAAKxN,WAAW,CAAC/qW,EAAE,CAC1C,GAAI24W,UAAY,CAAA,CACdA,WAAW4E,cACb,EAAA,CACA,IAAIzB,OACJ,CAAA,GAAIX,aAAc,CAChBW,OAAAA,CAAU,IAAI7iS,OAAAA,CAAQ,CAAC5uC,OAASu1C,CAAAA,MAAAA,GAAAA,CAC9Bu7R,YAAaoC,CAAAA,cAAAA,CAAgBnlU,QAAS,CAACvsC,GAAAA,CAAK9L,MAC1C,GAAA,CAAA,GAAI8L,IAAK,CACP+zE,MAAAA,CAAO/zE,KACT,CAAO,KAAA,CACLw+B,QAAQtqC,MACV,EAAA,CACF,CACF,EAAA,CAAA,EACF,MAAO,CACL+7W,OAAAA,CAAU,IAAI7iS,OAAAA,CAAQ,OACpB5uC,EAAAA,CAAAA,OAAAA,CAAQ,IACV,EAAA,CAAA,EACF,CACAyxU,OAAUA,CAAAA,OAAAA,CAAQ7vW,IAAI,CAAEyO,SACtB,GAAIA,MAAAA,CAAQ,CACV,OAAOA,MACT,CACA,OAAO09B,OAAO,CAACmlU,cAAAA,CAAe7iW,MAAM,CAAC,CAACzO,IAAI,CAAC,MACzC,EAAA,CAAA,OAAO,IAAIc,UAAW2N,CAAAA,MAAAA,CAAOA,MAAM,CAAEA,MAAAA,CAAOsvC,UAAU,EAAIuzT,cAAevzT,CAAAA,UAAU,EAAI,CAAA,EAAIuzT,cAAe9vW,CAAAA,UAAU,CACtH,CAAA,CACF,GACA,GAAI8vW,cAAAA,CAAelxW,cAAc,CAAC,YAAA,CAAA,CAAe,CAC/CyvW,OAAUA,CAAAA,OAAAA,CAAQ7vW,IAAI,CAAC,UACrBi5V,EAAAA,CAAAA,UAAAA,CAAWqG,UAAU,CAAGgS,eAAehS,UAAU,CACjD,OAAOrG,UACT,GACF,CACA,GAAI0T,YAAa,CACfkD,OAAAA,CAAUA,QAAQ7vW,IAAI,CAAC,UAACi5V,EAAAA,CACtB0T,YAAY2E,cAAgBrY,CAAAA,UAAAA,CAAAA,CAC5B,OAAOA,UACT,GACF,CACAnlW,MAAAA,CAAOe,IAAI,CAACg7W,SACd,CACA,OAAO/7W,MACT,CACA,CAAA,MAAMy9W,UACJ,OAAOl0P,KAAAA,CAAM+qH,QAAQ,CAAE4mI,OAAO,CAAEjhW,IAAI,CAAEiwB,MAAM,CAAEgrM,QAAQ,CAAExjO,OAAO,CAAEnK,QAAQ,CAAE,CACzE61W,UAAAA,CAAW9oI,SAAUr6N,IAAM,CAAA,CAACnO,IAAK0uJ,MAC/B,GAAA,CAAA,GAAI1uJ,GAAK,CAAA,CACPvE,SAASuE,GACT,CAAA,CAAA,MACF,CACA6wW,SAAAA,CAAUniN,OAAOoiN,SAAS,CAAE,CAAC9wW,GAAAA,CAAK0sW,QAChC,GAAI1sW,GAAAA,CAAK,CACPvE,QAASuE,CAAAA,GAAAA,CAAAA,CACT,MACF,CACA,MAAMusC,OAAUikU,CAAAA,WAAAA,CAAY9D,KAAMh+M,MAAO+hN,CAAAA,WAAW,CAAErB,OAAAA,CAASxpW,SAC/D,MAAMs5V,WAAAA,CAAcuS,iBAAkB/E,CAAAA,IAAAA,CAAMngU,QAAS3mC,OACrD,CAAA,CAAA,MAAMypW,OAASF,YAAazC,CAAAA,IAAAA,CAAMxN,YAAakQ,OAAShmI,CAAAA,QAAAA,CAAUxjO,OAClE,CAAA,CAAA,MAAMm6B,SAAWowU,cAAezD,CAAAA,IAAAA,CAAM2C,MAAQzpW,CAAAA,OAAAA,CAAAA,CAC9CwoW,gBAAgBhwU,MAAQsuU,CAAAA,IAAAA,CAAMxN,WAAan/T,CAAAA,QAAAA,CAAUn6B,SAASxF,IAAI,CAAC,MAAU3E,EAAAA,QAAAA,CAAS,KAAMvH,MAAS8/F,CAAAA,CAAAA,CAAAA,KAAK,CAAEh0F,KAAMvE,QAASuE,CAAAA,GAAAA,CAAAA,EAC7H,GACF,CACF,EAAA,CACA,OAAO4xW,qBAAwB,EAAA,CAC7B,OAAO9qK,cAAAA,CAAe,CACpBrvM,IAAM,CAAA,oBACR,EAAG,EAAE,CACP,CACF,CAEA,MAAMo6W,gBAAyBpgI,SAAAA,eAAAA,CAM7BpH,KAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,MAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,MAAM4G,OAAU,CAAA,CACdy0G,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAE7B,CAAA,GAAIx7G,IAAIqrO,IAAI,CAAC31O,UAAU,CAAC,UAAYsK,GAAIqrO,CAAAA,IAAI,CAAC31O,UAAU,CAAC,OAAU,CAAA,CAAA,CAChE,GAAIZ,IAAAA,CAAKyB,YAAY,CAACyJ,GAAAA,CAAI62D,QAAQ,CAAEqmD,CAAAA,WAAW,KAAO,MAAQ,CAAA,CAC5Dt2G,OAAQ81G,CAAAA,YAAY,CAAGhC,IAAK0C,CAAAA,YAAY,CAAC/mC,aAC3C,MAAO,CACLzvE,OAAAA,CAAQ81G,YAAY,CAAGhC,KAAK0C,YAAY,CAACjB,KAAI,CAEjD,CACAiD,IAAKloH,CAAAA,GAAG,CAAC8I,GAAAA,CAAIqrO,IAAI,CAAEzkO,OAAAA,CAAS,CAAC5F,GAAAA,CAAKu9G,YAChC,GAAIv9G,GAAAA,CAAK,CACPvE,QAAAA,CAAS,CAAC,kCAAkC,EAAEuD,IAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EACvE,CAAO,KAAA,CACL,GAAIlM,IAAAA,CAAKyB,YAAY,CAACyJ,GAAAA,CAAI62D,QAAQ,CAAA,CAAEqmD,WAAW,EAAO,GAAA,MAAA,CAAQ,CAC5Dy1P,SAAUl0P,CAAAA,KAAK,CAAC,cAAgB,CAAA,EAAA,CAAIF,QAAU,CAAA,IAAI,CAACn/E,MAAM,CAAE,IAAI,CAAC8tM,MAAM,CAAEpe,KAAAA,EAAOloN,OAAW,EAAA,GAAI,CAAC5F,GAAAA,CAAK8xW,eAClG,GAAI9xW,GAAAA,CAAK,CACPvE,QAASuE,CAAAA,GAAAA,EACX,CAAO,KAAA,CACL,MAAMuuQ,UAAaujG,CAAAA,WAAAA,CAAYvjG,UAAU,CACzC,GAAIzgD,OAAO3/M,IAAMg3P,EAAAA,MAAAA,CAAQ,CACvB,IAAI,IAAIhxQ,CAAI,CAAA,CAAA,CAAGA,EAAIo6Q,UAAWn6Q,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACxCo6Q,UAAU,CAACp6Q,EAAE,CAACgxQ,MAAM,CAAG,IAAIsG,WAAWz1Q,MAAO8G,CAAAA,MAAM,CAACgxN,KAAAA,CAAM3/M,IAAI,CAACg3P,MAAM,GACvE,CACF,CACA2sG,YAAYx0U,OAAO,EAAA,CACnB7hC,QAAS,CAAA,IAAA,CAAM8yQ,YACjB,CACF,CAAA,EACF,CAAO,KAAA,CACL9yQ,SAAS,IAAM,CAAA,IAAI,CAAC,CAAC,gBAAgB,EAAE8hH,QAAAA,CAAS43F,SAAS,CAACviN,OAAO,CAAC,CAAC,CAAC,CAAC2qH,QAAAA,CAAAA,EACvE,CACF,CACF,CAAA,EACF,CACA/B,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,OAAO3/M,IACT,CACA4jW,iBAAAA,CAAkB5jW,IAAI,CAAE,CACtB,MAAM6jW,QAAAA,CAAW7jW,KAAKgnM,SAAS,CAC/B,MAAMgkC,IAAO,CAAA,IAAI9kC,SACjB8kC,CAAAA,IAAAA,CAAK1hP,IAAI,CAAGu6W,SAASv6W,IACrB0hP,CAAAA,IAAKtyJ,CAAAA,QAAQ,CAAGmrR,QAASnrR,CAAAA,QAAQ,CACjC,IAAI,IAAI1yF,CAAI,CAAA,CAAA,CAAGA,CAAI69W,CAAAA,QAAAA,CAAS31O,KAAK,CAACjoI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC5C,MAAMowI,IAAAA,CAAO,IAAI4vE,aACjB,CAAA,MAAM5vL,EAAIytV,QAAS31O,CAAAA,KAAK,CAACloI,CAAAA,CAAE,CAC3BowI,IAAAA,CAAKvlC,KAAK,CAAGz6E,EAAE9sB,IAAI,CACnB,IAAI,IAAIijF,EAAI,CAAGA,CAAAA,CAAAA,CAAIn2D,EAAEnY,IAAI,CAAChY,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACpC,MAAM+6C,EAAIlxG,CAAEnY,CAAAA,IAAI,CAACsuE,CAAAA,CAAE,CACnB,MAAMz1E,CAAAA,CAAIwwH,CAAElqH,CAAAA,IAAI,CAChB,MAAMub,CAAAA,CAAI2uG,EAAE+sB,GAAG,CACf,MAAM/uJ,CAAIgiI,CAAAA,CAAAA,CAAEkpB,GAAG,CACf,MAAMzkJ,CAAIu7H,CAAAA,CAAAA,CAAEh/G,KAAK,CACjB,MAAM+rI,IAAM,IAAIpyI,IAAAA,CAAK0W,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,CACrC,CAAA,MAAM63H,IAAM,IAAI3iI,IAAAA,EAAAA,CAAOX,kBAAkB,CAAC5nB,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,EAC1D,MAAMspL,GAAAA,CAAM,IAAI3sK,IAAAA,CAAKlW,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,EAAE,CACrC,CAAA,MAAM8B,IAAM,IAAIk4M,YAAAA,CAAajvM,EAAGu9I,GAAK7D,CAAAA,GAAAA,CAAKo+B,GAC1Cx4C,CAAAA,CAAAA,IAAAA,CAAK6vE,KAAK,CAACn/M,IAAI,CAAC+G,GAAAA,EAClB,CACAm9O,IAAK3kC,CAAAA,OAAO,CAACjwE,IAAAA,EACf,CACA,OAAO40G,IACT,CACA84H,iBAAkB9jW,CAAAA,IAAI,CAAE,CACtB,MAAM6jW,QAAW7jW,CAAAA,IAAAA,CAAKgnM,SAAS,CAC/B,MAAMgkC,KAAO,IAAI9kC,SACjB8kC,CAAAA,IAAK1hP,CAAAA,IAAI,CAAGu6W,QAAAA,CAASv6W,IAAI,CACzB0hP,KAAKtyJ,QAAQ,CAAGmrR,SAASnrR,QAAQ,CACjC,IAAI,IAAI1yF,EAAI,CAAGA,CAAAA,CAAAA,CAAI69W,QAAS31O,CAAAA,KAAK,CAACjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAMowI,IAAO,CAAA,IAAI4vE,cACjB,MAAM5vL,CAAAA,CAAIytV,SAAS31O,KAAK,CAACloI,CAAE,CAC3BowI,CAAAA,IAAKvlC,CAAAA,KAAK,CAAGz6E,CAAAA,CAAE9sB,IAAI,CACnB,MAAMy6W,MAAS3tV,CAAAA,CAAAA,CAAE4tV,QAAQ,CAACrrV,CAAC,CAC3B,MAAMsrV,MAAAA,CAAS7tV,EAAE4tV,QAAQ,CAAC1+W,CAAC,CAC3B,MAAM4+W,MAAS9tV,CAAAA,CAAAA,CAAE4tV,QAAQ,CAACj4W,CAAC,CAC3B,IAAI,IAAIwgF,CAAAA,CAAI,EAAGA,CAAIn2D,CAAAA,CAAAA,CAAEnY,IAAI,CAAChY,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACpC,MAAM+6C,CAAAA,CAAIlxG,EAAEnY,IAAI,CAACsuE,EAAE,CACnB,MAAMz1E,EAAIwwH,CAAExwH,CAAAA,CAAC,CACb,MAAM6hB,EAAIorV,MAASA,CAAAA,MAAAA,CAASz8O,EAAE3uG,CAAC,CAC/B,MAAMrzB,CAAI2+W,CAAAA,MAAAA,CAASA,MAAS38O,CAAAA,CAAAA,CAAEhiI,CAAC,CAC/B,MAAMyG,CAAIm4W,CAAAA,MAAAA,CAASA,OAAS58O,CAAEv7H,CAAAA,CAAC,CAC/B,MAAMsoJ,IAAM,IAAIpyI,IAAAA,CAAK0W,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,CACrC,CAAA,MAAM63H,IAAM,IAAI3iI,IAAAA,EAAAA,CAAOX,kBAAkB,CAAC5nB,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,CAAA,CAAE,EAC1D,MAAMspL,GAAAA,CAAM,IAAI3sK,IAAAA,CAAKlW,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,EACrC,MAAM8B,GAAAA,CAAM,IAAIk4M,YAAAA,CAAajvM,EAAGu9I,GAAK7D,CAAAA,GAAAA,CAAKo+B,KAC1Cx4C,IAAK6vE,CAAAA,KAAK,CAACn/M,IAAI,CAAC+G,GAClB,EAAA,CACAm9O,KAAK3kC,OAAO,CAACjwE,MACf,CACA,OAAO40G,IACT,CAvGAj9O,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,WAAA,CACX,CAAA,IAAI,CAAC/lM,MAAM,CAAG+lM,IAAIpmM,cAClB,CAAA,IAAI,CAACmuM,MAAM,CAAG/H,GAAAA,CAAI+H,OACpB,CAoGF,CAEA,MAAMomI,eAAwB7gI,SAAAA,eAAAA,CAI5BpH,KAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,MAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,MAAM4G,OAAAA,CAAU,CACdy0G,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAE7B,CAAA,GAAIx7G,GAAIqrO,CAAAA,IAAI,CAAC31O,UAAU,CAAC,SAAU,CAChCkR,OAAAA,CAAQ81G,YAAY,CAAGhC,IAAAA,CAAK0C,YAAY,CAACjB,KAAI,CAE/CiD,KAAKloH,GAAG,CAAC8I,IAAIqrO,IAAI,CAAEzkO,OAAS,CAAA,CAAC5F,IAAKu9G,QAChC,GAAA,CAAA,GAAIv9G,GAAK,CAAA,CACPvE,SAAS,CAAC,uCAAuC,EAAEuD,GAAAA,CAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAI,CAAA,CAAC,CAAC,EAC5E,CAAA,KAAO,CACLvE,QAAAA,CAAS,KAAM8hH,QACjB,EAAA,CACF,CACF,EAAA,CACA/B,KAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,MAAM1W,IAAAA,CAAO0W,KAAK1W,IAAI,CACtB,MAAMovF,QAAW14E,CAAAA,IAAAA,CAAK04E,QAAQ,CAC9B,MAAM2jL,MAASr8P,CAAAA,IAAAA,CAAKq8P,MAAM,CAACxvQ,GAAG,CAAEioQ,KAC9B,EAAA,CAAA,OAAO,IAAI81F,QAAS,CAAA,CAAA,CAAG91F,MACzB,CACA,CAAA,CAAA,MAAMc,QAAU51P,IAAK41P,CAAAA,OAAO,CAAC/oQ,GAAG,CAAC,MAACL,EAAAA,CAChC,OAAO,IAAIo+V,QAAAA,CAASp+V,OAAOszC,UAAU,CAAEtzC,MAAOwT,CAAAA,IAAI,CACpD,CACA,CAAA,CAAA,MAAME,OAASF,IAAKE,CAAAA,MAAM,CAACrT,GAAG,CAAC,KAACyS,EAAAA,CAC9B,OAAO,IAAIorV,SAAAA,CAAU,CACnBprV,KAAAA,CAAM3Z,IAAI,CACX,CAAE2Z,KAAMk0F,CAAAA,UAAU,CAAEl0F,KAAMw0F,CAAAA,WAAW,CAAEx0F,KAAM61P,CAAAA,aAAa,CAC7D,CACA,CAAA,CAAA,OAAO,IAAIqI,SAAAA,CAAUl0Q,KAAMovF,QAAU2jL,CAAAA,MAAAA,CAAQzG,OAAS11P,CAAAA,MAAAA,CACxD,CAxCAnS,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,YACb,CAuCF,CAEA,MAAMouI,qBAA8B9gI,SAAAA,eAAAA,CAIlCpH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAMrrO,CAAAA,GAAAA,CACN62D,SAAU72D,GACZ,EACF,CACA,MAAM4G,OAAAA,CAAU,CACdy0G,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAC7B,CACA,GAAIx7G,GAAIqrO,CAAAA,IAAI,CAAC31O,UAAU,CAAC,SAAU,CAChCkR,OAAAA,CAAQ81G,YAAY,CAAGhC,KAAK0C,YAAY,CAACjB,KAC3C,CACAiD,IAAKloH,CAAAA,GAAG,CAAC8I,GAAAA,CAAIqrO,IAAI,CAAEzkO,OAAAA,CAAS,CAAC5F,GAAKu9G,CAAAA,QAAAA,GAAAA,CAChC,GAAIv9G,GAAK,CAAA,CACPvE,QAAS,CAAA,CAAC,8CAA8C,EAAEuD,GAAAA,CAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EACnF,CAAO,KAAA,CACLvE,SAAS,IAAM8hH,CAAAA,QAAAA,EACjB,CACF,CACF,EAAA,CACA/B,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAO,IAAIiuQ,cAAejuQ,CAAAA,IAAAA,CAC5B,CA3BAjS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,kBACb,CA0BF,CAEA,MAAMquI,EAAAA,CAAK,WACT,GAAI,OAAOr8W,SAAW,WAAa,CAAA,CACjC,OAAO,KACT,CACA,MAAMI,EAAAA,CAAKJ,OAAOK,SAAS,CAACC,SAAS,CACrC,MAAMg8W,KAAOl8W,EAAG6G,CAAAA,OAAO,CAAC,OAAA,CAAA,CACxB,GAAIq1W,IAAO,CAAA,CAAA,CAAG,CACZ,OAAOpoW,SAAS9T,EAAGnB,CAAAA,SAAS,CAACq9W,IAAAA,CAAO,EAAGl8W,EAAG6G,CAAAA,OAAO,CAAC,GAAKq1W,CAAAA,IAAAA,CAAAA,CAAAA,CAAQ,GACjE,CACA,MAAMC,OAAUn8W,CAAAA,EAAAA,CAAG6G,OAAO,CAAC,UAAA,CAAA,CAC3B,GAAIs1W,OAAAA,CAAU,EAAG,CACf,MAAMC,EAAKp8W,CAAAA,EAAAA,CAAG6G,OAAO,CAAC,KAAA,CAAA,CACtB,OAAOiN,QAAS9T,CAAAA,EAAAA,CAAGnB,SAAS,CAACu9W,EAAAA,CAAK,CAAGp8W,CAAAA,EAAAA,CAAG6G,OAAO,CAAC,GAAA,CAAKu1W,EAAM,CAAA,CAAA,CAAA,EAAA,CAC7D,CACA,OAAO,KACT,CACA,EAAA,CAAA,MAAMlqR,oBAAsB,CAC1B,MAAA,CACA,OACA,MACA,CAAA,OAAA,CACA,OACA,MACA,CAAA,MAAA,CACA,OACD,CACD,OAAMmqR,YAAqBnhI,SAAAA,eAAAA,CAKzBohI,aAAa7zW,GAAG,CAAE,CAChB,MAAMxJ,GAAAA,CAAM1B,IAAKyB,CAAAA,YAAY,CAACyJ,GAC9B,CAAA,CAAA,OAAOypF,oBAAoBrrF,OAAO,CAAC5H,KAAO,CAAC,CAC7C,CACA60O,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAAA,GAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,MAAMq7C,OAAU,CAAA,SAASqB,QAAQ,CAC/BjgD,CAAAA,QAAAA,CAAS,IAAM,CAAA,IAAIylH,MAAMxlE,QAC3B,CAAA,EAAA,CAAA,CACA,MAAM76C,KAAAA,CAAQ,SAASb,GAAG,CAAA,CACxB,IAAI8yW,GAAM,CAAA,CAAC,yBAAyB,EAAE9zW,GAAAA,CAAI62D,QAAQ,CAAC,CAAC,CACpD,GAAI71D,GAAK,CAAA,CACP8yW,KAAO,CAAC,EAAE,EAAE9yW,GAAAA,CAAIm4E,OAAO,EAAIn4E,GAAAA,CAAI,EAAC,CAElCY,QAAQqyO,IAAI,CAAC6/H,GACbr3W,CAAAA,CAAAA,QAAAA,CAASq3W,KACX,CACA,CAAA,GAAI,IAAI,CAACC,YAAY,CAAE,CACrB,GAAI,CAAC,IAAI,CAACF,YAAY,CAAC7zW,IAAI62D,QAAQ,CAAA,CAAG,CACpCh1D,KAAM,CAAA,CAAC,iBAAiB,EAAE7B,IAAI62D,QAAQ,CAAC,cAAc,CAAC,EACtD,MACF,CACA,IAAI,CAACk9S,YAAY,CAAC/zW,GAAAA,CAAIqrO,IAAI,CAAEhwL,OAAAA,CAASx5C,OACvC,CAAO,KAAA,CACLA,KAAM,CAAA,IAAA,EACR,CACF,CACAkyW,YAAAA,CAAa/zW,GAAG,CAAEq7C,OAAO,CAAEx5C,KAAK,CAAE,CAChC,GAAIwgH,eAAmB,EAAA,CAAA,CACrB,MAAM5B,OAAU,CAAA,IAAI,CAACA,OAAO,CAC5B,GAAI,CAACA,QAAQrlC,OAAO,CAAE,CACpBv5E,KAAAA,CAAM,sCACN,MACF,CACA,MAAM+E,OAAAA,CAAU,CACdy0G,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,EACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAE7B,CAAA,GAAIx7G,IAAItK,UAAU,CAAC,UAAYsK,GAAItK,CAAAA,UAAU,CAAC,OAAA,CAAA,CAAU,CACtDkR,OAAQ81G,CAAAA,YAAY,CAAGhC,IAAK0C,CAAAA,YAAY,CAAC/mC,aAC3C,CACA+oC,IAAAA,CAAKloH,GAAG,CAAC8I,GAAAA,CAAK4G,OAAS,CAAA,CAAC5F,IAAKu9G,QAC3B,GAAA,CAAA,GAAIv9G,GAAK,CAAA,CACPa,MAAMb,GACN,CAAA,CAAA,MACF,CACAy/G,OAAQrlC,CAAAA,OAAO,CAAC44R,eAAe,CAACz1P,QAAUljE,CAAAA,OAAAA,CAASx5C,OACrD,CACF,EAAA,CAAA,KAAO,CACL,IAAIsgH,MAAQ,IACZ,CAAA,GAAI,CACFA,KAAAA,CAAQ,IAAIC,MACd,CAAE,MAAO9qH,CAAG,CAAA,CACVuK,MAAM,8BACN,CAAA,CAAA,MACF,CACA,GAAI2xW,GAAI,CACNvzW,QAAAA,CAASK,IAAI,CAACC,WAAW,CAAC4hH,KAAAA,EAC5B,CACA,MAAM8xP,QAAU,UACd9xP,CAAAA,KAAAA,CAAM9qH,mBAAmB,CAAC,gBAAA,CAAkB48W,SAC5C,GAAIT,EAAAA,CAAI,CACNvzW,QAAAA,CAASK,IAAI,CAACk9I,WAAW,CAACr7B,KAC5B,EAAA,CACA9mE,QAAQ8mE,KACV,EAAA,CACAA,CAAAA,KAAAA,CAAM9hH,OAAO,CAAG,UAAA,CACd8hH,MAAM9hH,OAAO,CAAG,KAChB,GAAImzW,EAAAA,CAAI,CACNvzW,QAAAA,CAASK,IAAI,CAACk9I,WAAW,CAACr7B,KAAAA,EAC5B,CACAtgH,KACF,GAAA,CAAA,CACAsgH,KAAM/qH,CAAAA,gBAAgB,CAAC,gBAAkB68W,CAAAA,OAAAA,CACzC9xP,CAAAA,KAAMp3G,CAAAA,GAAG,CAAG/K,IACd,CACF,CArFA9C,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,IAAK,OACX,CAAA,CAAA,IAAI,CAAC1kH,OAAO,CAAG0kH,GAAAA,CAAI6uB,aAAY,CAoFnC,CAEA,MAAMkgH,aAAAA,SAAsBzhI,eAI1BpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAAA,GAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACAo/G,IAAAA,CAAKloH,GAAG,CAAC8I,IAAIqrO,IAAI,CAAE,CACjB3uH,YAAchC,CAAAA,IAAAA,CAAK0C,YAAY,CAAC/mC,YAAY,CAC5CglC,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAC7B,CAAG,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,IAAK,CACRvE,QAAAA,CAAS,IAAM8hH,CAAAA,QAAAA,EACjB,MAAO,CACL9hH,QAAAA,CAAS,CAAC,+BAA+B,EAAEuD,IAAI62D,QAAQ,CAAC,EAAE,EAAE71D,IAAI,CAAC,CAAC,EACpE,CACF,CAAA,EACF,CACA2yO,UAAWxkO,CAAAA,IAAI,CAAE,CACf,OAAOA,IAAKU,CAAAA,MAAM,CAvBpB3S,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,IAAK,QACb,EAAA,CAuBF,CAEA,MAAMgvI,qBA6BJ,IAAI15O,KAAAA,EAAQ,CACV,GAAI,CAAC,IAAI,CAACmS,MAAM,CAAE,CAChB,MAAMnS,KAAQ05O,CAAAA,oBAAAA,CAAqBC,WAAW,CAAC,IAAI,CAACjlW,IAAI,CAAE,IAAI,CAAC8qU,gBAAgB,CAC/E,CAAA,MAAMprG,UAAaslI,CAAAA,oBAAAA,CAAqBE,WAAW,CAAC,IAAI,CAACC,UAAU,CAAE,QAAS75O,KAAO,CAAA,CAAA,CAAA,CACrF,IAAI,CAAC0yG,OAAO,CAAC1nO,GAAG,CAACopO,UAAAA,CACjB,CAAA,IAAI,CAACjiG,MAAM,CAAGiiG,WAChB,CACA,OAAO,IAAI,CAACjiG,MAAM,CAEpB,OAAOynO,WAAYE,CAAAA,SAAS,CAAE3nW,IAAI,CAAE8vC,QAAQ,CAAE1hD,KAAK,CAAE,CACnD,MAAMw5W,QAAAA,CAAW,IAAItqI,KAAM,CAAA,CAAC,EAAEqqI,SAAU,CAAA,CAAC,EAAE3nW,IAAK,CAAA,CAAC,EAAE5R,KAAAA,CAAM,CAAC,CAAE4R,IAAAA,CAAM,CAChE5M,GAAAA,CAAK,EACP,CACAw0W,CAAAA,CAAAA,QAAS93T,CAAAA,QAAQ,CAAGA,QACpB83T,CAAAA,SAAS35P,MAAM,CAAG,KAClB,OAAO25P,QACT,CACAC,sBAAAA,CAAuB7tW,OAAO,CAAE,CAC9B,MAAMm1H,MAAS,CAAA,IAAI27G,OAAOz6O,SAAW,CAAA,IAAI,CAACkwO,OAAO,CAAC9C,OAAO,CAACC,IAAI,CAC9DvuG,CAAAA,MAAAA,CAAO47G,YAAY,CAAC,OAAA,CAAS3gP,MAAOskH,CAAAA,MAAM,CAAC,CACzC1uG,IAAAA,CAAM,OACNkiN,CAAAA,KAAAA,CAAO,IAAI,CAACr0F,KAAK,CACnB,CAAG7zH,UACH,OAAOm1H,MACT,CACA24O,uBAAwB9tW,CAAAA,OAAO,CAAE,CAC/B,MAAMmqJ,eAAkB,CAAA,IAAI,CAACkpL,gBAAgB,CAC7C,MAAM06B,oBAAAA,CAAuB,EAAE,CAC/B,MAAMhoB,kBAAqB,CAAA,SAASl8M,IAAI,CAAE1U,MAAM,CAAE8C,IAAI,CAAEmkD,SAAS,CAAEogL,oBAAoB,CAAEuK,KAAK,CAAEjC,QAAQ,CAAEiB,iBAAiB,CAAA,CACzH,MAAMiI,aAAgBxR,CAAAA,oBAAoB,CAACvkO,IAAAA,CAAK1/F,EAAE,CAAC,CACnD,MAAM64F,QAAW48O,CAAAA,aAAAA,GAAkB33W,UAAY8zJ,eAAkBiyB,CAAAA,SAAS,CAAC4xL,aAAAA,CAAc,CACzF,MAAM76O,YAAAA,CAAe,IAAI0K,YAAa5F,CAAAA,IAAAA,CAAM7G,UAC5C,GAAI6G,IAAAA,CAAKc,KAAK,CAAE,CACd5F,YAAaqN,CAAAA,aAAa,CAAG,IAAI44C,aAAAA,CAAcnhD,KAAKc,KAAK,EAC3D,CACA,GAAI+rO,SAASlqW,cAAc,CAAC,MAAS,CAAA,CAAA,CACnCmzW,qBAAqB1+W,IAAI,CAAC,CACxB8jI,YAAAA,CAAcA,aACd0B,QAAUgV,CAAAA,IAAAA,CACV1U,OAAQA,MACV,CAAA,EACF,CACA,MAAM84O,QAAAA,CAAWlI,iBAAkBz1W,CAAAA,GAAG,CAACw0W,QACvC,CAAA,CAAA,GAAImJ,QAAU,CAAA,CACZ,MAAMr4O,QAAWq4O,CAAAA,QAAAA,CAASr4O,QAAQ,CAClC,MAAMs4O,QAAWlmU,CAAAA,YAAAA,CAAaG,0BAA0B,CAAC8vF,IAAAA,CAAKz/F,MAAM,CACpE,CAAA,MAAMqO,EAAK,CAAA,IAAIH,aAAauxF,IAAKz/F,CAAAA,MAAM,CAAE01U,QAAAA,CAAUt4O,SAASpnI,MAAM,CAAG,EAAI,CAAA,CACvE+Z,KAAMqtH,QACR,CAAA,CAAA,CACAzC,aAAa0O,aAAa,CAACh7F,GAC3BssF,CAAAA,YAAAA,CAAa8N,cAAc,CAACxD,oBAAoB,CAAG,KACrD,CACA,OAAOtK,YACT,EACA,MAAMg7O,cAAAA,CAAiB,CAACtkO,IAAAA,CAAMlL,KAAMyvO,GAClC,GAAA,CAAA,MAAMj5O,OAAS,IAAI27G,MAAAA,CAAOz6O,UAAW,IAAI,CAACkwO,OAAO,CAAC9C,OAAO,CAACC,IAAI,CAC9D/kG,CAAAA,IAAAA,CAAKkW,cAAc,CAAC1f,MAAAA,CAAAA,CACpB,GAAI,CAAC0U,KAAMA,IAAO1U,CAAAA,MAAAA,CAClB,IAAIk5O,UAAa,CAAA,IAAA,CACjB,IAAIrrF,WAAc,CAAA,IAAA,CAClB,IAAI,IAAIz0R,EAAI,CAAGA,CAAAA,CAAAA,CAAI6/W,GAAI33O,CAAAA,KAAK,CAACjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACvC,MAAM+/W,OAAUF,CAAAA,GAAAA,CAAI33O,KAAK,CAACloI,CAAAA,CAAE,CAC5B,GAAI+/W,OAAAA,GAAY3vO,IAAM,CAAA,CACpB,MAAMmmO,QAAWsJ,CAAAA,GAAAA,CAAItH,IAAI,CAACrwO,KAAK,CAACloI,CAAAA,CAAE,CAClC,GAAIu2W,SAASlqW,cAAc,CAAC,QAAS,CACnC,MAAM2tW,UAAY6F,GAAIxb,CAAAA,OAAO,CAACkS,QAAAA,CAAS7sO,IAAI,CAAC,CAAC+0E,MAAM,CACnDg2E,WAAAA,CAAc,IAAI,CAAC4vE,OAAO,CAACkS,QAAAA,CAAS7sO,IAAI,CAAC,CACzC,IAAI,IAAIqM,EAAAA,CAAK,EAAGA,EAAKikO,CAAAA,SAAAA,CAAU/5W,MAAM,CAAE81I,KAAK,CAC1C,MAAMrM,IAAOswO,CAAAA,SAAS,CAACjkO,EAAG,CAAA,CAC1B,GAAIrM,IAAAA,CAAM,CACR,MAAMs2O,OAAAA,CAAUxoB,mBAAmBl8M,IAAM1U,CAAAA,MAAAA,CAAQ8C,KAAMm2O,GAAIhyL,CAAAA,SAAS,CAAEgyL,GAAAA,CAAI5R,oBAAoB,CAAE4R,GAAAA,CAAIrH,KAAK,CAAEjC,SAAUsJ,GAAIrI,CAAAA,iBAAiB,CAC1I,CAAA,GAAI,CAACsI,UAAY,CAAA,CACfA,WAAa,GACf,CACAA,UAAWh/W,CAAAA,IAAI,CAACk/W,OAAAA,EAClB,CACF,CACF,CACA,GAAIH,GAAAA,CAAIrtN,MAAM,CAAE,CACd,MAAM4zG,WAAAA,CAAcy5G,IAAIrtN,MAAM,CAACzwJ,GAAG,CAACw0W,QAAAA,CAAAA,CACnC,GAAInwG,WAAa,CAAA,CACfx/H,MAAO4hB,CAAAA,QAAQ,CAAC49G,WAAY9wP,CAAAA,KAAK,IACnC,CACF,CACA,GAAIuqW,GAAIlxM,CAAAA,OAAO,CAAE,CACf,MAAMupM,YAAe2H,CAAAA,GAAAA,CAAIlxM,OAAO,CAAC5sK,GAAG,CAACw0W,QACrC,CAAA,CAAA,GAAI2B,YAAc,CAAA,CAChBA,aAAajlO,MAAM,CAAC8oG,MAAM,CAAC+H,cAAc,CAACo0H,YAAAA,CAActxO,MAC1D,EAAA,CACF,CACF,CACF,CACA,GAAIk5O,UAAY,CAAA,CACdl5O,OAAO47G,YAAY,CAAC,QAAU3gP,CAAAA,MAAAA,CAAOskH,MAAM,CAAC,CAC1C1uG,IAAM,CAAA,OAAA,CACN8tH,cAAeu6O,UACjB,CAAA,CAAGruW,OACHm1H,CAAAA,CAAAA,CAAAA,MAAAA,CAAO56B,MAAM,CAAC62N,WAAW,CAACpuC,WAC5B,EAAA,CACA,MAAMnvI,QAAWlV,CAAAA,IAAAA,CAAKkV,QAAQ,CAC9B,IAAI,IAAItlJ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIslJ,SAASrlJ,MAAM,CAAED,CAAI,EAAA,CAAA,CACtC,MAAMigX,UAAaL,CAAAA,cAAAA,CAAetkO,KAAMgK,QAAQ,CAACtlJ,EAAE,CAAE6/W,GAAAA,CAAAA,CACrDj5O,MAAO4hB,CAAAA,QAAQ,CAACy3N,UAClB,EAAA,CACA,OAAOr5O,MACT,CAAA,CACA,MAAMs5O,WAAc,CAAA,EAAE,CACtB,IAAK,MAAMx7O,KAAS,IAAA,IAAI,CAAC1qH,IAAI,CAAC4mP,MAAM,CAAC,CACnCs/G,WAAYp/W,CAAAA,IAAI,CAAC8+W,cAAe,CAAA,IAAA,CAAMl7O,KAAO,CAAA,IAAI,CAAC1qH,IAAI,CAAA,EACxD,CACAwlW,oBAAAA,CAAqB7yW,OAAO,CAAEqN,OAC5BA,IAAK4qH,CAAAA,YAAY,CAACqL,YAAY,CAAG0wL,iBAAkBC,CAAAA,wBAAwB,CAAC5mT,IAAK4qH,CAAAA,YAAY,CAAC8E,IAAI,CAAC7C,IAAI,CAAE7sH,IAAKssH,CAAAA,QAAQ,CAAEtsH,IAAK4sH,CAAAA,MAAM,CACnI5sH,CAAAA,IAAAA,CAAK4qH,YAAY,CAACwL,IAAI,CAACpkC,MAAM,CAACs6B,QAAQ,CAAGtsH,IAAKssH,CAAAA,SAAQ,CAExD,CAAA,CAAA,OAAO04O,oBAAqBmB,CAAAA,oBAAoB,CAACD,WAAa39H,CAAAA,MAAAA,CAChE,CACA69H,mBAAsB,EAAA,CACpB,OAAO,IAAI,CAACpmW,IAAI,CAACk3H,QAAQ,CAAGrvI,MAAAA,CAAOoW,IAAI,CAAC,IAAI,CAAC+B,IAAI,CAACk3H,QAAQ,CAAA,CAAI,EAAE,CAElEmvO,qBAAqBz5O,MAAM,CAAEtjI,IAAI,CAAE,CACjC,MAAM+/H,OAAAA,CAAU//H,KAAO,IAAI,CAAC0W,IAAI,CAACk3H,QAAQ,CAAC5tI,IAAAA,CAAK,CAAG,IAAA,CAClD,GAAI+/H,OAAYv7H,GAAAA,SAAAA,CAAW,CACzB,MACF,CACA,MAAMu8V,OAAUz9N,CAAAA,MAAAA,CAAO+7G,cAAc,CAAC,UACtC,IAAI,IAAI3iP,CAAI,CAAA,CAAA,CAAGA,EAAIqkW,OAAQpkW,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrC,MAAMsgX,eAAAA,CAAkBjc,OAAO,CAACrkW,CAAAA,CAAE,CAClC,IAAI,CAACugX,qBAAqB,CAACl9O,QAASi9O,eAAgB/6O,CAAAA,aAAa,EACnE,CACF,CACAi7O,6BAA8BrgM,CAAAA,SAAS,CAAE78K,IAAI,CAAE,CAC7C,MAAM+/H,QAAU//H,IAAO,CAAA,IAAI,CAAC0W,IAAI,CAACk3H,QAAQ,CAAC5tI,KAAK,CAAG,IAAA,CAClD,GAAI+/H,OAAYv7H,GAAAA,SAAAA,CAAW,CACzB,MACF,CACA,IAAI,CAACy4W,qBAAqB,CAACl9O,OAAAA,CAAS88C,WACtC,CACAogM,qBAAAA,CAAsBl9O,OAAO,CAAE88C,SAAS,CAAE,CACxCA,UAAUxzK,OAAO,CAAC,QAACT,EAAAA,CACjB,GAAIm3H,OAAY,GAAA,IAAA,CAAM,CACpBn3H,QAAAA,CAAS22H,QAAQ,CAAG,IAAI,CAACiiN,iBAC3B,MAAO,CACL,MAAMkpB,YAAe,CAAA,IAAI,CAACh0V,IAAI,CAACg0V,YAAY,CAAC9hW,SAASw9H,IAAI,CAAC1/F,EAAE,CAAC,CAC7D,GAAIgkU,YAAAA,CAAc,CAChB9hW,QAAS22H,CAAAA,QAAQ,CAAG,IAAI,CAAC7oH,IAAI,CAAC6zK,SAAS,CAACmgL,YAAY,CAAC3qO,OAAAA,CAAQ,EAAC,CAElE,CACF,CAAA,EACF,CACA,OAAO88O,oBAAAA,CAAqBM,UAAU,CAAEC,QAAQ,CAAE,CAChD,IAAIplO,IAAO,CAAA,IAAA,CACX,GAAImlO,UAAWxgX,CAAAA,MAAM,GAAK,CAAG,CAAA,CAC3Bq7I,KAAOmlO,UAAU,CAAC,CAAE,EACtB,MAAO,CACLnlO,IAAAA,CAAO,IAAIolO,QAAS,CAAA,YAAA,CAAA,CACpB,IAAK,MAAMh8O,KAAAA,IAAS+7O,UAAW,CAAA,CAC7BnlO,KAAKkN,QAAQ,CAAC9jB,KAChB,EAAA,CACF,CACA,OAAO4W,IACT,CACA,OAAO2jO,YAAYY,GAAG,CAAEjkN,eAAe,CAAE,CACvC,MAAM47L,kBAAqB,CAAA,SAASlyN,KAAK,CAAEoE,IAAI,CAAE8uO,KAAK,CAAElqL,aAAa,CAAET,SAAS,CAAEz9C,IAAI,CAAEmmO,QAAQ,CAC9F,CAAA,MAAMkJ,cAAgBI,GAAI5R,CAAAA,oBAAoB,CAACvkO,IAAK1/F,CAAAA,EAAE,CAAC,CACvD,MAAM64F,QAAW48O,CAAAA,aAAAA,GAAkB33W,SAAY8zJ,CAAAA,eAAAA,CAAkBiyB,SAAS,CAAC4xL,aAAAA,CAAc,CACzF,MAAM76O,aAAe,IAAI0K,YAAAA,CAAa5F,KAAM7G,QAAUuN,CAAAA,IAAAA,CAAAA,CACtD,GAAI1G,IAAKc,CAAAA,KAAK,CAAE,CACd,MAAMyH,aAAgB,CAAA,IAAI44C,cAAcnhD,IAAKc,CAAAA,KAAK,CAClD5F,CAAAA,YAAAA,CAAaqN,aAAa,CAAGA,cAC7B3M,KAAMkpD,CAAAA,cAAc,CAAC1tL,IAAI,CAACmxI,eAC5B,CACA,GAAIskO,QAASlqW,CAAAA,cAAc,CAAC,MAAS,CAAA,CAAA,CACnC,MAAMs0W,SAAAA,CAAYpK,SAAS1vO,IAAI,CAC/B,MAAMA,IAAAA,CAAO2xO,KAAK,CAACmI,SAAAA,CAAU,CAC7Bj3O,IAAAA,CAAK7C,IAAI,CAAGA,IAAAA,CACZ,MAAMoJ,YAAAA,CAAeq+C,aAAa,CAACqyL,SAAAA,CAAU,CAC7C/7O,aAAaqL,YAAY,CAAGA,YAC5B3K,CAAAA,KAAAA,CAAMgpD,aAAa,CAACxtL,IAAI,CAACmvI,YAC3B,EAAA,CACA3K,MAAMC,aAAa,CAACzkI,IAAI,CAAC8jI,cAC3B,CACA,CAAA,MAAMU,KAAQ,CAAA,IAAI8nD,MAClB,MAAMkB,aAAAA,CAAgB,EAAE,CACxB,IAAK,MAAMznD,IAAAA,IAAQg5O,IAAIrH,KAAK,CAAC,CAC3B,MAAMvoO,YAAAA,CAAe,IAAI5J,YAAAA,CAAaQ,KACtCoJ,CAAAA,YAAAA,CAAanJ,KAAK,CAAGD,IAAAA,CAAKC,KAAK,CAC/BwnD,aAAAA,CAAcxtL,IAAI,CAACmvI,cACrB,CACA3K,KAAAA,CAAMgoD,KAAK,CAAG0xL,oBAAAA,CAAqBmB,oBAAoB,CAACN,GAAAA,CAAIj/G,MAAM,CAAEr7G,WACpE,IAAI,IAAIvlJ,CAAI,CAAA,CAAA,CAAGA,EAAI6/W,GAAI33O,CAAAA,KAAK,CAACjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACvC,MAAMowI,IAAOyvO,CAAAA,GAAAA,CAAI33O,KAAK,CAACloI,CAAAA,CAAE,CACzB,GAAIowI,KAAKkL,IAAI,GAAKhW,KAAMgoD,CAAAA,KAAK,CAAE,CAC7B,MAAMipL,QAAWsJ,CAAAA,GAAAA,CAAItH,IAAI,CAACrwO,KAAK,CAACloI,CAAE,CAAA,CAClC,GAAIu2W,QAASlqW,CAAAA,cAAc,CAAC,MAAA,CAAA,CAAS,CACnC,MAAM2tW,SAAAA,CAAY6F,GAAIxb,CAAAA,OAAO,CAACkS,QAAS7sO,CAAAA,IAAI,CAAC,CAAC+0E,MAAM,CACnD,IAAI,IAAI1oE,EAAK,CAAA,CAAA,CAAGA,GAAKikO,SAAU/5W,CAAAA,MAAM,CAAE81I,EAAAA,EAAAA,CAAK,CAC1C,MAAMrM,IAAAA,CAAOswO,SAAS,CAACjkO,EAAAA,CAAG,CAC1B,GAAIrM,IAAAA,CAAM,CACR8tN,kBAAAA,CAAmBlyN,MAAOoE,IAAMm2O,CAAAA,GAAAA,CAAIrH,KAAK,CAAElqL,aAAAA,CAAeuxL,IAAIhyL,SAAS,CAAEz9C,IAAMmmO,CAAAA,QAAAA,EACjF,CACF,CACF,CACF,CACF,CACA,OAAOjxO,KACT,CACAn8F,OAAU,EAAA,CACR,MAAM8rM,QAAW,CAAA,IAAI,CAAC+C,OAAO,CAC7B,MAAM4oI,YAAe,CAAA,SAASjnJ,KAAK,CAAA,CACjCsb,SAAS5qO,MAAM,CAACsvN,KAChBA,CAAAA,CAAAA,KAAAA,CAAMmd,MAAM,GACd,CAAA,CACA,MAAM+pI,aAAAA,CAAgB,SAAS9oI,MAAM,CAAA,CACnCA,OAAOprO,OAAO,CAAC,KACbi0W,EAAAA,CAAAA,YAAAA,CAAajnJ,KACf,EAAA,CAAA,EACF,EACA,GAAI,IAAI,CAACygD,UAAU,CAAE,CACnBymG,aAAAA,CAAc,IAAI,CAACzmG,UAAU,CAC7B,CAAA,IAAI,CAACA,UAAU,CAAG,KACpB,CACA,GAAI,IAAI,CAACxuO,QAAQ,CAAE,CACjBi1U,aAAc,CAAA,IAAI,CAACj1U,QAAQ,CAC3B,CAAA,IAAI,CAACA,QAAQ,CAAG,KAClB,CACA,GAAI,IAAI,CAACiiJ,SAAS,CAAE,CAClBgzL,cAAc,IAAI,CAAChzL,SAAS,CAC5B,CAAA,IAAI,CAACA,SAAS,CAAG,KACnB,CACA,GAAI,IAAI,CAACw2K,OAAO,CAAE,CAChBwc,aAAAA,CAAc,IAAI,CAACxc,OAAO,CAC1B,CAAA,IAAI,CAACA,OAAO,CAAG,KACjB,CACA,GAAI,IAAI,CAAC5sN,MAAM,CAAE,CACfmpO,YAAAA,CAAa,IAAI,CAACnpO,MAAM,CACxB,CAAA,IAAI,CAACA,MAAM,CAAG,KAChB,CACA,IAAI,CAACz9H,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC+9N,MAAM,CAAG,KAChB,CA3QAhwO,WAAAA,CAAYiS,IAAI,CAAE2/M,KAAK,CAAEoe,MAAM,CAAEn8E,eAAe,CAAC,CAC/C,MAAMsjN,WAAAA,CAAc,SAASznW,IAAI,CAAE8vC,QAAQ,CAAE1hD,KAAK,CAChD,CAAA,MAAMw5W,SAAWL,oBAAqBE,CAAAA,WAAW,CAACvlJ,KAAAA,CAAMr2N,IAAI,CAAEmU,IAAAA,CAAM8vC,QAAU1hD,CAAAA,KAAAA,CAAAA,CAC9EkyO,OAAOznO,GAAG,CAAC+uW,QACX,CAAA,CAAA,OAAOA,QACT,CACA,CAAA,MAAMhb,QAAU,EAAE,CAClB,IAAI,IAAIrkW,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIga,KAAKqqV,OAAO,CAACpkW,MAAM,CAAE,EAAED,CAAE,CAAA,CAC1CqkW,OAAQvjW,CAAAA,IAAI,CAACo+W,WAAY,CAAA,QAAA,CAAUllW,KAAKqqV,OAAO,CAACrkW,EAAE,CAAEA,CAAAA,CAAAA,EACtD,CACA,MAAM6tL,UAAY,EAAE,CACpB,IAAI,IAAI7tL,EAAI,CAAGA,CAAAA,CAAAA,CAAIga,IAAK6zK,CAAAA,SAAS,CAAC5tL,MAAM,CAAE,EAAED,CAAE,CAAA,CAC5C6tL,UAAU/sL,IAAI,CAACo+W,WAAY,CAAA,UAAA,CAAYllW,KAAK6zK,SAAS,CAAC7tL,EAAE,CAAEA,CAAAA,CAAAA,EAC5D,CACA,MAAMo6Q,UAAAA,CAAa,EAAE,CACrB,IAAI,IAAIp6Q,CAAAA,CAAI,EAAGA,CAAIga,CAAAA,IAAAA,CAAKogQ,UAAU,CAACn6Q,MAAM,CAAE,EAAED,EAAE,CAC7Co6Q,UAAAA,CAAWt5Q,IAAI,CAACo+W,YAAY,WAAallW,CAAAA,IAAAA,CAAKogQ,UAAU,CAACp6Q,EAAE,CAAEA,CAAAA,CAAAA,EAC/D,CACA,IAAI,CAACga,IAAI,CAAGA,IACZ,CAAA,IAAI,CAACy9H,MAAM,CAAG,IACd,CAAA,IAAI,CAAC0nO,UAAU,CAAGxlJ,KAAAA,CAAMr2N,IAAI,CAC5B,IAAI,CAAC00O,OAAO,CAAGD,MACf,CAAA,IAAI,CAAC+sG,gBAAgB,CAAGlpL,eACxB,CAAA,IAAI,CAACyoM,OAAO,CAAGA,OACf,CAAA,IAAI,CAACx2K,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACjiJ,QAAQ,CAAG5xB,IAAAA,CAAK4xB,QAAQ,CAC7B,IAAI,CAACwuO,UAAU,CAAGA,WACpB,CAiPF,CAEA,MAAM0mG,mBAOJC,oBAAqBl2W,CAAAA,GAAG,CAAE,CACxB,OAAOA,IAAI5B,OAAO,CAAC,GAAQ,CAAA,EAAA,CAAA,CAAI4B,IAAIlK,KAAK,CAAC,GAAI,CAAA,CAAC,EAAE,CAAGkK,GACrD,CACAqrO,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzBob,KAAMkC,CAAAA,gBAAgB,CAACpsO,GAAAA,CAAIqrO,IAAI,CAAE,CAACrqO,GAAK9L,CAAAA,MAAAA,GAAAA,CACrC,GAAI8L,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,EACX,MAAO,CACL2xW,SAAAA,CAAUl0P,KAAK,CAAC,IAAI,CAACy3P,oBAAoB,CAACl2W,GAAI62D,CAAAA,QAAQ,EAAG/hE,IAAK+B,CAAAA,WAAW,CAACmJ,GAAAA,CAAIqrO,IAAI,CAAGn2O,CAAAA,MAAAA,CAAQ,IAAI,CAACylD,OAAO,CAAEm0K,KAAAA,CAAMsb,QAAQ,CAAEtb,KAAAA,CAAMloN,OAAO,CAAE,CAAC5F,GAAK9L,CAAAA,MAAAA,GAAAA,CAC9I,GAAI8L,GAAK,CAAA,CACPvE,SAASuE,GACX,EAAA,CAAA,KAAO,CACLvE,QAAS,CAAA,IAAA,CAAM,IAAI03W,oBAAAA,CAAqBj/W,OAAQ45N,KAAO,CAAA,IAAI,CAACqe,OAAO,CAAE,IAAI,CAAC8sG,gBAAgB,CAC5F,EAAA,CACF,GACF,CACF,CAAA,CAAGnrH,KAAO,CAAA,IAAI,CAACtzG,UAAU,EAC3B,CACAgB,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,OAAO3/M,IACT,CACA47N,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,EA3BrBhwO,WAAYkiC,CAAAA,MAAM,CAAE8tM,MAAM,CAAE1xH,UAAU,CAAC,CACrC,IAAI,CAAC7gE,OAAO,CAAGvb,MACf,CAAA,IAAI,CAAC+tM,OAAO,CAAGD,MACf,CAAA,IAAI,CAAC+sG,gBAAgB,CAAG04B,SAAAA,CAAUC,qBAAqB,EACvD,CAAA,IAAI,CAACp3P,UAAU,CAAGA,WACpB,CAuBF,CAEA,MAAM26P,kBACJ1B,sBAAuB7tW,CAAAA,OAAO,CAAE,CAC9B,OAAO,IACT,CACA8tW,uBAAAA,CAAwB9tW,OAAO,CAAE,CAC/B,OAAO,IACT,CACA2uW,mBAAsB,EAAA,CACpB,OAAO,IACT,CACAC,oBAAqBz5O,CAAAA,MAAM,CAAEtjI,IAAI,CAAE,EACnCk9W,8BAA8BrgM,SAAS,CAAE78K,IAAI,CAAE,EACjD,CACA,MAAM29W,gBAAyB3jI,SAAAA,eAAAA,CAM7B,IAAIj3H,UAAW1+G,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACu5W,kBAAkB,CAAC76P,UAAU,CAAG1+G,KACrC,CAAA,IAAI,MAAMskS,MAAAA,IAAU,IAAI,CAACk1E,OAAO,CAAC,CAC/B,GAAI,IAAI,CAACA,OAAO,CAAC90W,cAAc,CAAC4/R,MAAS,CAAA,CAAA,CACvC,IAAI,CAACk1E,OAAO,CAACl1E,MAAAA,CAAO,CAAC5lL,UAAU,CAAG1+G,MACpC,CACF,CACF,CACA,IAAI0+G,YAAa,CACf,OAAO,IAAI,CAAC66P,kBAAkB,CAAC76P,UAAU,CAE3C06P,oBAAAA,CAAqBl2W,GAAG,CAAE,CACxB,OAAOA,GAAAA,CAAI5B,OAAO,CAAC,GAAA,CAAA,EAAQ,EAAI4B,GAAIlK,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CAAGkK,GACrD,CACAu2W,UAAAA,CAAWv2W,GAAG,CAAE,CACd,MAAMxJ,GAAAA,CAAMwJ,GAAMlL,CAAAA,IAAAA,CAAKyB,YAAY,CAAC,IAAI,CAAC2/W,oBAAoB,CAACl2W,MAAMk9G,WAAW,EAAA,CAAG3oH,OAAO,CAAC,IAAK,EAAM,CAAA,CAAA,IAAA,CACrG,OAAO,IAAI,CAAC+hX,OAAO,CAAC9/W,GAAI,CAAA,EAAI,IAAI,CAAC6/W,kBAAkB,CAErDhrI,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,GAAAA,GAAQ,SAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,IAAI,CAACu2W,UAAU,CAACv2W,GAAI62D,CAAAA,QAAQ,EAAEw0K,IAAI,CAACrrO,IAAKvD,QAAUqyN,CAAAA,KAAAA,EACpD,CACAtyG,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,OAAO,IAAI,CAACynJ,UAAU,CAACv2W,GAAKw8G,CAAAA,CAAAA,IAAI,CAACx8G,GAAKmP,CAAAA,IAAAA,CAAM2/M,KAC9C,CAAA,CAlCA5xN,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,WAAA,CACX,CAAA,IAAI,CAACkxI,kBAAkB,CAAG,IAAIJ,kBAAmB9wI,CAAAA,GAAAA,CAAIpmM,cAAc,CAAEomM,GAAAA,CAAI+H,MAAM,CAAE,EACjF,CAAA,IAAI,CAACopI,OAAO,CAAG,GACjB,CA+BF,CAEA,MAAME,mBAAmB/jI,eAIvBpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,MAAQ,QAAU,CAAA,CAC3BA,GAAM,CAAA,CACJqrO,KAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACAo/G,KAAKloH,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAE,CACjBhwH,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAC7B,CAAG,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,GAAAA,CAAK,CACRvE,QAAAA,CAAS,KAAM8hH,QACjB,EAAA,CAAA,KAAO,CACL9hH,QAAAA,CAAS,CAAC,4BAA4B,EAAEuD,GAAI62D,CAAAA,QAAQ,CAAC,EAAE,EAAE71D,IAAI,CAAC,CAAC,EACjE,CACF,CAAA,EACF,CACA2yO,UAAAA,CAAWxkO,IAAI,CAAE,CACf,IAAI,CAAC0iO,UAAL,IAAI,CAACA,OAAY,CAAA,IAAIC,YAAY,OACjC,CAAA,CAAA,CAAA,OAAO,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC5iO,IAC7B,CAAA,CAxBAjS,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,KAAA,CAAA,CAAQ,IAAI,CAAC0M,OAAO,CAAG,KACpC,CAuBF,CAEA,MAAM4kI,uBAAuBhkI,eAO3BpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,IAAI,CAAC4nJ,UAAU,CAAC5nJ,KAAOryN,CAAAA,QAAAA,EACzB,CACA+/G,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,OAAOA,KAAAA,CAAQA,MAAMpyK,QAAQ,CAAG,IAClC,CACAquL,MAAMjc,KAAK,CAAEsb,QAAQ,CAAE,CACrB,IAAI,CAACssI,UAAU,CAAC5nJ,KAAAA,CAAO,CAAC9tN,GAAK9L,CAAAA,MAAAA,GAAAA,CAC3B,GAAI8L,GAAAA,CAAK,CACPopO,QAAS/rO,CAAAA,IAAI,CAAC,OAAA,CAASywN,OACvBsb,QAAS/rO,CAAAA,IAAI,CAAC,CAAC,MAAM,EAAEywN,KAAAA,CAAM3vL,EAAE,CAAC,CAAC,CAAEn+B,GAAK8tN,CAAAA,KAAAA,CAAAA,CACxCA,KAAMzwN,CAAAA,IAAI,CAAC,OAASywN,CAAAA,KAAAA,EACtB,CACF,CAAA,EACF,CACA6nJ,WAAYC,CAAAA,YAAY,CAAE,CACxB,MAAM1hX,MAAS,CAAA,EAAE,CACjBA,MAAM,CAAC,CAAE,CAAA,CAAG0hX,YAAazsI,CAAAA,IAAI,CAC7B,GAAKysI,CAAAA,YAAatrI,CAAAA,SAAS,EAAI,CAACsrI,YAAAA,CAAazsI,IAAG,GAAMysI,YAAaznW,CAAAA,IAAI,EAAIynW,YAAaznW,CAAAA,IAAI,CAAC4xB,QAAQ,CAAE,CACrG,IAAI,IAAI5rC,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAE,CAAA,CACxBD,MAAM,CAACC,EAAI,CAAE,CAAA,CAAGyhX,aAAaznW,IAAI,CAAC4xB,QAAQ,CAAC5rC,CAAAA,EAAE,CAEjD,MAAO,CACLD,MAAM,CAAC,CAAA,CAAE,CAAGA,MAAM,CAAC,CAAE,CAAA,CAAGA,MAAM,CAAC,CAAA,CAAE,CAAGA,MAAM,CAAC,EAAE,CAAGA,MAAM,CAAC,CAAA,CAAE,CAAGA,MAAM,CAAC,CAAE,CAAA,CAAG,KAC1E,CACA,OAAOA,MACT,CACA2hX,gBAAgBC,QAAQ,CAAEC,QAAQ,CAAE,CAClC,GAAID,QAAYC,EAAAA,QAAAA,CAAU,CACxB,GAAI1rW,SAASyrW,QAAU,CAAA,EAAA,CAAA,GAAQA,UAAY,OAAOA,QAAAA,GAAa,SAAU,CACvE,OAAOA,QAAaC,GAAAA,QACtB,CACA,OAAOD,QAAAA,CAAS92W,GAAG,GAAK+2W,QAAAA,CAAS/2W,GAAG,CAEtC,OAAO82W,QAAAA,GAAa,QAAUC,QAAAA,GAAa,IAAG,CAChD,CACAxuU,MAAOquU,CAAAA,YAAY,CAAE7oI,QAAQ,CAAEb,MAAM,CAAE,CACrC,MAAM8pI,SAAAA,CAAYJ,aAAaznW,IAAI,EAAI,EAAC,CACxC,MAAM8nW,SAAYL,CAAAA,YAAAA,CAAaM,aAAa,CAAChqI,MAAM,CACnD,MAAMiqI,YAAeP,CAAAA,YAAAA,CAAa3rI,UAAU,CAC5C,IAAIhpM,IAAKq1B,GAAKniE,CAAAA,CAAAA,CACd,MAAMi+D,SAAY,CAAA,CAChB,IACA,CAAA,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACD,CACD,MAAMgkT,OAAAA,CAAU,UACd,CAAA,GAAIJ,UAAUx1W,cAAc,CAAC,QAAS,CACpC,OAAOw1W,UAAUpqW,IACnB,CACA,GAAIoqW,UAAUx1W,cAAc,CAAC,QAAS,CACpC,OAAOw1W,UAAUK,IAAI,CAAGxhV,gBAAmBD,CAAAA,mBAC7C,CACA,OAAO,IACT,EACA,GAAI,CAACghV,aAAa/7P,MAAM,EAAIqyH,MAAM,CAAC,EAAE,GAAK+pI,SAAS,CAAC,CAAA,CAAE,CAAE,CACtD,GAAI/pI,MAAM,CAAC,EAAE,CAAE,CACbjrM,IAAMirM,MAAM,CAAC,EAAE,CAACxwL,QAAQ,CACxB,GAAIza,IAAIrB,OAAO,CAAE,CACf,IAAIzrC,EAAI,CAAGA,CAAAA,CAAAA,CAAI,CAAG,CAAA,EAAEA,EAAE,CACpBi+D,SAAS,CAACj+D,CAAI,CAAA,CAAA,CAAE,CAAG,IAAI2rC,OAAAA,CAAQ,IAAI,CAAC6Z,OAAO,CAAE,CAC3CliD,IAAM,CAAA,CAAC,EAAEm+W,YAAan+W,CAAAA,IAAI,CAAC,cAAc,EAAEwpC,GAAInnB,CAAAA,KAAK,EAAI3lB,CAAE,CAAA,CAAC,CAC3DyrC,OAAS,CAAA,IAAA,CACTh0B,IAAMwqW,CAAAA,OAAAA,EAAAA,EAAan1U,IAAIr1B,IAAI,CAC3BkO,MAAOmnB,GAAInnB,CAAAA,KAAK,EAAI3lB,CACpB4lB,CAAAA,MAAAA,CAAQknB,GAAIlnB,CAAAA,MAAM,EAAI5lB,CACtB8F,CAAAA,MAAAA,CAAQgnC,IAAIhnC,MAAM,CAClB2qC,OAAQ,CACN3D,GAAAA,CAAIb,OAAO,CAACjsC,EAAE,CACf,CACD+tC,QAAU5Z,CAAAA,qBAAAA,CACV8Z,SAAU9Z,qBACVqX,CAAAA,OAAAA,CAASxrC,CAAM,GAAA,CACjB,GACF,CACF,CAAA,KAAO,CACLi+D,SAAS,CAAC,EAAE,CAAGnxB,IACjB,CACF,CACF,MAAO,CACLmxB,SAAS,CAAC,CAAA,CAAE,CAAG+jT,YAAY,CAAC,CAAE,CAAA,EAAI,IAClC/jT,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAG+jT,YAAY,CAAC,CAAA,CAAE,EAAI,IAClC/jT,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAG+jT,YAAY,CAAC,CAAA,CAAE,EAAI,IAClC/jT,CAAAA,SAAS,CAAC,EAAE,CAAG+jT,YAAY,CAAC,CAAE,CAAA,EAAI,IAClC/jT,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAG+jT,YAAY,CAAC,EAAE,EAAI,IAClC/jT,CAAAA,SAAS,CAAC,CAAE,CAAA,CAAG+jT,YAAY,CAAC,CAAA,CAAE,EAAI,KACpC,CACA,MAAMG,UAAAA,CAAapqI,OAAOl3O,KAAK,CAAC,CAChC,CAAA,CAAA,GAAI,CAAC4gX,YAAa/7P,CAAAA,MAAM,EAAI,CAAC,IAAI,CAAC08P,SAAS,CAACD,UAAYL,CAAAA,SAAAA,CAAUjhX,KAAK,CAAC,CAAA,CAAA,CAAA,CAAK,CAC3E,GAAIshX,WAAWl5W,OAAO,CAAC,IAAU,CAAA,GAAA,CAAC,EAAG,CACnC,MAAMo5W,YAAeF,CAAAA,UAAAA,CAAWt7W,GAAG,CAAE8yN,QACnC,OAAOA,KAAAA,CAAMpyK,QAAQ,CACvB,CAAA,CACA,MAAM+6T,UAAAA,CAAa,EAAE,CACrB,IAAIngT,GAAM,CAAA,CAAA,CAAGA,IAAMkgT,YAAY,CAAC,CAAE,CAAA,CAACp2U,OAAO,CAAChsC,MAAM,CAAE,EAAEkiE,GAAAA,CAAI,CACvDmgT,UAAWxhX,CAAAA,IAAI,CAACuhX,YAAAA,CAAax7W,GAAG,CAAE07W,cAChC,OAAOA,WAAAA,CAAYt2U,OAAO,CAACk2B,GAAAA,CAAI,CACjC,CAAA,EACF,CACA,MAAMr8D,MAAAA,CAASu8W,YAAY,CAAC,CAAA,CAAE,CAACv8W,MAAM,CACrC,MAAM08W,KAAAA,CAAQ,IAAI72U,OAAQ,CAAA,IAAI,CAAC6Z,OAAO,CAAE,CACtCliD,IAAAA,CAAM,CAAC,EAAEm+W,aAAan+W,IAAI,CAAC,MAAM,CAAC,CAClCmoC,QAAS,IACTh0B,CAAAA,IAAAA,CAAMwqW,OAAaI,EAAAA,EAAAA,YAAY,CAAC,CAAE,CAAA,CAAC5qW,IAAI,CACvCkO,MAAO08V,YAAY,CAAC,CAAE,CAAA,CAAC18V,KAAK,CAC5BC,MAAAA,CAAQy8V,YAAY,CAAC,CAAA,CAAE,CAACz8V,MAAM,CAC9B9f,MAAQA,CAAAA,MAAAA,GAAW2yB,iBAAmBC,iBAAoB5yB,CAAAA,MAAAA,CAC1D0lC,OAASq2U,CAAAA,SAAAA,CAAUr2U,OAAO,EAAI,IAAA,CAC9BiF,MAAQ6xU,CAAAA,UAAAA,CACR50U,UAAWm0U,SAAUx1W,CAAAA,cAAc,CAAC,WAAew1W,CAAAA,CAAAA,SAAAA,CAAUn0U,SAAS,CAAG20U,YAAY,CAAC,CAAA,CAAE,CAAC30U,SAAS,CAClGG,UAAWg0U,SAAUx1W,CAAAA,cAAc,CAAC,WAAew1W,CAAAA,CAAAA,SAAAA,CAAUh0U,SAAS,CAAGw0U,YAAY,CAAC,CAAA,CAAE,CAACx0U,SAAS,CAClGa,WAAYmzU,SAAUx1W,CAAAA,cAAc,CAAC,YAAA,CAAA,CAAgBw1W,UAAUnzU,UAAU,CAAG,CAC5EX,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBACZ,CACA8pC,CAAAA,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAGukT,MACjB,CACF,MAAO,CACLvkT,SAAS,CAAC,CAAA,CAAE,CAAG+jT,YAAY,CAAC,CAAE,CAAA,EAAI,KACpC,CACA,GAAI,CAAC,IAAI,CAACI,SAAS,CAACnkT,UAAW+jT,YAAe,CAAA,CAAA,CAC5CP,aAAaxjT,SAAS,CAAGA,SACzBwjT,CAAAA,aAAaM,aAAa,CAACnpI,QAAQ,CAAGA,QACtC6oI,CAAAA,YAAAA,CAAaM,aAAa,CAAChqI,MAAM,CAAGA,MAAAA,CACpC,IAAI/3O,CAAI,CAAA,CAAA,CAAGA,EAAIgiX,YAAa/hX,CAAAA,MAAM,CAAE,EAAED,EAAE,CACtC,GAAIgiX,YAAY,CAAChiX,CAAAA,CAAE,GAAK,IAAQi+D,EAAAA,SAAAA,CAAUh1D,OAAO,CAAC+4W,YAAY,CAAChiX,CAAAA,CAAE,IAAM,CAAC,CAAA,CAAG,CACzEgiX,YAAY,CAAChiX,CAAE,CAAA,CAACmpC,OAAO,GACzB,CACF,CACF,CACA,IAAInpC,CAAI,CAAA,CAAA,CAAGA,CAAI8hX,CAAAA,SAAAA,CAAU7hX,MAAM,CAAE,EAAED,EAAE,CACnC,GAAI8hX,SAAS,CAAC9hX,CAAAA,CAAE,GAAK,IAAA,EAAQ+3O,OAAO9uO,OAAO,CAAC64W,SAAS,CAAC9hX,EAAE,CAAM,GAAA,CAAC,CAAG,CAAA,CAChE8hX,SAAS,CAAC9hX,CAAAA,CAAE,CAAC82O,MAAM,GACrB,CACF,CACF,CACAsrI,SAAUx3T,CAAAA,IAAI,CAAEC,IAAI,CAAE,CACpB,GAAID,KAAK3qD,MAAM,GAAK4qD,IAAK5qD,CAAAA,MAAM,CAAE,CAC/B,OAAO,KACT,CACA,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI4qD,CAAAA,IAAAA,CAAK3qD,MAAM,CAAE,EAAED,EAAE,CAClC,GAAI4qD,IAAI,CAAC5qD,CAAAA,CAAE,GAAK6qD,IAAI,CAAC7qD,CAAE,CAAA,CAAE,CACvB,OAAO,KACT,CACF,CACA,OAAO,IACT,CACAyiX,UAAU96W,KAAK,CAAE,CACf,MAAM+6W,SAAWxsW,QAASvO,CAAAA,KAAAA,CAAO,EACjC,CAAA,CAAA,OAAO+6W,WAAa/6W,KAAS+6W,EAAAA,QAAAA,CAAShjX,QAAQ,EAAOiI,GAAAA,KAAAA,CAAQ+6W,SAAW/6W,KAC1E,CACA45W,UAAWE,CAAAA,YAAY,CAAEn6W,QAAQ,CAAE,CACjC,GAAI,CAACm6W,YAAap1W,CAAAA,cAAc,CAAC,eAAA,CAAA,CAAkB,CACjDo1W,YAAaM,CAAAA,aAAa,CAAG,CAC3BnpI,QAAAA,CAAU,CACR,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACD,CACDb,MAAAA,CAAQ,CACN,IACA,CAAA,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACD,EAEL,CACA,MAAMv0O,KAAO,CAAA,IAAI,CACjB,MAAMo1O,SAAWp1O,KAAKg+W,CAAAA,WAAW,CAACC,YAClC,CAAA,CAAA,MAAM1pI,OAAS,CACb,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACA,KACD,CACD,MAAM4qI,eAAiBlB,YAAaM,CAAAA,aAAa,CAACnpI,QAAQ,CAC1D,MAAMgqI,YAAAA,CAAenB,YAAaM,CAAAA,aAAa,CAAChqI,MAAM,CACtD,MAAM9C,QAAAA,CAAWzxO,MAAK89T,SAAS,CAC/B,IAAIhgF,QAAW,CAAA,CAAA,CACf,MAAMzC,MAAS,CAAA,SAASh5O,KAAK,CAAE8zN,KAAK,CAClCoe,CAAAA,MAAM,CAAClyO,KAAAA,CAAM,CAAG8zN,KAChB2nB,CAAAA,QACA,EAAA,CAAA,GAAIA,WAAa,CAAG,CAAA,CAClB99O,MAAK4vC,MAAM,CAACquU,aAAc7oI,QAAUb,CAAAA,MAAAA,CAAAA,CACpCzwO,QAAS,CAAA,IAAA,CAAMm6W,aAAaxjT,SAAS,EACvC,CACF,CAAA,CACA,MAAM4kT,OAAU,CAAA,SAASh9W,KAAK,CAAEgG,GAAG,CAAE8tN,KAAK,EACxCryN,QAASuE,CAAAA,GAAAA,EACX,EACA,MAAMi3W,eAAAA,CAAkB,SAASj9W,KAAK,CAAEk9W,QAAQ,CAAA,CAC9C,GAAIA,QAASr9P,CAAAA,MAAM,CAAE,CACnBm5H,MAAAA,CAAOh5O,KAAOk9W,CAAAA,QAAAA,EAChB,MAAO,CACL9tI,QAAAA,CAASxtO,IAAI,CAAC,CAAC,KAAK,EAAEs7W,QAAAA,CAAS/4U,EAAE,CAAC,CAAC,CAAE60M,MAAAA,CAAOzuO,IAAI,CAAC5M,MAAMqC,KACvDovO,CAAAA,CAAAA,CAAAA,QAAAA,CAASxtO,IAAI,CAAC,CAAC,MAAM,EAAEs7W,SAAS/4U,EAAE,CAAC,CAAC,CAAE64U,OAAAA,CAAQzyW,IAAI,CAAC5M,MAAMqC,KACzD,CAAA,CAAA,CAAA,GAAI,CAACk9W,QAAAA,CAAS9sI,OAAO,CAAE,CACrBhB,QAASiB,CAAAA,IAAI,CAAC6sI,QAChB,EAAA,CACF,CACF,CACA,CAAA,IAAIA,SACJ,IAAI,IAAI/iX,CAAI,CAAA,CAAA,CAAGA,EAAI,CAAG,CAAA,EAAEA,CAAE,CAAA,CACxB,MAAM42O,OAAU,CAAA,IAAI,CAAC6rI,SAAS,CAAC7pI,QAAQ,CAAC54O,EAAE,CAC1C,CAAA,GAAI,CAAC42O,OAAS,CAAA,CACZiI,MAAO7+O,CAAAA,CAAAA,CAAG,MACZ,CAAO,KAAA,GAAIwD,MAAKk+W,eAAe,CAAC9qI,QAAS+rI,cAAc,CAAC3iX,CAAE,CAAA,CAAA,CAAG,CAC3D8iX,eAAgB9iX,CAAAA,CAAAA,CAAG4iX,YAAY,CAAC5iX,CAAAA,CAAE,EACpC,CAAO,KAAA,GAAIkW,QAAS0gO,CAAAA,OAAAA,CAAS,MAAQA,OAAS,CAAA,CAC5CmsI,QAAW9tI,CAAAA,QAAAA,CAASlzO,GAAG,CAAC60O,OAAAA,CAAAA,CACxB,GAAImsI,QAAAA,CAAU,CACZD,eAAgB9iX,CAAAA,CAAAA,CAAG+iX,UACrB,CAAO,KAAA,CACLhjS,WAAW,CAAC,CAACl6E,KAAAA,CAAOm9W,YAClB,MAAMD,QAAAA,CAAW9tI,QAASlzO,CAAAA,GAAG,CAACihX,QAC9B,CAAA,CAAA,GAAID,QAAU,CAAA,CACZD,gBAAgBj9W,KAAOk9W,CAAAA,QAAAA,EACzB,MAAO,CACLF,OAAAA,CAAQh9W,MAAO,CAAC,uCAAuC,EAAEm9W,QAAAA,CAAS,CAAC,EACrE,CACF,CAAA,EAAG5yW,IAAI,CAAC,IAAA,CAAMpQ,CAAG42O,CAAAA,OAAAA,CAAAA,EACnB,CACF,CAAO,KAAA,CACL,MAAM5B,IAAO,CAAA,OAAO4B,UAAY,QAAW,CAAA,CACzC/rO,GAAK+rO,CAAAA,OAAAA,CACLvC,SAAUuC,OACZ,CAAA,CAAIA,QACJ,MAAM58N,IAAAA,CAAOg7N,KAAKnqO,GAAG,CAACyE,MAAM,CAAC,UAAY,CAAC,CAAA,CAAI,CAC5CmI,IAAM,CAAA,MAAA,CACNwrW,SAAU,OACVC,CAAAA,QAAAA,CAAU,OACV13U,CAAAA,OAAAA,CAAS,KACX,CAAI,CAAA,IAAA,CACJu3U,QAAW,CAAA,IAAIhuI,MAAM,CAAC,EAAE0sI,YAAan+W,CAAAA,IAAI,CAAC,MAAM,EAAEtD,EAAE,CAAC,CAAE,UAAWg1O,IAAMh7N,CAAAA,IAAAA,CAAAA,CACxEi7N,QAAS3kO,CAAAA,GAAG,CAACyyW,QACbD,CAAAA,CAAAA,eAAAA,CAAgB9iX,CAAG+iX,CAAAA,QAAAA,EACrB,CACF,CACF,CAlQAh7W,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,SAAA,CACX,CAAA,IAAI,CAACxqL,OAAO,CAAGwqL,IAAIpmM,cACnB,CAAA,IAAI,CAAC03R,SAAS,CAAGtxF,GAAI+H,CAAAA,MAAM,CAC3B,IAAI,CAAC7C,OAAO,CAAGlF,IAAIqK,OACrB,CA8PF,CAEA,MAAM8oI,aAAsB7lI,SAAAA,eAAAA,CAI1BpH,KAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClBA,QAAS,CAAA,IAAA,CAAM,MACjB,CALAS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,QACb,EAAA,CAIF,CAEA,MAAMozI,IAAAA,CASJ,IAAIppW,IAAAA,CAAKrS,KAAK,CAAE,CACd,IAAI,CAACguO,KAAK,CAAGhuO,KAAAA,CACb,GAAI,CAACA,KAAAA,CAAO,CACV,MACF,CACA,GAAI,IAAI,CAACguO,KAAK,CAACj0H,SAAS,GAAK55G,UAAW,CACtC,IAAI,CAAC45G,SAAS,CAAG,IAAI,CAACi0H,KAAK,CAACj0H,UAAS,CAEvC,GAAI,CAAC,IAAI,CAACi0H,KAAK,CAAC14M,IAAI,CAAE,CACpB,IAAI,CAAC04M,KAAK,CAAC14M,IAAI,CAAG,GACpB,CACA,GAAI,CAAC,IAAI,CAAC04M,KAAK,CAACl3O,OAAO,EAAI,IAAI,CAACk3O,KAAK,CAACl3O,OAAO,CAAG,CAAA,CAAG,CACjD,IAAI,CAACk3O,KAAK,CAAC14M,IAAI,CAAC4kG,IAAI,CAAG,CACrB,CACEl8G,KAAO,CAAA,IAAI,CAACgwN,KAAK,CAAC14M,IAAI,CAACtX,KAAK,CAC5BC,MAAAA,CAAQ,IAAI,CAAC+vN,KAAK,CAAC14M,IAAI,CAACrX,MAC1B,EACD,CACD,GAAI,IAAI,CAAC+vN,KAAK,CAACy+D,KAAK,CAAE,CACpB,IAAI,MAAMvsS,GAAAA,IAAO,IAAI,CAAC8tO,KAAK,CAACy+D,KAAK,CAAC,CAChC,IAAI,CAACz+D,KAAK,CAACy+D,KAAK,CAACvsS,IAAI,CAAChB,GAAG,CAAG,EAC9B,CACF,CACF,CACF,CACA,IAAImT,MAAO,CACT,OAAO,IAAI,CAAC27N,KAAK,CAlCnB5tO,WAAAA,CAAY6jC,QAAQ,CAAE5xB,IAAI,CAAC,CACzB,IAAI,CAACvC,IAAI,CAAGuC,IAAOA,CAAAA,IAAAA,CAAKvC,IAAI,EAAIuxR,UAAYA,SAC5C,CAAA,IAAI,CAACq6E,EAAE,CAAG,CACV,CAAA,IAAI,CAACz3U,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAAC81E,SAAS,CAAG,CACjB,CAAA,IAAI,CAACi0H,KAAK,CAAG,IACb,CAAA,IAAI,CAAC37N,IAAI,CAAGA,KACd,CA6BF,CAEA,SAASspW,iBAAkBtpW,CAAAA,IAAI,EAC7B,GAAIA,IAAAA,CAAKvb,OAAO,CAAG,EAAG,CACpB,GAAIub,KAAKvb,OAAO,CAAG,EAAG,CACpBub,IAAAA,CAAKijB,IAAI,CAAC4kG,IAAI,CAAG7nH,IAAAA,CAAKijB,IAAI,CAAC4kG,IAAI,EAAI,CACjC,CACEl8G,KAAAA,CAAO3L,KAAKijB,IAAI,CAACtX,KAAK,CACtBC,MAAAA,CAAQ5L,KAAKijB,IAAI,CAACrX,MACpB,GACD,CAEH5L,KAAKo6R,KAAK,CAAGvyS,OAAOoW,IAAI,CAAC+B,IAAKo6R,CAAAA,KAAK,EAAI,EAAC,CAAA,CAAG54P,MAAM,CAAC,CAAC+nU,SAAU17W,GAC3D,GAAA,CAAA,MAAMg3D,QAAW7kD,CAAAA,IAAAA,CAAKo6R,KAAK,CAACvsS,GAAAA,CAAI,CAChC,MAAM27W,OAAS3kT,QAAS4kT,CAAAA,MAAM,GAAK37W,SAAAA,CAAY+2D,SAAS4kT,MAAM,CAAGx+W,OAAO2B,aAAa,CAACiB,KACtF,GAAImS,IAAAA,CAAKvb,OAAO,CAAG,EAAG,CACpBogE,QAAAA,CAASh4D,GAAG,CAAGg4D,SAASh4D,GAAG,EAAI,EACjC,CACA08W,QAAQ,CAACC,MAAAA,CAAO,CAAG3kT,QACnB,CAAA,OAAO0kT,QACT,CAAG,CAAA,EACHvpW,CAAAA,CAAAA,KAAKvb,OAAO,CAAG,EACjB,CACA,OAAOub,IACT,CACA,MAAM0pW,WAAAA,SAAoBpmI,gBAMxBpH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,MAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,MAAMrH,KAAO,CAAA,IAAI,CACjB,GAAI7D,IAAAA,CAAKyB,YAAY,CAACyJ,GAAAA,CAAI62D,QAAQ,CAAA,GAAM,QAAS,CAC/CuoD,IAAAA,CAAKloH,GAAG,CAAC8I,IAAIqrO,IAAI,CAAE,CACjBhwH,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAC7B,CAAG,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,IAAK,CACR,MAAMmO,IAAOspW,CAAAA,iBAAAA,CAAkBl6P,UAC/B5lH,KAAKg2O,CAAAA,aAAa,CAAC3uO,GAAIqrO,CAAAA,IAAI,CAAC92O,OAAO,CAAC,OAAS,CAAA,MAAA,CAAA,CAAS4a,KAAM,CAACnO,GAAAA,CAAK+/B,QAChE,GAAA,CAAA,GAAI//B,IAAK,CACPvE,QAAAA,CAASuE,GACX,EAAA,CAAA,KAAO,CACLvE,QAAS,CAAA,IAAA,CAAM,CACb0S,IAAMA,CAAAA,IAAAA,CACN4xB,SAAUA,QACZ,CAAA,EACF,CACF,CAAA,EACF,MAAO,CACLtkC,QAAAA,CAAS,CAAC,6BAA6B,EAAEuD,IAAI62D,QAAQ,CAAC,EAAE,EAAE71D,IAAI,CAAC,CAAC,EAClE,CACF,CAAA,EACF,MAAO,CACL,GAAI8tN,KAASA,EAAAA,KAAAA,CAAM3/M,IAAI,CAAE,CACvB2/M,KAAM3/M,CAAAA,IAAI,CAAGspW,iBAAkB3pJ,CAAAA,KAAAA,CAAM3/M,IAAI,EAC3C,CACA,IAAI,CAACw/N,aAAa,CAAC3uO,GAAAA,CAAIqrO,IAAI,CAAEvc,KAAAA,EAASA,KAAM3/M,CAAAA,IAAI,CAAE1S,QACpD,EAAA,CACF,CACAkyO,aAAAA,CAAc3uO,GAAG,CAAEmP,IAAI,CAAE1S,QAAQ,CAAE,CACjC,MAAMq2F,YAAc3jF,IAAKijB,CAAAA,IAAI,CAAC4kG,IAAI,CAAC5hI,MAAM,CACzC,IAAI0jX,SAAY,CAAA,CAAA,CAChB,IAAIj3W,KAAAA,CAAQ,KACZ,MAAMk/B,QAAAA,CAAW,IAAI5sC,KAAAA,CAAM2+F,aAC3B,MAAM08I,MAAAA,CAAS,IAAI,CAACnF,OAAO,CAC3B,MAAMwmI,WAAAA,CAAc,SAAS71W,KAAK,EAChC,MAAM+9W,QAAAA,CAAW,SAAS/3W,GAAG,CAAEimC,OAAO,CACpC,CAAA,GAAIplC,KAAO,CAAA,OACX,GAAIb,GAAK,CAAA,CACPa,MAAQb,GACRvE,CAAAA,QAAAA,CAASuE,KACT,MACF,CACAimC,OAAQ3F,CAAAA,MAAM,EACdP,CAAAA,QAAQ,CAAC/lC,KAAAA,CAAM,CAAGisC,OAClB6xU,CAAAA,SACA,EAAA,CAAA,GAAIA,YAAchmR,WAAa,CAAA,CAC7Br2F,SAAS,IAAMskC,CAAAA,QAAAA,EACjB,CACF,CACA,CAAA,GAAI/lC,KAAU,GAAA,CAAA,CAAG,CACfw0O,MAAOnE,CAAAA,IAAI,CAACrrO,GAAAA,CAAK,UAAW+4W,QAC9B,EAAA,CAAA,KAAO,CACLvpI,MAAAA,CAAOnE,IAAI,CAACrrO,GAAAA,CAAIzL,OAAO,CAAC,MAAA,CAAQ,CAAC,EAAEyG,KAAAA,CAAM,IAAI,CAAC,EAAG,SAAW+9W,CAAAA,QAAAA,EAC9D,CACF,CAAA,CACA,IAAI,IAAI5jX,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI29F,YAAa39F,CAAI,EAAA,CAAA,CAClC07W,YAAY17W,CACd,EAAA,CACF,CACAqnH,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,IAAIi0E,IAAAA,CACJ,GAAI5zR,IAAK4xB,CAAAA,QAAQ,CAAE,CACjBgiQ,KAAO,IAAIw1E,IAAAA,CAAKppW,KAAK4xB,QAAQ,CAAE5xB,KAAKA,IAAI,EAC1C,CAAO,KAAA,CACL4zR,KAAO,IAAIw1E,IAAAA,CAAKppW,IAAM,CAAA,IAAA,EACxB,CACA,OAAO4zR,IACT,CACAh4D,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,CACnB,MAAM61D,KAAOj0E,KAAMpyK,CAAAA,QAAQ,CAC3B,GAAI,CAACqmP,IAAK5zR,CAAAA,IAAI,EAAI2/M,KAAAA,CAAM3/M,IAAI,CAAE,CAC5B4zR,IAAK5zR,CAAAA,IAAI,CAAG2/M,KAAM3/M,CAAAA,KAAI,CACjB,KAAA,GAAI,CAAC2/M,KAAM3/M,CAAAA,IAAI,EAAI4zR,IAAAA,CAAK5zR,IAAI,CAAE,CACnC2/M,KAAM3/M,CAAAA,IAAI,CAAG4zR,IAAK5zR,CAAAA,KAAI,CAExB,GAAI2/M,KAAM3/M,CAAAA,IAAI,CAAE,CACd2/M,KAAAA,CAAM3/M,IAAI,CAAGspW,iBAAAA,CAAkB3pJ,KAAM3/M,CAAAA,IAAI,EAC3C,CACF,CA3FAjS,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,MAAA,CACX,CAAA,IAAI,CAACkF,OAAO,CAAGlF,GAAAA,CAAIqK,MAAM,CACzB,IAAI,CAACh0H,UAAU,CAAG,EACpB,CAwFF,CAEA,MAAMi/G,KAAQ,CAAA,kBACd,CAAMu+I,MAAAA,uBAAAA,CACJ97W,YAAYo4N,UAAU,CAAExtM,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE1G,CAAC,CAAE6/C,EAAE,CAAC,CACrC,MAAM4kU,WAAAA,CAAc,CAACn8W,KAAOkT,CAAAA,IAAAA,GAAAA,CAC1B,MAAM/J,CAAAA,CAAI,CAAC,CAAA,EAAK+J,IAAG,EAAK,CAAA,CACxB,OAAO,CAAClT,KAAQmJ,CAAAA,CAAAA,EAAKA,CACvB,CAAA,CACA,MAAMizW,YAAAA,CAAe,CAAChkX,MAAQ4H,CAAAA,KAAAA,GAAAA,CAC5B5H,MAAOsU,CAAAA,CAAC,CAAGyvW,WAAYn8W,CAAAA,KAAAA,GAAU,GAAI,EACrC5H,CAAAA,CAAAA,OAAOgc,CAAC,CAAG+nW,WAAYn8W,CAAAA,KAAAA,GAAU,GAAI,EACrC5H,CAAAA,CAAAA,OAAOmc,CAAC,CAAG4nW,YAAYn8W,KAAO,CAAA,EAAA,EAChC,CACA,CAAA,MAAMq8W,WAAa,CAACjkX,MAAAA,CAAQ4H,SAC1B5H,MAAOsU,CAAAA,CAAC,CAAGyvW,WAAYn8W,CAAAA,KAAAA,GAAU,EAAI,CAAA,CAAA,CACrC5H,CAAAA,MAAOgc,CAAAA,CAAC,CAAG+nW,WAAAA,CAAYn8W,QAAU,EAAI,CAAA,CAAA,CACrC5H,CAAAA,MAAAA,CAAOmc,CAAC,CAAG4nW,WAAAA,CAAYn8W,QAAU,CAAG,CAAA,CAAA,CACpC5H,CAAAA,MAAOwf,CAAAA,CAAC,CAAGukW,WAAAA,CAAYn8W,MAAO,CAChC,EAAA,CAAA,CACA,MAAMs8W,SAAAA,CAAY,CAAClkX,MAAQ4H,CAAAA,KAAAA,GAAAA,CACzB,MAAM80N,IAAAA,CAAO,GAAOl9N,IAAAA,CAAKud,IAAI,CAAC,CAAA,CAAA,CAAK,EAAE,CACrC,CAAA,MAAMlN,CAAI,CAACk0W,CAAAA,WAAYn8W,CAAAA,KAAAA,GAAU,EAAI,CAAA,EAAA,CAAA,CAAM,EAAE,EAAK80N,IAAAA,CAClD,MAAM5sN,CAAAA,CAAI,CAACi0W,WAAAA,CAAYn8W,QAAU,EAAI,CAAA,EAAA,CAAA,CAAM,EAAE,EAAK80N,IAAAA,CAClD,MAAMp9N,CAAAA,CAAI,CAACykX,WAAAA,CAAYn8W,MAAO,EAAM,CAAA,CAAA,EAAE,EAAK80N,IAC3C,CAAA,MAAM3hN,CAAIvb,CAAAA,IAAAA,CAAKud,IAAI,CAAC,CAAA,EAAOlN,CAAIA,CAAAA,CAAAA,CAAIC,EAAIA,CAAIxQ,CAAAA,CAAAA,CAAIA,CAAAA,CAAAA,CAAAA,CAC/C,OAAOsI,KAAU,GAAA,EAAA,EACf,KAAK,CAAA,CACH5H,OAAOwI,GAAG,CAACqH,CAAGC,CAAAA,CAAAA,CAAGxQ,EAAGyb,CACpB,CAAA,CAAA,WACG,CACH/a,CAAAA,MAAAA,CAAOwI,GAAG,CAACuS,CAAAA,CAAGjL,CAAGxQ,CAAAA,CAAAA,CAAGuQ,GACpB,MACF,KAAK,CACH7P,CAAAA,MAAAA,CAAOwI,GAAG,CAACsH,CAAAA,CAAGiL,CAAGzb,CAAAA,CAAAA,CAAGuQ,GACpB,MACF,KAAK,EACH7P,MAAOwI,CAAAA,GAAG,CAACsH,CAAGxQ,CAAAA,CAAAA,CAAGyb,CAAGlL,CAAAA,CAAAA,CAAAA,CACpB,KACJ,CACF,CAAA,CACA,MAAMqE,IAAAA,CAAO,CAACrE,CAAGC,CAAAA,CAAAA,CAAGiB,CAAIlB,GAAAA,CAAAA,EAAK,CAAIkB,CAAAA,CAAAA,EAAKjB,CAAIiB,CAAAA,CAAAA,CAC1C,KAAM,CAAEosW,SAAS,CAAEgH,SAAS,CAAE9gF,UAAU,CAAE+gF,OAAO,CAAEC,OAAO,CAAEC,OAAO,CAAEtiJ,OAAO,CAAE,CAAG5B,UACjF,CAAA,MAAMmkJ,SAAW,CACf,CAAA,CACA,EACA,EACD,CAAA,CAACviJ,OAAU,CAAA,CAAA,CAAE,CACd,IAAI,CAAC94L,IAAI,CAAG,CAACjpC,EAAAA,CACX,MAAMukX,EAAAA,CAAKhlX,KAAKmQ,KAAK,CAAC1P,EAAI,GAAOkkX,CAAAA,CAAAA,SAAAA,CACjC,GAAIvxV,CAAG,CAAA,CACLoxV,YAAapxV,CAAAA,CAAAA,CAAGywQ,UAAU,CAACpjS,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CACrC2yB,CAAAA,CAAAA,CAAEte,CAAC,CAAGJ,KAAKipW,SAAS,CAACqH,GAAK,CAAE,CAAA,CAAErH,SAAS,CAACqH,EAAAA,CAAK,CAAE,CAAA,CAAE5xV,EAAEte,CAAC,CACpDse,CAAAA,CAAAA,CAAE5W,CAAC,CAAG9H,IAAAA,CAAKipW,SAAS,CAACqH,GAAK,CAAE,CAAA,CAAErH,SAAS,CAACqH,EAAAA,CAAK,EAAE,CAAE5xV,CAAAA,CAAE5W,CAAC,CACpD4W,CAAAA,CAAEzW,CAAAA,CAAC,CAAGjI,IAAKipW,CAAAA,SAAS,CAACqH,EAAK,CAAA,CAAA,CAAE,CAAErH,SAAS,CAACqH,EAAK,CAAA,CAAA,CAAE,CAAE5xV,CAAEzW,CAAAA,CAAC,EACtD,CACA,GAAI5c,CAAG,CAAA,CACL2kX,UAAU3kX,CAAG8jS,CAAAA,UAAU,CAACpjS,CAAAA,CAAI,EAAI,CAAE,CAAA,EACpC,CACA,GAAI+F,EAAG,CACLg+W,YAAAA,CAAah+W,EAAGq9R,UAAU,CAACpjS,EAAI,CAAI,CAAA,CAAA,CAAE,CACrC+F,CAAAA,EAAEsO,CAAC,CAAGJ,IAAKipW,CAAAA,SAAS,CAACqH,EAAK,CAAA,CAAA,CAAE,CAAErH,SAAS,CAACqH,EAAK,CAAA,CAAA,CAAE,CAAEx+W,CAAEsO,CAAAA,CAAC,CACpDtO,CAAAA,CAAAA,CAAEgW,CAAC,CAAG9H,KAAKipW,SAAS,CAACqH,EAAK,CAAA,CAAA,CAAE,CAAErH,SAAS,CAACqH,EAAK,CAAA,EAAA,CAAG,CAAEx+W,CAAEgW,CAAAA,CAAC,CACrDhW,CAAAA,CAAAA,CAAEmW,CAAC,CAAGjI,IAAAA,CAAKipW,SAAS,CAACqH,GAAK,CAAE,CAAA,CAAErH,SAAS,CAACqH,EAAAA,CAAK,GAAG,CAAEx+W,CAAAA,CAAEmW,CAAC,EACvD,CACA,GAAI7c,CAAAA,CAAG,CACL2kX,UAAW3kX,CAAAA,CAAAA,CAAG+jS,UAAU,CAACpjS,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,EACnC,GAAIkkX,SAAAA,CAAY,EAAI,CAAA,CAClB7kX,EAAEgV,CAAC,CAAGJ,IAAKipW,CAAAA,SAAS,CAACqH,EAAK,CAAA,EAAA,CAAG,CAAErH,SAAS,CAACqH,GAAK,EAAG,CAAA,CAAEllX,CAAEgV,CAAAA,CAAC,CACtDhV,CAAAA,CAAAA,CAAE0c,CAAC,CAAG9H,KAAKipW,SAAS,CAACqH,EAAK,CAAA,EAAA,CAAG,CAAErH,SAAS,CAACqH,GAAK,EAAG,CAAA,CAAEllX,EAAE0c,CAAC,CACtD1c,CAAAA,CAAAA,CAAE6c,CAAC,CAAGjI,IAAAA,CAAKipW,SAAS,CAACqH,GAAK,EAAG,CAAA,CAAErH,SAAS,CAACqH,GAAK,EAAG,CAAA,CAAEllX,EAAE6c,CAAC,EACxD,CACF,CACA,GAAIgjC,EAAM6iL,EAAAA,OAAAA,CAAU,EAAG,CACrB,MAAMyiJ,OAAS,CACbL,OAAAA,CACAC,QACAC,OACD,CAAA,CACD,IAAI,IAAI99R,EAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAG,EAAEA,CAAAA,CAAE,CACxB,IAAI,IAAI+6C,CAAI,CAAA,CAAA,CAAGA,EAAI,EAAI,CAAA,EAAEA,CAAE,CAAA,CACzBpiF,EAAE,CAACqnC,CAAAA,CAAI,EAAK+6C,CAAAA,CAAAA,CAAE,CAAGA,CAAIgjP,CAAAA,QAAAA,CAAWE,MAAM,CAACj+R,CAAAA,CAAE,CAACvmF,CAAI,CAAA,EAAA,CAAKshI,CAAE,CAAA,EAAI,CAAI,CAAA,GAAE,CAAK,CAAA,CAAA,CAAI,EAC1E,CACF,CACF,CACF,EACF,CACF,CACA,MAAMmjP,qBACJ5jJ,UAAWluM,CAAAA,CAAC,CAAErzB,CAAC,CAAEyG,CAAC,CAAE1G,CAAC,CAAE6/C,EAAE,CAAE,CACzB,OAAO,IAAI2kU,uBAAAA,CAAwB,IAAI,CAAElxV,EAAGrzB,CAAGyG,CAAAA,CAAAA,CAAG1G,EAAG6/C,EACvD,CAAA,CACA4hL,SAAS/gO,MAAM,CAAE,CACf,KAAM,CAAEm9W,SAAS,CAAEn0I,SAAS,CAAEm7I,SAAS,CAAE,CAAG,IAAI,CAChD,IAAIn+W,EAAIxG,IAAK0hK,CAAAA,GAAG,CAAC1hK,IAAKoU,CAAAA,GAAG,CAACupW,SAAS,CAAC,CAAE,CAAA,CAAEA,SAAS,CAAC,EAAA,CAAG,CAAEA,SAAS,CAAC,EAAG,CAAA,CAAA,CAAA,CACpE,IAAIl8I,EAAAA,CAAKk8I,SAAS,CAAC,CAAA,CAAE,CAAGn3W,CACxB,CAAA,IAAIk7N,GAAKi8I,SAAS,CAAC,CAAE,CAAA,CAAGn3W,EACxB,IAAIm7N,EAAAA,CAAKg8I,SAAS,CAAC,EAAE,CAAGn3W,CAAAA,CACxB,IAAIo7N,EAAAA,CAAK+7I,SAAS,CAAC,CAAA,CAAE,CAAGn3W,CACxB,CAAA,IAAIq7N,GAAK87I,SAAS,CAAC,CAAE,CAAA,CAAGn3W,EACxB,IAAIs7N,EAAAA,CAAK67I,SAAS,CAAC,EAAE,CAAGn3W,CAAAA,CACxB,IAAI,IAAI/F,EAAI,CAAGA,CAAAA,CAAAA,CAAI+oO,UAAW,EAAE/oO,CAAAA,CAAE,CAChC,MAAMiH,GAAAA,CAAMjH,CAAIkkX,CAAAA,SAAAA,CAChBn+W,EAAIxG,IAAK0hK,CAAAA,GAAG,CAAC1hK,IAAKoU,CAAAA,GAAG,CAACupW,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CAAEi2W,SAAS,CAACj2W,IAAM,EAAG,CAAA,CAAEi2W,SAAS,CAACj2W,GAAAA,CAAM,EAAG,CAAA,CAAA,CAAA,CAClF+5N,GAAKzhO,IAAKmU,CAAAA,GAAG,CAACstN,EAAAA,CAAIk8I,SAAS,CAACj2W,GAAAA,CAAM,CAAE,CAAA,CAAGlB,GACvCk7N,EAAK1hO,CAAAA,IAAAA,CAAKmU,GAAG,CAACutN,EAAAA,CAAIi8I,SAAS,CAACj2W,GAAAA,CAAM,CAAE,CAAA,CAAGlB,GACvCm7N,EAAK3hO,CAAAA,IAAAA,CAAKmU,GAAG,CAACwtN,GAAIg8I,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CAAGlB,CACvCo7N,CAAAA,CAAAA,EAAAA,CAAK5hO,KAAKoU,GAAG,CAACwtN,GAAI+7I,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CAAGlB,CACvCq7N,CAAAA,CAAAA,EAAAA,CAAK7hO,IAAKoU,CAAAA,GAAG,CAACytN,EAAI87I,CAAAA,SAAS,CAACj2W,GAAAA,CAAM,EAAE,CAAGlB,CAAAA,CAAAA,CACvCs7N,GAAK9hO,IAAKoU,CAAAA,GAAG,CAAC0tN,EAAI67I,CAAAA,SAAS,CAACj2W,GAAAA,CAAM,EAAE,CAAGlB,CAAAA,EACzC,CACAhG,MAAOorB,CAAAA,MAAM,CAAC5iB,GAAG,CAAC,CAACy4N,GAAKG,EAAC,EAAK,GAAK,CAACF,GAAKG,EAAC,EAAK,EAAK,CAACF,CAAAA,EAAKG,CAAAA,EAAC,EAAK,EAAA,CAAA,CAChEthO,OAAOyrB,WAAW,CAACjjB,GAAG,CAAC,CAAC44N,EAAAA,CAAKH,EAAC,EAAK,EAAA,CAAK,CAACI,EAAAA,CAAKH,EAAC,EAAK,GAAK,CAACI,EAAKH,CAAAA,EAAC,EAAK,EACrE,CAAA,CAAA,OAAO,IACT,CACAQ,YAAa,CACX,KAAM,CAAE0hE,UAAU,CAAE85E,SAAS,CAAEn0I,SAAS,CAAEm7I,SAAS,CAAE,CAAG,IAAI,CAC5D,MAAMnkX,OAAS,IAAI8Z,YAAAA,CAAa,IAAI,CAACynN,SAAS,CAAG,CAAA,CAAA,CACjD,IAAIN,EAAIC,CAAAA,EAAAA,CAAIC,GAAIC,EAAIC,CAAAA,EAAAA,CAAIC,EACxB,CAAA,IAAI,IAAIhiO,CAAI,CAAA,CAAA,CAAGA,EAAI0pO,SAAW,CAAA,EAAE1pO,EAAE,CAChC,MAAM4H,GAAM5H,CAAAA,CAAAA,CAAI6kX,UAChBljJ,EAAKk8I,CAAAA,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACvBg6N,EAAKi8I,CAAAA,SAAS,CAACj2W,GAAAA,CAAM,EAAE,CACvBi6N,EAAAA,CAAKg8I,SAAS,CAACj2W,IAAM,CAAE,CAAA,CACvBk6N,EAAK+7I,CAAAA,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACvBm6N,EAAK87I,CAAAA,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACvBo6N,EAAAA,CAAK67I,SAAS,CAACj2W,GAAAA,CAAM,CAAE,CAAA,CACvB,MAAMvB,GAAMnG,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,IAAI,CAAC4tN,SAAS,CAAE,CAACjiO,EAAI,CAAA,EAAK,GAC/C,CAAA,CAAA,IAAI,IAAIW,CAAIX,CAAAA,CAAAA,CAAI,GAAKW,CAAAA,CAAAA,CAAI0F,IAAK,EAAE1F,CAAAA,CAAE,CAChC,MAAM2yB,EAAIywQ,UAAU,CAACpjS,EAAI,CAAE,CAAA,CAC3B,MAAM2/K,EAAK,CAAChtJ,CAAAA,CAAAA,GAAM,EAAC,EAAK,IAAA,CACxB,MAAMitJ,EAAK,CAACjtJ,CAAAA,CAAM,GAAA,EAAA,CAAK,IAAI,EAAK,KAChC,MAAMktJ,EAAAA,CAAK,CAACltJ,CAAAA,CAAI,IAAI,EAAK,IACzB5yB,CAAAA,MAAM,CAACC,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAG,CAAC,CAAA,CAAI2/K,EAAC,EAAKqhD,GAAKrhD,EAAKwhD,CAAAA,EACzCphO,CAAAA,MAAM,CAACC,EAAI,CAAI,CAAA,CAAA,CAAE,CAAI,CAAA,CAAI4/K,CAAAA,EAAC,EAAKqhD,EAAAA,CAAKrhD,GAAKwhD,EACzCrhO,CAAAA,MAAM,CAACC,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG,CAAC,EAAI6/K,EAAC,EAAKqhD,EAAKrhD,CAAAA,EAAAA,CAAKwhD,GAC3C,CACF,CACA,OAAOthO,MACT,CACA2kX,SAAU3kX,CAAAA,MAAM,CAAE,CAChB,KAAM,CAAEm9W,SAAS,CAAEn0I,SAAS,CAAEm7I,SAAS,CAAE,CAAG,IAAI,CAChD,IAAIljJ,EAAIC,CAAAA,EAAAA,CAAIC,GAAIC,EAAIC,CAAAA,EAAAA,CAAIC,GACxB,IAAI,IAAIhiO,CAAI,CAAA,CAAA,CAAGA,EAAI0pO,SAAW,CAAA,EAAE1pO,EAAE,CAChC,MAAM4H,IAAM5H,CAAI6kX,CAAAA,SAAAA,CAChBljJ,EAAKk8I,CAAAA,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACvBg6N,EAAAA,CAAKi8I,SAAS,CAACj2W,GAAAA,CAAM,CAAE,CAAA,CACvBi6N,GAAKg8I,SAAS,CAACj2W,IAAM,CAAE,CAAA,CACvBk6N,GAAK+7I,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACvBm6N,EAAK87I,CAAAA,SAAS,CAACj2W,GAAAA,CAAM,EAAE,CACvBo6N,EAAAA,CAAK67I,SAAS,CAACj2W,IAAM,CAAE,CACvBlH,CAAAA,MAAM,CAACV,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG2hO,EACpBjhO,CAAAA,MAAM,CAACV,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG4hO,EACpBlhO,CAAAA,MAAM,CAACV,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG6hO,EACpBnhO,CAAAA,MAAM,CAACV,CAAI,CAAA,CAAA,CAAI,EAAE,CAAG8hO,EACpBphO,CAAAA,MAAM,CAACV,EAAI,CAAI,CAAA,CAAA,CAAE,CAAG+hO,EACpBrhO,CAAAA,MAAM,CAACV,EAAI,CAAI,CAAA,CAAA,CAAE,CAAGgiO,GACtB,CACF,CACAM,cAAAA,CAAe5hO,MAAM,CAAE,CACrB,KAAM,CAAEm9W,SAAS,CAAEn0I,SAAS,CAAEm7I,SAAS,CAAE,CAAG,IAAI,CAChDnkX,MAAAA,CAAOsU,CAAC,CAAG,CACXtU,CAAAA,MAAAA,CAAOgc,CAAC,CAAG,CACXhc,CAAAA,MAAAA,CAAOmc,CAAC,CAAG,CAAA,CACX,IAAI,IAAIlc,EAAI,CAAGA,CAAAA,CAAAA,CAAI+oO,UAAW,EAAE/oO,CAAAA,CAAE,CAChC,MAAMiH,GAAAA,CAAMjH,CAAIkkX,CAAAA,SAChBnkX,CAAAA,MAAOsU,CAAAA,CAAC,EAAI6oW,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CAAGi2W,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACnDlH,MAAAA,CAAOgc,CAAC,EAAImhW,SAAS,CAACj2W,GAAAA,CAAM,EAAE,CAAGi2W,SAAS,CAACj2W,GAAM,CAAA,CAAA,CAAE,CACnDlH,MAAAA,CAAOmc,CAAC,EAAIghW,SAAS,CAACj2W,GAAAA,CAAM,EAAE,CAAGi2W,SAAS,CAACj2W,GAAM,CAAA,CAAA,EAAE,CAErDlH,OAAO+V,SAAS,CAAC,EAAMizN,CAAAA,SAAAA,EACzB,CACA,IAAIjH,YAAAA,EAAe,CACjB,OAAO,IACT,CACA,IAAIiH,WAAY,CACd,OAAOxpO,KAAK0V,IAAI,CAAC,IAAI,CAACqsN,SAAS,CAAG,GAAA,CACpC,CACA,IAAI4iJ,WAAY,CACd,OAAO,IAAI,CAAChH,SAAS,CAACj9W,MAAM,CAAG,IAAI,CAAC8oO,SAAS,CAE/CkE,UAAa,EAAA,CACX,MAAMC,OAAU,CAAA,CACd,GACA,CAAA,GAAA,CACA,IACA,QACA,CAAA,QAAA,CACA,QACA,CAAA,SAAA,CACA,UACA,SACA,CAAA,SAAA,CACA,QACA,OACA,CAAA,OAAA,CACA,QACD,CACD,KAAM,CAAEnL,OAAO,CAAE,CAAG,IAAI,CACxB,GAAIA,OAAAA,CAAU,EAAG,CACf,MAAMoL,SAAY,CAAA,EAAE,CACpB,IAAI,IAAIntO,EAAI,CAAGA,CAAAA,CAAAA,CAAI,GAAI,EAAEA,CAAAA,CAAE,CACzBmtO,SAAAA,CAAUrsO,IAAI,CAAC,CAAC,OAAO,EAAEd,EAAE,CAAC,EAC9B,CACA,MAAMmK,SAAW5K,IAAKoU,CAAAA,GAAG,IAAI,CAC3B,QAAA,CACA,SACA,QACD,CAAA,CAAC9M,GAAG,CAAC,IAAQqmO,EAAAA,OAAAA,CAAQjkO,OAAO,CAAC3F,QAC9B4pO,OAAQpkO,CAAAA,MAAM,CAACqB,QAAAA,CAAW,EAAG,CAAMgjO,CAAAA,GAAAA,SAAAA,EACrC,CACA,MAAMnzN,IAAAA,CAAO,EACbkzN,CAAAA,OAAAA,CAAQvgO,OAAO,CAAC,IACdqN,EAAAA,CAAAA,IAAI,CAAC1W,IAAAA,CAAK,CAAG,IAAIuW,YAAAA,CAAa,IAAI,CAACynN,SAAS,EAC9C,CAAA,CAAA,CACA,MAAM3uM,CAAI,CAAA,IAAI1W,KACd,MAAM3c,CAAAA,CAAI,IAAIuoB,IAAAA,CACd,MAAM9hB,CAAI,CAAA,IAAIkW,KACd,MAAM5c,CAAAA,CAAI,IAAI8iB,IACd,CAAA,MAAM+8B,EAAK6iL,CAAAA,OAAAA,CAAU,EAAI,IAAIloN,YAAAA,CAAa,IAAM,IAChD,CAAA,MAAM4nN,KAAO,IAAI,CAACZ,UAAU,CAACluM,EAAGrzB,CAAGyG,CAAAA,CAAAA,CAAG1G,CAAG6/C,CAAAA,EAAAA,CAAAA,CACzC,IAAI,IAAIl/C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACshO,SAAS,CAAE,EAAEthO,CAAAA,CAAE,CACrCyhO,IAAKx4L,CAAAA,IAAI,CAACjpC,CAAAA,CACVga,CAAAA,IAAK3F,CAAAA,CAAC,CAACrU,CAAAA,CAAE,CAAG2yB,CAAEte,CAAAA,CAAC,CACf2F,KAAK+B,CAAC,CAAC/b,EAAE,CAAG2yB,CAAAA,CAAE5W,CAAC,CACf/B,IAAKkC,CAAAA,CAAC,CAAClc,CAAE,CAAA,CAAG2yB,CAAEzW,CAAAA,CAAC,CACflC,IAAAA,CAAKozN,KAAK,CAACptO,EAAE,CAAGV,CAAAA,CAAE+U,CAAC,CACnB2F,KAAKqzN,KAAK,CAACrtO,CAAE,CAAA,CAAGV,EAAEyc,CAClB/B,CAAAA,IAAKszN,CAAAA,KAAK,CAACttO,CAAE,CAAA,CAAGV,CAAE4c,CAAAA,CAAC,CACnBlC,IAAAA,CAAKuzN,KAAK,CAACvtO,CAAAA,CAAE,CAAGV,CAAEigB,CAAAA,CAAC,CACnBvF,KAAKwzN,OAAO,CAACxtO,CAAE,CAAA,CAAG+F,EAAEsO,CACpB2F,CAAAA,IAAAA,CAAKyzN,OAAO,CAACztO,CAAAA,CAAE,CAAG+F,CAAEgW,CAAAA,CAAC,CACrB/B,IAAAA,CAAK0zN,OAAO,CAAC1tO,EAAE,CAAG+F,CAAAA,CAAEmW,CACpBlC,CAAAA,IAAK2zN,CAAAA,MAAM,CAAC3tO,CAAAA,CAAE,CAAG,CAACX,EAAEgV,CAAC,CAAG,EAAE,EAAKixN,KAC/BtrN,CAAAA,IAAAA,CAAK4zN,MAAM,CAAC5tO,CAAAA,CAAE,CAAIX,CAAAA,CAAE0c,CAAAA,CAAC,CAAG,EAAE,EAAKupN,KAC/BtrN,CAAAA,KAAK6zN,MAAM,CAAC7tO,EAAE,CAAIX,CAAAA,CAAAA,CAAE6c,CAAC,CAAG,EAAE,EAAKopN,KAC/BtrN,CAAAA,KAAKy8M,OAAO,CAACz2N,CAAE,CAAA,CAAGX,EAAEkgB,CAAC,EAAI,EAAI,CAAC,EAAA,CAAKlgB,EAAEkgB,CAAC,EAAI,CAAI,CAAA,EAAA,CAAK,CAAChgB,IAAKgqG,CAAAA,GAAG,CAAC,CAAA,CAAIlqG,EAAEkgB,CAAC,CAAG,CACvE,CAAA,CAAA,GAAI2/B,GAAI,CACN,IAAI,IAAI7/C,CAAI,CAAA,CAAA,CAAGA,EAAI,EAAI,CAAA,EAAEA,CAAE,CAAA,CACzB2a,IAAI,CAAC,CAAC,OAAO,EAAE3a,EAAE,CAAC,CAAC,CAACW,CAAAA,CAAE,CAAGk/C,EAAE,CAAC7/C,GAAE,CAElC,CACF,CACA,OAAO,IAAImhO,UAAAA,CAAW,CACpB,CACEl9N,IAAAA,CAAM,QACN08C,CAAAA,KAAAA,CAAO,IAAI,CAACshL,SAAS,CACrBn9E,UAAAA,CAAY+oF,QAAQrmO,GAAG,CAAC,IACtB,EAAA,CAAA,OAAO,CACLvD,IAAMA,CAAAA,IAAAA,CACNmU,IAAM,CAAA,OAAA,CACN+vC,SAAU,CACVzY,CAAAA,OAAAA,CAAS/0B,IAAI,CAAC1W,IAAAA,CAAK,CAEvB,CAAA,CACF,CACD,CAAA,CAAE,IAAI,CAAC6/N,QAAQ,CAClB,CACF,CAEA,MAAMwhJ,UAAa,CAAA,CAAC/lX,MAAQguW,CAAAA,YAAAA,CAAch3V,IAAKq2V,SAAW2Y,CAAAA,UAAAA,GAAAA,CACxD,IAAI,IAAI5kX,EAAI,CAAGA,CAAAA,CAAAA,CAAI4kX,UAAY,CAAA,EAAE5kX,EAAE,CACjC,IAAI,IAAIumF,CAAI,CAAA,CAAA,CAAGA,EAAI0lR,SAAW,CAAA,EAAE1lR,CAAE,CAAA,CAChC3nF,MAAM,CAACoB,CAAAA,CAAI4sW,aAAermR,CAAE,CAAA,CAAG3wE,GAAG,CAAC5V,CAAAA,CAAIisW,SAAY1lR,CAAAA,CAAAA,EAAE,CAEzD,CACF,CACA,CAAMs+R,MAAAA,wBAAAA,SAAiCnhJ,mBA+BrCv6L,OAAU,EAAA,CACR,IAAI,CAACujM,aAAa,EAAEvjM,OAAAA,EACpB,CAAA,IAAI,CAAC27U,YAAY,EAAE37U,OACnB,EAAA,CAAA,IAAI,CAAC47U,UAAU,EAAE57U,OACjB,EAAA,CAAA,IAAI,CAAC67U,UAAU,EAAE77U,OAAAA,EACjB,CAAA,IAAI,CAAC87U,UAAU,EAAE97U,OAAAA,EAAAA,CACjB,KAAK,CAACA,OAAAA,GACR,CACA46L,wBAAAA,CAAyBh9J,OAAO,CAAE,CAChCA,QAAQx+D,GAAG,CAAC,yBAA0B,IACtCw+D,CAAAA,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,WAAY,IAAI,CAACw8W,UAAU,CAAG,EAAI,CAChD,EAAA,CACA/gJ,iBAAkBnhG,CAAAA,QAAQ,CAAE,CAC1B,IAAI,CAACkhG,wBAAwB,CAAClhG,SAAS97D,OAAO,CAAA,CAC9C87D,QAASn5B,CAAAA,YAAY,CAAC,eAAiB,CAAA,IAAI,CAACgjI,aAAa,EACzD7pG,QAASn5B,CAAAA,YAAY,CAAC,cAAA,CAAgB,IAAI,CAACo7Q,YAAY,EACvD,GAAI,IAAI,CAACC,UAAU,CAAE,CACnBliP,QAAAA,CAASn5B,YAAY,CAAC,YAAA,CAAc,IAAI,CAACq7Q,UAAU,CACnDliP,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,aAAc,IAAI,CAACs7Q,UAAU,CACnDniP,CAAAA,QAAAA,CAASn5B,YAAY,CAAC,YAAA,CAAc,IAAI,CAACu7Q,UAAU,EACrD,CACF,CACAxgJ,eAAgBzkL,CAAAA,KAAK,CAAE,CACrB,MAAMr6B,KAAQpmB,CAAAA,IAAAA,CAAK0V,IAAI,CAAC1V,IAAAA,CAAKud,IAAI,CAACkjC,KAAAA,CAAAA,CAAAA,CAClC,MAAMp6B,MAASrmB,CAAAA,IAAAA,CAAK0V,IAAI,CAAC+qC,MAAQr6B,KACjC,CAAA,CAAA,OAAO,IAAI9D,IAAAA,CAAK8D,MAAOC,MACzB,CAAA,CAxDA7d,WAAYkiC,CAAAA,MAAM,CAAEk2L,UAAU,CAAC,CAC7B,KAAK,CAACl2L,OAAQk2L,UACd,CAAA,CAAA,KAAM,CAAE+8I,SAAS,CAAEgH,SAAS,CAAEn7I,SAAS,CAAEzH,SAAS,CAAE8hE,UAAU,CAAErhE,OAAO,CAAE,CAAG5B,UAC5E,CAAA,IAAI,CAAC5lE,MAAM,CAAG,IAAI1gJ,YAAakvN,CAAAA,SAAAA,CAAY,GAC3C5I,UAAWukJ,CAAAA,SAAS,CAAC,IAAI,CAACnqN,MAAM,CAChC,CAAA,IAAI,CAACmyE,aAAa,CAAG,IAAI,CAACt6K,aAAa,CAAC,YAAch3B,CAAAA,mBAAAA,CAAqB,IAAI,CAACqpM,eAAe,CAACnD,SAAAA,CAAAA,CAAY8hE,YAC5G,MAAM8hF,gBAAAA,CAAmB,IAAI,CAACzgJ,eAAe,CAACsE,SAAAA,CAC9Cm8I,CAAAA,gBAAiB7wW,CAAAA,CAAC,EAAI,CACtB,CAAA,IAAI,CAACywW,YAAY,CAAG,IAAI,CAAC1yT,aAAa,CAAC,WAAan5B,CAAAA,mBAAAA,CAAqBisV,kBACzE,MAAMC,gBAAAA,CAAmB,IAAI,CAACL,YAAY,CAAC10U,IAAI,GAC/Cu0U,UAAWQ,CAAAA,gBAAAA,CAAkB,GAAIjI,SAAWgH,CAAAA,SAAAA,CAAWn7I,SACvD,CAAA,CAAA,GAAIm7I,YAAc,EAAI,CAAA,CACpB,IAAI,IAAIlkX,EAAI,CAAGA,CAAAA,CAAAA,CAAI+oO,SAAW,CAAA,EAAE/oO,EAAE,CAChCmlX,gBAAgB,CAACnlX,CAAI,CAAA,EAAA,CAAK,GAAG,CAAG,CAChCmlX,CAAAA,gBAAgB,CAACnlX,CAAI,CAAA,EAAA,CAAK,EAAG,CAAA,CAAG,CAChCmlX,CAAAA,gBAAgB,CAACnlX,CAAAA,CAAI,GAAK,EAAG,CAAA,CAAG,EAClC,CACF,CACA,IAAI,CAAC8kX,YAAY,CAAC1zU,MAAM,GACxB,GAAI2wL,OAAAA,CAAU,EAAG,CACf,MAAM78N,KAAO,IAAI,CAACu/N,eAAe,CAACnD,UAClC,CAAA,IAAI,CAACyjJ,UAAU,CAAG,IAAI,CAAC3yT,aAAa,CAAC,YAAA,CAAch3B,oBAAqBl2B,IAAM,CAAA,IAAIi4B,WAAYgjM,CAAAA,UAAAA,CAAWgkJ,OAAO,CAACzpW,MAAM,CACvH,CAAA,CAAA,IAAI,CAACsqW,UAAU,CAAG,IAAI,CAAC5yT,aAAa,CAAC,YAAA,CAAch3B,mBAAqBl2B,CAAAA,IAAAA,CAAM,IAAIi4B,WAAYgjM,CAAAA,UAAAA,CAAWikJ,OAAO,CAAC1pW,MAAM,CACvH,CAAA,CAAA,IAAI,CAACuqW,UAAU,CAAG,IAAI,CAAC7yT,aAAa,CAAC,aAAch3B,mBAAqBl2B,CAAAA,IAAAA,CAAM,IAAIi4B,WAAAA,CAAYgjM,WAAWkkJ,OAAO,CAAC3pW,MAAM,CAAA,EACzH,MAAO,CACL,IAAI,CAACqqW,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,UAAU,CAAG,KACpB,CACF,CA4BF,CAEA,MAAMG,UAAa,CAAA,IAAIr4W,UAAW,CAAA,CAChC,IACA,GACA,CAAA,GAAA,CACA,GACD,CACD,CAAA,MAAMs4W,eAAiB,IAAIt4W,UAAAA,CAAW,CACpC,EAAA,CACA,IACA,GACA,CAAA,GAAA,CACA,EACA,CAAA,GAAA,CACA,IACA,EACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,GACD,CACD,CAAA,MAAMu4W,YAAc,IAAIl9W,GAAAA,CAAI,CAC1B,CACE,MAAA,CACAk1B,SACD,CAAA,CACD,CACE,OACAvwB,CAAAA,UAAAA,CACD,CACD,CACE,QACAqwB,UACD,CAAA,CACD,CACE,QAAA,CACAC,YACD,CACD,CACE,MACA5iB,UACD,CAAA,CACD,CACE,MACA0iB,CAAAA,WAAAA,CACD,CACD,CACE,QACAtjB,YACD,CAAA,CACD,CACE,QAAA,CACA0rW,aACD,CACF,CACD,CAAMC,MAAAA,SAAAA,CAOJ,MAAMv8U,IAAO,EAAA,CACX,KAAM,CAAEthC,KAAK,CAAE0kI,IAAI,CAAE,CAAG,MAAM,IAAI,CAACiwG,MAAM,CAACrzM,IAAI,EAAA,CAC9C,GAAIojG,IAAM,CAAA,CACR,MAAM,IAAIniI,MAAM,sCAClB,CAAA,CACA,IAAI,CAACpJ,IAAI,CAAC6G,KACV,CAAA,CAAA,IAAI,CAAC89W,YAAY,GAAG99W,KAAAA,CAAM8F,UAAU,EACtC,CACA3M,IAAKkZ,CAAAA,IAAI,CAAE,CACT,GAAI,CAAC,IAAI,CAACA,IAAI,CAAE,CACd,IAAI,CAACA,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAClL,IAAI,CAAG,IAAIE,QAAAA,CAAS,IAAI,CAACgL,IAAI,CAACU,MAAM,CACzC,CAAA,IAAI,CAACgrW,IAAI,CAAG1rW,IAAK/Z,CAAAA,OAAM,CAClB,KAAA,CACL,MAAMs9V,SAAAA,CAAY,IAAI,CAACmoB,IAAI,CAAG,IAAI,CAACzsI,IAAI,CACvC,MAAM0sI,OAAUpoB,CAAAA,SAAAA,CAAYvjV,KAAK/Z,MAAM,CACvC,GAAI,IAAI,CAAC+Z,IAAI,CAAC/Z,MAAM,EAAI0lX,OAAAA,CAAS,CAC/B,GAAI,IAAI,CAAC1sI,IAAI,CAAG,CAAG,CAAA,CACjB,IAAI,CAACj/N,IAAI,CAAC4rW,UAAU,CAAC,CAAG,CAAA,IAAI,CAAC3sI,IAAI,CAAE,IAAI,CAACysI,IAAI,CAC5C,CAAA,IAAI,CAAC1rW,IAAI,CAACzR,GAAG,CAACyR,KAAMujV,SACpB,CAAA,CAAA,IAAI,CAACtkH,IAAI,CAAG,CACZ,CAAA,IAAI,CAACysI,IAAI,CAAGC,QACd,CAAO,KAAA,CACL,IAAI,CAAC3rW,IAAI,CAACzR,GAAG,CAACyR,IAAM,CAAA,IAAI,CAAC0rW,IAAI,CAC7B,CAAA,IAAI,CAACA,IAAI,EAAI1rW,IAAK/Z,CAAAA,OAAM,CAE5B,CAAA,KAAO,CACL,MAAM+Q,IAAM,IAAIjE,UAAAA,CAAW44W,SAC3B,GAAI,IAAI,CAAC1sI,IAAI,CAAG,CAAK,EAAA,IAAI,CAACysI,IAAI,CAAG,IAAI,CAAC1rW,IAAI,CAAC/Z,MAAM,CAAE,CACjD+Q,GAAAA,CAAIzI,GAAG,CAAC,IAAI,CAACyR,IAAI,CAACwrD,QAAQ,CAAC,IAAI,CAACyzK,IAAI,CAAE,IAAI,CAACysI,IAAI,CAAA,CAAG,GACpD,CAAO,KAAA,CACL10W,GAAIzI,CAAAA,GAAG,CAAC,IAAI,CAACyR,IAAI,CAAE,CAAA,EACrB,CACAhJ,GAAIzI,CAAAA,GAAG,CAACyR,IAAAA,CAAMujV,UACd,CAAA,IAAI,CAACvjV,IAAI,CAAGhJ,GACZ,CAAA,IAAI,CAAClC,IAAI,CAAG,IAAIE,SAAS,IAAI,CAACgL,IAAI,CAACU,MAAM,CACzC,CAAA,IAAI,CAACu+N,IAAI,CAAG,CACZ,CAAA,IAAI,CAACysI,IAAI,CAAGC,QACd,CACF,CACF,CACAE,OAAU,EAAA,CACR,GAAI,IAAI,CAAC5sI,IAAI,CAAG,EAAG,CACjB,IAAI,CAACj/N,IAAI,CAAC4rW,UAAU,CAAC,CAAA,CAAG,IAAI,CAAC3sI,IAAI,CAAE,IAAI,CAACysI,IAAI,CAC5C,CAAA,IAAI,CAACA,IAAI,EAAI,IAAI,CAACzsI,IAAI,CACtB,IAAI,CAACA,IAAI,CAAG,EACd,CACF,CACA,IAAIskH,WAAY,CACd,OAAO,IAAI,CAACmoB,IAAI,CAAG,IAAI,CAACzsI,IAC1B,CACA6sI,OAAAA,EAAU,CACR,MAAM/lX,MAAAA,CAAS,IAAI,CAAC+O,IAAI,CAACg3W,OAAO,CAAC,IAAI,CAAC7sI,IAAI,CAC1C,CAAA,IAAI,CAACA,IAAI,EACT,CAAA,OAAOl5O,MACT,CACAmO,UAAW,CACT,MAAMnO,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACZ,QAAQ,CAAC,IAAI,CAAC+qO,IAAI,CAC3C,CAAA,IAAI,CAACA,IAAI,EAAA,CACT,OAAOl5O,MACT,CACAgmX,UAAW,CACT,MAAMhmX,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACi3W,QAAQ,CAAC,IAAI,CAAC9sI,IAAI,CAAE,IAC7C,CAAA,CAAA,IAAI,CAACA,IAAI,EAAI,CAAA,CACb,OAAOl5O,MACT,CACAwO,SAAY,EAAA,CACV,MAAMxO,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACP,SAAS,CAAC,IAAI,CAAC0qO,IAAI,CAAE,IAC9C,CAAA,CAAA,IAAI,CAACA,IAAI,EAAI,CAAA,CACb,OAAOl5O,MACT,CACAimX,QAAW,EAAA,CACT,MAAMjmX,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACk3W,QAAQ,CAAC,IAAI,CAAC/sI,IAAI,CAAE,IAAA,CAC7C,CAAA,IAAI,CAACA,IAAI,EAAI,EACb,OAAOl5O,MACT,CACA0O,SAAY,EAAA,CACV,MAAM1O,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACL,SAAS,CAAC,IAAI,CAACwqO,IAAI,CAAE,IAC9C,CAAA,CAAA,IAAI,CAACA,IAAI,EAAI,CAAA,CACb,OAAOl5O,MACT,CACAkmX,YAAa,CACX,MAAMlmX,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACm3W,UAAU,CAAC,IAAI,CAAChtI,IAAI,CAAE,IAAA,CAC/C,CAAA,IAAI,CAACA,IAAI,EAAI,CAAA,CACb,OAAOl5O,MACT,CACAmmX,UAAa,EAAA,CACX,MAAMnmX,MAAS,CAAA,IAAI,CAAC+O,IAAI,CAACo3W,UAAU,CAAC,IAAI,CAACjtI,IAAI,CAAE,IAAA,CAC/C,CAAA,IAAI,CAACA,IAAI,EAAI,CAAA,CACb,OAAOl5O,MACT,CAhGAgI,WAAYu0O,CAAAA,MAAM,CAAEmpI,YAAY,CAAC,CAC/B,IAAI,CAACxsI,IAAI,CAAG,CACZ,CAAA,IAAI,CAACysI,IAAI,CAAG,CACZ,CAAA,IAAI,CAACppI,MAAM,CAAGA,MACd,CAAA,IAAI,CAACmpI,YAAY,CAAGA,aACtB,CA4FF,CACA,MAAMU,WAAc,CAACt+S,QACnB,MAAMnuB,QAAAA,CAAW,EAAE,CACnB,MAAMypL,QAAW,CAAA,EAAE,CACnB,IAAIr9N,MAAAA,CACJ,IAAI,IAAI9F,EAAI,CAAGA,CAAAA,CAAAA,CAAI6nE,KAAM5nE,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CACnC,MAAM42D,KAAAA,CAAQiR,KAAK,CAAC7nE,CAAAA,CAAE,CAACW,KAAK,CAAC,GAC7B,CAAA,CAAA,OAAOi2D,KAAK,CAAC,EAAE,EACb,IAAK,SACHusK,CAAAA,QAAAA,CAASriO,IAAI,CAAC81D,KAAAA,CAAM/1D,KAAK,CAAC,CAAA,CAAA,CAAGhB,IAAI,CAAC,GAAA,CAAA,CAAA,CAClC,MACF,IAAK,SACHiG,MAAS8wD,CAAAA,KAAK,CAAC,CAAA,CAAE,CACjB,MACF,IAAK,SACHld,CAAAA,QAAAA,CAAS54C,IAAI,CAAC,CACZwC,KAAMszD,KAAK,CAAC,EAAE,CACd5W,KAAAA,CAAO9pC,QAAS0gD,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAE,IAC1ButF,UAAY,CAAA,EAAE,CAEhB,CAAA,CAAA,MACG,IAAA,UAAA,CACH,CACE,GAAI,CAACmhO,YAAYh9W,GAAG,CAACsuD,KAAK,CAAC,CAAA,CAAE,CAAG,CAAA,CAC9B,MAAM,IAAI1sD,KAAAA,CAAM,CAAC,iCAAiC,EAAE0sD,KAAK,CAAC,CAAE,CAAA,CAAC,eAAe,CAAC,CAC/E,CACA,MAAMjb,OAAAA,CAAUjC,QAAQ,CAACA,QAAAA,CAASz5C,MAAM,CAAG,EAAE,CAC7C07C,OAAAA,CAAQwoG,UAAU,CAACrjJ,IAAI,CAAC,CACtB2W,IAAMm/C,CAAAA,KAAK,CAAC,CAAE,CAAA,CACdtzD,KAAMszD,KAAK,CAAC,EAAE,CACd7nB,OAAAA,CAAS,IACTyY,CAAAA,QAAAA,CAAU89T,YAAYvjX,GAAG,CAAC60D,KAAK,CAAC,EAAE,CAAE03C,CAAAA,iBAAiB,CACvD,CAAA,CACA,KACF,CACF,QACE,MAAM,IAAIpkG,KAAAA,CAAM,CAAC,2BAA2B,EAAE0sD,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,CAC3E,CACF,CACA,OAAO,CACLld,QACA5zC,CAAAA,MAAAA,CACAq9N,QACF,CACF,CAAA,CACA,MAAMijJ,eAAkB,CAAC1sU,WACvB,MAAM2sU,eAAAA,CAAkB,CACtB,OAAA,CACA,QACA,OACA,CAAA,OAAA,CACA,OACA,CAAA,OAAA,CACA,cACA,aACA,CAAA,aAAA,CACA,aACA,CAAA,aAAA,CACA,cACA,OACA,CAAA,OAAA,CACA,QACA,OACA,CAAA,OAAA,CACA,QACD,CACD,MAAMC,gBAAmB,CAAA,CACvB,kBACA,iBACA,CAAA,cAAA,CACA,cACD,CAAA,CACD,MAAMC,YAAe,CAAA,IAAIvnX,KAAM,CAAA,EAAA,CAAA,CAAIg0J,IAAI,CAAC,EAAA,CAAA,CAAInsJ,GAAG,CAAC,CAAC2/W,EAAGxmX,CAAI,GAAA,CAAC,OAAO,EAAEA,EAAE,CAAC,CAAA,CACrE,MAAMymX,eAAAA,CAAkB,KACtB,OAAO/sU,QAAQ,CAAC,CAAA,CAAE,CAACp2C,IAAI,GAAK,SAAWo2C,QAAQ,CAAC,EAAE,CAACyqG,UAAU,CAAC4T,KAAK,CAAC,CAACplI,CAAAA,CAAG3yB,IAAI2yB,CAAErvB,CAAAA,IAAI,GAAK+iX,eAAe,CAACrmX,CAAE,CAAA,EAAI2yB,EAAElb,IAAI,GAAK,UAAYiiC,QAAQ,CAAC,EAAE,CAACp2C,IAAI,GAAK,QAAA,EAAYo2C,QAAQ,CAAC,CAAA,CAAE,CAACyqG,UAAU,CAAC4T,KAAK,CAAC,CAACplI,CAAAA,CAAG3yB,IAAI2yB,CAAErvB,CAAAA,IAAI,GAAKgjX,gBAAgB,CAACtmX,EAAE,EAAI2yB,CAAAA,CAAElb,IAAI,GAAK,OACzP,CACA,CAAA,MAAMivW,aAAgB,CAAA,IAAA,CACpB,OAAOhtU,QAAQ,CAAC,CAAE,CAAA,CAACp2C,IAAI,GAAK,IAAA,EAAQ,CAClC,CACA,CAAA,EAAA,CACA,GACD,CAAC2F,OAAO,CAACywC,QAAQ,CAAC,CAAE,CAAA,CAACyqG,UAAU,CAAClkJ,MAAM,CAAM,GAAA,CAAC,CAAKy5C,EAAAA,QAAQ,CAAC,CAAE,CAAA,CAACyqG,UAAU,CAAC4T,KAAK,CAAC,CAACplI,CAAAA,CAAG3yB,CAAI2yB,GAAAA,CAAAA,CAAErvB,IAAI,GAAKijX,YAAY,CAACvmX,CAAE,CAAA,EAAI2yB,EAAElb,IAAI,GAAK,OACnI,CAAA,CAAA,CACA,OAAOiiC,QAASz5C,CAAAA,MAAM,GAAK,CAAKwmX,EAAAA,eAAAA,EAAAA,EAAqB/sU,SAASz5C,MAAM,GAAK,CAAKwmX,EAAAA,eAAAA,EAAAA,EAAqBC,eACrG,CACA,CAAA,MAAMC,UAAa,CAACjtU,WAClB,OAAOA,QAAAA,CAASz5C,MAAM,GAAK,GAAKy5C,QAAQ,CAAC,EAAE,CAACp2C,IAAI,GAAK,QAAYo2C,EAAAA,QAAQ,CAAC,CAAA,CAAE,CAACyqG,UAAU,CAAC4T,KAAK,CAAC,CAAKplI,EAAAA,CAAAA,CAAElb,IAAI,GAAK,QAChH,CACA,CAAA,MAAMmvW,kBAAoB,MAAOC,SAAAA,CAAWntU,SAAUypL,QACpD,GAAA,CAAA,MAAMpjO,MAAS,CAAA,IAAI0kX,oBACnB1kX,CAAAA,MAAAA,CAAOojO,QAAQ,CAAGA,SAClB,MAAM4F,SAAAA,CAAYrvL,QAAQ,CAAC,EAAE,CAACsG,KAAK,CACnC,MAAM8mU,kBAAAA,CAAqBptU,QAAQ,CAAC,CAAA,CAAE,CAACyqG,UAAU,CAAClkJ,MAAM,CACxD,MAAM04C,WAAce,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAACsG,KAAK,CACrC,MAAM+mU,eAAkB,CAAC/mU,QACvB,MAAMr6B,KAAAA,CAAQpmB,KAAK0V,IAAI,CAAC1V,IAAKud,CAAAA,IAAI,CAACkjC,KAClC,CAAA,CAAA,CAAA,MAAMp6B,MAASrmB,CAAAA,IAAAA,CAAK0V,IAAI,CAAC+qC,KAAAA,CAAQr6B,KACjC,CAAA,CAAA,OAAOA,MAAQC,MACjB,CAAA,CACA,MAAMohW,WAAcD,CAAAA,eAAAA,CAAgBpuU,YACpC54C,CAAAA,MAAAA,CAAOuhO,SAAS,CAAG3oL,WACnB54C,CAAAA,MAAAA,CAAOm9W,SAAS,CAAG,IAAIrjW,YAAakvN,CAAAA,SAAAA,CAAY+9I,kBAChD/mX,CAAAA,CAAAA,OAAOqjS,UAAU,CAAG,IAAIjmQ,WAAY6pV,CAAAA,WAAAA,CAAc,GAClD,MAAM/9U,IAAAA,CAAO,MAAOvuB,MAAAA,CAAQza,UAC1B,MAAMrB,MAAAA,CAAS,IAAImO,UAAAA,CAAW2N,QAC9B,IAAIu1S,MAAAA,CAAS,CACb,CAAA,MAAMA,OAAShwT,MAAO,CAAA,CACpB,MAAM4mX,SAAUtpB,CAAAA,SAAS,GAAK,CAAE,CAAA,CAC9B,MAAMspB,SAAAA,CAAU59U,IAAI,GACtB,CACA,MAAMg+U,MAAS1nX,CAAAA,IAAAA,CAAKmU,GAAG,CAACzT,MAAAA,CAASgwT,MAAQ42D,CAAAA,SAAAA,CAAUtpB,SAAS,CAC5D,CAAA,MAAM3nV,IAAMixW,SAAU7sW,CAAAA,IAAI,CAC1B,IAAI,IAAIha,CAAI,CAAA,CAAA,CAAGA,EAAIinX,MAAQ,CAAA,EAAEjnX,CAAE,CAAA,CAC7BpB,MAAM,CAACqxT,MAAAA,EAAAA,CAAS,CAAGr6S,GAAG,CAACixW,SAAU5tI,CAAAA,IAAI,IAAG,CAE5C,CACF,CACA,CAAA,MAAMhwM,IAAKlpC,CAAAA,MAAAA,CAAOm9W,SAAS,CAACxiW,MAAM,CAAEquN,SAAAA,CAAY+9I,mBAAqB,CACrE,CAAA,CAAA,MAAM79U,IAAKlpC,CAAAA,MAAAA,CAAOqjS,UAAU,CAAC1oR,MAAM,CAAEi+B,WAAc,CAAA,CAAA,CAAI,GACvD,GAAIe,QAAAA,CAASz5C,MAAM,GAAK,EAAG,CACzB,MAAMinX,cAAiBF,CAAAA,WAAAA,CAAc,GACrC,MAAM7C,OAAAA,CAAU,IAAIp3W,UAAAA,CAAWm6W,gBAC/B,MAAM9C,OAAAA,CAAU,IAAIr3W,UAAWm6W,CAAAA,cAAAA,CAAAA,CAC/B,MAAM7C,OAAU,CAAA,IAAIt3W,UAAWm6W,CAAAA,cAAAA,CAAAA,CAC/B,MAAMhD,SAAY,CAAA,IAAA,CAClB,MAAMiD,SAAYztU,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAACyqG,UAAU,CAAClkJ,MAAM,CAAG,CAAA,CAClD,MAAMmnX,MAAS,CAAA,IAAIr6W,WAAWm3W,SAAYiD,CAAAA,SAAAA,CAAY,CACtD,CAAA,CAAA,IAAI,IAAInnX,CAAI,CAAA,CAAA,CAAGA,CAAID,CAAAA,MAAAA,CAAOuhO,SAAS,CAAEthO,CAAAA,EAAKkkX,SAAU,CAAA,CAClD,MAAMmD,MAAS9nX,CAAAA,IAAAA,CAAKmU,GAAG,CAACwwW,SAAAA,CAAWnkX,OAAOuhO,SAAS,CAAGthO,CACtD,CAAA,CAAA,MAAMipC,KAAKm+U,MAAO1sW,CAAAA,MAAM,CAAE2sW,MAAAA,CAASF,UAAY,CAC/C,CAAA,CAAA,IAAI,IAAI5gS,CAAAA,CAAI,EAAGA,CAAI8gS,CAAAA,MAAAA,CAAQ,EAAE9gS,CAAE,CAAA,CAC7B,IAAI,IAAI+6C,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,GAAI,EAAEA,CAAAA,CAAE,CACzB,MAAMgmP,KAAO,CAACtnX,CAAIumF,CAAAA,CAAAA,EAAK,EAAK+6C,CAAAA,CAAAA,CAC5B,GAAIA,CAAI6lP,CAAAA,SAAAA,CAAW,CACjBhD,OAAO,CAACmD,IAAK,CAAA,CAAGF,MAAM,CAAE7gS,CAAAA,CAAI,CAAA,CAAA,CAAI,CAAA,EAAK4gS,SAAAA,CAAY7lP,CAAE,CACnD8iP,CAAAA,OAAO,CAACkD,KAAK,CAAGF,MAAM,CAAC,CAAC7gS,CAAI,CAAA,CAAA,CAAI,CAAA,EAAK4gS,SAAAA,CAAY7lP,CAAE,CACnD+iP,CAAAA,OAAO,CAACiD,IAAK,CAAA,CAAGF,MAAM,CAAE7gS,CAAAA,CAAI,CAAA,CAAA,CAAI,CAAA,EAAK4gS,SAAAA,CAAY7lP,CAAE,EACrD,MAAO,CACL6iP,OAAO,CAACmD,IAAAA,CAAK,CAAG,GAChBlD,CAAAA,OAAO,CAACkD,KAAK,CAAG,GAChBjD,CAAAA,OAAO,CAACiD,KAAK,CAAG,IAClB,CACF,CACF,CACF,CACAvnX,MAAAA,CAAOokX,OAAO,CAAGA,OACjBpkX,CAAAA,MAAAA,CAAOqkX,OAAO,CAAGA,OACjBrkX,CAAAA,MAAAA,CAAOskX,OAAO,CAAGA,OACjBtkX,CAAAA,MAAOgiO,CAAAA,OAAO,CAAI,CAAA,CAChB,CAAA,CAAG,EACH,CAAG,CAAA,CAAA,CACH,GAAI,CACN,CAAA,EAAGolJ,WAAU,CACf,KAAO,CACLpnX,MAAOgiO,CAAAA,OAAO,CAAG,EACnB,CACA,OAAOhiO,MACT,EACA,MAAMwnX,YAAAA,CAAe,MAAOV,SAAAA,CAAWntU,SAAUypL,QAC/C,GAAA,CAAA,MAAMxnL,OAAUjC,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAC3B,MAAMyqG,UAAaxoG,CAAAA,OAAAA,CAAQwoG,UAAU,CACrC,MAAMqjO,aAAgBrjO,CAAAA,UAAAA,CAAWlkJ,MAAM,CACvC,MAAM8uC,OAAUo1G,CAAAA,UAAAA,CAAWt9I,GAAG,CAAE8rB,CAAIA,EAAAA,CAAAA,CAAEoc,OAAO,CAC7C,CAAA,MAAM04U,UAAYtjO,UAAW3oG,CAAAA,MAAM,CAAC,CAAC5rC,CAAAA,CAAG+iB,CAAI/iB,GAAAA,CAAAA,CAAI+iB,EAAE60B,QAAQ,CAAE,CAC5D,CAAA,CAAA,IAAIkgU,UAAY,CAChB,CAAA,IAAIC,SACJ,CAAA,MAAMC,eAAiB,IACrB,CAAA,MAAMltW,OAASmsW,SAAU7sW,CAAAA,IAAI,CAACU,MAAM,CACpC,GAAIitW,SAAAA,EAAWjtW,SAAWA,MAAQ,CAAA,CAChCitW,UAAY,IAAI9tW,YAAAA,CAAaa,OAAQ,CAAGA,CAAAA,MAAAA,CAAOjN,UAAU,CAAG,GAC9D,CACF,CAAA,CACAm6W,iBACA,MAAMF,SAAAA,CAAY/rU,QAAQqE,KAAK,CAAC,CAC9B,MAAM6mU,UAAUtpB,SAAS,CAAGkqB,SAAU,CAAA,CACpC,MAAMZ,SAAU59U,CAAAA,IAAI,EACpB2+U,CAAAA,cAAAA,GACF,CACA,MAAMP,MAAAA,CAAS9nX,KAAKmU,GAAG,CAACioC,QAAQqE,KAAK,CAAG0nU,SAAWnoX,CAAAA,IAAAA,CAAKmQ,KAAK,CAACm3W,SAAAA,CAAUtpB,SAAS,CAAGkqB,YACpF,IAAI,IAAIlhS,CAAI,CAAA,CAAA,CAAGA,EAAIihS,aAAe,CAAA,EAAEjhS,EAAE,CACpC,MAAMxgF,EAAIgpC,OAAO,CAACw3C,CAAE,CAAA,CACpB,IAAI,IAAIn2D,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIi3V,OAAQ,EAAEj3V,CAAAA,CAAE,CAC7BrqB,CAAC,CAACqqB,CAAIs3V,CAAAA,SAAAA,CAAU,CAAGC,SAAS,CAACv3V,EAAIo3V,aAAgBjhS,CAAAA,CAAAA,EAAE,CAEvD,CACAmhS,SAAaL,EAAAA,MACbR,CAAAA,SAAU5tI,CAAAA,IAAI,EAAIouI,MAASI,CAAAA,UAC7B,CACA,OAAO,IAAIjnJ,UAAW9mL,CAAAA,QAAAA,CAAUypL,SAClC,CACA,CAAA,MAAM0kJ,eAAiB,MAAOhB,SAAAA,CAAWntU,QAAUypL,CAAAA,QAAAA,GAAAA,CACjD,IAAI,IAAInjO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI05C,SAASz5C,MAAM,CAAE,EAAED,CAAAA,CAAE,CACtC,MAAM27C,OAAAA,CAAUjC,QAAQ,CAAC15C,CAAAA,CAAE,CAC3B,MAAMynX,SAAAA,CAAY9rU,OAAQwoG,CAAAA,UAAU,CAAC3oG,MAAM,CAAC,CAAC5rC,CAAAA,CAAG+iB,IAAI/iB,CAAI+iB,CAAAA,CAAAA,CAAE60B,QAAQ,CAAE,GACpE,MAAMsgU,wBAAAA,CAA2BnsU,QAAQwoG,UAAU,CAACt9I,GAAG,CAAE8rB,CACvD,EAAA,CAAA,GAAIA,EAAEoc,OAAO,CAAE,CACb,OAAOpc,EAAElb,IAAI,EACX,IAAK,MAAA,CACH,OAAO,CAACovW,SAAAA,CAAWxnX,KACjBszB,CAAEoc,CAAAA,OAAO,CAAC1vC,CAAE,CAAA,CAAGwnX,SAAUf,CAAAA,OAAO,GAClC,CACF,CAAA,IAAK,QACH,OAAO,CAACe,UAAWxnX,CACjBszB,GAAAA,CAAAA,CAAAA,CAAEoc,OAAO,CAAC1vC,EAAE,CAAGwnX,SAAAA,CAAU34W,QAAQ,GACnC,CACF,KAAK,OACH,CAAA,OAAO,CAAC24W,SAAAA,CAAWxnX,KACjBszB,CAAEoc,CAAAA,OAAO,CAAC1vC,CAAAA,CAAE,CAAGwnX,SAAUd,CAAAA,QAAQ,GACnC,CACF,KAAK,QACH,CAAA,OAAO,CAACc,SAAWxnX,CAAAA,CAAAA,GAAAA,CACjBszB,EAAEoc,OAAO,CAAC1vC,CAAE,CAAA,CAAGwnX,UAAUt4W,SAAS,GACpC,CACF,CAAA,IAAK,MACH,OAAO,CAACs4W,SAAWxnX,CAAAA,CAAAA,GAAAA,CACjBszB,EAAEoc,OAAO,CAAC1vC,EAAE,CAAGwnX,SAAAA,CAAUb,QAAQ,GACnC,CACF,CAAK,IAAA,MAAA,CACH,OAAO,CAACa,SAAAA,CAAWxnX,CACjBszB,GAAAA,CAAAA,CAAAA,CAAEoc,OAAO,CAAC1vC,CAAAA,CAAE,CAAGwnX,SAAAA,CAAUp4W,SAAS,GACpC,CACF,KAAK,OACH,CAAA,OAAO,CAACo4W,SAAWxnX,CAAAA,CAAAA,GAAAA,CACjBszB,CAAEoc,CAAAA,OAAO,CAAC1vC,CAAE,CAAA,CAAGwnX,UAAUZ,UAAU,GACrC,CACF,CAAK,IAAA,QAAA,CACH,OAAO,CAACY,UAAWxnX,CACjBszB,GAAAA,CAAAA,CAAAA,CAAEoc,OAAO,CAAC1vC,CAAAA,CAAE,CAAGwnX,SAAUX,CAAAA,UAAU,GACrC,CACF,SACE,MAAM,IAAIh8W,KAAM,CAAA,CAAC,gCAAgC,EAAEyoB,CAAAA,CAAElb,IAAI,CAAC,eAAe,CAAC,CAC9E,CACF,CAAO,KAAA,CACL,OAAO,SAACovW,EAAAA,CACNA,SAAU5tI,CAAAA,IAAI,EAAItmN,CAAE60B,CAAAA,SAAQ,CAEhC,CACF,CACA,CAAA,CAAA,IAAInoD,CAAI,CAAA,CAAA,CACR,MAAMA,CAAIs8C,CAAAA,OAAAA,CAAQqE,KAAK,CAAC,CACtB,MAAM6mU,SAAUtpB,CAAAA,SAAS,CAAGkqB,SAAAA,CAAU,CACpC,MAAMZ,SAAAA,CAAU59U,IAAI,GACtB,CACA,MAAMo+U,MAAAA,CAAS9nX,IAAKmU,CAAAA,GAAG,CAACioC,OAAQqE,CAAAA,KAAK,CAAG3gD,CAAGE,CAAAA,IAAAA,CAAKmQ,KAAK,CAACm3W,SAAAA,CAAUtpB,SAAS,CAAGkqB,YAC5E,IAAI,IAAIr3V,EAAI,CAAGA,CAAAA,CAAAA,CAAIi3V,OAAQ,EAAEj3V,CAAAA,CAAE,CAC7B,IAAI,IAAIm2D,CAAI,CAAA,CAAA,CAAGA,EAAI5qC,OAAQwoG,CAAAA,UAAU,CAAClkJ,MAAM,CAAE,EAAEsmF,CAAAA,CAAE,CAChDuhS,wBAAwB,CAACvhS,CAAE,CAAA,CAACsgS,UAAWxnX,CACzC,EAAA,CACAA,CACF,GAAA,CACF,CACF,CACA,OAAO,IAAImhO,UAAW9mL,CAAAA,QAAAA,CAAUypL,SAClC,CACA,CAAA,MAAM4kJ,OAAU,CAAA,MAAOzrI,OAAQ0rI,cAAiB,CAAA,IAAI,CAAEvC,YAAAA,CAAe,IAAI,GACvE,CAAA,MAAM3mT,IAAO,CAAA,CAAC2gC,IAAKnwF,MACjB,GAAA,CAAA,MAAM4sK,SAAWz8E,GAAIx/F,CAAAA,MAAM,CAAGqP,MAAOrP,CAAAA,MAAM,CAC3C,IAAID,EAAGumF,CACP,CAAA,IAAIvmF,CAAI,CAAA,CAAA,CAAGA,GAAKk8K,QAAU,CAAA,EAAEl8K,CAAE,CAAA,CAC5B,IAAIumF,CAAI,CAAA,CAAA,CAAGA,EAAIj3E,MAAOrP,CAAAA,MAAM,CAAE,EAAEsmF,CAAAA,CAAE,CAChC,GAAIkZ,GAAG,CAACz/F,CAAAA,CAAIumF,EAAE,GAAKj3E,MAAM,CAACi3E,CAAE,CAAA,CAAE,CAC5B,KACF,CACF,CACA,GAAIA,IAAMj3E,MAAOrP,CAAAA,MAAM,CAAE,CACvB,OAAOD,CACT,CACF,CACA,OAAO,CAAC,CACV,CAAA,CACA,MAAMO,UAAa,CAAA,CAACqP,CAAGC,CAAAA,CAAAA,GAAAA,CACrB,GAAID,CAAE3P,CAAAA,MAAM,CAAG4P,CAAE5P,CAAAA,MAAM,CAAE,CACvB,OAAO,KACT,CACA,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI6P,EAAE5P,MAAM,CAAE,EAAED,CAAAA,CAAE,CAC/B,GAAI4P,CAAC,CAAC5P,CAAE,CAAA,GAAK6P,CAAC,CAAC7P,CAAAA,CAAE,CAAE,CACjB,OAAO,KACT,CACF,CACA,OAAO,IACT,CACA,CAAA,MAAM6mX,SAAY,CAAA,IAAIrB,UAAUlpI,MAAQmpI,CAAAA,YAAAA,CAAAA,CACxC,IAAIwC,YACJ,CAAA,MAAM,KAAK,CACT,MAAMpB,SAAU59U,CAAAA,IAAI,GACpB,GAAI49U,SAAAA,CAAUnB,IAAI,EAAIN,UAAAA,CAAWnlX,MAAM,EAAI,CAACM,UAAWsmX,CAAAA,SAAAA,CAAU7sW,IAAI,CAAEorW,UAAAA,CAAAA,CAAa,CAClF,MAAM,IAAIl7W,MAAM,oBAClB,CAAA,CACA+9W,YAAenpT,CAAAA,IAAAA,CAAK+nT,UAAU7sW,IAAI,CAAEqrW,cACpC,CAAA,CAAA,GAAI4C,eAAiB,CAAC,CAAA,CAAG,CACvB,KACF,CACF,CACA,MAAMpgT,MAAQ,IAAI80K,WAAAA,CAAY,SAASC,MAAM,CAACiqI,SAAU7sW,CAAAA,IAAI,CAACwrD,QAAQ,CAAC,CAAGyiT,CAAAA,YAAAA,CAAAA,CAAAA,CAAetnX,KAAK,CAAC,IAAA,CAAA,CAC9F,KAAM,CAAE+4C,QAAQ,CAAE5zC,MAAM,CAAEq9N,QAAQ,CAAE,CAAGgjJ,WAAYt+S,CAAAA,KAAAA,CAAAA,CACnD,GAAI/hE,MAAAA,GAAW,uBAAwB,CACrC,MAAM,IAAIoE,KAAAA,CAAM,yBAClB,CACA28W,SAAAA,CAAU5tI,IAAI,CAAGgvI,aAAe5C,cAAeplX,CAAAA,MAAM,CACrD4mX,SAAUhB,CAAAA,OAAO,GACjB,MAAMp7Q,QAAAA,CAAW,SACf,CAAA,GAAI27Q,gBAAgB1sU,QAAW,CAAA,CAAA,CAC7B,OAAO,MAAMktU,iBAAAA,CAAkBC,UAAWntU,QAAUypL,CAAAA,QAAAA,CACtD,CACAzpL,QAAAA,CAAS/sC,OAAO,CAAExK,IAChBA,CAAEgiJ,CAAAA,UAAU,CAACx3I,OAAO,CAAC,CAACgmB,EAAAA,CACpB,MAAMu1V,WAAc5C,CAAAA,WAAAA,CAAYvjX,GAAG,CAAC4wB,EAAElb,IAAI,CAAA,CAC1C,GAAIywW,WAAAA,CAAa,CACf,MAAMn5U,OAAAA,CAAU,CAACi5U,cAAkBA,EAAAA,cAAAA,CAAer1V,EAAErvB,IAAI,CAAA,CAAI,IAAI4kX,WAAAA,CAAY/lX,EAAE69C,KAAK,CAAA,CAAI,IACvFrtB,CAAAA,EAAEoc,OAAO,CAAGA,QACd,CACF,GACF,CACA,CAAA,CAAA,GAAI43U,WAAWjtU,QAAW,CAAA,CAAA,CACxB,OAAO,MAAM6tU,YAAAA,CAAaV,SAAWntU,CAAAA,QAAAA,CAAUypL,SACjD,CACA,OAAO,MAAM0kJ,cAAAA,CAAehB,UAAWntU,QAAUypL,CAAAA,QAAAA,CACnD,CACA,CAAA,OAAO,MAAM14H,QACf,EAAA,CAAA,CACA,MAAM09Q,oBAAuB,CAAC5zW,KAAM,IACpC,CAAA,MAAM6zW,SAKJ,CAAA,MAAMlyI,KAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CAC/B,GAAI,CACF,MAAMvwG,SAAW,OAAOuwG,MAAMqb,IAAI,EAAEV,UAAYsJ,KAAM/yO,CAAAA,GAAAA,CAAIqrO,IAAI,CAAA,EAC9D,GAAI,CAAC9sH,QAAY,EAAA,CAACA,SAASj+G,IAAI,CAAE,CAC/B7D,QAAAA,CAAS,yBAA0B,IACrC,EAAA,CAAA,KAAO,CACL,MAAM+gX,WAAAA,CAAcnyW,SAASkzG,QAAS7C,CAAAA,OAAO,CAACxkH,GAAG,CAAC,gBAAqB,CAAA,EAAA,GAAA,CAAK,EAC5E,CAAA,CAAA,IAAIumX,cAAgB,CACpB,CAAA,MAAMtuW,IAAO,CAAA,MAAM+tW,QAAQ3+P,QAASj+G,CAAAA,IAAI,CAACkyO,SAAS,EAAA,CAAI1jB,MAAM3/M,IAAI,CAACuuW,aAAa,EAAIJ,qBAAsB,KAACt6W,EAAAA,CACvGy6W,aAAiBz6W,EAAAA,KAAAA,CACjB,GAAI8rN,KAAO,CAAA,CACTA,KAAMzwN,CAAAA,IAAI,CAAC,UAAYo/W,CAAAA,aAAAA,CAAeD,aACxC,CACF,CAAA,CAAA,CACA1uJ,MAAMzwN,IAAI,CAAC,WAAa8Q,CAAAA,IAAAA,CAAAA,CACxB,GAAI,CAACA,IAAAA,CAAK8nN,YAAY,CAAE,CACtB,GAAInI,KAAM3/M,CAAAA,IAAI,CAAC8oN,OAAO,EAAI,IAAM,CAAA,CAC9B9oN,KAAKkpN,WAAW,GAClB,CACF,CACA,MAAM37K,QAAWvtC,CAAAA,IAAAA,CAAK8nN,YAAY,EAAI,CAACnI,KAAM3/M,CAAAA,IAAI,CAACizN,UAAU,CAAG,IAAI43I,wBAAAA,CAAyB,IAAI,CAAC70I,GAAG,CAACpmM,cAAc,CAAE5vB,MAAQ,IAAI6qN,cAAAA,CAAe,IAAI,CAACmL,GAAG,CAACpmM,cAAc,CAAE5vB,IAAAA,CAAK8nN,YAAY,CAAG9nN,IAAAA,CAAKizN,UAAU,EAAA,CAAKjzN,MACjN1S,QAAS,CAAA,IAAA,CAAMigD,UACjB,CACF,CAAE,MAAO17C,GAAK,CAAA,CACZvE,QAASuE,CAAAA,GAAAA,CAAK,MAChB,CACF,CACAw7G,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAOA,IACT,CAjCAjS,WAAAA,CAAYioO,GAAG,CAAE3pH,UAAU,CAAC,CAC1B,IAAI,CAAC2pH,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC3pH,UAAU,CAAGA,WACpB,CA+BF,CAEA,MAAMmiQ,gBAAkB,CAAC5pX,MAAAA,CAAQm5O,UAC/B,MAAMlxO,GAAAA,CAAM,IAAIuB,GAChB,CAAA,MAAMc,IAAO,CAAA,IAAA,CACX,IAAIw8G,MAAS,CAAA,CAAA,CACb,IAAIjqE,KAAAA,CAAQ,EACZ50C,GAAI8F,CAAAA,OAAO,CAAEhF,QACX+9G,MAAU/9G,EAAAA,KAAAA,CAAM+9G,MAAM,CACtBjqE,KAAAA,EAAS9zC,MAAM8zC,MACjB,CACA78C,CAAAA,CAAAA,MAAAA,CAAOsK,IAAI,CAAC,UAAA,CAAYw8G,OAAQjqE,KAClC,EAAA,CAAA,CACAs8L,OAAOprO,OAAO,CAAC,KAACgtN,EAAAA,CACd,MAAMn0G,QAAW,CAAA,CAACE,OAAQjqE,KACxB50C,GAAAA,CAAAA,GAAAA,CAAI0B,GAAG,CAACoxN,KAAAA,CAAO,CACbj0G,MAAAA,CACAjqE,KACF,CACAvyC,CAAAA,CAAAA,IAAAA,GACF,CACA,CAAA,MAAMmjI,KAAO,IACXstF,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,WAAYu+G,QACtBm0G,CAAAA,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,MAAA,CAAQolI,MAClBstF,KAAM1yN,CAAAA,GAAG,CAAC,OAAA,CAASolI,MACrB,CACAstF,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,UAAA,CAAYm+G,UACrBm0G,KAAMtyN,CAAAA,EAAE,CAAC,MAAA,CAAQglI,MACjBstF,KAAMtyN,CAAAA,EAAE,CAAC,OAASglI,CAAAA,IAAAA,EACpB,GACF,CACA,CAAA,MAAMo8O,WAAc,CAACzhJ,OACnB,MAAMjnO,MAAAA,CAAS,CACbtB,OAAAA,CAAS,EACTuhD,KAAOgnL,CAAAA,IAAAA,CAAKwE,KAAK,CAACt9E,KAAK,CAAC,CAAA,CAAE,CAC1Bs9E,KAAO,CAAA,CACLpE,KAAMJ,IAAKwE,CAAAA,KAAK,CAACpE,IAAI,CACrBE,IAAMN,CAAAA,IAAAA,CAAKwE,KAAK,CAAClE,IAAI,CACrB+0H,KAAAA,CAAOr1H,IAAKwE,CAAAA,KAAK,CAAC6wH,KACpB,EACA5wH,MAAQ,CAAA,CACNrE,KAAMJ,IAAKyE,CAAAA,MAAM,CAACrE,IAAI,CACtBE,IAAMN,CAAAA,IAAAA,CAAKyE,MAAM,CAACnE,IAAI,CACtB+0H,KAAAA,CAAOr1H,IAAKyE,CAAAA,MAAM,CAAC4wH,KACrB,EACArwH,KAAO,CAAA,CACLqwH,MAAOr1H,IAAKgF,CAAAA,KAAK,CAACqwH,KAAK,CAEzB3wH,CAAAA,GAAAA,CAAK,CACHtE,IAAMJ,CAAAA,IAAAA,CAAK0E,GAAG,CAACtE,IAAI,CACnBE,IAAAA,CAAMN,KAAK0E,GAAG,CAACpE,IAAI,CACnB+0H,KAAAA,CAAOr1H,KAAK0E,GAAG,CAAC2wH,KAClB,CACF,CACA,CAAA,GAAIr1H,IAAKG,CAAAA,GAAG,CAAE,CACZpnO,MAAAA,CAAOonO,GAAG,CAAG,CACXC,IAAMJ,CAAAA,IAAAA,CAAKG,GAAG,CAACC,IAAI,CACnBE,IAAMN,CAAAA,IAAAA,CAAKG,GAAG,CAACG,IAAI,CACnB+0H,KAAAA,CAAOr1H,IAAKG,CAAAA,GAAG,CAACk1H,KAClB,EACF,CACA,OAAOt8V,MACT,CACA,OAAM2oX,UAKJ,CAAA,MAAMC,aAAa99W,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAEqN,IAAI,CAAE,CAC7C,GAAIA,IAAKvoO,CAAAA,OAAO,GAAK,CAAA,CAAG,CACtBuoO,IAAOyhJ,CAAAA,WAAAA,CAAYzhJ,MACrB,CACA,KAAM,CAAE+Q,MAAM,CAAE,CAAG,IAAI,CAAC/H,GAAG,CAC3B,MAAM44I,IAAO,CAAA,CACX,QACA,OACA,CAAA,QAAA,CACA,KACA,CAAA,KAAA,CACD,CACD,MAAMh9U,QAAAA,CAAW,EACjB,CAAA,MAAMsiU,SAAW,EAAE,CACnB0a,IAAKj8W,CAAAA,OAAO,CAAC,GAACiR,EAAAA,CACZ,MAAMy+U,KAAAA,CAAQr1H,IAAI,CAACppN,GAAAA,CAAI,EAAEy+U,KAAAA,EAAS,EAAE,CACpCzwT,QAAQ,CAAChuB,GAAAA,CAAI,CAAGy+U,KAAMx1V,CAAAA,GAAG,CAAEwtO,WACzB,MAAMviM,OAAAA,CAAU,IAAIijM,KAAAA,CAAMV,SAAU,SAAW,CAAA,CAC7CxpO,GAAK8uN,CAAAA,KAAAA,CAAMloN,OAAO,EAAEo3W,MAAAA,GAASx0I,WAAa,IAAIt7J,GAAAA,CAAIs7J,SAAU,IAAIt7J,GAAAA,CAAIluE,GAAIqrO,CAAAA,IAAI,CAAEl0O,MAAOmI,CAAAA,QAAQ,CAAC6uE,IAAI,EAAEt5E,QAAQ,EAAA,CAAA,CAAIA,QAAQ,EAAA,CACxH20O,QACF,CAAG,CAAA,CACD7oM,QAAS,KACX,CAAA,CAAA,CACA,MAAMswU,OAAU,CAAA,IAAI7iS,OAAQ,CAAA,CAAC5uC,QAASu1C,MACpC9tC,GAAAA,CAAAA,OAAAA,CAAQzqC,EAAE,CAAC,MAAA,CAAQ,IAAIgjC,OAAQ,CAAA,IAAA,CAAA,CAAA,CAC/ByH,OAAQzqC,CAAAA,EAAE,CAAC,OAAS,CAACwE,KAAM+zE,MAAO/zE,CAAAA,GAAAA,CAAAA,EACpC,GACAksO,MAAOznO,CAAAA,GAAG,CAACwhC,OAAAA,CAAAA,CACXo8T,SAASptW,IAAI,CAACg7W,OACd,CAAA,CAAA,OAAOhqU,OACT,CACF,EAAA,CAAA,CAAA,CACA,MAAMqoU,aAAAA,CAAgByO,KAAK/hX,GAAG,CAAC,GAAO+kC,EAAAA,QAAQ,CAAChuB,GAAI,CAAA,CAAA,CAAE7M,IAAI,EAAA,CACzD4oN,MAAMlyN,IAAI,CAAC,QAAU,CAAA,IAAA,CACnB0yW,cAAcxtW,OAAO,CAAC,CAACmE,EAAAA,CACrBinO,OAAO1tO,MAAM,CAACyG,GACdA,CAAEgmO,CAAAA,MAAM,GACV,CACF,EAAA,CAAA,CAAA,CACA0xI,eAAgB7uJ,CAAAA,KAAAA,CAAOwgJ,eACvBA,aAAcxtW,CAAAA,OAAO,CAAEmE,GAAIinO,MAAO7B,CAAAA,IAAI,CAACplO,CAAAA,CAAAA,CACvC,OAAMmoE,OAAQ6vS,CAAAA,UAAU,CAAC5a,QACzB,CAAA,CAAA,MAAMl0V,KAAO,IAAIwyN,cACjBxyN,CAAAA,IAAAA,CAAKgtN,IAAI,CAAGA,IACZhtN,CAAAA,IAAKsnN,CAAAA,SAAS,CAAG0F,IAAKhnL,CAAAA,KAAK,CAC3BhmC,KAAK4xN,OAAO,CAAGhgM,SAAS4/L,KAAK,CAAC,EAAE,CAACjkL,QAAQ,CACzCvtC,KAAK8xN,OAAO,CAAGlgM,QAAS4/L,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACjkL,QACjCvtC,CAAAA,IAAKgyN,CAAAA,KAAK,CAAGpgM,QAASogM,CAAAA,KAAK,CAAC,CAAE,CAAA,CAACzkL,QAC/BvtC,CAAAA,IAAKyxN,CAAAA,MAAM,CAAG7/L,QAAAA,CAAS6/L,MAAM,CAAC,CAAA,CAAE,CAAClkL,QAAQ,CACzCvtC,IAAAA,CAAK0xN,GAAG,CAAG9/L,QAAAA,CAAS8/L,GAAG,CAAC,CAAA,CAAE,CAACnkL,QAAQ,CACnCvtC,IAAAA,CAAK+sN,YAAY,CAAGn7L,SAASu7L,GAAG,GAAG,CAAA,CAAE,EAAE5/K,QACvCvtC,CAAAA,KAAKoyN,SAAS,CAAGxgM,SAASu7L,GAAG,GAAG,CAAA,CAAE,EAAE5/K,QACpC,CAAA,MAAM0lL,WAAatT,KAAM3/M,CAAAA,IAAI,EAAEizN,UAC/B,CAAA,GAAI,CAACA,UAAAA,CAAY,CACf,GAAI,CAAC,IAAI,CAAC+C,GAAG,EAAEpmM,cAAkB,EAAA,IAAI,CAAComM,GAAG,EAAEpmM,cAAgB8T,EAAAA,UAAAA,CAAY,OACvE,MAAM1jC,KAAK00N,cAAc,GAC3B,CACA,GAAI,CAAC,IAAI,CAACsB,GAAG,EAAEpmM,cAAAA,EAAkB,IAAI,CAAComM,GAAG,EAAEpmM,cAAAA,EAAgB8T,WAAY,OACvE,MAAM6J,QAAW0lL,CAAAA,UAAAA,CAAa,IAAIpI,cAAe,CAAA,IAAI,CAACmL,GAAG,CAACpmM,cAAc,CAAE,MAAM5vB,IAAKizN,CAAAA,UAAU,IAAM,IAAIsC,kBAAAA,CAAmB,IAAI,CAACS,GAAG,CAACpmM,cAAc,CAAE5vB,IAAAA,CAAAA,CACrJ1S,SAAS,IAAMigD,CAAAA,QAAAA,EACjB,CACA2uL,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAIA,KAAAA,CAAM3/M,IAAI,EAAEwxN,MAAO,CACrB,IAAI,CAACm9I,YAAY,CAAC99W,IAAKvD,QAAUqyN,CAAAA,KAAAA,CAAOA,KAAM3/M,CAAAA,IAAI,EACpD,CAAO,KAAA,CACL,GAAI,OAAOnP,GAAAA,GAAQ,SAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,MAAM4G,OAAU,CAAA,CACdy0G,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,EACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAC3BkB,YAAchC,CAAAA,IAAAA,CAAK0C,YAAY,CAACjB,IAAI,CACtC,CACAiD,KAAKloH,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAEzkO,OAAS,CAAA,CAAC5F,IAAKm7N,IAChC,GAAA,CAAA,GAAI,CAACn7N,GAAK,CAAA,CACR,IAAI,CAAC88W,YAAY,CAAC99W,GAAAA,CAAKvD,QAAUqyN,CAAAA,KAAAA,CAAOqN,MAC1C,CAAO,KAAA,CACL1/N,QAAS,CAAA,CAAC,2BAA2B,EAAEuD,GAAAA,CAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAI,CAAA,CAAC,CAAC,EAChE,CACF,CACF,EAAA,CACF,CAxFA9D,WAAYioO,CAAAA,GAAG,CAAE3pH,UAAU,CAAC,CAC1B,IAAI,CAAC2pH,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC3pH,UAAU,CAAGA,WACpB,CAsFF,CAEA,MAAM0iQ,eAAAA,CAAkB,IAAC/uW,EAAAA,CACvB,MAAMxM,QAAW,CAAA,IAAIwB,QAASgL,CAAAA,IAAAA,CAAAA,CAC9B,MAAMgvW,GAAM,CAACt7W,QAASF,QAASe,CAAAA,SAAS,CAACb,MAAQ,CAAA,IAAA,CAAA,CACjD,MAAMwgO,GAAAA,CAAM,MAAU1gO,EAAAA,QAAAA,CAASiB,SAAS,CAACf,OAAQ,IACjD,CAAA,CAAA,MAAMu7W,WAAc,CAACv7W,SACnB,OAAO,CACLqvW,MAAO7uI,GAAIxgO,CAAAA,MAAAA,CAAAA,CACX0tO,SAAU4tI,GAAIt7W,CAAAA,MAAAA,CAAS,CACvBw7W,CAAAA,CAAAA,WAAAA,CAAah7I,IAAIxgO,MAAS,CAAA,EAAA,CAAA,CAC1By7W,aAAej7I,CAAAA,GAAAA,CAAIxgO,OAAS,EAC9B,CAAA,CACF,CACA,CAAA,MAAM07W,WAAa,MAAC17W,EAAAA,CAClB,MAAM27W,cAAiBL,CAAAA,GAAAA,CAAIt7W,OAAS,EACpC,CAAA,CAAA,MAAM47W,gBAAmBN,CAAAA,GAAAA,CAAIt7W,OAAS,EACtC,CAAA,CAAA,MAAM67W,kBAAoBP,GAAIt7W,CAAAA,MAAAA,CAAS,IACvC,OAAO,CACLqvW,KAAO7uI,CAAAA,GAAAA,CAAIxgO,QACX87W,iBAAmBR,CAAAA,GAAAA,CAAIt7W,OAAS,EAChC+7W,CAAAA,CAAAA,mBAAAA,CAAqBv7I,IAAIxgO,MAAS,CAAA,EAAA,CAAA,CAClCg8W,qBAAuBx7I,CAAAA,GAAAA,CAAIxgO,OAAS,EACpCi8W,CAAAA,CAAAA,cAAAA,CAAgBz7I,GAAIxgO,CAAAA,MAAAA,CAAS,IAC7B2mO,QAAU,CAAA,IAAIsI,WAAcC,EAAAA,CAAAA,MAAM,CAAC,IAAI7vO,UAAAA,CAAWiN,KAAMtM,MAAS,CAAA,EAAA,CAAI27W,iBACrEO,eAAiB,CAAA,EAAA,CAAKP,cAAiBC,CAAAA,gBAAAA,CAAmBC,iBAC5D,CACF,CAAA,CACA,MAAMM,UAAAA,CAAa,MACjB,EAAA,CAAA,MAAMR,cAAiBL,CAAAA,GAAAA,CAAIt7W,OAAS,EACpC,CAAA,CAAA,MAAMo8W,YAAcd,GAAIt7W,CAAAA,MAAAA,CAAS,IACjC,OAAO,CACLqvW,KAAO7uI,CAAAA,GAAAA,CAAIxgO,QACXq8W,WAAar8W,CAAAA,MAAAA,CAAS,EAAK27W,CAAAA,cAAAA,CAAiBS,WAC9C,CACF,CAAA,CACA,MAAME,IAAAA,CAAOf,YAAYz7W,QAASC,CAAAA,UAAU,CAAG,EAC/C,CAAA,CAAA,GAAIu8W,KAAKjN,KAAK,GAAK,SAAY,CAAA,CAC7B,MAAM,IAAI7yW,KAAAA,CAAM,oCAClB,CACA,GAAI8/W,KAAKb,aAAa,GAAK,UAAca,EAAAA,IAAAA,CAAKd,WAAW,GAAK,UAAA,CAAY,CACxE,MAAM,IAAIh/W,MAAM,uCAClB,CAAA,CACA,MAAMnK,MAAAA,CAAS,EAAE,CACjB,IAAI2N,MAASs8W,CAAAA,IAAAA,CAAKb,aAAa,CAC/B,IAAI,IAAInpX,CAAAA,CAAI,EAAGA,CAAIgqX,CAAAA,IAAAA,CAAK5uI,QAAQ,CAAEp7O,CAAAA,EAAAA,CAAI,CACpC,MAAMiqX,GAAAA,CAAMb,UAAW17W,CAAAA,MAAAA,CAAAA,CACvB,GAAIu8W,GAAIlN,CAAAA,KAAK,GAAK,QAAA,CAAY,CAC5B,MAAM,IAAI7yW,KAAM,CAAA,iCAAA,CAClB,CACA,MAAMggX,GAAAA,CAAML,WAAWI,GAAIN,CAAAA,cAAc,EACzC,GAAIO,GAAAA,CAAInN,KAAK,GAAK,SAAY,CAC5B,MAAM,IAAI7yW,KAAAA,CAAM,kCAClB,CACAnK,MAAAA,CAAOe,IAAI,CAAC,CACVuzO,QAAU41I,CAAAA,GAAAA,CAAI51I,QAAQ,CACtB81I,WAAAA,CAAa,CACX,CAAG,CAAA,MAAA,CACH,CAAG,CAAA,SACL,CAAC,CAACF,GAAAA,CAAIT,iBAAiB,CAAC,EAAI,UAC5BxvW,IAAM,CAAA,IAAIjN,UAAWiN,CAAAA,IAAAA,CAAMkwW,IAAIH,WAAW,CAAEE,IAAIR,mBAAmB,CACrE,GACA/7W,MAAUu8W,EAAAA,GAAAA,CAAIL,gBAChB,CACA,OAAO7pX,MACT,CACA,CAAA,MAAMqqX,QAAU,MAAOC,UAAAA,EAAAA,CACrB,MAAMC,EAAAA,CAAK,IAAIC,mBAAoB,CAAA,aAAA,CAAA,CACnC,MAAM35V,GAAM,CAAA,IAAIg6M,KAAK,CACnBy/I,UAAAA,CACD,CAAE/9O,CAAAA,MAAM,GAAGk+O,WAAW,CAACF,EACxB,CAAA,CAAA,MAAMG,GAAK,MAAM,IAAIC,QAAS95V,CAAAA,GAAAA,CAAAA,CAAKq4U,WAAW,EAC9C,CAAA,OAAO,IAAIl8V,UAAW09W,CAAAA,EAAAA,CACxB,EACA,MAAME,mBAAAA,CAAsB,MAAO9/W,GAAAA,CAAK8uN,SACtC,MAAMvwG,QAAAA,CAAW,OAAOuwG,MAAMqb,IAAI,EAAEV,QAAYsJ,EAAAA,KAAAA,CAAM/yO,IAAIqrO,IAAI,CAAA,EAC9D,GAAI,CAAC9sH,SAAU,CACb,MAAM,IAAIl/G,KAAAA,CAAM,yBAClB,CACA,GAAIk/G,oBAAoBshQ,QAAU,CAAA,CAChC,GAAI,CAACthQ,QAAAA,CAASo9O,EAAE,CAAE,CAChB,MAAM,IAAIt8V,MAAM,CAAC,wBAAwB,EAAEk/G,QAASh5B,CAAAA,MAAM,CAAC,CAAC,EAAEg5B,QAASwhQ,CAAAA,UAAU,CAAC,CAAC,CACrF,CACA,MAAMvC,WAAcnyW,CAAAA,QAAAA,CAASkzG,SAAS7C,OAAO,CAACxkH,GAAG,CAAC,gBAAA,CAAA,EAAqB,IAAK,EAC5E,CAAA,CAAA,GAAI,CAACqnH,QAAAA,CAASj+G,IAAI,EAAI,CAACi+G,QAASj+G,CAAAA,IAAI,CAACkyO,SAAS,CAAE,CAC9C,MAAM59I,IAAM,MAAM2pB,QAAAA,CAAS6/O,WAAW,EACtCtvI,CAAAA,KAAAA,CAAMzwN,IAAI,CAAC,UAAA,CAAYu2F,GAAIhyF,CAAAA,UAAU,CAAE46W,WACvC,CAAA,CAAA,OAAO5oR,GACT,CACA,MAAM68I,MAASlzH,CAAAA,QAAAA,CAASj+G,IAAI,CAACkyO,SAAS,EACtC,CAAA,MAAM9iF,OAAS,EAAE,CACjB,IAAI+tN,aAAgB,CAAA,CAAA,CACpB,GAAI,CACF,MAAM,IAAK,CAAA,CACT,KAAM,CAAEj8O,IAAI,CAAE1kI,KAAK,CAAE,CAAG,MAAM20O,OAAOrzM,IAAI,EAAA,CACzC,GAAIojG,IAAM,CAAA,CACR,KACF,CACAkuB,MAAAA,CAAOz5J,IAAI,CAAC6G,OACZ2gX,aAAiB3gX,EAAAA,KAAAA,CAAM8F,UAAU,CACjCksN,MAAMzwN,IAAI,CAAC,UAAYo/W,CAAAA,aAAAA,CAAeD,aACxC,CACF,CAAA,OAAS,CACP/rI,MAAOuuI,CAAAA,WAAW,GACpB,CACA,OAAO,IAAIjgJ,IAAAA,CAAKrwE,QAAQ0uM,WAAW,EACrC,CACA,OAAO7/O,QACT,CACA,CAAA,MAAM0hQ,eAKJ,CAAA,MAAM50I,KAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CAC/B,GAAI,CACF,MAAMsvI,YAAc,MAAM0hB,mBAAAA,CAAoB9/W,GAAK8uN,CAAAA,KAAAA,CAAAA,CACnD,MAAM0iI,KAAQ0sB,CAAAA,eAAAA,CAAgB9f,WAC9B,CAAA,CAAA,IAAK,MAAMj0H,IAAQqnH,IAAAA,KAAAA,CAAM,CACvB,GAAIrnH,IAAAA,CAAKm1I,WAAW,GAAK,SAAA,CAAW,CAClCn1I,IAAAA,CAAKh7N,IAAI,CAAG,MAAMowW,QAAQp1I,IAAKh7N,CAAAA,IAAI,EACrC,CACF,CACA,MAAM+wW,QAAAA,CAAW1uB,MAAMv9R,IAAI,CAAC,CAAK9qC,EAAAA,CAAAA,CAAEqgN,QAAQ,GAAK,WAAA,CAAA,CAChD,GAAI,CAAC02I,SAAU,CACbzjX,QAAAA,CAAS,4BACT,CAAA,CAAA,MACF,CACA,IAAI0/N,IAAAA,CACJ,GAAI,CACFA,KAAOhgH,IAAKsC,CAAAA,KAAK,CAAC,IAAIqzH,WAAAA,EAAAA,CAAcC,MAAM,CAACmuI,QAAAA,CAAS/wW,IAAI,CAAA,EAC1D,CAAE,MAAOnO,GAAAA,CAAK,CACZvE,QAAAA,CAAS,CAAC,yBAAyB,EAAEuE,GAAI,CAAA,CAAC,EAC1C,MACF,CACA,MAAM8xV,SAAY,CAAA,CAChB,QACA,QACA,CAAA,OAAA,CACA,KACA,CAAA,KAAA,CACD,CAAC92V,GAAG,CAAC,GAACgB,EAAMm/N,IAAI,CAACn/N,GAAAA,CAAI,EAAEw0V,KAAAA,EAAS,EAAE,CAAEtrV,CAAAA,IAAI,GACzC,MAAM66B,QAAAA,CAAW,EACjB,CAAA,MAAMsiU,QAAW,CAAA,EAAE,CACnB,IAAK,MAAM75H,YAAYspH,SAAU,CAAA,CAC/B,MAAM3oH,IAAOqnH,CAAAA,KAAAA,CAAMv9R,IAAI,CAAC,CAAK9qC,EAAAA,CAAAA,CAAEqgN,QAAQ,GAAKA,QAAAA,CAAAA,CAC5C,IAAIviM,OACJ,CAAA,GAAIkjM,IAAM,CAAA,CACRljM,QAAU,IAAIijM,KAAAA,CAAMV,QAAU,CAAA,SAAA,CAAW,CACvCxpO,GAAK,CAAA,CAAC,EAAEA,GAAAA,CAAIqrO,IAAI,CAAC,CAAC,EAAE7B,QAAS,CAAA,CAAC,CAC9BA,QACAC,CAAAA,QAAAA,CAAUU,IAAKh7N,CAAAA,IAAI,CAClB,CAAA,CACDwxB,OAAS,CAAA,KACX,GACF,CAAO,KAAA,CACL,MAAM3gC,GAAAA,CAAM,IAAIkuE,GAAIs7J,CAAAA,QAAAA,CAAU,IAAIt7J,GAAIs7J,CAAAA,QAAAA,CAAUryO,OAAOmI,QAAQ,CAAC6uE,IAAI,CAAA,CAAEt5E,QAAQ,EAAIA,CAAAA,CAAAA,QAAQ,EAC1FoyC,CAAAA,OAAAA,CAAU,IAAIijM,KAAMV,CAAAA,QAAAA,CAAU,SAAW,CAAA,CACvCxpO,IACAwpO,QACF,CAAA,CAAG,CACD7oM,OAAS,CAAA,KACX,GACF,CACA,MAAMswU,OAAU,CAAA,IAAI7iS,QAAQ,CAAC5uC,OAAAA,CAASu1C,UACpC9tC,OAAQzqC,CAAAA,EAAE,CAAC,MAAQ,CAAA,IAAIgjC,OAAQ,CAAA,IAAA,CAAA,CAAA,CAC/ByH,QAAQzqC,EAAE,CAAC,QAAS,GAACwE,EAAM+zE,OAAO/zE,GACpC,CAAA,EAAA,CAAA,CAAA,CACA,IAAI,CAACmkO,GAAG,CAAC+H,MAAM,CAACznO,GAAG,CAACwhC,OACpBlG,CAAAA,CAAAA,QAAQ,CAACyoM,SAAS,CAAGviM,OAAAA,CACrBo8T,SAASptW,IAAI,CAACg7W,SAChB,CACAj6W,MAAAA,CAAO8G,MAAM,CAACijC,UAAUj/B,OAAO,CAAC,CAACmE,EAAI,IAAI,CAACk/N,GAAG,CAAC+H,MAAM,CAAC7B,IAAI,CAACplO,GAC1D,CAAMmoE,MAAAA,OAAAA,CAAQ6vS,UAAU,CAAC5a,QAAAA,CAAAA,CACzB,KAAM,CAAEn2H,MAAM,CAAE,CAAG,IAAI,CAAC/H,GAAG,CAC3BrW,KAAAA,CAAMlyN,IAAI,CAAC,SAAU,IACnB5F,CAAAA,MAAAA,CAAO8G,MAAM,CAACijC,QAAAA,CAAAA,CAAUj/B,OAAO,CAAEmE,CAC/BinO,EAAAA,CAAAA,MAAAA,CAAO1tO,MAAM,CAACyG,CAAAA,CAAAA,CACdA,EAAEgmO,MAAM,GACV,GACF,CACA,CAAA,CAAA,MAAM98N,IAAO,CAAA,IAAIwyN,cACjBxyN,CAAAA,IAAAA,CAAKgtN,IAAI,CAAGA,IACZhtN,CAAAA,IAAKsnN,CAAAA,SAAS,CAAG0F,IAAAA,CAAKhnL,KAAK,CAC3BhmC,IAAK4xN,CAAAA,OAAO,CAAGhgM,QAAQ,CAACo7L,IAAKwE,CAAAA,KAAK,CAAC6wH,KAAK,CAAC,EAAE,CAAC,CAAC90S,QAAQ,CACrDvtC,IAAK8xN,CAAAA,OAAO,CAAGlgM,QAAQ,CAACo7L,IAAKwE,CAAAA,KAAK,CAAC6wH,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC90S,QAC7CvtC,CAAAA,IAAKgyN,CAAAA,KAAK,CAAGpgM,QAAQ,CAACo7L,IAAKgF,CAAAA,KAAK,CAACqwH,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC90S,QAC3CvtC,CAAAA,IAAAA,CAAKyxN,MAAM,CAAG7/L,QAAQ,CAACo7L,IAAKyE,CAAAA,MAAM,CAAC4wH,KAAK,CAAC,CAAE,CAAA,CAAC,CAAC90S,QAC7CvtC,CAAAA,IAAK0xN,CAAAA,GAAG,CAAG9/L,QAAQ,CAACo7L,IAAK0E,CAAAA,GAAG,CAAC2wH,KAAK,CAAC,EAAE,CAAC,CAAC90S,QAAQ,CAC/CvtC,IAAK+sN,CAAAA,YAAY,CAAGn7L,QAAQ,CAACo7L,IAAKG,CAAAA,GAAG,EAAEk1H,KAAK,CAAC,CAAE,CAAA,CAAC,EAAE90S,QAClDvtC,CAAAA,KAAKoyN,SAAS,CAAGxgM,QAAQ,CAACo7L,IAAAA,CAAKG,GAAG,EAAEk1H,KAAK,CAAC,CAAA,CAAE,CAAC,EAAE90S,SAC/C,MAAM0lL,UAAAA,CAAatT,KAAM3/M,CAAAA,IAAI,EAAEizN,UAC/B,CAAA,GAAI,CAACA,UAAY,CAAA,CACf,MAAMjzN,IAAK00N,CAAAA,cAAc,GAC3B,CACA,MAAMnnL,QAAW0lL,CAAAA,UAAAA,CAAa,IAAIpI,cAAAA,CAAe,IAAI,CAACmL,GAAG,CAACpmM,cAAc,CAAE,MAAM5vB,IAAAA,CAAKizN,UAAU,EAAM,CAAA,CAAA,IAAIsC,mBAAmB,IAAI,CAACS,GAAG,CAACpmM,cAAc,CAAE5vB,IAAAA,CAAAA,CACrJ1S,SAAS,IAAMigD,CAAAA,QAAAA,EACjB,CAAE,MAAO17C,GAAAA,CAAK,CACZvE,QAAAA,CAASuE,KACX,CACF,CA1FA9D,YAAYioO,GAAG,CAAE3pH,WAAa,CAAC,CAAC,CAC9B,IAAI,CAAC2pH,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC3pH,UAAU,CAAGA,WACpB,CAwFF,CAEA,MAAM2kQ,mBAKJ90I,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAM,CAAA,CACJqrO,IAAMrrO,CAAAA,GAAAA,CACN62D,SAAU72D,GACZ,EACF,CACA,MAAM4G,OAAAA,CAAU,CACdy0G,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAC3BkB,YAAAA,CAAchC,IAAK0C,CAAAA,YAAY,CAACjB,IAClC,EACAiD,IAAKloH,CAAAA,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAEzkO,OAAAA,CAAS,CAAC5F,GAAKmO,CAAAA,IAAAA,GAAAA,CAChC,GAAI,CAACnO,GAAAA,CAAK,CACR,MAAM07C,QAAAA,CAAW,IAAIy2S,oBAAAA,CAAqBrkI,MAAMqb,IAAI,CAACnqO,GAAG,CAAEmP,IAAAA,CAAAA,CAC1D1S,SAAS,IAAMigD,CAAAA,QAAAA,EACjB,CAAO,KAAA,CACLjgD,SAAS,CAAC,6BAA6B,EAAEuD,GAAAA,CAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EAClE,CACF,CACF,EAAA,CAxBA9D,YAAYioO,GAAG,CAAE3pH,UAAU,CAAC,CAC1B,IAAI,CAAC2pH,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC3pH,UAAU,CAAGA,WACpB,CAsBF,CAEA,MAAM4kQ,aAAAA,SAAsB3tI,gBAU1ByjI,oBAAqBl2W,CAAAA,GAAG,CAAE,CACxB,OAAOA,GAAI5B,CAAAA,OAAO,CAAC,GAAA,CAAA,EAAQ,EAAI4B,GAAIlK,CAAAA,KAAK,CAAC,GAAA,CAAI,CAAC,CAAE,CAAA,CAAGkK,GACrD,CACAu2W,UAAAA,CAAWv2W,GAAG,CAAE,CACd,MAAM+uO,QAAAA,CAAWj6O,KAAKuB,WAAW,CAAC,IAAI,CAAC6/W,oBAAoB,CAACl2W,GAAMk9G,CAAAA,CAAAA,CAAAA,WAAW,EAC7E,CAAA,GAAI6xH,WAAa,eAAiB,CAAA,CAChC,OAAO,IAAI,CAACunI,OAAO,CAACnpB,MAAM,CAE5B,MAAM32V,GAAM1B,CAAAA,IAAAA,CAAKyB,YAAY,CAACw4O,UAAUx6O,OAAO,CAAC,GAAK,CAAA,EAAA,CAAA,CACrD,OAAO,IAAI,CAAC+hX,OAAO,CAAC9/W,GAAAA,CAAI,EAAI,IAAI,CAAC8/W,OAAO,CAAC+J,GAAG,CAE9Ch1I,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,MAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,IAAI,CAACu2W,UAAU,CAACv2W,GAAAA,CAAI62D,QAAQ,CAAA,CAAEw0K,IAAI,CAACrrO,GAAAA,CAAKvD,SAAUqyN,KACpD,EAAA,CACAtyG,KAAKx8G,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,OAAO3/M,IACT,CA/BAjS,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,QAAA,CACX,CAAA,IAAI,CAACmxI,OAAO,CAAG,CACb+J,GAAK,CAAA,IAAI9C,UAAUp4I,GAAK,CAAA,CAAA,CAAA,CACxBm7I,GAAK,CAAA,IAAIL,gBAAgB96I,GACzBoiE,CAAAA,CAAAA,IAAAA,CAAM,IAAIs2E,UAAAA,CAAW14I,IAAK,CAC1BgoH,CAAAA,CAAAA,MAAAA,CAAQ,IAAIgzB,kBAAmBh7I,CAAAA,GAAAA,CAAK,EACtC,EACF,CAwBF,CAEA,MAAMo7I,cACJ,OAAOC,gBAAAA,CAAiBzkP,MAAM,CAAE5sH,IAAI,CAAEqwW,UAAU,CAAE,CAChD,MAAMz6W,CAAIy6W,CAAAA,UAAAA,CAAWiB,UAAU,CAC/B,IAAIz7W,EAAG7P,CACP,CAAA,MAAMP,CAAIua,CAAAA,IAAAA,CAAKuxW,IAAI,CACnB,GAAI,CAAC9rX,CAAAA,CAAG,CACNoQ,CAAIw6W,CAAAA,UAAAA,CAAWmB,UAAU,CACzBxrX,EAAIga,IAAKyxW,CAAAA,KAAI,CAEf,IAAIr7V,EAAI3wB,CAAIA,CAAAA,CAAC,CAAC,CAAA,CAAE,CAAGoQ,CAAC,CAAC7P,EAAE,CACvB4mI,MAAAA,CAAO+hB,gBAAgB,CAAC/4I,CAAC,CAACwgB,CAAAA,CAAE,CAAExgB,CAAC,CAACwgB,EAAI,CAAE,CAAA,CAAExgB,CAAC,CAACwgB,CAAAA,CAAI,CAAE,CAAA,CAAA,CAChDA,EAAI3wB,CAAIA,CAAAA,CAAC,CAAC,CAAA,CAAE,CAAGoQ,CAAC,CAAC7P,CAAI,CAAA,CAAA,CAAE,CACvB4mI,MAAO6hB,CAAAA,mBAAmB,CAAC74I,CAAC,CAACwgB,EAAE,CAAExgB,CAAC,CAACwgB,CAAAA,CAAI,EAAE,CAAExgB,CAAC,CAACwgB,CAAAA,CAAI,EAAE,CACnDA,CAAAA,CAAAA,CAAI3wB,CAAIA,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAGoQ,CAAC,CAAC7P,CAAAA,CAAI,EAAE,CACvB4mI,MAAAA,CAAOiiB,aAAa,CAACj5I,CAAC,CAACwgB,CAAAA,CAAE,CAAExgB,CAAC,CAACwgB,CAAI,CAAA,CAAA,CAAE,CAAExgB,CAAC,CAACwgB,CAAI,CAAA,CAAA,CAAE,EAC/C,CACA,OAAOs7V,aAAa3lX,CAAC,CAAEiU,IAAI,CAAE,CAC3B,MAAMha,CAAAA,CAAI+F,EAAEX,UAAU,CAAC,GAAK4U,IAAK2xW,CAAAA,cAAc,CAC/C,OAAO3xW,KAAK4xW,UAAU,CAAC5rX,EAAE,CAE3B,OAAO6rX,aAAc9lX,CAAAA,CAAC,CAAEiU,IAAI,CAAE,CAC5B,IAAIhR,GAAM,CAAA,CAAA,CACV,IAAI,IAAIhJ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+F,EAAE9F,MAAM,CAAED,IAAI,CAC/BgJ,GAAAA,CAAMA,IAAMgR,IAAK8xW,CAAAA,aAAa,CAAG/lX,CAAAA,CAAEX,UAAU,CAACpF,CAAAA,CAAAA,CAAKga,IAAK2xW,CAAAA,eAAc,CAExE,OAAO3xW,IAAK4xW,CAAAA,UAAU,CAAC5iX,GAAI,CAC7B,CACF,CAEA,MAAM+iX,WAKJx0T,GAAM,EAAA,CACJ,MAAM9/C,IAAAA,CAAO5V,OAAOwwH,SAAS,CAAC3yH,QAAQ,CAACkK,IAAI,CAAC,IAAI,CAACu3I,KAAK,EACtD,GAAI1pI,IAAAA,GAAS,kBAAmB,CAC9B,IAAI,CAACu0W,UAAU,GACjB,CAAO,KAAA,GAAIv0W,OAAS,gBAAkB,CAAA,CACpC,IAAI,CAACw0W,YAAY,GACnB,CAAO,KAAA,CACL,IAAI,CAACC,OAAO,CAAG,IAAI,CAAC/qO,MACtB,CACA,OAAO,IAAI,CAAC+qO,OAAO,CAErBF,UAAAA,EAAa,CACX,IAAI,CAACE,OAAO,CAAG,EAAC,CAChB,MAAMt8W,CAAI/N,CAAAA,MAAAA,CAAOoW,IAAI,CAAC,IAAI,CAACkpI,KAAK,CAAA,CAChCvxI,CAAEjD,CAAAA,OAAO,CAAC,IAAI,CAACw/W,UAAU,CAAE,IAAI,EACjC,CACAA,UAAWC,CAAAA,OAAO,CAAE,CAClB,IAAI5I,OAAS4I,OACb,CAAA,MAAMl0W,IAAMk0W,OAAQnsX,CAAAA,MAAM,CAC1B,GAAIiY,MAAQ,CAAG,CAAA,CACbsrW,MAAS4H,CAAAA,aAAAA,CAAcM,YAAY,CAACU,OAAAA,CAAS,IAAI,CAACz2I,KAAK,EACzD,CAAA,KAAO,GAAIz9N,GAAQ,GAAA,CAAA,CAAG,CACpBsrW,MAAS4H,CAAAA,aAAAA,CAAcS,aAAa,CAACO,QAAS,IAAI,CAACz2I,KAAK,EAC1D,CACA,IAAI,CAACu2I,OAAO,CAAC1I,MAAAA,CAAO,CAAG,IAAIuI,UAAAA,CAAW,IAAI,CAAC5qO,KAAK,CAACirO,OAAQ,CAAA,CAAE,IAAI,CAACz2I,KAAK,CAAEp+K,CAAAA,GAAG,GAC5E,CACA00T,cAAe,CACb,IAAI,CAACC,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC/qO,KAAK,CAACx0I,OAAO,CAAC,IAAI,CAAC0/W,YAAY,CAAE,IAAI,EAC5C,CACAA,aAAaC,GAAG,CAAE,CAChB,MAAM7sX,EAAI,IAAIssX,UAAAA,CAAWO,IAAK,IAAI,CAAC32I,KAAK,CAAEp+K,CAAAA,GAAG,EAC7C,CAAA,IAAI,CAAC20T,OAAO,CAACprX,IAAI,CAACrB,GACpB,CArCAsI,WAAAA,CAAYqoI,IAAI,CAAEp2H,IAAI,CAAC,CACrB,IAAI,CAACmnI,KAAK,CAAG/Q,IACb,CAAA,IAAI,CAACulG,KAAK,CAAG37N,KACf,CAmCF,CAEA,MAAMuyW,YAKJjjQ,KAAMtvG,CAAAA,IAAI,CAAE,CACV,MAAM8oO,QAAW,CAAA,GACjB,IAAI7xO,MAAAA,CAAS,KACb,MAAMo5W,UAAAA,CAAarwW,IAAKwyW,CAAAA,gBAAgB,CACxC,GAAInC,UAAAA,EAAc,CAACrwW,IAAAA,CAAKyyW,eAAe,CAAE,CACvCzyW,IAAKyyW,CAAAA,eAAe,CAAG,IACvBzyW,CAAAA,KAAK8oO,QAAQ,CAAG,IAAIipI,UAAW/xW,CAAAA,IAAAA,CAAK8oO,QAAQ,CAAEunI,YAAY9yT,GAAG,GAC/D,CACA,IAAI,MAAMvtB,EAAMhwB,IAAAA,IAAAA,CAAK8oO,QAAQ,CAAC,CAC5B,MAAM4pI,OAAAA,CAAU1yW,KAAK8oO,QAAQ,CAAC94M,GAAG,CACjC,MAAM2iV,MAAS,CAAA,IAAI,CAACC,aAAa,CAACF,OAASrC,CAAAA,UAAAA,CAC3CvnI,CAAAA,QAAQ,CAAC94M,EAAG,CAAA,CAAG2iV,OACf,GAAID,OAAAA,CAAQz7W,MAAM,GAAK,IAAA,CAAM,CAC3BA,MAAS07W,CAAAA,OACX,CACF,CACA,IAAI,MAAM3iV,EAAAA,IAAMhwB,KAAK8oO,QAAQ,CAAC,CAC5B,MAAM6pI,MAAAA,CAAS7pI,QAAQ,CAAC94M,GAAG,CAC3B,MAAMs7G,SAAWtrI,IAAK8oO,CAAAA,QAAQ,CAAC94M,EAAG,CAAA,CAACs7G,QAAQ,CAC3C,MAAMptI,GAAMotI,CAAAA,QAAAA,CAASrlJ,MAAM,CAC3B,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,MAAM6sX,QAAW/pI,CAAAA,QAAQ,CAACx9F,QAAQ,CAACtlJ,CAAE,CAAA,CAAC,CACtC,GAAI6sX,QAAAA,CAAU,CACZF,MAAAA,CAAOnkO,QAAQ,CAACqkO,QAAAA,EAClB,CACF,CACF,CACA,IAAI,CAACC,kBAAkB,CAAC77W,MAAAA,CAAQ+I,KAAK8oO,QAAQ,CAAA,CAC7C,OAAO7xO,MACT,CACA27W,aAAc5yW,CAAAA,IAAI,CAAEqwW,UAAU,CAAE,CAC9B,MAAMzjP,MAAS,CAAA,IAAI27G,OAAOvoO,IAAK1W,CAAAA,IAAI,CAAE,IAAI,CAAC6xO,IAAI,CAC9CvuG,CAAAA,MAAAA,CAAOq8G,OAAO,CAACjpO,KAAK+yW,WAAW,CAAA,CAC/B,IAAI,CAACC,eAAe,CAACpmP,MAAQ5sH,CAAAA,IAAAA,CAAMqwW,UACnCzjP,CAAAA,CAAAA,OAAO/yD,QAAQ,CAAG75D,KAAKnH,OAAO,EAAI,KAClC,GAAI,IAAI,CAACo6W,WAAW,CAAE,CACpBrmP,MAAAA,CAAOq9G,SAAS,CAAG,KACrB,CAAO,KAAA,CACLr9G,MAAOof,CAAAA,mBAAmB,CAAGpf,MAAO/yD,CAAAA,SAAQ,CAE9C+yD,MAAAA,CAAOsmP,QAAQ,CAAGlzW,IAAAA,CAAKkzW,QAAQ,CAC/B,GAAIlzW,IAAKxJ,CAAAA,IAAI,CAAE,CACb,IAAI,IAAIxQ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIga,KAAKxJ,IAAI,CAACvQ,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC4mI,MAAOp2H,CAAAA,IAAI,CAACF,GAAG,CAAC0J,IAAKxJ,CAAAA,IAAI,CAACxQ,CAAAA,CAAE,EAC9B,CACF,CACA,OAAO4mI,MACT,CACAomP,eAAgBpmP,CAAAA,MAAM,CAAE5sH,IAAI,CAAEqwW,UAAU,CAAE,CACxC,GAAIA,UAAAA,CAAY,CACde,aAAcC,CAAAA,gBAAgB,CAACzkP,MAAQ5sH,CAAAA,IAAAA,CAAMqwW,YAC/C,CAAO,KAAA,CACL,MAAM13V,CAAAA,CAAI3Y,KAAKsK,QAAQ,CACvB,MAAMhlB,CAAI0a,CAAAA,IAAAA,CAAK2sI,QAAQ,CACvB,MAAM5gJ,CAAIiU,CAAAA,IAAAA,CAAKsI,KAAK,CACpBskH,MAAAA,CAAO+hB,gBAAgB,CAACh2H,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,CAAA,CAAE,EACxCi0G,MAAO6hB,CAAAA,mBAAmB,CAACnpJ,CAAC,CAAC,CAAE,CAAA,CAAEA,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,CAAA,CAAE,EAC3CsnI,MAAOiiB,CAAAA,aAAa,CAAC9iJ,CAAC,CAAC,EAAE,CAAEA,CAAC,CAAC,CAAA,CAAE,CAAEA,CAAC,CAAC,CAAE,CAAA,EACvC,CACF,CACA+mX,kBAAAA,CAAmBlmP,MAAM,CAAEk8G,QAAQ,CAAE,CACnC,MAAMqqI,WAAc,CAAA,IAAI,CAACh4I,IAAI,CAAC6L,OAAO,CAACz2O,IAAI,CAC1C,IAAI2N,IAAMi1W,WAAYltX,CAAAA,MAAM,CAC5B,MAAMmtX,UAAAA,CAAatqI,QAAQ,CAACl8G,OAAOm8G,OAAO,EAAA,CAAG,CAC7C,IAAI,IAAI/iP,EAAI,CAAGA,CAAAA,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,MAAM+7O,MAAAA,CAASoxI,WAAW,CAACntX,EAAE,CAC7B,MAAMquQ,aAAgB++G,CAAAA,UAAAA,CAAWtzU,UAAU,CAACiiM,MAAAA,CAAO/xM,EAAE,CAAC,CACtD,GAAIqkO,aAAe,CAAA,CACjBtyB,MAAOyG,CAAAA,YAAY,CAAC57G,MAAQynI,CAAAA,aAAAA,EAC9B,CACF,CACAn2P,IAAMk1W,UAAW9nO,CAAAA,QAAQ,CAACrlJ,MAAM,CAChC,MAAMqlJ,QAAAA,CAAW1e,OAAOoQ,SAAS,CACjC,IAAI,IAAIh3I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkY,IAAKlY,CAAI,EAAA,CAAA,CAC1B,GAAIslJ,QAAQ,CAACtlJ,CAAE,CAAA,CAAE,CACfslJ,QAAQ,CAACtlJ,CAAE,CAAA,CAAG,IAAI,CAAC8sX,kBAAkB,CAACxnO,QAAQ,CAACtlJ,CAAE,CAAA,CAAE8iP,UACrD,CACF,CACA,OAAOl8G,MACT,CAnFA7+H,YAAYioO,GAAG,CAAEq9I,UAAU,CAAC,CAC1B,IAAI,CAACl4I,IAAI,CAAGnF,GACZ,CAAA,IAAI,CAACi9I,WAAW,CAAGI,WACrB,CAiFF,CAEA,MAAMC,UAAAA,CACJ,OAAOp3I,IAAKrrO,CAAAA,GAAG,CAAEw7G,UAAU,CAAE/+G,QAAQ,CAAE,CACrC,GAAI,OAAOuD,MAAQ,QAAU,CAAA,CAC3BA,GAAM,CAAA,CACJqrO,KAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACAo/G,KAAKloH,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAE,CACjBhwH,KAAAA,CAAOG,WAAa,CACpBA,CAAAA,UAAAA,CAAYA,UACd,CAAG,CAAA,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,GAAAA,CAAK,CACRvE,QAAAA,CAASuE,IAAKu9G,QAChB,EAAA,CAAA,KAAO,CACL,IAAImkQ,OAAS,CAAC,+BAA+B,EAAE1iX,GAAI62D,CAAAA,QAAQ,CAAC,CAAC,CAC7D,GAAI71D,GAAAA,CAAIm4E,OAAO,CAAE,CACfupS,QAAU,CAAC,EAAE,EAAE1hX,GAAIm4E,CAAAA,OAAO,CAAC,CAAC,CAC5B,GAAIn4E,GAAAA,CAAImH,KAAK,CAAE,CACbu6W,QAAU,CAAC;AAAE,EAAE1hX,GAAImH,CAAAA,KAAK,CAAC,EAAC,CAE9B,CAAO,KAAA,CACLu6W,MAAU,EAAA,CAAC,EAAE,EAAE1hX,IAAI,EACrB,CACAvE,QAAAA,CAASimX,MACX,EAAA,CACF,CACF,EAAA,CACF,CAEA,MAAMC,gBAAAA,SAAyBlwI,eAI7BpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClBgmX,UAAWp3I,CAAAA,IAAI,CAACrrO,GAAAA,CAAK,IAAI,CAACw7G,UAAU,CAAE/+G,UACxC,CACA+/G,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,IAAI,CAACm7N,IAAI,CAAC6L,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,KACtC,MAAMwqD,MAAAA,CAAS,IAAIsgF,WAAAA,CAAY,IAAI,CAACp3I,IAAI,CAAE,OAC1C,MAAMlkO,MAAAA,CAASg7R,MAAO3iL,CAAAA,KAAK,CAACtvG,IAAAA,CAC5B,CAAA,IAAI,CAACm7N,IAAI,CAAC6L,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,KACtC,CAAA,OAAOxwO,MACT,CAZAlJ,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,WACb,EAAA,CAWF,CAEA,MAAMy9I,WAAoBnwI,SAAAA,eAAAA,CAIxBpH,KAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAAA,GAAQ,SAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACAo/G,IAAKloH,CAAAA,GAAG,CAAC8I,GAAAA,CAAIqrO,IAAI,CAAE,CACjBhwH,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAC1B,CAAA,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,GAAK,CAAA,CACRvE,QAAS,CAAA,IAAA,CAAM8hH,QACjB,EAAA,CAAA,KAAO,CACL9hH,QAAAA,CAAS,CAAC,6BAA6B,EAAEuD,GAAI62D,CAAAA,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EAClE,CACF,CAAA,EACF,CACA2yO,UAAAA,CAAWxkO,IAAI,CAAE,CACf,IAAI,CAAC0iO,OAAL,GAAA,IAAI,CAACA,OAAAA,CAAY,IAAIC,WAAAA,CAAY,OACjC,CAAA,CAAA,CAAA,OAAO,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC5iO,IAAAA,CAC7B,CAxBAjS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,MAAA,CAAA,CAAS,IAAI,CAAC0M,OAAO,CAAG,KACrC,CAuBF,CAEA,MAAMgxI,WAAAA,SAAoBpwI,eAIxBpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,MAAM4G,OAAAA,CAAU,CACdy0G,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,EACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAC7B,CACA,GAAIx7G,GAAAA,CAAIqrO,IAAI,CAAC31O,UAAU,CAAC,OAAA,CAAA,CAAU,CAChCkR,OAAAA,CAAQ81G,YAAY,CAAGhC,KAAK0C,YAAY,CAACjB,KAC3C,CACAiD,IAAAA,CAAKloH,GAAG,CAAC8I,IAAIqrO,IAAI,CAAEzkO,OAAS,CAAA,CAAC5F,GAAKu9G,CAAAA,QAAAA,GAAAA,CAChC,GAAI,CAACv9G,IAAK,CACRvE,QAAAA,CAAS,IAAM8hH,CAAAA,QAAAA,EACjB,CAAO,KAAA,CACL9hH,QAAS,CAAA,CAAC,6BAA6B,EAAEuD,GAAAA,CAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAI,CAAA,CAAC,CAAC,EAClE,CACF,CAAA,EACF,CACA2yO,UAAAA,CAAWxkO,IAAI,CAAE,CACf,IAAI,CAAC0iO,OAAL,GAAA,IAAI,CAACA,OAAAA,CAAY,IAAIC,WAAAA,CAAY,UACjC,OAAO31H,IAAAA,CAAKsC,KAAK,CAAC,IAAI,CAACozH,OAAO,CAACE,MAAM,CAAC5iO,IAAAA,CAAAA,CACxC,CA5BAjS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,MAAA,CAAA,CAAS,IAAI,CAAC0M,OAAO,CAAG,KACrC,CA2BF,CAEA,MAAMixI,yBAAAA,CAyCJC,UAAW/lX,CAAAA,GAAG,CAAEmS,IAAI,CAAE,CACpB,IAAI,CAACu9H,KAAK,CAAG,KAAA,CACb,GAAI,IAAI,CAACs2O,aAAa,CAAE,CACtB,OAAO7zW,IAAI,CAACnS,GAAI,EAClB,CACF,CACAimX,QAAS9zW,CAAAA,IAAI,CAAE,CACb,MAAM+zW,KAAAA,CAAQz4J,8BACd,CAAA,MAAM04J,QAAU52J,iCAChB,CAAA,MAAM62J,WAAcj0W,CAAAA,IAAAA,CAAKu7M,aAAa,GAAK,MAC3C,CAAA,IAAI,MAAM1tN,GAAOmS,IAAAA,IAAAA,CAAK,CACpB,MAAMvC,IAAOs2W,CAAAA,KAAK,CAAClmX,GAAAA,CAAI,CACvB,GAAI,CAAC4P,IAAM,CAAA,CACT,GAAIu2W,OAAO,CAACnmX,GAAAA,CAAI,CAAE,CAChB,OAAOmS,IAAI,CAACnS,GAAI,EAClB,CAAO,KAAA,CACL,IAAI,CAAC0vI,KAAK,CAAG,MACf,CACA,QACF,CACA,GAAI9/H,KAAKlX,UAAU,CAAC,MAAS,CAAA,CAAA,CAC3B,MAAM2tX,QAAAA,CAAWz2W,IAAK9W,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAC,CAAE,CAAA,CACnC,GAAI,IAAI,CAACwtX,cAAc,CAACD,QAAAA,CAAS,CAAE,CACjC,GAAI,CAAC,IAAI,CAACC,cAAc,CAACD,QAAAA,CAAS,CAACl0W,IAAI,CAACnS,GAAAA,CAAI,CAAG,CAAA,CAC7C,IAAI,CAAC+lX,UAAU,CAAC/lX,GAAAA,CAAKmS,IACvB,EAAA,CACF,CACF,CAAA,KAAO,GAAIvC,IAAS,GAAA,QAAA,CAAU,CAC5B,GAAI,OAAOuC,IAAI,CAACnS,GAAAA,CAAI,GAAK,QAAU,CAAA,CACjC,IAAI,CAAC+lX,UAAU,CAAC/lX,GAAKmS,CAAAA,IAAAA,EACvB,CACF,CAAO,KAAA,GAAIvC,IAAS,GAAA,SAAA,CAAW,CAC7B,GAAI,OAAOuC,IAAI,CAACnS,GAAI,CAAA,GAAK,SAAW,CAAA,CAClC,IAAI,CAAC+lX,UAAU,CAAC/lX,IAAKmS,IACvB,EAAA,CACF,CAAO,KAAA,GAAIvC,IAAS,GAAA,QAAA,CAAU,CAC5B,GAAI,OAAOuC,IAAI,CAACnS,GAAI,CAAA,GAAK,QAAU,CAAA,CACjC,IAAI,CAAC+lX,UAAU,CAAC/lX,GAAAA,CAAKmS,IACvB,EAAA,CACF,CAAO,KAAA,GAAIvC,IAAS,GAAA,MAAA,CAAQ,CAC1B,GAAI,EAAEuC,IAAI,CAACnS,GAAAA,CAAI,WAAY7I,KAAAA,EAASgb,IAAI,CAACnS,GAAAA,CAAI,CAAC5H,MAAM,GAAK,CAAA,CAAI,CAAA,CAC3D,IAAI,CAAC2tX,UAAU,CAAC/lX,GAAAA,CAAKmS,IACvB,EAAA,CACF,CAAO,KAAA,GAAIvC,OAAS,KAAO,CAAA,CACzB,GAAI,EAAEuC,IAAI,CAACnS,GAAAA,CAAI,WAAY7I,KAASgb,EAAAA,IAAI,CAACnS,GAAAA,CAAI,CAAC5H,MAAM,GAAK,CAAA,EAAI,CAC3D,IAAI,CAAC2tX,UAAU,CAAC/lX,GAAAA,CAAKmS,IACvB,EAAA,CACF,CAAO,KAAA,GAAIvC,IAAS,GAAA,SAAA,CAAW,CAC7B,GAAI,CAACw2W,WAAAA,CAAa,CAChB,GAAI,EAAE,OAAOj0W,IAAI,CAACnS,GAAI,CAAA,GAAK,UAAYmS,IAAI,CAACnS,GAAI,CAAA,GAAK,IAAG,CAAA,CAAI,CAC1D,GAAI,EAAEmS,IAAI,CAACnS,GAAAA,CAAI,WAAY8jC,OAAM,CAAI,CAAA,CACnC,IAAI,CAACiiV,UAAU,CAAC/lX,GAAAA,CAAKmS,IACvB,EAAA,CACF,CACF,CAAA,KAAO,CACL,GAAI,EAAE,OAAOA,IAAI,CAACnS,GAAI,CAAA,GAAK,UAAYmS,IAAI,CAACnS,GAAI,CAAA,GAAK,IAAG,CAAA,CAAI,CAC1D,GAAI,EAAEmS,IAAI,CAACnS,GAAAA,CAAI,WAAY8jC,OAAM,CAAI,CAAA,CACnC,IAAI,CAACiiV,UAAU,CAAC/lX,GAAKmS,CAAAA,IAAAA,EACvB,CACF,CACF,CACF,CAAO,KAAA,GAAIvC,IAAS,GAAA,aAAA,CAAe,CACjC,GAAI,EAAEuC,IAAI,CAACnS,GAAAA,CAAI,CAACsjB,MAAM,EAAInR,IAAI,CAACnS,GAAAA,CAAI,CAACsjB,MAAM,YAAYnsB,KAASgb,EAAAA,IAAI,CAACnS,GAAAA,CAAI,CAACsjB,MAAM,CAAClrB,MAAM,GAAK,CAAA,CAAA,CAAI,CAC7F,IAAI,CAAC2tX,UAAU,CAAC/lX,GAAKmS,CAAAA,IAAAA,EACvB,CACA,GAAI,EAAEA,IAAI,CAACnS,IAAI,CAAC2jB,WAAW,EAAIxR,IAAI,CAACnS,GAAAA,CAAI,CAAC2jB,WAAW,YAAYxsB,KAASgb,EAAAA,IAAI,CAACnS,GAAAA,CAAI,CAAC2jB,WAAW,CAACvrB,MAAM,GAAK,CAAA,CAAI,CAAA,CAC5G,IAAI,CAAC2tX,UAAU,CAAC/lX,IAAKmS,IACvB,EAAA,CACF,CAAO,KAAA,GAAIvC,IAAS,GAAA,SAAA,CAAW,CAC7B,GAAI,EAAE,OAAOuC,IAAI,CAACnS,GAAI,CAAA,GAAK,QAAYmS,EAAAA,IAAI,CAACnS,GAAI,CAAA,GAAK,IAAQmS,EAAAA,IAAI,CAACnS,GAAAA,CAAI,GAAKC,SAAQ,EAAI,CACrF,GAAI,EAAEkS,IAAI,CAACnS,GAAI,CAAA,WAAY8jC,SAAW3xB,IAAI,CAACnS,GAAI,CAAA,CAAC4jC,OAAM,CAAI,CAAA,CACxD,IAAI,CAACmiV,UAAU,CAAC/lX,GAAAA,CAAKmS,IACvB,EAAA,CACF,CACF,CAAA,KAAO,GAAIvC,IAAS,GAAA,QAAA,CAAU,CAC5B,MAAM22W,UAAavsX,CAAAA,MAAAA,CAAOoW,IAAI,CAAC+B,IAAI,CAACnS,GAAI,CAAA,CAAA,CACxC,IAAI,IAAI7H,CAAI,CAAA,CAAA,CAAGA,EAAIouX,UAAWnuX,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,GAAI,OAAOga,IAAI,CAACnS,GAAI,CAAA,CAACumX,UAAU,CAACpuX,CAAE,CAAA,CAAC,GAAK,QAAA,CAAU,CAChD,IAAI,CAAC4tX,UAAU,CAACQ,UAAU,CAACpuX,CAAE,CAAA,CAAEga,IAAI,CAACnS,GAAAA,CAAI,EAC1C,CACF,CACF,CAAA,KAAO,CACL4E,OAAAA,CAAQC,KAAK,CAAC,CAAC,uBAAuB,EAAE+K,IAAK,CAAA,CAAC,EAChD,CACF,CACAuC,IAAKq0W,CAAAA,SAAS,CAAG,IAAA,CACjB,OAAO,IAAI,CAAC92O,KAAK,CAEnB+2O,oBAAAA,CAAqB3lX,MAAM,CAAE,CAC3B,OAAO,SAAShB,KAAK,CACnB,CAAA,OAAOgB,MAAOM,CAAAA,OAAO,CAACtB,KAAAA,CAAAA,EAAU,CAClC,CACF,CApIAI,WAAa,EAAA,CACX,IAAI,CAAC8lX,aAAa,CAAG,IACrB,CAAA,IAAI,CAACt2O,KAAK,CAAG,IACb,CAAA,IAAI,CAAC42O,cAAc,CAAG,CACpBhqK,eAAAA,CAAiB,IAAI,CAACmqK,oBAAoB,CAAC,CACzCj0P,YAAAA,CACAC,WACAC,sBACD,CAAA,CAAA,CACDgZ,IAAM,CAAA,IAAI,CAAC+6O,oBAAoB,CAAC,CAC9Bz3V,cACAC,aACAC,CAAAA,cAAAA,CACAC,qBACD,CAAA,CAAA,CACD+jI,SAAW,CAAA,IAAI,CAACuzN,oBAAoB,CAAC,CACnCz6P,iBAAAA,CACAC,cACAC,CAAAA,YAAAA,CACAC,UACAC,CAAAA,mBAAAA,CACAC,oBACAC,CAAAA,mBAAAA,CACAC,uBACAC,YACAC,CAAAA,SAAAA,CACAC,SACD,CAAA,CAAA,CACDl9B,SAAW,CAAA,IAAI,CAACi3R,oBAAoB,CAAC,CACnC/2V,UACAC,CAAAA,SAAAA,CACAC,UACAC,CAAAA,cAAAA,CACAC,YACAC,CAAAA,aAAAA,CACAC,kBACAC,WACD,CAAA,CACH,EACF,CA8FF,CAEA,MAAMy2V,0BAIJjlQ,CAAAA,KAAAA,CAAMwlJ,KAAK,CAAE,CACX,MAAM0/G,QAAAA,CAAW,IAAI,CAACC,OAAO,CAAC3/G,OAC9B,MAAMu/G,SAAAA,CAAY,IAAI,CAAClvI,SAAS,CAACqvI,QACjC,CAAA,CAAA,MAAM3rP,SAAW,IAAI+1F,gBAAAA,CACrB,IAAI,CAACrsN,UAAU,CAACs2H,QAAUwrP,CAAAA,SAAAA,CAAAA,CAC1B,OAAOxrP,QACT,CACAt2H,UAAWs2H,CAAAA,QAAQ,CAAE7oH,IAAI,CAAE,CACzB,GAAI,CAACA,IAAAA,CAAKq0W,SAAS,CAAE,CACnBr0W,IAAAA,CAAO,IAAI,CAACmlO,SAAS,CAACnlO,IAAAA,EACxB,CACA,GAAIA,IAAKugJ,CAAAA,MAAM,CAAE,CACf,GAAIvgJ,IAAAA,CAAKugJ,MAAM,EAAI14J,MAAOoW,CAAAA,IAAI,CAAC+B,IAAAA,CAAKugJ,MAAM,CAAEt6J,CAAAA,MAAM,CAAG,CAAA,CAAG,CACtD,MAAMyuX,MAAS7rP,CAAAA,QAAAA,CAASw3B,YAAY,CAAC54B,IAAI,CACzC5/H,MAAAA,CAAOqlD,OAAO,CAACltC,IAAKugJ,CAAAA,MAAM,EAAE5tJ,OAAO,CAAC,CAAC,CAAC9E,GAAKF,CAAAA,KAAAA,CAAM,GAAG+mX,MAAAA,CAAOnmX,GAAG,CAACV,GAAAA,CAAKF,KACtE,CAAA,EAAA,CACF,CACA,IAAI,MAAME,GAAAA,IAAOmS,KAAK,CACpB,MAAMvC,IAAO69M,CAAAA,8BAA8B,CAACztN,GAAAA,CAAI,CAChD,MAAMF,MAAQqS,IAAI,CAACnS,GAAI,CAAA,CACvB,GAAI4P,IAAAA,GAAS,MAAQ,CAAA,CACnBorH,QAAQ,CAACh7H,GAAAA,CAAI,CAAG,IAAIga,IAAKla,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAE,CAAA,EAC7C,CAAO,KAAA,GAAI8P,IAAS,GAAA,KAAA,CAAO,CACzBorH,QAAQ,CAACh7H,GAAI,CAAA,CAAG,IAAIwN,KAAAA,CAAM1N,KAAK,CAAC,EAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,CAAEA,KAAK,CAAC,CAAA,CAAE,EACxD,CAAO,KAAA,GAAI8P,IAAS,GAAA,SAAA,CAAW,CAC7B,GAAI9P,KAAiBgkC,YAAAA,OAAAA,CAAS,CAC5Bk3F,QAAQ,CAACh7H,GAAI,CAAA,CAAGF,MAClB,CAAA,KAAO,GAAI,EAAEk7H,QAAQ,CAACh7H,GAAI,CAAA,WAAY8jC,OAAW,EAAA,OAAOhkC,KAAU,GAAA,QAAA,EAAYA,MAAQ,CAAA,CAAA,CAAI,CACxFk7H,QAAQ,CAACh7H,GAAAA,CAAI,CAAG,KAClB,CACF,CAAO,KAAA,GAAI4P,IAAS,GAAA,SAAA,CAAW,CAC7B,GAAI9P,KAAiBgkC,YAAAA,OAAAA,CAAS,CAC5Bk3F,QAAQ,CAACh7H,GAAAA,CAAI,CAAGF,MAClB,CAAO,KAAA,GAAI,EAAEk7H,QAAQ,CAACh7H,GAAAA,CAAI,WAAY8jC,OAAAA,EAAW,OAAOhkC,KAAAA,GAAU,UAAYA,KAAQ,CAAA,CAAA,CAAI,CAAA,CACxFk7H,QAAQ,CAACh7H,GAAI,CAAA,CAAG,KAClB,CACA,GAAIA,GAAQ,GAAA,SAAA,EAAa,CAACF,KAAAA,CAAO,CAC/Bk7H,QAAAA,CAAS+3E,mBAAmB,CAAG,KACjC,CACF,CAAA,KAAO,GAAInjM,IAAAA,GAAS,aAAe,CAAA,CACjC,MAAM0T,MAAS,CAAA,IAAIlP,IAAKtU,CAAAA,KAAAA,CAAMwjB,MAAM,CAAC,CAAE,CAAA,CAAExjB,MAAMwjB,MAAM,CAAC,CAAE,CAAA,CAAExjB,KAAMwjB,CAAAA,MAAM,CAAC,CAAA,CAAE,EACzE,MAAMK,WAAAA,CAAc,IAAIvP,IAAAA,CAAKtU,KAAM6jB,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAE7jB,KAAAA,CAAM6jB,WAAW,CAAC,CAAE,CAAA,CAAE7jB,KAAM6jB,CAAAA,WAAW,CAAC,CAAE,CAAA,CAC7Fq3G,CAAAA,QAAQ,CAACh7H,GAAAA,CAAI,CAAG,IAAIojB,YAAYE,MAAQK,CAAAA,WAAAA,EAC1C,CAAO,KAAA,CACLq3G,QAAQ,CAACh7H,GAAI,CAAA,CAAGmS,IAAI,CAACnS,GAAAA,EAAI,CAE7B,CACAg7H,QAAAA,CAASzvF,MAAM,GACjB,CACAq7U,OAAQz0W,CAAAA,IAAI,CAAE,CACZ,GAAIA,IAAAA,CAAK4jC,MAAM,CAAE,OAAO5jC,IAAK4jC,CAAAA,MAAM,CACnC,GAAI5jC,IAAK20W,CAAAA,cAAc,CAAE,CACvB30W,KAAKu7M,aAAa,CAAGv7M,IAAK20W,CAAAA,cAAc,CACxC,OAAO30W,IAAK20W,CAAAA,eAAc,CAE5B,IAAI3uX,CACJ,CAAA,MAAM4uX,kBAAqB,CAAA,CACzB,CACE,eAAA,CACA,WACD,CAAA,CACD,CACE,SAAA,CACA,SACD,CAAA,CACD,CACE,kBAAA,CACA,gBACD,CACD,CACE,uBACA,CAAA,oBAAA,CACD,CACD,CACE,wBACA,CAAA,qBAAA,CACD,CACD,CACE,wBAAA,CACA,qBACD,CAAA,CACD,CACE,yBAAA,CACA,sBACD,CAAA,CACD,CACE,uBACA,CAAA,oBAAA,CACD,CACD,CACE,qBACA,CAAA,kBAAA,CACD,CACD,CACE,sBACA,kBACD,CAAA,CACD,CACE,iBAAA,CACA,cACD,CAAA,CACD,CACE,kBAAA,CACA,gBACD,CACD,CACE,qBACA,CAAA,gBAAA,CACD,CACF,CACD,IAAI5uX,CAAAA,CAAI,EAAGA,CAAI4uX,CAAAA,kBAAAA,CAAmB3uX,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,MAAM61O,IAAAA,CAAO+4I,kBAAkB,CAAC5uX,CAAAA,CAAE,CAAC,CAAA,CAAE,CACrC,MAAMilP,IAAO2pI,CAAAA,kBAAkB,CAAC5uX,CAAAA,CAAE,CAAC,CAAA,CAAE,CACrC,GAAIga,IAAI,CAAC67N,KAAK,GAAK/tO,SAAAA,CAAW,CAC5B,GAAIkS,IAAI,CAACirO,IAAK,CAAA,GAAKn9O,UAAW,CAC5BkS,IAAI,CAACirO,IAAAA,CAAK,CAAGjrO,IAAI,CAAC67N,IAAAA,EAAK,CAEzB,OAAO77N,IAAI,CAAC67N,IAAK,EACnB,CACF,CACA,MAAMg5I,qBAAwB,CAAA,CAC5B,eACA,CAAA,kBAAA,CACD,CACD,IAAI7uX,CAAI,CAAA,CAAA,CAAGA,EAAI6uX,qBAAsB5uX,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC/C,MAAMsD,IAAOurX,CAAAA,qBAAqB,CAAC7uX,CAAE,CAAA,CACrC,GAAIga,IAAAA,CAAK3N,cAAc,CAAC/I,IAAO,CAAA,CAAA,CAC7B,OAAO0W,IAAI,CAAC1W,IAAK,EACnB,CACF,CACA,OAAO0W,IACT,CACAmlO,SAAAA,CAAUnlO,IAAI,CAAE,CACd,GAAI,CAACA,IAAAA,CAAKq0W,SAAS,CAAE,CACnB,GAAI,CAAC,IAAI,CAACS,UAAU,CAAE,CACpB,IAAI,CAACA,UAAU,CAAG,IAAInB,0BACxB,CACA,IAAI,CAACmB,UAAU,CAAChB,QAAQ,CAAC9zW,IAC3B,EAAA,CACA,OAAOA,IACT,CA/IAjS,WAAa,EAAA,CACX,IAAI,CAAC+mX,UAAU,CAAG,KACpB,CA8IF,CAEA,MAAMC,eAAAA,CAAkB,CACtBh/J,KAAAA,CAAO,OACPoE,CAAAA,WAAAA,CAAa,OACbtC,CAAAA,UAAAA,CAAY,OACZ2B,gBAAkB,CAAA,MAAA,CAClBb,WAAa,CAAA,MAAA,CACbS,oBAAsB,CAAA,OAAA,CACtBkG,YAAc,CAAA,OAAA,CACd62I,SAAU,MACVn8I,CAAAA,QAAAA,CAAU,OACV6+I,CAAAA,aAAAA,CAAe,MACfpC,CAAAA,YAAAA,CAAc,OACdI,CAAAA,iBAAAA,CAAmB,MACnB1gJ,CAAAA,kBAAAA,CAAoB,QACpB0E,CAAAA,aAAAA,CAAe,OACfpB,CAAAA,WAAAA,CAAa,MACbh1B,CAAAA,SAAAA,CAAW,SACX41B,eAAiB,CAAA,QAAA,CACjBzG,SAAW,CAAA,MAAA,CACX3hD,UAAY,CAAA,MAAA,CACZ2mD,SAAW,CAAA,MAAA,CACXhD,SAAU,OACVsjJ,CAAAA,YAAAA,CAAc,OACdS,CAAAA,cAAAA,CAAgB,OAChBM,CAAAA,uBAAAA,CAAyB,OACzBr6J,CAAAA,QAAAA,CAAU,QACV06J,aAAe,CAAA,OACjB,CACA,CAAA,MAAM0a,eAAwB1xI,SAAAA,eAAAA,CAO5BpH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAAA,GAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACAo/G,IAAAA,CAAKloH,GAAG,CAAC8I,GAAAA,CAAIqrO,IAAI,CAAE,CACjBhwH,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAC7B,CAAG,CAACx6G,GAAAA,CAAKu9G,QACP,GAAA,CAAA,GAAI,CAACv9G,GAAAA,CAAK,CACR,GAAIvE,SAAU,CACZ8hH,QAAAA,CAASosG,OAAO,CAAG,IACnBluN,CAAAA,QAAAA,CAAS,IAAM8hH,CAAAA,QAAAA,EACjB,CACF,CAAO,KAAA,CACL,GAAI9hH,QAAAA,CAAU,CACZA,QAAAA,CAAS,CAAC,wBAAwB,EAAEuD,GAAI62D,CAAAA,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EAC7D,CACF,CACF,CACF,EAAA,CACAw7G,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE,CACd,MAAM6oH,QAAW,CAAA,IAAI,CAACq9G,OAAO,CAAC52H,KAAK,CAACtvG,IACpC,CAAA,CAAA,GAAIA,IAAKw7M,CAAAA,OAAO,CAAE,CAChB3yF,QAAS8yG,CAAAA,KAAK,CAAG37N,IACjB,CAAA,OAAOA,IAAKw7M,CAAAA,QAAO,CAErB,OAAO3yF,QACT,CACA+yG,KAAMjc,CAAAA,KAAK,CAAEoe,MAAM,CAAE,CACnB,GAAIpe,KAAAA,CAAMpyK,QAAQ,CAACouL,KAAK,CAAE,CACxBhc,KAAMgc,CAAAA,KAAK,CAAGhc,KAAAA,CAAMpyK,QAAQ,CAACouL,KAAK,CAClC,OAAOhc,KAAMpyK,CAAAA,QAAQ,CAACouL,MAAK,CAE7Bhc,KAAAA,CAAM3/M,IAAI,CAAC1W,IAAI,CAAGq2N,KAAMr2N,CAAAA,IAAI,CAC5Bq2N,KAAAA,CAAMpyK,QAAQ,CAACjkD,IAAI,CAAGq2N,KAAMr2N,CAAAA,IAAI,CAChC,IAAI,CAAC2rX,oBAAoB,CAACt1J,KAAOoe,CAAAA,MAAAA,CAAAA,CACjCpe,KAAM1yN,CAAAA,GAAG,CAAC,QAAU,CAAA,IAAI,CAACs5O,cAAc,CAAE,IAAI,CAC7C5mB,CAAAA,KAAAA,CAAMtyN,EAAE,CAAC,QAAA,CAAU,IAAI,CAACk5O,cAAc,CAAE,IAAI,EAC9C,CACAA,cAAAA,CAAe5mB,KAAK,CAAE,CACpB,OAAOA,KAAM3/M,CAAAA,IAAI,CAAC4vF,UAClB,CAAO+vH,OAAAA,KAAAA,CAAM3/M,IAAI,CAACugJ,MAClB,QAAOo/D,KAAM3/M,CAAAA,IAAI,CAAC1W,KAAI,CAExB4rX,cAAenrG,CAAAA,aAAa,CAAE/pC,aAAa,CAAEloM,OAAO,CAAE,CACpDkoM,aAAAA,CAAczyL,QAAQ,CAACw8N,cAAc,CAAGjyO,QAC1C,CACAq9U,sBAAAA,CAAuBprG,aAAa,CAAE,CACpC,MAAMqrG,YAAcL,eAAe,CAAChrG,aAAc,CAAA,CAClD,OAAO/xO,iBAAAA,CAAkB,IAAI,CAACwT,OAAO,CAAE4pU,WAAAA,CACzC,CACAC,yBAAAA,CAA0BtrG,aAAa,CAAE/pC,aAAa,CAAE,CACtDA,aAAczyL,CAAAA,QAAQ,CAACw8N,aAAAA,CAAc,CAAG,IAAI,CAACorG,sBAAsB,CAACprG,aAAAA,EACtE,CACAuhB,cAAAA,CAAevhB,aAAa,CAAE/pC,aAAa,CAAEkgC,YAAY,CAAE,CACzD,IAAI,CAACg1G,cAAc,CAACnrG,aAAe/pC,CAAAA,aAAAA,CAAekgC,aAAa3yN,QAAQ,CAAA,CACvEyyL,aAAczyL,CAAAA,QAAQ,CAACnU,MAAM,GAC/B,CACAk8U,cAAcvrG,aAAa,CAAE/pC,aAAa,CAAEkgC,YAAY,CAAE,CACxD,IAAI,CAACliC,OAAO,CAAC9B,IAAI,CAACgkC,YACpB,EAAA,CACAq1G,wBAAyBxrG,CAAAA,aAAa,CAAE/pC,aAAa,CAAEkgC,YAAY,CAAE,CACnE,MAAMr3I,QAAWm3G,CAAAA,aAAAA,CAAczyL,QAAQ,CACvC,GAAIs7E,QAAU,CAAA,CACZ,GAAIm3G,aAAAA,CAAczyL,QAAQ,CAACw8N,cAAc,GAAK7J,YAAAA,CAAa3yN,QAAQ,CAAE,CACnE,IAAI,CAAC8nU,yBAAyB,CAACtrG,aAAAA,CAAe/pC,aAC9Cn3G,CAAAA,CAAAA,QAAAA,CAASzvF,MAAM,GACjB,CACF,CACF,CACAo8U,cAAezrG,CAAAA,aAAa,CAAE/pC,aAAa,CAAEpuM,QAAQ,CAAE,CACrDouM,cAAczyL,QAAQ,CAACw8N,aAAc,CAAA,CAAGn4O,QAAQ,CAAC,CAAE,CAAA,CACnD,GAAIm4O,aAAkB,GAAA,SAAA,CAAW,CAC/B,MAAM0rG,WAAc7jV,CAAAA,QAAAA,CAAS/qC,KAAK,CAAC,GACnC,GAAI4uX,WAAAA,CAAY13N,KAAK,CAAC,CAACjnJ,EAAIA,CAAI,CAAA,CAAA,CAC7BkpO,cAAczyL,QAAQ,CAACqzJ,mBAAmB,CAAG60K,YAC/C,CAAA,KAAO,GAAIA,WAAW,CAAC,CAAE,CAAA,CAAE,CACzBz1I,aAAAA,CAAczyL,QAAQ,CAACqyJ,QAAQ,CAAG61K,WAAW,CAAC,CAAA,EAAE,CAEpD,CACF,CACAC,cAAe3rG,CAAAA,aAAa,CAAE/pC,aAAa,CAAEynI,YAAY,CAAE,CACzD,IAAI,CAAC+N,cAAc,CAACzrG,aAAAA,CAAe/pC,aAAeynI,CAAAA,YAAAA,CAAaxjT,SAAS,CAAA,CACxE,IAAI,CAACiiL,OAAO,CAAC3zO,UAAU,CAACytO,aAAAA,CAAczyL,QAAQ,CAAEyyL,aAAchgO,CAAAA,IAAI,EACpE,CACA21W,aAAAA,CAAc5rG,aAAa,CAAE/pC,aAAa,CAAEynI,YAAY,CAAE,CACxD,IAAI,CAACzpI,OAAO,CAAC9B,IAAI,CAACurI,YACpB,EAAA,CACAmO,yBAAyB7rG,aAAa,CAAE/pC,aAAa,CAAEynI,YAAY,CAAE,CACnE,MAAM5+O,SAAWm3G,aAAczyL,CAAAA,QAAQ,CACvC,GAAIyyL,aAAchgO,CAAAA,IAAI,CAAC61W,qBAAqB,GAAKpO,YAAaxjT,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAE,CAC1E,IAAI,CAACuxT,cAAc,CAACzrG,aAAe/pC,CAAAA,aAAAA,CAAe,CAChD,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACA,IACD,CAAA,CAAA,CACDn3G,QAASzvF,CAAAA,MAAM,GACjB,CACF,CACA67U,oBAAqBj1I,CAAAA,aAAa,CAAEjC,MAAM,CAAE,CAC1C,MAAM/9N,IAAAA,CAAO,IAAI,CAACkmO,OAAO,CAACuuI,OAAO,CAACz0I,aAAAA,CAAchgO,IAAI,CAAA,CACpD,MAAM6oH,QAAWm3G,CAAAA,aAAAA,CAAczyL,QAAQ,CACvC,MAAM0mU,WAAAA,CAAcj0W,IAAKu7M,CAAAA,aAAa,GAAK,MAC3C,CAAA,MAAMu6J,QAAW54J,CAAAA,iCAAAA,CACjB,IAAIl3N,CAAAA,CAAGsD,IAAMysX,CAAAA,cAAAA,CACb,IAAI/vX,CAAI,CAAA,CAAA,CAAGA,CAAI8vX,CAAAA,QAAAA,CAAS7vX,MAAM,CAAED,CAAI,EAAA,CAAA,CAClCsD,KAAOwsX,QAAQ,CAAC9vX,CAAE,CAAA,CAClB+vX,cAAiBltP,CAAAA,QAAAA,CAAS+2F,gBAAgB,CAACt2N,IAAK,CAAA,CAChD,MAAM0sX,WAAAA,CAAch2W,IAAI,CAAC1W,IAAK,CAAA,CAC9B,MAAM2jR,eAAkBpkJ,CAAAA,QAAQ,CAACv/H,IAAAA,CAAK,CACtC,MAAM2sX,oBAAuBhpG,CAAAA,eAAAA,GAAoB,IAAI,CAACkoG,sBAAsB,CAAC7rX,IAAAA,CAAAA,CAC7E,MAAM4sX,aAAAA,CAAgBl2W,IAAKq0W,CAAAA,SAAS,CACpC,GAAI2B,WAAAA,GAAgB,CAAC/oG,eAAmB,EAAA,CAACipG,aAAiBD,EAAAA,oBAAmB,EAAI,CAC/E,GAAI,CAACF,cAAAA,CAAgB,CACnBA,cAAAA,CAAiB,IAAI1uD,cAAAA,CAAe/9T,KAAM02O,aAAejC,CAAAA,MAAAA,CAAQ,CAC/D7B,IAAAA,CAAM,IAAI,CAACovD,cAAc,CACzBh1R,IAAK,IAAI,CAACg/W,aAAa,CACvBjlX,MAAQ,CAAA,IAAI,CAACklX,wBAAwB,CACrCz4I,MAAQ,CAAA,IAAI,CAACy4I,wBAAwB,CACvC,CAAG,IAAI,CACP1sP,CAAAA,QAAAA,CAAS+2F,gBAAgB,CAACt2N,IAAK,CAAA,CAAGysX,eACpC,CACA,GAAI9B,WAAa,CAAA,CACf8B,cAAellX,CAAAA,GAAG,CAAGmvO,aAAAA,CAAczD,cAAc,CAACy5I,aACpD,CAAO,KAAA,CACLD,cAAe/lV,CAAAA,EAAE,CAAGgmV,YACtB,CACA,GAAID,eAAep2J,KAAK,CAAE,CACxB,GAAIo2J,cAAep2J,CAAAA,KAAK,CAACpyK,QAAQ,CAAE,CACjC,IAAI,CAAC2nU,cAAc,CAAC5rX,IAAAA,CAAM02O,aAAe+1I,CAAAA,cAAAA,CAAep2J,KAAK,CAACpyK,QAAQ,EACxE,CAAA,KAAO,CACL,IAAI,CAAC8nU,yBAAyB,CAAC/rX,IAAM02O,CAAAA,aAAAA,EACvC,CACAjC,MAAAA,CAAO7B,IAAI,CAAC65I,cAAep2J,CAAAA,KAAK,EAClC,CACF,CAAA,KAAO,CACL,GAAIo2J,cAAgB,CAAA,CAClB,GAAI9B,WAAAA,CAAa,CACf8B,cAAellX,CAAAA,GAAG,CAAG,KACvB,CAAO,KAAA,CACLklX,cAAe/lV,CAAAA,EAAE,CAAG,KACtB,CACF,CACF,CACF,CACA,MAAMmmV,QAAWh5J,CAAAA,iCAAAA,CACjB,IAAIn3N,CAAI,CAAA,CAAA,CAAGA,CAAImwX,CAAAA,QAAAA,CAASlwX,MAAM,CAAED,CAAI,EAAA,CAAA,CAClCsD,KAAO6sX,QAAQ,CAACnwX,CAAE,CAAA,CAClB+vX,cAAiBltP,CAAAA,QAAAA,CAAS+2F,gBAAgB,CAACt2N,KAAK,CAChD,GAAI0W,IAAI,CAAC1W,IAAK,CAAA,EAAI,CAAC02O,aAAAA,CAAchgO,IAAI,CAAC61W,qBAAqB,CAAE,CAC3D,GAAI,CAACE,cAAgB,CAAA,CACnBA,eAAiB,IAAI1uD,cAAAA,CAAe/9T,IAAM02O,CAAAA,aAAAA,CAAejC,MAAQ,CAAA,CAC/D7B,IAAM,CAAA,IAAI,CAACw5I,cAAc,CACzBp/W,GAAK,CAAA,IAAI,CAACq/W,aAAa,CACvBtlX,MAAAA,CAAQ,IAAI,CAACulX,wBAAwB,CACrC94I,MAAQ,CAAA,IAAI,CAAC84I,wBAAwB,CACpC,CAAA,IAAI,CACP/sP,CAAAA,QAAS+2F,CAAAA,gBAAgB,CAACt2N,IAAAA,CAAK,CAAGysX,eACpC,CACA,GAAI9B,WAAAA,CAAa,CACf8B,cAAAA,CAAellX,GAAG,CAAGmP,IAAI,CAAC1W,IAAAA,EAAK,CACjC,KAAO,CACLysX,cAAAA,CAAe/lV,EAAE,CAAGhwB,IAAI,CAAC1W,IAAAA,EAAK,CAEhC,GAAIysX,cAAAA,CAAep2J,KAAK,CAAE,CACxB,GAAIo2J,cAAAA,CAAep2J,KAAK,CAACj0G,MAAM,CAAE,CAC/B,IAAI,CAAC8pQ,cAAc,CAAClsX,IAAM02O,CAAAA,aAAAA,CAAe+1I,cAAep2J,CAAAA,KAAK,CAAC17J,SAAS,EACzE,CACA85K,MAAAA,CAAO7B,IAAI,CAAC65I,cAAep2J,CAAAA,KAAK,EAClC,CACF,CACF,CACA,IAAI,CAACumB,OAAO,CAAC3zO,UAAU,CAACs2H,SAAU7oH,IACpC,EAAA,CA1LAjS,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,IAAK,UACX,CAAA,CAAA,IAAI,CAACgI,OAAO,CAAGhI,GAAI+H,CAAAA,MAAM,CACzB,IAAI,CAACvyL,OAAO,CAAGwqL,GAAAA,CAAIpmM,cACnB,CAAA,IAAI,CAACs2M,OAAO,CAAG,IAAIquI,2BACrB,CAsLF,CAEA,MAAM6B,cAMJ9mQ,CAAAA,KAAAA,CAAMtvG,IAAI,CAAE1S,QAAQ,CAAEqyN,KAAK,CAAE,CAC3B6jJ,SAAUl0P,CAAAA,KAAK,CAAC,cAAA,CAAgB,EAAItvG,CAAAA,IAAAA,CAAM,IAAI,CAACwrC,OAAO,CAAE,IAAI,CAACwyL,OAAO,CAAEre,KAAAA,EAAOloN,OAAW,EAAA,EAAI,CAAA,CAAC5F,GAAK9L,CAAAA,MAAAA,GAAAA,CAChG,GAAI8L,GAAAA,CAAK,CACPvE,QAAAA,CAASuE,KACX,CAAO,KAAA,CACL,MAAMy5H,KAAAA,CAAQ05O,oBAAqBC,CAAAA,WAAW,CAACl/W,MAAAA,CAAQ,IAAI,CAAC+kV,gBAAgB,CAC5E/kV,CAAAA,MAAAA,CAAOopC,OAAO,EAAA,CACd7hC,QAAS,CAAA,IAAA,CAAMg+H,OACjB,CACF,CAAA,EACF,CAfAv9H,WAAAA,CAAYsoX,YAAY,CAAC,CACvB,IAAI,CAAC7qU,OAAO,CAAG6qU,YAAapmV,CAAAA,MAAM,CAClC,IAAI,CAAC66S,gBAAgB,CAAGurC,YAAAA,CAAaz0N,eACrC,CAAA,IAAI,CAACo8E,OAAO,CAAGq4I,YAAat4I,CAAAA,OAAM,CAatC,CAEA,MAAMu4I,mBAAsB,CAAA,CAC1B,SAAU/yV,gBACV,CAAA,OAAA,CAASC,eACT,CAAA,UAAA,CAAYC,kBACZ,CAAA,WAAA,CAAaC,mBACb,CAAA,WAAA,CAAaC,mBACb,CAAA,eAAA,CAAiBC,kBACjB,CAAA,aAAA,CAAeC,gBACjB,CAAA,CACA,MAAM0yV,wBAAAA,CAA2B,CAC/B,MAAQpuV,CAAAA,SAAAA,CACR,OAASC,CAAAA,UAAAA,CACT,OAASC,CAAAA,UAAAA,CACT,QAAUC,CAAAA,WAAAA,CACV,QAASC,UACT,CAAA,QAAA,CAAUC,WACV,CAAA,SAAA,CAAWC,YACb,CACA,CAAM+tV,MAAAA,eAAAA,CAKJlnQ,MAAMtvG,IAAI,CAAE1S,QAAQ,CAAE,CACpB,MAAMmpX,SAAYz2W,CAAAA,IAAAA,CAAKsrH,KAAK,CAC5B,GAAI,CAACmrP,SAAAA,CAAW,CACdnpX,QAAAA,CAAS,IAAM,CAAA,IAAA,CAAA,CACf,MACF,CACA,GAAImpX,SAAUhyX,CAAAA,OAAO,EAAI,CAAA,CAAG,CAC1B6I,QAAAA,CAAS,oEACT,MACF,CACA,MAAM4gI,KAAAA,CAAQ,IAAI,CAACwoP,WAAW,CAAC12W,MAC/B,MAAMw+V,KAAAA,CAAQ,IAAI,CAACmY,WAAW,CAAC32W,IAAMkuH,CAAAA,KAAAA,CAAAA,CACrC,MAAM5pF,aAAAA,CAAgB,IAAI,CAACsyU,mBAAmB,CAAC52W,IAC/C,CAAA,CAAA,MAAMuwF,QAAU,IAAI,CAACsmR,kBAAkB,CAAC72W,IAAMskC,CAAAA,aAAAA,CAAAA,CAC9C,MAAMwyU,MAAAA,CAAS,IAAI,CAACC,YAAY,CAAC/2W,IAAAA,CAAMkuH,KAAO5pF,CAAAA,aAAAA,CAAAA,CAC9C,MAAMmgK,MAAAA,CAAS,IAAI,CAACuyK,YAAY,CAACh3W,IAAAA,CAAMw+V,KAAMA,CAAAA,KAAK,CAAEsY,MAAAA,CAAOA,MAAM,CAAExyU,aAAAA,CAAeisD,OAAQ7vF,CAAAA,MAAM,CAAE6vF,OAAAA,CAAQvwF,IAAI,CAAA,CAC9G,MAAMurH,aAAgB,CAAA,IAAI,CAAC0rP,mBAAmB,CAACj3W,IAAAA,CAAMkuH,KAAOu2E,CAAAA,MAAAA,CAAQ+5J,MAAMA,KAAK,CAAEA,KAAMr4L,CAAAA,SAAS,CAAE2wM,MAAAA,CAAOA,MAAM,CAAEA,OAAO3wM,SAAS,CAAA,CACjI,MAAM76C,KAAAA,CAAQ,IAAI8nD,KAClB9nD,CAAAA,KAAAA,CAAMgoD,KAAK,CAAGplD,KAAK,CAAC,CAAE,CACtB5C,CAAAA,KAAAA,CAAMC,aAAa,CAAGA,aACtBD,CAAAA,KAAAA,CAAMgpD,aAAa,CAAGkqL,KAAMr4L,CAAAA,SAAS,CACrC76C,KAAAA,CAAMkpD,cAAc,CAAGsiM,MAAO3wM,CAAAA,SAAS,CACvC76C,KAAAA,CAAM+nD,QAAQ,EAAGpjC,CAAAA,aAAa,EAC9B3iJ,CAAAA,QAAAA,CAAS,IAAMg+H,CAAAA,KAAAA,EACjB,CACAorP,WAAAA,CAAY12W,IAAI,CAAE,CAChB,MAAMy2W,SAAAA,CAAYz2W,IAAKsrH,CAAAA,KAAK,CAC5B,MAAM4C,MAAQ,EAAE,CAChB,IAAIloI,CAAAA,CACJ,IAAIA,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIywX,UAAUvoP,KAAK,CAACjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACzC,MAAM89V,QAAAA,CAAW2yB,UAAUvoP,KAAK,CAACloI,CAAE,CAAA,CACnC,MAAMowI,IAAAA,CAAO,IAAImV,SAAAA,CAAUu4M,QAASx6V,CAAAA,IAAI,CACxC8sI,CAAAA,IAAAA,CAAKuY,gBAAgB,CAACm1M,QAASx5U,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAEw5U,QAASx5U,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAEw5U,QAAAA,CAASx5U,QAAQ,CAAC,CAAA,CAAE,CACtF8rH,CAAAA,IAAAA,CAAKqY,mBAAmB,CAACq1M,QAASn3M,CAAAA,QAAQ,CAAC,CAAE,CAAA,CAAEm3M,QAASn3M,CAAAA,QAAQ,CAAC,CAAA,CAAE,CAAEm3M,QAAAA,CAASn3M,QAAQ,CAAC,CAAA,CAAE,CACzFvW,CAAAA,IAAAA,CAAKyY,aAAa,CAACi1M,QAASx7U,CAAAA,KAAK,CAAC,CAAE,CAAA,CAAEw7U,QAASx7U,CAAAA,KAAK,CAAC,CAAA,CAAE,CAAEw7U,QAAAA,CAASx7U,KAAK,CAAC,CAAA,CAAE,CAC1E8tH,CAAAA,IAAK4W,CAAAA,iBAAiB,CAAG,CAAC,CAAC82M,QAAS92M,CAAAA,iBAAiB,CACrD9e,KAAAA,CAAMpnI,IAAI,CAACsvI,IACb,EAAA,CACA,IAAIpwI,CAAI,CAAA,CAAA,CAAGA,CAAIywX,CAAAA,SAAAA,CAAUS,OAAO,CAACjxX,MAAM,CAAED,IAAI,CAC3CkoI,KAAK,CAACuoP,SAAAA,CAAUS,OAAO,CAAClxX,CAAE,CAAA,CAAC,CAACwoJ,QAAQ,CAACtgB,KAAK,CAACloI,CAAE,CAAA,EAC/C,CACA,OAAOkoI,KACT,CACAyoP,WAAAA,CAAY32W,IAAI,CAAEkuH,KAAK,CAAE,CACvB,MAAMuoP,UAAYz2W,IAAKsrH,CAAAA,KAAK,CAC5B,MAAMkzO,KAAQ,CAAA,EAAE,CAChB,MAAMlqL,cAAgB,EAAE,CACxB,IAAItuL,CAAAA,CAAGumF,CACP,CAAA,IAAIvmF,CAAI,CAAA,CAAA,CAAGA,EAAIywX,SAAUjY,CAAAA,KAAK,CAACv4W,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,MAAMmxX,SAAWV,SAAUjY,CAAAA,KAAK,CAACx4W,CAAAA,CAAE,CACnC,MAAM4tW,mBAAsB,CAAA,EAAE,CAC9B,IAAIrnR,CAAI,CAAA,CAAA,CAAGA,CAAI4qS,CAAAA,QAAAA,CAASvjB,mBAAmB,CAAC3tW,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACtD,MAAM6qS,GAAMD,CAAAA,QAAAA,CAASvjB,mBAAmB,CAACrnR,EAAE,CAC3CqnR,mBAAmB,CAACrnR,CAAE,CAAA,CAAG,IAAIhkE,IAAAA,EAAAA,CAAOha,GAAG,CAAC6oX,GAAAA,EAC1C,CACA,MAAMvqP,IAAO,CAAA,IAAI02E,IAAK,CAAA,IAAI,CAAC/3J,OAAO,CAAEooT,mBAAqBujB,CAAAA,QAAAA,CAASpqP,SAAS,CAAA,CAC3EyxO,KAAM13W,CAAAA,IAAI,CAAC+lI,IACX,CAAA,CAAA,MAAMoJ,YAAe,CAAA,IAAI5J,YAAaQ,CAAAA,IAAAA,CAAAA,CACtC,MAAMC,KAAAA,CAAQ,EAAE,CAChB,IAAIvgD,CAAI,CAAA,CAAA,CAAGA,CAAIsgD,CAAAA,IAAAA,CAAKE,SAAS,CAAC9mI,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CACxC,MAAMygD,QAAWH,CAAAA,IAAAA,CAAKE,SAAS,CAACxgD,CAAE,CAAA,CAClC,MAAM0gD,IAAAA,CAAOiB,KAAK,CAAC,CAAE,CAAA,CAAChB,UAAU,CAACF,QAAAA,CAAAA,CACjCF,KAAMhmI,CAAAA,IAAI,CAACmmI,IAAAA,EACb,CACAgJ,YAAAA,CAAanJ,KAAK,CAAGA,KAAAA,CACrBwnD,aAAcxtL,CAAAA,IAAI,CAACmvI,YAAAA,EACrB,CACA,OAAO,CACLuoO,KAAOA,CAAAA,KAAAA,CACPr4L,SAAWmO,CAAAA,aACb,CACF,CACA+iM,oBAAqBZ,CAAAA,SAAS,CAAExkM,UAAU,CAAE3tI,aAAa,CAAE,CACzD,IAAI,IAAIt+C,CAAAA,CAAI,EAAGA,CAAIywX,CAAAA,SAAAA,CAAUhyK,MAAM,CAACx+M,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9C,MAAMsoM,QAAWmoL,CAAAA,SAAAA,CAAUhyK,MAAM,CAACz+M,CAAE,CAAA,CACpC,GAAIsoM,QAAAA,CAAS99D,KAAK,GAAKyhD,UAAAA,CAAY,CACjC,MAAMpsI,YAAevB,CAAAA,aAAa,CAACgqJ,QAAAA,CAAS14K,QAAQ,CAAC,CACrD,OAAOiwB,YAAalH,CAAAA,WAAW,CAEnC,CACA,OAAO7wC,SACT,CACAipX,YAAAA,CAAa/2W,IAAI,CAAEkuH,KAAK,CAAE5pF,aAAa,CAAE,CACvC,MAAMmyU,SAAAA,CAAYz2W,IAAKsrH,CAAAA,KAAK,CAC5B,MAAMwrP,OAAS,EAAE,CACjB,MAAMtiM,cAAAA,CAAiB,EAAE,CACzB,IAAIxuL,CAAAA,CAAGumF,EAAGtrC,WACV,CAAA,IAAIiD,OAASozU,CAAAA,WAAAA,CAAaC,gBAC1B,CAAA,GAAId,SAAUK,CAAAA,MAAM,CAAE,CACpB,MAAMU,YAAe,CAAA,SAASx3W,IAAI,CAAEuwF,OAAO,CAAEsnP,UAAU,CACrD,CAAA,MAAM4/B,IAAO,CAAA,IAAI53W,YAAag4U,CAAAA,UAAAA,CAAa,CAC3C,CAAA,CAAA,IAAI,IAAI9rV,CAAI,CAAA,CAAA,CAAGA,CAAIwkG,CAAAA,OAAAA,CAAQtqG,MAAM,CAAE8F,CAAI,EAAA,CAAA,CACrC,MAAMqqL,QAAAA,CAAW7lF,OAAO,CAACxkG,CAAE,CAAA,CAAG,CAC9B0rX,CAAAA,IAAI,CAACrhM,QAAAA,CAAS,CAAGp2K,IAAI,CAACjU,CAAAA,CAAI,CAAE,CAC5B0rX,CAAAA,IAAI,CAACrhM,QAAW,CAAA,CAAA,CAAE,CAAGp2K,IAAI,CAACjU,CAAAA,CAAI,EAAI,CAAE,CACpC0rX,CAAAA,IAAI,CAACrhM,QAAAA,CAAW,CAAE,CAAA,CAAGp2K,IAAI,CAACjU,CAAAA,CAAI,CAAI,CAAA,CAAA,EAAE,CAEtC,OAAO0rX,IACT,EACA,IAAIzxX,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIywX,SAAUK,CAAAA,MAAM,CAAC7wX,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1Ck+C,OAAUuyU,CAAAA,SAAAA,CAAUK,MAAM,CAAC9wX,CAAE,CAAA,CAACk+C,OAAO,CACrCqzU,gBAAAA,CAAmB,EAAE,CACrBt2U,WAAc,CAAA,IAAI,CAACo2U,oBAAoB,CAACZ,SAAAA,CAAWzwX,CAAGs+C,CAAAA,aAAAA,CAAAA,CACtD,IAAIioC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIroC,QAAQj+C,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CACjC,MAAM0oG,UAAAA,CAAa/wI,OAAO,CAACqoC,EAAE,CAACz3D,IAAI,CAClC,MAAMpb,GAAMu7K,CAAAA,UAAAA,CAAWv7K,GAAG,CAC1B,MAAMC,GAAMs7K,CAAAA,UAAAA,CAAWt7K,GAAG,CAC1B,MAAMmb,IAAAA,CAAO,IAAI7D,WAAAA,CAAY,IAAIhP,IAAK,CAACtI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAA,CAAK,CAACC,GAAG,CAAC,EAAE,CAAGD,GAAG,CAAC,CAAA,CAAE,EAAI,EAAK,CAACC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAA,CAAA,CAAM,IAAIuI,IAAAA,CAAK,CAACtI,GAAG,CAAC,EAAE,CAAGD,GAAG,CAAC,CAAA,CAAE,EAAI,EAAK,CAACC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAK,CAACC,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAA,CAAA,CAAA,CACjM,MAAM62F,OAAAA,CAAUrsD,OAAO,CAACqoC,EAAE,CAACgkB,OAAO,CAClC,IAAIuhC,cAAiB5tF,CAAAA,OAAO,CAACqoC,CAAAA,CAAE,CAACulD,cAAc,CAC9C,IAAIgkD,YAAAA,CAAe5xI,OAAO,CAACqoC,CAAE,CAAA,CAACupG,YAAY,CAC1C,GAAIvlF,OAAS,CAAA,CACXuhC,cAAiB0lP,CAAAA,YAAAA,CAAa1lP,cAAgBvhC,CAAAA,OAAAA,CAAStvD,WACvD60I,CAAAA,CAAAA,YAAAA,CAAe0hM,YAAa1hM,CAAAA,YAAAA,CAAcvlF,OAAStvD,CAAAA,WAAAA,EACrD,CACAq2U,WAAAA,CAAc,IAAI5gM,WAAY,CAAA,CAC5B5kD,cAAgBA,CAAAA,cAAAA,CAChBgkD,YAAcA,CAAAA,YAAAA,CACdxsL,IAAM46C,CAAAA,OAAO,CAACqoC,CAAE,CAAA,CAACjjF,IAAI,CACrBwrB,IAAMA,CAAAA,IACR,CACAyiW,CAAAA,CAAAA,gBAAAA,CAAiBzwX,IAAI,CAACwwX,WAAAA,EACxB,CACA,MAAM9mP,KAAQ,CAAA,IAAIwkD,KAAMuiM,CAAAA,gBAAAA,CAAkB,IAAI,CAAC/rU,OAAO,CACtDsrU,CAAAA,MAAAA,CAAOhwX,IAAI,CAAC0pI,KACZ,CAAA,CAAA,MAAMyH,cAAgB,IAAI44C,aAAAA,CAAcrgD,KACxCgkD,CAAAA,CAAAA,cAAAA,CAAe1tL,IAAI,CAACmxI,aACtB,EAAA,CACF,CACA,OAAO,CACL6+O,MAAQA,CAAAA,MAAAA,CACR3wM,SAAWqO,CAAAA,cACb,CACF,CACAoiM,oBAAoB52W,IAAI,CAAE,CACxB,MAAMy2W,SAAYz2W,CAAAA,IAAAA,CAAKsrH,KAAK,CAC5B,MAAMhnF,aAAgB,CAAA,EAAE,CACxB,MAAMozU,YAAe,CAAA,CACnBptW,QAAUwZ,CAAAA,iBAAAA,CACVhY,OAAQiY,eACRgqK,CAAAA,OAAAA,CAAS/pK,gBACTwyO,CAAAA,WAAAA,CAAavyO,oBACb+rG,CAAAA,YAAAA,CAAc9rG,qBACd+lB,CAAAA,KAAAA,CAAO9lB,eACPwzV,SAAWtzV,CAAAA,kBAAAA,CACXuzV,SAAWtzV,CAAAA,kBAAAA,CACXuzV,SAAWtzV,CAAAA,kBAAAA,CACXuzV,SAAWtzV,CAAAA,kBAAAA,CACXuzV,UAAWtzV,kBACXuzV,CAAAA,SAAAA,CAAWtzV,kBACXuzV,CAAAA,SAAAA,CAAWtzV,kBACXuzV,CAAAA,SAAAA,CAAWtzV,kBACb,CAAA,CACA,IAAI,IAAI5+B,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIywX,SAAU7gW,CAAAA,QAAQ,CAAC3vB,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,MAAMojS,UAAAA,CAAaqtF,SAAU7gW,CAAAA,QAAQ,CAAC5vB,CAAAA,CAAE,CACxC,MAAMqwL,UAAAA,CAAa,EAAE,CACrB,IAAI,MAAMi7J,aAAiBloD,IAAAA,UAAAA,CAAW,CACpC,MAAMpnB,SAAAA,CAAYonB,UAAU,CAACkoD,aAAc,CAAA,CAC3Cj7J,UAAWvvL,CAAAA,IAAI,CAAC,CACd+4C,QAAU63U,CAAAA,YAAY,CAACpmC,aAAAA,CAAc,CACrCxxS,UAAAA,CAAYkiO,UAAUliO,UAAU,CAChCriC,IAAM84W,CAAAA,wBAAwB,CAACv0G,SAAAA,CAAUvkQ,IAAI,CAAC,CAC9CrX,SAAWsxX,CAAAA,YAAY,CAACpmC,aAAAA,CAAc,GAAKntT,cAC7C,CACF,EAAA,CACA,MAAM6e,YAAe,CAAA,IAAIvD,YAAa,CAAA,IAAI,CAAC+L,OAAO,CAAE6qI,UAAAA,CAAAA,CACpD,MAAM13I,WAAcyqP,CAAAA,UAAAA,CAAW9+Q,QAAQ,CAACtK,IAAI,CAAC/Z,MAAM,CAAGmjS,WAAW9+Q,QAAQ,CAACw1B,UAAU,CACpF,MAAM+F,YAAAA,CAAe,IAAI1H,YAAAA,CAAa,IAAI,CAACqN,OAAO,CAAExI,YAAAA,CAAcrE,WAClE,CAAA,CAAA,MAAM0yF,QAAW,CAAA,IAAI98B,eAAe1uD,YACpC,CAAA,CAAA,IAAI,IAAI0mC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI5tC,WAAa4tC,CAAAA,CAAAA,EAAAA,CAAI,CAClC,IAAI,MAAM+kQ,aAAAA,IAAiBloD,UAAW,CAAA,CACpC,MAAMpnB,SAAAA,CAAYonB,UAAU,CAACkoD,aAAAA,CAAc,CAC3C,OAAOtvE,SAAUliO,CAAAA,UAAU,EACzB,KAAK,EACHuxF,QAAS1vF,CAAAA,OAAO,CAAC+1U,YAAY,CAACpmC,aAAAA,CAAc,CAAC,CAAC/iV,GAAG,CAACyzQ,SAAAA,CAAUhiQ,IAAI,CAACusE,CAAE,CAAA,CAAA,CACnE,MACF,KAAK,EACH8kD,QAAS1vF,CAAAA,OAAO,CAAC+1U,YAAY,CAACpmC,aAAAA,CAAc,CAAC,CAAC/iV,GAAG,CAACyzQ,SAAAA,CAAUhiQ,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAE,CAAE,CAAA,CAAMy1L,UAAUhiQ,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CACxG,MACF,KAAK,EACH8kD,QAAS1vF,CAAAA,OAAO,CAAC+1U,YAAY,CAACpmC,aAAAA,CAAc,CAAC,CAAC/iV,GAAG,CAACyzQ,SAAUhiQ,CAAAA,IAAI,CAACusE,CAAAA,CAAI,CAAE,CAAA,CAAEy1L,UAAUhiQ,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAEy1L,SAAUhiQ,CAAAA,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAC7H,MACF,KAAK,CACH8kD,CAAAA,QAAAA,CAAS1vF,OAAO,CAAC+1U,YAAY,CAACpmC,aAAAA,CAAc,CAAC,CAAC/iV,GAAG,CAACyzQ,UAAUhiQ,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAE,CAAEy1L,SAAAA,CAAUhiQ,IAAI,CAACusE,EAAI,CAAI,CAAA,CAAA,CAAE,CAAEy1L,SAAAA,CAAUhiQ,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAI,EAAE,CAAEy1L,SAAAA,CAAUhiQ,IAAI,CAACusE,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CACxJ,KACJ,CACF,CACA8kD,QAAS/hC,CAAAA,IAAI,GACf,CACA+hC,QAAS3lI,CAAAA,GAAG,EACZ44C,CAAAA,aAAAA,CAAcx9C,IAAI,CAAC++C,YACrB,EAAA,CACA,OAAOvB,aACT,CACAuyU,kBAAmB72W,CAAAA,IAAI,CAAEskC,aAAa,CAAE,CACtC,MAAMmyU,SAAAA,CAAYz2W,KAAKsrH,KAAK,CAC5B,IAAI/kF,WAAAA,CAAc,IAClB,CAAA,IAAIy5F,SAAY,CAAA,IAAA,CAChB,IAAIh6I,CACJ,CAAA,IAAIqqG,UAAa,CAAA,CAAA,CACjB,IAAIrqG,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIywX,UAAUhyK,MAAM,CAACx+M,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,MAAMsoM,QAAAA,CAAWmoL,UAAUhyK,MAAM,CAACz+M,CAAE,CAAA,CACpC,GAAIsoM,QAAAA,CAAS/9F,OAAO,GAAKziG,UAAW,CAClCuiG,UAAAA,EAAci+F,QAAS/9F,CAAAA,OAAO,CAACtqG,OAAM,CAEzC,CACA,IAAIkyX,QAAAA,CAAW,CACf,CAAA,IAAInyX,CAAI,CAAA,CAAA,CAAGA,CAAIs+C,CAAAA,aAAAA,CAAcr+C,MAAM,CAAED,CAAI,EAAA,CAAA,CACvCmyX,QAAW5yX,CAAAA,IAAAA,CAAKoU,GAAG,CAACw+W,SAAU7zU,aAAa,CAACt+C,CAAE,CAAA,CAAC24C,WAAW,EAC5D,CACA,GAAI0xD,WAAa,CAAG,CAAA,CAClB,GAAI8nR,QAAAA,CAAW,KAAQ,CAAA,CACrB5xU,WAAc,CAAA,IAAI4pD,YAAY,IAAI,CAAC3kD,OAAO,CAAEvtB,kBAAoBoyE,CAAAA,UAAAA,CAAAA,CAChE2vC,SAAY,CAAA,IAAI78G,YAAYojB,WAAYnQ,CAAAA,IAAI,EAC9C,EAAA,CAAA,KAAO,CACLmQ,WAAAA,CAAc,IAAI4pD,WAAAA,CAAY,IAAI,CAAC3kD,OAAO,CAAExtB,kBAAAA,CAAoBqyE,UAChE2vC,CAAAA,CAAAA,SAAAA,CAAY,IAAI38G,WAAAA,CAAYkjB,YAAYnQ,IAAI,EAAA,EAC9C,CACF,CACA,OAAO,CACL11B,MAAQ6lC,CAAAA,WAAAA,CACRvmC,KAAMggI,SACR,CACF,CACAg3O,YAAAA,CAAah3W,IAAI,CAAEw+V,KAAK,CAAEsY,MAAM,CAAExyU,aAAa,CAAEiC,WAAW,CAAEy5F,SAAS,CAAE,CACvE,MAAMy2O,SAAAA,CAAYz2W,IAAKsrH,CAAAA,KAAK,CAC5B,MAAMm5E,MAAS,CAAA,EAAE,CACjB,IAAI3kE,SAAAA,CAAY,CAChB,CAAA,IAAI,IAAI95I,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIywX,UAAUhyK,MAAM,CAACx+M,MAAM,CAAED,CAAI,EAAA,CAAA,CAC9C,MAAMsoM,QAAAA,CAAWmoL,UAAUhyK,MAAM,CAACz+M,CAAE,CAAA,CACpC,MAAMoyX,QAAAA,CAAW9pL,QAASx5K,CAAAA,IAAI,CAC9B,MAAMpb,GAAAA,CAAM0+W,QAAS1+W,CAAAA,GAAG,CACxB,MAAMC,GAAMy+W,CAAAA,QAAAA,CAASz+W,GAAG,CACxB,MAAMmb,IAAO,CAAA,IAAI7D,WAAY,CAAA,IAAIhP,IAAK,CAACtI,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAA,CAAK,CAACC,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAA,CAAE,EAAI,EAAK,CAACC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAA,CAAA,CAAM,IAAIuI,IAAK,CAACtI,CAAAA,GAAG,CAAC,CAAA,CAAE,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EAAA,CAAK,CAACC,GAAG,CAAC,EAAE,CAAGD,GAAG,CAAC,CAAA,CAAE,EAAI,EAAK,CAACC,CAAAA,GAAG,CAAC,CAAE,CAAA,CAAGD,GAAG,CAAC,CAAE,CAAD,EAAK,EACjM,CAAA,CAAA,CAAA,MAAMs9D,OAAUs3H,CAAAA,QAAAA,CAAS/9F,OAAO,GAAKziG,SACrC,CAAA,MAAM4hI,KAAO,IAAIH,IAAAA,CAAK,IAAI,CAAC/jF,OAAO,CAClCkkF,CAAAA,IAAAA,CAAK7pF,YAAY,CAAGvB,aAAa,CAACgqJ,QAAAA,CAAS14K,QAAQ,CAAC,CACpD85G,KAAKnpF,WAAW,CAAC,CAAE,CAAA,CAAGywB,OAAUzwB,CAAAA,WAAAA,CAAc,IAC9CmpF,CAAAA,KAAKppF,SAAS,CAAC,CAAE,CAAA,CAAC7oC,IAAI,CAAG64W,mBAAmB,CAAChoL,SAAS7wL,IAAI,CAAC,CAC3DiyH,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAACwwB,IAAI,CAAGE,OAAUs3H,CAAAA,QAAAA,CAASx3H,IAAI,CAAGgpE,SAAYwuD,CAAAA,QAAAA,CAASx3H,IAAI,CAC5E44D,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAACN,KAAK,CAAGsoJ,QAAStoJ,CAAAA,KAAK,CACxC0pF,IAAKppF,CAAAA,SAAS,CAAC,CAAA,CAAE,CAAC0wB,OAAO,CAAGA,OAC5B04D,CAAAA,IAAAA,CAAK7C,IAAI,CAAGyhE,SAASzhE,IAAI,GAAK/+H,SAAY0wW,CAAAA,KAAK,CAAClwK,QAAAA,CAASzhE,IAAI,CAAC,CAAG,IACjE6C,CAAAA,IAAKc,CAAAA,KAAK,CAAG89D,QAAAA,CAAS99D,KAAK,GAAK1iI,UAAYgpX,MAAM,CAACxoL,QAAS99D,CAAAA,KAAK,CAAC,CAAG,IACrEd,CAAAA,KAAK56G,IAAI,CAAGA,IACZ,CAAA,GAAIkiD,OAAS,CAAA,CACXgpE,SAAUzxI,CAAAA,GAAG,CAAC+/L,QAAS/9F,CAAAA,OAAO,CAAEuvC,SAAAA,CAAAA,CAChCA,SAAawuD,EAAAA,QAAAA,CAAS/9F,OAAO,CAACtqG,OAAM,CAEtCw+M,MAAO39M,CAAAA,IAAI,CAAC4oI,IAAAA,EACd,CACA,GAAInpF,cAAgB,IAAM,CAAA,CACxBA,WAAYnP,CAAAA,MAAM,GACpB,CACA,OAAOqtK,MACT,CACAwyK,mBAAAA,CAAoBj3W,IAAI,CAAEkuH,KAAK,CAAEu2E,MAAM,CAAE+5J,KAAK,CAAElqL,aAAa,CAAEwiM,MAAM,CAAEtiM,cAAc,CAAE,CACrF,MAAMiiM,SAAYz2W,CAAAA,IAAAA,CAAKsrH,KAAK,CAC5B,MAAMC,aAAAA,CAAgB,EAAE,CACxB,IAAIvlI,CACJ,CAAA,IAAIA,CAAI,CAAA,CAAA,CAAGA,CAAIywX,CAAAA,SAAAA,CAAUlrP,aAAa,CAACtlI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,MAAMqyX,gBAAmB5B,CAAAA,SAAAA,CAAUlrP,aAAa,CAACvlI,EAAE,CACnD,MAAMowI,IAAOlI,CAAAA,KAAK,CAACmqP,gBAAAA,CAAiBjiP,IAAI,CAAC,CACzC,MAAM1G,IAAAA,CAAO+0E,MAAM,CAAC4zK,gBAAiB3oP,CAAAA,IAAI,CAAC,CAC1C,MAAM9E,YAAe,CAAA,IAAI0K,YAAa5F,CAAAA,IAAAA,CAAM,IAAI,CAACo7M,gBAAgB,CAAE10M,IACnE,CAAA,CAAA,GAAI1G,IAAK7C,CAAAA,IAAI,CAAE,CACb,MAAM85O,SAAAA,CAAYnI,MAAMvvW,OAAO,CAACygI,IAAK7C,CAAAA,IAAI,CACzCjC,CAAAA,YAAaqL,CAAAA,YAAY,CAAGq+C,aAAa,CAACqyL,SAAU,EACtD,CACA,GAAIj3O,IAAKc,CAAAA,KAAK,CAAE,CACd,MAAMyhD,UAAa6kM,CAAAA,MAAAA,CAAO7nX,OAAO,CAACygI,IAAKc,CAAAA,KAAK,CAC5C5F,CAAAA,YAAAA,CAAaqN,aAAa,CAAGu8C,cAAc,CAACvC,UAAW,EACzD,CACA1mD,aAAczkI,CAAAA,IAAI,CAAC8jI,YAAAA,EACrB,CACA,OAAOW,aACT,CAxRAx9H,YAAYsoX,YAAY,CAAC,CACvB,IAAI,CAAC7qU,OAAO,CAAG6qU,YAAAA,CAAapmV,MAAM,CAClC,IAAI,CAAC66S,gBAAgB,CAAGurC,YAAaz0N,CAAAA,gBAAe,CAuRxD,CAEA,MAAM02N,YAAAA,SAAqBh1I,eAczBpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAM,CAAA,CACJqrO,IAAMrrO,CAAAA,GAAAA,CACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,MAAM4G,OAAU,CAAA,CACdy0G,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,WAAY,IAAI,CAACA,UACnB,CACA,CAAA,GAAIx7G,GAAIqrO,CAAAA,IAAI,CAAC31O,UAAU,CAAC,OAAYsK,CAAAA,EAAAA,GAAAA,CAAIqrO,IAAI,CAAC31O,UAAU,CAAC,SAAU,CAChE,GAAIZ,IAAKyB,CAAAA,YAAY,CAACyJ,GAAAA,CAAI62D,QAAQ,CAAA,CAAEqmD,WAAW,EAAO,GAAA,MAAA,CAAQ,CAC5Dt2G,OAAAA,CAAQ81G,YAAY,CAAGhC,IAAK0C,CAAAA,YAAY,CAAC/mC,aAAY,CACvD,KAAO,CACLzvE,OAAAA,CAAQ81G,YAAY,CAAGhC,KAAK0C,YAAY,CAACjB,KAC3C,CACF,CACAiD,IAAKloH,CAAAA,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAEzkO,OAAAA,CAAS,CAAC5F,GAAAA,CAAKu9G,QAChC,GAAA,CAAA,GAAI,CAAC9hH,QAAU,CAAA,CACb,MACF,CACA,GAAI,CAACuE,GAAK,CAAA,CACR,IAAI,IAAI7L,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACuyX,QAAQ,CAACtyX,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC3C,MAAM2yB,CAAI,CAAA,IAAI,CAAC4/V,QAAQ,CAACvyX,CAAE,CAAA,CAC1B,GAAI2yB,CAAAA,CAAE6/V,OAAO,CAAC3nX,GAAI62D,CAAAA,QAAQ,CAAE0nD,QAAW,CAAA,CAAA,CACrCz2F,CAAEs5Q,CAAAA,MAAM,CAAC3iL,KAAK,CAACF,QAAAA,CAAU,CAACv9G,GAAAA,CAAK8xW,WAC7B,GAAA,CAAA,GAAI9xW,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,EACX,MAAO,CACLvE,QAAAA,CAAS,IAAMq2W,CAAAA,WAAAA,EACjB,CACF,CAAA,CAAGhkJ,KACH,CAAA,CAAA,MACF,CACF,CACAryN,QAAAA,CAAS,kBACX,EAAA,CAAA,KAAO,CACLA,QAAAA,CAAS,CAAC,qBAAqB,EAAEuD,GAAI62D,CAAAA,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EAC1D,CACF,CAAA,EACF,CACAw7G,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAOA,IACT,CACA47N,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,CACnB,GAAI,CAACpe,KAAMpyK,CAAAA,QAAQ,CAAE,CACnB,MACF,CACA,MAAMvtC,IAAO2/M,CAAAA,KAAAA,CAAM3/M,IAAI,CACvB,MAAMxW,KAAAA,CAAO,IAAI,CACjBm2N,KAAMpyK,CAAAA,QAAQ,CAACg+E,aAAa,CAAC54H,OAAO,CAAC,CAACi4H,aAAc5kI,CAClD,GAAA,CAAA,GAAIga,IAAKylG,CAAAA,OAAO,CAAE,CAChB,MAAMgzQ,cAAAA,CAAiB,SAAS94J,KAAK,CAAA,CACnC,GAAIA,KAAAA,CAAMpyK,QAAQ,CAAE,CAClBq9E,YAAAA,CAAa/B,QAAQ,CAAG82F,KAAAA,CAAMpyK,SAChC,CAAO,KAAA,CACLoyK,KAAMlyN,CAAAA,IAAI,CAAC,MAAQgrX,CAAAA,cAAAA,CAAAA,CACnB16I,MAAO7B,CAAAA,IAAI,CAACvc,KAAAA,EACd,CACAA,KAAAA,CAAMlyN,IAAI,CAAC,QAAA,CAAU,KAACkyN,EAAAA,CACpB,GAAI/0F,YAAAA,CAAa/B,QAAQ,GAAK82F,MAAMpyK,QAAQ,CAAE,CAC5Cq9E,YAAAA,CAAa/B,QAAQ,CAAGr/H,KAAKo4J,CAAAA,gBAAe,CAEhD,CAAA,EACF,CACA,CAAA,GAAI,CAAC5hJ,IAAAA,CAAKylG,OAAO,CAACz/G,EAAE,CAAE,CACpB4kI,YAAa/B,CAAAA,QAAQ,CAAGr/H,KAAAA,CAAKo4J,eAAe,CAC5C,MACF,CACA,MAAM5xH,EAAKhwB,CAAAA,IAAAA,CAAKylG,OAAO,CAACz/G,CAAE,CAAA,CAAC6iI,QAAQ,CACnC,MAAMh4H,GAAMmP,CAAAA,IAAAA,CAAKylG,OAAO,CAACz/G,CAAE,CAAA,CAACL,IAAI,CAChC,IAAIkjI,QACJ,CAAA,GAAI74F,EAAOliC,GAAAA,SAAAA,CAAW,CACpB,GAAI,CAACkiC,EAAI,CAAA,CACP46F,YAAa/B,CAAAA,QAAQ,CAAGr/H,KAAAA,CAAKo4J,gBAC/B,MAAO,CACL/4B,QAAAA,CAAWk1G,MAAOh2O,CAAAA,GAAG,CAACioC,EAAAA,CAAAA,CACtB,GAAI64F,QAAAA,CAAU,CACZ4vP,cAAe5vP,CAAAA,QAAAA,EACjB,CAAO,KAAA,CACLk1G,MAAOtwO,CAAAA,IAAI,CAAC,CAAC,IAAI,EAAEuiC,EAAAA,CAAG,CAAC,CAAEyoV,cAC3B,EAAA,CACF,CACF,CAAA,KAAO,GAAI5nX,GAAAA,CAAK,CACd,MAAMlL,IAAOg6N,CAAAA,KAAAA,CAAM4c,cAAc,CAACv8N,KAAKylG,OAAO,CAACz/G,CAAE,CAAA,CAACL,IAAI,CAAA,CACtDkjI,QAAWk1G,CAAAA,MAAAA,CAAOS,QAAQ,CAAC74O,IAAAA,CAAAA,CAC3B,GAAIkjI,QAAAA,CAAU,CACZ4vP,cAAAA,CAAe5vP,QACjB,EAAA,CAAA,KAAO,CACLk1G,MAAOtwO,CAAAA,IAAI,CAAC,CAAC,QAAQ,EAAE9H,IAAK,CAAA,CAAC,CAAE8yX,cACjC,EAAA,CACF,CACF,CACF,CACF,EAAA,CACAC,SAAUzmF,CAAAA,MAAM,CAAEumF,OAAO,CAAE,CACzB,IAAI,CAACD,QAAQ,CAACzxX,IAAI,CAAC,CACjBmrS,MAAAA,CAAQA,MACRumF,CAAAA,OAAAA,CAASA,OACX,CAAA,EACF,CAlHAzqX,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,OAAA,CACX,CAAA,IAAI,CAACuiJ,QAAQ,CAAG,EAAE,CAClB,IAAI,CAACtoV,MAAM,CAAG+lM,GAAAA,CAAIpmM,cAClB,CAAA,IAAI,CAACmuM,MAAM,CAAG/H,GAAI+H,CAAAA,MAAM,CACxB,IAAI,CAACn8E,eAAe,CAAGttB,mBAAmB,IAAI,CAACrkG,MAAM,CAAA,CACrD,IAAI,CAACyoV,SAAS,CAAC,IAAIlC,eAAgB,CAAA,IAAI,CAAG,CAAA,CAAC3lX,GAAKmP,CAAAA,IAAAA,GAAAA,CAC9C,OAAOra,IAAAA,CAAKyB,YAAY,CAACyJ,GAAAA,CAAAA,GAAS,OACpC,CAAA,CAAA,CACA,IAAI,CAAC6nX,SAAS,CAAC,IAAItC,cAAe,CAAA,IAAI,CAAG,CAAA,CAACvlX,GAAKmP,CAAAA,IAAAA,GAAAA,CAC7C,OAAOra,IAAAA,CAAKyB,YAAY,CAACyJ,GAAAA,CAAAA,GAAS,MACpC,CAAA,EACF,CAuGF,CAEA,MAAM8nX,YAAAA,SAAqBr1I,eAIzBpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClBgmX,UAAAA,CAAWp3I,IAAI,CAACrrO,GAAAA,CAAK,IAAI,CAACw7G,UAAU,CAAE/+G,QACxC,EAAA,CACA+/G,KAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,IAAI,CAACm7N,IAAI,CAAC6L,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,IACtC,CAAA,MAAMwqD,OAAS,IAAIsgF,WAAAA,CAAY,IAAI,CAACp3I,IAAI,CAAE,KAC1C,CAAA,CAAA,MAAMlkO,OAASg7R,MAAO3iL,CAAAA,KAAK,CAACtvG,IAAAA,CAAAA,CAC5B,MAAM0qH,KAAAA,CAAQ,IAAI,CAACywG,IAAI,CAACzwG,KAAK,CAC7BA,KAAM4W,CAAAA,IAAI,CAAGrqI,MAAAA,CACb,IAAI,CAACkkO,IAAI,CAAC+Q,kBAAkB,CAAClsO,IAAAA,CAAK4hM,QAAQ,CAC1C,CAAA,IAAI,CAACu5B,IAAI,CAAC6L,OAAO,CAAC9Q,MAAM,CAACuR,UAAU,CAAG,KACtC,CAAA,OAAO/8G,KACT,CAfA38H,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,OACb,EAAA,CAcF,CAEA,MAAM4iJ,YAIJ,OAAO9xX,IAAAA,CAAK+xX,IAAI,CAAE,CAChBD,WAAAA,CAAYE,MAAM,CAAChyX,IAAI,CAAC+xX,IAAAA,EAC1B,CACF,CALI,WAFED,CAEGE,MAAM,CAAG,EAAE,CAOpB,MAAMC,mBAAsB,CAAA,IAAIhgX,GAAI,CAAA,CAClC,QACA,CAAA,QAAA,CACA,SACA,SACA,CAAA,MAAA,CACA,MACA,CAAA,MAAA,CACA,SACA,CAAA,UAAA,CACA,eACA,CAAA,cAAA,CACA,UACA,WACA,CAAA,UAAA,CACA,WACA,CAAA,mBAAA,CACA,eACA,CAAA,aAAA,CACA,iBACA,CAAA,yBAAA,CACA,eACA,CAAA,mBAAA,CACA,WACA,CAAA,eAAA,CACA,YACA,CAAA,iBAAA,CACA,KACA,CAAA,KAAA,CACA,KACA,KACA,CAAA,MAAA,CACA,MACA,CAAA,UAAA,CACD,CACD,CAAA,SAASigX,sBACP,EAAA,CAAA,OAAOD,mBACT,CACA,SAASE,YAAa3vX,CAAAA,IAAI,CAAE0sO,GAAG,CAC7B,CAAA,GAAI+iJ,oBAAoBzqX,GAAG,CAAChF,IAAO,CAAA,CAAA,CACjC,MAAM,IAAI4G,KAAM,CAAA,CAAC,aAAa,EAAE5G,IAAAA,CAAK,uCAAuC,CAAC,CAC/E,CACA,MAAM0+O,UAAAA,CAAa,SAASh8O,IAAI,CAAA,CAC9BiC,YAAaoqH,CAAAA,SAAS,CAACnqH,gBAAgB,CAAC0B,IAAI,CAAC,IAAI,CAAA,CACjDmjV,UAAW16N,CAAAA,SAAS,CAAC46N,cAAc,CAACrjV,IAAI,CAAC,IAAI,CAAE5D,IACjD,EAAA,CACAg8O,CAAAA,UAAAA,CAAW3vH,SAAS,CAAGxwH,MAAO1C,CAAAA,MAAM,CAAC4tV,UAAAA,CAAW16N,SAAS,CACzD2vH,CAAAA,UAAAA,CAAW3vH,SAAS,CAACtqH,WAAW,CAAGi6O,UACnCA,CAAAA,UAAAA,CAAWrjP,MAAM,CAAGouV,WAAWpuV,MAC/BqjP,CAAAA,UAAAA,CAAW12L,UAAU,CAAG,IAAImgS,gBAAAA,CAAiBzpG,YAC7CkxI,cAAelxI,CAAAA,UAAAA,CAAY1+O,IAAM0sO,CAAAA,GAAAA,CAAAA,CACjC,OAAOgS,UACT,CACA,MAAMmxI,mBAAqB,EAAC,CAC5B1nC,gBAAiBC,CAAAA,aAAa,CAAC/+U,OAAO,CAAC,CAAChF,MAAOyrX,MAAQ7qX,CAAAA,GAAAA,GAAAA,CACrD4qX,kBAAkB,CAACxrX,KAAM,CAAA,CAAG,EAC9B,CAAA,CACAsrX,CAAAA,YAAaE,CAAAA,kBAAkB,CAAGA,kBAAAA,CAClC,SAASD,cAAAA,CAAehjJ,MAAM,CAAE5sO,IAAI,CAAE0sO,GAAG,CACvC,CAAA,GAAI,OAAOE,MAAAA,GAAW,UAAY,CAAA,CAChC,MAAM,IAAIhmO,KAAM,CAAA,CAAC,eAAe,EAAEgmO,MAAO,CAAA,8CAA8C,CAAC,CAC1F,CACA,GAAI,EAAEA,MAAAA,CAAO79G,SAAS,YAAY85N,MAAK,CAAI,CAAA,CACzC,MAAM,IAAIjiV,KAAM,CAAA,CAAC,eAAe,EAAE6iV,WAAWJ,eAAe,CAACz8G,MAAQ,CAAA,CAAA,4BAA4B,CAAC,CACpG,CACA5sO,IAAAA,CAAOA,MAAQ4sO,MAAO4Q,CAAAA,MAAM,EAAIisG,UAAAA,CAAWJ,eAAe,CAACz8G,MAC3D,CAAA,CAAA,GAAI6iJ,oBAAoBzqX,GAAG,CAAChF,IAAO,CAAA,CAAA,CACjC,MAAM,IAAI4G,KAAM,CAAA,CAAC,cAAc,EAAE5G,IAAAA,CAAK,wCAAwC,CAAC,CACjF,CACA4sO,MAAO4Q,CAAAA,MAAM,CAAGx9O,IAChB,CAAA,MAAM2xO,QAAWjF,CAAAA,GAAAA,CAAMA,GAAI0R,CAAAA,OAAO,CAAG0c,OAAAA,CAAQtuB,cAAc,EAAG4R,CAAAA,OAAO,CACrEzM,QAAAA,CAAS3kO,GAAG,CAAC4/N,MACb0iJ,CAAAA,CAAAA,WAAAA,CAAY9xX,IAAI,CAACovO,MAAAA,EACnB,CAEA,MAAMmjJ,gBAAmB,CAACn6U,GAAMA,EAAAA,GAAG,CAAC,CAAE,CAAA,CAAC6uE,WAAW,EAAA,CAAK7uE,GAAIj4C,CAAAA,SAAS,CAAC,CAAA,CACrE,OAAMqyX,aAAsBh2I,SAAAA,eAAAA,CAM1B7f,UAAa,EAAA,CACX,IAAI,MAAM51N,GAAO,IAAA,IAAI,CAAC6iC,MAAM,CAAC,CAC3B,MAAMiR,OAAU,CAAA,IAAI,CAACjR,MAAM,CAAC7iC,GAAI,CAAA,CAChC,MAAMoJ,MAAAA,CAAS0qC,OAAQmoE,CAAAA,UAAU,CACjC,GAAI7yG,OAAQ,CACVA,MAAAA,CAAOo3I,WAAW,CAAC1sG,OACrB,EAAA,CACF,CACA,IAAI,CAACjR,MAAM,CAAG,GAChB,CACAwrM,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAAA,GAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,MAAMrH,MAAO,IACb0sO,CAAAA,MAAAA,CAAOF,GAAG,CAAG,IAAI,CAACmF,IAAI,CACtB,MAAMo+I,YAAgB1oX,EAAAA,GAAIqrO,CAAAA,IAAI,CAAE,CAACrqO,IAAKhB,GAAKkuO,CAAAA,KAAAA,GAAAA,CACzC,GAAI,CAACltO,GAAK,CAAA,CACR,MAAMgkD,GAAAA,CAAM,EACZ,CAAA,IAAI,IAAI7vD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI4yX,WAAYE,CAAAA,MAAM,CAAC7yX,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD6vD,GAAG,CAAC+iU,WAAYE,CAAAA,MAAM,CAAC9yX,CAAE,CAAA,CAACsD,IAAI,CAAC,CAAGsvX,WAAAA,CAAYE,MAAM,CAAC9yX,CAAE,EACzD,CACA4yX,WAAAA,CAAYE,MAAM,CAAC7yX,MAAM,CAAG,EAC5BqH,QAAS,CAAA,IAAA,CAAMuoD,GAAKkpL,CAAAA,KAAAA,CAAAA,CACpB,MAAMy6I,iBAAAA,CAAoB3oX,GAAIlK,CAAAA,KAAK,CAAC,QAAS,CAAA,CAAC,CAAE,CAChD,CAAO6C,OAAAA,KAAAA,CAAK0xO,OAAO,CAACxqM,MAAM,CAACozM,cAAAA,CAAeI,OAAO,CAACs1I,iBAAmB,CAAA,QAAA,CAAA,EAAU,CACjF,KAAO,CACLlsX,QAASuE,CAAAA,GAAAA,EACX,CACF,CAAA,CACA,CAAA,KAAM,CAAC4nX,QAAAA,CAAS,CAAG5oX,GAAIqrO,CAAAA,IAAI,CAACv1O,KAAK,CAAC,GAAA,CAAA,CAClC,MAAM+yX,WAAAA,CAAcD,SAAShzX,QAAQ,CAAC,MACtC,CAAA,CAAA,GAAIizX,WAAa,CAAA,CACf,IAAI,CAACC,WAAW,CAACF,QAAAA,CAAUF,YAC7B,EAAA,CAAA,KAAO,CACL,IAAI,CAACK,WAAW,CAAC/oX,GAAAA,CAAIqrO,IAAI,CAAEq9I,YAC7B,EAAA,CACF,CACAlsQ,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAOA,IACT,CACA47N,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,EACrB67I,WAAAA,CAAY/oX,GAAG,CAAEvD,QAAQ,CAAE,CACzB,MAAM2xO,IAAAA,CAAOnuO,QAASmuO,CAAAA,IAAI,CAC1B,MAAMt9L,QAAU7wC,QAASC,CAAAA,aAAa,CAAC,QAAA,CACvC,CAAA,IAAI,CAAC2/B,MAAM,CAAC7/B,GAAI,CAAA,CAAG8wC,OACnBA,CAAAA,OAAQ2qE,CAAAA,KAAK,CAAG,KAAA,CAChB3qE,QAAQ15C,gBAAgB,CAAC,OAAS,CAACE,CACjCmF,EAAAA,CAAAA,QAAAA,CAAS,CAAC,QAAQ,EAAEnF,CAAEvD,CAAAA,MAAM,CAACgX,GAAG,CAAC,eAAe,CAAC,EACnD,CAAG,CAAA,KAAA,CAAA,CACH,IAAIy2H,IAAAA,CAAO,KACX1wF,CAAAA,OAAQ1wC,CAAAA,MAAM,CAAG0wC,OAAQgsE,CAAAA,kBAAkB,CAAG,UAAA,CAC5C,GAAI,CAAC0kB,IAAS,GAAA,CAAC,IAAI,CAACpjB,UAAU,EAAI,IAAI,CAACA,UAAU,GAAK,UAAY,IAAI,CAACA,UAAU,GAAK,UAAS,CAAA,CAAI,CACjGojB,IAAAA,CAAO,KACP/kI,QAAS,CAAA,IAAA,CAAMuD,GAAK8wC,CAAAA,OAAAA,EACtB,CACF,CACAA,CAAAA,OAAAA,CAAQ/lC,GAAG,CAAG/K,GAAAA,CACdouO,IAAK7tO,CAAAA,WAAW,CAACuwC,OAAAA,EACnB,CACAg4U,WAAAA,CAAY9oX,GAAG,CAAEvD,QAAQ,CAAE,CACzB,MAAMusX,mBAAAA,CAAsBxwX,QAASI,CAAAA,OAAO,EAAIzB,MAAOmI,CAAAA,QAAQ,CAACujB,MAAM,GAAK,MAAA,CAC3E,MAAMomW,OAAAA,CAAUD,mBAAsB7xX,CAAAA,MAAAA,CAAOmI,QAAQ,CAACujB,MAAM,CAAG1rB,MAAOmI,CAAAA,QAAQ,CAAC9J,QAAQ,CAAG,MAAYwK,CAAAA,IAAAA,CAAAA,GAAG,CACzG,MAAMkpX,SAAY,CAAA,IAAIh7S,IAAIluE,GAAKipX,CAAAA,OAAAA,CAAAA,CAC/BE,iCAAO,mBAA6CD,SAAAA,CAAUr0X,QAAQ,EAAA,CAAA,CAAIuM,IAAI,CAAEH,MAC9E,EAAA,CAAA,MAAMuoO,QAAW0/I,CAAAA,SAAAA,CAAU1zX,QAAQ,CAACM,KAAK,CAAC,GAAA,CAAA,CAAKW,GAAG,EAAA,CAClD,MAAM2yX,YAAAA,CAAe,IAAI,CAAC9+I,IAAI,CAAC4C,MAAM,CAACj5K,IAAI,CAACu1K,QAAAA,CAAU,QAAWr6N,CAAAA,EAAAA,IAAAA,EAAM0nO,QACtE,IAAI,MAAM75O,GAAOiE,IAAAA,MAAAA,CAAO,CACtB,MAAMooX,WAAcpoX,CAAAA,MAAM,CAACjE,GAAI,CAAA,CAC/B,MAAMssX,iBAAAA,CAAoBD,WAAY7hQ,CAAAA,SAAS,YAAY85N,MAAAA,CAC3D,GAAIgoC,iBAAAA,CAAmB,CACrB,MAAMC,kBAAqBf,CAAAA,gBAAAA,CAAiBa,WAAY5wX,CAAAA,IAAI,EAC5D,GAAI,CAAC4wX,WAAYrzI,CAAAA,UAAU,CAC3B,CAAA,MAAMA,UAAaqzI,CAAAA,WAAAA,CAAYrzI,UAAU,EAAIuzI,kBAAAA,CAC7ClB,cAAegB,CAAAA,WAAAA,CAAarzI,UAC5B,CAAA,CAAA,GAAIozI,YAAc,CAAA,IAAI,CAAC9+I,IAAI,CAACuM,OAAO,CAACjB,SAAS,CAACI,UAAYozI,CAAAA,YAAY,CAACpzI,UAAW,CAAA,EACpF,CACF,CACAv5O,QAAS,CAAA,IAAA,CAAMuD,GAAK,CAAA,IAAA,EACtB,GAAGg1F,KAAK,CAAC,GAACh0F,EAAAA,CACRvE,QAASuE,CAAAA,GAAAA,EACX,CACF,EAAA,CA1FA9D,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,QACX,CAAA,CAAA,IAAI,CAAC+Q,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACr2M,MAAM,CAAG,GAChB,CAuFF,CAEA,MAAM2pV,aAAAA,SAAsB/2I,gBAI1BpH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,MAAQ,QAAU,CAAA,CAC3BA,GAAM,CAAA,CACJqrO,IAAMrrO,CAAAA,GAAAA,CACN62D,QAAU72D,CAAAA,GACZ,EACF,CACAo/G,IAAAA,CAAKloH,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAE,CACjBhwH,MAAO,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UAAU,CAC7B,CAAG,CAACx6G,GAAAA,CAAKu9G,QACP,GAAA,CAAA,GAAI,CAACv9G,GAAAA,CAAK,CACRvE,QAAS,CAAA,IAAA,CAAM8hH,QACjB,EAAA,CAAA,KAAO,CACL9hH,QAAAA,CAAS,CAAC,+BAA+B,EAAEuD,GAAI62D,CAAAA,QAAQ,CAAC,EAAE,EAAE71D,GAAAA,CAAI,CAAC,CAAC,EACpE,CACF,CAAA,EACF,CACA2yO,UAAAA,CAAWxkO,IAAI,CAAE,CACf,IAAI,CAAC0iO,OAAL,GAAA,IAAI,CAACA,OAAAA,CAAY,IAAIC,WAAAA,CAAY,OACjC,CAAA,CAAA,CAAA,OAAO,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC5iO,IAAAA,CAC7B,CAxBAjS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,QAAA,CAAA,CAAW,IAAI,CAAC0M,OAAO,CAAG,KACvC,CAuBF,CAEA,SAAS43I,oBAAAA,CAAqB5tF,UAAU,CAAA,CACtC,MAAMvV,WAAc,CAAA,IAAI,CACxB,GAAIA,WAAY5pO,CAAAA,QAAQ,CAAE,CACxB4pO,YAAY5pO,QAAQ,CAAC22J,KAAK,CAAGwoF,UAAWn/O,CAAAA,SAAQ,CAEpD,CACA,SAASgtU,mBAAAA,CAAoB7tF,UAAU,CAAA,CACrC,MAAMvV,WAAAA,CAAc,IAAI,CACxBA,WAAYl8C,CAAAA,QAAQ,CAACiB,IAAI,CAACwwD,UAAAA,EAC5B,CACA,MAAM8tF,sBAAsBl3I,eAM1BpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,GAAIlL,IAAAA,CAAKyB,YAAY,CAACyJ,GAAI62D,CAAAA,QAAQ,IAAM,OAAS,CAAA,CAC/CuoD,IAAKloH,CAAAA,GAAG,CAAC8I,GAAAA,CAAIqrO,IAAI,CAAE,CACjBhwH,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,UAAY,CAAA,IAAI,CAACA,UACnB,CAAG,CAAA,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,IAAK,CACRvE,QAAAA,CAAS,IAAM8hH,CAAAA,QAAAA,EACjB,CAAO,KAAA,CACL9hH,QAASuE,CAAAA,GAAAA,EACX,CACF,CAAA,EACF,CACF,CACAw7G,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAE,CACd,MAAM+rH,MAAS,CAAA,IAAI43E,MAAO,CAAA,IAAI,CAACn4J,OAAO,EACtC,GAAI36C,GAAAA,CAAK,CACPk7H,MAAAA,CAAO0uP,MAAM,CAAGz6W,KAClB,CACA,OAAO+rH,MACT,CACA6vG,KAAMjc,CAAAA,KAAK,CAAEoe,MAAM,CAAE,CACnB,MAAMhyG,MAAS4zF,CAAAA,KAAAA,CAAMpyK,QAAQ,CAC7B,GAAIw+E,MAAAA,CAAO0uP,MAAM,CAAE,CACjB96J,KAAM3/M,CAAAA,IAAI,CAACskM,aAAa,CAAGv4E,MAAAA,CAAO0uP,MAAM,CAACn2K,aAAa,CACtDqb,KAAM3/M,CAAAA,IAAI,CAACwkM,UAAU,CAAGz4E,MAAAA,CAAO0uP,MAAM,CAACj2K,UAAU,CAChDmb,KAAM3/M,CAAAA,IAAI,CAAC4jM,SAAS,CAAG73E,MAAAA,CAAO0uP,MAAM,CAAC72K,SAAS,CAC9C,GAAI73E,MAAAA,CAAO0uP,MAAM,CAACxuF,iBAAiB,CAAE,CACnC,MAAM/nF,KAAAA,CAAQ65B,MAAOS,CAAAA,QAAQ,CAACzyG,MAAO0uP,CAAAA,MAAM,CAACxuF,iBAAiB,CAC7D,CAAA,GAAI/nF,KAAO,CAAA,CACTyb,MAAM3/M,IAAI,CAACisR,iBAAiB,CAAG/nF,KAAMl0K,CAAAA,GAAE,CACzC,KAAO,CACLv9B,OAAQqyO,CAAAA,IAAI,CAAC,CAAC,sCAAsC,EAAE/4G,MAAO0uP,CAAAA,MAAM,CAACxuF,iBAAiB,CAAC,CAAC,EACzF,CACF,CACF,CACAlgK,MAAAA,CAAOv1D,WAAW,EAClBu1D,CAAAA,MAAOy4E,CAAAA,UAAU,CAAGmb,KAAAA,CAAM3/M,IAAI,CAACwkM,UAAU,CACzCz4E,MAAOu4E,CAAAA,aAAa,CAAGqb,KAAAA,CAAM3/M,IAAI,CAACskM,aAClCv4E,CAAAA,MAAAA,CAAO63E,SAAS,CAAG+b,KAAM3/M,CAAAA,IAAI,CAAC4jM,SAAS,CACvC,IAAI,CAAC82K,YAAY,CAAC/6J,KAClB5zF,CAAAA,CAAAA,MAAAA,CAAOn1D,SAAS,EAChB+oJ,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAU,CAAA,IAAI,CAACq5O,cAAc,CAAE,IAAI,CAAA,CAC7C3mB,KAAMtyN,CAAAA,EAAE,CAAC,QAAA,CAAU,IAAI,CAACi5O,cAAc,CAAE,IAAI,EAC9C,CACAo0I,YAAa/6J,CAAAA,KAAK,CAAE,CAClB,MAAM5zF,MAAS4zF,CAAAA,KAAAA,CAAMpyK,QAAQ,CAC7B,GAAI,CAACoyK,KAAM3/M,CAAAA,IAAI,CAACisR,iBAAiB,CAAE,CACjClgK,MAAAA,CAAOm4E,KAAK,CAAG,IACf,CAAA,MACF,CACA,IAAI,CAAC85B,OAAO,CAAC/wO,GAAG,CAAC,CAAC,KAAK,EAAE0yN,KAAAA,CAAM3/M,IAAI,CAACisR,iBAAiB,CAAC,CAAC,CAAEquF,qBAAsB36J,KAC/E,CAAA,CAAA,IAAI,CAACqe,OAAO,CAAC3wO,EAAE,CAAC,CAAC,KAAK,EAAEsyN,KAAAA,CAAM3/M,IAAI,CAACisR,iBAAiB,CAAC,CAAC,CAAEquF,qBAAsB36J,KAC9E,CAAA,CAAA,MAAM+sE,UAAa,CAAA,IAAI,CAAC1uD,OAAO,CAACj2O,GAAG,CAAC43N,KAAM3/M,CAAAA,IAAI,CAACisR,iBAAiB,CAChE,CAAA,GAAIS,UAAcA,EAAAA,UAAAA,CAAWn/O,QAAQ,CAAE,CACrCw+E,MAAOm4E,CAAAA,KAAK,CAAGwoF,UAAAA,CAAWn/O,SAC5B,MAAO,CACL,GAAI,CAACm/O,UAAAA,CAAY,CACf,IAAI,CAAC1uD,OAAO,CAAC/wO,GAAG,CAAC,CAAC,IAAI,EAAE0yN,KAAAA,CAAM3/M,IAAI,CAACisR,iBAAiB,CAAC,CAAC,CAAEsuF,mBAAqB56J,CAAAA,KAAAA,CAAAA,CAC7E,IAAI,CAACqe,OAAO,CAAC3wO,EAAE,CAAC,CAAC,IAAI,EAAEsyN,KAAM3/M,CAAAA,IAAI,CAACisR,iBAAiB,CAAC,CAAC,CAAEsuF,mBAAqB56J,CAAAA,KAAAA,EAC9E,CAAO,KAAA,CACL,IAAI,CAACqe,OAAO,CAAC9B,IAAI,CAACwwD,UAAAA,EACpB,CACF,CACF,CACApmD,cAAe3mB,CAAAA,KAAK,CAAEqiD,SAAS,CAAEr0Q,KAAK,CAAEgzN,QAAQ,CAAE,CAChD,GAAIqhD,SAAc,GAAA,MAAA,CAAQ,CACxB,GAAIr0Q,KAASA,EAAAA,KAAAA,CAAMs+R,iBAAiB,EAAItrE,QAAAA,EAAYhzN,KAAMs+R,CAAAA,iBAAiB,GAAKtrE,QAAAA,CAASsrE,iBAAiB,CAAE,CAC1G,IAAI,CAACjuD,OAAO,CAAC/wO,GAAG,CAAC,CAAC,KAAK,EAAE0zN,QAAAA,CAASsrE,iBAAiB,CAAC,CAAC,CAAEquF,oBAAsB36J,CAAAA,KAAAA,CAAAA,CAC7E,IAAI,CAACqe,OAAO,CAAC/wO,GAAG,CAAC,CAAC,IAAI,EAAE0zN,SAASsrE,iBAAiB,CAAC,CAAC,CAAEsuF,mBAAqB56J,CAAAA,KAAAA,EAC7E,CACF,CACF,CAnFA5xN,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,QAAA,CACX,CAAA,IAAI,CAACgI,OAAO,CAAGhI,GAAI+H,CAAAA,MAAM,CACzB,IAAI,CAACvyL,OAAO,CAAGwqL,GAAAA,CAAIpmM,eACrB,CAgFF,CAEA,MAAM+qV,QAMJ9nX,CAAAA,WAAAA,EAAc,CACZ,GAAI,CAAC,IAAI,CAAC+nX,aAAa,CAAE,CACvB,IAAI,CAACC,cAAc,GACrB,CACA,OAAO,IAAI,CAACD,aAAa,CAACt/W,KAAK,EACjC,CACAu/W,cAAAA,EAAiB,CACf,MAAM5oF,OAAS,IAAIsgF,WAAAA,CAAY,IAAI,CAACp3I,IAAI,CAAE,IAC1C,CAAA,CAAA,IAAI,CAACy/I,aAAa,CAAG3oF,MAAAA,CAAO3iL,KAAK,CAAC,IAAI,CAACqsH,KAAK,EAC9C,CACA,IAAI37N,IAAAA,CAAKrS,KAAK,CAAE,CACd,IAAI,CAACguO,KAAK,CAAGhuO,KACb,CAAA,IAAI,CAACitX,aAAa,CAAG,KACvB,CACA,IAAI56W,IAAO,EAAA,CACT,OAAO,IAAI,CAAC27N,KAAK,CApBnB5tO,WAAAA,CAAYioO,GAAG,CAAEh2N,IAAI,CAAC,CACpB,IAAI,CAAC46W,aAAa,CAAG,IACrB,CAAA,IAAI,CAACz/I,IAAI,CAAGnF,GACZ,CAAA,IAAI,CAAC2F,KAAK,CAAG37N,KACf,CAkBF,CAEA,MAAM86W,eAAAA,SAAwBx3I,eAI5BpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,IACN62D,QAAU72D,CAAAA,GACZ,EACF,CACA,MAAM4G,OAAAA,CAAU,CACdy0G,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAE7B4D,CAAAA,IAAAA,CAAKloH,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAEzkO,OAAAA,CAAS,CAAC5F,GAAKu9G,CAAAA,QAAAA,GAAAA,CAChC,GAAIv9G,GAAAA,CAAK,CACPvE,QAAAA,CAAS,CAAC,2BAA2B,EAAEuD,GAAI62D,CAAAA,QAAQ,CAAC,CAAC,EACvD,CAAA,KAAO,CACLp6D,QAAAA,CAASuE,GAAKu9G,CAAAA,QAAAA,EAChB,CACF,CAAA,EACF,CACA/B,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAO,IAAI26W,QAAS,CAAA,IAAI,CAACx/I,IAAI,CAAEn7N,IACjC,CAAA,CACAwkO,UAAWxkO,CAAAA,IAAI,CAAE,CACf,IAAI,CAAC0iO,UAAL,IAAI,CAACA,OAAY,CAAA,IAAIC,WAAY,CAAA,OAAA,CAAA,CAAA,CACjC,OAAO,IAAIg4I,SAAS,IAAI,CAACx/I,IAAI,CAAEnuH,IAAKsC,CAAAA,KAAK,CAAC,IAAI,CAACozH,OAAO,CAACE,MAAM,CAAC5iO,IAChE,CAAA,CAAA,CAAA,CACA47N,KAAMjc,CAAAA,KAAK,CAAEsb,QAAQ,CAAE,CACrB,GAAI,CAACtb,KAAAA,EAAS,CAACA,KAAAA,CAAMpyK,QAAQ,EAAI,CAACoyK,KAAM3/M,CAAAA,IAAI,EAAI,CAAC2/M,KAAM3/M,CAAAA,IAAI,CAAC8oO,QAAQ,CAAE,CACpE,MACF,CACA,MAAMoqI,QAAAA,CAAWvzJ,MAAMpyK,QACvB2lU,CAAAA,QAAAA,CAASlzW,IAAI,CAAG2/M,KAAM3/M,CAAAA,KAAI,CAlC5BjS,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,YAAa,IAAI,CAAC0M,OAAO,CAAG,KACzC,CAkCF,CAEA,MAAMq4I,oBAAoBz3I,eAIxBpH,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAQ,GAAA,QAAA,CAAU,CAC3BA,GAAAA,CAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACAo/G,IAAKloH,CAAAA,GAAG,CAAC8I,GAAAA,CAAIqrO,IAAI,CAAE,CACjBhwH,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,UAAY,CAAA,IAAI,CAACA,UACnB,CAAG,CAAA,CAACx6G,GAAKu9G,CAAAA,QAAAA,GAAAA,CACP,GAAI,CAACv9G,IAAK,CACRvE,QAAAA,CAAS,IAAM8hH,CAAAA,QAAAA,EACjB,CAAO,KAAA,CACL9hH,QAAS,CAAA,CAAC,6BAA6B,EAAEuD,GAAAA,CAAI62D,QAAQ,CAAC,EAAE,EAAE71D,GAAI,CAAA,CAAC,CAAC,EAClE,CACF,CACF,EAAA,CACA2yO,UAAWxkO,CAAAA,IAAI,CAAE,CACf,IAAI,CAAC0iO,OAAAA,GAAL,IAAI,CAACA,OAAY,CAAA,IAAIC,WAAY,CAAA,OAAA,CAAA,CAAA,CACjC,OAAO,IAAI,CAACD,OAAO,CAACE,MAAM,CAAC5iO,IAC7B,CAAA,CAxBAjS,YAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,MAAS,CAAA,CAAA,IAAI,CAAC0M,OAAO,CAAG,KACrC,CAuBF,CAEA,MAAMs4I,mBAAsB,CAAA,CAC1B,QAAU9gW,CAAAA,cAAAA,CACV,OAASC,CAAAA,qBAAAA,CACT,QAAUC,CAAAA,uBACZ,CACA,CAAA,MAAM6gW,mBAAqB,CACzB,SAAA,CAAWh+V,cACX,CAAA,QAAA,CAAUC,aACV,CAAA,qBAAA,CAAuBC,6BACvB,CAAA,oBAAA,CAAsBE,6BACtB,oBAAsBD,CAAAA,4BAAAA,CACtB,mBAAqBE,CAAAA,2BACvB,CACA,CAAA,MAAM49V,UAAa,CAAA,uBACnB,OAAMC,mBAA4B73I,SAAAA,eAAAA,CAKhCpH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAE,CAClB,GAAI,OAAOuD,GAAAA,GAAQ,QAAU,CAAA,CAC3BA,GAAM,CAAA,CACJqrO,IAAMrrO,CAAAA,GAAAA,CACN62D,SAAU72D,GACZ,EACF,CACA,MAAMrH,KAAO,CAAA,IAAI,CACjB,MAAM2D,QAAU,IAAI,CAAC+tO,OAAO,CAAC8D,UAAU,CAAC,SACxC,CAAA,CAAA,GAAIr5O,KAAKyB,YAAY,CAACyJ,GAAI62D,CAAAA,QAAQ,CAAM,GAAA,OAAA,CAAS,CAC/CuoD,IAAAA,CAAKloH,GAAG,CAAC8I,GAAIqrO,CAAAA,IAAI,CAAE,CACjBhwH,KAAO,CAAA,IAAI,CAACG,UAAU,CAAG,CACzBA,CAAAA,UAAAA,CAAY,IAAI,CAACA,UACnB,EAAG,CAACx6G,GAAAA,CAAKu9G,QACP,GAAA,CAAA,GAAI,CAACv9G,GAAAA,CAAK,CACR,MAAMupX,WAAavqX,GAAI62D,CAAAA,QAAQ,CAACtiE,OAAO,CAAC,OAAA,CAAS,MACjDoE,CAAAA,CAAAA,KAAAA,CAAK0xO,OAAO,CAACgB,IAAI,CAACk/I,UAAAA,CAAY,SAAW,CAAA,CAACvpX,GAAKimC,CAAAA,OAAAA,GAAAA,CAC7C,GAAIjmC,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,EACX,CAAO,KAAA,CACLvE,QAAS,CAAA,IAAA,CAAM,CACb0S,IAAMovG,CAAAA,QAAAA,CACNt3E,OAASA,CAAAA,OACX,CACF,EAAA,CACF,CACF,EAAA,CAAA,KAAO,CACLxqC,QAASuE,CAAAA,GAAAA,EACX,CACF,CAAA,EACF,CAAO,KAAA,CACL1E,OAAQ+uO,CAAAA,IAAI,CAACrrO,GAAAA,CAAKvD,QACpB,EAAA,CACF,CACA+/G,IAAAA,CAAKx8G,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,MAAMpyK,QAAAA,CAAW,IAAIk4J,YAAAA,CACrB,GAAIzlM,IAAK83B,CAAAA,OAAO,EAAI93B,IAAAA,CAAKA,IAAI,CAAE,CAC7ButC,QAAAA,CAASzV,OAAO,CAAG93B,IAAAA,CAAK83B,OACxByV,CAAAA,QAAAA,CAASktU,MAAM,CAAGz6W,KAAKA,KACzB,CAAO,KAAA,CACL,MAAM7S,OAAAA,CAAU,IAAI,CAAC+tO,OAAO,CAAC8D,UAAU,CAAC,SAAA,CAAA,CACxC,MAAMlnM,OAAAA,CAAU3qC,OAAQkgH,CAAAA,IAAI,CAACx8G,GAAKmP,CAAAA,IAAAA,CAAM2/M,KACxC,CAAA,CAAA,GAAI,CAAC7nL,OAAAA,CAAS,OAAO,IACrByV,CAAAA,QAASzV,CAAAA,OAAO,CAAGA,QACrB,CACA,OAAOyV,QACT,CACAquL,MAAMjc,KAAK,CAAEoe,MAAM,CAAE,CACnB,GAAI,CAACpe,KAAAA,CAAMpyK,QAAQ,CAAE,CACnB,MACF,CACA,GAAIoyK,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAAE,CACzB,GAAI96J,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAACY,SAAS,GAAKvtX,SAAAA,CAAW6xN,KAAM3/M,CAAAA,IAAI,CAACq7W,SAAS,CAAG17J,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAACY,SAAS,CACzG,GAAI17J,KAAMpyK,CAAAA,QAAQ,CAACktU,MAAM,CAACa,SAAS,GAAKxtX,SAAW6xN,CAAAA,KAAAA,CAAM3/M,IAAI,CAACs7W,SAAS,CAAG37J,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAACa,SAAS,CACzG,GAAI37J,KAAMpyK,CAAAA,QAAQ,CAACktU,MAAM,CAACxR,QAAQ,GAAKn7W,SAAAA,CAAW6xN,KAAM3/M,CAAAA,IAAI,CAACipW,QAAQ,CAAGtpJ,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAACxR,QAAQ,CACtG,GAAItpJ,KAAMpyK,CAAAA,QAAQ,CAACktU,MAAM,CAACvR,QAAQ,GAAKp7W,SAAW6xN,CAAAA,KAAAA,CAAM3/M,IAAI,CAACkpW,QAAQ,CAAGvpJ,MAAMpyK,QAAQ,CAACktU,MAAM,CAACvR,QAAQ,CACtG,GAAIvpJ,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAACjpV,OAAO,GAAK1jC,SAAAA,CAAW6xN,KAAM3/M,CAAAA,IAAI,CAACwxB,OAAO,CAAGmuL,KAAMpyK,CAAAA,QAAQ,CAACktU,MAAM,CAACjpV,OAAO,CACnG,GAAImuL,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAAC/lV,UAAU,GAAK5mC,UAAW6xN,KAAM3/M,CAAAA,IAAI,CAAC00B,UAAU,CAAGirL,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAAC/lV,UAAU,CAC5G,GAAIirL,KAAAA,CAAMpyK,QAAQ,CAACktU,MAAM,CAACvS,IAAI,GAAKp6W,SAAAA,CAAW6xN,KAAM3/M,CAAAA,IAAI,CAACkoW,IAAI,CAAG,CAAC,CAACvoJ,KAAMpyK,CAAAA,QAAQ,CAACktU,MAAM,CAACvS,IAAI,CAC5FvoJ,KAAAA,CAAM3/M,IAAI,CAAC+kM,MAAM,CAAG4a,KAAMpyK,CAAAA,QAAQ,CAACktU,MAAM,CAAC11K,MAC1C,CAAO4a,OAAAA,KAAAA,CAAMpyK,QAAQ,CAACktU,OAAM,CAE9B,MAAM3iV,OAAAA,CAAU6nL,KAAMpyK,CAAAA,QAAQ,CAACzV,OAAO,CACtC,GAAIA,OAAAA,CAAS,CACXA,OAAAA,CAAQxuC,IAAI,CAAGq2N,KAAMr2N,CAAAA,IAAI,CACzB,GAAIq2N,KAAAA,CAAM3/M,IAAI,CAAC3N,cAAc,CAAC,WAAgBylC,CAAAA,EAAAA,OAAAA,CAAQpE,SAAS,GAAKunV,kBAAkB,CAACt7J,KAAM3/M,CAAAA,IAAI,CAACq7W,SAAS,CAAC,CAAE,CAC5GvjV,OAAQpE,CAAAA,SAAS,CAAGunV,kBAAkB,CAACt7J,KAAAA,CAAM3/M,IAAI,CAACq7W,SAAS,EAC7D,CACA,GAAI17J,KAAM3/M,CAAAA,IAAI,CAAC3N,cAAc,CAAC,WAAgBylC,CAAAA,EAAAA,OAAAA,CAAQjE,SAAS,GAAKonV,kBAAkB,CAACt7J,MAAM3/M,IAAI,CAACs7W,SAAS,CAAC,CAAE,CAC5GxjV,OAAQjE,CAAAA,SAAS,CAAGonV,kBAAkB,CAACt7J,KAAM3/M,CAAAA,IAAI,CAACs7W,SAAS,EAC7D,CACA,GAAI37J,KAAAA,CAAM3/M,IAAI,CAAC3N,cAAc,CAAC,UAAeylC,CAAAA,EAAAA,OAAAA,CAAQ/D,QAAQ,GAAKinV,mBAAmB,CAACr7J,KAAAA,CAAM3/M,IAAI,CAACipW,QAAQ,CAAC,CAAE,CAC1GnxU,OAAQ/D,CAAAA,QAAQ,CAAGinV,mBAAmB,CAACr7J,KAAAA,CAAM3/M,IAAI,CAACipW,QAAQ,EAC5D,CACA,GAAItpJ,KAAM3/M,CAAAA,IAAI,CAAC3N,cAAc,CAAC,UAAeylC,CAAAA,EAAAA,OAAAA,CAAQ7D,QAAQ,GAAK+mV,mBAAmB,CAACr7J,MAAM3/M,IAAI,CAACkpW,QAAQ,CAAC,CAAE,CAC1GpxU,OAAQ7D,CAAAA,QAAQ,CAAG+mV,mBAAmB,CAACr7J,KAAM3/M,CAAAA,IAAI,CAACkpW,QAAQ,EAC5D,CACA,GAAIvpJ,KAAAA,CAAM3/M,IAAI,CAAC3N,cAAc,CAAC,SAAcylC,CAAAA,EAAAA,OAAAA,CAAQtG,OAAO,GAAKmuL,KAAAA,CAAM3/M,IAAI,CAACwxB,OAAO,CAAE,CAClFsG,OAAAA,CAAQtG,OAAO,CAAGmuL,KAAAA,CAAM3/M,IAAI,CAACwxB,QAC/B,CACA,GAAImuL,KAAM3/M,CAAAA,IAAI,CAAC3N,cAAc,CAAC,YAAA,CAAA,EAAiBylC,OAAQpD,CAAAA,UAAU,GAAKirL,KAAM3/M,CAAAA,IAAI,CAAC00B,UAAU,CAAE,CAC3FoD,OAAQpD,CAAAA,UAAU,CAAGirL,KAAM3/M,CAAAA,IAAI,CAAC00B,WAAU,CAE5C,GAAIirL,KAAAA,CAAM3/M,IAAI,CAAC3N,cAAc,CAAC,MAAA,CAAA,CAAS,CACrC,MAAMoL,IAAOkiN,CAAAA,KAAAA,CAAM3/M,IAAI,CAACkoW,IAAI,CAAGxhV,gBAAAA,CAAmBD,mBAClD,CAAA,GAAIqR,OAAQr6B,CAAAA,IAAI,GAAKA,IAAM,CAAA,CACzBq6B,OAAQr6B,CAAAA,IAAI,CAAGA,KACjB,CACF,CACF,CACAkiN,KAAMpyK,CAAAA,QAAQ,CAACzV,OAAO,CAAGA,OAAAA,CACzB,MAAMitK,MAAAA,CAAS,EACf,CAAA,IAAI,MAAMl3M,GAAAA,IAAO8xN,KAAM3/M,CAAAA,IAAI,CAAC+kM,MAAM,CAAC,CACjC,MAAMD,KAAAA,CAAQ6a,KAAM3/M,CAAAA,IAAI,CAAC+kM,MAAM,CAACl3M,GAAI,CACpCk3M,CAAAA,MAAM,CAACl3M,GAAAA,CAAI,CAAG,CACZ45C,KAAM,IAAIt/B,IAAAA,CAAK28L,KAAMr9J,CAAAA,IAAI,CACzB09J,CAAAA,KAAAA,CAAO,IAAIt9L,IAAAA,CAAKi9L,MAAMK,KAAK,CAAA,CAC3BU,MAAQ,CAAA,IAAI19L,IAAK28L,CAAAA,KAAAA,CAAMe,MAAM,CAC/B,EACF,CACA8Z,KAAAA,CAAMpyK,QAAQ,CAACw3J,MAAM,CAAGA,MACxB4a,CAAAA,KAAAA,CAAM1yN,GAAG,CAAC,QAAA,CAAU,IAAI,CAACq5O,cAAc,CAAE,IAAI,CAAA,CAC7C3mB,MAAMtyN,EAAE,CAAC,QAAU,CAAA,IAAI,CAACi5O,cAAc,CAAE,IAAI,EAC9C,CACAA,cAAAA,CAAe3mB,KAAK,CAAEqiD,SAAS,CAAEr0Q,KAAK,CAAE,CACtC,IAAIm3M,KACJ,CAAA,GAAIk9D,SAAc,GAAA,MAAA,EAAUA,SAAc,GAAA,aAAA,CAAe,CACvD,MAAMj9D,MAAAA,CAAS,EAAC,CAChB,IAAI,MAAMl3M,GAAOF,IAAAA,KAAAA,CAAMo3M,MAAM,CAAC,CAC5BD,KAAQn3M,CAAAA,KAAAA,CAAMo3M,MAAM,CAACl3M,GAAI,CACzBk3M,CAAAA,MAAM,CAACl3M,GAAI,CAAA,CAAG,CACZ45C,IAAAA,CAAM,IAAIt/B,IAAAA,CAAK28L,MAAMr9J,IAAI,CAAA,CACzB09J,KAAO,CAAA,IAAIt9L,IAAKi9L,CAAAA,KAAAA,CAAMK,KAAK,CAAA,CAC3BU,OAAQ,IAAI19L,IAAAA,CAAK28L,KAAMe,CAAAA,MAAM,CAC/B,EACF,CACA8Z,KAAAA,CAAMpyK,QAAQ,CAACw3J,MAAM,CAAGA,OAC1B,CAAO,KAAA,CACL,MAAMt9M,KAAAA,CAAQu6Q,UAAUv6Q,KAAK,CAACyzX,UAC9B,CAAA,CAAA,GAAIzzX,KAAO,CAAA,CACT,MAAM+9M,QAAAA,CAAW/9M,KAAK,CAAC,CAAA,CAAE,CACzB,GAAIkG,KAAO,CAAA,CACT,GAAI,CAACgyN,MAAMpyK,QAAQ,CAACw3J,MAAM,CAACS,QAAS,CAAA,CAAE,CACpCma,KAAAA,CAAMpyK,QAAQ,CAACw3J,MAAM,CAACS,QAAAA,CAAS,CAAG,CAChC/9J,IAAM,CAAA,IAAIt/B,KAAKxa,KAAM85C,CAAAA,IAAI,CACzB09J,CAAAA,KAAAA,CAAO,IAAIt9L,IAAAA,CAAKla,KAAMw3M,CAAAA,KAAK,EAC3BU,MAAQ,CAAA,IAAI19L,IAAKxa,CAAAA,KAAAA,CAAMk4M,MAAM,CAC/B,EACF,CAAA,KAAO,CACLf,KAAQ6a,CAAAA,KAAAA,CAAMpyK,QAAQ,CAACw3J,MAAM,CAACS,QAAS,CAAA,CACvCV,MAAMr9J,IAAI,CAACl5C,GAAG,CAACZ,KAAM85C,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAE95C,KAAM85C,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAE95C,KAAAA,CAAM85C,IAAI,CAAC,CAAE,CAAA,CAAE95C,KAAM85C,CAAAA,IAAI,CAAC,CAAA,CAAE,CACzEq9J,CAAAA,KAAAA,CAAMK,KAAK,CAAC52M,GAAG,CAACZ,KAAAA,CAAMw3M,KAAK,CAAC,CAAE,CAAA,CAAEx3M,MAAMw3M,KAAK,CAAC,CAAE,CAAA,CAAA,CAC9CL,KAAMe,CAAAA,MAAM,CAACt3M,GAAG,CAACZ,KAAMk4M,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAEl4M,KAAAA,CAAMk4M,MAAM,CAAC,EAAE,CAAEl4M,KAAAA,CAAMk4M,MAAM,CAAC,CAAE,CAAA,CAAEl4M,KAAMk4M,CAAAA,MAAM,CAAC,CAAE,CAAA,EACrF,CACA8Z,KAAAA,CAAMpyK,QAAQ,CAACr+C,IAAI,CAAC,YAAas2M,QAAUma,CAAAA,KAAAA,CAAMpyK,QAAQ,CAACw3J,MAAM,CAACS,QAAS,CAAA,EAC5E,MAAO,CACL,GAAIma,KAAMpyK,CAAAA,QAAQ,CAACw3J,MAAM,CAACS,QAAAA,CAAS,CAAE,CACnC,OAAOma,KAAAA,CAAMpyK,QAAQ,CAACw3J,MAAM,CAACS,SAAS,CACtCma,KAAAA,CAAMpyK,QAAQ,CAACr+C,IAAI,CAAC,cAAgBs2M,CAAAA,QAAAA,EACtC,CACF,CACF,CACF,CACF,CAnJAz3M,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,CAACA,GAAAA,CAAK,cACX,CAAA,CAAA,IAAI,CAACkF,OAAO,CAAGlF,IAAIqK,OACrB,CAiJF,CAEA,SAASk7I,WAAAA,EAAAA,CACP,MAAMC,YAAAA,CAAe,CACnBC,OAAS,CAAA,CAAA,CACTC,OAAS,CAAA,CAAA,CACTC,MAAQ,CAAA,CAAA,CACRC,MAAQ,CAAA,CAAA,CACRC,gBAAiB,CACjBC,CAAAA,gBAAAA,CAAkB,CAClBC,CAAAA,WAAAA,CAAa,EACbC,CAAAA,UAAAA,CAAY,EACZC,CAAAA,8BAAAA,CAAgC,GAChCC,SAAW,CAAA,EAAA,CACXC,SAAW,CAAA,EAAA,CACXC,WAAa,CAAA,EACf,CACA,CAAA,MAAMC,aAAgB,CAAA,CACpBC,IAAMd,CAAAA,YAAAA,CAAaO,WAAW,CAC9BrhJ,GAAK8gJ,CAAAA,YAAAA,CAAaG,MAAM,CACxB/gJ,IAAAA,CAAM4gJ,YAAaC,CAAAA,OAAO,CAC1B9gJ,IAAAA,CAAM6gJ,YAAaC,CAAAA,OAAO,CAC1BhhJ,GAAK+gJ,CAAAA,YAAAA,CAAaK,eAAe,CACjCU,GAAKf,CAAAA,YAAAA,CAAaQ,UAAU,CAC5BQ,KAAMhB,YAAaW,CAAAA,SAAS,CAC9B,CACA,MAAMM,YAAAA,CAAe,CACnBH,IAAAA,CAAMd,aAAaO,WAAW,CAC9BrhJ,GAAK8gJ,CAAAA,YAAAA,CAAaI,MAAM,CACxBhhJ,IAAM4gJ,CAAAA,YAAAA,CAAaY,WAAW,CAC9BzhJ,IAAAA,CAAM6gJ,YAAaE,CAAAA,OAAO,CAC1BjhJ,GAAAA,CAAK+gJ,YAAaM,CAAAA,gBAAgB,CAClCS,GAAKf,CAAAA,YAAAA,CAAaS,8BAA8B,CAChDO,IAAMhB,CAAAA,YAAAA,CAAaY,WACrB,EACA,MAAMM,YAAAA,CAAe,CACnBC,IAAAA,CAAM,EACNC,CAAAA,QAAAA,CAAU,EACVC,CAAAA,SAAAA,CAAW,EACXC,CAAAA,IAAAA,CAAM,CACNC,CAAAA,IAAAA,CAAM,EACNC,CAAAA,gBAAAA,CAAkB,EAClBC,CAAAA,iBAAAA,CAAmB,GACnBC,QAAU,CAAA,EAAA,CACVC,OAAS,CAAA,EAAA,CACTC,QAAU,CAAA,EAAA,CACVC,WAAa,CAAA,CAAA,CACbC,SAAU,CACVC,CAAAA,WAAAA,CAAa,CACf,CAAA,CACA,MAAMC,oBAAAA,CAAuB,CAACC,WAAAA,CAAaC,iBACzC,OAAOD,WAAAA,EACL,KAAKjC,YAAAA,CAAaC,OAAO,CACvB,OAAOiC,aAAAA,CAAc7tV,OAAO,CAAC8qM,IAAI,CAAG+hJ,YAAAA,CAAaE,QAAQ,CAAGF,YAAaC,CAAAA,IAAI,CAC1EnB,KAAAA,YAAAA,CAAaE,OAAO,CACvB,OAAOgB,YAAAA,CAAaG,SACtB,MAAKrB,YAAaG,CAAAA,MAAM,CACtB,OAAOe,YAAaI,CAAAA,IAAI,CAC1B,KAAKtB,aAAaI,MAAM,CACtB,OAAOc,YAAAA,CAAaK,IACtB,CAAKvB,KAAAA,YAAAA,CAAaK,eAAe,CAC/B,OAAOa,YAAAA,CAAaM,gBACtB,CAAKxB,KAAAA,YAAAA,CAAaM,gBAAgB,CAChC,OAAOY,YAAaO,CAAAA,iBAAiB,CACvC,KAAKzB,YAAaO,CAAAA,WAAW,CAC3B,OAAOW,YAAAA,CAAaQ,QACtB,CAAK1B,KAAAA,YAAAA,CAAaQ,UAAU,CAC1B,OAAOU,YAAaS,CAAAA,OAAO,CAC7B,KAAK3B,YAAaS,CAAAA,8BAA8B,CAC9C,OAAOS,aAAaU,QACtB,CAAK5B,KAAAA,YAAAA,CAAaU,SAAS,CACzB,OAAOQ,YAAAA,CAAaW,WAAW,CACjC,KAAK7B,YAAaW,CAAAA,SAAS,CACzB,OAAOO,YAAaY,CAAAA,QAAQ,CACzB9B,KAAAA,YAAAA,CAAaY,WAAW,CAC3B,OAAOM,YAAAA,CAAaa,WACxB,CACF,CACA,CAAA,MAAMI,aAAgB,CAAC39W,IACrB,EAAA,CAAA,MAAM49W,IAAO,CAAA,SAASC,CAAC,CAAEC,CAAC,CAAA,CACxB,MAAMx4X,CAAAA,CAAIu4X,CAAK,EAAA,EAAM,GAAI,CAAA,CAAK,CAC9B,CAAA,MAAMhkX,CAAIikX,CAAAA,CAAAA,EAAK,CAAA,CAAM,GAAI,CAAK,CAAA,CAAA,CAC9B,MAAMjoX,CAAAA,CAAItQ,IAAKud,CAAAA,IAAI,CAAC,CAAA,CAAMvd,KAAKmU,GAAG,CAAC,CAAKpU,CAAAA,CAAAA,CAAIA,CAAIuU,CAAAA,CAAAA,CAAIA,CACpD,CAAA,CAAA,CAAA,OAAOtU,KAAKoU,GAAG,CAAC,CAAGpU,CAAAA,IAAAA,CAAKmU,GAAG,CAAC,GAAKnU,CAAAA,IAAAA,CAAKmQ,KAAK,CAAEG,CAAAA,CAAAA,CAAI,CAAE,EAAK,EAAM,CAAA,GAAA,CAAA,CAAA,CAChE,EACA,IAAI,IAAInC,MAAS,CAAA,CAAA,CAAGA,MAASsM,CAAAA,IAAAA,CAAK/Z,MAAM,CAAEyN,QAAU,CAAE,CAAA,CACpD,MAAMmqX,CAAAA,CAAI79W,IAAI,CAACtM,MAAS,CAAA,CAAA,CAAE,CAC1B,MAAMoqX,CAAI99W,CAAAA,IAAI,CAACtM,MAAAA,CAAS,CAAE,CAC1BsM,CAAAA,IAAI,CAACtM,MAAS,CAAA,CAAA,CAAE,CAAGmqX,CACnB79W,CAAAA,IAAI,CAACtM,MAAS,CAAA,CAAA,CAAE,CAAGkqX,IAAAA,CAAKC,CAAGC,CAAAA,CAAAA,CAC3B99W,CAAAA,IAAI,CAACtM,MAAS,CAAA,CAAA,CAAE,CAAG,IACrB,CACA,OAAOsM,IACT,CAAA,CACA,MAAM+9W,OAAU,CAAC/9W,IACf,EAAA,CAAA,MAAMja,MAAS,CAAA,IAAIs9B,WAAYrjB,CAAAA,IAAAA,CAAK/Z,MAAM,CAAG,CAAA,CAAA,CAC7C,IAAI,IAAIyN,MAAS,CAAA,CAAA,CAAGA,MAASsM,CAAAA,IAAAA,CAAK/Z,MAAM,CAAEyN,MAAAA,EAAU,CAAE,CAAA,CACpD,MAAMmqX,CAAAA,CAAI79W,IAAI,CAACtM,OAAS,CAAE,CAAA,CAC1B,MAAMoqX,CAAAA,CAAI99W,IAAI,CAACtM,MAAS,CAAA,CAAA,CAAE,CAC1B,MAAM0zL,CAAAA,CAAIpnL,IAAI,CAACtM,MAAS,CAAA,CAAA,CAAE,CAC1B3N,MAAM,CAAC2N,MAAAA,CAAS,CAAE,CAAA,CAAG,CAACmqX,CAAI,CAAA,GAAG,GAAM,CAAI,CAACC,CAAAA,CAAAA,CAAI,GAAG,GAAM,CAAI12L,CAAAA,CAAAA,EAAK,EAChE,CACA,OAAOrhM,MACT,CAAA,CACA,MAAMi4X,KAAAA,CAAQ,CAACryW,KAAAA,CAAOC,UACpB,OAAQD,CAAAA,KAAAA,CAAQA,KAAQ,CAAA,CAAA,IAAO,CAAA,EAAK,CAACC,MAAAA,CAASA,MAAS,CAAA,CAAA,IAAO,CAChE,CACA,CAAA,MAAMqyW,eAAiB,IACrB,CAAA,OAAO,OAAO3mX,WAAAA,GAAgB,WAAcA,CAAAA,WAAAA,CAAYD,GAAG,EAAA,CAAK,CAClE,CACA,CAAA,IAAIwjO,KACJ,CAAA,IAAIqjJ,WACJ,CAAA,IAAIC,YACJ,CAAA,MAAMC,kBAAqB,CAAA,CAACV,aAAeW,CAAAA,QAAAA,CAAUC,OACnD,GAAA,CAAA,GAAIA,OAAS,CAAA,CACX,GAAIZ,aAAc7tV,CAAAA,OAAO,CAACysV,IAAI,CAAE,CAC9B,OAAO,MACT,CACF,CAAO,KAAA,CACL,GAAI+B,QAAAA,CAAU,CACZ,GAAIX,aAAc7tV,CAAAA,OAAO,CAAC8qM,IAAI,CAAE,CAC9B,OAAO,MACT,CACF,CAAO,KAAA,CACL,GAAI+iJ,aAAc7tV,CAAAA,OAAO,CAAC8qM,IAAI,CAAE,CAC9B,OAAO,MACT,CACA,GAAI+iJ,aAAAA,CAAc7tV,OAAO,CAAC+qM,IAAI,CAAE,CAC9B,OAAO,MACT,CACF,CACF,CACA,MAAM2jJ,WAAc,CAACx3M,QACnB,EAAA,CAAA,IAAI,IAAI/gL,CAAI,CAAA,CAAA,CAAGA,CAAI+gL,CAAAA,QAAAA,CAAS9gL,MAAM,CAAE,EAAED,CAAAA,CAAE,CACtC,MAAM8F,MAASi7K,CAAAA,QAAQ,CAAC/gL,CAAAA,CAAE,CAC1B,GAAI03X,cAAc7tV,OAAO,CAAC/jC,MAAO,CAAA,CAAE,CACjC,OAAOA,MACT,CACF,CACA,OAAO,MACT,CACA,CAAA,OAAOyyX,WAAYF,CAAAA,QAAAA,CAAWF,YAAeD,CAAAA,WAAAA,CAC/C,EACA,MAAMM,eAAAA,CAAkB,CAAC7yW,KAAAA,CAAOC,MAAQ9f,CAAAA,MAAAA,GAAAA,CACtC,OAAOA,MAAAA,EACL,KAAK0vX,YAAaC,CAAAA,OAAO,CACzB,KAAKD,YAAaE,CAAAA,OAAO,CACvB,OAAO,IACT,CAAKF,KAAAA,YAAAA,CAAaG,MAAM,CACxB,KAAKH,YAAAA,CAAaI,MAAM,CACtB,OAAO,CAACjwW,KAAQ,CAAA,CAAE,IAAO,CAAA,EAAK,CAACC,OAAS,CAAE,IAAO,CACnD,CAAA,KAAK4vW,YAAaK,CAAAA,eAAe,CACjC,KAAKL,YAAaM,CAAAA,gBAAgB,CAChC,OAAOkC,KAAMryW,CAAAA,KAAAA,CAAOC,MACtB,CAAA,CAAA,KAAK4vW,aAAaO,WAAW,CAC3B,OAAO,IACT,CAAKP,KAAAA,YAAAA,CAAaQ,UAAU,CAC5B,KAAKR,YAAaS,CAAAA,8BAA8B,CAC9C,OAAO,IACX,CACA,OAAO,KACT,EACA,MAAMwC,aAAAA,CAAgB,CAAC5tX,GAAAA,CAAKmP,IAAMvI,CAAAA,OAAAA,GAAAA,CAChC,GAAI,CAACojO,MAAM6jJ,QAAQ,CAAE,CACnB,MAAM,IAAIxuX,KAAAA,CAAM,4DAClB,CAAA,CACA,MAAMyuX,SAAYV,CAAAA,cAAAA,EAAAA,CAClB,MAAMW,SAAAA,CAAY,IAAI/jJ,KAAAA,CAAM6jJ,QAAQ,CAAC,IAAI3rX,UAAWiN,CAAAA,IAAAA,CAAAA,CAAAA,CACpD,MAAM2L,KAAAA,CAAQizW,SAAUC,CAAAA,QAAQ,EAChC,CAAA,MAAMjzW,OAASgzW,SAAUE,CAAAA,SAAS,EAClC,CAAA,MAAMroV,MAASmoV,CAAAA,SAAAA,CAAUG,SAAS,EAAA,CAClC,MAAMV,QAAAA,CAAW,CAAC,CAACO,SAAUI,CAAAA,WAAW,EACxC,CAAA,MAAMV,QAAUM,SAAUN,CAAAA,OAAO,EAAIM,SAAAA,CAAUN,OAAO,EAAA,CACtD,GAAI,CAAC3yW,OAAS,CAACC,MAAAA,EAAU,CAAC6qB,MAAAA,CAAQ,CAChCmoV,SAAAA,CAAUxsQ,KAAK,EAAA,CACfwsQ,UAAU/vX,MAAM,EAChB,CAAM,MAAA,IAAIqB,KAAM,CAAA,CAAC,6BAA6B,EAAEW,IAAI,OAAO,EAAE8a,KAAM,CAAA,QAAQ,EAAEC,MAAAA,CAAO,QAAQ,EAAE6qB,OAAO,CAAC,CACxG,CACA,MAAM3qC,MAASsyX,CAAAA,kBAAAA,CAAmB3mX,OAAQimX,CAAAA,aAAa,CAAEW,QAAUC,CAAAA,OAAAA,CAAAA,CACnE,MAAMW,SAAAA,CAAY,CAAC,CAACxnX,OAAQynX,CAAAA,MAAM,EAAIpzX,MAAW,GAAA,KAAA,CACjD,IAAI2xX,WAAAA,CACJ,GAAIwB,SAAAA,CAAW,CACbxB,WAAAA,CAAcjC,YAAaU,CAAAA,UAAS,CACtC,KAAO,CACLuB,WAAAA,CAAcY,QAAW5B,CAAAA,YAAY,CAAC3wX,MAAO,CAAA,CAAGuwX,aAAa,CAACvwX,MAAO,CAAA,CACrE,GAAI,CAAC0yX,gBAAgB7yW,KAAOC,CAAAA,MAAAA,CAAQ6xW,WAAc,CAAA,CAAA,CAChDA,WAAcY,CAAAA,QAAAA,CAAW7C,YAAaU,CAAAA,SAAS,CAAGV,YAAaW,CAAAA,UAAS,CAE5E,CACA,GAAI,CAACyC,SAAAA,CAAUO,gBAAgB,EAAI,CAAA,CACjCP,SAAUxsQ,CAAAA,KAAK,EACfwsQ,CAAAA,SAAAA,CAAU/vX,MAAM,EAChB,OAAM,IAAIqB,KAAAA,CAAM,CAAC,gCAAgC,EAAEW,GAAAA,CAAI,CAAC,CAC1D,CACA,IAAI7K,CAAAA,CACJ,MAAMo5X,SAAAA,CAAY,EAAE,CACpB,IAAI,IAAIj3T,IAAM,CAAGA,CAAAA,GAAAA,CAAM1xB,MAAQ,CAAA,EAAE0xB,GAAI,CAAA,CACnC,MAAMk3T,OAAAA,CAAUT,SAAUU,CAAAA,6BAA6B,CAACn3T,GAAAA,CAAK,CAAG,CAAA,CAAA,CAAGs1T,WACnE,CAAA,CAAA,MAAMh5W,IAAM,IAAI1R,UAAAA,CAAWssX,OAC3B,CAAA,CAAA,GAAI,CAACT,SAAAA,CAAUW,cAAc,CAAC96W,IAAK0jD,GAAK,CAAA,CAAA,CAAG,CAAGs1T,CAAAA,WAAAA,CAAa,CAAG,CAAA,CAAC,CAAG,CAAA,CAAC,GAAI,CACrEmB,SAAAA,CAAUxsQ,KAAK,EAAA,CACfwsQ,SAAU/vX,CAAAA,MAAM,EAChB,CAAA,MAAM,IAAIqB,KAAM,CAAA,CAAC,8BAA8B,EAAEW,GAAI,CAAA,CAAC,CACxD,CACA,MAAM2uX,aAAgB/B,CAAAA,WAAAA,GAAgBjC,YAAaW,CAAAA,SAAS,EAAIsB,WAAAA,GAAgBjC,YAAaY,CAAAA,WAAW,CACxGgD,SAAUt4X,CAAAA,IAAI,CAAC04X,aAAAA,CAAgB,IAAIn8V,WAAAA,CAAY5e,GAAI/D,CAAAA,MAAM,EAAI+D,GAC/D,EAAA,CACAm6W,SAAUxsQ,CAAAA,KAAK,EACfwsQ,CAAAA,SAAAA,CAAU/vX,MAAM,EAAA,CAChB,GAAIowX,SAAAA,CAAW,CACbxB,WAAAA,CAAcjC,YAAaW,CAAAA,SAAS,CACpC,IAAIn2X,EAAI,CAAGA,CAAAA,CAAAA,CAAIo5X,SAAUn5X,CAAAA,MAAM,CAAE,EAAED,CAAE,CAAA,CACnCo5X,SAAS,CAACp5X,CAAAA,CAAE,CAAG+3X,OAAAA,CAAQJ,aAAcyB,CAAAA,SAAS,CAACp5X,CAAAA,CAAE,GACnD,CACF,CACA,OAAO,CACL8F,MAAQ0xX,CAAAA,oBAAAA,CAAqBC,WAAahmX,CAAAA,OAAAA,CAAQimX,aAAa,CAC/D/xW,CAAAA,KAAAA,CAAOA,KACPC,CAAAA,MAAAA,CAAQA,MACR6qB,CAAAA,MAAAA,CAAQ2oV,SACR3tV,CAAAA,OAAAA,CAAS,MACTguV,aAAexB,CAAAA,cAAAA,EAAAA,CAAmBU,SAClC9tX,CAAAA,GAAAA,CAAKA,GACL6uX,CAAAA,cAAAA,CAAgBT,SAClB,CACF,EACA,MAAMU,cAAAA,CAAiB,CAAC9uX,GAAAA,CAAKmP,IAAMvI,CAAAA,OAAAA,GAAAA,CACjC,MAAMknX,SAAAA,CAAYV,iBAClB,MAAMW,SAAAA,CAAY,IAAI/jJ,KAAAA,CAAM+kJ,SAAS,CAAC,IAAI7sX,UAAAA,CAAWiN,OACrD,MAAM2L,KAAAA,CAAQizW,SAAUiB,CAAAA,aAAa,CAAC,CAAA,CAAG,CACzC,CAAA,CAAA,MAAMj0W,OAASgzW,SAAUkB,CAAAA,cAAc,CAAC,CAAA,CAAG,CAC3C,CAAA,CAAA,MAAM5e,MAAS0d,CAAAA,SAAAA,CAAUmB,YAAY,EACrC,CAAA,MAAMtpV,MAASmoV,CAAAA,SAAAA,CAAUoB,YAAY,CAAC,CACtC,CAAA,CAAA,MAAM3B,SAAW,CAAC,CAACO,SAAUI,CAAAA,WAAW,EACxC,CAAA,MAAMV,OAAUM,CAAAA,SAAAA,CAAUN,OAAO,EAAIM,SAAAA,CAAUN,OAAO,EAAA,CACtD,GAAI,CAAC3yW,KAAS,EAAA,CAACC,QAAU,CAACs1V,MAAAA,EAAU,CAACzqU,MAAAA,CAAQ,CAC3CmoV,SAAAA,CAAUxsQ,KAAK,EAAA,CACfwsQ,UAAU/vX,MAAM,EAChB,CAAM,MAAA,IAAIqB,KAAM,CAAA,CAAC,6BAA6B,EAAEW,IAAI,OAAO,EAAE8a,KAAM,CAAA,QAAQ,EAAEC,MAAAA,CAAO,QAAQ,EAAEs1V,MAAO,CAAA,QAAQ,EAAEzqU,MAAAA,CAAO,CAAC,CACzH,CACA,MAAM3qC,OAASsyX,kBAAmB3mX,CAAAA,OAAAA,CAAQimX,aAAa,CAAEW,QAAUC,CAAAA,OAAAA,CAAAA,CACnE,MAAMW,SAAAA,CAAY,CAAC,CAACxnX,OAAAA,CAAQynX,MAAM,EAAIpzX,MAAW,GAAA,KAAA,CACjD,IAAI2xX,WAAAA,CACJ,GAAIwB,SAAW,CAAA,CACbxB,WAAcjC,CAAAA,YAAAA,CAAaU,UAC7B,CAAO,KAAA,CACLuB,YAAcY,QAAW5B,CAAAA,YAAY,CAAC3wX,MAAAA,CAAO,CAAGuwX,aAAa,CAACvwX,MAAAA,CAAO,CACrE,GAAI,CAAC0yX,eAAgB7yW,CAAAA,KAAAA,CAAOC,MAAQ6xW,CAAAA,WAAAA,CAAAA,CAAc,CAChDA,WAAAA,CAAcY,SAAW7C,YAAaU,CAAAA,SAAS,CAAGV,YAAAA,CAAaW,UACjE,CACF,CACA,GAAI,CAACyC,SAAAA,CAAUO,gBAAgB,EAAA,CAAI,CACjCP,SAAAA,CAAUxsQ,KAAK,EAAA,CACfwsQ,SAAU/vX,CAAAA,MAAM,EAChB,CAAA,MAAM,IAAIqB,KAAAA,CAAM,CAAC,gCAAgC,EAAEW,GAAI,CAAA,CAAC,CAC1D,CACA,IAAI7K,CAAAA,CACJ,MAAMo5X,SAAAA,CAAY,EAAE,CACpB,IAAI,IAAIj3T,GAAAA,CAAM,CAAGA,CAAAA,GAAAA,CAAM1xB,MAAQ,CAAA,EAAE0xB,IAAI,CACnC,MAAMk3T,OAAUT,CAAAA,SAAAA,CAAUU,6BAA6B,CAAC,CAAGn3T,CAAAA,GAAAA,CAAKs1T,aAChE,MAAMh5W,GAAAA,CAAM,IAAI1R,UAAAA,CAAWssX,OAC3B,CAAA,CAAA,GAAI,CAACT,SAAAA,CAAUW,cAAc,CAAC96W,GAAAA,CAAK,CAAG0jD,CAAAA,GAAAA,CAAKs1T,WAAa,CAAA,CAAA,CAAG,CAAI,CAAA,CAAA,CAC7D,GAAIt1T,GAAQ1xB,GAAAA,MAAAA,CAAS,CAAK4oV,EAAAA,OAAAA,GAAYD,SAAS,CAACj3T,GAAM,CAAA,CAAA,CAAE,CAACznD,MAAM,CAACjN,UAAU,CAAE,CAC1EgR,GAAAA,CAAIlW,GAAG,CAAC,IAAIwE,UAAAA,CAAWqsX,SAAS,CAACj3T,GAAM,CAAA,CAAA,CAAE,CAACznD,MAAM,GAChDjO,OAAQqyO,CAAAA,IAAI,CAAC,CAAC,wEAAwE,EAAEj0O,GAAI,CAAA,CAAC,EAC/F,CAAO,KAAA,CACL+tX,SAAUxsQ,CAAAA,KAAK,EACfwsQ,CAAAA,SAAAA,CAAU/vX,MAAM,EAChB,OAAM,IAAIqB,KAAAA,CAAM,CAAC,8BAA8B,EAAEW,GAAAA,CAAI,CAAC,CACxD,CACF,CACA,MAAM2uX,aAAgB/B,CAAAA,WAAAA,GAAgBjC,YAAaW,CAAAA,SAAS,EAAIsB,WAAAA,GAAgBjC,aAAaY,WAAW,CACxGgD,SAAUt4X,CAAAA,IAAI,CAAC04X,aAAAA,CAAgB,IAAIn8V,WAAAA,CAAY5e,IAAI/D,MAAM,CAAA,CAAI+D,GAC/D,EAAA,CACAm6W,SAAUxsQ,CAAAA,KAAK,EACfwsQ,CAAAA,SAAAA,CAAU/vX,MAAM,EAChB,CAAA,GAAIowX,SAAW,CAAA,CACbxB,WAAcjC,CAAAA,YAAAA,CAAaW,SAAS,CACpC,IAAIn2X,CAAI,CAAA,CAAA,CAAGA,CAAIo5X,CAAAA,SAAAA,CAAUn5X,MAAM,CAAE,EAAED,CAAAA,CAAE,CACnCo5X,SAAS,CAACp5X,CAAE,CAAA,CAAG+3X,OAAQJ,CAAAA,aAAAA,CAAcyB,SAAS,CAACp5X,EAAE,CACnD,EAAA,CACF,CACA,OAAO,CACL8F,MAAAA,CAAQ0xX,oBAAqBC,CAAAA,WAAAA,CAAahmX,QAAQimX,aAAa,CAAA,CAC/D/xW,KAAOA,CAAAA,KAAAA,CACPC,MAAQA,CAAAA,MAAAA,CACR6qB,MAAQ2oV,CAAAA,SAAAA,CACR3tV,QAAS,KACTguV,CAAAA,aAAAA,CAAexB,cAAmBU,EAAAA,CAAAA,SAAAA,CAClC9tX,GAAKA,CAAAA,GAAAA,CACL6uX,cAAgBT,CAAAA,SAClB,CACF,CACA,CAAA,MAAMgB,SAAY,CAAA,CAACpvX,GAAKmP,CAAAA,IAAAA,CAAMvI,OAC5B,GAAA,CAAA,OAAOA,QAAQyoX,MAAM,CAAGzB,aAAc5tX,CAAAA,GAAAA,CAAKmP,IAAMvI,CAAAA,OAAAA,CAAAA,CAAWkoX,cAAe9uX,CAAAA,GAAAA,CAAKmP,KAAMvI,OACxF,CAAA,CAAA,CACA,MAAM0oX,eAAAA,CAAkB,CAACtvX,GAAAA,CAAKmP,IAAMvI,CAAAA,OAAAA,GAAAA,CAClC,GAAI,CACF,MAAM1R,MAAAA,CAASk6X,SAAUpvX,CAAAA,GAAAA,CAAKmP,IAAMvI,CAAAA,OAAAA,CACpC1R,CAAAA,MAAO0wC,CAAAA,MAAM,CAAG1wC,MAAAA,CAAO0wC,MAAM,CAAC5pC,GAAG,CAAC,CAAKpH,EAAAA,CAAAA,CAAEib,MAAM,CAAA,CAC/ClX,IAAKkmO,CAAAA,WAAW,CAAC,CACf7+N,IAAKA,GACLmP,CAAAA,IAAAA,CAAMja,MACR,CAAA,CAAGA,MAAO0wC,CAAAA,MAAM,EAClB,CAAE,MAAO5kC,GAAK,CAAA,CACZrI,IAAKkmO,CAAAA,WAAW,CAAC,CACf7+N,GAAKA,CAAAA,GAAAA,CACLgB,IAAKA,GACP,CAAA,CAAG,IACL,EAAA,CACF,CACA,CAAA,MAAMuuX,UAAa,CAAA,CAAC7uX,OAAQjE,QAC1B,GAAA,CAAA,MAAM+yX,mBAAsB,CAAA,CAACjyB,OAASC,CAAAA,eAAAA,GAAAA,CACpCz7V,WAAYC,CAAAA,WAAW,CAACtB,MAAOO,CAAAA,MAAM,CAAEs8V,OAAAA,CAAAA,CAASn8V,IAAI,CAAC,MAAClM,EAAAA,CACpDsoW,eAAgBtoW,CAAAA,MAAAA,EAClB,CAAG8/F,CAAAA,CAAAA,KAAK,CAAEhkB,MACRpvE,EAAAA,CAAAA,OAAAA,CAAQC,KAAK,CAAC,CAAC,qBAAqB,EAAEmvE,MAAO,CAAA,CAAC,EAChD,CAAA,CAAA,CACA,OAAO,EACT,CACAr4E,CAAAA,IAAAA,CAAK8kH,KAAK,CAAC/8G,MAAOO,CAAAA,MAAM,CAAG,CACzBq8V,eAAAA,CAAiBkyB,mBACnB,CAAA,CAAI,IAAMpuX,CAAAA,CAAAA,IAAI,CAAEC,WACdA,QAASouX,CAAAA,eAAe,EACxBzlJ,CAAAA,KAAAA,CAAQ3oO,QACRgsX,CAAAA,WAAAA,CAAc3sX,MAAO2sX,CAAAA,WAAW,CAChCC,YAAe5sX,CAAAA,MAAAA,CAAO4sX,YAAY,CAClC7wX,QAAS,CAAA,IAAA,EACX,CACF,EAAA,CAAA,CACA,MAAM4iD,KAAQ,CAAA,EAAE,CAChB1mD,IAAKykW,CAAAA,SAAS,CAAIjkR,UAChB,MAAMhqE,IAAAA,CAAOgqE,OAAQhqE,CAAAA,IAAI,CACzB,OAAOA,IAAKvC,CAAAA,IAAI,EACd,IAAK,MACH2iX,CAAAA,UAAAA,CAAWpgX,IAAKzO,CAAAA,MAAM,CAAE,IAAA,CACtB,IAAI,IAAIvL,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkqD,KAAMjqD,CAAAA,MAAM,CAAE,EAAED,EAAE,CACnCm6X,eAAAA,CAAgBjwU,KAAK,CAAClqD,CAAE,CAAA,CAAC6K,GAAG,CAAEq/C,KAAK,CAAClqD,CAAAA,CAAE,CAACga,IAAI,CAAEkwC,KAAK,CAAClqD,CAAAA,CAAE,CAACyR,OAAO,EAC/D,CACAy4C,KAAAA,CAAMjqD,MAAM,CAAG,EACjB,CAAA,CAAA,CACA,MACG,IAAA,WAAA,CACH,GAAI40O,KAAAA,CAAO,CACTslJ,eAAAA,CAAgBngX,IAAKnP,CAAAA,GAAG,CAAEmP,IAAKA,CAAAA,IAAI,CAAEA,IAAAA,CAAKvI,OAAO,EACnD,CAAO,KAAA,CACLy4C,MAAMppD,IAAI,CAACkZ,IACb,EAAA,CACA,KACJ,CACF,EACF,CAEA,MAAMugX,qBAAwB,CAACtwV,MAC7B,EAAA,CAAA,OAAO,CACLqsV,IAAAA,CAAM,CAAC,CAACrsV,OAAOgwC,wBAAwB,CACvCs8S,GAAK,CAAA,CAAC,CAACtsV,MAAAA,CAAO6+C,uBAAuB,CACrC4rJ,IAAK,CAAC,CAACzqM,MAAO6vC,CAAAA,wBAAwB,CACtC86J,IAAAA,CAAM,CAAC,CAAC3qM,OAAOm+C,wBAAwB,CACvCusJ,IAAM,CAAA,CAAC,CAAC1qM,MAAAA,CAAO+vC,uBAAuB,CACtCy6J,IAAK,CAAC,CAACxqM,MAAOq+C,CAAAA,yBAAyB,CAE3C,CACA,CAAA,MAAMkyS,qBAAuB,CAACjvX,MAAAA,CAAQjE,QACpC,GAAA,CAAA,MAAMmzX,aAAgB,CAACC,SACrB,EAAA,CAAA,MAAMp1X,KAAO,CACX,aAAA,CACAo1X,SACA,CAAA,EAAA,CACA,CAAC,CAAC,EAAEnF,WAAAA,CAAY71X,QAAQ,EAAG,CAAA;;AAAO,CAAC,CACpC,CAACG,IAAI,CAAC,IAAA,CAAA,CACP,OAAO,IAAI+qO,IAAAA,CAAK,CACdtlO,IAAAA,CACD,CAAE,CACDmS,KAAM,wBACR,CAAA,CACF,CACA,CAAA,MAAMhM,aAAgB,CAAA,IAAA,CACpB,GAAI,CACF,GAAI,OAAOmB,WAAAA,GAAgB,QAAY,EAAA,OAAOA,YAAYC,WAAW,GAAK,UAAY,CAAA,CACpF,MAAMf,MAAAA,CAAS,IAAIc,WAAYE,CAAAA,MAAM,CAACC,UAAAA,CAAWC,EAAE,CAAC,EAAK,EAAM,CAAA,GAAA,CAAM,GAAM,CAAA,CAAA,CAAM,CAAM,CAAA,CAAA,CAAM,IAC7F,GAAIlB,MAAAA,YAAkBc,WAAYE,CAAAA,MAAM,CAAE,CACxC,OAAO,IAAIF,WAAAA,CAAYK,QAAQ,CAACnB,MAAmBc,CAAAA,YAAAA,WAAAA,CAAYK,QAAQ,CAE3E,CACF,CAAE,MAAO9K,CAAAA,CAAG,EACZ,OAAO,KACT,CAAA,CACA,MAAMw4X,YAAAA,CAAe,CAACD,SAAW5uX,CAAAA,MAAAA,GAAAA,CAC/BxE,QAAS,CAAA,IAAA,CAAM,CACbqiW,SAAAA,CAAW5wR,IAAI4xJ,eAAe,CAAC8vJ,aAAcC,CAAAA,SAAAA,CAAAA,CAAAA,CAC7C5uX,MAAQA,CAAAA,MAAAA,CACRosX,YAAa3sX,MAAO2sX,CAAAA,WAAW,CAC/BC,YAAAA,CAAc5sX,MAAO4sX,CAAAA,YAAY,CAErC,EAAA,CAAA,CACA,MAAM1mX,OAAAA,CAAU,CACdwgC,KAAAA,CAAO,IACPs1E,CAAAA,YAAAA,CAAc,MACdrB,CAAAA,KAAAA,CAAO36G,MAAO86G,CAAAA,UAAU,CAAG,CAAA,CAC3BA,WAAY96G,MAAO86G,CAAAA,UAAU,CAC/B,CACA,GAAI96G,MAAAA,CAAOG,OAAO,EAAIH,MAAAA,CAAOI,OAAO,EAAIF,aAAiB,EAAA,CAAA,CACvD,IAAIivX,SAAY,CAAA,IAAA,CAChB,IAAI5uX,MAAAA,CAAS,IACbm+G,CAAAA,IAAAA,CAAKloH,GAAG,CAACwJ,MAAAA,CAAOG,OAAO,CAAE+F,OAAS,CAAA,CAAC5F,IAAKu9G,QACtC,GAAA,CAAA,GAAIv9G,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,EACX,MAAO,CACL,GAAIC,MAAQ,CAAA,CACV6uX,YAAavxQ,CAAAA,QAAAA,CAAUt9G,QACzB,CAAO,KAAA,CACL4uX,SAAYtxQ,CAAAA,SACd,CACF,CACF,GACA,MAAM+zH,YAAAA,CAAeS,KAAMryO,CAAAA,MAAAA,CAAOI,OAAO,CAAA,CACzC,MAAMq9V,aAAgB,CAAA,IAAA,CACpB7rH,YAAalxO,CAAAA,IAAI,CAAElM,QAASA,MAAOkpW,CAAAA,WAAW,EAAIh9V,CAAAA,CAAAA,IAAI,CAAEyO,QAAS9N,WAAYy1E,CAAAA,OAAO,CAAC3nE,MAAAA,CAAAA,CAAAA,CAASzO,IAAI,CAAC,OACjG,EAAA,CAAA,GAAIyuX,SAAW,CAAA,CACbC,YAAaD,CAAAA,SAAAA,CAAWE,SAC1B,CAAO,KAAA,CACL9uX,MAAS8uX,CAAAA,QACX,CACF,CAAA,CAAA,CAAG/6R,KAAK,CAAEh0F,GACRvE,EAAAA,CAAAA,QAAAA,CAASuE,GAAK,CAAA,IAAA,EAChB,GACF,CACA,CAAA,GAAIe,WAAYs8V,CAAAA,gBAAgB,CAAE,CAChCt8V,WAAYs8V,CAAAA,gBAAgB,CAAC/rH,YAAAA,CAAAA,CAAclxO,IAAI,CAAC,OAAC2uX,EAAAA,CAC/C,GAAIF,SAAW,CAAA,CACbC,YAAaD,CAAAA,SAAAA,CAAWE,OAC1B,EAAA,CAAA,KAAO,CACL9uX,MAAS8uX,CAAAA,QACX,CACF,CAAA,CAAA,CAAG/6R,KAAK,CAAC,GACPmpQ,EAAAA,CAAAA,aAAAA,GACF,CACF,EAAA,CAAA,KAAO,CACLA,aAAAA,GACF,CACF,CAAO,KAAA,CACL/+O,IAAKloH,CAAAA,GAAG,CAACwJ,MAAAA,CAAOK,WAAW,CAAE6F,OAAAA,CAAS,CAAC5F,GAAAA,CAAKu9G,QAC1C,GAAA,CAAA,GAAIv9G,IAAK,CACPvE,QAAAA,CAASuE,GAAK,CAAA,IAAA,EAChB,CAAO,KAAA,CACL8uX,aAAavxQ,QAAU,CAAA,IAAA,EACzB,CACF,CAAA,EACF,CACF,CACA,OAAMyxQ,UAMJhyB,CAAAA,UAAAA,CAAWh+V,GAAG,CAAEmP,IAAI,CAAE1S,QAAQ,CAAEmK,OAAO,CAAE,CACvC,GAAI,IAAI,CAAC/I,SAAS,CAAC2D,cAAc,CAACxB,GAAM,CAAA,CAAA,CACtC,IAAI,CAACnC,SAAS,CAACmC,GAAAA,CAAI,CAAC/J,IAAI,CAACwG,QAC3B,EAAA,CAAA,KAAO,CACL,IAAI,CAACoB,SAAS,CAACmC,GAAI,CAAA,CAAG,CACpBvD,QAAAA,CACD,CACD,MAAMohW,IAAM,CACV79V,GAAAA,CAAKA,GACLmP,CAAAA,IAAAA,CAAMA,IACNvI,CAAAA,OAAAA,CAASA,OACX,CACA,CAAA,GAAI,IAAI,CAACqpX,OAAO,CAAC76X,MAAM,CAAG,CAAG,CAAA,CAC3B,IAAI,CAAC66X,OAAO,CAACnnV,KAAK,EAAG4jB,CAAAA,GAAG,CAACmxS,GAAAA,EAC3B,CAAO,KAAA,CACL,IAAI,CAACx+S,KAAK,CAACppD,IAAI,CAAC4nW,GAAAA,EAClB,CACF,CACF,CACAqyB,aAAcC,CAAAA,MAAM,CAAE,CACpB,GAAI,IAAI,CAAC9wU,KAAK,CAACjqD,MAAM,CAAG,EAAG,CACzB+6X,MAAAA,CAAOzjU,GAAG,CAAC,IAAI,CAACrN,KAAK,CAACvW,KAAK,EAC7B,EAAA,CAAA,KAAO,CACL,IAAI,CAACmnV,OAAO,CAACh6X,IAAI,CAACk6X,MACpB,EAAA,CACF,CACAC,cAAepwX,CAAAA,GAAG,CAAEgB,GAAG,CAAEmO,IAAI,CAAE,CAC7B,MAAM1S,QAAW,CAAA,IAAI,CAACoB,SAAS,CAACmC,GAAI,CAAA,CACpC,GAAIgB,GAAAA,CAAK,CACP,IAAI,IAAI7L,CAAI,CAAA,CAAA,CAAGA,CAAIsH,CAAAA,QAAAA,CAASrH,MAAM,CAAE,EAAED,CAAE,CAAA,CACtCsH,QAAQ,CAACtH,CAAE,CAAA,CAAC6L,KACd,CACF,CAAA,KAAO,CACL,GAAImO,IAAKlU,CAAAA,MAAM,GAAKwyB,kBAAsBte,EAAAA,IAAAA,CAAKlU,MAAM,GAAK0yB,iBAAmB,CAAA,CAC3Exe,KAAKy2B,MAAM,CAAGz2B,IAAKy2B,CAAAA,MAAM,CAAC5pC,GAAG,CAAEpH,CAC7B,EAAA,CAAA,OAAO,IAAI49B,WAAAA,CAAY59B,CACzB,CAAA,CAAA,EACF,MAAO,CACLua,IAAAA,CAAKy2B,MAAM,CAAGz2B,IAAKy2B,CAAAA,MAAM,CAAC5pC,GAAG,CAAC,CAACpH,EAAAA,CAC7B,OAAO,IAAIsN,WAAWtN,CACxB,CAAA,CAAA,EACF,CACA,IAAI,IAAIO,CAAAA,CAAI,EAAGA,CAAIsH,CAAAA,QAAAA,CAASrH,MAAM,CAAE,EAAED,CAAAA,CAAE,CACtCsH,QAAQ,CAACtH,CAAE,CAAA,CAAC,IAAMga,CAAAA,IAAAA,EACpB,CACF,CACA,OAAO,IAAI,CAACtR,SAAS,CAACmC,KAAI,CAnD5B9C,WAAa,EAAA,CACX,IAAI,CAACW,SAAS,CAAG,EACjB,CAAA,IAAI,CAACwhD,KAAK,CAAG,EAAE,CACf,IAAI,CAAC4wU,OAAO,CAAG,GAAE,CAkDrB,CACA,MAAMI,YAiBJ3jU,GAAImxS,CAAAA,GAAG,CAAE,CACP,MAAMt+H,QAAAA,CAAW,EAAE,CACnB,GAAIs+H,GAAI1uV,CAAAA,IAAI,YAAY02B,WAAAA,CAAa,CACnC05L,QAAStpO,CAAAA,IAAI,CAAC4nW,GAAAA,CAAI1uV,IAAI,EACxB,CACA,IAAI,CAACtW,MAAM,CAACgmO,WAAW,CAAC,CACtBjyN,IAAM,CAAA,WAAA,CACN5M,GAAK69V,CAAAA,GAAAA,CAAI79V,GAAG,CACZ/E,MAAQ4iW,CAAAA,GAAAA,CAAI5iW,MAAM,CAClBkU,IAAM0uV,CAAAA,GAAAA,CAAI1uV,IAAI,CACdvI,QAASi3V,GAAIj3V,CAAAA,OAAO,CACtB,CAAG24N,QACH,CAAA,CAAA,GAAI,IAAI,CAAC+wJ,KAAK,CAAE,CACd,IAAI,CAACjxU,KAAK,CAAC6wU,aAAa,CAAC,IAAI,EAC/B,CACF,CA/BAhzX,WAAYmiD,CAAAA,KAAK,CAAE3+C,MAAM,CAAE4vX,KAAK,CAAC,CAC/B,IAAI,CAACjxU,KAAK,CAAGA,KACb,CAAA,IAAI,CAACxmD,MAAM,CAAG,IAAIP,MAAAA,CAAOoI,OAAOo+V,SAAS,CAAA,CACzC,IAAI,CAACjmW,MAAM,CAACzB,gBAAgB,CAAC,SAAA,CAAW,OAAC+hF,EAAAA,CACvC,MAAMhqE,IAAAA,CAAOgqE,QAAQhqE,IAAI,CACzB,IAAI,CAACkwC,KAAK,CAAC+wU,cAAc,CAACjhX,IAAAA,CAAKnP,GAAG,CAAEmP,IAAKnO,CAAAA,GAAG,CAAEmO,IAAKA,CAAAA,IAAI,CACvD,CAAA,GAAI,CAAC,IAAI,CAACmhX,KAAK,CAAE,CACf,IAAI,CAACjxU,KAAK,CAAC6wU,aAAa,CAAC,IAAI,EAC/B,CACF,CAAA,CAAA,CACA,IAAI,CAACr3X,MAAM,CAACgmO,WAAW,CAAC,CACtBjyN,KAAM,MACNlM,CAAAA,MAAAA,CAAQA,MACV,CAAA,CACA,CAAA,IAAI,CAAC4vX,KAAK,CAAGA,MACf,CAiBF,CACA,MAAMC,iBAAAA,CAAoB,EAC1B,MAAMC,kBAAAA,CAAqB,CACzB,MAAA,CACA,MACA,CAAA,MAAA,CACA,MACA,KACA,CAAA,KAAA,CACD,CACD,MAAMC,mBAAsB,CAAA,CAC1B,OACA,KACA,CAAA,MAAA,CACA,KACA,CAAA,KAAA,CACD,CACD,MAAMC,kBAAoB,CAC1B,CAAA,MAAMrxU,KAAQ,CAAA,IAAI2wU,UAClB,CAAA,IAAIW,WAAa,IACjB,CAAA,IAAIlvX,YAAe,CAAA,KAAA,CACnB,SAASmvX,eAAAA,CAAgBlwX,MAAM,CAC7B,CAAA,GAAIe,YAAc,CAAA,CAChB,MACF,CACA,GAAI,CAACf,MAAAA,CAAQ,CACXA,MAAAA,CAASiwX,UAAc,EAAA,GACzB,CAAO,KAAA,GAAIjwX,MAAOs+V,CAAAA,QAAQ,CAAE,CAC1B2xB,WAAajwX,MACb,CAAA,MACF,CACA,GAAI,CAACA,MAAAA,CAAOG,OAAO,EAAI,CAACH,MAAOI,CAAAA,OAAO,EAAI,CAACJ,OAAOK,WAAW,CAAE,CAC7D,MAAM09V,YAAep8V,CAAAA,UAAAA,CAAWE,SAAS,CAAC,OAAA,CAAA,CAC1C,GAAIk8V,YAAAA,CAAc,CAChB/9V,MAAAA,CAAS,CACPG,OAAS49V,CAAAA,YAAAA,CAAa59V,OAAO,CAC7BC,OAAS29V,CAAAA,YAAAA,CAAa39V,OAAO,CAC7BC,WAAAA,CAAa09V,YAAa19V,CAAAA,WAAW,CACrC29V,UAAAA,CAAYD,aAAaC,UAC3B,EACF,CACF,CACA,GAAIh+V,MAAOG,CAAAA,OAAO,EAAIH,MAAAA,CAAOI,OAAO,EAAIJ,MAAOK,CAAAA,WAAW,CAAE,CAC1DU,YAAAA,CAAe,IACf,CAAA,MAAMi9V,UAAahqW,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAA,CAAGpU,IAAKmU,CAAAA,GAAG,CAAC,EAAA,CAAInI,OAAOg+V,UAAU,EAAI6xB,iBACjE,CAAA,CAAA,CAAA,MAAMM,YAAenwX,CAAAA,MAAAA,CAAOg+V,UAAU,GAAK,CAAA,GAAMh+V,MAAAA,CAAOc,cAAc,CAAC,gBAAkBd,MAAOmwX,CAAAA,YAAY,CAAG,IAAG,CAClHnwX,CAAAA,OAAO2sX,WAAW,CAAG3sX,MAAO2sX,CAAAA,WAAW,EAAImD,kBAC3C9vX,CAAAA,MAAO4sX,CAAAA,YAAY,CAAG5sX,MAAAA,CAAO4sX,YAAY,EAAImD,mBAC7C/vX,CAAAA,MAAO86G,CAAAA,UAAU,CAAG96G,MAAAA,CAAOc,cAAc,CAAC,cAAgBd,MAAO86G,CAAAA,UAAU,CAAGk1Q,iBAAAA,CAC9Ef,oBAAqBjvX,CAAAA,MAAAA,CAAQ,CAACM,GAAK8vX,CAAAA,YAAAA,GAAAA,CACjC,GAAI9vX,GAAAA,CAAK,CACPY,OAAAA,CAAQC,KAAK,CAAC,CAAC,mCAAmC,EAAEb,GAAI,CAAA,CAAC,EAC3D,CAAO,KAAA,CACL,IAAI,IAAI7L,CAAI,CAAA,CAAA,CAAGA,EAAIupW,UAAY,CAAA,EAAEvpW,CAAE,CAAA,CACjCkqD,KAAM6wU,CAAAA,aAAa,CAAC,IAAIG,WAAAA,CAAYhxU,KAAOyxU,CAAAA,YAAAA,CAAcD,YAC3D,CAAA,EAAA,CACF,CACF,CACF,EAAA,CACF,CACA,IAAIhE,aAAgB,CAAA,IAAA,CACpB,SAASkE,cAAAA,CAAe3xV,MAAM,CAAEp/B,GAAG,CAAEmP,IAAI,CAAE1S,QAAQ,CAAEmK,OAAO,CAC1DgqX,CAAAA,eAAAA,EAAAA,CACA,GAAI,CAAC/D,cAAe,CAClBA,aAAAA,CAAgB,CACd7tV,OAAAA,CAAS0wV,qBAAsBtwV,CAAAA,MAAAA,CACjC,EACF,CACAigB,KAAAA,CAAM2+S,UAAU,CAACh+V,GAAKmP,CAAAA,IAAAA,CAAM1S,SAAU,CACpCowX,aAAAA,CAAeA,aACfwB,CAAAA,MAAAA,CAAQ,CAAC,CAACznX,SAASynX,MACnBgB,CAAAA,MAAAA,CAAQ,CAAC,CAACzoX,OAASyoX,EAAAA,MACrB,GACA,OAAO5tX,YACT,CAEA,MAAMuvX,aACJ3lJ,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,MAAM,IAAIzvN,KAAAA,CAAM,iBAClB,CAAA,CACAm9G,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE,CACtB,MAAM,IAAI//B,KAAM,CAAA,iBAAA,CAClB,CACF,CAEA,MAAM4xX,WAAAA,SAAoBD,cAMxB3lJ,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,MAAM1vL,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMgwV,SAAAA,CAAY,IAACjgX,EAAAA,CACjB,MAAM+hX,gBAAAA,CAAmBH,eAAe3xV,MAAQp/B,CAAAA,GAAAA,CAAIqrO,IAAI,CAAEl8N,IAAM1S,CAAAA,QAAAA,CAAU,CACxE4xX,MAAQ,CAACv/J,CAAAA,KAAAA,EAAOqb,IAAM9jG,EAAAA,QAAAA,EAAU2jG,KAAOhW,EAAAA,GAAAA,CAAM,CAAA,IAAO,CACtD,CAAA,CAAA,CACA,GAAI,CAACk9J,iBAAkB,CACrBz0X,QAAAA,CAAS,CAAC,+BAA+B,EAAEqyN,KAAAA,CAAMr2N,IAAI,CAAC,EAAE,EAAEq2N,KAAAA,CAAM0c,UAAU,EAAA,CAAG,2CAA2C,CAAC,EAC3H,CACF,CAAA,CACAtB,KAAMkC,CAAAA,gBAAgB,CAACpsO,GAAIqrO,CAAAA,IAAI,CAAE,CAACrqO,GAAK9L,CAAAA,MAAAA,GAAAA,CACrC,GAAI8L,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,EACX,CAAO,KAAA,CACLouX,UAAUl6X,MACZ,EAAA,CACF,CAAG45N,CAAAA,KAAAA,CAAO,IAAI,CAACtzG,UAAU,EAC3B,CACAgB,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE+xV,cAAiB,CAAA,EAAE,CAAE,CAC3C,MAAMl2X,MAAAA,CAASk2X,cAAex/V,CAAAA,IAAI,CAAGM,wBAAAA,CAAyB9iB,KAAKlU,MAAM,CAAA,CAAIkU,IAAKlU,CAAAA,MAAM,CACxF,MAAMgsC,QAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAClC3mC,IAAMuH,CAAAA,GAAAA,CACNkjC,SAAU/zB,IAAKyxB,CAAAA,OAAO,CAAGtX,qBAAAA,CAAwBD,cACjD+Z,CAAAA,QAAAA,CAAUj0B,KAAKyxB,OAAO,CAAGtX,qBAAwBD,CAAAA,cAAAA,CACjDvO,KAAO3L,CAAAA,IAAAA,CAAK2L,KAAK,CACjBC,MAAAA,CAAQ5L,IAAK4L,CAAAA,MAAM,CACnB9f,MAAAA,CAAQA,OACR2lC,OAASzxB,CAAAA,IAAAA,CAAKyxB,OAAO,CACrBgF,MAAQz2B,CAAAA,IAAAA,CAAKy2B,MAAM,CACnB,GAAGurV,cAAc,CACnB,CAAA,CACAlqV,OAAQ3F,CAAAA,MAAM,GACd,OAAO2F,OACT,CAtCA/pC,WAAAA,CAAYktO,QAAQ,CAAEhrM,MAAM,CAAC,CAC3B,KAAK,EACL,CAAA,IAAI,CAACA,MAAM,CAAGA,MACd,CAAA,IAAI,CAACo8E,UAAU,CAAG,EACpB,CAmCF,CAEA,MAAM41Q,SAAAA,SAAkBJ,cAOtB3lJ,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,MAAMuiK,WAAc,CAAA,CAAC,CAACviK,KAAAA,EAAOqb,MAAMV,QACnC,CAAA,GAAI4nJ,WAAa,CAAA,CACf,GAAI,IAAI,CAACjyV,MAAM,CAACsuC,mBAAmB,CAAE,CACnC,IAAI,CAAC4jT,wBAAwB,CAAC,IAAIvxJ,IAAAA,CAAK,CACrCjR,KAAAA,CAAMqb,IAAI,CAACV,QAAQ,CACpB,CAAA,CAAGhtO,QACJ,CAAA,CAAA,MACF,CACAuD,GAAM,CAAA,CACJqrO,IAAMn9J,CAAAA,GAAAA,CAAI4xJ,eAAe,CAAC,IAAIC,IAAK,CAAA,CACjCjR,KAAMqb,CAAAA,IAAI,CAACV,QAAQ,CACpB,CACD5yK,CAAAA,CAAAA,QAAAA,CAAU72D,GAAI62D,CAAAA,QAAQ,EAE1B,CACA,MAAMv6D,OAAAA,CAAU,CAAC0E,GAAAA,CAAK9L,MACpB,GAAA,CAAA,GAAIm8X,YAAa,CACfnjT,GAAAA,CAAIi+J,eAAe,CAACnsO,GAAIqrO,CAAAA,IAAI,EAC9B,CACA5uO,QAASuE,CAAAA,GAAAA,CAAK9L,MAChB,EAAA,CAAA,CACA,IAAIg8W,WAAAA,CACJ,GAAIpiJ,KAASA,EAAAA,KAAAA,CAAMloN,OAAO,EAAIkoN,KAAMloN,CAAAA,OAAO,CAACpF,cAAc,CAAC,aAAgB,CAAA,CAAA,CACzE0vW,WAAcpiJ,CAAAA,KAAAA,CAAMloN,OAAO,CAACsqW,YAAW,CACzC,KAAO,GAAI3oI,YAAAA,CAAa1wO,IAAI,CAACmI,GAAAA,CAAIqrO,IAAI,CAAA,CAAG,CACtC6lI,WAAAA,CAAc,IAAI,CAACA,YAAW,CAEhC,GAAI,IAAI,CAAC9xU,MAAM,CAACsuC,mBAAmB,CAAE,CACnC,IAAI,CAAC6jT,gBAAgB,CAACvxX,GAAIqrO,CAAAA,IAAI,CAAErrO,GAAAA,CAAI62D,QAAQ,CAAEq6S,WAAa50W,CAAAA,OAAAA,CAASwyN,KACtE,EAAA,CAAA,KAAO,CACL,IAAI,CAAC0iK,UAAU,CAACxxX,GAAIqrO,CAAAA,IAAI,CAAErrO,GAAAA,CAAI62D,QAAQ,CAAEq6S,WAAAA,CAAa50W,OAASwyN,CAAAA,KAAAA,EAChE,CACF,CACAtyG,KAAKx8G,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE+xV,eAAiB,EAAE,CAAE,CAC3C,MAAMlqV,OAAAA,CAAU,IAAInG,OAAQ1B,CAAAA,MAAAA,CAAQ,CAClC3mC,IAAAA,CAAMuH,GACN8a,CAAAA,KAAAA,CAAO3L,KAAK2L,KAAK,CACjBC,MAAQ5L,CAAAA,IAAAA,CAAK4L,MAAM,CACnB9f,OAAQk2X,cAAex/V,CAAAA,IAAI,CAAGjD,kBAAAA,CAAqBb,iBACnD,CAAA,GAAGsjW,cACL,CACAlqV,CAAAA,CAAAA,OAAAA,CAAQnB,SAAS,CAAC32B,IAClB,CAAA,CAAA,OAAO83B,OACT,CACAuqV,UAAAA,CAAWxxX,GAAG,CAAEyxX,WAAW,CAAEvgB,WAAW,CAAEz0W,QAAQ,CAAEqyN,KAAK,CAAE,CACzD,MAAMx1J,KAAQ,CAAA,IAAIo4T,KAClB,CAAA,GAAIxgB,WAAa,CAAA,CACf53S,MAAM43S,WAAW,CAAGA,YACtB,CACA,IAAI31P,OAAAA,CAAU,EACd,MAAMC,UAAAA,CAAa,IAAI,CAACA,UAAU,CAClC,IAAIm2Q,YACJ,CAAA,MAAMC,SAAY,CAAA,IAAA,CAAO,IACzB9iK,CAAAA,KAAAA,EAAOzwN,KAAK,UAAY,CAAA,CAAA,CAAGuzX,SAC3Bt4T,CAAAA,CAAAA,KAAMl5D,CAAAA,MAAM,CAAG,UACb0uN,CAAAA,KAAAA,EAAOzwN,IAAK,CAAA,UAAA,CAAYuzX,SAAWA,CAAAA,SAAAA,CAAAA,CACnCn1X,SAAS,IAAM68D,CAAAA,KAAAA,EACjB,CACAA,CAAAA,KAAMj5D,CAAAA,OAAO,CAAG,UACd,CAAA,GAAIsxX,YAAc,CAAA,OAClB,GAAIn2Q,UAAAA,CAAa,GAAK,EAAED,OAAAA,EAAWC,UAAY,CAAA,CAC7C,MAAMsD,UAAAA,CAAapqH,KAAKkV,GAAG,CAAC,CAAG2xG,CAAAA,OAAAA,CAAAA,CAAW,GAC1C35G,CAAAA,OAAAA,CAAQ88F,GAAG,CAAC,CAAC,6BAA6B,EAAE+yR,WAAY,CAAA,gBAAgB,EAAE3yQ,UAAW,CAAA,KAAK,CAAC,CAAA,CAC3F,MAAMr/G,GAAAA,CAAMO,IAAI5B,OAAO,CAAC,GACxB,CAAA,CAAA,MAAMqtO,SAAYhsO,CAAAA,GAAAA,EAAO,CAAI,CAAA,GAAA,CAAM,GACnCkyX,CAAAA,YAAAA,CAAez8S,UAAW,CAAA,IAAA,CACxB5b,KAAMvuD,CAAAA,GAAG,CAAG,CAAC,EAAE/K,GAAMyrO,CAAAA,SAAAA,CAAU,MAAM,EAAE/kO,KAAKF,GAAG,EAAA,CAAG,CAAC,CACnDmrX,YAAe,CAAA,KACjB,EAAG7yQ,UACL,EAAA,CAAA,KAAO,CACLriH,QAAAA,CAAS,CAAC,6BAA6B,EAAEg1X,WAAY,CAAA,CAAC,CAAC,EACzD,CACF,CACAn4T,CAAAA,KAAMvuD,CAAAA,GAAG,CAAG/K,IACd,CACAuxX,gBAAAA,CAAiBvxX,GAAG,CAAEyxX,WAAW,CAAEvgB,WAAW,CAAEz0W,QAAQ,CAAEqyN,KAAK,CAAE,CAC/D,MAAMloN,OAAU,CAAA,CACdwgC,MAAO,IACPs1E,CAAAA,YAAAA,CAAc,MACdrB,CAAAA,KAAAA,CAAO,IAAI,CAACG,UAAU,CAAG,CAAA,CACzBA,UAAY,CAAA,IAAI,CAACA,UAAU,CAC3Bb,QAAUm0G,CAAAA,KACZ,CACA1vG,CAAAA,IAAAA,CAAKloH,GAAG,CAAC8I,IAAK4G,OAAS,CAAA,CAAC5F,GAAK69V,CAAAA,IAAAA,GAAAA,CAC3B,GAAI79V,GAAAA,CAAK,CACPvE,QAASuE,CAAAA,GAAAA,EACX,CAAO,KAAA,CACL,IAAI,CAACswX,wBAAwB,CAACzyB,IAAAA,CAAMpiW,QACtC,EAAA,CACF,CACF,EAAA,CACA60X,yBAAyBzyB,IAAI,CAAEpiW,QAAQ,CAAE,CACvCo1X,iBAAAA,CAAkBhzB,KAAM,CACtB35T,gBAAAA,CAAkB,MAClB4sV,CAAAA,oBAAAA,CAAsB,MACxB,CAAA,CAAA,CAAG1wX,IAAI,CAAC,WAAC2wX,EAAct1X,QAAS,CAAA,IAAA,CAAMs1X,WAAc/8R,CAAAA,CAAAA,CAAAA,KAAK,CAAC,CAAC19F,EAAImF,QAASnF,CAAAA,CAAAA,CAAAA,EAC1E,CAvGA4F,WAAAA,CAAYktO,QAAQ,CAAEhrM,MAAM,CAAC,CAC3B,KAAK,EACL,CAAA,IAAI,CAAC8xU,WAAW,CAAG9mI,QAASxoF,CAAAA,MAAM,CAAG,WAAc,CAAA,IACnD,CAAA,IAAI,CAACpmC,UAAU,CAAG,CAClB,CAAA,IAAI,CAACp8E,MAAM,CAAGA,OAChB,CAmGF,CAEA,MAAM4yV,UAAAA,CAAa,CACjB,UAAA,CACA,WACA,SACD,CAAA,CACD,MAAMC,aAAAA,CAAgB,CACpB,KAAA,CAAQnkW,iBACR,KAAQC,CAAAA,gBAAAA,CACR,KAAQC,CAAAA,gBAAAA,CACR,KAAQW,CAAAA,gBAAAA,CACR,MAAQC,oBACR,CAAA,KAAA,CAAQC,qBACR,CAAA,KAAA,CAAQG,4BACR,CAAA,KAAA,CAAQF,6BACR,KAAQG,CAAAA,6BAAAA,CACR,KAAQF,CAAAA,6BAAAA,CACR,KAAQnB,CAAAA,gBAAAA,CACR,MAAQC,iBACR,CAAA,KAAA,CAAQY,iBACR,CAAA,KAAA,CAAQC,kBACR,CAAA,KAAA,CAAQF,oBACR,KAAQP,CAAAA,kBAAAA,CACR,KAAQC,CAAAA,mBACV,CACA,CAAA,SAASgkW,gBAAgBC,WAAW,CAAEtiX,MAAM,CAAEsvC,UAAU,CAAExC,QAAQ,CAChE,CAAA,OAAOw1U,WAAgB3jW,GAAAA,mBAAAA,CAAsB,IAAI8D,WAAAA,CAAYziB,OAAQsvC,UAAYxC,CAAAA,QAAAA,CAAW,CAAK,CAAA,CAAA,IAAIz6C,UAAW2N,CAAAA,MAAAA,CAAQsvC,UAAYxC,CAAAA,QAAAA,CACtI,CACA,MAAMy1U,SAAkBpB,SAAAA,aAAAA,CAKtB3lJ,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzBob,KAAAA,CAAMkC,gBAAgB,CAACpsO,GAAAA,CAAIqrO,IAAI,CAAE5uO,QAAUqyN,CAAAA,KAAAA,CAAO,IAAI,CAACtzG,UAAU,EACnE,CACAgB,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE+xV,cAAiB,CAAA,EAAE,CAAE,CAC3C,MAAMxqV,WAAAA,CAAc,IAAI,CAAC83E,KAAK,CAACtvG,IAAAA,CAAAA,CAC/B,GAAI,CAACw3B,WAAa,CAAA,CAChB,OAAO,IACT,CACA,MAAM1rC,MAAAA,CAASk2X,cAAex/V,CAAAA,IAAI,CAAGM,wBAAAA,CAAyB0U,WAAY1rC,CAAAA,MAAM,CAAI0rC,CAAAA,WAAAA,CAAY1rC,MAAM,CACtG,MAAMgsC,OAAU,CAAA,IAAInG,OAAQ1B,CAAAA,MAAAA,CAAQ,CAClC3mC,IAAAA,CAAMuH,IACNkjC,QAAUyD,CAAAA,WAAAA,CAAY/F,OAAO,CAAGtX,qBAAwBD,CAAAA,cAAAA,CACxD+Z,SAAUuD,WAAY/F,CAAAA,OAAO,CAAGtX,qBAAAA,CAAwBD,cACxDvO,CAAAA,KAAAA,CAAO6rB,YAAY7rB,KAAK,CACxBC,MAAQ4rB,CAAAA,WAAAA,CAAY5rB,MAAM,CAC1B9f,OAAQA,MACR2lC,CAAAA,OAAAA,CAAS+F,WAAY/F,CAAAA,OAAO,CAC5BgF,MAAAA,CAAQe,YAAYf,MAAM,CAC1B,GAAGurV,cAAc,CACnB,CAAA,CACAlqV,QAAQ3F,MAAM,EAAA,CACd,OAAO2F,OACT,CACAw3E,KAAAA,CAAMtvG,IAAI,CAAE,CACV,MAAMkjX,OAAU,CAAA,IAAI//V,WAAYnjB,CAAAA,IAAAA,CAAAA,CAChC,GAAI6iX,UAAU,CAAC,CAAE,CAAA,GAAKK,OAAO,CAAC,EAAE,EAAIL,UAAU,CAAC,CAAA,CAAE,GAAKK,OAAO,CAAC,CAAE,CAAA,EAAIL,UAAU,CAAC,CAAE,CAAA,GAAKK,OAAO,CAAC,CAAA,CAAE,CAAE,CAChG,OAAO,IACT,CACA,MAAMz1Q,MAAAA,CAAS,CACb01Q,UAAAA,CAAYD,OAAO,CAAC,EAAE,CACtBpgS,MAAAA,CAAQogS,OAAO,CAAC,CAAE,CAAA,CAClBE,WAAYF,OAAO,CAAC,CAAE,CAAA,CACtB77S,QAAU67S,CAAAA,OAAO,CAAC,CAAE,CAAA,CACpBG,gBAAkBH,CAAAA,OAAO,CAAC,CAAA,CAAE,CAC5BI,oBAAsBJ,CAAAA,OAAO,CAAC,CAAA,CAAE,CAChCvzN,UAAAA,CAAYuzN,OAAO,CAAC,CAAA,CAAE,CACtBtzN,WAAAA,CAAaszN,OAAO,CAAC,GAAG,CACxBK,UAAAA,CAAYL,OAAO,CAAC,EAAG,CAAA,CACvBM,sBAAuBN,OAAO,CAAC,EAAG,CAAA,CAClCO,aAAeP,CAAAA,OAAO,CAAC,EAAG,CAAA,CAC1BQ,oBAAsBR,CAAAA,OAAO,CAAC,EAAA,CAAG,CACjCS,mBAAqBT,CAAAA,OAAO,CAAC,EAAA,CAAG,CAClC,CACA,GAAIz1Q,MAAO81Q,CAAAA,UAAU,CAAG,CAAA,CAAG,CACzB,OAAO,IACT,CACA,GAAI91Q,MAAAA,CAAO+1Q,qBAAqB,GAAK,CAAG,CAAA,CACtC,OAAO,IACT,CACA,MAAM13X,MAAAA,CAASg3X,aAAa,CAACr1Q,OAAO41Q,gBAAgB,CAAC,CACrD,GAAIv3X,MAAWgC,GAAAA,SAAAA,CAAW,CACxB,OAAO,IACT,CACA,IAAI4F,MAAS,CAAA,EAAA,CAAK+5G,OAAOk2Q,mBAAmB,CAAG,CAC/C,CAAA,MAAMC,SAAYn2Q,CAAAA,MAAAA,CAAOg2Q,aAAa,CAAG,CAAA,CACzC,MAAMhtV,MAAAA,CAAS,EAAE,CACjB,IAAI,IAAIotV,WAAAA,CAAc,CAAGA,CAAAA,WAAAA,EAAep2Q,MAAAA,CAAOi2Q,oBAAoB,EAAI,CAAA,CAAIG,CAAAA,WAAAA,EAAAA,CAAc,CACvF,MAAMC,iBAAmBZ,OAAO,CAACxvX,MAAS,EAAA,CAAA,CAC1C,GAAIkwX,SAAAA,CAAW,CACbntV,MAAO3vC,CAAAA,IAAI,CAAC,EAAE,EAChB,CACA,MAAMlC,MAASg/X,CAAAA,SAAAA,CAAYntV,MAAM,CAACotV,WAAY,CAAA,CAAGptV,OACjD,IAAI,IAAIH,IAAO,CAAA,CAAA,CAAGA,IAAQstV,EAAAA,UAAY,CAAI,CAAA,CAAA,CAAI,CAAA,EAAEttV,IAAK,CAAA,CACnD1xC,OAAOkC,IAAI,CAACi8X,eAAgBj3X,CAAAA,MAAAA,CAAQkU,IAAMtM,CAAAA,MAAAA,CAAS,EAAGowX,gBACtDpwX,CAAAA,CAAAA,CAAAA,MAAAA,EAAUowX,gBAAmB,CAAA,CAAA,EAAK,EACpC,CACF,CACA,OAAO,CACLh4X,MAAQA,CAAAA,MAAAA,CACR6f,KAAO8hG,CAAAA,MAAAA,CAAOkiD,UAAU,CACxB/jJ,MAAQ6hG,CAAAA,MAAAA,CAAOmiD,WAAW,CAC1Bn5H,MAAQA,CAAAA,MAAAA,CACRhF,QAASmyV,SACX,CACF,CA9EA71X,WAAAA,CAAYktO,QAAQ,CAAC,CACnB,KAAK,EACL,CAAA,IAAI,CAAC5uH,UAAU,CAAG,EACpB,CA4EF,CAEA,MAAM03Q,YAAe,CAAA,CACnBC,mBAAoB,GACtB,CACA,CAAMC,MAAAA,UAAAA,SAAmBpC,aAMvB3lJ,CAAAA,IAAAA,CAAKrrO,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzBob,MAAMkC,gBAAgB,CAACpsO,GAAIqrO,CAAAA,IAAI,CAAE,CAACrqO,IAAK9L,MACrC,GAAA,CAAA,GAAI8L,GAAK,CAAA,CACPvE,QAASuE,CAAAA,GAAAA,CAAK9L,QAChB,CAAO,KAAA,CACL,IAAI,CAACupH,KAAK,CAACvpH,OAAQ8K,GAAKvD,CAAAA,QAAAA,CAAUqyN,KACpC,EAAA,CACF,CAAGA,CAAAA,KAAAA,CAAO,IAAI,CAACtzG,UAAU,EAC3B,CACAgB,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE+xV,cAAiB,CAAA,EAAE,CAAE,CAC3C,MAAMl2X,MAAAA,CAASk2X,cAAex/V,CAAAA,IAAI,CAAGM,wBAAyB9iB,CAAAA,IAAAA,CAAKlU,MAAM,CAAA,CAAIkU,IAAKlU,CAAAA,MAAM,CACxF,MAAMgsC,OAAAA,CAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAClC3mC,KAAMuH,GACNkjC,CAAAA,QAAAA,CAAU/zB,IAAKyxB,CAAAA,OAAO,CAAGtX,qBAAAA,CAAwBD,cACjD+Z,CAAAA,QAAAA,CAAUj0B,IAAKyxB,CAAAA,OAAO,CAAGtX,qBAAAA,CAAwBD,cACjDvO,CAAAA,KAAAA,CAAO3L,KAAK2L,KAAK,CACjBC,MAAQ5L,CAAAA,IAAAA,CAAK4L,MAAM,CACnB9f,OAAQA,MACR2lC,CAAAA,OAAAA,CAASzxB,IAAKyxB,CAAAA,OAAO,CACrBgF,MAAAA,CAAQz2B,KAAKy2B,MAAM,CACnB,GAAGurV,cAAc,CACnB,CAAA,CACAlqV,QAAQ3F,MAAM,EAAA,CACd,OAAO2F,OACT,CACAw3E,KAAAA,CAAMv6G,WAAW,CAAElE,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACvC,MAAMukK,EAAK,CAAA,IAAI5wX,UAAWyB,CAAAA,WAAAA,CAAAA,CAC1B,MAAMguW,KAAQ,CAAA,CACZmhB,EAAGvvX,CAAAA,SAAS,EACZuvX,CAAAA,EAAAA,CAAGvvX,SAAS,EAAA,CACZuvX,EAAGvvX,CAAAA,SAAS,EACb,CAAA,CACD,GAAIouW,KAAK,CAAC,CAAE,CAAA,GAAK,UAAcA,EAAAA,KAAK,CAAC,CAAA,CAAE,GAAK,SAAcA,EAAAA,KAAK,CAAC,CAAA,CAAE,GAAK,SAAA,CAAY,CACjF,OAAO,IACT,CACA,MAAMt1P,MAAS,CAAA,CACb02Q,SAAUD,EAAG1vX,CAAAA,OAAO,EACpB4vX,CAAAA,QAAAA,CAAUF,EAAG1vX,CAAAA,OAAO,GACpBm7J,UAAYu0N,CAAAA,EAAAA,CAAG1vX,OAAO,EAAA,CACtBo7J,WAAas0N,CAAAA,EAAAA,CAAG1vX,OAAO,EACvB+uX,CAAAA,UAAAA,CAAYW,EAAG1vX,CAAAA,OAAO,EACtBgiK,CAAAA,UAAAA,CAAY0tN,GAAG1vX,OAAO,EAAA,CACtBwqJ,SAAWklO,CAAAA,EAAAA,CAAG1vX,OAAO,EAAA,CACrB6vX,UAAYH,CAAAA,EAAAA,CAAG1vX,OAAO,EAAA,CACtB8vX,sBAAwBJ,CAAAA,EAAAA,CAAG1vX,OAAO,EACpC,EACA,MAAM3I,KAAAA,CAAQ,CACZ04X,aAAAA,CAAeL,EAAG1vX,CAAAA,OAAO,GACzBgwX,aAAeN,CAAAA,EAAAA,CAAG1vX,OAAO,EAAA,CACzBiwX,aAAeP,CAAAA,EAAAA,CAAG1vX,OAAO,EACzBkwX,CAAAA,aAAAA,CAAeR,EAAG1vX,CAAAA,OAAO,EACzBmwX,CAAAA,aAAAA,CAAeT,GAAGxvX,OAAO,EAAA,CACzBkwX,aAAeV,CAAAA,EAAAA,CAAGxvX,OAAO,EAC3B,EACA,MAAM+hC,MAAAA,CAAS,EAAE,CACjB,IAAI,IAAIzwC,EAAI,CAAGA,CAAAA,CAAAA,CAAIT,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAG8zG,OAAO42Q,UAAU,CAAA,CAAG,EAAEr+X,CAAAA,CAAE,CACrDywC,MAAAA,CAAO3vC,IAAI,CAAC,CACVkpD,UAAYk0U,CAAAA,EAAAA,CAAGxvX,OAAO,EAAA,CACtBjB,WAAYywX,EAAGxvX,CAAAA,OAAO,EACtBmwX,CAAAA,sBAAAA,CAAwBX,EAAGxvX,CAAAA,OAAO,EACpC,CACF,EAAA,CACA,MAAMowX,YAAAA,CAAeZ,EAAG1vX,CAAAA,OAAO,GAC/B,GAAIswX,YAAAA,GAAiBj5X,KAAM44X,CAAAA,aAAa,CAAG54X,KAAAA,CAAM04X,aAAa,CAAE,CAC9D,OAAO,IACT,CACAL,EAAAA,CAAGtwX,IAAI,CAAC,CAAA,CAAA,CACR,MAAMmxX,UAAAA,CAAab,EAAG7vX,CAAAA,MAAM,GAC5B6vX,EAAGtwX,CAAAA,IAAI,CAAC/H,KAAAA,CAAM24X,aAAa,CAAG,GAC9BN,EAAGtwX,CAAAA,IAAI,CAAC/H,KAAAA,CAAM64X,aAAa,CAAA,CAC3B,GAAIj3Q,MAAAA,CAAO62Q,sBAAsB,GAAK,CAAKS,EAAAA,UAAAA,GAAehB,YAAaC,CAAAA,kBAAkB,CAAE,CACzF,MAAMjC,gBAAmBH,CAAAA,cAAAA,CAAe,IAAI,CAAC3xV,MAAM,CAAEp/B,GAAAA,CAAIqrO,IAAI,CAAEnnO,WAAazH,CAAAA,QAAAA,CAAU,CACpF4xX,MAAQ,CAACv/J,CAAAA,KAAAA,EAAOqb,IAAM9jG,EAAAA,QAAAA,EAAU2jG,OAAOhW,GAAM,CAAA,CAAA,IAAO,CAAA,CACpDq7J,MAAQ,CAAA,IACV,GACA,GAAI,CAAC6B,gBAAkB,CAAA,CACrBz0X,QAAS,CAAA,CAAC,+BAA+B,EAAEqyN,KAAAA,CAAMr2N,IAAI,CAAC,EAAE,EAAEq2N,MAAM0c,UAAU,EAAA,CAAG,2CAA2C,CAAC,EAC3H,CACF,MAAO,CACL/uO,QAAAA,CAAS,+BACX,EAAA,CACF,CAtFAS,WAAAA,CAAYktO,QAAQ,CAAEhrM,MAAM,CAAC,CAC3B,KAAK,EACL,CAAA,IAAI,CAACo8E,UAAU,CAAG,CAClB,CAAA,IAAI,CAACp8E,MAAM,CAAGA,OAChB,CAmFF,CAEA,MAAM+0V,SAAkBnD,SAAAA,aAAAA,CAKtB3lJ,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzBob,KAAAA,CAAMkC,gBAAgB,CAACpsO,IAAIqrO,IAAI,CAAE5uO,QAAUqyN,CAAAA,KAAAA,CAAO,IAAI,CAACtzG,UAAU,EACnE,CACAgB,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE+xV,cAAAA,CAAiB,EAAE,CAAE,CAC3C,MAAMv0Q,MAAS,CAAA,IAAItqF,WAAYnjB,CAAAA,IAAAA,CAAM,CAAG,CAAA,GAAA,CAAM,GAC9C,MAAM2L,KAAAA,CAAQ8hG,MAAM,CAAC,CAAE,CAAA,CACvB,MAAM7hG,MAAS6hG,CAAAA,MAAM,CAAC,CAAA,CAAE,CACxB,MAAMv4E,KAAO3vC,IAAKoU,CAAAA,GAAG,CAAC8zG,MAAM,CAAC,CAAA,CAAE,CAAE,CACjC,CAAA,CAAA,MAAMw3Q,QAAWx3Q,CAAAA,MAAM,CAAC,EAAA,CAAG,GAAK,CAChC,CAAA,MAAMy3Q,GAAMz3Q,CAAAA,MAAM,CAAC,EAAA,CAAG,CACtB,MAAM03Q,GAAAA,CAAM13Q,MAAM,CAAC,EAAG,CAAA,CACtB,MAAMm2Q,SAAYn2Q,CAAAA,MAAM,CAAC,EAAA,CAAG,GAAK,KAAA,CACjC,MAAM23Q,QAAW,CAAA,SAAA,CACjB,MAAMC,QAAAA,CAAW,SACjB,CAAA,MAAMC,SAAW,GACjB,CAAA,MAAMC,QAAW,CAAA,GAAA,CACjB,MAAMC,QAAAA,CAAW,UACjB,MAAMC,oBAAAA,CAAuB,SAC7B,CAAA,MAAMC,qBAAwB,CAAA,SAAA,CAC9B,MAAMC,oBAAuB,CAAA,SAAA,CAC7B,MAAMC,qBAAAA,CAAwB,SAC9B,CAAA,IAAIvV,WAAa,KACjB,CAAA,IAAIz1I,IAAO,CAAA,KAAA,CACX,IAAIirJ,MAAAA,CAAS,MACb,IAAIC,MAAAA,CAAS,KACb,CAAA,IAAIh6X,MAAS,CAAA,IAAA,CACb,IAAIivD,aAAgB,CAAA,CAAA,CACpB,IAAIjjB,OAAAA,CACJ,GAAImtV,QAAAA,CAAU,CACZ,GAAIC,GAAQE,GAAAA,QAAAA,CAAU,CACpBt5X,MAAAA,CAAS6yB,gBACT0xV,CAAAA,UAAAA,CAAa,KACf,CAAO,KAAA,GAAI6U,GAAQG,GAAAA,QAAAA,CAAU,CAC3Bv5X,MAAAA,CAAS+yB,iBACTwxV,UAAa,CAAA,KACf,CAAO,KAAA,GAAI6U,GAAQI,GAAAA,QAAAA,CAAU,CAC3Bx5X,MAASizB,CAAAA,mBAAAA,CACTg8B,aAAgB,CAAA,EAClB,CAAO,KAAA,GAAImqU,MAAQK,QAAU,CAAA,CAC3Bz5X,MAASmzB,CAAAA,mBAAAA,CACT87B,aAAgB,CAAA,EAClB,MAAO,GAAImqU,GAAAA,GAAQM,QAAU,CAAA,CAC3B15X,MAAS0zB,CAAAA,gBAAAA,CACT6wV,WAAa,IACbz1I,CAAAA,IAAAA,CAAO,KACT,CAAA,KAAO,GAAIsqJ,GAAAA,GAAQO,sBAAwBP,GAAQQ,GAAAA,qBAAAA,CAAuB,CACxE55X,MAAAA,CAASo5X,GAAQO,GAAAA,oBAAAA,CAAuB9lW,4BAA+BC,CAAAA,6BAAAA,CACvEywV,UAAa,CAAA,IAAA,CACbwV,MAAS,CAAA,KACX,CAAO,KAAA,GAAIX,MAAQS,oBAAwBT,EAAAA,GAAAA,GAAQU,qBAAuB,CAAA,CACxE95X,MAASo5X,CAAAA,GAAAA,GAAQS,qBAAuB9lW,4BAA+BC,CAAAA,6BAAAA,CACvEuwV,UAAa,CAAA,IAAA,CACbyV,MAAS,CAAA,KACX,CACF,CAAO,KAAA,CACL,GAAIX,GAAAA,GAAQ,EAAI,CAAA,CACdr5X,OAAS4yB,kBACX,CACF,CACA,GAAI,CAAC5yB,MAAAA,CAAQ,CACXgsC,OAAU,CAAA,IAAInG,OAAQ1B,CAAAA,MAAAA,CAAQ,CAC5BtkB,KAAAA,CAAO,EACPC,MAAQ,CAAA,CAAA,CACR9f,MAAQ2yB,CAAAA,gBAAAA,CACRn1B,IAAM,CAAA,kBACR,GACA,OAAOwuC,OACT,CACAA,OAAAA,CAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAC5B3mC,IAAMuH,CAAAA,GAAAA,CACNkjC,QAAU6vV,CAAAA,SAAAA,CAAYzpW,qBAAwBD,CAAAA,cAAAA,CAC9C+Z,SAAU2vV,SAAYzpW,CAAAA,qBAAAA,CAAwBD,cAC9CvO,CAAAA,KAAAA,CAAOA,KACPC,CAAAA,MAAAA,CAAQA,OACR9f,MAAQA,CAAAA,MAAAA,CACR2lC,OAASmyV,CAAAA,SAAAA,CACTpyV,OAAS0D,CAAAA,IAAAA,CAAO,EAChB,GAAG8sV,cAAc,CACnB,CAAA,CACA,IAAItuX,MAAAA,CAAS,IACb,MAAM80W,KAAAA,CAAQob,SAAY,CAAA,CAAA,CAAI,CAC9B,CAAA,IAAImC,QACJ,MAAMC,eAAAA,CAAkB,CACxB,CAAA,MAAMC,gBAAmB,CAAA,CAAA,CACzB,MAAMxjW,SAAYyiW,CAAAA,GAAAA,GAAQE,QAAW,CAAA,CAAA,CAAI,EACzC,CAAA,IAAIc,gBAAiBC,aAAeC,CAAAA,SAAAA,CACpC,IAAI,IAAI9vV,IAAO,CAAA,CAAA,CAAGA,KAAOkyU,KAAOlyU,CAAAA,IAAAA,EAAAA,CAAO,CACrC,IAAI+vV,QAAW16W,CAAAA,KAAAA,CACf,IAAI26W,SAAY16W,CAAAA,MAAAA,CAChB,IAAI,IAAI5lB,CAAI,CAAA,CAAA,CAAGA,EAAIkvC,IAAMlvC,CAAAA,CAAAA,EAAAA,CAAI,CAC3B,GAAIqqX,UAAY,CAAA,CACd,GAAIz1I,IAAM,CAAA,CACRmrJ,OAAUxgY,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC,CAAC2wX,QAAAA,CAAW,CAAA,EAAK,CAAK9gY,CAAAA,CAAAA,IAAAA,CAAKmQ,KAAK,CAAE4wX,CAAAA,SAAAA,CAAY,CAAA,EAAK,GAAK,EAC/E,CAAA,KAAO,GAAIT,MAAAA,CAAQ,CACjBE,OAAAA,CAAUxgY,KAAKoU,GAAG,CAAC0sX,QAAU,CAAA,EAAA,CAAA,CAAM9gY,IAAKoU,CAAAA,GAAG,CAAC2sX,SAAAA,CAAW,CAAK,CAAA,CAAA,EAC9D,CAAO,KAAA,GAAIR,MAAQ,CAAA,CACjBC,QAAUxgY,IAAKoU,CAAAA,GAAG,CAAC0sX,QAAAA,CAAU,CAAK9gY,CAAAA,CAAAA,IAAAA,CAAKoU,GAAG,CAAC2sX,SAAAA,CAAW,CAAK,CAAA,CAAA,EAC7D,CAAO,KAAA,CACLJ,gBAAkB3gY,IAAKmQ,CAAAA,KAAK,CAAE2wX,CAAAA,QAAAA,CAAWL,gBAAkB,CAAA,EAAKA,eAChEG,CAAAA,CAAAA,aAAAA,CAAgB5gY,IAAKmQ,CAAAA,KAAK,CAAC,CAAC4wX,SAAYL,CAAAA,gBAAAA,CAAmB,CAAA,EAAKA,kBAChEG,SAAYF,CAAAA,eAAAA,CAAkBC,aAC9BJ,CAAAA,OAAAA,CAAUK,SAAY3jW,CAAAA,UACxB,CACF,CAAO,KAAA,CACLsjW,OAAUM,CAAAA,QAAAA,CAAWC,SAAY,CAAA,EACnC,CACA,MAAMC,OAAAA,CAAUz6X,MAAWmzB,GAAAA,mBAAAA,CAAsB,IAAIpf,YAAAA,CAAaG,KAAMtM,MAAQqyX,CAAAA,OAAAA,CAAAA,CAAWj6X,MAAWizB,GAAAA,mBAAAA,CAAsB,IAAIsE,WAAAA,CAAYrjB,KAAMtM,MAAQqyX,CAAAA,OAAAA,CAAAA,CAAW,IAAIhzX,UAAAA,CAAWiN,IAAMtM,CAAAA,MAAAA,CAAQqyX,SAClM,GAAI,CAACnC,SAAW,CAAA,CACd9rV,OAAQ7F,CAAAA,OAAO,CAACjsC,CAAE,CAAA,CAAGugY,QACvB,CAAA,KAAO,CACL,GAAI,CAACzuV,OAAQ7F,CAAAA,OAAO,CAACjsC,CAAAA,CAAE,CAAE8xC,OAAAA,CAAQ7F,OAAO,CAACjsC,CAAAA,CAAE,CAAG,EAAE,CAChD8xC,QAAQ7F,OAAO,CAACjsC,CAAE,CAAA,CAACswC,IAAK,CAAA,CAAGiwV,QAC7B,CACA7yX,MAAUqyX,EAAAA,OAAAA,CAAUhrU,aACpBsrU,CAAAA,QAAAA,CAAW9gY,IAAKoU,CAAAA,GAAG,CAAC0sX,QAAW,CAAA,EAAA,CAAK,CACpCC,CAAAA,CAAAA,SAAAA,CAAY/gY,IAAKoU,CAAAA,GAAG,CAAC2sX,SAAY,CAAA,EAAA,CAAK,CACxC,EAAA,CACF,CACAxuV,OAAAA,CAAQ3F,MAAM,EACd,CAAA,OAAO2F,OACT,CA5HA/pC,WAAYktO,CAAAA,QAAQ,CAAC,CACnB,KAAK,EACL,CAAA,IAAI,CAAC5uH,UAAU,CAAG,EACpB,CA0HF,CAEA,MAAMm6Q,SAAAA,SAAkB3E,cAKtB3lJ,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzBob,KAAAA,CAAMkC,gBAAgB,CAACpsO,GAAIqrO,CAAAA,IAAI,CAAE5uO,QAAUqyN,CAAAA,KAAAA,CAAO,IAAI,CAACtzG,UAAU,CAAA,CACjE,GAAIszG,KAAM3/M,CAAAA,IAAI,EAAI,CAAC2/M,KAAM3/M,CAAAA,IAAI,CAACvC,IAAI,CAAE,CAClCkiN,KAAAA,CAAM3/M,IAAI,CAACvC,IAAI,CAAGkpB,iBACpB,CACF,CACA0mF,IAAKx8G,CAAAA,GAAG,CAAEmP,IAAI,CAAEiwB,MAAM,CAAE+xV,cAAiB,CAAA,EAAE,CAAE,CAC3C,MAAMxqV,WAAAA,CAAc,IAAI,CAAC83E,KAAK,CAACtvG,IAAAA,CAAAA,CAC/B,GAAI,CAACw3B,WAAa,CAAA,CAChB,OAAO,IACT,CACA,MAAMM,OAAAA,CAAU,IAAInG,OAAAA,CAAQ1B,MAAQ,CAAA,CAClC3mC,IAAMuH,CAAAA,GAAAA,CACNkjC,QAAU7Z,CAAAA,cAAAA,CACV+Z,QAAU9Z,CAAAA,qBAAAA,CACVuZ,UAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,cACXtR,CAAAA,KAAAA,CAAO6rB,WAAY7rB,CAAAA,KAAK,CACxBC,MAAQ4rB,CAAAA,WAAAA,CAAY5rB,MAAM,CAC1B6qB,MAAQe,CAAAA,WAAAA,CAAYf,MAAM,CAC1B3qC,MAAAA,CAAQ4yB,iBACRjhB,CAAAA,IAAAA,CAAMkpB,gBACN6K,CAAAA,OAAAA,CAAS,MACT,GAAGwwV,cAAc,CACnB,CAAA,CACAlqV,OAAQ3F,CAAAA,MAAM,GACd,OAAO2F,OACT,CACAw3E,KAAAA,CAAMtvG,IAAI,CAAE,CACV,MAAMymX,UAAAA,CAAa,IAAInzX,UAAAA,CAAW0M,IAClC,CAAA,CAAA,MAAM+iW,MAAQ0jB,UAAW5xX,CAAAA,QAAQ,EACjC,CAAA,GAAI,CAACkuW,KAAAA,CAAMx8W,UAAU,CAAC,YAAe,CAAA,CAAA,CACnC,OAAO,IACT,CACA,MAAMw3C,UAAY,EAAC,CACnB,MAAM,IAAA,CAAK,CACT,MAAM4e,KAAO8pU,UAAW5xX,CAAAA,QAAQ,EAChC,CAAA,GAAI8nD,IAAK12D,CAAAA,MAAM,GAAK,CAAG,CAAA,CACrB,KACF,CAAA,KAAO,CACL,MAAMS,MAAQi2D,IAAKh2D,CAAAA,KAAK,CAAC,GAAA,CAAA,CACzB,GAAID,KAAAA,CAAMT,MAAM,GAAK,CAAA,CAAG,CACtB83C,SAAS,CAACr3C,KAAK,CAAC,CAAE,CAAA,CAAC,CAAGA,KAAK,CAAC,CAAA,EAAE,CAElC,CACF,CACA,GAAI,CAACq3C,SAAAA,CAAU1rC,cAAc,CAAC,QAAW,CAAA,CAAA,CACvC,OAAO,IACT,CACA,MAAMqpJ,WAAa+qO,UAAW5xX,CAAAA,QAAQ,EAAGlO,CAAAA,KAAK,CAAC,GAAA,CAAA,CAC/C,GAAI+0J,UAAWz1J,CAAAA,MAAM,GAAK,CAAA,CAAG,CAC3B,OAAO,IACT,CACA,MAAM2lB,MAAS1P,CAAAA,QAAAA,CAASw/I,UAAU,CAAC,EAAE,CAAE,EAAA,CAAA,CACvC,MAAM/vI,KAAAA,CAAQzP,QAASw/I,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAE,EACtC,CAAA,CAAA,MAAMxjH,MAAS,CAAA,IAAI,CAACwuV,WAAW,CAACD,UAAY96W,CAAAA,KAAAA,CAAOC,MAAQ8vI,CAAAA,UAAU,CAAC,CAAE,CAAA,GAAK,IAC7E,CAAA,CAAA,GAAI,CAACxjH,MAAAA,CAAQ,CACX,OAAO,IACT,CACA,OAAO,CACLvsB,KAAAA,CAAOA,MACPC,MAAQA,CAAAA,MAAAA,CACR6qB,MAAQ,CAAA,CACNyB,MACD,CACH,CACF,CACAwuV,WAAAA,CAAYD,UAAU,CAAE96W,KAAK,CAAEC,MAAM,CAAEgqB,KAAK,CAAE,CAC5C,GAAIjqB,KAAAA,CAAQ,GAAKA,KAAQ,CAAA,KAAA,CAAQ,CAC/B,OAAO,IAAI,CAACg7W,eAAe,CAACF,UAAAA,CAAY96W,KAAOC,CAAAA,MAAAA,CACjD,CACA,MAAMg7W,KAAO,CACX,CAAA,CACA,CACA,CAAA,CAAA,CACA,CACD,CAAA,CACDH,WAAW7xX,SAAS,CAACgyX,IACrB,CAAA,CAAA,GAAIA,IAAI,CAAC,CAAE,CAAA,GAAK,CAAKA,EAAAA,IAAI,CAAC,CAAA,CAAE,GAAK,CAAA,EAAK,CAACA,IAAI,CAAC,CAAA,CAAE,CAAG,GAAG,IAAO,CAAG,CAAA,CAC5DH,UAAW7yX,CAAAA,IAAI,CAAC,CAAC,GACjB,OAAO,IAAI,CAAC+yX,eAAe,CAACF,UAAAA,CAAY96W,MAAOC,MACjD,CAAA,CACA,MAAMlL,MAAAA,CAAS,IAAIg2B,WAAAA,CAAY/qB,MAAQC,MAAS,CAAA,CAAA,CAAA,CAChD,MAAM9W,IAAAA,CAAO,IAAI/B,UAAAA,CAAW2N,QAC5B,IAAImmX,SAAAA,CAAYjxV,KAAQ,CAAA,CAAA,CAAIjqB,KAAQ,CAAA,CAAA,EAAKC,MAAS,CAAA,CAAA,CAClD,CAAA,IAAIvR,CAAG0H,CAAAA,CAAAA,CAAG/b,EAAG4S,OAASotC,CAAAA,KAAAA,CAAOr4C,KAC7B,CAAA,IAAIoU,CAAI,CAAA,CAAA,CAAGA,EAAI6J,MAAQ,CAAA,EAAE7J,CAAE,CAAA,CACzB,GAAIA,CAAAA,CAAG,CACL0kX,UAAW7xX,CAAAA,SAAS,CAACgyX,IAAAA,EACvB,CACA,GAAI,CAACA,IAAI,CAAC,CAAA,CAAE,EAAI,CAAA,EAAKA,IAAI,CAAC,CAAE,CAAA,GAAKj7W,KAAO,CAAA,CACtC,OAAO,IACT,CACA,IAAI/S,OAAAA,CAAU,CAAGA,CAAAA,OAAAA,CAAU,EAAG,EAAEA,OAAAA,CAAQ,CACtCyB,CAAAA,CAAI,CACJ,CAAA,MAAMA,EAAIsR,KAAM,CAAA,CACdq6B,KAAQygV,CAAAA,UAAAA,CAAWpyX,MAAM,EAAA,CACzB,GAAI2xC,KAAAA,CAAQ,GAAK,CAAA,CACfA,KAAS,EAAA,GAAA,CACT,GAAI3rC,CAAAA,CAAI2rC,MAAQr6B,KAAO,CAAA,CACrB,OAAO,IACT,CACAhe,KAAAA,CAAQ84X,WAAWpyX,MAAM,EAAA,CACzB,IAAIrO,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIggD,MAAO,EAAEhgD,CAAAA,CAAE,CACxB8O,IAAI,CAAC+xX,SAAAA,CAAYjuX,QAAU,CAAIyB,CAAAA,CAAAA,EAAAA,CAAI,CAAG1M,MACxC,CACF,CAAA,KAAO,CACL,GAAIq4C,KAAAA,GAAU,CAAK3rC,EAAAA,CAAAA,CAAI2rC,KAAQr6B,CAAAA,KAAAA,CAAO,CACpC,OAAO,IACT,CACA,IAAI3lB,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAO,CAAA,EAAEhgD,CAAE,CAAA,CACxB8O,IAAI,CAAC+xX,UAAYjuX,OAAU,CAAA,CAAA,CAAIyB,CAAI,EAAA,CAAA,CAAGosX,UAAWpyX,CAAAA,MAAM,GACzD,CACF,CACF,CACF,CACAwyX,SAAal7W,EAAAA,KAAAA,CAAQ,GAAKiqB,KAAAA,CAAQ,CAAI,CAAA,CAAC,CAAA,EACzC,CACA,OAAO9gC,IACT,CACA6xX,eAAAA,CAAgBF,UAAU,CAAE96W,KAAK,CAAEC,MAAM,CAAE,CACzC,OAAO66W,UAAAA,CAAWlzX,cAAc,GAAKoY,KAAAA,CAAQC,MAAS,CAAA,CAAA,CAAI,IAAI7Y,UAAAA,CAAW0zX,WAAW1xX,WAAW,CAAE0xX,UAAW/yX,CAAAA,MAAM,CAAI,CAAA,IACxH,CA9HA3F,WAAYktO,CAAAA,QAAQ,CAAC,CACnB,KAAK,EACL,CAAA,IAAI,CAAC5uH,UAAU,CAAG,EACpB,CA4HF,CAEA,MAAMy6Q,iBAAoB,CAAA,CACxB,QAAU5sW,CAAAA,cAAAA,CACV,OAASC,CAAAA,qBAAAA,CACT,SAAUC,uBACZ,CAAA,CACA,MAAM2sW,gBAAAA,CAAmB,CACvB,SAAA,CAAW9pW,eACX,QAAUC,CAAAA,aAAAA,CACV,qBAAuBC,CAAAA,6BAAAA,CACvB,oBAAsBE,CAAAA,4BAAAA,CACtB,qBAAsBD,4BACtB,CAAA,mBAAA,CAAqBE,2BACvB,CAAA,CACA,MAAM0pW,iBAAAA,CAAoB,CACxB,SAAWvgW,CAAAA,mBAAAA,CACX,MAAQC,CAAAA,gBAAAA,CACR,MAAQC,CAAAA,gBAAAA,CACR,OAAQC,gBACR,CAAA,aAAA,CAAeC,uBACjB,CAAA,CACA,MAAMogW,2BAAAA,CAA8B,SAASnvV,OAAO,CAAA,CAClD,MAAM2xB,iBAAAA,CAAoB94B,YAAaI,CAAAA,kBAAkB,CAAC+G,OAAAA,CAAQrF,MAAM,CAAEqF,OAAQpF,CAAAA,OAAO,CACzF,CAAA,MAAMw0V,cAAgB,SAASpxU,MAAM,CACnC,CAAA,OAAOA,MAAkB9O,YAAAA,iBAAAA,EAAqB8O,kBAAkB/O,gBAAoB+O,EAAAA,MAAAA,YAAkB/e,gBACxG,CAAA,CACA,GAAI,EAAEe,OAAQlE,CAAAA,OAAO,GAAKlV,iBAAAA,EAAqBoZ,OAAQlE,CAAAA,OAAO,GAAK3U,mBAAkB,CAAA,EAAM6Y,OAAQ1D,CAAAA,OAAO,EAAI0D,OAAAA,CAAQ1C,WAAW,EAAI0C,OAAAA,CAAQ7F,OAAO,CAAChsC,MAAM,GAAK,GAAK6xC,OAAQ7F,CAAAA,OAAO,CAAChsC,MAAM,GAAKwjE,iBAAAA,EAAqBy9T,cAAcpvV,OAAQvF,CAAAA,QAAQ,CAAGuF,OAAAA,CAAQ7F,OAAO,CAAC,CAAE,CAAA,CAAC,CAAE,CAAA,CAAG6F,OAAQ7F,CAAAA,OAAO,CAAC,CAAA,CAAE,EAAG,CACjS,MACF,CACA,MAAMk1V,UAAa,CAAA,SAASx7W,KAAK,CAAEC,MAAM,CAAE5L,IAAI,CAC7C,CAAA,MAAMonX,aAAe7hY,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGgS,KAAS,EAAA,CAAA,CAAA,CAC1C,MAAM07W,aAAgB9hY,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,CAAGiS,CAAAA,MAAAA,EAAU,GAC5C,MAAM07W,WAAAA,CAAc,IAAItnX,IAAAA,CAAKjS,WAAW,CAACq5X,aAAeC,aAAgB,CAAA,CAAA,CAAA,CACxE,MAAME,EAAAA,CAAKhiY,IAAKmQ,CAAAA,KAAK,CAACiW,KAAQy7W,CAAAA,YAAAA,CAAAA,CAC9B,MAAMI,EAAAA,CAAKjiY,IAAKmQ,CAAAA,KAAK,CAACkW,MAASy7W,CAAAA,aAAAA,CAAAA,CAC/B,MAAMI,IAAAA,CAAOF,EAAKC,CAAAA,EAAAA,CAClB,IAAI,IAAIzlX,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIslX,aAAe,CAAA,EAAEtlX,EAAE,CACpC,IAAI,IAAI1H,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+sX,aAAc,EAAE/sX,CAAAA,CAAE,CACnC,IAAI,IAAIlS,CAAAA,CAAI,EAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAAA,CAAE,CACxB,IAAIiyE,IAAM,CACV,CAAA,IAAI,IAAIvtD,EAAAA,CAAK,CAAGA,CAAAA,EAAAA,CAAK26W,GAAI,EAAE36W,EAAAA,CAAG,CAC5B,IAAI,IAAID,EAAAA,CAAK,EAAGA,EAAK26W,CAAAA,EAAAA,CAAI,EAAE36W,EAAAA,CAAG,CAC5BwtD,GAAAA,EAAOp6D,IAAI,CAAC,CAAC3F,CAAIktX,CAAAA,EAAAA,CAAK36W,EAAK,CAAC7K,CAAAA,CAAIylX,CAAAA,EAAAA,CAAK36W,EAAC,EAAKlB,KAAI,EAAK,EAAIxjB,CAAE,EAC5D,CACF,CACAm/X,WAAW,CAAC,CAACjtX,CAAAA,CAAI0H,CAAIqlX,CAAAA,YAAW,EAAK,CAAA,CAAIj/X,EAAE,CAAGiyE,GAAAA,CAAMqtT,KACtD,CACF,CACF,CACA,OAAOH,WACT,CAAA,CACA,IAAI,IAAIjxV,KAAQyB,CAAAA,OAAAA,CAAQ7F,OAAO,CAAChsC,MAAM,CAAEowC,KAAAA,CAAQozB,iBAAmB,CAAA,EAAEpzB,MAAM,CACzE,MAAM1qB,KAAQpmB,CAAAA,IAAAA,CAAKoU,GAAG,CAAC,EAAGm+B,OAAQrF,CAAAA,MAAM,EAAI4D,KAAAA,CAAQ,CACpD,CAAA,CAAA,MAAMzqB,OAASrmB,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGm+B,OAAQpF,CAAAA,OAAO,EAAI2D,KAAQ,CAAA,CAAA,CAAA,CACtD,GAAIyB,OAAAA,CAAQvF,QAAQ,CAAE,CACpB,MAAM2C,IAAAA,CAAO,EAAE,CACf,IAAI,IAAIoB,KAAO,CAAGA,CAAAA,IAAAA,CAAO,CAAG,CAAA,EAAEA,IAAK,CAAA,CACjCpB,KAAKpuC,IAAI,CAACqgY,UAAWx7W,CAAAA,KAAAA,CAAOC,MAAQksB,CAAAA,OAAAA,CAAQ7F,OAAO,CAACoE,KAAAA,CAAQ,CAAE,CAAA,CAACC,IAAK,CAAA,CAAA,EACtE,CACAwB,OAAQ7F,CAAAA,OAAO,CAACnrC,IAAI,CAACouC,IAAAA,EACvB,CAAO,KAAA,CACL4C,OAAQ7F,CAAAA,OAAO,CAACnrC,IAAI,CAACqgY,UAAAA,CAAWx7W,MAAOC,MAAQksB,CAAAA,OAAAA,CAAQ7F,OAAO,CAACoE,KAAQ,CAAA,CAAA,CAAE,GAC3E,CACF,CACAyB,OAAQ5B,CAAAA,cAAc,CAAG4B,OAAAA,CAAQvF,QAAQ,CAAG,CAC1C,CACE,IAAA,CACA,IACA,CAAA,IAAA,CACA,KACA,IACA,CAAA,IAAA,CACD,CACF,CAAG,CACF,IAAA,EACD,CAEH,CAAA,MAAMm1V,cAAuBpkJ,SAAAA,eAAAA,CAgB3B,IAAIy+H,WAAAA,CAAYp0W,KAAK,CAAE,CACrB,IAAI,CAACg6X,SAAS,CAAC5lB,WAAW,CAAGp0W,MAC/B,CACA,IAAIo0W,WAAc,EAAA,CAChB,OAAO,IAAI,CAAC4lB,SAAS,CAAC5lB,WACxB,CACA,IAAI11P,UAAAA,CAAW1+G,KAAK,CAAE,CACpB,IAAI,CAACg6X,SAAS,CAACt7Q,UAAU,CAAG1+G,KAC5B,CAAA,IAAI,MAAMskS,MAAU,IAAA,IAAI,CAACk1E,OAAO,CAAC,CAC/B,GAAI,IAAI,CAACA,OAAO,CAAC90W,cAAc,CAAC4/R,QAAS,CACvC,IAAI,CAACk1E,OAAO,CAACl1E,MAAAA,CAAO,CAAC5lL,UAAU,CAAG1+G,MACpC,CACF,CACF,CACA,IAAI0+G,UAAa,EAAA,CACf,OAAO,IAAI,CAACs7Q,SAAS,CAACt7Q,UAAU,CAElC06P,oBAAqBl2W,CAAAA,GAAG,CAAE,CACxB,OAAOA,GAAI5B,CAAAA,OAAO,CAAC,GAAA,CAAA,EAAQ,CAAI4B,CAAAA,GAAAA,CAAIlK,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CAAGkK,GACrD,CACAu2W,UAAWv2W,CAAAA,GAAG,CAAE,CACd,MAAMxJ,GAAAA,CAAM1B,KAAKyB,YAAY,CAAC,IAAI,CAAC2/W,oBAAoB,CAACl2W,MAAMk9G,WAAW,EAAA,CAAG3oH,OAAO,CAAC,GAAK,CAAA,EAAA,CAAA,CACzF,OAAO,IAAI,CAAC+hX,OAAO,CAAC9/W,GAAI,CAAA,EAAI,IAAI,CAACsgY,SAAS,CAE5CC,kBAAmBjoK,CAAAA,KAAK,CAAE,CACxB,MAAMloN,OAAU,CAAA,EAChB,CAAA,GAAIkoN,MAAO,CACT,GAAIA,KAAMr2N,CAAAA,IAAI,EAAErD,MAAAA,CAAS,EAAG,CAC1BwR,OAAAA,CAAQnO,IAAI,CAAGq2N,KAAMr2N,CAAAA,KAAI,CAE3B,MAAMu+W,SAAYloJ,CAAAA,KAAAA,CAAM3/M,IAAI,CAC5B,GAAI6nW,SAAUx1W,CAAAA,cAAc,CAAC,WAAA,CAAA,CAAc,CACzCoF,OAAAA,CAAQi8B,SAAS,CAAGqzV,gBAAgB,CAAClf,SAAAA,CAAUwT,SAAS,EAAC,CAE3D,GAAIxT,SAAUx1W,CAAAA,cAAc,CAAC,WAAA,CAAA,CAAc,CACzCoF,OAAQo8B,CAAAA,SAAS,CAAGkzV,gBAAgB,CAAClf,SAAAA,CAAUyT,SAAS,EAAC,CAE3D,GAAIzT,SAAAA,CAAUx1W,cAAc,CAAC,YAAa,CACxCoF,OAAAA,CAAQs8B,QAAQ,CAAG+yV,iBAAiB,CAACjf,UAAUoB,QAAQ,EAAC,CAE1D,GAAIpB,SAAAA,CAAUx1W,cAAc,CAAC,UAAA,CAAA,CAAa,CACxCoF,OAAAA,CAAQw8B,QAAQ,CAAG6yV,iBAAiB,CAACjf,SAAAA,CAAUqB,QAAQ,EAAC,CAE1D,GAAIrB,SAAUx1W,CAAAA,cAAc,CAAC,SAAA,CAAA,CAAY,CACvCoF,OAAAA,CAAQ+5B,OAAO,CAAGq2U,SAAAA,CAAUr2U,QAC9B,CACA,GAAIq2U,UAAUx1W,cAAc,CAAC,YAAe,CAAA,CAAA,CAC1CoF,OAAQi9B,CAAAA,UAAU,CAAGmzU,SAAUnzU,CAAAA,WAAU,CAE3C,GAAImzU,SAAAA,CAAUx1W,cAAc,CAAC,OAAA,CAAA,CAAU,CACrCoF,OAAAA,CAAQm+B,KAAK,CAAG,CAAC,CAACiyU,SAAAA,CAAUjyU,MAC9B,CACA,GAAIiyU,UAAUx1W,cAAc,CAAC,MAAS,CAAA,CAAA,CACpCoF,OAAQ+qB,CAAAA,IAAI,CAAG,CAAC,CAACqlV,SAAUrlV,CAAAA,KAAI,CAEjC/qB,QAAQgG,IAAI,CAAGgpB,mBACf,CAAA,GAAIohV,SAAUx1W,CAAAA,cAAc,CAAC,MAAS,CAAA,CAAA,CACpCoF,OAAQgG,CAAAA,IAAI,CAAGupX,iBAAiB,CAACnf,SAAUpqW,CAAAA,IAAI,EACjD,CAAO,KAAA,GAAIoqW,SAAUx1W,CAAAA,cAAc,CAAC,MAAA,CAAA,EAAWw1W,SAAUK,CAAAA,IAAI,CAAE,CAC7DzwW,QAAQgG,IAAI,CAAGipB,iBACjB,CAAA,KAAO,GAAIi5L,KAAAA,CAAMqb,IAAI,EAAKrb,CAAAA,KAAAA,CAAMqb,IAAI,CAACnW,GAAG,CAAG,CAAA,IAAO,CAAA,CAAG,CACnDptN,OAAAA,CAAQgG,IAAI,CAAGopB,wBACjB,CACF,CACA,OAAOpvB,OACT,CACAykO,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAEqyN,KAAK,CAAE,CACzB,GAAI,OAAO9uN,GAAAA,GAAQ,QAAU,CAAA,CAC3BA,IAAM,CACJqrO,IAAAA,CAAMrrO,GACN62D,CAAAA,QAAAA,CAAU72D,GACZ,EACF,CACA,IAAI,CAACu2W,UAAU,CAACv2W,GAAI62D,CAAAA,QAAQ,EAAEw0K,IAAI,CAACrrO,GAAKvD,CAAAA,QAAAA,CAAUqyN,KACpD,EAAA,CACAtyG,KAAKx8G,GAAG,CAAEmP,IAAI,CAAE2/M,KAAK,CAAE,CACrB,GAAI,CAAC9uN,GAAK,CAAA,CACR,OAAO/C,SACT,CACA,MAAMk0X,cAAAA,CAAiB,IAAI,CAAC4F,kBAAkB,CAACjoK,OAC/C,IAAI7nL,OAAAA,CAAU,IAAI,CAACsvU,UAAU,CAACv2W,KAAKw8G,IAAI,CAACx8G,GAAKmP,CAAAA,IAAAA,CAAM,IAAI,CAACwrC,OAAO,CAAEw2U,cAAAA,CAAAA,CACjE,GAAIlqV,OAAAA,GAAY,IAAM,CAAA,CACpBA,OAAU,CAAA,IAAInG,OAAQ,CAAA,IAAI,CAAC6Z,OAAO,CAAE,CAClC7/B,MAAO,CACPC,CAAAA,MAAAA,CAAQ,CACR9f,CAAAA,MAAAA,CAAQ2yB,gBACV,CAAA,EACF,MAAO,CACLwoW,2BAAAA,CAA4BnvV,OAC5B,CAAA,CAAA,GAAI93B,IAAK0/W,CAAAA,cAAc,CAAE,CACvB//J,KAAAA,CAAMqb,IAAI,CAAC9jG,QAAQ,CAAC2jG,KAAK,CAAChW,GAAG,EAAI,CAAC,EACpC,CACF,CACA,OAAO/sL,OACT,CACA8jM,KAAAA,CAAMjc,KAAK,CAAEoe,MAAM,CAAE,CACnB,MAAMjmM,OAAAA,CAAU6nL,KAAMpyK,CAAAA,QAAQ,CAC9B,GAAI,CAACzV,OAAS,CAAA,CACZ,MACF,CACA,MAAMrgC,OAAU,CAAA,IAAI,CAACmwX,kBAAkB,CAACjoK,KAAAA,CAAAA,CACxC,IAAK,MAAM9xN,GAAAA,IAAOhG,MAAOoW,CAAAA,IAAI,CAACxG,OAAAA,CAAAA,CAAS,CACrCqgC,OAAO,CAACjqC,GAAI,CAAA,CAAG4J,OAAO,CAAC5J,KAAI,CAE/B,CAvHAE,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,SAAA,CAAA,CACX,MAAM+H,MAAAA,CAAS/H,IAAI+H,MAAM,CACzB,MAAM9tM,MAAAA,CAAS+lM,GAAIpmM,CAAAA,cAAc,CACjC,IAAI,CAAC4b,OAAO,CAAGvb,MACf,CAAA,IAAI,CAAC+tM,OAAO,CAAGD,MACf,CAAA,IAAI,CAAC4pJ,SAAS,CAAG,IAAI1F,SAAAA,CAAUlkJ,MAAQ9tM,CAAAA,MAAAA,CACvC,CAAA,IAAI,CAACk3U,OAAO,CAAG,CACb0gB,GAAAA,CAAK,IAAI7C,SAAUjnJ,CAAAA,MAAAA,CAAAA,CACnB+pJ,GAAK,CAAA,IAAI7E,SAAUllJ,CAAAA,MAAAA,CAAAA,CACnBgqJ,KAAM,IAAI9D,UAAAA,CAAWlmJ,MAAQ9tM,CAAAA,MAAAA,CAAAA,CAC7B4qM,KAAO,CAAA,IAAIinJ,YAAY/jJ,MAAQ9tM,CAAAA,MAAAA,CAAAA,CAC/Bk8S,GAAK,CAAA,IAAIq6C,SAAUzoJ,CAAAA,MAAAA,CACrB,EACF,CA0GF,CAEA,MAAMiqJ,aAAAA,CAAgB,QACtB,CAAA,MAAMC,UAAY,cAClB,CAAA,MAAMC,SAAY,CAAA,cAAA,CAClB,MAAMC,cAAAA,CAAiB,SACvB,MAAMC,aAAAA,CAAgB,OACtB,CAAA,MAAMC,kBAAqB,CAAA,aAAA,CAC3B,MAAMC,oBAAAA,CAAuB,eAC7B,CAAA,MAAMC,iBAAoB,CAAA,WAAA,CAC1B,MAAMC,gBAAAA,CAAmB,OACzB,MAAMC,kBAAAA,CAAqB,QAC3B,CAAA,MAAMC,mBAAsB,CAAA,iBAAA,CAC5B,MAAMC,UAAa,CAAA,MAAA,CACnB,MAAMC,UAAAA,CAAa,MACnB,CAAA,MAAMC,YAAc,OACpB,CAAA,MAAMC,WAAc,CAAA,MAAA,CACpB,MAAMC,WAAAA,CAAc,OACpB,MAAMC,YAAAA,CAAe,OACrB,CAAA,MAAMC,iBAAoB,CAAA,OAAA,CAC1B,MAAMC,iBAAoB,CAAA,OAAA,CAC1B,MAAMC,gBAAAA,CAAmB,MACzB,CAAA,MAAMC,wBAA0B,eAChC,CAAA,MAAMC,uBAA0B,CAAA,eAAA,CAChC,MAAMC,yBAAAA,CAA4B,kBAClC,MAAMC,yBAAAA,CAA4B,gBAClC,CAAA,MAAMC,wBAA2B,CAAA,SAEjC,CAAMC,MAAAA,YAAAA,CAMJ,IAAI9pT,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC+pT,UAAU,CAExB,IAAItxS,SAAAA,EAAY,CACd,OAAO,IAAI,CAACsxS,UAAU,EAAI,IAAI,CAACr4Q,QAAQ,CAAC6zB,MAAM,EAAI,IAAI,CAAC7zB,QAAQ,CAACs4Q,QAAQ,CAACC,eAAe,GAAK,IAC/F,CACA,IAAI1lT,OAAQ,CACV,GAAI,CAAC,IAAI,CAACwlT,UAAU,EAAI,CAAC,IAAI,CAACr4Q,QAAQ,CAAC6zB,MAAM,EAAI,CAAC,IAAI,CAAC7zB,QAAQ,CAACs4Q,QAAQ,CAACC,eAAe,CAAE,CACxF,OAAO,IACT,CACA,OAAO,IAAI,CAACv4Q,QAAQ,CAACs4Q,QAAQ,CAACC,eAAe,CAACnsX,IAAI,CAEpD,IAAI6jI,IAAAA,CAAK3zI,KAAK,CAAE,CACd,GAAI,CAAC,IAAI,CAAC+7X,UAAU,EAAI,IAAI,CAACr4Q,QAAQ,CAAC6zB,MAAM,CAAE,CAC5C,MACF,CACA,IAAI,CAAC2kP,KAAK,CAAGl8X,MACf,CACA,IAAI2zI,IAAAA,EAAO,CACT,OAAO,IAAI,CAACuoP,KAAK,CAxBnB97X,WAAYujH,CAAAA,OAAO,CAAC,CAClB,IAAI,CAACo4Q,UAAU,CAAGrgY,QAASI,CAAAA,OAAO,EAAI,CAAC,CAACzB,MAAO8hY,CAAAA,iBAAiB,CAChE,IAAI,CAACD,KAAK,CAAG,IACb,CAAA,IAAI,CAACx4Q,QAAQ,CAAGC,QAClB,CAsBF,CAEA,MAAMy4Q,SAAW,EAAE,CACnB,MAAMC,QAAAA,CAAW,EACjB,OAAMC,eAAwBh8X,SAAAA,YAAAA,CAc5BoC,MAAS,EAAA,CACP,GAAI,CAAC,IAAI,CAAC65X,gBAAgB,CAAE,CAC1B,MACF,CACA,MAAMhrL,OAAU,CAAA,IAAI,CAAC5tF,OAAO,CAAC64Q,OAAO,CAACjrL,OAAO,CAC5C,MAAMlwM,GAAAA,CAAMkwM,OAAQjwM,CAAAA,OAAO,CAAC,IAAI,CAAA,CAChC,GAAID,GAAAA,GAAQ,CAAC,CAAA,CAAGkwM,QAAQpwM,MAAM,CAACE,GAAK,CAAA,CAAA,CAAA,CACpC,IAAI,CAACyoH,MAAM,GACb,CACAA,MAAS,EAAA,CACP,IAAI,CAACyyQ,gBAAgB,CAACE,MAAM,EAC5B,CAAA,IAAI,CAACF,gBAAgB,CAAG,IAAA,CACxB,IAAI,CAACh7X,IAAI,CAAC,UACV,IAAI,CAACoiH,OAAO,CAAC64Q,OAAO,CAACj7X,IAAI,CAAC,QAAA,CAAU,IAAI,EAC1C,CACAkqC,MAAAA,CAAO0rK,KAAK,CAAE,CACZ,GAAI,IAAI,CAACulL,UAAU,CAAE,CACnB,MAAMC,gBAAAA,CAAmBxlL,KAAMylL,CAAAA,kCAAkC,CAAC,IAAI,CAACL,gBAAgB,CAAA,CACvF,IAAI,IAAIlkY,CAAI,CAAA,CAAA,CAAGA,EAAIskY,gBAAiBrkY,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC9C,MAAMwkY,gBAAkBF,gBAAgB,CAACtkY,CAAE,CAAA,CAC3C,GAAI,CAACwkY,gBAAgB9uT,OAAO,CAACz1E,MAAM,CAAE,CACnC,QACF,CACA,IAAI0yU,WAAAA,CACJ,GAAI6xD,eAAAA,CAAgB7xD,WAAW,CAAE,CAC/BA,WAAc,CAAA,IAAI,CAACrnN,OAAO,CAACwjJ,KAAK,CAAC21H,iBAAiB,CAACD,eAAgB7xD,CAAAA,WAAW,EAChF,CACA,IAAI,CAAC+xD,gBAAgB,CAACF,eAAAA,CAAgB9uT,OAAO,CAAEi9P,aACjD,CACF,CAAA,KAAO,CACL,MAAMj9P,OAAUopI,CAAAA,KAAAA,CAAM6lL,iBAAiB,CAAC,IAAI,CAACT,gBAAgB,CAC7D,CAAA,GAAI,CAACxuT,OAAQz1E,CAAAA,MAAM,CAAE,CACnB,MACF,CACA,IAAI,CAACykY,gBAAgB,CAAChvT,OAAAA,EACxB,CACF,CACAgvT,iBAAiBhvT,OAAO,CAAEi9P,WAAW,CAAE,CACrC,GAAI,IAAI,CAACiyD,YAAY,EAAI,IAAI,CAACA,YAAY,GAAKjyD,WAAAA,CAAa,CAC1D,MACF,CACA,MAAMjlT,MAASq2W,CAAAA,QAAAA,CAASziY,GAAG,EAAM,EAAA,IAAI2a,IACrC,CAAA,GAAI02T,WAAa,CAAA,CACfjlT,OAAO3uB,IAAI,CAAC4zU,WAAYryC,CAAAA,SAAS,EACnC,EAAA,CAAA,KAAO,CACL5yQ,MAAO3uB,CAAAA,IAAI,CAAC,IAAI,CAACusH,OAAO,CAAC2nB,MAAM,CAAC3oB,WAAW,EAAA,EAC7C,CACA,IAAIu6Q,kBAAoB1sX,QACxB,CAAA,IAAI2sX,sBAAyB,CAAA,IAAA,CAC7B,MAAMxgX,QAAAA,CAAWy/W,SAASziY,GAAG,EAAA,EAAM,IAAI2a,IAAAA,CACvC,MAAM0qI,QAAAA,CAAWq9O,SAAS1iY,GAAG,EAAA,EAAM,IAAIumB,IAAAA,CACvC,IAAI,IAAI7nB,CAAI,CAAA,CAAA,CAAGA,CAAI01E,CAAAA,OAAAA,CAAQz1E,MAAM,CAAED,CAAI,EAAA,CAAA,CACrC,MAAM+kY,IAAOrvT,CAAAA,OAAO,CAAC11E,CAAAA,CAAE,CAACglY,OAAO,CAAC,IAAI,CAAC15Q,OAAO,CAAC25Q,eAAe,CAAA,CAC5D,MAAMpoX,QAAW6Q,CAAAA,MAAAA,CAAO7Q,QAAQ,CAACkoX,IAAK5qP,CAAAA,SAAS,CAAC71H,QAAQ,CAAA,CACxD,GAAIzH,QAAAA,EAAYgoX,iBAAmB,CAAA,CACjC,QACF,CACAA,iBAAAA,CAAoBhoX,QACpBioX,CAAAA,sBAAAA,CAAyBpvT,OAAO,CAAC11E,EAAE,CACnCskB,QAAAA,CAASvlB,IAAI,CAACgmY,IAAK5qP,CAAAA,SAAS,CAAC71H,QAAQ,CAAA,CACrCqiI,QAAS5nJ,CAAAA,IAAI,CAACgmY,IAAAA,CAAK5qP,SAAS,CAACtvB,WAAW,EAC1C,CACA,IAAI,CAAC3hH,IAAI,CAAC,QAAUob,CAAAA,QAAAA,CAAUqiI,QAAUgsL,CAAAA,WAAAA,EAAe,IAAI,CAACiyD,YAAY,CAAEE,sBAAAA,CAAAA,CAC1E,IAAI,CAACx5Q,OAAO,CAAC64Q,OAAO,CAACj7X,IAAI,CAAC,QAAA,CAAU,IAAI,CAAEob,SAAUqiI,QAAUgsL,CAAAA,WAAAA,EAAe,IAAI,CAACiyD,YAAY,CAAEE,wBAChGf,QAASjjY,CAAAA,IAAI,CAAC4sB,MAAAA,CAAAA,CACdq2W,QAASjjY,CAAAA,IAAI,CAACwjB,QACd0/W,CAAAA,CAAAA,QAAAA,CAASljY,IAAI,CAAC6lJ,QAChB,EAAA,CA1EA5+I,YAAYujH,OAAO,CAAE45Q,eAAe,CAAEC,SAAS,CAAExyD,YAAc,IAAI,CAAC,CAClE,KAAK,EACL,CAAA,IAAI,CAACrnN,OAAO,CAAGA,OACf,CAAA,IAAI,CAAC44Q,gBAAgB,CAAGgB,eACxB,CAAA,IAAI,CAACb,UAAU,CAAGc,SAClB,CAAA,IAAI,CAACP,YAAY,CAAGjyD,YACtB,CAqEF,CAlFMsxD,eAEG9yX,CAAAA,YAAY,CAAG,QAGpB,CALE8yX,eAKGmB,CAAAA,YAAY,CAAG,QA+ExB,OAAMC,SAAkBp9X,SAAAA,YAAAA,CA2BtBq9X,eAAkB,EAAA,CAChB,GAAI,IAAI,CAACh6Q,OAAO,CAACw+C,OAAO,CAACy7N,eAAe,CAAE,CACxC,MAAMnzS,SAAY,CAAA,IAAI,CAACk5B,OAAO,CAACw+C,OAAO,CAACy7N,eAAe,CAACt8X,OAAO,CAAC,UAAgB,CAAA,GAAA,CAAC,EAChF,GAAI,CAACmpF,SAAW,CAAA,OAChB,IAAI,CAACozS,UAAU,CAAGpzS,SAClB,CAAA,IAAI,CAAClpF,IAAI,CAAC,WACZ,EAAA,CAAA,KAAO,GAAI,CAAC,IAAI,CAACu8X,qBAAqB,CAAE,CACtC,IAAI,CAACA,qBAAqB,CAAG,KAC7B,IAAI,CAACn6Q,OAAO,CAACw+C,OAAO,CAAC47N,qBAAqB,CAACvD,cAAAA,CAAAA,CAAgBl2X,IAAI,CAAC,cAAC05X,EAAAA,CAC/D,IAAI,CAACr6Q,OAAO,CAACw+C,OAAO,CAAC87N,oBAAoB,CAAC,CACxC91T,KAAAA,CAAO61T,cACT,CAAA,CAAA,CAAG15X,IAAI,CAAC,aACN45X,EAAAA,CAAAA,aAAAA,CAAczB,MAAM,EAAA,CACpB,GAAI,IAAI,CAAC94Q,OAAO,CAAC4zB,MAAM,CAAE,CACvB,IAAI,CAACsmP,UAAU,CAAG,IAClB,CAAA,IAAI,CAACt8X,IAAI,CAAC,WACZ,EAAA,CACF,CAAG22F,CAAAA,CAAAA,KAAK,CAAC,IAAA,IACX,CAAGA,CAAAA,CAAAA,KAAK,CAAC,IAAA,EACX,EAAA,CACF,CACAimS,aAAgB,EAAA,CACd,GAAI,CAAC,IAAI,CAACN,UAAU,CAAE,OACtB,IAAI,CAACA,UAAU,CAAG,MAClB,IAAI,IAAIxlY,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACk5M,OAAO,CAACj5M,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,IAAI,CAACk5M,OAAO,CAACl5M,CAAAA,CAAE,CAACyxH,MAAM,GACxB,CACA,IAAI,CAACynF,OAAO,CAAG,EAAE,CACjB,IAAI,CAAChwM,IAAI,CAAC,aACZ,EAAA,CACAuoB,MAAMhgB,OAAU,CAAA,EAAE,CAAE,CAClB,GAAI,CAAC,IAAI,CAACiyX,UAAU,CAAE,CACpBjyX,OAAAA,CAAQnK,QAAQ,GAAG,IAAI4C,KAAM,CAAA,6BAAA,CAAA,CAAgC,IAC7D,CAAA,CAAA,MACF,CACA,GAAI,CAAC,IAAI,CAACs7X,UAAU,CAAE,CACpB/zX,OAAQnK,CAAAA,QAAQ,GAAG,IAAI4C,KAAM,CAAA,6BAAA,CAAA,CAAgC,MAC7D,MACF,CACA,GAAI,CAACuH,OAAQs0X,CAAAA,OAAO,EAAI,CAACt0X,OAAAA,CAAQ23U,SAAS,CAAE,CAC1C33U,OAAAA,CAAQ23U,SAAS,CAAG+4C,eACtB,CACA,IAAI6D,KACJ,CAAA,MAAMC,UAAYx0X,OAAQw0X,CAAAA,SAAS,CACnC,GAAIA,SAAW,CAAA,CACb,MAAMv4W,MAAS,CAAA,IAAIw4W,QAASD,CAAAA,SAAAA,CAAUv4W,MAAM,CAACrZ,CAAC,CAAE4xX,SAAUv4W,CAAAA,MAAM,CAAC3R,CAAC,CAAEkqX,SAAAA,CAAUv4W,MAAM,CAACxR,CAAC,CAAE,CAAA,CAAA,CACxF,MAAM2R,SAAAA,CAAY,IAAIq4W,QAASD,CAAAA,SAAAA,CAAUp4W,SAAS,CAACxZ,CAAC,CAAE4xX,UAAUp4W,SAAS,CAAC9R,CAAC,CAAEkqX,SAAUp4W,CAAAA,SAAS,CAAC3R,CAAC,CAAE,CACpG8pX,CAAAA,CAAAA,KAAAA,CAAQ,IAAIG,KAAAA,CAAMz4W,OAAQG,SAC5B,EAAA,CACA,MAAMvmB,QAAAA,CAAWmK,OAAQnK,CAAAA,QAAQ,CACjC,GAAImK,OAAAA,CAAQ23U,SAAS,CAAE,CACrB,IAAI,CAAC99N,OAAO,CAACw+C,OAAO,CAAC47N,qBAAqB,CAACj0X,OAAQ23U,CAAAA,SAAS,CAAEn9U,CAAAA,IAAI,CAAE05X,cAClE,EAAA,CAAA,GAAI,CAAC,IAAI,CAACr6Q,OAAO,CAACw+C,OAAO,CAAE,CACzB,MAAMj+J,GAAAA,CAAM,IAAI3B,KAAAA,CAAM,+BACtB,CAAA,CAAA,GAAI5C,SAAUA,QAASuE,CAAAA,GAAAA,CAAAA,CACvB,IAAI,CAAC3C,IAAI,CAAC,QAAS2C,GACnB,CAAA,CAAA,MACF,CACA,IAAI,CAACy/G,OAAO,CAACw+C,OAAO,CAAC87N,oBAAoB,CAAC,CACxC91T,KAAAA,CAAO61T,eACPS,WAAa30X,CAAAA,OAAAA,CAAQ20X,WAAW,EAAIt+X,SACpCm+X,CAAAA,SAAAA,CAAWD,KACb,CAAG/5X,CAAAA,CAAAA,IAAI,CAAEi5X,eACP,EAAA,CAAA,IAAI,CAACmB,gBAAgB,CAACnB,eAAAA,CAAiB,KAAOzzX,CAAAA,OAAAA,CAAQkhU,WAAW,CAAErrU,UACrE,CAAGu4F,CAAAA,CAAAA,KAAK,CAAEhhG,EACR,EAAA,CAAA,GAAIyI,SAAUA,QAASzI,CAAAA,EAAAA,CAAAA,CACvB,IAAI,CAACqK,IAAI,CAAC,QAASrK,EACrB,EAAA,CAAA,EACF,CAAGghG,CAAAA,CAAAA,KAAK,CAAEhhG,KACR,GAAIyI,QAAAA,CAAUA,QAASzI,CAAAA,EAAAA,CAAAA,CACvB,IAAI,CAACqK,IAAI,CAAC,OAAA,CAASrK,EACrB,EAAA,CAAA,EACF,CAAO,KAAA,CACL,IAAI,CAACysH,OAAO,CAACw+C,OAAO,CAACw8N,qCAAqC,CAAC,CACzDP,OAAAA,CAASt0X,OAAQs0X,CAAAA,OAAO,CACxBK,WAAAA,CAAa30X,QAAQ20X,WAAW,EAAIt+X,SACpCm+X,CAAAA,SAAAA,CAAWD,KACb,CAAA,CAAA,CAAG/5X,IAAI,CAAEi5X,eACP,EAAA,CAAA,IAAI,CAACmB,gBAAgB,CAACnB,eAAiB,CAAA,IAAA,CAAMzzX,OAAQkhU,CAAAA,WAAW,CAAErrU,QAAAA,EACpE,GAAGu4F,KAAK,CAAC,EAAChhG,EAAAA,CACR,GAAIyI,QAAAA,CAAUA,SAASzI,EACvB,CAAA,CAAA,IAAI,CAACqK,IAAI,CAAC,OAAA,CAASrK,IACrB,CACF,EAAA,CACF,CACAwnY,gBAAAA,CAAiBnB,eAAe,CAAEC,SAAS,CAAExyD,WAAW,CAAErrU,QAAQ,CAAE,CAClE,GAAI,CAAC,IAAI,CAACgkH,OAAO,CAACw+C,OAAO,CAAE,CACzBo7N,eAAgBd,CAAAA,MAAM,EACtB,CAAA,MAAMv4X,GAAM,CAAA,IAAI3B,MAAM,+BACtB,CAAA,CAAA,GAAI5C,QAAUA,CAAAA,QAAAA,CAASuE,GACvB,CAAA,CAAA,IAAI,CAAC3C,IAAI,CAAC,OAAS2C,CAAAA,GAAAA,CAAAA,CACnB,MACF,CACA,MAAMg6X,aAAgB,CAAA,IAAI5B,eAAgB,CAAA,IAAI,CAAC34Q,OAAO,CAAE45Q,eAAiBC,CAAAA,SAAAA,CAAWxyD,WAAe,EAAA,IAAA,CAAA,CACnG,IAAI,CAACz5H,OAAO,CAACp4M,IAAI,CAAC+kY,aAAAA,CAAAA,CAClB,GAAIv+X,QAAAA,CAAUA,SAAS,IAAMu+X,CAAAA,aAAAA,CAAAA,CAC7B,IAAI,CAAC38X,IAAI,CAAC,MAAO28X,aACnB,EAAA,CACAzyV,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC0mL,UAAU,CAAE,CACpB,MACF,CACA,IAAI,IAAIxlY,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACk5M,OAAO,CAACj5M,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,IAAI,CAACk5M,OAAO,CAACl5M,CAAE,CAAA,CAACozC,MAAM,CAAC0rK,KAAAA,EACzB,CACF,CACA,IAAInlI,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC+pT,UAAU,CAExB,IAAItxS,SAAY,EAAA,CACd,OAAO,IAAI,CAACozS,UAAU,CAtHxBz9X,WAAAA,CAAYujH,OAAO,CAAC,CAClB,KAAK,EAAI,CAAA,IAAI,CAACo4Q,UAAU,CAAGrgY,QAAAA,CAASI,OAAO,EAAI,CAAC,EAAEzB,MAAOukY,CAAAA,SAAS,EAAIvkY,MAAAA,CAAOukY,SAAS,CAACl0Q,SAAS,CAACuzQ,oBAAoB,CAAD,CAAI,IAAI,CAACJ,UAAU,CAAG,KAAA,CAAO,IAAI,CAACC,qBAAqB,CAAG,KAAA,CAAO,IAAI,CAACvsL,OAAO,CAAG,EAAE,CACtM,IAAI,CAAC5tF,OAAO,CAAGA,QACf,GAAI,IAAI,CAACo4Q,UAAU,CAAE,CACnB,IAAI,CAACp4Q,OAAO,CAACjkH,EAAE,CAAC,OAAA,CAAS,IAAI,CAACi+X,eAAe,CAAE,IAAI,CACnD,CAAA,IAAI,CAACh6Q,OAAO,CAACjkH,EAAE,CAAC,KAAO,CAAA,IAAI,CAACy+X,aAAa,CAAE,IAAI,EACjD,CACF,CAiHF,CAzII,SAFET,CAEGmB,eAAe,CAAG,WAGvB,CALEnB,UAKGoB,iBAAiB,CAAG,aAGzB,CAREpB,SAQGn0X,CAAAA,SAAS,CAAG,KAGjB,CAXEm0X,SAWGl0X,CAAAA,YAAY,CAAG,QAGpB,CAdEk0X,SAcGD,CAAAA,YAAY,CAAG,QAGpB,CAjBEC,SAAAA,CAiBGjuJ,WAAW,CAAG,OA4HvB,CAAMsvJ,MAAAA,cAAAA,SAAuBz+X,YAY3B,CAAA,IAAIk8D,KAAQ,EAAA,CACV,OAAO,IAAI,CAACuzE,MAAM,CAEpB,IAAI/xH,KAAMhe,CAAAA,KAAK,CAAE,CACf,IAAI,CAAC8kC,MAAM,CAAG9kC,MAChB,CACA,IAAIge,KAAQ,EAAA,CACV,OAAO,IAAI,CAAC8mB,MACd,CACA,IAAIk6V,WAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAIC,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAIC,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvBzuP,OAAU,EAAA,CACR,GAAI,IAAI,CAAC0uP,OAAO,CAAE,CAChB,OAAO,CACL9iU,MAAO,IAAI,CAAC8iU,OAAO,CACnBC,aAAe,CAAA,IAAI,CAACz6V,MACtB,CACF,CACA,OAAOiwV,iBAAAA,CAAkB,IAAI,CAAChlP,MAAM,CAAEzrI,CAAAA,IAAI,CAAEk7X,SAC1C,IAAI,CAACF,OAAO,CAAGE,MACf,CAAA,OAAO,CACLhjU,KAAO,CAAA,IAAI,CAAC8iU,OAAO,CACnBC,aAAAA,CAAe,IAAI,CAACz6V,MAAM,CAE9B,CACF,CAAA,CACAtD,SAAU,CACR,IAAI,CAACuuG,MAAM,CAAG,IACd,CAAA,IAAI,CAAC0vP,KAAK,CAAG,IAAA,CACb,GAAI,IAAI,CAACH,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC76Q,KAAK,EAClB,CAAA,IAAI,CAAC66Q,OAAO,CAAG,KACjB,CACF,CACA38Q,WAAAA,EAAc,CACZ,GAAI,IAAI,CAAC88Q,KAAK,CAAE,IAAI,CAACx0Q,SAAS,CAAC7zH,IAAI,CAAC,IAAI,CAACqoY,KAAK,CAACjtP,SAAS,CAAC71H,QAAQ,CACjE,CAAA,OAAO,IAAI,CAACsuG,SAAS,CAEvBo1B,WAAc,EAAA,CACZ,GAAI,IAAI,CAACo/O,KAAK,CAAE,IAAI,CAACC,SAAS,CAACtoY,IAAI,CAAC,IAAI,CAACqoY,KAAK,CAACjtP,SAAS,CAACtvB,WAAW,CAAA,CACpE,OAAO,IAAI,CAACw8Q,SAAS,CApDvBt/X,WAAAA,CAAYo8D,KAAK,CAAEx+C,KAAK,CAAC,CACvB,KAAK,EAAA,CAAI,IAAI,CAACshX,OAAO,CAAG,KAAM,IAAI,CAACK,cAAc,CAAG,CAAG,CAAA,IAAI,CAACV,UAAU,CAAG,KAAO,CAAA,IAAI,CAACE,SAAS,CAAG,KAAO,CAAA,IAAI,CAACE,SAAS,CAAG,KAAA,CAAO,IAAI,CAACI,KAAK,CAAG,IAAM,CAAA,IAAI,CAACx0Q,SAAS,CAAG,IAAI32G,IAAAA,CAAQ,IAAI,CAACorX,SAAS,CAAG,IAAIx/W,IACrM,CAAA,IAAI,CAAC6vH,MAAM,CAAGvzE,KACd,CAAA,IAAI,CAAC13B,MAAM,CAAG9mB,MAChB,CAkDF,CA7DM+gX,cAEGa,CAAAA,aAAa,CAAG,SAGrB,CALEb,cAKGc,CAAAA,eAAe,CAAG,WA0D3B,CAAMC,MAAAA,eAAAA,SAAwBx/X,aAY5BqI,GAAI6zD,CAAAA,KAAK,CAAEx+C,KAAK,CAAE,CAChB,GAAI,CAAC,IAAI,CAAC+9W,UAAU,EAAI,IAAI,CAACr4Q,QAAQ,CAAC6zB,MAAM,CAAE,OAAO,IAAA,CACrD,MAAMwoP,YAAe,CAAA,IAAIhB,cAAeviU,CAAAA,KAAAA,CAAOx+C,KAC/C,CAAA,CAAA,IAAI,CAACgiX,OAAO,CAAC7mY,IAAI,CAAC4mY,YAClB,CAAA,CAAA,OAAOA,YACT,CACAr9X,MAAAA,CAAOq9X,YAAY,CAAE,CACnB,GAAI,IAAI,CAACr8Q,QAAQ,CAAC6zB,MAAM,CAAE,OAC1B,MAAMl2I,GAAM,CAAA,IAAI,CAAC2+X,OAAO,CAAC1+X,OAAO,CAACy+X,YACjC,CAAA,CAAA,GAAI1+X,GAAQ,GAAA,CAAC,CAAG,CAAA,CACd0+X,aAAav+V,OAAO,EAAA,CACpB,IAAI,CAACw+V,OAAO,CAAC7+X,MAAM,CAACE,GAAK,CAAA,CAAA,EAC3B,CACF,CACAs8X,eAAkB,EAAA,CAChB,IAAI,CAACj6Q,QAAQ,CAACy+C,OAAO,CAAC89N,qBAAqB,GAAG37X,IAAI,CAAC,MAACivW,EAAAA,CAClD,IAAI,CAACsqB,UAAU,CAAG,IAAA,CAClB,IAAI,IAAIxlY,CAAI,CAAA,CAAA,CAAGA,EAAIk7W,MAAOj7W,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACpC,IAAI,CAAC2nY,OAAO,CAAC3nY,CAAE,CAAA,CAAC4mY,UAAU,CAAG1rB,MAAM,CAACl7W,CAAAA,CAAE,GAAK,YAC7C,CACF,CAAA,CAAA,CAAG6/F,KAAK,CAAEh0F,GACR,EAAA,CAAA,IAAI,CAAC25X,UAAU,CAAG,KAClB,CAAA,IAAI,CAACt8X,IAAI,CAAC,OAAA,CAAS2C,KACrB,CACF,EAAA,CACAi6X,aAAgB,EAAA,CACd,IAAI,CAACN,UAAU,CAAG,KAAA,CAClB,IAAI,IAAIxlY,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC2nY,OAAO,CAAC1nY,MAAM,CAAED,IAAI,CAC1C,MAAMmkE,KAAQ,CAAA,IAAI,CAACwjU,OAAO,CAAC3nY,CAAE,CAC7BmkE,CAAAA,KAAAA,CAAMijU,KAAK,CAAG,IACdjjU,CAAAA,KAAAA,CAAMmjU,cAAc,CAAG,CACvB,CAAA,GAAInjU,MAAM2iU,SAAS,CAAE,CACnB3iU,KAAAA,CAAM2iU,SAAS,CAAG,KAClB3iU,CAAAA,KAAAA,CAAMj7D,IAAI,CAAC,WACb,EAAA,CACF,CACF,CACA2+X,cAAcvgY,QAAQ,CAAE,CACtB,GAAI,IAAI,CAACqgY,OAAO,CAAC1nY,MAAM,CAAE,CACvBg5E,OAAQplC,CAAAA,GAAG,CAAC,IAAI,CAAC8zV,OAAO,CAAC9gY,GAAG,CAAC,YAC3B,EAAA,CAAA,OAAO6gY,YAAanvP,CAAAA,OAAO,EAC7B,CAAA,CAAA,CAAA,CAAItsI,IAAI,CAAE67X,OACRxgY,EAAAA,CAAAA,QAAAA,CAAS,IAAMwgY,CAAAA,OAAAA,EACjB,GAAGjoS,KAAK,CAAC,GAACh0F,EAAAA,CACRvE,QAASuE,CAAAA,GAAAA,CAAK,MAChB,CACF,EAAA,CAAA,KAAO,CACLvE,QAAAA,CAAS,IAAM,CAAA,IAAA,EACjB,CACF,CACA8rC,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC0mL,UAAU,CAAE,OACtB,MAAM9vT,OAAAA,CAAUopI,MAAMipL,uBAAuB,EAAA,CAC7C,MAAMliY,KAAAA,CAAQ,EAAC,CACf,IAAI,IAAI7F,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI01E,OAAQz1E,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACrC6F,KAAK,CAAC6vE,OAAO,CAAC11E,EAAE,CAAC6F,KAAK,CAAC,CAAG6vE,OAAO,CAAC11E,EAAE,CACpC,MAAM0nY,YAAe,CAAA,IAAI,CAACC,OAAO,CAACjyT,OAAO,CAAC11E,CAAE,CAAA,CAAC6F,KAAK,CAAC,CACnD6hY,YAAaV,CAAAA,SAAS,CAAGtxT,OAAO,CAAC11E,CAAAA,CAAE,CAACgoY,aAAa,GAAK,UACtDN,CAAAA,YAAaJ,CAAAA,cAAc,CAAG5xT,OAAO,CAAC11E,CAAE,CAAA,CAACioY,qBACzCP,CAAAA,YAAaN,CAAAA,KAAK,CAAGtoL,KAAAA,CAAMkmL,OAAO,CAACtvT,OAAO,CAAC11E,CAAAA,CAAE,CAACkoY,UAAU,CAAE,IAAI,CAAC78Q,QAAQ,CAAC45Q,eAAe,EACzF,CACA,IAAI,IAAIjlY,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC2nY,OAAO,CAAC1nY,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,GAAI,IAAI,CAAC2nY,OAAO,CAAC3nY,CAAE,CAAA,CAAC8mY,SAAS,EAAI,CAACjhY,KAAK,CAAC7F,CAAE,CAAA,CAAE,CAC1C,IAAI,CAAC2nY,OAAO,CAAC3nY,CAAE,CAAA,CAAC8mY,SAAS,CAAG,MAC5B,IAAI,CAACa,OAAO,CAAC3nY,CAAE,CAAA,CAACkJ,IAAI,CAAC,WAAA,EACvB,CAAO,KAAA,GAAI,CAAC,IAAI,CAACy+X,OAAO,CAAC3nY,CAAE,CAAA,CAAC8mY,SAAS,EAAIjhY,KAAK,CAAC7F,CAAAA,CAAE,CAAE,CACjD,IAAI,CAAC2nY,OAAO,CAAC3nY,CAAAA,CAAE,CAAC8mY,SAAS,CAAG,IAAA,CAC5B,IAAI,CAACa,OAAO,CAAC3nY,CAAE,CAAA,CAACkJ,IAAI,CAAC,WACvB,CACF,CACF,CACA,IAAIywE,SAAY,EAAA,CACd,OAAO,IAAI,CAAC+pT,UACd,CACA,IAAItxS,WAAY,CACd,OAAO,IAAI,CAACozS,UACd,CACA,IAAItqB,MAAAA,EAAS,CACX,OAAO,IAAI,CAACysB,OAAO,CAtFrB5/X,WAAYujH,CAAAA,OAAO,CAAC,CAClB,KAAK,EAAI,CAAA,IAAI,CAACo4Q,UAAU,CAAGrgY,QAAAA,CAASI,OAAO,EAAI,CAAC,CAACzB,MAAAA,CAAOmmY,qBAAqB,CAAE,IAAI,CAAC3C,UAAU,CAAG,KAAA,CAAO,IAAI,CAACmC,OAAO,CAAG,EAAE,CACzH,IAAI,CAACt8Q,QAAQ,CAAGC,OAAAA,CAChB,GAAI,IAAI,CAACo4Q,UAAU,CAAE,CACnB,IAAI,CAACr4Q,QAAQ,CAAChkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,EACpD,IAAI,CAACj6Q,QAAQ,CAAChkH,EAAE,CAAC,MAAO,IAAI,CAACy+X,aAAa,CAAE,IAAI,EAClD,CACF,CAiFF,CA1FI,eAFE2B,CAEGrwJ,WAAW,CAAG,OA4FvB,CAAA,MAAMgxJ,QAQJ,CAAA,IAAIviY,KAAQ,EAAA,CACV,OAAO,IAAI,CAACoE,MACd,CACA,IAAIo4G,IAAO,EAAA,CACT,OAAO,IAAI,CAACgmR,KACd,CACA,IAAI36B,QAAS,CACX,OAAO,IAAI,CAAC46B,OACd,CACA,IAAIC,GAAAA,EAAM,CACR,OAAO,IAAI,CAACC,IAAI,CAjBlBzgY,WAAYlC,CAAAA,KAAK,CAAEw8G,IAAI,CAAC,CACtB,IAAI,CAACimR,OAAO,CAAG,EAAE,CACjB,IAAI,CAACE,IAAI,CAAG,IACZ,CAAA,IAAI,CAACv+X,MAAM,CAAGpE,KACd,CAAA,IAAI,CAACwiY,KAAK,CAAGhmR,IAAAA,CACb,IAAI,CAACgmR,KAAK,CAACI,QAAQ,CAAC3nY,IAAI,CAAC,IAAI,EAC/B,CAaF,CAEA,MAAM4nY,WAAAA,CAAcrlY,QAASI,CAAAA,OAAO,EAAIzB,MAAO2mY,CAAAA,MAAM,CAAG,CACtD,WACA,CAAA,kBAAA,CACA,oBACA,iBACA,CAAA,kBAAA,CACD,CAAG,EAAE,CACN,MAAMC,iBAAmB,EAAC,CAC1B,IAAI,IAAI5oY,CAAI,CAAA,CAAA,CAAGA,EAAI0oY,WAAYzoY,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC4oY,gBAAgB,CAACF,WAAW,CAAC1oY,CAAAA,CAAE,CAAC,CAAG,KACrC,CACA,MAAM6oY,OAiBJz1V,CAAAA,MAAAA,CAAO2xV,IAAI,CAAE,CACX,IAAI,CAACj+O,WAAW,CAAG,IACnB,CAAA,IAAI,CAACgiP,OAAO,CAAG/D,IAAAA,CAAKvpX,MAAM,CAC1B,IAAI,CAACutX,cAAc,CAAChqY,IAAI,CAACgmY,IAAAA,CAAK5qP,SAAS,CAAC71H,QAAQ,CAChD,CAAA,IAAI,CAAC0kX,cAAc,CAACjqY,IAAI,CAACgmY,IAAK5qP,CAAAA,SAAS,CAACtvB,WAAW,EACrD,CACAo+Q,mBAAoB,CAClB,GAAI,IAAI,CAACniP,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAG,KAAA,CACnB,IAAI,CAACoiP,eAAe,CAACviX,MAAM,CAAC,IAAI,CAACoiX,cAAc,CAAE,IAAI,CAACC,cAAc,CAAE/sX,IAAKgC,CAAAA,GAAG,EAChF,CACA,MAAMqtG,OAAU,CAAA,IAAI,CAAC+8Q,KAAK,CAACh9Q,QAAQ,CACnC,MAAMp6G,MAAAA,CAASq6G,OAAQ2nB,CAAAA,MAAM,CAAChiI,MAAM,CACpC,GAAIA,MAAAA,CAAQ,CACV,IAAI,CAACmiB,eAAe,CAAC7V,IAAI,CAACtM,MAAO02H,CAAAA,iBAAiB,GAAI,IAAI,CAACuhQ,eAAe,EAC5E,CAAO,KAAA,CACL,IAAI,CAAC91W,eAAe,CAACr0B,IAAI,CAAC,IAAI,CAACmqY,eAAe,EAChD,CACF,CACA5+Q,WAAAA,EAAc,CACZ,IAAI,CAAC2+Q,iBAAiB,EAAA,CACtB,IAAI,CAAC71W,eAAe,CAACrM,cAAc,CAAC,IAAI,CAAC6rG,SAAS,CAClD,CAAA,OAAO,IAAI,CAACA,SAAS,CAEvBo1B,WAAc,EAAA,CACZ,IAAI,CAACihP,iBAAiB,EACtB,CAAA,IAAI,CAAC5B,SAAS,CAACpoX,WAAW,CAAC,IAAI,CAACmU,eAAe,CAAA,CAC/C,OAAO,IAAI,CAACi0W,SACd,CACA,IAAIr9V,IAAK,CACP,OAAO,IAAI,CAAC4+O,GACd,CACA,IAAI/iR,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACoE,MAAM,CAEpB,IAAIo4G,IAAAA,EAAO,CACT,OAAO,IAAI,CAACgmR,KAAK,CAEnB,IAAIc,MAAAA,EAAS,CACX,OAAO,IAAI,CAACC,OAAO,CAErB,IAAIC,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MAAM,CAEpB,IAAIf,GAAM,EAAA,CACR,OAAO,IAAI,CAACC,IACd,CACA,IAAIhtX,MAAS,EAAA,CACX,OAAO,IAAI,CAACstX,OAAO,EAAI,IACzB,CAjEA/gY,WAAAA,CAAYlC,KAAK,CAAEmkC,EAAE,CAAEq4E,IAAI,CAAE8mR,MAAAA,CAAS,IAAI,CAAC,CACzC,IAAI,CAACL,OAAO,CAAG,IACf,CAAA,IAAI,CAACI,eAAe,CAAG,IAAI3mX,IAC3B,CAAA,IAAI,CAAC6Q,eAAe,CAAG,IAAI7Q,IAC3B,CAAA,IAAI,CAACwmX,cAAc,CAAG,IAAI9sX,IAC1B,CAAA,IAAI,CAAC+sX,cAAc,CAAG,IAAInhX,IAC1B,CAAA,IAAI,CAAC+qG,SAAS,CAAG,IAAI32G,IACrB,CAAA,IAAI,CAACorX,SAAS,CAAG,IAAIx/W,IACrB,CAAA,IAAI,CAACi/H,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC78I,MAAM,CAAGpE,KACd,CAAA,IAAI,CAAC+iR,GAAG,CAAG5+O,EACX,CAAA,IAAI,CAACq+V,KAAK,CAAGhmR,IACb,CAAA,IAAI,CAAC+mR,OAAO,CAAGD,MACf,CAAA,IAAI,CAACG,MAAM,CAAGt/V,EAAO,GAAA,OACrB,CAAA,IAAI,CAACw+V,IAAI,CAAG,IAAI,CAACY,OAAO,EAAI,CAAC,CAACR,gBAAgB,CAAC5+V,EAAG,EACpD,CAmDF,CAEA,IAAIu/V,cAAAA,CAAiB,EAAE,CACvB,MAAMC,MAAS,CAAA,IAAIvtX,IACnB,CAAA,MAAMwtX,OAAS,IAAIxtX,IAAAA,CACnB,MAAMytX,IAAAA,CAAO,IAAIztX,IAAAA,CACjB,GAAI5Y,QAASI,CAAAA,OAAO,EAAIzB,MAAAA,CAAO2mY,MAAM,CAAE,CACrCY,cAAiB,CAAA,CACf,CACE,kBAAA,CACA,wBACA,CAAA,sBAAA,CACA,YACD,CACD,CACE,yBACA,CAAA,+BAAA,CACA,mCACA,CAAA,6BAAA,CACA,mBACD,CACD,CACE,0BACA,CAAA,gCAAA,CACA,oCACA,CAAA,8BAAA,CACA,oBACD,CACD,CACE,wBACA,CAAA,8BAAA,CACA,kCACA,CAAA,4BAAA,CACA,kBACD,CACD,CACE,yBACA,CAAA,+BAAA,CACA,mCACA,CAAA,6BAAA,CACA,mBACD,EAEL,CACA,MAAMI,MAAe1hY,SAAAA,YAAAA,CAkCnBmrC,OAAO0rK,KAAK,CAAE,CACZ,MAAM8qL,aAAgB,CAAA,IAAI,CAAChF,YAAY,CAACiF,cAAc,CACtD,IAAI,IAAItjT,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC+hT,OAAO,CAACroY,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC1C,MAAMujT,KAAQ,CAAA,IAAI,CAACxB,OAAO,CAAC/hT,CAAE,CAAA,CAC7B,MAAMwjT,UAAAA,CAAaH,cAAcvnR,IAAI,CAACtgH,GAAG,CAAC+nY,KAAMlhH,CAAAA,GAAG,CACnD,CAAA,GAAImhH,UAAY,CAAA,CACd,IAAIhF,IAAAA,CACJ,GAAIjmL,KAAAA,CAAMh1C,OAAO,CAACtwD,eAAe,GAAK,QAAA,CAAU,CAC9CurR,IAAAA,CAAOjmL,MAAMkrL,YAAY,CAACD,UAAY,CAAA,IAAI,CAAC1+Q,QAAQ,CAAC45Q,eAAe,EACrE,CACA,GAAIF,IAAM,CAAA,CACR+E,MAAM12V,MAAM,CAAC2xV,IACb,CAAA,CAAA,GAAI+E,KAAMT,CAAAA,KAAK,EAAI,CAAC,IAAI,CAACvC,SAAS,CAAE,CAClC,IAAI,CAACA,SAAS,CAAG,IAAA,CACjB,IAAI,CAAC59X,IAAI,CAAC,UAAA,EACZ,CACF,CAAA,KAAO,GAAI4gY,KAAAA,CAAMT,KAAK,CAAE,CACtB,GAAI,IAAI,CAACvC,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAG,KACjB,CAAA,IAAI,CAAC59X,IAAI,CAAC,cACZ,EAAA,CACA,KACF,CACF,CACF,CACA,MAAM+gY,EAAK,CAAA,IAAI,CAACC,WAAW,CAAC,kBAAmB,CAAA,CAC/C,MAAMC,EAAAA,CAAK,IAAI,CAACD,WAAW,CAAC,WAAA,CAAY,CACxC,MAAME,EAAK,CAAA,IAAI,CAACF,WAAW,CAAC,+BAAgC,CAAA,CAC5D,MAAMG,EAAAA,CAAK,IAAI,CAACH,WAAW,CAAC,kBAAA,CAAmB,CAC/C,MAAMI,GAAM,CAAA,IAAI,CAACJ,WAAW,CAAC,8BAAA,CAA+B,CAC5D,MAAMK,IAAM,IAAI,CAACL,WAAW,CAAC,+BAAgC,CAAA,CAC7D,GAAID,EAAME,EAAAA,EAAAA,EAAMC,EAAMC,EAAAA,EAAAA,EAAMC,GAAOC,EAAAA,GAAAA,CAAK,CACtC,IAAI,CAAC3F,YAAY,CAAC4F,SAAS,CAAG,KAC9B,IAAI,CAAC5F,YAAY,CAAC6F,SAAS,CAAC/8W,MAAM,CAACzZ,IAAI,CAACk2X,EAAAA,CAAGpB,cAAc,CAAEsB,GAAGtB,cAAc,CAAE,EAC9E,CAAA,CAAA,IAAI2B,MAAST,CAAAA,EAAAA,CACb,IAAIU,MAASJ,CAAAA,GAAAA,CACb,GAAI,IAAI,CAAC3F,YAAY,CAACgG,UAAU,GAAK7H,WAAa,CAAA,CAChD,MAAMjyX,CAAAA,CAAI45X,OACVA,MAASC,CAAAA,MAAAA,CACTA,MAAS75X,CAAAA,EACX,CACA04X,MAAAA,CAAO3rX,IAAI,CAAC6sX,MAAAA,CAAO3B,cAAc,CAAE,IAAI,CAACO,MAAM,CAACP,cAAc,CAC7DU,CAAAA,MAAAA,CAAO5rX,IAAI,CAAC8sX,OAAO5B,cAAc,CAAE,IAAI,CAACO,MAAM,CAACP,cAAc,CAC7DW,CAAAA,IAAAA,CAAKptX,KAAK,CAACktX,MAAQC,CAAAA,MAAAA,CAAAA,CAAQrpY,SAAS,EACpCopY,CAAAA,MAAAA,CAAOv1X,IAAI,CAACm2X,EAAGrB,CAAAA,cAAc,CAAEuB,GAAIvB,CAAAA,cAAc,CAAE,EAAA,CAAA,CACnDS,MAAO5rX,CAAAA,GAAG,CAAC,IAAI,CAAC0rX,MAAM,CAACP,cAAc,CAAE3oY,CAAAA,SAAS,GAChD,IAAI,CAACwkY,YAAY,CAAC6F,SAAS,CAAC58W,SAAS,CAAC5Z,IAAI,CAACy1X,IAAAA,CAAMF,MAAQ,CAAA,EAAA,CAAA,CAAKppY,SAAS,GACzE,CACA,MAAMyqY,SAAAA,CAAY,IAAI,CAACC,eAAe,CAAC,CAAA,CAAA,EAAM,IAAI,CAACA,eAAe,CAAC,IAAM,IAAI,CAACA,eAAe,CAAC,CAAM,CAAA,EAAA,IAAI,CAACA,eAAe,CAAC,CACxH,CAAA,CAAA,GAAID,SAAW,CAAA,CACb,GAAI,CAAC,IAAI,CAACjG,YAAY,CAACmG,UAAU,CAAE,CACjC,IAAI,CAACnG,YAAY,CAACmG,UAAU,CAAG,IAC/B,CAAA,IAAI,CAACnG,YAAY,CAAC17X,IAAI,CAAC,cACvB,CAAA,CAAA,IAAI,CAACmiH,QAAQ,CAACyjJ,KAAK,CAAC5lQ,IAAI,CAAC,cAAgB,CAAA,IAAI,CAAC07X,YAAY,EAC5D,CACF,CAAA,KAAO,CACL,GAAI,IAAI,CAACA,YAAY,CAACmG,UAAU,CAAE,CAChC,IAAI,CAACnG,YAAY,CAACmG,UAAU,CAAG,KAAA,CAC/B,IAAI,CAACnG,YAAY,CAAC17X,IAAI,CAAC,SAAA,CAAA,CACvB,IAAI,CAACmiH,QAAQ,CAACyjJ,KAAK,CAAC5lQ,IAAI,CAAC,SAAW,CAAA,IAAI,CAAC07X,YAAY,CAAA,CACrD,IAAI,CAACA,YAAY,CAAC17X,IAAI,CAAC,YAAA,CAAA,CACvB,IAAI,CAACmiH,QAAQ,CAACyjJ,KAAK,CAAC5lQ,IAAI,CAAC,YAAA,CAAc,IAAI,CAAC07X,YAAY,EAC1D,CACF,CACF,CACAkG,eAAgBjlY,CAAAA,KAAK,CAAE,CACrB,MAAMsjY,MAAS,CAAA,IAAI,CAACV,QAAQ,CAAC5iY,KAAM,CAAA,CACnC2jY,MAAO3rX,CAAAA,IAAI,CAACsrX,MAAAA,CAAOz7B,MAAM,CAAC,CAAA,CAAE,CAACq7B,cAAc,CAAEI,MAAAA,CAAOz7B,MAAM,CAAC,CAAA,CAAE,CAACq7B,cAAc,CAAE3oY,CAAAA,SAAS,GACvFqpY,MAAO5rX,CAAAA,IAAI,CAACsrX,MAAAA,CAAOz7B,MAAM,CAAC,EAAE,CAACq7B,cAAc,CAAEI,MAAAA,CAAOz7B,MAAM,CAAC,EAAE,CAACq7B,cAAc,CAAE3oY,CAAAA,SAAS,EACvF,CAAA,OAAOopY,OAAOtsX,GAAG,CAACusX,MAAU,CAAA,CAAA,CAAC,EAC/B,CACAuB,aAAahhW,EAAE,CAAE,CACf,OAAO,IAAI,CAACkgW,WAAW,CAAClgW,EAAAA,CAAG,EAAI,IACjC,CACA,IAAIihW,SAAU,CACZ,OAAO,IAAI,CAACxC,QACd,CACA,IAAI/6B,MAAS,EAAA,CACX,OAAO,IAAI,CAAC46B,OAAO,CAErB,IAAI4C,IAAO,EAAA,CACT,OAAO,IAAI,CAACC,KACd,CACA,IAAI9B,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAIzC,UAAW,CACb,OAAO,IAAI,CAACC,SACd,CAnHA/+X,WAAY4qU,CAAAA,WAAW,CAAC,CACtB,KAAK,EAAA,CAAI,IAAI,CAACm0D,SAAS,CAAG,KAAA,CAAO,IAAI,CAAC2B,QAAQ,CAAG,EAAE,CAAE,IAAI,CAACH,OAAO,CAAG,EAAE,CAAE,IAAI,CAAC4B,WAAW,CAAG,EAAI,CAAA,IAAI,CAACiB,KAAK,CAAG,EAAE,CAAE,IAAI,CAAC7B,MAAM,CAAG,IAC9H,CAAA,MAAM8B,OAASz4D,WAAYk3D,CAAAA,cAAc,CAACxnR,IAAI,CAC9C,IAAI,CAACgJ,QAAQ,CAAGsnN,WAAAA,CAAYtnN,QAC5B,CAAA,IAAI,CAACu5Q,YAAY,CAAGjyD,WACpB,CAAA,GAAIy4D,OAAOrpY,GAAG,CAAC,OAAU,CAAA,CAAA,CACvB,MAAM+nY,KAAAA,CAAQ,IAAIjB,OAAQ,CAAA,CAAA,CAAG,OAAS,CAAA,IAAI,CAAE,IAAA,CAC5C,CAAA,IAAI,CAACS,MAAM,CAAGQ,KAAAA,CACd,IAAI,CAACxB,OAAO,CAACxnY,IAAI,CAACgpY,KAAAA,CAClB,CAAA,IAAI,CAACI,WAAW,CAACb,KAAK,CAAGS,MAC3B,CACA,IAAI,IAAI91W,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIu1W,cAAetpY,CAAAA,MAAM,CAAE+zB,CAAI,EAAA,CAAA,CAC5C,MAAMm1W,MAAAA,CAAS,IAAIf,QAAAA,CAASp0W,EAAG,IAAI,CAAA,CACnC,IAAI,IAAIuyD,CAAI,CAAA,CAAA,CAAGA,EAAIgjT,cAAc,CAACv1W,CAAE,CAAA,CAAC/zB,MAAM,CAAEsmF,IAAI,CAC/C,MAAM8kT,OAAU9B,CAAAA,cAAc,CAACv1W,CAAAA,CAAE,CAACuyD,CAAE,CAAA,CACpC,GAAI,CAAC6kT,MAAOrpY,CAAAA,GAAG,CAACspY,OAAU,CAAA,CAAA,SAC1B,MAAMvB,KAAAA,CAAQ,IAAIjB,OAAAA,CAAQtiT,EAAG8kT,OAAS,CAAA,IAAI,CAAElC,MAAAA,CAAAA,CAC5C,IAAI,CAACb,OAAO,CAACxnY,IAAI,CAACgpY,KAAAA,CAClB,CAAA,IAAI,CAACI,WAAW,CAACmB,OAAQ,CAAA,CAAGvB,KAC5B,CAAA,GAAIA,MAAMvB,GAAG,CAAE,CACb,IAAI,CAAC4C,KAAK,CAACrqY,IAAI,CAACgpY,KAChBX,CAAAA,CAAAA,MAAOX,CAAAA,IAAI,CAAGsB,MAChB,CACAX,MAAOb,CAAAA,OAAO,CAACxnY,IAAI,CAACgpY,KAAAA,EACtB,CACF,CACF,CA0FF,CAzHI,MAFEH,CAEG2B,cAAc,CAAG,UAGtB,CALE3B,MAAAA,CAKG4B,kBAAkB,CAAG,eAwH9B,MAAMC,OAAAA,CAAU,IAAIvvX,IAAAA,CACpB,MAAMwvX,IAAAA,CAAO,IAAI5jX,IACjB,CAAA,IAAI6jX,KAAQ,CAAA,CACZ,CAAMC,MAAAA,aAAAA,SAAsB1jY,aAwC1B,IAAI+hC,EAAAA,EAAK,CACP,OAAO,IAAI,CAAC4+O,GAAG,CAEjB,IAAI+pD,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACk3D,cAAc,CAE5B,IAAI+B,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC/B,cAAc,CAAC+B,aAAa,CAE1C,IAAIhB,UAAa,EAAA,CACf,OAAO,IAAI,CAACf,cAAc,CAACe,UAC7B,CACA,IAAIiB,UAAW,CACb,OAAO,IAAI,CAAChC,cAAc,CAACgC,QAAQ,CAErC,IAAIC,IAAAA,EAAO,CACT,OAAO,IAAI,CAACC,KAAK,CAEnB,IAAI1pR,IAAAA,EAAO,CACT,OAAO,IAAI,CAACgmR,KAAK,CAEnB,IAAIhnR,OAAU,EAAA,CACZ,OAAO,IAAI,CAACwoR,cAAc,CAACxoR,OAAO,EAAI,IACxC,CACA,IAAI2qR,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAIpB,WAAY,CACd,OAAO,IAAI,CAACE,UACd,CACA,IAAItsI,YAAAA,CAAa92P,KAAK,CAAE,CACtB,GAAI,IAAI,CAACukY,aAAa,GAAKvkY,KAAAA,CAAO,CAChC,MACF,CACA,IAAI,CAACukY,aAAa,CAAGvkY,KACrB,CAAA,GAAI,CAAC,IAAI,CAACukY,aAAa,CAAE,CACvB,IAAI,CAACC,cAAc,CAAG,KACxB,CACF,CACA,IAAI1tI,cAAe,CACjB,OAAO,IAAI,CAACytI,aACd,CACA,IAAIE,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACD,cAAc,CAE5B,IAAIE,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7Bl5V,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,GAAI,IAAI,CAACupL,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAACj1V,MAAM,CAAC0rK,OACpB,CAAO,KAAA,CACL,MAAMytL,SAAAA,CAAY,IAAI,CAAC1C,cAAc,CAAC0C,SAAS,CAC/C,GAAIA,SAAW,CAAA,CACb,MAAMC,QAAW1tL,CAAAA,KAAAA,CAAMkmL,OAAO,CAACuH,SAAW,CAAA,IAAI,CAAClhR,QAAQ,CAAC45Q,eAAe,CACvE,CAAA,GAAIuH,QAAU,CAAA,CACZ,GAAI,CAAC,IAAI,CAACT,KAAK,CAAE,CACf,IAAI,CAACA,KAAK,CAAG,IACb,CAAA,IAAI,CAAC7C,eAAe,CAAG,IAAI3mX,IAC3B,CAAA,IAAI,CAAC6Q,eAAe,CAAG,IAAI7Q,IAC3B,CAAA,IAAI,CAACkqX,kBAAkB,CAAG,IAAIxwX,IAC9B,CAAA,IAAI,CAAC8sX,cAAc,CAAG,IAAI9sX,IAC1B,CAAA,IAAI,CAAC+sX,cAAc,CAAG,IAAInhX,IAC1B,CAAA,IAAI,CAAC69S,eAAe,CAAG,IAAIzpT,KAC7B,CACA,MAAMirG,SAAAA,CAAY71G,MAClB,MAAMwsG,EAAAA,CAAK,CAACqJ,SAAY,CAAA,IAAI,CAACwlR,oBAAmB,EAAK,GACrD,CAAA,IAAI,CAACA,oBAAoB,CAAGxlR,SAC5B,CAAA,IAAI,CAAC4/B,WAAW,CAAG,IAAA,CACnB,IAAI,CAAC2lP,kBAAkB,CAAC1tY,IAAI,CAAC,IAAI,CAACgqY,cAAc,CAChD,CAAA,IAAI,CAACA,cAAc,CAAChqY,IAAI,CAACytY,QAASryP,CAAAA,SAAS,CAAC71H,QAAQ,CAAA,CACpD,IAAI,CAAC0kX,cAAc,CAACjqY,IAAI,CAACytY,QAASryP,CAAAA,SAAS,CAACtvB,WAAW,CACvD,CAAA,IAAI,CAAC8hR,oBAAoB,CAAG,IAAA,CAC5B,GAAI,IAAI,CAACthR,QAAQ,CAACyjJ,KAAK,CAAC89H,mBAAmB,EAAIJ,SAAShnE,cAAc,CAAE,CACtE,IAAI,CAACE,eAAe,CAAC3mU,IAAI,CAACytY,QAAShnE,CAAAA,cAAc,EACnD,CAAA,KAAO,GAAI3nN,EAAK,CAAA,CAAA,CAAG,CACjB2tR,OAAAA,CAAQ3tX,IAAI,CAAC,IAAI,CAACkrX,cAAc,CAAE,IAAI,CAAC0D,kBAAkB,EAAExvX,SAAS,CAAC4gG,EACrE,CAAA,CAAA,IAAI,CAAC6nN,eAAe,CAACzxT,IAAI,CAAC,IAAI,CAACyxT,eAAe,CAAE8lE,QAAS,GAC3D,EAAA,CACF,CAAO,KAAA,CACL,IAAI,CAACmB,oBAAoB,CAAG,MAC9B,CACF,CACA,MAAME,aAAAA,CAAgB/tL,MAAMkmL,OAAO,CAAC,IAAI,CAAC6E,cAAc,CAACiD,cAAc,CAAE,IAAI,CAACzhR,QAAQ,CAAC45Q,eAAe,EACrG,GAAI4H,aAAAA,CAAe,CACjB,IAAI,CAACrC,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,SAAS,CAAC/8W,MAAM,CAAC3uB,IAAI,CAAC8tY,aAAc1yP,CAAAA,SAAS,CAAC71H,QAAQ,CAC3D,CAAA,IAAI,CAACmmX,SAAS,CAAC58W,SAAS,CAACtlB,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CACpCkjY,IAAK1sY,CAAAA,IAAI,CAAC8tY,aAAc1yP,CAAAA,SAAS,CAACtvB,WAAW,CAC7C4gR,CAAAA,IAAAA,CAAKhqX,eAAe,CAAC,IAAI,CAACgpX,SAAS,CAAC58W,SAAS,CAAE,IAAI,CAAC48W,SAAS,CAAC58W,SAAS,EACzE,CACF,CACF,CACAo7W,iBAAoB,EAAA,CAClB,GAAI,IAAI,CAACniP,WAAW,CAAE,CACpB,IAAI,CAACA,WAAW,CAAG,KACnB,CAAA,IAAI,CAACoiP,eAAe,CAACviX,MAAM,CAAC,IAAI,CAACoiX,cAAc,CAAE,IAAI,CAACC,cAAc,CAAE/sX,IAAAA,CAAKgC,GAAG,EAChF,CACA,MAAMhN,OAAS,IAAI,CAACo6G,QAAQ,CAAC4nB,MAAM,CAAChiI,MAAM,CAC1C,GAAIA,MAAQ,CAAA,CACV,IAAI,CAACmiB,eAAe,CAAC7V,IAAI,CAACtM,MAAAA,CAAO02H,iBAAiB,EAAA,CAAI,IAAI,CAACuhQ,eAAe,EAC5E,CAAA,KAAO,CACL,IAAI,CAAC91W,eAAe,CAACr0B,IAAI,CAAC,IAAI,CAACmqY,eAAe,EAChD,CACF,CACA6D,oBAAAA,EAAuB,CACrB,MAAMp6V,KAAQ,CAAA,IAAI,CAAC63V,SAAS,CAC5B,IAAI,CAACA,SAAS,CAAG,KAAA,CACjB,MAAMv5X,MAAAA,CAAS,IAAI,CAACo6G,QAAQ,CAAC4nB,MAAM,CAAChiI,MAAM,CAC1C,GAAIA,OAAQ,CACV,MAAM+7X,eAAkB,CAAA,IAAI,CAAC3hR,QAAQ,CAAC4nB,MAAM,CAAChiI,MAAM,CAAC02H,iBAAiB,EAAA,CACrEqlQ,gBAAgBjmX,cAAc,CAAC,IAAI,CAAC6rG,SAAS,CAAA,CAC7C,IAAI,CAACy0Q,SAAS,CAACpoX,WAAW,CAAC+tX,eAAAA,CAAAA,CAC3B,IAAI,CAAC3F,SAAS,CAAC5lX,eAAe,CAAC,IAAI,CAACgpX,SAAS,CAAC/8W,MAAM,CAAE,IAAI,CAAC8jT,IAAI,CAAC9jT,MAAM,CACtE,CAAA,IAAI,CAAC8jT,IAAI,CAAC9jT,MAAM,CAACpd,GAAG,CAAC,IAAI,CAACsiH,SAAS,CACnC,CAAA,IAAI,CAACy0Q,SAAS,CAAC5lX,eAAe,CAAC,IAAI,CAACgpX,SAAS,CAAC58W,SAAS,CAAE,IAAI,CAAC2jT,IAAI,CAAC3jT,SAAS,EAC9E,CAAA,KAAO,GAAI8kB,KAAO,CAAA,CAChB,IAAI,CAAC6+R,IAAI,CAAC9jT,MAAM,CAAC3uB,IAAI,CAAC,IAAI,CAAC0rY,SAAS,CAAC/8W,MAAM,CAC3C,CAAA,IAAI,CAAC8jT,IAAI,CAAC3jT,SAAS,CAAC9uB,IAAI,CAAC,IAAI,CAAC0rY,SAAS,CAAC58W,SAAS,EACnD,CACF,CACAy8F,WAAAA,EAAc,CACZ,GAAI,CAAC,IAAI,CAACsI,SAAS,CAAE,OAAO,IAAA,CAC5B,IAAI,CAACq2Q,iBAAiB,EACtB,CAAA,IAAI,CAAC71W,eAAe,CAACrM,cAAc,CAAC,IAAI,CAAC6rG,SAAS,CAAA,CAClD,OAAO,IAAI,CAACA,SACd,CACAg1B,gBAAAA,EAAmB,CACjB,OAAO,IAAI,CAACmhP,cAAc,CAE5B/gP,WAAc,EAAA,CACZ,GAAI,CAAC,IAAI,CAACq/O,SAAS,CAAE,OAAO,IAC5B,CAAA,IAAI,CAAC4B,iBAAiB,EACtB,CAAA,IAAI,CAAC5B,SAAS,CAACpoX,WAAW,CAAC,IAAI,CAACmU,eAAe,CAC/C,CAAA,OAAO,IAAI,CAACi0W,SACd,CACAx/O,gBAAmB,EAAA,CACjB,OAAO,IAAI,CAACmhP,cAAc,CAE5BrjE,iBAAAA,EAAoB,CAClB,GAAI,CAAC,IAAI,CAACgnE,oBAAoB,CAAE,CAC9B,OAAO,IACT,CACA,OAAO,IAAI,CAACjnE,eACd,CACAplC,SAAAA,EAAY,CACV,IAAI,CAACysG,oBAAoB,EACzB,CAAA,OAAO,IAAI,CAACv7D,IAAI,CAAC9jT,MAAM,CAEzBklT,YAAe,EAAA,CACb,IAAI,CAACm6D,oBAAoB,EACzB,CAAA,OAAO,IAAI,CAACv7D,IAAI,CAAC3jT,SAAS,CAE5Bo/W,YAAax7X,CAAAA,OAAAA,CAAU,EAAE,CAAE,CACzBA,OAAAA,CAAQkhU,WAAW,CAAG,IAAI,CAC1BlhU,OAAQs0X,CAAAA,OAAO,CAAG,IAAI,CAAC8D,cAAc,CAACgC,QAAQ,CAAC,CAAE,CAAA,CACjD,MAAMvkY,QAAWmK,CAAAA,OAAAA,CAAQnK,QACzBmK,CAAAA,OAAAA,CAAQnK,QAAQ,CAAG,CAACuE,GAAKg6X,CAAAA,aAAAA,GAAAA,CACvB,GAAIA,aAAAA,CAAe,IAAI,CAACqH,kBAAkB,CAACrH,aAAAA,CAAAA,CAC3C,GAAIv+X,QAAAA,CAAUA,SAASuE,GAAKg6X,CAAAA,aAAAA,EAC9B,CACA,CAAA,IAAI,CAACx6Q,QAAQ,CAAC84Q,OAAO,CAAC1yW,KAAK,CAAChgB,OAC9B,EAAA,CACAy7X,mBAAmBrH,aAAa,CAAE,CAChC,IAAI,CAACyG,eAAe,CAACxrY,IAAI,CAAC+kY,aAC1B,CAAA,CAAA,IAAI,CAAC38X,IAAI,CAAC,aAAe28X,CAAAA,aAAAA,CAAAA,CACzBA,aAAcx+X,CAAAA,EAAE,CAAC,QAAA,CAAU,CAACid,QAAUqiI,CAAAA,QAAAA,CAAUgsL,WAAaw6D,CAAAA,aAAAA,GAAAA,CAC3D,GAAIx6D,WAAAA,GAAgB,IAAI,CAAE,OAC1B,IAAI,CAACzpU,IAAI,CAAC,gBAAA,CAAkB28X,cAAevhX,QAAUqiI,CAAAA,QAAAA,CAAUwmP,aACjE,EAAA,CAAA,CAAA,CACAtH,aAAcp+X,CAAAA,IAAI,CAAC,QAAU,CAAA,IAAA,CAC3B,IAAI,CAAC2lY,qBAAqB,CAACvH,eAC3B,IAAI,CAAC38X,IAAI,CAAC,gBAAkB28X,CAAAA,aAAAA,EAC9B,GACF,CACAuH,qBAAAA,CAAsBvH,aAAa,CAAE,CACnC,MAAM78X,IAAM,IAAI,CAACsjY,eAAe,CAACrjY,OAAO,CAAC48X,eACzC,GAAI78X,GAAAA,GAAQ,CAAC,CAAA,CAAG,IAAI,CAACsjY,eAAe,CAACxjY,MAAM,CAACE,GAAAA,CAAK,CACnD,EAAA,CA3LAjB,YAAYujH,OAAO,CAAEs+Q,aAAa,CAAC,CACjC,KAAK,GAAI,IAAI,CAACp4D,IAAI,CAAG,IAAI3+S,GAAAA,CAAO,IAAI,CAAC43W,SAAS,CAAG,IAAI53W,GAAO,CAAA,IAAI,CAACk5W,KAAK,CAAG,KAAO,CAAA,IAAI,CAAC1D,KAAK,CAAG,IAAM,CAAA,IAAI,CAACsE,oBAAoB,CAAG,KAAA,CAAO,IAAI,CAACD,oBAAoB,CAAGr7X,GAAAA,EAAAA,CAAO,IAAI,CAAC63X,eAAe,CAAG,IAAA,CAAM,IAAI,CAAC91W,eAAe,CAAG,KAAM,IAAI,CAACw/F,SAAS,CAAG,IAAI32G,IAAAA,CAAQ,IAAI,CAACorX,SAAS,CAAG,IAAIx/W,IAAAA,CAAQ,IAAI,CAACkhX,cAAc,CAAG,IAAA,CAAM,IAAI,CAAC0D,kBAAkB,CAAG,KAAM,IAAI,CAACzD,cAAc,CAAG,IAAM,CAAA,IAAI,CAACtjE,eAAe,CAAG,IAAM,CAAA,IAAI,CAAC5+K,WAAW,CAAG,IAAM,CAAA,IAAI,CAAC0jP,SAAS,CAAG,KAAA,CAAO,IAAI,CAACyB,UAAU,CAAG,KAAA,CAAO,IAAI,CAAClB,UAAU,CAAG,KAAA,CAAO,IAAI,CAACmB,aAAa,CAAG,KAAM,IAAI,CAACC,cAAc,CAAG,IAAM,CAAA,IAAI,CAACG,eAAe,CAAG,EACnkB,CAAA,IAAI,CAAC1jH,GAAG,CAAG,EAAE8iH,KACb,CAAA,IAAI,CAACrgR,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAACu+Q,cAAc,CAAGD,aAAAA,CACtB,GAAIA,aAAAA,CAAcvnR,IAAI,CAAE,CACtB,IAAI,CAACgmR,KAAK,CAAG,IAAIsB,MAAAA,CAAO,IAAI,EAC9B,CACF,CAoLF,CAzNI,aAFEgC,CAEGx6X,YAAY,CAAG,QAGpB,CALEw6X,aAAAA,CAKG0B,YAAY,CAAG,QAGpB,CARE1B,aAAAA,CAQGn4G,iBAAiB,CAAG,aAGzB,CAXEm4G,aAWGl4G,CAAAA,eAAe,CAAG,WAGvB,CAdEk4G,aAAAA,CAcG2B,aAAa,CAAG,SAGrB,CAjBE3B,aAAAA,CAiBG4B,kBAAkB,CAAG,cAG1B,CApBE5B,cAoBG6B,gBAAgB,CAAG,YAGxB,CAvBE7B,aAuBG8B,CAAAA,gBAAgB,CAAG,aAGxB,CA1BE9B,aA0BG+B,CAAAA,mBAAmB,CAAG,gBAG3B,CA7BE/B,aA6BGgC,CAAAA,mBAAmB,CAAG,gBAgM/B,CAAMC,MAAAA,OAAAA,SAAgB3lY,aAmCpBq9X,eAAkB,EAAA,CAChB,MAAMx7N,OAAAA,CAAU,IAAI,CAACx+C,OAAO,CAACw+C,OAAO,CACpCA,OAAAA,CAAQ7nK,gBAAgB,CAAC,qBAAsB,IAAI,CAAC4rY,wBAAwB,CAAA,CAC5E/jO,OAAQ7nK,CAAAA,gBAAgB,CAAC,QAAA,CAAU,GAACwG,EAAAA,CAClC,MAAMkqU,WAAAA,CAAc,IAAI,CAAC8xD,iBAAiB,CAACh8X,GAAAA,CAAIkqU,WAAW,CAAA,CAC1DA,WAAYv/R,CAAAA,MAAM,CAAC3qC,GAAIq2M,CAAAA,KAAK,CAC5B6zH,CAAAA,WAAAA,CAAYzpU,IAAI,CAAC,SAAUT,GAC3B,CAAA,CAAA,IAAI,CAACS,IAAI,CAAC,QAAA,CAAUypU,YAAalqU,GACnC,EAAA,CAAA,CAAA,CACAqhK,OAAQ7nK,CAAAA,gBAAgB,CAAC,aAAA,CAAe,GACtC,EAAA,CAAA,MAAM0wU,WAAc,CAAA,IAAI,CAAC8xD,iBAAiB,CAACh8X,GAAIkqU,CAAAA,WAAW,CAC1DA,CAAAA,WAAAA,CAAYv/R,MAAM,CAAC3qC,IAAIq2M,KAAK,CAC5B6zH,CAAAA,WAAAA,CAAYs5D,UAAU,CAAG,IACzBt5D,CAAAA,WAAAA,CAAYzpU,IAAI,CAAC,aAAeT,CAAAA,GAAAA,CAAAA,CAChC,IAAI,CAACS,IAAI,CAAC,aAAA,CAAeypU,WAAalqU,CAAAA,GAAAA,EACxC,CACAqhK,CAAAA,CAAAA,OAAAA,CAAQ7nK,gBAAgB,CAAC,WAAA,CAAa,GAACwG,EAAAA,CACrC,MAAMkqU,WAAAA,CAAc,IAAI,CAAC8xD,iBAAiB,CAACh8X,GAAAA,CAAIkqU,WAAW,CAAA,CAC1DA,YAAYv/R,MAAM,CAAC3qC,GAAIq2M,CAAAA,KAAK,CAC5B6zH,CAAAA,YAAYs5D,UAAU,CAAG,KACzBt5D,CAAAA,WAAAA,CAAYzpU,IAAI,CAAC,YAAaT,GAC9B,CAAA,CAAA,IAAI,CAACS,IAAI,CAAC,WAAA,CAAaypU,YAAalqU,GACtC,EAAA,CAAA,CAAA,CACAqhK,OAAQ7nK,CAAAA,gBAAgB,CAAC,SAAA,CAAW,GAClC,EAAA,CAAA,MAAM0wU,WAAc,CAAA,IAAI,CAAC8xD,iBAAiB,CAACh8X,GAAIkqU,CAAAA,WAAW,CAC1DA,CAAAA,WAAAA,CAAYv/R,MAAM,CAAC3qC,IAAIq2M,KAAK,CAAA,CAC5B6zH,WAAYzpU,CAAAA,IAAI,CAAC,SAAA,CAAWT,KAC5B,IAAI,CAACS,IAAI,CAAC,SAAWypU,CAAAA,WAAAA,CAAalqU,KACpC,CACAqhK,CAAAA,CAAAA,OAAAA,CAAQ7nK,gBAAgB,CAAC,cAAgB,CAACwG,MACxC,MAAMkqU,WAAAA,CAAc,IAAI,CAAC8xD,iBAAiB,CAACh8X,IAAIkqU,WAAW,CAAA,CAC1DA,WAAYv/R,CAAAA,MAAM,CAAC3qC,GAAAA,CAAIq2M,KAAK,CAC5B6zH,CAAAA,WAAYo4D,CAAAA,UAAU,CAAG,IAAA,CACzBp4D,WAAYzpU,CAAAA,IAAI,CAAC,cAAA,CAAgBT,GACjC,CAAA,CAAA,IAAI,CAACS,IAAI,CAAC,cAAgBypU,CAAAA,WAAAA,CAAalqU,GACzC,EAAA,CAAA,CAAA,CACAqhK,OAAQ7nK,CAAAA,gBAAgB,CAAC,YAAc,CAACwG,GACtC,EAAA,CAAA,MAAMkqU,WAAc,CAAA,IAAI,CAAC8xD,iBAAiB,CAACh8X,GAAIkqU,CAAAA,WAAW,CAC1DA,CAAAA,WAAAA,CAAYv/R,MAAM,CAAC3qC,GAAAA,CAAIq2M,KAAK,CAC5B6zH,CAAAA,WAAAA,CAAYo4D,UAAU,CAAG,KAAA,CACzBp4D,WAAYzpU,CAAAA,IAAI,CAAC,YAAA,CAAcT,KAC/B,IAAI,CAACS,IAAI,CAAC,YAAcypU,CAAAA,WAAAA,CAAalqU,KACvC,CACA,CAAA,CAAA,MAAMqlY,YAAehkO,CAAAA,OAAAA,CAAQgkO,YAAY,CACzC,IAAI,IAAI9tY,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI8tY,YAAa7tY,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CAC1C,IAAI,CAAC+tY,eAAe,CAACD,YAAY,CAAC9tY,CAAAA,CAAE,EACtC,CACF,CACA8lY,aAAAA,EAAgB,CACd,IAAI9lY,CAAAA,CAAI,IAAI,CAACguY,aAAa,CAAC/tY,MAAM,CACjC,MAAMD,CAAI,EAAA,CAAA,CACR,MAAM2yU,WAAAA,CAAc,IAAI,CAACq7D,aAAa,CAAChuY,CAAAA,CAAE,CACzC,IAAI,CAACguY,aAAa,CAACllY,MAAM,CAAC9I,CAAG,CAAA,CAAA,CAAA,CAC7B2yU,YAAYzpU,IAAI,CAAC,QACjB,CAAA,CAAA,IAAI,CAACA,IAAI,CAAC,QAAA,CAAUypU,WACtB,EAAA,CACA,MAAM7oK,OAAAA,CAAU,IAAI,CAACx+C,OAAO,CAACw+C,OAAO,CACpCA,OAAAA,CAAQ5nK,mBAAmB,CAAC,qBAAsB,IAAI,CAAC2rY,wBAAwB,EACjF,CACAI,qBAAAA,CAAsBxlY,GAAG,CAAE,CACzB,IAAI,IAAIzI,CAAI,CAAA,CAAA,CAAGA,EAAIyI,GAAIf,CAAAA,OAAO,CAACzH,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,IAAI,CAACkuY,kBAAkB,CAACzlY,GAAIf,CAAAA,OAAO,CAAC1H,CAAE,CAAA,EACxC,CACA,IAAI,IAAIA,CAAAA,CAAI,EAAGA,CAAIyI,CAAAA,GAAAA,CAAI0lY,KAAK,CAACluY,MAAM,CAAED,IAAI,CACvC,IAAI,CAAC+tY,eAAe,CAACtlY,GAAAA,CAAI0lY,KAAK,CAACnuY,CAAAA,CAAE,EACnC,CACF,CACAykY,iBAAAA,CAAkBmF,aAAa,CAAE,CAC/B,IAAI,IAAI5pY,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACguY,aAAa,CAAC/tY,MAAM,CAAED,IAAI,CAChD,GAAI,IAAI,CAACguY,aAAa,CAAChuY,EAAE,CAAC2yU,WAAW,GAAKi3D,aAAAA,CAAe,CACvD,OAAO,IAAI,CAACoE,aAAa,CAAChuY,CAAAA,CAAE,CAEhC,CACA,OAAO,IACT,CACA+tY,eAAAA,CAAgBnE,aAAa,CAAE,CAC7B,GAAI,IAAI,CAACnF,iBAAiB,CAACmF,aAAgB,CAAA,CAAA,CACzC,MACF,CACA,MAAMj3D,WAAc,CAAA,IAAIg5D,aAAc,CAAA,IAAI,CAACrgR,OAAO,CAAEs+Q,aACpD,CAAA,CAAA,IAAI,CAACoE,aAAa,CAACltY,IAAI,CAAC6xU,WACxB,CAAA,CAAA,IAAI,CAACzpU,IAAI,CAAC,KAAOypU,CAAAA,WAAAA,EACnB,CACAu7D,kBAAAA,CAAmBtE,aAAa,CAAE,CAChC,IAAI,IAAI5pY,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACguY,aAAa,CAAC/tY,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,GAAI,IAAI,CAACguY,aAAa,CAAChuY,CAAE,CAAA,CAAC2yU,WAAW,GAAKi3D,aAAe,CAAA,CACvD,QACF,CACA,MAAMj3D,WAAAA,CAAc,IAAI,CAACq7D,aAAa,CAAChuY,CAAAA,CAAE,CACzC,IAAI,CAACguY,aAAa,CAACllY,MAAM,CAAC9I,CAAG,CAAA,CAAA,CAAA,CAC7B,IAAIyzB,CAAIk/S,CAAAA,WAAAA,CAAY05D,cAAc,CAACpsY,MAAM,CACzC,MAAMwzB,CAAI,EAAA,CAAA,CACRk/S,WAAY05D,CAAAA,cAAc,CAAC54W,CAAAA,CAAE,CAACppB,MAAM,GACtC,CACAsoU,WAAAA,CAAYzpU,IAAI,CAAC,UACjB,IAAI,CAACA,IAAI,CAAC,QAAUypU,CAAAA,WAAAA,CAAAA,CACpB,MACF,CACF,CACAv/R,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,IAAI,IAAI9+M,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACguY,aAAa,CAAC/tY,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,IAAI,CAACguY,aAAa,CAAChuY,CAAAA,CAAE,CAACozC,MAAM,CAAC0rK,KAAAA,EAC/B,CACF,CACA,IAAIgvL,YAAe,EAAA,CACjB,OAAO,IAAI,CAACE,aACd,CApHAjmY,WAAAA,CAAYujH,OAAO,CAAC,CAClB,KAAK,EAAA,CAAI,IAAI,CAAC0iR,aAAa,CAAG,EAAE,CAAE,IAAI,CAACpB,mBAAmB,CAAG,KAC7D,CAAA,IAAI,CAACthR,OAAO,CAAGA,OACf,CAAA,IAAI,CAACshR,mBAAmB,CAAG,CAAC,EAAEvpY,SAASI,OAAO,EAAIzB,MAAOosY,CAAAA,MAAM,EAAE/7Q,SAAAA,EAAWhmH,eAAe,gBAAgB,CAAA,CAC3G,CAAA,IAAI,CAACwhY,wBAAwB,CAAG,GAACplY,EAAAA,CAC/B,IAAI,CAACwlY,qBAAqB,CAACxlY,KAC7B,CACA,CAAA,IAAI,CAAC6iH,OAAO,CAACjkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,EACnD,IAAI,CAACh6Q,OAAO,CAACjkH,EAAE,CAAC,MAAO,IAAI,CAACy+X,aAAa,CAAE,IAAI,EACjD,CA4GF,CA5II,OAFE8H,CAEG18X,SAAS,CAAG,KAGjB,CALE08X,QAKGz8X,YAAY,CAAG,QAGpB,CAREy8X,OAQGP,CAAAA,YAAY,CAAG,QAGpB,CAXEO,OAWGp6G,CAAAA,iBAAiB,CAAG,aAGzB,CAdEo6G,OAcGn6G,CAAAA,eAAe,CAAG,WAGvB,CAjBEm6G,OAAAA,CAiBGN,aAAa,CAAG,SAGrB,CApBEM,OAAAA,CAoBGL,kBAAkB,CAAG,cAG1B,CAvBEK,OAAAA,CAuBGJ,gBAAgB,CAAG,YAyH5B,CAAA,MAAMa,MAAQ,IAAIpyX,IAAAA,CAClB,MAAMqyX,KAAAA,CAAQ,IAAIryX,IAAAA,CAClB,MAAMsyX,KAAQ,CAAA,IAAIhsX,IAClB,CAAA,MAAMisX,KAAQ,CAAA,IAAIjsX,IAClB,CAAMksX,MAAAA,iBAAAA,SAA0BxmY,YAa9Bq9X,CAAAA,eAAAA,EAAkB,CAChB,MAAM3rT,UAAY,CAAC,CAAC,IAAI,CAAC0xC,QAAQ,CAACy+C,OAAO,CAAC4kO,iBAAiB,CAC3D,GAAI,CAAC/0T,SAAAA,CAAW,OAChB,IAAI,CAAC+pT,UAAU,CAAG,KACpB,CACAoC,aAAgB,EAAA,CACd,IAAI,CAACpC,UAAU,CAAG,KAClB,CAAA,IAAI,CAAC8B,UAAU,CAAG,KAClB,CAAA,IAAI,CAACmJ,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,WAAW,CAAG,KACrB,CACAn9W,KAAAA,EAAQ,CACN,IAAI5lB,GACJ,CAAA,GAAI,CAAC,IAAI,CAACw/G,QAAQ,CAACy+C,OAAO,CAAE,CAC1Bj+J,GAAAA,CAAM,IAAI3B,KAAAA,CAAM,6BAClB,CACA,GAAI,CAAC2B,GAAAA,EAAO,IAAI,CAACw/G,QAAQ,CAAC5zG,IAAI,GAAKyqX,SAAAA,CAAW,CAC5Cr2X,GAAAA,CAAM,IAAI3B,KAAM,CAAA,2BAAA,EAClB,CACA,GAAI,CAAC2B,GAAAA,EAAO,CAAC,IAAI,CAAC63X,UAAU,CAAE,CAC5B73X,GAAAA,CAAM,IAAI3B,KAAM,CAAA,mCAAA,EAClB,CACA,GAAI,CAAC2B,GAAAA,EAAO,IAAI,CAAC+iY,WAAW,EAAI,IAAI,CAACD,oBAAoB,CAAE,CACzD9iY,GAAAA,CAAM,IAAI3B,KAAAA,CAAM,uCAClB,EAAA,CACA,GAAI2B,GAAK,CAAA,CACP,IAAI,CAAC3C,IAAI,CAAC,QAAS2C,GACnB,CAAA,CAAA,MACF,CACA,IAAI,CAAC8iY,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAACtjR,QAAQ,CAACy+C,OAAO,CAAC4kO,iBAAiB,EAAA,CAAGziY,IAAI,CAAC,UAAC4iY,EAAAA,CAC9C,MAAMC,YAAe,CAAA,IAAI,CAACH,oBAAoB,CAC9C,IAAI,CAACA,oBAAoB,CAAG,KAAA,CAC5B,GAAI,IAAI,CAACtjR,QAAQ,CAAC6zB,MAAM,CAAE,CACxB,GAAI4vP,YAAc,CAAA,CAChB,IAAI,CAACF,WAAW,CAAGC,WACrB,CACF,MAAO,CACL,IAAI,CAAC3lY,IAAI,CAAC,OAAA,CAAS,IAAIgB,KAAM,CAAA,0BAAA,CAAA,EAC/B,CACF,CAAA,CAAA,CAAG21F,KAAK,CAAC,EACP,EAAA,CAAA,IAAI,CAAC8uS,oBAAoB,CAAG,KAAA,CAC5B,IAAI,CAACzlY,IAAI,CAAC,OAAA,CAASrK,EACrB,EAAA,CAAA,EACF,CACA6G,GAAM,EAAA,CACJ,IAAI,CAACipY,oBAAoB,CAAG,KAC5B,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACpJ,UAAU,CAAG,MACpB,CACApyV,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC8vL,WAAW,CAAE,OACvB,MAAMG,aAAAA,CAAgBjwL,KAAMkwL,CAAAA,gBAAgB,CAAC,IAAI,CAACJ,WAAW,CAAA,CAC7D,GAAI,CAACG,cAAe,OACpB,GAAI,CAAC,IAAI,CAACvJ,UAAU,CAAE,CACpB,IAAI,CAACA,UAAU,CAAG,IAAA,CAClB,IAAI,CAACt8X,IAAI,CAAC,WAAA,EACZ,CACA,MAAM+lY,IAAMF,aAAcG,CAAAA,qBAAqB,CAC/C,IAAI,CAACt6O,UAAU,CAAGr1J,IAAAA,CAAKoU,GAAG,CAAC,CAAKpU,CAAAA,IAAAA,CAAKoU,GAAG,CAACs7X,GAAI56X,CAAAA,CAAC,CAAE9U,IAAAA,CAAKoU,GAAG,CAACs7X,IAAIlzX,CAAC,CAAEkzX,GAAI/yX,CAAAA,CAAC,CACrEmyX,CAAAA,CAAAA,CAAAA,KAAAA,CAAMtvY,IAAI,CAACkwY,GAAAA,CAAAA,CAAKn5X,SAAS,CAAC,CAAI,CAAA,IAAI,CAAC8+I,UAAU,CAAA,CAC7C,IAAI,CAACE,MAAM,CAACvsJ,GAAG,CAAC8lY,KAAAA,CAAMh6X,CAAC,CAAEg6X,KAAMtyX,CAAAA,CAAC,CAAEsyX,KAAMnyX,CAAAA,CAAC,CACzCmyX,CAAAA,KAAAA,CAAM9lY,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAA,CAChB+lY,KAAMvvY,CAAAA,IAAI,CAACgwY,aAAAA,CAAcI,qBAAqB,CAC9CZ,CAAAA,KAAAA,CAAMlqX,SAAS,CAACiqX,KAAOD,CAAAA,KAAAA,CAAOpyX,KAAKiC,EAAE,CAAA,CACrCswX,KAAMppX,CAAAA,gBAAgB,CAACnJ,IAAAA,CAAKmC,KAAK,CAAE,EAAA,CAAA,CACnCmwX,KAAMjxX,CAAAA,GAAG,CAACkxX,KAAAA,CAAAA,CACV,IAAI,CAACnH,SAAS,CAACpoX,WAAW,CAACsvX,KAAAA,CAAAA,CAC3B,IAAI,CAACa,mBAAmB,CAAC7mY,GAAG,CAACwmY,aAAAA,CAAcM,8BAA8B,EAC3E,CACA,IAAI11T,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC+pT,UAAU,CAExB,IAAItxS,SAAAA,EAAY,CACd,OAAO,IAAI,CAACozS,UAAU,CAExB,IAAI9jR,SAAY,EAAA,CACd,OAAO,IAAI,CAAC8jR,UAAU,CAAG,IAAI,CAAC5wO,UAAU,CAAG,IAC7C,CACA,IAAI3wG,OAAQ,CACV,OAAO,IAAI,CAACuhV,UAAU,CAAG,IAAI,CAAC1wO,MAAM,CAAG,IACzC,CACA,IAAInO,UAAW,CACb,OAAO,IAAI,CAAC6+O,UAAU,CAAG,IAAI,CAAC6B,SAAS,CAAG,IAC5C,CACA,IAAIiI,oBAAqB,CACvB,OAAO,IAAI,CAAC9J,UAAU,CAAG,IAAI,CAAC4J,mBAAmB,CAAG,IACtD,CA7FArnY,WAAAA,CAAYujH,OAAO,CAAC,CAClB,KAAK,EAAA,CAAI,IAAI,CAACo4Q,UAAU,CAAG,KAAA,CAAO,IAAI,CAAC8B,UAAU,CAAG,MAAO,IAAI,CAACmJ,oBAAoB,CAAG,KAAO,CAAA,IAAI,CAACC,WAAW,CAAG,IAAM,CAAA,IAAI,CAACh6O,UAAU,CAAG,CAAG,CAAA,IAAI,CAACyyO,SAAS,CAAG,IAAIx/W,KAAQ,IAAI,CAACitI,MAAM,CAAG,IAAIz/I,KAAAA,CAAS,IAAI,CAAC+5X,mBAAmB,CAAG,IAAIv1X,YAAa,CAAA,EAAA,CAChP,CAAA,IAAI,CAACwxG,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAACD,QAAQ,CAAChkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,CACpD,CAAA,IAAI,CAACj6Q,QAAQ,CAAChkH,EAAE,CAAC,KAAO,CAAA,IAAI,CAACy+X,aAAa,CAAE,IAAI,EAClD,CAyFF,CAnGI,iBAFE2I,CAEGjI,eAAe,CAAG,WAGvB,CALEiI,iBAAAA,CAKGr3J,WAAW,CAAG,QAkGvB,IAAI5nD,GAAAA,CAAM,CACV,CAAA,MAAM+/M,OAAgBtnY,SAAAA,YAAAA,CAepBkhC,SAAU,CACR,GAAI,CAAC,IAAI,CAACqmW,QAAQ,CAAE,OACpB,IAAI,CAACA,QAAQ,CAAG,KAChB,IAAI,CAACtmY,IAAI,CAAC,QACZ,EAAA,CACAkqC,OAAO0rK,KAAK,CAAE,CACZ,MAAMxzF,OAAU,CAAA,IAAI,CAACmkR,eAAe,CAACpkR,QAAQ,CAC7C,MAAM05Q,IAAAA,CAAOjmL,MAAMkmL,OAAO,CAAC,IAAI,CAACwK,QAAQ,CAACE,UAAU,CAAEpkR,OAAAA,CAAQ25Q,eAAe,CAAA,CAC5E,GAAIF,IAAAA,CAAM,CACR,IAAI,CAACnyQ,SAAS,CAAC7zH,IAAI,CAACgmY,KAAK5qP,SAAS,CAAC71H,QAAQ,CAAA,CAC3C,IAAI,CAAC+iX,SAAS,CAACtoY,IAAI,CAACgmY,IAAAA,CAAK5qP,SAAS,CAACtvB,WAAW,EAChD,CACA,GAAI,IAAI,CAAC8kR,gBAAgB,GAAK,IAAI,CAACH,QAAQ,CAACI,eAAe,CAAE,CAC3D,IAAI,CAACD,gBAAgB,CAAG,IAAI,CAACH,QAAQ,CAACI,eAAe,CACrD,IAAI,CAAC1mY,IAAI,CAAC,UACZ,CACF,CACAohH,WAAc,EAAA,CACZ,OAAO,IAAI,CAACsI,SACd,CACAo1B,WAAAA,EAAc,CACZ,OAAO,IAAI,CAACq/O,SAAS,CAEvB,IAAIr9V,EAAAA,EAAK,CACP,OAAO,IAAI,CAAC4+O,GAAG,CAEjB,IAAI/9J,WAAc,EAAA,CAChB,OAAO,IAAI,CAACqnM,YAAY,CAE1B,IAAIjuK,MAAAA,EAAS,CACX,OAAO,IAAI,CAACurP,QAAQ,CAACK,OAAO,CAE9B,IAAIxuU,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACmuU,QAAQ,CAACM,aAAa,EAAI,EACxC,CA1CA/nY,WAAYgoY,CAAAA,cAAc,CAAEC,OAAO,CAAC,CAClC,KAAK,EAAI,CAAA,IAAI,CAACp9Q,SAAS,CAAG,IAAI32G,IAAAA,CAAQ,IAAI,CAACorX,SAAS,CAAG,IAAIx/W,IAC3D,CAAA,IAAI,CAAC+gQ,GAAG,CAAG,EAAEp5F,GACb,CAAA,IAAI,CAACigN,eAAe,CAAGM,cACvB,CAAA,IAAI,CAACP,QAAQ,CAAGQ,OAChB,CAAA,IAAI,CAACL,gBAAgB,CAAGK,OAAAA,CAAQJ,eAChC,CAAA,IAAI,CAAC19E,YAAY,CAAG89E,OAAQnlR,CAAAA,YAAW,CAqC3C,CAhDI,OAFE0kR,CAEGp+X,YAAY,CAAG,QAGpB,CALEo+X,OAAAA,CAKGn+X,YAAY,CAAG,QA+CxB,CAAA,MAAM6+X,yBAAyBhoY,YAqB7Bq9X,CAAAA,eAAAA,EAAkB,CAChB,GAAI,IAAI,CAACj6Q,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAAE,CACzC,MAAMnzS,SAAY,CAAA,IAAI,CAACi5B,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAACt8X,OAAO,CAAC,iBAAuB,CAAA,GAAA,CAAC,EACxF,GAAImpF,SAAAA,CAAW,CACb,IAAI,CAACozS,UAAU,CAAG,IAClB,CAAA,IAAI,CAACt8X,IAAI,CAAC,WAAA,EACZ,CACF,CACF,CACA48X,aAAgB,EAAA,CACd,IAAI,IAAI9lY,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACkwY,OAAO,CAACjwY,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,IAAI,CAACkwY,OAAO,CAAClwY,CAAE,CAAA,CAACmpC,OAAO,EAAA,CACvB,IAAI,CAACjgC,IAAI,CAAC,QAAA,CAAU,IAAI,CAACgnY,OAAO,CAAClwY,CAAE,CAAA,EACrC,CACA,IAAI,CAACmwY,YAAY,CAACvnY,KAAK,EACvB,CAAA,IAAI,CAACsnY,OAAO,CAACjwY,MAAM,CAAG,CACtB,CAAA,GAAI,IAAI,CAACulY,UAAU,CAAE,CACnB,IAAI,CAACA,UAAU,CAAG,KAClB,CAAA,IAAI,CAACt8X,IAAI,CAAC,aACZ,EAAA,CACF,CACAkqC,MAAAA,CAAO0rK,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC0mL,UAAU,CAAE,CACpB,GAAI,CAAC,IAAI,CAACn6Q,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,EAAIzmL,KAAAA,CAAMsxL,cAAc,CAAClrY,IAAI,CAAE,CACvE,IAAI,CAACsgY,UAAU,CAAG,IAAA,CAClB,IAAI,CAACt8X,IAAI,CAAC,aACZ,CAAO,KAAA,CACL,MACF,CACF,CACA,MAAMknY,eAAiBtxL,KAAMsxL,CAAAA,cAAc,CAC3C,IAAK,KAAM,CAACJ,QAASK,KAAM,CAAA,GAAI,IAAI,CAACF,YAAY,CAAC,CAC/C,GAAIC,cAAAA,CAAe9nY,GAAG,CAAC0nY,OAAU,CAAA,CAAA,CAC/B,QACF,CACA,IAAI,CAACG,YAAY,CAACtnY,MAAM,CAACmnY,OACzB,CAAA,CAAA,IAAI,CAACE,OAAO,CAACpnY,MAAM,CAAC,IAAI,CAAConY,OAAO,CAACjnY,OAAO,CAAConY,KAAAA,CAAAA,CAAQ,GACjDA,KAAMlnW,CAAAA,OAAO,EACb,CAAA,IAAI,CAACjgC,IAAI,CAAC,QAAUmnY,CAAAA,KAAAA,EACtB,CACA,IAAK,MAAML,OAAAA,IAAWI,eAAe,CACnC,IAAIC,KAAQ,CAAA,IAAI,CAACF,YAAY,CAACpuY,GAAG,CAACiuY,OAClC,CAAA,CAAA,GAAI,CAACK,KAAAA,CAAO,CACVA,KAAQ,CAAA,IAAId,OAAQ,CAAA,IAAI,CAAES,OAAAA,CAAAA,CAC1B,IAAI,CAACG,YAAY,CAAC5nY,GAAG,CAACynY,OAAAA,CAASK,OAC/B,IAAI,CAACH,OAAO,CAACpvY,IAAI,CAACuvY,OAClBA,KAAMj9V,CAAAA,MAAM,CAAC0rK,KAAAA,CAAAA,CACb,IAAI,CAAC51M,IAAI,CAAC,KAAA,CAAOmnY,KACnB,EAAA,CAAA,KAAO,CACLA,KAAAA,CAAMj9V,MAAM,CAAC0rK,KAAAA,EACf,CACF,CACF,CACA,IAAInlI,WAAY,CACd,OAAO,IAAI,CAAC+pT,UACd,CACA,IAAItxS,SAAAA,EAAY,CACd,OAAO,IAAI,CAACozS,UAAU,CAExB,IAAItzW,MAAAA,EAAS,CACX,OAAO,IAAI,CAACg+W,OAAO,CApErBnoY,WAAYujH,CAAAA,OAAO,CAAC,CAClB,KAAK,EAAI,CAAA,IAAI,CAACo4Q,UAAU,CAAGrgY,QAAAA,CAASI,OAAO,EAAI,CAAC,CAACzB,MAAOsuY,CAAAA,OAAO,CAAE,IAAI,CAAC9K,UAAU,CAAG,KAAO,CAAA,IAAI,CAAC2K,YAAY,CAAG,IAAI/nY,GAAAA,CAAO,IAAI,CAAC8nY,OAAO,CAAG,EAAE,CAC1I,IAAI,CAAC7kR,QAAQ,CAAGC,OAAAA,CAChB,GAAI,IAAI,CAACo4Q,UAAU,CAAE,CACnB,IAAI,CAACr4Q,QAAQ,CAAChkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,EACpD,IAAI,CAACj6Q,QAAQ,CAAChkH,EAAE,CAAC,KAAO,CAAA,IAAI,CAACy+X,aAAa,CAAE,IAAI,EAClD,CACF,CA+DF,CAnFMmK,gBAEGzJ,CAAAA,eAAe,CAAG,WAGvB,CALEyJ,gBAKGxJ,CAAAA,iBAAiB,CAAG,aAGzB,CAREwJ,gBAAAA,CAQG/+X,SAAS,CAAG,KAGjB,CAXE++X,gBAAAA,CAWG9+X,YAAY,CAAG,QA0ExB,CAAMo/X,MAAAA,QAAAA,SAAiBtoY,YAmBrBkhC,CAAAA,OAAAA,EAAU,CACR,GAAI,CAAC,IAAI,CAACqnW,SAAS,CAAE,OACrB,MAAMC,SAAW,IAAI,CAACD,SAAS,CAC/B,IAAI,CAACA,SAAS,CAAC3nY,MAAM,EACrB,CAAA,IAAI,CAAC2nY,SAAS,CAAG,IACjB,CAAA,IAAI,CAACtnY,IAAI,CAAC,SAAA,CAAWunY,SAAU,IAAI,EACrC,CACAr9V,MAAAA,CAAO0rK,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC0xL,SAAS,CAAE,CACnB,MACF,CACA,MAAMzL,IAAAA,CAAOjmL,KAAMkmL,CAAAA,OAAO,CAAC,IAAI,CAACwL,SAAS,CAACE,WAAW,CAAE,IAAI,CAACC,QAAQ,CAACrlR,OAAO,CAAC25Q,eAAe,EAC5F,GAAIF,IAAAA,CAAM,CACR,GAAI,IAAI,CAACnyQ,SAAS,CAACn9G,MAAM,CAACsvX,IAAAA,CAAK5qP,SAAS,CAAC71H,QAAQ,CAAK,EAAA,IAAI,CAAC+iX,SAAS,CAAC5xX,MAAM,CAACsvX,IAAK5qP,CAAAA,SAAS,CAACtvB,WAAW,CAAG,CAAA,CACvG,MACF,CACA,IAAI,CAAC+H,SAAS,CAAC7zH,IAAI,CAACgmY,IAAK5qP,CAAAA,SAAS,CAAC71H,QAAQ,CAC3C,CAAA,IAAI,CAAC+iX,SAAS,CAACtoY,IAAI,CAACgmY,IAAK5qP,CAAAA,SAAS,CAACtvB,WAAW,CAAA,CAC9C,IAAI,CAAC3hH,IAAI,CAAC,UACZ,CACF,CACAohH,WAAc,EAAA,CACZ,OAAO,IAAI,CAACsI,SACd,CACAo1B,WAAAA,EAAc,CACZ,OAAO,IAAI,CAACq/O,SACd,CACAuJ,OAAAA,CAAQtpY,QAAQ,CAAE,CAChB,GAAI,CAAC,IAAI,CAACqpY,QAAQ,CAACE,WAAW,CAAE,CAC9BvpY,QAAW,GAAA,IAAI4C,KAAM,CAAA,sCAAA,CAAA,CAAyC,MAC9D,MACF,CACA,GAAI,IAAI,CAAC4mY,KAAK,CAAE,CACdxpY,QAAAA,GAAW,IAAM,CAAA,IAAI,CAACwpY,KAAK,EAC3B,MACF,CACA,GAAI,IAAI,CAACC,aAAa,CAAE,CACtB,GAAIzpY,QAAU,CAAA,IAAI,CAACypY,aAAa,CAACjwY,IAAI,CAACwG,QACtC,CAAA,CAAA,MACF,CACA,IAAI,CAACypY,aAAa,CAAG,EAAE,CACvB,IAAI,CAACP,SAAS,CAACQ,uBAAuB,EAAG/kY,CAAAA,IAAI,CAAEglY,OAC7C,IAAI,CAACH,KAAK,CAAGG,IACb,CAAA,IAAI,CAACN,QAAQ,CAACO,YAAY,CAAC3oY,GAAG,CAAC,IAAI,CAACuoY,KAAK,CAAE,IAAI,CAC/CxpY,CAAAA,QAAAA,GAAW,KAAM2pY,IACjB,CAAA,CAAA,IAAK,MAAME,WAAAA,IAAe,IAAI,CAACJ,aAAa,CAAC,CAC3CI,WAAY,CAAA,IAAA,CAAMF,IACpB,EAAA,CACA,IAAI,CAACF,aAAa,CAAG,IAAA,CACrB,IAAI,CAAC7nY,IAAI,CAAC,SAAW+nY,CAAAA,IAAAA,EACvB,CAAGpxS,CAAAA,CAAAA,KAAK,CAAEhhG,KACRyI,QAAWzI,GAAAA,EAAAA,CAAI,IACf,CAAA,CAAA,IAAK,MAAMsyY,WAAAA,IAAe,IAAI,CAACJ,aAAa,CAAC,CAC3CI,WAAYtyY,CAAAA,EAAAA,CAAI,MAClB,CACA,IAAI,CAACkyY,aAAa,CAAG,KACvB,GACF,CACAK,MAAAA,CAAO9pY,QAAQ,CAAE,CACf,GAAI,CAAC,IAAI,CAACwpY,KAAK,CAAE,CACfxpY,QAAAA,GAAW,IAAI4C,KAAM,CAAA,0BAAA,CAAA,CAAA,CACrB,MACF,CACA,IAAI,CAACymY,QAAQ,CAACS,MAAM,CAAC,IAAI,CAACN,KAAK,CAAE,EAACjyY,EAAAA,CAChC,IAAI,CAACiyY,KAAK,CAAG,KACbxpY,QAAWzI,GAAAA,EAAAA,CAAAA,CACX,IAAI,CAACqK,IAAI,CAAC,UACZ,CACF,EAAA,CACA,IAAI+nY,IAAAA,EAAO,CACT,OAAO,IAAI,CAACH,KAAK,CAEnB,IAAI3pV,UAAAA,EAAa,CACf,OAAO,CAAC,CAAC,IAAI,CAAC2pV,KAAK,CA/ErB/oY,WAAAA,CAAYspY,OAAO,CAAEZ,QAAQ,CAAEQ,KAAO,IAAI,CAAC,CACzC,KAAK,EAAI,CAAA,IAAI,CAACr+Q,SAAS,CAAG,IAAI32G,IAAAA,CAAQ,IAAI,CAACorX,SAAS,CAAG,IAAIx/W,IAAAA,CAAQ,IAAI,CAACipX,KAAK,CAAG,KAAM,IAAI,CAACC,aAAa,CAAG,IAC3G,CAAA,IAAI,CAACJ,QAAQ,CAAGU,OAChB,CAAA,IAAI,CAACb,SAAS,CAAGC,QACjB,CAAA,IAAI,CAACK,KAAK,CAAGG,KACf,CA4EF,CA5FI,QAFEV,CAEGrsJ,aAAa,CAAG,SAGrB,CALEqsJ,QAAAA,CAKGn/X,YAAY,CAAG,QAGpB,CAREm/X,QAAAA,CAQGe,aAAa,CAAG,SAGrB,CAXEf,SAWGgB,YAAY,CAAG,QAqFxB,CAAA,MAAMC,SAAkBvpY,SAAAA,YAAAA,CAwBtBq9X,eAAkB,EAAA,CAChB,MAAMlzS,SAAAA,CAAY,IAAI,CAACk5B,OAAO,CAACw+C,OAAO,CAACy7N,eAAe,EAAEt8X,OAAAA,CAAQ,SAAc,CAAA,EAAA,CAAA,CAC9E,GAAI,CAACmpF,SAAAA,CAAW,OAChB,IAAI,CAACozS,UAAU,CAAGpzS,SAAAA,CAClB,IAAI,CAAClpF,IAAI,CAAC,aACZ,CACA48X,aAAAA,EAAgB,CACd,GAAI,CAAC,IAAI,CAACN,UAAU,CAAE,OACtB,IAAI,CAACA,UAAU,CAAG,KAAA,CAClB,IAAI,IAAIxlY,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACyxY,cAAc,CAACxxY,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,GAAI,CAAC,IAAI,CAACyxY,cAAc,CAACzxY,EAAE,CAACsH,QAAQ,CAAE,CACpC,QACF,CACA,IAAI,CAACmqY,cAAc,CAACzxY,CAAAA,CAAE,CAACsH,QAAQ,CAAC,IAAI4C,KAAAA,CAAM,eAAkB,CAAA,CAAA,IAAA,EAC9D,CACA,IAAI,CAACunY,cAAc,CAACxxY,MAAM,CAAG,CAC7B,CAAA,IAAI,CAACgK,MAAM,CAACrB,KAAK,EAAA,CACjB,IAAI,CAACsoY,YAAY,CAACtoY,KAAK,EACvB,CAAA,IAAI5I,CAAI,CAAA,IAAI,CAACoK,KAAK,CAACnK,MAAM,CACzB,MAAMD,CAAAA,EAAAA,CAAI,CACR,IAAI,CAACoK,KAAK,CAACpK,CAAE,CAAA,CAACmpC,OAAO,GACvB,CACA,IAAI,CAAC/+B,KAAK,CAACnK,MAAM,CAAG,CAAA,CACpB,IAAI,CAACiJ,IAAI,CAAC,eACZ,CACAwoY,aAAAA,CAAcjB,QAAQ,CAAEQ,IAAO,CAAA,IAAI,CAAE,CACnC,MAAMz9F,MAAS,CAAA,IAAI+8F,QAAS,CAAA,IAAI,CAAEE,QAAUQ,CAAAA,IAAAA,CAAAA,CAC5C,IAAI,CAAChnY,MAAM,CAAC1B,GAAG,CAACkoY,QAAAA,CAAUj9F,MAC1B,CAAA,CAAA,GAAIy9F,IAAM,CAAA,IAAI,CAACC,YAAY,CAAC3oY,GAAG,CAAC0oY,IAAMz9F,CAAAA,MAAAA,CAAAA,CACtC,IAAI,CAACppS,KAAK,CAACtJ,IAAI,CAAC0yS,MAChBA,CAAAA,CAAAA,MAAAA,CAAO/rS,IAAI,CAAC,SAAA,CAAW,IAAI,CAACkqY,gBAAgB,CAAE,IAAI,CAClD,CAAA,OAAOn+F,MACT,CACAm+F,gBAAiBlB,CAAAA,QAAQ,CAAEj9F,MAAM,CAAE,CACjC,IAAI,CAACvpS,MAAM,CAACpB,MAAM,CAAC4nY,QACnB,CAAA,CAAA,GAAIj9F,MAAOy9F,CAAAA,IAAI,CAAE,IAAI,CAACC,YAAY,CAACroY,MAAM,CAAC2qS,OAAOy9F,IAAI,CAAA,CACrD,MAAMjoY,GAAAA,CAAM,IAAI,CAACoB,KAAK,CAACnB,OAAO,CAACuqS,MAAAA,CAAAA,CAC/B,GAAIxqS,GAAAA,GAAQ,CAAC,CAAG,CAAA,IAAI,CAACoB,KAAK,CAACtB,MAAM,CAACE,GAAK,CAAA,CAAA,CAAA,CACvC,IAAI,CAACE,IAAI,CAAC,UAAWsqS,MACvB,EAAA,CACAr0S,MAAOmlB,CAAAA,QAAQ,CAAEqiI,QAAQ,CAAEr/I,QAAQ,CAAE,CACnC,GAAI,CAAC,IAAI,CAACk+X,UAAU,CAAE,CACpBl+X,QAAAA,GAAW,IAAI4C,KAAAA,CAAM,gCAAiC,IACtD,CAAA,CAAA,MACF,CACA,GAAIlI,MAAO4vY,CAAAA,eAAe,EAAIttX,QAAoBstX,YAAAA,eAAAA,CAAiB,CACjE,MAAMC,SAAYvtX,CAAAA,QAAAA,CAClBhd,SAAWq/I,QACX,CAAA,GAAI,CAAC,IAAI,CAAC+8O,UAAU,CAAE,CACpBp8X,QAAW,GAAA,IAAI4C,KAAM,CAAA,8BAAA,CAAA,CAAiC,IACtD,CAAA,CAAA,MACF,CACA,GAAI,CAAC2nY,SAAUC,CAAAA,YAAY,CAAE,CAC3BxqY,WAAW,IAAI4C,KAAAA,CAAM,gDAAmD,CAAA,CAAA,IAAA,CAAA,CACxE,MACF,CACA2nY,UAAUC,YAAY,EAAA,CAAG7lY,IAAI,CAAC,QAACwkY,EAAAA,CAC7B,MAAMj9F,MAAS,CAAA,IAAI,CAACk+F,aAAa,CAACjB,QAAAA,CAAAA,CAClCnpY,WAAW,IAAMksS,CAAAA,MAAAA,CAAAA,CACjB,IAAI,CAACtqS,IAAI,CAAC,MAAOsqS,MACnB,EAAA,CAAA,CAAA,CAAG3zM,KAAK,CAAC,EAAChhG,EAAAA,CACRyI,WAAWzI,EAAI,CAAA,IAAA,CAAA,CACf,IAAI,CAACqK,IAAI,CAAC,QAASrK,EACrB,EAAA,CAAA,EACF,CAAO,KAAA,CACL,IAAI,CAAC4yY,cAAc,CAAC3wY,IAAI,CAAC,CACvBq5I,SAAW,CAAA,IAAI43P,iBAAiBztX,QAAUqiI,CAAAA,QAAAA,CAAAA,CAC1Cr/I,QAAUA,CAAAA,QACZ,CACF,EAAA,CACF,CACAi+P,OAAQ0rI,CAAAA,IAAI,CAAE3pY,QAAQ,CAAE,CACtB,GAAI,CAAC,IAAI,CAACk+X,UAAU,CAAE,CACpBl+X,WAAW,IAAI4C,KAAAA,CAAM,8BAAiC,CAAA,CAAA,IAAA,CAAA,CACtD,MACF,CACA,GAAI,CAAC,IAAI,CAAC8nY,YAAY,CAAE,CACtB1qY,WAAW,IAAI4C,KAAAA,CAAM,qCAAwC,CAAA,CAAA,IAAA,CAAA,CAC7D,MACF,CACA,GAAI,CAAC,IAAI,CAACohH,OAAO,CAAC4zB,MAAM,CAAE,CACxB53I,QAAW,GAAA,IAAI4C,KAAM,CAAA,6BAAA,CAAA,CAAgC,IACrD,CAAA,CAAA,MACF,CACA,IAAI,CAACohH,OAAO,CAACw+C,OAAO,CAACmoO,uBAAuB,CAAChB,IAAAA,CAAAA,CAAMhlY,IAAI,CAAC,QAACwkY,EAAAA,CACvD,MAAMj9F,MAAS,CAAA,IAAI,CAACk+F,aAAa,CAACjB,QAAAA,CAAUQ,MAC5C3pY,QAAW,GAAA,IAAA,CAAMksS,MACjB,CAAA,CAAA,IAAI,CAACtqS,IAAI,CAAC,KAAOsqS,CAAAA,MAAAA,EACnB,CAAG3zM,CAAAA,CAAAA,KAAK,CAAEhhG,KACRyI,QAAWzI,GAAAA,EAAAA,CAAI,IACf,CAAA,CAAA,IAAI,CAACqK,IAAI,CAAC,OAAA,CAASrK,EACrB,EAAA,CAAA,EACF,CACAuyY,MAAAA,CAAOH,IAAI,CAAE3pY,QAAQ,CAAE,CACrB,GAAI,CAAC,IAAI,CAACk+X,UAAU,CAAE,CACpBl+X,QAAW,GAAA,IAAI4C,KAAM,CAAA,8BAAA,CAAA,CAAA,CACrB,MACF,CACA,GAAI,CAAC,IAAI,CAAC8nY,YAAY,CAAE,CACtB1qY,QAAAA,GAAW,IAAI4C,KAAAA,CAAM,qCACrB,CAAA,CAAA,CAAA,MACF,CACA,GAAI,CAAC,IAAI,CAACohH,OAAO,CAAC4zB,MAAM,CAAE,CACxB53I,QAAW,GAAA,IAAI4C,KAAM,CAAA,6BAAA,CAAA,CAAA,CACrB,MACF,CACA,IAAI,CAACohH,OAAO,CAACw+C,OAAO,CAACooO,sBAAsB,CAACjB,IAAAA,CAAAA,CAAMhlY,IAAI,CAAC,IACrD3E,CAAAA,QAAAA,GAAW,MACb,CAAGu4F,CAAAA,CAAAA,KAAK,CAAEhhG,EACRyI,EAAAA,CAAAA,QAAAA,GAAWzI,IACX,IAAI,CAACqK,IAAI,CAAC,OAASrK,CAAAA,EAAAA,EACrB,GACF,CACAu0C,MAAAA,CAAO0rK,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC0mL,UAAU,CAAE,CACpB,GAAI,CAAC,IAAI,CAACl6Q,OAAO,CAACw+C,OAAO,CAACy7N,eAAe,EAAI,CAAC,IAAI,CAACE,qBAAqB,CAAE,CACxE,IAAI,CAACA,qBAAqB,CAAG,IAC7B3mL,CAAAA,KAAAA,CAAMgzL,YAAY,CAAC,IAAIC,gBAAoB,CAAA,IAAI,CAACzmR,OAAO,CAAC25Q,eAAe,CAAA,CAAEh5X,IAAI,CAAC,QAACwkY,EAAAA,CAC7EA,SAAS5nY,MAAM,EAAA,CACf,GAAI,IAAI,CAACyiH,OAAO,CAAC4zB,MAAM,CAAE,CACvB,IAAI,CAACsmP,UAAU,CAAG,IAClB,CAAA,IAAI,CAACt8X,IAAI,CAAC,WAAA,EACZ,CACF,CAAG22F,CAAAA,CAAAA,KAAK,CAAC,IAAA,EACX,EAAA,CACA,MACF,CACA,GAAI,IAAI,CAAC4xS,cAAc,CAACxxY,MAAM,CAAE,CAC9B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACyxY,cAAc,CAACxxY,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACjD,MAAM+zE,OAAAA,CAAU,IAAI,CAAC09T,cAAc,CAACzxY,EAAE,CACtC8+M,KAAAA,CAAMgzL,YAAY,CAAC/9T,OAAQomE,CAAAA,SAAS,CAAE,IAAI,CAAC7uB,OAAO,CAAC25Q,eAAe,CAAA,CAAEh5X,IAAI,CAAEwkY,QACxE,EAAA,CAAA,GAAI18T,OAAQzsE,CAAAA,QAAQ,CAAE,CACpB,IAAI,CAAC6qY,iBAAiB,CAAC5pY,GAAG,CAACkoY,QAAU18T,CAAAA,OAAAA,CAAQzsE,QAAQ,EACvD,CACF,CAAA,CAAA,CAAGu4F,KAAK,CAAEhhG,EACR,EAAA,CAAA,GAAIk1E,OAAQzsE,CAAAA,QAAQ,CAAE,CACpBysE,OAAAA,CAAQzsE,QAAQ,CAACzI,EAAI,CAAA,IAAA,EACvB,CACA,IAAI,CAACqK,IAAI,CAAC,OAASrK,CAAAA,EAAAA,EACrB,GACF,CACA,IAAI,CAAC4yY,cAAc,CAACxxY,MAAM,CAAG,EAC/B,CACA,IAAK,KAAM,CAACwwY,QAAAA,CAAUj9F,OAAO,GAAI,IAAI,CAACvpS,MAAM,CAAC,CAC3C,GAAI60M,KAAMszL,CAAAA,cAAc,CAAC9pY,GAAG,CAACmoY,QAAAA,CAAAA,CAAW,CACtC,QACF,CACA,IAAI,CAACxmY,MAAM,CAACpB,MAAM,CAAC4nY,QAAAA,CAAAA,CACnBj9F,MAAOrqQ,CAAAA,OAAO,GAChB,CACA,IAAI,IAAInpC,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACoK,KAAK,CAACnK,MAAM,CAAED,CAAI,EAAA,CAAA,CACxC,IAAI,CAACoK,KAAK,CAACpK,CAAAA,CAAE,CAACozC,MAAM,CAAC0rK,KAAAA,EACvB,CACA,IAAK,MAAM2xL,QAAY3xL,IAAAA,KAAAA,CAAMszL,cAAc,CAAC,CAC1C,GAAI,IAAI,CAACnoY,MAAM,CAAC3B,GAAG,CAACmoY,QAAW,CAAA,CAAA,CAC7B,QACF,CACA,GAAI,CACF,MAAMz/X,GAAMy/X,CAAAA,QAAAA,CAASC,YACvB,CAAE,MAAO7xY,GAAI,CACX,QACF,CACA,MAAM20S,MAAS,CAAA,IAAI,CAACk+F,aAAa,CAACjB,QAClCj9F,CAAAA,CAAAA,MAAAA,CAAOpgQ,MAAM,CAAC0rK,OACd,MAAMx3M,QAAAA,CAAW,IAAI,CAAC6qY,iBAAiB,CAACpwY,GAAG,CAAC0uY,QAAAA,CAAAA,CAC5C,GAAInpY,QAAAA,CAAU,CACZ,IAAI,CAAC6qY,iBAAiB,CAACtpY,MAAM,CAAC4nY,QAC9BnpY,CAAAA,CAAAA,QAAAA,CAAS,KAAMksS,MACjB,EAAA,CACA,IAAI,CAACtqS,IAAI,CAAC,MAAOsqS,MACnB,EAAA,CACF,CACA,IAAI75N,SAAY,EAAA,CACd,OAAO,IAAI,CAAC+pT,UACd,CACA,IAAItxS,WAAY,CACd,OAAO,IAAI,CAACozS,UACd,CACA,IAAIqL,WAAc,EAAA,CAChB,OAAO,IAAI,CAACmB,YAAY,CAE1B,IAAIK,KAAQ,EAAA,CACV,GAAI,CAAC,IAAI,CAAC7M,UAAU,CAAE,CACpB,OAAO,IACT,CACA,GAAI,CAAC,IAAI,CAACwM,YAAY,CAAE,CACtB,OAAO,IACT,CACA,GAAI,CAAC,IAAI,CAAC1mR,OAAO,CAAC4zB,MAAM,CAAE,CACxB,OAAO,IACT,CACA,OAAO,IAAI,CAAC5zB,OAAO,CAACw+C,OAAO,CAACwoO,iBAAiB,CAE/C,IAAI/nY,IAAAA,EAAO,CACT,OAAO,IAAI,CAACH,KACd,CA3MArC,WAAAA,CAAYujH,OAAO,CAAC,CAClB,KAAK,EAAA,CAAI,IAAI,CAACo4Q,UAAU,CAAGrgY,QAAAA,CAASI,OAAO,EAAI,CAAC,CAACzB,OAAOuwY,QAAQ,CAAE,IAAI,CAAC/M,UAAU,CAAG,MAAO,IAAI,CAACC,qBAAqB,CAAG,KAAO,CAAA,IAAI,CAACuM,YAAY,CAAG3uY,QAASI,CAAAA,OAAO,EAAI,CAAC,CAACzB,MAAQukY,EAAAA,SAAAA,EAAWl0Q,SAAU4/Q,CAAAA,uBAAAA,CAAyB,IAAI,CAACR,cAAc,CAAG,EAAE,CAAE,IAAI,CAACxnY,MAAM,CAAG,IAAI7B,GAAO,CAAA,IAAI,CAAC8oY,YAAY,CAAG,IAAI9oY,IAAO,IAAI,CAACgC,KAAK,CAAG,EAAE,CAAE,IAAI,CAAC+nY,iBAAiB,CAAG,IAAI/pY,GAC/V,CAAA,IAAI,CAACkjH,OAAO,CAAGA,OAAAA,CACf,GAAI,IAAI,CAACo4Q,UAAU,CAAE,CACnB,IAAI,CAACp4Q,OAAO,CAACjkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,CAAA,CACnD,IAAI,CAACh6Q,OAAO,CAACjkH,EAAE,CAAC,KAAA,CAAO,IAAI,CAACy+X,aAAa,CAAE,IAAI,EACjD,CACF,CAqMF,CA1NI,SAFE0L,CAEGhL,eAAe,CAAG,WAGvB,CALEgL,SAAAA,CAKG/K,iBAAiB,CAAG,aAGzB,CARE+K,SAAAA,CAQGp6J,WAAW,CAAG,OAGnB,CAXEo6J,UAWGtgY,SAAS,CAAG,KAGjB,CAdEsgY,SAcGttJ,CAAAA,aAAa,CAAG,SAgNzB,CAAA,MAAMsuJ,MAAevqY,SAAAA,YAAAA,CAanB,IAAIwqY,MAAAA,EAAS,CACX,OAAO,IAAI,CAACC,OAAO,CAErB,IAAIrxU,KAAQ,EAAA,CACV,OAAO,IAAI,CAACqxU,OAAO,CAAC5C,aAAa,EAAI,EACvC,CACA,IAAIlgX,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC8iX,OAAO,CAAC9iX,QACtB,CACA,IAAI26E,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACmoS,OAAO,CAACnoS,OAAO,CAE7BphE,OAAU,EAAA,CACR,GAAI,CAAC,IAAI,CAACupW,OAAO,CAAE,OACnB,IAAI,CAACA,OAAO,CAAG,IACf,CAAA,IAAI,CAACxpY,IAAI,CAAC,QACZ,EAAA,CACAkqC,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,MAAMxzF,OAAU,CAAA,IAAI,CAACqnR,cAAc,CAACtnR,QAAQ,CAC5C,MAAM05Q,IAAAA,CAAOjmL,KAAMkmL,CAAAA,OAAO,CAAC,IAAI,CAAC0N,OAAO,CAACE,SAAS,CAAEtnR,QAAQ25Q,eAAe,CAAA,CAC1E,GAAIF,IAAAA,CAAM,CACR,IAAI,CAACnyQ,SAAS,CAAC7zH,IAAI,CAACgmY,IAAK5qP,CAAAA,SAAS,CAAC71H,QAAQ,CAAA,CAC3C,IAAI,CAAC+iX,SAAS,CAACtoY,IAAI,CAACgmY,IAAAA,CAAK5qP,SAAS,CAACtvB,WAAW,EAChD,CACA,GAAI,IAAI,CAACgoR,YAAY,GAAK,IAAI,CAACH,OAAO,CAAC9C,eAAe,CAAE,CACtD,IAAI,CAACiD,YAAY,CAAG,IAAI,CAACH,OAAO,CAAC9C,eAAe,CAChD,IAAI,CAAC1mY,IAAI,CAAC,QACZ,EAAA,CACF,CACAohH,WAAc,EAAA,CACZ,OAAO,IAAI,CAACsI,SAAS,CAEvBo1B,WAAAA,EAAc,CACZ,OAAO,IAAI,CAACq/O,SAAS,CAvCvBt/X,WAAY+qY,CAAAA,aAAa,CAAEL,MAAM,CAAC,CAChC,KAAK,EAAI,CAAA,IAAI,CAACI,YAAY,CAAG,CAAG,CAAA,IAAI,CAACjgR,SAAS,CAAG,IAAI32G,KAAQ,IAAI,CAACorX,SAAS,CAAG,IAAIx/W,IAClF,CAAA,IAAI,CAAC8qX,cAAc,CAAGG,aACtB,CAAA,IAAI,CAACJ,OAAO,CAAGD,MACf,CAAA,IAAI,CAACI,YAAY,CAAG,IAAI,CAACH,OAAO,CAAC9C,gBAAe,CAqCpD,CAhDM4C,MAEGrhY,CAAAA,YAAY,CAAG,QAGpB,CALEqhY,MAKGphY,CAAAA,YAAY,CAAG,QA6CxB,OAAM2hY,eAAwB9qY,SAAAA,YAAAA,CAqB5BmrC,MAAO0rK,CAAAA,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC0mL,UAAU,CAAE,CACpB,GAAI,CAAC,IAAI,CAACn6Q,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,EAAIzmL,KAAMk0L,CAAAA,cAAc,CAAC9tY,IAAI,CAAE,CACvE,IAAI,CAACsgY,UAAU,CAAG,IAClB,CAAA,IAAI,CAACt8X,IAAI,CAAC,WACZ,EAAA,CAAA,KAAO,CACL,MACF,CACF,CACA,IAAK,MAAMupY,MAAAA,IAAU3zL,KAAMk0L,CAAAA,cAAc,CAAC,CACxC,IAAItpQ,IAAO,CAAA,IAAI,CAACz/H,MAAM,CAAClI,GAAG,CAAC0wY,MAC3B,CAAA,CAAA,GAAI,CAAC/oQ,IAAAA,CAAM,CACTA,IAAO,CAAA,IAAI8oQ,MAAO,CAAA,IAAI,CAAEC,MAAAA,CAAAA,CACxB,IAAI,CAACxoY,MAAM,CAAC1B,GAAG,CAACkqY,MAAAA,CAAQ/oQ,MACxB,IAAI,CAACt/H,KAAK,CAACtJ,IAAI,CAAC4oI,IAChBA,CAAAA,CAAAA,IAAAA,CAAKt2F,MAAM,CAAC0rK,KACZ,CAAA,CAAA,IAAI,CAAC51M,IAAI,CAAC,KAAOwgI,CAAAA,IAAAA,EACnB,CAAO,KAAA,CACLA,IAAKt2F,CAAAA,MAAM,CAAC0rK,KACd,EAAA,CACF,CACA,IAAK,MAAMp1E,IAAAA,IAAQ,IAAI,CAACz/H,MAAM,CAACtB,MAAM,EAAG,CAAA,CACtC,GAAIm2M,KAAMk0L,CAAAA,cAAc,CAAC1qY,GAAG,CAACohI,IAAAA,CAAK+oQ,MAAM,CAAG,CAAA,CACzC,QACF,CACA,IAAI,CAACQ,WAAW,CAACvpQ,IAAAA,EACnB,CACF,CACAupQ,WAAYvpQ,CAAAA,IAAI,CAAE,CAChB,IAAI,CAACz/H,MAAM,CAACpB,MAAM,CAAC6gI,IAAAA,CAAK+oQ,MAAM,CAAA,CAC9B,IAAI,CAACroY,KAAK,CAACtB,MAAM,CAAC,IAAI,CAACsB,KAAK,CAACnB,OAAO,CAACygI,IAAO,CAAA,CAAA,CAAA,CAAA,CAC5CA,IAAKvgG,CAAAA,OAAO,EACZ,CAAA,IAAI,CAACjgC,IAAI,CAAC,QAAUwgI,CAAAA,IAAAA,EACtB,CACA47P,eAAAA,EAAkB,CAChB,GAAI,IAAI,CAACj6Q,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAAE,CACzC,MAAMnzS,SAAY,CAAA,IAAI,CAACi5B,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAACt8X,OAAO,CAAC,gBAAA,CAAA,GAAsB,CAAC,CAAA,CACvF,GAAI,CAACmpF,UAAW,OAChB,IAAI,CAACozS,UAAU,CAAGpzS,UAClB,IAAI,CAAClpF,IAAI,CAAC,WACZ,EAAA,CACF,CACA48X,aAAgB,EAAA,CACd,GAAI,CAAC,IAAI,CAACN,UAAU,CAAE,OACtB,IAAI,CAACA,UAAU,CAAG,KAClB,CAAA,IAAK,MAAM97P,IAAAA,IAAQ,IAAI,CAACz/H,MAAM,CAACtB,MAAM,EAAG,CAAA,CACtC,IAAI,CAACsqY,WAAW,CAACvpQ,IAAAA,EACnB,CACA,IAAI,CAACxgI,IAAI,CAAC,aACZ,EAAA,CACA,IAAIywE,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC+pT,UACd,CACA,IAAItxS,SAAY,EAAA,CACd,OAAO,IAAI,CAACozS,UACd,CACA,IAAI/mL,QAAS,CACX,OAAO,IAAI,CAACr0M,KACd,CAlEArC,WAAYujH,CAAAA,OAAO,CAAC,CAClB,KAAK,EAAA,CAAI,IAAI,CAACo4Q,UAAU,CAAGrgY,QAAAA,CAASI,OAAO,EAAI,CAAC,CAACzB,MAAAA,CAAOkxY,MAAM,CAAE,IAAI,CAAC1N,UAAU,CAAG,KAAA,CAAO,IAAI,CAACv7X,MAAM,CAAG,IAAI7B,GAAO,CAAA,IAAI,CAACgC,KAAK,CAAG,EAAE,CACjI,IAAI,CAACihH,QAAQ,CAAGC,OAAAA,CAChB,GAAI,IAAI,CAACo4Q,UAAU,CAAE,CACnB,IAAI,CAACr4Q,QAAQ,CAAChkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,CAAA,CACpD,IAAI,CAACj6Q,QAAQ,CAAChkH,EAAE,CAAC,KAAA,CAAO,IAAI,CAACy+X,aAAa,CAAE,IAAI,EAClD,CACF,CA4DF,CA9EI,eAAKU,CAAAA,eAAe,CAAG,WAGvB,CALEuM,eAAAA,CAKGtM,iBAAiB,CAAG,aAGzB,CAREsM,eAAAA,CAQG7hY,SAAS,CAAG,KAGjB,CAXE6hY,eAWG5hY,CAAAA,YAAY,CAAG,QAuExB,CAAMgiY,MAAAA,MAAAA,SAAelrY,aAgDnB,IAAImrY,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACC,aAAa,CAE3B,IAAIC,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACC,aAAa,CAE3B,IAAIC,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAACC,UAAU,EAAEC,gBAAoB,EAAA,CAC9C,CACA,IAAIC,GAAM,EAAA,CACR,OAAO,IAAI,CAACC,OAAO,CAACD,GACtB,CACA,IAAIz5S,QAAAA,EAAW,CACb,OAAO,IAAI,CAAC25S,SAAS,CAEvB,IAAIzsO,OAAAA,EAAU,CACZ,OAAO,IAAI,CAAC7lB,QAAQ,CAEtB,IAAIwoB,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAAC+pO,eAAe,CAE7B,IAAIhoO,UAAa,EAAA,CACf,OAAO,IAAI,CAACioO,WAAW,CAEzB,IAAItmO,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACumO,cACd,CACA,IAAI7rO,QAAW,EAAA,CACb,OAAO,IAAI,CAAC8rO,SACd,CACA,IAAIvmO,YAAe,EAAA,CACjB,OAAO,IAAI,CAACwmO,aAAa,CAE3BhhW,OAAO0rK,KAAK,CAAEu1L,MAAM,CAAE,CACpB,IAAI,CAACP,OAAO,CAAGO,MACf,CAAA,GAAI,IAAI,CAAChpR,QAAQ,CAAC0+C,KAAK,CAACuqO,cAAc,CAAE,CACtC,IAAI,CAACC,SAAS,CAAG,IAAI,CAACT,OAAO,CAAC7gQ,OAChC,CACA,MAAMlO,KAAQ+5E,CAAAA,KAAAA,CAAMh1C,OAAO,CAACo7F,WAAW,CAACC,SAAS,CACjD,MAAM/qK,SAAW2qC,KAAMyvQ,CAAAA,WAAW,CAAC,IAAI,CAACV,OAAO,CAC/C,CAAA,IAAI,CAACC,SAAS,CAAC1/X,CAAC,CAAG+lF,SAAS/lF,CAC5B,CAAA,IAAI,CAAC0/X,SAAS,CAACh4X,CAAC,CAAGq+E,QAASr+E,CAAAA,CAAC,CAC7B,IAAI,CAACg4X,SAAS,CAAC73X,CAAC,CAAGk+E,QAAAA,CAASz0E,KAAK,CACjC,IAAI,CAACouX,SAAS,CAACx0X,CAAC,CAAG66E,QAAAA,CAASx0E,MAAM,CAClC,IAAI,CAAC67H,QAAQ,CAACl5I,GAAG,CAAC,IAAI,CAACurY,OAAO,CAACvyP,gBAAgB,CAAA,CAC/C,IAAI,CAACQ,QAAQ,CAACx5I,GAAG,CAAC,IAAI,CAACurY,OAAO,CAAC35P,SAAS,CAACs6P,OAAO,CAACtiX,MAAM,CACvD,CAAA,IAAI,CAACuiX,WAAW,CAACnsY,GAAG,CAAC,IAAI,CAACurY,OAAO,CAAC35P,SAAS,CAAChoH,MAAM,CAClD,CAAA,IAAI,CAACwiX,mBAAmB,GACxB,IAAI,CAACC,YAAY,CAAC91L,KACpB,EAAA,CACA61L,qBAAsB,CACpB,GAAI,CAAC,IAAI,CAACtpR,QAAQ,CAAC0+C,KAAK,CAACuqO,cAAc,EAAI,CAAC,IAAI,CAACC,SAAS,EAAI,CAAC,IAAI,CAAClB,aAAa,CAAE,CACjF,MACF,CACA,MAAM/rV,OAAU,CAAA,IAAI,CAAC+jE,QAAQ,CAACwpR,YAAY,CAC1C,GAAI,CAACvtV,QAAS,CACZ,MACF,CACA,MAAMxV,OAAUwV,CAAAA,OAAAA,CAAQwtV,cAAc,CAAC,IAAI,CAACP,SAAS,CACrD,CAAA,GAAI,CAACziW,OAAS,CAAA,CACZ,MACF,CACA,MAAM7H,MAAAA,CAAS,IAAI,CAACohF,QAAQ,CAAC2kH,GAAG,CAACpmM,cAAc,CAC/C,MAAMy2C,EAAAA,CAAKp2C,MAAOo2C,CAAAA,EAAE,CACpB,GAAI,CAAC,IAAI,CAAC00T,kBAAkB,CAAE,CAC5B,IAAI,CAACA,kBAAkB,CAAG10T,EAAAA,CAAGuO,iBAAiB,EAC9C,CAAA,IAAI,CAAComT,YAAY,CAAG30T,EAAGuO,CAAAA,iBAAiB,GAC1C,CAAA,KAAO,CACL,MAAMG,sBAAAA,CAAyB1O,EAAG2O,CAAAA,iBAAiB,CACnD,MAAMrpE,MAAQ,IAAI,CAAC4uX,SAAS,CAAC5uX,KAAK,CAClC,MAAMC,MAAS,CAAA,IAAI,CAAC2uX,SAAS,CAAC3uX,MAAM,CACpCqkB,MAAO4kD,CAAAA,cAAc,CAAC,IAAI,CAACkmT,kBAAkB,EAC7C10T,EAAG6O,CAAAA,oBAAoB,CAAC7O,EAAAA,CAAG8O,WAAW,CAAEJ,uBAAwB1O,EAAGyG,CAAAA,UAAU,CAAEh1C,OAAAA,CAAS,CACxF7H,CAAAA,CAAAA,MAAAA,CAAO4kD,cAAc,CAAC,IAAI,CAACmmT,YAAY,CACvC30T,CAAAA,EAAAA,CAAG6O,oBAAoB,CAAC7O,EAAAA,CAAG8O,WAAW,CAAEJ,sBAAwB1O,CAAAA,EAAAA,CAAGyG,UAAU,CAAE,IAAI,CAACusT,aAAa,CAACjqW,IAAI,CAACg9C,UAAU,CAAE,CACnH/F,CAAAA,CAAAA,EAAAA,CAAGsQ,eAAe,CAACtQ,GAAGuQ,gBAAgB,CAAE,IAAI,CAACmkT,kBAAkB,CAAA,CAC/D10T,GAAGsQ,eAAe,CAACtQ,EAAGwQ,CAAAA,gBAAgB,CAAE,IAAI,CAACmkT,YAAY,CAAA,CACzD30T,EAAGyQ,CAAAA,eAAe,CAAC,CAAA,CAAGlrE,OAAQD,KAAO,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAGA,KAAOC,CAAAA,MAAAA,CAAQy6D,EAAG4Q,CAAAA,gBAAgB,CAAE5Q,EAAAA,CAAG0Q,OAAO,EAC9F,CACF,CACA6jT,aAAa91L,KAAK,CAAE,CAClB,GAAI,CAAC,IAAI,CAACzzF,QAAQ,CAAC0+C,KAAK,CAACkrO,cAAc,EAAI,CAAC,IAAI,CAAC1B,aAAa,CAAE,CAC9D,MACF,CACA,MAAM7mU,GAAAA,CAAM,IAAI,CAAC2+C,QAAQ,CAAC0+C,KAAK,CAACmrO,iBAAiB,CACjD,MAAMC,UAAazoU,CAAAA,GAAAA,CAAM,IAAI,CAAC2+C,QAAQ,CAACwpR,YAAY,CAAG/1L,KAAAA,CACtD,GAAI,CAACq2L,UAAAA,CAAY,CACf,IAAI,CAACxB,UAAU,CAAG,IAClB,CAAA,MACF,CACA,MAAMyB,SAAYD,CAAAA,UAAAA,CAAWE,mBAAmB,CAAC,IAAI,CAACvB,OAAO,CAC7D,CAAA,GAAI,CAACsB,SAAW,CAAA,CACd,IAAI,CAACzB,UAAU,CAAG,KAClB,MACF,CACA,IAAI2B,WAAAA,CAAc,CAAC,IAAI,CAAC3B,UAAU,GAAK,CAACyB,SACxC,CAAA,IAAI,CAACzB,UAAU,CAAGyB,SAClB,CAAA,MAAMzvX,KAAQ,CAAA,IAAI,CAACguX,UAAU,EAAEhuX,KAAS,EAAA,CAAA,CACxC,MAAMC,MAAAA,CAAS,IAAI,CAAC+tX,UAAU,EAAE/tX,MAAAA,EAAU,CAC1C,CAAA,IAAI2vX,OAAU,CAAA,KAAA,CACd,GAAI,IAAI,CAAChC,aAAa,CAAC5tX,KAAK,GAAKA,KAAS,EAAA,IAAI,CAAC4tX,aAAa,CAAC3tX,MAAM,GAAKA,MAAQ,CAAA,CAC9E,IAAI,CAAC2tX,aAAa,CAAC9mW,MAAM,CAAG9mB,KAC5B,CAAA,IAAI,CAAC4tX,aAAa,CAAC7mW,OAAO,CAAG9mB,MAC7B0vX,CAAAA,WAAAA,CAAc,IACdC,CAAAA,OAAAA,CAAU,KACZ,CACA,GAAID,WAAa,CAAA,CACf,GAAI,IAAI,CAAC3B,UAAU,CAAE,CACnB,IAAI,CAACF,YAAY,CAACz5X,IAAI,CAACzR,GAAG,CAAC,IAAI,CAACorY,UAAU,CAAC6B,2BAA2B,CAACrjX,MAAM,EAC/E,CAAO,KAAA,CACL,IAAI,CAACshX,YAAY,CAAC10X,WAAW,GAC/B,CACF,CACA,GAAI,IAAI,CAAC40X,UAAU,CAAE,CACnB,GAAIjnU,GAAK,CAAA,CACP,GAAI,IAAI,CAACinU,UAAU,CAAC7hW,OAAO,CAAE,CAC3B,MAAMuuC,EAAK,CAAA,IAAI,CAACgrC,QAAQ,CAAC2kH,GAAG,CAACpmM,cAAc,CAACy2C,EAAE,CAC9C,IAAI,CAACkzT,aAAa,CAACnqW,IAAI,CAACg9C,UAAU,CAAG,IAAI,CAACutT,UAAU,CAAC7hW,OAAO,CAC5D,GAAI,IAAI,CAAC6hW,UAAU,CAACx4U,WAAW,GAAK,eAAA,CAAiB,CACnD,IAAI,CAACo4U,aAAa,CAACnqW,IAAI,CAACs9C,SAAS,CAAGrG,EAAGwG,CAAAA,iBAAgB,CAClD,KAAA,CACL,IAAI,CAAC0sT,aAAa,CAACnqW,IAAI,CAACs9C,SAAS,CAAGrG,EAAAA,CAAGyG,WACzC,CACA,OAAO,IAAI,CAACukC,QAAQ,CAAC0+C,KAAK,CAAC0rO,gBAAgB,EACzC,KAAKv8W,gBAAAA,CACH,IAAI,CAACq6W,aAAa,CAACnqW,IAAI,CAAC49C,iBAAiB,CAAG3G,EAAAA,CAAGkK,IAAI,CACnD,IAAI,CAACgpT,aAAa,CAACnqW,IAAI,CAAC69C,YAAY,CAAG5G,EAAAA,CAAGgK,KAC1C,CAAA,IAAI,CAACkpT,aAAa,CAACnqW,IAAI,CAAC29C,SAAS,CAAG1G,EAAAA,CAAGtpE,GAAG,CAC1C,MACF,KAAKoiB,kBACH,IAAI,CAACo6W,aAAa,CAACnqW,IAAI,CAAC49C,iBAAiB,CAAG3G,EAAAA,CAAGqK,iBAC/C,CAAA,IAAI,CAAC6oT,aAAa,CAACnqW,IAAI,CAAC69C,YAAY,CAAG5G,GAAGkB,cAC1C,CAAA,IAAI,CAACgyT,aAAa,CAACnqW,IAAI,CAAC29C,SAAS,CAAG1G,EAAAA,CAAGmK,eAAe,CACtD,KACJ,CACA,IAAI,CAAC+oT,aAAa,CAACnqW,IAAI,CAACsjD,UAAU,CAAG,KACvC,CACF,CAAO,KAAA,CACL,IAAI,CAAC6mT,aAAa,CAACtnW,OAAO,CAAC,CAAA,CAAE,CAAG,IAAIl/B,UAAAA,CAAW,IAAI,CAAC4mY,UAAU,CAAC35X,IAAI,CACnE,CAAA,IAAI,CAACu5X,aAAa,CAACpnW,MAAM,GAC3B,CACF,CAAA,KAAO,CACL,IAAI,CAAConW,aAAa,CAACtnW,OAAO,CAAC,CAAE,CAAA,CAAG,IAAI,CAACypW,iBAAiB,CACtD,IAAI,CAACnC,aAAa,CAACpnW,MAAM,GAC3B,CACA,GAAIopW,OAAS,CAAA,IAAI,CAACrsY,IAAI,CAAC,cAAgByc,CAAAA,KAAAA,CAAOC,MAChD,EAAA,CACAokJ,gBAAiB7vB,CAAAA,SAAS,CAAE,CAC1B,GAAIA,SAAW,CAAA,CACb,IAAI,CAAC+5P,cAAc,CAAC32X,IAAI,CAAC48H,SAAAA,CAAW,IAAI,CAACu6P,WAAW,CACpD,CAAA,IAAI,CAAC1oO,UAAU,CAACjtK,IAAI,CAAC,IAAI,CAACm1Y,cAAc,CAAA,CAAEnuX,MAAM,GAClD,MAAO,CACL,IAAI,CAACmuX,cAAc,CAACn1Y,IAAI,CAAC,IAAI,CAAC21Y,WAAW,CACzC,CAAA,IAAI,CAAC1oO,UAAU,CAACjtK,IAAI,CAAC,IAAI,CAACgjJ,QAAQ,EACpC,CACA,IAAI,CAACoyP,SAAS,CAACl1X,WAAW,CAAC,IAAI,CAACg1X,WAAW,CAC3C,CAAA,IAAI,CAACD,eAAe,CAACz2X,IAAI,CAAC,IAAI,CAACkkI,QAAQ,CAAE,IAAI,CAACwyP,WAAW,CACzD,CAAA,IAAI,CAACG,aAAa,CAAC,CAAA,CAAE,CAAG,IAAI,CAACF,cAAc,CAACl6X,IAAI,CAAC,EAAG,CACpD,CAAA,IAAI,CAACo6X,aAAa,CAAC,CAAE,CAAA,CAAG,IAAI,CAACF,cAAc,CAACl6X,IAAI,CAAC,EAAA,CAAG,CACpD,IAAI,CAACo6X,aAAa,CAAC,CAAA,CAAE,CAAG,IAAI,CAACF,cAAc,CAACl6X,IAAI,CAAC,EAAG,EACtD,CACA27X,aAAgB,EAAA,CACd,IAAI,CAACZ,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAACC,YAAY,CAAG,IACpB,CAAA,IAAI,CAACrB,UAAU,CAAG,KACpB,CACAiC,SAAS3hX,CAAC,CAAEx0B,CAAC,CAAE,CACb,GAAI,IAAI,CAAC4rH,QAAQ,CAAC0+C,KAAK,CAACmrO,iBAAiB,CAAE,CACzC,OAAO,IACT,CACA,OAAO,IAAI,CAACvB,UAAU,EAAEkC,gBAAAA,CAAiB5hX,CAAGx0B,CAAAA,CAAAA,CAAAA,EAAM,IACpD,CACA0pC,SAAU,CACR,IAAI,CAACwqW,UAAU,CAAG,IAAA,CAClB,GAAI,IAAI,CAACN,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAAClqW,OAAO,EAC1B,CAAA,IAAI,CAACkqW,aAAa,CAAG,KACvB,CACA,GAAI,IAAI,CAACE,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAACpqW,OAAO,EAC1B,CAAA,IAAI,CAACoqW,aAAa,CAAG,KACvB,CACA,GAAI,IAAI,CAACwB,kBAAkB,CAAE,CAC3B,MAAM10T,EAAAA,CAAK,IAAI,CAACgrC,QAAQ,CAAC2kH,GAAG,CAACpmM,cAAc,CAACy2C,EAAE,CAC9CA,EAAAA,CAAG+N,iBAAiB,CAAC,IAAI,CAAC2mT,kBAAkB,CAC5C,CAAA,IAAI,CAACA,kBAAkB,CAAG,IAAA,CAC1B10T,EAAG+N,CAAAA,iBAAiB,CAAC,IAAI,CAAC4mT,YAAY,CACtC,CAAA,IAAI,CAACA,YAAY,CAAG,KACtB,CACF,CA5OAjtY,WAAAA,CAAYujH,OAAO,CAAE+oR,MAAM,CAAEyB,UAAU,CAAC,CACtC,KAAK,GAAI,IAAI,CAAC1B,aAAa,CAAG,IAAIv6X,YAAAA,CAAa,GAAI,IAAI,CAACk6X,SAAS,CAAG,IAAI5xX,IAAAA,CAAQ,IAAI,CAACs/H,QAAQ,CAAG,IAAIl/H,IAAQ,CAAA,IAAI,CAACyxX,eAAe,CAAG,IAAIzxX,IAAAA,CAAQ,IAAI,CAACw/H,QAAQ,CAAG,IAAIx/H,IAAQ,CAAA,IAAI,CAAC0xX,WAAW,CAAG,IAAI1xX,IAAAA,CAAQ,IAAI,CAAC4xX,SAAS,CAAG,IAAI31X,IAAQ,CAAA,IAAI,CAACk2X,WAAW,CAAG,IAAInyX,KAAQ,IAAI,CAAC2xX,cAAc,CAAG,IAAI3xX,IAAAA,CAAQ,IAAI,CAACgyX,SAAS,CAAG,IAAA,CAAM,IAAI,CAAClB,aAAa,CAAG,IAAA,CAAM,IAAI,CAACE,aAAa,CAAG,KAAM,IAAI,CAACI,UAAU,CAAG,IAAM,CAAA,IAAI,CAAC+B,iBAAiB,CAAG,IAAI3oY,UAAAA,CAAW,EAAK,CAAA,CAAA,IAAI,CAAC0mY,YAAY,CAAG,IAAIlxX,IACld,CAAA,IAAI,CAAC8oG,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAACwoR,OAAO,CAAGO,MAAAA,CACf,MAAMpqW,MAAAA,CAAS,IAAI,CAACohF,QAAQ,CAAC2kH,GAAG,CAACpmM,cAAc,CAC/C,GAAI,IAAI,CAACyhF,QAAQ,CAAC0+C,KAAK,CAACgsO,cAAc,CAAE,CACtC,IAAI,CAACxB,SAAS,CAAG,IAAI,CAACT,OAAO,CAAC7gQ,MAAM,CACpC,GAAI,IAAI,CAAC5nB,QAAQ,CAAC0+C,KAAK,CAACuqO,cAAc,EAAI,IAAI,CAACC,SAAS,CAAE,CACxD,IAAI,CAAClB,aAAa,CAAG,IAAI1nW,OAAAA,CAAQ1B,MAAQ,CAAA,CACvCnkC,MAAQ2yB,CAAAA,gBAAAA,CACR+S,QAAS,KACTuC,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACVuZ,CAAAA,SAAAA,CAAWxW,cACX2W,SAAW3W,CAAAA,aAAAA,CACXvR,KAAO,CAAA,IAAI,CAAC4uX,SAAS,CAAC5uX,KAAK,CAC3BC,MAAQ,CAAA,IAAI,CAAC2uX,SAAS,CAAC3uX,MAAM,CAC7BtiB,IAAM,CAAA,CAAC,OAAO,EAAE,IAAI,CAACwwY,OAAO,CAACD,GAAG,CAAC,MAAM,CAAC,CAC1C,EACF,CACF,CACA,GAAI,IAAI,CAACxoR,QAAQ,CAAC0+C,KAAK,CAACisO,cAAc,EAAI,IAAI,CAAC3qR,QAAQ,CAAC0+C,KAAK,CAACkrO,cAAc,CAAE,CAC5E,MAAMgB,SAAY,CAAA,IAAI,CAAC5qR,QAAQ,CAAC0+C,KAAK,CAACmrO,iBAAiB,CAAGj+W,cAAAA,CAAiBC,aAC3E,CAAA,IAAI,CAACq8W,aAAa,CAAG,IAAI5nW,OAAQ1B,CAAAA,MAAAA,CAAQ,CACvCnkC,MAAQ,CAAA,IAAI,CAACulH,QAAQ,CAAC0+C,KAAK,CAAC0rO,gBAAgB,CAC5ClmW,WAAaumW,CAAAA,UAAAA,GAAe,CAAI,CAAA,CAAA,CAAIA,WACpCtqW,OAAS,CAAA,KAAA,CACTuC,QAAU5Z,CAAAA,qBAAAA,CACV8Z,QAAU9Z,CAAAA,qBAAAA,CACVuZ,UAAWuoW,SACXpoW,CAAAA,SAAAA,CAAWooW,SACXtwX,CAAAA,KAAAA,CAAO,CACPC,CAAAA,MAAAA,CAAQ,EACRtiB,IAAM,CAAA,CAAC,OAAO,EAAE,IAAI,CAACwwY,OAAO,CAACD,GAAG,CAAC,MAAM,CACzC,GACA,IAAI,IAAI7zY,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACuzY,aAAa,CAACtnW,OAAO,CAAChsC,MAAM,CAAED,IAAI,CACxD,IAAI,CAACuzY,aAAa,CAACtnW,OAAO,CAACjsC,CAAE,CAAA,CAAG,IAAI,CAAC01Y,kBACvC,CACA,IAAI,CAACnC,aAAa,CAACpnW,MAAM,GAC3B,CACA,GAAI,IAAI,CAACknW,aAAa,EAAI,IAAI,CAACE,aAAa,CAAE,CAC5CtpW,MAAAA,CAAO5iC,EAAE,CAAC,aAAc,IAAI,CAACsuY,aAAa,CAAE,IAAI,EAClD,CACF,CAkMF,CAjPMxC,MAEG+C,CAAAA,iBAAiB,CAAG,cAiP7B,OAAMC,OAAgBluY,SAAAA,YAAAA,CAiBpB,IAAIsC,IAAAA,EAAO,CACT,OAAO,IAAI,CAACH,KAAK,CAEnB,IAAI2rY,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAACK,eAAe,CAE7B,IAAIJ,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACK,eAAe,CAE7B,IAAI/B,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACgC,eACd,CACA,IAAIrB,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACsB,eACd,CACA,IAAIC,UAAa,EAAA,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIvB,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACuB,WAAW,GAAKpT,uBAC9B,CACA,IAAIhxU,WAAAA,EAAc,CAChB,OAAO,IAAI,CAACqkV,YAAY,CAE1B,IAAIjB,gBAAAA,EAAmB,CACrB,OAAO,IAAI,CAACkB,aAAa,CAAC,IAAI,CAACD,YAAY,CAAC,EAAI,IAClD,CACAtjW,MAAAA,CAAO0rK,KAAK,CAAE83L,OAAO,CAAE,CACrB,IAAI,IAAI52Y,EAAI,CAAGA,CAAAA,CAAAA,CAAI42Y,OAAQ32Y,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrC,IAAI,CAAC62Y,SAAS,CAACtuY,GAAG,CAACquY,OAAO,CAAC52Y,CAAE,CAAA,CAAC6zY,GAAG,CAAE+C,OAAO,CAAC52Y,EAAE,EAC/C,CACA,IAAK,KAAM,CAAC6zY,GAAAA,CAAKQ,OAAO,GAAI,IAAI,CAACwC,SAAS,CAAC,CACzC,IAAI/nY,IAAO,CAAA,IAAI,CAAC7E,MAAM,CAAClI,GAAG,CAAC8xY,GAC3B,CAAA,CAAA,GAAI,CAAC/kY,IAAAA,CAAM,CACTA,IAAAA,CAAO,IAAIqkY,MAAO,CAAA,IAAI,CAAC9nR,QAAQ,CAAEgpR,MAAAA,CAAQuC,QAAQ32Y,MAAM,CAAA,CACvD,IAAI,CAACgK,MAAM,CAAC1B,GAAG,CAACsrY,GAAAA,CAAK/kY,IACrB,CAAA,CAAA,IAAI,CAAC1E,KAAK,CAACtJ,IAAI,CAACgO,IAChBA,CAAAA,CAAAA,IAAAA,CAAKskC,MAAM,CAAC0rK,MAAOu1L,MACnB,CAAA,CAAA,IAAI,CAACnrY,IAAI,CAAC,KAAA,CAAO4F,MACnB,CAAO,KAAA,CACLA,IAAKskC,CAAAA,MAAM,CAAC0rK,KAAAA,CAAOu1L,QACrB,CACF,CACA,IAAK,KAAM,CAACR,GAAAA,CAAK/kY,KAAK,GAAI,IAAI,CAAC7E,MAAM,CAAC,CACpC,GAAI,IAAI,CAAC4sY,SAAS,CAACvuY,GAAG,CAACurY,KAAM,CAC3B,QACF,CACA/kY,IAAAA,CAAKq6B,OAAO,EAAA,CACZ,IAAI,CAACl/B,MAAM,CAACpB,MAAM,CAACgrY,GACnB,CAAA,CAAA,MAAM7qY,IAAM,IAAI,CAACoB,KAAK,CAACnB,OAAO,CAAC6F,MAC/B,GAAI9F,GAAAA,GAAQ,CAAC,CAAA,CAAG,IAAI,CAACoB,KAAK,CAACtB,MAAM,CAACE,GAAAA,CAAK,CACvC,CAAA,CAAA,IAAI,CAACE,IAAI,CAAC,QAAU4F,CAAAA,IAAAA,EACtB,CACA,IAAI,CAAC+nY,SAAS,CAACjuY,KAAK,GACtB,CACA7G,GAAAA,CAAI8xY,GAAG,CAAE,CACP,OAAO,IAAI,CAAC5pY,MAAM,CAAClI,GAAG,CAAC8xY,GAAQ,CAAA,EAAA,IACjC,CACAvO,eAAAA,EAAkB,CAChB,GAAI,IAAI,CAACj6Q,QAAQ,CAAC5zG,IAAI,GAAKyqX,SAAW,CAAA,CACpC,MACF,CACA,GAAI,CAAC,IAAI,CAAC72Q,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAAE,CAC1C,MACF,CACA,IAAI,CAAC+Q,eAAe,CAAG,IAAI,CAACjrR,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAACt8X,OAAO,CAAC,eAAA,CAAA,GAAqB,CAAC,CAC3F,CAAA,IAAI,CAACstY,eAAe,CAAG,IAAI,CAAClrR,QAAQ,CAACy+C,OAAO,CAACy7N,eAAe,CAACt8X,OAAO,CAAC,eAAA,CAAA,GAAqB,CAAC,CAAA,CAC3F,GAAI,IAAI,CAACstY,eAAe,CAAE,CACxB,MAAMzsO,OAAU,CAAA,IAAI,CAACz+C,QAAQ,CAACy+C,OAC9B,CAAA,IAAI,CAAC2sO,WAAW,CAAG3sO,OAAQ0sO,CAAAA,UAAU,CACrC,IAAI,CAACE,YAAY,CAAG5sO,OAAAA,CAAQgtO,gBAC9B,CACF,CACAhR,eAAgB,CACd,IAAK,MAAMh3X,IAAAA,IAAQ,IAAI,CAAC7E,MAAM,CAACtB,MAAM,EAAG,CAAA,CACtCmG,IAAKq6B,CAAAA,OAAO,GACd,CACA,IAAI,CAACl/B,MAAM,CAACrB,KAAK,EACjB,CAAA,IAAI,CAAC0tY,eAAe,CAAG,KACvB,CAAA,IAAI,CAACC,eAAe,CAAG,KACvB,CAAA,IAAI,CAACE,WAAW,CAAG,EACnB,CAAA,IAAI,CAACC,YAAY,CAAG,EACpB,CAAA,IAAI,CAACtsY,KAAK,CAACnK,MAAM,CAAG,EACtB,CA7FA8H,WAAAA,CAAYujH,OAAO,CAAC,CAClB,KAAK,EAAA,CAAI,IAAI,CAACrhH,MAAM,CAAG,IAAI7B,GAAO,CAAA,IAAI,CAACyuY,SAAS,CAAG,IAAIzuY,GAAAA,CAAO,IAAI,CAACgC,KAAK,CAAG,EAAE,CAAE,IAAI,CAACgsY,eAAe,CAAG/yY,QAASI,CAAAA,OAAO,EAAI,CAAC,CAACzB,MAAO+0Y,CAAAA,QAAQ,EAAI,CAAC,CAAC/0Y,MAAOg1Y,CAAAA,cAAc,CAAE,IAAI,CAACX,eAAe,CAAGhzY,QAASI,CAAAA,OAAO,EAAI,CAAC,CAACzB,MAAAA,CAAOi1Y,kBAAkB,CAAE,IAAI,CAACX,eAAe,CAAG,KAAA,CAAO,IAAI,CAACC,eAAe,CAAG,KAAA,CAAO,IAAI,CAACE,WAAW,CAAG,EAAA,CAAI,IAAI,CAACC,YAAY,CAAG,GAAI,IAAI,CAACC,aAAa,CAAG,CAC9W,CAACrT,2BAA4BjrW,eAAAA,CAC7B,CAACkrW,yBAAAA,EAA4BpqW,iBAAAA,CAC7B,CAACqqW,wBAAyB,EAAEtqW,gBAC9B,CACA,CAAA,IAAI,CAACmyF,QAAQ,CAAGC,OAChB,CAAA,IAAI,CAACD,QAAQ,CAAChkH,EAAE,CAAC,OAAS,CAAA,IAAI,CAACi+X,eAAe,CAAE,IAAI,CAAA,CACpD,IAAI,CAACj6Q,QAAQ,CAAChkH,EAAE,CAAC,KAAA,CAAO,IAAI,CAACy+X,aAAa,CAAE,IAAI,EAClD,CAqFF,CArGMqQ,OAEGjlY,CAAAA,SAAS,CAAG,KAGjB,CALEilY,OAKGhlY,CAAAA,YAAY,CAAG,QAkGxB,CAAM+lY,MAAAA,SAAAA,SAAkBjvY,YAyCtBkhC,CAAAA,OAAAA,EAAU,EACV1X,KAAMwhH,CAAAA,MAAM,CAAEx7H,IAAI,CAAE2xU,SAAS,CAAE33U,OAAO,CAAE,CACtC,IAAInK,QAAAA,CAAWmK,OACf,CAAA,GAAI,OAAOA,OAAAA,GAAY,SAAU,CAC/BnK,QAAAA,CAAWmK,OAAQnK,CAAAA,SAAQ,CAE7B,GAAI,CAAC,IAAI,CAACk+X,UAAU,CAAC/tX,IAAAA,CAAK,CAAE,CAC1B,GAAInQ,QAAUA,CAAAA,QAAAA,CAAS,IAAI4C,KAAAA,CAAM,wBACjC,MACF,CACA,GAAI,IAAI,CAACy5X,QAAQ,CAAE,CACjB,GAAIr8X,QAAUA,CAAAA,QAAAA,CAAS,IAAI4C,KAAAA,CAAM,kCACjC,MACF,CACA,IAAI,CAAC09U,OAAO,CAAG30M,MACf,CAAA,IAAI,CAAC20M,OAAO,CAAC30M,MAAM,CAAC9pC,EAAE,CAAG,IACzB,CAAA,IAAI,CAAChvF,KAAK,CAAG1C,IACb,CAAA,IAAI,CAAC0/X,UAAU,CAAG/tD,SAClB,CAAA,IAAI,CAACguD,uBAAuB,CAAG3lY,OAAS4lY,EAAAA,sBAAAA,EAA0B,CAClE,CAAA,IAAI,CAACC,cAAc,CAACrkQ,MAAOgO,CAAAA,QAAQ,CAAEhO,MAAAA,CAAOoN,OAAO,CAAA,CACnD,MAAMz+I,IAAO,CAAA,CACX43E,gBAAkB,CAAA,CAChB4vQ,SACD,CAAA,CACDmuD,gBAAkB,CAAA,EAAE,CACtB,CACA,MAAMttW,MAAAA,CAAS,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,GAAIK,MAAQ2E,EAAAA,QAAAA,CAAU,CACpBhtC,IAAK43E,CAAAA,gBAAgB,CAAC14E,IAAI,CAAC,QAAA,EAC7B,CACA,MAAM02Y,KAAAA,CAAQvtW,MAAQoZ,EAAAA,QAAAA,CACtB,GAAI5rC,IAAAA,GAASyqX,UAAW,CACtBtgY,IAAAA,CAAK21Y,gBAAgB,CAACz2Y,IAAI,CAAC,oBAC3Bc,IAAK21Y,CAAAA,gBAAgB,CAACz2Y,IAAI,CAAC,UAAA,CAAA,CAC3B,GAAI2Q,OAAS,CAAA,CACX,GAAIA,OAAAA,CAAQgmY,aAAa,EAAI,IAAI,CAACA,aAAa,CAAC99T,SAAS,CAAE,CACzD/3E,KAAK21Y,gBAAgB,CAACz2Y,IAAI,CAAC,gBAC7B,EAAA,CACA,GAAI2Q,OAAQs+X,CAAAA,cAAc,CAAE,CAC1BnuY,IAAK21Y,CAAAA,gBAAgB,CAACz2Y,IAAI,CAAC,iBAC7B,EAAA,CACA,GAAI2Q,OAAAA,CAAQqhY,aAAa,CAAE,CACzBlxY,IAAK21Y,CAAAA,gBAAgB,CAACz2Y,IAAI,CAAC,gBAC7B,EAAA,CACF,CACA,GAAI,IAAI,CAAC42Y,UAAU,CAAC/9T,SAAS,EAAI,IAAI,CAAC+9T,UAAU,CAACp8P,IAAI,CAAE,CACrD15I,IAAAA,CAAK21Y,gBAAgB,CAACz2Y,IAAI,CAAC,aAAA,CAC3Bc,CAAAA,IAAAA,CAAK81Y,UAAU,CAAG,CAChBp8P,IAAAA,CAAM,IAAI,CAACo8P,UAAU,CAACp8P,IACxB,EACF,CACA,GAAI7pI,OAAWA,EAAAA,OAAAA,CAAQ4/X,OAAO,EAAI,IAAI,CAACA,OAAO,CAAC13T,SAAS,CAAE,CACxD/3E,KAAK21Y,gBAAgB,CAACz2Y,IAAI,CAAC,SAC7B,EAAA,CACA,GAAI2Q,OAAWA,EAAAA,OAAAA,CAAQkmY,YAAY,EAAI,IAAI,CAAC5tO,KAAK,CAACisO,cAAc,CAAE,CAChEp0Y,IAAK21Y,CAAAA,gBAAgB,CAACz2Y,IAAI,CAAC,eAC3B,CAAA,CAAA,MAAM82Y,eAAkB,CAAA,EAAE,CAC1B,MAAMC,oBAAAA,CAAuB,EAAE,CAC/BD,eAAgB92Y,CAAAA,IAAI,CAACuiY,uBAAyBD,CAAAA,uBAAAA,CAAAA,CAC9CyU,oBAAqB/2Y,CAAAA,IAAI,CAAC0iY,wBAAAA,CAA0BF,0BAA2BC,yBAC/E,CAAA,CAAA,GAAI9xX,OAAQkmY,CAAAA,YAAY,CAACC,eAAe,CAAE,CACxC,MAAM5uY,GAAM4uY,CAAAA,eAAAA,CAAgB3uY,OAAO,CAACwI,QAAQkmY,YAAY,CAACC,eAAe,CAAA,CACxE,GAAI5uY,GAAAA,GAAQ,CAAC,CAAG4uY,CAAAA,eAAAA,CAAgB9uY,MAAM,CAACE,GAAK,CAAA,CAAA,CAAA,CAC5C4uY,gBAAgBp4T,OAAO,CAAC/tE,OAAQkmY,CAAAA,YAAY,CAACC,eAAe,EAC9D,CACA,GAAInmY,OAAQkmY,CAAAA,YAAY,CAACE,oBAAoB,CAAE,CAC7C,MAAM7uY,GAAM6uY,CAAAA,oBAAAA,CAAqB5uY,OAAO,CAACwI,OAAQkmY,CAAAA,YAAY,CAACE,oBAAoB,CAClF,CAAA,GAAI7uY,GAAQ,GAAA,CAAC,EAAG6uY,oBAAqB/uY,CAAAA,MAAM,CAACE,GAAAA,CAAK,CACjD6uY,CAAAA,CAAAA,oBAAAA,CAAqBr4T,OAAO,CAAC/tE,OAAAA,CAAQkmY,YAAY,CAACE,oBAAoB,EACxE,CACAj2Y,IAAK+1Y,CAAAA,YAAY,CAAG,CAClBC,eAAiBA,CAAAA,eAAAA,CACjBC,qBAAsBA,oBACxB,EACF,CACA,GAAIL,KAAS/lY,EAAAA,OAAAA,EAAWA,QAAQqmY,WAAW,EAAI,IAAI,CAAC/tO,KAAK,CAACgsO,cAAc,CAAE,CACxEn0Y,IAAK21Y,CAAAA,gBAAgB,CAACz2Y,IAAI,CAAC,eAC7B,EAAA,CACF,CACAc,IAAAA,CAAK21Y,gBAAgB,CAACz2Y,IAAI,CAAC,eAC3B,CAAA,CAAA,GAAI2Q,OAAWA,EAAAA,OAAAA,CAAQ8lY,gBAAgB,CAAE,CACvC31Y,IAAK21Y,CAAAA,gBAAgB,CAAG31Y,IAAAA,CAAK21Y,gBAAgB,CAAC5+U,MAAM,CAAClnD,OAAAA,CAAQ8lY,gBAAgB,EAC/E,CACA,GAAI,IAAI,CAACE,aAAa,CAAC99T,SAAS,EAAI,IAAI,CAAC89T,aAAa,CAACv8B,MAAM,CAACj7W,MAAM,CAAE,CACpE,IAAI,CAACw3Y,aAAa,CAAC5P,aAAa,CAAC,CAACh8X,GAAKksY,CAAAA,aAAAA,GAAAA,CACrC,GAAIlsY,GAAAA,CAAK,CACP,GAAIvE,SAAUA,QAASuE,CAAAA,GAAAA,CAAAA,CACvB,IAAI,CAAC3C,IAAI,CAAC,OAAS2C,CAAAA,GAAAA,CAAAA,CACnB,MACF,CACA,GAAIksY,aAAAA,GAAkB,IAAM,CAAA,CAC1Bn2Y,KAAKm2Y,aAAa,CAAGA,cACvB,CACA,IAAI,CAACC,oBAAoB,CAACvgY,IAAAA,CAAM2xU,SAAWxnV,CAAAA,IAAAA,CAAM0F,QACnD,EAAA,CAAA,EACF,MAAO,CACL,IAAI,CAAC0wY,oBAAoB,CAACvgY,IAAAA,CAAM2xU,UAAWxnV,IAAM0F,CAAAA,QAAAA,EACnD,CACF,CACA0wY,oBAAqBvgY,CAAAA,IAAI,CAAE2xU,SAAS,CAAE33U,OAAO,CAAEnK,QAAQ,CAAE,CACvDjF,SAAU8mG,CAAAA,EAAE,CAAC8uS,cAAc,CAACxgY,IAAAA,CAAMhG,SAASxF,IAAI,CAAC,OAAC69J,EAAAA,CAC/C,IAAI,CAACw7N,eAAe,CAACx7N,OAAAA,CAASs/K,SAAW9hV,CAAAA,QAAAA,EAC3C,CAAGu4F,CAAAA,CAAAA,KAAK,CAAC,EAAChhG,EAAAA,CACR,IAAI,CAAC+oV,OAAO,CAAC30M,MAAM,CAAC9pC,EAAE,CAAG,IACzB,CAAA,IAAI,CAACy+O,OAAO,CAAG,IACf,CAAA,IAAI,CAACztU,KAAK,CAAG,IACb,CAAA,IAAI,CAACg9X,UAAU,CAAG,IAClB,CAAA,GAAI7vY,QAAUA,CAAAA,QAAAA,CAASzI,EACvB,CAAA,CAAA,IAAI,CAACqK,IAAI,CAAC,OAASrK,CAAAA,EAAAA,EACrB,CACF,EAAA,CACA6G,IAAI4B,QAAQ,CAAE,CACZ,GAAI,CAAC,IAAI,CAACq8X,QAAQ,CAAE,CAClB,GAAIr8X,QAAAA,CAAUA,QAAS,CAAA,IAAI4C,MAAM,+BACjC,CAAA,CAAA,CAAA,MACF,CACA,IAAI,CAAC2qY,YAAY,CAAG,IACpB,CAAA,GAAIvtY,QAAU,CAAA,IAAI,CAACG,IAAI,CAAC,KAAOH,CAAAA,QAAAA,CAAAA,CAC/B,IAAI,CAACq8X,QAAQ,CAACj+X,GAAG,GACnB,CACAwyY,WAAYzgY,CAAAA,IAAI,CAAE,CAChB,OAAO,IAAI,CAAC+tX,UAAU,CAAC/tX,IAAK,CAC9B,CACA0gY,wBAA2B,EAAA,CACzB,IAAI,MAAMtwY,GAAO,IAAA,IAAI,CAAC29X,UAAU,CAAC,CAC/B,IAAI,CAAC4S,oBAAoB,CAACvwY,GAC5B,EAAA,CACF,CACAwwY,mBAAAA,CAAoB/wY,QAAQ,CAAE,CAC5B,GAAI,CAAC,IAAI,CAACq8X,QAAQ,CAAE,CAClBr8X,QAAS,CAAA,IAAI4C,KAAM,CAAA,uBAAA,CAAA,CAAA,CACnB,MACF,CACA,GAAI,CAAC,IAAI,CAACy5X,QAAQ,CAAC0U,mBAAmB,CAAE,CACtC/wY,QAAAA,CAAS,IAAI4C,KAAAA,CAAM,8CACnB,CAAA,CAAA,CAAA,MACF,CACA,IAAI,CAACy5X,QAAQ,CAAC0U,mBAAmB,EAAA,CAAGpsY,IAAI,CAAC,IAAA,CACvC,GAAI3E,QAAAA,CAAUA,QAAS,CAAA,IAAA,EACzB,GAAGu4F,KAAK,CAAC,GAACh0F,EAAAA,CACR,GAAIvE,QAAAA,CAAUA,QAASuE,CAAAA,GAAAA,EACzB,CACF,EAAA,CACAysY,qBAAsBC,CAAAA,SAAS,CAAEjxY,QAAQ,CAAE,CACzC,GAAI,CAAC,IAAI,CAACq8X,QAAQ,EAAE2U,qBAAuB,CAAA,CACzChxY,QAAW,GAAA,IAAI4C,KAAM,CAAA,4BAAA,CAAA,CAAA,CACrB,MACF,CACA,IAAI,CAACy5X,QAAQ,CAAC2U,qBAAqB,CAACC,SAAWtsY,CAAAA,CAAAA,IAAI,CAAC,IAAA,CAClD3E,QACF,KAAA,CAAA,CAAA,CAAGu4F,KAAK,CAAEh0F,GACRvE,EAAAA,CAAAA,QAAAA,GAAWuE,GACb,EAAA,CAAA,EACF,CACAusY,oBAAqB3gY,CAAAA,IAAI,CAAE,CACzBpV,SAAU8mG,CAAAA,EAAE,CAACqvS,kBAAkB,CAAC/gY,IAAMxL,CAAAA,CAAAA,IAAI,CAAEmmF,YAC1C,GAAI,IAAI,CAACozS,UAAU,CAAC/tX,IAAAA,CAAK,GAAK26E,SAAW,CAAA,CACvC,MACF,CACA,IAAI,CAACozS,UAAU,CAAC/tX,IAAAA,CAAK,CAAG26E,SAAAA,CACxB,IAAI,CAAClpF,IAAI,CAAC,WAAA,CAAauO,IAAM26E,CAAAA,SAAAA,CAAAA,CAC7B,IAAI,CAAClpF,IAAI,CAAC,CAAC,UAAU,EAAEuO,IAAK,CAAA,CAAC,CAAE26E,SACjC,EAAA,CAAA,CAAA,CAAGyN,KAAK,CAAC,EAAChhG,EAAAA,CACR,IAAI,CAACqK,IAAI,CAAC,OAAA,CAASrK,EACrB,EAAA,CAAA,EACF,CACAymY,eAAgBx7N,CAAAA,OAAO,CAAEs/K,SAAS,CAAE9hV,QAAQ,CAAE,CAC5C,IAAI4vD,MAAAA,CAAS,KACb,CAAA,IAAI,CAACysU,QAAQ,CAAG75N,OAAAA,CAChB,MAAMg2F,kBAAAA,CAAqB,IACzB,CAAA,IAAI,CAAC52P,IAAI,CAAC,mBAAqB4gK,CAAAA,OAAAA,CAAQtwD,eAAe,EACxD,EACA,MAAMi/R,kBAAAA,CAAqB,IACzB,CAAA,IAAI,CAACnB,cAAc,CAAC,IAAI,CAAC1vD,OAAO,CAAC3mM,QAAQ,CAAE,IAAI,CAAC2mM,OAAO,CAACvnM,OAAO,EACjE,CAAA,CACA,MAAM3uB,KAAQ,CAAA,IAAA,CACZ,GAAI,IAAI,CAACk2N,OAAO,CAAE,CAChB,IAAI,CAACA,OAAO,CAAC3gV,GAAG,CAAC,cAAA,CAAgBwxY,kBACjC,CAAA,CAAA,IAAI,CAAC7wD,OAAO,CAAC3gV,GAAG,CAAC,aAAewxY,CAAAA,kBAAAA,CAChC,CAAA,IAAI,CAAC7wD,OAAO,CAAC30M,MAAM,CAAC9pC,EAAE,CAAG,IACzB,CAAA,IAAI,CAACy+O,OAAO,CAAG,KACjB,CACA99K,OAAAA,CAAQ5nK,mBAAmB,CAAC,KAAA,CAAOwvH,KACnCo4C,CAAAA,CAAAA,OAAAA,CAAQ5nK,mBAAmB,CAAC,mBAAoB49P,kBAChD,CAAA,CAAA,GAAI,CAAC5oM,MAAAA,CAAQ,IAAI,CAAChuD,IAAI,CAAC,KAAA,CACvB,CAAA,IAAI,CAACy6X,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACsB,eAAe,CAAG,IACvB,CAAA,IAAI,CAACx4V,MAAM,CAAG,CACd,CAAA,IAAI,CAACC,OAAO,CAAG,CACf,CAAA,IAAI,CAACvyB,KAAK,CAAG,IACb,CAAA,IAAI,CAACg9X,UAAU,CAAG,IAAA,CAClB,GAAI,IAAI,CAACnnK,GAAG,CAACgR,OAAO,CAAE,CACpB,IAAI,CAAChR,GAAG,CAACowB,IAAI,GACf,CACF,CAAA,CACAt2F,OAAQ7nK,CAAAA,gBAAgB,CAAC,KAAOyvH,CAAAA,KAAAA,CAAAA,CAChCo4C,OAAQ7nK,CAAAA,gBAAgB,CAAC,kBAAA,CAAoB69P,oBAC7C,IAAI,CAAC8nF,OAAO,CAACvgV,EAAE,CAAC,eAAgBoxY,kBAChC,CAAA,CAAA,IAAI,CAAC7wD,OAAO,CAACvgV,EAAE,CAAC,aAAeoxY,CAAAA,kBAAAA,CAAAA,CAC/B,IAAI,CAACC,gBAAgB,EAAA,CACrB,GAAI,IAAI,CAAC5uO,OAAO,CAAC6uO,mBAAmB,CAAE,CACpC,IAAI,CAACC,oBAAoB,CAAG55Y,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAACmgJ,OAAO,CAAC6uO,mBAAmB,EACzE,MAAO,CACL,IAAI,CAACC,oBAAoB,CAAG,KAC9B,CACA,IAAI,CAACjV,QAAQ,CAAC1hY,gBAAgB,CAAC,kBAAmB,IAChD,CAAA,IAAI,CAACiH,IAAI,CAAC,iBAAA,CAAmB,IAAI,CAACy6X,QAAQ,EAAE4U,SAC9C,EAAA,CAAA,CAAA,CACAzuO,OAAQ47N,CAAAA,qBAAqB,CAACt8C,SAAWn9U,CAAAA,CAAAA,IAAI,CAAE05X,cAC7C,EAAA,CAAA,IAAI,CAACV,eAAe,CAAGU,cACvB,CAAA,IAAI,CAAC31J,GAAG,CAACowB,IAAI,EAAA,CACb,GAAI94P,QAAAA,CAAUA,QAAS,CAAA,IAAA,CAAA,CACvB,IAAI,CAAC4B,IAAI,CAAC,OAAA,EACZ,CAAG22F,CAAAA,CAAAA,KAAK,CAAC,EAAChhG,EAAAA,CACRq4D,MAAS,CAAA,IAAA,CACT4yG,OAAQpkK,CAAAA,GAAG,GACX,GAAI4B,QAAAA,CAAUA,QAASzI,CAAAA,EAAAA,CAAAA,CACvB,IAAI,CAACqK,IAAI,CAAC,OAAA,CAASrK,EACrB,EAAA,CAAA,EACF,CACAy4Y,cAAAA,CAAepyX,IAAI,CAAEC,GAAG,CAAE,CACxB,GAAI,IAAI,CAAC0zX,UAAU,GAAK3zX,IAAQ,EAAA,IAAI,CAAC4zX,SAAS,GAAK3zX,GAAK,CAAA,CACtD,MACF,CACA,IAAI,CAAC0zX,UAAU,CAAG3zX,IAClB,CAAA,IAAI,CAAC4zX,SAAS,CAAG3zX,GACjB,CAAA,GAAI,CAAC,IAAI,CAACw+W,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAACoV,iBAAiB,CAAC,CAC9BC,SAAAA,CAAW,IAAI,CAACH,UAAU,CAC1BI,QAAAA,CAAU,IAAI,CAACH,SACjB,CACF,EAAA,CACAJ,gBAAmB,EAAA,CACjB,MAAMzuW,MAAAA,CAAS,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,MAAMytW,sBAAyBptW,CAAAA,MAAAA,CAAO2X,aAAa,CAAG5/C,MAAAA,CAAOo/C,gBAAgB,CAAG,IAAI,CAACg2V,uBAAuB,CAC5G,IAAI,CAAC8B,UAAU,CAAG,IAAIC,YAAa,CAAA,IAAI,CAACxV,QAAQ,CAAE15V,MAAAA,CAAOo2C,EAAE,CAAE,CAC3DnsE,KAAO,CAAA,IAAA,CACP82B,KAAO,CAAA,IAAA,CACPkZ,QAAS,IACTmzV,CAAAA,sBAAAA,CAAwBA,sBACxBhzV,CAAAA,SAAAA,CAAW,KACb,CAAA,CAAA,CACA,GAAIpa,MAAQoZ,EAAAA,QAAAA,EAAYrhD,MAAOg1Y,CAAAA,cAAc,CAAE,CAC7C,GAAI,CACF,IAAI,CAACnC,YAAY,CAAG,IAAImC,eAAe,IAAI,CAACrT,QAAQ,CAAE15V,MAAOo2C,CAAAA,EAAE,EACjE,CAAE,MAAOxhF,EAAI,CAAA,CACX,IAAI,CAACqK,IAAI,CAAC,OAAA,CAASrK,EACrB,EAAA,CACF,CACA,IAAI,CAAC8kY,QAAQ,CAACoV,iBAAiB,CAAC,CAC9B5zI,SAAAA,CAAW,IAAI,CAAC+zI,UAAU,CAC1BF,SAAAA,CAAW,IAAI,CAACH,UAAU,CAC1BI,QAAAA,CAAU,IAAI,CAACH,SACjB,GACF,CACAnD,aAAAA,EAAgB,CACd,GAAI,CAAC,IAAI,CAAChS,QAAQ,CAAE,CAClB,MACF,CACA,GAAI,IAAI,CAACkR,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAG,KACtB,CACA,IAAI,CAACqE,UAAU,CAAG,KAClB,IAAI,CAACvV,QAAQ,CAACoV,iBAAiB,CAAC,CAC9B5zI,SAAW,CAAA,IAAI,CAAC+zI,UAAU,CAC1BF,SAAAA,CAAW,IAAI,CAACH,UAAU,CAC1BI,QAAAA,CAAU,IAAI,CAACH,SAAS,CAC1B,EACF,CACAM,iBAAAA,EAAoB,CAClB,GAAI,CAAC,IAAI,CAACzV,QAAQ,CAAE,CAClB,MACF,CACA5jT,UAAAA,CAAW,IACT,CAAA,IAAI,CAACiwJ,GAAG,CAACpmM,cAAc,CAACy2C,EAAE,CAACg5T,gBAAgB,EAAA,CAAGptY,IAAI,CAAC,KACjD,IAAI,CAACysY,gBAAgB,GACvB,CAAG74S,CAAAA,CAAAA,KAAK,CAAC,EAAChhG,EAAAA,CACR,IAAI,CAACqK,IAAI,CAAC,QAASrK,EACrB,EAAA,CAAA,EACF,CAAG,CAAA,CAAA,EACL,CACAu0C,MAAAA,CAAO0rK,KAAK,CAAE,CACZ,GAAI,CAAC,IAAI,CAAC6kL,QAAQ,CAAE,OAAO,KAC3B,CAAA,MAAMh+W,KAAQm5L,CAAAA,KAAAA,CAAMh1C,OAAO,CAACo7F,WAAW,CAACC,SAAS,CAACm0I,gBAAgB,CAClE,MAAM1zX,MAASk5L,CAAAA,KAAAA,CAAMh1C,OAAO,CAACo7F,WAAW,CAACC,SAAS,CAACo0I,iBAAiB,CACpE,GAAI,IAAI,CAAC9sW,MAAM,GAAK9mB,KAAAA,EAAS,IAAI,CAAC+mB,OAAO,GAAK9mB,OAAQ,CACpD,IAAI,CAAC6mB,MAAM,CAAG9mB,KACd,CAAA,IAAI,CAAC+mB,OAAO,CAAG9mB,MACf,CAAA,IAAI,CAACoqN,GAAG,CAACpmM,cAAc,CAACyX,aAAa,CAAC17B,MAAOC,MAC/C,EAAA,CACA,MAAMm/W,IAAAA,CAAOjmL,KAAM06L,CAAAA,aAAa,CAAC,IAAI,CAACvU,eAAe,CAAA,CACrD,GAAI,CAACF,KAAM,OAAO,KAAA,CAClB,MAAM0U,SAAAA,CAAY,IAAI,CAAC1vO,KAAK,CAACx/J,IAAI,CAACtK,MAAM,CACxC,IAAI,CAAC8pK,KAAK,CAAC32H,MAAM,CAAC0rK,KAAOimL,CAAAA,IAAAA,CAAKh7N,KAAK,CACnC,CAAA,MAAM2vO,YAAe3U,CAAAA,IAAAA,CAAK5qP,SAAS,CAAC71H,QAAQ,CAC5C,MAAMq1X,eAAkB5U,CAAAA,IAAAA,CAAK5qP,SAAS,CAACtvB,WAAW,CAClD,IAAI,CAACk+Q,cAAc,CAACxgY,GAAG,CAACmxY,YAAarlY,CAAAA,CAAC,CAAEqlY,YAAAA,CAAa39X,CAAC,CAAE29X,aAAax9X,CAAC,CAAA,CACtE,IAAI,CAAC8sX,cAAc,CAACzgY,GAAG,CAACoxY,eAAgBtlY,CAAAA,CAAC,CAAEslY,eAAAA,CAAgB59X,CAAC,CAAE49X,gBAAgBz9X,CAAC,CAAEy9X,eAAgBp6X,CAAAA,CAAC,CAClG,CAAA,GAAIk6X,YAAc,CAAK,EAAA,IAAI,CAAC1vO,KAAK,CAACx/J,IAAI,CAACtK,MAAM,CAAG,CAAG,CAAA,CACjD,MAAMm+I,WAAAA,CAAc,IAAI77H,IACxB,CAAA,MAAMzT,IAAO,CAAA,IAAI,CAACi7J,KAAK,CAACx/J,IAAI,CAAC,CAAE,CAAA,CAC/B6zI,WAAYr/I,CAAAA,IAAI,CAAC+P,IAAKw4J,CAAAA,OAAO,CAC7B,CAAA,MAAMttJ,IAAOokI,CAAAA,WAAAA,CAAYpkI,IAAI,CAC7B,MAAM0I,GAAM,CAAA,CAAA,CAAMnjB,IAAKg+J,CAAAA,IAAI,CAAC,CAAMvjJ,CAAAA,IAAI,CAAC,CAAA,CAAE,CAAI,CAAA,GAAA,CAAQza,KAAKgU,EAAE,CAC5D,MAAMurI,WAAAA,CAAc9kI,IAAI,CAAC,EAAE,CAAGA,IAAI,CAAC,CAAA,CAAE,CACrC,MAAMqmI,QAAUrmI,IAAI,CAAC,EAAG,CAAA,EAAIA,IAAI,CAAC,EAAG,CAAA,CAAG,CAAA,CAAA,CACvC,MAAMinI,QAAAA,CAAWjnI,IAAI,CAAC,EAAA,CAAG,EAAIA,IAAI,CAAC,GAAG,CAAG,CAAA,CACxC,CAAA,MAAM4mI,aAAgB,CAAA,KAAA,CACtB,MAAM3N,MAAS,CAAA,IAAI,CAAC20M,OAAO,CAAC30M,MAAM,CAClCA,MAAAA,CAAOiR,eAAe,CAAC,CACrBpF,WAAAA,CACAuB,OACA39H,CAAAA,GAAAA,CACAk+H,cACAK,QACF,CAAA,EACF,CACA,IAAI,CAAC2mM,OAAO,CAAC30M,MAAM,CAACkO,KAAK,CAACwH,gBAAgB,CAAC,IAAI,CAACogP,cAAc,CAC9D,CAAA,IAAI,CAACnhD,OAAO,CAAC30M,MAAM,CAACkO,KAAK,CAACyH,gBAAgB,CAAC,IAAI,CAACogP,cAAc,CAC9D,CAAA,IAAI,CAACl6H,KAAK,CAAC17N,MAAM,CAAC0rK,KAClB,CAAA,CAAA,GAAI,IAAI,CAAC3kM,KAAK,GAAK+nX,SAAAA,CAAW,CAC5B,GAAI,IAAI,CAACiC,OAAO,CAACxqT,SAAS,CAAE,CAC1B,IAAI,CAACwqT,OAAO,CAAC/wV,MAAM,CAAC0rK,KAAAA,EACtB,CACA,GAAI,IAAI,CAAC86L,eAAe,CAACjgU,SAAS,CAAE,CAClC,IAAI,CAACigU,eAAe,CAACxmW,MAAM,CAAC0rK,KAAAA,EAC9B,CACA,GAAI,IAAI,CAAC24L,aAAa,CAAC99T,SAAS,CAAE,CAChC,IAAI,CAAC89T,aAAa,CAACrkW,MAAM,CAAC0rK,KAC5B,EAAA,CACA,GAAI,IAAI,CAACuyL,OAAO,CAAC13T,SAAS,CAAE,CAC1B,IAAI,CAAC03T,OAAO,CAACj+V,MAAM,CAAC0rK,KAAAA,EACtB,CACA,GAAI,IAAI,CAACixL,cAAc,CAACp2T,SAAS,CAAE,CACjC,IAAI,CAACo2T,cAAc,CAAC38V,MAAM,CAAC0rK,KAAAA,EAC7B,CACA,GAAI,IAAI,CAACg0L,aAAa,CAACn5T,SAAS,CAAE,CAChC,IAAI,CAACm5T,aAAa,CAAC1/V,MAAM,CAAC0rK,KAAAA,EAC5B,CACF,CACA,IAAI,CAAC51M,IAAI,CAAC,QAAA,CAAU41M,OACpB,OAAO,IACT,CACA,IAAInlI,SAAY,EAAA,CACd,OAAO,IAAI,CAAC+pT,UACd,CACA,IAAIxkP,MAAS,EAAA,CACX,OAAO,CAAC,CAAC,IAAI,CAACykP,QAAQ,CAExB,IAAIlsX,IAAO,EAAA,CACT,OAAO,IAAI,CAAC0C,KACd,CACA,IAAIivU,SAAY,EAAA,CACd,OAAO,IAAI,CAAC+tD,UACd,CACA,IAAIrtO,SAAU,CACZ,OAAO,IAAI,CAAC65N,QACd,CACA,IAAI4U,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC5U,QAAQ,EAAE4U,SAAAA,EAAa,IACrC,CACA,IAAII,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACC,oBAAoB,CAElC,IAAIvB,sBAAAA,EAAyB,CAC3B,OAAO,IAAI,CAACD,uBACd,CACA,IAAIyC,cAAAA,CAAelyY,KAAK,CAAE,CACxB,GAAI,CAAC,IAAI,CAACuxY,UAAU,EAAEW,cAAAA,EAAkB,IAAG,IAAO,IAAA,CAAM,CACtD,GAAI,IAAI,CAAC7pK,GAAG,CAACpmM,cAAc,CAACiZ,OAAO,CAAG,CAAA,CAAA,CACtC,IAAI,CAACq2V,UAAU,CAACW,cAAc,CAAGlyY,MACnC,CACF,CACA,IAAIkyY,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACX,UAAU,EAAEW,cAAkB,EAAA,IAC5C,CACA,IAAI5mQ,QAAS,CACX,OAAO,IAAI,CAAC20M,OAAO,CAAG,IAAI,CAACA,OAAO,CAAChhN,MAAM,CAAG,IAC9C,CACA,IAAIptB,eAAAA,EAAkB,CACpB,GAAI,CAAC,IAAI,CAACmqR,QAAQ,CAAE,CAClB,OAAO,IACT,CACA,OAAO,IAAI,CAACA,QAAQ,CAACnqR,eACvB,CA3ZAzxG,WAAYioO,CAAAA,GAAG,CAAC,CACd,KAAK,EAAA,CAAI,IAAI,CAAC0zJ,UAAU,CAAGrgY,QAAAA,CAASI,OAAO,EAAI,CAAC,CAACpB,SAAAA,CAAU8mG,EAAE,CAAE,IAAI,CAACq8R,UAAU,CAAG,EAAC,CAAG,IAAI,CAACrrX,KAAK,CAAG,KAAM,IAAI,CAACg9X,UAAU,CAAG,IAAM,CAAA,IAAI,CAACxT,QAAQ,CAAG,IAAM,CAAA,IAAI,CAACuV,UAAU,CAAG,IAAM,CAAA,IAAI,CAACrE,YAAY,CAAG,IAAA,CAAM,IAAI,CAAC5P,eAAe,CAAG,IAAA,CAAM,IAAI,CAACr9C,OAAO,CAAG,IAAA,CAAM,IAAI,CAACmhD,cAAc,CAAG,IAAI9sX,IAAQ,CAAA,IAAI,CAAC+sX,cAAc,CAAG,IAAInhX,KAAQ,IAAI,CAACgxX,UAAU,CAAG,EAAK,CAAA,IAAI,CAACC,SAAS,CAAG,GAAM,CAAA,IAAI,CAACF,oBAAoB,CAAG,IAAM,CAAA,IAAI,CAACnsW,MAAM,CAAG,CAAA,CAAG,IAAI,CAACC,OAAO,CAAG,CAAA,CAAG,IAAI,CAAC0qW,uBAAuB,CAAG,CAChd,CAAA,IAAI,CAACpnK,GAAG,CAAGA,GACX,CAAA,IAAI,CAACw1J,UAAU,CAACxD,cAAc,CAAG,KACjC,CAAA,IAAI,CAACwD,UAAU,CAACvD,SAAU,CAAA,CAAG,KAC7B,CAAA,IAAI,CAACuD,UAAU,CAACtD,SAAAA,CAAU,CAAG,KAC7B,CAAA,IAAI,CAACn4N,KAAK,CAAG,IAAIosO,OAAQ,CAAA,IAAI,CAC7B,CAAA,IAAI,CAACuB,UAAU,CAAG,IAAIjU,YAAa,CAAA,IAAI,CACvC,CAAA,IAAI,CAACU,OAAO,CAAG,IAAIkB,UAAU,IAAI,CACjC,CAAA,IAAI,CAACoS,aAAa,CAAG,IAAIhQ,eAAAA,CAAgB,IAAI,CAC7C,CAAA,IAAI,CAACsI,cAAc,CAAG,IAAIE,gBAAAA,CAAiB,IAAI,CAC/C,CAAA,IAAI,CAAC6C,aAAa,CAAG,IAAIC,eAAAA,CAAgB,IAAI,CAC7C,CAAA,IAAI,CAACjkI,KAAK,CAAG,IAAI8+H,OAAQ,CAAA,IAAI,CAC7B,CAAA,IAAI,CAACgM,eAAe,CAAG,IAAInL,iBAAkB,CAAA,IAAI,CACjD,CAAA,IAAI,CAAC4C,OAAO,CAAG,IAAIG,SAAU,CAAA,IAAI,CACjC,CAAA,IAAI,CAACznO,KAAK,CAAG,IAAIosO,QAAQ,IAAI,CAAA,CAC7B,GAAI,IAAI,CAACzS,UAAU,CAAE,CACnBrhY,SAAAA,CAAU8mG,EAAE,CAAClnG,gBAAgB,CAAC,eAAgB,IAC5C,CAAA,IAAI,CAACk2Y,wBAAwB,GAC/B,CAAA,CAAA,CACA,IAAI,CAACA,wBAAwB,EAC7B,CAAA,IAAI,CAACnoK,GAAG,CAACpmM,cAAc,CAACviC,EAAE,CAAC,YAAA,CAAc,IAAI,CAACsuY,aAAa,CAAE,IAAI,CACjE,CAAA,IAAI,CAAC3lK,GAAG,CAACpmM,cAAc,CAACviC,EAAE,CAAC,gBAAkB,CAAA,IAAI,CAAC+xY,iBAAiB,CAAE,IAAI,EAC3E,CACF,CAoYF,CA1aI,SAFElC,CAEG1Q,eAAe,CAAG,WAGvB,CALE0Q,UAKG4C,WAAW,CAAG,OAGnB,CARE5C,SAQG9kR,CAAAA,SAAS,CAAG,KAGjB,CAXE8kR,SAWG6C,CAAAA,YAAY,CAAG,QAGpB,CAdE7C,SAcG9/J,CAAAA,WAAW,CAAG,OAgavB,CAAM4iK,MAAAA,WAAAA,SAAoB57I,OAqBxBjlL,CAAAA,YAAAA,CAAap7B,MAAM,CAAEtsC,OAAO,CAAE,CAC5B,GAAI,CAACA,OAAQwoY,CAAAA,qBAAqB,CAAE,CAClCxoY,OAAQwoY,CAAAA,qBAAqB,CAAG,GAClC,CACA,GAAI52Y,QAASI,CAAAA,OAAO,EAAI,CAAC,CAACpB,SAAU8mG,CAAAA,EAAE,CAAE,CACtC13F,QAAQwoY,qBAAqB,CAAC5gU,YAAY,CAAG,KAC/C,CACA5nE,QAAQwoY,qBAAqB,CAAC/lY,KAAK,CAAGzC,OAAQwoY,CAAAA,qBAAqB,CAAC/lY,KAAK,EAAI,KAC7E,CAAA,OAAO,IAAI2+E,mBAAAA,CAAoB90C,OAAQtsC,OAAQwoY,CAAAA,qBAAqB,CACtE,CACAC,mBAAoB77I,CAAAA,UAAU,CAAE,CAC9BA,UAAWG,CAAAA,gBAAgB,CAAG,CAC5BoqE,wBACAnpC,CAAAA,wBAAAA,CACAspB,qBACA1sC,wBACA+O,CAAAA,mBAAAA,CACA4rC,oBACAuM,CAAAA,qBAAAA,CACAimB,qBACAqB,CAAAA,oBAAAA,CACAuF,sBACAtO,oBACA51D,CAAAA,4BAAAA,CACAk0C,6BACA6Q,CAAAA,qBAAAA,CACAjwB,sBACA7sB,CAAAA,qBAAAA,CACA+oD,0BACAmC,wBACAwF,CAAAA,qBAAAA,CACA/wB,0BACA7J,CAAAA,0BAAAA,CACAy7B,mBACAie,CAAAA,qBAAAA,EACD,CAEHw2C,kBAAAA,CAAmB97I,UAAU,CAAE,CAC7BA,UAAAA,CAAWK,gBAAgB,CAAG,CAC5B+lG,aACAiZ,CAAAA,gBAAAA,CACAS,eACAC,CAAAA,qBAAAA,CACAkU,aACAtD,eACA0S,CAAAA,cAAAA,CACA3M,WACArH,CAAAA,WAAAA,CACAjP,YACA6U,CAAAA,aAAAA,CACAX,aACArR,cACAmM,CAAAA,WAAAA,CACApM,UACAgT,CAAAA,aAAAA,CACA7G,gBACArK,CAAAA,aAAAA,CACAO,YACA3E,aACAoW,CAAAA,mBAAAA,CACAX,aACAM,CAAAA,eAAAA,CACA7T,gBACAgK,CAAAA,aAAAA,EACD,CApFHljX,WAAAA,CAAYg2C,MAAM,CAAEtsC,OAAU,CAAA,EAAE,CAAC,CAC/B,KAAK,CAACssC,MACN,CAAA,CAAA,MAAMsgN,WAAa,IAAI+G,UACvB/G,CAAAA,UAAAA,CAAWz0N,cAAc,CAAGn4B,QAAQm4B,cAAc,EAAI,IAAI,CAACuvC,YAAY,CAACp7B,OAAQtsC,OAChF,CAAA,CAAA,IAAI,CAACyoY,mBAAmB,CAAC77I,UAAAA,CAAAA,CACzB,IAAI,CAAC87I,kBAAkB,CAAC97I,UAAAA,CACxBA,CAAAA,UAAAA,CAAWI,YAAY,CAAGhtP,OAAAA,CAAQgtP,YAClCJ,CAAAA,UAAAA,CAAWrmJ,QAAQ,CAAGvmG,OAAQumG,CAAAA,QAAQ,CACtCqmJ,UAAWhkJ,CAAAA,KAAK,CAAG5oG,OAAQ4oG,CAAAA,KAAK,CAChCgkJ,UAAWx7P,CAAAA,KAAK,CAAG4O,OAAQ5O,CAAAA,KAAK,CAChCw7P,UAAWt7P,CAAAA,QAAQ,CAAG0O,OAAQ1O,CAAAA,QAAQ,CACtCs7P,UAAWO,CAAAA,YAAY,CAAGntP,OAAQmtP,CAAAA,YAAY,CAC9CP,UAAWC,CAAAA,WAAW,CAAG7sP,OAAQ6sP,CAAAA,WAAW,CAC5CD,UAAWM,CAAAA,YAAY,CAAGltP,OAAQktP,CAAAA,YAAY,CAC9CN,UAAWQ,CAAAA,YAAY,CAAG,IAAIpzI,YAC9B4yI,CAAAA,UAAAA,CAAW7X,WAAW,CAAGoiB,WACzBvK,CAAAA,UAAAA,CAAWE,YAAY,CAAGvoH,YAC1BqoH,CAAAA,WAAWl1J,EAAE,CAAG+tS,SAChB,CAAA,IAAI,CAAC92V,IAAI,CAACi+M,UACZ,EAAA,CAmEF,CAEA,MAAM+7I,eAAwBnyY,SAAAA,YAAAA,CAoB5BkhC,SAAU,CACR,IAAI,CAACm4R,SAAS,CAACr6T,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACy6T,OAAO,CACvC,CAAA,IAAI,CAACJ,SAAS,CAACr6T,GAAG,CAAC,OAAS,CAAA,IAAI,CAAC4gH,QAAQ,CAAA,CACzC,IAAI,CAACwyR,cAAc,CAAC1tY,OAAO,CAAEq9B,EAC3B,EAAA,CAAA,IAAI,CAACs3R,SAAS,CAACr6T,GAAG,CAAC,CAAC,IAAI,EAAE+iC,EAAG,CAAA,CAAC,CAAE,IAAI,CAACswW,WAAW,EAClD,CACA,CAAA,CAAA,IAAI,CAACrzY,GAAG,CAAC,UACT,CAAA,CAAA,IAAI,CAACA,GAAG,CAAC,MACX,EAAA,CACAszY,qBAAsB5gL,CAAAA,KAAK,CAAE,CAC3B,OAAOA,KAAMliN,CAAAA,IAAI,GAAK,OAAA,EAAWkiN,KAAMqb,CAAAA,IAAI,EAAEnqO,GAAO8uN,EAAAA,KAAAA,CAAMqb,IAAI,CAACnqO,GAAG,EAAI8uN,MAAMqb,IAAI,CAACnqO,GAAG,CAACpJ,KAAK,CAAC,UAC7F,CACAy0O,IAAAA,CAAK7pG,IAAI,CAAE9kI,KAAK,CAAE,CAChB,GAAI,IAAI,CAAC49O,QAAQ,CAAE,CACjB,MACF,CACA,IAAI,CAACA,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACq1J,SAAS,CAAGnuQ,IACjB,CAAA,IAAI,CAAC+1L,MAAM,CAAG76T,KAAAA,CACd,IAAI,CAAC+5T,SAAS,CAACj6T,EAAE,CAAC,MAAA,CAAQ,IAAI,CAACq6T,OAAO,CAAE,IAAI,CAC5C,CAAA,IAAI,CAACJ,SAAS,CAACj6T,EAAE,CAAC,OAAS,CAAA,IAAI,CAACwgH,QAAQ,CAAE,IAAI,CAAA,CAC9C,IAAI4yR,aAAAA,CAAgB,KACpB,CAAA,IAAI,CAACziK,OAAO,CAACrrO,OAAO,CAAEgtN,KACpB,EAAA,CAAA,GAAI,CAACA,KAAMj0G,CAAAA,MAAM,CAAE,CACjB+0R,aAAgB,CAAA,IAAA,CAChB,GAAI,IAAI,CAACF,qBAAqB,CAAC5gL,KAAQ,CAAA,CAAA,CACrC,IAAI,CAAC2nG,SAAS,CAACnoF,WAAW,CAACxf,KAAAA,CAAMqb,IAAI,CAACnqO,GAAG,CAAE8uN,KAAAA,CAAMliN,IAAI,CAAE,CAAC5L,GAAK0tO,CAAAA,WAAAA,GAAAA,CAC3D,GAAI1tO,GAAAA,CAAK,CACP,IAAI,CAACg8G,QAAQ,CAACh8G,GAAK8tN,CAAAA,KAAAA,CAAAA,CACnB,MACF,CACA,IAAI,CAAC+nG,OAAO,CAAC/nG,KAAAA,EACf,CACF,EAAA,CACA,IAAI,CAAC+gL,cAAc,CAACpqY,GAAG,CAACqpN,KACxB,CAAA,CAAA,IAAI,CAAC2nG,SAAS,CAAChxT,GAAG,CAACqpN,KACrB,EAAA,CACF,GACA,IAAI,CAAC+gL,cAAc,CAAC/tY,OAAO,CAAC,KAC1B,EAAA,CAAA,GAAI,CAAC,IAAI,CAAC4tY,qBAAqB,CAAC5gL,KAAQ,CAAA,CAAA,CACtC,IAAI,CAAC2nG,SAAS,CAACprF,IAAI,CAACvc,KAAAA,EACtB,CACF,CAAA,CAAA,CACA,GAAI,CAAC8gL,eAAiB,IAAI,CAACJ,cAAc,CAACn1Y,IAAI,GAAK,EAAG,CACpD,IAAI,CAACy1Y,gBAAgB,GACvB,CACF,CACA35U,KAAAA,CAAMqrE,IAAI,CAAE9kI,KAAQ,CAAA,IAAI,CAAE,CACxB,GAAI,IAAI,CAACuxO,OAAO,CAAE,CAChBzsG,IAAAA,CAAKziI,IAAI,CAACrC,KAAAA,CAAOvI,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAACquN,OAAO,CAAA,EAC1C,CAAO,KAAA,CACL,IAAI,CAACvwO,IAAI,CAAC,MAAA,CAAQ,MAACswO,EAAAA,CACjB1rG,IAAKziI,CAAAA,IAAI,CAACrC,KAAOwwO,CAAAA,MAAAA,EACnB,CACF,EAAA,CACF,CACA4iK,gBAAAA,EAAmB,CACjB,GAAI,IAAI,CAAC7hK,OAAO,CAAE,OAClB,IAAI,CAACA,OAAO,CAAG,IACf,CAAA,IAAI,CAACwoF,SAAS,CAACr6T,GAAG,CAAC,MAAQ,CAAA,IAAI,CAACy6T,OAAO,CAAE,IAAI,CAAA,CAC7C,IAAI,CAACJ,SAAS,CAACr6T,GAAG,CAAC,OAAA,CAAS,IAAI,CAAC4gH,QAAQ,CAAE,IAAI,CAC/C,CAAA,GAAI,IAAI,CAAC+yR,OAAO,CAAC36Y,MAAM,CAAE,CACvB,GAAI,IAAI,CAACu6Y,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC5wY,IAAI,CAAC,IAAI,CAACw4T,MAAM,CAAE,6BAA8B,IAAI,CAACw4E,OAAO,EAC7E,CACA,IAAI,CAAC1xY,IAAI,CAAC,OAAA,CAAS,IAAI,CAAC0xY,OAAO,EACjC,MAAO,CACL,GAAI,IAAI,CAACJ,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC5wY,IAAI,CAAC,IAAI,CAACw4T,MAAM,EACjC,CACA,IAAI,CAACl5T,IAAI,CAAC,MAAA,CAAQlK,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAACquN,OAAO,CAAA,EAC3C,CACF,CACA0pF,OAAQ/nG,CAAAA,KAAK,CAAE,CACb,GAAI,IAAI,CAAC+gL,cAAc,CAACpyY,GAAG,CAACqxN,KAAAA,CAAAA,CAAQ,CAClC,IAAI,CAACzwN,IAAI,CAAC,UAAYywN,CAAAA,KAAAA,CAAAA,CACtB,IAAI,CAAC+gL,cAAc,CAAC7xY,MAAM,CAAC8wN,KAAAA,EAC7B,CACA,GAAI,IAAI,CAAC+gL,cAAc,CAACx1Y,IAAI,GAAK,CAAA,CAAG,CAClC66E,UAAAA,CAAW,KACT,IAAI,CAAC46T,gBAAgB,GACvB,CAAG,CAAA,CAAA,EACL,CACF,CACA9yR,QAAAA,CAASh8G,GAAG,CAAE8tN,KAAK,CAAE,CACnB,GAAI,IAAI,CAAC+gL,cAAc,CAACpyY,GAAG,CAACqxN,KAAQ,CAAA,CAAA,CAClC,IAAI,CAACihL,OAAO,CAAC95Y,IAAI,CAAC64N,KAAAA,CAAAA,CAClB,IAAI,CAAC+gL,cAAc,CAAC7xY,MAAM,CAAC8wN,KAC7B,EAAA,CACA,GAAI,IAAI,CAAC+gL,cAAc,CAACx1Y,IAAI,GAAK,CAAG,CAAA,CAClC66E,UAAW,CAAA,IAAA,CACT,IAAI,CAAC46T,gBAAgB,GACvB,CAAA,CAAG,CACL,EAAA,CACF,CACAL,WAAY3gL,CAAAA,KAAK,CAAE,CACjB,IAAI,CAAC0gL,cAAc,CAACxxY,MAAM,CAAC8wN,KAAAA,CAAAA,CAC3B,IAAI,CAACqe,OAAO,CAAC1nO,GAAG,CAACqpN,KAAAA,CAAAA,CACjB,GAAI,CAACA,MAAMj0G,MAAM,CAAE,CACjB,IAAI,CAACg1R,cAAc,CAACpqY,GAAG,CAACqpN,KACxB,CAAA,CAAA,IAAI,CAAC2nG,SAAS,CAACprF,IAAI,CAACvc,KACtB,EAAA,CACF,CACAkhL,aAAAA,CAAcjkK,OAAO,CAAE,CACrB,IAAI,CAACyjK,cAAc,CAAC/pY,GAAG,CAACsmO,OAAAA,CAAAA,CACxB,IAAI,CAAC0qF,SAAS,CAAC75T,IAAI,CAAC,CAAC,IAAI,EAAEmvO,OAAQ,CAAA,CAAC,CAAE,IAAI,CAAC0jK,WAAW,CAAE,IAAI,EAC9D,CA7HAvyY,WAAY+yY,CAAAA,SAAS,CAAEC,aAAa,CAAC,CACnC,KAAK,EAAI,CAAA,IAAI,CAAC/iK,OAAO,CAAG,IAAIjlO,IAAO,IAAI,CAAC2nY,cAAc,CAAG,IAAI3nY,GAAAA,CAAO,IAAI,CAACsnY,cAAc,CAAG,IAAItnY,GAAAA,CAAO,IAAI,CAACoyO,QAAQ,CAAG,KAAA,CAAO,IAAI,CAACrM,OAAO,CAAG,MAAO,IAAI,CAAC8hK,OAAO,CAAG,EACjK,CAAA,IAAI,CAACt5E,SAAS,CAAGy5E,aACjBD,CAAAA,SAAAA,CAAUnuY,OAAO,CAAEiD,CACjB,EAAA,CAAA,GAAIA,CAAamlO,YAAAA,KAAAA,CAAO,CACtB,GAAI,CAACnlO,CAAEqlO,CAAAA,QAAQ,CAAE,CACfrlO,EAAEqlO,QAAQ,CAAG8lK,cACf,CACA,IAAI,CAAC/iK,OAAO,CAAC1nO,GAAG,CAACV,CAAAA,EACnB,CAAO,KAAA,CACL,MAAM+pN,KAAAA,CAAQohL,aAAch5Y,CAAAA,GAAG,CAAC6N,CAAAA,CAAAA,CAChC,GAAI+pN,KAAAA,CAAO,CACT,IAAI,CAACqe,OAAO,CAAC1nO,GAAG,CAACqpN,OACnB,CAAO,KAAA,CACL,IAAI,CAACkhL,aAAa,CAACjrY,GACrB,CACF,CACF,CACF,EAAA,CA4GF,CAEA,MAAMylF,iBAAmB,IACzB,CAAA,MAAM2lT,oBAAuB,CAAA,GAC7B,CAAMC,MAAAA,KAAAA,CAuBJ9xW,SAAU,CACR,IAAI,CAAC2I,OAAO,CAAC3I,OAAO,GACtB,CACAvgC,KAAAA,CAAMswF,UAAU,CAAE,CAChB,KAAM,CAAEvzE,KAAK,CAAEC,MAAM,CAAE,CAAG,IAAI,CAACm4B,MAAM,CACrC,IAAI,CAACm9V,GAAG,CAACC,SAAS,CAAC,CAAG,CAAA,CAAA,CAAGx1X,KAAOC,CAAAA,MAAAA,CAChC,CAAA,IAAI,CAACs1X,GAAG,CAACE,SAAS,CAAGliT,UACrB,CAAA,IAAI,CAACgiT,GAAG,CAACG,QAAQ,CAAC,CAAG,CAAA,CAAA,CAAG11X,MAAOC,MACjC,EAAA,CA9BA7d,WAAYkiC,CAAAA,MAAM,CAAEtkB,KAAK,CAAEC,MAAM,CAAEtiB,IAAI,CAAC,CACtC,IAAI,CAACy6C,MAAM,CAAGjzC,QAASC,CAAAA,aAAa,CAAC,QAAA,CACrC,CAAA,IAAI,CAACgzC,MAAM,CAACp4B,KAAK,CAAGA,KACpB,CAAA,IAAI,CAACo4B,MAAM,CAACn4B,MAAM,CAAGA,MACrB,CAAA,IAAI,CAACksB,OAAO,CAAG,IAAInG,OAAQ1B,CAAAA,MAAAA,CAAQ,CACjC3mC,IAAAA,CAAMA,IACNwC,CAAAA,MAAAA,CAAQyzB,mBACR5T,KAAOA,CAAAA,KAAAA,CACPC,MAAQA,CAAAA,MAAAA,CACR4lB,OAAS,CAAA,IAAA,CACTkC,UAAWpW,2BACXuW,CAAAA,SAAAA,CAAW3W,aACX6W,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,sBACVsc,MAAQ,CAAA,CACN,IAAI,CAACsN,MAAM,CACZ,CAEH,CAAA,CAAA,IAAI,CAACm9V,GAAG,CAAG,IAAI,CAACn9V,MAAM,CAACwmB,UAAU,CAAC,IAAA,CAAM,CACtCrwD,KAAAA,CAAO,IACT,CAAA,EACF,CAUF,CACA,MAAMonY,UAAAA,SAAmBrzY,aAkBvB+zW,cAAe98I,CAAAA,IAAI,CAAE,CACnB,MAAMq8K,MAAAA,CAAS,IAAI,CAACC,kBAAkB,CAACt8K,IAAAA,CAAAA,CACvC,GAAIq8K,MAAAA,CAAOt7Y,MAAM,GAAK,IAAI,CAACm0S,KAAK,CAACn0S,MAAM,CAAE,CACvC,IAAI,CAACw7Y,YAAY,CAACF,MAAAA,CAAAA,CAClB,MACF,CACA,IAAI,IAAIv7Y,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIu7Y,OAAOt7Y,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,GAAIu7Y,MAAM,CAACv7Y,CAAE,CAAA,GAAK,IAAI,CAACo0S,KAAK,CAACp0S,EAAE,CAAE,CAC/B,IAAI,CAACy7Y,YAAY,CAACF,QAClB,MACF,CACF,CACF,CACAG,cAAex8K,CAAAA,IAAI,CAAE,CACnB,MAAMq8K,MAAS,CAAA,IAAI,CAACC,kBAAkB,CAACt8K,IACvC,CAAA,CAAA,MAAMy8K,WAAc,CAAA,EAAE,CACtB,IAAI,IAAI37Y,CAAI,CAAA,CAAA,CAAGA,CAAIu7Y,CAAAA,MAAAA,CAAOt7Y,MAAM,CAAED,IAAI,CACpC,MAAM2G,IAAO40Y,CAAAA,MAAM,CAACv7Y,CAAAA,CAAE,CACtB,GAAI,CAAC,IAAI,CAACga,IAAI,CAACo6R,KAAK,CAACztS,IAAAA,CAAK,CAAE,CAC1Bg1Y,WAAY76Y,CAAAA,IAAI,CAAC6F,IAAAA,EACnB,CACF,CACA,GAAIg1Y,WAAAA,CAAY17Y,MAAM,CAAG,EAAG,CAC1B,IAAI,CAACw7Y,YAAY,CAAC,IAAI,CAACrnG,KAAK,CAACz7O,MAAM,CAACgjV,WACtC,CAAA,EAAA,CACF,CACAxyW,OAAU,EAAA,CACR,IAAI,CAACyyW,OAAO,CAACjvY,OAAO,CAAEuxM,KAAQA,EAAAA,KAAAA,CAAM/0K,OAAO,EAAA,CAC3C,CAAA,IAAI,CAACirQ,KAAK,CAAG,IACb,CAAA,IAAI,CAACnwP,KAAK,CAAG,IACb,CAAA,IAAI,CAACjqC,IAAI,CAAG,IACZ,CAAA,IAAI,CAAC6hY,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACvlG,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACwlG,SAAS,CAAG,IACjB,CAAA,IAAI,CAACp6R,SAAS,CAAG,IACjB,CAAA,IAAI,CAACk6R,OAAO,CAAG,IACf,CAAA,IAAI,CAACnkY,IAAI,CAAG,IACZ,CAAA,IAAI,CAACskY,UAAU,CAAG,KACpB,CACAC,iBAAkB/3V,CAAAA,KAAK,CAAE/vC,KAAK,CAAE,CAC9B,IAAIglC,GACJ,CAAA,MAAM55C,EAAIC,IAAKmV,CAAAA,KAAK,CAAC,GAAA,CAAMuvC,KAAM3kD,CAAAA,CAAC,CAClC,CAAA,MAAMuU,CAAItU,CAAAA,IAAAA,CAAKmV,KAAK,CAAC,GAAMuvC,CAAAA,KAAAA,CAAMpwC,CAAC,CAClC,CAAA,MAAMhE,CAAItQ,CAAAA,IAAAA,CAAKmV,KAAK,CAAC,IAAMuvC,KAAMp0C,CAAAA,CAAC,CAClC,CAAA,GAAIqE,KAAO,CAAA,CACTglC,IAAM,CAAC,KAAK,EAAE55C,CAAAA,CAAE,EAAE,EAAEuU,EAAE,EAAE,EAAEhE,CAAE,CAAA,EAAE,EAAEo0C,KAAAA,CAAMr0C,CAAC,CAAC,CAAC,EAC3C,CAAO,KAAA,CACLspC,IAAM,CAAC,IAAI,EAAE55C,CAAAA,CAAE,EAAE,EAAEuU,EAAE,EAAE,EAAEhE,CAAE,CAAA,CAAC,EAC9B,CACA,OAAOqpC,GACT,CACA+iW,eAAAA,CAAgBh2T,OAAO,CAAEt/E,IAAI,CAAE0N,CAAC,CAAE0H,CAAC,CAAEkoC,KAAK,CAAE,CAC1CgiC,OAAAA,CAAQm1T,SAAS,CAAGn3V,KACpBgiC,CAAAA,OAAAA,CAAQi2T,QAAQ,CAACv1Y,IAAAA,CAAM0N,CAAG0H,CAAAA,CAAAA,EAC5B,CACAogY,SAAAA,CAAUt2Y,KAAK,CAAE,CACf,GAAIA,KAAAA,EAAS,IAAI,CAAC+1Y,OAAO,CAAC37Y,MAAM,CAAE,CAChC,IAAI,CAAC27Y,OAAO,CAAC/1Y,KAAAA,CAAM,CAAG,IAAIo1Y,KAAM,CAAA,IAAI,CAACjrK,GAAG,CAACpmM,cAAc,CAAE,IAAI,CAACjkB,KAAK,CAAE,IAAI,CAACC,MAAM,CAAE,CAAC,WAAW,EAAE,IAAI,CAACi2X,QAAQ,CAAC,CAAC,EAAEh2Y,MAAM,CAAC,EAC1H,CACA,OAAO,IAAI,CAAC+1Y,OAAO,CAAC/1Y,KAAAA,CAAM,CAE5B41Y,YAAaW,CAAAA,UAAU,CAAE,CACvB,IAAI,CAAChoG,KAAK,CAAGgoG,UAAAA,CACb,MAAM78X,CAAI,CAAA,IAAI,CAACoG,KAAK,CACpB,MAAM8N,EAAI,IAAI,CAAC7N,MAAM,CACrB,MAAMq+B,KAAAA,CAAQ,IAAI,CAAC+3V,iBAAiB,CAAC,IAAI,CAAC/3V,KAAK,CAAE,KACjD,CAAA,CAAA,MAAMr0C,CAAI,CAAA,IAAI,CAACq0C,KAAK,CAACr0C,CACrB,CAAA,IAAI,CAACq0C,KAAK,CAACr0C,CAAC,CAAG,CAAI,CAAA,GAAA,CACnB,MAAM4hI,WAAAA,CAAc,IAAI,CAACwqQ,iBAAiB,CAAC,IAAI,CAAC/3V,KAAK,CAAE,IACvD,CAAA,CAAA,IAAI,CAACA,KAAK,CAACr0C,CAAC,CAAGA,CAAAA,CACf,MAAMysY,UAAAA,CAAa,QACnB,CAAA,MAAMC,cAAgB,YACtB,CAAA,IAAIC,UAAa,CAAA,CAAA,CACjB,IAAIr+L,KAAAA,CAAQ,IAAI,CAACi+L,SAAS,CAACI,UAAAA,EAAAA,CAAAA,CAC3Br+L,KAAMt1M,CAAAA,KAAK,CAAC4oI,WAAAA,CACZ,CAAA,IAAI,CAACx3H,IAAI,CAAG,IAAI,CAACwiY,WAAW,CAAC,IAAI,CAACpoG,KAAK,CAAE,IAAI,CAACynG,QAAQ,CAAEt8X,CAAAA,CAAGkU,CAC3D,CAAA,CAAA,MAAMs3Q,QAAU9lS,MAAOsB,CAAAA,UAAU,CAAC,IAAI,CAAC6tS,KAAK,CAACv0S,IAAI,CAAC,EAClD,CAAA,CAAA,CAAA,IAAI0pT,SAAY,CAAA,CAAA,CAChB,IAAIkzF,UAAa,CAAA,CAAA,CACjB,MAAMC,OAAAA,CAAU,EAAC,CACjB,IAAI,IAAI18Y,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+qS,OAAQ9qS,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACrC,MAAM0G,EAAAA,CAAKqkS,OAAO,CAAC/qS,EAAE,CACrB08Y,OAAO,CAACh2Y,EAAG,CAAA,CAAG,IAAI,CAACi2Y,eAAe,CAACj2Y,EAAAA,CAAAA,CACnC6iT,SAAYhqT,CAAAA,IAAAA,CAAKoU,GAAG,CAAC41S,SAAAA,CAAWmzF,OAAO,CAACh2Y,EAAG,CAAA,CAACkf,MAAM,CAClD62X,CAAAA,UAAAA,CAAal9Y,IAAKoU,CAAAA,GAAG,CAAC8oY,UAAAA,CAAYC,OAAO,CAACh2Y,EAAAA,CAAG,CAACk2Y,OAAO,EACvD,CACA,IAAI,CAACd,SAAS,CAAGv8Y,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAACmoY,SAAS,CAAEvyF,SAAAA,CAAAA,CAC1C,MAAM3iS,EAAAA,CAAK,IAAI,CAACk1X,SAAS,CAAG,IAAI,CAACjwF,OAAO,CAAG,CAAA,CAC3C,MAAMhlS,EAAAA,CAAK,IAAI,CAACi1X,SAAS,CAAG,IAAI,CAACjwF,OAAO,CAAG,CAAA,CAC3C,MAAMgxF,QAAAA,CAAW,IAAI,CAACf,SAAS,CAAG,CAAA,CAAI,IAAI,CAACjwF,OAAO,CAClD,MAAMixF,QAAWj2X,CAAAA,EAAAA,CAAK41X,UAAa,CAAA,IAAI,CAAC5wF,OAAO,CAC/C,IAAIhZ,EAAAA,CAAK,CACT,CAAA,IAAIC,GAAK,CACT,CAAA,IAAI,IAAI9yS,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+qS,QAAQ9qS,MAAM,CAAED,CAAI,EAAA,CAAA,CACrC,MAAM0G,EAAAA,CAAKqkS,OAAO,CAAC/qS,CAAAA,CAAE,CACrB,MAAMsF,IAAOL,CAAAA,MAAAA,CAAOgB,YAAY,CAAC8kS,OAAO,CAAC/qS,CAAAA,CAAE,CAC3C,CAAA,IAAI+8Y,GAAK,IAAI,CAACzmG,QACdp4F,CAAAA,KAAAA,CAAMg9L,GAAG,CAACttG,IAAI,CAAG,CAAC,EAAE,IAAI,CAACmuG,UAAU,CAAC,CAAC,EAAEgB,EAAGr9Y,CAAAA,QAAQ,GAAG,GAAG,EAAE,IAAI,CAACm8Y,QAAQ,CAAC,CAAC,CACzE39L,KAAMg9L,CAAAA,GAAG,CAAC8B,SAAS,CAAGX,UACtBn+L,CAAAA,KAAMg9L,CAAAA,GAAG,CAAC+B,YAAY,CAAGX,aACzB,CAAA,IAAI32X,KAAQu4L,CAAAA,KAAAA,CAAMg9L,GAAG,CAACgC,WAAW,CAACx2Y,EAAIif,CAAAA,CAAAA,KAAK,CAC3C,GAAIA,KAAQo3X,CAAAA,EAAAA,CAAI,CACdA,EAAK,CAAA,IAAI,CAACzmG,QAAQ,CAAG,IAAI,CAACA,QAAQ,CAAG3wR,KACrCu4L,CAAAA,KAAMg9L,CAAAA,GAAG,CAACttG,IAAI,CAAG,CAAC,EAAE,IAAI,CAACmuG,UAAU,CAAC,CAAC,EAAEgB,EAAAA,CAAGr9Y,QAAQ,EAAA,CAAG,GAAG,EAAE,IAAI,CAACm8Y,QAAQ,CAAC,CAAC,CACzEl2X,KAAQ,CAAA,IAAI,CAAC2wR,SAAQ,CAEvB,IAAI,CAAC2lG,eAAe,CAAC/9L,KAAAA,CAAMg9L,GAAG,CAAEx0Y,EAAImsS,CAAAA,EAAAA,CAAKgqG,QAAU/pG,CAAAA,EAAAA,CAAKgqG,QAAU74V,CAAAA,KAAAA,CAAAA,CAClE,MAAMmpP,OAAAA,CAAU,IAAI,CAACye,OAAO,CAAI,CAAA,IAAI,CAACiwF,SAAS,CAAGn2X,KAAI,EAAK,CAC1D,CAAA,MAAM0nR,QAAU,CAAC,IAAI,CAACwe,OAAO,CAAG6wF,OAAO,CAACh2Y,EAAG,CAAA,CAACk2Y,OAAO,CAAGH,UACtD,CAAA,MAAMtvG,SAAWxnR,KACjB,CAAA,IAAI,CAACw3X,QAAQ,CAAC,IAAI,CAACnjY,IAAI,CAAEtT,EAAIpB,CAAAA,IAAAA,CAAMutS,EAAIC,CAAAA,EAAAA,CAAIlsR,GAAIC,EAAIumR,CAAAA,OAAAA,CAASC,OAASF,CAAAA,QAAAA,CAAUovG,UAAa,CAAA,CAAA,CAAGh9X,CAAGkU,CAAAA,CAAAA,CAAAA,CAClGo/Q,EAAMjsR,EAAAA,EAAAA,CACN,GAAIisR,EAAAA,CAAKjsR,EAAKrH,CAAAA,CAAAA,CAAG,CACfszR,EAAK,CAAA,CAAA,CACLC,EAAMjsR,EAAAA,EAAAA,CACN,GAAIisR,EAAAA,CAAKjsR,GAAK4M,CAAG,CAAA,CACfyqL,KAAQ,CAAA,IAAI,CAACi+L,SAAS,CAACI,UACvBr+L,EAAAA,CAAAA,CAAAA,KAAAA,CAAMt1M,KAAK,CAAC4oI,WACZshK,CAAAA,CAAAA,EAAAA,CAAK,EACP,CACF,CACF,CACA,IAAI,CAAC8oG,OAAO,CAAC9yY,MAAM,CAACyzY,UAAY5vY,CAAAA,CAAAA,OAAO,CAAEuxM,OAAQA,KAAM/0K,CAAAA,OAAO,EAC9D,CAAA,CAAA,IAAI,CAACyyW,OAAO,CAACjvY,OAAO,CAAC,KAACuxM,EAAQA,KAAMpsK,CAAAA,OAAO,CAAC3F,MAAM,EAAA,CAAA,CAClD,IAAI,CAACjjC,IAAI,CAAC,UACZ,CACAszY,WAAAA,CAAYpoG,KAAK,CAAEynG,QAAQ,CAAEl2X,KAAK,CAAEC,MAAM,CAAE,CAC1C,MAAMkrD,IAAAA,CAAO,CACX,SAAW,CAAA,CAAA,CACX,WAAa,CAAA,IAAI,CAAC4wC,SAAS,CAC3B,MAAQ,CAAA,CACN,MAAQm6R,CAAAA,QAAAA,CACR,OAASl2X,CAAAA,KAAAA,CACT,SAAUC,MACV,CAAA,MAAA,CAAQ,CACN,CACE,OAASD,CAAAA,KAAAA,CACT,SAAUC,MACZ,CAAA,CACD,CACH,CACA,OAAS,CAAA,EACX,CACA,CAAA,OAAOkrD,IACT,CACAqsU,QAAS/qG,CAAAA,IAAI,CAAEzrS,IAAI,CAAEuyG,QAAQ,CAAE7kG,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE25Q,OAAO,CAAEC,OAAO,CAAEF,QAAQ,CAAEiwG,MAAM,CAAEC,IAAI,CAAEC,IAAI,CAAE,CACzF,GAAIlrG,IAAKn1Q,CAAAA,IAAI,CAAC4kG,IAAI,CAAC5hI,MAAM,CAAGm9Y,MAAS,CAAA,CAAA,CAAG,CACtChrG,IAAKn1Q,CAAAA,IAAI,CAAC4kG,IAAI,CAAC/gI,IAAI,CAAC,CAClB,OAAA,CAASu8Y,IACT,CAAA,QAAA,CAAUC,IACZ,CAAA,EACF,CACA,MAAMh7X,KAAAA,CAAQ,IAAI,CAACg0R,QAAQ,CAAG,EAC9BlE,CAAAA,IAAAA,CAAKgC,KAAK,CAACztS,IAAK,CAAA,CAAG,CACjB,IAAMuyG,CAAAA,QAAAA,CACN,QAAUvyG,CAAAA,IAAAA,CACV,GAAK0N,CAAAA,CAAAA,CACL,IAAK0H,CACL,CAAA,OAAA,CAASwD,CACT,CAAA,QAAA,CAAUkU,CACV,CAAA,UAAA,CAAY05Q,SAAW7qR,KACvB,CAAA,SAAA,CAAW8qR,OAAU9qR,CAAAA,KAAAA,CACrB,SAAW,CAAC+qR,CAAAA,OAAU,CAAA,IAAI,CAACwe,OAAO,EAAIvpS,MACtC,OAASA,CAAAA,KAAAA,CACT,OAAS,CAAA,CAAA,CACT,KAAO86X,CAAAA,MAAAA,CACP,SAAU,CACR,CAAA,CACA,CACA79X,CAAAA,CAAAA,CAAI+C,KACJmR,CAAAA,CAAAA,CAAInR,MACL,EAEL,CACAk5X,kBAAAA,CAAmBt8K,IAAI,CAAE,CACvB,MAAMwvE,oBAAuB,CAAA,IAAI,CAAC1+D,GAAG,CAACgR,OAAO,CAACrlM,OAAO,CAACgzP,mBAAmB,EAAA,CACzE,GAAID,oBAAAA,CAAsB,CACxBxvE,IAAOwvE,CAAAA,oBAAAA,CAAqBxvE,IAC9B,EAAA,CACA,MAAM32N,GAAAA,CAAM,EACZ,CAAA,MAAMwiS,OAAU9lS,CAAAA,MAAAA,CAAOsB,UAAU,CAAC24N,MAClC,IAAI,IAAIl/N,CAAI,CAAA,CAAA,CAAGA,CAAI+qS,CAAAA,OAAAA,CAAQ9qS,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACrC,MAAM0G,EAAKqkS,CAAAA,OAAO,CAAC/qS,CAAE,CAAA,CACrB,GAAIuI,GAAG,CAAC7B,EAAAA,CAAG,CAAE,SACb6B,GAAG,CAAC7B,EAAG,CAAA,CAAGA,GACZ,CACA,MAAM0tS,KAAQvyS,CAAAA,MAAAA,CAAOoW,IAAI,CAAC1P,KAC1B,OAAO6rS,KAAAA,CAAMlkS,IAAI,EACnB,CACAysY,eAAAA,CAAgBz9K,IAAI,CAAE,CACpB,MAAMq+K,QAAAA,CAAWzyY,QAASC,CAAAA,aAAa,CAAC,MACxCwyY,CAAAA,CAAAA,QAASvzW,CAAAA,EAAE,CAAG,cACduzW,CAAAA,QAASC,CAAAA,SAAS,CAAGt+K,IAAAA,CACrB,MAAM7kK,KAAAA,CAAQvvD,SAASC,aAAa,CAAC,KACrCsvD,CAAAA,CAAAA,KAAMrwB,CAAAA,EAAE,CAAG,eACXqwB,CAAAA,KAAMspG,CAAAA,KAAK,CAACw7D,OAAO,CAAG,cACtB9kK,CAAAA,KAAMspG,CAAAA,KAAK,CAACh+I,KAAK,CAAG,KACpB00C,CAAAA,KAAAA,CAAMspG,KAAK,CAAC/9I,MAAM,CAAG,MACrB,MAAM7I,GAAAA,CAAMjS,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CACnCgS,IAAI3R,WAAW,CAACmyY,QAChBxgY,CAAAA,CAAAA,GAAAA,CAAI3R,WAAW,CAACivD,MAChBt9C,CAAAA,GAAAA,CAAI4mJ,KAAK,CAACiqI,IAAI,CAAG,CAAC,EAAE,IAAI,CAAC0I,QAAQ,CAAC,GAAG,EAAE,IAAI,CAACulG,QAAQ,CAAC,CAAC,CACtD,MAAM1wY,IAAOL,CAAAA,QAAAA,CAASK,IAAI,CAC1BA,IAAKC,CAAAA,WAAW,CAAC2R,GACjB,CAAA,CAAA,IAAI0gY,MAAS,CAAA,CAAC,CACd,CAAA,IAAIb,OAAU,CAAA,CAAC,CACf,CAAA,IAAIh3X,MAAS,CAAA,CAAC,CACd,CAAA,GAAI,CACFy0C,KAAMspG,CAAAA,KAAK,CAAC,gBAAA,CAAiB,CAAG,UAAA,CAChC85O,OAASpjV,KAAM4pD,CAAAA,SAAS,CAAGs5R,QAAAA,CAASt5R,SACpC5pD,CAAAA,KAAMspG,CAAAA,KAAK,CAAC,gBAAA,CAAiB,CAAG,QAAA,CAChC/9I,OAASy0C,KAAM4pD,CAAAA,SAAS,CAAGs5R,QAAAA,CAASt5R,SAAS,CAC7C24R,QAAUh3X,MAAS63X,CAAAA,OACrB,CAAS,OAAA,CACP3yY,QAASK,CAAAA,IAAI,CAACk9I,WAAW,CAACtrI,GAC5B,EAAA,CACA,OAAO,CACL0gY,OAAQA,MACRb,CAAAA,OAAAA,CAASA,OACTh3X,CAAAA,MAAAA,CAAQA,MACV,CACF,CACA,IAAIgmB,QAAW,EAAA,CACb,OAAO,IAAI,CAACgwW,OAAO,CAAC/0Y,GAAG,CAAC,KAACq3M,EAAQA,KAAMpsK,CAAAA,OAAO,CAChD,CAjPA/pC,WAAAA,CAAYioO,GAAG,CAAEv+N,OAAU,CAAA,EAAE,CAAC,CAC5B,KAAK,EACL,CAAA,IAAI,CAACgG,IAAI,CAAG,QACZ,CAAA,IAAI,CAACu4N,GAAG,CAAGA,GACX,CAAA,IAAI,CAACtuH,SAAS,CAAG,CACjB,CAAA,IAAI,CAACq6R,UAAU,CAAGtqY,QAAQsqY,UAAU,EAAI,QACxC,CAAA,IAAI,CAACzlG,QAAQ,CAAGpgS,QAAAA,CAASzE,OAAQ6kS,CAAAA,QAAQ,CAAE,EAAA,CAC3C,CAAA,IAAI,CAACwlG,SAAS,CAAG,IAAI,CAACxlG,QAAQ,CAC9B,IAAI,CAACulG,QAAQ,CAAGpqY,QAAQoqY,QAAQ,EAAI,OACpC,CAAA,IAAI,CAAC53V,KAAK,CAAGxyC,OAAAA,CAAQwyC,KAAK,EAAI,IAAI5uC,KAAAA,CAAM,EAAG,CAAG,CAAA,CAAA,CAC9C,CAAA,IAAI,CAACw2S,OAAO,CAAGp6S,OAAQo6S,CAAAA,OAAO,EAAI,CAClC,CAAA,IAAI,CAAClmS,KAAK,CAAGpmB,IAAKmU,CAAAA,GAAG,CAAC2hF,gBAAAA,CAAkB5jF,OAAQkU,CAAAA,KAAK,EAAIq1X,oBAAAA,CACzD,CAAA,IAAI,CAACp1X,MAAM,CAAGrmB,IAAKmU,CAAAA,GAAG,CAAC2hF,gBAAAA,CAAkB5jF,OAAQmU,CAAAA,MAAM,EAAIo1X,oBAC3D,CAAA,CAAA,IAAI,CAACY,OAAO,CAAG,EAAE,CACjB,IAAI,CAACxnG,KAAK,CAAG,EACb,CAAA,IAAI,CAACp6R,IAAI,CAAG,GACd,CAkOF,CAEA,MAAM0jY,mBAAAA,CAAsB,EAAE,CAC9B,MAAMlrP,MAAS,CAAA,CACb,EAAE,CACF,EAAE,CACF,EAAE,CAEJ,CAAMmrP,MAAAA,gBAAAA,SAAyB/yS,UAK7BzhE,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACm7H,cAAc,CAAC33J,OAAO,CAAC,EAC1BohK,EAAAA,CAAAA,EAAAA,CAAGx7H,oBAAoB,CAACpJ,OAAO,EAAA,CAC/B4kI,GAAG5kI,OAAO,GACZ,CACA,CAAA,CAAA,IAAI,CAACm7H,cAAc,CAACrkK,MAAM,CAAG,EAC/B,CACAmzC,MAAAA,CAAO6/F,MAAM,CAAEvO,KAAK,CAAEC,MAAM,CAAEllB,OAAO,CAAE,CACrC,IAAI,CAACwzB,MAAM,CAAGA,MACd,CAAA,IAAI,CAACvO,KAAK,CAAGA,KACb,CAAA,IAAI,CAACC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACllB,OAAO,CAAGA,OAAAA,CACf,GAAIilB,KAAAA,CAAMq4B,wBAAwB,CAAE,CAClC,IAAI,CAAC6gP,kBAAkB,CAAG,IAAI,CAACl7P,QAAQ,CAACylB,sBAAsB,CAACpC,MAAK,CAExE,CACAx6D,OAAU,EAAA,CACR,MAAMthE,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,KAAM,CAAEy4G,QAAQ,CAAEzP,MAAM,CAAEvO,KAAK,CAAEC,MAAM,CAAEllB,OAAO,CAAEhhE,YAAY,CAAE,CAAG,IAAI,CACvE,MAAMo/V,SAAAA,CAAYn5Q,MAAMC,MAAM,CAAC+8B,SAAS,CACxC,MAAMggB,eAAAA,CAAkBh9C,MAAMC,MAAM,CAAC+8C,eAAe,CACpD,MAAM5O,aAAAA,CAAgBpuC,MAAMC,MAAM,CAACkuC,YAAY,CAC/C,IAAI,IAAI7yK,EAAI,CAAGA,CAAAA,CAAAA,CAAI69Y,SAAU59Y,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACvC,MAAM89Y,QAAAA,CAAWD,SAAS,CAAC79Y,CAAE,CAAA,CAC7B,GAAI2kI,MAAUA,EAAAA,MAAAA,CAAO17H,OAAO,CAAC60Y,QAAY,CAAA,CAAA,CAAA,CAAG,CAC1C,QACF,CACA,GAAIA,QAAAA,CAASjrY,OAAO,EAAI6uK,eAAe,CAAC1hL,CAAAA,CAAE,CAAE,CAC1C,GAAI89Y,QAAAA,CAASz+N,UAAU,CAAC/2K,GAAG,CAAC2qI,MAAAA,CAAOA,MAAM,CAAA,CAAG,CAC1C,MAAMzB,WAAcshC,CAAAA,aAAa,CAAC9yK,CAAAA,CAAE,CACpC,GAAI89Y,SAAS/9P,iBAAiB,CAAE,CAC9B2C,QAAAA,CAAS95I,KAAK,CAACqqI,OAAOA,MAAM,CAAE,KAAO,CAAA,IAAA,CAAM,KAC7C,EAAA,CACA,MAAM1N,aAAgBu4Q,CAAAA,QAAAA,CAASv4Q,aAAa,CAC5C,IAAI,IAAIh/C,EAAI,CAAGA,CAAAA,CAAAA,CAAIg/C,aAActlI,CAAAA,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC3C,MAAMq+C,YAAAA,CAAeW,aAAa,CAACh/C,CAAE,CAAA,CACrC,GAAIq+C,YAAauQ,CAAAA,IAAI,EAAIvQ,YAAAA,CAAa4M,WAAW,GAAKA,YAAa,CACjEksQ,mBAAAA,CAAoB58Y,IAAI,CAAC8jI,YACzBnlB,CAAAA,CAAAA,OAAAA,CAAQl3G,GAAG,CAACq8H,YAAa56F,CAAAA,EAAE,CAAE46F,YAAAA,EAC/B,CACF,CACA,GAAI84Q,mBAAoBz9Y,CAAAA,MAAM,CAAG,CAAA,CAAG,CAClC,MAAM88J,yBAA2Br4B,KAAMq4B,CAAAA,wBAAwB,CAC/D,GAAIA,wBAA0B,CAAA,CAC5B,MAAMqJ,aAAgB,CAAA,IAAI,CAACw3O,kBAAkB,CAC7Cx3O,aAAAA,CAAcxS,QAAQ,GACxB,CACAlR,QAAS0hB,CAAAA,iBAAiB,CAACnxB,MAAAA,CAAOA,MAAM,CAAEx0F,YAAAA,CAAAA,CAC1C,GAAIxU,MAAAA,CAAO4Z,sBAAsB,CAAE,CACjC6+F,QAAS2hB,CAAAA,uBAAuB,CAAC,IAAI,CAACC,cAAc,CAAE5hB,QAAS9iB,CAAAA,iBAAiB,CAAE8iB,QAAAA,CAAS7iB,mBAAmB,CAAE,IAClH,EAAA,CACA6iB,QAASm3B,CAAAA,aAAa,CAAC5mC,MAAAA,CAAOA,MAAM,CAAEx0F,aAAci/V,mBAAqBlrP,CAAAA,MAAAA,CAAQ71B,WAAa,CAACiI,YAC7F36F,EAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,UAAAA,CAAWoB,OAAO,EACzC,CACAunW,CAAAA,CAAAA,oBAAoBz9Y,MAAM,CAAG,EAC/B,CACF,CACF,CACF,CACF,CA/DA8H,WAAAA,CAAYkiC,MAAM,CAAEy4G,QAAQ,CAAC,CAC3B,KAAK,CAACz4G,MAAS,CAAA,CAAA,IAAI,CAACq6H,cAAc,CAAG,EACrC,CAAA,IAAI,CAAC5hB,QAAQ,CAAGA,SAClB,CA6DF,CAEA,MAAMq7P,OAAU,CAAA,IAAIhrY,IACpB,MAAM8rI,KAAAA,CAAQ,IAAI18H,IAClB,CAAM67X,MAAAA,MAAAA,CAeJC,aAAa5pY,CAAC,CAAE0H,CAAC,CAAE4J,KAAQ,CAAA,CAAC,CAAEC,MAAS,CAAA,CAAC,CAAE,CACxC,MAAMqkB,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,GAAIA,MAAO2E,CAAAA,QAAQ,CAAE,CACnB,OAAO,EACT,CACA7yB,CAAAA,CAAI,IAAI,CAAC0iC,YAAY,CAAC74B,MAAM,EAAI7J,EAAI6J,MAAK,CAAA,CACzC,MAAM67B,IAAAA,CAAO,IAAI,CAACy8V,YAAY,CAAC7pY,CAAAA,CAAG0H,CAAG4J,CAAAA,KAAAA,CAAOC,MAC5CqkB,CAAAA,CAAAA,MAAAA,CAAO0V,eAAe,CAAC,IAAI,CAAClB,YAAY,CAAA,CACxCxU,MAAOuwD,CAAAA,WAAW,GAClB,MAAMtoD,MAAAA,CAAS,IAAInlC,UAAAA,CAAW,CAAI00C,CAAAA,IAAAA,CAAKvlC,CAAC,CAAGulC,IAAAA,CAAKliC,CAAC,CAAA,CACjD0qB,MAAO40D,CAAAA,UAAU,CAACp9C,IAAKptC,CAAAA,CAAC,CAAEotC,IAAAA,CAAK1lC,CAAC,CAAE0lC,KAAKvlC,CAAC,CAAEulC,IAAKliC,CAAAA,CAAC,CAAE2yB,MAAAA,CAAAA,CAClDjI,OAAOmxD,SAAS,EAAA,CAChB,OAAO,IAAI,CAAC+iT,YAAY,CAACjsW,MAAQ,CAAA,IAAI,CAACutE,OAAO,CAC/C,CACA2+R,kBAAkB/pY,CAAC,CAAE0H,CAAC,CAAE4J,KAAQ,CAAA,CAAC,CAAEC,MAAS,CAAA,CAAC,CAAE,CAC7C,GAAI,IAAI,CAACqkB,MAAM,EAAEoZ,QAAU,CAAA,CACzBtnC,CAAI,CAAA,IAAI,CAAC0iC,YAAY,CAAC74B,MAAM,EAAI7J,CAAAA,CAAI6J,MAAK,EAC3C,CACA,MAAM67B,IAAAA,CAAO,IAAI,CAACy8V,YAAY,CAAC7pY,CAAAA,CAAG0H,CAAG4J,CAAAA,KAAAA,CAAOC,MAC5C,CAAA,CAAA,OAAO,IAAI,CAAC64B,YAAY,CAACoH,WAAW,CAAC5c,IAAI,CAACwY,IAAKptC,CAAAA,CAAC,CAAEotC,IAAAA,CAAK1lC,CAAC,CAAE0lC,KAAKvlC,CAAC,CAAEulC,IAAKliC,CAAAA,CAAC,CAAE,CACxEk/B,YAAc,CAAA,IAAI,CAACA,YAAY,CAC/B2L,SAAAA,CAAW,IACb,CAAA,CAAA,CAAGn+C,IAAI,CAAEimC,MACP,EAAA,CAAA,OAAO,IAAI,CAACisW,YAAY,CAACjsW,MAAAA,CAAQ,IAAI,CAACutE,OAAO,CAC/C,EACF,CACAy+R,YAAAA,CAAa7pY,CAAC,CAAE0H,CAAC,CAAE4J,KAAK,CAAEC,MAAM,CAAE,CAChC,MAAMyjS,QAAAA,CAAW,IAAI,CAAC5qQ,YAAY,CAAC94B,KAAK,CACxC,MAAM4jS,UAAY,IAAI,CAAC9qQ,YAAY,CAAC74B,MAAM,CAC1CvR,EAAIhB,IAAKI,CAAAA,KAAK,CAAClU,IAAAA,CAAKmQ,KAAK,CAAC2E,GAAI,CAAGg1S,CAAAA,QAAAA,CAAW,CAC5CttS,CAAAA,CAAAA,CAAAA,CAAI1I,IAAKI,CAAAA,KAAK,CAAClU,IAAKmQ,CAAAA,KAAK,CAACqM,CAAAA,CAAAA,CAAI,CAAGwtS,CAAAA,SAAAA,CAAY,GAC7C5jS,KAAQpmB,CAAAA,IAAAA,CAAKmQ,KAAK,CAACnQ,IAAKoU,CAAAA,GAAG,CAACgS,KAAO,CAAA,CAAA,CAAA,CAAA,CACnCA,KAAQpmB,CAAAA,IAAAA,CAAKmU,GAAG,CAACiS,MAAO0jS,QAAWh1S,CAAAA,CAAAA,CAAAA,CACnCuR,MAASrmB,CAAAA,IAAAA,CAAKmQ,KAAK,CAACnQ,KAAKoU,GAAG,CAACiS,MAAQ,CAAA,CAAA,CAAA,CAAA,CACrCA,MAASrmB,CAAAA,IAAAA,CAAKmU,GAAG,CAACkS,MAAAA,CAAQ2jS,SAAYxtS,CAAAA,CAAAA,CAAAA,CACtC,OAAO8iI,KAAAA,CAAMt2I,GAAG,CAAC8L,CAAAA,CAAG0H,CAAG4J,CAAAA,KAAAA,CAAOC,MAChC,CAAA,CACAu4X,YAAajsW,CAAAA,MAAM,CAAEutE,OAAO,CAAE,CAC5B,MAAM4+R,SAAAA,CAAY,EAAE,CACpB,GAAI,IAAI,CAACC,WAAW,CAAE,CACpB,MAAMt+V,KAAAA,CAAQ9N,MAAOjyC,CAAAA,MAAM,CAC3B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAK,EAAA,CAAA,CAAE,CAC/B,MAAMV,CAAAA,CAAI4yC,MAAM,CAAClyC,CAAI,CAAA,CAAA,CAAE,CACvB,MAAM6T,CAAAA,CAAIq+B,MAAM,CAAClyC,CAAI,CAAA,CAAA,CAAE,CACvB,MAAM6P,CAAAA,CAAIqiC,MAAM,CAAClyC,CAAI,CAAA,CAAA,CAAE,CACvB,MAAM4P,CAAAA,CAAIsiC,MAAM,CAAClyC,CAAI,CAAA,CAAA,CAAE,CACvB,MAAM6F,KAAQ,CAAC+J,CAAAA,CAAAA,EAAK,EAAKtQ,CAAAA,CAAAA,EAAK,GAAKuU,CAAK,EAAA,CAAA,CAAIhE,CAAAA,IAAO,CACnD,CAAA,GAAIhK,QAAU,UAAY,CAAA,CACxBk4Y,OAAQztY,CAAAA,GAAG,CAACmvG,OAAAA,CAAQ19G,GAAG,CAAC8D,KAAAA,CAAAA,EAC1B,CACF,CACAk4Y,OAAQpxY,CAAAA,OAAO,CAAC,YAACi4H,EAAAA,CACf,GAAIA,YAAAA,CAAc,CAChBy5Q,SAAAA,CAAUv9Y,IAAI,CAAC8jI,YAAAA,EACjB,CACF,CAAA,CAAA,CACAm5Q,OAAQn1Y,CAAAA,KAAK,GACf,CACA,OAAOy1Y,SACT,CACAtiQ,oBAAuB,EAAA,CACrB,MAAMl2F,WAAc,CAAA,IAAIla,OAAQ,CAAA,IAAI,CAAC1B,MAAM,CAAE,CAC3CnkC,MAAQ4yB,CAAAA,iBAAAA,CACR/S,KAAO,CAAA,IAAI,CAACA,KAAK,CACjBC,MAAQ,CAAA,IAAI,CAACA,MAAM,CACnB4lB,OAAAA,CAAS,MACTkC,SAAWzW,CAAAA,cAAAA,CACX4W,SAAW5W,CAAAA,cAAAA,CACX8W,QAAU5Z,CAAAA,qBAAAA,CACV8Z,SAAU9Z,qBACV7wB,CAAAA,IAAAA,CAAM,MACR,CAAA,CACA,CAAA,IAAI,CAACm7C,YAAY,CAAG,IAAI8G,YAAAA,CAAa,CACnCM,WAAAA,CAAaA,YACb7a,KAAO,CAAA,IACT,CACF,EAAA,CACAywG,mBAAsB,EAAA,CACpB,GAAI,IAAI,CAACh9F,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAACiH,qBAAqB,EAAA,CACvC,IAAI,CAACjH,YAAY,CAACtV,OAAO,EACzB,CAAA,IAAI,CAACsV,YAAY,CAAG,KACtB,CACF,CACA85F,OAAQtF,CAAAA,MAAM,CAAEvO,KAAK,CAAEC,MAAM,CAAE,CAC7B,GAAIA,kBAAkBq4C,KAAO,CAAA,CAC3Br4C,MAAS,CAAA,CACPA,MACD,EACH,CACA,GAAI,CAAC,IAAI,CAAClmF,YAAY,EAAI,IAAI,CAAC94B,KAAK,GAAK,IAAI,CAAC84B,YAAY,CAAC94B,KAAK,EAAI,IAAI,CAACC,MAAM,GAAK,IAAI,CAAC64B,YAAY,CAAC74B,MAAM,CAAE,CAC5G,IAAI,CAAC61H,mBAAmB,EAAA,CACxB,IAAI,CAACM,oBAAoB,GAC3B,CACA,IAAI,CAACt8B,OAAO,CAAC72G,KAAK,EAAA,CAClB,MAAMq5C,UAAa,CAAA,IAAI,CAACA,UAAU,CAClCA,UAAAA,CAAW7B,IAAI,CAAC,IAAI,CAAC3B,YAAY,CACjCwD,CAAAA,WAAWiR,QAAQ,CAACE,UAAU,CAAG/9C,KAAM2B,CAAAA,KAAK,CAC5CirC,UAAAA,CAAWiR,QAAQ,CAACtqD,KAAK,CAAG,IAC5Bq5C,CAAAA,UAAAA,CAAWyR,eAAe,CAACG,UAAU,CAAG,KACxC5R,UAAW7O,CAAAA,MAAM,CAAC6/F,MAAAA,CAAQvO,KAAOC,CAAAA,MAAAA,CAAQ,IAAI,CAACllB,OAAO,CACrDx9D,CAAAA,UAAAA,CAAW+pD,MAAM,GACnB,CACAx/D,MAAO7mB,CAAAA,KAAK,CAAEC,MAAM,CAAE,CACpB,IAAI,CAACD,KAAK,CAAGpmB,IAAAA,CAAKmQ,KAAK,CAACiW,MACxB,CAAA,IAAI,CAACC,MAAM,CAAGrmB,IAAAA,CAAKmQ,KAAK,CAACkW,MAAAA,EAC3B,CAxHA7d,WAAAA,CAAYioO,GAAG,CAAErqN,KAAK,CAAEC,MAAM,CAAC,CAC7B,IAAI,CAAC64B,YAAY,CAAG,IACpB,CAAA,IAAI,CAACghE,OAAO,CAAG,IAAIr3G,GACnB,CAAA,IAAI,CAACk2Y,WAAW,CAAG,IACnB,CAAA,IAAI,CAAC57P,QAAQ,CAAGstF,GAAAA,CAAIttF,QAAQ,CAC5B,IAAI,CAACz4G,MAAM,CAAG+lM,IAAIpmM,cAClB,CAAA,IAAI,CAACqY,UAAU,CAAG,IAAI07V,gBAAAA,CAAiB,IAAI,CAAC1zW,MAAM,CAAE+lM,IAAIttF,QAAQ,CAChE,CAAA,IAAI,CAAC/8H,KAAK,CAAG,CACb,CAAA,IAAI,CAACC,MAAM,CAAG,EACd,IAAI,CAAC4mB,MAAM,CAAC7mB,KAAOC,CAAAA,MAAAA,CAAAA,CACnB,IAAI,CAACqkB,MAAM,CAAC5iC,EAAE,CAAC,SAAA,CAAW,KACxB,IAAI,CAACi3Y,WAAW,CAAG,MACrB,CAAA,EACF,CA4GF,CAEA,MAAMC,oBAA6BjhK,SAAAA,eAAAA,CAIjCpH,IAAKrrO,CAAAA,GAAG,CAAEvD,QAAQ,CAAE,CAClBgmX,UAAAA,CAAWp3I,IAAI,CAACrrO,IAAK,IAAI,CAACw7G,UAAU,CAAE/+G,QACxC,EAAA,CACA+/G,KAAKx8G,GAAG,CAAEmP,IAAI,CAAE,CACd,OAAOA,KAAK4hM,QACd,CARA7zM,WAAAA,CAAYioO,GAAG,CAAC,CACd,KAAK,CAACA,GAAK,CAAA,eAAA,EACb,CAOF,CAEA,IAAIwuK,OAASC,CAAAA,OAAAA,CACb,MAAMC,IAAAA,CAAO,IAAIziY,IAAAA,CACjB,MAAM0iY,IAAAA,CAAO,IAAI1iY,IAAAA,CACjB,MAAM2iY,IAAAA,CAAO,IAAI/rX,GAAAA,CACjB,MAAMgsX,IAAO,CAAA,IAAIhsX,GACjB,CAAA,MAAMisX,IAAO,CAAA,IAAIjsX,GACjB+rX,CAAAA,IAAAA,CAAKl5Y,GAAG,CAAG,IAAIuW,IACf4iY,CAAAA,IAAKn5Y,CAAAA,GAAG,CAAG,IAAIuW,IACf6iY,CAAAA,KAAKp5Y,GAAG,CAAG,IAAIuW,IAAAA,CACf,MAAM8iY,GAAAA,CAAM,IAAI9iY,IAChB,CAAA,MAAM+iY,GAAM,CAAA,IAAI/iY,IAChB,CAAA,MAAMgjY,IAAM,IAAIhjY,IAAAA,CAChB,MAAMijY,GAAAA,CAAM,IAAIjjY,IAAAA,CAChB,MAAMkjY,GAAM,CAAA,IAAIljY,IAChB,CAAA,MAAMmjY,EAAK,CAAA,IAAInjY,IACf,CAAA,MAAMojY,GAAM,CAAA,IAAIpjY,IAChB,CAAA,MAAMqjY,GAAM,CAAA,IAAIrjY,KAChB,MAAMsjY,GAAAA,CAAM,IAAItjY,IAAAA,CAChB,MAAMujY,GAAAA,CAAM,IAAIvjY,IAChB,CAAA,MAAMwjY,IAAO,CAAA,IAAIxjY,IACjB,CAAA,MAAMyjY,kBAAoB,IAAIzjY,IAAAA,CAC9B,MAAM0jY,WAAAA,CAAc,IAAI1jY,IAAAA,CACxB,MAAM2jY,cAAiB,CAAA,IAAI3jY,IAC3B,CAAA,MAAM4jY,YAAe,CAAA,IAAI5jY,KACzB,MAAM6jY,aAAAA,CAAgB,IAAI7jY,IAAAA,CAC1B,MAAM8jY,iBAAAA,CAAoB,IAAI9jY,IAC9B,CAAA,MAAM+jY,kBAAqB,CAAA,IAAI/jY,IAC/B,CAAA,MAAMgkY,gBAAkB,IAAIhkY,IAAAA,CAC5B,MAAMikY,cAAAA,CAAiB,IAAIjkY,IAAAA,CAC3B,MAAMkkY,SAAAA,CAAY,IAAIh+X,IAAAA,CACtB,SAASi+X,YAAAA,CAAarnY,EAAE,CAAEo/K,EAAE,CAAEuU,EAAE,CAC9B,CAAA,OAAO+yM,IAAKnjY,CAAAA,KAAK,CAACvD,EAAIo/K,CAAAA,EAAAA,CAAAA,CAAIj7K,GAAG,CAACwvL,EAChC,CAAA,CACA,SAAS2zM,iBAAkB1tX,CAAAA,CAAC,CAAEngB,CAAC,CAAEq8L,OAAO,EACtCkwM,GAAIlhY,CAAAA,IAAI,CAACrL,CAAAA,CAAGmgB,CACZqsX,CAAAA,CAAAA,GAAAA,CAAInhY,IAAI,CAACgxL,OAAO,CAAC,CAAA,CAAE,CAAEl8K,CAAAA,CAAAA,CACrBssX,IAAIphY,IAAI,CAACgxL,OAAO,CAAC,CAAE,CAAA,CAAEl8K,GACrBusX,GAAIrhY,CAAAA,IAAI,CAACgxL,OAAO,CAAC,CAAA,CAAE,CAAEl8K,CACrBysX,CAAAA,CAAAA,EAAAA,CAAG9iY,KAAK,CAAC4iY,GAAKH,CAAAA,GAAAA,CAAAA,CACd,IAAIt/Y,CAAIu/Y,CAAAA,GAAAA,CAAI9hY,GAAG,CAACkiY,EAChB,CAAA,CAAA,IAAInrX,EACJ,IAAI1U,CAAAA,CACJ,GAAI9f,CAAAA,EAAK,CAAG,CAAA,CACVw0B,EAAI,CAACgrX,GAAAA,CAAI/hY,GAAG,CAACkiY,EACb,CAAA,CAAA,GAAInrX,EAAI,CAAG,CAAA,CACT,OAAO,CAAC,CACV,CACA1U,EAAI6gY,YAAarB,CAAAA,GAAAA,CAAKE,GAAKD,CAAAA,GAAAA,CAAAA,CAC3B,GAAIz/X,CAAAA,CAAI,EAAG,CACT,OAAO,CAAC,CACV,CACA,MAAM+gY,MAAQ,CAAOrsX,EAAAA,CAAIx0B,CAAAA,CAAAA,CAAI8f,CAAAA,CAAAA,CAC7B8/X,GAAItgZ,CAAAA,IAAI,CAAC8vM,OAAO,CAAC,CAAA,CAAE,CAAE/4L,CAAAA,SAAS,CAACme,CAAIqsX,CAAAA,KAAAA,CAAAA,CACnChB,GAAIvgZ,CAAAA,IAAI,CAAC8vM,OAAO,CAAC,CAAE,CAAA,CAAA,CAAE/4L,SAAS,CAACrW,CAAI6gZ,CAAAA,KAAAA,CAAAA,CACnCf,IAAIxgZ,IAAI,CAAC8vM,OAAO,CAAC,CAAE,CAAA,CAAA,CAAE/4L,SAAS,CAACyJ,CAAAA,CAAI+gY,KACnCd,CAAAA,CAAAA,GAAAA,CAAIzgZ,IAAI,CAACsgZ,KAAK/uY,GAAG,CAACgvY,GAAKhvY,CAAAA,CAAAA,GAAG,CAACivY,GAAAA,EAC7B,MAAO,CACLJ,GAAAA,CAAIthY,IAAI,CAACgxL,OAAO,CAAC,EAAE,CAAEl8K,CAAAA,CAAAA,CACrBsB,CAAIkrX,CAAAA,GAAAA,CAAIjiY,GAAG,CAACkiY,IACZ,GAAInrX,CAAAA,CAAI,CAAG,CAAA,CACT,OAAO,CAAC,CACV,CACA1U,CAAAA,CAAI6gY,YAAarB,CAAAA,GAAAA,CAAKC,GAAKG,CAAAA,GAAAA,CAAAA,CAC3B,GAAI5/X,CAAI,CAAA,CAAA,CAAG,CACT,OAAO,CAAC,CACV,CACA9f,CAAI,CAAA,CAACA,CACL,CAAA,MAAM6gZ,KAAQ,CAAA,CAAA,EAAOrsX,CAAIx0B,CAAAA,CAAAA,CAAI8f,CAAAA,CAAAA,CAC7B8/X,GAAItgZ,CAAAA,IAAI,CAAC8vM,OAAO,CAAC,CAAE,CAAA,CAAA,CAAE/4L,SAAS,CAACme,EAAIqsX,KACnChB,CAAAA,CAAAA,GAAAA,CAAIvgZ,IAAI,CAAC8vM,OAAO,CAAC,EAAE,CAAE/4L,CAAAA,SAAS,CAACrW,CAAAA,CAAI6gZ,KACnCf,CAAAA,CAAAA,GAAAA,CAAIxgZ,IAAI,CAAC8vM,OAAO,CAAC,CAAE,CAAA,CAAA,CAAE/4L,SAAS,CAACyJ,EAAI+gY,KACnCd,CAAAA,CAAAA,GAAAA,CAAIzgZ,IAAI,CAACsgZ,GAAK/uY,CAAAA,CAAAA,GAAG,CAACgvY,GAAKhvY,CAAAA,CAAAA,GAAG,CAACivY,GAAAA,EAC7B,CACA,GAAIR,IAAIlhY,IAAI,CAACgxL,OAAO,CAAC,CAAE,CAAA,CAAEA,OAAO,CAAC,CAAA,CAAE,CAAExxL,CAAAA,QAAQ,EAAK,CAAA,IAAA,CAAS,KAAQ,OAAO,CAAC,CAC3E,CAAA,GAAI0hY,GAAIlhY,CAAAA,IAAI,CAACgxL,OAAO,CAAC,CAAE,CAAA,CAAEA,OAAO,CAAC,EAAE,CAAExxL,CAAAA,QAAQ,EAAK,CAAA,IAAA,CAAS,IAAQ,CAAA,OAAO,CAAC,CAC3E,CAAA,OAAOmiY,GAAI5hY,CAAAA,GAAG,CAAC+U,CAAAA,CAAAA,CAAGtV,QAAQ,EAC5B,CACA,MAAMkjY,iBAAAA,CAOJnnS,eAAkB,EAAA,CAChB,IAAI,CAAConS,gBAAgB,CAAG,IAAA,CACxB,GAAI,IAAI,CAACz+S,KAAK,CAAE,CACd,IAAI,CAACA,KAAK,CAAC0+S,wBAAwB,EAAA,CACnC,IAAI,CAAC1+S,KAAK,CAACqX,eAAe,GAC5B,CACF,CAZArxG,WAAAA,CAAYg6F,KAAK,CAAEpmD,OAAO,CAAEs3F,MAAM,CAAC,CACjC,IAAI,CAAClxC,KAAK,CAAGA,KACb,CAAA,IAAI,CAACpmD,OAAO,CAAGA,OACf,CAAA,IAAI,CAACs3F,MAAM,CAAGA,MACd,CAAA,IAAI,CAACutQ,gBAAgB,CAAG,MAC1B,CAQF,CACA,MAAME,iBAAAA,SAA0BH,iBAC9Bx4Y,CAAAA,WAAAA,CAAYg6F,KAAK,CAAEpmD,OAAO,CAAEs3F,MAAM,CAAE5+H,CAAC,CAAE0H,CAAC,CAAE4kY,KAAK,CAAEC,KAAK,CAAC,CACrD,KAAK,CAAC7+S,KAAOpmD,CAAAA,OAAAA,CAASs3F,MACtB,CAAA,CAAA,IAAI,CAAC5+H,CAAC,CAAGA,CACT,CAAA,IAAI,CAAC0H,CAAC,CAAGA,CACT,CAAA,IAAI,CAAC2+F,OAAO,CAAG3Y,KAAM2Y,CAAAA,OAAO,EAAI,KAChC,CAAA,IAAI,CAACC,MAAM,CAAG5Y,KAAM4Y,CAAAA,MAAM,EAAI,KAC9B,CAAA,IAAI,CAACC,QAAQ,CAAG7Y,KAAM6Y,CAAAA,QAAQ,EAAI,KAClC,CAAA,IAAI,CAACC,OAAO,CAAG9Y,KAAM8Y,CAAAA,OAAO,EAAI,KAChC,CAAA,IAAI,CAACL,MAAM,CAAGzY,MAAMyY,MAAM,CAC1B,GAAImB,KAAAA,CAAMC,eAAe,EAAA,CAAI,CAC3B,IAAI,CAACtB,EAAE,CAAGvY,KAAMkZ,CAAAA,SAAS,EAAIlZ,KAAMmZ,CAAAA,eAAe,EAAInZ,KAAAA,CAAMoZ,YAAY,EAAI,CAC5E,CAAA,IAAI,CAACZ,EAAE,CAAGxY,KAAMqZ,CAAAA,SAAS,EAAIrZ,KAAMsZ,CAAAA,eAAe,EAAItZ,KAAAA,CAAMuZ,YAAY,EAAI,EAC9E,CAAO,KAAA,CACL,IAAI,CAAChB,EAAE,CAAGjmG,EAAIssY,KACd,CAAA,IAAI,CAACpmS,EAAE,CAAGx+F,EAAI6kY,MAChB,CACA,IAAI,CAACnmS,UAAU,CAAG,EAClB,GAAI1Y,KAAAA,CAAMtqF,IAAI,GAAK,OAAS,CAAA,CAC1B,GAAIsqF,KAAMiZ,CAAAA,MAAM,CAAG,CAAA,CAAG,CACpB,IAAI,CAACP,UAAU,CAAG,EACpB,CAAA,KAAO,GAAI1Y,KAAAA,CAAMiZ,MAAM,CAAG,CAAA,CAAG,CAC3B,IAAI,CAACP,UAAU,CAAG,CAAC,EACrB,CACF,CACF,CACF,CACA,MAAMomS,iBAA0BN,SAAAA,iBAAAA,CAC9Bx4Y,WAAYg6F,CAAAA,KAAK,CAAEpmD,OAAO,CAAEs3F,MAAM,CAAE5+H,CAAC,CAAE0H,CAAC,CAAElZ,KAAK,CAAC,CAC9C,KAAK,CAACk/F,KAAOpmD,CAAAA,OAAAA,CAASs3F,OACtB,CAAA,IAAI,CAACxuB,OAAO,CAAG1iB,KAAAA,CAAM0iB,OAAO,CAC5B,IAAI,CAACC,cAAc,CAAG3iB,MAAM2iB,cAC5B,CAAA,IAAI,CAACrwG,CAAC,CAAGA,CACT,CAAA,IAAI,CAAC0H,CAAC,CAAGA,CACT,CAAA,IAAI,CAAClZ,KAAK,CAAGA,MACf,CACF,CACA,MAAMi+Y,kBAAAA,SAA2BP,iBAC/Bx4Y,CAAAA,WAAAA,CAAYg6F,KAAK,CAAEpmD,OAAO,CAAEs3F,MAAM,CAAE0/L,WAAW,CAAC,CAC9C,KAAK,CAAC5wO,KAAAA,CAAOpmD,OAASs3F,CAAAA,MAAAA,CACtB,CAAA,IAAI,CAAC0/L,WAAW,CAAGA,YACrB,CACF,CACA,MAAMouE,aAiCJ,IAAIluY,OAAAA,CAAQlL,KAAK,CAAE,CACjB,IAAI,CAACksE,QAAQ,CAAGlsE,MAClB,CACA,IAAIkL,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,CAEtB,IAAIm8J,GAAIroO,CAAAA,KAAK,CAAE,CACb,IAAI,CAACwtO,IAAI,CAAGxtO,MACd,CACA,IAAIqoO,GAAM,EAAA,CACR,OAAO,IAAI,CAACmF,IAAI,EAAIrF,cACtB,EAAA,CACAt3H,OAAOwoS,UAAU,CAAE,CACjB,GAAI,IAAI,CAACllS,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAG,MACjB,IAAI,CAACpD,MAAM,GACb,CACA,IAAI,CAACmD,OAAO,CAAGmlS,UACf,CAAA,IAAI,CAACllS,SAAS,CAAG,IACjB,CAAA,MAAMl6G,IAAOyB,CAAAA,QAAAA,CAASD,aAAa,CAAG,CACpC44G,OAAS,CAAA,IACX,CAAI,CAAA,KAAA,CACJ,GAAI,IAAI,CAACilS,SAAS,CAAE,CAClBj/Y,MAAAA,CAAOC,gBAAgB,CAAC,UAAW,IAAI,CAACg6G,UAAU,CAAEr6G,IACpDI,CAAAA,CAAAA,MAAAA,CAAOC,gBAAgB,CAAC,WAAA,CAAa,IAAI,CAACi6G,YAAY,CAAEt6G,MACxDI,MAAOC,CAAAA,gBAAgB,CAAC,WAAA,CAAa,IAAI,CAACk6G,YAAY,CAAEv6G,IAAAA,CAAAA,CACxDI,MAAOC,CAAAA,gBAAgB,CAAC,OAAA,CAAS,IAAI,CAACm6G,aAAa,CAAEx6G,IAAAA,EACvD,CACA,GAAI,IAAI,CAACs/Y,SAAS,EAAI79Y,QAAAA,CAASR,KAAK,CAAE,CACpC,IAAI,CAACg5G,OAAO,CAAC55G,gBAAgB,CAAC,aAAc,IAAI,CAACk/Y,kBAAkB,CAAEv/Y,IACrE,CAAA,CAAA,IAAI,CAACi6G,OAAO,CAAC55G,gBAAgB,CAAC,UAAY,CAAA,IAAI,CAACm/Y,gBAAgB,CAAE,KACjE,CAAA,CAAA,IAAI,CAACvlS,OAAO,CAAC55G,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAACo/Y,iBAAiB,CAAE,KACnE,CAAA,CAAA,IAAI,CAACxlS,OAAO,CAAC55G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAACq/Y,mBAAmB,CAAE,KAAA,EACzE,CACA,IAAI,CAAC5hJ,kBAAkB,GACzB,CACAA,kBAAqB,EAAA,CACnB,GAAI,CAAC,IAAI,CAAC6hJ,qBAAqB,EAAI,IAAI,CAACC,MAAM,EAAI,IAAI,CAACxxK,GAAG,EAAI,IAAI,CAACA,GAAG,CAAC7mI,EAAE,EAAI,IAAI,CAAC6mI,GAAG,CAAC7mI,EAAE,CAACxvB,SAAS,CAAE,CAClG,GAAI,CAAC,IAAI,CAAC8nU,gBAAgB,CAAE,CAC1B,IAAI,CAACA,gBAAgB,CAAG,GAC1B,CACA,IAAI,CAACF,qBAAqB,CAAG,IAC7B,CAAA,IAAI,CAACvxK,GAAG,CAAC7mI,EAAE,CAAC9hG,EAAE,CAAC,OAAA,CAAS,IAAI,CAACq6Y,UAAU,CAAE,IAAI,EAC/C,CACF,CACAhpS,MAAS,EAAA,CACP,GAAI,CAAC,IAAI,CAACoD,SAAS,CAAE,OACrB,IAAI,CAACA,SAAS,CAAG,KACjB,CAAA,MAAMl6G,IAAOyB,CAAAA,QAAAA,CAASD,aAAa,CAAG,CACpC44G,OAAS,CAAA,IACX,CAAI,CAAA,KAAA,CACJ,GAAI,IAAI,CAACilS,SAAS,CAAE,CAClBj/Y,MAAAA,CAAOE,mBAAmB,CAAC,UAAW,IAAI,CAAC+5G,UAAU,CAAEr6G,IACvDI,CAAAA,CAAAA,MAAAA,CAAOE,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAACg6G,YAAY,CAAEt6G,IAAAA,CAAAA,CAC3DI,OAAOE,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAACi6G,YAAY,CAAEv6G,IAC3DI,CAAAA,CAAAA,MAAAA,CAAOE,mBAAmB,CAAC,OAAS,CAAA,IAAI,CAACk6G,aAAa,CAAEx6G,IAC1D,EAAA,CACA,GAAI,IAAI,CAACs/Y,SAAS,CAAE,CAClB,IAAI,CAACrlS,OAAO,CAAC35G,mBAAmB,CAAC,YAAc,CAAA,IAAI,CAACi/Y,kBAAkB,CAAEv/Y,IACxE,CAAA,CAAA,IAAI,CAACi6G,OAAO,CAAC35G,mBAAmB,CAAC,UAAY,CAAA,IAAI,CAACk/Y,gBAAgB,CAAE,KAAA,CAAA,CACpE,IAAI,CAACvlS,OAAO,CAAC35G,mBAAmB,CAAC,WAAA,CAAa,IAAI,CAACm/Y,iBAAiB,CAAE,KAAA,CAAA,CACtE,IAAI,CAACxlS,OAAO,CAAC35G,mBAAmB,CAAC,aAAA,CAAe,IAAI,CAACo/Y,mBAAmB,CAAE,KAAA,EAC5E,CACA,GAAI,IAAI,CAACC,qBAAqB,CAAE,CAC9B,IAAI,CAACA,qBAAqB,CAAG,MAC7B,IAAI,CAACvxK,GAAG,CAAC7mI,EAAE,CAACliG,GAAG,CAAC,OAAA,CAAS,IAAI,CAACy6Y,UAAU,CAAE,IAAI,CAC9C,CAAA,IAAI,CAAC1xK,GAAG,CAAC7mI,EAAE,CAACliG,GAAG,CAAC,KAAA,CAAO,IAAI,CAAC06Y,QAAQ,CAAE,IAAI,CAC1C,CAAA,IAAI,CAAC3xK,GAAG,CAAC7mI,EAAE,CAACliG,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC26Y,WAAW,CAAE,IAAI,CAAA,CAChD,IAAI,CAAC5xK,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAAC7nQ,GAAG,CAAC,aAAA,CAAe,IAAI,CAAC0pR,cAAc,CAAE,IAAI,CAC9D,CAAA,IAAI,CAAC3gD,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAAC7nQ,GAAG,CAAC,WAAA,CAAa,IAAI,CAAC2pR,YAAY,CAAE,IAAI,CAC1D,CAAA,IAAI,CAAC5gD,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAAC7nQ,GAAG,CAAC,QAAU,CAAA,IAAI,CAAC46Y,gBAAgB,CAAE,IAAI,EAC7D,CACA,IAAI,CAAChmS,OAAO,CAAG,KACjB,CACAmhM,UAAWrhQ,CAAAA,OAAO,CAAE,CAClB,GAAI,IAAI,CAAChC,SAAS,CAAC1wC,OAAO,CAAC0yC,OAAAA,CAAAA,GAAa,CAAC,CAAA,CAAG,CAC1C,IAAI,CAAChC,SAAS,CAAC74C,IAAI,CAAC66C,OACtB,EAAA,CACF,CACAshQ,aAActhQ,CAAAA,OAAO,CAAE,CACrB,MAAMrxC,GAAAA,CAAM,IAAI,CAACqvC,SAAS,CAAC1wC,OAAO,CAAC0yC,OACnC,CAAA,CAAA,GAAIrxC,MAAQ,CAAC,CAAA,CAAG,CACd,IAAI,CAACqvC,SAAS,CAAC7wC,MAAM,CAACwB,GAAK,CAAA,CAAA,EAC7B,CACF,CACAuyG,UAAU9a,KAAK,CAAE,CACf,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,GAAI8nC,KAAMC,CAAAA,eAAe,GAAI,CAC3B,MACF,CACA,IAAI,CAACkmS,gBAAgB,CAAC//S,KACtB,CAAA,CAAA,IAAI,CAACggT,oBAAoB,CAAC,SAAA,CAAWhgT,OACvC,CACA+a,WAAAA,CAAY/a,KAAK,CAAE,CACjB,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,GAAI8nC,MAAMC,eAAe,EAAA,CAAI,CAC3B,MACF,CACA,IAAI,CAACkmS,gBAAgB,CAAC//S,KACtB,CAAA,CAAA,IAAI,CAACggT,oBAAoB,CAAC,WAAahgT,CAAAA,KAAAA,EACzC,CACAgb,WAAAA,CAAYhb,KAAK,CAAE,CACjB,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,IAAI,CAACiuU,gBAAgB,CAAC//S,KACtB,CAAA,CAAA,IAAI,CAACggT,oBAAoB,CAAC,WAAahgT,CAAAA,KAAAA,CACvC,CAAA,IAAI,CAACwZ,MAAM,CAAGijS,OACd,CAAA,IAAI,CAAChjS,MAAM,CAAGijS,QAChB,CACAzhS,YAAajb,CAAAA,KAAK,CAAE,CAClB,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,IAAI,CAACiuU,gBAAgB,CAAC//S,KAAAA,CAAAA,CACtB,IAAI,CAACggT,oBAAoB,CAAC,YAAA,CAAchgT,KAC1C,EAAA,CACAigT,yBAA0BjgT,CAAAA,KAAK,CAAE,CAC/B,MAAMkgT,eAAkB,CAAA,EACxB,CAAA,MAAMtzO,QAAU,IAAI,CAACqhE,GAAG,CAACgR,OAAO,CAAC/tG,MAAM,CAAC07B,OAAO,CAC/C,IAAI,IAAI3uK,CAAAA,CAAI2uK,QAAQ1uK,MAAM,CAAG,CAAGD,CAAAA,CAAAA,EAAK,CAAGA,CAAAA,CAAAA,EAAAA,CAAI,CAC1C,MAAMizI,MAAAA,CAAS07B,OAAO,CAAC3uK,CAAE,CAAA,CACzB,IAAIqsI,IAAO,CAAA,CAAA,CACX,MAAMn0H,GAAAA,CAAM6pF,KAAM2iB,CAAAA,cAAc,CAACzkH,MAAM,CACvC,IAAI,IAAIsmF,CAAI,CAAA,CAAA,CAAGA,EAAIruE,GAAKquE,CAAAA,CAAAA,EAAAA,CAAI,CAC1B,GAAI07T,eAAe,CAAClgT,MAAM2iB,cAAc,CAACn+B,CAAE,CAAA,CAACpe,UAAU,CAAC,CAAE,CACvDkkE,IAAAA,EAAAA,CACA,QACF,CACA,MAAMvxB,MAAAA,CAAS4I,qBAAqB3hB,KAAM2iB,CAAAA,cAAc,CAACn+B,CAAAA,CAAE,CAC3D,CAAA,MAAM5qC,QAAU,IAAI,CAACumW,yBAAyB,CAACjvQ,MAAQn4B,CAAAA,MAAAA,CAAOzmG,CAAC,CAAEymG,MAAO/+F,CAAAA,CAAC,CACzE,CAAA,GAAI4/B,OAAS,CAAA,CACX0wF,MACA41Q,CAAAA,eAAe,CAAClgT,KAAAA,CAAM2iB,cAAc,CAACn+B,EAAE,CAACpe,UAAU,CAAC,CAAG,CACpDxsB,OAAAA,CAASA,QACTs3F,MAAQA,CAAAA,MAAAA,CACR5+H,CAAGymG,CAAAA,MAAAA,CAAOzmG,CAAC,CACX0H,EAAG++F,MAAO/+F,CAAAA,CAAC,EAEf,CACF,CACA,GAAIswH,IAASn0H,GAAAA,GAAAA,CAAK,CAChB,KACF,CACF,CACA,OAAO+pY,eACT,CACAl9R,iBAAkBhjB,CAAAA,KAAK,CAAE,CACvB,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,MAAMsuU,kBAAqB,CAAA,IAAI,CAACH,yBAAyB,CAACjgT,KAAAA,CAAAA,CAC1D,IAAI,IAAI/hG,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM6pF,KAAM2iB,CAAAA,cAAc,CAACzkH,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,CAAI,EAAA,CAAA,CAC7D,MAAM6C,KAAQk/F,CAAAA,KAAAA,CAAM2iB,cAAc,CAAC1kH,CAAE,CAAA,CACrC,MAAMoiZ,YAAeD,CAAAA,kBAAkB,CAACt/Y,KAAAA,CAAMslE,UAAU,CAAC,CACzD,MAAMk6U,YAAAA,CAAe,IAAI,CAACC,gBAAgB,CAACz/Y,MAAMslE,UAAU,CAAC,CAC5D,GAAIi6U,YAAiB,GAAA,CAACC,YAAgBD,EAAAA,YAAAA,CAAazmW,OAAO,GAAK0mW,YAAa1mW,CAAAA,OAAO,CAAD,CAAI,CACpF,IAAI,CAAC4mW,UAAU,CAACxgT,KAAAA,CAAMtqF,IAAI,CAAE,IAAIopY,iBAAkB9+S,CAAAA,KAAAA,CAAOqgT,YAAazmW,CAAAA,OAAO,CAAEymW,YAAanvQ,CAAAA,MAAM,CAAEmvQ,YAAAA,CAAa/tY,CAAC,CAAE+tY,aAAarmY,CAAC,CAAElZ,KACpI,CAAA,CAAA,CAAA,IAAI,CAAC2/Y,kCAAkC,CAAC3/Y,KAAAA,CAAMslE,UAAU,CAAC,CAAG,MAC9D,CACF,CACA,IAAI,MAAMs6U,OAAAA,IAAWN,kBAAmB,CAAA,CACtC,IAAI,CAACG,gBAAgB,CAACG,OAAAA,CAAQ,CAAGN,kBAAkB,CAACM,OAAQ,EAC9D,CACF,CACAz9R,eAAgBjjB,CAAAA,KAAK,CAAE,CACrB,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,MAAM86F,OAAU,CAAA,IAAI,CAACqhE,GAAG,CAACgR,OAAO,CAAC/tG,MAAM,CAAC07B,OAAO,CAC/C,IAAI,MAAM9mK,GAAAA,IAAO,IAAI,CAAC45Y,gBAAgB,CAAC,CACrC,OAAO,IAAI,CAACA,gBAAgB,CAAC55Y,GAAAA,EAAI,CAEnC,IAAI,IAAI7H,CAAAA,CAAI,CAAGkY,CAAAA,GAAAA,CAAM6pF,MAAM2iB,cAAc,CAACzkH,MAAM,CAAED,CAAIkY,CAAAA,GAAAA,CAAKlY,IAAI,CAC7D,MAAM6C,KAAQk/F,CAAAA,KAAAA,CAAM2iB,cAAc,CAAC1kH,CAAE,CAAA,CACrC,MAAM0iZ,SAAAA,CAAY,IAAI,CAACJ,gBAAgB,CAACz/Y,MAAMslE,UAAU,CAAC,CACzD,GAAI,CAACu6U,SAAAA,CAAW,CACd,QACF,CACA,MAAM/mW,OAAAA,CAAU+mW,SAAU/mW,CAAAA,OAAO,CACjC,MAAMs3F,MAAAA,CAASyvQ,SAAUzvQ,CAAAA,MAAM,CAC/B,MAAM5+H,EAAIquY,SAAUruY,CAAAA,CAAC,CACrB,MAAM0H,CAAI2mY,CAAAA,SAAAA,CAAU3mY,CAAC,CACrB,OAAO,IAAI,CAACumY,gBAAgB,CAACz/Y,MAAMslE,UAAU,CAAC,CAC9C,OAAO,IAAI,CAACq6U,kCAAkC,CAAC3/Y,KAAAA,CAAMslE,UAAU,CAAC,CAChE,MAAM2yC,OAAS4I,oBAAqB7gH,CAAAA,KAAAA,CAAAA,CACpC,IAAI,IAAIxD,CAAIsvK,CAAAA,OAAAA,CAAQ1uK,MAAM,CAAG,CAAA,CAAGZ,CAAK,EAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CAC1C,MAAMsjZ,OAAU,CAAA,IAAI,CAACT,yBAAyB,CAACvzO,OAAO,CAACtvK,CAAE,CAAA,CAAEy7G,MAAOzmG,CAAAA,CAAC,CAAEymG,MAAAA,CAAO/+F,CAAC,CAC7E,CAAA,GAAI4mY,OAAYhnW,GAAAA,OAAAA,CAAS,CACvB,GAAI,CAAC,IAAI,CAAC8lW,gBAAgB,CAAC9lW,OAAQirF,CAAAA,MAAM,CAACm8G,OAAO,EAAA,CAAG,CAAE,CACpD,IAAI,CAACw/J,UAAU,CAAC,OAAA,CAAS,IAAI1B,iBAAAA,CAAkB9+S,KAAOpmD,CAAAA,OAAAA,CAASs3F,MAAQ5+H,CAAAA,CAAAA,CAAG0H,CAAGlZ,CAAAA,KAAAA,CAAAA,CAC7E,CAAA,IAAI,CAAC4+Y,gBAAgB,CAAC9lW,OAAQirF,CAAAA,MAAM,CAACm8G,OAAO,EAAG,CAAA,CAAGxxO,KAAKF,GAAG,GAC5D,CACF,CACF,CACA,IAAI,CAACkxY,UAAU,CAACxgT,KAAMtqF,CAAAA,IAAI,CAAE,IAAIopY,kBAAkB9+S,KAAOpmD,CAAAA,OAAAA,CAASs3F,MAAQ5+H,CAAAA,CAAAA,CAAG0H,CAAGlZ,CAAAA,KAAAA,CAAAA,EAClF,CACF,CACAoiH,gBAAAA,CAAiBljB,KAAK,CAAE,CACtBA,KAAAA,CAAMC,cAAc,EACpB,CAAA,GAAI,CAAC,IAAI,CAACnuB,QAAQ,CAAE,OACpB,MAAMsuU,kBAAqB,CAAA,IAAI,CAACH,yBAAyB,CAACjgT,KAAAA,CAAAA,CAC1D,IAAI,IAAI/hG,CAAI,CAAA,CAAA,CAAGkY,GAAM6pF,CAAAA,KAAAA,CAAM2iB,cAAc,CAACzkH,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CAC7D,MAAM6C,KAAAA,CAAQk/F,KAAM2iB,CAAAA,cAAc,CAAC1kH,CAAAA,CAAE,CACrC,MAAMoiZ,YAAAA,CAAeD,kBAAkB,CAACt/Y,KAAMslE,CAAAA,UAAU,CAAC,CACzD,MAAMk6U,YAAe,CAAA,IAAI,CAACC,gBAAgB,CAACz/Y,KAAMslE,CAAAA,UAAU,CAAC,CAC5D,GAAIk6U,YAAAA,CAAc,CAChB,MAAMvnS,MAAAA,CAAS4I,oBAAqB7gH,CAAAA,KAAAA,CAAAA,CACpC,GAAK,CAAA,CAACu/Y,YAAAA,EAAgBA,YAAazmW,CAAAA,OAAO,GAAK0mW,YAAAA,CAAa1mW,OAAM,GAAM,CAAC,IAAI,CAAC6mW,kCAAkC,CAAC3/Y,MAAMslE,UAAU,CAAC,CAAE,CAClI,IAAI,CAACo6U,UAAU,CAAC,YAAA,CAAc,IAAI1B,iBAAAA,CAAkB9+S,KAAOsgT,CAAAA,YAAAA,CAAa1mW,OAAO,CAAE0mW,YAAAA,CAAapvQ,MAAM,CAAEn4B,MAAOzmG,CAAAA,CAAC,CAAEymG,MAAO/+F,CAAAA,CAAC,CAAElZ,KAAAA,CAAAA,CAC1H,CAAA,IAAI,CAAC2/Y,kCAAkC,CAAC3/Y,KAAMslE,CAAAA,UAAU,CAAC,CAAG,KAC9D,CACA,IAAI,CAACo6U,UAAU,CAAC,WAAA,CAAa,IAAI1B,iBAAkB9+S,CAAAA,KAAAA,CAAOsgT,YAAa1mW,CAAAA,OAAO,CAAE0mW,YAAAA,CAAapvQ,MAAM,CAAEn4B,MAAAA,CAAOzmG,CAAC,CAAEymG,MAAO/+F,CAAAA,CAAC,CAAElZ,KAC3H,CAAA,EAAA,CACF,CACF,CACAk/Y,oBAAqBa,CAAAA,SAAS,CAAE7gT,KAAK,CAAE,CACrC,IAAIpmD,OAAU,CAAA,IAAA,CACd,MAAMknW,WAAc,CAAA,IAAI,CAACC,eAAe,CACxC,IAAI,CAACA,eAAe,CAAG,IAAA,CACvB,MAAMn0O,OAAAA,CAAU,IAAI,CAACqhE,GAAG,CAACgR,OAAO,CAAC/tG,MAAM,CAAC07B,OAAO,CAC/C,IAAI17B,MAAAA,CACJ,IAAI,IAAIjzI,EAAI2uK,OAAQ1uK,CAAAA,MAAM,CAAG,CAAA,CAAGD,CAAK,EAAA,CAAA,CAAGA,CAAI,EAAA,CAAA,CAC1CizI,MAAS07B,CAAAA,OAAO,CAAC3uK,CAAAA,CAAE,CACnB27C,OAAAA,CAAU,IAAI,CAACumW,yBAAyB,CAACjvQ,MAAAA,CAAQurQ,OAASC,CAAAA,OAAAA,CAAAA,CAC1D,GAAI9iW,OAAS,CAAA,CACX,KACF,CACF,CACA,IAAI,CAACmnW,eAAe,CAAGnnW,OACvB,CAAA,GAAI,CAACinW,YAAc,WAAeA,EAAAA,SAAAA,GAAc,SAAQ,GAAM,IAAI,CAACG,eAAe,CAAE,CAClF,IAAI,CAACR,UAAU,CAACK,UAAW,IAAIlC,iBAAAA,CAAkB3+S,KAAO,CAAA,IAAI,CAACghT,eAAe,CAAE9vQ,MAAQurQ,CAAAA,OAAAA,CAASC,OAAS,CAAA,IAAI,CAACljS,MAAM,CAAE,IAAI,CAACC,MAAM,CAAA,EAClI,CAAO,KAAA,GAAI7/D,QAAS,CAClB,IAAI,CAAC4mW,UAAU,CAACK,SAAAA,CAAW,IAAIlC,iBAAkB3+S,CAAAA,KAAAA,CAAOpmD,OAASs3F,CAAAA,MAAAA,CAAQurQ,OAASC,CAAAA,OAAAA,CAAS,IAAI,CAACljS,MAAM,CAAE,IAAI,CAACC,MAAM,GACnH,GAAIonS,SAAAA,GAAc,WAAa,CAAA,CAC7B,IAAI,CAACG,eAAe,CAAGpnW,QACzB,CACF,CACA,GAAIknW,WAAAA,GAAgB,IAAI,CAACC,eAAe,CAAE,CACxC,GAAID,WAAAA,CAAa,CACf,IAAI,CAACN,UAAU,CAAC,YAAc,CAAA,IAAI7B,iBAAkB3+S,CAAAA,KAAAA,CAAO8gT,WAAa5vQ,CAAAA,MAAAA,CAAQurQ,OAASC,CAAAA,OAAAA,CAAS,IAAI,CAACljS,MAAM,CAAE,IAAI,CAACC,MAAM,CAC5H,EAAA,CACA,GAAI,IAAI,CAACsnS,eAAe,CAAE,CACxB,IAAI,CAACP,UAAU,CAAC,YAAc,CAAA,IAAI7B,iBAAkB3+S,CAAAA,KAAAA,CAAO,IAAI,CAAC+gT,eAAe,CAAE7vQ,MAAAA,CAAQurQ,OAASC,CAAAA,OAAAA,CAAS,IAAI,CAACljS,MAAM,CAAE,IAAI,CAACC,MAAM,GACrI,CACF,CACA,GAAIonS,SAAAA,GAAc,SAAa,EAAA,IAAI,CAACG,eAAe,CAAE,CACnD,GAAI,IAAI,CAACA,eAAe,GAAK,IAAI,CAACD,eAAe,CAAE,CACjD,MAAM5jZ,IAAO,CAAA,IAAI,CAAC4jZ,eAAe,CAACl8Q,MAAM,CAACm8G,OAAO,EAAA,CAChD,IAAIigK,SAAAA,CAAY,CAAC,IAAI,CAACvB,gBAAgB,CACtC,GAAI,IAAI,CAACA,gBAAgB,CAAE,CACzB,MAAMwB,WAAc,CAAA,IAAI,CAACxB,gBAAgB,CAACviZ,IAAK,CAAA,EAAI,CACnD,CAAA,MAAM2+G,EAAKtsG,CAAAA,IAAAA,CAAKF,GAAG,EAAK4xY,CAAAA,WAAAA,CACxBD,SAAYnlS,CAAAA,EAAAA,CAAK,GACjB,CAAA,OAAO,IAAI,CAAC4jS,gBAAgB,CAACviZ,IAAAA,EAAK,CAEpC,GAAI8jZ,SAAAA,CAAW,CACb,IAAI,CAACT,UAAU,CAAC,OAAA,CAAS,IAAI7B,iBAAkB3+S,CAAAA,KAAAA,CAAO,IAAI,CAAC+gT,eAAe,CAAE7vQ,OAAQurQ,OAASC,CAAAA,OAAAA,CAAS,IAAI,CAACljS,MAAM,CAAE,IAAI,CAACC,MAAM,CAChI,EAAA,CACF,CACA,IAAI,CAACunS,eAAe,CAAG,KACzB,CACF,CACArB,UAAAA,EAAa,CACX,IAAI,CAAC1xK,GAAG,CAAC7mI,EAAE,CAAC9hG,EAAE,CAAC,KAAA,CAAO,IAAI,CAACs6Y,QAAQ,CAAE,IAAI,CACzC,CAAA,IAAI,CAAC3xK,GAAG,CAAC7mI,EAAE,CAAC9hG,EAAE,CAAC,QAAA,CAAU,IAAI,CAACu6Y,WAAW,CAAE,IAAI,CAC/C,CAAA,IAAI,CAAC5xK,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAACznQ,EAAE,CAAC,aAAe,CAAA,IAAI,CAACspR,cAAc,CAAE,IAAI,CAAA,CAC7D,IAAI,CAAC3gD,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAACznQ,EAAE,CAAC,WAAa,CAAA,IAAI,CAACupR,YAAY,CAAE,IAAI,EACzD,IAAI,CAAC5gD,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAACznQ,EAAE,CAAC,QAAA,CAAU,IAAI,CAACw6Y,gBAAgB,CAAE,IAAI,EAC5D,CACAF,QAAAA,EAAW,CACT,IAAI,CAAC3xK,GAAG,CAAC7mI,EAAE,CAACliG,GAAG,CAAC,SAAU,IAAI,CAAC26Y,WAAW,CAAE,IAAI,CAAA,CAChD,IAAI,CAAC5xK,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAAC7nQ,GAAG,CAAC,aAAe,CAAA,IAAI,CAAC0pR,cAAc,CAAE,IAAI,CAAA,CAC9D,IAAI,CAAC3gD,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAAC7nQ,GAAG,CAAC,WAAA,CAAa,IAAI,CAAC2pR,YAAY,CAAE,IAAI,CAC1D,CAAA,IAAI,CAAC5gD,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAAC7nQ,GAAG,CAAC,QAAA,CAAU,IAAI,CAAC46Y,gBAAgB,CAAE,IAAI,EAC7D,CACAD,WAAc,EAAA,CACZ,GAAI,CAAC,IAAI,CAAC/tU,QAAQ,CAAE,OACpB,MAAMi6T,YAAAA,CAAe,IAAI,CAAC99J,GAAG,CAAC7mI,EAAE,CAAC2lK,KAAK,CAACg/H,YAAY,CACnD,IAAI,IAAI9tY,CAAI,CAAA,CAAA,CAAGA,EAAI8tY,YAAa7tY,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,IAAI,CAACkjZ,qBAAqB,CAAC,YAAcpV,CAAAA,YAAY,CAAC9tY,CAAAA,CAAE,CAAE,IAAA,EAC5D,CACF,CACA6hZ,gBAAiBlvE,CAAAA,WAAW,CAAE,CAC5B,MAAMgwE,OAAU,CAAA,IAAI,CAACQ,iBAAiB,CAACxwE,WAAAA,CAAY3oS,EAAE,CAAC,CACtD,GAAI24W,OAAAA,CAAS,CACXhwE,WAAAA,CAAYw5D,cAAc,CAAG,IAAA,CAC7B,IAAI,CAACoW,UAAU,CAAC,cAAe,IAAIzB,kBAAAA,CAAmB,IAAM6B,CAAAA,OAAAA,CAAS,IAAMhwE,CAAAA,WAAAA,CAAAA,EAC7E,CACA,OAAO,IAAI,CAACwwE,iBAAiB,CAACxwE,WAAAA,CAAY3oS,EAAE,CAC5C,CAAO,OAAA,IAAI,CAACo5W,wBAAwB,CAACzwE,WAAY3oS,CAAAA,EAAE,EACrD,CACA2mP,cAAAA,CAAegiD,WAAW,CAAE5wO,KAAK,CAAE,CACjC,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,IAAI,CAACqvU,qBAAqB,CAAC,aAAA,CAAevwE,WAAa5wO,CAAAA,KAAAA,EACzD,CACA6uL,YAAAA,CAAa+hD,WAAW,CAAE5wO,KAAK,CAAE,CAC/B,GAAI,CAAC,IAAI,CAACluB,QAAQ,CAAE,OACpB,IAAI,CAACqvU,qBAAqB,CAAC,WAAA,CAAavwE,WAAa5wO,CAAAA,KAAAA,EACvD,CACAmhT,qBAAAA,CAAsBN,SAAS,CAAEjwE,WAAW,CAAE5wO,KAAK,CAAE,CACnD,IAAIpmD,OACJ,CAAA,MAAM0nW,aAAgB,CAAA,IAAI,CAACF,iBAAiB,CAACxwE,WAAAA,CAAY3oS,EAAE,CAAC,CAC5D,IAAIs5W,UACJ,CAAA,MAAM30O,QAAU,IAAI,CAACqhE,GAAG,CAACgR,OAAO,CAAC/tG,MAAM,CAAC07B,OAAO,CAC/C,IAAI17B,MACJ,CAAA,GAAI0/L,YAAYl0E,YAAY,CAAE,CAC5BqgJ,IAAAA,CAAKv2Y,GAAG,CAACoqU,YAAYryC,SAAS,EAAA,CAAIqyC,WAAYC,CAAAA,YAAY,EAC1D,CAAA,CAAA,IAAI,IAAI5yU,CAAI2uK,CAAAA,OAAAA,CAAQ1uK,MAAM,CAAG,CAAGD,CAAAA,CAAAA,EAAK,EAAGA,CAAI,EAAA,CAAA,CAC1CizI,MAAS07B,CAAAA,OAAO,CAAC3uK,CAAAA,CAAE,CACnB27C,OAAU,CAAA,IAAI,CAAC4nW,sBAAsB,CAACzE,IAAAA,CAAM7rQ,QAC5C,GAAIt3F,OAAAA,CAAS,CACX,KACF,CACF,CACF,CACAg3R,WAAYw5D,CAAAA,cAAc,CAAGxwV,OAAAA,EAAW,IACxC,CAAA,GAAIA,QAAS,CACX,IAAI,CAACwnW,iBAAiB,CAACxwE,WAAAA,CAAY3oS,EAAE,CAAC,CAAG2R,OACzC2nW,CAAAA,UAAAA,CAAa3nW,QACf,CAAA,KAAO,CACL,OAAO,IAAI,CAACwnW,iBAAiB,CAACxwE,WAAAA,CAAY3oS,EAAE,EAC9C,CACA,GAAIq5W,aAAkBC,GAAAA,UAAAA,CAAY,CAChC,GAAID,aAAAA,CAAe,IAAI,CAACd,UAAU,CAAC,cAAe,IAAIzB,kBAAAA,CAAmB/+S,KAAOshT,CAAAA,aAAAA,CAAepwQ,MAAQ0/L,CAAAA,WAAAA,CAAAA,CAAAA,CACvG,GAAI2wE,UAAAA,CAAY,IAAI,CAACf,UAAU,CAAC,aAAe,CAAA,IAAIzB,mBAAmB/+S,KAAOuhT,CAAAA,UAAAA,CAAYrwQ,MAAQ0/L,CAAAA,WAAAA,CAAAA,EACnG,CACA,MAAMryN,QAAU,IAAI,CAAC8iS,wBAAwB,CAACzwE,WAAY3oS,CAAAA,EAAE,CAAC,CAC7D,GAAI44W,SAAc,GAAA,YAAA,EAAgBtiS,OAAS,CAAA,CACzC,IAAI,CAACiiS,UAAU,CAAC,YAAA,CAAc,IAAIzB,kBAAAA,CAAmB/+S,MAAOue,OAAS2yB,CAAAA,MAAAA,CAAQ0/L,WAC/E,CAAA,EAAA,CACA,GAAIiwE,SAAAA,GAAc,cAAe,CAC/B,IAAI,CAACQ,wBAAwB,CAACzwE,WAAAA,CAAY3oS,EAAE,CAAC,CAAGs5W,UAChD,CAAA,GAAIA,UAAY,CAAA,IAAI,CAACf,UAAU,CAAC,aAAA,CAAe,IAAIzB,kBAAAA,CAAmB/+S,KAAOuhT,CAAAA,UAAAA,CAAYrwQ,OAAQ0/L,WACnG,CAAA,EAAA,CACA,GAAI,CAACA,WAAYl0E,CAAAA,YAAY,EAAIn+I,OAAS,CAAA,CACxC,OAAO,IAAI,CAAC8iS,wBAAwB,CAACzwE,WAAY3oS,CAAAA,EAAE,CAAC,CACpD,GAAIq5W,aAAAA,CAAe,CACjB,IAAI,CAACd,UAAU,CAAC,WAAa,CAAA,IAAIzB,mBAAmB/+S,KAAOue,CAAAA,OAAAA,CAAS2yB,MAAQ0/L,CAAAA,WAAAA,CAAAA,EAC9E,CACF,CACA,GAAIiwE,SAAc,GAAA,WAAA,EAAejwE,WAAYl0E,CAAAA,YAAY,CAAE,CACzD,OAAO,IAAI,CAAC2kJ,wBAAwB,CAACzwE,WAAY3oS,CAAAA,EAAE,CAAC,CACpD,GAAIs2E,OAAAA,CAAS,CACX,IAAI,CAACiiS,UAAU,CAAC,WAAa,CAAA,IAAIzB,kBAAmB/+S,CAAAA,KAAAA,CAAOue,OAAS2yB,CAAAA,MAAAA,CAAQ0/L,cAC9E,CACA,GAAIryN,OAAWA,EAAAA,OAAAA,GAAY+iS,aAAe,CAAA,CACxC,IAAI,CAACd,UAAU,CAAC,OAAA,CAAS,IAAIzB,kBAAAA,CAAmB/+S,MAAOue,OAAS2yB,CAAAA,MAAAA,CAAQ0/L,WAC1E,CAAA,EAAA,CACF,CACF,CACA4vE,WAAWj/Y,IAAI,CAAEmF,GAAG,CAAE,CACpB,IAAIkzC,QAAUlzC,GAAIkzC,CAAAA,OAAO,CACzB,MAAM,IAAK,CAAA,CACTA,QAAQzyC,IAAI,CAAC5F,IAAMmF,CAAAA,GAAAA,CAAAA,CACnB,GAAIA,GAAAA,CAAI+3Y,gBAAgB,CAAE,CACxB,KACF,CACA,GAAI,CAAC7kW,QAAQirF,MAAM,CAAC31H,MAAM,CAAE,CAC1B,KACF,CACA0qC,OAAUA,CAAAA,OAAAA,CAAQirF,MAAM,CAAC31H,MAAM,CAAC0qC,OAAO,CACvC,GAAI,CAACA,OAAAA,CAAS,CACZ,KACF,CACF,CACF,CACAmmW,gBAAiB//S,CAAAA,KAAK,CAAE,CACtB,MAAMtgD,IAAO,CAAA,IAAI,CAACo6D,OAAO,CAACn6D,qBAAqB,GAC/C,MAAMvyC,IAAAA,CAAO5P,IAAKmQ,CAAAA,KAAK,CAAC+xC,IAAAA,CAAKtyC,IAAI,CACjC,CAAA,MAAMuV,GAAMnlB,CAAAA,IAAAA,CAAKmQ,KAAK,CAAC+xC,IAAK/8B,CAAAA,GAAG,CAC/B85X,CAAAA,OAAAA,CAAUz8S,KAAMkb,CAAAA,OAAO,CAAG9tG,IAAAA,CAC1BsvY,QAAU18S,KAAMob,CAAAA,OAAO,CAAGz4F,IAC5B,CACA8+X,aAAAA,CAAc5zY,CAAC,CAAEC,CAAC,CAAE,CAClB,MAAM6xP,UAAAA,CAAa,IAAI,CAAC1xB,GAAG,CAACtrG,KAAK,CAACC,MAAM,CAACq/C,qBAAqB,CAACp0K,CAAE+0H,CAAAA,MAAM,CAAE90H,CAAAA,CAAE80H,MAAM,CACjF,CAAA,GAAI+8H,UAAe,GAAA,CAAA,CAAG,OAAOA,UAAAA,CAC7B,GAAI9xP,CAAE2yR,CAAAA,MAAM,EAAI,CAAC1yR,CAAE0yR,CAAAA,MAAM,CAAE,CACzB,OAAO,CAAC,CACV,CACA,GAAI,CAAC3yR,CAAE2yR,CAAAA,MAAM,EAAI1yR,CAAAA,CAAE0yR,MAAM,CAAE,CACzB,OAAO,CACT,CACA,GAAI,CAAC3yR,CAAAA,CAAE2yR,MAAM,EAAI,CAAC1yR,CAAE0yR,CAAAA,MAAM,CAAE,CAC1B,OAAO,CACT,CACA,GAAI3yR,CAAAA,CAAE2yR,MAAM,CAACA,MAAM,CAAClwJ,WAAW,EAAI,CAACxiI,CAAE0yR,CAAAA,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAAE,CAC/D,OAAO,CAAC,CACV,CACA,GAAIxiI,CAAAA,CAAE0yR,MAAM,CAACA,MAAM,CAAClwJ,WAAW,EAAI,CAACziI,CAAE2yR,CAAAA,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAAE,CAC/D,OAAO,CACT,CACA,OAAOxiI,CAAAA,CAAEilI,SAAS,CAAGllI,CAAEklI,CAAAA,SAAS,CAElCotQ,yBAAAA,CAA0BjvQ,MAAM,CAAE5+H,CAAC,CAAE0H,CAAC,CAAE,CACtC,MAAM0nY,SAAAA,CAAY,IAAI,CAACC,mBAAmB,CAACrvY,CAAAA,CAAG0H,CAAGk3H,CAAAA,MAAAA,CAAQ2rQ,IAAQA,CAAAA,CAAAA,IAAAA,CAAO,KACxE,MAAM+E,KAAAA,CAAQ,IAAI,CAACC,eAAe,CAACvvY,EAAG0H,CAAGk3H,CAAAA,MAAAA,CAAQ4rQ,IAAQA,CAAAA,CAAAA,IAAAA,CAAO,IAChE,CAAA,OAAO,IAAI,CAACgF,iBAAiB,CAAC5wQ,MAAAA,CAAQwwQ,SAAWE,CAAAA,KAAAA,CACnD,CACAJ,sBAAuB/1X,CAAAA,GAAG,CAAEylH,MAAM,CAAE,CAClC2rQ,KAAKlxX,MAAM,CAAC3uB,IAAI,CAACyuB,GAAIE,CAAAA,MAAM,EAC3BkxX,IAAK/wX,CAAAA,SAAS,CAAC9uB,IAAI,CAACyuB,GAAAA,CAAIK,SAAS,CACjC+wX,CAAAA,IAAAA,CAAKl5Y,GAAG,CAAC3G,IAAI,CAAC6/Y,KAAK/wX,SAAS,CAAA,CAAE/X,SAAS,CAACm9H,MAAOoN,CAAAA,OAAO,CAAG,CAAG/vI,CAAAA,CAAAA,GAAG,CAACsuY,IAAAA,CAAKlxX,MAAM,CAAA,CAC3E,MAAMi2X,KAAQ/E,CAAAA,IAAAA,CACd,MAAMkF,SAAAA,CAAY7wQ,MAAO6P,CAAAA,aAAa,CAAC6gQ,KAAMj2X,CAAAA,MAAM,CAAEgxX,IAAAA,CAAAA,CACrD,MAAM+E,SAAAA,CAAY,IAAI,CAACC,mBAAmB,CAACI,SAAUzvY,CAAAA,CAAC,CAAEyvY,SAAAA,CAAU/nY,CAAC,CAAEk3H,MAAAA,CAAQ4rQ,IAAQA,CAAAA,CAAAA,IAAAA,CAAO,IAC5F,CAAA,OAAO,IAAI,CAACgF,iBAAiB,CAAC5wQ,MAAAA,CAAQwwQ,SAAWE,CAAAA,KAAAA,CACnD,CACAE,iBAAkB5wQ,CAAAA,MAAM,CAAEwwQ,SAAS,CAAEE,KAAK,CAAE,CAC1C,IAAI5jZ,MAAS,CAAA,IAAA,CACb,IAAIgkZ,iBAAAA,CAAoB5rY,SACxB,IAAI,CAACwhC,SAAS,CAACzpC,IAAI,CAAC,IAAI,CAACC,YAAY,CACrC,CAAA,IAAI,IAAInQ,CAAAA,CAAI,EAAGkY,GAAM,CAAA,IAAI,CAACyhC,SAAS,CAAC15C,MAAM,CAAED,CAAAA,CAAIkY,GAAKlY,CAAAA,CAAAA,EAAAA,CAAI,CACvD,MAAM27C,OAAU,CAAA,IAAI,CAAChC,SAAS,CAAC35C,CAAE,CAAA,CACjC,GAAI,CAAC27C,QAAQgpF,MAAM,CAAC/8D,IAAI,CAAC,CAACnoE,EAAIwzI,OAAO+N,SAAS,CAAC14I,GAAG,CAAC7I,CAAK,CAAA,CAAA,CAAA,CACtD,QACF,CACA,GAAIk8C,OAAQ4mP,CAAAA,MAAM,EAAI5mP,OAAAA,CAAQ4mP,MAAM,CAACA,MAAM,CAAClwJ,WAAW,CAAE,CACvD,GAAI,CAACoxQ,SAAAA,CAAW,CACd,QACF,CACA,MAAMO,gBAAkB,IAAI,CAACC,aAAa,CAACR,SAAW9nW,CAAAA,OAAAA,CAAS,IAC/D,CAAA,CAAA,GAAIqoW,eAAmB,EAAA,CAAA,CAAG,CACxBjkZ,MAAAA,CAAS47C,OACT,CAAA,KACF,CACF,CAAO,KAAA,CACL,GAAI,CAACgoW,KAAO,CAAA,CACV,QACF,CACA,MAAMK,eAAkB,CAAA,IAAI,CAACC,aAAa,CAACN,KAAOhoW,CAAAA,OAAAA,CAAS,KAC3D,CAAA,CAAA,GAAIqoW,eAAmB,EAAA,CAAA,CAAG,CACxB,GAAIA,eAAAA,CAAkBD,iBAAmB,CAAA,CACvChkZ,MAAS47C,CAAAA,OAAAA,CACTooW,kBAAoBC,gBACtB,CACA,GAAIroW,OAAAA,CAAQ4mP,MAAM,CAAE,CAClBxiS,MAAS47C,CAAAA,OAAAA,CACT,KACF,CACF,CACF,CACF,CACA,OAAO57C,MACT,CACA2jZ,mBAAAA,CAAoBrvY,CAAC,CAAE0H,CAAC,CAAEk3H,MAAM,CAAEzlH,GAAG,CAAE,CACrC,MAAMyxB,EAAK,CAAA,IAAI,CAAC+wL,GAAG,CAACpmM,cAAc,CAACjkB,KAAK,CACxC,MAAMu5B,EAAAA,CAAK,IAAI,CAAC8wL,GAAG,CAACpmM,cAAc,CAAChkB,MAAM,CACzC,MAAM+6R,YAAc1tK,MAAOxxF,CAAAA,IAAI,CAACvlC,CAAC,CAAG+iC,EAAAA,CACpC,MAAM2hQ,YAAe3tK,CAAAA,MAAAA,CAAOxxF,IAAI,CAACliC,CAAC,CAAG2/B,GACrC,MAAMglW,UAAAA,CAAajxQ,MAAOxxF,CAAAA,IAAI,CAACptC,CAAC,CAAG4qC,EACnC,CAAA,MAAMklW,WAAcD,CAAAA,UAAAA,CAAavjG,WACjC,CAAA,MAAMyjG,YAAe,CAAC,CAAA,CAAA,CAAInxQ,MAAOxxF,CAAAA,IAAI,CAAC1lC,CAAC,EAAImjC,EAAAA,CAC3C,MAAMmlW,SAAAA,CAAYD,YAAexjG,CAAAA,YAAAA,CACjC,IAAI/N,EAAKx+R,CAAAA,CAAAA,CAAI4qC,EAAK,CAAA,IAAI,CAAC48D,OAAO,CAACqB,WAAW,CAC1C,IAAI41L,EAAAA,CAAK/2R,CAAImjC,CAAAA,EAAAA,CAAK,IAAI,CAAC28D,OAAO,CAACuB,YAAY,CAC3C,GAAIy1L,IAAMqxG,UAAcrxG,EAAAA,EAAAA,EAAMsxG,WAAerxG,EAAAA,EAAAA,EAAMsxG,YAAgBtxG,EAAAA,EAAAA,EAAMuxG,UAAW,CAClFxxG,EAAAA,CAAK5zP,EAAM4zP,EAAAA,EAAKqxG,CAAAA,UAAS,EAAKvjG,WAC9B7N,CAAAA,EAAAA,CAAK5zP,EAAM4zP,EAAAA,EAAKuxG,CAAAA,SAAQ,EAAKzjG,YAC7B9N,CAAAA,EAAAA,CAAK5zP,EAAK4zP,CAAAA,EAAAA,CACVtlR,GAAIE,CAAAA,MAAM,CAACnlB,GAAG,CAACsqS,EAAIC,CAAAA,EAAAA,CAAI,CACvBtlR,CAAAA,CAAAA,GAAAA,CAAIK,SAAS,CAACtlB,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,CAAC,GACzBilB,GAAI9nB,CAAAA,GAAG,CAAC3G,IAAI,CAACyuB,GAAAA,CAAIK,SAAS,CAAE/X,CAAAA,SAAS,CAAC,CAAA,CAAA,CAAGxF,GAAG,CAACkd,IAAIE,MAAM,CAAA,CACvD,OAAO,IACT,CACA,OAAO,KACT,CACAk2X,eAAAA,CAAgBvvY,CAAC,CAAE0H,CAAC,CAAEk3H,MAAM,CAAEzlH,GAAG,CAAE,CACjC,MAAMyxB,EAAAA,CAAK,IAAI,CAAC48D,OAAO,CAACqB,WAAW,CACnC,MAAMh+D,EAAAA,CAAK,IAAI,CAAC28D,OAAO,CAACuB,YAAY,CACpC,MAAMujM,YAAc1tK,MAAOxxF,CAAAA,IAAI,CAACvlC,CAAC,CAAG+iC,EAAAA,CACpC,MAAM2hQ,YAAe3tK,CAAAA,MAAAA,CAAOxxF,IAAI,CAACliC,CAAC,CAAG2/B,GACrC,MAAMglW,UAAAA,CAAajxQ,MAAOxxF,CAAAA,IAAI,CAACptC,CAAC,CAAG4qC,EACnC,CAAA,MAAMklW,WAAcD,CAAAA,UAAAA,CAAavjG,WACjC,CAAA,MAAMyjG,aAAe,CAAC,CAAInxQ,CAAAA,MAAAA,CAAOxxF,IAAI,CAAC1lC,CAAC,EAAImjC,EAC3C,CAAA,MAAMmlW,SAAYD,CAAAA,YAAAA,CAAexjG,aACjC,IAAI/N,EAAAA,CAAKx+R,CACT,CAAA,IAAIy+R,EAAK/2R,CAAAA,CAAAA,CACT,GAAI1H,CAAK6vY,EAAAA,UAAAA,EAAc7vY,CAAK8vY,EAAAA,WAAAA,EAAepoY,CAAKqoY,EAAAA,YAAAA,EAAgBtxG,IAAMuxG,SAAW,CAAA,CAC/ExxG,EAAK5zP,CAAAA,EAAAA,EAAM4zP,EAAAA,CAAKqxG,UAAS,CAAKvjG,CAAAA,WAAAA,CAC9B7N,EAAK5zP,CAAAA,EAAAA,EAAM4zP,EAAAA,CAAKuxG,SAAQ,CAAKzjG,CAAAA,YAAAA,CAC7B3tK,MAAOmQ,CAAAA,aAAa,CAACyvJ,EAAAA,CAAIC,GAAI7/J,MAAOgO,CAAAA,QAAQ,CAAEy9P,IAAAA,CAAAA,CAC9CzrQ,MAAOmQ,CAAAA,aAAa,CAACyvJ,EAAIC,CAAAA,EAAAA,CAAI7/J,MAAOoN,CAAAA,OAAO,CAAEs+P,IAAAA,CAAAA,CAC7CnxX,IAAIE,MAAM,CAAC3uB,IAAI,CAAC2/Y,IAChBlxX,CAAAA,CAAAA,GAAAA,CAAIK,SAAS,CAACtlB,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAAC,CAAA,CAAA,CACzBilB,IAAI9nB,GAAG,CAAC3G,IAAI,CAAC4/Y,IACb,CAAA,CAAA,OAAO,IACT,CACA,OAAO,KACT,CACAsF,aAAcz2X,CAAAA,GAAG,CAAEmuB,OAAO,CAAE4mP,MAAM,CAAE,CAClC,GAAI5mP,QAAQkrP,QAAQ,CAAE,CACpB,GAAI,IAAI,CAACo9G,aAAa,CAACz2X,GAAAA,CAAKmuB,OAAQkrP,CAAAA,QAAQ,CAAClrP,OAAO,CAAE4mP,MAAU,CAAA,CAAA,CAAA,CAAG,CACjE,OAAO,CAAC,CACV,CACF,CACA,IAAIjgR,KACJ,CAAA,GAAIigR,MAAQ,CAAA,CACVjgR,KAAQy+X,CAAAA,YAAAA,CAAauD,sBAAsB,CAAC3oW,OAC9C,EAAA,CAAA,KAAO,CACLr5B,KAAAA,CAAQy+X,aAAawD,qBAAqB,CAAC5oW,OAC7C,EAAA,CACA,MAAMkzJ,OAAAA,CAAUkyM,aAAayD,eAAe,CAAC7oW,OAAS4mP,CAAAA,MAAAA,CAAS5mP,OAAQkgQ,CAAAA,aAAa,CAAGlgQ,OAAQwhQ,CAAAA,YAAY,CAAE76R,KAAAA,CAAAA,CAC7G,OAAO+9X,iBAAAA,CAAkB7yX,IAAIE,MAAM,CAAEF,GAAI9nB,CAAAA,GAAG,CAAEmpM,OAAAA,CAChD,CACA,OAAO21M,eAAAA,CAAgB7oW,OAAO,CAAE8oW,oBAAoB,CAAEniY,KAAK,CAAE,CAC3D,IAAIu+R,UAAAA,CAAa4jG,oBACjB,CAAA,MAAMjqS,OAAS7+D,OAAQirF,CAAAA,MAAM,EAAIjrF,OAAAA,CAAQirF,MAAM,CAACpsB,MAAM,CACtD,GAAIA,MAAAA,CAAQ,CACV,MAAMizK,UAAa9xO,CAAAA,OAAAA,CAAQirF,MAAM,CAACpsB,MAAM,CAACizK,UAAU,EAAI0yH,SAAAA,CACvDR,YAAY5gZ,IAAI,CAAC48C,OAAQirF,CAAAA,MAAM,CAACriH,EAAE,EAClCq7X,cAAe7gZ,CAAAA,IAAI,CAAC4gZ,WAAAA,CAAAA,CAAa7pY,SAAS,CAAC,CAAC,CAC5CgqY,CAAAA,CAAAA,aAAAA,CAAc/gZ,IAAI,CAAC48C,OAAQirF,CAAAA,MAAM,CAACx3H,KAAK,CAAA,CACvCywY,YAAa9gZ,CAAAA,IAAI,CAAC+gZ,aAAAA,CAAAA,CAAehqY,SAAS,CAAC,CAAC,CAC5C6pY,CAAAA,CAAAA,WAAAA,CAAY7pY,SAAS,CAAC23Q,WAAWluQ,CAAC,CAAG+C,KAAMvG,CAAAA,CAAC,CAC5C6jY,CAAAA,cAAAA,CAAe9pY,SAAS,CAAC23Q,UAAAA,CAAW1xQ,CAAC,CAAGuG,KAAMvG,CAAAA,CAAC,EAC/C+jY,aAAchqY,CAAAA,SAAS,CAAC23Q,UAAAA,CAAWvxQ,CAAC,CAAGoG,MAAMjO,CAAC,CAAA,CAC9CwrY,YAAa/pY,CAAAA,SAAS,CAAC23Q,UAAAA,CAAWp5Q,CAAC,CAAGiO,KAAAA,CAAMjO,CAAC,CAAA,CAC7C0rY,iBAAkBhhZ,CAAAA,IAAI,CAAC8hT,UAAU,CAAC,CAAE,CAAA,CAAA,CAAEvwS,GAAG,CAACsvY,gBAAgBtvY,GAAG,CAACuvY,YAC9DG,CAAAA,CAAAA,kBAAAA,CAAmBjhZ,IAAI,CAAC8hT,UAAU,CAAC,CAAA,CAAE,CAAEvwS,CAAAA,GAAG,CAACsvY,cAAAA,CAAAA,CAAgBtvY,GAAG,CAACwvY,aAAAA,CAAAA,CAC/DG,eAAgBlhZ,CAAAA,IAAI,CAAC8hT,UAAU,CAAC,CAAA,CAAE,CAAEvwS,CAAAA,GAAG,CAACqvY,WAAAA,CAAAA,CAAarvY,GAAG,CAACwvY,eACzDI,cAAenhZ,CAAAA,IAAI,CAAC8hT,UAAU,CAAC,CAAA,CAAE,EAAEvwS,GAAG,CAACqvY,WAAarvY,CAAAA,CAAAA,GAAG,CAACuvY,YAAAA,CAAAA,CACxDh/F,WAAa,CACXk/F,iBAAAA,CACAC,kBACAC,CAAAA,eAAAA,CACAC,cACD,EACH,CACA,GAAI59X,KAAAA,CAAMjO,CAAC,CAAG,CAAG,CAAA,CACf,MAAMlF,IAAO0xS,CAAAA,UAAU,CAAC,CAAA,CAAE,CAACxsS,CAAC,CAC5B,MAAMjF,KAAAA,CAAQyxS,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAC7BwsS,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAAGlF,IAClB0xS,CAAAA,UAAU,CAAC,CAAA,CAAE,CAACxsS,CAAC,CAAGjF,KAClByxS,CAAAA,UAAU,CAAC,EAAE,CAACxsS,CAAC,CAAGjF,KAClByxS,CAAAA,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAAGlF,KACpB,CACA,GAAImT,KAAMvG,CAAAA,CAAC,CAAG,CAAA,CAAG,CACf,MAAM0I,OAASo8R,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAC9B,MAAM2I,GAAMm8R,CAAAA,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAC3B8kS,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAAG0I,MAClBo8R,CAAAA,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAAG0I,MAClBo8R,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAAG2I,GAClBm8R,CAAAA,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAAG2I,IACpB,CACA,GAAIpC,KAAAA,CAAMpG,CAAC,CAAG,CAAA,CAAG,CACf,MAAM7H,CAAIwsS,CAAAA,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CACzB,MAAM0H,CAAAA,CAAI8kS,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CACzB,MAAMG,EAAI2kS,UAAU,CAAC,CAAE,CAAA,CAAC3kS,CACxB2kS,CAAAA,UAAU,CAAC,CAAE,CAAA,CAACxsS,CAAC,CAAGwsS,UAAU,CAAC,CAAA,CAAE,CAACxsS,CAAC,CACjCwsS,UAAU,CAAC,CAAA,CAAE,CAAC9kS,CAAC,CAAG8kS,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAChC8kS,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAC3kS,CAAC,CAAG2kS,UAAU,CAAC,EAAE,CAAC3kS,CAAC,CACjC2kS,UAAU,CAAC,EAAE,CAACxsS,CAAC,CAAGA,CAClBwsS,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAC9kS,CAAC,CAAGA,CAClB8kS,CAAAA,UAAU,CAAC,CAAE,CAAA,CAAC3kS,CAAC,CAAGA,EACpB,CACA,OAAO2kS,UACT,CACA,OAAOyjG,sBAAAA,CAAuB3oW,OAAO,CAAE,CACrC,IAAIlsC,OAAAA,CAAUksC,OAAQirF,CAAAA,MAAM,CAC5B,MAAMqsM,YAAct3R,OAAQ4mP,CAAAA,MAAM,CAACA,MAAM,CAACjgR,KAAK,CAC/Co9X,iBAAkBn3Y,CAAAA,GAAG,CAAC0qU,WAAAA,CAAaA,WAAaA,CAAAA,WAAAA,CAAAA,CAChD,MAAMxjU,OAAW,EAAA,CAACA,OAAQ8yR,CAAAA,MAAM,CAAC,CAC/Bm9G,kBAAkBpiY,GAAG,CAAC7N,OAAQq4I,CAAAA,aAAa,EAC3Cr4I,CAAAA,CAAAA,OAAAA,CAAUA,QAAQwB,OACpB,CACA,OAAOyuY,iBACT,CACA,OAAO6E,qBAAAA,CAAsB5oW,OAAO,CAAE,CACpC,IAAIlsC,OAAUksC,CAAAA,OAAAA,CAAQirF,MAAM,CAC5B84Q,iBAAAA,CAAkBn3Y,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,GAC5B,MAAMkH,OAAAA,CAAQ,CACZiwY,iBAAAA,CAAkBpiY,GAAG,CAAC7N,QAAQq4I,aAAa,EAAA,CAAA,CAC3Cr4I,OAAUA,CAAAA,OAAAA,CAAQwB,OACpB,CACA,OAAOyuY,iBACT,CAxlBA33Y,WAAAA,CAAYi5Y,UAAU,CAAEvvY,OAAO,CAAC,CAC9B,IAAI,CAAC0jO,IAAI,CAAG,IACZ,CAAA,IAAI,CAACr5H,SAAS,CAAG,KACjB,CAAA,IAAI,CAACD,OAAO,CAAG,IACf,CAAA,IAAI,CAAChoC,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC0nC,MAAM,CAAG,CACd,CAAA,IAAI,CAACC,MAAM,CAAG,CACd,CAAA,IAAI,CAACS,UAAU,CAAG,IAAI,CAACY,SAAS,CAACzsG,IAAI,CAAC,IAAI,CAC1C,CAAA,IAAI,CAAC8rG,YAAY,CAAG,IAAI,CAACY,WAAW,CAAC1sG,IAAI,CAAC,IAAI,CAC9C,CAAA,IAAI,CAAC+rG,YAAY,CAAG,IAAI,CAACY,WAAW,CAAC3sG,IAAI,CAAC,IAAI,CAC9C,CAAA,IAAI,CAACgsG,aAAa,CAAG,IAAI,CAACY,YAAY,CAAC5sG,IAAI,CAAC,IAAI,CAChD,CAAA,IAAI,CAAC+wY,kBAAkB,CAAG,IAAI,CAACp8R,iBAAiB,CAAC30G,IAAI,CAAC,IAAI,CAC1D,CAAA,IAAI,CAACgxY,gBAAgB,CAAG,IAAI,CAACp8R,eAAe,CAAC50G,IAAI,CAAC,IAAI,CACtD,CAAA,IAAI,CAACkxY,mBAAmB,CAAG,IAAI,CAACF,gBAChC,CAAA,IAAI,CAACC,iBAAiB,CAAG,IAAI,CAACp8R,gBAAgB,CAAC70G,IAAI,CAAC,IAAI,CACxD,CAAA,IAAI,CAACD,YAAY,CAAG,IAAI,CAACqzY,aAAa,CAACpzY,IAAI,CAAC,IAAI,CAChD,CAAA,IAAI,CAACupC,SAAS,CAAG,EAAE,CACnB,IAAI,CAACmpW,eAAe,CAAG,IACvB,CAAA,IAAI,CAACC,eAAe,CAAG,IACvB,CAAA,IAAI,CAACT,gBAAgB,CAAG,EACxB,CAAA,IAAI,CAACE,kCAAkC,CAAG,EAC1C,CAAA,IAAI,CAACW,iBAAiB,CAAG,EACzB,CAAA,IAAI,CAACC,wBAAwB,CAAG,EAChC,CAAA,IAAI,CAACnC,SAAS,CAAG,CAACxvY,OAAAA,EAAWA,QAAQizY,QAAQ,GAAK,KAClD,CAAA,IAAI,CAACxD,SAAS,CAAG,CAACzvY,OAAWA,EAAAA,OAAAA,CAAQkzY,QAAQ,GAAK,KAClD,CAAA,IAAI,CAACnD,MAAM,CAAG,CAAC/vY,SAAWA,OAAQmzY,CAAAA,KAAK,GAAK,KAC5C,CAAA,IAAI,CAACrD,qBAAqB,CAAG,KAC7B,CAAA,GAAIl+Y,QAASR,CAAAA,KAAK,CAAE,CAClB,IAAI,CAAC4+Y,gBAAgB,CAAG,GAC1B,CACA,IAAI,CAACjpS,MAAM,CAACwoS,UACd,EAAA,CA0jBF,CAEAn/X,IAAKwwG,CAAAA,SAAS,CAAC/vG,KAAK,CAAGT,IAAAA,CAAKwwG,SAAS,CAACv8G,SAAS,CAC/CmG,IAAKo2G,CAAAA,SAAS,CAAC/vG,KAAK,CAAGrG,IAAKo2G,CAAAA,SAAS,CAACv8G,SAAS,CAC/CqM,IAAAA,CAAKkwG,SAAS,CAAC/vG,KAAK,CAAGH,KAAKkwG,SAAS,CAACv8G,SAAS,CAC/C,MAAM+uY,iBAAAA,CAAoBxsX,gBAC1B,MAAMysX,oBAAAA,CAAuBxsX,kBAC7B,CAAA,MAAMysX,uBAA0BxsX,CAAAA,oBAAAA,CAChC,MAAMysX,uBAA0BxsX,CAAAA,iBAAAA,CAChC,MAAMysX,oBAAAA,CAAuBxsX,gBAC7B,CAAA,MAAMysX,wBAA0BxsX,iBAChC,CAAA,MAAMysX,gBAAmB7rX,CAAAA,iBAAAA,CACzB,MAAM8rX,iBAAAA,CAAoB7rX,mBAC1B,MAAM8rX,wBAAAA,CAA2BrwX,kBACjC,CAAA,MAAMswX,kCAAqCrwX,CAAAA,4BAAAA,CAC3C,MAAMswX,wBAA2BvwX,CAAAA,kBAAAA,CACjC,MAAMwwX,kCAAAA,CAAqCvwX,4BAC3C,CAAA,MAAMwwX,cAAgB,MACtB,CAAA,MAAMC,aAAgB,CAAA,MAAA,CACtB,MAAMC,aAAAA,CAAgB,OACtB,MAAMC,aAAAA,CAAgB,MACtB,CAAA,MAAMC,aAAgB,CAAA,MAAA,CACtB,MAAMC,aAAgB,CAAA,MAAA,CACtB,MAAMC,aAAAA,CAAgB,MACtB,CAAA,MAAMC,cAAgB,MACtB,CAAA,MAAMC,aAAgB,CAAA,MAAA,CACtB,MAAMC,YAAAA,CAAe,MACrB,MAAMC,YAAAA,CAAe,KACrB,CAAA,MAAMC,YAAe,CAAA,KAAA,CACrB,MAAMC,YAAAA,CAAe,KACrB,CAAA,MAAMC,YAAe,CAAA,KAAA,CACrB,MAAMC,YAAAA,CAAe,MACrB,MAAMxS,SAAAA,CAAY,IAAI5xX,IAAAA,CACtB,SAASqkY,YAAAA,CAAav8W,MAAM,CAAEroC,IAAI,CAChC,CAAA,OAAO2nI,IAAKC,CAAAA,YAAY,CAACv/F,MAAQ,CAAA,IAAIulK,cAAe5tM,CAAAA,IAAAA,CAAAA,CACtD,CACA,SAAS6kZ,YAAYx8W,MAAM,CAAEroC,IAAI,CAAA,CAC/B,OAAO2nI,IAAAA,CAAKC,YAAY,CAACv/F,MAAAA,CAAQ,IAAIgzL,aAAAA,CAAcr7N,IACrD,CAAA,CAAA,CACA,SAAS8kZ,SAAUz8W,CAAAA,MAAM,CAAEroC,IAAI,CAC7B,CAAA,OAAO2nI,KAAKC,YAAY,CAACv/F,MAAQ,CAAA,IAAIikK,WAAYtsM,CAAAA,IAAAA,CAAAA,CACnD,CACA,SAAS+kZ,WAAY18W,CAAAA,MAAM,CAAEroC,IAAI,CAC/B,CAAA,OAAO2nI,KAAKC,YAAY,CAACv/F,MAAQ,CAAA,IAAIizL,aAAct7N,CAAAA,IAAAA,CAAAA,CACrD,CACA,SAASglZ,aAAAA,CAAc38W,MAAM,CAAEroC,IAAI,CAAA,CACjC,OAAO2nI,IAAKC,CAAAA,YAAY,CAACv/F,MAAAA,CAAQ,IAAI6yL,eAAAA,CAAgBl7N,MACvD,CACA,SAASilZ,UAAW58W,CAAAA,MAAM,CAAEroC,IAAI,EAC9B,OAAO2nI,IAAAA,CAAKC,YAAY,CAACv/F,MAAQ,CAAA,IAAI8yL,aAAan7N,IACpD,CAAA,CAAA,CACA,SAASklZ,cAAAA,CAAe78W,MAAM,CAAEroC,IAAI,CAClC,CAAA,OAAO2nI,IAAKC,CAAAA,YAAY,CAACv/F,MAAAA,CAAQ,IAAI+yL,gBAAAA,CAAiBp7N,IACxD,CAAA,CAAA,CACA,SAASqiO,UAAAA,CAAWh6L,MAAM,CAAEgT,SAAS,CAAEr7C,IAAAA,CAAO,EAAE,CAC9C,CAAA,MAAM8uM,KAAO,IAAI3C,QACjB2C,CAAAA,IAAAA,CAAKzzJ,SAAS,CAAGA,SACjByzJ,CAAAA,IAAAA,CAAK/mE,OAAO,CAAG/nI,IAAK+nI,CAAAA,OAAO,CAC3B+mE,IAAAA,CAAK9mE,QAAQ,CAAGhoI,IAAKgoI,CAAAA,QAAQ,CAC7B8mE,IAAAA,CAAK7mE,MAAM,CAAGjoI,IAAKioI,CAAAA,MAAM,CACzB6mE,IAAAA,CAAK5mE,GAAG,CAAGloI,IAAKkoI,CAAAA,GAAG,CACnB4mE,IAAAA,CAAK3mE,IAAI,CAAGnoI,IAAKmoI,CAAAA,IAAI,CACrB2mE,IAAAA,CAAK1mE,YAAY,CAAGpoI,IAAKooI,CAAAA,YAAY,CACrC0mE,IAAAA,CAAKzmE,YAAY,CAAGroI,IAAKqoI,CAAAA,YAAY,CACrCymE,IAAAA,CAAKnmG,OAAO,CAAG3oG,IAAK2oG,CAAAA,OAAO,CAC3B,OAAOg/B,IAAAA,CAAKC,YAAY,CAACv/F,MAAQymK,CAAAA,IAAAA,CAAM9uM,KACzC,CACA,SAASmlZ,kBAAmB98W,CAAAA,MAAM,CAAErrC,MAAM,CAAEihD,YAAY,CAAEjC,MAAM,CAAE6D,IAAI,CAAA,CACpE,IAAI24C,QACJ,CAAA,GAAI34C,IAAM,CAAA,CACR,MAAMliC,CAAAA,CAAI3gB,OAASA,MAAO+mB,CAAAA,KAAK,CAAGskB,MAAAA,CAAOtkB,KAAK,CAC9C,MAAM8N,CAAAA,CAAI70B,MAASA,CAAAA,MAAAA,CAAOgnB,MAAM,CAAGqkB,MAAOrkB,CAAAA,MAAM,CAChDw0E,QAAW25S,CAAAA,SAAAA,CAAUxrY,GAAG,CAACk5C,IAAKptC,CAAAA,CAAC,CAAGkL,CAAGkiC,CAAAA,IAAAA,CAAK1lC,CAAC,CAAG0X,CAAGguB,CAAAA,IAAAA,CAAKvlC,CAAC,CAAGqD,CAAAA,CAAGkiC,IAAKliC,CAAAA,CAAC,CAAGkU,CAAAA,EACxE,CACA+wG,kBAAmBv6F,CAAAA,MAAAA,CAAQrrC,MAAQg/C,CAAAA,MAAAA,CAAQw8C,QAC7C,EAAA,CACAv4F,OAAOmlZ,gBAAgB,CAACzhW,YAAa8sE,CAAAA,SAAS,CAAE,CAC9CnkC,eAAgB,CACdnsF,GAAAA,CAAK,UACH,CAAA,OAAO,IAAI,CAACqnC,IAAI,CAAC8kD,cAAc,CACjC,CACA3lF,GAAK,CAAA,SAAS25W,IAAI,CAAG,EACvB,CACF,CAAA,CAAA,CACArgX,MAAOC,CAAAA,cAAc,CAAC23C,YAAc,CAAA,yBAAA,CAA2B,CAC7D13C,GAAAA,CAAK,UACH,CAAA,OAAO,IACT,CACF,CAAA,CAAA,CACAF,MAAOmlZ,CAAAA,gBAAgB,CAACr7W,OAAAA,CAAQ0mF,SAAS,CAAE,CACzC6vP,IAAM,CAAA,CACJngX,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC0V,IAAI,GAAKipB,gBACvB,CAAA,CACAn4B,IAAK,SAAS25W,IAAI,CAChB,CAAA,IAAI,CAACzqW,IAAI,CAAGyqW,IAAOxhV,CAAAA,gBAAAA,CAAmBD,oBACxC,CACF,CACAwmX,CAAAA,WAAAA,CAAa,CACXllZ,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC0V,IAAI,GAAKopB,uBACvB,CACAt4B,CAAAA,GAAAA,CAAK,SAAS0+Y,WAAW,CACvB,CAAA,IAAI,CAACxvY,IAAI,CAAGwvY,WAAcpmX,CAAAA,uBAAAA,CAA0BJ,oBACtD,CACF,EACA2lD,UAAY,CAAA,CACVrkF,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAACqnC,IAAI,CAACg9C,UACnB,CACF,CACF,GACAvkF,MAAOC,CAAAA,cAAc,CAACg7C,cAAAA,CAAeu1E,SAAS,CAAE,YAAa,CAC3DtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IACT,CACF,GACAF,MAAOC,CAAAA,cAAc,CAACg7C,cAAAA,CAAeu1E,SAAS,CAAE,SAAU,CACxDtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IAAI,CAACshD,QAAQ,CAExB,CACAxhD,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,eAAeu1E,SAAS,CAAE,2BAA6B,CAAA,CAC3EtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,eAAeu1E,SAAS,CAAE,gBAAkB,CAAA,CAChEtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,eAAeu1E,SAAS,CAAE,qBAAuB,CAAA,CACrEtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,eAAeu1E,SAAS,CAAE,eAAiB,CAAA,CAC/DtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CAAA,CAAA,CACAF,MAAOC,CAAAA,cAAc,CAACg7C,cAAAA,CAAeu1E,SAAS,CAAE,4BAAA,CAA8B,CAC5EtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IACT,CACF,CAAA,CAAA,CACAF,MAAOC,CAAAA,cAAc,CAACg7C,cAAAA,CAAeu1E,SAAS,CAAE,aAAA,CAAe,CAC7DtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IACT,CACF,CAAA,CAAA,CACAF,MAAOC,CAAAA,cAAc,CAACg7C,cAAAA,CAAeu1E,SAAS,CAAE,wBAAA,CAA0B,CACxEtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IACT,CACF,CAAA,CAAA,CACAF,MAAOC,CAAAA,cAAc,CAACg7C,cAAAA,CAAeu1E,SAAS,CAAE,oBAAA,CAAsB,CACpEtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,cAAeu1E,CAAAA,SAAS,CAAE,2BAA6B,CAAA,CAC3EtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,cAAeu1E,CAAAA,SAAS,CAAE,iBAAmB,CAAA,CACjEtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACg7C,cAAeu1E,CAAAA,SAAS,CAAE,wBAA0B,CAAA,CACxEtwH,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAgzC,CAAAA,CAAAA,UAAWmC,CAAAA,OAAO,CAAGr1C,MAAAA,CAAO4U,MAAM,CAAC,IAAIs+B,UACvC,CAAA,CAAA,MAAMmyW,eAAkB,CAAA,IAAInyW,UAC5B,CAAA,MAAMoyW,eAAkB,CAAA,IAAIvwW,UAC5BkG,CAAAA,cAAeu1E,CAAAA,SAAS,CAAC+0R,gBAAgB,CAAG,SAASC,QAAQ,CAAEC,QAAQ,EACrE,MAAMtmT,iBAAAA,CAAoB,IAAI,CAACtiD,UAAU,CACzCwoW,gBAAgBnoZ,IAAI,CAACiiG,iBACrBkmT,CAAAA,CAAAA,eAAAA,CAAgBhyW,aAAa,CAAC8rD,kBAAkBprD,OAAO,CAAEyxW,QAAUC,CAAAA,QAAAA,CAAAA,CACnEJ,eAAgB5xW,CAAAA,aAAa,CAAC0rD,iBAAkBjrD,CAAAA,OAAO,CAAEsxW,QAAAA,CAAUC,QACnE,CAAA,CAAA,IAAI,CAAC/nW,aAAa,CAAC2nW,eACrB,EAAA,CACApqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAACk1R,wBAAwB,CAAG,SAASF,QAAQ,CAAEC,QAAQ,CAAEE,aAAa,CAAEC,aAAa,CAC3G,CAAA,MAAMzmT,kBAAoB,IAAI,CAACtiD,UAAU,CACzCwoW,eAAgBnoZ,CAAAA,IAAI,CAACiiG,iBACrBkmT,CAAAA,CAAAA,eAAAA,CAAgBhyW,aAAa,CAAC8rD,iBAAkBprD,CAAAA,OAAO,CAAEyxW,QAAUC,CAAAA,QAAAA,CAAAA,CACnEJ,eAAgB5xW,CAAAA,aAAa,CAAC0rD,iBAAAA,CAAkBjrD,OAAO,CAAEyxW,aAAAA,CAAeC,aACxE,CAAA,CAAA,IAAI,CAACloW,aAAa,CAAC2nW,eACrB,EAAA,CACApqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAACq1R,gBAAgB,CAAG,SAAS5wT,aAAa,CAAA,CAChE,MAAMkK,iBAAAA,CAAoB,IAAI,CAACtiD,UAAU,CACzCwoW,eAAAA,CAAgBnoZ,IAAI,CAACiiG,iBACrBkmT,CAAAA,CAAAA,eAAAA,CAAgBhyW,aAAa,CAAC4hD,aAAekK,CAAAA,iBAAAA,CAAkBnrD,cAAc,CAAEmrD,kBAAkBlrD,cAAc,CAAA,CAC/GoxW,eAAgB5xW,CAAAA,aAAa,CAACwhD,aAAAA,CAAekK,kBAAkBhrD,cAAc,CAAEgrD,iBAAkB/qD,CAAAA,cAAc,CAC/G,CAAA,IAAI,CAACsJ,aAAa,CAAC2nW,eACrB,EAAA,CACApqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAACs1R,wBAAwB,CAAG,SAAS7wT,aAAa,CAAE8wT,kBAAkB,CAC5F,CAAA,MAAM5mT,iBAAoB,CAAA,IAAI,CAACtiD,UAAU,CACzCwoW,eAAgBnoZ,CAAAA,IAAI,CAACiiG,iBAAAA,CAAAA,CACrBkmT,eAAgBhyW,CAAAA,aAAa,CAAC4hD,aAAekK,CAAAA,iBAAAA,CAAkBnrD,cAAc,CAAEmrD,iBAAkBlrD,CAAAA,cAAc,EAC/GoxW,eAAgB5xW,CAAAA,aAAa,CAACsyW,kBAAAA,CAAoB5mT,iBAAkBhrD,CAAAA,cAAc,CAAEgrD,iBAAkB/qD,CAAAA,cAAc,CACpH,CAAA,IAAI,CAACsJ,aAAa,CAAC2nW,eACrB,EAAA,CACApqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAAC98E,aAAa,CAAG,SAASC,QAAQ,CAAEC,UAAU,CAAEC,SAAS,CAAEC,UAAU,CAC3F,CAAA,MAAMqrD,iBAAoB,CAAA,IAAI,CAACtiD,UAAU,CACzCwoW,eAAgBnoZ,CAAAA,IAAI,CAACiiG,iBAAAA,CAAAA,CACrBkmT,gBAAgB3xW,aAAa,CAACC,QAAUC,CAAAA,UAAAA,CAAYC,SAAWC,CAAAA,UAAAA,CAAAA,CAC/D,IAAI,CAAC4J,aAAa,CAAC2nW,eAAAA,EACrB,CACApqW,CAAAA,cAAeu1E,CAAAA,SAAS,CAACw1R,WAAW,CAAG,UAAA,CACrC,OAAO,IAAI,CAACnpW,UAAU,CAAC1J,KACzB,CACA8H,CAAAA,eAAeu1E,SAAS,CAACy1R,WAAW,CAAG,SAAS3sI,QAAQ,EACtD+rI,eAAgBnoZ,CAAAA,IAAI,CAAC,IAAI,CAAC2/C,UAAU,CACpCwoW,CAAAA,eAAAA,CAAgBlyW,KAAK,CAAGmmO,QACxB,CAAA,IAAI,CAAC57N,aAAa,CAAC2nW,eACrB,EAAA,CACApqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAACu5C,aAAa,CAAG,SAAS5iI,KAAK,CAAA,CACrDm+W,gBAAgBpoZ,IAAI,CAAC,IAAI,CAAC4/C,UAAU,CACpCwoW,CAAAA,eAAgBn+W,CAAAA,KAAK,CAAGA,KAAAA,CACxB,IAAI,CAACyW,aAAa,CAAC0nW,eAAAA,EACrB,CACArqW,CAAAA,cAAeu1E,CAAAA,SAAS,CAAC01R,YAAY,CAAG,SAASt9Y,IAAI,CACnD08Y,CAAAA,eAAAA,CAAgBpoZ,IAAI,CAAC,IAAI,CAAC4/C,UAAU,CACpCwoW,CAAAA,gBAAgB18Y,IAAI,CAAGA,IACvB,CAAA,IAAI,CAACg1C,aAAa,CAAC0nW,eACrB,EAAA,CACArqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAAC21R,YAAY,CAAG,SAAStlZ,IAAI,CAAA,CACnDykZ,eAAgBpoZ,CAAAA,IAAI,CAAC,IAAI,CAAC4/C,UAAU,CACpCwoW,CAAAA,eAAAA,CAAgBzkZ,IAAI,CAAGA,IACvB,CAAA,IAAI,CAAC+8C,aAAa,CAAC0nW,eAAAA,EACrB,CACArqW,CAAAA,cAAAA,CAAeu1E,SAAS,CAAC41R,WAAW,CAAG,WACrC,OAAO,IAAI,CAACrpW,QAAQ,CACtB,CACA,MAAMspW,GAAMnoM,CAAAA,YAAAA,CACZ,MAAMooM,IAAAA,CAAOnoM,aACb,CAAA,MAAMooM,WAAarlM,gBACnB,CAAA,MAAM1oD,YAAe,CAAA,IAAIguP,KAAM,CAAA,GAAI,CACjCtmZ,GAAAA,CAAKnD,MAAM,CAAEE,IAAI,CAAA,CACf,OAAO0iI,YAAaz/H,CAAAA,GAAG,CAAC+tO,cAAAA,EAAAA,CAAiBlmM,cAAc,CAAE3H,qBAAqBlgC,GAAG,CAACjD,IACpF,CAAA,CAAA,CACAyJ,GAAK3J,CAAAA,MAAM,CAAEE,IAAI,CAAE6I,KAAK,CACtB65H,CAAAA,YAAAA,CAAaz/H,GAAG,CAAC+tO,iBAAiBlmM,cAAc,CAAE3H,mBAAqB15B,CAAAA,CAAAA,GAAG,CAACzJ,IAAAA,CAAM6I,OACjF,OAAO,IACT,CACF,CAAA,CAAA,CACA9F,MAAOC,CAAAA,cAAc,CAACu3M,KAAMhnF,CAAAA,SAAS,CAAE,iBAAA,CAAmB,CACxDtwH,GAAAA,CAAK,WACH,OAAOusI,kBAAAA,CAAmBwhG,cAAiBlmM,EAAAA,CAAAA,cAAc,CAC3D,CACF,GACA/nC,MAAOC,CAAAA,cAAc,CAACu3M,KAAAA,CAAMhnF,SAAS,CAAE,WAAY,CACjD9pH,GAAAA,CAAK,SAASZ,KAAK,CACjB,CAAA,IAAI,CAACk1I,GAAG,CAAC54F,KAAK,CAAGt8C,MACnB,CAAA,CACA5F,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC86I,GAAG,CAAC54F,KAAK,CAEzB,CAAA,CAAA,CACApiD,MAAOC,CAAAA,cAAc,CAACu3M,KAAAA,CAAMhnF,SAAS,CAAE,QAAA,CAAU,CAC/C9pH,GAAAA,CAAK,SAASZ,KAAK,EACjB,IAAI,CAACk1I,GAAG,CAACn3I,GAAG,CAAGiC,MACjB,CACA5F,CAAAA,GAAAA,CAAK,UACH,CAAA,OAAO,IAAI,CAAC86I,GAAG,CAACn3I,GAAG,CAEvB,CACA7D,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACu3M,KAAAA,CAAMhnF,SAAS,CAAE,UAAY,CAAA,CACjD9pH,IAAK,SAASZ,KAAK,CACjB,CAAA,IAAI,CAACk1I,GAAG,CAACprH,KAAK,CAAG9pB,MACnB,CAAA,CACA5F,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC86I,GAAG,CAACprH,KAClB,CACF,CACA5vB,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACu3M,KAAMhnF,CAAAA,SAAS,CAAE,YAAc,CAAA,CACnD9pH,GAAK,CAAA,SAASZ,KAAK,CAAA,CACjB,IAAI,CAACk1I,GAAG,CAAC+9B,OAAO,CAAGjzK,MACrB,EACA5F,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC86I,GAAG,CAAC+9B,OAClB,CACF,CAAA,CAAA,CACA/4K,MAAOC,CAAAA,cAAc,CAACu3M,KAAMhnF,CAAAA,SAAS,CAAE,aAAA,CAAe,CACpD9pH,GAAAA,CAAK,SAASZ,KAAK,CAAG,EAAA,CACtB5F,GAAK,CAAA,UAAA,CACH,OAAO+F,SACT,CACF,CACAjG,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACu3M,KAAMhnF,CAAAA,SAAS,CAAE,iBAAmB,CAAA,CACxD9pH,GAAK,CAAA,SAASZ,KAAK,CAAA,GACnB5F,GAAK,CAAA,UAAA,CACH,OAAO+F,SACT,CACF,CAAA,CAAA,CACAjG,OAAOC,cAAc,CAACu3M,KAAMhnF,CAAAA,SAAS,CAAE,WAAA,CAAa,CAClD9pH,GAAK,CAAA,SAASZ,KAAK,CAAA,EACnB5F,CAAAA,GAAAA,CAAK,WACH,OAAO+F,SACT,CACF,CAAA,CAAA,CACAjG,MAAOC,CAAAA,cAAc,CAACm/K,gBAAiB5uD,CAAAA,SAAS,CAAE,gBAAA,CAAkB,CAClEtwH,GAAAA,CAAK,WACH,OAAO,IACT,CACF,CAAA,CAAA,CACAF,MAAOC,CAAAA,cAAc,CAACu3M,KAAMhnF,CAAAA,SAAS,CAAE,WAAA,CAAa,CAClDtwH,GAAAA,CAAK,WACH,OAAO,IACT,CACF,CAAA,CAAA,CACA,CACE,KAAA,CACA,KACA,IACA,CAAA,IAAA,CACA,GACA,CAAA,GAAA,CACD,CAAC4K,OAAO,CAAC,CAACzH,IAAAA,CAAMW,KACfhE,GAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACu3M,MAAMhnF,SAAS,CAAE,CAAC,iBAAiB,EAAEntH,IAAAA,CAAK,CAAC,CAAE,CACjEnD,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC+3M,oBAAoB,CAACj0M,KAAM,CACzC,CACA0C,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CACjB,CAAA,IAAI,CAACmyM,oBAAoB,CAACj0M,KAAAA,CAAM,CAAG8B,KACnC,CAAA,IAAI,CAACsoK,aAAa,CAAG,KACvB,CACF,CAAA,EACF,CACApuK,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACu3M,MAAMhnF,SAAS,CAAE,QAAU,CAAA,CAC/CtwH,GAAK,CAAA,UAAA,CACH,GAAI,CAAC,IAAI,CAACumZ,OAAO,CAAE,CACjB,IAAI,CAACA,OAAO,CAAG,GAAE,CAEnB,OAAO,IAAI,CAACA,OACd,CACF,CAAA,CAAA,CACA,SAASC,qBAAsBC,CAAAA,WAAW,CAAEllZ,IAAI,CAAEmlZ,OAAAA,CAAU,EAAE,CAC5D5mZ,CAAAA,MAAAA,CAAOC,cAAc,CAAC0mZ,WAAYn2R,CAAAA,SAAS,CAAE/uH,IAAM,CAAA,CACjDiF,GAAK,CAAA,SAASZ,KAAK,CAAA,GACnB5F,GAAK,CAAA,UAAA,CACH,OAAO+F,SACT,CACF,CAAA,EACF,CACAygZ,qBAAsBvrO,CAAAA,KAAAA,CAAO,cAC7BurO,CAAAA,CAAAA,qBAAAA,CAAsBvrO,KAAO,CAAA,WAAA,CAAA,CAC7BurO,sBAAsBvrO,KAAO,CAAA,aAAA,CAAA,CAC7BurO,qBAAsBvrO,CAAAA,KAAAA,CAAO,mBAC7BurO,CAAAA,CAAAA,qBAAAA,CAAsBvrO,MAAO,wBAC7BurO,CAAAA,CAAAA,qBAAAA,CAAsBvrO,KAAO,CAAA,YAAA,CAAA,CAC7BurO,qBAAsBvrO,CAAAA,KAAAA,CAAO,gBAC7BurO,qBAAsBvrO,CAAAA,KAAAA,CAAO,oBAC7BurO,CAAAA,CAAAA,qBAAAA,CAAsBvrO,KAAO,CAAA,yBAAA,CAAA,CAC7BurO,sBAAsBvrO,KAAO,CAAA,YAAA,CAAA,CAC7BurO,qBAAsBvrO,CAAAA,KAAAA,CAAO,gBAC7BurO,CAAAA,CAAAA,qBAAAA,CAAsB7gE,eAAiB,CAAA,WAAA,CAAa,wCACpD6gE,CAAAA,CAAAA,qBAAAA,CAAsB7gE,eAAiB,CAAA,YAAA,CAAc,yCACrD6gE,CAAAA,CAAAA,qBAAAA,CAAsB7gE,gBAAiB,aAAe,CAAA,0CAAA,CAAA,CACtD6gE,qBAAsB7gE,CAAAA,eAAAA,CAAiB,cAAgB,CAAA,2CAAA,CAAA,CACvD6gE,sBAAsB7gE,eAAiB,CAAA,kBAAA,CAAoB,gDAC3D6gE,CAAAA,CAAAA,qBAAAA,CAAsB7gE,eAAiB,CAAA,mBAAA,CAAqB,kDAC5DpzK,CAAAA,eAAAA,CAAgBjiD,SAAS,CAACqwI,iBAAiB,CAAG,SAAS9lG,IAAI,CAAA,CACzDkzE,cAAiB4yB,EAAAA,CAAAA,iBAAiB,CAAC9lG,IAAAA,EACrC,CACAttB,CAAAA,YAAAA,CAAajd,SAAS,CAACq2R,QAAQ,CAAG,YAClC15N,CAAAA,KAAM38D,CAAAA,SAAS,CAACmuF,SAAS,CAAG,SAAS36M,KAAK,CACxC,CAAA,OAAO,IAAI,CAACq4C,OAAO,CAACr4C,KAAM,CAC5B,CACA0/I,CAAAA,SAAUlzB,CAAAA,SAAS,CAACs2R,WAAW,CAAG,UAChC,CAAA,OAAO,IAAI,CAACrjQ,QAAQ,CAEtBC,CAAAA,SAAAA,CAAUlzB,SAAS,CAACu2R,OAAO,CAAG,UAAA,CAC5B,OAAO,IAAI,CAACtlZ,IAAI,CAElBiiJ,CAAAA,SAAUlzB,CAAAA,SAAS,CAACw2R,OAAO,CAAG,UAC5B,CAAA,OAAO,IAAI,CAAClpZ,IACd,CACA4lJ,CAAAA,SAAAA,CAAUlzB,SAAS,CAACy2R,OAAO,CAAG,WAC5B,OAAO,IAAI,CAACxtQ,IAAI,CAElBiK,CAAAA,SAAAA,CAAUlzB,SAAS,CAAC02R,SAAS,CAAG,UAC9B,CAAA,OAAO,IAAI,CAAC93Y,MAAM,CAEpBs0I,CAAAA,SAAAA,CAAUlzB,SAAS,CAAC22R,OAAO,CAAG,SAAS1lZ,IAAI,CAAA,CACzC,IAAI,CAACA,IAAI,CAAGA,KACd,CACAzB,CAAAA,MAAAA,CAAOC,cAAc,CAACo4J,QAAAA,CAAS7nC,SAAS,CAAE,QAAU,CAAA,CAClD9pH,IAAK,SAASZ,KAAK,CAAG,EAAA,CACtB5F,GAAK,CAAA,UAAA,CACH,OAAO,IACT,CACF,CACAF,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAACo4J,SAAS7nC,SAAS,CAAE,OAAS,CAAA,CACjD9pH,GAAK,CAAA,SAASZ,KAAK,CACjB,CAAA,IAAI,CAAC+2C,UAAU,CAAC1J,KAAK,CAAGrtC,MAC1B,CAAA,CACA5F,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC28C,UAAU,CAAC1J,KACzB,CACF,CAAA,CAAA,CACAnzC,OAAOC,cAAc,CAAC82N,gBAAiBvmG,CAAAA,SAAS,CAAE,WAAA,CAAa,CAC7DtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAACg0N,KAAK,CAAG,GACtB,CAAA,CACAxtN,GAAK,CAAA,SAASZ,KAAK,CAAA,CACjB,IAAI,CAACouN,KAAK,CAAGpuN,KAAAA,CAAQ,IACvB,CACF,GACA9F,MAAOC,CAAAA,cAAc,CAAC82N,gBAAAA,CAAiBvmG,SAAS,CAAE,iBAAmB,CAAA,CACnEtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC6lN,UAAU,CAExBr/M,CAAAA,GAAAA,CAAK,SAASZ,KAAK,CACjB,CAAA,IAAI,CAACigN,UAAU,CAAGjgN,MACpB,CACF,CACA9F,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAAC82N,gBAAAA,CAAiBvmG,SAAS,CAAE,YAAc,CAAA,CAC9DtwH,IAAK,UACH,CAAA,MAAM0xL,IAAOl0L,CAAAA,IAAAA,CAAKk0L,IAAI,CAACl0L,KAAKuc,GAAG,CAAC,IAAI,CAAC+5M,kBAAkB,CAAGxiN,KAAKC,UAAU,CAAG,CAC5E,CAAA,CAAA,CAAA,OAAO,IAAI,CAACsiN,mBAAmB,CAAGniC,IACpC,CACAlrL,CAAAA,GAAAA,CAAK,SAASZ,KAAK,EACjB,IAAI,CAACiuN,mBAAmB,CAAGr2N,IAAKma,CAAAA,GAAG,CAAC/R,KACpC,CAAA,CAAA,GAAIA,KAAS,EAAA,CAAA,CAAG,CACd,IAAI,CAACkuN,kBAAkB,CAAG,EAC5B,CAAA,KAAO,CACL,IAAI,CAACA,kBAAkB,CAAG,GAC5B,CACF,CACF,CAAA,CAAA,CACA,SAASozL,YAAaluV,CAAAA,OAAO,CAAEmuV,OAAO,CACpCrnZ,CAAAA,MAAAA,CAAOC,cAAc,CAAC82N,gBAAAA,CAAiBvmG,SAAS,CAAE62R,OAAS,CAAA,CACzDnnZ,IAAK,UACH,CAAA,OAAO,IAAI,CAACg5D,OAAQ,CACtB,EACAxyD,GAAK,CAAA,SAASZ,KAAK,CAAA,CACjB,IAAI,CAACozD,OAAQ,CAAA,CAAGpzD,MAClB,CACF,CACF,EAAA,CACA,SAASwhZ,cAAAA,CAAe7lZ,IAAI,CAC1BzB,CAAAA,MAAAA,CAAOC,cAAc,CAAC82N,gBAAiBvmG,CAAAA,SAAS,CAAE/uH,IAAM,CAAA,CACtDvB,GAAK,CAAA,UAAA,CACH,OAAO,IACT,EACAwG,GAAK,CAAA,SAASZ,KAAK,CAAA,EACrB,CAAA,EACF,CACAwhZ,cAAe,CAAA,WAAA,CAAA,CACfA,cAAe,CAAA,aAAA,CAAA,CACfA,cAAe,CAAA,cAAA,CAAA,CACfA,eAAe,aACfF,CAAAA,CAAAA,YAAAA,CAAa,cAAgB,CAAA,iBAAA,CAAA,CAC7BA,YAAa,CAAA,eAAA,CAAiB,oBAC9BA,YAAa,CAAA,oBAAA,CAAsB,uBACnCA,CAAAA,CAAAA,YAAAA,CAAa,qBAAuB,CAAA,wBAAA,CAAA,CACpCA,aAAa,qBAAuB,CAAA,wBAAA,CAAA,CACpCA,YAAa,CAAA,sBAAA,CAAwB,yBACrCA,CAAAA,CAAAA,YAAAA,CAAa,mBAAoB,qBACjCA,CAAAA,CAAAA,YAAAA,CAAa,oBAAsB,CAAA,uBAAA,CAAA,CACnCA,YAAa,CAAA,kBAAA,CAAoB,uBACjCA,YAAa,CAAA,YAAA,CAAc,gBAC3BA,CAAAA,CAAAA,YAAAA,CAAa,gBAAkB,CAAA,qBAAA,CAAA,CAC/B,SAASG,aAAc9lZ,CAAAA,IAAI,CAAEy3D,OAAO,CAClC,CAAA,GAAIz3D,OAAS,MAAQ,CAAA,CACnBzB,MAAOC,CAAAA,cAAc,CAACmqN,uBAAAA,CAAwB55F,SAAS,CAAE/uH,IAAAA,CAAM,CAC7DvB,GAAAA,CAAK,UACH,CAAA,OAAO,IAAI,CAACokN,UAAU,CAACprJ,OAAAA,EAAWz3D,IAAK,CACzC,EACAiF,GAAK,CAAA,SAASZ,KAAK,CAAA,CACjB,IAAI,CAACw+M,UAAU,CAACprJ,OAAAA,EAAWz3D,IAAK,CAAA,CAAGqE,MACrC,CACF,CACF,EAAA,CACF,CACAyhZ,aAAAA,CAAc,YAAc,CAAA,eAAA,CAAA,CAC5B,MAAMC,WAAAA,CAAc,IAAItmM,gBACxB,CAAA,MAAMumM,mBAAsBznZ,CAAAA,MAAAA,CAAO0nZ,mBAAmB,CAACF,aACvD,IAAI,MAAMG,SAAaF,IAAAA,mBAAAA,CAAoB,CACzCF,aAAAA,CAAcE,mBAAmB,CAACE,SAAAA,CAAU,EAC9C,CACA3xK,aAAcxlH,CAAAA,SAAS,CAACo3R,YAAY,CAAG,SAASz/W,EAAE,CAChD,CAAA,OAAO,IAAI,CAACjoC,GAAG,CAACioC,EAAAA,CAClB,CACAnoC,CAAAA,MAAAA,CAAOC,cAAc,CAAC6pY,aAAAA,CAAct5Q,SAAS,CAAE,KAAO,CAAA,CACpDtwH,IAAK,UACH,CAAA,OAAO,IAAI,CAAC0oY,SACd,CACF,CAAA,CAAA,CACA5oY,MAAOC,CAAAA,cAAc,CAAC6pY,aAAAA,CAAct5Q,SAAS,CAAE,WAAY,CACzDtwH,GAAAA,CAAK,UACH,CAAA,OAAO,IAAI,CAACgnY,cAAc,CAE9B,CACAlnY,CAAAA,CAAAA,MAAAA,CAAOC,cAAc,CAAC6pY,cAAct5Q,SAAS,CAAE,UAAY,CAAA,CACzDtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAACinY,cACd,CACF,CAAA,CAAA,CACA,MAAMlvR,aAAgB,CAAA,SAAA,CACtB,MAAMC,WAAAA,CAAc,OACpB,CAAA,MAAMuD,gBAAkB,WACxB,CAAA,MAAMD,eAAkB,CAAA,WAAA,CACxB,MAAME,aAAAA,CAAgB,UACtB,MAAMC,gBAAAA,CAAmB,YACzB,CAAA,MAAM2H,gBAAmB,CAAA,YAAA,CACzB,MAAMC,cAAAA,CAAiB,UACvB,CAAA,MAAMC,eAAkB,CAAA,WAAA,CACxB,MAAMC,iBAAAA,CAAoB,cAC1B,MAAM9B,sBAAAA,CAAyB,kBAC/B,CAAA,MAAMC,yBAA4B,CAAA,qBAAA,CAClC,MAAM4pR,YAAe,CAAA,QAAA,CACrB,MAAM75G,iBAAAA,CAAoB,aAC1B,CAAA,MAAMC,gBAAkB,WACxB5xR,CAAAA,MAAAA,CAAOC,cAAc,CAACi/Y,YAAa1uR,CAAAA,SAAS,CAAE,OAAS,CAAA,CACrDtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC04G,UAAU,CAAG,CAAC,CAC5B,CACF,CAAA,CAAA,CACA54G,OAAOC,cAAc,CAACs4G,UAAWiY,CAAAA,SAAS,CAAE,OAAA,CAAS,CACnDtwH,GAAK,CAAA,UAAA,CACH,OAAO,IAAI,CAAC04G,UAAU,CAAG,CAAC,CAC5B,CACF,CAAA,CAAA,CACA,MAAMivS,qBAAAA,CAAwBlyH,gBAC9B,MAAMmyH,sBAAAA,CAAyBlyH,gBAC/B,CAAA,MAAMmyH,wBAA2BlyH,CAAAA,kBAAAA,CACjC,MAAMmyH,0BAA6BlyH,CAAAA,sBAAAA,CACnC,MAAMmyH,6BAAAA,CAAgClyH,yBACtC,CAAA,MAAMmyH,+BAAiClyH,0BACvC,CAAA,MAAMmyH,oBAAuBlyH,CAAAA,oBAAAA,CAC7B,MAAMmyH,yBAAAA,CAA4BlyH,0BAClC,MAAMmyH,4BAAAA,CAA+BlyH,4BACrC,CAAA,MAAMmyH,8BAAiClyH,CAAAA,8BAAAA,CACvC,MAAMmyH,4BAA+BlyH,CAAAA,4BACrC95B,CAAAA,OAAAA,CAAQ/rI,SAAS,CAACg4R,YAAY,CAAG,UAAA,CAC/B,OAAO,CAAC,CAACv/Y,QAAAA,CAASg3F,iBAAiB,CAErCs8J,CAAAA,OAAAA,CAAQ/rI,SAAS,CAACi4R,gBAAgB,CAAG,SAAS3uW,OAAO,CAAEuK,OAAO,CAAEx5C,KAAK,EACnEivC,OAAUA,CAAAA,OAAAA,EAAW,IAAI,CAAC/R,cAAc,CAACmU,MAAM,CAC/C,MAAMh4C,CAAI,CAAA,UAAA,CACRmgD,OACAp7C,EAAAA,CAAAA,QAAAA,CAAS5I,mBAAmB,CAAC,kBAAA,CAAoB6D,CACnD,EAAA,CAAA,CACA,MAAM5D,CAAAA,CAAI,WACRuK,KACA5B,EAAAA,CAAAA,QAAAA,CAAS5I,mBAAmB,CAAC,iBAAmBC,CAAAA,CAAAA,EAClD,EACA,GAAI+jD,OAAAA,CAAS,CACXp7C,QAAAA,CAAS7I,gBAAgB,CAAC,mBAAoB8D,CAAG,CAAA,KAAA,EACnD,CACA,GAAI2G,KAAO,CAAA,CACT5B,SAAS7I,gBAAgB,CAAC,iBAAmBE,CAAAA,CAAAA,CAAG,KAClD,EAAA,CACA,GAAIw5C,OAAQimD,CAAAA,iBAAiB,CAAE,CAC7BjmD,OAAQimD,CAAAA,iBAAiB,CAAC2oT,OAAQC,CAAAA,oBAAoB,EACxD,CAAA,KAAO,CACL99Y,KAAAA,GACF,CACF,CACA0xP,CAAAA,OAAQ/rI,CAAAA,SAAS,CAACo4R,iBAAiB,CAAG,SAASvkW,OAAO,CACpD,CAAA,MAAMngD,CAAI,CAAA,UAAA,CACRmgD,UACAp7C,QAAS5I,CAAAA,mBAAmB,CAAC,kBAAA,CAAoB6D,CACnD,EAAA,CAAA,CACA,GAAImgD,OAAS,CAAA,CACXp7C,QAAS7I,CAAAA,gBAAgB,CAAC,kBAAA,CAAoB8D,EAAG,KACnD,EAAA,CACA+E,QAAS+2F,CAAAA,cAAc,GACzB,CACAu8J,CAAAA,OAAQ/rI,CAAAA,SAAS,CAACq4R,WAAW,CAAG,SAASpnZ,IAAI,CAAA,CAC3C,MAAMwpD,KAAAA,CAAQ,IAAI,CAAC8zM,MAAM,CAAC9hM,IAAI,CAACx7D,IAAAA,CAAAA,CAC/B,GAAIwpD,KAAAA,CAAO,CACT,OAAOA,MAAMjiD,GACf,CACA,OAAO,IACT,CACAuzP,CAAAA,OAAQ/rI,CAAAA,SAAS,CAAC+zH,SAAS,CAAG,SAASv7O,GAAG,CAAEvD,QAAQ,CAClD,CAAA,IAAI,CAACs5P,MAAM,CAACxa,SAAS,CAACv7O,GAAKvD,CAAAA,QAAAA,EAC7B,CACA82P,CAAAA,QAAQ/rI,SAAS,CAAC2zH,kBAAkB,CAAG,SAASn7O,GAAG,CAAEvD,QAAQ,CAAA,CAC3D,IAAI,CAACs5P,MAAM,CAAC5a,kBAAkB,CAACn7O,GAAAA,CAAKvD,QACtC,EAAA,CACA82P,CAAAA,OAAAA,CAAQ/rI,SAAS,CAAC4zH,iBAAiB,CAAG,SAASp7O,GAAG,CAAEvD,QAAQ,CAC1D,CAAA,IAAI,CAACs5P,MAAM,CAAC3a,iBAAiB,CAACp7O,GAAKvD,CAAAA,QAAAA,EACrC,CACAqtT,CAAAA,cAAetiM,CAAAA,SAAS,CAACs4R,UAAU,CAAG,SAASz3Q,OAAO,CACpD,CAAA,IAAI,CAACrgI,OAAO,CAAGqgI,QACjB,CAAA,CACArxI,MAAOC,CAAAA,cAAc,CAACuiU,kBAAmBhyM,CAAAA,SAAS,CAAE,UAAA,CAAY,CAC9DtwH,GAAAA,CAAK,WACH,OAAO,IAAI,CAAC0V,IAAI,CAClB,CACAlP,GAAK,CAAA,SAASkP,IAAI,CAAA,CAChB,IAAI,CAACA,IAAI,CAAGA,KACd,CACF,CAAA,CACA4sT,CAAAA,kBAAAA,CAAmBhyM,SAAS,CAACu4R,gBAAgB,CAAG,UAAA,CAC9C,IAAI,CAACxjF,cAAc,GACrB,CACAwB,CAAAA,wBAAAA,CAAyBv2M,SAAS,CAACk9M,UAAU,CAAG,WAC9C,GAAIl7O,SAAAA,CAAUp0F,MAAM,GAAK,CAAG,CAAA,CAC1B,IAAI,CAAC87M,OAAO,CAACh9M,IAAI,CAACs1F,SAAS,CAAC,CAAE,CAAA,EAChC,CAAO,KAAA,CACL,IAAI,CAAC0nH,OAAO,CAACxzM,GAAG,CAAC8rF,SAAS,CAAC,CAAA,CAAE,CAAEA,SAAS,CAAC,CAAA,CAAE,CAAEA,SAAS,CAAC,CAAA,CAAE,EAC3D,CACF,CAEA,CAAMw2T,MAAAA,QAAAA,CAaJplZ,KAAMnC,CAAAA,IAAI,CAAE,CACV,GAAI,CAAC,IAAI,CAACuP,OAAO,CAAE,CACjB,MACF,CACA,GAAI,IAAI,CAACi4Y,WAAW,CAAG,IAAI,CAACC,aAAa,CAAC9qZ,MAAM,CAAE,CAChD,IAAI,CAAC8qZ,aAAa,CAACjiZ,MAAM,CAAC,IAAI,CAACgiZ,WAAW,EAC5C,CACA,MAAM95Y,IAAM,IAAI,CAACg6Y,YACjB,CAAA,IAAI,CAACA,YAAY,CAAG,IAAI,CAACC,QAAQ,CACjC,IAAI,CAACA,QAAQ,CAAG,IAAI,CAACF,aAAa,CAClC,IAAI,CAACA,aAAa,CAAG/5Y,GACrB,CAAA,IAAI,CAAC85Y,WAAW,CAAG,CACnB,CAAA,IAAI,CAACI,IAAI,CAAC5nZ,IACZ,EAAA,CACA4nZ,IAAK5nZ,CAAAA,IAAI,CAAE,CACT,GAAI,CAAC,IAAI,CAACuP,OAAO,CAAE,CACjB,MACF,CACA,MAAMq0G,SAAY71G,CAAAA,GAAAA,EAAAA,CAClB,GAAI,IAAI,CAACy5Y,WAAW,CAAG,CAAG,CAAA,CACxB,MAAM7wM,IAAO,CAAA,IAAI,CAAC8wM,aAAa,CAAC,IAAI,CAACD,WAAW,CAAG,CAAE,CACrD7wM,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAG/yF,SAAY+yF,CAAAA,IAAI,CAAC,CAAA,EAAE,CACxB,KAAA,GAAI,IAAI,CAACgxM,QAAQ,CAAChrZ,MAAM,CAAG,CAAA,CAAG,CACnC,MAAMg6M,IAAO,CAAA,IAAI,CAACgxM,QAAQ,CAAC,IAAI,CAACA,QAAQ,CAAChrZ,MAAM,CAAG,CAAA,CAAE,CACpDg6M,IAAI,CAAC,EAAE,CAAG/yF,SAAAA,CAAY+yF,IAAI,CAAC,CAAE,EAC/B,CACA,GAAI,IAAI,CAAC6wM,WAAW,EAAI,IAAI,CAACC,aAAa,CAAC9qZ,MAAM,CAAE,CACjD,IAAI,CAAC8qZ,aAAa,CAACjqZ,IAAI,CAAC,CACtBwC,IACA4jH,CAAAA,SAAAA,CACD,EACH,CAAO,KAAA,CACL,MAAMikS,MAAAA,CAAS,IAAI,CAACJ,aAAa,CAAC,IAAI,CAACD,WAAW,CAClDK,CAAAA,MAAM,CAAC,CAAE,CAAA,CAAG7nZ,IACZ6nZ,CAAAA,MAAM,CAAC,CAAA,CAAE,CAAGjkS,UACd,CACA,IAAI,CAAC4jS,WAAW,GAClB,CACA,IAAI52U,OAAU,EAAA,CACZ,OAAO,IAAI,CAAC+2U,QAAQ,CAACpqZ,KAAK,CAAC,EAAG,CAAC,CAAA,CAAA,CAAGgG,GAAG,CAAC,CAACpH,EAAIA,CAAC,CAAC,CAAA,CAAE,CACjD,CApDAsI,WAAYioO,CAAAA,GAAG,CAAC,CACd,IAAI,CAAC86K,WAAW,CAAG,CACnB,CAAA,IAAI,CAACC,aAAa,CAAG,EACrB,CAAA,IAAI,CAACE,QAAQ,CAAG,EAChB,CAAA,IAAI,CAACD,YAAY,CAAG,EACpB,CAAA,IAAI,CAACI,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,aAAa,CAAG,CACrB,CAAA,IAAI,CAACx4Y,OAAO,CAAG,IAAA,CACfm9N,GAAI3oO,CAAAA,EAAE,CAAC,aAAA,CAAe,IAAI,CAAC5B,KAAK,CAAC2K,IAAI,CAAC,IAAI,CAAE,QAC5C4/N,CAAAA,CAAAA,CAAAA,GAAAA,CAAI3oO,EAAE,CAAC,aAAe,CAAA,IAAI,CAAC6jZ,IAAI,CAAC96Y,IAAI,CAAC,IAAI,CAAE,WAC3C4/N,GAAI3oO,CAAAA,EAAE,CAAC,UAAA,CAAY,IAAI,CAAC6jZ,IAAI,CAAC96Y,IAAI,CAAC,IAAI,CAAE,OAAA,CAAA,EAC1C,CA0CF,CAEA,MAAMk7Y,QASJ,CAAA,IAAIp3U,OAAU,EAAA,CACZ,IAAI,CAAC+2U,QAAQ,CAAC,CAAA,CAAE,CAAG,IAAI,CAAChhX,MAAM,CAACwT,WAAW,CAACq2B,UAAU,CACrD,OAAO,IAAI,CAACm3U,QACd,CAXAljZ,WAAAA,CAAYkiC,MAAM,CAAC,CACjB,IAAI,CAACA,MAAM,CAAGA,MACdA,CAAAA,MAAAA,CAAOwT,WAAW,CAAC5qC,OAAO,CAAG,IAC7B,CAAA,IAAI,CAACA,OAAO,CAAG,IACf,CAAA,IAAI,CAACu4Y,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,aAAa,CAAG,CACrB,CAAA,IAAI,CAACJ,QAAQ,CAAG,GAAE,CAMtB,CAEA,MAAMM,WAsBJ,IAAIr3U,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACvrE,MAAM,CAtBpBZ,WAAYioO,CAAAA,GAAG,CAAEw7K,SAAS,CAAEH,aAAa,CAAED,SAAS,CAAEK,UAAU,CAAC,CAC/D,IAAI,CAACz7K,GAAG,CAAGA,GACX,CAAA,IAAI,CAACrnO,MAAM,CAAG,EAAE,CAChB,IAAI,CAAC6iZ,SAAS,CAAGA,SAAAA,CACjB,GAAI,IAAI,CAACA,SAAS,CAACvrZ,MAAM,CAAG,CAAG,CAAA,CAC7B,IAAI,CAACurZ,SAAS,CAACvrZ,MAAM,CAAG,EAC1B,CACA,IAAI,CAACmrZ,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACC,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACI,UAAU,CAAGA,UAAAA,EAAc,CAChC,CAAA,MAAMphX,OAAU,CAAA,CAAC1qC,KAAMkwD,GACrB,GAAA,CAAA,OAAOlwD,IAAKgB,CAAAA,KAAK,CAAC,GAAA,CAAA,CAAK66C,MAAM,CAAC,CAACy+J,IAAMm+D,CAAAA,IAAAA,GAAAA,CACnC,OAAOn+D,IAAAA,CAAOA,IAAI,CAACm+D,IAAAA,CAAK,CAAG,IAC7B,CAAGvoN,CAAAA,GAAAA,EAAO,IAAI,CAChB,CAAA,CACAmgL,GAAI3oO,CAAAA,EAAE,CAAC,aAAA,CAAe,EAAC+4G,EAAAA,CACrB,IAAI,IAAIpgH,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACwrZ,SAAS,CAACvrZ,MAAM,CAAED,CAAI,EAAA,CAAA,CAC5C,IAAI,CAAC2I,MAAM,CAAC3I,CAAAA,CAAE,CAAGqqC,OAAAA,CAAQ,IAAI,CAACmhX,SAAS,CAACxrZ,CAAAA,CAAE,CAAE,IAAI,CAACgwO,GAAG,CAACphE,KAAK,CAAA,CAAI,IAAI,CAAC68O,WAAU,CAEjF,CACF,EAAA,CAIF,CAEA,MAAMC,MA0BJviX,OAAU,EAAA,CACR,IAAI,CAAC6mM,GAAG,CAAC/oO,GAAG,CAAC,aAAA,CAAe,IAAI,CAACmsC,MAAM,CAAE,IAAI,EAC/C,CACAzJ,WAAc,EAAA,CACZ,GAAI,IAAI,CAACgiX,KAAK,EAAI,OAAO,IAAI,CAACA,KAAK,CAAChiX,WAAW,GAAK,UAAY,CAAA,CAC9D,IAAI,CAACgiX,KAAK,CAAChiX,WAAW,GACxB,CACF,CACAyJ,MAAAA,CAAOgtE,EAAE,CAAE,CACT,MAAMlsC,OAAAA,CAAU,IAAI,CAACy3U,KAAK,CAACz3U,OAAO,CAClC,MAAMz4B,KAAQy4B,CAAAA,OAAAA,CAAQ14B,MAAM,CAAC,CAAC5rC,CAAGnQ,CAAAA,CAAAA,GAAImQ,CAAInQ,CAAAA,CAAAA,CAAG,EAC5C,CAAA,IAAI,CAACmsZ,QAAQ,EAAInwW,KACjB,CAAA,IAAI,CAACowW,QAAQ,EAAIzrS,EACjB,CAAA,IAAI,CAAC0rS,QAAQ,EAAA,CACb,GAAI,IAAI,CAACD,QAAQ,CAAG,IAAI,CAACE,eAAe,CAAE,CACxC,IAAI,CAACC,UAAU,CAAG,CAAC,IAAI,CAACJ,QAAQ,CAAG,IAAI,CAACE,QAAQ,EAAEz1Y,OAAO,CAAC,IAAI,CAACs1Y,KAAK,CAACN,aAAa,CAClF,CAAA,IAAI,CAACQ,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACD,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACE,QAAQ,CAAG,EAClB,CACA,GAAI,IAAI,CAACj5Y,OAAO,CAAE,CAChB,IAAIlL,KAAAA,CAAQ,EACZ,MAAM07I,KAAAA,CAAQ,GAAM,CAAA,IAAI,CAAC4oQ,SAAS,CAClC,IAAI,IAAIjsZ,CAAI,CAAA,CAAA,CAAGA,CAAIk0E,CAAAA,OAAAA,CAAQj0E,MAAM,CAAE,EAAED,CAAE,CAAA,CACrC2H,KAASpI,EAAAA,IAAAA,CAAKmQ,KAAK,CAACwkE,OAAO,CAACl0E,CAAAA,CAAE,CAAGqjJ,KAAAA,CAAQ,IACzC,CAAA,IAAI,CAAC6oQ,MAAM,CAAClsZ,CAAAA,CAAE,CAAG2H,MACnB,CACA,IAAI,CAACukZ,MAAM,CAAC,CAAE,CAAA,CAAG,IAAI,CAACD,SAAS,CAAG5oQ,KAAQ,CAAA,GAAA,CAC1C,MAAMrpI,IAAO,CAAA,IAAI,CAAC83B,OAAO,CAAC1B,IAAI,GAC9Bp2B,IAAKzR,CAAAA,GAAG,CAAC,IAAI,CAAC2jZ,MAAM,CAAE,CAAC,IAAI,CAACj8F,MAAM,CAAG,IAAI,CAACvhH,OAAO,CAAG,IAAI,CAAC58J,OAAO,CAACnsB,KAAI,EAAK,CAAA,CAAA,CAC1E,IAAI,CAACmsB,OAAO,CAACV,MAAM,EACnB,CAAA,IAAI,CAAC6+Q,MAAM,EACX,CAAA,GAAI,IAAI,CAACA,MAAM,GAAK,IAAI,CAACn+Q,OAAO,CAACnsB,KAAK,CAAE,CACtC,IAAI,CAACsqS,MAAM,CAAG,EAChB,CACF,CACF,CACAjkN,MAAOmgT,CAAAA,QAAQ,CAAE93Y,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAE,CAC3B04X,QAAAA,CAAS9nR,IAAI,CAAChwH,CAAAA,CAAIkL,CAAGxD,CAAAA,CAAAA,CAAG,CAACwD,CAAAA,CAAGkU,EAAG,IAAI,CAAC5gB,OAAO,CAAG,IAAI,CAACo9S,MAAM,CAAG,CAAA,CAAG,IAAI,CAACp9S,OAAO,CAAG,GAAM,IAAI,CAAC67L,OAAO,CAAG,IAAI,CAAC58J,OAAO,CAAClsB,MAAM,CAAG,CAAG,CAAA,CAACrG,CAAG,CAAA,CAAA,CAAG,IAAI,CAACuyB,OAAO,CAAE,CAAA,EACnJ,CAhEA/pC,WAAAA,CAAYzE,IAAI,CAAE0sO,GAAG,CAAEi8K,SAAS,CAAEF,eAAe,CAAEJ,KAAK,CAAC,CACvD,IAAI,CAAC37K,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC1sO,IAAI,CAAGA,IACZ,CAAA,IAAI,CAAC2mC,MAAM,CAAG+lM,GAAAA,CAAIpmM,cAAc,CAChC,IAAI,CAAC+hX,KAAK,CAAGA,KACb,CAAA,IAAI,CAACM,SAAS,CAAGA,SACjB,CAAA,IAAI,CAACp5Y,OAAO,CAAG,KACf,CAAA,IAAI,CAACk5Y,eAAe,CAAGA,eACvB,CAAA,IAAI,CAACH,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACC,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACC,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACE,UAAU,CAAG,EAClB,CAAA,IAAI,CAACl6W,OAAO,CAAG,IACf,CAAA,IAAI,CAAC48J,OAAO,CAAG,CACf,CAAA,IAAI,CAACuhH,MAAM,CAAG,CACd,CAAA,IAAI,CAACi8F,MAAM,CAAG,IAAI/5P,iBAAAA,CAAkB,CACpC,CAAA,CAAA,IAAI,CAAC+5P,MAAM,CAAC3jZ,GAAG,CAAC,CACd,CAAA,CACA,CACA,CAAA,CAAA,CACA,IACD,CACD,CAAA,IAAI,CAACusQ,OAAO,CAAG,EACf,IAAI,CAAC9kC,GAAG,CAAC3oO,EAAE,CAAC,cAAe,IAAI,CAAC+rC,MAAM,CAAE,IAAI,EAC9C,CAyCF,CAEA,MAAMg5W,SAyEJjjX,CAAAA,OAAAA,EAAU,CACR,IAAI,CAAC2I,OAAO,CAAC3I,OAAO,EACpB,CAAA,IAAI,CAAC2I,OAAO,CAAG,KACjB,CACAk6D,MAAOmgT,CAAAA,QAAQ,CAAEE,IAAI,CAAEh4Y,CAAC,CAAE0H,CAAC,CAAE,CAC3B,MAAM4W,CAAAA,CAAI,IAAI,CAAC6sU,UAAU,CAACz9V,GAAG,CAACsqZ,IAAAA,CAAAA,CAC9B,GAAI15X,CAAAA,CAAG,CACL,MAAMk5R,QAAU,CAChBsgG,CAAAA,QAAAA,CAAS9nR,IAAI,CAAChwH,CAAIse,CAAAA,CAAAA,CAAE9T,CAAC,CAAGgtS,OAAAA,CAAS9vS,CAAI4W,CAAAA,CAAAA,CAAEra,CAAC,CAAGuzS,QAASl5R,CAAEpT,CAAAA,CAAC,CAAGssS,OAAAA,CAAU,CAAGl5R,CAAAA,CAAAA,CAAEc,CAAC,CAAGo4R,OAAAA,CAAU,CAAGl5R,CAAAA,CAAAA,CAAEte,CAAC,CAAGw3S,QAAS,IAAI,CAAC/5Q,OAAO,CAAClsB,MAAM,CAAG+M,CAAE5W,CAAAA,CAAC,CAAG4W,CAAAA,CAAEc,CAAC,CAAGo4R,OAAS/jT,CAAAA,SAAAA,CAAWA,UAAW,IAAI,CAACgqC,OAAO,CAAE,CACxL,CAAA,CAAA,OAAOnf,EAAEpT,CACX,CACA,OAAO,CACT,CApFAxX,YAAYkiC,MAAM,CAAE2sB,KAAK,CAAC,CACxB,MAAM01V,YAAc,OAACrmU,EAAAA,CACnBA,OAAQ2nN,CAAAA,IAAI,CAAG,0CACf3nN,CAAAA,OAAQ+2T,CAAAA,SAAS,CAAG,MACpB/2T,CAAAA,OAAAA,CAAQg3T,YAAY,CAAG,aACzB,CACA,CAAA,MAAMsP,QAAW,CAACF,OAChB,OAAOA,IAAAA,GAAS,GAAOA,EAAAA,IAAAA,CAAKpsZ,MAAM,GAAK,GAAKosZ,IAAKjnZ,CAAAA,UAAU,CAAC,CAAA,CAAA,EAAM,EAAMinZ,EAAAA,IAAAA,CAAKjnZ,UAAU,CAAC,CAAA,CAAA,EAAM,EAChG,CAAA,CACA,MAAM24C,MAAAA,CAASjzC,SAASC,aAAa,CAAC,QACtC,CAAA,CAAA,MAAMk7E,OAAUloC,CAAAA,MAAAA,CAAOwmB,UAAU,CAAC,IAAA,CAAM,CACtCrwD,KAAAA,CAAO,IACT,CAAA,CAAA,CACAo4Y,YAAYrmU,OACZ,CAAA,CAAA,MAAMu5Q,UAAa,CAAA,IAAIp3V,GACvB,CAAA,MAAMyjT,QAAU,CAChB,CAAA,MAAMlmS,KAAQ,CAAA,GAAA,CACd,IAAItR,CAAAA,CAAIw3S,QACR,IAAI9vS,CAAAA,CAAI8vS,OACRj1P,CAAAA,KAAAA,CAAMjqD,OAAO,CAAC,IACZ,EAAA,CAAA,MAAM6/Y,WAAcvmU,CAAAA,OAAAA,CAAQi3T,WAAW,CAACmP,IACxC,CAAA,CAAA,MAAMxtY,CAAItf,CAAAA,IAAAA,CAAK0V,IAAI,CAAC,CAACu3Y,WAAAA,CAAYC,qBAAqB,CACtD,CAAA,MAAMntZ,CAAIC,CAAAA,IAAAA,CAAK0V,IAAI,CAACu3Y,YAAYE,sBAAsB,CAAA,CACtD,MAAM98Y,CAAAA,CAAIrQ,IAAK0V,CAAAA,IAAI,CAACu3Y,WAAYG,CAAAA,uBAAuB,CACvD,CAAA,MAAMr0Y,CAAI/Y,CAAAA,IAAAA,CAAK0V,IAAI,CAACu3Y,WAAAA,CAAYI,wBAAwB,CAAA,CACxD,MAAMrtY,CAAAA,CAAIV,EAAIvf,CACd,CAAA,MAAMm0B,CAAI7jB,CAAAA,CAAAA,CAAI0I,CACd,CAAA,GAAIjE,EAAIkL,CAAIssS,CAAAA,OAAAA,EAAWlmS,KAAO,CAAA,CAC5BtR,CAAIw3S,CAAAA,OAAAA,CACJ9vS,GAAK,GACP,CACAyjV,UAAWj3V,CAAAA,GAAG,CAAC8jZ,IAAAA,CAAM,CACnBxtY,CACAvf,CAAAA,CAAAA,CACAsQ,CACA0I,CAAAA,CAAAA,CACAiH,CACAkU,CAAAA,CAAAA,CACApf,EAAGA,CACH0H,CAAAA,CAAAA,CAAGA,CACL,CAAA,CAAA,CACA1H,CAAKkL,EAAAA,CAAAA,CAAIssS,QACX,CACA9tQ,CAAAA,CAAAA,MAAOp4B,CAAAA,KAAK,CAAG,GACfo4B,CAAAA,MAAOn4B,CAAAA,MAAM,CAAGvS,IAAAA,CAAKiB,cAAc,CAACyH,EAAI,EAAK8vS,CAAAA,OAAAA,CAAAA,CAC7CygG,WAAYrmU,CAAAA,OAAAA,CACZA,CAAAA,OAAAA,CAAQm1T,SAAS,CAAG,cAAA,CACpBn1T,OAAQo1T,CAAAA,QAAQ,CAAC,CAAA,CAAG,EAAGt9V,MAAOp4B,CAAAA,KAAK,CAAEo4B,MAAAA,CAAOn4B,MAAM,CAAA,CAClD45U,WAAW7yV,OAAO,CAAC,CAACmO,CAAAA,CAAGuxY,IACrBpmU,GAAAA,CAAAA,OAAAA,CAAQm1T,SAAS,CAAGmR,QAASF,CAAAA,IAAAA,CAAAA,CAAQ,oBAAuB,CAAA,oBAAA,CAC5DpmU,OAAQi2T,CAAAA,QAAQ,CAACmQ,IAAMvxY,CAAAA,CAAAA,CAAEzG,CAAC,CAAGyG,CAAE+D,CAAAA,CAAC,CAAE/D,CAAEiB,CAAAA,CAAC,CAAGjB,CAAAA,CAAElL,CAAC,EAC7C,EACA,CAAA,IAAI,CAAC4vV,UAAU,CAAGA,UAAAA,CAClB,MAAMxlV,IAAOisE,CAAAA,OAAAA,CAAQ4mU,YAAY,CAAC,CAAG,CAAA,CAAA,CAAG9uW,OAAOp4B,KAAK,CAAEo4B,MAAOn4B,CAAAA,MAAM,CAAE5L,CAAAA,IAAI,CACzE,IAAI,IAAIha,CAAI,CAAA,CAAA,CAAGA,CAAIga,CAAAA,IAAAA,CAAK/Z,MAAM,CAAED,CAAAA,EAAK,CAAE,CAAA,CACrCga,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAGga,IAAI,CAACha,CAAAA,CAAI,CAAE,CACzBga,CAAAA,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAG,GACdga,CAAAA,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAG,GACdga,CAAAA,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAG,IAChB,CACA,IAAI,CAAC8xC,OAAO,CAAG,IAAInG,OAAAA,CAAQ1B,OAAQ,CACjC3mC,IAAAA,CAAM,uBACNqiB,CAAAA,KAAAA,CAAOo4B,MAAOp4B,CAAAA,KAAK,CACnBC,MAAQm4B,CAAAA,MAAAA,CAAOn4B,MAAM,CACrB4lB,OAAS,CAAA,KAAA,CACTkC,UAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,cACXwZ,CAAAA,MAAAA,CAAQ,CACNz2B,IAAAA,CACD,CACH,EACF,CAcF,CAEA,MAAM8yY,gBAAAA,CAAmB,CAAC;;;;;;;;;;AAU1B,CAAC,CACD,MAAMC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;AAY1B,CAAC,CACD,MAAMC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;AAoB5B,CAAC,CACD,MAAMC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B5B,CACA,CAAMC,MAAAA,QAAAA,CAoEJ7oR,IAAKhwH,CAAAA,CAAC,CAAE0H,CAAC,CAAEwD,CAAC,CAAEkU,CAAC,CAAEQ,CAAC,CAAEx0B,CAAC,CAAE0tZ,EAAE,CAAEC,EAAE,CAAEt7W,OAAO,CAAEu7W,QAAW,CAAA,CAAC,CAAE,CACpD,MAAMnjY,EAAK,CAAA,IAAI,CAACglS,UAAU,CAACvpS,KAAK,CAChC,MAAMw9H,EAAAA,CAAK,IAAI,CAAC+rK,UAAU,CAACtpS,MAAM,CACjC,MAAM0nY,EAAKj5Y,CAAAA,CAAAA,CAAI6V,EACf,CAAA,MAAMqjY,EAAKxxY,CAAAA,CAAAA,CAAIonI,EACf,CAAA,MAAMsqD,EAAK,CAACp5L,CAAAA,CAAAA,CAAIkL,CAAAA,EAAK2K,EAAAA,CACrB,MAAMwjL,EAAAA,CAAK,CAAC3xL,EAAI0X,CAAAA,EAAK0vH,EACrB,CAAA,MAAMqqQ,EAAK17W,CAAAA,OAAAA,CAAQnsB,KAAK,CACxB,MAAM4F,EAAKumB,CAAAA,OAAAA,CAAQlsB,MAAM,CACzB,MAAM6nY,EAAKx5X,CAAAA,CAAAA,CAAIu5X,EACf,CAAA,MAAM35X,EAAKp0B,CAAAA,CAAAA,CAAI8rB,GACf,MAAMmiY,EAAAA,CAAK,CAACz5X,CAAKk5X,EAAAA,IAAM5tY,CAAAA,CAAC,EAAKiuY,EAAAA,CAC7B,MAAM15X,EAAAA,CAAK,CAACr0B,CAAAA,EAAK2tZ,EAAAA,EAAM35X,CAAAA,CAAC,EAAKlI,EAAAA,CAC7B,IAAI,CAACvR,IAAI,CAACzR,GAAG,CAAC,CACZ+kZ,EACAC,CAAAA,EAAAA,CACAF,QACAI,CAAAA,EAAAA,CACA55X,EACA,CAAA,CAAA,CACA,EACA45K,EACA8/M,CAAAA,EAAAA,CACAF,QACAK,CAAAA,EAAAA,CACA75X,EACA,CAAA,CAAA,CACA,EACA45K,EACAC,CAAAA,EAAAA,CACA2/M,QACAK,CAAAA,EAAAA,CACA55X,EACA,CAAA,CAAA,CACA,EACAw5X,EACA5/M,CAAAA,EAAAA,CACA2/M,QACAI,CAAAA,EAAAA,CACA35X,EACA,CAAA,CAAA,CACA,EACD,CAAE,CAAA,CAAI,CAAI,CAAA,IAAI,CAAC65X,KAAK,CACrB,CAAA,IAAI,CAACA,KAAK,EACV,CAAA,IAAI,CAAC55Q,IAAI,CAAC/zF,KAAK,EAAI,EACrB,CACA4tW,UAAAA,EAAa,CACX,IAAI,CAACD,KAAK,CAAG,CACb,CAAA,IAAI,CAAC55Q,IAAI,CAAC/zF,KAAK,CAAG,CAClB,CAAA,IAAI,CAACkvQ,UAAU,CAACvpS,KAAK,CAAG,IAAI,CAACskB,MAAM,CAAC8T,MAAM,CAAC8vW,WAAW,CACtD,IAAI,CAAC3+F,UAAU,CAACtpS,MAAM,CAAG,IAAI,CAACqkB,MAAM,CAAC8T,MAAM,CAAC+vW,aAC9C,CACA9hT,MAAAA,CAAOgkI,GAAG,CAAEjrG,KAAK,CAAEgpR,YAAY,CAAEC,YAAY,CAAEC,GAAG,CAAEroY,MAAM,CAAE,CAC1D,IAAI,CAAClL,MAAM,CAACk+B,OAAO,CAAC,IAAI,CAAC5+B,IAAI,CAACU,MAAM,EACpC,IAAI,CAACu6C,QAAQ,CAACg5V,GAAG,CAAC1lZ,GAAG,CAAC0lZ,GAAAA,CAAK,CAC3B,CAAA,CAAA,IAAI,CAACprR,QAAQ,CAACn5B,YAAY,CAAC,KAAO,CAAA,IAAI,CAACz0C,QAAQ,CAACg5V,GAAG,CAAA,CACnD,IAAI,CAACprR,QAAQ,CAACn5B,YAAY,CAAC,UAAA,CAAYqkT,YACvC,CAAA,CAAA,IAAI,CAAClrR,QAAQ,CAACn5B,YAAY,CAAC,UAAYskT,CAAAA,YAAAA,CAAAA,CACvCh+K,GAAI+zB,CAAAA,gBAAgB,CAAC,IAAI,CAACn/H,YAAY,CAAEG,KAAAA,EAC1C,CA9HAh9H,WAAAA,CAAYkiC,MAAM,CAAEikX,QAAAA,CAAW,GAAG,CAAC,CACjC,MAAMpoZ,OAAS,IAAI2zC,YAAAA,CAAaxP,MAAQ,CAAA,CACtC,CACE4P,QAAAA,CAAU/b,kBACVgc,UAAY,CAAA,CAAA,CACZriC,IAAMgrB,CAAAA,YACR,CACA,CAAA,CACEoX,SAAUxb,kBACVyb,CAAAA,UAAAA,CAAY,CACZriC,CAAAA,IAAAA,CAAMgrB,YACR,CAAA,CACD,EACD,MAAM8nE,OAAAA,CAAU,IAAIltE,WAAAA,CAAY6wX,QAAW,CAAA,CAAA,CAAA,CAC3C,IAAI,IAAIluZ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIkuZ,QAAU,CAAA,EAAEluZ,EAAE,CAC/BuqG,OAAO,CAACvqG,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAAA,CAAI,CACzBuqG,CAAAA,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,EAAE,CAAGA,CAAAA,CAAI,CAAI,CAAA,CAC7BuqG,CAAAA,OAAO,CAACvqG,CAAI,CAAA,CAAA,CAAI,CAAE,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAI,CAC7BuqG,CAAAA,OAAO,CAACvqG,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAI,CAAA,CACzBuqG,CAAAA,OAAO,CAACvqG,CAAAA,CAAI,EAAI,CAAE,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAI,CAC7BuqG,CAAAA,OAAO,CAACvqG,CAAAA,CAAI,CAAI,CAAA,CAAA,CAAE,CAAGA,CAAAA,CAAI,EAAI,EAC/B,CACA,IAAI,CAACiqC,MAAM,CAAGA,MACd,CAAA,IAAI,CAACvvB,MAAM,CAAG,IAAIy9B,YAAAA,CAAalO,OAAQnkC,MAAQooZ,CAAAA,QAAAA,CAAW,CAAG,CAAA,CAC3Dz1W,KAAOviB,CAAAA,aACT,EACA,CAAA,IAAI,CAAClc,IAAI,CAAG,IAAIH,aAAa,IAAI,CAACa,MAAM,CAACm+B,QAAQ,CAAG,EACpD,CAAA,IAAI,CAAC0H,WAAW,CAAG,IAAI4pD,YAAYlgE,MAAQjS,CAAAA,kBAAAA,CAAoBk2X,QAAW,CAAA,CAAA,CAAGl4X,aAAeu0E,CAAAA,OAAAA,CAC5F,CAAA,IAAI,CAACwpC,IAAI,CAAG,CACVt8H,IAAAA,CAAMkmB,oBACNqzC,OAAS,CAAA,IAAA,CACTF,IAAM,CAAA,CAAA,CACNC,UAAY,CAAA,CAAA,CACZ/wB,KAAO,CAAA,CACT,CACA,CAAA,IAAI,CAAC2tW,KAAK,CAAG,CACb,CAAA,IAAI,CAACjkR,IAAI,CAAG,IAAIH,KAAKt/F,MACrB,CAAA,CAAA,IAAI,CAACy/F,IAAI,CAAC7pF,YAAY,CAAG,IAAI,CAACnlC,MAAM,CACpC,IAAI,CAACgvH,IAAI,CAACnpF,WAAW,CAAC,CAAA,CAAE,CAAG,IAAI,CAACA,WAChC,CAAA,IAAI,CAACmpF,IAAI,CAACppF,SAAS,CAAG,CACpB,IAAI,CAACyzF,IAAI,CACV,CACD,MAAMlR,QAAW,CAAA,IAAImpE,cAAe,CAAA,CAClC7pE,UAAY,CAAA,WAAA,CACZM,UAAYqqR,CAAAA,gBAAAA,CACZpqR,YAAcsqR,CAAAA,kBAAAA,CACd5qR,WAAY2qR,gBACZzqR,CAAAA,YAAAA,CAAc2qR,kBACd3hW,CAAAA,UAAAA,CAAY,CACVigB,eAAAA,CAAiBztC,kBACjB4tC,gBAAkBrtC,CAAAA,kBACpB,CACF,CAAA,CACA,CAAA,IAAI,CAACwkG,QAAQ,CAAGA,QAChBA,CAAAA,QAAS0Q,CAAAA,IAAI,CAAG18G,aAChBgsG,CAAAA,QAASlkF,CAAAA,UAAU,CAAG/H,UAAAA,CAAWO,OAAO,CACxC0rF,QAASnkF,CAAAA,UAAU,CAAG,IAAI3J,WAAW,IAAM7f,CAAAA,iBAAAA,CAAmBP,mBAAqBE,CAAAA,6BAAAA,CAA+BK,iBAAmBZ,CAAAA,aAAAA,CAAeA,eACpJuuG,QAASzvF,CAAAA,MAAM,EACf,CAAA,IAAI,CAACwxF,YAAY,CAAG,IAAI0K,YAAAA,CAAa,IAAI,CAAC5F,IAAI,CAAE7G,SAAU,IAAI0iB,SAAAA,CAAU,eACxE,CAAA,CAAA,CAAA,IAAI,CAACtwF,QAAQ,CAAG,CACdg5V,GAAK,CAAA,IAAIp0Y,YAAa,CAAA,CAAA,CACxB,CACA,CAAA,IAAI,CAACq1S,UAAU,CAAG,CAChBvpS,MAAOskB,MAAOtkB,CAAAA,KAAK,CACnBC,MAAAA,CAAQqkB,MAAOrkB,CAAAA,MAAM,EAEzB,CA6DF,CAEA,MAAMuoY,SA6DJhlX,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACc,MAAM,CAAChjC,GAAG,CAAC,eAAgB,IAAI,CAACmnZ,SAAS,CAAE,IAAI,CAAA,CACpD,IAAI,CAACnkX,MAAM,CAAChjC,GAAG,CAAC,aAAe,CAAA,IAAI,CAAC0iC,WAAW,CAAE,IAAI,CAAA,CACrD,IAAI,CAACqmM,GAAG,CAAC/oO,GAAG,CAAC,YAAA,CAAc,IAAI,CAAConZ,UAAU,CAAE,IAAI,CAChD,CAAA,IAAI,CAACC,MAAM,CAAC3hZ,OAAO,CAAC,KAAC2gL,EAAQA,KAAMnkJ,CAAAA,OAAO,IAC1C,IAAI,CAAColX,SAAS,CAACplX,OAAO,EAAA,CACtB,IAAI,CAAC2I,OAAO,CAAC3I,OAAO,GACtB,CACA,OAAOqlX,iBAAoB,EAAA,CACzB,OAAO,CACLvsL,KAAO,CAAA,CACL,CACEt8M,KAAAA,CAAO,GACPC,CAAAA,MAAAA,CAAQ,EACRtK,CAAAA,OAAAA,CAAS,CACTgzY,CAAAA,MAAAA,CAAQ,KACV,CACA,CAAA,CACE3oY,KAAO,CAAA,GAAA,CACPC,MAAQ,CAAA,EAAA,CACRtK,QAAS,CACTgzY,CAAAA,MAAAA,CAAQ,IACV,CAAA,CACA,CACE3oY,KAAAA,CAAO,IACPC,MAAQ,CAAA,EAAA,CACRtK,OAAS,CAAA,CAAA,CACTgzY,MAAQ,CAAA,IACV,EACD,CACDG,cAAAA,CAAgB,CAChB1C,CAAAA,eAAAA,CAAiB,GACjB2C,CAAAA,GAAAA,CAAK,CACH77Y,OAAS,CAAA,IAAA,CACTo5Y,SAAW,CAAA,EACb,CACAv/U,CAAAA,GAAAA,CAAK,CACH75D,OAAS,CAAA,IAAA,CACTo5Y,SAAW,CAAA,EACb,CACAr9O,CAAAA,KAAAA,CAAO,CACL,CACEtrK,IAAAA,CAAM,OACNsrK,CAAAA,KAAAA,CAAO,CACL,UAAA,CACD,CACDy8O,aAAAA,CAAe,CACfD,CAAAA,SAAAA,CAAW,IACXa,CAAAA,SAAAA,CAAW,EACb,CAAA,CACA,CACE3oZ,IAAM,CAAA,WAAA,CACNsrK,KAAO,CAAA,CACL,iBACD,CAAA,CACDq9O,UAAW,GACb,CAAA,CACD,CAEL,CACA,IAAI0C,gBAAgBhnZ,KAAK,CAAE,CACzB,IAAI,CAACinZ,gBAAgB,CAAGjnZ,KACxB,CAAA,IAAI,CAACknZ,QAAQ,CAAG,IAAI,CAAC5sL,KAAK,CAACt6N,KAAAA,CAAM,CAAC2T,OAAO,CACzC,IAAI,CAACkxB,MAAM,CAAC,IAAI,CAACy1L,KAAK,CAACt6N,KAAAA,CAAM,CAACge,KAAK,CAAE,IAAI,CAACs8M,KAAK,CAACt6N,KAAAA,CAAM,CAACie,MAAM,CAAE,IAAI,CAACq8M,KAAK,CAACt6N,KAAM,CAAA,CAAC2mZ,MAAM,EACzF,CACA,IAAIK,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACC,gBAAgB,CAE9B,IAAIn4L,OAAAA,CAAQ9uN,KAAK,CAAE,CACjB,IAAI,CAACsmZ,GAAG,CAAC,CAAE,CAAA,CAAGtmZ,MAChB,CACA,IAAI8uN,OAAU,EAAA,CACZ,OAAO,IAAI,CAACw3L,GAAG,CAAC,CAAE,CACpB,CACA,IAAIa,eAAgB,CAClB,MAAMR,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMhzY,OAAU,CAAA,IAAI,CAACuzY,QAAQ,CAC7B,OAAO,IAAI,CAACjpY,MAAM,CAAG0oY,MAAAA,CAAOruZ,MAAM,CAAGqb,SAAWgzY,MAAAA,CAAOruZ,MAAM,CAAG,CAAA,CAClE,CACA,IAAI4S,OAAAA,CAAQlL,KAAK,CAAE,CACjB,GAAIA,KAAU,GAAA,IAAI,CAACksE,QAAQ,CAAE,CAC3B,IAAI,CAACA,QAAQ,CAAGlsE,KAAAA,CAChB,IAAI,IAAI3H,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACsuZ,MAAM,CAACruZ,MAAM,CAAE,EAAED,CAAE,CAAA,CACzC,IAAI,CAACsuZ,MAAM,CAACtuZ,CAAE,CAAA,CAAC6S,OAAO,CAAGlL,KACzB,CAAA,IAAI,CAAC2mZ,MAAM,CAACtuZ,CAAAA,CAAE,CAAC2rZ,KAAK,CAAC94Y,OAAO,CAAGlL,MACjC,CACF,CACF,CACA,IAAIkL,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,CAEtBk7U,WAAW/+K,GAAG,CAAE/lM,MAAM,CAAEx4B,OAAO,CAAE,CAC/B,IAAI,CAAC68Y,MAAM,CAAG,EAAE,CAChB,GAAI78Y,OAAQi9Y,CAAAA,GAAG,CAAC77Y,OAAO,CAAE,CACvB,MAAM84Y,KAAQ,CAAA,IAAId,QAAS76K,CAAAA,GAAAA,CAAAA,CAC3B,MAAM1iD,KAAAA,CAAQ,IAAIo+N,KAAAA,CAAM,KAAO17K,CAAAA,GAAAA,CAAKv+N,OAAQi9Y,CAAAA,GAAG,CAACzC,SAAS,CAAEx6Y,OAAQs6Y,CAAAA,eAAe,CAAEJ,KAAAA,CAAAA,CACpF,IAAI,CAAC2C,MAAM,CAACxtZ,IAAI,CAACwsL,KAAAA,EACnB,CACA,GAAI77K,QAAQi7D,GAAG,CAAC75D,OAAO,CAAE,CACvB,MAAM84Y,MAAQ,IAAIL,QAAAA,CAASrhX,MAC3B,CAAA,CAAA,MAAMqjJ,KAAQ,CAAA,IAAIo+N,MAAM,KAAO17K,CAAAA,GAAAA,CAAKv+N,OAAQi7D,CAAAA,GAAG,CAACu/U,SAAS,CAAEx6Y,OAAQs6Y,CAAAA,eAAe,CAAEJ,KAAAA,CAAAA,CACpF,IAAI,CAAC2C,MAAM,CAACxtZ,IAAI,CAACwsL,KAAAA,EACnB,CACA,GAAI77K,OAAQm9J,CAAAA,KAAK,CAAE,CACjBn9J,OAAQm9J,CAAAA,KAAK,CAACjiK,OAAO,CAAC,KAACmgD,EAAAA,CACrB,MAAM6+V,KAAAA,CAAQ,IAAIJ,UAAAA,CAAWv7K,IAAKljL,KAAM8hH,CAAAA,KAAK,CAAE9hH,KAAAA,CAAMu+V,aAAa,CAAEv+V,MAAMs+V,SAAS,CAAEt+V,KAAM2+V,CAAAA,UAAU,CACrG,CAAA,MAAMn+N,MAAQ,IAAIo+N,KAAAA,CAAM5+V,KAAMxpD,CAAAA,IAAI,CAAE0sO,GAAAA,CAAKljL,MAAMm/V,SAAS,CAAEx6Y,OAAQs6Y,CAAAA,eAAe,CAAEJ,KAAAA,CAAAA,CACnF,IAAI,CAAC2C,MAAM,CAACxtZ,IAAI,CAACwsL,KAAAA,EACnB,GACF,CACA,MAAM+7H,QAAW53S,CAAAA,OAAAA,CAAQwwN,KAAK,CAACzmL,MAAM,CAAC,CAAC7nC,GAAAA,CAAKlU,CAC1C,GAAA,CAAA,OAAOA,CAAEkmB,CAAAA,KAAK,CAAGhS,GAAMlU,CAAAA,CAAAA,CAAEkmB,KAAK,CAAGhS,GACnC,CAAA,CAAG,EACH,CAAA,IAAI,CAACm+B,OAAO,CAAG,IAAInG,QAAQ1B,MAAQ,CAAA,CACjC3mC,IAAM,CAAA,0BAAA,CACNqiB,KAAOtS,CAAAA,IAAAA,CAAKiB,cAAc,CAAC+0S,QAAAA,CAAAA,CAC3BzjS,MAAQvS,CAAAA,IAAAA,CAAKiB,cAAc,CAAC,IAAI,CAACg6Y,MAAM,CAACruZ,MAAM,CAC9CurC,CAAAA,OAAAA,CAAS,MACTkC,SAAWzW,CAAAA,cAAAA,CACX4W,SAAW5W,CAAAA,cAAAA,CACX8W,QAAU7Z,CAAAA,cAAAA,CACV+Z,SAAU/Z,cACZ,CAAA,CAAA,CACA,IAAI,CAACo6X,MAAM,CAAC3hZ,OAAO,CAAC,CAAC2gL,KAAAA,CAAOttL,CAC1BstL,GAAAA,CAAAA,KAAAA,CAAMx7I,OAAO,CAAG,IAAI,CAACA,OAAO,CAC5Bw7I,KAAMohB,CAAAA,OAAO,CAAG1uM,EAClB,CAAA,EACF,CACAgsG,MAAAA,EAAS,CACP,MAAMsiT,OAAS,IAAI,CAACA,MAAM,CAC1B,MAAMC,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,MAAMpC,QAAW,CAAA,IAAI,CAACA,QAAQ,CAC9B,MAAMxmY,KAAAA,CAAQ,IAAI,CAACA,KAAK,CACxB,MAAMC,MAAS,CAAA,IAAI,CAACA,MAAM,CAC1B,MAAMipY,QAAAA,CAAW,IAAI,CAACA,QAAQ,CAC9B1C,QAASyB,CAAAA,UAAU,EACnB,CAAA,IAAI,IAAI5tZ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIsuZ,OAAOruZ,MAAM,CAAE,EAAED,CAAAA,CAAE,CACpC,MAAMstL,MAAQghO,MAAM,CAACtuZ,CAAE,CAAA,CACvB,IAAI+b,CAAAA,CAAI/b,GAAK4lB,MAAAA,CAASipY,QAAO,CAAA,CAC7BvhO,KAAMthF,CAAAA,MAAM,CAACmgT,QAAU,CAAA,CAAA,CAAGpwY,CAAG4J,CAAAA,KAAAA,CAAOC,MACpC,CAAA,CAAA,IAAIvR,EAAI,CACR0H,CAAAA,CAAAA,EAAK6J,MAAS,CAAA,EAAA,CACdvR,CAAKk6Y,EAAAA,SAAAA,CAAUviT,MAAM,CAACmgT,QAAAA,CAAU7+N,KAAMhqL,CAAAA,IAAI,CAAE+Q,CAAAA,CAAG0H,GAAK,EACpD,CAAA,MAAMiwY,UAAa1+N,CAAAA,KAAAA,CAAM0+N,UAAU,CACnC,IAAI,IAAIzlU,CAAI,CAAA,CAAA,CAAGA,CAAIylU,CAAAA,UAAAA,CAAW/rZ,MAAM,CAAE,EAAEsmF,CAAE,CAAA,CACxClyE,CAAKk6Y,EAAAA,SAAAA,CAAUviT,MAAM,CAACmgT,SAAUH,UAAU,CAACzlU,CAAE,CAAA,CAAElyE,CAAG0H,CAAAA,CAAAA,EACpD,CACA,GAAIuxK,KAAAA,CAAMq+N,KAAK,CAACP,SAAS,CAAE,CACzB/2Y,CAAK,EAAA,CAAA,CACLk6Y,SAAUviT,CAAAA,MAAM,CAACmgT,QAAAA,CAAU7+N,MAAMq+N,KAAK,CAACP,SAAS,CAAE/2Y,CAAG0H,CAAAA,CAAAA,EACvD,CACF,CACAowY,QAAAA,CAASngT,MAAM,CAAC,IAAI,CAACgkI,GAAG,CAAE,IAAI,CAACg/K,SAAS,CAAE,IAAI,CAACl9W,OAAO,CAAE,IAAI,CAACy8W,SAAS,CAACz8W,OAAO,CAAE,IAAI,CAACm8W,GAAG,CAAEroY,MAC5F,EAAA,CACA4mB,OAAO7mB,KAAK,CAAEC,MAAM,CAAEqpY,UAAU,CAAE,CAChC,MAAMX,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,IAAI,IAAItuZ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIsuZ,MAAOruZ,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CACpCsuZ,MAAM,CAACtuZ,CAAAA,CAAE,CAAC6S,OAAO,CAAGo8Y,WACtB,CACA,IAAI,CAACtpY,KAAK,CAAGA,KACb,CAAA,IAAI,CAACC,MAAM,CAAGA,MAAAA,CACd,IAAI,CAACwoY,SAAS,GAChB,CACAA,SAAAA,EAAY,CACV,MAAM3sW,IAAAA,CAAO,IAAI,CAACxX,MAAM,CAAC8T,MAAM,CAAC2D,qBAAqB,EACrD,CAAA,IAAI,CAAC3kC,GAAG,CAAC4mJ,KAAK,CAACx0J,IAAI,CAAG,CAAC,EAAEsyC,IAAKtyC,CAAAA,IAAI,CAAC,EAAE,CACrC,CAAA,IAAI,CAAC4N,GAAG,CAAC4mJ,KAAK,CAACl/I,MAAM,CAAG,CAAC,EAAEziB,MAAAA,CAAO01M,WAAW,CAAGj2J,KAAKh9B,MAAM,CAAC,EAAE,CAAC,CAC/D,IAAI,CAAC1H,GAAG,CAAC4mJ,KAAK,CAACh+I,KAAK,CAAG,CAAC,EAAE,IAAI,CAACA,KAAK,CAAC,EAAE,CAAC,CACxC,IAAI,CAAC5I,GAAG,CAAC4mJ,KAAK,CAAC/9I,MAAM,CAAG,CAAC,EAAE,IAAI,CAACkpY,aAAa,CAAC,EAAE,EAAC,CAEnDnlX,aAAc,CACZ,IAAI,CAAC2kX,MAAM,CAAC3hZ,OAAO,CAAC,KAAC2gL,EAAQA,KAAM3jJ,CAAAA,WAAW,EAChD,EAAA,CACA0kX,YAAa,CACX,GAAI,IAAI,CAACx6U,QAAQ,CAAE,CACjB,IAAI,CAACm4B,MAAM,GACb,CACF,CA7OAjkG,WAAAA,CAAYioO,GAAG,CAAEv+N,OAAO,CAAC,CACvB,MAAMw4B,MAAAA,CAAS+lM,IAAIpmM,cAAc,CACjCn4B,OAAUA,CAAAA,OAAAA,EAAW08Y,SAAUK,CAAAA,iBAAiB,GAChD,IAAI,CAACO,UAAU,CAAC/+K,GAAK/lM,CAAAA,MAAAA,CAAQx4B,SAC7B,MAAMmlD,KAAAA,CAAQ,IAAI7jD,GAAAA,CAAI,CACpB,EAAA,CACA,KACA,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,IACA,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACA,GACD,CAAA,CAAC4lD,MAAM,CAAC,IAAI,CAAC21V,MAAM,CAACznZ,GAAG,CAAEymL,KAAQA,EAAAA,KAAAA,CAAMhqL,IAAI,CAAA,CAAA,CAAGq1D,MAAM,CAAClnD,QAAQm9J,KAAK,CAAGn9J,OAAQm9J,CAAAA,KAAK,CAAC/nK,GAAG,CAAC,IAACqoZ,EAAOA,IAAK9D,CAAAA,SAAS,CAAI,CAAA,EAAE,EAAEzvT,MAAM,CAAC,IAAC3xF,EAAO,CAAC,CAACA,MACvI,CAAA,IAAI,CAACukZ,SAAS,CAAG,IAAInC,UAAUniX,MAAQ2sB,CAAAA,KAAAA,CACvC,CAAA,IAAI,CAACqrK,KAAK,CAAGxwN,OAAQwwN,CAAAA,KAAK,CAC1B,IAAI,CAAC2sL,gBAAgB,CAAGn9Y,OAAAA,CAAQg9Y,cAAc,CAC9C,MAAM1xY,GAAAA,CAAMjS,QAASC,CAAAA,aAAa,CAAC,KAAA,CAAA,CACnCgS,GAAI/R,CAAAA,YAAY,CAAC,IAAA,CAAM,aACvB+R,CAAAA,GAAAA,CAAI4mJ,KAAK,CAACwrP,OAAO,CAAG,yDACpBrkZ,QAASK,CAAAA,IAAI,CAACC,WAAW,CAAC2R,GAAAA,CAAAA,CAC1BA,IAAI9a,gBAAgB,CAAC,YAAc,CAAC8/F,KAClC,EAAA,CAAA,IAAI,CAAC00H,OAAO,CAAG,EACjB,CAAA,CAAA,CACA15M,GAAI9a,CAAAA,gBAAgB,CAAC,YAAc,CAAC8/F,KAClC,EAAA,CAAA,IAAI,CAAC00H,OAAO,CAAG,GACjB,CAAA,CAAA,CACA15M,GAAI9a,CAAAA,gBAAgB,CAAC,OAAA,CAAS,KAC5B8/F,EAAAA,CAAAA,KAAAA,CAAMC,cAAc,EAAA,CACpB,GAAI,IAAI,CAACnuB,QAAQ,CAAE,CACjB,IAAI,CAAC86U,eAAe,CAAG,CAAC,IAAI,CAACA,eAAe,CAAG,CAAA,EAAK,IAAI,CAAC1sL,KAAK,CAAChiO,MAAM,CACrE,IAAI,CAACusC,MAAM,CAAC,IAAI,CAACy1L,KAAK,CAAC,IAAI,CAAC0sL,eAAe,CAAC,CAAChpY,KAAK,CAAE,IAAI,CAACs8M,KAAK,CAAC,IAAI,CAAC0sL,eAAe,CAAC,CAAC/oY,MAAM,CAAE,IAAI,CAACq8M,KAAK,CAAC,IAAI,CAAC0sL,eAAe,CAAC,CAACL,MAAM,EACtI,CACF,CAAA,CAAA,CACArkX,MAAO5iC,CAAAA,EAAE,CAAC,cAAA,CAAgB,IAAI,CAAC+mZ,SAAS,CAAE,IAAI,CAC9CnkX,CAAAA,MAAAA,CAAO5iC,EAAE,CAAC,aAAA,CAAe,IAAI,CAACsiC,WAAW,CAAE,IAAI,CAC/CqmM,CAAAA,GAAAA,CAAI3oO,EAAE,CAAC,YAAc,CAAA,IAAI,CAACgnZ,UAAU,CAAE,IAAI,CAC1C,CAAA,IAAI,CAACr+K,GAAG,CAAGA,GACX,CAAA,IAAI,CAACg/K,SAAS,CAAGh/K,GAAAA,CAAItrG,KAAK,CAACC,MAAM,CAACK,YAAY,CAACzP,UAAAA,CAC/C,CAAA,IAAI,CAACtrF,MAAM,CAAGA,MACd,CAAA,IAAI,CAACkiX,QAAQ,CAAG,IAAIe,SAASjjX,MAC7B,CAAA,CAAA,IAAI,CAACltB,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC4I,KAAK,CAAG,CACb,CAAA,IAAI,CAACC,MAAM,CAAG,CACd,CAAA,IAAI,CAACipY,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACZ,GAAG,CAAG,CACT,CACA,CAAA,CAAA,CACA,CACA,CAAA,EAAA,CACD,CACD,IAAI,CAACp6U,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC86U,eAAe,CAAG,IAAI,CAACC,iBAC9B,CAmLF,CAEA,MAAMQ,qBAAAA,CAAwB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyB/B,CAAC,CACD,MAAMC,eAAAA,CAAkB,IAAIx1Y,YAAAA,CAAa,GACzC,MAAMy1Y,UAAAA,CAAa,IAAIj6Y,KACvB,OAAMk6Y,eA0DJpmX,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACqmX,QAAQ,CAACrmX,OAAO,EACrB,CAAA,IAAI,CAACqmX,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,mBAAmB,CAACtmX,OAAO,EAChC,CAAA,IAAI,CAACsmX,mBAAmB,CAAG,IAAA,CAC3B,IAAI,CAACx+V,EAAE,CAACvL,qBAAqB,GAC7B,IAAI,CAACuL,EAAE,CAAC9nB,OAAO,EACf,CAAA,IAAI,CAAC8nB,EAAE,CAAG,IAAA,CACV,IAAI,CAACm0G,MAAM,CAAC1/G,qBAAqB,EAAA,CACjC,IAAI,CAAC0/G,MAAM,CAACj8H,OAAO,EACnB,CAAA,IAAI,CAACi8H,MAAM,CAAG,IACd,CAAA,IAAI,CAAC4qE,GAAG,CAACtrG,KAAK,CAACz9H,GAAG,CAAC,YAAc,CAAA,IAAI,CAAConZ,UAAU,CAChD,CAAA,IAAI,CAACqB,YAAY,EAAEvmX,OACnB,EAAA,CAAA,IAAI,CAACumX,YAAY,CAAG,KACtB,CACAC,gBAAiB/oR,CAAAA,MAAM,CAAEgpR,SAAS,CAAE,CAClC,MAAMrqR,cAAgB,EAAE,CACxB,GAAIqB,MAAQ,CAAA,CACV,MAAMy9N,OAAUurD,CAAAA,SAAAA,CAAYhpR,MAAO+7G,CAAAA,cAAc,CAAC,QAAY/7G,CAAAA,CAAAA,MAAAA,CAAO56B,MAAM,CAAG,CAC5E46B,OAAO56B,MAAM,CACd,CAAG,EAAE,CACNq4P,OAAQ13V,CAAAA,OAAO,CAAEq/F,SACf,GAAIA,MAAAA,CAAOu5B,aAAa,CAAE,CACxBA,aAAczkI,CAAAA,IAAI,IAAIkrG,MAAOu5B,CAAAA,aAAa,EAC5C,CACF,CAAA,CAAA,CACA,MAAMsqR,MAAAA,CAASD,UAAYhpR,MAAO+7G,CAAAA,cAAc,CAAC,OAAW/7G,CAAAA,CAAAA,MAAAA,CAAOtB,KAAK,CAAG,CACzEsB,MAAOtB,CAAAA,KAAK,CACb,CAAG,EAAE,CACNuqR,MAAOljZ,CAAAA,OAAO,CAAC,KAAC24H,EAAAA,CACd,GAAIA,KAAAA,CAAMC,aAAa,CAAE,CACvBA,aAAczkI,CAAAA,IAAI,IAAIwkI,KAAMC,CAAAA,aAAa,EAC3C,CACF,GACF,CACA,OAAOA,aACT,CACAuqR,SAAAA,CAAUlpR,MAAM,CAAE3iF,KAAK,CAAE2rW,SAAAA,CAAY,IAAI,CAAE,CACzC,MAAMrqR,aAAgB,CAAA,IAAI,CAACoqR,gBAAgB,CAAC/oR,MAAQgpR,CAAAA,SAAAA,CAAAA,CACpDrqR,cAAc54H,OAAO,CAAC,YACpB,EAAA,CAAA,GAAIi4H,aAAa/B,QAAQ,YAAY+1F,gBAAkB,CAAA,CACrD,MAAMm3L,iBAAoB,CAAA,IAAI,CAACA,iBAAiB,CAChDnrR,YAAAA,CAAa/B,QAAQ,CAAC62F,cAAc,CAAIjoN,UACtC,GAAIA,OAAAA,CAAQuxH,IAAI,GAAK+sR,iBAAAA,CAAmB,CACtC,MAAMnuZ,KAAO,IAAIqqN,uBACjBrqN,CAAAA,IAAKmlE,CAAAA,OAAO,CAAGt1D,OAAQs1D,CAAAA,OAAO,CAC9BnlE,KAAKqqK,UAAU,CAAGx6J,QAAQw6J,UAC1BrqK,CAAAA,IAAKouZ,CAAAA,YAAY,CAAGv+Y,OAAAA,CAAQu+Y,YAAY,CACxCpuZ,IAAK8/S,CAAAA,iBAAiB,CAAGjwS,OAAQiwS,CAAAA,iBAAiB,CAClD9/S,KAAKquZ,mBAAmB,CAAGx+Y,QAAQw+Y,mBACnCruZ,CAAAA,IAAKsuZ,CAAAA,kBAAkB,CAAGz+Y,OAAAA,CAAQy+Y,kBAAkB,CACpDtuZ,KAAKuuZ,yBAAyB,CAAG1+Y,QAAQ0+Y,yBACzCvuZ,CAAAA,IAAAA,CAAKukN,UAAU,CAAC7C,YAAY,CAAG7xM,OAAQ00M,CAAAA,UAAU,CAAC7C,YAClD1hN,CAAAA,IAAAA,CAAKukN,UAAU,CAAC9yE,SAAS,CAAG5hI,OAAAA,CAAQ00M,UAAU,CAAC9yE,SAAS,CACxDzxI,KAAKukN,UAAU,CAACt/E,IAAI,CAAGp1H,OAAAA,CAAQ00M,UAAU,CAACt/E,IAAI,CAC9CjlI,KAAKukN,UAAU,CAACpvE,KAAK,CAAGtlI,OAAAA,CAAQ00M,UAAU,CAACpvE,KAAK,CAChDn1I,KAAKukN,UAAU,CAAC/a,aAAa,CAAG35L,OAAAA,CAAQ00M,UAAU,CAAC/a,aAAa,CAChExpM,KAAKukN,UAAU,CAAC9a,gBAAgB,CAAG55L,QAAQ00M,UAAU,CAAC9a,gBACtDzpM,CAAAA,IAAKukN,CAAAA,UAAU,CAAC7a,cAAc,CAAG75L,QAAQ00M,UAAU,CAAC7a,cACpD1pM,CAAAA,IAAKukN,CAAAA,UAAU,CAAC5a,uBAAuB,CAAG95L,QAAQ00M,UAAU,CAAC5a,uBAC7D3pM,CAAAA,IAAKukN,CAAAA,UAAU,CAAC5B,oBAAoB,CAAG9yM,QAAQ00M,UAAU,CAAC5B,oBAAoB,CAC9E,OAAO3iN,IACT,CACA,OAAO6P,OACT,EACA69Y,UAAW35Y,CAAAA,MAAM,CAACsuC,KAAAA,CAAAA,CAClB,MAAMmsW,QAAW,CAAA,IAAIv2Y,aAAa,CAChCy1Y,UAAAA,CAAWhwZ,CAAC,CACZgwZ,UAAAA,CAAWz7Y,CAAC,CACZy7Y,WAAWz/Y,CAAC,CACb,EACD+0H,YAAal7B,CAAAA,YAAY,CAAC,mBAAqB0mT,CAAAA,QAAAA,CAAU,CAAK,EAAA,IAAI,CAACL,iBAAiB,CAAA,CACpFnrR,aAAal7B,YAAY,CAAC,sBAAuB,IAAI,CAAC8lT,QAAQ,CAAE,GAAK,IAAI,CAACO,iBAAiB,EAC7F,CACF,CACA,CAAA,CAAA,IAAI,CAACM,cAAc,CAACprR,gBAAgB,CAACM,cAAe,IACtD,EAAA,CACA+qR,aAAa1pR,MAAM,CAAEgpR,SAAY,CAAA,IAAI,CAAE,CACrC,MAAMrqR,cAAgB,IAAI,CAACoqR,gBAAgB,CAAC/oR,MAAAA,CAAQgpR,SACpD,CAAA,CAAA,IAAI,CAACS,cAAc,CAACnrR,mBAAmB,CAACK,aAAAA,CAAAA,CACxCA,cAAc54H,OAAO,CAAC,YAACi4H,EAAAA,CACrB,GAAIA,YAAa/B,CAAAA,QAAQ,YAAY+1F,gBAAAA,CAAkB,CACrDh0F,YAAa/B,CAAAA,QAAQ,CAAC62F,cAAc,CAAG,IACvC90F,CAAAA,YAAAA,CAAa/6B,eAAe,CAAC,mBAAA,EAC/B,CACF,CACF,EAAA,CACA0mT,iBAAoB,EAAA,CAClB,IAAI,CAACF,cAAc,CAAClyO,kBAAkB,GACxC,CACAqyO,aAAgB,EAAA,CACd,MAAMvmX,MAAAA,CAAS,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtCK,OAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,UAAUsN,QAAQ,CAAC,IAAI,CAACsZ,EAAE,CAACpL,WAAW,CAC3D5b,CAAAA,MAAAA,CAAOwV,aAAa,CAAC7I,UAAAA,CAAWO,OAAO,CACvClN,CAAAA,MAAAA,CAAOyV,WAAW,CAAC7oB,aAAAA,CAAAA,CACnBoT,MAAOsV,CAAAA,aAAa,CAAC,IAAI,CAACb,UAAU,CACpC,CAAA,IAAI,CAACgxW,YAAY,CAAC1jT,MAAM,GAC1B,CACAwoG,YAAe,EAAA,CACb,MAAMvqK,MAAS,CAAA,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,MAAM6mX,OAAUxmX,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,SAAA,CAAA,CACrC,MAAMqmX,YAAAA,CAAezmX,OAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,QAAA,CAAA,CAC1C,MAAMsmX,cAAiB1mX,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,gBAAA,CAAA,CAC5C,KAAM,CAAE4mB,EAAE,CAAEm0G,MAAM,CAAEwrP,YAAY,CAAE,CAAG,IAAI,CACzC,KAAM,CAAEjrY,KAAK,CAAEC,MAAM,CAAE,CAAGqrC,EAC1Bo+V,CAAAA,eAAe,CAAC,CAAE,CAAA,CAAG,EAAM1pY,KAAQ,CAAA,CACnC0pY,CAAAA,eAAe,CAAC,CAAE,CAAA,CAAG,EACrBoB,OAAQ94W,CAAAA,QAAQ,CAAC03W,eACjBqB,CAAAA,CAAAA,YAAAA,CAAa/4W,QAAQ,CAACsZ,GAAGpL,WAAW,CAAA,CACpC8qW,eAAeh5W,QAAQ,CAAC,GACxB6sF,kBAAmBv6F,CAAAA,MAAAA,CAAQm7H,MAAQwrP,CAAAA,YAAAA,CACnCvB,CAAAA,eAAe,CAAC,EAAE,CAAG,CACrBA,CAAAA,eAAe,CAAC,CAAE,CAAA,CAAG,EAAMzpY,MAAS,CAAA,CAAA,CACpC6qY,OAAQ94W,CAAAA,QAAQ,CAAC03W,eACjBqB,CAAAA,CAAAA,YAAAA,CAAa/4W,QAAQ,CAACytH,OAAOv/G,WAAW,CAAA,CACxC8qW,eAAeh5W,QAAQ,CAAC,GACxB6sF,kBAAmBv6F,CAAAA,MAAAA,CAAQgnB,EAAI2/V,CAAAA,YAAAA,EACjC,CACAC,kBAAmBvtZ,CAAAA,IAAI,CAAEqiB,KAAK,CAAEC,MAAM,CAAEolB,KAAK,CAAE,CAC7C,MAAM8G,OAAU,CAAA,IAAInG,QAAQ,IAAI,CAACqkM,GAAG,CAACpmM,cAAc,CAAE,CACnDtmC,KAAMA,IACNqiB,CAAAA,KAAAA,CAAOA,KACPC,CAAAA,MAAAA,CAAQA,OACR9f,MAAQyzB,CAAAA,kBAAAA,CACRiS,OAAS,CAAA,KAAA,CACTuC,SAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,sBACVuZ,SAAWpW,CAAAA,2BAAAA,CACXuW,UAAW3W,aACb,CAAA,CAAA,CACA,OAAO,IAAIquB,aAAa,CACtBM,WAAAA,CAAa/T,QACb9G,KAAOA,CAAAA,KAAAA,CACP4E,MAAO,IAAI,CAACogM,GAAG,CAACpmM,cAAc,CAACgF,QAAQ,CAE3C,CAAA,CACAkiX,mBAAmBC,WAAW,CAAE,CAC9B,MAAMprY,MAAQorY,WAAYtyW,CAAAA,YAAY,EAAE94B,KAAAA,EAAS,IAAI,CAACqqN,GAAG,CAACpmM,cAAc,CAACjkB,KAAK,CAC9E,MAAMC,MAASmrY,CAAAA,WAAAA,CAAYtyW,YAAY,EAAE74B,MAAAA,EAAU,IAAI,CAACoqN,GAAG,CAACpmM,cAAc,CAAChkB,MAAM,CACjF,MAAMorY,aAAgB,CAAA,IAAI,CAACvB,mBAAmB,CAACx8Q,MAAM,CACrD,GAAI,CAAC+9Q,aAAAA,CAAcvyW,YAAY,EAAIuyW,aAAAA,CAAcvyW,YAAY,CAAC94B,KAAK,GAAKA,KAAAA,EAASqrY,aAAcvyW,CAAAA,YAAY,CAAC74B,MAAM,GAAKA,MAAQ,CAAA,CAC7H,IAAI,CAACqrC,EAAE,CAACzkB,MAAM,CAAC7mB,MAAOC,MACtB,CAAA,CAAA,IAAI,CAACw/I,MAAM,CAAC54H,MAAM,CAAC7mB,MAAOC,MAC5B,EAAA,CACF,CACAwlF,WAAY6lT,CAAAA,iBAAiB,CAAEC,UAAU,CAAEC,qBAAqB,CAAE,CAChE,MAAMJ,WAAAA,CAAcE,kBAAkBh+Q,MAAM,CAC5C,IAAI,CAAC69Q,kBAAkB,CAACC,WAAAA,CAAAA,CACxB,MAAMtoZ,GAAAA,CAAM,IAAI,CAACunO,GAAG,CAACtrG,KAAK,CAACr9H,EAAE,CAAC,kBAAmB,CAACgoK,eAAAA,CAAiBtqC,MAAOyM,WACxE,GAAA,CAAA,GAAIu/Q,WAAgB1hP,GAAAA,eAAAA,EAAmB79B,cAAgB2/Q,qBAAyBpsR,EAAAA,KAAAA,GAAUmsR,WAAY,CACpG,IAAI,CAACV,aAAa,EAAA,CAClB/nZ,GAAIxB,CAAAA,GAAG,GACT,CACF,CAAA,CAAA,CACA,IAAI,CAACwoZ,mBAAmB,CAAC9mQ,gBAAgB,CAACsoQ,iBAAkB3mS,CAAAA,WAAW,IACvE,IAAI,CAACmlS,mBAAmB,CAAC7mQ,gBAAgB,CAACqoQ,iBAAAA,CAAkBjpQ,WAAW,EAAA,CAAA,CACvE,MAAMgpQ,aAAgB,CAAA,IAAI,CAACvB,mBAAmB,CAACx8Q,MAAM,CACrD+9Q,aAAcz/W,CAAAA,UAAU,CAAGw/W,WAAYx/W,CAAAA,UAAU,CACjDy/W,aAAAA,CAAcpwQ,aAAa,CAAGmwQ,WAAAA,CAAYnwQ,aAC1CowQ,CAAAA,aAActuY,CAAAA,GAAG,CAAGquY,WAAYruY,CAAAA,GAAG,CACnCsuY,aAAAA,CAAc5vQ,WAAW,CAAG2vQ,YAAY3vQ,WACxC4vQ,CAAAA,aAAAA,CAAc/vQ,QAAQ,CAAG8vQ,WAAAA,CAAY9vQ,QACrC+vQ,CAAAA,aAAc3wQ,CAAAA,OAAO,CAAG0wQ,WAAY1wQ,CAAAA,QAAO,CA3N7Ct4I,WAAAA,CAAYioO,GAAG,CAAEqgL,cAAc,CAAEtvO,QAAAA,CAAW,CAAC,CAAC,CAAC,CAC7C,IAAI,CAACivD,GAAG,CAAGA,GACX,CAAA,IAAI,CAACqgL,cAAc,CAAGA,gBAAkBrgL,GAAItrG,CAAAA,KAAK,CAACC,MAAM,CAAC8+C,cAAc,CAAC,WACxE,CAAA,CAAA,IAAI,CAACxyH,EAAE,CAAG,IAAI,CAAC4/V,kBAAkB,CAAC,iBAAkB,CAAG,CAAA,CAAA,CAAG,KAC1D,CAAA,IAAI,CAACpB,mBAAmB,CAAG,IAAIltK,MAAAA,CAAO,iBACtC,IAAI,CAACktK,mBAAmB,CAACjtK,YAAY,CAAC,QAAA,CAAU,CAC9C79G,MAAQ,CAAA,CACN,IAAI,CAAC0rR,cAAc,CAACrmX,EAAE,CACvB,CACD+2I,QAAAA,CAAUA,SACV7nF,UAAY,CAAA,IAAI7jF,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CAC/BopC,YAAc,CAAA,IAAI,CAACwS,EACrB,EACA,CAAA,IAAI,CAAC8+V,iBAAiB,CAAG,IAAI,CAACN,mBAAmB,CAACx8Q,MAAM,CAAC00M,aAAa,CAAC,oBACvE,CAAA,IAAI,CAAC0mE,UAAU,CAAG,eAACh/O,EAAAA,CACjB,GAAI,IAAI,CAACogP,mBAAmB,CAACx8Q,MAAM,GAAKo8B,eAAAA,CAAiB,CACvD,IAAI,CAACmlC,YAAY,GACnB,CACF,CACAw7B,CAAAA,GAAAA,CAAItrG,KAAK,CAACr9H,EAAE,CAAC,YAAA,CAAc,IAAI,CAACgnZ,UAAU,EAC1C,IAAI,CAACr+K,GAAG,CAAC10F,IAAI,CAACkN,QAAQ,CAAC,IAAI,CAACinQ,mBAAmB,CAC/C,CAAA,IAAI,CAACrqP,MAAM,CAAG,IAAI,CAACyrP,kBAAkB,CAAC,qBAAsB,CAAG,CAAA,CAAA,CAAG,KAClE,CAAA,CAAA,IAAI,CAACnyW,UAAU,CAAG,IAAI3J,WAAW,IAAM7f,CAAAA,iBAAAA,CAAmBP,mBAAqBE,CAAAA,6BAAAA,CAAAA,CAC/E,MAAMoV,MAAS,CAAA,IAAI,CAAC+lM,GAAG,CAACpmM,cAAc,CACtC,IAAI,CAACgnX,YAAY,CAAG5uR,WAAAA,CAAY1+C,YAAY,CAACr5C,MAAAA,CAAQ,CACnDk4F,UAAY,CAAA,qBAAA,CACZ72E,UAAY,CAAA,CACVigB,gBAAiBztC,iBACnB,CAAA,CACA2kG,WAAYjB,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqBlgC,GAAG,CAAC,oBAC9D2gI,YAAc0sR,CAAAA,qBAChB,CACA,CAAA,CAAA,IAAI,CAACgC,WAAW,CAAGpvR,WAAAA,CAAY1+C,YAAY,CAACr5C,MAAAA,CAAQ,CAClDk4F,UAAY,CAAA,oBAAA,CACZ72E,WAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CAAA,CACAukG,YAAa,kBACbE,CAAAA,aAAAA,CAAe,eACjB,CACA,CAAA,CAAA,IAAI,CAACmtR,YAAY,CAAG,IAAIvrR,WAAW,IAAI,CAACitR,WAAW,CACnD,CAAA,IAAI,CAAC5B,QAAQ,CAAG,IAAI7jX,QAAQ1B,MAAQ,CAAA,CAClC3mC,IAAM,CAAA,qBAAA,CACNqiB,MAAO,CACPC,CAAAA,MAAAA,CAAQ,CACR9f,CAAAA,MAAAA,CAAQyzB,mBACRiS,OAAS,CAAA,KACX,GACA,MAAM0G,MAAAA,CAAS,IAAI,CAACs9W,QAAQ,CAACp/W,IAAI,GACjC8B,MAAO3pC,CAAAA,GAAG,CAAC,IAAIwE,UAAAA,CAAW,CACxB,GACA,CAAA,GAAA,CACA,GACA,CAAA,GAAA,CACD,GACD,IAAI,CAACyiZ,QAAQ,CAACp+W,MAAM,GACtB,CAqKF,CAEA,MAAMigX,YAAAA,CAEJC,gBAAgBx/W,OAAO,CAAErgC,OAAU,CAAA,EAAE,CAAE,CACrC,MAAM0yD,KAAAA,CAAQryB,QAAQX,SAAS,EAAA,CAC/B,GAAI,OAAO4P,gBAAAA,GAAqB,aAAeojB,KAAiBpjB,YAAAA,gBAAAA,EAAoB,OAAOC,iBAAAA,GAAsB,aAAemjB,KAAiBnjB,YAAAA,iBAAAA,EAAqB,OAAOojB,eAAoB,GAAA,WAAA,EAAeD,iBAAiBC,eAAmB,EAAA,OAAOtjB,WAAgB,GAAA,WAAA,EAAeqjB,iBAAiBrjB,WAAa,CAAA,CACtT,KAAM,CAAEn7B,KAAK,CAAEC,MAAM,CAAE,CAAG,IAAI,CAAC2rY,eAAe,CAACptV,KAAMx+C,CAAAA,KAAK,CAAEw+C,KAAMv+C,CAAAA,MAAM,CAAEnU,OAAAA,CAAQomE,cAAc,CAChG,CAAA,MAAM95B,OAASjzC,QAASC,CAAAA,aAAa,CAAC,QACtCgzC,CAAAA,CAAAA,MAAOp4B,CAAAA,KAAK,CAAGA,KACfo4B,CAAAA,OAAOn4B,MAAM,CAAGA,OAChB,MAAMqgE,OAAAA,CAAUloC,MAAOwmB,CAAAA,UAAU,CAAC,IAClC,CAAA,CAAA,GAAI0hB,UAAY,IAAM,CAAA,CACpB,OAAOhN,OAAQ5uC,CAAAA,OAAO,CAACviC,SAAAA,CACzB,CACAm+E,OAAQC,CAAAA,SAAS,CAAC/hB,KAAAA,CAAO,EAAG,CAAGpmB,CAAAA,MAAAA,CAAOp4B,KAAK,CAAEo4B,OAAOn4B,MAAM,CAAA,CAC1D,GAAInU,OAAQwyC,CAAAA,KAAK,CAAE,CACjB,KAAM,CAAE3kD,CAAC,CAAEuU,CAAC,CAAEhE,CAAC,CAAE,CAAG4B,QAAQwyC,KAAK,CACjC,MAAMutW,SAAAA,CAAYvrU,QAAQ4mU,YAAY,CAAC,EAAG,CAAGlnY,CAAAA,KAAAA,CAAOC,QACpD,MAAM5L,IAAAA,CAAOw3Y,SAAUx3Y,CAAAA,IAAI,CAC3B,IAAI,IAAIha,EAAI,CAAGA,CAAAA,CAAAA,CAAIga,KAAK/Z,MAAM,CAAED,CAAK,EAAA,CAAA,CAAE,CACrCga,IAAI,CAACha,EAAI,CAAE,CAAA,CAAGga,IAAI,CAACha,CAAAA,CAAI,CAAE,CAAA,CAAGV,CAC5B0a,CAAAA,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAGga,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAG6T,CAC5BmG,CAAAA,IAAI,CAACha,CAAAA,CAAI,EAAE,CAAGga,IAAI,CAACha,CAAAA,CAAI,EAAE,CAAG6P,EAC9B,CACAo2E,OAAAA,CAAQwrU,YAAY,CAACD,SAAAA,CAAW,CAAG,CAAA,CAAA,EACrC,CACA,OAAOv4U,OAAAA,CAAQ5uC,OAAO,CAAC0T,MAAAA,CACzB,CACA,MAAM9T,MAAAA,CAAS6H,OAAQ7H,CAAAA,MAAM,CAC7B,KAAM,CAAEtkB,KAAK,CAAEC,MAAM,CAAE,CAAG,IAAI,CAAC2rY,eAAe,CAACz/W,OAAQnsB,CAAAA,KAAK,CAAEmsB,OAAQlsB,CAAAA,MAAM,CAAEnU,OAAQomE,CAAAA,cAAc,CACpG,CAAA,MAAM/xE,OAAS62B,uBAAwBmV,CAAAA,OAAAA,CAAQhsC,MAAM,CAAA,CAAI4yB,kBAAoBoZ,OAAQhsC,CAAAA,MAAM,CAC3F,MAAM4rZ,WAAa,IAAI/lX,OAAAA,CAAQ1B,OAAQ,CACrC3mC,IAAAA,CAAM,mBACNqiB,KACAC,CAAAA,MAAAA,CACA9f,MAAQA,CAAAA,MAAAA,CACR2lC,QAAS,KACTD,CAAAA,OAAAA,CAAS,MACTkC,SAAWxW,CAAAA,aAAAA,CACX2W,UAAW3W,aACX6W,CAAAA,QAAAA,CAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACZ,CACA,CAAA,CAAA,MAAMsqB,aAAe,IAAI8G,YAAAA,CAAa,CACpCM,WAAa6rW,CAAAA,UAAAA,CACb1mX,KAAO,CAAA,KACT,GACA,MAAM4S,MAAAA,CAASokF,WAAY1+C,CAAAA,YAAY,CAACr5C,MAAQ,CAAA,CAC9Ck4F,UAAY,CAAA,wBAAA,CACZ72E,WAAY,CACVigB,eAAAA,CAAiBztC,iBACnB,CACAukG,CAAAA,WAAAA,CAAa,mBACbE,aAAe,CAAA,eACjB,CACAt4F,CAAAA,CAAAA,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,QAAUsN,CAAAA,CAAAA,QAAQ,CAAC7F,OACxC7H,CAAAA,CAAAA,MAAAA,CAAOsV,aAAa,CAACxK,WAAWoB,OAAO,CAAA,CACvCquF,mBAAmBv6F,MAAQwU,CAAAA,YAAAA,CAAcb,QACzC,OAAO8zW,UAAAA,CAAWzoX,IAAI,CAAC,EAAG,CAAGtjB,CAAAA,KAAAA,CAAOC,MAAQ,CAAA,CAC1C64B,aAAcA,YACd2L,CAAAA,SAAAA,CAAW,IACb,CAAA,CAAA,CAAGn+C,IAAI,CAAEulC,cACPkgX,UAAWvoX,CAAAA,OAAO,GAClBsV,YAAatV,CAAAA,OAAO,EACpB,CAAA,MAAM+I,OAAS,IAAIigH,iBAAAA,CAAkBxsI,MAAQC,MAAS,CAAA,CAAA,CAAA,CACtDssB,OAAO3pC,GAAG,CAACipC,WACX,CAAA,CAAA,MAAMmgX,SAAW,IAAIC,SAAAA,CAAU1/W,OAAQvsB,KAAOC,CAAAA,MAAAA,CAAAA,CAC9C,MAAMm4B,MAASjzC,CAAAA,QAAAA,CAASC,aAAa,CAAC,SACtCgzC,CAAAA,MAAAA,CAAOp4B,KAAK,CAAGA,KACfo4B,CAAAA,MAAAA,CAAOn4B,MAAM,CAAGA,OAChB,MAAMisY,UAAAA,CAAa9zW,OAAOwmB,UAAU,CAAC,MACrC,GAAI,CAACstV,UAAY,CAAA,CACf,OAAO54U,OAAQ5uC,CAAAA,OAAO,CAACviC,SACzB,CAAA,CACA+pZ,WAAWJ,YAAY,CAACE,QAAU,CAAA,CAAA,CAAG,GACrC,OAAO14U,OAAAA,CAAQ5uC,OAAO,CAAC0T,MAAAA,CACzB,EACF,CACAwzW,eAAAA,CAAgB5rY,KAAK,CAAEC,MAAM,CAAEiyD,cAAc,CAAE,CAC7C,GAAIA,cAAgB,CAAA,CAClB,MAAMv1D,KAAAA,CAAQ/iB,KAAKmU,GAAG,CAACmkE,eAAiBt4E,IAAKoU,CAAAA,GAAG,CAACgS,KAAOC,CAAAA,MAAAA,CAAAA,CAAS,CACjED,CAAAA,CAAAA,KAAAA,CAAQpmB,KAAKmV,KAAK,CAACiR,MAAQrD,KAC3BsD,CAAAA,CAAAA,MAAAA,CAASrmB,KAAKmV,KAAK,CAACkR,MAAStD,CAAAA,KAAAA,EAC/B,CACA,OAAO,CACLqD,MACAC,MACF,CACF,CAtFA7d,WAAa,EAAA,EAuFf,CAEA,IAAIs1W,EAAKtwW,CAAAA,UAAAA,CAAYi8W,GAAM3rV,CAAAA,WAAAA,CAAay0X,IAAMr3Y,UAC9C,CAAA,IAAIs3Y,IAAO,CAAA,IAAI10C,GAAG,CAChB,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACD,CACD,CAAA,IAAI20C,IAAO,CAAA,IAAI30C,GAAG,CAChB,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,EACA,CACA,CAAA,EAAA,CACA,EACA,CAAA,EAAA,CACA,GACA,EACA,CAAA,EAAA,CACA,GACA,EACA,CAAA,CAAA,CACA,EACD,CACD,CAAA,IAAI40C,IAAO,CAAA,IAAI50C,GAAG,CAChB,EAAA,CACA,EACA,CAAA,EAAA,CACA,EACA,CACA,CAAA,CAAA,CACA,CACA,CAAA,CAAA,CACA,GACA,CACA,CAAA,EAAA,CACA,EACA,EACA,CAAA,CAAA,CACA,GACA,CACA,CAAA,EAAA,CACA,CACA,CAAA,EAAA,CACD,EACD,IAAI60C,IAAAA,CAAO,SAASC,EAAE,CAAE1gY,KAAK,CAC3B,CAAA,IAAI5hB,CAAI,CAAA,IAAIm5W,IAAI,EAChB,CAAA,CAAA,IAAI,IAAIhpX,CAAI,CAAA,CAAA,CAAGA,EAAI,EAAI,CAAA,EAAEA,CAAE,CAAA,CACzB6P,CAAC,CAAC7P,CAAAA,CAAE,CAAGyxB,KAAAA,EAAS,GAAK0gY,EAAE,CAACnyZ,CAAI,CAAA,CAAA,EAAE,CAEhC,IAAIV,EAAI,IAAIwyZ,GAAAA,CAAIjiZ,CAAC,CAAC,EAAA,CAAG,CACrB,CAAA,IAAI,IAAI7P,CAAI,CAAA,CAAA,CAAGA,EAAI,EAAI,CAAA,EAAEA,EAAE,CACzB,IAAI,IAAIumF,CAAAA,CAAI12E,CAAC,CAAC7P,CAAAA,CAAE,CAAEumF,CAAI12E,CAAAA,CAAC,CAAC7P,CAAI,CAAA,CAAA,CAAE,CAAE,EAAEumF,EAAE,CAClCjnF,CAAC,CAACinF,CAAAA,CAAE,CAAGA,CAAI12E,CAAAA,CAAC,CAAC7P,CAAAA,CAAE,EAAI,CAAIA,CAAAA,EACzB,CACF,CACA,OAAO,CACL6P,CAAGA,CAAAA,CAAAA,CACHvQ,CAAGA,CAAAA,CACL,CACF,CACA,CAAA,IAAI8yZ,GAAKF,IAAKH,CAAAA,IAAAA,CAAM,GAAIM,EAAKD,CAAAA,EAAAA,CAAGviZ,CAAC,CAAEyiZ,MAAQF,EAAG9yZ,CAAAA,CAAC,CAC/C+yZ,EAAE,CAAC,EAAG,CAAA,CAAG,GAAKC,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAG,EAC3B,CAAA,IAAIC,GAAKL,IAAKF,CAAAA,IAAAA,CAAM,CAAIQ,CAAAA,CAAAA,KAAAA,CAAQD,GAAGjzZ,CAAC,CACpC,IAAImzZ,GAAM,CAAA,IAAIzpC,IAAI,KAClB,CAAA,CAAA,IAAI,IAAIhpX,CAAAA,CAAI,EAAGA,CAAI,CAAA,KAAA,CAAO,EAAEA,CAAE,CAAA,CAC5B,IAAIqU,CAAI,CAACrU,CAAAA,CAAAA,CAAI,KAAK,GAAM,CAAA,CAAI,CAACA,CAAAA,CAAI,KAAK,GAAM,CAAA,CAC5CqU,CAAI,CAACA,CAAAA,CAAI,CAAA,KAAK,GAAM,CAAA,CAAI,CAACA,CAAAA,CAAI,KAAK,GAAM,EACxCA,CAAI,CAACA,CAAAA,CAAI,CAAA,KAAK,GAAM,CAAI,CAACA,CAAAA,CAAAA,CAAI,IAAK,GAAM,CACxCo+Y,CAAAA,GAAG,CAACzyZ,EAAE,CAAI,CAACqU,CAAAA,CAAI,CAAA,KAAK,GAAM,CAAI,CAACA,CAAAA,CAAI,CAAA,GAAK,GAAM,CAAA,GAAM,EACtD,CACA,IAAIq+Y,IAAAA,CAAO,SAASC,EAAE,CAAEC,EAAE,CAAEtzZ,CAAC,CAC3B,CAAA,IAAIyG,EAAI4sZ,EAAG1yZ,CAAAA,MAAM,CACjB,IAAID,CAAAA,CAAI,CACR,CAAA,IAAI6e,EAAI,IAAImqW,GAAAA,CAAI4pC,IAChB,KAAM5yZ,CAAAA,CAAI+F,EAAG,EAAE/F,CAAAA,CAAE,CACf,GAAI2yZ,EAAE,CAAC3yZ,CAAAA,CAAE,CAAE,EAAE6e,CAAC,CAAC8zY,EAAE,CAAC3yZ,CAAE,CAAA,CAAG,GAAE,CAE3B,IAAI6yZ,EAAAA,CAAK,IAAI7pC,GAAI4pC,CAAAA,EAAAA,CAAAA,CACjB,IAAI5yZ,CAAAA,CAAI,EAAGA,CAAI4yZ,CAAAA,EAAAA,CAAI,EAAE5yZ,CAAE,CAAA,CACrB6yZ,EAAE,CAAC7yZ,CAAAA,CAAE,CAAG6yZ,EAAE,CAAC7yZ,CAAI,CAAA,CAAA,CAAE,CAAG6e,CAAC,CAAC7e,EAAI,CAAE,CAAA,EAAI,EAClC,CACA,IAAI8yZ,EACJ,CAAA,GAAIxzZ,EAAG,CACLwzZ,EAAAA,CAAK,IAAI9pC,GAAI,CAAA,CAAA,EAAK4pC,EAClB,CAAA,CAAA,IAAIG,IAAM,EAAKH,CAAAA,EAAAA,CACf,IAAI5yZ,CAAI,CAAA,CAAA,CAAGA,EAAI+F,CAAG,CAAA,EAAE/F,CAAE,CAAA,CACpB,GAAI2yZ,EAAE,CAAC3yZ,EAAE,CAAE,CACT,IAAIgzZ,EAAKhzZ,CAAAA,CAAAA,EAAK,CAAI2yZ,CAAAA,EAAE,CAAC3yZ,CAAE,CAAA,CACvB,IAAIizZ,GAAML,CAAAA,EAAAA,CAAKD,EAAE,CAAC3yZ,CAAAA,CAAE,CACpB,IAAIP,EAAIozZ,EAAE,CAACF,EAAE,CAAC3yZ,CAAAA,CAAE,CAAG,CAAE,CAAA,EAAA,EAAMizZ,GAC3B,CAAA,IAAI,IAAIn4Y,CAAIrb,CAAAA,CAAAA,CAAI,CAAC,GAAKwzZ,GAAE,EAAK,CAAGxzZ,CAAAA,CAAAA,EAAKqb,EAAG,EAAErb,CAAAA,CAAE,CAC1CqzZ,EAAE,CAACL,GAAG,CAAChzZ,CAAAA,CAAE,EAAIszZ,GAAAA,CAAI,CAAGC,GACtB,CACF,CACF,CACF,CAAA,KAAO,CACLF,EAAK,CAAA,IAAI9pC,GAAIjjX,CAAAA,CAAAA,CAAAA,CACb,IAAI/F,CAAI,CAAA,CAAA,CAAGA,EAAI+F,CAAG,CAAA,EAAE/F,EAAE,CACpB,GAAI2yZ,EAAE,CAAC3yZ,EAAE,CAAE,CACT8yZ,EAAE,CAAC9yZ,EAAE,CAAGyyZ,GAAG,CAACI,EAAE,CAACF,EAAE,CAAC3yZ,EAAE,CAAG,CAAA,CAAE,GAAG,EAAI,EAAA,CAAK2yZ,EAAE,CAAC3yZ,GAAE,CAE9C,CACF,CACA,OAAO8yZ,EACT,CACA,CAAA,IAAII,GAAM,CAAA,IAAI71C,GAAG,GACjB,CAAA,CAAA,IAAI,IAAIr9W,CAAI,CAAA,CAAA,CAAGA,EAAI,GAAK,CAAA,EAAEA,CAAEkzZ,CAAAA,GAAG,CAAClzZ,CAAE,CAAA,CAAG,CACrC,CAAA,IAAI,IAAIA,CAAI,CAAA,GAAA,CAAKA,CAAI,CAAA,GAAA,CAAK,EAAEA,CAAEkzZ,CAAAA,GAAG,CAAClzZ,CAAE,CAAA,CAAG,EACvC,IAAI,IAAIA,CAAI,CAAA,GAAA,CAAKA,EAAI,GAAK,CAAA,EAAEA,EAAEkzZ,GAAG,CAAClzZ,EAAE,CAAG,CAAA,CACvC,IAAI,IAAIA,EAAI,GAAKA,CAAAA,CAAAA,CAAI,IAAK,EAAEA,CAAAA,CAAEkzZ,GAAG,CAAClzZ,CAAAA,CAAE,CAAG,CAAA,CACvC,IAAImzZ,GAAM,CAAA,IAAI91C,EAAG,CAAA,EAAA,CAAA,CACjB,IAAI,IAAIr9W,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,GAAI,EAAEA,CAAAA,CAAEmzZ,GAAG,CAACnzZ,CAAAA,CAAE,CAAG,CACpC,CAAA,IAAIozZ,GAAMV,CAAAA,IAAAA,CAAKQ,IAAK,CAAG,CAAA,CAAA,CAAA,CAAIR,KAAKQ,GAAK,CAAA,CAAA,CAAG,GACxC,IAAIG,GAAAA,CAAMX,IAAKS,CAAAA,GAAAA,CAAK,EAAG,CAAIT,CAAAA,CAAAA,IAAAA,CAAKS,IAAK,CAAG,CAAA,CAAA,CAAA,CACxC,IAAIG,IAAO,CAAA,SAAS3gY,CAAC,CAAA,CACnB,OAAO,CAACA,CAAI,CAAA,CAAA,EAAK,CAAI,CAAA,CACvB,CACA,CAAA,IAAI4gY,IAAM,SAAS9zZ,CAAC,CAAEsG,CAAC,CAAE5D,CAAC,CACxB,CAAA,GAAIA,CAAK,EAAA,IAAA,EAAQA,EAAI1C,CAAEQ,CAAAA,MAAM,CAAEkC,CAAI1C,CAAAA,CAAAA,CAAEQ,MAAM,CAC3C,OAAO,IAAIo9W,EAAAA,CAAG59W,EAAE+lE,QAAQ,CAACz/D,EAAG5D,CAC9B,CAAA,CAAA,CAAA,CACA,IAAIqxZ,EAAK,CAAA,CACP,gBACA,CAAA,oBAAA,CACA,yBACA,kBACA,CAAA,iBAAA,CACA,mBAEA,EAAA,aAAA,CACA,qBACA,sBACA,CAAA,6BAAA,CACA,mBACA,CAAA,kBAAA,CACA,mBACD,CACD,IAAI3nZ,IAAM,SAAS7C,GAAG,CAAE21W,GAAG,CAAE80C,EAAE,CAAA,CAC7B,IAAItxZ,CAAI,CAAA,IAAI+H,MAAMy0W,GAAO60C,EAAAA,EAAE,CAACxqZ,GAAI,CAAA,CAChC7G,CAAAA,CAAAA,CAAEmD,IAAI,CAAG0D,GAAAA,CACT,GAAIkB,KAAMwpZ,CAAAA,iBAAiB,CAAExpZ,KAAMwpZ,CAAAA,iBAAiB,CAACvxZ,CAAAA,CAAG0J,KACxD,GAAI,CAAC4nZ,EAAI,CAAA,MAAMtxZ,EACf,OAAOA,CACT,CACA,CAAA,IAAIwxZ,MAAQ,SAASr7Y,CAAC,CAAEqa,CAAC,CAAElzB,CAAC,CAC1BA,CAAAA,CAAAA,GAAMkzB,CAAI,CAAA,CAAA,CACV,IAAIwkD,CAAIxkD,CAAAA,CAAAA,CAAI,EAAI,CAChBra,CAAAA,CAAC,CAAC6+D,CAAAA,CAAE,EAAI13E,CACR6Y,CAAAA,CAAC,CAAC6+D,EAAI,CAAE,CAAA,EAAI13E,GAAK,EACnB,CAAA,CACA,IAAIm0Z,OAAAA,CAAU,SAASt7Y,CAAC,CAAEqa,CAAC,CAAElzB,CAAC,CAC5BA,CAAAA,CAAAA,GAAMkzB,CAAI,CAAA,CAAA,CACV,IAAIwkD,CAAIxkD,CAAAA,CAAAA,CAAI,EAAI,CAChBra,CAAAA,CAAC,CAAC6+D,CAAAA,CAAE,EAAI13E,CACR6Y,CAAAA,CAAC,CAAC6+D,EAAI,CAAE,CAAA,EAAI13E,GAAK,CACjB6Y,CAAAA,CAAC,CAAC6+D,EAAI,CAAE,CAAA,EAAI13E,GAAK,GACnB,CAAA,CACA,IAAIo0Z,KAAQ,CAAA,SAASv7Y,CAAC,CAAEs6Y,EAAE,CACxB,CAAA,IAAI9hZ,CAAI,CAAA,EAAE,CACV,IAAI,IAAI9Q,CAAI,CAAA,CAAA,CAAGA,EAAIsY,CAAErY,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CAC/B,GAAIsY,CAAC,CAACtY,CAAAA,CAAE,CAAE8Q,CAAEhQ,CAAAA,IAAI,CAAC,CACfiF,CAAAA,CAAG/F,EACHg0B,CAAG1b,CAAAA,CAAC,CAACtY,CAAAA,CAAE,CAEX,EAAA,CACA,IAAI+F,CAAI+K,CAAAA,CAAAA,CAAE7Q,MAAM,CAChB,IAAIiZ,EAAKpI,CAAAA,CAAAA,CAAEjQ,KAAK,EAChB,CAAA,GAAI,CAACkF,CAAAA,CAAG,OAAO,CACb+K,CAAAA,CAAGgjZ,EACHj1Y,CAAAA,CAAAA,CAAG,CACL,CACA,CAAA,GAAI9Y,GAAK,CAAG,CAAA,CACV,IAAItG,CAAI,CAAA,IAAI49W,EAAGvsW,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAC/K,CAAC,CAAG,CAAA,CACxBtG,CAAAA,CAAC,CAACqR,CAAC,CAAC,EAAE,CAAC/K,CAAC,CAAC,CAAG,CAAA,CACZ,OAAO,CACL+K,CAAAA,CAAGrR,CACHof,CAAAA,CAAAA,CAAG,CACL,CACF,CACA/N,CAAEZ,CAAAA,IAAI,CAAC,SAASN,CAAC,CAAEC,CAAC,EAClB,OAAOD,CAAAA,CAAEokB,CAAC,CAAGnkB,CAAAA,CAAEmkB,CAAC,CAClB,CAAA,CACAljB,CAAEhQ,CAAAA,IAAI,CAAC,CACLiF,CAAAA,CAAG,CAAC,CACJiuB,CAAAA,CAAAA,CAAG,KACL,CACA,CAAA,CAAA,IAAInV,CAAI/N,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAExR,EAAIwR,CAAC,CAAC,EAAE,CAAEijZ,EAAAA,CAAK,CAAGhmR,CAAAA,EAAAA,CAAK,EAAGC,EAAK,CAAA,CAC7Cl9H,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAG,CACL/K,CAAAA,CAAG,CAAC,CACJiuB,CAAAA,CAAAA,CAAGnV,EAAEmV,CAAC,CAAG10B,EAAE00B,CAAC,CACZnV,CAAGA,CAAAA,CAAAA,CACHvf,EAAGA,CACL,CAAA,CACA,MAAMyuI,EAAMhoI,EAAAA,CAAAA,CAAI,EAAE,CAChB8Y,CAAAA,CAAI/N,CAAC,CAACA,CAAC,CAACijZ,EAAAA,CAAG,CAAC//X,CAAC,CAAGljB,CAAC,CAACk9H,EAAAA,CAAG,CAACh6G,CAAC,CAAG+/X,EAAO/lR,EAAAA,CAAAA,EAAAA,EAAAA,CAAK,CACtC1uI,CAAAA,CAAIwR,CAAC,CAACijZ,EAAAA,EAAMhmR,EAAMj9H,EAAAA,CAAC,CAACijZ,EAAG,CAAA,CAAC//X,CAAC,CAAGljB,CAAC,CAACk9H,EAAG,CAAA,CAACh6G,CAAC,CAAG+/X,KAAO/lR,EAAK,EAAA,CAClDl9H,CAAAA,CAAC,CAACi9H,KAAK,CAAG,CACRhoI,CAAG,CAAA,CAAC,EACJiuB,CAAGnV,CAAAA,CAAAA,CAAEmV,CAAC,CAAG10B,CAAAA,CAAE00B,CAAC,CACZnV,CAAAA,CAAGA,CACHvf,CAAAA,CAAAA,CAAGA,CACL,EACF,CACA,IAAI00Z,MAAAA,CAAS96Y,EAAE,CAAC,CAAA,CAAE,CAACnT,CAAC,CACpB,IAAI,IAAI/F,EAAI,CAAGA,CAAAA,CAAAA,CAAI+F,EAAG,EAAE/F,CAAAA,CAAE,CACxB,GAAIkZ,EAAE,CAAClZ,CAAAA,CAAE,CAAC+F,CAAC,CAAGiuZ,OAAQA,MAAS96Y,CAAAA,EAAE,CAAClZ,CAAAA,CAAE,CAAC+F,EACvC,CACA,IAAIkuZ,EAAAA,CAAK,IAAIjrC,GAAIgrC,CAAAA,MAAAA,CAAS,CAC1B,CAAA,CAAA,IAAIE,IAAMC,EAAGrjZ,CAAAA,CAAC,CAACi9H,EAAAA,CAAK,EAAE,CAAEkmR,EAAAA,CAAI,CAC5B,CAAA,CAAA,GAAIC,IAAMtB,EAAI,CAAA,CACZ,IAAI5yZ,CAAI,CAAA,CAAA,CAAG69G,GAAK,CAChB,CAAA,IAAIu2S,GAAMF,CAAAA,GAAAA,CAAMtB,GAAIyB,GAAM,CAAA,CAAA,EAAKD,IAC/Bl7Y,EAAGhJ,CAAAA,IAAI,CAAC,SAASN,CAAC,CAAEC,CAAC,EACnB,OAAOokZ,EAAE,CAACpkZ,CAAE9J,CAAAA,CAAC,CAAC,CAAGkuZ,EAAE,CAACrkZ,CAAAA,CAAE7J,CAAC,CAAC,EAAI6J,EAAEokB,CAAC,CAAGnkB,EAAEmkB,CACtC,CACA,CAAA,CAAA,KAAMh0B,EAAI+F,CAAG,CAAA,EAAE/F,EAAE,CACf,IAAIs0Z,KAAOp7Y,EAAE,CAAClZ,CAAE,CAAA,CAAC+F,CAAC,CAClB,GAAIkuZ,EAAE,CAACK,IAAAA,CAAK,CAAG1B,EAAI,CAAA,CACjB/0S,EAAMw2S,EAAAA,GAAAA,EAAO,CAAKH,EAAAA,GAAAA,CAAMD,EAAE,CAACK,IAAAA,CAAK,CAChCL,CAAAA,EAAE,CAACK,KAAK,CAAG1B,GACb,CAAO,KAAA,KACT,CACA/0S,EAAOu2S,GAAAA,GAAAA,CACP,MAAMv2S,EAAAA,CAAK,EAAE,CACX,IAAI02S,KAAOr7Y,EAAE,CAAClZ,EAAE,CAAC+F,CAAC,CAClB,GAAIkuZ,EAAE,CAACM,IAAAA,CAAK,CAAG3B,EAAI/0S,CAAAA,EAAAA,EAAM,GAAK+0S,EAAKqB,CAAAA,EAAE,CAACM,IAAAA,CAAK,GAAK,CAC3C,CAAA,KAAA,EAAEv0Z,EACT,CACA,KAAMA,GAAK,CAAK69G,EAAAA,EAAAA,CAAI,EAAE79G,CAAAA,CAAE,CACtB,IAAIw0Z,IAAAA,CAAOt7Y,EAAE,CAAClZ,EAAE,CAAC+F,CAAC,CAClB,GAAIkuZ,EAAE,CAACO,IAAAA,CAAK,EAAI5B,EAAI,CAAA,CAClB,EAAEqB,EAAE,CAACO,IAAK,CACV,GAAE32S,GACJ,CACF,CACAq2S,GAAMtB,CAAAA,GACR,CACA,OAAO,CACL9hZ,CAAG,CAAA,IAAIusW,GAAG42C,EACVp1Y,CAAAA,CAAAA,CAAAA,CAAGq1Y,GACL,CACF,CAAA,CACA,IAAIC,EAAK,CAAA,SAAS/jY,CAAC,CAAEvR,CAAC,CAAEvG,CAAC,CACvB,CAAA,OAAO8X,EAAErqB,CAAC,EAAI,CAAC,CAAA,CAAIxG,KAAKoU,GAAG,CAACwgZ,GAAG/jY,CAAEvR,CAAAA,CAAC,CAAEA,CAAGvG,CAAAA,CAAAA,CAAI,CAAI67Y,CAAAA,CAAAA,EAAAA,CAAG/jY,EAAE9wB,CAAC,CAAEuf,EAAGvG,CAAI,CAAA,CAAA,CAAA,CAAA,CAAMuG,CAAC,CAACuR,CAAAA,CAAErqB,CAAC,CAAC,CAAGuS,CAC/E,CAAA,CACA,IAAIm8Y,EAAK,CAAA,SAASp1Z,CAAC,CACjB,CAAA,IAAI0G,CAAI1G,CAAAA,CAAAA,CAAEY,MAAM,CAChB,MAAM8F,CAAK,EAAA,CAAC1G,CAAC,CAAC,EAAE0G,CAAE,CAAA,CAAA,CAClB,IAAI2uZ,EAAK,CAAA,IAAI1rC,IAAI,EAAEjjX,CAAAA,CAAAA,CACnB,IAAI4uZ,GAAM,CAAA,CAAA,CAAGC,GAAMv1Z,CAAAA,CAAC,CAAC,CAAE,CAAA,CAAEw1Z,IAAM,CAC/B,CAAA,IAAIt1Y,EAAI,SAAS9f,CAAC,CAChBi1Z,CAAAA,EAAE,CAACC,GAAM,EAAA,CAAA,CAAGl1Z,EACd,CACA,CAAA,IAAI,IAAIO,CAAI,CAAA,CAAA,CAAGA,CAAK+F,EAAAA,CAAAA,CAAG,EAAE/F,CAAE,CAAA,CACzB,GAAIX,CAAC,CAACW,CAAE,CAAA,EAAI40Z,GAAO50Z,EAAAA,CAAAA,EAAK+F,EAAG,EAAE8uZ,GAAAA,CAAAA,KACxB,CACH,GAAI,CAACD,KAAOC,GAAM,CAAA,CAAA,CAAG,CACnB,KAAMA,IAAM,GAAKA,CAAAA,GAAAA,EAAO,IAAIt1Y,CAAE,CAAA,KAAA,CAAA,CAC9B,GAAIs1Y,GAAM,CAAA,CAAA,CAAG,CACXt1Y,CAAAA,CAAEs1Y,IAAM,EAAKA,CAAAA,GAAAA,CAAM,IAAM,CAAI,CAAA,KAAA,CAAQA,IAAM,CAAK,EAAA,CAAA,CAAI,KACpDA,CAAAA,CAAAA,GAAAA,CAAM,EACR,CACF,CAAA,KAAO,GAAIA,GAAAA,CAAM,EAAG,CAClBt1Y,CAAAA,CAAEq1Y,GAAM,CAAA,CAAA,EAAEC,IACV,KAAMA,GAAAA,CAAM,EAAGA,GAAO,EAAA,CAAA,CAAEt1Y,EAAE,IAC1B,CAAA,CAAA,GAAIs1Y,GAAM,CAAA,CAAA,CAAGt1Y,EAAEs1Y,GAAM,CAAA,CAAA,EAAK,EAAI,IAAOA,CAAAA,CAAAA,GAAAA,CAAM,EAC7C,CACA,MAAMA,GAAMt1Y,EAAAA,CAAAA,CAAAA,CAAEq1Y,KACdC,GAAM,CAAA,CAAA,CACND,IAAMv1Z,CAAC,CAACW,GAAE,CAEd,CACA,OAAO,CACLX,CAAGq1Z,CAAAA,EAAAA,CAAGlvV,QAAQ,CAAC,EAAGmvV,GAClBvkY,CAAAA,CAAAA,CAAAA,CAAGrqB,CACL,CACF,EACA,IAAI+uZ,IAAAA,CAAO,SAASp/N,EAAE,CAAEg/N,EAAE,CACxB,CAAA,IAAI71Y,CAAI,CAAA,CAAA,CACR,IAAI,IAAI7e,CAAAA,CAAI,EAAGA,CAAI00Z,CAAAA,EAAAA,CAAGz0Z,MAAM,CAAE,EAAED,CAAE6e,CAAAA,CAAAA,EAAK62K,EAAE,CAAC11L,CAAAA,CAAE,CAAG00Z,EAAE,CAAC10Z,EAAE,CACpD,OAAO6e,CACT,CAAA,CACA,IAAIk2Y,KAAQ,CAAA,SAASnkY,GAAG,CAAEy9H,GAAG,CAAE2mQ,GAAG,CAChC,CAAA,IAAIjvZ,EAAIivZ,GAAI/0Z,CAAAA,MAAM,CAClB,IAAIk3E,CAAAA,CAAIm8U,KAAKjlQ,GAAM,CAAA,CAAA,CACnBz9H,CAAAA,GAAG,CAACumD,CAAE,CAAA,CAAGpxE,EAAI,GACb6qB,CAAAA,GAAG,CAACumD,CAAAA,CAAI,CAAE,CAAA,CAAGpxE,GAAK,CAClB6qB,CAAAA,GAAG,CAACumD,CAAAA,CAAI,EAAE,CAAGvmD,GAAG,CAACumD,CAAAA,CAAE,CAAG,GACtBvmD,CAAAA,GAAG,CAACumD,EAAI,CAAE,CAAA,CAAGvmD,GAAG,CAACumD,EAAI,CAAE,CAAA,CAAG,IAC1B,IAAI,IAAIn3E,EAAI,CAAGA,CAAAA,CAAAA,CAAI+F,CAAG,CAAA,EAAE/F,EAAE4wB,GAAG,CAACumD,EAAIn3E,CAAI,CAAA,CAAA,CAAE,CAAGg1Z,GAAG,CAACh1Z,CAAE,CAAA,CACjD,OAAO,CAACm3E,EAAI,CAAIpxE,CAAAA,CAAAA,EAAK,CACvB,CAAA,CACA,IAAIkvZ,IAAAA,CAAO,SAASD,GAAG,CAAEpkY,GAAG,CAAEskY,KAAK,CAAEC,IAAI,CAAEC,EAAE,CAAEC,EAAE,CAAElD,EAAE,CAAEn2D,EAAE,CAAEs5D,EAAE,CAAEC,EAAE,CAAE5iY,CAAC,CAClEghY,CAAAA,KAAAA,CAAM/iY,IAAK+B,CAAKuiY,EAAAA,CAAAA,KAAAA,CAChB,GAAEE,EAAE,CAAC,GAAI,CAAA,CACT,IAAIhD,EAAKyB,CAAAA,KAAAA,CAAMuB,GAAI,EAAKI,CAAAA,CAAAA,GAAAA,CAAMpD,GAAGthZ,CAAC,CAAE2kZ,GAAMrD,CAAAA,EAAAA,CAAGvzY,CAAC,CAC9C,IAAI0zY,EAAKsB,CAAAA,KAAAA,CAAMwB,GAAI,EAAKK,CAAAA,CAAAA,GAAAA,CAAMnD,EAAGzhZ,CAAAA,CAAC,CAAE6kZ,GAAMpD,CAAAA,EAAAA,CAAG1zY,CAAC,CAC9C,IAAI+2Y,GAAKnB,EAAGe,CAAAA,GAAAA,CAAAA,CAAMK,IAAOD,CAAAA,EAAAA,CAAGv2Z,CAAC,CAAEy2Z,GAAAA,CAAMF,GAAGxlY,CAAC,CACzC,IAAI2lY,EAAKtB,CAAAA,EAAAA,CAAGiB,GAAMM,CAAAA,CAAAA,IAAAA,CAAOD,GAAG12Z,CAAC,CAAE42Z,IAAMF,EAAG3lY,CAAAA,CAAC,CACzC,IAAI8lY,MAAAA,CAAS,IAAIltC,GAAAA,CAAI,IACrB,IAAI,IAAIhpX,CAAI,CAAA,CAAA,CAAGA,EAAI61Z,IAAK51Z,CAAAA,MAAM,CAAE,EAAED,EAAE,EAAEk2Z,MAAM,CAACL,IAAI,CAAC71Z,EAAE,CAAG,EAAA,CAAG,CAC1D,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAGA,EAAIg2Z,IAAK/1Z,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,EAAEk2Z,MAAM,CAACF,IAAI,CAACh2Z,EAAE,CAAG,EAAA,CAAG,CAC1D,IAAIm2Z,EAAAA,CAAKtC,KAAMqC,CAAAA,MAAAA,CAAQ,GAAIE,GAAMD,CAAAA,EAAAA,CAAGrlZ,CAAC,CAAEulZ,KAAOF,EAAGt3Y,CAAAA,CAAC,CAClD,IAAIy3Y,KAAO,EACX,CAAA,KAAMA,KAAO,CAAK,EAAA,CAACF,GAAG,CAACnE,IAAI,CAACqE,IAAAA,CAAO,EAAE,CAAC,CAAE,EAAEA,IAC1C,CAAA,CAAA,IAAIC,KAAOhB,EAAK,CAAA,CAAA,EAAK,CACrB,CAAA,IAAIiB,MAAQ1B,IAAKM,CAAAA,EAAAA,CAAIlC,KAAO4B,IAAKO,CAAAA,EAAAA,CAAIlC,KAAOhB,EAC5C,CAAA,IAAIsE,KAAQ3B,CAAAA,IAAAA,CAAKM,GAAII,GAAOV,CAAAA,CAAAA,IAAAA,CAAKO,EAAIK,CAAAA,GAAAA,CAAAA,CAAOvD,GAAK,EAAK,CAAA,CAAA,CAAImE,IAAOxB,CAAAA,IAAAA,CAAKoB,OAAQE,GAAO,CAAA,CAAA,CAAA,CAAIF,MAAM,CAAC,EAAA,CAAG,CAAG,CAAIA,CAAAA,MAAM,CAAC,EAAA,CAAG,CAAG,CAAIA,CAAAA,MAAM,CAAC,EAAG,CAAA,CACrI,GAAIZ,EAAM,EAAA,CAAA,EAAKiB,IAAQC,EAAAA,KAAAA,EAASD,MAAQE,KAAO,CAAA,OAAO1B,MAAMnkY,GAAK+B,CAAAA,CAAAA,CAAGqiY,IAAIxvV,QAAQ,CAAC8vV,EAAIA,CAAAA,EAAAA,CAAKC,KAC1F,IAAImB,EAAAA,CAAIC,EAAIC,CAAAA,EAAAA,CAAIC,EAChBlD,CAAAA,KAAAA,CAAM/iY,GAAK+B,CAAAA,CAAAA,CAAG,GAAK8jY,KAAAA,CAAQD,KAAI,CAAK7jY,CAAAA,CAAAA,CAAAA,EAAK,EACzC,GAAI8jY,KAAAA,CAAQD,KAAO,CAAA,CACjBE,GAAKhE,IAAK8C,CAAAA,GAAAA,CAAKC,IAAK,CAAIkB,CAAAA,CAAAA,EAAAA,CAAKnB,IAAKoB,EAAKlE,CAAAA,IAAAA,CAAKgD,GAAKC,CAAAA,GAAAA,CAAK,GAAIkB,EAAKnB,CAAAA,GAAAA,CAC/D,IAAIoB,GAAMpE,CAAAA,IAAAA,CAAK0D,IAAKC,IAAM,CAAA,CAAA,CAAA,CAC1B1C,KAAM/iY,CAAAA,GAAAA,CAAK+B,EAAGmjY,GAAM,CAAA,GAAA,CAAA,CACpBnC,MAAM/iY,GAAK+B,CAAAA,CAAAA,CAAI,EAAGsjY,GAAM,CAAA,CAAA,CAAA,CACxBtC,KAAM/iY,CAAAA,GAAAA,CAAK+B,EAAI,EAAI2jY,CAAAA,IAAAA,CAAO,GAC1B3jY,CAAK,EAAA,EAAA,CACL,IAAI,IAAI3yB,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIs2Z,KAAM,EAAEt2Z,CAAAA,CAAE2zZ,MAAM/iY,GAAK+B,CAAAA,CAAAA,CAAI,EAAI3yB,CAAGo2Z,CAAAA,GAAG,CAACnE,IAAI,CAACjyZ,CAAE,CAAA,CAAC,EAC/D2yB,CAAK,EAAA,CAAA,CAAI2jY,KACT,IAAIS,IAAAA,CAAO,CACTlB,IAAAA,CACAG,KACD,CACD,IAAI,IAAI/hJ,EAAAA,CAAK,EAAGA,EAAK,CAAA,CAAA,CAAG,EAAEA,EAAAA,CAAG,CAC3B,IAAI+iJ,IAAAA,CAAOD,IAAI,CAAC9iJ,EAAAA,CAAG,CACnB,IAAI,IAAIj0Q,CAAI,CAAA,CAAA,CAAGA,EAAIg3Z,IAAK/2Z,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CAClC,IAAIkY,GAAAA,CAAM8+Y,IAAI,CAACh3Z,EAAE,CAAG,EACpB2zZ,CAAAA,KAAM/iY,CAAAA,GAAAA,CAAK+B,EAAGmkY,GAAG,CAAC5+Y,GAAI,CAAA,CAAA,CAAGya,GAAKyjY,GAAG,CAACl+Y,GAAI,CAAA,CACtC,GAAIA,GAAM,CAAA,EAAA,CAAIy7Y,KAAM/iY,CAAAA,GAAAA,CAAK+B,EAAGqkY,IAAI,CAACh3Z,EAAE,EAAI,CAAA,CAAI,KAAM2yB,CAAKqkY,EAAAA,IAAI,CAACh3Z,CAAAA,CAAE,EAAI,GACnE,CACF,CACF,CAAO,KAAA,CACL02Z,GAAKtD,GAAKuD,CAAAA,EAAAA,CAAKzD,GAAK0D,CAAAA,EAAAA,CAAKvD,IAAKwD,EAAK1D,CAAAA,IACrC,CACA,IAAI,IAAInzZ,EAAI,CAAGA,CAAAA,CAAAA,CAAIg8V,EAAI,CAAA,EAAEh8V,EAAE,CACzB,IAAIi3Z,GAAM9B,CAAAA,IAAI,CAACn1Z,CAAE,CAAA,CACjB,GAAIi3Z,GAAAA,CAAM,IAAK,CACb,IAAI/+Y,IAAM++Y,GAAO,EAAA,EAAA,CAAK,EACtBrD,CAAAA,OAAAA,CAAQhjY,GAAK+B,CAAAA,CAAAA,CAAG+jY,EAAE,CAACx+Y,GAAAA,CAAM,IAAI,CAAGya,CAAAA,CAAAA,EAAKgkY,EAAE,CAACz+Y,GAAAA,CAAM,GAAI,CAAA,CAClD,GAAIA,GAAM,CAAA,CAAA,CAAGy7Y,MAAM/iY,GAAK+B,CAAAA,CAAAA,CAAGskY,KAAO,EAAK,CAAA,EAAA,CAAA,CAAKtkY,CAAKo/X,EAAAA,IAAI,CAAC75Y,GAAI,CAAA,CAC1D,IAAIuG,GAAAA,CAAMw4Y,IAAM,EAChBrD,CAAAA,OAAQhjY,CAAAA,GAAAA,CAAK+B,EAAGikY,EAAE,CAACn4Y,IAAI,CAAGkU,CAAAA,CAAAA,EAAKkkY,EAAE,CAACp4Y,GAAAA,CAAI,CACtC,GAAIA,IAAM,CAAGm1Y,CAAAA,OAAAA,CAAQhjY,IAAK+B,CAAGskY,CAAAA,GAAAA,EAAO,EAAI,IAAOtkY,CAAAA,CAAAA,CAAAA,EAAKq/X,IAAI,CAACvzY,KAAI,CAC/D,KAAO,CACLm1Y,OAAQhjY,CAAAA,GAAAA,CAAK+B,EAAG+jY,EAAE,CAACO,GAAI,CAAA,CAAA,CAAGtkY,GAAKgkY,EAAE,CAACM,GAAI,EACxC,CACF,CACArD,OAAAA,CAAQhjY,GAAK+B,CAAAA,CAAAA,CAAG+jY,EAAE,CAAC,GAAA,CAAI,EACvB,OAAO/jY,CAAAA,CAAIgkY,EAAE,CAAC,GAAA,CAAI,CACpB,CACA,IAAIO,GAAM,CAAA,IAAIpF,IAAI,CAChB,KAAA,CACA,OACA,MACA,CAAA,MAAA,CACA,MACA,CAAA,OAAA,CACA,QACA,OACA,CAAA,OAAA,CACD,EACD,IAAIgC,EAAAA,CAAK,IAAIz2C,EAAG,CAAA,CAAA,CAAA,CAChB,IAAI85C,IAAAA,CAAO,SAASnC,GAAG,CAAEoC,GAAG,CAAEC,IAAI,CAAEC,GAAG,CAAE1xS,IAAI,CAAE2xS,EAAE,CAAA,CAC/C,IAAIxxZ,CAAIwxZ,CAAAA,EAAAA,CAAGr7Y,CAAC,EAAI84Y,GAAAA,CAAI/0Z,MAAM,CAC1B,IAAIk3E,CAAI,CAAA,IAAIkmS,GAAGi6C,GAAMvxZ,CAAAA,CAAAA,CAAI,GAAK,CAAA,CAAIxG,IAAK0V,CAAAA,IAAI,CAAClP,CAAI,CAAA,GAAA,CAAI,EAAK6/G,IACzD,CAAA,CAAA,IAAIrmG,EAAI43D,CAAE3R,CAAAA,QAAQ,CAAC8xV,GAAAA,CAAKngV,EAAEl3E,MAAM,CAAG2lH,IACnC,CAAA,CAAA,IAAI4xS,IAAMD,EAAG14Y,CAAAA,CAAC,CACd,IAAIwvI,IAAM,CAACkpQ,GAAGj4Z,CAAC,EAAI,CAAA,EAAK,CAAA,CACxB,GAAI83Z,GAAAA,CAAK,CACP,GAAI/oQ,GAAAA,CAAK9uI,CAAC,CAAC,CAAA,CAAE,CAAGg4Y,EAAGj4Z,CAAAA,CAAC,EAAI,CAAA,CACxB,IAAIu/N,GAAMq4L,CAAAA,GAAG,CAACE,GAAM,CAAA,CAAA,CAAE,CACtB,IAAIhnY,CAAAA,CAAIyuM,GAAO,EAAA,EAAA,CAAIx/N,EAAIw/N,GAAM,CAAA,IAAA,CAC7B,IAAI44L,KAAAA,CAAQ,CAAC,CAAA,EAAKJ,IAAG,EAAK,EAC1B,IAAIp9M,IAAAA,CAAOs9M,GAAG5kY,CAAC,EAAI,IAAIq2V,GAAI,CAAA,KAAA,CAAA,CAAQ/vI,IAAOs+K,CAAAA,EAAAA,CAAG9jY,CAAC,EAAI,IAAIu1V,IAAIyuC,KAAQ,CAAA,CAAA,CAAA,CAClE,IAAIC,KAAQn4Z,CAAAA,IAAAA,CAAK0V,IAAI,CAACoiZ,KAAO,CAAIM,CAAAA,CAAAA,KAAAA,CAAQ,EAAID,KAC7C,CAAA,IAAIE,IAAM,SAAS53Z,CAAC,CAClB,CAAA,OAAO,CAACg1Z,GAAG,CAACh1Z,CAAAA,CAAE,CAAGg1Z,GAAG,CAACh1Z,CAAI,CAAA,CAAA,CAAE,EAAI03Z,KAAQ1C,CAAAA,GAAG,CAACh1Z,CAAI,CAAA,CAAA,CAAE,EAAI23Z,KAAI,EAAKF,KAChE,CAAA,CACA,IAAItC,IAAO,CAAA,IAAIrD,IAAI,IACnB,CAAA,CAAA,IAAIsD,GAAK,IAAIpsC,GAAAA,CAAI,GAAMqsC,CAAAA,CAAAA,EAAAA,CAAK,IAAIrsC,GAAI,CAAA,EAAA,CAAA,CACpC,IAAI6uC,IAAO,CAAA,CAAA,CAAG1F,GAAK,CAAGnyZ,CAAAA,CAAAA,CAAIu3Z,EAAGv3Z,CAAAA,CAAC,EAAI,CAAGg8V,CAAAA,EAAAA,CAAK,CAAG87D,CAAAA,EAAAA,CAAKP,GAAGh4Y,CAAC,EAAI,CAAG+1Y,CAAAA,EAAAA,CAAK,EAClE,KAAMt1Z,CAAAA,CAAI,EAAI+F,CAAG,CAAA,EAAE/F,EAAE,CACnB,IAAI+3Z,EAAKH,CAAAA,GAAAA,CAAI53Z,GACb,IAAIg4Z,IAAAA,CAAOh4Z,EAAI,KAAOi4Z,CAAAA,KAAAA,CAAQh/K,IAAI,CAAC8+K,EAAAA,CAAG,CACtC99M,IAAI,CAAC+9M,IAAAA,CAAK,CAAGC,KACbh/K,CAAAA,IAAI,CAAC8+K,EAAAA,CAAG,CAAGC,IAAAA,CACX,GAAIF,EAAM93Z,EAAAA,CAAAA,CAAG,CACX,IAAIk4Z,IAAMnyZ,CAAI/F,CAAAA,CAAAA,CACd,GAAK63Z,CAAAA,IAAO,CAAA,GAAA,EAAQ77D,GAAK,KAAI,IAAOk8D,GAAM,CAAA,GAAA,EAAO,CAACV,GAAE,EAAI,CACtDnpQ,GAAAA,CAAM4mQ,KAAKD,GAAKz1Y,CAAAA,CAAAA,CAAG,EAAG41Y,IAAMC,CAAAA,EAAAA,CAAIC,EAAIlD,CAAAA,EAAAA,CAAIn2D,GAAIs5D,EAAIt1Z,CAAAA,CAAAA,CAAIs1Z,GAAIjnQ,GACxD2tM,CAAAA,CAAAA,GAAK67D,IAAO1F,CAAAA,EAAAA,CAAK,CAAGmD,CAAAA,EAAAA,CAAKt1Z,EACzB,IAAI,IAAIumF,CAAI,CAAA,CAAA,CAAGA,EAAI,GAAK,CAAA,EAAEA,CAAE6uU,CAAAA,EAAE,CAAC7uU,CAAE,CAAA,CAAG,EACpC,IAAI,IAAIA,EAAI,CAAGA,CAAAA,CAAAA,CAAI,EAAI,CAAA,EAAEA,EAAE8uU,EAAE,CAAC9uU,EAAE,CAAG,EACrC,CACA,IAAI1nE,CAAAA,CAAI,CAAGvG,CAAAA,CAAAA,CAAI,EAAG6/Y,IAAO94Z,CAAAA,CAAAA,CAAG+4Z,IAAMJ,IAAOC,CAAAA,KAAAA,CAAQ,MACjD,GAAIC,GAAAA,CAAM,CAAKH,EAAAA,EAAAA,EAAMH,IAAI53Z,CAAIo4Z,CAAAA,GAAAA,CAAAA,CAAM,CACjC,IAAIC,KAAO94Z,IAAKmU,CAAAA,GAAG,CAAC0c,CAAAA,CAAG8nY,KAAO,CAC9B,CAAA,IAAII,KAAO/4Z,IAAKmU,CAAAA,GAAG,CAAC,KAAO1T,CAAAA,CAAAA,CAAAA,CAC3B,IAAIu4Z,EAAAA,CAAKh5Z,KAAKmU,GAAG,CAAC,IAAKwkZ,GACvB,CAAA,CAAA,MAAME,KAAOE,IAAQ,EAAA,EAAEH,IAAQH,EAAAA,IAAAA,EAAQC,MAAM,CAC3C,GAAIjD,GAAG,CAACh1Z,CAAAA,CAAI6e,EAAE,EAAIm2Y,GAAG,CAACh1Z,CAAAA,CAAI6e,EAAIu5Y,GAAI,CAAA,CAAE,CAClC,IAAII,GAAK,CACT,CAAA,KAAMA,EAAKD,CAAAA,EAAAA,EAAMvD,GAAG,CAACh1Z,CAAAA,CAAIw4Z,GAAG,EAAIxD,GAAG,CAACh1Z,CAAIw4Z,CAAAA,EAAAA,CAAKJ,GAAI,CAAA,CAAE,EAAEI,EACrD,CAAA,CAAA,GAAIA,GAAK35Y,CAAG,CAAA,CACVA,EAAI25Y,EAAIlgZ,CAAAA,CAAAA,CAAI8/Y,GACZ,CAAA,GAAII,GAAKH,IAAM,CAAA,MACf,IAAII,GAAMl5Z,CAAAA,IAAAA,CAAKmU,GAAG,CAAC0kZ,GAAAA,CAAKI,EAAK,CAAA,CAAA,CAAA,CAC7B,IAAIE,EAAK,CAAA,CAAA,CACT,IAAI,IAAInyU,EAAI,CAAGA,CAAAA,CAAAA,CAAIkyU,GAAK,CAAA,EAAElyU,EAAE,CAC1B,IAAIoyU,GAAK34Z,CAAIo4Z,CAAAA,GAAAA,CAAM7xU,EAAI,KACvB,CAAA,IAAIqyU,GAAM3+M,CAAAA,IAAI,CAAC0+M,EAAG,CAAA,CAClB,IAAIhG,EAAKgG,CAAAA,EAAAA,CAAKC,IAAM,KACpB,CAAA,GAAIjG,EAAK+F,CAAAA,EAAAA,CAAIA,GAAK/F,EAAIsF,CAAAA,KAAAA,CAAQU,GAChC,CACF,CACF,CACAX,IAAOC,CAAAA,KAAAA,CAAOA,KAAQh+M,CAAAA,IAAI,CAAC+9M,IAAK,CAAA,CAChCI,KAAOJ,IAAOC,CAAAA,KAAAA,CAAQ,MACxB,CACF,CACA,GAAI3/Y,CAAAA,CAAG,CACL68Y,IAAI,CAACn5D,KAAK,CAAG,SAAA,CAAYs2D,KAAK,CAACzzY,CAAAA,CAAE,EAAI,EAAA,CAAK2zY,KAAK,CAACl6Y,CAAAA,CAAE,CAClD,IAAIugZ,GAAAA,CAAMvG,KAAK,CAACzzY,CAAAA,CAAE,CAAG,EAAA,CAAIi6Y,IAAMtG,KAAK,CAACl6Y,EAAE,CAAG,EAAA,CAC1C65Y,IAAMJ,IAAI,CAAC8G,GAAI,CAAA,CAAG7G,IAAI,CAAC8G,GAAAA,CAAI,CAC3B,EAAE1D,EAAE,CAAC,GAAA,CAAMyD,GAAI,CACf,GAAExD,EAAE,CAACyD,IAAI,CACThB,EAAAA,CAAK93Z,EAAI6e,CACT,CAAA,EAAEg5Y,KACJ,CAAA,KAAO,CACL1C,IAAI,CAACn5D,KAAK,CAAGg5D,GAAG,CAACh1Z,CAAE,CACnB,CAAEo1Z,EAAAA,EAAE,CAACJ,GAAG,CAACh1Z,EAAE,EACb,CACF,CACF,CACA,IAAIA,CAAAA,CAAIT,KAAKoU,GAAG,CAAC3T,CAAG83Z,CAAAA,EAAAA,CAAAA,CAAK93Z,EAAI+F,CAAG,CAAA,EAAE/F,CAAE,CAAA,CAClCm1Z,IAAI,CAACn5D,EAAAA,EAAAA,CAAK,CAAGg5D,GAAG,CAACh1Z,EAAE,CACnB,EAAEo1Z,EAAE,CAACJ,GAAG,CAACh1Z,CAAAA,CAAE,EAAC,CAEdquJ,IAAM4mQ,IAAKD,CAAAA,GAAAA,CAAKz1Y,CAAGi4Y,CAAAA,GAAAA,CAAKrC,KAAMC,EAAIC,CAAAA,EAAAA,CAAIlD,GAAIn2D,EAAIs5D,CAAAA,EAAAA,CAAIt1Z,EAAIs1Z,EAAIjnQ,CAAAA,GAAAA,CAAAA,CAC1D,GAAI,CAACmpQ,IAAK,CACRD,EAAAA,CAAGj4Z,CAAC,CAAG+uJ,IAAM,CAAI9uI,CAAAA,CAAC,CAAC8uI,GAAAA,CAAM,EAAI,CAAE,CAAA,EAAI,EACnCA,GAAO,EAAA,CACPkpQ,CAAAA,EAAG9jY,CAAAA,CAAC,CAAGwlN,IAAAA,CAAMs+K,GAAG5kY,CAAC,CAAGsnL,KAAMs9M,EAAGv3Z,CAAAA,CAAC,CAAGA,CAAGu3Z,CAAAA,EAAAA,CAAGh4Y,CAAC,CAAGu4Y,GAC7C,CACF,CAAA,KAAO,CACL,IAAI,IAAI93Z,EAAIu3Z,EAAGh4Y,CAAAA,CAAC,EAAI,CAAA,CAAGvf,EAAI+F,CAAIyxZ,CAAAA,GAAAA,CAAKx3Z,CAAK,EAAA,KAAA,CAAM,CAC7C,IAAImC,CAAAA,CAAInC,CAAI,CAAA,KAAA,CACZ,GAAImC,CAAK4D,EAAAA,CAAAA,CAAG,CACVwZ,CAAC,CAAC8uI,IAAM,CAAI,CAAA,CAAA,CAAE,CAAGmpQ,GAAAA,CACjBr1Z,EAAI4D,EACN,CACAsoJ,IAAM0mQ,KAAMx1Y,CAAAA,CAAAA,CAAG8uI,IAAM,CAAG2mQ,CAAAA,GAAAA,CAAIxvV,QAAQ,CAACxlE,EAAGmC,CAC1C,CAAA,EAAA,CACAo1Z,GAAGv3Z,CAAC,CAAG+F,EACT,CACA,OAAOwtZ,GAAIp8U,CAAAA,CAAAA,CAAG,EAAGmgV,GAAMhE,CAAAA,IAAAA,CAAKjlQ,GAAOzoC,CAAAA,CAAAA,IAAAA,CACrC,EACA,IAAImzS,IAAAA,CAAO,UACT,CAAA,IAAIjoZ,EAAI,IAAI2J,UAAAA,CAAW,KACvB,IAAI,IAAIza,EAAI,CAAGA,CAAAA,CAAAA,CAAI,GAAK,CAAA,EAAEA,EAAE,CAC1B,IAAIX,EAAIW,CAAGshI,CAAAA,CAAAA,CAAI,EACf,MAAM,EAAEA,CAAEjiI,CAAAA,CAAAA,CAAI,CAACA,CAAAA,CAAI,GAAK,CAAC,SAAQ,EAAKA,CAAM,GAAA,CAC5CyR,CAAAA,CAAC,CAAC9Q,CAAE,CAAA,CAAGX,EACT,CACA,OAAOyR,CACT,CAAA,EAAA,CACA,IAAIkoZ,GAAAA,CAAM,WACR,IAAI35Z,CAAAA,CAAI,CAAC,CACT,CAAA,OAAO,CACLszB,CAAG,CAAA,SAASra,CAAC,CAAA,CACX,IAAI8iN,EAAK/7N,CAAAA,CAAAA,CACT,IAAI,IAAIW,CAAAA,CAAI,EAAGA,CAAIsY,CAAAA,CAAAA,CAAErY,MAAM,CAAE,EAAED,CAAEo7N,CAAAA,EAAAA,CAAK29L,IAAI,CAAC39L,EAAAA,CAAK,IAAM9iN,CAAC,CAACtY,CAAE,CAAA,CAAC,CAAGo7N,EAAO,GAAA,CAAA,CACrE/7N,CAAI+7N,CAAAA,GACN,EACA9iN,CAAG,CAAA,UAAA,CACD,OAAO,CAACjZ,CACV,CACF,CACF,EACA,IAAI45Z,IAAAA,CAAO,SAASjE,GAAG,CAAEn2L,GAAG,CAAEy4L,GAAG,CAAE1xS,IAAI,CAAE2xS,EAAE,CAAA,CACzC,GAAI,CAACA,EAAAA,CAAI,CACPA,EAAAA,CAAK,CACH14Y,CAAG,CAAA,CACL,EACA,GAAIggN,GAAAA,CAAIq6L,UAAU,CAAE,CAClB,IAAIC,IAAAA,CAAOt6L,IAAIq6L,UAAU,CAAC1zV,QAAQ,CAAC,CAAC,KACpC,CAAA,CAAA,IAAI4zV,MAAS,CAAA,IAAI/7C,GAAG87C,IAAKl5Z,CAAAA,MAAM,CAAG+0Z,GAAI/0Z,CAAAA,MAAM,EAC5Cm5Z,MAAO7wZ,CAAAA,GAAG,CAAC4wZ,IAAAA,CAAAA,CACXC,OAAO7wZ,GAAG,CAACysZ,IAAKmE,IAAKl5Z,CAAAA,MAAM,EAC3B+0Z,GAAMoE,CAAAA,MACN7B,CAAAA,EAAAA,CAAGh4Y,CAAC,CAAG45Y,IAAAA,CAAKl5Z,OAAM,CAEtB,CACA,OAAOk3Z,IAAAA,CAAKnC,GAAKn2L,CAAAA,GAAAA,CAAIxuL,KAAK,EAAI,IAAA,CAAO,CAAIwuL,CAAAA,GAAAA,CAAIxuL,KAAK,CAAEwuL,GAAAA,CAAIw6L,GAAG,EAAI,KAAO9B,EAAG14Y,CAAAA,CAAC,CAAGtf,IAAK0V,CAAAA,IAAI,CAAC1V,IAAKoU,CAAAA,GAAG,CAAC,CAAA,CAAGpU,KAAKmU,GAAG,CAAC,GAAInU,IAAKgqG,CAAAA,GAAG,CAACyrT,GAAI/0Z,CAAAA,MAAM,CAAM,CAAA,CAAA,CAAA,GAAA,CAAA,CAAO,GAAK,EAAK4+N,CAAAA,GAAAA,CAAIw6L,GAAG,CAAE/B,GAAAA,CAAK1xS,KAAM2xS,EAChL,CAAA,CAAA,CACA,IAAI+B,GAAAA,CAAM,SAAS1pZ,CAAC,CAAEC,CAAC,CAAA,CACrB,IAAIsnE,CAAI,CAAA,EACR,CAAA,IAAI,IAAImqD,CAAK1xH,IAAAA,CAAAA,CAAEunE,CAAC,CAACmqD,CAAAA,CAAE,CAAG1xH,CAAC,CAAC0xH,CAAE,CAAA,CAC1B,IAAI,IAAIA,CAAAA,IAAKzxH,EAAEsnE,CAAC,CAACmqD,EAAE,CAAGzxH,CAAC,CAACyxH,CAAAA,CAAE,CAC1B,OAAOnqD,CACT,EACA,IAAIoiV,MAAAA,CAAS,SAASjhZ,CAAC,CAAEzI,CAAC,CAAEpQ,CAAC,CAC3B,CAAA,KAAMA,CAAG,CAAA,EAAEoQ,EAAEyI,CAAC,CAACzI,CAAE,CAAA,CAAGpQ,EAAGA,CAAO,IAAA,EAChC,EACA,SAAS+5Z,WAAAA,CAAYx/Y,IAAI,CAAEpY,IAAI,CAC7B,CAAA,OAAOq3Z,KAAKj/Y,IAAMpY,CAAAA,IAAAA,EAAQ,EAAI,CAAA,CAAA,CAAG,EACnC,CACA,IAAI63Z,IAAO,CAAA,SAASnhZ,CAAC,CAAEqa,CAAC,CAAE7hB,CAAC,CAAEqmE,CAAC,CAC5B,CAAA,IAAI,IAAImqD,CAAAA,IAAKhpH,EAAE,CACb,IAAI/D,GAAM+D,CAAAA,CAAC,CAACgpH,CAAE,CAAA,CAAElxG,CAAIuC,CAAAA,CAAAA,CAAI2uG,EAAGnsF,EAAKgiC,CAAAA,CAAAA,CAChC,GAAIn4E,KAAMC,CAAAA,OAAO,CAACsV,GAAM4gC,CAAAA,CAAAA,EAAAA,CAAKmkX,GAAIniV,CAAAA,CAAAA,CAAG5iE,GAAG,CAAC,CAAA,CAAE,EAAGA,GAAMA,CAAAA,GAAG,CAAC,CAAE,CAAA,CACzD,GAAIA,GAAAA,YAAe8oW,GAAIvsW,CAAC,CAACsf,EAAE,CAAG,CAC5B7b,IACA4gC,EACD,CAAA,CAAA,KACI,CACHrkC,CAAC,CAACsf,CAAK,EAAA,GAAA,CAAI,CAAG,CACZ,IAAIitV,EAAG,CAAA,CAAA,CAAA,CACPloU,EACD,CAAA,CACDskX,KAAKllZ,GAAK6b,CAAAA,CAAAA,CAAGtf,EAAGqmE,CAClB,EAAA,CACF,CACF,CACA,CAAA,IAAIuiV,EAAK,CAAA,OAAOC,aAAe,WAAe,EAAA,IAAIA,YAClD,IAAIC,EAAAA,CAAK,OAAOj9K,WAAe,EAAA,WAAA,EAAe,IAAIA,WAAAA,CAClD,IAAIk9K,GAAM,CAAA,CAAA,CACV,GAAI,CACFD,EAAAA,CAAGh9K,MAAM,CAACk3K,EAAAA,CAAI,CACZxnR,MAAAA,CAAQ,IACV,CACAutR,CAAAA,CAAAA,GAAAA,CAAM,EACR,CAAE,MAAO13Z,CAAG,CAAA,EACZ,SAAS23Z,QAAQ5gX,GAAG,CAAE6gX,MAAM,CAC1B,CAAA,IAAI/5Z,EACJ,GAAI05Z,EAAAA,CAAI,OAAOA,EAAAA,CAAGrhJ,MAAM,CAACn/N,GAAAA,CAAAA,CACzB,IAAIr6B,CAAIq6B,CAAAA,GAAAA,CAAIj5C,MAAM,CAClB,IAAIgvB,EAAK,CAAA,IAAIouV,GAAGnkU,GAAIj5C,CAAAA,MAAM,EAAIi5C,GAAAA,CAAIj5C,MAAM,EAAI,CAAA,CAC5C,CAAA,CAAA,IAAI+5Z,GAAK,CACT,CAAA,IAAIz6Y,CAAI,CAAA,SAAS9f,CAAC,CAChBwvB,CAAAA,EAAE,CAAC+qY,EAAAA,EAAAA,CAAK,CAAGv6Z,EACb,CAAA,CACA,IAAI,IAAIO,CAAAA,CAAI,EAAGA,CAAI6e,CAAAA,CAAAA,CAAG,EAAE7e,CAAAA,CAAE,CACxB,GAAIg6Z,EAAAA,CAAK,EAAI/qY,EAAGhvB,CAAAA,MAAM,CAAE,CACtB,IAAImwB,CAAI,CAAA,IAAIitV,GAAG28C,EAAK,CAAA,CAAA,EAAKn7Y,CAAI7e,CAAAA,CAAAA,EAAK,CAAA,CAClCowB,CAAAA,CAAAA,CAAAA,CAAE7nB,GAAG,CAAC0mB,IACNA,EAAKmB,CAAAA,EACP,CACA,IAAI/wB,CAAAA,CAAI65C,IAAI9zC,UAAU,CAACpF,CACvB,CAAA,CAAA,GAAIX,EAAI,GAAO06Z,EAAAA,MAAAA,CAAQx6Y,EAAElgB,CACpB,CAAA,CAAA,KAAA,GAAIA,EAAI,IAAMkgB,CAAAA,CAAAA,CAAE,GAAMlgB,CAAAA,CAAAA,EAAK,GAAIkgB,CAAE,CAAA,GAAA,CAAMlgB,EAAI,EAC3C,CAAA,CAAA,KAAA,GAAIA,EAAI,KAASA,EAAAA,CAAAA,CAAI,KAAOA,CAAAA,CAAAA,CAAI,OAASA,CAAAA,CAAI,MAAQ,EAAC,CAAA,CAAK65C,IAAI9zC,UAAU,CAAC,EAAEpF,CAAAA,CAAAA,CAAK,KAAMuf,CAAE,CAAA,GAAA,CAAMlgB,CAAK,EAAA,EAAA,CAAA,CAAKkgB,EAAE,GAAMlgB,CAAAA,CAAAA,EAAK,EAAK,CAAA,EAAA,CAAA,CAAKkgB,EAAE,GAAMlgB,CAAAA,CAAAA,EAAK,EAAI,EAAKkgB,CAAAA,CAAAA,CAAAA,CAAE,IAAMlgB,CAAI,CAAA,EAAA,CAAA,CAAA,KAClKkgB,CAAE,CAAA,GAAA,CAAMlgB,GAAK,EAAKkgB,CAAAA,CAAAA,CAAAA,CAAE,IAAMlgB,CAAK,EAAA,CAAA,CAAI,IAAKkgB,CAAE,CAAA,GAAA,CAAMlgB,CAAI,CAAA,EAAA,EAC3D,CACA,OAAOk0Z,GAAAA,CAAItkY,GAAI,CAAG+qY,CAAAA,EAAAA,CACpB,CACA,IAAIC,IAAAA,CAAO,SAASp7Z,EAAE,EACpB,IAAIg0Z,EAAAA,CAAK,CACT,CAAA,GAAIh0Z,GAAI,CACN,IAAI,IAAIyiI,CAAAA,IAAKziI,GAAG,CACd,IAAIggB,EAAIhgB,EAAE,CAACyiI,EAAE,CAACrhI,MAAM,CACpB,GAAI4e,EAAI,KAAOhT,CAAAA,GAAAA,CAAI,GACnBgnZ,EAAMh0Y,EAAAA,CAAAA,CAAI,EACZ,CACF,CACA,OAAOg0Y,EACT,EACA,IAAIqH,GAAAA,CAAM,SAAS5hZ,CAAC,CAAEzI,CAAC,CAAEmkB,CAAC,CAAEs+M,EAAE,CAAEr+M,CAAC,CAAE50B,CAAC,CAAE86Z,EAAE,CAAErH,EAAE,CAC1C,CAAA,IAAIT,GAAK//K,EAAGryO,CAAAA,MAAM,CAAEpB,EAAKm1B,CAAAA,CAAAA,CAAE+kN,KAAK,CAAE5mC,GAAAA,CAAM2gN,EAAMA,EAAAA,EAAAA,CAAG7yZ,MAAM,CACvD,IAAIm6Z,IAAMH,IAAKp7Z,CAAAA,EAAAA,CACf06Z,CAAAA,MAAOjhZ,CAAAA,CAAAA,CAAGzI,CAAGsqZ,CAAAA,EAAAA,EAAM,KAAO,QAAY,CAAA,QAAA,CAAA,CAAYtqZ,GAAK,CACvD,CAAA,GAAIsqZ,IAAM,IAAM7hZ,CAAAA,CAAC,CAACzI,CAAAA,EAAAA,CAAI,CAAG,EAAIyI,CAAAA,CAAC,CAACzI,CAAAA,EAAAA,CAAI,CAAGmkB,CAAEqmY,CAAAA,EAAE,CAC1C/hZ,CAAC,CAACzI,CAAAA,CAAE,CAAG,EAAIA,CAAAA,CAAAA,EAAK,CAChByI,CAAAA,CAAC,CAACzI,CAAAA,EAAAA,CAAI,CAAGmkB,CAAEgZ,CAAAA,IAAI,EAAI,CAAK3tC,EAAAA,EAAI,CAAK,EAAA,CAAA,CAAIiZ,CAAAA,CAAC,CAACzI,CAAI,EAAA,CAAA,CAAGokB,GAAK,CACnD3b,CAAAA,CAAC,CAACzI,CAAAA,EAAAA,CAAI,CAAGmkB,CAAAA,CAAEm2V,WAAW,CAAG,GAAA,CAAK7xW,CAAC,CAACzI,IAAI,CAAGmkB,CAAAA,CAAEm2V,WAAW,EAAI,EACxD,IAAItsQ,EAAAA,CAAK,IAAItsG,IAAKyiB,CAAAA,CAAAA,CAAEsmY,KAAK,EAAI,IAAA,CAAO/oZ,IAAKF,CAAAA,GAAG,GAAK2iB,CAAEsmY,CAAAA,KAAK,EAAGv+Y,CAAI8hG,CAAAA,EAAAA,CAAG08S,WAAW,EAAK,CAAA,IAAA,CAClF,GAAIx+Y,CAAAA,CAAI,GAAKA,CAAI,CAAA,GAAA,CAAKlQ,IAAI,EAC1B0tZ,CAAAA,CAAAA,OAAOjhZ,CAAGzI,CAAAA,CAAAA,CAAGkM,CAAK,EAAA,EAAA,CAAK8hG,GAAG28S,QAAQ,EAAA,CAAK,CAAK,EAAA,EAAA,CAAK38S,GAAG48S,OAAO,EAAA,EAAM,EAAK58S,CAAAA,EAAAA,CAAG68S,QAAQ,EAAM,EAAA,EAAA,CAAK78S,GAAG88S,UAAU,EAAA,EAAM,EAAI98S,EAAG+8S,CAAAA,UAAU,EAAM,EAAA,CAAA,CAAA,CAAI/qZ,GAAK,CAC/I,CAAA,GAAIxQ,GAAK,CAAC,CAAA,CAAG,CACXk6Z,MAAOjhZ,CAAAA,CAAAA,CAAGzI,CAAGmkB,CAAAA,CAAAA,CAAEglY,GAAG,CAClBO,CAAAA,MAAAA,CAAOjhZ,EAAGzI,CAAI,CAAA,CAAA,CAAGxQ,EAAI,CAAI,CAAA,CAACA,CAAI,CAAA,CAAA,CAAIA,GAClCk6Z,MAAOjhZ,CAAAA,CAAAA,CAAGzI,CAAI,CAAA,CAAA,CAAGmkB,EAAE9uB,IAAI,EACzB,CACAq0Z,MAAAA,CAAOjhZ,EAAGzI,CAAI,CAAA,EAAA,CAAIwiZ,GAClBkH,CAAAA,MAAAA,CAAOjhZ,EAAGzI,CAAI,CAAA,EAAA,CAAIuqZ,GAAMvqZ,CAAAA,CAAAA,CAAAA,EAAK,GAC7B,GAAIsqZ,EAAAA,EAAM,KAAM,CACdZ,MAAAA,CAAOjhZ,EAAGzI,CAAGsiM,CAAAA,GAAAA,CAAAA,CACbonN,MAAOjhZ,CAAAA,CAAAA,CAAGzI,EAAI,CAAGmkB,CAAAA,CAAAA,CAAEw6C,KAAK,CACxB+qV,CAAAA,OAAOjhZ,CAAGzI,CAAAA,CAAAA,CAAI,EAAIsqZ,CAAAA,EAAAA,CAAAA,CAAKtqZ,GAAK,GAC9B,CACAyI,CAAE/P,CAAAA,GAAG,CAAC+pO,EAAIziO,CAAAA,CAAAA,CAAAA,CACVA,CAAKwiZ,EAAAA,EAAAA,CACL,GAAI+H,GAAK,CAAA,CACP,IAAI,IAAI94R,CAAAA,IAAKziI,GAAG,CACd,IAAIg8Z,GAAMh8Z,CAAAA,EAAE,CAACyiI,CAAE,CAAA,CAAEziH,EAAIg8Y,GAAI56Z,CAAAA,MAAM,CAC/Bs5Z,MAAOjhZ,CAAAA,CAAAA,CAAGzI,CAAG,CAAA,CAACyxH,GACdi4R,MAAOjhZ,CAAAA,CAAAA,CAAGzI,EAAI,CAAGgP,CAAAA,CAAAA,CACjBvG,CAAAA,CAAE/P,CAAAA,GAAG,CAACsyZ,GAAAA,CAAKhrZ,EAAI,CAAIA,CAAAA,CAAAA,CAAAA,EAAK,CAAIgP,CAAAA,EAC9B,CACF,CACA,GAAIszL,GAAK75L,CAAAA,CAAAA,CAAE/P,GAAG,CAACuqZ,EAAAA,CAAIjjZ,GAAIA,CAAKsiM,EAAAA,GAAAA,CAC5B,OAAOtiM,CACT,CAAA,CACA,IAAIirZ,GAAAA,CAAM,SAAS3jV,CAAC,CAAEtnE,CAAC,CAAExQ,CAAC,CAAEiZ,CAAC,CAAEnW,CAAC,CAAA,CAC9Bo3Z,OAAOpiV,CAAGtnE,CAAAA,CAAAA,CAAG,WACb0pZ,MAAOpiV,CAAAA,CAAAA,CAAGtnE,EAAI,CAAGxQ,CAAAA,CAAAA,CAAAA,CACjBk6Z,MAAOpiV,CAAAA,CAAAA,CAAGtnE,EAAI,EAAIxQ,CAAAA,CAAAA,CAAAA,CAClBk6Z,MAAOpiV,CAAAA,CAAAA,CAAGtnE,EAAI,EAAIyI,CAAAA,CAAAA,CAAAA,CAClBihZ,MAAOpiV,CAAAA,CAAAA,CAAGtnE,EAAI,EAAI1N,CAAAA,CAAAA,EACpB,EACA,SAAS44Z,OAAAA,CAAQ/gZ,IAAI,CAAEpY,IAAI,CACzB,CAAA,GAAI,CAACA,IAAMA,CAAAA,IAAAA,CAAO,EAClB,CAAA,IAAItC,EAAI,EAAC,CACT,IAAI+8V,KAAAA,CAAQ,EAAE,CACdo9D,IAAAA,CAAKz/Y,KAAM,EAAI1a,CAAAA,CAAAA,CAAGsC,MAClB,IAAIu1E,CAAAA,CAAI,CACR,CAAA,IAAI6jV,IAAM,CACV,CAAA,IAAI,IAAI1oL,EAAAA,IAAMhzO,EAAE,CACd,IAAI8yZ,EAAK9yZ,CAAAA,CAAC,CAACgzO,EAAG,CAAA,CAAE0C,KAAOo9K,EAAE,CAAC,EAAE,CAAEz/X,CAAAA,CAAIy/X,EAAE,CAAC,EAAE,CACvC,IAAIjoC,YAAcx3V,CAAE0d,CAAAA,KAAK,EAAI,CAAI,CAAA,CAAA,CAAI,CACrC,CAAA,IAAIrc,EAAI8lY,OAAQxnL,CAAAA,EAAAA,CAAAA,CAAKvsO,EAAIiuB,CAAE/zB,CAAAA,MAAM,CACjC,IAAIg7Z,GAAAA,CAAMtoY,CAAE81X,CAAAA,OAAO,CAAE3tY,CAAImgZ,CAAAA,GAAAA,EAAOnB,OAAQmB,CAAAA,GAAAA,CAAAA,CAAM76S,GAAKtlG,CAAKA,EAAAA,CAAAA,CAAE7a,MAAM,CAChE,IAAIm6Z,GAAMH,CAAAA,IAAAA,CAAKtnY,EAAEomN,KAAK,CAAA,CACtB,GAAIhzO,CAAI,CAAA,KAAA,CAAO8F,GAAI,CAAA,EAAA,CAAA,CACnB,IAAIyM,CAAI6xW,CAAAA,WAAAA,CAAcqvC,YAAYxkL,IAAMriN,CAAAA,CAAAA,CAAAA,CAAKqiN,KAAMn2N,CAAIvG,CAAAA,CAAAA,CAAErY,MAAM,CAC/D,IAAIZ,CAAI25Z,CAAAA,GAAAA,EAAAA,CACR35Z,EAAEszB,CAAC,CAACqiN,MACJqnH,KAAMv7V,CAAAA,IAAI,CAACw4Z,GAAAA,CAAI3mY,EAAG,CAChBztB,IAAAA,CAAM8vO,IAAK/0O,CAAAA,MAAM,CACjB+4Z,GAAK35Z,CAAAA,CAAAA,CAAEiZ,CAAC,EAAA,CACRjZ,EAAGiZ,CACH0b,CAAAA,CAAAA,CAAGA,EACHlZ,CAAGA,CAAAA,CAAAA,CACHmZ,EAAGluB,CAAKusO,EAAAA,EAAAA,CAAGryO,MAAM,EAAI6a,GAAKmgZ,GAAIh7Z,CAAAA,MAAM,EAAImgH,EACxCjpC,CAAAA,CAAAA,CAAGA,EACHgzS,WAAaA,CAAAA,WACf,CACAhzS,CAAAA,CAAAA,CAAAA,CAAAA,EAAK,GAAKpxE,CAAIq0Z,CAAAA,GAAAA,CAAMv7Y,EACpBm8Y,GAAO,EAAA,EAAA,CAAK,GAAKj1Z,CAAAA,CAAIq0Z,GAAE,CAAA,EAAMh6S,EAAM,EAAA,CAAA,CAAKvhG,CAAAA,EAC1C,CACA,IAAI+R,GAAAA,CAAM,IAAIysV,EAAAA,CAAG29C,IAAM,EAAKE,CAAAA,CAAAA,EAAAA,CAAK/jV,EAAGgkV,GAAMH,CAAAA,GAAAA,CAAM7jV,EAChD,IAAI,IAAIn3E,CAAI,CAAA,CAAA,CAAGA,EAAIq8V,KAAMp8V,CAAAA,MAAM,CAAE,EAAED,CAAAA,CAAE,CACnC,IAAIg0B,CAAAA,CAAIqoU,KAAK,CAACr8V,EAAE,CAChBk6Z,GAAAA,CAAItpY,IAAKoD,CAAEmjD,CAAAA,CAAC,CAAEnjD,CAAGA,CAAAA,CAAAA,CAAEA,CAAC,CAAEA,EAAEC,CAAC,CAAED,CAAE30B,CAAAA,CAAC,CAACY,MAAM,CAAA,CACrC,IAAIm7Z,IAAAA,CAAO,GAAKpnY,CAAEA,CAAAA,CAAC,CAAC/zB,MAAM,CAAGg6Z,KAAKjmY,CAAE+kN,CAAAA,KAAK,CACzCnoN,CAAAA,GAAAA,CAAIroB,GAAG,CAACyrB,CAAAA,CAAE30B,CAAC,CAAE20B,CAAAA,CAAEmjD,CAAC,CAAGikV,IAAAA,CACnBlB,CAAAA,GAAAA,CAAItpY,IAAKumD,CAAGnjD,CAAAA,CAAAA,CAAGA,EAAEA,CAAC,CAAEA,EAAEC,CAAC,CAAED,CAAE30B,CAAAA,CAAC,CAACY,MAAM,CAAE+zB,EAAEmjD,CAAC,CAAEnjD,EAAElZ,CAAC,CAAA,CAAGq8D,CAAK,EAAA,EAAA,CAAKikV,MAAQpnY,CAAAA,CAAElZ,CAAC,CAAGkZ,CAAAA,CAAElZ,CAAC,CAAC7a,MAAM,CAAG,CAAA,EACvF,CACA66Z,GAAAA,CAAIlqY,IAAKumD,CAAGklR,CAAAA,KAAAA,CAAMp8V,MAAM,CAAEk7Z,GAAAA,CAAKD,EAC/B,CAAA,CAAA,OAAOtqY,GACT,CAEA,MAAMyqY,eAAiB,MACvB,CAAA,MAAM5zS,OAAS,CAAC;;;;;;;;AAQhB,CAAC,CACD,MAAM6zS,oBAAuB,CAACztO,WAAY,CAAC;;;EAGzC,EAAEA,SAAAA,CAAUhuL,IAAI,CAAC,IAAM,CAAA,CAAA;;AAEzB,CAAC,CACD,MAAM07Z,YAAAA,CAAe,CAACC,gBAAAA,CAAkBjxT,QAASo/B,OAAS1sF,CAAAA,SAAAA,CAAWw+W,GAAKC,CAAAA,GAAAA,GAAM,CAAC;;;;;AAKnD,8BAAA,EAAEF,gBAAiB,CAAA;AAClB,+BAAA,EAAEjxT,OAAQ,CAAA;AACf,0BAAA,EAAEo/B,OAAQ,CAAA;;;AAGZ,wBAAA,EAAE1sF,SAAU,CAAA;AACJ,gCAAA,EAAEw+W,GAAI,CAAA;;;AAGL,iCAAA,EAAEC,GAAI,CAAA;;;;;;AAMvC,CAAC,CACD,MAAMC,oBAAuB,CAAA,CAACt6M,SAAUu6M,WAAa5pE,CAAAA,WAAAA,CAAa6pE,kBAAkB,CAAC;AAC1E,WAAA,EAAEx6M,QAAS,CAAA;AACC,uBAAA,EAAEu6M,WAAY,CAAA;;;AAGN,+BAAA,EAAE5pE,WAAY,CAAA;;;AAGpB,yBAAA,EAAE6pE,eAAgB,CAAA;;AAE3C,CAAC,CACD,MAAMC,qBAAAA,CAAwB,CAACrkZ,IAAAA,CAAMnU,IAAMqE,CAAAA,KAAAA,GAAQ,CAAC,oBAAoB,EAAE8P,IAAAA,CAAK,QAAQ,EAAEnU,IAAK,CAAA,GAAG,EAAEqE,KAAAA,CAAM,CACzG,CAAMo0Z,MAAAA,YAAAA,SAAqB1K,YACzBjxW,CAAAA,IAAAA,EAAO,CACL,IAAI,CAAC47W,OAAO,CAAG,IAAI5zZ,GACnB,CAAA,IAAI,CAAC6zZ,UAAU,CAAG,IAAI7zZ,GACtB,CAAA,IAAI,CAAC8zZ,WAAW,CAAG,IAAI9zZ,GACvB,CAAA,IAAI,CAACylL,SAAS,CAAG,EACjB,CAAA,IAAI,CAACwuK,KAAK,CAAG,EACb,CAAA,IAAI,CAAC8/D,SAAS,CAAG,IAAIppZ,IACvB,CACAs5H,IAAAA,EAAO,CACL,IAAI,CAAC2vR,OAAO,CAAG,IACf,CAAA,IAAI,CAACC,UAAU,CAAG,IAClB,CAAA,IAAI,CAACC,WAAW,CAAG,IACnB,CAAA,IAAI,CAACruO,SAAS,CAAG,IACjB,CAAA,IAAI,CAACwuK,KAAK,CAAG,IACb,CAAA,IAAI,CAAC8/D,SAAS,CAAG,KACnB,CACAC,KAAAA,CAAMx1R,MAAM,CAAEn1H,OAAU,CAAA,EAAE,CAAE,CAC1B,IAAI,CAAC2uC,IAAI,EACT,CAAA,IAAI,CAAC67L,OAAO,CAAC,IAAA,CAAMo/K,cACnB,CAAA,CAAA,MAAMgB,gBAAmB,CAAA,EAAE,CAC3B,GAAIz1R,MAAQ,CAAA,CACV,MAAMy9N,OAAAA,CAAUz9N,MAAO+7G,CAAAA,cAAc,CAAC,QAAA,CAAA,CACtC0hH,OAAQ13V,CAAAA,OAAO,CAAEq/F,MACfqwT,EAAAA,CAAAA,gBAAAA,CAAiBv7Z,IAAI,CAAA,GAAIkrG,MAAOu5B,CAAAA,aAAa,EAC/C,CAAA,EACF,CACA,IAAI+2R,WAAc,CAAA,EAAA,CAClBD,gBAAiB1vZ,CAAAA,OAAO,CAAEi4H,YACxB03R,EAAAA,CAAAA,WAAAA,EAAe,IAAI,CAACC,iBAAiB,CAAC33R,YACxC,EAAA,CAAA,CAAA,CACA03R,WAAehB,EAAAA,oBAAAA,CAAqB,IAAI,CAACztO,SAAS,CAAA,CAClD,IAAI,CAACouD,OAAO,CAAC,IAAMo/K,CAAAA,cAAAA,CAAgB,EAAIiB,CAAAA,WAAAA,CAAAA,CACvC,MAAMtgC,cAAAA,CAAiB,CACrBnkT,cAAAA,CAAgBpmE,OAAQomE,CAAAA,cAAc,CACxC,CACA,MAAM2kV,YAAAA,CAAex9Z,KAAM2qB,CAAAA,IAAI,CAAC,IAAI,CAACsyY,UAAU,CAAChkZ,IAAI,EACpD,CAAA,CAAA,MAAMi2V,QAAW,CAAA,EAAE,CACnB,IAAI,IAAIluW,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIw8Z,YAAav8Z,CAAAA,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,MAAM47W,QAAW,CAAA,WAAA,CACjB,MAAM9pU,OAAAA,CAAU0qX,YAAY,CAACx8Z,CAAE,CAAA,CAC/B,MAAMy8Z,cAAAA,CAAiB,IAAI,CAACnL,eAAe,CAACx/W,OAASkqV,CAAAA,cAAAA,CAAAA,CAAgB/vX,IAAI,CAAC,MAAC8xC,EAAAA,CACzE,GAAIA,MAAAA,CAAQ,CACV,OAAO,IAAIk7B,OAAAA,CAAQ,OAAC5uC,EAAU0T,MAAO2+W,CAAAA,MAAM,CAACryX,OAAAA,CAASuxU,QAAU,CAAA,CAAA,CAAA,CAAA,CAAI3vW,IAAI,CAAC,IAACy9V,EAAOA,IAAKT,CAAAA,WAAW,EAClG,CAAA,CACAx8V,QAAQqyO,IAAI,CAAC,CAAC,kBAAkB,EAAEhtM,OAAAA,CAAQxuC,IAAI,CAAC,4BAA4B,CAAC,CAC5E,CAAA,OAAO,IAAI21E,OAAAA,CAAQ,OAAC5uC,EAAUA,OAAQ,CAAA,IAAA,CAAA,CACxC,CACA6jU,CAAAA,CAAAA,QAAAA,CAASptW,IAAI,CAAC27Z,cAChB,EAAA,CACA,MAAME,SAAAA,CAAY1jV,OAAQplC,CAAAA,GAAG,CAACq6T,QAAAA,CAAAA,CAAUjiW,IAAI,CAAC,MAACtD,EAAAA,CAC5CA,MAAOgE,CAAAA,OAAO,CAAC,CAACiwZ,kBAAoB/2Z,CAAAA,KAAAA,GAAAA,CAClC,MAAMisC,OAAAA,CAAU0qX,YAAY,CAAC32Z,KAAM,CAAA,CACnC,MAAM2pL,GAAAA,CAAM,IAAI,CAACqtO,iBAAiB,CAAC/qX,OACnC,CAAA,CAAA,IAAI,CAACuqT,KAAK,CAAC7sK,GAAIqtD,CAAAA,QAAQ,CAAC,CAAG,IAAI9vO,UAAAA,CAAW6vZ,kBAC5C,EAAA,CAAA,CAAA,CACA,IAAI,CAACE,UAAU,EAAA,CACf,MAAM/tZ,WAAAA,CAAcgsZ,OAAQ,CAAA,IAAI,CAAC1+D,KAAK,CAAE,CACtChsT,KAAO,CAAA,CACT,CACA,CAAA,CAAA,IAAI,CAACg8F,IAAI,EACT,CAAA,OAAOt9H,WACT,CAAA,CAAA,CACA,OAAO4tZ,SACT,CACAG,UAAAA,EAAa,CACX,IAAIpvZ,MAAS,CAAA,CAAA,CACb,IAAI,MAAM2mO,QAAY,IAAA,IAAI,CAACgoH,KAAK,CAAC,CAC/B,MAAMrnH,IAAAA,CAAO,IAAI,CAACqnH,KAAK,CAAChoH,QAAS,CAAA,CACjC,MAAMoI,UAAAA,CAAa,EAAKpI,CAAAA,QAAAA,CAASp0O,MAAM,CACvCyN,MAAU+uO,EAAAA,UAAAA,CACV,MAAMsgL,WAAAA,CAAcrvZ,MAAS,CAAA,EAAA,CAC7B,GAAIqvZ,WAAAA,GAAgB,CAAG,CAAA,CACrB,MAAMC,SAAAA,CAAY,EAAKD,CAAAA,WAAAA,CACvB,MAAMlxG,OAAAA,CAAU,IAAI9+S,UAAAA,CAAWiwZ,SAC/B,CAAA,CAAA,IAAI,CAAC3gE,KAAK,CAAChoH,QAAS,CAAA,CAAG,CACrBW,IAAAA,CACA,CACE+D,KAAAA,CAAO,CACL,KAAA,CAAO8yE,OACT,CACF,CACD,EACH,CACAn+S,MAAAA,CAASsnO,IAAK/0O,CAAAA,OAAM,CAExB,CACAg9Z,UAAAA,CAAWC,QAAQ,CAAE55Z,IAAI,CAAE04C,GAAG,CAAEysB,SAAY,CAAA,MAAM,CAAE,CAClD,MAAMo0K,QAAAA,CAAW,CAAC,EAAEqgL,QAAW,CAAA,CAAC,EAAEA,QAAAA,CAAS,CAAC,CAAC,CAAG,EAAA,CAAG,EAAE55Z,IAAAA,CAAK,CAAC,EAAEmlE,SAAU,CAAA,CAAC,CACxE,MAAM00V,OAAU,CAAA,CAAC,GAAG,EAAEtgL,QAAS,CAAA,GAAG,EAAE7gM,GAAAA,CAAI,CAAC,CAAC,CAC1C,OAAO,CACL14C,IAAAA,CACAu5O,QACAsgL,CAAAA,OACF,CACF,CACAN,iBAAkB/qX,CAAAA,OAAO,CAAE,CACzB,OAAO,IAAI,CAACmrX,UAAU,CAAC,SAAA,CAAW,CAAC,QAAQ,EAAEnrX,OAAAA,CAAQ9H,EAAE,CAAC,CAAC,CAAE,SAAW,CAAA,KAAA,CACxE,CACAiyM,OAAAA,CAAQihL,QAAQ,CAAEE,QAAQ,CAAED,OAAU,CAAA,EAAE,CAAEE,OAAAA,CAAU,EAAE,CAAE,CACtD,IAAIC,SAAY,CAAA,IAAA,CAChB,GAAID,OAAAA,CAAS,CACXA,OAAAA,CAAU,CAAC,EAAE51S,MAAO,CAAA;AAAE,EAAE41S,QAAQ,CAAC,CACjCC,SAAYxD,CAAAA,OAAAA,CAAQuD,SACtB,CACA,MAAM7tO,GAAM,CAAA,IAAI,CAACytO,UAAU,CAACC,QAAUE,CAAAA,QAAAA,CAAUD,QAChD,CAAA,IAAI,CAAC9gE,KAAK,CAAC7sK,GAAIqtD,CAAAA,QAAQ,CAAC,CAAGygL,UAC3B,OAAO9tO,GAAAA,CAAI2tO,OACb,CACAI,cAAe16R,CAAAA,QAAQ,CAAE,CACvB,IAAI26R,WAAc,CAAA,IAAI,CAACtB,WAAW,CAACn6Z,GAAG,CAAC8gI,QACvC,CAAA,CAAA,GAAI,CAAC26R,WAAa,CAAA,CAChBA,WAAc,CAAA,IAAI,CAACC,aAAa,CAAC56R,QACjC,CAAA,CAAA,IAAI,CAACq5R,WAAW,CAAC3zZ,GAAG,CAACs6H,SAAU26R,WACjC,EAAA,CACA,OAAOA,WACT,CACAE,UAAWh0R,CAAAA,IAAI,CAAE,CACf,IAAIi0R,OAAU,CAAA,IAAI,CAAC3B,OAAO,CAACj6Z,GAAG,CAAC2nI,IAAAA,CAAAA,CAC/B,GAAI,CAACi0R,QAAS,CACZA,OAAAA,CAAU,IAAI,CAACC,SAAS,CAACl0R,IAAAA,CAAAA,CACzB,IAAI,CAACsyR,OAAO,CAACzzZ,GAAG,CAACmhI,IAAAA,CAAMi0R,SACzB,CACA,OAAOA,OACT,CACAE,YAAYxuX,KAAK,CAAE,CACjB,MAAMyK,WAAa,EAAE,CACrB,MAAMkG,KAAAA,CAAQ3Q,MAAMpvC,MAAM,CAC1B,IAAI,IAAID,CAAAA,CAAI,EAAGA,CAAIggD,CAAAA,KAAAA,CAAOhgD,CAAK,EAAA,CAAA,CAAE,CAC/B85C,UAAWh5C,CAAAA,IAAI,CAAC,CAAC,CAAC,EAAEuuC,KAAK,CAACrvC,CAAAA,CAAE,CAAC,EAAE,EAAE,CAAIqvC,CAAAA,KAAK,CAACrvC,CAAI,CAAA,CAAA,CAAE,CAAC,CAAC,CAAC,EACtD,CACA,OAAO85C,UAAAA,CAAWj6C,IAAI,CAAC,IAAA,CACzB,CACAi+Z,WAAAA,CAAYzuX,KAAK,CAAE,CACjB,MAAMyK,UAAa,CAAA,EAAE,CACrB,MAAMkG,KAAAA,CAAQ3Q,KAAMpvC,CAAAA,MAAM,CAC1B,IAAI,IAAID,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAK,CAAE,CAAA,CAC/B85C,WAAWh5C,IAAI,CAAC,CAAC,CAAC,EAAEuuC,KAAK,CAACrvC,CAAE,CAAA,CAAC,EAAE,EAAEqvC,KAAK,CAACrvC,CAAAA,CAAI,EAAE,CAAC,EAAE,EAAEqvC,KAAK,CAACrvC,CAAI,CAAA,CAAA,CAAE,CAAC,CAAC,CAAC,EACnE,CACA,OAAO85C,UAAWj6C,CAAAA,IAAI,CAAC,IACzB,CAAA,CACAk+Z,SAAU/sR,CAAAA,GAAG,CAAE,CACb,MAAMh3H,IAAOg3H,CAAAA,GAAAA,CAAIh3H,IAAI,CACrB,MAAMgkZ,OAAU,CAAA,EAAE,CAClB,IAAI,IAAIh+Z,CAAI,CAAA,CAAA,CAAGA,EAAI,EAAIA,CAAAA,CAAAA,EAAK,CAAE,CAAA,CAC5Bg+Z,QAAQl9Z,IAAI,CAAC,CAAC,CAAC,EAAEkZ,IAAI,CAACha,EAAE,CAAC,EAAE,EAAEga,IAAI,CAACha,CAAI,CAAA,CAAA,CAAE,CAAC,EAAE,EAAEga,IAAI,CAACha,EAAI,CAAE,CAAA,CAAC,EAAE,EAAEga,IAAI,CAACha,CAAAA,CAAI,CAAE,CAAA,CAAC,CAAC,CAAC,EAC7E,CACA,OAAO,CAAC,EAAE,EAAEg+Z,OAAQn+Z,CAAAA,IAAI,CAAC,IAAM,CAAA,CAAA,EAAE,CACnC,CACA49Z,aAAc56R,CAAAA,QAAQ,CAAE,CACtB,MAAMo7R,aAAe,CAAC,SAAS,EAAEp7R,QAAAA,CAAS74F,EAAE,CAAC,CAAC,CAC9C,MAAMk0X,aAAe,CAAC,WAAW,EAAED,YAAAA,CAAa,CAAC,CACjD,MAAME,oBAAuB,CAACl7L,UAAW,CAAC,CAAC,EAAEi7L,YAAAA,CAAa,EAAEj7L,QAAS,CAAA,CAAC,CAAC,CACvE,MAAMwO,YAAe,CAAA,CAAC3/L,OAASssX,CAAAA,UAAAA,CAAYC,QAAS3wM,SAAWyN,CAAAA,MAAAA,CAAQztN,OAAQi5I,QAAUyrI,CAAAA,SAAAA,GAAAA,CACvF,OAAO,CAAC;AACkB,gCAAA,EAAEisI,OAAQ,CAAA;;;;;;;AAOL,qCAAA,EAAEF,qBAAqB,CAAC,UAAU,EAAEzwM,SAAU,CAAA,eAAe,CAAC,CAAE,CAAA;AACnE,kCAAA,EAAE/mE,QAAS,CAAA;AACZ,iCAAA,EAAEw0E,OAAO9mN,CAAC,CAAC,EAAE,EAAE8mN,MAAAA,CAAOp/M,CAAC,CAAC;AAClB,uCAAA,EAAErO,OAAO2G,CAAC,CAAC,EAAE,EAAE3G,MAAAA,CAAOqO,CAAC,CAAC;;;;AAInC,4BAAA,EAAE+1B,OAAQ9H,CAAAA,EAAE,CAAC,CAAC,EAAEq0X,OAAQ,CAAA;;;+BAGrB,EAAED,UAAAA,CAAWvhL,QAAQ,CAAC;AAChB,qCAAA,EAAEshL,qBAAqB,CAAC,aAAa,EAAEE,OAAQ,CAAA,eAAe,CAAC,CAAE,CAAA;;;AAGrE,iCAAA,EAAEjsI,UAAU9yR,CAAC,CAAC,EAAE,EAAE8yR,UAAUv+Q,CAAC,CAAC,EAAE,EAAEu+Q,UAAUviR,CAAC,CAAC,EAAE,EAAEuiR,SAAAA,CAAUxiR,CAAC,CAAC;;;;;;;AAOzF,MAAA,CAAC,CACH,CACA,MAAMymQ,MAAAA,CAAS,EAAE,CACjB,MAAM3zM,QAAAA,CAAW,EAAE,CACnB,MAAM47V,UAAAA,CAAa,CAACC,WAAatmX,CAAAA,OAAAA,CAASumX,QAAU1wM,CAAAA,QAAAA,CAAU2wM,SAAWC,CAAAA,aAAAA,CAAgB,KAAK,CAAEC,YAAc,KAAK,GAAA,CACjH,MAAM7sX,OAAAA,CAAU+wF,QAAQ,CAAC07R,WAAY,CAAA,CACrC,GAAIzsX,OAAS,CAAA,CACX,MAAMssX,UAAAA,CAAa,IAAI,CAACvB,iBAAiB,CAAC/qX,OAC1C,CAAA,CAAA,IAAI,CAACmqX,UAAU,CAAC1zZ,GAAG,CAACupC,OAAAA,CAASssX,WAAWjB,OAAO,CAAA,CAC/C,MAAMvqZ,OAAAA,CAAUiwH,QAAQ,CAAC,CAAC,EAAE07R,YAAY,OAAO,CAAC,CAAC,EAAI,KACrD,CAAA,MAAMK,YAAeT,CAAAA,oBAAAA,CAAqB,CAAC,CAAC,EAAEC,UAAW96Z,CAAAA,IAAI,CAAC,CAAC,EAAEm7Z,SAAAA,CAAU,SAAS,EAAE7rZ,OAAQ,CAAA,CAAC,CAC/FyjQ,CAAAA,MAAAA,CAAOv1Q,IAAI,CAACg7Z,sBAAsB0C,QAAU,CAAA,CAAC,EAAE1wM,QAAAA,CAAS,QAAQ,CAAC,CAAE8wM,YAAAA,CAAAA,CAAAA,CACnE,GAAIF,aAAe,CAAA,CACjB,GAAI77R,QAAAA,CAASwQ,SAAS,CAAG,CAC3B,CAAA,CAAA,CACA,MAAM8nF,MAASt4F,CAAAA,QAAQ,CAAC,CAAC,EAAE07R,WAAAA,CAAY,MAAM,CAAC,CAAC,CAC/C,MAAM7wZ,MAAAA,CAASm1H,QAAQ,CAAC,CAAC,EAAE07R,YAAY,MAAM,CAAC,CAAC,CAC/C,MAAM53Q,QAAAA,CAAW9jB,QAAQ,CAAC,CAAC,EAAE07R,WAAAA,CAAY,QAAQ,CAAC,CAAC,CACnD,MAAM7wM,SAAAA,CAAY7qF,QAAQ,CAAC,CAAC,EAAE07R,WAAAA,CAAY,EAAE,CAAC,CAAC,GAAK,CAAI,CAAA,KAAA,CAAQ,IAC/D,CAAA,MAAMnsI,SAAYusI,CAAAA,WAAAA,EAAe1mX,OAAUA,CAAAA,OAAAA,CAAU5iC,MAAM2B,KAAK,CAChE0rD,QAAS5hE,CAAAA,IAAI,CAAC2wO,YAAAA,CAAa3/L,OAASssX,CAAAA,UAAAA,CAAYK,UAAW/wM,SAAWyN,CAAAA,MAAAA,CAAQztN,MAAQi5I,CAAAA,QAAAA,CAAUyrI,SAClG,CAAA,EAAA,CAAA,KAAO,GAAIn6O,OAAAA,CAAS,CAClB,MAAMtwC,KAAAA,CAAQ62Z,QAAa,GAAA,OAAA,CAAU,CAAC,EAAEvmX,OAAQ,CAAA,CAAC,CAAG,CAAC,CAAC,EAAEA,OAAQ34C,CAAAA,CAAC,CAAC,EAAE,EAAE24C,OAAQpkC,CAAAA,CAAC,CAAC,EAAE,EAAEokC,OAAAA,CAAQpoC,CAAC,CAAC,CAAC,CAAC,CAChGwmQ,MAAOv1Q,CAAAA,IAAI,CAACg7Z,qBAAAA,CAAsB0C,QAAU1wM,CAAAA,QAAAA,CAAUnmN,QACxD,CACF,CAAA,CACA22Z,UAAW,CAAA,YAAA,CAAcz7R,QAAS8yF,CAAAA,OAAO,CAAE,SAAA,CAAW,cAAgB,CAAA,SAAA,CAAW,KAAO,CAAA,IAAA,CAAA,CACxF,GAAI9yF,QAAAA,CAAS2O,WAAW,EAAI3O,SAASwQ,SAAS,CAAG,CAAK,CAAA,CACpDirR,UAAW,CAAA,YAAA,CAAcz7R,QAAS4zF,CAAAA,OAAO,CAAE,OAAS,CAAA,SAAA,CAAW,SAAW,CAAA,IAAA,EAC5E,CACA6nM,UAAAA,CAAW,WAAa,CAAA,IAAA,CAAM,WAAY,QAAU,CAAA,QAAA,CAAA,CACpDA,UAAW,CAAA,aAAA,CAAez7R,QAASszF,CAAAA,QAAQ,CAAE,SAAA,CAAW,gBAAiB,UAAY,CAAA,KAAA,CAAO,IAC5FmoM,CAAAA,CAAAA,UAAAA,CAAW,OAAS,CAAA,IAAA,CAAM,OAAS,CAAA,WAAA,CAAa,aAChDA,UAAW,CAAA,cAAA,CAAgBz7R,QAAS0wF,CAAAA,SAAS,CAAE,OAAA,CAAS,UAAY,CAAA,UAAA,CAAA,CACpE+qM,WAAW,UAAYz7R,CAAAA,QAAAA,CAASkzF,KAAK,CAAE,OAAS,CAAA,WAAA,CAAa,WAC7D,CAAA,CAAA,MAAM8oM,eAAiB,CAAC;AACR,oBAAA,EAAEZ,YAAa,CAAA;;;;;AAKnC,EAAE5nJ,MAAAA,CAAOx2Q,IAAI,CAAC,IAAM,CAAA,CAAA;;;;;AAKoB,wCAAA,EAAEs+Z,qBAAqB,iCAAmC,CAAA,CAAA;;;;;;;;;;;;;;;;;;QAkB1F,EAAEz7V,QAAAA,CAAS7iE,IAAI,CAAC,IAAM,CAAA,CAAA;;IAE1B,CAAC,CACD,IAAI,CAACguL,SAAS,CAAC/sL,IAAI,CAAC+9Z,cACpB,CAAA,CAAA,OAAOV,oBAAqB,CAAA,EAAA,CAC9B,CACAP,SAAUl0R,CAAAA,IAAI,CAAE,CACd,IAAIzsF,UAAY,EAAE,CAClB,MAAMstD,OAAAA,CAAU,EAAE,CAClB,IAAIo/B,OAAU,CAAA,EAAE,CAChB,IAAI8xR,GAAAA,CAAM,EAAE,CACZ,IAAIC,GAAM,CAAA,EAAE,CACZhyR,IAAAA,CAAK0C,eAAe,CAACtuG,iBAAAA,CAAmBmf,SACxCysF,CAAAA,CAAAA,IAAAA,CAAK0C,eAAe,CAACruG,gBAAiB4rG,OACtCD,CAAAA,CAAAA,IAAAA,CAAK0C,eAAe,CAAC/tG,kBAAoBo9X,CAAAA,GAAAA,CAAAA,CACzC/xR,KAAK0C,eAAe,CAAC9tG,mBAAoBo9X,GACzChyR,CAAAA,CAAAA,IAAAA,CAAKkD,UAAU,CAACriC,OAAAA,CAAAA,CAChB,MAAMu0T,YAAAA,CAAev0T,OAAQtqG,CAAAA,MAAM,EAAIg9C,SAAUh9C,CAAAA,MAAM,CACvD,MAAMu7Z,gBAAAA,CAAmBx8Z,MAAM8/Z,YAAe,CAAA,CAAA,CAAA,CAAG9rQ,IAAI,CAAC,CAAGnzJ,CAAAA,CAAAA,IAAI,CAAC,IAC9D,CAAA,CAAA,GAAI,CAAC0qG,OAAQtqG,CAAAA,MAAM,CAAE,CACnB,IAAI,IAAID,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI8+Z,aAAc9+Z,CAAI,EAAA,CAAA,CACnCuqG,OAAO,CAACvqG,CAAE,CAAA,CAAGA,EACf,CACF,CACA,MAAM6vB,QAAAA,CAAWotB,SAAUh9C,CAAAA,MAAM,CAAG,CACpC0pI,CAAAA,OAAAA,CAAUA,QAAQ1pI,MAAM,CAAG0pI,QAAU3qI,KAAM6wB,CAAAA,QAAAA,CAAW,CAAGmjI,CAAAA,CAAAA,IAAI,CAAC,CAAA,CAAA,CAC9DyoQ,IAAMA,GAAIx7Z,CAAAA,MAAM,CAAGw7Z,GAAMz8Z,CAAAA,KAAAA,CAAM6wB,SAAW,CAAGmjI,CAAAA,CAAAA,IAAI,CAAC,CAAA,CAAA,CAClD0oQ,GAAMA,CAAAA,GAAAA,CAAIz7Z,MAAM,CAAGy7Z,GAAAA,CAAM18Z,MAAM6wB,QAAW,CAAA,CAAA,CAAA,CAAGmjI,IAAI,CAAC,CAAA,CAAA,CAClD/1G,SAAY,CAAA,IAAI,CAAC6gX,WAAW,CAAC7gX,SAC7B0sF,CAAAA,CAAAA,OAAAA,CAAU,IAAI,CAACm0R,WAAW,CAACn0R,SAC3B8xR,GAAM,CAAA,IAAI,CAACoC,WAAW,CAACpC,GAAAA,CAAAA,CACvBC,IAAM,IAAI,CAACmC,WAAW,CAACnC,GAAAA,CAAAA,CACvB,MAAMqD,UAAaxD,CAAAA,YAAAA,CAAaC,gBAAkBjxT,CAAAA,OAAAA,CAASo/B,OAAS1sF,CAAAA,SAAAA,CAAWw+W,IAAKC,GACpF,CAAA,CAAA,MAAMsD,OAAU,CAAA,IAAI,CAAC/iL,OAAO,CAAC,MAAQ,CAAA,CAAC,KAAK,EAAEvyG,IAAK1/F,CAAAA,EAAE,CAAC,CAAC,CAAE,OAAQ+0X,UAChE,CAAA,CAAA,OAAOC,OACT,CACAzC,iBAAAA,CAAkB33R,YAAY,CAAE,CAC9B,MAAMg3R,YAAc,IAAI,CAAC8B,UAAU,CAAC94R,YAAa8E,CAAAA,IAAI,EACrD,MAAMmyR,eAAAA,CAAkB,IAAI,CAAC0B,cAAc,CAAC34R,aAAa/B,QAAQ,CAAA,CACjE,MAAMmvN,WAAc,CAAA,IAAI,CAAC+rE,SAAS,CAACn5R,YAAawL,CAAAA,IAAI,CAACzI,iBAAiB,IACtE,MAAMrkI,IAAAA,CAAOshI,aAAawL,IAAI,CAAC9sI,IAAI,CAAClE,OAAO,CAAC,aAAA,CAAe,GAC3D,CAAA,CAAA,IAAIiiN,SAAW/9M,IACf,CAAA,MAAM,IAAI,CAAC64Z,SAAS,CAAC7zZ,GAAG,CAAC+4M,QAAU,CAAA,CAAA,CACjCA,QAAW,CAAA,CAAC,EAAE/9M,IAAK,CAAA,CAAC,EAAE/D,IAAAA,CAAKC,MAAM,EAAA,CAAGE,QAAQ,CAAC,EAAA,CAAA,CAAImB,KAAK,CAAC,CAAG,CAAA,CAAA,CAAA,CAAG,EAAC,CAEhE,IAAI,CAACs7Z,SAAS,CAAC7rZ,GAAG,CAAC+wM,QACnB,CAAA,CAAA,OAAOs6M,oBAAqBt6M,CAAAA,QAAAA,CAAUu6M,YAAa5pE,WAAa6pE,CAAAA,eAAAA,CAClE,CACF,CAEA,MAAM36U,YAAAA,CAAe,MACrB,MAAME,oBAAAA,CAAuB,KAC7B,CAAA,MAAM69U,qBAAwB,CAACtrR,cAC7B,OAAOA,WAAAA,EACL,KAAK57G,iBACH,CAAA,OAAO,IACT,CAAKC,KAAAA,kBAAAA,CACH,OAAO,IACT,CAAKC,KAAAA,kBAAAA,CACH,OAAO,IACX,CACA,OAAO,CACT,CACA,CAAA,MAAMinY,iBAAmB,QAAC7kX,EAAAA,CACxB,OAAOA,QAAAA,EACL,KAAKlY,SAAAA,CACH,OAAO,IACT,CAAA,KAAKC,WACH,OAAO,IACT,MAAKC,UACH,CAAA,OAAO,IACT,CAAA,KAAKC,WACH,CAAA,OAAO,IACT,CAAKC,KAAAA,UAAAA,CACH,OAAO,IACT,CAAA,KAAKC,YACH,OAAO,IACT,CAAKC,KAAAA,YAAAA,CACH,OAAO,IACX,CACA,OAAO,CACT,EACA,MAAM08X,eAAAA,CAAkB,cACtB,EAAA,CAAA,OAAO91R,cACL,EAAA,KAAK,CACH,CAAA,OAAO,QACT,CAAK,KAAA,CAAA,CACH,OAAO,MACT,CAAK,KAAA,CAAA,CACH,OAAO,MACT,CAAA,KAAK,CACH,CAAA,OAAO,MACX,CACA,OAAO,CACT,CAAA,CACA,MAAM+1R,WAAc,CAACC,iBACnB,OAAOA,cAAAA,EACL,KAAKvhY,iBAAAA,CACH,OAAO,UACT,MAAKC,eACH,CAAA,OAAO,QACT,CAAA,KAAKC,gBACH,CAAA,OAAO,SACT,CAAKG,KAAAA,cAAAA,CACH,OAAO,SACT,CAAKD,KAAAA,qBAAAA,CACH,OAAO,UACT,CAAA,KAAKD,qBACH,OAAO,WACT,MAAKI,kBACH,CAAA,OAAO,YACT,CAAA,KAAKC,kBACH,CAAA,OAAO,YACT,CAAKC,KAAAA,kBAAAA,CACH,OAAO,YACT,CAAKC,KAAAA,kBAAAA,CACH,OAAO,YACT,CAAA,KAAKC,kBACH,CAAA,OAAO,YACT,CAAA,KAAKC,mBACH,OAAO,YACT,MAAKC,kBACH,CAAA,OAAO,YACT,CAAKC,KAAAA,kBAAAA,CACH,OAAO,YACX,CACA,OAAO,EACT,CACA,CAAA,MAAM27U,UAAY,SAAS5+Q,MAAM,EAC/B,OAAOA,MAAAA,EACL,KAAK1kE,cAAAA,CACH,OAAO,IACT,MAAKC,aACH,CAAA,OAAO,IACT,CAAKC,KAAAA,6BAAAA,CACH,OAAO,IACT,CAAA,KAAKE,4BACH,CAAA,OAAO,IACT,CAAA,KAAKD,6BACH,OAAO,IACT,CAAKE,KAAAA,2BAAAA,CACH,OAAO,IACX,CACA,OAAO,CACT,CACA,CAAA,MAAMkjV,OAAU,CAAA,SAAS/iL,IAAI,CAC3B,CAAA,OAAOA,MACL,KAAKtjK,qBAAAA,CACH,OAAO,KACT,CAAA,KAAKC,uBACH,CAAA,OAAO,KACT,CAAA,KAAKF,eACH,OAAO,KACX,CACA,OAAO,CACT,CAAA,CACA,SAASorY,mBAAoBvhX,CAAAA,MAAM,CACjC,CAAA,MAAMkoC,OAAUloC,CAAAA,MAAAA,CAAOwmB,UAAU,CAAC,IAAA,CAAA,CAClC,MAAM26H,SAAYj5G,CAAAA,OAAAA,CAAQ4mU,YAAY,CAAC,CAAA,CAAG,CAAG9uW,CAAAA,MAAAA,CAAOp4B,KAAK,CAAEo4B,OAAOn4B,MAAM,CAAA,CAAE5L,IAAI,CAC9E,IAAI,IAAIha,EAAI,CAAGA,CAAAA,CAAAA,CAAIk/L,SAAUj/L,CAAAA,MAAM,CAAED,CAAAA,EAAK,EAAE,CAC1C,GAAIk/L,SAAS,CAACl/L,CAAAA,CAAE,CAAG,GAAK,CAAA,CACtB,OAAO,IACT,CACF,CACA,OAAO,KACT,CACA,MAAMu/Z,gBAAmB,CAAA,CACvB,aACA,UACA,CAAA,WAAA,CACA,cACA,CAAA,aAAA,CACD,CACD,MAAMC,qBAAqBnO,YACzBoO,CAAAA,gBAAAA,CAAiBnkR,IAAI,CAAE,CACrB,MAAMr9E,SAAY,CAAA,CAChB7lB,OAAS,CAAA,EAAE,CACXu2H,OAAAA,CAAS,EAAE,CACXm0E,QAAAA,CAAU,EAAE,CACZj1D,SAAW,CAAA,EAAE,CACb2qL,KAAO,CAAA,EAAE,CACT5sU,QAAAA,CAAU,EAAE,CACZ8zX,oBAAqB,EAAE,CACvBC,cAAe,IAAIv3Z,GAAAA,CACnBw3Z,oBAAqB,IAAI7sZ,GAC3B,CACA,CAAA,KAAM,CAAE86K,SAAS,CAAEz1I,OAAO,CAAEsnX,mBAAmB,CAAE9zX,QAAQ,CAAE,CAAGqyB,SAC9Dq9E,CAAAA,IAAAA,CAAK3uI,OAAO,CAAC,MAACi6H,EAAAA,CACZ3oE,UAAU6kL,QAAQ,CAAChiP,IAAI,CAAC8lI,MAAAA,EAC1B,GACA,MAAMi5R,oBAAAA,CAAuB,aAACt6R,EAAAA,CAC5BA,aAAc54H,CAAAA,OAAO,CAAC,YAACi4H,EAAAA,CACrB,MAAM/B,QAAAA,CAAW+B,YAAa/B,CAAAA,QAAQ,CACtC,GAAIgrD,SAAAA,CAAU5kL,OAAO,CAAC45H,QAAY,CAAA,CAAA,CAAA,CAAG,CACnC5kE,SAAU4vH,CAAAA,SAAS,CAAC/sL,IAAI,CAAC+hI,UACzB08R,gBAAiB5yZ,CAAAA,OAAO,CAAEktC,QACxB,EAAA,CAAA,MAAM/H,QAAU+wF,QAAQ,CAAChpF,SAAS,CAClC,GAAI/H,SAAWlG,QAAS3iC,CAAAA,OAAO,CAAC6oC,OAAAA,CAAAA,CAAW,CAAG,CAAA,CAC5C,GAAI+H,QAAa,GAAA,WAAA,CAAa,CAC5BokB,SAAU2hW,CAAAA,mBAAmB,CAACtvZ,GAAG,CAACwhC,OACpC,EAAA,CACAlG,QAAS9qC,CAAAA,IAAI,CAACgxC,OAChB,EAAA,CACF,CACF,EAAA,CACA,MAAMs+F,IAAAA,CAAOxL,aAAawL,IAAI,CAC9B,IAAI0vR,iBAAAA,CAAoBJ,mBAAoB5gW,CAAAA,IAAI,CAAC,CAAC38D,EAAIA,EAAEiuI,IAAI,GAAKA,MACjE,GAAI,CAAC0vR,iBAAmB,CAAA,CACtBA,iBAAoB,CAAA,CAClB1vR,KAAMA,IACN7K,CAAAA,aAAAA,CAAe,EACjB,CACAm6R,CAAAA,mBAAAA,CAAoB5+Z,IAAI,CAACg/Z,iBAAAA,EAC3B,CACAA,iBAAAA,CAAkBv6R,aAAa,CAACzkI,IAAI,CAAC8jI,YAAAA,CAAAA,CACrC,MAAM8E,IAAO9E,CAAAA,YAAAA,CAAa8E,IAAI,CAC9B,MAAM7pF,YAAe6pF,CAAAA,IAAAA,CAAK7pF,YAAY,CACtC,GAAIzH,OAAQnvC,CAAAA,OAAO,CAAC42C,YAAAA,CAAAA,CAAgB,CAAG,CAAA,CACrCzH,QAAQonC,OAAO,CAAC3/B,YAClB,EAAA,CACA,MAAMU,WAAAA,CAAcmpF,KAAKnpF,WAAW,CAAC,EAAE,CACvC,GAAInI,QAAQnvC,OAAO,CAACs3C,WAAe,CAAA,CAAA,CAAA,CAAG,CACpCnI,OAAAA,CAAQt3C,IAAI,CAACy/C,WAAAA,EACf,CACA,GAAImpF,IAAAA,CAAK7C,IAAI,EAAI5oE,SAAAA,CAAUu6S,KAAK,CAACvvW,OAAO,CAACygI,KAAK7C,IAAI,CAAA,CAAI,EAAG,CACvD5oE,SAAAA,CAAUu6S,KAAK,CAAC13W,IAAI,CAAC4oI,IAAAA,CAAK7C,IAAI,EAChC,CACF,CACF,EAAA,CAAA,CACA5oE,SAAU6kL,CAAAA,QAAQ,CAACn2O,OAAO,CAAC,MAACi6H,EAAAA,CAC1B,GAAIA,MAAAA,CAAOqM,MAAM,CAAE,CACjBh1E,SAAU0wG,CAAAA,OAAO,CAAC7tK,IAAI,CAAC8lI,OAAOqM,MAAM,EACtC,CACA,GAAIrM,MAAO56B,CAAAA,MAAM,EAAI46B,MAAO56B,CAAAA,MAAM,CAACn5F,OAAO,CAAE,CAC1CgtZ,qBAAqBj5R,MAAO56B,CAAAA,MAAM,CAACu5B,aAAa,EAClD,CACA,GAAIqB,MAAOtB,CAAAA,KAAK,EAAIsB,MAAOtB,CAAAA,KAAK,CAACzyH,OAAO,EAAI+zH,MAAOtB,CAAAA,KAAK,CAACC,aAAa,CAAE,CACtEs6R,oBAAAA,CAAqBj5R,MAAOtB,CAAAA,KAAK,CAACC,aAAa,EACjD,CACF,CAAA,CAAA,CACA,OAAOtnE,SACT,CACA8hW,gBAAAA,CAAiB9hW,SAAS,CAAEm0O,IAAI,CAAE,CAChCA,IAAAA,CAAK24D,WAAW,CAAG,EAAE,CACrB,IAAK,MAAMrwV,MAAAA,IAAUujD,UAAU7lB,OAAO,CAAC,CACrConX,YAAaQ,CAAAA,eAAe,CAAC/hW,SAAWm0O,CAAAA,IAAAA,CAAM13R,MAChD,EAAA,CACF,CACA,OAAOslZ,gBAAgB/hW,SAAS,CAAEm0O,IAAI,CAAE13R,MAAM,CAAE,CAC9C03R,IAAAA,CAAKh6P,OAAO,CAAGg6P,IAAKh6P,CAAAA,OAAO,EAAI,EAC/Bg6P,CAAAA,IAAAA,CAAKh6P,OAAO,CAAC,EAAE,CAAGg6P,IAAAA,CAAKh6P,OAAO,CAAC,CAAE,CAAA,EAAI,CACnC3qC,UAAY,CAAA,CACd,EACA,MAAMwyZ,UAAAA,CAAa7tH,KAAKh6P,OAAO,CAAC,CAAE,CAClC6nX,CAAAA,UAAAA,CAAWxyZ,UAAU,CAAG4F,IAAAA,CAAK0B,OAAO,CAACkrZ,UAAAA,CAAWxyZ,UAAU,CAAE,CAAA,CAAA,CAC5D,MAAMC,MAAAA,CAASuyZ,UAAWxyZ,CAAAA,UAAU,CACpC,MAAMyyZ,aAAAA,CAAgB,CAACtha,MAAQ6O,CAAAA,UAAAA,CAAYu8C,WAAYuhT,UACrD,GAAA,CAAA,MAAMH,UAAa,CAAA,CACjB1wV,MAAQ,CAAA,CAAA,CACRjN,WAAYA,UACZu8C,CAAAA,UAAAA,CAAYA,UACd,CAAA,CACA,GAAIprD,MAAAA,GAAWsiF,cAAgBtiF,MAAWwiF,GAAAA,oBAAAA,CAAsB,CAC9DgqR,UAAAA,CAAWxsW,MAAM,CAAGA,OACtB,CACA,GAAI2sW,aAAezjW,SAAW,CAAA,CAC5BsjW,WAAWG,UAAU,CAAGA,WAC1B,CACA,OAAOn5D,IAAAA,CAAK24D,WAAW,CAACjqW,IAAI,CAACsqW,UAAc,CAAA,CAAA,CAC7C,EACA,IAAInC,WAAAA,CACJ,GAAIvuV,MAAAA,YAAkBy9B,YAAc,CAAA,CAClC8wT,YAAcvuV,MAAO01B,CAAAA,IAAI,GACzB,MAAMtqC,MAAAA,CAAS4U,OAAO69B,SAAS,EAAA,CAC/B,GAAIzyC,MAAAA,CAAOw1C,WAAW,CAAE,CACtB,MAAM6kX,eAAAA,CAAkBD,aAAch/U,CAAAA,YAAAA,CAAc+nR,WAAYx7V,CAAAA,UAAU,CAAEC,MAAQ5H,CAAAA,MAAAA,CAAOZ,IAAI,CAAA,CAC/F+4D,SAAU0hW,CAAAA,aAAa,CAACp3Z,GAAG,CAACmS,OAAQ,CAClCylZ,eAAAA,CACD,EACH,CAAO,KAAA,CACL,MAAMC,iBAAAA,CAAoB,EAAE,CAC5B,IAAK,MAAMzkX,OAAAA,IAAW71C,MAAO4zC,CAAAA,QAAQ,CAAC,CACpC,MAAMymX,eAAkBD,CAAAA,aAAAA,CAAch/U,YAAcvlC,CAAAA,OAAAA,CAAQz2C,IAAI,CAAGY,OAAOm1C,WAAW,CAAEvtC,OAASiuC,OAAQjuC,CAAAA,MAAM,CAAEiuC,OAAQz2C,CAAAA,IAAI,CAC5Hk7Z,CAAAA,iBAAAA,CAAkBt/Z,IAAI,CAACq/Z,iBACzB,CACAliW,SAAAA,CAAU0hW,aAAa,CAACp3Z,GAAG,CAACmS,OAAQ0lZ,iBACtC,EAAA,CACF,CAAO,KAAA,GAAI1lZ,MAAkByvF,YAAAA,WAAAA,CAAa,CACxC8+P,WAAcvuV,CAAAA,MAAAA,CAAO01B,IAAI,EACzB,CAAA,MAAM+vX,gBAAkBD,aAAc9+U,CAAAA,oBAAAA,CAAsB6nR,WAAYx7V,CAAAA,UAAU,CAAEC,MAAAA,CAAAA,CACpFuwD,UAAU0hW,aAAa,CAACp3Z,GAAG,CAACmS,MAAAA,CAAQ,CAClCylZ,eACD,CAAA,EACH,CAAO,KAAA,CACLl3D,WAAcvuV,CAAAA,MAAAA,CACd,MAAMylZ,eAAkBD,CAAAA,aAAAA,CAAcp4Z,UAAWmhW,WAAYx7V,CAAAA,UAAU,CAAEC,MACzEuwD,CAAAA,CAAAA,SAAAA,CAAU0hW,aAAa,CAACp3Z,GAAG,CAACmS,OAAQ,CAClCylZ,eAAAA,CACD,EACH,CACAF,UAAWxyZ,CAAAA,UAAU,EAAIw7V,WAAYx7V,CAAAA,WAAU,CAEjD4yZ,YAAapiW,CAAAA,SAAS,CAAEm0O,IAAI,CAAE,CAC5B,GAAIn0O,SAAAA,CAAU0wG,OAAO,CAAC1uK,MAAM,CAAG,CAAA,CAAG,CAChCmyS,IAAAA,CAAKzjI,OAAO,CAAG1wG,SAAAA,CAAU0wG,OAAO,CAAC9nK,GAAG,CAAC,GACnC,EAAA,CAAA,MAAM0qC,UAAa+uX,CAAAA,GAAAA,CAAI/uX,UAAU,CACjC,MAAM0vG,QAAWq/Q,CAAAA,GAAAA,CAAIr/Q,QAAQ,CAC7B,MAAMZ,QAAUigR,GAAIjgR,CAAAA,OAAO,CAC3B,MAAMpN,MAAS,CAAA,GACf,GAAI1hG,UAAAA,GAAesnF,uBAAyB,CAAA,CAC1Coa,MAAOx7H,CAAAA,IAAI,CAAG,cACdw7H,CAAAA,MAAO4kO,CAAAA,YAAY,CAAG,CACpBG,KAAM,CACND,CAAAA,IAAAA,CAAM,EACNn1V,KAAOq+H,CAAAA,QAAAA,CACPt8H,KAAM07H,OACR,EACF,CAAO,KAAA,CACL,MAAM39H,GAAAA,CAAM49Y,IAAI59Y,GAChBuwH,CAAAA,MAAOx7H,CAAAA,IAAI,CAAG,aACdw7H,CAAAA,MAAO6kO,CAAAA,WAAW,CAAG,CACnBG,KAAMv1V,GAAMnjB,CAAAA,IAAAA,CAAKgU,EAAE,CAAG,GAAA,CACtBqP,MAAOq+H,QACPt8H,CAAAA,IAAAA,CAAM07H,OACR,EACF,CACA,OAAOpN,MACT,CACF,EAAA,CACF,CACAstR,aAAAA,CAActiW,SAAS,CAAE4kE,QAAQ,CAAErW,WAAW,CAAElpH,IAAI,CAAEk9Z,eAAe,CAAEpuH,IAAI,CAAE,CAC3E,MAAMtgQ,OAAAA,CAAU+wF,QAAQ,CAAC29R,eAAAA,CAAgB,CACzC,GAAI1uX,OAAS,CAAA,CACX,MAAM2V,YAAewW,CAAAA,SAAAA,CAAUryB,QAAQ,CAAC3iC,OAAO,CAAC6oC,SAChD,GAAI2V,YAAAA,CAAe,CAAGh7C,CAAAA,OAAAA,CAAQqyO,IAAI,CAAC,CAAC,QAAQ,EAAEhtM,QAAQxuC,IAAI,CAAC,kBAAkB,CAAC,CAC9EkpH,CAAAA,WAAW,CAAClpH,IAAAA,CAAK,CAAG,CAClBuC,KAAAA,CAAO4hD,YACT,CAAA,CACA,MAAMnlC,KAAAA,CAAQugH,QAAQ,CAAC,CAAC,EAAE29R,eAAAA,CAAgB,MAAM,CAAC,CAAC,CAClD,MAAM9yZ,OAASm1H,QAAQ,CAAC,CAAC,EAAE29R,eAAAA,CAAgB,MAAM,CAAC,CAAC,CACnD,MAAM75Q,QAAW9jB,CAAAA,QAAQ,CAAC,CAAC,EAAE29R,gBAAgB,QAAQ,CAAC,CAAC,CACvD,GAAIl+Y,KAAAA,EAAS,CAACA,KAAM7M,CAAAA,MAAM,CAACoM,IAAK5D,CAAAA,GAAG,GAAKvQ,MAAU,EAAA,CAACA,MAAO+H,CAAAA,MAAM,CAACoM,IAAAA,CAAK9D,IAAI,CAAK4oI,EAAAA,QAAAA,GAAa,CAAG,CAAA,CAC7Fn6B,WAAW,CAAClpH,KAAK,CAAC+qW,UAAU,CAAG,CAC7BoB,qBAAuB,CAAA,EACzB,CACAr9D,CAAAA,KAAKquH,cAAc,CAAGruH,KAAKquH,cAAc,EAAI,EAAE,CAC/C,GAAIruH,IAAAA,CAAKquH,cAAc,CAACx3Z,OAAO,CAAC,uBAAA,CAAA,CAA2B,CAAG,CAAA,CAC5DmpS,KAAKquH,cAAc,CAAC3/Z,IAAI,CAAC,uBAC3B,EAAA,CACAsxS,KAAKsuH,kBAAkB,CAAGtuH,KAAKsuH,kBAAkB,EAAI,EAAE,CACvD,GAAItuH,IAAKsuH,CAAAA,kBAAkB,CAACz3Z,OAAO,CAAC,uBAA2B,CAAA,CAAA,CAAA,CAAG,CAChEmpS,IAAAA,CAAKsuH,kBAAkB,CAAC5/Z,IAAI,CAAC,uBAAA,EAC/B,CACA,GAAIwhB,KAAS,EAAA,CAACA,MAAM7M,MAAM,CAACoM,KAAK5D,GAAG,CAAA,CAAG,CACpCuuG,WAAW,CAAClpH,IAAK,CAAA,CAAC+qW,UAAU,CAACoB,qBAAqB,CAACntV,KAAK,CAAG,CACzDA,KAAAA,CAAMjO,CAAC,CACPiO,KAAAA,CAAMvG,CAAC,EACR,CAEH,GAAIrO,MAAU,EAAA,CAACA,OAAO+H,MAAM,CAACoM,KAAK9D,IAAI,CAAA,CAAG,CACvCyuG,WAAW,CAAClpH,IAAAA,CAAK,CAAC+qW,UAAU,CAACoB,qBAAqB,CAAC/hW,MAAM,CAAG,CAC1DA,MAAO2G,CAAAA,CAAC,CACR3G,MAAAA,CAAOqO,CAAC,CAAG,EAAIuG,KAAMvG,CAAAA,CAAC,EACvB,CAEH,GAAI4qI,QAAa,GAAA,CAAA,CAAG,CAClBn6B,WAAW,CAAClpH,IAAAA,CAAK,CAAC+qW,UAAU,CAACoB,qBAAqB,CAAC9oN,QAAQ,CAAGA,SAAWtzI,IAAKC,CAAAA,WAAU,CAE5F,CACF,CACF,CACAqtZ,qBAAsB1iW,CAAAA,SAAS,CAAE+yE,GAAG,CAAExqI,MAAM,CAAE4rS,IAAI,CAAE,CAClD,KAAM,CAAEz8E,OAAO,CAAEQ,QAAQ,CAAEM,OAAO,CAAElD,SAAS,CAAEwC,KAAK,CAAEpJ,WAAW,CAAE,CAAG37E,GAAAA,CACtE,MAAM4vR,GAAMp6Z,CAAAA,MAAAA,CAAOiuW,oBAAoB,CACvC,GAAI,CAAC9+I,OAAQlgN,CAAAA,MAAM,CAACJ,KAAAA,CAAM2B,KAAK,CAAA,EAAKy/M,UAAY,CAAG,CAAA,CACjDmqM,IAAIlsD,eAAe,CAAG,CACpB/+I,OAAQr2N,CAAAA,CAAC,CACTq2N,OAAAA,CAAQ9hN,CAAC,CACT8hN,QAAQ9lN,CAAC,CACT4mN,SACD,CAEH,GAAIlD,SAAc,GAAA,CAAA,CAAG,CACnBqtM,GAAAA,CAAIhsD,cAAc,CAAGrhJ,UACvB,CACA,MAAMhd,SAAYoW,CAAAA,WAAAA,CAAcoJ,KAAQ,CAAA,CAAA,CAAIA,MAC5C,GAAIxf,SAAAA,GAAc,CAAG,CAAA,CACnBqqN,GAAI/rD,CAAAA,eAAe,CAAGt+J,UACxB,CACA,IAAI,CAACgqN,aAAa,CAACtiW,SAAW+yE,CAAAA,GAAAA,CAAK4vR,GAAK,CAAA,kBAAA,CAAoB,YAAcxuH,CAAAA,IAAAA,CAAAA,CAC1E,IAAI,CAACmuH,aAAa,CAACtiW,SAAAA,CAAW+yE,GAAK4vR,CAAAA,GAAAA,CAAK,2BAA4B,cAAgBxuH,CAAAA,IAAAA,CAAAA,CACpF,GAAI,CAACj8E,QAAS1gN,CAAAA,MAAM,CAACJ,KAAMmB,CAAAA,KAAK,EAAG,CACjChQ,MAAAA,CAAO2uW,cAAc,CAAG,CACtBh/I,QAAS72N,CAAAA,CAAC,CACV62N,QAAAA,CAAStiN,CAAC,CACVsiN,QAAAA,CAAStmN,CAAC,EACX,CAEL,CACAgxZ,cAAe5iW,CAAAA,SAAS,CAAEm0O,IAAI,CAAE,CAC9B,GAAIn0O,SAAU4vH,CAAAA,SAAS,CAAC5tL,MAAM,CAAG,EAAG,CAClCmyS,IAAAA,CAAKvkH,SAAS,CAAG5vH,SAAU4vH,CAAAA,SAAS,CAAChnL,GAAG,CAAC,GACvC,EAAA,CAAA,KAAM,CAAEvD,IAAI,CAAEy3J,SAAS,CAAExnB,IAAI,CAAEF,SAAS,CAAE,CAAGrC,IAC7C,MAAMnO,QAAAA,CAAW,CACf4xO,oBAAsB,CAAA,EACxB,CAAA,CACA,GAAInxW,IAAAA,EAAQA,KAAKrD,MAAM,CAAG,CAAG,CAAA,CAC3B4iI,QAASv/H,CAAAA,IAAI,CAAGA,KAClB,CACA,GAAI0tI,GAAAA,YAAe4nF,gBAAkB,CAAA,CACnC,IAAI,CAAC+nM,qBAAqB,CAAC1iW,SAAW+yE,CAAAA,GAAAA,CAAKnO,SAAUuvK,IACvD,EAAA,CACA,GAAIr3I,SAAAA,GAAchnC,YAAc,CAAA,CAC9B8O,SAASrnD,SAAS,CAAG,QACvB,CAAA,KAAO,GAAIu/E,SAAAA,GAAc/mC,WAAY,CACnC,GAAIqf,SAAc,GAAA,CAAA,CAAG,CACnBxQ,QAAAA,CAASrnD,SAAS,CAAG,MACrBqnD,CAAAA,QAASwyO,CAAAA,WAAW,CAAGhiO,UACzB,CACF,CACA,GAAIE,IAAS18G,GAAAA,aAAAA,CAAe,CAC1BgsG,QAASyyO,CAAAA,WAAW,CAAG,KACzB,CACA,IAAI,CAACirD,aAAa,CAACtiW,SAAW+yE,CAAAA,GAAAA,CAAKnO,QAAU,CAAA,eAAA,CAAiB,YAAauvK,IAC3E,CAAA,CAAA,IAAI,CAACmuH,aAAa,CAACtiW,UAAW+yE,GAAKnO,CAAAA,QAAAA,CAAU,kBAAoB,CAAA,OAAA,CAASuvK,IAC1E,CAAA,CAAA,IAAI,CAACmuH,aAAa,CAACtiW,UAAW+yE,GAAKnO,CAAAA,QAAAA,CAAU,kBAAmB,aAAeuvK,CAAAA,IAAAA,CAAAA,CAC/E,OAAOvvK,QACT,CACF,EAAA,CACF,CACAi+R,UAAW7iW,CAAAA,SAAS,CAAEm0O,IAAI,CAAE,CAC1B,GAAIn0O,SAAAA,CAAU6kL,QAAQ,CAAC7iP,MAAM,CAAG,EAAG,CACjCmyS,IAAAA,CAAKlqK,KAAK,CAAGjqE,SAAU6kL,CAAAA,QAAQ,CAACj8O,GAAG,CAAC,MAAC+/H,EAAAA,CACnC,MAAMtjI,IAAAA,CAAOsjI,OAAOtjI,IAAI,CACxB,MAAMwN,CAAI81H,CAAAA,MAAAA,CAAOghB,gBAAgB,EACjC,CAAA,MAAMtoJ,CAAIsnI,CAAAA,MAAAA,CAAOihB,gBAAgB,EAAA,CACjC,MAAM9hJ,CAAI6gI,CAAAA,MAAAA,CAAOkhB,aAAa,EAC9B,CAAA,MAAM1X,KAAO,EAAC,CACd,GAAI9sI,IAAAA,EAAQA,IAAKrD,CAAAA,MAAM,CAAG,CAAG,CAAA,CAC3BmwI,KAAK9sI,IAAI,CAAGA,KACd,CACA,GAAI,CAACwN,CAAAA,CAAE2E,MAAM,CAACwG,KAAK8B,IAAI,CAAA,CAAG,CACxBqyH,IAAAA,CAAK2uN,WAAW,CAAG,CACjBjuV,CAAEuD,CAAAA,CAAC,CACHvD,CAAAA,CAAEiL,CAAC,CACHjL,EAAEoL,CAAC,EACJ,CAEH,GAAI,CAAC5c,CAAEmW,CAAAA,MAAM,CAACoS,IAAAA,CAAKjG,QAAQ,CAAA,CAAG,CAC5BwuH,IAAKuW,CAAAA,QAAQ,CAAG,CACdrnJ,CAAAA,CAAE+U,CAAC,CACH/U,CAAAA,CAAEyc,CAAC,CACHzc,CAAE4c,CAAAA,CAAC,CACH5c,CAAEigB,CAAAA,CAAC,EACJ,CAEH,GAAI,CAACxZ,CAAAA,CAAE0P,MAAM,CAACwG,IAAKgC,CAAAA,GAAG,EAAG,CACvBmyH,IAAAA,CAAK9tH,KAAK,CAAG,CACXvc,CAAAA,CAAEsO,CAAC,CACHtO,CAAAA,CAAEgW,CAAC,CACHhW,CAAEmW,CAAAA,CAAC,EACJ,CAEH,GAAI0qH,MAAOqM,CAAAA,MAAM,EAAIrM,MAAOqM,CAAAA,MAAM,CAACpgI,OAAO,CAAE,CAC1Cu9H,KAAK6C,MAAM,CAAGh1E,SAAU0wG,CAAAA,OAAO,CAAC1lK,OAAO,CAAC29H,MAAOqM,CAAAA,MAAM,EACvD,CACA,MAAM8tR,kBAAAA,CAAqB9iW,UAAUyhW,mBAAmB,CAAC5gW,IAAI,CAAE38D,GAAIA,CAAEiuI,CAAAA,IAAI,GAAKxJ,MAAAA,CAAAA,CAC9E,GAAIm6R,kBAAAA,CAAoB,CACtB3wR,IAAK1G,CAAAA,IAAI,CAAGzrE,SAAAA,CAAUyhW,mBAAmB,CAACz2Z,OAAO,CAAC83Z,kBAAAA,CAAAA,CAClD,MAAMn8R,YAAAA,CAAem8R,kBAAmBx7R,CAAAA,aAAa,CAAC,CAAE,CAAA,CACxD,GAAIX,YAAgBA,EAAAA,YAAAA,CAAa8E,IAAI,CAAC7C,IAAI,CAAE,CAC1CuJ,IAAKvJ,CAAAA,IAAI,CAAG5oE,SAAUu6S,CAAAA,KAAK,CAACvvW,OAAO,CAAC27H,aAAa8E,IAAI,CAAC7C,IAAI,EAC5D,CACF,CACA,GAAID,MAAO0e,CAAAA,QAAQ,CAACrlJ,MAAM,CAAG,EAAG,CAC9BmwI,IAAAA,CAAKkV,QAAQ,CAAG,EAAE,CAClB1e,OAAO0e,QAAQ,CAAC34I,OAAO,CAAC,KAACs6I,EAAAA,CACvB7W,KAAKkV,QAAQ,CAACxkJ,IAAI,CAACm9D,SAAU6kL,CAAAA,QAAQ,CAAC75O,OAAO,CAACg+I,QAChD,CACF,EAAA,CACA,OAAO7W,IACT,CAAA,EACF,CACF,CACA4wR,WAAY/iW,CAAAA,SAAS,CAAEm0O,IAAI,CAAE3gS,OAAO,CAAE,CACpC,GAAIwsD,UAAUyhW,mBAAmB,CAACz/Z,MAAM,CAAG,CAAG,CAAA,CAC5CmyS,KAAK5jM,SAAS,CAAG,EAAE,CACnB4jM,KAAK3zF,MAAM,CAAG,EAAE,CAChBxgJ,SAAUyhW,CAAAA,mBAAmB,CAAC/yZ,OAAO,CAAC,mBAAC+yZ,EAAAA,CACrC,MAAMh2R,IAAAA,CAAO,CACXqlO,UAAY,CAAA,EAAE,CAChB,CACA,MAAMxpO,aAAAA,CAAgBm6R,oBAAoBn6R,aAAa,CACvDA,cAAc54H,OAAO,CAAC,YACpB,EAAA,CAAA,MAAM2zC,SAAYk/W,CAAAA,YAAAA,CAAayB,eAAe,CAAChjW,UAAWm0O,IAAMxtK,CAAAA,YAAAA,CAAa8E,IAAI,CAAEj4H,OAAAA,CACnF6uC,CAAAA,SAAUuiF,CAAAA,QAAQ,CAAG5kE,SAAAA,CAAU4vH,SAAS,CAAC5kL,OAAO,CAAC27H,YAAAA,CAAa/B,QAAQ,CACtE6G,CAAAA,IAAAA,CAAKqlO,UAAU,CAACjuW,IAAI,CAACw/C,SAAAA,EACvB,CACA8xP,CAAAA,CAAAA,IAAAA,CAAK3zF,MAAM,CAAC39M,IAAI,CAAC4oI,IAAAA,EACnB,CACF,EAAA,CACF,CACA,OAAOu3R,eAAAA,CAAgBhjW,SAAS,CAAEm0O,IAAI,CAAE1oK,IAAI,CAAEj4H,OAAAA,CAAU,EAAE,CAAE,CAC1D,MAAM6uC,SAAAA,CAAY,CAChBgL,UAAAA,CAAY,EACd,EACA,KAAM,CAAEzL,YAAY,CAAE,CAAG6pF,IAAAA,CACzB,KAAM,CAAE5jI,MAAM,CAAE,CAAG+5C,YACnB,CAAA,KAAM,CAAEvE,WAAW,CAAE5B,QAAQ,CAAE,CAAG5zC,OAClC,MAAM6yC,WAAAA,CAAckH,YAAanH,CAAAA,cAAc,EAC/CgB,CAAAA,QAAAA,CAAS/sC,OAAO,CAAC,CAACgvC,OAASoyQ,CAAAA,YAAAA,GAAAA,CACzB,MAAMl0Q,QAAAA,CAAWulX,YAAYzjX,OAAQr4C,CAAAA,IAAI,CACzC,CAAA,GAAImO,OAAQyvZ,CAAAA,qBAAqB,CAAE,CACjC,IAAIC,OAAS,IACb,CAAA,GAAItnX,SAASt5C,UAAU,CAAC,WAAc,CAAA,CAAA,CACpC,MAAM6ga,aAAAA,CAAgBlrZ,SAAS2jC,QAASl5C,CAAAA,KAAK,CAAC,GAAI,CAAA,CAAC,EAAE,CAAE,EAAA,CAAA,CACvDwga,MAASljW,CAAAA,SAAAA,CAAU4vH,SAAS,CAACjmH,IAAI,CAAEi7D,WACjC,OAAO08R,gBAAAA,CAAiB33V,IAAI,CAAEy5V,WAC5B,EAAA,CAAA,MAAMvvX,OAAU+wF,CAAAA,QAAQ,CAACw+R,WAAY,CAAA,CACrC,OAAOvvX,OAAAA,GAAYsvX,aAAAA,GAAkB,GAAKv+R,QAAQ,CAAC,CAAC,EAAEw+R,WAAY,CAAA,MAAM,CAAC,CAAC,EAAEl4M,KAAOi4M,aAAY,CACjG,EACF,CACF,EAAA,CACA,GAAIvnX,QAAAA,GAAa,SAAW,CAAA,CAC1BsnX,OAASljW,SAAU4vH,CAAAA,SAAS,CAACjmH,IAAI,CAAEi7D,UAAWA,QAASygF,CAAAA,YAAY,EACrE,CACA,GAAIzpK,QAAAA,GAAa,UAAW,CAC1BsnX,MAAAA,CAASljW,UAAU4vH,SAAS,CAACjmH,IAAI,CAAEi7D,QAAWA,EAAAA,QAAAA,CAAS47D,SAAS,EAClE,CACA,GAAI5kJ,QAAAA,GAAa,UAAcA,EAAAA,QAAAA,GAAa,WAAa,CAAA,CACvDsnX,OAASljW,SAAUyhW,CAAAA,mBAAmB,CAAC93V,IAAI,CAAE05V,KAAMA,GAAI/7R,CAAAA,aAAa,CAAC39D,IAAI,CAAC,EAAMmuE,EAAAA,EAAAA,CAAGrM,IAAI,CAAC7C,IAAI,CAAA,EAC9F,CACA,GAAI,CAACs6R,OAAQ,CACX,MACF,CACF,CACA,IAAI/1D,UAAantS,CAAAA,SAAAA,CAAU0hW,aAAa,CAAC59Z,GAAG,CAAC89C,YAAAA,CAAAA,CAC7C,GAAI,CAACurT,UAAAA,CAAY,CACfo0D,YAAaQ,CAAAA,eAAe,CAAC/hW,SAAAA,CAAWm0O,IAAMvyP,CAAAA,YAAAA,CAAAA,CAC9Coe,UAAU7lB,OAAO,CAACt3C,IAAI,CAAC++C,YACvBurT,CAAAA,CAAAA,UAAAA,CAAantS,UAAU0hW,aAAa,CAAC59Z,GAAG,CAAC89C,YAC3C,EAAA,CACA,MAAM0hX,SAAYn2D,CAAAA,UAAU,CAAC9vT,WAAc,CAAA,CAAA,CAAIyyQ,aAAa,CAC5D,MAAMr/M,QAAW,CAAA,CACf08P,UAAYm2D,CAAAA,SAAAA,CACZv3W,WAAY1O,WAAcK,CAAAA,OAAAA,CAAQjuC,MAAM,CAAG,CAC3CuuD,CAAAA,aAAAA,CAAeijW,iBAAiBvjX,OAAQtB,CAAAA,QAAQ,CAChD5iC,CAAAA,IAAAA,CAAM0nZ,eAAgBxjX,CAAAA,OAAAA,CAAQrB,aAAa,CAC3C0F,CAAAA,KAAAA,CAAOrH,WACT,CACA,CAAA,MAAMruC,IAAM8nS,IAAK5jM,CAAAA,SAAS,CAAC1tG,IAAI,CAAC4tG,QAAAA,CAAAA,CAAY,CAC5CpuD,CAAAA,SAAAA,CAAUgL,UAAU,CAACzR,QAAS,CAAA,CAAGvvC,IACjC,GAAIqxC,OAAAA,CAAQr4C,IAAI,GAAKw6B,iBAAmB,CAAA,CACtC,MAAMmf,SAAY,CAAA,EAAE,CACpBysF,IAAK8C,CAAAA,YAAY,CAACvvF,SAClB,CAAA,CAAA,MAAMvpC,GAAM,CAAA,IAAIuI,IAChB,CAAA,MAAMtI,IAAM,IAAIsI,IAAAA,CAChBgP,YAAY0E,aAAa,CAACstB,UAAWvpC,GAAKC,CAAAA,GAAAA,CAC1C+6F,CAAAA,QAAAA,CAASh7F,GAAG,CAAG,CACbA,GAAIW,CAAAA,CAAC,CACLX,GAAIqI,CAAAA,CAAC,CACLrI,GAAIwI,CAAAA,CAAC,CAEPwyF,CAAAA,QAAAA,CAAS/6F,GAAG,CAAG,CACbA,GAAIU,CAAAA,CAAC,CACLV,GAAAA,CAAIoI,CAAC,CACLpI,GAAAA,CAAIuI,CAAC,EACN,CAEL,GACA,MAAMqkC,WAAAA,CAAcmpF,KAAKnpF,WAAW,CAAC,EAAE,CACvC,GAAIA,WAAa,CAAA,CACf,IAAI6qT,UAAAA,CAAantS,UAAU0hW,aAAa,CAAC59Z,GAAG,CAACw+C,WAC7C,CAAA,CAAA,GAAI,CAAC6qT,UAAY,CAAA,CACfo0D,YAAaQ,CAAAA,eAAe,CAAC/hW,SAAAA,CAAWm0O,KAAM7xP,WAC9C0d,CAAAA,CAAAA,SAAAA,CAAU7lB,OAAO,CAACt3C,IAAI,CAACy/C,WACvB6qT,CAAAA,CAAAA,UAAAA,CAAantS,SAAU0hW,CAAAA,aAAa,CAAC59Z,GAAG,CAACw+C,WAC3C,EAAA,CACA,MAAMghX,SAAAA,CAAYn2D,UAAU,CAAC,EAAE,CAC/B,MAAM18P,QAAW,CAAA,CACf08P,UAAYm2D,CAAAA,SAAAA,CACZtlW,cAAegjW,qBAAsB1+W,CAAAA,WAAAA,CAAYhI,SAAS,EAC1DyH,CAAAA,CAAAA,KAAAA,CAAOO,YAAY6pD,aAAa,EAAA,CAChC3yF,IAAM,CAAA,QACR,CACA,CAAA,MAAMnN,IAAM8nS,IAAK5jM,CAAAA,SAAS,CAAC1tG,IAAI,CAAC4tG,UAAY,CAC5CpuD,CAAAA,SAAUiqD,CAAAA,OAAO,CAAGjgG,IACtB,CACA,OAAOg2C,SACT,CACAkhX,UAAWvjW,CAAAA,SAAS,CAAEm0O,IAAI,CAAE,CAC1B,GAAIn0O,SAAUu6S,CAAAA,KAAK,CAACv4W,MAAM,CAAG,CAAG,CAAA,CAC9BmyS,IAAKomE,CAAAA,KAAK,CAAGv6S,SAAUu6S,CAAAA,KAAK,CAAC3xW,GAAG,CAAEggI,OAChC,MAAMQ,QAAAA,CAAW,IAAIxtH,YAAagtH,CAAAA,IAAAA,CAAKO,eAAe,CAACnnI,MAAM,CAAG,EAAA,CAAA,CAChE,IAAI,IAAID,EAAI,CAAGA,CAAAA,CAAAA,CAAI6mI,IAAKO,CAAAA,eAAe,CAACnnI,MAAM,CAAED,CAAI,EAAA,CAAA,CAClD,MAAMoxX,GAAAA,CAAMvqP,IAAKO,CAAAA,eAAe,CAACpnI,CAAE,CAAA,CACnCqnI,SAAS9+H,GAAG,CAAC6oX,IAAIp3W,IAAI,CAAEha,CAAI,CAAA,EAAA,EAC7B,CACA,MAAMyha,aAAep6R,QAAS3sH,CAAAA,MAAM,CACpC8kZ,YAAAA,CAAaQ,eAAe,CAAC/hW,UAAWm0O,IAAMqvH,CAAAA,YAAAA,CAAAA,CAC9CxjW,SAAU7lB,CAAAA,OAAO,CAACt3C,IAAI,CAAC2ga,YACvB,CAAA,CAAA,MAAMr2D,WAAantS,SAAU0hW,CAAAA,aAAa,CAAC59Z,GAAG,CAAC0/Z,YAC/C,CAAA,CAAA,MAAM/yT,QAAW,CAAA,CACf08P,WAAYA,UAAU,CAAC,EAAE,CACzBnvS,aAAAA,CAAeijW,iBAAiBz8X,YAChCud,CAAAA,CAAAA,KAAAA,CAAO6mF,IAAKO,CAAAA,eAAe,CAACnnI,MAAM,CAClCwX,IAAM,CAAA,MACR,EACA,MAAMiqZ,aAAAA,CAAgBtvH,KAAK5jM,SAAS,CAAC1tG,IAAI,CAAC4tG,QAAY,CAAA,CAAA,CAAA,CACtD,MAAMg/P,MAAS7mO,CAAAA,IAAAA,CAAKE,SAAS,CAAClgI,GAAG,CAAC,QAChC,EAAA,CAAA,MAAMupI,IAAOnyE,CAAAA,SAAAA,CAAU6kL,QAAQ,CAAChkL,IAAI,CAAE8nE,QAASA,MAAOtjI,CAAAA,IAAI,GAAK0jI,QAC/D,CAAA,CAAA,OAAO/oE,SAAU6kL,CAAAA,QAAQ,CAAC75O,OAAO,CAACmnI,IACpC,CAAA,CAAA,CAAA,CACA,OAAO,CACLw9N,mBAAqB8zD,CAAAA,aAAAA,CACrBh0D,OAAQA,MACV,CACF,CACF,EAAA,CACF,CACAi0D,eAAAA,CAAgBC,WAAW,CAAEnwZ,OAAO,CAAE,CACpC,MAAMuqX,eAAiB,CACrBnkT,cAAAA,CAAgBpmE,OAAQomE,CAAAA,cAAc,CACxC,CACA,MAAMq2R,QAAW,CAAA,EAAE,CACnB0zD,WAAAA,CAAYj1Z,OAAO,CAAC,UAClB,EAAA,CAAA,MAAMmvW,OAAU,CAAA,IAAI,CAACw1C,eAAe,CAACuQ,UAAY7lC,CAAAA,cAAAA,CAAAA,CACjDlgB,QAAQ7vW,IAAI,CAAC,MACX,EAAA,CAAA,OAAO,IAAIgtE,OAAAA,CAAQ,OAAC5uC,EAAUA,QAAQ0T,MACxC,CAAA,CAAA,CAAA,CAAA,CACAmwT,SAASptW,IAAI,CAACg7W,SAChB,CACA,CAAA,CAAA,OAAO5N,QACT,CACA4zD,aAAc7jW,CAAAA,SAAS,CAAE8jW,eAAe,CAAE3vH,IAAI,CAAE3gS,OAAO,CAAE,CACvD,MAAMm6B,QAAWqyB,CAAAA,SAAAA,CAAUryB,QAAQ,CACnC,MAAMsiU,QAAW,CAAA,EAAE,CACnB,IAAI,IAAIluW,CAAAA,CAAI,EAAGA,CAAI+ha,CAAAA,eAAAA,CAAgB9ha,MAAM,CAAED,CAAI,EAAA,CAAA,CAC7C,MAAM8xC,OAAUlG,CAAAA,QAAQ,CAAC5rC,CAAE,CAAA,CAC3B,MAAM+9C,MAASgkX,CAAAA,eAAe,CAAC/ha,CAAAA,CAAE,CACjC,MAAMgia,OAAS1C,mBAAoBvhX,CAAAA,MAAAA,CAAAA,EAAW,CAACkgB,SAAAA,CAAU2hW,mBAAmB,CAACt3Z,GAAG,CAACwpC,OAAAA,CAAAA,CACjF,MAAM8pU,QAAAA,CAAWomD,MAAS,CAAA,WAAA,CAAc,aACxC9zD,QAASptW,CAAAA,IAAI,CAAC,IAAI,CAACmha,OAAO,CAAClkX,MAAAA,CAAQ69T,QAAU3vW,CAAAA,CAAAA,IAAI,CAAEy9V,OACjD,MAAMptH,MAAAA,CAAS,IAAI4lL,UAAAA,CACnB5lL,MAAO6lL,CAAAA,iBAAiB,CAACz4D,IACzB,CAAA,CAAA,OAAO,IAAIzwR,OAAAA,CAAQ,OAAC5uC,EAAAA,CAClBiyM,OAAO8lL,SAAS,CAAG,KACjB/3X,OAAQiyM,CAAAA,MAAAA,EACV,EACF,CACF,CAAA,CAAA,CAAA,CAAGrwO,IAAI,CAAC,MAACqwO,EAAAA,CACP,MAAM5hO,MAAS,CAAA,IAAI,CAAC2nZ,oBAAoB,CAAC/lL,OAAOv8O,MAAM,CAAA,CACtDy/Z,YAAaQ,CAAAA,eAAe,CAAC/hW,SAAAA,CAAWm0O,KAAM13R,MAC9CujD,CAAAA,CAAAA,SAAAA,CAAU7lB,OAAO,CAACt3C,IAAI,CAAC4Z,MACvB,CAAA,CAAA,MAAM0wV,UAAantS,CAAAA,SAAAA,CAAU0hW,aAAa,CAAC59Z,GAAG,CAAC2Y,MAAAA,CAC/C03R,CAAAA,IAAAA,CAAK8oE,MAAM,CAACl7W,EAAE,CAAG,CACf47W,QAAUA,CAAAA,QAAAA,CACVxQ,UAAYA,CAAAA,UAAU,CAAC,CAAE,CAC3B,CACAh5D,CAAAA,IAAAA,CAAK1vO,QAAQ,CAAC1iE,CAAAA,CAAE,CAAG,CACjB0tC,SAAW6sU,CAAAA,SAAAA,CAAUzoU,QAAQpE,SAAS,CAAA,CACtCG,SAAW0sU,CAAAA,SAAAA,CAAUzoU,OAAQjE,CAAAA,SAAS,EACtC4sU,KAAOD,CAAAA,OAAAA,CAAQ1oU,OAAQ/D,CAAAA,QAAQ,CAC/B2sU,CAAAA,KAAAA,CAAOF,QAAQ1oU,OAAQ7D,CAAAA,QAAQ,CACjC,CACAmkQ,CAAAA,KAAKxmQ,QAAQ,CAAC5rC,CAAE,CAAA,CAAG,CACjB4nD,OAAAA,CAAS5nD,EACT4wC,MAAQ5wC,CAAAA,CACV,EACF,CAAA,CAAA,EACF,CACA,OAAOi5E,QAAQplC,GAAG,CAACq6T,QACrB,CAAA,CACA+zD,OAAQlkX,CAAAA,MAAM,CAAE69T,QAAQ,CAAE,CACxB,GAAI79T,MAAAA,CAAO2+W,MAAM,GAAK50Z,SAAAA,CAAW,CAC/B,OAAO,IAAImxE,OAAAA,CAAQ,OACjBl7B,EAAAA,CAAAA,MAAAA,CAAO2+W,MAAM,CAACryX,OAAAA,CAASuxU,UACzB,CACF,CAAA,CACA,IAAI0mD,OAAAA,CAAU,CACd,CAAA,GAAI1mD,WAAa,YAAc,CAAA,CAC7B0mD,QAAU,IACZ,CACA,OAAOvkX,MAAOwkX,CAAAA,aAAa,CAAC,CAC1B9qZ,IAAMmkW,CAAAA,QAAAA,CACN0mD,QAASA,OACX,CAAA,CACF,CACAD,oBAAAA,CAAqBp5D,WAAW,CAAEu5D,YAAc,CAAC,CAAE,CACjD,MAAMC,YAAepvZ,CAAAA,IAAAA,CAAK0B,OAAO,CAACk0V,WAAAA,CAAYx7V,UAAU,CAAE,CAAA,CAAA,CAC1D,GAAIg1Z,YAAiBx5D,GAAAA,WAAAA,CAAYx7V,UAAU,CAAE,CAC3C,MAAM4hC,MAAQ,IAAItiC,UAAAA,CAAW01Z,YAC7BpzX,CAAAA,CAAAA,KAAAA,CAAM9mC,GAAG,CAAC,IAAIwE,UAAWk8V,CAAAA,WAAAA,CAAAA,CAAAA,CACzB,GAAIu5D,WAAAA,GAAgB,CAAG,CAAA,CACrB,IAAI,IAAIxia,CAAAA,CAAIipW,YAAYx7V,UAAU,CAAEzN,EAAIyia,YAAczia,CAAAA,CAAAA,EAAAA,CAAI,CACxDqvC,KAAK,CAACrvC,CAAAA,CAAE,CAAGwia,YACb,CACF,CACA,OAAOnzX,KAAM30B,CAAAA,MAAM,CAErB,OAAOuuV,WACT,CACAy5D,SAAUzkW,CAAAA,SAAS,CAAExsD,OAAO,CAAE,CAC5B,MAAMy8V,QAAAA,CAAW,IAAI,CAACyzD,eAAe,CAAC1jW,SAAAA,CAAUryB,QAAQ,CAAEn6B,SAC1D,OAAOwnE,OAAAA,CAAQplC,GAAG,CAACq6T,QAAAA,CAAAA,CAAUjiW,IAAI,CAAC,MAAO81Z,eACvC,EAAA,CAAA,MAAM3vH,IAAO,CAAA,CACXz4E,MAAO,CACLl7N,OAAAA,CAAS,MACTi/N,SAAW,CAAA,yBACb,EACAkjC,MAAQ,CAAA,CACN,CACE14H,KAAAA,CAAO,CACL,CAAA,CACD,CAEJ,CAAA,CACDgzO,MAAQ,CAAA,EAAE,CACVx4S,QAAAA,CAAU,EAAE,CACZ92B,QAAAA,CAAU,EAAE,CACZ84F,KAAO,CAAA,CACT,EACA,IAAI,CAACq7R,gBAAgB,CAAC9hW,SAAAA,CAAWm0O,MACjC,IAAI,CAACiuH,YAAY,CAACpiW,SAAWm0O,CAAAA,IAAAA,CAAAA,CAC7B,IAAI,CAAC4uH,WAAW,CAAC/iW,SAAAA,CAAWm0O,IAAM3gS,CAAAA,OAAAA,CAAAA,CAClC,IAAI,CAACovZ,cAAc,CAAC5iW,SAAAA,CAAWm0O,IAC/B,CAAA,CAAA,IAAI,CAAC0uH,UAAU,CAAC7iW,UAAWm0O,IAAM3gS,CAAAA,OAAAA,CAAAA,CACjC,IAAI,CAAC+vZ,UAAU,CAACvjW,SAAAA,CAAWm0O,IAC3B,CAAA,CAAA,MAAM,IAAI,CAAC0vH,aAAa,CAAC7jW,SAAAA,CAAW8jW,eAAiB3vH,CAAAA,IAAAA,CAAM3gS,SAC3D,GAAI,CAAC2gS,IAAK8oE,CAAAA,MAAM,CAACj7W,MAAM,CAAE,OAAOmyS,IAAAA,CAAK8oE,MAAM,CAC3C,GAAI,CAAC9oE,IAAK1vO,CAAAA,QAAQ,CAACziE,MAAM,CAAE,OAAOmyS,KAAK1vO,QAAQ,CAC/C,GAAI,CAAC0vO,IAAAA,CAAKxmQ,QAAQ,CAAC3rC,MAAM,CAAE,OAAOmyS,IAAKxmQ,CAAAA,QAAQ,CAC/C,OAAOwmQ,IACT,EACF,CACAgqH,KAAAA,CAAMx1R,MAAM,CAAEn1H,OAAAA,CAAU,EAAE,CAAE,CAC1B,MAAMwsD,SAAY,CAAA,IAAI,CAACwhW,gBAAgB,CAAC74R,MAAAA,CAAAA,CACxC,OAAO,IAAI,CAAC87R,SAAS,CAACzkW,SAAWxsD,CAAAA,OAAAA,CAAAA,CAASxF,IAAI,CAAEmmS,OAC9C,MAAMuwH,OAAAA,CAAU,IAAIhJ,WACpB,CAAA,MAAMiJ,QAAWD,CAAAA,OAAAA,CAAQtqJ,MAAM,CAACrxJ,KAAKC,SAAS,CAACmrL,IAC/C,CAAA,CAAA,CAAA,MAAM61E,YAAe,CAAA,EAAA,CACrB,MAAM46C,gBAAmB,CAAA,CAAA,CACzB,MAAMC,cAAAA,CAAiBF,QAAS3ia,CAAAA,MAAM,CACtC,MAAM8ia,iBAAAA,CAAoB,GAAKD,cAAAA,CAAiB,CAAA,CAAK,CAAA,CAAA,CACrD,MAAME,kBAAAA,CAAqB,CAC3B,CAAA,MAAMC,iBAAmB7wH,IAAKh6P,CAAAA,OAAO,CAACoD,MAAM,CAAC,CAACC,MAAO/gC,MAASrH,GAAAA,IAAAA,CAAK0B,OAAO,CAAC0mC,KAAQ/gC,CAAAA,MAAAA,CAAOjN,UAAU,CAAE,CAAA,CAAA,CAAI,GAC1G,IAAI46W,WAAAA,CAAcJ,aAAe46C,gBAAmBC,CAAAA,cAAAA,CAAiBC,iBACrE,CAAA,GAAIE,gBAAmB,CAAA,CAAA,CAAG,CACxB56C,WAAe26C,EAAAA,kBAAAA,CAAqBC,iBACtC,CACA,MAAMC,UAAY,IAAIxyX,WAAAA,CAAY23U,WAClC,CAAA,CAAA,MAAM86C,OAAU,CAAA,IAAIn0Z,SAASk0Z,SAC7BC,CAAAA,CAAAA,OAAAA,CAAQC,SAAS,CAAC,CAAA,CAAG,WAAY,IACjCD,CAAAA,CAAAA,OAAAA,CAAQC,SAAS,CAAC,CAAG,CAAA,CAAA,CAAG,MACxBD,OAAQC,CAAAA,SAAS,CAAC,CAAA,CAAG/6C,WAAa,CAAA,IAAA,CAAA,CAClC86C,QAAQC,SAAS,CAAC,EAAIN,CAAAA,cAAAA,CAAiBC,iBAAmB,CAAA,IAAA,CAAA,CAC1DI,QAAQC,SAAS,CAAC,GAAI,UAAY,CAAA,IAAA,CAAA,CAClC,IAAI11Z,MAASu6W,CAAAA,YAAAA,CAAe46C,gBAC5B,CAAA,IAAI91Z,UAAWm2Z,CAAAA,SAAAA,CAAWx1Z,OAAQo1Z,cAAgBv6Z,CAAAA,CAAAA,GAAG,CAACq6Z,QAAAA,CAAAA,CACtDl1Z,MAAUo1Z,EAAAA,cAAAA,CACV,IAAI,IAAI9ia,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+ia,iBAAmB/ia,CAAAA,CAAAA,EAAAA,CAAI,CACxCmja,OAAQE,CAAAA,QAAQ,CAAC31Z,MAAS1N,CAAAA,CAAAA,CAAG,IAC/B,CACA0N,MAAAA,EAAUq1Z,iBACV,CAAA,GAAIE,gBAAmB,CAAA,CAAA,CAAG,CACxBE,OAAQC,CAAAA,SAAS,CAAC11Z,MAAAA,CAAQu1Z,gBAAkB,CAAA,IAAA,CAAA,CAC5CE,QAAQC,SAAS,CAAC11Z,MAAS,CAAA,CAAA,CAAG,OAAY,CAAA,IAAA,CAAA,CAC1CA,QAAUs1Z,kBACV/kW,CAAAA,SAAAA,CAAU7lB,OAAO,CAACzrC,OAAO,CAAC,MAAC+N,EAAAA,CACzB,IAAI9E,GAAAA,CACJ,MAAM0tZ,YAAAA,CAAerlW,UAAU0hW,aAAa,CAAC59Z,GAAG,CAAC2Y,MAAAA,CAAO,CAAC,CAAE,CAAA,CAC3D,MAAM4vC,YAAAA,CAAe8nP,IAAK24D,CAAAA,WAAW,CAACu4D,YAAa,CAAA,CAACt5W,UAAU,CAC9D,GAAItvC,kBAAkBg2B,WAAa,CAAA,CACjC96B,GAAM,CAAA,IAAI7I,UAAW2N,CAAAA,MAAAA,EACvB,MAAO,CACL,MAAM6oZ,SAAY7oZ,CAAAA,MAAAA,CAAO01B,IAAI,EAAA,CAC7B,GAAImzX,SAAqB7yX,YAAAA,WAAAA,CAAa,CACpC96B,GAAAA,CAAM,IAAI7I,UAAAA,CAAWw2Z,WACvB,CAAO,KAAA,CACL3tZ,IAAM,IAAI7I,UAAAA,CAAWw2Z,UAAU7oZ,MAAM,CAAE6oZ,SAAUv5W,CAAAA,UAAU,CAAEu5W,SAAAA,CAAU91Z,UAAU,EACnF,CACF,CACA,MAAMgR,GAAM,CAAA,IAAI1R,WAAWm2Z,SAAWx1Z,CAAAA,MAAAA,CAAS48C,YAAc10C,CAAAA,GAAAA,CAAInI,UAAU,CAAA,CAC3EgR,IAAIlW,GAAG,CAACqN,KACV,CACF,EAAA,CACA,OAAOqjE,OAAQ5uC,CAAAA,OAAO,CAAC64X,SAAAA,CACzB,CACF,CAAA,CACF,CAEA,MAAMM,aAAAA,CAAgB,MACtB,CAAA,MAAMC,iBAAoB,CAAA,UAAA,CAC1B,MAAMC,gBAAmB,CAAA,SAAA,CAEzB,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCxB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CxB,CAAC,CAED,MAAMC,oBAA6BjhN,SAAAA,oBAAAA,CA4BjCqkD,gBAAiBt/P,CAAAA,KAAK,CAAE,CACtB,IAAI,CAACm8Z,cAAc,CAAGn8Z,KACtB,CAAA,IAAI,CAAC8J,OAAO,CAAC45F,YAAY,CAAG1jG,MAC9B,CACA4jG,OAAU,EAAA,CACR,IAAI,CAACw4T,eAAe,CAACpsX,QAAQ,CAAC,IAAI,CAACs+B,aAAa,CAChD,CAAA,GAAI,IAAI,CAAC+tV,kBAAkB,CAAE,CAC3B,IAAI,CAACC,oBAAoB,CAACtsX,QAAQ,CAAC,IAAI,CAACqsX,kBAAkB,EAC5D,CACA,IAAI,CAACE,wBAAwB,CAAC,CAAE,CAAA,CAAG,EAAM,IAAI,CAACjuV,aAAa,CAACtwD,KAC5D,CAAA,IAAI,CAACu+Y,wBAAwB,CAAC,CAAE,CAAA,CAAG,CAAM,CAAA,IAAI,CAACjuV,aAAa,CAACrwD,MAAM,CAClE,IAAI,CAACu+Y,qBAAqB,CAACxsX,QAAQ,CAAC,IAAI,CAACusX,wBAAwB,CACjE,CAAA,KAAK,CAAC34T,OAAAA,GACR,CAxCAxjG,WAAAA,CAAYkiC,MAAM,CAAEgsC,aAAa,CAAExkE,OAAAA,CAAU,EAAE,CAAC,CAC9C,KAAK,CAACw4B,MAAAA,CACN,CAAA,IAAI,CAACgsC,aAAa,CAAGA,aACrB,CAAA,IAAI,CAAC+tV,kBAAkB,CAAGvyZ,OAAQuyZ,CAAAA,kBAAkB,CACpDxiS,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAAA,CAAQhI,mBAAqB15B,CAAAA,CAAAA,GAAG,CAAC,cAAA,CAAgBo7Z,gBAClEniS,CAAAA,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAAA,CAAQ/H,mBAAqB35B,CAAAA,CAAAA,GAAG,CAAC,cAAA,CAAgBq7Z,gBAClE,CAAA,CAAA,MAAMQ,UAAY3yZ,OAAQ2yZ,CAAAA,SAAS,EAAI,KAAA,CACvC,MAAMv8Z,GAAAA,CAAM,CAAC,EAAEu8Z,UAAY,KAAQ,CAAA,EAAA,CAAG,CAAC,EAAE3yZ,OAAQuyZ,CAAAA,kBAAkB,CAAG,aAAA,CAAgB,GAAG,CAAC,EAAEvyZ,OAAQ4yZ,CAAAA,qBAAqB,EAAI,EAAA,CAAG,CAAC,EAAE5yZ,QAAQo8W,aAAa,CAAG,eAAkB,CAAA,EAAA,CAAG,CAAC,CACjL,MAAM9mT,OAAAA,CAAU,IAAI3+D,GACpB,CAAA,GAAIg8Z,SAAWr9V,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,WAAa,CAAA,EAAA,CAAA,CACxC,GAAIkJ,OAAQuyZ,CAAAA,kBAAkB,CAAEj9V,OAAAA,CAAQx+D,GAAG,CAAC,aAAe,CAAA,EAAA,CAAA,CAC3D,GAAIkJ,OAAQo8W,CAAAA,aAAa,CAAE9mT,OAAAA,CAAQx+D,GAAG,CAAC,gBAAkB,CAAA,EAAA,CAAA,CACzDw+D,QAAQx+D,GAAG,CAAC,2BAA6BkJ,CAAAA,OAAAA,CAAQ4yZ,qBAAqB,EAAI,GAC1E,CAAA,CAAA,IAAI,CAACzmX,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAACr5C,MAAQ,CAAA,CAC7Ck4F,WAAY,CAAC,iBAAiB,EAAEt6H,GAAAA,CAAI,CAAC,CACrCyjD,UAAY,CAAA,CACVwlJ,UAAWhzK,iBACb,CAAA,CACAukG,WAAa,CAAA,QAAA,CACbE,aAAe,CAAA,cAAA,CACf/0D,eAAiBzG,CAAAA,OACnB,EACA,CAAA,IAAI,CAACg9V,eAAe,CAAG95X,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,eAAA,CAC5C,CAAA,IAAI,CAAC45X,oBAAoB,CAAGh6X,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,oBAAA,CACjD,CAAA,IAAI,CAAC85X,qBAAqB,CAAGl6X,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,qBAAA,CAClD,CAAA,IAAI,CAAC65X,wBAAwB,CAAG,IAAIrqZ,YAAAA,CAAa,CACnD,EAAA,CAeF,CAEA,IAAIyqZ,eAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBtB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BtB,CAAC,CAED,MAAMC,kBAA2B5hN,SAAAA,oBAAAA,CAkB/Br3G,SAAU,CACR,IAAI,CAACw4T,eAAe,CAACpsX,QAAQ,CAAC,IAAI,CAACs+B,aAAa,CAChD,CAAA,IAAI,CAACiuV,wBAAwB,CAAC,CAAE,CAAA,CAAG,EAAM,IAAI,CAACjuV,aAAa,CAACtwD,KAAK,CACjE,IAAI,CAACu+Y,wBAAwB,CAAC,CAAA,CAAE,CAAG,CAAA,CAAM,IAAI,CAACjuV,aAAa,CAACrwD,MAAM,CAClE,IAAI,CAACu+Y,qBAAqB,CAACxsX,QAAQ,CAAC,IAAI,CAACusX,wBAAwB,CACjE,CAAA,KAAK,CAAC34T,OAAAA,GACR,CAvBAxjG,WAAAA,CAAYkiC,MAAM,CAAEgsC,aAAa,CAAC,CAChC,KAAK,CAAChsC,OACN,CAAA,IAAI,CAACgsC,aAAa,CAAGA,aACrBurD,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqB15B,GAAG,CAAC,aAAc+7Z,cAChE9iS,CAAAA,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,OAAQ/H,mBAAqB35B,CAAAA,CAAAA,GAAG,CAAC,YAAA,CAAcg8Z,eAChE,CAAA,IAAI,CAAC3mX,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAACr5C,OAAQ,CAC7Ck4F,UAAAA,CAAY,gBACZ72E,CAAAA,UAAAA,CAAY,CACVwlJ,SAAWhzK,CAAAA,iBACb,CACAukG,CAAAA,WAAAA,CAAa,SACbE,aAAe,CAAA,YACjB,CACA,CAAA,CAAA,IAAI,CAACwhS,eAAe,CAAG95X,OAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,gBAC5C,CAAA,IAAI,CAAC85X,qBAAqB,CAAGl6X,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,qBAClD,CAAA,CAAA,IAAI,CAAC65X,wBAAwB,CAAG,IAAIrqZ,YAAa,CAAA,CAAA,EACnD,CAQF,CAEA,MAAM4qZ,eAAwB75T,SAAAA,UAAAA,CAQ5BzhE,SAAU,CACR,IAAI,CAACu7X,mBAAmB,EACxB,CAAA,IAAI,CAACC,oBAAoB,GAC3B,CACAA,oBAAAA,CAAqBlyP,UAAa,CAAA,CAAC,CAAE,CACnC,IAAI,IAAIzyK,CAAAA,CAAIyyK,WAAYzyK,CAAI,CAAA,IAAI,CAACm1J,aAAa,CAACl1J,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzD,MAAMixD,EAAAA,CAAK,IAAI,CAACkkG,aAAa,CAACn1J,CAAAA,CAAE,CAChCixD,EAAAA,CAAGvL,qBAAqB,EACxBuL,CAAAA,EAAAA,CAAG9nB,OAAO,GACZ,CACA,IAAI,CAACgsH,aAAa,CAACl1J,MAAM,CAAG,EAC9B,CACAyka,qBAAsB,CACpB,IAAI,IAAI1ka,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACssG,YAAY,CAACrsG,MAAM,CAAED,CAAI,EAAA,CAAA,CAC/C,IAAI,CAACssG,YAAY,CAACtsG,CAAAA,CAAE,CAACmpC,OAAO,GAC9B,CACA,IAAI,CAACmjE,YAAY,CAACrsG,MAAM,CAAG,EAC7B,CACA4wZ,kBAAmBhrZ,CAAAA,KAAK,CAAE,CACxB,OAAO,IAAI0/C,YAAAA,CAAa,CACtBva,KAAO,CAAA,KAAA,CACP6a,WAAa,CAAA,IAAIla,QAAQ,IAAI,CAAC1B,MAAM,CAAE,CACpC3mC,IAAAA,CAAM,CAAC,YAAY,EAAEuC,KAAM,CAAA,CAAC,CAC5B8f,KAAAA,CAAO,EACPC,MAAQ,CAAA,CAAA,CACR9f,MAAQ,CAAA,IAAI,CAACutC,aAAa,CAC1B7H,OAAS,CAAA,KAAA,CACTkC,SAAWxW,CAAAA,aAAAA,CACX2W,SAAW3W,CAAAA,aAAAA,CACX6W,SAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACZ,CAAA,CACF,EACF,CACAywY,mBAAAA,CAAoB5kX,KAAK,CAAE,CACzB,IAAI,IAAIhgD,CAAI,CAAA,CAAA,CAAGA,EAAIggD,KAAOhgD,CAAAA,CAAAA,EAAAA,CAAI,CAC5B,MAAMixD,GAAKjxD,CAAM,GAAA,CAAA,CAAI,IAAI,CAAC6ka,iBAAiB,CAAG,IAAI,CAAChU,kBAAkB,CAAC7wZ,CACtE,CAAA,CAAA,IAAI,CAACm1J,aAAa,CAACr0J,IAAI,CAACmwD,EAAAA,EAC1B,CACF,CACA6zW,aAAAA,CAAcn/Y,KAAK,CAAEC,MAAM,CAAE8kS,OAAO,CAAE,CACpC,MAAMh3S,GAAMnU,CAAAA,IAAAA,CAAKmU,GAAG,CAACiS,KAAOC,CAAAA,MAAAA,CAAAA,CAC5B,OAAOrmB,IAAAA,CAAKmQ,KAAK,CAACnQ,IAAAA,CAAKoV,IAAI,CAACjB,KAAOnU,IAAKoV,CAAAA,IAAI,CAAC+1S,OAAAA,CAAAA,CAC/C,CACAq6G,kBAAmBC,CAAAA,SAAS,CAAE,CAC5B,MAAM/6X,MAAAA,CAAS,IAAI,CAACA,MAAM,CAC1B,IAAIg7X,iBAAoB,CAAA,IAAI,CAACnB,cAAc,CAC3C,IAAI,IAAI9ja,EAAI,CAAGA,CAAAA,CAAAA,CAAIgla,SAAWhla,CAAAA,CAAAA,EAAAA,CAAI,CAChC,MAAMgjI,IAAAA,CAAO,IAAI6gS,oBAAAA,CAAqB55X,OAAQg7X,iBAC9C,CAAA,CAAA,MAAMh0W,EAAK,CAAA,IAAI,CAACkkG,aAAa,CAACn1J,CAAE,CAAA,CAChCgjI,KAAK5iF,IAAI,CAAC6Q,EAAI,CAAA,CACZo6C,YAAc45T,CAAAA,iBAAAA,CACdn6T,MAAQ,CAAA,EAAA,CACRE,OAAQ,EACV,CAAA,CAAA,CACAg4B,IAAKr3B,CAAAA,aAAa,CAACt2F,KAAMmB,CAAAA,KAAK,CAC9B,CAAA,IAAI,CAAC81F,YAAY,CAACxrG,IAAI,CAACkiI,IACvBiiS,CAAAA,CAAAA,iBAAAA,CAAoBh0W,EAAGpL,CAAAA,YAAW,CAEpCo/W,iBAAAA,CAAoB,IAAI,CAAC9vQ,aAAa,CAAC6vQ,SAAAA,CAAY,CAAE,CAAA,CAACn/W,WAAW,CACjE,IAAI,IAAI7lD,CAAAA,CAAIgla,SAAY,CAAA,CAAA,CAAGhla,CAAK,EAAA,CAAA,CAAGA,IAAI,CACrC,MAAMgjI,IAAO,CAAA,IAAIwhS,mBAAmBv6X,MAAQg7X,CAAAA,iBAAAA,CAAAA,CAC5C,MAAMh0W,EAAAA,CAAK,IAAI,CAACkkG,aAAa,CAACn1J,CAAAA,CAAE,CAChCgjI,IAAK5iF,CAAAA,IAAI,CAAC6Q,EAAAA,CACV+xE,CAAAA,IAAKtkF,CAAAA,UAAU,CAAG3J,UAAAA,CAAWuB,QAAQ,CACrC,IAAI,CAACg2D,YAAY,CAACxrG,IAAI,CAACkiI,IACvBiiS,CAAAA,CAAAA,iBAAAA,CAAoBh0W,EAAGpL,CAAAA,YAAW,CAEtC,CACA6lD,SAAY,EAAA,CACV,IAAI,CAACypD,aAAa,CAAC,CAAA,CAAE,EAAE3oH,MAAAA,CAAO,EAAG,CACjC,CAAA,CAAA,IAAI,CAACk4X,mBAAmB,EACxB,CAAA,IAAI,CAACC,oBAAoB,CAAC,CAC5B,EAAA,CACAv5T,WAAc,EAAA,CACZ,KAAK,CAACA,WAAAA,EAAAA,CACN,MAAM85T,YAAAA,CAAe,IAAI,CAACJ,aAAa,CAAC,IAAI,CAAChB,cAAc,CAACn+Y,KAAK,CAAE,IAAI,CAACm+Y,cAAc,CAACl+Y,MAAM,CAAE,CAAA,CAAA,CAC/F,MAAMo/Y,SAAAA,CAAY3xZ,KAAKI,KAAK,CAACyxZ,YAAc,CAAA,CAAA,CAAG,IAAI,CAACC,SAAS,CAC5D,CAAA,GAAI,IAAI,CAAChwQ,aAAa,CAACl1J,MAAM,GAAK+ka,SAAW,CAAA,CAC3C,IAAI,CAACN,mBAAmB,EACxB,CAAA,IAAI,CAACC,oBAAoB,CAAC,CAAA,CAAA,CAC1B,IAAI,CAACC,mBAAmB,CAACI,SAAAA,CAAAA,CACzB,IAAI,CAACD,kBAAkB,CAACC,SAAAA,EAC1B,CACF,CA3FAj9Z,YAAYkiC,MAAM,CAAEgsC,aAAa,CAAEnwE,MAAM,CAAC,CACxC,KAAK,CAACmkC,MAAS,CAAA,CAAA,IAAI,CAACk7X,SAAS,CAAG,EAAI,CAAA,IAAI,CAAChwQ,aAAa,CAAG,EACzD,CAAA,IAAI,CAAC2uQ,cAAc,CAAG7tV,aACtB,CAAA,IAAI,CAAC5iC,aAAa,CAAGvtC,MACrB,CAAA,IAAI,CAAC++Z,iBAAiB,CAAG,IAAI,CAAChU,kBAAkB,CAAC,EACjD,CAAA,IAAI,CAACuU,YAAY,CAAG,IAAI,CAACP,iBAAiB,CAACh/W,YAAW,CAuF1D,CAEA,IAAIw/W,YAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqEnB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;AAYxB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCtB,CAAC,CAED,IAAIC,eAAAA,CAAkB,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBvB,CAAC,CAED,IAAIC,kBAAAA,CAAqB,CAAC;;;;;;;;;;;;;;;;;;;AAmB1B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;AAoB3B,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;AAW3B,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBtB,CAAC,CAED,IAAIC,mBAAAA,CAAsB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;AAwB3B,CAAC,CAED,MAAMC,iBAAoB,CAAA,CACxBC,SAAWV,CAAAA,WAAAA,CACXW,cAAgBV,CAAAA,gBAAAA,CAChBW,YAAcV,CAAAA,cAAAA,CACdW,aAAeV,CAAAA,eAAAA,CACfW,iBAAkBV,kBAClBW,CAAAA,iBAAAA,CAAmBV,mBACnBW,CAAAA,iBAAAA,CAAmBV,mBACnBW,CAAAA,YAAAA,CAAcV,cACdW,CAAAA,iBAAAA,CAAmBV,oBACnBW,qBAAuB,CAAA,EAAA,CACvBC,kBAAoB,CAAA,EAAA,CACpBC,gBAAkB,CAAA,EACpB,CAEA,CAAA,IAAIX,UAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEjB,CAAC,CAED,IAAIC,cAAAA,CAAiB,CAAC;;;;;;;;;;;;;AAatB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCpB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBrB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;AAmBxB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;AAoBzB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;AAYzB,CAAC,CAED,IAAIC,YAAAA,CAAe,CAAC;;;;;;;;;;;;;;;;;;;;;;;AAuBpB,CAAC,CAED,IAAIC,iBAAAA,CAAoB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;AAyBzB,CAAC,CAED,MAAMI,iBAAoB,CAAA,CACxBZ,UACAC,cACAC,CAAAA,YAAAA,CACAC,cACAC,gBACAC,CAAAA,iBAAAA,CACAC,kBACAC,YACAC,CAAAA,iBAAAA,CACAC,sBAAuB,EACvBC,CAAAA,kBAAAA,CAAoB,GACpBC,gBAAkB,CAAA,EACpB,CAEA,CAAME,MAAAA,iBAAAA,SAA0BhkN,qBAoC9B,IAAIikN,KAAAA,CAAMl/Z,KAAK,CAAE,CACf,GAAI,IAAI,CAACm/Z,MAAM,GAAKn/Z,KAAAA,CAAO,CACzB,IAAI,CAACm/Z,MAAM,CAAGn/Z,KACd,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIF,KAAAA,EAAQ,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAIE,QAAAA,CAASr/Z,KAAK,CAAE,CAClB,GAAI,IAAI,CAACs/Z,SAAS,GAAKt/Z,KAAAA,CAAO,CAC5B,IAAI,CAACs/Z,SAAS,CAAGt/Z,KACjB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIC,UAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvB,IAAI7B,YAAaz9Z,CAAAA,KAAK,CAAE,CACtB,GAAI,IAAI,CAACu/Z,aAAa,GAAKv/Z,KAAAA,CAAO,CAChC,IAAI,CAACu/Z,aAAa,CAAGv/Z,KACrB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAI3B,cAAe,CACjB,OAAO,IAAI,CAAC8B,aAAa,CAE3B,IAAIC,WAAWx/Z,KAAK,CAAE,CACpB,GAAI,IAAI,CAACy/Z,WAAW,GAAKz/Z,MAAO,CAC9B,IAAI,CAACy/Z,WAAW,CAAGz/Z,KACnB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAII,YAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIC,YAAY1/Z,KAAK,CAAE,CACrB,GAAI,IAAI,CAAC2/Z,YAAY,GAAK3/Z,MAAO,CAC/B,IAAI,CAAC2/Z,YAAY,CAAG3/Z,KACpB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIM,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YACd,CACA,IAAIC,WAAW5/Z,KAAK,CAAE,CACpB,GAAI,IAAI,CAAC6/Z,WAAW,GAAK7/Z,MAAO,CAC9B,IAAI,CAAC6/Z,WAAW,CAAG7/Z,KACnB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIQ,UAAa,EAAA,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIC,cAAe9/Z,CAAAA,KAAK,CAAE,CACxB,GAAI,IAAI,CAAC+/Z,eAAe,GAAK//Z,KAAO,CAAA,CAClC,IAAI,CAAC+/Z,eAAe,CAAG//Z,KACvB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIU,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eAAe,CAE7B,IAAIC,eAAgBhga,CAAAA,KAAK,CAAE,CACzB,GAAI,IAAI,CAACiga,gBAAgB,GAAKjga,KAAO,CAAA,CACnC,IAAI,CAACiga,gBAAgB,CAAGjga,KACxB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIY,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACC,gBAAgB,CAE9B,IAAIC,eAAgBlga,CAAAA,KAAK,CAAE,CACzB,GAAI,IAAI,CAACmga,gBAAgB,GAAKnga,KAAO,CAAA,CACnC,IAAI,CAACmga,gBAAgB,CAAGnga,KACxB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIc,eAAAA,EAAkB,CACpB,OAAO,IAAI,CAACC,gBACd,CACA,IAAIrsV,WAAAA,CAAY9zE,KAAK,CAAE,CACrB,GAAI,IAAI,CAACw1I,YAAY,GAAKx1I,KAAO,CAAA,CAC/B,IAAI,CAACw1I,YAAY,CAAGx1I,KACpB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAItrV,WAAAA,EAAc,CAChB,OAAO,IAAI,CAAC0hE,YACd,CACA,IAAI4qR,SAAUpga,CAAAA,KAAK,CAAE,CACnB,GAAI,IAAI,CAACqga,UAAU,GAAKrga,KAAO,CAAA,CAC7B,IAAI,CAACqga,UAAU,CAAGrga,KAClB,CAAA,IAAI,CAACo/Z,YAAY,CAAG,KACtB,CACF,CACA,IAAIgB,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIC,kBAAqB,EAAA,CACvB,OAAO,IAAI,CAACD,UAAU,CAAG,CAC3B,CACAjrX,QAAW,EAAA,CACT,IAAI,CAAC4uD,aAAa,CAACt2F,KAAMmB,CAAAA,KAAK,EAC9B,IAAI,CAACo1F,aAAa,CAAC,CAAA,CAAA,CACnB,IAAI,CAACE,eAAe,CAAC,CACvB,EAAA,CACAV,aAAc,CACZ,MAAMn6C,GAAK,IAAI,CAACxS,YAAY,EAAI,IAAI,CAACxU,MAAM,CAACkZ,UAAU,CACtD,MAAM3mB,IAAAA,CAAOy0B,GAAGxK,iBAAiB,CAAC,GAClC,MAAMyhX,qBAAAA,CAAwB1rY,KAAOk9F,UAAaC,CAAAA,UAAAA,CAClD,GAAI,IAAI,CAAC4jB,gBAAgB,GAAK2qR,qBAAAA,CAAuB,CACnD,IAAI,CAAC3qR,gBAAgB,CAAG2qR,qBACxB,CAAA,IAAI,CAACnB,YAAY,CAAG,KACtB,CACA,MAAM1sQ,YAAAA,CAAe74B,aAAaz/H,GAAG,CAAC,IAAI,CAACkoC,MAAM,CAAE,IAAI,CAACA,MAAM,CAAC2E,QAAQ,CAAG1M,mBAAAA,CAAsBD,mBAChG,CAAA,CAAA,IAAK,KAAM,CAAC3+B,IAAAA,CAAM6ka,UAAU,GAAI,IAAI,CAACC,oBAAoB,CAAClhX,OAAO,EAAG,CAAA,CAClE,MAAMmhX,YAAehuQ,CAAAA,YAAAA,CAAat4J,GAAG,CAACuB,IAAAA,CAAAA,CACtC,GAAI+ka,YAAiBF,GAAAA,SAAAA,CAAW,CAC9B,IAAI,CAACC,oBAAoB,CAAC7/Z,GAAG,CAACjF,IAAM+ka,CAAAA,YAAAA,CACpC,CAAA,IAAI,CAACtB,YAAY,CAAG,KACtB,CACF,CACA,GAAI,IAAI,CAACA,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAAG,KAAA,CACpB,MAAMuB,mBAAsB1uS,CAAAA,UAAU,CAAC,IAAI,CAAC2jB,gBAAgB,CAAC,CAC7D,MAAMgrR,YAAe,CAAA,IAAI,CAACH,oBAAoB,CAC9C,MAAMI,QAAWvvX,CAAAA,QAAAA,CAASsvX,aAAaxma,GAAG,CAAC,uBAA4B,CAAA,EAAA,EAAA,CAAA,CACvE,MAAM0ma,SAAAA,CAAYxvX,SAASsvX,YAAaxma,CAAAA,GAAG,CAAC,oBAAyB,CAAA,EAAA,EAAA,CAAA,CACrE,MAAM2ma,OAAUzvX,CAAAA,QAAAA,CAASsvX,aAAaxma,GAAG,CAAC,qBAAuB,EACjE,CAAA,CAAA,MAAM8F,IAAM,CAAC,EAAE,IAAI,CAAC4zE,WAAW,CAAC,CAAC,CAAG,CAAC,CAAC,EAAE6sV,mBAAAA,CAAoB,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAAClD,YAAY,CAAG,QAAU,SAAU,CAAA,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAAC+B,UAAU,CAAG,KAAA,CAAQ,QAAQ,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACwB,kBAAkB,CAAG,YAAe,CAAA,EAAA,CAAG,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACtB,WAAW,CAAG,MAAS,CAAA,QAAA,CAAS,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACI,cAAc,CAAG,SAAY,CAAA,WAAA,CAAY,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACT,QAAQ,CAAG,WAAa,YAAa,CAAA,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACW,eAAe,CAAG,UAAA,CAAa,aAAa,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACE,eAAe,CAAG,UAAa,CAAA,YAAA,CAAa,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACN,UAAU,CAAG,KAAA,CAAQ,QAAQ,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACU,kBAAkB,CAAG,KAAQ,CAAA,OAAA,CAAQ,CAAC,CAAG,CAAC,CAAC,EAAE,IAAI,CAACnB,MAAM,EAAI,GAAG,CAAC,CAAG,CAAC,KAAK,EAAE0B,SAAS,MAAM,EAAEC,UAAU,IAAI,EAAEC,QAAQ,CAAC,CAC7nB,GAAI,IAAI,CAAC7rX,IAAI,GAAKh1C,GAAAA,CAAK,CACrB,IAAI,CAACg1C,IAAI,CAAGh1C,GACZ,CAAA,MAAMk/D,QAAU,IAAI3+D,GAAAA,CACpB2+D,QAAQx+D,GAAG,CAAC,UAAW6xH,YAAY,CAAC,IAAI,CAAC3+C,WAAW,CAAC,CACrD1U,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,OAAA,CAAS+/Z,mBACrB,CAAA,CAAA,GAAI,IAAI,CAAClD,YAAY,CAAEr+V,OAAAA,CAAQx+D,GAAG,CAAC,OAAA,CAAS,MAC5C,GAAI,IAAI,CAAC4+Z,UAAU,CAAEpgW,QAAQx+D,GAAG,CAAC,MAAO,IACxC,CAAA,CAAA,GAAI,IAAI,CAACoga,kBAAkB,CAAE5hW,OAAAA,CAAQx+D,GAAG,CAAC,cAAe,IACxD,CAAA,CAAA,GAAI,IAAI,CAAC8+Z,WAAW,CAAEtgW,OAAQx+D,CAAAA,GAAG,CAAC,MAAQ,CAAA,IAAA,CAAA,CAC1C,GAAI,IAAI,CAACk/Z,cAAc,CAAE1gW,OAAAA,CAAQx+D,GAAG,CAAC,SAAA,CAAW,MAChD,GAAI,IAAI,CAACy+Z,QAAQ,CAAEjgW,QAAQx+D,GAAG,CAAC,YAAa,IAC5C,CAAA,CAAA,GAAI,IAAI,CAACo/Z,eAAe,CAAE5gW,OAAQx+D,CAAAA,GAAG,CAAC,UAAY,CAAA,IAAA,CAAA,CAClD,GAAI,IAAI,CAACs/Z,eAAe,CAAE9gW,OAAQx+D,CAAAA,GAAG,CAAC,UAAY,CAAA,IAAA,CAAA,CAClD,GAAI,IAAI,CAACg/Z,UAAU,CAAExgW,OAAAA,CAAQx+D,GAAG,CAAC,KAAA,CAAO,MACxC,GAAI,IAAI,CAAC0/Z,kBAAkB,CAAElhW,QAAQx+D,GAAG,CAAC,MAAO,IAChD,CAAA,CAAA,GAAI,IAAI,CAACu+Z,MAAM,CAAE//V,OAAQx+D,CAAAA,GAAG,CAAC,eAAiB,CAAA,IAAI,CAACu+Z,MAAM,CAAA,CACzD,MAAMlja,QAAW,CAAA,IAAIwE,IAAIiyJ,YACzB,CAAA,CAAA,IAAI,CAACz8G,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CAClDk4F,UAAAA,CAAY,CAAC,cAAc,EAAEt6H,IAAI,CAAC,CAClCyjD,WAAY,CACVwlJ,SAAAA,CAAWhzK,iBACb,CACAukG,CAAAA,WAAAA,CAAa,SACbE,aAAe,CAAA,WAAA,CACf/0D,gBAAiBzG,OACjBiH,CAAAA,gBAAAA,CAAkBpqE,QACpB,CACF,EAAA,CACF,CACF,CACA2nG,OAAAA,EAAU,CACR,MAAMq9T,QAAAA,CAAW,IAAI,CAACC,YAAY,CAClC,IAAI,CAACC,cAAc,CAACnxX,QAAQ,CAACixX,QAC7B,CAAA,CAAA,IAAI,CAACG,uBAAuB,CAAC,EAAE,CAAG,CAAA,CAAMH,SAASjjZ,KACjD,CAAA,IAAI,CAACojZ,uBAAuB,CAAC,CAAA,CAAE,CAAG,CAAMH,CAAAA,QAAAA,CAAShjZ,MAAM,CACvD,IAAI,CAACojZ,oBAAoB,CAACrxX,QAAQ,CAAC,IAAI,CAACoxX,uBAAuB,CAAA,CAC/D,GAAI,IAAI,CAAC7B,aAAa,CAAE,CACtB,IAAI,CAAC+B,cAAc,CAACtxX,QAAQ,CAAC,IAAI,CAACuvX,aAAa,EAC/C,IAAI,CAACgC,gBAAgB,CAACvxX,QAAQ,CAAC,IAAI,CAACwxX,cAAc,EACpD,CACA,GAAI,IAAI,CAAC/B,WAAW,CAAE,CACpB,IAAI,CAACgC,YAAY,CAACzxX,QAAQ,CAAC,IAAI,CAACyvX,WAAW,CAAA,CAC3C,IAAI,CAACiC,aAAa,CAAC1xX,QAAQ,CAAC,IAAI,CAAC2xX,WAAW,EAC9C,CACA,GAAI,IAAI,CAAChC,YAAY,CAAE,CACrB,IAAI,CAACiC,aAAa,CAAC5xX,QAAQ,CAAC,IAAI,CAAC2vX,YAAY,EAC/C,CACA,GAAI,IAAI,CAACI,eAAe,CAAE,CACxB,IAAI,CAAC8B,KAAK,CAAC7xX,QAAQ,CAAC,CAClB,IAAI,CAAC8xX,iBAAiB,CACtB,IAAI,CAACC,eAAe,CACpB,IAAI,CAACC,iBAAiB,CACvB,CACD,CAAA,IAAI,CAACC,MAAM,CAACjyX,QAAQ,CAAC,CACnB,IAAI,CAACkyX,WAAW,CAACvqa,CAAC,CAClB,IAAI,CAACuqa,WAAW,CAACh2Z,CAAC,CAClB,IAAI,CAACg2Z,WAAW,CAACh6Z,CAAC,CACnB,EACH,CACA,MAAMi6Z,UAAAA,CAAa,IAAI,CAAC7C,SAAS,CACjC,GAAI6C,UAAAA,CAAY,CACd,IAAI,CAACC,cAAc,CAAC,CAAA,CAAE,CAAGD,UAAWnkZ,CAAAA,KAAK,CACzC,IAAI,CAACokZ,cAAc,CAAC,EAAE,CAAGD,UAAAA,CAAWlkZ,MAAM,CAC1C,IAAI,CAACmkZ,cAAc,CAAC,CAAE,CAAA,CAAGD,WAAWlkZ,MAAM,CAAG,CAC7C,CAAA,IAAI,CAACmkZ,cAAc,CAAC,CAAA,CAAE,CAAG,IAAI,CAACC,iBAAiB,CAC/C,IAAI,CAACC,gBAAgB,CAACtyX,QAAQ,CAAC,IAAI,CAACoyX,cAAc,CAAA,CAClD,IAAI,CAACG,UAAU,CAACvyX,QAAQ,CAACmyX,UAC3B,EAAA,CACA,GAAI,IAAI,CAAClC,gBAAgB,CAAE,CACzB,IAAI,CAACuC,iBAAiB,CAACxyX,QAAQ,CAAC,CAC9B,IAAI,CAACyyX,aAAa,CAClB,IAAI,CAACC,aAAa,CAClB,IAAI,CAACC,iBAAiB,CACtB,IAAI,CAACC,iBAAiB,CACvB,EACH,CACA,GAAI,IAAI,CAACzC,gBAAgB,CAAE,CACzB,IAAI,CAAC0C,mBAAmB,CAAC7yX,QAAQ,CAAC,IAAI,CAAC8yX,iBAAiB,CAAG,IAAA,EAC7D,CACA,GAAI,IAAI,CAACxC,kBAAkB,CAAE,CAC3B,IAAI,CAACyC,WAAW,CAAC/yX,QAAQ,CAACtkC,IAAKY,CAAAA,IAAI,CAAC,CAAC,IAAA,CAAO,CAAC,EAAK,CAAA,IAAI,CAAC8zZ,SAAS,CAAA,EAClE,CACA,KAAK,CAACx8T,OAAAA,GACR,CAzPAxjG,WAAY6hC,CAAAA,cAAc,CAAC,CACzB,KAAK,CAACA,cAAiB,CAAA,CAAA,IAAI,CAACi/X,YAAY,CAAG,KAAM,IAAI,CAACM,cAAc,CAAG,GAAA,CAAM,IAAI,CAACjC,aAAa,CAAG,IAAM,CAAA,IAAI,CAACE,WAAW,CAAG,KAAM,IAAI,CAACkC,WAAW,CAAG,IAAA,CAAM,IAAI,CAACX,kBAAkB,CAAG,KAAO,CAAA,IAAI,CAACrB,YAAY,CAAG,KAAM,IAAI,CAACnqR,YAAY,CAAGtjB,cAAgB,CAAA,IAAI,CAAC6tS,eAAe,CAAG,MAAO,IAAI,CAACiC,iBAAiB,CAAG,CAAA,CAAG,IAAI,CAACD,eAAe,CAAG,CAAG,CAAA,IAAI,CAACD,iBAAiB,CAAG,EAAG,IAAI,CAACI,WAAW,CAAG,IAAIx0Z,MAAM,CAAG,CAAA,CAAA,CAAG,EAAG,CAAI,CAAA,CAAA,IAAI,CAAC0xZ,YAAY,CAAG,KAAM,IAAI,CAACa,gBAAgB,CAAG,KAAA,CAAO,IAAI,CAACwC,aAAa,CAAG,EAAK,CAAA,IAAI,CAACC,aAAa,CAAG,CAAA,CAAK,IAAI,CAACC,iBAAiB,CAAG,EAAK,CAAA,IAAI,CAACC,iBAAiB,CAAG,GAAK,IAAI,CAACzC,gBAAgB,CAAG,KAAA,CAAO,IAAI,CAAC2C,iBAAiB,CAAG,EAAI,CAAA,IAAI,CAACjD,WAAW,CAAG,KAAA,CAAO,IAAI,CAACQ,UAAU,CAAG,EAAK,CAAA,IAAI,CAACzqR,gBAAgB,CAAG5jB,WAAY,IAAI,CAACstS,SAAS,CAAG,IAAA,CAAM,IAAI,CAAC+C,iBAAiB,CAAG,CAAG,CAAA,IAAI,CAACntX,IAAI,CAAG,EAAA,CAAI,IAAI,CAACiqX,MAAM,CAAG,IAAM,CAAA,IAAI,CAACsB,oBAAoB,CAAG,IAAIhga,GAAI,CAAA,CACt0B,CACE,uBACA,CAAA,EAAA,CACD,CACD,CACE,oBAAA,CACA,GACD,CACD,CACE,mBACA,EACD,CAAA,CACF,EACDo5H,YAAaz/H,CAAAA,GAAG,CAAC6nC,cAAgB3H,CAAAA,mBAAAA,CAAAA,CAAqB3xB,GAAG,CAACw1Z,iBAAAA,CAAmB,OAC7EtkS,YAAaz/H,CAAAA,GAAG,CAAC6nC,cAAgB1H,CAAAA,mBAAAA,CAAAA,CAAqB5xB,GAAG,CAACq2Z,iBAAAA,CAAmB,OAC7E,KAAM,CAAEp/Z,KAAK,CAAE,CAAGqiC,cAClB,CAAA,IAAI,CAACk/X,cAAc,CAAGvha,KAAAA,CAAM8iC,OAAO,CAAC,cAAA,CACpC,CAAA,IAAI,CAAC4+X,cAAc,CAAG1ha,KAAAA,CAAM8iC,OAAO,CAAC,cAAA,CACpC,CAAA,IAAI,CAAC++X,YAAY,CAAG7ha,KAAAA,CAAM8iC,OAAO,CAAC,YAAA,CAClC,CAAA,IAAI,CAACk/X,aAAa,CAAGhia,KAAAA,CAAM8iC,OAAO,CAAC,aAAA,CACnC,CAAA,IAAI,CAACg/X,aAAa,CAAG9ha,KAAAA,CAAM8iC,OAAO,CAAC,aAAA,CACnC,CAAA,IAAI,CAAC6+X,gBAAgB,CAAG3ha,KAAM8iC,CAAAA,OAAO,CAAC,gBACtC,CAAA,CAAA,IAAI,CAACm/X,KAAK,CAAGjia,KAAM8iC,CAAAA,OAAO,CAAC,8BAC3B,CAAA,CAAA,IAAI,CAACu/X,MAAM,CAAGria,KAAM8iC,CAAAA,OAAO,CAAC,MAC5B,CAAA,CAAA,IAAI,CAAC8/X,iBAAiB,CAAG5ia,KAAM8iC,CAAAA,OAAO,CAAC,iBACvC,CAAA,CAAA,IAAI,CAACmgY,mBAAmB,CAAGjja,KAAM8iC,CAAAA,OAAO,CAAC,mBACzC,CAAA,CAAA,IAAI,CAAC2+X,oBAAoB,CAAGzha,KAAAA,CAAM8iC,OAAO,CAAC,qBAC1C,CAAA,IAAI,CAAC0+X,uBAAuB,CAAG,IAAIlvZ,YAAa,CAAA,CAAA,CAChD,CAAA,IAAI,CAAC6wZ,WAAW,CAAGnja,KAAAA,CAAM8iC,OAAO,CAAC,WAAA,CACjC,CAAA,IAAI,CAAC6/X,UAAU,CAAG3ia,KAAM8iC,CAAAA,OAAO,CAAC,UAChC,CAAA,CAAA,IAAI,CAAC0/X,cAAc,CAAG,IAAIlwZ,YAAAA,CAAa,EACvC,CAAA,IAAI,CAACowZ,gBAAgB,CAAG1ia,MAAM8iC,OAAO,CAAC,kBACxC,CAwNF,CAEA,IAAIsgY,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B9B,CAAC,CAED,IAAIC,sBAAAA,CAAyB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;AA0B9B,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDxB,CAAC,CAED,IAAIC,gBAAAA,CAAmB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDxB,CAAC,CAED,MAAMC,aAAsBnoN,SAAAA,oBAAAA,CAiC1Bz5K,OAAU,EAAA,CACR,GAAI,IAAI,CAACsV,YAAY,CAAE,CACrB,IAAI,CAACA,YAAY,CAACiH,qBAAqB,EACvC,CAAA,IAAI,CAACjH,YAAY,CAACtV,OAAO,EACzB,CAAA,IAAI,CAACsV,YAAY,CAAG,KACtB,CACF,CACAusX,KAAQ,EAAA,CACN,IAAI,IAAIhra,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,CAAA,CAAG,EAAEA,CAAAA,CAAE,CACxB,IAAI,CAACira,eAAe,CAACjra,CAAE,CAAA,CAAG,IAAI2rC,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CACjD3mC,IAAM,CAAA,CAAC,YAAY,EAAEtD,CAAE,CAAA,CAAC,CACxB2lB,KAAAA,CAAO,EACPC,MAAQ,CAAA,CAAA,CACR9f,MAAQ,CAAA,IAAI,CAACmwE,aAAa,CAACnwE,MAAM,CACjC0lC,OAAAA,CAAS,KACTkC,CAAAA,SAAAA,CAAWxW,aACX2W,CAAAA,SAAAA,CAAW3W,aACX6W,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBACZ,CACA,CAAA,CAAA,IAAI,CAAC+2Y,oBAAoB,CAAClra,EAAE,CAAG,IAAIulD,YAAa,CAAA,CAC9CM,WAAa,CAAA,IAAI,CAAColX,eAAe,CAACjra,CAAE,CAAA,CACpCgrC,KAAO,CAAA,KACT,CACF,EAAA,CACA,IAAI,CAACmgY,cAAc,CAAG,IAAI,CAACF,eAAe,CAAC,CAAE,CAAA,CAC7C,IAAI,CAAC7qX,IAAI,CAAC,IAAI,CAAC8qX,oBAAoB,CAAC,CAAA,CAAE,CAAE,CACtC7/T,YAAAA,CAAc,IAAI,CAACp1B,aACrB,CACF,EAAA,CACAq1B,QAAS,CACP,IAAI,CAACy4T,eAAe,CAACpsX,QAAQ,CAAC,IAAI,CAACs+B,aAAa,CAChD,CAAA,IAAI,CAACm1V,gBAAgB,CAACzzX,QAAQ,CAAC,IAAI,CAACszX,eAAe,CAAC,CAAI,CAAA,IAAI,CAACI,YAAY,CAAC,CAC1E,CAAA,IAAI,CAAC75E,WAAW,CAAC,CAAA,CAAE,CAAG,IAAI,CAACv7Q,aAAa,CAACtwD,KACzC,CAAA,IAAI,CAAC6rU,WAAW,CAAC,CAAA,CAAE,CAAG,IAAI,CAACv7Q,aAAa,CAACrwD,MAAM,CAC/C,IAAI,CAAC0lZ,aAAa,CAAC3zX,QAAQ,CAAC,IAAI,CAAC65S,WAAW,CAC5C,CAAA,MAAMv+M,MAAS,CAAA,IAAI,CAACo8B,eAAe,CAACp8B,MAAM,CAC1C,IAAI,CAACs4R,cAAc,CAAC5zX,QAAQ,CAACs7F,MAAOuL,CAAAA,iBAAiB,CAACxkI,IAAI,CAC1D,CAAA,IAAI,CAACwxZ,aAAa,CAAC7zX,QAAQ,CAACs7F,MAAOyL,CAAAA,gBAAgB,CAAC1kI,IAAI,CACxD,CAAA,IAAI,CAACyxZ,SAAS,CAAC9zX,QAAQ,CAACs7F,MAAO0L,CAAAA,QAAQ,CACvC,CAAA,MAAM3qH,EAAIi/G,MAAOqN,CAAAA,QAAQ,CACzB,IAAI,CAAC+qB,YAAY,CAAC,CAAE,CAAA,CAAG,CAAIr3I,CAAAA,CAC3B,CAAA,IAAI,CAACq3I,YAAY,CAAC,CAAE,CAAA,CAAGr3I,CACvB,CAAA,IAAI,CAACq3I,YAAY,CAAC,EAAE,CAAGp4B,MAAAA,CAAOiO,SAC9B,CAAA,IAAI,CAACmqB,YAAY,CAAC,CAAE,CAAA,CAAGp4B,MAAO1hG,CAAAA,UAAU,GAAKsnF,uBAAAA,CAA0B,CAAI,CAAA,CAAA,CAC3E,IAAI,CAACyyC,cAAc,CAAC3zH,QAAQ,CAAC,IAAI,CAAC0zH,YAAY,EAChD,CACAj4H,MAAS,EAAA,CACP,IAAI,CAACi4X,YAAY,CAAG,CAAI,CAAA,IAAI,CAACA,YAAY,CACzC,IAAI,CAACF,cAAc,CAAG,IAAI,CAACF,eAAe,CAAC,IAAI,CAACI,YAAY,CAC5D,CAAA,IAAI,CAAC5sX,YAAY,CAAG,IAAI,CAACysX,oBAAoB,CAAC,IAAI,CAACG,YAAY,CAAC,CAChE,OAAO,IAAI,CAACF,cAAc,CAnF5Bpja,WAAYkiC,CAAAA,MAAM,CAAEgsC,aAAa,CAAEo5F,eAAe,CAAC,CACjD,KAAK,CAACplI,MAAAA,CAAAA,CAAS,IAAI,CAACohY,YAAY,CAAG,CAAG,CAAA,IAAI,CAACF,cAAc,CAAG,IAAA,CAAM,IAAI,CAACF,eAAe,CAAG,EAAE,CAAE,IAAI,CAACC,oBAAoB,CAAG,EACzH,CAAA,IAAI,CAACj1V,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACo5F,eAAe,CAAGA,eACvB7tC,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqB15B,GAAG,CAAC,oBAAsBoia,CAAAA,sBAAAA,CAAAA,CACxEnpS,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQ/H,CAAAA,mBAAAA,CAAAA,CAAqB35B,GAAG,CAAC,oBAAsBqia,CAAAA,sBAAAA,CAAAA,CACxEppS,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqB15B,GAAG,CAAC,cAAgBsia,CAAAA,gBAAAA,CAAAA,CAClErpS,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQ/H,CAAAA,mBAAAA,CAAAA,CAAqB35B,GAAG,CAAC,cAAgBuia,CAAAA,gBAAAA,CAAAA,CAClE,MAAM/jW,OAAAA,CAAU,IAAI3+D,GAAAA,CACpB2+D,OAAQx+D,CAAAA,GAAG,CAAC,cAAA,CAAgB,IAC5By5H,CAAAA,CAAAA,WAAAA,CAAYwB,0BAA0B,CAACv5F,MAAAA,CAAQolI,eAAgBhrB,CAAAA,YAAY,CAAEt9E,OAAAA,CAC7E,CAAA,IAAI,CAACnpB,MAAM,CAAGokF,WAAY1+C,CAAAA,YAAY,CAACr5C,MAAAA,CAAQ,CAC7Ck4F,UAAAA,CAAY,mBACZ72E,UAAY,CAAA,CACVwlJ,SAAWhzK,CAAAA,iBACb,CACAukG,CAAAA,WAAAA,CAAa,QACbE,CAAAA,aAAAA,CAAe,cACf/0D,CAAAA,eAAAA,CAAiBzG,OACnB,CAAA,CAAA,CACA,KAAM,CAAEx/D,KAAK,CAAE,CAAG0iC,MAClB,CAAA,IAAI,CAAC85X,eAAe,CAAGx8Z,KAAM8iC,CAAAA,OAAO,CAAC,eACrC,CAAA,CAAA,IAAI,CAACihY,aAAa,CAAG/ja,KAAM8iC,CAAAA,OAAO,CAAC,aACnC,CAAA,CAAA,IAAI,CAACmnT,WAAW,CAAG,IAAI33U,YAAAA,CAAa,CACpC,CAAA,CAAA,IAAI,CAACuxZ,gBAAgB,CAAG7ja,KAAM8iC,CAAAA,OAAO,CAAC,gBACtC,CAAA,CAAA,IAAI,CAACkhY,cAAc,CAAGhka,KAAM8iC,CAAAA,OAAO,CAAC,+BACpC,CAAA,CAAA,IAAI,CAACmhY,aAAa,CAAGjka,KAAM8iC,CAAAA,OAAO,CAAC,8BACnC,CAAA,CAAA,IAAI,CAACohY,SAAS,CAAGlka,KAAM8iC,CAAAA,OAAO,CAAC,SAAA,CAC/B,CAAA,IAAI,CAACghI,YAAY,CAAG,IAAIxxJ,aAAa,CACrC,CAAA,CAAA,IAAI,CAACyxJ,cAAc,CAAG/jK,KAAM8iC,CAAAA,OAAO,CAAC,eACpC,CAAA,CAAA,IAAI,CAAC2gY,KAAK,GACZ,CAsDF,CAEA,IAAIU,UAAY,CAAC;;;;;;;;;;;;;;;;;;;;;AAqBjB,CAAC,CAED,IAAIC,SAAAA,CAAY,CAAC;;;;;;;;;;;;;;;;;;;;;;AAsBjB,CAEA,CAAMC,MAAAA,aAAAA,SAAsBhpN,oBAuB1Br3G,CAAAA,OAAAA,EAAU,CACR,KAAM,CAAEsgU,WAAW,CAAEC,UAAU,CAAE,CAAG,IAAI,CACxCD,WAAW,CAAC,CAAE,CAAA,CAAG,IAAI,CAACE,aAAa,CAAG,IACtCF,CAAAA,WAAW,CAAC,EAAE,CAAGC,UACjBD,CAAAA,WAAW,CAAC,CAAA,CAAE,CAAG,CAAA,CAAIC,UACrB,CAAA,IAAI,CAACE,QAAQ,CAACr0X,QAAQ,CAACk0X,WACvB,CAAA,CAAA,MAAM54R,MAAS,CAAA,IAAI,CAACo8B,eAAe,CAACp8B,MAAM,CAC1C,MAAMj/G,CAAIi/G,CAAAA,MAAAA,CAAOqN,QACjB,CAAA,IAAI,CAAC+qB,YAAY,CAAC,CAAE,CAAA,CAAG,CAAIr3I,CAAAA,CAC3B,CAAA,IAAI,CAACq3I,YAAY,CAAC,CAAA,CAAE,CAAGr3I,CACvB,CAAA,IAAI,CAACq3I,YAAY,CAAC,CAAE,CAAA,CAAGp4B,MAAOiO,CAAAA,SAAS,CACvC,IAAI,CAACmqB,YAAY,CAAC,CAAA,CAAE,CAAGp4B,MAAAA,CAAO1hG,UAAU,GAAKsnF,uBAA0B,CAAA,CAAA,CAAI,CAC3E,CAAA,IAAI,CAACyyC,cAAc,CAAC3zH,QAAQ,CAAC,IAAI,CAAC0zH,YAAY,CAAA,CAC9C,KAAK,CAAC9/D,OACR,GAAA,CApCAxjG,WAAYkiC,CAAAA,MAAM,CAAEolI,eAAe,CAAE48P,QAAQ,CAAC,CAC5C,KAAK,CAAChiY,MAAAA,CACN,CAAA,IAAI,CAAColI,eAAe,CAAGA,eAAAA,CACvB7tC,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQhI,qBAAqB15B,GAAG,CAAC,OAASmja,CAAAA,SAAAA,CAAAA,CAC3DlqS,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQ/H,mBAAqB35B,CAAAA,CAAAA,GAAG,CAAC,OAAA,CAASoja,SAC3D,CAAA,CAAA,MAAM5kW,QAAU,IAAI3+D,GAAAA,CACpB,GAAI6ja,QAAAA,CAAUllW,OAAQx+D,CAAAA,GAAG,CAAC,WAAA,CAAa,EACvCy5H,CAAAA,CAAAA,WAAAA,CAAYwB,0BAA0B,CAACv5F,MAAQolI,CAAAA,eAAAA,CAAgBhrB,YAAY,CAAEt9E,OAAAA,CAC7E,CAAA,IAAI,CAACnpB,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAACr5C,MAAQ,CAAA,CAC7Ck4F,UAAY,CAAA,CAAC,UAAU,EAAE8pS,QAAAA,CAAS,CAAC,CACnC3gX,UAAY,CAAA,CACVwlJ,SAAWhzK,CAAAA,iBACb,CACAukG,CAAAA,WAAAA,CAAa,QACbE,CAAAA,aAAAA,CAAe,OACf/0D,CAAAA,eAAAA,CAAiBzG,OACnB,CACA,CAAA,CAAA,IAAI,CAACilW,QAAQ,CAAG/hY,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,QAAA,CACrC,CAAA,IAAI,CAACwhY,WAAW,CAAG,IAAIhyZ,YAAAA,CAAa,CACpC,CAAA,CAAA,IAAI,CAACwxJ,YAAY,CAAG,IAAIxxJ,YAAAA,CAAa,CACrC,CAAA,CAAA,IAAI,CAACyxJ,cAAc,CAAGrhI,MAAO1iC,CAAAA,KAAK,CAAC8iC,OAAO,CAAC,eAAA,EAC7C,CAgBF,CAEA,IAAI6hY,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CrB,CAAC,CAED,IAAIC,aAAAA,CAAgB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoDrB,CAAC,CAEKC,MAAAA,iBAAAA,SAA0BxpN,qBAiB9B,IAAIypN,SAAAA,CAAU1ka,KAAK,CAAE,CACnB,GAAI,IAAI,CAAC2ka,UAAU,GAAK3ka,MAAO,CAC7B,IAAI,CAAC2ka,UAAU,CAAG3ka,KAClB,CAAA,IAAI,CAACi2C,MAAM,CAAG,KAChB,CACF,CACA,IAAIyuX,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UACd,CACA,IAAIC,cAAAA,CAAe5ka,KAAK,CAAE,CACxB,GAAI,IAAI,CAAC6ka,eAAe,GAAK7ka,MAAO,CAClC,IAAI,CAAC6ka,eAAe,CAAG7ka,KACvB,CAAA,IAAI,CAACi2C,MAAM,CAAG,KAChB,CACF,CACA,IAAI2uX,cAAiB,EAAA,CACnB,OAAO,IAAI,CAACC,eACd,CACAlpV,YAAe,EAAA,CACb,IAAI,CAACjoE,MAAM,CAAG,IAAIxB,YAAAA,CAAaoB,OAAOC,UAAU,CAAC,IAAI,CAACmxZ,SAAS,CAAE,IAAI,CAACE,cAAc,CAAA,CAAA,CACpF,MAAME,WAAc,CAAA,IAAI,CAACpxZ,MAAM,CAACpb,MAAM,EAAI,CAAA,CAC1C,MAAMgsa,QAAAA,CAAW,IAAI,CAACS,WAAW,GAAK,IACtC,CAAA,MAAM3lW,QAAU,IAAI3+D,GAAAA,CACpB2+D,OAAQx+D,CAAAA,GAAG,CAAC,gBAAkBkka,CAAAA,WAAAA,CAAAA,CAC9B1lW,QAAQx+D,GAAG,CAAC,qBAAsB,CAAMkka,CAAAA,WAAAA,CAAAA,CACxC,GAAIR,QAAUllW,CAAAA,OAAAA,CAAQx+D,GAAG,CAAC,WAAA,CAAa,GACvC,CAAA,IAAI,CAACq1C,MAAM,CAAGokF,WAAY1+C,CAAAA,YAAY,CAAC,IAAI,CAACr5C,MAAM,CAAE,CAClDk4F,WAAY,CAAC,cAAc,EAAEsqS,WAAY,CAAA,CAAC,EAAER,QAAW,CAAA,UAAA,CAAa,aAAa,CAAC,CAClF3gX,WAAY,CACVwlJ,SAAAA,CAAWhzK,iBACb,CAAA,CACAukG,YAAa,QACbE,CAAAA,aAAAA,CAAe,YACf/0D,eAAiBzG,CAAAA,OACnB,GACF,CACAwkC,OAAAA,EAAU,CACR,GAAI,CAAC,IAAI,CAAC3tD,MAAM,CAAE,CAChB,IAAI,CAAC0lC,YAAY,GACnB,CACA,IAAI,CAACqpV,aAAa,CAACh1X,QAAQ,CAAC,IAAI,CAAC+0X,WAAW,CAAA,CAC5C,IAAI,CAACE,YAAY,CAACj1X,QAAQ,CAAC,IAAI,CAACk1X,UAAU,CAC1C,CAAA,IAAI,CAACzD,YAAY,CAACzxX,QAAQ,CAAC,IAAI,CAACwvX,UAAU,EAC1C,IAAI,CAAC2F,QAAQ,CAACn1X,QAAQ,CAAC,IAAI,CAACt8B,MAAM,CAClC,CAAA,IAAI,CAAC0xZ,aAAa,CAACp1X,QAAQ,CAAC,IAAI,CAACt8B,MAAM,CAACpb,MAAM,EAAI,GAClD,IAAI,CAAC+sa,gBAAgB,CAACr1X,QAAQ,CAAC,IAAI,CAACs1X,cAAc,CAClD,CAAA,IAAI,CAACC,eAAe,CAACv1X,QAAQ,CAAC,IAAI,CAACw1X,aAAa,EAChD,KAAK,CAAC5hU,UACR,CAhEAxjG,WAAAA,CAAYkiC,MAAM,CAAEyiY,WAAW,CAAEG,UAAU,CAAE1F,UAAU,CAAC,CACtD,KAAK,CAACl9X,MAAAA,CAAAA,CAAS,IAAI,CAACgjY,cAAc,CAAG,CAAA,CAAG,IAAI,CAACE,aAAa,CAAG,CAAG,CAAA,IAAI,CAACb,UAAU,CAAG,EAAG,IAAI,CAACE,eAAe,CAAG,CAC5G,CAAA,IAAI,CAACE,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACG,UAAU,CAAGA,UAClB,CAAA,IAAI,CAAC1F,UAAU,CAAGA,WAClB3lS,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqB15B,GAAG,CAAC,WAAA,CAAa2ja,aAC/D1qS,CAAAA,CAAAA,YAAAA,CAAaz/H,GAAG,CAACkoC,MAAAA,CAAQ/H,qBAAqB35B,GAAG,CAAC,YAAa4ja,aAC/D,CAAA,CAAA,KAAM,CAAE5ka,KAAK,CAAE,CAAG0iC,MAClB,CAAA,IAAI,CAAC6iY,QAAQ,CAAGvla,KAAM8iC,CAAAA,OAAO,CAAC,WAAA,CAC9B,CAAA,IAAI,CAAC0iY,aAAa,CAAGxla,KAAAA,CAAM8iC,OAAO,CAAC,aAAA,CACnC,CAAA,IAAI,CAAC2iY,gBAAgB,CAAGzla,KAAAA,CAAM8iC,OAAO,CAAC,gBAAA,CACtC,CAAA,IAAI,CAAC6iY,eAAe,CAAG3la,MAAM8iC,OAAO,CAAC,gBACrC,CAAA,IAAI,CAACsiY,aAAa,CAAGpla,KAAM8iC,CAAAA,OAAO,CAAC,aACnC,CAAA,CAAA,IAAI,CAACuiY,YAAY,CAAGrla,KAAM8iC,CAAAA,OAAO,CAAC,YAAA,CAClC,CAAA,IAAI,CAAC++X,YAAY,CAAG7ha,KAAAA,CAAM8iC,OAAO,CAAC,YAAA,EACpC,CAkDF,CAEA,MAAM+iY,sBAAsBxiU,UAY1BzhE,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACu7X,mBAAmB,EACxB,CAAA,IAAI,CAAC2I,OAAO,CAAG,IACf,CAAA,IAAI,CAACC,OAAO,CAAG,IACf,CAAA,IAAI,CAACC,QAAQ,CAAG,IAAA,CAChB,IAAI,CAAClkK,SAAS,CAAC,IAAI,CAACmkK,KAAK,CAAA,CACzB,IAAI,CAACnkK,SAAS,CAAC,IAAI,CAACokK,KAAK,CACzB,CAAA,IAAI,CAACpkK,SAAS,CAAC,IAAI,CAACqkK,MAAM,CAC1B,CAAA,IAAI,CAACF,KAAK,CAAG,IACb,CAAA,IAAI,CAACC,KAAK,CAAG,IACb,CAAA,IAAI,CAACC,MAAM,CAAG,KAChB,CACAhJ,qBAAsB,CACpB,IAAI,IAAI1ka,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACssG,YAAY,CAACrsG,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC/C,IAAI,CAACssG,YAAY,CAACtsG,CAAAA,CAAE,CAACmpC,OAAO,GAC9B,CACA,IAAI,CAACmjE,YAAY,CAACrsG,MAAM,CAAG,EAC7B,CACAopQ,SAAUp4M,CAAAA,EAAE,CAAE,CACZ,GAAIA,GAAI,CACNA,EAAAA,CAAGvL,qBAAqB,EACxBuL,CAAAA,EAAAA,CAAG9nB,OAAO,GACZ,CACF,CACAwkY,YAAa1jY,CAAAA,MAAM,CAAEolI,eAAe,CAAEp5F,aAAa,CAAEg2V,QAAQ,CAAE,CAC7D,MAAMnma,MAASmma,CAAAA,QAAAA,CAAWzwY,gBAAkBD,cAC5C,CAAA,IAAI,CAACiyY,KAAK,CAAG,IAAI,CAAC3c,kBAAkB,CAAC,YAAA,CAAc/qZ,OACnD,CAAA,IAAI,CAACqha,UAAU,CAAG,IAAI,CAACqG,KAAK,CAAC3nX,WAAW,CACxC,MAAMwnX,OAAAA,CAAU,IAAIzB,aAAc3hY,CAAAA,MAAAA,CAAQolI,eAAiB48P,CAAAA,QAAAA,CAAAA,CAC3DoB,QAAQjtX,IAAI,CAAC,IAAI,CAACotX,KAAK,CAAE,CACvBniU,YAAAA,CAAcp1B,aAChB,CAAA,CAAA,CACAo3V,QAAQ1hU,aAAa,CAACt2F,MAAMmB,KAAK,CAAA,CACjC,OAAO62Z,OACT,CACAO,aAAa3jY,MAAM,CAAEgsC,aAAa,CAAE3zD,KAAK,CAAE,CACzC,IAAI,CAACmrZ,KAAK,CAAG,IAAI,CAAC5c,kBAAkB,CAAC,eAAA,CAAiB56U,cAAcnwE,MAAM,CAAA,CAC1E,MAAMwna,OAAU,CAAA,IAAIzJ,qBAAqB55X,MAAQgsC,CAAAA,aAAAA,CAAe,CAC9DmuV,SAAW,CAAA,IAAA,CACXJ,mBAAoB,IAAI,CAACmD,UAAU,CACnC9C,qBAAAA,CAAuB,GACzB,CAAA,CAAA,CACAiJ,QAAQltX,IAAI,CAAC,IAAI,CAACqtX,KAAK,CAAE,CACvBpiU,YAAAA,CAAcp1B,cACd60B,MAAQxoF,CAAAA,KAAAA,CACR0oF,OAAQ1oF,KACV,CAAA,CAAA,CACAgrZ,QAAQ3hU,aAAa,CAACt2F,MAAMmB,KAAK,CAAA,CACjC,OAAO82Z,OACT,CACAO,aAAc5jY,CAAAA,MAAM,CAAEyiY,WAAW,CAAET,QAAQ,CAAE3pZ,KAAK,CAAE,CAClD,MAAMuqZ,WAAa,IAAI,CAACY,KAAK,EAAE5nX,WAC/B,CAAA,IAAI,CAAC6nX,MAAM,CAAG,IAAI,CAAC7c,kBAAkB,CAAC,gBAAkB6b,CAAAA,WAAAA,CAAY5ma,MAAM,CAC1E,CAAA,IAAI,CAACwja,WAAW,CAAG,IAAI,CAACoE,MAAM,CAAC7nX,WAAW,CAC1C,MAAM0nX,QAAAA,CAAW,IAAInB,iBAAAA,CAAkBniY,OAAQgiY,QAAWS,CAAAA,WAAAA,CAAc,KAAMG,UAAY,CAAA,IAAI,CAAC1F,UAAU,CAAA,CACzGoG,SAASntX,IAAI,CAAC,IAAI,CAACstX,MAAM,CAAE,CACzBriU,YAAAA,CAAcqhU,YACd5hU,MAAQxoF,CAAAA,KAAAA,CACR0oF,MAAQ1oF,CAAAA,KACV,GACAirZ,QAAS5hU,CAAAA,aAAa,CAACt2F,KAAMmB,CAAAA,KAAK,EAClC,OAAO+2Z,QACT,CACAn7W,aAAc9uD,CAAAA,IAAI,CAAEwC,MAAM,CAAE,CAC1B,OAAO,IAAI6lC,QAAQ,IAAI,CAAC1B,MAAM,CAAE,CAC9B3mC,IAAMA,CAAAA,IAAAA,CACNqiB,MAAO,CACPC,CAAAA,MAAAA,CAAQ,EACR9f,MAAQA,CAAAA,MAAAA,CACR0lC,OAAS,CAAA,KAAA,CACTkC,UAAWxW,aACX2W,CAAAA,SAAAA,CAAW3W,cACX6W,QAAU5Z,CAAAA,qBAAAA,CACV8Z,SAAU9Z,qBACZ,CAAA,CACF,CACA08X,kBAAAA,CAAmBvtZ,IAAI,CAAEwC,MAAM,CAAE,CAC/B,OAAO,IAAIy/C,YAAa,CAAA,CACtBM,YAAa,IAAI,CAACuM,aAAa,CAAC9uD,IAAAA,CAAMwC,QACtCklC,KAAO,CAAA,KAAA,CACPkZ,QAAS,KACX,CAAA,CACF,CACAknD,WAAAA,EAAc,CACZ,KAAK,CAACA,aACN,CAAA,IAAI,CAACiiU,OAAO,CAACtB,aAAa,CAAG,IAAI,CAACA,aAClC,CAAA,IAAI,CAACsB,OAAO,CAACvB,UAAU,CAAG,IAAI,CAACA,UAC/B,CAAA,IAAI,CAACyB,QAAQ,CAACN,cAAc,CAAG,IAAI,CAACa,UAAU,CAC9C,IAAI,CAACP,QAAQ,CAACJ,aAAa,CAAG,IAAI,CAACW,UAAU,EAAI,IAAI,CAACC,WAAW,CAAG,CAAI,CAAA,EAAE,CAC1E,CAAA,IAAI,CAACR,QAAQ,CAAClB,SAAS,CAAG,IAAI,CAACA,SAAS,CACxC,IAAI,CAACkB,QAAQ,CAAChB,cAAc,CAAG,IAAI,CAACA,eAAc,CArGpDxka,WAAAA,CAAYkiC,MAAM,CAAEolI,eAAe,CAAEw5P,YAAY,CAAEmF,gBAAgB,CAAED,WAAW,CAAE9B,QAAQ,CAAC,CACzF,KAAK,CAAChiY,MAAS,CAAA,CAAA,IAAI,CAAC8hY,aAAa,CAAG,IAAK,IAAI,CAACD,UAAU,CAAG,EAAA,CAAI,IAAI,CAACgC,UAAU,CAAG,CAAG,CAAA,IAAI,CAACzB,SAAS,CAAG,CAAG,CAAA,IAAI,CAACE,cAAc,CAAG,EAAG,IAAI,CAACwB,WAAW,CAAG,IAAA,CAAM,IAAI,CAAC5G,UAAU,CAAG,IAAM,CAAA,IAAI,CAACmC,WAAW,CAAG,IAAM,CAAA,IAAI,CAAC+D,OAAO,CAAG,KAAM,IAAI,CAACC,OAAO,CAAG,IAAA,CAAM,IAAI,CAACC,QAAQ,CAAG,IACrQ,CAAA,IAAI,CAACQ,WAAW,CAAGA,WACnB,CAAA,IAAI,CAACV,OAAO,CAAG,IAAI,CAACM,YAAY,CAAC1jY,MAAQolI,CAAAA,eAAAA,CAAiBw5P,aAAcoD,QACxE,CAAA,CAAA,IAAI,CAAC3/T,YAAY,CAACxrG,IAAI,CAAC,IAAI,CAACusa,OAAO,CAAA,CACnC,MAAMp3V,aAAAA,CAAgB83V,YAAclF,YAAemF,CAAAA,gBACnD,CAAA,IAAI,CAACV,OAAO,CAAG,IAAI,CAACM,YAAY,CAAC3jY,OAAQgsC,aAAe,CAAA,EAAA,CAAA,CACxD,IAAI,CAACq2B,YAAY,CAACxrG,IAAI,CAAC,IAAI,CAACwsa,OAAO,CACnC,CAAA,IAAI,CAACC,QAAQ,CAAG,IAAI,CAACM,aAAa,CAAC5jY,MAAAA,CAAQ+jY,iBAAkB/B,QAAU8B,CAAAA,WAAAA,CAAc,EAAI,EACzF,CAAA,CAAA,IAAI,CAACzhU,YAAY,CAACxrG,IAAI,CAAC,IAAI,CAACysa,QAAQ,EACtC,CA6FF,CAEA,MAAMU,iBAAoB,CAAA,EAAE,CAC5B,MAAMC,kBAAAA,CAAqB,gBAC3B,CAAMC,MAAAA,iBAAAA,SAA0BvjU,WAQ9BzhE,OAAU,EAAA,CACR,KAAK,CAACA,OAAAA,EACN,CAAA,IAAI,CAACsV,YAAY,EAAEtV,SACnB,CAAA,IAAI,CAACsV,YAAY,CAAG,IACpB,CAAA,IAAI,CAAC2vX,kBAAkB,EAAEjlY,SACzB,CAAA,IAAI,CAACilY,kBAAkB,CAAG,IAC1B,CAAA,IAAI,CAAC9pQ,cAAc,CAAC33J,OAAO,CAAEohK,KAC3BA,EAAGx7H,CAAAA,oBAAoB,CAACpJ,OAAO,EAAA,CAC/B4kI,GAAG5kI,OAAO,GACZ,EACA,CAAA,IAAI,CAACm7H,cAAc,CAACrkK,MAAM,CAAG,EAC/B,CACAoua,iBAAAA,CAAkB58Z,OAAO,CAAE,CACzB,KAAM,CAAEw4B,MAAM,CAAE,CAAG,IAAI,CACvB,IAAI,CAACqkY,iBAAiB,CAAGrkY,OAAOqT,sBAAsB,CAAGpkB,gBAAmBR,CAAAA,iBAC5E,CAAA,IAAI,CAAC01Y,kBAAkB,CAAG,IAAIziY,QAAQ1B,MAAQ,CAAA,CAC5C3mC,IAAM,CAAA,yBAAA,CACNqiB,MAAO,CACPC,CAAAA,MAAAA,CAAQ,EACR9f,MAAQ,CAAA,IAAI,CAACwoa,iBAAiB,CAC9B9iY,OAAS,CAAA,KAAA,CACTkC,UAAWzW,cACX4W,CAAAA,SAAAA,CAAW5W,eACX8W,QAAU5Z,CAAAA,qBAAAA,CACV8Z,SAAU9Z,qBACZ,CAAA,CAAA,CACA,MAAMsqB,YAAe,CAAA,IAAI8G,aAAa,CACpCjiD,IAAAA,CAAM,YACNuiD,WAAa,CAAA,IAAI,CAACuoX,kBAAkB,CACpCpjY,KAAO,CAAA,IAAA,CACP6X,QAAS,CACX,CAAA,CACA,CAAA,IAAI,CAACowF,MAAM,CAACoR,YAAY,CAAC5gB,mBAAmB,CAAG,KAC/C,IAAI,CAACrjF,IAAI,CAAC3B,YAAAA,CAAchtC,SAC1B,CACA+5F,KAAAA,EAAQ,CACN,IAAI,CAACvhE,MAAM,CAAC1iC,KAAK,CAAC8iC,OAAO,CAAC6jY,kBAAoBv2X,CAAAA,CAAAA,QAAQ,CAAC,IAAI,CAACy2X,kBAAkB,EAChF,CACA7iU,SAAU,CACR,KAAM,CAAEm3C,QAAQ,CAAEhe,KAAK,CAAEjmF,YAAY,CAAE,CAAG,IAAI,CAC9C,MAAMw0F,OAAS,IAAI,CAACA,MAAM,CAACA,MAAM,CACjC,MAAMtO,MAAAA,CAASD,MAAMC,MAAM,CAAC+8B,SAAS,CACrC,MAAMggB,eAAkBh9C,CAAAA,KAAAA,CAAMC,MAAM,CAAC+8C,eAAe,CACpD,MAAM5O,aAAAA,CAAgBpuC,MAAMC,MAAM,CAACkuC,YAAY,CAC/C,IAAI,IAAI7yK,CAAI,CAAA,CAAA,CAAGA,EAAI2kI,MAAO1kI,CAAAA,MAAM,CAAED,CAAI,EAAA,CAAA,CACpC,MAAM+kI,KAAAA,CAAQJ,MAAM,CAAC3kI,CAAAA,CAAE,CACvB,GAAI+kI,KAAAA,CAAM/6F,EAAE,GAAKorF,aAAAA,CAAe,CAC9B,KACF,CACA,GAAI2P,KAAMlyH,CAAAA,OAAO,EAAI6uK,eAAe,CAAC1hL,EAAE,CAAE,CACvC,GAAI+kI,KAAAA,CAAMs6C,UAAU,CAAC/2K,GAAG,CAAC2qI,MAAS,CAAA,CAAA,CAChC,MAAMs7B,eAAkBxpC,CAAAA,KAAAA,CAAMgrC,kBAAkB,CAAC98B,MAAAA,CAAAA,CACjD,MAAM1N,aAAgButC,CAAAA,aAAa,CAAC9yK,CAAE,CAAA,CAAGuuK,gBAAgB/8B,WAAW,CAAG+8B,eAAgBC,CAAAA,MAAM,CAC7F,IAAI,IAAIjoF,EAAI,CAAGA,CAAAA,CAAAA,CAAIg/C,cAActlI,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC3C,MAAMq+C,YAAeW,CAAAA,aAAa,CAACh/C,CAAE,CAAA,CACrC,GAAIq+C,YAAa/B,CAAAA,QAAQ,EAAEu4B,UAAAA,CAAY,CACrC6yQ,iBAAkBnta,CAAAA,IAAI,CAAC8jI,YACzB,EAAA,CACF,CACA8d,QAASixB,CAAAA,kBAAkB,CAAC1gC,MAAQx0F,CAAAA,YAAAA,CAAc,KAAM32C,SAAW20H,CAAAA,cAAAA,CAAgB,IAAI,CAAC6nC,cAAc,CAAE,CACtG/+B,aAAAA,CAAe0oS,iBACjB,CAAA,CACAA,CAAAA,iBAAkBhua,CAAAA,MAAM,CAAG,EAC7B,CACF,CACF,CACF,CACAmrG,aAAc,CACZ,KAAK,CAACA,WACN,EAAA,CAAA,KAAM,CAAE6nC,MAAM,CAAE,CAAG,IAAI,CACvB,IAAI,CAACrnC,aAAa,CAACqnC,MAAAA,CAAO6M,gBAAgB,CAAG,CAAA,CAAIh4I,WACjD,IAAIsrD,UAAAA,CACJ,GAAI6/E,MAAO6M,CAAAA,gBAAgB,CAAE,CAC3B,MAAMO,QAAUpN,MAAOoN,CAAAA,OAAO,CAAGv2H,MAAOw4T,CAAAA,SAAS,CACjDlvR,UAAAA,CAAa,IAAI,CAACm7W,qBAAqB,CACvC,GAAI,IAAI,CAACD,iBAAiB,GAAKp1Y,iBAAkB,CAC/Ck6B,UAAAA,CAAW9zD,CAAC,CAAG+gJ,QACjB,MAAO,CACL1lI,YAAAA,CAAaI,WAAW,CAACslI,OAAAA,CAASjtF,UACpC,EAAA,CACF,CACA,IAAI,CAACu4C,aAAa,CAACv4C,UAAAA,EACrB,CAzFArrD,WAAYkiC,CAAAA,MAAM,CAAEy6F,KAAK,CAAEge,QAAQ,CAAEzP,MAAM,CAAExhI,OAAO,CAAC,CACnD,KAAK,CAACw4B,MAAS,CAAA,CAAA,IAAI,CAACq6H,cAAc,CAAG,EAAE,CAAE,IAAI,CAACiqQ,qBAAqB,CAAG,IAAIl5Z,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CACzF,CAAA,IAAI,CAACqvH,KAAK,CAAGA,KACb,CAAA,IAAI,CAACge,QAAQ,CAAGA,QAChB,CAAA,IAAI,CAACzP,MAAM,CAAGA,OACd,IAAI,CAACo7R,iBAAiB,CAAC58Z,OAAAA,EACzB,CAoFF,CAEA,IAAI+8Z,qBAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwC5B,CAAC,CAED,IAAIC,oBAAAA,CAAuB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0C5B,CAEA,OAAMC,wBAAiC9rN,SAAAA,oBAAAA,CAwBrCr3G,SAAU,CACR,IAAI,CAACojU,YAAY,CAACh3X,QAAQ,CAAC,CAAA,CAAA,CAC3B,IAAI,CAACosX,eAAe,CAACpsX,QAAQ,CAAC,IAAI,CAACs+B,aAAa,CAAA,CAChD,KAAM,CAAEtwD,KAAK,CAAEC,MAAM,CAAE,CAAG,IAAI,CAACqwD,aAC/B,CAAA,IAAI,CAACiuV,wBAAwB,CAAC,EAAE,CAAG,CAAA,CAAMv+Y,KACzC,CAAA,IAAI,CAACu+Y,wBAAwB,CAAC,CAAA,CAAE,CAAG,CAAMt+Y,CAAAA,MAAAA,CACzC,IAAI,CAACu+Y,qBAAqB,CAACxsX,QAAQ,CAAC,IAAI,CAACusX,wBAAwB,EACjE,KAAK,CAAC34T,UACR,CA/BAxjG,WAAAA,CAAYkiC,MAAM,CAAEgsC,aAAa,CAAEo5F,eAAe,CAAEglK,UAAU,CAAC,CAC7D,KAAK,CAACpqS,MACN,CAAA,CAAA,IAAI,CAACgsC,aAAa,CAAGA,aAAAA,CACrBurD,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAQhI,CAAAA,mBAAAA,CAAAA,CAAqB15B,GAAG,CAAC,kBAAA,CAAoBima,sBACtEhtS,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQ/H,mBAAqB35B,CAAAA,CAAAA,GAAG,CAAC,kBAAoBkma,CAAAA,oBAAAA,CAAAA,CACtE,MAAM1nW,OAAU,CAAA,IAAI3+D,IACpB,GAAIisU,UAAAA,CAAYttQ,QAAQx+D,GAAG,CAAC,aAAc,EAC1Cy5H,CAAAA,CAAAA,WAAAA,CAAYwB,0BAA0B,CAACv5F,MAAAA,CAAQolI,gBAAgBhrB,YAAY,CAAEt9E,OAC7E,CAAA,CAAA,IAAI,CAACnpB,MAAM,CAAGokF,WAAAA,CAAY1+C,YAAY,CAACr5C,MAAAA,CAAQ,CAC7Ck4F,UAAY,CAAA,CAAC,UAAU,EAAEkyM,UAAa,CAAA,YAAA,CAAe,WAAW,UAAU,CAAC,CAC3E/oR,UAAY,CAAA,CACVwlJ,UAAWhzK,iBACb,CAAA,CACAukG,WAAa,CAAA,QAAA,CACbE,aAAe,CAAA,kBAAA,CACf/0D,gBAAiBzG,OACnB,CAAA,CAAA,CACA,MAAMx/D,KAAQ,CAAA,IAAI,CAAC0iC,MAAM,CAAC1iC,KAC1B,CAAA,IAAI,CAACw8Z,eAAe,CAAGx8Z,MAAM8iC,OAAO,CAAC,gBACrC,CAAA,IAAI,CAAC85X,qBAAqB,CAAG58Z,KAAAA,CAAM8iC,OAAO,CAAC,qBAAA,CAC3C,CAAA,IAAI,CAAC65X,wBAAwB,CAAG,IAAIrqZ,YAAa,CAAA,CAAA,CACjD,CAAA,IAAI,CAAC80Z,YAAY,CAAGpna,MAAM8iC,OAAO,CAAC,cACpC,CAUF,CAEA,IAAIukY,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgHlB,CAAC,CAED,IAAIC,UAAAA,CAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHlB,CAEA,OAAMC,cAAuBlsN,SAAAA,oBAAAA,CA2C3Bz5K,SAAU,CACR,IAAI,CAACsV,YAAY,EAAEiH,qBAAAA,EACnB,CAAA,IAAI,CAACjH,YAAY,EAAEtV,OAAAA,EACnB,CAAA,IAAI,CAACsV,YAAY,CAAG,IACpB,CAAA,GAAI,IAAI,CAAC8tD,WAAW,CAACtsG,MAAM,CAAG,EAAG,CAC/B,MAAMyta,MAAS,CAAA,IAAI,CAACnhU,WAAW,CAAC,CAAE,CAAA,CAAC9tD,YAAY,CAC/CivX,MAAAA,EAAQhoX,wBACRgoX,MAAQvkY,EAAAA,OAAAA,GACV,CACA,IAAI,CAACojE,WAAW,CAAC5/F,OAAO,CAAC,IAAQq2H,EAAAA,IAAAA,CAAK75F,OAAO,EAC7C,CAAA,CAAA,IAAI,CAACojE,WAAW,CAACtsG,MAAM,CAAG,CAAA,CAC1B,KAAK,CAACkpC,OAAAA,GACR,CACA,IAAI7mB,KAAAA,CAAM3a,KAAK,CAAE,CACf,IAAI,CAACsgJ,MAAM,CAAGtgJ,KACd,CAAA,IAAI,CAACmjG,MAAM,CAAGnjG,KACd,CAAA,IAAI,CAACqjG,MAAM,CAAGrjG,MAChB,CACA,IAAI2a,KAAAA,EAAQ,CACV,OAAO,IAAI,CAAC2lI,MAAM,CAEpB4oQ,mBAAmBvtZ,IAAI,CAAE,CACvB,OAAO,IAAIiiD,aAAa,CACtBva,KAAAA,CAAO,KACP6a,CAAAA,WAAAA,CAAa,IAAIla,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CACpC3mC,IAAAA,CAAMA,KACNqiB,KAAO,CAAA,CAAA,CACPC,MAAQ,CAAA,CAAA,CACR9f,MAAQy1B,CAAAA,cAAAA,CACRiQ,QAAS,KACTkC,CAAAA,SAAAA,CAAWzW,eACX4W,SAAW5W,CAAAA,cAAAA,CACX8W,SAAU5Z,qBACV8Z,CAAAA,QAAAA,CAAU9Z,qBACZ,CAAA,CACF,CACF,CAAA,CACAo3E,SAAU,CACR,KAAM,CAAEthE,MAAM,CAAEgsC,aAAa,CAAElkB,WAAW,CAAEg9W,QAAQ,CAAEzsZ,KAAK,CAAE,CAAG,IAAI,CACpE,KAAM,CAAEqD,KAAK,CAAEC,MAAM,CAAE,CAAG,IAAI,CAAC64B,YAAY,CAACoH,WAAW,CACvD,MAAMt+C,KAAAA,CAAQ0iC,OAAO1iC,KAAK,CAC1BA,KAAM8iC,CAAAA,OAAO,CAAC,SAAA,CAAA,CAAWsN,QAAQ,CAAChyB,KAAAA,CAAQC,QAC1Cre,KAAM8iC,CAAAA,OAAO,CAAC,gBAAkBsN,CAAAA,CAAAA,QAAQ,CAAC,CACvC,CAAMhyB,CAAAA,KAAAA,CACN,EAAMC,MACP,CAAA,CAAA,CACDre,KAAM8iC,CAAAA,OAAO,CAAC,cAAA,CAAA,CAAgBsN,QAAQ,CAAC,CACrCoa,WACA,CAAA,CAAA,CAAMA,WACP,CAAA,CAAA,CACD,MAAMi9W,WAAczva,CAAAA,IAAAA,CAAKyc,GAAG,CAAC+yZ,QAAAA,CAAWxva,KAAKgU,EAAE,CAAG,GAClDhM,CAAAA,CAAAA,KAAAA,CAAM8iC,OAAO,CAAC,+BAA+BsN,QAAQ,CAACq3X,YAAcA,WACpE,CAAA,CAAA,MAAMC,YAAc,EACpB,CAAA,MAAMn1Z,IAAO,CAAA,CAAA,EAAOi4C,WAAAA,CAAc,EAAE,CAAKk9W,CAAAA,WAAAA,CAAc,EAAM,KAC7D,CAAA,MAAMzzZ,OAAS,IAAI,CAACA,MAAM,CAAG8G,KAC7B,CAAA,MAAM6sI,KAAO,IACb,CAAA,MAAM+/Q,KAAO,EAAM1zZ,CAAAA,MAAAA,CACnB,MAAMkmG,SAAY,CAAA,CAAA,EAAKwtT,IAAAA,CAAO,CAAM,CAAA,KAAI,EAAK,IAAI,CAACxtT,SAAS,CAAG3vD,WAAAA,CAC9D,MAAMo9W,eAAkB,CAAA,EAAA,CAAMl5V,aAAcrwD,CAAAA,MAAM,CAClDre,KAAAA,CAAM8iC,OAAO,CAAC,cAAA,CAAA,CAAgBsN,QAAQ,CAACs3X,WAAAA,CAAAA,CACvC1na,MAAM8iC,OAAO,CAAC,iBAAmBsN,CAAAA,CAAAA,QAAQ,CAAC,CACxCp4C,KAAKuc,GAAG,CAAChC,MACTva,IAAKyc,CAAAA,GAAG,CAAClC,IACV,CAAA,CAAA,CAAA,CACDvS,KAAM8iC,CAAAA,OAAO,CAAC,WAAA,CAAA,CAAasN,QAAQ,CAAC,CAAA,CAAA,CACpCpwC,MAAM8iC,OAAO,CAAC,qBAAqBsN,QAAQ,CAAC,CAAOn8B,EAAAA,MAASA,CAAAA,MAAK,GACjEjU,KAAM8iC,CAAAA,OAAO,CAAC,OAASsN,CAAAA,CAAAA,QAAQ,CAACw3G,IAChC5nJ,CAAAA,CAAAA,KAAAA,CAAM8iC,OAAO,CAAC,QAAUsN,CAAAA,CAAAA,QAAQ,CAACu3X,IAAOA,CAAAA,IAAAA,CAAAA,CACxC3na,MAAM8iC,OAAO,CAAC,cAAcsN,QAAQ,CAAC+pE,SACrCn6G,CAAAA,CAAAA,KAAAA,CAAM8iC,OAAO,CAAC,UAAUsN,QAAQ,CAAC,IAAI,CAACy3X,KAAK,EAC3C7na,KAAM8iC,CAAAA,OAAO,CAAC,wBAAA,CAAA,CAA0BsN,QAAQ,CAACw3X,gBAAkB3zZ,MACnEjU,CAAAA,CAAAA,KAAAA,CAAM8iC,OAAO,CAAC,YAAA,CAAA,CAAcsN,QAAQ,CAAC,IAAI,CAACohJ,SAAS,CAAG,IAAI,CAACs2O,UAAU,CAAC1na,KAAK,EAAK,CAAA,CAAA,CAAA,CAChF,KAAK,CAAC4jG,OAAAA,GACR,CACAC,KAAAA,EAAQ,CACN,IAAI,CAAC+9T,aAAa,CAAC5xX,QAAQ,CAAC,IAAI,CAAC0vX,WAAW,CAAA,CAC5C,MAAMxF,UAAAA,CAAa,IAAI,CAAC5rV,aAAa,CACrC,IAAI,CAACq5V,oBAAoB,CAAC33X,QAAQ,CAAC,CACjC,CAAMkqX,CAAAA,UAAAA,CAAWl8Y,KAAK,CACtB,EAAMk8Y,UAAWj8Y,CAAAA,MAAM,CACxB,EACH,CA3HA7d,WAAAA,CAAYkiC,MAAM,CAAEgsC,aAAa,CAAEo5F,eAAe,CAAEkgQ,WAAW,CAAC,CAC9D,KAAK,CAACtlY,MAAS,CAAA,CAAA,IAAI,CAACzuB,MAAM,CAAG,CAAG,CAAA,IAAI,CAACkmG,SAAS,CAAG,CAAG,CAAA,IAAI,CAAC0tT,KAAK,CAAG,EAAG,IAAI,CAACr9W,WAAW,CAAG,EAAI,CAAA,IAAI,CAACg9W,QAAQ,CAAG,EAAG,IAAI,CAACh2O,SAAS,CAAG,KAAA,CAAO,IAAI,CAAC9wC,MAAM,CAAG,EAAG,IAAI,CAAConR,UAAU,CAAG,IAAIl7Q,UAAU,EACvL,CAAA,CAAA,IAAI,CAACl+E,aAAa,CAAGA,aACrB,CAAA,IAAI,CAACo5F,eAAe,CAAGA,gBACvB7tC,YAAaz/H,CAAAA,GAAG,CAACkoC,MAAAA,CAAQhI,mBAAqB15B,CAAAA,CAAAA,GAAG,CAAC,QAAUqma,CAAAA,UAAAA,CAAAA,CAC5DptS,aAAaz/H,GAAG,CAACkoC,OAAQ/H,mBAAqB35B,CAAAA,CAAAA,GAAG,CAAC,QAAA,CAAUsma,UAC5D,CAAA,CAAA,MAAM9nW,QAAU,IAAI3+D,GAAAA,CACpB45H,YAAYwB,0BAA0B,CAACv5F,OAAQolI,eAAgBhrB,CAAAA,YAAY,CAAEt9E,OAAAA,CAC7E,CAAA,IAAI,CAACnpB,MAAM,CAAGokF,YAAY1+C,YAAY,CAACr5C,OAAQ,CAC7Ck4F,UAAAA,CAAY,YACZ72E,CAAAA,UAAAA,CAAY,CACVwlJ,SAAAA,CAAWhzK,iBACb,CACAukG,CAAAA,WAAAA,CAAa,SACbE,aAAe,CAAA,QAAA,CACf/0D,gBAAiBzG,OACnB,CAAA,CAAA,CACA,MAAM9V,EAAAA,CAAK,IAAI,CAAC4/V,kBAAkB,CAAC,kBAAA,CACnC,CAAA,IAAI,CAACwW,WAAW,CAAGp2W,EAAAA,CAAGpL,WAAW,CACjC,IAAI,CAACzF,IAAI,CAAC6Q,EAAAA,CAAI,CACZo6C,YAAc,CAAA,IAAI,CAACp1B,aACrB,CACA,CAAA,CAAA,MAAMijB,UAAa,CAAA,IAAI7jF,MAAM,CAAG,CAAA,CAAA,CAAG,EAAG,CACtC,CAAA,CAAA,IAAI,CAACs2F,aAAa,CAACzS,UACnB,CAAA,CAAA,GAAIq2U,WAAa,CAAA,CACf,MAAMC,MAAS,CAAA,IAAI,CAAC3e,kBAAkB,CAAC,mBACvC,MAAM4e,kBAAAA,CAAqB,IAAIf,wBAAAA,CAAyBzkY,MAAQgnB,CAAAA,EAAAA,CAAGpL,WAAW,CAAEwpH,eAAAA,CAAiB,MACjGogQ,kBAAmBrvX,CAAAA,IAAI,CAACovX,MAAQ,CAAA,CAC9BnkU,YAAcp6C,CAAAA,EAAAA,CAAGpL,WACnB,GACA4pX,kBAAmB9jU,CAAAA,aAAa,CAACzS,UACjC,CAAA,CAAA,MAAMw2U,iBAAmB,IAAIhB,wBAAAA,CAAyBzkY,MAAQulY,CAAAA,MAAAA,CAAO3pX,WAAW,CAAEwpH,gBAAiB,KACnGqgQ,CAAAA,CAAAA,gBAAAA,CAAiBtvX,IAAI,CAAC6Q,EAAI,CAAA,CACxBo6C,aAAcp6C,EAAGpL,CAAAA,WAAW,CAC9B,CAAA,CACA6pX,gBAAiB/jU,CAAAA,aAAa,CAACzS,UAC/B,CAAA,CAAA,IAAI,CAACqT,WAAW,CAACzrG,IAAI,CAAC2ua,kBAAAA,CAAAA,CACtB,IAAI,CAACljU,WAAW,CAACzrG,IAAI,CAAC4ua,gBAAAA,EACxB,CACA,IAAI,CAACnG,aAAa,CAAGt/X,MAAAA,CAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,cAC1C,CAAA,IAAI,CAACilY,oBAAoB,CAAGrlY,OAAO1iC,KAAK,CAAC8iC,OAAO,CAAC,oBACnD,EAAA,CAmFF,CAEA,MAAMslY,kBAAAA,CACJ5na,aAAa,CACX,IAAI,CAACm8C,OAAO,CAAG,KACf,CAAA,IAAI,CAACrB,OAAO,CAAG,CACf,CAAA,IAAI,CAAC+sX,aAAa,CAAG,KACrB,CAAA,IAAI,CAACC,eAAe,CAAGx6S,cACvB,CAAA,IAAI,CAACy6S,0BAA0B,CAAG,KAClC,CAAA,IAAI,CAACC,gBAAgB,CAAGz6S,iBACxB,CAAA,IAAI,CAAC06S,2BAA2B,CAAG,IACnC,CAAA,IAAI,CAACzI,UAAU,CAAG,KAClB,CAAA,IAAI,CAAC0I,YAAY,CAAG,KACpB,CAAA,IAAI,CAACC,QAAQ,CAAG1M,aAChB,CAAA,IAAI,CAAC2M,eAAe,CAAG,IACvB,CAAA,IAAI,CAACC,cAAc,CAAG,KACtB,CAAA,IAAI,CAACC,UAAU,CAAG,KAClB,CAAA,IAAI,CAACC,WAAW,CAAG,KACnB,CAAA,IAAI,CAACC,cAAc,CAAG,KACxB,CACF,CACA,MAAMC,gBAAkB,IAAIb,kBAC5B,CAAMc,MAAAA,qBAAAA,SAA8B7lU,UASlCzhE,CAAAA,OAAAA,EAAU,CACR,IAAI,CAACx7B,KAAK,GACZ,CACAA,OAAQ,CACN,IAAI,CAACk7Z,YAAY,CAAG,IACpB,CAAA,IAAI,CAACmF,gBAAgB,CAAG,IAAA,CACxB,GAAI,IAAI,CAAC/8W,EAAE,CAAE,CACX,IAAI,CAACA,EAAE,CAACvL,qBAAqB,EAC7B,CAAA,IAAI,CAACuL,EAAE,CAAC9nB,OAAO,EACf,CAAA,IAAI,CAAC8nB,EAAE,CAAG,KACZ,CACA,GAAI,IAAI,CAACy/W,MAAM,CAAE,CACf,IAAI,CAACA,MAAM,CAAChrX,qBAAqB,EACjC,CAAA,IAAI,CAACgrX,MAAM,CAACvnY,OAAO,EACnB,CAAA,IAAI,CAACunY,MAAM,CAAG,KAChB,CACA,IAAI,CAACpkU,YAAY,CAAC3/F,OAAO,CAAC,IAACq2H,EAAOA,IAAK75F,CAAAA,OAAO,GAC9C,CAAA,IAAI,CAACmjE,YAAY,CAACrsG,MAAM,CAAG,CAC3B,CAAA,IAAI,CAAC0wa,OAAO,CAAG,IACf,CAAA,IAAI,CAACC,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAC5B,CAAA,IAAI,CAAC50P,aAAa,CAAG,IACrB,CAAA,IAAI,CAAC60P,WAAW,CAAG,IACnB,CAAA,IAAI,CAACC,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACC,OAAO,CAAG,IACf,CAAA,IAAI,CAACC,SAAS,CAAG,IACjB,CAAA,IAAI,CAACC,aAAa,CAAG,IACrB,CAAA,IAAI,CAACC,OAAO,CAAG,KACjB,CACAC,eAAgB5/Z,CAAAA,OAAO,CAAE,CACvBA,OAAAA,CAAU5P,OAAOskH,MAAM,CAAC,EAAIqqT,CAAAA,eAAAA,CAAiB/+Z,OAC7C,CAAA,CAAA,GAAIA,OAAQ81Z,CAAAA,UAAU,EAAI91Z,OAAQy+Z,CAAAA,QAAQ,GAAK1M,aAAiB/xZ,EAAAA,OAAAA,CAAQ4+Z,UAAU,CAAE,CAClF5+Z,OAAQ2+Z,CAAAA,cAAc,CAAG,KAC3B,CACA,OAAO3+Z,OACT,CACA,IAAI6/Z,iBAAAA,CAAkB3pa,KAAK,CAAE,CAC3B,IAAI,CAAC4pa,kBAAkB,CAAG5pa,MAC1B,GAAI,IAAI,CAACipa,SAAS,CAAE,CAClB,IAAI,CAACA,SAAS,CAAC9lU,MAAM,CAAGnjG,KACxB,CAAA,IAAI,CAACipa,SAAS,CAAC5lU,MAAM,CAAGrjG,MAC1B,CACF,CACA,IAAI2pa,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACC,kBACd,CACAC,UAAW//Z,CAAAA,OAAO,CAAE,CAClB,MAAMgga,cAAAA,CAAiB,IAAI,CAAChga,OAAO,CACnC,MAAMiga,cAAAA,CAAiB,CAAC9mX,IAAMC,CAAAA,IAAAA,GAAOD,IAASC,GAAAA,IAAAA,GAAS,EAAE7rD,KAAMC,CAAAA,OAAO,CAAC2rD,IAAS5rD,CAAAA,EAAAA,KAAAA,CAAMC,OAAO,CAAC4rD,IAAAA,CAAI,CAAMD,EAAAA,IAAAA,CAAK3qD,MAAM,GAAK4qD,KAAK5qD,MAAM,EAAI,CAAC2qD,IAAAA,CAAKmtG,KAAK,CAAC,CAACpwJ,KAAO9B,CAAAA,KAAAA,GAAQ8B,KAAUkjD,GAAAA,IAAI,CAAChlD,KAAAA,CAAM,CAAA,CACxL,CAAA,OAAO4L,QAAQy+Z,QAAQ,GAAKuB,eAAevB,QAAQ,EAAIz+Z,OAAQ0+Z,CAAAA,eAAe,GAAKsB,cAAAA,CAAetB,eAAe,EAAI1+Z,OAAAA,CAAQ81Z,UAAU,GAAKkK,cAAAA,CAAelK,UAAU,EAAI91Z,OAAAA,CAAQoxC,OAAO,GAAK4uX,cAAe5uX,CAAAA,OAAO,EAAIpxC,OAAQyyC,CAAAA,OAAO,GAAKutX,cAAevtX,CAAAA,OAAO,EAAIzyC,OAAQw+Z,CAAAA,YAAY,GAAKwB,cAAAA,CAAexB,YAAY,EAAIx+Z,QAAQ2+Z,cAAc,GAAKqB,eAAerB,cAAc,EAAI3+Z,QAAQm+Z,aAAa,GAAK6B,cAAe7B,CAAAA,aAAa,EAAIn+Z,OAAAA,CAAQ4+Z,UAAU,GAAKoB,cAAAA,CAAepB,UAAU,EAAI5+Z,OAAAA,CAAQ6+Z,WAAW,GAAKmB,cAAAA,CAAenB,WAAW,EAAI7+Z,OAAQ8+Z,CAAAA,cAAc,GAAKkB,cAAelB,CAAAA,cAAc,EAAImB,cAAejga,CAAAA,OAAAA,CAAQo4B,OAAO,CAAE4nY,cAAAA,CAAe5nY,OAAO,CACjpB,CACAuJ,MAAAA,CAAO3hC,OAAO,CAAE,CACdA,QAAU,IAAI,CAAC4/Z,eAAe,CAAC5/Z,OAAAA,CAAAA,CAC/B,GAAI,IAAI,CAAC+/Z,UAAU,CAAC//Z,OAAY,CAAA,EAAA,IAAI,CAACk0K,WAAW,CAAE,CAChD,IAAI,CAACA,WAAW,CAAG,KACnB,CAAA,IAAI,CAACh4K,KAAK,GACZ,CACA,IAAI,CAAC8D,OAAO,CAAGA,OAAAA,CACf,GAAI,CAAC,IAAI,CAACo3Z,YAAY,CAAE,CACtB,IAAI,CAAC8I,iBAAiB,CAAC,IAAI,CAAClga,OAAO,EACrC,CACF,CACAo/Y,mBAAmBvtZ,IAAI,CAAE0nC,KAAK,CAAEkZ,OAAO,CAAErB,OAAO,CAAEjT,KAAK,CAAE,CACvD,MAAMkC,QAAU,IAAInG,OAAAA,CAAQ,IAAI,CAAC1B,MAAM,CAAE,CACvC3mC,IAAAA,CAAMA,IACNqiB,CAAAA,KAAAA,CAAO,CACPC,CAAAA,MAAAA,CAAQ,EACR9f,MAAQ,CAAA,IAAI,CAAC8ra,SAAS,CACtBpmY,QAAS,KACTkC,CAAAA,SAAAA,CAAWxW,aACX2W,CAAAA,SAAAA,CAAW3W,aACX6W,CAAAA,QAAAA,CAAU5Z,sBACV8Z,QAAU9Z,CAAAA,qBACZ,GACA,OAAO,IAAIoxB,aAAa,CACtBM,WAAAA,CAAa/T,OACb9G,CAAAA,KAAAA,CAAOA,KACPkZ,CAAAA,OAAAA,CAASA,QACTrB,OAASA,CAAAA,OAAAA,CACTjT,MAAOA,KACT,CAAA,CACF,CACA+hY,iBAAkBlga,CAAAA,OAAO,CAAE,CACzB,KAAM,CAAEw4B,MAAM,CAAE,CAAG,IAAI,CACvB,MAAMolI,eAAAA,CAAkB,IAAI,CAACA,eAAe,CAC5C,MAAMwiQ,kBAAqBxiQ,CAAAA,eAAAA,CAAgB5wH,YAAY,CACvD,IAAI,CAACmzX,SAAS,CAAG3nY,MAAO0Y,CAAAA,sBAAsB,CAAClxC,OAAAA,CAAQo4B,OAAO,CAAE,KAAMp4B,OAAQoxC,CAAAA,OAAO,GAAKnqB,iBAC1F,CAAA,IAAI,CAACo5Y,aAAa,CAAGrga,OAAAA,CAAQw+Z,YAAY,EAAI,IAAI,CAAC2B,SAAS,GAAKl5Y,iBAChE,CAAA,IAAI,CAACq5Y,iBAAiB,CAAG,IAAI,CAACD,aAAa,EAAIrga,OAAQ4+Z,CAAAA,UAAU,CACjEhhQ,eAAAA,CAAgBhrB,YAAY,CAACvH,WAAW,CAAGrrI,OAAAA,CAAQy+Z,QAAQ,GAAKzM,kBAChE,MAAM7zX,KAAAA,CAAQ,CAAC,CAACiiY,kBAAAA,EAAoBjiY,KACpC,CAAA,IAAI,CAACqhB,EAAE,CAAG,IAAI,CAAC4/V,kBAAkB,CAAC,aAAc,IAAMp/Y,CAAAA,OAAAA,CAAQyyC,OAAO,CAAEzyC,OAAAA,CAAQoxC,OAAO,CAAEjT,KACxF,CAAA,CAAA,IAAI,CAACi5X,YAAY,CAAG,IAAI,CAAC53W,EAAE,CAACpL,WAAW,CACvC,GAAI,IAAI,CAACksX,iBAAiB,CAAE,CAC1B,IAAI,CAACrB,MAAM,CAAG,IAAI,CAAC7f,kBAAkB,CAAC,gBAAkB,CAAA,KAAA,CAAO,MAAO,CAAGjhX,CAAAA,KAAAA,CACzE,CAAA,IAAI,CAACo+X,gBAAgB,CAAG,IAAI,CAAC0C,MAAM,CAAC7qX,YAAW,CAEjD,IAAI,CAACmsX,YAAY,CAAG,CAClB3mU,YAAcwmU,CAAAA,kBAAAA,CACd/mU,MAAQ,CAAA,IAAI,CAACwmU,iBAAiB,CAC9BtmU,MAAQ,CAAA,IAAI,CAACsmU,iBACf,EACA,IAAI,CAACW,YAAY,CAACxga,OAClB,CAAA,CAAA,MAAMyga,UAAY,IAAI,CAACC,aAAa,EACpC,CAAA,IAAI,CAAC7lU,YAAY,CAAG4lU,SAAAA,CAAUv2U,MAAM,CAAC,OAAWhgD,EAAAA,OAAAA,GAAY7zC,WAAa6zC,OAAY,GAAA,IAAA,EACvF,CACAw2X,aAAgB,EAAA,CACd,OAAO,CACL,IAAI,CAACxB,OAAO,CACZ,IAAI,CAACK,QAAQ,CACb,IAAI,CAACJ,SAAS,CACd,IAAI,CAAC30P,aAAa,CAClB,IAAI,CAAC40P,oBAAoB,CACzB,IAAI,CAACI,OAAO,CACZ,IAAI,CAACE,aAAa,CAClB,IAAI,CAACJ,SAAS,CACd,IAAI,CAACK,OAAO,CACZ,IAAI,CAACN,WAAW,CAChB,IAAI,CAACI,SAAS,CAElB,CACAe,YAAaxga,CAAAA,OAAO,CAAE,CACpB,IAAI,CAAC2ga,iBAAiB,CAAC3ga,OAAAA,CAAAA,CACvB,IAAI,CAAC4ga,aAAa,CAAC5ga,OACnB,CAAA,CAAA,MAAM6ga,gBAAkB,IAAI,CAACC,cAAc,CAAC9ga,OAC5C,CAAA,CAAA,MAAM+ga,oBAAsB,IAAI,CAACC,YAAY,CAAChha,OAAAA,CAAAA,CAC9C,IAAI,CAACiha,kBAAkB,CAACjha,OAAAA,CAAS+ga,mBACjC,CAAA,CAAA,IAAI,CAACG,cAAc,CAAClha,QAAS,IAAI,CAACu8Z,gBAAgB,CAClD,CAAA,IAAI,CAAC4E,YAAY,CAACnha,OAAAA,CAAS,IAAI,CAACo3Z,YAAY,CAAE,IAAI,CAACmF,gBAAgB,CACnE,CAAA,IAAI,CAAC6E,gBAAgB,CAACpha,OAAAA,CAAAA,CACtB,IAAI,CAACqha,cAAc,CAACrha,OAAS6ga,CAAAA,eAAAA,EAC/B,CACAF,iBAAkB3ga,CAAAA,OAAO,CAAE,CACzB,GAAIA,OAAAA,CAAQ2+Z,cAAc,CAAE,CAC1B,KAAM,CAAEpgM,GAAG,CAAE/lM,MAAM,CAAEolI,eAAe,CAAE,CAAG,IAAI,CAC7C,KAAM,CAAE3qC,KAAK,CAAEge,QAAQ,CAAE,CAAGstF,GAC5B,CAAA,IAAI,CAAC2gM,OAAO,CAAG,IAAIxC,iBAAAA,CAAkBlkY,OAAQy6F,KAAOge,CAAAA,QAAAA,CAAU2sB,gBAAiB,IAAI,CAAC2iQ,YAAY,EAClG,CACF,CACAe,uBAAuB/vS,IAAI,CAAE,CAC3BA,IAAK2Z,CAAAA,eAAe,CAAGjjB,UACvBsJ,CAAAA,IAAKvnD,CAAAA,WAAW,CAAG0+C,aACrB,CACAo4S,cAAe9ga,CAAAA,OAAO,CAAE,CACtB,KAAM,CAAEu+N,GAAG,CAAE/lM,MAAM,CAAEolI,eAAe,CAAE,CAAG,IAAI,CAC7C,KAAM,CAAE3qC,KAAK,CAAEge,QAAQ,CAAE,CAAGstF,GAAAA,CAC5B,MAAMx9D,WAAAA,CAAc9tC,MAAMC,MAC1B,CAAA,IAAI,CAACisS,SAAS,CAAG,IAAI3+P,iBAAkBhoI,CAAAA,MAAAA,CAAQuoI,WAAa9tC,CAAAA,KAAAA,CAAOge,UACnE,IAAI,CAACqwR,sBAAsB,CAAC,IAAI,CAACnC,SAAS,CAAA,CAC1C,IAAI,CAACA,SAAS,CAACxwX,IAAI,CAAC,IAAI,CAAC6Q,EAAE,CAAE,IAAI,CAAC+gX,YAAY,CAC9C,CAAA,MAAMr/P,WAAclhK,CAAAA,OAAAA,CAAQm+Z,aAAa,CAAGn+Z,OAAAA,CAAQo+Z,eAAe,CAAGp+Z,OAAQs+Z,CAAAA,gBAAgB,CAC9F,MAAMn9P,sBAAAA,CAAyBnhK,OAAQm+Z,CAAAA,aAAa,CAAGn+Z,OAAAA,CAAQq+Z,0BAA0B,CAAGr+Z,OAAAA,CAAQu+Z,2BAA2B,CAC/H,MAAM3nX,IAAM,CACV2qX,cAAAA,CAAgB,CAChB9uQ,CAAAA,iBAAAA,CAAmB,IACrB,CACA77G,CAAAA,GAAI2qX,CAAAA,cAAc,CAAG,IAAI,CAACpC,SAAS,CAACr+P,SAAS,CAACC,WAAAA,CAAanD,eAAiBhnH,CAAAA,GAAAA,CAAI2qX,cAAc,CAAE3qX,GAAAA,CAAI67G,iBAAiB,CAAEyO,WAAAA,CAAaC,uBACpIvqH,CAAAA,GAAAA,CAAI67G,iBAAiB,CAAG,KACxB,CAAA,GAAIzyJ,QAAQm+Z,aAAa,CAAE,CACzB,IAAI,CAAC3zP,aAAa,CAAG,IAAIzgC,mBAAoBvxG,CAAAA,MAAAA,CAC7C,CAAA,IAAI,CAACgyI,aAAa,CAACrrI,MAAM,CAAG,IAAI,CAACqgB,EACjC,CAAA,IAAI,CAAC4/W,oBAAoB,CAAG,IAAI5+P,iBAAAA,CAAkBhoI,OAAQuoI,WAAa9tC,CAAAA,KAAAA,CAAOge,UAC9E,IAAI,CAACqwR,sBAAsB,CAAC,IAAI,CAAClC,oBAAoB,CACrD,CAAA,IAAI,CAACA,oBAAoB,CAACzwX,IAAI,CAAC,IAAI,CAAC6Q,EAAE,CACtC5I,CAAAA,IAAI2qX,cAAc,CAAG,IAAI,CAACnC,oBAAoB,CAACt+P,SAAS,CAACC,WAAanD,CAAAA,eAAAA,CAAiBhnH,GAAI2qX,CAAAA,cAAc,CAAE3qX,GAAI67G,CAAAA,iBAAiB,CAAEzyJ,OAAQs+Z,CAAAA,gBAAgB,CAAEt+Z,OAAQu+Z,CAAAA,2BAA2B,CAC/L,CAAA,GAAI,CAAC,IAAI,CAACa,oBAAoB,CAAC3+P,eAAe,CAAE,CAC9C,IAAI,CAAC2+P,oBAAoB,CAAC1nY,OAAO,EACjC,CAAA,IAAI,CAAC0nY,oBAAoB,CAAG,KAC9B,CACA,GAAI,IAAI,CAACA,oBAAoB,CAAE,CAC7B,GAAIp/Z,QAAQ2+Z,cAAc,CAAE,CAC1B,IAAI,CAACS,oBAAoB,CAACn9W,eAAe,CAACK,UAAU,CAAG,KACzD,CACF,CACF,CACA,OAAO1L,GACT,CACAgqX,cAAc5ga,OAAO,CAAE,CACrB,KAAM,CAAE0+Z,eAAe,CAAED,QAAQ,CAAE,CAAGz+Z,OACtC,CAAA,KAAM,CAAEw4B,MAAM,CAAEolI,eAAe,CAAE,CAAG,IAAI,CACxC,GAAI6gQ,QAAAA,GAAa1M,cAAe,CAC9B,IAAI,CAACwN,QAAQ,CAAG,IAAIlC,cAAAA,CAAe7kY,MAAQ,CAAA,IAAI,CAAC4+X,YAAY,CAAEx5P,eAAiB8gQ,CAAAA,eAAAA,EACjF,CACF,CACAuC,mBAAmBjha,OAAO,CAAEwkE,aAAa,CAAE,CACzC,GAAI,IAAI,CAAC87V,iBAAiB,CAAE,CAC1B,IAAI,CAACZ,aAAa,CAAG,IAAItN,oBAAAA,CAAqB,IAAI,CAAC55X,MAAM,CAAE,IAAI,CAAC4+X,YAAY,CAAE,CAC5EzE,SAAW,CAAA,IAAA,CACXv2C,aAAe,CAAA,IACjB,CACA,CAAA,CAAA,IAAI,CAACsjD,aAAa,CAAC7ta,IAAI,CAAG,sBAC1B,IAAI,CAAC6ta,aAAa,CAAC/wX,IAAI,CAAC,IAAI,CAACswX,MAAM,CAAE,CACnCrlU,YAAAA,CAAcp1B,cACd60B,MAAQ,CAAA,EAAA,CACRE,MAAQ,CAAA,EACV,CACA,CAAA,CAAA,IAAI,CAACmmU,aAAa,CAACxlU,aAAa,CAACt2F,KAAAA,CAAMmB,KAAK,EAC9C,CACF,CACAm8Z,cAAAA,CAAelha,OAAO,CAAEwha,YAAY,CAAE,CACpC,GAAI,IAAI,CAACnB,aAAa,CAAE,CACtB,IAAI,CAACf,SAAS,CAAG,IAAItM,eAAgB,CAAA,IAAI,CAACx6X,MAAM,CAAEgpY,aAAc,IAAI,CAACrB,SAAS,EAChF,CACF,CACAgB,aAAanha,OAAO,CAAEwha,YAAY,CAAEC,gBAAgB,CAAE,CACpD,GAAIzha,OAAQ4+Z,CAAAA,UAAU,CAAE,CACtB,IAAI,CAACe,OAAO,CAAG,IAAIhE,aAAAA,CAAc,IAAI,CAACnjY,MAAM,CAAE,IAAI,CAAColI,eAAe,CAAE4jQ,YAAcC,CAAAA,gBAAAA,CAAkBzha,QAAQ8+Z,cAAc,CAAE9+Z,QAAQ6+Z,WAAW,EACjJ,CACF,CACAmC,YAAahha,CAAAA,OAAO,CAAE,CACpB,IAAI0ha,eAAiB,IAAI,CAACtK,YAAY,CACtC,GAAIp3Z,OAAQ81Z,CAAAA,UAAU,CAAE,CACtB,IAAI,CAAC0J,OAAO,CAAG,IAAIlG,aAAAA,CAAc,IAAI,CAAC9gY,MAAM,CAAE,IAAI,CAAC4+X,YAAY,CAAE,IAAI,CAACx5P,eAAe,CACrF8jQ,CAAAA,cAAAA,CAAiB,IAAI,CAAClC,OAAO,CAAC9F,eAAc,CAE9C,OAAOgI,cACT,CACAN,iBAAiBpha,OAAO,CAAE,CACxB,IAAI,CAACq/Z,WAAW,CAAG,IAAIlK,iBAAAA,CAAkB,IAAI,CAAC38X,MAAM,CACpD,CAAA,IAAI,CAAC6mY,WAAW,CAAC1L,YAAY,CAAG,IAAI,CAAC2L,SAAS,EAAE3L,YAChD,CAAA,IAAI,CAAC0L,WAAW,CAACvJ,UAAU,CAAG91Z,OAAQ81Z,CAAAA,UAAU,CAChD,IAAI,CAACuJ,WAAW,CAAC3J,UAAU,CAAG,IAAI,CAACiK,OAAO,EAAEjK,UAC5C,CAAA,IAAI,CAAC2J,WAAW,CAACxH,WAAW,CAAG,IAAI,CAAC8H,OAAO,EAAE9H,WAC7C,CAAA,IAAI,CAACwH,WAAW,CAACnI,kBAAkB,CAAG,CAAC,IAAI,CAACyI,OAAO,EAAErD,WACrD,CAAA,MAAM1+P,eAAkB,CAAA,IAAI,CAACA,eAAe,CAC5C,MAAMwiQ,kBAAqBxiQ,CAAAA,eAAAA,CAAgB5wH,YAAY,CACvD,IAAI,CAACqyX,WAAW,CAAC1wX,IAAI,CAACyxX,kBACtB,CAAA,CAAA,IAAI,CAACf,WAAW,CAACzJ,WAAW,CAAG51Z,OAAQy+Z,CAAAA,QAAQ,GAAKxM,gBAAAA,CAAmB,IAAI,CAACsN,QAAQ,CAAC3J,WAAW,CAAG,KACrG,CACAyL,cAAAA,CAAerha,OAAO,CAAE6ga,eAAe,CAAE,CACvC,KAAM,CAAEtiM,GAAG,CAAE3gE,eAAe,CAAE,CAAG,IAAI,CACrC,KAAM,CAAE3qC,KAAK,CAAEge,QAAQ,CAAE,CAAGstF,GAC5B,CAAA,MAAMx9D,YAAc9tC,KAAMC,CAAAA,MAAM,CAChC,MAAMktS,kBAAqBxiQ,CAAAA,eAAAA,CAAgB5wH,YAAY,CACvD,IAAI,CAACyyX,SAAS,CAAG,IAAIj/P,iBAAAA,CAAkB,IAAI,CAAChoI,MAAM,CAAEuoI,YAAa9tC,KAAOge,CAAAA,QAAAA,CAAAA,CACxE,IAAI,CAACwuR,SAAS,CAAC9wX,IAAI,CAACyxX,kBACpB,CAAA,CAAA,IAAI,CAACX,SAAS,CAAC3+P,SAAS,CAACC,YAAanD,eAAiBijQ,CAAAA,eAAAA,CAAgBU,cAAc,CAAEV,eAAAA,CAAgBpuQ,iBAAiB,EAC1H,CACA94D,WAAAA,EAAc,CACZ,GAAI,IAAI,CAACu6E,WAAW,CAAE,CACpB,IAAI,CAACytP,WAAW,CAAChgY,MAAM,GACzB,CACA,KAAK,CAACg4D,cACN,MAAMy9T,YAAAA,CAAe,IAAI,CAACoI,OAAO,EAAE79X,MAAAA,EAAAA,EAAY,IAAI,CAAC6d,EAAE,CAACpL,WAAW,CAClE,IAAI,CAACirX,WAAW,CAACjI,YAAY,CAAGA,YAChC,CAAA,IAAI,CAACsI,aAAa,EAAElqK,gBAAiB4hK,CAAAA,YAAAA,EACvC,CA/PA9ga,WAAYioO,CAAAA,GAAG,CAAEojM,WAAW,CAAE/jQ,eAAe,CAAE59J,OAAU,CAAA,EAAE,CAAC,CAC1D,KAAK,CAACu+N,GAAIpmM,CAAAA,cAAc,CAAG,CAAA,IAAI,CAAC2nY,kBAAkB,CAAG,CAAG,CAAA,IAAI,CAAC5rP,WAAW,CAAG,MAAO,IAAI,CAAC10H,EAAE,CAAG,IAC5F,CAAA,IAAI,CAAC++K,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC3gE,eAAe,CAAGA,eACvB,CAAA,IAAI,CAAC+jQ,WAAW,CAAGA,WACnB,CAAA,IAAI,CAAC3ha,OAAO,CAAG,IAAI,CAAC4/Z,eAAe,CAAC5/Z,SACpC,IAAI,CAACkga,iBAAiB,CAAC,IAAI,CAAClga,OAAO,EACrC,CAyPF,CAEA,MAAM4ha,WAAAA,CA6EJlqY,SAAU,CACR,IAAI,CAACwtD,OAAO,EAAA,CACZ,IAAI,CAAC28U,mBAAmB,CAACrsa,GAAG,GAC9B,CACAgwF,QAAS,CACP,IAAI,CAACs8U,gBAAgB,CAAG,IAAI,CAACC,gBAAgB,EAC7C,CAAA,IAAI,CAACnkQ,eAAe,CAACnxB,YAAY,CAAG,CAClC,IAAI,CAACq1R,gBAAgB,EACtB,CAEH58U,OAAU,EAAA,CACR,MAAM04E,eAAkB,CAAA,IAAI,CAACA,eAC7BA,CAAAA,eAAgBnxB,CAAAA,YAAY,EAAEvxI,OAAAA,CAAQ,UAACs1C,EAAAA,CACrCA,WAAW9Y,OAAO,GACpB,EACAkmI,CAAAA,eAAAA,CAAgBnxB,YAAY,CAAG,EAAE,CACjCmxB,eAAgBokQ,CAAAA,SAAS,CAAG,IAC5BpkQ,CAAAA,gBAAgB9sB,MAAM,CAAG,CACzB8sB,CAAAA,eAAAA,CAAgBhrB,YAAY,CAACvH,WAAW,CAAG,KAC3C,CAAA,IAAI,CAACy2R,gBAAgB,CAAG,KAC1B,CACAC,gBAAAA,EAAmB,CACjB,OAAO,IAAI/C,qBAAAA,CAAsB,IAAI,CAACzgM,GAAG,CAAE,IAAI,CAAE,IAAI,CAAC3gE,eAAe,CAAE,IAAI,CAAC59J,OAAO,CACrF,CACA,IAAIoB,QAAQlL,KAAK,CAAE,CACjB,GAAI,IAAI,CAACksE,QAAQ,GAAKlsE,KAAAA,CAAO,CAC3B,GAAIA,KAAAA,CAAO,CACT,IAAI,CAACsvF,MAAM,GACb,CAAA,KAAO,CACL,IAAI,CAACN,OAAO,GACd,CACA,IAAI,CAAC9iB,QAAQ,CAAGlsE,MAClB,CACF,CACA,IAAIkL,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACghE,QAAQ,CAEtB6/V,aAAgB,EAAA,CACd,KAAM,CAAEjia,OAAO,CAAEgia,SAAS,CAAEE,KAAK,CAAEC,GAAG,CAAE5vN,IAAI,CAAE,CAAG,IAAI,CACrDvyM,OAAQyyC,CAAAA,OAAO,CAAGuvX,SAAAA,CAAUvvX,OAAO,CACnCzyC,QAAQoxC,OAAO,CAAG4wX,UAAU5wX,OAC5BpxC,CAAAA,OAAAA,CAAQm+Z,aAAa,CAAG6D,UAAU7D,aAClCn+Z,CAAAA,OAAQ2+Z,CAAAA,cAAc,CAAGqD,SAAUI,CAAAA,aAAa,CAChDpia,OAAQw+Z,CAAAA,YAAY,CAAG0D,KAAMjyT,CAAAA,SAAS,CAAG,CACzCjwG,CAAAA,QAAQ81Z,UAAU,CAAGqM,GAAI/ga,CAAAA,OAAO,CAChCpB,QAAQy+Z,QAAQ,CAAGlsN,KAAKvsM,IACxBhG,CAAAA,OAAQ0+Z,CAAAA,eAAe,CAAGnsN,IAAAA,CAAKurN,WAC/B99Z,CAAAA,OAAQo4B,CAAAA,OAAO,CAAG4pY,SAAUK,CAAAA,aAAa,CAACjza,KAAK,EAC/C4Q,CAAAA,OAAAA,CAAQ4+Z,UAAU,CAAG,IAAI,CAAC0D,GAAG,CAAClha,OAC9BpB,CAAAA,OAAQ6+Z,CAAAA,WAAW,CAAG,IAAI,CAACyD,GAAG,CAAC9H,QAC/Bx6Z,CAAAA,OAAQ8+Z,CAAAA,cAAc,CAAG,IAAI,CAACwD,GAAG,CAAChG,YACpC,CACA36X,MAAS,EAAA,CACP,GAAI,CAAC,IAAI,CAACygC,QAAQ,CAAE,OACpB,MAAMw7F,eAAkB,CAAA,IAAI,CAACA,eAAe,CAC5C,KAAM,CAAE59J,OAAO,CAAE8ha,gBAAgB,CAAEE,SAAS,CAAEE,KAAK,CAAEK,OAAO,CAAEC,QAAQ,CAAEC,QAAQ,CAAEN,GAAG,CAAE5vN,IAAI,CAAE,CAAG,IAAI,CACpG,IAAI,CAAC0vN,aAAa,GAClBH,gBAAiBngY,CAAAA,MAAM,CAAC3hC,OACxB,CAAA,CAAA,KAAM,CAAEq/Z,WAAW,CAAEC,SAAS,CAAEC,QAAQ,CAAEI,OAAO,CAAE,CAAGmC,gBACtDA,CAAAA,gBAAAA,CAAiBjC,iBAAiB,CAAGj+Z,IAAKI,CAAAA,KAAK,CAACgga,SAAUnC,CAAAA,iBAAiB,CAAE,EAAK,CAAA,CAAA,CAClFR,CAAAA,WAAYr1V,CAAAA,WAAW,CAAGg4V,SAAAA,CAAUh4V,WACpCq1V,CAAAA,WAAY/I,CAAAA,SAAS,CAAG0L,SAAU1L,CAAAA,SAAS,CAC3C,GAAIt2Z,OAAAA,CAAQw+Z,YAAY,EAAIc,SAAW,CAAA,CACrCD,YAAY3H,cAAc,CAAGwK,KAAMjyT,CAAAA,SAAS,CAC5CqvT,UAAU5L,SAAS,CAAGwO,KAAMxO,CAAAA,UAAS,CAEvC,GAAI1zZ,OAAQ4+Z,CAAAA,UAAU,CAAE,CACtBe,OAAAA,CAAQrF,aAAa,CAAG,IAAI,CAACgI,GAAG,CAAChI,aAAa,CAC9CqF,OAAAA,CAAQtF,UAAU,CAAG,IAAI,CAACiI,GAAG,CAACjI,UAC9BsF,CAAAA,OAAAA,CAAQtD,UAAU,CAAG,IAAI,CAACiG,GAAG,CAACjG,UAAU,CACxCsD,OAAQ/E,CAAAA,SAAS,CAAG,IAAI,CAAC0H,GAAG,CAAC1H,SAAS,CACtC+E,QAAQ7E,cAAc,CAAG,IAAI,CAACwH,GAAG,CAACxH,eAAc,CAElD,GAAI96Z,OAAQy+Z,CAAAA,QAAQ,GAAK1M,aAAe,CAAA,CACtCwN,QAAStvT,CAAAA,SAAS,CAAGsiG,IAAAA,CAAKtiG,SAAS,CACnCsvT,SAAS5B,KAAK,CAAGprN,KAAKorN,KACtB4B,CAAAA,QAAAA,CAASx1Z,MAAM,CAAGwoM,KAAKxoM,MACvBw1Z,CAAAA,QAASj/W,CAAAA,WAAW,CAAGiyJ,IAAKnhK,CAAAA,OAAO,CACnCmuX,QAASjC,CAAAA,QAAQ,CAAG/qN,IAAK+qN,CAAAA,QAAQ,CACjCiC,QAAAA,CAAS1uZ,KAAK,CAAG0hM,IAAAA,CAAK1hM,KACtB0uZ,CAAAA,QAAAA,CAASj4O,SAAS,CAAGirB,IAAAA,CAAKjrB,UAAS,CAErC+3O,YAAYrJ,cAAc,CAAGuM,OAAQnha,CAAAA,OAAO,CAC5C,GAAImha,QAAQnha,OAAO,CAAE,CACnBi+Z,WAAYnH,CAAAA,iBAAiB,CAAGqK,OAAQG,CAAAA,UAAU,CAClDrD,WAAYrH,CAAAA,iBAAiB,CAAGuK,OAAQI,CAAAA,UAAU,CAClDtD,WAAAA,CAAYpH,eAAe,CAAGsK,OAAAA,CAAQK,QACtCvD,CAAAA,WAAAA,CAAYjH,WAAW,CAAGmK,OAAAA,CAAQM,KAAI,CAExCxD,YAAY9J,QAAQ,CAAG,IAAI,CAACA,QAAQ,CAACl1X,OAAO,CAC5Cg/X,YAAY9G,iBAAiB,CAAG,IAAI,CAAChD,QAAQ,CAACtlT,SAAS,CACvDovT,YAAYnJ,eAAe,CAAGsM,SAASvyT,SAAS,CAAG,EACnD,GAAIovT,WAAAA,CAAYnJ,eAAe,CAAE,CAC/BmJ,WAAAA,CAAY1G,aAAa,CAAG6J,QAAAA,CAASM,KAAK,CAC1CzD,YAAYzG,aAAa,CAAG4J,QAASO,CAAAA,KAAK,CAC1C1D,YAAYxG,iBAAiB,CAAG2J,QAASQ,CAAAA,SAAS,CAClD3D,YAAYvG,iBAAiB,CAAG0J,QAASvyT,CAAAA,UAAS,CAEpDovT,YAAYjJ,eAAe,CAAGqM,SAASxyT,SAAS,CAAG,EACnD,GAAIovT,WAAAA,CAAYjJ,eAAe,CAAE,CAC/BiJ,WAAAA,CAAYrG,iBAAiB,CAAGyJ,QAAAA,CAASxyT,UAAS,CAEpD2tD,gBAAgB9sB,MAAM,CAAGqxR,GAAI/ga,CAAAA,OAAO,CAAG+ga,GAAAA,CAAIrxR,MAAM,CAAG,CACpDuuR,CAAAA,WAAYjK,CAAAA,KAAK,CAAG,IAAI,CAACA,KAAK,CAC9B,GAAIiK,WAAAA,CAAYjK,KAAK,GAAK,MAAA,EAAUp1Z,QAAQy+Z,QAAQ,GAAK1M,cAAesN,WAAYjK,CAAAA,KAAK,CAAG,IAAA,CAC5F,GAAIiK,WAAAA,CAAYjK,KAAK,GAAK,UAAA,EAAc,CAACiK,WAAYnJ,CAAAA,eAAe,CAAEmJ,WAAYjK,CAAAA,KAAK,CAAG,KAC5F,CAtLA9+Z,WAAAA,CAAYioO,GAAG,CAAE3gE,eAAe,CAAC,CAC/B,IAAI,CAACx7F,QAAQ,CAAG,IAChB,CAAA,IAAI,CAAC4/V,SAAS,CAAG,CACfK,cAAe,CACbz6Y,mBAAAA,CACAN,oBACAE,mBACD,CAAA,CACDirB,OAAS,CAAA,KAAA,CACTotX,iBAAmB,CAAA,CAAA,CACnBzuX,QAAS,CACT+sX,CAAAA,aAAAA,CAAe,MACfiE,aAAe,CAAA,KAAA,CACfp4V,YAAa,CACbssV,CAAAA,SAAAA,CAAW,CACb,CACA,CAAA,IAAI,CAAC/jN,IAAI,CAAG,CACVvsM,IAAM+rZ,CAAAA,aAAAA,CACN+L,YAAa,IACbx2O,CAAAA,SAAAA,CAAW,KACXr3E,CAAAA,SAAAA,CAAW,EACXlmG,CAAAA,MAAAA,CAAQ,GACRqnC,OAAS,CAAA,EAAA,CACTusX,MAAO,CACPL,CAAAA,QAAAA,CAAU,GACVzsZ,KAAO,CAAA,CACT,CACA,CAAA,IAAI,CAACqxZ,KAAK,CAAG,CACXjyT,UAAW,CACXyjT,CAAAA,SAAAA,CAAW,EACb,CACA,CAAA,IAAI,CAAC6O,OAAO,CAAG,CACbnha,OAAS,CAAA,KAAA,CACTuha,WAAY,CACZC,CAAAA,QAAAA,CAAU,EACVF,UAAY,CAAA,CAAA,CACZG,IAAM,CAAA,IAAIj/Z,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAC3B,CACA,CAAA,IAAI,CAAC2xZ,QAAQ,CAAG,CACdl1X,OAAAA,CAAS,IACT4vE,CAAAA,SAAAA,CAAW,CACb,CACA,CAAA,IAAI,CAACuyT,QAAQ,CAAG,CACdvyT,SAAAA,CAAW,CACX6yT,CAAAA,KAAAA,CAAO,EACPC,CAAAA,KAAAA,CAAO,EACPC,SAAW,CAAA,EACb,CACA,CAAA,IAAI,CAACb,GAAG,CAAG,CACT/ga,OAAAA,CAAS,KACT0vI,CAAAA,MAAAA,CAAQ,CACV,CACA,CAAA,IAAI,CAAC2xR,QAAQ,CAAG,CACdxyT,SAAW,CAAA,CACb,CACA,CAAA,IAAI,CAACqyT,GAAG,CAAG,CACTlha,QAAS,KACTo5Z,CAAAA,QAAAA,CAAU,MACVF,aAAe,CAAA,GAAA,CACfD,UAAY,CAAA,EAAA,CACZgC,UAAY,CAAA,CAAA,CACZzB,UAAW,CACXE,CAAAA,cAAAA,CAAgB,EAChBwB,WAAa,CAAA,IACf,CACA,CAAA,IAAI,CAAClH,KAAK,CAAG,IACb,CAAA,IAAI,CAACp1Z,OAAO,CAAG,IAAIk+Z,kBACnB,CAAA,IAAI,CAAC4D,gBAAgB,CAAG,IACxB,CAAA,IAAI,CAACvjM,GAAG,CAAGA,GACX,CAAA,IAAI,CAAC3gE,eAAe,CAAGA,eACvB,CAAA,IAAI,CAACqkQ,aAAa,EAAA,CAClB,IAAI,CAACz8U,MAAM,EACX,CAAA,IAAI,CAACq8U,mBAAmB,CAAGjkQ,eAAAA,CAAgBhoK,EAAE,CAAC,YAAA,CAAc,KAC1D,GAAI,IAAI,CAACksa,gBAAgB,CAAE,IAAI,CAACA,gBAAgB,CAAC5tP,WAAW,CAAG,KACjE,GACF,CA4GF,CAEA,MAAM+uP,OAAU,CAAA,IAAIz4Z,IACpB,CAAA,MAAM04Z,UAAa,CAAA,IAAI9sZ,IACvB,CAAM+sZ,MAAAA,IAAAA,CAYJ71a,IAAKgpB,CAAAA,KAAK,CAAE,CACV,OAAO,IAAI,CAACxf,GAAG,CAACwf,KAAMzD,CAAAA,QAAQ,CAAEyD,KAAM8sZ,CAAAA,MAAM,CAAE9sZ,KAAMlL,CAAAA,QAAQ,CAC9D,CACAvH,KAAAA,EAAQ,CACN,OAAO,IAAIs/Z,IAAAA,CAAK,IAAI,CAACtwZ,QAAQ,CAAChP,KAAK,EAAA,CAAI,IAAI,CAACu/Z,MAAM,CAACv/Z,KAAK,EAAI,CAAA,IAAI,CAACuH,QAAQ,CAC3E,CACAM,YAAa4K,CAAAA,KAAK,CAAE3K,OAAU,CAAA,IAAI,CAAE,CAClC,OAAO,IAAI,CAACkH,QAAQ,CAACnH,YAAY,CAAC4K,KAAAA,CAAMzD,QAAQ,CAAElH,OAAAA,CAAAA,EAAY,IAAI,CAACy3Z,MAAM,CAAC13Z,YAAY,CAAC4K,KAAAA,CAAM8sZ,MAAM,CAAEz3Z,OAAAA,CAAAA,EAAY7d,KAAKma,GAAG,CAAC,IAAI,CAACmD,QAAQ,CAAGkL,MAAMlL,QAAQ,CAAA,CAAIO,OAC9J,CACAnJ,IAAAA,CAAKyB,GAAG,CAAEF,GAAG,CAAEs/Z,MAAM,CAAE/+O,MAAAA,CAAS++O,MAAM,CAAEC,MAAAA,CAASD,MAAM,CAAE,CACvD,IAAI,CAACxwZ,QAAQ,CAACrQ,IAAI,CAACyB,GAAAA,CAAI4O,QAAQ,CAAE9O,GAAAA,CAAI8O,QAAQ,CAAEwwZ,MAC/C,CAAA,CAAA,IAAI,CAACD,MAAM,CAACxga,CAAC,CAAGhB,IAAAA,CAAKc,SAAS,CAACuB,GAAAA,CAAIm/Z,MAAM,CAACxga,CAAC,CAAEmB,GAAIq/Z,CAAAA,MAAM,CAACxga,CAAC,CAAE0hL,MAAAA,CAAAA,CAAU,GACrE,CAAA,IAAI,CAAC8+O,MAAM,CAAC94Z,CAAC,CAAG1I,IAAAA,CAAKc,SAAS,CAACuB,GAAIm/Z,CAAAA,MAAM,CAAC94Z,CAAC,CAAEvG,IAAIq/Z,MAAM,CAAC94Z,CAAC,CAAEg6K,MAAAA,CAAAA,CAAU,GACrE,CAAA,IAAI,CAAC8+O,MAAM,CAAC34Z,CAAC,CAAG7I,IAAKc,CAAAA,SAAS,CAACuB,GAAIm/Z,CAAAA,MAAM,CAAC34Z,CAAC,CAAE1G,GAAAA,CAAIq/Z,MAAM,CAAC34Z,CAAC,CAAE65K,MAAU,CAAA,CAAA,GACrE,CAAA,IAAI,CAACl5K,QAAQ,CAAGxJ,IAAKY,CAAAA,IAAI,CAACyB,GAAImH,CAAAA,QAAQ,CAAErH,GAAIqH,CAAAA,QAAQ,CAAEk4Z,MACtD,CAAA,CAAA,OAAO,IACT,CACAvlF,IAAAA,CAAK9hV,MAAM,CAAE,CACX,IAAI,CAAC4W,QAAQ,CAAChU,GAAG,CAAC5C,MAClB,CAAA,CAAA,IAAI,CAAC4W,QAAQ,CAACjQ,CAAC,CAAGhB,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAAC6Q,QAAQ,CAACjQ,CAAC,CAAE,IAAI,CAAC2ga,MAAM,CAAC3ga,CAAC,CAAE,IAAI,CAAC2ga,MAAM,CAACj5Z,CAAC,CAC1E,CAAA,IAAI,CAACuI,QAAQ,CAACvI,CAAC,CAAG1I,KAAKI,KAAK,CAAC,IAAI,CAAC6Q,QAAQ,CAACvI,CAAC,CAAE,IAAI,CAACk5Z,MAAM,CAAC5ga,CAAC,CAAE,IAAI,CAAC4ga,MAAM,CAACl5Z,CAAC,CAC1E,CAAA,IAAI,CAACuI,QAAQ,CAACpI,CAAC,CAAG7I,IAAAA,CAAKI,KAAK,CAAC,IAAI,CAAC6Q,QAAQ,CAACpI,CAAC,CAAE,IAAI,CAACg5Z,MAAM,CAAC7ga,CAAC,CAAE,IAAI,CAAC6ga,MAAM,CAACn5Z,CAAC,CAAA,CAC1E,OAAO,IACT,CACA+F,MAAOqzZ,CAAAA,KAAK,CAAE,CACZ,IAAI,CAACN,MAAM,CAACvka,GAAG,CAAC6ka,KAChB,CAAA,CAAA,IAAI,CAACN,MAAM,CAACxga,CAAC,EAAI,GACjB,CAAA,IAAI,CAACwga,MAAM,CAAC94Z,CAAC,EAAI,GACjB,CAAA,IAAI,CAAC84Z,MAAM,CAAC34Z,CAAC,EAAI,GACjB,CAAA,IAAI,CAAC24Z,MAAM,CAACxga,CAAC,CAAGhB,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAACoha,MAAM,CAACxga,CAAC,CAAE,IAAI,CAAC+ga,UAAU,CAAC/ga,CAAC,CAAE,IAAI,CAAC+ga,UAAU,CAACr5Z,CAAC,CAC9E,CAAA,IAAI,CAAC84Z,MAAM,CAAC94Z,CAAC,CAAG1I,IAAKI,CAAAA,KAAK,CAAC,IAAI,CAACoha,MAAM,CAAC94Z,CAAC,CAAE,IAAI,CAACs5Z,QAAQ,CAAChha,CAAC,CAAE,IAAI,CAACgha,QAAQ,CAACt5Z,CAAC,CAAA,CAC1E,OAAO,IACT,CACAxT,GAAAA,CAAI+b,QAAQ,CAAEuwZ,MAAM,CAAEh4Z,QAAQ,CAAE,CAC9B,IAAI,CAACyH,QAAQ,CAACvlB,IAAI,CAACulB,QACnB,CAAA,CAAA,IAAI,CAACuwZ,MAAM,CAAC91a,IAAI,CAAC81a,MAAAA,CACjB,CAAA,IAAI,CAACh4Z,QAAQ,CAAGA,QAChB,CAAA,OAAO,IAAI,CAEby4Z,KAAK3rZ,IAAI,CAAEC,EAAE,CAAE,CACb,IAAI,CAACtF,QAAQ,CAACvlB,IAAI,CAAC4qB,IAAAA,CACnB,CAAA,IAAI,CAAC9M,QAAQ,CAAG8M,IAAAA,CAAK9M,QAAQ,CAAC+M,EAC9B,CAAA,CAAA,MAAMgE,IAAM8mZ,OAAQ72Z,CAAAA,IAAI,CAAC+L,EAAID,CAAAA,IAAAA,CAAAA,CAAMvpB,SAAS,EAC5C,CAAA,MAAMm1a,IAAOh2a,CAAAA,IAAAA,CAAKyiB,KAAK,CAAC,CAAC4L,GAAI7R,CAAAA,CAAC,CAAExc,IAAKud,CAAAA,IAAI,CAAC8Q,GAAIvZ,CAAAA,CAAC,CAAGuZ,GAAAA,CAAIvZ,CAAC,CAAGuZ,IAAI1R,CAAC,CAAG0R,IAAI1R,CAAC,CAAA,CAAA,CAAK7I,KAAKG,UAAU,CAC3F,MAAMgia,IAAAA,CAAOj2a,IAAKyiB,CAAAA,KAAK,CAAC,CAAC4L,GAAAA,CAAIvZ,CAAC,CAAE,CAACuZ,IAAI1R,CAAC,CAAA,CAAI7I,IAAKG,CAAAA,UAAU,CACzD,IAAI,CAACqha,MAAM,CAACtsa,GAAG,CAAC,CAACgta,KAAMC,IAAM,CAAA,CAAA,CAAA,CAC7B,OAAO,IAAI,CAEbC,SAAS7kZ,GAAG,CAAE,CACZ,OAAO+jZ,UAAAA,CAAWztZ,kBAAkB,CAAC,IAAI,CAAC2tZ,MAAM,CAAEpzZ,CAAAA,eAAe,CAACxF,IAAKqC,CAAAA,OAAO,CAAEsS,GAAAA,CAAAA,CAAK9a,SAAS,CAAC,IAAI,CAAC+G,QAAQ,CAAEvM,CAAAA,GAAG,CAAC,IAAI,CAACgU,QAAQ,CACjI,CA7DAvc,WAAYuc,CAAAA,QAAAA,CAAWrI,KAAK8B,IAAI,CAAE82Z,MAAS54Z,CAAAA,IAAAA,CAAK8B,IAAI,CAAElB,SAAW,CAAC,CAAC,CACjE,IAAI,CAACyH,QAAQ,CAAG,IAAIrI,IACpB,CAAA,IAAI,CAAC44Z,MAAM,CAAG,IAAI54Z,IAClB,CAAA,IAAI,CAACY,QAAQ,CAAG,CAChB,CAAA,IAAI,CAACu4Z,UAAU,CAAG,IAAIvzZ,KAAK,CAAC1J,QAAAA,CAAUA,SACtC,CAAA,IAAI,CAACk9Z,QAAQ,CAAG,IAAIxzZ,KAAK,CAAC1J,QAAAA,CAAUA,SACpC,CAAA,IAAI,CAAC68Z,MAAM,CAAG,IAAInzZ,IAAAA,CAAK,CAAC1J,QAAAA,CAAUA,SAClC,CAAA,IAAI,CAAC88Z,MAAM,CAAG,IAAIpzZ,IAAK,CAAA,CAAC1J,QAAUA,CAAAA,QAAAA,CAClC,CAAA,IAAI,CAAC+8Z,MAAM,CAAG,IAAIrzZ,IAAK,CAAA,CAAC1J,SAAUA,QAClC,CAAA,CAAA,IAAI,CAAC5P,GAAG,CAAC+b,QAAAA,CAAUuwZ,OAAQh4Z,QAC7B,EAAA,CAoDF,CAEA,MAAM64Z,UAAAA,CAQJpla,IAAIyX,KAAK,CAAE,CACT,IAAI,IAAI/nB,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC21a,MAAM,CAAC11a,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,IAAI,CAAC21a,MAAM,CAAC31a,CAAE,CAAA,EAAI+nB,MAAM4tZ,MAAM,CAAC31a,EAAE,EAAI,EACvC,CACA,OAAO,IACT,CACAiQ,MAAOoiC,CAAAA,OAAO,CAAE,CACd,IAAI,IAAIryC,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAAC21a,MAAM,CAAC11a,MAAM,CAAED,IAAI,CACzC,IAAI,CAAC21a,MAAM,CAAC31a,CAAE,CAAA,EAAIqyC,OAAO,CAACryC,EAAE,EAAI,EAClC,CACA,OAAO,IAAI,CAEbjB,IAAAA,CAAKgpB,KAAK,CAAE,CACV,IAAI,IAAI/nB,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAAC21a,MAAM,CAAC11a,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACzC,IAAI,CAAC21a,MAAM,CAAC31a,EAAE,CAAG+nB,KAAAA,CAAM4tZ,MAAM,CAAC31a,CAAAA,CAAE,EAAI,EACtC,CACA,OAAO,IAAI,CAEbC,MAAS,EAAA,CACP,IAAIm0E,GAAAA,CAAM,EACV,IAAK,MAAMzsE,KAAS,IAAA,IAAI,CAACgua,MAAM,CAAC,CAC9BvhW,GAAAA,EAAOzsE,MAAQA,MACjB,CACA,OAAOpI,IAAKud,CAAAA,IAAI,CAACs3D,GAAAA,CACnB,CACAnrC,IAAAA,EAAO,CACL,MAAMthC,KAAAA,CAAQ,IAAI,CAACgua,MAAM,CAAC90a,KAAK,EAAA,CAC/B,IAAI,CAAC80a,MAAM,CAAC3iR,IAAI,CAAC,CAAA,CAAA,CACjB,OAAOrrJ,KACT,CApCAI,YAAYuS,GAAG,CAAC,CACd,GAAItb,KAAMC,CAAAA,OAAO,CAACqb,GAAM,CAAA,CAAA,CACtB,IAAI,CAACq7Z,MAAM,CAAGr7Z,GAAIzZ,CAAAA,KAAK,GACzB,CAAA,KAAO,CACL,IAAI,CAAC80a,MAAM,CAAG,IAAI32a,KAAM,CAAA,CAACsb,KAAK04I,IAAI,CAAC,CACrC,EAAA,CACF,CA+BF,CACA,MAAM4iR,UAOJ3sY,CAAAA,IAAAA,EAAO,CACL,MAAM61K,KAAAA,CAAQ,EACd,CAAA,IAAI,MAAMx7M,IAAAA,IAAQ,IAAI,CAACuya,MAAM,CAAC,CAC5B/2N,KAAK,CAACx7M,IAAAA,CAAK,CAAG,IAAI,CAACuya,MAAM,CAACvya,IAAK,CAAA,CAAC2lC,IAAI,GACtC,CACA,OAAO61K,KACT,CAZA/2M,YAAYiS,IAAI,CAAC,CACf,IAAI,CAAC67Z,MAAM,CAAG,EAAC,CACf,IAAI,MAAMvya,IAAAA,IAAQ0W,KAAK,CACrB,IAAI,CAAC67Z,MAAM,CAACvya,IAAAA,CAAK,CAAG,IAAIoya,UAAAA,CAAW17Z,IAAI,CAAC1W,IAAAA,CAAK,EAC/C,CACF,CAQF,CACA,MAAMwya,WAAoBF,SAAAA,UAAAA,CACxBvua,GAAG06F,KAAK,CAAEz6F,QAAQ,CAAE,CAClB,IAAI,CAACiwQ,OAAO,CAAClwQ,EAAE,CAAC06F,KAAAA,CAAOz6F,UACzB,CACAL,GAAAA,CAAI86F,KAAK,CAAEz6F,QAAQ,CAAE,CACnB,IAAI,CAACiwQ,OAAO,CAACtwQ,GAAG,CAAC86F,KAAOz6F,CAAAA,QAAAA,EAC1B,CACA4B,IAAK64F,CAAAA,KAAK,CAAE,GAAG/7F,IAAI,CAAE,CACnB,IAAI,CAACuxQ,OAAO,CAACruQ,IAAI,CAAC64F,KAAU/7F,CAAAA,GAAAA,IAAAA,EAC9B,CACAwyG,MAAO78D,CAAAA,OAAO,CAAE,CACd,GAAI,IAAI,CAAC88D,QAAQ,CAAE,CACjB,IAAI,CAACC,MAAM,GACb,CACA,IAAI,CAACD,QAAQ,CAAG98D,QAClB,CACA+8D,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAAG,KAChB,IAAI,CAACxvE,IAAI,GACX,CACAE,OAAU,EAAA,CACR,IAAI,CAACuvE,MAAM,EACX,CAAA,IAAI,CAAC6+J,OAAO,CAACtwQ,GAAG,GAClB,CACAc,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,MAAO,IAAI,CAACyyG,QAAQ,CAAG,IAAA,CAAM,IAAI,CAAC8+J,OAAO,CAAG,IAAItvQ,aAC3D,CACF,CACA,MAAM8ta,aAAAA,CACJ3iY,OAAO0rK,KAAK,CAAEjhG,EAAE,CAAE,CAChBihG,KAAAA,CAAM71K,IAAI,GACZ,CACF,CACA,MAAM+sY,eAAAA,SAAwBD,cAC5Bv9T,MAAOusR,CAAAA,IAAI,CAAEkxC,MAAAA,CAAS,IAAI,CAAE,EAC5Bv9T,MAAAA,EAAS,EACTtlE,MAAAA,CAAO0rK,KAAK,CAAEjhG,EAAE,CAAE,CAChB,KAAK,CAACzqE,OAAO0rK,KAAOjhG,CAAAA,EAAAA,CAAAA,CACpB,OAAO,IAAI,CAACupR,KAAK,CAEnBj+V,OAAU,EAAA,CACR,IAAI,CAACuvE,MAAM,GACb,CACA3wG,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACohY,KAAK,CAAG,IAAIwtC,KACnC,CACF,CAEA,MAAMsB,oBAAuB,CAAA,GAAA,CAC7B,MAAMC,mBAAAA,CAAsB,GAE5B,CAAA,MAAMC,cAAgB,IACpB,CAAA,MAAMl4V,MAAQ,IAAI91E,GAAAA,CAClB,OAAO,CACLiua,IAAAA,CAAM,KAACt0U,EAAAA,CACL7jB,KAAM31E,CAAAA,GAAG,CAACw5F,KAAMu0U,CAAAA,SAAS,CAAE,CACzBv0U,KAAAA,CAAMw0U,OAAO,CACbx0U,KAAAA,CAAMy0U,OAAO,CACd,EACH,CAAA,CACAhnF,KAAM,KAACztP,EAAAA,CACL,GAAI,CAAC7jB,KAAAA,CAAM51E,GAAG,CAACy5F,KAAAA,CAAMu0U,SAAS,CAAA,CAAG,CAC/B,OAAO,CACL,CACA,CAAA,CAAA,CACD,CAEH,MAAMr8N,KAAO/7H,KAAMn8E,CAAAA,GAAG,CAACggG,KAAAA,CAAMu0U,SAAS,CAAA,CACtC,MAAMG,GAAM10U,CAAAA,KAAAA,CAAMw0U,OAAO,CAAGt8N,IAAI,CAAC,CAAE,CAAA,CACnC,MAAMy8N,GAAAA,CAAM30U,KAAMy0U,CAAAA,OAAO,CAAGv8N,IAAI,CAAC,EAAE,CACnCA,IAAI,CAAC,CAAA,CAAE,CAAGl4G,KAAAA,CAAMw0U,OAChBt8N,CAAAA,IAAI,CAAC,CAAE,CAAA,CAAGl4G,KAAMy0U,CAAAA,OAAO,CACvB,OAAO,CACLC,GACAC,CAAAA,GAAAA,CACD,CACH,CACAnyZ,GAAI,KAACw9E,EAAAA,CACH7jB,MAAMr1E,MAAM,CAACk5F,MAAMu0U,SAAS,EAC9B,CACF,CACF,CAEA,CAAA,MAAMK,IAAM,IAAI90Z,IAChB,OAAM+0Z,eAOJ,CAAA,IAAIjva,OAAQ,CACV,OAAO,IAAI,CAACgua,MACd,CACAU,IAAKhia,CAAAA,CAAC,CAAE0H,CAAC,CAAE,CACT,IAAI,CAAC62G,SAAS,CAACrqH,GAAG,CAAC8L,EAAG0H,CACtB,CAAA,CAAA,IAAI,CAAC45Z,MAAM,CAACpta,GAAG,CAAC,CAAA,CAAG,CACnB,CAAA,CAAA,OAAO,CACL8L,CAAAA,CACA0H,EACA1H,CACA0H,CAAAA,CAAAA,CACD,CAEHyzU,IAAAA,CAAKn7U,CAAC,CAAE0H,CAAC,CAAE,CACT46Z,GAAIpua,CAAAA,GAAG,CAAC8L,CAAI,CAAA,IAAI,CAACu+G,SAAS,CAACv+G,CAAC,CAAE0H,CAAAA,CAAI,IAAI,CAAC62G,SAAS,CAAC72G,CAAC,CAClD,CAAA,GAAI46Z,IAAI12a,MAAM,EAAA,CAAK,IAAI,CAAC42a,MAAM,CAAE,CAC9BF,GAAIv2a,CAAAA,SAAS,GAAG0V,SAAS,CAAC,IAAI,CAAC+ga,MAAM,EACvC,CACA,IAAI,CAAClB,MAAM,CAACpta,GAAG,CAAC8K,IAAKI,CAAAA,KAAK,CAACkja,GAAItia,CAAAA,CAAC,CAAG,IAAI,CAACwia,MAAM,CAAE,CAAC,CAAA,CAAG,GAAIxja,IAAKI,CAAAA,KAAK,CAACkja,GAAI56Z,CAAAA,CAAC,CAAG,IAAI,CAAC86Z,MAAM,CAAE,CAAC,CAAA,CAAG,IAC5F,KAAM,CAAExia,EAAGyia,EAAE,CAAE/6Z,EAAGg7Z,EAAE,CAAE,CAAG,IAAI,CAACnkT,SAAS,CACvC,OAAO,CACLkkT,GACAC,EACAD,CAAAA,EAAAA,CAAKH,IAAItia,CAAC,CACV0ia,EAAKJ,CAAAA,GAAAA,CAAI56Z,CAAC,CACX,CAEHwI,EAAAA,EAAK,CACH,IAAI,CAACquG,SAAS,CAACrqH,GAAG,CAAC,CAAA,CAAG,CACtB,CAAA,CAAA,IAAI,CAACota,MAAM,CAACpta,GAAG,CAAC,CAAA,CAAG,GACnB,OAAO,CACL,CAAC,CAAA,CACD,CAAC,CAAA,CACD,CAAC,CACD,CAAA,CAAC,EACF,CAzCHR,YAAY,CAAEs7I,KAAK,CAAE,CAAG,EAAE,CAAC,CACzB,IAAI,CAACwzR,MAAM,CAAG,EACd,CAAA,IAAI,CAACjkT,SAAS,CAAG,IAAI/wG,IACrB,CAAA,IAAI,CAAC8zZ,MAAM,CAAG,IAAI9zZ,IAClB,CAAA,IAAI,CAACg1Z,MAAM,CAAGxzR,KAAAA,EAAS,IAAI,CAACwzR,OAAM,CAuCtC,CAEA,MAAMG,mBAA4BlB,SAAAA,WAAAA,CAoBhC,IAAI9tX,MAAAA,CAAOrgD,KAAK,CAAE,CAChB,GAAI,IAAI,CAACsva,OAAO,GAAKtva,MAAO,CAC1B,MACF,CACA,IAAI,CAACsva,OAAO,CAAGtva,KACf,CAAA,IAAI,CAACshC,IAAI,EAAA,CACT,IAAI,CAACiuY,YAAY,CAACtua,KAAK,GACzB,CACA,IAAIo/C,MAAS,EAAA,CACX,OAAO,IAAI,CAACivX,OAAO,CAErB,IAAIE,QAAAA,EAAW,CACb,OAAO,IAAI,CAACC,SAAS,CAEvBC,cAAAA,CAAet1U,KAAK,CAAE,CACpB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAEr5T,OAAO,CAAEE,OAAO,CAAE,CAAGpb,KACrD,CAAA,IAAI,CAACw1U,cAAc,CAAClB,IAAI,CAACt0U,KACzB,CAAA,CAAA,GAAIu1U,cAAgB,OAAS,CAAA,CAC3B,MACF,CACA,IAAI,CAAC7+T,QAAQ,EAAE++T,iBAAAA,CAAkBlB,WACjC,IAAI,CAACY,YAAY,CAAC3ua,GAAG,CAAC+ta,SAAW,CAAA,CAC/Bjia,CAAG4oG,CAAAA,OAAAA,CACHlhG,CAAGohG,CAAAA,OACL,GACA,MAAM9rG,GAAAA,CAAME,KAAKF,GAAG,EAAA,CACpB,MAAMoma,OAAU,CAAC,CAAA,IAAI,CAACC,YAAY,CAACrja,CAAC,CAAG4oG,OAAM,GAAM,CAAA,CAAI,CAAC,IAAI,CAACy6T,YAAY,CAAC37Z,CAAC,CAAGohG,OAAM,GAAM,EAC1F,GAAIs6T,OAAAA,CAAUtB,qBAAuB9ka,GAAM,CAAA,IAAI,CAACqma,YAAY,CAACtga,IAAI,CAAG8+Z,oBAAsB,CAAA,CACxF,IAAI,CAACL,MAAM,CAAC8B,SAAS,CAAC1na,MAAM,CAAC,CAC3B,CAAA,CACD,EACH,CACA,IAAI,CAACyna,YAAY,CAACrja,CAAC,CAAG4oG,OACtB,CAAA,IAAI,CAACy6T,YAAY,CAAC37Z,CAAC,CAAGohG,OACtB,CAAA,IAAI,CAACu6T,YAAY,CAACtga,IAAI,CAAG/F,GACzB,CAAA,GAAI,IAAI,CAAC4la,OAAO,GAAK,UAAA,CAAY,CAC/B,IAAI,CAAC/ta,IAAI,CAAC,mBAAqB,CAAA,IAAI,CAACkua,SAAS,CAACf,IAAI,CAACp5T,QAASE,OAC9D,CAAA,EAAA,CACF,CACAy6T,cAAe71U,CAAAA,KAAK,CAAE,CACpB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAE13a,MAAM,CAAEq+G,OAAO,CAAEE,OAAO,CAAE,CAAGpb,KAC7D,CAAA,KAAM,CAACkZ,SAAWG,CAAAA,SAAAA,CAAU,CAAG,IAAI,CAACm8T,cAAc,CAAC/nF,IAAI,CAACztP,KAAAA,CAAAA,CACxD,GAAIu1U,WAAAA,GAAgB,QAAS,CAC3B,MACF,CACA,GAAI14a,MAAAA,GAAW,IAAI,CAAC65G,QAAQ,CAAE,CAC5B,MACF,CACA,MAAMz+F,IAAO,CAAA,IAAI,CAACk9Z,YAAY,CAACn1a,GAAG,CAACu0a,SAAAA,CAAAA,CACnC,GAAI,CAACt8Z,IAAM,CAAA,CACT,MACF,CACAA,IAAAA,CAAK3F,CAAC,CAAG4oG,OACTjjG,CAAAA,IAAK+B,CAAAA,CAAC,CAAGohG,OAAAA,CACT,GAAI,IAAI,CAAC85T,OAAO,GAAK,WAAY,CAC/B,IAAI,CAAC/ta,IAAI,CAAC,mBAAqB,CAAA,IAAI,CAACkua,SAAS,CAAC5nF,IAAI,CAACvyO,OAASE,CAAAA,OAAAA,CAAAA,EAC9D,CAAO,KAAA,CACL,IAAI,CAAC04T,MAAM,CAAC/mK,KAAK,CAAC7+P,MAAM,CAAC,CACvBgrG,SAAAA,CACAG,UACD,EACH,CACF,CACAy8T,YAAa91U,CAAAA,KAAK,CAAE,CAClB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAE,CAAGv0U,KAAAA,CACnC,IAAI,CAACw1U,cAAc,CAAChzZ,EAAE,CAACw9E,KAAAA,CAAAA,CACvB,GAAIu1U,WAAgB,GAAA,OAAA,CAAS,CAC3B,MACF,CACA,IAAI,CAAC7+T,QAAQ,EAAEq/T,qBAAAA,CAAsBxB,SACrC,CAAA,CAAA,MAAMt8Z,KAAO,IAAI,CAACk9Z,YAAY,CAACn1a,GAAG,CAACu0a,SACnC,CAAA,CAAA,GAAI,CAACt8Z,IAAAA,CAAM,CACT,MACF,CACA,IAAI,CAACk9Z,YAAY,CAACrua,MAAM,CAACyta,SACzB,CAAA,CAAA,GAAI,IAAI,CAACW,OAAO,GAAK,WAAY,CAC/B,IAAI,CAAC/ta,IAAI,CAAC,oBAAqB,IAAI,CAACkua,SAAS,CAAC7yZ,EAAE,EAAA,EAClD,CACF,CACAi0F,MAAAA,CAAO78D,OAAO,CAAE,CACd,KAAK,CAAC68D,MAAAA,CAAO78D,OACb,CAAA,CAAA,IAAI,CAAC88D,QAAQ,CAAG98D,OAAAA,CAChB,IAAI,CAAC88D,QAAQ,CAACx2G,gBAAgB,CAAC,aAAA,CAAe,IAAI,CAACo1a,cAAc,CAAA,CACjE,IAAI,CAAC5+T,QAAQ,CAACx2G,gBAAgB,CAAC,cAAe,IAAI,CAAC21a,cAAc,CAAA,CACjE,IAAI,CAACn/T,QAAQ,CAACx2G,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAAC41a,YAAY,CAAA,CAC7D,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,eAAA,CAAiB,IAAI,CAAC41a,YAAY,EACnE,CACAn/T,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAACv2G,mBAAmB,CAAC,aAAA,CAAe,IAAI,CAACm1a,cAAc,EACpE,IAAI,CAAC5+T,QAAQ,CAACv2G,mBAAmB,CAAC,aAAA,CAAe,IAAI,CAAC01a,cAAc,CACpE,CAAA,IAAI,CAACn/T,QAAQ,CAACv2G,mBAAmB,CAAC,WAAA,CAAa,IAAI,CAAC21a,YAAY,CAAA,CAChE,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,gBAAiB,IAAI,CAAC21a,YAAY,CAAA,CACpE,IAAI,CAACX,YAAY,CAACtua,KAAK,GACvB,KAAK,CAAC8vG,SACR,CACAzvE,IAAAA,EAAO,CACL,IAAI,CAAC4sY,MAAM,CAAC/mK,KAAK,CAAC7+P,MAAM,CAAC,CACvB,IAAI,CAACmna,SAAS,CAACzva,KAAK,CAAC0M,CAAC,CACtB,IAAI,CAAC+ia,SAAS,CAACzva,KAAK,CAACoU,CAAC,CACvB,CACD,CAAA,OAAO,KAAK,CAACktB,MACf,CACAE,OAAAA,EAAU,CACR,IAAI,CAACiuY,SAAS,CAAC7yZ,EAAE,EACjB,CAAA,KAAK,CAAC4kB,OAAAA,GACR,CA/HAphC,WAAa,EAAA,CACX,KAAK,CAAC,CACJ+mQ,MAAO,CACL,CAAA,CACA,CACD,CAAA,CACD6oK,SAAW,CAAA,CACT,EACD,CACH,CAAA,CAAI,IAAI,CAACJ,cAAc,CAAGnB,aAAiB,EAAA,CAAA,IAAI,CAACa,OAAO,CAAG,UAAA,CAAY,IAAI,CAACC,YAAY,CAAG,IAAI9ua,GAAAA,CAAO,IAAI,CAACsva,YAAY,CAAG,CACvHrja,CAAG,CAAA,CAAA,CACH0H,EAAG,CACH3E,CAAAA,IAAAA,CAAM,CACR,CACA,CAAA,IAAI,CAACgga,SAAS,CAAG,IAAIR,eACrB,CAAA,IAAI,CAACS,cAAc,CAAG,IAAI,CAACA,cAAc,CAACjna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACwna,cAAc,CAAG,IAAI,CAACA,cAAc,CAACxna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACyna,YAAY,CAAG,IAAI,CAACA,YAAY,CAACzna,IAAI,CAAC,IAAI,EACjD,CA8GF,CAEA,MAAM7P,UAAa,CAAA,CAAC24C,IAAKuzG,MAASvzG,GAAAA,GAAAA,CAAIjwC,OAAO,CAACwjJ,MAAAA,CAAAA,GAAY,CAC1D,CAAA,MAAMhsJ,QAAW,CAAA,CAACy4C,IAAK6+X,MAAS7+X,GAAAA,GAAAA,CAAIjwC,OAAO,CAAC8ua,MAAAA,CAAQ7+X,IAAIj5C,MAAM,CAAG83a,MAAO93a,CAAAA,MAAM,CAAM,GAAA,CAAC,CACrF,CAAM+3a,MAAAA,iBAAAA,SAA0BlC,YA4B9B,IAAI9tX,MAAAA,CAAOrgD,KAAK,CAAE,CAChB,GAAI,IAAI,CAACsva,OAAO,GAAKtva,KAAO,CAAA,CAC1B,MACF,CACA,IAAI,CAACsva,OAAO,CAAGtva,KACf,CAAA,IAAI,CAACshC,IAAI,GACT,IAAI,CAACiuY,YAAY,CAACtua,KAAK,GACzB,CACA,IAAIo/C,MAAS,EAAA,CACX,OAAO,IAAI,CAACivX,OACd,CACA,IAAIgB,YAAAA,EAAe,CACjB,OAAO,IAAI,CAACC,aAAa,CAE3B,IAAIC,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5Bf,cAAet1U,CAAAA,KAAK,CAAE,CACpB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAEr5T,OAAO,CAAEE,OAAO,CAAE,CAAGpb,KACrD,CAAA,IAAI,CAACw1U,cAAc,CAAClB,IAAI,CAACt0U,KAAAA,CAAAA,CACzB,GAAIu1U,WAAgB,GAAA,OAAA,CAAS,CAC3B,MACF,CACA,IAAI,CAAC7+T,QAAQ,EAAE++T,kBAAkBlB,SACjC,CAAA,CAAA,MAAMnna,KAAO8tG,OAAUj7G,CAAAA,MAAAA,CAAOy1M,UAAU,CAAG,EAC3C,CAAA,IAAI,CAACy/N,YAAY,CAAC3ua,GAAG,CAAC+ta,SAAAA,CAAW,CAC/Bjia,CAAG4oG,CAAAA,OAAAA,CACHlhG,CAAGohG,CAAAA,OAAAA,CACHhuG,IACF,CAAA,CAAA,CACA,MAAMkC,GAAME,CAAAA,IAAAA,CAAKF,GAAG,EACpB,CAAA,MAAMoma,QAAU,CAAC,IAAI,CAACC,YAAY,CAACrja,CAAC,CAAG4oG,OAAM,GAAM,CAAI,CAAC,CAAA,IAAI,CAACy6T,YAAY,CAAC37Z,CAAC,CAAGohG,OAAM,GAAM,CAAA,CAC1F,GAAIs6T,OAAAA,CAAUtB,mBAAuB9ka,EAAAA,GAAAA,CAAM,IAAI,CAACqma,YAAY,CAACtga,IAAI,CAAG8+Z,oBAAAA,CAAsB,CACxF,IAAI,CAACL,MAAM,CAAC8B,SAAS,CAAC1na,MAAM,CAAC,CAC3B,CAAA,CACD,EACH,CACA,IAAI,CAACyna,YAAY,CAACrja,CAAC,CAAG4oG,OACtB,CAAA,IAAI,CAACy6T,YAAY,CAAC37Z,CAAC,CAAGohG,OACtB,CAAA,IAAI,CAACu6T,YAAY,CAACtga,IAAI,CAAG/F,GACzB,CAAA,GAAIlC,IAAQ5O,EAAAA,UAAAA,CAAW,IAAI,CAAC02a,OAAO,CAAE,UAAa,CAAA,CAAA,CAChD,IAAI,CAAC/ta,IAAI,CAAC,wBAAA,CAA0B,IAAI,CAACgva,aAAa,CAAC7B,IAAI,CAACp5T,OAASE,CAAAA,OAAAA,CAAAA,EACvE,CACA,GAAI,CAAChuG,IAAQ1O,EAAAA,QAAAA,CAAS,IAAI,CAACw2a,OAAO,CAAE,UAAA,CAAA,CAAa,CAC/C,IAAI,CAAC/ta,IAAI,CAAC,yBAAA,CAA2B,IAAI,CAACkva,cAAc,CAAC/B,IAAI,CAACp5T,OAAAA,CAASE,UACzE,CACF,CACAy6T,eAAe71U,KAAK,CAAE,CACpB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAE13a,MAAM,CAAEq+G,OAAO,CAAEE,OAAO,CAAE,CAAGpb,KAAAA,CAC7D,KAAM,CAACkZ,UAAWG,SAAU,CAAA,CAAG,IAAI,CAACm8T,cAAc,CAAC/nF,IAAI,CAACztP,KACxD,CAAA,CAAA,GAAIu1U,WAAgB,GAAA,OAAA,CAAS,CAC3B,MACF,CACA,GAAI14a,MAAW,GAAA,IAAI,CAAC65G,QAAQ,CAAE,CAC5B,MACF,CACA,MAAMz+F,KAAO,IAAI,CAACk9Z,YAAY,CAACn1a,GAAG,CAACu0a,SACnC,CAAA,CAAA,GAAI,CAACt8Z,IAAAA,CAAM,CACT,MACF,CACA,KAAM,CAAE7K,IAAI,CAAE,CAAG6K,IACjBA,CAAAA,IAAAA,CAAK3F,CAAC,CAAG4oG,OACTjjG,CAAAA,KAAK+B,CAAC,CAAGohG,QACT,GAAIhuG,IAAAA,CAAM,CACR,GAAI5O,UAAAA,CAAW,IAAI,CAAC02a,OAAO,CAAE,YAAa,CACxC,IAAI,CAAC/ta,IAAI,CAAC,yBAA0B,IAAI,CAACgva,aAAa,CAAC1oF,IAAI,CAACvyO,QAASE,OACvE,CAAA,EAAA,CAAA,KAAO,CACL,IAAI,CAAC04T,MAAM,CAACwC,SAAS,CAACpoa,MAAM,CAAC,CAC3BgrG,UACAG,SACD,CAAA,EACH,CACF,CAAA,KAAO,CACL,GAAI36G,SAAS,IAAI,CAACw2a,OAAO,CAAE,UAAa,CAAA,CAAA,CACtC,IAAI,CAAC/ta,IAAI,CAAC,yBAA2B,CAAA,IAAI,CAACkva,cAAc,CAAC5oF,IAAI,CAACvyO,OAASE,CAAAA,OAAAA,CAAAA,EACzE,MAAO,CACL,IAAI,CAAC04T,MAAM,CAACyC,UAAU,CAACroa,MAAM,CAAC,CAC5BgrG,SACAG,CAAAA,SAAAA,CACD,EACH,CACF,CACF,CACAy8T,YAAa91U,CAAAA,KAAK,CAAE,CAClB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAE,CAAGv0U,KAAAA,CACnC,IAAI,CAACw1U,cAAc,CAAChzZ,EAAE,CAACw9E,KACvB,CAAA,CAAA,GAAIu1U,WAAgB,GAAA,OAAA,CAAS,CAC3B,MACF,CACA,IAAI,CAAC7+T,QAAQ,EAAEq/T,qBAAsBxB,CAAAA,SAAAA,CAAAA,CACrC,MAAMt8Z,IAAAA,CAAO,IAAI,CAACk9Z,YAAY,CAACn1a,GAAG,CAACu0a,SACnC,CAAA,CAAA,GAAI,CAACt8Z,IAAM,CAAA,CACT,MACF,CACA,KAAM,CAAE7K,IAAI,CAAE,CAAG6K,KACjB,IAAI,CAACk9Z,YAAY,CAACrua,MAAM,CAACyta,SAAAA,CAAAA,CACzB,GAAInna,IAAAA,EAAQ5O,WAAW,IAAI,CAAC02a,OAAO,CAAE,UAAA,CAAA,CAAa,CAChD,IAAI,CAAC/ta,IAAI,CAAC,wBAA0B,CAAA,IAAI,CAACgva,aAAa,CAAC3zZ,EAAE,EAC3D,EAAA,CACA,GAAI,CAACpV,IAAAA,EAAQ1O,QAAS,CAAA,IAAI,CAACw2a,OAAO,CAAE,UAAa,CAAA,CAAA,CAC/C,IAAI,CAAC/ta,IAAI,CAAC,yBAA2B,CAAA,IAAI,CAACkva,cAAc,CAAC7zZ,EAAE,IAC7D,CACF,CACAi0F,OAAO78D,OAAO,CAAE,CACd,KAAK,CAAC68D,MAAO78D,CAAAA,OAAAA,CACb,CAAA,IAAI,CAAC88D,QAAQ,CAAG98D,QAChB,IAAI,CAAC88D,QAAQ,CAACx2G,gBAAgB,CAAC,aAAA,CAAe,IAAI,CAACo1a,cAAc,CACjE,CAAA,IAAI,CAAC5+T,QAAQ,CAACx2G,gBAAgB,CAAC,aAAA,CAAe,IAAI,CAAC21a,cAAc,CAAA,CACjE,IAAI,CAACn/T,QAAQ,CAACx2G,gBAAgB,CAAC,YAAa,IAAI,CAAC41a,YAAY,CAAA,CAC7D,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,eAAiB,CAAA,IAAI,CAAC41a,YAAY,EACnE,CACAn/T,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAACv2G,mBAAmB,CAAC,cAAe,IAAI,CAACm1a,cAAc,CACpE,CAAA,IAAI,CAAC5+T,QAAQ,CAACv2G,mBAAmB,CAAC,aAAe,CAAA,IAAI,CAAC01a,cAAc,CAAA,CACpE,IAAI,CAACn/T,QAAQ,CAACv2G,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAAC21a,YAAY,EAChE,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,eAAiB,CAAA,IAAI,CAAC21a,YAAY,CACpE,CAAA,IAAI,CAACX,YAAY,CAACtua,KAAK,EACvB,CAAA,KAAK,CAAC8vG,MACR,GAAA,CACAzvE,IAAO,EAAA,CACL,IAAI,CAAC4sY,MAAM,CAACwC,SAAS,CAACpoa,MAAM,CAAC,CAC3B,IAAI,CAACioa,aAAa,CAACvwa,KAAK,CAAC0M,CAAC,CAC1B,IAAI,CAAC6ja,aAAa,CAACvwa,KAAK,CAACoU,CAAC,CAC3B,CAAA,CACD,IAAI,CAAC85Z,MAAM,CAACyC,UAAU,CAACroa,MAAM,CAAC,CAC5B,IAAI,CAACmoa,cAAc,CAACzwa,KAAK,CAAC0M,CAAC,CAC3B,IAAI,CAAC+ja,cAAc,CAACzwa,KAAK,CAACoU,CAAC,CAC5B,CAAA,CACD,OAAO,KAAK,CAACktB,IACf,EAAA,CACAE,SAAU,CACR,IAAI,CAAC+uY,aAAa,CAAC3zZ,EAAE,EAAA,CACrB,IAAI,CAAC6zZ,cAAc,CAAC7zZ,EAAE,GACtB,KAAK,CAAC4kB,UACR,CApKAphC,WAAAA,CAAYigD,MAAM,CAAC,CACjB,KAAK,CAAC,CACJqwX,SAAAA,CAAW,CACT,CACA,CAAA,CAAA,CACD,CACDC,UAAY,CAAA,CACV,CACA,CAAA,CAAA,CACD,CACDX,SAAAA,CAAW,CACT,CACD,CACH,GAAI,IAAI,CAACJ,cAAc,CAAGnB,aAAAA,EAAAA,CAAiB,IAAI,CAACa,OAAO,CAAG,iBAAkB,IAAI,CAACC,YAAY,CAAG,IAAI9ua,IAAO,IAAI,CAACsva,YAAY,CAAG,CAC7Hrja,CAAAA,CAAG,EACH0H,CAAG,CAAA,CAAA,CACH3E,KAAM,CACR,CAAA,CACA,GAAI4wC,MAAQ,CAAA,CACV,IAAI,CAACA,MAAM,CAAGA,OAChB,CACA,IAAI,CAACkwX,aAAa,CAAG,IAAItB,eACzB,CAAA,IAAI,CAACwB,cAAc,CAAG,IAAIxB,eAC1B,CAAA,IAAI,CAACS,cAAc,CAAG,IAAI,CAACA,cAAc,CAACjna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACwna,cAAc,CAAG,IAAI,CAACA,cAAc,CAACxna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACyna,YAAY,CAAG,IAAI,CAACA,YAAY,CAACzna,IAAI,CAAC,IAAI,EACjD,CA2IF,CAEA,MAAMmoa,KAAQ,CAAA,IAAI12Z,IAClB,CAAM22Z,MAAAA,gBAAAA,SAAyB1C,WAmB7BuB,CAAAA,cAAAA,CAAet1U,KAAK,CAAE,CACpB,KAAM,CAAEu0U,SAAS,CAAEgB,WAAW,CAAE,CAAGv1U,KAAAA,CACnC,IAAI,CAACw1U,cAAc,CAAClB,IAAI,CAACt0U,KAAAA,CAAAA,CACzB,GAAIu1U,WAAgB,GAAA,OAAA,CAAS,CAC3B,MACF,CACA,IAAI,CAAC7+T,QAAQ,EAAE++T,kBAAkBlB,SACjC,CAAA,CAAA,IAAI,CAACmC,cAAc,CAAClwa,GAAG,CAAC+ta,SAAAA,CAAWv0U,KACnC,CAAA,CAAA,IAAI,CAAC8zU,MAAM,CAAC71X,KAAK,CAAC/vC,MAAM,CAAC,CACvB,EACD,CACD,CAAA,GAAI,IAAI,CAACwoa,cAAc,CAACvza,IAAI,CAAG,CAAA,CAAG,CAChC,IAAI,CAACwza,YAAY,CAAC,IAAI,CAACC,WAAW,CAClC,CAAA,IAAI,CAACC,UAAU,CAAG,IAAI,CAACC,aAAa,GACtC,CACF,CACAjB,cAAAA,CAAe71U,KAAK,CAAE,CACpB,KAAM,CAAEu1U,WAAW,CAAE14a,MAAM,CAAE03a,SAAS,CAAE,CAAGv0U,KAAAA,CAC3C,KAAM,CAACkZ,UAAWG,SAAU,CAAA,CAAG,IAAI,CAACm8T,cAAc,CAAC/nF,IAAI,CAACztP,KACxD,CAAA,CAAA,GAAIu1U,WAAgB,GAAA,OAAA,CAAS,CAC3B,MACF,CACA,GAAI14a,MAAW,GAAA,IAAI,CAAC65G,QAAQ,CAAE,CAC5B,MACF,CACA,GAAI,IAAI,CAACggU,cAAc,CAACvza,IAAI,GAAK,EAAG,CAClC,MACF,CACA,IAAI,CAACuza,cAAc,CAAClwa,GAAG,CAAC+ta,UAAWv0U,KACnC,CAAA,CAAA,GAAI,IAAI,CAAC02U,cAAc,CAACvza,IAAI,CAAG,CAAA,CAAG,CAChC,MAAMu5V,GAAAA,CAAM,IAAI,CAACi6E,YAAY,CAACH,KAC9B,CAAA,CAAA,IAAI,CAAC1C,MAAM,CAAChza,KAAK,CAACoN,MAAM,CAAC,CACvBwuV,GAAAA,CAAIpqV,CAAC,CAAG,IAAI,CAACska,WAAW,CAACtka,CAAC,CAC1BoqV,GAAAA,CAAI1iV,CAAC,CAAG,IAAI,CAAC48Z,WAAW,CAAC58Z,CAAC,CAC3B,CAAA,CACD,IAAI,CAAC48Z,WAAW,CAAC55a,IAAI,CAAC0/V,GAAAA,CAAAA,CACtB,MAAMq6E,SAAY,CAAA,IAAI,CAACD,aAAa,EAAA,CACpC,GAAI,IAAI,CAACD,UAAU,CAAG,CAAG,CAAA,CACvB,IAAI,CAAC/C,MAAM,CAACkD,KAAK,CAAC9oa,MAAM,CAAC,CACvB,IAAI,CAAC2oa,UAAU,CAAGE,UACnB,EACH,CACA,IAAI,CAACF,UAAU,CAAGE,UACpB,CAAO,KAAA,CACL,IAAI,CAACjD,MAAM,CAAChza,KAAK,CAACoN,MAAM,CAAC,CACvBgrG,SACAG,CAAAA,SAAAA,CACD,EACH,CACF,CACAy8T,YAAa91U,CAAAA,KAAK,CAAE,CAClB,KAAM,CAAEu1U,WAAW,CAAEhB,SAAS,CAAE,CAAGv0U,KAAAA,CACnC,IAAI,CAACw1U,cAAc,CAAChzZ,EAAE,CAACw9E,OACvB,GAAIu1U,WAAAA,GAAgB,OAAS,CAAA,CAC3B,MACF,CACA,IAAI,CAAC7+T,QAAQ,EAAEq/T,qBAAsBxB,CAAAA,SAAAA,CAAAA,CACrC,IAAI,CAACmC,cAAc,CAAC5va,MAAM,CAACyta,SAAAA,CAAAA,CAC3B,IAAI,CAACT,MAAM,CAAC71X,KAAK,CAAC/vC,MAAM,CAAC,CACvB,CAAC,CAAA,CACF,CACD,CAAA,GAAI,IAAI,CAACwoa,cAAc,CAACvza,IAAI,CAAG,EAAG,CAChC,IAAI,CAAC0za,UAAU,CAAG,CAAC,EACrB,CACA,IAAI,CAACD,WAAW,CAACpwa,GAAG,CAAC,CAAA,CAAG,CAC1B,EAAA,CACAywa,cAAej3U,CAAAA,KAAK,CAAE,CACpBA,KAAAA,CAAMC,cAAc,GACtB,CACA02U,aAAa9nZ,GAAG,CAAE,CAChB,GAAI,IAAI,CAAC6nZ,cAAc,CAACvza,IAAI,CAAG,CAAG,CAAA,CAChC,OAAO0rB,GAAIroB,CAAAA,GAAG,CAAC,CAAA,CAAG,CACpB,CAAA,CACA,KAAM,CAACqH,CAAAA,CAAGC,EAAE,CAAG,IAAI,CAAC4oa,cAAc,CAAC9va,MAAM,EAAA,CACzC,MAAM2xG,EAAAA,CAAK1qG,EAAEqtG,OAAO,CAAGptG,EAAEotG,OAAO,CAChC,MAAM1C,EAAK3qG,CAAAA,CAAAA,CAAEutG,OAAO,CAAGttG,CAAEstG,CAAAA,OAAO,CAChC,OAAOvsF,GAAAA,CAAIroB,GAAG,CAACsH,CAAEotG,CAAAA,OAAO,CAAG3C,EAAK,CAAA,EAAA,CAAKzqG,CAAEstG,CAAAA,OAAO,CAAG5C,EAAAA,CAAK,GACxD,CACAs+T,aAAAA,EAAgB,CACd,GAAI,IAAI,CAACJ,cAAc,CAACvza,IAAI,CAAG,CAAG,CAAA,CAChC,OAAO,CACT,CACA,KAAM,CAAC0K,CAAAA,CAAGC,EAAE,CAAG,IAAI,CAAC4oa,cAAc,CAAC9va,MAAM,GACzC,MAAM2xG,EAAAA,CAAK1qG,EAAEqtG,OAAO,CAAGptG,EAAEotG,OAAO,CAChC,MAAM1C,EAAAA,CAAK3qG,CAAEutG,CAAAA,OAAO,CAAGttG,CAAEstG,CAAAA,OAAO,CAChC,OAAO59G,IAAAA,CAAKud,IAAI,CAACw9F,EAAAA,CAAKA,EAAKC,CAAAA,EAAAA,CAAKA,EAClC,CAAA,CACA/B,OAAO78D,OAAO,CAAE,CACd,KAAK,CAAC68D,OAAO78D,OACb,CAAA,CAAA,IAAI,CAAC88D,QAAQ,CAAG98D,QAChB,IAAI,CAAC88D,QAAQ,CAACx2G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAACo1a,cAAc,CACjE,CAAA,IAAI,CAAC5+T,QAAQ,CAACx2G,gBAAgB,CAAC,aAAA,CAAe,IAAI,CAAC21a,cAAc,CACjE,CAAA,IAAI,CAACn/T,QAAQ,CAACx2G,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAAC41a,YAAY,EAC7D,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,gBAAiB,IAAI,CAAC41a,YAAY,CACjE,CAAA,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAAC+2a,cAAc,EACnE,CACAtgU,MAAS,EAAA,CACP,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAACv2G,mBAAmB,CAAC,aAAA,CAAe,IAAI,CAACm1a,cAAc,CAAA,CACpE,IAAI,CAAC5+T,QAAQ,CAACv2G,mBAAmB,CAAC,cAAe,IAAI,CAAC01a,cAAc,CAAA,CACpE,IAAI,CAACn/T,QAAQ,CAACv2G,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAAC21a,YAAY,CAAA,CAChE,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,eAAA,CAAiB,IAAI,CAAC21a,YAAY,EACpE,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,cAAe,IAAI,CAAC82a,cAAc,CACpE,CAAA,IAAI,CAACP,cAAc,CAAC7va,KAAK,EAAA,CACzB,KAAK,CAAC8vG,SACR,CA7HA3wG,WAAAA,EAAa,CACX,KAAK,CAAC,CACJlF,MAAO,CACL,CAAA,CACA,CACD,CAAA,CACDm9C,KAAO,CAAA,CACL,EACD,CACD+4X,KAAAA,CAAO,CACL,CACD,CACH,GAAI,IAAI,CAACxB,cAAc,CAAGnB,aAAiB,EAAA,CAAA,IAAI,CAACqC,cAAc,CAAG,IAAIrwa,GAAO,CAAA,IAAI,CAACuwa,WAAW,CAAG,IAAI92Z,IAAAA,CAAQ,IAAI,CAAC+2Z,UAAU,CAAG,CAAC,CAC9H,CAAA,IAAI,CAACvB,cAAc,CAAG,IAAI,CAACA,cAAc,CAACjna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACwna,cAAc,CAAG,IAAI,CAACA,cAAc,CAACxna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACyna,YAAY,CAAG,IAAI,CAACA,YAAY,CAACzna,IAAI,CAAC,IAAI,CAC/C,CAAA,IAAI,CAAC4oa,cAAc,CAAG,IAAI,CAACA,cAAc,CAAC5oa,IAAI,CAAC,IAAI,EACrD,CA6GF,CAEA,MAAM6oa,OAAU,CAAA,CACdj9T,OAAS,CAAA,KACX,CACA,CAAA,MAAMk9T,UAAY,CAChB/3O,CAAAA,CAAG,EACHC,CAAG,CAAA,CAAA,CACH+3O,EAAG,CACHC,CAAAA,CAAAA,CAAG,CACHC,CAAAA,CAAAA,CAAG,CACHC,CAAAA,CAAAA,CAAG,EACHxhD,CAAG,CAAA,CAAA,CACHhiL,EAAG,CACHyjO,CAAAA,CAAAA,CAAG,EACHC,CAAG,CAAA,CAAA,CACHC,CAAG,CAAA,EAAA,CACHjjO,CAAG,CAAA,EAAA,CACHkjO,EAAG,EACHjjO,CAAAA,CAAAA,CAAG,GACHkjO,CAAG,CAAA,EAAA,CACHC,EAAG,EACHC,CAAAA,CAAAA,CAAG,EACHhiD,CAAAA,CAAAA,CAAG,EACHiiD,CAAAA,CAAAA,CAAG,GACHC,CAAG,CAAA,EAAA,CACHC,EAAG,EACHC,CAAAA,CAAAA,CAAG,GACHC,CAAG,CAAA,EAAA,CACHC,CAAG,CAAA,EAAA,CACHC,CAAG,CAAA,EAAA,CACHC,EAAG,EACH,CAAA,GAAA,CAAK,GACL,GAAK,CAAA,EAAA,CACL,IAAK,EACL,CAAA,GAAA,CAAK,EACL,CAAA,GAAA,CAAK,EACL,CAAA,GAAA,CAAK,GACL,GAAK,CAAA,EAAA,CACL,IAAK,EACL,CAAA,GAAA,CAAK,GACL,GAAK,CAAA,EAAA,CACLn8Z,EAAI,CAAA,EAAA,CACJC,IAAM,CAAA,EAAA,CACNE,KAAM,EACND,CAAAA,KAAAA,CAAO,GACPk8Z,KAAO,CAAA,EAAA,CACPC,MAAO,EACPC,CAAAA,IAAAA,CAAM,EACR,CAAA,CACA,MAAMC,SAAAA,CAAY54a,OAAOoW,IAAI,CAACiha,WAAWj5a,MAAM,CAC/C,MAAMovC,KAAQrwC,CAAAA,KAAAA,CAAMy7a,SAAWznR,CAAAA,CAAAA,IAAI,CAAC,CAAA,CACpC,OAAM0nR,mBAA4B5E,SAAAA,WAAAA,CA+ChC6E,QAAS54U,CAAAA,KAAK,CAAE,CACdA,MAAMC,cAAc,EAAA,CACpB,IAAI,CAAC6zU,MAAM,CAAC+E,KAAK,CAAC3qa,MAAM,CAAC,CACvB8xF,KAAAA,CAAMiZ,MAAM,CACb,EACH,CACAq8T,cAAAA,CAAet1U,KAAK,CAAE,CACpB,IAAI,CAACw1U,cAAc,CAAClB,IAAI,CAACt0U,KACzB,CAAA,CAAA,GAAIA,KAAMu1U,CAAAA,WAAW,GAAK,OAAA,CAAS,CACjC,MACF,CACA,GAAI,IAAI,CAACuD,YAAY,CAAE,CACrB,GAAI/va,QAAAA,CAASmvG,kBAAkB,GAAK,IAAI,CAACxB,QAAQ,CAAE,CACjD,IAAI,CAACA,QAAQ,EAAEgE,kBACjB,GAAA,CACF,CAAO,KAAA,CACL,IAAI,CAAChE,QAAQ,EAAE++T,iBAAkBz1U,CAAAA,KAAAA,CAAMu0U,SAAS,EAClD,CACA,IAAI,CAACwE,aAAa,EAClB,CAAA,IAAI,CAACC,OAAO,CAACh5U,KAAAA,CAAMyY,MAAM,CAAC,CAAG,CAC7B,CAAA,IAAI,CAACq7T,MAAM,CAACr7T,MAAM,CAACvqG,MAAM,CAAC,IAAI,CAAC8qa,OAAO,CAAA,CACtC,GAAI,IAAI,CAACC,UAAU,GAAK,CAAC,CAAA,CAAG,CAC1B,MACF,CACA,IAAI,CAACA,UAAU,CAAGj5U,KAAAA,CAAMu0U,UAC1B,CACAsB,cAAe71U,CAAAA,KAAK,CAAE,CACpB,KAAM,CAACkZ,SAAWG,CAAAA,SAAAA,CAAU,CAAG,IAAI,CAACm8T,cAAc,CAAC/nF,IAAI,CAACztP,OACxD,GAAIA,KAAAA,CAAMu1U,WAAW,GAAK,OAAA,CAAS,CACjC,MACF,CACA,GAAIv1U,MAAMnjG,MAAM,GAAK,IAAI,CAAC65G,QAAQ,CAAE,CAClC,MACF,CACA,GAAI,IAAI,CAACoiU,YAAY,CAAE,CACrB,GAAI/va,QAASmvG,CAAAA,kBAAkB,GAAK,IAAI,CAACxB,QAAQ,CAAE,CACjD,MACF,CACF,CAAO,KAAA,CACL,GAAI,IAAI,CAACuiU,UAAU,GAAKj5U,KAAAA,CAAMu0U,SAAS,CAAE,CACvC,MACF,CACF,CACA,IAAI,CAACT,MAAM,CAACx7T,KAAK,CAACpqG,MAAM,CAAC,CACvBgrG,SACAG,CAAAA,SAAAA,CACD,EACH,CACAy8T,YAAAA,CAAa91U,KAAK,CAAE,CAClB,IAAI,CAACw1U,cAAc,CAAChzZ,EAAE,CAACw9E,KAAAA,CAAAA,CACvB,GAAIA,KAAMu1U,CAAAA,WAAW,GAAK,OAAA,CAAS,CACjC,MACF,CACA,GAAI,CAAC,IAAI,CAACuD,YAAY,CAAE,CACtB,IAAI,CAACpiU,QAAQ,EAAEq/T,qBAAAA,CAAsB/1U,MAAMu0U,SAAS,EACtD,CACA,IAAI,CAACwE,aAAa,GAClB,IAAI,CAACjF,MAAM,CAACr7T,MAAM,CAACvqG,MAAM,CAAC,IAAI,CAAC8qa,OAAO,CAAA,CACtC,GAAI,IAAI,CAACC,UAAU,GAAKj5U,KAAAA,CAAMu0U,SAAS,CAAE,CACvC,MACF,CACA,IAAI,CAAC0E,UAAU,CAAG,CAAC,EACrB,CACAhC,cAAAA,CAAej3U,KAAK,CAAE,CACpBA,KAAMC,CAAAA,cAAc,GACtB,CACAi5U,WAAWl5U,KAAK,CAAE,CAChB,GAAI,IAAI,CAAC84U,YAAY,EAAI/va,QAASmvG,CAAAA,kBAAkB,GAAK,IAAI,CAACxB,QAAQ,CAAE,CACtE,MACF,CACA1W,MAAMqX,eAAe,EAAA,CACrB,IAAI,CAAC8hU,OAAO,CAACn5U,MAAMz8F,IAAI,CAAE,GAC3B,CACA61a,QAAAA,CAASp5U,KAAK,CAAE,CACdA,KAAMqX,CAAAA,eAAe,EACrB,CAAA,IAAI,CAAC8hU,OAAO,CAACn5U,MAAMz8F,IAAI,CAAE,GAC3B,CACAw1a,aAAAA,EAAgB,CACd,IAAI,IAAI96a,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAAC+6a,OAAO,CAAC96a,MAAM,CAAED,CAAAA,EAAAA,CAAI,CAC1C,GAAI,IAAI,CAAC+6a,OAAO,CAAC/6a,CAAAA,CAAE,GAAK,CAAG,CAAA,CACzB,IAAI,CAAC+6a,OAAO,CAAC/6a,CAAAA,CAAE,CAAG,CAAC,EACnB,QACF,CACA,IAAI,CAAC+6a,OAAO,CAAC/6a,CAAE,CAAA,CAAG,EACpB,CACF,CACAk7a,OAAAA,CAAQ51a,IAAI,CAAEqC,KAAK,CAAE,CACnB,GAAI,CAAC,IAAI,CAACyza,OAAO,CAAC9ya,GAAG,CAAChD,MAAO,CAC3B,MACF,CACA,IAAI,CAAC+1a,OAAO,CAAC,IAAI,CAACD,OAAO,CAACr5a,GAAG,CAACuD,IAAS,CAAA,EAAA,CAAA,CAAE,CAAGqC,MAC9C,CACA6wG,OAAO78D,OAAO,CAAE,CACd,KAAK,CAAC68D,MAAAA,CAAO78D,QACb,CAAA,IAAI,CAAC88D,QAAQ,CAAG98D,QAChB,IAAI,CAAC88D,QAAQ,CAACx2G,gBAAgB,CAAC,QAAS,IAAI,CAAC04a,QAAQ,CAAE1B,OACvD,CAAA,CAAA,IAAI,CAACxgU,QAAQ,CAACx2G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAACo1a,cAAc,CAAA,CACjE,IAAI,CAAC5+T,QAAQ,CAACx2G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAAC21a,cAAc,EACjE,IAAI,CAACn/T,QAAQ,CAACx2G,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAAC41a,YAAY,CAC7D,CAAA,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,eAAA,CAAiB,IAAI,CAAC41a,YAAY,CACjE,CAAA,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,eAAgB,IAAI,CAAC41a,YAAY,CAChE,CAAA,IAAI,CAACp/T,QAAQ,CAACx2G,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAAC+2a,cAAc,CAAA,CACjEh3a,OAAOC,gBAAgB,CAAC,SAAW,CAAA,IAAI,CAACg5a,UAAU,CAAE,KACpDj5a,CAAAA,CAAAA,MAAAA,CAAOC,gBAAgB,CAAC,OAAA,CAAS,IAAI,CAACk5a,QAAQ,CAAE,KAAA,EAClD,CACAziU,MAAAA,EAAS,CACP,GAAI,CAAC,IAAI,CAACD,QAAQ,CAAE,CAClB,MACF,CACA,IAAI,CAACA,QAAQ,CAACv2G,mBAAmB,CAAC,QAAS,IAAI,CAACy4a,QAAQ,CAAE1B,OAAAA,CAAAA,CAC1D,IAAI,CAACxgU,QAAQ,CAACv2G,mBAAmB,CAAC,aAAA,CAAe,IAAI,CAACm1a,cAAc,EACpE,IAAI,CAAC5+T,QAAQ,CAACv2G,mBAAmB,CAAC,cAAe,IAAI,CAAC01a,cAAc,CACpE,CAAA,IAAI,CAACn/T,QAAQ,CAACv2G,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAAC21a,YAAY,CAAA,CAChE,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,eAAiB,CAAA,IAAI,CAAC21a,YAAY,EACpE,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,cAAgB,CAAA,IAAI,CAAC21a,YAAY,CACnE,CAAA,IAAI,CAACp/T,QAAQ,CAACv2G,mBAAmB,CAAC,aAAA,CAAe,IAAI,CAAC82a,cAAc,CACpEh3a,CAAAA,MAAAA,CAAOE,mBAAmB,CAAC,UAAW,IAAI,CAAC+4a,UAAU,CAAE,KAAA,CAAA,CACvDj5a,OAAOE,mBAAmB,CAAC,OAAS,CAAA,IAAI,CAACi5a,QAAQ,CAAE,KACnD,CAAA,CAAA,IAAI,CAACE,OAAO,CAACroR,IAAI,CAAC,CAAA,CAAA,CAClB,IAAI,CAACsoR,QAAQ,CAACtoR,IAAI,CAAC,CAAA,CAAA,CACnB,KAAK,CAACt6C,MACR,GAAA,CACAzvE,MAAO,CACL,IAAI,IAAIjpC,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAIqvC,MAAMpvC,MAAM,CAAED,IAAI,CACnCqvC,KAAK,CAACrvC,CAAE,CAAA,CAAG,IAAI,CAACq7a,OAAO,CAACr7a,EAAE,CAAG,IAAI,CAACs7a,QAAQ,CAACt7a,EAAE,CAC7C,IAAI,CAACs7a,QAAQ,CAACt7a,EAAE,CAAG,IAAI,CAACq7a,OAAO,CAACr7a,GAAE,CAEpC,IAAI,CAAC61a,MAAM,CAAChua,GAAG,CAACoI,MAAM,CAACo/B,KACvB,CAAA,CAAA,OAAO,KAAK,CAACpG,IAAAA,EACf,CA5KAlhC,WAAAA,CAAY,CAAEwza,WAAAA,CAAc,KAAK,CAAE,CAAG,EAAE,CAAC,CACvC,KAAK,CAAC,CACJ1za,GAAAA,CAAK7I,KAAMy7a,CAAAA,SAAAA,CAAAA,CAAWznR,IAAI,CAAC,CAAA,CAAA,CAC3Bx4C,OAAQ,CACN,CAAA,CACA,EACA,CACD,CAAA,CACDH,KAAO,CAAA,CACL,CACA,CAAA,CAAA,CACD,CACDugU,KAAO,CAAA,CACL,EACD,CACH,CAAA,CAAI,IAAI,CAACrD,cAAc,CAAGnB,aAAAA,EAAAA,CAAiB,IAAI,CAAC4E,UAAU,CAAG,CAAC,EAAG,IAAI,CAACI,OAAO,CAAG,IAAIhza,GAAO,CAAA,IAAI,CAACkza,QAAQ,CAAGt8a,KAAMy7a,CAAAA,SAAAA,CAAAA,CAAWznR,IAAI,CAAC,CAAA,CAAA,CAAI,IAAI,CAACqoR,OAAO,CAAGr8a,KAAAA,CAAMy7a,SAAWznR,CAAAA,CAAAA,IAAI,CAAC,CAAI,CAAA,CAAA,IAAI,CAAC+nR,OAAO,CAAG/7a,MAAM,CAAGg0J,CAAAA,CAAAA,IAAI,CAAC,CAAA,CAC3M,CAAA,IAAI,CAAC6nR,YAAY,CAAGU,aAAe,KACnC,CAAA,KAAM,CAAEtjU,OAAO,CAAE,CAAGyiU,mBAAAA,CACpB,IAAI,IAAI16a,EAAI,CAAGA,CAAAA,CAAAA,CAAI,GAAIA,CAAI,EAAA,CAAA,CACzB,MAAMsF,IAAO,CAAA,CAAC,GAAG,EAAEwB,MAAOC,CAAAA,YAAY,CAAC,GAAI3B,CAAAA,UAAU,CAAC,CAAKpF,CAAAA,CAAAA,CAAAA,CAAAA,CAAG,CAAC,CAC/D,IAAI,CAACo7a,OAAO,CAAC7ya,GAAG,CAACjD,IAAM2yG,CAAAA,OAAAA,CAAQkpF,CAAC,CAAGnhM,CAAAA,EACrC,CACA,IAAI,IAAIA,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,EAAA,CAAIA,IAAI,CACzB,MAAMsF,KAAO,CAAC,KAAK,EAAEtF,CAAE,CAAA,CAAC,CACxB,IAAI,CAACo7a,OAAO,CAAC7ya,GAAG,CAACjD,IAAM2yG,CAAAA,OAAO,CAAC,GAAA,CAAI,CAAGj4G,CACxC,EAAA,CACA,IAAI,CAACo7a,OAAO,CAAC7ya,GAAG,CAAC,SAAA,CAAW0vG,QAAQ/5F,EAAE,CAAA,CACtC,IAAI,CAACk9Z,OAAO,CAAC7ya,GAAG,CAAC,WAAA,CAAa0vG,QAAQ95F,IAAI,CAAA,CAC1C,IAAI,CAACi9Z,OAAO,CAAC7ya,GAAG,CAAC,WAAa0vG,CAAAA,OAAAA,CAAQ55F,IAAI,CAAA,CAC1C,IAAI,CAAC+8Z,OAAO,CAAC7ya,GAAG,CAAC,aAAc0vG,OAAQ75F,CAAAA,KAAK,CAC5C,CAAA,IAAI,CAACg9Z,OAAO,CAAC7ya,GAAG,CAAC,QAAS0vG,OAAQqiU,CAAAA,KAAK,EACvC,IAAI,CAACc,OAAO,CAAC7ya,GAAG,CAAC,YAAa0vG,OAAQsiU,CAAAA,KAAK,EAC3C,IAAI,CAACa,OAAO,CAAC7ya,GAAG,CAAC,YAAA,CAAc0vG,OAAQsiU,CAAAA,KAAK,EAC5C,IAAI,CAACa,OAAO,CAAC7ya,GAAG,CAAC,aAAe0vG,CAAAA,OAAAA,CAAQuiU,IAAI,CAAA,CAC5C,IAAI,CAACY,OAAO,CAAC7ya,GAAG,CAAC,cAAgB0vG,CAAAA,OAAAA,CAAQuiU,IAAI,CAC7C,CAAA,IAAI,CAACG,QAAQ,CAAG,IAAI,CAACA,QAAQ,CAACvqa,IAAI,CAAC,IAAI,CACvC,CAAA,IAAI,CAACina,cAAc,CAAG,IAAI,CAACA,cAAc,CAACjna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACwna,cAAc,CAAG,IAAI,CAACA,cAAc,CAACxna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACyna,YAAY,CAAG,IAAI,CAACA,YAAY,CAACzna,IAAI,CAAC,IAAI,CAC/C,CAAA,IAAI,CAAC4oa,cAAc,CAAG,IAAI,CAACA,cAAc,CAAC5oa,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAAC6qa,UAAU,CAAG,IAAI,CAACA,UAAU,CAAC7qa,IAAI,CAAC,IAAI,CAC3C,CAAA,IAAI,CAAC+qa,QAAQ,CAAG,IAAI,CAACA,QAAQ,CAAC/qa,IAAI,CAAC,IAAI,EACzC,CAmIF,CAjLMsqa,mBAEGziU,CAAAA,OAAO,CAAGihU,SAiLnB,CAAA,MAAMsC,aAAe,CACnBr6O,CAAAA,CAAG,EACHC,CAAG,CAAA,CAAA,CACH+4O,CAAG,CAAA,CAAA,CACHC,CAAG,CAAA,CAAA,CACHqB,GAAI,CACJC,CAAAA,EAAAA,CAAI,CACJC,CAAAA,EAAAA,CAAI,CACJC,CAAAA,EAAAA,CAAI,EACJC,MAAQ,CAAA,CAAA,CACRC,KAAO,CAAA,CAAA,CACPC,UAAY,CAAA,EAAA,CACZC,YAAa,EACf,CAAA,CACA,MAAMC,YAAep6a,CAAAA,MAAAA,CAAOoW,IAAI,CAACuja,YAAAA,CAAAA,CAAcv7a,MAC/C,CAAMi8a,MAAAA,aAAAA,SAAsBpG,YAiB1B7sY,IAAO,EAAA,CACL,MAAMlmC,QAAWV,CAAAA,SAAAA,CAAUW,WAAW,EACtC,CAAA,IAAI,IAAIhD,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI+C,SAAS9C,MAAM,CAAED,IAAI,CACtC,MAAM2iH,GAAK5/G,QAAQ,CAAC/C,CAAE,CAAA,CACtB,GAAI,CAAC2iH,GAAI,CACP,QACF,CACA,GAAIA,EAAAA,CAAGlD,OAAO,GAAK,UAAA,CAAY,CAC7B,QACF,CACA,GAAIkD,GAAGvD,IAAI,CAACn/G,MAAM,CAAG,CAAA,CAAG,CACtB,QACF,CACA,GAAI0iH,EAAAA,CAAGlH,OAAO,CAACx7G,MAAM,CAAGg8a,YAAAA,CAAc,CACpC,QACF,CACA,KAAM,CAAExgU,OAAO,CAAE2D,IAAI,CAAE,CAAGuD,GAC1B,IAAI,IAAIp8B,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC41V,WAAW,CAACl8a,MAAM,CAAEsmF,CAAAA,EAAAA,CAAI,CAC9C,MAAMrI,KAAAA,CAAQ,CAACu9B,OAAO,CAACl1B,EAAE,CAAC+5B,OAAO,CACjC,IAAI,CAACu1T,MAAM,CAACp6T,OAAO,CAACl1B,CAAE,CAAA,CAAGrI,MAAQ,IAAI,CAACi+V,WAAW,CAAC51V,CAAE,CACpD,CAAA,IAAI,CAAC41V,WAAW,CAAC51V,CAAAA,CAAE,CAAGrI,MACxB,CACA,IAAI,CAAC23V,MAAM,CAACuG,SAAS,CAACnsa,MAAM,CAAC,CAC3BmvG,IAAI,CAAC,CAAE,CAAA,CACPA,IAAI,CAAC,CAAE,CAAA,CACR,EACD,IAAI,CAACy2T,MAAM,CAACwG,UAAU,CAACpsa,MAAM,CAAC,CAC5BmvG,IAAI,CAAC,CAAA,CAAE,CACPA,IAAI,CAAC,EAAE,CACR,EACH,CACA,OAAO,KAAK,CAACn2E,IAAAA,EACf,CA7CAlhC,WAAAA,EAAa,CACX,KAAK,CAAC,CACJ0zG,OAASz8G,CAAAA,KAAAA,CAAMi9a,cAAcjpR,IAAI,CAAC,CAClCopR,CAAAA,CAAAA,SAAAA,CAAW,CACT,CAAA,CACA,EACD,CACDC,UAAAA,CAAY,CACV,CACA,CAAA,CAAA,CACD,CACC,CAAA,CAAA,IAAI,CAACF,WAAW,CAAGn9a,KAAAA,CAAMi9a,cAAcjpR,IAAI,CAAC,CAClD,EAAA,CAkCF,CAlDMkpR,cAEGI,UAAU,CAAGd,YAkDtB,CAAA,MAAMe,IAAO,CAAA,CAAC/3G,QAAS3mN,EAAK,GAAA,CAAA,CAAIt+G,KAAKkV,GAAG,CAAC+vT,QAAS3mN,EAAK,CAAA,GAAA,CAAA,CAEvD,MAAM2+T,QAAAA,CAAW,IAAIvga,IAAAA,CACrB,MAAMwga,QAAW,CAAA,IAAIxga,KACrB,MAAMwpI,OAAAA,CAAU,IAAIxpI,IACpB,CAAA,MAAM7M,KAAQ,CAAA,IAAI6M,IAClB,CAAA,MAAMsI,GAAK,IAAItI,IAAAA,CACf,MAAMyga,UAAa,CAAA,IAAI70Z,IACvB,CAAM80Z,MAAAA,aAAAA,SAAsB3G,eAC1B,CAAA,IAAIZ,UAAWzta,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACi1a,WAAW,CAACxH,UAAU,CAACr2a,IAAI,CAAC4I,KAAAA,CAAAA,CACjC,IAAI,CAACy/X,KAAK,CAACroY,IAAI,CAAC,IAAI,CAAC69a,WAAW,CAAC96Z,MAAM,CAAC7F,IAAAA,CAAK8B,IAAI,CAAA,EACnD,CACA,IAAIq3Z,UAAAA,EAAa,CACf,OAAO,IAAI,CAACwH,WAAW,CAACxH,UAC1B,CACA,IAAIC,SAAS1ta,KAAK,CAAE,CAClB,IAAI,CAACi1a,WAAW,CAACvH,QAAQ,CAACt2a,IAAI,CAAC4I,KAAAA,CAAAA,CAC/B,IAAI,CAACy/X,KAAK,CAACroY,IAAI,CAAC,IAAI,CAAC69a,WAAW,CAAC96Z,MAAM,CAAC7F,IAAK8B,CAAAA,IAAI,GACnD,CACA,IAAIs3Z,UAAW,CACb,OAAO,IAAI,CAACuH,WAAW,CAACvH,QAAQ,CAElC78T,OAAOusR,IAAI,CAAEkxC,OAAS,IAAI,CAAE,CAC1B,IAAI,CAAC2G,WAAW,CAAC79a,IAAI,CAACgmY,MACtB,GAAI,CAACkxC,OAAQ,CACX,IAAI,CAAC7uC,KAAK,CAACroY,IAAI,CAAC,IAAI,CAAC69a,WAAW,EAClC,CACF,CACAlkU,MAAS,EAAA,CACP,IAAI,CAACkkU,WAAW,CAAC79a,IAAI,CAAC,IAAI,CAACqoY,KAAK,EAClC,CACAh0V,MAAO0rK,CAAAA,KAAK,CAAEjhG,EAAE,CAAE,CAChB,KAAM,CAAE2xO,IAAI,CAAE1tU,MAAM,CAAE,CAAGg9L,KAAM71K,CAAAA,IAAI,GACnC,IAAI,CAAC2zY,WAAW,CAAC96Z,MAAM,CAAC26Z,SAASl0a,GAAG,CAAC,CAACuZ,MAAM,CAAC,EAAE,CAAE,CAACA,MAAM,CAAC,CAAE,CAAA,CAAE,IAC7D46Z,UAAWx1Z,CAAAA,kBAAkB,CAAC,IAAI,CAACkgX,KAAK,CAACytC,MAAM,CAAA,CAC/C6H,UAAWj7Z,CAAAA,eAAe,CAACxF,IAAAA,CAAKqC,OAAO,CAAEmnI,OAAAA,CAAAA,CACzCi3R,WAAWj7Z,eAAe,CAACxF,KAAKmC,KAAK,CAAEhP,KACvCsta,CAAAA,CAAAA,UAAAA,CAAWj7Z,eAAe,CAACxF,KAAKiC,EAAE,CAAEqG,IACpCi4Z,QAASj0a,CAAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CACnBi0a,CAAAA,CAAAA,QAAAA,CAASlsa,GAAG,CAACm1I,QAAQ3vI,SAAS,CAAC05U,IAAI,CAAC,CAAA,CAAE,GACtCgtF,QAASlsa,CAAAA,GAAG,CAAClB,KAAAA,CAAM0G,SAAS,CAAC05U,IAAI,CAAC,CAAA,CAAE,GACpCgtF,QAASlsa,CAAAA,GAAG,CAACiU,EAAGzO,CAAAA,SAAS,CAAC05U,IAAI,CAAC,CAAA,CAAE,GACjC,IAAI,CAACotF,WAAW,CAACptF,IAAI,CAACgtF,QACtB,CAAA,CAAA,OAAO,IAAI,CAACp1C,KAAK,CAACnzX,IAAI,CAAC,IAAI,CAACmzX,KAAK,CAAE,IAAI,CAACw1C,WAAW,CAAEL,IAAAA,CAAK,IAAI,CAACM,WAAW,CAAEh/T,EAAAA,CAAAA,CAAK0+T,KAAK,IAAI,CAACO,aAAa,CAAEj/T,EAAAA,CAAAA,CAC5G,CACA10E,OAAAA,EAAU,CACR,IAAI,CAACuvE,MAAM,GACb,CACA3wG,WAAY,CAAA,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAA,GAAIA,IAAO,CAAA,CAAA,IAAI,CAAC42a,WAAW,CAAG,IAAIhI,IAAQ,CAAA,IAAI,CAACkI,aAAa,CAAG,GAAM,CAAA,IAAI,CAACD,WAAW,CAAG,IAC/F,CACF,CAEA,MAAME,KAAAA,CAAQ,IAAI9ga,IAClB,CAAA,MAAMvO,MAAS,CAAA,IAAIuO,IACnB,CAAA,MAAM44Z,OAAS,IAAI54Z,IAAAA,CACnB,MAAM+ga,UAAa,CAAA,IAAIn1Z,IACvB,CAAMo1Z,MAAAA,eAAAA,SAAwBjH,eAC5B,CAAA,IAAIZ,UAAW/xR,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC65R,eAAe,CAAC9H,UAAU,CAACr2a,IAAI,CAACskJ,KAAAA,CAAAA,CACrC,IAAI,CAAC85R,SAAS,CAACp+a,IAAI,CAAC,IAAI,CAACm+a,eAAe,CAACp7Z,MAAM,CAAC7F,IAAAA,CAAK8B,IAAI,CAAA,EAC3D,CACA,IAAIq3Z,UAAAA,EAAa,CACf,OAAO,IAAI,CAAC8H,eAAe,CAAC9H,UAC9B,CACA,IAAIC,SAAShyR,KAAK,CAAE,CAClB,IAAI,CAAC65R,eAAe,CAAC7H,QAAQ,CAACt2a,IAAI,CAACskJ,KAAAA,CAAAA,CACnC,IAAI,CAAC85R,SAAS,CAACp+a,IAAI,CAAC,IAAI,CAACm+a,eAAe,CAACp7Z,MAAM,CAAC7F,IAAK8B,CAAAA,IAAI,GAC3D,CACA,IAAIs3Z,UAAW,CACb,OAAO,IAAI,CAAC6H,eAAe,CAAC7H,QAAQ,CAEtC,IAAI+H,SAAU/5R,CAAAA,KAAK,CAAE,CACnB,IAAI,CAACg6R,gBAAgB,CAACnI,MAAM,CAACn2a,IAAI,CAACskJ,OAClC,IAAI,CAACi6R,UAAU,CAACv+a,IAAI,CAAC,IAAI,CAACs+a,gBAAgB,CAAC7tF,IAAI,CAACvzU,KAAK8B,IAAI,CAAA,EAC3D,CACA,IAAIq/Z,SAAAA,EAAY,CACd,OAAO,IAAI,CAACF,eAAe,CAAChI,MAAM,CAEpC18T,MAAAA,CAAOusR,IAAI,CAAEkxC,MAAAA,CAAS,IAAI,CAAE,CAC1B,IAAI,CAACiH,eAAe,CAAC30a,GAAG,CAACw8X,IAAAA,CAAK0wC,QAAQ,CAACsH,KAAAA,CAAAA,CAAQh4C,KAAK8vC,MAAM,CAAE,CAC5D,CAAA,CAAA,IAAI,CAACwI,gBAAgB,CAAC/4Z,QAAQ,CAAC/b,GAAG,CAAC,CAAA,CAAG,EAAGw8X,IAAKloX,CAAAA,QAAQ,CACtD,CAAA,GAAI,CAACo5Z,MAAAA,CAAQ,CACX,IAAI,CAACkH,SAAS,CAACp+a,IAAI,CAAC,IAAI,CAACm+a,eAAe,CAAA,CACxC,IAAI,CAACI,UAAU,CAACv+a,IAAI,CAAC,IAAI,CAACs+a,gBAAgB,EAC5C,CACF,CACA3kU,MAAAA,EAAS,CACP,IAAI,CAACwkU,eAAe,CAACn+a,IAAI,CAAC,IAAI,CAACo+a,SAAS,CAAA,CACxC,IAAI,CAACE,gBAAgB,CAACt+a,IAAI,CAAC,IAAI,CAACu+a,UAAU,EAC5C,CACAlqY,MAAO0rK,CAAAA,KAAK,CAAEjhG,EAAE,CAAE,CAChB,KAAM,CAAE2xO,IAAI,CAAE1tU,MAAM,CAAE,CAAGg9L,KAAM71K,CAAAA,IAAI,EACnCv7B,CAAAA,MAAAA,CAAOnF,GAAG,CAACinV,IAAI,CAAC,CAAA,CAAE,CAAEA,IAAI,CAAC,EAAE,CAAE,CAAA,CAAA,CAC7BwtF,UAAW91Z,CAAAA,kBAAkB,CAAC,IAAI,CAACi2Z,SAAS,CAACtI,MAAM,CAAEpzZ,CAAAA,eAAe,CAAC/T,MAAQA,CAAAA,MAAAA,CAAAA,CAC7E,IAAI,CAACwva,eAAe,CAAC1tF,IAAI,CAAC9hV,MAAAA,CAAAA,CAC1B,KAAM,CAAEwO,CAAAA,CAAGsjJ,IAAI,CAAE,CAAG,IAAI,CAAC69Q,gBAAgB,CAAC/4Z,QAAQ,CAClD,IAAI,CAAC+4Z,gBAAgB,CAAC7tF,IAAI,CAAC9hV,MAAOnF,CAAAA,GAAG,CAAC,CAAA,CAAG,CAAGi3J,CAAAA,IAAAA,EAAQ,CAAIgwL,CAAAA,IAAI,CAAC,CAAE,CAAD,EAAKhwL,IACnE,CAAA,CAAA,CAAA,IAAI,CAAC09Q,eAAe,CAACp7Z,MAAM,CAAC+yZ,MAAOtsa,CAAAA,GAAG,CAAC,CAACuZ,MAAM,CAAC,CAAE,CAAA,CAAE,CAACA,MAAM,CAAC,CAAA,CAAE,CAAE,CAC/D,CAAA,CAAA,CAAA,IAAI,CAACq7Z,SAAS,CAAClpa,IAAI,CAAC,IAAI,CAACkpa,SAAS,CAAE,IAAI,CAACD,eAAe,CAAEX,KAAK,IAAI,CAACM,WAAW,CAAEh/T,EAAAA,CAAAA,CAAK0+T,IAAK,CAAA,IAAI,CAACO,aAAa,CAAEj/T,EAAK,CAAA,CAAA,CAAA,CAAA,CACpH,IAAI,CAACy/T,UAAU,CAACrpa,IAAI,CAAC,IAAI,CAACqpa,UAAU,CAAE,IAAI,CAACD,gBAAgB,CAAEd,IAAK,CAAA,IAAI,CAACgB,WAAW,CAAE1/T,EAAK,CAAA,CAAA,CAAA,CAAG,CAC5Fm/T,CAAAA,CAAAA,UAAAA,CAAW91Z,kBAAkB,CAAC,IAAI,CAACi2Z,SAAS,CAACtI,MAAM,CAAEpzZ,CAAAA,eAAe,CAAC,IAAI,CAAC67Z,UAAU,CAACh5Z,QAAQ,CAAE5W,QAAQ4C,GAAG,CAAC,IAAI,CAAC6sa,SAAS,CAAC74Z,QAAQ,CAClI,CAAA,OAAO,IAAI,CAAC8iX,KAAK,CAAC7+X,GAAG,CAACmF,OAAQ,IAAI,CAACyva,SAAS,CAACtI,MAAM,CAAE,IAAI,CAACyI,UAAU,CAACh5Z,QAAQ,CAACpI,CAAC,CACjF,CACAitB,OAAU,EAAA,CACR,IAAI,CAACuvE,MAAM,GACb,CACA3wG,YAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACk3a,eAAe,CAAG,IAAItI,KAAQ,IAAI,CAACuI,SAAS,CAAG,IAAIvI,IAAQ,CAAA,IAAI,CAACyI,gBAAgB,CAAG,IAAIzI,IAAAA,CAAQ,IAAI,CAAC0I,UAAU,CAAG,IAAI1I,IAAAA,CAAQ,IAAI,CAACkI,aAAa,CAAG,IAAM,IAAI,CAACD,WAAW,CAAG,GAAA,CAAM,IAAI,CAACU,WAAW,CAAG,IAC3N,CACF,CAEA,MAAMxzZ,OAAU,CAAA,IAAA,CAChB,MAAMyzZ,KAAQ,CAAA,IAAIvha,KAClB,MAAMwha,UAAAA,CAAa,IAAIxha,IAAAA,CACvB,MAAMyha,UAAAA,CAAa,IAAI71Z,IACvB,CAAA,MAAM81Z,eAAwB3H,SAAAA,eAAAA,CAC5Bx9T,MAAOusR,CAAAA,IAAI,CAAEkxC,MAAS,CAAA,IAAI,CAAE,CAC1B,IAAI,CAACiH,eAAe,CAAC30a,GAAG,CAACw8X,IAAK0wC,CAAAA,QAAQ,CAAC+H,KAAQz4C,CAAAA,CAAAA,IAAAA,CAAK8vC,MAAM,CAAE,CAC5D,CAAA,CAAA,IAAI,CAACwI,gBAAgB,CAAC/4Z,QAAQ,CAAC/b,GAAG,CAAC,CAAG,CAAA,CAAA,CAAGw8X,IAAKloX,CAAAA,QAAQ,CACtD,CAAA,GAAI,CAACo5Z,MAAQ,CAAA,CACX,IAAI,CAACkH,SAAS,CAACp+a,IAAI,CAAC,IAAI,CAACm+a,eAAe,CAAA,CACxC,IAAI,CAACI,UAAU,CAACv+a,IAAI,CAAC,IAAI,CAACs+a,gBAAgB,EAC5C,CACF,CACA3kU,MAAAA,EAAS,CACP,IAAI,CAACwkU,eAAe,CAACn+a,IAAI,CAAC,IAAI,CAACo+a,SAAS,CAAA,CACxC,IAAI,CAACE,gBAAgB,CAACt+a,IAAI,CAAC,IAAI,CAACu+a,UAAU,EAC5C,CACAxiO,QAAW,EAAA,CACT,OAAO,IAAI,CAACoiO,eAAe,CAAC//Z,YAAY,CAAC,IAAI,CAACgga,SAAS,CAAEpzZ,OAAY,CAAA,EAAA,IAAI,CAACszZ,gBAAgB,CAAClga,YAAY,CAAC,IAAI,CAACmga,UAAU,CAAEvzZ,OAC3H,CAAA,CACAqpB,MAAO0rK,CAAAA,KAAK,CAAEjhG,EAAE,CAAE,CAChBihG,KAAAA,CAAM71K,IAAI,EACV,CAAA,IAAI,CAACk0Y,SAAS,CAAClpa,IAAI,CAAC,IAAI,CAACkpa,SAAS,CAAE,IAAI,CAACD,eAAe,CAAEX,KAAK,IAAI,CAACqB,YAAY,CAAE//T,EAAK0+T,CAAAA,CAAAA,IAAAA,CAAK,IAAI,CAACqB,YAAY,CAAE//T,EAAK,CAAA,CAAA,CAAA,CAAA,CACpH,IAAI,CAACy/T,UAAU,CAACrpa,IAAI,CAAC,IAAI,CAACqpa,UAAU,CAAE,IAAI,CAACD,gBAAgB,CAAEd,IAAK,CAAA,IAAI,CAACqB,YAAY,CAAE//T,EAAAA,CAAAA,CAAK,EAAG,CAC7F6/T,CAAAA,CAAAA,UAAAA,CAAWx2Z,kBAAkB,CAAC,IAAI,CAACi2Z,SAAS,CAACtI,MAAM,CAAA,CAAEpzZ,eAAe,CAAC,IAAI,CAAC67Z,UAAU,CAACh5Z,QAAQ,CAAEm5Z,YAAYnta,GAAG,CAAC,IAAI,CAAC6sa,SAAS,CAAC74Z,QAAQ,CACtI,CAAA,OAAO,IAAI,CAAC8iX,KAAK,CAAC7+X,GAAG,CAACk1a,UAAY,CAAA,IAAI,CAACN,SAAS,CAACtI,MAAM,CAAE,IAAI,CAACyI,UAAU,CAACh5Z,QAAQ,CAACrkB,MAAM,EAC1F,CAAA,CACAkpC,OAAU,EAAA,CACR,IAAI,CAACuvE,MAAM,GACb,CACA3wG,WAAAA,CAAY,GAAG/B,IAAI,CAAC,CAClB,KAAK,CAAIA,GAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACk3a,eAAe,CAAG,IAAItI,IAAAA,CAAQ,IAAI,CAACuI,SAAS,CAAG,IAAIvI,IAAQ,CAAA,IAAI,CAACyI,gBAAgB,CAAG,IAAIzI,IAAQ,CAAA,IAAI,CAAC0I,UAAU,CAAG,IAAI1I,IAAAA,CAAQ,IAAI,CAACgJ,YAAY,CAAG,IACxK,CACF,CAEA,MAAMC,iBAAmB,OACzB,CAAA,MAAMC,gBAAmB,CAAA,OAAA,CACzB,MAAMC,WAAAA,CAAc,IACpB,MAAMC,WAAAA,CAAc,IACpB,MAAMC,WAAAA,CAAc,IACpB,MAAMC,YAAAA,CAAe,IACrB,CAAA,MAAMC,YAAe,CAAA,IAAA,CACrB,MAAMC,YAAe,CAAA,IAAA,CACrB,MAAMC,aAAgB,CAAA,KAAA,CACtB,MAAMC,cAAiB,CAAA,MAAA,CAEvB,MAAM7+a,CAAAA,CAAI,IAAIwc,IAAAA,CACd,MAAMqI,QAAW,CAAA,IAAIrI,KACrB,MAAM2R,GAAAA,CAAM,IAAI3R,IAChB,CAAA,MAAM0qI,QAAW,CAAA,IAAI9+H,IACrB,CAAA,MAAM5O,GAAK,IAAIsJ,IAAAA,CACf,MAAMi4H,EAAK,CAAA,IAAIj4H,KACf,MAAMg8Z,KAAAA,CAAQ,IAAI1rZ,GAAAA,CAClB,MAAM2rZ,SAAAA,CAAY,KAClB,MAAMC,gBAAAA,CAAmB,GACzB,MAAMC,iBAAAA,CAAoB,IAC1B,MAAMC,gBAAAA,CAAmB,IACzB,CAAA,MAAMC,YAAe,CAAA,IACrB,OAAMC,KAAc52a,SAAAA,YAAAA,CA4BlB,OAAO62a,WAAY9uM,CAAAA,GAAG,CAAEo3C,SAAY,CAAA,OAAO,CAAEzQ,UAAAA,CAAa3mC,GAAItrG,CAAAA,KAAK,CAACC,MAAM,CAAC+8B,SAAS,CAACzhK,MAAM,CAAE,CAC3F,MAAM8kI,KAAQ,CAAA,IAAIi4C,KAAM,CAAA,CACtB15K,KAAM8jR,SACNtnI,CAAAA,gBAAAA,CAAkB,KAClBygC,cAAgBviD,CAAAA,aAAAA,CAChBsiD,oBAAqBtiD,aACvB,CAAA,CAAA,CACAgyG,GAAItrG,CAAAA,KAAK,CAACC,MAAM,CAAC50H,MAAM,CAACg1H,MAAO4xI,UAC/B,CAAA,CAAA,OAAO5xI,KACT,CAsBA,IAAIlyH,OAAQqrE,CAAAA,KAAK,CAAE,CACjB,MAAMsrJ,UAAa,CAAA,IAAI,CAACluF,IAAI,CAACsM,gBAAgB,EAAG/qI,CAAAA,QAAQ,CAAC,IAAI,CAACo2H,MAAM,CAACrM,MAAM,CAACtc,WAAW,EACvF,CAAA,CAAA,MAAMz3G,QAAUqrE,KAAQ,CAAA,IAAI,CAACgqD,KAAK,CAACjoI,MAAM,CAAG,CAAKupO,EAAAA,UAAAA,CAAao1M,YAAe,CAAA,KAAA,CAC7E,GAAI/ra,OAAAA,GAAY,IAAI,CAACyoI,IAAI,CAACzoI,OAAO,CAAE,CACjC,IAAI,CAACyoI,IAAI,CAACzoI,OAAO,CAAGA,OACpB,CAAA,IAAI,CAACksa,aAAa,CAAG,KACvB,CACF,CACA,IAAIlsa,SAAU,CACZ,OAAO,IAAI,CAACyoI,IAAI,CAACzoI,OAAO,CAE1B,IAAIkyH,KAAMA,CAAAA,KAAK,CAAE,CACf,GAAI,IAAI,CAACuQ,MAAM,GAAKvQ,KAAAA,CAAO,CACzB,MACF,CACA,IAAI,CAAC6iN,OAAO,CAACjjN,MAAM,CAAG,IAAI,CAACijN,OAAO,CAACjjN,MAAM,CAAChpC,MAAM,CAAE3xD,IAAKA,EAAO,GAAA,IAAI,CAACsrG,MAAM,CAACtrG,EAAE,CAC5E,CAAA,IAAI,CAACsrG,MAAM,CAAGvQ,KACd,CAAA,IAAI,CAAC6iN,OAAO,CAACjjN,MAAM,CAAG,IAAI,CAACijN,OAAO,CAACjjN,MAAM,CAAChsE,MAAM,CAAC,IAAI,CAAC28E,MAAM,CAACtrG,EAAE,CAC/D,CAAA,IAAI,CAACn3B,OAAO,CAAG,KACjB,CACA,IAAIkyH,KAAQ,EAAA,CACV,OAAO,IAAI,CAACuQ,MAAM,CAEpB,IAAIrC,OAAOA,MAAM,CAAE,CACjB,GAAI,IAAI,CAAC20M,OAAO,GAAK30M,MAAAA,CAAQ,CAC3B,MACF,CACA,IAAI,CAAC20M,OAAO,CAACjjN,MAAM,CAAG,IAAI,CAACijN,OAAO,CAACjjN,MAAM,CAAChpC,MAAM,CAAC,EAAC3xD,EAAKA,KAAO,IAAI,CAACsrG,MAAM,CAACtrG,EAAE,CAC5E,CAAA,IAAI,CAAC49S,OAAO,CAAG30M,MACf,CAAA,IAAI,CAAC20M,OAAO,CAACjjN,MAAM,CAAG,IAAI,CAACijN,OAAO,CAACjjN,MAAM,CAAChsE,MAAM,CAAC,IAAI,CAAC28E,MAAM,CAACtrG,EAAE,CAC/D,CAAA,IAAI,CAACn3B,OAAO,CAAG,KACjB,CACA,IAAIogI,MAAS,EAAA,CACX,OAAO,IAAI,CAAC20M,OACd,CACA,IAAIo3F,UAAAA,CAAWr3a,KAAK,CAAE,CACpB,IAAI,CAACs3a,WAAW,CAAGt3a,OAAS,IAAI,CAACs3a,WAAW,CAC5C,IAAI,CAACC,eAAe,GACtB,CACA,IAAIF,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAI/5a,KAAKyC,KAAK,CAAE,CACd,IAAI,CAACu9U,KAAK,CAAGv9U,KACb,CAAA,IAAI,CAAC2oU,YAAY,GACnB,CACA,IAAIprU,IAAAA,EAAO,CACT,OAAO,IAAI,CAACggV,KAAK,CAEnB,IAAIi6F,SAAY,EAAA,CACd,GAAI,IAAI,CAACv3F,OAAO,CAACr2S,UAAU,GAAKqnF,uBAAwB,CACtD,MAAMwmT,SAAW,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAC3C,CAAA,MAAMrE,SAAY,CAAA,IAAI,CAACqkM,OAAO,CAAChhN,MAAM,CAACtc,WAAW,GACjD,OAAO18F,GAAAA,CAAI/P,IAAI,CAAC0lI,SAAW67R,CAAAA,QAAAA,CAAAA,CAAUh/a,SAAS,EAChD,CACA,OAAOwtB,GAAI7uB,CAAAA,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CAAE3vI,CAAAA,SAAS,CAAC,CAAC,CAAA,CAC1D,CACA,IAAIupa,SAAAA,EAAY,CACd,MAAM97R,SAAY,CAAA,IAAI,CAACqkM,OAAO,CAAChhN,MAAM,CAACtc,WAAW,GACjD,MAAM80T,QAAAA,CAAW,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAC3C,CAAA,OAAOh6H,IAAI/P,IAAI,CAAC0lI,UAAW67R,QAAUh/a,CAAAA,CAAAA,SAAS,EAChD,CACAi3a,cAAel1a,CAAAA,CAAC,CAAE,CAChB,GAAI,CAAC,IAAI,CAAC0Q,OAAO,EAAI/H,QAAAA,CAASmvG,kBAAkB,CAAE,CAChD,MACF,CACA,MAAMokS,SAAAA,CAAY,IAAI,CAACihC,aAAa,CAACn9a,CAAEguS,CAAAA,OAAO,CAAEhuS,CAAAA,CAAEiuS,OAAO,CAAA,CACzD,GAAIiuG,SAAS,CAAC,EAAE,CAAE,CAChB,GAAI,IAAI,CAACr8S,cAAc,CAAE,CACvB7/F,CAAAA,CAAE6/F,cAAc,GAClB,CACA7/F,EAAEi3G,eAAe,GACnB,CACA,KAAM,CAAEr7D,MAAM,CAAE,CAAG,IAAI,CAACyH,OAAO,CAC/BzH,OAAOy5X,iBAAiB,CAACr1a,EAAEm0a,SAAS,CAAA,CACpC,IAAI,CAACpta,IAAI,CAAC21a,MAAMU,iBAAiB,CAAEp9a,EAAEguS,OAAO,CAAEhuS,EAAEiuS,OAAO,CAAEiuG,SAAS,CAAC,CAAE,CAAA,EACvE,CACAu5B,cAAez1a,CAAAA,CAAC,CAAE,CAChB,GAAI,CAAC,IAAI,CAAC0Q,OAAO,EAAI/H,QAAAA,CAASmvG,kBAAkB,CAAE,CAChD,MACF,CACA,MAAMokS,SAAY,CAAA,IAAI,CAACihC,aAAa,CAACn9a,CAAEguS,CAAAA,OAAO,CAAEhuS,CAAAA,CAAEiuS,OAAO,CACzD,CAAA,GAAIiuG,SAAS,CAAC,CAAA,CAAE,CAAE,CAChB,GAAI,IAAI,CAACr8S,cAAc,CAAE,CACvB7/F,CAAE6/F,CAAAA,cAAc,GAClB,CACA7/F,CAAAA,CAAEi3G,eAAe,GACnB,CACA,IAAI,CAAClwG,IAAI,CAAC21a,MAAMW,iBAAiB,CAAEr9a,EAAEguS,OAAO,CAAEhuS,EAAEiuS,OAAO,CAAEiuG,SAAS,CAAC,CAAE,CAAA,EACvE,CACAw5B,YAAa11a,CAAAA,CAAC,CAAE,CACd,GAAI,CAAC,IAAI,CAAC0Q,OAAO,EAAI/H,QAASmvG,CAAAA,kBAAkB,CAAE,CAChD,MACF,CACA,MAAMokS,SAAAA,CAAY,IAAI,CAACihC,aAAa,CAACn9a,CAAAA,CAAEguS,OAAO,CAAEhuS,EAAEiuS,OAAO,CAAA,CACzD,GAAIiuG,SAAS,CAAC,EAAE,CAAE,CAChB,GAAI,IAAI,CAACr8S,cAAc,CAAE,CACvB7/F,CAAAA,CAAE6/F,cAAc,GAClB,CACA7/F,CAAAA,CAAEi3G,eAAe,GACnB,CACA,KAAM,CAAEr7D,MAAM,CAAE,CAAG,IAAI,CAACyH,OAAO,CAC/BzH,MAAAA,CAAO+5X,qBAAqB,CAAC31a,CAAAA,CAAEm0a,SAAS,CAAA,CACxC,IAAI,CAACpta,IAAI,CAAC21a,KAAAA,CAAMY,eAAe,CAAEt9a,CAAAA,CAAEguS,OAAO,CAAEhuS,CAAAA,CAAEiuS,OAAO,CAAEiuG,SAAS,CAAC,EAAE,EACrE,CACAqhC,iBAAkB,CAChBp7Z,QAAAA,CAAS/b,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACnB,GAAI,IAAI,CAAC02a,WAAW,GAAK,QAAS,CAChC36Z,QAAAA,CAASvlB,IAAI,CAAC,IAAI,CAACmpI,KAAK,CAAC,IAAI,CAACA,KAAK,CAACjoI,MAAM,CAAG,CAAA,CAAE,CAACqqH,WAAW,EAAA,EAC7D,CAAO,KAAA,CACL,IAAI,IAAItqH,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACxC,MAAMowI,IAAAA,CAAO,IAAI,CAAClI,KAAK,CAACloI,CAAE,CAAA,CAC1BskB,SAAShU,GAAG,CAAC8/H,IAAK9lB,CAAAA,WAAW,EAC/B,EAAA,CACAhmG,SAASxO,SAAS,CAAC,CAAO,EAAA,IAAI,CAACoyH,KAAK,CAACjoI,MAAM,EAAI,CAAA,CACjD,EAAA,CACA,GAAIqkB,QAASnH,CAAAA,YAAY,CAAC,IAAI,CAACm+H,IAAI,CAACsM,gBAAgB,EAAI+2R,CAAAA,gBAAAA,CAAAA,CAAmB,CACzE,MACF,CACA,IAAI,CAACrjS,IAAI,CAACqN,gBAAgB,CAACrkI,QAC3B,CAAA,CAAA,IAAI,CAACpb,IAAI,CAAC21a,KAAAA,CAAMc,oBAAoB,CAAEr7Z,QAAAA,CACtC,CAAA,IAAI,CAACy6Z,aAAa,CAAG,KACvB,CACAG,eAAAA,EAAkB,CAChBv4R,QAAAA,CAASp+I,GAAG,CAAC,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAAA,CACtB,GAAI,IAAI,CAAC02a,WAAW,GAAK,OAAW,EAAA,IAAI,CAAC/2S,KAAK,CAACjoI,MAAM,GAAK,CAAA,CAAG,CAC3D0mJ,QAAS5nJ,CAAAA,IAAI,CAAC,IAAI,CAACmpI,KAAK,CAAC,IAAI,CAACA,KAAK,CAACjoI,MAAM,CAAG,CAAE,CAAA,CAAC+nJ,WAAW,EAAA,EAC7D,CACA,GAAIrB,SAASxpI,YAAY,CAAC,IAAI,CAACm+H,IAAI,CAAC0M,WAAW,EAAA,CAAI22R,gBAAmB,CAAA,CAAA,CACpE,MACF,CACA,IAAI,CAACrjS,IAAI,CAAC0N,WAAW,CAACrC,UACtB,IAAI,CAACz9I,IAAI,CAAC21a,KAAMe,CAAAA,oBAAoB,CAAEj5R,QAASl/H,CAAAA,cAAc,GAC7D,CAAA,IAAI,CAACs3Z,aAAa,CAAG,KACvB,CACAzuG,YAAe,EAAA,CACb,GAAI,IAAI,CAACsX,OAAO,CAACr2S,UAAU,GAAKqnF,sBAAwB,CAAA,CACtD,MAAMwmT,QAAAA,CAAW,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,GAC3C,MAAMrE,SAAAA,CAAY,IAAI,CAACqkM,OAAO,CAAChhN,MAAM,CAACtc,WAAW,GACjD,MAAMk1C,IAAAA,CAAO//J,EAAEoe,IAAI,CAACuha,SAAU77R,SAAWrmI,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAAC0qU,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CACxE,CAAA,IAAI,CAACwC,MAAM,CAAG1oJ,IAAAA,CAAKujB,GAAG,CAAC,GAAM,IAAI,CAAC8kU,OAAO,CAACllU,GAAG,CAAGrP,IAAKC,CAAAA,UAAU,CAAIksJ,CAAAA,IAAAA,CAAOi/Q,iBAC5E,CAAA,KAAO,CACL,IAAI,CAACx2R,MAAM,CAAG,IAAI,CAAC2/L,OAAO,CAACxmM,WAAW,CAAGs9R,kBAC3C,CACA,IAAI,CAACz2R,MAAM,CAAG1oJ,IAAAA,CAAKoU,GAAG,CAAC,IAAI,CAACs0I,MAAM,CAAG,IAAI,CAACi9L,KAAK,CAAEs5F,SACjD,CAAA,CAAA,GAAIj/a,KAAKma,GAAG,CAAC,IAAI,CAACuuI,MAAM,CAAG,IAAI,CAAC3M,IAAI,CAACwM,aAAa,EAAA,CAAGzzI,CAAC,CAAIsqa,CAAAA,gBAAAA,CAAkB,CAC1E,MACF,CACA,IAAI,CAACrjS,IAAI,CAACuN,aAAa,CAAC,IAAI,CAACZ,MAAM,CAAE,IAAI,CAACA,MAAM,CAAE,IAAI,CAACA,MAAM,EAC7D,IAAI,CAAC/+I,IAAI,CAAC21a,KAAAA,CAAMgB,iBAAiB,CAAE,IAAI,CAAC53R,MAAM,CAC9C,CAAA,IAAI,CAAC82R,aAAa,CAAG,KACvB,CACAO,cAAcjra,CAAC,CAAE0H,CAAC,CAAE,CAClB,MAAM0V,MAAQ,IAAI,CAACm2T,OAAO,CAACxkM,aAAa,CAAC/uI,CAAG0H,CAAAA,CAAAA,CAAG,CAC/C,CAAA,CAAA,MAAMrW,GAAM,CAAA,IAAI,CAACkiV,OAAO,CAACxkM,aAAa,CAAC/uI,CAAAA,CAAG0H,EAAG,IAAI,CAAC6rU,OAAO,CAACvnM,OAAO,CAAG,IAAI,CAACunM,OAAO,CAAC3mM,QAAQ,CAAA,CACzF,MAAMrzH,GAAMnuB,CAAAA,CAAAA,CAAEV,IAAI,CAAC2G,GAAKkY,CAAAA,CAAAA,GAAG,CAAC6T,KAAOrxB,CAAAA,CAAAA,SAAS,GAC5C,MAAMi+Y,SAAAA,CAAY,EAAE,CACpB,IAAI,IAAIr+Y,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAAC8/a,eAAe,CAAC7/a,MAAM,CAAED,IAAI,CAClD,MAAMkuJ,KAAQ,CAAA,IAAI,CAAC4xR,eAAe,CAAC9/a,CAAE,CAAA,CACrC,GAAIkuJ,KAAM6xR,CAAAA,QAAQ,EAAI,CAAC7xR,KAAAA,CAAMtnB,MAAM,CAAC/zH,OAAO,CAAE,CAC3C,QACF,CACA,MAAMmta,QAAW9xR,CAAAA,KAAAA,CAAMtnB,MAAM,CAACe,iBAAiB,EAC/C,CAAA,IAAI,IAAIphD,CAAAA,CAAI,EAAGA,CAAI2nE,CAAAA,KAAAA,CAAM+xR,OAAO,CAAChgb,MAAM,CAAEsmF,CAAI,EAAA,CAAA,CAC3C,KAAM,CAAE25V,IAAI,CAAE/lS,SAAS,CAAE4mC,QAAQ,CAAE,CAAG7yB,KAAAA,CAAM+xR,OAAO,CAAC15V,CAAAA,CAAE,CACtD,MAAM45V,MAASlna,CAAAA,EAAAA,CAAGla,IAAI,CAACihb,QAAAA,CAAAA,CAAU1ia,GAAG,CAAC68H,SAAAA,CAAAA,CACrC,MAAMimS,SAAY5lS,CAAAA,EAAAA,CAAGz7I,IAAI,CAACohb,MAAQp6Z,CAAAA,CAAAA,MAAM,GACxCq6Z,SAAUj8Z,CAAAA,cAAc,CAACsN,KAAAA,CAAO8sZ,KAAM7wZ,CAAAA,MAAM,EAC5C0yZ,SAAU3+Z,CAAAA,eAAe,CAACmM,GAAAA,CAAK2wZ,KAAM1wZ,CAAAA,SAAS,EAC9C0wZ,KAAM1wZ,CAAAA,SAAS,CAACztB,SAAS,EAAA,CACzB,IAAI,IAAIkhI,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI4+S,IAAKjgb,CAAAA,MAAM,CAAEqhI,CAAI,EAAA,CAAA,CAClC,GAAI4+S,IAAI,CAAC5+S,EAAE,CAAC9yG,aAAa,CAAC+vZ,KAAAA,CAAO9+a,CAAI,CAAA,CAAA,CACnC4+Y,UAAUv9Y,IAAI,CAAC,CACb0+J,IAAM2gR,CAAAA,MAAAA,CAAOh8Z,cAAc,CAAC1kB,CAAAA,CAAAA,CAAGme,GAAG,CAAC6T,KAAOxxB,CAAAA,CAAAA,MAAM,GAChDslI,aAAe2oB,CAAAA,KAAAA,CAAM3oB,aAAa,CAClCw7C,QAAAA,CAAUA,QACZ,CACF,EAAA,CACF,CACF,CACF,CACA,GAAIs9N,UAAUp+Y,MAAM,CAAE,CACpBo+Y,SAAUnuY,CAAAA,IAAI,CAAC,CAACmwa,EAAAA,CAAI3na,EAClB,GAAA,CAAA,GAAI2na,EAAGt/P,CAAAA,QAAQ,GAAK,CAAKroK,EAAAA,EAAAA,CAAGqoK,QAAQ,GAAK,CAAA,CAAG,CAC1C,OAAOroK,EAAAA,CAAGqoK,QAAQ,CAAGs/P,EAAGt/P,CAAAA,QAAQ,CAElC,OAAOs/P,GAAG7gR,IAAI,CAAG9mJ,GAAG8mJ,IACtB,CACA,CAAA,CAAA,OAAO6+O,SAAS,CAAC,EAAE,CAAC94Q,aAAa,CAEnC,OAAO,EAAE,CAEX/sB,MAAO0vB,CAAAA,KAAAA,CAAQ,EAAE,CAAE,CACjB,GAAIlpI,KAAAA,CAAMC,OAAO,CAACipI,KAAAA,CAAAA,CAAQ,CACxB,GAAIA,KAAAA,CAAMjoI,MAAM,GAAK,CAAG,CAAA,CACtB,MACF,CACA,IAAI,CAACioI,KAAK,CAAGA,MACf,CAAO,KAAA,CACL,IAAI,CAACA,KAAK,CAAG,CACXA,KACD,EACH,CACA,IAAI,CAACw3S,eAAe,EACpB,CAAA,IAAI,CAACR,eAAe,EACpB,CAAA,IAAI,CAAC5uG,YAAY,EAAA,CACjB,IAAI,CAACpnU,IAAI,CAAC21a,KAAMyB,CAAAA,iBAAiB,CACjC,CAAA,IAAI,CAACzta,OAAO,CAAG,KACjB,CACA6lG,MAAS,EAAA,CACP,IAAI,CAAC7lG,OAAO,CAAG,KAAA,CACf,IAAI,CAAC3J,IAAI,CAAC21a,KAAAA,CAAM0B,iBAAiB,CACjC,CAAA,IAAI,CAACr4S,KAAK,CAAG,GAAE,CAEjBs4S,WAAY,EACZptY,QAAS,CACP,GAAI,IAAI,CAAC2rY,aAAa,CAAE,CACtB,IAAI,CAACA,aAAa,CAAG,KAAA,CACrB,IAAI,CAAC71a,IAAI,CAAC21a,MAAM4B,kBAAkB,EACpC,CACA,GAAI,CAAC,IAAI,CAAC5ta,OAAO,CAAE,CACjB,MACF,CACA,IAAI,CAAC6sa,eAAe,EACpB,CAAA,IAAI,CAACR,eAAe,GACpB,IAAI,CAAC5uG,YAAY,GACnB,CACAnnS,SAAU,CACR,IAAI,CAACuvE,MAAM,EACX,CAAA,IAAI,CAAClzD,OAAO,CAACzH,MAAM,CAAC77C,mBAAmB,CAAC,aAAe,CAAA,IAAI,CAACm1a,cAAc,CAC1E,CAAA,IAAI,CAAC7xX,OAAO,CAACzH,MAAM,CAAC77C,mBAAmB,CAAC,aAAe,CAAA,IAAI,CAAC01a,cAAc,CAC1E,CAAA,IAAI,CAACpyX,OAAO,CAACzH,MAAM,CAAC77C,mBAAmB,CAAC,WAAa,CAAA,IAAI,CAAC21a,YAAY,CACtE,CAAA,IAAI,CAAC6I,QAAQ,CAAC/za,OAAO,CAAE5D,QAASA,MAAO9B,CAAAA,GAAG,EAC1C,CAAA,CAAA,IAAI,CAACq0I,IAAI,CAACnyG,OAAO,GACnB,CA/PAphC,WAAYkrI,CAAAA,MAAM,CAAElO,KAAK,CAAEzhI,IAAO,CAAA,OAAO,CAAC,CACxC,KAAK,EAAI,CAAA,IAAI,CAAC4hV,KAAK,CAAG,EAAG,IAAI,CAACj9L,MAAM,CAAG,CAAG,CAAA,IAAI,CAACg3R,WAAW,CAAG,QAAS,IAAI,CAACyB,QAAQ,CAAG,EAAE,CAAE,IAAI,CAAC3B,aAAa,CAAG,KAAO,CAAA,IAAI,CAAC72S,KAAK,CAAG,EAAE,CAAE,IAAI,CAAC43S,eAAe,CAAG,EAAE,CAAE,IAAI,CAAC99U,cAAc,CAAG,IACxL,CAAA,IAAI,CAACszC,MAAM,CAAGvQ,KACd,CAAA,IAAI,CAAC6iN,OAAO,CAAG30M,MACf,CAAA,IAAI,CAAC20M,OAAO,CAACjjN,MAAM,CAAG,IAAI,CAACijN,OAAO,CAACjjN,MAAM,CAAChsE,MAAM,CAAC,IAAI,CAAC28E,MAAM,CAACtrG,EAAE,CAC/D,CAAA,IAAI,CAACmrM,IAAI,CAAG,IAAI,CAACyyG,OAAO,CAAC7rG,MAAM,CAAC/L,GAChC,CAAA,IAAI,CAACxqL,OAAO,CAAG,IAAI,CAAC2vL,IAAI,CAACvrM,cACzB,CAAA,IAAI,CAAC0xG,IAAI,CAAG,IAAIinG,MAAAA,CAAOj/O,IACvB,CAAA,CAAA,IAAI,CAAC6xO,IAAI,CAAC75F,IAAI,CAACkN,QAAQ,CAAC,IAAI,CAAClN,IAAI,CACjC,CAAA,IAAI,CAACA,IAAI,CAACzoI,OAAO,CAAG,KACpB,CAAA,IAAI,CAACy9T,YAAY,EACjB,CAAA,IAAI,CAAC+mG,cAAc,CAAG,IAAI,CAACA,cAAc,CAACjna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACwna,cAAc,CAAG,IAAI,CAACA,cAAc,CAACxna,IAAI,CAAC,IAAI,CACnD,CAAA,IAAI,CAACyna,YAAY,CAAG,IAAI,CAACA,YAAY,CAACzna,IAAI,CAAC,IAAI,CAAA,CAC/C,IAAI,CAACo1C,OAAO,CAACzH,MAAM,CAAC97C,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAACo1a,cAAc,CAAA,CACvE,IAAI,CAAC7xX,OAAO,CAACzH,MAAM,CAAC97C,gBAAgB,CAAC,aAAe,CAAA,IAAI,CAAC21a,cAAc,CAAA,CACvE,IAAI,CAACpyX,OAAO,CAACzH,MAAM,CAAC97C,gBAAgB,CAAC,WAAa,CAAA,IAAI,CAAC41a,YAAY,CAAA,CACnE,IAAI,CAAC6I,QAAQ,CAAC5/a,IAAI,CAAC,IAAI,CAACq0O,IAAI,CAAC9tO,EAAE,CAAC,WAAA,CAAa,IAAI,IAAI,CAACm5a,SAAS,EAC/D,CAAA,CAAA,CAAA,IAAI,CAACE,QAAQ,CAAC5/a,IAAI,CAAC,IAAI,CAACq0O,IAAI,CAAC9tO,EAAE,CAAC,QAAU,CAAA,IAAI,IAAI,CAAC+rC,MAAM,EAAA,CAAA,CAAA,CACzD,IAAI,CAACstY,QAAQ,CAAC5/a,IAAI,CAAC,IAAI,CAACq0O,IAAI,CAAC9tO,EAAE,CAAC,SAAA,CAAW,IAAI,IAAI,CAAC8hC,OAAO,EAC7D,CAAA,EAAA,CA4OF,CApSI,KAFE01Y,CAEGU,iBAAiB,CAAG,cAGzB,CALEV,MAKGW,iBAAiB,CAAG,cAGzB,CAREX,KAAAA,CAQGY,eAAe,CAAG,YAGvB,CAXEZ,KAAAA,CAWGc,oBAAoB,CAAG,iBAG5B,CAdEd,KAAAA,CAcGe,oBAAoB,CAAG,iBAG5B,CAjBEf,KAiBGgB,CAAAA,iBAAiB,CAAG,cAGzB,CApBEhB,KAAAA,CAoBGyB,iBAAiB,CAAG,cAGzB,CAvBEzB,KAuBG0B,CAAAA,iBAAiB,CAAG,cAGzB,CA1BE1B,KA0BG4B,CAAAA,kBAAkB,CAAG,eAAA,CA8Q9B,MAAME,SAAY9+a,CAAAA,MAAAA,CAAO4U,MAAM,CAAC,IAAIpB,KAAAA,CAAM,EAAG,EAAK,CAAA,EAAA,CAAA,CAAA,CAClD,MAAMura,WAAAA,CAAc/+a,MAAO4U,CAAAA,MAAM,CAAC,IAAIpB,KAAAA,CAAM,GAAK,CAAG,CAAA,EAAA,CAAA,CAAA,CACpD,MAAMwra,UAAah/a,CAAAA,MAAAA,CAAO4U,MAAM,CAAC,IAAIpB,KAAAA,CAAM,GAAK,EAAK,CAAA,CAAA,CAAA,CAAA,CACrDxT,OAAO4U,MAAM,CAAC,IAAIpB,KAAM,CAAA,CAAA,CAAG,CAAG,CAAA,EAAA,CAAA,CAAA,CAC9B,MAAMyra,UAAAA,CAAaj/a,OAAO4U,MAAM,CAAC,IAAIpB,KAAM,CAAA,EAAA,CAAK,GAAK,EAAK,CAAA,EAAA,CAAA,CAAA,CAC1D,MAAM0ra,WAAAA,CAAc,CAAC98X,KAAAA,CAAOr0C,KAC1B,OAAO,IAAIyF,MAAM4uC,KAAM3kD,CAAAA,CAAC,CAAE2kD,KAAMpwC,CAAAA,CAAC,CAAEowC,KAAAA,CAAMp0C,CAAC,CAAED,EAC9C,CAEA,CAAA,MAAMoxa,KAAO,IAAI/ka,IAAAA,CACjB,MAAMgla,IAAO,CAAA,IAAIhla,IACjB,CAAA,MAAMila,OAAU,CAAA,IAAIjla,KACpB,MAAMuR,GAAAA,CAAM,IAAIqF,GAChB,CAAA,MAAMw9W,MAAQ,IAAI9+W,KAAAA,CAClB,MAAM4vZ,OAAAA,CAAU,IAAI9ra,KAAAA,CACpB,MAAM+ra,MAAS,CAAA,CACb,IACA,GACA,CAAA,GAAA,CACD,CACKC,MAAAA,cAAAA,SAAuBxC,KAwF3B,CAAA,IAAIyC,IAAK35a,CAAAA,KAAK,CAAE,CACd,IAAI,CAAC45a,KAAK,CAAG,IAAI,CAAC1ua,OAAO,EAAIlL,MAC/B,CACA,IAAI25a,MAAO,CACT,OAAO,IAAI,CAACC,KAAK,CAEnB,IAAIC,KAAQ,EAAA,CACV,OAAO,IAAI,CAACC,MACd,CACA,IAAIC,UAAAA,CAAW/5a,KAAK,CAAE,CACpB,IAAI,CAACg6a,QAAQ,CAAC,CACZC,SAAW,CAAA,CACTvta,EAAG1M,KACL,CAAA,CACAk6a,WAAY,CACVxta,CAAAA,CAAG0sa,WAAYp5a,CAAAA,KAAAA,CAAO,IAAI,CAACm6a,UAAU,CACvC,CAAA,CACAC,UAAW,CACT1ta,CAAAA,CAAG1M,KACL,CACAq6a,CAAAA,cAAAA,CAAgB,CAClB,CAAA,EACF,CACA,IAAIN,YAAa,CACf,OAAO,IAAI,CAACD,MAAM,CAACG,SAAS,CAACvta,CAC/B,CACA,IAAI4ta,WAAWt6a,KAAK,CAAE,CACpB,IAAI,CAACg6a,QAAQ,CAAC,CACZC,SAAW,CAAA,CACT7la,CAAGpU,CAAAA,KACL,EACAk6a,UAAY,CAAA,CACV9la,EAAGgla,WAAYp5a,CAAAA,KAAAA,CAAO,IAAI,CAACm6a,UAAU,CACvC,CAAA,CACAC,SAAW,CAAA,CACThma,EAAGpU,KACL,CAAA,CACAq6a,cAAgB,CAAA,CAClB,CACF,EAAA,CACA,IAAIC,UAAa,EAAA,CACf,OAAO,IAAI,CAACR,MAAM,CAACG,SAAS,CAAC7la,CAAC,CAEhC,IAAImma,UAAWv6a,CAAAA,KAAK,CAAE,CACpB,IAAI,CAACg6a,QAAQ,CAAC,CACZC,UAAW,CACT1la,CAAAA,CAAGvU,KACL,CACAk6a,CAAAA,UAAAA,CAAY,CACV3la,CAAAA,CAAG6ka,WAAYp5a,CAAAA,KAAAA,CAAO,IAAI,CAACm6a,UAAU,CACvC,CACAC,CAAAA,SAAAA,CAAW,CACT7la,CAAGvU,CAAAA,KACL,CACAq6a,CAAAA,cAAAA,CAAgB,CAClB,CAAA,EACF,CACA,IAAIE,UAAAA,EAAa,CACf,OAAO,IAAI,CAACT,MAAM,CAACG,SAAS,CAAC1la,CAC/B,CACA,IAAI4la,UAAAA,CAAWn6a,KAAK,CAAE,CACpB,IAAI,CAACg6a,QAAQ,CAAC,CACZE,UAAY,CAAA,CACVxta,EAAG0sa,WAAY,CAAA,IAAI,CAACU,MAAM,CAACI,UAAU,CAACxta,CAAC,CAAE1M,KAAAA,CAAAA,CACzCoU,CAAGgla,CAAAA,WAAAA,CAAY,IAAI,CAACU,MAAM,CAACI,UAAU,CAAC9la,CAAC,CAAEpU,KAAAA,CAAAA,CACzCuU,CAAG6ka,CAAAA,WAAAA,CAAY,IAAI,CAACU,MAAM,CAACI,UAAU,CAAC3la,CAAC,CAAEvU,OACzCw6a,GAAKpB,CAAAA,WAAAA,CAAY,IAAI,CAACU,MAAM,CAACI,UAAU,CAACM,GAAG,CAAEx6a,KAC7CqsB,CAAAA,CAAAA,CAAAA,CAAG+sZ,YAAY,IAAI,CAACU,MAAM,CAACI,UAAU,CAAC7tZ,CAAC,CAAErsB,KAAAA,CAC3C,CACF,CACF,EAAA,CACA,IAAIm6a,UAAa,EAAA,CACf,OAAQ,CAAA,IAAI,CAACL,MAAM,CAACI,UAAU,CAACxta,CAAC,CAACzE,CAAC,CAAG,IAAI,CAAC6xa,MAAM,CAACI,UAAU,CAAC9la,CAAC,CAACnM,CAAC,CAAG,IAAI,CAAC6xa,MAAM,CAACI,UAAU,CAAC3la,CAAC,CAACtM,CAAC,CAAG,IAAI,CAAC6xa,MAAM,CAACI,UAAU,CAACM,GAAG,CAACvya,CAAC,CAAG,IAAI,CAAC6xa,MAAM,CAACI,UAAU,CAAC7tZ,CAAC,CAACpkB,CAAC,EAAI,CAC9J,CACA,IAAIwya,SAAY,EAAA,CACd,OAAO,CAAC,IAAI,CAACC,UAAU,EAAI,CAAC,CAAC,IAAI,CAACC,aAAa,CAEjDroG,QAASr1M,CAAAA,YAAY,CAAE,CACrB,GAAI,CAACA,YAAAA,CAAc,CACjB,OAAO,EACT,CACA,OAAOA,YAAawL,CAAAA,IAAI,CAAC9sI,IAAI,CAAC3C,KAAK,CAAC,GAAA,CAAI,CAAC,CAAA,CAAE,CAE7C4hb,YAAY39S,YAAY,CAAE,CACxB,GAAI,CAACA,aAAc,CACjB,OAAO,KACT,CACA,OAAOA,YAAAA,CAAawL,IAAI,CAAC9sI,IAAI,CAAC2F,OAAO,CAAC,WAAa,CAAC,CACtD,CACAu5a,MAAAA,CAAO59S,YAAY,CAAE,CACnB,GAAI,IAAI,CAACw9S,SAAS,CAAE,CAClB,MACF,CACA,MAAM/3a,MAAAA,CAAS,IAAI0I,GAAAA,CAAI,IAAI,CAAC0va,SAAS,EACrC,IAAIlya,OAAAA,CAAU,MACd,MAAMD,GAAAA,CAAM,IAAC+U,EAAAA,CACX,GAAIhb,MAAAA,CAAO/B,GAAG,CAAC+c,IAAAA,CAAAA,CAAO,CACpBhb,MAAOxB,CAAAA,MAAM,CAACwc,IAChB,EAAA,CAAA,KAAO,CACL,IAAI,CAACo9Z,SAAS,CAACnya,GAAG,CAAC+U,KACnB,CAAA,IAAI,CAACq9Z,OAAO,CAACr9Z,IAAK,CAAA,EAAEs9Z,KAAM,CAAA,IAAA,CAAA,CAC1Bpya,QAAU,KACZ,CACF,CACA,CAAA,IAAI,CAAC8xa,UAAU,CAAG,IAAI,CAACpoG,QAAQ,CAACr1M,YAAAA,CAChC,CAAA,IAAI,CAACg+S,aAAa,CAAG,IAAI,CAACL,WAAW,CAAC39S,YACtC,CAAA,CAAA,GAAI,IAAI,CAACy9S,UAAU,CAAE,CACnB,GAAI,IAAI,CAACA,UAAU,GAAK,KAAA,CAAO,CAC7B/xa,GAAAA,CAAI,GACJA,CAAAA,CAAAA,GAAAA,CAAI,KACJA,GAAI,CAAA,GAAA,CAAA,CACJA,IAAI,KACN,EAAA,CAAA,KAAO,GAAI,IAAI,CAACsya,aAAa,CAAE,CAC7B,OAAO,IAAI,CAACP,UAAU,EACpB,IAAK,GAAA,CACH/xa,IAAI,GACJA,CAAAA,CAAAA,GAAAA,CAAI,GACJA,CAAAA,CAAAA,GAAAA,CAAI,IACJ,CAAA,CAAA,UACG,GACHA,CAAAA,GAAAA,CAAI,KACJA,GAAI,CAAA,GAAA,CAAA,CACJA,IAAI,IACJ,CAAA,CAAA,MACG,IAAA,GAAA,CACHA,GAAI,CAAA,GAAA,CAAA,CACJA,IAAI,GACJA,CAAAA,CAAAA,GAAAA,CAAI,MACJ,KACJ,CACF,MAAO,CACLA,GAAAA,CAAI,IAAI,CAAC+xa,UAAU,EACrB,CACF,CACA,IAAK,MAAMh9Z,IAAQhb,IAAAA,MAAAA,CAAO,CACxB,IAAI,CAACo4a,SAAS,CAAC55a,MAAM,CAACwc,KACtB,CAAA,IAAI,CAACq9Z,OAAO,CAACr9Z,IAAAA,CAAK,EAAEs9Z,KAAM,CAAA,KAAA,CAAA,CAC1Bpya,OAAU,CAAA,KACZ,CACA,GAAIA,QAAS,CACX,IAAI,CAACwua,aAAa,CAAG,KACvB,CACF,CACA8D,UAAWC,CAAAA,SAAS,CAAE,CACpB,GAAI,IAAI,CAACl7F,OAAO,CAACr2S,UAAU,GAAKqnF,sBAAwB,CAAA,CACtDprG,GAAIE,CAAAA,MAAM,CAAC3uB,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAACtc,WAAW,EAAA,CAAA,CAC/C98F,GAAIK,CAAAA,SAAS,CAAChQ,IAAI,CAACila,SAAWt1Z,CAAAA,GAAAA,CAAIE,MAAM,CAAEttB,CAAAA,SAAS,GACnD,OAAOotB,GACT,CACA,MAAMu1Z,UAAa,CAAA,IAAI,CAACn7F,OAAO,CAACvnM,OAAO,CAAG,IAAI,CAACunM,OAAO,CAAC3mM,QAAQ,CAC/DzzH,GAAIE,CAAAA,MAAM,CAAC7P,IAAI,CAACila,UAAW9B,IAAKjib,CAAAA,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CAAE3vI,CAAAA,SAAS,CAACita,UAC5Ev1Z,CAAAA,CAAAA,CAAAA,GAAAA,CAAIK,SAAS,CAAC9uB,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CAC9C,CAAA,OAAOj4H,GACT,CACAw1Z,YAAAA,CAAa39Z,IAAI,CAAE49Z,QAAQ,CAAEC,MAAM,CAAE,CACnC,MAAM/D,SAAY6B,CAAAA,IAAAA,CAAKjib,IAAI,CAAC,IAAI,CAACogb,SAAS,CAC1C,CAAA,MAAMr5Z,OAASuqX,KAAMvqX,CAAAA,MAAM,CAACvd,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAA,CACtC,GAAI06a,QAAAA,CAAU,CACZn9Z,MAAAA,CAAO/mB,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CAAE3vI,CAAAA,SAAS,CAAC,CAAC,GACtD,CAAO,KAAA,CACLgQ,MAAM,CAACT,IAAAA,CAAK,CAAG,CACf,CAAA,IAAI,CAAC89Z,aAAa,CAAC1ha,eAAe,CAACqE,MAAQA,CAAAA,MAAAA,CAAAA,CAC3C,GAAIo9Z,MAAQ,CAAA,CACVjC,KAAK3ka,KAAK,CAACwJ,MAAQq5Z,CAAAA,SAAAA,CAAAA,CAAW/+a,SAAS,EAAA,CACvC0lB,OAAOxJ,KAAK,CAAC2ka,KAAMn7Z,MAAQ1lB,CAAAA,CAAAA,SAAS,GACtC,CACF,CACA,OAAOiwY,KAAAA,CAAMr+W,kBAAkB,CAAC,IAAI,CAACoxZ,aAAa,CAAEt9Z,MACtD,CAAA,CACAu9Z,aAAah+Z,IAAI,CAAEuI,GAAG,CAAE,CACtB,GAAIvI,OAAS,GAAK,CAAA,CAChBuI,GAAI7uB,CAAAA,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CAAA,CAAE3vI,SAAS,CAAC,CAAC,GACnD,CAAO,KAAA,CACL8X,IAAIrlB,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CACdqlB,CAAAA,CAAAA,GAAG,CAACvI,IAAAA,CAAK,CAAG,EACd,CACA,OAAOuI,GACT,CACA01Z,cAAe1na,CAAAA,KAAK,CAAEyJ,IAAI,CAAE,CAC1B27Z,IAAAA,CAAKz4a,GAAG,CAAC,CAAA,CAAG,EAAG,CACfy4a,CAAAA,CAAAA,IAAI,CAAC37Z,IAAK,CAAA,CAAG,EACbzJ,KAAM7c,CAAAA,IAAI,CAACiib,IAAKlra,CAAAA,SAAS,CAACkra,IAAK9ja,CAAAA,GAAG,CAACtB,KAAAA,CAAAA,CAAAA,CAAAA,CACnC,MAAMnc,CAAAA,CAAImc,KAAK,CAACyJ,IAAAA,CAAK,CACrBzJ,KAAMrT,CAAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAChBqT,CAAAA,CAAAA,KAAK,CAACyJ,KAAK,CAAG5lB,EAChB,CACA8jb,cAAelva,CAAAA,CAAC,CAAE0H,CAAC,CAAEkna,QAAW,CAAA,KAAK,CAAEC,MAAAA,CAAS,KAAK,CAAE,CACrD,MAAMJ,SAAY,CAAA,IAAI,CAACl7F,OAAO,CAACxkM,aAAa,CAAC/uI,CAAG0H,CAAAA,CAAAA,CAAG,GACnD,MAAMsJ,IAAAA,CAAO,IAAI,CAACi9Z,aAAa,CAC/B,MAAM90Z,GAAAA,CAAM,IAAI,CAACq1Z,UAAU,CAACC,WAC5B,MAAMzyC,KAAAA,CAAQ,IAAI,CAAC2yC,YAAY,CAAC39Z,IAAM49Z,CAAAA,QAAAA,CAAUC,MAChD,CAAA,CAAA,GAAI,CAAC7yC,KAAAA,CAAM7hX,aAAa,CAAChB,GAAAA,CAAK0zZ,SAAU,CACtC,OAAOA,OACT,CACA,OAAOA,OACT,CACAsC,eAAgBn1R,CAAAA,GAAG,CAAE7D,GAAG,CAAEi5R,UAAU,CAAEC,aAAa,CAAE,CACnD,IAAK,MAAMr+Z,IAAAA,IAAQ+7Z,MAAO,CAAA,CACxB,GAAIqC,UAAe,GAAA,KAAA,CAAO,CACxB,IAAI,CAACE,aAAa,CAACt1R,GAAAA,CAAK7D,GAAKnlI,CAAAA,IAAAA,CAAAA,CAC7B,QACF,CACA,GAAIq+Z,aAAe,CAAA,CACjB,GAAIr+Z,IAASo+Z,GAAAA,UAAAA,CAAY,CACvB,IAAI,CAACE,aAAa,CAACt1R,GAAK7D,CAAAA,GAAAA,CAAKnlI,MAC/B,CACF,CAAA,KAAO,CACL,GAAIA,IAAAA,GAASo+Z,WAAY,CACvB,IAAI,CAACE,aAAa,CAACt1R,GAAAA,CAAK7D,IAAKnlI,IAC/B,EAAA,CACF,CACF,CACF,CACAs+Z,cAAct1R,GAAG,CAAE7D,GAAG,CAAEnlI,IAAI,CAAE,CAC5B,MAAMuI,GAAAA,CAAM,IAAI,CAACy1Z,YAAY,CAACh+Z,KAAM27Z,IACpC,CAAA,CAAA,MAAMlwW,IAAO,CAAA,IAAI,CAAC2wW,MAAM,CAACM,SAAS,CAAC18Z,KAAK,CACxC,MAAMsE,KAAOq3Z,IAAKjib,CAAAA,IAAI,CAAC6uB,GAAAA,CAAAA,CAAK9X,SAAS,CAAC,IAAI,CAAC8xU,OAAO,CAACvnM,OAAO,CAAG,IAAI,CAACunM,OAAO,CAAC3mM,QAAQ,CAClF,CAAA,MAAMr3H,GAAKq3Z,IAAKlib,CAAAA,IAAI,CAAC4qB,IAAM7T,CAAAA,CAAAA,SAAS,CAAC,CAAC,CAAA,CAAA,CACtC00I,GAAI/oI,CAAAA,eAAe,CAACkI,IAAAA,CAAMA,MAAMrZ,GAAG,CAAC+9I,KACpC7D,GAAI/oI,CAAAA,eAAe,CAACmI,EAAIA,CAAAA,EAAAA,CAAAA,CAAItZ,GAAG,CAAC+9I,GAChC,CAAA,CAAA,GAAI,IAAI,CAACozR,MAAM,CAACO,cAAc,CAAG,EAAG,CAClC,MAAM4B,QAAWzC,CAAAA,OAAAA,CAAQpib,IAAI,CAAC+xE,KAC9B8yW,CAAAA,QAAAA,CAASh0a,CAAC,EAAI,CAAA,CAAI,IAAI,CAAC6xa,MAAM,CAACO,cAAc,CAC5C,IAAI,CAAC7sM,IAAI,CAAC15B,QAAQ,CAAC9xL,IAAAA,CAAMC,GAAIg6Z,QAAU,CAAA,KAAA,CAAO,IAAI,CAACtuS,MAAM,EAC3D,CACA,GAAIxkE,IAAAA,CAAKlhE,CAAC,GAAK,CAAA,CAAG,CAChB,IAAI,CAACulO,IAAI,CAAC15B,QAAQ,CAAC9xL,KAAMC,EAAIknD,CAAAA,IAAAA,CAAM,MACrC,CACF,CACA+yW,kBAAmB,CACjB,IAAI,MAAMh8a,GAAAA,IAAO,IAAI,CAAC66a,OAAO,CAAC,CAC5B,MAAMx0R,KAAQ,CAAA,IAAI,CAACw0R,OAAO,CAAC76a,GAAI,CAAA,CAC/B,IAAI,CAACyzI,IAAI,CAACkN,QAAQ,CAAC0F,KAAMtnB,CAAAA,MAAM,EAC/B,IAAI,CAACk5S,eAAe,CAACh/a,IAAI,CAACotJ,OAC1B,IAAI,IAAIluJ,EAAI,CAAGA,CAAAA,CAAAA,CAAIkuJ,MAAM3oB,aAAa,CAACtlI,MAAM,CAAED,CAAI,EAAA,CAAA,CACjD,IAAI,CAAC8jb,SAAS,CAACv7a,GAAG,CAAC2lJ,MAAM3oB,aAAa,CAACvlI,CAAE,CAAA,CAAEkuJ,KAC7C,EAAA,CACF,CACF,CACA61R,WAAAA,CAAYC,SAAS,CAAEnxa,OAAO,CAAE,CAC9B,GAAImxa,SAAc,GAAA,MAAA,CAAQ,CACxBA,SAAAA,CAAY,IACd,CACA,MAAM91R,MAAQ,IAAI,CAACw0R,OAAO,CAACsB,SAAAA,CAAU,CACrC,GAAI,CAAC91R,KAAAA,CAAO,CACV,MACF,CACAA,KAAM6xR,CAAAA,QAAQ,CAAG,CAAClta,QACpB,CACAoxa,cAAAA,CAAeD,SAAS,CAAE,CACxB,GAAIA,YAAc,MAAQ,CAAA,CACxBA,UAAY,IACd,CACA,MAAM91R,KAAQ,CAAA,IAAI,CAACw0R,OAAO,CAACsB,SAAAA,CAAU,CACrC,GAAI,CAAC91R,MAAO,CACV,OAAO,KACT,CACA,OAAO,CAACA,KAAAA,CAAM6xR,QAChB,CACA4B,QAASuC,CAAAA,OAAO,CAAE,CAChB,MAAM1C,MAAQ,CACZ,GAAG,IAAI,CAACC,MAAM,CACd,GAAGyC,OACL,EACA,GAAI,OAAO1C,QAAU,QAAY,EAAA,OAAOA,KAAMI,CAAAA,SAAS,GAAK,QAAA,EAAY,OAAOJ,KAAMK,CAAAA,UAAU,GAAK,QAAY,EAAA,OAAOL,MAAMO,SAAS,GAAK,QAAU,CAAA,CACnJ,MACF,CACA,IAAI,MAAM18Z,IAAAA,IAAQm8Z,MAAMI,SAAS,CAAC,CAChC,GAAIJ,KAAAA,CAAMI,SAAS,CAACv8Z,IAAK,CAAA,WAAYhQ,MAAO,CAC1C,IAAI,CAACosa,MAAM,CAACG,SAAS,CAACv8Z,IAAAA,CAAK,CAACtmB,IAAI,CAACyib,KAAAA,CAAMI,SAAS,CAACv8Z,IAAAA,CAAK,EACxD,CACF,CACA,IAAI,MAAMA,IAAAA,IAAQm8Z,KAAMK,CAAAA,UAAU,CAAC,CACjC,GAAIL,KAAMK,CAAAA,UAAU,CAACx8Z,IAAK,CAAA,WAAYhQ,MAAO,CAC3C,IAAI,CAACosa,MAAM,CAACI,UAAU,CAACx8Z,IAAK,CAAA,CAACtmB,IAAI,CAACyib,KAAAA,CAAMK,UAAU,CAACx8Z,IAAAA,CAAK,EAC1D,CACF,CACA,IAAI,MAAMA,IAAQm8Z,IAAAA,KAAAA,CAAMO,SAAS,CAAC,CAChC,GAAIP,KAAMO,CAAAA,SAAS,CAAC18Z,IAAAA,CAAK,WAAYhQ,KAAAA,CAAO,CAC1C,IAAI,CAACosa,MAAM,CAACM,SAAS,CAAC18Z,IAAK,CAAA,CAACtmB,IAAI,CAACyib,KAAMO,CAAAA,SAAS,CAAC18Z,IAAK,CAAA,EACxD,CACF,CACA,GAAI,OAAOm8Z,KAAMQ,CAAAA,cAAc,GAAK,QAAA,CAAU,CAC5C,IAAI,CAACP,MAAM,CAACO,cAAc,CAAG3ua,IAAAA,CAAKI,KAAK,CAAC+ta,KAAAA,CAAMQ,cAAc,CAAE,CAAG,CAAA,CAAA,EACnE,CACA,GAAIR,KAAAA,CAAMzB,QAAQ,YAAY1qa,KAAAA,CAAO,CACnC,IAAI,CAACosa,MAAM,CAAC1B,QAAQ,CAAChhb,IAAI,CAACyib,KAAAA,CAAMzB,QAAQ,EAC1C,CACA,IAAI,MAAMz8a,IAAQ,IAAA,IAAI,CAACo/a,OAAO,CAAC,CAC7B,IAAI,CAACA,OAAO,CAACp/a,IAAK,CAAA,CAACq/a,KAAK,CAAC,CAAC,CAAC,IAAI,CAACN,UAAU,EAC5C,CACF,CACA7B,WAAY,CACV,KAAK,CAACA,SACN,EAAA,CAAA,GAAI,CAAC,IAAI,CAAC3ta,OAAO,CAAE,CACjB,MACF,CACA,MAAMusa,QAAAA,CAAW,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAC3C,CAAA,MAAMu8R,SAAW,IAAI,CAAC7oS,IAAI,CAAC0M,WAAW,GACtC,MAAMy7R,UAAAA,CAAa,IAAI,CAACpB,UAAU,EAAI,IAAI,CAACC,aAAa,CACxD,MAAMoB,aAAAA,CAAgB,IAAI,CAACd,aAAa,EAAI,IAAI,CAACwB,gBAAgB,CACjE,IAAI,CAACZ,eAAe,CAACpE,QAAAA,CAAU+E,SAAUV,UAAYC,CAAAA,aAAAA,EACvD,CACAv6Y,OAAAA,EAAU,CACR,KAAK,CAACA,OACN,EAAA,CAAA,IAAI,MAAMthC,GAAO,IAAA,IAAI,CAAC66a,OAAO,CAAC,CAC5B,IAAI,CAACA,OAAO,CAAC76a,GAAI,CAAA,CAACshC,OAAO,GAC3B,CACF,CAlYAphC,WAAYkrI,CAAAA,MAAM,CAAElO,KAAK,CAAEzhI,IAAAA,CAAO,iBAAiB,CAAC,CAClD,KAAK,CAAC2vI,MAAAA,CAAQlO,MAAOzhI,IAAO,CAAA,CAAA,IAAI,CAACm+a,MAAM,CAAG,CACxCG,UAAW,CACTvta,CAAAA,CAAGssa,UAAUrra,KAAK,EAAA,CAClByG,EAAG6ka,WAAYtra,CAAAA,KAAK,EACpB4G,CAAAA,CAAAA,CAAG2ka,UAAWvra,CAAAA,KAAK,GACnB6sa,GAAK,CAAA,IAAI9sa,MAAM,EAAK,CAAA,EAAA,CAAK,GAAK,CAC9B2e,CAAAA,CAAAA,CAAAA,CAAG,IAAI3e,KAAAA,CAAM,EAAK,CAAA,EAAA,CAAK,GAAK,CAC9B,CAAA,CAAA,CACAwsa,WAAY,CACVxta,CAAAA,CAAG,IAAIgB,KAAQpB,EAAAA,CAAAA,IAAI,CAAC0sa,SAAAA,CAAWtra,KAAM2B,CAAAA,KAAK,CAAE,GAC5C+E,CAAAA,CAAAA,CAAAA,CAAG,IAAI1G,KAAQpB,EAAAA,CAAAA,IAAI,CAAC2sa,WAAavra,CAAAA,KAAAA,CAAM2B,KAAK,CAAE,GAC9CkF,CAAAA,CAAAA,CAAAA,CAAG,IAAI7G,KAAQpB,EAAAA,CAAAA,IAAI,CAAC4sa,UAAYxra,CAAAA,KAAAA,CAAM2B,KAAK,CAAE,GAAA,CAAA,CAC7Cmra,GAAK9sa,CAAAA,KAAAA,CAAM2B,KAAK,CAAC1B,KAAK,EACtB0e,CAAAA,CAAAA,CAAG3e,MAAM2B,KAAK,CAAC1B,KAAK,EACtB,CAAA,CACAysa,SAAW,CAAA,CACT1ta,CAAGssa,CAAAA,SAAAA,CAAUrra,KAAK,EAClByG,CAAAA,CAAAA,CAAG6ka,WAAYtra,CAAAA,KAAK,EACpB4G,CAAAA,CAAAA,CAAG2ka,WAAWvra,KAAK,EACrB,CACA0sa,CAAAA,cAAAA,CAAgB,EAChBjC,CAAAA,QAAAA,CAAUe,WAAWxra,KAAK,EAC5B,EAAG,IAAI,CAAC8ta,aAAa,CAAG,IAAInna,IAAQ,CAAA,IAAI,CAACkna,aAAa,CAAG,IAAIt7Z,IAAAA,CAAQ,IAAI,CAAC66Z,OAAO,CAAG,EAAC,CAAG,IAAI,CAACoB,SAAS,CAAG,IAAI17a,GAAO,CAAA,IAAI,CAACq6a,SAAS,CAAG,IAAI1va,GAAO,CAAA,IAAI,CAACsva,UAAU,CAAG,EAAA,CAAI,IAAI,CAACO,aAAa,CAAG,KAAO,CAAA,IAAI,CAACN,aAAa,CAAG,EAAI,CAAA,IAAI,CAAC8B,gBAAgB,CAAG,KAAO,CAAA,IAAI,CAACC,oBAAoB,CAAG,IAAIpoa,IAAQ,CAAA,IAAI,CAACsla,KAAK,CAAG,KAAA,CAAO,IAAI,CAAC+C,aAAa,CAAG,CAAG,CAAA,IAAI,CAACC,QAAQ,CAAG,UAC9V,CAAA,IAAI,CAACl9a,EAAE,CAACw3a,KAAMU,CAAAA,iBAAiB,CAAE,CAAClra,CAAAA,CAAG0H,EAAG6oH,YACtC,GAAA,CAAA,MAAMspB,KAAQ,CAAA,IAAI,CAAC41R,SAAS,CAAC/hb,GAAG,CAAC6iI,cACjC,GAAIspB,KAAAA,EAAO6xR,SAAU,CACnB,MACF,CACA,GAAI,IAAI,CAACqC,SAAS,CAAE,CAClB,MACF,CACA,GAAI,CAACx9S,YAAc,CAAA,CACjB,MACF,CACA,IAAI,CAACy9S,UAAU,CAAG,EAClB,CAAA,IAAI,CAACO,aAAa,CAAG,KACrB,CAAA,IAAI,CAACN,aAAa,CAAG,IAAI,CAACroG,QAAQ,CAACr1M,YAAAA,CACnC,CAAA,IAAI,CAACw/S,gBAAgB,CAAG,IAAI,CAAC7B,WAAW,CAAC39S,YAAAA,CAAAA,CACzC,IAAI,CAACw+S,aAAa,CAACrkb,IAAI,CAAC,IAAI,CAACu8I,IAAI,CAACsM,gBAAgB,EAClD,CAAA,CAAA,IAAI,CAACu7R,aAAa,CAACpkb,IAAI,CAAC,IAAI,CAACu8I,IAAI,CAAC0M,WAAW,IAC7C,MAAMpsI,KAAAA,CAAQ,IAAI,CAAC2na,cAAc,CAAClva,CAAG0H,CAAAA,CAAAA,CAAAA,CACrC,IAAI,CAACsoa,oBAAoB,CAACtlb,IAAI,CAAC6c,KAAAA,CAAAA,CAC/B,IAAI,CAAC1S,IAAI,CAACm4a,cAAemD,CAAAA,oBAAoB,CAAE5oa,KAAAA,CAAOvH,CAAG0H,CAAAA,CAAAA,EAC3D,GACA,IAAI,CAAC1U,EAAE,CAACw3a,KAAMW,CAAAA,iBAAiB,CAAE,CAACnra,CAAAA,CAAG0H,CAAG6oH,CAAAA,YAAAA,GAAAA,CACtC,MAAMspB,KAAAA,CAAQ,IAAI,CAAC41R,SAAS,CAAC/hb,GAAG,CAAC6iI,cACjC,GAAIspB,KAAAA,EAAO6xR,QAAU,CAAA,CACnB,MACF,CACA,IAAI,CAACyC,MAAM,CAAC59S,YACZ,CAAA,CAAA,GAAI,CAAC,IAAI,CAACw9S,SAAS,CAAE,CACnB,MACF,CACA,MAAMxma,KAAAA,CAAQ,IAAI,CAAC2na,cAAc,CAAClva,CAAG0H,CAAAA,CAAAA,CAAAA,CACrC,IAAI,CAAC7S,IAAI,CAACm4a,eAAeoD,mBAAmB,CAAE7oa,MAAOvH,CAAG0H,CAAAA,CAAAA,EAC1D,GACA,IAAI,CAAC1U,EAAE,CAACw3a,KAAMY,CAAAA,eAAe,CAAE,CAAC5sI,EAAAA,CAAIC,GAAIluK,YACtC,GAAA,CAAA,IAAI,CAAC49S,MAAM,CAAC59S,YACZ,CAAA,CAAA,GAAI,CAAC,IAAI,CAACw9S,SAAS,CAAE,CACnB,MACF,CACA,GAAIx9S,YAAc,CAAA,CAChB,IAAI,CAACy9S,UAAU,CAAG,IAAI,CAACC,aAAa,CACpC,IAAI,CAACM,aAAa,CAAG,IAAI,CAACwB,iBAC5B,CACA,IAAI,CAAC9B,aAAa,CAAG,EACrB,CAAA,IAAI,CAAC8B,gBAAgB,CAAG,KACxB,CAAA,IAAI,CAACl7a,IAAI,CAACm4a,eAAeqD,kBAAkB,EAC7C,GACA,IAAI,CAACr9a,EAAE,CAACw3a,KAAM0B,CAAAA,iBAAiB,CAAE,IAC/B,CAAA,IAAI,CAACe,IAAI,CAAG,KACZ,CAAA,IAAI,CAACe,UAAU,CAAG,EAClB,CAAA,IAAI,CAACO,aAAa,CAAG,KAAA,CACrB,IAAI,CAACJ,MAAM,EACX,CAAA,IAAI,CAACt5a,IAAI,CAAC21a,KAAMY,CAAAA,eAAe,EACjC,CACF,EAAA,CAsTF,CA3YI,cAFE4B,CAEGmD,oBAAoB,CAAG,iBAG5B,CALEnD,eAKGoD,mBAAmB,CAAG,gBAG3B,CAREpD,cAAAA,CAQGqD,kBAAkB,CAAG,eAAA,CAuY9B,MAAMC,OAAAA,CAAU,IAAI1oa,IAAAA,CACpB,MAAM2oa,OAAU,CAAA,IAAI3oa,KACpB,MAAM4oa,OAAAA,CAAU,IAAI5oa,IACpB,CAAA,MAAM6oa,OAQJ,CAAA,IAAI3qS,SAAY,EAAA,CACd,OAAO,IAAI,CAAC21L,UAAU,CAExB,IAAI/uJ,QAAW,EAAA,CACb,OAAO,IAAI,CAAC+/F,SAAS,CAEvBikK,YAAAA,CAAa12R,GAAM,CAAA,IAAIpyI,IAAM,CAAEuuI,IAAM,IAAI3iI,IAAM,CAAEvF,KAAAA,CAAQ,IAAIrG,IAAM,CAAE,CACnE,IAAI,CAACk+H,SAAS,CAACxzH,MAAM,CAAC0nI,GAAAA,CAAK7D,GAAKloI,CAAAA,KAAAA,EAClC,CACAknH,YAAAA,CAAaC,QAAQ,CAAE,CACrB,GAAI,CAACA,QAAAA,EAAY,EAAEA,QAAAA,YAAoBskE,QAAO,CAAA,CAAI,CAChD,MAAM,IAAI7jM,KAAM,CAAA,uBAAA,CAClB,CACA,MAAM+yC,SAAAA,CAAYwsF,SAASxsF,SAAS,EAAI,EAAE,CAC1C,MAAMstD,OAAAA,CAAUk/B,SAASl/B,OAAO,EAAI,EAAE,CACtC,IAAI,CAAC21U,IAAI,CAAG,EAAE,CACd,IAAI,IAAI5+S,CAAI,CAAA,CAAA,CAAGA,EAAI/2B,OAAQtqG,CAAAA,MAAM,CAAEqhI,CAAK,EAAA,CAAA,CAAE,CACxC,MAAMyM,EAAKxjC,CAAAA,OAAO,CAAC+2B,CAAE,CAAA,CACrB,MAAM0M,EAAKzjC,CAAAA,OAAO,CAAC+2B,CAAI,CAAA,CAAA,CAAE,CACzB,MAAMwrE,EAAKviG,CAAAA,OAAO,CAAC+2B,CAAI,CAAA,CAAA,CAAE,CACzBqjT,OAAQp8a,CAAAA,GAAG,CAAC00C,SAAS,CAAC8wF,EAAK,CAAA,CAAA,CAAE,CAAE9wF,SAAS,CAAC8wF,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,CAAE9wF,SAAS,CAAC8wF,GAAK,CAAI,CAAA,CAAA,CAAE,CAC3E62S,CAAAA,OAAAA,CAAQr8a,GAAG,CAAC00C,SAAS,CAAC+wF,EAAAA,CAAK,EAAE,CAAE/wF,SAAS,CAAC+wF,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,CAAE/wF,SAAS,CAAC+wF,GAAK,CAAI,CAAA,CAAA,CAAE,EAC3E62S,OAAQt8a,CAAAA,GAAG,CAAC00C,SAAS,CAAC6vJ,EAAK,CAAA,CAAA,CAAE,CAAE7vJ,SAAS,CAAC6vJ,EAAK,CAAA,CAAA,CAAI,EAAE,CAAE7vJ,SAAS,CAAC6vJ,EAAK,CAAA,CAAA,CAAI,CAAE,CAAA,CAAA,CAC3E,MAAMk4O,GAAAA,CAAM,IAAIpxZ,GAAI+wZ,CAAAA,OAAAA,CAASC,QAASC,OACtC,CAAA,CAAA,IAAI,CAAC3E,IAAI,CAACp/a,IAAI,CAACkkb,GACjB,EAAA,CACF,CAjCAj9a,WAAY0hI,CAAAA,QAAQ,CAAEs3C,QAAW,CAAA,CAAC,CAAC,CACjC,IAAI,CAAC+/F,SAAS,CAAG,CACjB,CAAA,IAAI,CAACgvD,UAAU,CAAG,IAAIvtT,IACtB,CAAA,IAAI,CAAC29Z,IAAI,CAAG,EAAE,CACd,IAAI,CAAC12S,YAAY,CAACC,QAAAA,CAClB,CAAA,IAAI,CAACq3I,SAAS,CAAG//F,SACnB,CA4BF,CAEA,MAAMkkQ,WAAAA,CAAc,CAClB9iT,UAAAA,CAAY,aACZ72E,CAAAA,UAAAA,CAAY,CACVigB,eAAiBztC,CAAAA,iBACnB,CACA2kG,CAAAA,UAAAA,CAAY,CAAC;;;;;;;;;;CAUd,CAAC,CACAC,aAAc,CAAC;;;;;;;;;;;;;;;;CAgBhB,CAAC,CACAN,WAAY,CAAC;;;;;;;;;;;;CAYd,CAAC,CACAE,aAAc,CAAC;;;;;;;;;;;;;;;;CAgBhB,CACD,EAEA,MAAM4iT,IAAAA,CAAO,IAAIn3O,QACjBm3O,CAAAA,IAAKjoY,CAAAA,SAAS,CAAG,EAAE,CACnBioY,IAAAA,CAAKv7S,OAAO,CAAG,EAAE,CACXw7S,MAAAA,KAAAA,CA8CJ,IAAIpF,QAAAA,CAASp4a,KAAK,CAAE,CAClB,IAAI,CAACy9a,SAAS,CAAGz9a,KAAAA,EAAS,MAC1B,IAAI,CAACg7a,KAAK,CAAC,KACb,EAAA,CACA,IAAI5C,QAAW,EAAA,CACb,OAAO,IAAI,CAACqF,SAAS,CAEvB,IAAIlyS,OAAQvrI,CAAAA,KAAK,CAAE,CACjB,GAAIA,KAAU,GAAA,IAAI,CAAC09a,QAAQ,CAAE,CAC3B,MACF,CACA,IAAI,IAAIrlb,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACulI,aAAa,CAACtlI,MAAM,CAAED,CAAI,EAAA,CAAA,CAChD,IAAI,CAACulI,aAAa,CAACvlI,EAAE,CAACkzI,OAAO,CAAGvrI,MAClC,CACA,IAAI,CAAC09a,QAAQ,CAAG19a,MAClB,CACA,IAAIurI,SAAU,CACZ,OAAO,IAAI,CAACmyS,QACd,CACAC,sBAAuB1+S,CAAAA,MAAM,CAAE63E,MAAM,CAAE,CACrC,MAAMx6J,KAAQ,CAAA,IAAI,CAACmhY,SAAS,CAAG,IAAI,CAACG,cAAc,CAAG,IAAI,CAACC,aAAa,CACvE,IAAI,CAACv0S,SAAS,CAACwqB,SAAS,CAAC,aAAe,CAAA,IAAI,CAAC9uH,MAAM,CAAG,CAAA,CAAI,IAAM,GAChE,CAAA,CAAA,IAAI,CAACskG,SAAS,CAACvnC,YAAY,CAAC,QAAA,CAAU,IAAI,CAAC/8D,MAAM,CAAA,CACjD,IAAI,CAACskG,SAAS,CAACvnC,YAAY,CAAC,QAAA,CAAUzlD,MAAM1tC,OAAO,EAAA,CACnD,CAAA,IAAI,CAAC06H,SAAS,CAACsC,IAAI,CAAG,IAAI,CAACkyS,KAAK,CAChC,IAAI,CAACx0S,SAAS,CAAC8pB,SAAS,CAAGhnC,YAC3B,CAAA,IAAI,CAACkd,SAAS,CAAC79F,MAAM,GACrB,MAAMmyF,aAAAA,CAAgB,EAAE,CACxB,IAAI,IAAIvlI,EAAI,CAAGA,CAAAA,CAAAA,CAAIy+M,OAAOx+M,MAAM,CAAED,IAAI,CACpC,MAAM+1I,EAAK,CAAA,IAAIzG,YAAamvE,CAAAA,MAAM,CAACz+M,CAAE,CAAA,CAAE,IAAI,CAACixI,SAAS,CACrD8E,CAAAA,EAAGxC,CAAAA,IAAI,CAAG,KAAA,CACVhO,aAAczkI,CAAAA,IAAI,CAACi1I,EACnB,CAAA,CAAA,IAAI,CAACxQ,aAAa,CAACzkI,IAAI,CAACi1I,EAAAA,EAC1B,CACAnP,MAAAA,CAAO47G,YAAY,CAAC,SAAU,CAC5Bj9G,aAAAA,CAAeA,cACfZ,MAAQ,CAAA,IAAI,CAACmc,OAAO,CACpBqN,WAAa,CAAA,KACf,CACF,EAAA,CACA0iB,SAAU,CACR,IAAI,CAACjqC,MAAM,CAAC+hB,gBAAgB,CAAC,IAAI,CAAC/1B,SAAS,CAC3C,CAAA,IAAI,CAACgU,MAAM,CAAC6hB,mBAAmB,CAAC,IAAI,CAAC4+O,SAAS,CAC9C,CAAA,IAAI,CAACzgQ,MAAM,CAACiiB,aAAa,CAAC,IAAI,CAACZ,MAAM,EACvC,CACA06R,MAAMzkW,KAAK,CAAE,CACX,MAAMj6B,KAAQ,CAAA,IAAI,CAACmhY,SAAS,CAAG,IAAI,CAACG,cAAc,CAAGrnW,KAAQ,CAAA,IAAI,CAACwnW,WAAW,CAAG,IAAI,CAACF,aAAa,CAClG,IAAI,CAACv0S,SAAS,CAACvnC,YAAY,CAAC,QAAUzlD,CAAAA,KAAAA,CAAM1tC,OAAO,EAAA,EACrD,CACA4yB,OAAU,EAAA,CACR,IAAI,CAACy9F,MAAM,CAACz9F,OAAO,GACrB,CAhGAphC,WAAYkiC,CAAAA,MAAM,CAAE3mC,IAAI,CAAE0C,IAAI,CAAC,CAC7B,IAAI,CAAC4sH,SAAS,CAAG,IAAI32G,IACrB,CAAA,IAAI,CAACorX,SAAS,CAAG,IAAIprX,IACrB,CAAA,IAAI,CAACgsI,MAAM,CAAG,IAAIhsI,IAAAA,CAAK,CAAG,CAAA,CAAA,CAAG,EAC7B,CAAA,IAAI,CAAC6kI,OAAO,CAAG,EAAE,CACjB,IAAI,CAAC7P,SAAS,CAAG,IAAI+6D,cAAei5O,CAAAA,WAAAA,CACpC,CAAA,IAAI,CAACG,SAAS,CAAG,KACjB,CAAA,IAAI,CAACC,QAAQ,CAAG,IAChB,CAAA,IAAI,CAACG,aAAa,CAAGnwa,MAAM2B,KAC3B,CAAA,IAAI,CAAC0ua,WAAW,CAAGrwa,KAAMmB,CAAAA,KAAK,CAC9B,IAAI,CAAC+ua,cAAc,CAAGzE,UACtB,CAAA,IAAI,CAAC2E,KAAK,CAAG3uZ,aACb,CAAA,IAAI,CAAC6V,MAAM,CAAG,CAAC,CACf,CAAA,IAAI,CAACszY,OAAO,CAAG,EACf,CAAA,IAAI,CAAC16S,aAAa,CAAG,EACrB,CAAA,IAAI,CAACt7F,MAAM,CAAGA,MACd,CAAA,IAAI,CAAC5kB,IAAI,CAAGrf,IAAKqf,CAAAA,IAAI,EAAI,GAAA,CACzB,GAAIrf,IAAAA,CAAKse,QAAQ,YAAYrI,IAAAA,CAAM,CACjC,IAAI,CAAC22G,SAAS,CAAC7zH,IAAI,CAACiH,IAAAA,CAAKse,QAAQ,EACnC,CACA,GAAIte,IAAAA,CAAK2gJ,QAAQ,YAAY1qI,IAAAA,CAAM,CACjC,IAAI,CAACorX,SAAS,CAACtoY,IAAI,CAACiH,KAAK2gJ,QAAQ,EACnC,CACA,GAAI3gJ,IAAKsc,CAAAA,KAAK,YAAYrG,IAAM,CAAA,CAC9B,IAAI,CAACgsI,MAAM,CAAClpJ,IAAI,CAACiH,IAAAA,CAAKsc,KAAK,EAC7B,CACA,IAAI,CAAC8ia,SAAS,CAAGp/a,IAAAA,CAAK+5a,QAAQ,EAAI,IAAI,CAACqF,SAAS,CAChD,IAAI,CAACC,QAAQ,CAAGr/a,IAAKktI,CAAAA,OAAO,EAAI,IAAI,CAACmyS,QACrC,CAAA,IAAI,CAACvkS,OAAO,CAAG96I,IAAAA,CAAK2+H,MAAM,EAAI,IAAI,CAACmc,OAAO,CAC1C,GAAI96I,IAAK2/a,CAAAA,YAAY,YAAYtwa,KAAAA,CAAO,CACtC,IAAI,CAACmwa,aAAa,CAAGx/a,IAAK2/a,CAAAA,aAAY,CAExC,GAAI3/a,KAAK4/a,UAAU,YAAYvwa,MAAO,CACpC,IAAI,CAACqwa,WAAW,CAAG1/a,IAAAA,CAAK4/a,WAAU,CAEpC,GAAI5/a,IAAK6/a,CAAAA,aAAa,YAAYxwa,KAAO,CAAA,CACvC,IAAI,CAACkwa,cAAc,CAAGv/a,KAAK6/a,cAC7B,CACA,IAAI,CAACJ,KAAK,CAAGz/a,IAAAA,CAAKutI,IAAI,EAAI,IAAI,CAACkyS,KAAK,CACpC,IAAI,CAAC94Y,MAAM,CAAG3mC,KAAKglC,KAAK,EAAI,IAAI,CAAC2B,MACjC,CAAA,IAAI,CAACi6F,MAAM,CAAG,IAAI27G,OAAO,CAAC,EAAEj/O,IAAK,CAAA,CAAC,EAAE,IAAI,CAAC+hB,IAAI,CAAC,CAAC,CAAA,CAC/C,IAAI,CAACuhH,MAAM,CAAC+hB,gBAAgB,CAAC,IAAI,CAAC/1B,SAAS,EAC3C,IAAI,CAACgU,MAAM,CAAC6hB,mBAAmB,CAAC,IAAI,CAAC4+O,SAAS,CAAA,CAC9C,IAAI,CAACzgQ,MAAM,CAACiiB,aAAa,CAAC,IAAI,CAACZ,MAAM,EACvC,CAqDF,CAEA,MAAM69R,gBAAAA,CAAmB,IACzB,CAAA,MAAMC,mBAAmBZ,KAavB,CAAA,IAAIjgb,KAAKyC,KAAK,CAAE,CACd,IAAI,CAACu9U,KAAK,CAAGv9U,KAAS,EAAA,IAAI,CAACu9U,KAAK,CAChC,IAAI,CAACr0K,OAAO,GACd,CACA,IAAI3rK,IAAO,EAAA,CACT,OAAO,IAAI,CAACggV,KACd,CACA,IAAI8gG,GAAAA,CAAIr+a,KAAK,CAAE,CACb,IAAI,CAACs+a,IAAI,CAAGt+a,OAAS,IAAI,CAACs+a,IAAI,CAC9B,IAAI,CAACp1Q,OAAO,GACd,CACA,IAAIm1Q,GAAAA,EAAM,CACR,OAAO,IAAI,CAACC,IAAI,CAElB,IAAIC,QAAQv+a,KAAK,CAAE,CACjB,GAAI,IAAI,CAACw+a,QAAQ,CAACtpa,QAAQ,CAAClV,KAASm+a,CAAAA,CAAAA,gBAAAA,CAAkB,CACpD,MACF,CACA,IAAI,CAACK,QAAQ,CAACpnb,IAAI,CAAC4I,KAAAA,CAAAA,CACnB,IAAI,CAACkpK,OAAO,GACd,CACA,IAAIq1Q,OAAU,EAAA,CACZ,OAAO,IAAI,CAACC,QACd,CACAt1Q,OAAAA,EAAU,CACR,MAAMnjK,OAAS,IAAI,CAACw3U,KAAK,CAAG,CAAI,CAAA,IAAI,CAAC+gG,IAAI,CACzC,IAAI,CAACrzT,SAAS,CAACrqH,GAAG,CAAC,IAAI,CAAC49a,QAAQ,CAAC9xa,CAAC,CAAG,CAAC3G,OAASA,MAAQ,CAAA,IAAI,CAACy4a,QAAQ,CAACpqa,CAAC,CAAG,CAACrO,MAAAA,CAASA,OAAQ,IAAI,CAACy4a,QAAQ,CAACjqa,CAAC,CAAG,CAACxO,MAAAA,CAASA,MACvH,CAAA,CAAA,IAAI,CAACklH,SAAS,CAAC,IAAI,CAACvtG,IAAI,CAAC,CAAG,EAC5B,IAAI,CAACuhH,MAAM,CAAC+hB,gBAAgB,CAAC,IAAI,CAAC/1B,SAAS,EAC3C,IAAI,CAACgU,MAAM,CAAC6hB,mBAAmB,CAAC,IAAI,CAAC4+O,SAAS,EAC9C,IAAI,CAACzgQ,MAAM,CAACiiB,aAAa,CAAC,IAAI,CAACq8L,KAAK,CAAE,IAAI,CAACA,KAAK,CAAE,IAAI,CAACA,KAAK,EAC9D,CA3CAn9U,YAAYkiC,MAAM,CAAEjkC,IAAO,CAAA,EAAE,CAAC,CAC5B,KAAK,CAACikC,MAAQ,CAAA,OAAA,CAASjkC,IAAO,CAAA,CAAA,IAAI,CAACy/a,KAAK,CAAG5uZ,aAAe,CAAA,IAAI,CAACquT,KAAK,CAAG,GAAM,CAAA,IAAI,CAAC+gG,IAAI,CAAG,EAAG,IAAI,CAACE,QAAQ,CAAG,IAAIlqa,IAChH,CAAA,IAAI,CAACipU,KAAK,CAAGl/U,IAAAA,CAAKd,IAAI,EAAI,IAAI,CAACggV,KAAK,CACpC,IAAI,CAAC+gG,IAAI,CAAGjgb,IAAKggb,CAAAA,GAAG,EAAI,IAAI,CAACC,IAC7B,CAAA,IAAI,CAAChG,OAAO,CAAG,CACb,IAAI6E,OAAQ,CAAA,IAAI7nN,eACjB,CACD,IAAI,CAACqoN,sBAAsB,CAAC,IAAI,CAAC1+S,MAAM,CAAE,CACvC2C,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAIgzL,aAAAA,CAAAA,CACpC,EACD,IAAI,CAACpsD,OAAO,GACd,CAiCF,CAEA,MAAMu1Q,OAAAA,CAAU,IAAInqa,IAAAA,CACpB,MAAMoqa,OAAAA,CAAU,IAAIpqa,IACpB,CAAA,MAAMqqa,QAAU,IAAIz+Z,IACpB,OAAM0+Z,UAAmBpB,SAAAA,KAAAA,CAyBvB,IAAIa,GAAAA,CAAIr+a,KAAK,CAAE,CACb,IAAI,CAACs+a,IAAI,CAAGt+a,KAAS,EAAA,IAAI,CAACs+a,IAAI,CAC9B,IAAI,CAACp1Q,OAAO,GACd,CACA,IAAIm1Q,GAAAA,EAAM,CACR,OAAO,IAAI,CAACC,IACd,CACA,IAAIO,aAAc7+a,CAAAA,KAAK,CAAE,CACvB,IAAI,CAAC8+a,cAAc,CAAG9+a,OAAS,IAAI,CAAC8+a,cAAc,CAClD,IAAI,CAAC51Q,OAAO,GACd,CACA,IAAI21Q,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIC,WAAW/+a,KAAK,CAAE,CACpB,IAAI,CAACg/a,WAAW,CAAGh/a,KAAS,EAAA,IAAI,CAACg/a,WAAW,CAC5C,IAAI,CAAC91Q,OAAO,GACd,CACA,IAAI61Q,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIC,cAAej/a,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACk/a,eAAe,CAAGl/a,KAAAA,EAAS,IAAI,CAACk/a,eAAe,CACpD,IAAI,CAACh2Q,OAAO,GACd,CACA,IAAI+1Q,gBAAiB,CACnB,OAAO,IAAI,CAACC,eACd,CACA,IAAIC,WAAAA,CAAYn/a,KAAK,CAAE,CACrB,IAAI,CAACo/a,YAAY,CAAGp/a,KAAS,EAAA,IAAI,CAACo/a,YAAY,CAC9C,IAAI,CAACl2Q,OAAO,GACd,CACA,IAAIi2Q,WAAc,EAAA,CAChB,OAAO,IAAI,CAACC,YAAY,CAE1B,IAAIC,UAAUr/a,KAAK,CAAE,CACnB,IAAI,CAACs/a,UAAU,CAAGt/a,KAClB,CAAA,IAAI,CAACkpK,OAAO,GACd,CACA,IAAIm2Q,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExBp2Q,SAAU,CACRu1Q,OAAAA,CAAQ79a,GAAG,CAAC,CAAG,CAAA,IAAI,CAAC09a,IAAI,CAAG,IAAI,CAACc,YAAY,CAAG,GAAM,IAAI,CAACJ,WAAW,CAAE,CAAA,CAAA,CACvEL,QAAQ/9a,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CACrB89a,QAAQ99a,GAAG,CAAC,IAAI,CAACs+a,eAAe,CAAE,IAAI,CAACE,YAAY,CAAE,IAAI,CAACF,eAAe,CACzE,CAAA,IAAI,CAAC5G,OAAO,CAAC,EAAE,CAAC8E,YAAY,CAACqB,OAAAA,CAASE,OAASD,CAAAA,OAAAA,CAAAA,CAC/CD,QAAQ79a,GAAG,CAAC,CAAG,CAAA,IAAI,CAAC09a,IAAI,CAAG,IAAI,CAACU,WAAW,CAAG,EAAK,CAAA,CAAA,CAAA,CACnDL,QAAQ/9a,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,GACrB89a,OAAQ99a,CAAAA,GAAG,CAAC,IAAI,CAACk+a,cAAc,CAAG,IAAI,CAACQ,UAAU,CAAE,IAAI,CAACN,WAAW,CAAE,IAAI,CAACF,cAAc,CAAG,IAAI,CAACQ,UAAU,EAC1G,IAAI,CAAChH,OAAO,CAAC,CAAA,CAAE,CAAC8E,YAAY,CAACqB,OAAAA,CAASE,QAASD,OAC/C,CAAA,CAAA,IAAI,CAACa,KAAK,CAACv+R,gBAAgB,CAAC,CAAG,CAAA,IAAI,CAACs9R,IAAI,CAAG,IAAI,CAACc,YAAY,CAAG,GAAM,IAAI,CAACJ,WAAW,CAAE,CAAA,CAAA,CACvF,IAAI,CAACO,KAAK,CAACr+R,aAAa,CAAC,IAAI,CAACg+R,eAAe,CAAE,IAAI,CAACE,YAAY,CAAE,IAAI,CAACF,eAAe,CAAA,CACtF,IAAI,CAACM,KAAK,CAACx+R,gBAAgB,CAAC,EAAG,IAAI,CAACs9R,IAAI,CAAG,IAAI,CAACU,WAAW,CAAG,EAAA,CAAK,CACnE,CAAA,CAAA,IAAI,CAACQ,KAAK,CAACt+R,aAAa,CAAC,IAAI,CAAC49R,cAAc,CAAE,IAAI,CAACE,WAAW,CAAE,IAAI,CAACF,cAAc,EACrF,CA/EA1+a,WAAYkiC,CAAAA,MAAM,CAAEjkC,IAAAA,CAAO,EAAE,CAAC,CAC5B,KAAK,CAACikC,OAAQ,OAASjkC,CAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACigb,IAAI,CAAG,EAAG,IAAI,CAACQ,cAAc,CAAG,GAAA,CAAM,IAAI,CAACE,WAAW,CAAG,EAAA,CAAK,IAAI,CAACE,eAAe,CAAG,GAAA,CAAM,IAAI,CAACE,YAAY,CAAG,IAAM,IAAI,CAACE,UAAU,CAAG,EAC1K,CAAA,IAAI,CAAChB,IAAI,CAAGjgb,IAAKggb,CAAAA,GAAG,EAAI,IAAI,CAACC,IAC7B,CAAA,IAAI,CAACQ,cAAc,CAAGzgb,KAAKwgb,aAAa,EAAI,IAAI,CAACC,cAAc,CAC/D,IAAI,CAACE,WAAW,CAAG3gb,IAAAA,CAAK0gb,UAAU,EAAI,IAAI,CAACC,WAC3C,CAAA,IAAI,CAACE,eAAe,CAAG7gb,IAAK4gb,CAAAA,cAAc,EAAI,IAAI,CAACC,eAAe,CAClE,IAAI,CAACE,YAAY,CAAG/gb,IAAAA,CAAK8gb,WAAW,EAAI,IAAI,CAACC,YAC7C,CAAA,IAAI,CAACE,UAAU,CAAGjhb,IAAKghb,CAAAA,SAAS,EAAI,IAAI,CAACC,UAAU,CACnD,IAAI,CAAChH,OAAO,CAAG,CACb,IAAI6E,OAAAA,CAAQ,IAAI/nN,YAChB,CAAA,CAAA,IAAI+nN,QAAQ,IAAI9nN,gBAAAA,CAAoB,GACrC,CACD,IAAI,CAACkqN,KAAK,CAAG,IAAI3kM,MAAO,CAAA,CAAC,KAAK,EAAE,IAAI,CAACl9N,IAAI,CAAC,CAAC,CAC3C,CAAA,IAAI,CAACuhH,MAAM,CAAC4hB,QAAQ,CAAC,IAAI,CAAC0+R,KAAK,EAC/B,IAAI,CAAC5B,sBAAsB,CAAC,IAAI,CAAC4B,KAAK,CAAE,CACtC39S,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAI8yL,YAAAA,CAAAA,CACpC,CACD,CAAA,IAAI,CAACoqN,KAAK,CAAG,IAAI5kM,MAAAA,CAAO,CAAC,KAAK,EAAE,IAAI,CAACl9N,IAAI,CAAC,CAAC,CAC3C,CAAA,IAAI,CAACuhH,MAAM,CAAC4hB,QAAQ,CAAC,IAAI,CAAC2+R,KAAK,CAAA,CAC/B,IAAI,CAAC7B,sBAAsB,CAAC,IAAI,CAAC6B,KAAK,CAAE,CACtC59S,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAI+yL,gBAAAA,CAAAA,CACpC,EACD,IAAI,CAACnsD,OAAO,GACd,CAyDF,CAEA,MAAMu2Q,WAAoBjC,SAAAA,KAAAA,CAexB,IAAI3pa,MAAO7T,CAAAA,KAAK,CAAE,CAChB,IAAI,CAACmhY,OAAO,CAAGnhY,KAAS,EAAA,IAAI,CAACmhY,OAAO,CACpC,IAAI,CAACj4N,OAAO,GACd,CACA,IAAIr1J,QAAS,CACX,OAAO,IAAI,CAACstX,OACd,CACAj4N,OAAU,EAAA,CACR,MAAMvuJ,KAAQ,CAAA,IAAI,CAACwmX,OAAO,CAAG,CAC7B,CAAA,IAAI,CAACliQ,MAAM,CAACiiB,aAAa,CAACvmI,MAAOA,KAAOA,CAAAA,KAAAA,EAC1C,CAxBAva,WAAYkiC,CAAAA,MAAM,CAAEjkC,IAAAA,CAAO,EAAE,CAAC,CAC5B,KAAK,CAACikC,MAAQ,CAAA,cAAA,CAAgBjkC,MAAO,IAAI,CAAC8iY,OAAO,CAAG,GACpD,CAAA,IAAI,CAACA,OAAO,CAAG9iY,IAAAA,CAAKwV,MAAM,EAAI,IAAI,CAACstX,OAAO,CAC1C,IAAI,CAACm3C,OAAO,CAAG,CACb,IAAI6E,OAAQ,CAAA,IAAIt1O,eAAkB,CACnC,CAAA,CAAA,CACD,IAAI,CAAC81O,sBAAsB,CAAC,IAAI,CAAC1+S,MAAM,CAAE,CACvC2C,IAAAA,CAAKC,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAIulK,eAAe,CAChDC,aAAAA,CAAe,GACfC,cAAgB,CAAA,EAClB,IACD,CACD,CAAA,IAAI,CAAC7+B,OAAO,GACd,CAYF,CAEA,MAAMw2Q,IAAAA,CAAO,IAAIpra,IAAAA,CACjB,MAAMqra,IAAAA,CAAO,IAAIrra,IACjB,CAAA,MAAMsra,OAAU,CAAA,IAAItra,IACpB,CAAA,MAAMura,QAAU,IAAIvra,IAAAA,CACpB,MAAMwra,GAAM,CAAA,IAAI5/Z,KAChB,MAAM6/Z,gBAAAA,CAAmB,GACzB,CAAA,MAAMC,MAAS,CAAA,CACb,IACA,GACA,CAAA,GAAA,CACD,CACD,MAAMC,cAAuBvG,SAAAA,cAAAA,CAkG3B,IAAIwG,OAAQlgb,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACmgb,aAAa,CAAC,KAAA,CAAOngb,OAC5B,CACA,IAAIkgb,SAAU,CACZ,OAAO,IAAI,CAACnF,OAAO,CAACrua,CAAC,CAAC2xa,GAAG,CAE3B,IAAI+B,iBAAAA,CAAkBpgb,KAAK,CAAE,CAC3B,IAAI,CAACmgb,aAAa,CAAC,gBAAiBngb,KACtC,EAAA,CACA,IAAIogb,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACrF,OAAO,CAACrua,CAAC,CAACmya,aAAa,CAErC,IAAIwB,cAAergb,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACmgb,aAAa,CAAC,YAAA,CAAcngb,OACnC,CACA,IAAIqgb,gBAAiB,CACnB,OAAO,IAAI,CAACtF,OAAO,CAACrua,CAAC,CAACqya,UAAU,CAElC,IAAIuB,iBAAkBtgb,CAAAA,KAAK,CAAE,CAC3B,IAAI,CAACmgb,aAAa,CAAC,WAAA,CAAangb,KAClC,EAAA,CACA,IAAIsgb,iBAAoB,EAAA,CACtB,OAAO,IAAI,CAACvF,OAAO,CAACrua,CAAC,CAAC2ya,SAAS,CAEjC,IAAIkB,kBAAmBvgb,CAAAA,KAAK,CAAE,CAC5B,IAAI,CAACmgb,aAAa,CAAC,gBAAkBngb,CAAAA,KAAAA,EACvC,CACA,IAAIugb,oBAAqB,CACvB,OAAO,IAAI,CAACxF,OAAO,CAACrua,CAAC,CAACuya,cACxB,CACA,IAAIuB,gBAAgBxgb,KAAK,CAAE,CACzB,IAAI,CAACmgb,aAAa,CAAC,aAAengb,CAAAA,KAAAA,EACpC,CACA,IAAIwgb,eAAkB,EAAA,CACpB,OAAO,IAAI,CAACzF,OAAO,CAACrua,CAAC,CAACyya,WACxB,CACA,IAAIsB,aAAczgb,CAAAA,KAAK,CAAE,CACvB,IAAI,CAAC0gb,aAAa,CAAC,OAAQ1gb,KAC7B,EAAA,CACA,IAAIygb,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC1F,OAAO,CAAC3ia,EAAE,CAAC7a,IAAI,CAE7B,IAAIojb,YAAAA,CAAa3gb,KAAK,CAAE,CACtB,IAAI,CAAC0gb,aAAa,CAAC,KAAO1gb,CAAAA,KAAAA,EAC5B,CACA,IAAI2gb,YAAAA,EAAe,CACjB,OAAO,IAAI,CAAC5F,OAAO,CAAC3ia,EAAE,CAACima,GACzB,CACA,IAAIuC,cAAAA,CAAe5gb,KAAK,CAAE,CACxB,IAAI,CAAC+6a,OAAO,CAACP,GAAG,CAAC3ma,MAAM,CAAG7T,MAC5B,CACA,IAAI4gb,cAAiB,EAAA,CACnB,OAAO,IAAI,CAAC7F,OAAO,CAACP,GAAG,CAAC3ma,MAAM,CAEhC,IAAIgta,UAAW7gb,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC8gb,UAAU,CAAG9gb,MACpB,CACA,IAAI6gb,YAAa,CACf,OAAO,IAAI,CAACC,UACd,CACAX,aAAchpb,CAAAA,IAAI,CAAE6I,KAAK,CAAE,CACzB,IAAI,CAAC+6a,OAAO,CAACrua,CAAC,CAACvV,KAAK,CAAG6I,KACvB,CAAA,IAAI,CAAC+6a,OAAO,CAAC3ma,CAAC,CAACjd,IAAAA,CAAK,CAAG6I,KACvB,CAAA,IAAI,CAAC+6a,OAAO,CAACxma,CAAC,CAACpd,IAAK,CAAA,CAAG6I,MACzB,CACA0gb,aAAcvpb,CAAAA,IAAI,CAAE6I,KAAK,CAAE,CACzB,IAAI,CAAC+6a,OAAO,CAAC3ia,EAAE,CAACjhB,IAAK,CAAA,CAAG6I,KACxB,CAAA,IAAI,CAAC+6a,OAAO,CAAC7ia,EAAE,CAAC/gB,KAAK,CAAG6I,KACxB,CAAA,IAAI,CAAC+6a,OAAO,CAAC9ia,EAAE,CAAC9gB,KAAK,CAAG6I,MAC1B,CACA+gb,mBAAsB,EAAA,CACpB,MAAMrJ,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI9ua,QAAU,KACd,CAAA,IAAI2M,IAAKrK,OACTqK,CAAAA,GAAAA,CAAMmia,SAAUnia,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,CAAA,CACnCyD,OAAU,CAAA,CAAA,CAAItT,KAAKma,GAAG,CAACwD,GAAOwqa,CAAAA,CAAAA,gBAAAA,CAC9B,GAAI,IAAI,CAAChF,OAAO,CAACrua,CAAC,CAACuyH,MAAM,CAAC/zH,OAAO,GAAKA,OAAS,CAAA,CAC7C,IAAI,CAAC6va,OAAO,CAACrua,CAAC,CAACuyH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CAChCtC,OAAU,CAAA,KACZ,CACA2M,GAAAA,CAAMmia,UAAUnia,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,CAAA,CAChC1R,OAAU,CAAA,CAAA,CAAItT,IAAKma,CAAAA,GAAG,CAACwD,GAAOwqa,CAAAA,CAAAA,gBAAAA,CAC9B,GAAI,IAAI,CAAChF,OAAO,CAAC3ma,CAAC,CAAC6qH,MAAM,CAAC/zH,OAAO,GAAKA,QAAS,CAC7C,IAAI,CAAC6va,OAAO,CAAC3ma,CAAC,CAAC6qH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CAChCtC,QAAU,KACZ,CACA2M,GAAMmia,CAAAA,SAAAA,CAAUnia,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,CACrC5yI,CAAAA,OAAAA,CAAU,EAAItT,IAAKma,CAAAA,GAAG,CAACwD,GAAOwqa,CAAAA,CAAAA,gBAAAA,CAC9B,GAAI,IAAI,CAAChF,OAAO,CAACxma,CAAC,CAAC0qH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC7C,IAAI,CAAC6va,OAAO,CAACxma,CAAC,CAAC0qH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CAChCtC,QAAU,KACZ,CACA,IAAI21a,OACJmB,CAAAA,IAAAA,CAAK/qa,KAAK,CAAC+ia,SAAW,CAAA,IAAI,CAAC/jS,IAAI,CAAClsI,KAAK,CACrCyD,CAAAA,OAAAA,CAAU,EAAIw0a,IAAKpnb,CAAAA,MAAM,EAAKynb,CAAAA,gBAAAA,CAC9B,GAAI,IAAI,CAAChF,OAAO,CAAC3ia,EAAE,CAAC6mH,MAAM,CAAC/zH,OAAO,GAAKA,OAAS,CAAA,CAC9C,IAAI,CAAC6va,OAAO,CAAC3ia,EAAE,CAAC6mH,MAAM,CAAC/zH,OAAO,CAAGA,OACjCtC,CAAAA,OAAAA,CAAU,KACZ,CACA21a,OAAU,CAAA,IAAI,CAACuC,UAAU,CAAGnB,KAAK/+a,GAAG,CAAC,EAAG,EAAE8+a,IAAKnqa,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,CAAI,CAAA,CAAA,EAAI,EAAE4hS,IAAKnqa,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,CAAI,CAAA,CAAA,GAAMtI,IAAK8B,CAAAA,IAAI,CACtH,GAAI,CAAC,IAAI,CAAC2ka,OAAO,CAAC3ia,EAAE,CAACmma,OAAO,CAACzwa,MAAM,CAACywa,OAAAA,CAAAA,CAAU,CAC5C,IAAI,CAACxD,OAAO,CAAC3ia,EAAE,CAACmma,OAAO,CAAGA,OAAAA,CAC1B31a,QAAU,KACZ,CACA82a,IAAK/qa,CAAAA,KAAK,CAAC+ia,SAAAA,CAAW,IAAI,CAAC/jS,IAAI,CAACmK,OAAO,CAAA,CACvC5yI,QAAU,CAAIw0a,CAAAA,IAAAA,CAAKpnb,MAAM,EAAA,CAAKynb,gBAC9B,CAAA,GAAI,IAAI,CAAChF,OAAO,CAAC9ia,EAAE,CAACgnH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC9C,IAAI,CAAC6va,OAAO,CAAC9ia,EAAE,CAACgnH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CACjCtC,OAAU,CAAA,KACZ,CACA21a,OAAAA,CAAU,IAAI,CAACuC,UAAU,CAAGnB,IAAK/+a,CAAAA,GAAG,CAAC,EAAE8+a,IAAKnqa,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,CAAA,CAAI,CAAA,CAAA,CAAI,EAAE8ia,IAAAA,CAAKnqa,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,EAAI,CAAA,CAAA,CAAI,GAAK6M,IAAK8B,CAAAA,IAAI,CACpH,GAAI,CAAC,IAAI,CAAC2ka,OAAO,CAAC9ia,EAAE,CAACsma,OAAO,CAACzwa,MAAM,CAACywa,OAAAA,CAAAA,CAAU,CAC5C,IAAI,CAACxD,OAAO,CAAC9ia,EAAE,CAACsma,OAAO,CAAGA,OAAAA,CAC1B31a,QAAU,KACZ,CACA82a,IAAK/qa,CAAAA,KAAK,CAAC+ia,SAAAA,CAAW,IAAI,CAAC/jS,IAAI,CAAC/2H,EAAE,CAAA,CAClC1R,QAAU,CAAIw0a,CAAAA,IAAAA,CAAKpnb,MAAM,EAAA,CAAKynb,gBAC9B,CAAA,GAAI,IAAI,CAAChF,OAAO,CAAC7ia,EAAE,CAAC+mH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC9C,IAAI,CAAC6va,OAAO,CAAC7ia,EAAE,CAAC+mH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CACjCtC,OAAU,CAAA,KACZ,CACA21a,OAAAA,CAAU,IAAI,CAACuC,UAAU,CAAGnB,IAAK/+a,CAAAA,GAAG,CAAC,EAAE8+a,IAAKnqa,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,CAAI,CAAA,CAAA,EAAI,CAAG,CAAA,EAAE4hS,IAAAA,CAAKnqa,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,CAAA,CAAI,CAAA,CAAM6M,CAAAA,CAAAA,IAAAA,CAAK8B,IAAI,CACzH,GAAI,CAAC,IAAI,CAAC2ka,OAAO,CAAC7ia,EAAE,CAACqma,OAAO,CAACzwa,MAAM,CAACywa,OAAU,CAAA,CAAA,CAC5C,IAAI,CAACxD,OAAO,CAAC7ia,EAAE,CAACqma,OAAO,CAAGA,QAC1B31a,OAAU,CAAA,KACZ,CACA,GAAIA,OAAS,CAAA,CACX,IAAI,CAACwua,aAAa,CAAG,KACvB,CACF,CACA4J,KAAMzqW,CAAAA,KAAK,CAAE,CACX,IAAI,MAAM74D,QAAQ,IAAI,CAACq9Z,OAAO,CAAC,CAC7B,MAAMx0R,KAAQ,CAAA,IAAI,CAACw0R,OAAO,CAACr9Z,IAAAA,CAAK,CAChC,OAAO,IAAI,CAACk/Z,QAAQ,EAClB,IAAK,OACH,CACE,QACF,CACF,IAAK,MACH,CAAA,CACEr2R,MAAMhb,OAAO,CAAG,CAACh1D,KACjB,CAAA,QACF,CACF,IAAK,UAAA,CACH,CACE,GAAI,IAAI,CAACokW,aAAa,GAAK,KAAA,CAAO,CAChCp0R,KAAAA,CAAMhb,OAAO,CAAGh1D,MAAQ74D,IAAKplB,CAAAA,MAAM,GAAK,CAAA,CAAI,IAC5C,CAAA,QACF,CACA,GAAI,IAAI,CAACmkb,gBAAgB,CAAE,CACzBl2R,KAAMhb,CAAAA,OAAO,CAAGh1D,KAAAA,CAAQ74D,IAAKplB,CAAAA,MAAM,GAAK,CAAK,EAAA,CAAColB,IAAKzhB,CAAAA,QAAQ,CAAC,IAAI,CAAC0+a,aAAa,CAAA,CAAI,IAClF,CAAA,QACF,CACAp0R,KAAAA,CAAMhb,OAAO,CAAGh1D,KAAAA,CAAQ74D,OAAS,IAAI,CAACi9Z,aAAa,CAAG,KACxD,CACJ,CACF,CACA,IAAI,CAACvD,aAAa,CAAG,KACvB,CACA6J,mBAAAA,EAAsB,CACpB,IAAI,IAAI5ob,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMowI,IAAAA,CAAO,IAAI,CAAClI,KAAK,CAACloI,EAAE,CAC1B,IAAI,CAAC6ob,mBAAmB,CAACtgb,GAAG,CAAC6nI,IAAMA,CAAAA,IAAAA,CAAKwX,gBAAgB,EAAA,CAAGtyI,KAAK,EAAA,CAAA,CAChE,IAAI,CAACwza,cAAc,CAACvgb,GAAG,CAAC6nI,KAAMA,IAAK9lB,CAAAA,WAAW,EAAGh1G,CAAAA,KAAK,EACxD,EAAA,CACF,CACAyza,iBAAkBC,CAAAA,cAAc,CAAE,CAChC,IAAI,IAAIhpb,CAAI,CAAA,CAAA,CAAGA,CAAI,CAAA,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,IAAI,CACxC,MAAMowI,KAAO,IAAI,CAAClI,KAAK,CAACloI,CAAE,CAAA,CAC1B,GAAI,IAAI,CAACi/a,WAAW,GAAK,OAAS,CAAA,CAChC,MAAM5wR,GAAM,CAAA,IAAI,CAACw6R,mBAAmB,CAAC9mb,GAAG,CAACquI,IACzC,CAAA,CAAA,GAAI,CAACie,GAAK,CAAA,CACR,QACF,CACAg5R,IAAAA,CAAKtob,IAAI,CAACiqb,cACV54S,CAAAA,CAAAA,KAAKn/H,MAAM,EAAE02H,oBAAoB3gH,QAASsga,CAAAA,IAAAA,CAC1CA,CAAAA,IAAKjza,CAAAA,CAAC,CAAG,CAAA,CAAIiza,IAAKjza,CAAAA,CAAC,CACnBiza,IAAAA,CAAKvra,CAAC,CAAG,CAAA,CAAIura,KAAKvra,CAClBura,CAAAA,IAAAA,CAAKpra,CAAC,CAAG,EAAIora,IAAKpra,CAAAA,CAAC,CACnBura,GAAAA,CAAI1ob,IAAI,CAACqxI,KAAKyX,gBAAgB,EAAA,CAAA,CAAIpmI,eAAe,CAAC4la,IAAMA,CAAAA,IAAAA,CAAAA,CACxDA,KAAK/pa,GAAG,CAACgqa,MACTl3S,IAAKuY,CAAAA,gBAAgB,CAAC0+R,IAAK/2a,CAAAA,GAAG,CAAC+9I,GAAAA,CAAAA,EACjC,CAAO,KAAA,CACL,MAAMA,GAAM,CAAA,IAAI,CAACy6R,cAAc,CAAC/mb,GAAG,CAACquI,IACpC,CAAA,CAAA,GAAI,CAACie,GAAAA,CAAK,CACR,QACF,CACAje,IAAK7lB,CAAAA,WAAW,CAAC88T,IAAKtob,CAAAA,IAAI,CAACiqb,cAAgB14a,CAAAA,CAAAA,GAAG,CAAC+9I,GAAAA,CAAAA,EACjD,CACF,CACA,IAAI,CAACqxR,eAAe,GACtB,CACA6D,cAAelva,CAAAA,CAAC,CAAE0H,CAAC,CAAE,CACnB,MAAM+ma,SAAY,CAAA,IAAI,CAACl7F,OAAO,CAACxkM,aAAa,CAAC/uI,CAAAA,CAAG0H,EAAG,CACnD,CAAA,CAAA,MAAMsJ,IAAO,CAAA,IAAI,CAACi9Z,aAAa,CAC/B,MAAM2G,OAAAA,CAAU,IAAI,CAAC7E,gBAAgB,CACrC,MAAM52Z,GAAAA,CAAM,IAAI,CAACq1Z,UAAU,CAACC,WAC5B,MAAMzyC,KAAAA,CAAQ,IAAI,CAAC2yC,YAAY,CAAC39Z,IAAMA,CAAAA,IAAAA,GAAS,KAAO,CAAA,CAAC4ja,OACvD,CAAA,CAAA,GAAI,CAAC54C,KAAM7hX,CAAAA,aAAa,CAAChB,GAAAA,CAAK+5Z,OAAU,CAAA,CAAA,CACtC,OAAOA,OACT,CACAE,GAAI1ob,CAAAA,IAAI,CAAC,IAAI,CAACokb,aAAa,CAAA,CAAEp9Z,MAAM,EAAGtE,CAAAA,eAAe,CAAC8la,OAASA,CAAAA,OAAAA,CAAAA,CAC/D,GAAI,CAAC0B,OAAW5ja,EAAAA,IAAAA,GAAS,MAAO,CAC9B,IAAI,CAACi+Z,cAAc,CAACiE,QAASlia,IAC/B,EAAA,CACA,OAAOkia,OACT,CACA/D,eAAAA,CAAgBn1R,GAAG,CAAE7D,GAAG,CAAEi5R,UAAU,CAAEC,aAAa,CAAE,CACnD,IAAK,MAAMr+Z,IAAQsia,IAAAA,MAAAA,CAAO,CACxB,GAAI,IAAI,CAACvF,SAAS,EAAIqB,UAAAA,GAAe,MAAO,CAC1C,IAAI,CAACE,aAAa,CAACt1R,GAAAA,CAAK7D,IAAKnlI,IAC7B,CAAA,CAAA,QACF,CACA,GAAIq+Z,aAAAA,CAAe,CACjB,GAAIr+Z,IAAAA,GAASo+Z,UAAY,CAAA,CACvB,IAAI,CAACE,aAAa,CAACt1R,GAAAA,CAAK7D,IAAKnlI,IAC/B,EAAA,CACF,MAAO,CACL,GAAIA,IAASo+Z,GAAAA,UAAAA,CAAY,CACvB,IAAI,CAACE,aAAa,CAACt1R,IAAK7D,GAAKnlI,CAAAA,IAAAA,EAC/B,CACF,CACF,CACF,CACAm7Z,SAAAA,EAAY,CACV,KAAK,CAACA,SACN,EAAA,CAAA,GAAI,CAAC,IAAI,CAAC3ta,OAAO,CAAE,CACjB,MACF,CACA,IAAI,CAAC61a,mBAAmB,GAC1B,CAvUA3gb,WAAAA,CAAYkrI,MAAM,CAAElO,KAAK,CAAC,CACxB,KAAK,CAACkO,MAAAA,CAAQlO,KAAO,CAAA,iBAAA,CAAA,CAAoB,IAAI,CAAC29S,OAAO,CAAG,CACtDP,GAAK,CAAA,IAAIiF,YAAY,IAAI,CAAC5hY,OAAO,CAAE,CACjCngC,IAAAA,CAAM,MACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD27Y,YAAAA,CAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACO,GAAG,CACvCyD,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACM,GAAG,CACtC0D,aAAe,CAAA,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACrC,CAAA,CACAhga,EAAI,CAAA,IAAIgma,UAAW,CAAA,IAAI,CAACvgY,OAAO,CAAE,CAC/BngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAAA,CAAU,IAAI1qI,IAAK,CAAA,CAAA,CAAG,EAAG,CAAC,EAAA,CAAA,CAC1B0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACvta,CAAC,CACrCuxa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACxta,CAAC,CACpCwxa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC/0Y,KAAO,CAAA,CACT,CACAnrB,CAAAA,CAAAA,EAAAA,CAAI,IAAIkma,UAAAA,CAAW,IAAI,CAACvgY,OAAO,CAAE,CAC/BngC,IAAAA,CAAM,IACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,SAAU,IAAI1qI,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAA,CACzB0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC7la,CAAC,CACrC6pa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC9la,CAAC,CACpC8pa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC/0Y,KAAO,CAAA,CACT,CACAprB,CAAAA,CAAAA,EAAAA,CAAI,IAAImma,UAAAA,CAAW,IAAI,CAACvgY,OAAO,CAAE,CAC/BngC,IAAAA,CAAM,IACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,SAAU,IAAI1qI,IAAAA,CAAK,GAAI,CAAG,CAAA,CAAA,CAAA,CAC1B0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC1la,CAAC,CACrC0pa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC3la,CAAC,CACpC2pa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC/0Y,KAAO,CAAA,CACT,CACA32B,CAAAA,CAAAA,CAAAA,CAAG,IAAIkya,UAAAA,CAAW,IAAI,CAAC/gY,OAAO,CAAE,CAC9BngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAAA,CAAU,IAAI1qI,IAAK,CAAA,CAAA,CAAG,EAAG,CAAC,EAAA,CAAA,CAC1B0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACvta,CAAC,CACrCuxa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACxta,CAAC,CACpCwxa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CAErChka,CAAAA,CAAAA,CAAAA,CAAG,IAAIwqa,UAAAA,CAAW,IAAI,CAAC/gY,OAAO,CAAE,CAC9BngC,KAAM,GACNs/G,CAAAA,MAAAA,CAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAU,CAAA,IAAI1qI,KAAK,CAAG,CAAA,CAAA,CAAG,GACzB0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC7la,CAAC,CACrC6pa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC9la,CAAC,CACpC8pa,aAAe,CAAA,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACrC,CAAA,CACA7ja,EAAG,IAAIqqa,UAAAA,CAAW,IAAI,CAAC/gY,OAAO,CAAE,CAC9BngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAAA,CAAU,IAAI1qI,IAAK,CAAA,EAAA,CAAI,EAAG,CAC1B0pa,CAAAA,CAAAA,YAAAA,CAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC1la,CAAC,CACrC0pa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC3la,CAAC,CACpC2pa,aAAe,CAAA,IAAI,CAACpE,MAAM,CAAC1B,QAC7B,EACF,CAAG,CAAA,IAAI,CAAC8I,mBAAmB,CAAG,IAAIzgb,GAAAA,CAAO,IAAI,CAAC0gb,cAAc,CAAG,IAAI1gb,IAAO,IAAI,CAACk8a,aAAa,CAAG,CAAA,CAAG,IAAI,CAACmE,UAAU,CAAG,KACpH,IAAI,CAAC5E,gBAAgB,EACrB,CAAA,IAAI,CAACx8a,EAAE,CAACg6a,cAAemD,CAAAA,oBAAoB,CAAE,IAAA,CAC3C,IAAI,CAACoE,mBAAmB,EACxB,CAAA,IAAI,CAACD,KAAK,CAAC,IACb,EAAA,CAAA,CAAA,CACA,IAAI,CAACthb,EAAE,CAACg6a,eAAeoD,mBAAmB,CAAE,KAC1C,EAAA,CAAA,MAAMuE,eAAiBxB,OAAQzob,CAAAA,IAAI,CAAC6c,KAAAA,CAAAA,CAAOgC,GAAG,CAAC,IAAI,CAACyma,oBAAoB,CACxE,CAAA,GAAI,IAAI,CAAC/C,IAAI,CAAE,CACb0H,cAAelza,CAAAA,SAAS,CAAC,CAAA,CAAI,IAAI,CAACwua,aAAa,EAC/C0E,cAAet0a,CAAAA,KAAK,GACpBs0a,cAAelza,CAAAA,SAAS,CAAC,IAAI,CAACwua,aAAa,EAC7C,CACA,IAAI,CAACyE,iBAAiB,CAACC,cAAAA,EACzB,GACA,IAAI,CAAC3hb,EAAE,CAACg6a,cAAeqD,CAAAA,kBAAkB,CAAE,IACzC,CAAA,IAAI,CAACiE,KAAK,CAAC,OACb,CACA,CAAA,CAAA,IAAI,CAACthb,EAAE,CAACg6a,cAAAA,CAAed,iBAAiB,CAAE,IAAA,CACxC,IAAI,CAACsI,mBAAmB,CAACjgb,KAAK,EAAA,CAC9B,IAAI,CAACkgb,cAAc,CAAClgb,KAAK,GAC3B,CAAA,EACF,CAwOF,CAEA,MAAMsgb,sBAAwB,EAC9B,CAAA,MAAMC,wBAA2B,CAAA,EACjC,CAAMC,MAAAA,QAAAA,SAAiBjE,MAoBrBkE,oBAAqB/rN,CAAAA,WAAW,CAAE,CAChC,OAAO,IAAIJ,cAAc,CACvBE,UAAAA,CAAY,IAAI,CAACksN,WAAW,CAAG,IAAI,CAACrC,UAAU,CAC9C5pN,UAAY,CAAA,IAAI,CAACksN,WAAW,CAC5BjsN,WAAaA,CAAAA,WAAAA,CACbC,QAAU4rN,CAAAA,wBACZ,EACF,CACAK,gBAAAA,CAAiBlsN,WAAW,CAAE,CAC5B,MAAM5sB,IAAO,CAAA,IAAIwsB,aAAc,CAAA,CAC7BE,UAAY,CAAA,IAAI,CAACksN,WAAW,CAC5BjsN,WAAY,IAAI,CAACksN,WAAW,CAC5BjsN,WAAAA,CAAaA,WACbC,CAAAA,QAAAA,CAAU2rN,qBACZ,CAAA,CAAA,CACA,OAAO3/S,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAEymK,IACxC,CAAA,CACA,IAAI0sB,UAAAA,CAAWz1N,KAAK,CAAE,CACpB,IAAI,CAAC2hb,WAAW,CAAG3hb,KAAAA,EAAS,IAAI,CAAC2hb,WAAW,CAC5C,IAAI,CAACz4Q,OAAO,GACd,CACA,IAAIusD,YAAa,CACf,OAAO,IAAI,CAACksN,WAAW,CAEzB,IAAIjsN,UAAAA,CAAW11N,KAAK,CAAE,CACpB,IAAI,CAAC4hb,WAAW,CAAG5hb,KAAS,EAAA,IAAI,CAAC4hb,WAAW,CAC5C,IAAI,CAAC14Q,OAAO,GACd,CACA,IAAIwsD,UAAa,EAAA,CACf,OAAO,IAAI,CAACksN,WACd,CACA,IAAIvC,UAAUr/a,KAAK,CAAE,CACnB,IAAI,CAACs/a,UAAU,CAAGt/a,KAAAA,EAAS,IAAI,CAACs/a,UAAU,CAC1C,IAAI,CAACp2Q,OAAO,GACd,CACA,IAAIm2Q,SAAAA,EAAY,CACd,OAAO,IAAI,CAACC,UAAU,CAExBp2Q,SAAU,CACR,IAAI,CAAC44Q,aAAa,CAAC,EAAE,CAACjgT,YAAY,CAAC,IAAI,CAAC6/S,oBAAoB,CAAC,IAAI,CAACK,YAAY,CAAA,CAAA,CAC9E,IAAI,CAACD,aAAa,CAAC,CAAA,CAAE,CAACjgT,YAAY,CAAC,IAAI,CAAC6/S,oBAAoB,CAAC,KAC7D,CAAA,IAAI,CAAC9jT,aAAa,CAAC,CAAE,CAAA,CAACmE,IAAI,CAAG,IAAI,CAAC8/S,gBAAgB,CAAC,IAAI,CAACE,YAAY,CACpE,CAAA,IAAI,CAACnkT,aAAa,CAAC,EAAE,CAACmE,IAAI,CAAG,IAAI,CAAC8/S,gBAAgB,CAAC,GAAA,EACrD,CACAnzH,IAAAA,CAAKn4O,KAAK,CAAE,CACV,OAAOA,KAAAA,EACL,IAAK,QAAA,CACH,CACE,IAAI,CAAC+hW,OAAO,CAAC,CAAE,CAAA,CAAG,IAAI,CAACwJ,aAAa,CAAC,CAAA,CAAE,CACvC,IAAI,CAAClkT,aAAa,CAAC,CAAE,CAAA,CAAC2N,OAAO,CAAG,IAChC,CAAA,IAAI,CAAC3N,aAAa,CAAC,EAAE,CAAC2N,OAAO,CAAG,KAAA,CAChC,KACF,CACF,IAAK,MACH,CAAA,CACE,IAAI,CAAC+sS,OAAO,CAAC,CAAE,CAAA,CAAG,IAAI,CAACwJ,aAAa,CAAC,EAAE,CACvC,IAAI,CAAClkT,aAAa,CAAC,EAAE,CAAC2N,OAAO,CAAG,KAChC,CAAA,IAAI,CAAC3N,aAAa,CAAC,EAAE,CAAC2N,OAAO,CAAG,IAChC,CAAA,KACF,CACF,IAAK,MACH,CAAA,CACE,IAAI,CAAC3N,aAAa,CAAC,CAAE,CAAA,CAAC2N,OAAO,CAAG,KAChC,CAAA,IAAI,CAAC3N,aAAa,CAAC,CAAE,CAAA,CAAC2N,OAAO,CAAG,KAAA,CAChC,KACF,CACJ,CACF,CAtFAnrI,WAAAA,CAAYkiC,MAAM,CAAEjkC,KAAO,EAAE,CAAC,CAC5B,KAAK,CAACikC,OAAQ,MAAQjkC,CAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACsjb,WAAW,CAAG,IAAM,IAAI,CAACC,WAAW,CAAG,EAAA,CAAK,IAAI,CAACG,YAAY,CAAG,GAAA,CAAK,IAAI,CAACzC,UAAU,CAAG,GACzH,CAAA,IAAI,CAACqC,WAAW,CAAGtjb,IAAKo3N,CAAAA,UAAU,EAAI,IAAI,CAACksN,WAAW,CACtD,IAAI,CAACC,WAAW,CAAGvjb,KAAKq3N,UAAU,EAAI,IAAI,CAACksN,WAC3C,CAAA,IAAI,CAACG,YAAY,CAAG1jb,IAAKs3N,CAAAA,WAAW,EAAI,IAAI,CAACosN,YAC7C,CAAA,IAAI,CAACD,aAAa,CAAG,CACnB,IAAI3E,OAAAA,CAAQ,IAAI,CAACuE,oBAAoB,CAAC,IAAI,CAACK,YAAY,GACvD,IAAI5E,OAAAA,CAAQ,IAAI,CAACuE,oBAAoB,CAAC,GACvC,CAAA,CAAA,CACD,CAAA,IAAI,CAACpJ,OAAO,CAAG,CACb,IAAI,CAACwJ,aAAa,CAAC,EAAE,CACtB,CACD,IAAI,CAACnE,sBAAsB,CAAC,IAAI,CAAC1+S,MAAM,CAAE,CACvC,IAAI,CAAC4iT,gBAAgB,CAAC,IAAI,CAACE,YAAY,CACvC,CAAA,IAAI,CAACF,gBAAgB,CAAC,KACvB,CACD,CAAA,IAAI,CAACnzH,IAAI,CAAC,QACV,CAAA,CAAA,IAAI,CAACxlJ,OAAO,GACd,CAqEF,CAEA,MAAM84Q,OAAU,CAAA,IAAI1ta,IACpB,CAAM2ta,MAAAA,QAAAA,CAqBJ,IAAI71N,SAAAA,CAAUpsN,KAAK,CAAE,CACnB,IAAI,CAACkib,UAAU,CAAGlib,KAAAA,EAAS,IAAI,CAACkib,WAAU,CAE5C,IAAI91N,SAAAA,EAAY,CACd,OAAO,IAAI,CAAC81N,UAAU,CAExBxpY,KAAK12B,IAAI,CAAEC,EAAE,CAAEtH,KAAK,CAAE2hC,KAAK,CAAE,CAC3B,IAAI,CAACgtF,SAAS,CAACvnC,YAAY,CAAC,QAAUzlD,CAAAA,KAAAA,CAAM1tC,OAAO,EAAA,CAAA,CACnD,MAAMqX,GAAM+7Z,CAAAA,OAAAA,CAAQ9ra,IAAI,CAAC+L,EAAAA,CAAID,MAAMvpB,SAAS,EAAA,CAC5C,MAAMm1a,IAAAA,CAAOh2a,IAAKyiB,CAAAA,KAAK,CAAC,CAAC4L,GAAAA,CAAI7R,CAAC,CAAExc,IAAAA,CAAKud,IAAI,CAAC8Q,GAAAA,CAAIvZ,CAAC,CAAGuZ,GAAIvZ,CAAAA,CAAC,CAAGuZ,GAAI1R,CAAAA,CAAC,CAAG0R,GAAAA,CAAI1R,CAAC,CAAA,CAAA,CAAK7I,KAAKG,UAAU,CAC3F,MAAMgia,IAAAA,CAAOj2a,IAAKyiB,CAAAA,KAAK,CAAC,CAAC4L,GAAAA,CAAIvZ,CAAC,CAAE,CAACuZ,IAAI1R,CAAC,CAAA,CAAI7I,IAAKG,CAAAA,UAAU,CACzD,IAAI,CAACozH,MAAM,CAAC6hB,mBAAmB,CAAC,CAAC8sR,IAAAA,CAAO,GAAIC,IAAM,CAAA,CAAA,CAAA,CAClD,MAAMv1a,MAAAA,CAAS0pB,IAAK9M,CAAAA,QAAQ,CAAC+M,EAAMtH,CAAAA,CAAAA,KAAAA,CACnC,IAAI,CAACskH,MAAM,CAAC+hB,gBAAgB,CAAC/6H,GAAI9X,CAAAA,SAAS,CAAC,EAAA,CAAM7V,QAAQqQ,GAAG,CAACqZ,IAC7D,CAAA,CAAA,CAAA,IAAI,CAACi9G,MAAM,CAACiiB,aAAa,CAAC,IAAI,CAACghS,UAAU,CAAGvna,MAAOriB,MAAQ,CAAA,IAAI,CAAC4pb,UAAU,CAAGvna,OAC/E,CACA6mB,OAAAA,EAAU,CACR,IAAI,CAAC8nG,SAAS,CAAC9nG,OAAO,EAAA,CACtB,IAAI,CAACy9F,MAAM,CAACz9F,OAAO,GACrB,CAvCAphC,WAAAA,CAAYioO,GAAG,CAAEjrG,KAAK,CAAE/+H,IAAAA,CAAO,EAAE,CAAC,CAChC,IAAI,CAAC6jb,UAAU,CAAG,GAClB,CAAA,IAAI,CAAC54S,SAAS,CAAG,IAAI+6D,cAAei5O,CAAAA,WAAAA,CACpC,CAAA,IAAI,CAACr+S,MAAM,CAAG,IAAI27G,MAAAA,CAAO,YACzB,CAAA,IAAI,CAACsnM,UAAU,CAAG7jb,KAAK+tN,SAAS,EAAI,IAAI,CAAC81N,UACzC,CAAA,IAAI,CAAC54S,SAAS,CAACvyF,UAAU,CAAG3J,UAAWsB,CAAAA,UAAU,CACjD,IAAI,CAAC46F,SAAS,CAACwqB,SAAS,CAAC,cAAe,GACxC,CAAA,CAAA,IAAI,CAACxqB,SAAS,CAACvnC,YAAY,CAAC,QAAU,CAAA,CAAA,CAAA,CACtC,IAAI,CAACunC,SAAS,CAAC79F,MAAM,EACrB,CAAA,MAAMs2F,KAAOH,IAAKC,CAAAA,YAAY,CAACwmG,GAAAA,CAAIpmM,cAAc,CAAE,IAAIozL,gBACvD,CAAA,CAAA,MAAMp4F,aAAe,IAAI0K,YAAAA,CAAa5F,KAAM,IAAI,CAACuH,SAAS,CAAA,CAC1D,IAAI,CAACrK,MAAM,CAAC47G,YAAY,CAAC,QAAU,CAAA,CACjCj9G,cAAe,CACbX,YAAAA,CACD,CACDD,MAAAA,CAAQ,CACNI,KAAAA,CAAM/6F,EAAE,CAEZ,GACF,CAqBF,CAEA,MAAM8/Y,OAAU,CAAA,IAAI7ta,IACpB,CAAA,MAAM8ta,IAAO,CAAA,IAAI9ta,KACjB,MAAM+ta,IAAAA,CAAO,IAAI/ta,IAAAA,CACjB,MAAMgxL,EAAAA,CAAK,IAAIhxL,IACf,CAAA,MAAMk5P,EAAK,CAAA,IAAIttP,IACf,CAAA,MAAMwtP,GAAK,IAAIxtP,IAAAA,CACf,MAAMo8B,KAAQ,CAAA,IAAI5uC,MAClB,MAAM40a,mBAAAA,CAAsB,IAC5B,CAAA,MAAMC,cAAiB,CAAA,IAAA,CACvB,MAAMC,IAAO,CAAA,CACX,GACA,CAAA,GAAA,CACA,GACD,CACD,OAAMC,WAAoB/I,SAAAA,cAAAA,CAoHxB,IAAIgJ,aAAAA,CAAc1ib,KAAK,CAAE,CACvB,IAAI,CAAC2ib,YAAY,CAAC,YAAA,CAAc3ib,OAClC,CACA,IAAI0ib,aAAgB,EAAA,CAClB,OAAO,IAAI,CAAC3H,OAAO,CAACrua,CAAC,CAAC+oN,UACxB,CACA,IAAImtN,aAAAA,CAAc5ib,KAAK,CAAE,CACvB,IAAI,CAAC2ib,YAAY,CAAC,aAAc3ib,KAClC,EAAA,CACA,IAAI4ib,aAAgB,EAAA,CAClB,OAAO,IAAI,CAAC7H,OAAO,CAACrua,CAAC,CAACgpN,UAAU,CAElC,IAAImtN,cAAe7ib,CAAAA,KAAK,CAAE,CACxB,IAAI,CAAC+6a,OAAO,CAAC1uZ,CAAC,CAACopM,UAAU,CAAGz1N,MAC9B,CACA,IAAI6ib,cAAiB,EAAA,CACnB,OAAO,IAAI,CAAC9H,OAAO,CAAC1uZ,CAAC,CAACopM,UACxB,CACA,IAAIqtN,cAAAA,CAAe9ib,KAAK,CAAE,CACxB,IAAI,CAAC+6a,OAAO,CAAC1uZ,CAAC,CAACqpM,UAAU,CAAG11N,MAC9B,CACA,IAAI8ib,cAAAA,EAAiB,CACnB,OAAO,IAAI,CAAC/H,OAAO,CAAC1uZ,CAAC,CAACqpM,UAAU,CAElC,IAAIqtN,YAAAA,CAAa/ib,KAAK,CAAE,CACtB,IAAI,CAAC+6a,OAAO,CAACP,GAAG,CAAC3ma,MAAM,CAAG7T,MAC5B,CACA,IAAI+ib,YAAAA,EAAe,CACjB,OAAO,IAAI,CAAChI,OAAO,CAACP,GAAG,CAAC3ma,MAC1B,CACA,IAAImva,aAAchjb,CAAAA,KAAK,CAAE,CACvB,IAAI,CAAC2ib,YAAY,CAAC,YAAa3ib,KAC/B,CAAA,CAAA,IAAI,CAAC+6a,OAAO,CAAC1uZ,CAAC,CAACgzZ,SAAS,CAAGr/a,MAC7B,CACA,IAAIgjb,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACjI,OAAO,CAACrua,CAAC,CAAC2ya,SAAS,CAEjC,IAAI4D,mBAAoBjjb,CAAAA,KAAK,CAAE,CAC7B,IAAI,CAACkjb,gBAAgB,CAAC,CAAA,CAAE,CAAC92N,SAAS,CAAGpsN,KACrC,CAAA,IAAI,CAACkjb,gBAAgB,CAAC,CAAE,CAAA,CAAC92N,SAAS,CAAGpsN,MACvC,CACA,IAAIijb,mBAAAA,EAAsB,CACxB,OAAO,IAAI,CAACC,gBAAgB,CAAC,CAAA,CAAE,CAAC92N,SAClC,CACA,IAAI+2N,aAAcnjb,CAAAA,KAAK,CAAE,CACvB,IAAI,CAACojb,YAAY,CAAGpjb,KAAAA,CAAQ,QAAU,WACxC,CACA,IAAImjb,aAAgB,EAAA,CAClB,OAAO,IAAI,CAACC,YAAY,GAAK,OAC/B,CACAT,aAAaxrb,IAAI,CAAE6I,KAAK,CAAE,CACxB,IAAI,CAAC+6a,OAAO,CAACrua,CAAC,CAACvV,IAAK,CAAA,CAAG6I,KACvB,CAAA,IAAI,CAAC+6a,OAAO,CAAC3ma,CAAC,CAACjd,IAAAA,CAAK,CAAG6I,KACvB,CAAA,IAAI,CAAC+6a,OAAO,CAACxma,CAAC,CAACpd,IAAAA,CAAK,CAAG6I,MACzB,CACAqjb,iBAAoB,EAAA,CAClB,MAAM5L,QAAAA,CAAW,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAAA,CAC3C,MAAMviI,IAAO,CAAA,IAAI,CAACi9Z,aAAa,CAC/B,MAAMW,SAAW59Z,IAAS,GAAA,GAAA,CAC1B,MAAM/C,KAAAA,CAAQ2ga,QAAW,CAAA,IAAI,CAACwH,cAAc,CAAG,IAAI,CAACF,aAAa,CACjE,IAAI,CAACU,gBAAgB,CAAClsb,IAAI,CAAC,IAAI,CAACslb,oBAAoB,CAAEzma,CAAAA,GAAG,CAACwha,QAAAA,CAAAA,CAAUh/a,SAAS,EAC7E,CAAA,IAAI,CAAC6qb,gBAAgB,CAACn1a,SAAS,CAACwM,KAAAA,CAAAA,CAChC,IAAI,CAAC4oa,cAAc,CAACnsb,IAAI,CAAC,IAAI,CAACksb,gBAAgB,EAChD,CACAE,kBAAmBC,CAAAA,UAAU,CAAE,CAC7B,MAAM/la,IAAAA,CAAO,IAAI,CAACi9Z,aAAa,CAC/B,MAAMW,QAAW59Z,CAAAA,IAAAA,GAAS,IAC1B,GAAI49Z,QAAAA,CAAU,CACZ8G,IAAAA,CAAKhrb,IAAI,CAAC,IAAI,CAACogb,SAAS,EAC1B,CAAO,KAAA,CACL4K,KAAKxhb,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,CACfwhb,CAAAA,CAAAA,IAAI,CAAC1ka,IAAAA,CAAK,CAAG,CACb,CAAA,IAAI,CAAC89Z,aAAa,CAAC1ha,eAAe,CAACsoa,IAAMA,CAAAA,IAAAA,EAC3C,CACA50K,EAAG/vP,CAAAA,gBAAgB,CAAC2ka,IAAMqB,CAAAA,UAAAA,CAAAA,CAC1Bj2K,GAAG1zP,eAAe,CAAC,IAAI,CAACwpa,gBAAgB,CAAE,IAAI,CAACC,cAAc,CAC7D,CAAA,IAAI,CAACnM,aAAa,CAAG,KACvB,CACAsM,WAAAA,CAAYntW,KAAK,CAAE,CACjB,MAAM74D,IAAAA,CAAO,IAAI,CAACi9Z,aAAa,CAC/B,GAAIpkW,KAAAA,EAAS,IAAI,CAACqmW,QAAQ,GAAK,QAAUl/Z,IAAS,GAAA,KAAA,CAAO,CACvD,MAAM+5Z,QAAW,CAAA,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAAA,CAC3C,MAAM0jS,SAAAA,CAAY,IAAI,CAAC7J,MAAM,CAACI,UAAU,CAACx8Z,KAAK,CAC9C,MAAMkma,UAAatnY,CAAAA,KAAAA,CAAMllD,IAAI,CAACusb,UAC9BC,CAAAA,UAAAA,CAAW37a,CAAC,EAAI,EAChB,CAAA,IAAI,CAACi7a,gBAAgB,CAAC,CAAE,CAAA,CAACxqY,IAAI,CAAC++X,SAAU2K,IAAKhrb,CAAAA,IAAI,CAAC,IAAI,CAACksb,gBAAgB,CAAE36a,CAAAA,GAAG,CAAC8ua,QAAAA,CAAAA,CAAW,IAAI,CAACn3R,MAAM,CAAEsjS,UAAAA,CAAAA,CACrG,IAAI,CAACV,gBAAgB,CAAC,CAAE,CAAA,CAACxqY,IAAI,CAAC++X,QAAU2K,CAAAA,IAAAA,CAAKhrb,IAAI,CAAC,IAAI,CAACmsb,cAAc,CAAA,CAAE56a,GAAG,CAAC8ua,QAAAA,CAAAA,CAAW,IAAI,CAACn3R,MAAM,CAAEqjS,UACnG,CAAA,IAAI,CAACT,gBAAgB,CAAC,CAAA,CAAE,CAACjkT,MAAM,CAAC/zH,OAAO,CAAG,IAC1C,CAAA,IAAI,CAACg4a,gBAAgB,CAAC,CAAE,CAAA,CAACjkT,MAAM,CAAC/zH,OAAO,CAAG,KAC5C,CAAO,KAAA,CACL,IAAI,CAACg4a,gBAAgB,CAAC,CAAE,CAAA,CAACjkT,MAAM,CAAC/zH,OAAO,CAAG,KAC1C,CAAA,IAAI,CAACg4a,gBAAgB,CAAC,EAAE,CAACjkT,MAAM,CAAC/zH,OAAO,CAAG,MAC5C,CACF,CACA61a,mBAAAA,EAAsB,CACpB,GAAI,IAAI,CAAC9gG,OAAO,CAACr2S,UAAU,GAAKqnF,sBAAwB,CAAA,CACtD,MAAMhrG,GAAAA,CAAM,IAAI,CAACg6T,OAAO,CAAChhN,MAAM,CAACtc,WAAW,EAAA,CAAG1sG,GAAG,CAAC,IAAI,CAAC09H,IAAI,CAAChxB,WAAW,IAAIlqH,SAAS,EAAA,CACpF,MAAMm1a,IAAOh2a,CAAAA,IAAAA,CAAKyiB,KAAK,CAAC,CAAC4L,GAAI7R,CAAAA,CAAC,CAAExc,IAAAA,CAAKud,IAAI,CAAC8Q,GAAAA,CAAIvZ,CAAC,CAAGuZ,GAAAA,CAAIvZ,CAAC,CAAGuZ,GAAAA,CAAI1R,CAAC,CAAG0R,GAAI1R,CAAAA,CAAC,GAAK7I,IAAKG,CAAAA,UAAU,CAC3F,MAAMgia,IAAOj2a,CAAAA,IAAAA,CAAKyiB,KAAK,CAAC,CAAC4L,GAAIvZ,CAAAA,CAAC,CAAE,CAACuZ,IAAI1R,CAAC,CAAA,CAAI7I,KAAKG,UAAU,CACzD,IAAI,CAACkva,OAAO,CAAC1uZ,CAAC,CAAC4yG,MAAM,CAACwiB,cAAc,CAAC,CAACmsR,IAAAA,CAAO,EAAIC,CAAAA,IAAAA,CAAM,GACzD,CAAO,KAAA,CACLrgK,EAAGp2Q,CAAAA,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAACohB,WAAW,IAAIvgI,cAAc,CAACsia,IAC1D,CAAA,CAAA,IAAI,CAACrH,OAAO,CAAC1uZ,CAAC,CAAC4yG,MAAM,CAACwiB,cAAc,CAAC2gS,MACrC,IAAI,CAACrH,OAAO,CAAC1uZ,CAAC,CAAC4yG,MAAM,CAAC6jB,WAAW,CAAC,CAAC,EAAA,CAAI,EAAG,CAC5C,EAAA,CACA,IAAI5uI,KAAAA,CAAOqB,GAAKsua,CAAAA,MAAAA,CAChB,MAAMrM,SAAY4K,CAAAA,IAAAA,CAAKhrb,IAAI,CAAC,IAAI,CAACogb,SAAS,CAAA,CAC1ChqK,EAAGp2Q,CAAAA,IAAI,CAAC,IAAI,CAACu8I,IAAI,CAAC0M,WAAW,EAAIjiI,CAAAA,CAAAA,MAAM,GAAGtE,eAAe,CAAC09Z,SAAWA,CAAAA,SAAAA,CAAAA,CACrEtja,KAAQtc,CAAAA,IAAAA,CAAKyiB,KAAK,CAACm9Z,SAAAA,CAAUjja,CAAC,CAAEija,SAAUpja,CAAAA,CAAC,EAAI1I,IAAKG,CAAAA,UAAU,CAC9D,IAAI,CAACkva,OAAO,CAACrua,CAAC,CAACuyH,MAAM,CAAC6hB,mBAAmB,CAAC,CAAG5sI,CAAAA,KAAAA,CAAQ,EAAI,CAAA,CAAC,EAC1DA,CAAAA,CAAAA,KAAAA,CAAQtc,KAAKyiB,KAAK,CAACm9Z,UAAU9qa,CAAC,CAAE8qa,UAAUjja,CAAC,CAAA,CAAI7I,IAAKG,CAAAA,UAAU,CAC9D,IAAI,CAACkva,OAAO,CAAC3ma,CAAC,CAAC6qH,MAAM,CAAC6hB,mBAAmB,CAAC,CAAG5sI,CAAAA,KAAAA,CAAO,CACpDA,CAAAA,CAAAA,KAAAA,CAAQtc,KAAKyiB,KAAK,CAACm9Z,SAAUpja,CAAAA,CAAC,CAAEoja,SAAAA,CAAU9qa,CAAC,CAAIhB,CAAAA,IAAAA,CAAKG,UAAU,CAC9D,IAAI,CAACkva,OAAO,CAACxma,CAAC,CAAC0qH,MAAM,CAAC6hB,mBAAmB,CAAC,EAAA,CAAI,CAAG5sI,CAAAA,KAAAA,CAAQ,EACzD,CAAA,CAAA,GAAI,CAAC,IAAI,CAACuma,SAAS,CAAE,CACnBlla,IAAMiia,SAAUjia,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,CAAA,CACnCo8a,OAAS,CAAIjsb,CAAAA,IAAAA,CAAKma,GAAG,CAACwD,GAAAA,CAAAA,CAAO+sa,mBAC7B,CAAA,IAAI,CAACvH,OAAO,CAACrua,CAAC,CAACgiT,IAAI,CAACm1H,MAAS,CAAA,QAAA,CAAW,QACxCtua,GAAMiia,CAAAA,SAAAA,CAAUjia,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,EAChCina,MAAS,CAAA,CAAA,CAAIjsb,KAAKma,GAAG,CAACwD,GAAO+sa,CAAAA,CAAAA,mBAAAA,CAC7B,IAAI,CAACvH,OAAO,CAAC3ma,CAAC,CAACs6S,IAAI,CAACm1H,MAAAA,CAAS,SAAW,MACxCtua,CAAAA,CAAAA,GAAAA,CAAMiia,SAAUjia,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,CACrC+lS,CAAAA,MAAAA,CAAS,EAAIjsb,IAAKma,CAAAA,GAAG,CAACwD,GAAAA,CAAAA,CAAO+sa,mBAC7B,CAAA,IAAI,CAACvH,OAAO,CAACxma,CAAC,CAACm6S,IAAI,CAACm1H,OAAS,QAAW,CAAA,MAAA,EAC1C,CACA,GAAI,CAACrM,SAAAA,CAAUhia,YAAY,CAAC,IAAI,CAACsua,UAAU,CAAEvB,gBAAiB,CAC5D,IAAI,CAACuB,UAAU,CAAC1sb,IAAI,CAACogb,SACrB,CAAA,CAAA,IAAI,CAACJ,aAAa,CAAG,KACvB,CACF,CACA4J,KAAAA,CAAMzqW,KAAK,CAAE,CACX,IAAI,MAAM74D,QAAQ,IAAI,CAACq9Z,OAAO,CAAC,CAC7B,MAAMx0R,KAAAA,CAAQ,IAAI,CAACw0R,OAAO,CAACr9Z,IAAAA,CAAK,CAChC,GAAI,EAAE6oI,iBAAiBk7R,QAAO,CAAA,CAAI,CAChC,QACF,CACA,OAAO,IAAI,CAAC7E,QAAQ,EAClB,IAAK,MAAA,CACH,CACE,KACF,CACF,IAAK,MAAA,CACH,CACEr2R,KAAAA,CAAMmoK,IAAI,CAACn4O,KAAAA,CAAQ74D,OAAS,IAAI,CAACi9Z,aAAa,CAAG,MAAA,CAAS,MAAS,CAAA,QAAA,CAAA,CACnE,QACF,CACF,IAAK,UACH,CAAA,CACEp0R,MAAMmoK,IAAI,CAACn4O,MAAQ74D,IAAS,GAAA,IAAI,CAACi9Z,aAAa,CAAG,MAAA,CAAS,SAAW,QACrE,CAAA,CAAA,KACF,CACJ,CACF,CACA,IAAI,CAACvD,aAAa,CAAG,KACvB,CACA2M,mBAAsB,EAAA,CACpB,MAAMtM,QAAW,CAAA,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAC3C,CAAA,IAAI,IAAI5nJ,CAAAA,CAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,IAAI,CACxC,MAAMowI,IAAO,CAAA,IAAI,CAAClI,KAAK,CAACloI,CAAE,CAAA,CAC1B,IAAI,CAAC2rb,mBAAmB,CAACpjb,GAAG,CAAC6nI,IAAMA,CAAAA,IAAAA,CAAKyX,gBAAgB,EAAA,CAAGvyI,KAAK,EAChE,CAAA,CAAA,IAAI,CAACs2a,cAAc,CAACrjb,GAAG,CAAC6nI,IAAMA,CAAAA,IAAAA,CAAK4X,WAAW,EAAA,CAAG1yI,KAAK,EAAA,CAAA,CACtD,IAAI,CAACu2a,YAAY,CAACtjb,GAAG,CAAC6nI,KAAMA,IAAK9lB,CAAAA,WAAW,EAAGh1G,CAAAA,KAAK,EAAGsI,CAAAA,GAAG,CAACwha,QAC7D,CAAA,EAAA,CACF,CACA0M,iBAAAA,CAAkBzma,IAAI,CAAE0ma,SAAS,CAAEX,UAAU,CAAE,CAC7C,MAAMhM,QAAAA,CAAW,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAAA,CAC3CutH,GAAG/vP,gBAAgB,CAAC2ma,SAAWX,CAAAA,UAAAA,CAAAA,CAC/B,IAAI,IAAIprb,EAAI,CAAGA,CAAAA,CAAAA,CAAI,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMowI,IAAO,CAAA,IAAI,CAAClI,KAAK,CAACloI,EAAE,CAC1B,GAAI,CAACqlB,IAAAA,GAAS,GAAOA,EAAAA,IAAAA,GAAS,GAAOA,EAAAA,IAAAA,GAAS,GAAE,GAAM,IAAI,CAAC45Z,WAAW,GAAK,QAAS,CAClF,MAAMz0R,GAAM,CAAA,IAAI,CAACmhS,mBAAmB,CAAC5pb,GAAG,CAACquI,MACzC,GAAI,CAACoa,IAAK,CACR,QACF,CACA6qH,EAAAA,CAAGt2Q,IAAI,CAACyrJ,KAAKltI,GAAG,CAAC63P,EACjB/kI,CAAAA,CAAAA,IAAAA,CAAKwY,gBAAgB,CAACysH,IACxB,CAAO,KAAA,CACL,MAAM7qH,GAAAA,CAAM,IAAI,CAACohS,cAAc,CAAC7pb,GAAG,CAACquI,IACpC,CAAA,CAAA,GAAI,CAACoa,GAAK,CAAA,CACR,QACF,CACA,MAAM98I,MAAAA,CAAS,IAAI,CAACm+a,YAAY,CAAC9pb,GAAG,CAACquI,MACrC,GAAI,CAAC1iI,MAAQ,CAAA,CACX,QACF,CACAq8a,KAAKhrb,IAAI,CAAC2O,QACVynQ,EAAG1zP,CAAAA,eAAe,CAACsoa,IAAMA,CAAAA,IAAAA,CAAAA,CACzB10K,EAAGt2Q,CAAAA,IAAI,CAACo2Q,EAAAA,CAAAA,CAAI73P,GAAG,CAACktI,GAAAA,CAAAA,CAChBpa,IAAK4Y,CAAAA,WAAW,CAACqsH,EAAAA,CAAAA,CACjBjlI,KAAK7lB,WAAW,CAACw/T,IAAKz5a,CAAAA,GAAG,CAAC8ua,QAAAA,CAAAA,EAC5B,CACF,CACA,GAAI,IAAI,CAACH,WAAW,GAAK,OAAS,CAAA,CAChC,IAAI,CAACC,eAAe,GACtB,CACF,CACAqE,cAAAA,CAAelva,CAAC,CAAE0H,CAAC,CAAE,CACnB,MAAM+ma,SAAY,CAAA,IAAI,CAACl7F,OAAO,CAACxkM,aAAa,CAAC/uI,EAAG0H,CAAG,CAAA,CAAA,CAAA,CACnD,MAAMsJ,IAAO,CAAA,IAAI,CAACi9Z,aAAa,CAC/B,MAAM90Z,IAAM,IAAI,CAACq1Z,UAAU,CAACC,SAC5B,CAAA,CAAA,MAAMzyC,MAAQ,IAAI,CAAC2yC,YAAY,CAAC39Z,IAAMA,CAAAA,IAAAA,GAAS,KAAOA,IAAS,GAAA,KAAA,CAAO,OACtE,GAAI,CAACgrX,MAAM7hX,aAAa,CAAChB,GAAKs8Z,CAAAA,OAAAA,CAAAA,CAAU,CACtCt8Z,GAAAA,CAAIK,SAAS,CAAC/X,SAAS,CAAC,CAAC,CACzB,CAAA,CAAA,MAAMk2a,aAAe37C,KAAM7hX,CAAAA,aAAa,CAAChB,GAAAA,CAAKs8Z,OAC9Ct8Z,CAAAA,CAAAA,GAAAA,CAAIK,SAAS,CAAC/X,SAAS,CAAC,CAAC,CAAA,CAAA,CACzB,GAAI,CAACk2a,YAAAA,CAAc,CACjB,OAAOlC,OAAQ/qb,CAAAA,IAAI,CAAC,IAAI,CAACu8I,IAAI,CAACsM,gBAAgB,EAAA,CAChD,CACF,CACA,OAAOkiS,OACT,CACAmC,kBAAmBrwa,CAAAA,KAAK,CAAEvH,CAAC,CAAE0H,CAAC,CAAE,CAC9B,MAAMqja,QAAW,CAAA,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,GAC3C,MAAMviI,IAAAA,CAAO,IAAI,CAACi9Z,aAAa,CAC/B,MAAMjyC,KAAAA,CAAQ,IAAI,CAAC2yC,YAAY,CAAC39Z,KAAMA,IAAS,GAAA,GAAA,CAAK,OACpD,IAAIxJ,KAAAA,CAAQ,EACZ,MAAMsja,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,MAAM+M,SAAY77C,CAAAA,KAAAA,CAAMvqX,MAAM,CAAC5I,GAAG,CAACiia,WACnC,OAAO,IAAI,CAAC4L,YAAY,EACtB,IAAK,WACH,CACE,IAAI,CAACnjG,OAAO,CAAC9kM,aAAa,CAACs8R,QAAAA,CAAU4K,IACrC,CAAA,CAAA,GAAI3ka,IAAS,GAAA,GAAA,EAAO6ma,UAAY,CAAIjC,CAAAA,mBAAAA,CAAqB,CACvDF,IAAKxhb,CAAAA,GAAG,CAAC,IAAI,CAAC4jb,eAAe,CAACpwa,CAAC,EAAIiua,KAAKjua,CAAC,CAAG,EAAI,CAAC,CAAA,CAAG,IAAI,CAACowa,eAAe,CAAC93a,CAAC,EAAI21a,IAAAA,CAAK31a,CAAC,CAAG,CAAC,CAAI,CAAA,CAAA,CAAG,CAAGjU,CAAAA,CAAAA,SAAS,GAC7G,CAAO,KAAA,CACL,MAAMgsb,OAAAA,CAAUrC,IAAKzta,CAAAA,KAAK,CAAC+zX,KAAMvqX,CAAAA,MAAM,CAAEq5Z,SAAW/+a,CAAAA,CAAAA,SAAS,GAC7D,IAAI,CAACwnV,OAAO,CAAC9kM,aAAa,CAACspS,QAAQ97a,GAAG,CAAC8ua,UAAWnyO,EAClD88O,CAAAA,CAAAA,IAAAA,CAAKlsa,IAAI,CAACovL,EAAAA,CAAI+8O,IAAM5pb,CAAAA,CAAAA,SAAS,GAC/B,CACA4pb,KAAKzhb,GAAG,CAAC8L,EAAG0H,CAAG,CAAA,CAAA,CAAA,CACfF,MAAQkua,IAAK7sa,CAAAA,GAAG,CAAC8sa,IAAAA,CAAAA,CACjB,KACF,CACF,IAAK,OACH,CAAA,CACED,IAAKlsa,CAAAA,IAAI,CAACjC,KAAAA,CAAOwja,UACjB,OAAO/5Z,IAAAA,EACL,IAAK,GAAA,CACH,CACE8vP,EAAAA,CAAGp2Q,IAAI,CAAC,IAAI,CAACokb,aAAa,CAAA,CAAEp9Z,MAAM,EAAGtE,CAAAA,eAAe,CAACsoa,IAAAA,CAAMA,IAC3Dlua,CAAAA,CAAAA,KAAAA,CAAQtc,KAAKyiB,KAAK,CAAC+na,IAAK7ta,CAAAA,CAAC,CAAE6ta,IAAAA,CAAKhua,CAAC,CAAI1I,CAAAA,IAAAA,CAAKG,UAAU,CACpD,KACF,CACF,IAAK,GACH,CAAA,CACE2hQ,GAAGp2Q,IAAI,CAAC,IAAI,CAACokb,aAAa,CAAEp9Z,CAAAA,MAAM,EAAGtE,CAAAA,eAAe,CAACsoa,IAAMA,CAAAA,IAAAA,CAAAA,CAC3Dlua,KAAQtc,CAAAA,IAAAA,CAAKyiB,KAAK,CAAC+na,KAAK11a,CAAC,CAAE01a,IAAK7ta,CAAAA,CAAC,CAAI7I,CAAAA,IAAAA,CAAKG,UAAU,CACpD,KACF,CACF,IAAK,GAAA,CACH,CACE2hQ,EAAGp2Q,CAAAA,IAAI,CAAC,IAAI,CAACokb,aAAa,EAAEp9Z,MAAM,EAAA,CAAGtE,eAAe,CAACsoa,IAAAA,CAAMA,MAC3Dlua,KAAQtc,CAAAA,IAAAA,CAAKyiB,KAAK,CAAC+na,IAAKhua,CAAAA,CAAC,CAAEgua,IAAK11a,CAAAA,CAAC,EAAIhB,IAAKG,CAAAA,UAAU,CACpD,KACF,CACF,IAAK,GAAA,CACH,CACE2hQ,EAAAA,CAAGp2Q,IAAI,CAAC,IAAI,CAAC6oV,OAAO,CAAChhN,MAAM,CAACohB,WAAW,EAAA,CAAA,CAAIjiI,MAAM,EAAA,CAAGtE,eAAe,CAACsoa,KAAMA,IAC1Elua,CAAAA,CAAAA,KAAAA,CAAQtc,KAAKk0L,IAAI,CAACy4P,WAAa3sb,IAAKyiB,CAAAA,KAAK,CAAC+na,IAAAA,CAAKhua,CAAC,CAAEgua,KAAK11a,CAAC,CAAA,CAAIhB,KAAKG,UAAU,CAC3E,KACF,CACJ,CACA,MAAMoa,GAAAA,CAAMm8Z,IAAKlsa,CAAAA,IAAI,CAACjC,KAAO,CAAA,IAAI,CAACgsU,OAAO,CAAChhN,MAAM,CAACtc,WAAW,EAAIlqH,CAAAA,CAAAA,SAAS,EACzE,CAAA,MAAM8c,IAAM0Q,GAAI1Q,CAAAA,GAAG,CAAC,IAAI,CAAC0qU,OAAO,CAAChhN,MAAM,CAAC6e,OAAO,CAAA,CAC/C,GAAIvoI,GAAAA,CAAM,EAAG,CACXrB,KAAAA,EAAS,IACX,CACA,KACF,CACJ,CACA,OAAOA,KACT,CACA2na,eAAgBn1R,CAAAA,GAAG,CAAE7D,GAAG,CAAEi5R,UAAU,CAAEC,aAAa,CAAE,CACnD,IAAK,MAAMr+Z,IAAAA,IAAQ8ka,IAAK,CAAA,CACtB,GAAI1G,UAAe,GAAA,KAAA,CAAO,CACxB,QACF,CACA,GAAIC,aAAe,CAAA,CACjB,GAAIr+Z,IAAAA,GAASo+Z,UAAY,CAAA,CACvB,IAAI,CAACE,aAAa,CAACt1R,GAAAA,CAAK7D,GAAKnlI,CAAAA,IAAAA,EAC/B,CACF,CAAO,KAAA,CACL,GAAIA,IAAAA,GAASo+Z,UAAY,CAAA,CACvB,IAAI,CAACE,aAAa,CAACt1R,GAAK7D,CAAAA,GAAAA,CAAKnlI,MAC/B,CACF,CACF,CACF,CACAm7Z,SAAY,EAAA,CACV,KAAK,CAACA,SAAAA,EAAAA,CACN,GAAI,CAAC,IAAI,CAAC3ta,OAAO,CAAE,CACjB,MACF,CACA,IAAI,CAAC61a,mBAAmB,GAC1B,CACAv/Y,SAAU,CACR,IAAI,CAAC0hZ,gBAAgB,CAACl+a,OAAO,CAAC,IAACgqD,EAAOA,KAAKxtB,OAAO,EAAA,CAAA,CAClD,KAAK,CAACA,OACR,GAAA,CA7ZAphC,YAAYkrI,MAAM,CAAElO,KAAK,CAAC,CACxB,KAAK,CAACkO,MAAQlO,CAAAA,KAAAA,CAAO,gBAAiB,IAAI,CAAC29S,OAAO,CAAG,CACnDxma,CAAG,CAAA,IAAIkta,QAAS,CAAA,IAAI,CAAC5jY,OAAO,CAAE,CAC5BngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAAA,CAAU,IAAI1qI,IAAK,CAAA,EAAA,CAAI,EAAG,EAC1B0pa,CAAAA,CAAAA,YAAAA,CAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC1la,CAAC,CACrC0pa,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC3la,CAAC,CACpC2pa,aAAAA,CAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnCziN,YAAa,GACf,CAAA,CAAA,CACAjpN,CAAG,CAAA,IAAI+0a,QAAS,CAAA,IAAI,CAAC5jY,OAAO,CAAE,CAC5BngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAAA,CAAU,IAAI1qI,IAAK,CAAA,CAAA,CAAG,EAAG,CAAC,EAAA,CAAA,CAC1B0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACvta,CAAC,CACrCuxa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACxta,CAAC,CACpCwxa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnCziN,WAAa,CAAA,GACf,CACAvhN,CAAAA,CAAAA,CAAAA,CAAG,IAAIqta,QAAAA,CAAS,IAAI,CAAC5jY,OAAO,CAAE,CAC5BngC,IAAAA,CAAM,IACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,SAAU,IAAI1qI,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAA,CACzB0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC7la,CAAC,CACrC6pa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC9la,CAAC,CACpC8pa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnCziN,WAAa,CAAA,GACf,CACAtpM,CAAAA,CAAAA,CAAAA,CAAG,IAAIo1Z,QAAAA,CAAS,IAAI,CAAC5jY,OAAO,CAAE,CAC5BngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD27Y,YAAAA,CAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC5tZ,CAAC,CACrC4xZ,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC7tZ,CAAC,CACpC6xZ,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC1iN,WAAY,GACd,CAAA,CAAA,CACA8kN,IAAK,IAAIiF,WAAAA,CAAY,IAAI,CAAC5hY,OAAO,CAAE,CACjCngC,IAAM,CAAA,KAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD27Y,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACO,GAAG,CACvCyD,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACM,GAAG,CACtC0D,aAAe,CAAA,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnCvka,MAAQ,CAAA,EACV,CACF,CAAA,CAAA,CAAG,IAAI,CAAC6wa,oBAAoB,CAAG,CAAA,CAAG,IAAI,CAACV,mBAAmB,CAAG,IAAIvjb,GAAAA,CAAO,IAAI,CAACwjb,cAAc,CAAG,IAAIxjb,GAAO,CAAA,IAAI,CAACyjb,YAAY,CAAG,IAAIzjb,GAAO,CAAA,IAAI,CAACkkb,UAAU,CAAG,IAAIzqa,KAAQ,IAAI,CAACsqa,eAAe,CAAG,IAAItqa,KAAQ,IAAI,CAACopa,gBAAgB,CAAG,IAAIhva,IAAAA,CAAQ,IAAI,CAACiva,cAAc,CAAG,IAAIjva,IAAQ,CAAA,IAAI,CAACwva,UAAU,CAAG,IAAIxva,IAAAA,CAAQ,IAAI,CAACqoa,aAAa,CAAG,CAAA,CAAG,IAAI,CAACyG,YAAY,CAAG,UACzV,CAAA,IAAI,CAACpJ,QAAQ,CAAC,CACZC,UAAW,CACTO,GAAAA,CAAK,IAAI9sa,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,CAAA,CAC1B,CACAwsa,CAAAA,UAAAA,CAAY,CACVM,GAAAA,CAAK,IAAI9sa,KAAM,CAAA,CAAA,CAAG,EAAG,CAAG,CAAA,EAAA,CAC1B,CACF,CACA,CAAA,CAAA,IAAI,CAACwua,gBAAgB,EACrB,CAAA,IAAI,CAACgH,gBAAgB,CAAG,CACtB,IAAIjB,QAAAA,CAAS,IAAI,CAACz0M,IAAI,CAAE,IAAI,CAAC7/F,MAAM,EACnC,IAAIs0S,QAAAA,CAAS,IAAI,CAACz0M,IAAI,CAAE,IAAI,CAAC7/F,MAAM,CAAA,CACpC,CACD,IAAI,CAACu1S,gBAAgB,CAACl+a,OAAO,CAAC,IAACgqD,EAAAA,CAC7B,IAAI,CAACw+K,IAAI,CAAC75F,IAAI,CAACkN,QAAQ,CAAC7xF,IAAKiwE,CAAAA,MAAM,CACnCjwE,CAAAA,IAAAA,CAAKiwE,MAAM,CAAC/zH,OAAO,CAAG,MACxB,CACA,CAAA,CAAA,IAAI,CAACxL,EAAE,CAACg6a,cAAemD,CAAAA,oBAAoB,CAAE,CAAC5oa,MAAOvH,CAAG0H,CAAAA,CAAAA,GAAAA,CACtD,IAAI,CAACuwa,UAAU,CAAC/jb,GAAG,CAAC8L,CAAAA,CAAG0H,GACvB,IAAI,CAACowa,eAAe,CAAC5jb,GAAG,CAAC8L,CAAAA,CAAG0H,CAC5B,CAAA,CAAA,IAAI,CAACswa,oBAAoB,CAAG,IAAI,CAACJ,kBAAkB,CAACrwa,KAAAA,CAAOvH,CAAG0H,CAAAA,CAAAA,CAAAA,CAC9D,IAAI,CAAC2va,mBAAmB,EACxB,CAAA,IAAI,CAACV,iBAAiB,EAAA,CACtB,IAAI,CAACrC,KAAK,CAAC,IAAA,CAAA,CACX,IAAI,CAAC0C,WAAW,CAAC,IAAA,EACnB,CACA,CAAA,CAAA,IAAI,CAAChkb,EAAE,CAACg6a,cAAeoD,CAAAA,mBAAmB,CAAE,CAAC7oa,KAAOvH,CAAAA,CAAAA,CAAG0H,KACrD,MAAMsJ,IAAAA,CAAO,IAAI,CAACi9Z,aAAa,CAC/B,GAAI,CAACj9Z,IAAM,CAAA,CACT,MACF,CACA,IAAI,CAACina,UAAU,CAAC/jb,GAAG,CAAC8L,EAAG0H,CACvB,CAAA,CAAA,GAAIsJ,IAAS,GAAA,KAAA,CAAO,CAClB,MAAM85Z,UAAY4K,IAAKhrb,CAAAA,IAAI,CAAC,IAAI,CAACogb,SAAS,CAC1C,CAAA,MAAMryR,KAAQk9R,CAAAA,IAAAA,CAAKjrb,IAAI,CAAC6c,OAAOgC,GAAG,CAAC,IAAI,CAACyma,oBAAoB,CAAA,CAC5D,MAAM0H,SAAYhC,CAAAA,IAAAA,CAAKzta,KAAK,CAAC6ia,SAAWryR,CAAAA,KAAAA,CAAAA,CAAO1sJ,SAAS,EACxD,CAAA,MAAMgrb,WAAa,IAAI,CAACkB,UAAU,CAACzva,QAAQ,CAAC,IAAI,CAACsva,eAAe,EAChE,IAAI,CAACL,iBAAiB,CAACzma,IAAAA,CAAM0ma,UAAWX,UAC1C,EAAA,CAAA,KAAO,CACL,IAAIA,UAAa,CAAA,IAAI,CAACa,kBAAkB,CAACrwa,MAAOvH,CAAG0H,CAAAA,CAAAA,CAAAA,CAAK,IAAI,CAACswa,oBAAoB,CACjF,GAAI,IAAI,CAAC/K,IAAI,CAAE,CACb8J,UAAa7rb,CAAAA,IAAAA,CAAKmV,KAAK,CAAC02a,WAAa,IAAI,CAAC9G,aAAa,CAAA,CAAI,IAAI,CAACA,cAAa,CAE/E,MAAMyH,SAAY,CAAA,IAAI,CAAC1I,YAAY,CAACh+Z,IAAM0ka,CAAAA,IAAAA,CAAAA,CAC1C,IAAI,CAAC+B,iBAAiB,CAACzma,IAAAA,CAAM0ma,SAAWX,CAAAA,UAAAA,CAAAA,CACxC,IAAI,CAACD,kBAAkB,CAACC,UAAAA,CAAAA,CACxB,IAAI,CAACC,WAAW,CAAC,MACnB,CACF,CAAA,CAAA,CACA,IAAI,CAAChkb,EAAE,CAACg6a,cAAeqD,CAAAA,kBAAkB,CAAE,IAAA,CACzC,IAAI,CAACiE,KAAK,CAAC,KAAA,CAAA,CACX,IAAI,CAAC0C,WAAW,CAAC,OACnB,CACA,CAAA,CAAA,IAAI,CAAChkb,EAAE,CAACg6a,cAAAA,CAAed,iBAAiB,CAAE,IAAA,CACxC,IAAI,CAACoL,mBAAmB,CAAC/ib,KAAK,EAAA,CAC9B,IAAI,CAACgjb,cAAc,CAAChjb,KAAK,EACzB,CAAA,IAAI,CAACijb,YAAY,CAACjjb,KAAK,GACzB,CAAA,EACF,CA4SF,CAEA,MAAM2jb,QAAAA,SAAiBpH,MAYrB,IAAIjgb,IAAAA,CAAKyC,KAAK,CAAE,CACd,IAAI,CAACu9U,KAAK,CAAGv9U,KAAAA,EAAS,IAAI,CAACu9U,KAAK,CAChC,IAAI,CAACr0K,OAAO,GACd,CACA,IAAI3rK,IAAO,EAAA,CACT,OAAO,IAAI,CAACggV,KAAK,CAEnBr0K,OAAAA,EAAU,CACR,IAAI,CAACjqC,MAAM,CAACiiB,aAAa,CAAC,IAAI,CAACq8L,KAAK,CAAE,IAAI,CAACA,KAAK,CAAE,IAAI,CAACA,KAAK,EAC9D,CApBAn9U,WAAAA,CAAYkiC,MAAM,CAAEjkC,KAAO,EAAE,CAAC,CAC5B,KAAK,CAACikC,MAAQ,CAAA,WAAA,CAAajkC,IAAO,CAAA,CAAA,IAAI,CAACk/U,KAAK,CAAG,GAC/C,CAAA,IAAI,CAACA,KAAK,CAAGl/U,KAAKd,IAAI,EAAI,IAAI,CAACggV,KAC/B,CAAA,IAAI,CAAC+6F,OAAO,CAAG,CACb,IAAI6E,OAAQ,CAAA,IAAI52O,WAAe,CAAA,CAAA,CAAA,CAChC,CACD,IAAI,CAACo3O,sBAAsB,CAAC,IAAI,CAAC1+S,MAAM,CAAE,CACvC2C,IAAAA,CAAKC,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAIikK,aACpC,CACD,CAAA,IAAI,CAACr9B,OAAO,GACd,CAWF,CAEA,MAAM27Q,OAAAA,CAAU,IAAIvwa,IACpB,CAAA,MAAMwwa,OAAU,CAAA,IAAIxwa,IACpB,CAAA,MAAMywa,MAAQ,IAAI7ka,IAClB,CAAM8ka,MAAAA,YAAAA,SAAqBxH,KAwBzB,CAAA,IAAIa,IAAIr+a,KAAK,CAAE,CACb,IAAI,CAACs+a,IAAI,CAAGt+a,KAAAA,EAAS,IAAI,CAACs+a,IAAI,CAC9B,IAAI,CAACp1Q,OAAO,GACd,CACA,IAAIm1Q,GAAAA,EAAM,CACR,OAAO,IAAI,CAACC,IAAI,CAElB,IAAIO,aAAc7+a,CAAAA,KAAK,CAAE,CACvB,IAAI,CAAC8+a,cAAc,CAAG9+a,KAAS,EAAA,IAAI,CAAC8+a,cAAc,CAClD,IAAI,CAAC51Q,OAAO,GACd,CACA,IAAI21Q,eAAgB,CAClB,OAAO,IAAI,CAACC,cACd,CACA,IAAIC,UAAAA,CAAW/+a,KAAK,CAAE,CACpB,IAAI,CAACg/a,WAAW,CAAGh/a,KAAAA,EAAS,IAAI,CAACg/a,WAAW,CAC5C,IAAI,CAAC91Q,OAAO,GACd,CACA,IAAI61Q,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIiG,OAAQjlb,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACklb,QAAQ,CAAGllb,KAAAA,EAAS,IAAI,CAACklb,QAAQ,CACtC,IAAI,CAACh8Q,OAAO,GACd,CACA,IAAI+7Q,OAAU,EAAA,CACZ,OAAO,IAAI,CAACC,QACd,CACA,IAAI7F,SAAAA,CAAUr/a,KAAK,CAAE,CACnB,IAAI,CAACs/a,UAAU,CAAGt/a,MAClB,IAAI,CAACkpK,OAAO,GACd,CACA,IAAIm2Q,SAAY,EAAA,CACd,OAAO,IAAI,CAACC,UAAU,CAExB,IAAIf,QAAQv+a,KAAK,CAAE,CACjB,GAAI,IAAI,CAACw+a,QAAQ,GAAKx+a,KAAAA,CAAO,CAC3B,MACF,CACA,IAAI,CAACw+a,QAAQ,CAAGx+a,MAChB,GAAI,IAAI,CAAC0/X,SAAS,CAAC5xX,MAAM,CAACwG,IAAK8B,CAAAA,IAAI,EAAG,CACpCyua,OAAAA,CAAQjkb,GAAG,CAAC,CAAA,CAAG,CAAG,CAAA,IAAI,CAAC49a,QAAQ,CAAG,GAAM,CAAA,CAAA,EAC1C,MAAO,CACLqG,OAAAA,CAAQztb,IAAI,CAAC,IAAI,CAACsoY,SAAS,CAAEvxX,CAAAA,SAAS,CAAC,IAAI,CAACqwa,QAAQ,CAAG,CAAC,EAAI,CAC9D,EAAA,CACA,IAAI,CAACgB,KAAK,CAACt0a,OAAO,CAAG,CAAC,IAAI,CAACsza,QAAQ,CACnC,IAAI,CAACv/S,MAAM,CAAC6hB,mBAAmB,CAAC+jS,OAAAA,EAClC,CACA,IAAItG,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACC,QACd,CACAt1Q,OAAAA,EAAU,CACR27Q,OAAAA,CAAQjkb,GAAG,CAAC,CAAA,CAAG,IAAI,CAAC09a,IAAI,CAAG,IAAI,CAAC4G,QAAQ,CAAG,EAAA,CAAM,IAAI,CAAClG,WAAW,CAAE,CAAA,CAAA,CACnE+F,MAAMnkb,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,CACnBkkb,CAAAA,CAAAA,OAAAA,CAAQlkb,GAAG,CAAC,IAAI,CAACskb,QAAQ,CAAE,IAAI,CAACA,QAAQ,CAAE,IAAI,CAACA,QAAQ,CAAA,CACvD,IAAI,CAAC5M,OAAO,CAAC,CAAA,CAAE,CAAC8E,YAAY,CAACyH,QAASE,KAAOD,CAAAA,OAAAA,CAAAA,CAC7CD,OAAQjkb,CAAAA,GAAG,CAAC,CAAA,CAAG,IAAI,CAAC09a,IAAI,CAAG,IAAI,CAACU,WAAW,CAAG,EAAA,CAAK,CACnD+F,CAAAA,CAAAA,KAAAA,CAAMnkb,GAAG,CAAC,EAAG,CAAG,CAAA,CAAA,CAAG,GACnBkkb,OAAQlkb,CAAAA,GAAG,CAAC,IAAI,CAACk+a,cAAc,CAAG,IAAI,CAACQ,UAAU,CAAE,IAAI,CAACN,WAAW,CAAE,IAAI,CAACF,cAAc,CAAG,IAAI,CAACQ,UAAU,CAAA,CAC1G,IAAI,CAAChH,OAAO,CAAC,CAAE,CAAA,CAAC8E,YAAY,CAACyH,OAAAA,CAASE,KAAOD,CAAAA,OAAAA,CAAAA,CAC7C,IAAI,CAACK,IAAI,CAACnkS,gBAAgB,CAAC,CAAG,CAAA,IAAI,CAACs9R,IAAI,CAAG,IAAI,CAAC4G,QAAQ,CAAG,GAAM,IAAI,CAAClG,WAAW,CAAE,CAAA,CAAA,CAClF,IAAI,CAACmG,IAAI,CAACjkS,aAAa,CAAC,IAAI,CAACgkS,QAAQ,CAAE,IAAI,CAACA,QAAQ,CAAE,IAAI,CAACA,QAAQ,CACnE,CAAA,IAAI,CAAC1F,KAAK,CAACx+R,gBAAgB,CAAC,EAAG,IAAI,CAACs9R,IAAI,CAAG,IAAI,CAACU,WAAW,CAAG,EAAA,CAAK,GACnE,IAAI,CAACQ,KAAK,CAACt+R,aAAa,CAAC,IAAI,CAAC49R,cAAc,CAAE,IAAI,CAACE,WAAW,CAAE,IAAI,CAACF,cAAc,EACrF,CAvFA1+a,WAAYkiC,CAAAA,MAAM,CAAEjkC,IAAAA,CAAO,EAAE,CAAC,CAC5B,KAAK,CAACikC,MAAAA,CAAQ,SAAWjkC,CAAAA,IAAAA,CAAAA,CAAO,IAAI,CAACigb,IAAI,CAAG,CAAA,CAAG,IAAI,CAACQ,cAAc,CAAG,GAAA,CAAM,IAAI,CAACE,WAAW,CAAG,EAAK,CAAA,IAAI,CAACkG,QAAQ,CAAG,GAAA,CAAM,IAAI,CAAC5F,UAAU,CAAG,EAAA,CAAK,IAAI,CAACd,QAAQ,CAAG,KAChK,CAAA,IAAI,CAACF,IAAI,CAAGjgb,IAAKggb,CAAAA,GAAG,EAAI,IAAI,CAACC,IAAI,CACjC,IAAI,CAACQ,cAAc,CAAGzgb,KAAKwgb,aAAa,EAAI,IAAI,CAACC,cACjD,CAAA,IAAI,CAACE,WAAW,CAAG3gb,IAAK0gb,CAAAA,UAAU,EAAI,IAAI,CAACC,WAAW,CACtD,IAAI,CAACkG,QAAQ,CAAG7mb,IAAAA,CAAK4mb,OAAO,EAAI,IAAI,CAACC,QAAQ,CAC7C,IAAI,CAAC5F,UAAU,CAAGjhb,IAAKghb,CAAAA,SAAS,EAAI,IAAI,CAACC,UACzC,CAAA,IAAI,CAAChH,OAAO,CAAG,CACb,IAAI6E,OAAAA,CAAQ,IAAI52O,WAAAA,CAAAA,CAChB,IAAI42O,OAAQ,CAAA,IAAI9nN,gBAAoB,CAAA,CAAA,CAAA,CACrC,CACD,IAAI,CAAC8vN,IAAI,CAAG,IAAIvqM,MAAO,CAAA,CAAC,IAAI,EAAE,IAAI,CAACl9N,IAAI,CAAC,CAAC,CACzC,CAAA,IAAI,CAACuhH,MAAM,CAAC4hB,QAAQ,CAAC,IAAI,CAACskS,IAAI,CAC9B,CAAA,IAAI,CAACxH,sBAAsB,CAAC,IAAI,CAACwH,IAAI,CAAE,CACrCvjT,IAAKC,CAAAA,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAIikK,WACpC,CAAA,CAAA,CACD,CAAA,IAAI,CAACi5O,KAAK,CAAG,IAAI5kM,MAAAA,CAAO,CAAC,KAAK,EAAE,IAAI,CAACl9N,IAAI,CAAC,CAAC,CAAA,CAC3C,IAAI,CAACuhH,MAAM,CAAC4hB,QAAQ,CAAC,IAAI,CAAC2+R,KAAK,CAC/B,CAAA,IAAI,CAAC7B,sBAAsB,CAAC,IAAI,CAAC6B,KAAK,CAAE,CACtC59S,KAAKC,YAAY,CAAC,IAAI,CAACv/F,MAAM,CAAE,IAAI+yL,gBACpC,CAAA,CAAA,CAAA,CACD,IAAI,CAACnsD,OAAO,GACd,CAkEF,CAEA,MAAM/8I,EAAAA,CAAK,IAAI7X,IAAAA,CACf,MAAM8X,EAAK,CAAA,IAAI9X,IACf,CAAA,MAAML,KAAQ,CAAA,IAAIK,KAClB,MAAM6wI,KAAAA,CAAQ,IAAI7wI,IAAAA,CAClB,MAAMzJ,CAAAA,CAAI,IAAIqV,IACd,CAAA,MAAMkla,eAAiB,GACvB,CAAA,MAAMC,mBAAmB3L,cAkGvB,CAAA,IAAIrC,UAAWr3a,CAAAA,KAAK,CAAE,EACtB,IAAIq3a,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,WAAW,CAEzB,IAAIhnY,OAAAA,CAAQtwC,KAAK,CAAE,CACjB,IAAI,CAACslb,QAAQ,CAAGtlb,KAAAA,EAAS,IAAI,CAACslb,SAAQ,CAExC,IAAIh1Y,OAAAA,EAAU,CACZ,OAAO,IAAI,CAACg1Y,QAAQ,CAEtB,IAAIpF,OAAQlgb,CAAAA,KAAK,CAAE,CACjB,IAAI,CAACmgb,aAAa,CAAC,KAAA,CAAOngb,OAC5B,CACA,IAAIkgb,SAAU,CACZ,OAAO,IAAI,CAACnF,OAAO,CAACrua,CAAC,CAAC2xa,GAAG,CAE3B,IAAI+B,kBAAkBpgb,KAAK,CAAE,CAC3B,IAAI,CAACmgb,aAAa,CAAC,eAAiBngb,CAAAA,KAAAA,EACtC,CACA,IAAIogb,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACrF,OAAO,CAACrua,CAAC,CAACmya,aACxB,CACA,IAAIwB,cAAergb,CAAAA,KAAK,CAAE,CACxB,IAAI,CAACmgb,aAAa,CAAC,YAAA,CAAcngb,OACnC,CACA,IAAIqgb,gBAAiB,CACnB,OAAO,IAAI,CAACtF,OAAO,CAACrua,CAAC,CAACqya,UAAU,CAElC,IAAIuB,kBAAkBtgb,KAAK,CAAE,CAC3B,IAAI,CAACmgb,aAAa,CAAC,WAAangb,CAAAA,KAAAA,EAClC,CACA,IAAIsgb,iBAAAA,EAAoB,CACtB,OAAO,IAAI,CAACvF,OAAO,CAACrua,CAAC,CAAC2ya,SACxB,CACA,IAAIkG,WAAAA,CAAYvlb,KAAK,CAAE,CACrB,IAAI,CAACmgb,aAAa,CAAC,SAAWngb,CAAAA,KAAAA,EAChC,CACA,IAAIulb,aAAc,CAChB,OAAO,IAAI,CAACxK,OAAO,CAACrua,CAAC,CAACu4a,OACxB,CACA,IAAIxE,cAAczgb,KAAK,CAAE,CACvB,IAAI,CAAC0gb,aAAa,CAAC,MAAA,CAAQ1gb,KAC7B,EAAA,CACA,IAAIygb,aAAAA,EAAgB,CAClB,OAAO,IAAI,CAAC1F,OAAO,CAAC3ia,EAAE,CAAC7a,IAAI,CAE7B,IAAIojb,YAAAA,CAAa3gb,KAAK,CAAE,CACtB,IAAI,CAAC0gb,aAAa,CAAC,MAAO1gb,KAC5B,EAAA,CACA,IAAI2gb,YAAAA,EAAe,CACjB,OAAO,IAAI,CAAC5F,OAAO,CAAC3ia,EAAE,CAACima,GAAG,CAE5B,IAAIuC,cAAAA,CAAe5gb,KAAK,CAAE,CACxB,IAAI,CAAC+6a,OAAO,CAACP,GAAG,CAACj9a,IAAI,CAAGyC,MAC1B,CACA,IAAI4gb,cAAiB,EAAA,CACnB,OAAO,IAAI,CAAC7F,OAAO,CAACP,GAAG,CAACj9a,IAC1B,CACA,IAAIsjb,UAAW7gb,CAAAA,KAAK,CAAE,CACpB,IAAI,CAAC8gb,UAAU,CAAG9gb,MACpB,CACA,IAAI6gb,UAAAA,EAAa,CACf,OAAO,IAAI,CAACC,UAAU,CAExBX,cAAchpb,IAAI,CAAE6I,KAAK,CAAE,CACzB,IAAI,CAAC+6a,OAAO,CAACrua,CAAC,CAACvV,IAAAA,CAAK,CAAG6I,KACvB,CAAA,IAAI,CAAC+6a,OAAO,CAAC3ma,CAAC,CAACjd,IAAAA,CAAK,CAAG6I,KACvB,CAAA,IAAI,CAAC+6a,OAAO,CAACxma,CAAC,CAACpd,IAAK,CAAA,CAAG6I,MACzB,CACA0gb,cAAcvpb,IAAI,CAAE6I,KAAK,CAAE,CACzB,IAAI,CAAC+6a,OAAO,CAAC3ia,EAAE,CAACjhB,IAAK,CAAA,CAAG6I,KACxB,CAAA,IAAI,CAAC+6a,OAAO,CAAC7ia,EAAE,CAAC/gB,IAAAA,CAAK,CAAG6I,KACxB,CAAA,IAAI,CAAC+6a,OAAO,CAAC9ia,EAAE,CAAC9gB,IAAAA,CAAK,CAAG6I,MAC1B,CACA+gb,mBAAsB,EAAA,CACpB,MAAMrJ,SAAAA,CAAY,IAAI,CAACA,SAAS,CAChC,IAAI9ua,OAAAA,CAAU,MACd,IAAI2M,GAAAA,CAAKrK,OACTqK,CAAAA,GAAAA,CAAMmia,SAAUnia,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,CAAA,CACnCyD,QAAU,CAAItT,CAAAA,IAAAA,CAAKma,GAAG,CAACwD,GAAO6va,CAAAA,CAAAA,cAAAA,CAC9B,GAAI,IAAI,CAACrK,OAAO,CAACrua,CAAC,CAACuyH,MAAM,CAAC/zH,OAAO,GAAKA,OAAS,CAAA,CAC7C,IAAI,CAAC6va,OAAO,CAACrua,CAAC,CAACuyH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CAChCtC,OAAU,CAAA,KACZ,CACA2M,GAAMmia,CAAAA,SAAAA,CAAUnia,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,CAAA,CAChC1R,OAAU,CAAA,CAAA,CAAItT,KAAKma,GAAG,CAACwD,GAAO6va,CAAAA,CAAAA,cAAAA,CAC9B,GAAI,IAAI,CAACrK,OAAO,CAAC3ma,CAAC,CAAC6qH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC7C,IAAI,CAAC6va,OAAO,CAAC3ma,CAAC,CAAC6qH,MAAM,CAAC/zH,OAAO,CAAGA,OAChCtC,CAAAA,OAAAA,CAAU,KACZ,CACA2M,GAAMmia,CAAAA,SAAAA,CAAUnia,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,EACrC5yI,OAAU,CAAA,CAAA,CAAItT,KAAKma,GAAG,CAACwD,KAAO6va,cAC9B,CAAA,GAAI,IAAI,CAACrK,OAAO,CAACxma,CAAC,CAAC0qH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC7C,IAAI,CAAC6va,OAAO,CAACxma,CAAC,CAAC0qH,MAAM,CAAC/zH,OAAO,CAAGA,OAChCtC,CAAAA,OAAAA,CAAU,KACZ,CACA,IAAI21a,OACJpyZ,CAAAA,EAAAA,CAAGxX,KAAK,CAAC+ia,UAAW,IAAI,CAAC/jS,IAAI,CAAClsI,KAAK,EACnCyD,OAAU,CAAA,CAAA,CAAIihB,EAAG7zB,CAAAA,MAAM,EAAK8sb,CAAAA,cAAAA,CAC5B,GAAI,IAAI,CAACrK,OAAO,CAAC3ia,EAAE,CAAC6mH,MAAM,CAAC/zH,OAAO,GAAKA,OAAS,CAAA,CAC9C,IAAI,CAAC6va,OAAO,CAAC3ia,EAAE,CAAC6mH,MAAM,CAAC/zH,OAAO,CAAGA,OACjCtC,CAAAA,OAAAA,CAAU,KACZ,CACA21a,QAAU,IAAI,CAACuC,UAAU,CAAG10Z,EAAAA,CAAGxrB,GAAG,CAAC,CAAA,CAAG,EAAEurB,EAAG5W,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,EAAI,CAAA,CAAA,CAAI,EAAE3xH,EAAG5W,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,EAAI,CAAA,CAAA,CAAA,CAAMtI,IAAK8B,CAAAA,IAAI,CAChH,GAAI,CAAC,IAAI,CAAC2ka,OAAO,CAAC3ia,EAAE,CAACmma,OAAO,CAACzwa,MAAM,CAACywa,OAAAA,CAAAA,CAAU,CAC5C,IAAI,CAACxD,OAAO,CAAC3ia,EAAE,CAACmma,OAAO,CAAGA,OAC1B31a,CAAAA,OAAAA,CAAU,KACZ,CACAujB,EAAGxX,CAAAA,KAAK,CAAC+ia,SAAW,CAAA,IAAI,CAAC/jS,IAAI,CAACmK,OAAO,CACrC5yI,CAAAA,OAAAA,CAAU,CAAIihB,CAAAA,EAAAA,CAAG7zB,MAAM,EAAA,CAAK8sb,eAC5B,GAAI,IAAI,CAACrK,OAAO,CAAC9ia,EAAE,CAACgnH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC9C,IAAI,CAAC6va,OAAO,CAAC9ia,EAAE,CAACgnH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CACjCtC,OAAU,CAAA,KACZ,CACA21a,OAAU,CAAA,IAAI,CAACuC,UAAU,CAAG10Z,GAAGxrB,GAAG,CAAC,EAAEurB,EAAG5W,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAC/2H,EAAE,CAAA,CAAI,CAAA,CAAI,CAAA,EAAEuP,EAAAA,CAAG5W,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,CAAA,CAAI,CAAA,CAAI,CAAA,CAAA,CAAA,CAAK6M,IAAK8B,CAAAA,IAAI,CAC9G,GAAI,CAAC,IAAI,CAAC2ka,OAAO,CAAC9ia,EAAE,CAACsma,OAAO,CAACzwa,MAAM,CAACywa,OAAAA,CAAAA,CAAU,CAC5C,IAAI,CAACxD,OAAO,CAAC9ia,EAAE,CAACsma,OAAO,CAAGA,OAC1B31a,CAAAA,OAAAA,CAAU,KACZ,CACAujB,EAAGxX,CAAAA,KAAK,CAAC+ia,SAAW,CAAA,IAAI,CAAC/jS,IAAI,CAAC/2H,EAAE,CAChC1R,CAAAA,OAAAA,CAAU,CAAIihB,CAAAA,EAAAA,CAAG7zB,MAAM,EAAA,CAAK8sb,eAC5B,GAAI,IAAI,CAACrK,OAAO,CAAC7ia,EAAE,CAAC+mH,MAAM,CAAC/zH,OAAO,GAAKA,OAAAA,CAAS,CAC9C,IAAI,CAAC6va,OAAO,CAAC7ia,EAAE,CAAC+mH,MAAM,CAAC/zH,OAAO,CAAGA,OAAAA,CACjCtC,OAAU,CAAA,KACZ,CACA21a,OAAU,CAAA,IAAI,CAACuC,UAAU,CAAG10Z,GAAGxrB,GAAG,CAAC,EAAEurB,EAAG5W,CAAAA,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAACmK,OAAO,EAAI,CAAA,CAAA,CAAI,CAAG,CAAA,EAAE3xH,EAAAA,CAAG5W,GAAG,CAAC,IAAI,CAACo+H,IAAI,CAAClsI,KAAK,CAAI,CAAA,CAAA,CAAM6M,CAAAA,CAAAA,IAAAA,CAAK8B,IAAI,CACnH,GAAI,CAAC,IAAI,CAAC2ka,OAAO,CAAC7ia,EAAE,CAACqma,OAAO,CAACzwa,MAAM,CAACywa,OAAU,CAAA,CAAA,CAC5C,IAAI,CAACxD,OAAO,CAAC7ia,EAAE,CAACqma,OAAO,CAAGA,OAAAA,CAC1B31a,OAAU,CAAA,KACZ,CACA,GAAIA,QAAS,CACX,IAAI,CAACwua,aAAa,CAAG,KACvB,CACF,CACA4J,KAAMzqW,CAAAA,KAAK,CAAE,CACX,IAAI,MAAM74D,IAAAA,IAAQ,IAAI,CAACq9Z,OAAO,CAAC,CAC7B,MAAMx0R,KAAQ,CAAA,IAAI,CAACw0R,OAAO,CAACr9Z,IAAK,CAAA,CAChC,OAAO,IAAI,CAACk/Z,QAAQ,EAClB,IAAK,MAAA,CACH,CACE,QACF,CACF,IAAK,OACH,CACEr2R,KAAAA,CAAMhb,OAAO,CAAG,CAACh1D,MACjB,QACF,CACF,IAAK,UAAA,CACH,CACE,GAAI,IAAI,CAACokW,aAAa,GAAK,KAAA,CAAO,CAChCp0R,KAAAA,CAAMhb,OAAO,CAAGh1D,KAAAA,CAAQ74D,IAAKplB,CAAAA,MAAM,GAAK,CAAA,CAAI,KAC5C,QACF,CACA,GAAI,IAAI,CAACmkb,gBAAgB,CAAE,CACzBl2R,KAAMhb,CAAAA,OAAO,CAAGh1D,KAAAA,CAAQ74D,KAAKplB,MAAM,GAAK,CAAK,EAAA,CAAColB,IAAKzhB,CAAAA,QAAQ,CAAC,IAAI,CAAC0+a,aAAa,CAAA,CAAI,IAClF,CAAA,QACF,CACAp0R,KAAMhb,CAAAA,OAAO,CAAGh1D,KAAQ74D,CAAAA,IAAAA,GAAS,IAAI,CAACi9Z,aAAa,CAAG,IAAA,CACtD,QACF,CACJ,CACF,CACA,IAAI,CAACvD,aAAa,CAAG,KACvB,CACAoO,gBAAAA,EAAmB,CACjB,IAAI,IAAIntb,CAAAA,CAAI,EAAGA,CAAI,CAAA,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,CAAAA,EAAAA,CAAI,CACxC,MAAMowI,IAAO,CAAA,IAAI,CAAClI,KAAK,CAACloI,CAAE,CAAA,CAC1B,IAAI,CAACotb,WAAW,CAAC7kb,GAAG,CAAC6nI,IAAAA,CAAMA,IAAK0X,CAAAA,aAAa,GAAGxyI,KAAK,EAAA,EACvD,CACF,CACA+3a,cAAAA,CAAeC,UAAU,CAAE,CACzB,IAAI,IAAIttb,CAAI,CAAA,CAAA,CAAGA,EAAI,IAAI,CAACkoI,KAAK,CAACjoI,MAAM,CAAED,CAAI,EAAA,CAAA,CACxC,MAAMowI,IAAAA,CAAO,IAAI,CAAClI,KAAK,CAACloI,CAAAA,CAAE,CAC1B,MAAMsiB,KAAAA,CAAQ,IAAI,CAAC8qa,WAAW,CAACrrb,GAAG,CAACquI,IAAAA,CAAAA,CACnC,GAAI,CAAC9tH,KAAAA,CAAO,CACV,QACF,CACA8tH,IAAAA,CAAKyY,aAAa,CAAC/0H,EAAAA,CAAG/0B,IAAI,CAACujB,KAAOhF,CAAAA,CAAAA,GAAG,CAACgwa,UAAY35a,CAAAA,CAAAA,GAAG,CAAC,IAAI,CAAC45a,eAAe,CAC5E,EAAA,CACF,CACAhK,cAAAA,CAAelva,CAAC,CAAE0H,CAAC,CAAE,CACnB,MAAMqja,QAAW,CAAA,IAAI,CAAC9jS,IAAI,CAACsM,gBAAgB,EAAA,CAC3C,MAAMk7R,SAAAA,CAAY,IAAI,CAACl7F,OAAO,CAACxkM,aAAa,CAAC/uI,EAAG0H,CAAG,CAAA,CAAA,CAAA,CACnD,MAAMsJ,IAAAA,CAAO,IAAI,CAACi9Z,aAAa,CAC/B,MAAM2G,OAAU,CAAA,IAAI,CAAC7E,gBAAgB,CACrC,MAAM52Z,GAAAA,CAAM,IAAI,CAACq1Z,UAAU,CAACC,WAC5B,MAAMzyC,KAAAA,CAAQ,IAAI,CAAC2yC,YAAY,CAAC39Z,IAAMA,CAAAA,IAAAA,GAAS,KAAO,CAAA,CAAC4ja,OACvD,CAAA,CAAA,GAAI,CAAC54C,KAAM7hX,CAAAA,aAAa,CAAChB,GAAAA,CAAK5R,KAAQ,CAAA,CAAA,CACpC,OAAOA,KACT,CACA,GAAIyJ,IAAAA,GAAS,KAAO,CAAA,CAClB,MAAM+ma,OAAUr4Z,CAAAA,EAAAA,CAAG5X,IAAI,CAAC,IAAI,CAACyrU,OAAO,CAAChhN,MAAM,CAACriH,EAAE,CAAE,IAAI,CAACqjU,OAAO,CAAChhN,MAAM,CAACx3H,KAAK,EAAEhP,SAAS,EAAA,CACpF,MAAMwtB,GAAAA,CAAMkG,EAAGjW,CAAAA,IAAI,CAACjC,KAAOwja,CAAAA,QAAAA,CAAAA,CAC3B,MAAM3/a,CAAImuB,CAAAA,GAAAA,CAAI3tB,MAAM,EAAK2tB,CAAAA,GAAAA,CAAIxtB,SAAS,EAAA,CAAG8c,GAAG,CAACkva,SAC7Cxwa,KAAMrT,CAAAA,GAAG,CAAC9I,CAAGA,CAAAA,CAAAA,CAAGA,GAChB,OAAOmc,KACT,CACApJ,CAAAA,CAAEzT,IAAI,CAAC,IAAI,CAACokb,aAAa,EAAEp9Z,MAAM,EAAA,CAAGtE,eAAe,CAAC7F,KAAAA,CAAOA,KAC3D,CAAA,CAAA,GAAI,CAACqta,OAAAA,CAAS,CACZ,IAAI,CAAC3F,cAAc,CAAC1na,KAAOyJ,CAAAA,IAAAA,EAC7B,CACA,GAAI,IAAI,CAAC4na,QAAQ,EAAIhE,OAAAA,CAAS,CAC5Bn1Z,EAAGvrB,CAAAA,GAAG,CAAC,CAAG,CAAA,CAAA,CAAG,EACburB,CAAAA,EAAE,CAACzO,IAAAA,CAAK,CAAG,CAAA,CACXzJ,MAAM7c,IAAI,CAAC+0B,GAAGhe,SAAS,CAACge,GAAG5W,GAAG,CAACtB,KAC/BA,CAAAA,CAAAA,CAAAA,CAAAA,KAAK,CAACyJ,KAAK,CAAG,EAChB,CACA,OAAOzJ,KACT,CACA4ka,SAAY,EAAA,CACV,KAAK,CAACA,SACN,EAAA,CAAA,GAAI,CAAC,IAAI,CAAC3ta,OAAO,CAAE,CACjB,MACF,CACA,IAAI,CAAC61a,mBAAmB,GAC1B,CAxTA3gb,WAAAA,CAAYkrI,MAAM,CAAElO,KAAK,CAAC,CACxB,KAAK,CAACkO,MAAQlO,CAAAA,KAAAA,CAAO,aAAgB,CAAA,CAAA,IAAI,CAAC29S,OAAO,CAAG,CAClDP,GAAAA,CAAK,IAAIoK,QAAS,CAAA,IAAI,CAAC/mY,OAAO,CAAE,CAC9BngC,IAAAA,CAAM,KACNs/G,CAAAA,MAAAA,CAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD27Y,YAAAA,CAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACO,GAAG,CACvCyD,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACM,GAAG,CACtC0D,aAAAA,CAAe,IAAI,CAACpE,MAAM,CAAC1B,QAC7B,GACAhga,EAAI,CAAA,IAAIgma,UAAW,CAAA,IAAI,CAACvgY,OAAO,CAAE,CAC/BngC,IAAAA,CAAM,GACNs/G,CAAAA,MAAAA,CAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAAA,CAAU,IAAI1qI,IAAK,CAAA,CAAA,CAAG,EAAG,CAAC,EAAA,CAAA,CAC1B0pa,aAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACvta,CAAC,CACrCuxa,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACxta,CAAC,CACpCwxa,aAAAA,CAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC/0Y,KAAO,CAAA,CACT,GACAnrB,EAAI,CAAA,IAAIkma,UAAW,CAAA,IAAI,CAACvgY,OAAO,CAAE,CAC/BngC,IAAAA,CAAM,IACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,SAAU,IAAI1qI,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAA,CAAA,CACzB0pa,aAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC7la,CAAC,CACrC6pa,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC9la,CAAC,CACpC8pa,aAAAA,CAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC/0Y,KAAO,CAAA,CACT,GACAprB,EAAI,CAAA,IAAImma,UAAW,CAAA,IAAI,CAACvgY,OAAO,CAAE,CAC/BngC,IAAAA,CAAM,IACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,SAAU,IAAI1qI,IAAAA,CAAK,GAAI,CAAG,CAAA,CAAA,CAAA,CAC1B0pa,aAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC1la,CAAC,CACrC0pa,UAAAA,CAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC3la,CAAC,CACpC2pa,aAAAA,CAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACnC/0Y,KAAO,CAAA,CACT,GACA32B,CAAG,CAAA,IAAIs4a,YAAa,CAAA,IAAI,CAACnnY,OAAO,CAAE,CAChCngC,IAAAA,CAAM,IACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,SAAU,IAAI1qI,IAAAA,CAAK,EAAG,CAAG,CAAA,CAAC,IAC1B0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAACvta,CAAC,CACrCuxa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAACxta,CAAC,CACpCwxa,aAAe,CAAA,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACrC,CAAA,CACAhka,EAAG,IAAI4wa,YAAAA,CAAa,IAAI,CAACnnY,OAAO,CAAE,CAChCngC,IAAM,CAAA,GAAA,CACNs/G,MAAQ,CAAA,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAU,CAAA,IAAI1qI,KAAK,CAAG,CAAA,CAAA,CAAG,GACzB0pa,YAAc,CAAA,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC7la,CAAC,CACrC6pa,WAAY,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC9la,CAAC,CACpC8pa,aAAAA,CAAe,IAAI,CAACpE,MAAM,CAAC1B,QAAQ,CACrC,CAAA,CACA7ja,EAAG,IAAIywa,YAAAA,CAAa,IAAI,CAACnnY,OAAO,CAAE,CAChCngC,IAAM,CAAA,GAAA,CACNs/G,OAAQ,CACN,IAAI,CAAC2Q,MAAM,CAACtrG,EAAE,CACf,CACD28G,QAAU,CAAA,IAAI1qI,IAAK,CAAA,EAAA,CAAI,EAAG,CAC1B0pa,CAAAA,CAAAA,YAAAA,CAAc,IAAI,CAAClE,MAAM,CAACG,SAAS,CAAC1la,CAAC,CACrC0pa,UAAY,CAAA,IAAI,CAACnE,MAAM,CAACI,UAAU,CAAC3la,CAAC,CACpC2pa,cAAe,IAAI,CAACpE,MAAM,CAAC1B,QAC7B,EACF,CAAG,CAAA,IAAI,CAACd,WAAW,CAAG,QAAS,IAAI,CAACmO,WAAW,CAAG,IAAIhlb,GAAAA,CAAO,IAAI,CAAC6kb,QAAQ,CAAG,KAAO,CAAA,IAAI,CAAC3I,aAAa,CAAG,CAAG,CAAA,IAAI,CAACmE,UAAU,CAAG,IAAM,CAAA,IAAI,CAAC8E,eAAe,CAAG,IAAItxa,IAAK,CAAA,CAAC9D,QAAU,CAAA,CAACA,QAAU,CAAA,CAACA,UAC3L,IAAI,CAAC0ra,gBAAgB,EAAA,CACrB,IAAI,CAACx8a,EAAE,CAACg6a,cAAAA,CAAemD,oBAAoB,CAAE,IAC3C,CAAA,IAAI,CAAC2I,gBAAgB,EAAA,CACrB,IAAI,CAACxE,KAAK,CAAC,IACb,EAAA,CAAA,CAAA,CACA,IAAI,CAACthb,EAAE,CAACg6a,eAAeoD,mBAAmB,CAAE,KAC1C,EAAA,CAAA,MAAM6I,WAAaxgS,KAAM/tJ,CAAAA,IAAI,CAAC6c,KAAAA,CAAAA,CAAOgC,GAAG,CAAC,IAAI,CAACyma,oBAAoB,EAClE,GAAI,IAAI,CAAC/C,IAAI,CAAE,CACbgM,UAAAA,CAAWx3a,SAAS,CAAC,EAAI,IAAI,CAACwua,aAAa,CAAA,CAC3CgJ,UAAW54a,CAAAA,KAAK,GAChB44a,UAAWx3a,CAAAA,SAAS,CAAC,IAAI,CAACwua,aAAa,EACzC,CACAgJ,UAAAA,CAAWx3a,SAAS,CAAC,CAAA,CAAI,IAAI,CAACmyI,MAAM,CACpC,CAAA,IAAI,CAAColS,cAAc,CAACC,UAAWh9a,CAAAA,GAAG,CAAC2L,IAAAA,CAAKgC,GAAG,CAAA,EAC7C,GACA,IAAI,CAAC5W,EAAE,CAACg6a,cAAeqD,CAAAA,kBAAkB,CAAE,IACzC,CAAA,IAAI,CAACiE,KAAK,CAAC,OACb,CACA,CAAA,CAAA,IAAI,CAACthb,EAAE,CAACg6a,cAAAA,CAAed,iBAAiB,CAAE,IAAA,CACxC,IAAI,CAAC6M,WAAW,CAACxkb,KAAK,GACxB,CAAA,EACF,CAyNF,CAEA,MAAM4kb,KAAAA,CAAQ,IAAIvxa,IAClB,CAAA,MAAMwxa,MAAQ,IAAIxxa,IAAAA,CAClB,MAAMyxa,KAAQ,CAAA,IAAIzxa,IAClB,CAAA,MAAM0xa,KAAQ,CAAA,IAAIpra,IAClB,CAAMqra,MAAAA,QAAAA,SAAiB3lb,aAsDrB,IAAIurS,MAAAA,CAAO7rS,KAAK,CAAE,CAChB,IAAI,CAACizS,OAAO,CAAC77S,IAAI,CAAC4I,KAAAA,CAClB,CAAA,IAAI,CAACkmb,GAAG,CAAClqR,KAAK,CAACj/I,GAAG,CAAG,IAAI,CAACk2R,OAAO,CAACvmS,CAAC,CAAG,KAAQ,CAAA,MAC9C,CAAA,IAAI,CAACw5a,GAAG,CAAClqR,KAAK,CAACv0J,KAAK,CAAG,IAAI,CAACwrS,OAAO,CAAC7+R,CAAC,CAAG,KAAA,CAAQ,MAChD,CAAA,IAAI,CAAC8xa,GAAG,CAAClqR,KAAK,CAACl/I,MAAM,CAAG,IAAI,CAACm2R,OAAO,CAAC1+R,CAAC,CAAG,KAAA,CAAQ,MACjD,CAAA,IAAI,CAAC2xa,GAAG,CAAClqR,KAAK,CAACx0J,IAAI,CAAG,IAAI,CAACyrS,OAAO,CAACr7R,CAAC,CAAG,KAAQ,CAAA,OACjD,CACA,IAAIi0R,QAAS,CACX,OAAO,IAAI,CAACoH,OACd,CACA,IAAIkzI,MAAAA,CAAOnmb,KAAK,CAAE,CAChB,IAAI,CAAComb,OAAO,CAAChvb,IAAI,CAAC4I,KAAAA,CAAAA,CAClB,IAAI,CAAC+6a,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,MAAA,CAAQ,IAAI,CAAC+ib,OAAO,CAACrub,QAAQ,CAAC,QACvE,IAAI,CAACgjb,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,QAAA,CAAU,IAAI,CAAC+ib,OAAO,CAACrub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACzE,IAAI,CAACgjb,OAAO,CAAC7wZ,EAAE,CAACyzH,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,QAAA,CAAU,IAAI,CAAC+ib,OAAO,CAACrub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACzE,IAAI,CAACgjb,OAAO,CAACsL,KAAK,CAAChjb,YAAY,CAAC,QAAU,CAAA,IAAI,CAAC+ib,OAAO,CAACrub,QAAQ,CAAC,KAAA,CAAA,EAClE,CACA,IAAIoub,MAAS,EAAA,CACX,OAAO,IAAI,CAACC,OACd,CACA,IAAIE,OAAOtmb,KAAK,CAAE,CAChB,IAAI,CAACumb,OAAO,CAACnvb,IAAI,CAAC4I,OAClB,IAAI,CAAC+6a,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,OAAQ,IAAI,CAACkjb,OAAO,CAACxub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACvE,IAAI,CAACgjb,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,EAAE,CAACt6I,YAAY,CAAC,QAAA,CAAU,IAAI,CAACkjb,OAAO,CAACxub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACzE,IAAI,CAACgjb,OAAO,CAAC5wZ,EAAE,CAACwzH,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,SAAU,IAAI,CAACkjb,OAAO,CAACxub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACzE,IAAI,CAACgjb,OAAO,CAACyL,KAAK,CAACnjb,YAAY,CAAC,SAAU,IAAI,CAACkjb,OAAO,CAACxub,QAAQ,CAAC,QAClE,CACA,IAAIuub,QAAS,CACX,OAAO,IAAI,CAACC,OAAO,CAErB,IAAIE,MAAAA,CAAOzmb,KAAK,CAAE,CAChB,IAAI,CAAC0mb,OAAO,CAACtvb,IAAI,CAAC4I,KAAAA,CAAAA,CAClB,IAAI,CAAC+6a,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,MAAA,CAAQ,IAAI,CAACqjb,OAAO,CAAC3ub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACvE,IAAI,CAACgjb,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,QAAA,CAAU,IAAI,CAACqjb,OAAO,CAAC3ub,QAAQ,CAAC,KACzE,CAAA,CAAA,CAAA,IAAI,CAACgjb,OAAO,CAAC3wZ,EAAE,CAACuzH,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,QAAA,CAAU,IAAI,CAACqjb,OAAO,CAAC3ub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACzE,IAAI,CAACgjb,OAAO,CAAC4L,KAAK,CAACtjb,YAAY,CAAC,QAAU,CAAA,IAAI,CAACqjb,OAAO,CAAC3ub,QAAQ,CAAC,KAClE,CAAA,EAAA,CACA,IAAI0ub,MAAS,EAAA,CACX,OAAO,IAAI,CAACC,OAAO,CAErB,IAAIE,SAAS5mb,KAAK,CAAE,CAClB,IAAI,CAAC6mb,SAAS,CAACzvb,IAAI,CAAC4I,OACpB,IAAI,CAAC+6a,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,MAAA,CAAQ,IAAI,CAACwjb,SAAS,CAAC9ub,QAAQ,CAAC,QACzE,IAAI,CAACgjb,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,OAAQ,IAAI,CAACwjb,SAAS,CAAC9ub,QAAQ,CAAC,QACzE,IAAI,CAACgjb,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,OAAQ,IAAI,CAACwjb,SAAS,CAAC9ub,QAAQ,CAAC,QAC3E,CACA,IAAI6ub,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SACd,CACA,IAAIhza,MAAAA,CAAO7T,KAAK,CAAE,CAChB,IAAI,CAACmhY,OAAO,CAAGnhY,MACf,IAAI,CAAC+6a,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,IAAK,CAAC,EAAErD,MAAM,CAAC,CAAA,CACxD,IAAI,CAAC+6a,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,GAAK,CAAA,CAAC,EAAErD,KAAM,CAAA,CAAC,CACxD,CAAA,IAAI,CAAC+6a,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,GAAK,CAAA,CAAC,EAAErD,KAAAA,CAAM,CAAC,CACxD,CAAA,IAAI,CAAC+6a,OAAO,CAAC7wZ,EAAE,CAACyzH,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,GAAK,CAAA,CAAC,EAAErD,KAAM,CAAA,CAAC,EACxD,IAAI,CAAC+6a,OAAO,CAAC5wZ,EAAE,CAACwzH,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,GAAA,CAAK,CAAC,EAAErD,KAAAA,CAAM,CAAC,CAAA,CACxD,IAAI,CAAC+6a,OAAO,CAAC3wZ,EAAE,CAACuzH,QAAQ,CAAC,EAAE,CAACt6I,YAAY,CAAC,GAAA,CAAK,CAAC,EAAErD,MAAM,CAAC,CAAA,CACxD,IAAI,CAAC+7T,OAAO,GACd,CACA,IAAIloT,MAAAA,EAAS,CACX,OAAO,IAAI,CAACstX,OAAO,CAErB,IAAI2lD,QAAS9mb,CAAAA,KAAK,CAAE,CAClB,IAAI,CAAC+mb,SAAS,CAAG/mb,KAAAA,CACjB,IAAI,CAAC+6a,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,WAAa,CAAA,CAAC,EAAErD,KAAM,CAAA,CAAC,EAChE,IAAI,CAAC+6a,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,YAAa,CAAC,EAAErD,MAAM,CAAC,CAAA,CAChE,IAAI,CAAC+6a,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,WAAA,CAAa,CAAC,EAAErD,KAAM,CAAA,CAAC,EAClE,CACA,IAAI8mb,QAAW,EAAA,CACb,OAAO,IAAI,CAACC,SACd,CACA,IAAIlI,aAAc7+a,CAAAA,KAAK,CAAE,CACvB,IAAI,CAAC8+a,cAAc,CAAG9+a,MACtB,IAAI,CAAC+6a,OAAO,CAACsL,KAAK,CAAChjb,YAAY,CAAC,cAAA,CAAgB,CAAC,EAAErD,KAAAA,CAAM,CAAC,CAC1D,CAAA,IAAI,CAAC+6a,OAAO,CAACyL,KAAK,CAACnjb,YAAY,CAAC,eAAgB,CAAC,EAAErD,MAAM,CAAC,CAAA,CAC1D,IAAI,CAAC+6a,OAAO,CAAC4L,KAAK,CAACtjb,YAAY,CAAC,cAAA,CAAgB,CAAC,EAAErD,MAAM,CAAC,CAAA,CAC1D,IAAI,CAAC+6a,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,cAAA,CAAgB,CAAC,EAAErD,KAAM,CAAA,CAAC,EACnE,IAAI,CAAC+6a,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,eAAgB,CAAC,EAAErD,MAAM,CAAC,CAAA,CACnE,IAAI,CAAC+6a,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,cAAgB,CAAA,CAAC,EAAErD,KAAM,CAAA,CAAC,CACnE,CAAA,IAAI,CAAC+6a,OAAO,CAAC7wZ,EAAE,CAACyzH,QAAQ,CAAC,CAAA,CAAE,CAACt6I,YAAY,CAAC,cAAgB,CAAA,CAAC,EAAErD,KAAAA,CAAM,CAAC,CACnE,CAAA,IAAI,CAAC+6a,OAAO,CAAC5wZ,EAAE,CAACwzH,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,eAAgB,CAAC,EAAErD,MAAM,CAAC,CAAA,CACnE,IAAI,CAAC+6a,OAAO,CAAC3wZ,EAAE,CAACuzH,QAAQ,CAAC,CAAE,CAAA,CAACt6I,YAAY,CAAC,cAAgB,CAAA,CAAC,EAAErD,KAAM,CAAA,CAAC,CACnE,CAAA,IAAI,CAAC+7T,OAAO,GACd,CACA,IAAI8iH,eAAgB,CAClB,OAAO,IAAI,CAACC,cAAc,CAE5B,IAAIC,UAAAA,CAAW/+a,KAAK,CAAE,CACpB,IAAI,CAACg/a,WAAW,CAAGh/a,KACnB,CAAA,IAAI,CAAC+7T,OAAO,GACd,CACA,IAAIgjH,UAAa,EAAA,CACf,OAAO,IAAI,CAACC,WAAW,CAEzBjjH,OAAU,EAAA,CACR,IAAI,CAACwhB,KAAK,CAAG,CAAA,EAAK,IAAI,CAACwhG,UAAU,CAAG,IAAI,CAAClra,MAAM,CAAG,IAAI,CAACgra,aAAa,CACpE,CAAA,IAAI,CAACqH,GAAG,CAAClqR,KAAK,CAACh+I,KAAK,CAAG,CAAC,EAAE,IAAI,CAACu/T,KAAK,CAAC,EAAE,CAAC,CACxC,IAAI,CAAC2oG,GAAG,CAAClqR,KAAK,CAAC/9I,MAAM,CAAG,CAAC,EAAE,IAAI,CAACs/T,KAAK,CAAC,EAAE,CAAC,CACzC,IAAI,CAACypG,IAAI,CAAC3jb,YAAY,CAAC,OAAA,CAAS,CAAC,EAAE,IAAI,CAACk6U,KAAK,CAAC,CAAC,EAC/C,IAAI,CAACypG,IAAI,CAAC3jb,YAAY,CAAC,QAAU,CAAA,CAAC,EAAE,IAAI,CAACk6U,KAAK,CAAC,CAAC,CAAA,CAChD,IAAI,CAACvlC,MAAM,CAAC30S,YAAY,CAAC,WAAa,CAAA,CAAC,UAAU,EAAE,IAAI,CAACk6U,KAAK,CAAG,EAAI,CAAA,EAAE,EAAE,IAAI,CAACA,KAAK,CAAG,EAAI,CAAA,CAAC,CAAC,EAC7F,CACApV,UAAWx5L,CAAAA,KAAK,CAAEjiI,CAAC,CAAE0H,CAAC,CAAE,CACtBu6H,KAAAA,CAAMtrI,YAAY,CAAC,YAAa,CAAC,UAAU,EAAEqJ,CAAI,CAAA,IAAI,CAACsya,WAAW,CAAC,EAAE,EAAE5qa,CAAI,CAAA,IAAI,CAAC4qa,WAAW,CAAC,CAAC,CAAC,EAC/F,CACAiI,MAAMj4X,IAAI,CAAEtiD,CAAC,CAAE0H,CAAC,CAAE,CAChB46C,IAAK3rD,CAAAA,YAAY,CAAC,IAAM,CAAA,CAAC,EAAEqJ,CAAI,CAAA,IAAI,CAACsya,WAAW,CAAC,CAAC,EACjDhwX,IAAK3rD,CAAAA,YAAY,CAAC,IAAA,CAAM,CAAC,EAAE+Q,EAAI,IAAI,CAAC4qa,WAAW,CAAC,CAAC,EACnD,CACAQ,KAAMljY,CAAAA,KAAK,CAAE,CACX,MAAMlkD,OAAS+K,QAAS+jb,CAAAA,eAAe,CAAC,IAAI,CAACF,IAAI,CAACG,YAAY,CAAE,QAChE/ub,MAAOiL,CAAAA,YAAY,CAAC,QAAUi5C,CAAAA,KAAAA,CAAAA,CAC9BlkD,MAAOiL,CAAAA,YAAY,CAAC,cAAA,CAAgB,CAAC,EAAE,IAAI,CAACy7a,cAAc,CAAC,CAAC,CAC5D,CAAA,IAAI,CAAC9mI,MAAM,CAACv0S,WAAW,CAACrL,MACxB,CAAA,CAAA,OAAOA,MACT,CACAgvb,OAAQ9qY,CAAAA,KAAK,CAAE+uG,IAAO,CAAA,KAAK,CAAEksE,IAAI,CAAE,CACjC,MAAM5oF,KAAQxrI,CAAAA,QAAAA,CAAS+jb,eAAe,CAAC,IAAI,CAACF,IAAI,CAACG,YAAY,CAAE,GAC/D,CAAA,CAAA,MAAME,OAASlkb,QAAS+jb,CAAAA,eAAe,CAAC,IAAI,CAACF,IAAI,CAACG,YAAY,CAAE,QAAA,CAAA,CAChEE,MAAOhkb,CAAAA,YAAY,CAAC,MAAQgoJ,CAAAA,IAAAA,CAAO/uG,MAAQ,IAAI,CAACuqY,SAAS,CAAC9ub,QAAQ,CAAC,KAAA,CAAA,CAAA,CACnEsvb,MAAOhkb,CAAAA,YAAY,CAAC,QAAUi5C,CAAAA,KAAAA,CAAAA,CAC9B+qY,MAAOhkb,CAAAA,YAAY,CAAC,cAAA,CAAgB,CAAC,EAAE,IAAI,CAACy7a,cAAc,CAAC,CAAC,EAC5DuI,MAAOhkb,CAAAA,YAAY,CAAC,GAAK,CAAA,CAAC,EAAE,IAAI,CAAC89X,OAAO,CAAC,CAAC,CAAA,CAC1CkmD,OAAOhkb,YAAY,CAAC,KAAM,GAC1Bgkb,CAAAA,CAAAA,MAAAA,CAAOhkb,YAAY,CAAC,IAAA,CAAM,GAC1Bgkb,CAAAA,CAAAA,MAAAA,CAAOhkb,YAAY,CAAC,iBAAkB,KACtCsrI,CAAAA,CAAAA,KAAAA,CAAMlrI,WAAW,CAAC4jb,MAAAA,CAAAA,CAClB,GAAI9vN,IAAM,CAAA,CACR,MAAMpuN,CAAAA,CAAIhG,QAAS+jb,CAAAA,eAAe,CAAC,IAAI,CAACF,IAAI,CAACG,YAAY,CAAE,QAC3Dh+a,CAAE9F,CAAAA,YAAY,CAAC,WAAA,CAAa,CAAC,EAAE,IAAI,CAAC0jb,SAAS,CAAC,CAAC,CAAA,CAC/C59a,EAAE9F,YAAY,CAAC,aAAe,CAAA,OAAA,CAAA,CAC9B8F,CAAE9F,CAAAA,YAAY,CAAC,aAAe,CAAA,MAAA,CAAA,CAC9B8F,CAAE9F,CAAAA,YAAY,CAAC,aAAA,CAAe,UAC9B8F,CAAE9F,CAAAA,YAAY,CAAC,oBAAA,CAAsB,SACrC8F,CAAAA,CAAAA,EAAEm+a,WAAW,CAAG/vN,KAChB5oF,KAAMlrI,CAAAA,WAAW,CAAC0F,CACpB,EAAA,CACAwlI,KAAMtrI,CAAAA,YAAY,CAAC,QAAA,CAAU,WAC7B,IAAI,CAAC20S,MAAM,CAACv0S,WAAW,CAACkrI,OACxB,OAAOA,KACT,CACAljG,MAAAA,CAAO87Y,YAAY,CAAE,CACnB,GAAI,CAAC,IAAI,CAAChqG,KAAK,CAAE,CACf,MACF,CACAyoG,KAAAA,CAAM5na,MAAM,CAACmpa,cACbvB,KAAMjva,CAAAA,IAAI,CAAC8ua,KACXG,CAAAA,CAAAA,KAAAA,CAAMhva,IAAI,CAAC8ua,KAAAA,CAAAA,CACXE,KAAM/ua,CAAAA,IAAI,CAAC8ua,KAAAA,CAAAA,CACX,IAAI,CAAC59G,UAAU,CAAC,IAAI,CAAC4yG,OAAO,CAAC/iQ,EAAE,CAAE6tQ,KAAAA,CAAMn5a,CAAC,CAAE,CAACm5a,KAAMzxa,CAAAA,CAAC,CAClD,CAAA,IAAI,CAAC+zT,UAAU,CAAC,IAAI,CAAC4yG,OAAO,CAAC7wZ,EAAE,CAAE,CAAC27Z,KAAMn5a,CAAAA,CAAC,CAAEm5a,KAAMzxa,CAAAA,CAAC,EAClD,IAAI,CAAC+zT,UAAU,CAAC,IAAI,CAAC4yG,OAAO,CAAC9iQ,EAAE,CAAE6tQ,KAAMp5a,CAAAA,CAAC,CAAE,CAACo5a,KAAAA,CAAM1xa,CAAC,CAAA,CAClD,IAAI,CAAC+zT,UAAU,CAAC,IAAI,CAAC4yG,OAAO,CAAC5wZ,EAAE,CAAE,CAAC27Z,KAAMp5a,CAAAA,CAAC,CAAEo5a,KAAAA,CAAM1xa,CAAC,CAClD,CAAA,IAAI,CAAC+zT,UAAU,CAAC,IAAI,CAAC4yG,OAAO,CAAC7iQ,EAAE,CAAE6tQ,KAAMr5a,CAAAA,CAAC,CAAE,CAACq5a,KAAAA,CAAM3xa,CAAC,CAClD,CAAA,IAAI,CAAC+zT,UAAU,CAAC,IAAI,CAAC4yG,OAAO,CAAC3wZ,EAAE,CAAE,CAAC27Z,MAAMr5a,CAAC,CAAEq5a,MAAM3xa,CAAC,CAAA,CAClD,IAAI,CAAC6ya,KAAK,CAAC,IAAI,CAAClM,OAAO,CAACsL,KAAK,CAAER,MAAMn5a,CAAC,CAAE,CAACm5a,KAAAA,CAAMzxa,CAAC,CAAA,CAChD,IAAI,CAAC6ya,KAAK,CAAC,IAAI,CAAClM,OAAO,CAACyL,KAAK,CAAEV,KAAMp5a,CAAAA,CAAC,CAAE,CAACo5a,MAAM1xa,CAAC,CAAA,CAChD,IAAI,CAAC6ya,KAAK,CAAC,IAAI,CAAClM,OAAO,CAAC4L,KAAK,CAAEZ,MAAMr5a,CAAC,CAAE,CAACq5a,KAAAA,CAAM3xa,CAAC,CAAA,CAChD,MAAM8nK,KAAQ,CAAA,CACZ,CACEzzJ,CAAAA,CAAG,CACD,OAAA,CACA,KACD,CACDzoB,KAAAA,CAAO6lb,MAAMtxa,CACf,EACA,CACEkU,CAAAA,CAAG,CACD,OAAA,CACA,IACD,CAAA,CACDzoB,MAAO8lb,KAAMvxa,CAAAA,CAAC,CAChB,CACA,CACEkU,CAAAA,CAAG,CACD,OACA,CAAA,IAAA,CACD,CACDzoB,KAAAA,CAAO+lb,KAAMxxa,CAAAA,CAAC,CAEhB,CAAA,CACEkU,EAAG,CACD,IAAA,CACD,CACDzoB,KAAO,CAAA,CAAC6lb,KAAMtxa,CAAAA,CAAC,CACjB,CACA,CACEkU,CAAG,CAAA,CACD,KACD,CACDzoB,KAAAA,CAAO,CAAC8lb,KAAMvxa,CAAAA,CAAC,CACjB,CACA,CACEkU,CAAAA,CAAG,CACD,IACD,CAAA,CACDzoB,MAAO,CAAC+lb,KAAAA,CAAMxxa,CAAC,CACjB,CACD,CAAChM,IAAI,CAAC,CAACN,EAAGC,CAAID,GAAAA,CAAAA,CAAEjI,KAAK,CAAGkI,CAAElI,CAAAA,KAAK,EAChC,MAAMmK,QAAAA,CAAWhH,QAASqkb,CAAAA,sBAAsB,EAChDtrQ,CAAAA,KAAAA,CAAMl3K,OAAO,CAAEwqE,IACbA,CAAE/mD,CAAAA,CAAC,CAACzjB,OAAO,CAAC,CAACyjB,EAAAA,CACXte,QAAS1G,CAAAA,WAAW,CAAC,IAAI,CAACs3a,OAAO,CAACtyZ,CAAAA,CAAE,EACtC,CACF,EAAA,CAAA,CAAA,CACA,IAAI,CAACuvR,MAAM,CAACv0S,WAAW,CAAC0G,QAAAA,EAC1B,CACAq3B,OAAU,EAAA,CACR,IAAI,CAAC0kZ,GAAG,CAACxjb,MAAM,EACf,CAAA,IAAI,CAACpD,GAAG,GACV,CApQAc,WAAAA,CAAYyrS,MAAM,CAAC,CACjB,KAAK,EAAA,CAAI,IAAI,CAAC0xC,KAAK,CAAG,EAAG,IAAI,CAACtqC,OAAO,CAAG,IAAIz4R,KAAK,CAAG,CAAA,CAAA,CAAG,CAAG,CAAA,CAAA,CAAA,CAAI,IAAI,CAAC4ra,OAAO,CAAGpN,SAAAA,CAAUrra,KAAK,EAAI,CAAA,IAAI,CAAC44a,OAAO,CAAGtN,WAAYtra,CAAAA,KAAK,EAAI,CAAA,IAAI,CAAC+4a,OAAO,CAAGxN,WAAWvra,KAAK,EAAA,CAAI,IAAI,CAACk5a,SAAS,CAAG,IAAIn5a,KAAM,CAAA,EAAA,CAAK,GAAK,EAAM,CAAA,CAAA,IAAI,CAACyzX,OAAO,CAAG,EAAA,CAAI,IAAI,CAAC4lD,SAAS,CAAG,EAAA,CAAI,IAAI,CAACjI,cAAc,CAAG,CAAA,CAAG,IAAI,CAACE,WAAW,CAAG,EACtS,CAAA,IAAI,CAACkH,GAAG,CAAG/ib,SAASC,aAAa,CAAC,KAClC,CAAA,CAAA,IAAI,CAAC8ib,GAAG,CAAC7jZ,EAAE,CAAG,qBACd,CAAA,IAAI,CAAC6jZ,GAAG,CAAClqR,KAAK,CAACwrP,OAAO,CAAG,CACvB,oBAAA,CACA,cACA,CAAA,sBAAA,CACD,CAACtvZ,IAAI,CAAC,GACPiL,CAAAA,CAAAA,QAAAA,CAASK,IAAI,CAACC,WAAW,CAAC,IAAI,CAACyib,GAAG,CAClC,CAAA,IAAI,CAACr6I,MAAM,CAAGA,MAAAA,EAAU,IAAI,CAACoH,OAAO,CACpC,IAAI,CAAC+zI,IAAI,CAAG7jb,QAAAA,CAAS+jb,eAAe,CAAC,4BAAA,CAA8B,MACnE,CAAA,IAAI,CAACF,IAAI,CAAC3kZ,EAAE,CAAG,eACf,CAAA,IAAI,CAAC21Q,MAAM,CAAG70S,QAAS+jb,CAAAA,eAAe,CAAC,IAAI,CAACF,IAAI,CAACG,YAAY,CAAE,KAC/D,IAAI,CAACH,IAAI,CAACvjb,WAAW,CAAC,IAAI,CAACu0S,MAAM,CACjC,CAAA,IAAI,CAAC+jB,OAAO,GACZ,MAAM0rH,IAAAA,CAAO,IAAI,CAACrB,OAAO,CAACrub,QAAQ,CAAC,KACnC,CAAA,CAAA,MAAM2vb,IAAO,CAAA,IAAI,CAACnB,OAAO,CAACxub,QAAQ,CAAC,KAAA,CAAA,CACnC,MAAM4vb,IAAO,CAAA,IAAI,CAACjB,OAAO,CAAC3ub,QAAQ,CAAC,KACnC,CAAA,CAAA,IAAI,CAACgjb,OAAO,CAAG,CACb7wZ,EAAAA,CAAI,IAAI,CAACk9Z,OAAO,CAACK,MACjBt9Z,EAAI,CAAA,IAAI,CAACi9Z,OAAO,CAACM,IAAAA,CAAAA,CACjBt9Z,GAAI,IAAI,CAACg9Z,OAAO,CAACO,IACjB3vQ,CAAAA,CAAAA,EAAAA,CAAI,IAAI,CAACovQ,OAAO,CAACK,IAAM,CAAA,IAAA,CAAM,KAC7BxvQ,EAAI,CAAA,IAAI,CAACmvQ,OAAO,CAACM,IAAAA,CAAM,KAAM,GAC7BxvQ,CAAAA,CAAAA,EAAAA,CAAI,IAAI,CAACkvQ,OAAO,CAACO,IAAM,CAAA,IAAA,CAAM,GAC7BtB,CAAAA,CAAAA,KAAAA,CAAO,IAAI,CAAC7G,KAAK,CAACiI,IAAAA,CAAAA,CAClBjB,MAAO,IAAI,CAAChH,KAAK,CAACkI,IAAAA,CAAAA,CAClBf,KAAO,CAAA,IAAI,CAACnH,KAAK,CAACmI,IACpB,CAAA,CAAA,CACA,IAAI,CAAC5M,OAAO,CAAC/iQ,EAAE,CAACr6B,QAAQ,CAAC,CAAA,CAAE,CAACrjJ,gBAAgB,CAAC,aAAe,CAAA,IAAA,CAC1D,IAAI,CAACiH,IAAI,CAAC0kb,QAAS2B,CAAAA,iBAAiB,CAAEtza,IAAAA,CAAKmC,KAAK,EAClD,GACA,IAAI,CAACska,OAAO,CAAC9iQ,EAAE,CAACt6B,QAAQ,CAAC,CAAA,CAAE,CAACrjJ,gBAAgB,CAAC,aAAA,CAAe,KAC1D,IAAI,CAACiH,IAAI,CAAC0kb,QAAAA,CAAS2B,iBAAiB,CAAEtza,IAAAA,CAAKiC,EAAE,EAC/C,CACA,CAAA,CAAA,IAAI,CAACwka,OAAO,CAAC7iQ,EAAE,CAACv6B,QAAQ,CAAC,EAAE,CAACrjJ,gBAAgB,CAAC,aAAA,CAAe,IAC1D,CAAA,IAAI,CAACiH,IAAI,CAAC0kb,SAAS2B,iBAAiB,CAAEtza,KAAKsC,IAAI,EACjD,CACA,CAAA,CAAA,IAAI,CAACmka,OAAO,CAAC7wZ,EAAE,CAACyzH,QAAQ,CAAC,CAAA,CAAE,CAACrjJ,gBAAgB,CAAC,aAAe,CAAA,IAAA,CAC1D,IAAI,CAACiH,IAAI,CAAC0kb,QAAAA,CAAS2B,iBAAiB,CAAEtza,IAAAA,CAAKoC,IAAI,EACjD,CAAA,CAAA,CACA,IAAI,CAACqka,OAAO,CAAC5wZ,EAAE,CAACwzH,QAAQ,CAAC,CAAA,CAAE,CAACrjJ,gBAAgB,CAAC,aAAe,CAAA,IAAA,CAC1D,IAAI,CAACiH,IAAI,CAAC0kb,SAAS2B,iBAAiB,CAAEtza,KAAKkC,IAAI,EACjD,GACA,IAAI,CAACuka,OAAO,CAAC3wZ,EAAE,CAACuzH,QAAQ,CAAC,CAAA,CAAE,CAACrjJ,gBAAgB,CAAC,cAAe,IAC1D,CAAA,IAAI,CAACiH,IAAI,CAAC0kb,QAAAA,CAAS2B,iBAAiB,CAAEtza,IAAAA,CAAKqC,OAAO,EACpD,CAAA,CAAA,CACA,IAAI,CAACuva,GAAG,CAACzib,WAAW,CAAC,IAAI,CAACujb,IAAI,EAChC,CAoNF,CAvQI,QAFEf,CAEG2B,iBAAiB,CAAG,cAyQ7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/2nGO,MAAMC,WAAc,CAAA,SAAUpjb,OAAO,CAAEqjb,SAAS,CAEnD,CAAA,OAAO,IAAIx2W,OAAAA,CAAQ,OAAC5uC,EAAAA,CAEhB,GAAI,OAAOj+B,OAAY,GAAA,WAAA,EAAeA,OAAQnM,CAAAA,MAAM,GAAK,CAAA,CAAG,CAExDoqC,OAEJ,GAAA,CAAA,KAAO,CACH,IAAIkzT,SAAYnxV,CAAAA,OAAAA,CAAQnM,MAAM,CAC9B,MAAMyvb,YAAAA,CAAe,IACjB,CAAA,GAAI,EAAEnyF,SAAAA,GAAc,CAAG,CAAA,CACnBlzT,UACJ,CACJ,CAAA,CAEAj+B,OAAQO,CAAAA,OAAO,CAAC,SAAUmO,CAAC,CAAA,CACvB5N,WAAWC,SAAS,CAAC2N,CAAExP,CAAAA,UAAU,CAAE,CAC/BI,OAAS+jb,CAAAA,SAAAA,CAAY30a,EAAEpP,OAAO,CAC9BC,OAAS8jb,CAAAA,SAAAA,CAAY30a,CAAEnP,CAAAA,OAAO,CAC9BC,WAAAA,CAAa6jb,SAAY30a,CAAAA,CAAAA,CAAElP,WAC/B,CAEA,CAAA,CAAA,GAAI,CAACkP,CAAAA,CAAEzO,cAAc,CAAC,SAAA,CAAA,EAAcyO,CAAEi7N,CAAAA,OAAO,CAAE,CAC3C,GAAIj7N,CAAAA,CAAExP,UAAU,GAAK,OAAA,CAAS,CAE1BmwX,eAAAA,EAAAA,CACAi0D,YACJ,GAAA,CAAA,KAAO,GAAI50a,CAAAA,CAAExP,UAAU,GAAK,oBAAA,CAAsB,CAE9C,GAAIs+V,eAAiB,CAAA,CAEjBA,eACA8lF,EAAAA,CAAAA,YAAAA,GACJ,CAAO,KAAA,CAEHxib,UAAWG,CAAAA,WAAW,CAACyN,CAAAA,CAAExP,UAAU,CAAEokb,cACzC,CACJ,CAAA,KAAO,CAEHxib,UAAAA,CAAWG,WAAW,CAACyN,CAAExP,CAAAA,UAAU,CAAEokb,YACzC,EAAA,CACJ,CAAO,KAAA,CACHA,YACJ,GAAA,CACJ,CACJ,EAAA,CACJ,EACJ,CAAE;;AC/CK,MAAMC,aAAe,kEAC5B,CAAO,MAAMC,cAAgB,EAC7B,CAAO,MAAMC,UAAAA,CAAa,cAAe,CAElC,MAAMC,eAAAA,CAAkB,CAC3B,WAAa,CAAA,KAAA,CACb,QAAS,KACT,CAAA,uBAAA,CAAyB,MACzB,aAAe,CAAA,CAAC,CAAC,MAAM,CAAC,CAAE,CAAC,MAAM,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAC7C,kBAAmB,kBACvB,CAAE,CAEK,MAAMC,QAAU,CAAE,SAAA,CAAW,SAAW,CAAC,CACzC,MAAMC,gBAAkB,6EAC/B,CAAO,MAAMC,cAAAA,CAAiB,CAC1BC,WAAAA,CAAa,KACbxrC,QAAU,CAAA,IAAA,CACVyrC,YAAa,KACbxrC,CAAAA,QAAAA,CAAU,IACd,CACA,CAAO,MAAMyrC,gBAAkB,EAC7B,CAEFlgN,MAAAA,CAAOmgN,MAAM,CAAG,KAAA;;;;;;;;;;;;;;;;;;AC1BhBC,MAAS,CAACngN,mBAAmB,CAAC,SAAUH,GAAG,CACvC,CAAA,IAAIugN,WAAa,UAEb,CAAA,IAAIC,OAAU1lb,CAAAA,QAAAA,CAASC,aAAa,CAAC,KACrCylb,CAAAA,CAAAA,OAAQxmZ,CAAAA,EAAE,CAAG,4BAAA,CACbl/B,QAASK,CAAAA,IAAI,CAACC,WAAW,CAAColb,OAG1B,CAAA,CAAA,IAAIC,MAAS3lb,CAAAA,QAAAA,CAASC,aAAa,CAAC,KACpC0lb,CAAAA,CAAAA,MAAOzmZ,CAAAA,EAAE,CAAG,oBAAA,CACZwmZ,OAAQplb,CAAAA,WAAW,CAACqlb,MAAAA,CACpBA,CAAAA,MAAO9sR,CAAAA,KAAK,CAACw7D,OAAO,CAAG,MAAA,CAEvB,IAAIuxN,IAAAA,CAAO5lb,QAASC,CAAAA,aAAa,CAAC,KAAA,CAGlC2lb,CAAAA,IAAAA,CAAK96a,GAAG,CAAG,0zqBACX66a,MAAOrlb,CAAAA,WAAW,CAACslb,IAAAA,CACnBA,CAAAA,IAAAA,CAAKzlb,MAAM,CAAG,UACVwlb,CAAAA,MAAAA,CAAO9sR,KAAK,CAACw7D,OAAO,CAAG,QAC3B,CAAA,CAEA,IAAIm0F,SAAYxoT,CAAAA,QAAAA,CAASC,aAAa,CAAC,KACvCuoT,CAAAA,CAAAA,SAAUtpR,CAAAA,EAAE,CAAG,wBAAA,CACfymZ,MAAOrlb,CAAAA,WAAW,CAACkoT,SAAAA,CAAAA,CAEnB,IAAIq9H,GAAAA,CAAM7lb,SAASC,aAAa,CAAC,KACjC4lb,CAAAA,CAAAA,GAAI3mZ,CAAAA,EAAE,CAAG,cAAA,CACTspR,SAAUloT,CAAAA,WAAW,CAACulb,GAAAA,EAE1B,CAEA,CAAA,IAAIC,UAAa,CAAA,UAAA,CACb,IAAIH,MAAS3lb,CAAAA,QAAAA,CAAS+lb,cAAc,CAAC,4BACrCJ,CAAAA,CAAAA,MAAAA,CAAOK,aAAa,CAACzoS,WAAW,CAACooS,MACrC,EAAA,CAAA,CAEA,IAAIM,WAAAA,CAAc,SAAUppb,KAAK,EAC7B,IAAIgpb,GAAAA,CAAM7lb,QAAS+lb,CAAAA,cAAc,CAAC,cAAA,CAAA,CAClC,GAAGF,GAAAA,CAAK,CACJhpb,KAAAA,CAAQpI,IAAKmU,CAAAA,GAAG,CAAC,CAAA,CAAGnU,IAAKoU,CAAAA,GAAG,CAAC,CAAGhM,CAAAA,KAAAA,CAAAA,CAChCgpb,CAAAA,GAAAA,CAAIhtR,KAAK,CAACh+I,KAAK,CAAGhe,KAAQ,CAAA,GAAA,CAAM,IACpC,CACJ,CAEA,CAAA,IAAIqpb,SAAY,CAAA,UAAA,CACZ,IAAIC,GAAM,CAAA,CACN,QACA,CAAA,gCAAA,CACA,GAEA,CAAA,+BAAA,CACA,yBACA,CAAA,aAAA,CACA,cACA,CAAA,mBAAA,CACA,kBACA,CAAA,gCAAA,CACA,GAEA,CAAA,uBAAA,CACA,yBACA,CAAA,6BAAA,CACA,oBACA,8BACA,CAAA,GAAA,CAEA,2BACA,CAAA,kBAAA,CACA,GAEA,CAAA,2BAAA,CACA,+BACA,CAAA,kBAAA,CACA,kBACA,CAAA,gCAAA,CACA,GAEA,CAAA,iBAAA,CACA,gBACA,CAAA,mBAAA,CACA,8BACA,CAAA,GAAA,CACA,8BACA,2BACA,CAAA,uBAAA,CACA,iCACA,CAAA,OAAA,CACA,GACH,CAAA,CAACpxb,IAAI,CAAC,IAEP,CAAA,CAAA,IAAI8jK,KAAQ74J,CAAAA,QAAAA,CAASC,aAAa,CAAC,OACnC44J,CAAAA,CAAAA,MAAMlsJ,IAAI,CAAG,UACb,CAAA,GAAIksJ,KAAMutR,CAAAA,UAAU,CAAE,CAClBvtR,KAAMutR,CAAAA,UAAU,CAAC/hC,OAAO,CAAG8hC,IAC/B,CAAO,KAAA,CACHttR,MAAMv4J,WAAW,CAACN,QAASqmb,CAAAA,cAAc,CAACF,GAAAA,CAAAA,EAC9C,CAEAnmb,QAAAA,CAASmuO,IAAI,CAAC7tO,WAAW,CAACu4J,KAC9B,EAAA,CAAA,CAEAqtR,SACAT,EAAAA,CAAAA,UAAAA,EAAAA,CAEAvgN,IAAI3oO,EAAE,CAAC,aAAe,CAAA,UAAA,CAClB2oO,GAAI/oO,CAAAA,GAAG,CAAC,kBAAA,EACZ,GACA+oO,GAAI3oO,CAAAA,EAAE,CAAC,kBAAA,CAAoB0pb,WAC3B/gN,CAAAA,CAAAA,GAAAA,CAAI3oO,EAAE,CAAC,QAASupb,UACpB,EAAA,CAAA,CAAA;;;;;;;;"}